diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eba3e44..a3e6484 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,15 +1,14 @@ 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. Seeds: Linux x86-64 and ARM64 (tested here), Windows x86-64 (tested under Wine, and here), -# macOS ARM64 and x86-64 (made with Apple's headers; only checked as IR until the macos job below passes). - on: push: branches: [main, "ci/**"] tags: ["v*"] pull_request: +env: + LLVM_VERSION: 21.1.8 + jobs: linux: strategy: @@ -22,100 +21,75 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - name: Install clang 21, libclang, tools + - name: Install LLVM 21, libclang, tools run: | wget -q https://apt.llvm.org/llvm.sh sudo bash llvm.sh 21 - sudo apt-get install -y libclang-21-dev pkg-config valgrind + sudo apt-get install -y llvm-21-dev libclang-21-dev ninja-build valgrind echo "/usr/lib/llvm-21/bin" >> $GITHUB_PATH - - name: Build the compiler (seed, then itself, and the two must agree) + - name: Build run: | - export FINCH_LIBCLANG="-L/usr/lib/llvm-21/lib -lclang-21" - bootstrap/build.sh + cmake -S . -B build -G Ninja -DLLVM_DIR=/usr/lib/llvm-21/lib/cmake/llvm -DCMAKE_BUILD_TYPE=Release + ninja -C build build/finch version - - name: Tests (programs, refusals, -g, a shared library, the language server) + - name: Tests run: tests/run.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 runtime std examples dist/finch/ + mkdir -p dist/finch && cp build/finch README.md LICENSE dist/finch/ && cp -r 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 - 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 clang 21, libclang, cross compilers and emulators - run: | - 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: | - export FINCH_LIBCLANG="-L/usr/lib/llvm-21/lib -lclang-21" - bootstrap/build.sh - - name: Run every test on the other system - run: | - 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 - macos: runs-on: macos-15 steps: - uses: actions/checkout@v4 - - name: Install LLVM 21 (libclang) - run: brew install llvm@21 pkg-config - - name: Build the compiler + - name: Install LLVM 21 run: | - export FINCH_CLANG="$(brew --prefix llvm@21)/bin/clang" - export FINCH_LIBCLANG="-L$(brew --prefix llvm@21)/lib -lclang" - export FINCH_LLVM_INCLUDE="$(brew --prefix llvm@21)/include" - bootstrap/build.sh + brew install llvm@21 ninja + echo "$(brew --prefix llvm@21)/bin" >> $GITHUB_PATH + - name: Build + 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: tests/run.sh + 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 + run: | + cat > fw.fch <<'EOF' + import "CoreFoundation/CoreFoundation.h" + link "CoreFoundation.framework" - windows: - runs-on: windows-2022 - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - name: Download llvm-mingw (clang with MinGW headers) and LLVM for Windows (libclang.dll) + 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: | - curl -sSL -o mingw.zip https://github.com/mstorsjo/llvm-mingw/releases/download/20251216/llvm-mingw-20251216-ucrt-x86_64.zip - 7z x -y mingw.zip -o/c/ > /dev/null - curl -sSL -o llvm.exe https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.8/LLVM-21.1.8-win64.exe - 7z x -y llvm.exe -o/c/llvm > /dev/null - - name: Build the compiler - run: | - export PATH="/c/llvm-mingw-20251216-ucrt-x86_64/bin:$PATH" - export FINCH_LIBCLANG="C:/llvm/bin/libclang.dll" - export FINCH_LLVM_INCLUDE="C:/llvm/include" - export FINCH_LDFLAGS="-LC:/llvm/bin" - bootstrap/build.sh - build/finch.exe version - - name: Tests - run: | - export PATH="/c/llvm-mingw-20251216-ucrt-x86_64/bin:$PATH" - export FINCH_LDFLAGS="-LC:/llvm/bin" - FINCH=../build/finch.exe tests/run.sh + 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 vscode: runs-on: ubuntu-24.04 @@ -136,3 +110,51 @@ 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/.gitignore b/.gitignore index f40dc41..7bde8c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ build/ *.o -core.* diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4dcfbcc --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,91 @@ +cmake_minimum_required(VERSION 3.20) +project(finch VERSION 2.4.0 LANGUAGES C CXX) # C: LLVM's CMake config checks C headers on some systems + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +find_package(LLVM REQUIRED CONFIG) +message(STATUS "Using LLVM ${LLVM_PACKAGE_VERSION}") + +add_executable(finch + src/main.cpp + src/lexer.cpp + src/parser.cpp + src/codegen.cpp + src/codegen_types.cpp + src/codegen_builtins.cpp + src/codegen_map.cpp + src/abi.cpp + src/cimport.cpp + src/target.cpp + src/loader.cpp + src/lsp.cpp +) + +# The runtime (runtime/finch_rt.c) is embedded into the compiler as a string; +# finch compiles it once into ~/.cache/finch and links it into every program. +set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_SOURCE_DIR}/runtime/finch_rt.c) +# (written as several raw string pieces: MSVC limits one literal to 16 KB) +file(READ ${CMAKE_SOURCE_DIR}/runtime/finch_rt.c FINCH_RT_SOURCE) +string(LENGTH "${FINCH_RT_SOURCE}" FINCH_RT_LENGTH) +set(FINCH_RT_INC "static const char *kRuntimeSource =\n") +set(FINCH_RT_POS 0) +while(FINCH_RT_POS LESS FINCH_RT_LENGTH) + string(SUBSTRING "${FINCH_RT_SOURCE}" ${FINCH_RT_POS} 8000 FINCH_RT_PIECE) + string(APPEND FINCH_RT_INC "R\"FINCHRT(${FINCH_RT_PIECE})FINCHRT\"\n") + math(EXPR FINCH_RT_POS "${FINCH_RT_POS} + 8000") +endwhile() +string(APPEND FINCH_RT_INC ";\n") +file(WRITE ${CMAKE_BINARY_DIR}/rt_source.inc "${FINCH_RT_INC}") +target_include_directories(finch PRIVATE ${CMAKE_BINARY_DIR}) + +# libclang reads C headers for `import "stdio.h"` +find_path(LIBCLANG_INCLUDE clang-c/Index.h HINTS ${LLVM_INCLUDE_DIRS}) +find_library(LIBCLANG NAMES clang libclang HINTS ${LLVM_LIBRARY_DIRS}) +if(NOT LIBCLANG_INCLUDE OR NOT LIBCLANG) + message(FATAL_ERROR "libclang not found (on Nix: run inside nix-shell)") +endif() + +target_include_directories(finch SYSTEM PRIVATE ${LLVM_INCLUDE_DIRS} ${LIBCLANG_INCLUDE}) +target_compile_definitions(finch PRIVATE ${LLVM_DEFINITIONS} FINCH_VERSION="${PROJECT_VERSION}") +if(MSVC) + target_compile_options(finch PRIVATE /W3 /utf-8 /EHsc /wd4244 /wd4267 /wd4146 /wd4624) +else() + target_compile_options(finch PRIVATE -Wall -Wextra) +endif() + +# The official Windows LLVM package names the DIA SDK library at the path of the machine it was +# built on (Visual Studio 2019); point it at the Visual Studio installed here. +if(MSVC AND TARGET LLVMDebugInfoPDB AND DEFINED ENV{VSINSTALLDIR}) + get_target_property(FINCH_PDB_LIBS LLVMDebugInfoPDB INTERFACE_LINK_LIBRARIES) + if(FINCH_PDB_LIBS) + file(TO_CMAKE_PATH "$ENV{VSINSTALLDIR}DIA SDK/lib/amd64/diaguids.lib" FINCH_DIA_LIB) + list(TRANSFORM FINCH_PDB_LIBS REPLACE ".*diaguids\\.lib$" "${FINCH_DIA_LIB}") + set_target_properties(LLVMDebugInfoPDB PROPERTIES INTERFACE_LINK_LIBRARIES "${FINCH_PDB_LIBS}") + endif() +endif() + +# Link the one shared libLLVM when available: libclang uses it too, and two copies +# of LLVM in one process crash on exit. +# Finch generates code for x86-64 and ARM64; use whichever of them this LLVM was built with. +set(FINCH_BACKENDS) +foreach(t X86 AArch64) + if(t IN_LIST LLVM_TARGETS_TO_BUILD) + list(APPEND FINCH_BACKENDS ${t}) + string(TOUPPER ${t} T) + target_compile_definitions(finch PRIVATE FINCH_TARGET_${T}) + endif() +endforeach() +message(STATUS "Finch backends: ${FINCH_BACKENDS}") + +if(TARGET LLVM) + set(LLVM_LIBS LLVM) +else() + set(FINCH_COMPONENTS core support passes native) + foreach(t ${FINCH_BACKENDS}) + list(APPEND FINCH_COMPONENTS ${t}codegen ${t}asmparser ${t}desc ${t}info) + endforeach() + llvm_map_components_to_libnames(LLVM_LIBS ${FINCH_COMPONENTS}) +endif() +target_link_libraries(finch PRIVATE ${LLVM_LIBS} ${LIBCLANG}) diff --git a/README.md b/README.md index db0e813..c23b43e 100644 --- a/README.md +++ b/README.md @@ -48,33 +48,38 @@ 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.** 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. +- **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. ## Quick start -**Building it** (Linux x86-64 or ARM64; needs `clang` and libclang, LLVM 21): +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): ```sh git clone https://github.com/Nexoniarz/Finch.git cd Finch -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 +nix-shell # or install LLVM 21 + libclang + cmake + ninja yourself +cmake -S . -B build -G Ninja +ninja -C build ./build/finch run examples/hello.fch ./build/finch build examples/tour.fch -o tour && ./tour -tests/run.sh # every program, every refusal, -g, a shared library, the language server +tests/run.sh # 74 passed, 0 failed +tests/boot.sh # the compiler written in Finch builds itself ``` -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: @@ -101,9 +106,7 @@ Pick the guide that fits you: | Text | `"a" + "b"`, `str(42)`, `int("42")`, `s.split(",")`, `s.upper()`, `s[0]` | | Control | `if` / `else if` / `else`, `while`, `for i in 0..10`, `break`, `continue`, `defer` | | Memory | automatic for arrays, text and structs; `new(...)` / `free(...)` for your own heap structures | -| Enums, match | `enum Color { Red, Green }`, `match c { Red -> ... else -> ... }` (also as a value) | -| Generics | `fn max[T](T a, T b) -> T`, `struct Stack[T]`, `Stack[int]()` | -| Modules | `import shapes` → `shapes.area(b)`; the standard library: `json`, `path`, `time`, `proc` | +| Modules | `import shapes` → `shapes.area(b)` | | C interop | `import "stdio.h"`, `link "glfw"`, `link "mine.c"`, `addr(fn)` for callbacks | | I/O | `print(...)`, `input("? ")`, `read_file`, `write_file`, `shell` | | Tools | `finch run/build/ir/lsp`, `--target windows/arm64/macos`, `-g` for gdb/lldb, `-O0` | @@ -125,7 +128,7 @@ Pick the guide that fits you: | [`examples/vulkan.fch`](examples/vulkan.fch) | Vulkan: list the GPUs, their memory and queues, create a device | | [`examples/raylib.fch`](examples/raylib.fch) | raylib with C structs by value | | [`examples/llvm.fch`](examples/llvm.fch) | Finch building LLVM IR through the LLVM-C API | -| [`src/`](src/) | the compiler, written in Finch (the seed to build it is in [`bootstrap/`](bootstrap/)) | +| [`boot/`](boot/) | the Finch compiler, written in Finch | ## Roadmap @@ -145,20 +148,18 @@ Pick the guide that fits you: - [x] Language server (`finch lsp`) and a VS Code extension - [x] macOS and ARM64 (Linux and Apple Silicon), with their C calling conventions; Kate support - [x] Methods on structs, maps, errors as values (`!`, `or`, `try`) -- [x] Generics (`fn max[T]`, `struct Stack[T]`), `match`, enums -- [x] A standard library in Finch: `json`, `path`, `time`, `proc` +- [ ] Generics, `match`, enums +- [ ] A standard library in Finch (JSON, paths, time, processes) ## Layout ``` -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 +src/ compiler: lexer, parser, AST, codegen, C import + ABI, language server, driver (C++17, ~7k lines) runtime/ the small C runtime linked into every program -bootstrap/ build.sh and the seeds: the compiler's own LLVM IR, one per system +boot/ the Finch compiler written in Finch (~3k lines) examples/ example programs editors/ VS Code extension, Kate highlighting and LSP setup -tests/ run/ new/ (golden output), fail/ new/fail/ (expected errors), run.sh, cross.sh, shared.sh, lsp_test.py +tests/ run/ (golden output), fail/ (expected errors), run.sh, boot.sh, cross.sh, lsp_test.py docs/ en/ and pl/ guides for three audiences ``` diff --git a/README.pl.md b/README.pl.md index 7931879..9974d1f 100644 --- a/README.pl.md +++ b/README.pl.md @@ -48,33 +48,37 @@ 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 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`. +- **Napisany także w sobie.** `boot/` to kompilator Fincha napisany w Finchu, który kompiluje sam siebie + do identycznego co do bajtu wyniku. ## Szybki start -**Budowanie** (Linux x86-64 lub ARM64; potrzebny `clang` i libclang, LLVM 21): +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): ```sh git clone https://github.com/Nexoniarz/Finch.git cd Finch -nix-shell # albo zainstaluj samodzielnie clang + libclang (LLVM 21) + pkg-config -bootstrap/build.sh # kompilator to build/finch: z ziarna, potem z samego siebie +nix-shell # albo zainstaluj samodzielnie LLVM 21 + libclang + cmake + ninja +cmake -S . -B build -G Ninja +ninja -C build ./build/finch run examples/hello.fch ./build/finch build examples/tour.fch -o tour && ./tour -tests/run.sh # każdy program, każda odmowa, -g, biblioteka współdzielona, serwer języka +tests/run.sh # 74 passed, 0 failed +tests/boot.sh # kompilator napisany w Finchu buduje sam siebie ``` -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: @@ -101,9 +105,7 @@ Wybierz przewodnik dla siebie: | Tekst | `"a" + "b"`, `str(42)`, `int("42")`, `s.split(",")`, `s.upper()`, `s[0]` | | Sterowanie | `if` / `else if` / `else`, `while`, `for i in 0..10`, `break`, `continue`, `defer` | | Pamięć | automatyczna dla tablic, tekstów i struktur; `new(...)` / `free(...)` dla własnych struktur na stercie | -| Enumy, match | `enum Kolor { Czerwony, Zielony }`, `match k { Czerwony -> ... else -> ... }` (także jako wartość) | -| Generyki | `fn max[T](T a, T b) -> T`, `struct Stos[T]`, `Stos[int]()` | -| Moduły | `import ksztalty` → `ksztalty.pole(p)`; biblioteka standardowa: `json`, `path`, `time`, `proc` | +| Moduły | `import ksztalty` → `ksztalty.pole(p)` | | Współpraca z C | `import "stdio.h"`, `link "glfw"`, `link "moje.c"`, `addr(fn)` dla callbacków | | Wejście/wyjście | `print(...)`, `input("? ")`, `read_file`, `write_file`, `shell` | | Narzędzia | `finch run/build/ir/lsp`, `--target windows/arm64/macos`, `-g` dla gdb/lldb, `-O0` | @@ -125,7 +127,7 @@ Wybierz przewodnik dla siebie: | [`examples/vulkan.fch`](examples/vulkan.fch) | Vulkan: lista kart graficznych, ich pamięć i kolejki, tworzenie urządzenia | | [`examples/raylib.fch`](examples/raylib.fch) | raylib ze strukturami C przez wartość | | [`examples/llvm.fch`](examples/llvm.fch) | Finch budujący LLVM IR przez API LLVM-C | -| [`src/`](src/) | kompilator napisany w Finchu (ziarno do jego zbudowania jest w [`bootstrap/`](bootstrap/)) | +| [`boot/`](boot/) | kompilator Fincha napisany w Finchu | ## Plan rozwoju @@ -145,20 +147,18 @@ Wybierz przewodnik dla siebie: - [x] Serwer języka (`finch lsp`) i rozszerzenie VS Code - [x] macOS i ARM64 (Linux i Apple Silicon) z ich konwencjami wywołań C; obsługa Kate - [x] Metody w strukturach, mapy, błędy jako wartości (`!`, `or`, `try`) -- [x] Typy generyczne (`fn max[T]`, `struct Stos[T]`), `match`, enumy -- [x] Biblioteka standardowa w Finchu: `json`, `path`, `time`, `proc` +- [ ] Typy generyczne, `match`, enumy +- [ ] Biblioteka standardowa w Finchu (JSON, ścieżki, czas, procesy) ## Struktura ``` -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 +src/ kompilator: lekser, parser, AST, codegen, import C + ABI, serwer języka, sterownik (C++17, ok. 7 tys. linii) runtime/ mały runtime w C dołączany do każdego programu -bootstrap/ build.sh i ziarna: własny LLVM IR kompilatora, po jednym na system +boot/ kompilator Fincha napisany w Finchu (ok. 3 tys. linii) examples/ przykładowe programy editors/ rozszerzenie VS Code, podświetlanie i konfiguracja LSP dla Kate -tests/ run/ new/ (wzorcowe wyjście), fail/ new/fail/ (oczekiwane błędy), run.sh, cross.sh, shared.sh, lsp_test.py +tests/ run/ (wzorcowe wyjście), fail/ (oczekiwane błędy), run.sh, boot.sh, cross.sh, lsp_test.py docs/ przewodniki en/ i pl/ dla trzech grup odbiorców ``` diff --git a/src/ast.fch b/boot/ast.fch similarity index 71% rename from src/ast.fch rename to boot/ast.fch index 28bb900..93dbfc0 100644 --- a/src/ast.fch +++ b/boot/ast.fch @@ -9,7 +9,6 @@ struct Type { []Type elem str name str module - int count // "fixed": [N]T, only inside C structs } fn simple(str kind) -> Type { @@ -40,13 +39,10 @@ fn same(Type a, Type b) -> bool { if a.kind != b.kind { return false } - if a.kind == "struct" || a.kind == "named" || a.kind == "enum" { + if a.kind == "struct" || a.kind == "named" { return a.name == b.name && a.module == b.module } - if a.kind == "fixed" && a.count != b.count { - return false - } - if a.kind == "array" || a.kind == "ptr" || a.kind == "map" || a.kind == "fixed" { + if a.kind == "array" || a.kind == "ptr" || a.kind == "map" { if a.elem.len != b.elem.len { return false } @@ -64,9 +60,6 @@ fn show(Type t) -> str { if t.kind == "array" { return "[]" + show(t.elem[0]) } - if t.kind == "fixed" { - return "[" + str(t.count) + "]" + show(t.elem[0]) - } if t.kind == "map" { return "map[" + show(t.elem[0]) + "]" + show(t.elem[1]) } @@ -76,7 +69,7 @@ fn show(Type t) -> str { } return "ptr[" + show(t.elem[0]) + "]" } - if t.kind == "struct" || t.kind == "named" || t.kind == "enum" { + if t.kind == "struct" || t.kind == "named" { if t.module.len > 0 { return t.module + "." + t.name } @@ -91,34 +84,26 @@ fn show(Type t) -> str { // One node of the tree, for expressions, statements, functions and structs alike. // expressions: int float str char bool null var unary binary call member index array method // statements: decl assign expr if while for each return break continue block -// top level: fn param struct field enum variant -// match: match (kids: subject, arms...), arm (kids: patterns node, body; flag: the else arm), patterns +// top level: fn param struct field struct Node { str kind str name // identifier, operator, callee, field or method name str recv // fn Point.move(...): "Point"; empty for a plain function - []str tparams // fn max[T](...), struct Stack[T], fn Stack[T].push: the type parameters str text // literal text Type ty // declared type (decl, param, field, fn result) bool flag // decl: has a type; or: the right side is a { block } bool fallible // fn: -> T! or -> ! - bool exported // export fn: a C function of a library (finch build --shared) []Node kids []str names // named arguments: Point(x: 1) int line int col int file - int endLine // block, fn: the line of the closing } } struct Program { str module str path []str imports // Finch modules - []str cimports // C headers: import "stdio.h" - []str cwhere // where each was written, for error messages - []str links // link "glfw", link "mine.c" []Node structs - []Node enums []Node fns } diff --git a/src/gen.fch b/boot/gen.fch similarity index 51% rename from src/gen.fch rename to boot/gen.fch index a375015..f792d98 100644 --- a/src/gen.fch +++ b/boot/gen.fch @@ -4,9 +4,6 @@ // C runtime the main compiler uses. This compiler copies values like the main one // (so programs behave the same) but never frees them: it is the bootstrap compiler. import ast -import docs -import cimport -import platform struct Var { str name @@ -14,103 +11,26 @@ struct Var { str slot bool readonly int order // how many variables were declared before this one (for defer) - bool owned // it holds memory that is dropped when its scope ends - bool moved // `return x` moved it out: its cleanup is skipped - str dpath // where it was declared, for the language server - int dline - int dcol } // A scope's variables, and the defers that run when it ends, newest first. // A defer sees only the variables declared before it: `orders` says how many. -// What the driver asks for besides the program itself. -struct Options { - bool shared // finch build --shared - bool index // finch index: say what every name in the program is, for the language server - bool debug // -g - str cwd // the folder the compiler was started in (for the debug info) - platform.Target target -} - -// A generic struct or function, kept as written until something asks for a version of it. -struct Template { - str module - str name - str recv // a method: the generic struct it belongs to - []str tparams - int prog - int index - bool isStruct - bool mutself -} - -struct Binds { - []ast.Type types - []bool bound -} - -struct EnumDef { - str module - str name - []str variants - []int values -} - -// What happens when a scope ends, in the order things happened (run newest first): a variable is dropped, -// a defer is run. `idx` is the variable's number in the scope, or the defer's. -struct Cleanup { - bool isDefer - int idx -} - -// An enum whose variants hold values (see sumStruct in parser.fch): it is a struct `tag, V_0, ...`. -// firsts[k] is the number of the struct field holding variant k's first value. -struct SumDef { - str module - str name - []str variants - []int counts - []int firsts - []ast.Node nodes -} - -struct SumPat { - int k - []ast.Node binds -} - struct Scope { []Var vars []ast.Node defers []int orders - []Cleanup cleanups -} - -// A value some expression is holding while it computes the rest: if `try` or `or` leaves the function now, -// it has to be dropped. isAddr: v is the address of the value, not the value. -struct Pending { - str v - ast.Type ty - bool isAddr } struct Loop { str cont str brk int depth // the scope depth at the loop: break and continue unwind down to it - int pend // and so are the temporaries held by the expressions around it } struct FnSig { str module str name str recv // a method of this struct ("" for a function) - str recvmod // and the module of that struct: "C" for a struct from a header - bool recvEnum // the receiver is an enum - bool exported // export fn: also a C function of a library - []str tnames // an instance of a generic function: its type parameters and what they stand for - []ast.Type targs - str shown // max[int], for messages bool fallible // -> T!: returns { i1 ok, T value, str error } bool mutself // the method changes self str ll @@ -125,15 +45,6 @@ struct FnSig { struct StructDef { str module str name - bool isC // a struct from a C header: module "C", laid out as C laid it out - []int lidx // the LLVM element number of each field (C structs have padding between) - []int offs // C: the byte offset of each field - str base // an instance of a generic struct: Stack for Stack[int] - []str tnames - []ast.Type targs - str unsupported // C: why it can't be passed by value - int csize - int calign []str fnames []ast.Type ftypes int prog @@ -172,36 +83,14 @@ struct Gen { int nstr bool term []Scope scopes - []Pending pending []Loop loops FnSig cur str module []FnSig sigs []StructDef structs - []Template templates - []str tnames // the type parameters in force, and what they stand for - []ast.Type targs - str instNote // " (while building max[Pixel])", added to errors found inside a generic - []EnumDef enums - []SumDef sums []str done []str mm // names of methods that change self, for the mutation analysis int nvars // variables declared so far in this function - cimport.CImports ci - bool shared // building a library (finch build --shared): no main, its export fns are the way in - bool index // the language server's index is being made: see note... - []str idx // its lines - bool debug // -g: debug info (DWARF, as LLVM metadata) - platform.Target tg // the system the program is for - str cwd - []str md // the metadata, numbered by position: !0 = md[0] - map[str]int mdcache // metadata made already: types by key, locations by line:column - []int mdfiles // the DIFile of each source file - int dbgScope // the DISubprogram of the function being built, or -1 (helpers have none) - int dbgLine - int dbgCol - int dbgArg // the parameter number of the next variable, or 0 - []str cdone // C functions and variables already declared str ftarget // the call an enclosing or / try is waiting on (see nodeKey) str ffailed // set by that call: an i1, true if it failed str fmsg // and the error text @@ -212,129 +101,12 @@ struct Gen { // ---------- basics ---------- -// ---------- the language server's index ---------- -// -// `finch index file.fch` runs the compiler up to the end of type checking and prints what it learned instead of -// the program, one record per line, fields separated by tabs: -// @R file line col len defFile defLine defCol hover a name in the source, what it is, where it was made -// @V name type file line col fnFile fnLine fnEnd a variable (for completion), in the function that spans those lines -// @F module name recv file line col endLine signature a function or method -// @S module name file line col and @SF module struct field type -// @E module name file line col variants an enum -// @I module a module the file imports -// Text in a record has its newlines written \n. - -fn esc(str s) -> str { - return s.replace("\\", "\\\\").replace("\n", "\\n").replace("\t", " ") -} - -fn noteRef(ptr[Gen] g, ast.Node at, int col, int len, str hover, str defPath, int defLine, int defCol) { - if !g.index { - return - } - g.idx.push("@R\t" + g.files[at.file] + "\t" + str(at.line) + "\t" + str(col) + "\t" + str(len) + "\t" + defPath + "\t" + str(defLine) + "\t" + str(defCol) + "\t" + esc(hover)) -} - -// fn add(int a, int b) -> int fn Counter.add(int n) fn parse(str s) -> int! -fn sigText(FnSig sig) -> str { - []str ps - for k in 0..sig.params.len { - ps.push(ast.show(sig.params[k]) + " " + sig.pnames[k]) - } - name := sig.name - if sig.recv.len > 0 { - name = sig.recv + "." + sig.name - } - text := "fn " + name + "(" + ps.join(", ") + ")" - if sig.fallible { - if sig.ret.kind == "void" { - text = text + " -> !" - } else { - text = text + " -> " + ast.show(sig.ret) + "!" - } - } else if sig.ret.kind != "void" { - text = text + " -> " + ast.show(sig.ret) - } - return text -} - -// a call of a Finch function or method: the name in the source, and the function it is -fn noteCall(ptr[Gen] g, ast.Node c, FnSig sig) { - if !g.index { - return - } - col := c.col - if c.kind == "method" { - col = c.col + 1 - } - f := g.progs[sig.prog].fns[sig.index] - shownName := sig.name - if sig.targs.len > 0 && sig.recv.len == 0 { - shownName = f.name - } - noteRef(g, c, col, shownName.len, "```finch\n" + sigText(sig) + "\n```", g.files[f.file], f.line, f.col + 3) -} - -// what is known about every function, struct and enum, for completion and the outline -fn indexAll(ptr[Gen] g, []str mainImports) { - for im in mainImports { - g.idx.push("@I\t" + im) - } - for sg in g.sigs { - f := g.progs[sg.prog].fns[sg.index] - if sg.targs.len > 0 { - continue - } - []str ps - for k in 0..sg.params.len { - ps.push(ast.show(sg.params[k]) + " " + sg.pnames[k]) - } - g.idx.push("@F\t" + sg.module + "\t" + sg.name + "\t" + sg.recv + "\t" + g.files[f.file] + "\t" + str(f.line) + "\t" + str(f.col) + "\t" + str(f.endLine) + "\t" + esc(sigText(sg)) + "\t" + ps.join("|")) - } - for tp in g.templates { - if tp.isStruct { - continue - } - f := g.progs[tp.prog].fns[tp.index] - g.idx.push("@F\t" + tp.module + "\t" + tp.name + "\t" + tp.recv + "\t" + g.files[f.file] + "\t" + str(f.line) + "\t" + str(f.col) + "\t" + str(f.endLine) + "\t" + esc("fn " + tp.name + "[" + tp.tparams.join(", ") + "](...)") + "\t") - } - for sd in g.structs { - if sd.isC || sd.base.len > 0 { - continue - } - node := g.progs[sd.prog].structs[sd.index] - g.idx.push("@S\t" + sd.module + "\t" + sd.name + "\t" + g.files[node.file] + "\t" + str(node.line) + "\t" + str(node.col)) - for k in 0..sd.fnames.len { - g.idx.push("@SF\t" + sd.module + "\t" + sd.name + "\t" + sd.fnames[k] + "\t" + ast.show(sd.ftypes[k])) - } - } - for pi in 0..g.progs.len { - for en in g.progs[pi].enums { - vs := "" - []str names - for v in en.kids { - names.push(v.name) - } - vs = names.join(",") - g.idx.push("@E\t" + g.progs[pi].module + "\t" + en.name + "\t" + g.files[en.file] + "\t" + str(en.line) + "\t" + str(en.col) + "\t" + vs) - } - } -} - fn fail(ptr[Gen] g, ast.Node n, str msg) { - if g.index && g.idx.len > 0 { - print(g.idx.join("\n")) // what was learned before the error - } - print(g.files[n.file] + ":" + str(n.line) + ":" + str(n.col) + ": error: " + msg + g.instNote) + print(g.files[n.file] + ":" + str(n.line) + ":" + str(n.col) + ": error: " + msg) exit(1) } fn emit(ptr[Gen] g, str line) { - // with -g every call in a function that has debug info has to say where it is - if g.dbgScope >= 0 && line.contains("call ") { - g.body.push(" " + line + ", !dbg !" + str(dbgLocation(g))) - return - } g.body.push(" " + line) } @@ -491,24 +263,6 @@ fn findStruct(ptr[Gen] g, str module, str name) -> int { return -1 } -fn findEnum(ptr[Gen] g, str module, str name) -> int { - for i in 0..g.enums.len { - if g.enums[i].module == module && g.enums[i].name == name { - return i - } - } - return -1 -} - -fn findSum(ptr[Gen] g, str module, str name) -> int { - for i in 0..g.sums.len { - if g.sums[i].module == module && g.sums[i].name == name { - return i - } - } - return -1 -} - fn progOf(ptr[Gen] g, str module) -> int { for i in 0..g.progs.len { if g.progs[i].module == module { @@ -527,20 +281,7 @@ fn resolve(ptr[Gen] g, ast.Type t, ast.Node at) -> ast.Type { return ast.arrayOf(resolve(g, t.elem[0], at)) } if t.kind == "map" { - key := resolve(g, t.elem[0], at) - if !isInt(key) && key.kind != "char" && key.kind != "bool" && key.kind != "str" && key.kind != "enum" { - fail(g, at, "a map key must be a whole number, a char, a bool or a str, not " + ast.show(key)) - } - value := resolve(g, t.elem[1], at) - if value.kind == "void" { - fail(g, at, "a map value can't have the type 'nothing'") - } - return ast.mapOf(key, value) - } - if t.kind == "fixed" { - out := ast.Type(kind: "fixed", count: t.count) - out.elem.push(resolve(g, t.elem[0], at)) - return out + return ast.mapOf(resolve(g, t.elem[0], at), resolve(g, t.elem[1], at)) } if t.kind == "ptr" { if t.elem.len == 0 { @@ -551,31 +292,6 @@ fn resolve(ptr[Gen] g, ast.Type t, ast.Node at) -> ast.Type { if t.kind != "named" { return t } - // T inside a generic - if t.module.len == 0 && t.elem.len == 0 && g.tnames.contains(t.name) { - return g.targs[g.tnames.find(t.name)] - } - // Stack[int] - if t.elem.len > 0 { - []ast.Type args - for a in t.elem { - args.push(resolve(g, a, at)) - } - gm := g.module - if t.module.len > 0 { - if !imports(g, t.module) { - fail(g, at, "'" + t.module + "' is not imported here (add: import " + t.module + ")") - } - gm = t.module - } - return instStruct(g, gm, t.name, args, at) - } - if t.module == "C" { - if findStruct(g, "C", t.name) < 0 { - fail(g, at, "there is no C struct named '" + t.name + "'") - } - return ast.Type(kind: "struct", name: t.name, module: "C") - } module := g.module if t.module.len > 0 { if !imports(g, t.module) { @@ -583,24 +299,12 @@ fn resolve(ptr[Gen] g, ast.Type t, ast.Node at) -> ast.Type { } module = t.module } - if findEnum(g, module, t.name) >= 0 { - return ast.Type(kind: "enum", name: t.name, module: module) - } if findStruct(g, module, t.name) < 0 { - // a bare name may be a struct from a C header - if t.module.len == 0 && findStruct(g, "C", t.name) >= 0 { - return ast.Type(kind: "struct", name: t.name, module: "C") - } fail(g, at, "there is no type named '" + ast.show(t) + "'") } return ast.Type(kind: "struct", name: t.name, module: module) } -// Stack[int] and Pair[str, int] as part of an LLVM name -fn mangle(str name) -> str { - return name.replace("[", ".").replace("]", "").replace(",", ".").replace(" ", "") -} - fn modName(str m) -> str { if m.len == 0 { return "main" @@ -628,19 +332,13 @@ fn llty(ptr[Gen] g, ast.Type t) -> str { if k == "map" { return "{ ptr, i64, i64, i64, ptr, i64, i64 }" // entries, len, used, cap, index, icap, adds } - if k == "fixed" { - return "[" + str(t.count) + " x " + llty(g, t.elem[0]) + "]" - } - if k == "enum" { - return "i32" - } if k == "ptr" || k == "null" { return "ptr" } if k == "void" { return "void" } - return "%S." + modName(t.module) + "." + mangle(t.name) + return "%S." + modName(t.module) + "." + t.name } // What a function returns as far as LLVM is concerned: a function that can fail @@ -663,7 +361,7 @@ fn nodeKey(ast.Node n) -> str { fn zeroOf(ast.Type t) -> str { k := t.kind - if isInt(t) || k == "char" || k == "enum" { + if isInt(t) || k == "char" { return "0" } if k == "bool" { @@ -699,11 +397,8 @@ fn typeKey(ast.Type t) -> str { if t.kind == "map" { return "map_" + typeKey(t.elem[0]) + "_" + typeKey(t.elem[1]) } - if t.kind == "enum" { - return "E_" + modName(t.module) + "_" + t.name - } if t.kind == "struct" { - return "S_" + modName(t.module) + "_" + mangle(t.name) + return "S_" + modName(t.module) + "_" + t.name } return t.kind } @@ -774,12 +469,10 @@ struct Saved { []str allocas int tmp bool term - int dbgScope } fn beginHelper(ptr[Gen] g) -> Saved { - s := Saved(body: g.body, allocas: g.allocas, tmp: g.tmp, term: g.term, dbgScope: g.dbgScope) - g.dbgScope = -1 // a helper made on the side has no source lines + s := Saved(body: g.body, allocas: g.allocas, tmp: g.tmp, term: g.term) []str empty g.body = empty g.allocas = empty @@ -794,7 +487,6 @@ fn endHelper(ptr[Gen] g, Saved s, str header) { g.allocas = s.allocas g.tmp = s.tmp g.term = s.term - g.dbgScope = s.dbgScope } // for i in 0..n, inside the current function @@ -874,8 +566,8 @@ fn copyFn(ptr[Gen] g, ast.Type t) -> str { store(g, st, load(g, st, "%src"), "%dst") for k in 0..sd.ftypes.len { if owning(g, sd.ftypes[k]) { - dp := op(g, "getelementptr inbounds " + st + ", ptr %dst, i32 0, i32 " + str(sd.lidx[k])) - spp := op(g, "getelementptr inbounds " + st + ", ptr %src, i32 0, i32 " + str(sd.lidx[k])) + dp := op(g, "getelementptr inbounds " + st + ", ptr %dst, i32 0, i32 " + str(k)) + spp := op(g, "getelementptr inbounds " + st + ", ptr %src, i32 0, i32 " + str(k)) copyAt(g, dp, spp, sd.ftypes[k]) } } @@ -895,121 +587,6 @@ fn copyValue(ptr[Gen] g, str v, ast.Type t) -> str { return load(g, llty(g, t), dst) } -// ---------- dropping ---------- - -fn dropAt(ptr[Gen] g, str slot, ast.Type t) { - if !owning(g, t) { - return - } - if t.kind == "str" { - emit(g, "call void @finch_str_drop(ptr " + slot + ")") - } else { - emit(g, "call void " + dropFn(g, t) + "(ptr " + slot + ")") - } -} - -fn dropValue(ptr[Gen] g, str v, ast.Type t) { - if owning(g, t) { - dropAt(g, spill(g, Val(v: v, ty: t)), t) - } -} - -// a temporary nobody keeps: dropped right after use. Constants (text literals, empty arrays) own no memory. -fn release(ptr[Gen] g, Val v) { - if v.fresh && v.v.len > 0 && !isConstant(v.v) && owning(g, v.ty) { - dropValue(g, v.v, v.ty) - } -} - -fn isConstant(str v) -> bool { - return !v.starts_with("%") -} - -fn dropFn(ptr[Gen] g, ast.Type t) -> str { - name := "@finch.drop." + typeKey(t) - if has(g.done, name) { - return name - } - g.done.push(name) - s := beginHelper(g) - if t.kind == "array" { - et := t.elem[0] - if owning(g, et) { - d := load(g, "ptr", "%a") - len := load(g, "i64", op(g, "getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1")) - l := loopStart(g, len) - ep := op(g, "getelementptr inbounds " + llty(g, et) + ", ptr " + d + ", i64 " + l[3]) - dropAt(g, ep, et) - loopEnd(g, l) - } - emit(g, "call void @finch_arr_free(ptr %a)") - } else if t.kind == "map" { - kt := t.elem[0] - vt := t.elem[1] - if owning(g, kt) || owning(g, vt) { - used := load(g, "i64", op(g, "getelementptr inbounds " + llty(g, t) + ", ptr %a, i32 0, i32 2")) - l := loopStart(g, used) - e := entryAt(g, "%a", t, l[3]) - live := newLabel(g, "entry.live") - next := newLabel(g, "entry.next") - condBr(g, op(g, "icmp ne i64 " + load(g, "i64", entryField(g, e, t, 0)) + ", 0"), live, next) - label(g, live) - dropAt(g, entryField(g, e, t, 1), kt) - dropAt(g, entryField(g, e, t, 2), vt) - br(g, next) - label(g, next) - loopEnd(g, l) - } - emit(g, "call void @finch_map_free(ptr %a)") - } else { - sd := g.structs[findStruct(g, t.module, t.name)] - st := llty(g, t) - for k in 0..sd.ftypes.len { - if owning(g, sd.ftypes[k]) { - dropAt(g, op(g, "getelementptr inbounds " + st + ", ptr %a, i32 0, i32 " + str(sd.lidx[k])), sd.ftypes[k]) - } - } - } - emit(g, "ret void") - endHelper(g, s, "define internal void " + name + "(ptr %a)") - return name -} - -// ---------- values held while an expression goes on ---------- - -fn hold(ptr[Gen] g, Val v) { - if v.fresh && v.v.len > 0 && !isConstant(v.v) && owning(g, v.ty) { - g.pending.push(Pending(v: v.v, ty: v.ty, isAddr: false)) - } -} - -fn holdAddr(ptr[Gen] g, str slot, ast.Type t) { - if owning(g, t) { - g.pending.push(Pending(v: slot, ty: t, isAddr: true)) - } -} - -// emit the drops of pending[downTo..], newest first (for a path that leaves the function or a loop) -fn dropPending(ptr[Gen] g, int downTo) { - i := g.pending.len - while i > downTo { - i -= 1 - p := g.pending[i] - if p.isAddr { - dropAt(g, p.v, p.ty) - } else { - dropValue(g, p.v, p.ty) - } - } -} - -// the expression is done: what it held is not pending any more -fn heldEnd(ptr[Gen] g, int mark) { - while g.pending.len > mark { - g.pending.pop() - } -} - // something that can be stored: a fresh value moves, anything else is copied fn own(ptr[Gen] g, Val v) -> str { if !owning(g, v.ty) || v.fresh { @@ -1146,31 +723,6 @@ fn formatFn(ptr[Gen] g, ast.Type t) -> str { emitFormat(g, "%buf", load(g, llty(g, et), ep), et, true) loopEnd(g, l) bufText(g, "%buf", "]") - } else if t.kind == "enum" { - // the variant's name; a number that is no variant shows as Color(7) - ed := g.enums[findEnum(g, t.module, t.name)] - v := load(g, "i32", "%a") - def := newLabel(g, "enum.other") - done := newLabel(g, "enum.done") - []str cases - []str labels - for k in 0..ed.variants.len { - labels.push(newLabel(g, "enum.v")) - cases.push("i32 " + str(ed.values[k]) + ", label %" + labels[k]) - } - emit(g, "switch i32 " + v + ", label %" + def + " [ " + cases.join(" ") + " ]") - g.term = true - for k in 0..ed.variants.len { - label(g, labels[k]) - bufText(g, "%buf", ed.variants[k]) - br(g, done) - } - label(g, def) - bufText(g, "%buf", ed.name + "(") - emit(g, "call void @finch_buf_int(ptr %buf, i64 " + op(g, "sext i32 " + v + " to i64") + ")") - bufText(g, "%buf", ")") - br(g, done) - label(g, done) } else if t.kind == "map" { // {"a": 1, "b": 2} first := alloca(g, "i1") @@ -1198,43 +750,6 @@ fn formatFn(ptr[Gen] g, ast.Type t) -> str { label(g, next) loopEnd(g, l) bufText(g, "%buf", "}") - } else if t.kind == "struct" && findSum(g, t.module, t.name) >= 0 { - // Circle(2.5), Point - sm := g.sums[findSum(g, t.module, t.name)] - sd := g.structs[findStruct(g, t.module, t.name)] - st := llty(g, t) - tag := load(g, "i64", op(g, "getelementptr inbounds " + st + ", ptr %a, i32 0, i32 " + str(sd.lidx[0]))) - def := newLabel(g, "sum.other") - done := newLabel(g, "sum.done") - []str cases - []str labels - for k in 0..sm.variants.len { - labels.push(newLabel(g, "sum.v")) - cases.push("i64 " + str(k) + ", label %" + labels[k]) - } - emit(g, "switch i64 " + tag + ", label %" + def + " [ " + cases.join(" ") + " ]") - g.term = true - for k in 0..sm.variants.len { - label(g, labels[k]) - bufText(g, "%buf", sm.variants[k]) - if sm.counts[k] > 0 { - bufText(g, "%buf", "(") - for j in 0..sm.counts[k] { - if j > 0 { - bufText(g, "%buf", ", ") - } - fi := sm.firsts[k] + j - fp := op(g, "getelementptr inbounds " + st + ", ptr %a, i32 0, i32 " + str(sd.lidx[fi])) - emitFormat(g, "%buf", load(g, llty(g, sd.ftypes[fi]), fp), sd.ftypes[fi], true) - } - bufText(g, "%buf", ")") - } - br(g, done) - } - label(g, def) - bufText(g, "%buf", sm.name + "(?)") - br(g, done) - label(g, done) } else { sd := g.structs[findStruct(g, t.module, t.name)] st := llty(g, t) @@ -1245,7 +760,7 @@ fn formatFn(ptr[Gen] g, ast.Type t) -> str { sep = "" } bufText(g, "%buf", sep + sd.fnames[k] + ": ") - fp := op(g, "getelementptr inbounds " + st + ", ptr %a, i32 0, i32 " + str(sd.lidx[k])) + fp := op(g, "getelementptr inbounds " + st + ", ptr %a, i32 0, i32 " + str(k)) emitFormat(g, "%buf", load(g, llty(g, sd.ftypes[k]), fp), sd.ftypes[k], true) } bufText(g, "%buf", ")") @@ -1372,7 +887,7 @@ fn findFn(ptr[Gen] g, str module, str name) -> int { fn findMethod(ptr[Gen] g, str module, str recv, str name) -> int { for i in 0..g.sigs.len { - if g.sigs[i].recvmod == module && g.sigs[i].recv == recv && g.sigs[i].name == name { + if g.sigs[i].module == module && g.sigs[i].recv == recv && g.sigs[i].name == name { return i } } @@ -1386,7 +901,7 @@ fn isBuiltin(str n) -> bool { return names.contains(n) } -fn addVar(ptr[Gen] g, ast.Node at, str name, ast.Type t, str init, bool readonly, bool owned) -> str { +fn addVar(ptr[Gen] g, ast.Node at, str name, ast.Type t, str init, bool readonly) -> str { if lookup(g, name) >= 0 && name != "err" { fail(g, at, "a variable named '" + name + "' already exists here") } @@ -1398,19 +913,8 @@ fn addVar(ptr[Gen] g, ast.Node at, str name, ast.Type t, str init, bool readonly } slot := alloca(g, llty(g, t)) store(g, llty(g, t), init, slot) - sc := g.scopes.len - 1 - mine := owned && owning(g, t) - if mine { - g.scopes[sc].cleanups.push(Cleanup(isDefer: false, idx: g.scopes[sc].vars.len)) - } - g.scopes[sc].vars.push(Var(name: name, ty: t, slot: slot, readonly: readonly, owned: mine, order: g.nvars, dpath: g.files[at.file], dline: at.line, dcol: at.col)) + g.scopes[g.scopes.len - 1].vars.push(Var(name: name, ty: t, slot: slot, readonly: readonly, order: g.nvars)) g.nvars += 1 - dbgVariable(g, at, name, t, slot) - if g.index && name != "err" && !name.starts_with("$") { - fnode := g.progs[g.cur.prog].fns[g.cur.index] - g.idx.push("@V\t" + name + "\t" + ast.show(t) + "\t" + g.files[at.file] + "\t" + str(at.line) + "\t" + str(at.col) + "\t" + g.files[fnode.file] + "\t" + str(fnode.line) + "\t" + str(fnode.endLine)) - noteRef(g, at, at.col, name.len, "```finch\n" + ast.show(t) + " " + name + "\n```", "", 0, 0) - } return slot } @@ -1418,35 +922,23 @@ fn pushScope(ptr[Gen] g) { g.scopes.push(Scope()) } -// The end of a scope: its variables are dropped and its defers run, unless it has already been left by return, -// break or continue. fn popScope(ptr[Gen] g) { - if !g.term { - runCleanups(g, g.scopes.len - 1) - } g.scopes.pop() } -// Drop the variables of scope `idx` and run its defers, newest first, as if written where the scope ends. -fn runCleanups(ptr[Gen] g, int idx) { - k := g.scopes[idx].cleanups.len +// Run the defers of scope `idx`, newest first, as if written where the scope ends. +fn runDefers(ptr[Gen] g, int idx) { + sc := g.scopes[idx] + k := sc.defers.len while k > 0 { k -= 1 - c := g.scopes[idx].cleanups[k] - if !c.isDefer { - v := g.scopes[idx].vars[c.idx] - if !v.moved { - dropAt(g, v.slot, v.ty) - } - continue - } savedOn := g.deferOn savedLimit := g.deferLimit g.deferOn = true - g.deferLimit = g.scopes[idx].orders[c.idx] + g.deferLimit = sc.orders[k] g.inDefer += 1 pushScope(g) - stmt(g, g.scopes[idx].defers[c.idx]) + stmt(g, sc.defers[k]) popScope(g) g.inDefer -= 1 g.deferOn = savedOn @@ -1459,12 +951,16 @@ fn unwind(ptr[Gen] g, int depth) { i := g.scopes.len while i > depth { i -= 1 - runCleanups(g, i) + runDefers(g, i) } } +// The end of a block: its defers run, unless the block has already left by return, break or continue. fn endScope(ptr[Gen] g) { - popScope(g) + if !g.term { + runDefers(g, g.scopes.len - 1) + } + g.scopes.pop() } // ---------- mutation analysis: does a function change a parameter? ---------- @@ -1508,64 +1004,12 @@ fn declare(ptr[Gen] g) { g.module = g.progs[pi].module for si in 0..g.progs[pi].structs.len { s := g.progs[pi].structs[si] - if findStruct(g, g.module, s.name) >= 0 || findTemplate(g, g.module, s.name, "", true) >= 0 { + if findStruct(g, g.module, s.name) >= 0 { fail(g, s, "the struct '" + s.name + "' is defined twice") } - if s.tparams.len > 0 { - // a generic struct: it only becomes a real struct for the types it is used with - g.templates.push(Template(module: g.module, name: s.name, tparams: s.tparams, prog: pi, index: si, isStruct: true)) - continue - } g.structs.push(StructDef(module: g.module, name: s.name, prog: pi, index: si)) } } - for pi in 0..g.progs.len { - g.module = g.progs[pi].module - for ei in 0..g.progs[pi].enums.len { - e := g.progs[pi].enums[ei] - if e.flag { - if findEnum(g, g.module, e.name) >= 0 || findSum(g, g.module, e.name) >= 0 { - fail(g, e, "'" + e.name + "' is defined twice") - } - sd := SumDef(module: g.module, name: e.name) - first := 1 - for v in e.kids { - if sd.variants.contains(v.name) { - fail(g, v, "the enum " + e.name + " has the variant " + v.name + " twice") - } - sd.variants.push(v.name) - sd.counts.push(v.kids.len) - sd.firsts.push(first) - first += v.kids.len - } - g.sums.push(sd) - continue - } - if findEnum(g, g.module, e.name) >= 0 || findStruct(g, g.module, e.name) >= 0 { - fail(g, e, "'" + e.name + "' is defined twice") - } - ed := EnumDef(module: g.module, name: e.name) - next := 0 - for v in e.kids { - if v.text.len > 0 { - next = int(v.text) - } - if ed.variants.contains(v.name) { - fail(g, v, "the enum " + e.name + " has the variant " + v.name + " twice") - } - if ed.values.contains(next) { - fail(g, v, "two variants of " + e.name + " have the number " + str(next) + " (give each its own)") - } - ed.variants.push(v.name) - ed.values.push(next) - next += 1 - } - g.enums.push(ed) - } - } - for ni in 0..g.ci.structOrder.len { - g.structs.push(StructDef(module: "C", name: g.ci.structOrder[ni], isC: true, prog: -1, index: ni)) - } for i in 0..g.structs.len { resolveStruct(g, i) } @@ -1573,34 +1017,12 @@ fn declare(ptr[Gen] g) { g.module = g.progs[pi].module for fi in 0..g.progs[pi].fns.len { f := g.progs[pi].fns[fi] - if f.tparams.len > 0 { - // generic: kept as written, and made for the types it is called with - if findTemplate(g, g.module, f.name, f.recv, false) >= 0 { - fail(g, f, "function '" + f.name + "' is defined twice") - } - if f.recv.len > 0 && findTemplate(g, g.module, f.recv, "", true) < 0 { - fail(g, f, "there is no generic struct named '" + f.recv + "' here (a method goes in the same file as its struct)") - } - g.templates.push(Template(module: g.module, name: f.name, recv: f.recv, tparams: f.tparams, prog: pi, index: fi)) - continue - } - recvmod := g.module - recvEnum := false - if f.recv.len > 0 && findEnum(g, g.module, f.recv) >= 0 { - recvEnum = true - if findMethod(g, recvmod, f.recv, f.name) >= 0 { - fail(g, f, "the method " + f.recv + "." + f.name + " is defined twice") - } - } else if f.recv.len > 0 { + if f.recv.len > 0 { si := findStruct(g, g.module, f.recv) - if si < 0 && findStruct(g, "C", f.recv) >= 0 { - si = findStruct(g, "C", f.recv) // a method on a struct from C - recvmod = "C" - } if si < 0 { - fail(g, f, "there is no struct named '" + f.recv + "' here (a method goes in the same file as its struct, or on a struct from C)") + fail(g, f, "there is no struct named '" + f.recv + "' here (a method goes in the same file as its struct)") } - if findMethod(g, recvmod, f.recv, f.name) >= 0 { + if findMethod(g, g.module, f.recv, f.name) >= 0 { fail(g, f, "the method " + f.recv + "." + f.name + " is defined twice") } if g.structs[si].fnames.contains(f.name) { @@ -1614,7 +1036,7 @@ fn declare(ptr[Gen] g) { fail(g, f, "'" + f.name + "' is a built-in function, pick another name") } } - sig := FnSig(module: g.module, name: f.name, recv: f.recv, recvmod: recvmod, recvEnum: recvEnum, fallible: f.fallible, exported: f.exported, prog: pi, index: fi) + sig := FnSig(module: g.module, name: f.name, recv: f.recv, fallible: f.fallible, prog: pi, index: fi) sig.ll = "@finch." + modName(g.module) + "." + f.name if f.recv.len > 0 { sig.ll = "@finch." + modName(g.module) + "." + f.recv + "." + f.name @@ -1627,9 +1049,6 @@ fn declare(ptr[Gen] g) { sig.params.push(resolve(g, f.kids[k].ty, f.kids[k])) sig.pnames.push(f.kids[k].name) } - if f.exported { - checkExport(g, f, sig) - } g.sigs.push(sig) } } @@ -1648,17 +1067,6 @@ fn declare(ptr[Gen] g) { } } } - for ti in 0..g.templates.len { - tpl := g.templates[ti] - if tpl.recv.len > 0 && !tpl.mutself { - tf := g.progs[tpl.prog].fns[tpl.index] - if mutates(g, "self", tf.kids[tf.kids.len - 1]) { - g.templates[ti].mutself = true - g.mm.push(tpl.name) - changed = true - } - } - } } // a parameter nobody changes is borrowed rather than copied for i in 0..g.sigs.len { @@ -1671,236 +1079,10 @@ fn declare(ptr[Gen] g) { } } -fn findTemplate(ptr[Gen] g, str module, str name, str recv, bool isStruct) -> int { - for i in 0..g.templates.len { - t := g.templates[i] - if t.module == module && t.name == name && t.recv == recv && t.isStruct == isStruct { - return i - } - } - return -1 -} - -fn shownTypes([]ast.Type args) -> str { - []str parts - for a in args { - parts.push(ast.show(a)) - } - return parts.join(", ") -} - -// Stack[int]: the struct with T = int, made the first time it is asked for. -fn instStruct(ptr[Gen] g, str module, str base, []ast.Type args, ast.Node at) -> ast.Type { - ti := findTemplate(g, module, base, "", true) - if ti < 0 { - fail(g, at, "there is no generic struct named '" + base + "' (a struct written struct " + base + "[T] { ... } takes type arguments)") - } - tpl := g.templates[ti] - if args.len != tpl.tparams.len { - fail(g, at, base + " takes " + str(tpl.tparams.len) + " type argument(s), like " + base + "[" + tpl.tparams.join(", ") + "], but got " + str(args.len)) - } - name := base + "[" + shownTypes(args) + "]" - if findStruct(g, module, name) < 0 { - g.structs.push(StructDef(module: module, name: name, prog: tpl.prog, index: tpl.index, base: base, tnames: tpl.tparams, targs: args)) - resolveStruct(g, g.structs.len - 1) - } - return ast.Type(kind: "struct", name: name, module: module) -} - -// max[int]: the function with T = int; for a method, `recvType` is the struct instance it belongs to. -fn instFn(ptr[Gen] g, int ti, []ast.Type args, ast.Type recvType, ast.Node at) -> int { - tpl := g.templates[ti] - shown := tpl.name + "[" + shownTypes(args) + "]" - if tpl.recv.len > 0 { - existing := findMethod(g, tpl.module, recvType.name, tpl.name) - if existing >= 0 { - return existing - } - } else { - existing := findFn(g, tpl.module, shown) - if existing >= 0 { - return existing - } - } - f := g.progs[tpl.prog].fns[tpl.index] - sig := FnSig(module: tpl.module, name: shown, recvmod: tpl.module, fallible: f.fallible, prog: tpl.prog, index: tpl.index, tnames: tpl.tparams, targs: args, mutself: tpl.mutself, shown: shown) - sig.ll = "@finch." + modName(tpl.module) + "." + mangle(shown) - if tpl.recv.len > 0 { - sig.name = tpl.name - sig.recv = recvType.name - sig.shown = recvType.name + "." + tpl.name - sig.ll = "@finch." + modName(tpl.module) + "." + mangle(recvType.name) + "." + tpl.name - } - savedN := g.tnames - savedA := g.targs - savedM := g.module - savedNote := g.instNote - g.tnames = tpl.tparams - g.targs = args - g.module = tpl.module - g.instNote = " (while building " + sig.shown + ")" - sig.ret = resolve(g, f.ty, f) - body := f.kids[f.kids.len - 1] - for k in 0..f.kids.len - 1 { - pt := resolve(g, f.kids[k].ty, f.kids[k]) - sig.params.push(pt) - sig.pnames.push(f.kids[k].name) - sig.borrow.push(owning(g, pt) && !mutates(g, f.kids[k].name, body)) - } - g.tnames = savedN - g.targs = savedA - g.module = savedM - g.instNote = savedNote - g.sigs.push(sig) - return g.sigs.len - 1 -} - -// What each type parameter stands for, from the types the arguments turned out to have. -fn bindType(ptr[Gen] g, ast.Type pat, ast.Type actual, []str tparams, ptr[Binds] b) { - if pat.kind == "named" && pat.module.len == 0 && pat.elem.len == 0 && tparams.contains(pat.name) { - i := tparams.find(pat.name) - if !b.bound[i] { - b.types[i] = actual - b.bound[i] = true - } - return - } - if (pat.kind == "array" || pat.kind == "ptr" || pat.kind == "fixed") && pat.elem.len > 0 && actual.kind == pat.kind && actual.elem.len > 0 { - bindType(g, pat.elem[0], actual.elem[0], tparams, b) - return - } - if pat.kind == "map" && actual.kind == "map" { - bindType(g, pat.elem[0], actual.elem[0], tparams, b) - bindType(g, pat.elem[1], actual.elem[1], tparams, b) - return - } - if pat.kind == "named" && pat.elem.len > 0 && actual.kind == "struct" { - sd := g.structs[findStruct(g, actual.module, actual.name)] - if sd.base == pat.name && sd.targs.len == pat.elem.len { - for i in 0..pat.elem.len { - bindType(g, pat.elem[i], sd.targs[i], tparams, b) - } - } - } -} - -// max(3, 4), or max[float](3, 4): make the version the arguments ask for, and call it. -fn genericCall(ptr[Gen] g, ast.Node c, int ti, int first, str shown) -> Val { - tpl := g.templates[ti] - f := g.progs[tpl.prog].fns[tpl.index] - nparams := f.kids.len - 1 - checkArgs(g, c, first, nparams, shown) - []ast.Type args - if c.ty.elem.len > 0 { - if c.ty.elem.len != tpl.tparams.len { - fail(g, c, shown + " takes " + str(tpl.tparams.len) + " type argument(s), but got " + str(c.ty.elem.len)) - } - for a in c.ty.elem { - args.push(resolve(g, a, c)) - } - return callFn(g, instFn(g, ti, args, T("void"), c), c, first, shown, "", "") - } - b := Binds() - for i in 0..tpl.tparams.len { - b.types.push(T("void")) - b.bound.push(false) - } - []Val vals - mark := g.pending.len - for k in 0..nparams { - v := expr(g, c.kids[first + k]) - if v.ty.kind == "void" || v.ty.kind == "null" { - fail(g, c.kids[first + k], "this has no type to work out " + tpl.tparams.join(", ") + " from") - } - vals.push(v) - hold(g, v) - bindType(g, f.kids[k].ty, v.ty, tpl.tparams, addr(b)) - } - for i in 0..tpl.tparams.len { - if !b.bound[i] { - fail(g, c, "can't tell what " + tpl.tparams[i] + " is here; write it out: " + tpl.name + "[int](...)") - } - } - si := instFn(g, ti, b.types, T("void"), c) - sig := g.sigs[si] - noteCall(g, c, sig) - []str out - for k in 0..nparams { - v := coerce(g, vals[k], sig.params[k], c.kids[first + k], "argument '" + sig.pnames[k] + "'") - out.push(llty(g, sig.params[k]) + " " + v.v) - } - r := emitCall(g, sig, c, out, shown) - for v in vals { - release(g, v) - } - heldEnd(g, mark) - return r -} - -// A struct from a C header: the fields clang says it has, at the offsets clang says, -// with byte padding wherever C left a gap (or a field Finch can't see). -fn resolveCStruct(ptr[Gen] g, int i) { - cs := g.ci.structs[g.structs[i].name] - g.structs[i].state = 1 - cur := 0 - []str elems - for f in cs.fields { - if f.hidden { - continue - } - t := resolve(g, f.ty, ast.Node()) - if t.kind == "struct" { - resolveStruct(g, findStruct(g, t.module, t.name)) - } - if f.offset > cur { - elems.push("[" + str(f.offset - cur) + " x i8]") - } - g.structs[i].fnames.push(f.name) - g.structs[i].ftypes.push(t) - g.structs[i].lidx.push(elems.len) - g.structs[i].offs.push(f.offset) - elems.push(llty(g, t)) - cur = f.offset + f.size - } - if cs.size > cur { - elems.push("[" + str(cs.size - cur) + " x i8]") - } - g.structs[i].unsupported = cs.unsupported - if cs.hasHidden && cs.unsupported.len == 0 { - g.structs[i].unsupported = "has fields Finch can't see (unions or bit fields)" - } - g.structs[i].csize = cs.size - g.structs[i].calign = cs.align - g.structs[i].state = 2 - g.head.push("%S.C." + cs.name + " = type { " + elems.join(", ") + " }") -} - fn resolveStruct(ptr[Gen] g, int i) { if g.structs[i].state == 2 { return } - if g.structs[i].isC { - resolveCStruct(g, i) - return - } - if g.structs[i].base.len == 0 { - resolveStructBody(g, i) - return - } - // an instance of a generic struct: its fields are written in terms of T - savedN := g.tnames - savedA := g.targs - savedNote := g.instNote - g.tnames = g.structs[i].tnames - g.targs = g.structs[i].targs - g.instNote = " (while building " + g.structs[i].name + ")" - resolveStructBody(g, i) - g.tnames = savedN - g.targs = savedA - g.instNote = savedNote -} - -fn resolveStructBody(ptr[Gen] g, int i) { decl := g.progs[g.structs[i].prog].structs[g.structs[i].index] if g.structs[i].state == 1 { fail(g, decl, "the struct " + decl.name + " contains itself; use ptr[" + decl.name + "] or []" + decl.name + " for that field") @@ -1915,7 +1097,6 @@ fn resolveStructBody(ptr[Gen] g, int i) { if t.kind == "struct" { resolveStruct(g, findStruct(g, t.module, t.name)) } - g.structs[i].lidx.push(g.structs[i].fnames.len) g.structs[i].fnames.push(f.name) g.structs[i].ftypes.push(t) if owning(g, t) { @@ -1926,256 +1107,12 @@ fn resolveStructBody(ptr[Gen] g, int i) { g.structs[i].owning = owns g.module = saved g.structs[i].state = 2 - g.head.push("%S." + modName(g.structs[i].module) + "." + mangle(g.structs[i].name) + " = type { " + fields.join(", ") + " }") -} - -// ---------- debug info (-g) ---------- -// -// DWARF, written as LLVM metadata: a compile unit, a DISubprogram per function, a DILocation on every call, -// and a DILocalVariable for every variable, with types a debugger can open up (structs, arrays, maps, enums). - -fn md(ptr[Gen] g, str text) -> int { - g.md.push(text) - return g.md.len - 1 -} - -fn mdRef(int id) -> str { - if id < 0 { - return "null" - } - return "!" + str(id) -} - -struct SizeAlign { - int size - int align -} - -fn alignUp(int n, int a) -> int { - if a <= 1 { - return n - } - return (n + a - 1) / a * a -} - -// the size and alignment LLVM gives a type (what a debugger needs to find the fields) -fn sizeAlign(ptr[Gen] g, ast.Type t) -> SizeAlign { - k := t.kind - if k == "bool" || k == "char" || k == "i8" || k == "u8" { - return SizeAlign(size: 1, align: 1) - } - if k == "i16" || k == "u16" { - return SizeAlign(size: 2, align: 2) - } - if k == "i32" || k == "u32" || k == "f32" || k == "enum" { - return SizeAlign(size: 4, align: 4) - } - if k == "str" || k == "array" { - return SizeAlign(size: 24, align: 8) - } - if k == "map" { - return SizeAlign(size: 56, align: 8) - } - if k == "fixed" { - e := sizeAlign(g, t.elem[0]) - return SizeAlign(size: e.size * t.count, align: e.align) - } - if k == "struct" { - sd := g.structs[findStruct(g, t.module, t.name)] - if sd.isC { - return SizeAlign(size: sd.csize, align: sd.calign) - } - cur := 0 - most := 1 - for ft in sd.ftypes { - f := sizeAlign(g, ft) - cur = alignUp(cur, f.align) + f.size - if f.align > most { - most = f.align - } - } - return SizeAlign(size: alignUp(cur, most), align: most) - } - return SizeAlign(size: 8, align: 8) -} - -// where each field of a struct is, in bytes -fn fieldOffsets(ptr[Gen] g, StructDef sd) -> []int { - if sd.isC { - return sd.offs - } - []int out - cur := 0 - for ft in sd.ftypes { - f := sizeAlign(g, ft) - cur = alignUp(cur, f.align) - out.push(cur) - cur += f.size - } - return out -} - -fn dbgMember(ptr[Gen] g, str name, int scope, int file, int line, int base, int bits, int offset) -> int { - return md(g, "!DIDerivedType(tag: DW_TAG_member, name: \"" + name + "\", scope: !" + str(scope) + ", file: !" + str(file) + ", line: " + str(line) + ", baseType: " + mdRef(base) + ", size: " + str(bits) + ", offset: " + str(offset) + ")") -} - -fn basicType(ptr[Gen] g, str name, int bits, str enc) -> int { - return md(g, "!DIBasicType(name: \"" + name + "\", size: " + str(bits) + ", encoding: " + enc + ")") -} - -// the debug type of a Finch type; -1 where there is none (nothing, null) -fn diType(ptr[Gen] g, ast.Type t) -> int { - k := t.kind - if k == "void" || k == "null" { - return -1 - } - key := "T:" + ast.show(t) - if g.mdcache.has(key) { - return g.mdcache[key] - } - id := -1 - file := g.mdfiles[0] - if k == "bool" { - id = basicType(g, "bool", 8, "DW_ATE_boolean") - } else if k == "char" { - id = basicType(g, "char", 8, "DW_ATE_signed_char") - } else if k == "int" { - id = basicType(g, "int", 64, "DW_ATE_signed") - } else if k == "float" { - id = basicType(g, "float", 64, "DW_ATE_float") - } else if k == "f32" { - id = basicType(g, "f32", 32, "DW_ATE_float") - } else if isInt(t) { - enc := "DW_ATE_unsigned" - if isSigned(t) { - enc = "DW_ATE_signed" - } - id = basicType(g, k, bitsOf(t), enc) - } else if k == "enum" { - ed := g.enums[findEnum(g, t.module, t.name)] - []str items - for i in 0..ed.variants.len { - items.push(mdRef(md(g, "!DIEnumerator(name: \"" + ed.variants[i] + "\", value: " + str(ed.values[i]) + ")"))) - } - id = md(g, "!DICompositeType(tag: DW_TAG_enumeration_type, name: \"" + ed.name + "\", file: !" + str(file) + ", size: 32, elements: !{" + items.join(", ") + "})") - } else { - // the rest can point at themselves (a list node holds a pointer to the next), so the number comes first - id = md(g, "") - g.mdcache[key] = id - if k == "ptr" { - base := -1 - if t.elem.len > 0 { - base = diType(g, t.elem[0]) - } - g.md[id] = "!DIDerivedType(tag: DW_TAG_pointer_type, baseType: " + mdRef(base) + ", size: 64)" - } else if k == "fixed" { - e := sizeAlign(g, t.elem[0]) - sub := md(g, "!DISubrange(count: " + str(t.count) + ")") - g.md[id] = "!DICompositeType(tag: DW_TAG_array_type, baseType: " + mdRef(diType(g, t.elem[0])) + ", size: " + str(e.size * t.count * 8) + ", elements: !{!" + str(sub) + "})" - } else if k == "str" || k == "array" { - elem := ast.simple("char") - if k == "array" { - elem = t.elem[0] - } - ptrT := md(g, "!DIDerivedType(tag: DW_TAG_pointer_type, baseType: " + mdRef(diType(g, elem)) + ", size: 64)") - intT := diType(g, ast.simple("int")) - a := dbgMember(g, "ptr", id, file, 0, ptrT, 64, 0) - b := dbgMember(g, "len", id, file, 0, intT, 64, 64) - c := dbgMember(g, "cap", id, file, 0, intT, 64, 128) - g.md[id] = "!DICompositeType(tag: DW_TAG_structure_type, name: \"" + ast.show(t) + "\", file: !" + str(file) + ", size: 192, align: 64, elements: !{!" + str(a) + ", !" + str(b) + ", !" + str(c) + "})" - } else if k == "map" { - intT := diType(g, ast.simple("int")) - raw := md(g, "!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)") - names := ["entries", "len", "used", "cap", "index", "icap", "adds"] - []str members - for i in 0..7 { - base := intT - if i == 0 || i == 4 { - base = raw - } - members.push("!" + str(dbgMember(g, names[i], id, file, 0, base, 64, 64 * i))) - } - g.md[id] = "!DICompositeType(tag: DW_TAG_structure_type, name: \"" + ast.show(t) + "\", file: !" + str(file) + ", size: 448, align: 64, elements: !{" + members.join(", ") + "})" - } else if k == "struct" { - sd := g.structs[findStruct(g, t.module, t.name)] - offs := fieldOffsets(g, sd) - sa := sizeAlign(g, t) - []str members - for i in 0..sd.ftypes.len { - fs := sizeAlign(g, sd.ftypes[i]) - members.push("!" + str(dbgMember(g, sd.fnames[i], id, file, 0, diType(g, sd.ftypes[i]), fs.size * 8, offs[i] * 8))) - } - g.md[id] = "!DICompositeType(tag: DW_TAG_structure_type, name: \"" + sd.name + "\", file: !" + str(file) + ", size: " + str(sa.size * 8) + ", align: 8, elements: !{" + members.join(", ") + "})" - } else { - g.md[id] = "!DIBasicType(name: \"" + k + "\", size: 64, encoding: DW_ATE_unsigned)" - } - return id - } - g.mdcache[key] = id - return id -} - -fn dbgLocation(ptr[Gen] g) -> int { - key := "L:" + str(g.dbgLine) + ":" + str(g.dbgCol) + ":" + str(g.dbgScope) - if g.mdcache.has(key) { - return g.mdcache[key] - } - id := md(g, "!DILocation(line: " + str(g.dbgLine) + ", column: " + str(g.dbgCol) + ", scope: !" + str(g.dbgScope) + ")") - g.mdcache[key] = id - return id -} - -fn dbgSubprogram(ptr[Gen] g, ast.Node f) -> int { - sig := g.cur - []str types - types.push(mdRef(diType(g, sig.ret))) - if sig.recv.len > 0 { - types.push("null") - } - for p in sig.params { - types.push(mdRef(diType(g, p))) - } - file := g.mdfiles[f.file] - sub := md(g, "!DISubroutineType(types: !{" + types.join(", ") + "})") - return md(g, "distinct !DISubprogram(name: \"" + sig.name + "\", linkageName: \"" + sig.ll.sub(1, sig.ll.len) + "\", scope: !" + str(file) + ", file: !" + str(file) + ", line: " + str(f.line) + ", type: !" + str(sub) + ", scopeLine: " + str(f.line) + ", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)") -} - -fn dbgVariable(ptr[Gen] g, ast.Node at, str name, ast.Type t, str slot) { - if !g.debug || g.dbgScope < 0 { - return - } - ty := diType(g, t) - if ty < 0 { - return - } - arg := "" - if g.dbgArg > 0 { - arg = ", arg: " + str(g.dbgArg) - } - v := md(g, "!DILocalVariable(name: \"" + name + "\", scope: !" + str(g.dbgScope) + ", file: !" + str(g.mdfiles[at.file]) + ", line: " + str(at.line) + ", type: !" + str(ty) + arg + ")") - g.dbgLine = at.line - g.dbgCol = at.col - emit(g, "call void @llvm.dbg.declare(metadata ptr " + slot + ", metadata !" + str(v) + ", metadata !DIExpression())") -} - -// the metadata, at the end of the module -fn dbgModule(ptr[Gen] g) -> str { - []str lines = ["!llvm.dbg.cu = !{!0}", "!llvm.module.flags = !{!1, !2}"] - for i in 0..g.md.len { - lines.push("!" + str(i) + " = " + g.md[i]) - } - return lines.join("\n") + "\n" + g.head.push("%S." + modName(g.structs[i].module) + "." + decl.name + " = type { " + fields.join(", ") + " }") } fn define(ptr[Gen] g, int si) { g.cur = g.sigs[si] g.module = g.cur.module - g.tnames = g.cur.tnames - g.targs = g.cur.targs - g.instNote = "" - if g.cur.targs.len > 0 { - g.instNote = " (while building " + g.cur.shown + ")" - } f := g.progs[g.cur.prog].fns[g.cur.index] []str empty g.body = empty @@ -2183,14 +1120,6 @@ fn define(ptr[Gen] g, int si) { g.tmp = 0 g.term = false g.nvars = 0 - g.dbgScope = -1 - dbgsp := -1 - if g.debug { - dbgsp = dbgSubprogram(g, f) - g.dbgScope = dbgsp - g.dbgLine = f.line - g.dbgCol = f.col - } g.deferOn = false g.inDefer = 0 []Scope none @@ -2200,16 +1129,7 @@ fn define(ptr[Gen] g, int si) { if g.cur.recv.len > 0 { // self is the caller's struct itself, reached through its address params.push("ptr %self") - selfKind := "struct" - if g.cur.recvEnum { - selfKind = "enum" - } - selfTy := ast.Type(kind: selfKind, name: g.cur.recv, module: g.cur.recvmod) - g.scopes[0].vars.push(Var(name: "self", ty: selfTy, slot: "%self", readonly: false)) - if g.debug { - // the struct is at the address %self holds: shown as the struct, whose slot that address is - dbgVariable(g, f, "self", selfTy, "%self") - } + g.scopes[0].vars.push(Var(name: "self", ty: ast.Type(kind: "struct", name: g.cur.recv, module: g.cur.module), slot: "%self", readonly: false)) } for k in 0..g.cur.params.len { pt := g.cur.params[k] @@ -2218,31 +1138,21 @@ fn define(ptr[Gen] g, int si) { if owning(g, pt) && !g.cur.borrow[k] { v = copyValue(g, v, pt) } - g.dbgArg = k + 1 - if g.cur.recv.len > 0 { - g.dbgArg = k + 2 - } - addVar(g, f.kids[k], g.cur.pnames[k], pt, v, false, owning(g, pt) && !g.cur.borrow[k]) - g.dbgArg = 0 + addVar(g, f.kids[k], g.cur.pnames[k], pt, v, false) } block(g, f.kids[f.kids.len - 1], false) if !g.term { if g.cur.ret.kind != "void" { fail(g, f, "function '" + f.name + "' can reach its end without returning " + ast.show(g.cur.ret)) } - unwind(g, 0) + runDefers(g, 0) if g.cur.fallible { emit(g, "ret " + retTy(g, g.cur) + " { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }") } else { emit(g, "ret void") } } - attach := "" - if dbgsp >= 0 { - attach = " !dbg !" + str(dbgsp) - } - g.dbgScope = -1 - g.out.push("define internal " + retTy(g, g.cur) + " " + g.cur.ll + "(" + params.join(", ") + ")" + attach + " {\nentry:\n" + + g.out.push("define internal " + retTy(g, g.cur) + " " + g.cur.ll + "(" + params.join(", ") + ") {\nentry:\n" + g.allocas.join("\n") + "\n" + g.body.join("\n") + "\n}\n") } @@ -2264,8 +1174,6 @@ fn block(ptr[Gen] g, ast.Node b, bool scope) { } fn stmt(ptr[Gen] g, ast.Node s) { - g.dbgLine = s.line - g.dbgCol = s.col k := s.kind if k == "block" { block(g, s, true) @@ -2275,12 +1183,10 @@ fn stmt(ptr[Gen] g, ast.Node s) { assignStmt(g, s) } else if k == "expr" { if s.kids[0].kind == "or" { - release(g, orElse(g, s.kids[0], true)) + orElse(g, s.kids[0], true) } else { - release(g, expr(g, s.kids[0])) + expr(g, s.kids[0]) } - } else if k == "match" { - matchGen(g, s, false) } else if k == "if" { ifStmt(g, s) } else if k == "while" { @@ -2296,7 +1202,6 @@ fn stmt(ptr[Gen] g, ast.Node s) { fail(g, s, "defer inside defer is not allowed") } sc := g.scopes.len - 1 - g.scopes[sc].cleanups.push(Cleanup(isDefer: true, idx: g.scopes[sc].defers.len)) g.scopes[sc].defers.push(s.kids[0]) g.scopes[sc].orders.push(g.nvars) } else if k == "break" || k == "continue" { @@ -2307,7 +1212,6 @@ fn stmt(ptr[Gen] g, ast.Node s) { fail(g, s, k + " can only be used inside a loop") } l := g.loops[g.loops.len - 1] - dropPending(g, l.pend) unwind(g, l.depth) if k == "break" { br(g, l.brk) @@ -2328,7 +1232,7 @@ fn declStmt(ptr[Gen] g, ast.Node s) { if v.ty.kind == "null" { fail(g, s.kids[0], "null needs a type, like: ptr[int] " + s.name + " = null") } - addVar(g, s, s.name, v.ty, own(g, v), false, true) + addVar(g, s, s.name, v.ty, own(g, v), false) return } t := resolve(g, s.ty, s) @@ -2337,21 +1241,18 @@ fn declStmt(ptr[Gen] g, ast.Node s) { []ast.Node noArgs []str noNames v := construct(g, findStruct(g, t.module, t.name), noArgs, noNames, s) - addVar(g, s, s.name, t, v.v, false, true) + addVar(g, s, s.name, t, v.v, false) return } - addVar(g, s, s.name, t, zeroOf(t), false, true) + addVar(g, s, s.name, t, zeroOf(t), false) return } v := coerce(g, exprWant(g, s.kids[0], t), t, s.kids[0], "'" + s.name + "'") - addVar(g, s, s.name, t, own(g, v), false, true) + addVar(g, s, s.name, t, own(g, v), false) } fn hasDefaults(ptr[Gen] g, ast.Type t) -> bool { sd := g.structs[findStruct(g, t.module, t.name)] - if sd.isC { - return false - } for f in g.progs[sd.prog].structs[sd.index].kids { if f.kids.len > 0 { return true @@ -2377,50 +1278,18 @@ fn assignStmt(ptr[Gen] g, ast.Node s) { what = "'" + root + "'" } if s.name == "=" { - // the right side first: it may move memory the target lives in (a.push(...) inside it) - want := T("void") - known := false - if target.kind == "var" { - id := lookup(g, root) - if id >= 0 { - want = varAt(g, id).ty - known = true - } - } - v := Val() - if known { - v = exprWant(g, s.kids[1], want) - } else { - v = expr(g, s.kids[1]) - } - mark := g.pending.len - hold(g, v) // while the target is computed (a[try f()] = ...) + v := expr(g, s.kids[1]) dst := place(g, target, true) v = coerce(g, v, dst.ty, s.kids[1], what) - nv := own(g, v) - if owning(g, dst.ty) { - old := load(g, llty(g, dst.ty), dst.addr) - store(g, llty(g, dst.ty), nv, dst.addr) - dropValue(g, old, dst.ty) - } else { - store(g, llty(g, dst.ty), nv, dst.addr) - } - heldEnd(g, mark) + store(g, llty(g, dst.ty), own(g, v), dst.addr) return } rhs := expr(g, s.kids[1]) - mark := g.pending.len - hold(g, rhs) dst := place(g, target, true) cur := Val(v: load(g, llty(g, dst.ty), dst.addr), ty: dst.ty) opName := s.name.sub(0, 1) v := coerce(g, arith(g, opName, cur, rhs, s), dst.ty, s, what) - nv := own(g, v) - store(g, llty(g, dst.ty), nv, dst.addr) - if owning(g, dst.ty) { - dropValue(g, cur.v, dst.ty) - } - heldEnd(g, mark) + store(g, llty(g, dst.ty), own(g, v), dst.addr) } fn condition(ptr[Gen] g, ast.Node e) -> str { @@ -2468,7 +1337,7 @@ fn whileStmt(ptr[Gen] g, ast.Node s) { condBr(g, c, body, end) } label(g, body) - g.loops.push(Loop(cont: cond, brk: end, depth: g.scopes.len, pend: g.pending.len)) + g.loops.push(Loop(cont: cond, brk: end, depth: g.scopes.len)) breaks := countBreaks(s.kids[1]) block(g, s.kids[1], true) g.loops.pop() @@ -2498,7 +1367,7 @@ fn forStmt(ptr[Gen] g, ast.Node s) { from := coerce(g, expr(g, s.kids[0]), T("int"), s.kids[0], "the start of a range").v to := coerce(g, expr(g, s.kids[1]), T("int"), s.kids[1], "the end of a range").v pushScope(g) - i := addVar(g, s, s.name, T("int"), from, true, false) + i := addVar(g, s, s.name, T("int"), from, true) cond := newLabel(g, "for.cond") body := newLabel(g, "for.body") step := newLabel(g, "for.step") @@ -2509,7 +1378,7 @@ fn forStmt(ptr[Gen] g, ast.Node s) { c := op(g, "icmp slt i64 " + iv + ", " + to) condBr(g, c, body, end) label(g, body) - g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len, pend: g.pending.len)) + g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len)) block(g, s.kids[2], true) g.loops.pop() br(g, step) @@ -2559,19 +1428,19 @@ fn eachMap(ptr[Gen] g, ast.Node s, str mp, ast.Type t, bool live) { hash := load(g, "i64", entryField(g, entry, t, 0)) condBr(g, op(g, "icmp eq i64 " + hash + ", 0"), step, body) // a removed entry label(g, body) - g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len, pend: g.pending.len)) + g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len)) pushScope(g) kv := load(g, llty(g, kt), entryField(g, entry, t, 1)) if changes { kv = copyValue(g, kv, kt) } - addVar(g, s, s.name, kt, kv, true, changes) + addVar(g, s, s.name, kt, kv, true) if s.text.len > 0 { vv := load(g, llty(g, vt), entryField(g, entry, t, 2)) if changes { vv = copyValue(g, vv, vt) } - addVar(g, s, s.text, vt, vv, true, changes) + addVar(g, s, s.text, vt, vv, true) } block(g, s.kids[1], true) popScope(g) @@ -2594,7 +1463,7 @@ fn eachStmt(ptr[Gen] g, ast.Node s) { lt = r.pl.ty } else { lt = r.val.ty - listAddr = addVar(g, s, "$list" + str(g.nvars), lt, own(g, r.val), false, true) + listAddr = spill(g, r.val) } if lt.kind == "map" { eachMap(g, s, listAddr, lt, r.isPlace) @@ -2628,14 +1497,14 @@ fn eachStmt(ptr[Gen] g, ast.Node s) { if copyElems { elem = copyValue(g, elem, et) } - g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len, pend: g.pending.len)) + g.loops.push(Loop(cont: step, brk: end, depth: g.scopes.len)) pushScope(g) elemVar := s.name if s.text.len > 0 { // for i, x in list - addVar(g, s, s.name, T("int"), i, true, false) + addVar(g, s, s.name, T("int"), i, true) elemVar = s.text } - addVar(g, s, elemVar, et, elem, true, copyElems) + addVar(g, s, elemVar, et, elem, true) block(g, s.kids[1], true) popScope(g) g.loops.pop() @@ -2665,7 +1534,6 @@ fn returnStmt(ptr[Gen] g, ast.Node s) { checkArgs(g, c, 0, 1, "error") msg := coerce(g, expr(g, c.kids[0]), T("str"), c.kids[0], "the error message") out := own(g, msg) - dropPending(g, 0) unwind(g, 0) emit(g, "ret " + retTy(g, g.cur) + " " + op(g, "insertvalue " + retTy(g, g.cur) + " zeroinitializer, { ptr, i64, i64 } " + out + ", 2")) g.term = true @@ -2675,7 +1543,6 @@ fn returnStmt(ptr[Gen] g, ast.Node s) { if s.kids.len > 0 { fail(g, s.kids[0], "'" + g.cur.name + "' doesn't return a value (it has no '-> type')") } - dropPending(g, 0) unwind(g, 0) if g.cur.fallible { emit(g, "ret " + retTy(g, g.cur) + " { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }") @@ -2688,42 +1555,18 @@ fn returnStmt(ptr[Gen] g, ast.Node s) { if s.kids.len == 0 { fail(g, s, "'" + g.cur.name + "' must return " + ast.show(g.cur.ret)) } - // `return local` moves the variable out instead of copying it - if s.kids[0].kind == "var" { - name := s.kids[0].name - idx := g.scopes.len - while idx > 0 { - idx -= 1 - found := -1 - for vi in 0..g.scopes[idx].vars.len { - if g.scopes[idx].vars[vi].name == name && !(g.deferOn && g.scopes[idx].vars[vi].order >= g.deferLimit) { - found = vi - } - } - if found < 0 { - continue - } - lv := g.scopes[idx].vars[found] - if lv.owned && ast.same(lv.ty, g.cur.ret) { - out := load(g, llty(g, lv.ty), lv.slot) - g.scopes[idx].vars[found].moved = true - dropPending(g, 0) - unwind(g, 0) - g.scopes[idx].vars[found].moved = false - finishReturn(g, out) - return - } - break - } - } v := coerce(g, exprWant(g, s.kids[0], g.cur.ret), g.cur.ret, s.kids[0], "the returned value") - out := own(g, v) - dropPending(g, 0) + out := v.v + // returning a local variable moves it out; anything else borrowed is copied + isLocal := false + if s.kids[0].kind == "var" { + id := lookup(g, s.kids[0].name) + isLocal = id >= 0 && id / 100000 > 0 + } + if !isLocal { + out = own(g, v) + } unwind(g, 0) - finishReturn(g, out) -} - -fn finishReturn(ptr[Gen] g, str out) { if g.cur.fallible { a := op(g, "insertvalue " + retTy(g, g.cur) + " zeroinitializer, i1 true, 0") b := op(g, "insertvalue " + retTy(g, g.cur) + " " + a + ", " + llty(g, g.cur.ret) + " " + out + ", 1") @@ -2813,7 +1656,6 @@ fn mapIndex(ptr[Gen] g, ast.Node e, Ref obj, ast.Type t, bool write) -> Ref { fail(g, e, "this is a temporary map, it can't be changed") } entry := mapSlot(g, obj.pl.addr, t, key, true, e) - release(g, key) return Ref(isPlace: true, pl: Place(addr: entryField(g, entry, t, 2), ty: vt)) } mp := "" @@ -2835,7 +1677,6 @@ fn mapIndex(ptr[Gen] g, ast.Node e, Ref obj, ast.Type t, bool write) -> Ref { emit(g, "unreachable") g.term = true label(g, found) - release(g, key) va := entryField(g, entryAt(g, mp, t, i), t, 2) if obj.isPlace { return Ref(isPlace: true, pl: Place(addr: va, ty: vt)) @@ -2845,7 +1686,6 @@ fn mapIndex(ptr[Gen] g, ast.Node e, Ref obj, ast.Type t, bool write) -> Ref { if owning(g, vt) && obj.val.fresh { out = Val(v: copyValue(g, v, vt), ty: vt, fresh: true) } - release(g, obj.val) // from a temporary map: take the value, drop the rest return Ref(isPlace: false, val: out) } @@ -2890,30 +1730,19 @@ fn mapLit(ptr[Gen] g, ast.Node e, ast.Type want) -> Val { } mp := alloca(g, llty(g, t)) store(g, llty(g, t), "zeroinitializer", mp) - outer := g.pending.len - holdAddr(g, mp, t) // the entries so far, if a later one leaves early for i in 0..e.kids.len / 2 { - mark := g.pending.len k := k0 - if !(i == 0 && first) { - k = exprWant(g, e.kids[2 * i], t.elem[0]) - } - k = coerce(g, k, t.elem[0], e.kids[2 * i], "every key of this map") - hold(g, k) v := v0 if !(i == 0 && first) { + k = exprWant(g, e.kids[2 * i], t.elem[0]) v = exprWant(g, e.kids[2 * i + 1], t.elem[1]) } + k = coerce(g, k, t.elem[0], e.kids[2 * i], "every key of this map") v = coerce(g, v, t.elem[1], e.kids[2 * i + 1], "every value of this map") vv := own(g, v) entry := mapSlot(g, mp, t, k, false, e) - va := entryField(g, entry, t, 2) - dropAt(g, va, t.elem[1]) // a key given twice: the last value wins - store(g, llty(g, t.elem[1]), vv, va) - release(g, k) - heldEnd(g, mark) + store(g, llty(g, t.elem[1]), vv, entryField(g, entry, t, 2)) } - heldEnd(g, outer) return Val(v: load(g, llty(g, t), mp), ty: t, fresh: true) } @@ -2929,7 +1758,6 @@ fn mapMethod(ptr[Gen] g, ast.Node m, str mp, ast.Type t) -> Val { } key := coerce(g, exprWant(g, m.kids[1], kt), kt, m.kids[1], "the key") i := mapFind(g, mp, spill(g, key), t) - release(g, key) was := op(g, "icmp sge i64 " + i + ", 0") if n == "has" { return Val(v: was, ty: T("bool")) @@ -2939,9 +1767,6 @@ fn mapMethod(ptr[Gen] g, ast.Node m, str mp, ast.Type t) -> Val { end := newLabel(g, "remove.end") condBr(g, was, hit, end) label(g, hit) - ent := entryAt(g, mp, t, i) - dropAt(g, entryField(g, ent, t, 1), kt) - dropAt(g, entryField(g, ent, t, 2), vt) emit(g, "call void @finch_map_remove_at(ptr " + mp + ", i64 " + i + ", i64 " + entrySize(g, t) + ")") br(g, end) label(g, end) @@ -2969,20 +1794,6 @@ fn mapMethod(ptr[Gen] g, ast.Node m, str mp, ast.Type t) -> Val { } if n == "clear" { checkArgs(g, m, 1, 0, n) - if owning(g, kt) || owning(g, vt) { - used := load(g, "i64", op(g, "getelementptr inbounds " + llty(g, t) + ", ptr " + mp + ", i32 0, i32 2")) - l := loopStart(g, used) - e := entryAt(g, mp, t, l[3]) - live := newLabel(g, "entry.live") - next := newLabel(g, "entry.next") - condBr(g, op(g, "icmp ne i64 " + load(g, "i64", entryField(g, e, t, 0)) + ", 0"), live, next) - label(g, live) - dropAt(g, entryField(g, e, t, 1), kt) - dropAt(g, entryField(g, e, t, 2), vt) - br(g, next) - label(g, next) - loopEnd(g, l) - } emit(g, "call void @finch_map_clear(ptr " + mp + ")") return Val(ty: T("void")) } @@ -3021,202 +1832,6 @@ fn mapMethod(ptr[Gen] g, ast.Node m, str mp, ast.Type t) -> Val { return Val() } -// ---------- match ---------- - -// A pattern as a value of the subject's type. For an enum, a bare variant name (Red) works too. -fn patternValue(ptr[Gen] g, ast.Node pat, ast.Type st) -> Val { - if st.kind == "enum" && pat.kind == "var" && lookup(g, pat.name) < 0 { - ed := g.enums[findEnum(g, st.module, st.name)] - k := ed.variants.find(pat.name) - if k < 0 { - fail(g, pat, "'" + pat.name + "' is not a variant of " + ed.name + " (it has: " + ed.variants.join(", ") + ")") - } - return Val(v: str(ed.values[k]), ty: st) - } - return coerce(g, exprWant(g, pat, st), st, pat, "this pattern") -} - -// match value { A, B -> ... C -> ... else -> ... }, as a statement or (asValue) as an expression. -// The patterns are tried in order; for an enum the arms have to cover every variant, or end with else. -fn matchGen(ptr[Gen] g, ast.Node e, bool asValue) -> Val { - subj := expr(g, e.kids[0]) - st := subj.ty - if st.kind == "void" || st.kind == "null" { - fail(g, e.kids[0], "there is nothing to match here") - } - mark := g.pending.len - hold(g, subj) // a temporary subject lives through the arms - si := -1 - tagv := "" - if st.kind == "struct" { - si = findSum(g, st.module, st.name) - if si >= 0 { - tagv = op(g, "extractvalue " + llty(g, st) + " " + subj.v + ", " + str(g.structs[findStruct(g, st.module, st.name)].lidx[0])) - } - } - end := newLabel(g, "match.end") - hasElse := false - reached := false // does any arm go on to the end? - []str covered - []str inVals - []str inLabels - resultTy := T("void") - arms := e.kids.len - 1 - for ai in 0..arms { - arm := e.kids[1 + ai] - if hasElse { - fail(g, arm, "this arm can never be used: 'else' already takes everything that is left") - } - body := newLabel(g, "match.arm") - next := newLabel(g, "match.next") - []ast.Node binds - bindK := -1 - if arm.flag { - hasElse = true - br(g, body) - } else { - pats := arm.kids[0].kids - for pi in 0..pats.len { - hitv := "" - if si >= 0 { - sp := sumPattern(g, pats[pi], si) - if covered.contains(str(sp.k)) { - fail(g, pats[pi], "this variant is already handled by an earlier arm") - } - covered.push(str(sp.k)) - if sp.binds.len > 0 { - if pats.len > 1 { - fail(g, pats[pi], "an arm with several variants can't name their values") - } - binds = sp.binds - bindK = sp.k - } - hitv = op(g, "icmp eq i64 " + tagv + ", " + str(sp.k)) - } else { - pv := patternValue(g, pats[pi], st) - if covered.contains(pv.v) && st.kind == "enum" { - fail(g, pats[pi], "this variant is already handled by an earlier arm") - } - covered.push(pv.v) - hitv = compare(g, "==", subj, pv, pats[pi]).v - } - if pi == pats.len - 1 { - condBr(g, hitv, body, next) - } else { - more := newLabel(g, "match.or") - condBr(g, hitv, body, more) - label(g, more) - } - } - } - label(g, body) - scoped := binds.len > 0 - if scoped { - pushScope(g) - sx := g.structs[findStruct(g, st.module, st.name)] - for j in 0..binds.len { - if binds[j].name == "_" { - continue - } - fi := g.sums[si].firsts[bindK] + j - ft := sx.ftypes[fi] - fv := op(g, "extractvalue " + llty(g, st) + " " + subj.v + ", " + str(sx.lidx[fi])) - addVar(g, binds[j], binds[j].name, ft, copyValue(g, fv, ft), true, true) - } - } - node := arm.kids[1] - if asValue { - v := expr(g, node) - if ai == 0 || resultTy.kind == "void" { - if v.ty.kind == "void" || v.ty.kind == "null" { - fail(g, node, "an arm of a match that gives a value has to give one") - } - resultTy = v.ty - } - v = coerce(g, v, resultTy, node, "this arm (the arms of a match have to give the same type)") - out := own(g, v) - if scoped { - popScope(g) - } - from := newLabel(g, "match.from") - br(g, from) - label(g, from) - inVals.push(out) - inLabels.push(from) - br(g, end) - reached = true - } else { - if node.kind == "block" { - block(g, node, true) - } else { - stmt(g, node) - } - if !g.term { - reached = true - } - if scoped { - popScope(g) - } - br(g, end) - } - if !arm.flag { - label(g, next) - } - } - if !hasElse { - if si >= 0 { - []str missing - for k in 0..g.sums[si].variants.len { - if !covered.contains(str(k)) { - missing.push(g.sums[si].variants[k]) - } - } - if missing.len > 0 { - fail(g, e, "this match doesn't handle " + missing.join(", ") + " (add them, or an 'else' arm)") - } - } else if st.kind == "enum" { - ed := g.enums[findEnum(g, st.module, st.name)] - []str missing - for k in 0..ed.variants.len { - if !covered.contains(str(ed.values[k])) { - missing.push(ed.variants[k]) - } - } - if missing.len > 0 { - fail(g, e, "this match doesn't handle " + missing.join(", ") + " (add them, or an 'else' arm)") - } - } else { - fail(g, e, "a match on " + ast.show(st) + " needs an 'else' arm for everything that is not listed") - } - // every variant is handled; only a number that was never a variant gets here - panicIf(g, "true", "no arm of this match fits the value", e) - emit(g, "unreachable") - g.term = true - } - heldEnd(g, mark) - label(g, end) - if !reached { - emit(g, "unreachable") - g.term = true - return Val(ty: T("void")) - } - if asValue { - out := Val(v: op(g, "phi " + llty(g, resultTy) + " " + phiList(inVals, inLabels)), ty: resultTy, fresh: owning(g, resultTy)) - release(g, subj) - return out - } - release(g, subj) - return Val(ty: T("void")) -} - -fn phiList([]str vals, []str labels) -> str { - []str parts - for i in 0..vals.len { - parts.push("[ " + vals[i] + ", %" + labels[i] + " ]") - } - return parts.join(", ") -} - // ---------- errors as values ---------- struct Fallible { @@ -3264,7 +1879,6 @@ fn tryExpr(ptr[Gen] g, ast.Node e) -> Val { ok := newLabel(g, "try.ok") condBr(g, f.failed, bad, ok) label(g, bad) - dropPending(g, 0) // what the expressions around this `try` were holding unwind(g, 0) emit(g, "ret " + retTy(g, g.cur) + " " + op(g, "insertvalue " + retTy(g, g.cur) + " zeroinitializer, { ptr, i64, i64 } " + f.msg + ", 2")) g.term = true @@ -3282,7 +1896,7 @@ fn orElse(ptr[Gen] g, ast.Node e, bool discard) -> Val { label(g, bad) if e.flag { pushScope(g) - addVar(g, e, "err", T("str"), f.msg, true, true) + addVar(g, e, "err", T("str"), f.msg, true) block(g, e.kids[1], true) left := g.term popScope(g) @@ -3293,7 +1907,6 @@ fn orElse(ptr[Gen] g, ast.Node e, bool discard) -> Val { join := newLabel(g, "or.end") br(g, join) label(g, ok) - release(g, v) // read_file(p) or { ... } as a statement: the unused value goes br(g, join) label(g, join) return Val(ty: T("void")) @@ -3306,7 +1919,7 @@ fn orElse(ptr[Gen] g, ast.Node e, bool discard) -> Val { fail(g, e.kids[1], "this call gives back no value, so there is nothing to replace; handle the failure with or { ... }") } pushScope(g) - addVar(g, e, "err", T("str"), f.msg, true, true) + addVar(g, e, "err", T("str"), f.msg, true) fb := coerce(g, exprWant(g, e.kids[1], v.ty), v.ty, e.kids[1], "the value after 'or'") fv := own(g, fb) popScope(g) @@ -3373,9 +1986,6 @@ fn expr(ptr[Gen] g, ast.Node e) -> Val { } return Val(v: load(g, llty(g, r.pl.ty), r.pl.addr), ty: r.pl.ty) } - if k == "match" { - return matchGen(g, e, true) - } if k == "try" { return tryExpr(g, e) } @@ -3443,18 +2053,6 @@ fn badOperands(ptr[Gen] g, str o, Val l, Val r, ast.Node at) { if o == "+" && (l.ty.kind == "str" || r.ty.kind == "str") { msg = msg + " (turn the other side into text first: str(...))" } - if (o == "&" || o == "|") && l.ty.kind == "bool" { - if o == "&" { - msg = msg + " (for true/false use '&&')" - } else { - msg = msg + " (for true/false use '||')" - } - } else if o == "&" || o == "|" || o == "^" || o == "<<" || o == ">>" { - msg = msg + " (bit operators work on whole numbers only)" - } - if (l.ty.kind == "struct" || l.ty.kind == "array") && (o == "==" || o == "!=") { - msg = msg + " (compare the parts one by one)" - } fail(g, at, msg) } @@ -3511,8 +2109,6 @@ fn arith(ptr[Gen] g, str o, Val l, Val r, ast.Node at) -> Val { if o == "+" && l.ty.kind == "str" && r.ty.kind == "str" { out := alloca(g, "{ ptr, i64, i64 }") emit(g, "call void @finch_str_concat(ptr " + out + ", ptr " + spill(g, l) + ", ptr " + spill(g, r) + ")") - release(g, l) - release(g, r) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if !unify(g, addr(l), addr(r)) { @@ -3555,9 +2151,6 @@ fn arith(ptr[Gen] g, str o, Val l, Val r, ast.Node at) -> Val { fn compare(ptr[Gen] g, str o, Val l, Val r, ast.Node at) -> Val { eq := o == "==" || o == "!=" if l.ty.kind == "ptr" || r.ty.kind == "ptr" || l.ty.kind == "null" || r.ty.kind == "null" { - if l.ty.kind == "str" || r.ty.kind == "str" { - fail(g, at, "a str is never null; to check for empty text use s.len == 0") - } if !eq { badOperands(g, o, l, r, at) } @@ -3574,16 +2167,10 @@ fn compare(ptr[Gen] g, str o, Val l, Val r, ast.Node at) -> Val { if o == "!=" { pred = "eq" } - res := op(g, "icmp " + pred + " i32 " + c + ", 0") - release(g, l) - release(g, r) - return Val(v: res, ty: T("bool")) + return Val(v: op(g, "icmp " + pred + " i32 " + c + ", 0"), ty: T("bool")) } c := op(g, "call i64 @finch_str_cmp(ptr " + spill(g, l) + ", ptr " + spill(g, r) + ")") - res := op(g, "icmp " + intPred(o, true) + " i64 " + c + ", 0") - release(g, l) - release(g, r) - return Val(v: res, ty: T("bool")) + return Val(v: op(g, "icmp " + intPred(o, true) + " i64 " + c + ", 0"), ty: T("bool")) } if !unify(g, addr(l), addr(r)) { badOperands(g, o, l, r, at) @@ -3594,16 +2181,6 @@ fn compare(ptr[Gen] g, str o, Val l, Val r, ast.Node at) -> Val { preds := ["oeq", "une", "olt", "ole", "ogt", "oge"] return Val(v: op(g, "fcmp " + preds[ops.find(o)] + " " + llty(g, l.ty) + " " + l.v + ", " + r.v), ty: T("bool")) } - if k == "enum" { - if !eq { - fail(g, at, "enums can only be compared with == and != (to go through them in order, give the variants numbers and use int(...))") - } - pred := "eq" - if o == "!=" { - pred = "ne" - } - return Val(v: op(g, "icmp " + pred + " i32 " + l.v + ", " + r.v), ty: T("bool")) - } if k == "bool" && !eq { badOperands(g, o, l, r, at) } @@ -3650,10 +2227,7 @@ fn binary(ptr[Gen] g, ast.Node e) -> Val { return Val(v: op(g, "phi i1 [ " + short + ", %" + from + " ], [ " + r + ", %" + rhsEnd + " ]"), ty: T("bool")) } l := expr(g, e.kids[0]) - mark := g.pending.len - hold(g, l) // while the right side is computed (it may `try`) r := expr(g, e.kids[1]) - heldEnd(g, mark) if o == "==" || o == "!=" || o == "<" || o == "<=" || o == ">" || o == ">=" { return compare(g, o, l, r, e) } @@ -3668,7 +2242,6 @@ fn arrayLit(ptr[Gen] g, ast.Node a, ast.Type want) -> Val { fail(g, a, "an empty [] needs a type, like: []int nums = []") } []str vals - mark := g.pending.len for k in a.kids { v := Val() if et.kind == "void" { @@ -3679,9 +2252,7 @@ fn arrayLit(ptr[Gen] g, ast.Node a, ast.Type want) -> Val { } v = coerce(g, v, et, k, "every element of this array") vals.push(own(g, v)) - hold(g, Val(v: vals[vals.len - 1], ty: et, fresh: true)) // while the next elements are computed } - heldEnd(g, mark) at := ast.arrayOf(et) n := str(vals.len) data := "null" @@ -3715,31 +2286,6 @@ fn place(ptr[Gen] g, ast.Node e, bool write) -> Place { fn ref(ptr[Gen] g, ast.Node e, bool write) -> Ref { if e.kind == "var" { id := lookup(g, e.name) - if id < 0 && g.ci.consts.has(e.name) { - c := g.ci.consts[e.name] - if c.isFloat { - return Ref(isPlace: false, val: Val(v: llFloat(c.text), ty: T("float"), lit: true)) - } - return Ref(isPlace: false, val: Val(v: str(c.i), ty: T("int"), lit: true)) - } - // C's standard streams are macros on some systems; the runtime knows them everywhere - if id < 0 && !g.ci.globals.has(e.name) && g.ci.fns.has("fprintf") && (e.name == "stdin" || e.name == "stdout" || e.name == "stderr") { - which := "2" - if e.name == "stdin" { - which = "0" - } else if e.name == "stdout" { - which = "1" - } - return Ref(isPlace: false, val: Val(v: op(g, "call ptr @finch_std_stream(i32 " + which + ")"), ty: T("ptr"))) - } - if id < 0 && g.ci.globals.has(e.name) { - gt := resolve(g, g.ci.globals[e.name], e) - if !g.cdone.contains("g:" + e.name) { - g.cdone.push("g:" + e.name) - g.head.push("@" + e.name + " = external global " + llty(g, gt)) - } - return Ref(isPlace: true, pl: Place(addr: "@" + e.name, ty: gt)) - } if id < 0 { if imports(g, e.name) { fail(g, e, "'" + e.name + "' is a module; use something from it, like " + e.name + ".name(...)") @@ -3747,7 +2293,6 @@ fn ref(ptr[Gen] g, ast.Node e, bool write) -> Ref { fail(g, e, "there is no variable named '" + e.name + "'") } v := varAt(g, id) - noteRef(g, e, e.col, e.name.len, "```finch\n" + ast.show(v.ty) + " " + e.name + "\n```", v.dpath, v.dline, v.dcol) return Ref(isPlace: true, pl: Place(addr: v.slot, ty: v.ty)) } if e.kind == "member" { @@ -3759,144 +2304,7 @@ fn ref(ptr[Gen] g, ast.Node e, bool write) -> Ref { return Ref(isPlace: false, val: expr(g, e)) } -// A float as C wrote it, in the form LLVM's text format wants: 1e10 -> 1.0e10, .5 -> 0.5 -fn llFloat(str text) -> str { - s := text - if s.starts_with(".") { - s = "0" + s - } - if !s.contains(".") { - e := s.find("e") - if e < 0 { - e = s.find("E") - } - if e < 0 { - return s + ".0" - } - return s.sub(0, e) + ".0" + s.sub(e, s.len) - } - return s -} - -// Which enum does `m.kids[0]` name, if it names one? Color, or shapes.Color. -1 if neither. -fn enumNamed(ptr[Gen] g, ast.Node n) -> int { - if n.kind == "var" && lookup(g, n.name) < 0 { - return findEnum(g, g.module, n.name) - } - if n.kind == "member" && n.kids[0].kind == "var" && lookup(g, n.kids[0].name) < 0 && imports(g, n.kids[0].name) { - return findEnum(g, n.kids[0].name, n.name) - } - return -1 -} - -// Which payload enum does `n` name? Shape, or shapes.Shape. -1 if neither. -fn sumNamed(ptr[Gen] g, ast.Node n) -> int { - if n.kind == "var" && lookup(g, n.name) < 0 { - return findSum(g, g.module, n.name) - } - if n.kind == "member" && n.kids[0].kind == "var" && lookup(g, n.kids[0].name) < 0 && imports(g, n.kids[0].name) { - return findSum(g, n.kids[0].name, n.name) - } - return -1 -} - -fn sumVariant(ptr[Gen] g, int si, str name, ast.Node at) -> int { - sd := g.sums[si] - k := sd.variants.find(name) - if k < 0 { - fail(g, at, "the enum " + sd.name + " has no variant '" + name + "' (it has: " + sd.variants.join(", ") + ")") - } - return k -} - -// Shape.Circle(2.0), or Shape.Point -fn sumMake(ptr[Gen] g, int si, str vname, []ast.Node args, ast.Node at) -> Val { - sd := g.sums[si] - k := sumVariant(g, si, vname, at) - if args.len != sd.counts[k] { - if sd.counts[k] == 0 { - fail(g, at, vname + " holds nothing: write " + sd.name + "." + vname) - } - fail(g, at, vname + " holds " + str(sd.counts[k]) + " value(s), but got " + str(args.len) + ": " + sd.name + "." + vname + "(...)") - } - []ast.Node all - []str names - all.push(ast.Node(kind: "int", text: str(k), line: at.line, col: at.col, file: at.file)) - names.push("tag") - for j in 0..args.len { - all.push(args[j]) - names.push(vname + "_" + str(j)) - } - noteRef(g, at, at.col, vname.len, "```finch\n" + sd.name + "." + vname + "\n```", "", 0, 0) - return construct(g, findStruct(g, sd.module, sd.name), all, names, at) -} - -// the variant a match pattern names, and the names it binds: Circle(r) Shape.Rect(w, h) Point -fn sumPattern(ptr[Gen] g, ast.Node pat, int si) -> SumPat { - sd := g.sums[si] - name := "" - []ast.Node binds - if pat.kind == "var" && lookup(g, pat.name) < 0 { - name = pat.name - } else if pat.kind == "call" { - name = pat.name - binds = pat.kids - } else if pat.kind == "member" && sumNamed(g, pat.kids[0]) == si { - name = pat.name - } else if pat.kind == "method" && sumNamed(g, pat.kids[0]) == si { - name = pat.name - for q in 1..pat.kids.len { - binds.push(pat.kids[q]) - } - } else { - fail(g, pat, "this pattern is not a variant of " + sd.name + " (it has: " + sd.variants.join(", ") + ")") - } - k := sumVariant(g, si, name, pat) - if binds.len != sd.counts[k] { - if sd.counts[k] == 0 { - fail(g, pat, name + " holds nothing: write just " + name) - } - fail(g, pat, name + " holds " + str(sd.counts[k]) + " value(s): name them, like " + name + "(x), or use _ to ignore one") - } - for b in binds { - if b.kind != "var" { - fail(g, b, "write a name to hold the value (or _ to ignore it)") - } - } - return SumPat(k: k, binds: binds) -} - -// Color.Red -fn enumValue(ptr[Gen] g, ast.Node m, int ei) -> Val { - ed := g.enums[ei] - k := ed.variants.find(m.name) - if k < 0 { - fail(g, m, "the enum " + ed.name + " has no variant '" + m.name + "' (it has: " + ed.variants.join(", ") + ")") - } - noteRef(g, m, m.col + 1, m.name.len, "```finch\n" + ed.name + "." + m.name + " = " + str(ed.values[k]) + "\n```", "", 0, 0) - return Val(v: str(ed.values[k]), ty: ast.Type(kind: "enum", name: ed.name, module: ed.module)) -} - fn member(ptr[Gen] g, ast.Node m, bool write) -> Ref { - sm := sumNamed(g, m.kids[0]) - if sm >= 0 { - if write { - fail(g, m, "a variant of an enum can't be changed") - } - k := sumVariant(g, sm, m.name, m) - if g.sums[sm].counts[k] > 0 { - fail(g, m, m.name + " holds " + str(g.sums[sm].counts[k]) + " value(s): " + g.sums[sm].name + "." + m.name + "(...)") - } - []ast.Node none - return Ref(isPlace: false, val: sumMake(g, sm, m.name, none, m)) - } - ei := enumNamed(g, m.kids[0]) - if ei >= 0 { - if write { - fail(g, m, "a variant of an enum can't be changed") - } - return Ref(isPlace: false, val: enumValue(g, m, ei)) - } obj := ref(g, m.kids[0], write) t := obj.val.ty if obj.isPlace { @@ -3925,39 +2333,6 @@ fn member(ptr[Gen] g, ast.Node m, bool write) -> Ref { obj = Ref(isPlace: true, pl: Place(addr: pv, ty: target)) t = target } - if t.kind == "fixed" { - if write { - fail(g, m, "." + m.name + " can't be changed directly") - } - if m.name == "len" { - return Ref(isPlace: false, val: Val(v: str(t.count), ty: T("int"), lit: true)) - } - if m.name != "ptr" { - fail(g, m, "an array has .len and .ptr, not '." + m.name + "'") - } - if !obj.isPlace { - fail(g, m, ".ptr of a temporary value would point to nothing") - } - return Ref(isPlace: false, val: Val(v: obj.pl.addr, ty: ast.ptrTo(t.elem[0]))) - } - if (t.kind == "array" || t.kind == "str") && m.name == "ptr" { - // the address of the first element, for C; a literal lives as long as the program, other temporaries do not - if write { - fail(g, m, ".ptr can't be changed directly") - } - // a constant (a text literal) lives as long as the program; a computed value is freed right after - if !obj.isPlace && obj.val.fresh && obj.val.v.starts_with("%") { - fail(g, m, ".ptr of a temporary value would point to freed memory") - } - v := obj.val.v - if obj.isPlace { - v = load(g, llty(g, t), obj.pl.addr) - } - if t.kind == "str" { - return Ref(isPlace: false, val: Val(v: cstr(g, v), ty: ast.ptrTo(T("char")))) - } - return Ref(isPlace: false, val: Val(v: op(g, "extractvalue { ptr, i64, i64 } " + v + ", 0"), ty: ast.ptrTo(t.elem[0]))) - } if t.kind == "array" || t.kind == "str" || t.kind == "map" { if m.name != "len" { fail(g, m, "an array, map or str has .len, not '." + m.name + "'") @@ -3969,9 +2344,7 @@ fn member(ptr[Gen] g, ast.Node m, bool write) -> Ref { lp := op(g, "getelementptr inbounds " + llty(g, t) + ", ptr " + obj.pl.addr + ", i32 0, i32 1") return Ref(isPlace: false, val: Val(v: load(g, "i64", lp), ty: T("int"))) } - n := op(g, "extractvalue " + llty(g, t) + " " + obj.val.v + ", 1") - release(g, obj.val) - return Ref(isPlace: false, val: Val(v: n, ty: T("int"))) + return Ref(isPlace: false, val: Val(v: op(g, "extractvalue " + llty(g, t) + " " + obj.val.v + ", 1"), ty: T("int"))) } if t.kind != "struct" { fail(g, m, ast.show(t) + " has no fields (no '." + m.name + "')") @@ -3982,32 +2355,20 @@ fn member(ptr[Gen] g, ast.Node m, bool write) -> Ref { fail(g, m, "the struct " + ast.show(t) + " has no field '" + m.name + "' (it has: " + sd.fnames.join(", ") + ")") } ft := sd.ftypes[k] - noteRef(g, m, m.col + 1, m.name.len, "```finch\n" + ast.show(ft) + " " + m.name + "\n```", "", 0, 0) if obj.isPlace { - fp := op(g, "getelementptr inbounds " + llty(g, t) + ", ptr " + obj.pl.addr + ", i32 0, i32 " + str(sd.lidx[k])) + fp := op(g, "getelementptr inbounds " + llty(g, t) + ", ptr " + obj.pl.addr + ", i32 0, i32 " + str(k)) return Ref(isPlace: true, pl: Place(addr: fp, ty: ft)) } - fv := op(g, "extractvalue " + llty(g, t) + " " + obj.val.v + ", " + str(sd.lidx[k])) + fv := op(g, "extractvalue " + llty(g, t) + " " + obj.val.v + ", " + str(k)) out := Val(v: fv, ty: ft) if owning(g, ft) && obj.val.fresh { out = Val(v: copyValue(g, fv, ft), ty: ft, fresh: true) } - release(g, obj.val) // a field of a temporary struct: take it, then drop the rest return Ref(isPlace: false, val: out) } fn index(ptr[Gen] g, ast.Node e, bool write) -> Ref { obj := ref(g, e.kids[0], write) - mark := g.pending.len - if !obj.isPlace { - hold(g, obj.val) // while the index is computed - } - r := indexOf(g, e, obj, write) - heldEnd(g, mark) - return r -} - -fn indexOf(ptr[Gen] g, ast.Node e, Ref obj, bool write) -> Ref { t := obj.val.ty if obj.isPlace { t = obj.pl.ty @@ -4016,17 +2377,6 @@ fn indexOf(ptr[Gen] g, ast.Node e, Ref obj, bool write) -> Ref { return mapIndex(g, e, obj, t, write) } i := coerce(g, expr(g, e.kids[1]), T("int"), e.kids[1], "an index").v - if t.kind == "fixed" { - base := "" - if obj.isPlace { - base = obj.pl.addr - } else { - base = spill(g, obj.val) - } - boundsCheck(g, i, str(t.count), e) - ep := op(g, "getelementptr inbounds " + llty(g, t) + ", ptr " + base + ", i64 0, i64 " + i) - return Ref(isPlace: true, pl: Place(addr: ep, ty: t.elem[0])) - } if t.kind == "ptr" { if t.elem.len == 0 { fail(g, e, "this ptr has no type, so Finch doesn't know what's inside") @@ -4067,7 +2417,6 @@ fn indexOf(ptr[Gen] g, ast.Node e, Ref obj, bool write) -> Ref { if owning(g, et) && obj.val.fresh { out = Val(v: copyValue(g, ev, et), ty: et, fresh: true) } - release(g, obj.val) return Ref(isPlace: false, val: out) } @@ -4102,7 +2451,7 @@ fn numType(str n) -> str { if n == "f64" { return "float" } - names := ["int", "float", "char", "bool", "i8", "i16", "i32", "u8", "u16", "u32", "u64", "f32", "ptr"] + names := ["int", "float", "char", "bool", "i8", "i16", "i32", "u8", "u16", "u32", "u64", "f32"] if names.contains(n) { return n } @@ -4128,7 +2477,6 @@ fn convert(ptr[Gen] g, ast.Node c, ast.Type to) -> Val { ok := op(g, "call i32 @finch_str_try_int(ptr " + spill(g, v) + ", ptr " + out + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) - release(g, v) return Val(v: intCast(g, load(g, "i64", out), T("int"), to), ty: to) } out := alloca(g, "double") @@ -4136,23 +2484,17 @@ fn convert(ptr[Gen] g, ast.Node c, ast.Type to) -> Val { ok := op(g, "call i32 @finch_str_try_float(ptr " + spill(g, v) + ", ptr " + out + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) - release(g, v) return Val(v: floatCast(g, load(g, "double", out), T("float"), to), ty: to) } if from.kind == "str" && isNumber(to) { file := strGlobal(g, g.files[c.file]) if isInt(to) { r := op(g, "call i64 @finch_str_to_int(ptr " + spill(g, v) + ", ptr " + file + ", i64 " + str(c.line) + ")") - release(g, v) return Val(v: intCast(g, r, T("int"), to), ty: to) } r := op(g, "call double @finch_str_to_float(ptr " + spill(g, v) + ", ptr " + file + ", i64 " + str(c.line) + ")") - release(g, v) return Val(v: floatCast(g, r, T("float"), to), ty: to) } - if isInt(to) && from.kind == "enum" { - return Val(v: intCast(g, v.v, T("i32"), to), ty: to) - } if isInt(to) || to.kind == "char" { if isInt(from) || from.kind == "char" { return Val(v: intCast(g, v.v, from, to), ty: to) @@ -4179,665 +2521,12 @@ fn convert(ptr[Gen] g, ast.Node c, ast.Type to) -> Val { if to.kind == "bool" && isInt(from) { return Val(v: op(g, "icmp ne " + llty(g, from) + " " + v.v + ", 0"), ty: to) } - if to.kind == "ptr" && (from.kind == "ptr" || from.kind == "null") { - return Val(v: v.v, ty: to) - } - if to.kind == "ptr" && isInt(from) { - return Val(v: op(g, "inttoptr i64 " + intCast(g, v.v, from, T("u64")) + " to ptr"), ty: to) // an address or offset for C - } - if isInt(to) && from.kind == "ptr" { - return Val(v: op(g, "ptrtoint ptr " + v.v + " to " + llty(g, to)), ty: to) - } - if to.kind == "ptr" && from.kind == "str" { - fail(g, c.kids[0], "use .ptr to get a str's address (it is only valid while the str lives)") - } fail(g, c.kids[0], "can't turn " + ast.show(from) + " into " + c.name) return v } -// ---------- the C calling convention for structs passed by value (System V x86-64) ---------- -// -// A struct of up to 16 bytes travels in registers, one INTEGER or SSE class per eightbyte; -// bigger ones are copied to the stack (byval) and returned through a hidden pointer (sret). -// Other targets (Windows, ARM64) have their own rules and are not done here yet. - -struct Abi { - str kind // "direct", "expand" (in registers: `parts`) or "memory" - []str parts - str coerced - int align -} - -struct Leaf { - int offset - int size - bool isFloat - bool isDouble -} - -struct Plan { - Abi ret - []Abi params - str retLL - bool sret -} - -fn sizeBytes(ptr[Gen] g, ast.Type t) -> int { - if t.kind == "struct" { - return g.structs[findStruct(g, t.module, t.name)].csize - } - if t.kind == "fixed" { - return t.count * sizeBytes(g, t.elem[0]) - } - if t.kind == "ptr" || t.kind == "str" { - return 8 - } - if t.kind == "float" { - return 8 - } - if t.kind == "f32" { - return 4 - } - if t.kind == "bool" { - return 1 - } - return bitsOf(t) / 8 -} - -// A value flattened into its scalar pieces, with byte offsets. -fn leavesOf(ptr[Gen] g, ast.Type t, int base) -> []Leaf { - []Leaf out - if t.kind == "struct" { - sd := g.structs[findStruct(g, t.module, t.name)] - for k in 0..sd.ftypes.len { - for l in leavesOf(g, sd.ftypes[k], base + sd.offs[k]) { - out.push(l) - } - } - } else if t.kind == "fixed" { - es := sizeBytes(g, t.elem[0]) - for i in 0..t.count { - for l in leavesOf(g, t.elem[0], base + i * es) { - out.push(l) - } - } - } else { - out.push(Leaf(offset: base, size: sizeBytes(g, t), isFloat: isFloat(t), isDouble: t.kind == "float")) - } - return out -} - -// AAPCS64 (ARM64 Linux, Apple): a group of one to four floats or doubles travels in vector registers; -// anything else up to 16 bytes in general registers; bigger is copied by the caller and passed by address -fn classifyArm64(ptr[Gen] g, ast.Type t, Abi first, int size, int align) -> Abi { - a := first - ls := leavesOf(g, t, 0) - hfa := ls.len > 0 && ls.len <= 4 - for l in ls { - if !l.isFloat || l.isDouble != ls[0].isDouble { - hfa = false - } - } - if hfa { - ft := "float" - if ls[0].isDouble { - ft = "double" - } - a.kind = "expand" - a.parts.push("[" + str(ls.len) + " x " + ft + "]") - []str elems - for l in ls { - elems.push(ft) - } - a.coerced = "{ " + elems.join(", ") + " }" - return a - } - if size > 16 { - a.kind = "indirect" - return a - } - a.kind = "expand" - if align >= 16 { - a.parts.push("i128") - a.coerced = "i128" - } else if size <= 8 { - a.parts.push("i64") - a.coerced = "i" + str(size * 8) - } else { - a.parts.push("[2 x i64]") - a.coerced = "[2 x i64]" - } - return a -} - -fn classify(ptr[Gen] g, ast.Type t) -> Abi { - a := Abi(kind: "direct") - if t.kind != "struct" { - return a - } - sd := g.structs[findStruct(g, t.module, t.name)] - size := sd.csize - a.align = 8 - if sd.calign > 8 { - a.align = sd.calign - } - if g.tg.arm64 { - return classifyArm64(g, t, a, size, sd.calign) - } - if g.tg.windows { - // Microsoft x64: 1, 2, 4 or 8 bytes travel as one integer (even if they hold floats); - // anything else is copied by the caller and passed by address - if size == 1 || size == 2 || size == 4 || size == 8 { - a.kind = "expand" - a.parts.push("i" + str(size * 8)) - a.coerced = a.parts[0] - } else { - a.kind = "indirect" - } - return a - } - if size > 16 || size == 0 { - a.kind = "memory" - return a - } - ls := leavesOf(g, t, 0) - n := (size + 7) / 8 - []int cls = [0, 0] // 0 nothing, 1 INTEGER, 2 SSE - []bool dbl = [false, false] - for l in ls { - m := l.size - if m > 8 { - m = 8 - } - if l.offset % m != 0 { // a misaligned field (a packed struct): memory - a.kind = "memory" - return a - } - k := l.offset / 8 - if cls[k] == 1 || !l.isFloat { - cls[k] = 1 - } else { - cls[k] = 2 - } - if l.isDouble { - dbl[k] = true - } - } - a.kind = "expand" - for k in 0..n { - bytes := size - 8 * k - if bytes > 8 { - bytes = 8 - } - if cls[k] == 2 { - if dbl[k] { - a.parts.push("double") - } else if bytes > 4 { - a.parts.push("<2 x float>") - } else { - a.parts.push("float") - } - } else { - a.parts.push("i" + str(bytes * 8)) - } - } - if a.parts.len == 1 { - a.coerced = a.parts[0] - } else { - a.coerced = "{ " + a.parts.join(", ") + " }" - } - return a -} - -// Decide how every parameter travels, counting the 6 integer and 8 SSE argument registers. -fn makePlan(ptr[Gen] g, ast.Type ret, []ast.Type params) -> Plan { - pl := Plan() - intRegs := 6 - sseRegs := 8 - pl.ret = classify(g, ret) - pl.retLL = "void" - if ret.kind != "void" { - pl.retLL = cLL(g, ret) - } - if pl.ret.kind == "indirect" { - pl.ret.kind = "memory" // returned through a hidden pointer - } - if pl.ret.kind == "memory" { - pl.sret = true - pl.retLL = "void" - intRegs -= 1 - } else if pl.ret.kind == "expand" { - pl.retLL = pl.ret.coerced - } - for t in params { - a := classify(g, t) - if a.kind == "expand" { - ni := 0 - ns := 0 - for p in a.parts { - if p.starts_with("i") { - ni += 1 - } else { - ns += 1 - } - } - // only System V counts registers here; elsewhere the backend places each part - if g.tg.windows || g.tg.arm64 || (ni <= intRegs && ns <= sseRegs) { - intRegs -= ni - sseRegs -= ns - } else { - a.kind = "memory" // out of registers: the whole struct goes on the stack - } - } else if a.kind == "direct" { - if isFloat(t) { - sseRegs -= 1 - } else { - intRegs -= 1 - } - } - pl.params.push(a) - } - return pl -} - -fn checkByValue(ptr[Gen] g, ast.Node at, str fname, ast.Type t, str what) { - if t.kind != "struct" { - return - } - sd := g.structs[findStruct(g, t.module, t.name)] - if !sd.isC { - fail(g, at, "the C function '" + fname + "' " + what + " the Finch struct " + ast.show(t) + ", which C can't take") - } - if sd.unsupported.len > 0 { - fail(g, at, "the C function '" + fname + "' " + what + " the struct " + ast.show(t) + " by value, which Finch can't do yet: it " + sd.unsupported) - } -} - -// export fn: what a C program can be given, and call -fn cPlain(ast.Type t) -> bool { - return isNumber(t) || t.kind == "bool" || t.kind == "char" || t.kind == "ptr" -} - -fn checkExport(ptr[Gen] g, ast.Node f, FnSig sig) { - if f.recv.len > 0 { - fail(g, f, "methods can't be exported (export a plain fn that calls it)") - } - if f.fallible { - fail(g, f, "an export fn can't fail (C has no errors as values): handle them inside it") - } - if f.tparams.len > 0 { - fail(g, f, "an export fn can't be generic") - } - for k in 0..sig.params.len { - if !cPlain(sig.params[k]) { - fail(g, f.kids[k], "an export fn takes numbers, bool, char and pointers only (this is " + ast.show(sig.params[k]) + "; pass text as ptr[char] and make it a str inside)") - } - } - if sig.ret.kind != "void" && !cPlain(sig.ret) { - fail(g, f, "an export fn returns nothing, a number, bool, char or a pointer (not " + ast.show(sig.ret) + ")") - } - for other in g.sigs { - if other.exported && other.name == sig.name { - fail(g, f, "'" + sig.name + "' is exported twice (from two modules)") - } - } -} - -// export fn name(...): a C function called `name` that calls the Finch one (a bool is a C byte) -fn exportWrapper(ptr[Gen] g, FnSig sig) -> str { - []str params - []str args - s := beginHelper(g) - for k in 0..sig.params.len { - t := sig.params[k] - if t.kind == "bool" { - params.push("i8 zeroext %e" + str(k)) - args.push("i1 " + op(g, "icmp ne i8 %e" + str(k) + ", 0")) - } else { - params.push(cLL(g, t) + cExt(g, t) + " %e" + str(k)) - args.push(llty(g, t) + " %e" + str(k)) - } - } - text := "call " + llty(g, sig.ret) + " " + sig.ll + "(" + args.join(", ") + ")" - retLL := "void" - retExt := "" - if sig.ret.kind == "void" { - emit(g, text) - emit(g, "ret void") - } else if sig.ret.kind == "bool" { - retLL = "i8" - retExt = " zeroext" - emit(g, "ret i8 " + op(g, "zext i1 " + op(g, text) + " to i8")) - } else { - retLL = llty(g, sig.ret) - retExt = cExt(g, sig.ret) - emit(g, "ret " + retLL + " " + op(g, text)) - } - dll := "" - if g.tg.windows { - dll = " dllexport" - } - endHelper(g, s, "define" + dll + retExt + " " + retLL + " @" + sig.name + "(" + params.join(", ") + ")") - return sig.name -} - -// A C-callable door into a Finch function, for addr(fn): callbacks like qsort's or libclang's. -fn cThunk(ptr[Gen] g, int fi, ast.Node at) -> str { - sig := g.sigs[fi] - name := "@finch.c." + modName(sig.module) + "." + sig.name - if g.cdone.contains("t:" + name) { - return name - } - g.cdone.push("t:" + name) - if sig.recv.len > 0 || sig.fallible { - fail(g, at, "addr(" + sig.name + ") gives C a function pointer, so it can't be a method or a function that can fail") - } - for t in sig.params { - if !(isNumber(t) || t.kind == "bool" || t.kind == "char" || t.kind == "ptr" || (t.kind == "struct" && g.structs[findStruct(g, t.module, t.name)].isC)) { - fail(g, at, "addr(" + sig.name + ") gives C a function pointer, so its parameters must be C types (numbers, ptr, C structs), not " + ast.show(t)) - } - } - if !(isNumber(sig.ret) || sig.ret.kind == "bool" || sig.ret.kind == "char" || sig.ret.kind == "ptr" || sig.ret.kind == "void" || (sig.ret.kind == "struct" && g.structs[findStruct(g, sig.ret.module, sig.ret.name)].isC)) { - fail(g, at, "addr(" + sig.name + "): a function given to C can't return " + ast.show(sig.ret)) - } - pl := makePlan(g, sig.ret, sig.params) - s := beginHelper(g) - []str hdr - ai := 0 - sretName := "" - if pl.sret { - hdr.push("ptr sret(" + llty(g, sig.ret) + ") align 16 %c0") - sretName = "%c0" - ai = 1 - } - []str args - for i in 0..sig.params.len { - t := sig.params[i] - a := pl.params[i] - if a.kind == "memory" { - hdr.push("ptr byval(" + llty(g, t) + ") align " + str(a.align) + " %c" + str(ai)) - args.push(llty(g, t) + " " + load(g, llty(g, t), "%c" + str(ai))) - ai += 1 - } else if a.kind == "indirect" { - hdr.push("ptr %c" + str(ai)) - args.push(llty(g, t) + " " + load(g, llty(g, t), "%c" + str(ai))) - ai += 1 - } else if a.kind == "expand" { - slot := alloca(g, "[32 x i8]") - for k in 0..a.parts.len { - hdr.push(a.parts[k] + " %c" + str(ai)) - store(g, a.parts[k], "%c" + str(ai), op(g, "getelementptr inbounds i8, ptr " + slot + ", i64 " + str(8 * k))) - ai += 1 - } - args.push(llty(g, t) + " " + load(g, llty(g, t), slot)) - } else { - hdr.push(cLL(g, t) + cExt(g, t) + " %c" + str(ai)) - args.push(llty(g, t) + " %c" + str(ai)) - ai += 1 - } - } - text := "call " + llty(g, sig.ret) + " " + sig.ll + "(" + args.join(", ") + ")" - retExt := "" - if sig.ret.kind == "void" { - emit(g, text) - emit(g, "ret void") - } else if pl.sret { - store(g, llty(g, sig.ret), op(g, text), sretName) - emit(g, "ret void") - } else if pl.ret.kind == "expand" { - slot := alloca(g, "[32 x i8]") - store(g, llty(g, sig.ret), op(g, text), slot) - emit(g, "ret " + pl.ret.coerced + " " + load(g, pl.ret.coerced, slot)) - } else { - retExt = cExt(g, sig.ret) - emit(g, "ret " + cLL(g, sig.ret) + " " + op(g, text)) - } - endHelper(g, s, "define internal" + retExt + " " + pl.retLL + " " + name + "(" + hdr.join(", ") + ")") - return name -} - -// Color(n): a number as an enum. A literal is checked while compiling, anything else when it runs. -fn enumFrom(ptr[Gen] g, ast.Node c, int ei) -> Val { - ed := g.enums[ei] - checkArgs(g, c, 0, 1, ed.name) - v := expr(g, c.kids[0]) - if !isInt(v.ty) { - fail(g, c.kids[0], ed.name + "(...) turns a whole number into the enum, but this is " + ast.show(v.ty)) - } - t := ast.Type(kind: "enum", name: ed.name, module: ed.module) - if v.lit { - if !ed.values.contains(int(v.v)) { - fail(g, c.kids[0], v.v + " is not the number of any variant of " + ed.name) - } - return Val(v: v.v, ty: t) - } - wide := intCast(g, v.v, v.ty, T("int")) - known := "" - for k in 0..ed.values.len { - hit := op(g, "icmp eq i64 " + wide + ", " + str(ed.values[k])) - if k == 0 { - known = hit - } else { - known = op(g, "or i1 " + known + ", " + hit) - } - } - panicIf(g, op(g, "xor i1 " + known + ", true"), "this number is not a variant of " + ed.name, c) - return Val(v: op(g, "trunc i64 " + wide + " to i32"), ty: t) -} - -// ---------- calling C ---------- - -// How C extends a number narrower than 32 bits: plain `char` is signed on x86. -fn cExt(ptr[Gen] g, ast.Type t) -> str { - if t.kind == "bool" || isUnsigned(t) { - if bitsOf(t) < 32 { - return " zeroext" - } - } - if (isSigned(t) || (t.kind == "char" && platform.charIsSigned(g.tg))) && bitsOf(t) < 32 { - return " signext" - } - if t.kind == "char" && bitsOf(t) < 32 { - return " zeroext" - } - return "" -} - -fn cLL(ptr[Gen] g, ast.Type t) -> str { - if t.kind == "str" { - return "ptr" - } - return llty(g, t) -} - -fn callC(ptr[Gen] g, ast.Node c, cimport.CFunc f) -> Val { - if g.index { - []str ps - for p in f.params { - ps.push(ast.show(p)) - } - if f.variadic { - ps.push("...") - } - noteRef(g, c, c.col, f.name.len, "C function from `" + f.header + "`\n```c\n" + ast.show(f.ret) + " " + f.name + "(" + ps.join(", ") + ")\n```", "", 0, 0) - } - if f.unsupported.len > 0 { - fail(g, c, "the C function '" + f.name + "' can't be used from Finch yet: it " + f.unsupported) - } - have := c.kids.len - if f.variadic { - if have < f.params.len { - fail(g, c, "'" + f.name + "' takes at least " + str(f.params.len) + " argument(s), but got " + str(have)) - } - } else if have != f.params.len { - fail(g, c, "'" + f.name + "' takes " + str(f.params.len) + " argument(s), but got " + str(have)) - } - ret := resolve(g, f.ret, c) - checkByValue(g, c, f.name, ret, "returns") - []ast.Type ptypes - for p in f.params { - pt := resolve(g, p, c) - checkByValue(g, c, f.name, pt, "takes") - ptypes.push(pt) - } - pl := makePlan(g, ret, ptypes) - []str ptys - []str args - sretSlot := "" - if pl.sret { - sretSlot = alloca(g, llty(g, ret)) - ptys.push("ptr sret(" + llty(g, ret) + ") align 16") - args.push("ptr sret(" + llty(g, ret) + ") align 16 " + sretSlot) - } - []Val temps - mark := g.pending.len - for i in 0..c.kids.len { - if i < f.params.len { - pt := ptypes[i] - a := pl.params[i] - v := coerce(g, exprWant(g, c.kids[i], pt), pt, c.kids[i], "argument " + str(i + 1) + " of " + f.name) - temps.push(v) - hold(g, v) - if a.kind == "memory" { - slot := alloca(g, llty(g, pt)) - store(g, llty(g, pt), v.v, slot) - spec := "ptr byval(" + llty(g, pt) + ") align " + str(a.align) - ptys.push(spec) - args.push(spec + " " + slot) - } else if a.kind == "indirect" { - slot := alloca(g, llty(g, pt)) - store(g, llty(g, pt), v.v, slot) - ptys.push("ptr") - args.push("ptr " + slot) - } else if a.kind == "expand" { - slot := alloca(g, "[32 x i8]") - store(g, llty(g, pt), v.v, slot) - for k in 0..a.parts.len { - x := load(g, a.parts[k], op(g, "getelementptr inbounds i8, ptr " + slot + ", i64 " + str(8 * k))) - ptys.push(a.parts[k]) - args.push(a.parts[k] + " " + x) - } - } else { - ptys.push(cLL(g, pt) + cExt(g, pt)) - if pt.kind == "str" { - args.push("ptr " + cstr(g, v.v)) - } else { - args.push(llty(g, pt) + cExt(g, pt) + " " + v.v) - } - } - continue - } - // the '...' part: C's default promotions - v := expr(g, c.kids[i]) - t := v.ty - if t.kind == "void" { - fail(g, c.kids[i], "this gives back nothing") - } - temps.push(v) - hold(g, v) - if t.kind == "struct" || t.kind == "array" { - fail(g, c.kids[i], "structs and arrays can't be passed to the '...' part of a C function") - } - x := v.v - if t.kind == "f32" { - x = floatCast(g, x, t, T("float")) - t = T("float") - } else if t.kind == "str" { - x = cstr(g, x) - t = T("ptr") - } else if t.kind == "bool" { - x = op(g, "zext i1 " + v.v + " to i32") - t = T("i32") - } else if (isInt(t) || t.kind == "char") && bitsOf(t) < 32 { - x = intCast(g, x, t, T("i32")) - t = T("i32") - } - args.push(llty(g, t) + " " + x) - } - // declared once (the runtime already declares a few of the libc ones) - retLL := pl.retLL - retExt := "" - if pl.ret.kind == "direct" { - retExt = cExt(g, ret) - } - tail := "" - if f.variadic { - tail = ", ..." - if ptys.len == 0 { - tail = "..." - } - } - if !g.cdone.contains("f:" + f.name) { - g.cdone.push("f:" + f.name) - if !runtimeDeclares(f.name) { - g.head.push("declare" + retExt + " " + retLL + " @" + f.name + "(" + ptys.join(", ") + tail + ")") - } - } - sig := "" - if f.variadic { - sig = " (" + ptys.join(", ") + tail + ")" - } - text := "call" + retExt + " " + retLL + sig + " @" + f.name + "(" + args.join(", ") + ")" - if ret.kind == "void" { - emit(g, text) - releaseAll(g, temps, mark) - return Val(ty: ret) - } - if pl.sret { - emit(g, text) - releaseAll(g, temps, mark) - return Val(v: load(g, llty(g, ret), sretSlot), ty: ret) - } - r := op(g, text) - releaseAll(g, temps, mark) - if pl.ret.kind == "expand" { - slot := alloca(g, "[32 x i8]") - store(g, pl.ret.coerced, r, slot) - return Val(v: load(g, llty(g, ret), slot), ty: ret) - } - if ret.kind == "str" { - out := strOut(g) - store(g, "{ ptr, i64, i64 }", "zeroinitializer", out) - emit(g, "call void @finch_str_from_c(ptr " + out + ", ptr " + r + ")") - return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: ret) // borrowed: copied if it is kept - } - return Val(v: r, ty: ret) -} - -// the call is made: what its arguments held is dropped -fn releaseAll(ptr[Gen] g, []Val vals, int mark) { - for v in vals { - release(g, v) - } - heldEnd(g, mark) -} - -// libc functions the runtime declares itself, with the signatures C has -fn runtimeDeclares(str name) -> bool { - return ["printf", "fflush", "exit", "free", "qsort"].contains(name) -} - -// Help people who forgot an import. -fn headerHint(str name) -> str { - names := ["printf", "puts", "putchar", "scanf", "fopen", "getchar", "sqrt", "pow", "sin", "cos", "floor", "fabs", "malloc", "rand", "srand", - "abs", "atoi", "strlen", "strcpy", "memcpy", "time", "sleep", "usleep"] - headers := ["stdio.h", "stdio.h", "stdio.h", "stdio.h", "stdio.h", "stdio.h", "math.h", "math.h", "math.h", "math.h", "math.h", "math.h", - "stdlib.h", "stdlib.h", "stdlib.h", "stdlib.h", "stdlib.h", "string.h", "string.h", "string.h", "time.h", "unistd.h", "unistd.h"] - k := names.find(name) - if k < 0 { - return "" - } - return " (it's from C: add import \"" + headers[k] + "\" at the top)" -} - fn call(ptr[Gen] g, ast.Node c) -> Val { n := c.name - if g.index && isBuiltin(n) { - d := docs.find(docs.builtins(), n) - if d.name.len > 0 { - noteRef(g, c, c.col, n.len, docs.hover(d), "", 0, 0) - } - } if n == "error" { fail(g, c, "error(...) makes an error to return from a function that can fail: return error(\"...\")") } @@ -4851,7 +2540,6 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { printf(g, " ", "") } emitPrint(g, v.v, v.ty, false) - release(g, v) } printf(g, "\n", "") return Val(ty: T("void")) @@ -4859,12 +2547,6 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { if n == "addr" { checkArgs(g, c, 0, 1, n) a := c.kids[0] - if a.kind == "var" && lookup(g, a.name) < 0 { - fi := findFn(g, g.module, a.name) - if fi >= 0 { - return Val(v: cThunk(g, fi, a), ty: T("ptr")) // a C function pointer to a Finch function - } - } if a.kind != "var" && a.kind != "member" && a.kind != "index" { fail(g, a, "addr(...) needs a variable, a field or an element, like addr(x)") } @@ -4876,9 +2558,8 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { v := expr(g, c.kids[0]) out := strOut(g) k := v.ty.kind - borrowed := false // a C string is not copied: whoever keeps it copies it if k == "str" { - return Val(v: own(g, v), ty: v.ty, fresh: true) + return Val(v: copyValue(g, v.v, v.ty), ty: v.ty, fresh: true) } else if isSigned(v.ty) { emit(g, "call void @finch_str_from_int(ptr " + out + ", i64 " + intCast(g, v.v, v.ty, T("int")) + ")") } else if isUnsigned(v.ty) { @@ -4890,24 +2571,13 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { } else if k == "bool" { z := op(g, "zext i1 " + v.v + " to i32") emit(g, "call void @finch_str_from_bool(ptr " + out + ", i32 " + z + ")") - } else if k == "ptr" { - // a C string, copied - store(g, "{ ptr, i64, i64 }", "zeroinitializer", out) - emit(g, "call void @finch_str_from_c(ptr " + out + ", ptr " + v.v + ")") - borrowed = true - } else if k == "array" && (v.ty.elem[0].kind == "u8" || v.ty.elem[0].kind == "char") { - // bytes become text - store(g, "{ ptr, i64, i64 }", "zeroinitializer", out) - emit(g, "call void @finch_str_from_bytes(ptr " + out + ", ptr " + spill(g, v) + ")") - release(g, v) - } else if k == "bool" || k == "char" || k == "array" || k == "map" || k == "struct" || k == "enum" { + } else if k == "bool" || k == "char" || k == "array" || k == "map" || k == "struct" { store(g, "{ ptr, i64, i64 }", "zeroinitializer", out) emitFormat(g, out, v.v, v.ty, false) - release(g, v) } else { fail(g, c.kids[0], "can't turn " + ast.show(v.ty) + " into str") } - return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: !borrowed) + return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } to := numType(n) if to.len > 0 { @@ -4915,11 +2585,9 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { } if n == "read_file" || n == "file_exists" { checkArgs(g, c, 0, 1, n) - pv := strArg(g, c.kids[0], "the file name") - path := spill(g, pv) + path := spill(g, strArg(g, c.kids[0], "the file name")) if n == "file_exists" { r := op(g, "call i32 @finch_file_exists(ptr " + path + ")") - release(g, pv) return Val(v: op(g, "icmp ne i32 " + r + ", 0"), ty: T("bool")) } out := strOut(g) @@ -4930,36 +2598,25 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { ok := op(g, "call i32 @finch_try_read_file(ptr " + out + ", ptr " + path + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) - release(g, pv) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } file := strGlobal(g, g.files[c.file]) emit(g, "call void @finch_read_file(ptr " + out + ", ptr " + path + ", ptr " + file + ", i64 " + str(c.line) + ")") - release(g, pv) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if n == "write_file" { checkArgs(g, c, 0, 2, n) - pv := strArg(g, c.kids[0], "the file name") - mark := g.pending.len - hold(g, pv) - tv := strArg(g, c.kids[1], "the text") - heldEnd(g, mark) - path := spill(g, pv) - text := spill(g, tv) + path := spill(g, strArg(g, c.kids[0], "the file name")) + text := spill(g, strArg(g, c.kids[1], "the text")) if g.ftarget == nodeKey(c) { err := alloca(g, "{ ptr, i64, i64 }") store(g, "{ ptr, i64, i64 }", "zeroinitializer", err) ok := op(g, "call i32 @finch_try_write_file(ptr " + path + ", ptr " + text + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) - release(g, pv) - release(g, tv) return Val(ty: T("void")) } r := op(g, "call i32 @finch_write_file(ptr " + path + ", ptr " + text + ")") - release(g, pv) - release(g, tv) return Val(v: op(g, "icmp ne i32 " + r + ", 0"), ty: T("bool")) } if n == "delete_file" { @@ -4973,13 +2630,9 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { ok := op(g, "call i32 @finch_try_delete_file(ptr " + heap + ", ptr " + err + ")") g.ffailed = op(g, "icmp eq i32 " + ok + ", 0") g.fmsg = load(g, "{ ptr, i64, i64 }", err) - dropAt(g, heap, T("str")) - release(g, p) return Val(ty: T("void")) } r := op(g, "call i32 @finch_delete_file(ptr " + heap + ")") - dropAt(g, heap, T("str")) - release(g, p) return Val(v: op(g, "icmp ne i32 " + r + ", 0"), ty: T("bool")) } if n == "shell" { @@ -4987,10 +2640,7 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { cmd := strArg(g, c.kids[0], "the command") heap := strOut(g) emit(g, "call void @finch_str_copy(ptr " + heap + ", ptr " + spill(g, cmd) + ")") - r := op(g, "call i64 @finch_shell(ptr " + heap + ")") - dropAt(g, heap, T("str")) - release(g, cmd) - return Val(v: r, ty: T("int")) + return Val(v: op(g, "call i64 @finch_shell(ptr " + heap + ")"), ty: T("int")) } if n == "exit" { checkArgs(g, c, 0, 1, n) @@ -5008,7 +2658,6 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { } out := strOut(g) emit(g, "call void @finch_input(ptr " + out + ", ptr " + spill(g, prompt) + ")") - release(g, prompt) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if n == "new" { @@ -5022,67 +2671,23 @@ fn call(ptr[Gen] g, ast.Node c) -> Val { checkArgs(g, c, 0, 1, n) v := expr(g, c.kids[0]) if v.ty.kind != "ptr" { - fail(g, c.kids[0], "free(...) is only for pointers from new(...) or C; arrays, str and structs are freed by Finch at the end of their block") - } - if v.ty.elem.len > 0 && owning(g, v.ty.elem[0]) { - drop := newLabel(g, "free.drop") - done := newLabel(g, "free.done") - condBr(g, op(g, "icmp eq ptr " + v.v + ", null"), done, drop) - label(g, drop) - dropAt(g, v.v, v.ty.elem[0]) - br(g, done) - label(g, done) + fail(g, c.kids[0], "free(...) is only for pointers from new(...)") } emit(g, "call void @free(ptr " + v.v + ")") return Val(ty: T("void")) } fi := findFn(g, g.module, n) if fi >= 0 { - if c.ty.elem.len > 0 { - fail(g, c, "'" + n + "' is not generic, so it takes no type arguments") - } return callFn(g, fi, c, 0, n, "", "") } - gti := findTemplate(g, g.module, n, "", false) - if gti >= 0 { - return genericCall(g, c, gti, 0, n) - } - if findTemplate(g, g.module, n, "", true) >= 0 { - // Stack[int](...): a generic struct made with its type - if c.ty.elem.len == 0 { - fail(g, c, "'" + n + "' is generic, so say which type it holds: " + n + "[int](...)") - } - []ast.Type targs - for a in c.ty.elem { - targs.push(resolve(g, a, c)) - } - gt := instStruct(g, g.module, n, targs, c) - return construct(g, findStruct(g, gt.module, gt.name), c.kids, c.names, c) - } si := findStruct(g, g.module, n) - if si >= 0 { - sd := g.structs[si] - if g.index && !sd.isC { - node := g.progs[sd.prog].structs[sd.index] - noteRef(g, c, c.col, n.len, "```finch\nstruct " + sd.name + " { " + sd.fnames.join(", ") + " }\n```", g.files[node.file], node.line, node.col) - } - return construct(g, si, c.kids, c.names, c) - } - ei := findEnum(g, g.module, n) - if ei >= 0 { - return enumFrom(g, c, ei) - } - if g.ci.fns.has(n) { - return callC(g, c, g.ci.fns[n]) - } - si = findStruct(g, "C", n) if si >= 0 { return construct(g, si, c.kids, c.names, c) } if lookup(g, n) >= 0 { fail(g, c, "'" + n + "' is a variable, not a function") } - fail(g, c, "there is no function named '" + n + "'" + headerHint(n)) + fail(g, c, "there is no function named '" + n + "'") return Val() } @@ -5091,14 +2696,11 @@ fn callFn(ptr[Gen] g, int fi, ast.Node c, int first, str shown, str selfAddr, st if sig.module.len == 0 && sig.name == "main" { fail(g, c, "main can't be called, it is where the program starts") } - noteCall(g, c, sig) checkArgs(g, c, first, sig.params.len, shown) []str args if sig.recv.len > 0 { args.push("ptr " + selfAddr) } - []Val fresh - mark := g.pending.len for k in 0..sig.params.len { a := c.kids[first + k] v := coerce(g, exprWant(g, a, sig.params[k]), sig.params[k], a, "argument '" + sig.pnames[k] + "'") @@ -5106,22 +2708,8 @@ fn callFn(ptr[Gen] g, int fi, ast.Node c, int first, str shown, str selfAddr, st if owning(g, sig.params[k]) && !v.fresh && selfRoot.len > 0 && rootVar(a) == selfRoot { v = Val(v: copyValue(g, v.v, v.ty), ty: v.ty, fresh: true) } - args.push(llty(g, sig.params[k]) + " " + v.v) // owning values are lent: the function never drops them - if v.fresh { - fresh.push(v) - } - hold(g, v) + args.push(llty(g, sig.params[k]) + " " + v.v) } - r := emitCall(g, sig, c, args, shown) - for v in fresh { - release(g, v) - } - heldEnd(g, mark) - return r -} - -// The call itself, once the arguments are values ("i64 5"); the receiver's address, if any, is already first. -fn emitCall(ptr[Gen] g, FnSig sig, ast.Node c, []str args, str shown) -> Val { if sig.fallible && g.ftarget != nodeKey(c) { fail(g, c, "'" + shown + "' can fail, so say what happens then: " + shown + "(...) or , " + shown + "(...) or { ... }, or try " + shown + "(...)") } @@ -5145,10 +2733,7 @@ fn emitCall(ptr[Gen] g, FnSig sig, ast.Node c, []str args, str shown) -> Val { fn construct(ptr[Gen] g, int si, []ast.Node args, []str names, ast.Node at) -> Val { sd := g.structs[si] - decl := ast.Node() - if !sd.isC { - decl = g.progs[sd.prog].structs[sd.index] - } + decl := g.progs[sd.prog].structs[sd.index] t := ast.Type(kind: "struct", name: sd.name, module: sd.module) st := llty(g, t) named := names.len > 0 && names[0].len > 0 @@ -5177,63 +2762,34 @@ fn construct(ptr[Gen] g, int si, []ast.Node args, []str names, ast.Node at) -> V given[k] = i } v := "zeroinitializer" - mark := g.pending.len for k in 0..sd.fnames.len { ft := sd.ftypes[k] fv := Val() if given[k] >= 0 { fv = coerce(g, exprWant(g, args[given[k]], ft), ft, args[given[k]], "the field '" + sd.fnames[k] + "'") - } else if !sd.isC && decl.kids[k].kids.len > 0 { + } else if decl.kids[k].kids.len > 0 { // a default value is evaluated where the struct is defined, without the caller's variables savedScopes := g.scopes savedModule := g.module - savedTN := g.tnames - savedTA := g.targs - g.tnames = sd.tnames - g.targs = sd.targs []Scope none g.scopes = none pushScope(g) g.module = sd.module fv = coerce(g, exprWant(g, decl.kids[k].kids[0], ft), ft, decl.kids[k].kids[0], "the default of '" + sd.fnames[k] + "'") g.module = savedModule - g.tnames = savedTN - g.targs = savedTA g.scopes = savedScopes } else { continue } - fo := own(g, fv) - hold(g, Val(v: fo, ty: ft, fresh: true)) - v = op(g, "insertvalue " + st + " " + v + ", " + llty(g, ft) + " " + fo + ", " + str(sd.lidx[k])) + v = op(g, "insertvalue " + st + " " + v + ", " + llty(g, ft) + " " + own(g, fv) + ", " + str(k)) } - heldEnd(g, mark) return Val(v: v, ty: t, fresh: owning(g, t)) } // ---------- methods ---------- -// a method of an array, text or map: hover from the built-in docs -fn noteMethod(ptr[Gen] g, ast.Node m, []docs.Doc list) { - if !g.index { - return - } - d := docs.find(list, m.name) - if d.name.len > 0 { - noteRef(g, m, m.col + 1, m.name.len, docs.hover(d), "", 0, 0) - } -} - fn method(ptr[Gen] g, ast.Node m) -> Val { objNode := m.kids[0] - sm := sumNamed(g, objNode) - if sm >= 0 { - []ast.Node vals - for q in 1..m.kids.len { - vals.push(m.kids[q]) - } - return sumMake(g, sm, m.name, vals, m) - } if objNode.kind == "var" && lookup(g, objNode.name) < 0 { mn := objNode.name if !imports(g, mn) { @@ -5243,14 +2799,6 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { if fi >= 0 { return callFn(g, fi, m, 1, mn + "." + m.name, "", "") } - mti := findTemplate(g, mn, m.name, "", false) - if mti >= 0 { - return genericCall(g, m, mti, 1, mn + "." + m.name) - } - mei := findEnum(g, mn, m.name) - if mei >= 0 { - return enumFrom(g, m, mei) - } si := findStruct(g, mn, m.name) if si >= 0 { []ast.Node args @@ -5263,7 +2811,6 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { } changing := ["push", "pop", "insert", "remove", "clear", "resize", "sort", "reverse"] r := ref(g, objNode, changing.contains(m.name)) - mark := g.pending.len t := r.val.ty if r.isPlace { t = r.pl.ty @@ -5277,33 +2824,15 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { fail(g, m, m.name + "() would change a temporary array; store it in a variable first") } a = spill(g, r.val) - if r.val.fresh { - holdAddr(g, a, t) - } } - noteMethod(g, m, docs.arrayMethods()) - out := arrayMethod(g, m, a, t) - if !r.isPlace && r.val.fresh { - dropAt(g, a, t) - } - heldEnd(g, mark) - return out + return arrayMethod(g, m, a, t) } if t.kind == "str" { sv := r.val if r.isPlace { sv = Val(v: load(g, "{ ptr, i64, i64 }", r.pl.addr), ty: t) } - noteMethod(g, m, docs.strMethods()) - if !r.isPlace { - hold(g, sv) - } - out := strMethod(g, m, spill(g, sv)) - if !r.isPlace { - release(g, sv) - } - heldEnd(g, mark) - return out + return strMethod(g, m, spill(g, sv)) } if t.kind == "map" { mp := "" @@ -5314,22 +2843,11 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { fail(g, m, m.name + "() would change a temporary map; store it in a variable first") } mp = spill(g, r.val) - if r.val.fresh { - holdAddr(g, mp, t) - } } - noteMethod(g, m, docs.mapMethods()) - out := mapMethod(g, m, mp, t) - if !r.isPlace && r.val.fresh { - dropAt(g, mp, t) - } - heldEnd(g, mark) - return out + return mapMethod(g, m, mp, t) } - heldEnd(g, mark) st := t selfAddr := "" - temp := false if t.kind == "ptr" && t.elem.len > 0 && t.elem[0].kind == "struct" { pv := r.val.v if r.isPlace { @@ -5338,39 +2856,20 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { panicIf(g, op(g, "icmp eq ptr " + pv + ", null"), "called ." + m.name + "() on a null pointer", m) st = t.elem[0] selfAddr = pv - } else if t.kind == "struct" || t.kind == "enum" { + } else if t.kind == "struct" { if r.isPlace { selfAddr = r.pl.addr } else { - selfAddr = spill(g, r.val) // a temporary struct: Point(1, 2).length() - temp = true + selfAddr = spill(g, r.val) } } - if st.kind == "struct" || st.kind == "enum" { + if st.kind == "struct" { fi := findMethod(g, st.module, st.name, m.name) - if fi < 0 && st.kind == "struct" { - sdi := findStruct(g, st.module, st.name) - if g.structs[sdi].base.len > 0 { - mti := findTemplate(g, st.module, m.name, g.structs[sdi].base, false) - if mti >= 0 { - fi = instFn(g, mti, g.structs[sdi].targs, st, m) - } - } - } if fi < 0 { - []str have - for sg in g.sigs { - if sg.recv == st.name && sg.recvmod == st.module { - have.push(sg.name) - } - } - if have.len == 0 { - fail(g, m, "the " + st.kind + " " + ast.show(st) + " has no methods; add one with fn " + st.name + "." + m.name + "(...) { ... }") - } - fail(g, m, "the " + st.kind + " " + ast.show(st) + " has no method '" + m.name + "' (it has: " + have.join(", ") + ")") + fail(g, m, "the struct " + ast.show(st) + " has no method '" + m.name + "'") } // a method that changes self can't be called on a temporary or a read-only value - if g.sigs[fi].mutself && (t.kind == "struct" || t.kind == "enum") { + if g.sigs[fi].mutself && t.kind == "struct" { if !r.isPlace { fail(g, m, m.name + "() would change a temporary " + ast.show(st) + "; store it in a variable first") } @@ -5382,15 +2881,7 @@ fn method(ptr[Gen] g, ast.Node m) -> Val { } } } - if temp && r.val.fresh { - holdAddr(g, selfAddr, st) - } - out := callFn(g, fi, m, 1, ast.show(st) + "." + m.name, selfAddr, rootVar(objNode)) - if temp && r.val.fresh && owning(g, st) { - dropAt(g, selfAddr, st) - } - heldEnd(g, mark) - return out + return callFn(g, fi, m, 1, ast.show(st) + "." + m.name, selfAddr, rootVar(objNode)) } fail(g, m, ast.show(t) + " has no methods") return Val() @@ -5428,7 +2919,6 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { } if n == "clear" { need(g, m, 0) - dropFrom(g, a, at, "0") store(g, "i64", "0", lenAddr) return Val(ty: T("void")) } @@ -5453,7 +2943,7 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { condBr(g, c, body, end) label(g, body) ev := Val(v: load(g, ET, op(g, "getelementptr inbounds " + ET + ", ptr " + data + ", i64 " + i)), ty: et) - eq := compare(g, "==", ev, Val(v: x.v, ty: x.ty), m).v + eq := compare(g, "==", ev, x, m).v condBr(g, eq, hit, nxt) label(g, hit) store(g, "i64", i, res) @@ -5462,7 +2952,6 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { store(g, "i64", op(g, "add i64 " + i + ", 1"), iv) br(g, cond) label(g, end) - release(g, x) r := load(g, "i64", res) if n == "find" { return Val(v: r, ty: T("int")) @@ -5474,11 +2963,9 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { if et.kind != "str" { fail(g, m, "join() works on an array of str") } - sepv := strArg(g, m.kids[1], "the separator") - sep := spill(g, sepv) + sep := spill(g, strArg(g, m.kids[1], "the separator")) out := strOut(g) emit(g, "call void @finch_str_join(ptr " + out + ", ptr " + a + ", ptr " + sep + ")") - release(g, sepv) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if n == "insert" { @@ -5503,7 +2990,6 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { if n == "resize" { need(g, m, 1) k := coerce(g, expr(g, m.kids[1]), T("int"), m.kids[1], "the new length").v - dropFrom(g, a, at, k) emit(g, "call void @finch_arr_resize(ptr " + a + ", i64 " + k + ", i64 " + sizeOf(g, et) + ")") return Val(ty: T("void")) } @@ -5560,24 +3046,6 @@ fn arrayMethod(ptr[Gen] g, ast.Node m, str a, ast.Type at) -> Val { return Val() } -// resize/clear: the elements from `from` on go away, so they are dropped -fn dropFrom(ptr[Gen] g, str a, ast.Type at, str from) { - et := at.elem[0] - if !owning(g, et) { - return - } - ET := llty(g, et) - l := load(g, "i64", op(g, "getelementptr inbounds { ptr, i64, i64 }, ptr " + a + ", i32 0, i32 1")) - d := load(g, "ptr", a) - under := op(g, "icmp slt i64 " + from + ", " + l) - neg := op(g, "icmp slt i64 " + from + ", 0") - start := op(g, "select i1 " + under + ", i64 " + op(g, "select i1 " + neg + ", i64 0, i64 " + from) + ", i64 " + l) - lp := loopStart(g, op(g, "sub i64 " + l + ", " + start)) - ep := op(g, "getelementptr inbounds " + ET + ", ptr " + d + ", i64 " + op(g, "add i64 " + start + ", " + lp[3])) - dropAt(g, ep, et) - loopEnd(g, lp) -} - // -1, 0 or 1, for qsort fn cmpFn(ptr[Gen] g, ast.Type t) -> str { name := "@finch.cmp." + typeKey(t) @@ -5623,27 +3091,20 @@ fn strMethod(ptr[Gen] g, ast.Node m, str s) -> Val { } if n == "find" || n == "contains" || n == "starts_with" || n == "ends_with" { need(g, m, 1) - tv := strArg(g, m.kids[1], "the text to look for") - t := spill(g, tv) + t := spill(g, strArg(g, m.kids[1], "the text to look for")) if n == "find" { - res := op(g, "call i64 @finch_str_find(ptr " + s + ", ptr " + t + ")") - release(g, tv) - return Val(v: res, ty: T("int")) + return Val(v: op(g, "call i64 @finch_str_find(ptr " + s + ", ptr " + t + ")"), ty: T("int")) } if n == "contains" { r := op(g, "call i64 @finch_str_find(ptr " + s + ", ptr " + t + ")") - res := op(g, "icmp sge i64 " + r + ", 0") - release(g, tv) - return Val(v: res, ty: T("bool")) + return Val(v: op(g, "icmp sge i64 " + r + ", 0"), ty: T("bool")) } fname := "@finch_str_starts" if n == "ends_with" { fname = "@finch_str_ends" } r := op(g, "call i32 " + fname + "(ptr " + s + ", ptr " + t + ")") - res := op(g, "icmp ne i32 " + r + ", 0") - release(g, tv) - return Val(v: res, ty: T("bool")) + return Val(v: op(g, "icmp ne i32 " + r + ", 0"), ty: T("bool")) } if n == "trim" || n == "upper" || n == "lower" { need(g, m, 0) @@ -5652,25 +3113,16 @@ fn strMethod(ptr[Gen] g, ast.Node m, str s) -> Val { } if n == "replace" { need(g, m, 2) - av := strArg(g, m.kids[1], "the text to replace") - mark := g.pending.len - hold(g, av) - bv := strArg(g, m.kids[2], "the new text") - heldEnd(g, mark) - a := spill(g, av) - b := spill(g, bv) + a := spill(g, strArg(g, m.kids[1], "the text to replace")) + b := spill(g, strArg(g, m.kids[2], "the new text")) emit(g, "call void @finch_str_replace(ptr " + out + ", ptr " + s + ", ptr " + a + ", ptr " + b + ")") - release(g, av) - release(g, bv) return Val(v: load(g, "{ ptr, i64, i64 }", out), ty: T("str"), fresh: true) } if n == "split" { need(g, m, 1) - sepv := strArg(g, m.kids[1], "the separator") - sep := spill(g, sepv) + sep := spill(g, strArg(g, m.kids[1], "the separator")) ao := strOut(g) emit(g, "call void @finch_str_split(ptr " + ao + ", ptr " + s + ", ptr " + sep + ")") - release(g, sepv) return Val(v: load(g, "{ ptr, i64, i64 }", ao), ty: ast.arrayOf(T("str")), fresh: true) } if n == "repeat" { @@ -5697,9 +3149,6 @@ fn runtimeDecls() -> str { "declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold", "declare ptr @finch_alloc(i64)", "declare void @finch_str_copy(ptr, ptr)", - "declare void @finch_str_drop(ptr)", - "declare void @finch_arr_free(ptr)", - "declare void @finch_map_free(ptr)", "declare void @finch_str_own(ptr)", "declare void @finch_str_concat(ptr, ptr, ptr)", "declare i32 @finch_str_eq(ptr, ptr)", @@ -5761,80 +3210,23 @@ fn runtimeDecls() -> str { "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)", ] return decls.join("\n") + "\n" } -fn assemble(ptr[Gen] g) -> str { - text := "; generated by the Finch compiler written in Finch\n\n" - if g.tg.cross || g.tg.windows { - text = text + "target triple = \"" + g.tg.triple + "\"\n\n" - } - text = text + g.head.join("\n") + "\n\n" + runtimeDecls() + "\n" - if g.debug { - text = text + "declare void @llvm.dbg.declare(metadata, metadata, metadata)\n\n" - } - text = text + g.out.join("\n") - if g.debug { - text = text + "\n" + dbgModule(g) - } - return text -} - -fn generate([]ast.Program progs, []str files, cimport.CImports ci, Options opt) -> str { - shared := opt.shared - gen := Gen(progs: progs, files: files, ci: ci, shared: opt.shared, debug: opt.debug, index: opt.index, cwd: opt.cwd, tg: opt.target, dbgScope: -1) +fn generate([]ast.Program progs, []str files) -> str { + gen := Gen(progs: progs, files: files) g := addr(gen) - if g.debug { - // !0 the compile unit, !1 and !2 the module flags, then the source files - g.md.push("") - g.md.push("!{i32 7, !\"Dwarf Version\", i32 4}") - g.md.push("!{i32 2, !\"Debug Info Version\", i32 3}") - for fname in files { - g.mdfiles.push(md(g, "!DIFile(filename: \"" + fname + "\", directory: \"" + g.cwd + "\")")) - } - g.md[0] = "distinct !DICompileUnit(language: DW_LANG_C, file: !" + str(g.mdfiles[0]) + ", producer: \"finch\", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)" - } declare(g) main := findFn(g, "", "main") - if shared { - if main >= 0 { - fail(g, g.progs[g.sigs[main].prog].fns[g.sigs[main].index], "a library (--shared) has no main: the program that loads it calls its 'export fn's") - } - } else if main < 0 { + if main < 0 { print(files[0] + ":1:1: error: there is no main function (add 'fn main() { ... }')") exit(1) } - // instantiating a generic adds functions while this goes on, so the end is not fixed - di := 0 - while di < g.sigs.len { - define(g, di) - di += 1 - } - if g.index { - mainImports := g.progs[0].imports - indexAll(g, mainImports) - return g.idx.join("\n") - } - for sg in g.sigs { - if sg.exported { - exportWrapper(g, sg) - } - } - if shared { - // finch_module_on_fatal(handler): the host's say on runtime errors (see runtime/finch_rt.c) - dll := "" - if g.tg.windows { - dll = " dllexport" - } - g.out.push("define" + dll + " void @finch_module_on_fatal(ptr %handler) {\nentry:\n call void @finch_on_fatal(ptr %handler)\n ret void\n}\n") - return assemble(g) + for i in 0..g.sigs.len { + define(g, i) } // the C entry point calls the Finch main m := g.sigs[main] @@ -5863,5 +3255,5 @@ fn generate([]ast.Program progs, []str files, cimport.CImports ci, Options opt) ret = " %code = trunc i64 %r to i32\n ret i32 %code\n" } g.out.push("define i32 @main(i32 %argc, ptr %argv) {\nentry:\n" + pre + " " + callText + "\n" + ret + "}\n") - return assemble(g) + return "; generated by the self-hosted Finch compiler\n\n" + g.head.join("\n") + "\n\n" + runtimeDecls() + "\n" + g.out.join("\n") } diff --git a/src/lexer.fch b/boot/lexer.fch similarity index 90% rename from src/lexer.fch rename to boot/lexer.fch index 5fbb2ee..6263599 100644 --- a/src/lexer.fch +++ b/boot/lexer.fch @@ -24,7 +24,7 @@ fn isHex(char c) -> bool { fn isKeyword(str w) -> bool { keywords := ["fn", "return", "if", "else", "while", "for", "in", "break", "continue", "true", "false", - "null", "import", "link", "struct", "defer", "or", "try", "enum", "match", "export"] + "null", "import", "link", "struct", "defer", "or", "try"] return keywords.contains(w) } @@ -195,20 +195,7 @@ fn lex(str src, str path) -> []Token { } else { op := operator(lx) if op.len == 0 { - // show the whole UTF-8 character, not just its first byte - n := 1 - if (int(c) & 0xE0) == 0xC0 { - n = 2 - } else if (int(c) & 0xF0) == 0xE0 { - n = 3 - } else if (int(c) & 0xF8) == 0xF0 { - n = 4 - } - hint := "" - if int(c) >= 0x80 { - hint = " (names use only a-z, A-Z, 0-9 and _; other letters only go inside \"text\")" - } - fail(lx, t.line, t.col, "unexpected character '" + lx.src.sub(lx.i, lx.i + n) + "'" + hint) + fail(lx, t.line, t.col, "unexpected character '" + str(c) + "'") } for k in 0..op.len { advance(lx) diff --git a/boot/main.fch b/boot/main.fch new file mode 100644 index 0000000..23357af --- /dev/null +++ b/boot/main.fch @@ -0,0 +1,116 @@ +// finch-boot: the Finch compiler written in Finch. +// +// finch-boot build [-o name] compile a program +// finch-boot ir print the LLVM IR +// +// It reads the program and the modules it imports, checks it, writes LLVM IR as text +// and lets clang turn that into a program, linked with Finch's C runtime. +import lexer +import ast +import parser +import gen + +fn dirOf(str path) -> str { + i := path.len - 1 + while i >= 0 && path[i] != '/' { + i -= 1 + } + if i < 0 { + return "." + } + return path.sub(0, i) +} + +fn stem(str path) -> str { + name := path.sub(dirOf(path).len + 1, path.len) + if dirOf(path) == "." && !path.starts_with("./") { + name = path + } + dot := name.find(".") + if dot > 0 { + return name.sub(0, dot) + } + return name +} + +struct Loader { + []ast.Program progs + []str files + []str loaded +} + +fn load(ptr[Loader] l, str path, str module) { + if !file_exists(path) { + if module.len > 0 { + print("error: can't find the module '" + module + "' (looked for " + path + ")") + } else { + print("error: can't open '" + path + "'") + } + exit(1) + } + src := read_file(path) + file := l.files.len + l.files.push(path) + prog := parser.parse(lexer.lex(src, path), file, path) + prog.module = module + prog.path = path + imports := prog.imports + l.progs.push(prog) + for name in imports { + if !l.loaded.contains(name) { + l.loaded.push(name) + load(l, dirOf(path) + "/" + name + ".fch", name) + } + } +} + +fn usage() { + print("finch-boot - the Finch compiler written in Finch") + print("usage: finch-boot build [-o name]") + print(" finch-boot ir ") + exit(1) +} + +fn main([]str args) -> int { + if args.len < 3 { + usage() + } + cmd := args[1] + file := args[2] + out := stem(file) + if args.len == 5 && args[3] == "-o" { + out = args[4] + } else if args.len != 3 { + usage() + } + if cmd != "build" && cmd != "ir" { + usage() + } + + loader := Loader() + load(addr(loader), file, "") + ir := gen.generate(loader.progs, loader.files) + if cmd == "ir" { + print(ir) + return 0 + } + + // the runtime is Finch's C file; FINCH_RT can point somewhere else + rt := dirOf(args[0]) + "/../runtime/finch_rt.c" + if file_exists("runtime/finch_rt.c") { + rt = "runtime/finch_rt.c" + } + if !file_exists(rt) { + print("error: can't find the Finch runtime (runtime/finch_rt.c)") + return 1 + } + llPath := out + ".ll" + write_file(llPath, ir) + code := shell("clang -O2 -w '" + llPath + "' '" + rt + "' -o '" + out + "' -lm") + shell("rm -f '" + llPath + "'") + if code != 0 { + print("error: clang failed") + return 1 + } + return 0 +} diff --git a/src/parser.fch b/boot/parser.fch similarity index 61% rename from src/parser.fch rename to boot/parser.fch index 82c54ad..d37c847 100644 --- a/src/parser.fch +++ b/boot/parser.fch @@ -125,80 +125,10 @@ fn parseType(ptr[Parser] p) -> ast.Type { t.module = name t.name = next(p).text } - // Stack[int], Pair[str, int]: the type arguments of a generic struct - if at(p, "[") && !cur(p).nl && peekKind(p, 1) != "]" { - next(p) - while true { - t.elem.push(parseType(p)) - if !accept(p, ",") { - break - } - } - expect(p, "]", "']' after the type arguments") - } return t } -// Stack[int] name: a generic type, then a name on the same line. (a[i] by itself is an index.) -fn genericDeclAhead(ptr[Parser] p) -> bool { - if !at(p, "ident") || peekKind(p, 1) != "[" || peekKind(p, 2) == "]" { - return false - } - depth := 0 - i := p.i + 1 - while i < p.toks.len { - k := p.toks[i].kind - if k == "[" { - depth += 1 - } else if k == "]" { - depth -= 1 - if depth == 0 { - return i + 1 < p.toks.len && p.toks[i + 1].kind == "ident" && !p.toks[i + 1].nl - } - } else if k == "eof" || p.toks[i].nl && depth == 0 { - return false - } - i += 1 - } - return false -} - -// The same, when the name was just taken and the parser stands on the `[`. -fn genericCallAheadFrom(ptr[Parser] p) -> bool { - p.i -= 1 - r := genericCallAhead(p) - p.i += 1 - return r -} - -// Is the `[` after this name followed, once it closes, by `(`? Then it is max[int](...) and not an index. -fn genericCallAhead(ptr[Parser] p) -> bool { - if peekKind(p, 1) != "[" || p.toks[p.i + 1].nl || peekKind(p, 2) == "]" { - return false - } - depth := 0 - i := p.i + 1 - while i < p.toks.len { - k := p.toks[i].kind - if k == "[" { - depth += 1 - } else if k == "]" { - depth -= 1 - if depth == 0 { - return i + 1 < p.toks.len && p.toks[i + 1].kind == "(" && !p.toks[i + 1].nl - } - } else if k == "eof" || p.toks[i].nl { - return false - } - i += 1 - } - return false -} - fn atDeclaration(ptr[Parser] p) -> bool { - if genericDeclAhead(p) { - return true - } if at(p, "[") { return peekKind(p, 1) == "]" } @@ -229,31 +159,12 @@ fn parseProgram(ptr[Parser] p) -> ast.Program { while !at(p, "eof") { if at(p, "import") { t := next(p) - if at(p, "string") { - prog.cwhere.push(p.path + ":" + str(t.line) + ":" + str(t.col)) - prog.cimports.push(next(p).text) - } else { - if !at(p, "ident") { - fail(p, t, "expected a module name or a C header after 'import'") - } - prog.imports.push(next(p).text) + if !at(p, "ident") { + fail(p, t, "the self-hosted compiler only imports Finch modules (import name)") } - } else if at(p, "link") { - lt := next(p) - lib := expect(p, "string", "a library name in quotes, like link \"glfw\"").text - ownCode := lib.ends_with(".c") || lib.ends_with(".o") || lib.ends_with(".a") // your own C code, next to the .fch file - if !ownCode && (lib.starts_with("lib") || lib.contains(".so") || lib.contains("/")) { - fail(p, lt, "write just the library's name: for libglfw.so that's link \"glfw\"") - } - prog.links.push(lib) + prog.imports.push(next(p).text) } else if at(p, "struct") { prog.structs.push(parseStruct(p)) - } else if at(p, "enum") { - e := parseEnum(p) - prog.enums.push(e) - if e.flag { - prog.structs.push(sumStruct(e)) // an enum with values inside is stored as a struct (see sumStruct) - } } else { prog.fns.push(parseFn(p)) } @@ -261,151 +172,10 @@ fn parseProgram(ptr[Parser] p) -> ast.Program { return prog } -// enum Color { Red, Green, Blue } enum Status { Ok = 200, NotFound = 404 } -// The variants are numbered from 0 (or from the last number given) and are written Color.Red. -// A variant can hold values: enum Shape { Circle(float), Rect(float, float), Point } (e.flag is then true). -fn parseEnum(ptr[Parser] p) -> ast.Node { - e := node(p, "enum") - expect(p, "enum", "'enum'") - e.name = expect(p, "ident", "an enum name").text - expect(p, "{", "'{'") - while !at(p, "}") { - if at(p, "eof") { - fail(p, cur(p), "an enum is never closed (missing '}')") - } - v := node(p, "variant") - v.name = expect(p, "ident", "a variant name, like Red").text - if accept(p, "(") { - e.flag = true - while !at(p, ")") { - f := node(p, "field") - f.ty = parseType(p) - v.kids.push(f) - if !accept(p, ",") { - break - } - } - expect(p, ")", "')' after the values of the variant") - if v.kids.len == 0 { - fail(p, cur(p), "the variant " + v.name + " has empty () : write just " + v.name + " if it holds nothing") - } - } - if accept(p, "=") { - if e.flag { - fail(p, cur(p), "a variant can't have both values inside and a number") - } - sign := "" - if accept(p, "-") { - sign = "-" - } - v.text = sign + expect(p, "int", "a whole number, like Ok = 200").text - } - e.kids.push(v) - if !accept(p, ",") { - endOfStatement(p) - } - } - next(p) - if e.kids.len == 0 { - fail(p, cur(p), "the enum " + e.name + " has no variants") - } - if e.flag { - for v in e.kids { - if v.text.len > 0 { - fail(p, cur(p), "an enum whose variants hold values can't number them (" + v.name + " = " + v.text + ")") - } - } - } - return e -} - -// An enum whose variants hold values is a struct underneath: a `tag` (which variant it is) and, one after the other, -// the values of every variant (Rect's are Rect_0, Rect_1). Only the tag's variant has values; the rest stay -// empty. It's simple and it makes copying, dropping and methods the struct's own. -fn sumStruct(ast.Node e) -> ast.Node { - s := ast.Node(kind: "struct", name: e.name, line: e.line, col: e.col, file: e.file) - tag := ast.Node(kind: "field", name: "tag", line: e.line, col: e.col, file: e.file) - tag.ty = ast.simple("int") - s.kids.push(tag) - for v in e.kids { - for j in 0..v.kids.len { - f := ast.Node(kind: "field", name: v.name + "_" + str(j), line: v.line, col: v.col, file: v.file) - f.ty = v.kids[j].ty - s.kids.push(f) - } - } - return s -} - -// match value { A, B -> ... C -> ... else -> ... } -// As a statement the arms are statements or { blocks }; as an expression they are expressions. -fn parseMatch(ptr[Parser] p, bool asExpr) -> ast.Node { - m := node(p, "match") - m.flag = asExpr - expect(p, "match", "'match'") - m.kids.push(parseExpr(p)) - expect(p, "{", "'{'") - saved := p.depth - p.depth = 0 - while !at(p, "}") { - if at(p, "eof") { - fail(p, cur(p), "a match is never closed (missing '}')") - } - arm := node(p, "arm") - pats := node(p, "patterns") - if accept(p, "else") { - arm.flag = true - } else { - while true { - pats.kids.push(parseExpr(p)) - if !accept(p, ",") { - break - } - } - } - arm.kids.push(pats) - expect(p, "->", "'->' after the value to match, like Red -> print(\"red\")") - if at(p, "{") && !asExpr { - arm.kids.push(parseBlock(p)) - } else if asExpr { - arm.kids.push(parseExpr(p)) - } else { - arm.kids.push(parseStatement(p)) - } - m.kids.push(arm) - if !accept(p, ",") { - endOfStatement(p) - } - } - p.depth = saved - next(p) - if m.kids.len == 1 { - fail(p, cur(p), "a match needs at least one arm") - } - return m -} - -// [T, U] -fn parseTParams(ptr[Parser] p) -> []str { - []str names - expect(p, "[", "'['") - while true { - names.push(expect(p, "ident", "a type parameter name, like T").text) - if !accept(p, ",") { - break - } - } - expect(p, "]", "']' after the type parameters") - return names -} - fn parseStruct(ptr[Parser] p) -> ast.Node { s := node(p, "struct") expect(p, "struct", "'struct'") s.name = expect(p, "ident", "a struct name").text - if at(p, "[") { - s.tparams = parseTParams(p) - } expect(p, "{", "'{'") while !at(p, "}") { if at(p, "eof") { @@ -429,15 +199,8 @@ fn parseStruct(ptr[Parser] p) -> ast.Node { fn parseFn(ptr[Parser] p) -> ast.Node { f := node(p, "fn") - f.exported = accept(p, "export") - if at(p, "ident") && isTypeName(cur(p).text) { - fail(p, cur(p), "functions start with 'fn', like: fn add(int a, int b) -> int { ... }") - } expect(p, "fn", "'fn', 'struct' or 'import'") f.name = expect(p, "ident", "a function name").text - if at(p, "[") { - f.tparams = parseTParams(p) // fn max[T](...) or the struct's, in fn Stack[T].push(...) - } if accept(p, ".") { f.recv = f.name f.name = expect(p, "ident", "a method name").text @@ -468,7 +231,6 @@ fn parseFn(ptr[Parser] p) -> ast.Node { } } f.kids.push(parseBlock(p)) - f.endLine = f.kids[f.kids.len - 1].endLine return f } @@ -487,7 +249,6 @@ fn parseBlock(ptr[Parser] p) -> ast.Node { endOfStatement(p) } p.depth = saved - blk.endLine = cur(p).line next(p) return blk } @@ -524,9 +285,6 @@ fn parseStatement(ptr[Parser] p) -> ast.Node { s.kids.push(parseBlock(p)) return s } - if k == "match" { - return parseMatch(p, false) - } if k == "return" { s := node(p, "return") next(p) @@ -766,9 +524,6 @@ fn parsePrimary(ptr[Parser] p) -> ast.Node { expect(p, ")", "')'") return inner } - if k == "match" { - return parseMatch(p, true) - } if k == "[" { next(p) e.kind = "array" @@ -797,21 +552,6 @@ fn parsePrimary(ptr[Parser] p) -> ast.Node { if k == "ident" { next(p) e.name = t.text - if at(p, "[") && p.toks[p.i - 1].kind == "ident" && genericCallAheadFrom(p) { - // max[int](3, 4), Stack[int]() - next(p) - e.ty = ast.Type(kind: "targs") - while true { - e.ty.elem.push(parseType(p)) - if !accept(p, ",") { - break - } - } - expect(p, "]", "']' after the type arguments") - e.kind = "call" - parseArgs(p, addr(e)) - return e - } if at(p, "(") && !cur(p).nl { e.kind = "call" parseArgs(p, addr(e)) diff --git a/bootstrap/README.md b/bootstrap/README.md deleted file mode 100644 index f4825d8..0000000 --- a/bootstrap/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# 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 | -| `windows-x86_64.ll` | Windows x86-64 (MinGW: llvm-mingw's clang + libclang.dll) | built and run under Wine: it compiles itself, and every test program runs | -| `macos-arm64.ll`, `macos-x86_64.ll` | macOS | made on Linux with the macOS 11.3 SDK; checked as IR only (nobody has run them yet) | - -`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 -``` - -## Windows and macOS - -Windows: `windows-x86_64.ll` is made by `bootstrap/winseed.sh` on Linux (llvm-mingw's MinGW headers and the headers of an -official LLVM for Windows); `bootstrap/winbuild.sh` turns it into `finch.exe` for trying under Wine. On a Windows machine -`bootstrap/build.sh` does the same from Git Bash: put llvm-mingw's `bin` in PATH and set `FINCH_LIBCLANG` (the path of -`libclang.dll`), `FINCH_LLVM_INCLUDE` (its `include` folder) and `FINCH_LDFLAGS=-L`. - -macOS: the seeds were made with the macOS 11.3 SDK; `brew install llvm@21` gives clang and libclang; the CI job sets -`FINCH_CLANG`, `FINCH_LIBCLANG` and `FINCH_LLVM_INCLUDE`. If the macOS build fails, that job is where it shows first. diff --git a/bootstrap/build.sh b/bootstrap/build.sh deleted file mode 100755 index 9c66d1b..0000000 --- a/bootstrap/build.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh -# Builds the Finch compiler without a compiler for Finch: from the seed (the compiler's own LLVM IR), -# then from itself, and checks that the two come out the same. -# -# bootstrap/build.sh build/finch -# bootstrap/build.sh seed also write bootstrap/.ll anew (do this when the compiler got a feature -# its own source uses, or the seed is old: the next build starts from it) -# -# Needs clang and libclang (the C headers are read through it). The compiler is then in build/finch. It carries the -# runtime and the standard library inside itself (src/embedded.fch), so it runs from anywhere. -set -eu -cd "$(dirname "$0")/.." -mkdir -p build - -case "$(uname -s)-$(uname -m)" in - Linux-x86_64) seed=linux-x86_64 ;; - Linux-aarch64|Linux-arm64) seed=linux-aarch64 ;; - Darwin-arm64) seed=macos-arm64 ;; - Darwin-x86_64) seed=macos-x86_64 ;; - MINGW*|MSYS*|CYGWIN*) seed=windows-x86_64 ;; - *) echo "bootstrap: no seed for $(uname -s) $(uname -m) (see bootstrap/README.md)" >&2; exit 1 ;; -esac -EXE= -case $seed in windows-*) EXE=.exe ;; esac -[ -f "bootstrap/$seed.ll" ] || { echo "bootstrap: bootstrap/$seed.ll is missing" >&2; exit 1; } - -CLANG=${FINCH_CLANG:-clang} -LIBS=${FINCH_LIBCLANG:--lclang} -INC= -[ -z "${FINCH_LLVM_INCLUDE:-}" ] || INC="-I $FINCH_LLVM_INCLUDE" # where clang-c/Index.h is, if clang does not find it itself -export FINCH_RT=$PWD/runtime/finch_rt.c -# Windows: libclang.dll has to sit next to the programs that use it (FINCH_LIBCLANG is then the path of that dll) -if [ -n "$EXE" ]; then cp "$LIBS" build/; fi - -echo "bootstrap: seed ($seed) -> build/finch0" -$CLANG -O1 -w "bootstrap/$seed.ll" runtime/finch_rt.c -o build/finch0$EXE -lm $LIBS -echo "bootstrap: build/finch0$EXE packs the runtime and std into src/embedded.fch" -bootstrap/pack.sh build/finch0$EXE -echo "bootstrap: build/finch0$EXE builds the compiler -> build/finch1" -build/finch0$EXE build src/main.fch -o build/finch1$EXE $INC -echo "bootstrap: build/finch1$EXE builds the compiler -> build/finch" -build/finch1$EXE build src/main.fch -o build/finch$EXE $INC - -# a compiler that builds itself must come out the same however many times it does -build/finch1$EXE ir src/main.fch $INC > build/stage1.ll -build/finch$EXE ir src/main.fch $INC > build/stage2.ll -if cmp -s build/stage1.ll build/stage2.ll; then - echo "bootstrap: build/finch1$EXE and build/finch make the same IR ($(wc -l < build/stage2.ll) lines): done" -else - echo "bootstrap: the compiler does not reproduce itself (build/stage1.ll and build/stage2.ll differ)" >&2 - exit 1 -fi - -if [ "${1:-}" = seed ]; then - cp build/stage2.ll "bootstrap/$seed.ll" - echo "bootstrap: wrote bootstrap/$seed.ll" -fi diff --git a/bootstrap/install.sh b/bootstrap/install.sh deleted file mode 100755 index 6c14a4a..0000000 --- a/bootstrap/install.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/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 deleted file mode 100644 index 5160ac6..0000000 --- a/bootstrap/linux-aarch64.ll +++ /dev/null @@ -1,117510 +0,0 @@ -; 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, i1, i1, { ptr, i64, i64 }, i64, i64 } -%S.platform.Target = type { { ptr, i64, i64 }, i1, i1, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Options = type { i1, i1, i1, { ptr, i64, i64 }, %S.platform.Target } -%S.gen.Template = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1, i1 } -%S.gen.Binds = type { { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.EnumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Cleanup = type { i1, i64 } -%S.gen.SumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.SumPat = type { i64, { ptr, i64, i64 } } -%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Pending = type { { ptr, i64, i64 }, %S.ast.Type, i1 } -%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.FnSig = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.StructDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } -%S.gen.Val = type { { ptr, i64, i64 }, %S.ast.Type, i1, i1 } -%S.gen.Place = type { { ptr, i64, i64 }, %S.ast.Type } -%S.gen.Ref = type { i1, %S.gen.Place, %S.gen.Val } -%S.cimport.CImports = type { { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Gen = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { 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 }, { 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 [8 x i8] c"/files-\00" -@.str.146 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.147 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.148 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.149 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.150 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.151 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.153 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.155 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.156 = private unnamed_addr constant [8 x i8] c"version\00" -@.str.157 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.158 = private unnamed_addr constant [10 x i8] c"--version\00" -@.str.159 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" -@.str.160 = private unnamed_addr constant [1 x i8] c"\00" -@.str.161 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.162 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.164 = private unnamed_addr constant [4 x i8] c"lsp\00" -@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.166 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.168 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.169 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.170 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.171 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.172 = private unnamed_addr constant [1 x i8] c"\00" -@.str.173 = private unnamed_addr constant [4 x i8] c"-O2\00" -@.str.174 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.175 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.176 = private unnamed_addr constant [3 x i8] c"-o\00" -@.str.177 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.178 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.179 = private unnamed_addr constant [9 x i8] c"--shared\00" -@.str.180 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.181 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.182 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.183 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.185 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.186 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.187 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.188 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.189 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.190 = private unnamed_addr constant [10 x i8] c"--overlay\00" -@.str.191 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.192 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.193 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.194 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.195 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.196 = private unnamed_addr constant [3 x i8] c"-g\00" -@.str.197 = private unnamed_addr constant [9 x i8] c"--target\00" -@.str.198 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.199 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.200 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.201 = private unnamed_addr constant [12 x i8] c"/finch_run_\00" -@.str.202 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.203 = private unnamed_addr constant [5 x i8] c".dll\00" -@.str.204 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.205 = private unnamed_addr constant [7 x i8] c".dylib\00" -@.str.206 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.207 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.208 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.209 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.210 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.212 = private unnamed_addr constant [8 x i8] c"/../std\00" -@.str.213 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.214 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.216 = private unnamed_addr constant [20 x i8] c"/../share/finch/std\00" -@.str.217 = private unnamed_addr constant [4 x i8] c"std\00" -@.str.218 = private unnamed_addr constant [10 x i8] c"/path.fch\00" -@.str.219 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.220 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" -@.str.221 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @getenv(ptr) -@.str.222 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.223 = private unnamed_addr constant [1 x i8] c"\00" -@.str.224 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.225 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.226 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.227 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.228 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.229 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.230 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.231 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.232 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.233 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.234 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.235 = private unnamed_addr constant [1 x i8] c"\00" -@.str.236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.239 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.240 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.241 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.243 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.244 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.245 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" -@.str.246 = private unnamed_addr constant [1 x i8] c"\00" -@.str.247 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.248 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" -@.str.249 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.250 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.251 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.252 = private unnamed_addr constant [35 x i8] c"/../share/finch/runtime/finch_rt.c\00" -@.str.253 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.254 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.255 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.256 = private unnamed_addr constant [1 x i8] c"\00" -@.str.257 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.258 = private unnamed_addr constant [4 x i8] c" -g\00" -@.str.259 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.260 = private unnamed_addr constant [2 x i8] c" \00" -@.str.261 = private unnamed_addr constant [2 x i8] c" \00" -@.str.262 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.263 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.264 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.265 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.266 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.267 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.268 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.269 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.270 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.271 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.272 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.273 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.274 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.275 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.276 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.277 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.278 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.279 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.280 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.281 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.282 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.283 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.284 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.285 = private unnamed_addr constant [2 x i8] c":\00" -@.str.286 = private unnamed_addr constant [2 x i8] c":\00" -@.str.287 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.288 = private unnamed_addr constant [1 x i8] c"\00" -@.str.289 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.290 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.291 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.292 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.293 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.294 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.295 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.296 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.297 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.298 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.299 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.300 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.301 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.302 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.303 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.304 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.305 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.306 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.307 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.308 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.310 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.311 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.312 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.313 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.315 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.316 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.317 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.318 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.319 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.322 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.323 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.324 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.325 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.326 = private unnamed_addr constant [3 x i8] c"+=\00" -@.str.327 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str.328 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str.329 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str.330 = private unnamed_addr constant [3 x i8] c"%=\00" -@.str.331 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.332 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.333 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.335 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.336 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.338 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.340 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.341 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.342 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" -@.str.343 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.344 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.345 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.347 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.349 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.350 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.351 = private unnamed_addr constant [1 x i8] c"\00" -@.str.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.353 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.354 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.355 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.356 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00" -@.str.357 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.358 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.359 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.360 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.361 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.362 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.369 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.370 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.371 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.372 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.373 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.374 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.375 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.376 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.377 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.378 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.379 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.381 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.382 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.383 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.384 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.385 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.386 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.387 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.388 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.389 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.390 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.391 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.392 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" -@.str.393 = private unnamed_addr constant [1 x i8] c"\00" -@.str.394 = private unnamed_addr constant [1 x i8] c"\00" -@.str.395 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.396 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.398 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.399 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.400 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.401 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.402 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.403 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.404 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.406 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.407 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.408 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.409 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.410 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.411 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.415 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.416 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.418 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.420 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.421 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.422 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.423 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.424 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.425 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.426 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.427 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.428 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.429 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.430 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.431 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.432 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.434 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.435 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.436 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.442 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.443 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.444 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.445 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.446 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.448 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.449 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.450 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.451 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.452 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.453 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.454 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.455 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.456 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.457 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.458 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.459 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.460 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.461 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.465 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.466 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.467 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.468 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.469 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.470 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.471 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.472 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.473 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.474 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.475 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.476 = private unnamed_addr constant [1 x i8] c"\00" -@.str.477 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.478 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.479 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" -@.str.480 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" -@.str.481 = private unnamed_addr constant [1 x i8] c"\00" -@.str.482 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" -@.str.483 = private unnamed_addr constant [1 x i8] c"\00" -@.str.484 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00" -@.str.485 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" -@.str.486 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.487 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.488 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.489 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.491 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.492 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.493 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.494 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.495 = private unnamed_addr constant [1 x i8] c"\00" -@.str.496 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.497 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.498 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.499 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.500 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.501 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.502 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.503 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.504 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.506 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.507 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.508 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.509 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.510 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.511 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.512 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.513 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.514 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.516 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.517 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.518 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.519 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.520 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.521 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.522 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.523 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.524 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.525 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.527 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.528 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.529 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.530 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.531 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.532 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.533 = private unnamed_addr constant [2 x i8] c".\00" -@.str.534 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.535 = private unnamed_addr constant [8 x i8] c"nothing\00" -@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.537 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.538 = private unnamed_addr constant [2 x i8] c":\00" -@.str.539 = private unnamed_addr constant [2 x i8] c":\00" -@.str.540 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.541 = private unnamed_addr constant [1 x i8] c"\00" -@.str.542 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.545 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.546 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.547 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.548 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.549 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.550 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.553 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.554 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.555 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.556 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.557 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.558 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.559 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.560 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.561 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.562 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.563 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.564 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.565 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.566 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.567 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.568 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.569 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.570 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.571 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.572 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.573 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.574 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.575 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.576 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.577 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.578 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.579 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.580 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.581 = private unnamed_addr constant [12 x i8] c"end of file\00" -@.str.582 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.583 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.584 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.585 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.586 = private unnamed_addr constant [9 x i8] c"a string\00" -@.str.587 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.588 = private unnamed_addr constant [7 x i8] c"a char\00" -@.str.589 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.590 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.591 = private unnamed_addr constant [10 x i8] c"expected \00" -@.str.592 = private unnamed_addr constant [9 x i8] c", found \00" -@.str.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.594 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.595 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.596 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.597 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.598 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.599 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.600 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.601 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.602 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.603 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.604 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.605 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.606 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.607 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.608 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.609 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.610 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.611 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.612 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.613 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.614 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.615 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.616 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.617 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.618 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.619 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.620 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.621 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.622 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.623 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.624 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.625 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" -@.str.626 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.627 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.628 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" -@.str.629 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.630 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.631 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.632 = private unnamed_addr constant [40 x i8] c"']' (a map type looks like map[str]int)\00" -@.str.633 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.634 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.635 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.636 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.637 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.638 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.639 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.640 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.641 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.642 = private unnamed_addr constant [2 x i8] c".\00" -@.str.643 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.644 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.645 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.646 = private unnamed_addr constant [2 x i8] c",\00" -@.str.647 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.648 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.649 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.650 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.651 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.652 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.653 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.654 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.655 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.656 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.657 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.658 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.659 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.660 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.661 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.662 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.663 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.664 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.666 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.667 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.668 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.669 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.670 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.671 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.672 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.673 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.674 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.675 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.676 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.677 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.678 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.679 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.680 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.681 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.682 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.683 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.684 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.685 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.686 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.687 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.688 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.689 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.690 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.691 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.692 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.693 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.694 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.695 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.696 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.697 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.698 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.699 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.700 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.701 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.703 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.705 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.706 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.707 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.708 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.709 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.710 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.711 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.712 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.714 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.715 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.716 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.717 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.718 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.719 = private unnamed_addr constant [2 x i8] c".\00" -@.str.720 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.721 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.723 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.725 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.726 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.727 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.728 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.729 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.730 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" -@.str.731 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.732 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.733 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.735 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.736 = private unnamed_addr constant [2 x i8] c":\00" -@.str.737 = private unnamed_addr constant [2 x i8] c":\00" -@.str.738 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.739 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" -@.str.740 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.741 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.742 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" -@.str.743 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.744 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.745 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.746 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.747 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.748 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.749 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.750 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.751 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.752 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.753 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.754 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.755 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" -@.str.756 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.757 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.758 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.759 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.760 = private unnamed_addr constant [7 x i8] c"'enum'\00" -@.str.761 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.762 = private unnamed_addr constant [13 x i8] c"an enum name\00" -@.str.763 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.764 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.765 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.766 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.767 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" -@.str.768 = private unnamed_addr constant [8 x i8] c"variant\00" -@.str.769 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.770 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" -@.str.771 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.772 = private unnamed_addr constant [2 x i8] c")\00" -@.str.773 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.774 = private unnamed_addr constant [2 x i8] c",\00" -@.str.775 = private unnamed_addr constant [2 x i8] c")\00" -@.str.776 = private unnamed_addr constant [36 x i8] c"')' after the values of the variant\00" -@.str.777 = private unnamed_addr constant [13 x i8] c"the variant \00" -@.str.778 = private unnamed_addr constant [28 x i8] c" has empty () : write just \00" -@.str.779 = private unnamed_addr constant [21 x i8] c" if it holds nothing\00" -@.str.780 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.781 = private unnamed_addr constant [53 x i8] c"a variant can't have both values inside and a number\00" -@.str.782 = private unnamed_addr constant [1 x i8] c"\00" -@.str.783 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.784 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.785 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.786 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" -@.str.787 = private unnamed_addr constant [2 x i8] c",\00" -@.str.788 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.789 = private unnamed_addr constant [17 x i8] c" has no variants\00" -@.str.790 = private unnamed_addr constant [55 x i8] c"an enum whose variants hold values can't number them (\00" -@.str.791 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.793 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.794 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.795 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.796 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.797 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.798 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.799 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.800 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.801 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.802 = private unnamed_addr constant [8 x i8] c"'match'\00" -@.str.803 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.804 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.805 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.806 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.807 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.808 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\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 [38 x i8] c"a match is never closed (missing '}')\00" -@.str.812 = private unnamed_addr constant [4 x i8] c"arm\00" -@.str.813 = private unnamed_addr constant [9 x i8] c"patterns\00" -@.str.814 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.815 = private unnamed_addr constant [2 x i8] c",\00" -@.str.816 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.817 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00" -@.str.818 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.819 = private unnamed_addr constant [2 x i8] c",\00" -@.str.820 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.821 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.822 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" -@.str.823 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.824 = private unnamed_addr constant [4 x i8] c"'['\00" -@.str.825 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.826 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" -@.str.827 = private unnamed_addr constant [2 x i8] c",\00" -@.str.828 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.829 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" -@.str.830 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.831 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.832 = private unnamed_addr constant [9 x i8] c"'struct'\00" -@.str.833 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.834 = private unnamed_addr constant [14 x i8] c"a struct name\00" -@.str.835 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.836 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.837 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.838 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.839 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.840 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" -@.str.841 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.842 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.843 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" -@.str.844 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.845 = private unnamed_addr constant [13 x i8] c"a field name\00" -@.str.846 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.847 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.848 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.849 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.850 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" -@.str.851 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.852 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" -@.str.853 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.854 = private unnamed_addr constant [16 x i8] c"a function name\00" -@.str.855 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.856 = private unnamed_addr constant [2 x i8] c".\00" -@.str.857 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.858 = private unnamed_addr constant [14 x i8] c"a method name\00" -@.str.859 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.860 = private unnamed_addr constant [4 x i8] c"'('\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 [2 x i8] c")\00" -@.str.864 = private unnamed_addr constant [6 x i8] c"param\00" -@.str.865 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.866 = private unnamed_addr constant [17 x i8] c"a parameter name\00" -@.str.867 = private unnamed_addr constant [2 x i8] c",\00" -@.str.868 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.869 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.870 = private unnamed_addr constant [2 x i8] c")\00" -@.str.871 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.872 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.873 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.874 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.875 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.876 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.877 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.878 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" -@.str.879 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.880 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.881 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.882 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.883 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.884 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.885 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.886 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.887 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.888 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.889 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" -@.str.890 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.891 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.892 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.893 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.894 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.895 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.896 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.897 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.898 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" -@.str.899 = private unnamed_addr constant [2 x i8] c",\00" -@.str.900 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.901 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" -@.str.902 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.903 = private unnamed_addr constant [5 x i8] c"'in'\00" -@.str.904 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.905 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" -@.str.906 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.907 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.908 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.909 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.910 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.911 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.912 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.913 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.914 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.915 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.916 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.917 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.918 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.919 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.920 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.921 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.922 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.923 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" -@.str.924 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.925 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.926 = private unnamed_addr constant [16 x i8] c"a variable name\00" -@.str.927 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.928 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.929 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.930 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.931 = private unnamed_addr constant [2 x i8] c"=\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 [3 x i8] c"%=\00" -@.str.937 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.938 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.939 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.940 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" -@.str.941 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.942 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.943 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.944 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.945 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.946 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.947 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.948 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" -@.str.949 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.950 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.951 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.952 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.953 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.954 = private unnamed_addr constant [5 x i8] c"'if'\00" -@.str.955 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.956 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.957 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.958 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.959 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.960 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.961 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.962 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.963 = private unnamed_addr constant [2 x i8] c">\00" -@.str.964 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.965 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.966 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.967 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.968 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.969 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.970 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.971 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.972 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.973 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.974 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.975 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.976 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.977 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.978 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.979 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.980 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.981 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.982 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.983 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.984 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.986 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.987 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.988 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.989 = private unnamed_addr constant [2 x i8] c")\00" -@.str.990 = private unnamed_addr constant [2 x i8] c")\00" -@.str.991 = private unnamed_addr constant [1 x i8] c"\00" -@.str.992 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.993 = private unnamed_addr constant [2 x i8] c":\00" -@.str.994 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.995 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" -@.str.996 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.997 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" -@.str.998 = private unnamed_addr constant [2 x i8] c",\00" -@.str.999 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1000 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1001 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1002 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1003 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1004 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.1005 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1006 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" -@.str.1007 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1008 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1009 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1010 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.1011 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1012 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1013 = private unnamed_addr constant [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"']'\00" -@.str.1017 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1018 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1019 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1021 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.1022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1023 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1024 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1025 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1026 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1027 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1028 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1029 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1030 = private unnamed_addr constant [30 x i8] c"used .depth 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 [30 x i8] c"used .depth on a null pointer\00" -@.str.1033 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1034 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1035 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.1036 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1037 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1038 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1039 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1040 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1041 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1042 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1043 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1044 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1045 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1046 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1047 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1048 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" -@.str.1049 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1050 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1051 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1052 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1053 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.1054 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1055 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1056 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1057 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.1058 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1059 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.1060 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1061 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1062 = private unnamed_addr constant [6 x i8] c"targs\00" -@.str.1063 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1064 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1065 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.1066 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1067 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1068 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1069 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.1070 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.1071 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" -@.str.1072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1073 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1074 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.1075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1076 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1077 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.1078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1079 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1080 = private unnamed_addr constant [2 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 [12 x i8] c"src/gen.fch\00" -@.str.1084 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1085 = private unnamed_addr constant [4 x i8] c"@R\09\00" -@.str.1086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1087 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1089 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1090 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1091 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1092 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1093 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1094 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1095 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1097 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1099 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1100 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1101 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1102 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1103 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1104 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1105 = private unnamed_addr constant [6 x i8] c" -> !\00" -@.str.1106 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1107 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.1108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1109 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1111 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1112 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1114 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1117 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.1118 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.1119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1120 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1123 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1124 = private unnamed_addr constant [4 x i8] c"@I\09\00" -@.str.1125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1126 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1128 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1132 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1135 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1136 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1141 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1143 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1146 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1147 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1148 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.1149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1150 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1152 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.1156 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1157 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1162 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1164 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1165 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1166 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1167 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1168 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1169 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1170 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1171 = private unnamed_addr constant [7 x i8] c"](...)\00" -@.str.1172 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1174 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1176 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"@S\09\00" -@.str.1182 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1183 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1185 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [28 x i8] c"used .idx on a null pointer\00" -@.str.1191 = private unnamed_addr constant [5 x i8] c"@SF\09\00" -@.str.1192 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1193 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1195 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1198 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 .progs 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 [1 x i8] c"\00" -@.str.1203 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1204 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1205 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1206 = private unnamed_addr constant [4 x i8] c"@E\09\00" -@.str.1207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1208 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1210 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1211 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1213 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1215 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1216 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1217 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1219 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1221 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1223 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1225 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1226 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1227 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1229 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c":\00" -@.str.1232 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1233 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.1234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1235 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.1236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1240 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1242 = private unnamed_addr constant [6 x i8] c"call \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 .body on a null pointer\00" -@.str.1245 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1246 = private unnamed_addr constant [9 x i8] c", !dbg !\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 .body on a null pointer\00" -@.str.1249 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1251 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1252 = private unnamed_addr constant [3 x i8] c"%t\00" -@.str.1253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1254 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1256 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1258 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1260 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1261 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1263 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1265 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1266 = private unnamed_addr constant [11 x i8] c"br label %\00" -@.str.1267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1268 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1269 = private unnamed_addr constant [7 x i8] c"br i1 \00" -@.str.1270 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1271 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1273 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1275 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1276 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1278 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1280 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1281 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1282 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str.1283 = private unnamed_addr constant [11 x i8] c", align 16\00" -@.str.1284 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str.1285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1286 = private unnamed_addr constant [7 x i8] c"store \00" -@.str.1287 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1288 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1289 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.1290 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1291 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1292 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1293 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1294 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1295 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1296 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1297 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1298 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1299 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1300 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1301 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1302 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1303 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1304 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1305 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1306 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1307 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1308 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1311 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1313 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1316 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1319 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1321 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1324 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1327 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1329 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1332 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.1335 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1337 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1340 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1344 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1346 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1347 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1348 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1349 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1350 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1351 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1352 = 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.1353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1354 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1355 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" -@.str.1356 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1357 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1359 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1361 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.1362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1363 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1365 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.1366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1367 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1370 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1371 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1372 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1373 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1374 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1375 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1376 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" -@.str.1377 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1378 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1379 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1381 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1382 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1383 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1385 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1386 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1387 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1388 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1389 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" -@.str.1390 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1391 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1393 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1394 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1396 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1397 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.1402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1403 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1404 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.1405 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1406 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1407 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1408 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.1409 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1410 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.1411 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1412 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1413 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1414 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1415 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1416 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1417 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" -@.str.1418 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1419 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1420 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.1421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1422 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1423 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1424 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1425 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1426 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1427 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1428 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1429 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1430 = private unnamed_addr constant [4 x i8] c"%S.\00" -@.str.1431 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1432 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1434 = private unnamed_addr constant [7 x i8] c"{ i1, \00" -@.str.1435 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" -@.str.1436 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1437 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1438 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1439 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1440 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1441 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1442 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1443 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1444 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.1445 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1446 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1447 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1448 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1449 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.1450 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.1451 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1452 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1453 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1454 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1455 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1456 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1458 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1459 = private unnamed_addr constant [5 x i8] c"arr_\00" -@.str.1460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1461 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1462 = private unnamed_addr constant [5 x i8] c"map_\00" -@.str.1463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1464 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1466 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1467 = private unnamed_addr constant [3 x i8] c"E_\00" -@.str.1468 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1469 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1470 = private unnamed_addr constant [3 x i8] c"S_\00" -@.str.1471 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1472 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.1473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1476 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1477 = private unnamed_addr constant [7 x i8] c"@.str.\00" -@.str.1478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1479 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1480 = private unnamed_addr constant [2 x i8] c"\5C\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 .head on a null pointer\00" -@.str.1483 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str.1484 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str.1485 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1486 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" -@.str.1487 = private unnamed_addr constant [7 x i8] c"{ ptr \00" -@.str.1488 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1489 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" -@.str.1490 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1491 = private unnamed_addr constant [6 x i8] c"panic\00" -@.str.1492 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str.1493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1494 = private unnamed_addr constant [30 x i8] c"used .files 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 [28 x i8] c"call void @finch_panic(ptr \00" -@.str.1497 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1498 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1499 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1500 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1502 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1503 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.1504 = private unnamed_addr constant [8 x i8] c"inrange\00" -@.str.1505 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" -@.str.1506 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1508 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1510 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" -@.str.1511 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1512 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1513 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1514 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1515 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1517 = private unnamed_addr constant [29 x i8] c"used .term 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 .body 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 [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.1526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1527 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1529 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1531 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1533 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1535 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1537 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1539 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.1540 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.1541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1542 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1544 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1546 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1547 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1548 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.1549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1550 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1552 = private unnamed_addr constant [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp on a null pointer\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 .term 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 [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1559 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1560 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1561 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1562 = private unnamed_addr constant [7 x i8] c"n.cond\00" -@.str.1563 = private unnamed_addr constant [7 x i8] c"n.body\00" -@.str.1564 = private unnamed_addr constant [6 x i8] c"n.end\00" -@.str.1565 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1566 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.1567 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1568 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1570 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1571 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.1572 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1576 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1577 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.1578 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1579 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1580 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1581 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1582 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1583 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1584 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1585 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1586 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1587 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" -@.str.1588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1589 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1591 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1592 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1594 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1595 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1596 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1597 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1598 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1599 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1600 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1601 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" -@.str.1602 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1603 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1604 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1606 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1607 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1608 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1610 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1611 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1615 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1616 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1617 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" -@.str.1618 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1620 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1622 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1623 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1624 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1625 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1626 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1627 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1628 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.1629 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1633 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1635 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1636 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1638 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1639 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" -@.str.1640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1642 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" -@.str.1643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1645 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1646 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1647 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" -@.str.1648 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1649 = private unnamed_addr constant [31 x i8] c"call void @finch_str_drop(ptr \00" -@.str.1650 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1651 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1652 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1653 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1655 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.1656 = private unnamed_addr constant [13 x i8] c"@finch.drop.\00" -@.str.1657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1658 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1660 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1661 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1663 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1664 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1665 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1666 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1667 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1668 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1670 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1671 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_free(ptr %a)\00" -@.str.1672 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1676 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1677 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1678 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1680 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1681 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1682 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1683 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1685 = private unnamed_addr constant [34 x i8] c"call void @finch_map_free(ptr %a)\00" -@.str.1686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1690 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1691 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1694 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1695 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1696 = private unnamed_addr constant [9 x i8] c"(ptr %a)\00" -@.str.1697 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1698 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1699 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1700 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1702 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1704 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1707 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1709 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1710 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1711 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.1712 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1713 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1714 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" -@.str.1715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1716 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1717 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1718 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1719 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1720 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1721 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1722 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1723 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1724 = private unnamed_addr constant [5 x i8] c"%lld\00" -@.str.1725 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1726 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1727 = private unnamed_addr constant [5 x i8] c"%llu\00" -@.str.1728 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1729 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1730 = private unnamed_addr constant [3 x i8] c"%g\00" -@.str.1731 = private unnamed_addr constant [8 x i8] c"double \00" -@.str.1732 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1733 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1734 = private unnamed_addr constant [9 x i8] c"sext i8 \00" -@.str.1735 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1736 = private unnamed_addr constant [5 x i8] c"'%c'\00" -@.str.1737 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1738 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.1739 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1740 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1741 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1742 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1743 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1744 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1745 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1746 = private unnamed_addr constant [3 x i8] c"%s\00" -@.str.1747 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.1748 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1749 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1750 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1751 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.1752 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1753 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" -@.str.1754 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1755 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1756 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1757 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1758 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1759 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1760 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1761 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1762 = private unnamed_addr constant [9 x i8] c"ptr.null\00" -@.str.1763 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" -@.str.1764 = private unnamed_addr constant [9 x i8] c"ptr.done\00" -@.str.1765 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1766 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1767 = private unnamed_addr constant [7 x i8] c"0x%llx\00" -@.str.1768 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1769 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.1770 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1771 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1772 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1773 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1774 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1775 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1776 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1777 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" -@.str.1778 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1779 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" -@.str.1780 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1781 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1782 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1783 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1784 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.1785 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" -@.str.1786 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1787 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1788 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1789 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" -@.str.1790 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1791 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1793 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" -@.str.1794 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.1795 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1796 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1797 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1798 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" -@.str.1799 = private unnamed_addr constant [6 x i8] c", i8 \00" -@.str.1800 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1801 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1802 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1803 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" -@.str.1804 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1805 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.1806 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1807 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1808 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1809 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" -@.str.1810 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1811 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1812 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1813 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1814 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1815 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" -@.str.1816 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1817 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1818 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1819 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1820 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1821 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1822 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" -@.str.1823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1824 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1826 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1827 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1830 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1831 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1832 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1833 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1834 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1835 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1836 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1837 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.1838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1839 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1840 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1841 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1842 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1843 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1844 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1846 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1847 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1848 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1849 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1851 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1853 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1854 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1855 = private unnamed_addr constant [11 x i8] c"enum.other\00" -@.str.1856 = private unnamed_addr constant [10 x i8] c"enum.done\00" -@.str.1857 = private unnamed_addr constant [7 x i8] c"enum.v\00" -@.str.1858 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1860 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1862 = private unnamed_addr constant [12 x i8] c"switch i32 \00" -@.str.1863 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1864 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1865 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1866 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1868 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1870 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1872 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1873 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1874 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" -@.str.1875 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str.1876 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1877 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1878 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1879 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1880 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1881 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1882 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1883 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1884 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1885 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.1886 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1887 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1888 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1889 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1891 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1892 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1893 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1894 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1895 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1896 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1897 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1898 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1899 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1900 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1901 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1902 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1903 = private unnamed_addr constant [5 x i8] c"%buf\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 [5 x i8] c"%buf\00" -@.str.1907 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1908 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1911 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1912 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.1913 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1915 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1918 = private unnamed_addr constant [32 x i8] c"used .structs 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 [4 x i8] c"i64\00" -@.str.1921 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1922 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1924 = private unnamed_addr constant [10 x i8] c"sum.other\00" -@.str.1925 = private unnamed_addr constant [9 x i8] c"sum.done\00" -@.str.1926 = private unnamed_addr constant [6 x i8] c"sum.v\00" -@.str.1927 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1928 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1930 = private unnamed_addr constant [12 x i8] c"switch i64 \00" -@.str.1931 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1932 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1934 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1936 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1938 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1940 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1941 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1942 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1944 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1945 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1947 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1948 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1950 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1953 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1954 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1955 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1956 = private unnamed_addr constant [4 x i8] c"(?)\00" -@.str.1957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1958 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1960 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1961 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1962 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1963 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1964 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1966 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1967 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1968 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1970 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1973 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1974 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1976 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1977 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" -@.str.1978 = private unnamed_addr constant [7 x i8] c"trunc \00" -@.str.1979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1980 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1981 = private unnamed_addr constant [6 x i8] c"sext \00" -@.str.1982 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1983 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1984 = private unnamed_addr constant [6 x i8] c"zext \00" -@.str.1985 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1986 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1987 = private unnamed_addr constant [7 x i8] c"fpext \00" -@.str.1988 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1989 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1990 = private unnamed_addr constant [9 x i8] c"fptrunc \00" -@.str.1991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1992 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1993 = private unnamed_addr constant [8 x i8] c"sitofp \00" -@.str.1994 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1995 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1996 = private unnamed_addr constant [8 x i8] c"uitofp \00" -@.str.1997 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1998 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1999 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2000 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2001 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2002 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2003 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2004 = private unnamed_addr constant [12 x i8] c"the number \00" -@.str.2005 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" -@.str.2006 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2007 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.2008 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2009 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2010 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2011 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2012 = private unnamed_addr constant [10 x i8] c" must be \00" -@.str.2013 = private unnamed_addr constant [15 x i8] c", but this is \00" -@.str.2014 = private unnamed_addr constant [7 x i8] c" (use \00" -@.str.2015 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" -@.str.2016 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" -@.str.2017 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2018 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2019 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2021 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" -@.str.2022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2023 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2034 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [12 x i8] c"src/gen.fch\00" -@.str.2039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2040 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 [12 x i8] c"src/gen.fch\00" -@.str.2045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2046 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2048 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2051 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2054 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2057 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2059 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2062 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2065 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2067 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.2068 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.2069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2070 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2071 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2072 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2073 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2074 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.2075 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.2076 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.2077 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.2078 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.2079 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.2080 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.2081 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.2082 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2083 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.2084 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2085 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2086 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2087 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2088 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2089 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2090 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2091 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.2092 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2093 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.2094 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.2095 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2096 = private unnamed_addr constant [19 x i8] c"a variable named '\00" -@.str.2097 = private unnamed_addr constant [22 x i8] c"' already exists here\00" -@.str.2098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2099 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2100 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2101 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" -@.str.2102 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2103 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" -@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2105 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2107 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2110 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2116 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2118 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2121 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2123 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.2124 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2126 = private unnamed_addr constant [2 x i8] c"$\00" -@.str.2127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2128 = private unnamed_addr constant [30 x i8] c"used .progs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.2131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2133 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .idx on a null pointer\00" -@.str.2137 = private unnamed_addr constant [4 x i8] c"@V\09\00" -@.str.2138 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2139 = private unnamed_addr constant [2 x i8] c"\09\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 .files 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 [2 x i8] c"\09\00" -@.str.2144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2147 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2149 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2150 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2151 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.2152 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2153 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.2154 = private unnamed_addr constant [1 x i8] c"\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 .scopes on a null pointer\00" -@.str.2157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2158 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2160 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2162 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2164 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2166 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2169 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2173 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2177 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2179 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2181 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2182 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2183 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2187 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2191 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2195 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2197 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2199 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2201 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2202 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.2203 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.2204 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2206 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2207 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.2208 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.2209 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.2210 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.2211 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.2212 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.2213 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.2214 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.2215 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.2216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2217 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.2218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2219 = private unnamed_addr constant [27 x i8] c"used .mm 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 [5 x i8] c"call\00" -@.str.2222 = private unnamed_addr constant [5 x i8] c"addr\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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2227 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2230 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2232 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2235 = private unnamed_addr constant [30 x i8] c"used .progs 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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2243 = private unnamed_addr constant [13 x i8] c"the struct '\00" -@.str.2244 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2246 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2248 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2250 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2252 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2254 = private unnamed_addr constant [30 x i8] c"used .progs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2259 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2261 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2264 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2271 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2272 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2274 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2275 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2276 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2277 = private unnamed_addr constant [7 x i8] c" twice\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 .sums 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2283 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2284 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2285 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2287 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2289 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2290 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2291 = private unnamed_addr constant [7 x i8] c" twice\00" -@.str.2292 = private unnamed_addr constant [17 x i8] c"two variants of \00" -@.str.2293 = private unnamed_addr constant [18 x i8] c" have the number \00" -@.str.2294 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" -@.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2296 = private unnamed_addr constant [30 x i8] c"used .enums 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.2299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2300 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2301 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2303 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2306 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2308 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2310 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2313 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2315 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2318 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2322 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2323 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2324 = private unnamed_addr constant [19 x i8] c"' is defined twice\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 [1 x i8] c"\00" -@.str.2328 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2329 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" -@.str.2330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2331 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2333 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2335 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2337 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2338 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2339 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2340 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2343 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2344 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2345 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2346 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" -@.str.2347 = 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.2348 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2349 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2350 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2352 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2354 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2355 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" -@.str.2356 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2358 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2359 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2360 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2361 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2362 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" -@.str.2363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2364 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2365 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2367 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2368 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2369 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2371 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2372 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2373 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2375 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2377 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" -@.str.2378 = private unnamed_addr constant [25 x i8] c" the method is called on\00" -@.str.2379 = 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 [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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2385 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2390 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2393 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2395 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2399 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"self\00" -@.str.2403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2405 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2408 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.2409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2410 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2413 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2415 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2418 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [5 x i8] c"self\00" -@.str.2422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2424 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2427 = private unnamed_addr constant [27 x i8] c"used .mm 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 [29 x i8] c"used .sigs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2433 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2437 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.2442 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2445 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2449 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2452 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [34 x i8] c"used .templates 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 [34 x i8] c"used .templates on a null pointer\00" -@.str.2459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2460 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2461 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2462 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2463 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" -@.str.2464 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" -@.str.2465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2466 = private unnamed_addr constant [34 x i8] c"used .templates 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 [8 x i8] c" takes \00" -@.str.2469 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" -@.str.2470 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2471 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2472 = private unnamed_addr constant [12 x i8] c"], but got \00" -@.str.2473 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2474 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2476 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [7 x i8] c"struct\00" -@.str.2480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2481 = private unnamed_addr constant [34 x i8] c"used .templates 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 [2 x i8] c"[\00" -@.str.2484 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2486 = private unnamed_addr constant [30 x i8] c"used .progs 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 [8 x i8] c"@finch.\00" -@.str.2490 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2491 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2492 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2493 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2494 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2496 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.2500 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2502 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2504 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2506 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2508 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2509 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2510 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2512 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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 [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .tnames 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 [30 x i8] c"used .targs on a null pointer\00" -@.str.2522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2523 = private unnamed_addr constant [31 x i8] c"used .module 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2527 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2529 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2530 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2532 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2535 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" -@.str.2536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2538 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2540 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2541 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2542 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2545 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2546 = private unnamed_addr constant [4 x i8] c"map\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 [12 x i8] c"src/gen.fch\00" -@.str.2550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2551 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2552 = private unnamed_addr constant [7 x i8] c"struct\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 [12 x i8] c"src/gen.fch\00" -@.str.2558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2559 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2562 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2565 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2566 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" -@.str.2567 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2568 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2569 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2570 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2572 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.2573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2574 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2575 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2577 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" -@.str.2578 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2579 = private unnamed_addr constant [6 x i8] c" from\00" -@.str.2580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2582 = private unnamed_addr constant [17 x i8] c"can't tell what \00" -@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2584 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" -@.str.2585 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.2586 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2588 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2593 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.2594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2595 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2596 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2597 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2599 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2601 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2605 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2607 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2608 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2609 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2611 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2614 = private unnamed_addr constant [32 x i8] c"used .structs 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 .structs on a null pointer\00" -@.str.2618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2620 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2622 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2623 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2624 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2625 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2627 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" -@.str.2628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2629 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2632 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2635 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2638 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2641 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2642 = private unnamed_addr constant [6 x i8] c"%S.C.\00" -@.str.2643 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2644 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2645 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2647 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2650 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2653 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2656 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2658 = private unnamed_addr constant [30 x i8] c"used .targs 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2662 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2665 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2667 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2670 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2671 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2673 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2675 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2676 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2677 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2679 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2681 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2683 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2685 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2691 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2695 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2697 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2698 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" -@.str.2699 = private unnamed_addr constant [8 x i8] c"] or []\00" -@.str.2700 = private unnamed_addr constant [16 x i8] c" for that field\00" -@.str.2701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2702 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2705 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2707 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2710 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2711 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2712 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2713 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2716 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2717 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2718 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2719 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2722 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2726 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2728 = private unnamed_addr constant [31 x i8] c"used .module 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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2733 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2734 = private unnamed_addr constant [4 x i8] c"%S.\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 .structs on a null pointer\00" -@.str.2737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2738 = private unnamed_addr constant [2 x i8] c".\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 .structs on a null pointer\00" -@.str.2741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2742 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2743 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2744 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2746 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2747 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2748 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2749 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2750 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2752 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.2753 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2754 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2755 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2756 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2757 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2758 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2759 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2760 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2761 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2762 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2763 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2764 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2765 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2766 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2768 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2770 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2772 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" -@.str.2773 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2774 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2775 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2776 = private unnamed_addr constant [13 x i8] c", baseType: \00" -@.str.2777 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2778 = private unnamed_addr constant [11 x i8] c", offset: \00" -@.str.2779 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2780 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2781 = private unnamed_addr constant [10 x i8] c"\22, size: \00" -@.str.2782 = private unnamed_addr constant [13 x i8] c", encoding: \00" -@.str.2783 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2784 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2785 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2786 = private unnamed_addr constant [3 x i8] c"T:\00" -@.str.2787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2788 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2790 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2792 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2793 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2795 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2796 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2797 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" -@.str.2798 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2799 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2800 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" -@.str.2801 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2802 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2803 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2804 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2805 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2806 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2807 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2808 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2809 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2810 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" -@.str.2811 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2812 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2814 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.2815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2816 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" -@.str.2817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2818 = private unnamed_addr constant [11 x i8] c"\22, value: \00" -@.str.2819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2820 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2821 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" -@.str.2822 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2823 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" -@.str.2824 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2825 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2826 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2828 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2831 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2832 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2834 = private unnamed_addr constant [27 x i8] c"used .md 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 [6 x i8] c"fixed\00" -@.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2838 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" -@.str.2839 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2840 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" -@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2842 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2843 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" -@.str.2844 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2846 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2848 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2849 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2850 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2851 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2853 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2854 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2855 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2856 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2857 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2858 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2859 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2860 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2861 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" -@.str.2862 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2863 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2864 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2866 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2868 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2869 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2870 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" -@.str.2871 = private unnamed_addr constant [8 x i8] c"entries\00" -@.str.2872 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2873 = private unnamed_addr constant [5 x i8] c"used\00" -@.str.2874 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2875 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2876 = private unnamed_addr constant [5 x i8] c"icap\00" -@.str.2877 = private unnamed_addr constant [5 x i8] c"adds\00" -@.str.2878 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2880 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2881 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2882 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" -@.str.2883 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2884 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2886 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2888 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2890 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2897 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2898 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2899 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2900 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" -@.str.2901 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2902 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2904 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2906 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2907 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" -@.str.2908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2909 = private unnamed_addr constant [27 x i8] c"used .md 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 [12 x i8] c"src/gen.fch\00" -@.str.2912 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2913 = private unnamed_addr constant [3 x i8] c"L:\00" -@.str.2914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2915 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2916 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2918 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2919 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2921 = private unnamed_addr constant [33 x i8] c"used .dbgScope 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 [32 x i8] c"used .mdcache 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 [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2926 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2927 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" -@.str.2928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2929 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2930 = private unnamed_addr constant [11 x i8] c", column: \00" -@.str.2931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2932 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2933 = private unnamed_addr constant [11 x i8] c", scope: !\00" -@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2935 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2936 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2938 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2940 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2941 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2942 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2943 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2945 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" -@.str.2946 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2947 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2948 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" -@.str.2949 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" -@.str.2950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2951 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2952 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2953 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2954 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2955 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" -@.str.2956 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" -@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2958 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2960 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2961 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2962 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2963 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2964 = private unnamed_addr constant [8 x i8] c", arg: \00" -@.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2966 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2967 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" -@.str.2968 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2970 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2971 = private unnamed_addr constant [10 x i8] c", file: !\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 .mdfiles 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 [9 x i8] c", line: \00" -@.str.2976 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2977 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2979 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2981 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2982 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" -@.str.2983 = private unnamed_addr constant [13 x i8] c", metadata !\00" -@.str.2984 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" -@.str.2985 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" -@.str.2986 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" -@.str.2987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2988 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2989 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2990 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.2991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2992 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2994 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2995 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2997 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3002 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3004 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.3005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3006 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3008 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3010 = private unnamed_addr constant [28 x i8] c"used .cur 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 .targs on a null pointer\00" -@.str.3013 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3015 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3017 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3018 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.3019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3020 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3021 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3023 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3025 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3027 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3030 = private unnamed_addr constant [28 x i8] c"used .cur 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 [29 x i8] c"used .body 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 [32 x i8] c"used .allocas on a null pointer\00" -@.str.3036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3037 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.3040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3041 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3043 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3045 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3047 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3049 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3051 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3053 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3055 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3057 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3059 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3060 = private unnamed_addr constant [10 x i8] c"ptr %self\00" -@.str.3061 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3063 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3064 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3066 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3068 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3070 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3072 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3073 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3075 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3076 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3077 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3079 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3081 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3083 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str.3084 = private unnamed_addr constant [3 x i8] c"%p\00" -@.str.3085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3086 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3089 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3091 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3093 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3096 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3099 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3102 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3105 = private unnamed_addr constant [29 x i8] c"used .term 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3109 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.3110 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" -@.str.3111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3112 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3115 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3117 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3118 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3119 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3120 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3121 = private unnamed_addr constant [8 x i8] c" !dbg !\00" -@.str.3122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3123 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.3126 = private unnamed_addr constant [17 x i8] c"define internal \00" -@.str.3127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3128 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3129 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3131 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3132 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.3133 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3134 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3135 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.3136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3137 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.3138 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3139 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3141 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.3142 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3143 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.3144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3145 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3146 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00" -@.str.3147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3148 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3150 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3151 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3152 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.3153 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.3154 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.3155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3156 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3159 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3160 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.3161 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3162 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3163 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3164 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.3165 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3167 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3168 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.3169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3170 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3172 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3175 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3178 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3182 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3185 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3186 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3187 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.3188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3190 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" -@.str.3191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3192 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3193 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" -@.str.3194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3195 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3197 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3199 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3200 = private unnamed_addr constant [19 x i8] c"unknown statement \00" -@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3202 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3204 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" -@.str.3205 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3207 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" -@.str.3208 = private unnamed_addr constant [8 x i8] c" = null\00" -@.str.3209 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3212 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3213 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3215 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.3216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3218 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3222 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3223 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.3224 = private unnamed_addr constant [19 x i8] c"' (create it with \00" -@.str.3225 = private unnamed_addr constant [9 x i8] c" := ...)\00" -@.str.3226 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.3227 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.3228 = private unnamed_addr constant [10 x i8] c"the value\00" -@.str.3229 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3230 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3231 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3232 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.3233 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3234 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3236 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3238 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3242 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3244 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3245 = private unnamed_addr constant [12 x i8] c"a condition\00" -@.str.3246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3247 = private unnamed_addr constant [5 x i8] c"then\00" -@.str.3248 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.3249 = private unnamed_addr constant [6 x i8] c"endif\00" -@.str.3250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3252 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3255 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3256 = private unnamed_addr constant [11 x i8] c"while.cond\00" -@.str.3257 = private unnamed_addr constant [11 x i8] c"while.body\00" -@.str.3258 = private unnamed_addr constant [10 x i8] c"while.end\00" -@.str.3259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3260 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3262 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3265 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3267 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3269 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3271 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3273 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3275 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3276 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3277 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3278 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3279 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3281 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3283 = private unnamed_addr constant [21 x i8] c"the start of a range\00" -@.str.3284 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3285 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3287 = private unnamed_addr constant [19 x i8] c"the end of a range\00" -@.str.3288 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3289 = private unnamed_addr constant [9 x i8] c"for.cond\00" -@.str.3290 = private unnamed_addr constant [9 x i8] c"for.body\00" -@.str.3291 = private unnamed_addr constant [9 x i8] c"for.step\00" -@.str.3292 = private unnamed_addr constant [8 x i8] c"for.end\00" -@.str.3293 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3294 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3295 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3297 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3299 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3301 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3304 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3306 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3307 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3308 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3309 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3310 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3315 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3316 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3317 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3319 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3320 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3321 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3322 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.3323 = private unnamed_addr constant [9 x i8] c"map.cond\00" -@.str.3324 = private unnamed_addr constant [10 x i8] c"map.check\00" -@.str.3325 = private unnamed_addr constant [9 x i8] c"map.body\00" -@.str.3326 = private unnamed_addr constant [9 x i8] c"map.step\00" -@.str.3327 = private unnamed_addr constant [8 x i8] c"map.end\00" -@.str.3328 = private unnamed_addr constant [12 x i8] c"map.changed\00" -@.str.3329 = private unnamed_addr constant [9 x i8] c"map.same\00" -@.str.3330 = private unnamed_addr constant [4 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 [15 x i8] c", i32 0, i32 6\00" -@.str.3334 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3335 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3336 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" -@.str.3337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3338 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3340 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3342 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3344 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3345 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3346 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3347 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3349 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3350 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3351 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3352 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3353 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3354 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3356 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3358 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3360 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3363 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3365 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3366 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3367 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3368 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3369 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3371 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3372 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3373 = private unnamed_addr constant [6 x i8] c"$list\00" -@.str.3374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3375 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3376 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3377 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3378 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3380 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" -@.str.3381 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" -@.str.3382 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3383 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3387 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3388 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3389 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3390 = private unnamed_addr constant [10 x i8] c"each.cond\00" -@.str.3391 = private unnamed_addr constant [10 x i8] c"each.body\00" -@.str.3392 = private unnamed_addr constant [10 x i8] c"each.step\00" -@.str.3393 = private unnamed_addr constant [9 x i8] c"each.end\00" -@.str.3394 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3395 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.3396 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3397 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3398 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3399 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3400 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3401 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3402 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3403 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3405 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3407 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3408 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3409 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3410 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3413 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3415 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3416 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3418 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3419 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3421 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3422 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" -@.str.3423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3424 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3426 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3429 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3430 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3432 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3435 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3436 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3437 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3439 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3440 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" -@.str.3441 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3442 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3444 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3446 = private unnamed_addr constant [18 x i8] c"the error message\00" -@.str.3447 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3449 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3450 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3451 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3453 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3454 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3455 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3457 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3459 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3460 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3462 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3464 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3465 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" -@.str.3466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3467 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3468 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3470 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3471 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3472 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3474 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3475 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3477 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3478 = private unnamed_addr constant [15 x i8] c"' must return \00" -@.str.3479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3480 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3482 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3484 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3485 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3487 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3490 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3494 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3496 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3500 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.3501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3502 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3506 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3508 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3512 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.3516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3517 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3519 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3521 = private unnamed_addr constant [19 x i8] c"the returned value\00" -@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3523 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3524 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3526 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3527 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" -@.str.3528 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3530 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3531 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3532 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3534 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3535 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3536 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3537 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3539 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3540 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3541 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3543 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3544 = private unnamed_addr constant [2 x i8] c" \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 [8 x i8] c"{ i64, \00" -@.str.3548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3549 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3551 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.3552 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.3553 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.3554 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3555 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3556 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3557 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.3558 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3559 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3560 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3561 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3562 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3563 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.3564 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3567 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.3568 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.3569 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3570 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3571 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3573 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.3574 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" -@.str.3575 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3576 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3577 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3578 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3579 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3580 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" -@.str.3581 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3582 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3583 = private unnamed_addr constant [8 x i8] c"map.new\00" -@.str.3584 = private unnamed_addr constant [9 x i8] c"map.have\00" -@.str.3585 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.3586 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3587 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3596 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3597 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" -@.str.3598 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3599 = private unnamed_addr constant [12 x i8] c"map.missing\00" -@.str.3600 = private unnamed_addr constant [10 x i8] c"map.found\00" -@.str.3601 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3602 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3603 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3604 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3605 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3606 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" -@.str.3607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3608 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3610 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3611 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3613 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3615 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3616 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3617 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" -@.str.3618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3619 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3620 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3622 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3623 = private unnamed_addr constant [4 x i8] c"int\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 [5 x i8] c"void\00" -@.str.3627 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3629 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" -@.str.3630 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3631 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3633 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" -@.str.3634 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3635 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3637 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3639 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [22 x i8] c"every key of this map\00" -@.str.3645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3649 = private unnamed_addr constant [24 x i8] c"every value of this map\00" -@.str.3650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3653 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3654 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3655 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3656 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3657 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3660 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3661 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.3662 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3663 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3664 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3665 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3666 = private unnamed_addr constant [11 x i8] c"remove.hit\00" -@.str.3667 = private unnamed_addr constant [11 x i8] c"remove.end\00" -@.str.3668 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" -@.str.3669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3670 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3671 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3672 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3673 = private unnamed_addr constant [10 x i8] c"get.found\00" -@.str.3674 = private unnamed_addr constant [12 x i8] c"get.missing\00" -@.str.3675 = private unnamed_addr constant [9 x i8] c"get.fend\00" -@.str.3676 = private unnamed_addr constant [9 x i8] c"get.mend\00" -@.str.3677 = private unnamed_addr constant [8 x i8] c"get.end\00" -@.str.3678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3680 = private unnamed_addr constant [12 x i8] c"the default\00" -@.str.3681 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3682 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3683 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3684 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3685 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3686 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3687 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.3688 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3689 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3690 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3691 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3693 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3694 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3695 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3696 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3697 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3698 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" -@.str.3699 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3700 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3701 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.3702 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3703 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3704 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3705 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3706 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3707 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3708 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3709 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3710 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3711 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.3712 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3713 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3714 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3715 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3717 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3718 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3719 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3720 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3721 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3722 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3724 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3725 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3726 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3727 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3728 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3729 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3730 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3731 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3732 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3733 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3734 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3735 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3736 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3737 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" -@.str.3738 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" -@.str.3739 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3740 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3742 = private unnamed_addr constant [30 x i8] c"used .enums 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 [2 x i8] c"'\00" -@.str.3745 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" -@.str.3746 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.3747 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3749 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3750 = private unnamed_addr constant [13 x i8] c"this pattern\00" -@.str.3751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3752 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3753 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3755 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" -@.str.3756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3757 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3758 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3759 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3760 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3761 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3762 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3764 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3767 = private unnamed_addr constant [10 x i8] c"match.end\00" -@.str.3768 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3770 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" -@.str.3771 = private unnamed_addr constant [10 x i8] c"match.arm\00" -@.str.3772 = private unnamed_addr constant [11 x i8] c"match.next\00" -@.str.3773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3774 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3775 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3777 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3779 = private unnamed_addr constant [53 x i8] c"an arm with several variants can't name their values\00" -@.str.3780 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3781 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3783 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3785 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3786 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3788 = private unnamed_addr constant [9 x i8] c"match.or\00" -@.str.3789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3790 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3793 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.3794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3795 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3799 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3800 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3801 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3806 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3807 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3808 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3809 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" -@.str.3810 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" -@.str.3811 = private unnamed_addr constant [11 x i8] c"match.from\00" -@.str.3812 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3814 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3816 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3819 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.3822 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3824 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3825 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3826 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3827 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3829 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3831 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3832 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3833 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3834 = private unnamed_addr constant [12 x i8] c"a match on \00" -@.str.3835 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" -@.str.3836 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3837 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.3838 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3840 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3841 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3843 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3844 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3845 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3846 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3847 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3848 = private unnamed_addr constant [3 x i8] c"[ \00" -@.str.3849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3850 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3851 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3852 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3854 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3855 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3856 = 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.3857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3858 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3860 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3862 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3864 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3865 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3867 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3870 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3872 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3874 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3876 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3878 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3880 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3881 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" -@.str.3882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3883 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3884 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" -@.str.3885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3886 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3887 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3889 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3890 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3892 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3894 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" -@.str.3895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3896 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3897 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" -@.str.3898 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" -@.str.3899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3900 = private unnamed_addr constant [11 x i8] c"try.failed\00" -@.str.3901 = private unnamed_addr constant [7 x i8] c"try.ok\00" -@.str.3902 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3904 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3905 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3906 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3908 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3909 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3910 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3912 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3914 = private unnamed_addr constant [10 x i8] c"or.failed\00" -@.str.3915 = private unnamed_addr constant [6 x i8] c"or.ok\00" -@.str.3916 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3917 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3920 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3921 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3923 = 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.3924 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3925 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3926 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3927 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3929 = 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.3930 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3931 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3934 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" -@.str.3935 = private unnamed_addr constant [8 x i8] c"or.bend\00" -@.str.3936 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3937 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3938 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3939 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3940 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3941 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3942 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3943 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3944 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3945 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3947 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.3948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3949 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.3950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3951 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3953 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3954 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3955 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3956 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3957 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3958 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3960 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3961 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3962 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3963 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3964 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3965 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3966 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3967 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3968 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3969 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.3970 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3971 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3972 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.3973 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3974 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3975 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3976 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3977 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3978 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3979 = private unnamed_addr constant [20 x i8] c"unknown expression \00" -@.str.3980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3981 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3982 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3984 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" -@.str.3985 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.3986 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.3987 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3988 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.3989 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" -@.str.3990 = private unnamed_addr constant [5 x i8] c"xor \00" -@.str.3991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3992 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str.3993 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" -@.str.3994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3995 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3997 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3998 = private unnamed_addr constant [5 x i8] c"sub \00" -@.str.3999 = private unnamed_addr constant [5 x i8] c" 0, \00" -@.str.4000 = private unnamed_addr constant [6 x i8] c"fneg \00" -@.str.4001 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4002 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" -@.str.4003 = private unnamed_addr constant [12 x i8] c"can't use '\00" -@.str.4004 = private unnamed_addr constant [6 x i8] c"' on \00" -@.str.4005 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.4006 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4007 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4008 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4009 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" -@.str.4010 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4011 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4012 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4013 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4014 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" -@.str.4015 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" -@.str.4016 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4017 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4018 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4019 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4020 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4021 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" -@.str.4022 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4023 = private unnamed_addr constant [6 x i8] c"array\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 [32 x i8] c" (compare the parts one by one)\00" -@.str.4027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4028 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4030 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4032 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4034 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4036 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4038 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4040 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4042 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4044 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4046 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4048 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4050 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4052 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4054 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4056 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4058 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4060 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4062 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4064 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4066 = private unnamed_addr constant [30 x i8] c"used .value 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 .ty on a null pointer\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 .ty 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 [26 x i8] c"used .v on a null pointer\00" -@.str.4073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4074 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4076 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4078 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4080 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\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 .ty 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 .ty 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 [26 x i8] c"used .v 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 .ty 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 [27 x i8] c"used .ty on a null pointer\00" -@.str.4091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4092 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\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 .value on a null pointer\00" -@.str.4095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4096 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4098 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4100 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4102 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4103 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4105 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4107 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4109 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4111 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4113 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4114 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4116 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4118 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4120 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4122 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4123 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4125 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4127 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4128 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4129 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4131 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4133 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4134 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4136 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4137 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4138 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4139 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4140 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4142 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4143 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4144 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4145 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4146 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4147 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" -@.str.4148 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4149 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4150 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4151 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4152 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4153 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4154 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4155 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4156 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4157 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4158 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4159 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4160 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4161 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4162 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4163 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4164 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4165 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4166 = private unnamed_addr constant [5 x i8] c"sdiv\00" -@.str.4167 = private unnamed_addr constant [5 x i8] c"srem\00" -@.str.4168 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4169 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4170 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4171 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4172 = private unnamed_addr constant [5 x i8] c"ashr\00" -@.str.4173 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4174 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4175 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4176 = private unnamed_addr constant [5 x i8] c"udiv\00" -@.str.4177 = private unnamed_addr constant [5 x i8] c"urem\00" -@.str.4178 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4179 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4180 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4181 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4182 = private unnamed_addr constant [5 x i8] c"lshr\00" -@.str.4183 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4184 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4185 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4186 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4187 = private unnamed_addr constant [9 x i8] c"icmp eq \00" -@.str.4188 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4189 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4190 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4192 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4193 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4194 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4195 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4196 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4197 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4198 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4199 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4200 = private unnamed_addr constant [5 x i8] c"fadd\00" -@.str.4201 = private unnamed_addr constant [5 x i8] c"fsub\00" -@.str.4202 = private unnamed_addr constant [5 x i8] c"fmul\00" -@.str.4203 = private unnamed_addr constant [5 x i8] c"fdiv\00" -@.str.4204 = private unnamed_addr constant [5 x i8] c"frem\00" -@.str.4205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4206 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4207 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4208 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4209 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4210 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4211 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4212 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4213 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4214 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4215 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4216 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4217 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" -@.str.4218 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4219 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4220 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4221 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4222 = private unnamed_addr constant [6 x i8] c" ptr \00" -@.str.4223 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4224 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4225 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4226 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4227 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" -@.str.4228 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4229 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4230 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4231 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4232 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4233 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4234 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4235 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4236 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4237 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" -@.str.4238 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4239 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4240 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4241 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str.4242 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4243 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4244 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4245 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4246 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4247 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4248 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4249 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4250 = private unnamed_addr constant [4 x i8] c"oeq\00" -@.str.4251 = private unnamed_addr constant [4 x i8] c"une\00" -@.str.4252 = private unnamed_addr constant [4 x i8] c"olt\00" -@.str.4253 = private unnamed_addr constant [4 x i8] c"ole\00" -@.str.4254 = private unnamed_addr constant [4 x i8] c"ogt\00" -@.str.4255 = private unnamed_addr constant [4 x i8] c"oge\00" -@.str.4256 = private unnamed_addr constant [6 x i8] c"fcmp \00" -@.str.4257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4258 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4259 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4260 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4261 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4262 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4263 = 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.4264 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4265 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4266 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4267 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4268 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4269 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4270 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4271 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4272 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4273 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4274 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4275 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4276 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4277 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4278 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4279 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4280 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4281 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4282 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4283 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4284 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4285 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4286 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4287 = private unnamed_addr constant [4 x i8] c"ult\00" -@.str.4288 = private unnamed_addr constant [4 x i8] c"ule\00" -@.str.4289 = private unnamed_addr constant [4 x i8] c"ugt\00" -@.str.4290 = private unnamed_addr constant [4 x i8] c"uge\00" -@.str.4291 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4292 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4293 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str.4294 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str.4295 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str.4296 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str.4297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4298 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4299 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.4300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4301 = private unnamed_addr constant [11 x i8] c"logic.from\00" -@.str.4302 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" -@.str.4303 = private unnamed_addr constant [10 x i8] c"logic.end\00" -@.str.4304 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4306 = private unnamed_addr constant [11 x i8] c"logic.rend\00" -@.str.4307 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.4308 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4309 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.4310 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" -@.str.4311 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4312 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.4313 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4314 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.4315 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4318 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4322 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4323 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4324 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4325 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4326 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4327 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4329 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" -@.str.4330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4331 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4332 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4333 = private unnamed_addr constant [28 x i8] c"every element of this array\00" -@.str.4334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4335 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4336 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str.4337 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4338 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.4339 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4340 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4341 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4342 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4344 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" -@.str.4345 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4346 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4347 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4348 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4349 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4350 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4351 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.4352 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4353 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4354 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4355 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" -@.str.4356 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4358 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4360 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4362 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4363 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4365 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4367 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4368 = private unnamed_addr constant [8 x i8] c"fprintf\00" -@.str.4369 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4370 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4371 = private unnamed_addr constant [7 x i8] c"stderr\00" -@.str.4372 = private unnamed_addr constant [2 x i8] c"2\00" -@.str.4373 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4374 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4375 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4376 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.4377 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" -@.str.4378 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4379 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4381 = private unnamed_addr constant [27 x i8] c"used .ci 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.4384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4386 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4387 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4389 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4390 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4392 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.4393 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4394 = private unnamed_addr constant [20 x i8] c" = external global \00" -@.str.4395 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4396 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4397 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" -@.str.4398 = private unnamed_addr constant [11 x i8] c".name(...)\00" -@.str.4399 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4400 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4401 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4403 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4404 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4405 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.4406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4407 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4408 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4410 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4412 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.4413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4414 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.4415 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4417 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4419 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4421 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4422 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4424 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4428 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4430 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4431 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4433 = private unnamed_addr constant [4 x i8] c"var\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 [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 [29 x i8] c"used .sums on a null pointer\00" -@.str.4439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4440 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4441 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4442 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4444 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4446 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4450 = private unnamed_addr constant [23 x i8] c" holds nothing: write \00" -@.str.4451 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4452 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4454 = private unnamed_addr constant [20 x i8] c" value(s), but got \00" -@.str.4455 = private unnamed_addr constant [3 x i8] c": \00" -@.str.4456 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4457 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4458 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4459 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.4460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4461 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.4462 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4463 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4464 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4465 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4467 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4469 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4470 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4471 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.4472 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4474 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.4475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4477 = private unnamed_addr constant [34 x i8] c"this pattern is not a variant of \00" -@.str.4478 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.4479 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4480 = private unnamed_addr constant [2 x i8] c")\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 [28 x i8] c" holds nothing: write just \00" -@.str.4484 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4486 = private unnamed_addr constant [28 x i8] c" value(s): name them, like \00" -@.str.4487 = private unnamed_addr constant [28 x i8] c"(x), or use _ to ignore one\00" -@.str.4488 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4489 = private unnamed_addr constant [51 x i8] c"write a name to hold the value (or _ to ignore it)\00" -@.str.4490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4491 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4493 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4494 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4495 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4496 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4497 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4498 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4499 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4500 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.4501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4502 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4503 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4507 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4509 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4512 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4514 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4517 = private unnamed_addr constant [12 x i8] c" value(s): \00" -@.str.4518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4519 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4521 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4522 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4524 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4527 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4528 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4529 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.4530 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.4531 = private unnamed_addr constant [7 x i8] c"used .\00" -@.str.4532 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" -@.str.4533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4534 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4536 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4538 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4539 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4540 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4541 = private unnamed_addr constant [3 x i8] c"a \00" -@.str.4542 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" -@.str.4543 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4544 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4545 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" -@.str.4546 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4547 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4548 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4549 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" -@.str.4550 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4551 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" -@.str.4552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4553 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4554 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4555 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4556 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" -@.str.4557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4558 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4559 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" -@.str.4560 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4561 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4562 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4563 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4565 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4567 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4568 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4569 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" -@.str.4570 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4571 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" -@.str.4572 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4573 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4574 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.4575 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4576 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4577 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4578 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4579 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4580 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4581 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4582 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" -@.str.4583 = private unnamed_addr constant [3 x i8] c"')\00" -@.str.4584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4585 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4587 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.4588 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.4589 = private unnamed_addr constant [12 x i8] c"' (it has: \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 [12 x i8] c"src/gen.fch\00" -@.str.4593 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4594 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4595 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4597 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4598 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4599 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.4600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4601 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4602 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4603 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4607 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4608 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4610 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4612 = private unnamed_addr constant [9 x i8] c"an index\00" -@.str.4613 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4614 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4615 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4616 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4617 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.4618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4619 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4620 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4623 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4624 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4625 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4626 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4627 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4628 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" -@.str.4629 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4630 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4632 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4633 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" -@.str.4634 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" -@.str.4635 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4636 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4637 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4638 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4639 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4640 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4642 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4643 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4644 = private unnamed_addr constant [18 x i8] c"named arguments (\00" -@.str.4645 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" -@.str.4646 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4647 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4648 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4649 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4650 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4651 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4652 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4653 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.4654 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4655 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4656 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4657 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4658 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4659 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4660 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.4661 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4662 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4663 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.4664 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.4665 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4666 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4667 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4668 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4670 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4672 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4674 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4675 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4676 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4677 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4678 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4679 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" -@.str.4680 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4681 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4682 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4683 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4686 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4687 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4689 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4690 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4691 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4692 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4693 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4694 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.4695 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" -@.str.4696 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4698 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4699 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4700 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4702 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4703 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4705 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4706 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4707 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4708 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4710 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.4711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4712 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" -@.str.4713 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4714 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4716 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4717 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" -@.str.4718 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4719 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4720 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4721 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4722 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4723 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4724 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4725 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4726 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4727 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4728 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4729 = private unnamed_addr constant [7 x i8] c"fptoui\00" -@.str.4730 = private unnamed_addr constant [7 x i8] c"fptosi\00" -@.str.4731 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4732 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4733 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4734 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4735 = private unnamed_addr constant [9 x i8] c"icmp ne \00" -@.str.4736 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4737 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4738 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4739 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4740 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4741 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4742 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" -@.str.4743 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4744 = private unnamed_addr constant [8 x i8] c" to ptr\00" -@.str.4745 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4746 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.4747 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4748 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4749 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4751 = 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.4752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4753 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4754 = private unnamed_addr constant [7 x i8] c" into \00" -@.str.4755 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4757 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4758 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4759 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4761 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4762 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4763 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4764 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4765 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4766 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4768 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4772 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4775 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4777 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4779 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4780 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4781 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.4782 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.4783 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.4784 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4785 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4786 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4787 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4788 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4789 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4790 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4791 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4792 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4793 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4794 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4795 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4796 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4798 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4801 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4803 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4804 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4805 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4807 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4808 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4810 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4811 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4816 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4819 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4820 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" -@.str.4821 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4822 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4824 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4825 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4826 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4827 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4828 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4829 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4830 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4831 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4832 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4833 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4834 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4836 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4838 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4840 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4841 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4842 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4843 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4845 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4847 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4848 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4849 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" -@.str.4850 = private unnamed_addr constant [21 x i8] c", which C can't take\00" -@.str.4851 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4852 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4853 = private unnamed_addr constant [13 x i8] c" the struct \00" -@.str.4854 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" -@.str.4855 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4856 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4857 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4858 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" -@.str.4859 = 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.4860 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" -@.str.4861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4863 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" -@.str.4864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4865 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" -@.str.4866 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4867 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" -@.str.4868 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4870 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4871 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4872 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" -@.str.4873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4874 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4875 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" -@.str.4876 = private unnamed_addr constant [4 x i8] c"i1 \00" -@.str.4877 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" -@.str.4878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4879 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4880 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4881 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4882 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4883 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4884 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4885 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4886 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4887 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4888 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4889 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4890 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4891 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4892 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4893 = private unnamed_addr constant [8 x i8] c"ret i8 \00" -@.str.4894 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4895 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str.4896 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4897 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4900 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4901 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.4902 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.4903 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4904 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4905 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4906 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4907 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4909 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4911 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" -@.str.4912 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4914 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4915 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4917 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4918 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4919 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4920 = 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.4921 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4922 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4923 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4924 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4926 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4928 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4929 = 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.4930 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4931 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4932 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4933 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4934 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4936 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4938 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4939 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" -@.str.4940 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4941 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4942 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" -@.str.4943 = private unnamed_addr constant [4 x i8] c"%c0\00" -@.str.4944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4946 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4947 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4948 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4949 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4950 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4951 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4952 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4953 = private unnamed_addr constant [7 x i8] c"ptr %c\00" -@.str.4954 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4955 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4956 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4957 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4958 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4959 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4960 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4961 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4962 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4963 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4964 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4965 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4966 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4967 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4968 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4969 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4970 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4971 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4972 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4973 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4974 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4976 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4977 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4978 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4980 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4981 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4982 = private unnamed_addr constant [16 x i8] c"define internal\00" -@.str.4983 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4984 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4986 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4987 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4989 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4993 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" -@.str.4994 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4997 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" -@.str.4998 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4999 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5000 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5001 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5003 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5004 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5005 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5006 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5007 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" -@.str.5008 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5009 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5010 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5011 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5012 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5014 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5015 = private unnamed_addr constant [9 x i8] c" signext\00" -@.str.5016 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5017 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5018 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5019 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5020 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5022 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5023 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5024 = private unnamed_addr constant [18 x i8] c"C function from `\00" -@.str.5025 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" -@.str.5026 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5027 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5028 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5029 = private unnamed_addr constant [6 x i8] c")\0A```\00" -@.str.5030 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5031 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.5032 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" -@.str.5033 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5034 = private unnamed_addr constant [18 x i8] c"' takes at least \00" -@.str.5035 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5036 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5037 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.5038 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5039 = private unnamed_addr constant [8 x i8] c"returns\00" -@.str.5040 = private unnamed_addr constant [6 x i8] c"takes\00" -@.str.5041 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5042 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5043 = private unnamed_addr constant [11 x i8] c") align 16\00" -@.str.5044 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5045 = private unnamed_addr constant [12 x i8] c") align 16 \00" -@.str.5046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5047 = private unnamed_addr constant [32 x i8] c"used .pending 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 [12 x i8] c"src/gen.fch\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 [10 x i8] c"argument \00" -@.str.5053 = private unnamed_addr constant [5 x i8] c" of \00" -@.str.5054 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.5055 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.5056 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.5057 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5058 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.5059 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5060 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5061 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5062 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5064 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.5065 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5068 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5070 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5071 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5073 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5075 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" -@.str.5076 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5077 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5079 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" -@.str.5080 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.5081 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5082 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5083 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5084 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5085 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5086 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5087 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5088 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5089 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5090 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5091 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5092 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5093 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5094 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.5095 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5096 = private unnamed_addr constant [6 x i8] c", ...\00" -@.str.5097 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5099 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5100 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.5101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5102 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5103 = private unnamed_addr constant [3 x i8] c"f:\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 .head on a null pointer\00" -@.str.5106 = private unnamed_addr constant [8 x i8] c"declare\00" -@.str.5107 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5108 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5109 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5110 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5111 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5112 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5113 = private unnamed_addr constant [3 x i8] c" (\00" -@.str.5114 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5115 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5116 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.5117 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5118 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5119 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5120 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5121 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5122 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5123 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5124 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5125 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5126 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5127 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5128 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5129 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5130 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5131 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5132 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5133 = private unnamed_addr constant [7 x i8] c"fflush\00" -@.str.5134 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5135 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5136 = private unnamed_addr constant [6 x i8] c"qsort\00" -@.str.5137 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5138 = private unnamed_addr constant [5 x i8] c"puts\00" -@.str.5139 = private unnamed_addr constant [8 x i8] c"putchar\00" -@.str.5140 = private unnamed_addr constant [6 x i8] c"scanf\00" -@.str.5141 = private unnamed_addr constant [6 x i8] c"fopen\00" -@.str.5142 = private unnamed_addr constant [8 x i8] c"getchar\00" -@.str.5143 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str.5144 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str.5145 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str.5146 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str.5147 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str.5148 = private unnamed_addr constant [5 x i8] c"fabs\00" -@.str.5149 = private unnamed_addr constant [7 x i8] c"malloc\00" -@.str.5150 = private unnamed_addr constant [5 x i8] c"rand\00" -@.str.5151 = private unnamed_addr constant [6 x i8] c"srand\00" -@.str.5152 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str.5153 = private unnamed_addr constant [5 x i8] c"atoi\00" -@.str.5154 = private unnamed_addr constant [7 x i8] c"strlen\00" -@.str.5155 = private unnamed_addr constant [7 x i8] c"strcpy\00" -@.str.5156 = private unnamed_addr constant [7 x i8] c"memcpy\00" -@.str.5157 = private unnamed_addr constant [5 x i8] c"time\00" -@.str.5158 = private unnamed_addr constant [6 x i8] c"sleep\00" -@.str.5159 = private unnamed_addr constant [7 x i8] c"usleep\00" -@.str.5160 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5161 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5162 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5163 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5164 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5165 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5166 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5167 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5168 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5169 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5170 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5171 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5172 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5173 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5174 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5175 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5176 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5177 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5178 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5179 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5180 = private unnamed_addr constant [7 x i8] c"time.h\00" -@.str.5181 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5182 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5183 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5184 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" -@.str.5185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5186 = private unnamed_addr constant [15 x i8] c"\22 at the top)\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 [6 x i8] c"error\00" -@.str.5191 = 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.5192 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.5193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5194 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5196 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" -@.str.5197 = private unnamed_addr constant [2 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"\0A\00" -@.str.5200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5201 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5202 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.5203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5204 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5206 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5207 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5208 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5209 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.5210 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.5211 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" -@.str.5212 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5214 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5215 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" -@.str.5216 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5218 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5219 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" -@.str.5220 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5221 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.5222 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5223 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" -@.str.5224 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.5225 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5226 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5227 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5228 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" -@.str.5229 = private unnamed_addr constant [14 x i8] c", i8 signext \00" -@.str.5230 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5231 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5232 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5233 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5234 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" -@.str.5235 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.5236 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5237 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5238 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5239 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5240 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5241 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5242 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5243 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5245 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5247 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5248 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5249 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5250 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" -@.str.5251 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5252 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5253 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5254 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5255 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5256 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5257 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5258 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5259 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5260 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5262 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.5263 = private unnamed_addr constant [10 x i8] c" into str\00" -@.str.5264 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5265 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5266 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.5267 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5269 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5270 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5271 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" -@.str.5272 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5273 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5274 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5275 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5277 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5278 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5279 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5280 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5281 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5282 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5283 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" -@.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5286 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5287 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5288 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5290 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5291 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5293 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5294 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5295 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5297 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5299 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" -@.str.5300 = private unnamed_addr constant [7 x i8] c", ptr \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 [2 x i8] c")\00" -@.str.5304 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5305 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5306 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5308 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5310 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5312 = private unnamed_addr constant [9 x i8] c"the text\00" -@.str.5313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5314 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5315 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5316 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5317 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5318 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" -@.str.5319 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5320 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5321 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5322 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5323 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5325 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5326 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5328 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5329 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5330 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" -@.str.5331 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5332 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5333 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5334 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5335 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5336 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.5337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5338 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5339 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5340 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5343 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5344 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5345 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5346 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5347 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" -@.str.5348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5349 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5350 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5351 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5353 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5354 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5356 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5357 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5358 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5359 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" -@.str.5360 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5361 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5362 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5363 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5364 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5365 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.5366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5367 = private unnamed_addr constant [12 x i8] c"the command\00" -@.str.5368 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5369 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5371 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" -@.str.5372 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5373 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5374 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5375 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5377 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5379 = private unnamed_addr constant [14 x i8] c"the exit code\00" -@.str.5380 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5381 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5382 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" -@.str.5383 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" -@.str.5384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5385 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5386 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.5387 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5389 = private unnamed_addr constant [13 x i8] c"the question\00" -@.str.5390 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" -@.str.5391 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5392 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5393 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5394 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5395 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.5396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5397 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.5398 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5399 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5401 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5403 = 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.5404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5405 = private unnamed_addr constant [10 x i8] c"free.drop\00" -@.str.5406 = private unnamed_addr constant [10 x i8] c"free.done\00" -@.str.5407 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5408 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5410 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" -@.str.5411 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5412 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5414 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5415 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5416 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" -@.str.5417 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5418 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5420 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5421 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5423 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5424 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5425 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5426 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" -@.str.5427 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.5428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5429 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5431 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5433 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5436 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5438 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5441 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" -@.str.5442 = private unnamed_addr constant [4 x i8] c" { \00" -@.str.5443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5444 = private unnamed_addr constant [7 x i8] c" }\0A```\00" -@.str.5445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5446 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5449 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5451 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5453 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5455 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.5456 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5457 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" -@.str.5458 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" -@.str.5459 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5461 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5463 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.5464 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" -@.str.5465 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5467 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5471 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.5472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5473 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5476 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5477 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5478 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5479 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5480 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" -@.str.5481 = private unnamed_addr constant [20 x i8] c"(...) or , \00" -@.str.5482 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" -@.str.5483 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.5484 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5485 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5486 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5487 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5488 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5489 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5490 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5491 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5492 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5493 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5495 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5496 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5497 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5498 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5500 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5502 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5503 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5504 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5505 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5507 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5510 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5513 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5517 = 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.5518 = private unnamed_addr constant [6 x i8] c" has \00" -@.str.5519 = private unnamed_addr constant [18 x i8] c" fields, but got \00" -@.str.5520 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" -@.str.5521 = private unnamed_addr constant [16 x i8] c"(field: value))\00" -@.str.5522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5525 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.5526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5527 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5530 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5532 = private unnamed_addr constant [17 x i8] c"' is given twice\00" -@.str.5533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5534 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5536 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5543 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5545 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5548 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5550 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5552 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5554 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5556 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5558 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5560 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5562 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5567 = private unnamed_addr constant [17 x i8] c"the default of '\00" -@.str.5568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5569 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5571 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5573 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5575 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5577 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5578 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.5579 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5580 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5581 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5582 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5585 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5586 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"var\00" -@.str.5590 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" -@.str.5591 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" -@.str.5592 = private unnamed_addr constant [14 x i8] c" at the top)\00" -@.str.5593 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5594 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5595 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5597 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5599 = private unnamed_addr constant [13 x i8] c"the module '\00" -@.str.5600 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" -@.str.5601 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5602 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5603 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5604 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5605 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5606 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5607 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5608 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5609 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5611 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5612 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5613 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5614 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" -@.str.5615 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5616 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5617 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5618 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5619 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" -@.str.5620 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5623 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5624 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5625 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5626 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5627 = private unnamed_addr constant [9 x i8] c"called .\00" -@.str.5628 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" -@.str.5629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5630 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5631 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5632 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5633 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5634 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5636 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5639 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5642 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5645 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5646 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5647 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5648 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" -@.str.5649 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5650 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" -@.str.5651 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5652 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5653 = private unnamed_addr constant [17 x i8] c" has no method '\00" -@.str.5654 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.5655 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5656 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5658 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5660 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5661 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5662 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" -@.str.5663 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" -@.str.5664 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.5665 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.5666 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5667 = private unnamed_addr constant [16 x i8] c" has no methods\00" -@.str.5668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5669 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5670 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5671 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5674 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5676 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5677 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5678 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" -@.str.5679 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5680 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5681 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5682 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5683 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5684 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5685 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5686 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5687 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5688 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5689 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5690 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5691 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5692 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5693 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5694 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5695 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5696 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5698 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5699 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5700 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5701 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5702 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5703 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5704 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5705 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5706 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5709 = private unnamed_addr constant [22 x i8] c"the value to look for\00" -@.str.5710 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5711 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5712 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str.5713 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5714 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5715 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5717 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5718 = private unnamed_addr constant [10 x i8] c"find.cond\00" -@.str.5719 = private unnamed_addr constant [10 x i8] c"find.body\00" -@.str.5720 = private unnamed_addr constant [9 x i8] c"find.hit\00" -@.str.5721 = private unnamed_addr constant [10 x i8] c"find.next\00" -@.str.5722 = private unnamed_addr constant [9 x i8] c"find.end\00" -@.str.5723 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5724 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5725 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5726 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5727 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5728 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5729 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.5730 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5731 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5732 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5733 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5734 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5735 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5736 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5737 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5738 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5739 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5740 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5741 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5742 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" -@.str.5743 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5744 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5745 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" -@.str.5746 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5747 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5749 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5750 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5751 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5753 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5755 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5758 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5759 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5760 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5762 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" -@.str.5763 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5764 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5765 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5766 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5767 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5768 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5769 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5770 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5771 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5772 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5773 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5775 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5777 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5778 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5779 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5780 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5781 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5782 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5783 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" -@.str.5784 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5785 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5786 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5787 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5788 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5789 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5791 = private unnamed_addr constant [15 x i8] c"the new length\00" -@.str.5792 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" -@.str.5793 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5794 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5795 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5796 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5797 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5798 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5799 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5800 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str.5801 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5802 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5803 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5804 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5806 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5807 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5808 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5809 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5811 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5812 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5813 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5814 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5815 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.5816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5817 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5819 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5821 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5823 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5824 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5825 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5826 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5827 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5828 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5829 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5830 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5831 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5832 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5833 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5834 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5835 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" -@.str.5836 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5837 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5838 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5839 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.5840 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5841 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5842 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5843 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5844 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5845 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5846 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5847 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5848 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5849 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5850 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5851 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5852 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5855 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5856 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5857 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5858 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5859 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" -@.str.5860 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5861 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5862 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" -@.str.5863 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5864 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5865 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5866 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5867 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5868 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" -@.str.5869 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" -@.str.5870 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5871 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5872 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5873 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5874 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5875 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5876 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5877 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5879 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5880 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5881 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5882 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.5883 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5884 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5885 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5886 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5887 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5888 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5889 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5890 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5892 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" -@.str.5893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5894 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5896 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5897 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5898 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5899 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" -@.str.5900 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5901 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5902 = private unnamed_addr constant [3 x i8] c"%x\00" -@.str.5903 = private unnamed_addr constant [3 x i8] c"%y\00" -@.str.5904 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5905 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5906 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" -@.str.5907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5908 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5909 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" -@.str.5910 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5911 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5912 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5913 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.5914 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5915 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5916 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5917 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5918 = private unnamed_addr constant [2 x i8] c">\00" -@.str.5919 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5920 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5921 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5922 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str.5923 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5924 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5925 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5926 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5927 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5928 = private unnamed_addr constant [9 x i8] c"ret i32 \00" -@.str.5929 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" -@.str.5930 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" -@.str.5931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5932 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5934 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.5935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5936 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5938 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5940 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5942 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5943 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" -@.str.5944 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5945 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5946 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5947 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5948 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5949 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5950 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5951 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5952 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5953 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5954 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5955 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5957 = private unnamed_addr constant [21 x i8] c"the text to look for\00" -@.str.5958 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5959 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5960 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5961 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5962 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5963 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5964 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5965 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5966 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5967 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5968 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5969 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5970 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" -@.str.5971 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5972 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" -@.str.5973 = private unnamed_addr constant [10 x i8] c"call i32 \00" -@.str.5974 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5975 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5976 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5977 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5978 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5979 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5980 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5981 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5982 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5983 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" -@.str.5984 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5985 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5986 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5987 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5988 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5989 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5991 = private unnamed_addr constant [20 x i8] c"the text to replace\00" -@.str.5992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5993 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5995 = private unnamed_addr constant [13 x i8] c"the new text\00" -@.str.5996 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" -@.str.5997 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5998 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5999 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6000 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6001 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6002 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6003 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6005 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.6006 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" -@.str.6007 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6008 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6009 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6010 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6011 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6012 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6014 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6016 = private unnamed_addr constant [10 x i8] c"the count\00" -@.str.6017 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" -@.str.6018 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6019 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.6020 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6021 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6023 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6024 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" -@.str.6025 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6026 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6027 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6028 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6029 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" -@.str.6030 = 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.6031 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" -@.str.6032 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" -@.str.6033 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" -@.str.6034 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" -@.str.6035 = private unnamed_addr constant [34 x i8] c"declare void @finch_str_drop(ptr)\00" -@.str.6036 = private unnamed_addr constant [34 x i8] c"declare void @finch_arr_free(ptr)\00" -@.str.6037 = private unnamed_addr constant [34 x i8] c"declare void @finch_map_free(ptr)\00" -@.str.6038 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" -@.str.6039 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" -@.str.6040 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" -@.str.6041 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" -@.str.6042 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" -@.str.6043 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" -@.str.6044 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" -@.str.6045 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" -@.str.6046 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" -@.str.6047 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" -@.str.6048 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" -@.str.6049 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" -@.str.6050 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" -@.str.6051 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" -@.str.6052 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" -@.str.6053 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" -@.str.6054 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" -@.str.6055 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" -@.str.6056 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" -@.str.6057 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" -@.str.6058 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" -@.str.6059 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" -@.str.6060 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" -@.str.6061 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" -@.str.6062 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" -@.str.6063 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" -@.str.6064 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" -@.str.6065 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" -@.str.6066 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" -@.str.6067 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" -@.str.6068 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" -@.str.6069 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" -@.str.6070 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" -@.str.6071 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" -@.str.6072 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" -@.str.6073 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" -@.str.6074 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" -@.str.6075 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" -@.str.6076 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" -@.str.6077 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" -@.str.6078 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" -@.str.6079 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" -@.str.6080 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" -@.str.6081 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" -@.str.6082 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" -@.str.6083 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" -@.str.6084 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" -@.str.6085 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" -@.str.6086 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" -@.str.6087 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" -@.str.6088 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" -@.str.6089 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" -@.str.6090 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" -@.str.6091 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" -@.str.6092 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" -@.str.6093 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" -@.str.6094 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" -@.str.6095 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" -@.str.6096 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" -@.str.6097 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" -@.str.6098 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" -@.str.6099 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" -@.str.6100 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" -@.str.6101 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" -@.str.6102 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" -@.str.6103 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" -@.str.6104 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" -@.str.6105 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6106 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6107 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" -@.str.6108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6109 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6111 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6112 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" -@.str.6113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6114 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6115 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" -@.str.6116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6117 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.6118 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6119 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" -@.str.6120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6122 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6123 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" -@.str.6124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6126 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6128 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6129 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6131 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6133 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6136 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6137 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" -@.str.6138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6139 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6140 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" -@.str.6141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6142 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6143 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" -@.str.6144 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" -@.str.6145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6146 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" -@.str.6147 = private unnamed_addr constant [3 x i8] c"\22)\00" -@.str.6148 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" -@.str.6149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6150 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6152 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" -@.str.6153 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6154 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6157 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.6158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6159 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6161 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6165 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6168 = 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.6169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6170 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" -@.str.6171 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6172 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6173 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6175 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6177 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.6178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6179 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6182 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.6183 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6185 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6186 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6188 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6189 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.6190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6191 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6192 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.6193 = 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.6194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6195 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6197 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.6198 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6199 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6201 = 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.6202 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" -@.str.6203 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6204 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str.6205 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6206 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6207 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6208 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6209 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" -@.str.6210 = 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.6211 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" -@.str.6212 = 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.6213 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" -@.str.6214 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6215 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" -@.str.6216 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" -@.str.6217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6218 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6219 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" -@.str.6220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6221 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6222 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str.6223 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6225 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str.6226 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.6227 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" -@.str.6228 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" -@.str.6229 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.6230 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" -@.str.6231 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" -@.str.6232 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.6233 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" -@.str.6234 = 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.6235 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.6236 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" -@.str.6237 = 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.6238 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.6239 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" -@.str.6240 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" -@.str.6241 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.6242 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" -@.str.6243 = 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.6244 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.6245 = private unnamed_addr constant [19 x i8] c"error(str message)\00" -@.str.6246 = 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.6247 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.6248 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" -@.str.6249 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" -@.str.6250 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.6251 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" -@.str.6252 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" -@.str.6253 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.6254 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" -@.str.6255 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" -@.str.6256 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.6257 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" -@.str.6258 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" -@.str.6259 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.6260 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" -@.str.6261 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" -@.str.6262 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6263 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" -@.str.6264 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" -@.str.6265 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6266 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" -@.str.6267 = 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.6268 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6269 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" -@.str.6270 = 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.6271 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6272 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" -@.str.6273 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" -@.str.6274 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6275 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" -@.str.6276 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" -@.str.6277 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6278 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" -@.str.6279 = 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.6280 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6281 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6282 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" -@.str.6283 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6284 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" -@.str.6285 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" -@.str.6286 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.6287 = private unnamed_addr constant [10 x i8] c"push(T x)\00" -@.str.6288 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" -@.str.6289 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.6290 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" -@.str.6291 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" -@.str.6292 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.6293 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" -@.str.6294 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" -@.str.6295 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6296 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" -@.str.6297 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" -@.str.6298 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6299 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6300 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6301 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.6302 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" -@.str.6303 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" -@.str.6304 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6305 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" -@.str.6306 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" -@.str.6307 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6308 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" -@.str.6309 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" -@.str.6310 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.6311 = private unnamed_addr constant [7 x i8] c"sort()\00" -@.str.6312 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" -@.str.6313 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.6314 = private unnamed_addr constant [10 x i8] c"reverse()\00" -@.str.6315 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" -@.str.6316 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.6317 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" -@.str.6318 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" -@.str.6319 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.6320 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" -@.str.6321 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" -@.str.6322 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6323 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6324 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" -@.str.6325 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6326 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" -@.str.6327 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" -@.str.6328 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.6329 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" -@.str.6330 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" -@.str.6331 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6332 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" -@.str.6333 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" -@.str.6334 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6335 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" -@.str.6336 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" -@.str.6337 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.6338 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" -@.str.6339 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" -@.str.6340 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.6341 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" -@.str.6342 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" -@.str.6343 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6344 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" -@.str.6345 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" -@.str.6346 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.6347 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" -@.str.6348 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" -@.str.6349 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.6350 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" -@.str.6351 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" -@.str.6352 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.6353 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" -@.str.6354 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" -@.str.6355 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.6356 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" -@.str.6357 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" -@.str.6358 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6359 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" -@.str.6360 = private unnamed_addr constant [18 x i8] c"The text n times.\00" -@.str.6361 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6362 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" -@.str.6363 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" -@.str.6364 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6365 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6366 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" -@.str.6367 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.6368 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" -@.str.6369 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" -@.str.6370 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.6371 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" -@.str.6372 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" -@.str.6373 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6374 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" -@.str.6375 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" -@.str.6376 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6377 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6378 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6379 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.6380 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" -@.str.6381 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" -@.str.6382 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.6383 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" -@.str.6384 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" -@.str.6385 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.6386 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.6387 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.6388 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.6389 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.6390 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.6391 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.6392 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.6393 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.6394 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.6395 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.6396 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.6397 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.6398 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.6399 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.6400 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.6401 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.6402 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.6403 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.6404 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.6405 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.6406 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.6407 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6408 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6409 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6410 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6411 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6412 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6413 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.6414 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6415 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6416 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.6418 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6419 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6420 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6421 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6422 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6423 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.6424 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.6425 = 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.6426 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6427 = private unnamed_addr constant [16 x i8] c"/finch_cc_dirs_\00" -@.str.6428 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6429 = private unnamed_addr constant [14 x i8] c"/finch_empty_\00" -@.str.6430 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6431 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6432 = private unnamed_addr constant [13 x i8] c" -E -v -x c \00" -@.str.6433 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6434 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6435 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6436 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6437 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6438 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6439 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6440 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" -@.str.6441 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6442 = private unnamed_addr constant [20 x i8] c"End of search list.\00" -@.str.6443 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6444 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" -@.str.6445 = private unnamed_addr constant [12 x i8] c"-iframework\00" -@.str.6446 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6447 = private unnamed_addr constant [9 x i8] c"-isystem\00" -declare void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16, ptr) -declare [2 x i64] @clang_getCursorUSR(ptr) -@.str.6448 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6449 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6450 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6451 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6452 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -declare [2 x i64] @clang_getCursorSpelling(ptr) -@.str.6453 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6454 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6455 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6456 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6457 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" -@.str.6458 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6459 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6460 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6461 = 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.6462 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6463 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6464 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6465 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -declare i64 @clang_Type_getSizeOf(ptr) -@.str.6466 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6467 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6468 = 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.6469 = private unnamed_addr constant [13 x i8] c"is a C union\00" -declare i32 @clang_Type_visitFields(ptr, ptr, ptr) -@.str.6470 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6471 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -@.str.6472 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6473 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6474 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6475 = 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.6476 = private unnamed_addr constant [15 x i8] c"has bit fields\00" -@.str.6477 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6478 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6479 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6480 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" -@.str.6481 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6482 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" -@.str.6483 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6484 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6485 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6486 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" -@.str.6487 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6488 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6489 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6490 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" -@.str.6491 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6492 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6493 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6494 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6495 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6496 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6497 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6498 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6499 = private unnamed_addr constant [8 x i8] c"uses a \00" -@.str.6500 = private unnamed_addr constant [12 x i8] c"-bit number\00" -@.str.6501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6502 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6503 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6504 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6505 = 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.6506 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6507 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6508 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6509 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6510 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6511 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" -@.str.6512 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" -@.str.6513 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.6514 = 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.6515 = private unnamed_addr constant [17 x i8] c"uses long double\00" -@.str.6516 = private unnamed_addr constant [18 x i8] c"uses the C type '\00" -declare [2 x i64] @clang_getTypeSpelling(ptr) -@.str.6517 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6518 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6519 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6520 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6521 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.6522 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6523 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6524 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6525 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6526 = private unnamed_addr constant [5 x i8] c"uUlL\00" -@.str.6527 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6528 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6529 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6530 = 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.6531 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6532 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare [2 x i64] @clang_getTokenSpelling(ptr, ptr) -@.str.6533 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6534 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare void @clang_disposeTokens(ptr, ptr, i32) -@.str.6535 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6536 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6537 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6538 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6539 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6540 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6541 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.6542 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6543 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.6544 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6545 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6546 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6547 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6548 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6549 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6550 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6551 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6552 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.6553 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6554 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.6555 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6556 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6557 = private unnamed_addr constant [5 x i8] c"fFlL\00" -@.str.6558 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6559 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6560 = 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.6561 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6562 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6563 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6564 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6565 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6566 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6567 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6568 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6569 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6570 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6571 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6572 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6573 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6574 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6575 = private unnamed_addr constant [31 x i8] c"used .header on a null pointer\00" -declare i32 @clang_Cursor_getStorageClass(ptr) -@.str.6576 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" -@.str.6577 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6578 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6579 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" -@.str.6580 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6581 = 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.6582 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6583 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6584 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6585 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6586 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6587 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -declare i32 @clang_isCursorDefinition(ptr) -@.str.6588 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6589 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6590 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6591 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6592 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6593 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -declare i32 @clang_visitChildren(ptr, ptr, ptr) -@.str.6594 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6595 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -declare i64 @clang_getEnumConstantDeclValue(ptr) -@.str.6596 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6597 = 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.6598 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6599 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6600 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6601 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6602 = private unnamed_addr constant [3 x i8] c"-x\00" -@.str.6603 = private unnamed_addr constant [2 x i8] c"c\00" -@.str.6604 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" -@.str.6605 = private unnamed_addr constant [10 x i8] c"--target=\00" -@.str.6606 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" -@.str.6607 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.6608 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6609 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @clang_createIndex(i32, i32) -@.str.6610 = private unnamed_addr constant [11 x i8] c"#include \22\00" -@.str.6611 = private unnamed_addr constant [3 x i8] c"\22\0A\00" -@.str.6612 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6613 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6614 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr) -@.str.6615 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" -@.str.6616 = 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.6617 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6618 = private unnamed_addr constant [15 x i8] c"file not found\00" -@.str.6619 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6620 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6621 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6622 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6623 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6624 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6625 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6626 = private unnamed_addr constant [11 x i8] c"', which '\00" -@.str.6627 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" -@.str.6628 = private unnamed_addr constant [20 x i8] c": error: C header '\00" -@.str.6629 = 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.6630 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6631 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6632 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6633 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6634 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6635 = private unnamed_addr constant [5 x i8] c"'\5C''\00" -@.str.6636 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6637 = private unnamed_addr constant [10 x i8] c"/dev/null\00" -@.str.6638 = private unnamed_addr constant [7 x i8] c"TMPDIR\00" -@.str.6639 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6640 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6641 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6642 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6643 = private unnamed_addr constant [5 x i8] c"/tmp\00" -@.str.6644 = private unnamed_addr constant [2 x i8] c":\00" -declare i32 @getpid() -@.str.6645 = private unnamed_addr constant [4 x i8] c"PWD\00" -@.str.6646 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6647 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" -@.str.6648 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6649 = private unnamed_addr constant [7 x i8] c"/finch\00" -@.str.6650 = private unnamed_addr constant [5 x i8] c"HOME\00" -@.str.6651 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6652 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" -@.str.6653 = private unnamed_addr constant [13 x i8] c"/finch-cache\00" -@.str.6654 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" -@.str.6655 = private unnamed_addr constant [8 x i8] c"rm -rf \00" -@.str.6656 = private unnamed_addr constant [4 x i8] c"mv \00" -@.str.6657 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6658 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6659 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6660 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6661 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6662 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6663 = private unnamed_addr constant [15 x i8] c"/finch_triple_\00" -@.str.6664 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6665 = private unnamed_addr constant [22 x i8] c"clang -dumpmachine > \00" -@.str.6666 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6667 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6668 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6669 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6670 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6671 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6672 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.6673 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6674 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6675 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6676 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" -@.str.6677 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" -@.str.6678 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6679 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6680 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6681 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6682 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6683 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" -@.str.6684 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" -@.str.6685 = private unnamed_addr constant [23 x i8] c"x86_64-w64-windows-gnu\00" -@.str.6686 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6687 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6688 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6689 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6690 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6691 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6692 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6693 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6694 = private unnamed_addr constant [6 x i8] c"win32\00" -@.str.6695 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6696 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6697 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6698 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6699 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6700 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6701 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6702 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6703 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6704 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6705 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6706 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6707 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6708 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6709 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6710 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6711 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6712 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6713 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6714 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6715 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6716 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6717 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6718 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6719 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6720 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6721 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6722 = private unnamed_addr constant [5 x i8] c".exe\00" -@.str.6723 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6724 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6725 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" -@.str.6726 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" -@.str.6727 = private unnamed_addr constant [16 x i8] c"clang --target=\00" -@.str.6728 = private unnamed_addr constant [2 x i8] c";\00" -@.str.6729 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6730 = private unnamed_addr constant [3 x i8] c"cc\00" -@.str.6731 = private unnamed_addr constant [6 x i8] c"wine \00" -@.str.6732 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" -@.str.6733 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.6734 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6735 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6736 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6737 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6738 = private unnamed_addr constant [12 x i8] c"-framework \00" -@.str.6739 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6740 = private unnamed_addr constant [18 x i8] c"/finch_pkg_flags_\00" -@.str.6741 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6742 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" -@.str.6743 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6744 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6745 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6746 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6747 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.6748 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6749 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6750 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6751 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6752 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6753 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6754 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6755 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6756 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6757 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6758 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6759 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6760 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6761 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6762 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6763 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6764 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6765 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6766 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6767 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6768 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6769 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6770 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6771 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6772 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6773 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6774 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6775 = private unnamed_addr constant [3 x i8] c" \0A\00" -@.str.6776 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6777 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6778 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6779 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" -@.str.6780 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6781 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6782 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6783 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6784 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6785 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6786 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6787 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6788 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6789 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6790 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6791 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6792 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6793 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6794 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6795 = private unnamed_addr constant [10 x i8] c"not found\00" -@.str.6796 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6797 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6798 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6799 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6800 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6801 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6802 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6803 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6804 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6805 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6806 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6807 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.6808 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6809 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" -@.str.6810 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6811 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6812 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6813 = private unnamed_addr constant [21 x i8] c"error: the library '\00" -@.str.6814 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" -@.str.6815 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6816 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6817 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6818 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6819 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6820 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6821 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6822 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.6824 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.6825 = private unnamed_addr constant [6 x i8] c" more\00" -@.str.6826 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6827 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" -@.str.6828 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6829 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6830 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6831 = private unnamed_addr constant [5 x i8] c"come\00" -@.str.6832 = private unnamed_addr constant [6 x i8] c"comes\00" -@.str.6833 = private unnamed_addr constant [8 x i8] c"error: \00" -@.str.6834 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6835 = private unnamed_addr constant [8 x i8] c" from \22\00" -@.str.6836 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6837 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" -@.str.6838 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6839 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6840 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6841 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" -@.str.6842 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6843 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6844 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6845 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" -@.str.6846 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6847 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6848 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6849 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6850 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6851 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6852 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6853 = private unnamed_addr constant [13 x i8] c" link \22\00" -@.str.6854 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6855 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6856 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6857 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6858 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6859 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6860 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6861 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6862 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6863 = private unnamed_addr constant [5 x i8] c"/rt-\00" -@.str.6864 = private unnamed_addr constant [4 x i8] c"2.5\00" -@.str.6865 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6866 = private unnamed_addr constant [6 x i8] c".part\00" -@.str.6867 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6869 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6870 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6871 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6872 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6873 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6874 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6875 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6876 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" -@.str.6877 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" -@.str.6878 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" -@.str.6879 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6880 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6881 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6882 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6883 = private unnamed_addr constant [9 x i8] c"FINCH_CC\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 [5 x i8] c"%.*s\00" -@.str.6887 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6888 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str.6889 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6890 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6891 = private unnamed_addr constant [11 x i8] c" --target=\00" -@.str.6892 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6893 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6894 = private unnamed_addr constant [8 x i8] c" -w -c \00" -@.str.6895 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6896 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6897 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6899 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6900 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6901 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6902 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" -@.str.6903 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6904 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6905 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6906 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6908 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6909 = private unnamed_addr constant [5 x i8] c" -lm\00" -@.str.6910 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6911 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6912 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6913 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6914 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6915 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" -@.str.6916 = private unnamed_addr constant [9 x i8] c" -shared\00" -@.str.6917 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6918 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6919 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6920 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6921 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6922 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6923 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6924 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6925 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6926 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6927 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6928 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6929 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" -@.str.6930 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6931 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6932 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6934 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6935 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6936 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6937 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.6938 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6939 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6940 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6941 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6942 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6943 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" -@.str.6944 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" -@.str.6945 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6946 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6947 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6948 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6949 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6950 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6951 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6952 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6953 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6954 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6955 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6956 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6957 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6958 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6959 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6960 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.6961 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6962 = private unnamed_addr constant [6 x i8] c"/-_.~\00" -@.str.6963 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6964 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.6965 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6966 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6967 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6968 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6969 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6970 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6971 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6972 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6973 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6974 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6975 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6976 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6977 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @getchar() -@.str.6978 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6979 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6980 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.6981 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@stdin = external global ptr -declare i32 @feof(ptr) -@.str.6982 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" -@.str.6983 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6984 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" -@.str.6985 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6986 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6987 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" -@.str.6988 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" -@.str.6989 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" -@.str.6990 = private unnamed_addr constant [1 x i8] c"\00" -@stdout = external global ptr -declare i64 @fwrite(ptr, i64, i64, ptr) -@.str.6991 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6992 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6993 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.6994 = private unnamed_addr constant [7 x i8] c"result\00" -@.str.6995 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6996 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6997 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.6998 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.6999 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7000 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7001 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7002 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7003 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7004 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7005 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7006 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.7007 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7008 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7009 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7010 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7011 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7012 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7013 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7014 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7015 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7016 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7017 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7018 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.7019 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7020 = private unnamed_addr constant [3 x i8] c"@R\00" -@.str.7021 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7022 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7023 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7024 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7025 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7026 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7027 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7028 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7029 = private unnamed_addr constant [3 x i8] c"@V\00" -@.str.7030 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7031 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7032 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7033 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7034 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7035 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7036 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7037 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7038 = private unnamed_addr constant [3 x i8] c"@F\00" -@.str.7039 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7040 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7041 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7042 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7043 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7044 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7045 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7046 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7047 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7048 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7049 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.7050 = private unnamed_addr constant [3 x i8] c"@S\00" -@.str.7051 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7052 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7053 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7054 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7055 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7056 = private unnamed_addr constant [4 x i8] c"@SF\00" -@.str.7057 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7058 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7059 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7060 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7061 = private unnamed_addr constant [3 x i8] c"@E\00" -@.str.7062 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7063 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7064 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7065 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7066 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7067 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7068 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7069 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7070 = private unnamed_addr constant [3 x i8] c"@I\00" -@.str.7071 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7072 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7073 = private unnamed_addr constant [5 x i8] c"/doc\00" -@.str.7074 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.7075 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7076 = private unnamed_addr constant [12 x i8] c" --overlay \00" -@.str.7077 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.7078 = private unnamed_addr constant [9 x i8] c"/out.txt\00" -@.str.7079 = private unnamed_addr constant [8 x i8] c" index \00" -@.str.7080 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.7081 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.7082 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7083 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7084 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7085 = private unnamed_addr constant [9 x i8] c"severity\00" -@.str.7086 = private unnamed_addr constant [7 x i8] c"source\00" -@.str.7087 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7088 = private unnamed_addr constant [8 x i8] c"message\00" -@.str.7089 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7090 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7091 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7092 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7093 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7094 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7095 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7096 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7097 = private unnamed_addr constant [9 x i8] c"contents\00" -@.str.7098 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7099 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7100 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7101 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7102 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7103 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7104 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7105 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7106 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7107 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7108 = private unnamed_addr constant [15 x i8] c"selectionRange\00" -@.str.7109 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7110 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7111 = private unnamed_addr constant [7 x i8] c"detail\00" -@.str.7112 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7113 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7114 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7115 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7116 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7117 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7118 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7119 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" -@.str.7120 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7121 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7122 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7123 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7124 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7125 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7126 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7127 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7128 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7129 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7130 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7131 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7132 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7133 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7135 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7136 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7137 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7138 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7139 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7140 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7141 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.7142 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7143 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7144 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7145 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7146 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7147 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7148 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7149 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7150 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7151 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.7152 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7153 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7155 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7157 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7158 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7159 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7160 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7161 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7162 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7163 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7164 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7165 = private unnamed_addr constant [7 x i8] c"module\00" -@.str.7166 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7167 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7168 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7169 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7170 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7171 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" -@.str.7172 = private unnamed_addr constant [6 x i8] c"items\00" -@.str.7173 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7174 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7175 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7176 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7177 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7178 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7179 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7180 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7181 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7182 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7183 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7184 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7185 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7186 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7187 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7188 = private unnamed_addr constant [11 x i8] c"parameters\00" -@.str.7189 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7190 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7191 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7192 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7193 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7194 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7195 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7196 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7197 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7198 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7199 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7200 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7201 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7202 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7203 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.7204 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7205 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.7206 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.7207 = private unnamed_addr constant [11 x i8] c"initialize\00" -@.str.7208 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" -@.str.7209 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" -@.str.7210 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" -@.str.7211 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" -@.str.7212 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7213 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7214 = private unnamed_addr constant [19 x i8] c"completionProvider\00" -@.str.7215 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.7216 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7217 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7218 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" -@.str.7219 = private unnamed_addr constant [13 x i8] c"capabilities\00" -@.str.7220 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7221 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7222 = private unnamed_addr constant [11 x i8] c"serverInfo\00" -@.str.7223 = private unnamed_addr constant [9 x i8] c"shutdown\00" -@.str.7224 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.7225 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" -@.str.7226 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" -@.str.7227 = private unnamed_addr constant [15 x i8] c"contentChanges\00" -@.str.7228 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7229 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7230 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" -@.str.7231 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" -@.str.7232 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7233 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7234 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7235 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7236 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7237 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7238 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7239 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" -@.str.7240 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7241 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7242 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7243 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7244 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7245 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7246 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7247 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7248 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7249 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7250 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7251 = private unnamed_addr constant [12 x i8] c"/finch_lsp_\00" -@.str.7252 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7253 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7254 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7255 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7256 = private unnamed_addr constant [3 x i8] c"\5C\22\00" -@.str.7257 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.7258 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.7259 = private unnamed_addr constant [3 x i8] c"\5Cr\00" -@.str.7260 = private unnamed_addr constant [3 x i8] c"\5Ct\00" -@.str.7261 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" -@.str.7262 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7263 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7264 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.7265 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7266 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7267 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7268 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7269 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7270 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7271 = private unnamed_addr constant [3 x i8] c": \00" -@.str.7272 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7273 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7274 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7275 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7276 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7277 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7278 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7279 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7280 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7281 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7282 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7283 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7284 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7285 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7286 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7287 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7288 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7289 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7290 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7291 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7292 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7293 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7294 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7295 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7296 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7297 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7298 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7299 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7300 = private unnamed_addr constant [3 x i8] c"{}\00" -@.str.7301 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7302 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7303 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.7304 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7305 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7306 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7307 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7308 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7309 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7310 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7311 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.7312 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7313 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.7314 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7315 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7316 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7317 = private unnamed_addr constant [3 x i8] c" \00" -@.str.7318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7319 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7320 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7321 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7322 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7323 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7324 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7325 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7326 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7327 = private unnamed_addr constant [6 x i8] c"line \00" -@.str.7328 = private unnamed_addr constant [10 x i8] c", column \00" -@.str.7329 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7330 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7331 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7332 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7333 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7335 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7336 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7337 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7338 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7340 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7341 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7342 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7343 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7344 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7345 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7346 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7347 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7348 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7349 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7350 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7351 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7352 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7353 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7354 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7355 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7356 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7357 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7358 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7359 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7360 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7361 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7362 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7363 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7364 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7365 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7366 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7367 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7368 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" -@.str.7369 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7371 = private unnamed_addr constant [14 x i8] c"json: found '\00" -@.str.7372 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7373 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7374 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7375 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7376 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7377 = private unnamed_addr constant [9 x i8] c"' where \00" -@.str.7378 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7379 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7380 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7381 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7382 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7383 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7384 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7385 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7386 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7387 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7388 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7389 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7390 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7391 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7392 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7393 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7394 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7395 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7396 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7397 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7398 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7399 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7400 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7401 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7402 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7403 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7404 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" -@.str.7405 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7406 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7407 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7408 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7409 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7410 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7411 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7412 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7413 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7414 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7415 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7416 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7418 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7419 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7420 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" -@.str.7421 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7422 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7423 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7424 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7425 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7426 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7427 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7428 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7429 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7430 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7431 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7432 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7434 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7435 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" -@.str.7436 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7437 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7438 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7439 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7440 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7441 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7442 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7443 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7444 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7445 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7446 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7448 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7449 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7450 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.7451 = private unnamed_addr constant [3 x i8] c"\5Cu\00" -@.str.7452 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7453 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7454 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" -@.str.7455 = private unnamed_addr constant [13 x i8] c" in a text (\00" -@.str.7456 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7457 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7458 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7459 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7460 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7461 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7462 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7463 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7464 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7465 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7466 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7467 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7468 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7469 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7470 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7471 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7472 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7473 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7474 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7475 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7476 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7477 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7478 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7479 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7480 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7481 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7482 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7483 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7484 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7485 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7486 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7487 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7488 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7489 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7491 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7492 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7493 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7494 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7495 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7496 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7497 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7498 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7499 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7500 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7501 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7502 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7503 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7504 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7505 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7506 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7507 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7508 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7509 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7510 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7511 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.7512 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7513 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7514 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7515 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7516 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7517 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7518 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7519 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7520 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7521 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" -@.str.7522 = private unnamed_addr constant [4 x i8] c"':'\00" -@.str.7523 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7524 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7525 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7526 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7527 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7528 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7529 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" -@.str.7530 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7531 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7532 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7533 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7534 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7535 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7536 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7537 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7538 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" -@.str.7539 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7540 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7541 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7542 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7543 = private unnamed_addr constant [20 x i8] c"the end of the text\00" -@.str.7544 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.7545 = private unnamed_addr constant [13 x i8] c"std/json.fch\00" -@.str.7546 = private unnamed_addr constant [13 x i8] c"std/path.fch\00" -@.str.7547 = private unnamed_addr constant [13 x i8] c"std/proc.fch\00" -@.str.7548 = private unnamed_addr constant [21 x i8] c"std/proc_windows.fch\00" -@.str.7549 = private unnamed_addr constant [13 x i8] c"std/time.fch\00" -@.str.7550 = private unnamed_addr constant [21 x i8] c"std/time_windows.fch\00" -@.str.7551 = private unnamed_addr constant [16 x i8] c"std/finch_win.h\00" -@.str.7552 = private unnamed_addr constant [24982 x i8] c"// The Finch runtime: string and array helpers, input, files and runtime errors.\0A// It is embedded in the compiler, compiled once into a cache folder, and linked\0A// statically into every Finch program. Everything here is plain C with no state.\0A//\0A// Layout shared with the compiler (src/codegen.cpp):\0A// str = { char *ptr; int64 len; int64 cap } ptr is always NUL-terminated\0A// cap > 0 : heap memory owned by the value (cap bytes allocated)\0A// cap == 0 : a string literal, valid forever, never written to\0A// cap == -1: borrowed from C, must be copied before it is kept\0A// []T = { T *ptr; int64 len; int64 cap } owns ptr when cap > 0\0A// map[K]V: see \22maps\22 below\0A\0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#ifndef _WIN32\0A#include \0A#endif\0A\0Atypedef struct {\0A char *ptr;\0A int64_t len;\0A int64_t cap;\0A} FStr;\0A\0Atypedef struct {\0A void *ptr;\0A int64_t len;\0A int64_t cap;\0A} FArr;\0A\0Astatic char empty[1] = \22\22;\0A\0A// ---------- runtime errors ----------\0A\0A// A program that loads Finch libraries (finch build --shared) can take runtime errors over\0A// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler\0A// gets the message and must not return (longjmp out, or exit itself).\0Astatic void (*fatal_hook)(const char *msg);\0Avoid finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; }\0A\0Astatic __attribute__((noreturn)) void fatal(const char *msg) {\0A if (fatal_hook) fatal_hook(msg);\0A fflush(stdout);\0A fprintf(stderr, \22%s\5Cn\22, msg);\0A exit(1);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) {\0A char full[1024];\0A snprintf(full, sizeof full, \22%s:%lld: runtime error: %s\22, file, (long long)line, msg);\0A fflush(stdout);\0A fatal(full);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) {\0A char msg[128];\0A snprintf(msg, sizeof msg, \22index %lld is out of range (the length is %lld)\22, (long long)i, (long long)len);\0A finch_panic(file, line, msg);\0A}\0A\0Astatic void *must(void *p) {\0A if (!p) {\0A fflush(stdout);\0A fatal(\22runtime error: out of memory\22);\0A }\0A return p;\0A}\0A\0Avoid *finch_alloc(int64_t n) { return must(malloc(n ? (size_t)n : 1)); }\0Avoid *finch_zalloc(int64_t n) { return must(calloc(1, n ? (size_t)n : 1)); }\0A\0A// ---------- strings ----------\0A\0Astatic void str_heap(FStr *out, const char *p, int64_t len) {\0A char *m = finch_alloc(len + 1);\0A if (len) memcpy(m, p, (size_t)len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void str_static(FStr *out, const char *lit) {\0A out->ptr = (char *)lit;\0A out->len = (int64_t)strlen(lit);\0A out->cap = 0;\0A}\0A\0A// A copy that can be kept: literals are shared, everything else is duplicated.\0Avoid finch_str_copy(FStr *out, const FStr *s) {\0A if (s->cap == 0) *out = *s;\0A else str_heap(out, s->ptr, s->len);\0A}\0A\0A// Make `s` writable (before s[i] = c).\0Avoid finch_str_own(FStr *s) {\0A if (s->cap > 0) return;\0A FStr t;\0A str_heap(&t, s->ptr, s->len);\0A *s = t;\0A}\0A\0Avoid finch_str_drop(FStr *s) {\0A if (s->cap > 0) free(s->ptr);\0A}\0A\0Avoid finch_str_from_c(FStr *out, const char *p) {\0A if (!p) {\0A str_static(out, empty);\0A return;\0A }\0A out->ptr = (char *)p;\0A out->len = (int64_t)strlen(p);\0A out->cap = -1;\0A}\0A\0Avoid finch_str_concat(FStr *out, const FStr *a, const FStr *b) {\0A int64_t len = a->len + b->len;\0A char *m = finch_alloc(len + 1);\0A memcpy(m, a->ptr, (size_t)a->len);\0A memcpy(m + a->len, b->ptr, (size_t)b->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Aint finch_str_eq(const FStr *a, const FStr *b) {\0A return a->len == b->len && memcmp(a->ptr, b->ptr, (size_t)a->len) == 0;\0A}\0A\0Aint64_t finch_str_cmp(const FStr *a, const FStr *b) {\0A int64_t n = a->len < b->len ? a->len : b->len;\0A int c = memcmp(a->ptr, b->ptr, (size_t)n);\0A if (c) return c < 0 ? -1 : 1;\0A return a->len < b->len ? -1 : a->len > b->len;\0A}\0A\0Avoid finch_str_from_int(FStr *out, int64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%lld\22, (long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_uint(FStr *out, uint64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%llu\22, (unsigned long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_float(FStr *out, double v) {\0A char buf[64];\0A int n = snprintf(buf, sizeof buf, \22%g\22, v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_char(FStr *out, char c) { str_heap(out, &c, 1); }\0A\0Avoid finch_str_from_bool(FStr *out, int b) { str_static(out, b ? \22true\22 : \22false\22); }\0A\0Astatic void number_error(char *msg, size_t size, const FStr *s, const char *kind) {\0A snprintf(msg, size, \22can't turn \5C\22%.*s\5C\22 into %s\22, (int)(s->len > 100 ? 100 : s->len), s->ptr ? s->ptr : \22\22, kind);\0A}\0A\0Astatic int parse_int(const FStr *s, int64_t *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A errno = 0;\0A long long v = strtoll(p, &end, 10);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end || errno == ERANGE);\0A}\0A\0Astatic int parse_float(const FStr *s, double *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A double v = strtod(p, &end);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end);\0A}\0A\0Aint64_t finch_str_to_int(const FStr *s, const char *file, int64_t line) {\0A int64_t v;\0A if (!parse_int(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0Adouble finch_str_to_float(const FStr *s, const char *file, int64_t line) {\0A double v;\0A if (!parse_float(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0A// ---------- errors as values: int(s) or 0, try read_file(p) ... ----------\0A// Each gives back 1 on success; on failure 0, with the message in *err.\0A\0Astatic void set_error(FStr *err, const char *msg) { str_heap(err, msg, (int64_t)strlen(msg)); }\0A\0Aint finch_str_try_int(const FStr *s, int64_t *out, FStr *err) {\0A if (parse_int(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Aint finch_str_try_float(const FStr *s, double *out, FStr *err) {\0A if (parse_float(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Astatic void file_error(FStr *err, const char *what, const FStr *path) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't %s the file \5C\22%.*s\5C\22: %s\22, what, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr ? path->ptr : \22\22, strerror(errno));\0A set_error(err, msg);\0A}\0A\0A// when `fn main() -> !` fails\0Avoid finch_report_error(const FStr *msg) {\0A fflush(stdout);\0A fprintf(stderr, \22error: %.*s\5Cn\22, (int)msg->len, msg->ptr ? msg->ptr : \22\22);\0A}\0A\0Avoid finch_str_sub(FStr *out, const FStr *s, int64_t start, int64_t end, const char *file, int64_t line) {\0A if (start < 0 || end > s->len || start > end) {\0A char msg[160];\0A snprintf(msg, sizeof msg, \22sub(%lld, %lld) is out of range (the length is %lld)\22, (long long)start,\0A (long long)end, (long long)s->len);\0A finch_panic(file, line, msg);\0A }\0A str_heap(out, s->ptr + start, end - start);\0A}\0A\0Aint64_t finch_str_find(const FStr *s, const FStr *t) {\0A if (t->len == 0) return 0;\0A for (int64_t i = 0; i + t->len <= s->len; i++)\0A if (s->ptr[i] == t->ptr[0] && memcmp(s->ptr + i, t->ptr, (size_t)t->len) == 0) return i;\0A return -1;\0A}\0A\0Aint finch_str_starts(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Aint finch_str_ends(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr + s->len - t->len, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Avoid finch_str_trim(FStr *out, const FStr *s) {\0A int64_t a = 0, b = s->len;\0A while (a < b && isspace((unsigned char)s->ptr[a])) a++;\0A while (b > a && isspace((unsigned char)s->ptr[b - 1])) b--;\0A str_heap(out, s->ptr + a, b - a);\0A}\0A\0Avoid finch_str_upper(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)toupper((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_lower(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)tolower((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_replace(FStr *out, const FStr *s, const FStr *from, const FStr *to) {\0A if (from->len == 0) {\0A str_heap(out, s->ptr, s->len);\0A return;\0A }\0A int64_t count = 0;\0A for (int64_t i = 0; i + from->len <= s->len;) {\0A if (memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A count++;\0A i += from->len;\0A } else {\0A i++;\0A }\0A }\0A int64_t len = s->len + count * (to->len - from->len);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < s->len;) {\0A if (i + from->len <= s->len && memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A memcpy(w, to->ptr, (size_t)to->len);\0A w += to->len;\0A i += from->len;\0A } else {\0A *w++ = s->ptr[i++];\0A }\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len);\0A\0A// \22a,b,,c\22.split(\22,\22) -> [\22a\22, \22b\22, \22\22, \22c\22]; split(\22\22) gives single characters.\0Avoid finch_str_split(FArr *out, const FStr *s, const FStr *sep) {\0A out->ptr = NULL;\0A out->len = out->cap = 0;\0A if (sep->len == 0) {\0A for (int64_t i = 0; i < s->len; i++) arr_push_str(out, s->ptr + i, 1);\0A return;\0A }\0A int64_t start = 0;\0A for (int64_t i = 0; i + sep->len <= s->len;) {\0A if (memcmp(s->ptr + i, sep->ptr, (size_t)sep->len) == 0) {\0A arr_push_str(out, s->ptr + start, i - start);\0A i += sep->len;\0A start = i;\0A } else {\0A i++;\0A }\0A }\0A arr_push_str(out, s->ptr + start, s->len - start);\0A}\0A\0Avoid finch_str_join(FStr *out, const FArr *parts, const FStr *sep) {\0A const FStr *p = parts->ptr;\0A int64_t len = 0;\0A for (int64_t i = 0; i < parts->len; i++) len += p[i].len + (i ? sep->len : 0);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < parts->len; i++) {\0A if (i) {\0A memcpy(w, sep->ptr, (size_t)sep->len);\0A w += sep->len;\0A }\0A memcpy(w, p[i].ptr, (size_t)p[i].len);\0A w += p[i].len;\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_repeat(FStr *out, const FStr *s, int64_t n) {\0A if (n < 0) n = 0;\0A int64_t len = s->len * n;\0A char *m = finch_alloc(len + 1);\0A for (int64_t i = 0; i < n; i++) memcpy(m + i * s->len, s->ptr, (size_t)s->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_from_bytes(FStr *out, const FArr *bytes) { str_heap(out, bytes->ptr, bytes->len); }\0A\0A// ---------- building text: print(x) and str(x) of arrays, maps and structs ----------\0A// A buffer starts as an empty str and grows on the heap.\0A\0Avoid finch_buf_add(FStr *b, const char *p, int64_t n) {\0A if (b->len + n + 1 > b->cap) {\0A int64_t cap = b->cap > 0 ? b->cap * 2 : 32;\0A while (cap < b->len + n + 1) cap *= 2;\0A b->ptr = must(realloc(b->cap > 0 ? b->ptr : NULL, (size_t)cap));\0A b->cap = cap;\0A }\0A if (n) memcpy(b->ptr + b->len, p, (size_t)n);\0A b->len += n;\0A b->ptr[b->len] = 0;\0A}\0A\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) {\0A char t[64];\0A va_list ap;\0A va_start(ap, fmt);\0A int n = vsnprintf(t, sizeof t, fmt, ap);\0A va_end(ap);\0A finch_buf_add(b, t, n);\0A}\0A\0Avoid finch_buf_int(FStr *b, int64_t v) { buf_fmt(b, \22%lld\22, (long long)v); }\0Avoid finch_buf_uint(FStr *b, uint64_t v) { buf_fmt(b, \22%llu\22, (unsigned long long)v); }\0Avoid finch_buf_float(FStr *b, double v) { buf_fmt(b, \22%g\22, v); }\0Avoid finch_buf_bool(FStr *b, int v) { finch_buf_add(b, v ? \22true\22 : \22false\22, v ? 4 : 5); }\0Avoid finch_buf_ptr(FStr *b, const void *p) {\0A if (p) buf_fmt(b, \220x%llx\22, (unsigned long long)(uintptr_t)p);\0A else finch_buf_add(b, \22null\22, 4);\0A}\0A\0Avoid finch_buf_char(FStr *b, char c, int quoted) {\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A finch_buf_add(b, &c, 1);\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A}\0A\0Avoid finch_buf_str(FStr *b, const FStr *s, int quoted) {\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A finch_buf_add(b, s->ptr, s->len);\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A}\0A\0A// print the buffer and free it\0Avoid finch_buf_print(FStr *b) {\0A if (b->len) fwrite(b->ptr, 1, (size_t)b->len, stdout);\0A if (b->cap > 0) free(b->ptr);\0A}\0A\0A// ---------- arrays ----------\0A\0Avoid finch_arr_reserve(FArr *a, int64_t need, int64_t es) {\0A if (need <= a->cap) return;\0A int64_t cap = a->cap * 2;\0A if (cap < 4) cap = 4;\0A if (cap < need) cap = need;\0A a->ptr = must(realloc(a->cap > 0 ? a->ptr : NULL, (size_t)(cap * es)));\0A a->cap = cap;\0A}\0A\0Avoid finch_arr_make(FArr *out, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A out->ptr = len ? finch_zalloc(len * es) : NULL;\0A out->len = len;\0A out->cap = len;\0A}\0A\0A// grow or shrink to `len`; new elements are zero\0Avoid finch_arr_resize(FArr *a, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A finch_arr_reserve(a, len, es);\0A if (len > a->len) memset((char *)a->ptr + a->len * es, 0, (size_t)((len - a->len) * es));\0A a->len = len;\0A}\0A\0A// a byte-for-byte copy of the elements (the compiler deep-copies owning elements afterwards)\0Avoid finch_arr_clone_raw(FArr *out, const FArr *a, int64_t es) {\0A out->len = a->len;\0A out->cap = a->len;\0A out->ptr = a->len ? finch_alloc(a->len * es) : NULL;\0A if (a->len) memcpy(out->ptr, a->ptr, (size_t)(a->len * es));\0A}\0A\0Avoid finch_arr_free(FArr *a) {\0A if (a->cap > 0) free(a->ptr);\0A}\0A\0A// open a hole at i (0 <= i <= len), len grows by one\0Avoid finch_arr_insert_gap(FArr *a, int64_t i, int64_t es, const char *file, int64_t line) {\0A if (i < 0 || i > a->len) finch_panic_index(file, line, i, a->len);\0A finch_arr_reserve(a, a->len + 1, es);\0A char *p = a->ptr;\0A memmove(p + (i + 1) * es, p + i * es, (size_t)((a->len - i) * es));\0A a->len++;\0A}\0A\0A// close the hole at i (the element was already moved out), len shrinks by one\0Avoid finch_arr_remove_gap(FArr *a, int64_t i, int64_t es) {\0A char *p = a->ptr;\0A memmove(p + i * es, p + (i + 1) * es, (size_t)((a->len - i - 1) * es));\0A a->len--;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len) {\0A finch_arr_reserve(a, a->len + 1, (int64_t)sizeof(FStr));\0A str_heap((FStr *)a->ptr + a->len, p, len);\0A a->len++;\0A}\0A\0Avoid finch_bytes_from_str(FArr *out, const FStr *s) {\0A out->len = out->cap = s->len;\0A out->ptr = s->len ? finch_alloc(s->len) : NULL;\0A if (s->len) memcpy(out->ptr, s->ptr, (size_t)s->len);\0A}\0A\0A// ---------- program arguments, input and files ----------\0A\0Avoid finch_args(FArr *out, int argc, char **argv) {\0A out->len = out->cap = argc;\0A out->ptr = finch_alloc((int64_t)sizeof(FStr) * (argc ? argc : 1));\0A for (int i = 0; i < argc; i++) str_heap((FStr *)out->ptr + i, argv[i], (int64_t)strlen(argv[i]));\0A}\0A\0A// input(\22Name? \22) prints the prompt and reads one line, without the newline.\0Avoid finch_input(FStr *out, const FStr *prompt) {\0A if (prompt->len) fwrite(prompt->ptr, 1, (size_t)prompt->len, stdout);\0A fflush(stdout);\0A // read one line of any length (getline isn't available everywhere)\0A size_t size = 128, n = 0;\0A char *line = finch_alloc((int64_t)size);\0A int c, got = 0;\0A while ((c = fgetc(stdin)) != EOF) {\0A got = 1;\0A if (c == '\5Cn') break;\0A if (n + 1 >= size) line = must(realloc(line, size *= 2));\0A line[n++] = (char)c;\0A }\0A if (!got) {\0A free(line);\0A str_static(out, empty);\0A return;\0A }\0A while (n > 0 && line[n - 1] == '\5Cr') n--;\0A line[n] = 0;\0A out->ptr = line;\0A out->len = (int64_t)n;\0A out->cap = (int64_t)size;\0A}\0A\0Aint finch_file_exists(const FStr *path) {\0A FILE *f = fopen(path->ptr, \22rb\22);\0A if (f) fclose(f);\0A return f != NULL;\0A}\0A\0Aint finch_try_read_file(FStr *out, const FStr *path, FStr *err) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A file_error(err, \22read\22, path);\0A return 0;\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A return 1;\0A}\0A\0Avoid finch_read_file(FStr *out, const FStr *path, const char *file, int64_t line) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't read the file \5C\22%.*s\5C\22: %s\22, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr, strerror(errno));\0A finch_panic(file, line, msg);\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A}\0A\0A// shell(\22ls -l\22): run a command, give back its exit code\0Aint64_t finch_shell(const FStr *cmd) {\0A fflush(stdout);\0A int status = system(cmd->ptr ? cmd->ptr : \22\22);\0A#ifdef _WIN32\0A return status; // Windows gives the exit code directly\0A#else\0A if (status == -1) return -1;\0A if (WIFEXITED(status)) return WEXITSTATUS(status);\0A return 128 + (WIFSIGNALED(status) ? WTERMSIG(status) : 0);\0A#endif\0A}\0A\0Aint finch_delete_file(const FStr *path) { return remove(path->ptr ? path->ptr : \22\22) == 0; }\0A\0Aint finch_try_delete_file(const FStr *path, FStr *err) {\0A if (remove(path->ptr ? path->ptr : \22\22) == 0) return 1;\0A file_error(err, \22delete\22, path);\0A return 0;\0A}\0A\0A// stdin/stdout/stderr are macros on some systems (Windows), so Finch asks for them here\0Avoid *finch_std_stream(int i) { return i == 0 ? (void *)stdin : i == 1 ? (void *)stdout : (void *)stderr; }\0A\0Aint finch_write_file(const FStr *path, const FStr *text) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22wb\22);\0A if (!f) return 0;\0A size_t put = text->len ? fwrite(text->ptr, 1, (size_t)text->len, f) : 0;\0A return fclose(f) == 0 && put == (size_t)text->len;\0A}\0A\0Aint finch_try_write_file(const FStr *path, const FStr *text, FStr *err) {\0A errno = 0;\0A if (finch_write_file(path, text)) return 1;\0A if (!errno) errno = EIO;\0A file_error(err, \22write\22, path);\0A return 0;\0A}\0A\0A// ---------- maps ----------\0A// map[K]V = { entries; len; used; cap; index; icap; adds }\0A// entries: `used` slots of es bytes, each { uint64 hash; K key; V value }, in insertion order.\0A// A removed entry keeps its slot (hash 0) until the next resize packs the slots.\0A// index: icap slots (a power of two, at least 2 * cap): -1 empty, -2 removed, else an entry number.\0A// adds: how many keys were ever added; a `for` over the map stops with an error if it changes.\0A// The compiler stores, copies and drops keys and values; the runtime only finds and places entries.\0A// Keys are compared byte for byte (numbers, chars, bools) or as text (kstr).\0A\0Atypedef struct {\0A char *entries;\0A int64_t len, used, cap;\0A int64_t *index;\0A int64_t icap;\0A int64_t adds;\0A} FMap;\0A\0Astatic uint64_t map_hash(const void *key, int64_t ks, int kstr) {\0A const unsigned char *p;\0A size_t n;\0A if (kstr) {\0A const FStr *s = key;\0A p = (const unsigned char *)s->ptr;\0A n = (size_t)s->len;\0A } else {\0A p = key;\0A n = (size_t)ks;\0A }\0A uint64_t h = 1469598103934665603ULL; // FNV-1a, then mixed so the low bits spread well\0A for (size_t i = 0; i < n; i++) {\0A h ^= p[i];\0A h *= 1099511628211ULL;\0A }\0A h ^= h >> 31;\0A h *= 0xbf58476d1ce4e5b9ULL;\0A h ^= h >> 29;\0A return h | 1; // 0 marks a removed entry\0A}\0A\0Astatic int map_key_eq(const char *a, const void *b, int64_t ks, int kstr) {\0A if (!kstr) return memcmp(a, b, (size_t)ks) == 0;\0A const FStr *x = (const FStr *)a, *y = b;\0A return x->len == y->len && (x->len == 0 || memcmp(x->ptr, y->ptr, (size_t)x->len) == 0);\0A}\0A\0Astatic void map_reindex(FMap *m, int64_t es) {\0A if (m->len != m->used) { // pack the slots of removed entries away\0A int64_t j = 0;\0A for (int64_t i = 0; i < m->used; i++) {\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == 0) continue;\0A if (i != j) memmove(m->entries + j * es, e, (size_t)es);\0A j++;\0A }\0A m->used = j;\0A }\0A int64_t icap = 16;\0A while (icap < m->cap * 2) icap *= 2;\0A free(m->index);\0A m->index = finch_alloc(icap * (int64_t)sizeof(int64_t));\0A memset(m->index, 0xff, (size_t)icap * sizeof(int64_t));\0A m->icap = icap;\0A for (int64_t i = 0; i < m->used; i++) {\0A uint64_t h = *(uint64_t *)(m->entries + i * es);\0A int64_t s = (int64_t)(h & (uint64_t)(icap - 1));\0A while (m->index[s] != -1) s = (s + 1) & (icap - 1);\0A m->index[s] = i;\0A }\0A}\0A\0A// the entry number of `key`, or -1\0Aint64_t finch_map_find(const FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr) {\0A if (m->len == 0) return -1;\0A uint64_t h = map_hash(key, ks, kstr);\0A for (int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));; s = (s + 1) & (m->icap - 1)) {\0A int64_t i = m->index[s];\0A if (i == -1) return -1;\0A if (i < 0) continue;\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == h && map_key_eq(e + 8, key, ks, kstr)) return i;\0A }\0A}\0A\0A// The entry for `key`. A new one is zeroed except its hash (*added = 1); the compiler then stores the key.\0Aint64_t finch_map_slot(FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr, int32_t *added) {\0A int64_t i = finch_map_find(m, key, es, ks, kstr);\0A *added = i < 0;\0A if (i >= 0) return i;\0A if (m->used == m->cap) {\0A if (m->len * 4 < m->cap * 3) { // many removed slots: pack them instead of growing\0A map_reindex(m, es);\0A } else {\0A m->cap = m->cap ? m->cap * 2 : 8;\0A m->entries = must(realloc(m->entries, (size_t)(m->cap * es)));\0A map_reindex(m, es);\0A }\0A }\0A uint64_t h = map_hash(key, ks, kstr);\0A i = m->used++;\0A char *e = m->entries + i * es;\0A memset(e, 0, (size_t)es);\0A *(uint64_t *)e = h;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] >= 0) s = (s + 1) & (m->icap - 1);\0A m->index[s] = i;\0A m->len++;\0A m->adds++;\0A return i;\0A}\0A\0A// Forget entry i (its key and value were already dropped by the compiler).\0Avoid finch_map_remove_at(FMap *m, int64_t i, int64_t es) {\0A char *e = m->entries + i * es;\0A uint64_t h = *(uint64_t *)e;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] != i) s = (s + 1) & (m->icap - 1);\0A m->index[s] = -2;\0A *(uint64_t *)e = 0;\0A if (--m->len == 0) {\0A m->used = 0;\0A memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A }\0A}\0A\0Avoid finch_map_clear(FMap *m) {\0A m->len = m->used = 0;\0A if (m->index) memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0Avoid finch_map_free(FMap *m) {\0A free(m->entries);\0A free(m->index);\0A}\0A\0A// A copy of the slots and the index; the compiler then copies the keys and values that own memory.\0Avoid finch_map_clone_raw(FMap *out, const FMap *m, int64_t es) {\0A *out = *m;\0A if (!m->cap) return;\0A out->entries = finch_alloc(m->cap * es);\0A memcpy(out->entries, m->entries, (size_t)(m->used * es));\0A out->index = finch_alloc(m->icap * (int64_t)sizeof(int64_t));\0A memcpy(out->index, m->index, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_changed(const char *file, int64_t line) {\0A finch_panic(file, line, \22a key was added to the map while looping over it (collect the new keys, and add them after the loop)\22);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_missing(const char *file, int64_t line, const FStr *key) {\0A char msg[200];\0A snprintf(msg, sizeof msg, \22the key %.*s is not in the map (check with .has(key), or use .get(key, default))\22,\0A (int)(key->len > 100 ? 100 : key->len), key->ptr ? key->ptr : \22\22);\0A finch_panic(file, line, msg);\0A}\0A\00" -@.str.7553 = private unnamed_addr constant [12885 x i8] c"// JSON: read it, build it, write it.\0A//\0A// import json\0A//\0A// doc := try json.parse(\22{\5C\22name\5C\22: \5C\22Finch\5C\22, \5C\22tags\5C\22: [\5C\22fast\5C\22, \5C\22small\5C\22], \5C\22stars\5C\22: 5}\22)\0A// print(doc.get(\22name\22).str_or(\22\22)) Finch\0A// print(doc.get(\22tags\22).at(1).str_or(\22\22)) small\0A// print(doc.get(\22stars\22).int_or(0)) 5\0A// print(doc.get(\22missing\22).is_null()) true (a missing key is null, so chains never fail)\0A//\0A// out := json.new_object()\0A// out.set(\22ok\22, json.new_bool(true))\0A// list := json.new_list()\0A// list.push(json.new_number(1.5))\0A// out.set(\22values\22, list)\0A// print(json.stringify(out)) {\22ok\22:true,\22values\22:[1.5]}\0A// print(json.pretty(out)) the same, over several lines\0A\0Aenum Kind { Null, Bool, Number, Text, List, Object }\0A\0A// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number,\0A// text for Text, items for List, and items with keys (the same length, in the same order) for Object.\0Astruct Json {\0A Kind kind\0A bool flag\0A float num\0A str text\0A []Json items\0A []str keys\0A}\0A\0Afn new_null() -> Json {\0A return Json(kind: Kind.Null)\0A}\0A\0Afn new_bool(bool b) -> Json {\0A return Json(kind: Kind.Bool, flag: b)\0A}\0A\0Afn new_number(float n) -> Json {\0A return Json(kind: Kind.Number, num: n)\0A}\0A\0Afn new_text(str s) -> Json {\0A return Json(kind: Kind.Text, text: s)\0A}\0A\0Afn new_list() -> Json {\0A return Json(kind: Kind.List)\0A}\0A\0Afn new_object() -> Json {\0A return Json(kind: Kind.Object)\0A}\0A\0A// ---------- looking inside ----------\0A\0Afn Json.is_null() -> bool {\0A return self.kind == Kind.Null\0A}\0A\0A// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest\0Afn Json.len() -> int {\0A return match self.kind {\0A List, Object -> self.items.len\0A Text -> self.text.len\0A else -> 0\0A }\0A}\0A\0Afn Json.has(str key) -> bool {\0A return self.kind == Kind.Object && self.keys.contains(key)\0A}\0A\0A// the value of a key of an object; null if there is none (or this is not an object)\0Afn Json.get(str key) -> Json {\0A if self.kind != Kind.Object {\0A return new_null()\0A }\0A i := self.keys.find(key)\0A if i < 0 {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the element of a list; null if there is none\0Afn Json.at(int i) -> Json {\0A if self.kind != Kind.List || i < 0 || i >= self.items.len {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the value if it is of that kind, else what was given\0Afn Json.str_or(str fallback) -> str {\0A if self.kind == Kind.Text {\0A return self.text\0A }\0A return fallback\0A}\0A\0Afn Json.float_or(float fallback) -> float {\0A if self.kind == Kind.Number {\0A return self.num\0A }\0A return fallback\0A}\0A\0Afn Json.int_or(int fallback) -> int {\0A if self.kind == Kind.Number {\0A return int(self.num)\0A }\0A return fallback\0A}\0A\0Afn Json.bool_or(bool fallback) -> bool {\0A if self.kind == Kind.Bool {\0A return self.flag\0A }\0A return fallback\0A}\0A\0A// the keys of an object, in the order they were written\0Afn Json.names() -> []str {\0A return self.keys\0A}\0A\0A// ---------- building ----------\0A\0A// add to the end of a list\0Afn Json.push(Json v) {\0A self.items.push(v)\0A}\0A\0A// give a key a value in an object; a key that is already there is replaced\0Afn Json.set(str key, Json v) {\0A i := self.keys.find(key)\0A if i >= 0 {\0A self.items[i] = v\0A return\0A }\0A self.keys.push(key)\0A self.items.push(v)\0A}\0A\0A// ---------- writing ----------\0A\0Afn quote(str s) -> str {\0A []str parts = [\22\5C\22\22]\0A for c in s {\0A n := int(c)\0A if c == '\22' {\0A parts.push(\22\5C\5C\5C\22\22)\0A } else if c == '\5C\5C' {\0A parts.push(\22\5C\5C\5C\5C\22)\0A } else if c == '\5Cn' {\0A parts.push(\22\5C\5Cn\22)\0A } else if c == '\5Cr' {\0A parts.push(\22\5C\5Cr\22)\0A } else if c == '\5Ct' {\0A parts.push(\22\5C\5Ct\22)\0A } else if n < 32 {\0A parts.push(\22\5C\5Cu00\22 + hexdigit(n / 16) + hexdigit(n % 16))\0A } else {\0A parts.push(str(c))\0A }\0A }\0A parts.push(\22\5C\22\22)\0A return parts.join(\22\22)\0A}\0A\0Afn hexdigit(int n) -> str {\0A digits := \220123456789abcdef\22\0A return str(digits[n])\0A}\0A\0Afn number_text(float n) -> str {\0A if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 {\0A return str(int(n))\0A }\0A return str(n)\0A}\0A\0Astruct Writer {\0A []str out\0A}\0A\0Afn write(Json j, str indent, str pad, ptr[Writer] w) {\0A nl := \22\22\0A inner := \22\22\0A sep := \22,\22\0A colon := \22:\22\0A if indent.len > 0 {\0A nl = \22\5Cn\22\0A inner = pad + indent\0A colon = \22: \22\0A }\0A match j.kind {\0A Null -> w.out.push(\22null\22)\0A Bool -> {\0A if j.flag {\0A w.out.push(\22true\22)\0A } else {\0A w.out.push(\22false\22)\0A }\0A }\0A Number -> w.out.push(number_text(j.num))\0A Text -> w.out.push(quote(j.text))\0A List -> {\0A if j.items.len == 0 {\0A w.out.push(\22[]\22)\0A return\0A }\0A w.out.push(\22[\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22]\22)\0A }\0A Object -> {\0A if j.items.len == 0 {\0A w.out.push(\22{}\22)\0A return\0A }\0A w.out.push(\22{\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner + quote(j.keys[i]) + colon)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22}\22)\0A }\0A }\0A}\0A\0A// the value as text on one line\0Afn stringify(Json j) -> str {\0A w := Writer()\0A write(j, \22\22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// the value as text over several lines, indented by two spaces\0Afn pretty(Json j) -> str {\0A w := Writer()\0A write(j, \22 \22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// ---------- reading ----------\0A\0Astruct Reader {\0A str src\0A int i\0A}\0A\0A// the line and column of a position, for a message\0Afn where(ptr[Reader] r) -> str {\0A line := 1\0A col := 1\0A for k in 0..r.i {\0A if k < r.src.len && r.src[k] == '\5Cn' {\0A line += 1\0A col = 1\0A } else {\0A col += 1\0A }\0A }\0A return \22line \22 + str(line) + \22, column \22 + str(col)\0A}\0A\0Afn peek(ptr[Reader] r) -> char {\0A if r.i < r.src.len {\0A return r.src[r.i]\0A }\0A return char(0)\0A}\0A\0Afn skip_space(ptr[Reader] r) {\0A while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\5Cn' || r.src[r.i] == '\5Ct' || r.src[r.i] == '\5Cr') {\0A r.i += 1\0A }\0A}\0A\0Afn unexpected(ptr[Reader] r, str wanted) -> str {\0A if r.i >= r.src.len {\0A return \22json: the text ends where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A }\0A return \22json: found '\22 + str(r.src[r.i]) + \22' where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A}\0A\0A// does `word` come next?\0Afn comes(ptr[Reader] r, str word) -> bool {\0A return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word\0A}\0A\0Afn expect_word(ptr[Reader] r, str word) -> ! {\0A if !comes(r, word) {\0A return error(unexpected(r, \22'\22 + word + \22'\22))\0A }\0A r.i += word.len\0A}\0A\0Afn hex_value(char c) -> int {\0A if c >= '0' && c <= '9' {\0A return int(c) - int('0')\0A }\0A if c >= 'a' && c <= 'f' {\0A return int(c) - int('a') + 10\0A }\0A if c >= 'A' && c <= 'F' {\0A return int(c) - int('A') + 10\0A }\0A return -1\0A}\0A\0A// a code point as UTF-8\0Afn utf8(int cp) -> str {\0A []u8 b\0A if cp < 128 {\0A b.push(u8(cp))\0A } else if cp < 2048 {\0A b.push(u8(192 + cp / 64))\0A b.push(u8(128 + cp % 64))\0A } else if cp < 65536 {\0A b.push(u8(224 + cp / 4096))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A } else {\0A b.push(u8(240 + cp / 262144))\0A b.push(u8(128 + (cp / 4096) % 64))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A }\0A return str(b)\0A}\0A\0Afn read_hex4(ptr[Reader] r) -> int! {\0A n := 0\0A for k in 0..4 {\0A if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 {\0A return error(unexpected(r, \22a hexadecimal digit\22))\0A }\0A n = n * 16 + hex_value(r.src[r.i])\0A r.i += 1\0A }\0A return n\0A}\0A\0Afn read_string(ptr[Reader] r) -> str! {\0A r.i += 1 // the opening quote\0A []str parts\0A start := r.i\0A while true {\0A if r.i >= r.src.len {\0A return error(\22json: a text is never closed (\22 + where(r) + \22)\22)\0A }\0A c := r.src[r.i]\0A if c == '\22' {\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A return parts.join(\22\22)\0A }\0A if int(c) < 32 {\0A return error(\22json: a line break or control character inside a text (\22 + where(r) + \22)\22)\0A }\0A if c != '\5C\5C' {\0A r.i += 1\0A continue\0A }\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A e := peek(r)\0A r.i += 1\0A if e == 'n' {\0A parts.push(\22\5Cn\22)\0A } else if e == 't' {\0A parts.push(\22\5Ct\22)\0A } else if e == 'r' {\0A parts.push(\22\5Cr\22)\0A } else if e == 'b' {\0A parts.push(utf8(8))\0A } else if e == 'f' {\0A parts.push(utf8(12))\0A } else if e == '\22' || e == '\5C\5C' || e == '/' {\0A parts.push(str(e))\0A } else if e == 'u' {\0A cp := try read_hex4(r)\0A // a pair of \F0\9F\98\80 stands for one character above U+FFFF\0A if cp >= 55296 && cp < 56320 && comes(r, \22\5C\5Cu\22) {\0A r.i += 2\0A low := try read_hex4(r)\0A cp = 65536 + (cp - 55296) * 1024 + (low - 56320)\0A }\0A parts.push(utf8(cp))\0A } else {\0A return error(\22json: unknown escape \5C\5C\22 + str(e) + \22 in a text (\22 + where(r) + \22)\22)\0A }\0A start = r.i\0A }\0A}\0A\0Afn read_number(ptr[Reader] r) -> Json! {\0A start := r.i\0A if peek(r) == '-' {\0A r.i += 1\0A }\0A while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') {\0A r.i += 1\0A }\0A n := float(r.src.sub(start, r.i)) or {\0A r.i = start\0A return error(unexpected(r, \22a number\22))\0A }\0A return new_number(n)\0A}\0A\0Afn read_value(ptr[Reader] r) -> Json! {\0A skip_space(r)\0A c := peek(r)\0A if r.i >= r.src.len {\0A return error(unexpected(r, \22a value\22))\0A }\0A if c == '{' {\0A obj := new_object()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A while true {\0A skip_space(r)\0A if peek(r) != '\22' {\0A return error(unexpected(r, \22a key in quotes\22))\0A }\0A key := try read_string(r)\0A skip_space(r)\0A if peek(r) != ':' {\0A return error(unexpected(r, \22':'\22))\0A }\0A r.i += 1\0A v := try read_value(r)\0A obj.set(key, v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A return error(unexpected(r, \22',' or '}'\22))\0A }\0A }\0A if c == '[' {\0A list := new_list()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A while true {\0A v := try read_value(r)\0A list.push(v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A return error(unexpected(r, \22',' or ']'\22))\0A }\0A }\0A if c == '\22' {\0A s := try read_string(r)\0A return new_text(s)\0A }\0A if c == 't' {\0A try expect_word(r, \22true\22)\0A return new_bool(true)\0A }\0A if c == 'f' {\0A try expect_word(r, \22false\22)\0A return new_bool(false)\0A }\0A if c == 'n' {\0A try expect_word(r, \22null\22)\0A return new_null()\0A }\0A if c == '-' || (c >= '0' && c <= '9') {\0A return try read_number(r)\0A }\0A return error(unexpected(r, \22a value\22))\0A}\0A\0A// the JSON in `text`; an error with the line and column where it went wrong\0Afn parse(str text) -> Json! {\0A r := Reader(src: text)\0A v := try read_value(addr(r))\0A skip_space(addr(r))\0A if r.i < r.src.len {\0A return error(unexpected(addr(r), \22the end of the text\22))\0A }\0A return v\0A}\0A\00" -@.str.7554 = private unnamed_addr constant [2847 x i8] c"// Paths, as text. Elements are separated by \22/\22.\0A//\0A// import path\0A// path.join(\22a\22, \22b.txt\22) a/b.txt\0A// path.base(\22/tmp/x/a.tar.gz\22) a.tar.gz path.stem(...) a.tar path.ext(...) .gz\0A// path.dir(\22/tmp/x/a.txt\22) /tmp/x\0A// path.clean(\22a//b/../c/./d\22) a/c/d\0A\0A// a and b with one separator between; an absolute b replaces a\0Afn join(str a, str b) -> str {\0A if a.len == 0 {\0A return b\0A }\0A if b.len == 0 {\0A return a\0A }\0A if b[0] == '/' {\0A return b\0A }\0A if a[a.len - 1] == '/' {\0A return a + b\0A }\0A return a + \22/\22 + b\0A}\0A\0Afn is_abs(str p) -> bool {\0A return p.len > 0 && p[0] == '/'\0A}\0A\0A// the last element: \22a/b.txt\22 -> \22b.txt\22, \22a/b/\22 -> \22b\22, \22\22 -> \22.\22, \22/\22 -> \22/\22\0Afn base(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A if end == 1 && p[0] == '/' {\0A return \22/\22\0A }\0A start := end\0A while start > 0 && p[start - 1] != '/' {\0A start -= 1\0A }\0A return p.sub(start, end)\0A}\0A\0A// everything before the last element: \22a/b.txt\22 -> \22a\22, \22b.txt\22 -> \22.\22, \22/b\22 -> \22/\22\0Afn dir(str p) -> str {\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A i := end\0A while i > 0 && p[i - 1] != '/' {\0A i -= 1\0A }\0A if i == 0 {\0A return \22.\22\0A }\0A while i > 1 && p[i - 1] == '/' {\0A i -= 1\0A }\0A return p.sub(0, i)\0A}\0A\0A// the part of the last element from its last dot: \22a.tar.gz\22 -> \22.gz\22; \22\22 when there is none\0Afn ext(str p) -> str {\0A b := base(p)\0A i := b.len\0A while i > 0 && b[i - 1] != '.' {\0A i -= 1\0A }\0A if i <= 1 { // no dot, or a name that only starts with one (.bashrc)\0A return \22\22\0A }\0A return b.sub(i - 1, b.len)\0A}\0A\0A// the last element without its extension\0Afn stem(str p) -> str {\0A b := base(p)\0A e := ext(p)\0A return b.sub(0, b.len - e.len)\0A}\0A\0A// the elements of a path: \22/a/b/c\22 -> [\22a\22, \22b\22, \22c\22]\0Afn parts(str p) -> []str {\0A []str out\0A for piece in p.split(\22/\22) {\0A if piece.len > 0 {\0A out.push(piece)\0A }\0A }\0A return out\0A}\0A\0A// the shortest path with the same meaning: no \22//\22, no \22.\22, and \22..\22 resolved where it can be\0Afn clean(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A abs := is_abs(p)\0A []str out\0A for piece in parts(p) {\0A if piece == \22.\22 {\0A continue\0A }\0A if piece == \22..\22 {\0A if out.len > 0 && out[out.len - 1] != \22..\22 {\0A out.pop()\0A } else if !abs {\0A out.push(\22..\22)\0A }\0A continue\0A }\0A out.push(piece)\0A }\0A joined := out.join(\22/\22)\0A if abs {\0A return \22/\22 + joined\0A }\0A if joined.len == 0 {\0A return \22.\22\0A }\0A return joined\0A}\0A\00" -@.str.7555 = private unnamed_addr constant [1407 x i8] c"// Programs: run a command, read what it printed, look at the environment.\0A//\0A// import proc\0A// code := proc.run(\22make\22) the exit code; what the command prints goes to the screen\0A// text := try proc.output(\22git describe\22) what the command printed; an error if it failed\0A// proc.env(\22HOME\22, \22/\22) an environment variable, or the second value if it is not set\0Aimport \22stdlib.h\22\0Aimport \22unistd.h\22\0Aimport \22time.h\22\0A\0A// run a command; its output goes to the screen. Gives its exit code.\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0A// run a command and give what it printed. Fails, with its output as the message, if it exits with an error.\0Afn output(str command) -> str! {\0A tmp := \22/tmp/finch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(\22(\22 + command + \22) > '\22 + tmp + \22' 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0A// the folder the program is running in\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7556 = private unnamed_addr constant [996 x i8] c"// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS).\0Aimport \22stdlib.h\22\0Aimport \22process.h\22\0Aimport \22direct.h\22\0Aimport \22time.h\22\0A\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0Afn output(str command) -> str! {\0A tmp := proc_env(\22TEMP\22, \22.\22) + \22\5C\5Cfinch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(command + \22 > \5C\22\22 + tmp + \22\5C\22 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn proc_env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn env(str name, str fallback) -> str {\0A return proc_env(name, fallback)\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7557 = private unnamed_addr constant [2540 x i8] c"// Time: the clock, sleeping, and dates.\0A//\0A// import time\0A// start := time.millis() milliseconds from a clock that only goes forward (to measure with)\0A// time.sleep(250) wait a quarter of a second\0A// time.now() seconds since 1970-01-01 00:00 UTC\0A// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second\0A// time.format(time.now(), \22%Y-%m-%d %H:%M\22) as text, in the computer's time zone\0Aimport \22time.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0A// seconds since 1970-01-01 00:00 UTC\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward: for measuring how long something took\0Afn millis() -> int {\0A timespec ts\0A clock_gettime(CLOCK_MONOTONIC, addr(ts))\0A return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000\0A}\0A\0Afn sleep(int ms) {\0A timespec ts\0A ts.tv_sec = ms / 1000\0A ts.tv_nsec = (ms % 1000) * 1000000\0A nanosleep(addr(ts), null)\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0A// the date and time of a moment, in UTC\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A gmtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// the date and time of a moment, in the computer's time zone\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second\0A// (the rest of C's strftime works too: %A weekday name, %B month name, ...)\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0A// the number of days in a month (month is 1 to 12)\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7558 = private unnamed_addr constant [1793 x i8] c"// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS).\0Aimport \22time.h\22\0Aimport \22finch_win.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms)\0Afn millis() -> int {\0A i64 count = 0\0A i64 freq = 1\0A QueryPerformanceFrequency(addr(freq))\0A QueryPerformanceCounter(addr(count))\0A return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq)\0A}\0A\0Afn sleep(int ms) {\0A Sleep(u32(ms))\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _gmtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7559 = private unnamed_addr constant [366 x i8] c"/* The Windows functions std/time_windows.fch needs. Declared here, not by including :\0A libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */\0Aunsigned long long GetTickCount64(void);\0Avoid Sleep(unsigned long milliseconds);\0Aint QueryPerformanceCounter(long long *count);\0Aint QueryPerformanceFrequency(long long *frequency);\0A\00" - -declare void @finch_panic(ptr, i64, ptr) noreturn cold -declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold -declare ptr @finch_alloc(i64) -declare void @finch_str_copy(ptr, ptr) -declare void @finch_str_drop(ptr) -declare void @finch_arr_free(ptr) -declare void @finch_map_free(ptr) -declare void @finch_str_own(ptr) -declare void @finch_str_concat(ptr, ptr, ptr) -declare i32 @finch_str_eq(ptr, ptr) -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 22, 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 28) - %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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca i64, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - 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 - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = add i64 %t7, 1 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t11 = load i64, ptr %t10 - call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t9, i64 %t11, ptr @.str.4, i64 32) - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - %t14 = load { ptr, i64, i64 }, ptr %a1 - %t15 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %logic.from13 -logic.from13: - br i1 %t19, label %logic.rhs14, label %logic.end15 -logic.rhs14: - %t21 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_starts(ptr %a22, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - %t27 = xor i1 %t26, true - br label %logic.rend16 -logic.rend16: - br label %logic.end15 -logic.end15: - %t28 = phi i1 [ false, %logic.from13 ], [ %t27, %logic.rend16 ] - br i1 %t28, label %then17, label %endif19 -then17: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - %t33 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t32, ptr %a13 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif19 -endif19: - %t35 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a40 - %t41 = load i64, ptr %a40 - %t42 = icmp sgt i64 %t41, 0 - br i1 %t42, label %then20, label %endif22 -then20: - %t43 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t43, ptr %a44 - %t46 = load i64, ptr %a40 - call void @finch_str_sub(ptr %a45, ptr %a44, i64 0, i64 %t46, ptr @.str.10, i64 38) - %t47 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a13) - ret { ptr, i64, i64 } %t47 -endif22: - %t48 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t48 -} - -define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { -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 55, 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 57, 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 57, i64 %t28, i64 %t30) - unreachable -inrange36: - %t32 = extractvalue { ptr, i64, i64 } %t29, 0 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 %t28 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 57) - %t37 = load { ptr, i64, i64 }, ptr %a36 - ret { ptr, i64, i64 } %t37 -endif32: - %t38 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 59) - %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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %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 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = 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 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - %t11 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t10, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t10, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.19, i64 4, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a22 - %t23 = load { ptr, i64, i64 }, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.20, i64 1, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.21, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic37, label %ok38 -panic37: - call void @finch_panic(ptr @.str.22, i64 67, ptr @.str.23) - unreachable -ok38: - %t43 = getelementptr inbounds %S.main.Loader, ptr %t41, i32 0, i32 3 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t40, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t40, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.24, i64 4, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = call i32 @finch_file_exists(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = icmp ne i32 %t56, 0 - br i1 %t58, label %then39, label %endif41 -then39: - %t59 = load { ptr, i64, i64 }, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.25, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t65, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load ptr, ptr %a1 - %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic42, label %ok43 -panic42: - call void @finch_panic(ptr @.str.27, i64 68, ptr @.str.28) - unreachable -ok43: - %t79 = getelementptr inbounds %S.main.Loader, ptr %t77, i32 0, i32 3 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t76, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t76, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t90 -endif41: - %t91 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - br i1 %t94, label %then44, label %endif46 -then44: - %t95 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t95 -endif46: - %t96 = load ptr, ptr %a1 - %t97 = icmp eq ptr %t96, null - br i1 %t97, label %panic47, label %ok48 -panic47: - call void @finch_panic(ptr @.str.30, i64 73, ptr @.str.31) - unreachable -ok48: - %t98 = getelementptr inbounds %S.main.Loader, ptr %t96, i32 0, i32 5 - store i64 0, ptr %a99 - br label %each.cond49 -each.cond49: - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = load i64, ptr %a99 - %t103 = icmp slt i64 %t102, %t101 - br i1 %t103, label %each.body50, label %each.end52 -each.body50: - %t104 = load ptr, ptr %t98 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.32, i64 1, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a109 - %t113 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t112, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t112, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.33, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic53, label %ok54 -panic53: - call void @finch_panic(ptr @.str.34, i64 74, ptr @.str.35) - unreachable -ok54: - %t126 = getelementptr inbounds %S.main.Loader, ptr %t124, i32 0, i32 3 - %t127 = load { ptr, i64, i64 }, ptr %t126 - store { ptr, i64, i64 } %t123, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t123, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a138 - %t139 = call i32 @finch_file_exists(ptr %a138) - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = icmp ne i32 %t139, 0 - br i1 %t141, label %then55, label %endif57 -then55: - %t142 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - %t147 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t146, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.38, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic58, label %ok59 -panic58: - call void @finch_panic(ptr @.str.39, i64 75, ptr @.str.40) - unreachable -ok59: - %t160 = getelementptr inbounds %S.main.Loader, ptr %t158, i32 0, i32 3 - %t161 = load { ptr, i64, i64 }, ptr %t160 - store { ptr, i64, i64 } %t157, ptr %a163 - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t157, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.41, i64 4, i64 0 }, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t171 -endif57: - %t172 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t172, ptr %a174 - store { ptr, i64, i64 } { ptr @.str.42, i64 1, i64 0 }, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - %t177 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t176, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.43, i64 4, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t187, ptr %a188 - %t189 = call i32 @finch_file_exists(ptr %a188) - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = icmp ne i32 %t189, 0 - br i1 %t191, label %then60, label %endif62 -then60: - %t192 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.44, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - %t196 = load { ptr, i64, i64 }, ptr %a193 - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t196, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t196, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.45, i64 4, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t207 -endif62: - br label %each.step51 -each.step51: - %t208 = load i64, ptr %a99 - %t209 = add i64 %t208, 1 - store i64 %t209, ptr %a99 - br label %each.cond49 -each.end52: - %t210 = load ptr, ptr %a1 - %t211 = icmp eq ptr %t210, null - br i1 %t211, label %panic63, label %ok64 -panic63: - call void @finch_panic(ptr @.str.46, i64 81, ptr @.str.47) - unreachable -ok64: - %t212 = getelementptr inbounds %S.main.Loader, ptr %t210, i32 0, i32 4 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t214 = load i64, ptr %t213 - %t215 = icmp sgt i64 %t214, 0 - br i1 %t215, label %then65, label %endif67 -then65: - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic68, label %ok69 -panic68: - call void @finch_panic(ptr @.str.48, i64 82, ptr @.str.49) - unreachable -ok69: - %t218 = getelementptr inbounds %S.main.Loader, ptr %t216, i32 0, i32 4 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t223, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t223, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - store { ptr, i64, i64 } %t229, ptr %a231 - store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t229, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic70, label %ok71 -panic70: - call void @finch_panic(ptr @.str.52, i64 82, ptr @.str.53) - unreachable -ok71: - %t237 = getelementptr inbounds %S.main.Loader, ptr %t235, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - store { ptr, i64, i64 } %t234, ptr %a240 - store { ptr, i64, i64 } %t238, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t234, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a249 - %t250 = call i32 @finch_file_exists(ptr %a249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - %t252 = icmp ne i32 %t250, 0 - br i1 %t252, label %then72, label %endif74 -then72: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic75, label %ok76 -panic75: - call void @finch_panic(ptr @.str.55, i64 83, ptr @.str.56) - unreachable -ok76: - %t255 = getelementptr inbounds %S.main.Loader, ptr %t253, i32 0, i32 4 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.57, i64 1, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - %t260 = load { ptr, i64, i64 }, ptr %a257 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t260, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.58, i64 1, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic77, label %ok78 -panic77: - call void @finch_panic(ptr @.str.59, i64 83, ptr @.str.60) - unreachable -ok78: - %t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } %t271, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t271, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.61, i64 4, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t285 -endif74: - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic79, label %ok80 -panic79: - call void @finch_panic(ptr @.str.62, i64 85, ptr @.str.63) - unreachable -ok80: - %t288 = getelementptr inbounds %S.main.Loader, ptr %t286, i32 0, i32 4 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.64, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a290 - %t294 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t293, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.65, i64 4, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t304, ptr %a305 - %t306 = call i32 @finch_file_exists(ptr %a305) - store { ptr, i64, i64 } %t304, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = icmp ne i32 %t306, 0 - br i1 %t308, label %then81, label %endif83 -then81: - %t309 = load ptr, ptr %a1 - %t310 = icmp eq ptr %t309, null - br i1 %t310, label %panic84, label %ok85 -panic84: - call void @finch_panic(ptr @.str.66, i64 86, ptr @.str.67) - unreachable -ok85: - %t311 = getelementptr inbounds %S.main.Loader, ptr %t309, i32 0, i32 4 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.68, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t316, ptr %a319 - store { ptr, i64, i64 } %t317, ptr %a320 - call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) - store { ptr, i64, i64 } %t316, ptr %a321 - call void @finch_str_drop(ptr %a321) - %t322 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.69, i64 4, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - store { ptr, i64, i64 } %t322, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t327 -endif83: - br label %endif67 -endif67: - %t328 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t328 -} - -define internal void @finch.drop.S_lexer_Token(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_lexer_Token(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond107 -n.cond107: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body108, label %n.end109 -n.body108: - %t7 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t5 - call void @finch.drop.S_lexer_Token(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond107 -n.end109: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.copy.arr_str(ptr %dst, ptr %src) { -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.cond110 -n.cond110: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body111, label %n.end112 -n.body111: - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 %t6 - call void @finch_str_copy(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond110 -n.end112: - 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.cond118 -n.cond118: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body119, label %n.end120 -n.body119: - %t8 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds %S.ast.Type, ptr %t2, i64 %t6 - call void @finch.copy.S_ast_Type(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond118 -n.end120: - 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.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.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.cond115 -n.end117: - 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.drop.arr_str(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond137 -n.cond137: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body138, label %n.end139 -n.body138: - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t5 - call void @finch_str_drop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond137 -n.end139: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Type(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond143 -n.cond143: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body144, label %n.end145 -n.body144: - %t7 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Type(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond143 -n.end145: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Type(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.S_ast_Node(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 5 - call void @finch.drop.S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 9 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.arr_S_ast_Node(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond140 -n.cond140: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body141, label %n.end142 -n.body141: - %t7 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Node(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond140 -n.end142: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Program(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Node(ptr %t8) - %t9 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_S_ast_Node(ptr %t9) - ret void -} - -define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Program, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.ast.Program, align 16 - %a139 = alloca %S.ast.Program, align 16 - %a145 = alloca i64, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca i64, align 16 - %a162 = alloca i64, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 93, 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) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t43, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = extractvalue { ptr, i64, i64 } %t54, 1 - %t56 = trunc i64 %t55 to i32 - %t57 = extractvalue { ptr, i64, i64 } %t54, 0 - %t58 = icmp eq ptr %t57, null - %t59 = select i1 %t58, ptr @.str.75, ptr %t57 - %t60 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t56, ptr %t59) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = call i32 (ptr, ...) @printf(ptr @.str.77) - br label %endif102 -else101: - %t63 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.78, i64 19, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = extractvalue { ptr, i64, i64 } %t72, 1 - %t74 = trunc i64 %t73 to i32 - %t75 = extractvalue { ptr, i64, i64 } %t72, 0 - %t76 = icmp eq ptr %t75, null - %t77 = select i1 %t76, ptr @.str.80, ptr %t75 - %t78 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t74, ptr %t77) - store { ptr, i64, i64 } %t72, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = call i32 (ptr, ...) @printf(ptr @.str.82) - br label %endif102 -endif102: - %t81 = trunc i64 1 to i32 - %t82 = call i32 @fflush(ptr null) - call void @exit(i32 %t81) - br label %endif99 -endif99: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a2 - %t85 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t83, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic103, label %ok104 -panic103: - call void @finch_panic(ptr @.str.83, i64 102, ptr @.str.84) - unreachable -ok104: - %t89 = getelementptr inbounds %S.main.Loader, ptr %t87, i32 0, i32 1 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 %t91, ptr %a92 - %t93 = load ptr, ptr %a1 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic105, label %ok106 -panic105: - call void @finch_panic(ptr @.str.85, i64 103, ptr @.str.86) - unreachable -ok106: - %t95 = getelementptr inbounds %S.main.Loader, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 - store { ptr, i64, i64 } %t100, ptr %t104 - store i64 %t102, ptr %t96 - %t105 = load { ptr, i64, i64 }, ptr %a86 - %t106 = load { ptr, i64, i64 }, ptr %a2 - %t107 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t105, { ptr, i64, i64 } %t106) - %t108 = load i64, ptr %a92 - %t109 = load { ptr, i64, i64 }, ptr %a2 - %t110 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t107, i64 %t108, { ptr, i64, i64 } %t109) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch.drop.arr_S_lexer_Token(ptr %a111) - store %S.ast.Program %t110, ptr %a112 - %t113 = load { ptr, i64, i64 }, ptr %a3 - %t114 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 0 - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t117, ptr %t114 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a2 - %t121 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 1 - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t124, ptr %t121 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.copy.arr_str(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t131, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic113, label %ok114 -panic113: - call void @finch_panic(ptr @.str.87, i64 108, ptr @.str.88) - unreachable -ok114: - %t135 = getelementptr inbounds %S.main.Loader, ptr %t133, i32 0, i32 0 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load %S.ast.Program, ptr %a112 - store %S.ast.Program %t137, ptr %a138 - call void @finch.copy.S_ast_Program(ptr %a139, ptr %a138) - %t140 = load %S.ast.Program, ptr %a139 - %t141 = load i64, ptr %t136 - %t142 = add i64 %t141, 1 - call void @finch_arr_reserve(ptr %t135, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) - %t143 = load ptr, ptr %t135 - %t144 = getelementptr inbounds %S.ast.Program, ptr %t143, i64 %t141 - store %S.ast.Program %t140, ptr %t144 - store i64 %t142, ptr %t136 - store i64 0, ptr %a145 - br label %each.cond121 -each.cond121: - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = load i64, ptr %a145 - %t149 = icmp slt i64 %t148, %t147 - br i1 %t149, label %each.body122, label %each.end124 -each.body122: - %t150 = load ptr, ptr %a132 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic125, label %ok126 -panic125: - call void @finch_panic(ptr @.str.89, i64 110, ptr @.str.90) - unreachable -ok126: - %t156 = getelementptr inbounds %S.main.Loader, ptr %t154, i32 0, i32 2 - %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 - %t158 = load { ptr, i64, i64 }, ptr %a153 - store i64 -1, ptr %a159 - %t160 = load i64, ptr %t157 - %t161 = load ptr, ptr %t156 - store i64 0, ptr %a162 - br label %find.cond127 -find.cond127: - %t163 = load i64, ptr %a162 - %t164 = icmp slt i64 %t163, %t160 - br i1 %t164, label %find.body128, label %find.end131 -find.body128: - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t163 - %t166 = load { ptr, i64, i64 }, ptr %t165 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } %t158, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br i1 %t170, label %find.hit129, label %find.next130 -find.hit129: - store i64 %t163, ptr %a159 - br label %find.end131 -find.next130: - %t171 = add i64 %t163, 1 - store i64 %t171, ptr %a162 - br label %find.cond127 -find.end131: - %t172 = load i64, ptr %a159 - %t173 = icmp sge i64 %t172, 0 - %t174 = xor i1 %t173, true - br i1 %t174, label %then132, label %endif134 -then132: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic135, label %ok136 -panic135: - call void @finch_panic(ptr @.str.91, i64 111, ptr @.str.92) - unreachable -ok136: - %t177 = getelementptr inbounds %S.main.Loader, ptr %t175, i32 0, i32 2 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_copy(ptr %a181, ptr %a180) - %t182 = load { ptr, i64, i64 }, ptr %a181 - %t183 = load i64, ptr %t178 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t177, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t177 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 - store { ptr, i64, i64 } %t182, ptr %t186 - store i64 %t184, ptr %t178 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a2 - %t190 = load { ptr, i64, i64 }, ptr %a153 - %t191 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) - %t192 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.main.load(ptr %t187, { ptr, i64, i64 } %t191, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - br label %endif134 -endif134: - br label %each.step123 -each.step123: - %t194 = load i64, ptr %a145 - %t195 = add i64 %t194, 1 - store i64 %t195, ptr %a145 - br label %each.cond121 -each.end124: - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_ast_Program(ptr %a112) - call void @finch_str_drop(ptr %a86) - ret void -} - -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 { ptr, i64, i64 } @finch.main.unpack() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca i64, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.embedded.names() - store { ptr, i64, i64 } %t1, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.145, i64 7, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.146, i64 1, i64 0 }, ptr %a12 - call void @finch_str_join(ptr %a13, ptr %a10, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.drop.arr_str(ptr %a10) - %t15 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t14, ptr %a16 - call void @finch_str_drop(ptr %a16) - store { ptr, i64, i64 } %t8, ptr %a18 - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t8, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t15, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a29 - %t30 = call i32 @finch_file_exists(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = icmp ne i32 %t30, 0 - br i1 %t32, label %then146, label %endif148 -then146: - %t33 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t33 -endif148: - %t34 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t34, ptr %a35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t37 = load i64, ptr %t36 - store i64 0, ptr %a38 - br label %for.cond149 -for.cond149: - %t39 = load i64, ptr %a38 - %t40 = icmp slt i64 %t39, %t37 - br i1 %t40, label %for.body150, label %for.end152 -for.body150: - %t41 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.148, i64 1, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a38 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = icmp uge i64 %t46, %t48 - br i1 %t49, label %range153, label %inrange154 -range153: - call void @finch_panic_index(ptr @.str.149, i64 144, i64 %t46, i64 %t48) - unreachable -inrange154: - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t46 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t45, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t45, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - %t58 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t57) - store { ptr, i64, i64 } %t57, ptr %a59 - call void @finch_str_drop(ptr %a59) - call void @finch.host.makeDirs({ ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.150, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = load i64, ptr %a38 - %t67 = load { ptr, i64, i64 }, ptr %a2 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range155, label %inrange156 -range155: - call void @finch_panic_index(ptr @.str.151, i64 145, i64 %t66, i64 %t68) - unreachable -inrange156: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t66 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t65, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t65, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load i64, ptr %a38 - %t79 = load { ptr, i64, i64 }, ptr %a35 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range157, label %inrange158 -range157: - call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t78, i64 %t80) - unreachable -inrange158: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i64 %t78 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t77, ptr %a85 - store { ptr, i64, i64 } %t84, ptr %a86 - %t87 = call i32 @finch_write_file(ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t77, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = icmp ne i32 %t87, 0 - br label %for.step151 -for.step151: - %t90 = load i64, ptr %a38 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a38 - br label %for.cond149 -for.end152: - %t92 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.153, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.154, i64 0, i64 0 }, ptr %a98 - %t99 = call i32 @finch_write_file(ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = icmp ne i32 %t99, 0 - %t102 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a35) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t102 -} - -define internal void @finch.drop.S_cimport_Header(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_Header(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond403 -n.cond403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body404, label %n.end405 -n.body404: - %t7 = getelementptr inbounds %S.cimport.Header, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_Header(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond403 -n.end405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Program(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond406 -n.cond406: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body407, label %n.end408 -n.body407: - %t7 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Program(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond406 -n.end408: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_main_Loader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t7) - %t8 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.S_platform_Target(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 6 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) { -entry: - - %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 void @finch.drop.S_gen_Options(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 4 - call void @finch.drop.S_platform_Target(ptr %t2) - ret void -} - -define internal void @finch.drop.S_cimport_CFunc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_ast_Type(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CFunc(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond416 -n.cond416: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body417, label %n.end418 -n.body417: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live419, label %entry.next420 -entry.live419: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CFunc(ptr %t13) - br label %entry.next420 -entry.next420: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond416 -n.end418: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CConst(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CConst, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CConst(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond421 -n.cond421: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body422, label %n.end423 -n.body422: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live424, label %entry.next425 -entry.live424: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CConst(ptr %t13) - br label %entry.next425 -entry.next425: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond421 -n.end423: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_S_ast_Type(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond426 -n.cond426: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body427, label %n.end428 -n.body427: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live429, label %entry.next430 -entry.live429: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t13) - br label %entry.next430 -entry.next430: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond426 -n.end428: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CField(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_CField(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond436 -n.cond436: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body437, label %n.end438 -n.body437: - %t7 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_CField(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond436 -n.end438: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CStruct(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_cimport_CField(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CStruct(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond431 -n.cond431: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body432, label %n.end433 -n.body432: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live434, label %entry.next435 -entry.live434: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CStruct(ptr %t13) - br label %entry.next435 -entry.next435: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond431 -n.end433: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CImports(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 0 - call void @finch.drop.map_str_S_cimport_CFunc(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 1 - call void @finch.drop.map_str_S_cimport_CConst(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_cimport_CStruct(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.S_linker_Build(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.platform.Target, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = 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 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca %S.main.Loader, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca i64, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca i64, align 16 - %a653 = alloca %S.ast.Program, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a663 = alloca i64, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca i64, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca %S.cimport.CImports, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a866 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca %S.platform.Target, align 16 - %a876 = alloca %S.platform.Target, align 16 - %a880 = alloca %S.gen.Options, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a921 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca { ptr, i64, i64 }, align 16 - %a923 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a927 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a978 = 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 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a993 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca %S.linker.Build, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca i64, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1081 = 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 - %a1085 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca i64, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = icmp eq i64 %t3, 2 - br label %logic.from159 -logic.from159: - br i1 %t4, label %logic.rhs160, label %logic.end161 -logic.rhs160: - %t5 = load { ptr, i64, i64 }, ptr %a1 - %t6 = extractvalue { ptr, i64, i64 } %t5, 1 - %t7 = icmp uge i64 1, %t6 - br i1 %t7, label %range162, label %inrange163 -range162: - call void @finch_panic_index(ptr @.str.155, i64 152, i64 1, i64 %t6) - unreachable -inrange163: - %t8 = extractvalue { ptr, i64, i64 } %t5, 0 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 1 - %t10 = load { ptr, i64, i64 }, ptr %t9 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.156, i64 7, i64 0 }, ptr %a12 - %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) - %t14 = icmp ne i32 %t13, 0 - br label %logic.from164 -logic.from164: - br i1 %t14, label %logic.end166, label %logic.rhs165 -logic.rhs165: - %t15 = load { ptr, i64, i64 }, ptr %a1 - %t16 = extractvalue { ptr, i64, i64 } %t15, 1 - %t17 = icmp uge i64 1, %t16 - br i1 %t17, label %range167, label %inrange168 -range167: - call void @finch_panic_index(ptr @.str.157, i64 152, i64 1, i64 %t16) - unreachable -inrange168: - %t18 = extractvalue { ptr, i64, i64 } %t15, 0 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.158, i64 9, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br label %logic.rend169 -logic.rend169: - br label %logic.end166 -logic.end166: - %t25 = phi i1 [ true, %logic.from164 ], [ %t24, %logic.rend169 ] - br label %logic.rend170 -logic.rend170: - br label %logic.end161 -logic.end161: - %t26 = phi i1 [ false, %logic.from159 ], [ %t25, %logic.rend170 ] - br i1 %t26, label %then171, label %endif173 -then171: - %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 1 - %t28 = trunc i64 %t27 to i32 - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 0 - %t30 = icmp eq ptr %t29, null - %t31 = select i1 %t30, ptr @.str.160, ptr %t29 - %t32 = call i32 (ptr, ...) @printf(ptr @.str.161, i32 %t28, ptr %t31) - %t33 = call i32 (ptr, ...) @printf(ptr @.str.162) - ret i64 0 -endif173: - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t35 = load i64, ptr %t34 - %t36 = icmp eq i64 %t35, 2 - br label %logic.from174 -logic.from174: - br i1 %t36, label %logic.rhs175, label %logic.end176 -logic.rhs175: - %t37 = load { ptr, i64, i64 }, ptr %a1 - %t38 = extractvalue { ptr, i64, i64 } %t37, 1 - %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range177, label %inrange178 -range177: - call void @finch_panic_index(ptr @.str.163, i64 156, i64 1, i64 %t38) - unreachable -inrange178: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.164, i64 3, i64 0 }, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - br label %logic.rend179 -logic.rend179: - br label %logic.end176 -logic.end176: - %t47 = phi i1 [ false, %logic.from174 ], [ %t46, %logic.rend179 ] - br i1 %t47, label %then180, label %endif182 -then180: - %t48 = load { ptr, i64, i64 }, ptr %a1 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 0, %t49 - br i1 %t50, label %range183, label %inrange184 -range183: - call void @finch_panic_index(ptr @.str.165, i64 157, i64 0, i64 %t49) - unreachable -inrange184: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = call i64 @finch.lsp.run({ ptr, i64, i64 } %t53) - ret i64 %t54 -endif182: - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t56 = load i64, ptr %t55 - %t57 = icmp slt i64 %t56, 3 - br i1 %t57, label %then185, label %endif187 -then185: - call void @finch.main.usage() - br label %endif187 -endif187: - %t58 = load { ptr, i64, i64 }, ptr %a1 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - %t60 = icmp uge i64 1, %t59 - br i1 %t60, label %range188, label %inrange189 -range188: - call void @finch_panic_index(ptr @.str.166, i64 162, i64 1, i64 %t59) - unreachable -inrange189: - %t61 = extractvalue { ptr, i64, i64 } %t58, 0 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - 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 %range190, label %inrange191 -range190: - call void @finch_panic_index(ptr @.str.167, i64 163, i64 2, i64 %t69) - unreachable -inrange191: - %t71 = extractvalue { ptr, i64, i64 } %t68, 0 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - 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.168, i64 5, i64 0 }, ptr %a80 - %t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80) - %t82 = icmp eq i32 %t81, 0 - br label %logic.from192 -logic.from192: - br i1 %t82, label %logic.rhs193, label %logic.end194 -logic.rhs193: - %t83 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t83, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.169, i64 3, i64 0 }, ptr %a85 - %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) - %t87 = icmp eq i32 %t86, 0 - br label %logic.rend195 -logic.rend195: - br label %logic.end194 -logic.end194: - %t88 = phi i1 [ false, %logic.from192 ], [ %t87, %logic.rend195 ] - br label %logic.from196 -logic.from196: - br i1 %t88, label %logic.rhs197, label %logic.end198 -logic.rhs197: - %t89 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.170, i64 2, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp eq i32 %t92, 0 - br label %logic.rend199 -logic.rend199: - br label %logic.end198 -logic.end198: - %t94 = phi i1 [ false, %logic.from196 ], [ %t93, %logic.rend199 ] - br label %logic.from200 -logic.from200: - br i1 %t94, label %logic.rhs201, label %logic.end202 -logic.rhs201: - %t95 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.171, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp eq i32 %t98, 0 - br label %logic.rend203 -logic.rend203: - br label %logic.end202 -logic.end202: - %t100 = phi i1 [ false, %logic.from200 ], [ %t99, %logic.rend203 ] - br i1 %t100, label %then204, label %endif206 -then204: - call void @finch.main.usage() - br label %endif206 -endif206: - %t101 = load { ptr, i64, i64 }, ptr %a77 - %t102 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t102, ptr %a103 - store i1 false, ptr %a104 - store i1 false, ptr %a105 - store i1 false, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.172, i64 0, i64 0 }, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.173, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } zeroinitializer, ptr %a109 - store { ptr, i64, i64 } zeroinitializer, ptr %a110 - store { ptr, i64, i64 } zeroinitializer, ptr %a111 - store { ptr, i64, i64 } zeroinitializer, ptr %a112 - store { ptr, i64, i64 } zeroinitializer, ptr %a113 - store i64 3, ptr %a114 - br label %while.cond207 -while.cond207: - %t115 = load i64, ptr %a114 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t117 = load i64, ptr %t116 - %t118 = icmp slt i64 %t115, %t117 - br i1 %t118, label %while.body208, label %while.end209 -while.body208: - %t119 = load i64, ptr %a114 - %t120 = load { ptr, i64, i64 }, ptr %a1 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 %t119, %t121 - br i1 %t122, label %range210, label %inrange211 -range210: - call void @finch_panic_index(ptr @.str.174, i64 180, i64 %t119, i64 %t121) - unreachable -inrange211: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 - %t125 = load { ptr, i64, i64 }, ptr %t124 - 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.175, i64 3, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br label %logic.from212 -logic.from212: - br i1 %t134, label %logic.rhs213, label %logic.end214 -logic.rhs213: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = icmp sgt i64 %t136, 0 - br label %logic.rend215 -logic.rend215: - br label %logic.end214 -logic.end214: - %t138 = phi i1 [ false, %logic.from212 ], [ %t137, %logic.rend215 ] - br i1 %t138, label %then216, label %else217 -then216: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t140, ptr %a141 - 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 %endif218 -else217: - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.176, i64 2, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br label %logic.from219 -logic.from219: - br i1 %t152, label %logic.rhs220, label %logic.end221 -logic.rhs220: - %t153 = load i64, ptr %a114 - %t154 = add i64 %t153, 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp slt i64 %t154, %t156 - br label %logic.rend222 -logic.rend222: - br label %logic.end221 -logic.end221: - %t158 = phi i1 [ false, %logic.from219 ], [ %t157, %logic.rend222 ] - br label %logic.from223 -logic.from223: - br i1 %t158, label %logic.rhs224, label %logic.end225 -logic.rhs224: - %t159 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.177, i64 5, i64 0 }, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br label %logic.rend226 -logic.rend226: - br label %logic.end225 -logic.end225: - %t164 = phi i1 [ false, %logic.from223 ], [ %t163, %logic.rend226 ] - br i1 %t164, label %then227, label %else228 -then227: - %t165 = load i64, ptr %a114 - %t166 = add i64 %t165, 1 - %t167 = load { ptr, i64, i64 }, ptr %a1 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range230, label %inrange231 -range230: - call void @finch_panic_index(ptr @.str.178, i64 184, i64 %t166, i64 %t168) - unreachable -inrange231: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i64 %t166 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t175, ptr %a103 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - store i1 true, ptr %a104 - %t178 = load i64, ptr %a114 - %t179 = add i64 %t178, 1 - store i64 %t179, ptr %a114 - br label %endif229 -else228: - %t180 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t180, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.179, i64 8, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - br label %logic.from232 -logic.from232: - br i1 %t184, label %logic.rhs233, label %logic.end234 -logic.rhs233: - %t185 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.180, i64 5, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.rend235 -logic.rend235: - br label %logic.end234 -logic.end234: - %t190 = phi i1 [ false, %logic.from232 ], [ %t189, %logic.rend235 ] - br i1 %t190, label %then236, label %else237 -then236: - store i1 true, ptr %a105 - br label %endif238 -else237: - %t191 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t191, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.181, i64 3, i64 0 }, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br i1 %t195, label %then239, label %else240 -then239: - %t196 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.182, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } %t196, ptr %a197 - call void @finch_str_drop(ptr %a197) - br label %endif241 -else240: - %t198 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.183, i64 2, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from242 -logic.from242: - br i1 %t202, label %logic.rhs243, label %logic.end244 -logic.rhs243: - %t203 = load i64, ptr %a114 - %t204 = add i64 %t203, 1 - %t205 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t206 = load i64, ptr %t205 - %t207 = icmp slt i64 %t204, %t206 - br label %logic.rend245 -logic.rend245: - br label %logic.end244 -logic.end244: - %t208 = phi i1 [ false, %logic.from242 ], [ %t207, %logic.rend245 ] - br i1 %t208, label %then246, label %else247 -then246: - %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t210 = load i64, ptr %a114 - %t211 = add i64 %t210, 1 - %t212 = load { ptr, i64, i64 }, ptr %a1 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range249, label %inrange250 -range249: - call void @finch_panic_index(ptr @.str.184, i64 192, i64 %t211, i64 %t213) - unreachable -inrange250: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t217, ptr %a218 - call void @finch_str_copy(ptr %a219, ptr %a218) - %t220 = load { ptr, i64, i64 }, ptr %a219 - %t221 = load i64, ptr %t209 - %t222 = add i64 %t221, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t222, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t223 = load ptr, ptr %a109 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t221 - store { ptr, i64, i64 } %t220, ptr %t224 - store i64 %t222, ptr %t209 - %t225 = load i64, ptr %a114 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a114 - br label %endif248 -else247: - %t227 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t227, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a230 - %t231 = call i32 @finch_str_starts(ptr %a228, ptr %a230) - %t232 = icmp ne i32 %t231, 0 - br label %logic.from251 -logic.from251: - br i1 %t232, label %logic.rhs252, label %logic.end253 -logic.rhs252: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t234 = load i64, ptr %t233 - %t235 = icmp sgt i64 %t234, 2 - br label %logic.rend254 -logic.rend254: - br label %logic.end253 -logic.end253: - %t236 = phi i1 [ false, %logic.from251 ], [ %t235, %logic.rend254 ] - br i1 %t236, label %then255, label %else256 -then255: - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t238 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t238, ptr %a239 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t242 = load i64, ptr %t241 - call void @finch_str_sub(ptr %a240, ptr %a239, i64 2, i64 %t242, ptr @.str.187, i64 195) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load i64, ptr %t237 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %a109 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } %t243, ptr %t247 - store i64 %t245, ptr %t237 - br label %endif257 -else256: - %t248 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.188, i64 2, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br label %logic.from258 -logic.from258: - br i1 %t252, label %logic.rhs259, label %logic.end260 -logic.rhs259: - %t253 = load i64, ptr %a114 - %t254 = add i64 %t253, 1 - %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = icmp slt i64 %t254, %t256 - br label %logic.rend261 -logic.rend261: - br label %logic.end260 -logic.end260: - %t258 = phi i1 [ false, %logic.from258 ], [ %t257, %logic.rend261 ] - br i1 %t258, label %then262, label %else263 -then262: - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %a110, i32 0, i32 1 - %t260 = load i64, ptr %a114 - %t261 = add i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %a1 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range265, label %inrange266 -range265: - call void @finch_panic_index(ptr @.str.189, i64 197, i64 %t261, i64 %t263) - unreachable -inrange266: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 %t261 - %t267 = load { ptr, i64, i64 }, ptr %t266 - store { ptr, i64, i64 } %t267, ptr %a268 - call void @finch_str_copy(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %a110, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %a110 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - %t275 = load i64, ptr %a114 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a114 - br label %endif264 -else263: - %t277 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t277, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.190, i64 9, i64 0 }, ptr %a279 - %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) - %t281 = icmp ne i32 %t280, 0 - br label %logic.from267 -logic.from267: - br i1 %t281, label %logic.rhs268, label %logic.end269 -logic.rhs268: - %t282 = load i64, ptr %a114 - %t283 = add i64 %t282, 1 - %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t285 = load i64, ptr %t284 - %t286 = icmp slt i64 %t283, %t285 - br label %logic.rend270 -logic.rend270: - br label %logic.end269 -logic.end269: - %t287 = phi i1 [ false, %logic.from267 ], [ %t286, %logic.rend270 ] - br i1 %t287, label %then271, label %else272 -then271: - %t288 = load i64, ptr %a114 - %t289 = add i64 %t288, 1 - %t290 = load { ptr, i64, i64 }, ptr %a1 - %t291 = extractvalue { ptr, i64, i64 } %t290, 1 - %t292 = icmp uge i64 %t289, %t291 - br i1 %t292, label %range274, label %inrange275 -range274: - call void @finch_panic_index(ptr @.str.191, i64 200, i64 %t289, i64 %t291) - unreachable -inrange275: - %t293 = extractvalue { ptr, i64, i64 } %t290, 0 - %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } %t295, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.193, i64 1, i64 0 }, ptr %a298 - call void @finch_str_split(ptr %a299, ptr %a296, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t300, ptr %a301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %a301 - %t304 = extractvalue { ptr, i64, i64 } %t303, 1 - %t305 = icmp uge i64 0, %t304 - br i1 %t305, label %range276, label %inrange277 -range276: - call void @finch_panic_index(ptr @.str.194, i64 201, i64 0, i64 %t304) - unreachable -inrange277: - %t306 = extractvalue { ptr, i64, i64 } %t303, 0 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_copy(ptr %a310, ptr %a309) - %t311 = load { ptr, i64, i64 }, ptr %a310 - %t312 = load i64, ptr %t302 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %a111, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %a111 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t302 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %a301 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 1, %t318 - br i1 %t319, label %range278, label %inrange279 -range278: - call void @finch_panic_index(ptr @.str.195, i64 202, i64 1, i64 %t318) - unreachable -inrange279: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i64 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a323 - call void @finch_str_copy(ptr %a324, ptr %a323) - %t325 = load { ptr, i64, i64 }, ptr %a324 - %t326 = load i64, ptr %t316 - %t327 = add i64 %t326, 1 - call void @finch_arr_reserve(ptr %a112, i64 %t327, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t328 = load ptr, ptr %a112 - %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i64 %t326 - store { ptr, i64, i64 } %t325, ptr %t329 - store i64 %t327, ptr %t316 - %t330 = load i64, ptr %a114 - %t331 = add i64 %t330, 1 - store i64 %t331, ptr %a114 - call void @finch.drop.arr_str(ptr %a301) - br label %endif273 -else272: - %t332 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t332, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.196, i64 2, i64 0 }, ptr %a334 - %t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334) - %t336 = icmp ne i32 %t335, 0 - br i1 %t336, label %then280, label %else281 -then280: - store i1 true, ptr %a106 - br label %endif282 -else281: - %t337 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t337, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.197, i64 8, i64 0 }, ptr %a339 - %t340 = call i32 @finch_str_eq(ptr %a338, ptr %a339) - %t341 = icmp ne i32 %t340, 0 - br label %logic.from283 -logic.from283: - br i1 %t341, label %logic.rhs284, label %logic.end285 -logic.rhs284: - %t342 = load i64, ptr %a114 - %t343 = add i64 %t342, 1 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = icmp slt i64 %t343, %t345 - br label %logic.rend286 -logic.rend286: - br label %logic.end285 -logic.end285: - %t347 = phi i1 [ false, %logic.from283 ], [ %t346, %logic.rend286 ] - br i1 %t347, label %then287, label %else288 -then287: - %t348 = load i64, ptr %a114 - %t349 = add i64 %t348, 1 - %t350 = load { ptr, i64, i64 }, ptr %a1 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range290, label %inrange291 -range290: - call void @finch_panic_index(ptr @.str.198, i64 207, i64 %t349, i64 %t351) - unreachable -inrange291: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349 - %t355 = load { ptr, i64, i64 }, ptr %t354 - store { ptr, i64, i64 } %t355, ptr %a356 - call void @finch_str_copy(ptr %a357, ptr %a356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - %t359 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t358, ptr %a107 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load i64, ptr %a114 - %t362 = add i64 %t361, 1 - store i64 %t362, ptr %a114 - br label %endif289 -else288: - %t363 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t363, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.199, i64 3, i64 0 }, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br i1 %t367, label %then292, label %else293 -then292: - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t369 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t368 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %a113, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %a113 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t368 - br label %endif294 -else293: - call void @finch.main.usage() - br label %endif294 -endif294: - br label %endif289 -endif289: - br label %endif282 -endif282: - br label %endif273 -endif273: - br label %endif264 -endif264: - br label %endif257 -endif257: - br label %endif248 -endif248: - br label %endif241 -endif241: - br label %endif238 -endif238: - br label %endif229 -endif229: - br label %endif218 -endif218: - %t377 = load i64, ptr %a114 - %t378 = add i64 %t377, 1 - store i64 %t378, ptr %a114 - call void @finch_str_drop(ptr %a129) - br label %while.cond207 -while.end209: - %t379 = load { ptr, i64, i64 }, ptr %a107 - %t380 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t379) - store %S.platform.Target %t380, ptr %a381 - %t382 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t382, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.200, i64 3, i64 0 }, ptr %a384 - %t385 = call i32 @finch_str_eq(ptr %a383, ptr %a384) - %t386 = icmp ne i32 %t385, 0 - br i1 %t386, label %then295, label %else296 -then295: - %t387 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.201, i64 11, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a394, i64 %t393) - %t395 = load { ptr, i64, i64 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t392, ptr %a399 - call void @finch_str_drop(ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.202, i64 1, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a77 - %t408 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t407) - store { ptr, i64, i64 } %t406, ptr %a410 - store { ptr, i64, i64 } %t408, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t406, ptr %a412 - call void @finch_str_drop(ptr %a412) - store { ptr, i64, i64 } %t408, ptr %a413 - call void @finch_str_drop(ptr %a413) - %t414 = load { ptr, i64, i64 }, ptr %a409 - %t415 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t414, ptr %a418 - store { ptr, i64, i64 } %t416, ptr %a419 - call void @finch_str_concat(ptr %a417, ptr %a418, ptr %a419) - store { ptr, i64, i64 } %t414, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a417 - %t422 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t421, ptr %a103 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_drop(ptr %a423) - br label %endif297 -else296: - %t424 = load i1, ptr %a105 - br label %logic.from298 -logic.from298: - br i1 %t424, label %logic.rhs299, label %logic.end300 -logic.rhs299: - %t425 = load i1, ptr %a104 - %t426 = xor i1 %t425, true - br label %logic.rend301 -logic.rend301: - br label %logic.end300 -logic.end300: - %t427 = phi i1 [ false, %logic.from298 ], [ %t426, %logic.rend301 ] - br i1 %t427, label %then302, label %else303 -then302: - %t428 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t429 = load i1, ptr %t428 - br i1 %t429, label %then305, label %else306 -then305: - %t430 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.203, i64 4, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a431 - %t435 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t434, ptr %a103 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif307 -else306: - %t437 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t438 = load i1, ptr %t437 - br i1 %t438, label %then308, label %else309 -then308: - %t439 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.204, i64 3, i64 0 }, ptr %a441 - store { ptr, i64, i64 } %t439, ptr %a442 - call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a440 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.205, i64 6, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t448, ptr %a103 - store { ptr, i64, i64 } %t449, ptr %a450 - call void @finch_str_drop(ptr %a450) - br label %endif310 -else309: - %t451 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.206, i64 3, i64 0 }, ptr %a453 - store { ptr, i64, i64 } %t451, ptr %a454 - call void @finch_str_concat(ptr %a452, ptr %a453, ptr %a454) - %t455 = load { ptr, i64, i64 }, ptr %a452 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.207, i64 3, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - store { ptr, i64, i64 } %t455, ptr %a459 - call void @finch_str_drop(ptr %a459) - %t460 = load { ptr, i64, i64 }, ptr %a456 - %t461 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t460, ptr %a103 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_drop(ptr %a462) - br label %endif310 -endif310: - br label %endif307 -endif307: - br label %endif304 -else303: - %t463 = load i1, ptr %a104 - %t464 = xor i1 %t463, true - br i1 %t464, label %then311, label %endif313 -then311: - %t465 = load { ptr, i64, i64 }, ptr %a103 - %t466 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t467 = load { ptr, i64, i64 }, ptr %t466 - store { ptr, i64, i64 } %t465, ptr %a469 - store { ptr, i64, i64 } %t467, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t471, ptr %a103 - store { ptr, i64, i64 } %t472, ptr %a473 - call void @finch_str_drop(ptr %a473) - br label %endif313 -endif313: - br label %endif304 -endif304: - br label %endif297 -endif297: - store %S.main.Loader zeroinitializer, ptr %a474 - %t475 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t476 = load { ptr, i64, i64 }, ptr %t475 - store { ptr, i64, i64 } { ptr @.str.208, i64 5, i64 0 }, ptr %t475 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t479 = load i1, ptr %t478 - br i1 %t479, label %then314, label %else315 -then314: - %t480 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t481 = load { ptr, i64, i64 }, ptr %t480 - store { ptr, i64, i64 } { ptr @.str.209, i64 7, i64 0 }, ptr %t480 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif316 -else315: - %t483 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t484 = load i1, ptr %t483 - br i1 %t484, label %then317, label %endif319 -then317: - %t485 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } { ptr @.str.210, i64 5, i64 0 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - call void @finch_str_drop(ptr %a487) - br label %endif319 -endif319: - br label %endif316 -endif316: - %t488 = load { ptr, i64, i64 }, ptr %a1 - %t489 = extractvalue { ptr, i64, i64 } %t488, 1 - %t490 = icmp uge i64 0, %t489 - br i1 %t490, label %range320, label %inrange321 -range320: - call void @finch_panic_index(ptr @.str.211, i64 238, i64 0, i64 %t489) - unreachable -inrange321: - %t491 = extractvalue { ptr, i64, i64 } %t488, 0 - %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 0 - %t493 = load { ptr, i64, i64 }, ptr %t492 - %t494 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t493) - store { ptr, i64, i64 } %t494, ptr %a496 - store { ptr, i64, i64 } { ptr @.str.212, i64 7, i64 0 }, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t494, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - %t500 = load { ptr, i64, i64 }, ptr %a1 - %t501 = extractvalue { ptr, i64, i64 } %t500, 1 - %t502 = icmp uge i64 0, %t501 - br i1 %t502, label %range322, label %inrange323 -range322: - call void @finch_panic_index(ptr @.str.213, i64 238, i64 0, i64 %t501) - unreachable -inrange323: - %t503 = extractvalue { ptr, i64, i64 } %t500, 0 - %t504 = getelementptr inbounds { ptr, i64, i64 }, ptr %t503, i64 0 - %t505 = load { ptr, i64, i64 }, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t505) - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.214, i64 4, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = load { ptr, i64, i64 }, ptr %a1 - %t513 = extractvalue { ptr, i64, i64 } %t512, 1 - %t514 = icmp uge i64 0, %t513 - br i1 %t514, label %range324, label %inrange325 -range324: - call void @finch_panic_index(ptr @.str.215, i64 238, i64 0, i64 %t513) - unreachable -inrange325: - %t515 = extractvalue { ptr, i64, i64 } %t512, 0 - %t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %t515, i64 0 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t517) - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.216, i64 19, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t525 = call ptr @finch_alloc(i64 %t524) - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 0 - store { ptr, i64, i64 } %t499, ptr %t526 - %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 1 - store { ptr, i64, i64 } %t511, ptr %t527 - %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 2 - store { ptr, i64, i64 } %t523, ptr %t528 - %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 3 - store { ptr, i64, i64 } { ptr @.str.217, i64 3, i64 0 }, ptr %t529 - %t530 = insertvalue { ptr, i64, i64 } undef, ptr %t525, 0 - %t531 = insertvalue { ptr, i64, i64 } %t530, i64 4, 1 - %t532 = insertvalue { ptr, i64, i64 } %t531, i64 4, 2 - store { ptr, i64, i64 } %t532, ptr %a533 - store i64 0, ptr %a534 - br label %each.cond326 -each.cond326: - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %a533, i32 0, i32 1 - %t536 = load i64, ptr %t535 - %t537 = load i64, ptr %a534 - %t538 = icmp slt i64 %t537, %t536 - br i1 %t538, label %each.body327, label %each.end329 -each.body327: - %t539 = load ptr, ptr %a533 - %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i64 %t537 - %t541 = load { ptr, i64, i64 }, ptr %t540 - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1 - %t545 = load i64, ptr %t544 - %t546 = icmp eq i64 %t545, 0 - br label %logic.from330 -logic.from330: - br i1 %t546, label %logic.rhs331, label %logic.end332 -logic.rhs331: - %t547 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t547, ptr %a549 - store { ptr, i64, i64 } { ptr @.str.218, i64 9, i64 0 }, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a552 - %t553 = call i32 @finch_file_exists(ptr %a552) - store { ptr, i64, i64 } %t551, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = icmp ne i32 %t553, 0 - br label %logic.rend333 -logic.rend333: - br label %logic.end332 -logic.end332: - %t556 = phi i1 [ false, %logic.from330 ], [ %t555, %logic.rend333 ] - br i1 %t556, label %then334, label %endif336 -then334: - %t557 = load { ptr, i64, i64 }, ptr %a542 - %t558 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - store { ptr, i64, i64 } %t557, ptr %a559 - call void @finch_str_copy(ptr %a560, ptr %a559) - %t561 = load { ptr, i64, i64 }, ptr %a560 - %t562 = load { ptr, i64, i64 }, ptr %t558 - store { ptr, i64, i64 } %t561, ptr %t558 - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif336 -endif336: - br label %each.step328 -each.step328: - %t564 = load i64, ptr %a534 - %t565 = add i64 %t564, 1 - store i64 %t565, ptr %a534 - br label %each.cond326 -each.end329: - call void @finch.drop.arr_str(ptr %a533) - %t566 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i32 0, i32 1 - %t568 = load i64, ptr %t567 - %t569 = icmp eq i64 %t568, 0 - br i1 %t569, label %then337, label %endif339 -then337: - %t570 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.219, i64 4, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t577 = load { ptr, i64, i64 }, ptr %t576 - store { ptr, i64, i64 } %t575, ptr %t576 - store { ptr, i64, i64 } %t577, ptr %a578 - call void @finch_str_drop(ptr %a578) - br label %endif339 -endif339: - %t579 = load { ptr, i64, i64 }, ptr %a111 - %t580 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 6 - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch.copy.arr_str(ptr %a582, ptr %a581) - %t583 = load { ptr, i64, i64 }, ptr %a582 - %t584 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t583, ptr %t580 - store { ptr, i64, i64 } %t584, ptr %a585 - call void @finch.drop.arr_str(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a112 - %t587 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 7 - store { ptr, i64, i64 } %t586, ptr %a588 - call void @finch.copy.arr_str(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load { ptr, i64, i64 }, ptr %t587 - store { ptr, i64, i64 } %t590, ptr %t587 - store { ptr, i64, i64 } %t591, ptr %a592 - call void @finch.drop.arr_str(ptr %a592) - %t593 = extractvalue { ptr, i64, i64 } { ptr @.str.220, i64 10, i64 0 }, 0 - %t594 = icmp eq ptr %t593, null - %t595 = select i1 %t594, ptr @.str.221, ptr %t593 - %t596 = call ptr @getenv(ptr %t595) - store { ptr, i64, i64 } zeroinitializer, ptr %a597 - call void @finch_str_from_c(ptr %a597, ptr %t596) - %t598 = load { ptr, i64, i64 }, ptr %a597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t601 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t601, ptr %a602 - call void @finch_str_split(ptr %a603, ptr %a599, ptr %a602) - store { ptr, i64, i64 } %t601, ptr %a604 - call void @finch_str_drop(ptr %a604) - %t605 = load { ptr, i64, i64 }, ptr %a603 - store { ptr, i64, i64 } %t605, ptr %a606 - store i64 0, ptr %a607 - br label %each.cond340 -each.cond340: - %t608 = getelementptr inbounds { ptr, i64, i64 }, ptr %a606, i32 0, i32 1 - %t609 = load i64, ptr %t608 - %t610 = load i64, ptr %a607 - %t611 = icmp slt i64 %t610, %t609 - br i1 %t611, label %each.body341, label %each.end343 -each.body341: - %t612 = load ptr, ptr %a606 - %t613 = getelementptr inbounds { ptr, i64, i64 }, ptr %t612, i64 %t610 - %t614 = load { ptr, i64, i64 }, ptr %t613 - store { ptr, i64, i64 } %t614, ptr %a615 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %a615, i32 0, i32 1 - %t617 = load i64, ptr %t616 - %t618 = icmp sgt i64 %t617, 0 - br i1 %t618, label %then344, label %endif346 -then344: - %t619 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 5 - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %t619, i32 0, i32 1 - %t621 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t621, ptr %a622 - call void @finch_str_copy(ptr %a623, ptr %a622) - %t624 = load { ptr, i64, i64 }, ptr %a623 - %t625 = load i64, ptr %t620 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t619, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t619 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t620 - br label %endif346 -endif346: - br label %each.step342 -each.step342: - %t629 = load i64, ptr %a607 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a607 - br label %each.cond340 -each.end343: - call void @finch.drop.arr_str(ptr %a606) - %t631 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.main.load(ptr %a474, { ptr, i64, i64 } %t631, { ptr, i64, i64 } { ptr @.str.223, i64 0, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a632 - store { ptr, i64, i64 } zeroinitializer, ptr %a633 - %t634 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t634, ptr %a635 - call void @finch.copy.arr_str(ptr %a636, ptr %a635) - %t637 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t637, ptr %a638 - %t639 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t639, ptr %a640 - call void @finch.copy.arr_str(ptr %a641, ptr %a640) - %t642 = load { ptr, i64, i64 }, ptr %a641 - store { ptr, i64, i64 } %t642, ptr %a643 - %t644 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - store i64 0, ptr %a645 - br label %each.cond347 -each.cond347: - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t644, i32 0, i32 1 - %t647 = load i64, ptr %t646 - %t648 = load i64, ptr %a645 - %t649 = icmp slt i64 %t648, %t647 - br i1 %t649, label %each.body348, label %each.end350 -each.body348: - %t650 = load ptr, ptr %t644 - %t651 = getelementptr inbounds %S.ast.Program, ptr %t650, i64 %t648 - %t652 = load %S.ast.Program, ptr %t651 - store %S.ast.Program %t652, ptr %a653 - %t654 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 1 - %t655 = load { ptr, i64, i64 }, ptr %t654 - %t656 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t655) - store { ptr, i64, i64 } %t656, ptr %a657 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t659 = load { ptr, i64, i64 }, ptr %a657 - store i64 -1, ptr %a660 - %t661 = load i64, ptr %t658 - %t662 = load ptr, ptr %a638 - store i64 0, ptr %a663 - br label %find.cond351 -find.cond351: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t661 - br i1 %t665, label %find.body352, label %find.end355 -find.body352: - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t662, i64 %t664 - %t667 = load { ptr, i64, i64 }, ptr %t666 - store { ptr, i64, i64 } %t667, ptr %a668 - store { ptr, i64, i64 } %t659, ptr %a669 - %t670 = call i32 @finch_str_eq(ptr %a668, ptr %a669) - %t671 = icmp ne i32 %t670, 0 - br i1 %t671, label %find.hit353, label %find.next354 -find.hit353: - store i64 %t664, ptr %a660 - br label %find.end355 -find.next354: - %t672 = add i64 %t664, 1 - store i64 %t672, ptr %a663 - br label %find.cond351 -find.end355: - %t673 = load i64, ptr %a660 - %t674 = icmp sge i64 %t673, 0 - %t675 = xor i1 %t674, true - br i1 %t675, label %then356, label %endif358 -then356: - %t676 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t676 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a638, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a638 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t676 - br label %endif358 -endif358: - %t685 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i32 0, i32 1 - %t687 = load i64, ptr %t686 - store i64 0, ptr %a688 - br label %for.cond359 -for.cond359: - %t689 = load i64, ptr %a688 - %t690 = icmp slt i64 %t689, %t687 - br i1 %t690, label %for.body360, label %for.end362 -for.body360: - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t692 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t693 = load i64, ptr %a688 - %t694 = load { ptr, i64, i64 }, ptr %t692 - %t695 = extractvalue { ptr, i64, i64 } %t694, 1 - %t696 = icmp uge i64 %t693, %t695 - br i1 %t696, label %range363, label %inrange364 -range363: - call void @finch_panic_index(ptr @.str.224, i64 266, i64 %t693, i64 %t695) - unreachable -inrange364: - %t697 = extractvalue { ptr, i64, i64 } %t694, 0 - %t698 = getelementptr inbounds { ptr, i64, i64 }, ptr %t697, i64 %t693 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t691 - %t702 = load ptr, ptr %a633 - store i64 0, ptr %a703 - br label %find.cond365 -find.cond365: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body366, label %find.end369 -find.body366: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit367, label %find.next368 -find.hit367: - store i64 %t704, ptr %a700 - br label %find.end369 -find.next368: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond365 -find.end369: - %t713 = load i64, ptr %a700 - %t714 = icmp sge i64 %t713, 0 - %t715 = xor i1 %t714, true - br i1 %t715, label %then370, label %endif372 -then370: - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t717 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t718 = load i64, ptr %a688 - %t719 = load { ptr, i64, i64 }, ptr %t717 - %t720 = extractvalue { ptr, i64, i64 } %t719, 1 - %t721 = icmp uge i64 %t718, %t720 - br i1 %t721, label %range373, label %inrange374 -range373: - call void @finch_panic_index(ptr @.str.225, i64 267, i64 %t718, i64 %t720) - unreachable -inrange374: - %t722 = extractvalue { ptr, i64, i64 } %t719, 0 - %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t718 - %t724 = load { ptr, i64, i64 }, ptr %t723 - store { ptr, i64, i64 } %t724, ptr %a725 - call void @finch_str_copy(ptr %a726, ptr %a725) - %t727 = load { ptr, i64, i64 }, ptr %a726 - %t728 = load i64, ptr %t716 - %t729 = add i64 %t728, 1 - call void @finch_arr_reserve(ptr %a633, i64 %t729, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t730 = load ptr, ptr %a633 - %t731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t730, i64 %t728 - store { ptr, i64, i64 } %t727, ptr %t731 - store i64 %t729, ptr %t716 - %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t733 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t734 = load i64, ptr %a688 - %t735 = load { ptr, i64, i64 }, ptr %t733 - %t736 = extractvalue { ptr, i64, i64 } %t735, 1 - %t737 = icmp uge i64 %t734, %t736 - br i1 %t737, label %range375, label %inrange376 -range375: - call void @finch_panic_index(ptr @.str.226, i64 268, i64 %t734, i64 %t736) - unreachable -inrange376: - %t738 = extractvalue { ptr, i64, i64 } %t735, 0 - %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734 - %t740 = load { ptr, i64, i64 }, ptr %t739 - store { ptr, i64, i64 } %t740, ptr %a741 - call void @finch_str_copy(ptr %a742, ptr %a741) - %t743 = load { ptr, i64, i64 }, ptr %a742 - %t744 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t743, 0 - %t745 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 4 - %t746 = load i64, ptr %a688 - %t747 = load { ptr, i64, i64 }, ptr %t745 - %t748 = extractvalue { ptr, i64, i64 } %t747, 1 - %t749 = icmp uge i64 %t746, %t748 - br i1 %t749, label %range377, label %inrange378 -range377: - call void @finch_panic_index(ptr @.str.227, i64 268, i64 %t746, i64 %t748) - unreachable -inrange378: - %t750 = extractvalue { ptr, i64, i64 } %t747, 0 - %t751 = getelementptr inbounds { ptr, i64, i64 }, ptr %t750, i64 %t746 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - %t756 = insertvalue %S.cimport.Header %t744, { ptr, i64, i64 } %t755, 1 - %t757 = load i64, ptr %t732 - %t758 = add i64 %t757, 1 - call void @finch_arr_reserve(ptr %a632, i64 %t758, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) - %t759 = load ptr, ptr %a632 - %t760 = getelementptr inbounds %S.cimport.Header, ptr %t759, i64 %t757 - store %S.cimport.Header %t756, ptr %t760 - store i64 %t758, ptr %t732 - br label %endif372 -endif372: - br label %for.step361 -for.step361: - %t761 = load i64, ptr %a688 - %t762 = add i64 %t761, 1 - store i64 %t762, ptr %a688 - br label %for.cond359 -for.end362: - %t763 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 5 - store i64 0, ptr %a764 - br label %each.cond379 -each.cond379: - %t765 = getelementptr inbounds { ptr, i64, i64 }, ptr %t763, i32 0, i32 1 - %t766 = load i64, ptr %t765 - %t767 = load i64, ptr %a764 - %t768 = icmp slt i64 %t767, %t766 - br i1 %t768, label %each.body380, label %each.end382 -each.body380: - %t769 = load ptr, ptr %t763 - %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i64 %t767 - %t771 = load { ptr, i64, i64 }, ptr %t770 - store { ptr, i64, i64 } %t771, ptr %a772 - %t773 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t773, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a776 - %t777 = call i32 @finch_str_ends(ptr %a774, ptr %a776) - %t778 = icmp ne i32 %t777, 0 - br label %logic.from383 -logic.from383: - br i1 %t778, label %logic.end385, label %logic.rhs384 -logic.rhs384: - %t779 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t779, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.231, i64 2, i64 0 }, ptr %a782 - %t783 = call i32 @finch_str_ends(ptr %a780, ptr %a782) - %t784 = icmp ne i32 %t783, 0 - br label %logic.rend386 -logic.rend386: - br label %logic.end385 -logic.end385: - %t785 = phi i1 [ true, %logic.from383 ], [ %t784, %logic.rend386 ] - br label %logic.from387 -logic.from387: - br i1 %t785, label %logic.end389, label %logic.rhs388 -logic.rhs388: - %t786 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t786, ptr %a787 - store { ptr, i64, i64 } { ptr @.str.233, i64 2, i64 0 }, ptr %a789 - %t790 = call i32 @finch_str_ends(ptr %a787, ptr %a789) - %t791 = icmp ne i32 %t790, 0 - br label %logic.rend390 -logic.rend390: - br label %logic.end389 -logic.end389: - %t792 = phi i1 [ true, %logic.from387 ], [ %t791, %logic.rend390 ] - br i1 %t792, label %then391, label %else392 -then391: - %t793 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t794 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.234, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a795 - %t799 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t798, ptr %a801 - store { ptr, i64, i64 } %t799, ptr %a802 - call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) - store { ptr, i64, i64 } %t798, ptr %a803 - call void @finch_str_drop(ptr %a803) - %t804 = load { ptr, i64, i64 }, ptr %a800 - %t805 = load i64, ptr %t793 - %t806 = add i64 %t805, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t806, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t807 = load ptr, ptr %a643 - %t808 = getelementptr inbounds { ptr, i64, i64 }, ptr %t807, i64 %t805 - store { ptr, i64, i64 } %t804, ptr %t808 - store i64 %t806, ptr %t793 - br label %endif393 -else392: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t810, ptr %a811 - call void @finch_str_copy(ptr %a812, ptr %a811) - %t813 = load { ptr, i64, i64 }, ptr %a812 - %t814 = load i64, ptr %t809 - %t815 = add i64 %t814, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t815, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t816 = load ptr, ptr %a643 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t814 - store { ptr, i64, i64 } %t813, ptr %t817 - store i64 %t815, ptr %t809 - br label %endif393 -endif393: - br label %each.step381 -each.step381: - %t818 = load i64, ptr %a764 - %t819 = add i64 %t818, 1 - store i64 %t819, ptr %a764 - br label %each.cond379 -each.end382: - call void @finch_str_drop(ptr %a657) - br label %each.step349 -each.step349: - %t820 = load i64, ptr %a645 - %t821 = add i64 %t820, 1 - store i64 %t821, ptr %a645 - br label %each.cond347 -each.end350: - store { ptr, i64, i64 } { ptr @.str.235, i64 0, i64 0 }, ptr %a822 - %t823 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 5 - %t824 = load i1, ptr %t823 - br label %logic.from394 -logic.from394: - br i1 %t824, label %logic.end396, label %logic.rhs395 -logic.rhs395: - %t825 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t826 = load i1, ptr %t825 - br label %logic.rend397 -logic.rend397: - br label %logic.end396 -logic.end396: - %t827 = phi i1 [ true, %logic.from394 ], [ %t826, %logic.rend397 ] - br i1 %t827, label %then398, label %endif400 -then398: - %t828 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 0 - %t829 = load { ptr, i64, i64 }, ptr %t828 - store { ptr, i64, i64 } %t829, ptr %a830 - call void @finch_str_copy(ptr %a831, ptr %a830) - %t832 = load { ptr, i64, i64 }, ptr %a831 - %t833 = load { ptr, i64, i64 }, ptr %a822 - store { ptr, i64, i64 } %t832, ptr %a822 - store { ptr, i64, i64 } %t833, ptr %a834 - call void @finch_str_drop(ptr %a834) - br label %endif400 -endif400: - %t835 = load { ptr, i64, i64 }, ptr %a632 - %t836 = load { ptr, i64, i64 }, ptr %a638 - %t837 = load { ptr, i64, i64 }, ptr %a822 - %t838 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t839 = load i1, ptr %t838 - %t840 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 7 - %t841 = load { ptr, i64, i64 }, ptr %t840 - %t842 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t835, { ptr, i64, i64 } %t836, { ptr, i64, i64 } %t837, i1 %t839, { ptr, i64, i64 } %t841) - %t843 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 0 - %t844 = xor i1 %t843, true - %t845 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 2 - %t846 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 1 - br i1 %t844, label %or.failed401, label %or.ok402 -or.failed401: - store { ptr, i64, i64 } %t845, ptr %a847 - %t848 = load { ptr, i64, i64 }, ptr %a847 - %t849 = extractvalue { ptr, i64, i64 } %t848, 1 - %t850 = trunc i64 %t849 to i32 - %t851 = extractvalue { ptr, i64, i64 } %t848, 0 - %t852 = icmp eq ptr %t851, null - %t853 = select i1 %t852, ptr @.str.236, ptr %t851 - %t854 = call i32 (ptr, ...) @printf(ptr @.str.237, i32 %t850, ptr %t853) - %t855 = call i32 (ptr, ...) @printf(ptr @.str.238) - call void @finch_str_drop(ptr %a847) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -or.ok402: - store %S.cimport.CImports %t846, ptr %a856 - %t857 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 1 - %t860 = load { ptr, i64, i64 }, ptr %t859 - %t861 = load %S.cimport.CImports, ptr %a856 - %t862 = load i1, ptr %a105 - %t863 = insertvalue %S.gen.Options zeroinitializer, i1 %t862, 0 - %t864 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t864, ptr %a865 - store { ptr, i64, i64 } { ptr @.str.239, i64 5, i64 0 }, ptr %a866 - %t867 = call i32 @finch_str_eq(ptr %a865, ptr %a866) - %t868 = icmp ne i32 %t867, 0 - %t869 = insertvalue %S.gen.Options %t863, i1 %t868, 1 - %t870 = load i1, ptr %a106 - %t871 = insertvalue %S.gen.Options %t869, i1 %t870, 2 - %t872 = call { ptr, i64, i64 } @finch.host.cwd() - %t873 = insertvalue %S.gen.Options %t871, { ptr, i64, i64 } %t872, 3 - %t874 = load %S.platform.Target, ptr %a381 - store %S.platform.Target %t874, ptr %a875 - call void @finch.copy.S_platform_Target(ptr %a876, ptr %a875) - %t877 = load %S.platform.Target, ptr %a876 - %t878 = insertvalue %S.gen.Options %t873, %S.platform.Target %t877, 4 - %t879 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t858, { ptr, i64, i64 } %t860, %S.cimport.CImports %t861, %S.gen.Options %t878) - store %S.gen.Options %t878, ptr %a880 - call void @finch.drop.S_gen_Options(ptr %a880) - store { ptr, i64, i64 } %t879, ptr %a881 - %t882 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t882, ptr %a883 - store { ptr, i64, i64 } { ptr @.str.240, i64 2, i64 0 }, ptr %a884 - %t885 = call i32 @finch_str_eq(ptr %a883, ptr %a884) - %t886 = icmp ne i32 %t885, 0 - br label %logic.from409 -logic.from409: - br i1 %t886, label %logic.end411, label %logic.rhs410 -logic.rhs410: - %t887 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t887, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.241, i64 5, i64 0 }, ptr %a889 - %t890 = call i32 @finch_str_eq(ptr %a888, ptr %a889) - %t891 = icmp ne i32 %t890, 0 - br label %logic.rend412 -logic.rend412: - br label %logic.end411 -logic.end411: - %t892 = phi i1 [ true, %logic.from409 ], [ %t891, %logic.rend412 ] - br i1 %t892, label %then413, label %endif415 -then413: - %t893 = load { ptr, i64, i64 }, ptr %a881 - %t894 = extractvalue { ptr, i64, i64 } %t893, 1 - %t895 = trunc i64 %t894 to i32 - %t896 = extractvalue { ptr, i64, i64 } %t893, 0 - %t897 = icmp eq ptr %t896, null - %t898 = select i1 %t897, ptr @.str.242, ptr %t896 - %t899 = call i32 (ptr, ...) @printf(ptr @.str.243, i32 %t895, ptr %t898) - %t900 = call i32 (ptr, ...) @printf(ptr @.str.244) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -endif415: - %t901 = extractvalue { ptr, i64, i64 } { ptr @.str.245, i64 8, i64 0 }, 0 - %t902 = icmp eq ptr %t901, null - %t903 = select i1 %t902, ptr @.str.246, ptr %t901 - %t904 = call ptr @getenv(ptr %t903) - store { ptr, i64, i64 } zeroinitializer, ptr %a905 - call void @finch_str_from_c(ptr %a905, ptr %t904) - %t906 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t906, ptr %a907 - call void @finch_str_copy(ptr %a908, ptr %a907) - %t909 = load { ptr, i64, i64 }, ptr %a908 - store { ptr, i64, i64 } %t909, ptr %a910 - %t911 = getelementptr inbounds { ptr, i64, i64 }, ptr %a910, i32 0, i32 1 - %t912 = load i64, ptr %t911 - %t913 = icmp eq i64 %t912, 0 - br i1 %t913, label %then439, label %endif441 -then439: - %t914 = load { ptr, i64, i64 }, ptr %a1 - %t915 = extractvalue { ptr, i64, i64 } %t914, 1 - %t916 = icmp uge i64 0, %t915 - br i1 %t916, label %range442, label %inrange443 -range442: - call void @finch_panic_index(ptr @.str.247, i64 296, i64 0, i64 %t915) - unreachable -inrange443: - %t917 = extractvalue { ptr, i64, i64 } %t914, 0 - %t918 = getelementptr inbounds { ptr, i64, i64 }, ptr %t917, i64 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - %t920 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t919) - store { ptr, i64, i64 } %t920, ptr %a922 - store { ptr, i64, i64 } { ptr @.str.248, i64 22, i64 0 }, ptr %a923 - call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923) - store { ptr, i64, i64 } %t920, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load { ptr, i64, i64 }, ptr %a921 - %t926 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t925, ptr %a910 - store { ptr, i64, i64 } %t926, ptr %a927 - call void @finch_str_drop(ptr %a927) - br label %endif441 -endif441: - %t928 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t928, ptr %a929 - %t930 = call i32 @finch_file_exists(ptr %a929) - %t931 = icmp ne i32 %t930, 0 - %t932 = xor i1 %t931, true - br i1 %t932, label %then444, label %endif446 -then444: - %t933 = load { ptr, i64, i64 }, ptr %a1 - %t934 = extractvalue { ptr, i64, i64 } %t933, 1 - %t935 = icmp uge i64 0, %t934 - br i1 %t935, label %range447, label %inrange448 -range447: - call void @finch_panic_index(ptr @.str.249, i64 299, i64 0, i64 %t934) - unreachable -inrange448: - %t936 = extractvalue { ptr, i64, i64 } %t933, 0 - %t937 = getelementptr inbounds { ptr, i64, i64 }, ptr %t936, i64 0 - %t938 = load { ptr, i64, i64 }, ptr %t937 - %t939 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t938) - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.250, i64 19, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t944, ptr %a910 - store { ptr, i64, i64 } %t945, ptr %a946 - call void @finch_str_drop(ptr %a946) - br label %endif446 -endif446: - %t947 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t947, ptr %a948 - %t949 = call i32 @finch_file_exists(ptr %a948) - %t950 = icmp ne i32 %t949, 0 - %t951 = xor i1 %t950, true - br i1 %t951, label %then449, label %endif451 -then449: - %t952 = load { ptr, i64, i64 }, ptr %a1 - %t953 = extractvalue { ptr, i64, i64 } %t952, 1 - %t954 = icmp uge i64 0, %t953 - br i1 %t954, label %range452, label %inrange453 -range452: - call void @finch_panic_index(ptr @.str.251, i64 302, i64 0, i64 %t953) - unreachable -inrange453: - %t955 = extractvalue { ptr, i64, i64 } %t952, 0 - %t956 = getelementptr inbounds { ptr, i64, i64 }, ptr %t955, i64 0 - %t957 = load { ptr, i64, i64 }, ptr %t956 - %t958 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t957) - store { ptr, i64, i64 } %t958, ptr %a960 - store { ptr, i64, i64 } { ptr @.str.252, i64 34, i64 0 }, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t958, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - %t964 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t963, ptr %a910 - store { ptr, i64, i64 } %t964, ptr %a965 - call void @finch_str_drop(ptr %a965) - br label %endif451 -endif451: - %t966 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t966, ptr %a967 - %t968 = call i32 @finch_file_exists(ptr %a967) - %t969 = icmp ne i32 %t968, 0 - %t970 = xor i1 %t969, true - br label %logic.from454 -logic.from454: - br i1 %t970, label %logic.rhs455, label %logic.end456 -logic.rhs455: - store { ptr, i64, i64 } { ptr @.str.253, i64 18, i64 0 }, ptr %a971 - %t972 = call i32 @finch_file_exists(ptr %a971) - %t973 = icmp ne i32 %t972, 0 - br label %logic.rend457 -logic.rend457: - br label %logic.end456 -logic.end456: - %t974 = phi i1 [ false, %logic.from454 ], [ %t973, %logic.rend457 ] - br i1 %t974, label %then458, label %endif460 -then458: - %t975 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } { ptr @.str.254, i64 18, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t975, ptr %a976 - call void @finch_str_drop(ptr %a976) - br label %endif460 -endif460: - %t977 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t977, ptr %a978 - %t979 = call i32 @finch_file_exists(ptr %a978) - %t980 = icmp ne i32 %t979, 0 - %t981 = xor i1 %t980, true - br i1 %t981, label %then461, label %endif463 -then461: - %t982 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t982, ptr %a984 - store { ptr, i64, i64 } { ptr @.str.255, i64 19, i64 0 }, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - store { ptr, i64, i64 } %t982, ptr %a986 - call void @finch_str_drop(ptr %a986) - %t987 = load { ptr, i64, i64 }, ptr %a983 - %t988 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t987, ptr %a910 - store { ptr, i64, i64 } %t988, ptr %a989 - call void @finch_str_drop(ptr %a989) - br label %endif463 -endif463: - store { ptr, i64, i64 } { ptr @.str.256, i64 0, i64 0 }, ptr %a990 - %t991 = load i1, ptr %a105 - br i1 %t991, label %then464, label %endif466 -then464: - %t992 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.257, i64 6, i64 0 }, ptr %a990 - store { ptr, i64, i64 } %t992, ptr %a993 - call void @finch_str_drop(ptr %a993) - br label %endif466 -endif466: - %t994 = load i1, ptr %a106 - br i1 %t994, label %then467, label %endif469 -then467: - %t995 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t995, ptr %a997 - store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %a998 - call void @finch_str_concat(ptr %a996, ptr %a997, ptr %a998) - %t999 = load { ptr, i64, i64 }, ptr %a996 - %t1000 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t999, ptr %a990 - store { ptr, i64, i64 } %t1000, ptr %a1001 - call void @finch_str_drop(ptr %a1001) - br label %endif469 -endif469: - %t1002 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t1002, ptr %a1003 - call void @finch_str_copy(ptr %a1004, ptr %a1003) - %t1005 = load { ptr, i64, i64 }, ptr %a1004 - %t1006 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t1005, 0 - %t1007 = load { ptr, i64, i64 }, ptr %a881 - store { ptr, i64, i64 } %t1007, ptr %a1008 - call void @finch_str_copy(ptr %a1009, ptr %a1008) - %t1010 = load { ptr, i64, i64 }, ptr %a1009 - %t1011 = insertvalue %S.linker.Build %t1006, { ptr, i64, i64 } %t1010, 1 - %t1012 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t1012, ptr %a1013 - call void @finch_str_copy(ptr %a1014, ptr %a1013) - %t1015 = load { ptr, i64, i64 }, ptr %a1014 - %t1016 = insertvalue %S.linker.Build %t1011, { ptr, i64, i64 } %t1015, 2 - %t1017 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_copy(ptr %a1019, ptr %a1018) - %t1020 = load { ptr, i64, i64 }, ptr %a1019 - %t1021 = insertvalue %S.linker.Build %t1016, { ptr, i64, i64 } %t1020, 3 - %t1022 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t1022, ptr %a1023 - call void @finch_str_copy(ptr %a1024, ptr %a1023) - %t1025 = load { ptr, i64, i64 }, ptr %a1024 - %t1026 = insertvalue %S.linker.Build %t1021, { ptr, i64, i64 } %t1025, 4 - %t1027 = load i1, ptr %a105 - %t1028 = insertvalue %S.linker.Build %t1026, i1 %t1027, 5 - %t1029 = load { ptr, i64, i64 }, ptr %a643 - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch.copy.arr_str(ptr %a1031, ptr %a1030) - %t1032 = load { ptr, i64, i64 }, ptr %a1031 - %t1033 = insertvalue %S.linker.Build %t1028, { ptr, i64, i64 } %t1032, 6 - %t1034 = load %S.platform.Target, ptr %a381 - %t1035 = load %S.cimport.CImports, ptr %a856 - %t1036 = call i64 @finch.linker.build(%S.linker.Build %t1033, %S.platform.Target %t1034, %S.cimport.CImports %t1035) - store %S.linker.Build %t1033, ptr %a1037 - call void @finch.drop.S_linker_Build(ptr %a1037) - %t1038 = icmp ne i64 %t1036, 0 - br i1 %t1038, label %then470, label %endif472 -then470: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -endif472: - %t1039 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t1039, ptr %a1040 - store { ptr, i64, i64 } { ptr @.str.259, i64 3, i64 0 }, ptr %a1041 - %t1042 = call i32 @finch_str_eq(ptr %a1040, ptr %a1041) - %t1043 = icmp ne i32 %t1042, 0 - br i1 %t1043, label %then473, label %endif475 -then473: - store { ptr, i64, i64 } zeroinitializer, ptr %a1044 - store i64 0, ptr %a1045 - br label %each.cond476 -each.cond476: - %t1046 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t1047 = load i64, ptr %t1046 - %t1048 = load i64, ptr %a1045 - %t1049 = icmp slt i64 %t1048, %t1047 - br i1 %t1049, label %each.body477, label %each.end479 -each.body477: - %t1050 = load ptr, ptr %a113 - %t1051 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1050, i64 %t1048 - %t1052 = load { ptr, i64, i64 }, ptr %t1051 - store { ptr, i64, i64 } %t1052, ptr %a1053 - %t1054 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - %t1055 = load { ptr, i64, i64 }, ptr %a1053 - %t1056 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1055) - %t1057 = load i64, ptr %t1054 - %t1058 = add i64 %t1057, 1 - call void @finch_arr_reserve(ptr %a1044, i64 %t1058, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1059 = load ptr, ptr %a1044 - %t1060 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1059, i64 %t1057 - store { ptr, i64, i64 } %t1056, ptr %t1060 - store i64 %t1058, ptr %t1054 - br label %each.step478 -each.step478: - %t1061 = load i64, ptr %a1045 - %t1062 = add i64 %t1061, 1 - store i64 %t1062, ptr %a1045 - br label %each.cond476 -each.end479: - %t1063 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 8 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - %t1065 = load { ptr, i64, i64 }, ptr %a103 - %t1066 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1065) - store { ptr, i64, i64 } %t1064, ptr %a1068 - store { ptr, i64, i64 } %t1066, ptr %a1069 - call void @finch_str_concat(ptr %a1067, ptr %a1068, ptr %a1069) - store { ptr, i64, i64 } %t1066, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - %t1071 = load { ptr, i64, i64 }, ptr %a1067 - store { ptr, i64, i64 } %t1071, ptr %a1073 - store { ptr, i64, i64 } { ptr @.str.260, i64 1, i64 0 }, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1071, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.261, i64 1, i64 0 }, ptr %a1078 - call void @finch_str_join(ptr %a1079, ptr %a1044, ptr %a1078) - %t1080 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1076, ptr %a1082 - store { ptr, i64, i64 } %t1080, ptr %a1083 - call void @finch_str_concat(ptr %a1081, ptr %a1082, ptr %a1083) - store { ptr, i64, i64 } %t1076, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - store { ptr, i64, i64 } %t1080, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1081 - %t1087 = call i64 @finch.host.run({ ptr, i64, i64 } %t1086) - store { ptr, i64, i64 } %t1086, ptr %a1088 - call void @finch_str_drop(ptr %a1088) - store i64 %t1087, ptr %a1089 - %t1090 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.host.remove({ ptr, i64, i64 } %t1090) - %t1091 = load i64, ptr %a1089 - call void @finch.drop.arr_str(ptr %a1044) - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 %t1091 -endif475: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -} - -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.from480 -logic.from480: - br i1 %t3, label %logic.rhs481, label %logic.end482 -logic.rhs481: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend483 -logic.rend483: - br label %logic.end482 -logic.end482: - %t6 = phi i1 [ false, %logic.from480 ], [ %t5, %logic.rend483 ] - br label %logic.from484 -logic.from484: - br i1 %t6, label %logic.end486, label %logic.rhs485 -logic.rhs485: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from487 -logic.from487: - br i1 %t8, label %logic.rhs488, label %logic.end489 -logic.rhs488: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend490 -logic.rend490: - br label %logic.end489 -logic.end489: - %t11 = phi i1 [ false, %logic.from487 ], [ %t10, %logic.rend490 ] - br label %logic.rend491 -logic.rend491: - br label %logic.end486 -logic.end486: - %t12 = phi i1 [ true, %logic.from484 ], [ %t11, %logic.rend491 ] - br label %logic.from492 -logic.from492: - br i1 %t12, label %logic.end494, label %logic.rhs493 -logic.rhs493: - %t13 = load i8, ptr %a1 - %t14 = icmp eq i8 %t13, 95 - br label %logic.rend495 -logic.rend495: - br label %logic.end494 -logic.end494: - %t15 = phi i1 [ true, %logic.from492 ], [ %t14, %logic.rend495 ] - 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.from496 -logic.from496: - br i1 %t3, label %logic.rhs497, label %logic.end498 -logic.rhs497: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend499 -logic.rend499: - br label %logic.end498 -logic.end498: - %t6 = phi i1 [ false, %logic.from496 ], [ %t5, %logic.rend499 ] - 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.from500 -logic.from500: - br i1 %t3, label %logic.end502, label %logic.rhs501 -logic.rhs501: - %t4 = load i8, ptr %a1 - %t5 = icmp uge i8 %t4, 97 - br label %logic.from503 -logic.from503: - br i1 %t5, label %logic.rhs504, label %logic.end505 -logic.rhs504: - %t6 = load i8, ptr %a1 - %t7 = icmp ule i8 %t6, 102 - br label %logic.rend506 -logic.rend506: - br label %logic.end505 -logic.end505: - %t8 = phi i1 [ false, %logic.from503 ], [ %t7, %logic.rend506 ] - br label %logic.rend507 -logic.rend507: - br label %logic.end502 -logic.end502: - %t9 = phi i1 [ true, %logic.from500 ], [ %t8, %logic.rend507 ] - br label %logic.from508 -logic.from508: - br i1 %t9, label %logic.end510, label %logic.rhs509 -logic.rhs509: - %t10 = load i8, ptr %a1 - %t11 = icmp uge i8 %t10, 65 - br label %logic.from511 -logic.from511: - br i1 %t11, label %logic.rhs512, label %logic.end513 -logic.rhs512: - %t12 = load i8, ptr %a1 - %t13 = icmp ule i8 %t12, 70 - br label %logic.rend514 -logic.rend514: - br label %logic.end513 -logic.end513: - %t14 = phi i1 [ false, %logic.from511 ], [ %t13, %logic.rend514 ] - br label %logic.rend515 -logic.rend515: - br label %logic.end510 -logic.end510: - %t15 = phi i1 [ true, %logic.from508 ], [ %t14, %logic.rend515 ] - 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.262, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.263, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.264, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.265, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.266, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.267, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.268, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.269, i64 5, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.270, i64 8, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.273, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.274, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.275, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.276, i64 6, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.277, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.278, i64 2, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.279, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.280, i64 4, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.281, i64 5, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.282, i64 6, i64 0 }, ptr %t24 - %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t26 = insertvalue { ptr, i64, i64 } %t25, i64 21, 1 - %t27 = insertvalue { ptr, i64, i64 } %t26, i64 21, 2 - 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.cond516 -find.cond516: - %t35 = load i64, ptr %a34 - %t36 = icmp slt i64 %t35, %t32 - br i1 %t36, label %find.body517, label %find.end520 -find.body517: - %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.hit518, label %find.next519 -find.hit518: - store i64 %t35, ptr %a31 - br label %find.end520 -find.next519: - %t43 = add i64 %t35, 1 - store i64 %t43, ptr %a34 - br label %find.cond516 -find.end520: - %t44 = load i64, ptr %a31 - %t45 = icmp sge i64 %t44, 0 - call void @finch.drop.arr_str(ptr %a28) - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic521, label %ok522 -panic521: - call void @finch_panic(ptr @.str.283, i64 41, ptr @.str.284) - unreachable -ok522: - %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.285, i64 1, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a9 - %t13 = load i64, ptr %a2 - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.286, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a28, i64 %t27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t26, ptr %a33 - call void @finch_str_drop(ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.287, i64 9, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = trunc i64 %t47 to i32 - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = icmp eq ptr %t49, null - %t51 = select i1 %t50, ptr @.str.288, ptr %t49 - %t52 = call i32 (ptr, ...) @printf(ptr @.str.289, i32 %t48, ptr %t51) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = call i32 (ptr, ...) @printf(ptr @.str.290) - %t55 = trunc i64 1 to i32 - %t56 = call i32 @fflush(ptr null) - call void @exit(i32 %t55) - ret void -} - -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 %panic523, label %ok524 -panic523: - call void @finch_panic(ptr @.str.291, i64 46, ptr @.str.292) - unreachable -ok524: - %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 %panic525, label %ok526 -panic525: - call void @finch_panic(ptr @.str.293, i64 46, ptr @.str.294) - unreachable -ok526: - %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 %then527, label %endif529 -then527: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic530, label %ok531 -panic530: - call void @finch_panic(ptr @.str.295, i64 47, ptr @.str.296) - unreachable -ok531: - %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 %panic532, label %ok533 -panic532: - call void @finch_panic(ptr @.str.297, i64 47, ptr @.str.298) - unreachable -ok533: - %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 %range534, label %inrange535 -range534: - call void @finch_panic_index(ptr @.str.299, i64 47, i64 %t23, i64 %t25) - unreachable -inrange535: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 - %t29 = load i8, ptr %t28 - ret i8 %t29 -endif529: - %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 %panic536, label %ok537 -panic536: - call void @finch_panic(ptr @.str.300, i64 53, ptr @.str.301) - unreachable -ok537: - %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 %panic538, label %ok539 -panic538: - call void @finch_panic(ptr @.str.302, i64 53, ptr @.str.303) - unreachable -ok539: - %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 %range540, label %inrange541 -range540: - call void @finch_panic_index(ptr @.str.304, i64 53, i64 %t8, i64 %t10) - unreachable -inrange541: - %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 %then542, label %else543 -then542: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic545, label %ok546 -panic545: - call void @finch_panic(ptr @.str.305, i64 55, ptr @.str.306) - unreachable -ok546: - %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 %panic547, label %ok548 -panic547: - call void @finch_panic(ptr @.str.307, i64 56, ptr @.str.308) - unreachable -ok548: - %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 %panic549, label %ok550 -panic549: - call void @finch_panic(ptr @.str.309, i64 57, ptr @.str.310) - unreachable -ok550: - %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 - store i1 true, ptr %t28 - br label %endif544 -else543: - %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 %then551, label %endif553 -then551: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic554, label %ok555 -panic554: - call void @finch_panic(ptr @.str.311, i64 59, ptr @.str.312) - unreachable -ok555: - %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 %endif553 -endif553: - br label %endif544 -endif544: - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic556, label %ok557 -panic556: - call void @finch_panic(ptr @.str.313, i64 61, ptr @.str.314) - unreachable -ok557: - %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 - 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.315, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.322, i64 2, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.323, i64 2, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.324, i64 2, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.325, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.326, i64 2, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.327, i64 2, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.328, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.329, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.330, i64 2, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic558, label %ok559 -panic558: - call void @finch_panic(ptr @.str.331, i64 67, ptr @.str.332) - unreachable -ok559: - %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 %panic560, label %ok561 -panic560: - call void @finch_panic(ptr @.str.333, i64 67, ptr @.str.334) - unreachable -ok561: - %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 %then562, label %endif564 -then562: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic565, label %ok566 -panic565: - call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) - unreachable -ok566: - %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 %panic567, label %ok568 -panic567: - call void @finch_panic(ptr @.str.338, i64 68, ptr @.str.339) - unreachable -ok568: - %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 %panic569, label %ok570 -panic569: - call void @finch_panic(ptr @.str.340, i64 68, ptr @.str.341) - unreachable -ok570: - %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.337, i64 68) - %t50 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 - %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.cond571 -find.cond571: - %t58 = load i64, ptr %a57 - %t59 = icmp slt i64 %t58, %t55 - br i1 %t59, label %find.body572, label %find.end575 -find.body572: - %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.hit573, label %find.next574 -find.hit573: - store i64 %t58, ptr %a54 - br label %find.end575 -find.next574: - %t66 = add i64 %t58, 1 - store i64 %t66, ptr %a57 - br label %find.cond571 -find.end575: - %t67 = load i64, ptr %a54 - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then576, label %endif578 -then576: - %t69 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t69 -endif578: - call void @finch_str_drop(ptr %a51) - br label %endif564 -endif564: - store { ptr, i64, i64 } { ptr @.str.342, i64 22, i64 0 }, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic579, label %ok580 -panic579: - call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) - unreachable -ok580: - %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 %panic581, label %ok582 -panic581: - call void @finch_panic(ptr @.str.346, i64 74, ptr @.str.347) - unreachable -ok582: - %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 %panic583, label %ok584 -panic583: - call void @finch_panic(ptr @.str.348, i64 74, ptr @.str.349) - unreachable -ok584: - %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.345, 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 %then585, label %endif587 -then585: - %t95 = load { ptr, i64, i64 }, ptr %a87 - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t95 -endif587: - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } { ptr @.str.351, i64 0, i64 0 } -} - -define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { -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 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i8 %p1, ptr %a2 - %t3 = load i8, ptr %a2 - %t4 = icmp eq i8 %t3, 110 - br i1 %t4, label %then588, label %endif590 -then588: - ret i8 10 -endif590: - %t5 = load i8, ptr %a2 - %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then591, label %endif593 -then591: - ret i8 9 -endif593: - %t7 = load i8, ptr %a2 - %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then594, label %endif596 -then594: - ret i8 13 -endif596: - %t9 = load i8, ptr %a2 - %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then597, label %endif599 -then597: - %t11 = trunc i64 0 to i8 - ret i8 %t11 -endif599: - %t12 = load i8, ptr %a2 - %t13 = icmp eq i8 %t12, 92 - br label %logic.from600 -logic.from600: - br i1 %t13, label %logic.end602, label %logic.rhs601 -logic.rhs601: - %t14 = load i8, ptr %a2 - %t15 = icmp eq i8 %t14, 34 - br label %logic.rend603 -logic.rend603: - br label %logic.end602 -logic.end602: - %t16 = phi i1 [ true, %logic.from600 ], [ %t15, %logic.rend603 ] - br label %logic.from604 -logic.from604: - br i1 %t16, label %logic.end606, label %logic.rhs605 -logic.rhs605: - %t17 = load i8, ptr %a2 - %t18 = icmp eq i8 %t17, 39 - br label %logic.rend607 -logic.rend607: - br label %logic.end606 -logic.end606: - %t19 = phi i1 [ true, %logic.from604 ], [ %t18, %logic.rend607 ] - br i1 %t19, label %then608, label %endif610 -then608: - %t20 = load i8, ptr %a2 - ret i8 %t20 -endif610: - %t21 = load ptr, ptr %a1 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic611, label %ok612 -panic611: - call void @finch_panic(ptr @.str.352, i64 97, ptr @.str.353) - unreachable -ok612: - %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 %panic613, label %ok614 -panic613: - call void @finch_panic(ptr @.str.354, i64 97, ptr @.str.355) - unreachable -ok614: - %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.356, i64 16, i64 0 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load i8, ptr %a2 - ret i8 %t40 -} - -define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) { -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.drop.S_lexer_Lexer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca i8, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca i8, align 16 - %a471 = alloca i8, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca i64, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca i64, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca %S.lexer.Token, align 16 - %a593 = alloca %S.lexer.Token, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond615 -while.cond615: - %t20 = load ptr, ptr %a18 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic618, label %ok619 -panic618: - call void @finch_panic(ptr @.str.357, i64 105, ptr @.str.358) - unreachable -ok619: - %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 %panic620, label %ok621 -panic620: - call void @finch_panic(ptr @.str.359, i64 105, ptr @.str.360) - unreachable -ok621: - %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.body616, label %while.end617 -while.body616: - %t30 = load ptr, ptr %a18 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic622, label %ok623 -panic622: - call void @finch_panic(ptr @.str.361, i64 106, ptr @.str.362) - unreachable -ok623: - %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 %panic624, label %ok625 -panic624: - call void @finch_panic(ptr @.str.363, i64 106, ptr @.str.364) - unreachable -ok625: - %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 %range626, label %inrange627 -range626: - call void @finch_panic_index(ptr @.str.365, i64 106, i64 %t36, i64 %t38) - unreachable -inrange627: - %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.from628 -logic.from628: - br i1 %t45, label %logic.end630, label %logic.rhs629 -logic.rhs629: - %t46 = load i8, ptr %a43 - %t47 = icmp eq i8 %t46, 9 - br label %logic.rend631 -logic.rend631: - br label %logic.end630 -logic.end630: - %t48 = phi i1 [ true, %logic.from628 ], [ %t47, %logic.rend631 ] - br label %logic.from632 -logic.from632: - br i1 %t48, label %logic.end634, label %logic.rhs633 -logic.rhs633: - %t49 = load i8, ptr %a43 - %t50 = icmp eq i8 %t49, 10 - br label %logic.rend635 -logic.rend635: - br label %logic.end634 -logic.end634: - %t51 = phi i1 [ true, %logic.from632 ], [ %t50, %logic.rend635 ] - br label %logic.from636 -logic.from636: - br i1 %t51, label %logic.end638, label %logic.rhs637 -logic.rhs637: - %t52 = load i8, ptr %a43 - %t53 = icmp eq i8 %t52, 13 - br label %logic.rend639 -logic.rend639: - br label %logic.end638 -logic.end638: - %t54 = phi i1 [ true, %logic.from636 ], [ %t53, %logic.rend639 ] - br i1 %t54, label %then640, label %endif642 -then640: - %t55 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t55) - br label %while.cond615 -endif642: - %t56 = load i8, ptr %a43 - %t57 = icmp eq i8 %t56, 47 - br label %logic.from643 -logic.from643: - br i1 %t57, label %logic.rhs644, label %logic.end645 -logic.rhs644: - %t58 = load ptr, ptr %a18 - %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) - %t60 = icmp eq i8 %t59, 47 - br label %logic.rend646 -logic.rend646: - br label %logic.end645 -logic.end645: - %t61 = phi i1 [ false, %logic.from643 ], [ %t60, %logic.rend646 ] - br i1 %t61, label %then647, label %endif649 -then647: - br label %while.cond650 -while.cond650: - %t62 = load ptr, ptr %a18 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic653, label %ok654 -panic653: - call void @finch_panic(ptr @.str.366, i64 112, ptr @.str.367) - unreachable -ok654: - %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 %panic655, label %ok656 -panic655: - call void @finch_panic(ptr @.str.368, i64 112, ptr @.str.369) - unreachable -ok656: - %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.from657 -logic.from657: - br i1 %t71, label %logic.rhs658, label %logic.end659 -logic.rhs658: - %t72 = load ptr, ptr %a18 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic660, label %ok661 -panic660: - call void @finch_panic(ptr @.str.370, i64 112, ptr @.str.371) - unreachable -ok661: - %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 %panic662, label %ok663 -panic662: - call void @finch_panic(ptr @.str.372, i64 112, ptr @.str.373) - unreachable -ok663: - %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 %range664, label %inrange665 -range664: - call void @finch_panic_index(ptr @.str.374, i64 112, i64 %t78, i64 %t80) - unreachable -inrange665: - %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.rend666 -logic.rend666: - br label %logic.end659 -logic.end659: - %t86 = phi i1 [ false, %logic.from657 ], [ %t85, %logic.rend666 ] - br i1 %t86, label %while.body651, label %while.end652 -while.body651: - %t87 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t87) - br label %while.cond650 -while.end652: - br label %while.cond615 -endif649: - %t88 = load i8, ptr %a43 - %t89 = icmp eq i8 %t88, 47 - br label %logic.from667 -logic.from667: - br i1 %t89, label %logic.rhs668, label %logic.end669 -logic.rhs668: - %t90 = load ptr, ptr %a18 - %t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1) - %t92 = icmp eq i8 %t91, 42 - br label %logic.rend670 -logic.rend670: - br label %logic.end669 -logic.end669: - %t93 = phi i1 [ false, %logic.from667 ], [ %t92, %logic.rend670 ] - br i1 %t93, label %then671, label %endif673 -then671: - %t94 = load ptr, ptr %a18 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic674, label %ok675 -panic674: - call void @finch_panic(ptr @.str.375, i64 118, ptr @.str.376) - unreachable -ok675: - %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 %panic676, label %ok677 -panic676: - call void @finch_panic(ptr @.str.377, i64 119, ptr @.str.378) - unreachable -ok677: - %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.cond678 -while.cond678: - %t106 = load ptr, ptr %a18 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic681, label %ok682 -panic681: - call void @finch_panic(ptr @.str.379, i64 122, ptr @.str.380) - unreachable -ok682: - %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 %panic683, label %ok684 -panic683: - call void @finch_panic(ptr @.str.381, i64 122, ptr @.str.382) - unreachable -ok684: - %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.from685 -logic.from685: - br i1 %t115, label %logic.rhs686, label %logic.end687 -logic.rhs686: - %t116 = load ptr, ptr %a18 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic688, label %ok689 -panic688: - call void @finch_panic(ptr @.str.383, i64 122, ptr @.str.384) - unreachable -ok689: - %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 %panic690, label %ok691 -panic690: - call void @finch_panic(ptr @.str.385, i64 122, ptr @.str.386) - unreachable -ok691: - %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 %range692, label %inrange693 -range692: - call void @finch_panic_index(ptr @.str.387, i64 122, i64 %t122, i64 %t124) - unreachable -inrange693: - %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.from694 -logic.from694: - br i1 %t129, label %logic.rhs695, label %logic.end696 -logic.rhs695: - %t130 = load ptr, ptr %a18 - %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) - %t132 = icmp eq i8 %t131, 47 - br label %logic.rend697 -logic.rend697: - br label %logic.end696 -logic.end696: - %t133 = phi i1 [ false, %logic.from694 ], [ %t132, %logic.rend697 ] - %t134 = xor i1 %t133, true - br label %logic.rend698 -logic.rend698: - br label %logic.end687 -logic.end687: - %t135 = phi i1 [ false, %logic.from685 ], [ %t134, %logic.rend698 ] - br i1 %t135, label %while.body679, label %while.end680 -while.body679: - %t136 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t136) - br label %while.cond678 -while.end680: - %t137 = load ptr, ptr %a18 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic699, label %ok700 -panic699: - call void @finch_panic(ptr @.str.388, i64 125, ptr @.str.389) - unreachable -ok700: - %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 %panic701, label %ok702 -panic701: - call void @finch_panic(ptr @.str.390, i64 125, ptr @.str.391) - unreachable -ok702: - %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 %then703, label %endif705 -then703: - %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.392, i64 36, i64 0 }) - br label %endif705 -endif705: - %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.cond615 -endif673: - %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.393, i64 0, i64 0 }, 0 - %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.394, i64 0, i64 0 }, 1 - %t154 = load ptr, ptr %a18 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic706, label %ok707 -panic706: - call void @finch_panic(ptr @.str.395, i64 133, ptr @.str.396) - unreachable -ok707: - %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 %panic708, label %ok709 -panic708: - call void @finch_panic(ptr @.str.397, i64 133, ptr @.str.398) - unreachable -ok709: - %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 %panic710, label %ok711 -panic710: - call void @finch_panic(ptr @.str.399, i64 133, ptr @.str.400) - unreachable -ok711: - %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 %panic712, label %ok713 -panic712: - call void @finch_panic(ptr @.str.401, i64 134, ptr @.str.402) - unreachable -ok713: - %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 %panic714, label %ok715 -panic714: - call void @finch_panic(ptr @.str.403, i64 135, ptr @.str.404) - unreachable -ok715: - %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 %then716, label %else717 -then716: - br label %while.cond719 -while.cond719: - %t180 = load ptr, ptr %a18 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic722, label %ok723 -panic722: - call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) - unreachable -ok723: - %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 %panic724, label %ok725 -panic724: - call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) - unreachable -ok725: - %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.from726 -logic.from726: - br i1 %t189, label %logic.rhs727, label %logic.end728 -logic.rhs727: - %t190 = load ptr, ptr %a18 - %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic729, label %ok730 -panic729: - call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) - unreachable -ok730: - %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 %panic731, label %ok732 -panic731: - call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) - unreachable -ok732: - %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 %range733, label %inrange734 -range733: - call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t196, i64 %t198) - unreachable -inrange734: - %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.from735 -logic.from735: - br i1 %t203, label %logic.end737, label %logic.rhs736 -logic.rhs736: - %t204 = load ptr, ptr %a18 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic738, label %ok739 -panic738: - call void @finch_panic(ptr @.str.414, i64 137, ptr @.str.415) - unreachable -ok739: - %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 %panic740, label %ok741 -panic740: - call void @finch_panic(ptr @.str.416, i64 137, ptr @.str.417) - unreachable -ok741: - %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 %range742, label %inrange743 -range742: - call void @finch_panic_index(ptr @.str.418, i64 137, i64 %t210, i64 %t212) - unreachable -inrange743: - %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.rend744 -logic.rend744: - br label %logic.end737 -logic.end737: - %t218 = phi i1 [ true, %logic.from735 ], [ %t217, %logic.rend744 ] - br label %logic.rend745 -logic.rend745: - br label %logic.end728 -logic.end728: - %t219 = phi i1 [ false, %logic.from726 ], [ %t218, %logic.rend745 ] - br i1 %t219, label %while.body720, label %while.end721 -while.body720: - %t220 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t220) - br label %while.cond719 -while.end721: - %t221 = load ptr, ptr %a18 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic746, label %ok747 -panic746: - call void @finch_panic(ptr @.str.419, i64 140, ptr @.str.420) - unreachable -ok747: - %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 %panic748, label %ok749 -panic748: - call void @finch_panic(ptr @.str.422, i64 140, ptr @.str.423) - unreachable -ok749: - %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.421, i64 140) - %t232 = load { ptr, i64, i64 }, ptr %a226 - %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t232, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } { ptr @.str.424, i64 5, i64 0 }, ptr %t236 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t240) - br i1 %t241, label %then750, label %endif752 -then750: - %t242 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t243, ptr %a245 - call void @finch_str_copy(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - %t248 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t247, ptr %t244 - store { ptr, i64, i64 } %t248, ptr %a249 - call void @finch_str_drop(ptr %a249) - br label %endif752 -endif752: - br label %endif718 -else717: - %t250 = load i8, ptr %a43 - %t251 = call i1 @finch.lexer.isDigit(i8 %t250) - br i1 %t251, label %then753, label %else754 -then753: - %t252 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } { ptr @.str.425, i64 3, i64 0 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load i8, ptr %a43 - %t256 = icmp eq i8 %t255, 48 - br label %logic.from756 -logic.from756: - br i1 %t256, label %logic.rhs757, label %logic.end758 -logic.rhs757: - %t257 = load ptr, ptr %a18 - %t258 = call i8 @finch.lexer.peek(ptr %t257, i64 1) - %t259 = icmp eq i8 %t258, 120 - br label %logic.from759 -logic.from759: - br i1 %t259, label %logic.end761, label %logic.rhs760 -logic.rhs760: - %t260 = load ptr, ptr %a18 - %t261 = call i8 @finch.lexer.peek(ptr %t260, i64 1) - %t262 = icmp eq i8 %t261, 88 - br label %logic.rend762 -logic.rend762: - br label %logic.end761 -logic.end761: - %t263 = phi i1 [ true, %logic.from759 ], [ %t262, %logic.rend762 ] - br label %logic.rend763 -logic.rend763: - br label %logic.end758 -logic.end758: - %t264 = phi i1 [ false, %logic.from756 ], [ %t263, %logic.rend763 ] - br i1 %t264, label %then764, label %else765 -then764: - %t265 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t265) - %t266 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t266) - br label %while.cond767 -while.cond767: - %t267 = load ptr, ptr %a18 - %t268 = icmp eq ptr %t267, null - br i1 %t268, label %panic770, label %ok771 -panic770: - call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) - unreachable -ok771: - %t269 = getelementptr inbounds %S.lexer.Lexer, ptr %t267, i32 0, i32 2 - %t270 = load i64, ptr %t269 - %t271 = load ptr, ptr %a18 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic772, label %ok773 -panic772: - call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) - unreachable -ok773: - %t273 = getelementptr inbounds %S.lexer.Lexer, ptr %t271, i32 0, i32 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load i64, ptr %t274 - %t276 = icmp slt i64 %t270, %t275 - br label %logic.from774 -logic.from774: - br i1 %t276, label %logic.rhs775, label %logic.end776 -logic.rhs775: - %t277 = load ptr, ptr %a18 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic777, label %ok778 -panic777: - call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) - unreachable -ok778: - %t279 = getelementptr inbounds %S.lexer.Lexer, ptr %t277, i32 0, i32 0 - %t280 = load ptr, ptr %a18 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic779, label %ok780 -panic779: - call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) - unreachable -ok780: - %t282 = getelementptr inbounds %S.lexer.Lexer, ptr %t280, i32 0, i32 2 - %t283 = load i64, ptr %t282 - %t284 = load { ptr, i64, i64 }, ptr %t279 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range781, label %inrange782 -range781: - call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t283, i64 %t285) - unreachable -inrange782: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds i8, ptr %t287, i64 %t283 - %t289 = load i8, ptr %t288 - %t290 = call i1 @finch.lexer.isHex(i8 %t289) - br label %logic.from783 -logic.from783: - br i1 %t290, label %logic.end785, label %logic.rhs784 -logic.rhs784: - %t291 = load ptr, ptr %a18 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic786, label %ok787 -panic786: - call void @finch_panic(ptr @.str.435, i64 150, ptr @.str.436) - unreachable -ok787: - %t293 = getelementptr inbounds %S.lexer.Lexer, ptr %t291, i32 0, i32 0 - %t294 = load ptr, ptr %a18 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic788, label %ok789 -panic788: - call void @finch_panic(ptr @.str.437, i64 150, ptr @.str.438) - unreachable -ok789: - %t296 = getelementptr inbounds %S.lexer.Lexer, ptr %t294, i32 0, i32 2 - %t297 = load i64, ptr %t296 - %t298 = load { ptr, i64, i64 }, ptr %t293 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range790, label %inrange791 -range790: - call void @finch_panic_index(ptr @.str.439, i64 150, i64 %t297, i64 %t299) - unreachable -inrange791: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds i8, ptr %t301, i64 %t297 - %t303 = load i8, ptr %t302 - %t304 = icmp eq i8 %t303, 95 - br label %logic.rend792 -logic.rend792: - br label %logic.end785 -logic.end785: - %t305 = phi i1 [ true, %logic.from783 ], [ %t304, %logic.rend792 ] - br label %logic.rend793 -logic.rend793: - br label %logic.end776 -logic.end776: - %t306 = phi i1 [ false, %logic.from774 ], [ %t305, %logic.rend793 ] - br i1 %t306, label %while.body768, label %while.end769 -while.body768: - %t307 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t307) - br label %while.cond767 -while.end769: - br label %endif766 -else765: - br label %while.cond794 -while.cond794: - %t308 = load ptr, ptr %a18 - %t309 = icmp eq ptr %t308, null - br i1 %t309, label %panic797, label %ok798 -panic797: - call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) - unreachable -ok798: - %t310 = getelementptr inbounds %S.lexer.Lexer, ptr %t308, i32 0, i32 2 - %t311 = load i64, ptr %t310 - %t312 = load ptr, ptr %a18 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic799, label %ok800 -panic799: - call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) - unreachable -ok800: - %t314 = getelementptr inbounds %S.lexer.Lexer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = icmp slt i64 %t311, %t316 - br label %logic.from801 -logic.from801: - br i1 %t317, label %logic.rhs802, label %logic.end803 -logic.rhs802: - %t318 = load ptr, ptr %a18 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic804, label %ok805 -panic804: - call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) - unreachable -ok805: - %t320 = getelementptr inbounds %S.lexer.Lexer, ptr %t318, i32 0, i32 0 - %t321 = load ptr, ptr %a18 - %t322 = icmp eq ptr %t321, null - br i1 %t322, label %panic806, label %ok807 -panic806: - call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) - unreachable -ok807: - %t323 = getelementptr inbounds %S.lexer.Lexer, ptr %t321, i32 0, i32 2 - %t324 = load i64, ptr %t323 - %t325 = load { ptr, i64, i64 }, ptr %t320 - %t326 = extractvalue { ptr, i64, i64 } %t325, 1 - %t327 = icmp uge i64 %t324, %t326 - br i1 %t327, label %range808, label %inrange809 -range808: - call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t324, i64 %t326) - unreachable -inrange809: - %t328 = extractvalue { ptr, i64, i64 } %t325, 0 - %t329 = getelementptr inbounds i8, ptr %t328, i64 %t324 - %t330 = load i8, ptr %t329 - %t331 = call i1 @finch.lexer.isDigit(i8 %t330) - br label %logic.from810 -logic.from810: - br i1 %t331, label %logic.end812, label %logic.rhs811 -logic.rhs811: - %t332 = load ptr, ptr %a18 - %t333 = icmp eq ptr %t332, null - br i1 %t333, label %panic813, label %ok814 -panic813: - call void @finch_panic(ptr @.str.449, i64 154, ptr @.str.450) - unreachable -ok814: - %t334 = getelementptr inbounds %S.lexer.Lexer, ptr %t332, i32 0, i32 0 - %t335 = load ptr, ptr %a18 - %t336 = icmp eq ptr %t335, null - br i1 %t336, label %panic815, label %ok816 -panic815: - call void @finch_panic(ptr @.str.451, i64 154, ptr @.str.452) - unreachable -ok816: - %t337 = getelementptr inbounds %S.lexer.Lexer, ptr %t335, i32 0, i32 2 - %t338 = load i64, ptr %t337 - %t339 = load { ptr, i64, i64 }, ptr %t334 - %t340 = extractvalue { ptr, i64, i64 } %t339, 1 - %t341 = icmp uge i64 %t338, %t340 - br i1 %t341, label %range817, label %inrange818 -range817: - call void @finch_panic_index(ptr @.str.453, i64 154, i64 %t338, i64 %t340) - unreachable -inrange818: - %t342 = extractvalue { ptr, i64, i64 } %t339, 0 - %t343 = getelementptr inbounds i8, ptr %t342, i64 %t338 - %t344 = load i8, ptr %t343 - %t345 = icmp eq i8 %t344, 95 - br label %logic.rend819 -logic.rend819: - br label %logic.end812 -logic.end812: - %t346 = phi i1 [ true, %logic.from810 ], [ %t345, %logic.rend819 ] - br label %logic.rend820 -logic.rend820: - br label %logic.end803 -logic.end803: - %t347 = phi i1 [ false, %logic.from801 ], [ %t346, %logic.rend820 ] - br i1 %t347, label %while.body795, label %while.end796 -while.body795: - %t348 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t348) - br label %while.cond794 -while.end796: - %t349 = load ptr, ptr %a18 - %t350 = call i8 @finch.lexer.peek(ptr %t349, i64 0) - %t351 = icmp eq i8 %t350, 46 - br label %logic.from821 -logic.from821: - br i1 %t351, label %logic.rhs822, label %logic.end823 -logic.rhs822: - %t352 = load ptr, ptr %a18 - %t353 = call i8 @finch.lexer.peek(ptr %t352, i64 1) - %t354 = call i1 @finch.lexer.isDigit(i8 %t353) - br label %logic.rend824 -logic.rend824: - br label %logic.end823 -logic.end823: - %t355 = phi i1 [ false, %logic.from821 ], [ %t354, %logic.rend824 ] - br i1 %t355, label %then825, label %endif827 -then825: - %t356 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t357 = load { ptr, i64, i64 }, ptr %t356 - store { ptr, i64, i64 } { ptr @.str.454, i64 5, i64 0 }, ptr %t356 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_drop(ptr %a358) - %t359 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t359) - br label %while.cond828 -while.cond828: - %t360 = load ptr, ptr %a18 - %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic831, label %ok832 -panic831: - call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) - unreachable -ok832: - %t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 2 - %t363 = load i64, ptr %t362 - %t364 = load ptr, ptr %a18 - %t365 = icmp eq ptr %t364, null - br i1 %t365, label %panic833, label %ok834 -panic833: - call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) - unreachable -ok834: - %t366 = getelementptr inbounds %S.lexer.Lexer, ptr %t364, i32 0, i32 0 - %t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1 - %t368 = load i64, ptr %t367 - %t369 = icmp slt i64 %t363, %t368 - br label %logic.from835 -logic.from835: - br i1 %t369, label %logic.rhs836, label %logic.end837 -logic.rhs836: - %t370 = load ptr, ptr %a18 - %t371 = icmp eq ptr %t370, null - br i1 %t371, label %panic838, label %ok839 -panic838: - call void @finch_panic(ptr @.str.459, i64 160, ptr @.str.460) - unreachable -ok839: - %t372 = getelementptr inbounds %S.lexer.Lexer, ptr %t370, i32 0, i32 0 - %t373 = load ptr, ptr %a18 - %t374 = icmp eq ptr %t373, null - br i1 %t374, label %panic840, label %ok841 -panic840: - call void @finch_panic(ptr @.str.461, i64 160, ptr @.str.462) - unreachable -ok841: - %t375 = getelementptr inbounds %S.lexer.Lexer, ptr %t373, i32 0, i32 2 - %t376 = load i64, ptr %t375 - %t377 = load { ptr, i64, i64 }, ptr %t372 - %t378 = extractvalue { ptr, i64, i64 } %t377, 1 - %t379 = icmp uge i64 %t376, %t378 - br i1 %t379, label %range842, label %inrange843 -range842: - call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t376, i64 %t378) - unreachable -inrange843: - %t380 = extractvalue { ptr, i64, i64 } %t377, 0 - %t381 = getelementptr inbounds i8, ptr %t380, i64 %t376 - %t382 = load i8, ptr %t381 - %t383 = call i1 @finch.lexer.isDigit(i8 %t382) - br label %logic.from844 -logic.from844: - br i1 %t383, label %logic.end846, label %logic.rhs845 -logic.rhs845: - %t384 = load ptr, ptr %a18 - %t385 = icmp eq ptr %t384, null - br i1 %t385, label %panic847, label %ok848 -panic847: - call void @finch_panic(ptr @.str.464, i64 160, ptr @.str.465) - unreachable -ok848: - %t386 = getelementptr inbounds %S.lexer.Lexer, ptr %t384, i32 0, i32 0 - %t387 = load ptr, ptr %a18 - %t388 = icmp eq ptr %t387, null - br i1 %t388, label %panic849, label %ok850 -panic849: - call void @finch_panic(ptr @.str.466, i64 160, ptr @.str.467) - unreachable -ok850: - %t389 = getelementptr inbounds %S.lexer.Lexer, ptr %t387, i32 0, i32 2 - %t390 = load i64, ptr %t389 - %t391 = load { ptr, i64, i64 }, ptr %t386 - %t392 = extractvalue { ptr, i64, i64 } %t391, 1 - %t393 = icmp uge i64 %t390, %t392 - br i1 %t393, label %range851, label %inrange852 -range851: - call void @finch_panic_index(ptr @.str.468, i64 160, i64 %t390, i64 %t392) - unreachable -inrange852: - %t394 = extractvalue { ptr, i64, i64 } %t391, 0 - %t395 = getelementptr inbounds i8, ptr %t394, i64 %t390 - %t396 = load i8, ptr %t395 - %t397 = icmp eq i8 %t396, 95 - br label %logic.rend853 -logic.rend853: - br label %logic.end846 -logic.end846: - %t398 = phi i1 [ true, %logic.from844 ], [ %t397, %logic.rend853 ] - br label %logic.rend854 -logic.rend854: - br label %logic.end837 -logic.end837: - %t399 = phi i1 [ false, %logic.from835 ], [ %t398, %logic.rend854 ] - br i1 %t399, label %while.body829, label %while.end830 -while.body829: - %t400 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t400) - br label %while.cond828 -while.end830: - br label %endif827 -endif827: - br label %endif766 -endif766: - %t401 = load ptr, ptr %a18 - %t402 = icmp eq ptr %t401, null - br i1 %t402, label %panic855, label %ok856 -panic855: - call void @finch_panic(ptr @.str.469, i64 165, ptr @.str.470) - unreachable -ok856: - %t403 = getelementptr inbounds %S.lexer.Lexer, ptr %t401, i32 0, i32 0 - %t404 = load { ptr, i64, i64 }, ptr %t403 - store { ptr, i64, i64 } %t404, ptr %a405 - %t407 = load i64, ptr %a177 - %t408 = load ptr, ptr %a18 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic857, label %ok858 -panic857: - call void @finch_panic(ptr @.str.472, i64 165, ptr @.str.473) - unreachable -ok858: - %t410 = getelementptr inbounds %S.lexer.Lexer, ptr %t408, i32 0, i32 2 - %t411 = load i64, ptr %t410 - call void @finch_str_sub(ptr %a406, ptr %a405, i64 %t407, i64 %t411, ptr @.str.471, i64 165) - %t412 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.475, i64 1, i64 0 }, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.476, i64 0, i64 0 }, ptr %a416 - call void @finch_str_replace(ptr %a414, ptr %a413, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t412, ptr %a418 - call void @finch_str_drop(ptr %a418) - %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t417, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - call void @finch_str_drop(ptr %a421) - br label %endif755 -else754: - %t422 = load i8, ptr %a43 - %t423 = icmp eq i8 %t422, 34 - br label %logic.from859 -logic.from859: - br i1 %t423, label %logic.end861, label %logic.rhs860 -logic.rhs860: - %t424 = load i8, ptr %a43 - %t425 = icmp eq i8 %t424, 39 - br label %logic.rend862 -logic.rend862: - br label %logic.end861 -logic.end861: - %t426 = phi i1 [ true, %logic.from859 ], [ %t425, %logic.rend862 ] - br i1 %t426, label %then863, label %else864 -then863: - %t427 = load i8, ptr %a43 - store i8 %t427, ptr %a428 - %t429 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t430 = load { ptr, i64, i64 }, ptr %t429 - store { ptr, i64, i64 } { ptr @.str.477, i64 6, i64 0 }, ptr %t429 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load i8, ptr %a428 - %t433 = icmp eq i8 %t432, 39 - br i1 %t433, label %then866, label %endif868 -then866: - %t434 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t435 = load { ptr, i64, i64 }, ptr %t434 - store { ptr, i64, i64 } { ptr @.str.478, i64 4, i64 0 }, ptr %t434 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif868 -endif868: - %t437 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - br label %while.cond869 -while.cond869: - %t439 = load ptr, ptr %a18 - %t440 = call i8 @finch.lexer.peek(ptr %t439, i64 0) - %t441 = load i8, ptr %a428 - %t442 = icmp ne i8 %t440, %t441 - br i1 %t442, label %while.body870, label %while.end871 -while.body870: - %t443 = load ptr, ptr %a18 - %t444 = call i8 @finch.lexer.peek(ptr %t443, i64 0) - %t445 = trunc i64 0 to i8 - %t446 = icmp eq i8 %t444, %t445 - br label %logic.from872 -logic.from872: - br i1 %t446, label %logic.end874, label %logic.rhs873 -logic.rhs873: - %t447 = load ptr, ptr %a18 - %t448 = call i8 @finch.lexer.peek(ptr %t447, i64 0) - %t449 = icmp eq i8 %t448, 10 - br label %logic.rend875 -logic.rend875: - br label %logic.end874 -logic.end874: - %t450 = phi i1 [ true, %logic.from872 ], [ %t449, %logic.rend875 ] - br i1 %t450, label %then876, label %endif878 -then876: - %t451 = load i8, ptr %a428 - %t452 = icmp eq i8 %t451, 34 - br i1 %t452, label %then879, label %endif881 -then879: - %t453 = load ptr, ptr %a18 - %t454 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t455 = load i64, ptr %t454 - %t456 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t457 = load i64, ptr %t456 - call void @finch.lexer.fail(ptr %t453, i64 %t455, i64 %t457, { ptr, i64, i64 } { ptr @.str.479, i64 34, i64 0 }) - br label %endif881 -endif881: - %t458 = load ptr, ptr %a18 - %t459 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t460 = load i64, ptr %t459 - %t461 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t462 = load i64, ptr %t461 - call void @finch.lexer.fail(ptr %t458, i64 %t460, i64 %t462, { ptr, i64, i64 } { ptr @.str.480, i64 32, i64 0 }) - br label %endif878 -endif878: - %t463 = load ptr, ptr %a18 - %t464 = call i8 @finch.lexer.peek(ptr %t463, i64 0) - store i8 %t464, ptr %a465 - %t466 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t466) - %t467 = load i8, ptr %a465 - %t468 = icmp eq i8 %t467, 92 - br i1 %t468, label %then882, label %endif884 -then882: - %t469 = load ptr, ptr %a18 - %t470 = call i8 @finch.lexer.peek(ptr %t469, i64 0) - store i8 %t470, ptr %a471 - %t472 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t472) - %t473 = load ptr, ptr %a18 - %t474 = load i8, ptr %a471 - %t475 = call i8 @finch.lexer.escape(ptr %t473, i8 %t474) - store i8 %t475, ptr %a465 - br label %endif884 -endif884: - %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - %t477 = load i8, ptr %a465 - call void @finch_str_from_char(ptr %a478, i8 signext %t477) - %t479 = load { ptr, i64, i64 }, ptr %a478 - %t480 = load i64, ptr %t476 - %t481 = add i64 %t480, 1 - call void @finch_arr_reserve(ptr %a438, i64 %t481, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t482 = load ptr, ptr %a438 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i64 %t480 - store { ptr, i64, i64 } %t479, ptr %t483 - store i64 %t481, ptr %t476 - br label %while.cond869 -while.end871: - %t484 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t484) - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.481, i64 0, i64 0 }, ptr %a486 - call void @finch_str_join(ptr %a487, ptr %a438, ptr %a486) - %t488 = load { ptr, i64, i64 }, ptr %a487 - %t489 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t490 = load { ptr, i64, i64 }, ptr %t489 - store { ptr, i64, i64 } %t488, ptr %t489 - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load i8, ptr %a428 - %t493 = icmp eq i8 %t492, 39 - br label %logic.from885 -logic.from885: - br i1 %t493, label %logic.rhs886, label %logic.end887 -logic.rhs886: - %t494 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i32 0, i32 1 - %t496 = load i64, ptr %t495 - %t497 = icmp ne i64 %t496, 1 - br label %logic.rend888 -logic.rend888: - br label %logic.end887 -logic.end887: - %t498 = phi i1 [ false, %logic.from885 ], [ %t497, %logic.rend888 ] - br i1 %t498, label %then889, label %endif891 -then889: - %t499 = load ptr, ptr %a18 - %t500 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t501 = load i64, ptr %t500 - %t502 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t503 = load i64, ptr %t502 - call void @finch.lexer.fail(ptr %t499, i64 %t501, i64 %t503, { ptr, i64, i64 } { ptr @.str.482, i64 44, i64 0 }) - br label %endif891 -endif891: - call void @finch.drop.arr_str(ptr %a438) - br label %endif865 -else864: - %t504 = load ptr, ptr %a18 - %t505 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t504) - store { ptr, i64, i64 } %t505, ptr %a506 - %t507 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t508 = load i64, ptr %t507 - %t509 = icmp eq i64 %t508, 0 - br i1 %t509, label %then892, label %endif894 -then892: - store i64 1, ptr %a510 - %t511 = load i8, ptr %a43 - %t512 = zext i8 %t511 to i64 - %t513 = and i64 %t512, 224 - %t514 = icmp eq i64 %t513, 192 - br i1 %t514, label %then895, label %else896 -then895: - store i64 2, ptr %a510 - br label %endif897 -else896: - %t515 = load i8, ptr %a43 - %t516 = zext i8 %t515 to i64 - %t517 = and i64 %t516, 240 - %t518 = icmp eq i64 %t517, 224 - br i1 %t518, label %then898, label %else899 -then898: - store i64 3, ptr %a510 - br label %endif900 -else899: - %t519 = load i8, ptr %a43 - %t520 = zext i8 %t519 to i64 - %t521 = and i64 %t520, 248 - %t522 = icmp eq i64 %t521, 240 - br i1 %t522, label %then901, label %endif903 -then901: - store i64 4, ptr %a510 - br label %endif903 -endif903: - br label %endif900 -endif900: - br label %endif897 -endif897: - store { ptr, i64, i64 } { ptr @.str.483, i64 0, i64 0 }, ptr %a523 - %t524 = load i8, ptr %a43 - %t525 = zext i8 %t524 to i64 - %t526 = icmp sge i64 %t525, 128 - br i1 %t526, label %then904, label %endif906 -then904: - %t527 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.484, i64 74, i64 0 }, ptr %a523 - store { ptr, i64, i64 } %t527, ptr %a528 - call void @finch_str_drop(ptr %a528) - br label %endif906 -endif906: - %t529 = load ptr, ptr %a18 - %t530 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t531 = load i64, ptr %t530 - %t532 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t533 = load i64, ptr %t532 - %t534 = load ptr, ptr %a18 - %t535 = icmp eq ptr %t534, null - br i1 %t535, label %panic907, label %ok908 -panic907: - call void @finch_panic(ptr @.str.486, i64 211, ptr @.str.487) - unreachable -ok908: - %t536 = getelementptr inbounds %S.lexer.Lexer, ptr %t534, i32 0, i32 0 - %t537 = load { ptr, i64, i64 }, ptr %t536 - store { ptr, i64, i64 } %t537, ptr %a538 - %t540 = load ptr, ptr %a18 - %t541 = icmp eq ptr %t540, null - br i1 %t541, label %panic909, label %ok910 -panic909: - call void @finch_panic(ptr @.str.489, i64 211, ptr @.str.490) - unreachable -ok910: - %t542 = getelementptr inbounds %S.lexer.Lexer, ptr %t540, i32 0, i32 2 - %t543 = load i64, ptr %t542 - %t544 = load ptr, ptr %a18 - %t545 = icmp eq ptr %t544, null - br i1 %t545, label %panic911, label %ok912 -panic911: - call void @finch_panic(ptr @.str.491, i64 211, ptr @.str.492) - unreachable -ok912: - %t546 = getelementptr inbounds %S.lexer.Lexer, ptr %t544, i32 0, i32 2 - %t547 = load i64, ptr %t546 - %t548 = load i64, ptr %a510 - %t549 = add i64 %t547, %t548 - call void @finch_str_sub(ptr %a539, ptr %a538, i64 %t543, i64 %t549, ptr @.str.488, i64 211) - %t550 = load { ptr, i64, i64 }, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.485, i64 22, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - store { ptr, i64, i64 } %t550, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t555, ptr %a557 - store { ptr, i64, i64 } { ptr @.str.493, i64 1, i64 0 }, ptr %a558 - call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) - store { ptr, i64, i64 } %t555, ptr %a559 - call void @finch_str_drop(ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a556 - %t561 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t560, ptr %a563 - store { ptr, i64, i64 } %t561, ptr %a564 - call void @finch_str_concat(ptr %a562, ptr %a563, ptr %a564) - store { ptr, i64, i64 } %t560, ptr %a565 - call void @finch_str_drop(ptr %a565) - %t566 = load { ptr, i64, i64 }, ptr %a562 - call void @finch.lexer.fail(ptr %t529, i64 %t531, i64 %t533, { ptr, i64, i64 } %t566) - store { ptr, i64, i64 } %t566, ptr %a567 - call void @finch_str_drop(ptr %a567) - call void @finch_str_drop(ptr %a523) - br label %endif894 -endif894: - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t569 = load i64, ptr %t568 - store i64 0, ptr %a570 - br label %for.cond913 -for.cond913: - %t571 = load i64, ptr %a570 - %t572 = icmp slt i64 %t571, %t569 - br i1 %t572, label %for.body914, label %for.end916 -for.body914: - %t573 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t573) - br label %for.step915 -for.step915: - %t574 = load i64, ptr %a570 - %t575 = add i64 %t574, 1 - store i64 %t575, ptr %a570 - br label %for.cond913 -for.end916: - %t576 = load { ptr, i64, i64 }, ptr %a506 - %t577 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t576, ptr %a578 - call void @finch_str_copy(ptr %a579, ptr %a578) - %t580 = load { ptr, i64, i64 }, ptr %a579 - %t581 = load { ptr, i64, i64 }, ptr %t577 - store { ptr, i64, i64 } %t580, ptr %t577 - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a506 - %t584 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t583, ptr %a585 - call void @finch_str_copy(ptr %a586, ptr %a585) - %t587 = load { ptr, i64, i64 }, ptr %a586 - %t588 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t587, ptr %t584 - store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch_str_drop(ptr %a589) - call void @finch_str_drop(ptr %a506) - br label %endif865 -endif865: - br label %endif755 -endif755: - br label %endif718 -endif718: - %t590 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t591 = load %S.lexer.Token, ptr %a169 - store %S.lexer.Token %t591, ptr %a592 - call void @finch.copy.S_lexer_Token(ptr %a593, ptr %a592) - %t594 = load %S.lexer.Token, ptr %a593 - %t595 = load i64, ptr %t590 - %t596 = add i64 %t595, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t596, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t597 = load ptr, ptr %a19 - %t598 = getelementptr inbounds %S.lexer.Token, ptr %t597, i64 %t595 - store %S.lexer.Token %t594, ptr %t598 - store i64 %t596, ptr %t590 - call void @finch.drop.S_lexer_Token(ptr %a169) - br label %while.cond615 -while.end617: - %t599 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t600 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.494, i64 3, i64 0 }, 0 - %t601 = insertvalue %S.lexer.Token %t600, { ptr, i64, i64 } { ptr @.str.495, i64 0, i64 0 }, 1 - %t602 = load ptr, ptr %a18 - %t603 = icmp eq ptr %t602, null - br i1 %t603, label %panic917, label %ok918 -panic917: - call void @finch_panic(ptr @.str.496, i64 221, ptr @.str.497) - unreachable -ok918: - %t604 = getelementptr inbounds %S.lexer.Lexer, ptr %t602, i32 0, i32 3 - %t605 = load i64, ptr %t604 - %t606 = insertvalue %S.lexer.Token %t601, i64 %t605, 2 - %t607 = load ptr, ptr %a18 - %t608 = icmp eq ptr %t607, null - br i1 %t608, label %panic919, label %ok920 -panic919: - call void @finch_panic(ptr @.str.498, i64 221, ptr @.str.499) - unreachable -ok920: - %t609 = getelementptr inbounds %S.lexer.Lexer, ptr %t607, i32 0, i32 4 - %t610 = load i64, ptr %t609 - %t611 = insertvalue %S.lexer.Token %t606, i64 %t610, 3 - %t612 = insertvalue %S.lexer.Token %t611, i1 true, 4 - %t613 = load i64, ptr %t599 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t614, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a19 - %t616 = getelementptr inbounds %S.lexer.Token, ptr %t615, i64 %t613 - store %S.lexer.Token %t612, ptr %t616 - store i64 %t614, ptr %t599 - %t617 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.S_lexer_Lexer(ptr %a17) - ret { ptr, i64, i64 } %t617 -} - -define internal %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %p0) { -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.500, i64 5, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 - 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.501, i64 3, i64 0 }, 0 - store %S.ast.Type %t3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %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 - ret %S.ast.Type %t25 -} - -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.502, i64 3, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 %then921, label %endif923 -then921: - ret i1 false -endif923: - %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.503, i64 6, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp ne i32 %t15, 0 - br label %logic.from924 -logic.from924: - br i1 %t16, label %logic.end926, label %logic.rhs925 -logic.rhs925: - %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.504, i64 5, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br label %logic.rend927 -logic.rend927: - br label %logic.end926 -logic.end926: - %t23 = phi i1 [ true, %logic.from924 ], [ %t22, %logic.rend927 ] - br label %logic.from928 -logic.from928: - br i1 %t23, label %logic.end930, label %logic.rhs929 -logic.rhs929: - %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.505, i64 4, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br label %logic.rend931 -logic.rend931: - br label %logic.end930 -logic.end930: - %t30 = phi i1 [ true, %logic.from928 ], [ %t29, %logic.rend931 ] - br i1 %t30, label %then932, label %endif934 -then932: - %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.from935 -logic.from935: - br i1 %t38, label %logic.rhs936, label %logic.end937 -logic.rhs936: - %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.rend938 -logic.rend938: - br label %logic.end937 -logic.end937: - %t47 = phi i1 [ false, %logic.from935 ], [ %t46, %logic.rend938 ] - ret i1 %t47 -endif934: - %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.506, i64 5, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br label %logic.from939 -logic.from939: - br i1 %t53, label %logic.rhs940, label %logic.end941 -logic.rhs940: - %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.rend942 -logic.rend942: - br label %logic.end941 -logic.end941: - %t59 = phi i1 [ false, %logic.from939 ], [ %t58, %logic.rend942 ] - br i1 %t59, label %then943, label %endif945 -then943: - ret i1 false -endif945: - %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.507, i64 5, i64 0 }, ptr %a63 - %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) - %t65 = icmp ne i32 %t64, 0 - br label %logic.from946 -logic.from946: - br i1 %t65, label %logic.end948, label %logic.rhs947 -logic.rhs947: - %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.508, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br label %logic.rend949 -logic.rend949: - br label %logic.end948 -logic.end948: - %t72 = phi i1 [ true, %logic.from946 ], [ %t71, %logic.rend949 ] - br label %logic.from950 -logic.from950: - br i1 %t72, label %logic.end952, label %logic.rhs951 -logic.rhs951: - %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.509, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br label %logic.rend953 -logic.rend953: - br label %logic.end952 -logic.end952: - %t79 = phi i1 [ true, %logic.from950 ], [ %t78, %logic.rend953 ] - br label %logic.from954 -logic.from954: - br i1 %t79, label %logic.end956, label %logic.rhs955 -logic.rhs955: - %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.510, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.rend957 -logic.rend957: - br label %logic.end956 -logic.end956: - %t86 = phi i1 [ true, %logic.from954 ], [ %t85, %logic.rend957 ] - br i1 %t86, label %then958, label %endif960 -then958: - %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 %then961, label %endif963 -then961: - ret i1 false -endif963: - %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.cond964 -for.cond964: - %t98 = load i64, ptr %a97 - %t99 = icmp slt i64 %t98, %t96 - br i1 %t99, label %for.body965, label %for.end967 -for.body965: - %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 %range968, label %inrange969 -range968: - call void @finch_panic_index(ptr @.str.511, i64 54, i64 %t101, i64 %t103) - unreachable -inrange969: - %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 %range970, label %inrange971 -range970: - call void @finch_panic_index(ptr @.str.512, i64 54, i64 %t109, i64 %t111) - unreachable -inrange971: - %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 %then972, label %endif974 -then972: - ret i1 false -endif974: - br label %for.step966 -for.step966: - %t118 = load i64, ptr %a97 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %a97 - br label %for.cond964 -for.end967: - ret i1 true -endif960: - 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 - %a19 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.513, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then975, label %endif977 -then975: - %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 %range978, label %inrange979 -range978: - call void @finch_panic_index(ptr @.str.515, i64 65, i64 0, i64 %t10) - unreachable -inrange979: - %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.514, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif977: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.516, i64 5, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %then980, label %endif982 -then980: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.517, i64 1, i64 0 }, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.518, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 0, %t43 - br i1 %t44, label %range983, label %inrange984 -range983: - call void @finch_panic_index(ptr @.str.519, i64 68, i64 0, i64 %t43) - unreachable -inrange984: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 - %t47 = load %S.ast.Type, ptr %t46 - %t48 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t47) - store { ptr, i64, i64 } %t40, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t40, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - ret { ptr, i64, i64 } %t54 -endif982: - %t55 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.520, i64 3, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then985, label %endif987 -then985: - %t61 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 0, %t63 - br i1 %t64, label %range988, label %inrange989 -range988: - call void @finch_panic_index(ptr @.str.522, i64 71, i64 0, i64 %t63) - unreachable -inrange989: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds %S.ast.Type, ptr %t65, i64 0 - %t67 = load %S.ast.Type, ptr %t66 - %t68 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.521, i64 4, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.523, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = extractvalue { ptr, i64, i64 } %t80, 1 - %t82 = icmp uge i64 1, %t81 - br i1 %t82, label %range990, label %inrange991 -range990: - call void @finch_panic_index(ptr @.str.524, i64 71, i64 1, i64 %t81) - unreachable -inrange991: - %t83 = extractvalue { ptr, i64, i64 } %t80, 0 - %t84 = getelementptr inbounds %S.ast.Type, ptr %t83, i64 1 - %t85 = load %S.ast.Type, ptr %t84 - %t86 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t85) - store { ptr, i64, i64 } %t78, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t78, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - ret { ptr, i64, i64 } %t92 -endif987: - %t93 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.525, i64 3, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then992, label %endif994 -then992: - %t99 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = icmp eq i64 %t101, 0 - br i1 %t102, label %then995, label %endif997 -then995: - ret { ptr, i64, i64 } { ptr @.str.526, i64 3, i64 0 } -endif997: - %t103 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %t103 - %t105 = extractvalue { ptr, i64, i64 } %t104, 1 - %t106 = icmp uge i64 0, %t105 - br i1 %t106, label %range998, label %inrange999 -range998: - call void @finch_panic_index(ptr @.str.528, i64 77, i64 0, i64 %t105) - unreachable -inrange999: - %t107 = extractvalue { ptr, i64, i64 } %t104, 0 - %t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i64 0 - %t109 = load %S.ast.Type, ptr %t108 - %t110 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t109) - store { ptr, i64, i64 } { ptr @.str.527, i64 4, i64 0 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t120 -endif994: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t122, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.530, i64 6, i64 0 }, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.from1000 -logic.from1000: - br i1 %t126, label %logic.end1002, label %logic.rhs1001 -logic.rhs1001: - %t127 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.531, i64 5, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend1003 -logic.rend1003: - br label %logic.end1002 -logic.end1002: - %t133 = phi i1 [ true, %logic.from1000 ], [ %t132, %logic.rend1003 ] - br label %logic.from1004 -logic.from1004: - br i1 %t133, label %logic.end1006, label %logic.rhs1005 -logic.rhs1005: - %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.532, i64 4, i64 0 }, ptr %a137 - %t138 = call i32 @finch_str_eq(ptr %a136, ptr %a137) - %t139 = icmp ne i32 %t138, 0 - br label %logic.rend1007 -logic.rend1007: - br label %logic.end1006 -logic.end1006: - %t140 = phi i1 [ true, %logic.from1004 ], [ %t139, %logic.rend1007 ] - br i1 %t140, label %then1008, label %endif1010 -then1008: - %t141 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = icmp sgt i64 %t143, 0 - br i1 %t144, label %then1011, label %endif1013 -then1011: - %t145 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t146 = load { ptr, i64, i64 }, ptr %t145 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.533, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a147 - %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t150, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t150, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - ret { ptr, i64, i64 } %t157 -endif1013: - %t158 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - call void @finch_str_copy(ptr %a161, ptr %a160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - ret { ptr, i64, i64 } %t162 -endif1010: - %t163 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t164 = load { ptr, i64, i64 }, ptr %t163 - store { ptr, i64, i64 } %t164, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.534, i64 4, i64 0 }, ptr %a166 - %t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166) - %t168 = icmp ne i32 %t167, 0 - br i1 %t168, label %then1014, label %endif1016 -then1014: - ret { ptr, i64, i64 } { ptr @.str.535, i64 7, i64 0 } -endif1016: - %t169 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - ret { ptr, i64, i64 } %t173 -} - -define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.lexer.Token %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1017, label %ok1018 -panic1017: - call void @finch_panic(ptr @.str.536, i64 14, ptr @.str.537) - unreachable -ok1018: - %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.538, i64 1, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a8 - %t12 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 2 - %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) - store { ptr, i64, i64 } %t11, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.539, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t26, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t26, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.540, i64 9, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t41, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = trunc i64 %t48 to i32 - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = icmp eq ptr %t50, null - %t52 = select i1 %t51, ptr @.str.541, ptr %t50 - %t53 = call i32 (ptr, ...) @printf(ptr @.str.542, i32 %t49, ptr %t52) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = call i32 (ptr, ...) @printf(ptr @.str.543) - %t56 = trunc i64 1 to i32 - %t57 = call i32 @fflush(ptr null) - call void @exit(i32 %t56) - ret void -} - -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 %panic1019, label %ok1020 -panic1019: - call void @finch_panic(ptr @.str.544, i64 19, ptr @.str.545) - unreachable -ok1020: - %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 %panic1021, label %ok1022 -panic1021: - call void @finch_panic(ptr @.str.546, i64 19, ptr @.str.547) - unreachable -ok1022: - %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 %range1023, label %inrange1024 -range1023: - call void @finch_panic_index(ptr @.str.548, i64 19, i64 %t8, i64 %t10) - unreachable -inrange1024: - %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 %panic1025, label %ok1026 -panic1025: - call void @finch_panic(ptr @.str.549, i64 23, ptr @.str.550) - unreachable -ok1026: - %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 %panic1027, label %ok1028 -panic1027: - call void @finch_panic(ptr @.str.551, i64 23, ptr @.str.552) - unreachable -ok1028: - %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 %range1029, label %inrange1030 -range1029: - call void @finch_panic_index(ptr @.str.553, i64 23, i64 %t8, i64 %t10) - unreachable -inrange1030: - %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 %panic1031, label %ok1032 -panic1031: - call void @finch_panic(ptr @.str.554, i64 27, ptr @.str.555) - unreachable -ok1032: - %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 %panic1033, label %ok1034 -panic1033: - call void @finch_panic(ptr @.str.556, i64 28, ptr @.str.557) - unreachable -ok1034: - %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 %then1035, label %endif1037 -then1035: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic1038, label %ok1039 -panic1038: - call void @finch_panic(ptr @.str.558, i64 29, ptr @.str.559) - unreachable -ok1039: - %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 %endif1037 -endif1037: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic1040, label %ok1041 -panic1040: - call void @finch_panic(ptr @.str.560, i64 31, ptr @.str.561) - unreachable -ok1041: - %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 %range1042, label %inrange1043 -range1042: - call void @finch_panic_index(ptr @.str.562, i64 31, i64 %t26, i64 %t28) - unreachable -inrange1043: - %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 %panic1044, label %ok1045 -panic1044: - call void @finch_panic(ptr @.str.563, i64 35, ptr @.str.564) - unreachable -ok1045: - %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 %panic1046, label %ok1047 -panic1046: - call void @finch_panic(ptr @.str.565, i64 35, ptr @.str.566) - unreachable -ok1047: - %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 %range1048, label %inrange1049 -range1048: - call void @finch_panic_index(ptr @.str.567, i64 35, i64 %t9, i64 %t11) - unreachable -inrange1049: - %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 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1050, label %ok1051 -panic1050: - call void @finch_panic(ptr @.str.568, i64 39, ptr @.str.569) - unreachable -ok1051: - %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 %panic1052, label %ok1053 -panic1052: - call void @finch_panic(ptr @.str.570, i64 39, ptr @.str.571) - unreachable -ok1053: - %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 %range1054, label %inrange1055 -range1054: - call void @finch_panic_index(ptr @.str.572, i64 39, i64 %t8, i64 %t10) - unreachable -inrange1055: - %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 %panic1056, label %ok1057 -panic1056: - call void @finch_panic(ptr @.str.573, i64 40, ptr @.str.574) - unreachable -ok1057: - %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 - ret %S.lexer.Token %t24 -} - -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 %then1058, label %endif1060 -then1058: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1061, label %ok1062 -panic1061: - call void @finch_panic(ptr @.str.575, i64 46, ptr @.str.576) - unreachable -ok1062: - %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 -endif1060: - 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 - %a17 = 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 - %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 - %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 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - store %S.lexer.Token %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.577, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then1063, label %endif1065 -then1063: - %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.578, i64 1, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.579, i64 1, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - ret { ptr, i64, i64 } %t18 -endif1065: - %t19 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.580, i64 3, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br i1 %t24, label %then1066, label %endif1068 -then1066: - ret { ptr, i64, i64 } { ptr @.str.581, i64 11, i64 0 } -endif1068: - %t25 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.582, i64 3, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - br label %logic.from1069 -logic.from1069: - br i1 %t30, label %logic.end1071, label %logic.rhs1070 -logic.rhs1070: - %t31 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.583, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.rend1072 -logic.rend1072: - br label %logic.end1071 -logic.end1071: - %t37 = phi i1 [ true, %logic.from1069 ], [ %t36, %logic.rend1072 ] - br i1 %t37, label %then1073, label %endif1075 -then1073: - ret { ptr, i64, i64 } { ptr @.str.584, i64 8, i64 0 } -endif1075: - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t39 = load { ptr, i64, i64 }, ptr %t38 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.585, i64 6, i64 0 }, ptr %a41 - %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) - %t43 = icmp ne i32 %t42, 0 - br i1 %t43, label %then1076, label %endif1078 -then1076: - ret { ptr, i64, i64 } { ptr @.str.586, i64 8, i64 0 } -endif1078: - %t44 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.587, i64 4, i64 0 }, ptr %a47 - %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - br i1 %t49, label %then1079, label %endif1081 -then1079: - ret { ptr, i64, i64 } { ptr @.str.588, i64 6, i64 0 } -endif1081: - %t50 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t51 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } { ptr @.str.589, i64 1, i64 0 }, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.590, i64 1, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - ret { ptr, i64, i64 } %t60 -} - -define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then1082, label %endif1084 -then1082: - %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.591, i64 9, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.592, i64 8, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21) - %t23 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t22) - store %S.lexer.Token %t22, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a26 - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t20, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t23, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t10, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1084 -endif1084: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - ret %S.lexer.Token %t34 -} - -define internal i1 @finch.parser.sameLine(ptr %p0) { -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 %panic1085, label %ok1086 -panic1085: - call void @finch_panic(ptr @.str.593, i64 79, ptr @.str.594) - unreachable -ok1086: - %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.from1087 -logic.from1087: - br i1 %t6, label %logic.end1089, label %logic.rhs1088 -logic.rhs1088: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1090, label %ok1091 -panic1090: - call void @finch_panic(ptr @.str.595, i64 79, ptr @.str.596) - unreachable -ok1091: - %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 %panic1092, label %ok1093 -panic1092: - call void @finch_panic(ptr @.str.597, i64 79, ptr @.str.598) - unreachable -ok1093: - %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 %range1094, label %inrange1095 -range1094: - call void @finch_panic_index(ptr @.str.599, i64 79, i64 %t13, i64 %t15) - unreachable -inrange1095: - %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.rend1096 -logic.rend1096: - br label %logic.end1089 -logic.end1089: - %t22 = phi i1 [ true, %logic.from1087 ], [ %t21, %logic.rend1096 ] - 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 %panic1097, label %ok1098 -panic1097: - call void @finch_panic(ptr @.str.600, i64 83, ptr @.str.601) - unreachable -ok1098: - %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 %panic1099, label %ok1100 -panic1099: - call void @finch_panic(ptr @.str.602, i64 83, ptr @.str.603) - unreachable -ok1100: - %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 %range1101, label %inrange1102 -range1101: - call void @finch_panic_index(ptr @.str.604, i64 83, i64 %t9, i64 %t11) - unreachable -inrange1102: - %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 %panic1103, label %ok1104 -panic1103: - call void @finch_panic(ptr @.str.605, i64 84, ptr @.str.606) - unreachable -ok1104: - %t33 = getelementptr inbounds %S.parser.Parser, ptr %t31, i32 0, i32 3 - %t34 = load i64, ptr %t33 - %t35 = insertvalue %S.ast.Node %t30, i64 %t34, 13 - call void @finch.drop.S_lexer_Token(ptr %a19) - ret %S.ast.Node %t35 -} - -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.607, i64 3, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.608, i64 5, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.609, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.610, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.613, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.614, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.615, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.616, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.617, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.618, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.619, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.620, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.621, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.622, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - 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.cond1105 -find.cond1105: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body1106, label %find.end1109 -find.body1106: - %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.hit1107, label %find.next1108 -find.hit1107: - store i64 %t30, ptr %a26 - br label %find.end1109 -find.next1108: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond1105 -find.end1109: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - call void @finch.drop.arr_str(ptr %a23) - ret i1 %t40 -} - -define internal %S.ast.Type @finch.parser.parseType(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.lexer.Token, align 16 - %a10 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.lexer.Token, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a77 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.lexer.Token, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca %S.lexer.Token, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca %S.lexer.Token, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca %S.lexer.Token, align 16 - %a165 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.623, i64 1, i64 0 }) - br i1 %t3, label %then1110, label %endif1112 -then1110: - %t4 = load ptr, ptr %a1 - %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.624, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.625, i64 36, i64 0 }) - store %S.lexer.Token %t5, ptr %a6 - call void @finch.drop.S_lexer_Token(ptr %a6) - %t7 = load ptr, ptr %a1 - %t8 = call %S.ast.Type @finch.parser.parseType(ptr %t7) - %t9 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t8) - store %S.ast.Type %t8, ptr %a10 - call void @finch.drop.S_ast_Type(ptr %a10) - ret %S.ast.Type %t9 -endif1112: - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.626, i64 5, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1113, label %endif1115 -then1113: - %t14 = load ptr, ptr %a1 - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.cur(ptr %t15) - %t17 = load ptr, ptr %a1 - %t18 = call %S.lexer.Token @finch.parser.cur(ptr %t17) - %t19 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t18) - store %S.lexer.Token %t18, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - store { ptr, i64, i64 } { ptr @.str.627, i64 11, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.628, i64 56, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.parser.fail(ptr %t14, %S.lexer.Token %t16, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t16, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1115 -endif1115: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.629, i64 3, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br label %logic.from1116 -logic.from1116: - br i1 %t45, label %logic.rhs1117, label %logic.end1118 -logic.rhs1117: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }) - br label %logic.rend1119 -logic.rend1119: - br label %logic.end1118 -logic.end1118: - %t48 = phi i1 [ false, %logic.from1116 ], [ %t47, %logic.rend1119 ] - br i1 %t48, label %then1120, label %endif1122 -then1120: - %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) - store %S.lexer.Token %t50, ptr %a51 - call void @finch.drop.S_lexer_Token(ptr %a51) - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - store %S.ast.Type %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.expect(ptr %t55, { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.632, i64 39, i64 0 }) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = load %S.ast.Type, ptr %a54 - %t59 = load ptr, ptr %a1 - %t60 = call %S.ast.Type @finch.parser.parseType(ptr %t59) - %t61 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t58, %S.ast.Type %t60) - store %S.ast.Type %t60, ptr %a62 - call void @finch.drop.S_ast_Type(ptr %a62) - call void @finch.drop.S_ast_Type(ptr %a54) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t61 -endif1122: - %t63 = load { ptr, i64, i64 }, ptr %a40 - %t64 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t63) - br i1 %t64, label %then1123, label %endif1125 -then1123: - %t65 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.633, i64 3, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.from1126 -logic.from1126: - br i1 %t69, label %logic.rhs1127, label %logic.end1128 -logic.rhs1127: - %t70 = load ptr, ptr %a1 - %t71 = call i1 @finch.parser.accept(ptr %t70, { ptr, i64, i64 } { ptr @.str.634, i64 1, i64 0 }) - br label %logic.rend1129 -logic.rend1129: - br label %logic.end1128 -logic.end1128: - %t72 = phi i1 [ false, %logic.from1126 ], [ %t71, %logic.rend1129 ] - br i1 %t72, label %then1130, label %endif1132 -then1130: - %t73 = load ptr, ptr %a1 - %t74 = call %S.ast.Type @finch.parser.parseType(ptr %t73) - %t75 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t74) - store %S.ast.Type %t74, ptr %a76 - call void @finch.drop.S_ast_Type(ptr %a76) - store %S.ast.Type %t75, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.expect(ptr %t78, { ptr, i64, i64 } { ptr @.str.635, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.636, i64 3, i64 0 }) - store %S.lexer.Token %t79, ptr %a80 - call void @finch.drop.S_lexer_Token(ptr %a80) - %t81 = load %S.ast.Type, ptr %a77 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t81 -endif1132: - %t82 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.637, i64 3, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then1133, label %endif1135 -then1133: - %t87 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.638, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t87 -endif1135: - %t88 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.639, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then1136, label %endif1138 -then1136: - %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t93 -endif1138: - %t94 = load { ptr, i64, i64 }, ptr %a40 - %t95 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t94) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t95 -endif1125: - %t96 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.641, i64 5, i64 0 }, 0 - %t97 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = insertvalue %S.ast.Type %t96, { ptr, i64, i64 } %t100, 2 - store %S.ast.Type %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.at(ptr %t103, { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }) - br label %logic.from1139 -logic.from1139: - br i1 %t104, label %logic.rhs1140, label %logic.end1141 -logic.rhs1140: - %t105 = load ptr, ptr %a1 - %t106 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t105, i64 1) - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.643, i64 5, i64 0 }, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - br label %logic.rend1142 -logic.rend1142: - br label %logic.end1141 -logic.end1141: - %t112 = phi i1 [ false, %logic.from1139 ], [ %t110, %logic.rend1142 ] - br i1 %t112, label %then1143, label %endif1145 -then1143: - %t113 = load ptr, ptr %a1 - %t114 = call %S.lexer.Token @finch.parser.next(ptr %t113) - store %S.lexer.Token %t114, ptr %a115 - call void @finch.drop.S_lexer_Token(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a40 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 3 - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t120, ptr %t117 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load ptr, ptr %a1 - %t124 = call %S.lexer.Token @finch.parser.next(ptr %t123) - %t125 = extractvalue %S.lexer.Token %t124, 1 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - store %S.lexer.Token %t124, ptr %a129 - call void @finch.drop.S_lexer_Token(ptr %a129) - %t130 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t128, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %endif1145 -endif1145: - %t133 = load ptr, ptr %a1 - %t134 = call i1 @finch.parser.at(ptr %t133, { ptr, i64, i64 } { ptr @.str.644, i64 1, i64 0 }) - br label %logic.from1146 -logic.from1146: - br i1 %t134, label %logic.rhs1147, label %logic.end1148 -logic.rhs1147: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1149 -logic.rend1149: - br label %logic.end1148 -logic.end1148: - %t140 = phi i1 [ false, %logic.from1146 ], [ %t139, %logic.rend1149 ] - br label %logic.from1150 -logic.from1150: - br i1 %t140, label %logic.rhs1151, label %logic.end1152 -logic.rhs1151: - %t141 = load ptr, ptr %a1 - %t142 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t141, i64 1) - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.645, i64 1, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) - %t146 = icmp eq i32 %t145, 0 - store { ptr, i64, i64 } %t142, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %logic.rend1153 -logic.rend1153: - br label %logic.end1152 -logic.end1152: - %t148 = phi i1 [ false, %logic.from1150 ], [ %t146, %logic.rend1153 ] - br i1 %t148, label %then1154, label %endif1156 -then1154: - %t149 = load ptr, ptr %a1 - %t150 = call %S.lexer.Token @finch.parser.next(ptr %t149) - store %S.lexer.Token %t150, ptr %a151 - call void @finch.drop.S_lexer_Token(ptr %a151) - br label %while.cond1157 -while.cond1157: - br label %while.body1158 -while.body1158: - %t152 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 1 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 - %t154 = load ptr, ptr %a1 - %t155 = call %S.ast.Type @finch.parser.parseType(ptr %t154) - %t156 = load i64, ptr %t153 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t152, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t152 - %t159 = getelementptr inbounds %S.ast.Type, ptr %t158, i64 %t156 - store %S.ast.Type %t155, ptr %t159 - store i64 %t157, ptr %t153 - %t160 = load ptr, ptr %a1 - %t161 = call i1 @finch.parser.accept(ptr %t160, { ptr, i64, i64 } { ptr @.str.646, i64 1, i64 0 }) - %t162 = xor i1 %t161, true - br i1 %t162, label %then1160, label %endif1162 -then1160: - br label %while.end1159 -endif1162: - br label %while.cond1157 -while.end1159: - %t163 = load ptr, ptr %a1 - %t164 = call %S.lexer.Token @finch.parser.expect(ptr %t163, { ptr, i64, i64 } { ptr @.str.647, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.648, i64 28, i64 0 }) - store %S.lexer.Token %t164, ptr %a165 - call void @finch.drop.S_lexer_Token(ptr %a165) - br label %endif1156 -endif1156: - %t166 = load %S.ast.Type, ptr %a102 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t166 -} - -define internal i1 @finch.parser.genericDeclAhead(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a27 = alloca i64, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.649, i64 5, i64 0 }) - %t4 = xor i1 %t3, true - br label %logic.from1163 -logic.from1163: - br i1 %t4, label %logic.end1165, label %logic.rhs1164 -logic.rhs1164: - %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.650, i64 1, i64 0 }, ptr %a8 - %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) - %t10 = icmp eq i32 %t9, 0 - store { ptr, i64, i64 } %t6, ptr %a11 - call void @finch_str_drop(ptr %a11) - br label %logic.rend1166 -logic.rend1166: - br label %logic.end1165 -logic.end1165: - %t12 = phi i1 [ true, %logic.from1163 ], [ %t10, %logic.rend1166 ] - br label %logic.from1167 -logic.from1167: - br i1 %t12, label %logic.end1169, label %logic.rhs1168 -logic.rhs1168: - %t13 = load ptr, ptr %a1 - %t14 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t13, i64 2) - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.651, i64 1, i64 0 }, ptr %a16 - %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) - %t18 = icmp ne i32 %t17, 0 - store { ptr, i64, i64 } %t14, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %logic.rend1170 -logic.rend1170: - br label %logic.end1169 -logic.end1169: - %t20 = phi i1 [ true, %logic.from1167 ], [ %t18, %logic.rend1170 ] - br i1 %t20, label %then1171, label %endif1173 -then1171: - ret i1 false -endif1173: - store i64 0, ptr %a21 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1174, label %ok1175 -panic1174: - call void @finch_panic(ptr @.str.652, i64 148, ptr @.str.653) - unreachable -ok1175: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a27 - br label %while.cond1176 -while.cond1176: - %t28 = load i64, ptr %a27 - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic1179, label %ok1180 -panic1179: - call void @finch_panic(ptr @.str.654, i64 149, ptr @.str.655) - unreachable -ok1180: - %t31 = getelementptr inbounds %S.parser.Parser, ptr %t29, i32 0, i32 0 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = icmp slt i64 %t28, %t33 - br i1 %t34, label %while.body1177, label %while.end1178 -while.body1177: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1181, label %ok1182 -panic1181: - call void @finch_panic(ptr @.str.656, i64 150, ptr @.str.657) - unreachable -ok1182: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 0 - %t38 = load i64, ptr %a27 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range1183, label %inrange1184 -range1183: - call void @finch_panic_index(ptr @.str.658, i64 150, i64 %t38, i64 %t40) - unreachable -inrange1184: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds %S.lexer.Token, ptr %t42, i64 %t38 - %t44 = getelementptr inbounds %S.lexer.Token, ptr %t43, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_copy(ptr %a47, ptr %a46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t48, ptr %a49 - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.659, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1185, label %else1186 -then1185: - %t55 = load i64, ptr %a21 - %t56 = add i64 %t55, 1 - store i64 %t56, ptr %a21 - br label %endif1187 -else1186: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.660, i64 1, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br i1 %t61, label %then1188, label %else1189 -then1188: - %t62 = load i64, ptr %a21 - %t63 = sub i64 %t62, 1 - store i64 %t63, ptr %a21 - %t64 = load i64, ptr %a21 - %t65 = icmp eq i64 %t64, 0 - br i1 %t65, label %then1191, label %endif1193 -then1191: - %t66 = load i64, ptr %a27 - %t67 = add i64 %t66, 1 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic1194, label %ok1195 -panic1194: - call void @finch_panic(ptr @.str.661, i64 156, ptr @.str.662) - unreachable -ok1195: - %t70 = getelementptr inbounds %S.parser.Parser, ptr %t68, i32 0, i32 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = icmp slt i64 %t67, %t72 - br label %logic.from1196 -logic.from1196: - br i1 %t73, label %logic.rhs1197, label %logic.end1198 -logic.rhs1197: - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic1199, label %ok1200 -panic1199: - call void @finch_panic(ptr @.str.663, i64 156, ptr @.str.664) - unreachable -ok1200: - %t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 0 - %t77 = load i64, ptr %a27 - %t78 = add i64 %t77, 1 - %t79 = load { ptr, i64, i64 }, ptr %t76 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range1201, label %inrange1202 -range1201: - call void @finch_panic_index(ptr @.str.665, i64 156, i64 %t78, i64 %t80) - unreachable -inrange1202: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds %S.lexer.Token, ptr %t82, i64 %t78 - %t84 = getelementptr inbounds %S.lexer.Token, ptr %t83, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.666, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.rend1203 -logic.rend1203: - br label %logic.end1198 -logic.end1198: - %t90 = phi i1 [ false, %logic.from1196 ], [ %t89, %logic.rend1203 ] - br label %logic.from1204 -logic.from1204: - br i1 %t90, label %logic.rhs1205, label %logic.end1206 -logic.rhs1205: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic1207, label %ok1208 -panic1207: - call void @finch_panic(ptr @.str.667, i64 156, ptr @.str.668) - unreachable -ok1208: - %t93 = getelementptr inbounds %S.parser.Parser, ptr %t91, i32 0, i32 0 - %t94 = load i64, ptr %a27 - %t95 = add i64 %t94, 1 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range1209, label %inrange1210 -range1209: - call void @finch_panic_index(ptr @.str.669, i64 156, i64 %t95, i64 %t97) - unreachable -inrange1210: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds %S.lexer.Token, ptr %t99, i64 %t95 - %t101 = getelementptr inbounds %S.lexer.Token, ptr %t100, i32 0, i32 4 - %t102 = load i1, ptr %t101 - %t103 = xor i1 %t102, true - br label %logic.rend1211 -logic.rend1211: - br label %logic.end1206 -logic.end1206: - %t104 = phi i1 [ false, %logic.from1204 ], [ %t103, %logic.rend1211 ] - call void @finch_str_drop(ptr %a49) - ret i1 %t104 -endif1193: - br label %endif1190 -else1189: - %t105 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.670, i64 3, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.from1212 -logic.from1212: - br i1 %t109, label %logic.end1214, label %logic.rhs1213 -logic.rhs1213: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic1215, label %ok1216 -panic1215: - call void @finch_panic(ptr @.str.671, i64 158, ptr @.str.672) - unreachable -ok1216: - %t112 = getelementptr inbounds %S.parser.Parser, ptr %t110, i32 0, i32 0 - %t113 = load i64, ptr %a27 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range1217, label %inrange1218 -range1217: - call void @finch_panic_index(ptr @.str.673, i64 158, i64 %t113, i64 %t115) - unreachable -inrange1218: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.lexer.Token, ptr %t117, i64 %t113 - %t119 = getelementptr inbounds %S.lexer.Token, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.from1219 -logic.from1219: - br i1 %t120, label %logic.rhs1220, label %logic.end1221 -logic.rhs1220: - %t121 = load i64, ptr %a21 - %t122 = icmp eq i64 %t121, 0 - br label %logic.rend1222 -logic.rend1222: - br label %logic.end1221 -logic.end1221: - %t123 = phi i1 [ false, %logic.from1219 ], [ %t122, %logic.rend1222 ] - br label %logic.rend1223 -logic.rend1223: - br label %logic.end1214 -logic.end1214: - %t124 = phi i1 [ true, %logic.from1212 ], [ %t123, %logic.rend1223 ] - br i1 %t124, label %then1224, label %endif1226 -then1224: - call void @finch_str_drop(ptr %a49) - ret i1 false -endif1226: - br label %endif1190 -endif1190: - br label %endif1187 -endif1187: - %t125 = load i64, ptr %a27 - %t126 = add i64 %t125, 1 - store i64 %t126, ptr %a27 - call void @finch_str_drop(ptr %a49) - br label %while.cond1176 -while.end1178: - 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 %panic1227, label %ok1228 -panic1227: - call void @finch_panic(ptr @.str.674, i64 168, ptr @.str.675) - unreachable -ok1228: - %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 %panic1229, label %ok1230 -panic1229: - call void @finch_panic(ptr @.str.676, i64 170, ptr @.str.677) - unreachable -ok1230: - %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 - %a8 = 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 i64, align 16 - %a39 = alloca i64, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t2, i64 1) - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.678, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp eq i32 %t6, 0 - store { ptr, i64, i64 } %t3, ptr %a8 - call void @finch_str_drop(ptr %a8) - br label %logic.from1231 -logic.from1231: - br i1 %t7, label %logic.end1233, label %logic.rhs1232 -logic.rhs1232: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic1234, label %ok1235 -panic1234: - call void @finch_panic(ptr @.str.679, i64 176, ptr @.str.680) - unreachable -ok1235: - %t11 = getelementptr inbounds %S.parser.Parser, ptr %t9, i32 0, i32 0 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic1236, label %ok1237 -panic1236: - call void @finch_panic(ptr @.str.681, i64 176, ptr @.str.682) - unreachable -ok1237: - %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 1 - %t15 = load i64, ptr %t14 - %t16 = add i64 %t15, 1 - %t17 = load { ptr, i64, i64 }, ptr %t11 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range1238, label %inrange1239 -range1238: - call void @finch_panic_index(ptr @.str.683, i64 176, i64 %t16, i64 %t18) - unreachable -inrange1239: - %t20 = extractvalue { ptr, i64, i64 } %t17, 0 - %t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i64 %t16 - %t22 = getelementptr inbounds %S.lexer.Token, ptr %t21, i32 0, i32 4 - %t23 = load i1, ptr %t22 - br label %logic.rend1240 -logic.rend1240: - br label %logic.end1233 -logic.end1233: - %t24 = phi i1 [ true, %logic.from1231 ], [ %t23, %logic.rend1240 ] - br label %logic.from1241 -logic.from1241: - br i1 %t24, label %logic.end1243, label %logic.rhs1242 -logic.rhs1242: - %t25 = load ptr, ptr %a1 - %t26 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t25, i64 2) - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.684, i64 1, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %logic.rend1244 -logic.rend1244: - br label %logic.end1243 -logic.end1243: - %t32 = phi i1 [ true, %logic.from1241 ], [ %t30, %logic.rend1244 ] - br i1 %t32, label %then1245, label %endif1247 -then1245: - ret i1 false -endif1247: - store i64 0, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic1248, label %ok1249 -panic1248: - call void @finch_panic(ptr @.str.685, i64 180, ptr @.str.686) - unreachable -ok1249: - %t36 = getelementptr inbounds %S.parser.Parser, ptr %t34, i32 0, i32 1 - %t37 = load i64, ptr %t36 - %t38 = add i64 %t37, 1 - store i64 %t38, ptr %a39 - br label %while.cond1250 -while.cond1250: - %t40 = load i64, ptr %a39 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic1253, label %ok1254 -panic1253: - call void @finch_panic(ptr @.str.687, i64 181, ptr @.str.688) - unreachable -ok1254: - %t43 = getelementptr inbounds %S.parser.Parser, ptr %t41, i32 0, i32 0 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - %t46 = icmp slt i64 %t40, %t45 - br i1 %t46, label %while.body1251, label %while.end1252 -while.body1251: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic1255, label %ok1256 -panic1255: - call void @finch_panic(ptr @.str.689, i64 182, ptr @.str.690) - unreachable -ok1256: - %t49 = getelementptr inbounds %S.parser.Parser, ptr %t47, i32 0, i32 0 - %t50 = load i64, ptr %a39 - %t51 = load { ptr, i64, i64 }, ptr %t49 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 %t50, %t52 - br i1 %t53, label %range1257, label %inrange1258 -range1257: - call void @finch_panic_index(ptr @.str.691, i64 182, i64 %t50, i64 %t52) - unreachable -inrange1258: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.lexer.Token, ptr %t54, i64 %t50 - %t56 = getelementptr inbounds %S.lexer.Token, ptr %t55, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_copy(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.692, i64 1, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then1259, label %else1260 -then1259: - %t67 = load i64, ptr %a33 - %t68 = add i64 %t67, 1 - store i64 %t68, ptr %a33 - br label %endif1261 -else1260: - %t69 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.693, i64 1, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp ne i32 %t72, 0 - br i1 %t73, label %then1262, label %else1263 -then1262: - %t74 = load i64, ptr %a33 - %t75 = sub i64 %t74, 1 - store i64 %t75, ptr %a33 - %t76 = load i64, ptr %a33 - %t77 = icmp eq i64 %t76, 0 - br i1 %t77, label %then1265, label %endif1267 -then1265: - %t78 = load i64, ptr %a39 - %t79 = add i64 %t78, 1 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic1268, label %ok1269 -panic1268: - call void @finch_panic(ptr @.str.694, i64 188, ptr @.str.695) - unreachable -ok1269: - %t82 = getelementptr inbounds %S.parser.Parser, ptr %t80, i32 0, i32 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - %t84 = load i64, ptr %t83 - %t85 = icmp slt i64 %t79, %t84 - br label %logic.from1270 -logic.from1270: - br i1 %t85, label %logic.rhs1271, label %logic.end1272 -logic.rhs1271: - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic1273, label %ok1274 -panic1273: - call void @finch_panic(ptr @.str.696, i64 188, ptr @.str.697) - unreachable -ok1274: - %t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 0 - %t89 = load i64, ptr %a39 - %t90 = add i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %t88 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range1275, label %inrange1276 -range1275: - call void @finch_panic_index(ptr @.str.698, i64 188, i64 %t90, i64 %t92) - unreachable -inrange1276: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds %S.lexer.Token, ptr %t94, i64 %t90 - %t96 = getelementptr inbounds %S.lexer.Token, ptr %t95, i32 0, i32 0 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.699, i64 1, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.rend1277 -logic.rend1277: - br label %logic.end1272 -logic.end1272: - %t102 = phi i1 [ false, %logic.from1270 ], [ %t101, %logic.rend1277 ] - br label %logic.from1278 -logic.from1278: - br i1 %t102, label %logic.rhs1279, label %logic.end1280 -logic.rhs1279: - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic1281, label %ok1282 -panic1281: - call void @finch_panic(ptr @.str.700, i64 188, ptr @.str.701) - unreachable -ok1282: - %t105 = getelementptr inbounds %S.parser.Parser, ptr %t103, i32 0, i32 0 - %t106 = load i64, ptr %a39 - %t107 = add i64 %t106, 1 - %t108 = load { ptr, i64, i64 }, ptr %t105 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 %t107, %t109 - br i1 %t110, label %range1283, label %inrange1284 -range1283: - call void @finch_panic_index(ptr @.str.702, i64 188, i64 %t107, i64 %t109) - unreachable -inrange1284: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.lexer.Token, ptr %t111, i64 %t107 - %t113 = getelementptr inbounds %S.lexer.Token, ptr %t112, i32 0, i32 4 - %t114 = load i1, ptr %t113 - %t115 = xor i1 %t114, true - br label %logic.rend1285 -logic.rend1285: - br label %logic.end1280 -logic.end1280: - %t116 = phi i1 [ false, %logic.from1278 ], [ %t115, %logic.rend1285 ] - call void @finch_str_drop(ptr %a61) - ret i1 %t116 -endif1267: - br label %endif1264 -else1263: - %t117 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.703, i64 3, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.from1286 -logic.from1286: - br i1 %t121, label %logic.end1288, label %logic.rhs1287 -logic.rhs1287: - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic1289, label %ok1290 -panic1289: - call void @finch_panic(ptr @.str.704, i64 190, ptr @.str.705) - unreachable -ok1290: - %t124 = getelementptr inbounds %S.parser.Parser, ptr %t122, i32 0, i32 0 - %t125 = load i64, ptr %a39 - %t126 = load { ptr, i64, i64 }, ptr %t124 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 %t125, %t127 - br i1 %t128, label %range1291, label %inrange1292 -range1291: - call void @finch_panic_index(ptr @.str.706, i64 190, i64 %t125, i64 %t127) - unreachable -inrange1292: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.lexer.Token, ptr %t129, i64 %t125 - %t131 = getelementptr inbounds %S.lexer.Token, ptr %t130, i32 0, i32 4 - %t132 = load i1, ptr %t131 - br label %logic.rend1293 -logic.rend1293: - br label %logic.end1288 -logic.end1288: - %t133 = phi i1 [ true, %logic.from1286 ], [ %t132, %logic.rend1293 ] - br i1 %t133, label %then1294, label %endif1296 -then1294: - call void @finch_str_drop(ptr %a61) - ret i1 false -endif1296: - br label %endif1264 -endif1264: - br label %endif1261 -endif1261: - %t134 = load i64, ptr %a39 - %t135 = add i64 %t134, 1 - store i64 %t135, ptr %a39 - call void @finch_str_drop(ptr %a61) - br label %while.cond1250 -while.end1252: - 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 - %a12 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.lexer.Token, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.lexer.Token, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2) - br i1 %t3, label %then1297, label %endif1299 -then1297: - ret i1 true -endif1299: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }) - br i1 %t5, label %then1300, label %endif1302 -then1300: - %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.708, i64 1, i64 0 }, ptr %a9 - %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) - %t11 = icmp ne i32 %t10, 0 - store { ptr, i64, i64 } %t7, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret i1 %t11 -endif1302: - %t13 = load ptr, ptr %a1 - %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 }) - %t15 = xor i1 %t14, true - br i1 %t15, label %then1303, label %endif1305 -then1303: - ret i1 false -endif1305: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t16, i64 1) - store { ptr, i64, i64 } %t17, ptr %a18 - %t19 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.710, i64 5, i64 0 }, ptr %a21 - %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) - %t23 = icmp ne i32 %t22, 0 - br i1 %t23, label %then1306, label %endif1308 -then1306: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic1309, label %ok1310 -panic1309: - call void @finch_panic(ptr @.str.711, i64 210, ptr @.str.712) - unreachable -ok1310: - %t26 = getelementptr inbounds %S.parser.Parser, ptr %t24, i32 0, i32 0 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1311, label %ok1312 -panic1311: - call void @finch_panic(ptr @.str.713, i64 210, ptr @.str.714) - unreachable -ok1312: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = add i64 %t30, 1 - %t32 = load { ptr, i64, i64 }, ptr %t26 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range1313, label %inrange1314 -range1313: - call void @finch_panic_index(ptr @.str.715, i64 210, i64 %t31, i64 %t33) - unreachable -inrange1314: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.lexer.Token, ptr %t36, i32 0, i32 4 - %t38 = load i1, ptr %t37 - %t39 = xor i1 %t38, true - call void @finch_str_drop(ptr %a18) - ret i1 %t39 -endif1308: - %t40 = load ptr, ptr %a1 - %t41 = call %S.lexer.Token @finch.parser.cur(ptr %t40) - %t42 = extractvalue %S.lexer.Token %t41, 1 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch_str_copy(ptr %a44, ptr %a43) - %t45 = load { ptr, i64, i64 }, ptr %a44 - store %S.lexer.Token %t41, ptr %a46 - call void @finch.drop.S_lexer_Token(ptr %a46) - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.716, i64 3, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - store { ptr, i64, i64 } %t45, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %logic.from1315 -logic.from1315: - br i1 %t50, label %logic.end1317, label %logic.rhs1316 -logic.rhs1316: - %t52 = load ptr, ptr %a1 - %t53 = call %S.lexer.Token @finch.parser.cur(ptr %t52) - %t54 = extractvalue %S.lexer.Token %t53, 1 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_copy(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store %S.lexer.Token %t53, ptr %a58 - call void @finch.drop.S_lexer_Token(ptr %a58) - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.717, i64 3, i64 0 }, ptr %a60 - %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) - %t62 = icmp ne i32 %t61, 0 - store { ptr, i64, i64 } %t57, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %logic.rend1318 -logic.rend1318: - br label %logic.end1317 -logic.end1317: - %t64 = phi i1 [ true, %logic.from1315 ], [ %t62, %logic.rend1318 ] - br label %logic.from1319 -logic.from1319: - br i1 %t64, label %logic.rhs1320, label %logic.end1321 -logic.rhs1320: - %t65 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.718, i64 1, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.rend1322 -logic.rend1322: - br label %logic.end1321 -logic.end1321: - %t70 = phi i1 [ false, %logic.from1319 ], [ %t69, %logic.rend1322 ] - br i1 %t70, label %then1323, label %endif1325 -then1323: - call void @finch_str_drop(ptr %a18) - ret i1 true -endif1325: - %t71 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t71, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.719, i64 1, i64 0 }, ptr %a73 - %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) - %t75 = icmp ne i32 %t74, 0 - br label %logic.from1326 -logic.from1326: - br i1 %t75, label %logic.rhs1327, label %logic.end1328 -logic.rhs1327: - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t76, i64 2) - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.720, i64 5, i64 0 }, ptr %a79 - %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) - %t81 = icmp ne i32 %t80, 0 - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %logic.rend1329 -logic.rend1329: - br label %logic.end1328 -logic.end1328: - %t83 = phi i1 [ false, %logic.from1326 ], [ %t81, %logic.rend1329 ] - br label %logic.from1330 -logic.from1330: - br i1 %t83, label %logic.rhs1331, label %logic.end1332 -logic.rhs1331: - %t84 = load ptr, ptr %a1 - %t85 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t84, i64 3) - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.721, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %logic.rend1333 -logic.rend1333: - br label %logic.end1332 -logic.end1332: - %t91 = phi i1 [ false, %logic.from1330 ], [ %t89, %logic.rend1333 ] - br label %logic.from1334 -logic.from1334: - br i1 %t91, label %logic.rhs1335, label %logic.end1336 -logic.rhs1335: - %t92 = load ptr, ptr %a1 - %t93 = icmp eq ptr %t92, null - br i1 %t93, label %panic1337, label %ok1338 -panic1337: - call void @finch_panic(ptr @.str.722, i64 215, ptr @.str.723) - unreachable -ok1338: - %t94 = getelementptr inbounds %S.parser.Parser, ptr %t92, i32 0, i32 0 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic1339, label %ok1340 -panic1339: - call void @finch_panic(ptr @.str.724, i64 215, ptr @.str.725) - unreachable -ok1340: - %t97 = getelementptr inbounds %S.parser.Parser, ptr %t95, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = add i64 %t98, 3 - %t100 = load { ptr, i64, i64 }, ptr %t94 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range1341, label %inrange1342 -range1341: - call void @finch_panic_index(ptr @.str.726, i64 215, i64 %t99, i64 %t101) - unreachable -inrange1342: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.lexer.Token, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.lexer.Token, ptr %t104, i32 0, i32 4 - %t106 = load i1, ptr %t105 - %t107 = xor i1 %t106, true - br label %logic.rend1343 -logic.rend1343: - br label %logic.end1336 -logic.end1336: - %t108 = phi i1 [ false, %logic.from1334 ], [ %t107, %logic.rend1343 ] - call void @finch_str_drop(ptr %a18) - ret i1 %t108 -} - -define internal void @finch.parser.endOfStatement(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a10 = alloca %S.lexer.Token, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }) - br label %logic.from1344 -logic.from1344: - br i1 %t3, label %logic.end1346, label %logic.rhs1345 -logic.rhs1345: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.728, i64 3, i64 0 }) - br label %logic.rend1347 -logic.rend1347: - br label %logic.end1346 -logic.end1346: - %t6 = phi i1 [ true, %logic.from1344 ], [ %t5, %logic.rend1347 ] - br label %logic.from1348 -logic.from1348: - br i1 %t6, label %logic.end1350, label %logic.rhs1349 -logic.rhs1349: - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.cur(ptr %t7) - %t9 = extractvalue %S.lexer.Token %t8, 4 - store %S.lexer.Token %t8, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %logic.rend1351 -logic.rend1351: - br label %logic.end1350 -logic.end1350: - %t11 = phi i1 [ true, %logic.from1348 ], [ %t9, %logic.rend1351 ] - br i1 %t11, label %then1352, label %endif1354 -then1352: - ret void -endif1354: - %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 %S.lexer.Token %t16, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - store { ptr, i64, i64 } { ptr @.str.729, i64 11, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.730, i64 37, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t28) - store %S.lexer.Token %t14, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - call void @finch_str_drop(ptr %a30) - ret void -} - -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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca %S.lexer.Token, align 16 - %a87 = alloca %S.lexer.Token, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca %S.lexer.Token, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca i1, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca %S.ast.Node, align 16 - %a170 = alloca %S.ast.Node, align 16 - %a171 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1355 -while.cond1355: - %t3 = load ptr, ptr %a1 - %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.731, i64 3, i64 0 }) - %t5 = xor i1 %t4, true - br i1 %t5, label %while.body1356, label %while.end1357 -while.body1356: - %t6 = load ptr, ptr %a1 - %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.732, i64 6, i64 0 }) - br i1 %t7, label %then1358, label %else1359 -then1358: - %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.733, i64 6, i64 0 }) - br i1 %t12, label %then1361, label %else1362 -then1361: - %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 %panic1364, label %ok1365 -panic1364: - call void @finch_panic(ptr @.str.734, i64 233, ptr @.str.735) - unreachable -ok1365: - %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.736, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - %t23 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 2 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.737, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - %t48 = load i64, ptr %t14 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t13, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t13 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t14 - %t52 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.next(ptr %t54) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load i64, ptr %t53 - %t62 = add i64 %t61, 1 - call void @finch_arr_reserve(ptr %t52, i64 %t62, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t63 = load ptr, ptr %t52 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i64 %t61 - store { ptr, i64, i64 } %t59, ptr %t64 - store i64 %t62, ptr %t53 - br label %endif1363 -else1362: - %t65 = load ptr, ptr %a1 - %t66 = call i1 @finch.parser.at(ptr %t65, { ptr, i64, i64 } { ptr @.str.738, i64 5, i64 0 }) - %t67 = xor i1 %t66, true - br i1 %t67, label %then1366, label %endif1368 -then1366: - %t68 = load ptr, ptr %a1 - %t69 = load %S.lexer.Token, ptr %a10 - call void @finch.parser.fail(ptr %t68, %S.lexer.Token %t69, { ptr, i64, i64 } { ptr @.str.739, i64 51, i64 0 }) - br label %endif1368 -endif1368: - %t70 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = call %S.lexer.Token @finch.parser.next(ptr %t72) - %t74 = extractvalue %S.lexer.Token %t73, 1 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_copy(ptr %a76, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store %S.lexer.Token %t73, ptr %a78 - call void @finch.drop.S_lexer_Token(ptr %a78) - %t79 = load i64, ptr %t71 - %t80 = add i64 %t79, 1 - call void @finch_arr_reserve(ptr %t70, i64 %t80, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t81 = load ptr, ptr %t70 - %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i64 %t79 - store { ptr, i64, i64 } %t77, ptr %t82 - store i64 %t80, ptr %t71 - br label %endif1363 -endif1363: - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %endif1360 -else1359: - %t83 = load ptr, ptr %a1 - %t84 = call i1 @finch.parser.at(ptr %t83, { ptr, i64, i64 } { ptr @.str.740, i64 4, i64 0 }) - br i1 %t84, label %then1369, label %else1370 -then1369: - %t85 = load ptr, ptr %a1 - %t86 = call %S.lexer.Token @finch.parser.next(ptr %t85) - store %S.lexer.Token %t86, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = call %S.lexer.Token @finch.parser.expect(ptr %t88, { ptr, i64, i64 } { ptr @.str.741, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.742, i64 42, i64 0 }) - %t90 = extractvalue %S.lexer.Token %t89, 1 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_copy(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - store %S.lexer.Token %t89, ptr %a94 - call void @finch.drop.S_lexer_Token(ptr %a94) - store { ptr, i64, i64 } %t93, ptr %a95 - %t96 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.744, i64 2, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_ends(ptr %a97, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.from1372 -logic.from1372: - br i1 %t101, label %logic.end1374, label %logic.rhs1373 -logic.rhs1373: - %t102 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.746, i64 2, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_ends(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.rend1375 -logic.rend1375: - br label %logic.end1374 -logic.end1374: - %t108 = phi i1 [ true, %logic.from1372 ], [ %t107, %logic.rend1375 ] - br label %logic.from1376 -logic.from1376: - br i1 %t108, label %logic.end1378, label %logic.rhs1377 -logic.rhs1377: - %t109 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.748, i64 2, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_ends(ptr %a110, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.rend1379 -logic.rend1379: - br label %logic.end1378 -logic.end1378: - %t115 = phi i1 [ true, %logic.from1376 ], [ %t114, %logic.rend1379 ] - store i1 %t115, ptr %a116 - %t117 = load i1, ptr %a116 - %t118 = xor i1 %t117, true - br label %logic.from1380 -logic.from1380: - br i1 %t118, label %logic.rhs1381, label %logic.end1382 -logic.rhs1381: - %t119 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.750, i64 3, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br label %logic.from1383 -logic.from1383: - br i1 %t124, label %logic.end1385, label %logic.rhs1384 -logic.rhs1384: - %t125 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.752, i64 3, i64 0 }, ptr %a128 - %t129 = call i64 @finch_str_find(ptr %a126, ptr %a128) - %t130 = icmp sge i64 %t129, 0 - br label %logic.rend1386 -logic.rend1386: - br label %logic.end1385 -logic.end1385: - %t131 = phi i1 [ true, %logic.from1383 ], [ %t130, %logic.rend1386 ] - br label %logic.from1387 -logic.from1387: - br i1 %t131, label %logic.end1389, label %logic.rhs1388 -logic.rhs1388: - %t132 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, ptr %a135 - %t136 = call i64 @finch_str_find(ptr %a133, ptr %a135) - %t137 = icmp sge i64 %t136, 0 - br label %logic.rend1390 -logic.rend1390: - br label %logic.end1389 -logic.end1389: - %t138 = phi i1 [ true, %logic.from1387 ], [ %t137, %logic.rend1390 ] - br label %logic.rend1391 -logic.rend1391: - br label %logic.end1382 -logic.end1382: - %t139 = phi i1 [ false, %logic.from1380 ], [ %t138, %logic.rend1391 ] - br i1 %t139, label %then1392, label %endif1394 -then1392: - %t140 = load ptr, ptr %a1 - %t141 = load %S.lexer.Token, ptr %a87 - call void @finch.parser.fail(ptr %t140, %S.lexer.Token %t141, { ptr, i64, i64 } { ptr @.str.755, i64 65, i64 0 }) - br label %endif1394 -endif1394: - %t142 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1 - %t144 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch_str_copy(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load i64, ptr %t143 - %t149 = add i64 %t148, 1 - call void @finch_arr_reserve(ptr %t142, i64 %t149, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t150 = load ptr, ptr %t142 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - store { ptr, i64, i64 } %t147, ptr %t151 - store i64 %t149, ptr %t143 - call void @finch_str_drop(ptr %a95) - call void @finch.drop.S_lexer_Token(ptr %a87) - br label %endif1371 -else1370: - %t152 = load ptr, ptr %a1 - %t153 = call i1 @finch.parser.at(ptr %t152, { ptr, i64, i64 } { ptr @.str.756, i64 6, i64 0 }) - br i1 %t153, label %then1395, label %else1396 -then1395: - %t154 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.ast.Node @finch.parser.parseStruct(ptr %t156) - %t158 = load i64, ptr %t155 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %t154 - %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 - store %S.ast.Node %t157, ptr %t161 - store i64 %t159, ptr %t155 - br label %endif1397 -else1396: - %t162 = load ptr, ptr %a1 - %t163 = call i1 @finch.parser.at(ptr %t162, { ptr, i64, i64 } { ptr @.str.757, i64 4, i64 0 }) - br i1 %t163, label %then1398, label %else1399 -then1398: - %t164 = load ptr, ptr %a1 - %t165 = call %S.ast.Node @finch.parser.parseEnum(ptr %t164) - store %S.ast.Node %t165, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Node, ptr %a166 - store %S.ast.Node %t169, ptr %a170 - call void @finch.copy.S_ast_Node(ptr %a171, ptr %a170) - %t172 = load %S.ast.Node, ptr %a171 - %t173 = load i64, ptr %t168 - %t174 = add i64 %t173, 1 - call void @finch_arr_reserve(ptr %t167, i64 %t174, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t175 = load ptr, ptr %t167 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t173 - store %S.ast.Node %t172, ptr %t176 - store i64 %t174, ptr %t168 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a166, i32 0, i32 6 - %t178 = load i1, ptr %t177 - br i1 %t178, label %then1401, label %endif1403 -then1401: - %t179 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = load %S.ast.Node, ptr %a166 - %t182 = call %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %t181) - %t183 = load i64, ptr %t180 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t179, i64 %t184, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.ast.Node, ptr %t185, i64 %t183 - store %S.ast.Node %t182, ptr %t186 - store i64 %t184, ptr %t180 - br label %endif1403 -endif1403: - call void @finch.drop.S_ast_Node(ptr %a166) - br label %endif1400 -else1399: - %t187 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load ptr, ptr %a1 - %t190 = call %S.ast.Node @finch.parser.parseFn(ptr %t189) - %t191 = load i64, ptr %t188 - %t192 = add i64 %t191, 1 - call void @finch_arr_reserve(ptr %t187, i64 %t192, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t193 = load ptr, ptr %t187 - %t194 = getelementptr inbounds %S.ast.Node, ptr %t193, i64 %t191 - store %S.ast.Node %t190, ptr %t194 - store i64 %t192, ptr %t188 - br label %endif1400 -endif1400: - br label %endif1397 -endif1397: - br label %endif1371 -endif1371: - br label %endif1360 -endif1360: - br label %while.cond1355 -while.end1357: - %t195 = load %S.ast.Program, ptr %a2 - ret %S.ast.Program %t195 -} - -define internal %S.ast.Node @finch.parser.parseEnum(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a32 = alloca %S.ast.Node, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Type, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a72 = alloca %S.lexer.Token, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.lexer.Token, align 16 - %a113 = 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 - %a125 = alloca %S.lexer.Token, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.ast.Node, align 16 - %a138 = alloca %S.ast.Node, align 16 - %a150 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i64, align 16 - %a182 = alloca %S.ast.Node, 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 - %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 - %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 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.lexer.Token, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.758, i64 4, i64 0 }) - store %S.ast.Node %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.759, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.760, i64 6, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.761, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.762, i64 12, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.763, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.764, i64 3, i64 0 }) - store %S.lexer.Token %t19, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - br label %while.cond1404 -while.cond1404: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.765, i64 1, i64 0 }) - %t23 = xor i1 %t22, true - br i1 %t23, label %while.body1405, label %while.end1406 -while.body1405: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.766, i64 3, i64 0 }) - br i1 %t25, label %then1407, label %endif1409 -then1407: - %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.767, i64 37, i64 0 }) - store %S.lexer.Token %t28, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - br label %endif1409 -endif1409: - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.node(ptr %t30, { ptr, i64, i64 } { ptr @.str.768, i64 7, i64 0 }) - store %S.ast.Node %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.expect(ptr %t33, { ptr, i64, i64 } { ptr @.str.769, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.770, i64 24, i64 0 }) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t38, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = call i1 @finch.parser.accept(ptr %t43, { ptr, i64, i64 } { ptr @.str.771, i64 1, i64 0 }) - br i1 %t44, label %then1410, label %endif1412 -then1410: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - store i1 true, ptr %t45 - br label %while.cond1413 -while.cond1413: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.772, i64 1, i64 0 }) - %t48 = xor i1 %t47, true - br i1 %t48, label %while.body1414, label %while.end1415 -while.body1414: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.node(ptr %t49, { ptr, i64, i64 } { ptr @.str.773, i64 5, i64 0 }) - store %S.ast.Node %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - %t54 = getelementptr inbounds %S.ast.Node, ptr %a51, i32 0, i32 5 - %t55 = load %S.ast.Type, ptr %t54 - store %S.ast.Type %t53, ptr %t54 - store %S.ast.Type %t55, ptr %a56 - call void @finch.drop.S_ast_Type(ptr %a56) - %t57 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = load %S.ast.Node, ptr %a51 - store %S.ast.Node %t59, ptr %a60 - call void @finch.copy.S_ast_Node(ptr %a61, ptr %a60) - %t62 = load %S.ast.Node, ptr %a61 - %t63 = load i64, ptr %t58 - %t64 = add i64 %t63, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t64, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t65 = load ptr, ptr %t57 - %t66 = getelementptr inbounds %S.ast.Node, ptr %t65, i64 %t63 - store %S.ast.Node %t62, ptr %t66 - store i64 %t64, ptr %t58 - %t67 = load ptr, ptr %a1 - %t68 = call i1 @finch.parser.accept(ptr %t67, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }) - %t69 = xor i1 %t68, true - br i1 %t69, label %then1416, label %endif1418 -then1416: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.end1415 -endif1418: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.cond1413 -while.end1415: - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.775, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.776, i64 35, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - %t73 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %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 %then1419, label %endif1421 -then1419: - %t77 = load ptr, ptr %a1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.cur(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } { ptr @.str.777, i64 12, 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.778, i64 27, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t90, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t90, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.779, i64 20, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.parser.fail(ptr %t77, %S.lexer.Token %t79, { ptr, i64, i64 } %t102) - store %S.lexer.Token %t79, ptr %a103 - call void @finch.drop.S_lexer_Token(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1421 -endif1421: - br label %endif1412 -endif1412: - %t105 = load ptr, ptr %a1 - %t106 = call i1 @finch.parser.accept(ptr %t105, { ptr, i64, i64 } { ptr @.str.780, i64 1, i64 0 }) - br i1 %t106, label %then1422, label %endif1424 -then1422: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then1425, label %endif1427 -then1425: - %t109 = load ptr, ptr %a1 - %t110 = load ptr, ptr %a1 - %t111 = call %S.lexer.Token @finch.parser.cur(ptr %t110) - call void @finch.parser.fail(ptr %t109, %S.lexer.Token %t111, { ptr, i64, i64 } { ptr @.str.781, i64 52, i64 0 }) - store %S.lexer.Token %t111, ptr %a112 - call void @finch.drop.S_lexer_Token(ptr %a112) - br label %endif1427 -endif1427: - store { ptr, i64, i64 } { ptr @.str.782, i64 0, i64 0 }, ptr %a113 - %t114 = load ptr, ptr %a1 - %t115 = call i1 @finch.parser.accept(ptr %t114, { ptr, i64, i64 } { ptr @.str.783, i64 1, i64 0 }) - br i1 %t115, label %then1428, label %endif1430 -then1428: - %t116 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.784, i64 1, i64 0 }, ptr %a113 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif1430 -endif1430: - %t118 = load { ptr, i64, i64 }, ptr %a113 - %t119 = load ptr, ptr %a1 - %t120 = call %S.lexer.Token @finch.parser.expect(ptr %t119, { ptr, i64, i64 } { ptr @.str.785, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.786, i64 30, i64 0 }) - %t121 = extractvalue %S.lexer.Token %t120, 1 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - store %S.lexer.Token %t120, ptr %a125 - call void @finch.drop.S_lexer_Token(ptr %a125) - store { ptr, i64, i64 } %t118, ptr %a127 - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %t131 - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a113) - br label %endif1424 -endif1424: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load %S.ast.Node, ptr %a32 - store %S.ast.Node %t136, ptr %a137 - call void @finch.copy.S_ast_Node(ptr %a138, ptr %a137) - %t139 = load %S.ast.Node, 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 (%S.ast.Node, ptr null, i32 1) to i64)) - %t142 = load ptr, ptr %t134 - %t143 = getelementptr inbounds %S.ast.Node, ptr %t142, i64 %t140 - store %S.ast.Node %t139, ptr %t143 - store i64 %t141, ptr %t135 - %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.accept(ptr %t144, { ptr, i64, i64 } { ptr @.str.787, i64 1, i64 0 }) - %t146 = xor i1 %t145, true - br i1 %t146, label %then1431, label %endif1433 -then1431: - %t147 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t147) - br label %endif1433 -endif1433: - call void @finch.drop.S_ast_Node(ptr %a32) - br label %while.cond1404 -while.end1406: - %t148 = load ptr, ptr %a1 - %t149 = call %S.lexer.Token @finch.parser.next(ptr %t148) - store %S.lexer.Token %t149, ptr %a150 - call void @finch.drop.S_lexer_Token(ptr %a150) - %t151 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = icmp eq i64 %t153, 0 - br i1 %t154, label %then1434, label %endif1436 -then1434: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.lexer.Token @finch.parser.cur(ptr %t156) - %t158 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } { ptr @.str.788, i64 9, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.789, i64 16, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.parser.fail(ptr %t155, %S.lexer.Token %t157, { ptr, i64, i64 } %t168) - store %S.lexer.Token %t157, ptr %a169 - call void @finch.drop.S_lexer_Token(ptr %a169) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1436 -endif1436: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t172 = load i1, ptr %t171 - br i1 %t172, label %then1437, label %endif1439 -then1437: - %t173 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - store i64 0, ptr %a174 - br label %each.cond1440 -each.cond1440: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %a174 - %t178 = icmp slt i64 %t177, %t176 - br i1 %t178, label %each.body1441, label %each.end1443 -each.body1441: - %t179 = load ptr, ptr %t173 - %t180 = getelementptr inbounds %S.ast.Node, ptr %t179, i64 %t177 - %t181 = load %S.ast.Node, ptr %t180 - store %S.ast.Node %t181, ptr %a182 - %t183 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load i64, ptr %t184 - %t186 = icmp sgt i64 %t185, 0 - br i1 %t186, label %then1444, label %endif1446 -then1444: - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = call %S.lexer.Token @finch.parser.cur(ptr %t188) - %t190 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - store { ptr, i64, i64 } { ptr @.str.790, i64 54, i64 0 }, 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.791, i64 3, i64 0 }, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - %t201 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %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) - store { ptr, i64, i64 } %t200, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.792, i64 1, i64 0 }, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.parser.fail(ptr %t187, %S.lexer.Token %t189, { ptr, i64, i64 } %t212) - store %S.lexer.Token %t189, ptr %a213 - call void @finch.drop.S_lexer_Token(ptr %a213) - store { ptr, i64, i64 } %t212, ptr %a214 - call void @finch_str_drop(ptr %a214) - br label %endif1446 -endif1446: - br label %each.step1442 -each.step1442: - %t215 = load i64, ptr %a174 - %t216 = add i64 %t215, 1 - store i64 %t216, ptr %a174 - br label %each.cond1440 -each.end1443: - br label %endif1439 -endif1439: - %t217 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t217 -} - -define internal %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %p0) { -entry: - %a1 = alloca %S.ast.Node, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca %S.ast.Node, align 16 - %a30 = alloca %S.ast.Node, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a46 = alloca i64, align 16 - %a54 = alloca %S.ast.Node, align 16 - %a58 = alloca 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a98 = alloca %S.ast.Type, align 16 - %a99 = alloca %S.ast.Type, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a107 = alloca %S.ast.Node, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.793, i64 6, i64 0 }, 0 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a1, 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 - %t8 = insertvalue %S.ast.Node %t2, { ptr, i64, i64 } %t7, 1 - %t9 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t10 = load i64, ptr %t9 - %t11 = insertvalue %S.ast.Node %t8, i64 %t10, 11 - %t12 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t13 = load i64, ptr %t12 - %t14 = insertvalue %S.ast.Node %t11, i64 %t13, 12 - %t15 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t16 = load i64, ptr %t15 - %t17 = insertvalue %S.ast.Node %t14, i64 %t16, 13 - store %S.ast.Node %t17, ptr %a18 - %t19 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.794, i64 5, i64 0 }, 0 - %t20 = insertvalue %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.795, i64 3, i64 0 }, 1 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t22 = load i64, ptr %t21 - %t23 = insertvalue %S.ast.Node %t20, i64 %t22, 11 - %t24 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t25 = load i64, ptr %t24 - %t26 = insertvalue %S.ast.Node %t23, i64 %t25, 12 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t28 = load i64, ptr %t27 - %t29 = insertvalue %S.ast.Node %t26, i64 %t28, 13 - store %S.ast.Node %t29, ptr %a30 - %t31 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.796, i64 3, i64 0 }) - %t32 = getelementptr inbounds %S.ast.Node, ptr %a30, i32 0, i32 5 - %t33 = load %S.ast.Type, ptr %t32 - store %S.ast.Type %t31, ptr %t32 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - %t35 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Node, ptr %a30 - store %S.ast.Node %t37, ptr %a38 - call void @finch.copy.S_ast_Node(ptr %a39, ptr %a38) - %t40 = load %S.ast.Node, ptr %a39 - %t41 = load i64, ptr %t36 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %t35, i64 %t42, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - store %S.ast.Node %t40, ptr %t44 - store i64 %t42, ptr %t36 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a46 - br label %each.cond1447 -each.cond1447: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t48 = load i64, ptr %t47 - %t49 = load i64, ptr %a46 - %t50 = icmp slt i64 %t49, %t48 - br i1 %t50, label %each.body1448, label %each.end1450 -each.body1448: - %t51 = load ptr, ptr %t45 - %t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t49 - %t53 = load %S.ast.Node, ptr %t52 - store %S.ast.Node %t53, ptr %a54 - %t55 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i32 0, i32 1 - %t57 = load i64, ptr %t56 - store i64 0, ptr %a58 - br label %for.cond1451 -for.cond1451: - %t59 = load i64, ptr %a58 - %t60 = icmp slt i64 %t59, %t57 - br i1 %t60, label %for.body1452, label %for.end1454 -for.body1452: - %t61 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.797, i64 5, i64 0 }, 0 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.798, 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 = load i64, ptr %a58 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = insertvalue %S.ast.Node %t61, { ptr, i64, i64 } %t76, 1 - %t78 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 11 - %t79 = load i64, ptr %t78 - %t80 = insertvalue %S.ast.Node %t77, i64 %t79, 11 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 12 - %t82 = load i64, ptr %t81 - %t83 = insertvalue %S.ast.Node %t80, i64 %t82, 12 - %t84 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 13 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.ast.Node %t83, i64 %t85, 13 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t89 = load i64, ptr %a58 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range1455, label %inrange1456 -range1455: - call void @finch_panic_index(ptr @.str.799, i64 333, i64 %t89, i64 %t91) - unreachable -inrange1456: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.ast.Node, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.ast.Node, ptr %t94, i32 0, i32 5 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - store %S.ast.Type %t96, ptr %a98 - call void @finch.copy.S_ast_Type(ptr %a99, ptr %a98) - %t100 = load %S.ast.Type, ptr %a99 - %t101 = load %S.ast.Type, ptr %t97 - store %S.ast.Type %t100, ptr %t97 - store %S.ast.Type %t101, ptr %a102 - call void @finch.drop.S_ast_Type(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load %S.ast.Node, ptr %a87 - store %S.ast.Node %t105, ptr %a106 - call void @finch.copy.S_ast_Node(ptr %a107, ptr %a106) - %t108 = load %S.ast.Node, ptr %a107 - %t109 = load i64, ptr %t104 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t103, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t103 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t104 - call void @finch.drop.S_ast_Node(ptr %a87) - br label %for.step1453 -for.step1453: - %t113 = load i64, ptr %a58 - %t114 = add i64 %t113, 1 - store i64 %t114, ptr %a58 - br label %for.cond1451 -for.end1454: - br label %each.step1449 -each.step1449: - %t115 = load i64, ptr %a46 - %t116 = add i64 %t115, 1 - store i64 %t116, ptr %a46 - br label %each.cond1447 -each.end1450: - %t117 = load %S.ast.Node, ptr %a18 - call void @finch.drop.S_ast_Node(ptr %a30) - ret %S.ast.Node %t117 -} - -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 - %a10 = alloca %S.lexer.Token, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a26 = alloca i64, align 16 - %a38 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a63 = alloca %S.ast.Node, align 16 - %a71 = alloca %S.lexer.Token, align 16 - %a105 = alloca %S.ast.Node, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a122 = alloca %S.lexer.Token, align 16 - %a130 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.800, 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.801, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.802, i64 7, i64 0 }) - store %S.lexer.Token %t9, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - %t11 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.parseExpr(ptr %t13) - %t15 = load i64, ptr %t12 - %t16 = add i64 %t15, 1 - call void @finch_arr_reserve(ptr %t11, i64 %t16, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t17 = load ptr, ptr %t11 - %t18 = getelementptr inbounds %S.ast.Node, ptr %t17, i64 %t15 - store %S.ast.Node %t14, ptr %t18 - store i64 %t16, ptr %t12 - %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.803, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.804, i64 3, i64 0 }) - store %S.lexer.Token %t20, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1457, label %ok1458 -panic1457: - call void @finch_panic(ptr @.str.805, i64 348, ptr @.str.806) - unreachable -ok1458: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 2 - %t25 = load i64, ptr %t24 - store i64 %t25, ptr %a26 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1459, label %ok1460 -panic1459: - call void @finch_panic(ptr @.str.807, i64 349, ptr @.str.808) - unreachable -ok1460: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 2 - store i64 0, ptr %t29 - br label %while.cond1461 -while.cond1461: - %t30 = load ptr, ptr %a1 - %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.809, i64 1, i64 0 }) - %t32 = xor i1 %t31, true - br i1 %t32, label %while.body1462, label %while.end1463 -while.body1462: - %t33 = load ptr, ptr %a1 - %t34 = call i1 @finch.parser.at(ptr %t33, { ptr, i64, i64 } { ptr @.str.810, i64 3, i64 0 }) - br i1 %t34, label %then1464, label %endif1466 -then1464: - %t35 = load ptr, ptr %a1 - %t36 = load ptr, ptr %a1 - %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) - call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } { ptr @.str.811, i64 37, i64 0 }) - store %S.lexer.Token %t37, ptr %a38 - call void @finch.drop.S_lexer_Token(ptr %a38) - br label %endif1466 -endif1466: - %t39 = load ptr, ptr %a1 - %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.812, i64 3, i64 0 }) - store %S.ast.Node %t40, ptr %a41 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.node(ptr %t42, { ptr, i64, i64 } { ptr @.str.813, i64 8, i64 0 }) - store %S.ast.Node %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = call i1 @finch.parser.accept(ptr %t45, { ptr, i64, i64 } { ptr @.str.814, i64 4, i64 0 }) - br i1 %t46, label %then1467, label %else1468 -then1467: - %t47 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 6 - store i1 true, ptr %t47 - br label %endif1469 -else1468: - br label %while.cond1470 -while.cond1470: - br label %while.body1471 -while.body1471: - %t48 = getelementptr inbounds %S.ast.Node, ptr %a44, i32 0, i32 9 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load ptr, ptr %a1 - %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t48 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 - store %S.ast.Node %t51, ptr %t55 - store i64 %t53, ptr %t49 - %t56 = load ptr, ptr %a1 - %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.815, i64 1, i64 0 }) - %t58 = xor i1 %t57, true - br i1 %t58, label %then1473, label %endif1475 -then1473: - br label %while.end1472 -endif1475: - br label %while.cond1470 -while.end1472: - br label %endif1469 -endif1469: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 - %t61 = load %S.ast.Node, ptr %a44 - store %S.ast.Node %t61, ptr %a62 - call void @finch.copy.S_ast_Node(ptr %a63, ptr %a62) - %t64 = load %S.ast.Node, ptr %a63 - %t65 = load i64, ptr %t60 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %t59, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %t59 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 - store %S.ast.Node %t64, ptr %t68 - store i64 %t66, ptr %t60 - %t69 = load ptr, ptr %a1 - %t70 = call %S.lexer.Token @finch.parser.expect(ptr %t69, { ptr, i64, i64 } { ptr @.str.816, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 57, i64 0 }) - store %S.lexer.Token %t70, ptr %a71 - call void @finch.drop.S_lexer_Token(ptr %a71) - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 }) - br label %logic.from1476 -logic.from1476: - br i1 %t73, label %logic.rhs1477, label %logic.end1478 -logic.rhs1477: - %t74 = load i1, ptr %a2 - %t75 = xor i1 %t74, true - br label %logic.rend1479 -logic.rend1479: - br label %logic.end1478 -logic.end1478: - %t76 = phi i1 [ false, %logic.from1476 ], [ %t75, %logic.rend1479 ] - br i1 %t76, label %then1480, label %else1481 -then1480: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 - %t79 = load ptr, ptr %a1 - %t80 = call %S.ast.Node @finch.parser.parseBlock(ptr %t79) - %t81 = load i64, ptr %t78 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t77, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t77 - %t84 = getelementptr inbounds %S.ast.Node, ptr %t83, i64 %t81 - store %S.ast.Node %t80, ptr %t84 - store i64 %t82, ptr %t78 - br label %endif1482 -else1481: - %t85 = load i1, ptr %a2 - br i1 %t85, label %then1483, label %else1484 -then1483: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load ptr, ptr %a1 - %t89 = call %S.ast.Node @finch.parser.parseExpr(ptr %t88) - %t90 = load i64, ptr %t87 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t91, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %t86 - %t93 = getelementptr inbounds %S.ast.Node, ptr %t92, i64 %t90 - store %S.ast.Node %t89, ptr %t93 - store i64 %t91, ptr %t87 - br label %endif1485 -else1484: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseStatement(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1485 -endif1485: - br label %endif1482 -endif1482: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i32 0, i32 1 - %t104 = load %S.ast.Node, ptr %a41 - store %S.ast.Node %t104, ptr %a105 - call void @finch.copy.S_ast_Node(ptr %a106, ptr %a105) - %t107 = load %S.ast.Node, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %t102, i64 %t109, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %t102 - %t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 %t108 - store %S.ast.Node %t107, ptr %t111 - store i64 %t109, ptr %t103 - %t112 = load ptr, ptr %a1 - %t113 = call i1 @finch.parser.accept(ptr %t112, { ptr, i64, i64 } { ptr @.str.819, i64 1, i64 0 }) - %t114 = xor i1 %t113, true - br i1 %t114, label %then1486, label %endif1488 -then1486: - %t115 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t115) - br label %endif1488 -endif1488: - call void @finch.drop.S_ast_Node(ptr %a44) - call void @finch.drop.S_ast_Node(ptr %a41) - br label %while.cond1461 -while.end1463: - %t116 = load i64, ptr %a26 - %t117 = load ptr, ptr %a1 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic1489, label %ok1490 -panic1489: - call void @finch_panic(ptr @.str.820, i64 380, ptr @.str.821) - unreachable -ok1490: - %t119 = getelementptr inbounds %S.parser.Parser, ptr %t117, i32 0, i32 2 - store i64 %t116, ptr %t119 - %t120 = load ptr, ptr %a1 - %t121 = call %S.lexer.Token @finch.parser.next(ptr %t120) - store %S.lexer.Token %t121, ptr %a122 - call void @finch.drop.S_lexer_Token(ptr %a122) - %t123 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1 - %t125 = load i64, ptr %t124 - %t126 = icmp eq i64 %t125, 1 - br i1 %t126, label %then1491, label %endif1493 -then1491: - %t127 = load ptr, ptr %a1 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.cur(ptr %t128) - call void @finch.parser.fail(ptr %t127, %S.lexer.Token %t129, { ptr, i64, i64 } { ptr @.str.822, i64 30, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - br label %endif1493 -endif1493: - %t131 = load %S.ast.Node, ptr %a5 - ret %S.ast.Node %t131 -} - -define internal { ptr, i64, i64 } @finch.parser.parseTParams(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca %S.lexer.Token, align 16 - %a23 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.823, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.824, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - br label %while.cond1494 -while.cond1494: - br label %while.body1495 -while.body1495: - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.825, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.826, i64 29, i64 0 }) - %t9 = extractvalue %S.lexer.Token %t8, 1 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - store %S.lexer.Token %t8, ptr %a13 - call void @finch.drop.S_lexer_Token(ptr %a13) - %t14 = load i64, ptr %t6 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t15, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %a2 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t14 - store { ptr, i64, i64 } %t12, ptr %t17 - store i64 %t15, ptr %t6 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.accept(ptr %t18, { ptr, i64, i64 } { ptr @.str.827, i64 1, i64 0 }) - %t20 = xor i1 %t19, true - br i1 %t20, label %then1497, label %endif1499 -then1497: - br label %while.end1496 -endif1499: - br label %while.cond1494 -while.end1496: - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.828, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.829, i64 29, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t24 -} - -define internal %S.ast.Node @finch.parser.parseStruct(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca %S.lexer.Token, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.lexer.Token, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.ast.Type, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.lexer.Token, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.ast.Node, align 16 - %a100 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.830, 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.831, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 8, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.833, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.834, i64 13, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.835, i64 1, i64 0 }) - br i1 %t19, label %then1500, label %endif1502 -then1500: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t20) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t21, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch.drop.arr_str(ptr %a24) - br label %endif1502 -endif1502: - %t25 = load ptr, ptr %a1 - %t26 = call %S.lexer.Token @finch.parser.expect(ptr %t25, { ptr, i64, i64 } { ptr @.str.836, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.837, i64 3, i64 0 }) - store %S.lexer.Token %t26, ptr %a27 - call void @finch.drop.S_lexer_Token(ptr %a27) - br label %while.cond1503 -while.cond1503: - %t28 = load ptr, ptr %a1 - %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.838, i64 1, i64 0 }) - %t30 = xor i1 %t29, true - br i1 %t30, label %while.body1504, label %while.end1505 -while.body1504: - %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.839, i64 3, i64 0 }) - br i1 %t32, label %then1506, label %endif1508 -then1506: - %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.840, i64 38, i64 0 }) - store %S.lexer.Token %t35, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - br label %endif1508 -endif1508: - %t37 = load ptr, ptr %a1 - %t38 = call %S.ast.Node @finch.parser.node(ptr %t37, { ptr, i64, i64 } { ptr @.str.841, i64 5, i64 0 }) - store %S.ast.Node %t38, ptr %a39 - %t40 = load ptr, ptr %a1 - %t41 = call i1 @finch.parser.atDeclaration(ptr %t40) - %t42 = xor i1 %t41, true - br i1 %t42, label %then1509, label %endif1511 -then1509: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = call %S.lexer.Token @finch.parser.cur(ptr %t44) - %t46 = load ptr, ptr %a1 - %t47 = call %S.lexer.Token @finch.parser.cur(ptr %t46) - %t48 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t47) - store %S.lexer.Token %t47, ptr %a49 - call void @finch.drop.S_lexer_Token(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.842, i64 11, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.843, i64 28, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - call void @finch.parser.fail(ptr %t43, %S.lexer.Token %t45, { ptr, i64, i64 } %t59) - store %S.lexer.Token %t45, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - br label %endif1511 -endif1511: - %t62 = load ptr, ptr %a1 - %t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62) - %t64 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 5 - %t65 = load %S.ast.Type, ptr %t64 - store %S.ast.Type %t63, ptr %t64 - store %S.ast.Type %t65, ptr %a66 - call void @finch.drop.S_ast_Type(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = call %S.lexer.Token @finch.parser.expect(ptr %t67, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.845, i64 12, i64 0 }) - %t69 = extractvalue %S.lexer.Token %t68, 1 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_copy(ptr %a71, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - store %S.lexer.Token %t68, ptr %a73 - call void @finch.drop.S_lexer_Token(ptr %a73) - %t74 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 1 - %t75 = load { ptr, i64, i64 }, ptr %t74 - store { ptr, i64, i64 } %t72, ptr %t74 - store { ptr, i64, i64 } %t75, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load ptr, ptr %a1 - %t78 = call i1 @finch.parser.accept(ptr %t77, { ptr, i64, i64 } { ptr @.str.846, i64 1, i64 0 }) - br i1 %t78, label %then1512, label %endif1514 -then1512: - %t79 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 9 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load ptr, ptr %a1 - %t82 = call %S.ast.Node @finch.parser.parseExpr(ptr %t81) - %t83 = load i64, ptr %t80 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t79, i64 %t84, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t79 - %t86 = getelementptr inbounds %S.ast.Node, ptr %t85, i64 %t83 - store %S.ast.Node %t82, ptr %t86 - store i64 %t84, ptr %t80 - br label %endif1514 -endif1514: - %t87 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 - %t89 = load %S.ast.Node, ptr %a39 - store %S.ast.Node %t89, ptr %a90 - call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90) - %t92 = load %S.ast.Node, ptr %a91 - %t93 = load i64, ptr %t88 - %t94 = add i64 %t93, 1 - call void @finch_arr_reserve(ptr %t87, i64 %t94, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t95 = load ptr, ptr %t87 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 %t93 - store %S.ast.Node %t92, ptr %t96 - store i64 %t94, ptr %t88 - %t97 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t97) - call void @finch.drop.S_ast_Node(ptr %a39) - br label %while.cond1503 -while.end1505: - %t98 = load ptr, ptr %a1 - %t99 = call %S.lexer.Token @finch.parser.next(ptr %t98) - store %S.lexer.Token %t99, ptr %a100 - call void @finch.drop.S_lexer_Token(ptr %a100) - %t101 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t101 -} - -define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) { -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 - %a16 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lexer.Token, align 16 - %a26 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.lexer.Token, align 16 - %a77 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Type, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca %S.lexer.Token, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - %a113 = alloca %S.lexer.Token, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.847, 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.848, 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.849, i64 5, i64 0 }) - br label %logic.from1515 -logic.from1515: - br i1 %t9, label %logic.rhs1516, label %logic.end1517 -logic.rhs1516: - %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 - store %S.lexer.Token %t11, ptr %a16 - call void @finch.drop.S_lexer_Token(ptr %a16) - %t17 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend1518 -logic.rend1518: - br label %logic.end1517 -logic.end1517: - %t19 = phi i1 [ false, %logic.from1515 ], [ %t17, %logic.rend1518 ] - br i1 %t19, label %then1519, label %endif1521 -then1519: - %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.850, i64 68, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - br label %endif1521 -endif1521: - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.expect(ptr %t24, { ptr, i64, i64 } { ptr @.str.851, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.852, i64 26, i64 0 }) - store %S.lexer.Token %t25, ptr %a26 - call void @finch.drop.S_lexer_Token(ptr %a26) - %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.853, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.854, i64 15, i64 0 }) - %t29 = extractvalue %S.lexer.Token %t28, 1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store %S.lexer.Token %t28, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t32, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call i1 @finch.parser.at(ptr %t37, { ptr, i64, i64 } { ptr @.str.855, i64 1, i64 0 }) - br i1 %t38, label %then1522, label %endif1524 -then1522: - %t39 = load ptr, ptr %a1 - %t40 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t39) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t40, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch.drop.arr_str(ptr %a43) - br label %endif1524 -endif1524: - %t44 = load ptr, ptr %a1 - %t45 = call i1 @finch.parser.accept(ptr %t44, { ptr, i64, i64 } { ptr @.str.856, i64 1, i64 0 }) - br i1 %t45, label %then1525, label %endif1527 -then1525: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - %t48 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t47, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t51, ptr %t48 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.expect(ptr %t54, { ptr, i64, i64 } { ptr @.str.857, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.858, i64 13, i64 0 }) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t59, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %endif1527 -endif1527: - %t64 = load ptr, ptr %a1 - %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.859, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.860, i64 3, i64 0 }) - store %S.lexer.Token %t65, ptr %a66 - call void @finch.drop.S_lexer_Token(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic1528, label %ok1529 -panic1528: - call void @finch_panic(ptr @.str.861, i64 446, ptr @.str.862) - unreachable -ok1529: - %t69 = getelementptr inbounds %S.parser.Parser, ptr %t67, i32 0, i32 2 - %t70 = load i64, ptr %t69 - %t71 = add i64 %t70, 1 - store i64 %t71, ptr %t69 - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.863, i64 1, i64 0 }) - %t74 = xor i1 %t73, true - br i1 %t74, label %then1530, label %endif1532 -then1530: - br label %while.cond1533 -while.cond1533: - br label %while.body1534 -while.body1534: - %t75 = load ptr, ptr %a1 - %t76 = call %S.ast.Node @finch.parser.node(ptr %t75, { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }) - store %S.ast.Node %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Type @finch.parser.parseType(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 5 - %t81 = load %S.ast.Type, ptr %t80 - store %S.ast.Type %t79, ptr %t80 - store %S.ast.Type %t81, ptr %a82 - call void @finch.drop.S_ast_Type(ptr %a82) - %t83 = load ptr, ptr %a1 - %t84 = call %S.lexer.Token @finch.parser.expect(ptr %t83, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.866, i64 16, i64 0 }) - %t85 = extractvalue %S.lexer.Token %t84, 1 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_copy(ptr %a87, ptr %a86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store %S.lexer.Token %t84, ptr %a89 - call void @finch.drop.S_lexer_Token(ptr %a89) - %t90 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 1 - %t91 = load { ptr, i64, i64 }, ptr %t90 - store { ptr, i64, i64 } %t88, ptr %t90 - store { ptr, i64, i64 } %t91, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load %S.ast.Node, ptr %a77 - store %S.ast.Node %t95, ptr %a96 - call void @finch.copy.S_ast_Node(ptr %a97, ptr %a96) - %t98 = load %S.ast.Node, ptr %a97 - %t99 = load i64, ptr %t94 - %t100 = add i64 %t99, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t100, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t101 = load ptr, ptr %t93 - %t102 = getelementptr inbounds %S.ast.Node, ptr %t101, i64 %t99 - store %S.ast.Node %t98, ptr %t102 - store i64 %t100, ptr %t94 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.867, i64 1, i64 0 }) - %t105 = xor i1 %t104, true - br i1 %t105, label %then1536, label %endif1538 -then1536: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.end1535 -endif1538: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.cond1533 -while.end1535: - br label %endif1532 -endif1532: - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic1539, label %ok1540 -panic1539: - call void @finch_panic(ptr @.str.868, i64 458, ptr @.str.869) - unreachable -ok1540: - %t108 = getelementptr inbounds %S.parser.Parser, ptr %t106, i32 0, i32 2 - %t109 = load i64, ptr %t108 - %t110 = sub i64 %t109, 1 - store i64 %t110, ptr %t108 - %t111 = load ptr, ptr %a1 - %t112 = call %S.lexer.Token @finch.parser.expect(ptr %t111, { ptr, i64, i64 } { ptr @.str.870, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.871, i64 3, i64 0 }) - store %S.lexer.Token %t112, ptr %a113 - call void @finch.drop.S_lexer_Token(ptr %a113) - %t114 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.872, i64 4, i64 0 }) - %t115 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t116 = load %S.ast.Type, ptr %t115 - store %S.ast.Type %t114, ptr %t115 - store %S.ast.Type %t116, ptr %a117 - call void @finch.drop.S_ast_Type(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = call i1 @finch.parser.accept(ptr %t118, { ptr, i64, i64 } { ptr @.str.873, i64 2, i64 0 }) - br i1 %t119, label %then1541, label %endif1543 -then1541: - %t120 = load ptr, ptr %a1 - %t121 = call i1 @finch.parser.at(ptr %t120, { ptr, i64, i64 } { ptr @.str.874, i64 1, i64 0 }) - %t122 = xor i1 %t121, true - br i1 %t122, label %then1544, label %endif1546 -then1544: - %t123 = load ptr, ptr %a1 - %t124 = call %S.ast.Type @finch.parser.parseType(ptr %t123) - %t125 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t126 = load %S.ast.Type, ptr %t125 - store %S.ast.Type %t124, ptr %t125 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif1546 -endif1546: - %t128 = load ptr, ptr %a1 - %t129 = call i1 @finch.parser.accept(ptr %t128, { ptr, i64, i64 } { ptr @.str.875, i64 1, i64 0 }) - %t130 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - store i1 %t129, ptr %t130 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - %t132 = load i1, ptr %t131 - %t133 = xor i1 %t132, true - br label %logic.from1547 -logic.from1547: - br i1 %t133, label %logic.rhs1548, label %logic.end1549 -logic.rhs1548: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t136, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.876, i64 4, i64 0 }, ptr %a138 - %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) - %t140 = icmp ne i32 %t139, 0 - br label %logic.rend1550 -logic.rend1550: - br label %logic.end1549 -logic.end1549: - %t141 = phi i1 [ false, %logic.from1547 ], [ %t140, %logic.rend1550 ] - br i1 %t141, label %then1551, label %endif1553 -then1551: - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.lexer.Token @finch.parser.cur(ptr %t143) - %t145 = load ptr, ptr %a1 - %t146 = call %S.lexer.Token @finch.parser.cur(ptr %t145) - %t147 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t146) - store %S.lexer.Token %t146, ptr %a148 - call void @finch.drop.S_lexer_Token(ptr %a148) - store { ptr, i64, i64 } { ptr @.str.877, i64 11, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t147, ptr %a152 - call void @finch_str_drop(ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.878, i64 61, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - call void @finch.parser.fail(ptr %t142, %S.lexer.Token %t144, { ptr, i64, i64 } %t158) - store %S.lexer.Token %t144, ptr %a159 - call void @finch.drop.S_lexer_Token(ptr %a159) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - br label %endif1553 -endif1553: - br label %endif1543 -endif1543: - %t161 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i32 0, i32 1 - %t163 = load ptr, ptr %a1 - %t164 = call %S.ast.Node @finch.parser.parseBlock(ptr %t163) - %t165 = load i64, ptr %t162 - %t166 = add i64 %t165, 1 - call void @finch_arr_reserve(ptr %t161, i64 %t166, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t167 = load ptr, ptr %t161 - %t168 = getelementptr inbounds %S.ast.Node, ptr %t167, i64 %t165 - store %S.ast.Node %t164, ptr %t168 - store i64 %t166, ptr %t162 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = sub i64 %t172, 1 - %t174 = load { ptr, i64, i64 }, ptr %t169 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range1554, label %inrange1555 -range1554: - call void @finch_panic_index(ptr @.str.879, i64 471, i64 %t173, i64 %t175) - unreachable -inrange1555: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Node, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i32 0, i32 14 - %t180 = load i64, ptr %t179 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t180, ptr %t181 - %t182 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t182 -} - -define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a12 = alloca i64, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.lexer.Token, align 16 - %a45 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.880, 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.881, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.882, i64 3, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic1556, label %ok1557 -panic1556: - call void @finch_panic(ptr @.str.883, i64 480, ptr @.str.884) - unreachable -ok1557: - %t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 2 - %t11 = load i64, ptr %t10 - store i64 %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic1558, label %ok1559 -panic1558: - call void @finch_panic(ptr @.str.885, i64 481, ptr @.str.886) - unreachable -ok1559: - %t15 = getelementptr inbounds %S.parser.Parser, ptr %t13, i32 0, i32 2 - store i64 0, ptr %t15 - br label %while.cond1560 -while.cond1560: - %t16 = load ptr, ptr %a1 - %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.887, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - br i1 %t18, label %while.body1561, label %while.end1562 -while.body1561: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.888, i64 3, i64 0 }) - br i1 %t20, label %then1563, label %endif1565 -then1563: - %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.889, i64 35, i64 0 }) - store %S.lexer.Token %t23, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - br label %endif1565 -endif1565: - %t25 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.parseStatement(ptr %t27) - %t29 = load i64, ptr %t26 - %t30 = add i64 %t29, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t30, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t31 = load ptr, ptr %t25 - %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 %t29 - store %S.ast.Node %t28, ptr %t32 - store i64 %t30, ptr %t26 - %t33 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t33) - br label %while.cond1560 -while.end1562: - %t34 = load i64, ptr %a12 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1566, label %ok1567 -panic1566: - call void @finch_panic(ptr @.str.890, i64 489, ptr @.str.891) - unreachable -ok1567: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 2 - store i64 %t34, ptr %t37 - %t38 = load ptr, ptr %a1 - %t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38) - %t40 = extractvalue %S.lexer.Token %t39, 2 - store %S.lexer.Token %t39, ptr %a41 - call void @finch.drop.S_lexer_Token(ptr %a41) - %t42 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t40, ptr %t42 - %t43 = load ptr, ptr %a1 - %t44 = call %S.lexer.Token @finch.parser.next(ptr %t43) - store %S.lexer.Token %t44, ptr %a45 - call void @finch.drop.S_lexer_Token(ptr %a45) - %t46 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t46 -} - -define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { -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 - %a22 = alloca %S.lexer.Token, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.ast.Node, align 16 - %a50 = alloca %S.lexer.Token, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca %S.lexer.Token, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Node, align 16 - %a131 = alloca %S.lexer.Token, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.ast.Node, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca %S.ast.Node, align 16 - %a186 = alloca %S.lexer.Token, align 16 - %a192 = alloca %S.lexer.Token, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.lexer.Token, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Node, align 16 - %a250 = alloca %S.ast.Type, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca %S.lexer.Token, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca %S.ast.Node, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca %S.lexer.Token, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.lexer.Token, align 16 - %a309 = alloca %S.lexer.Token, align 16 - %a312 = alloca %S.ast.Node, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca i64, align 16 - %a331 = alloca i64, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.ast.Node, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca %S.lexer.Token, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca %S.ast.Node, align 16 - %a396 = alloca %S.ast.Node, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Node, align 16 - %a456 = alloca %S.ast.Node, align 16 - %a457 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t2) - store { ptr, i64, i64 } %t3, ptr %a4 - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.892, 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 %then1568, label %endif1570 -then1568: - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t11 -endif1570: - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.893, 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 %then1571, label %endif1573 -then1571: - %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.894, 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) - store %S.lexer.Token %t21, ptr %a22 - call void @finch.drop.S_lexer_Token(ptr %a22) - %t23 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 - %t25 = load ptr, ptr %a1 - %t26 = call %S.ast.Node @finch.parser.parseExpr(ptr %t25) - %t27 = load i64, ptr %t24 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - store %S.ast.Node %t26, ptr %t30 - store i64 %t28, ptr %t24 - %t31 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load ptr, ptr %a1 - %t34 = call %S.ast.Node @finch.parser.parseBlock(ptr %t33) - %t35 = load i64, ptr %t32 - %t36 = add i64 %t35, 1 - call void @finch_arr_reserve(ptr %t31, i64 %t36, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t37 = load ptr, ptr %t31 - %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t35 - store %S.ast.Node %t34, ptr %t38 - store i64 %t36, ptr %t32 - %t39 = load %S.ast.Node, ptr %a19 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t39 -endif1573: - %t40 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.895, i64 3, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br i1 %t44, label %then1574, label %endif1576 -then1574: - %t45 = load ptr, ptr %a1 - %t46 = call %S.ast.Node @finch.parser.node(ptr %t45, { ptr, i64, i64 } { ptr @.str.896, i64 3, i64 0 }) - store %S.ast.Node %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = call %S.lexer.Token @finch.parser.next(ptr %t48) - store %S.lexer.Token %t49, ptr %a50 - call void @finch.drop.S_lexer_Token(ptr %a50) - %t51 = load ptr, ptr %a1 - %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.897, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.898, i64 20, i64 0 }) - %t53 = extractvalue %S.lexer.Token %t52, 1 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch_str_copy(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store %S.lexer.Token %t52, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 1 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } %t56, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.899, i64 1, i64 0 }) - br i1 %t62, label %then1577, label %endif1579 -then1577: - %t63 = load ptr, ptr %a1 - %t64 = call %S.lexer.Token @finch.parser.expect(ptr %t63, { ptr, i64, i64 } { ptr @.str.900, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.901, i64 27, i64 0 }) - %t65 = extractvalue %S.lexer.Token %t64, 1 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store %S.lexer.Token %t64, ptr %a69 - call void @finch.drop.S_lexer_Token(ptr %a69) - %t70 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t68, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif1579 -endif1579: - %t73 = load ptr, ptr %a1 - %t74 = call %S.lexer.Token @finch.parser.expect(ptr %t73, { ptr, i64, i64 } { ptr @.str.902, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.903, i64 4, i64 0 }) - store %S.lexer.Token %t74, ptr %a75 - call void @finch.drop.S_lexer_Token(ptr %a75) - %t76 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = call i1 @finch.parser.accept(ptr %t84, { ptr, i64, i64 } { ptr @.str.904, i64 2, i64 0 }) - br i1 %t85, label %then1580, label %else1581 -then1580: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = icmp sgt i64 %t88, 0 - br i1 %t89, label %then1583, label %endif1585 -then1583: - %t90 = load ptr, ptr %a1 - %t91 = load ptr, ptr %a1 - %t92 = call %S.lexer.Token @finch.parser.cur(ptr %t91) - call void @finch.parser.fail(ptr %t90, %S.lexer.Token %t92, { ptr, i64, i64 } { ptr @.str.905, i64 55, i64 0 }) - store %S.lexer.Token %t92, ptr %a93 - call void @finch.drop.S_lexer_Token(ptr %a93) - br label %endif1585 -endif1585: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseExpr(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1582 -else1581: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } { ptr @.str.906, i64 4, i64 0 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1582 -endif1582: - %t105 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1 - %t107 = load ptr, ptr %a1 - %t108 = call %S.ast.Node @finch.parser.parseBlock(ptr %t107) - %t109 = load i64, ptr %t106 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t105, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t105 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t106 - %t113 = load %S.ast.Node, ptr %a47 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t113 -endif1576: - %t114 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.907, i64 5, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br i1 %t118, label %then1586, label %endif1588 -then1586: - %t119 = load ptr, ptr %a1 - %t120 = call %S.ast.Node @finch.parser.parseMatch(ptr %t119, i1 false) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t120 -endif1588: - %t121 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.908, i64 6, i64 0 }, ptr %a123 - %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) - %t125 = icmp ne i32 %t124, 0 - br i1 %t125, label %then1589, label %endif1591 -then1589: - %t126 = load ptr, ptr %a1 - %t127 = call %S.ast.Node @finch.parser.node(ptr %t126, { ptr, i64, i64 } { ptr @.str.909, i64 6, i64 0 }) - store %S.ast.Node %t127, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = call %S.lexer.Token @finch.parser.next(ptr %t129) - store %S.lexer.Token %t130, ptr %a131 - call void @finch.drop.S_lexer_Token(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = call i1 @finch.parser.at(ptr %t132, { ptr, i64, i64 } { ptr @.str.910, i64 1, i64 0 }) - %t134 = xor i1 %t133, true - br label %logic.from1592 -logic.from1592: - br i1 %t134, label %logic.rhs1593, label %logic.end1594 -logic.rhs1593: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1595 -logic.rend1595: - br label %logic.end1594 -logic.end1594: - %t140 = phi i1 [ false, %logic.from1592 ], [ %t139, %logic.rend1595 ] - br i1 %t140, label %then1596, label %endif1598 -then1596: - %t141 = getelementptr inbounds %S.ast.Node, ptr %a128, i32 0, i32 9 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.ast.Node @finch.parser.parseExpr(ptr %t143) - %t145 = load i64, ptr %t142 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t141, i64 %t146, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t141 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t145 - store %S.ast.Node %t144, ptr %t148 - store i64 %t146, ptr %t142 - br label %endif1598 -endif1598: - %t149 = load %S.ast.Node, ptr %a128 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t149 -endif1591: - %t150 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.911, 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.from1599 -logic.from1599: - br i1 %t154, label %logic.end1601, label %logic.rhs1600 -logic.rhs1600: - %t155 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.912, i64 8, i64 0 }, ptr %a157 - %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) - %t159 = icmp ne i32 %t158, 0 - br label %logic.rend1602 -logic.rend1602: - br label %logic.end1601 -logic.end1601: - %t160 = phi i1 [ true, %logic.from1599 ], [ %t159, %logic.rend1602 ] - br i1 %t160, label %then1603, label %endif1605 -then1603: - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a4 - %t163 = call %S.ast.Node @finch.parser.node(ptr %t161, { ptr, i64, i64 } %t162) - store %S.ast.Node %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = load %S.ast.Node, ptr %a164 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t168 -endif1605: - %t169 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.913, i64 1, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then1606, label %endif1608 -then1606: - %t174 = load ptr, ptr %a1 - %t175 = call %S.ast.Node @finch.parser.parseBlock(ptr %t174) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t175 -endif1608: - %t176 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.914, i64 5, i64 0 }, ptr %a178 - %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %then1609, label %endif1611 -then1609: - %t181 = load ptr, ptr %a1 - %t182 = call %S.ast.Node @finch.parser.node(ptr %t181, { ptr, i64, i64 } { ptr @.str.915, i64 5, i64 0 }) - store %S.ast.Node %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = call %S.lexer.Token @finch.parser.next(ptr %t184) - store %S.lexer.Token %t185, ptr %a186 - call void @finch.drop.S_lexer_Token(ptr %a186) - %t187 = load ptr, ptr %a1 - %t188 = call i1 @finch.parser.at(ptr %t187, { ptr, i64, i64 } { ptr @.str.916, i64 5, i64 0 }) - br i1 %t188, label %then1612, label %endif1614 -then1612: - %t189 = load ptr, ptr %a1 - %t190 = load ptr, ptr %a1 - %t191 = call %S.lexer.Token @finch.parser.cur(ptr %t190) - call void @finch.parser.fail(ptr %t189, %S.lexer.Token %t191, { ptr, i64, i64 } { ptr @.str.917, i64 33, i64 0 }) - store %S.lexer.Token %t191, ptr %a192 - call void @finch.drop.S_lexer_Token(ptr %a192) - br label %endif1614 -endif1614: - %t193 = getelementptr inbounds %S.ast.Node, ptr %a183, i32 0, i32 9 - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t193, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call %S.ast.Node @finch.parser.parseStatement(ptr %t195) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %t193, i64 %t198, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %t193 - %t200 = getelementptr inbounds %S.ast.Node, ptr %t199, i64 %t197 - store %S.ast.Node %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = load %S.ast.Node, ptr %a183 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t201 -endif1611: - %t202 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.918, i64 2, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.from1615 -logic.from1615: - br i1 %t206, label %logic.end1617, label %logic.rhs1616 -logic.rhs1616: - %t207 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.919, 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.rend1618 -logic.rend1618: - br label %logic.end1617 -logic.end1617: - %t212 = phi i1 [ true, %logic.from1615 ], [ %t211, %logic.rend1618 ] - br label %logic.from1619 -logic.from1619: - br i1 %t212, label %logic.end1621, label %logic.rhs1620 -logic.rhs1620: - %t213 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.920, i64 6, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br label %logic.rend1622 -logic.rend1622: - br label %logic.end1621 -logic.end1621: - %t218 = phi i1 [ true, %logic.from1619 ], [ %t217, %logic.rend1622 ] - br label %logic.from1623 -logic.from1623: - br i1 %t218, label %logic.end1625, label %logic.rhs1624 -logic.rhs1624: - %t219 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t219, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.921, i64 4, i64 0 }, ptr %a221 - %t222 = call i32 @finch_str_eq(ptr %a220, ptr %a221) - %t223 = icmp ne i32 %t222, 0 - br label %logic.rend1626 -logic.rend1626: - br label %logic.end1625 -logic.end1625: - %t224 = phi i1 [ true, %logic.from1623 ], [ %t223, %logic.rend1626 ] - br i1 %t224, label %then1627, label %endif1629 -then1627: - %t225 = load ptr, ptr %a1 - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.cur(ptr %t226) - %t228 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.922, i64 1, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.923, i64 48, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - call void @finch.parser.fail(ptr %t225, %S.lexer.Token %t227, { ptr, i64, i64 } %t237) - store %S.lexer.Token %t227, ptr %a238 - call void @finch.drop.S_lexer_Token(ptr %a238) - store { ptr, i64, i64 } %t237, ptr %a239 - call void @finch_str_drop(ptr %a239) - br label %endif1629 -endif1629: - %t240 = load ptr, ptr %a1 - %t241 = call i1 @finch.parser.atDeclaration(ptr %t240) - br i1 %t241, label %then1630, label %endif1632 -then1630: - %t242 = load ptr, ptr %a1 - %t243 = call %S.ast.Node @finch.parser.node(ptr %t242, { ptr, i64, i64 } { ptr @.str.924, i64 4, i64 0 }) - store %S.ast.Node %t243, ptr %a244 - %t245 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 6 - store i1 true, ptr %t245 - %t246 = load ptr, ptr %a1 - %t247 = call %S.ast.Type @finch.parser.parseType(ptr %t246) - %t248 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 5 - %t249 = load %S.ast.Type, ptr %t248 - store %S.ast.Type %t247, ptr %t248 - store %S.ast.Type %t249, ptr %a250 - call void @finch.drop.S_ast_Type(ptr %a250) - %t251 = load ptr, ptr %a1 - %t252 = call %S.lexer.Token @finch.parser.expect(ptr %t251, { ptr, i64, i64 } { ptr @.str.925, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.926, i64 15, i64 0 }) - %t253 = extractvalue %S.lexer.Token %t252, 1 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - store %S.lexer.Token %t252, ptr %a257 - call void @finch.drop.S_lexer_Token(ptr %a257) - %t258 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 1 - %t259 = load { ptr, i64, i64 }, ptr %t258 - store { ptr, i64, i64 } %t256, ptr %t258 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = call i1 @finch.parser.accept(ptr %t261, { ptr, i64, i64 } { ptr @.str.927, i64 1, i64 0 }) - br i1 %t262, label %then1633, label %endif1635 -then1633: - %t263 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 9 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load ptr, ptr %a1 - %t266 = call %S.ast.Node @finch.parser.parseExpr(ptr %t265) - %t267 = load i64, ptr %t264 - %t268 = add i64 %t267, 1 - call void @finch_arr_reserve(ptr %t263, i64 %t268, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t269 = load ptr, ptr %t263 - %t270 = getelementptr inbounds %S.ast.Node, ptr %t269, i64 %t267 - store %S.ast.Node %t266, ptr %t270 - store i64 %t268, ptr %t264 - br label %endif1635 -endif1635: - %t271 = load %S.ast.Node, ptr %a244 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t271 -endif1632: - %t272 = load ptr, ptr %a1 - %t273 = call i1 @finch.parser.at(ptr %t272, { ptr, i64, i64 } { ptr @.str.928, i64 5, i64 0 }) - br label %logic.from1636 -logic.from1636: - br i1 %t273, label %logic.rhs1637, label %logic.end1638 -logic.rhs1637: - %t274 = load ptr, ptr %a1 - %t275 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t274, i64 1) - store { ptr, i64, i64 } %t275, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.929, i64 2, i64 0 }, ptr %a277 - %t278 = call i32 @finch_str_eq(ptr %a276, ptr %a277) - %t279 = icmp ne i32 %t278, 0 - store { ptr, i64, i64 } %t275, ptr %a280 - call void @finch_str_drop(ptr %a280) - br label %logic.rend1639 -logic.rend1639: - br label %logic.end1638 -logic.end1638: - %t281 = phi i1 [ false, %logic.from1636 ], [ %t279, %logic.rend1639 ] - br i1 %t281, label %then1640, label %endif1642 -then1640: - %t282 = load ptr, ptr %a1 - %t283 = call %S.ast.Node @finch.parser.node(ptr %t282, { ptr, i64, i64 } { ptr @.str.930, i64 4, i64 0 }) - store %S.ast.Node %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = call %S.lexer.Token @finch.parser.next(ptr %t285) - %t287 = extractvalue %S.lexer.Token %t286, 1 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_copy(ptr %a289, ptr %a288) - %t290 = load { ptr, i64, i64 }, ptr %a289 - store %S.lexer.Token %t286, ptr %a291 - call void @finch.drop.S_lexer_Token(ptr %a291) - %t292 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 1 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } %t290, ptr %t292 - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load ptr, ptr %a1 - %t296 = call %S.lexer.Token @finch.parser.next(ptr %t295) - store %S.lexer.Token %t296, ptr %a297 - call void @finch.drop.S_lexer_Token(ptr %a297) - %t298 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 9 - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 - %t300 = load ptr, ptr %a1 - %t301 = call %S.ast.Node @finch.parser.parseExpr(ptr %t300) - %t302 = load i64, ptr %t299 - %t303 = add i64 %t302, 1 - call void @finch_arr_reserve(ptr %t298, i64 %t303, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t304 = load ptr, ptr %t298 - %t305 = getelementptr inbounds %S.ast.Node, ptr %t304, i64 %t302 - store %S.ast.Node %t301, ptr %t305 - store i64 %t303, ptr %t299 - %t306 = load %S.ast.Node, ptr %a284 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t306 -endif1642: - %t307 = load ptr, ptr %a1 - %t308 = call %S.lexer.Token @finch.parser.cur(ptr %t307) - store %S.lexer.Token %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = call %S.ast.Node @finch.parser.parseExpr(ptr %t310) - store %S.ast.Node %t311, ptr %a312 - %t313 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t314 = call ptr @finch_alloc(i64 %t313) - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 0 - store { ptr, i64, i64 } { ptr @.str.931, i64 1, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 1 - store { ptr, i64, i64 } { ptr @.str.932, i64 2, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 2 - store { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 3 - store { ptr, i64, i64 } { ptr @.str.934, i64 2, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 4 - store { ptr, i64, i64 } { ptr @.str.935, i64 2, i64 0 }, ptr %t319 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 5 - store { ptr, i64, i64 } { ptr @.str.936, i64 2, i64 0 }, ptr %t320 - %t321 = insertvalue { ptr, i64, i64 } undef, ptr %t314, 0 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 1 - %t323 = insertvalue { ptr, i64, i64 } %t322, i64 6, 2 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a324, i32 0, i32 1 - %t326 = load ptr, ptr %a1 - %t327 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t326) - store i64 -1, ptr %a328 - %t329 = load i64, ptr %t325 - %t330 = load ptr, ptr %a324 - store i64 0, ptr %a331 - br label %find.cond1643 -find.cond1643: - %t332 = load i64, ptr %a331 - %t333 = icmp slt i64 %t332, %t329 - br i1 %t333, label %find.body1644, label %find.end1647 -find.body1644: - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t330, i64 %t332 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } %t327, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %find.hit1645, label %find.next1646 -find.hit1645: - store i64 %t332, ptr %a328 - br label %find.end1647 -find.next1646: - %t340 = add i64 %t332, 1 - store i64 %t340, ptr %a331 - br label %find.cond1643 -find.end1647: - store { ptr, i64, i64 } %t327, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load i64, ptr %a328 - %t343 = icmp sge i64 %t342, 0 - br label %logic.from1648 -logic.from1648: - br i1 %t343, label %logic.rhs1649, label %logic.end1650 -logic.rhs1649: - %t344 = load ptr, ptr %a1 - %t345 = call i1 @finch.parser.sameLine(ptr %t344) - br label %logic.rend1651 -logic.rend1651: - br label %logic.end1650 -logic.end1650: - %t346 = phi i1 [ false, %logic.from1648 ], [ %t345, %logic.rend1651 ] - br i1 %t346, label %then1652, label %endif1654 -then1652: - %t347 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.937, i64 3, i64 0 }, ptr %a350 - %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) - %t352 = icmp eq i32 %t351, 0 - br label %logic.from1655 -logic.from1655: - br i1 %t352, label %logic.rhs1656, label %logic.end1657 -logic.rhs1656: - %t353 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t354 = load { ptr, i64, i64 }, ptr %t353 - store { ptr, i64, i64 } %t354, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.938, i64 6, i64 0 }, ptr %a356 - %t357 = call i32 @finch_str_eq(ptr %a355, ptr %a356) - %t358 = icmp eq i32 %t357, 0 - br label %logic.rend1658 -logic.rend1658: - br label %logic.end1657 -logic.end1657: - %t359 = phi i1 [ false, %logic.from1655 ], [ %t358, %logic.rend1658 ] - br label %logic.from1659 -logic.from1659: - br i1 %t359, label %logic.rhs1660, label %logic.end1661 -logic.rhs1660: - %t360 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t361 = load { ptr, i64, i64 }, ptr %t360 - store { ptr, i64, i64 } %t361, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.939, i64 5, i64 0 }, ptr %a363 - %t364 = call i32 @finch_str_eq(ptr %a362, ptr %a363) - %t365 = icmp eq i32 %t364, 0 - br label %logic.rend1662 -logic.rend1662: - br label %logic.end1661 -logic.end1661: - %t366 = phi i1 [ false, %logic.from1659 ], [ %t365, %logic.rend1662 ] - br i1 %t366, label %then1663, label %endif1665 -then1663: - %t367 = load ptr, ptr %a1 - %t368 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t367, %S.lexer.Token %t368, { ptr, i64, i64 } { ptr @.str.940, i64 66, i64 0 }) - br label %endif1665 -endif1665: - %t369 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.941, i64 6, i64 0 }, 0 - %t370 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t371 = load i64, ptr %t370 - %t372 = insertvalue %S.ast.Node %t369, i64 %t371, 11 - %t373 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t374 = load i64, ptr %t373 - %t375 = insertvalue %S.ast.Node %t372, i64 %t374, 12 - %t376 = load ptr, ptr %a1 - %t377 = icmp eq ptr %t376, null - br i1 %t377, label %panic1666, label %ok1667 -panic1666: - call void @finch_panic(ptr @.str.942, i64 584, ptr @.str.943) - unreachable -ok1667: - %t378 = getelementptr inbounds %S.parser.Parser, ptr %t376, i32 0, i32 3 - %t379 = load i64, ptr %t378 - %t380 = insertvalue %S.ast.Node %t375, i64 %t379, 13 - store %S.ast.Node %t380, ptr %a381 - %t382 = load ptr, ptr %a1 - %t383 = call %S.lexer.Token @finch.parser.next(ptr %t382) - %t384 = extractvalue %S.lexer.Token %t383, 0 - store { ptr, i64, i64 } %t384, ptr %a385 - call void @finch_str_copy(ptr %a386, ptr %a385) - %t387 = load { ptr, i64, i64 }, ptr %a386 - store %S.lexer.Token %t383, ptr %a388 - call void @finch.drop.S_lexer_Token(ptr %a388) - %t389 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 1 - %t390 = load { ptr, i64, i64 }, ptr %t389 - store { ptr, i64, i64 } %t387, ptr %t389 - store { ptr, i64, i64 } %t390, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i32 0, i32 1 - %t394 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t394, ptr %a395 - call void @finch.copy.S_ast_Node(ptr %a396, ptr %a395) - %t397 = load %S.ast.Node, ptr %a396 - %t398 = load i64, ptr %t393 - %t399 = add i64 %t398, 1 - call void @finch_arr_reserve(ptr %t392, i64 %t399, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t400 = load ptr, ptr %t392 - %t401 = getelementptr inbounds %S.ast.Node, ptr %t400, i64 %t398 - store %S.ast.Node %t397, ptr %t401 - store i64 %t399, ptr %t393 - %t402 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - %t404 = load ptr, ptr %a1 - %t405 = call %S.ast.Node @finch.parser.parseExpr(ptr %t404) - %t406 = load i64, ptr %t403 - %t407 = add i64 %t406, 1 - call void @finch_arr_reserve(ptr %t402, i64 %t407, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t408 = load ptr, ptr %t402 - %t409 = getelementptr inbounds %S.ast.Node, ptr %t408, i64 %t406 - store %S.ast.Node %t405, ptr %t409 - store i64 %t407, ptr %t403 - %t410 = load %S.ast.Node, ptr %a381 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t410 -endif1654: - %t411 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t412 = load { ptr, i64, i64 }, ptr %t411 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.944, i64 4, i64 0 }, ptr %a414 - %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) - %t416 = icmp eq i32 %t415, 0 - br label %logic.from1668 -logic.from1668: - br i1 %t416, label %logic.rhs1669, label %logic.end1670 -logic.rhs1669: - %t417 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t418 = load { ptr, i64, i64 }, ptr %t417 - store { ptr, i64, i64 } %t418, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.945, i64 6, i64 0 }, ptr %a420 - %t421 = call i32 @finch_str_eq(ptr %a419, ptr %a420) - %t422 = icmp eq i32 %t421, 0 - br label %logic.rend1671 -logic.rend1671: - br label %logic.end1670 -logic.end1670: - %t423 = phi i1 [ false, %logic.from1668 ], [ %t422, %logic.rend1671 ] - br label %logic.from1672 -logic.from1672: - br i1 %t423, label %logic.rhs1673, label %logic.end1674 -logic.rhs1673: - %t424 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.946, i64 3, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br label %logic.rend1675 -logic.rend1675: - br label %logic.end1674 -logic.end1674: - %t430 = phi i1 [ false, %logic.from1672 ], [ %t429, %logic.rend1675 ] - br label %logic.from1676 -logic.from1676: - br i1 %t430, label %logic.rhs1677, label %logic.end1678 -logic.rhs1677: - %t431 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t432 = load { ptr, i64, i64 }, ptr %t431 - store { ptr, i64, i64 } %t432, ptr %a433 - store { ptr, i64, i64 } { ptr @.str.947, i64 2, i64 0 }, ptr %a434 - %t435 = call i32 @finch_str_eq(ptr %a433, ptr %a434) - %t436 = icmp eq i32 %t435, 0 - br label %logic.rend1679 -logic.rend1679: - br label %logic.end1678 -logic.end1678: - %t437 = phi i1 [ false, %logic.from1676 ], [ %t436, %logic.rend1679 ] - br i1 %t437, label %then1680, label %endif1682 -then1680: - %t438 = load ptr, ptr %a1 - %t439 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t438, %S.lexer.Token %t439, { ptr, i64, i64 } { ptr @.str.948, i64 37, i64 0 }) - br label %endif1682 -endif1682: - %t440 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.949, i64 4, i64 0 }, 0 - %t441 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t442 = load i64, ptr %t441 - %t443 = insertvalue %S.ast.Node %t440, i64 %t442, 11 - %t444 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t445 = load i64, ptr %t444 - %t446 = insertvalue %S.ast.Node %t443, i64 %t445, 12 - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic1683, label %ok1684 -panic1683: - call void @finch_panic(ptr @.str.950, i64 593, ptr @.str.951) - unreachable -ok1684: - %t449 = getelementptr inbounds %S.parser.Parser, ptr %t447, i32 0, i32 3 - %t450 = load i64, ptr %t449 - %t451 = insertvalue %S.ast.Node %t446, i64 %t450, 13 - store %S.ast.Node %t451, ptr %a452 - %t453 = getelementptr inbounds %S.ast.Node, ptr %a452, i32 0, i32 9 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i32 0, i32 1 - %t455 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t455, ptr %a456 - call void @finch.copy.S_ast_Node(ptr %a457, ptr %a456) - %t458 = load %S.ast.Node, ptr %a457 - %t459 = load i64, ptr %t454 - %t460 = add i64 %t459, 1 - call void @finch_arr_reserve(ptr %t453, i64 %t460, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t461 = load ptr, ptr %t453 - %t462 = getelementptr inbounds %S.ast.Node, ptr %t461, i64 %t459 - store %S.ast.Node %t458, ptr %t462 - store i64 %t460, ptr %t454 - %t463 = load %S.ast.Node, ptr %a452 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t463 -} - -define internal %S.ast.Node @finch.parser.parseIf(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.952, 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.953, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.954, i64 4, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseExpr(ptr %t10) - %t12 = load i64, ptr %t9 - %t13 = add i64 %t12, 1 - call void @finch_arr_reserve(ptr %t8, i64 %t13, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t14 = load ptr, ptr %t8 - %t15 = getelementptr inbounds %S.ast.Node, ptr %t14, i64 %t12 - store %S.ast.Node %t11, ptr %t15 - store i64 %t13, ptr %t9 - %t16 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 - %t18 = load ptr, ptr %a1 - %t19 = call %S.ast.Node @finch.parser.parseBlock(ptr %t18) - %t20 = load i64, ptr %t17 - %t21 = add i64 %t20, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t21, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t22 = load ptr, ptr %t16 - %t23 = getelementptr inbounds %S.ast.Node, ptr %t22, i64 %t20 - store %S.ast.Node %t19, ptr %t23 - store i64 %t21, ptr %t17 - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.accept(ptr %t24, { ptr, i64, i64 } { ptr @.str.955, i64 4, i64 0 }) - br i1 %t25, label %then1685, label %endif1687 -then1685: - %t26 = load ptr, ptr %a1 - %t27 = call i1 @finch.parser.at(ptr %t26, { ptr, i64, i64 } { ptr @.str.956, i64 2, i64 0 }) - br i1 %t27, label %then1688, label %else1689 -then1688: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.parseIf(ptr %t30) - %t32 = load i64, ptr %t29 - %t33 = add i64 %t32, 1 - call void @finch_arr_reserve(ptr %t28, i64 %t33, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t34 = load ptr, ptr %t28 - %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 - store %S.ast.Node %t31, ptr %t35 - store i64 %t33, ptr %t29 - br label %endif1690 -else1689: - %t36 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load ptr, ptr %a1 - %t39 = call %S.ast.Node @finch.parser.parseBlock(ptr %t38) - %t40 = load i64, ptr %t37 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t36 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t37 - br label %endif1690 -endif1690: - br label %endif1687 -endif1687: - %t44 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t44 -} - -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.957, 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 %then1691, label %endif1693 -then1691: - ret i64 1 -endif1693: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.958, 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 %then1694, label %endif1696 -then1694: - ret i64 2 -endif1696: - %t12 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.959, 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.from1697 -logic.from1697: - br i1 %t16, label %logic.end1699, label %logic.rhs1698 -logic.rhs1698: - %t17 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.960, 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.rend1700 -logic.rend1700: - br label %logic.end1699 -logic.end1699: - %t22 = phi i1 [ true, %logic.from1697 ], [ %t21, %logic.rend1700 ] - br label %logic.from1701 -logic.from1701: - br i1 %t22, label %logic.end1703, label %logic.rhs1702 -logic.rhs1702: - %t23 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.961, 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.rend1704 -logic.rend1704: - br label %logic.end1703 -logic.end1703: - %t28 = phi i1 [ true, %logic.from1701 ], [ %t27, %logic.rend1704 ] - br label %logic.from1705 -logic.from1705: - br i1 %t28, label %logic.end1707, label %logic.rhs1706 -logic.rhs1706: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.962, 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.rend1708 -logic.rend1708: - br label %logic.end1707 -logic.end1707: - %t34 = phi i1 [ true, %logic.from1705 ], [ %t33, %logic.rend1708 ] - br label %logic.from1709 -logic.from1709: - br i1 %t34, label %logic.end1711, label %logic.rhs1710 -logic.rhs1710: - %t35 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.963, 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.rend1712 -logic.rend1712: - br label %logic.end1711 -logic.end1711: - %t40 = phi i1 [ true, %logic.from1709 ], [ %t39, %logic.rend1712 ] - br label %logic.from1713 -logic.from1713: - br i1 %t40, label %logic.end1715, label %logic.rhs1714 -logic.rhs1714: - %t41 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.964, 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.rend1716 -logic.rend1716: - br label %logic.end1715 -logic.end1715: - %t46 = phi i1 [ true, %logic.from1713 ], [ %t45, %logic.rend1716 ] - br i1 %t46, label %then1717, label %endif1719 -then1717: - ret i64 3 -endif1719: - %t47 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.965, 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.from1720 -logic.from1720: - br i1 %t51, label %logic.end1722, label %logic.rhs1721 -logic.rhs1721: - %t52 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.966, 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.rend1723 -logic.rend1723: - br label %logic.end1722 -logic.end1722: - %t57 = phi i1 [ true, %logic.from1720 ], [ %t56, %logic.rend1723 ] - br label %logic.from1724 -logic.from1724: - br i1 %t57, label %logic.end1726, label %logic.rhs1725 -logic.rhs1725: - %t58 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.967, 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.rend1727 -logic.rend1727: - br label %logic.end1726 -logic.end1726: - %t63 = phi i1 [ true, %logic.from1724 ], [ %t62, %logic.rend1727 ] - br label %logic.from1728 -logic.from1728: - br i1 %t63, label %logic.end1730, label %logic.rhs1729 -logic.rhs1729: - %t64 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.968, 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.rend1731 -logic.rend1731: - br label %logic.end1730 -logic.end1730: - %t69 = phi i1 [ true, %logic.from1728 ], [ %t68, %logic.rend1731 ] - br i1 %t69, label %then1732, label %endif1734 -then1732: - ret i64 4 -endif1734: - %t70 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.969, 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.from1735 -logic.from1735: - br i1 %t74, label %logic.end1737, label %logic.rhs1736 -logic.rhs1736: - %t75 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.970, 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.rend1738 -logic.rend1738: - br label %logic.end1737 -logic.end1737: - %t80 = phi i1 [ true, %logic.from1735 ], [ %t79, %logic.rend1738 ] - br label %logic.from1739 -logic.from1739: - br i1 %t80, label %logic.end1741, label %logic.rhs1740 -logic.rhs1740: - %t81 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.971, 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.rend1742 -logic.rend1742: - br label %logic.end1741 -logic.end1741: - %t86 = phi i1 [ true, %logic.from1739 ], [ %t85, %logic.rend1742 ] - br label %logic.from1743 -logic.from1743: - br i1 %t86, label %logic.end1745, label %logic.rhs1744 -logic.rhs1744: - %t87 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.972, 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.rend1746 -logic.rend1746: - br label %logic.end1745 -logic.end1745: - %t92 = phi i1 [ true, %logic.from1743 ], [ %t91, %logic.rend1746 ] - br label %logic.from1747 -logic.from1747: - br i1 %t92, label %logic.end1749, label %logic.rhs1748 -logic.rhs1748: - %t93 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.973, 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.rend1750 -logic.rend1750: - br label %logic.end1749 -logic.end1749: - %t98 = phi i1 [ true, %logic.from1747 ], [ %t97, %logic.rend1750 ] - br label %logic.from1751 -logic.from1751: - br i1 %t98, label %logic.end1753, label %logic.rhs1752 -logic.rhs1752: - %t99 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.974, 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.rend1754 -logic.rend1754: - br label %logic.end1753 -logic.end1753: - %t104 = phi i1 [ true, %logic.from1751 ], [ %t103, %logic.rend1754 ] - br i1 %t104, label %then1755, label %endif1757 -then1755: - ret i64 5 -endif1757: - 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 - %a15 = alloca %S.ast.Node, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a22 = alloca %S.ast.Node, align 16 - %a23 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1) - 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.from1758 -logic.from1758: - br i1 %t7, label %logic.end1760, label %logic.rhs1759 -logic.rhs1759: - %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.975, i64 2, i64 0 }) - %t10 = xor i1 %t9, true - br label %logic.rend1761 -logic.rend1761: - br label %logic.end1760 -logic.end1760: - %t11 = phi i1 [ true, %logic.from1758 ], [ %t10, %logic.rend1761 ] - br i1 %t11, label %then1762, label %endif1764 -then1762: - %t12 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t12 -endif1764: - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.node(ptr %t13, { ptr, i64, i64 } { ptr @.str.976, i64 2, i64 0 }) - store %S.ast.Node %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = call %S.lexer.Token @finch.parser.next(ptr %t16) - store %S.lexer.Token %t17, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - %t19 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t21, ptr %a22 - call void @finch.copy.S_ast_Node(ptr %a23, ptr %a22) - %t24 = load %S.ast.Node, ptr %a23 - %t25 = load i64, ptr %t20 - %t26 = add i64 %t25, 1 - call void @finch_arr_reserve(ptr %t19, i64 %t26, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t27 = load ptr, ptr %t19 - %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 %t25 - store %S.ast.Node %t24, ptr %t28 - store i64 %t26, ptr %t20 - %t29 = load ptr, ptr %a1 - %t30 = call i1 @finch.parser.at(ptr %t29, { ptr, i64, i64 } { ptr @.str.977, i64 1, i64 0 }) - br i1 %t30, label %then1765, label %else1766 -then1765: - %t31 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 6 - store i1 true, ptr %t31 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i32 0, i32 1 - %t34 = load ptr, ptr %a1 - %t35 = call %S.ast.Node @finch.parser.parseBlock(ptr %t34) - %t36 = load i64, ptr %t33 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t32, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t32 - %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 - store %S.ast.Node %t35, ptr %t39 - store i64 %t37, ptr %t33 - br label %endif1767 -else1766: - %t40 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseExpr(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - br label %endif1767 -endif1767: - %t48 = load %S.ast.Node, ptr %a15 - call void @finch.drop.S_ast_Node(ptr %a4) - ret %S.ast.Node %t48 -} - -define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a11 = alloca %S.ast.Node, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.ast.Node, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.lexer.Token, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a55 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load i64, ptr %a2 - %t4 = icmp sgt i64 %t3, 5 - br i1 %t4, label %then1768, label %endif1770 -then1768: - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) - ret %S.ast.Node %t6 -endif1770: - %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.cond1771 -while.cond1771: - %t12 = load ptr, ptr %a1 - %t13 = call i1 @finch.parser.sameLine(ptr %t12) - br label %logic.from1774 -logic.from1774: - br i1 %t13, label %logic.rhs1775, label %logic.end1776 -logic.rhs1775: - %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) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load i64, ptr %a2 - %t19 = icmp eq i64 %t16, %t18 - br label %logic.rend1777 -logic.rend1777: - br label %logic.end1776 -logic.end1776: - %t20 = phi i1 [ false, %logic.from1774 ], [ %t19, %logic.rend1777 ] - br i1 %t20, label %while.body1772, label %while.end1773 -while.body1772: - %t21 = load ptr, ptr %a1 - %t22 = call %S.ast.Node @finch.parser.node(ptr %t21, { ptr, i64, i64 } { ptr @.str.978, i64 6, i64 0 }) - store %S.ast.Node %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.next(ptr %t24) - %t26 = extractvalue %S.lexer.Token %t25, 0 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_copy(ptr %a28, ptr %a27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store %S.lexer.Token %t25, ptr %a30 - call void @finch.drop.S_lexer_Token(ptr %a30) - %t31 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t29, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 - %t36 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t36, ptr %a37 - call void @finch.copy.S_ast_Node(ptr %a38, ptr %a37) - %t39 = load %S.ast.Node, ptr %a38 - %t40 = load i64, ptr %t35 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t34, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t34 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a2 - %t48 = add i64 %t47, 1 - %t49 = call %S.ast.Node @finch.parser.parseBinary(ptr %t46, i64 %t48) - %t50 = load i64, ptr %t45 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t44 - %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 %t50 - store %S.ast.Node %t49, ptr %t53 - store i64 %t51, ptr %t45 - %t54 = load %S.ast.Node, ptr %a23 - store %S.ast.Node %t54, ptr %a55 - call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) - %t57 = load %S.ast.Node, ptr %a56 - %t58 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t57, ptr %a11 - store %S.ast.Node %t58, ptr %a59 - call void @finch.drop.S_ast_Node(ptr %a59) - call void @finch.drop.S_ast_Node(ptr %a23) - br label %while.cond1771 -while.end1773: - %t60 = load %S.ast.Node, ptr %a11 - ret %S.ast.Node %t60 -} - -define internal %S.ast.Node @finch.parser.parseUnary(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.ast.Node, align 16 - %a9 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.979, i64 3, i64 0 }) - br i1 %t3, label %then1778, label %endif1780 -then1778: - %t4 = load ptr, ptr %a1 - %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.980, 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) - store %S.lexer.Token %t8, ptr %a9 - call void @finch.drop.S_lexer_Token(ptr %a9) - %t10 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load ptr, ptr %a1 - %t13 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t12) - %t14 = load i64, ptr %t11 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %t10 - %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 - store %S.ast.Node %t13, ptr %t17 - store i64 %t15, ptr %t11 - %t18 = load %S.ast.Node, ptr %a6 - ret %S.ast.Node %t18 -endif1780: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.981, i64 1, i64 0 }) - br label %logic.from1781 -logic.from1781: - br i1 %t20, label %logic.end1783, label %logic.rhs1782 -logic.rhs1782: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.982, i64 1, i64 0 }) - br label %logic.rend1784 -logic.rend1784: - br label %logic.end1783 -logic.end1783: - %t23 = phi i1 [ true, %logic.from1781 ], [ %t22, %logic.rend1784 ] - br label %logic.from1785 -logic.from1785: - br i1 %t23, label %logic.end1787, label %logic.rhs1786 -logic.rhs1786: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }) - br label %logic.rend1788 -logic.rend1788: - br label %logic.end1787 -logic.end1787: - %t26 = phi i1 [ true, %logic.from1785 ], [ %t25, %logic.rend1788 ] - br i1 %t26, label %then1789, label %endif1791 -then1789: - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.node(ptr %t27, { ptr, i64, i64 } { ptr @.str.984, i64 5, i64 0 }) - store %S.ast.Node %t28, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = call %S.lexer.Token @finch.parser.next(ptr %t30) - %t32 = extractvalue %S.lexer.Token %t31, 0 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_copy(ptr %a34, ptr %a33) - %t35 = load { ptr, i64, i64 }, ptr %a34 - store %S.lexer.Token %t31, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - %t37 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t35, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseUnary(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - %t48 = load %S.ast.Node, ptr %a29 - ret %S.ast.Node %t48 -endif1791: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t49) - ret %S.ast.Node %t50 -} - -define internal void @finch.parser.parseArgs(ptr %p0, ptr %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca ptr, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a17 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.985, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.986, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1792, label %ok1793 -panic1792: - call void @finch_panic(ptr @.str.987, i64 686, ptr @.str.988) - unreachable -ok1793: - %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 2 - %t9 = load i64, ptr %t8 - %t10 = add i64 %t9, 1 - store i64 %t10, ptr %t8 - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.989, i64 1, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1794, label %endif1796 -then1794: - br label %while.cond1797 -while.cond1797: - %t14 = load ptr, ptr %a1 - %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.990, i64 1, i64 0 }) - %t16 = xor i1 %t15, true - br i1 %t16, label %while.body1798, label %while.end1799 -while.body1798: - store { ptr, i64, i64 } { ptr @.str.991, i64 0, i64 0 }, ptr %a17 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.992, i64 5, i64 0 }) - br label %logic.from1800 -logic.from1800: - br i1 %t19, label %logic.rhs1801, label %logic.end1802 -logic.rhs1801: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t20, i64 1) - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.993, i64 1, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - br label %logic.rend1803 -logic.rend1803: - br label %logic.end1802 -logic.end1802: - %t27 = phi i1 [ false, %logic.from1800 ], [ %t25, %logic.rend1803 ] - br i1 %t27, label %then1804, label %endif1806 -then1804: - %t28 = load ptr, ptr %a1 - %t29 = call %S.lexer.Token @finch.parser.next(ptr %t28) - %t30 = extractvalue %S.lexer.Token %t29, 1 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_copy(ptr %a32, ptr %a31) - %t33 = load { ptr, i64, i64 }, ptr %a32 - store %S.lexer.Token %t29, ptr %a34 - call void @finch.drop.S_lexer_Token(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t33, ptr %a17 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.next(ptr %t37) - store %S.lexer.Token %t38, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - br label %endif1806 -endif1806: - %t40 = load ptr, ptr %a2 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic1807, label %ok1808 -panic1807: - call void @finch_panic(ptr @.str.994, i64 694, ptr @.str.995) - unreachable -ok1808: - %t42 = getelementptr inbounds %S.ast.Node, ptr %t40, i32 0, i32 10 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - %t48 = load i64, ptr %t43 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t42 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t43 - %t52 = load ptr, ptr %a2 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic1809, label %ok1810 -panic1809: - call void @finch_panic(ptr @.str.996, i64 695, ptr @.str.997) - unreachable -ok1810: - %t54 = getelementptr inbounds %S.ast.Node, ptr %t52, i32 0, i32 9 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 - %t56 = load ptr, ptr %a1 - %t57 = call %S.ast.Node @finch.parser.parseExpr(ptr %t56) - %t58 = load i64, ptr %t55 - %t59 = add i64 %t58, 1 - call void @finch_arr_reserve(ptr %t54, i64 %t59, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t60 = load ptr, ptr %t54 - %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i64 %t58 - store %S.ast.Node %t57, ptr %t61 - store i64 %t59, ptr %t55 - %t62 = load ptr, ptr %a1 - %t63 = call i1 @finch.parser.accept(ptr %t62, { ptr, i64, i64 } { ptr @.str.998, i64 1, i64 0 }) - %t64 = xor i1 %t63, true - br i1 %t64, label %then1811, label %endif1813 -then1811: - call void @finch_str_drop(ptr %a17) - br label %while.end1799 -endif1813: - call void @finch_str_drop(ptr %a17) - br label %while.cond1797 -while.end1799: - br label %endif1796 -endif1796: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic1814, label %ok1815 -panic1814: - call void @finch_panic(ptr @.str.999, i64 701, ptr @.str.1000) - unreachable -ok1815: - %t67 = getelementptr inbounds %S.parser.Parser, ptr %t65, i32 0, i32 2 - %t68 = load i64, ptr %t67 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %t67 - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.1001, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1002, i64 3, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - 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 - %a14 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.ast.Node, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a40 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 - %a57 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a69 = alloca %S.ast.Node, align 16 - %a70 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.ast.Node, align 16 - %a94 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parsePrimary(ptr %t2) - store %S.ast.Node %t3, ptr %a4 - br label %while.cond1816 -while.cond1816: - %t5 = load ptr, ptr %a1 - %t6 = call i1 @finch.parser.sameLine(ptr %t5) - br i1 %t6, label %while.body1817, label %while.end1818 -while.body1817: - %t7 = load ptr, ptr %a1 - %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.1003, i64 1, i64 0 }) - br i1 %t8, label %then1819, label %else1820 -then1819: - %t9 = load ptr, ptr %a1 - %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.1004, 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) - store %S.lexer.Token %t13, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.expect(ptr %t15, { ptr, i64, i64 } { ptr @.str.1005, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.1006, i64 16, i64 0 }) - %t17 = extractvalue %S.lexer.Token %t16, 1 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store %S.lexer.Token %t16, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t20, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t27, ptr %a28 - call void @finch.copy.S_ast_Node(ptr %a29, ptr %a28) - %t30 = load %S.ast.Node, ptr %a29 - %t31 = load i64, ptr %t26 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t25 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 - store %S.ast.Node %t30, ptr %t34 - store i64 %t32, ptr %t26 - %t35 = load ptr, ptr %a1 - %t36 = call i1 @finch.parser.at(ptr %t35, { ptr, i64, i64 } { ptr @.str.1007, i64 1, i64 0 }) - br label %logic.from1822 -logic.from1822: - br i1 %t36, label %logic.rhs1823, label %logic.end1824 -logic.rhs1823: - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.cur(ptr %t37) - %t39 = extractvalue %S.lexer.Token %t38, 4 - store %S.lexer.Token %t38, ptr %a40 - call void @finch.drop.S_lexer_Token(ptr %a40) - %t41 = xor i1 %t39, true - br label %logic.rend1825 -logic.rend1825: - br label %logic.end1824 -logic.end1824: - %t42 = phi i1 [ false, %logic.from1822 ], [ %t41, %logic.rend1825 ] - br i1 %t42, label %then1826, label %endif1828 -then1826: - %t43 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.1008, i64 6, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t46, ptr %a11) - br label %endif1828 -endif1828: - %t47 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t47, ptr %a48 - call void @finch.copy.S_ast_Node(ptr %a49, ptr %a48) - %t50 = load %S.ast.Node, ptr %a49 - %t51 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t50, ptr %a4 - store %S.ast.Node %t51, ptr %a52 - call void @finch.drop.S_ast_Node(ptr %a52) - call void @finch.drop.S_ast_Node(ptr %a11) - br label %endif1821 -else1820: - %t53 = load ptr, ptr %a1 - %t54 = call i1 @finch.parser.at(ptr %t53, { ptr, i64, i64 } { ptr @.str.1009, i64 1, i64 0 }) - br i1 %t54, label %then1829, label %else1830 -then1829: - %t55 = load ptr, ptr %a1 - %t56 = call %S.ast.Node @finch.parser.node(ptr %t55, { ptr, i64, i64 } { ptr @.str.1010, i64 5, i64 0 }) - store %S.ast.Node %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = call %S.lexer.Token @finch.parser.next(ptr %t58) - store %S.lexer.Token %t59, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic1832, label %ok1833 -panic1832: - call void @finch_panic(ptr @.str.1011, i64 721, ptr @.str.1012) - unreachable -ok1833: - %t63 = getelementptr inbounds %S.parser.Parser, ptr %t61, i32 0, i32 2 - %t64 = load i64, ptr %t63 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %t63 - %t66 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 - %t68 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t68, ptr %a69 - call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) - %t71 = load %S.ast.Node, ptr %a70 - %t72 = load i64, ptr %t67 - %t73 = add i64 %t72, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t74 = load ptr, ptr %t66 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 - store %S.ast.Node %t71, ptr %t75 - store i64 %t73, ptr %t67 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic1834, label %ok1835 -panic1834: - call void @finch_panic(ptr @.str.1013, i64 724, ptr @.str.1014) - unreachable -ok1835: - %t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 2 - %t87 = load i64, ptr %t86 - %t88 = sub i64 %t87, 1 - store i64 %t88, ptr %t86 - %t89 = load ptr, ptr %a1 - %t90 = call %S.lexer.Token @finch.parser.expect(ptr %t89, { ptr, i64, i64 } { ptr @.str.1015, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1016, i64 3, i64 0 }) - store %S.lexer.Token %t90, ptr %a91 - call void @finch.drop.S_lexer_Token(ptr %a91) - %t92 = load %S.ast.Node, ptr %a57 - store %S.ast.Node %t92, ptr %a93 - call void @finch.copy.S_ast_Node(ptr %a94, ptr %a93) - %t95 = load %S.ast.Node, ptr %a94 - %t96 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t95, ptr %a4 - store %S.ast.Node %t96, ptr %a97 - call void @finch.drop.S_ast_Node(ptr %a97) - call void @finch.drop.S_ast_Node(ptr %a57) - br label %endif1831 -else1830: - %t98 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t98 -endif1831: - br label %endif1821 -endif1821: - br label %while.cond1816 -while.end1818: - %t99 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t99 -} - -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 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca %S.lexer.Token, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.lexer.Token, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.lexer.Token, align 16 - %a122 = alloca %S.ast.Node, align 16 - %a130 = alloca %S.lexer.Token, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.lexer.Token, align 16 - %a219 = alloca %S.lexer.Token, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.lexer.Token, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca %S.lexer.Token, align 16 - %a268 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.lexer.Token, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca %S.lexer.Token, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.lexer.Token @finch.parser.cur(ptr %t2) - store %S.lexer.Token %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.1017, 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.1018, 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.from1836 -logic.from1836: - br i1 %t18, label %logic.end1838, label %logic.rhs1837 -logic.rhs1837: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1019, 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.rend1839 -logic.rend1839: - br label %logic.end1838 -logic.end1838: - %t24 = phi i1 [ true, %logic.from1836 ], [ %t23, %logic.rend1839 ] - br label %logic.from1840 -logic.from1840: - br i1 %t24, label %logic.end1842, label %logic.rhs1841 -logic.rhs1841: - %t25 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1020, 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.rend1843 -logic.rend1843: - br label %logic.end1842 -logic.end1842: - %t30 = phi i1 [ true, %logic.from1840 ], [ %t29, %logic.rend1843 ] - br i1 %t30, label %then1844, label %endif1846 -then1844: - %t31 = load ptr, ptr %a1 - %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) - store %S.lexer.Token %t32, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a13 - %t35 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } %t34, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = load { ptr, i64, i64 }, ptr %t35 - store { ptr, i64, i64 } %t38, ptr %t35 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_copy(ptr %a45, ptr %a44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - %t47 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t46, ptr %t43 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t49 -endif1846: - %t50 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1021, i64 6, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1847, label %endif1849 -then1847: - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.next(ptr %t55) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } { ptr @.str.1022, i64 3, i64 0 }, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t62, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t66, ptr %t63 - store { ptr, i64, i64 } %t67, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t69 -endif1849: - %t70 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1023, i64 4, i64 0 }, ptr %a72 - %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) - %t74 = icmp ne i32 %t73, 0 - br label %logic.from1850 -logic.from1850: - br i1 %t74, label %logic.end1852, label %logic.rhs1851 -logic.rhs1851: - %t75 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1024, i64 5, i64 0 }, ptr %a77 - %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) - %t79 = icmp ne i32 %t78, 0 - br label %logic.rend1853 -logic.rend1853: - br label %logic.end1852 -logic.end1852: - %t80 = phi i1 [ true, %logic.from1850 ], [ %t79, %logic.rend1853 ] - br i1 %t80, label %then1854, label %endif1856 -then1854: - %t81 = load ptr, ptr %a1 - %t82 = call %S.lexer.Token @finch.parser.next(ptr %t81) - store %S.lexer.Token %t82, ptr %a83 - call void @finch.drop.S_lexer_Token(ptr %a83) - %t84 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } { ptr @.str.1025, i64 4, i64 0 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a13 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t94 -endif1856: - %t95 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.1026, i64 4, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then1857, label %endif1859 -then1857: - %t100 = load ptr, ptr %a1 - %t101 = call %S.lexer.Token @finch.parser.next(ptr %t100) - store %S.lexer.Token %t101, ptr %a102 - call void @finch.drop.S_lexer_Token(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } { ptr @.str.1027, i64 4, i64 0 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t106 -endif1859: - %t107 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1028, i64 1, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then1860, label %endif1862 -then1860: - %t112 = load ptr, ptr %a1 - %t113 = call %S.lexer.Token @finch.parser.next(ptr %t112) - store %S.lexer.Token %t113, ptr %a114 - call void @finch.drop.S_lexer_Token(ptr %a114) - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic1863, label %ok1864 -panic1863: - call void @finch_panic(ptr @.str.1029, i64 763, ptr @.str.1030) - unreachable -ok1864: - %t117 = getelementptr inbounds %S.parser.Parser, ptr %t115, i32 0, i32 2 - %t118 = load i64, ptr %t117 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %t117 - %t120 = load ptr, ptr %a1 - %t121 = call %S.ast.Node @finch.parser.parseExpr(ptr %t120) - store %S.ast.Node %t121, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic1865, label %ok1866 -panic1865: - call void @finch_panic(ptr @.str.1031, i64 765, ptr @.str.1032) - unreachable -ok1866: - %t125 = getelementptr inbounds %S.parser.Parser, ptr %t123, i32 0, i32 2 - %t126 = load i64, ptr %t125 - %t127 = sub i64 %t126, 1 - store i64 %t127, ptr %t125 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.expect(ptr %t128, { ptr, i64, i64 } { ptr @.str.1033, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1034, i64 3, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - %t131 = load %S.ast.Node, ptr %a122 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t131 -endif1862: - %t132 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1035, i64 5, i64 0 }, ptr %a134 - %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) - %t136 = icmp ne i32 %t135, 0 - br i1 %t136, label %then1867, label %endif1869 -then1867: - %t137 = load ptr, ptr %a1 - %t138 = call %S.ast.Node @finch.parser.parseMatch(ptr %t137, i1 true) - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t138 -endif1869: - %t139 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1036, i64 1, i64 0 }, ptr %a141 - %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) - %t143 = icmp ne i32 %t142, 0 - br i1 %t143, label %then1870, label %endif1872 -then1870: - %t144 = load ptr, ptr %a1 - %t145 = call %S.lexer.Token @finch.parser.next(ptr %t144) - store %S.lexer.Token %t145, ptr %a146 - call void @finch.drop.S_lexer_Token(ptr %a146) - %t147 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.1037, i64 5, i64 0 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic1873, label %ok1874 -panic1873: - call void @finch_panic(ptr @.str.1038, i64 775, ptr @.str.1039) - unreachable -ok1874: - %t152 = getelementptr inbounds %S.parser.Parser, ptr %t150, i32 0, i32 2 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - store i64 %t154, ptr %t152 - %t155 = load ptr, ptr %a1 - %t156 = call i1 @finch.parser.at(ptr %t155, { ptr, i64, i64 } { ptr @.str.1040, i64 1, i64 0 }) - br label %logic.from1875 -logic.from1875: - br i1 %t156, label %logic.rhs1876, label %logic.end1877 -logic.rhs1876: - %t157 = load ptr, ptr %a1 - %t158 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t157, i64 1) - store { ptr, i64, i64 } %t158, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.1041, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - br label %logic.rend1878 -logic.rend1878: - br label %logic.end1877 -logic.end1877: - %t164 = phi i1 [ false, %logic.from1875 ], [ %t162, %logic.rend1878 ] - br i1 %t164, label %then1879, label %endif1881 -then1879: - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } { ptr @.str.1042, i64 3, i64 0 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1881 -endif1881: - br label %while.cond1882 -while.cond1882: - %t171 = load ptr, ptr %a1 - %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1043, i64 1, i64 0 }) - %t173 = xor i1 %t172, true - br i1 %t173, label %while.body1883, label %while.end1884 -while.body1883: - %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 - %t176 = load ptr, ptr %a1 - %t177 = call %S.ast.Node @finch.parser.parseExpr(ptr %t176) - %t178 = load i64, ptr %t175 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t174, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t174 - %t181 = getelementptr inbounds %S.ast.Node, ptr %t180, i64 %t178 - store %S.ast.Node %t177, ptr %t181 - store i64 %t179, ptr %t175 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = icmp eq i64 %t184, 1 - br label %logic.from1885 -logic.from1885: - br i1 %t185, label %logic.rhs1886, label %logic.end1887 -logic.rhs1886: - %t186 = load ptr, ptr %a1 - %t187 = call i1 @finch.parser.at(ptr %t186, { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }) - br label %logic.rend1888 -logic.rend1888: - br label %logic.end1887 -logic.end1887: - %t188 = phi i1 [ false, %logic.from1885 ], [ %t187, %logic.rend1888 ] - br i1 %t188, label %then1889, label %endif1891 -then1889: - %t189 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.1045, i64 3, i64 0 }, ptr %t189 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - br label %endif1891 -endif1891: - %t192 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.1046, i64 3, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then1892, label %endif1894 -then1892: - %t198 = load ptr, ptr %a1 - %t199 = call %S.lexer.Token @finch.parser.expect(ptr %t198, { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1048, i64 41, i64 0 }) - store %S.lexer.Token %t199, ptr %a200 - call void @finch.drop.S_lexer_Token(ptr %a200) - %t201 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load ptr, ptr %a1 - %t204 = call %S.ast.Node @finch.parser.parseExpr(ptr %t203) - %t205 = load i64, ptr %t202 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t201, i64 %t206, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t201 - %t208 = getelementptr inbounds %S.ast.Node, ptr %t207, i64 %t205 - store %S.ast.Node %t204, ptr %t208 - store i64 %t206, ptr %t202 - br label %endif1894 -endif1894: - %t209 = load ptr, ptr %a1 - %t210 = call i1 @finch.parser.accept(ptr %t209, { ptr, i64, i64 } { ptr @.str.1049, i64 1, i64 0 }) - %t211 = xor i1 %t210, true - br i1 %t211, label %then1895, label %endif1897 -then1895: - br label %while.end1884 -endif1897: - br label %while.cond1882 -while.end1884: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic1898, label %ok1899 -panic1898: - call void @finch_panic(ptr @.str.1050, i64 793, ptr @.str.1051) - unreachable -ok1899: - %t214 = getelementptr inbounds %S.parser.Parser, ptr %t212, i32 0, i32 2 - %t215 = load i64, ptr %t214 - %t216 = sub i64 %t215, 1 - store i64 %t216, ptr %t214 - %t217 = load ptr, ptr %a1 - %t218 = call %S.lexer.Token @finch.parser.expect(ptr %t217, { ptr, i64, i64 } { ptr @.str.1052, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1053, i64 3, i64 0 }) - store %S.lexer.Token %t218, ptr %a219 - call void @finch.drop.S_lexer_Token(ptr %a219) - %t220 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t220 -endif1872: - %t221 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t221, ptr %a222 - store { ptr, i64, i64 } { ptr @.str.1054, i64 5, i64 0 }, ptr %a223 - %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) - %t225 = icmp ne i32 %t224, 0 - br i1 %t225, label %then1900, label %endif1902 -then1900: - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.next(ptr %t226) - store %S.lexer.Token %t227, ptr %a228 - call void @finch.drop.S_lexer_Token(ptr %a228) - %t229 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t230 = load { ptr, i64, i64 }, ptr %t229 - %t231 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_copy(ptr %a233, ptr %a232) - %t234 = load { ptr, i64, i64 }, ptr %a233 - %t235 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t234, ptr %t231 - store { ptr, i64, i64 } %t235, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load ptr, ptr %a1 - %t238 = call i1 @finch.parser.at(ptr %t237, { ptr, i64, i64 } { ptr @.str.1055, i64 1, i64 0 }) - br label %logic.from1903 -logic.from1903: - br i1 %t238, label %logic.rhs1904, label %logic.end1905 -logic.rhs1904: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic1906, label %ok1907 -panic1906: - call void @finch_panic(ptr @.str.1056, i64 800, ptr @.str.1057) - unreachable -ok1907: - %t241 = getelementptr inbounds %S.parser.Parser, ptr %t239, i32 0, i32 0 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic1908, label %ok1909 -panic1908: - call void @finch_panic(ptr @.str.1058, i64 800, ptr @.str.1059) - unreachable -ok1909: - %t244 = getelementptr inbounds %S.parser.Parser, ptr %t242, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = sub i64 %t245, 1 - %t247 = load { ptr, i64, i64 }, ptr %t241 - %t248 = extractvalue { ptr, i64, i64 } %t247, 1 - %t249 = icmp uge i64 %t246, %t248 - br i1 %t249, label %range1910, label %inrange1911 -range1910: - call void @finch_panic_index(ptr @.str.1060, i64 800, i64 %t246, i64 %t248) - unreachable -inrange1911: - %t250 = extractvalue { ptr, i64, i64 } %t247, 0 - %t251 = getelementptr inbounds %S.lexer.Token, ptr %t250, i64 %t246 - %t252 = getelementptr inbounds %S.lexer.Token, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.1061, i64 5, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br label %logic.rend1912 -logic.rend1912: - br label %logic.end1905 -logic.end1905: - %t258 = phi i1 [ false, %logic.from1903 ], [ %t257, %logic.rend1912 ] - br label %logic.from1913 -logic.from1913: - br i1 %t258, label %logic.rhs1914, label %logic.end1915 -logic.rhs1914: - %t259 = load ptr, ptr %a1 - %t260 = call i1 @finch.parser.genericCallAheadFrom(ptr %t259) - br label %logic.rend1916 -logic.rend1916: - br label %logic.end1915 -logic.end1915: - %t261 = phi i1 [ false, %logic.from1913 ], [ %t260, %logic.rend1916 ] - br i1 %t261, label %then1917, label %endif1919 -then1917: - %t262 = load ptr, ptr %a1 - %t263 = call %S.lexer.Token @finch.parser.next(ptr %t262) - store %S.lexer.Token %t263, ptr %a264 - call void @finch.drop.S_lexer_Token(ptr %a264) - %t265 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1062, i64 5, i64 0 }, 0 - %t266 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t267 = load %S.ast.Type, ptr %t266 - store %S.ast.Type %t265, ptr %t266 - store %S.ast.Type %t267, ptr %a268 - call void @finch.drop.S_ast_Type(ptr %a268) - br label %while.cond1920 -while.cond1920: - br label %while.body1921 -while.body1921: - %t269 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t270 = getelementptr inbounds %S.ast.Type, ptr %t269, i32 0, i32 1 - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i32 0, i32 1 - %t272 = load ptr, ptr %a1 - %t273 = call %S.ast.Type @finch.parser.parseType(ptr %t272) - %t274 = load i64, ptr %t271 - %t275 = add i64 %t274, 1 - call void @finch_arr_reserve(ptr %t270, i64 %t275, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t276 = load ptr, ptr %t270 - %t277 = getelementptr inbounds %S.ast.Type, ptr %t276, i64 %t274 - store %S.ast.Type %t273, ptr %t277 - store i64 %t275, ptr %t271 - %t278 = load ptr, ptr %a1 - %t279 = call i1 @finch.parser.accept(ptr %t278, { ptr, i64, i64 } { ptr @.str.1063, i64 1, i64 0 }) - %t280 = xor i1 %t279, true - br i1 %t280, label %then1923, label %endif1925 -then1923: - br label %while.end1922 -endif1925: - br label %while.cond1920 -while.end1922: - %t281 = load ptr, ptr %a1 - %t282 = call %S.lexer.Token @finch.parser.expect(ptr %t281, { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1065, i64 28, i64 0 }) - store %S.lexer.Token %t282, ptr %a283 - call void @finch.drop.S_lexer_Token(ptr %a283) - %t284 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.1066, i64 4, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t287, ptr %a7) - %t288 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t288 -endif1919: - %t289 = load ptr, ptr %a1 - %t290 = call i1 @finch.parser.at(ptr %t289, { ptr, i64, i64 } { ptr @.str.1067, i64 1, i64 0 }) - br label %logic.from1926 -logic.from1926: - br i1 %t290, label %logic.rhs1927, label %logic.end1928 -logic.rhs1927: - %t291 = load ptr, ptr %a1 - %t292 = call %S.lexer.Token @finch.parser.cur(ptr %t291) - %t293 = extractvalue %S.lexer.Token %t292, 4 - store %S.lexer.Token %t292, ptr %a294 - call void @finch.drop.S_lexer_Token(ptr %a294) - %t295 = xor i1 %t293, true - br label %logic.rend1929 -logic.rend1929: - br label %logic.end1928 -logic.end1928: - %t296 = phi i1 [ false, %logic.from1926 ], [ %t295, %logic.rend1929 ] - br i1 %t296, label %then1930, label %endif1932 -then1930: - %t297 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } { ptr @.str.1068, i64 4, i64 0 }, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t300, ptr %a7) - %t301 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t301 -endif1932: - %t302 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store { ptr, i64, i64 } { ptr @.str.1069, i64 3, i64 0 }, ptr %t302 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t305 -endif1902: - %t306 = load ptr, ptr %a1 - %t307 = load %S.lexer.Token, ptr %a4 - %t308 = load %S.lexer.Token, ptr %a4 - %t309 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t308) - store { ptr, i64, i64 } { ptr @.str.1070, i64 11, i64 0 }, ptr %a311 - store { ptr, i64, i64 } %t309, ptr %a312 - call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) - store { ptr, i64, i64 } %t309, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a310 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.1071, i64 19, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - call void @finch.parser.fail(ptr %t306, %S.lexer.Token %t307, { ptr, i64, i64 } %t319) - store { ptr, i64, i64 } %t319, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t321 -} - -define internal void @finch.copy.arr_S_lexer_Token(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond1933 -n.cond1933: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body1934, label %n.end1935 -n.body1934: - %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.cond1933 -n.end1935: - ret void -} - -define internal void @finch.drop.S_parser_Parser(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lexer_Token(ptr %t1) - %t2 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) { -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) - call void @finch.drop.S_parser_Parser(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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1073, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1074, 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.1076, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1077, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1079, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1080, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t18 -} - -define internal void @finch.gen.noteRef(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4, { ptr, i64, i64 } %p5, i64 %p6, i64 %p7) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic1936, label %ok1937 -panic1936: - call void @finch_panic(ptr @.str.1081, i64 232, ptr @.str.1082) - unreachable -ok1937: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - %t13 = xor i1 %t12, true - br i1 %t13, label %then1938, label %endif1940 -then1938: - ret void -endif1940: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic1941, label %ok1942 -panic1941: - call void @finch_panic(ptr @.str.1083, i64 235, ptr @.str.1084) - unreachable -ok1942: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 29 - %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 %panic1943, label %ok1944 -panic1943: - call void @finch_panic(ptr @.str.1086, i64 235, ptr @.str.1087) - unreachable -ok1944: - %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 %range1945, label %inrange1946 -range1945: - call void @finch_panic_index(ptr @.str.1088, i64 235, i64 %t22, i64 %t24) - unreachable -inrange1946: - %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.1085, 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.1089, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1090, i64 1, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a54, i64 %t53) - %t55 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1091, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a68, i64 %t67) - %t69 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.1092, i64 1, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.1093, i64 1, i64 0 }, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a93, i64 %t92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t91, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1094, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t105, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1095, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a5 - %t121 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t120) - store { ptr, i64, i64 } %t119, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t119, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - %t128 = load i64, ptr %t17 - %t129 = add i64 %t128, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t129, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t130 = load ptr, ptr %t16 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i64 %t128 - store { ptr, i64, i64 } %t127, ptr %t131 - store i64 %t129, ptr %t17 - ret void -} - -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %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 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - store %S.gen.FnSig %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond1947 -for.cond1947: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body1948, label %for.end1950 -for.body1948: - %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 %range1951, label %inrange1952 -range1951: - call void @finch_panic_index(ptr @.str.1096, i64 242, i64 %t11, i64 %t13) - unreachable -inrange1952: - %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.1097, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 - %t25 = load i64, ptr %a6 - %t26 = load { ptr, i64, i64 }, ptr %t24 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 %t25, %t27 - br i1 %t28, label %range1953, label %inrange1954 -range1953: - call void @finch_panic_index(ptr @.str.1098, i64 242, i64 %t25, i64 %t27) - unreachable -inrange1954: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 - %t31 = load { ptr, i64, i64 }, ptr %t30 - store { ptr, i64, i64 } %t23, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t23, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = load i64, ptr %t9 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t38, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %a2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t37 - store { ptr, i64, i64 } %t36, ptr %t40 - store i64 %t38, ptr %t9 - br label %for.step1949 -for.step1949: - %t41 = load i64, ptr %a6 - %t42 = add i64 %t41, 1 - store i64 %t42, ptr %a6 - br label %for.cond1947 -for.end1950: - %t43 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t47, ptr %a48 - %t49 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 - %t51 = load i64, ptr %t50 - %t52 = icmp sgt i64 %t51, 0 - br i1 %t52, label %then1955, label %endif1957 -then1955: - %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1099, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a55 - %t59 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t65, ptr %a48 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif1957 -endif1957: - %t68 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.1100, i64 3, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1101, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1102, i64 2, i64 0 }, ptr %a79 - call void @finch_str_join(ptr %a80, ptr %a2, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t77, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t77, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.1103, i64 1, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 - %t95 = load i1, ptr %t94 - br i1 %t95, label %then1958, label %else1959 -then1958: - %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t97 = getelementptr inbounds %S.ast.Type, ptr %t96, i32 0, i32 0 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.1104, i64 4, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then1961, label %else1962 -then1961: - %t103 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1105, i64 5, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a104 - %t108 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t107, ptr %a93 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_drop(ptr %a109) - br label %endif1963 -else1962: - %t110 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.1106, i64 4, 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.FnSig, ptr %a1, i32 0, i32 12 - %t116 = load %S.ast.Type, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t116) - store { ptr, i64, i64 } %t114, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t114, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.1107, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t128, ptr %a93 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - br label %endif1963 -endif1963: - br label %endif1960 -else1959: - %t131 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.1108, i64 4, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp eq i32 %t136, 0 - br i1 %t137, label %then1964, label %endif1966 -then1964: - %t138 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1109, i64 4, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a139 - %t143 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t144 = load %S.ast.Type, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t144) - store { ptr, i64, i64 } %t142, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t142, ptr %a149 - call void @finch_str_drop(ptr %a149) - store { ptr, i64, i64 } %t145, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a146 - %t152 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t151, ptr %a93 - store { ptr, i64, i64 } %t152, ptr %a153 - call void @finch_str_drop(ptr %a153) - br label %endif1966 -endif1966: - br label %endif1960 -endif1960: - %t154 = load { ptr, i64, i64 }, ptr %a93 - call void @finch_str_drop(ptr %a48) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t154 -} - -define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1967, label %ok1968 -panic1967: - call void @finch_panic(ptr @.str.1110, i64 263, ptr @.str.1111) - unreachable -ok1968: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then1969, label %endif1971 -then1969: - ret void -endif1971: - %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.1112, 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 %then1972, label %endif1974 -then1972: - %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 %endif1974 -endif1974: - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic1975, label %ok1976 -panic1975: - call void @finch_panic(ptr @.str.1113, i64 270, ptr @.str.1114) - unreachable -ok1976: - %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 %range1977, label %inrange1978 -range1977: - call void @finch_panic_index(ptr @.str.1115, i64 270, i64 %t25, i64 %t27) - unreachable -inrange1978: - %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 %range1979, label %inrange1980 -range1979: - call void @finch_panic_index(ptr @.str.1116, i64 270, i64 %t33, i64 %t35) - unreachable -inrange1980: - %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.from1981 -logic.from1981: - br i1 %t53, label %logic.rhs1982, label %logic.end1983 -logic.rhs1982: - %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.rend1984 -logic.rend1984: - br label %logic.end1983 -logic.end1983: - %t58 = phi i1 [ false, %logic.from1981 ], [ %t57, %logic.rend1984 ] - br i1 %t58, label %then1985, label %endif1987 -then1985: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_copy(ptr %a62, ptr %a61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - %t64 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t63, ptr %a49 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif1987 -endif1987: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a2 - %t68 = load i64, ptr %a11 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load %S.gen.FnSig, ptr %a3 - %t72 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t71) - store { ptr, i64, i64 } { ptr @.str.1117, i64 9, i64 0 }, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1118, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic1988, label %ok1989 -panic1988: - call void @finch_panic(ptr @.str.1119, i64 275, ptr @.str.1120) - unreachable -ok1989: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 - %t87 = load i64, ptr %t86 - %t88 = load { ptr, i64, i64 }, ptr %t85 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range1990, label %inrange1991 -range1990: - call void @finch_panic_index(ptr @.str.1121, i64 275, i64 %t87, i64 %t89) - unreachable -inrange1991: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t87 - %t93 = load { ptr, i64, i64 }, ptr %t92 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 - %t95 = load i64, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 - %t97 = load i64, ptr %t96 - %t98 = add i64 %t97, 3 - call void @finch.gen.noteRef(ptr %t66, %S.ast.Node %t67, i64 %t68, i64 %t70, { ptr, i64, i64 } %t82, { ptr, i64, i64 } %t93, i64 %t95, i64 %t98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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.drop.arr_bool(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_FnSig(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t7) - %t8 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 11 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 12 - call void @finch.drop.S_ast_Type(ptr %t9) - %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 13 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - %t11 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 14 - call void @finch.drop.arr_str(ptr %t11) - %t12 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_bool(ptr %t12) - ret void -} - -define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { -entry: - - %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.drop.S_gen_Template(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { -entry: - - 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.drop.arr_int(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_StructDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t7) - %t8 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_str(ptr %t9) - %t10 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - ret void -} - -define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a257 = alloca %S.gen.Template, align 16 - %a258 = alloca %S.gen.Template, align 16 - %a260 = alloca %S.gen.Template, align 16 - %a282 = alloca %S.ast.Node, align 16 - %a283 = alloca %S.ast.Node, align 16 - %a285 = alloca %S.ast.Node, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca i64, align 16 - %a448 = alloca %S.gen.StructDef, align 16 - %a449 = alloca %S.gen.StructDef, align 16 - %a451 = alloca %S.gen.StructDef, align 16 - %a478 = alloca %S.ast.Node, align 16 - %a479 = alloca %S.ast.Node, align 16 - %a481 = alloca %S.ast.Node, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca i64, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca i64, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca %S.ast.Node, align 16 - %a660 = alloca %S.ast.Node, align 16 - %a662 = alloca %S.ast.Node, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca i64, align 16 - %a674 = alloca %S.ast.Node, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a778 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond1992 -each.cond1992: - %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.body1993, label %each.end1995 -each.body1993: - %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 %panic1996, label %ok1997 -panic1996: - call void @finch_panic(ptr @.str.1122, i64 281, ptr @.str.1123) - unreachable -ok1997: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 29 - %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.1124, 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.step1994 -each.step1994: - %t25 = load i64, ptr %a3 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a3 - br label %each.cond1992 -each.end1995: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1998, label %ok1999 -panic1998: - call void @finch_panic(ptr @.str.1125, i64 283, ptr @.str.1126) - unreachable -ok1999: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 15 - store i64 0, ptr %a30 - br label %each.cond2000 -each.cond2000: - %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.body2001, label %each.end2003 -each.body2001: - %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 %panic2004, label %ok2005 -panic2004: - call void @finch_panic(ptr @.str.1127, i64 284, ptr @.str.1128) - unreachable -ok2005: - %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 %range2006, label %inrange2007 -range2006: - call void @finch_panic_index(ptr @.str.1129, i64 284, i64 %t46, i64 %t48) - unreachable -inrange2007: - %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 %range2008, label %inrange2009 -range2008: - call void @finch_panic_index(ptr @.str.1130, i64 284, i64 %t54, i64 %t56) - unreachable -inrange2009: - %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 %then2010, label %endif2012 -then2010: - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -endif2012: - 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.cond2013 -for.cond2013: - %t74 = load i64, ptr %a73 - %t75 = icmp slt i64 %t74, %t72 - br i1 %t75, label %for.body2014, label %for.end2016 -for.body2014: - %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 %range2017, label %inrange2018 -range2017: - call void @finch_panic_index(ptr @.str.1131, i64 290, i64 %t78, i64 %t80) - unreachable -inrange2018: - %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.1132, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 - %t92 = load i64, ptr %a73 - %t93 = load { ptr, i64, i64 }, ptr %t91 - %t94 = extractvalue { ptr, i64, i64 } %t93, 1 - %t95 = icmp uge i64 %t92, %t94 - br i1 %t95, label %range2019, label %inrange2020 -range2019: - call void @finch_panic_index(ptr @.str.1133, i64 290, i64 %t92, i64 %t94) - unreachable -inrange2020: - %t96 = extractvalue { ptr, i64, i64 } %t93, 0 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t92 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t90, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t90, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = load i64, ptr %t76 - %t105 = add i64 %t104, 1 - call void @finch_arr_reserve(ptr %a69, i64 %t105, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t106 = load ptr, ptr %a69 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 %t104 - store { ptr, i64, i64 } %t103, ptr %t107 - store i64 %t105, ptr %t76 - br label %for.step2015 -for.step2015: - %t108 = load i64, ptr %a73 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a73 - br label %for.cond2013 -for.end2016: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic2021, label %ok2022 -panic2021: - call void @finch_panic(ptr @.str.1134, i64 292, ptr @.str.1135) - unreachable -ok2022: - %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 29 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.1136, i64 3, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1137, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t124, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t124, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1138, i64 1, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 - %t138 = load { ptr, i64, i64 }, ptr %t137 - store { ptr, i64, i64 } %t136, ptr %a140 - store { ptr, i64, i64 } %t138, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t136, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.1139, i64 1, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = load ptr, ptr %a1 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic2023, label %ok2024 -panic2023: - call void @finch_panic(ptr @.str.1140, i64 292, ptr @.str.1141) - unreachable -ok2024: - %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 1 - %t152 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 - %t153 = load i64, ptr %t152 - %t154 = load { ptr, i64, i64 }, ptr %t151 - %t155 = extractvalue { ptr, i64, i64 } %t154, 1 - %t156 = icmp uge i64 %t153, %t155 - br i1 %t156, label %range2025, label %inrange2026 -range2025: - call void @finch_panic_index(ptr @.str.1142, i64 292, i64 %t153, i64 %t155) - unreachable -inrange2026: - %t157 = extractvalue { ptr, i64, i64 } %t154, 0 - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i64 %t153 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t148, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t148, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.1143, i64 1, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.1144, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 - %t186 = load i64, ptr %t185 - call void @finch_str_from_int(ptr %a187, i64 %t186) - %t188 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t184, ptr %a192 - call void @finch_str_drop(ptr %a192) - store { ptr, i64, i64 } %t188, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.1145, i64 1, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 - %t201 = load i64, ptr %t200 - call void @finch_str_from_int(ptr %a202, i64 %t201) - %t203 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t199, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t199, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } %t203, ptr %a208 - call void @finch_str_drop(ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t209, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.1146, i64 1, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = load %S.gen.FnSig, ptr %a41 - %t216 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t215) - %t217 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - store { ptr, i64, i64 } %t214, ptr %a220 - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t214, ptr %a222 - call void @finch_str_drop(ptr %a222) - store { ptr, i64, i64 } %t217, ptr %a223 - call void @finch_str_drop(ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.1147, i64 1, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1148, i64 1, i64 0 }, ptr %a231 - call void @finch_str_join(ptr %a232, ptr %a69, ptr %a231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t229, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t229, ptr %a237 - call void @finch_str_drop(ptr %a237) - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a234 - %t240 = load i64, ptr %t113 - %t241 = add i64 %t240, 1 - call void @finch_arr_reserve(ptr %t112, i64 %t241, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t242 = load ptr, ptr %t112 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 %t240 - store { ptr, i64, i64 } %t239, ptr %t243 - store i64 %t241, ptr %t113 - call void @finch.drop.arr_str(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -each.step2002: - %t244 = load i64, ptr %a30 - %t245 = add i64 %t244, 1 - store i64 %t245, ptr %a30 - br label %each.cond2000 -each.end2003: - %t246 = load ptr, ptr %a1 - %t247 = icmp eq ptr %t246, null - br i1 %t247, label %panic2027, label %ok2028 -panic2027: - call void @finch_panic(ptr @.str.1149, i64 294, ptr @.str.1150) - unreachable -ok2028: - %t248 = getelementptr inbounds %S.gen.Gen, ptr %t246, i32 0, i32 17 - store i64 0, ptr %a249 - br label %each.cond2029 -each.cond2029: - %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t251 = load i64, ptr %t250 - %t252 = load i64, ptr %a249 - %t253 = icmp slt i64 %t252, %t251 - br i1 %t253, label %each.body2030, label %each.end2032 -each.body2030: - %t254 = load ptr, ptr %t248 - %t255 = getelementptr inbounds %S.gen.Template, ptr %t254, i64 %t252 - %t256 = load %S.gen.Template, ptr %t255 - store %S.gen.Template %t256, ptr %a257 - call void @finch.copy.S_gen_Template(ptr %a258, ptr %a257) - %t259 = load %S.gen.Template, ptr %a258 - store %S.gen.Template %t259, ptr %a260 - %t261 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 6 - %t262 = load i1, ptr %t261 - br i1 %t262, label %then2033, label %endif2035 -then2033: - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -endif2035: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic2036, label %ok2037 -panic2036: - call void @finch_panic(ptr @.str.1151, i64 298, ptr @.str.1152) - unreachable -ok2037: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 0 - %t266 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 4 - %t267 = load i64, ptr %t266 - %t268 = load { ptr, i64, i64 }, ptr %t265 - %t269 = extractvalue { ptr, i64, i64 } %t268, 1 - %t270 = icmp uge i64 %t267, %t269 - br i1 %t270, label %range2038, label %inrange2039 -range2038: - call void @finch_panic_index(ptr @.str.1153, i64 298, i64 %t267, i64 %t269) - unreachable -inrange2039: - %t271 = extractvalue { ptr, i64, i64 } %t268, 0 - %t272 = getelementptr inbounds %S.ast.Program, ptr %t271, i64 %t267 - %t273 = getelementptr inbounds %S.ast.Program, ptr %t272, i32 0, i32 8 - %t274 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 5 - %t275 = load i64, ptr %t274 - %t276 = load { ptr, i64, i64 }, ptr %t273 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range2040, label %inrange2041 -range2040: - call void @finch_panic_index(ptr @.str.1154, i64 298, i64 %t275, i64 %t277) - unreachable -inrange2041: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.ast.Node, ptr %t279, i64 %t275 - %t281 = load %S.ast.Node, ptr %t280 - store %S.ast.Node %t281, ptr %a282 - call void @finch.copy.S_ast_Node(ptr %a283, ptr %a282) - %t284 = load %S.ast.Node, ptr %a283 - store %S.ast.Node %t284, ptr %a285 - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic2042, label %ok2043 -panic2042: - call void @finch_panic(ptr @.str.1155, i64 299, ptr @.str.1156) - unreachable -ok2043: - %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 29 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1 - %t290 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 0 - %t291 = load { ptr, i64, i64 }, ptr %t290 - store { ptr, i64, i64 } { ptr @.str.1157, i64 3, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.1158, i64 1, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t300, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t300, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 2 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t312, ptr %a316 - store { ptr, i64, i64 } %t314, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.1160, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic2044, label %ok2045 -panic2044: - call void @finch_panic(ptr @.str.1161, i64 299, ptr @.str.1162) - unreachable -ok2045: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 13 - %t329 = load i64, ptr %t328 - %t330 = load { ptr, i64, i64 }, ptr %t327 - %t331 = extractvalue { ptr, i64, i64 } %t330, 1 - %t332 = icmp uge i64 %t329, %t331 - br i1 %t332, label %range2046, label %inrange2047 -range2046: - call void @finch_panic_index(ptr @.str.1163, i64 299, i64 %t329, i64 %t331) - unreachable -inrange2047: - %t333 = extractvalue { ptr, i64, i64 } %t330, 0 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i64 %t329 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t324, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t324, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.1164, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 11 - %t347 = load i64, ptr %t346 - call void @finch_str_from_int(ptr %a348, i64 %t347) - %t349 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t345, ptr %a351 - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t345, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t349, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t355, ptr %a357 - store { ptr, i64, i64 } { ptr @.str.1165, i64 1, i64 0 }, ptr %a358 - call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) - store { ptr, i64, i64 } %t355, ptr %a359 - call void @finch_str_drop(ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a356 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 12 - %t362 = load i64, ptr %t361 - call void @finch_str_from_int(ptr %a363, i64 %t362) - %t364 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t360, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t360, ptr %a368 - call void @finch_str_drop(ptr %a368) - store { ptr, i64, i64 } %t364, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t370, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.1166, i64 1, i64 0 }, ptr %a373 - call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) - store { ptr, i64, i64 } %t370, ptr %a374 - call void @finch_str_drop(ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 14 - %t377 = load i64, ptr %t376 - call void @finch_str_from_int(ptr %a378, i64 %t377) - %t379 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t375, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t375, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t379, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.1167, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t392 = load { ptr, i64, i64 }, ptr %t391 - store { ptr, i64, i64 } { ptr @.str.1168, i64 3, i64 0 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a393 - store { ptr, i64, i64 } %t396, ptr %a398 - store { ptr, i64, i64 } { ptr @.str.1169, i64 1, i64 0 }, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t396, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - %t402 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 3 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1170, i64 2, i64 0 }, ptr %a404 - call void @finch_str_join(ptr %a405, ptr %t402, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - store { ptr, i64, i64 } %t401, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t401, ptr %a410 - call void @finch_str_drop(ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.1171, i64 6, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t417) - store { ptr, i64, i64 } %t417, ptr %a419 - call void @finch_str_drop(ptr %a419) - store { ptr, i64, i64 } %t390, ptr %a421 - store { ptr, i64, i64 } %t418, ptr %a422 - call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) - store { ptr, i64, i64 } %t390, ptr %a423 - call void @finch_str_drop(ptr %a423) - store { ptr, i64, i64 } %t418, ptr %a424 - call void @finch_str_drop(ptr %a424) - %t425 = load { ptr, i64, i64 }, ptr %a420 - store { ptr, i64, i64 } %t425, ptr %a427 - store { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t425, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - %t431 = load i64, ptr %t289 - %t432 = add i64 %t431, 1 - call void @finch_arr_reserve(ptr %t288, i64 %t432, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t433 = load ptr, ptr %t288 - %t434 = getelementptr inbounds { ptr, i64, i64 }, ptr %t433, i64 %t431 - store { ptr, i64, i64 } %t430, ptr %t434 - store i64 %t432, ptr %t289 - call void @finch.drop.S_ast_Node(ptr %a285) - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -each.step2031: - %t435 = load i64, ptr %a249 - %t436 = add i64 %t435, 1 - store i64 %t436, ptr %a249 - br label %each.cond2029 -each.end2032: - %t437 = load ptr, ptr %a1 - %t438 = icmp eq ptr %t437, null - br i1 %t438, label %panic2048, label %ok2049 -panic2048: - call void @finch_panic(ptr @.str.1173, i64 301, ptr @.str.1174) - unreachable -ok2049: - %t439 = getelementptr inbounds %S.gen.Gen, ptr %t437, i32 0, i32 16 - store i64 0, ptr %a440 - br label %each.cond2050 -each.cond2050: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t442 = load i64, ptr %t441 - %t443 = load i64, ptr %a440 - %t444 = icmp slt i64 %t443, %t442 - br i1 %t444, label %each.body2051, label %each.end2053 -each.body2051: - %t445 = load ptr, ptr %t439 - %t446 = getelementptr inbounds %S.gen.StructDef, ptr %t445, i64 %t443 - %t447 = load %S.gen.StructDef, ptr %t446 - store %S.gen.StructDef %t447, ptr %a448 - call void @finch.copy.S_gen_StructDef(ptr %a449, ptr %a448) - %t450 = load %S.gen.StructDef, ptr %a449 - store %S.gen.StructDef %t450, ptr %a451 - %t452 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 2 - %t453 = load i1, ptr %t452 - br label %logic.from2054 -logic.from2054: - br i1 %t453, label %logic.end2056, label %logic.rhs2055 -logic.rhs2055: - %t454 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 5 - %t455 = getelementptr inbounds { ptr, i64, i64 }, ptr %t454, i32 0, i32 1 - %t456 = load i64, ptr %t455 - %t457 = icmp sgt i64 %t456, 0 - br label %logic.rend2057 -logic.rend2057: - br label %logic.end2056 -logic.end2056: - %t458 = phi i1 [ true, %logic.from2054 ], [ %t457, %logic.rend2057 ] - br i1 %t458, label %then2058, label %endif2060 -then2058: - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -endif2060: - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic2061, label %ok2062 -panic2061: - call void @finch_panic(ptr @.str.1175, i64 305, ptr @.str.1176) - unreachable -ok2062: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 0 - %t462 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 13 - %t463 = load i64, ptr %t462 - %t464 = load { ptr, i64, i64 }, ptr %t461 - %t465 = extractvalue { ptr, i64, i64 } %t464, 1 - %t466 = icmp uge i64 %t463, %t465 - br i1 %t466, label %range2063, label %inrange2064 -range2063: - call void @finch_panic_index(ptr @.str.1177, i64 305, i64 %t463, i64 %t465) - unreachable -inrange2064: - %t467 = extractvalue { ptr, i64, i64 } %t464, 0 - %t468 = getelementptr inbounds %S.ast.Program, ptr %t467, i64 %t463 - %t469 = getelementptr inbounds %S.ast.Program, ptr %t468, i32 0, i32 6 - %t470 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 14 - %t471 = load i64, ptr %t470 - %t472 = load { ptr, i64, i64 }, ptr %t469 - %t473 = extractvalue { ptr, i64, i64 } %t472, 1 - %t474 = icmp uge i64 %t471, %t473 - br i1 %t474, label %range2065, label %inrange2066 -range2065: - call void @finch_panic_index(ptr @.str.1178, i64 305, i64 %t471, i64 %t473) - unreachable -inrange2066: - %t475 = extractvalue { ptr, i64, i64 } %t472, 0 - %t476 = getelementptr inbounds %S.ast.Node, ptr %t475, i64 %t471 - %t477 = load %S.ast.Node, ptr %t476 - store %S.ast.Node %t477, ptr %a478 - call void @finch.copy.S_ast_Node(ptr %a479, ptr %a478) - %t480 = load %S.ast.Node, ptr %a479 - store %S.ast.Node %t480, ptr %a481 - %t482 = load ptr, ptr %a1 - %t483 = icmp eq ptr %t482, null - br i1 %t483, label %panic2067, label %ok2068 -panic2067: - call void @finch_panic(ptr @.str.1179, i64 306, ptr @.str.1180) - unreachable -ok2068: - %t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 29 - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i32 0, i32 1 - %t486 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } { ptr @.str.1181, i64 3, i64 0 }, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t498 = load { ptr, i64, i64 }, ptr %t497 - store { ptr, i64, i64 } %t496, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - store { ptr, i64, i64 } %t496, ptr %a502 - call void @finch_str_drop(ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a499 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.1183, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = load ptr, ptr %a1 - %t510 = icmp eq ptr %t509, null - br i1 %t510, label %panic2069, label %ok2070 -panic2069: - call void @finch_panic(ptr @.str.1184, i64 306, ptr @.str.1185) - unreachable -ok2070: - %t511 = getelementptr inbounds %S.gen.Gen, ptr %t509, i32 0, i32 1 - %t512 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 13 - %t513 = load i64, ptr %t512 - %t514 = load { ptr, i64, i64 }, ptr %t511 - %t515 = extractvalue { ptr, i64, i64 } %t514, 1 - %t516 = icmp uge i64 %t513, %t515 - br i1 %t516, label %range2071, label %inrange2072 -range2071: - call void @finch_panic_index(ptr @.str.1186, i64 306, i64 %t513, i64 %t515) - unreachable -inrange2072: - %t517 = extractvalue { ptr, i64, i64 } %t514, 0 - %t518 = getelementptr inbounds { ptr, i64, i64 }, ptr %t517, i64 %t513 - %t519 = load { ptr, i64, i64 }, ptr %t518 - store { ptr, i64, i64 } %t508, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a522 - call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) - store { ptr, i64, i64 } %t508, ptr %a523 - call void @finch_str_drop(ptr %a523) - %t524 = load { ptr, i64, i64 }, ptr %a520 - store { ptr, i64, i64 } %t524, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.1187, i64 1, i64 0 }, ptr %a527 - call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) - store { ptr, i64, i64 } %t524, ptr %a528 - call void @finch_str_drop(ptr %a528) - %t529 = load { ptr, i64, i64 }, ptr %a525 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 11 - %t531 = load i64, ptr %t530 - call void @finch_str_from_int(ptr %a532, i64 %t531) - %t533 = load { ptr, i64, i64 }, ptr %a532 - store { ptr, i64, i64 } %t529, ptr %a535 - store { ptr, i64, i64 } %t533, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t529, ptr %a537 - call void @finch_str_drop(ptr %a537) - store { ptr, i64, i64 } %t533, ptr %a538 - call void @finch_str_drop(ptr %a538) - %t539 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t539, ptr %a541 - store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t539, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - %t545 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 12 - %t546 = load i64, ptr %t545 - call void @finch_str_from_int(ptr %a547, i64 %t546) - %t548 = load { ptr, i64, i64 }, ptr %a547 - store { ptr, i64, i64 } %t544, ptr %a550 - store { ptr, i64, i64 } %t548, ptr %a551 - call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) - store { ptr, i64, i64 } %t544, ptr %a552 - call void @finch_str_drop(ptr %a552) - store { ptr, i64, i64 } %t548, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a549 - %t555 = load i64, ptr %t485 - %t556 = add i64 %t555, 1 - call void @finch_arr_reserve(ptr %t484, i64 %t556, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t557 = load ptr, ptr %t484 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t555 - store { ptr, i64, i64 } %t554, ptr %t558 - store i64 %t556, ptr %t485 - %t559 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load i64, ptr %t560 - store i64 0, ptr %a562 - br label %for.cond2073 -for.cond2073: - %t563 = load i64, ptr %a562 - %t564 = icmp slt i64 %t563, %t561 - br i1 %t564, label %for.body2074, label %for.end2076 -for.body2074: - %t565 = load ptr, ptr %a1 - %t566 = icmp eq ptr %t565, null - br i1 %t566, label %panic2077, label %ok2078 -panic2077: - call void @finch_panic(ptr @.str.1189, i64 308, ptr @.str.1190) - unreachable -ok2078: - %t567 = getelementptr inbounds %S.gen.Gen, ptr %t565, i32 0, i32 29 - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1 - %t569 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t570 = load { ptr, i64, i64 }, ptr %t569 - store { ptr, i64, i64 } { ptr @.str.1191, i64 4, i64 0 }, ptr %a572 - store { ptr, i64, i64 } %t570, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a571 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.1192, i64 1, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t581 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t579, ptr %a583 - store { ptr, i64, i64 } %t581, ptr %a584 - call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) - store { ptr, i64, i64 } %t579, ptr %a585 - call void @finch_str_drop(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a582 - store { ptr, i64, i64 } %t586, ptr %a588 - store { ptr, i64, i64 } { ptr @.str.1193, i64 1, i64 0 }, ptr %a589 - call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) - store { ptr, i64, i64 } %t586, ptr %a590 - call void @finch_str_drop(ptr %a590) - %t591 = load { ptr, i64, i64 }, ptr %a587 - %t592 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t593 = load i64, ptr %a562 - %t594 = load { ptr, i64, i64 }, ptr %t592 - %t595 = extractvalue { ptr, i64, i64 } %t594, 1 - %t596 = icmp uge i64 %t593, %t595 - br i1 %t596, label %range2079, label %inrange2080 -range2079: - call void @finch_panic_index(ptr @.str.1194, i64 308, i64 %t593, i64 %t595) - unreachable -inrange2080: - %t597 = extractvalue { ptr, i64, i64 } %t594, 0 - %t598 = getelementptr inbounds { ptr, i64, i64 }, ptr %t597, i64 %t593 - %t599 = load { ptr, i64, i64 }, ptr %t598 - store { ptr, i64, i64 } %t591, ptr %a601 - store { ptr, i64, i64 } %t599, ptr %a602 - call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602) - store { ptr, i64, i64 } %t591, ptr %a603 - call void @finch_str_drop(ptr %a603) - %t604 = load { ptr, i64, i64 }, ptr %a600 - store { ptr, i64, i64 } %t604, ptr %a606 - store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a607 - call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) - store { ptr, i64, i64 } %t604, ptr %a608 - call void @finch_str_drop(ptr %a608) - %t609 = load { ptr, i64, i64 }, ptr %a605 - %t610 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 12 - %t611 = load i64, ptr %a562 - %t612 = load { ptr, i64, i64 }, ptr %t610 - %t613 = extractvalue { ptr, i64, i64 } %t612, 1 - %t614 = icmp uge i64 %t611, %t613 - br i1 %t614, label %range2081, label %inrange2082 -range2081: - call void @finch_panic_index(ptr @.str.1196, i64 308, i64 %t611, i64 %t613) - unreachable -inrange2082: - %t615 = extractvalue { ptr, i64, i64 } %t612, 0 - %t616 = getelementptr inbounds %S.ast.Type, ptr %t615, i64 %t611 - %t617 = load %S.ast.Type, ptr %t616 - %t618 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t617) - store { ptr, i64, i64 } %t609, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t609, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - %t625 = load i64, ptr %t568 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t567, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t567 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t568 - br label %for.step2075 -for.step2075: - %t629 = load i64, ptr %a562 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a562 - br label %for.cond2073 -for.end2076: - call void @finch.drop.S_ast_Node(ptr %a481) - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -each.step2052: - %t631 = load i64, ptr %a440 - %t632 = add i64 %t631, 1 - store i64 %t632, ptr %a440 - br label %each.cond2050 -each.end2053: - %t633 = load ptr, ptr %a1 - %t634 = icmp eq ptr %t633, null - br i1 %t634, label %panic2083, label %ok2084 -panic2083: - call void @finch_panic(ptr @.str.1197, i64 311, ptr @.str.1198) - unreachable -ok2084: - %t635 = getelementptr inbounds %S.gen.Gen, ptr %t633, i32 0, i32 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i32 0, i32 1 - %t637 = load i64, ptr %t636 - store i64 0, ptr %a638 - br label %for.cond2085 -for.cond2085: - %t639 = load i64, ptr %a638 - %t640 = icmp slt i64 %t639, %t637 - br i1 %t640, label %for.body2086, label %for.end2088 -for.body2086: - %t641 = load ptr, ptr %a1 - %t642 = icmp eq ptr %t641, null - br i1 %t642, label %panic2089, label %ok2090 -panic2089: - call void @finch_panic(ptr @.str.1199, i64 312, ptr @.str.1200) - unreachable -ok2090: - %t643 = getelementptr inbounds %S.gen.Gen, ptr %t641, i32 0, i32 0 - %t644 = load i64, ptr %a638 - %t645 = load { ptr, i64, i64 }, ptr %t643 - %t646 = extractvalue { ptr, i64, i64 } %t645, 1 - %t647 = icmp uge i64 %t644, %t646 - br i1 %t647, label %range2091, label %inrange2092 -range2091: - call void @finch_panic_index(ptr @.str.1201, i64 312, i64 %t644, i64 %t646) - unreachable -inrange2092: - %t648 = extractvalue { ptr, i64, i64 } %t645, 0 - %t649 = getelementptr inbounds %S.ast.Program, ptr %t648, i64 %t644 - %t650 = getelementptr inbounds %S.ast.Program, ptr %t649, i32 0, i32 7 - store i64 0, ptr %a651 - br label %each.cond2093 -each.cond2093: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body2094, label %each.end2096 -each.body2094: - %t656 = load ptr, ptr %t650 - %t657 = getelementptr inbounds %S.ast.Node, ptr %t656, i64 %t654 - %t658 = load %S.ast.Node, ptr %t657 - store %S.ast.Node %t658, ptr %a659 - call void @finch.copy.S_ast_Node(ptr %a660, ptr %a659) - %t661 = load %S.ast.Node, ptr %a660 - store %S.ast.Node %t661, ptr %a662 - store { ptr, i64, i64 } { ptr @.str.1202, i64 0, i64 0 }, ptr %a663 - store { ptr, i64, i64 } zeroinitializer, ptr %a664 - %t665 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 9 - store i64 0, ptr %a666 - br label %each.cond2097 -each.cond2097: - %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t668 = load i64, ptr %t667 - %t669 = load i64, ptr %a666 - %t670 = icmp slt i64 %t669, %t668 - br i1 %t670, label %each.body2098, label %each.end2100 -each.body2098: - %t671 = load ptr, ptr %t665 - %t672 = getelementptr inbounds %S.ast.Node, ptr %t671, i64 %t669 - %t673 = load %S.ast.Node, ptr %t672 - store %S.ast.Node %t673, ptr %a674 - %t675 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - %t676 = getelementptr inbounds %S.ast.Node, ptr %a674, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %t676 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t675 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a664, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a664 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t675 - br label %each.step2099 -each.step2099: - %t685 = load i64, ptr %a666 - %t686 = add i64 %t685, 1 - store i64 %t686, ptr %a666 - br label %each.cond2097 -each.end2100: - %t687 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1203, i64 1, i64 0 }, ptr %a688 - call void @finch_str_join(ptr %a689, ptr %a664, ptr %a688) - %t690 = load { ptr, i64, i64 }, ptr %a689 - %t691 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t690, ptr %a663 - store { ptr, i64, i64 } %t691, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load ptr, ptr %a1 - %t694 = icmp eq ptr %t693, null - br i1 %t694, label %panic2101, label %ok2102 -panic2101: - call void @finch_panic(ptr @.str.1204, i64 319, ptr @.str.1205) - unreachable -ok2102: - %t695 = getelementptr inbounds %S.gen.Gen, ptr %t693, i32 0, i32 29 - %t696 = getelementptr inbounds { ptr, i64, i64 }, ptr %t695, i32 0, i32 1 - %t697 = load ptr, ptr %a1 - %t698 = icmp eq ptr %t697, null - br i1 %t698, label %panic2103, label %ok2104 -panic2103: - call void @finch_panic(ptr @.str.1207, i64 319, ptr @.str.1208) - unreachable -ok2104: - %t699 = getelementptr inbounds %S.gen.Gen, ptr %t697, i32 0, i32 0 - %t700 = load i64, ptr %a638 - %t701 = load { ptr, i64, i64 }, ptr %t699 - %t702 = extractvalue { ptr, i64, i64 } %t701, 1 - %t703 = icmp uge i64 %t700, %t702 - br i1 %t703, label %range2105, label %inrange2106 -range2105: - call void @finch_panic_index(ptr @.str.1209, i64 319, i64 %t700, i64 %t702) - unreachable -inrange2106: - %t704 = extractvalue { ptr, i64, i64 } %t701, 0 - %t705 = getelementptr inbounds %S.ast.Program, ptr %t704, i64 %t700 - %t706 = getelementptr inbounds %S.ast.Program, ptr %t705, i32 0, i32 0 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } { ptr @.str.1206, i64 3, i64 0 }, ptr %a709 - store { ptr, i64, i64 } %t707, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - %t711 = load { ptr, i64, i64 }, ptr %a708 - store { ptr, i64, i64 } %t711, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.1210, i64 1, i64 0 }, ptr %a714 - call void @finch_str_concat(ptr %a712, ptr %a713, ptr %a714) - store { ptr, i64, i64 } %t711, ptr %a715 - call void @finch_str_drop(ptr %a715) - %t716 = load { ptr, i64, i64 }, ptr %a712 - %t717 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 1 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t716, ptr %a720 - store { ptr, i64, i64 } %t718, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t716, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - store { ptr, i64, i64 } %t723, ptr %a725 - store { ptr, i64, i64 } { ptr @.str.1211, i64 1, i64 0 }, ptr %a726 - call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) - store { ptr, i64, i64 } %t723, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load { ptr, i64, i64 }, ptr %a724 - %t729 = load ptr, ptr %a1 - %t730 = icmp eq ptr %t729, null - br i1 %t730, label %panic2107, label %ok2108 -panic2107: - call void @finch_panic(ptr @.str.1212, i64 319, ptr @.str.1213) - unreachable -ok2108: - %t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 1 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 13 - %t733 = load i64, ptr %t732 - %t734 = load { ptr, i64, i64 }, ptr %t731 - %t735 = extractvalue { ptr, i64, i64 } %t734, 1 - %t736 = icmp uge i64 %t733, %t735 - br i1 %t736, label %range2109, label %inrange2110 -range2109: - call void @finch_panic_index(ptr @.str.1214, i64 319, i64 %t733, i64 %t735) - unreachable -inrange2110: - %t737 = extractvalue { ptr, i64, i64 } %t734, 0 - %t738 = getelementptr inbounds { ptr, i64, i64 }, ptr %t737, i64 %t733 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t728, ptr %a741 - store { ptr, i64, i64 } %t739, ptr %a742 - call void @finch_str_concat(ptr %a740, ptr %a741, ptr %a742) - store { ptr, i64, i64 } %t728, ptr %a743 - call void @finch_str_drop(ptr %a743) - %t744 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } %t744, ptr %a746 - store { ptr, i64, i64 } { ptr @.str.1215, i64 1, i64 0 }, ptr %a747 - call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) - store { ptr, i64, i64 } %t744, ptr %a748 - call void @finch_str_drop(ptr %a748) - %t749 = load { ptr, i64, i64 }, ptr %a745 - %t750 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 11 - %t751 = load i64, ptr %t750 - call void @finch_str_from_int(ptr %a752, i64 %t751) - %t753 = load { ptr, i64, i64 }, ptr %a752 - store { ptr, i64, i64 } %t749, ptr %a755 - store { ptr, i64, i64 } %t753, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t749, ptr %a757 - call void @finch_str_drop(ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.1216, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 12 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t764, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t764, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - store { ptr, i64, i64 } %t774, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.1217, i64 1, i64 0 }, ptr %a777 - call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) - store { ptr, i64, i64 } %t774, ptr %a778 - call void @finch_str_drop(ptr %a778) - %t779 = load { ptr, i64, i64 }, ptr %a775 - %t780 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t779, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t779, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = load { ptr, i64, i64 }, ptr %a781 - %t786 = load i64, ptr %t696 - %t787 = add i64 %t786, 1 - call void @finch_arr_reserve(ptr %t695, i64 %t787, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t788 = load ptr, ptr %t695 - %t789 = getelementptr inbounds { ptr, i64, i64 }, ptr %t788, i64 %t786 - store { ptr, i64, i64 } %t785, ptr %t789 - store i64 %t787, ptr %t696 - call void @finch.drop.arr_str(ptr %a664) - call void @finch_str_drop(ptr %a663) - call void @finch.drop.S_ast_Node(ptr %a662) - br label %each.step2095 -each.step2095: - %t790 = load i64, ptr %a651 - %t791 = add i64 %t790, 1 - store i64 %t791, ptr %a651 - br label %each.cond2093 -each.end2096: - br label %for.step2087 -for.step2087: - %t792 = load i64, ptr %a638 - %t793 = add i64 %t792, 1 - store i64 %t793, ptr %a638 - br label %for.cond2085 -for.end2088: - 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 - %a28 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2111, label %ok2112 -panic2111: - call void @finch_panic(ptr @.str.1218, i64 325, ptr @.str.1219) - unreachable -ok2112: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br label %logic.from2113 -logic.from2113: - br i1 %t7, label %logic.rhs2114, label %logic.end2115 -logic.rhs2114: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic2116, label %ok2117 -panic2116: - call void @finch_panic(ptr @.str.1220, i64 325, ptr @.str.1221) - unreachable -ok2117: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 29 - %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.rend2118 -logic.rend2118: - br label %logic.end2115 -logic.end2115: - %t14 = phi i1 [ false, %logic.from2113 ], [ %t13, %logic.rend2118 ] - br i1 %t14, label %then2119, label %endif2121 -then2119: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2122, label %ok2123 -panic2122: - call void @finch_panic(ptr @.str.1222, i64 326, ptr @.str.1223) - unreachable -ok2123: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 29 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1224, 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.1225, ptr %t24 - %t27 = call i32 (ptr, ...) @printf(ptr @.str.1226, i32 %t23, ptr %t26) - store { ptr, i64, i64 } %t21, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = call i32 (ptr, ...) @printf(ptr @.str.1227) - br label %endif2121 -endif2121: - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic2124, label %ok2125 -panic2124: - call void @finch_panic(ptr @.str.1228, i64 328, ptr @.str.1229) - unreachable -ok2125: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 1 - %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t34 = load i64, ptr %t33 - %t35 = load { ptr, i64, i64 }, ptr %t32 - %t36 = extractvalue { ptr, i64, i64 } %t35, 1 - %t37 = icmp uge i64 %t34, %t36 - br i1 %t37, label %range2126, label %inrange2127 -range2126: - call void @finch_panic_index(ptr @.str.1230, i64 328, i64 %t34, i64 %t36) - unreachable -inrange2127: - %t38 = extractvalue { ptr, i64, i64 } %t35, 0 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t34 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1231, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a41 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t46 = load i64, ptr %t45 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t44, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t44, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1232, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t61 = load i64, ptr %t60 - call void @finch_str_from_int(ptr %a62, i64 %t61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t59, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t59, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1233, i64 9, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic2128, label %ok2129 -panic2128: - call void @finch_panic(ptr @.str.1234, i64 328, ptr @.str.1235) - unreachable -ok2129: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 20 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t80, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t80, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = trunc i64 %t90 to i32 - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = icmp eq ptr %t92, null - %t94 = select i1 %t93, ptr @.str.1236, ptr %t92 - %t95 = call i32 (ptr, ...) @printf(ptr @.str.1237, i32 %t91, ptr %t94) - store { ptr, i64, i64 } %t89, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = call i32 (ptr, ...) @printf(ptr @.str.1238) - %t98 = trunc i64 1 to i32 - %t99 = call i32 @fflush(ptr null) - call void @exit(i32 %t98) - 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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2130, label %ok2131 -panic2130: - call void @finch_panic(ptr @.str.1239, i64 334, ptr @.str.1240) - unreachable -ok2131: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 36 - %t6 = load i64, ptr %t5 - %t7 = icmp sge i64 %t6, 0 - br label %logic.from2132 -logic.from2132: - br i1 %t7, label %logic.rhs2133, label %logic.end2134 -logic.rhs2133: - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1242, 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.rend2135 -logic.rend2135: - br label %logic.end2134 -logic.end2134: - %t14 = phi i1 [ false, %logic.from2132 ], [ %t13, %logic.rend2135 ] - br i1 %t14, label %then2136, label %endif2138 -then2136: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2139, label %ok2140 -panic2139: - call void @finch_panic(ptr @.str.1243, i64 335, ptr @.str.1244) - unreachable -ok2140: - %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.1245, 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.1246, i64 8, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = call i64 @finch.gen.dbgLocation(ptr %t29) - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = load i64, ptr %t18 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %t17, i64 %t40, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %t17 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t39 - store { ptr, i64, i64 } %t38, ptr %t42 - store i64 %t40, ptr %t18 - ret void -endif2138: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic2141, label %ok2142 -panic2141: - call void @finch_panic(ptr @.str.1247, i64 338, ptr @.str.1248) - unreachable -ok2142: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 4 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1249, i64 2, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a48 - %t52 = load i64, ptr %t46 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t45, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t45 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t46 - ret void -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2143, label %ok2144 -panic2143: - call void @finch_panic(ptr @.str.1250, i64 342, ptr @.str.1251) - unreachable -ok2144: - %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 %panic2145, label %ok2146 -panic2145: - call void @finch_panic(ptr @.str.1253, i64 343, ptr @.str.1254) - unreachable -ok2146: - %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.1252, i64 2, i64 0 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal { 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 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2147, label %ok2148 -panic2147: - call void @finch_panic(ptr @.str.1255, i64 347, ptr @.str.1256) - unreachable -ok2148: - %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 %panic2149, label %ok2150 -panic2149: - call void @finch_panic(ptr @.str.1257, i64 348, ptr @.str.1258) - unreachable -ok2150: - %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) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic2151, label %ok2152 -panic2151: - call void @finch_panic(ptr @.str.1259, i64 352, ptr @.str.1260) - unreachable -ok2152: - %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.1261, 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 %panic2153, label %ok2154 -panic2153: - call void @finch_panic(ptr @.str.1262, i64 353, ptr @.str.1263) - unreachable -ok2154: - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2155, label %ok2156 -panic2155: - call void @finch_panic(ptr @.str.1264, i64 357, ptr @.str.1265) - unreachable -ok2156: - %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 %then2157, label %endif2159 -then2157: - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1266, 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) - store { ptr, i64, i64 } %t13, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2160, label %ok2161 -panic2160: - call void @finch_panic(ptr @.str.1267, i64 359, ptr @.str.1268) - unreachable -ok2161: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 9 - store i1 true, ptr %t17 - br label %endif2159 -endif2159: - 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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1269, 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.1270, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1271, i64 9, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic2162, label %ok2163 -panic2162: - call void @finch_panic(ptr @.str.1272, i64 365, ptr @.str.1273) - unreachable -ok2163: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 9 - store i1 true, ptr %t36 - 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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2164, label %ok2165 -panic2164: - call void @finch_panic(ptr @.str.1274, i64 369, ptr @.str.1275) - unreachable -ok2165: - %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 %panic2166, label %ok2167 -panic2166: - call void @finch_panic(ptr @.str.1277, i64 370, ptr @.str.1278) - unreachable -ok2167: - %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.1276, i64 2, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2168, label %ok2169 -panic2168: - call void @finch_panic(ptr @.str.1279, i64 371, ptr @.str.1280) - unreachable -ok2169: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 5 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1281, i64 2, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1282, i64 10, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1283, i64 10, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load i64, ptr %t23 - %t46 = add i64 %t45, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t47 = load ptr, ptr %t22 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 - store { ptr, i64, i64 } %t44, ptr %t48 - store i64 %t46, ptr %t23 - %t49 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t49 -} - -define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { 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.1284, 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) - store { ptr, i64, i64 } %t12, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1285, i64 6, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t23, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t31 -} - -define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1286, 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.1287, i64 1, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1288, i64 6, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - ret void -} - -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 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a19 = 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 } %t7, ptr %a9 - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t14 = load %S.ast.Type, ptr %t13 - %t15 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t12, %S.ast.Type %t14) - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.store(ptr %t11, { ptr, i64, i64 } %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t20 -} - -define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = 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.1289, 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) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a5 - ret { ptr, i64, i64 } %t19 -} - -define internal i1 @finch.gen.has({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -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.cond2170 -find.cond2170: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body2171, label %find.end2174 -find.body2171: - %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.hit2172, label %find.next2173 -find.hit2172: - store i64 %t9, ptr %a5 - br label %find.end2174 -find.next2173: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond2170 -find.end2174: - %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.1290, 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.from2175 -logic.from2175: - br i1 %t12, label %logic.end2177, label %logic.rhs2176 -logic.rhs2176: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1291, 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.rend2178 -logic.rend2178: - br label %logic.end2177 -logic.end2177: - %t18 = phi i1 [ true, %logic.from2175 ], [ %t17, %logic.rend2178 ] - br label %logic.from2179 -logic.from2179: - br i1 %t18, label %logic.end2181, label %logic.rhs2180 -logic.rhs2180: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1292, 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.rend2182 -logic.rend2182: - br label %logic.end2181 -logic.end2181: - %t24 = phi i1 [ true, %logic.from2179 ], [ %t23, %logic.rend2182 ] - br label %logic.from2183 -logic.from2183: - br i1 %t24, label %logic.end2185, label %logic.rhs2184 -logic.rhs2184: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1293, 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.rend2186 -logic.rend2186: - br label %logic.end2185 -logic.end2185: - %t30 = phi i1 [ true, %logic.from2183 ], [ %t29, %logic.rend2186 ] - call void @finch_str_drop(ptr %a7) - 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.1294, 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.from2187 -logic.from2187: - br i1 %t12, label %logic.end2189, label %logic.rhs2188 -logic.rhs2188: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1295, 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.rend2190 -logic.rend2190: - br label %logic.end2189 -logic.end2189: - %t18 = phi i1 [ true, %logic.from2187 ], [ %t17, %logic.rend2190 ] - br label %logic.from2191 -logic.from2191: - br i1 %t18, label %logic.end2193, label %logic.rhs2192 -logic.rhs2192: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1296, 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.rend2194 -logic.rend2194: - br label %logic.end2193 -logic.end2193: - %t24 = phi i1 [ true, %logic.from2191 ], [ %t23, %logic.rend2194 ] - br label %logic.from2195 -logic.from2195: - br i1 %t24, label %logic.end2197, label %logic.rhs2196 -logic.rhs2196: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1297, 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.rend2198 -logic.rend2198: - br label %logic.end2197 -logic.end2197: - %t30 = phi i1 [ true, %logic.from2195 ], [ %t29, %logic.rend2198 ] - call void @finch_str_drop(ptr %a7) - 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.from2199 -logic.from2199: - br i1 %t3, label %logic.end2201, label %logic.rhs2200 -logic.rhs2200: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4) - br label %logic.rend2202 -logic.rend2202: - br label %logic.end2201 -logic.end2201: - %t6 = phi i1 [ true, %logic.from2199 ], [ %t5, %logic.rend2202 ] - 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.1298, 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.from2203 -logic.from2203: - br i1 %t7, label %logic.end2205, label %logic.rhs2204 -logic.rhs2204: - %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.1299, 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.rend2206 -logic.rend2206: - br label %logic.end2205 -logic.end2205: - %t14 = phi i1 [ true, %logic.from2203 ], [ %t13, %logic.rend2206 ] - 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.from2207 -logic.from2207: - br i1 %t3, label %logic.end2209, label %logic.rhs2208 -logic.rhs2208: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4) - br label %logic.rend2210 -logic.rend2210: - br label %logic.end2209 -logic.end2209: - %t6 = phi i1 [ true, %logic.from2207 ], [ %t5, %logic.rend2210 ] - 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.1300, 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 %then2211, label %endif2213 -then2211: - call void @finch_str_drop(ptr %a7) - ret i64 1 -endif2213: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1301, 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.from2214 -logic.from2214: - br i1 %t17, label %logic.end2216, label %logic.rhs2215 -logic.rhs2215: - %t18 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1302, 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.rend2217 -logic.rend2217: - br label %logic.end2216 -logic.end2216: - %t23 = phi i1 [ true, %logic.from2214 ], [ %t22, %logic.rend2217 ] - br label %logic.from2218 -logic.from2218: - br i1 %t23, label %logic.end2220, label %logic.rhs2219 -logic.rhs2219: - %t24 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1303, 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.rend2221 -logic.rend2221: - br label %logic.end2220 -logic.end2220: - %t29 = phi i1 [ true, %logic.from2218 ], [ %t28, %logic.rend2221 ] - br i1 %t29, label %then2222, label %endif2224 -then2222: - call void @finch_str_drop(ptr %a7) - ret i64 8 -endif2224: - %t30 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1304, 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.from2225 -logic.from2225: - br i1 %t34, label %logic.end2227, label %logic.rhs2226 -logic.rhs2226: - %t35 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1305, 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.rend2228 -logic.rend2228: - br label %logic.end2227 -logic.end2227: - %t40 = phi i1 [ true, %logic.from2225 ], [ %t39, %logic.rend2228 ] - br i1 %t40, label %then2229, label %endif2231 -then2229: - call void @finch_str_drop(ptr %a7) - ret i64 16 -endif2231: - %t41 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1306, 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.from2232 -logic.from2232: - br i1 %t45, label %logic.end2234, label %logic.rhs2233 -logic.rhs2233: - %t46 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1307, 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.rend2235 -logic.rend2235: - br label %logic.end2234 -logic.end2234: - %t51 = phi i1 [ true, %logic.from2232 ], [ %t50, %logic.rend2235 ] - br label %logic.from2236 -logic.from2236: - br i1 %t51, label %logic.end2238, label %logic.rhs2237 -logic.rhs2237: - %t52 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1308, 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.rend2239 -logic.rend2239: - br label %logic.end2238 -logic.end2238: - %t57 = phi i1 [ true, %logic.from2236 ], [ %t56, %logic.rend2239 ] - br i1 %t57, label %then2240, label %endif2242 -then2240: - call void @finch_str_drop(ptr %a7) - ret i64 32 -endif2242: - call void @finch_str_drop(ptr %a7) - 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.from2243 -logic.from2243: - br i1 %t5, label %logic.end2245, label %logic.rhs2244 -logic.rhs2244: - %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.rend2246 -logic.rend2246: - br label %logic.end2245 -logic.end2245: - %t9 = phi i1 [ true, %logic.from2243 ], [ %t8, %logic.rend2246 ] - br i1 %t9, label %then2247, label %endif2249 -then2247: - ret i1 false -endif2249: - %t10 = load %S.ast.Type, ptr %a1 - %t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10) - br label %logic.from2250 -logic.from2250: - br i1 %t11, label %logic.rhs2251, label %logic.end2252 -logic.rhs2251: - %t12 = load %S.ast.Type, ptr %a2 - %t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12) - br label %logic.rend2253 -logic.rend2253: - br label %logic.end2252 -logic.end2252: - %t14 = phi i1 [ false, %logic.from2250 ], [ %t13, %logic.rend2253 ] - br i1 %t14, label %then2254, label %endif2256 -then2254: - ret i1 false -endif2256: - %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 %then2257, label %endif2259 -then2257: - ret i1 false -endif2259: - %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.1309, i64 464) - 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 %then2260, label %endif2262 -then2260: - %t16 = load %S.ast.Type, ptr %a3 - %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) - br i1 %t17, label %then2263, label %endif2265 -then2263: - ret i1 false -endif2265: - %t18 = load i64, ptr %a13 - %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then2266, label %endif2268 -then2266: - ret i1 true -endif2268: - %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 -endif2262: - %t26 = load i64, ptr %a13 - %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then2269, label %endif2271 -then2269: - ret i1 true -endif2271: - %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 %then2272, label %endif2274 -then2272: - %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 %endif2274 -endif2274: - %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 %panic2275, label %ok2276 -panic2275: - call void @finch_panic(ptr @.str.1310, i64 486, ptr @.str.1311) - unreachable -ok2276: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 16 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2277 -for.cond2277: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2278, label %for.end2280 -for.body2278: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2281, label %ok2282 -panic2281: - call void @finch_panic(ptr @.str.1312, i64 487, ptr @.str.1313) - unreachable -ok2282: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2283, label %inrange2284 -range2283: - call void @finch_panic_index(ptr @.str.1314, i64 487, i64 %t15, i64 %t17) - unreachable -inrange2284: - %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.from2285 -logic.from2285: - br i1 %t27, label %logic.rhs2286, label %logic.end2287 -logic.rhs2286: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2288, label %ok2289 -panic2288: - call void @finch_panic(ptr @.str.1315, i64 487, ptr @.str.1316) - unreachable -ok2289: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2290, label %inrange2291 -range2290: - call void @finch_panic_index(ptr @.str.1317, i64 487, i64 %t31, i64 %t33) - unreachable -inrange2291: - %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.rend2292 -logic.rend2292: - br label %logic.end2287 -logic.end2287: - %t44 = phi i1 [ false, %logic.from2285 ], [ %t43, %logic.rend2292 ] - br i1 %t44, label %then2293, label %endif2295 -then2293: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2295: - br label %for.step2279 -for.step2279: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2277 -for.end2280: - 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 %panic2296, label %ok2297 -panic2296: - call void @finch_panic(ptr @.str.1318, i64 495, ptr @.str.1319) - unreachable -ok2297: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2298 -for.cond2298: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2299, label %for.end2301 -for.body2299: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2302, label %ok2303 -panic2302: - call void @finch_panic(ptr @.str.1320, i64 496, ptr @.str.1321) - unreachable -ok2303: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 21 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2304, label %inrange2305 -range2304: - call void @finch_panic_index(ptr @.str.1322, i64 496, i64 %t15, i64 %t17) - unreachable -inrange2305: - %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.from2306 -logic.from2306: - br i1 %t27, label %logic.rhs2307, label %logic.end2308 -logic.rhs2307: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2309, label %ok2310 -panic2309: - call void @finch_panic(ptr @.str.1323, i64 496, ptr @.str.1324) - unreachable -ok2310: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 21 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2311, label %inrange2312 -range2311: - call void @finch_panic_index(ptr @.str.1325, i64 496, i64 %t31, i64 %t33) - unreachable -inrange2312: - %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.rend2313 -logic.rend2313: - br label %logic.end2308 -logic.end2308: - %t44 = phi i1 [ false, %logic.from2306 ], [ %t43, %logic.rend2313 ] - br i1 %t44, label %then2314, label %endif2316 -then2314: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2316: - br label %for.step2300 -for.step2300: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2298 -for.end2301: - ret i64 -1 -} - -define internal i64 @finch.gen.findSum(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 %panic2317, label %ok2318 -panic2317: - call void @finch_panic(ptr @.str.1326, i64 504, ptr @.str.1327) - unreachable -ok2318: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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.cond2319 -for.cond2319: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2320, label %for.end2322 -for.body2320: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2323, label %ok2324 -panic2323: - call void @finch_panic(ptr @.str.1328, i64 505, ptr @.str.1329) - unreachable -ok2324: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 22 - %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 %range2325, label %inrange2326 -range2325: - call void @finch_panic_index(ptr @.str.1330, i64 505, i64 %t15, i64 %t17) - unreachable -inrange2326: - %t19 = extractvalue { ptr, i64, i64 } %t16, 0 - %t20 = getelementptr inbounds %S.gen.SumDef, ptr %t19, i64 %t15 - %t21 = getelementptr inbounds %S.gen.SumDef, 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.from2327 -logic.from2327: - br i1 %t27, label %logic.rhs2328, label %logic.end2329 -logic.rhs2328: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2330, label %ok2331 -panic2330: - call void @finch_panic(ptr @.str.1331, i64 505, ptr @.str.1332) - unreachable -ok2331: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 22 - %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 %range2332, label %inrange2333 -range2332: - call void @finch_panic_index(ptr @.str.1333, i64 505, i64 %t31, i64 %t33) - unreachable -inrange2333: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.gen.SumDef, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.gen.SumDef, 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.rend2334 -logic.rend2334: - br label %logic.end2329 -logic.end2329: - %t44 = phi i1 [ false, %logic.from2327 ], [ %t43, %logic.rend2334 ] - br i1 %t44, label %then2335, label %endif2337 -then2335: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2337: - br label %for.step2321 -for.step2321: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2319 -for.end2322: - 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 %panic2338, label %ok2339 -panic2338: - call void @finch_panic(ptr @.str.1334, i64 513, ptr @.str.1335) - unreachable -ok2339: - %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.cond2340 -for.cond2340: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2341, label %for.end2343 -for.body2341: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2344, label %ok2345 -panic2344: - call void @finch_panic(ptr @.str.1336, i64 514, ptr @.str.1337) - unreachable -ok2345: - %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 %range2346, label %inrange2347 -range2346: - call void @finch_panic_index(ptr @.str.1338, i64 514, i64 %t14, i64 %t16) - unreachable -inrange2347: - %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 %then2348, label %endif2350 -then2348: - %t27 = load i64, ptr %a8 - ret i64 %t27 -endif2350: - br label %for.step2342 -for.step2342: - %t28 = load i64, ptr %a8 - %t29 = add i64 %t28, 1 - store i64 %t29, ptr %a8 - br label %for.cond2340 -for.end2343: - 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 %panic2351, label %ok2352 -panic2351: - call void @finch_panic(ptr @.str.1339, i64 522, ptr @.str.1340) - unreachable -ok2352: - %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 %panic2353, label %ok2354 -panic2353: - call void @finch_panic(ptr @.str.1341, i64 522, ptr @.str.1342) - unreachable -ok2354: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 14 - %t10 = load { ptr, i64, i64 }, ptr %t9 - %t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10) - %t12 = load { ptr, i64, i64 }, ptr %t5 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range2355, label %inrange2356 -range2355: - call void @finch_panic_index(ptr @.str.1343, i64 522, i64 %t11, i64 %t13) - unreachable -inrange2356: - %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.cond2357 -find.cond2357: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t21 - br i1 %t25, label %find.body2358, label %find.end2361 -find.body2358: - %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.hit2359, label %find.next2360 -find.hit2359: - store i64 %t24, ptr %a20 - br label %find.end2361 -find.next2360: - %t32 = add i64 %t24, 1 - store i64 %t32, ptr %a23 - br label %find.cond2357 -find.end2361: - %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 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Type, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Type, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a155 = alloca %S.ast.Type, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a181 = alloca i64, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca i64, align 16 - %a209 = alloca i64, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1344, 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 %then2362, label %endif2364 -then2362: - %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 %range2365, label %inrange2366 -range2365: - call void @finch_panic_index(ptr @.str.1345, i64 527, i64 0, i64 %t13) - unreachable -inrange2366: - %t15 = extractvalue { ptr, i64, i64 } %t12, 0 - %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = load %S.ast.Node, ptr %a3 - %t19 = call %S.ast.Type @finch.gen.resolve(ptr %t10, %S.ast.Type %t17, %S.ast.Node %t18) - %t20 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.ast.Type %t20 -endif2364: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1346, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then2367, label %endif2369 -then2367: - %t28 = load ptr, ptr %a1 - %t29 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t30 = load { ptr, i64, i64 }, ptr %t29 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 0, %t31 - br i1 %t32, label %range2370, label %inrange2371 -range2370: - call void @finch_panic_index(ptr @.str.1347, i64 530, i64 0, i64 %t31) - unreachable -inrange2371: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Type, ptr %t33, i64 0 - %t35 = load %S.ast.Type, ptr %t34 - %t36 = load %S.ast.Node, ptr %a3 - %t37 = call %S.ast.Type @finch.gen.resolve(ptr %t28, %S.ast.Type %t35, %S.ast.Node %t36) - store %S.ast.Type %t37, ptr %a38 - %t39 = load %S.ast.Type, ptr %a38 - %t40 = call i1 @finch.gen.isInt(%S.ast.Type %t39) - %t41 = xor i1 %t40, true - br label %logic.from2372 -logic.from2372: - br i1 %t41, label %logic.rhs2373, label %logic.end2374 -logic.rhs2373: - %t42 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.1348, i64 4, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp eq i32 %t46, 0 - br label %logic.rend2375 -logic.rend2375: - br label %logic.end2374 -logic.end2374: - %t48 = phi i1 [ false, %logic.from2372 ], [ %t47, %logic.rend2375 ] - br label %logic.from2376 -logic.from2376: - br i1 %t48, label %logic.rhs2377, label %logic.end2378 -logic.rhs2377: - %t49 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1349, i64 4, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp eq i32 %t53, 0 - br label %logic.rend2379 -logic.rend2379: - br label %logic.end2378 -logic.end2378: - %t55 = phi i1 [ false, %logic.from2376 ], [ %t54, %logic.rend2379 ] - br label %logic.from2380 -logic.from2380: - br i1 %t55, label %logic.rhs2381, label %logic.end2382 -logic.rhs2381: - %t56 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1350, i64 3, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp eq i32 %t60, 0 - br label %logic.rend2383 -logic.rend2383: - br label %logic.end2382 -logic.end2382: - %t62 = phi i1 [ false, %logic.from2380 ], [ %t61, %logic.rend2383 ] - br label %logic.from2384 -logic.from2384: - br i1 %t62, label %logic.rhs2385, label %logic.end2386 -logic.rhs2385: - %t63 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t64 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.1351, i64 4, i64 0 }, ptr %a66 - %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) - %t68 = icmp eq i32 %t67, 0 - br label %logic.rend2387 -logic.rend2387: - br label %logic.end2386 -logic.end2386: - %t69 = phi i1 [ false, %logic.from2384 ], [ %t68, %logic.rend2387 ] - br i1 %t69, label %then2388, label %endif2390 -then2388: - %t70 = load ptr, ptr %a1 - %t71 = load %S.ast.Node, ptr %a3 - %t72 = load %S.ast.Type, ptr %a38 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } { ptr @.str.1352, i64 63, i64 0 }, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif2390 -endif2390: - %t80 = load ptr, ptr %a1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = extractvalue { ptr, i64, i64 } %t82, 1 - %t84 = icmp uge i64 1, %t83 - br i1 %t84, label %range2391, label %inrange2392 -range2391: - call void @finch_panic_index(ptr @.str.1353, i64 534, i64 1, i64 %t83) - unreachable -inrange2392: - %t85 = extractvalue { ptr, i64, i64 } %t82, 0 - %t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 1 - %t87 = load %S.ast.Type, ptr %t86 - %t88 = load %S.ast.Node, ptr %a3 - %t89 = call %S.ast.Type @finch.gen.resolve(ptr %t80, %S.ast.Type %t87, %S.ast.Node %t88) - store %S.ast.Type %t89, ptr %a90 - %t91 = getelementptr inbounds %S.ast.Type, ptr %a90, i32 0, i32 0 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.1354, i64 4, i64 0 }, ptr %a94 - %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) - %t96 = icmp ne i32 %t95, 0 - br i1 %t96, label %then2393, label %endif2395 -then2393: - %t97 = load ptr, ptr %a1 - %t98 = load %S.ast.Node, ptr %a3 - call void @finch.gen.fail(ptr %t97, %S.ast.Node %t98, { ptr, i64, i64 } { ptr @.str.1355, i64 41, i64 0 }) - br label %endif2395 -endif2395: - %t99 = load %S.ast.Type, ptr %a38 - %t100 = load %S.ast.Type, ptr %a90 - %t101 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t99, %S.ast.Type %t100) - call void @finch.drop.S_ast_Type(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.ast.Type %t101 -endif2369: - %t102 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1356, i64 5, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br i1 %t107, label %then2396, label %endif2398 -then2396: - %t108 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1357, i64 5, i64 0 }, 0 - %t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t110 = load i64, ptr %t109 - %t111 = insertvalue %S.ast.Type %t108, i64 %t110, 4 - store %S.ast.Type %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Type, ptr %a112, i32 0, i32 1 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 0, %t118 - br i1 %t119, label %range2399, label %inrange2400 -range2399: - call void @finch_panic_index(ptr @.str.1358, i64 542, i64 0, i64 %t118) - unreachable -inrange2400: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Type, ptr %t120, i64 0 - %t122 = load %S.ast.Type, ptr %t121 - %t123 = load %S.ast.Node, ptr %a3 - %t124 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t122, %S.ast.Node %t123) - %t125 = load i64, ptr %t114 - %t126 = add i64 %t125, 1 - call void @finch_arr_reserve(ptr %t113, i64 %t126, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t127 = load ptr, ptr %t113 - %t128 = getelementptr inbounds %S.ast.Type, ptr %t127, i64 %t125 - store %S.ast.Type %t124, ptr %t128 - store i64 %t126, ptr %t114 - %t129 = load %S.ast.Type, ptr %a112 - ret %S.ast.Type %t129 -endif2398: - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1359, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %then2401, label %endif2403 -then2401: - %t136 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br i1 %t139, label %then2404, label %endif2406 -then2404: - %t140 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - ret %S.ast.Type %t143 -endif2406: - %t144 = load ptr, ptr %a1 - %t145 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %t145 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 0, %t147 - br i1 %t148, label %range2407, label %inrange2408 -range2407: - call void @finch_panic_index(ptr @.str.1360, i64 549, i64 0, i64 %t147) - unreachable -inrange2408: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = load %S.ast.Node, ptr %a3 - %t153 = call %S.ast.Type @finch.gen.resolve(ptr %t144, %S.ast.Type %t151, %S.ast.Node %t152) - %t154 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t153) - store %S.ast.Type %t153, ptr %a155 - call void @finch.drop.S_ast_Type(ptr %a155) - ret %S.ast.Type %t154 -endif2403: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.1361, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br i1 %t161, label %then2409, label %endif2411 -then2409: - %t162 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t162, ptr %a163 - call void @finch.copy.S_ast_Type(ptr %a164, ptr %a163) - %t165 = load %S.ast.Type, ptr %a164 - ret %S.ast.Type %t165 -endif2411: - %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = icmp eq i64 %t168, 0 - br label %logic.from2412 -logic.from2412: - br i1 %t169, label %logic.rhs2413, label %logic.end2414 -logic.rhs2413: - %t170 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = icmp eq i64 %t172, 0 - br label %logic.rend2415 -logic.rend2415: - br label %logic.end2414 -logic.end2414: - %t174 = phi i1 [ false, %logic.from2412 ], [ %t173, %logic.rend2415 ] - br label %logic.from2416 -logic.from2416: - br i1 %t174, label %logic.rhs2417, label %logic.end2418 -logic.rhs2417: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic2419, label %ok2420 -panic2419: - call void @finch_panic(ptr @.str.1362, i64 555, ptr @.str.1363) - unreachable -ok2420: - %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 18 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t180 = load { ptr, i64, i64 }, ptr %t179 - store i64 -1, ptr %a181 - %t182 = load i64, ptr %t178 - %t183 = load ptr, ptr %t177 - store i64 0, ptr %a184 - br label %find.cond2421 -find.cond2421: - %t185 = load i64, ptr %a184 - %t186 = icmp slt i64 %t185, %t182 - br i1 %t186, label %find.body2422, label %find.end2425 -find.body2422: - %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.hit2423, label %find.next2424 -find.hit2423: - store i64 %t185, ptr %a181 - br label %find.end2425 -find.next2424: - %t193 = add i64 %t185, 1 - store i64 %t193, ptr %a184 - br label %find.cond2421 -find.end2425: - %t194 = load i64, ptr %a181 - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend2426 -logic.rend2426: - br label %logic.end2418 -logic.end2418: - %t196 = phi i1 [ false, %logic.from2416 ], [ %t195, %logic.rend2426 ] - br i1 %t196, label %then2427, label %endif2429 -then2427: - %t197 = load ptr, ptr %a1 - %t198 = icmp eq ptr %t197, null - br i1 %t198, label %panic2430, label %ok2431 -panic2430: - call void @finch_panic(ptr @.str.1364, i64 556, ptr @.str.1365) - unreachable -ok2431: - %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 19 - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic2432, label %ok2433 -panic2432: - call void @finch_panic(ptr @.str.1366, i64 556, ptr @.str.1367) - unreachable -ok2433: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 18 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 - %t204 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t205 = load { ptr, i64, i64 }, ptr %t204 - store i64 -1, ptr %a206 - %t207 = load i64, ptr %t203 - %t208 = load ptr, ptr %t202 - store i64 0, ptr %a209 - br label %find.cond2434 -find.cond2434: - %t210 = load i64, ptr %a209 - %t211 = icmp slt i64 %t210, %t207 - br i1 %t211, label %find.body2435, label %find.end2438 -find.body2435: - %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } %t205, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %find.hit2436, label %find.next2437 -find.hit2436: - store i64 %t210, ptr %a206 - br label %find.end2438 -find.next2437: - %t218 = add i64 %t210, 1 - store i64 %t218, ptr %a209 - br label %find.cond2434 -find.end2438: - %t219 = load i64, ptr %a206 - %t220 = load { ptr, i64, i64 }, ptr %t199 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range2439, label %inrange2440 -range2439: - call void @finch_panic_index(ptr @.str.1368, i64 556, i64 %t219, i64 %t221) - unreachable -inrange2440: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i64 %t219 - %t225 = load %S.ast.Type, ptr %t224 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - ret %S.ast.Type %t228 -endif2429: - %t229 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t231 = load i64, ptr %t230 - %t232 = icmp sgt i64 %t231, 0 - br i1 %t232, label %then2441, label %endif2443 -then2441: - store { ptr, i64, i64 } zeroinitializer, ptr %a233 - %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - store i64 0, ptr %a235 - br label %each.cond2444 -each.cond2444: - %t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t237 = load i64, ptr %t236 - %t238 = load i64, ptr %a235 - %t239 = icmp slt i64 %t238, %t237 - br i1 %t239, label %each.body2445, label %each.end2447 -each.body2445: - %t240 = load ptr, ptr %t234 - %t241 = getelementptr inbounds %S.ast.Type, ptr %t240, i64 %t238 - %t242 = load %S.ast.Type, ptr %t241 - store %S.ast.Type %t242, ptr %a243 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a233, i32 0, i32 1 - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Type, ptr %a243 - %t247 = load %S.ast.Node, ptr %a3 - %t248 = call %S.ast.Type @finch.gen.resolve(ptr %t245, %S.ast.Type %t246, %S.ast.Node %t247) - %t249 = load i64, ptr %t244 - %t250 = add i64 %t249, 1 - call void @finch_arr_reserve(ptr %a233, i64 %t250, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t251 = load ptr, ptr %a233 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i64 %t249 - store %S.ast.Type %t248, ptr %t252 - store i64 %t250, ptr %t244 - br label %each.step2446 -each.step2446: - %t253 = load i64, ptr %a235 - %t254 = add i64 %t253, 1 - store i64 %t254, ptr %a235 - br label %each.cond2444 -each.end2447: - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic2448, label %ok2449 -panic2448: - call void @finch_panic(ptr @.str.1369, i64 564, ptr @.str.1370) - unreachable -ok2449: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 14 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - %t266 = icmp sgt i64 %t265, 0 - br i1 %t266, label %then2450, label %endif2452 -then2450: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = call i1 @finch.gen.imports(ptr %t267, { ptr, i64, i64 } %t269) - %t271 = xor i1 %t270, true - br i1 %t271, label %then2453, label %endif2455 -then2453: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a3 - %t274 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.1372, i64 36, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t286 = load { ptr, i64, i64 }, ptr %t285 - store { ptr, i64, i64 } %t284, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t284, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.1373, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t272, %S.ast.Node %t273, { ptr, i64, i64 } %t296) - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif2455 -endif2455: - %t298 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t299 = load { ptr, i64, i64 }, ptr %t298 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_copy(ptr %a301, ptr %a300) - %t302 = load { ptr, i64, i64 }, ptr %a301 - %t303 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t302, ptr %a262 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif2452 -endif2452: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a262 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = load { ptr, i64, i64 }, ptr %a233 - %t310 = load %S.ast.Node, ptr %a3 - %t311 = call %S.ast.Type @finch.gen.instStruct(ptr %t305, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t308, { ptr, i64, i64 } %t309, %S.ast.Node %t310) - call void @finch_str_drop(ptr %a262) - call void @finch.drop.arr_S_ast_Type(ptr %a233) - ret %S.ast.Type %t311 -endif2443: - %t312 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1374, i64 1, i64 0 }, ptr %a315 - %t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315) - %t317 = icmp ne i32 %t316, 0 - br i1 %t317, label %then2456, label %endif2458 -then2456: - %t318 = load ptr, ptr %a1 - %t319 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t320 = load { ptr, i64, i64 }, ptr %t319 - %t321 = call i64 @finch.gen.findStruct(ptr %t318, { ptr, i64, i64 } { ptr @.str.1375, i64 1, i64 0 }, { ptr, i64, i64 } %t320) - %t322 = icmp slt i64 %t321, 0 - br i1 %t322, label %then2459, label %endif2461 -then2459: - %t323 = load ptr, ptr %a1 - %t324 = load %S.ast.Node, ptr %a3 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t326 = load { ptr, i64, i64 }, ptr %t325 - store { ptr, i64, i64 } { ptr @.str.1376, i64 28, i64 0 }, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - %t330 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t330, ptr %a332 - store { ptr, i64, i64 } { ptr @.str.1377, i64 1, i64 0 }, ptr %a333 - call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_drop(ptr %a334) - %t335 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t335) - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif2461 -endif2461: - %t337 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1378, i64 6, i64 0 }, 0 - %t338 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_copy(ptr %a341, ptr %a340) - %t342 = load { ptr, i64, i64 }, ptr %a341 - %t343 = insertvalue %S.ast.Type %t337, { ptr, i64, i64 } %t342, 2 - %t344 = insertvalue %S.ast.Type %t343, { ptr, i64, i64 } { ptr @.str.1379, i64 1, i64 0 }, 3 - ret %S.ast.Type %t344 -endif2458: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic2462, label %ok2463 -panic2462: - call void @finch_panic(ptr @.str.1380, i64 579, ptr @.str.1381) - unreachable -ok2463: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 14 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_copy(ptr %a350, ptr %a349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t351, ptr %a352 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i32 0, i32 1 - %t355 = load i64, ptr %t354 - %t356 = icmp sgt i64 %t355, 0 - br i1 %t356, label %then2464, label %endif2466 -then2464: - %t357 = load ptr, ptr %a1 - %t358 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t359 = load { ptr, i64, i64 }, ptr %t358 - %t360 = call i1 @finch.gen.imports(ptr %t357, { ptr, i64, i64 } %t359) - %t361 = xor i1 %t360, true - br i1 %t361, label %then2467, label %endif2469 -then2467: - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Node, ptr %a3 - %t364 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.1382, i64 1, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1383, i64 36, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t376 = load { ptr, i64, i64 }, ptr %t375 - store { ptr, i64, i64 } %t374, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t374, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.1384, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - call void @finch.gen.fail(ptr %t362, %S.ast.Node %t363, { ptr, i64, i64 } %t386) - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif2469 -endif2469: - %t388 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch_str_copy(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - %t393 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t392, ptr %a352 - store { ptr, i64, i64 } %t393, ptr %a394 - call void @finch_str_drop(ptr %a394) - br label %endif2466 -endif2466: - %t395 = load ptr, ptr %a1 - %t396 = load { ptr, i64, i64 }, ptr %a352 - %t397 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t398 = load { ptr, i64, i64 }, ptr %t397 - %t399 = call i64 @finch.gen.findEnum(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398) - %t400 = icmp sge i64 %t399, 0 - br i1 %t400, label %then2470, label %endif2472 -then2470: - %t401 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1385, i64 4, i64 0 }, 0 - %t402 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - call void @finch_str_copy(ptr %a405, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - %t407 = insertvalue %S.ast.Type %t401, { ptr, i64, i64 } %t406, 2 - %t408 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t408, ptr %a409 - call void @finch_str_copy(ptr %a410, ptr %a409) - %t411 = load { ptr, i64, i64 }, ptr %a410 - %t412 = insertvalue %S.ast.Type %t407, { ptr, i64, i64 } %t411, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t412 -endif2472: - %t413 = load ptr, ptr %a1 - %t414 = load { ptr, i64, i64 }, ptr %a352 - %t415 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call i64 @finch.gen.findStruct(ptr %t413, { ptr, i64, i64 } %t414, { ptr, i64, i64 } %t416) - %t418 = icmp slt i64 %t417, 0 - br i1 %t418, label %then2473, label %endif2475 -then2473: - %t419 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 - %t421 = load i64, ptr %t420 - %t422 = icmp eq i64 %t421, 0 - br label %logic.from2476 -logic.from2476: - br i1 %t422, label %logic.rhs2477, label %logic.end2478 -logic.rhs2477: - %t423 = load ptr, ptr %a1 - %t424 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t425 = load { ptr, i64, i64 }, ptr %t424 - %t426 = call i64 @finch.gen.findStruct(ptr %t423, { ptr, i64, i64 } { ptr @.str.1386, i64 1, i64 0 }, { ptr, i64, i64 } %t425) - %t427 = icmp sge i64 %t426, 0 - br label %logic.rend2479 -logic.rend2479: - br label %logic.end2478 -logic.end2478: - %t428 = phi i1 [ false, %logic.from2476 ], [ %t427, %logic.rend2479 ] - br i1 %t428, label %then2480, label %endif2482 -then2480: - %t429 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1387, i64 6, i64 0 }, 0 - %t430 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t431 = load { ptr, i64, i64 }, ptr %t430 - store { ptr, i64, i64 } %t431, ptr %a432 - call void @finch_str_copy(ptr %a433, ptr %a432) - %t434 = load { ptr, i64, i64 }, ptr %a433 - %t435 = insertvalue %S.ast.Type %t429, { ptr, i64, i64 } %t434, 2 - %t436 = insertvalue %S.ast.Type %t435, { ptr, i64, i64 } { ptr @.str.1388, i64 1, i64 0 }, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t436 -endif2482: - %t437 = load ptr, ptr %a1 - %t438 = load %S.ast.Node, ptr %a3 - %t439 = load %S.ast.Type, ptr %a2 - %t440 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t439) - store { ptr, i64, i64 } { ptr @.str.1389, i64 24, i64 0 }, ptr %a442 - store { ptr, i64, i64 } %t440, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - store { ptr, i64, i64 } %t445, ptr %a447 - store { ptr, i64, i64 } { ptr @.str.1390, i64 1, i64 0 }, ptr %a448 - call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) - store { ptr, i64, i64 } %t445, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a446 - call void @finch.gen.fail(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a451 - call void @finch_str_drop(ptr %a451) - br label %endif2475 -endif2475: - %t452 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1391, i64 6, i64 0 }, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_copy(ptr %a456, ptr %a455) - %t457 = load { ptr, i64, i64 }, ptr %a456 - %t458 = insertvalue %S.ast.Type %t452, { ptr, i64, i64 } %t457, 2 - %t459 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t459, ptr %a460 - call void @finch_str_copy(ptr %a461, ptr %a460) - %t462 = load { ptr, i64, i64 }, ptr %a461 - %t463 = insertvalue %S.ast.Type %t458, { ptr, i64, i64 } %t462, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t463 -} - -define internal { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %p0) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1393, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1394, 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.1396, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1397, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1399, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1400, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1402, i64 1, i64 0 }, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1403, i64 0, i64 0 }, ptr %a23 - call void @finch_str_replace(ptr %a21, ptr %a20, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a25 - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t24 -} - -define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) { -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 %then2483, label %endif2485 -then2483: - ret { ptr, i64, i64 } { ptr @.str.1404, i64 4, i64 0 } -endif2485: - %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 - %a29 = 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 - %a38 = 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.1405, 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 %then2486, label %endif2488 -then2486: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1406, i64 2, i64 0 } -endif2488: - %t14 = load %S.ast.Type, ptr %a2 - %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) - br label %logic.from2489 -logic.from2489: - br i1 %t15, label %logic.end2491, label %logic.rhs2490 -logic.rhs2490: - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - 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.rend2492 -logic.rend2492: - br label %logic.end2491 -logic.end2491: - %t21 = phi i1 [ true, %logic.from2489 ], [ %t20, %logic.rend2492 ] - br i1 %t21, label %then2493, label %endif2495 -then2493: - %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.1408, i64 1, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t30 -endif2495: - %t31 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1409, i64 5, i64 0 }, ptr %a33 - %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) - %t35 = icmp ne i32 %t34, 0 - br i1 %t35, label %then2496, label %endif2498 -then2496: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1410, i64 6, i64 0 } -endif2498: - %t36 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 }, ptr %a38 - %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) - %t40 = icmp ne i32 %t39, 0 - br i1 %t40, label %then2499, label %endif2501 -then2499: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1412, i64 5, i64 0 } -endif2501: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1413, 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.from2502 -logic.from2502: - br i1 %t45, label %logic.end2504, label %logic.rhs2503 -logic.rhs2503: - %t46 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1414, i64 5, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - br label %logic.rend2505 -logic.rend2505: - br label %logic.end2504 -logic.end2504: - %t51 = phi i1 [ true, %logic.from2502 ], [ %t50, %logic.rend2505 ] - br i1 %t51, label %then2506, label %endif2508 -then2506: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1415, i64 17, i64 0 } -endif2508: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1416, 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 %then2509, label %endif2511 -then2509: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1417, i64 37, i64 0 } -endif2511: - %t57 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1418, 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 %then2512, label %endif2514 -then2512: - %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1419, i64 1, i64 0 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.1420, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = load ptr, ptr %a1 - %t77 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range2515, label %inrange2516 -range2515: - call void @finch_panic_index(ptr @.str.1421, i64 632, i64 0, i64 %t79) - unreachable -inrange2516: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0 - %t83 = load %S.ast.Type, ptr %t82 - %t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t76, %S.ast.Type %t83) - store { ptr, i64, i64 } %t75, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t75, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.1422, i64 1, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t95 -endif2514: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.1423, i64 4, i64 0 }, ptr %a98 - %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) - %t100 = icmp ne i32 %t99, 0 - br i1 %t100, label %then2517, label %endif2519 -then2517: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1424, i64 3, i64 0 } -endif2519: - %t101 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1425, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.from2520 -logic.from2520: - br i1 %t105, label %logic.end2522, label %logic.rhs2521 -logic.rhs2521: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1426, 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.rend2523 -logic.rend2523: - br label %logic.end2522 -logic.end2522: - %t111 = phi i1 [ true, %logic.from2520 ], [ %t110, %logic.rend2523 ] - br i1 %t111, label %then2524, label %endif2526 -then2524: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1427, i64 3, i64 0 } -endif2526: - %t112 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1428, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2527, label %endif2529 -then2527: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1429, i64 4, i64 0 } -endif2529: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t118) - store { ptr, i64, i64 } { ptr @.str.1430, i64 3, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.1431, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t131) - store { ptr, i64, i64 } %t129, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t132, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a133 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t138 -} - -define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) { -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 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then2530, label %endif2532 -then2530: - %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 -endif2532: - store { ptr, i64, i64 } { ptr @.str.1432, 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.1433, 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 %then2533, label %endif2535 -then2533: - %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) - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t21, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif2535 -endif2535: - %t24 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1434, 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.1435, i64 21, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) { -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 - %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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1436, 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) - store { ptr, i64, i64 } %t7, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1437, i64 1, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.1438, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - ret { ptr, i64, i64 } %t47 -} - -define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) { -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.from2536 -logic.from2536: - br i1 %t9, label %logic.end2538, label %logic.rhs2537 -logic.rhs2537: - %t10 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1439, 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.rend2539 -logic.rend2539: - br label %logic.end2538 -logic.end2538: - %t15 = phi i1 [ true, %logic.from2536 ], [ %t14, %logic.rend2539 ] - br label %logic.from2540 -logic.from2540: - br i1 %t15, label %logic.end2542, label %logic.rhs2541 -logic.rhs2541: - %t16 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1440, 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.rend2543 -logic.rend2543: - br label %logic.end2542 -logic.end2542: - %t21 = phi i1 [ true, %logic.from2540 ], [ %t20, %logic.rend2543 ] - br i1 %t21, label %then2544, label %endif2546 -then2544: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1441, i64 1, i64 0 } -endif2546: - %t22 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1442, 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 %then2547, label %endif2549 -then2547: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1443, i64 5, i64 0 } -endif2549: - %t27 = load %S.ast.Type, ptr %a1 - %t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27) - br i1 %t28, label %then2550, label %endif2552 -then2550: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1444, i64 3, i64 0 } -endif2552: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1445, 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.from2553 -logic.from2553: - br i1 %t33, label %logic.end2555, label %logic.rhs2554 -logic.rhs2554: - %t34 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1446, 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.rend2556 -logic.rend2556: - br label %logic.end2555 -logic.end2555: - %t39 = phi i1 [ true, %logic.from2553 ], [ %t38, %logic.rend2556 ] - br i1 %t39, label %then2557, label %endif2559 -then2557: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1447, i64 4, i64 0 } -endif2559: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1448, 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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.1449, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1450, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal i1 @finch.gen.owning(ptr %p0, %S.ast.Type %p1) { -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.1451, 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.from2560 -logic.from2560: - br i1 %t8, label %logic.end2562, label %logic.rhs2561 -logic.rhs2561: - %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.1452, 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.rend2563 -logic.rend2563: - br label %logic.end2562 -logic.end2562: - %t15 = phi i1 [ true, %logic.from2560 ], [ %t14, %logic.rend2563 ] - br label %logic.from2564 -logic.from2564: - br i1 %t15, label %logic.end2566, label %logic.rhs2565 -logic.rhs2565: - %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.1453, 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.rend2567 -logic.rend2567: - br label %logic.end2566 -logic.end2566: - %t22 = phi i1 [ true, %logic.from2564 ], [ %t21, %logic.rend2567 ] - br i1 %t22, label %then2568, label %endif2570 -then2568: - ret i1 true -endif2570: - %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.1454, 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 %then2571, label %endif2573 -then2571: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2574, label %ok2575 -panic2574: - call void @finch_panic(ptr @.str.1455, i64 690, ptr @.str.1456) - unreachable -ok2575: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 16 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t34 = load { ptr, i64, i64 }, ptr %t33 - %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 %range2576, label %inrange2577 -range2576: - call void @finch_panic_index(ptr @.str.1457, i64 690, i64 %t37, i64 %t39) - unreachable -inrange2577: - %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 -endif2573: - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1458, 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 %then2578, label %endif2580 -then2578: - %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 %range2581, label %inrange2582 -range2581: - call void @finch_panic_index(ptr @.str.1460, i64 697, i64 0, i64 %t10) - unreachable -inrange2582: - %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.1459, i64 4, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif2580: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1461, 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 %then2583, label %endif2585 -then2583: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 0, %t29 - br i1 %t30, label %range2586, label %inrange2587 -range2586: - call void @finch_panic_index(ptr @.str.1463, i64 700, i64 0, i64 %t29) - unreachable -inrange2587: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 0 - %t33 = load %S.ast.Type, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t33) - store { ptr, i64, i64 } { ptr @.str.1462, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1464, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range2588, label %inrange2589 -range2588: - call void @finch_panic_index(ptr @.str.1465, i64 700, i64 1, i64 %t47) - unreachable -inrange2589: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Type, ptr %t49, i64 1 - %t51 = load %S.ast.Type, ptr %t50 - %t52 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t51) - store { ptr, i64, i64 } %t44, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t44, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - ret { ptr, i64, i64 } %t58 -endif2585: - %t59 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.1466, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then2590, label %endif2592 -then2590: - %t65 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t66 = load { ptr, i64, i64 }, ptr %t65 - %t67 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t66) - store { ptr, i64, i64 } { ptr @.str.1467, i64 2, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1468, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, ptr %a81 - store { ptr, i64, i64 } %t79, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t77, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -endif2592: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1469, i64 6, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp ne i32 %t89, 0 - br i1 %t90, label %then2593, label %endif2595 -then2593: - %t91 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t92) - store { ptr, i64, i64 } { ptr @.str.1470, i64 2, i64 0 }, ptr %a95 - store { ptr, i64, i64 } %t93, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.1471, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t105) - store { ptr, i64, i64 } %t103, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t103, ptr %a110 - call void @finch_str_drop(ptr %a110) - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a107 - ret { ptr, i64, i64 } %t112 -endif2595: - %t113 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t117 -} - -define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1472, 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 %range2596, label %inrange2597 -range2596: - call void @finch_panic_index(ptr @.str.1473, i64 715, i64 %t4, i64 %t6) - unreachable -inrange2597: - %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 %range2598, label %inrange2599 -range2598: - call void @finch_panic_index(ptr @.str.1474, i64 715, i64 %t14, i64 %t16) - unreachable -inrange2599: - %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) - store { ptr, i64, i64 } %t12, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t28 -} - -define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a29 = alloca i8, align 16 - %a32 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = 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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2600, label %ok2601 -panic2600: - call void @finch_panic(ptr @.str.1475, i64 719, ptr @.str.1476) - unreachable -ok2601: - %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 %panic2602, label %ok2603 -panic2602: - call void @finch_panic(ptr @.str.1478, i64 720, ptr @.str.1479) - unreachable -ok2603: - %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.1477, i64 6, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %each.cond2604 -each.cond2604: - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = load i64, ptr %a21 - %t25 = icmp slt i64 %t24, %t23 - br i1 %t25, label %each.body2605, label %each.end2607 -each.body2605: - %t26 = load ptr, ptr %a2 - %t27 = getelementptr inbounds i8, ptr %t26, i64 %t24 - %t28 = load i8, ptr %t27 - store i8 %t28, ptr %a29 - %t30 = load i8, ptr %a29 - %t31 = zext i8 %t30 to i64 - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then2608, label %endif2610 -then2608: - %t35 = load i64, ptr %a32 - %t36 = add i64 %t35, 256 - store i64 %t36, ptr %a32 - br label %endif2610 -endif2610: - %t37 = load i64, ptr %a32 - %t38 = icmp sge i64 %t37, 32 - br label %logic.from2611 -logic.from2611: - br i1 %t38, label %logic.rhs2612, label %logic.end2613 -logic.rhs2612: - %t39 = load i64, ptr %a32 - %t40 = icmp slt i64 %t39, 127 - br label %logic.rend2614 -logic.rend2614: - br label %logic.end2613 -logic.end2613: - %t41 = phi i1 [ false, %logic.from2611 ], [ %t40, %logic.rend2614 ] - br label %logic.from2615 -logic.from2615: - br i1 %t41, label %logic.rhs2616, label %logic.end2617 -logic.rhs2616: - %t42 = load i8, ptr %a29 - %t43 = icmp ne i8 %t42, 34 - br label %logic.rend2618 -logic.rend2618: - br label %logic.end2617 -logic.end2617: - %t44 = phi i1 [ false, %logic.from2615 ], [ %t43, %logic.rend2618 ] - br label %logic.from2619 -logic.from2619: - br i1 %t44, label %logic.rhs2620, label %logic.end2621 -logic.rhs2620: - %t45 = load i8, ptr %a29 - %t46 = icmp ne i8 %t45, 92 - br label %logic.rend2622 -logic.rend2622: - br label %logic.end2621 -logic.end2621: - %t47 = phi i1 [ false, %logic.from2619 ], [ %t46, %logic.rend2622 ] - br i1 %t47, label %then2623, label %else2624 -then2623: - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t49 = load i8, ptr %a29 - call void @finch_str_from_char(ptr %a50, i8 signext %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load i64, ptr %t48 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a20 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t48 - br label %endif2625 -else2624: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t57 = load i64, ptr %a32 - %t58 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t57) - store { ptr, i64, i64 } { ptr @.str.1480, i64 1, i64 0 }, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = load i64, ptr %t56 - %t65 = add i64 %t64, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t65, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t66 = load ptr, ptr %a20 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i64 %t64 - store { ptr, i64, i64 } %t63, ptr %t67 - store i64 %t65, ptr %t56 - br label %endif2625 -endif2625: - br label %each.step2606 -each.step2606: - %t68 = load i64, ptr %a21 - %t69 = add i64 %t68, 1 - store i64 %t69, ptr %a21 - br label %each.cond2604 -each.end2607: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic2626, label %ok2627 -panic2626: - call void @finch_panic(ptr @.str.1481, i64 733, ptr @.str.1482) - unreachable -ok2627: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 2 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1483, i64 34, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = add i64 %t80, 1 - call void @finch_str_from_int(ptr %a82, i64 %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t78, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t78, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1484, i64 9, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1485, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a20, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t94, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.1486, i64 4, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load i64, ptr %t73 - %t111 = add i64 %t110, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t112 = load ptr, ptr %t72 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 - store { ptr, i64, i64 } %t109, ptr %t113 - store i64 %t111, ptr %t73 - %t114 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_str(ptr %a20) - ret { ptr, i64, i64 } %t114 -} - -define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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.1487, 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.1488, i64 6, i64 0 }, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t18 = load i64, ptr %t17 - call void @finch_str_from_int(ptr %a19, i64 %t18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t16, ptr %a24 - call void @finch_str_drop(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1489, i64 9, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t31, 0 - %t33 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1490, i64 3, i64 0 }) - %t34 = insertvalue %S.gen.Val %t32, %S.ast.Type %t33, 1 - %t35 = insertvalue %S.gen.Val %t34, i1 true, 2 - call void @finch_str_drop(ptr %a6) - ret %S.gen.Val %t35 -} - -define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1491, 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.1492, 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 %panic2628, label %ok2629 -panic2628: - call void @finch_panic(ptr @.str.1493, i64 749, ptr @.str.1494) - unreachable -ok2629: - %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 %range2630, label %inrange2631 -range2630: - call void @finch_panic_index(ptr @.str.1495, i64 749, i64 %t22, i64 %t24) - unreachable -inrange2631: - %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.1496, 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.1497, i64 6, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t47 = load i64, ptr %t46 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t45, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t45, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1498, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1499, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t73, { ptr, i64, i64 } { ptr @.str.1500, i64 11, i64 0 }) - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic2632, label %ok2633 -panic2632: - call void @finch_panic(ptr @.str.1501, i64 753, ptr @.str.1502) - unreachable -ok2633: - %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 9 - store i1 true, ptr %t76 - %t77 = load ptr, ptr %a1 - %t78 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t77, { ptr, i64, i64 } %t78) - call void @finch_str_drop(ptr %a34) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1503, 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.1504, 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.1505, 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.1506, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = load { ptr, i64, i64 }, ptr %a30 - %t33 = load { ptr, i64, i64 }, ptr %a7 - %t34 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.condBr(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, { ptr, i64, i64 } %t34) - %t35 = load ptr, ptr %a1 - %t36 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.gen.label(ptr %t35, { ptr, i64, i64 } %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic2634, label %ok2635 -panic2634: - call void @finch_panic(ptr @.str.1507, i64 763, ptr @.str.1508) - unreachable -ok2635: - %t40 = getelementptr inbounds %S.gen.Gen, ptr %t38, i32 0, i32 1 - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t40 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range2636, label %inrange2637 -range2636: - call void @finch_panic_index(ptr @.str.1509, i64 763, i64 %t42, i64 %t44) - unreachable -inrange2637: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t42 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t37, { ptr, i64, i64 } %t48) - store { ptr, i64, i64 } %t49, ptr %a50 - %t51 = load ptr, ptr %a1 - %t52 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.1510, i64 33, i64 0 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1511, i64 6, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t61, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t61, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1512, i64 6, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t76, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.1513, i64 6, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.1514, i64 1, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - call void @finch.gen.emit(ptr %t51, { ptr, i64, i64 } %t98) - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t100, { ptr, i64, i64 } { ptr @.str.1515, i64 11, i64 0 }) - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic2638, label %ok2639 -panic2638: - call void @finch_panic(ptr @.str.1516, i64 766, ptr @.str.1517) - unreachable -ok2639: - %t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 9 - store i1 true, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t104, { ptr, i64, i64 } %t105) - call void @finch_str_drop(ptr %a50) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2640, label %ok2641 -panic2640: - call void @finch_panic(ptr @.str.1518, i64 781, ptr @.str.1519) - unreachable -ok2641: - %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 %panic2642, label %ok2643 -panic2642: - call void @finch_panic(ptr @.str.1520, i64 781, ptr @.str.1521) - unreachable -ok2643: - %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 %panic2644, label %ok2645 -panic2644: - call void @finch_panic(ptr @.str.1522, i64 781, ptr @.str.1523) - unreachable -ok2645: - %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 %panic2646, label %ok2647 -panic2646: - call void @finch_panic(ptr @.str.1524, i64 781, ptr @.str.1525) - unreachable -ok2647: - %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 %panic2648, label %ok2649 -panic2648: - call void @finch_panic(ptr @.str.1526, i64 781, ptr @.str.1527) - unreachable -ok2649: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 36 - %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 %panic2650, label %ok2651 -panic2650: - call void @finch_panic(ptr @.str.1528, i64 782, ptr @.str.1529) - unreachable -ok2651: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 36 - 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 %panic2652, label %ok2653 -panic2652: - call void @finch_panic(ptr @.str.1530, i64 784, ptr @.str.1531) - unreachable -ok2653: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 4 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a37 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic2654, label %ok2655 -panic2654: - call void @finch_panic(ptr @.str.1532, i64 785, ptr @.str.1533) - unreachable -ok2655: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 5 - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch.copy.arr_str(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } %t53, ptr %t50 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.drop.arr_str(ptr %a55) - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic2656, label %ok2657 -panic2656: - call void @finch_panic(ptr @.str.1534, i64 786, ptr @.str.1535) - unreachable -ok2657: - %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 6 - store i64 0, ptr %t58 - %t59 = load ptr, ptr %a1 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic2658, label %ok2659 -panic2658: - call void @finch_panic(ptr @.str.1536, i64 787, ptr @.str.1537) - unreachable -ok2659: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 9 - store i1 false, ptr %t61 - %t62 = load %S.gen.Saved, ptr %a33 - call void @finch.drop.arr_str(ptr %a37) - ret %S.gen.Saved %t62 -} - -define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) { -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Saved %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2660, label %ok2661 -panic2660: - call void @finch_panic(ptr @.str.1538, i64 792, ptr @.str.1539) - unreachable -ok2661: - %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.1540, 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 %panic2662, label %ok2663 -panic2662: - call void @finch_panic(ptr @.str.1541, i64 792, ptr @.str.1542) - unreachable -ok2663: - %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.1543, 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) - store { ptr, i64, i64 } %t12, ptr %a23 - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.1544, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic2664, label %ok2665 -panic2664: - call void @finch_panic(ptr @.str.1545, i64 792, ptr @.str.1546) - unreachable -ok2665: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 4 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1547, i64 1, i64 0 }, ptr %a35 - call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) - %t37 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t30, ptr %a39 - store { ptr, i64, i64 } %t37, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t30, ptr %a41 - call void @finch_str_drop(ptr %a41) - store { ptr, i64, i64 } %t37, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.1548, i64 3, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %t7 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t6, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t6 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 - store { ptr, i64, i64 } %t48, ptr %t52 - store i64 %t50, ptr %t7 - %t53 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic2666, label %ok2667 -panic2666: - call void @finch_panic(ptr @.str.1549, i64 793, ptr @.str.1550) - unreachable -ok2667: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 4 - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch.copy.arr_str(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - %t61 = load { ptr, i64, i64 }, ptr %t57 - store { ptr, i64, i64 } %t60, ptr %t57 - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch.drop.arr_str(ptr %a62) - %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2668, label %ok2669 -panic2668: - call void @finch_panic(ptr @.str.1551, i64 794, ptr @.str.1552) - unreachable -ok2669: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 5 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch.copy.arr_str(ptr %a69, ptr %a68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - %t71 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t70, ptr %t67 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch.drop.arr_str(ptr %a72) - %t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 - %t74 = load i64, ptr %t73 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2670, label %ok2671 -panic2670: - call void @finch_panic(ptr @.str.1553, i64 795, ptr @.str.1554) - unreachable -ok2671: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 6 - store i64 %t74, ptr %t77 - %t78 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3 - %t79 = load i1, ptr %t78 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic2672, label %ok2673 -panic2672: - call void @finch_panic(ptr @.str.1555, i64 796, ptr @.str.1556) - unreachable -ok2673: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 9 - store i1 %t79, ptr %t82 - %t83 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4 - %t84 = load i64, ptr %t83 - %t85 = load ptr, ptr %a1 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic2674, label %ok2675 -panic2674: - call void @finch_panic(ptr @.str.1557, i64 797, ptr @.str.1558) - unreachable -ok2675: - %t87 = getelementptr inbounds %S.gen.Gen, ptr %t85, i32 0, i32 36 - store i64 %t84, ptr %t87 - 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - 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.1559, 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.1560, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1561, 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.1562, 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.1563, 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.1564, 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.1565, 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.1566, 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.1567, i64 2, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a44 - %t47 = load { ptr, i64, i64 }, ptr %a13 - %t48 = load { ptr, i64, i64 }, ptr %a16 - call void @finch.gen.condBr(ptr %t45, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t47, { ptr, i64, i64 } %t48) - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.label(ptr %t49, { ptr, i64, i64 } %t50) - %t51 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %t55 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t68 = call ptr @finch_alloc(i64 %t67) - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 0 - store { ptr, i64, i64 } %t54, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 1 - store { ptr, i64, i64 } %t58, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 2 - store { ptr, i64, i64 } %t62, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 3 - store { ptr, i64, i64 } %t66, ptr %t72 - %t73 = insertvalue { ptr, i64, i64 } undef, ptr %t68, 0 - %t74 = insertvalue { ptr, i64, i64 } %t73, i64 4, 1 - %t75 = insertvalue { ptr, i64, i64 } %t74, i64 4, 2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a16) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t75 -} - -define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2676, label %inrange2677 -range2676: - call void @finch_panic_index(ptr @.str.1569, i64 817, i64 0, i64 %t5) - unreachable -inrange2677: - %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.1568, 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.1571, 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.1572, i64 3, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t23, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a2 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 0, %t27 - br i1 %t28, label %range2678, label %inrange2679 -range2678: - call void @finch_panic_index(ptr @.str.1573, i64 818, i64 0, i64 %t27) - unreachable -inrange2679: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 - %t31 = load { ptr, i64, i64 }, ptr %t30 - call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1570, i64 3, i64 0 }, { ptr, i64, i64 } %t24, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t24, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a2 - %t35 = extractvalue { ptr, i64, i64 } %t34, 1 - %t36 = icmp uge i64 1, %t35 - br i1 %t36, label %range2680, label %inrange2681 -range2680: - call void @finch_panic_index(ptr @.str.1574, i64 819, i64 1, i64 %t35) - unreachable -inrange2681: - %t37 = extractvalue { ptr, i64, i64 } %t34, 0 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 1 - %t39 = load { ptr, i64, i64 }, ptr %t38 - call void @finch.gen.br(ptr %t33, { ptr, i64, i64 } %t39) - %t40 = load ptr, ptr %a1 - %t41 = load { ptr, i64, i64 }, ptr %a2 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 2, %t42 - br i1 %t43, label %range2682, label %inrange2683 -range2682: - call void @finch_panic_index(ptr @.str.1575, i64 820, i64 2, i64 %t42) - unreachable -inrange2683: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 2 - %t46 = load { ptr, i64, i64 }, ptr %t45 - call void @finch.gen.label(ptr %t40, { ptr, i64, i64 } %t46) - call void @finch_str_drop(ptr %a11) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1576, 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 %then2684, label %else2685 -then2684: - %t11 = load ptr, ptr %a1 - %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1577, 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.1578, i64 6, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t27, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.1579, i64 1, i64 0 }, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t27, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif2686 -else2685: - %t34 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1580, i64 5, i64 0 }, ptr %a37 - %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) - %t39 = icmp ne i32 %t38, 0 - br label %logic.from2687 -logic.from2687: - br i1 %t39, label %logic.end2689, label %logic.rhs2688 -logic.rhs2688: - %t40 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1581, 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.rend2690 -logic.rend2690: - br label %logic.end2689 -logic.end2689: - %t46 = phi i1 [ true, %logic.from2687 ], [ %t45, %logic.rend2690 ] - br label %logic.from2691 -logic.from2691: - br i1 %t46, label %logic.end2693, label %logic.rhs2692 -logic.rhs2692: - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1582, i64 6, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from2694 -logic.from2694: - br i1 %t52, label %logic.rhs2695, label %logic.end2696 -logic.rhs2695: - %t53 = load ptr, ptr %a1 - %t54 = load %S.ast.Type, ptr %a4 - %t55 = call i1 @finch.gen.owning(ptr %t53, %S.ast.Type %t54) - br label %logic.rend2697 -logic.rend2697: - br label %logic.end2696 -logic.end2696: - %t56 = phi i1 [ false, %logic.from2694 ], [ %t55, %logic.rend2697 ] - br label %logic.rend2698 -logic.rend2698: - br label %logic.end2693 -logic.end2693: - %t57 = phi i1 [ true, %logic.from2691 ], [ %t56, %logic.rend2698 ] - br i1 %t57, label %then2699, label %else2700 -then2699: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1583, i64 10, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1584, i64 5, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1585, i64 6, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t82, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1586, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.emit(ptr %t58, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif2701 -else2700: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a4 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - %t99 = load ptr, ptr %a1 - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Type, ptr %a4 - %t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101) - %t103 = load { ptr, i64, i64 }, ptr %a3 - %t104 = call { ptr, i64, i64 } @finch.gen.load(ptr %t99, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a2 - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t98, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2701 -endif2701: - br label %endif2686 -endif2686: - ret void -} - -define internal void @finch.drop.S_gen_Saved(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - ret void -} - -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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.StructDef, align 16 - %a365 = alloca %S.gen.StructDef, align 16 - %a367 = alloca %S.gen.StructDef, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca i64, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1587, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2702, label %ok2703 -panic2702: - call void @finch_panic(ptr @.str.1588, i64 835, ptr @.str.1589) - unreachable -ok2703: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2704, label %endif2706 -then2704: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2706: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2707, label %ok2708 -panic2707: - call void @finch_panic(ptr @.str.1590, i64 838, ptr @.str.1591) - unreachable -ok2708: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1592, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2709, label %else2710 -then2709: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2712, label %inrange2713 -range2712: - call void @finch_panic_index(ptr @.str.1593, i64 841, i64 0, i64 %t41) - unreachable -inrange2713: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load ptr, ptr %a1 - %t52 = load %S.ast.Type, ptr %a49 - %t53 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t51, %S.ast.Type %t52) - store { ptr, i64, i64 } { ptr @.str.1594, i64 55, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.1595, i64 1, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.emit(ptr %t50, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Type, ptr %a49 - %t67 = call i1 @finch.gen.owning(ptr %t65, %S.ast.Type %t66) - br i1 %t67, label %then2714, label %endif2716 -then2714: - %t68 = load ptr, ptr %a1 - %t69 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.1596, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1597, i64 4, i64 0 }) - store { ptr, i64, i64 } %t69, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t71, { ptr, i64, i64 } { ptr @.str.1598, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1599, i64 4, i64 0 }) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t75, { ptr, i64, i64 } { ptr @.str.1601, i64 64, i64 0 }) - %t77 = call { ptr, i64, i64 } @finch.gen.load(ptr %t74, { ptr, i64, i64 } { ptr @.str.1600, i64 3, i64 0 }, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - store { ptr, i64, i64 } %t77, ptr %a79 - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a79 - %t82 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t80, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Type, ptr %a49 - %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) - store { ptr, i64, i64 } { ptr @.str.1602, i64 23, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.1603, i64 6, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1604, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a83 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 3, %t110 - br i1 %t111, label %range2717, label %inrange2718 -range2717: - call void @finch_panic_index(ptr @.str.1605, i64 848, i64 3, i64 %t110) - unreachable -inrange2718: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 3 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t108, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t108, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t84, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Type, ptr %a49 - %t126 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t124, %S.ast.Type %t125) - store { ptr, i64, i64 } { ptr @.str.1606, i64 23, i64 0 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1607, i64 6, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t136, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t136, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.1608, i64 6, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - store { ptr, i64, i64 } %t142, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a143 - %t148 = load { ptr, i64, i64 }, ptr %a83 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 3, %t149 - br i1 %t150, label %range2719, label %inrange2720 -range2719: - call void @finch_panic_index(ptr @.str.1609, i64 849, i64 3, i64 %t149) - unreachable -inrange2720: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 3 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t147, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t147, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = call { ptr, i64, i64 } @finch.gen.op(ptr %t123, { ptr, i64, i64 } %t158) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - store { ptr, i64, i64 } %t159, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a122 - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load %S.ast.Type, ptr %a49 - call void @finch.gen.copyAt(ptr %t162, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t164, %S.ast.Type %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.loopEnd(ptr %t166, { ptr, i64, i64 } %t167) - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a122) - call void @finch.drop.arr_str(ptr %a83) - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a73) - call void @finch_str_drop(ptr %a70) - br label %endif2716 -endif2716: - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2711 -else2710: - %t168 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.1610, i64 3, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then2721, label %else2722 -then2721: - %t174 = load ptr, ptr %a1 - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Type, ptr %a2 - %t177 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t175, %S.ast.Type %t176) - store { ptr, i64, i64 } { ptr @.str.1611, i64 55, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t177, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1612, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 0, %t192 - br i1 %t193, label %range2724, label %inrange2725 -range2724: - call void @finch_panic_index(ptr @.str.1613, i64 855, i64 0, i64 %t192) - unreachable -inrange2725: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Type, ptr %t194, i64 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = call i1 @finch.gen.owning(ptr %t189, %S.ast.Type %t196) - br label %logic.from2726 -logic.from2726: - br i1 %t197, label %logic.end2728, label %logic.rhs2727 -logic.rhs2727: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t200 = load { ptr, i64, i64 }, ptr %t199 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 1, %t201 - br i1 %t202, label %range2729, label %inrange2730 -range2729: - call void @finch_panic_index(ptr @.str.1614, i64 855, i64 1, i64 %t201) - unreachable -inrange2730: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.ast.Type, ptr %t203, i64 1 - %t205 = load %S.ast.Type, ptr %t204 - %t206 = call i1 @finch.gen.owning(ptr %t198, %S.ast.Type %t205) - br label %logic.rend2731 -logic.rend2731: - br label %logic.end2728 -logic.end2728: - %t207 = phi i1 [ true, %logic.from2726 ], [ %t206, %logic.rend2731 ] - br i1 %t207, label %then2732, label %endif2734 -then2732: - %t208 = load ptr, ptr %a1 - %t209 = load ptr, ptr %a1 - %t210 = load ptr, ptr %a1 - %t211 = load %S.ast.Type, ptr %a2 - %t212 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t210, %S.ast.Type %t211) - store { ptr, i64, i64 } { ptr @.str.1616, i64 23, i64 0 }, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.1617, i64 24, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t209, { ptr, i64, i64 } %t222) - store { ptr, i64, i64 } %t222, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = call { ptr, i64, i64 } @finch.gen.load(ptr %t208, { ptr, i64, i64 } { ptr @.str.1615, i64 3, i64 0 }, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t225, ptr %a227 - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a227 - %t230 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t228, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a2 - %t234 = load { ptr, i64, i64 }, ptr %a231 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 3, %t235 - br i1 %t236, label %range2735, label %inrange2736 -range2735: - call void @finch_panic_index(ptr @.str.1619, i64 859, i64 3, i64 %t235) - unreachable -inrange2736: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 3 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } { ptr @.str.1618, i64 4, i64 0 }, %S.ast.Type %t233, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t240, ptr %a241 - %t242 = load ptr, ptr %a1 - %t243 = load %S.ast.Type, ptr %a2 - %t244 = load { ptr, i64, i64 }, ptr %a231 - %t245 = extractvalue { ptr, i64, i64 } %t244, 1 - %t246 = icmp uge i64 3, %t245 - br i1 %t246, label %range2737, label %inrange2738 -range2737: - call void @finch_panic_index(ptr @.str.1621, i64 860, i64 3, i64 %t245) - unreachable -inrange2738: - %t247 = extractvalue { ptr, i64, i64 } %t244, 0 - %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i64 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - %t250 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t242, { ptr, i64, i64 } { ptr @.str.1620, i64 4, i64 0 }, %S.ast.Type %t243, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t252, { ptr, i64, i64 } { ptr @.str.1622, i64 10, i64 0 }) - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t255, { ptr, i64, i64 } { ptr @.str.1623, i64 10, i64 0 }) - store { ptr, i64, i64 } %t256, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a1 - %t260 = load ptr, ptr %a1 - %t261 = load ptr, ptr %a1 - %t262 = load ptr, ptr %a1 - %t263 = load %S.ast.Type, ptr %a2 - %t264 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t262, %S.ast.Type %t263) - store { ptr, i64, i64 } { ptr @.str.1626, i64 23, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_drop(ptr %a268) - %t269 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t269, ptr %a271 - store { ptr, i64, i64 } { ptr @.str.1627, i64 6, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = load { ptr, i64, i64 }, ptr %a241 - store { ptr, i64, i64 } %t274, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t274, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.1628, i64 14, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t261, { ptr, i64, i64 } %t285) - store { ptr, i64, i64 } %t285, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = call { ptr, i64, i64 } @finch.gen.load(ptr %t260, { ptr, i64, i64 } { ptr @.str.1625, i64 3, i64 0 }, { ptr, i64, i64 } %t286) - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_drop(ptr %a289) - store { ptr, i64, i64 } { ptr @.str.1624, i64 12, i64 0 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1629, i64 3, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t259, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a254 - %t303 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.condBr(ptr %t258, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a254 - call void @finch.gen.label(ptr %t305, { ptr, i64, i64 } %t306) - %t307 = load ptr, ptr %a1 - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a251 - %t310 = load %S.ast.Type, ptr %a2 - %t311 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310, i64 1) - %t312 = load ptr, ptr %a1 - %t313 = load { ptr, i64, i64 }, ptr %a241 - %t314 = load %S.ast.Type, ptr %a2 - %t315 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t312, { ptr, i64, i64 } %t313, %S.ast.Type %t314, i64 1) - %t316 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %t316 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 0, %t318 - br i1 %t319, label %range2739, label %inrange2740 -range2739: - call void @finch_panic_index(ptr @.str.1630, i64 865, i64 0, i64 %t318) - unreachable -inrange2740: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds %S.ast.Type, ptr %t320, i64 0 - %t322 = load %S.ast.Type, ptr %t321 - call void @finch.gen.copyAt(ptr %t307, { ptr, i64, i64 } %t311, { ptr, i64, i64 } %t315, %S.ast.Type %t322) - store { ptr, i64, i64 } %t311, ptr %a323 - call void @finch_str_drop(ptr %a323) - store { ptr, i64, i64 } %t315, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load ptr, ptr %a1 - %t326 = load ptr, ptr %a1 - %t327 = load { ptr, i64, i64 }, ptr %a251 - %t328 = load %S.ast.Type, ptr %a2 - %t329 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t326, { ptr, i64, i64 } %t327, %S.ast.Type %t328, i64 2) - %t330 = load ptr, ptr %a1 - %t331 = load { ptr, i64, i64 }, ptr %a241 - %t332 = load %S.ast.Type, ptr %a2 - %t333 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t330, { ptr, i64, i64 } %t331, %S.ast.Type %t332, i64 2) - %t334 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t335 = load { ptr, i64, i64 }, ptr %t334 - %t336 = extractvalue { ptr, i64, i64 } %t335, 1 - %t337 = icmp uge i64 1, %t336 - br i1 %t337, label %range2741, label %inrange2742 -range2741: - call void @finch_panic_index(ptr @.str.1631, i64 866, i64 1, i64 %t336) - unreachable -inrange2742: - %t338 = extractvalue { ptr, i64, i64 } %t335, 0 - %t339 = getelementptr inbounds %S.ast.Type, ptr %t338, i64 1 - %t340 = load %S.ast.Type, ptr %t339 - call void @finch.gen.copyAt(ptr %t325, { ptr, i64, i64 } %t329, { ptr, i64, i64 } %t333, %S.ast.Type %t340) - store { ptr, i64, i64 } %t329, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t333, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - %t344 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.br(ptr %t343, { ptr, i64, i64 } %t344) - %t345 = load ptr, ptr %a1 - %t346 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.label(ptr %t345, { ptr, i64, i64 } %t346) - %t347 = load ptr, ptr %a1 - %t348 = load { ptr, i64, i64 }, ptr %a231 - call void @finch.gen.loopEnd(ptr %t347, { ptr, i64, i64 } %t348) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a254) - call void @finch_str_drop(ptr %a251) - call void @finch_str_drop(ptr %a241) - call void @finch.drop.arr_str(ptr %a231) - call void @finch_str_drop(ptr %a227) - br label %endif2734 -endif2734: - br label %endif2723 -else2722: - %t349 = load ptr, ptr %a1 - %t350 = icmp eq ptr %t349, null - br i1 %t350, label %panic2743, label %ok2744 -panic2743: - call void @finch_panic(ptr @.str.1632, i64 872, ptr @.str.1633) - unreachable -ok2744: - %t351 = getelementptr inbounds %S.gen.Gen, ptr %t349, i32 0, i32 16 - %t352 = load ptr, ptr %a1 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = load { ptr, i64, i64 }, ptr %t353 - %t355 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t356 = load { ptr, i64, i64 }, ptr %t355 - %t357 = call i64 @finch.gen.findStruct(ptr %t352, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356) - %t358 = load { ptr, i64, i64 }, ptr %t351 - %t359 = extractvalue { ptr, i64, i64 } %t358, 1 - %t360 = icmp uge i64 %t357, %t359 - br i1 %t360, label %range2745, label %inrange2746 -range2745: - call void @finch_panic_index(ptr @.str.1634, i64 872, i64 %t357, i64 %t359) - unreachable -inrange2746: - %t361 = extractvalue { ptr, i64, i64 } %t358, 0 - %t362 = getelementptr inbounds %S.gen.StructDef, ptr %t361, i64 %t357 - %t363 = load %S.gen.StructDef, ptr %t362 - store %S.gen.StructDef %t363, ptr %a364 - call void @finch.copy.S_gen_StructDef(ptr %a365, ptr %a364) - %t366 = load %S.gen.StructDef, ptr %a365 - store %S.gen.StructDef %t366, ptr %a367 - %t368 = load ptr, ptr %a1 - %t369 = load %S.ast.Type, ptr %a2 - %t370 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t368, %S.ast.Type %t369) - store { ptr, i64, i64 } %t370, ptr %a371 - %t372 = load ptr, ptr %a1 - %t373 = load { ptr, i64, i64 }, ptr %a371 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } { ptr @.str.1635, i64 4, i64 0 }) - call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } %t373, { ptr, i64, i64 } %t376, { ptr, i64, i64 } { ptr @.str.1636, i64 4, i64 0 }) - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t380 = load i64, ptr %t379 - store i64 0, ptr %a381 - br label %for.cond2747 -for.cond2747: - %t382 = load i64, ptr %a381 - %t383 = icmp slt i64 %t382, %t380 - br i1 %t383, label %for.body2748, label %for.end2750 -for.body2748: - %t384 = load ptr, ptr %a1 - %t385 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t386 = load i64, ptr %a381 - %t387 = load { ptr, i64, i64 }, ptr %t385 - %t388 = extractvalue { ptr, i64, i64 } %t387, 1 - %t389 = icmp uge i64 %t386, %t388 - br i1 %t389, label %range2751, label %inrange2752 -range2751: - call void @finch_panic_index(ptr @.str.1637, i64 876, i64 %t386, i64 %t388) - unreachable -inrange2752: - %t390 = extractvalue { ptr, i64, i64 } %t387, 0 - %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i64 %t386 - %t392 = load %S.ast.Type, ptr %t391 - %t393 = call i1 @finch.gen.owning(ptr %t384, %S.ast.Type %t392) - br i1 %t393, label %then2753, label %endif2755 -then2753: - %t394 = load ptr, ptr %a1 - %t395 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1638, i64 23, i64 0 }, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.1639, i64 23, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t406 = load i64, ptr %a381 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range2756, label %inrange2757 -range2756: - call void @finch_panic_index(ptr @.str.1640, i64 877, i64 %t406, i64 %t408) - unreachable -inrange2757: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds i64, ptr %t410, i64 %t406 - %t412 = load i64, ptr %t411 - call void @finch_str_from_int(ptr %a413, i64 %t412) - %t414 = load { ptr, i64, i64 }, ptr %a413 - store { ptr, i64, i64 } %t404, ptr %a416 - store { ptr, i64, i64 } %t414, ptr %a417 - call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) - store { ptr, i64, i64 } %t404, ptr %a418 - call void @finch_str_drop(ptr %a418) - store { ptr, i64, i64 } %t414, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a415 - %t421 = call { ptr, i64, i64 } @finch.gen.op(ptr %t394, { ptr, i64, i64 } %t420) - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - store { ptr, i64, i64 } %t421, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1641, i64 23, i64 0 }, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.1642, i64 23, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t436 = load i64, ptr %a381 - %t437 = load { ptr, i64, i64 }, ptr %t435 - %t438 = extractvalue { ptr, i64, i64 } %t437, 1 - %t439 = icmp uge i64 %t436, %t438 - br i1 %t439, label %range2758, label %inrange2759 -range2758: - call void @finch_panic_index(ptr @.str.1643, i64 878, i64 %t436, i64 %t438) - unreachable -inrange2759: - %t440 = extractvalue { ptr, i64, i64 } %t437, 0 - %t441 = getelementptr inbounds i64, ptr %t440, i64 %t436 - %t442 = load i64, ptr %t441 - call void @finch_str_from_int(ptr %a443, i64 %t442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a446 - store { ptr, i64, i64 } %t444, ptr %a447 - call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447) - store { ptr, i64, i64 } %t434, ptr %a448 - call void @finch_str_drop(ptr %a448) - store { ptr, i64, i64 } %t444, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a445 - %t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t424, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t451, ptr %a453 - %t454 = load ptr, ptr %a1 - %t455 = load { ptr, i64, i64 }, ptr %a423 - %t456 = load { ptr, i64, i64 }, ptr %a453 - %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t458 = load i64, ptr %a381 - %t459 = load { ptr, i64, i64 }, ptr %t457 - %t460 = extractvalue { ptr, i64, i64 } %t459, 1 - %t461 = icmp uge i64 %t458, %t460 - br i1 %t461, label %range2760, label %inrange2761 -range2760: - call void @finch_panic_index(ptr @.str.1644, i64 879, i64 %t458, i64 %t460) - unreachable -inrange2761: - %t462 = extractvalue { ptr, i64, i64 } %t459, 0 - %t463 = getelementptr inbounds %S.ast.Type, ptr %t462, i64 %t458 - %t464 = load %S.ast.Type, ptr %t463 - call void @finch.gen.copyAt(ptr %t454, { ptr, i64, i64 } %t455, { ptr, i64, i64 } %t456, %S.ast.Type %t464) - call void @finch_str_drop(ptr %a453) - call void @finch_str_drop(ptr %a423) - br label %endif2755 -endif2755: - br label %for.step2749 -for.step2749: - %t465 = load i64, ptr %a381 - %t466 = add i64 %t465, 1 - store i64 %t466, ptr %a381 - br label %for.cond2747 -for.end2750: - call void @finch_str_drop(ptr %a371) - call void @finch.drop.S_gen_StructDef(ptr %a367) - br label %endif2723 -endif2723: - br label %endif2711 -endif2711: - %t467 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t467, { ptr, i64, i64 } { ptr @.str.1645, i64 8, i64 0 }) - %t468 = load ptr, ptr %a1 - %t469 = load %S.gen.Saved, ptr %a32 - %t470 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1646, i64 21, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.1647, i64 20, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - call void @finch.gen.endHelper(ptr %t468, %S.gen.Saved %t469, { ptr, i64, i64 } %t479) - store { ptr, i64, i64 } %t479, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t481 -} - -define internal void @finch.drop.S_gen_Val(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.copyValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -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 %S.gen.Val, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %then2762, label %endif2764 -then2762: - %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 -endif2764: - %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 %S.gen.Val %t22, ptr %a24 - call void @finch.drop.S_gen_Val(ptr %a24) - store { ptr, i64, i64 } %t23, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t27, %S.ast.Type %t28) - %t30 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t26, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a32 - %t35 = load { ptr, i64, i64 }, ptr %a25 - %t36 = load %S.ast.Type, ptr %a3 - call void @finch.gen.copyAt(ptr %t33, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t35, %S.ast.Type %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Type, ptr %a3 - %t40 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t38, %S.ast.Type %t39) - %t41 = load { ptr, i64, i64 }, ptr %a32 - %t42 = call { ptr, i64, i64 } @finch.gen.load(ptr %t37, { ptr, i64, i64 } %t40, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_drop(ptr %a43) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.gen.dropAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - %t7 = xor i1 %t6, true - br i1 %t7, label %then2765, label %endif2767 -then2765: - ret void -endif2767: - %t8 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t9 = load { ptr, i64, i64 }, ptr %t8 - store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1648, 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 %then2768, label %else2769 -then2768: - %t14 = load ptr, ptr %a1 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1649, i64 30, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1650, i64 1, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.emit(ptr %t14, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2770 -else2769: - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.dropFn(ptr %t27, %S.ast.Type %t28) - store { ptr, i64, i64 } { ptr @.str.1651, i64 10, i64 0 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1652, i64 5, i64 0 }, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t39, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1653, i64 1, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.emit(ptr %t26, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif2770 -endif2770: - ret void -} - -define internal void @finch.gen.dropValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a16 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.gen.Val, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2771, label %endif2773 -then2771: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %t13 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t12, 0 - %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - %t18 = insertvalue %S.gen.Val %t13, %S.ast.Type %t17, 1 - %t19 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t8, %S.gen.Val %t18) - store %S.gen.Val %t18, ptr %a20 - call void @finch.drop.S_gen_Val(ptr %a20) - %t21 = load %S.ast.Type, ptr %a3 - call void @finch.gen.dropAt(ptr %t7, { ptr, i64, i64 } %t19, %S.ast.Type %t21) - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_drop(ptr %a22) - br label %endif2773 -endif2773: - ret void -} - -define internal void @finch.gen.release(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2774 -logic.from2774: - br i1 %t4, label %logic.rhs2775, label %logic.end2776 -logic.rhs2775: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2777 -logic.rend2777: - br label %logic.end2776 -logic.end2776: - %t9 = phi i1 [ false, %logic.from2774 ], [ %t8, %logic.rend2777 ] - br label %logic.from2778 -logic.from2778: - br i1 %t9, label %logic.rhs2779, label %logic.end2780 -logic.rhs2779: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2781 -logic.rend2781: - br label %logic.end2780 -logic.end2780: - %t14 = phi i1 [ false, %logic.from2778 ], [ %t13, %logic.rend2781 ] - br label %logic.from2782 -logic.from2782: - br i1 %t14, label %logic.rhs2783, label %logic.end2784 -logic.rhs2783: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2785 -logic.rend2785: - br label %logic.end2784 -logic.end2784: - %t19 = phi i1 [ false, %logic.from2782 ], [ %t18, %logic.rend2785 ] - br i1 %t19, label %then2786, label %endif2788 -then2786: - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t24 = load %S.ast.Type, ptr %t23 - call void @finch.gen.dropValue(ptr %t20, { ptr, i64, i64 } %t22, %S.ast.Type %t24) - br label %endif2788 -endif2788: - ret void -} - -define internal i1 @finch.gen.isConstant({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1655, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_starts(ptr %a3, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - %t8 = xor i1 %t7, true - ret i1 %t8 -} - -define internal { ptr, i64, i64 } @finch.gen.dropFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.gen.StructDef, align 16 - %a249 = alloca %S.gen.StructDef, align 16 - %a251 = alloca %S.gen.StructDef, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca i64, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1656, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2789, label %ok2790 -panic2789: - call void @finch_panic(ptr @.str.1657, i64 930, ptr @.str.1658) - unreachable -ok2790: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2791, label %endif2793 -then2791: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2793: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2794, label %ok2795 -panic2794: - call void @finch_panic(ptr @.str.1659, i64 933, ptr @.str.1660) - unreachable -ok2795: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1661, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2796, label %else2797 -then2796: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2799, label %inrange2800 -range2799: - call void @finch_panic_index(ptr @.str.1662, i64 936, i64 0, i64 %t41) - unreachable -inrange2800: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load %S.ast.Type, ptr %a49 - %t52 = call i1 @finch.gen.owning(ptr %t50, %S.ast.Type %t51) - br i1 %t52, label %then2801, label %endif2803 -then2801: - %t53 = load ptr, ptr %a1 - %t54 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1663, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1664, i64 2, i64 0 }) - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } { ptr @.str.1666, i64 62, i64 0 }) - %t59 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.1665, i64 3, i64 0 }, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t62, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load ptr, ptr %a1 - %t68 = load %S.ast.Type, ptr %a49 - %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) - store { ptr, i64, i64 } { ptr @.str.1667, i64 23, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1668, i64 6, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1669, i64 6, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load { ptr, i64, i64 }, ptr %a65 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 3, %t92 - br i1 %t93, label %range2804, label %inrange2805 -range2804: - call void @finch_panic_index(ptr @.str.1670, i64 941, i64 3, i64 %t92) - unreachable -inrange2805: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t66, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a104 - %t107 = load %S.ast.Type, ptr %a49 - call void @finch.gen.dropAt(ptr %t105, { ptr, i64, i64 } %t106, %S.ast.Type %t107) - %t108 = load ptr, ptr %a1 - %t109 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.loopEnd(ptr %t108, { ptr, i64, i64 } %t109) - call void @finch_str_drop(ptr %a104) - call void @finch.drop.arr_str(ptr %a65) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a55) - br label %endif2803 -endif2803: - %t110 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t110, { ptr, i64, i64 } { ptr @.str.1671, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2798 -else2797: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1672, i64 3, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2806, label %else2807 -then2806: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 0, %t119 - br i1 %t120, label %range2809, label %inrange2810 -range2809: - call void @finch_panic_index(ptr @.str.1673, i64 947, i64 0, i64 %t119) - unreachable -inrange2810: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 0 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - store %S.ast.Type %t126, ptr %a127 - %t128 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 1, %t130 - br i1 %t131, label %range2811, label %inrange2812 -range2811: - call void @finch_panic_index(ptr @.str.1674, i64 948, i64 1, i64 %t130) - unreachable -inrange2812: - %t132 = extractvalue { ptr, i64, i64 } %t129, 0 - %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i64 1 - %t134 = load %S.ast.Type, ptr %t133 - store %S.ast.Type %t134, ptr %a135 - call void @finch.copy.S_ast_Type(ptr %a136, ptr %a135) - %t137 = load %S.ast.Type, ptr %a136 - store %S.ast.Type %t137, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Type, ptr %a127 - %t141 = call i1 @finch.gen.owning(ptr %t139, %S.ast.Type %t140) - br label %logic.from2813 -logic.from2813: - br i1 %t141, label %logic.end2815, label %logic.rhs2814 -logic.rhs2814: - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Type, ptr %a138 - %t144 = call i1 @finch.gen.owning(ptr %t142, %S.ast.Type %t143) - br label %logic.rend2816 -logic.rend2816: - br label %logic.end2815 -logic.end2815: - %t145 = phi i1 [ true, %logic.from2813 ], [ %t144, %logic.rend2816 ] - br i1 %t145, label %then2817, label %endif2819 -then2817: - %t146 = load ptr, ptr %a1 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load %S.ast.Type, ptr %a2 - %t150 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t148, %S.ast.Type %t149) - store { ptr, i64, i64 } { ptr @.str.1676, i64 23, i64 0 }, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t155, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1677, i64 22, i64 0 }, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t155, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a156 - %t161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t160) - store { ptr, i64, i64 } %t160, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t146, { ptr, i64, i64 } { ptr @.str.1675, i64 3, i64 0 }, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_drop(ptr %a164) - store { ptr, i64, i64 } %t163, ptr %a165 - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a165 - %t168 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t166, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load %S.ast.Type, ptr %a2 - %t172 = load { ptr, i64, i64 }, ptr %a169 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 3, %t173 - br i1 %t174, label %range2820, label %inrange2821 -range2820: - call void @finch_panic_index(ptr @.str.1679, i64 952, i64 3, i64 %t173) - unreachable -inrange2821: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i64 3 - %t177 = load { ptr, i64, i64 }, ptr %t176 - %t178 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t170, { ptr, i64, i64 } { ptr @.str.1678, i64 2, i64 0 }, %S.ast.Type %t171, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1680, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1681, i64 10, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - %t186 = load ptr, ptr %a1 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a179 - %t191 = load %S.ast.Type, ptr %a2 - %t192 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t189, { ptr, i64, i64 } %t190, %S.ast.Type %t191, i64 0) - %t193 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } { ptr @.str.1683, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - store { ptr, i64, i64 } { ptr @.str.1682, i64 12, i64 0 }, ptr %a196 - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1684, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t204, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a182 - %t208 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.condBr(ptr %t186, { ptr, i64, i64 } %t205, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t210, { ptr, i64, i64 } %t211) - %t212 = load ptr, ptr %a1 - %t213 = load ptr, ptr %a1 - %t214 = load { ptr, i64, i64 }, ptr %a179 - %t215 = load %S.ast.Type, ptr %a2 - %t216 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t213, { ptr, i64, i64 } %t214, %S.ast.Type %t215, i64 1) - %t217 = load %S.ast.Type, ptr %a127 - call void @finch.gen.dropAt(ptr %t212, { ptr, i64, i64 } %t216, %S.ast.Type %t217) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load ptr, ptr %a1 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a179 - %t222 = load %S.ast.Type, ptr %a2 - %t223 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t220, { ptr, i64, i64 } %t221, %S.ast.Type %t222, i64 2) - %t224 = load %S.ast.Type, ptr %a138 - call void @finch.gen.dropAt(ptr %t219, { ptr, i64, i64 } %t223, %S.ast.Type %t224) - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t226, { ptr, i64, i64 } %t227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t228, { ptr, i64, i64 } %t229) - %t230 = load ptr, ptr %a1 - %t231 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.loopEnd(ptr %t230, { ptr, i64, i64 } %t231) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.arr_str(ptr %a169) - call void @finch_str_drop(ptr %a165) - br label %endif2819 -endif2819: - %t232 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.1685, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a138) - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif2808 -else2807: - %t233 = load ptr, ptr %a1 - %t234 = icmp eq ptr %t233, null - br i1 %t234, label %panic2822, label %ok2823 -panic2822: - call void @finch_panic(ptr @.str.1686, i64 965, ptr @.str.1687) - unreachable -ok2823: - %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 16 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %t235 - %t243 = extractvalue { ptr, i64, i64 } %t242, 1 - %t244 = icmp uge i64 %t241, %t243 - br i1 %t244, label %range2824, label %inrange2825 -range2824: - call void @finch_panic_index(ptr @.str.1688, i64 965, i64 %t241, i64 %t243) - unreachable -inrange2825: - %t245 = extractvalue { ptr, i64, i64 } %t242, 0 - %t246 = getelementptr inbounds %S.gen.StructDef, ptr %t245, i64 %t241 - %t247 = load %S.gen.StructDef, ptr %t246 - store %S.gen.StructDef %t247, ptr %a248 - call void @finch.copy.S_gen_StructDef(ptr %a249, ptr %a248) - %t250 = load %S.gen.StructDef, ptr %a249 - store %S.gen.StructDef %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = load %S.ast.Type, ptr %a2 - %t254 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t252, %S.ast.Type %t253) - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i32 0, i32 1 - %t258 = load i64, ptr %t257 - store i64 0, ptr %a259 - br label %for.cond2826 -for.cond2826: - %t260 = load i64, ptr %a259 - %t261 = icmp slt i64 %t260, %t258 - br i1 %t261, label %for.body2827, label %for.end2829 -for.body2827: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t264 = load i64, ptr %a259 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range2830, label %inrange2831 -range2830: - call void @finch_panic_index(ptr @.str.1689, i64 968, i64 %t264, i64 %t266) - unreachable -inrange2831: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.ast.Type, ptr %t268, i64 %t264 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t262, %S.ast.Type %t270) - br i1 %t271, label %then2832, label %endif2834 -then2832: - %t272 = load ptr, ptr %a1 - %t273 = load ptr, ptr %a1 - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } { ptr @.str.1690, i64 23, i64 0 }, ptr %a276 - store { ptr, i64, i64 } %t274, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.1691, i64 21, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 3 - %t285 = load i64, ptr %a259 - %t286 = load { ptr, i64, i64 }, ptr %t284 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 %t285, %t287 - br i1 %t288, label %range2835, label %inrange2836 -range2835: - call void @finch_panic_index(ptr @.str.1692, i64 969, i64 %t285, i64 %t287) - unreachable -inrange2836: - %t289 = extractvalue { ptr, i64, i64 } %t286, 0 - %t290 = getelementptr inbounds i64, ptr %t289, i64 %t285 - %t291 = load i64, ptr %t290 - call void @finch_str_from_int(ptr %a292, i64 %t291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t283, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - store { ptr, i64, i64 } %t283, ptr %a297 - call void @finch_str_drop(ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a294 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t273, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t303 = load i64, ptr %a259 - %t304 = load { ptr, i64, i64 }, ptr %t302 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range2837, label %inrange2838 -range2837: - call void @finch_panic_index(ptr @.str.1693, i64 969, i64 %t303, i64 %t305) - unreachable -inrange2838: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Type, ptr %t307, i64 %t303 - %t309 = load %S.ast.Type, ptr %t308 - call void @finch.gen.dropAt(ptr %t272, { ptr, i64, i64 } %t300, %S.ast.Type %t309) - store { ptr, i64, i64 } %t300, ptr %a310 - call void @finch_str_drop(ptr %a310) - br label %endif2834 -endif2834: - br label %for.step2828 -for.step2828: - %t311 = load i64, ptr %a259 - %t312 = add i64 %t311, 1 - store i64 %t312, ptr %a259 - br label %for.cond2826 -for.end2829: - call void @finch_str_drop(ptr %a255) - call void @finch.drop.S_gen_StructDef(ptr %a251) - br label %endif2808 -endif2808: - br label %endif2798 -endif2798: - %t313 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t313, { ptr, i64, i64 } { ptr @.str.1694, i64 8, i64 0 }) - %t314 = load ptr, ptr %a1 - %t315 = load %S.gen.Saved, ptr %a32 - %t316 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1695, i64 21, i64 0 }, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.1696, i64 8, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - call void @finch.gen.endHelper(ptr %t314, %S.gen.Saved %t315, { ptr, i64, i64 } %t325) - store { ptr, i64, i64 } %t325, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t327 -} - -define internal void @finch.gen.hold(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.ast.Type, align 16 - %a33 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2839 -logic.from2839: - br i1 %t4, label %logic.rhs2840, label %logic.end2841 -logic.rhs2840: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2842 -logic.rend2842: - br label %logic.end2841 -logic.end2841: - %t9 = phi i1 [ false, %logic.from2839 ], [ %t8, %logic.rend2842 ] - br label %logic.from2843 -logic.from2843: - br i1 %t9, label %logic.rhs2844, label %logic.end2845 -logic.rhs2844: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2846 -logic.rend2846: - br label %logic.end2845 -logic.end2845: - %t14 = phi i1 [ false, %logic.from2843 ], [ %t13, %logic.rend2846 ] - br label %logic.from2847 -logic.from2847: - br i1 %t14, label %logic.rhs2848, label %logic.end2849 -logic.rhs2848: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2850 -logic.rend2850: - br label %logic.end2849 -logic.end2849: - %t19 = phi i1 [ false, %logic.from2847 ], [ %t18, %logic.rend2850 ] - br i1 %t19, label %then2851, label %endif2853 -then2851: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2854, label %ok2855 -panic2854: - call void @finch_panic(ptr @.str.1697, i64 982, ptr @.str.1698) - unreachable -ok2855: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 11 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_copy(ptr %a27, ptr %a26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %t29 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t28, 0 - %t30 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t31 = load %S.ast.Type, ptr %t30 - store %S.ast.Type %t31, ptr %a32 - call void @finch.copy.S_ast_Type(ptr %a33, ptr %a32) - %t34 = load %S.ast.Type, ptr %a33 - %t35 = insertvalue %S.gen.Pending %t29, %S.ast.Type %t34, 1 - %t36 = insertvalue %S.gen.Pending %t35, i1 false, 2 - %t37 = load i64, ptr %t23 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t38, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %t22 - %t40 = getelementptr inbounds %S.gen.Pending, ptr %t39, i64 %t37 - store %S.gen.Pending %t36, ptr %t40 - store i64 %t38, ptr %t23 - br label %endif2853 -endif2853: - ret void -} - -define internal void @finch.gen.holdAddr(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2856, label %endif2858 -then2856: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic2859, label %ok2860 -panic2859: - call void @finch_panic(ptr @.str.1699, i64 988, ptr @.str.1700) - unreachable -ok2860: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 11 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 - %t11 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t11, ptr %a12 - call void @finch_str_copy(ptr %a13, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - %t15 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t14, 0 - %t16 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = insertvalue %S.gen.Pending %t15, %S.ast.Type %t19, 1 - %t21 = insertvalue %S.gen.Pending %t20, i1 true, 2 - %t22 = load i64, ptr %t10 - %t23 = add i64 %t22, 1 - call void @finch_arr_reserve(ptr %t9, i64 %t23, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t24 = load ptr, ptr %t9 - %t25 = getelementptr inbounds %S.gen.Pending, ptr %t24, i64 %t22 - store %S.gen.Pending %t21, ptr %t25 - store i64 %t23, ptr %t10 - br label %endif2858 -endif2858: - ret void -} - -define internal void @finch.copy.S_gen_Pending(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Pending, ptr %src - store %S.gen.Pending %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 1 - call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.drop.S_gen_Pending(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.dropPending(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a8 = alloca i64, align 16 - %a24 = alloca %S.gen.Pending, align 16 - %a25 = alloca %S.gen.Pending, align 16 - %a27 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2861, label %ok2862 -panic2861: - call void @finch_panic(ptr @.str.1701, i64 994, ptr @.str.1702) - unreachable -ok2862: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - store i64 %t7, ptr %a8 - br label %while.cond2863 -while.cond2863: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body2864, label %while.end2865 -while.body2864: - %t12 = load i64, ptr %a8 - %t13 = sub i64 %t12, 1 - store i64 %t13, ptr %a8 - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic2866, label %ok2867 -panic2866: - call void @finch_panic(ptr @.str.1703, i64 997, ptr @.str.1704) - unreachable -ok2867: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 11 - %t17 = load i64, ptr %a8 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range2868, label %inrange2869 -range2868: - call void @finch_panic_index(ptr @.str.1705, i64 997, i64 %t17, i64 %t19) - unreachable -inrange2869: - %t21 = extractvalue { ptr, i64, i64 } %t18, 0 - %t22 = getelementptr inbounds %S.gen.Pending, ptr %t21, i64 %t17 - %t23 = load %S.gen.Pending, ptr %t22 - store %S.gen.Pending %t23, ptr %a24 - call void @finch.copy.S_gen_Pending(ptr %a25, ptr %a24) - %t26 = load %S.gen.Pending, ptr %a25 - store %S.gen.Pending %t26, ptr %a27 - %t28 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 2 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then2870, label %else2871 -then2870: - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - %t33 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t34 = load %S.ast.Type, ptr %t33 - call void @finch.gen.dropAt(ptr %t30, { ptr, i64, i64 } %t32, %S.ast.Type %t34) - br label %endif2872 -else2871: - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - %t38 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t39 = load %S.ast.Type, ptr %t38 - call void @finch.gen.dropValue(ptr %t35, { ptr, i64, i64 } %t37, %S.ast.Type %t39) - br label %endif2872 -endif2872: - call void @finch.drop.S_gen_Pending(ptr %a27) - br label %while.cond2863 -while.end2865: - ret void -} - -define internal void @finch.gen.heldEnd(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a20 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - br label %while.cond2873 -while.cond2873: - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2876, label %ok2877 -panic2876: - call void @finch_panic(ptr @.str.1706, i64 1008, ptr @.str.1707) - unreachable -ok2877: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = load i64, ptr %a2 - %t9 = icmp sgt i64 %t7, %t8 - br i1 %t9, label %while.body2874, label %while.end2875 -while.body2874: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2878, label %ok2879 -panic2878: - call void @finch_panic(ptr @.str.1708, i64 1009, ptr @.str.1709) - unreachable -ok2879: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 11 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp eq i64 %t14, 0 - br i1 %t15, label %panic2880, label %ok2881 -panic2880: - call void @finch_panic(ptr @.str.1710, i64 1009, ptr @.str.1711) - unreachable -ok2881: - %t16 = sub i64 %t14, 1 - %t17 = load ptr, ptr %t12 - %t18 = getelementptr inbounds %S.gen.Pending, ptr %t17, i64 %t16 - %t19 = load %S.gen.Pending, ptr %t18 - store i64 %t16, ptr %t13 - store %S.gen.Pending %t19, ptr %a20 - call void @finch.drop.S_gen_Pending(ptr %a20) - br label %while.cond2873 -while.end2875: - ret void -} - -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.from2882 -logic.from2882: - br i1 %t7, label %logic.end2884, label %logic.rhs2883 -logic.rhs2883: - %t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t9 = load i1, ptr %t8 - br label %logic.rend2885 -logic.rend2885: - br label %logic.end2884 -logic.end2884: - %t10 = phi i1 [ true, %logic.from2882 ], [ %t9, %logic.rend2885 ] - br i1 %t10, label %then2886, label %endif2888 -then2886: - %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 -endif2888: - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.1712, 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 %then2889, label %endif2891 -then2889: - %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1713, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t19, ptr %a11 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - br label %endif2891 -endif2891: - %t22 = load ptr, ptr %a1 - %t23 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1714, i64 35, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a24 - %t28 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t27, ptr %a30 - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1715, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - call void @finch.gen.emit(ptr %t22, { ptr, i64, i64 } %t44) - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1716, 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.1717, i64 3, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - %t14 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t13) - store { ptr, i64, i64 } %t13, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t14, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1718, i64 12, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t22, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1719, i64 6, i64 0 }, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t17, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t31, { ptr, i64, i64 } { ptr @.str.1720, i64 0, i64 0 }) - store { ptr, i64, i64 } %t32, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1721, i64 10, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1722, i64 6, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.1723, i64 6, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t34, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a16) - ret { ptr, i64, i64 } %t62 -} - -define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) { -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 %S.ast.Type, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a153 = 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 - %a167 = 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 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then2892, label %else2893 -then2892: - %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.1726, 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 %S.ast.Type %t17, ptr %a19 - call void @finch.drop.S_ast_Type(ptr %a19) - store { ptr, i64, i64 } { ptr @.str.1725, i64 4, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1724, i64 4, i64 0 }, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2894 -else2893: - %t26 = load %S.ast.Type, ptr %a3 - %t27 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t26) - br i1 %t27, label %then2895, label %else2896 -then2895: - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a2 - %t31 = load %S.ast.Type, ptr %a3 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1729, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } { ptr @.str.1728, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - call void @finch.gen.printf(ptr %t28, { ptr, i64, i64 } { ptr @.str.1727, i64 4, i64 0 }, { ptr, i64, i64 } %t39) - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - br label %endif2897 -else2896: - %t41 = load %S.ast.Type, ptr %a3 - %t42 = call i1 @finch.gen.isFloat(%S.ast.Type %t41) - br i1 %t42, label %then2898, label %else2899 -then2898: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load { ptr, i64, i64 }, ptr %a2 - %t46 = load %S.ast.Type, ptr %a3 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1732, i64 5, i64 0 }) - %t48 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t44, { ptr, i64, i64 } %t45, %S.ast.Type %t46, %S.ast.Type %t47) - store %S.ast.Type %t47, ptr %a49 - call void @finch.drop.S_ast_Type(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.1731, i64 7, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.gen.printf(ptr %t43, { ptr, i64, i64 } { ptr @.str.1730, i64 2, i64 0 }, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %endif2900 -else2899: - %t56 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1733, i64 4, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then2901, label %else2902 -then2901: - %t61 = load ptr, ptr %a1 - %t62 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1734, i64 8, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1735, i64 7, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = load i1, ptr %a4 - br i1 %t75, label %then2904, label %else2905 -then2904: - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1737, i64 4, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.printf(ptr %t76, { ptr, i64, i64 } { ptr @.str.1736, i64 4, i64 0 }, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %endif2906 -else2905: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1739, i64 4, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.gen.printf(ptr %t83, { ptr, i64, i64 } { ptr @.str.1738, i64 2, i64 0 }, { ptr, i64, i64 } %t88) - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif2906 -endif2906: - call void @finch_str_drop(ptr %a74) - br label %endif2903 -else2902: - %t90 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1740, 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 %then2907, label %else2908 -then2907: - %t95 = load ptr, ptr %a1 - %t96 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t95, { ptr, i64, i64 } { ptr @.str.1741, i64 4, i64 0 }) - store { ptr, i64, i64 } %t96, ptr %a97 - %t98 = load ptr, ptr %a1 - %t99 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t98, { ptr, i64, i64 } { ptr @.str.1742, i64 5, i64 0 }) - store { ptr, i64, i64 } %t99, ptr %a100 - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1743, i64 10, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1744, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t111, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.1745, i64 6, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t122, ptr %a125 - store { ptr, i64, i64 } %t123, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t101, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - %t132 = load ptr, ptr %a1 - %t133 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.1747, i64 4, i64 0 }, ptr %a135 - store { ptr, i64, i64 } %t133, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a134 - call void @finch.gen.printf(ptr %t132, { ptr, i64, i64 } { ptr @.str.1746, i64 2, i64 0 }, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a131) - call void @finch_str_drop(ptr %a100) - call void @finch_str_drop(ptr %a97) - br label %endif2909 -else2908: - %t139 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1748, 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 %then2910, label %else2911 -then2910: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1749, i64 31, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.1750, i64 3, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t155, ptr %a157 - %t158 = load ptr, ptr %a1 - %t159 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1751, i64 10, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.1752, i64 7, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - store { ptr, i64, i64 } %t169, ptr %a171 - %t172 = load ptr, ptr %a1 - %t173 = load { ptr, i64, i64 }, ptr %a2 - %t174 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t172, { ptr, i64, i64 } %t173) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load i1, ptr %a4 - br i1 %t176, label %then2913, label %else2914 -then2913: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1754, i64 4, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1755, i64 6, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - call void @finch.gen.printf(ptr %t177, { ptr, i64, i64 } { ptr @.str.1753, i64 6, i64 0 }, { ptr, i64, i64 } %t193) - store { ptr, i64, i64 } %t193, ptr %a194 - call void @finch_str_drop(ptr %a194) - br label %endif2915 -else2914: - %t195 = load ptr, ptr %a1 - %t196 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1757, i64 4, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.1758, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t205, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t205, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.printf(ptr %t195, { ptr, i64, i64 } { ptr @.str.1756, i64 4, i64 0 }, { ptr, i64, i64 } %t211) - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - br label %endif2915 -endif2915: - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a171) - call void @finch_str_drop(ptr %a157) - br label %endif2912 -else2911: - %t213 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.1759, i64 3, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %then2916, label %else2917 -then2916: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1760, i64 12, i64 0 }, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1761, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t218, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t232, { ptr, i64, i64 } { ptr @.str.1762, i64 8, i64 0 }) - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t235, { ptr, i64, i64 } { ptr @.str.1763, i64 8, i64 0 }) - store { ptr, i64, i64 } %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t238, { ptr, i64, i64 } { ptr @.str.1764, i64 8, i64 0 }) - store { ptr, i64, i64 } %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load { ptr, i64, i64 }, ptr %a231 - %t243 = load { ptr, i64, i64 }, ptr %a234 - %t244 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.condBr(ptr %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t244) - %t245 = load ptr, ptr %a1 - %t246 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.label(ptr %t245, { ptr, i64, i64 } %t246) - %t247 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t247, { ptr, i64, i64 } { ptr @.str.1765, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1766, i64 0, i64 0 }) - %t248 = load ptr, ptr %a1 - %t249 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t248, { ptr, i64, i64 } %t249) - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.label(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = load ptr, ptr %a1 - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1769, i64 13, i64 0 }, ptr %a256 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t258, ptr %a260 - store { ptr, i64, i64 } { ptr @.str.1770, i64 7, i64 0 }, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - %t264 = call { ptr, i64, i64 } @finch.gen.op(ptr %t253, { ptr, i64, i64 } %t263) - store { ptr, i64, i64 } %t263, ptr %a265 - call void @finch_str_drop(ptr %a265) - store { ptr, i64, i64 } { ptr @.str.1768, i64 4, i64 0 }, ptr %a267 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - call void @finch.gen.printf(ptr %t252, { ptr, i64, i64 } { ptr @.str.1767, i64 6, i64 0 }, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load ptr, ptr %a1 - %t273 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t272, { ptr, i64, i64 } %t273) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a240) - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a231) - br label %endif2918 -else2917: - %t276 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t276, ptr %a277 - store { ptr, i64, i64 } { ptr @.str.1771, i64 4, i64 0 }, ptr %a278 - %t279 = call i32 @finch_str_eq(ptr %a277, ptr %a278) - %t280 = icmp ne i32 %t279, 0 - br i1 %t280, label %then2919, label %else2920 -then2919: - %t281 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t281, { ptr, i64, i64 } { ptr @.str.1772, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1773, i64 0, i64 0 }) - br label %endif2921 -else2920: - %t282 = load ptr, ptr %a1 - %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.1774, i64 17, i64 0 }) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a284 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } { ptr @.str.1775, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1776, i64 15, i64 0 }, { ptr, i64, i64 } %t286) - %t287 = load ptr, ptr %a1 - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - %t290 = load %S.ast.Type, ptr %a3 - %t291 = load i1, ptr %a4 - call void @finch.gen.emitFormat(ptr %t287, { ptr, i64, i64 } %t288, { ptr, i64, i64 } %t289, %S.ast.Type %t290, i1 %t291) - %t292 = load ptr, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1777, i64 31, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.1778, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - call void @finch.gen.emit(ptr %t292, { ptr, i64, i64 } %t302) - store { ptr, i64, i64 } %t302, ptr %a303 - call void @finch_str_drop(ptr %a303) - call void @finch_str_drop(ptr %a284) - br label %endif2921 -endif2921: - br label %endif2918 -endif2918: - br label %endif2912 -endif2912: - br label %endif2909 -endif2909: - br label %endif2903 -endif2903: - br label %endif2900 -endif2900: - br label %endif2897 -endif2897: - br label %endif2894 -endif2894: - call void @finch_str_drop(ptr %a10) - 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 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1779, 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.1780, i64 6, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load ptr, ptr %a1 - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t15, { ptr, i64, i64 } %t16) - store { ptr, i64, i64 } %t14, ptr %a19 - store { ptr, i64, i64 } %t17, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t14, ptr %a21 - call void @finch_str_drop(ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1781, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t30 = load i64, ptr %t29 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1782, i64 1, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - ret void -} - -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Type, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { 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 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca %S.ast.Type, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.gen.Val, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %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 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1783, i64 1, i64 0 }, ptr %a12 - %t13 = load i1, ptr %a5 - br i1 %t13, label %then2922, label %endif2924 -then2922: - %t14 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - br label %endif2924 -endif2924: - %t16 = load %S.ast.Type, ptr %a4 - %t17 = call i1 @finch.gen.isSigned(%S.ast.Type %t16) - br i1 %t17, label %then2925, label %else2926 -then2925: - %t18 = load ptr, ptr %a1 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1785, i64 29, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1786, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a3 - %t31 = load %S.ast.Type, ptr %a4 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1787, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } %t28, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t28, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1788, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - call void @finch.gen.emit(ptr %t18, { ptr, i64, i64 } %t45) - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %endif2927 -else2926: - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t47) - br i1 %t48, label %then2928, label %else2929 -then2928: - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1789, i64 30, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1790, i64 6, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a3 - %t62 = load %S.ast.Type, ptr %a4 - %t63 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1791, i64 3, i64 0 }) - %t64 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t60, { ptr, i64, i64 } %t61, %S.ast.Type %t62, %S.ast.Type %t63) - store %S.ast.Type %t63, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t59, ptr %a67 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t59, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t64, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1792, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.emit(ptr %t49, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif2930 -else2929: - %t78 = load %S.ast.Type, ptr %a4 - %t79 = call i1 @finch.gen.isFloat(%S.ast.Type %t78) - br i1 %t79, label %then2931, label %else2932 -then2931: - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1793, i64 31, i64 0 }, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1794, i64 9, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a3 - %t93 = load %S.ast.Type, ptr %a4 - %t94 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1795, i64 5, i64 0 }) - %t95 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t91, { ptr, i64, i64 } %t92, %S.ast.Type %t93, %S.ast.Type %t94) - store %S.ast.Type %t94, ptr %a96 - call void @finch.drop.S_ast_Type(ptr %a96) - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - store { ptr, i64, i64 } %t95, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1796, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.emit(ptr %t80, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2933 -else2932: - %t109 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1797, 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 %then2934, label %else2935 -then2934: - %t114 = load ptr, ptr %a1 - %t115 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1798, i64 30, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1799, i64 5, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t124, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1800, i64 6, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t135, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t135, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.1801, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - call void @finch.gen.emit(ptr %t114, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %endif2936 -else2935: - %t148 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.1802, i64 4, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br i1 %t152, label %then2937, label %else2938 -then2937: - %t153 = load ptr, ptr %a1 - %t154 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1803, i64 30, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.1804, i64 6, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1805, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1806, i64 7, i64 0 }, ptr %a172 - call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) - store { ptr, i64, i64 } %t169, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a170 - %t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t174) - store { ptr, i64, i64 } %t174, ptr %a176 - call void @finch_str_drop(ptr %a176) - store { ptr, i64, i64 } %t163, ptr %a178 - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t163, ptr %a180 - call void @finch_str_drop(ptr %a180) - store { ptr, i64, i64 } %t175, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a177 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1807, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - br label %endif2939 -else2938: - %t189 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.1808, 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 %then2940, label %else2941 -then2940: - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1809, i64 29, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1810, i64 6, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t211, ptr %a212 - call void @finch.copy.S_ast_Type(ptr %a213, ptr %a212) - %t214 = load %S.ast.Type, ptr %a213 - %t215 = insertvalue %S.gen.Val %t210, %S.ast.Type %t214, 1 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t205, %S.gen.Val %t215) - store %S.gen.Val %t215, ptr %a217 - call void @finch.drop.S_gen_Val(ptr %a217) - store { ptr, i64, i64 } %t204, ptr %a219 - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t204, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t216, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1811, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t228, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t228, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t234, ptr %a236 - store { ptr, i64, i64 } { ptr @.str.1812, i64 1, i64 0 }, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - call void @finch.gen.emit(ptr %t194, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t239, ptr %a240 - call void @finch_str_drop(ptr %a240) - br label %endif2942 -else2941: - %t241 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t241, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.1813, i64 3, i64 0 }, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from2943 -logic.from2943: - br i1 %t245, label %logic.end2945, label %logic.rhs2944 -logic.rhs2944: - %t246 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1814, i64 4, i64 0 }, ptr %a248 - %t249 = call i32 @finch_str_eq(ptr %a247, ptr %a248) - %t250 = icmp ne i32 %t249, 0 - br label %logic.rend2946 -logic.rend2946: - br label %logic.end2945 -logic.end2945: - %t251 = phi i1 [ true, %logic.from2943 ], [ %t250, %logic.rend2946 ] - br i1 %t251, label %then2947, label %else2948 -then2947: - %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1815, i64 29, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - %t257 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t257, ptr %a259 - store { ptr, i64, i64 } { ptr @.str.1816, i64 6, i64 0 }, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t257, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - %t263 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t262, ptr %a265 - store { ptr, i64, i64 } %t263, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t262, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.1817, i64 1, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.emit(ptr %t252, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif2949 -else2948: - %t275 = load ptr, ptr %a1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a4 - %t278 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.1818, i64 10, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.1819, i64 5, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t288, ptr %a291 - store { ptr, i64, i64 } %t289, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1820, i64 6, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_copy(ptr %a303, ptr %a302) - %t304 = load { ptr, i64, i64 }, ptr %a303 - %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t306 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t306, ptr %a307 - call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) - %t309 = load %S.ast.Type, ptr %a308 - %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 - %t311 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t300, %S.gen.Val %t310) - store %S.gen.Val %t310, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - store { ptr, i64, i64 } %t299, ptr %a314 - store { ptr, i64, i64 } %t311, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t299, ptr %a316 - call void @finch_str_drop(ptr %a316) - store { ptr, i64, i64 } %t311, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.1821, i64 1, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - call void @finch.gen.emit(ptr %t275, { ptr, i64, i64 } %t323) - store { ptr, i64, i64 } %t323, ptr %a324 - call void @finch_str_drop(ptr %a324) - br label %endif2949 -endif2949: - br label %endif2942 -endif2942: - br label %endif2939 -endif2939: - br label %endif2936 -endif2936: - br label %endif2933 -endif2933: - br label %endif2930 -endif2930: - br label %endif2927 -endif2927: - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a11) - 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 void @finch.drop.S_gen_EnumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - ret void -} - -define internal void @finch.copy.S_gen_SumDef(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.SumDef, ptr %src - store %S.gen.SumDef %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_int(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_int(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_S_ast_Node(ptr %t12, ptr %t13) - ret void -} - -define internal void @finch.drop.S_gen_SumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_S_ast_Node(ptr %t6) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.gen.EnumDef, align 16 - %a174 = alloca %S.gen.EnumDef, align 16 - %a176 = alloca %S.gen.EnumDef, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca i64, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca i64, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a342 = 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 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca %S.gen.SumDef, align 16 - %a538 = alloca %S.gen.SumDef, align 16 - %a540 = alloca %S.gen.SumDef, align 16 - %a556 = alloca %S.gen.StructDef, align 16 - %a557 = alloca %S.gen.StructDef, align 16 - %a559 = alloca %S.gen.StructDef, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = 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 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca i64, align 16 - %a731 = alloca i64, align 16 - %a747 = alloca i64, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca %S.gen.StructDef, align 16 - %a839 = alloca %S.gen.StructDef, align 16 - %a841 = alloca %S.gen.StructDef, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca i64, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a879 = 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 - %a884 = 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 - %a891 = 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 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a938 = 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 - %a950 = 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 - 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.1822, i64 14, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2950, label %ok2951 -panic2950: - call void @finch_panic(ptr @.str.1823, i64 1126, ptr @.str.1824) - unreachable -ok2951: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2952, label %endif2954 -then2952: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2954: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2955, label %ok2956 -panic2955: - call void @finch_panic(ptr @.str.1825, i64 1129, ptr @.str.1826) - unreachable -ok2956: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1827, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2957, label %else2958 -then2957: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2960, label %inrange2961 -range2960: - call void @finch_panic_index(ptr @.str.1828, i64 1132, i64 0, i64 %t41) - unreachable -inrange2961: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = call { ptr, i64, i64 } @finch.gen.load(ptr %t50, { ptr, i64, i64 } { ptr @.str.1829, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1830, i64 2, i64 0 }) - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load ptr, ptr %a1 - %t54 = load ptr, ptr %a1 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } { ptr @.str.1832, i64 62, i64 0 }) - %t56 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1831, i64 3, i64 0 }, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - store { ptr, i64, i64 } %t56, ptr %a58 - %t59 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t59, { ptr, i64, i64 } { ptr @.str.1833, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1834, i64 1, i64 0 }) - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a58 - %t62 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t60, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %t64 = load ptr, ptr %a1 - %t65 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t64, { ptr, i64, i64 } { ptr @.str.1835, i64 3, i64 0 }) - store { ptr, i64, i64 } %t65, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.1836, i64 4, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a63 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 3, %t72 - br i1 %t73, label %range2962, label %inrange2963 -range2962: - call void @finch_panic_index(ptr @.str.1838, i64 1139, i64 3, i64 %t72) - unreachable -inrange2963: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 3 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.1837, i64 13, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.1839, i64 3, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t85) - store { ptr, i64, i64 } %t85, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t86, ptr %a88 - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a88 - %t91 = load { ptr, i64, i64 }, ptr %a66 - %t92 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.condBr(ptr %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t95, { ptr, i64, i64 } { ptr @.str.1840, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1841, i64 2, i64 0 }) - %t96 = load ptr, ptr %a1 - %t97 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t96, { ptr, i64, i64 } %t97) - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t98, { ptr, i64, i64 } %t99) - %t100 = load ptr, ptr %a1 - %t101 = load ptr, ptr %a1 - %t102 = load %S.ast.Type, ptr %a49 - %t103 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t101, %S.ast.Type %t102) - store { ptr, i64, i64 } { ptr @.str.1842, i64 23, i64 0 }, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1843, i64 6, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t108, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a109 - %t114 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1844, i64 6, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a63 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 3, %t126 - br i1 %t127, label %range2964, label %inrange2965 -range2964: - call void @finch_panic_index(ptr @.str.1845, i64 1145, i64 3, i64 %t126) - unreachable -inrange2965: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i64 3 - %t130 = load { ptr, i64, i64 }, ptr %t129 - store { ptr, i64, i64 } %t124, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t124, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a137 - call void @finch_str_drop(ptr %a137) - store { ptr, i64, i64 } %t136, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = load %S.ast.Type, ptr %a49 - %t143 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t141, %S.ast.Type %t142) - %t144 = load { ptr, i64, i64 }, ptr %a138 - %t145 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t144) - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load %S.ast.Type, ptr %a49 - call void @finch.gen.emitFormat(ptr %t139, { ptr, i64, i64 } { ptr @.str.1846, i64 4, i64 0 }, { ptr, i64, i64 } %t145, %S.ast.Type %t147, i1 true) - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load ptr, ptr %a1 - %t150 = load { ptr, i64, i64 }, ptr %a63 - call void @finch.gen.loopEnd(ptr %t149, { ptr, i64, i64 } %t150) - %t151 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t151, { ptr, i64, i64 } { ptr @.str.1847, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1848, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a88) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_str(ptr %a63) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a52) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2959 -else2958: - %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.1849, i64 4, i64 0 }, ptr %a155 - %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) - %t157 = icmp ne i32 %t156, 0 - br i1 %t157, label %then2966, label %else2967 -then2966: - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic2969, label %ok2970 -panic2969: - call void @finch_panic(ptr @.str.1850, i64 1151, ptr @.str.1851) - unreachable -ok2970: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 21 - %t161 = load ptr, ptr %a1 - %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = call i64 @finch.gen.findEnum(ptr %t161, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t165) - %t167 = load { ptr, i64, i64 }, ptr %t160 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range2971, label %inrange2972 -range2971: - call void @finch_panic_index(ptr @.str.1852, i64 1151, i64 %t166, i64 %t168) - unreachable -inrange2972: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.EnumDef, ptr %t170, i64 %t166 - %t172 = load %S.gen.EnumDef, ptr %t171 - store %S.gen.EnumDef %t172, ptr %a173 - call void @finch.copy.S_gen_EnumDef(ptr %a174, ptr %a173) - %t175 = load %S.gen.EnumDef, ptr %a174 - store %S.gen.EnumDef %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.1853, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1854, i64 2, i64 0 }) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1855, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1856, i64 9, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } zeroinitializer, ptr %a186 - store { ptr, i64, i64 } zeroinitializer, ptr %a187 - %t188 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - store i64 0, ptr %a191 - br label %for.cond2973 -for.cond2973: - %t192 = load i64, ptr %a191 - %t193 = icmp slt i64 %t192, %t190 - br i1 %t193, label %for.body2974, label %for.end2976 -for.body2974: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a187, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t195, { ptr, i64, i64 } { ptr @.str.1857, i64 6, i64 0 }) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %a187, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %a187 - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 - store { ptr, i64, i64 } %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 3 - %t203 = load i64, ptr %a191 - %t204 = load { ptr, i64, i64 }, ptr %t202 - %t205 = extractvalue { ptr, i64, i64 } %t204, 1 - %t206 = icmp uge i64 %t203, %t205 - br i1 %t206, label %range2977, label %inrange2978 -range2977: - call void @finch_panic_index(ptr @.str.1859, i64 1159, i64 %t203, i64 %t205) - unreachable -inrange2978: - %t207 = extractvalue { ptr, i64, i64 } %t204, 0 - %t208 = getelementptr inbounds i64, ptr %t207, i64 %t203 - %t209 = load i64, ptr %t208 - call void @finch_str_from_int(ptr %a210, i64 %t209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.1858, i64 4, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.1860, i64 9, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load i64, ptr %a191 - %t223 = load { ptr, i64, i64 }, ptr %a187 - %t224 = extractvalue { ptr, i64, i64 } %t223, 1 - %t225 = icmp uge i64 %t222, %t224 - br i1 %t225, label %range2979, label %inrange2980 -range2979: - call void @finch_panic_index(ptr @.str.1861, i64 1159, i64 %t222, i64 %t224) - unreachable -inrange2980: - %t226 = extractvalue { ptr, i64, i64 } %t223, 0 - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 %t222 - %t228 = load { ptr, i64, i64 }, ptr %t227 - store { ptr, i64, i64 } %t221, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t221, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - %t234 = load i64, ptr %t201 - %t235 = add i64 %t234, 1 - call void @finch_arr_reserve(ptr %a186, i64 %t235, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t236 = load ptr, ptr %a186 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i64 %t234 - store { ptr, i64, i64 } %t233, ptr %t237 - store i64 %t235, ptr %t201 - br label %for.step2975 -for.step2975: - %t238 = load i64, ptr %a191 - %t239 = add i64 %t238, 1 - store i64 %t239, ptr %a191 - br label %for.cond2973 -for.end2976: - %t240 = load ptr, ptr %a1 - %t241 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1862, i64 11, i64 0 }, ptr %a243 - store { ptr, i64, i64 } %t241, ptr %a244 - call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a242 - store { ptr, i64, i64 } %t245, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1863, i64 9, i64 0 }, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t245, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - %t251 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t250, ptr %a253 - store { ptr, i64, i64 } %t251, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t250, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.1864, i64 3, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1865, i64 1, i64 0 }, ptr %a263 - call void @finch_str_join(ptr %a264, ptr %a186, ptr %a263) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t261, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t261, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t265, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a266 - store { ptr, i64, i64 } %t271, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.1866, i64 2, i64 0 }, ptr %a274 - call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a272 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t276) - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load ptr, ptr %a1 - %t279 = icmp eq ptr %t278, null - br i1 %t279, label %panic2981, label %ok2982 -panic2981: - call void @finch_panic(ptr @.str.1867, i64 1162, ptr @.str.1868) - unreachable -ok2982: - %t280 = getelementptr inbounds %S.gen.Gen, ptr %t278, i32 0, i32 9 - store i1 true, ptr %t280 - %t281 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i32 0, i32 1 - %t283 = load i64, ptr %t282 - store i64 0, ptr %a284 - br label %for.cond2983 -for.cond2983: - %t285 = load i64, ptr %a284 - %t286 = icmp slt i64 %t285, %t283 - br i1 %t286, label %for.body2984, label %for.end2986 -for.body2984: - %t287 = load ptr, ptr %a1 - %t288 = load i64, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a187 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range2987, label %inrange2988 -range2987: - call void @finch_panic_index(ptr @.str.1869, i64 1164, i64 %t288, i64 %t290) - unreachable -inrange2988: - %t292 = extractvalue { ptr, i64, i64 } %t289, 0 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %t292, i64 %t288 - %t294 = load { ptr, i64, i64 }, ptr %t293 - call void @finch.gen.label(ptr %t287, { ptr, i64, i64 } %t294) - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t297 = load i64, ptr %a284 - %t298 = load { ptr, i64, i64 }, ptr %t296 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range2989, label %inrange2990 -range2989: - call void @finch_panic_index(ptr @.str.1871, i64 1165, i64 %t297, i64 %t299) - unreachable -inrange2990: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t297 - %t303 = load { ptr, i64, i64 }, ptr %t302 - call void @finch.gen.bufText(ptr %t295, { ptr, i64, i64 } { ptr @.str.1870, i64 4, i64 0 }, { ptr, i64, i64 } %t303) - %t304 = load ptr, ptr %a1 - %t305 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t304, { ptr, i64, i64 } %t305) - br label %for.step2985 -for.step2985: - %t306 = load i64, ptr %a284 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a284 - br label %for.cond2983 -for.end2986: - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) - %t310 = load ptr, ptr %a1 - %t311 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1873, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - call void @finch.gen.bufText(ptr %t310, { ptr, i64, i64 } { ptr @.str.1872, i64 4, i64 0 }, { ptr, i64, i64 } %t316) - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1875, i64 9, i64 0 }, ptr %a322 - store { ptr, i64, i64 } %t320, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a321 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.1876, i64 7, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = call { ptr, i64, i64 } @finch.gen.op(ptr %t319, { ptr, i64, i64 } %t329) - store { ptr, i64, i64 } %t329, ptr %a331 - call void @finch_str_drop(ptr %a331) - store { ptr, i64, i64 } { ptr @.str.1874, i64 39, i64 0 }, ptr %a333 - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t330, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.1877, i64 1, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - call void @finch.gen.emit(ptr %t318, { ptr, i64, i64 } %t341) - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t343, { ptr, i64, i64 } { ptr @.str.1878, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1879, i64 1, i64 0 }) - %t344 = load ptr, ptr %a1 - %t345 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t344, { ptr, i64, i64 } %t345) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t346, { ptr, i64, i64 } %t347) - call void @finch.drop.arr_str(ptr %a187) - call void @finch.drop.arr_str(ptr %a186) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.S_gen_EnumDef(ptr %a176) - br label %endif2968 -else2967: - %t348 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t349 = load { ptr, i64, i64 }, ptr %t348 - store { ptr, i64, i64 } %t349, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.1880, i64 3, i64 0 }, ptr %a351 - %t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351) - %t353 = icmp ne i32 %t352, 0 - br i1 %t353, label %then2991, label %else2992 -then2991: - %t354 = load ptr, ptr %a1 - %t355 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t354, { ptr, i64, i64 } { ptr @.str.1881, i64 2, i64 0 }) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t357, { ptr, i64, i64 } { ptr @.str.1882, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1883, i64 4, i64 0 }, { ptr, i64, i64 } %t358) - %t359 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t359, { ptr, i64, i64 } { ptr @.str.1884, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1885, i64 1, i64 0 }) - %t360 = load ptr, ptr %a1 - %t361 = load ptr, ptr %a1 - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Type, ptr %a2 - %t364 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t362, %S.ast.Type %t363) - store { ptr, i64, i64 } { ptr @.str.1887, i64 23, i64 0 }, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1888, i64 22, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t361, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = call { ptr, i64, i64 } @finch.gen.load(ptr %t360, { ptr, i64, i64 } { ptr @.str.1886, i64 3, i64 0 }, { ptr, i64, i64 } %t375) - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_drop(ptr %a378) - store { ptr, i64, i64 } %t377, ptr %a379 - %t380 = load ptr, ptr %a1 - %t381 = load { ptr, i64, i64 }, ptr %a379 - %t382 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t380, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t382, ptr %a383 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Type, ptr %a2 - %t386 = load { ptr, i64, i64 }, ptr %a383 - %t387 = extractvalue { ptr, i64, i64 } %t386, 1 - %t388 = icmp uge i64 3, %t387 - br i1 %t388, label %range2994, label %inrange2995 -range2994: - call void @finch_panic_index(ptr @.str.1890, i64 1181, i64 3, i64 %t387) - unreachable -inrange2995: - %t389 = extractvalue { ptr, i64, i64 } %t386, 0 - %t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i64 3 - %t391 = load { ptr, i64, i64 }, ptr %t390 - %t392 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t384, { ptr, i64, i64 } { ptr @.str.1889, i64 2, i64 0 }, %S.ast.Type %t385, { ptr, i64, i64 } %t391) - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t394, { ptr, i64, i64 } { ptr @.str.1891, i64 10, i64 0 }) - store { ptr, i64, i64 } %t395, ptr %a396 - %t397 = load ptr, ptr %a1 - %t398 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t397, { ptr, i64, i64 } { ptr @.str.1892, i64 10, i64 0 }) - store { ptr, i64, i64 } %t398, ptr %a399 - %t400 = load ptr, ptr %a1 - %t401 = load ptr, ptr %a1 - %t402 = load ptr, ptr %a1 - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a393 - %t405 = load %S.ast.Type, ptr %a2 - %t406 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t403, { ptr, i64, i64 } %t404, %S.ast.Type %t405, i64 0) - %t407 = call { ptr, i64, i64 } @finch.gen.load(ptr %t402, { ptr, i64, i64 } { ptr @.str.1894, i64 3, i64 0 }, { ptr, i64, i64 } %t406) - store { ptr, i64, i64 } %t406, ptr %a408 - call void @finch_str_drop(ptr %a408) - store { ptr, i64, i64 } { ptr @.str.1893, i64 12, i64 0 }, ptr %a410 - store { ptr, i64, i64 } %t407, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t407, ptr %a412 - call void @finch_str_drop(ptr %a412) - %t413 = load { ptr, i64, i64 }, ptr %a409 - store { ptr, i64, i64 } %t413, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.1895, i64 3, i64 0 }, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - store { ptr, i64, i64 } %t413, ptr %a417 - call void @finch_str_drop(ptr %a417) - %t418 = load { ptr, i64, i64 }, ptr %a414 - %t419 = call { ptr, i64, i64 } @finch.gen.op(ptr %t401, { ptr, i64, i64 } %t418) - store { ptr, i64, i64 } %t418, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a396 - %t422 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.condBr(ptr %t400, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t421, { ptr, i64, i64 } %t422) - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a396 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t426, { ptr, i64, i64 } { ptr @.str.1896, i64 3, i64 0 }) - store { ptr, i64, i64 } %t427, ptr %a428 - %t429 = load ptr, ptr %a1 - %t430 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t429, { ptr, i64, i64 } { ptr @.str.1897, i64 4, i64 0 }) - store { ptr, i64, i64 } %t430, ptr %a431 - %t432 = load ptr, ptr %a1 - %t433 = load ptr, ptr %a1 - %t434 = load { ptr, i64, i64 }, ptr %a356 - %t435 = call { ptr, i64, i64 } @finch.gen.load(ptr %t433, { ptr, i64, i64 } { ptr @.str.1898, i64 2, i64 0 }, { ptr, i64, i64 } %t434) - %t436 = load { ptr, i64, i64 }, ptr %a431 - %t437 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.condBr(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t436, { ptr, i64, i64 } %t437) - store { ptr, i64, i64 } %t435, ptr %a438 - call void @finch_str_drop(ptr %a438) - %t439 = load ptr, ptr %a1 - %t440 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.label(ptr %t439, { ptr, i64, i64 } %t440) - %t441 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t441, { ptr, i64, i64 } { ptr @.str.1899, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1900, i64 2, i64 0 }) - %t442 = load ptr, ptr %a1 - %t443 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.br(ptr %t442, { ptr, i64, i64 } %t443) - %t444 = load ptr, ptr %a1 - %t445 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.label(ptr %t444, { ptr, i64, i64 } %t445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t446, { ptr, i64, i64 } { ptr @.str.1901, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1902, i64 5, i64 0 }, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load ptr, ptr %a1 - %t450 = load ptr, ptr %a1 - %t451 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = extractvalue { ptr, i64, i64 } %t452, 1 - %t454 = icmp uge i64 0, %t453 - br i1 %t454, label %range2996, label %inrange2997 -range2996: - call void @finch_panic_index(ptr @.str.1904, i64 1194, i64 0, i64 %t453) - unreachable -inrange2997: - %t455 = extractvalue { ptr, i64, i64 } %t452, 0 - %t456 = getelementptr inbounds %S.ast.Type, ptr %t455, i64 0 - %t457 = load %S.ast.Type, ptr %t456 - %t458 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t450, %S.ast.Type %t457) - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a393 - %t461 = load %S.ast.Type, ptr %a2 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 1) - %t463 = call { ptr, i64, i64 } @finch.gen.load(ptr %t449, { ptr, i64, i64 } %t458, { ptr, i64, i64 } %t462) - store { ptr, i64, i64 } %t458, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t467 = load { ptr, i64, i64 }, ptr %t466 - %t468 = extractvalue { ptr, i64, i64 } %t467, 1 - %t469 = icmp uge i64 0, %t468 - br i1 %t469, label %range2998, label %inrange2999 -range2998: - call void @finch_panic_index(ptr @.str.1905, i64 1194, i64 0, i64 %t468) - unreachable -inrange2999: - %t470 = extractvalue { ptr, i64, i64 } %t467, 0 - %t471 = getelementptr inbounds %S.ast.Type, ptr %t470, i64 0 - %t472 = load %S.ast.Type, ptr %t471 - call void @finch.gen.emitFormat(ptr %t448, { ptr, i64, i64 } { ptr @.str.1903, i64 4, i64 0 }, { ptr, i64, i64 } %t463, %S.ast.Type %t472, i1 true) - store { ptr, i64, i64 } %t463, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t474, { ptr, i64, i64 } { ptr @.str.1906, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1907, i64 2, i64 0 }) - %t475 = load ptr, ptr %a1 - %t476 = load ptr, ptr %a1 - %t477 = load ptr, ptr %a1 - %t478 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t479 = load { ptr, i64, i64 }, ptr %t478 - %t480 = extractvalue { ptr, i64, i64 } %t479, 1 - %t481 = icmp uge i64 1, %t480 - br i1 %t481, label %range3000, label %inrange3001 -range3000: - call void @finch_panic_index(ptr @.str.1909, i64 1196, i64 1, i64 %t480) - unreachable -inrange3001: - %t482 = extractvalue { ptr, i64, i64 } %t479, 0 - %t483 = getelementptr inbounds %S.ast.Type, ptr %t482, i64 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t477, %S.ast.Type %t484) - %t486 = load ptr, ptr %a1 - %t487 = load { ptr, i64, i64 }, ptr %a393 - %t488 = load %S.ast.Type, ptr %a2 - %t489 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t486, { ptr, i64, i64 } %t487, %S.ast.Type %t488, i64 2) - %t490 = call { ptr, i64, i64 } @finch.gen.load(ptr %t476, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t489) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t494 = load { ptr, i64, i64 }, ptr %t493 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 1, %t495 - br i1 %t496, label %range3002, label %inrange3003 -range3002: - call void @finch_panic_index(ptr @.str.1910, i64 1196, i64 1, i64 %t495) - unreachable -inrange3003: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds %S.ast.Type, ptr %t497, i64 1 - %t499 = load %S.ast.Type, ptr %t498 - call void @finch.gen.emitFormat(ptr %t475, { ptr, i64, i64 } { ptr @.str.1908, i64 4, i64 0 }, { ptr, i64, i64 } %t490, %S.ast.Type %t499, i1 true) - store { ptr, i64, i64 } %t490, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load ptr, ptr %a1 - %t502 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.br(ptr %t501, { ptr, i64, i64 } %t502) - %t503 = load ptr, ptr %a1 - %t504 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.label(ptr %t503, { ptr, i64, i64 } %t504) - %t505 = load ptr, ptr %a1 - %t506 = load { ptr, i64, i64 }, ptr %a383 - call void @finch.gen.loopEnd(ptr %t505, { ptr, i64, i64 } %t506) - %t507 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t507, { ptr, i64, i64 } { ptr @.str.1911, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1912, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a431) - call void @finch_str_drop(ptr %a428) - call void @finch_str_drop(ptr %a399) - call void @finch_str_drop(ptr %a396) - call void @finch_str_drop(ptr %a393) - call void @finch.drop.arr_str(ptr %a383) - call void @finch_str_drop(ptr %a379) - call void @finch_str_drop(ptr %a356) - br label %endif2993 -else2992: - %t508 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t509 = load { ptr, i64, i64 }, ptr %t508 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.1913, i64 6, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.from3004 -logic.from3004: - br i1 %t513, label %logic.rhs3005, label %logic.end3006 -logic.rhs3005: - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t516 = load { ptr, i64, i64 }, ptr %t515 - %t517 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t518 = load { ptr, i64, i64 }, ptr %t517 - %t519 = call i64 @finch.gen.findSum(ptr %t514, { ptr, i64, i64 } %t516, { ptr, i64, i64 } %t518) - %t520 = icmp sge i64 %t519, 0 - br label %logic.rend3007 -logic.rend3007: - br label %logic.end3006 -logic.end3006: - %t521 = phi i1 [ false, %logic.from3004 ], [ %t520, %logic.rend3007 ] - br i1 %t521, label %then3008, label %else3009 -then3008: - %t522 = load ptr, ptr %a1 - %t523 = icmp eq ptr %t522, null - br i1 %t523, label %panic3011, label %ok3012 -panic3011: - call void @finch_panic(ptr @.str.1914, i64 1203, ptr @.str.1915) - unreachable -ok3012: - %t524 = getelementptr inbounds %S.gen.Gen, ptr %t522, i32 0, i32 22 - %t525 = load ptr, ptr %a1 - %t526 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t527 = load { ptr, i64, i64 }, ptr %t526 - %t528 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = call i64 @finch.gen.findSum(ptr %t525, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t529) - %t531 = load { ptr, i64, i64 }, ptr %t524 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range3013, label %inrange3014 -range3013: - call void @finch_panic_index(ptr @.str.1916, i64 1203, i64 %t530, i64 %t532) - unreachable -inrange3014: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.gen.SumDef, ptr %t534, i64 %t530 - %t536 = load %S.gen.SumDef, ptr %t535 - store %S.gen.SumDef %t536, ptr %a537 - call void @finch.copy.S_gen_SumDef(ptr %a538, ptr %a537) - %t539 = load %S.gen.SumDef, ptr %a538 - store %S.gen.SumDef %t539, ptr %a540 - %t541 = load ptr, ptr %a1 - %t542 = icmp eq ptr %t541, null - br i1 %t542, label %panic3015, label %ok3016 -panic3015: - call void @finch_panic(ptr @.str.1917, i64 1204, ptr @.str.1918) - unreachable -ok3016: - %t543 = getelementptr inbounds %S.gen.Gen, ptr %t541, i32 0, i32 16 - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t546 = load { ptr, i64, i64 }, ptr %t545 - %t547 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t548 = load { ptr, i64, i64 }, ptr %t547 - %t549 = call i64 @finch.gen.findStruct(ptr %t544, { ptr, i64, i64 } %t546, { ptr, i64, i64 } %t548) - %t550 = load { ptr, i64, i64 }, ptr %t543 - %t551 = extractvalue { ptr, i64, i64 } %t550, 1 - %t552 = icmp uge i64 %t549, %t551 - br i1 %t552, label %range3017, label %inrange3018 -range3017: - call void @finch_panic_index(ptr @.str.1919, i64 1204, i64 %t549, i64 %t551) - unreachable -inrange3018: - %t553 = extractvalue { ptr, i64, i64 } %t550, 0 - %t554 = getelementptr inbounds %S.gen.StructDef, ptr %t553, i64 %t549 - %t555 = load %S.gen.StructDef, ptr %t554 - store %S.gen.StructDef %t555, ptr %a556 - call void @finch.copy.S_gen_StructDef(ptr %a557, ptr %a556) - %t558 = load %S.gen.StructDef, ptr %a557 - store %S.gen.StructDef %t558, ptr %a559 - %t560 = load ptr, ptr %a1 - %t561 = load %S.ast.Type, ptr %a2 - %t562 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t560, %S.ast.Type %t561) - store { ptr, i64, i64 } %t562, ptr %a563 - %t564 = load ptr, ptr %a1 - %t565 = load ptr, ptr %a1 - %t566 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1921, i64 23, 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.1922, i64 21, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t577 = load { ptr, i64, i64 }, ptr %t576 - %t578 = extractvalue { ptr, i64, i64 } %t577, 1 - %t579 = icmp uge i64 0, %t578 - br i1 %t579, label %range3019, label %inrange3020 -range3019: - call void @finch_panic_index(ptr @.str.1923, i64 1206, i64 0, i64 %t578) - unreachable -inrange3020: - %t580 = extractvalue { ptr, i64, i64 } %t577, 0 - %t581 = getelementptr inbounds i64, ptr %t580, i64 0 - %t582 = load i64, ptr %t581 - call void @finch_str_from_int(ptr %a583, i64 %t582) - %t584 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t575, ptr %a586 - store { ptr, i64, i64 } %t584, ptr %a587 - call void @finch_str_concat(ptr %a585, ptr %a586, ptr %a587) - store { ptr, i64, i64 } %t575, ptr %a588 - call void @finch_str_drop(ptr %a588) - store { ptr, i64, i64 } %t584, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a585 - %t591 = call { ptr, i64, i64 } @finch.gen.op(ptr %t565, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = call { ptr, i64, i64 } @finch.gen.load(ptr %t564, { ptr, i64, i64 } { ptr @.str.1920, i64 3, i64 0 }, { ptr, i64, i64 } %t591) - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_drop(ptr %a594) - store { ptr, i64, i64 } %t593, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t596, { ptr, i64, i64 } { ptr @.str.1924, i64 9, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t599, { ptr, i64, i64 } { ptr @.str.1925, i64 8, i64 0 }) - store { ptr, i64, i64 } %t600, ptr %a601 - store { ptr, i64, i64 } zeroinitializer, ptr %a602 - store { ptr, i64, i64 } zeroinitializer, ptr %a603 - %t604 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i32 0, i32 1 - %t606 = load i64, ptr %t605 - store i64 0, ptr %a607 - br label %for.cond3021 -for.cond3021: - %t608 = load i64, ptr %a607 - %t609 = icmp slt i64 %t608, %t606 - br i1 %t609, label %for.body3022, label %for.end3024 -for.body3022: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a603, i32 0, i32 1 - %t611 = load ptr, ptr %a1 - %t612 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t611, { ptr, i64, i64 } { ptr @.str.1926, i64 5, i64 0 }) - %t613 = load i64, ptr %t610 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a603, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a603 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t610 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - %t618 = load i64, ptr %a607 - call void @finch_str_from_int(ptr %a619, i64 %t618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.1927, i64 4, i64 0 }, ptr %a622 - store { ptr, i64, i64 } %t620, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - store { ptr, i64, i64 } %t625, ptr %a627 - store { ptr, i64, i64 } { ptr @.str.1928, i64 9, i64 0 }, ptr %a628 - call void @finch_str_concat(ptr %a626, ptr %a627, ptr %a628) - store { ptr, i64, i64 } %t625, ptr %a629 - call void @finch_str_drop(ptr %a629) - %t630 = load { ptr, i64, i64 }, ptr %a626 - %t631 = load i64, ptr %a607 - %t632 = load { ptr, i64, i64 }, ptr %a603 - %t633 = extractvalue { ptr, i64, i64 } %t632, 1 - %t634 = icmp uge i64 %t631, %t633 - br i1 %t634, label %range3025, label %inrange3026 -range3025: - call void @finch_panic_index(ptr @.str.1929, i64 1213, i64 %t631, i64 %t633) - unreachable -inrange3026: - %t635 = extractvalue { ptr, i64, i64 } %t632, 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t631 - %t637 = load { ptr, i64, i64 }, ptr %t636 - store { ptr, i64, i64 } %t630, ptr %a639 - store { ptr, i64, i64 } %t637, ptr %a640 - call void @finch_str_concat(ptr %a638, ptr %a639, ptr %a640) - store { ptr, i64, i64 } %t630, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = load { ptr, i64, i64 }, ptr %a638 - %t643 = load i64, ptr %t617 - %t644 = add i64 %t643, 1 - call void @finch_arr_reserve(ptr %a602, i64 %t644, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t645 = load ptr, ptr %a602 - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t645, i64 %t643 - store { ptr, i64, i64 } %t642, ptr %t646 - store i64 %t644, ptr %t617 - br label %for.step3023 -for.step3023: - %t647 = load i64, ptr %a607 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a607 - br label %for.cond3021 -for.end3024: - %t649 = load ptr, ptr %a1 - %t650 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.1930, i64 11, i64 0 }, 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.1931, i64 9, i64 0 }, ptr %a657 - call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) - store { ptr, i64, i64 } %t654, ptr %a658 - call void @finch_str_drop(ptr %a658) - %t659 = load { ptr, i64, i64 }, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %a598 - store { ptr, i64, i64 } %t659, ptr %a662 - store { ptr, i64, i64 } %t660, ptr %a663 - call void @finch_str_concat(ptr %a661, ptr %a662, ptr %a663) - store { ptr, i64, i64 } %t659, ptr %a664 - call void @finch_str_drop(ptr %a664) - %t665 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t665, ptr %a667 - store { ptr, i64, i64 } { ptr @.str.1932, i64 3, i64 0 }, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t665, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - %t671 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1933, i64 1, i64 0 }, ptr %a672 - call void @finch_str_join(ptr %a673, ptr %a602, ptr %a672) - %t674 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t670, ptr %a676 - store { ptr, i64, i64 } %t674, ptr %a677 - call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677) - store { ptr, i64, i64 } %t670, ptr %a678 - call void @finch_str_drop(ptr %a678) - store { ptr, i64, i64 } %t674, ptr %a679 - call void @finch_str_drop(ptr %a679) - %t680 = load { ptr, i64, i64 }, ptr %a675 - store { ptr, i64, i64 } %t680, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.1934, i64 2, i64 0 }, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - store { ptr, i64, i64 } %t680, ptr %a684 - call void @finch_str_drop(ptr %a684) - %t685 = load { ptr, i64, i64 }, ptr %a681 - call void @finch.gen.emit(ptr %t649, { ptr, i64, i64 } %t685) - store { ptr, i64, i64 } %t685, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load ptr, ptr %a1 - %t688 = icmp eq ptr %t687, null - br i1 %t688, label %panic3027, label %ok3028 -panic3027: - call void @finch_panic(ptr @.str.1935, i64 1216, ptr @.str.1936) - unreachable -ok3028: - %t689 = getelementptr inbounds %S.gen.Gen, ptr %t687, i32 0, i32 9 - store i1 true, ptr %t689 - %t690 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %t690, i32 0, i32 1 - %t692 = load i64, ptr %t691 - store i64 0, ptr %a693 - br label %for.cond3029 -for.cond3029: - %t694 = load i64, ptr %a693 - %t695 = icmp slt i64 %t694, %t692 - br i1 %t695, label %for.body3030, label %for.end3032 -for.body3030: - %t696 = load ptr, ptr %a1 - %t697 = load i64, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a603 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range3033, label %inrange3034 -range3033: - call void @finch_panic_index(ptr @.str.1937, i64 1218, i64 %t697, i64 %t699) - unreachable -inrange3034: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds { ptr, i64, i64 }, ptr %t701, i64 %t697 - %t703 = load { ptr, i64, i64 }, ptr %t702 - call void @finch.gen.label(ptr %t696, { ptr, i64, i64 } %t703) - %t704 = load ptr, ptr %a1 - %t705 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t706 = load i64, ptr %a693 - %t707 = load { ptr, i64, i64 }, ptr %t705 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 %t706, %t708 - br i1 %t709, label %range3035, label %inrange3036 -range3035: - call void @finch_panic_index(ptr @.str.1939, i64 1219, i64 %t706, i64 %t708) - unreachable -inrange3036: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i64 %t706 - %t712 = load { ptr, i64, i64 }, ptr %t711 - call void @finch.gen.bufText(ptr %t704, { ptr, i64, i64 } { ptr @.str.1938, i64 4, i64 0 }, { ptr, i64, i64 } %t712) - %t713 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t714 = load i64, ptr %a693 - %t715 = load { ptr, i64, i64 }, ptr %t713 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 %t714, %t716 - br i1 %t717, label %range3037, label %inrange3038 -range3037: - call void @finch_panic_index(ptr @.str.1940, i64 1220, i64 %t714, i64 %t716) - unreachable -inrange3038: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds i64, ptr %t718, i64 %t714 - %t720 = load i64, ptr %t719 - %t721 = icmp sgt i64 %t720, 0 - br i1 %t721, label %then3039, label %endif3041 -then3039: - %t722 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t722, { ptr, i64, i64 } { ptr @.str.1941, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1942, i64 1, i64 0 }) - %t723 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t724 = load i64, ptr %a693 - %t725 = load { ptr, i64, i64 }, ptr %t723 - %t726 = extractvalue { ptr, i64, i64 } %t725, 1 - %t727 = icmp uge i64 %t724, %t726 - br i1 %t727, label %range3042, label %inrange3043 -range3042: - call void @finch_panic_index(ptr @.str.1943, i64 1222, i64 %t724, i64 %t726) - unreachable -inrange3043: - %t728 = extractvalue { ptr, i64, i64 } %t725, 0 - %t729 = getelementptr inbounds i64, ptr %t728, i64 %t724 - %t730 = load i64, ptr %t729 - store i64 0, ptr %a731 - br label %for.cond3044 -for.cond3044: - %t732 = load i64, ptr %a731 - %t733 = icmp slt i64 %t732, %t730 - br i1 %t733, label %for.body3045, label %for.end3047 -for.body3045: - %t734 = load i64, ptr %a731 - %t735 = icmp sgt i64 %t734, 0 - br i1 %t735, label %then3048, label %endif3050 -then3048: - %t736 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t736, { ptr, i64, i64 } { ptr @.str.1944, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1945, i64 2, i64 0 }) - br label %endif3050 -endif3050: - %t737 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 4 - %t738 = load i64, ptr %a693 - %t739 = load { ptr, i64, i64 }, ptr %t737 - %t740 = extractvalue { ptr, i64, i64 } %t739, 1 - %t741 = icmp uge i64 %t738, %t740 - br i1 %t741, label %range3051, label %inrange3052 -range3051: - call void @finch_panic_index(ptr @.str.1946, i64 1226, i64 %t738, i64 %t740) - unreachable -inrange3052: - %t742 = extractvalue { ptr, i64, i64 } %t739, 0 - %t743 = getelementptr inbounds i64, ptr %t742, i64 %t738 - %t744 = load i64, ptr %t743 - %t745 = load i64, ptr %a731 - %t746 = add i64 %t744, %t745 - store i64 %t746, ptr %a747 - %t748 = load ptr, ptr %a1 - %t749 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1947, i64 23, i64 0 }, 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.1948, i64 21, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - %t759 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t760 = load i64, ptr %a747 - %t761 = load { ptr, i64, i64 }, ptr %t759 - %t762 = extractvalue { ptr, i64, i64 } %t761, 1 - %t763 = icmp uge i64 %t760, %t762 - br i1 %t763, label %range3053, label %inrange3054 -range3053: - call void @finch_panic_index(ptr @.str.1949, i64 1227, i64 %t760, i64 %t762) - unreachable -inrange3054: - %t764 = extractvalue { ptr, i64, i64 } %t761, 0 - %t765 = getelementptr inbounds i64, ptr %t764, i64 %t760 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t758, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t758, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - %t775 = call { ptr, i64, i64 } @finch.gen.op(ptr %t748, { ptr, i64, i64 } %t774) - store { ptr, i64, i64 } %t774, ptr %a776 - call void @finch_str_drop(ptr %a776) - store { ptr, i64, i64 } %t775, ptr %a777 - %t778 = load ptr, ptr %a1 - %t779 = load ptr, ptr %a1 - %t780 = load ptr, ptr %a1 - %t781 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t782 = load i64, ptr %a747 - %t783 = load { ptr, i64, i64 }, ptr %t781 - %t784 = extractvalue { ptr, i64, i64 } %t783, 1 - %t785 = icmp uge i64 %t782, %t784 - br i1 %t785, label %range3055, label %inrange3056 -range3055: - call void @finch_panic_index(ptr @.str.1951, i64 1228, i64 %t782, i64 %t784) - unreachable -inrange3056: - %t786 = extractvalue { ptr, i64, i64 } %t783, 0 - %t787 = getelementptr inbounds %S.ast.Type, ptr %t786, i64 %t782 - %t788 = load %S.ast.Type, ptr %t787 - %t789 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t780, %S.ast.Type %t788) - %t790 = load { ptr, i64, i64 }, ptr %a777 - %t791 = call { ptr, i64, i64 } @finch.gen.load(ptr %t779, { ptr, i64, i64 } %t789, { ptr, i64, i64 } %t790) - store { ptr, i64, i64 } %t789, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t794 = load i64, ptr %a747 - %t795 = load { ptr, i64, i64 }, ptr %t793 - %t796 = extractvalue { ptr, i64, i64 } %t795, 1 - %t797 = icmp uge i64 %t794, %t796 - br i1 %t797, label %range3057, label %inrange3058 -range3057: - call void @finch_panic_index(ptr @.str.1952, i64 1228, i64 %t794, i64 %t796) - unreachable -inrange3058: - %t798 = extractvalue { ptr, i64, i64 } %t795, 0 - %t799 = getelementptr inbounds %S.ast.Type, ptr %t798, i64 %t794 - %t800 = load %S.ast.Type, ptr %t799 - call void @finch.gen.emitFormat(ptr %t778, { ptr, i64, i64 } { ptr @.str.1950, i64 4, i64 0 }, { ptr, i64, i64 } %t791, %S.ast.Type %t800, i1 true) - store { ptr, i64, i64 } %t791, ptr %a801 - call void @finch_str_drop(ptr %a801) - call void @finch_str_drop(ptr %a777) - br label %for.step3046 -for.step3046: - %t802 = load i64, ptr %a731 - %t803 = add i64 %t802, 1 - store i64 %t803, ptr %a731 - br label %for.cond3044 -for.end3047: - %t804 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t804, { ptr, i64, i64 } { ptr @.str.1953, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1954, i64 1, i64 0 }) - br label %endif3041 -endif3041: - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t805, { ptr, i64, i64 } %t806) - br label %for.step3031 -for.step3031: - %t807 = load i64, ptr %a693 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a693 - br label %for.cond3029 -for.end3032: - %t809 = load ptr, ptr %a1 - %t810 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.label(ptr %t809, { ptr, i64, i64 } %t810) - %t811 = load ptr, ptr %a1 - %t812 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 1 - %t813 = load { ptr, i64, i64 }, ptr %t812 - store { ptr, i64, i64 } %t813, ptr %a815 - store { ptr, i64, i64 } { ptr @.str.1956, i64 3, i64 0 }, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - call void @finch.gen.bufText(ptr %t811, { ptr, i64, i64 } { ptr @.str.1955, i64 4, i64 0 }, { ptr, i64, i64 } %t817) - store { ptr, i64, i64 } %t817, ptr %a818 - call void @finch_str_drop(ptr %a818) - %t819 = load ptr, ptr %a1 - %t820 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t819, { ptr, i64, i64 } %t820) - %t821 = load ptr, ptr %a1 - %t822 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.label(ptr %t821, { ptr, i64, i64 } %t822) - call void @finch.drop.arr_str(ptr %a603) - call void @finch.drop.arr_str(ptr %a602) - call void @finch_str_drop(ptr %a601) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a563) - call void @finch.drop.S_gen_StructDef(ptr %a559) - call void @finch.drop.S_gen_SumDef(ptr %a540) - br label %endif3010 -else3009: - %t823 = load ptr, ptr %a1 - %t824 = icmp eq ptr %t823, null - br i1 %t824, label %panic3059, label %ok3060 -panic3059: - call void @finch_panic(ptr @.str.1957, i64 1239, ptr @.str.1958) - unreachable -ok3060: - %t825 = getelementptr inbounds %S.gen.Gen, ptr %t823, i32 0, i32 16 - %t826 = load ptr, ptr %a1 - %t827 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t828 = load { ptr, i64, i64 }, ptr %t827 - %t829 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t830 = load { ptr, i64, i64 }, ptr %t829 - %t831 = call i64 @finch.gen.findStruct(ptr %t826, { ptr, i64, i64 } %t828, { ptr, i64, i64 } %t830) - %t832 = load { ptr, i64, i64 }, ptr %t825 - %t833 = extractvalue { ptr, i64, i64 } %t832, 1 - %t834 = icmp uge i64 %t831, %t833 - br i1 %t834, label %range3061, label %inrange3062 -range3061: - call void @finch_panic_index(ptr @.str.1959, i64 1239, i64 %t831, i64 %t833) - unreachable -inrange3062: - %t835 = extractvalue { ptr, i64, i64 } %t832, 0 - %t836 = getelementptr inbounds %S.gen.StructDef, ptr %t835, i64 %t831 - %t837 = load %S.gen.StructDef, ptr %t836 - store %S.gen.StructDef %t837, ptr %a838 - call void @finch.copy.S_gen_StructDef(ptr %a839, ptr %a838) - %t840 = load %S.gen.StructDef, ptr %a839 - store %S.gen.StructDef %t840, ptr %a841 - %t842 = load ptr, ptr %a1 - %t843 = load %S.ast.Type, ptr %a2 - %t844 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t842, %S.ast.Type %t843) - store { ptr, i64, i64 } %t844, ptr %a845 - %t846 = load ptr, ptr %a1 - %t847 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 1 - %t848 = load { ptr, i64, i64 }, ptr %t847 - store { ptr, i64, i64 } %t848, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.1961, i64 1, i64 0 }, ptr %a851 - call void @finch_str_concat(ptr %a849, ptr %a850, ptr %a851) - %t852 = load { ptr, i64, i64 }, ptr %a849 - call void @finch.gen.bufText(ptr %t846, { ptr, i64, i64 } { ptr @.str.1960, i64 4, i64 0 }, { ptr, i64, i64 } %t852) - store { ptr, i64, i64 } %t852, ptr %a853 - call void @finch_str_drop(ptr %a853) - %t854 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i32 0, i32 1 - %t856 = load i64, ptr %t855 - store i64 0, ptr %a857 - br label %for.cond3063 -for.cond3063: - %t858 = load i64, ptr %a857 - %t859 = icmp slt i64 %t858, %t856 - br i1 %t859, label %for.body3064, label %for.end3066 -for.body3064: - store { ptr, i64, i64 } { ptr @.str.1962, i64 2, i64 0 }, ptr %a860 - %t861 = load i64, ptr %a857 - %t862 = icmp eq i64 %t861, 0 - br i1 %t862, label %then3067, label %endif3069 -then3067: - %t863 = load { ptr, i64, i64 }, ptr %a860 - store { ptr, i64, i64 } { ptr @.str.1963, i64 0, i64 0 }, ptr %a860 - store { ptr, i64, i64 } %t863, ptr %a864 - call void @finch_str_drop(ptr %a864) - br label %endif3069 -endif3069: - %t865 = load ptr, ptr %a1 - %t866 = load { ptr, i64, i64 }, ptr %a860 - %t867 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 11 - %t868 = load i64, ptr %a857 - %t869 = load { ptr, i64, i64 }, ptr %t867 - %t870 = extractvalue { ptr, i64, i64 } %t869, 1 - %t871 = icmp uge i64 %t868, %t870 - br i1 %t871, label %range3070, label %inrange3071 -range3070: - call void @finch_panic_index(ptr @.str.1965, i64 1247, i64 %t868, i64 %t870) - unreachable -inrange3071: - %t872 = extractvalue { ptr, i64, i64 } %t869, 0 - %t873 = getelementptr inbounds { ptr, i64, i64 }, ptr %t872, i64 %t868 - %t874 = load { ptr, i64, i64 }, ptr %t873 - store { ptr, i64, i64 } %t866, ptr %a876 - store { ptr, i64, i64 } %t874, ptr %a877 - call void @finch_str_concat(ptr %a875, ptr %a876, ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a875 - store { ptr, i64, i64 } %t878, ptr %a880 - store { ptr, i64, i64 } { ptr @.str.1966, i64 2, i64 0 }, ptr %a881 - call void @finch_str_concat(ptr %a879, ptr %a880, ptr %a881) - store { ptr, i64, i64 } %t878, ptr %a882 - call void @finch_str_drop(ptr %a882) - %t883 = load { ptr, i64, i64 }, ptr %a879 - call void @finch.gen.bufText(ptr %t865, { ptr, i64, i64 } { ptr @.str.1964, i64 4, i64 0 }, { ptr, i64, i64 } %t883) - store { ptr, i64, i64 } %t883, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load ptr, ptr %a1 - %t886 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } { ptr @.str.1967, i64 23, i64 0 }, ptr %a888 - store { ptr, i64, i64 } %t886, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - %t890 = load { ptr, i64, i64 }, ptr %a887 - store { ptr, i64, i64 } %t890, ptr %a892 - store { ptr, i64, i64 } { ptr @.str.1968, i64 21, i64 0 }, ptr %a893 - call void @finch_str_concat(ptr %a891, ptr %a892, ptr %a893) - store { ptr, i64, i64 } %t890, ptr %a894 - call void @finch_str_drop(ptr %a894) - %t895 = load { ptr, i64, i64 }, ptr %a891 - %t896 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 3 - %t897 = load i64, ptr %a857 - %t898 = load { ptr, i64, i64 }, ptr %t896 - %t899 = extractvalue { ptr, i64, i64 } %t898, 1 - %t900 = icmp uge i64 %t897, %t899 - br i1 %t900, label %range3072, label %inrange3073 -range3072: - call void @finch_panic_index(ptr @.str.1969, i64 1248, i64 %t897, i64 %t899) - unreachable -inrange3073: - %t901 = extractvalue { ptr, i64, i64 } %t898, 0 - %t902 = getelementptr inbounds i64, ptr %t901, i64 %t897 - %t903 = load i64, ptr %t902 - call void @finch_str_from_int(ptr %a904, i64 %t903) - %t905 = load { ptr, i64, i64 }, ptr %a904 - store { ptr, i64, i64 } %t895, ptr %a907 - store { ptr, i64, i64 } %t905, ptr %a908 - call void @finch_str_concat(ptr %a906, ptr %a907, ptr %a908) - store { ptr, i64, i64 } %t895, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t905, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load { ptr, i64, i64 }, ptr %a906 - %t912 = call { ptr, i64, i64 } @finch.gen.op(ptr %t885, { ptr, i64, i64 } %t911) - store { ptr, i64, i64 } %t911, ptr %a913 - call void @finch_str_drop(ptr %a913) - store { ptr, i64, i64 } %t912, ptr %a914 - %t915 = load ptr, ptr %a1 - %t916 = load ptr, ptr %a1 - %t917 = load ptr, ptr %a1 - %t918 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t919 = load i64, ptr %a857 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3074, label %inrange3075 -range3074: - call void @finch_panic_index(ptr @.str.1971, i64 1249, i64 %t919, i64 %t921) - unreachable -inrange3075: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.ast.Type, ptr %t923, i64 %t919 - %t925 = load %S.ast.Type, ptr %t924 - %t926 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t917, %S.ast.Type %t925) - %t927 = load { ptr, i64, i64 }, ptr %a914 - %t928 = call { ptr, i64, i64 } @finch.gen.load(ptr %t916, { ptr, i64, i64 } %t926, { ptr, i64, i64 } %t927) - store { ptr, i64, i64 } %t926, ptr %a929 - call void @finch_str_drop(ptr %a929) - %t930 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t931 = load i64, ptr %a857 - %t932 = load { ptr, i64, i64 }, ptr %t930 - %t933 = extractvalue { ptr, i64, i64 } %t932, 1 - %t934 = icmp uge i64 %t931, %t933 - br i1 %t934, label %range3076, label %inrange3077 -range3076: - call void @finch_panic_index(ptr @.str.1972, i64 1249, i64 %t931, i64 %t933) - unreachable -inrange3077: - %t935 = extractvalue { ptr, i64, i64 } %t932, 0 - %t936 = getelementptr inbounds %S.ast.Type, ptr %t935, i64 %t931 - %t937 = load %S.ast.Type, ptr %t936 - call void @finch.gen.emitFormat(ptr %t915, { ptr, i64, i64 } { ptr @.str.1970, i64 4, i64 0 }, { ptr, i64, i64 } %t928, %S.ast.Type %t937, i1 true) - store { ptr, i64, i64 } %t928, ptr %a938 - call void @finch_str_drop(ptr %a938) - call void @finch_str_drop(ptr %a914) - call void @finch_str_drop(ptr %a860) - br label %for.step3065 -for.step3065: - %t939 = load i64, ptr %a857 - %t940 = add i64 %t939, 1 - store i64 %t940, ptr %a857 - br label %for.cond3063 -for.end3066: - %t941 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t941, { ptr, i64, i64 } { ptr @.str.1973, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1974, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a845) - call void @finch.drop.S_gen_StructDef(ptr %a841) - br label %endif3010 -endif3010: - br label %endif2993 -endif2993: - br label %endif2968 -endif2968: - br label %endif2959 -endif2959: - %t942 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t942, { ptr, i64, i64 } { ptr @.str.1975, i64 8, i64 0 }) - %t943 = load ptr, ptr %a1 - %t944 = load %S.gen.Saved, ptr %a32 - %t945 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1976, i64 21, i64 0 }, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t949, ptr %a951 - store { ptr, i64, i64 } { ptr @.str.1977, i64 18, i64 0 }, ptr %a952 - call void @finch_str_concat(ptr %a950, ptr %a951, ptr %a952) - store { ptr, i64, i64 } %t949, ptr %a953 - call void @finch_str_drop(ptr %a953) - %t954 = load { ptr, i64, i64 }, ptr %a950 - call void @finch.gen.endHelper(ptr %t943, %S.gen.Saved %t944, { ptr, i64, i64 } %t954) - store { ptr, i64, i64 } %t954, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t956 -} - -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3078, label %endif3080 -then3078: - %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 -endif3080: - %t18 = load i64, ptr %a10 - %t19 = load i64, ptr %a7 - %t20 = icmp slt i64 %t18, %t19 - br i1 %t20, label %then3081, label %endif3083 -then3081: - %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.1978, i64 6, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1979, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1980, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t46, %S.ast.Type %t47) - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a56 - call void @finch_str_drop(ptr %a56) - ret { ptr, i64, i64 } %t55 -endif3083: - %t57 = load %S.ast.Type, ptr %a3 - %t58 = call i1 @finch.gen.isSigned(%S.ast.Type %t57) - br i1 %t58, label %then3084, label %endif3086 -then3084: - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load %S.ast.Type, ptr %a3 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) - store { ptr, i64, i64 } { ptr @.str.1981, i64 5, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.1982, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.1983, i64 4, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t78, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Type, ptr %a4 - %t86 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t84, %S.ast.Type %t85) - store { ptr, i64, i64 } %t83, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t83, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a94 - call void @finch_str_drop(ptr %a94) - ret { ptr, i64, i64 } %t93 -endif3086: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a3 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - store { ptr, i64, i64 } { ptr @.str.1984, i64 5, i64 0 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1985, i64 1, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1986, i64 4, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load ptr, ptr %a1 - %t121 = load %S.ast.Type, ptr %a4 - %t122 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t120, %S.ast.Type %t121) - store { ptr, i64, i64 } %t119, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t119, ptr %a126 - call void @finch_str_drop(ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a123 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - ret { ptr, i64, i64 } %t129 -} - -define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3087, label %endif3089 -then3087: - %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 -endif3089: - %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 %then3090, label %endif3092 -then3090: - %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.1987, i64 6, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1988, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.1989, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.ast.Type, ptr %a4 - %t49 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t47, %S.ast.Type %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - %t56 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - ret { ptr, i64, i64 } %t56 -endif3092: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a3 - %t61 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1990, i64 8, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1991, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1992, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = load %S.ast.Type, ptr %a4 - %t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84) - store { ptr, i64, i64 } %t82, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t82, ptr %a89 - call void @finch_str_drop(ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a86 - %t92 = call { ptr, i64, i64 } @finch.gen.op(ptr %t58, { ptr, i64, i64 } %t91) - store { ptr, i64, i64 } %t91, ptr %a93 - call void @finch_str_drop(ptr %a93) - ret { ptr, i64, i64 } %t92 -} - -define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.isSigned(%S.ast.Type %t5) - br i1 %t6, label %then3093, label %endif3095 -then3093: - %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.1993, i64 7, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1994, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1995, i64 4, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = load %S.ast.Type, ptr %a4 - %t34 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t32, %S.ast.Type %t33) - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret { ptr, i64, i64 } %t41 -endif3095: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Type, ptr %a3 - %t46 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t44, %S.ast.Type %t45) - store { ptr, i64, i64 } { ptr @.str.1996, i64 7, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1997, i64 1, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t56, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1998, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - ret { ptr, i64, i64 } %t77 -} - -define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) { -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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a175 = alloca %S.ast.Type, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a203 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.ast.Type, align 16 - %a233 = alloca %S.ast.Type, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca %S.gen.Val, align 16 - %a348 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3096, label %endif3098 -then3096: - %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 -endif3098: - %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.1999, 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.from3099 -logic.from3099: - br i1 %t20, label %logic.rhs3100, label %logic.end3101 -logic.rhs3100: - %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.2000, 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.rend3102 -logic.rend3102: - br label %logic.end3101 -logic.end3101: - %t27 = phi i1 [ false, %logic.from3099 ], [ %t26, %logic.rend3102 ] - br i1 %t27, label %then3103, label %endif3105 -then3103: - %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.2001, 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 -endif3105: - %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.2002, 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.from3106 -logic.from3106: - br i1 %t40, label %logic.rhs3107, label %logic.end3108 -logic.rhs3107: - %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.2003, 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.rend3109 -logic.rend3109: - br label %logic.end3108 -logic.end3108: - %t47 = phi i1 [ false, %logic.from3106 ], [ %t46, %logic.rend3109 ] - br label %logic.from3110 -logic.from3110: - br i1 %t47, label %logic.rhs3111, label %logic.end3112 -logic.rhs3111: - %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.from3113 -logic.from3113: - br i1 %t52, label %logic.end3115, label %logic.rhs3114 -logic.rhs3114: - %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.rend3116 -logic.rend3116: - br label %logic.end3115 -logic.end3115: - %t57 = phi i1 [ true, %logic.from3113 ], [ %t56, %logic.rend3116 ] - br label %logic.rend3117 -logic.rend3117: - br label %logic.end3112 -logic.end3112: - %t58 = phi i1 [ false, %logic.from3110 ], [ %t57, %logic.rend3117 ] - br i1 %t58, label %then3118, label %endif3120 -then3118: - %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 -endif3120: - %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.from3121 -logic.from3121: - br i1 %t72, label %logic.rhs3122, label %logic.end3123 -logic.rhs3122: - %t73 = load %S.ast.Type, ptr %a3 - %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) - br label %logic.rend3124 -logic.rend3124: - br label %logic.end3123 -logic.end3123: - %t75 = phi i1 [ false, %logic.from3121 ], [ %t74, %logic.rend3124 ] - br i1 %t75, label %then3125, label %endif3127 -then3125: - %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t77 = load i1, ptr %t76 - br label %logic.from3128 -logic.from3128: - br i1 %t77, label %logic.rhs3129, label %logic.end3130 -logic.rhs3129: - %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.rend3131 -logic.rend3131: - br label %logic.end3130 -logic.end3130: - %t84 = phi i1 [ false, %logic.from3128 ], [ %t83, %logic.rend3131 ] - br i1 %t84, label %then3132, label %endif3134 -then3132: - %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 -endif3134: - %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 %then3135, label %endif3137 -then3135: - %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 -endif3137: - %t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t115 = load i1, ptr %t114 - br i1 %t115, label %then3138, label %endif3140 -then3138: - %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.2004, 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.2005, i64 16, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load %S.ast.Type, ptr %a3 - %t130 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t136) - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif3140 -endif3140: - br label %endif3127 -endif3127: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t139 = load %S.ast.Type, ptr %t138 - %t140 = call i1 @finch.gen.isInt(%S.ast.Type %t139) - br label %logic.from3141 -logic.from3141: - br i1 %t140, label %logic.rhs3142, label %logic.end3143 -logic.rhs3142: - %t141 = load %S.ast.Type, ptr %a3 - %t142 = call i1 @finch.gen.isFloat(%S.ast.Type %t141) - br label %logic.rend3144 -logic.rend3144: - br label %logic.end3143 -logic.end3143: - %t143 = phi i1 [ false, %logic.from3141 ], [ %t142, %logic.rend3144 ] - br i1 %t143, label %then3145, label %endif3147 -then3145: - %t144 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t145 = load i1, ptr %t144 - br label %logic.from3148 -logic.from3148: - br i1 %t145, label %logic.rhs3149, label %logic.end3150 -logic.rhs3149: - %t146 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.2006, i64 5, i64 0 }, ptr %a149 - %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) - %t151 = icmp ne i32 %t150, 0 - br label %logic.rend3151 -logic.rend3151: - br label %logic.end3150 -logic.end3150: - %t152 = phi i1 [ false, %logic.from3148 ], [ %t151, %logic.rend3151 ] - br i1 %t152, label %then3152, label %endif3154 -then3152: - %t153 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t154 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.2007, i64 2, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t158, 0 - %t160 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - %t164 = insertvalue %S.gen.Val %t159, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 3 - ret %S.gen.Val %t165 -endif3154: - %t166 = load ptr, ptr %a1 - %t167 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = load %S.ast.Type, ptr %a3 - %t172 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t166, { ptr, i64, i64 } %t168, %S.ast.Type %t170, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t174, ptr %a175 - call void @finch.copy.S_ast_Type(ptr %a176, ptr %a175) - %t177 = load %S.ast.Type, ptr %a176 - %t178 = insertvalue %S.gen.Val %t173, %S.ast.Type %t177, 1 - ret %S.gen.Val %t178 -endif3147: - %t179 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i32 0, i32 0 - %t181 = load { ptr, i64, i64 }, ptr %t180 - store { ptr, i64, i64 } %t181, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.2008, i64 3, i64 0 }, ptr %a183 - %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) - %t185 = icmp ne i32 %t184, 0 - br label %logic.from3155 -logic.from3155: - br i1 %t185, label %logic.rhs3156, label %logic.end3157 -logic.rhs3156: - %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t187, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.2009, i64 5, i64 0 }, ptr %a189 - %t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189) - %t191 = icmp ne i32 %t190, 0 - br label %logic.rend3158 -logic.rend3158: - br label %logic.end3157 -logic.end3157: - %t192 = phi i1 [ false, %logic.from3155 ], [ %t191, %logic.rend3158 ] - br i1 %t192, label %then3159, label %endif3161 -then3159: - %t193 = load ptr, ptr %a1 - %t194 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t197 = load %S.ast.Type, ptr %t196 - %t198 = load %S.ast.Type, ptr %a3 - %t199 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t193, { ptr, i64, i64 } %t195, %S.ast.Type %t197, %S.ast.Type %t198) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 - %t201 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t201, ptr %a202 - call void @finch.copy.S_ast_Type(ptr %a203, ptr %a202) - %t204 = load %S.ast.Type, ptr %a203 - %t205 = insertvalue %S.gen.Val %t200, %S.ast.Type %t204, 1 - ret %S.gen.Val %t205 -endif3161: - %t206 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t207 = getelementptr inbounds %S.ast.Type, ptr %t206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.2010, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br label %logic.from3162 -logic.from3162: - br i1 %t212, label %logic.rhs3163, label %logic.end3164 -logic.rhs3163: - %t213 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } { ptr @.str.2011, i64 3, i64 0 }, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br label %logic.rend3165 -logic.rend3165: - br label %logic.end3164 -logic.end3164: - %t219 = phi i1 [ false, %logic.from3162 ], [ %t218, %logic.rend3165 ] - br label %logic.from3166 -logic.from3166: - br i1 %t219, label %logic.rhs3167, label %logic.end3168 -logic.rhs3167: - %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t221 = load i1, ptr %t220 - br label %logic.rend3169 -logic.rend3169: - br label %logic.end3168 -logic.end3168: - %t222 = phi i1 [ false, %logic.from3166 ], [ %t221, %logic.rend3169 ] - br i1 %t222, label %then3170, label %endif3172 -then3170: - %t223 = load ptr, ptr %a1 - %t224 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t227 = load %S.ast.Type, ptr %t226 - %t228 = load %S.ast.Type, ptr %a3 - %t229 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t223, { ptr, i64, i64 } %t225, %S.ast.Type %t227, %S.ast.Type %t228) - %t230 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t231 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t231, ptr %a232 - call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) - %t234 = load %S.ast.Type, ptr %a233 - %t235 = insertvalue %S.gen.Val %t230, %S.ast.Type %t234, 1 - ret %S.gen.Val %t235 -endif3172: - %t236 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.2012, i64 9, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a237 - %t241 = load %S.ast.Type, ptr %a3 - %t242 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t241) - store { ptr, i64, i64 } %t240, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t240, ptr %a246 - call void @finch_str_drop(ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2013, i64 14, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t253, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t253, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a263 - %t264 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t265 = load %S.ast.Type, ptr %t264 - %t266 = call i1 @finch.gen.isNumber(%S.ast.Type %t265) - br label %logic.from3173 -logic.from3173: - br i1 %t266, label %logic.rhs3174, label %logic.end3175 -logic.rhs3174: - %t267 = load %S.ast.Type, ptr %a3 - %t268 = call i1 @finch.gen.isNumber(%S.ast.Type %t267) - br label %logic.rend3176 -logic.rend3176: - br label %logic.end3175 -logic.end3175: - %t269 = phi i1 [ false, %logic.from3173 ], [ %t268, %logic.rend3176 ] - br i1 %t269, label %then3177, label %endif3179 -then3177: - %t270 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t270, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.2014, i64 6, i64 0 }, ptr %a273 - call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a271 - %t275 = load %S.ast.Type, ptr %a3 - %t276 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t275) - store { ptr, i64, i64 } %t274, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t274, ptr %a280 - call void @finch_str_drop(ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.2015, i64 16, i64 0 }, ptr %a285 - call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) - store { ptr, i64, i64 } %t282, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a283 - %t288 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t287, ptr %a263 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t291 = load %S.ast.Type, ptr %t290 - %t292 = call i1 @finch.gen.isFloat(%S.ast.Type %t291) - br label %logic.from3180 -logic.from3180: - br i1 %t292, label %logic.rhs3181, label %logic.end3182 -logic.rhs3181: - %t293 = load %S.ast.Type, ptr %a3 - %t294 = call i1 @finch.gen.isInt(%S.ast.Type %t293) - br label %logic.rend3183 -logic.rend3183: - br label %logic.end3182 -logic.end3182: - %t295 = phi i1 [ false, %logic.from3180 ], [ %t294, %logic.rend3183 ] - br i1 %t295, label %then3184, label %endif3186 -then3184: - %t296 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.2016, i64 26, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t300, ptr %a263 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif3186 -endif3186: - %t303 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.2017, i64 1, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t307, ptr %a263 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif3179 -endif3179: - %t310 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.2018, i64 3, i64 0 }, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br label %logic.from3187 -logic.from3187: - br i1 %t315, label %logic.rhs3188, label %logic.end3189 -logic.rhs3188: - %t316 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t317 = load %S.ast.Type, ptr %t316 - %t318 = call i1 @finch.gen.isNumber(%S.ast.Type %t317) - br label %logic.from3190 -logic.from3190: - br i1 %t318, label %logic.end3192, label %logic.rhs3191 -logic.rhs3191: - %t319 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i32 0, i32 0 - %t321 = load { ptr, i64, i64 }, ptr %t320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.2019, i64 4, i64 0 }, ptr %a323 - %t324 = call i32 @finch_str_eq(ptr %a322, ptr %a323) - %t325 = icmp ne i32 %t324, 0 - br label %logic.rend3193 -logic.rend3193: - br label %logic.end3192 -logic.end3192: - %t326 = phi i1 [ true, %logic.from3190 ], [ %t325, %logic.rend3193 ] - br label %logic.from3194 -logic.from3194: - br i1 %t326, label %logic.end3196, label %logic.rhs3195 -logic.rhs3195: - %t327 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Type, ptr %t327, i32 0, i32 0 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t329, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.2020, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_eq(ptr %a330, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.rend3197 -logic.rend3197: - br label %logic.end3196 -logic.end3196: - %t334 = phi i1 [ true, %logic.from3194 ], [ %t333, %logic.rend3197 ] - br label %logic.rend3198 -logic.rend3198: - br label %logic.end3189 -logic.end3189: - %t335 = phi i1 [ false, %logic.from3187 ], [ %t334, %logic.rend3198 ] - br i1 %t335, label %then3199, label %endif3201 -then3199: - %t336 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.2021, i64 34, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a337 - %t341 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t340, ptr %a263 - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - br label %endif3201 -endif3201: - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Node, ptr %a4 - %t345 = load { ptr, i64, i64 }, ptr %a263 - call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t345) - %t346 = load %S.gen.Val, ptr %a2 - store %S.gen.Val %t346, ptr %a347 - call void @finch.copy.S_gen_Val(ptr %a348, ptr %a347) - %t349 = load %S.gen.Val, ptr %a348 - call void @finch_str_drop(ptr %a263) - ret %S.gen.Val %t349 -} - -define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic3202, label %ok3203 -panic3202: - call void @finch_panic(ptr @.str.2022, i64 1346, ptr @.str.2023) - unreachable -ok3203: - %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.cond3204 -for.cond3204: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body3205, label %for.end3207 -for.body3205: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic3208, label %ok3209 -panic3208: - call void @finch_panic(ptr @.str.2024, i64 1347, ptr @.str.2025) - unreachable -ok3209: - %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 %panic3210, label %ok3211 -panic3210: - call void @finch_panic(ptr @.str.2026, i64 1348, ptr @.str.2027) - unreachable -ok3211: - %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 %range3212, label %inrange3213 -range3212: - call void @finch_panic_index(ptr @.str.2028, i64 1348, i64 %t23, i64 %t25) - unreachable -inrange3213: - %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.cond3214 -for.cond3214: - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, %t31 - br i1 %t34, label %for.body3215, label %for.end3217 -for.body3215: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic3218, label %ok3219 -panic3218: - call void @finch_panic(ptr @.str.2029, i64 1349, ptr @.str.2030) - unreachable -ok3219: - %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 %range3220, label %inrange3221 -range3220: - call void @finch_panic_index(ptr @.str.2031, i64 1349, i64 %t38, i64 %t40) - unreachable -inrange3221: - %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 %range3222, label %inrange3223 -range3222: - call void @finch_panic_index(ptr @.str.2032, i64 1349, i64 %t45, i64 %t47) - unreachable -inrange3223: - %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 %then3224, label %endif3226 -then3224: - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic3227, label %ok3228 -panic3227: - call void @finch_panic(ptr @.str.2033, i64 1350, ptr @.str.2034) - unreachable -ok3228: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 44 - %t61 = load i1, ptr %t60 - br label %logic.from3229 -logic.from3229: - br i1 %t61, label %logic.rhs3230, label %logic.end3231 -logic.rhs3230: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3232, label %ok3233 -panic3232: - call void @finch_panic(ptr @.str.2035, i64 1350, ptr @.str.2036) - unreachable -ok3233: - %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 %range3234, label %inrange3235 -range3234: - call void @finch_panic_index(ptr @.str.2037, i64 1350, i64 %t65, i64 %t67) - unreachable -inrange3235: - %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 %range3236, label %inrange3237 -range3236: - call void @finch_panic_index(ptr @.str.2038, i64 1350, i64 %t72, i64 %t74) - unreachable -inrange3237: - %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 %panic3238, label %ok3239 -panic3238: - call void @finch_panic(ptr @.str.2039, i64 1350, ptr @.str.2040) - unreachable -ok3239: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 45 - %t83 = load i64, ptr %t82 - %t84 = icmp sge i64 %t79, %t83 - br label %logic.rend3240 -logic.rend3240: - br label %logic.end3231 -logic.end3231: - %t85 = phi i1 [ false, %logic.from3229 ], [ %t84, %logic.rend3240 ] - br i1 %t85, label %then3241, label %endif3243 -then3241: - br label %for.step3216 -endif3243: - %t86 = load i64, ptr %a19 - %t87 = mul i64 %t86, 100000 - %t88 = load i64, ptr %a32 - %t89 = add i64 %t87, %t88 - ret i64 %t89 -endif3226: - br label %for.step3216 -for.step3216: - %t90 = load i64, ptr %a32 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a32 - br label %for.cond3214 -for.end3217: - br label %for.step3206 -for.step3206: - %t92 = load i64, ptr %a8 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a8 - br label %for.cond3204 -for.end3207: - 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 7 - %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 7 - 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 %panic3244, label %ok3245 -panic3244: - call void @finch_panic(ptr @.str.2041, i64 1361, ptr @.str.2042) - unreachable -ok3245: - %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 %range3246, label %inrange3247 -range3246: - call void @finch_panic_index(ptr @.str.2043, i64 1361, i64 %t7, i64 %t9) - unreachable -inrange3247: - %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 %range3248, label %inrange3249 -range3248: - call void @finch_panic_index(ptr @.str.2044, i64 1361, i64 %t15, i64 %t17) - unreachable -inrange3249: - %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 %panic3250, label %ok3251 -panic3250: - call void @finch_panic(ptr @.str.2045, i64 1365, ptr @.str.2046) - unreachable -ok3251: - %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.cond3252 -for.cond3252: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body3253, label %for.end3255 -for.body3253: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic3256, label %ok3257 -panic3256: - call void @finch_panic(ptr @.str.2047, i64 1366, ptr @.str.2048) - unreachable -ok3257: - %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 %range3258, label %inrange3259 -range3258: - call void @finch_panic_index(ptr @.str.2049, i64 1366, i64 %t15, i64 %t17) - unreachable -inrange3259: - %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.from3260 -logic.from3260: - br i1 %t27, label %logic.rhs3261, label %logic.end3262 -logic.rhs3261: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic3263, label %ok3264 -panic3263: - call void @finch_panic(ptr @.str.2050, i64 1366, ptr @.str.2051) - unreachable -ok3264: - %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 %range3265, label %inrange3266 -range3265: - call void @finch_panic_index(ptr @.str.2052, i64 1366, i64 %t31, i64 %t33) - unreachable -inrange3266: - %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.rend3267 -logic.rend3267: - br label %logic.end3262 -logic.end3262: - %t44 = phi i1 [ false, %logic.from3260 ], [ %t43, %logic.rend3267 ] - br label %logic.from3268 -logic.from3268: - br i1 %t44, label %logic.rhs3269, label %logic.end3270 -logic.rhs3269: - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic3271, label %ok3272 -panic3271: - call void @finch_panic(ptr @.str.2053, i64 1366, ptr @.str.2054) - unreachable -ok3272: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 15 - %t48 = load i64, ptr %a9 - %t49 = load { ptr, i64, i64 }, ptr %t47 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range3273, label %inrange3274 -range3273: - call void @finch_panic_index(ptr @.str.2055, i64 1366, i64 %t48, i64 %t50) - unreachable -inrange3274: - %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.rend3275 -logic.rend3275: - br label %logic.end3270 -logic.end3270: - %t58 = phi i1 [ false, %logic.from3268 ], [ %t57, %logic.rend3275 ] - br i1 %t58, label %then3276, label %endif3278 -then3276: - %t59 = load i64, ptr %a9 - ret i64 %t59 -endif3278: - br label %for.step3254 -for.step3254: - %t60 = load i64, ptr %a9 - %t61 = add i64 %t60, 1 - store i64 %t61, ptr %a9 - br label %for.cond3252 -for.end3255: - 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 %panic3279, label %ok3280 -panic3279: - call void @finch_panic(ptr @.str.2056, i64 1374, ptr @.str.2057) - unreachable -ok3280: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 15 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 - %t9 = load i64, ptr %t8 - store i64 0, ptr %a10 - br label %for.cond3281 -for.cond3281: - %t11 = load i64, ptr %a10 - %t12 = icmp slt i64 %t11, %t9 - br i1 %t12, label %for.body3282, label %for.end3284 -for.body3282: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic3285, label %ok3286 -panic3285: - call void @finch_panic(ptr @.str.2058, i64 1375, ptr @.str.2059) - unreachable -ok3286: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 15 - %t16 = load i64, ptr %a10 - %t17 = load { ptr, i64, i64 }, ptr %t15 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range3287, label %inrange3288 -range3287: - call void @finch_panic_index(ptr @.str.2060, i64 1375, i64 %t16, i64 %t18) - unreachable -inrange3288: - %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.from3289 -logic.from3289: - br i1 %t28, label %logic.rhs3290, label %logic.end3291 -logic.rhs3290: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3292, label %ok3293 -panic3292: - call void @finch_panic(ptr @.str.2061, i64 1375, ptr @.str.2062) - unreachable -ok3293: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 - %t32 = load i64, ptr %a10 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3294, label %inrange3295 -range3294: - call void @finch_panic_index(ptr @.str.2063, i64 1375, i64 %t32, i64 %t34) - unreachable -inrange3295: - %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.rend3296 -logic.rend3296: - br label %logic.end3291 -logic.end3291: - %t45 = phi i1 [ false, %logic.from3289 ], [ %t44, %logic.rend3296 ] - br label %logic.from3297 -logic.from3297: - br i1 %t45, label %logic.rhs3298, label %logic.end3299 -logic.rhs3298: - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic3300, label %ok3301 -panic3300: - call void @finch_panic(ptr @.str.2064, i64 1375, ptr @.str.2065) - unreachable -ok3301: - %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 15 - %t49 = load i64, ptr %a10 - %t50 = load { ptr, i64, i64 }, ptr %t48 - %t51 = extractvalue { ptr, i64, i64 } %t50, 1 - %t52 = icmp uge i64 %t49, %t51 - br i1 %t52, label %range3302, label %inrange3303 -range3302: - call void @finch_panic_index(ptr @.str.2066, i64 1375, i64 %t49, i64 %t51) - unreachable -inrange3303: - %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.rend3304 -logic.rend3304: - br label %logic.end3299 -logic.end3299: - %t62 = phi i1 [ false, %logic.from3297 ], [ %t61, %logic.rend3304 ] - br i1 %t62, label %then3305, label %endif3307 -then3305: - %t63 = load i64, ptr %a10 - ret i64 %t63 -endif3307: - br label %for.step3283 -for.step3283: - %t64 = load i64, ptr %a10 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a10 - br label %for.cond3281 -for.end3284: - 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.2067, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2068, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.2069, i64 3, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.2070, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.2071, i64 4, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.2072, i64 5, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.2073, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.2074, i64 9, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.2075, i64 10, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.2076, i64 11, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.2077, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.2078, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.2079, i64 5, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.2080, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.2081, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.2082, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.2083, i64 11, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.2084, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.2085, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.2086, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.2087, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.2088, i64 2, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.2089, i64 3, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 - store { ptr, i64, i64 } { ptr @.str.2090, i64 3, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24 - store { ptr, i64, i64 } { ptr @.str.2091, i64 3, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 - store { ptr, i64, i64 } { ptr @.str.2092, i64 3, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 - store { ptr, i64, i64 } { ptr @.str.2093, i64 3, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27 - store { ptr, i64, i64 } { ptr @.str.2094, 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.cond3308 -find.cond3308: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t39 - br i1 %t43, label %find.body3309, label %find.end3312 -find.body3309: - %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.hit3310, label %find.next3311 -find.hit3310: - store i64 %t42, ptr %a38 - br label %find.end3312 -find.next3311: - %t50 = add i64 %t42, 1 - store i64 %t50, ptr %a41 - br label %find.cond3308 -find.end3312: - %t51 = load i64, ptr %a38 - %t52 = icmp sge i64 %t51, 0 - call void @finch.drop.arr_str(ptr %a35) - ret i1 %t52 -} - -define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5, i1 %p6) { -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 - %a7 = alloca i1, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a93 = alloca i1, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca %S.ast.Node, align 16 - %a238 = alloca %S.ast.Node, align 16 - %a240 = alloca %S.ast.Node, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %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 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } %p4, ptr %a5 - store i1 %p5, ptr %a6 - store i1 %p6, ptr %a7 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a3 - %t10 = call i64 @finch.gen.lookup(ptr %t8, { ptr, i64, i64 } %t9) - %t11 = icmp sge i64 %t10, 0 - br label %logic.from3313 -logic.from3313: - br i1 %t11, label %logic.rhs3314, label %logic.end3315 -logic.rhs3314: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.2095, i64 3, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp eq i32 %t15, 0 - br label %logic.rend3316 -logic.rend3316: - br label %logic.end3315 -logic.end3315: - %t17 = phi i1 [ false, %logic.from3313 ], [ %t16, %logic.rend3316 ] - br i1 %t17, label %then3317, label %endif3319 -then3317: - %t18 = load ptr, ptr %a1 - %t19 = load %S.ast.Node, ptr %a2 - %t20 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2096, i64 18, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2097, i64 21, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - br label %endif3319 -endif3319: - %t31 = load ptr, ptr %a1 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic3320, label %ok3321 -panic3320: - call void @finch_panic(ptr @.str.2098, i64 1393, ptr @.str.2099) - unreachable -ok3321: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 14 - %t35 = load { ptr, i64, i64 }, ptr %t34 - %t36 = load { ptr, i64, i64 }, ptr %a3 - %t37 = call i64 @finch.gen.findFn(ptr %t31, { ptr, i64, i64 } %t35, { ptr, i64, i64 } %t36) - %t38 = icmp sge i64 %t37, 0 - br i1 %t38, label %then3322, label %endif3324 -then3322: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - %t41 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2100, i64 1, i64 0 }, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.2101, i64 35, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif3324 -endif3324: - %t52 = load { ptr, i64, i64 }, ptr %a3 - %t53 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t52) - br i1 %t53, label %then3325, label %endif3327 -then3325: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2102, i64 1, i64 0 }, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.2103, i64 38, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } %t65) - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_drop(ptr %a66) - br label %endif3327 -endif3327: - %t67 = load ptr, ptr %a1 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - %t71 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t67, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t71, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a4 - %t77 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t75, %S.ast.Type %t76) - %t78 = load { ptr, i64, i64 }, ptr %a5 - %t79 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.store(ptr %t74, { ptr, i64, i64 } %t77, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3328, label %ok3329 -panic3328: - call void @finch_panic(ptr @.str.2104, i64 1401, ptr @.str.2105) - unreachable -ok3329: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 10 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - store i64 %t86, ptr %a87 - %t88 = load i1, ptr %a7 - br label %logic.from3330 -logic.from3330: - br i1 %t88, label %logic.rhs3331, label %logic.end3332 -logic.rhs3331: - %t89 = load ptr, ptr %a1 - %t90 = load %S.ast.Type, ptr %a4 - %t91 = call i1 @finch.gen.owning(ptr %t89, %S.ast.Type %t90) - br label %logic.rend3333 -logic.rend3333: - br label %logic.end3332 -logic.end3332: - %t92 = phi i1 [ false, %logic.from3330 ], [ %t91, %logic.rend3333 ] - store i1 %t92, ptr %a93 - %t94 = load i1, ptr %a93 - br i1 %t94, label %then3334, label %endif3336 -then3334: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic3337, label %ok3338 -panic3337: - call void @finch_panic(ptr @.str.2106, i64 1404, ptr @.str.2107) - unreachable -ok3338: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 10 - %t98 = load i64, ptr %a87 - %t99 = load { ptr, i64, i64 }, ptr %t97 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range3339, label %inrange3340 -range3339: - call void @finch_panic_index(ptr @.str.2108, i64 1404, i64 %t98, i64 %t100) - unreachable -inrange3340: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.gen.Scope, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.gen.Scope, ptr %t103, i32 0, i32 3 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = insertvalue %S.gen.Cleanup zeroinitializer, i1 false, 0 - %t107 = load ptr, ptr %a1 - %t108 = icmp eq ptr %t107, null - br i1 %t108, label %panic3341, label %ok3342 -panic3341: - call void @finch_panic(ptr @.str.2109, i64 1404, ptr @.str.2110) - unreachable -ok3342: - %t109 = getelementptr inbounds %S.gen.Gen, ptr %t107, i32 0, i32 10 - %t110 = load i64, ptr %a87 - %t111 = load { ptr, i64, i64 }, ptr %t109 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range3343, label %inrange3344 -range3343: - call void @finch_panic_index(ptr @.str.2111, i64 1404, i64 %t110, i64 %t112) - unreachable -inrange3344: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.gen.Scope, ptr %t114, i64 %t110 - %t116 = getelementptr inbounds %S.gen.Scope, ptr %t115, i32 0, i32 0 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i32 0, i32 1 - %t118 = load i64, ptr %t117 - %t119 = insertvalue %S.gen.Cleanup %t106, i64 %t118, 1 - %t120 = load i64, ptr %t105 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t121, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %t104 - %t123 = getelementptr inbounds %S.gen.Cleanup, ptr %t122, i64 %t120 - store %S.gen.Cleanup %t119, ptr %t123 - store i64 %t121, ptr %t105 - br label %endif3336 -endif3336: - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic3345, label %ok3346 -panic3345: - call void @finch_panic(ptr @.str.2112, i64 1406, ptr @.str.2113) - unreachable -ok3346: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 10 - %t127 = load i64, ptr %a87 - %t128 = load { ptr, i64, i64 }, ptr %t126 - %t129 = extractvalue { ptr, i64, i64 } %t128, 1 - %t130 = icmp uge i64 %t127, %t129 - br i1 %t130, label %range3347, label %inrange3348 -range3347: - call void @finch_panic_index(ptr @.str.2114, i64 1406, i64 %t127, i64 %t129) - unreachable -inrange3348: - %t131 = extractvalue { ptr, i64, i64 } %t128, 0 - %t132 = getelementptr inbounds %S.gen.Scope, ptr %t131, i64 %t127 - %t133 = getelementptr inbounds %S.gen.Scope, ptr %t132, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } %t138, 0 - %t140 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - %t144 = insertvalue %S.gen.Var %t139, %S.ast.Type %t143, 1 - %t145 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t145, ptr %a146 - call void @finch_str_copy(ptr %a147, ptr %a146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - %t149 = insertvalue %S.gen.Var %t144, { ptr, i64, i64 } %t148, 2 - %t150 = load i1, ptr %a6 - %t151 = insertvalue %S.gen.Var %t149, i1 %t150, 3 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic3349, label %ok3350 -panic3349: - call void @finch_panic(ptr @.str.2115, i64 1406, ptr @.str.2116) - unreachable -ok3350: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 25 - %t155 = load i64, ptr %t154 - %t156 = insertvalue %S.gen.Var %t151, i64 %t155, 4 - %t157 = load i1, ptr %a93 - %t158 = insertvalue %S.gen.Var %t156, i1 %t157, 5 - %t159 = load ptr, ptr %a1 - %t160 = icmp eq ptr %t159, null - br i1 %t160, label %panic3351, label %ok3352 -panic3351: - call void @finch_panic(ptr @.str.2117, i64 1406, ptr @.str.2118) - unreachable -ok3352: - %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 1 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t163 = load i64, ptr %t162 - %t164 = load { ptr, i64, i64 }, ptr %t161 - %t165 = extractvalue { ptr, i64, i64 } %t164, 1 - %t166 = icmp uge i64 %t163, %t165 - br i1 %t166, label %range3353, label %inrange3354 -range3353: - call void @finch_panic_index(ptr @.str.2119, i64 1406, i64 %t163, i64 %t165) - unreachable -inrange3354: - %t167 = extractvalue { ptr, i64, i64 } %t164, 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i64 %t163 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_copy(ptr %a171, ptr %a170) - %t172 = load { ptr, i64, i64 }, ptr %a171 - %t173 = insertvalue %S.gen.Var %t158, { ptr, i64, i64 } %t172, 7 - %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t175 = load i64, ptr %t174 - %t176 = insertvalue %S.gen.Var %t173, i64 %t175, 8 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t178 = load i64, ptr %t177 - %t179 = insertvalue %S.gen.Var %t176, i64 %t178, 9 - %t180 = load i64, ptr %t134 - %t181 = add i64 %t180, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t182 = load ptr, ptr %t133 - %t183 = getelementptr inbounds %S.gen.Var, ptr %t182, i64 %t180 - store %S.gen.Var %t179, ptr %t183 - store i64 %t181, ptr %t134 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3355, label %ok3356 -panic3355: - call void @finch_panic(ptr @.str.2120, i64 1407, ptr @.str.2121) - unreachable -ok3356: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 25 - %t187 = load i64, ptr %t186 - %t188 = add i64 %t187, 1 - store i64 %t188, ptr %t186 - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a3 - %t192 = load %S.ast.Type, ptr %a4 - %t193 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.dbgVariable(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t191, %S.ast.Type %t192, { ptr, i64, i64 } %t193) - %t194 = load ptr, ptr %a1 - %t195 = icmp eq ptr %t194, null - br i1 %t195, label %panic3357, label %ok3358 -panic3357: - call void @finch_panic(ptr @.str.2122, i64 1409, ptr @.str.2123) - unreachable -ok3358: - %t196 = getelementptr inbounds %S.gen.Gen, ptr %t194, i32 0, i32 28 - %t197 = load i1, ptr %t196 - br label %logic.from3359 -logic.from3359: - br i1 %t197, label %logic.rhs3360, label %logic.end3361 -logic.rhs3360: - %t198 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2124, i64 3, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp eq i32 %t201, 0 - br label %logic.rend3362 -logic.rend3362: - br label %logic.end3361 -logic.end3361: - %t203 = phi i1 [ false, %logic.from3359 ], [ %t202, %logic.rend3362 ] - br label %logic.from3363 -logic.from3363: - br i1 %t203, label %logic.rhs3364, label %logic.end3365 -logic.rhs3364: - %t204 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t204, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.2126, i64 1, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_starts(ptr %a205, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - %t210 = xor i1 %t209, true - br label %logic.rend3366 -logic.rend3366: - br label %logic.end3365 -logic.end3365: - %t211 = phi i1 [ false, %logic.from3363 ], [ %t210, %logic.rend3366 ] - br i1 %t211, label %then3367, label %endif3369 -then3367: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic3370, label %ok3371 -panic3370: - call void @finch_panic(ptr @.str.2127, i64 1410, ptr @.str.2128) - unreachable -ok3371: - %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 0 - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3372, label %ok3373 -panic3372: - call void @finch_panic(ptr @.str.2129, i64 1410, ptr @.str.2130) - unreachable -ok3373: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 13 - %t218 = getelementptr inbounds %S.gen.FnSig, ptr %t217, i32 0, i32 16 - %t219 = load i64, ptr %t218 - %t220 = load { ptr, i64, i64 }, ptr %t214 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range3374, label %inrange3375 -range3374: - call void @finch_panic_index(ptr @.str.2131, i64 1410, i64 %t219, i64 %t221) - unreachable -inrange3375: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Program, ptr %t223, i64 %t219 - %t225 = getelementptr inbounds %S.ast.Program, ptr %t224, i32 0, i32 8 - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic3376, label %ok3377 -panic3376: - call void @finch_panic(ptr @.str.2132, i64 1410, ptr @.str.2133) - unreachable -ok3377: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 13 - %t229 = getelementptr inbounds %S.gen.FnSig, ptr %t228, i32 0, i32 17 - %t230 = load i64, ptr %t229 - %t231 = load { ptr, i64, i64 }, ptr %t225 - %t232 = extractvalue { ptr, i64, i64 } %t231, 1 - %t233 = icmp uge i64 %t230, %t232 - br i1 %t233, label %range3378, label %inrange3379 -range3378: - call void @finch_panic_index(ptr @.str.2134, i64 1410, i64 %t230, i64 %t232) - unreachable -inrange3379: - %t234 = extractvalue { ptr, i64, i64 } %t231, 0 - %t235 = getelementptr inbounds %S.ast.Node, ptr %t234, i64 %t230 - %t236 = load %S.ast.Node, ptr %t235 - store %S.ast.Node %t236, ptr %a237 - call void @finch.copy.S_ast_Node(ptr %a238, ptr %a237) - %t239 = load %S.ast.Node, ptr %a238 - store %S.ast.Node %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = icmp eq ptr %t241, null - br i1 %t242, label %panic3380, label %ok3381 -panic3380: - call void @finch_panic(ptr @.str.2135, i64 1411, ptr @.str.2136) - unreachable -ok3381: - %t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 29 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2137, i64 3, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.2138, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = load %S.ast.Type, ptr %a4 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.2139, i64 1, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic3382, label %ok3383 -panic3382: - call void @finch_panic(ptr @.str.2140, i64 1411, ptr @.str.2141) - unreachable -ok3383: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t272 = load i64, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %t270 - %t274 = extractvalue { ptr, i64, i64 } %t273, 1 - %t275 = icmp uge i64 %t272, %t274 - br i1 %t275, label %range3384, label %inrange3385 -range3384: - call void @finch_panic_index(ptr @.str.2142, i64 1411, i64 %t272, i64 %t274) - unreachable -inrange3385: - %t276 = extractvalue { ptr, i64, i64 } %t273, 0 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i64 %t272 - %t278 = load { ptr, i64, i64 }, ptr %t277 - store { ptr, i64, i64 } %t267, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t267, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.2143, i64 1, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t290 = load i64, ptr %t289 - call void @finch_str_from_int(ptr %a291, i64 %t290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a294 - store { ptr, i64, i64 } %t292, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t288, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t292, ptr %a297 - call void @finch_str_drop(ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a293 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.2144, i64 1, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t305 = load i64, ptr %t304 - call void @finch_str_from_int(ptr %a306, i64 %t305) - %t307 = load { ptr, i64, i64 }, ptr %a306 - store { ptr, i64, i64 } %t303, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t303, ptr %a311 - call void @finch_str_drop(ptr %a311) - store { ptr, i64, i64 } %t307, ptr %a312 - call void @finch_str_drop(ptr %a312) - %t313 = load { ptr, i64, i64 }, ptr %a308 - store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.2145, i64 1, i64 0 }, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t313, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic3386, label %ok3387 -panic3386: - call void @finch_panic(ptr @.str.2146, i64 1411, ptr @.str.2147) - unreachable -ok3387: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 1 - %t322 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 13 - %t323 = load i64, ptr %t322 - %t324 = load { ptr, i64, i64 }, ptr %t321 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range3388, label %inrange3389 -range3388: - call void @finch_panic_index(ptr @.str.2148, i64 1411, i64 %t323, i64 %t325) - unreachable -inrange3389: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t323 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t318, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t318, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t334, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.2149, i64 1, i64 0 }, ptr %a337 - call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) - store { ptr, i64, i64 } %t334, ptr %a338 - call void @finch_str_drop(ptr %a338) - %t339 = load { ptr, i64, i64 }, ptr %a335 - %t340 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 11 - %t341 = load i64, ptr %t340 - call void @finch_str_from_int(ptr %a342, i64 %t341) - %t343 = load { ptr, i64, i64 }, ptr %a342 - store { ptr, i64, i64 } %t339, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t339, ptr %a347 - call void @finch_str_drop(ptr %a347) - store { ptr, i64, i64 } %t343, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t349, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.2150, i64 1, i64 0 }, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t349, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a350 - %t355 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 14 - %t356 = load i64, ptr %t355 - call void @finch_str_from_int(ptr %a357, i64 %t356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t354, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - store { ptr, i64, i64 } %t354, ptr %a362 - call void @finch_str_drop(ptr %a362) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a359 - %t365 = load i64, ptr %t244 - %t366 = add i64 %t365, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t366, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t367 = load ptr, ptr %t243 - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t365 - store { ptr, i64, i64 } %t364, ptr %t368 - store i64 %t366, ptr %t244 - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t372 = load i64, ptr %t371 - %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t374 = load i64, ptr %t373 - %t375 = load %S.ast.Type, ptr %a4 - %t376 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t375) - store { ptr, i64, i64 } { ptr @.str.2151, i64 9, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t376, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.2152, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - %t387 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t386, ptr %a389 - store { ptr, i64, i64 } %t387, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t386, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t392, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2153, i64 4, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.noteRef(ptr %t369, %S.ast.Node %t370, i64 %t372, i64 %t374, { ptr, i64, i64 } %t397, { ptr, i64, i64 } { ptr @.str.2154, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - call void @finch.drop.S_ast_Node(ptr %a240) - br label %endif3369 -endif3369: - %t399 = load { ptr, i64, i64 }, ptr %a73 - ret { ptr, i64, i64 } %t399 -} - -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 %panic3390, label %ok3391 -panic3390: - call void @finch_panic(ptr @.str.2155, i64 1418, ptr @.str.2156) - unreachable -ok3391: - %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.drop.S_gen_Var(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_gen_Var(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond3403 -n.cond3403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body3404, label %n.end3405 -n.body3404: - %t7 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Var(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond3403 -n.end3405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Cleanup(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Scope(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_gen_Var(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_gen_Cleanup(ptr %t4) - ret void -} - -define internal void @finch.gen.popScope(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a24 = alloca %S.gen.Scope, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3392, label %ok3393 -panic3392: - call void @finch_panic(ptr @.str.2157, i64 1424, ptr @.str.2158) - unreachable -ok3393: - %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 %then3394, label %endif3396 -then3394: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic3397, label %ok3398 -panic3397: - call void @finch_panic(ptr @.str.2159, i64 1425, ptr @.str.2160) - unreachable -ok3398: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load i64, ptr %t11 - %t13 = sub i64 %t12, 1 - call void @finch.gen.runCleanups(ptr %t7, i64 %t13) - br label %endif3396 -endif3396: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3399, label %ok3400 -panic3399: - call void @finch_panic(ptr @.str.2161, i64 1427, ptr @.str.2162) - unreachable -ok3400: - %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 %panic3401, label %ok3402 -panic3401: - call void @finch_panic(ptr @.str.2163, i64 1427, ptr @.str.2164) - unreachable -ok3402: - %t20 = sub i64 %t18, 1 - %t21 = load ptr, ptr %t16 - %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 - %t23 = load %S.gen.Scope, ptr %t22 - store i64 %t20, ptr %t17 - store %S.gen.Scope %t23, ptr %a24 - call void @finch.drop.S_gen_Scope(ptr %a24) - ret void -} - -define internal void @finch.gen.runCleanups(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a15 = alloca i64, align 16 - %a37 = alloca %S.gen.Cleanup, align 16 - %a59 = alloca %S.gen.Var, align 16 - %a60 = alloca %S.gen.Var, align 16 - %a62 = alloca %S.gen.Var, align 16 - %a75 = alloca i1, align 16 - %a80 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3406, label %ok3407 -panic3406: - call void @finch_panic(ptr @.str.2165, i64 1432, ptr @.str.2166) - unreachable -ok3407: - %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 %range3408, label %inrange3409 -range3408: - call void @finch_panic_index(ptr @.str.2167, i64 1432, i64 %t6, i64 %t8) - unreachable -inrange3409: - %t10 = extractvalue { ptr, i64, i64 } %t7, 0 - %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 - %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i32 0, i32 3 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - store i64 %t14, ptr %a15 - br label %while.cond3410 -while.cond3410: - %t16 = load i64, ptr %a15 - %t17 = icmp sgt i64 %t16, 0 - br i1 %t17, label %while.body3411, label %while.end3412 -while.body3411: - %t18 = load i64, ptr %a15 - %t19 = sub i64 %t18, 1 - store i64 %t19, ptr %a15 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic3413, label %ok3414 -panic3413: - call void @finch_panic(ptr @.str.2168, i64 1435, ptr @.str.2169) - unreachable -ok3414: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 - %t23 = load i64, ptr %a2 - %t24 = load { ptr, i64, i64 }, ptr %t22 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range3415, label %inrange3416 -range3415: - call void @finch_panic_index(ptr @.str.2170, i64 1435, i64 %t23, i64 %t25) - unreachable -inrange3416: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.gen.Scope, ptr %t27, i64 %t23 - %t29 = getelementptr inbounds %S.gen.Scope, ptr %t28, i32 0, i32 3 - %t30 = load i64, ptr %a15 - %t31 = load { ptr, i64, i64 }, ptr %t29 - %t32 = extractvalue { ptr, i64, i64 } %t31, 1 - %t33 = icmp uge i64 %t30, %t32 - br i1 %t33, label %range3417, label %inrange3418 -range3417: - call void @finch_panic_index(ptr @.str.2171, i64 1435, i64 %t30, i64 %t32) - unreachable -inrange3418: - %t34 = extractvalue { ptr, i64, i64 } %t31, 0 - %t35 = getelementptr inbounds %S.gen.Cleanup, ptr %t34, i64 %t30 - %t36 = load %S.gen.Cleanup, ptr %t35 - store %S.gen.Cleanup %t36, ptr %a37 - %t38 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 0 - %t39 = load i1, ptr %t38 - %t40 = xor i1 %t39, true - br i1 %t40, label %then3419, label %endif3421 -then3419: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic3422, label %ok3423 -panic3422: - call void @finch_panic(ptr @.str.2172, i64 1437, ptr @.str.2173) - unreachable -ok3423: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 10 - %t44 = load i64, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %t43 - %t46 = extractvalue { ptr, i64, i64 } %t45, 1 - %t47 = icmp uge i64 %t44, %t46 - br i1 %t47, label %range3424, label %inrange3425 -range3424: - call void @finch_panic_index(ptr @.str.2174, i64 1437, i64 %t44, i64 %t46) - unreachable -inrange3425: - %t48 = extractvalue { ptr, i64, i64 } %t45, 0 - %t49 = getelementptr inbounds %S.gen.Scope, ptr %t48, i64 %t44 - %t50 = getelementptr inbounds %S.gen.Scope, ptr %t49, i32 0, i32 0 - %t51 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = load { ptr, i64, i64 }, ptr %t50 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 %t52, %t54 - br i1 %t55, label %range3426, label %inrange3427 -range3426: - call void @finch_panic_index(ptr @.str.2175, i64 1437, i64 %t52, i64 %t54) - unreachable -inrange3427: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds %S.gen.Var, ptr %t56, i64 %t52 - %t58 = load %S.gen.Var, ptr %t57 - store %S.gen.Var %t58, ptr %a59 - call void @finch.copy.S_gen_Var(ptr %a60, ptr %a59) - %t61 = load %S.gen.Var, ptr %a60 - store %S.gen.Var %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 6 - %t64 = load i1, ptr %t63 - %t65 = xor i1 %t64, true - br i1 %t65, label %then3428, label %endif3430 -then3428: - %t66 = load ptr, ptr %a1 - %t67 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 2 - %t68 = load { ptr, i64, i64 }, ptr %t67 - %t69 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 1 - %t70 = load %S.ast.Type, ptr %t69 - call void @finch.gen.dropAt(ptr %t66, { ptr, i64, i64 } %t68, %S.ast.Type %t70) - br label %endif3430 -endif3430: - call void @finch.drop.S_gen_Var(ptr %a62) - br label %while.cond3410 -endif3421: - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3431, label %ok3432 -panic3431: - call void @finch_panic(ptr @.str.2176, i64 1443, ptr @.str.2177) - unreachable -ok3432: - %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 44 - %t74 = load i1, ptr %t73 - store i1 %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic3433, label %ok3434 -panic3433: - call void @finch_panic(ptr @.str.2178, i64 1444, ptr @.str.2179) - unreachable -ok3434: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 45 - %t79 = load i64, ptr %t78 - store i64 %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3435, label %ok3436 -panic3435: - call void @finch_panic(ptr @.str.2180, i64 1445, ptr @.str.2181) - unreachable -ok3436: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 44 - store i1 true, ptr %t83 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic3437, label %ok3438 -panic3437: - call void @finch_panic(ptr @.str.2182, i64 1446, ptr @.str.2183) - unreachable -ok3438: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 10 - %t87 = load i64, ptr %a2 - %t88 = load { ptr, i64, i64 }, ptr %t86 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range3439, label %inrange3440 -range3439: - call void @finch_panic_index(ptr @.str.2184, i64 1446, i64 %t87, i64 %t89) - unreachable -inrange3440: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.gen.Scope, ptr %t91, i64 %t87 - %t93 = getelementptr inbounds %S.gen.Scope, ptr %t92, i32 0, i32 2 - %t94 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t95 = load i64, ptr %t94 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range3441, label %inrange3442 -range3441: - call void @finch_panic_index(ptr @.str.2185, i64 1446, i64 %t95, i64 %t97) - unreachable -inrange3442: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds i64, ptr %t99, i64 %t95 - %t101 = load i64, ptr %t100 - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3443, label %ok3444 -panic3443: - call void @finch_panic(ptr @.str.2186, i64 1446, ptr @.str.2187) - unreachable -ok3444: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 45 - store i64 %t101, ptr %t104 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic3445, label %ok3446 -panic3445: - call void @finch_panic(ptr @.str.2188, i64 1447, ptr @.str.2189) - unreachable -ok3446: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 46 - %t108 = load i64, ptr %t107 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %t107 - %t110 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t110) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic3447, label %ok3448 -panic3447: - call void @finch_panic(ptr @.str.2190, i64 1449, ptr @.str.2191) - unreachable -ok3448: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 10 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range3449, label %inrange3450 -range3449: - call void @finch_panic_index(ptr @.str.2192, i64 1449, i64 %t115, i64 %t117) - unreachable -inrange3450: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.Scope, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.Scope, ptr %t120, i32 0, i32 1 - %t122 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = load { ptr, i64, i64 }, ptr %t121 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 %t123, %t125 - br i1 %t126, label %range3451, label %inrange3452 -range3451: - call void @finch_panic_index(ptr @.str.2193, i64 1449, i64 %t123, i64 %t125) - unreachable -inrange3452: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds %S.ast.Node, ptr %t127, i64 %t123 - %t129 = load %S.ast.Node, ptr %t128 - call void @finch.gen.stmt(ptr %t111, %S.ast.Node %t129) - %t130 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t130) - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic3453, label %ok3454 -panic3453: - call void @finch_panic(ptr @.str.2194, i64 1451, ptr @.str.2195) - unreachable -ok3454: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 46 - %t134 = load i64, ptr %t133 - %t135 = sub i64 %t134, 1 - store i64 %t135, ptr %t133 - %t136 = load i1, ptr %a75 - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic3455, label %ok3456 -panic3455: - call void @finch_panic(ptr @.str.2196, i64 1452, ptr @.str.2197) - unreachable -ok3456: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 44 - store i1 %t136, ptr %t139 - %t140 = load i64, ptr %a80 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic3457, label %ok3458 -panic3457: - call void @finch_panic(ptr @.str.2198, i64 1453, ptr @.str.2199) - unreachable -ok3458: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 45 - store i64 %t140, ptr %t143 - br label %while.cond3410 -while.end3412: - 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 %panic3459, label %ok3460 -panic3459: - call void @finch_panic(ptr @.str.2200, i64 1459, ptr @.str.2201) - unreachable -ok3460: - %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.cond3461 -while.cond3461: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body3462, label %while.end3463 -while.body3462: - %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.runCleanups(ptr %t14, i64 %t15) - br label %while.cond3461 -while.end3463: - 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 - call void @finch.gen.popScope(ptr %t2) - 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.2202, 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 %then3464, label %endif3466 -then3464: - %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 -endif3466: - %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.2203, 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.from3467 -logic.from3467: - br i1 %t18, label %logic.end3469, label %logic.rhs3468 -logic.rhs3468: - %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.2204, 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.rend3470 -logic.rend3470: - br label %logic.end3469 -logic.end3469: - %t25 = phi i1 [ true, %logic.from3467 ], [ %t24, %logic.rend3470 ] - br i1 %t25, label %then3471, label %endif3473 -then3471: - %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 %range3474, label %inrange3475 -range3474: - call void @finch_panic_index(ptr @.str.2205, i64 1477, i64 0, i64 %t28) - unreachable -inrange3475: - %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 -endif3473: - ret { ptr, i64, i64 } { ptr @.str.2206, 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 - %a37 = 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 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca i64, align 16 - %a72 = alloca i64, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a143 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t5 = call ptr @finch_alloc(i64 %t4) - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 0 - store { ptr, i64, i64 } { ptr @.str.2207, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 - store { ptr, i64, i64 } { ptr @.str.2208, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 - store { ptr, i64, i64 } { ptr @.str.2209, i64 6, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3 - store { ptr, i64, i64 } { ptr @.str.2210, i64 6, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 - store { ptr, i64, i64 } { ptr @.str.2211, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 - store { ptr, i64, i64 } { ptr @.str.2212, i64 6, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6 - store { ptr, i64, i64 } { ptr @.str.2213, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 - store { ptr, i64, i64 } { ptr @.str.2214, 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.2215, 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.from3476 -logic.from3476: - br i1 %t23, label %logic.rhs3477, label %logic.end3478 -logic.rhs3477: - %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 %range3479, label %inrange3480 -range3479: - call void @finch_panic_index(ptr @.str.2216, i64 1484, i64 0, i64 %t26) - unreachable -inrange3480: - %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 - store { ptr, i64, i64 } %t31, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %logic.rend3481 -logic.rend3481: - br label %logic.end3478 -logic.end3478: - %t38 = phi i1 [ false, %logic.from3476 ], [ %t36, %logic.rend3481 ] - br i1 %t38, label %then3482, label %endif3484 -then3482: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3484: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2217, i64 6, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br label %logic.from3485 -logic.from3485: - br i1 %t44, label %logic.rhs3486, label %logic.end3487 -logic.rhs3486: - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t45 - %t50 = load ptr, ptr %a17 - store i64 0, ptr %a51 - br label %find.cond3488 -find.cond3488: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body3489, label %find.end3492 -find.body3489: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit3490, label %find.next3491 -find.hit3490: - store i64 %t52, ptr %a48 - br label %find.end3492 -find.next3491: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond3488 -find.end3492: - %t61 = load i64, ptr %a48 - %t62 = icmp sge i64 %t61, 0 - br label %logic.from3493 -logic.from3493: - br i1 %t62, label %logic.end3495, label %logic.rhs3494 -logic.rhs3494: - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic3496, label %ok3497 -panic3496: - call void @finch_panic(ptr @.str.2218, i64 1490, ptr @.str.2219) - unreachable -ok3497: - %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 24 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 - %t67 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store i64 -1, ptr %a69 - %t70 = load i64, ptr %t66 - %t71 = load ptr, ptr %t65 - store i64 0, ptr %a72 - br label %find.cond3498 -find.cond3498: - %t73 = load i64, ptr %a72 - %t74 = icmp slt i64 %t73, %t70 - br i1 %t74, label %find.body3499, label %find.end3502 -find.body3499: - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 %t73 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } %t68, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br i1 %t80, label %find.hit3500, label %find.next3501 -find.hit3500: - store i64 %t73, ptr %a69 - br label %find.end3502 -find.next3501: - %t81 = add i64 %t73, 1 - store i64 %t81, ptr %a72 - br label %find.cond3498 -find.end3502: - %t82 = load i64, ptr %a69 - %t83 = icmp sge i64 %t82, 0 - br label %logic.rend3503 -logic.rend3503: - br label %logic.end3495 -logic.end3495: - %t84 = phi i1 [ true, %logic.from3493 ], [ %t83, %logic.rend3503 ] - br label %logic.rend3504 -logic.rend3504: - br label %logic.end3487 -logic.end3487: - %t85 = phi i1 [ false, %logic.from3485 ], [ %t84, %logic.rend3504 ] - br label %logic.from3505 -logic.from3505: - br i1 %t85, label %logic.rhs3506, label %logic.end3507 -logic.rhs3506: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range3508, label %inrange3509 -range3508: - call void @finch_panic_index(ptr @.str.2220, i64 1490, i64 0, i64 %t88) - unreachable -inrange3509: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0 - %t92 = load %S.ast.Node, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t92) - %t94 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } %t94, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - store { ptr, i64, i64 } %t93, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %logic.rend3510 -logic.rend3510: - br label %logic.end3507 -logic.end3507: - %t100 = phi i1 [ false, %logic.from3505 ], [ %t98, %logic.rend3510 ] - br i1 %t100, label %then3511, label %endif3513 -then3511: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3513: - %t101 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2221, i64 4, i64 0 }, ptr %a104 - %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) - %t106 = icmp ne i32 %t105, 0 - br label %logic.from3514 -logic.from3514: - br i1 %t106, label %logic.rhs3515, label %logic.end3516 -logic.rhs3515: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2222, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend3517 -logic.rend3517: - br label %logic.end3516 -logic.end3516: - %t113 = phi i1 [ false, %logic.from3514 ], [ %t112, %logic.rend3517 ] - br label %logic.from3518 -logic.from3518: - br i1 %t113, label %logic.rhs3519, label %logic.end3520 -logic.rhs3519: - %t114 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp eq i64 %t116, 1 - br label %logic.rend3521 -logic.rend3521: - br label %logic.end3520 -logic.end3520: - %t118 = phi i1 [ false, %logic.from3518 ], [ %t117, %logic.rend3521 ] - br label %logic.from3522 -logic.from3522: - br i1 %t118, label %logic.rhs3523, label %logic.end3524 -logic.rhs3523: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 0, %t121 - br i1 %t122, label %range3525, label %inrange3526 -range3525: - call void @finch_panic_index(ptr @.str.2223, i64 1493, i64 0, i64 %t121) - unreachable -inrange3526: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds %S.ast.Node, ptr %t123, i64 0 - %t125 = load %S.ast.Node, ptr %t124 - %t126 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t125) - %t127 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } %t127, ptr %a129 - %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %logic.rend3527 -logic.rend3527: - br label %logic.end3524 -logic.end3524: - %t133 = phi i1 [ false, %logic.from3522 ], [ %t131, %logic.rend3527 ] - br i1 %t133, label %then3528, label %endif3530 -then3528: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3530: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - store i64 0, ptr %a135 - br label %each.cond3531 -each.cond3531: - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = load i64, ptr %a135 - %t139 = icmp slt i64 %t138, %t137 - br i1 %t139, label %each.body3532, label %each.end3534 -each.body3532: - %t140 = load ptr, ptr %t134 - %t141 = getelementptr inbounds %S.ast.Node, ptr %t140, i64 %t138 - %t142 = load %S.ast.Node, ptr %t141 - store %S.ast.Node %t142, ptr %a143 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - %t146 = load %S.ast.Node, ptr %a143 - %t147 = call i1 @finch.gen.mutates(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Node %t146) - br i1 %t147, label %then3535, label %endif3537 -then3535: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3537: - br label %each.step3533 -each.step3533: - %t148 = load i64, ptr %a135 - %t149 = add i64 %t148, 1 - store i64 %t149, ptr %a135 - br label %each.cond3531 -each.end3534: - call void @finch.drop.arr_str(ptr %a17) - 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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a64 = alloca %S.ast.Node, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca i64, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca i64, align 16 - %a224 = alloca %S.ast.Node, align 16 - %a225 = alloca %S.ast.Node, align 16 - %a227 = alloca %S.ast.Node, align 16 - %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 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca %S.gen.SumDef, align 16 - %a278 = alloca i64, align 16 - %a280 = alloca i64, align 16 - %a288 = alloca %S.ast.Node, align 16 - %a293 = alloca i64, align 16 - %a296 = alloca i64, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca %S.gen.SumDef, align 16 - %a374 = alloca %S.gen.SumDef, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = 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 - %a427 = alloca %S.gen.EnumDef, align 16 - %a428 = alloca i64, align 16 - %a430 = alloca i64, align 16 - %a438 = alloca %S.ast.Node, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca i64, align 16 - %a454 = alloca i64, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca i64, align 16 - %a498 = alloca i64, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca %S.gen.EnumDef, align 16 - %a563 = alloca %S.gen.EnumDef, align 16 - %a579 = alloca i64, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca i64, align 16 - %a629 = alloca i64, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca i64, align 16 - %a683 = alloca %S.ast.Node, align 16 - %a684 = alloca %S.ast.Node, align 16 - %a686 = alloca %S.ast.Node, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = 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 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca i1, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca i64, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = 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 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a929 = alloca i64, align 16 - %a932 = alloca i64, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a969 = 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 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1009 = 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 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca %S.gen.FnSig, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1072 = 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 - %a1085 = 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 - %a1090 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1096 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca { ptr, i64, i64 }, align 16 - %a1102 = 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 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca %S.ast.Type, align 16 - %a1126 = alloca i64, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1158 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1223 = alloca %S.gen.FnSig, align 16 - %a1224 = alloca %S.gen.FnSig, align 16 - %a1234 = alloca i1, align 16 - %a1241 = alloca i64, align 16 - %a1307 = alloca %S.ast.Node, align 16 - %a1308 = alloca %S.ast.Node, align 16 - %a1310 = alloca %S.ast.Node, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1363 = alloca i64, align 16 - %a1376 = alloca %S.gen.Template, align 16 - %a1377 = alloca %S.gen.Template, align 16 - %a1379 = alloca %S.gen.Template, align 16 - %a1407 = alloca %S.ast.Node, align 16 - %a1408 = alloca %S.ast.Node, align 16 - %a1410 = alloca %S.ast.Node, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca i64, align 16 - %a1494 = alloca %S.ast.Node, align 16 - %a1495 = alloca %S.ast.Node, align 16 - %a1497 = alloca %S.ast.Node, align 16 - %a1509 = alloca %S.ast.Node, align 16 - %a1510 = alloca %S.ast.Node, align 16 - %a1512 = alloca %S.ast.Node, align 16 - %a1525 = alloca i64, align 16 - %a1545 = alloca %S.ast.Type, align 16 - %a1546 = alloca %S.ast.Type, align 16 - %a1548 = 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 %panic3538, label %ok3539 -panic3538: - call void @finch_panic(ptr @.str.2224, i64 1507, ptr @.str.2225) - unreachable -ok3539: - %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.cond3540 -for.cond3540: - %t8 = load i64, ptr %a7 - %t9 = icmp slt i64 %t8, %t6 - br i1 %t9, label %for.body3541, label %for.end3543 -for.body3541: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic3544, label %ok3545 -panic3544: - call void @finch_panic(ptr @.str.2226, i64 1508, ptr @.str.2227) - unreachable -ok3545: - %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 %range3546, label %inrange3547 -range3546: - call void @finch_panic_index(ptr @.str.2228, i64 1508, i64 %t13, i64 %t15) - unreachable -inrange3547: - %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 %panic3548, label %ok3549 -panic3548: - call void @finch_panic(ptr @.str.2229, i64 1508, ptr @.str.2230) - unreachable -ok3549: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 14 - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_copy(ptr %a25, ptr %a24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - %t27 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t26, ptr %t23 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3550, label %ok3551 -panic3550: - call void @finch_panic(ptr @.str.2231, i64 1509, ptr @.str.2232) - unreachable -ok3551: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 0 - %t32 = load i64, ptr %a7 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3552, label %inrange3553 -range3552: - call void @finch_panic_index(ptr @.str.2233, i64 1509, i64 %t32, i64 %t34) - unreachable -inrange3553: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Program, ptr %t36, i64 %t32 - %t38 = getelementptr inbounds %S.ast.Program, ptr %t37, i32 0, i32 6 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 - %t40 = load i64, ptr %t39 - store i64 0, ptr %a41 - br label %for.cond3554 -for.cond3554: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body3555, label %for.end3557 -for.body3555: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic3558, label %ok3559 -panic3558: - call void @finch_panic(ptr @.str.2234, i64 1510, ptr @.str.2235) - unreachable -ok3559: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 0 - %t47 = load i64, ptr %a7 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range3560, label %inrange3561 -range3560: - call void @finch_panic_index(ptr @.str.2236, i64 1510, i64 %t47, i64 %t49) - unreachable -inrange3561: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i64 %t47 - %t53 = getelementptr inbounds %S.ast.Program, ptr %t52, i32 0, i32 6 - %t54 = load i64, ptr %a41 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range3562, label %inrange3563 -range3562: - call void @finch_panic_index(ptr @.str.2237, i64 1510, i64 %t54, i64 %t56) - unreachable -inrange3563: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - store %S.ast.Node %t60, ptr %a61 - call void @finch.copy.S_ast_Node(ptr %a62, ptr %a61) - %t63 = load %S.ast.Node, ptr %a62 - store %S.ast.Node %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic3564, label %ok3565 -panic3564: - call void @finch_panic(ptr @.str.2238, i64 1511, ptr @.str.2239) - unreachable -ok3565: - %t68 = getelementptr inbounds %S.gen.Gen, ptr %t66, i32 0, i32 14 - %t69 = load { ptr, i64, i64 }, ptr %t68 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = call i64 @finch.gen.findStruct(ptr %t65, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t71) - %t73 = icmp sge i64 %t72, 0 - br label %logic.from3566 -logic.from3566: - br i1 %t73, label %logic.end3568, label %logic.rhs3567 -logic.rhs3567: - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic3569, label %ok3570 -panic3569: - call void @finch_panic(ptr @.str.2240, i64 1511, ptr @.str.2241) - unreachable -ok3570: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 14 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = call i64 @finch.gen.findTemplate(ptr %t74, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t80, { ptr, i64, i64 } { ptr @.str.2242, i64 0, i64 0 }, i1 true) - %t82 = icmp sge i64 %t81, 0 - br label %logic.rend3571 -logic.rend3571: - br label %logic.end3568 -logic.end3568: - %t83 = phi i1 [ true, %logic.from3566 ], [ %t82, %logic.rend3571 ] - br i1 %t83, label %then3572, label %endif3574 -then3572: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a64 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.2243, i64 12, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2244, i64 18, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif3574 -endif3574: - %t98 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = icmp sgt i64 %t100, 0 - br i1 %t101, label %then3575, label %endif3577 -then3575: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3578, label %ok3579 -panic3578: - call void @finch_panic(ptr @.str.2245, i64 1516, ptr @.str.2246) - unreachable -ok3579: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 17 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic3580, label %ok3581 -panic3580: - call void @finch_panic(ptr @.str.2247, i64 1516, ptr @.str.2248) - unreachable -ok3581: - %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 14 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a110 - call void @finch_str_copy(ptr %a111, ptr %a110) - %t112 = load { ptr, i64, i64 }, ptr %a111 - %t113 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t112, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_copy(ptr %a117, ptr %a116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - %t119 = insertvalue %S.gen.Template %t113, { ptr, i64, i64 } %t118, 1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch.copy.arr_str(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = insertvalue %S.gen.Template %t119, { ptr, i64, i64 } %t124, 3 - %t126 = load i64, ptr %a7 - %t127 = insertvalue %S.gen.Template %t125, i64 %t126, 4 - %t128 = load i64, ptr %a41 - %t129 = insertvalue %S.gen.Template %t127, i64 %t128, 5 - %t130 = insertvalue %S.gen.Template %t129, i1 true, 6 - %t131 = load i64, ptr %t105 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t104 - %t134 = getelementptr inbounds %S.gen.Template, ptr %t133, i64 %t131 - store %S.gen.Template %t130, ptr %t134 - store i64 %t132, ptr %t105 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -endif3577: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic3582, label %ok3583 -panic3582: - call void @finch_panic(ptr @.str.2249, i64 1519, ptr @.str.2250) - unreachable -ok3583: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 16 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic3584, label %ok3585 -panic3584: - call void @finch_panic(ptr @.str.2251, i64 1519, ptr @.str.2252) - unreachable -ok3585: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 14 - %t142 = load { ptr, i64, i64 }, ptr %t141 - store { ptr, i64, i64 } %t142, ptr %a143 - call void @finch_str_copy(ptr %a144, ptr %a143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_copy(ptr %a150, ptr %a149) - %t151 = load { ptr, i64, i64 }, ptr %a150 - %t152 = insertvalue %S.gen.StructDef %t146, { ptr, i64, i64 } %t151, 1 - %t153 = load i64, ptr %a7 - %t154 = insertvalue %S.gen.StructDef %t152, i64 %t153, 13 - %t155 = load i64, ptr %a41 - %t156 = insertvalue %S.gen.StructDef %t154, i64 %t155, 14 - %t157 = load i64, ptr %t138 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t137, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t137 - %t160 = getelementptr inbounds %S.gen.StructDef, ptr %t159, i64 %t157 - store %S.gen.StructDef %t156, ptr %t160 - store i64 %t158, ptr %t138 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -for.step3556: - %t161 = load i64, ptr %a41 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a41 - br label %for.cond3554 -for.end3557: - br label %for.step3542 -for.step3542: - %t163 = load i64, ptr %a7 - %t164 = add i64 %t163, 1 - store i64 %t164, ptr %a7 - br label %for.cond3540 -for.end3543: - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3586, label %ok3587 -panic3586: - call void @finch_panic(ptr @.str.2253, i64 1522, ptr @.str.2254) - unreachable -ok3587: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load i64, ptr %t168 - store i64 0, ptr %a170 - br label %for.cond3588 -for.cond3588: - %t171 = load i64, ptr %a170 - %t172 = icmp slt i64 %t171, %t169 - br i1 %t172, label %for.body3589, label %for.end3591 -for.body3589: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic3592, label %ok3593 -panic3592: - call void @finch_panic(ptr @.str.2255, i64 1523, ptr @.str.2256) - unreachable -ok3593: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 0 - %t176 = load i64, ptr %a170 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range3594, label %inrange3595 -range3594: - call void @finch_panic_index(ptr @.str.2257, i64 1523, i64 %t176, i64 %t178) - unreachable -inrange3595: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.ast.Program, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.ast.Program, ptr %t181, i32 0, i32 0 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3596, label %ok3597 -panic3596: - call void @finch_panic(ptr @.str.2258, i64 1523, ptr @.str.2259) - unreachable -ok3597: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 14 - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_copy(ptr %a188, ptr %a187) - %t189 = load { ptr, i64, i64 }, ptr %a188 - %t190 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t189, ptr %t186 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - %t193 = icmp eq ptr %t192, null - br i1 %t193, label %panic3598, label %ok3599 -panic3598: - call void @finch_panic(ptr @.str.2260, i64 1524, ptr @.str.2261) - unreachable -ok3599: - %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 0 - %t195 = load i64, ptr %a170 - %t196 = load { ptr, i64, i64 }, ptr %t194 - %t197 = extractvalue { ptr, i64, i64 } %t196, 1 - %t198 = icmp uge i64 %t195, %t197 - br i1 %t198, label %range3600, label %inrange3601 -range3600: - call void @finch_panic_index(ptr @.str.2262, i64 1524, i64 %t195, i64 %t197) - unreachable -inrange3601: - %t199 = extractvalue { ptr, i64, i64 } %t196, 0 - %t200 = getelementptr inbounds %S.ast.Program, ptr %t199, i64 %t195 - %t201 = getelementptr inbounds %S.ast.Program, ptr %t200, i32 0, i32 7 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load i64, ptr %t202 - store i64 0, ptr %a204 - br label %for.cond3602 -for.cond3602: - %t205 = load i64, ptr %a204 - %t206 = icmp slt i64 %t205, %t203 - br i1 %t206, label %for.body3603, label %for.end3605 -for.body3603: - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic3606, label %ok3607 -panic3606: - call void @finch_panic(ptr @.str.2263, i64 1525, ptr @.str.2264) - unreachable -ok3607: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 0 - %t210 = load i64, ptr %a170 - %t211 = load { ptr, i64, i64 }, ptr %t209 - %t212 = extractvalue { ptr, i64, i64 } %t211, 1 - %t213 = icmp uge i64 %t210, %t212 - br i1 %t213, label %range3608, label %inrange3609 -range3608: - call void @finch_panic_index(ptr @.str.2265, i64 1525, i64 %t210, i64 %t212) - unreachable -inrange3609: - %t214 = extractvalue { ptr, i64, i64 } %t211, 0 - %t215 = getelementptr inbounds %S.ast.Program, ptr %t214, i64 %t210 - %t216 = getelementptr inbounds %S.ast.Program, ptr %t215, i32 0, i32 7 - %t217 = load i64, ptr %a204 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range3610, label %inrange3611 -range3610: - call void @finch_panic_index(ptr @.str.2266, i64 1525, i64 %t217, i64 %t219) - unreachable -inrange3611: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 - %t223 = load %S.ast.Node, ptr %t222 - store %S.ast.Node %t223, ptr %a224 - call void @finch.copy.S_ast_Node(ptr %a225, ptr %a224) - %t226 = load %S.ast.Node, ptr %a225 - store %S.ast.Node %t226, ptr %a227 - %t228 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 6 - %t229 = load i1, ptr %t228 - br i1 %t229, label %then3612, label %endif3614 -then3612: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic3615, label %ok3616 -panic3615: - call void @finch_panic(ptr @.str.2267, i64 1527, ptr @.str.2268) - unreachable -ok3616: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 14 - %t234 = load { ptr, i64, i64 }, ptr %t233 - %t235 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t236 = load { ptr, i64, i64 }, ptr %t235 - %t237 = call i64 @finch.gen.findEnum(ptr %t230, { ptr, i64, i64 } %t234, { ptr, i64, i64 } %t236) - %t238 = icmp sge i64 %t237, 0 - br label %logic.from3617 -logic.from3617: - br i1 %t238, label %logic.end3619, label %logic.rhs3618 -logic.rhs3618: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic3620, label %ok3621 -panic3620: - call void @finch_panic(ptr @.str.2269, i64 1527, ptr @.str.2270) - unreachable -ok3621: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 14 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %t244 - %t246 = call i64 @finch.gen.findSum(ptr %t239, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t245) - %t247 = icmp sge i64 %t246, 0 - br label %logic.rend3622 -logic.rend3622: - br label %logic.end3619 -logic.end3619: - %t248 = phi i1 [ true, %logic.from3617 ], [ %t247, %logic.rend3622 ] - br i1 %t248, label %then3623, label %endif3625 -then3623: - %t249 = load ptr, ptr %a1 - %t250 = load %S.ast.Node, ptr %a227 - %t251 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t252 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } { ptr @.str.2271, 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 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.2272, i64 18, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.fail(ptr %t249, %S.ast.Node %t250, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a262 - call void @finch_str_drop(ptr %a262) - br label %endif3625 -endif3625: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic3626, label %ok3627 -panic3626: - call void @finch_panic(ptr @.str.2273, i64 1530, ptr @.str.2274) - unreachable -ok3627: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 14 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_copy(ptr %a268, ptr %a267) - %t269 = load { ptr, i64, i64 }, ptr %a268 - %t270 = insertvalue %S.gen.SumDef zeroinitializer, { ptr, i64, i64 } %t269, 0 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - call void @finch_str_copy(ptr %a274, ptr %a273) - %t275 = load { ptr, i64, i64 }, ptr %a274 - %t276 = insertvalue %S.gen.SumDef %t270, { ptr, i64, i64 } %t275, 1 - store %S.gen.SumDef %t276, ptr %a277 - store i64 1, ptr %a278 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a280 - br label %each.cond3628 -each.cond3628: - %t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %t279, i32 0, i32 1 - %t282 = load i64, ptr %t281 - %t283 = load i64, ptr %a280 - %t284 = icmp slt i64 %t283, %t282 - br i1 %t284, label %each.body3629, label %each.end3631 -each.body3629: - %t285 = load ptr, ptr %t279 - %t286 = getelementptr inbounds %S.ast.Node, ptr %t285, i64 %t283 - %t287 = load %S.ast.Node, ptr %t286 - store %S.ast.Node %t287, ptr %a288 - %t289 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store i64 -1, ptr %a293 - %t294 = load i64, ptr %t290 - %t295 = load ptr, ptr %t289 - store i64 0, ptr %a296 - br label %find.cond3632 -find.cond3632: - %t297 = load i64, ptr %a296 - %t298 = icmp slt i64 %t297, %t294 - br i1 %t298, label %find.body3633, label %find.end3636 -find.body3633: - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t295, i64 %t297 - %t300 = load { ptr, i64, i64 }, ptr %t299 - store { ptr, i64, i64 } %t300, ptr %a301 - store { ptr, i64, i64 } %t292, ptr %a302 - %t303 = call i32 @finch_str_eq(ptr %a301, ptr %a302) - %t304 = icmp ne i32 %t303, 0 - br i1 %t304, label %find.hit3634, label %find.next3635 -find.hit3634: - store i64 %t297, ptr %a293 - br label %find.end3636 -find.next3635: - %t305 = add i64 %t297, 1 - store i64 %t305, ptr %a296 - br label %find.cond3632 -find.end3636: - %t306 = load i64, ptr %a293 - %t307 = icmp sge i64 %t306, 0 - br i1 %t307, label %then3637, label %endif3639 -then3637: - %t308 = load ptr, ptr %a1 - %t309 = load %S.ast.Node, ptr %a288 - %t310 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } { ptr @.str.2275, i64 9, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2276, i64 17, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t320, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - store { ptr, i64, i64 } %t327, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.2277, i64 6, i64 0 }, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t327, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.fail(ptr %t308, %S.ast.Node %t309, { ptr, i64, i64 } %t332) - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - br label %endif3639 -endif3639: - %t334 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t335 = getelementptr inbounds { ptr, i64, i64 }, ptr %t334, i32 0, i32 1 - %t336 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t337 = load { ptr, i64, i64 }, ptr %t336 - store { ptr, i64, i64 } %t337, ptr %a338 - call void @finch_str_copy(ptr %a339, ptr %a338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - %t341 = load i64, ptr %t335 - %t342 = add i64 %t341, 1 - call void @finch_arr_reserve(ptr %t334, i64 %t342, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t343 = load ptr, ptr %t334 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %t343, i64 %t341 - store { ptr, i64, i64 } %t340, ptr %t344 - store i64 %t342, ptr %t335 - %t345 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 3 - %t346 = getelementptr inbounds { ptr, i64, i64 }, ptr %t345, i32 0, i32 1 - %t347 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t348 = getelementptr inbounds { ptr, i64, i64 }, ptr %t347, i32 0, i32 1 - %t349 = load i64, ptr %t348 - %t350 = load i64, ptr %t346 - %t351 = add i64 %t350, 1 - call void @finch_arr_reserve(ptr %t345, i64 %t351, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t352 = load ptr, ptr %t345 - %t353 = getelementptr inbounds i64, ptr %t352, i64 %t350 - store i64 %t349, ptr %t353 - store i64 %t351, ptr %t346 - %t354 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 4 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i32 0, i32 1 - %t356 = load i64, ptr %a278 - %t357 = load i64, ptr %t355 - %t358 = add i64 %t357, 1 - call void @finch_arr_reserve(ptr %t354, i64 %t358, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t359 = load ptr, ptr %t354 - %t360 = getelementptr inbounds i64, ptr %t359, i64 %t357 - store i64 %t356, ptr %t360 - store i64 %t358, ptr %t355 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = load i64, ptr %a278 - %t365 = add i64 %t364, %t363 - store i64 %t365, ptr %a278 - br label %each.step3630 -each.step3630: - %t366 = load i64, ptr %a280 - %t367 = add i64 %t366, 1 - store i64 %t367, ptr %a280 - br label %each.cond3628 -each.end3631: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic3640, label %ok3641 -panic3640: - call void @finch_panic(ptr @.str.2278, i64 1541, ptr @.str.2279) - unreachable -ok3641: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 22 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load %S.gen.SumDef, ptr %a277 - store %S.gen.SumDef %t372, ptr %a373 - call void @finch.copy.S_gen_SumDef(ptr %a374, ptr %a373) - %t375 = load %S.gen.SumDef, ptr %a374 - %t376 = load i64, ptr %t371 - %t377 = add i64 %t376, 1 - call void @finch_arr_reserve(ptr %t370, i64 %t377, i64 ptrtoint (ptr getelementptr (%S.gen.SumDef, ptr null, i32 1) to i64)) - %t378 = load ptr, ptr %t370 - %t379 = getelementptr inbounds %S.gen.SumDef, ptr %t378, i64 %t376 - store %S.gen.SumDef %t375, ptr %t379 - store i64 %t377, ptr %t371 - call void @finch.drop.S_gen_SumDef(ptr %a277) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -endif3614: - %t380 = load ptr, ptr %a1 - %t381 = load ptr, ptr %a1 - %t382 = icmp eq ptr %t381, null - br i1 %t382, label %panic3642, label %ok3643 -panic3642: - call void @finch_panic(ptr @.str.2280, i64 1544, ptr @.str.2281) - unreachable -ok3643: - %t383 = getelementptr inbounds %S.gen.Gen, ptr %t381, i32 0, i32 14 - %t384 = load { ptr, i64, i64 }, ptr %t383 - %t385 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t386 = load { ptr, i64, i64 }, ptr %t385 - %t387 = call i64 @finch.gen.findEnum(ptr %t380, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t386) - %t388 = icmp sge i64 %t387, 0 - br label %logic.from3644 -logic.from3644: - br i1 %t388, label %logic.end3646, label %logic.rhs3645 -logic.rhs3645: - %t389 = load ptr, ptr %a1 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic3647, label %ok3648 -panic3647: - call void @finch_panic(ptr @.str.2282, i64 1544, ptr @.str.2283) - unreachable -ok3648: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 14 - %t393 = load { ptr, i64, i64 }, ptr %t392 - %t394 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t395 = load { ptr, i64, i64 }, ptr %t394 - %t396 = call i64 @finch.gen.findStruct(ptr %t389, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t395) - %t397 = icmp sge i64 %t396, 0 - br label %logic.rend3649 -logic.rend3649: - br label %logic.end3646 -logic.end3646: - %t398 = phi i1 [ true, %logic.from3644 ], [ %t397, %logic.rend3649 ] - br i1 %t398, label %then3650, label %endif3652 -then3650: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a227 - %t401 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t402 = load { ptr, i64, i64 }, ptr %t401 - store { ptr, i64, i64 } { ptr @.str.2284, i64 1, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - store { ptr, i64, i64 } %t406, ptr %a408 - store { ptr, i64, i64 } { ptr @.str.2285, i64 18, i64 0 }, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t406, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.fail(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t411) - store { ptr, i64, i64 } %t411, ptr %a412 - call void @finch_str_drop(ptr %a412) - br label %endif3652 -endif3652: - %t413 = load ptr, ptr %a1 - %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic3653, label %ok3654 -panic3653: - call void @finch_panic(ptr @.str.2286, i64 1547, ptr @.str.2287) - unreachable -ok3654: - %t415 = getelementptr inbounds %S.gen.Gen, ptr %t413, i32 0, i32 14 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - call void @finch_str_copy(ptr %a418, ptr %a417) - %t419 = load { ptr, i64, i64 }, ptr %a418 - %t420 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_copy(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = insertvalue %S.gen.EnumDef %t420, { ptr, i64, i64 } %t425, 1 - store %S.gen.EnumDef %t426, ptr %a427 - store i64 0, ptr %a428 - %t429 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a430 - br label %each.cond3655 -each.cond3655: - %t431 = getelementptr inbounds { ptr, i64, i64 }, ptr %t429, i32 0, i32 1 - %t432 = load i64, ptr %t431 - %t433 = load i64, ptr %a430 - %t434 = icmp slt i64 %t433, %t432 - br i1 %t434, label %each.body3656, label %each.end3658 -each.body3656: - %t435 = load ptr, ptr %t429 - %t436 = getelementptr inbounds %S.ast.Node, ptr %t435, i64 %t433 - %t437 = load %S.ast.Node, ptr %t436 - store %S.ast.Node %t437, ptr %a438 - %t439 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t440 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t441 = load i64, ptr %t440 - %t442 = icmp sgt i64 %t441, 0 - br i1 %t442, label %then3659, label %endif3661 -then3659: - %t443 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t444 = load { ptr, i64, i64 }, ptr %t443 - store { ptr, i64, i64 } %t444, ptr %a445 - %t446 = call i64 @finch_str_to_int(ptr %a445, ptr @.str.2288, i64 1551) - store i64 %t446, ptr %a428 - br label %endif3661 -endif3661: - %t447 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i32 0, i32 1 - %t449 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t450 = load { ptr, i64, i64 }, ptr %t449 - store i64 -1, ptr %a451 - %t452 = load i64, ptr %t448 - %t453 = load ptr, ptr %t447 - store i64 0, ptr %a454 - br label %find.cond3662 -find.cond3662: - %t455 = load i64, ptr %a454 - %t456 = icmp slt i64 %t455, %t452 - br i1 %t456, label %find.body3663, label %find.end3666 -find.body3663: - %t457 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t455 - %t458 = load { ptr, i64, i64 }, ptr %t457 - store { ptr, i64, i64 } %t458, ptr %a459 - store { ptr, i64, i64 } %t450, ptr %a460 - %t461 = call i32 @finch_str_eq(ptr %a459, ptr %a460) - %t462 = icmp ne i32 %t461, 0 - br i1 %t462, label %find.hit3664, label %find.next3665 -find.hit3664: - store i64 %t455, ptr %a451 - br label %find.end3666 -find.next3665: - %t463 = add i64 %t455, 1 - store i64 %t463, ptr %a454 - br label %find.cond3662 -find.end3666: - %t464 = load i64, ptr %a451 - %t465 = icmp sge i64 %t464, 0 - br i1 %t465, label %then3667, label %endif3669 -then3667: - %t466 = load ptr, ptr %a1 - %t467 = load %S.ast.Node, ptr %a438 - %t468 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t469 = load { ptr, i64, i64 }, ptr %t468 - store { ptr, i64, i64 } { ptr @.str.2289, i64 9, i64 0 }, ptr %a471 - store { ptr, i64, i64 } %t469, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a470 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.2290, i64 17, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - %t479 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t480 = load { ptr, i64, i64 }, ptr %t479 - store { ptr, i64, i64 } %t478, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t478, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.2291, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - call void @finch.gen.fail(ptr %t466, %S.ast.Node %t467, { ptr, i64, i64 } %t490) - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - br label %endif3669 -endif3669: - %t492 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t492, i32 0, i32 1 - %t494 = load i64, ptr %a428 - store i64 -1, ptr %a495 - %t496 = load i64, ptr %t493 - %t497 = load ptr, ptr %t492 - store i64 0, ptr %a498 - br label %find.cond3670 -find.cond3670: - %t499 = load i64, ptr %a498 - %t500 = icmp slt i64 %t499, %t496 - br i1 %t500, label %find.body3671, label %find.end3674 -find.body3671: - %t501 = getelementptr inbounds i64, ptr %t497, i64 %t499 - %t502 = load i64, ptr %t501 - %t503 = icmp eq i64 %t502, %t494 - br i1 %t503, label %find.hit3672, label %find.next3673 -find.hit3672: - store i64 %t499, ptr %a495 - br label %find.end3674 -find.next3673: - %t504 = add i64 %t499, 1 - store i64 %t504, ptr %a498 - br label %find.cond3670 -find.end3674: - %t505 = load i64, ptr %a495 - %t506 = icmp sge i64 %t505, 0 - br i1 %t506, label %then3675, label %endif3677 -then3675: - %t507 = load ptr, ptr %a1 - %t508 = load %S.ast.Node, ptr %a438 - %t509 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t510 = load { ptr, i64, i64 }, ptr %t509 - store { ptr, i64, i64 } { ptr @.str.2292, i64 16, i64 0 }, ptr %a512 - store { ptr, i64, i64 } %t510, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a511 - store { ptr, i64, i64 } %t514, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.2293, i64 17, i64 0 }, ptr %a517 - call void @finch_str_concat(ptr %a515, ptr %a516, ptr %a517) - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_drop(ptr %a518) - %t519 = load { ptr, i64, i64 }, ptr %a515 - %t520 = load i64, ptr %a428 - call void @finch_str_from_int(ptr %a521, i64 %t520) - %t522 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a524 - store { ptr, i64, i64 } %t522, ptr %a525 - call void @finch_str_concat(ptr %a523, ptr %a524, ptr %a525) - store { ptr, i64, i64 } %t519, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.2294, i64 20, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.fail(ptr %t507, %S.ast.Node %t508, { ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a534 - call void @finch_str_drop(ptr %a534) - br label %endif3677 -endif3677: - %t535 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 - %t537 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - call void @finch_str_copy(ptr %a540, ptr %a539) - %t541 = load { ptr, i64, i64 }, ptr %a540 - %t542 = load i64, ptr %t536 - %t543 = add i64 %t542, 1 - call void @finch_arr_reserve(ptr %t535, i64 %t543, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t544 = load ptr, ptr %t535 - %t545 = getelementptr inbounds { ptr, i64, i64 }, ptr %t544, i64 %t542 - store { ptr, i64, i64 } %t541, ptr %t545 - store i64 %t543, ptr %t536 - %t546 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t547 = getelementptr inbounds { ptr, i64, i64 }, ptr %t546, i32 0, i32 1 - %t548 = load i64, ptr %a428 - %t549 = load i64, ptr %t547 - %t550 = add i64 %t549, 1 - call void @finch_arr_reserve(ptr %t546, i64 %t550, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t551 = load ptr, ptr %t546 - %t552 = getelementptr inbounds i64, ptr %t551, i64 %t549 - store i64 %t548, ptr %t552 - store i64 %t550, ptr %t547 - %t553 = load i64, ptr %a428 - %t554 = add i64 %t553, 1 - store i64 %t554, ptr %a428 - br label %each.step3657 -each.step3657: - %t555 = load i64, ptr %a430 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a430 - br label %each.cond3655 -each.end3658: - %t557 = load ptr, ptr %a1 - %t558 = icmp eq ptr %t557, null - br i1 %t558, label %panic3678, label %ok3679 -panic3678: - call void @finch_panic(ptr @.str.2295, i64 1563, ptr @.str.2296) - unreachable -ok3679: - %t559 = getelementptr inbounds %S.gen.Gen, ptr %t557, i32 0, i32 21 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load %S.gen.EnumDef, ptr %a427 - store %S.gen.EnumDef %t561, ptr %a562 - call void @finch.copy.S_gen_EnumDef(ptr %a563, ptr %a562) - %t564 = load %S.gen.EnumDef, ptr %a563 - %t565 = load i64, ptr %t560 - %t566 = add i64 %t565, 1 - call void @finch_arr_reserve(ptr %t559, i64 %t566, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) - %t567 = load ptr, ptr %t559 - %t568 = getelementptr inbounds %S.gen.EnumDef, ptr %t567, i64 %t565 - store %S.gen.EnumDef %t564, ptr %t568 - store i64 %t566, ptr %t560 - call void @finch.drop.S_gen_EnumDef(ptr %a427) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -for.step3604: - %t569 = load i64, ptr %a204 - %t570 = add i64 %t569, 1 - store i64 %t570, ptr %a204 - br label %for.cond3602 -for.end3605: - br label %for.step3590 -for.step3590: - %t571 = load i64, ptr %a170 - %t572 = add i64 %t571, 1 - store i64 %t572, ptr %a170 - br label %for.cond3588 -for.end3591: - %t573 = load ptr, ptr %a1 - %t574 = icmp eq ptr %t573, null - br i1 %t574, label %panic3680, label %ok3681 -panic3680: - call void @finch_panic(ptr @.str.2297, i64 1566, ptr @.str.2298) - unreachable -ok3681: - %t575 = getelementptr inbounds %S.gen.Gen, ptr %t573, i32 0, i32 26 - %t576 = getelementptr inbounds %S.cimport.CImports, ptr %t575, i32 0, i32 4 - %t577 = getelementptr inbounds { ptr, i64, i64 }, ptr %t576, i32 0, i32 1 - %t578 = load i64, ptr %t577 - store i64 0, ptr %a579 - br label %for.cond3682 -for.cond3682: - %t580 = load i64, ptr %a579 - %t581 = icmp slt i64 %t580, %t578 - br i1 %t581, label %for.body3683, label %for.end3685 -for.body3683: - %t582 = load ptr, ptr %a1 - %t583 = icmp eq ptr %t582, null - br i1 %t583, label %panic3686, label %ok3687 -panic3686: - call void @finch_panic(ptr @.str.2299, i64 1567, ptr @.str.2300) - unreachable -ok3687: - %t584 = getelementptr inbounds %S.gen.Gen, ptr %t582, i32 0, i32 16 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i32 0, i32 1 - %t586 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.2301, i64 1, i64 0 }, 0 - %t587 = load ptr, ptr %a1 - %t588 = icmp eq ptr %t587, null - br i1 %t588, label %panic3688, label %ok3689 -panic3688: - call void @finch_panic(ptr @.str.2302, i64 1567, ptr @.str.2303) - unreachable -ok3689: - %t589 = getelementptr inbounds %S.gen.Gen, ptr %t587, i32 0, i32 26 - %t590 = getelementptr inbounds %S.cimport.CImports, ptr %t589, i32 0, i32 4 - %t591 = load i64, ptr %a579 - %t592 = load { ptr, i64, i64 }, ptr %t590 - %t593 = extractvalue { ptr, i64, i64 } %t592, 1 - %t594 = icmp uge i64 %t591, %t593 - br i1 %t594, label %range3690, label %inrange3691 -range3690: - call void @finch_panic_index(ptr @.str.2304, i64 1567, i64 %t591, i64 %t593) - unreachable -inrange3691: - %t595 = extractvalue { ptr, i64, i64 } %t592, 0 - %t596 = getelementptr inbounds { ptr, i64, i64 }, ptr %t595, i64 %t591 - %t597 = load { ptr, i64, i64 }, ptr %t596 - store { ptr, i64, i64 } %t597, ptr %a598 - call void @finch_str_copy(ptr %a599, ptr %a598) - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = insertvalue %S.gen.StructDef %t586, { ptr, i64, i64 } %t600, 1 - %t602 = insertvalue %S.gen.StructDef %t601, i1 true, 2 - %t603 = insertvalue %S.gen.StructDef %t602, i64 -1, 13 - %t604 = load i64, ptr %a579 - %t605 = insertvalue %S.gen.StructDef %t603, i64 %t604, 14 - %t606 = load i64, ptr %t585 - %t607 = add i64 %t606, 1 - call void @finch_arr_reserve(ptr %t584, i64 %t607, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t608 = load ptr, ptr %t584 - %t609 = getelementptr inbounds %S.gen.StructDef, ptr %t608, i64 %t606 - store %S.gen.StructDef %t605, ptr %t609 - store i64 %t607, ptr %t585 - br label %for.step3684 -for.step3684: - %t610 = load i64, ptr %a579 - %t611 = add i64 %t610, 1 - store i64 %t611, ptr %a579 - br label %for.cond3682 -for.end3685: - %t612 = load ptr, ptr %a1 - %t613 = icmp eq ptr %t612, null - br i1 %t613, label %panic3692, label %ok3693 -panic3692: - call void @finch_panic(ptr @.str.2305, i64 1569, ptr @.str.2306) - unreachable -ok3693: - %t614 = getelementptr inbounds %S.gen.Gen, ptr %t612, i32 0, i32 16 - %t615 = getelementptr inbounds { ptr, i64, i64 }, ptr %t614, i32 0, i32 1 - %t616 = load i64, ptr %t615 - store i64 0, ptr %a617 - br label %for.cond3694 -for.cond3694: - %t618 = load i64, ptr %a617 - %t619 = icmp slt i64 %t618, %t616 - br i1 %t619, label %for.body3695, label %for.end3697 -for.body3695: - %t620 = load ptr, ptr %a1 - %t621 = load i64, ptr %a617 - call void @finch.gen.resolveStruct(ptr %t620, i64 %t621) - br label %for.step3696 -for.step3696: - %t622 = load i64, ptr %a617 - %t623 = add i64 %t622, 1 - store i64 %t623, ptr %a617 - br label %for.cond3694 -for.end3697: - %t624 = load ptr, ptr %a1 - %t625 = icmp eq ptr %t624, null - br i1 %t625, label %panic3698, label %ok3699 -panic3698: - call void @finch_panic(ptr @.str.2307, i64 1572, ptr @.str.2308) - unreachable -ok3699: - %t626 = getelementptr inbounds %S.gen.Gen, ptr %t624, i32 0, i32 0 - %t627 = getelementptr inbounds { ptr, i64, i64 }, ptr %t626, i32 0, i32 1 - %t628 = load i64, ptr %t627 - store i64 0, ptr %a629 - br label %for.cond3700 -for.cond3700: - %t630 = load i64, ptr %a629 - %t631 = icmp slt i64 %t630, %t628 - br i1 %t631, label %for.body3701, label %for.end3703 -for.body3701: - %t632 = load ptr, ptr %a1 - %t633 = icmp eq ptr %t632, null - br i1 %t633, label %panic3704, label %ok3705 -panic3704: - call void @finch_panic(ptr @.str.2309, i64 1573, ptr @.str.2310) - unreachable -ok3705: - %t634 = getelementptr inbounds %S.gen.Gen, ptr %t632, i32 0, i32 0 - %t635 = load i64, ptr %a629 - %t636 = load { ptr, i64, i64 }, ptr %t634 - %t637 = extractvalue { ptr, i64, i64 } %t636, 1 - %t638 = icmp uge i64 %t635, %t637 - br i1 %t638, label %range3706, label %inrange3707 -range3706: - call void @finch_panic_index(ptr @.str.2311, i64 1573, i64 %t635, i64 %t637) - unreachable -inrange3707: - %t639 = extractvalue { ptr, i64, i64 } %t636, 0 - %t640 = getelementptr inbounds %S.ast.Program, ptr %t639, i64 %t635 - %t641 = getelementptr inbounds %S.ast.Program, ptr %t640, i32 0, i32 0 - %t642 = load { ptr, i64, i64 }, ptr %t641 - %t643 = load ptr, ptr %a1 - %t644 = icmp eq ptr %t643, null - br i1 %t644, label %panic3708, label %ok3709 -panic3708: - call void @finch_panic(ptr @.str.2312, i64 1573, ptr @.str.2313) - unreachable -ok3709: - %t645 = getelementptr inbounds %S.gen.Gen, ptr %t643, i32 0, i32 14 - store { ptr, i64, i64 } %t642, ptr %a646 - call void @finch_str_copy(ptr %a647, ptr %a646) - %t648 = load { ptr, i64, i64 }, ptr %a647 - %t649 = load { ptr, i64, i64 }, ptr %t645 - store { ptr, i64, i64 } %t648, ptr %t645 - store { ptr, i64, i64 } %t649, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load ptr, ptr %a1 - %t652 = icmp eq ptr %t651, null - br i1 %t652, label %panic3710, label %ok3711 -panic3710: - call void @finch_panic(ptr @.str.2314, i64 1574, ptr @.str.2315) - unreachable -ok3711: - %t653 = getelementptr inbounds %S.gen.Gen, ptr %t651, i32 0, i32 0 - %t654 = load i64, ptr %a629 - %t655 = load { ptr, i64, i64 }, ptr %t653 - %t656 = extractvalue { ptr, i64, i64 } %t655, 1 - %t657 = icmp uge i64 %t654, %t656 - br i1 %t657, label %range3712, label %inrange3713 -range3712: - call void @finch_panic_index(ptr @.str.2316, i64 1574, i64 %t654, i64 %t656) - unreachable -inrange3713: - %t658 = extractvalue { ptr, i64, i64 } %t655, 0 - %t659 = getelementptr inbounds %S.ast.Program, ptr %t658, i64 %t654 - %t660 = getelementptr inbounds %S.ast.Program, ptr %t659, i32 0, i32 8 - %t661 = getelementptr inbounds { ptr, i64, i64 }, ptr %t660, i32 0, i32 1 - %t662 = load i64, ptr %t661 - store i64 0, ptr %a663 - br label %for.cond3714 -for.cond3714: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t662 - br i1 %t665, label %for.body3715, label %for.end3717 -for.body3715: - %t666 = load ptr, ptr %a1 - %t667 = icmp eq ptr %t666, null - br i1 %t667, label %panic3718, label %ok3719 -panic3718: - call void @finch_panic(ptr @.str.2317, i64 1575, ptr @.str.2318) - unreachable -ok3719: - %t668 = getelementptr inbounds %S.gen.Gen, ptr %t666, i32 0, i32 0 - %t669 = load i64, ptr %a629 - %t670 = load { ptr, i64, i64 }, ptr %t668 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range3720, label %inrange3721 -range3720: - call void @finch_panic_index(ptr @.str.2319, i64 1575, i64 %t669, i64 %t671) - unreachable -inrange3721: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.ast.Program, ptr %t673, i64 %t669 - %t675 = getelementptr inbounds %S.ast.Program, ptr %t674, i32 0, i32 8 - %t676 = load i64, ptr %a663 - %t677 = load { ptr, i64, i64 }, ptr %t675 - %t678 = extractvalue { ptr, i64, i64 } %t677, 1 - %t679 = icmp uge i64 %t676, %t678 - br i1 %t679, label %range3722, label %inrange3723 -range3722: - call void @finch_panic_index(ptr @.str.2320, i64 1575, i64 %t676, i64 %t678) - unreachable -inrange3723: - %t680 = extractvalue { ptr, i64, i64 } %t677, 0 - %t681 = getelementptr inbounds %S.ast.Node, ptr %t680, i64 %t676 - %t682 = load %S.ast.Node, ptr %t681 - store %S.ast.Node %t682, ptr %a683 - call void @finch.copy.S_ast_Node(ptr %a684, ptr %a683) - %t685 = load %S.ast.Node, ptr %a684 - store %S.ast.Node %t685, ptr %a686 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t688 = getelementptr inbounds { ptr, i64, i64 }, ptr %t687, i32 0, i32 1 - %t689 = load i64, ptr %t688 - %t690 = icmp sgt i64 %t689, 0 - br i1 %t690, label %then3724, label %endif3726 -then3724: - %t691 = load ptr, ptr %a1 - %t692 = load ptr, ptr %a1 - %t693 = icmp eq ptr %t692, null - br i1 %t693, label %panic3727, label %ok3728 -panic3727: - call void @finch_panic(ptr @.str.2321, i64 1578, ptr @.str.2322) - unreachable -ok3728: - %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 - %t695 = load { ptr, i64, i64 }, ptr %t694 - %t696 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t697 = load { ptr, i64, i64 }, ptr %t696 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t699 = load { ptr, i64, i64 }, ptr %t698 - %t700 = call i64 @finch.gen.findTemplate(ptr %t691, { ptr, i64, i64 } %t695, { ptr, i64, i64 } %t697, { ptr, i64, i64 } %t699, i1 false) - %t701 = icmp sge i64 %t700, 0 - br i1 %t701, label %then3729, label %endif3731 -then3729: - %t702 = load ptr, ptr %a1 - %t703 = load %S.ast.Node, ptr %a686 - %t704 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t705 = load { ptr, i64, i64 }, ptr %t704 - store { ptr, i64, i64 } { ptr @.str.2323, i64 10, i64 0 }, 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 - store { ptr, i64, i64 } %t709, ptr %a711 - store { ptr, i64, i64 } { ptr @.str.2324, i64 18, i64 0 }, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t709, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - call void @finch.gen.fail(ptr %t702, %S.ast.Node %t703, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a715 - call void @finch_str_drop(ptr %a715) - br label %endif3731 -endif3731: - %t716 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t717 = getelementptr inbounds { ptr, i64, i64 }, ptr %t716, i32 0, i32 1 - %t718 = load i64, ptr %t717 - %t719 = icmp sgt i64 %t718, 0 - br label %logic.from3732 -logic.from3732: - br i1 %t719, label %logic.rhs3733, label %logic.end3734 -logic.rhs3733: - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = icmp eq ptr %t721, null - br i1 %t722, label %panic3735, label %ok3736 -panic3735: - call void @finch_panic(ptr @.str.2325, i64 1581, ptr @.str.2326) - unreachable -ok3736: - %t723 = getelementptr inbounds %S.gen.Gen, ptr %t721, i32 0, i32 14 - %t724 = load { ptr, i64, i64 }, ptr %t723 - %t725 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t726 = load { ptr, i64, i64 }, ptr %t725 - %t727 = call i64 @finch.gen.findTemplate(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t726, { ptr, i64, i64 } { ptr @.str.2327, i64 0, i64 0 }, i1 true) - %t728 = icmp slt i64 %t727, 0 - br label %logic.rend3737 -logic.rend3737: - br label %logic.end3734 -logic.end3734: - %t729 = phi i1 [ false, %logic.from3732 ], [ %t728, %logic.rend3737 ] - br i1 %t729, label %then3738, label %endif3740 -then3738: - %t730 = load ptr, ptr %a1 - %t731 = load %S.ast.Node, ptr %a686 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t733 = load { ptr, i64, i64 }, ptr %t732 - store { ptr, i64, i64 } { ptr @.str.2328, i64 34, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.2329, i64 53, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - call void @finch.gen.fail(ptr %t730, %S.ast.Node %t731, { ptr, i64, i64 } %t742) - store { ptr, i64, i64 } %t742, ptr %a743 - call void @finch_str_drop(ptr %a743) - br label %endif3740 -endif3740: - %t744 = load ptr, ptr %a1 - %t745 = icmp eq ptr %t744, null - br i1 %t745, label %panic3741, label %ok3742 -panic3741: - call void @finch_panic(ptr @.str.2330, i64 1584, ptr @.str.2331) - unreachable -ok3742: - %t746 = getelementptr inbounds %S.gen.Gen, ptr %t744, i32 0, i32 17 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i32 0, i32 1 - %t748 = load ptr, ptr %a1 - %t749 = icmp eq ptr %t748, null - br i1 %t749, label %panic3743, label %ok3744 -panic3743: - call void @finch_panic(ptr @.str.2332, i64 1584, ptr @.str.2333) - unreachable -ok3744: - %t750 = getelementptr inbounds %S.gen.Gen, ptr %t748, i32 0, i32 14 - %t751 = load { ptr, i64, i64 }, ptr %t750 - store { ptr, i64, i64 } %t751, ptr %a752 - call void @finch_str_copy(ptr %a753, ptr %a752) - %t754 = load { ptr, i64, i64 }, ptr %a753 - %t755 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t754, 0 - %t756 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t757 = load { ptr, i64, i64 }, ptr %t756 - store { ptr, i64, i64 } %t757, ptr %a758 - call void @finch_str_copy(ptr %a759, ptr %a758) - %t760 = load { ptr, i64, i64 }, ptr %a759 - %t761 = insertvalue %S.gen.Template %t755, { ptr, i64, i64 } %t760, 1 - %t762 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t763 = load { ptr, i64, i64 }, ptr %t762 - store { ptr, i64, i64 } %t763, ptr %a764 - call void @finch_str_copy(ptr %a765, ptr %a764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - %t767 = insertvalue %S.gen.Template %t761, { ptr, i64, i64 } %t766, 2 - %t768 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t769 = load { ptr, i64, i64 }, ptr %t768 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch.copy.arr_str(ptr %a771, ptr %a770) - %t772 = load { ptr, i64, i64 }, ptr %a771 - %t773 = insertvalue %S.gen.Template %t767, { ptr, i64, i64 } %t772, 3 - %t774 = load i64, ptr %a629 - %t775 = insertvalue %S.gen.Template %t773, i64 %t774, 4 - %t776 = load i64, ptr %a663 - %t777 = insertvalue %S.gen.Template %t775, i64 %t776, 5 - %t778 = load i64, ptr %t747 - %t779 = add i64 %t778, 1 - call void @finch_arr_reserve(ptr %t746, i64 %t779, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t780 = load ptr, ptr %t746 - %t781 = getelementptr inbounds %S.gen.Template, ptr %t780, i64 %t778 - store %S.gen.Template %t777, ptr %t781 - store i64 %t779, ptr %t747 - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -endif3726: - %t782 = load ptr, ptr %a1 - %t783 = icmp eq ptr %t782, null - br i1 %t783, label %panic3745, label %ok3746 -panic3745: - call void @finch_panic(ptr @.str.2334, i64 1587, ptr @.str.2335) - unreachable -ok3746: - %t784 = getelementptr inbounds %S.gen.Gen, ptr %t782, i32 0, i32 14 - %t785 = load { ptr, i64, i64 }, ptr %t784 - store { ptr, i64, i64 } %t785, ptr %a786 - call void @finch_str_copy(ptr %a787, ptr %a786) - %t788 = load { ptr, i64, i64 }, ptr %a787 - store { ptr, i64, i64 } %t788, ptr %a789 - store i1 false, ptr %a790 - %t791 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t792 = getelementptr inbounds { ptr, i64, i64 }, ptr %t791, i32 0, i32 1 - %t793 = load i64, ptr %t792 - %t794 = icmp sgt i64 %t793, 0 - br label %logic.from3747 -logic.from3747: - br i1 %t794, label %logic.rhs3748, label %logic.end3749 -logic.rhs3748: - %t795 = load ptr, ptr %a1 - %t796 = load ptr, ptr %a1 - %t797 = icmp eq ptr %t796, null - br i1 %t797, label %panic3750, label %ok3751 -panic3750: - call void @finch_panic(ptr @.str.2336, i64 1589, ptr @.str.2337) - unreachable -ok3751: - %t798 = getelementptr inbounds %S.gen.Gen, ptr %t796, i32 0, i32 14 - %t799 = load { ptr, i64, i64 }, ptr %t798 - %t800 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - %t802 = call i64 @finch.gen.findEnum(ptr %t795, { ptr, i64, i64 } %t799, { ptr, i64, i64 } %t801) - %t803 = icmp sge i64 %t802, 0 - br label %logic.rend3752 -logic.rend3752: - br label %logic.end3749 -logic.end3749: - %t804 = phi i1 [ false, %logic.from3747 ], [ %t803, %logic.rend3752 ] - br i1 %t804, label %then3753, label %else3754 -then3753: - store i1 true, ptr %a790 - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a789 - %t807 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t808 = load { ptr, i64, i64 }, ptr %t807 - %t809 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %t809 - %t811 = call i64 @finch.gen.findMethod(ptr %t805, { ptr, i64, i64 } %t806, { ptr, i64, i64 } %t808, { ptr, i64, i64 } %t810) - %t812 = icmp sge i64 %t811, 0 - br i1 %t812, label %then3756, label %endif3758 -then3756: - %t813 = load ptr, ptr %a1 - %t814 = load %S.ast.Node, ptr %a686 - %t815 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } { ptr @.str.2338, i64 11, i64 0 }, ptr %a818 - store { ptr, i64, i64 } %t816, ptr %a819 - call void @finch_str_concat(ptr %a817, ptr %a818, ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a817 - store { ptr, i64, i64 } %t820, ptr %a822 - store { ptr, i64, i64 } { ptr @.str.2339, i64 1, i64 0 }, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - store { ptr, i64, i64 } %t820, ptr %a824 - call void @finch_str_drop(ptr %a824) - %t825 = load { ptr, i64, i64 }, ptr %a821 - %t826 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t827 = load { ptr, i64, i64 }, ptr %t826 - store { ptr, i64, i64 } %t825, ptr %a829 - store { ptr, i64, i64 } %t827, ptr %a830 - call void @finch_str_concat(ptr %a828, ptr %a829, ptr %a830) - store { ptr, i64, i64 } %t825, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a828 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.2340, i64 17, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.fail(ptr %t813, %S.ast.Node %t814, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - br label %endif3758 -endif3758: - br label %endif3755 -else3754: - %t839 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t840 = getelementptr inbounds { ptr, i64, i64 }, ptr %t839, i32 0, i32 1 - %t841 = load i64, ptr %t840 - %t842 = icmp sgt i64 %t841, 0 - br i1 %t842, label %then3759, label %else3760 -then3759: - %t843 = load ptr, ptr %a1 - %t844 = load ptr, ptr %a1 - %t845 = icmp eq ptr %t844, null - br i1 %t845, label %panic3762, label %ok3763 -panic3762: - call void @finch_panic(ptr @.str.2341, i64 1595, ptr @.str.2342) - unreachable -ok3763: - %t846 = getelementptr inbounds %S.gen.Gen, ptr %t844, i32 0, i32 14 - %t847 = load { ptr, i64, i64 }, ptr %t846 - %t848 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t849 = load { ptr, i64, i64 }, ptr %t848 - %t850 = call i64 @finch.gen.findStruct(ptr %t843, { ptr, i64, i64 } %t847, { ptr, i64, i64 } %t849) - store i64 %t850, ptr %a851 - %t852 = load i64, ptr %a851 - %t853 = icmp slt i64 %t852, 0 - br label %logic.from3764 -logic.from3764: - br i1 %t853, label %logic.rhs3765, label %logic.end3766 -logic.rhs3765: - %t854 = load ptr, ptr %a1 - %t855 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t856 = load { ptr, i64, i64 }, ptr %t855 - %t857 = call i64 @finch.gen.findStruct(ptr %t854, { ptr, i64, i64 } { ptr @.str.2343, i64 1, i64 0 }, { ptr, i64, i64 } %t856) - %t858 = icmp sge i64 %t857, 0 - br label %logic.rend3767 -logic.rend3767: - br label %logic.end3766 -logic.end3766: - %t859 = phi i1 [ false, %logic.from3764 ], [ %t858, %logic.rend3767 ] - br i1 %t859, label %then3768, label %endif3770 -then3768: - %t860 = load ptr, ptr %a1 - %t861 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t862 = load { ptr, i64, i64 }, ptr %t861 - %t863 = call i64 @finch.gen.findStruct(ptr %t860, { ptr, i64, i64 } { ptr @.str.2344, i64 1, i64 0 }, { ptr, i64, i64 } %t862) - store i64 %t863, ptr %a851 - %t864 = load { ptr, i64, i64 }, ptr %a789 - store { ptr, i64, i64 } { ptr @.str.2345, i64 1, i64 0 }, ptr %a789 - store { ptr, i64, i64 } %t864, ptr %a865 - call void @finch_str_drop(ptr %a865) - br label %endif3770 -endif3770: - %t866 = load i64, ptr %a851 - %t867 = icmp slt i64 %t866, 0 - br i1 %t867, label %then3771, label %endif3773 -then3771: - %t868 = load ptr, ptr %a1 - %t869 = load %S.ast.Node, ptr %a686 - %t870 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t871 = load { ptr, i64, i64 }, ptr %t870 - store { ptr, i64, i64 } { ptr @.str.2346, i64 26, i64 0 }, ptr %a873 - store { ptr, i64, i64 } %t871, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a872 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.2347, i64 76, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.fail(ptr %t868, %S.ast.Node %t869, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - br label %endif3773 -endif3773: - %t882 = load ptr, ptr %a1 - %t883 = load { ptr, i64, i64 }, ptr %a789 - %t884 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t885 = load { ptr, i64, i64 }, ptr %t884 - %t886 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t887 = load { ptr, i64, i64 }, ptr %t886 - %t888 = call i64 @finch.gen.findMethod(ptr %t882, { ptr, i64, i64 } %t883, { ptr, i64, i64 } %t885, { ptr, i64, i64 } %t887) - %t889 = icmp sge i64 %t888, 0 - br i1 %t889, label %then3774, label %endif3776 -then3774: - %t890 = load ptr, ptr %a1 - %t891 = load %S.ast.Node, ptr %a686 - %t892 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t893 = load { ptr, i64, i64 }, ptr %t892 - store { ptr, i64, i64 } { ptr @.str.2348, i64 11, i64 0 }, 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.2349, i64 1, i64 0 }, ptr %a900 - call void @finch_str_concat(ptr %a898, ptr %a899, ptr %a900) - store { ptr, i64, i64 } %t897, ptr %a901 - call void @finch_str_drop(ptr %a901) - %t902 = load { ptr, i64, i64 }, ptr %a898 - %t903 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t902, ptr %a906 - store { ptr, i64, i64 } %t904, ptr %a907 - call void @finch_str_concat(ptr %a905, ptr %a906, ptr %a907) - store { ptr, i64, i64 } %t902, ptr %a908 - call void @finch_str_drop(ptr %a908) - %t909 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t909, ptr %a911 - store { ptr, i64, i64 } { ptr @.str.2350, i64 17, i64 0 }, ptr %a912 - call void @finch_str_concat(ptr %a910, ptr %a911, ptr %a912) - store { ptr, i64, i64 } %t909, ptr %a913 - call void @finch_str_drop(ptr %a913) - %t914 = load { ptr, i64, i64 }, ptr %a910 - call void @finch.gen.fail(ptr %t890, %S.ast.Node %t891, { ptr, i64, i64 } %t914) - store { ptr, i64, i64 } %t914, ptr %a915 - call void @finch_str_drop(ptr %a915) - br label %endif3776 -endif3776: - %t916 = load ptr, ptr %a1 - %t917 = icmp eq ptr %t916, null - br i1 %t917, label %panic3777, label %ok3778 -panic3777: - call void @finch_panic(ptr @.str.2351, i64 1606, ptr @.str.2352) - unreachable -ok3778: - %t918 = getelementptr inbounds %S.gen.Gen, ptr %t916, i32 0, i32 16 - %t919 = load i64, ptr %a851 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3779, label %inrange3780 -range3779: - call void @finch_panic_index(ptr @.str.2353, i64 1606, i64 %t919, i64 %t921) - unreachable -inrange3780: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.gen.StructDef, ptr %t923, i64 %t919 - %t925 = getelementptr inbounds %S.gen.StructDef, ptr %t924, i32 0, i32 11 - %t926 = getelementptr inbounds { ptr, i64, i64 }, ptr %t925, i32 0, i32 1 - %t927 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t928 = load { ptr, i64, i64 }, ptr %t927 - store i64 -1, ptr %a929 - %t930 = load i64, ptr %t926 - %t931 = load ptr, ptr %t925 - store i64 0, ptr %a932 - br label %find.cond3781 -find.cond3781: - %t933 = load i64, ptr %a932 - %t934 = icmp slt i64 %t933, %t930 - br i1 %t934, label %find.body3782, label %find.end3785 -find.body3782: - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t931, i64 %t933 - %t936 = load { ptr, i64, i64 }, ptr %t935 - store { ptr, i64, i64 } %t936, ptr %a937 - store { ptr, i64, i64 } %t928, ptr %a938 - %t939 = call i32 @finch_str_eq(ptr %a937, ptr %a938) - %t940 = icmp ne i32 %t939, 0 - br i1 %t940, label %find.hit3783, label %find.next3784 -find.hit3783: - store i64 %t933, ptr %a929 - br label %find.end3785 -find.next3784: - %t941 = add i64 %t933, 1 - store i64 %t941, ptr %a932 - br label %find.cond3781 -find.end3785: - %t942 = load i64, ptr %a929 - %t943 = icmp sge i64 %t942, 0 - br i1 %t943, label %then3786, label %endif3788 -then3786: - %t944 = load ptr, ptr %a1 - %t945 = load %S.ast.Node, ptr %a686 - %t946 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t947 = load { ptr, i64, i64 }, ptr %t946 - store { ptr, i64, i64 } { ptr @.str.2354, i64 11, i64 0 }, ptr %a949 - store { ptr, i64, i64 } %t947, ptr %a950 - call void @finch_str_concat(ptr %a948, ptr %a949, ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a948 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.2355, i64 28, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.2356, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - call void @finch.gen.fail(ptr %t944, %S.ast.Node %t945, { ptr, i64, i64 } %t968) - store { ptr, i64, i64 } %t968, ptr %a969 - call void @finch_str_drop(ptr %a969) - br label %endif3788 -endif3788: - br label %endif3761 -else3760: - %t970 = load ptr, ptr %a1 - %t971 = load ptr, ptr %a1 - %t972 = icmp eq ptr %t971, null - br i1 %t972, label %panic3789, label %ok3790 -panic3789: - call void @finch_panic(ptr @.str.2357, i64 1610, ptr @.str.2358) - unreachable -ok3790: - %t973 = getelementptr inbounds %S.gen.Gen, ptr %t971, i32 0, i32 14 - %t974 = load { ptr, i64, i64 }, ptr %t973 - %t975 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t976 = load { ptr, i64, i64 }, ptr %t975 - %t977 = call i64 @finch.gen.findFn(ptr %t970, { ptr, i64, i64 } %t974, { ptr, i64, i64 } %t976) - %t978 = icmp sge i64 %t977, 0 - br i1 %t978, label %then3791, label %endif3793 -then3791: - %t979 = load ptr, ptr %a1 - %t980 = load %S.ast.Node, ptr %a686 - %t981 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t982 = load { ptr, i64, i64 }, ptr %t981 - store { ptr, i64, i64 } { ptr @.str.2359, i64 10, i64 0 }, ptr %a984 - store { ptr, i64, i64 } %t982, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - %t986 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } %t986, ptr %a988 - store { ptr, i64, i64 } { ptr @.str.2360, i64 18, i64 0 }, ptr %a989 - call void @finch_str_concat(ptr %a987, ptr %a988, ptr %a989) - store { ptr, i64, i64 } %t986, ptr %a990 - call void @finch_str_drop(ptr %a990) - %t991 = load { ptr, i64, i64 }, ptr %a987 - call void @finch.gen.fail(ptr %t979, %S.ast.Node %t980, { ptr, i64, i64 } %t991) - store { ptr, i64, i64 } %t991, ptr %a992 - call void @finch_str_drop(ptr %a992) - br label %endif3793 -endif3793: - %t993 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t994) - br i1 %t995, label %then3794, label %endif3796 -then3794: - %t996 = load ptr, ptr %a1 - %t997 = load %S.ast.Node, ptr %a686 - %t998 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t999 = load { ptr, i64, i64 }, ptr %t998 - store { ptr, i64, i64 } { ptr @.str.2361, i64 1, i64 0 }, ptr %a1001 - store { ptr, i64, i64 } %t999, ptr %a1002 - call void @finch_str_concat(ptr %a1000, ptr %a1001, ptr %a1002) - %t1003 = load { ptr, i64, i64 }, ptr %a1000 - store { ptr, i64, i64 } %t1003, ptr %a1005 - store { ptr, i64, i64 } { ptr @.str.2362, i64 43, i64 0 }, ptr %a1006 - call void @finch_str_concat(ptr %a1004, ptr %a1005, ptr %a1006) - store { ptr, i64, i64 } %t1003, ptr %a1007 - call void @finch_str_drop(ptr %a1007) - %t1008 = load { ptr, i64, i64 }, ptr %a1004 - call void @finch.gen.fail(ptr %t996, %S.ast.Node %t997, { ptr, i64, i64 } %t1008) - store { ptr, i64, i64 } %t1008, ptr %a1009 - call void @finch_str_drop(ptr %a1009) - br label %endif3796 -endif3796: - br label %endif3761 -endif3761: - br label %endif3755 -endif3755: - %t1010 = load ptr, ptr %a1 - %t1011 = icmp eq ptr %t1010, null - br i1 %t1011, label %panic3797, label %ok3798 -panic3797: - call void @finch_panic(ptr @.str.2363, i64 1617, ptr @.str.2364) - unreachable -ok3798: - %t1012 = getelementptr inbounds %S.gen.Gen, ptr %t1010, i32 0, i32 14 - %t1013 = load { ptr, i64, i64 }, ptr %t1012 - store { ptr, i64, i64 } %t1013, ptr %a1014 - call void @finch_str_copy(ptr %a1015, ptr %a1014) - %t1016 = load { ptr, i64, i64 }, ptr %a1015 - %t1017 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t1016, 0 - %t1018 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1019 = load { ptr, i64, i64 }, ptr %t1018 - store { ptr, i64, i64 } %t1019, ptr %a1020 - call void @finch_str_copy(ptr %a1021, ptr %a1020) - %t1022 = load { ptr, i64, i64 }, ptr %a1021 - %t1023 = insertvalue %S.gen.FnSig %t1017, { ptr, i64, i64 } %t1022, 1 - %t1024 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1025 = load { ptr, i64, i64 }, ptr %t1024 - store { ptr, i64, i64 } %t1025, ptr %a1026 - call void @finch_str_copy(ptr %a1027, ptr %a1026) - %t1028 = load { ptr, i64, i64 }, ptr %a1027 - %t1029 = insertvalue %S.gen.FnSig %t1023, { ptr, i64, i64 } %t1028, 2 - %t1030 = load { ptr, i64, i64 }, ptr %a789 - 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.FnSig %t1029, { ptr, i64, i64 } %t1033, 3 - %t1035 = load i1, ptr %a790 - %t1036 = insertvalue %S.gen.FnSig %t1034, i1 %t1035, 4 - %t1037 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1038 = load i1, ptr %t1037 - %t1039 = insertvalue %S.gen.FnSig %t1036, i1 %t1038, 5 - %t1040 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 7 - %t1041 = load i1, ptr %t1040 - %t1042 = insertvalue %S.gen.FnSig %t1039, i1 %t1041, 9 - %t1043 = load i64, ptr %a629 - %t1044 = insertvalue %S.gen.FnSig %t1042, i64 %t1043, 16 - %t1045 = load i64, ptr %a663 - %t1046 = insertvalue %S.gen.FnSig %t1044, i64 %t1045, 17 - store %S.gen.FnSig %t1046, ptr %a1047 - %t1048 = load ptr, ptr %a1 - %t1049 = icmp eq ptr %t1048, null - br i1 %t1049, label %panic3799, label %ok3800 -panic3799: - call void @finch_panic(ptr @.str.2366, i64 1618, ptr @.str.2367) - unreachable -ok3800: - %t1050 = getelementptr inbounds %S.gen.Gen, ptr %t1048, i32 0, i32 14 - %t1051 = load { ptr, i64, i64 }, ptr %t1050 - %t1052 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1051) - store { ptr, i64, i64 } { ptr @.str.2365, i64 7, i64 0 }, ptr %a1054 - store { ptr, i64, i64 } %t1052, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - store { ptr, i64, i64 } %t1057, ptr %a1059 - store { ptr, i64, i64 } { ptr @.str.2368, i64 1, i64 0 }, ptr %a1060 - call void @finch_str_concat(ptr %a1058, ptr %a1059, ptr %a1060) - store { ptr, i64, i64 } %t1057, ptr %a1061 - call void @finch_str_drop(ptr %a1061) - %t1062 = load { ptr, i64, i64 }, ptr %a1058 - %t1063 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - store { ptr, i64, i64 } %t1062, ptr %a1066 - store { ptr, i64, i64 } %t1064, ptr %a1067 - call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067) - store { ptr, i64, i64 } %t1062, ptr %a1068 - call void @finch_str_drop(ptr %a1068) - %t1069 = load { ptr, i64, i64 }, ptr %a1065 - %t1070 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1069, ptr %t1070 - store { ptr, i64, i64 } %t1071, ptr %a1072 - call void @finch_str_drop(ptr %a1072) - %t1073 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1074 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1073, i32 0, i32 1 - %t1075 = load i64, ptr %t1074 - %t1076 = icmp sgt i64 %t1075, 0 - br i1 %t1076, label %then3801, label %endif3803 -then3801: - %t1077 = load ptr, ptr %a1 - %t1078 = icmp eq ptr %t1077, null - br i1 %t1078, label %panic3804, label %ok3805 -panic3804: - call void @finch_panic(ptr @.str.2370, i64 1620, ptr @.str.2371) - unreachable -ok3805: - %t1079 = getelementptr inbounds %S.gen.Gen, ptr %t1077, i32 0, i32 14 - %t1080 = load { ptr, i64, i64 }, ptr %t1079 - %t1081 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1080) - store { ptr, i64, i64 } { ptr @.str.2369, i64 7, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - store { ptr, i64, i64 } %t1081, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1086, ptr %a1088 - store { ptr, i64, i64 } { ptr @.str.2372, i64 1, i64 0 }, ptr %a1089 - call void @finch_str_concat(ptr %a1087, ptr %a1088, ptr %a1089) - store { ptr, i64, i64 } %t1086, ptr %a1090 - call void @finch_str_drop(ptr %a1090) - %t1091 = load { ptr, i64, i64 }, ptr %a1087 - %t1092 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1093 = load { ptr, i64, i64 }, ptr %t1092 - store { ptr, i64, i64 } %t1091, ptr %a1095 - store { ptr, i64, i64 } %t1093, ptr %a1096 - call void @finch_str_concat(ptr %a1094, ptr %a1095, ptr %a1096) - store { ptr, i64, i64 } %t1091, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load { ptr, i64, i64 }, ptr %a1094 - store { ptr, i64, i64 } %t1098, ptr %a1100 - store { ptr, i64, i64 } { ptr @.str.2373, i64 1, i64 0 }, ptr %a1101 - call void @finch_str_concat(ptr %a1099, ptr %a1100, ptr %a1101) - store { ptr, i64, i64 } %t1098, ptr %a1102 - call void @finch_str_drop(ptr %a1102) - %t1103 = load { ptr, i64, i64 }, ptr %a1099 - %t1104 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1105 = load { ptr, i64, i64 }, ptr %t1104 - store { ptr, i64, i64 } %t1103, ptr %a1107 - store { ptr, i64, i64 } %t1105, ptr %a1108 - call void @finch_str_concat(ptr %a1106, ptr %a1107, ptr %a1108) - store { ptr, i64, i64 } %t1103, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - %t1110 = load { ptr, i64, i64 }, ptr %a1106 - %t1111 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1112 = load { ptr, i64, i64 }, ptr %t1111 - store { ptr, i64, i64 } %t1110, ptr %t1111 - store { ptr, i64, i64 } %t1112, ptr %a1113 - call void @finch_str_drop(ptr %a1113) - br label %endif3803 -endif3803: - %t1114 = load ptr, ptr %a1 - %t1115 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 5 - %t1116 = load %S.ast.Type, ptr %t1115 - %t1117 = load %S.ast.Node, ptr %a686 - %t1118 = call %S.ast.Type @finch.gen.resolve(ptr %t1114, %S.ast.Type %t1116, %S.ast.Node %t1117) - %t1119 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 12 - %t1120 = load %S.ast.Type, ptr %t1119 - store %S.ast.Type %t1118, ptr %t1119 - store %S.ast.Type %t1120, ptr %a1121 - call void @finch.drop.S_ast_Type(ptr %a1121) - %t1122 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1122, i32 0, i32 1 - %t1124 = load i64, ptr %t1123 - %t1125 = sub i64 %t1124, 1 - store i64 0, ptr %a1126 - br label %for.cond3806 -for.cond3806: - %t1127 = load i64, ptr %a1126 - %t1128 = icmp slt i64 %t1127, %t1125 - br i1 %t1128, label %for.body3807, label %for.end3809 -for.body3807: - %t1129 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1130 = load i64, ptr %a1126 - %t1131 = load { ptr, i64, i64 }, ptr %t1129 - %t1132 = extractvalue { ptr, i64, i64 } %t1131, 1 - %t1133 = icmp uge i64 %t1130, %t1132 - br i1 %t1133, label %range3810, label %inrange3811 -range3810: - call void @finch_panic_index(ptr @.str.2374, i64 1624, i64 %t1130, i64 %t1132) - unreachable -inrange3811: - %t1134 = extractvalue { ptr, i64, i64 } %t1131, 0 - %t1135 = getelementptr inbounds %S.ast.Node, ptr %t1134, i64 %t1130 - %t1136 = getelementptr inbounds %S.ast.Node, ptr %t1135, i32 0, i32 1 - %t1137 = load { ptr, i64, i64 }, ptr %t1136 - store { ptr, i64, i64 } %t1137, ptr %a1138 - store { ptr, i64, i64 } { ptr @.str.2375, i64 4, i64 0 }, ptr %a1139 - %t1140 = call i32 @finch_str_eq(ptr %a1138, ptr %a1139) - %t1141 = icmp ne i32 %t1140, 0 - br label %logic.from3812 -logic.from3812: - br i1 %t1141, label %logic.rhs3813, label %logic.end3814 -logic.rhs3813: - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1142, i32 0, i32 1 - %t1144 = load i64, ptr %t1143 - %t1145 = icmp sgt i64 %t1144, 0 - br label %logic.rend3815 -logic.rend3815: - br label %logic.end3814 -logic.end3814: - %t1146 = phi i1 [ false, %logic.from3812 ], [ %t1145, %logic.rend3815 ] - br i1 %t1146, label %then3816, label %endif3818 -then3816: - %t1147 = load ptr, ptr %a1 - %t1148 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1149 = load i64, ptr %a1126 - %t1150 = load { ptr, i64, i64 }, ptr %t1148 - %t1151 = extractvalue { ptr, i64, i64 } %t1150, 1 - %t1152 = icmp uge i64 %t1149, %t1151 - br i1 %t1152, label %range3819, label %inrange3820 -range3819: - call void @finch_panic_index(ptr @.str.2376, i64 1625, i64 %t1149, i64 %t1151) - unreachable -inrange3820: - %t1153 = extractvalue { ptr, i64, i64 } %t1150, 0 - %t1154 = getelementptr inbounds %S.ast.Node, ptr %t1153, i64 %t1149 - %t1155 = load %S.ast.Node, ptr %t1154 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1157 = load { ptr, i64, i64 }, ptr %t1156 - store { ptr, i64, i64 } { ptr @.str.2377, i64 22, i64 0 }, ptr %a1159 - store { ptr, i64, i64 } %t1157, ptr %a1160 - call void @finch_str_concat(ptr %a1158, ptr %a1159, ptr %a1160) - %t1161 = load { ptr, i64, i64 }, ptr %a1158 - store { ptr, i64, i64 } %t1161, ptr %a1163 - store { ptr, i64, i64 } { ptr @.str.2378, i64 24, i64 0 }, ptr %a1164 - call void @finch_str_concat(ptr %a1162, ptr %a1163, ptr %a1164) - store { ptr, i64, i64 } %t1161, ptr %a1165 - call void @finch_str_drop(ptr %a1165) - %t1166 = load { ptr, i64, i64 }, ptr %a1162 - call void @finch.gen.fail(ptr %t1147, %S.ast.Node %t1155, { ptr, i64, i64 } %t1166) - store { ptr, i64, i64 } %t1166, ptr %a1167 - call void @finch_str_drop(ptr %a1167) - br label %endif3818 -endif3818: - %t1168 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 13 - %t1169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1168, i32 0, i32 1 - %t1170 = load ptr, ptr %a1 - %t1171 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1172 = load i64, ptr %a1126 - %t1173 = load { ptr, i64, i64 }, ptr %t1171 - %t1174 = extractvalue { ptr, i64, i64 } %t1173, 1 - %t1175 = icmp uge i64 %t1172, %t1174 - br i1 %t1175, label %range3821, label %inrange3822 -range3821: - call void @finch_panic_index(ptr @.str.2379, i64 1627, i64 %t1172, i64 %t1174) - unreachable -inrange3822: - %t1176 = extractvalue { ptr, i64, i64 } %t1173, 0 - %t1177 = getelementptr inbounds %S.ast.Node, ptr %t1176, i64 %t1172 - %t1178 = getelementptr inbounds %S.ast.Node, ptr %t1177, i32 0, i32 5 - %t1179 = load %S.ast.Type, ptr %t1178 - %t1180 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1181 = load i64, ptr %a1126 - %t1182 = load { ptr, i64, i64 }, ptr %t1180 - %t1183 = extractvalue { ptr, i64, i64 } %t1182, 1 - %t1184 = icmp uge i64 %t1181, %t1183 - br i1 %t1184, label %range3823, label %inrange3824 -range3823: - call void @finch_panic_index(ptr @.str.2380, i64 1627, i64 %t1181, i64 %t1183) - unreachable -inrange3824: - %t1185 = extractvalue { ptr, i64, i64 } %t1182, 0 - %t1186 = getelementptr inbounds %S.ast.Node, ptr %t1185, i64 %t1181 - %t1187 = load %S.ast.Node, ptr %t1186 - %t1188 = call %S.ast.Type @finch.gen.resolve(ptr %t1170, %S.ast.Type %t1179, %S.ast.Node %t1187) - %t1189 = load i64, ptr %t1169 - %t1190 = add i64 %t1189, 1 - call void @finch_arr_reserve(ptr %t1168, i64 %t1190, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1191 = load ptr, ptr %t1168 - %t1192 = getelementptr inbounds %S.ast.Type, ptr %t1191, i64 %t1189 - store %S.ast.Type %t1188, ptr %t1192 - store i64 %t1190, ptr %t1169 - %t1193 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 14 - %t1194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1193, i32 0, i32 1 - %t1195 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1196 = load i64, ptr %a1126 - %t1197 = load { ptr, i64, i64 }, ptr %t1195 - %t1198 = extractvalue { ptr, i64, i64 } %t1197, 1 - %t1199 = icmp uge i64 %t1196, %t1198 - br i1 %t1199, label %range3825, label %inrange3826 -range3825: - call void @finch_panic_index(ptr @.str.2381, i64 1628, i64 %t1196, i64 %t1198) - unreachable -inrange3826: - %t1200 = extractvalue { ptr, i64, i64 } %t1197, 0 - %t1201 = getelementptr inbounds %S.ast.Node, ptr %t1200, i64 %t1196 - %t1202 = getelementptr inbounds %S.ast.Node, ptr %t1201, i32 0, i32 1 - %t1203 = load { ptr, i64, i64 }, ptr %t1202 - store { ptr, i64, i64 } %t1203, ptr %a1204 - call void @finch_str_copy(ptr %a1205, ptr %a1204) - %t1206 = load { ptr, i64, i64 }, ptr %a1205 - %t1207 = load i64, ptr %t1194 - %t1208 = add i64 %t1207, 1 - call void @finch_arr_reserve(ptr %t1193, i64 %t1208, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1209 = load ptr, ptr %t1193 - %t1210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1209, i64 %t1207 - store { ptr, i64, i64 } %t1206, ptr %t1210 - store i64 %t1208, ptr %t1194 - br label %for.step3808 -for.step3808: - %t1211 = load i64, ptr %a1126 - %t1212 = add i64 %t1211, 1 - store i64 %t1212, ptr %a1126 - br label %for.cond3806 -for.end3809: - %t1213 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1214 = load i1, ptr %t1213 - br i1 %t1214, label %then3827, label %endif3829 -then3827: - %t1215 = load ptr, ptr %a1 - %t1216 = load %S.ast.Node, ptr %a686 - %t1217 = load %S.gen.FnSig, ptr %a1047 - call void @finch.gen.checkExport(ptr %t1215, %S.ast.Node %t1216, %S.gen.FnSig %t1217) - br label %endif3829 -endif3829: - %t1218 = load ptr, ptr %a1 - %t1219 = icmp eq ptr %t1218, null - br i1 %t1219, label %panic3830, label %ok3831 -panic3830: - call void @finch_panic(ptr @.str.2382, i64 1633, ptr @.str.2383) - unreachable -ok3831: - %t1220 = getelementptr inbounds %S.gen.Gen, ptr %t1218, i32 0, i32 15 - %t1221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1220, i32 0, i32 1 - %t1222 = load %S.gen.FnSig, ptr %a1047 - store %S.gen.FnSig %t1222, ptr %a1223 - call void @finch.copy.S_gen_FnSig(ptr %a1224, ptr %a1223) - %t1225 = load %S.gen.FnSig, ptr %a1224 - %t1226 = load i64, ptr %t1221 - %t1227 = add i64 %t1226, 1 - call void @finch_arr_reserve(ptr %t1220, i64 %t1227, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t1228 = load ptr, ptr %t1220 - %t1229 = getelementptr inbounds %S.gen.FnSig, ptr %t1228, i64 %t1226 - store %S.gen.FnSig %t1225, ptr %t1229 - store i64 %t1227, ptr %t1221 - call void @finch.drop.S_gen_FnSig(ptr %a1047) - call void @finch_str_drop(ptr %a789) - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -for.step3716: - %t1230 = load i64, ptr %a663 - %t1231 = add i64 %t1230, 1 - store i64 %t1231, ptr %a663 - br label %for.cond3714 -for.end3717: - br label %for.step3702 -for.step3702: - %t1232 = load i64, ptr %a629 - %t1233 = add i64 %t1232, 1 - store i64 %t1233, ptr %a629 - br label %for.cond3700 -for.end3703: - store i1 true, ptr %a1234 - br label %while.cond3832 -while.cond3832: - %t1235 = load i1, ptr %a1234 - br i1 %t1235, label %while.body3833, label %while.end3834 -while.body3833: - store i1 false, ptr %a1234 - %t1236 = load ptr, ptr %a1 - %t1237 = icmp eq ptr %t1236, null - br i1 %t1237, label %panic3835, label %ok3836 -panic3835: - call void @finch_panic(ptr @.str.2384, i64 1641, ptr @.str.2385) - unreachable -ok3836: - %t1238 = getelementptr inbounds %S.gen.Gen, ptr %t1236, i32 0, i32 15 - %t1239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1238, i32 0, i32 1 - %t1240 = load i64, ptr %t1239 - store i64 0, ptr %a1241 - br label %for.cond3837 -for.cond3837: - %t1242 = load i64, ptr %a1241 - %t1243 = icmp slt i64 %t1242, %t1240 - br i1 %t1243, label %for.body3838, label %for.end3840 -for.body3838: - %t1244 = load ptr, ptr %a1 - %t1245 = icmp eq ptr %t1244, null - br i1 %t1245, label %panic3841, label %ok3842 -panic3841: - call void @finch_panic(ptr @.str.2386, i64 1642, ptr @.str.2387) - unreachable -ok3842: - %t1246 = getelementptr inbounds %S.gen.Gen, ptr %t1244, i32 0, i32 15 - %t1247 = load i64, ptr %a1241 - %t1248 = load { ptr, i64, i64 }, ptr %t1246 - %t1249 = extractvalue { ptr, i64, i64 } %t1248, 1 - %t1250 = icmp uge i64 %t1247, %t1249 - br i1 %t1250, label %range3843, label %inrange3844 -range3843: - call void @finch_panic_index(ptr @.str.2388, i64 1642, i64 %t1247, i64 %t1249) - unreachable -inrange3844: - %t1251 = extractvalue { ptr, i64, i64 } %t1248, 0 - %t1252 = getelementptr inbounds %S.gen.FnSig, ptr %t1251, i64 %t1247 - %t1253 = getelementptr inbounds %S.gen.FnSig, ptr %t1252, i32 0, i32 2 - %t1254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1253, i32 0, i32 1 - %t1255 = load i64, ptr %t1254 - %t1256 = icmp sgt i64 %t1255, 0 - br label %logic.from3845 -logic.from3845: - br i1 %t1256, label %logic.rhs3846, label %logic.end3847 -logic.rhs3846: - %t1257 = load ptr, ptr %a1 - %t1258 = icmp eq ptr %t1257, null - br i1 %t1258, label %panic3848, label %ok3849 -panic3848: - call void @finch_panic(ptr @.str.2389, i64 1642, ptr @.str.2390) - unreachable -ok3849: - %t1259 = getelementptr inbounds %S.gen.Gen, ptr %t1257, i32 0, i32 15 - %t1260 = load i64, ptr %a1241 - %t1261 = load { ptr, i64, i64 }, ptr %t1259 - %t1262 = extractvalue { ptr, i64, i64 } %t1261, 1 - %t1263 = icmp uge i64 %t1260, %t1262 - br i1 %t1263, label %range3850, label %inrange3851 -range3850: - call void @finch_panic_index(ptr @.str.2391, i64 1642, i64 %t1260, i64 %t1262) - unreachable -inrange3851: - %t1264 = extractvalue { ptr, i64, i64 } %t1261, 0 - %t1265 = getelementptr inbounds %S.gen.FnSig, ptr %t1264, i64 %t1260 - %t1266 = getelementptr inbounds %S.gen.FnSig, ptr %t1265, i32 0, i32 10 - %t1267 = load i1, ptr %t1266 - %t1268 = xor i1 %t1267, true - br label %logic.rend3852 -logic.rend3852: - br label %logic.end3847 -logic.end3847: - %t1269 = phi i1 [ false, %logic.from3845 ], [ %t1268, %logic.rend3852 ] - br i1 %t1269, label %then3853, label %endif3855 -then3853: - %t1270 = load ptr, ptr %a1 - %t1271 = icmp eq ptr %t1270, null - br i1 %t1271, label %panic3856, label %ok3857 -panic3856: - call void @finch_panic(ptr @.str.2392, i64 1643, ptr @.str.2393) - unreachable -ok3857: - %t1272 = getelementptr inbounds %S.gen.Gen, ptr %t1270, i32 0, i32 0 - %t1273 = load ptr, ptr %a1 - %t1274 = icmp eq ptr %t1273, null - br i1 %t1274, label %panic3858, label %ok3859 -panic3858: - call void @finch_panic(ptr @.str.2394, i64 1643, ptr @.str.2395) - unreachable -ok3859: - %t1275 = getelementptr inbounds %S.gen.Gen, ptr %t1273, i32 0, i32 15 - %t1276 = load i64, ptr %a1241 - %t1277 = load { ptr, i64, i64 }, ptr %t1275 - %t1278 = extractvalue { ptr, i64, i64 } %t1277, 1 - %t1279 = icmp uge i64 %t1276, %t1278 - br i1 %t1279, label %range3860, label %inrange3861 -range3860: - call void @finch_panic_index(ptr @.str.2396, i64 1643, i64 %t1276, i64 %t1278) - unreachable -inrange3861: - %t1280 = extractvalue { ptr, i64, i64 } %t1277, 0 - %t1281 = getelementptr inbounds %S.gen.FnSig, ptr %t1280, i64 %t1276 - %t1282 = getelementptr inbounds %S.gen.FnSig, ptr %t1281, i32 0, i32 16 - %t1283 = load i64, ptr %t1282 - %t1284 = load { ptr, i64, i64 }, ptr %t1272 - %t1285 = extractvalue { ptr, i64, i64 } %t1284, 1 - %t1286 = icmp uge i64 %t1283, %t1285 - br i1 %t1286, label %range3862, label %inrange3863 -range3862: - call void @finch_panic_index(ptr @.str.2397, i64 1643, i64 %t1283, i64 %t1285) - unreachable -inrange3863: - %t1287 = extractvalue { ptr, i64, i64 } %t1284, 0 - %t1288 = getelementptr inbounds %S.ast.Program, ptr %t1287, i64 %t1283 - %t1289 = getelementptr inbounds %S.ast.Program, ptr %t1288, i32 0, i32 8 - %t1290 = load ptr, ptr %a1 - %t1291 = icmp eq ptr %t1290, null - br i1 %t1291, label %panic3864, label %ok3865 -panic3864: - call void @finch_panic(ptr @.str.2398, i64 1643, ptr @.str.2399) - unreachable -ok3865: - %t1292 = getelementptr inbounds %S.gen.Gen, ptr %t1290, i32 0, i32 15 - %t1293 = load i64, ptr %a1241 - %t1294 = load { ptr, i64, i64 }, ptr %t1292 - %t1295 = extractvalue { ptr, i64, i64 } %t1294, 1 - %t1296 = icmp uge i64 %t1293, %t1295 - br i1 %t1296, label %range3866, label %inrange3867 -range3866: - call void @finch_panic_index(ptr @.str.2400, i64 1643, i64 %t1293, i64 %t1295) - unreachable -inrange3867: - %t1297 = extractvalue { ptr, i64, i64 } %t1294, 0 - %t1298 = getelementptr inbounds %S.gen.FnSig, ptr %t1297, i64 %t1293 - %t1299 = getelementptr inbounds %S.gen.FnSig, ptr %t1298, i32 0, i32 17 - %t1300 = load i64, ptr %t1299 - %t1301 = load { ptr, i64, i64 }, ptr %t1289 - %t1302 = extractvalue { ptr, i64, i64 } %t1301, 1 - %t1303 = icmp uge i64 %t1300, %t1302 - br i1 %t1303, label %range3868, label %inrange3869 -range3868: - call void @finch_panic_index(ptr @.str.2401, i64 1643, i64 %t1300, i64 %t1302) - unreachable -inrange3869: - %t1304 = extractvalue { ptr, i64, i64 } %t1301, 0 - %t1305 = getelementptr inbounds %S.ast.Node, ptr %t1304, i64 %t1300 - %t1306 = load %S.ast.Node, ptr %t1305 - store %S.ast.Node %t1306, ptr %a1307 - call void @finch.copy.S_ast_Node(ptr %a1308, ptr %a1307) - %t1309 = load %S.ast.Node, ptr %a1308 - store %S.ast.Node %t1309, ptr %a1310 - %t1311 = load ptr, ptr %a1 - %t1312 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1313 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1313, i32 0, i32 1 - %t1315 = load i64, ptr %t1314 - %t1316 = sub i64 %t1315, 1 - %t1317 = load { ptr, i64, i64 }, ptr %t1312 - %t1318 = extractvalue { ptr, i64, i64 } %t1317, 1 - %t1319 = icmp uge i64 %t1316, %t1318 - br i1 %t1319, label %range3870, label %inrange3871 -range3870: - call void @finch_panic_index(ptr @.str.2403, i64 1644, i64 %t1316, i64 %t1318) - unreachable -inrange3871: - %t1320 = extractvalue { ptr, i64, i64 } %t1317, 0 - %t1321 = getelementptr inbounds %S.ast.Node, ptr %t1320, i64 %t1316 - %t1322 = load %S.ast.Node, ptr %t1321 - %t1323 = call i1 @finch.gen.mutates(ptr %t1311, { ptr, i64, i64 } { ptr @.str.2402, i64 4, i64 0 }, %S.ast.Node %t1322) - br i1 %t1323, label %then3872, label %endif3874 -then3872: - %t1324 = load ptr, ptr %a1 - %t1325 = icmp eq ptr %t1324, null - br i1 %t1325, label %panic3875, label %ok3876 -panic3875: - call void @finch_panic(ptr @.str.2404, i64 1645, ptr @.str.2405) - unreachable -ok3876: - %t1326 = getelementptr inbounds %S.gen.Gen, ptr %t1324, i32 0, i32 15 - %t1327 = load i64, ptr %a1241 - %t1328 = load { ptr, i64, i64 }, ptr %t1326 - %t1329 = extractvalue { ptr, i64, i64 } %t1328, 1 - %t1330 = icmp uge i64 %t1327, %t1329 - br i1 %t1330, label %range3877, label %inrange3878 -range3877: - call void @finch_panic_index(ptr @.str.2406, i64 1645, i64 %t1327, i64 %t1329) - unreachable -inrange3878: - %t1331 = extractvalue { ptr, i64, i64 } %t1328, 0 - %t1332 = getelementptr inbounds %S.gen.FnSig, ptr %t1331, i64 %t1327 - %t1333 = getelementptr inbounds %S.gen.FnSig, ptr %t1332, i32 0, i32 10 - store i1 true, ptr %t1333 - %t1334 = load ptr, ptr %a1 - %t1335 = icmp eq ptr %t1334, null - br i1 %t1335, label %panic3879, label %ok3880 -panic3879: - call void @finch_panic(ptr @.str.2407, i64 1646, ptr @.str.2408) - unreachable -ok3880: - %t1336 = getelementptr inbounds %S.gen.Gen, ptr %t1334, i32 0, i32 24 - %t1337 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1336, i32 0, i32 1 - %t1338 = load ptr, ptr %a1 - %t1339 = icmp eq ptr %t1338, null - br i1 %t1339, label %panic3881, label %ok3882 -panic3881: - call void @finch_panic(ptr @.str.2409, i64 1646, ptr @.str.2410) - unreachable -ok3882: - %t1340 = getelementptr inbounds %S.gen.Gen, ptr %t1338, i32 0, i32 15 - %t1341 = load i64, ptr %a1241 - %t1342 = load { ptr, i64, i64 }, ptr %t1340 - %t1343 = extractvalue { ptr, i64, i64 } %t1342, 1 - %t1344 = icmp uge i64 %t1341, %t1343 - br i1 %t1344, label %range3883, label %inrange3884 -range3883: - call void @finch_panic_index(ptr @.str.2411, i64 1646, i64 %t1341, i64 %t1343) - unreachable -inrange3884: - %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 1 - %t1348 = load { ptr, i64, i64 }, ptr %t1347 - store { ptr, i64, i64 } %t1348, ptr %a1349 - call void @finch_str_copy(ptr %a1350, ptr %a1349) - %t1351 = load { ptr, i64, i64 }, ptr %a1350 - %t1352 = load i64, ptr %t1337 - %t1353 = add i64 %t1352, 1 - call void @finch_arr_reserve(ptr %t1336, i64 %t1353, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1354 = load ptr, ptr %t1336 - %t1355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1354, i64 %t1352 - store { ptr, i64, i64 } %t1351, ptr %t1355 - store i64 %t1353, ptr %t1337 - store i1 true, ptr %a1234 - br label %endif3874 -endif3874: - call void @finch.drop.S_ast_Node(ptr %a1310) - br label %endif3855 -endif3855: - br label %for.step3839 -for.step3839: - %t1356 = load i64, ptr %a1241 - %t1357 = add i64 %t1356, 1 - store i64 %t1357, ptr %a1241 - br label %for.cond3837 -for.end3840: - %t1358 = load ptr, ptr %a1 - %t1359 = icmp eq ptr %t1358, null - br i1 %t1359, label %panic3885, label %ok3886 -panic3885: - call void @finch_panic(ptr @.str.2412, i64 1651, ptr @.str.2413) - unreachable -ok3886: - %t1360 = getelementptr inbounds %S.gen.Gen, ptr %t1358, i32 0, i32 17 - %t1361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1360, i32 0, i32 1 - %t1362 = load i64, ptr %t1361 - store i64 0, ptr %a1363 - br label %for.cond3887 -for.cond3887: - %t1364 = load i64, ptr %a1363 - %t1365 = icmp slt i64 %t1364, %t1362 - br i1 %t1365, label %for.body3888, label %for.end3890 -for.body3888: - %t1366 = load ptr, ptr %a1 - %t1367 = icmp eq ptr %t1366, null - br i1 %t1367, label %panic3891, label %ok3892 -panic3891: - call void @finch_panic(ptr @.str.2414, i64 1652, ptr @.str.2415) - unreachable -ok3892: - %t1368 = getelementptr inbounds %S.gen.Gen, ptr %t1366, i32 0, i32 17 - %t1369 = load i64, ptr %a1363 - %t1370 = load { ptr, i64, i64 }, ptr %t1368 - %t1371 = extractvalue { ptr, i64, i64 } %t1370, 1 - %t1372 = icmp uge i64 %t1369, %t1371 - br i1 %t1372, label %range3893, label %inrange3894 -range3893: - call void @finch_panic_index(ptr @.str.2416, i64 1652, i64 %t1369, i64 %t1371) - unreachable -inrange3894: - %t1373 = extractvalue { ptr, i64, i64 } %t1370, 0 - %t1374 = getelementptr inbounds %S.gen.Template, ptr %t1373, i64 %t1369 - %t1375 = load %S.gen.Template, ptr %t1374 - store %S.gen.Template %t1375, ptr %a1376 - call void @finch.copy.S_gen_Template(ptr %a1377, ptr %a1376) - %t1378 = load %S.gen.Template, ptr %a1377 - store %S.gen.Template %t1378, ptr %a1379 - %t1380 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 2 - %t1381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1380, i32 0, i32 1 - %t1382 = load i64, ptr %t1381 - %t1383 = icmp sgt i64 %t1382, 0 - br label %logic.from3895 -logic.from3895: - br i1 %t1383, label %logic.rhs3896, label %logic.end3897 -logic.rhs3896: - %t1384 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 7 - %t1385 = load i1, ptr %t1384 - %t1386 = xor i1 %t1385, true - br label %logic.rend3898 -logic.rend3898: - br label %logic.end3897 -logic.end3897: - %t1387 = phi i1 [ false, %logic.from3895 ], [ %t1386, %logic.rend3898 ] - br i1 %t1387, label %then3899, label %endif3901 -then3899: - %t1388 = load ptr, ptr %a1 - %t1389 = icmp eq ptr %t1388, null - br i1 %t1389, label %panic3902, label %ok3903 -panic3902: - call void @finch_panic(ptr @.str.2417, i64 1654, ptr @.str.2418) - unreachable -ok3903: - %t1390 = getelementptr inbounds %S.gen.Gen, ptr %t1388, i32 0, i32 0 - %t1391 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 4 - %t1392 = load i64, ptr %t1391 - %t1393 = load { ptr, i64, i64 }, ptr %t1390 - %t1394 = extractvalue { ptr, i64, i64 } %t1393, 1 - %t1395 = icmp uge i64 %t1392, %t1394 - br i1 %t1395, label %range3904, label %inrange3905 -range3904: - call void @finch_panic_index(ptr @.str.2419, i64 1654, i64 %t1392, i64 %t1394) - unreachable -inrange3905: - %t1396 = extractvalue { ptr, i64, i64 } %t1393, 0 - %t1397 = getelementptr inbounds %S.ast.Program, ptr %t1396, i64 %t1392 - %t1398 = getelementptr inbounds %S.ast.Program, ptr %t1397, i32 0, i32 8 - %t1399 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 5 - %t1400 = load i64, ptr %t1399 - %t1401 = load { ptr, i64, i64 }, ptr %t1398 - %t1402 = extractvalue { ptr, i64, i64 } %t1401, 1 - %t1403 = icmp uge i64 %t1400, %t1402 - br i1 %t1403, label %range3906, label %inrange3907 -range3906: - call void @finch_panic_index(ptr @.str.2420, i64 1654, i64 %t1400, i64 %t1402) - unreachable -inrange3907: - %t1404 = extractvalue { ptr, i64, i64 } %t1401, 0 - %t1405 = getelementptr inbounds %S.ast.Node, ptr %t1404, i64 %t1400 - %t1406 = load %S.ast.Node, ptr %t1405 - store %S.ast.Node %t1406, ptr %a1407 - call void @finch.copy.S_ast_Node(ptr %a1408, ptr %a1407) - %t1409 = load %S.ast.Node, ptr %a1408 - store %S.ast.Node %t1409, ptr %a1410 - %t1411 = load ptr, ptr %a1 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1413 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1413, i32 0, i32 1 - %t1415 = load i64, ptr %t1414 - %t1416 = sub i64 %t1415, 1 - %t1417 = load { ptr, i64, i64 }, ptr %t1412 - %t1418 = extractvalue { ptr, i64, i64 } %t1417, 1 - %t1419 = icmp uge i64 %t1416, %t1418 - br i1 %t1419, label %range3908, label %inrange3909 -range3908: - call void @finch_panic_index(ptr @.str.2422, i64 1655, i64 %t1416, i64 %t1418) - unreachable -inrange3909: - %t1420 = extractvalue { ptr, i64, i64 } %t1417, 0 - %t1421 = getelementptr inbounds %S.ast.Node, ptr %t1420, i64 %t1416 - %t1422 = load %S.ast.Node, ptr %t1421 - %t1423 = call i1 @finch.gen.mutates(ptr %t1411, { ptr, i64, i64 } { ptr @.str.2421, i64 4, i64 0 }, %S.ast.Node %t1422) - br i1 %t1423, label %then3910, label %endif3912 -then3910: - %t1424 = load ptr, ptr %a1 - %t1425 = icmp eq ptr %t1424, null - br i1 %t1425, label %panic3913, label %ok3914 -panic3913: - call void @finch_panic(ptr @.str.2423, i64 1656, ptr @.str.2424) - unreachable -ok3914: - %t1426 = getelementptr inbounds %S.gen.Gen, ptr %t1424, i32 0, i32 17 - %t1427 = load i64, ptr %a1363 - %t1428 = load { ptr, i64, i64 }, ptr %t1426 - %t1429 = extractvalue { ptr, i64, i64 } %t1428, 1 - %t1430 = icmp uge i64 %t1427, %t1429 - br i1 %t1430, label %range3915, label %inrange3916 -range3915: - call void @finch_panic_index(ptr @.str.2425, i64 1656, i64 %t1427, i64 %t1429) - unreachable -inrange3916: - %t1431 = extractvalue { ptr, i64, i64 } %t1428, 0 - %t1432 = getelementptr inbounds %S.gen.Template, ptr %t1431, i64 %t1427 - %t1433 = getelementptr inbounds %S.gen.Template, ptr %t1432, i32 0, i32 7 - store i1 true, ptr %t1433 - %t1434 = load ptr, ptr %a1 - %t1435 = icmp eq ptr %t1434, null - br i1 %t1435, label %panic3917, label %ok3918 -panic3917: - call void @finch_panic(ptr @.str.2426, i64 1657, ptr @.str.2427) - unreachable -ok3918: - %t1436 = getelementptr inbounds %S.gen.Gen, ptr %t1434, i32 0, i32 24 - %t1437 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1436, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1439, ptr %a1440 - call void @finch_str_copy(ptr %a1441, ptr %a1440) - %t1442 = load { ptr, i64, i64 }, ptr %a1441 - %t1443 = load i64, ptr %t1437 - %t1444 = add i64 %t1443, 1 - call void @finch_arr_reserve(ptr %t1436, i64 %t1444, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1445 = load ptr, ptr %t1436 - %t1446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1445, i64 %t1443 - store { ptr, i64, i64 } %t1442, ptr %t1446 - store i64 %t1444, ptr %t1437 - store i1 true, ptr %a1234 - br label %endif3912 -endif3912: - call void @finch.drop.S_ast_Node(ptr %a1410) - br label %endif3901 -endif3901: - call void @finch.drop.S_gen_Template(ptr %a1379) - br label %for.step3889 -for.step3889: - %t1447 = load i64, ptr %a1363 - %t1448 = add i64 %t1447, 1 - store i64 %t1448, ptr %a1363 - br label %for.cond3887 -for.end3890: - br label %while.cond3832 -while.end3834: - %t1449 = load ptr, ptr %a1 - %t1450 = icmp eq ptr %t1449, null - br i1 %t1450, label %panic3919, label %ok3920 -panic3919: - call void @finch_panic(ptr @.str.2428, i64 1664, ptr @.str.2429) - unreachable -ok3920: - %t1451 = getelementptr inbounds %S.gen.Gen, ptr %t1449, i32 0, i32 15 - %t1452 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1451, i32 0, i32 1 - %t1453 = load i64, ptr %t1452 - store i64 0, ptr %a1454 - br label %for.cond3921 -for.cond3921: - %t1455 = load i64, ptr %a1454 - %t1456 = icmp slt i64 %t1455, %t1453 - br i1 %t1456, label %for.body3922, label %for.end3924 -for.body3922: - %t1457 = load ptr, ptr %a1 - %t1458 = icmp eq ptr %t1457, null - br i1 %t1458, label %panic3925, label %ok3926 -panic3925: - call void @finch_panic(ptr @.str.2430, i64 1665, ptr @.str.2431) - unreachable -ok3926: - %t1459 = getelementptr inbounds %S.gen.Gen, ptr %t1457, i32 0, i32 0 - %t1460 = load ptr, ptr %a1 - %t1461 = icmp eq ptr %t1460, null - br i1 %t1461, label %panic3927, label %ok3928 -panic3927: - call void @finch_panic(ptr @.str.2432, i64 1665, ptr @.str.2433) - unreachable -ok3928: - %t1462 = getelementptr inbounds %S.gen.Gen, ptr %t1460, i32 0, i32 15 - %t1463 = load i64, ptr %a1454 - %t1464 = load { ptr, i64, i64 }, ptr %t1462 - %t1465 = extractvalue { ptr, i64, i64 } %t1464, 1 - %t1466 = icmp uge i64 %t1463, %t1465 - br i1 %t1466, label %range3929, label %inrange3930 -range3929: - call void @finch_panic_index(ptr @.str.2434, i64 1665, i64 %t1463, i64 %t1465) - unreachable -inrange3930: - %t1467 = extractvalue { ptr, i64, i64 } %t1464, 0 - %t1468 = getelementptr inbounds %S.gen.FnSig, ptr %t1467, i64 %t1463 - %t1469 = getelementptr inbounds %S.gen.FnSig, ptr %t1468, i32 0, i32 16 - %t1470 = load i64, ptr %t1469 - %t1471 = load { ptr, i64, i64 }, ptr %t1459 - %t1472 = extractvalue { ptr, i64, i64 } %t1471, 1 - %t1473 = icmp uge i64 %t1470, %t1472 - br i1 %t1473, label %range3931, label %inrange3932 -range3931: - call void @finch_panic_index(ptr @.str.2435, i64 1665, i64 %t1470, i64 %t1472) - unreachable -inrange3932: - %t1474 = extractvalue { ptr, i64, i64 } %t1471, 0 - %t1475 = getelementptr inbounds %S.ast.Program, ptr %t1474, i64 %t1470 - %t1476 = getelementptr inbounds %S.ast.Program, ptr %t1475, i32 0, i32 8 - %t1477 = load ptr, ptr %a1 - %t1478 = icmp eq ptr %t1477, null - br i1 %t1478, label %panic3933, label %ok3934 -panic3933: - call void @finch_panic(ptr @.str.2436, i64 1665, ptr @.str.2437) - unreachable -ok3934: - %t1479 = getelementptr inbounds %S.gen.Gen, ptr %t1477, i32 0, i32 15 - %t1480 = load i64, ptr %a1454 - %t1481 = load { ptr, i64, i64 }, ptr %t1479 - %t1482 = extractvalue { ptr, i64, i64 } %t1481, 1 - %t1483 = icmp uge i64 %t1480, %t1482 - br i1 %t1483, label %range3935, label %inrange3936 -range3935: - call void @finch_panic_index(ptr @.str.2438, i64 1665, i64 %t1480, i64 %t1482) - unreachable -inrange3936: - %t1484 = extractvalue { ptr, i64, i64 } %t1481, 0 - %t1485 = getelementptr inbounds %S.gen.FnSig, ptr %t1484, i64 %t1480 - %t1486 = getelementptr inbounds %S.gen.FnSig, ptr %t1485, i32 0, i32 17 - %t1487 = load i64, ptr %t1486 - %t1488 = load { ptr, i64, i64 }, ptr %t1476 - %t1489 = extractvalue { ptr, i64, i64 } %t1488, 1 - %t1490 = icmp uge i64 %t1487, %t1489 - br i1 %t1490, label %range3937, label %inrange3938 -range3937: - call void @finch_panic_index(ptr @.str.2439, i64 1665, i64 %t1487, i64 %t1489) - unreachable -inrange3938: - %t1491 = extractvalue { ptr, i64, i64 } %t1488, 0 - %t1492 = getelementptr inbounds %S.ast.Node, ptr %t1491, i64 %t1487 - %t1493 = load %S.ast.Node, ptr %t1492 - store %S.ast.Node %t1493, ptr %a1494 - call void @finch.copy.S_ast_Node(ptr %a1495, ptr %a1494) - %t1496 = load %S.ast.Node, ptr %a1495 - store %S.ast.Node %t1496, ptr %a1497 - %t1498 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1499 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1499, i32 0, i32 1 - %t1501 = load i64, ptr %t1500 - %t1502 = sub i64 %t1501, 1 - %t1503 = load { ptr, i64, i64 }, ptr %t1498 - %t1504 = extractvalue { ptr, i64, i64 } %t1503, 1 - %t1505 = icmp uge i64 %t1502, %t1504 - br i1 %t1505, label %range3939, label %inrange3940 -range3939: - call void @finch_panic_index(ptr @.str.2440, i64 1666, i64 %t1502, i64 %t1504) - unreachable -inrange3940: - %t1506 = extractvalue { ptr, i64, i64 } %t1503, 0 - %t1507 = getelementptr inbounds %S.ast.Node, ptr %t1506, i64 %t1502 - %t1508 = load %S.ast.Node, ptr %t1507 - store %S.ast.Node %t1508, ptr %a1509 - call void @finch.copy.S_ast_Node(ptr %a1510, ptr %a1509) - %t1511 = load %S.ast.Node, ptr %a1510 - store %S.ast.Node %t1511, ptr %a1512 - %t1513 = load ptr, ptr %a1 - %t1514 = icmp eq ptr %t1513, null - br i1 %t1514, label %panic3941, label %ok3942 -panic3941: - call void @finch_panic(ptr @.str.2441, i64 1667, ptr @.str.2442) - unreachable -ok3942: - %t1515 = getelementptr inbounds %S.gen.Gen, ptr %t1513, i32 0, i32 15 - %t1516 = load i64, ptr %a1454 - %t1517 = load { ptr, i64, i64 }, ptr %t1515 - %t1518 = extractvalue { ptr, i64, i64 } %t1517, 1 - %t1519 = icmp uge i64 %t1516, %t1518 - br i1 %t1519, label %range3943, label %inrange3944 -range3943: - call void @finch_panic_index(ptr @.str.2443, i64 1667, i64 %t1516, i64 %t1518) - unreachable -inrange3944: - %t1520 = extractvalue { ptr, i64, i64 } %t1517, 0 - %t1521 = getelementptr inbounds %S.gen.FnSig, ptr %t1520, i64 %t1516 - %t1522 = getelementptr inbounds %S.gen.FnSig, ptr %t1521, i32 0, i32 13 - %t1523 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1522, i32 0, i32 1 - %t1524 = load i64, ptr %t1523 - store i64 0, ptr %a1525 - br label %for.cond3945 -for.cond3945: - %t1526 = load i64, ptr %a1525 - %t1527 = icmp slt i64 %t1526, %t1524 - br i1 %t1527, label %for.body3946, label %for.end3948 -for.body3946: - %t1528 = load ptr, ptr %a1 - %t1529 = icmp eq ptr %t1528, null - br i1 %t1529, label %panic3949, label %ok3950 -panic3949: - call void @finch_panic(ptr @.str.2444, i64 1668, ptr @.str.2445) - unreachable -ok3950: - %t1530 = getelementptr inbounds %S.gen.Gen, ptr %t1528, i32 0, i32 15 - %t1531 = load i64, ptr %a1454 - %t1532 = load { ptr, i64, i64 }, ptr %t1530 - %t1533 = extractvalue { ptr, i64, i64 } %t1532, 1 - %t1534 = icmp uge i64 %t1531, %t1533 - br i1 %t1534, label %range3951, label %inrange3952 -range3951: - call void @finch_panic_index(ptr @.str.2446, i64 1668, i64 %t1531, i64 %t1533) - unreachable -inrange3952: - %t1535 = extractvalue { ptr, i64, i64 } %t1532, 0 - %t1536 = getelementptr inbounds %S.gen.FnSig, ptr %t1535, i64 %t1531 - %t1537 = getelementptr inbounds %S.gen.FnSig, ptr %t1536, i32 0, i32 13 - %t1538 = load i64, ptr %a1525 - %t1539 = load { ptr, i64, i64 }, ptr %t1537 - %t1540 = extractvalue { ptr, i64, i64 } %t1539, 1 - %t1541 = icmp uge i64 %t1538, %t1540 - br i1 %t1541, label %range3953, label %inrange3954 -range3953: - call void @finch_panic_index(ptr @.str.2447, i64 1668, i64 %t1538, i64 %t1540) - unreachable -inrange3954: - %t1542 = extractvalue { ptr, i64, i64 } %t1539, 0 - %t1543 = getelementptr inbounds %S.ast.Type, ptr %t1542, i64 %t1538 - %t1544 = load %S.ast.Type, ptr %t1543 - store %S.ast.Type %t1544, ptr %a1545 - call void @finch.copy.S_ast_Type(ptr %a1546, ptr %a1545) - %t1547 = load %S.ast.Type, ptr %a1546 - store %S.ast.Type %t1547, ptr %a1548 - %t1549 = load ptr, ptr %a1 - %t1550 = icmp eq ptr %t1549, null - br i1 %t1550, label %panic3955, label %ok3956 -panic3955: - call void @finch_panic(ptr @.str.2448, i64 1669, ptr @.str.2449) - unreachable -ok3956: - %t1551 = getelementptr inbounds %S.gen.Gen, ptr %t1549, i32 0, i32 15 - %t1552 = load i64, ptr %a1454 - %t1553 = load { ptr, i64, i64 }, ptr %t1551 - %t1554 = extractvalue { ptr, i64, i64 } %t1553, 1 - %t1555 = icmp uge i64 %t1552, %t1554 - br i1 %t1555, label %range3957, label %inrange3958 -range3957: - call void @finch_panic_index(ptr @.str.2450, i64 1669, i64 %t1552, i64 %t1554) - unreachable -inrange3958: - %t1556 = extractvalue { ptr, i64, i64 } %t1553, 0 - %t1557 = getelementptr inbounds %S.gen.FnSig, ptr %t1556, i64 %t1552 - %t1558 = getelementptr inbounds %S.gen.FnSig, ptr %t1557, i32 0, i32 15 - %t1559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1558, i32 0, i32 1 - %t1560 = load ptr, ptr %a1 - %t1561 = load %S.ast.Type, ptr %a1548 - %t1562 = call i1 @finch.gen.owning(ptr %t1560, %S.ast.Type %t1561) - br label %logic.from3959 -logic.from3959: - br i1 %t1562, label %logic.rhs3960, label %logic.end3961 -logic.rhs3960: - %t1563 = load ptr, ptr %a1 - %t1564 = load ptr, ptr %a1 - %t1565 = icmp eq ptr %t1564, null - br i1 %t1565, label %panic3962, label %ok3963 -panic3962: - call void @finch_panic(ptr @.str.2451, i64 1669, ptr @.str.2452) - unreachable -ok3963: - %t1566 = getelementptr inbounds %S.gen.Gen, ptr %t1564, i32 0, i32 15 - %t1567 = load i64, ptr %a1454 - %t1568 = load { ptr, i64, i64 }, ptr %t1566 - %t1569 = extractvalue { ptr, i64, i64 } %t1568, 1 - %t1570 = icmp uge i64 %t1567, %t1569 - br i1 %t1570, label %range3964, label %inrange3965 -range3964: - call void @finch_panic_index(ptr @.str.2453, i64 1669, i64 %t1567, i64 %t1569) - unreachable -inrange3965: - %t1571 = extractvalue { ptr, i64, i64 } %t1568, 0 - %t1572 = getelementptr inbounds %S.gen.FnSig, ptr %t1571, i64 %t1567 - %t1573 = getelementptr inbounds %S.gen.FnSig, ptr %t1572, i32 0, i32 14 - %t1574 = load i64, ptr %a1525 - %t1575 = load { ptr, i64, i64 }, ptr %t1573 - %t1576 = extractvalue { ptr, i64, i64 } %t1575, 1 - %t1577 = icmp uge i64 %t1574, %t1576 - br i1 %t1577, label %range3966, label %inrange3967 -range3966: - call void @finch_panic_index(ptr @.str.2454, i64 1669, i64 %t1574, i64 %t1576) - unreachable -inrange3967: - %t1578 = extractvalue { ptr, i64, i64 } %t1575, 0 - %t1579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1578, i64 %t1574 - %t1580 = load { ptr, i64, i64 }, ptr %t1579 - %t1581 = load %S.ast.Node, ptr %a1512 - %t1582 = call i1 @finch.gen.mutates(ptr %t1563, { ptr, i64, i64 } %t1580, %S.ast.Node %t1581) - %t1583 = xor i1 %t1582, true - br label %logic.rend3968 -logic.rend3968: - br label %logic.end3961 -logic.end3961: - %t1584 = phi i1 [ false, %logic.from3959 ], [ %t1583, %logic.rend3968 ] - %t1585 = load i64, ptr %t1559 - %t1586 = add i64 %t1585, 1 - call void @finch_arr_reserve(ptr %t1558, i64 %t1586, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t1587 = load ptr, ptr %t1558 - %t1588 = getelementptr inbounds i1, ptr %t1587, i64 %t1585 - store i1 %t1584, ptr %t1588 - store i64 %t1586, ptr %t1559 - call void @finch.drop.S_ast_Type(ptr %a1548) - br label %for.step3947 -for.step3947: - %t1589 = load i64, ptr %a1525 - %t1590 = add i64 %t1589, 1 - store i64 %t1590, ptr %a1525 - br label %for.cond3945 -for.end3948: - call void @finch.drop.S_ast_Node(ptr %a1512) - call void @finch.drop.S_ast_Node(ptr %a1497) - br label %for.step3923 -for.step3923: - %t1591 = load i64, ptr %a1454 - %t1592 = add i64 %t1591, 1 - store i64 %t1592, ptr %a1454 - br label %for.cond3921 -for.end3924: - 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 %panic3969, label %ok3970 -panic3969: - call void @finch_panic(ptr @.str.2455, i64 1675, ptr @.str.2456) - unreachable -ok3970: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load i64, ptr %t9 - store i64 0, ptr %a11 - br label %for.cond3971 -for.cond3971: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body3972, label %for.end3974 -for.body3972: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3975, label %ok3976 -panic3975: - call void @finch_panic(ptr @.str.2457, i64 1676, ptr @.str.2458) - unreachable -ok3976: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 17 - %t17 = load i64, ptr %a11 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range3977, label %inrange3978 -range3977: - call void @finch_panic_index(ptr @.str.2459, i64 1676, i64 %t17, i64 %t19) - unreachable -inrange3978: - %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.from3979 -logic.from3979: - br i1 %t34, label %logic.rhs3980, label %logic.end3981 -logic.rhs3980: - %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.rend3982 -logic.rend3982: - br label %logic.end3981 -logic.end3981: - %t42 = phi i1 [ false, %logic.from3979 ], [ %t41, %logic.rend3982 ] - br label %logic.from3983 -logic.from3983: - br i1 %t42, label %logic.rhs3984, label %logic.end3985 -logic.rhs3984: - %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.rend3986 -logic.rend3986: - br label %logic.end3985 -logic.end3985: - %t50 = phi i1 [ false, %logic.from3983 ], [ %t49, %logic.rend3986 ] - br label %logic.from3987 -logic.from3987: - br i1 %t50, label %logic.rhs3988, label %logic.end3989 -logic.rhs3988: - %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.rend3990 -logic.rend3990: - br label %logic.end3989 -logic.end3989: - %t55 = phi i1 [ false, %logic.from3987 ], [ %t54, %logic.rend3990 ] - br i1 %t55, label %then3991, label %endif3993 -then3991: - %t56 = load i64, ptr %a11 - call void @finch.drop.S_gen_Template(ptr %a27) - ret i64 %t56 -endif3993: - call void @finch.drop.S_gen_Template(ptr %a27) - br label %for.step3973 -for.step3973: - %t57 = load i64, ptr %a11 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a11 - br label %for.cond3971 -for.end3974: - 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.cond3994 -each.cond3994: - %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.body3995, label %each.end3997 -each.body3995: - %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.step3996 -each.step3996: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %each.cond3994 -each.end3997: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2460, i64 2, i64 0 }, ptr %a22 - call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t24 -} - -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.gen.Template, align 16 - %a48 = alloca %S.gen.Template, align 16 - %a50 = alloca %S.gen.Template, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.2461, 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 %then3998, label %endif4000 -then3998: - %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.2462, 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.2463, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t24, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.2464, i64 34, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - br label %endif4000 -endif4000: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic4001, label %ok4002 -panic4001: - call void @finch_panic(ptr @.str.2465, i64 1698, ptr @.str.2466) - unreachable -ok4002: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 17 - %t40 = load i64, ptr %a10 - %t41 = load { ptr, i64, i64 }, ptr %t39 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 %t40, %t42 - br i1 %t43, label %range4003, label %inrange4004 -range4003: - call void @finch_panic_index(ptr @.str.2467, i64 1698, i64 %t40, i64 %t42) - unreachable -inrange4004: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds %S.gen.Template, ptr %t44, i64 %t40 - %t46 = load %S.gen.Template, ptr %t45 - store %S.gen.Template %t46, ptr %a47 - call void @finch.copy.S_gen_Template(ptr %a48, ptr %a47) - %t49 = load %S.gen.Template, ptr %a48 - store %S.gen.Template %t49, ptr %a50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 - %t55 = load i64, ptr %t54 - %t56 = icmp ne i64 %t52, %t55 - br i1 %t56, label %then4005, label %endif4007 -then4005: - %t57 = load ptr, ptr %a1 - %t58 = load %S.ast.Node, ptr %a5 - %t59 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2468, i64 7, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a60 - %t64 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - %t66 = load i64, ptr %t65 - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.2469, i64 24, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.2470, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2471, i64 2, i64 0 }, ptr %a93 - call void @finch_str_join(ptr %a94, ptr %t91, ptr %a93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t90, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t90, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t101, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2472, i64 11, i64 0 }, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t108 = load i64, ptr %t107 - call void @finch_str_from_int(ptr %a109, i64 %t108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t106, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t106, ptr %a114 - call void @finch_str_drop(ptr %a114) - store { ptr, i64, i64 } %t110, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t57, %S.ast.Node %t58, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif4007 -endif4007: - %t118 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.2473, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a119 - %t123 = load { ptr, i64, i64 }, ptr %a4 - %t124 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.2474, i64 1, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a2 - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = call i64 @finch.gen.findStruct(ptr %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139) - %t141 = icmp slt i64 %t140, 0 - br i1 %t141, label %then4008, label %endif4010 -then4008: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4011, label %ok4012 -panic4011: - call void @finch_panic(ptr @.str.2475, i64 1704, ptr @.str.2476) - unreachable -ok4012: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 16 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_copy(ptr %a148, ptr %a147) - %t149 = load { ptr, i64, i64 }, ptr %a148 - %t150 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t149, 0 - %t151 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t151, ptr %a152 - call void @finch_str_copy(ptr %a153, ptr %a152) - %t154 = load { ptr, i64, i64 }, ptr %a153 - %t155 = insertvalue %S.gen.StructDef %t150, { ptr, i64, i64 } %t154, 1 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_copy(ptr %a158, ptr %a157) - %t159 = load { ptr, i64, i64 }, ptr %a158 - %t160 = insertvalue %S.gen.StructDef %t155, { ptr, i64, i64 } %t159, 5 - %t161 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t162 = load { ptr, i64, i64 }, ptr %t161 - store { ptr, i64, i64 } %t162, ptr %a163 - call void @finch.copy.arr_str(ptr %a164, ptr %a163) - %t165 = load { ptr, i64, i64 }, ptr %a164 - %t166 = insertvalue %S.gen.StructDef %t160, { ptr, i64, i64 } %t165, 6 - %t167 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t167, ptr %a168 - call void @finch.copy.arr_S_ast_Type(ptr %a169, ptr %a168) - %t170 = load { ptr, i64, i64 }, ptr %a169 - %t171 = insertvalue %S.gen.StructDef %t166, { ptr, i64, i64 } %t170, 7 - %t172 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 4 - %t173 = load i64, ptr %t172 - %t174 = insertvalue %S.gen.StructDef %t171, i64 %t173, 13 - %t175 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 5 - %t176 = load i64, ptr %t175 - %t177 = insertvalue %S.gen.StructDef %t174, i64 %t176, 14 - %t178 = load i64, ptr %t145 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t144 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t178 - store %S.gen.StructDef %t177, ptr %t181 - store i64 %t179, ptr %t145 - %t182 = load ptr, ptr %a1 - %t183 = load ptr, ptr %a1 - %t184 = icmp eq ptr %t183, null - br i1 %t184, label %panic4013, label %ok4014 -panic4013: - call void @finch_panic(ptr @.str.2477, i64 1705, ptr @.str.2478) - unreachable -ok4014: - %t185 = getelementptr inbounds %S.gen.Gen, ptr %t183, i32 0, i32 16 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i32 0, i32 1 - %t187 = load i64, ptr %t186 - %t188 = sub i64 %t187, 1 - call void @finch.gen.resolveStruct(ptr %t182, i64 %t188) - br label %endif4010 -endif4010: - %t189 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2479, i64 6, i64 0 }, 0 - %t190 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_copy(ptr %a192, ptr %a191) - %t193 = load { ptr, i64, i64 }, ptr %a192 - %t194 = insertvalue %S.ast.Type %t189, { ptr, i64, i64 } %t193, 2 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_copy(ptr %a197, ptr %a196) - %t198 = load { ptr, i64, i64 }, ptr %a197 - %t199 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t198, 3 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Template(ptr %a50) - ret %S.ast.Type %t199 -} - -define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) { -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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i64, align 16 - %a61 = alloca i64, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a85 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca %S.gen.FnSig, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %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 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca %S.ast.Type, align 16 - %a327 = alloca %S.ast.Node, align 16 - %a328 = alloca %S.ast.Node, align 16 - %a330 = alloca %S.ast.Node, align 16 - %a335 = alloca i64, align 16 - %a357 = alloca %S.ast.Type, align 16 - %a361 = alloca %S.ast.Type, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.gen.FnSig, align 16 - %a453 = alloca %S.gen.FnSig, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4015, label %ok4016 -panic4015: - call void @finch_panic(ptr @.str.2480, i64 1712, ptr @.str.2481) - unreachable -ok4016: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4017, label %inrange4018 -range4017: - call void @finch_panic_index(ptr @.str.2482, i64 1712, i64 %t9, i64 %t11) - unreachable -inrange4018: - %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.2483, 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) - store { ptr, i64, i64 } %t25, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2484, i64 1, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then4019, label %else4020 -then4019: - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - %t51 = call i64 @finch.gen.findMethod(ptr %t44, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t50) - store i64 %t51, ptr %a52 - %t53 = load i64, ptr %a52 - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4022, label %endif4024 -then4022: - %t55 = load i64, ptr %a52 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t55 -endif4024: - br label %endif4021 -else4020: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t58 = load { ptr, i64, i64 }, ptr %t57 - %t59 = load { ptr, i64, i64 }, ptr %a39 - %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t58, { ptr, i64, i64 } %t59) - store i64 %t60, ptr %a61 - %t62 = load i64, ptr %a61 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then4025, label %endif4027 -then4025: - %t64 = load i64, ptr %a61 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t64 -endif4027: - br label %endif4021 -endif4021: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4028, label %ok4029 -panic4028: - call void @finch_panic(ptr @.str.2485, i64 1725, ptr @.str.2486) - unreachable -ok4029: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 0 - %t68 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t69 = load i64, ptr %t68 - %t70 = load { ptr, i64, i64 }, ptr %t67 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 %t69, %t71 - br i1 %t72, label %range4030, label %inrange4031 -range4030: - call void @finch_panic_index(ptr @.str.2487, i64 1725, i64 %t69, i64 %t71) - unreachable -inrange4031: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Program, ptr %t73, i64 %t69 - %t75 = getelementptr inbounds %S.ast.Program, ptr %t74, i32 0, i32 8 - %t76 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t77 = load i64, ptr %t76 - %t78 = load { ptr, i64, i64 }, ptr %t75 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 %t77, %t79 - br i1 %t80, label %range4032, label %inrange4033 -range4032: - call void @finch_panic_index(ptr @.str.2488, i64 1725, i64 %t77, i64 %t79) - unreachable -inrange4033: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t77 - %t83 = load %S.ast.Node, ptr %t82 - store %S.ast.Node %t83, ptr %a84 - call void @finch.copy.S_ast_Node(ptr %a85, ptr %a84) - %t86 = load %S.ast.Node, ptr %a85 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t92, 0 - %t94 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = insertvalue %S.gen.FnSig %t93, { ptr, i64, i64 } %t97, 1 - %t99 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t100 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_copy(ptr %a102, ptr %a101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - %t104 = insertvalue %S.gen.FnSig %t98, { ptr, i64, i64 } %t103, 3 - %t105 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - call void @finch.copy.arr_str(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = insertvalue %S.gen.FnSig %t104, { ptr, i64, i64 } %t109, 6 - %t111 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch.copy.arr_S_ast_Type(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.FnSig %t110, { ptr, i64, i64 } %t114, 7 - %t116 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_copy(ptr %a118, ptr %a117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - %t120 = insertvalue %S.gen.FnSig %t115, { ptr, i64, i64 } %t119, 8 - %t121 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 7 - %t122 = load i1, ptr %t121 - %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 9 - %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 - %t125 = load i1, ptr %t124 - %t126 = insertvalue %S.gen.FnSig %t123, i1 %t125, 10 - %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t128 = load i64, ptr %t127 - %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 16 - %t130 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.FnSig %t129, i64 %t131, 17 - store %S.gen.FnSig %t132, ptr %a133 - %t134 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t135) - store { ptr, i64, i64 } { ptr @.str.2489, i64 7, i64 0 }, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.2490, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = load { ptr, i64, i64 }, ptr %a39 - %t148 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t146, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t146, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - %t155 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t156 = load { ptr, i64, i64 }, ptr %t155 - store { ptr, i64, i64 } %t154, ptr %t155 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i32 0, i32 1 - %t160 = load i64, ptr %t159 - %t161 = icmp sgt i64 %t160, 0 - br i1 %t161, label %then4034, label %endif4036 -then4034: - %t162 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 1 - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_copy(ptr %a166, ptr %a165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - %t168 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t167, ptr %t164 - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t171 = load { ptr, i64, i64 }, ptr %t170 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 2 - store { ptr, i64, i64 } %t171, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %t172 - store { ptr, i64, i64 } %t175, ptr %t172 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2491, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a180 - %t184 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t183, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t183, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t190, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t195) - store { ptr, i64, i64 } { ptr @.str.2492, i64 7, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t201, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.2493, i64 1, i64 0 }, ptr %a204 - call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) - store { ptr, i64, i64 } %t201, ptr %a205 - call void @finch_str_drop(ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a202 - %t207 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t206, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t206, ptr %a213 - call void @finch_str_drop(ptr %a213) - store { ptr, i64, i64 } %t209, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.2494, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } %t220, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t220, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t227, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_drop(ptr %a230) - br label %endif4036 -endif4036: - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic4037, label %ok4038 -panic4037: - call void @finch_panic(ptr @.str.2495, i64 1734, ptr @.str.2496) - unreachable -ok4038: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 18 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch.copy.arr_str(ptr %a236, ptr %a235) - %t237 = load { ptr, i64, i64 }, ptr %a236 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic4039, label %ok4040 -panic4039: - call void @finch_panic(ptr @.str.2497, i64 1735, ptr @.str.2498) - unreachable -ok4040: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 19 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - call void @finch.copy.arr_S_ast_Type(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t245, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = icmp eq ptr %t247, null - br i1 %t248, label %panic4041, label %ok4042 -panic4041: - call void @finch_panic(ptr @.str.2499, i64 1736, ptr @.str.2500) - unreachable -ok4042: - %t249 = getelementptr inbounds %S.gen.Gen, ptr %t247, i32 0, i32 14 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - call void @finch_str_copy(ptr %a252, ptr %a251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic4043, label %ok4044 -panic4043: - call void @finch_panic(ptr @.str.2501, i64 1737, ptr @.str.2502) - unreachable -ok4044: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 20 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic4045, label %ok4046 -panic4045: - call void @finch_panic(ptr @.str.2503, i64 1738, ptr @.str.2504) - unreachable -ok4046: - %t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 18 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch.copy.arr_str(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t270, ptr %t267 - store { ptr, i64, i64 } %t271, ptr %a272 - call void @finch.drop.arr_str(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a3 - %t274 = load ptr, ptr %a1 - %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic4047, label %ok4048 -panic4047: - call void @finch_panic(ptr @.str.2505, i64 1739, ptr @.str.2506) - unreachable -ok4048: - %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 19 - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch.copy.arr_S_ast_Type(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch.drop.arr_S_ast_Type(ptr %a281) - %t282 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - %t284 = load ptr, ptr %a1 - %t285 = icmp eq ptr %t284, null - br i1 %t285, label %panic4049, label %ok4050 -panic4049: - call void @finch_panic(ptr @.str.2507, i64 1740, ptr @.str.2508) - unreachable -ok4050: - %t286 = getelementptr inbounds %S.gen.Gen, ptr %t284, i32 0, i32 14 - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_copy(ptr %a288, ptr %a287) - %t289 = load { ptr, i64, i64 }, ptr %a288 - %t290 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t289, ptr %t286 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } { ptr @.str.2509, i64 17, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.2510, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - %t303 = load ptr, ptr %a1 - %t304 = icmp eq ptr %t303, null - br i1 %t304, label %panic4051, label %ok4052 -panic4051: - call void @finch_panic(ptr @.str.2511, i64 1741, ptr @.str.2512) - unreachable -ok4052: - %t305 = getelementptr inbounds %S.gen.Gen, ptr %t303, i32 0, i32 20 - %t306 = load { ptr, i64, i64 }, ptr %t305 - store { ptr, i64, i64 } %t302, ptr %t305 - store { ptr, i64, i64 } %t306, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = load ptr, ptr %a1 - %t309 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = load %S.ast.Node, ptr %a87 - %t312 = call %S.ast.Type @finch.gen.resolve(ptr %t308, %S.ast.Type %t310, %S.ast.Node %t311) - %t313 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 12 - %t314 = load %S.ast.Type, ptr %t313 - store %S.ast.Type %t312, ptr %t313 - store %S.ast.Type %t314, ptr %a315 - call void @finch.drop.S_ast_Type(ptr %a315) - %t316 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = sub i64 %t319, 1 - %t321 = load { ptr, i64, i64 }, ptr %t316 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range4053, label %inrange4054 -range4053: - call void @finch_panic_index(ptr @.str.2513, i64 1743, i64 %t320, i64 %t322) - unreachable -inrange4054: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 - %t326 = load %S.ast.Node, ptr %t325 - store %S.ast.Node %t326, ptr %a327 - call void @finch.copy.S_ast_Node(ptr %a328, ptr %a327) - %t329 = load %S.ast.Node, ptr %a328 - store %S.ast.Node %t329, ptr %a330 - %t331 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = sub i64 %t333, 1 - store i64 0, ptr %a335 - br label %for.cond4055 -for.cond4055: - %t336 = load i64, ptr %a335 - %t337 = icmp slt i64 %t336, %t334 - br i1 %t337, label %for.body4056, label %for.end4058 -for.body4056: - %t338 = load ptr, ptr %a1 - %t339 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t340 = load i64, ptr %a335 - %t341 = load { ptr, i64, i64 }, ptr %t339 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range4059, label %inrange4060 -range4059: - call void @finch_panic_index(ptr @.str.2514, i64 1745, i64 %t340, i64 %t342) - unreachable -inrange4060: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Node, ptr %t344, i64 %t340 - %t346 = getelementptr inbounds %S.ast.Node, ptr %t345, i32 0, i32 5 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t349 = load i64, ptr %a335 - %t350 = load { ptr, i64, i64 }, ptr %t348 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range4061, label %inrange4062 -range4061: - call void @finch_panic_index(ptr @.str.2515, i64 1745, i64 %t349, i64 %t351) - unreachable -inrange4062: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i64 %t349 - %t355 = load %S.ast.Node, ptr %t354 - %t356 = call %S.ast.Type @finch.gen.resolve(ptr %t338, %S.ast.Type %t347, %S.ast.Node %t355) - store %S.ast.Type %t356, ptr %a357 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 13 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 - %t360 = load %S.ast.Type, ptr %a357 - store %S.ast.Type %t360, ptr %a361 - call void @finch.copy.S_ast_Type(ptr %a362, ptr %a361) - %t363 = load %S.ast.Type, ptr %a362 - %t364 = load i64, ptr %t359 - %t365 = add i64 %t364, 1 - call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t366 = load ptr, ptr %t358 - %t367 = getelementptr inbounds %S.ast.Type, ptr %t366, i64 %t364 - store %S.ast.Type %t363, ptr %t367 - store i64 %t365, ptr %t359 - %t368 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 14 - %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 - %t370 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t371 = load i64, ptr %a335 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4063, label %inrange4064 -range4063: - call void @finch_panic_index(ptr @.str.2516, i64 1747, i64 %t371, i64 %t373) - unreachable -inrange4064: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds %S.ast.Node, ptr %t375, i64 %t371 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i32 0, i32 1 - %t378 = load { ptr, i64, i64 }, ptr %t377 - store { ptr, i64, i64 } %t378, ptr %a379 - call void @finch_str_copy(ptr %a380, ptr %a379) - %t381 = load { ptr, i64, i64 }, ptr %a380 - %t382 = load i64, ptr %t369 - %t383 = add i64 %t382, 1 - call void @finch_arr_reserve(ptr %t368, i64 %t383, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t384 = load ptr, ptr %t368 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t382 - store { ptr, i64, i64 } %t381, ptr %t385 - store i64 %t383, ptr %t369 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 15 - %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i32 0, i32 1 - %t388 = load ptr, ptr %a1 - %t389 = load %S.ast.Type, ptr %a357 - %t390 = call i1 @finch.gen.owning(ptr %t388, %S.ast.Type %t389) - br label %logic.from4065 -logic.from4065: - br i1 %t390, label %logic.rhs4066, label %logic.end4067 -logic.rhs4066: - %t391 = load ptr, ptr %a1 - %t392 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t393 = load i64, ptr %a335 - %t394 = load { ptr, i64, i64 }, ptr %t392 - %t395 = extractvalue { ptr, i64, i64 } %t394, 1 - %t396 = icmp uge i64 %t393, %t395 - br i1 %t396, label %range4068, label %inrange4069 -range4068: - call void @finch_panic_index(ptr @.str.2517, i64 1748, i64 %t393, i64 %t395) - unreachable -inrange4069: - %t397 = extractvalue { ptr, i64, i64 } %t394, 0 - %t398 = getelementptr inbounds %S.ast.Node, ptr %t397, i64 %t393 - %t399 = getelementptr inbounds %S.ast.Node, ptr %t398, i32 0, i32 1 - %t400 = load { ptr, i64, i64 }, ptr %t399 - %t401 = load %S.ast.Node, ptr %a330 - %t402 = call i1 @finch.gen.mutates(ptr %t391, { ptr, i64, i64 } %t400, %S.ast.Node %t401) - %t403 = xor i1 %t402, true - br label %logic.rend4070 -logic.rend4070: - br label %logic.end4067 -logic.end4067: - %t404 = phi i1 [ false, %logic.from4065 ], [ %t403, %logic.rend4070 ] - %t405 = load i64, ptr %t387 - %t406 = add i64 %t405, 1 - call void @finch_arr_reserve(ptr %t386, i64 %t406, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t407 = load ptr, ptr %t386 - %t408 = getelementptr inbounds i1, ptr %t407, i64 %t405 - store i1 %t404, ptr %t408 - store i64 %t406, ptr %t387 - call void @finch.drop.S_ast_Type(ptr %a357) - br label %for.step4057 -for.step4057: - %t409 = load i64, ptr %a335 - %t410 = add i64 %t409, 1 - store i64 %t410, ptr %a335 - br label %for.cond4055 -for.end4058: - %t411 = load { ptr, i64, i64 }, ptr %a238 - %t412 = load ptr, ptr %a1 - %t413 = icmp eq ptr %t412, null - br i1 %t413, label %panic4071, label %ok4072 -panic4071: - call void @finch_panic(ptr @.str.2518, i64 1750, ptr @.str.2519) - unreachable -ok4072: - %t414 = getelementptr inbounds %S.gen.Gen, ptr %t412, i32 0, i32 18 - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch.copy.arr_str(ptr %a416, ptr %a415) - %t417 = load { ptr, i64, i64 }, ptr %a416 - %t418 = load { ptr, i64, i64 }, ptr %t414 - store { ptr, i64, i64 } %t417, ptr %t414 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch.drop.arr_str(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a246 - %t421 = load ptr, ptr %a1 - %t422 = icmp eq ptr %t421, null - br i1 %t422, label %panic4073, label %ok4074 -panic4073: - call void @finch_panic(ptr @.str.2520, i64 1751, ptr @.str.2521) - unreachable -ok4074: - %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 19 - store { ptr, i64, i64 } %t420, ptr %a424 - call void @finch.copy.arr_S_ast_Type(ptr %a425, ptr %a424) - %t426 = load { ptr, i64, i64 }, ptr %a425 - %t427 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t426, ptr %t423 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch.drop.arr_S_ast_Type(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a254 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic4075, label %ok4076 -panic4075: - call void @finch_panic(ptr @.str.2522, i64 1752, ptr @.str.2523) - unreachable -ok4076: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 14 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_copy(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a262 - %t439 = load ptr, ptr %a1 - %t440 = icmp eq ptr %t439, null - br i1 %t440, label %panic4077, label %ok4078 -panic4077: - call void @finch_panic(ptr @.str.2524, i64 1753, ptr @.str.2525) - unreachable -ok4078: - %t441 = getelementptr inbounds %S.gen.Gen, ptr %t439, i32 0, i32 20 - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - %t445 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t444, ptr %t441 - store { ptr, i64, i64 } %t445, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic4079, label %ok4080 -panic4079: - call void @finch_panic(ptr @.str.2526, i64 1754, ptr @.str.2527) - unreachable -ok4080: - %t449 = getelementptr inbounds %S.gen.Gen, ptr %t447, i32 0, i32 15 - %t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i32 0, i32 1 - %t451 = load %S.gen.FnSig, ptr %a133 - store %S.gen.FnSig %t451, ptr %a452 - call void @finch.copy.S_gen_FnSig(ptr %a453, ptr %a452) - %t454 = load %S.gen.FnSig, ptr %a453 - %t455 = load i64, ptr %t450 - %t456 = add i64 %t455, 1 - call void @finch_arr_reserve(ptr %t449, i64 %t456, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t457 = load ptr, ptr %t449 - %t458 = getelementptr inbounds %S.gen.FnSig, ptr %t457, i64 %t455 - store %S.gen.FnSig %t454, ptr %t458 - store i64 %t456, ptr %t450 - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic4081, label %ok4082 -panic4081: - call void @finch_panic(ptr @.str.2528, i64 1755, ptr @.str.2529) - unreachable -ok4082: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 15 - %t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i32 0, i32 1 - %t463 = load i64, ptr %t462 - %t464 = sub i64 %t463, 1 - call void @finch.drop.S_ast_Node(ptr %a330) - call void @finch_str_drop(ptr %a262) - call void @finch_str_drop(ptr %a254) - call void @finch.drop.arr_S_ast_Type(ptr %a246) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_gen_FnSig(ptr %a133) - call void @finch.drop.S_ast_Node(ptr %a87) - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t464 -} - -define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) { -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 - %a84 = alloca %S.ast.Type, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca %S.gen.StructDef, align 16 - %a231 = alloca %S.gen.StructDef, align 16 - %a233 = alloca %S.gen.StructDef, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.2530, 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.from4083 -logic.from4083: - br i1 %t11, label %logic.rhs4084, label %logic.end4085 -logic.rhs4084: - %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.rend4086 -logic.rend4086: - br label %logic.end4085 -logic.end4085: - %t16 = phi i1 [ false, %logic.from4083 ], [ %t15, %logic.rend4086 ] - br label %logic.from4087 -logic.from4087: - br i1 %t16, label %logic.rhs4088, label %logic.end4089 -logic.rhs4088: - %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.rend4090 -logic.rend4090: - br label %logic.end4089 -logic.end4089: - %t21 = phi i1 [ false, %logic.from4087 ], [ %t20, %logic.rend4090 ] - br label %logic.from4091 -logic.from4091: - br i1 %t21, label %logic.rhs4092, label %logic.end4093 -logic.rhs4092: - %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.cond4094 -find.cond4094: - %t29 = load i64, ptr %a28 - %t30 = icmp slt i64 %t29, %t26 - br i1 %t30, label %find.body4095, label %find.end4098 -find.body4095: - %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.hit4096, label %find.next4097 -find.hit4096: - store i64 %t29, ptr %a25 - br label %find.end4098 -find.next4097: - %t37 = add i64 %t29, 1 - store i64 %t37, ptr %a28 - br label %find.cond4094 -find.end4098: - %t38 = load i64, ptr %a25 - %t39 = icmp sge i64 %t38, 0 - br label %logic.rend4099 -logic.rend4099: - br label %logic.end4093 -logic.end4093: - %t40 = phi i1 [ false, %logic.from4091 ], [ %t39, %logic.rend4099 ] - br i1 %t40, label %then4100, label %endif4102 -then4100: - %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.cond4103 -find.cond4103: - %t48 = load i64, ptr %a47 - %t49 = icmp slt i64 %t48, %t45 - br i1 %t49, label %find.body4104, label %find.end4107 -find.body4104: - %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.hit4105, label %find.next4106 -find.hit4105: - store i64 %t48, ptr %a44 - br label %find.end4107 -find.next4106: - %t56 = add i64 %t48, 1 - store i64 %t56, ptr %a47 - br label %find.cond4103 -find.end4107: - %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 %panic4108, label %ok4109 -panic4108: - call void @finch_panic(ptr @.str.2531, i64 1762, ptr @.str.2532) - unreachable -ok4109: - %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 %range4110, label %inrange4111 -range4110: - call void @finch_panic_index(ptr @.str.2533, i64 1762, i64 %t62, i64 %t64) - unreachable -inrange4111: - %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 %then4112, label %endif4114 -then4112: - %t70 = load %S.ast.Type, ptr %a3 - %t71 = load ptr, ptr %a5 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic4115, label %ok4116 -panic4115: - call void @finch_panic(ptr @.str.2534, i64 1763, ptr @.str.2535) - unreachable -ok4116: - %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 %range4117, label %inrange4118 -range4117: - call void @finch_panic_index(ptr @.str.2536, i64 1763, i64 %t74, i64 %t76) - unreachable -inrange4118: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 - store %S.ast.Type %t70, ptr %a80 - call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80) - %t82 = load %S.ast.Type, ptr %a81 - %t83 = load %S.ast.Type, ptr %t79 - store %S.ast.Type %t82, ptr %t79 - store %S.ast.Type %t83, ptr %a84 - call void @finch.drop.S_ast_Type(ptr %a84) - %t85 = load ptr, ptr %a5 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic4119, label %ok4120 -panic4119: - call void @finch_panic(ptr @.str.2537, i64 1764, ptr @.str.2538) - unreachable -ok4120: - %t87 = getelementptr inbounds %S.gen.Binds, ptr %t85, i32 0, i32 1 - %t88 = load i64, ptr %a58 - %t89 = load { ptr, i64, i64 }, ptr %t87 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = icmp uge i64 %t88, %t90 - br i1 %t91, label %range4121, label %inrange4122 -range4121: - call void @finch_panic_index(ptr @.str.2539, i64 1764, i64 %t88, i64 %t90) - unreachable -inrange4122: - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = getelementptr inbounds i1, ptr %t92, i64 %t88 - store i1 true, ptr %t93 - br label %endif4114 -endif4114: - ret void -endif4102: - %t94 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.2540, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br label %logic.from4123 -logic.from4123: - br i1 %t99, label %logic.end4125, label %logic.rhs4124 -logic.rhs4124: - %t100 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.2541, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend4126 -logic.rend4126: - br label %logic.end4125 -logic.end4125: - %t106 = phi i1 [ true, %logic.from4123 ], [ %t105, %logic.rend4126 ] - br label %logic.from4127 -logic.from4127: - br i1 %t106, label %logic.end4129, label %logic.rhs4128 -logic.rhs4128: - %t107 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2542, i64 5, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend4130 -logic.rend4130: - br label %logic.end4129 -logic.end4129: - %t113 = phi i1 [ true, %logic.from4127 ], [ %t112, %logic.rend4130 ] - br label %logic.from4131 -logic.from4131: - br i1 %t113, label %logic.rhs4132, label %logic.end4133 -logic.rhs4132: - %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp sgt i64 %t116, 0 - br label %logic.rend4134 -logic.rend4134: - br label %logic.end4133 -logic.end4133: - %t118 = phi i1 [ false, %logic.from4131 ], [ %t117, %logic.rend4134 ] - br label %logic.from4135 -logic.from4135: - br i1 %t118, label %logic.rhs4136, label %logic.end4137 -logic.rhs4136: - %t119 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t122, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.rend4138 -logic.rend4138: - br label %logic.end4137 -logic.end4137: - %t127 = phi i1 [ false, %logic.from4135 ], [ %t126, %logic.rend4138 ] - br label %logic.from4139 -logic.from4139: - br i1 %t127, label %logic.rhs4140, label %logic.end4141 -logic.rhs4140: - %t128 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load i64, ptr %t129 - %t131 = icmp sgt i64 %t130, 0 - br label %logic.rend4142 -logic.rend4142: - br label %logic.end4141 -logic.end4141: - %t132 = phi i1 [ false, %logic.from4139 ], [ %t131, %logic.rend4142 ] - br i1 %t132, label %then4143, label %endif4145 -then4143: - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 0, %t136 - br i1 %t137, label %range4146, label %inrange4147 -range4146: - call void @finch_panic_index(ptr @.str.2543, i64 1769, i64 0, i64 %t136) - unreachable -inrange4147: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i64 0 - %t140 = load %S.ast.Type, ptr %t139 - %t141 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t142 = load { ptr, i64, i64 }, ptr %t141 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 0, %t143 - br i1 %t144, label %range4148, label %inrange4149 -range4148: - call void @finch_panic_index(ptr @.str.2544, i64 1769, i64 0, i64 %t143) - unreachable -inrange4149: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 0 - %t147 = load %S.ast.Type, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %a4 - %t149 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t133, %S.ast.Type %t140, %S.ast.Type %t147, { ptr, i64, i64 } %t148, ptr %t149) - ret void -endif4145: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t151 = load { ptr, i64, i64 }, ptr %t150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2545, i64 3, i64 0 }, ptr %a153 - %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) - %t155 = icmp ne i32 %t154, 0 - br label %logic.from4150 -logic.from4150: - br i1 %t155, label %logic.rhs4151, label %logic.end4152 -logic.rhs4151: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.2546, i64 3, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.rend4153 -logic.rend4153: - br label %logic.end4152 -logic.end4152: - %t162 = phi i1 [ false, %logic.from4150 ], [ %t161, %logic.rend4153 ] - br i1 %t162, label %then4154, label %endif4156 -then4154: - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = extractvalue { ptr, i64, i64 } %t165, 1 - %t167 = icmp uge i64 0, %t166 - br i1 %t167, label %range4157, label %inrange4158 -range4157: - call void @finch_panic_index(ptr @.str.2547, i64 1773, i64 0, i64 %t166) - unreachable -inrange4158: - %t168 = extractvalue { ptr, i64, i64 } %t165, 0 - %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range4159, label %inrange4160 -range4159: - call void @finch_panic_index(ptr @.str.2548, i64 1773, i64 0, i64 %t173) - unreachable -inrange4160: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i64 0 - %t177 = load %S.ast.Type, ptr %t176 - %t178 = load { ptr, i64, i64 }, ptr %a4 - %t179 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t163, %S.ast.Type %t170, %S.ast.Type %t177, { ptr, i64, i64 } %t178, ptr %t179) - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 1, %t183 - br i1 %t184, label %range4161, label %inrange4162 -range4161: - call void @finch_panic_index(ptr @.str.2549, i64 1774, i64 1, i64 %t183) - unreachable -inrange4162: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i64 1 - %t187 = load %S.ast.Type, ptr %t186 - %t188 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 1, %t190 - br i1 %t191, label %range4163, label %inrange4164 -range4163: - call void @finch_panic_index(ptr @.str.2550, i64 1774, i64 1, i64 %t190) - unreachable -inrange4164: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i64 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = load { ptr, i64, i64 }, ptr %a4 - %t196 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t180, %S.ast.Type %t187, %S.ast.Type %t194, { ptr, i64, i64 } %t195, ptr %t196) - ret void -endif4156: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t198 = load { ptr, i64, i64 }, ptr %t197 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2551, i64 5, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from4165 -logic.from4165: - br i1 %t202, label %logic.rhs4166, label %logic.end4167 -logic.rhs4166: - %t203 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - %t206 = icmp sgt i64 %t205, 0 - br label %logic.rend4168 -logic.rend4168: - br label %logic.end4167 -logic.end4167: - %t207 = phi i1 [ false, %logic.from4165 ], [ %t206, %logic.rend4168 ] - br label %logic.from4169 -logic.from4169: - br i1 %t207, label %logic.rhs4170, label %logic.end4171 -logic.rhs4170: - %t208 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t209, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2552, i64 6, i64 0 }, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br label %logic.rend4172 -logic.rend4172: - br label %logic.end4171 -logic.end4171: - %t214 = phi i1 [ false, %logic.from4169 ], [ %t213, %logic.rend4172 ] - br i1 %t214, label %then4173, label %endif4175 -then4173: - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic4176, label %ok4177 -panic4176: - call void @finch_panic(ptr @.str.2553, i64 1778, ptr @.str.2554) - unreachable -ok4177: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 16 - %t218 = load ptr, ptr %a1 - %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t220 = load { ptr, i64, i64 }, ptr %t219 - %t221 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = call i64 @finch.gen.findStruct(ptr %t218, { ptr, i64, i64 } %t220, { ptr, i64, i64 } %t222) - %t224 = load { ptr, i64, i64 }, ptr %t217 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 %t223, %t225 - br i1 %t226, label %range4178, label %inrange4179 -range4178: - call void @finch_panic_index(ptr @.str.2555, i64 1778, i64 %t223, i64 %t225) - unreachable -inrange4179: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.gen.StructDef, ptr %t227, i64 %t223 - %t229 = load %S.gen.StructDef, ptr %t228 - store %S.gen.StructDef %t229, ptr %a230 - call void @finch.copy.S_gen_StructDef(ptr %a231, ptr %a230) - %t232 = load %S.gen.StructDef, ptr %a231 - store %S.gen.StructDef %t232, ptr %a233 - %t234 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 5 - %t235 = load { ptr, i64, i64 }, ptr %t234 - %t236 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } %t235, ptr %a238 - store { ptr, i64, i64 } %t237, ptr %a239 - %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) - %t241 = icmp ne i32 %t240, 0 - br label %logic.from4180 -logic.from4180: - br i1 %t241, label %logic.rhs4181, label %logic.end4182 -logic.rhs4181: - %t242 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i32 0, i32 1 - %t247 = load i64, ptr %t246 - %t248 = icmp eq i64 %t244, %t247 - br label %logic.rend4183 -logic.rend4183: - br label %logic.end4182 -logic.end4182: - %t249 = phi i1 [ false, %logic.from4180 ], [ %t248, %logic.rend4183 ] - br i1 %t249, label %then4184, label %endif4186 -then4184: - %t250 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1 - %t252 = load i64, ptr %t251 - store i64 0, ptr %a253 - br label %for.cond4187 -for.cond4187: - %t254 = load i64, ptr %a253 - %t255 = icmp slt i64 %t254, %t252 - br i1 %t255, label %for.body4188, label %for.end4190 -for.body4188: - %t256 = load ptr, ptr %a1 - %t257 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t258 = load i64, ptr %a253 - %t259 = load { ptr, i64, i64 }, ptr %t257 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range4191, label %inrange4192 -range4191: - call void @finch_panic_index(ptr @.str.2556, i64 1781, i64 %t258, i64 %t260) - unreachable -inrange4192: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i64 %t258 - %t264 = load %S.ast.Type, ptr %t263 - %t265 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t266 = load i64, ptr %a253 - %t267 = load { ptr, i64, i64 }, ptr %t265 - %t268 = extractvalue { ptr, i64, i64 } %t267, 1 - %t269 = icmp uge i64 %t266, %t268 - br i1 %t269, label %range4193, label %inrange4194 -range4193: - call void @finch_panic_index(ptr @.str.2557, i64 1781, i64 %t266, i64 %t268) - unreachable -inrange4194: - %t270 = extractvalue { ptr, i64, i64 } %t267, 0 - %t271 = getelementptr inbounds %S.ast.Type, ptr %t270, i64 %t266 - %t272 = load %S.ast.Type, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %a4 - %t274 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t256, %S.ast.Type %t264, %S.ast.Type %t272, { ptr, i64, i64 } %t273, ptr %t274) - br label %for.step4189 -for.step4189: - %t275 = load i64, ptr %a253 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a253 - br label %for.cond4187 -for.end4190: - br label %endif4186 -endif4186: - call void @finch.drop.S_gen_StructDef(ptr %a233) - br label %endif4175 -endif4175: - ret void -} - -define internal void @finch.drop.arr_S_gen_Val(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4271 -n.cond4271: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4272, label %n.end4273 -n.body4272: - %t7 = getelementptr inbounds %S.gen.Val, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Val(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4271 -n.end4273: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Binds(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_bool(ptr %t2) - ret void -} - -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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a137 = alloca %S.gen.Binds, align 16 - %a141 = alloca i64, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca i64, align 16 - %a167 = alloca i64, align 16 - %a182 = alloca %S.gen.Val, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca %S.gen.Val, align 16 - %a228 = alloca %S.gen.Val, align 16 - %a255 = alloca i64, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca i64, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a321 = alloca %S.gen.FnSig, align 16 - %a323 = alloca %S.gen.FnSig, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca i64, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca %S.gen.Val, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.gen.Val, align 16 - %a414 = alloca i64, align 16 - %a422 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic4195, label %ok4196 -panic4195: - call void @finch_panic(ptr @.str.2558, i64 1789, ptr @.str.2559) - unreachable -ok4196: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a3 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4197, label %inrange4198 -range4197: - call void @finch_panic_index(ptr @.str.2560, i64 1789, i64 %t9, i64 %t11) - unreachable -inrange4198: - %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 %panic4199, label %ok4200 -panic4199: - call void @finch_panic(ptr @.str.2561, i64 1790, ptr @.str.2562) - unreachable -ok4200: - %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 %range4201, label %inrange4202 -range4201: - call void @finch_panic_index(ptr @.str.2563, i64 1790, i64 %t24, i64 %t26) - unreachable -inrange4202: - %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 %range4203, label %inrange4204 -range4203: - call void @finch_panic_index(ptr @.str.2564, i64 1790, i64 %t32, i64 %t34) - unreachable -inrange4204: - %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 %then4205, label %endif4207 -then4205: - %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 %then4208, label %endif4210 -then4208: - %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.2565, 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) - store { ptr, i64, i64 } %t73, ptr %a82 - call void @finch_str_drop(ptr %a82) - store { ptr, i64, i64 } %t78, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2566, i64 27, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i32 0, i32 1 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - %t93 = load i64, ptr %t92 - call void @finch_str_from_int(ptr %a94, i64 %t93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t89, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t89, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif4210 -endif4210: - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t104 = getelementptr inbounds %S.ast.Type, ptr %t103, i32 0, i32 1 - store i64 0, ptr %a105 - br label %each.cond4211 -each.cond4211: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body4212, label %each.end4214 -each.body4212: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.ast.Type, ptr %t110, i64 %t108 - %t112 = load %S.ast.Type, ptr %t111 - store %S.ast.Type %t112, ptr %a113 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = load %S.ast.Type, ptr %a113 - %t117 = load %S.ast.Node, ptr %a2 - %t118 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t116, %S.ast.Node %t117) - %t119 = load i64, ptr %t114 - %t120 = add i64 %t119, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t120, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t121 = load ptr, ptr %a53 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 %t119 - store %S.ast.Type %t118, ptr %t122 - store i64 %t120, ptr %t114 - br label %each.step4213 -each.step4213: - %t123 = load i64, ptr %a105 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a105 - br label %each.cond4211 -each.end4214: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = load i64, ptr %a3 - %t128 = load { ptr, i64, i64 }, ptr %a53 - %t129 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2567, i64 4, i64 0 }) - %t130 = load %S.ast.Node, ptr %a2 - %t131 = call i64 @finch.gen.instFn(ptr %t126, i64 %t127, { ptr, i64, i64 } %t128, %S.ast.Type %t129, %S.ast.Node %t130) - store %S.ast.Type %t129, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - %t133 = load %S.ast.Node, ptr %a2 - %t134 = load i64, ptr %a4 - %t135 = load { ptr, i64, i64 }, ptr %a5 - %t136 = call %S.gen.Val @finch.gen.callFn(ptr %t125, i64 %t131, %S.ast.Node %t133, i64 %t134, { ptr, i64, i64 } %t135, { ptr, i64, i64 } { ptr @.str.2568, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2569, i64 0, i64 0 }) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t136 -endif4207: - store %S.gen.Binds zeroinitializer, ptr %a137 - %t138 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond4215 -for.cond4215: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body4216, label %for.end4218 -for.body4216: - %t144 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2570, i64 4, i64 0 }) - %t147 = load i64, ptr %t145 - %t148 = add i64 %t147, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t148, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t149 = load ptr, ptr %t144 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 %t147 - store %S.ast.Type %t146, ptr %t150 - store i64 %t148, ptr %t145 - %t151 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t154, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %t151 - %t156 = getelementptr inbounds i1, ptr %t155, i64 %t153 - store i1 false, ptr %t156 - store i64 %t154, ptr %t152 - br label %for.step4217 -for.step4217: - %t157 = load i64, ptr %a141 - %t158 = add i64 %t157, 1 - store i64 %t158, ptr %a141 - br label %for.cond4215 -for.end4218: - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4219, label %ok4220 -panic4219: - call void @finch_panic(ptr @.str.2571, i64 1809, ptr @.str.2572) - unreachable -ok4220: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 11 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 - %t164 = load i64, ptr %t163 - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a47 - store i64 0, ptr %a167 - br label %for.cond4221 -for.cond4221: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body4222, label %for.end4224 -for.body4222: - %t170 = load ptr, ptr %a1 - %t171 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t172 = load i64, ptr %a4 - %t173 = load i64, ptr %a167 - %t174 = add i64 %t172, %t173 - %t175 = load { ptr, i64, i64 }, ptr %t171 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range4225, label %inrange4226 -range4225: - call void @finch_panic_index(ptr @.str.2573, i64 1811, i64 %t174, i64 %t176) - unreachable -inrange4226: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t174 - %t180 = load %S.ast.Node, ptr %t179 - %t181 = call %S.gen.Val @finch.gen.expr(ptr %t170, %S.ast.Node %t180) - store %S.gen.Val %t181, ptr %a182 - %t183 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i32 0, i32 0 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.2574, i64 4, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.from4227 -logic.from4227: - br i1 %t189, label %logic.end4229, label %logic.rhs4228 -logic.rhs4228: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i32 0, i32 0 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.2575, i64 4, i64 0 }, ptr %a194 - %t195 = call i32 @finch_str_eq(ptr %a193, ptr %a194) - %t196 = icmp ne i32 %t195, 0 - br label %logic.rend4230 -logic.rend4230: - br label %logic.end4229 -logic.end4229: - %t197 = phi i1 [ true, %logic.from4227 ], [ %t196, %logic.rend4230 ] - br i1 %t197, label %then4231, label %endif4233 -then4231: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t200 = load i64, ptr %a4 - %t201 = load i64, ptr %a167 - %t202 = add i64 %t200, %t201 - %t203 = load { ptr, i64, i64 }, ptr %t199 - %t204 = extractvalue { ptr, i64, i64 } %t203, 1 - %t205 = icmp uge i64 %t202, %t204 - br i1 %t205, label %range4234, label %inrange4235 -range4234: - call void @finch_panic_index(ptr @.str.2576, i64 1813, i64 %t202, i64 %t204) - unreachable -inrange4235: - %t206 = extractvalue { ptr, i64, i64 } %t203, 0 - %t207 = getelementptr inbounds %S.ast.Node, ptr %t206, i64 %t202 - %t208 = load %S.ast.Node, ptr %t207 - %t209 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2578, i64 2, i64 0 }, ptr %a211 - call void @finch_str_join(ptr %a212, ptr %t209, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.2577, i64 29, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t213, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.2579, i64 5, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t198, %S.ast.Node %t208, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - br label %endif4233 -endif4233: - %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t226 = load %S.gen.Val, ptr %a182 - store %S.gen.Val %t226, ptr %a227 - call void @finch.copy.S_gen_Val(ptr %a228, ptr %a227) - %t229 = load %S.gen.Val, ptr %a228 - %t230 = load i64, ptr %t225 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %a159, i64 %t231, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %a159 - %t233 = getelementptr inbounds %S.gen.Val, ptr %t232, i64 %t230 - store %S.gen.Val %t229, ptr %t233 - store i64 %t231, ptr %t225 - %t234 = load ptr, ptr %a1 - %t235 = load %S.gen.Val, ptr %a182 - call void @finch.gen.hold(ptr %t234, %S.gen.Val %t235) - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 - %t238 = load i64, ptr %a167 - %t239 = load { ptr, i64, i64 }, ptr %t237 - %t240 = extractvalue { ptr, i64, i64 } %t239, 1 - %t241 = icmp uge i64 %t238, %t240 - br i1 %t241, label %range4236, label %inrange4237 -range4236: - call void @finch_panic_index(ptr @.str.2580, i64 1817, i64 %t238, i64 %t240) - unreachable -inrange4237: - %t242 = extractvalue { ptr, i64, i64 } %t239, 0 - %t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238 - %t244 = getelementptr inbounds %S.ast.Node, ptr %t243, i32 0, i32 5 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - call void @finch.gen.bindType(ptr %t236, %S.ast.Type %t245, %S.ast.Type %t247, { ptr, i64, i64 } %t249, ptr %a137) - call void @finch.drop.S_gen_Val(ptr %a182) - br label %for.step4223 -for.step4223: - %t250 = load i64, ptr %a167 - %t251 = add i64 %t250, 1 - store i64 %t251, ptr %a167 - br label %for.cond4221 -for.end4224: - %t252 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i32 0, i32 1 - %t254 = load i64, ptr %t253 - store i64 0, ptr %a255 - br label %for.cond4238 -for.cond4238: - %t256 = load i64, ptr %a255 - %t257 = icmp slt i64 %t256, %t254 - br i1 %t257, label %for.body4239, label %for.end4241 -for.body4239: - %t258 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t259 = load i64, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %t258 - %t261 = extractvalue { ptr, i64, i64 } %t260, 1 - %t262 = icmp uge i64 %t259, %t261 - br i1 %t262, label %range4242, label %inrange4243 -range4242: - call void @finch_panic_index(ptr @.str.2581, i64 1820, i64 %t259, i64 %t261) - unreachable -inrange4243: - %t263 = extractvalue { ptr, i64, i64 } %t260, 0 - %t264 = getelementptr inbounds i1, ptr %t263, i64 %t259 - %t265 = load i1, ptr %t264 - %t266 = xor i1 %t265, true - br i1 %t266, label %then4244, label %endif4246 -then4244: - %t267 = load ptr, ptr %a1 - %t268 = load %S.ast.Node, ptr %a2 - %t269 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t270 = load i64, ptr %a255 - %t271 = load { ptr, i64, i64 }, ptr %t269 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp uge i64 %t270, %t272 - br i1 %t273, label %range4247, label %inrange4248 -range4247: - call void @finch_panic_index(ptr @.str.2583, i64 1821, i64 %t270, i64 %t272) - unreachable -inrange4248: - %t274 = extractvalue { ptr, i64, i64 } %t271, 0 - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i64 %t270 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } { ptr @.str.2582, i64 16, i64 0 }, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.2584, i64 24, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t285, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.2585, i64 10, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - call void @finch.gen.fail(ptr %t267, %S.ast.Node %t268, { ptr, i64, i64 } %t297) - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_drop(ptr %a298) - br label %endif4246 -endif4246: - br label %for.step4240 -for.step4240: - %t299 = load i64, ptr %a255 - %t300 = add i64 %t299, 1 - store i64 %t300, ptr %a255 - br label %for.cond4238 -for.end4241: - %t301 = load ptr, ptr %a1 - %t302 = load i64, ptr %a3 - %t303 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t304 = load { ptr, i64, i64 }, ptr %t303 - %t305 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2586, i64 4, i64 0 }) - %t306 = load %S.ast.Node, ptr %a2 - %t307 = call i64 @finch.gen.instFn(ptr %t301, i64 %t302, { ptr, i64, i64 } %t304, %S.ast.Type %t305, %S.ast.Node %t306) - store %S.ast.Type %t305, ptr %a308 - call void @finch.drop.S_ast_Type(ptr %a308) - store i64 %t307, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = icmp eq ptr %t310, null - br i1 %t311, label %panic4249, label %ok4250 -panic4249: - call void @finch_panic(ptr @.str.2587, i64 1825, ptr @.str.2588) - unreachable -ok4250: - %t312 = getelementptr inbounds %S.gen.Gen, ptr %t310, i32 0, i32 15 - %t313 = load i64, ptr %a309 - %t314 = load { ptr, i64, i64 }, ptr %t312 - %t315 = extractvalue { ptr, i64, i64 } %t314, 1 - %t316 = icmp uge i64 %t313, %t315 - br i1 %t316, label %range4251, label %inrange4252 -range4251: - call void @finch_panic_index(ptr @.str.2589, i64 1825, i64 %t313, i64 %t315) - unreachable -inrange4252: - %t317 = extractvalue { ptr, i64, i64 } %t314, 0 - %t318 = getelementptr inbounds %S.gen.FnSig, ptr %t317, i64 %t313 - %t319 = load %S.gen.FnSig, ptr %t318 - store %S.gen.FnSig %t319, ptr %a320 - call void @finch.copy.S_gen_FnSig(ptr %a321, ptr %a320) - %t322 = load %S.gen.FnSig, ptr %a321 - store %S.gen.FnSig %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load %S.ast.Node, ptr %a2 - %t326 = load %S.gen.FnSig, ptr %a323 - call void @finch.gen.noteCall(ptr %t324, %S.ast.Node %t325, %S.gen.FnSig %t326) - store { ptr, i64, i64 } zeroinitializer, ptr %a327 - %t328 = load i64, ptr %a47 - store i64 0, ptr %a329 - br label %for.cond4253 -for.cond4253: - %t330 = load i64, ptr %a329 - %t331 = icmp slt i64 %t330, %t328 - br i1 %t331, label %for.body4254, label %for.end4256 -for.body4254: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a329 - %t334 = load { ptr, i64, i64 }, ptr %a159 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range4257, label %inrange4258 -range4257: - call void @finch_panic_index(ptr @.str.2590, i64 1829, i64 %t333, i64 %t335) - unreachable -inrange4258: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Val, ptr %t337, i64 %t333 - %t339 = load %S.gen.Val, ptr %t338 - %t340 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t341 = load i64, ptr %a329 - %t342 = load { ptr, i64, i64 }, ptr %t340 - %t343 = extractvalue { ptr, i64, i64 } %t342, 1 - %t344 = icmp uge i64 %t341, %t343 - br i1 %t344, label %range4259, label %inrange4260 -range4259: - call void @finch_panic_index(ptr @.str.2591, i64 1829, i64 %t341, i64 %t343) - unreachable -inrange4260: - %t345 = extractvalue { ptr, i64, i64 } %t342, 0 - %t346 = getelementptr inbounds %S.ast.Type, ptr %t345, i64 %t341 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t349 = load i64, ptr %a4 - %t350 = load i64, ptr %a329 - %t351 = add i64 %t349, %t350 - %t352 = load { ptr, i64, i64 }, ptr %t348 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range4261, label %inrange4262 -range4261: - call void @finch_panic_index(ptr @.str.2592, i64 1829, i64 %t351, i64 %t353) - unreachable -inrange4262: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds %S.ast.Node, ptr %t355, i64 %t351 - %t357 = load %S.ast.Node, ptr %t356 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 14 - %t359 = load i64, ptr %a329 - %t360 = load { ptr, i64, i64 }, ptr %t358 - %t361 = extractvalue { ptr, i64, i64 } %t360, 1 - %t362 = icmp uge i64 %t359, %t361 - br i1 %t362, label %range4263, label %inrange4264 -range4263: - call void @finch_panic_index(ptr @.str.2594, i64 1829, i64 %t359, i64 %t361) - unreachable -inrange4264: - %t363 = extractvalue { ptr, i64, i64 } %t360, 0 - %t364 = getelementptr inbounds { ptr, i64, i64 }, ptr %t363, i64 %t359 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.2593, i64 10, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.2595, i64 1, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call %S.gen.Val @finch.gen.coerce(ptr %t332, %S.gen.Val %t339, %S.ast.Type %t347, %S.ast.Node %t357, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - store %S.gen.Val %t375, ptr %a377 - %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 - %t379 = load ptr, ptr %a1 - %t380 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t381 = load i64, ptr %a329 - %t382 = load { ptr, i64, i64 }, ptr %t380 - %t383 = extractvalue { ptr, i64, i64 } %t382, 1 - %t384 = icmp uge i64 %t381, %t383 - br i1 %t384, label %range4265, label %inrange4266 -range4265: - call void @finch_panic_index(ptr @.str.2596, i64 1830, i64 %t381, i64 %t383) - unreachable -inrange4266: - %t385 = extractvalue { ptr, i64, i64 } %t382, 0 - %t386 = getelementptr inbounds %S.ast.Type, ptr %t385, i64 %t381 - %t387 = load %S.ast.Type, ptr %t386 - %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t379, %S.ast.Type %t387) - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.2597, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = getelementptr inbounds %S.gen.Val, ptr %a377, i32 0, i32 0 - %t395 = load { ptr, i64, i64 }, ptr %t394 - store { ptr, i64, i64 } %t393, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t393, ptr %a399 - call void @finch_str_drop(ptr %a399) - %t400 = load { ptr, i64, i64 }, ptr %a396 - %t401 = load i64, ptr %t378 - %t402 = add i64 %t401, 1 - call void @finch_arr_reserve(ptr %a327, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t403 = load ptr, ptr %a327 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 - store { ptr, i64, i64 } %t400, ptr %t404 - store i64 %t402, ptr %t378 - call void @finch.drop.S_gen_Val(ptr %a377) - br label %for.step4255 -for.step4255: - %t405 = load i64, ptr %a329 - %t406 = add i64 %t405, 1 - store i64 %t406, ptr %a329 - br label %for.cond4253 -for.end4256: - %t407 = load ptr, ptr %a1 - %t408 = load %S.gen.FnSig, ptr %a323 - %t409 = load %S.ast.Node, ptr %a2 - %t410 = load { ptr, i64, i64 }, ptr %a327 - %t411 = load { ptr, i64, i64 }, ptr %a5 - %t412 = call %S.gen.Val @finch.gen.emitCall(ptr %t407, %S.gen.FnSig %t408, %S.ast.Node %t409, { ptr, i64, i64 } %t410, { ptr, i64, i64 } %t411) - store %S.gen.Val %t412, ptr %a413 - store i64 0, ptr %a414 - br label %each.cond4267 -each.cond4267: - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t416 = load i64, ptr %t415 - %t417 = load i64, ptr %a414 - %t418 = icmp slt i64 %t417, %t416 - br i1 %t418, label %each.body4268, label %each.end4270 -each.body4268: - %t419 = load ptr, ptr %a159 - %t420 = getelementptr inbounds %S.gen.Val, ptr %t419, i64 %t417 - %t421 = load %S.gen.Val, ptr %t420 - store %S.gen.Val %t421, ptr %a422 - %t423 = load ptr, ptr %a1 - %t424 = load %S.gen.Val, ptr %a422 - call void @finch.gen.release(ptr %t423, %S.gen.Val %t424) - br label %each.step4269 -each.step4269: - %t425 = load i64, ptr %a414 - %t426 = add i64 %t425, 1 - store i64 %t426, ptr %a414 - br label %each.cond4267 -each.end4270: - %t427 = load ptr, ptr %a1 - %t428 = load i64, ptr %a165 - call void @finch.gen.heldEnd(ptr %t427, i64 %t428) - %t429 = load %S.gen.Val, ptr %a413 - call void @finch.drop.arr_str(ptr %a327) - call void @finch.drop.S_gen_FnSig(ptr %a323) - call void @finch.drop.arr_S_gen_Val(ptr %a159) - call void @finch.drop.S_gen_Binds(ptr %a137) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t429 -} - -define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { -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.cond4282 -n.cond4282: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4283, label %n.end4284 -n.body4283: - %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.cond4282 -n.end4284: - 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 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4274, label %ok4275 -panic4274: - call void @finch_panic(ptr @.str.2598, i64 1843, ptr @.str.2599) - unreachable -ok4275: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 26 - %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 %panic4276, label %ok4277 -panic4276: - call void @finch_panic(ptr @.str.2600, i64 1843, ptr @.str.2601) - unreachable -ok4277: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 16 - %t10 = load i64, ptr %a2 - %t11 = load { ptr, i64, i64 }, ptr %t9 - %t12 = extractvalue { ptr, i64, i64 } %t11, 1 - %t13 = icmp uge i64 %t10, %t12 - br i1 %t13, label %range4278, label %inrange4279 -range4278: - call void @finch_panic_index(ptr @.str.2602, i64 1843, i64 %t10, i64 %t12) - unreachable -inrange4279: - %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.missing4280, label %map.found4281 -map.missing4280: - 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.2603, i64 1843, ptr %a21) - unreachable -map.found4281: - %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 %panic4285, label %ok4286 -panic4285: - call void @finch_panic(ptr @.str.2604, i64 1844, ptr @.str.2605) - unreachable -ok4286: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 16 - %t35 = load i64, ptr %a2 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4287, label %inrange4288 -range4287: - call void @finch_panic_index(ptr @.str.2606, i64 1844, i64 %t35, i64 %t37) - unreachable -inrange4288: - %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.cond4289 -each.cond4289: - %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.body4290, label %each.end4292 -each.body4290: - %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 %then4293, label %endif4295 -then4293: - br label %each.step4291 -endif4295: - %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.2607, 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 %then4296, label %endif4298 -then4296: - %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 %endif4298 -endif4298: - %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 %then4299, label %endif4301 -then4299: - %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.2608, i64 1, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.2609, i64 6, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load i64, ptr %t78 - %t96 = add i64 %t95, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t96, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t97 = load ptr, ptr %a43 - %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i64 %t95 - store { ptr, i64, i64 } %t94, ptr %t98 - store i64 %t96, ptr %t78 - br label %endif4301 -endif4301: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic4302, label %ok4303 -panic4302: - call void @finch_panic(ptr @.str.2610, i64 1858, ptr @.str.2611) - unreachable -ok4303: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 16 - %t102 = load i64, ptr %a2 - %t103 = load { ptr, i64, i64 }, ptr %t101 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 %t102, %t104 - br i1 %t105, label %range4304, label %inrange4305 -range4304: - call void @finch_panic_index(ptr @.str.2612, i64 1858, i64 %t102, i64 %t104) - unreachable -inrange4305: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.gen.StructDef, ptr %t106, i64 %t102 - %t108 = getelementptr inbounds %S.gen.StructDef, ptr %t107, i32 0, i32 11 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t108, i32 0, i32 1 - %t110 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_copy(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = load i64, ptr %t109 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t108, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t108 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115 - store { ptr, i64, i64 } %t114, ptr %t118 - store i64 %t116, ptr %t109 - %t119 = load ptr, ptr %a1 - %t120 = icmp eq ptr %t119, null - br i1 %t120, label %panic4306, label %ok4307 -panic4306: - call void @finch_panic(ptr @.str.2613, i64 1859, ptr @.str.2614) - unreachable -ok4307: - %t121 = getelementptr inbounds %S.gen.Gen, ptr %t119, i32 0, i32 16 - %t122 = load i64, ptr %a2 - %t123 = load { ptr, i64, i64 }, ptr %t121 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 %t122, %t124 - br i1 %t125, label %range4308, label %inrange4309 -range4308: - call void @finch_panic_index(ptr @.str.2615, i64 1859, i64 %t122, i64 %t124) - unreachable -inrange4309: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %t126, i64 %t122 - %t128 = getelementptr inbounds %S.gen.StructDef, ptr %t127, i32 0, i32 12 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load %S.ast.Type, ptr %a60 - store %S.ast.Type %t130, ptr %a131 - call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) - %t133 = load %S.ast.Type, ptr %a132 - %t134 = load i64, ptr %t129 - %t135 = add i64 %t134, 1 - call void @finch_arr_reserve(ptr %t128, i64 %t135, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t136 = load ptr, ptr %t128 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 %t134 - store %S.ast.Type %t133, ptr %t137 - store i64 %t135, ptr %t129 - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic4310, label %ok4311 -panic4310: - call void @finch_panic(ptr @.str.2616, i64 1860, ptr @.str.2617) - unreachable -ok4311: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load i64, ptr %a2 - %t142 = load { ptr, i64, i64 }, ptr %t140 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 %t141, %t143 - br i1 %t144, label %range4312, label %inrange4313 -range4312: - call void @finch_panic_index(ptr @.str.2618, i64 1860, i64 %t141, i64 %t143) - unreachable -inrange4313: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.gen.StructDef, ptr %t145, i64 %t141 - %t147 = getelementptr inbounds %S.gen.StructDef, ptr %t146, i32 0, i32 3 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i32 0, i32 1 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = load i64, ptr %t148 - %t152 = add i64 %t151, 1 - call void @finch_arr_reserve(ptr %t147, i64 %t152, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t153 = load ptr, ptr %t147 - %t154 = getelementptr inbounds i64, ptr %t153, i64 %t151 - store i64 %t150, ptr %t154 - store i64 %t152, ptr %t148 - %t155 = load ptr, ptr %a1 - %t156 = icmp eq ptr %t155, null - br i1 %t156, label %panic4314, label %ok4315 -panic4314: - call void @finch_panic(ptr @.str.2619, i64 1861, ptr @.str.2620) - unreachable -ok4315: - %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 16 - %t158 = load i64, ptr %a2 - %t159 = load { ptr, i64, i64 }, ptr %t157 - %t160 = extractvalue { ptr, i64, i64 } %t159, 1 - %t161 = icmp uge i64 %t158, %t160 - br i1 %t161, label %range4316, label %inrange4317 -range4316: - call void @finch_panic_index(ptr @.str.2621, i64 1861, i64 %t158, i64 %t160) - unreachable -inrange4317: - %t162 = extractvalue { ptr, i64, i64 } %t159, 0 - %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t158 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %t163, i32 0, i32 4 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 - %t166 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t167 = load i64, ptr %t166 - %t168 = load i64, ptr %t165 - %t169 = add i64 %t168, 1 - call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t170 = load ptr, ptr %t164 - %t171 = getelementptr inbounds i64, ptr %t170, i64 %t168 - store i64 %t167, ptr %t171 - store i64 %t169, ptr %t165 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a60 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = load i64, ptr %t172 - %t177 = add i64 %t176, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t178 = load ptr, ptr %a43 - %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176 - store { ptr, i64, i64 } %t175, ptr %t179 - store i64 %t177, ptr %t172 - %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t181 = load i64, ptr %t180 - %t182 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 - %t183 = load i64, ptr %t182 - %t184 = add i64 %t181, %t183 - store i64 %t184, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a60) - br label %each.step4291 -each.step4291: - %t185 = load i64, ptr %a45 - %t186 = add i64 %t185, 1 - store i64 %t186, ptr %a45 - br label %each.cond4289 -each.end4292: - %t187 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t188 = load i64, ptr %t187 - %t189 = load i64, ptr %a42 - %t190 = icmp sgt i64 %t188, %t189 - br i1 %t190, label %then4318, label %endif4320 -then4318: - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t192 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t193 = load i64, ptr %t192 - %t194 = load i64, ptr %a42 - %t195 = sub i64 %t193, %t194 - call void @finch_str_from_int(ptr %a196, i64 %t195) - %t197 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2622, i64 1, i64 0 }, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t197, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.2623, i64 6, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = load i64, ptr %t191 - %t209 = add i64 %t208, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t209, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t210 = load ptr, ptr %a43 - %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i64 %t208 - store { ptr, i64, i64 } %t207, ptr %t211 - store i64 %t209, ptr %t191 - br label %endif4320 -endif4320: - %t212 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t213 = load { ptr, i64, i64 }, ptr %t212 - %t214 = load ptr, ptr %a1 - %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic4321, label %ok4322 -panic4321: - call void @finch_panic(ptr @.str.2624, i64 1868, ptr @.str.2625) - unreachable -ok4322: - %t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 16 - %t217 = load i64, ptr %a2 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range4323, label %inrange4324 -range4323: - call void @finch_panic_index(ptr @.str.2626, i64 1868, i64 %t217, i64 %t219) - unreachable -inrange4324: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.gen.StructDef, ptr %t221, i64 %t217 - %t223 = getelementptr inbounds %S.gen.StructDef, ptr %t222, i32 0, i32 8 - store { ptr, i64, i64 } %t213, ptr %a224 - call void @finch_str_copy(ptr %a225, ptr %a224) - %t226 = load { ptr, i64, i64 }, ptr %a225 - %t227 = load { ptr, i64, i64 }, ptr %t223 - store { ptr, i64, i64 } %t226, ptr %t223 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5 - %t230 = load i1, ptr %t229 - br label %logic.from4325 -logic.from4325: - br i1 %t230, label %logic.rhs4326, label %logic.end4327 -logic.rhs4326: - %t231 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i32 0, i32 1 - %t233 = load i64, ptr %t232 - %t234 = icmp eq i64 %t233, 0 - br label %logic.rend4328 -logic.rend4328: - br label %logic.end4327 -logic.end4327: - %t235 = phi i1 [ false, %logic.from4325 ], [ %t234, %logic.rend4328 ] - br i1 %t235, label %then4329, label %endif4331 -then4329: - %t236 = load ptr, ptr %a1 - %t237 = icmp eq ptr %t236, null - br i1 %t237, label %panic4332, label %ok4333 -panic4332: - call void @finch_panic(ptr @.str.2628, i64 1870, ptr @.str.2629) - unreachable -ok4333: - %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 16 - %t239 = load i64, ptr %a2 - %t240 = load { ptr, i64, i64 }, ptr %t238 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 %t239, %t241 - br i1 %t242, label %range4334, label %inrange4335 -range4334: - call void @finch_panic_index(ptr @.str.2630, i64 1870, i64 %t239, i64 %t241) - unreachable -inrange4335: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.gen.StructDef, ptr %t243, i64 %t239 - %t245 = getelementptr inbounds %S.gen.StructDef, ptr %t244, i32 0, i32 8 - %t246 = load { ptr, i64, i64 }, ptr %t245 - store { ptr, i64, i64 } { ptr @.str.2627, i64 49, i64 0 }, ptr %t245 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif4331 -endif4331: - %t248 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t249 = load i64, ptr %t248 - %t250 = load ptr, ptr %a1 - %t251 = icmp eq ptr %t250, null - br i1 %t251, label %panic4336, label %ok4337 -panic4336: - call void @finch_panic(ptr @.str.2631, i64 1872, ptr @.str.2632) - unreachable -ok4337: - %t252 = getelementptr inbounds %S.gen.Gen, ptr %t250, i32 0, i32 16 - %t253 = load i64, ptr %a2 - %t254 = load { ptr, i64, i64 }, ptr %t252 - %t255 = extractvalue { ptr, i64, i64 } %t254, 1 - %t256 = icmp uge i64 %t253, %t255 - br i1 %t256, label %range4338, label %inrange4339 -range4338: - call void @finch_panic_index(ptr @.str.2633, i64 1872, i64 %t253, i64 %t255) - unreachable -inrange4339: - %t257 = extractvalue { ptr, i64, i64 } %t254, 0 - %t258 = getelementptr inbounds %S.gen.StructDef, ptr %t257, i64 %t253 - %t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i32 0, i32 9 - store i64 %t249, ptr %t259 - %t260 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 - %t261 = load i64, ptr %t260 - %t262 = load ptr, ptr %a1 - %t263 = icmp eq ptr %t262, null - br i1 %t263, label %panic4340, label %ok4341 -panic4340: - call void @finch_panic(ptr @.str.2634, i64 1873, ptr @.str.2635) - unreachable -ok4341: - %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 16 - %t265 = load i64, ptr %a2 - %t266 = load { ptr, i64, i64 }, ptr %t264 - %t267 = extractvalue { ptr, i64, i64 } %t266, 1 - %t268 = icmp uge i64 %t265, %t267 - br i1 %t268, label %range4342, label %inrange4343 -range4342: - call void @finch_panic_index(ptr @.str.2636, i64 1873, i64 %t265, i64 %t267) - unreachable -inrange4343: - %t269 = extractvalue { ptr, i64, i64 } %t266, 0 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i64 %t265 - %t271 = getelementptr inbounds %S.gen.StructDef, ptr %t270, i32 0, i32 10 - store i64 %t261, ptr %t271 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic4344, label %ok4345 -panic4344: - call void @finch_panic(ptr @.str.2637, i64 1874, ptr @.str.2638) - unreachable -ok4345: - %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 16 - %t275 = load i64, ptr %a2 - %t276 = load { ptr, i64, i64 }, ptr %t274 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range4346, label %inrange4347 -range4346: - call void @finch_panic_index(ptr @.str.2639, i64 1874, i64 %t275, i64 %t277) - unreachable -inrange4347: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.gen.StructDef, ptr %t279, i64 %t275 - %t281 = getelementptr inbounds %S.gen.StructDef, ptr %t280, i32 0, i32 15 - store i64 2, ptr %t281 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic4348, label %ok4349 -panic4348: - call void @finch_panic(ptr @.str.2640, i64 1875, ptr @.str.2641) - unreachable -ok4349: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 2 - %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i32 0, i32 1 - %t286 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } { ptr @.str.2642, i64 5, i64 0 }, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2643, i64 10, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2644, i64 2, i64 0 }, ptr %a298 - call void @finch_str_join(ptr %a299, ptr %a43, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t296, ptr %a302 - store { ptr, i64, i64 } %t300, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t296, ptr %a304 - call void @finch_str_drop(ptr %a304) - store { ptr, i64, i64 } %t300, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a301 - store { ptr, i64, i64 } %t306, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.2645, i64 2, i64 0 }, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - store { ptr, i64, i64 } %t306, ptr %a310 - call void @finch_str_drop(ptr %a310) - %t311 = load { ptr, i64, i64 }, ptr %a307 - %t312 = load i64, ptr %t285 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %t284, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %t284 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t285 - call void @finch.drop.arr_str(ptr %a43) - call void @finch.drop.S_cimport_CStruct(ptr %a31) - ret void -} - -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 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4350, label %ok4351 -panic4350: - call void @finch_panic(ptr @.str.2646, i64 1879, ptr @.str.2647) - unreachable -ok4351: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load i64, ptr %a2 - %t7 = load { ptr, i64, i64 }, ptr %t5 - %t8 = extractvalue { ptr, i64, i64 } %t7, 1 - %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range4352, label %inrange4353 -range4352: - call void @finch_panic_index(ptr @.str.2648, i64 1879, i64 %t6, i64 %t8) - unreachable -inrange4353: - %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 %then4354, label %endif4356 -then4354: - ret void -endif4356: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic4357, label %ok4358 -panic4357: - call void @finch_panic(ptr @.str.2649, i64 1882, ptr @.str.2650) - unreachable -ok4358: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 16 - %t18 = load i64, ptr %a2 - %t19 = load { ptr, i64, i64 }, ptr %t17 - %t20 = extractvalue { ptr, i64, i64 } %t19, 1 - %t21 = icmp uge i64 %t18, %t20 - br i1 %t21, label %range4359, label %inrange4360 -range4359: - call void @finch_panic_index(ptr @.str.2651, i64 1882, i64 %t18, i64 %t20) - unreachable -inrange4360: - %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 %then4361, label %endif4363 -then4361: - %t26 = load ptr, ptr %a1 - %t27 = load i64, ptr %a2 - call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) - ret void -endif4363: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4364, label %ok4365 -panic4364: - call void @finch_panic(ptr @.str.2652, i64 1886, ptr @.str.2653) - unreachable -ok4365: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a2 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range4366, label %inrange4367 -range4366: - call void @finch_panic_index(ptr @.str.2654, i64 1886, i64 %t31, i64 %t33) - unreachable -inrange4367: - %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 %then4368, label %endif4370 -then4368: - %t41 = load ptr, ptr %a1 - %t42 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) - ret void -endif4370: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic4371, label %ok4372 -panic4371: - call void @finch_panic(ptr @.str.2655, i64 1891, ptr @.str.2656) - unreachable -ok4372: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 18 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch.copy.arr_str(ptr %a48, ptr %a47) - %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 %panic4373, label %ok4374 -panic4373: - call void @finch_panic(ptr @.str.2657, i64 1892, ptr @.str.2658) - unreachable -ok4374: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 19 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %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 %panic4375, label %ok4376 -panic4375: - call void @finch_panic(ptr @.str.2659, i64 1893, ptr @.str.2660) - unreachable -ok4376: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 20 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %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 %panic4377, label %ok4378 -panic4377: - call void @finch_panic(ptr @.str.2661, i64 1894, ptr @.str.2662) - unreachable -ok4378: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 16 - %t70 = load i64, ptr %a2 - %t71 = load { ptr, i64, i64 }, ptr %t69 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 %t70, %t72 - br i1 %t73, label %range4379, label %inrange4380 -range4379: - call void @finch_panic_index(ptr @.str.2663, i64 1894, i64 %t70, i64 %t72) - unreachable -inrange4380: - %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 %panic4381, label %ok4382 -panic4381: - call void @finch_panic(ptr @.str.2664, i64 1894, ptr @.str.2665) - unreachable -ok4382: - %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 18 - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch.copy.arr_str(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t83, ptr %t80 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch.drop.arr_str(ptr %a85) - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4383, label %ok4384 -panic4383: - call void @finch_panic(ptr @.str.2666, i64 1895, ptr @.str.2667) - unreachable -ok4384: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 16 - %t89 = load i64, ptr %a2 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range4385, label %inrange4386 -range4385: - call void @finch_panic_index(ptr @.str.2668, i64 1895, i64 %t89, i64 %t91) - unreachable -inrange4386: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.gen.StructDef, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.gen.StructDef, ptr %t94, i32 0, i32 7 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = load ptr, ptr %a1 - %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic4387, label %ok4388 -panic4387: - call void @finch_panic(ptr @.str.2669, i64 1895, ptr @.str.2670) - unreachable -ok4388: - %t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 19 - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch.copy.arr_S_ast_Type(ptr %a101, ptr %a100) - %t102 = load { ptr, i64, i64 }, ptr %a101 - %t103 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t102, ptr %t99 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch.drop.arr_S_ast_Type(ptr %a104) - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4389, label %ok4390 -panic4389: - call void @finch_panic(ptr @.str.2672, i64 1896, ptr @.str.2673) - unreachable -ok4390: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 16 - %t108 = load i64, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %t107 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 %t108, %t110 - br i1 %t111, label %range4391, label %inrange4392 -range4391: - call void @finch_panic_index(ptr @.str.2674, i64 1896, i64 %t108, i64 %t110) - unreachable -inrange4392: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds %S.gen.StructDef, ptr %t112, i64 %t108 - %t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.2671, i64 17, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.2675, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load ptr, ptr %a1 - %t126 = icmp eq ptr %t125, null - br i1 %t126, label %panic4393, label %ok4394 -panic4393: - call void @finch_panic(ptr @.str.2676, i64 1896, ptr @.str.2677) - unreachable -ok4394: - %t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 20 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t124, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load ptr, ptr %a1 - %t131 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t130, i64 %t131) - %t132 = load { ptr, i64, i64 }, ptr %a50 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic4395, label %ok4396 -panic4395: - call void @finch_panic(ptr @.str.2678, i64 1898, ptr @.str.2679) - unreachable -ok4396: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 18 - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch.copy.arr_str(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t138, ptr %t135 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch.drop.arr_str(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a58 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4397, label %ok4398 -panic4397: - call void @finch_panic(ptr @.str.2680, i64 1899, ptr @.str.2681) - unreachable -ok4398: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 19 - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch.copy.arr_S_ast_Type(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t147, ptr %t144 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_S_ast_Type(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a66 - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic4399, label %ok4400 -panic4399: - call void @finch_panic(ptr @.str.2682, i64 1900, ptr @.str.2683) - unreachable -ok4400: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 20 - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t156, ptr %t153 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_S_ast_Type(ptr %a58) - call void @finch.drop.arr_str(ptr %a50) - ret void -} - -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 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i1, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a142 = alloca %S.ast.Node, align 16 - %a148 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca %S.ast.Type, align 16 - %a222 = alloca %S.ast.Type, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4401, label %ok4402 -panic4401: - call void @finch_panic(ptr @.str.2684, i64 1904, ptr @.str.2685) - unreachable -ok4402: - %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 %panic4403, label %ok4404 -panic4403: - call void @finch_panic(ptr @.str.2686, i64 1904, ptr @.str.2687) - unreachable -ok4404: - %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 %range4405, label %inrange4406 -range4405: - call void @finch_panic_index(ptr @.str.2688, i64 1904, i64 %t9, i64 %t11) - unreachable -inrange4406: - %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 %range4407, label %inrange4408 -range4407: - call void @finch_panic_index(ptr @.str.2689, i64 1904, i64 %t16, i64 %t18) - unreachable -inrange4408: - %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 %panic4409, label %ok4410 -panic4409: - call void @finch_panic(ptr @.str.2690, i64 1904, ptr @.str.2691) - unreachable -ok4410: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 16 - %t26 = load i64, ptr %a2 - %t27 = load { ptr, i64, i64 }, ptr %t25 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range4411, label %inrange4412 -range4411: - call void @finch_panic_index(ptr @.str.2692, i64 1904, i64 %t26, i64 %t28) - unreachable -inrange4412: - %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 %range4413, label %inrange4414 -range4413: - call void @finch_panic_index(ptr @.str.2693, i64 1904, i64 %t33, i64 %t35) - unreachable -inrange4414: - %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 %panic4415, label %ok4416 -panic4415: - call void @finch_panic(ptr @.str.2694, i64 1905, ptr @.str.2695) - unreachable -ok4416: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 16 - %t47 = load i64, ptr %a2 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range4417, label %inrange4418 -range4417: - call void @finch_panic_index(ptr @.str.2696, i64 1905, i64 %t47, i64 %t49) - unreachable -inrange4418: - %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 %then4419, label %endif4421 -then4419: - %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.2697, 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.2698, i64 26, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } %t68, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t68, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.2699, i64 7, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t80, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t80, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2700, i64 15, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - br label %endif4421 -endif4421: - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4422, label %ok4423 -panic4422: - call void @finch_panic(ptr @.str.2701, i64 1908, ptr @.str.2702) - unreachable -ok4423: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 16 - %t97 = load i64, ptr %a2 - %t98 = load { ptr, i64, i64 }, ptr %t96 - %t99 = extractvalue { ptr, i64, i64 } %t98, 1 - %t100 = icmp uge i64 %t97, %t99 - br i1 %t100, label %range4424, label %inrange4425 -range4424: - call void @finch_panic_index(ptr @.str.2703, i64 1908, i64 %t97, i64 %t99) - unreachable -inrange4425: - %t101 = extractvalue { ptr, i64, i64 } %t98, 0 - %t102 = getelementptr inbounds %S.gen.StructDef, ptr %t101, i64 %t97 - %t103 = getelementptr inbounds %S.gen.StructDef, ptr %t102, i32 0, i32 15 - store i64 1, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic4426, label %ok4427 -panic4426: - call void @finch_panic(ptr @.str.2704, i64 1909, ptr @.str.2705) - unreachable -ok4427: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 14 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_copy(ptr %a109, ptr %a108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic4428, label %ok4429 -panic4428: - call void @finch_panic(ptr @.str.2706, i64 1910, ptr @.str.2707) - unreachable -ok4429: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 16 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range4430, label %inrange4431 -range4430: - call void @finch_panic_index(ptr @.str.2708, i64 1910, i64 %t115, i64 %t117) - unreachable -inrange4431: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.StructDef, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %t120, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic4432, label %ok4433 -panic4432: - call void @finch_panic(ptr @.str.2709, i64 1910, ptr @.str.2710) - unreachable -ok4433: - %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 14 - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - %t129 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t128, ptr %t125 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i1 false, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9 - store i64 0, ptr %a134 - br label %each.cond4434 -each.cond4434: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = load i64, ptr %a134 - %t138 = icmp slt i64 %t137, %t136 - br i1 %t138, label %each.body4435, label %each.end4437 -each.body4435: - %t139 = load ptr, ptr %t133 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 %t137 - %t141 = load %S.ast.Node, ptr %t140 - store %S.ast.Node %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 5 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = load %S.ast.Node, ptr %a142 - %t147 = call %S.ast.Type @finch.gen.resolve(ptr %t143, %S.ast.Type %t145, %S.ast.Node %t146) - store %S.ast.Type %t147, ptr %a148 - %t149 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.2711, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp ne i32 %t153, 0 - br i1 %t154, label %then4438, label %endif4440 -then4438: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 3 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 2 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = call i64 @finch.gen.findStruct(ptr %t156, { ptr, i64, i64 } %t158, { ptr, i64, i64 } %t160) - call void @finch.gen.resolveStruct(ptr %t155, i64 %t161) - br label %endif4440 -endif4440: - %t162 = load ptr, ptr %a1 - %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic4441, label %ok4442 -panic4441: - call void @finch_panic(ptr @.str.2712, i64 1918, ptr @.str.2713) - unreachable -ok4442: - %t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 16 - %t165 = load i64, ptr %a2 - %t166 = load { ptr, i64, i64 }, ptr %t164 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range4443, label %inrange4444 -range4443: - call void @finch_panic_index(ptr @.str.2714, i64 1918, i64 %t165, i64 %t167) - unreachable -inrange4444: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds %S.gen.StructDef, ptr %t169, i64 %t165 - %t171 = getelementptr inbounds %S.gen.StructDef, ptr %t170, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4445, label %ok4446 -panic4445: - call void @finch_panic(ptr @.str.2715, i64 1918, ptr @.str.2716) - unreachable -ok4446: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 16 - %t176 = load i64, ptr %a2 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range4447, label %inrange4448 -range4447: - call void @finch_panic_index(ptr @.str.2717, i64 1918, i64 %t176, i64 %t178) - unreachable -inrange4448: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.gen.StructDef, ptr %t181, i32 0, i32 11 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = load i64, ptr %t172 - %t186 = add i64 %t185, 1 - call void @finch_arr_reserve(ptr %t171, i64 %t186, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t187 = load ptr, ptr %t171 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t185 - store i64 %t184, ptr %t188 - store i64 %t186, ptr %t172 - %t189 = load ptr, ptr %a1 - %t190 = icmp eq ptr %t189, null - br i1 %t190, label %panic4449, label %ok4450 -panic4449: - call void @finch_panic(ptr @.str.2718, i64 1919, ptr @.str.2719) - unreachable -ok4450: - %t191 = getelementptr inbounds %S.gen.Gen, ptr %t189, i32 0, i32 16 - %t192 = load i64, ptr %a2 - %t193 = load { ptr, i64, i64 }, ptr %t191 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range4451, label %inrange4452 -range4451: - call void @finch_panic_index(ptr @.str.2720, i64 1919, i64 %t192, i64 %t194) - unreachable -inrange4452: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.gen.StructDef, ptr %t196, i64 %t192 - %t198 = getelementptr inbounds %S.gen.StructDef, ptr %t197, i32 0, i32 11 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 1 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_copy(ptr %a203, ptr %a202) - %t204 = load { ptr, i64, i64 }, ptr %a203 - %t205 = load i64, ptr %t199 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t198, i64 %t206, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t198 - %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t207, i64 %t205 - store { ptr, i64, i64 } %t204, ptr %t208 - store i64 %t206, ptr %t199 - %t209 = load ptr, ptr %a1 - %t210 = icmp eq ptr %t209, null - br i1 %t210, label %panic4453, label %ok4454 -panic4453: - call void @finch_panic(ptr @.str.2721, i64 1920, ptr @.str.2722) - unreachable -ok4454: - %t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 16 - %t212 = load i64, ptr %a2 - %t213 = load { ptr, i64, i64 }, ptr %t211 - %t214 = extractvalue { ptr, i64, i64 } %t213, 1 - %t215 = icmp uge i64 %t212, %t214 - br i1 %t215, label %range4455, label %inrange4456 -range4455: - call void @finch_panic_index(ptr @.str.2723, i64 1920, i64 %t212, i64 %t214) - unreachable -inrange4456: - %t216 = extractvalue { ptr, i64, i64 } %t213, 0 - %t217 = getelementptr inbounds %S.gen.StructDef, ptr %t216, i64 %t212 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i32 0, i32 12 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %a148 - store %S.ast.Type %t220, ptr %a221 - call void @finch.copy.S_ast_Type(ptr %a222, ptr %a221) - %t223 = load %S.ast.Type, ptr %a222 - %t224 = load i64, ptr %t219 - %t225 = add i64 %t224, 1 - call void @finch_arr_reserve(ptr %t218, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t226 = load ptr, ptr %t218 - %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 - store %S.ast.Type %t223, ptr %t227 - store i64 %t225, ptr %t219 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a148 - %t230 = call i1 @finch.gen.owning(ptr %t228, %S.ast.Type %t229) - br i1 %t230, label %then4457, label %endif4459 -then4457: - store i1 true, ptr %a131 - br label %endif4459 -endif4459: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a148 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - %t235 = load i64, ptr %t231 - %t236 = add i64 %t235, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t236, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t237 = load ptr, ptr %a132 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t235 - store { ptr, i64, i64 } %t234, ptr %t238 - store i64 %t236, ptr %t231 - call void @finch.drop.S_ast_Type(ptr %a148) - br label %each.step4436 -each.step4436: - %t239 = load i64, ptr %a134 - %t240 = add i64 %t239, 1 - store i64 %t240, ptr %a134 - br label %each.cond4434 -each.end4437: - %t241 = load i1, ptr %a131 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic4460, label %ok4461 -panic4460: - call void @finch_panic(ptr @.str.2724, i64 1926, ptr @.str.2725) - unreachable -ok4461: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 16 - %t245 = load i64, ptr %a2 - %t246 = load { ptr, i64, i64 }, ptr %t244 - %t247 = extractvalue { ptr, i64, i64 } %t246, 1 - %t248 = icmp uge i64 %t245, %t247 - br i1 %t248, label %range4462, label %inrange4463 -range4462: - call void @finch_panic_index(ptr @.str.2726, i64 1926, i64 %t245, i64 %t247) - unreachable -inrange4463: - %t249 = extractvalue { ptr, i64, i64 } %t246, 0 - %t250 = getelementptr inbounds %S.gen.StructDef, ptr %t249, i64 %t245 - %t251 = getelementptr inbounds %S.gen.StructDef, ptr %t250, i32 0, i32 16 - store i1 %t241, ptr %t251 - %t252 = load { ptr, i64, i64 }, ptr %a111 - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic4464, label %ok4465 -panic4464: - call void @finch_panic(ptr @.str.2727, i64 1927, ptr @.str.2728) - unreachable -ok4465: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 14 - store { ptr, i64, i64 } %t252, ptr %a256 - call void @finch_str_copy(ptr %a257, ptr %a256) - %t258 = load { ptr, i64, i64 }, ptr %a257 - %t259 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t258, ptr %t255 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic4466, label %ok4467 -panic4466: - call void @finch_panic(ptr @.str.2729, i64 1928, ptr @.str.2730) - unreachable -ok4467: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 16 - %t264 = load i64, ptr %a2 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range4468, label %inrange4469 -range4468: - call void @finch_panic_index(ptr @.str.2731, i64 1928, i64 %t264, i64 %t266) - unreachable -inrange4469: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.gen.StructDef, ptr %t268, i64 %t264 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i32 0, i32 15 - store i64 2, ptr %t270 - %t271 = load ptr, ptr %a1 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic4470, label %ok4471 -panic4470: - call void @finch_panic(ptr @.str.2732, i64 1929, ptr @.str.2733) - unreachable -ok4471: - %t273 = getelementptr inbounds %S.gen.Gen, ptr %t271, i32 0, i32 2 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load ptr, ptr %a1 - %t276 = icmp eq ptr %t275, null - br i1 %t276, label %panic4472, label %ok4473 -panic4472: - call void @finch_panic(ptr @.str.2735, i64 1929, ptr @.str.2736) - unreachable -ok4473: - %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 16 - %t278 = load i64, ptr %a2 - %t279 = load { ptr, i64, i64 }, ptr %t277 - %t280 = extractvalue { ptr, i64, i64 } %t279, 1 - %t281 = icmp uge i64 %t278, %t280 - br i1 %t281, label %range4474, label %inrange4475 -range4474: - call void @finch_panic_index(ptr @.str.2737, i64 1929, i64 %t278, i64 %t280) - unreachable -inrange4475: - %t282 = extractvalue { ptr, i64, i64 } %t279, 0 - %t283 = getelementptr inbounds %S.gen.StructDef, ptr %t282, i64 %t278 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %t283, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t285) - store { ptr, i64, i64 } { ptr @.str.2734, i64 3, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2738, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load ptr, ptr %a1 - %t298 = icmp eq ptr %t297, null - br i1 %t298, label %panic4476, label %ok4477 -panic4476: - call void @finch_panic(ptr @.str.2739, i64 1929, ptr @.str.2740) - unreachable -ok4477: - %t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 16 - %t300 = load i64, ptr %a2 - %t301 = load { ptr, i64, i64 }, ptr %t299 - %t302 = extractvalue { ptr, i64, i64 } %t301, 1 - %t303 = icmp uge i64 %t300, %t302 - br i1 %t303, label %range4478, label %inrange4479 -range4478: - call void @finch_panic_index(ptr @.str.2741, i64 1929, i64 %t300, i64 %t302) - unreachable -inrange4479: - %t304 = extractvalue { ptr, i64, i64 } %t301, 0 - %t305 = getelementptr inbounds %S.gen.StructDef, ptr %t304, i64 %t300 - %t306 = getelementptr inbounds %S.gen.StructDef, ptr %t305, i32 0, i32 1 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t296, ptr %a310 - store { ptr, i64, i64 } %t308, ptr %a311 - call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) - store { ptr, i64, i64 } %t296, ptr %a312 - call void @finch_str_drop(ptr %a312) - store { ptr, i64, i64 } %t308, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.2742, i64 10, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2743, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a132, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t319, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t319, ptr %a327 - call void @finch_str_drop(ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.2744, i64 2, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load i64, ptr %t274 - %t336 = add i64 %t335, 1 - call void @finch_arr_reserve(ptr %t273, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t337 = load ptr, ptr %t273 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335 - store { ptr, i64, i64 } %t334, ptr %t338 - store i64 %t336, ptr %t274 - call void @finch.drop.arr_str(ptr %a132) - call void @finch_str_drop(ptr %a111) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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 %panic4480, label %ok4481 -panic4480: - call void @finch_panic(ptr @.str.2745, i64 1938, ptr @.str.2746) - unreachable -ok4481: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 33 - %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 %panic4482, label %ok4483 -panic4482: - call void @finch_panic(ptr @.str.2747, i64 1939, ptr @.str.2748) - unreachable -ok4483: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 33 - %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 - %a10 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - %t2 = load i64, ptr %a1 - %t3 = icmp slt i64 %t2, 0 - br i1 %t3, label %then4484, label %endif4486 -then4484: - ret { ptr, i64, i64 } { ptr @.str.2749, i64 4, i64 0 } -endif4486: - %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.2750, i64 1, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a9 - call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) - store { ptr, i64, i64 } %t6, ptr %a10 - call void @finch_str_drop(ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a7 - ret { ptr, i64, i64 } %t11 -} - -define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) { -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 %then4487, label %endif4489 -then4487: - %t5 = load i64, ptr %a1 - ret i64 %t5 -endif4489: - %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 %panic4490, label %ok4491 -panic4490: - call void @finch_panic(ptr @.str.2751, i64 1958, ptr @.str.2752) - unreachable -ok4491: - %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.2753, 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.from4492 -logic.from4492: - br i1 %t13, label %logic.end4494, label %logic.rhs4493 -logic.rhs4493: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2754, 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.rend4495 -logic.rend4495: - br label %logic.end4494 -logic.end4494: - %t19 = phi i1 [ true, %logic.from4492 ], [ %t18, %logic.rend4495 ] - br label %logic.from4496 -logic.from4496: - br i1 %t19, label %logic.end4498, label %logic.rhs4497 -logic.rhs4497: - %t20 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2755, 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.rend4499 -logic.rend4499: - br label %logic.end4498 -logic.end4498: - %t25 = phi i1 [ true, %logic.from4496 ], [ %t24, %logic.rend4499 ] - br label %logic.from4500 -logic.from4500: - br i1 %t25, label %logic.end4502, label %logic.rhs4501 -logic.rhs4501: - %t26 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2756, 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.rend4503 -logic.rend4503: - br label %logic.end4502 -logic.end4502: - %t31 = phi i1 [ true, %logic.from4500 ], [ %t30, %logic.rend4503 ] - br i1 %t31, label %then4504, label %endif4506 -then4504: - %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 - %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t33 -endif4506: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2757, 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.from4507 -logic.from4507: - br i1 %t38, label %logic.end4509, label %logic.rhs4508 -logic.rhs4508: - %t39 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2758, 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.rend4510 -logic.rend4510: - br label %logic.end4509 -logic.end4509: - %t44 = phi i1 [ true, %logic.from4507 ], [ %t43, %logic.rend4510 ] - br i1 %t44, label %then4511, label %endif4513 -then4511: - %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 - %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t46 -endif4513: - %t47 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.2759, 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.from4514 -logic.from4514: - br i1 %t51, label %logic.end4516, label %logic.rhs4515 -logic.rhs4515: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2760, 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.rend4517 -logic.rend4517: - br label %logic.end4516 -logic.end4516: - %t57 = phi i1 [ true, %logic.from4514 ], [ %t56, %logic.rend4517 ] - br label %logic.from4518 -logic.from4518: - br i1 %t57, label %logic.end4520, label %logic.rhs4519 -logic.rhs4519: - %t58 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2761, 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.rend4521 -logic.rend4521: - br label %logic.end4520 -logic.end4520: - %t63 = phi i1 [ true, %logic.from4518 ], [ %t62, %logic.rend4521 ] - br label %logic.from4522 -logic.from4522: - br i1 %t63, label %logic.end4524, label %logic.rhs4523 -logic.rhs4523: - %t64 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2762, 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.rend4525 -logic.rend4525: - br label %logic.end4524 -logic.end4524: - %t69 = phi i1 [ true, %logic.from4522 ], [ %t68, %logic.rend4525 ] - br i1 %t69, label %then4526, label %endif4528 -then4526: - %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 - %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t71 -endif4528: - %t72 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.2763, 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.from4529 -logic.from4529: - br i1 %t76, label %logic.end4531, label %logic.rhs4530 -logic.rhs4530: - %t77 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2764, 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.rend4532 -logic.rend4532: - br label %logic.end4531 -logic.end4531: - %t82 = phi i1 [ true, %logic.from4529 ], [ %t81, %logic.rend4532 ] - br i1 %t82, label %then4533, label %endif4535 -then4533: - %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 - %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t84 -endif4535: - %t85 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2765, 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 %then4536, label %endif4538 -then4536: - %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 - %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t91 -endif4538: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2766, 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 %then4539, label %endif4541 -then4539: - %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 %range4542, label %inrange4543 -range4542: - call void @finch_panic_index(ptr @.str.2767, i64 1980, i64 0, i64 %t100) - unreachable -inrange4543: - %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 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t115 -endif4541: - %t116 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2768, 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 %then4544, label %endif4546 -then4544: - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic4547, label %ok4548 -panic4547: - call void @finch_panic(ptr @.str.2769, i64 1984, ptr @.str.2770) - unreachable -ok4548: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 16 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %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 %range4549, label %inrange4550 -range4549: - call void @finch_panic_index(ptr @.str.2771, i64 1984, i64 %t129, i64 %t131) - unreachable -inrange4550: - %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 %then4551, label %endif4553 -then4551: - %t142 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 9 - %t143 = load i64, ptr %t142 - %t144 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t143, 0 - %t145 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 10 - %t146 = load i64, ptr %t145 - %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t147 -endif4553: - 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.cond4554 -each.cond4554: - %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.body4555, label %each.end4557 -each.body4555: - %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 %then4558, label %endif4560 -then4558: - %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 - %t176 = load i64, ptr %t175 - store i64 %t176, ptr %a149 - br label %endif4560 -endif4560: - br label %each.step4556 -each.step4556: - %t177 = load i64, ptr %a151 - %t178 = add i64 %t177, 1 - store i64 %t178, ptr %a151 - br label %each.cond4554 -each.end4557: - %t179 = load i64, ptr %a148 - %t180 = load i64, ptr %a149 - %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) - %t182 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t181, 0 - %t183 = load i64, ptr %a149 - %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t184 -endif4546: - %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 - %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t186 -} - -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 - 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 %then4561, label %endif4563 -then4561: - %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 -endif4563: - 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.cond4564 -each.cond4564: - %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.body4565, label %each.end4567 -each.body4565: - %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.step4566 -each.step4566: - %t40 = load i64, ptr %a13 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a13 - br label %each.cond4564 -each.end4567: - %t42 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t42 -} - -define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) { -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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.2772, 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.2773, i64 11, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a21, i64 %t20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t19, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.2774, i64 9, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a35, i64 %t34) - %t36 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t33, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t36, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.2775, i64 8, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - store { ptr, i64, i64 } %t50, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2776, i64 12, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = load i64, ptr %a6 - %t63 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t62) - store { ptr, i64, i64 } %t61, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.2777, i64 8, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.2778, i64 10, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2779, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t102) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - ret i64 %t103 -} - -define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2780, 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.2781, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a17, i64 %t16) - %t18 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2782, i64 12, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.2783, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret i64 %t41 -} - -define internal i64 @finch.gen.diType(ptr %p0, %S.ast.Type %p1) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a59 = alloca 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 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.EnumDef, align 16 - %a129 = alloca %S.gen.EnumDef, align 16 - %a131 = alloca %S.gen.EnumDef, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca i32, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca i64, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.gen.SizeAlign, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca %S.ast.Type, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.ast.Type, align 16 - %a414 = alloca %S.ast.Type, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca i64, align 16 - %a439 = alloca %S.ast.Type, align 16 - %a440 = alloca i64, align 16 - %a446 = alloca i64, align 16 - %a452 = alloca i64, align 16 - %a458 = alloca i64, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca %S.ast.Type, align 16 - %a547 = alloca i64, align 16 - %a550 = alloca i64, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca i64, align 16 - %a569 = alloca i64, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca %S.gen.StructDef, align 16 - %a677 = alloca %S.gen.StructDef, align 16 - %a679 = alloca %S.gen.StructDef, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca %S.gen.SizeAlign, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca i64, align 16 - %a705 = alloca %S.gen.SizeAlign, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a806 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca i32, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.2784, 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.from4568 -logic.from4568: - br i1 %t13, label %logic.end4570, label %logic.rhs4569 -logic.rhs4569: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2785, 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.rend4571 -logic.rend4571: - br label %logic.end4570 -logic.end4570: - %t19 = phi i1 [ true, %logic.from4568 ], [ %t18, %logic.rend4571 ] - br i1 %t19, label %then4572, label %endif4574 -then4572: - call void @finch_str_drop(ptr %a8) - ret i64 -1 -endif4574: - %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.2786, i64 2, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4575, label %ok4576 -panic4575: - call void @finch_panic(ptr @.str.2787, i64 2033, ptr @.str.2788) - unreachable -ok4576: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 - %t31 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t31, ptr %a32 - %t33 = call i64 @finch_map_find(ptr %t30, ptr %a32, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t34 = icmp sge i64 %t33, 0 - br i1 %t34, label %then4577, label %endif4579 -then4577: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4580, label %ok4581 -panic4580: - call void @finch_panic(ptr @.str.2789, i64 2034, ptr @.str.2790) - unreachable -ok4581: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 34 - %t38 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = call i64 @finch_map_find(ptr %t37, ptr %a39, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %map.missing4582, label %map.found4583 -map.missing4582: - store { ptr, i64, i64 } zeroinitializer, ptr %a42 - store { ptr, i64, i64 } %t38, ptr %a43 - call void @finch_buf_str(ptr %a42, ptr %a43, i32 1) - call void @finch_map_missing(ptr @.str.2791, i64 2034, ptr %a42) - unreachable -map.found4583: - %t44 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t37, i32 0, i32 0 - %t45 = load ptr, ptr %t44 - %t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i64 %t40 - %t47 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t46, i32 0, i32 2 - %t48 = load i64, ptr %t47 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t48 -endif4579: - store i64 -1, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic4584, label %ok4585 -panic4584: - call void @finch_panic(ptr @.str.2792, i64 2037, ptr @.str.2793) - unreachable -ok4585: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 35 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 0, %t54 - br i1 %t55, label %range4586, label %inrange4587 -range4586: - call void @finch_panic_index(ptr @.str.2794, i64 2037, i64 0, i64 %t54) - unreachable -inrange4587: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds i64, ptr %t56, i64 0 - %t58 = load i64, ptr %t57 - store i64 %t58, ptr %a59 - %t60 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2795, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then4588, label %else4589 -then4588: - %t65 = load ptr, ptr %a1 - %t66 = call i64 @finch.gen.basicType(ptr %t65, { ptr, i64, i64 } { ptr @.str.2796, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2797, i64 14, i64 0 }) - store i64 %t66, ptr %a49 - br label %endif4590 -else4589: - %t67 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.2798, i64 4, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then4591, label %else4592 -then4591: - %t72 = load ptr, ptr %a1 - %t73 = call i64 @finch.gen.basicType(ptr %t72, { ptr, i64, i64 } { ptr @.str.2799, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2800, i64 18, i64 0 }) - store i64 %t73, ptr %a49 - br label %endif4593 -else4592: - %t74 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2801, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br i1 %t78, label %then4594, label %else4595 -then4594: - %t79 = load ptr, ptr %a1 - %t80 = call i64 @finch.gen.basicType(ptr %t79, { ptr, i64, i64 } { ptr @.str.2802, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2803, i64 13, i64 0 }) - store i64 %t80, ptr %a49 - br label %endif4596 -else4595: - %t81 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2804, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %then4597, label %else4598 -then4597: - %t86 = load ptr, ptr %a1 - %t87 = call i64 @finch.gen.basicType(ptr %t86, { ptr, i64, i64 } { ptr @.str.2805, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2806, i64 12, i64 0 }) - store i64 %t87, ptr %a49 - br label %endif4599 -else4598: - %t88 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2807, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then4600, label %else4601 -then4600: - %t93 = load ptr, ptr %a1 - %t94 = call i64 @finch.gen.basicType(ptr %t93, { ptr, i64, i64 } { ptr @.str.2808, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2809, i64 12, i64 0 }) - store i64 %t94, ptr %a49 - br label %endif4602 -else4601: - %t95 = load %S.ast.Type, ptr %a2 - %t96 = call i1 @finch.gen.isInt(%S.ast.Type %t95) - br i1 %t96, label %then4603, label %else4604 -then4603: - store { ptr, i64, i64 } { ptr @.str.2810, i64 15, i64 0 }, ptr %a97 - %t98 = load %S.ast.Type, ptr %a2 - %t99 = call i1 @finch.gen.isSigned(%S.ast.Type %t98) - br i1 %t99, label %then4606, label %endif4608 -then4606: - %t100 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.2811, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif4608 -endif4608: - %t102 = load ptr, ptr %a1 - %t103 = load { ptr, i64, i64 }, ptr %a8 - %t104 = load %S.ast.Type, ptr %a2 - %t105 = call i64 @finch.gen.bitsOf(%S.ast.Type %t104) - %t106 = load { ptr, i64, i64 }, ptr %a97 - %t107 = call i64 @finch.gen.basicType(ptr %t102, { ptr, i64, i64 } %t103, i64 %t105, { ptr, i64, i64 } %t106) - store i64 %t107, ptr %a49 - call void @finch_str_drop(ptr %a97) - br label %endif4605 -else4604: - %t108 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2812, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then4609, label %else4610 -then4609: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic4612, label %ok4613 -panic4612: - call void @finch_panic(ptr @.str.2813, i64 2055, ptr @.str.2814) - unreachable -ok4613: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 21 - %t116 = load ptr, ptr %a1 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = call i64 @finch.gen.findEnum(ptr %t116, { ptr, i64, i64 } %t118, { ptr, i64, i64 } %t120) - %t122 = load { ptr, i64, i64 }, ptr %t115 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 %t121, %t123 - br i1 %t124, label %range4614, label %inrange4615 -range4614: - call void @finch_panic_index(ptr @.str.2815, i64 2055, i64 %t121, i64 %t123) - unreachable -inrange4615: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.gen.EnumDef, ptr %t125, i64 %t121 - %t127 = load %S.gen.EnumDef, ptr %t126 - store %S.gen.EnumDef %t127, ptr %a128 - call void @finch.copy.S_gen_EnumDef(ptr %a129, ptr %a128) - %t130 = load %S.gen.EnumDef, ptr %a129 - store %S.gen.EnumDef %t130, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - store i64 0, ptr %a136 - br label %for.cond4616 -for.cond4616: - %t137 = load i64, ptr %a136 - %t138 = icmp slt i64 %t137, %t135 - br i1 %t138, label %for.body4617, label %for.end4619 -for.body4617: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t140 = load ptr, ptr %a1 - %t141 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t142 = load i64, ptr %a136 - %t143 = load { ptr, i64, i64 }, ptr %t141 - %t144 = extractvalue { ptr, i64, i64 } %t143, 1 - %t145 = icmp uge i64 %t142, %t144 - br i1 %t145, label %range4620, label %inrange4621 -range4620: - call void @finch_panic_index(ptr @.str.2817, i64 2058, i64 %t142, i64 %t144) - unreachable -inrange4621: - %t146 = extractvalue { ptr, i64, i64 } %t143, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t142 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.2816, i64 21, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.2818, i64 10, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 3 - %t159 = load i64, ptr %a136 - %t160 = load { ptr, i64, i64 }, ptr %t158 - %t161 = extractvalue { ptr, i64, i64 } %t160, 1 - %t162 = icmp uge i64 %t159, %t161 - br i1 %t162, label %range4622, label %inrange4623 -range4622: - call void @finch_panic_index(ptr @.str.2819, i64 2058, i64 %t159, i64 %t161) - unreachable -inrange4623: - %t163 = extractvalue { ptr, i64, i64 } %t160, 0 - %t164 = getelementptr inbounds i64, ptr %t163, i64 %t159 - %t165 = load i64, ptr %t164 - call void @finch_str_from_int(ptr %a166, i64 %t165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t157, ptr %a169 - store { ptr, i64, i64 } %t167, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t157, ptr %a171 - call void @finch_str_drop(ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.2820, i64 1, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = call i64 @finch.gen.md(ptr %t140, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t178, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t179) - %t182 = load i64, ptr %t139 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a132 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t139 - br label %for.step4618 -for.step4618: - %t186 = load i64, ptr %a136 - %t187 = add i64 %t186, 1 - store i64 %t187, ptr %a136 - br label %for.cond4616 -for.end4619: - %t188 = load ptr, ptr %a1 - %t189 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.2821, i64 54, i64 0 }, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2822, i64 10, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a201, i64 %t200) - %t202 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t199, ptr %a206 - call void @finch_str_drop(ptr %a206) - store { ptr, i64, i64 } %t202, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2823, i64 24, i64 0 }, ptr %a211 - call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) - store { ptr, i64, i64 } %t208, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a209 - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2824, i64 2, i64 0 }, ptr %a215 - call void @finch_str_join(ptr %a216, ptr %a132, ptr %a215) - %t217 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t213, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t213, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.2825, i64 2, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call i64 @finch.gen.md(ptr %t188, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store i64 %t229, ptr %a49 - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_gen_EnumDef(ptr %a131) - br label %endif4611 -else4610: - %t231 = load ptr, ptr %a1 - %t232 = call i64 @finch.gen.md(ptr %t231, { ptr, i64, i64 } { ptr @.str.2826, i64 0, i64 0 }) - store i64 %t232, ptr %a49 - %t233 = load i64, ptr %a49 - %t234 = load ptr, ptr %a1 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4624, label %ok4625 -panic4624: - call void @finch_panic(ptr @.str.2827, i64 2064, ptr @.str.2828) - unreachable -ok4625: - %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 34 - %t237 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t237, ptr %a238 - store i32 0, ptr %a239 - %t240 = call i64 @finch_map_slot(ptr %t236, ptr %a238, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a239) - %t241 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t236, i32 0, i32 0 - %t242 = load ptr, ptr %t241 - %t243 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t242, i64 %t240 - %t244 = load i32, ptr %a239 - %t245 = icmp ne i32 %t244, 0 - br i1 %t245, label %map.new4626, label %map.have4627 -map.new4626: - %t246 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 1 - call void @finch_str_copy(ptr %t246, ptr %a238) - %t247 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 0, ptr %t247 - br label %map.have4627 -map.have4627: - %t248 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 %t233, ptr %t248 - %t249 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t249, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2829, i64 3, i64 0 }, ptr %a251 - %t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251) - %t253 = icmp ne i32 %t252, 0 - br i1 %t253, label %then4628, label %else4629 -then4628: - store i64 -1, ptr %a254 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t255, i32 0, i32 1 - %t257 = load i64, ptr %t256 - %t258 = icmp sgt i64 %t257, 0 - br i1 %t258, label %then4631, label %endif4633 -then4631: - %t259 = load ptr, ptr %a1 - %t260 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t261 = load { ptr, i64, i64 }, ptr %t260 - %t262 = extractvalue { ptr, i64, i64 } %t261, 1 - %t263 = icmp uge i64 0, %t262 - br i1 %t263, label %range4634, label %inrange4635 -range4634: - call void @finch_panic_index(ptr @.str.2830, i64 2068, i64 0, i64 %t262) - unreachable -inrange4635: - %t264 = extractvalue { ptr, i64, i64 } %t261, 0 - %t265 = getelementptr inbounds %S.ast.Type, ptr %t264, i64 0 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call i64 @finch.gen.diType(ptr %t259, %S.ast.Type %t266) - store i64 %t267, ptr %a254 - br label %endif4633 -endif4633: - %t268 = load i64, ptr %a254 - %t269 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t268) - store { ptr, i64, i64 } { ptr @.str.2831, i64 51, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.2832, i64 11, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic4636, label %ok4637 -panic4636: - call void @finch_panic(ptr @.str.2833, i64 2070, ptr @.str.2834) - unreachable -ok4637: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 33 - %t283 = load i64, ptr %a49 - %t284 = load { ptr, i64, i64 }, ptr %t282 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range4638, label %inrange4639 -range4638: - call void @finch_panic_index(ptr @.str.2835, i64 2070, i64 %t283, i64 %t285) - unreachable -inrange4639: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t283 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t279, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_drop(ptr %a290) - br label %endif4630 -else4629: - %t291 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t291, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.2836, i64 5, i64 0 }, ptr %a293 - %t294 = call i32 @finch_str_eq(ptr %a292, ptr %a293) - %t295 = icmp ne i32 %t294, 0 - br i1 %t295, label %then4640, label %else4641 -then4640: - %t296 = load ptr, ptr %a1 - %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t298 = load { ptr, i64, i64 }, ptr %t297 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 0, %t299 - br i1 %t300, label %range4643, label %inrange4644 -range4643: - call void @finch_panic_index(ptr @.str.2837, i64 2072, i64 0, i64 %t299) - unreachable -inrange4644: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i64 0 - %t303 = load %S.ast.Type, ptr %t302 - %t304 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t296, %S.ast.Type %t303) - store %S.gen.SizeAlign %t304, ptr %a305 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t308 = load i64, ptr %t307 - call void @finch_str_from_int(ptr %a309, i64 %t308) - %t310 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.2838, i64 19, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2839, i64 1, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call i64 @finch.gen.md(ptr %t306, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store i64 %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %t325 - %t327 = extractvalue { ptr, i64, i64 } %t326, 1 - %t328 = icmp uge i64 0, %t327 - br i1 %t328, label %range4645, label %inrange4646 -range4645: - call void @finch_panic_index(ptr @.str.2841, i64 2074, i64 0, i64 %t327) - unreachable -inrange4646: - %t329 = extractvalue { ptr, i64, i64 } %t326, 0 - %t330 = getelementptr inbounds %S.ast.Type, ptr %t329, i64 0 - %t331 = load %S.ast.Type, ptr %t330 - %t332 = call i64 @finch.gen.diType(ptr %t324, %S.ast.Type %t331) - %t333 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t332) - store { ptr, i64, i64 } { ptr @.str.2840, i64 51, i64 0 }, ptr %a335 - store { ptr, i64, i64 } %t333, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - store { ptr, i64, i64 } %t338, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.2842, i64 8, i64 0 }, ptr %a341 - call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) - store { ptr, i64, i64 } %t338, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a339 - %t344 = getelementptr inbounds %S.gen.SizeAlign, ptr %a305, i32 0, i32 0 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t347 = load i64, ptr %t346 - %t348 = mul i64 %t345, %t347 - %t349 = mul i64 %t348, 8 - call void @finch_str_from_int(ptr %a350, i64 %t349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t343, ptr %a353 - store { ptr, i64, i64 } %t351, ptr %a354 - call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) - store { ptr, i64, i64 } %t343, ptr %a355 - call void @finch_str_drop(ptr %a355) - store { ptr, i64, i64 } %t351, ptr %a356 - call void @finch_str_drop(ptr %a356) - %t357 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t357, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.2843, i64 15, i64 0 }, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t357, ptr %a361 - call void @finch_str_drop(ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a358 - %t363 = load i64, ptr %a323 - call void @finch_str_from_int(ptr %a364, i64 %t363) - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t362, ptr %a369 - call void @finch_str_drop(ptr %a369) - store { ptr, i64, i64 } %t365, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t371, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.2844, i64 2, i64 0 }, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t371, ptr %a375 - call void @finch_str_drop(ptr %a375) - %t376 = load { ptr, i64, i64 }, ptr %a372 - %t377 = load ptr, ptr %a1 - %t378 = icmp eq ptr %t377, null - br i1 %t378, label %panic4647, label %ok4648 -panic4647: - call void @finch_panic(ptr @.str.2845, i64 2074, ptr @.str.2846) - unreachable -ok4648: - %t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 33 - %t380 = load i64, ptr %a49 - %t381 = load { ptr, i64, i64 }, ptr %t379 - %t382 = extractvalue { ptr, i64, i64 } %t381, 1 - %t383 = icmp uge i64 %t380, %t382 - br i1 %t383, label %range4649, label %inrange4650 -range4649: - call void @finch_panic_index(ptr @.str.2847, i64 2074, i64 %t380, i64 %t382) - unreachable -inrange4650: - %t384 = extractvalue { ptr, i64, i64 } %t381, 0 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 - %t386 = load { ptr, i64, i64 }, ptr %t385 - store { ptr, i64, i64 } %t376, ptr %t385 - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif4642 -else4641: - %t388 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t388, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.2848, i64 3, i64 0 }, ptr %a390 - %t391 = call i32 @finch_str_eq(ptr %a389, ptr %a390) - %t392 = icmp ne i32 %t391, 0 - br label %logic.from4651 -logic.from4651: - br i1 %t392, label %logic.end4653, label %logic.rhs4652 -logic.rhs4652: - %t393 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t393, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2849, i64 5, i64 0 }, ptr %a395 - %t396 = call i32 @finch_str_eq(ptr %a394, ptr %a395) - %t397 = icmp ne i32 %t396, 0 - br label %logic.rend4654 -logic.rend4654: - br label %logic.end4653 -logic.end4653: - %t398 = phi i1 [ true, %logic.from4651 ], [ %t397, %logic.rend4654 ] - br i1 %t398, label %then4655, label %else4656 -then4655: - %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2850, i64 4, i64 0 }) - store %S.ast.Type %t399, ptr %a400 - %t401 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t401, ptr %a402 - store { ptr, i64, i64 } { ptr @.str.2851, i64 5, i64 0 }, ptr %a403 - %t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403) - %t405 = icmp ne i32 %t404, 0 - br i1 %t405, label %then4658, label %endif4660 -then4658: - %t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t407 = load { ptr, i64, i64 }, ptr %t406 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 0, %t408 - br i1 %t409, label %range4661, label %inrange4662 -range4661: - call void @finch_panic_index(ptr @.str.2852, i64 2078, i64 0, i64 %t408) - unreachable -inrange4662: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.ast.Type, ptr %t410, i64 0 - %t412 = load %S.ast.Type, ptr %t411 - store %S.ast.Type %t412, ptr %a413 - call void @finch.copy.S_ast_Type(ptr %a414, ptr %a413) - %t415 = load %S.ast.Type, ptr %a414 - %t416 = load %S.ast.Type, ptr %a400 - store %S.ast.Type %t415, ptr %a400 - store %S.ast.Type %t416, ptr %a417 - call void @finch.drop.S_ast_Type(ptr %a417) - br label %endif4660 -endif4660: - %t418 = load ptr, ptr %a1 - %t419 = load ptr, ptr %a1 - %t420 = load %S.ast.Type, ptr %a400 - %t421 = call i64 @finch.gen.diType(ptr %t419, %S.ast.Type %t420) - %t422 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t421) - store { ptr, i64, i64 } { ptr @.str.2853, i64 51, i64 0 }, ptr %a424 - store { ptr, i64, i64 } %t422, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - store { ptr, i64, i64 } %t427, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.2854, i64 11, i64 0 }, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = call i64 @finch.gen.md(ptr %t418, { ptr, i64, i64 } %t432) - store { ptr, i64, i64 } %t432, ptr %a434 - call void @finch_str_drop(ptr %a434) - store i64 %t433, ptr %a435 - %t436 = load ptr, ptr %a1 - %t437 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2855, i64 3, i64 0 }) - %t438 = call i64 @finch.gen.diType(ptr %t436, %S.ast.Type %t437) - store %S.ast.Type %t437, ptr %a439 - call void @finch.drop.S_ast_Type(ptr %a439) - store i64 %t438, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = load i64, ptr %a49 - %t443 = load i64, ptr %a59 - %t444 = load i64, ptr %a435 - %t445 = call i64 @finch.gen.dbgMember(ptr %t441, { ptr, i64, i64 } { ptr @.str.2856, i64 3, i64 0 }, i64 %t442, i64 %t443, i64 0, i64 %t444, i64 64, i64 0) - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load i64, ptr %a49 - %t449 = load i64, ptr %a59 - %t450 = load i64, ptr %a440 - %t451 = call i64 @finch.gen.dbgMember(ptr %t447, { ptr, i64, i64 } { ptr @.str.2857, i64 3, i64 0 }, i64 %t448, i64 %t449, i64 0, i64 %t450, i64 64, i64 64) - store i64 %t451, ptr %a452 - %t453 = load ptr, ptr %a1 - %t454 = load i64, ptr %a49 - %t455 = load i64, ptr %a59 - %t456 = load i64, ptr %a440 - %t457 = call i64 @finch.gen.dbgMember(ptr %t453, { ptr, i64, i64 } { ptr @.str.2858, i64 3, i64 0 }, i64 %t454, i64 %t455, i64 0, i64 %t456, i64 64, i64 128) - store i64 %t457, ptr %a458 - %t459 = load %S.ast.Type, ptr %a2 - %t460 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.2859, i64 52, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.2860, i64 10, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a472, i64 %t471) - %t473 = load { ptr, i64, i64 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a475 - store { ptr, i64, i64 } %t473, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t470, ptr %a477 - call void @finch_str_drop(ptr %a477) - store { ptr, i64, i64 } %t473, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a474 - store { ptr, i64, i64 } %t479, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.2861, i64 37, i64 0 }, ptr %a482 - call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482) - store { ptr, i64, i64 } %t479, ptr %a483 - call void @finch_str_drop(ptr %a483) - %t484 = load { ptr, i64, i64 }, ptr %a480 - %t485 = load i64, ptr %a446 - call void @finch_str_from_int(ptr %a486, i64 %t485) - %t487 = load { ptr, i64, i64 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t484, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t487, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t493, ptr %a495 - store { ptr, i64, i64 } { ptr @.str.2862, i64 3, i64 0 }, ptr %a496 - call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) - store { ptr, i64, i64 } %t493, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a494 - %t499 = load i64, ptr %a452 - call void @finch_str_from_int(ptr %a500, i64 %t499) - %t501 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a503 - store { ptr, i64, i64 } %t501, ptr %a504 - call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) - store { ptr, i64, i64 } %t498, ptr %a505 - call void @finch_str_drop(ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.2863, i64 3, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - %t513 = load i64, ptr %a458 - call void @finch_str_from_int(ptr %a514, i64 %t513) - %t515 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a517 - store { ptr, i64, i64 } %t515, ptr %a518 - call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) - store { ptr, i64, i64 } %t512, ptr %a519 - call void @finch_str_drop(ptr %a519) - store { ptr, i64, i64 } %t515, ptr %a520 - call void @finch_str_drop(ptr %a520) - %t521 = load { ptr, i64, i64 }, ptr %a516 - store { ptr, i64, i64 } %t521, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.2864, i64 2, i64 0 }, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t521, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - %t527 = load ptr, ptr %a1 - %t528 = icmp eq ptr %t527, null - br i1 %t528, label %panic4663, label %ok4664 -panic4663: - call void @finch_panic(ptr @.str.2865, i64 2085, ptr @.str.2866) - unreachable -ok4664: - %t529 = getelementptr inbounds %S.gen.Gen, ptr %t527, i32 0, i32 33 - %t530 = load i64, ptr %a49 - %t531 = load { ptr, i64, i64 }, ptr %t529 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range4665, label %inrange4666 -range4665: - call void @finch_panic_index(ptr @.str.2867, i64 2085, i64 %t530, i64 %t532) - unreachable -inrange4666: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %t534, i64 %t530 - %t536 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t526, ptr %t535 - store { ptr, i64, i64 } %t536, ptr %a537 - call void @finch_str_drop(ptr %a537) - call void @finch.drop.S_ast_Type(ptr %a400) - br label %endif4657 -else4656: - %t538 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.2868, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br i1 %t542, label %then4667, label %else4668 -then4667: - %t543 = load ptr, ptr %a1 - %t544 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2869, i64 3, i64 0 }) - %t545 = call i64 @finch.gen.diType(ptr %t543, %S.ast.Type %t544) - store %S.ast.Type %t544, ptr %a546 - call void @finch.drop.S_ast_Type(ptr %a546) - store i64 %t545, ptr %a547 - %t548 = load ptr, ptr %a1 - %t549 = call i64 @finch.gen.md(ptr %t548, { ptr, i64, i64 } { ptr @.str.2870, i64 66, i64 0 }) - store i64 %t549, ptr %a550 - %t551 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t552 = call ptr @finch_alloc(i64 %t551) - %t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 0 - store { ptr, i64, i64 } { ptr @.str.2871, i64 7, i64 0 }, ptr %t553 - %t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 1 - store { ptr, i64, i64 } { ptr @.str.2872, i64 3, i64 0 }, ptr %t554 - %t555 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 2 - store { ptr, i64, i64 } { ptr @.str.2873, i64 4, i64 0 }, ptr %t555 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 3 - store { ptr, i64, i64 } { ptr @.str.2874, i64 3, i64 0 }, ptr %t556 - %t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 4 - store { ptr, i64, i64 } { ptr @.str.2875, i64 5, i64 0 }, ptr %t557 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 5 - store { ptr, i64, i64 } { ptr @.str.2876, i64 4, i64 0 }, ptr %t558 - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 6 - store { ptr, i64, i64 } { ptr @.str.2877, i64 4, i64 0 }, ptr %t559 - %t560 = insertvalue { ptr, i64, i64 } undef, ptr %t552, 0 - %t561 = insertvalue { ptr, i64, i64 } %t560, i64 7, 1 - %t562 = insertvalue { ptr, i64, i64 } %t561, i64 7, 2 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } zeroinitializer, ptr %a564 - store i64 0, ptr %a565 - br label %for.cond4670 -for.cond4670: - %t566 = load i64, ptr %a565 - %t567 = icmp slt i64 %t566, 7 - br i1 %t567, label %for.body4671, label %for.end4673 -for.body4671: - %t568 = load i64, ptr %a547 - store i64 %t568, ptr %a569 - %t570 = load i64, ptr %a565 - %t571 = icmp eq i64 %t570, 0 - br label %logic.from4674 -logic.from4674: - br i1 %t571, label %logic.end4676, label %logic.rhs4675 -logic.rhs4675: - %t572 = load i64, ptr %a565 - %t573 = icmp eq i64 %t572, 4 - br label %logic.rend4677 -logic.rend4677: - br label %logic.end4676 -logic.end4676: - %t574 = phi i1 [ true, %logic.from4674 ], [ %t573, %logic.rend4677 ] - br i1 %t574, label %then4678, label %endif4680 -then4678: - %t575 = load i64, ptr %a550 - store i64 %t575, ptr %a569 - br label %endif4680 -endif4680: - %t576 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - %t577 = load ptr, ptr %a1 - %t578 = load i64, ptr %a565 - %t579 = load { ptr, i64, i64 }, ptr %a563 - %t580 = extractvalue { ptr, i64, i64 } %t579, 1 - %t581 = icmp uge i64 %t578, %t580 - br i1 %t581, label %range4681, label %inrange4682 -range4681: - call void @finch_panic_index(ptr @.str.2879, i64 2096, i64 %t578, i64 %t580) - unreachable -inrange4682: - %t582 = extractvalue { ptr, i64, i64 } %t579, 0 - %t583 = getelementptr inbounds { ptr, i64, i64 }, ptr %t582, i64 %t578 - %t584 = load { ptr, i64, i64 }, ptr %t583 - %t585 = load i64, ptr %a49 - %t586 = load i64, ptr %a59 - %t587 = load i64, ptr %a569 - %t588 = load i64, ptr %a565 - %t589 = mul i64 64, %t588 - %t590 = call i64 @finch.gen.dbgMember(ptr %t577, { ptr, i64, i64 } %t584, i64 %t585, i64 %t586, i64 0, i64 %t587, i64 64, i64 %t589) - call void @finch_str_from_int(ptr %a591, i64 %t590) - %t592 = load { ptr, i64, i64 }, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.2878, i64 1, i64 0 }, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t592, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a593 - %t598 = load i64, ptr %t576 - %t599 = add i64 %t598, 1 - call void @finch_arr_reserve(ptr %a564, i64 %t599, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t600 = load ptr, ptr %a564 - %t601 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i64 %t598 - store { ptr, i64, i64 } %t597, ptr %t601 - store i64 %t599, ptr %t576 - br label %for.step4672 -for.step4672: - %t602 = load i64, ptr %a565 - %t603 = add i64 %t602, 1 - store i64 %t603, ptr %a565 - br label %for.cond4670 -for.end4673: - %t604 = load %S.ast.Type, ptr %a2 - %t605 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.2880, i64 52, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.2881, i64 10, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a617, i64 %t616) - %t618 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t615, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t615, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } %t624, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.2882, i64 36, i64 0 }, ptr %a627 - call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627) - store { ptr, i64, i64 } %t624, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a625 - %t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2883, i64 2, i64 0 }, ptr %a631 - call void @finch_str_join(ptr %a632, ptr %a564, ptr %a631) - %t633 = load { ptr, i64, i64 }, ptr %a632 - store { ptr, i64, i64 } %t629, ptr %a635 - store { ptr, i64, i64 } %t633, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t629, ptr %a637 - call void @finch_str_drop(ptr %a637) - store { ptr, i64, i64 } %t633, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a634 - store { ptr, i64, i64 } %t639, ptr %a641 - store { ptr, i64, i64 } { ptr @.str.2884, i64 2, i64 0 }, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t639, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - %t645 = load ptr, ptr %a1 - %t646 = icmp eq ptr %t645, null - br i1 %t646, label %panic4683, label %ok4684 -panic4683: - call void @finch_panic(ptr @.str.2885, i64 2098, ptr @.str.2886) - unreachable -ok4684: - %t647 = getelementptr inbounds %S.gen.Gen, ptr %t645, i32 0, i32 33 - %t648 = load i64, ptr %a49 - %t649 = load { ptr, i64, i64 }, ptr %t647 - %t650 = extractvalue { ptr, i64, i64 } %t649, 1 - %t651 = icmp uge i64 %t648, %t650 - br i1 %t651, label %range4685, label %inrange4686 -range4685: - call void @finch_panic_index(ptr @.str.2887, i64 2098, i64 %t648, i64 %t650) - unreachable -inrange4686: - %t652 = extractvalue { ptr, i64, i64 } %t649, 0 - %t653 = getelementptr inbounds { ptr, i64, i64 }, ptr %t652, i64 %t648 - %t654 = load { ptr, i64, i64 }, ptr %t653 - store { ptr, i64, i64 } %t644, ptr %t653 - store { ptr, i64, i64 } %t654, ptr %a655 - call void @finch_str_drop(ptr %a655) - call void @finch.drop.arr_str(ptr %a564) - call void @finch.drop.arr_str(ptr %a563) - br label %endif4669 -else4668: - %t656 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t656, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.2888, i64 6, i64 0 }, ptr %a658 - %t659 = call i32 @finch_str_eq(ptr %a657, ptr %a658) - %t660 = icmp ne i32 %t659, 0 - br i1 %t660, label %then4687, label %else4688 -then4687: - %t661 = load ptr, ptr %a1 - %t662 = icmp eq ptr %t661, null - br i1 %t662, label %panic4690, label %ok4691 -panic4690: - call void @finch_panic(ptr @.str.2889, i64 2100, ptr @.str.2890) - unreachable -ok4691: - %t663 = getelementptr inbounds %S.gen.Gen, ptr %t661, i32 0, i32 16 - %t664 = load ptr, ptr %a1 - %t665 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t666 = load { ptr, i64, i64 }, ptr %t665 - %t667 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t668 = load { ptr, i64, i64 }, ptr %t667 - %t669 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t666, { ptr, i64, i64 } %t668) - %t670 = load { ptr, i64, i64 }, ptr %t663 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range4692, label %inrange4693 -range4692: - call void @finch_panic_index(ptr @.str.2891, i64 2100, i64 %t669, i64 %t671) - unreachable -inrange4693: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.gen.StructDef, ptr %t673, i64 %t669 - %t675 = load %S.gen.StructDef, ptr %t674 - store %S.gen.StructDef %t675, ptr %a676 - call void @finch.copy.S_gen_StructDef(ptr %a677, ptr %a676) - %t678 = load %S.gen.StructDef, ptr %a677 - store %S.gen.StructDef %t678, ptr %a679 - %t680 = load ptr, ptr %a1 - %t681 = load %S.gen.StructDef, ptr %a679 - %t682 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t680, %S.gen.StructDef %t681) - store { ptr, i64, i64 } %t682, ptr %a683 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a2 - %t686 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t684, %S.ast.Type %t685) - store %S.gen.SizeAlign %t686, ptr %a687 - store { ptr, i64, i64 } zeroinitializer, ptr %a688 - %t689 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t690 = getelementptr inbounds { ptr, i64, i64 }, ptr %t689, i32 0, i32 1 - %t691 = load i64, ptr %t690 - store i64 0, ptr %a692 - br label %for.cond4694 -for.cond4694: - %t693 = load i64, ptr %a692 - %t694 = icmp slt i64 %t693, %t691 - br i1 %t694, label %for.body4695, label %for.end4697 -for.body4695: - %t695 = load ptr, ptr %a1 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t697 = load i64, ptr %a692 - %t698 = load { ptr, i64, i64 }, ptr %t696 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range4698, label %inrange4699 -range4698: - call void @finch_panic_index(ptr @.str.2892, i64 2105, i64 %t697, i64 %t699) - unreachable -inrange4699: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds %S.ast.Type, ptr %t701, i64 %t697 - %t703 = load %S.ast.Type, ptr %t702 - %t704 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t695, %S.ast.Type %t703) - store %S.gen.SizeAlign %t704, ptr %a705 - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - %t707 = load ptr, ptr %a1 - %t708 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 11 - %t709 = load i64, ptr %a692 - %t710 = load { ptr, i64, i64 }, ptr %t708 - %t711 = extractvalue { ptr, i64, i64 } %t710, 1 - %t712 = icmp uge i64 %t709, %t711 - br i1 %t712, label %range4700, label %inrange4701 -range4700: - call void @finch_panic_index(ptr @.str.2894, i64 2106, i64 %t709, i64 %t711) - unreachable -inrange4701: - %t713 = extractvalue { ptr, i64, i64 } %t710, 0 - %t714 = getelementptr inbounds { ptr, i64, i64 }, ptr %t713, i64 %t709 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = load i64, ptr %a49 - %t717 = load i64, ptr %a59 - %t718 = load ptr, ptr %a1 - %t719 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t720 = load i64, ptr %a692 - %t721 = load { ptr, i64, i64 }, ptr %t719 - %t722 = extractvalue { ptr, i64, i64 } %t721, 1 - %t723 = icmp uge i64 %t720, %t722 - br i1 %t723, label %range4702, label %inrange4703 -range4702: - call void @finch_panic_index(ptr @.str.2895, i64 2106, i64 %t720, i64 %t722) - unreachable -inrange4703: - %t724 = extractvalue { ptr, i64, i64 } %t721, 0 - %t725 = getelementptr inbounds %S.ast.Type, ptr %t724, i64 %t720 - %t726 = load %S.ast.Type, ptr %t725 - %t727 = call i64 @finch.gen.diType(ptr %t718, %S.ast.Type %t726) - %t728 = getelementptr inbounds %S.gen.SizeAlign, ptr %a705, i32 0, i32 0 - %t729 = load i64, ptr %t728 - %t730 = mul i64 %t729, 8 - %t731 = load i64, ptr %a692 - %t732 = load { ptr, i64, i64 }, ptr %a683 - %t733 = extractvalue { ptr, i64, i64 } %t732, 1 - %t734 = icmp uge i64 %t731, %t733 - br i1 %t734, label %range4704, label %inrange4705 -range4704: - call void @finch_panic_index(ptr @.str.2896, i64 2106, i64 %t731, i64 %t733) - unreachable -inrange4705: - %t735 = extractvalue { ptr, i64, i64 } %t732, 0 - %t736 = getelementptr inbounds i64, ptr %t735, i64 %t731 - %t737 = load i64, ptr %t736 - %t738 = mul i64 %t737, 8 - %t739 = call i64 @finch.gen.dbgMember(ptr %t707, { ptr, i64, i64 } %t715, i64 %t716, i64 %t717, i64 0, i64 %t727, i64 %t730, i64 %t738) - call void @finch_str_from_int(ptr %a740, i64 %t739) - %t741 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.2893, i64 1, i64 0 }, ptr %a743 - store { ptr, i64, i64 } %t741, ptr %a744 - call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) - store { ptr, i64, i64 } %t741, ptr %a745 - call void @finch_str_drop(ptr %a745) - %t746 = load { ptr, i64, i64 }, ptr %a742 - %t747 = load i64, ptr %t706 - %t748 = add i64 %t747, 1 - call void @finch_arr_reserve(ptr %a688, i64 %t748, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t749 = load ptr, ptr %a688 - %t750 = getelementptr inbounds { ptr, i64, i64 }, ptr %t749, i64 %t747 - store { ptr, i64, i64 } %t746, ptr %t750 - store i64 %t748, ptr %t706 - br label %for.step4696 -for.step4696: - %t751 = load i64, ptr %a692 - %t752 = add i64 %t751, 1 - store i64 %t752, ptr %a692 - br label %for.cond4694 -for.end4697: - %t753 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 1 - %t754 = load { ptr, i64, i64 }, ptr %t753 - store { ptr, i64, i64 } { ptr @.str.2897, i64 52, i64 0 }, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a755 - store { ptr, i64, i64 } %t758, ptr %a760 - store { ptr, i64, i64 } { ptr @.str.2898, i64 10, i64 0 }, ptr %a761 - call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) - store { ptr, i64, i64 } %t758, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a759 - %t764 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a765, i64 %t764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - store { ptr, i64, i64 } %t763, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t763, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.2899, i64 8, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.gen.SizeAlign, ptr %a687, i32 0, i32 0 - %t779 = load i64, ptr %t778 - %t780 = mul i64 %t779, 8 - call void @finch_str_from_int(ptr %a781, i64 %t780) - %t782 = load { ptr, i64, i64 }, ptr %a781 - store { ptr, i64, i64 } %t777, ptr %a784 - store { ptr, i64, i64 } %t782, ptr %a785 - call void @finch_str_concat(ptr %a783, ptr %a784, ptr %a785) - store { ptr, i64, i64 } %t777, ptr %a786 - call void @finch_str_drop(ptr %a786) - store { ptr, i64, i64 } %t782, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load { ptr, i64, i64 }, ptr %a783 - store { ptr, i64, i64 } %t788, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.2900, i64 24, i64 0 }, ptr %a791 - call void @finch_str_concat(ptr %a789, ptr %a790, ptr %a791) - store { ptr, i64, i64 } %t788, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a789 - %t794 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2901, i64 2, i64 0 }, ptr %a795 - call void @finch_str_join(ptr %a796, ptr %a688, ptr %a795) - %t797 = load { ptr, i64, i64 }, ptr %a796 - store { ptr, i64, i64 } %t793, ptr %a799 - store { ptr, i64, i64 } %t797, ptr %a800 - call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) - store { ptr, i64, i64 } %t793, ptr %a801 - call void @finch_str_drop(ptr %a801) - store { ptr, i64, i64 } %t797, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t803, ptr %a805 - store { ptr, i64, i64 } { ptr @.str.2902, i64 2, i64 0 }, ptr %a806 - call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) - store { ptr, i64, i64 } %t803, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a804 - %t809 = load ptr, ptr %a1 - %t810 = icmp eq ptr %t809, null - br i1 %t810, label %panic4706, label %ok4707 -panic4706: - call void @finch_panic(ptr @.str.2903, i64 2108, ptr @.str.2904) - unreachable -ok4707: - %t811 = getelementptr inbounds %S.gen.Gen, ptr %t809, i32 0, i32 33 - %t812 = load i64, ptr %a49 - %t813 = load { ptr, i64, i64 }, ptr %t811 - %t814 = extractvalue { ptr, i64, i64 } %t813, 1 - %t815 = icmp uge i64 %t812, %t814 - br i1 %t815, label %range4708, label %inrange4709 -range4708: - call void @finch_panic_index(ptr @.str.2905, i64 2108, i64 %t812, i64 %t814) - unreachable -inrange4709: - %t816 = extractvalue { ptr, i64, i64 } %t813, 0 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t812 - %t818 = load { ptr, i64, i64 }, ptr %t817 - store { ptr, i64, i64 } %t808, ptr %t817 - store { ptr, i64, i64 } %t818, ptr %a819 - call void @finch_str_drop(ptr %a819) - call void @finch.drop.arr_str(ptr %a688) - call void @finch.drop.arr_int(ptr %a683) - call void @finch.drop.S_gen_StructDef(ptr %a679) - br label %endif4689 -else4688: - %t820 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2906, i64 20, i64 0 }, ptr %a822 - store { ptr, i64, i64 } %t820, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - %t824 = load { ptr, i64, i64 }, ptr %a821 - store { ptr, i64, i64 } %t824, ptr %a826 - store { ptr, i64, i64 } { ptr @.str.2907, i64 39, i64 0 }, ptr %a827 - call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) - store { ptr, i64, i64 } %t824, ptr %a828 - call void @finch_str_drop(ptr %a828) - %t829 = load { ptr, i64, i64 }, ptr %a825 - %t830 = load ptr, ptr %a1 - %t831 = icmp eq ptr %t830, null - br i1 %t831, label %panic4710, label %ok4711 -panic4710: - call void @finch_panic(ptr @.str.2908, i64 2110, ptr @.str.2909) - unreachable -ok4711: - %t832 = getelementptr inbounds %S.gen.Gen, ptr %t830, i32 0, i32 33 - %t833 = load i64, ptr %a49 - %t834 = load { ptr, i64, i64 }, ptr %t832 - %t835 = extractvalue { ptr, i64, i64 } %t834, 1 - %t836 = icmp uge i64 %t833, %t835 - br i1 %t836, label %range4712, label %inrange4713 -range4712: - call void @finch_panic_index(ptr @.str.2910, i64 2110, i64 %t833, i64 %t835) - unreachable -inrange4713: - %t837 = extractvalue { ptr, i64, i64 } %t834, 0 - %t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t833 - %t839 = load { ptr, i64, i64 }, ptr %t838 - store { ptr, i64, i64 } %t829, ptr %t838 - store { ptr, i64, i64 } %t839, ptr %a840 - call void @finch_str_drop(ptr %a840) - br label %endif4689 -endif4689: - br label %endif4669 -endif4669: - br label %endif4657 -endif4657: - br label %endif4642 -endif4642: - br label %endif4630 -endif4630: - %t841 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t841 -endif4611: - br label %endif4605 -endif4605: - br label %endif4602 -endif4602: - br label %endif4599 -endif4599: - br label %endif4596 -endif4596: - br label %endif4593 -endif4593: - br label %endif4590 -endif4590: - %t842 = load i64, ptr %a49 - %t843 = load ptr, ptr %a1 - %t844 = icmp eq ptr %t843, null - br i1 %t844, label %panic4714, label %ok4715 -panic4714: - call void @finch_panic(ptr @.str.2911, i64 2114, ptr @.str.2912) - unreachable -ok4715: - %t845 = getelementptr inbounds %S.gen.Gen, ptr %t843, i32 0, i32 34 - %t846 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t846, ptr %a847 - store i32 0, ptr %a848 - %t849 = call i64 @finch_map_slot(ptr %t845, ptr %a847, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a848) - %t850 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t845, i32 0, i32 0 - %t851 = load ptr, ptr %t850 - %t852 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t851, i64 %t849 - %t853 = load i32, ptr %a848 - %t854 = icmp ne i32 %t853, 0 - br i1 %t854, label %map.new4716, label %map.have4717 -map.new4716: - %t855 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 1 - call void @finch_str_copy(ptr %t855, ptr %a847) - %t856 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 0, ptr %t856 - br label %map.have4717 -map.have4717: - %t857 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 %t842, ptr %t857 - %t858 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t858 -} - -define internal i64 @finch.gen.dbgLocation(ptr %p0) { -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 - %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 - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca i32, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic4718, label %ok4719 -panic4718: - call void @finch_panic(ptr @.str.2914, i64 2119, ptr @.str.2915) - unreachable -ok4719: - %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 37 - %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.2913, i64 2, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.2916, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic4720, label %ok4721 -panic4720: - call void @finch_panic(ptr @.str.2917, i64 2119, ptr @.str.2918) - unreachable -ok4721: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 38 - %t21 = load i64, ptr %t20 - call void @finch_str_from_int(ptr %a22, i64 %t21) - %t23 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t17, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t17, ptr %a27 - call void @finch_str_drop(ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.2919, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4722, label %ok4723 -panic4722: - call void @finch_panic(ptr @.str.2920, i64 2119, ptr @.str.2921) - unreachable -ok4723: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 36 - %t38 = load i64, ptr %t37 - call void @finch_str_from_int(ptr %a39, i64 %t38) - %t40 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t34, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t34, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic4724, label %ok4725 -panic4724: - call void @finch_panic(ptr @.str.2922, i64 2120, ptr @.str.2923) - unreachable -ok4725: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 34 - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4726, label %endif4728 -then4726: - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic4729, label %ok4730 -panic4729: - call void @finch_panic(ptr @.str.2924, i64 2121, ptr @.str.2925) - unreachable -ok4730: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 34 - %t58 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t58, ptr %a59 - %t60 = call i64 @finch_map_find(ptr %t57, ptr %a59, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t61 = icmp slt i64 %t60, 0 - br i1 %t61, label %map.missing4731, label %map.found4732 -map.missing4731: - store { ptr, i64, i64 } zeroinitializer, ptr %a62 - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_buf_str(ptr %a62, ptr %a63, i32 1) - call void @finch_map_missing(ptr @.str.2926, i64 2121, ptr %a62) - unreachable -map.found4732: - %t64 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t57, i32 0, i32 0 - %t65 = load ptr, ptr %t64 - %t66 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t65, i64 %t60 - %t67 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t66, i32 0, i32 2 - %t68 = load i64, ptr %t67 - call void @finch_str_drop(ptr %a47) - ret i64 %t68 -endif4728: - %t69 = load ptr, ptr %a1 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4733, label %ok4734 -panic4733: - call void @finch_panic(ptr @.str.2928, i64 2123, ptr @.str.2929) - unreachable -ok4734: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 37 - %t73 = load i64, ptr %t72 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2927, i64 18, i64 0 }, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2930, i64 10, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4735, label %ok4736 -panic4735: - call void @finch_panic(ptr @.str.2931, i64 2123, ptr @.str.2932) - unreachable -ok4736: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 38 - %t89 = load i64, ptr %t88 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t85, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t85, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2933, i64 10, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic4737, label %ok4738 -panic4737: - call void @finch_panic(ptr @.str.2934, i64 2123, ptr @.str.2935) - unreachable -ok4738: - %t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 36 - %t106 = load i64, ptr %t105 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t102, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t102, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.2936, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call i64 @finch.gen.md(ptr %t69, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store i64 %t120, ptr %a122 - %t123 = load i64, ptr %a122 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic4739, label %ok4740 -panic4739: - call void @finch_panic(ptr @.str.2937, i64 2124, ptr @.str.2938) - unreachable -ok4740: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 34 - %t127 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t127, ptr %a128 - store i32 0, ptr %a129 - %t130 = call i64 @finch_map_slot(ptr %t126, ptr %a128, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a129) - %t131 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t126, i32 0, i32 0 - %t132 = load ptr, ptr %t131 - %t133 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t132, i64 %t130 - %t134 = load i32, ptr %a129 - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %map.new4741, label %map.have4742 -map.new4741: - %t136 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 1 - call void @finch_str_copy(ptr %t136, ptr %a128) - %t137 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 0, ptr %t137 - br label %map.have4742 -map.have4742: - %t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 %t123, ptr %t138 - %t139 = load i64, ptr %a122 - call void @finch_str_drop(ptr %a47) - ret i64 %t139 -} - -define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) { -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 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %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 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %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 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4743, label %ok4744 -panic4743: - call void @finch_panic(ptr @.str.2939, i64 2129, ptr @.str.2940) - unreachable -ok4744: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = load %S.gen.FnSig, ptr %t5 - store %S.gen.FnSig %t6, ptr %a7 - call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7) - %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 %then4745, label %endif4747 -then4745: - %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.2941, i64 4, i64 0 }, ptr %t30 - store i64 %t28, ptr %t26 - br label %endif4747 -endif4747: - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 - store i64 0, ptr %a32 - br label %each.cond4748 -each.cond4748: - %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.body4749, label %each.end4751 -each.body4749: - %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.step4750 -each.step4750: - %t50 = load i64, ptr %a32 - %t51 = add i64 %t50, 1 - store i64 %t51, ptr %a32 - br label %each.cond4748 -each.end4751: - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4752, label %ok4753 -panic4752: - call void @finch_panic(ptr @.str.2942, i64 2138, ptr @.str.2943) - unreachable -ok4753: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 35 - %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 %range4754, label %inrange4755 -range4754: - call void @finch_panic_index(ptr @.str.2944, i64 2138, i64 %t56, i64 %t58) - unreachable -inrange4755: - %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.2946, 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.2945, i64 27, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2947, i64 2, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } { ptr @.str.2948, i64 30, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2949, i64 17, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - %t98 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - call void @finch_str_sub(ptr %a97, ptr %a96, i64 1, i64 %t100, ptr @.str.2950, i64 2140) - %t101 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t93, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t93, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t101, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2951, i64 11, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a114, i64 %t113) - %t115 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t112, ptr %a119 - call void @finch_str_drop(ptr %a119) - store { ptr, i64, i64 } %t115, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.2952, i64 9, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a128, i64 %t127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t126, ptr %a133 - call void @finch_str_drop(ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.2953, i64 8, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t142 = load i64, ptr %t141 - call void @finch_str_from_int(ptr %a143, i64 %t142) - %t144 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t140, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t140, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2954, i64 9, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load i64, ptr %a81 - call void @finch_str_from_int(ptr %a157, i64 %t156) - %t158 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t155, ptr %a162 - call void @finch_str_drop(ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.2955, i64 13, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2956, i64 87, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = call i64 @finch.gen.md(ptr %t82, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t184, ptr %a186 - call void @finch_str_drop(ptr %a186) - call void @finch.drop.arr_str(ptr %a11) - call void @finch.drop.S_gen_FnSig(ptr %a10) - ret i64 %t185 -} - -define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a38 = 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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i64, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4756, label %ok4757 -panic4756: - call void @finch_panic(ptr @.str.2957, i64 2144, ptr @.str.2958) - unreachable -ok4757: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 30 - %t9 = load i1, ptr %t8 - %t10 = xor i1 %t9, true - br label %logic.from4758 -logic.from4758: - br i1 %t10, label %logic.end4760, label %logic.rhs4759 -logic.rhs4759: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic4761, label %ok4762 -panic4761: - call void @finch_panic(ptr @.str.2959, i64 2144, ptr @.str.2960) - unreachable -ok4762: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 36 - %t14 = load i64, ptr %t13 - %t15 = icmp slt i64 %t14, 0 - br label %logic.rend4763 -logic.rend4763: - br label %logic.end4760 -logic.end4760: - %t16 = phi i1 [ true, %logic.from4758 ], [ %t15, %logic.rend4763 ] - br i1 %t16, label %then4764, label %endif4766 -then4764: - ret void -endif4766: - %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 %then4767, label %endif4769 -then4767: - ret void -endif4769: - store { ptr, i64, i64 } { ptr @.str.2961, i64 0, i64 0 }, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4770, label %ok4771 -panic4770: - call void @finch_panic(ptr @.str.2962, i64 2152, ptr @.str.2963) - unreachable -ok4771: - %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 39 - %t27 = load i64, ptr %t26 - %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4772, label %endif4774 -then4772: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic4775, label %ok4776 -panic4775: - call void @finch_panic(ptr @.str.2965, i64 2153, ptr @.str.2966) - unreachable -ok4776: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 39 - %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.2964, i64 7, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t39, ptr %a23 - store { ptr, i64, i64 } %t40, ptr %a41 - call void @finch_str_drop(ptr %a41) - br label %endif4774 -endif4774: - %t42 = load ptr, ptr %a1 - %t43 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2967, i64 24, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.2968, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic4777, label %ok4778 -panic4777: - call void @finch_panic(ptr @.str.2969, i64 2155, ptr @.str.2970) - unreachable -ok4778: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 36 - %t56 = load i64, ptr %t55 - call void @finch_str_from_int(ptr %a57, i64 %t56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t52, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t52, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.2971, i64 9, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4779, label %ok4780 -panic4779: - call void @finch_panic(ptr @.str.2972, i64 2155, ptr @.str.2973) - unreachable -ok4780: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 35 - %t73 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t74 = load i64, ptr %t73 - %t75 = load { ptr, i64, i64 }, ptr %t72 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range4781, label %inrange4782 -range4781: - call void @finch_panic_index(ptr @.str.2974, i64 2155, i64 %t74, i64 %t76) - unreachable -inrange4782: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds i64, ptr %t78, i64 %t74 - %t80 = load i64, ptr %t79 - call void @finch_str_from_int(ptr %a81, i64 %t80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t69, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t69, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2975, i64 8, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t95 = load i64, ptr %t94 - call void @finch_str_from_int(ptr %a96, i64 %t95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t93, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t93, ptr %a101 - call void @finch_str_drop(ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2976, i64 9, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load i64, ptr %a20 - call void @finch_str_from_int(ptr %a110, i64 %t109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t108, ptr %a115 - call void @finch_str_drop(ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t117, ptr %a120 - store { ptr, i64, i64 } %t118, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.2977, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call i64 @finch.gen.md(ptr %t42, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i64 %t129, ptr %a131 - %t132 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t133 = load i64, ptr %t132 - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic4783, label %ok4784 -panic4783: - call void @finch_panic(ptr @.str.2978, i64 2156, ptr @.str.2979) - unreachable -ok4784: - %t136 = getelementptr inbounds %S.gen.Gen, ptr %t134, i32 0, i32 37 - store i64 %t133, ptr %t136 - %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t138 = load i64, ptr %t137 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4785, label %ok4786 -panic4785: - call void @finch_panic(ptr @.str.2980, i64 2157, ptr @.str.2981) - unreachable -ok4786: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 38 - store i64 %t138, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.2982, i64 41, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.2983, i64 12, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = load i64, ptr %a131 - call void @finch_str_from_int(ptr %a154, i64 %t153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t152, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.2984, i64 27, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - call void @finch.gen.emit(ptr %t142, { ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch_str_drop(ptr %a23) - ret void -} - -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = mul i64 2, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.2985, i64 20, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2986, 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 %panic4787, label %ok4788 -panic4787: - call void @finch_panic(ptr @.str.2987, i64 2164, ptr @.str.2988) - unreachable -ok4788: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 33 - %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.cond4789 -for.cond4789: - %t16 = load i64, ptr %a15 - %t17 = icmp slt i64 %t16, %t14 - br i1 %t17, label %for.body4790, label %for.end4792 -for.body4790: - %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.2989, i64 1, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.2990, i64 3, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic4793, label %ok4794 -panic4793: - call void @finch_panic(ptr @.str.2991, i64 2165, ptr @.str.2992) - unreachable -ok4794: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 33 - %t35 = load i64, ptr %a15 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4795, label %inrange4796 -range4795: - call void @finch_panic_index(ptr @.str.2993, i64 2165, i64 %t35, i64 %t37) - unreachable -inrange4796: - %t39 = extractvalue { ptr, i64, i64 } %t36, 0 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t35 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t31, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t31, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load i64, ptr %t18 - %t48 = add i64 %t47, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t49 = load ptr, ptr %a9 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 - store { ptr, i64, i64 } %t46, ptr %t50 - store i64 %t48, ptr %t18 - br label %for.step4791 -for.step4791: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %for.cond4789 -for.end4792: - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2994, i64 1, i64 0 }, ptr %a54 - call void @finch_str_join(ptr %a55, ptr %a9, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2995, i64 1, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t61 -} - -define internal void @finch.copy.arr_S_gen_Var(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond4868 -n.cond4868: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4869, label %n.end4870 -n.body4869: - %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.cond4868 -n.end4870: - ret void -} - -define internal void @finch.copy.arr_S_gen_Cleanup(ptr %dst, ptr %src) { -entry: - - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - ret void -} - -define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Scope, ptr %src - store %S.gen.Scope %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_int(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_gen_Cleanup(ptr %t8, ptr %t9) - ret void -} - -define internal void @finch.copy.arr_S_gen_Scope(ptr %dst, ptr %src) { -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.cond4865 -n.cond4865: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4866, label %n.end4867 -n.body4866: - %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.cond4865 -n.end4867: - ret void -} - -define internal void @finch.drop.arr_S_gen_Scope(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4871 -n.cond4871: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4872, label %n.end4873 -n.body4872: - %t7 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Scope(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4871 -n.end4873: - call void @finch_arr_free(ptr %a) - 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 - %a20 = alloca %S.gen.FnSig, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca %S.ast.Node, align 16 - %a117 = alloca %S.ast.Node, align 16 - %a119 = alloca %S.ast.Node, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a247 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a270 = alloca i64, align 16 - %a284 = alloca %S.ast.Type, align 16 - %a285 = alloca %S.ast.Type, align 16 - %a287 = alloca %S.ast.Type, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %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 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4797, label %ok4798 -panic4797: - call void @finch_panic(ptr @.str.2996, i64 2171, ptr @.str.2997) - unreachable -ok4798: - %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 %range4799, label %inrange4800 -range4799: - call void @finch_panic_index(ptr @.str.2998, i64 2171, i64 %t6, i64 %t8) - unreachable -inrange4800: - %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 %panic4801, label %ok4802 -panic4801: - call void @finch_panic(ptr @.str.2999, i64 2171, ptr @.str.3000) - unreachable -ok4802: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 13 - store %S.gen.FnSig %t12, ptr %a16 - call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) - %t18 = load %S.gen.FnSig, ptr %a17 - %t19 = load %S.gen.FnSig, ptr %t15 - store %S.gen.FnSig %t18, ptr %t15 - store %S.gen.FnSig %t19, ptr %a20 - call void @finch.drop.S_gen_FnSig(ptr %a20) - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic4803, label %ok4804 -panic4803: - call void @finch_panic(ptr @.str.3001, i64 2172, ptr @.str.3002) - unreachable -ok4804: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %t23, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic4805, label %ok4806 -panic4805: - call void @finch_panic(ptr @.str.3003, i64 2172, ptr @.str.3004) - unreachable -ok4806: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 14 - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - %t32 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t31, ptr %t28 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic4807, label %ok4808 -panic4807: - call void @finch_panic(ptr @.str.3005, i64 2173, ptr @.str.3006) - unreachable -ok4808: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 13 - %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 6 - %t38 = load { ptr, i64, i64 }, ptr %t37 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic4809, label %ok4810 -panic4809: - call void @finch_panic(ptr @.str.3007, i64 2173, ptr @.str.3008) - unreachable -ok4810: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 18 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic4811, label %ok4812 -panic4811: - call void @finch_panic(ptr @.str.3009, i64 2174, ptr @.str.3010) - unreachable -ok4812: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 13 - %t50 = getelementptr inbounds %S.gen.FnSig, ptr %t49, i32 0, i32 7 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4813, label %ok4814 -panic4813: - call void @finch_panic(ptr @.str.3011, i64 2174, ptr @.str.3012) - unreachable -ok4814: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19 - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - %t58 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t57, ptr %t54 - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch.drop.arr_S_ast_Type(ptr %a59) - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic4815, label %ok4816 -panic4815: - call void @finch_panic(ptr @.str.3014, i64 2175, ptr @.str.3015) - unreachable -ok4816: - %t62 = getelementptr inbounds %S.gen.Gen, ptr %t60, i32 0, i32 20 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } { ptr @.str.3013, i64 0, i64 0 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4817, label %ok4818 -panic4817: - call void @finch_panic(ptr @.str.3016, i64 2176, ptr @.str.3017) - unreachable -ok4818: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 13 - %t68 = getelementptr inbounds %S.gen.FnSig, ptr %t67, i32 0, i32 7 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = icmp sgt i64 %t70, 0 - br i1 %t71, label %then4819, label %endif4821 -then4819: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic4822, label %ok4823 -panic4822: - call void @finch_panic(ptr @.str.3019, i64 2177, ptr @.str.3020) - unreachable -ok4823: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 13 - %t75 = getelementptr inbounds %S.gen.FnSig, ptr %t74, i32 0, i32 8 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.3018, i64 17, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3021, i64 1, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4824, label %ok4825 -panic4824: - call void @finch_panic(ptr @.str.3022, i64 2177, ptr @.str.3023) - unreachable -ok4825: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 20 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t85, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %endif4821 -endif4821: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic4826, label %ok4827 -panic4826: - call void @finch_panic(ptr @.str.3024, i64 2179, ptr @.str.3025) - unreachable -ok4827: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 0 - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4828, label %ok4829 -panic4828: - call void @finch_panic(ptr @.str.3026, i64 2179, ptr @.str.3027) - unreachable -ok4829: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 13 - %t97 = getelementptr inbounds %S.gen.FnSig, ptr %t96, i32 0, i32 16 - %t98 = load i64, ptr %t97 - %t99 = load { ptr, i64, i64 }, ptr %t93 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range4830, label %inrange4831 -range4830: - call void @finch_panic_index(ptr @.str.3028, i64 2179, i64 %t98, i64 %t100) - unreachable -inrange4831: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Program, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.ast.Program, ptr %t103, i32 0, i32 8 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4832, label %ok4833 -panic4832: - call void @finch_panic(ptr @.str.3029, i64 2179, ptr @.str.3030) - unreachable -ok4833: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 13 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %t107, i32 0, i32 17 - %t109 = load i64, ptr %t108 - %t110 = load { ptr, i64, i64 }, ptr %t104 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range4834, label %inrange4835 -range4834: - call void @finch_panic_index(ptr @.str.3031, i64 2179, i64 %t109, i64 %t111) - unreachable -inrange4835: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %t113, i64 %t109 - %t115 = load %S.ast.Node, ptr %t114 - store %S.ast.Node %t115, ptr %a116 - call void @finch.copy.S_ast_Node(ptr %a117, ptr %a116) - %t118 = load %S.ast.Node, ptr %a117 - store %S.ast.Node %t118, ptr %a119 - store { ptr, i64, i64 } zeroinitializer, ptr %a120 - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic4836, label %ok4837 -panic4836: - call void @finch_panic(ptr @.str.3032, i64 2181, ptr @.str.3033) - unreachable -ok4837: - %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 4 - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch.copy.arr_str(ptr %a126, ptr %a125) - %t127 = load { ptr, i64, i64 }, ptr %a126 - %t128 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t127, ptr %t124 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.drop.arr_str(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a120 - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4838, label %ok4839 -panic4838: - call void @finch_panic(ptr @.str.3034, i64 2182, ptr @.str.3035) - unreachable -ok4839: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 5 - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch.copy.arr_str(ptr %a135, ptr %a134) - %t136 = load { ptr, i64, i64 }, ptr %a135 - %t137 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } %t136, ptr %t133 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch.drop.arr_str(ptr %a138) - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4840, label %ok4841 -panic4840: - call void @finch_panic(ptr @.str.3036, i64 2183, ptr @.str.3037) - unreachable -ok4841: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 6 - store i64 0, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4842, label %ok4843 -panic4842: - call void @finch_panic(ptr @.str.3038, i64 2184, ptr @.str.3039) - unreachable -ok4843: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 9 - store i1 false, ptr %t144 - %t145 = load ptr, ptr %a1 - %t146 = icmp eq ptr %t145, null - br i1 %t146, label %panic4844, label %ok4845 -panic4844: - call void @finch_panic(ptr @.str.3040, i64 2185, ptr @.str.3041) - unreachable -ok4845: - %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 25 - store i64 0, ptr %t147 - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic4846, label %ok4847 -panic4846: - call void @finch_panic(ptr @.str.3042, i64 2186, ptr @.str.3043) - unreachable -ok4847: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 36 - store i64 -1, ptr %t150 - store i64 -1, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic4848, label %ok4849 -panic4848: - call void @finch_panic(ptr @.str.3044, i64 2188, ptr @.str.3045) - unreachable -ok4849: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 30 - %t155 = load i1, ptr %t154 - br i1 %t155, label %then4850, label %endif4852 -then4850: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a119 - %t158 = call i64 @finch.gen.dbgSubprogram(ptr %t156, %S.ast.Node %t157) - store i64 %t158, ptr %a151 - %t159 = load i64, ptr %a151 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4853, label %ok4854 -panic4853: - call void @finch_panic(ptr @.str.3046, i64 2190, ptr @.str.3047) - unreachable -ok4854: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 36 - store i64 %t159, ptr %t162 - %t163 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 11 - %t164 = load i64, ptr %t163 - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic4855, label %ok4856 -panic4855: - call void @finch_panic(ptr @.str.3048, i64 2191, ptr @.str.3049) - unreachable -ok4856: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 37 - store i64 %t164, ptr %t167 - %t168 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 12 - %t169 = load i64, ptr %t168 - %t170 = load ptr, ptr %a1 - %t171 = icmp eq ptr %t170, null - br i1 %t171, label %panic4857, label %ok4858 -panic4857: - call void @finch_panic(ptr @.str.3050, i64 2192, ptr @.str.3051) - unreachable -ok4858: - %t172 = getelementptr inbounds %S.gen.Gen, ptr %t170, i32 0, i32 38 - store i64 %t169, ptr %t172 - br label %endif4852 -endif4852: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4859, label %ok4860 -panic4859: - call void @finch_panic(ptr @.str.3052, i64 2194, ptr @.str.3053) - unreachable -ok4860: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 44 - store i1 false, ptr %t175 - %t176 = load ptr, ptr %a1 - %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic4861, label %ok4862 -panic4861: - call void @finch_panic(ptr @.str.3054, i64 2195, ptr @.str.3055) - unreachable -ok4862: - %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 46 - store i64 0, ptr %t178 - store { ptr, i64, i64 } zeroinitializer, ptr %a179 - %t180 = load { ptr, i64, i64 }, ptr %a179 - %t181 = load ptr, ptr %a1 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic4863, label %ok4864 -panic4863: - call void @finch_panic(ptr @.str.3056, i64 2197, ptr @.str.3057) - unreachable -ok4864: - %t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 10 - store { ptr, i64, i64 } %t180, ptr %a184 - call void @finch.copy.arr_S_gen_Scope(ptr %a185, ptr %a184) - %t186 = load { ptr, i64, i64 }, ptr %a185 - %t187 = load { ptr, i64, i64 }, ptr %t183 - store { ptr, i64, i64 } %t186, ptr %t183 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch.drop.arr_S_gen_Scope(ptr %a188) - %t189 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t189) - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic4874, label %ok4875 -panic4874: - call void @finch_panic(ptr @.str.3058, i64 2200, ptr @.str.3059) - unreachable -ok4875: - %t193 = getelementptr inbounds %S.gen.Gen, ptr %t191, i32 0, i32 13 - %t194 = getelementptr inbounds %S.gen.FnSig, ptr %t193, i32 0, i32 2 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = icmp sgt i64 %t196, 0 - br i1 %t197, label %then4876, label %endif4878 -then4876: - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = add i64 %t199, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t200, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t201 = load ptr, ptr %a190 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i64 %t199 - store { ptr, i64, i64 } { ptr @.str.3060, i64 9, i64 0 }, ptr %t202 - store i64 %t200, ptr %t198 - store { ptr, i64, i64 } { ptr @.str.3061, i64 6, i64 0 }, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4879, label %ok4880 -panic4879: - call void @finch_panic(ptr @.str.3062, i64 2204, ptr @.str.3063) - unreachable -ok4880: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 13 - %t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 4 - %t208 = load i1, ptr %t207 - br i1 %t208, label %then4881, label %endif4883 -then4881: - %t209 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.3064, i64 4, i64 0 }, ptr %a203 - store { ptr, i64, i64 } %t209, ptr %a210 - call void @finch_str_drop(ptr %a210) - br label %endif4883 -endif4883: - %t211 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_copy(ptr %a213, ptr %a212) - %t214 = load { ptr, i64, i64 }, ptr %a213 - %t215 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t214, 0 - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic4884, label %ok4885 -panic4884: - call void @finch_panic(ptr @.str.3065, i64 2207, ptr @.str.3066) - unreachable -ok4885: - %t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 13 - %t219 = getelementptr inbounds %S.gen.FnSig, ptr %t218, i32 0, i32 2 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch_str_copy(ptr %a222, ptr %a221) - %t223 = load { ptr, i64, i64 }, ptr %a222 - %t224 = insertvalue %S.ast.Type %t215, { ptr, i64, i64 } %t223, 2 - %t225 = load ptr, ptr %a1 - %t226 = icmp eq ptr %t225, null - br i1 %t226, label %panic4886, label %ok4887 -panic4886: - call void @finch_panic(ptr @.str.3067, i64 2207, ptr @.str.3068) - unreachable -ok4887: - %t227 = getelementptr inbounds %S.gen.Gen, ptr %t225, i32 0, i32 13 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_copy(ptr %a231, ptr %a230) - %t232 = load { ptr, i64, i64 }, ptr %a231 - %t233 = insertvalue %S.ast.Type %t224, { ptr, i64, i64 } %t232, 3 - store %S.ast.Type %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic4888, label %ok4889 -panic4888: - call void @finch_panic(ptr @.str.3069, i64 2208, ptr @.str.3070) - unreachable -ok4889: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 10 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range4890, label %inrange4891 -range4890: - call void @finch_panic_index(ptr @.str.3071, i64 2208, i64 0, i64 %t239) - unreachable -inrange4891: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.gen.Scope, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.gen.Scope, ptr %t242, i32 0, i32 0 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.3072, i64 4, i64 0 }, 0 - %t246 = load %S.ast.Type, ptr %a234 - store %S.ast.Type %t246, ptr %a247 - call void @finch.copy.S_ast_Type(ptr %a248, ptr %a247) - %t249 = load %S.ast.Type, ptr %a248 - %t250 = insertvalue %S.gen.Var %t245, %S.ast.Type %t249, 1 - %t251 = insertvalue %S.gen.Var %t250, { ptr, i64, i64 } { ptr @.str.3073, i64 5, i64 0 }, 2 - %t252 = insertvalue %S.gen.Var %t251, i1 false, 3 - %t253 = load i64, ptr %t244 - %t254 = add i64 %t253, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t254, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t255 = load ptr, ptr %t243 - %t256 = getelementptr inbounds %S.gen.Var, ptr %t255, i64 %t253 - store %S.gen.Var %t252, ptr %t256 - store i64 %t254, ptr %t244 - %t257 = load ptr, ptr %a1 - %t258 = icmp eq ptr %t257, null - br i1 %t258, label %panic4892, label %ok4893 -panic4892: - call void @finch_panic(ptr @.str.3074, i64 2209, ptr @.str.3075) - unreachable -ok4893: - %t259 = getelementptr inbounds %S.gen.Gen, ptr %t257, i32 0, i32 30 - %t260 = load i1, ptr %t259 - br i1 %t260, label %then4894, label %endif4896 -then4894: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a119 - %t263 = load %S.ast.Type, ptr %a234 - call void @finch.gen.dbgVariable(ptr %t261, %S.ast.Node %t262, { ptr, i64, i64 } { ptr @.str.3076, i64 4, i64 0 }, %S.ast.Type %t263, { ptr, i64, i64 } { ptr @.str.3077, i64 5, i64 0 }) - br label %endif4896 -endif4896: - call void @finch.drop.S_ast_Type(ptr %a234) - call void @finch_str_drop(ptr %a203) - br label %endif4878 -endif4878: - %t264 = load ptr, ptr %a1 - %t265 = icmp eq ptr %t264, null - br i1 %t265, label %panic4897, label %ok4898 -panic4897: - call void @finch_panic(ptr @.str.3078, i64 2214, ptr @.str.3079) - unreachable -ok4898: - %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 13 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i32 0, i32 13 - %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i32 0, i32 1 - %t269 = load i64, ptr %t268 - store i64 0, ptr %a270 - br label %for.cond4899 -for.cond4899: - %t271 = load i64, ptr %a270 - %t272 = icmp slt i64 %t271, %t269 - br i1 %t272, label %for.body4900, label %for.end4902 -for.body4900: - %t273 = load ptr, ptr %a1 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic4903, label %ok4904 -panic4903: - call void @finch_panic(ptr @.str.3080, i64 2215, ptr @.str.3081) - unreachable -ok4904: - %t275 = getelementptr inbounds %S.gen.Gen, ptr %t273, i32 0, i32 13 - %t276 = getelementptr inbounds %S.gen.FnSig, ptr %t275, i32 0, i32 13 - %t277 = load i64, ptr %a270 - %t278 = load { ptr, i64, i64 }, ptr %t276 - %t279 = extractvalue { ptr, i64, i64 } %t278, 1 - %t280 = icmp uge i64 %t277, %t279 - br i1 %t280, label %range4905, label %inrange4906 -range4905: - call void @finch_panic_index(ptr @.str.3082, i64 2215, i64 %t277, i64 %t279) - unreachable -inrange4906: - %t281 = extractvalue { ptr, i64, i64 } %t278, 0 - %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 %t277 - %t283 = load %S.ast.Type, ptr %t282 - store %S.ast.Type %t283, ptr %a284 - call void @finch.copy.S_ast_Type(ptr %a285, ptr %a284) - %t286 = load %S.ast.Type, ptr %a285 - store %S.ast.Type %t286, ptr %a287 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a287 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.3083, i64 3, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a298, i64 %t297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t296, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - %t306 = load i64, ptr %t288 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t307, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %a190 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t306 - store { ptr, i64, i64 } %t305, ptr %t309 - store i64 %t307, ptr %t288 - %t310 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a311, i64 %t310) - %t312 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } { ptr @.str.3084, i64 2, i64 0 }, ptr %a314 - store { ptr, i64, i64 } %t312, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_drop(ptr %a316) - %t317 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Type, ptr %a287 - %t321 = call i1 @finch.gen.owning(ptr %t319, %S.ast.Type %t320) - br label %logic.from4907 -logic.from4907: - br i1 %t321, label %logic.rhs4908, label %logic.end4909 -logic.rhs4908: - %t322 = load ptr, ptr %a1 - %t323 = icmp eq ptr %t322, null - br i1 %t323, label %panic4910, label %ok4911 -panic4910: - call void @finch_panic(ptr @.str.3085, i64 2218, ptr @.str.3086) - unreachable -ok4911: - %t324 = getelementptr inbounds %S.gen.Gen, ptr %t322, i32 0, i32 13 - %t325 = getelementptr inbounds %S.gen.FnSig, ptr %t324, i32 0, i32 15 - %t326 = load i64, ptr %a270 - %t327 = load { ptr, i64, i64 }, ptr %t325 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range4912, label %inrange4913 -range4912: - call void @finch_panic_index(ptr @.str.3087, i64 2218, i64 %t326, i64 %t328) - unreachable -inrange4913: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds i1, ptr %t330, i64 %t326 - %t332 = load i1, ptr %t331 - %t333 = xor i1 %t332, true - br label %logic.rend4914 -logic.rend4914: - br label %logic.end4909 -logic.end4909: - %t334 = phi i1 [ false, %logic.from4907 ], [ %t333, %logic.rend4914 ] - br i1 %t334, label %then4915, label %endif4917 -then4915: - %t335 = load ptr, ptr %a1 - %t336 = load { ptr, i64, i64 }, ptr %a318 - %t337 = load %S.ast.Type, ptr %a287 - %t338 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t335, { ptr, i64, i64 } %t336, %S.ast.Type %t337) - %t339 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t338, ptr %a318 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_drop(ptr %a340) - br label %endif4917 -endif4917: - %t341 = load i64, ptr %a270 - %t342 = add i64 %t341, 1 - %t343 = load ptr, ptr %a1 - %t344 = icmp eq ptr %t343, null - br i1 %t344, label %panic4918, label %ok4919 -panic4918: - call void @finch_panic(ptr @.str.3088, i64 2221, ptr @.str.3089) - unreachable -ok4919: - %t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 39 - store i64 %t342, ptr %t345 - %t346 = load ptr, ptr %a1 - %t347 = icmp eq ptr %t346, null - br i1 %t347, label %panic4920, label %ok4921 -panic4920: - call void @finch_panic(ptr @.str.3090, i64 2222, ptr @.str.3091) - unreachable -ok4921: - %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 13 - %t349 = getelementptr inbounds %S.gen.FnSig, ptr %t348, i32 0, i32 2 - %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i32 0, i32 1 - %t351 = load i64, ptr %t350 - %t352 = icmp sgt i64 %t351, 0 - br i1 %t352, label %then4922, label %endif4924 -then4922: - %t353 = load i64, ptr %a270 - %t354 = add i64 %t353, 2 - %t355 = load ptr, ptr %a1 - %t356 = icmp eq ptr %t355, null - br i1 %t356, label %panic4925, label %ok4926 -panic4925: - call void @finch_panic(ptr @.str.3092, i64 2223, ptr @.str.3093) - unreachable -ok4926: - %t357 = getelementptr inbounds %S.gen.Gen, ptr %t355, i32 0, i32 39 - store i64 %t354, ptr %t357 - br label %endif4924 -endif4924: - %t358 = load ptr, ptr %a1 - %t359 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t360 = load i64, ptr %a270 - %t361 = load { ptr, i64, i64 }, ptr %t359 - %t362 = extractvalue { ptr, i64, i64 } %t361, 1 - %t363 = icmp uge i64 %t360, %t362 - br i1 %t363, label %range4927, label %inrange4928 -range4927: - call void @finch_panic_index(ptr @.str.3094, i64 2225, i64 %t360, i64 %t362) - unreachable -inrange4928: - %t364 = extractvalue { ptr, i64, i64 } %t361, 0 - %t365 = getelementptr inbounds %S.ast.Node, ptr %t364, i64 %t360 - %t366 = load %S.ast.Node, ptr %t365 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic4929, label %ok4930 -panic4929: - call void @finch_panic(ptr @.str.3095, i64 2225, ptr @.str.3096) - unreachable -ok4930: - %t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13 - %t370 = getelementptr inbounds %S.gen.FnSig, ptr %t369, i32 0, i32 14 - %t371 = load i64, ptr %a270 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4931, label %inrange4932 -range4931: - call void @finch_panic_index(ptr @.str.3097, i64 2225, i64 %t371, i64 %t373) - unreachable -inrange4932: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t371 - %t377 = load { ptr, i64, i64 }, ptr %t376 - %t378 = load %S.ast.Type, ptr %a287 - %t379 = load { ptr, i64, i64 }, ptr %a318 - %t380 = load ptr, ptr %a1 - %t381 = load %S.ast.Type, ptr %a287 - %t382 = call i1 @finch.gen.owning(ptr %t380, %S.ast.Type %t381) - br label %logic.from4933 -logic.from4933: - br i1 %t382, label %logic.rhs4934, label %logic.end4935 -logic.rhs4934: - %t383 = load ptr, ptr %a1 - %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic4936, label %ok4937 -panic4936: - call void @finch_panic(ptr @.str.3098, i64 2225, ptr @.str.3099) - unreachable -ok4937: - %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 13 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 15 - %t387 = load i64, ptr %a270 - %t388 = load { ptr, i64, i64 }, ptr %t386 - %t389 = extractvalue { ptr, i64, i64 } %t388, 1 - %t390 = icmp uge i64 %t387, %t389 - br i1 %t390, label %range4938, label %inrange4939 -range4938: - call void @finch_panic_index(ptr @.str.3100, i64 2225, i64 %t387, i64 %t389) - unreachable -inrange4939: - %t391 = extractvalue { ptr, i64, i64 } %t388, 0 - %t392 = getelementptr inbounds i1, ptr %t391, i64 %t387 - %t393 = load i1, ptr %t392 - %t394 = xor i1 %t393, true - br label %logic.rend4940 -logic.rend4940: - br label %logic.end4935 -logic.end4935: - %t395 = phi i1 [ false, %logic.from4933 ], [ %t394, %logic.rend4940 ] - %t396 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t358, %S.ast.Node %t366, { ptr, i64, i64 } %t377, %S.ast.Type %t378, { ptr, i64, i64 } %t379, i1 false, i1 %t395) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a1 - %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic4941, label %ok4942 -panic4941: - call void @finch_panic(ptr @.str.3101, i64 2226, ptr @.str.3102) - unreachable -ok4942: - %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 39 - store i64 0, ptr %t400 - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_ast_Type(ptr %a287) - br label %for.step4901 -for.step4901: - %t401 = load i64, ptr %a270 - %t402 = add i64 %t401, 1 - store i64 %t402, ptr %a270 - br label %for.cond4899 -for.end4902: - %t403 = load ptr, ptr %a1 - %t404 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t405 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t406 = getelementptr inbounds { ptr, i64, i64 }, ptr %t405, i32 0, i32 1 - %t407 = load i64, ptr %t406 - %t408 = sub i64 %t407, 1 - %t409 = load { ptr, i64, i64 }, ptr %t404 - %t410 = extractvalue { ptr, i64, i64 } %t409, 1 - %t411 = icmp uge i64 %t408, %t410 - br i1 %t411, label %range4943, label %inrange4944 -range4943: - call void @finch_panic_index(ptr @.str.3103, i64 2228, i64 %t408, i64 %t410) - unreachable -inrange4944: - %t412 = extractvalue { ptr, i64, i64 } %t409, 0 - %t413 = getelementptr inbounds %S.ast.Node, ptr %t412, i64 %t408 - %t414 = load %S.ast.Node, ptr %t413 - call void @finch.gen.block(ptr %t403, %S.ast.Node %t414, i1 false) - %t415 = load ptr, ptr %a1 - %t416 = icmp eq ptr %t415, null - br i1 %t416, label %panic4945, label %ok4946 -panic4945: - call void @finch_panic(ptr @.str.3104, i64 2229, ptr @.str.3105) - unreachable -ok4946: - %t417 = getelementptr inbounds %S.gen.Gen, ptr %t415, i32 0, i32 9 - %t418 = load i1, ptr %t417 - %t419 = xor i1 %t418, true - br i1 %t419, label %then4947, label %endif4949 -then4947: - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic4950, label %ok4951 -panic4950: - call void @finch_panic(ptr @.str.3106, i64 2230, ptr @.str.3107) - unreachable -ok4951: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 13 - %t423 = getelementptr inbounds %S.gen.FnSig, ptr %t422, i32 0, i32 12 - %t424 = getelementptr inbounds %S.ast.Type, ptr %t423, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.3108, i64 4, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br i1 %t429, label %then4952, label %endif4954 -then4952: - %t430 = load ptr, ptr %a1 - %t431 = load %S.ast.Node, ptr %a119 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 1 - %t433 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } { ptr @.str.3109, i64 10, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t433, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - %t437 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t437, ptr %a439 - store { ptr, i64, i64 } { ptr @.str.3110, i64 38, i64 0 }, ptr %a440 - call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) - store { ptr, i64, i64 } %t437, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a438 - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4955, label %ok4956 -panic4955: - call void @finch_panic(ptr @.str.3111, i64 2231, ptr @.str.3112) - unreachable -ok4956: - %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 13 - %t446 = getelementptr inbounds %S.gen.FnSig, ptr %t445, i32 0, i32 12 - %t447 = load %S.ast.Type, ptr %t446 - %t448 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t447) - store { ptr, i64, i64 } %t442, ptr %a450 - store { ptr, i64, i64 } %t448, ptr %a451 - call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451) - store { ptr, i64, i64 } %t442, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t448, ptr %a453 - call void @finch_str_drop(ptr %a453) - %t454 = load { ptr, i64, i64 }, ptr %a449 - call void @finch.gen.fail(ptr %t430, %S.ast.Node %t431, { ptr, i64, i64 } %t454) - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_drop(ptr %a455) - br label %endif4954 -endif4954: - %t456 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t456, i64 0) - %t457 = load ptr, ptr %a1 - %t458 = icmp eq ptr %t457, null - br i1 %t458, label %panic4957, label %ok4958 -panic4957: - call void @finch_panic(ptr @.str.3113, i64 2234, ptr @.str.3114) - unreachable -ok4958: - %t459 = getelementptr inbounds %S.gen.Gen, ptr %t457, i32 0, i32 13 - %t460 = getelementptr inbounds %S.gen.FnSig, ptr %t459, i32 0, i32 9 - %t461 = load i1, ptr %t460 - br i1 %t461, label %then4959, label %else4960 -then4959: - %t462 = load ptr, ptr %a1 - %t463 = load ptr, ptr %a1 - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic4962, label %ok4963 -panic4962: - call void @finch_panic(ptr @.str.3116, i64 2235, ptr @.str.3117) - unreachable -ok4963: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 13 - %t467 = load %S.gen.FnSig, ptr %t466 - %t468 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t463, %S.gen.FnSig %t467) - store { ptr, i64, i64 } { ptr @.str.3115, i64 4, i64 0 }, ptr %a470 - store { ptr, i64, i64 } %t468, ptr %a471 - call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) - store { ptr, i64, i64 } %t468, ptr %a472 - call void @finch_str_drop(ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.3118, i64 53, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.emit(ptr %t462, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif4961 -else4960: - %t480 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t480, { ptr, i64, i64 } { ptr @.str.3119, i64 8, i64 0 }) - br label %endif4961 -endif4961: - br label %endif4949 -endif4949: - store { ptr, i64, i64 } { ptr @.str.3120, i64 0, i64 0 }, ptr %a481 - %t482 = load i64, ptr %a151 - %t483 = icmp sge i64 %t482, 0 - br i1 %t483, label %then4964, label %endif4966 -then4964: - %t484 = load i64, ptr %a151 - call void @finch_str_from_int(ptr %a485, i64 %t484) - %t486 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.3121, i64 7, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - %t492 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t491, ptr %a481 - store { ptr, i64, i64 } %t492, ptr %a493 - call void @finch_str_drop(ptr %a493) - br label %endif4966 -endif4966: - %t494 = load ptr, ptr %a1 - %t495 = icmp eq ptr %t494, null - br i1 %t495, label %panic4967, label %ok4968 -panic4967: - call void @finch_panic(ptr @.str.3122, i64 2244, ptr @.str.3123) - unreachable -ok4968: - %t496 = getelementptr inbounds %S.gen.Gen, ptr %t494, i32 0, i32 36 - store i64 -1, ptr %t496 - %t497 = load ptr, ptr %a1 - %t498 = icmp eq ptr %t497, null - br i1 %t498, label %panic4969, label %ok4970 -panic4969: - call void @finch_panic(ptr @.str.3124, i64 2245, ptr @.str.3125) - unreachable -ok4970: - %t499 = getelementptr inbounds %S.gen.Gen, ptr %t497, i32 0, i32 3 - %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i32 0, i32 1 - %t501 = load ptr, ptr %a1 - %t502 = load ptr, ptr %a1 - %t503 = icmp eq ptr %t502, null - br i1 %t503, label %panic4971, label %ok4972 -panic4971: - call void @finch_panic(ptr @.str.3127, i64 2245, ptr @.str.3128) - unreachable -ok4972: - %t504 = getelementptr inbounds %S.gen.Gen, ptr %t502, i32 0, i32 13 - %t505 = load %S.gen.FnSig, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t501, %S.gen.FnSig %t505) - store { ptr, i64, i64 } { ptr @.str.3126, i64 16, i64 0 }, ptr %a508 - store { ptr, i64, i64 } %t506, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - store { ptr, i64, i64 } %t511, ptr %a513 - store { ptr, i64, i64 } { ptr @.str.3129, i64 1, i64 0 }, ptr %a514 - call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) - store { ptr, i64, i64 } %t511, ptr %a515 - call void @finch_str_drop(ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a512 - %t517 = load ptr, ptr %a1 - %t518 = icmp eq ptr %t517, null - br i1 %t518, label %panic4973, label %ok4974 -panic4973: - call void @finch_panic(ptr @.str.3130, i64 2245, ptr @.str.3131) - unreachable -ok4974: - %t519 = getelementptr inbounds %S.gen.Gen, ptr %t517, i32 0, i32 13 - %t520 = getelementptr inbounds %S.gen.FnSig, ptr %t519, i32 0, i32 11 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t516, ptr %a523 - store { ptr, i64, i64 } %t521, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t516, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - store { ptr, i64, i64 } %t526, ptr %a528 - store { ptr, i64, i64 } { ptr @.str.3132, i64 1, i64 0 }, ptr %a529 - call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) - store { ptr, i64, i64 } %t526, ptr %a530 - call void @finch_str_drop(ptr %a530) - %t531 = load { ptr, i64, i64 }, ptr %a527 - %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3133, i64 2, i64 0 }, ptr %a533 - call void @finch_str_join(ptr %a534, ptr %a190, ptr %a533) - %t535 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t531, ptr %a537 - store { ptr, i64, i64 } %t535, ptr %a538 - call void @finch_str_concat(ptr %a536, ptr %a537, ptr %a538) - store { ptr, i64, i64 } %t531, ptr %a539 - call void @finch_str_drop(ptr %a539) - store { ptr, i64, i64 } %t535, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a536 - store { ptr, i64, i64 } %t541, ptr %a543 - store { ptr, i64, i64 } { ptr @.str.3134, i64 1, i64 0 }, ptr %a544 - call void @finch_str_concat(ptr %a542, ptr %a543, ptr %a544) - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch_str_drop(ptr %a545) - %t546 = load { ptr, i64, i64 }, ptr %a542 - %t547 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t546, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t546, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.3135, i64 10, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - %t558 = load ptr, ptr %a1 - %t559 = icmp eq ptr %t558, null - br i1 %t559, label %panic4975, label %ok4976 -panic4975: - call void @finch_panic(ptr @.str.3136, i64 2246, ptr @.str.3137) - unreachable -ok4976: - %t560 = getelementptr inbounds %S.gen.Gen, ptr %t558, i32 0, i32 5 - %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3138, i64 1, i64 0 }, ptr %a562 - call void @finch_str_join(ptr %a563, ptr %t560, ptr %a562) - %t564 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } %t557, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - store { ptr, i64, i64 } %t557, ptr %a568 - call void @finch_str_drop(ptr %a568) - store { ptr, i64, i64 } %t564, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.3139, i64 1, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = load ptr, ptr %a1 - %t577 = icmp eq ptr %t576, null - br i1 %t577, label %panic4977, label %ok4978 -panic4977: - call void @finch_panic(ptr @.str.3140, i64 2246, ptr @.str.3141) - unreachable -ok4978: - %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 4 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3142, i64 1, i64 0 }, ptr %a580 - call void @finch_str_join(ptr %a581, ptr %t578, ptr %a580) - %t582 = load { ptr, i64, i64 }, ptr %a581 - store { ptr, i64, i64 } %t575, ptr %a584 - store { ptr, i64, i64 } %t582, ptr %a585 - call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585) - store { ptr, i64, i64 } %t575, ptr %a586 - call void @finch_str_drop(ptr %a586) - store { ptr, i64, i64 } %t582, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t588, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.3143, i64 3, i64 0 }, ptr %a591 - call void @finch_str_concat(ptr %a589, ptr %a590, ptr %a591) - store { ptr, i64, i64 } %t588, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = load { ptr, i64, i64 }, ptr %a589 - %t594 = load i64, ptr %t500 - %t595 = add i64 %t594, 1 - call void @finch_arr_reserve(ptr %t499, i64 %t595, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t596 = load ptr, ptr %t499 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - store { ptr, i64, i64 } %t593, ptr %t597 - store i64 %t595, ptr %t500 - call void @finch_str_drop(ptr %a481) - call void @finch.drop.arr_str(ptr %a190) - call void @finch.drop.arr_S_gen_Scope(ptr %a179) - call void @finch.drop.arr_str(ptr %a120) - call void @finch.drop.S_ast_Node(ptr %a119) - ret void -} - -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 %then4979, label %endif4981 -then4979: - %t5 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t5) - br label %endif4981 -endif4981: - %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a7 - br label %each.cond4982 -each.cond4982: - %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.body4983, label %each.end4985 -each.body4983: - %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 %panic4986, label %ok4987 -panic4986: - call void @finch_panic(ptr @.str.3144, i64 2256, ptr @.str.3145) - unreachable -ok4987: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 - %t19 = load i1, ptr %t18 - br i1 %t19, label %then4988, label %endif4990 -then4988: - %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.3146, i64 66, i64 0 }) - br label %endif4990 -endif4990: - %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.step4984 -each.step4984: - %t24 = load i64, ptr %a7 - %t25 = add i64 %t24, 1 - store i64 %t25, ptr %a7 - br label %each.cond4982 -each.end4985: - %t26 = load i1, ptr %a3 - br i1 %t26, label %then4991, label %endif4993 -then4991: - %t27 = load ptr, ptr %a1 - call void @finch.gen.endScope(ptr %t27) - br label %endif4993 -endif4993: - 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.drop.S_gen_Loop(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a67 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.gen.Val, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a189 = alloca %S.ast.Node, align 16 - %a190 = alloca %S.ast.Node, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca %S.gen.Loop, align 16 - %a269 = alloca %S.gen.Loop, align 16 - %a271 = alloca %S.gen.Loop, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t4 = load i64, ptr %t3 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic4994, label %ok4995 -panic4994: - call void @finch_panic(ptr @.str.3147, i64 2267, ptr @.str.3148) - unreachable -ok4995: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 37 - 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 %panic4996, label %ok4997 -panic4996: - call void @finch_panic(ptr @.str.3149, i64 2268, ptr @.str.3150) - unreachable -ok4997: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 38 - 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.3151, 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 %then4998, label %else4999 -then4998: - %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 %endif5000 -else4999: - %t26 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3152, 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 %then5001, label %else5002 -then5001: - %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 %endif5003 -else5002: - %t33 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3153, 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 %then5004, label %else5005 -then5004: - %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 %endif5006 -else5005: - %t40 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3154, 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 %then5007, label %else5008 -then5007: - %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 %range5010, label %inrange5011 -range5010: - call void @finch_panic_index(ptr @.str.3155, i64 2277, i64 0, i64 %t47) - unreachable -inrange5011: - %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.3156, 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 %then5012, label %else5013 -then5012: - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = extractvalue { ptr, i64, i64 } %t60, 1 - %t62 = icmp uge i64 0, %t61 - br i1 %t62, label %range5015, label %inrange5016 -range5015: - call void @finch_panic_index(ptr @.str.3157, i64 2278, i64 0, i64 %t61) - unreachable -inrange5016: - %t63 = extractvalue { ptr, i64, i64 } %t60, 0 - %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 0 - %t65 = load %S.ast.Node, ptr %t64 - %t66 = call %S.gen.Val @finch.gen.orElse(ptr %t58, %S.ast.Node %t65, i1 true) - call void @finch.gen.release(ptr %t57, %S.gen.Val %t66) - store %S.gen.Val %t66, ptr %a67 - call void @finch.drop.S_gen_Val(ptr %a67) - br label %endif5014 -else5013: - %t68 = load ptr, ptr %a1 - %t69 = load ptr, ptr %a1 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 0, %t72 - br i1 %t73, label %range5017, label %inrange5018 -range5017: - call void @finch_panic_index(ptr @.str.3158, i64 2280, i64 0, i64 %t72) - unreachable -inrange5018: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 0 - %t76 = load %S.ast.Node, ptr %t75 - %t77 = call %S.gen.Val @finch.gen.expr(ptr %t69, %S.ast.Node %t76) - call void @finch.gen.release(ptr %t68, %S.gen.Val %t77) - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - br label %endif5014 -endif5014: - br label %endif5009 -else5008: - %t79 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3159, i64 5, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp ne i32 %t82, 0 - br i1 %t83, label %then5019, label %else5020 -then5019: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a2 - %t86 = call %S.gen.Val @finch.gen.matchGen(ptr %t84, %S.ast.Node %t85, i1 false) - store %S.gen.Val %t86, ptr %a87 - call void @finch.drop.S_gen_Val(ptr %a87) - br label %endif5021 -else5020: - %t88 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.3160, i64 2, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then5022, label %else5023 -then5022: - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Node, ptr %a2 - call void @finch.gen.ifStmt(ptr %t93, %S.ast.Node %t94) - br label %endif5024 -else5023: - %t95 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.3161, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then5025, label %else5026 -then5025: - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Node, ptr %a2 - call void @finch.gen.whileStmt(ptr %t100, %S.ast.Node %t101) - br label %endif5027 -else5026: - %t102 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.3162, 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 %then5028, label %else5029 -then5028: - %t107 = load ptr, ptr %a1 - %t108 = load %S.ast.Node, ptr %a2 - call void @finch.gen.forStmt(ptr %t107, %S.ast.Node %t108) - br label %endif5030 -else5029: - %t109 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.3163, 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 %then5031, label %else5032 -then5031: - %t114 = load ptr, ptr %a1 - %t115 = load %S.ast.Node, ptr %a2 - call void @finch.gen.eachStmt(ptr %t114, %S.ast.Node %t115) - br label %endif5033 -else5032: - %t116 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3164, 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 %then5034, label %else5035 -then5034: - %t121 = load ptr, ptr %a1 - %t122 = load %S.ast.Node, ptr %a2 - call void @finch.gen.returnStmt(ptr %t121, %S.ast.Node %t122) - br label %endif5036 -else5035: - %t123 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3165, i64 5, i64 0 }, ptr %a125 - %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) - %t127 = icmp ne i32 %t126, 0 - br i1 %t127, label %then5037, label %else5038 -then5037: - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic5040, label %ok5041 -panic5040: - call void @finch_panic(ptr @.str.3166, i64 2295, ptr @.str.3167) - unreachable -ok5041: - %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 46 - %t131 = load i64, ptr %t130 - %t132 = icmp sgt i64 %t131, 0 - br i1 %t132, label %then5042, label %endif5044 -then5042: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } { ptr @.str.3168, i64 33, i64 0 }) - br label %endif5044 -endif5044: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic5045, label %ok5046 -panic5045: - call void @finch_panic(ptr @.str.3169, i64 2298, ptr @.str.3170) - unreachable -ok5046: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 10 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load i64, ptr %t138 - %t140 = sub i64 %t139, 1 - store i64 %t140, ptr %a141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic5047, label %ok5048 -panic5047: - call void @finch_panic(ptr @.str.3171, i64 2299, ptr @.str.3172) - unreachable -ok5048: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 10 - %t145 = load i64, ptr %a141 - %t146 = load { ptr, i64, i64 }, ptr %t144 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5049, label %inrange5050 -range5049: - call void @finch_panic_index(ptr @.str.3173, i64 2299, i64 %t145, i64 %t147) - unreachable -inrange5050: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.gen.Scope, ptr %t149, i64 %t145 - %t151 = getelementptr inbounds %S.gen.Scope, ptr %t150, i32 0, i32 3 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = insertvalue %S.gen.Cleanup zeroinitializer, i1 true, 0 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic5051, label %ok5052 -panic5051: - call void @finch_panic(ptr @.str.3174, i64 2299, ptr @.str.3175) - unreachable -ok5052: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 10 - %t157 = load i64, ptr %a141 - %t158 = load { ptr, i64, i64 }, ptr %t156 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range5053, label %inrange5054 -range5053: - call void @finch_panic_index(ptr @.str.3176, i64 2299, i64 %t157, i64 %t159) - unreachable -inrange5054: - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = getelementptr inbounds %S.gen.Scope, ptr %t161, i64 %t157 - %t163 = getelementptr inbounds %S.gen.Scope, ptr %t162, i32 0, i32 1 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 - %t165 = load i64, ptr %t164 - %t166 = insertvalue %S.gen.Cleanup %t153, i64 %t165, 1 - %t167 = load i64, ptr %t152 - %t168 = add i64 %t167, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t168, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t169 = load ptr, ptr %t151 - %t170 = getelementptr inbounds %S.gen.Cleanup, ptr %t169, i64 %t167 - store %S.gen.Cleanup %t166, ptr %t170 - store i64 %t168, ptr %t152 - %t171 = load ptr, ptr %a1 - %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic5055, label %ok5056 -panic5055: - call void @finch_panic(ptr @.str.3177, i64 2300, ptr @.str.3178) - unreachable -ok5056: - %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 10 - %t174 = load i64, ptr %a141 - %t175 = load { ptr, i64, i64 }, ptr %t173 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range5057, label %inrange5058 -range5057: - call void @finch_panic_index(ptr @.str.3179, i64 2300, i64 %t174, i64 %t176) - unreachable -inrange5058: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.gen.Scope, ptr %t178, i64 %t174 - %t180 = getelementptr inbounds %S.gen.Scope, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i32 0, i32 1 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = extractvalue { ptr, i64, i64 } %t183, 1 - %t185 = icmp uge i64 0, %t184 - br i1 %t185, label %range5059, label %inrange5060 -range5059: - call void @finch_panic_index(ptr @.str.3180, i64 2300, i64 0, i64 %t184) - unreachable -inrange5060: - %t186 = extractvalue { ptr, i64, i64 } %t183, 0 - %t187 = getelementptr inbounds %S.ast.Node, ptr %t186, i64 0 - %t188 = load %S.ast.Node, ptr %t187 - store %S.ast.Node %t188, ptr %a189 - call void @finch.copy.S_ast_Node(ptr %a190, ptr %a189) - %t191 = load %S.ast.Node, ptr %a190 - %t192 = load i64, ptr %t181 - %t193 = add i64 %t192, 1 - call void @finch_arr_reserve(ptr %t180, i64 %t193, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t194 = load ptr, ptr %t180 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t192 - store %S.ast.Node %t191, ptr %t195 - store i64 %t193, ptr %t181 - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5061, label %ok5062 -panic5061: - call void @finch_panic(ptr @.str.3181, i64 2301, ptr @.str.3182) - unreachable -ok5062: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 10 - %t199 = load i64, ptr %a141 - %t200 = load { ptr, i64, i64 }, ptr %t198 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 %t199, %t201 - br i1 %t202, label %range5063, label %inrange5064 -range5063: - call void @finch_panic_index(ptr @.str.3183, i64 2301, i64 %t199, i64 %t201) - unreachable -inrange5064: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.gen.Scope, ptr %t203, i64 %t199 - %t205 = getelementptr inbounds %S.gen.Scope, ptr %t204, i32 0, i32 2 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i32 0, i32 1 - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic5065, label %ok5066 -panic5065: - call void @finch_panic(ptr @.str.3184, i64 2301, ptr @.str.3185) - unreachable -ok5066: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 25 - %t210 = load i64, ptr %t209 - %t211 = load i64, ptr %t206 - %t212 = add i64 %t211, 1 - call void @finch_arr_reserve(ptr %t205, i64 %t212, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t213 = load ptr, ptr %t205 - %t214 = getelementptr inbounds i64, ptr %t213, i64 %t211 - store i64 %t210, ptr %t214 - store i64 %t212, ptr %t206 - br label %endif5039 -else5038: - %t215 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.3186, i64 5, i64 0 }, ptr %a217 - %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) - %t219 = icmp ne i32 %t218, 0 - br label %logic.from5067 -logic.from5067: - br i1 %t219, label %logic.end5069, label %logic.rhs5068 -logic.rhs5068: - %t220 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3187, i64 8, i64 0 }, ptr %a222 - %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) - %t224 = icmp ne i32 %t223, 0 - br label %logic.rend5070 -logic.rend5070: - br label %logic.end5069 -logic.end5069: - %t225 = phi i1 [ true, %logic.from5067 ], [ %t224, %logic.rend5070 ] - br i1 %t225, label %then5071, label %else5072 -then5071: - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic5074, label %ok5075 -panic5074: - call void @finch_panic(ptr @.str.3188, i64 2303, ptr @.str.3189) - unreachable -ok5075: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 46 - %t229 = load i64, ptr %t228 - %t230 = icmp sgt i64 %t229, 0 - br i1 %t230, label %then5076, label %endif5078 -then5076: - %t231 = load ptr, ptr %a1 - %t232 = load %S.ast.Node, ptr %a2 - %t233 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3190, i64 27, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.fail(ptr %t231, %S.ast.Node %t232, { ptr, i64, i64 } %t237) - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - br label %endif5078 -endif5078: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic5079, label %ok5080 -panic5079: - call void @finch_panic(ptr @.str.3191, i64 2306, ptr @.str.3192) - unreachable -ok5080: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 12 - %t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1 - %t243 = load i64, ptr %t242 - %t244 = icmp eq i64 %t243, 0 - br i1 %t244, label %then5081, label %endif5083 -then5081: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t247, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3193, i64 31, i64 0 }, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t251) - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_drop(ptr %a252) - br label %endif5083 -endif5083: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic5084, label %ok5085 -panic5084: - call void @finch_panic(ptr @.str.3194, i64 2309, ptr @.str.3195) - unreachable -ok5085: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 12 - %t256 = load ptr, ptr %a1 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic5086, label %ok5087 -panic5086: - call void @finch_panic(ptr @.str.3196, i64 2309, ptr @.str.3197) - unreachable -ok5087: - %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 12 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load i64, ptr %t259 - %t261 = sub i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %t255 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range5088, label %inrange5089 -range5088: - call void @finch_panic_index(ptr @.str.3198, i64 2309, i64 %t261, i64 %t263) - unreachable -inrange5089: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds %S.gen.Loop, ptr %t265, i64 %t261 - %t267 = load %S.gen.Loop, ptr %t266 - store %S.gen.Loop %t267, ptr %a268 - call void @finch.copy.S_gen_Loop(ptr %a269, ptr %a268) - %t270 = load %S.gen.Loop, ptr %a269 - store %S.gen.Loop %t270, ptr %a271 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 3 - %t274 = load i64, ptr %t273 - call void @finch.gen.dropPending(ptr %t272, i64 %t274) - %t275 = load ptr, ptr %a1 - %t276 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 2 - %t277 = load i64, ptr %t276 - call void @finch.gen.unwind(ptr %t275, i64 %t277) - %t278 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.3199, i64 5, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - br i1 %t282, label %then5090, label %else5091 -then5090: - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - call void @finch.gen.br(ptr %t283, { ptr, i64, i64 } %t285) - br label %endif5092 -else5091: - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 0 - %t288 = load { ptr, i64, i64 }, ptr %t287 - call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t288) - br label %endif5092 -endif5092: - call void @finch.drop.S_gen_Loop(ptr %a271) - br label %endif5073 -else5072: - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Node, ptr %a2 - %t291 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3200, i64 18, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t289, %S.ast.Node %t290, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - br label %endif5073 -endif5073: - br label %endif5039 -endif5039: - br label %endif5036 -endif5036: - br label %endif5033 -endif5033: - br label %endif5030 -endif5030: - br label %endif5027 -endif5027: - br label %endif5024 -endif5024: - br label %endif5021 -endif5021: - br label %endif5009 -endif5009: - br label %endif5006 -endif5006: - br label %endif5003 -endif5003: - br label %endif5000 -endif5000: - call void @finch_str_drop(ptr %a18) - 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.gen.Val, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.gen.Val, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then5093, label %endif5095 -then5093: - %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 %range5096, label %inrange5097 -range5096: - call void @finch_panic_index(ptr @.str.3201, i64 2324, i64 0, i64 %t9) - unreachable -inrange5097: - %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.3202, 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 %then5098, label %endif5100 -then5098: - %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 %range5101, label %inrange5102 -range5101: - call void @finch_panic_index(ptr @.str.3203, i64 2326, i64 0, i64 %t26) - unreachable -inrange5102: - %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.3204, i64 46, i64 0 }) - br label %endif5100 -endif5100: - %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.3205, 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 %then5103, label %endif5105 -then5103: - %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 %range5106, label %inrange5107 -range5106: - call void @finch_panic_index(ptr @.str.3206, i64 2329, i64 0, i64 %t41) - unreachable -inrange5107: - %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.3207, 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.3208, i64 7, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t56) - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - br label %endif5105 -endif5105: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 - %t63 = load %S.ast.Type, ptr %t62 - %t64 = load ptr, ptr %a1 - %t65 = load %S.gen.Val, ptr %a15 - %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) - %t67 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t63, { ptr, i64, i64 } %t66, i1 false, i1 true) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - store { ptr, i64, i64 } %t67, ptr %a69 - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_gen_Val(ptr %a15) - ret void -endif5095: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = call %S.ast.Type @finch.gen.resolve(ptr %t70, %S.ast.Type %t72, %S.ast.Node %t73) - store %S.ast.Type %t74, ptr %a75 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load i64, ptr %t77 - %t79 = icmp eq i64 %t78, 0 - br i1 %t79, label %then5108, label %endif5110 -then5108: - %t80 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 0 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3209, i64 6, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.from5111 -logic.from5111: - br i1 %t85, label %logic.rhs5112, label %logic.end5113 -logic.rhs5112: - %t86 = load ptr, ptr %a1 - %t87 = load %S.ast.Type, ptr %a75 - %t88 = call i1 @finch.gen.hasDefaults(ptr %t86, %S.ast.Type %t87) - br label %logic.rend5114 -logic.rend5114: - br label %logic.end5113 -logic.end5113: - %t89 = phi i1 [ false, %logic.from5111 ], [ %t88, %logic.rend5114 ] - br i1 %t89, label %then5115, label %endif5117 -then5115: - store { ptr, i64, i64 } zeroinitializer, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 3 - %t95 = load { ptr, i64, i64 }, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 2 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = call i64 @finch.gen.findStruct(ptr %t93, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t97) - %t99 = load { ptr, i64, i64 }, ptr %a90 - %t100 = load { ptr, i64, i64 }, ptr %a91 - %t101 = load %S.ast.Node, ptr %a2 - %t102 = call %S.gen.Val @finch.gen.construct(ptr %t92, i64 %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100, %S.ast.Node %t101) - store %S.gen.Val %t102, ptr %a103 - %t104 = load ptr, ptr %a1 - %t105 = load %S.ast.Node, ptr %a2 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t107 = load { ptr, i64, i64 }, ptr %t106 - %t108 = load %S.ast.Type, ptr %a75 - %t109 = getelementptr inbounds %S.gen.Val, ptr %a103, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } %t107, %S.ast.Type %t108, { ptr, i64, i64 } %t110, i1 false, i1 true) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - call void @finch.drop.S_gen_Val(ptr %a103) - call void @finch.drop.arr_str(ptr %a91) - call void @finch.drop.arr_S_ast_Node(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5117: - %t113 = load ptr, ptr %a1 - %t114 = load %S.ast.Node, ptr %a2 - %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = load %S.ast.Type, ptr %a75 - %t118 = load %S.ast.Type, ptr %a75 - %t119 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t118) - %t120 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t113, %S.ast.Node %t114, { ptr, i64, i64 } %t116, %S.ast.Type %t117, { ptr, i64, i64 } %t119, i1 false, i1 true) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5110: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 0, %t127 - br i1 %t128, label %range5118, label %inrange5119 -range5118: - call void @finch_panic_index(ptr @.str.3210, i64 2346, i64 0, i64 %t127) - unreachable -inrange5119: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 0 - %t131 = load %S.ast.Node, ptr %t130 - %t132 = load %S.ast.Type, ptr %a75 - %t133 = call %S.gen.Val @finch.gen.exprWant(ptr %t124, %S.ast.Node %t131, %S.ast.Type %t132) - %t134 = load %S.ast.Type, ptr %a75 - %t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t136 = load { ptr, i64, i64 }, ptr %t135 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 0, %t137 - br i1 %t138, label %range5120, label %inrange5121 -range5120: - call void @finch_panic_index(ptr @.str.3211, i64 2346, i64 0, i64 %t137) - unreachable -inrange5121: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 0 - %t141 = load %S.ast.Node, ptr %t140 - %t142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t143 = load { ptr, i64, i64 }, ptr %t142 - store { ptr, i64, i64 } { ptr @.str.3212, i64 1, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.3213, i64 1, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t123, %S.gen.Val %t133, %S.ast.Type %t134, %S.ast.Node %t141, { ptr, i64, i64 } %t152) - store %S.gen.Val %t133, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_drop(ptr %a155) - store %S.gen.Val %t153, ptr %a156 - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a2 - %t159 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = load %S.ast.Type, ptr %a75 - %t162 = load ptr, ptr %a1 - %t163 = load %S.gen.Val, ptr %a156 - %t164 = call { ptr, i64, i64 } @finch.gen.own(ptr %t162, %S.gen.Val %t163) - %t165 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t160, %S.ast.Type %t161, { ptr, i64, i64 } %t164, i1 false, i1 true) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Val(ptr %a156) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -} - -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 %panic5122, label %ok5123 -panic5122: - call void @finch_panic(ptr @.str.3214, i64 2351, ptr @.str.3215) - unreachable -ok5123: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load ptr, ptr %a1 - %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t8 = load { ptr, i64, i64 }, ptr %t7 - %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 %range5124, label %inrange5125 -range5124: - call void @finch_panic_index(ptr @.str.3216, i64 2351, i64 %t11, i64 %t13) - unreachable -inrange5125: - %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 %then5126, label %endif5128 -then5126: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -endif5128: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic5129, label %ok5130 -panic5129: - call void @finch_panic(ptr @.str.3217, i64 2355, ptr @.str.3218) - unreachable -ok5130: - %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 %range5131, label %inrange5132 -range5131: - call void @finch_panic_index(ptr @.str.3219, i64 2355, i64 %t28, i64 %t30) - unreachable -inrange5132: - %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 %range5133, label %inrange5134 -range5133: - call void @finch_panic_index(ptr @.str.3220, i64 2355, i64 %t36, i64 %t38) - unreachable -inrange5134: - %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.cond5135 -each.cond5135: - %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.body5136, label %each.end5138 -each.body5136: - %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 %then5139, label %endif5141 -then5139: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 true -endif5141: - br label %each.step5137 -each.step5137: - %t56 = load i64, ptr %a43 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a43 - br label %each.cond5135 -each.end5138: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -} - -define internal void @finch.drop.S_gen_Place(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca %S.gen.Var, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca %S.ast.Type, align 16 - %a105 = alloca i1, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca i64, align 16 - %a122 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.gen.Var, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a141 = alloca %S.gen.Val, align 16 - %a152 = alloca %S.gen.Val, align 16 - %a158 = alloca i64, align 16 - %a164 = alloca %S.gen.Place, align 16 - %a179 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.gen.Val, align 16 - %a237 = alloca i64, align 16 - %a243 = alloca %S.gen.Place, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.gen.Val, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.gen.Val, align 16 - %a280 = alloca %S.gen.Val, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t4 = load { ptr, i64, i64 }, ptr %t3 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range5142, label %inrange5143 -range5142: - call void @finch_panic_index(ptr @.str.3221, i64 2364, i64 0, i64 %t5) - unreachable -inrange5143: - %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 %then5144, label %endif5146 -then5144: - %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.from5147 -logic.from5147: - br i1 %t25, label %logic.rhs5148, label %logic.end5149 -logic.rhs5148: - %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.3222, 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.rend5150 -logic.rend5150: - br label %logic.end5149 -logic.end5149: - %t32 = phi i1 [ false, %logic.from5147 ], [ %t31, %logic.rend5150 ] - br i1 %t32, label %then5151, label %endif5153 -then5151: - %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.3223, 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.3224, i64 18, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3225, i64 8, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_drop(ptr %a56) - br label %endif5153 -endif5153: - %t57 = load i64, ptr %a23 - %t58 = icmp sge i64 %t57, 0 - br label %logic.from5154 -logic.from5154: - br i1 %t58, label %logic.rhs5155, label %logic.end5156 -logic.rhs5155: - %t59 = load ptr, ptr %a1 - %t60 = load i64, ptr %a23 - %t61 = call %S.gen.Var @finch.gen.varAt(ptr %t59, i64 %t60) - %t62 = extractvalue %S.gen.Var %t61, 3 - store %S.gen.Var %t61, ptr %a63 - call void @finch.drop.S_gen_Var(ptr %a63) - br label %logic.rend5157 -logic.rend5157: - br label %logic.end5156 -logic.end5156: - %t64 = phi i1 [ false, %logic.from5154 ], [ %t62, %logic.rend5157 ] - br i1 %t64, label %then5158, label %endif5160 -then5158: - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Node, ptr %a2 - %t67 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3226, i64 19, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.3227, i64 18, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t65, %S.ast.Node %t66, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif5160 -endif5160: - br label %endif5146 -endif5146: - store { ptr, i64, i64 } { ptr @.str.3228, i64 9, i64 0 }, ptr %a78 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3229, i64 3, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %then5161, label %endif5163 -then5161: - %t85 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3230, i64 1, i64 0 }, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3231, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t94, ptr %a78 - store { ptr, i64, i64 } %t95, ptr %a96 - call void @finch_str_drop(ptr %a96) - br label %endif5163 -endif5163: - %t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.3232, i64 1, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then5164, label %endif5166 -then5164: - %t103 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3233, i64 4, i64 0 }) - store %S.ast.Type %t103, ptr %a104 - store i1 false, ptr %a105 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3234, i64 3, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then5167, label %endif5169 -then5167: - %t112 = load ptr, ptr %a1 - %t113 = load { ptr, i64, i64 }, ptr %a16 - %t114 = call i64 @finch.gen.lookup(ptr %t112, { ptr, i64, i64 } %t113) - store i64 %t114, ptr %a115 - %t116 = load i64, ptr %a115 - %t117 = icmp sge i64 %t116, 0 - br i1 %t117, label %then5170, label %endif5172 -then5170: - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a115 - %t120 = call %S.gen.Var @finch.gen.varAt(ptr %t118, i64 %t119) - %t121 = extractvalue %S.gen.Var %t120, 1 - store %S.ast.Type %t121, ptr %a122 - call void @finch.copy.S_ast_Type(ptr %a123, ptr %a122) - %t124 = load %S.ast.Type, ptr %a123 - store %S.gen.Var %t120, ptr %a125 - call void @finch.drop.S_gen_Var(ptr %a125) - %t126 = load %S.ast.Type, ptr %a104 - store %S.ast.Type %t124, ptr %a104 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - store i1 true, ptr %a105 - br label %endif5172 -endif5172: - br label %endif5169 -endif5169: - store %S.gen.Val zeroinitializer, ptr %a128 - %t129 = load i1, ptr %a105 - br i1 %t129, label %then5173, label %else5174 -then5173: - %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 %range5176, label %inrange5177 -range5176: - call void @finch_panic_index(ptr @.str.3235, i64 2392, i64 1, i64 %t133) - unreachable -inrange5177: - %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 = load %S.ast.Type, ptr %a104 - %t139 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t138) - %t140 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t139, ptr %a128 - store %S.gen.Val %t140, ptr %a141 - call void @finch.drop.S_gen_Val(ptr %a141) - br label %endif5175 -else5174: - %t142 = load ptr, ptr %a1 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load { ptr, i64, i64 }, ptr %t143 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 1, %t145 - br i1 %t146, label %range5178, label %inrange5179 -range5178: - call void @finch_panic_index(ptr @.str.3236, i64 2394, i64 1, i64 %t145) - unreachable -inrange5179: - %t147 = extractvalue { ptr, i64, i64 } %t144, 0 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 1 - %t149 = load %S.ast.Node, ptr %t148 - %t150 = call %S.gen.Val @finch.gen.expr(ptr %t142, %S.ast.Node %t149) - %t151 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t150, ptr %a128 - store %S.gen.Val %t151, ptr %a152 - call void @finch.drop.S_gen_Val(ptr %a152) - br label %endif5175 -endif5175: - %t153 = load ptr, ptr %a1 - %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic5180, label %ok5181 -panic5180: - call void @finch_panic(ptr @.str.3237, i64 2396, ptr @.str.3238) - unreachable -ok5181: - %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 11 - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i32 0, i32 1 - %t157 = load i64, ptr %t156 - store i64 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t159, %S.gen.Val %t160) - %t161 = load ptr, ptr %a1 - %t162 = load %S.ast.Node, ptr %a13 - %t163 = call %S.gen.Place @finch.gen.place(ptr %t161, %S.ast.Node %t162, i1 true) - store %S.gen.Place %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = load %S.gen.Val, ptr %a128 - %t167 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t168 = load %S.ast.Type, ptr %t167 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = load { ptr, i64, i64 }, ptr %t169 - %t171 = extractvalue { ptr, i64, i64 } %t170, 1 - %t172 = icmp uge i64 1, %t171 - br i1 %t172, label %range5182, label %inrange5183 -range5182: - call void @finch_panic_index(ptr @.str.3239, i64 2399, i64 1, i64 %t171) - unreachable -inrange5183: - %t173 = extractvalue { ptr, i64, i64 } %t170, 0 - %t174 = getelementptr inbounds %S.ast.Node, ptr %t173, i64 1 - %t175 = load %S.ast.Node, ptr %t174 - %t176 = load { ptr, i64, i64 }, ptr %a78 - %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t165, %S.gen.Val %t166, %S.ast.Type %t168, %S.ast.Node %t175, { ptr, i64, i64 } %t176) - %t178 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t177, ptr %a128 - store %S.gen.Val %t178, ptr %a179 - call void @finch.drop.S_gen_Val(ptr %a179) - %t180 = load ptr, ptr %a1 - %t181 = load %S.gen.Val, ptr %a128 - %t182 = call { ptr, i64, i64 } @finch.gen.own(ptr %t180, %S.gen.Val %t181) - store { ptr, i64, i64 } %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t186 = load %S.ast.Type, ptr %t185 - %t187 = call i1 @finch.gen.owning(ptr %t184, %S.ast.Type %t186) - br i1 %t187, label %then5184, label %else5185 -then5184: - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t191 = load %S.ast.Type, ptr %t190 - %t192 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t189, %S.ast.Type %t191) - %t193 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t195, ptr %a197 - %t198 = load ptr, ptr %a1 - %t199 = load ptr, ptr %a1 - %t200 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t201 = load %S.ast.Type, ptr %t200 - %t202 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t201) - %t203 = load { ptr, i64, i64 }, ptr %a183 - %t204 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t205 = load { ptr, i64, i64 }, ptr %t204 - call void @finch.gen.store(ptr %t198, { ptr, i64, i64 } %t202, { ptr, i64, i64 } %t203, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a197 - %t209 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t210 = load %S.ast.Type, ptr %t209 - call void @finch.gen.dropValue(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t210) - call void @finch_str_drop(ptr %a197) - br label %endif5186 -else5185: - %t211 = load ptr, ptr %a1 - %t212 = load ptr, ptr %a1 - %t213 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t214 = load %S.ast.Type, ptr %t213 - %t215 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t212, %S.ast.Type %t214) - %t216 = load { ptr, i64, i64 }, ptr %a183 - %t217 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - call void @finch.gen.store(ptr %t211, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - br label %endif5186 -endif5186: - %t220 = load ptr, ptr %a1 - %t221 = load i64, ptr %a158 - call void @finch.gen.heldEnd(ptr %t220, i64 %t221) - call void @finch_str_drop(ptr %a183) - call void @finch.drop.S_gen_Place(ptr %a164) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Type(ptr %a104) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -endif5166: - %t222 = load ptr, ptr %a1 - %t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t224 = load { ptr, i64, i64 }, ptr %t223 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 1, %t225 - br i1 %t226, label %range5187, label %inrange5188 -range5187: - call void @finch_panic_index(ptr @.str.3240, i64 2411, i64 1, i64 %t225) - unreachable -inrange5188: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.ast.Node, ptr %t227, i64 1 - %t229 = load %S.ast.Node, ptr %t228 - %t230 = call %S.gen.Val @finch.gen.expr(ptr %t222, %S.ast.Node %t229) - store %S.gen.Val %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = icmp eq ptr %t232, null - br i1 %t233, label %panic5189, label %ok5190 -panic5189: - call void @finch_panic(ptr @.str.3241, i64 2412, ptr @.str.3242) - unreachable -ok5190: - %t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 11 - %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t236 = load i64, ptr %t235 - store i64 %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = load %S.gen.Val, ptr %a231 - call void @finch.gen.hold(ptr %t238, %S.gen.Val %t239) - %t240 = load ptr, ptr %a1 - %t241 = load %S.ast.Node, ptr %a13 - %t242 = call %S.gen.Place @finch.gen.place(ptr %t240, %S.ast.Node %t241, i1 true) - store %S.gen.Place %t242, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load ptr, ptr %a1 - %t246 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t245, %S.ast.Type %t247) - %t249 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.load(ptr %t244, { ptr, i64, i64 } %t248, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 - %t254 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t253, %S.ast.Type %t258, 1 - store %S.gen.Val %t259, ptr %a260 - %t261 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t262 = load { ptr, i64, i64 }, ptr %t261 - store { ptr, i64, i64 } %t262, ptr %a263 - call void @finch_str_sub(ptr %a264, ptr %a263, i64 0, i64 1, ptr @.str.3243, i64 2416) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t265, ptr %a266 - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load { ptr, i64, i64 }, ptr %a266 - %t270 = load %S.gen.Val, ptr %a260 - %t271 = load %S.gen.Val, ptr %a231 - %t272 = load %S.ast.Node, ptr %a2 - %t273 = call %S.gen.Val @finch.gen.arith(ptr %t268, { ptr, i64, i64 } %t269, %S.gen.Val %t270, %S.gen.Val %t271, %S.ast.Node %t272) - %t274 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t275 = load %S.ast.Type, ptr %t274 - %t276 = load %S.ast.Node, ptr %a2 - %t277 = load { ptr, i64, i64 }, ptr %a78 - %t278 = call %S.gen.Val @finch.gen.coerce(ptr %t267, %S.gen.Val %t273, %S.ast.Type %t275, %S.ast.Node %t276, { ptr, i64, i64 } %t277) - store %S.gen.Val %t273, ptr %a279 - call void @finch.drop.S_gen_Val(ptr %a279) - store %S.gen.Val %t278, ptr %a280 - %t281 = load ptr, ptr %a1 - %t282 = load %S.gen.Val, ptr %a280 - %t283 = call { ptr, i64, i64 } @finch.gen.own(ptr %t281, %S.gen.Val %t282) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t288 = load %S.ast.Type, ptr %t287 - %t289 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t286, %S.ast.Type %t288) - %t290 = load { ptr, i64, i64 }, ptr %a284 - %t291 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } %t289, { ptr, i64, i64 } %t290, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load ptr, ptr %a1 - %t295 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t296 = load %S.ast.Type, ptr %t295 - %t297 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t296) - br i1 %t297, label %then5191, label %endif5193 -then5191: - %t298 = load ptr, ptr %a1 - %t299 = getelementptr inbounds %S.gen.Val, ptr %a260, i32 0, i32 0 - %t300 = load { ptr, i64, i64 }, ptr %t299 - %t301 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t302 = load %S.ast.Type, ptr %t301 - call void @finch.gen.dropValue(ptr %t298, { ptr, i64, i64 } %t300, %S.ast.Type %t302) - br label %endif5193 -endif5193: - %t303 = load ptr, ptr %a1 - %t304 = load i64, ptr %a237 - call void @finch.gen.heldEnd(ptr %t303, i64 %t304) - call void @finch_str_drop(ptr %a284) - call void @finch.drop.S_gen_Val(ptr %a280) - call void @finch_str_drop(ptr %a266) - call void @finch.drop.S_gen_Val(ptr %a260) - call void @finch.drop.S_gen_Place(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a231) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -} - -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 - %a10 = alloca %S.gen.Val, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Node, ptr %a2 - %t6 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t5) - %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3244, 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.3245, i64 11, i64 0 }) - store %S.gen.Val %t6, ptr %a10 - call void @finch.drop.S_gen_Val(ptr %a10) - store %S.ast.Type %t7, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - %t12 = extractvalue %S.gen.Val %t9, 0 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store %S.gen.Val %t9, ptr %a16 - call void @finch.drop.S_gen_Val(ptr %a16) - ret { ptr, i64, i64 } %t15 -} - -define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) { -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 %range5194, label %inrange5195 -range5194: - call void @finch_panic_index(ptr @.str.3246, i64 2431, i64 0, i64 %t6) - unreachable -inrange5195: - %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.3247, 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.3248, 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.3249, 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 %then5196, label %else5197 -then5196: - %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 %endif5198 -else5197: - %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 %endif5198 -endif5198: - %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 %range5199, label %inrange5200 -range5199: - call void @finch_panic_index(ptr @.str.3250, i64 2441, i64 1, i64 %t39) - unreachable -inrange5200: - %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 %panic5201, label %ok5202 -panic5201: - call void @finch_panic(ptr @.str.3251, i64 2442, ptr @.str.3252) - unreachable -ok5202: - %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 %then5203, label %else5204 -then5203: - %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 %range5206, label %inrange5207 -range5206: - call void @finch_panic_index(ptr @.str.3253, i64 2446, i64 2, i64 %t61) - unreachable -inrange5207: - %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.from5208 -logic.from5208: - br i1 %t66, label %logic.end5210, label %logic.rhs5209 -logic.rhs5209: - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic5211, label %ok5212 -panic5211: - call void @finch_panic(ptr @.str.3254, i64 2447, ptr @.str.3255) - unreachable -ok5212: - %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.rend5213 -logic.rend5213: - br label %logic.end5210 -logic.end5210: - %t72 = phi i1 [ true, %logic.from5208 ], [ %t71, %logic.rend5213 ] - 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 %endif5205 -else5204: - store i1 true, ptr %a49 - br label %endif5205 -endif5205: - %t75 = load i1, ptr %a49 - br i1 %t75, label %then5214, label %endif5216 -then5214: - %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 %endif5216 -endif5216: - call void @finch_str_drop(ptr %a21) - call void @finch_str_drop(ptr %a18) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a12) - ret void -} - -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 - %a99 = alloca i1, align 16 - %a118 = alloca %S.gen.Loop, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3256, 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.3257, 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.3258, 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 %range5217, label %inrange5218 -range5217: - call void @finch_panic_index(ptr @.str.3259, i64 2463, i64 0, i64 %t18) - unreachable -inrange5218: - %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.3260, 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.from5219 -logic.from5219: - br i1 %t27, label %logic.rhs5220, label %logic.end5221 -logic.rhs5220: - %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 %range5222, label %inrange5223 -range5222: - call void @finch_panic_index(ptr @.str.3261, i64 2463, i64 0, i64 %t30) - unreachable -inrange5223: - %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.3262, 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.rend5224 -logic.rend5224: - br label %logic.end5221 -logic.end5221: - %t40 = phi i1 [ false, %logic.from5219 ], [ %t39, %logic.rend5224 ] - 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 %range5225, label %inrange5226 -range5225: - call void @finch_panic_index(ptr @.str.3263, i64 2464, i64 0, i64 %t45) - unreachable -inrange5226: - %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 %then5227, label %else5228 -then5227: - %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 %endif5229 -else5228: - %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 %endif5229 -endif5229: - %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 %panic5230, label %ok5231 -panic5230: - call void @finch_panic(ptr @.str.3264, i64 2471, ptr @.str.3265) - unreachable -ok5231: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 12 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t65, ptr %a66 - 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 %panic5232, label %ok5233 -panic5232: - call void @finch_panic(ptr @.str.3266, i64 2471, ptr @.str.3267) - unreachable -ok5233: - %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 ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic5234, label %ok5235 -panic5234: - call void @finch_panic(ptr @.str.3268, i64 2471, ptr @.str.3269) - unreachable -ok5235: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 11 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.gen.Loop %t80, i64 %t85, 3 - %t87 = load i64, ptr %t64 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t63, i64 %t88, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t63 - %t90 = getelementptr inbounds %S.gen.Loop, ptr %t89, i64 %t87 - store %S.gen.Loop %t86, ptr %t90 - store i64 %t88, ptr %t64 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 1, %t93 - br i1 %t94, label %range5236, label %inrange5237 -range5236: - call void @finch_panic_index(ptr @.str.3270, i64 2472, i64 1, i64 %t93) - unreachable -inrange5237: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 1 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i1 @finch.gen.countBreaks(%S.ast.Node %t97) - store i1 %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t102 = load { ptr, i64, i64 }, ptr %t101 - %t103 = extractvalue { ptr, i64, i64 } %t102, 1 - %t104 = icmp uge i64 1, %t103 - br i1 %t104, label %range5238, label %inrange5239 -range5238: - call void @finch_panic_index(ptr @.str.3271, i64 2473, i64 1, i64 %t103) - unreachable -inrange5239: - %t105 = extractvalue { ptr, i64, i64 } %t102, 0 - %t106 = getelementptr inbounds %S.ast.Node, ptr %t105, i64 1 - %t107 = load %S.ast.Node, ptr %t106 - call void @finch.gen.block(ptr %t100, %S.ast.Node %t107, i1 true) - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic5240, label %ok5241 -panic5240: - call void @finch_panic(ptr @.str.3272, i64 2474, ptr @.str.3273) - unreachable -ok5241: - %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 12 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp eq i64 %t112, 0 - br i1 %t113, label %panic5242, label %ok5243 -panic5242: - call void @finch_panic(ptr @.str.3274, i64 2474, ptr @.str.3275) - unreachable -ok5243: - %t114 = sub i64 %t112, 1 - %t115 = load ptr, ptr %t110 - %t116 = getelementptr inbounds %S.gen.Loop, ptr %t115, i64 %t114 - %t117 = load %S.gen.Loop, ptr %t116 - store i64 %t114, ptr %t111 - store %S.gen.Loop %t117, ptr %a118 - call void @finch.drop.S_gen_Loop(ptr %a118) - %t119 = load ptr, ptr %a1 - %t120 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.br(ptr %t119, { ptr, i64, i64 } %t120) - %t121 = load i1, ptr %a41 - %t122 = xor i1 %t121, true - br label %logic.from5244 -logic.from5244: - br i1 %t122, label %logic.end5246, label %logic.rhs5245 -logic.rhs5245: - %t123 = load i1, ptr %a99 - br label %logic.rend5247 -logic.rend5247: - br label %logic.end5246 -logic.end5246: - %t124 = phi i1 [ true, %logic.from5244 ], [ %t123, %logic.rend5247 ] - br i1 %t124, label %then5248, label %endif5250 -then5248: - %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a11 - call void @finch.gen.label(ptr %t125, { ptr, i64, i64 } %t126) - br label %endif5250 -endif5250: - call void @finch_str_drop(ptr %a51) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a5) - ret void -} - -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.3276, 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 %then5251, label %endif5253 -then5251: - ret i1 true -endif5253: - %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.3277, 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.from5254 -logic.from5254: - br i1 %t13, label %logic.end5256, label %logic.rhs5255 -logic.rhs5255: - %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.3278, 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.rend5257 -logic.rend5257: - br label %logic.end5256 -logic.end5256: - %t20 = phi i1 [ true, %logic.from5254 ], [ %t19, %logic.rend5257 ] - br label %logic.from5258 -logic.from5258: - br i1 %t20, label %logic.end5260, label %logic.rhs5259 -logic.rhs5259: - %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.3279, 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.rend5261 -logic.rend5261: - br label %logic.end5260 -logic.end5260: - %t27 = phi i1 [ true, %logic.from5258 ], [ %t26, %logic.rend5261 ] - br i1 %t27, label %then5262, label %endif5264 -then5262: - ret i1 false -endif5264: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a29 - br label %each.cond5265 -each.cond5265: - %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.body5266, label %each.end5268 -each.body5266: - %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 %then5269, label %endif5271 -then5269: - ret i1 true -endif5271: - br label %each.step5267 -each.step5267: - %t40 = load i64, ptr %a29 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a29 - br label %each.cond5265 -each.end5268: - 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 - %a22 = alloca %S.gen.Val, align 16 - %a23 = alloca %S.ast.Type, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.gen.Val, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.gen.Val, align 16 - %a50 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca %S.gen.Val, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.gen.Loop, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5272, label %inrange5273 -range5272: - call void @finch_panic_index(ptr @.str.3280, i64 2498, i64 0, i64 %t7) - unreachable -inrange5273: - %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.3281, 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 %range5274, label %inrange5275 -range5274: - call void @finch_panic_index(ptr @.str.3282, i64 2498, i64 0, i64 %t16) - unreachable -inrange5275: - %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.3283, i64 20, i64 0 }) - store %S.gen.Val %t12, ptr %a22 - call void @finch.drop.S_gen_Val(ptr %a22) - store %S.ast.Type %t13, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - %t24 = extractvalue %S.gen.Val %t21, 0 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - store %S.gen.Val %t21, ptr %a28 - call void @finch.drop.S_gen_Val(ptr %a28) - store { ptr, i64, i64 } %t27, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = load ptr, ptr %a1 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t33 = load { ptr, i64, i64 }, ptr %t32 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 1, %t34 - br i1 %t35, label %range5276, label %inrange5277 -range5276: - call void @finch_panic_index(ptr @.str.3284, i64 2499, i64 1, i64 %t34) - unreachable -inrange5277: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 1 - %t38 = load %S.ast.Node, ptr %t37 - %t39 = call %S.gen.Val @finch.gen.expr(ptr %t31, %S.ast.Node %t38) - %t40 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3285, i64 3, i64 0 }) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 1, %t43 - br i1 %t44, label %range5278, label %inrange5279 -range5278: - call void @finch_panic_index(ptr @.str.3286, i64 2499, i64 1, i64 %t43) - unreachable -inrange5279: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Node, ptr %t45, i64 1 - %t47 = load %S.ast.Node, ptr %t46 - %t48 = call %S.gen.Val @finch.gen.coerce(ptr %t30, %S.gen.Val %t39, %S.ast.Type %t40, %S.ast.Node %t47, { ptr, i64, i64 } { ptr @.str.3287, i64 18, i64 0 }) - store %S.gen.Val %t39, ptr %a49 - call void @finch.drop.S_gen_Val(ptr %a49) - store %S.ast.Type %t40, ptr %a50 - call void @finch.drop.S_ast_Type(ptr %a50) - %t51 = extractvalue %S.gen.Val %t48, 0 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - store %S.gen.Val %t48, ptr %a55 - call void @finch.drop.S_gen_Val(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t57) - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3288, i64 3, i64 0 }) - %t63 = load { ptr, i64, i64 }, ptr %a29 - %t64 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t62, { ptr, i64, i64 } %t63, i1 true, i1 false) - store %S.ast.Type %t62, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t64, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.3289, i64 8, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t70, { ptr, i64, i64 } { ptr @.str.3290, i64 8, i64 0 }) - store { ptr, i64, i64 } %t71, ptr %a72 - %t73 = load ptr, ptr %a1 - %t74 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t73, { ptr, i64, i64 } { ptr @.str.3291, i64 8, i64 0 }) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3292, i64 7, i64 0 }) - store { ptr, i64, i64 } %t77, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t79, { ptr, i64, i64 } %t80) - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t81, { ptr, i64, i64 } %t82) - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a66 - %t85 = call { ptr, i64, i64 } @finch.gen.load(ptr %t83, { ptr, i64, i64 } { ptr @.str.3293, i64 3, i64 0 }, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.3294, i64 13, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.3295, i64 2, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t104, ptr %a106 - %t107 = load ptr, ptr %a1 - %t108 = load { ptr, i64, i64 }, ptr %a106 - %t109 = load { ptr, i64, i64 }, ptr %a72 - %t110 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.condBr(ptr %t107, { ptr, i64, i64 } %t108, { ptr, i64, i64 } %t109, { ptr, i64, i64 } %t110) - %t111 = load ptr, ptr %a1 - %t112 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.label(ptr %t111, { ptr, i64, i64 } %t112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic5280, label %ok5281 -panic5280: - call void @finch_panic(ptr @.str.3296, i64 2512, ptr @.str.3297) - unreachable -ok5281: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 12 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t120, 0 - %t122 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_copy(ptr %a124, ptr %a123) - %t125 = load { ptr, i64, i64 }, ptr %a124 - %t126 = insertvalue %S.gen.Loop %t121, { ptr, i64, i64 } %t125, 1 - %t127 = load ptr, ptr %a1 - %t128 = icmp eq ptr %t127, null - br i1 %t128, label %panic5282, label %ok5283 -panic5282: - call void @finch_panic(ptr @.str.3298, i64 2512, ptr @.str.3299) - unreachable -ok5283: - %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 10 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.Loop %t126, i64 %t131, 2 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic5284, label %ok5285 -panic5284: - call void @finch_panic(ptr @.str.3300, i64 2512, ptr @.str.3301) - unreachable -ok5285: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 11 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = insertvalue %S.gen.Loop %t132, i64 %t137, 3 - %t139 = load i64, ptr %t116 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t115, i64 %t140, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t115 - %t142 = getelementptr inbounds %S.gen.Loop, ptr %t141, i64 %t139 - store %S.gen.Loop %t138, ptr %t142 - store i64 %t140, ptr %t116 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 2, %t146 - br i1 %t147, label %range5286, label %inrange5287 -range5286: - call void @finch_panic_index(ptr @.str.3302, i64 2513, i64 2, i64 %t146) - unreachable -inrange5287: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i64 2 - %t150 = load %S.ast.Node, ptr %t149 - call void @finch.gen.block(ptr %t143, %S.ast.Node %t150, i1 true) - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic5288, label %ok5289 -panic5288: - call void @finch_panic(ptr @.str.3303, i64 2514, ptr @.str.3304) - unreachable -ok5289: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 12 - %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i32 0, i32 1 - %t155 = load i64, ptr %t154 - %t156 = icmp eq i64 %t155, 0 - br i1 %t156, label %panic5290, label %ok5291 -panic5290: - call void @finch_panic(ptr @.str.3305, i64 2514, ptr @.str.3306) - unreachable -ok5291: - %t157 = sub i64 %t155, 1 - %t158 = load ptr, ptr %t153 - %t159 = getelementptr inbounds %S.gen.Loop, ptr %t158, i64 %t157 - %t160 = load %S.gen.Loop, ptr %t159 - store i64 %t157, ptr %t154 - store %S.gen.Loop %t160, ptr %a161 - call void @finch.drop.S_gen_Loop(ptr %a161) - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.br(ptr %t162, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.label(ptr %t164, { ptr, i64, i64 } %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a66 - %t168 = call { ptr, i64, i64 } @finch.gen.load(ptr %t166, { ptr, i64, i64 } { ptr @.str.3307, i64 3, i64 0 }, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3309, i64 8, i64 0 }, ptr %a174 - store { ptr, i64, i64 } %t172, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.3310, i64 3, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t171, { ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.store(ptr %t170, { ptr, i64, i64 } { ptr @.str.3308, i64 3, i64 0 }, { ptr, i64, i64 } %t182, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t186, { ptr, i64, i64 } %t187) - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189) - %t190 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t190) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a106) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a72) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch_str_drop(ptr %a56) - call void @finch_str_drop(ptr %a29) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i1, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca %S.gen.Loop, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5292, label %inrange5293 -range5292: - call void @finch_panic_index(ptr @.str.3311, i64 2526, i64 0, i64 %t8) - unreachable -inrange5293: - %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 %range5294, label %inrange5295 -range5294: - call void @finch_panic_index(ptr @.str.3312, i64 2527, i64 1, i64 %t19) - unreachable -inrange5295: - %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.from5296 -logic.from5296: - br i1 %t28, label %logic.rhs5297, label %logic.end5298 -logic.rhs5297: - %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 %range5299, label %inrange5300 -range5299: - call void @finch_panic_index(ptr @.str.3313, i64 2528, i64 0, i64 %t32) - unreachable -inrange5300: - %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 %range5301, label %inrange5302 -range5301: - call void @finch_panic_index(ptr @.str.3314, i64 2528, i64 1, i64 %t40) - unreachable -inrange5302: - %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) - store { ptr, i64, i64 } %t37, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %logic.rend5303 -logic.rend5303: - br label %logic.end5298 -logic.end5298: - %t47 = phi i1 [ false, %logic.from5296 ], [ %t45, %logic.rend5303 ] - store i1 %t47, ptr %a48 - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.3315, i64 3, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.3316, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3317, i64 1, i64 0 }, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } { ptr @.str.3318, i64 0, i64 0 }, ptr %a54 - %t55 = load i1, ptr %a5 - br i1 %t55, label %then5304, label %endif5306 -then5304: - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a4 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } { ptr @.str.3320, i64 23, i64 0 }, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t65, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.3321, i64 6, i64 0 }, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - %t71 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t70, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.3322, i64 14, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.3319, i64 3, i64 0 }, { ptr, i64, i64 } %t82) - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t84, ptr %a54 - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - br label %endif5306 -endif5306: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3323, 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.3324, i64 9, i64 0 }) - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = load ptr, ptr %a1 - %t95 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t94, { ptr, i64, i64 } { ptr @.str.3325, i64 8, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t97, { ptr, i64, i64 } { ptr @.str.3326, i64 8, i64 0 }) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t100, { ptr, i64, i64 } { ptr @.str.3327, i64 7, i64 0 }) - store { ptr, i64, i64 } %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load i1, ptr %a5 - br label %logic.from5307 -logic.from5307: - br i1 %t107, label %logic.rhs5308, label %logic.end5309 -logic.rhs5308: - %t108 = load i1, ptr %a48 - br label %logic.rend5310 -logic.rend5310: - br label %logic.end5309 -logic.end5309: - %t109 = phi i1 [ false, %logic.from5307 ], [ %t108, %logic.rend5310 ] - br i1 %t109, label %then5311, label %endif5313 -then5311: - %t110 = load ptr, ptr %a1 - %t111 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t110, { ptr, i64, i64 } { ptr @.str.3328, i64 11, i64 0 }) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t113, { ptr, i64, i64 } { ptr @.str.3329, i64 8, i64 0 }) - store { ptr, i64, i64 } %t114, ptr %a115 - %t116 = load ptr, ptr %a1 - %t117 = load ptr, ptr %a1 - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Type, ptr %a4 - %t120 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t118, %S.ast.Type %t119) - store { ptr, i64, i64 } { ptr @.str.3331, i64 23, i64 0 }, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3332, i64 6, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3333, i64 14, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call { ptr, i64, i64 } @finch.gen.op(ptr %t117, { ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.3330, i64 3, i64 0 }, { ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.3334, i64 12, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.3335, i64 2, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t158, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t164) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a112 - %t168 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.condBr(ptr %t147, { ptr, i64, i64 } %t165, { ptr, i64, i64 } %t167, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t165, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load ptr, ptr %a1 - %t171 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.gen.label(ptr %t170, { ptr, i64, i64 } %t171) - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load ptr, ptr %a1 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic5314, label %ok5315 -panic5314: - call void @finch_panic(ptr @.str.3337, i64 2549, ptr @.str.3338) - unreachable -ok5315: - %t176 = getelementptr inbounds %S.gen.Gen, ptr %t174, i32 0, i32 1 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t178 = load i64, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %t176 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range5316, label %inrange5317 -range5316: - call void @finch_panic_index(ptr @.str.3339, i64 2549, i64 %t178, i64 %t180) - unreachable -inrange5317: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178 - %t184 = load { ptr, i64, i64 }, ptr %t183 - %t185 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t173, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } { ptr @.str.3336, i64 33, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.3340, i64 6, i64 0 }, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t190, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t197 = load i64, ptr %t196 - call void @finch_str_from_int(ptr %a198, i64 %t197) - %t199 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t195, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t195, ptr %a203 - call void @finch_str_drop(ptr %a203) - store { ptr, i64, i64 } %t199, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.3341, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.emit(ptr %t172, { ptr, i64, i64 } %t210) - store { ptr, i64, i64 } %t210, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t212, { ptr, i64, i64 } { ptr @.str.3342, i64 11, i64 0 }) - %t213 = load ptr, ptr %a1 - %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic5318, label %ok5319 -panic5318: - call void @finch_panic(ptr @.str.3343, i64 2551, ptr @.str.3344) - unreachable -ok5319: - %t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 9 - store i1 true, ptr %t215 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) - call void @finch_str_drop(ptr %a146) - call void @finch_str_drop(ptr %a115) - call void @finch_str_drop(ptr %a112) - br label %endif5313 -endif5313: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a51 - %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t218, { ptr, i64, i64 } { ptr @.str.3345, 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, ptr %a1 - %t225 = load %S.ast.Type, ptr %a4 - %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) - store { ptr, i64, i64 } { ptr @.str.3347, i64 23, i64 0 }, ptr %a228 - store { ptr, i64, i64 } %t226, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3348, i64 6, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t236, ptr %a239 - store { ptr, i64, i64 } %t237, ptr %a240 - call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) - store { ptr, i64, i64 } %t236, ptr %a241 - call void @finch_str_drop(ptr %a241) - %t242 = load { ptr, i64, i64 }, ptr %a238 - store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.3349, i64 14, i64 0 }, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = load { ptr, i64, i64 }, ptr %a243 - %t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t247, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } { ptr @.str.3346, i64 3, i64 0 }, { ptr, i64, i64 } %t248) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - store { ptr, i64, i64 } %t250, ptr %a252 - %t253 = load ptr, ptr %a1 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3350, i64 13, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.3351, i64 2, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t264, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a93 - %t274 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.condBr(ptr %t253, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t273, { ptr, i64, i64 } %t274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load ptr, ptr %a1 - %t277 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.label(ptr %t276, { ptr, i64, i64 } %t277) - %t278 = load ptr, ptr %a1 - %t279 = load { ptr, i64, i64 }, ptr %a3 - %t280 = load %S.ast.Type, ptr %a4 - %t281 = load { ptr, i64, i64 }, ptr %a221 - %t282 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t278, { ptr, i64, i64 } %t279, %S.ast.Type %t280, { ptr, i64, i64 } %t281) - store { ptr, i64, i64 } %t282, ptr %a283 - %t284 = load ptr, ptr %a1 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a283 - %t287 = load %S.ast.Type, ptr %a4 - %t288 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t285, { ptr, i64, i64 } %t286, %S.ast.Type %t287, i64 0) - %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t284, { ptr, i64, i64 } { ptr @.str.3352, i64 3, i64 0 }, { ptr, i64, i64 } %t288) - store { ptr, i64, i64 } %t288, ptr %a290 - call void @finch_str_drop(ptr %a290) - store { ptr, i64, i64 } %t289, ptr %a291 - %t292 = load ptr, ptr %a1 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.3353, i64 12, i64 0 }, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.3354, i64 3, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = call { ptr, i64, i64 } @finch.gen.op(ptr %t293, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t303, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a99 - %t307 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.condBr(ptr %t292, { ptr, i64, i64 } %t304, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t304, ptr %a308 - call void @finch_str_drop(ptr %a308) - %t309 = load ptr, ptr %a1 - %t310 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.label(ptr %t309, { ptr, i64, i64 } %t310) - %t311 = load ptr, ptr %a1 - %t312 = icmp eq ptr %t311, null - br i1 %t312, label %panic5320, label %ok5321 -panic5320: - call void @finch_panic(ptr @.str.3355, i64 2562, ptr @.str.3356) - unreachable -ok5321: - %t313 = getelementptr inbounds %S.gen.Gen, ptr %t311, i32 0, i32 12 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i32 0, i32 1 - %t315 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t315, ptr %a316 - call void @finch_str_copy(ptr %a317, ptr %a316) - %t318 = load { ptr, i64, i64 }, ptr %a317 - %t319 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t318, 0 - %t320 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_copy(ptr %a322, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - %t324 = insertvalue %S.gen.Loop %t319, { ptr, i64, i64 } %t323, 1 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic5322, label %ok5323 -panic5322: - call void @finch_panic(ptr @.str.3357, i64 2562, ptr @.str.3358) - unreachable -ok5323: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 10 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i32 0, i32 1 - %t329 = load i64, ptr %t328 - %t330 = insertvalue %S.gen.Loop %t324, i64 %t329, 2 - %t331 = load ptr, ptr %a1 - %t332 = icmp eq ptr %t331, null - br i1 %t332, label %panic5324, label %ok5325 -panic5324: - call void @finch_panic(ptr @.str.3359, i64 2562, ptr @.str.3360) - unreachable -ok5325: - %t333 = getelementptr inbounds %S.gen.Gen, ptr %t331, i32 0, i32 11 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 - %t335 = load i64, ptr %t334 - %t336 = insertvalue %S.gen.Loop %t330, i64 %t335, 3 - %t337 = load i64, ptr %t314 - %t338 = add i64 %t337, 1 - call void @finch_arr_reserve(ptr %t313, i64 %t338, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t339 = load ptr, ptr %t313 - %t340 = getelementptr inbounds %S.gen.Loop, ptr %t339, i64 %t337 - store %S.gen.Loop %t336, ptr %t340 - store i64 %t338, ptr %t314 - %t341 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t341) - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a16 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a283 - %t348 = load %S.ast.Type, ptr %a4 - %t349 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t346, { ptr, i64, i64 } %t347, %S.ast.Type %t348, i64 1) - %t350 = call { ptr, i64, i64 } @finch.gen.load(ptr %t342, { ptr, i64, i64 } %t345, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t345, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_drop(ptr %a352) - store { ptr, i64, i64 } %t350, ptr %a353 - %t354 = load i1, ptr %a48 - br i1 %t354, label %then5326, label %endif5328 -then5326: - %t355 = load ptr, ptr %a1 - %t356 = load { ptr, i64, i64 }, ptr %a353 - %t357 = load %S.ast.Type, ptr %a16 - %t358 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t355, { ptr, i64, i64 } %t356, %S.ast.Type %t357) - %t359 = load { ptr, i64, i64 }, ptr %a353 - store { ptr, i64, i64 } %t358, ptr %a353 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif5328 -endif5328: - %t361 = load ptr, ptr %a1 - %t362 = load %S.ast.Node, ptr %a2 - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - %t365 = load %S.ast.Type, ptr %a16 - %t366 = load { ptr, i64, i64 }, ptr %a353 - %t367 = load i1, ptr %a48 - %t368 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t364, %S.ast.Type %t365, { ptr, i64, i64 } %t366, i1 true, i1 %t367) - store { ptr, i64, i64 } %t368, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load i64, ptr %t371 - %t373 = icmp sgt i64 %t372, 0 - br i1 %t373, label %then5329, label %endif5331 -then5329: - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a27 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - %t378 = load ptr, ptr %a1 - %t379 = load { ptr, i64, i64 }, ptr %a283 - %t380 = load %S.ast.Type, ptr %a4 - %t381 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t378, { ptr, i64, i64 } %t379, %S.ast.Type %t380, i64 2) - %t382 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t377, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t377, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t381, ptr %a384 - call void @finch_str_drop(ptr %a384) - store { ptr, i64, i64 } %t382, ptr %a385 - %t386 = load i1, ptr %a48 - br i1 %t386, label %then5332, label %endif5334 -then5332: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a385 - %t389 = load %S.ast.Type, ptr %a27 - %t390 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t387, { ptr, i64, i64 } %t388, %S.ast.Type %t389) - %t391 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a385 - store { ptr, i64, i64 } %t391, ptr %a392 - call void @finch_str_drop(ptr %a392) - br label %endif5334 -endif5334: - %t393 = load ptr, ptr %a1 - %t394 = load %S.ast.Node, ptr %a2 - %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = load %S.ast.Type, ptr %a27 - %t398 = load { ptr, i64, i64 }, ptr %a385 - %t399 = load i1, ptr %a48 - %t400 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t393, %S.ast.Node %t394, { ptr, i64, i64 } %t396, %S.ast.Type %t397, { ptr, i64, i64 } %t398, i1 true, i1 %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - call void @finch_str_drop(ptr %a401) - call void @finch_str_drop(ptr %a385) - br label %endif5331 -endif5331: - %t402 = load ptr, ptr %a1 - %t403 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t404 = load { ptr, i64, i64 }, ptr %t403 - %t405 = extractvalue { ptr, i64, i64 } %t404, 1 - %t406 = icmp uge i64 1, %t405 - br i1 %t406, label %range5335, label %inrange5336 -range5335: - call void @finch_panic_index(ptr @.str.3361, i64 2576, i64 1, i64 %t405) - unreachable -inrange5336: - %t407 = extractvalue { ptr, i64, i64 } %t404, 0 - %t408 = getelementptr inbounds %S.ast.Node, ptr %t407, i64 1 - %t409 = load %S.ast.Node, ptr %t408 - call void @finch.gen.block(ptr %t402, %S.ast.Node %t409, i1 true) - %t410 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t410) - %t411 = load ptr, ptr %a1 - %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic5337, label %ok5338 -panic5337: - call void @finch_panic(ptr @.str.3362, i64 2578, ptr @.str.3363) - unreachable -ok5338: - %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 12 - %t414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t413, i32 0, i32 1 - %t415 = load i64, ptr %t414 - %t416 = icmp eq i64 %t415, 0 - br i1 %t416, label %panic5339, label %ok5340 -panic5339: - call void @finch_panic(ptr @.str.3364, i64 2578, ptr @.str.3365) - unreachable -ok5340: - %t417 = sub i64 %t415, 1 - %t418 = load ptr, ptr %t413 - %t419 = getelementptr inbounds %S.gen.Loop, ptr %t418, i64 %t417 - %t420 = load %S.gen.Loop, ptr %t419 - store i64 %t417, ptr %t414 - store %S.gen.Loop %t420, ptr %a421 - call void @finch.drop.S_gen_Loop(ptr %a421) - %t422 = load ptr, ptr %a1 - %t423 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.br(ptr %t422, { ptr, i64, i64 } %t423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = load { ptr, i64, i64 }, ptr %a51 - %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t426, { ptr, i64, i64 } { ptr @.str.3366, i64 3, i64 0 }, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t428, ptr %a429 - %t430 = load ptr, ptr %a1 - %t431 = load ptr, ptr %a1 - %t432 = load { ptr, i64, i64 }, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.3368, i64 8, i64 0 }, ptr %a434 - store { ptr, i64, i64 } %t432, ptr %a435 - call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) - %t436 = load { ptr, i64, i64 }, ptr %a433 - store { ptr, i64, i64 } %t436, ptr %a438 - store { ptr, i64, i64 } { ptr @.str.3369, i64 3, i64 0 }, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t436, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t431, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t430, { ptr, i64, i64 } { ptr @.str.3367, i64 3, i64 0 }, { ptr, i64, i64 } %t442, { ptr, i64, i64 } %t444) - store { ptr, i64, i64 } %t442, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t446, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.label(ptr %t448, { ptr, i64, i64 } %t449) - call void @finch_str_drop(ptr %a429) - call void @finch_str_drop(ptr %a353) - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a283) - call void @finch_str_drop(ptr %a252) - call void @finch_str_drop(ptr %a221) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a96) - call void @finch_str_drop(ptr %a93) - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret void -} - -define internal void @finch.drop.S_gen_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 1 - call void @finch.drop.S_gen_Place(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 2 - call void @finch.drop.S_gen_Val(ptr %t2) - ret void -} - -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.ast.Type, align 16 - %a31 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a39 = alloca %S.ast.Type, align 16 - %a42 = alloca %S.ast.Type, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca i1, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.Loop, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - 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 %range5341, label %inrange5342 -range5341: - call void @finch_panic_index(ptr @.str.3370, i64 2589, i64 0, i64 %t7) - unreachable -inrange5342: - %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.3371, i64 0, i64 0 }, ptr %a14 - %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3372, 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 %then5343, label %else5344 -then5343: - %t19 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t20 = getelementptr inbounds %S.gen.Place, ptr %t19, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - call void @finch_str_copy(ptr %a23, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - %t25 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t24, ptr %a14 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t28 = getelementptr inbounds %S.gen.Place, ptr %t27, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - store %S.ast.Type %t29, ptr %a30 - call void @finch.copy.S_ast_Type(ptr %a31, ptr %a30) - %t32 = load %S.ast.Type, ptr %a31 - %t33 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t32, ptr %a16 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - br label %endif5345 -else5344: - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t36 = getelementptr inbounds %S.gen.Val, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Type, ptr %t36 - store %S.ast.Type %t37, ptr %a38 - call void @finch.copy.S_ast_Type(ptr %a39, ptr %a38) - %t40 = load %S.ast.Type, ptr %a39 - %t41 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t40, ptr %a16 - store %S.ast.Type %t41, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic5346, label %ok5347 -panic5346: - call void @finch_panic(ptr @.str.3374, i64 2597, ptr @.str.3375) - unreachable -ok5347: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 25 - %t48 = load i64, ptr %t47 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3373, i64 5, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load %S.ast.Type, ptr %a16 - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t59 = load %S.gen.Val, ptr %t58 - %t60 = call { ptr, i64, i64 } @finch.gen.own(ptr %t57, %S.gen.Val %t59) - %t61 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t60, i1 false, i1 true) - store { ptr, i64, i64 } %t55, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t61, ptr %a14 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif5345 -endif5345: - %t66 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t67 = load { ptr, i64, i64 }, ptr %t66 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.3376, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then5348, label %endif5350 -then5348: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = load { ptr, i64, i64 }, ptr %a14 - %t75 = load %S.ast.Type, ptr %a16 - %t76 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t77 = load i1, ptr %t76 - call void @finch.gen.eachMap(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t74, %S.ast.Type %t75, i1 %t77) - %t78 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t78) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -endif5350: - %t79 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3377, i64 5, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp eq i32 %t83, 0 - br label %logic.from5351 -logic.from5351: - br i1 %t84, label %logic.rhs5352, label %logic.end5353 -logic.rhs5352: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3378, i64 3, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp eq i32 %t89, 0 - br label %logic.rend5354 -logic.rend5354: - br label %logic.end5353 -logic.end5353: - %t91 = phi i1 [ false, %logic.from5351 ], [ %t90, %logic.rend5354 ] - br i1 %t91, label %then5355, label %endif5357 -then5355: - %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 %range5358, label %inrange5359 -range5358: - call void @finch_panic_index(ptr @.str.3379, i64 2605, i64 0, i64 %t95) - unreachable -inrange5359: - %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 = load %S.ast.Type, ptr %a16 - %t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100) - store { ptr, i64, i64 } { ptr @.str.3380, i64 55, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3381, i64 36, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif5357 -endif5357: - %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3382, i64 4, i64 0 }) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3383, i64 5, i64 0 }, ptr %a118 - %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) - %t120 = icmp ne i32 %t119, 0 - br i1 %t120, label %then5360, label %endif5362 -then5360: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 0, %t123 - br i1 %t124, label %range5363, label %inrange5364 -range5363: - call void @finch_panic_index(ptr @.str.3384, i64 2609, i64 0, i64 %t123) - unreachable -inrange5364: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i64 0 - %t127 = load %S.ast.Type, ptr %t126 - store %S.ast.Type %t127, ptr %a128 - call void @finch.copy.S_ast_Type(ptr %a129, ptr %a128) - %t130 = load %S.ast.Type, ptr %a129 - %t131 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t130, ptr %a114 - store %S.ast.Type %t131, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - br label %endif5362 -endif5362: - %t133 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t134 = load i1, ptr %t133 - br label %logic.from5365 -logic.from5365: - br i1 %t134, label %logic.rhs5366, label %logic.end5367 -logic.rhs5366: - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a114 - %t137 = call i1 @finch.gen.owning(ptr %t135, %S.ast.Type %t136) - br label %logic.rend5368 -logic.rend5368: - br label %logic.end5367 -logic.end5367: - %t138 = phi i1 [ false, %logic.from5365 ], [ %t137, %logic.rend5368 ] - br label %logic.from5369 -logic.from5369: - br i1 %t138, label %logic.rhs5370, label %logic.end5371 -logic.rhs5370: - %t139 = load ptr, ptr %a1 - %t140 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t141 = load { ptr, i64, i64 }, ptr %t140 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range5372, label %inrange5373 -range5372: - call void @finch_panic_index(ptr @.str.3385, i64 2611, i64 0, i64 %t142) - unreachable -inrange5373: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 0 - %t146 = load %S.ast.Node, ptr %t145 - %t147 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t146) - %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t149 = load { ptr, i64, i64 }, ptr %t148 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 1, %t150 - br i1 %t151, label %range5374, label %inrange5375 -range5374: - call void @finch_panic_index(ptr @.str.3386, i64 2611, i64 1, i64 %t150) - unreachable -inrange5375: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 1 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = call i1 @finch.gen.mutates(ptr %t139, { ptr, i64, i64 } %t147, %S.ast.Node %t154) - store { ptr, i64, i64 } %t147, ptr %a156 - call void @finch_str_drop(ptr %a156) - br label %logic.rend5376 -logic.rend5376: - br label %logic.end5371 -logic.end5371: - %t157 = phi i1 [ false, %logic.from5369 ], [ %t155, %logic.rend5376 ] - store i1 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } { ptr @.str.3387, i64 3, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t162, { ptr, i64, i64 } { ptr @.str.3388, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3389, i64 1, i64 0 }, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3390, i64 9, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t167, { ptr, i64, i64 } { ptr @.str.3391, i64 9, i64 0 }) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t170, { ptr, i64, i64 } { ptr @.str.3392, i64 9, i64 0 }) - store { ptr, i64, i64 } %t171, ptr %a172 - %t173 = load ptr, ptr %a1 - %t174 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t173, { ptr, i64, i64 } { ptr @.str.3393, i64 8, i64 0 }) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load ptr, ptr %a1 - %t177 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t176, { ptr, i64, i64 } %t177) - %t178 = load ptr, ptr %a1 - %t179 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) - %t180 = load ptr, ptr %a1 - %t181 = load ptr, ptr %a1 - %t182 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3395, i64 46, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.3396, i64 14, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = call { ptr, i64, i64 } @finch.gen.op(ptr %t181, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t180, { ptr, i64, i64 } { ptr @.str.3394, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_drop(ptr %a195) - store { ptr, i64, i64 } %t194, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a161 - %t199 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.3397, i64 3, i64 0 }, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.3398, i64 13, i64 0 }, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t206, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3399, i64 2, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t211, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t201, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - store { ptr, i64, i64 } %t218, ptr %a220 - %t221 = load ptr, ptr %a1 - %t222 = load { ptr, i64, i64 }, ptr %a220 - %t223 = load { ptr, i64, i64 }, ptr %a169 - %t224 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.condBr(ptr %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223, { ptr, i64, i64 } %t224) - %t225 = load ptr, ptr %a1 - %t226 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.label(ptr %t225, { ptr, i64, i64 } %t226) - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a14 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } { ptr @.str.3400, i64 3, i64 0 }, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t229, ptr %a230 - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a114 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - store { ptr, i64, i64 } { ptr @.str.3401, i64 23, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3402, i64 6, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t239, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t244, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t244, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.3403, i64 6, i64 0 }, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - store { ptr, i64, i64 } %t250, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a251 - %t256 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t262, ptr %a264 - %t265 = load ptr, ptr %a1 - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Type, ptr %a114 - %t268 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t266, %S.ast.Type %t267) - %t269 = load { ptr, i64, i64 }, ptr %a264 - %t270 = call { ptr, i64, i64 } @finch.gen.load(ptr %t265, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_drop(ptr %a271) - store { ptr, i64, i64 } %t270, ptr %a272 - %t273 = load i1, ptr %a158 - br i1 %t273, label %then5377, label %endif5379 -then5377: - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a272 - %t276 = load %S.ast.Type, ptr %a114 - %t277 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276) - %t278 = load { ptr, i64, i64 }, ptr %a272 - store { ptr, i64, i64 } %t277, ptr %a272 - store { ptr, i64, i64 } %t278, ptr %a279 - call void @finch_str_drop(ptr %a279) - br label %endif5379 -endif5379: - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic5380, label %ok5381 -panic5380: - call void @finch_panic(ptr @.str.3404, i64 2631, ptr @.str.3405) - unreachable -ok5381: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - %t284 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t284, ptr %a285 - call void @finch_str_copy(ptr %a286, ptr %a285) - %t287 = load { ptr, i64, i64 }, ptr %a286 - %t288 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t287, 0 - %t289 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_copy(ptr %a291, ptr %a290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - %t293 = insertvalue %S.gen.Loop %t288, { ptr, i64, i64 } %t292, 1 - %t294 = load ptr, ptr %a1 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic5382, label %ok5383 -panic5382: - call void @finch_panic(ptr @.str.3406, i64 2631, ptr @.str.3407) - unreachable -ok5383: - %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 10 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 - %t298 = load i64, ptr %t297 - %t299 = insertvalue %S.gen.Loop %t293, i64 %t298, 2 - %t300 = load ptr, ptr %a1 - %t301 = icmp eq ptr %t300, null - br i1 %t301, label %panic5384, label %ok5385 -panic5384: - call void @finch_panic(ptr @.str.3408, i64 2631, ptr @.str.3409) - unreachable -ok5385: - %t302 = getelementptr inbounds %S.gen.Gen, ptr %t300, i32 0, i32 11 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i32 0, i32 1 - %t304 = load i64, ptr %t303 - %t305 = insertvalue %S.gen.Loop %t299, i64 %t304, 3 - %t306 = load i64, ptr %t283 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %t282, i64 %t307, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %t282 - %t309 = getelementptr inbounds %S.gen.Loop, ptr %t308, i64 %t306 - store %S.gen.Loop %t305, ptr %t309 - store i64 %t307, ptr %t283 - %t310 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t310) - %t311 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = icmp sgt i64 %t319, 0 - br i1 %t320, label %then5386, label %endif5388 -then5386: - %t321 = load ptr, ptr %a1 - %t322 = load %S.ast.Node, ptr %a2 - %t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t324 = load { ptr, i64, i64 }, ptr %t323 - %t325 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3410, i64 3, i64 0 }) - %t326 = load { ptr, i64, i64 }, ptr %a200 - %t327 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } %t324, %S.ast.Type %t325, { ptr, i64, i64 } %t326, i1 true, i1 false) - store %S.ast.Type %t325, ptr %a328 - call void @finch.drop.S_ast_Type(ptr %a328) - store { ptr, i64, i64 } %t327, ptr %a329 - call void @finch_str_drop(ptr %a329) - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t331, ptr %a332 - call void @finch_str_copy(ptr %a333, ptr %a332) - %t334 = load { ptr, i64, i64 }, ptr %a333 - %t335 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t334, ptr %a316 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif5388 -endif5388: - %t337 = load ptr, ptr %a1 - %t338 = load %S.ast.Node, ptr %a2 - %t339 = load { ptr, i64, i64 }, ptr %a316 - %t340 = load %S.ast.Type, ptr %a114 - %t341 = load { ptr, i64, i64 }, ptr %a272 - %t342 = load i1, ptr %a158 - %t343 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t337, %S.ast.Node %t338, { ptr, i64, i64 } %t339, %S.ast.Type %t340, { ptr, i64, i64 } %t341, i1 true, i1 %t342) - store { ptr, i64, i64 } %t343, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load ptr, ptr %a1 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t347 = load { ptr, i64, i64 }, ptr %t346 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 1, %t348 - br i1 %t349, label %range5389, label %inrange5390 -range5389: - call void @finch_panic_index(ptr @.str.3411, i64 2639, i64 1, i64 %t348) - unreachable -inrange5390: - %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 %panic5391, label %ok5392 -panic5391: - call void @finch_panic(ptr @.str.3412, i64 2641, ptr @.str.3413) - unreachable -ok5392: - %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 12 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %panic5393, label %ok5394 -panic5393: - call void @finch_panic(ptr @.str.3414, i64 2641, ptr @.str.3415) - unreachable -ok5394: - %t360 = sub i64 %t358, 1 - %t361 = load ptr, ptr %t356 - %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 - %t363 = load %S.gen.Loop, ptr %t362 - store i64 %t360, ptr %t357 - store %S.gen.Loop %t363, ptr %a364 - call void @finch.drop.S_gen_Loop(ptr %a364) - %t365 = load ptr, ptr %a1 - %t366 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.br(ptr %t365, { ptr, i64, i64 } %t366) - %t367 = load ptr, ptr %a1 - %t368 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.label(ptr %t367, { ptr, i64, i64 } %t368) - %t369 = load ptr, ptr %a1 - %t370 = load { ptr, i64, i64 }, ptr %a161 - %t371 = call { ptr, i64, i64 } @finch.gen.load(ptr %t369, { ptr, i64, i64 } { ptr @.str.3416, i64 3, i64 0 }, { ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.3418, i64 8, i64 0 }, ptr %a377 - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) - %t379 = load { ptr, i64, i64 }, ptr %a376 - store { ptr, i64, i64 } %t379, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.3419, i64 3, i64 0 }, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t379, ptr %a383 - call void @finch_str_drop(ptr %a383) - %t384 = load { ptr, i64, i64 }, ptr %a380 - %t385 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t384) - store { ptr, i64, i64 } %t384, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.3417, i64 3, i64 0 }, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387) - store { ptr, i64, i64 } %t385, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load ptr, ptr %a1 - %t390 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t389, { ptr, i64, i64 } %t390) - %t391 = load ptr, ptr %a1 - %t392 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.label(ptr %t391, { ptr, i64, i64 } %t392) - %t393 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t393) - call void @finch_str_drop(ptr %a372) - call void @finch_str_drop(ptr %a316) - call void @finch_str_drop(ptr %a272) - call void @finch_str_drop(ptr %a264) - call void @finch_str_drop(ptr %a230) - call void @finch_str_drop(ptr %a220) - call void @finch_str_drop(ptr %a200) - call void @finch_str_drop(ptr %a196) - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a172) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -} - -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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.gen.Val, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a329 = alloca i64, align 16 - %a342 = alloca i64, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca %S.gen.Var, align 16 - %a421 = alloca %S.gen.Var, align 16 - %a423 = alloca %S.gen.Var, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.gen.Val, align 16 - %a512 = alloca %S.gen.Val, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5395, label %ok5396 -panic5395: - call void @finch_panic(ptr @.str.3420, i64 2652, ptr @.str.3421) - unreachable -ok5396: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5397, label %endif5399 -then5397: - %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.3422, i64 33, i64 0 }) - br label %endif5399 -endif5399: - %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.from5400 -logic.from5400: - br i1 %t13, label %logic.rhs5401, label %logic.end5402 -logic.rhs5401: - %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 %range5403, label %inrange5404 -range5403: - call void @finch_panic_index(ptr @.str.3423, i64 2656, i64 0, i64 %t16) - unreachable -inrange5404: - %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.3424, 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.rend5405 -logic.rend5405: - br label %logic.end5402 -logic.end5402: - %t26 = phi i1 [ false, %logic.from5400 ], [ %t25, %logic.rend5405 ] - br label %logic.from5406 -logic.from5406: - br i1 %t26, label %logic.rhs5407, label %logic.end5408 -logic.rhs5407: - %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 %range5409, label %inrange5410 -range5409: - call void @finch_panic_index(ptr @.str.3425, i64 2656, i64 0, i64 %t29) - unreachable -inrange5410: - %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.3426, 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.rend5411 -logic.rend5411: - br label %logic.end5408 -logic.end5408: - %t39 = phi i1 [ false, %logic.from5406 ], [ %t38, %logic.rend5411 ] - br i1 %t39, label %then5412, label %endif5414 -then5412: - %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 %range5415, label %inrange5416 -range5415: - call void @finch_panic_index(ptr @.str.3427, i64 2657, i64 0, i64 %t42) - unreachable -inrange5416: - %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 %panic5417, label %ok5418 -panic5417: - call void @finch_panic(ptr @.str.3428, i64 2658, ptr @.str.3429) - unreachable -ok5418: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 13 - %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9 - %t55 = load i1, ptr %t54 - %t56 = xor i1 %t55, true - br i1 %t56, label %then5419, label %endif5421 -then5419: - store { ptr, i64, i64 } { ptr @.str.3430, i64 1, i64 0 }, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic5422, label %ok5423 -panic5422: - call void @finch_panic(ptr @.str.3431, i64 2660, ptr @.str.3432) - unreachable -ok5423: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 13 - %t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12 - %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3433, 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 %then5424, label %endif5426 -then5424: - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic5427, label %ok5428 -panic5427: - call void @finch_panic(ptr @.str.3434, i64 2661, ptr @.str.3435) - unreachable -ok5428: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 13 - %t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3436, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t78, ptr %a57 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif5426 -endif5426: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a50 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic5429, label %ok5430 -panic5429: - call void @finch_panic(ptr @.str.3438, i64 2663, ptr @.str.3439) - unreachable -ok5430: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 13 - %t86 = getelementptr inbounds %S.gen.FnSig, ptr %t85, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.3437, i64 1, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3440, i64 64, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t96, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t96, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.3441, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.fail(ptr %t81, %S.ast.Node %t82, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a57) - br label %endif5421 -endif5421: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a50 - call void @finch.gen.checkArgs(ptr %t109, %S.ast.Node %t110, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3442, i64 5, i64 0 }) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t114 = load { ptr, i64, i64 }, ptr %t113 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 0, %t115 - br i1 %t116, label %range5431, label %inrange5432 -range5431: - call void @finch_panic_index(ptr @.str.3443, i64 2666, i64 0, i64 %t115) - unreachable -inrange5432: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.ast.Node, ptr %t117, i64 0 - %t119 = load %S.ast.Node, ptr %t118 - %t120 = call %S.gen.Val @finch.gen.expr(ptr %t112, %S.ast.Node %t119) - %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3444, i64 3, i64 0 }) - %t122 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 0, %t124 - br i1 %t125, label %range5433, label %inrange5434 -range5433: - call void @finch_panic_index(ptr @.str.3445, i64 2666, i64 0, i64 %t124) - unreachable -inrange5434: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.ast.Node, ptr %t126, i64 0 - %t128 = load %S.ast.Node, ptr %t127 - %t129 = call %S.gen.Val @finch.gen.coerce(ptr %t111, %S.gen.Val %t120, %S.ast.Type %t121, %S.ast.Node %t128, { ptr, i64, i64 } { ptr @.str.3446, i64 17, i64 0 }) - store %S.gen.Val %t120, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - store %S.ast.Type %t121, ptr %a131 - call void @finch.drop.S_ast_Type(ptr %a131) - store %S.gen.Val %t129, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = load %S.gen.Val, ptr %a132 - %t135 = call { ptr, i64, i64 } @finch.gen.own(ptr %t133, %S.gen.Val %t134) - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t137, i64 0) - %t138 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t138, i64 0) - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic5435, label %ok5436 -panic5435: - call void @finch_panic(ptr @.str.3448, i64 2670, ptr @.str.3449) - unreachable -ok5436: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 13 - %t144 = load %S.gen.FnSig, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t140, %S.gen.FnSig %t144) - store { ptr, i64, i64 } { ptr @.str.3447, i64 4, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t145, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.3450, i64 1, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load ptr, ptr %a1 - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic5437, label %ok5438 -panic5437: - call void @finch_panic(ptr @.str.3452, i64 2670, ptr @.str.3453) - unreachable -ok5438: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 13 - %t161 = load %S.gen.FnSig, ptr %t160 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t157, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.3451, i64 12, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3454, i64 36, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3455, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t156, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t155, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t155, ptr %a189 - call void @finch_str_drop(ptr %a189) - store { ptr, i64, i64 } %t184, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t139, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5439, label %ok5440 -panic5439: - call void @finch_panic(ptr @.str.3456, i64 2671, ptr @.str.3457) - unreachable -ok5440: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Val(ptr %a132) - call void @finch.drop.S_ast_Node(ptr %a50) - ret void -endif5414: - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5441, label %ok5442 -panic5441: - call void @finch_panic(ptr @.str.3458, i64 2674, ptr @.str.3459) - unreachable -ok5442: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 13 - %t199 = getelementptr inbounds %S.gen.FnSig, ptr %t198, i32 0, i32 12 - %t200 = getelementptr inbounds %S.ast.Type, ptr %t199, i32 0, i32 0 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.3460, i64 4, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %then5443, label %endif5445 -then5443: - %t206 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = load i64, ptr %t207 - %t209 = icmp sgt i64 %t208, 0 - br i1 %t209, label %then5446, label %endif5448 -then5446: - %t210 = load ptr, ptr %a1 - %t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t212 = load { ptr, i64, i64 }, ptr %t211 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 0, %t213 - br i1 %t214, label %range5449, label %inrange5450 -range5449: - call void @finch_panic_index(ptr @.str.3461, i64 2676, i64 0, i64 %t213) - unreachable -inrange5450: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 0 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic5451, label %ok5452 -panic5451: - call void @finch_panic(ptr @.str.3463, i64 2676, ptr @.str.3464) - unreachable -ok5452: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 13 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %t220, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } { ptr @.str.3462, i64 1, i64 0 }, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.3465, i64 46, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif5448 -endif5448: - %t233 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t233, i64 0) - %t234 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t234, i64 0) - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic5453, label %ok5454 -panic5453: - call void @finch_panic(ptr @.str.3466, i64 2680, ptr @.str.3467) - unreachable -ok5454: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 13 - %t238 = getelementptr inbounds %S.gen.FnSig, ptr %t237, i32 0, i32 9 - %t239 = load i1, ptr %t238 - br i1 %t239, label %then5455, label %else5456 -then5455: - %t240 = load ptr, ptr %a1 - %t241 = load ptr, ptr %a1 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic5458, label %ok5459 -panic5458: - call void @finch_panic(ptr @.str.3469, i64 2681, ptr @.str.3470) - unreachable -ok5459: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 13 - %t245 = load %S.gen.FnSig, ptr %t244 - %t246 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t241, %S.gen.FnSig %t245) - store { ptr, i64, i64 } { ptr @.str.3468, i64 4, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.3471, i64 53, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif5457 -else5456: - %t258 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } { ptr @.str.3472, i64 8, i64 0 }) - br label %endif5457 -endif5457: - %t259 = load ptr, ptr %a1 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic5460, label %ok5461 -panic5460: - call void @finch_panic(ptr @.str.3473, i64 2685, ptr @.str.3474) - unreachable -ok5461: - %t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9 - store i1 true, ptr %t261 - ret void -endif5445: - %t262 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1 - %t264 = load i64, ptr %t263 - %t265 = icmp eq i64 %t264, 0 - br i1 %t265, label %then5462, label %endif5464 -then5462: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic5465, label %ok5466 -panic5465: - call void @finch_panic(ptr @.str.3476, i64 2689, ptr @.str.3477) - unreachable -ok5466: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 13 - %t271 = getelementptr inbounds %S.gen.FnSig, ptr %t270, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } { ptr @.str.3475, i64 1, i64 0 }, ptr %a274 - store { ptr, i64, i64 } %t272, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } %t276, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.3478, i64 14, i64 0 }, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t276, ptr %a280 - call void @finch_str_drop(ptr %a280) - %t281 = load { ptr, i64, i64 }, ptr %a277 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic5467, label %ok5468 -panic5467: - call void @finch_panic(ptr @.str.3479, i64 2689, ptr @.str.3480) - unreachable -ok5468: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 13 - %t285 = getelementptr inbounds %S.gen.FnSig, ptr %t284, i32 0, i32 12 - %t286 = load %S.ast.Type, ptr %t285 - %t287 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t286) - store { ptr, i64, i64 } %t281, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t281, ptr %a291 - call void @finch_str_drop(ptr %a291) - store { ptr, i64, i64 } %t287, ptr %a292 - call void @finch_str_drop(ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t293) - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - br label %endif5464 -endif5464: - %t295 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t296 = load { ptr, i64, i64 }, ptr %t295 - %t297 = extractvalue { ptr, i64, i64 } %t296, 1 - %t298 = icmp uge i64 0, %t297 - br i1 %t298, label %range5469, label %inrange5470 -range5469: - call void @finch_panic_index(ptr @.str.3481, i64 2692, i64 0, i64 %t297) - unreachable -inrange5470: - %t299 = extractvalue { ptr, i64, i64 } %t296, 0 - %t300 = getelementptr inbounds %S.ast.Node, ptr %t299, i64 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.3482, i64 3, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp ne i32 %t305, 0 - br i1 %t306, label %then5471, label %endif5473 -then5471: - %t307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = extractvalue { ptr, i64, i64 } %t308, 1 - %t310 = icmp uge i64 0, %t309 - br i1 %t310, label %range5474, label %inrange5475 -range5474: - call void @finch_panic_index(ptr @.str.3483, i64 2693, i64 0, i64 %t309) - unreachable -inrange5475: - %t311 = extractvalue { ptr, i64, i64 } %t308, 0 - %t312 = getelementptr inbounds %S.ast.Node, ptr %t311, i64 0 - %t313 = getelementptr inbounds %S.ast.Node, ptr %t312, i32 0, i32 1 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t314, ptr %a315 - call void @finch_str_copy(ptr %a316, ptr %a315) - %t317 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic5476, label %ok5477 -panic5476: - call void @finch_panic(ptr @.str.3484, i64 2694, ptr @.str.3485) - unreachable -ok5477: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 10 - %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i32 0, i32 1 - %t323 = load i64, ptr %t322 - store i64 %t323, ptr %a324 - br label %while.cond5478 -while.cond5478: - %t325 = load i64, ptr %a324 - %t326 = icmp sgt i64 %t325, 0 - br i1 %t326, label %while.body5479, label %while.end5480 -while.body5479: - %t327 = load i64, ptr %a324 - %t328 = sub i64 %t327, 1 - store i64 %t328, ptr %a324 - store i64 -1, ptr %a329 - %t330 = load ptr, ptr %a1 - %t331 = icmp eq ptr %t330, null - br i1 %t331, label %panic5481, label %ok5482 -panic5481: - call void @finch_panic(ptr @.str.3486, i64 2698, ptr @.str.3487) - unreachable -ok5482: - %t332 = getelementptr inbounds %S.gen.Gen, ptr %t330, i32 0, i32 10 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %t332 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range5483, label %inrange5484 -range5483: - call void @finch_panic_index(ptr @.str.3488, i64 2698, i64 %t333, i64 %t335) - unreachable -inrange5484: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Scope, ptr %t337, i64 %t333 - %t339 = getelementptr inbounds %S.gen.Scope, ptr %t338, i32 0, i32 0 - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %t339, i32 0, i32 1 - %t341 = load i64, ptr %t340 - store i64 0, ptr %a342 - br label %for.cond5485 -for.cond5485: - %t343 = load i64, ptr %a342 - %t344 = icmp slt i64 %t343, %t341 - br i1 %t344, label %for.body5486, label %for.end5488 -for.body5486: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic5489, label %ok5490 -panic5489: - call void @finch_panic(ptr @.str.3489, i64 2699, ptr @.str.3490) - unreachable -ok5490: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 10 - %t348 = load i64, ptr %a324 - %t349 = load { ptr, i64, i64 }, ptr %t347 - %t350 = extractvalue { ptr, i64, i64 } %t349, 1 - %t351 = icmp uge i64 %t348, %t350 - br i1 %t351, label %range5491, label %inrange5492 -range5491: - call void @finch_panic_index(ptr @.str.3491, i64 2699, i64 %t348, i64 %t350) - unreachable -inrange5492: - %t352 = extractvalue { ptr, i64, i64 } %t349, 0 - %t353 = getelementptr inbounds %S.gen.Scope, ptr %t352, i64 %t348 - %t354 = getelementptr inbounds %S.gen.Scope, ptr %t353, i32 0, i32 0 - %t355 = load i64, ptr %a342 - %t356 = load { ptr, i64, i64 }, ptr %t354 - %t357 = extractvalue { ptr, i64, i64 } %t356, 1 - %t358 = icmp uge i64 %t355, %t357 - br i1 %t358, label %range5493, label %inrange5494 -range5493: - call void @finch_panic_index(ptr @.str.3492, i64 2699, i64 %t355, i64 %t357) - unreachable -inrange5494: - %t359 = extractvalue { ptr, i64, i64 } %t356, 0 - %t360 = getelementptr inbounds %S.gen.Var, ptr %t359, i64 %t355 - %t361 = getelementptr inbounds %S.gen.Var, ptr %t360, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - %t363 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } %t363, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br label %logic.from5495 -logic.from5495: - br i1 %t367, label %logic.rhs5496, label %logic.end5497 -logic.rhs5496: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic5498, label %ok5499 -panic5498: - call void @finch_panic(ptr @.str.3493, i64 2699, ptr @.str.3494) - unreachable -ok5499: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 44 - %t371 = load i1, ptr %t370 - br label %logic.from5500 -logic.from5500: - br i1 %t371, label %logic.rhs5501, label %logic.end5502 -logic.rhs5501: - %t372 = load ptr, ptr %a1 - %t373 = icmp eq ptr %t372, null - br i1 %t373, label %panic5503, label %ok5504 -panic5503: - call void @finch_panic(ptr @.str.3495, i64 2699, ptr @.str.3496) - unreachable -ok5504: - %t374 = getelementptr inbounds %S.gen.Gen, ptr %t372, i32 0, i32 10 - %t375 = load i64, ptr %a324 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range5505, label %inrange5506 -range5505: - call void @finch_panic_index(ptr @.str.3497, i64 2699, i64 %t375, i64 %t377) - unreachable -inrange5506: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.gen.Scope, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.gen.Scope, ptr %t380, i32 0, i32 0 - %t382 = load i64, ptr %a342 - %t383 = load { ptr, i64, i64 }, ptr %t381 - %t384 = extractvalue { ptr, i64, i64 } %t383, 1 - %t385 = icmp uge i64 %t382, %t384 - br i1 %t385, label %range5507, label %inrange5508 -range5507: - call void @finch_panic_index(ptr @.str.3498, i64 2699, i64 %t382, i64 %t384) - unreachable -inrange5508: - %t386 = extractvalue { ptr, i64, i64 } %t383, 0 - %t387 = getelementptr inbounds %S.gen.Var, ptr %t386, i64 %t382 - %t388 = getelementptr inbounds %S.gen.Var, ptr %t387, i32 0, i32 4 - %t389 = load i64, ptr %t388 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic5509, label %ok5510 -panic5509: - call void @finch_panic(ptr @.str.3499, i64 2699, ptr @.str.3500) - unreachable -ok5510: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 45 - %t393 = load i64, ptr %t392 - %t394 = icmp sge i64 %t389, %t393 - br label %logic.rend5511 -logic.rend5511: - br label %logic.end5502 -logic.end5502: - %t395 = phi i1 [ false, %logic.from5500 ], [ %t394, %logic.rend5511 ] - %t396 = xor i1 %t395, true - br label %logic.rend5512 -logic.rend5512: - br label %logic.end5497 -logic.end5497: - %t397 = phi i1 [ false, %logic.from5495 ], [ %t396, %logic.rend5512 ] - br i1 %t397, label %then5513, label %endif5515 -then5513: - %t398 = load i64, ptr %a342 - store i64 %t398, ptr %a329 - br label %endif5515 -endif5515: - br label %for.step5487 -for.step5487: - %t399 = load i64, ptr %a342 - %t400 = add i64 %t399, 1 - store i64 %t400, ptr %a342 - br label %for.cond5485 -for.end5488: - %t401 = load i64, ptr %a329 - %t402 = icmp slt i64 %t401, 0 - br i1 %t402, label %then5516, label %endif5518 -then5516: - br label %while.cond5478 -endif5518: - %t403 = load ptr, ptr %a1 - %t404 = icmp eq ptr %t403, null - br i1 %t404, label %panic5519, label %ok5520 -panic5519: - call void @finch_panic(ptr @.str.3501, i64 2706, ptr @.str.3502) - unreachable -ok5520: - %t405 = getelementptr inbounds %S.gen.Gen, ptr %t403, i32 0, i32 10 - %t406 = load i64, ptr %a324 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range5521, label %inrange5522 -range5521: - call void @finch_panic_index(ptr @.str.3503, i64 2706, i64 %t406, i64 %t408) - unreachable -inrange5522: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.gen.Scope, ptr %t410, i64 %t406 - %t412 = getelementptr inbounds %S.gen.Scope, ptr %t411, i32 0, i32 0 - %t413 = load i64, ptr %a329 - %t414 = load { ptr, i64, i64 }, ptr %t412 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5523, label %inrange5524 -range5523: - call void @finch_panic_index(ptr @.str.3504, i64 2706, i64 %t413, i64 %t415) - unreachable -inrange5524: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.gen.Var, ptr %t417, i64 %t413 - %t419 = load %S.gen.Var, ptr %t418 - store %S.gen.Var %t419, ptr %a420 - call void @finch.copy.S_gen_Var(ptr %a421, ptr %a420) - %t422 = load %S.gen.Var, ptr %a421 - store %S.gen.Var %t422, ptr %a423 - %t424 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 5 - %t425 = load i1, ptr %t424 - br label %logic.from5525 -logic.from5525: - br i1 %t425, label %logic.rhs5526, label %logic.end5527 -logic.rhs5526: - %t426 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t427 = load %S.ast.Type, ptr %t426 - %t428 = load ptr, ptr %a1 - %t429 = icmp eq ptr %t428, null - br i1 %t429, label %panic5528, label %ok5529 -panic5528: - call void @finch_panic(ptr @.str.3505, i64 2707, ptr @.str.3506) - unreachable -ok5529: - %t430 = getelementptr inbounds %S.gen.Gen, ptr %t428, i32 0, i32 13 - %t431 = getelementptr inbounds %S.gen.FnSig, ptr %t430, i32 0, i32 12 - %t432 = load %S.ast.Type, ptr %t431 - %t433 = call i1 @finch.ast.same(%S.ast.Type %t427, %S.ast.Type %t432) - br label %logic.rend5530 -logic.rend5530: - br label %logic.end5527 -logic.end5527: - %t434 = phi i1 [ false, %logic.from5525 ], [ %t433, %logic.rend5530 ] - br i1 %t434, label %then5531, label %endif5533 -then5531: - %t435 = load ptr, ptr %a1 - %t436 = load ptr, ptr %a1 - %t437 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t438 = load %S.ast.Type, ptr %t437 - %t439 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t438) - %t440 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 2 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = call { ptr, i64, i64 } @finch.gen.load(ptr %t435, { ptr, i64, i64 } %t439, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch_str_drop(ptr %a443) - store { ptr, i64, i64 } %t442, ptr %a444 - %t445 = load ptr, ptr %a1 - %t446 = icmp eq ptr %t445, null - br i1 %t446, label %panic5534, label %ok5535 -panic5534: - call void @finch_panic(ptr @.str.3507, i64 2709, ptr @.str.3508) - unreachable -ok5535: - %t447 = getelementptr inbounds %S.gen.Gen, ptr %t445, i32 0, i32 10 - %t448 = load i64, ptr %a324 - %t449 = load { ptr, i64, i64 }, ptr %t447 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 %t448, %t450 - br i1 %t451, label %range5536, label %inrange5537 -range5536: - call void @finch_panic_index(ptr @.str.3509, i64 2709, i64 %t448, i64 %t450) - unreachable -inrange5537: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.gen.Scope, ptr %t452, i64 %t448 - %t454 = getelementptr inbounds %S.gen.Scope, ptr %t453, i32 0, i32 0 - %t455 = load i64, ptr %a329 - %t456 = load { ptr, i64, i64 }, ptr %t454 - %t457 = extractvalue { ptr, i64, i64 } %t456, 1 - %t458 = icmp uge i64 %t455, %t457 - br i1 %t458, label %range5538, label %inrange5539 -range5538: - call void @finch_panic_index(ptr @.str.3510, i64 2709, i64 %t455, i64 %t457) - unreachable -inrange5539: - %t459 = extractvalue { ptr, i64, i64 } %t456, 0 - %t460 = getelementptr inbounds %S.gen.Var, ptr %t459, i64 %t455 - %t461 = getelementptr inbounds %S.gen.Var, ptr %t460, i32 0, i32 6 - store i1 true, ptr %t461 - %t462 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t462, i64 0) - %t463 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t463, i64 0) - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic5540, label %ok5541 -panic5540: - call void @finch_panic(ptr @.str.3511, i64 2712, ptr @.str.3512) - unreachable -ok5541: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 10 - %t467 = load i64, ptr %a324 - %t468 = load { ptr, i64, i64 }, ptr %t466 - %t469 = extractvalue { ptr, i64, i64 } %t468, 1 - %t470 = icmp uge i64 %t467, %t469 - br i1 %t470, label %range5542, label %inrange5543 -range5542: - call void @finch_panic_index(ptr @.str.3513, i64 2712, i64 %t467, i64 %t469) - unreachable -inrange5543: - %t471 = extractvalue { ptr, i64, i64 } %t468, 0 - %t472 = getelementptr inbounds %S.gen.Scope, ptr %t471, i64 %t467 - %t473 = getelementptr inbounds %S.gen.Scope, ptr %t472, i32 0, i32 0 - %t474 = load i64, ptr %a329 - %t475 = load { ptr, i64, i64 }, ptr %t473 - %t476 = extractvalue { ptr, i64, i64 } %t475, 1 - %t477 = icmp uge i64 %t474, %t476 - br i1 %t477, label %range5544, label %inrange5545 -range5544: - call void @finch_panic_index(ptr @.str.3514, i64 2712, i64 %t474, i64 %t476) - unreachable -inrange5545: - %t478 = extractvalue { ptr, i64, i64 } %t475, 0 - %t479 = getelementptr inbounds %S.gen.Var, ptr %t478, i64 %t474 - %t480 = getelementptr inbounds %S.gen.Var, ptr %t479, i32 0, i32 6 - store i1 false, ptr %t480 - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a444 - call void @finch.gen.finishReturn(ptr %t481, { ptr, i64, i64 } %t482) - call void @finch_str_drop(ptr %a444) - call void @finch.drop.S_gen_Var(ptr %a423) - call void @finch_str_drop(ptr %a318) - ret void -endif5533: - call void @finch.drop.S_gen_Var(ptr %a423) - br label %while.end5480 -while.end5480: - call void @finch_str_drop(ptr %a318) - br label %endif5473 -endif5473: - %t483 = load ptr, ptr %a1 - %t484 = load ptr, ptr %a1 - %t485 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range5546, label %inrange5547 -range5546: - call void @finch_panic_index(ptr @.str.3515, i64 2719, i64 0, i64 %t487) - unreachable -inrange5547: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = load ptr, ptr %a1 - %t493 = icmp eq ptr %t492, null - br i1 %t493, label %panic5548, label %ok5549 -panic5548: - call void @finch_panic(ptr @.str.3516, i64 2719, ptr @.str.3517) - unreachable -ok5549: - %t494 = getelementptr inbounds %S.gen.Gen, ptr %t492, i32 0, i32 13 - %t495 = getelementptr inbounds %S.gen.FnSig, ptr %t494, i32 0, i32 12 - %t496 = load %S.ast.Type, ptr %t495 - %t497 = call %S.gen.Val @finch.gen.exprWant(ptr %t484, %S.ast.Node %t491, %S.ast.Type %t496) - %t498 = load ptr, ptr %a1 - %t499 = icmp eq ptr %t498, null - br i1 %t499, label %panic5550, label %ok5551 -panic5550: - call void @finch_panic(ptr @.str.3518, i64 2719, ptr @.str.3519) - unreachable -ok5551: - %t500 = getelementptr inbounds %S.gen.Gen, ptr %t498, i32 0, i32 13 - %t501 = getelementptr inbounds %S.gen.FnSig, ptr %t500, i32 0, i32 12 - %t502 = load %S.ast.Type, ptr %t501 - %t503 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t504 = load { ptr, i64, i64 }, ptr %t503 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 0, %t505 - br i1 %t506, label %range5552, label %inrange5553 -range5552: - call void @finch_panic_index(ptr @.str.3520, i64 2719, i64 0, i64 %t505) - unreachable -inrange5553: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 0 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = call %S.gen.Val @finch.gen.coerce(ptr %t483, %S.gen.Val %t497, %S.ast.Type %t502, %S.ast.Node %t509, { ptr, i64, i64 } { ptr @.str.3521, i64 18, i64 0 }) - store %S.gen.Val %t497, ptr %a511 - call void @finch.drop.S_gen_Val(ptr %a511) - store %S.gen.Val %t510, ptr %a512 - %t513 = load ptr, ptr %a1 - %t514 = load %S.gen.Val, ptr %a512 - %t515 = call { ptr, i64, i64 } @finch.gen.own(ptr %t513, %S.gen.Val %t514) - store { ptr, i64, i64 } %t515, ptr %a516 - %t517 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t517, i64 0) - %t518 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t518, i64 0) - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a516 - call void @finch.gen.finishReturn(ptr %t519, { ptr, i64, i64 } %t520) - call void @finch_str_drop(ptr %a516) - call void @finch.drop.S_gen_Val(ptr %a512) - ret void -} - -define internal void @finch.gen.finishReturn(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5554, label %ok5555 -panic5554: - call void @finch_panic(ptr @.str.3522, i64 2727, ptr @.str.3523) - unreachable -ok5555: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %t5, i32 0, i32 9 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then5556, label %else5557 -then5556: - %t8 = load ptr, ptr %a1 - %t9 = load ptr, ptr %a1 - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic5559, label %ok5560 -panic5559: - call void @finch_panic(ptr @.str.3525, i64 2728, ptr @.str.3526) - unreachable -ok5560: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = load %S.gen.FnSig, ptr %t12 - %t14 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t9, %S.gen.FnSig %t13) - store { ptr, i64, i64 } { ptr @.str.3524, i64 12, i64 0 }, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.3527, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t8, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t25, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic5561, label %ok5562 -panic5561: - call void @finch_panic(ptr @.str.3529, i64 2729, ptr @.str.3530) - unreachable -ok5562: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 13 - %t33 = load %S.gen.FnSig, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t29, %S.gen.FnSig %t33) - store { ptr, i64, i64 } { ptr @.str.3528, i64 12, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3531, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3532, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic5563, label %ok5564 -panic5563: - call void @finch_panic(ptr @.str.3533, i64 2729, ptr @.str.3534) - unreachable -ok5564: - %t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 13 - %t60 = getelementptr inbounds %S.gen.FnSig, ptr %t59, i32 0, i32 12 - %t61 = load %S.ast.Type, ptr %t60 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t61) - store { ptr, i64, i64 } %t55, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t55, ptr %a66 - call void @finch_str_drop(ptr %a66) - store { ptr, i64, i64 } %t62, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.3535, i64 1, i64 0 }, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t73, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3536, i64 3, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = call { ptr, i64, i64 } @finch.gen.op(ptr %t28, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t84, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load ptr, ptr %a1 - %t90 = load ptr, ptr %a1 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic5565, label %ok5566 -panic5565: - call void @finch_panic(ptr @.str.3538, i64 2730, ptr @.str.3539) - unreachable -ok5566: - %t92 = getelementptr inbounds %S.gen.Gen, ptr %t90, i32 0, i32 13 - %t93 = load %S.gen.FnSig, ptr %t92 - %t94 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t89, %S.gen.FnSig %t93) - store { ptr, i64, i64 } { ptr @.str.3537, i64 4, i64 0 }, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3540, i64 1, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t104, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a27) - br label %endif5558 -else5557: - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic5567, label %ok5568 -panic5567: - call void @finch_panic(ptr @.str.3542, i64 2732, ptr @.str.3543) - unreachable -ok5568: - %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 13 - %t117 = getelementptr inbounds %S.gen.FnSig, ptr %t116, i32 0, i32 12 - %t118 = load %S.ast.Type, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t118) - store { ptr, i64, i64 } { ptr @.str.3541, i64 4, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.3544, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t129, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.emit(ptr %t112, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - br label %endif5558 -endif5558: - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic5569, label %ok5570 -panic5569: - call void @finch_panic(ptr @.str.3545, i64 2734, ptr @.str.3546) - unreachable -ok5570: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 9 - store i1 true, ptr %t139 - 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 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5571, label %inrange5572 -range5571: - call void @finch_panic_index(ptr @.str.3548, i64 2746, i64 0, i64 %t6) - unreachable -inrange5572: - %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.3547, i64 7, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3549, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load ptr, ptr %a1 - %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %t23 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 1, %t25 - br i1 %t26, label %range5573, label %inrange5574 -range5573: - call void @finch_panic_index(ptr @.str.3550, i64 2746, i64 1, i64 %t25) - unreachable -inrange5574: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.ast.Type, ptr %t27, i64 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t29) - store { ptr, i64, i64 } %t21, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t21, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.3551, i64 2, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - ret { ptr, i64, i64 } %t41 -} - -define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) { -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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.3552, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.3553, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal { ptr, i64, i64 } @finch.gen.entryAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -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 - %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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3555, i64 23, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3556, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t19, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3557, i64 14, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t30) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3554, i64 3, i64 0 }, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t33, ptr %a35 - %t36 = load ptr, ptr %a1 - %t37 = load ptr, ptr %a1 - %t38 = load %S.ast.Type, ptr %a3 - %t39 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t37, %S.ast.Type %t38) - store { ptr, i64, i64 } { ptr @.str.3558, i64 23, i64 0 }, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.3559, i64 6, i64 0 }, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t44, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t49, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.3560, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - call void @finch_str_drop(ptr %a35) - ret { ptr, i64, i64 } %t67 -} - -define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3561, i64 23, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.3562, i64 6, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t18, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3563, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - ret { ptr, i64, i64 } %t39 -} - -define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %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 - %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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3564, 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 %range5575, label %inrange5576 -range5575: - call void @finch_panic_index(ptr @.str.3565, i64 2766, i64 0, i64 %t8) - unreachable -inrange5576: - %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.3566, 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 %then5577, label %endif5579 -then5577: - %t18 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3567, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif5579 -endif5579: - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3568, i64 4, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3569, i64 6, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.3570, i64 6, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = load %S.ast.Type, ptr %a4 - %t43 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t41, %S.ast.Type %t42) - store { ptr, i64, i64 } %t40, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t40, ptr %a47 - call void @finch_str_drop(ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3571, i64 6, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load ptr, ptr %a1 - %t56 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t57 = load { ptr, i64, i64 }, ptr %t56 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 0, %t58 - br i1 %t59, label %range5580, label %inrange5581 -range5580: - call void @finch_panic_index(ptr @.str.3572, i64 2769, i64 0, i64 %t58) - unreachable -inrange5581: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i64 0 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t55, %S.ast.Type %t62) - store { ptr, i64, i64 } %t54, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t54, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.3573, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t80 -} - -define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.3574, i64 25, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.3575, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t20) - store { ptr, i64, i64 } %t20, ptr %a22 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { -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 - %a31 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3576, 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.from5582 -logic.from5582: - br i1 %t9, label %logic.rhs5583, label %logic.end5584 -logic.rhs5583: - %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.rend5585 -logic.rend5585: - br label %logic.end5584 -logic.end5584: - %t13 = phi i1 [ false, %logic.from5582 ], [ %t12, %logic.rend5585 ] - br i1 %t13, label %then5586, label %endif5588 -then5586: - 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 - store %S.gen.Val %t26, ptr %a31 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.arr_str(ptr %a15) - call void @finch.drop.arr_S_ast_Node(ptr %a14) - ret { ptr, i64, i64 } %t30 -endif5588: - %t32 = load %S.ast.Type, ptr %a2 - %t33 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t32) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.mapSlot(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.gen.Val %p3, i1 %p4, %S.ast.Node %p5) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3577, 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.3578, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3579, 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.3580, i64 25, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.3581, i64 6, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3582, i64 1, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t43, ptr %a45 - %t46 = load ptr, ptr %a1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = load %S.ast.Type, ptr %a3 - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t46, { ptr, i64, i64 } %t47, %S.ast.Type %t48, { ptr, i64, i64 } %t49) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t52, { ptr, i64, i64 } { ptr @.str.3583, i64 7, i64 0 }) - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t55, { ptr, i64, i64 } { ptr @.str.3584, i64 8, i64 0 }) - store { ptr, i64, i64 } %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a13 - %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } { ptr @.str.3586, i64 3, i64 0 }, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } { ptr @.str.3585, i64 12, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.3587, i64 3, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t72) - store { ptr, i64, i64 } %t72, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a54 - %t76 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.condBr(ptr %t58, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load ptr, ptr %a1 - %t79 = load { ptr, i64, i64 }, ptr %a54 - call void @finch.gen.label(ptr %t78, { ptr, i64, i64 } %t79) - %t80 = load ptr, ptr %a1 - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a51 - %t83 = load %S.ast.Type, ptr %a3 - %t84 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t81, { ptr, i64, i64 } %t82, %S.ast.Type %t83, i64 1) - %t85 = load { ptr, i64, i64 }, ptr %a10 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range5589, label %inrange5590 -range5589: - call void @finch_panic_index(ptr @.str.3588, i64 2797, i64 0, i64 %t88) - unreachable -inrange5590: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i64 0 - %t92 = load %S.ast.Type, ptr %t91 - call void @finch.gen.copyAt(ptr %t80, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t85, %S.ast.Type %t92) - store { ptr, i64, i64 } %t84, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load i1, ptr %a5 - br i1 %t94, label %then5591, label %endif5593 -then5591: - %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 %range5594, label %inrange5595 -range5594: - call void @finch_panic_index(ptr @.str.3589, i64 2799, i64 1, i64 %t99) - unreachable -inrange5595: - %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 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t103) - %t105 = load ptr, ptr %a1 - %t106 = load ptr, ptr %a1 - %t107 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 1, %t109 - br i1 %t110, label %range5596, label %inrange5597 -range5596: - call void @finch_panic_index(ptr @.str.3590, i64 2799, i64 1, i64 %t109) - unreachable -inrange5597: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 - %t113 = load %S.ast.Type, ptr %t112 - %t114 = load %S.ast.Node, ptr %a6 - %t115 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t106, %S.ast.Type %t113, %S.ast.Node %t114) - %t116 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t115, 0 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 1, %t119 - br i1 %t120, label %range5598, label %inrange5599 -range5598: - call void @finch_panic_index(ptr @.str.3591, i64 2799, i64 1, i64 %t119) - unreachable -inrange5599: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 1 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t116, %S.ast.Type %t126, 1 - %t128 = insertvalue %S.gen.Val %t127, i1 true, 2 - %t129 = call { ptr, i64, i64 } @finch.gen.own(ptr %t105, %S.gen.Val %t128) - store %S.gen.Val %t128, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a51 - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t131, { ptr, i64, i64 } %t132, %S.ast.Type %t133, i64 2) - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t134) - store { ptr, i64, i64 } %t104, ptr %a135 - call void @finch_str_drop(ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif5593 -endif5593: - %t138 = load ptr, ptr %a1 - %t139 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.br(ptr %t138, { ptr, i64, i64 } %t139) - %t140 = load ptr, ptr %a1 - %t141 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.label(ptr %t140, { ptr, i64, i64 } %t141) - %t142 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t142 -} - -define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) { -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 - %a49 = alloca %S.gen.Val, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a242 = alloca %S.gen.Val, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a268 = alloca %S.gen.Val, align 16 - %a269 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - 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 %range5600, label %inrange5601 -range5600: - call void @finch_panic_index(ptr @.str.3592, i64 2808, i64 0, i64 %t8) - unreachable -inrange5601: - %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 %range5602, label %inrange5603 -range5602: - call void @finch_panic_index(ptr @.str.3593, i64 2809, i64 1, i64 %t19) - unreachable -inrange5603: - %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 %range5604, label %inrange5605 -range5604: - call void @finch_panic_index(ptr @.str.3594, i64 2810, i64 1, i64 %t32) - unreachable -inrange5605: - %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 %range5606, label %inrange5607 -range5606: - call void @finch_panic_index(ptr @.str.3595, i64 2810, i64 1, i64 %t42) - unreachable -inrange5607: - %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.3596, i64 7, i64 0 }) - store %S.gen.Val %t38, ptr %a48 - call void @finch.drop.S_gen_Val(ptr %a48) - store %S.gen.Val %t47, ptr %a49 - %t50 = load i1, ptr %a5 - br i1 %t50, label %then5608, label %endif5610 -then5608: - %t51 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t52 = load i1, ptr %t51 - %t53 = xor i1 %t52, true - br i1 %t53, label %then5611, label %endif5613 -then5611: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } { ptr @.str.3597, i64 44, i64 0 }) - br label %endif5613 -endif5613: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t58 = getelementptr inbounds %S.gen.Place, ptr %t57, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = load %S.gen.Val, ptr %a49 - %t62 = load %S.ast.Node, ptr %a2 - %t63 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t56, { ptr, i64, i64 } %t59, %S.ast.Type %t60, %S.gen.Val %t61, i1 true, %S.ast.Node %t62) - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t65, %S.gen.Val %t66) - %t67 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t68 = load ptr, ptr %a1 - %t69 = load { ptr, i64, i64 }, ptr %a64 - %t70 = load %S.ast.Type, ptr %a4 - %t71 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t68, { ptr, i64, i64 } %t69, %S.ast.Type %t70, i64 2) - %t72 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t71, 0 - %t73 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t73, ptr %a74 - call void @finch.copy.S_ast_Type(ptr %a75, ptr %a74) - %t76 = load %S.ast.Type, ptr %a75 - %t77 = insertvalue %S.gen.Place %t72, %S.ast.Type %t76, 1 - %t78 = insertvalue %S.gen.Ref %t67, %S.gen.Place %t77, 1 - call void @finch_str_drop(ptr %a64) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t78 -endif5610: - store { ptr, i64, i64 } { ptr @.str.3598, i64 0, i64 0 }, ptr %a79 - %t80 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t81 = load i1, ptr %t80 - br i1 %t81, label %then5614, label %else5615 -then5614: - %t82 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t83 = getelementptr inbounds %S.gen.Place, ptr %t82, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch_str_copy(ptr %a86, ptr %a85) - %t87 = load { ptr, i64, i64 }, ptr %a86 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t87, ptr %a79 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif5616 -else5615: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t92 = load %S.gen.Val, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t90, %S.gen.Val %t92) - %t94 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t93, ptr %a79 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %endif5616 -endif5616: - %t96 = load ptr, ptr %a1 - %t97 = load %S.gen.Val, ptr %a49 - %t98 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t96, %S.gen.Val %t97) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a79 - %t102 = load { ptr, i64, i64 }, ptr %a99 - %t103 = load %S.ast.Type, ptr %a4 - %t104 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t100, { ptr, i64, i64 } %t101, { ptr, i64, i64 } %t102, %S.ast.Type %t103) - store { ptr, i64, i64 } %t104, ptr %a105 - %t106 = load ptr, ptr %a1 - %t107 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t106, { ptr, i64, i64 } { ptr @.str.3599, i64 11, i64 0 }) - store { ptr, i64, i64 } %t107, ptr %a108 - %t109 = load ptr, ptr %a1 - %t110 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t109, { ptr, i64, i64 } { ptr @.str.3600, i64 9, i64 0 }) - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.3601, i64 13, i64 0 }, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.3602, i64 3, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t123, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a108 - %t127 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.condBr(ptr %t112, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a108 - call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) - %t131 = load ptr, ptr %a1 - %t132 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t131, { ptr, i64, i64 } { ptr @.str.3603, i64 17, i64 0 }) - store { ptr, i64, i64 } %t132, ptr %a133 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.store(ptr %t134, { ptr, i64, i64 } { ptr @.str.3604, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3605, i64 15, i64 0 }, { ptr, i64, i64 } %t135) - %t136 = load ptr, ptr %a1 - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = getelementptr inbounds %S.gen.Val, ptr %a49, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - %t140 = load %S.ast.Type, ptr %a16 - call void @finch.gen.emitFormat(ptr %t136, { ptr, i64, i64 } %t137, { ptr, i64, i64 } %t139, %S.ast.Type %t140, i1 true) - %t141 = load ptr, ptr %a1 - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic5617, label %ok5618 -panic5617: - call void @finch_panic(ptr @.str.3607, i64 2834, ptr @.str.3608) - unreachable -ok5618: - %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 1 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t147 = load i64, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %t145 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 %t147, %t149 - br i1 %t150, label %range5619, label %inrange5620 -range5619: - call void @finch_panic_index(ptr @.str.3609, i64 2834, i64 %t147, i64 %t149) - unreachable -inrange5620: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 %t147 - %t153 = load { ptr, i64, i64 }, ptr %t152 - %t154 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t142, { ptr, i64, i64 } %t153) - store { ptr, i64, i64 } { ptr @.str.3606, i64 33, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t159, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3610, i64 6, i64 0 }, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t159, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t166 = load i64, ptr %t165 - call void @finch_str_from_int(ptr %a167, i64 %t166) - %t168 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t164, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t164, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t168, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t174, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.3611, i64 6, i64 0 }, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t174, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t179, ptr %a182 - store { ptr, i64, i64 } %t180, ptr %a183 - call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) - store { ptr, i64, i64 } %t179, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load { ptr, i64, i64 }, ptr %a181 - store { ptr, i64, i64 } %t185, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.3612, i64 1, i64 0 }, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t141, { ptr, i64, i64 } %t190) - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t192, { ptr, i64, i64 } { ptr @.str.3613, i64 11, i64 0 }) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5621, label %ok5622 -panic5621: - call void @finch_panic(ptr @.str.3614, i64 2836, ptr @.str.3615) - unreachable -ok5622: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load ptr, ptr %a1 - %t199 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t198, %S.gen.Val %t199) - %t200 = load ptr, ptr %a1 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a79 - %t203 = load %S.ast.Type, ptr %a4 - %t204 = load { ptr, i64, i64 }, ptr %a105 - %t205 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t201, { ptr, i64, i64 } %t202, %S.ast.Type %t203, { ptr, i64, i64 } %t204) - %t206 = load %S.ast.Type, ptr %a4 - %t207 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t200, { ptr, i64, i64 } %t205, %S.ast.Type %t206, i64 2) - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_drop(ptr %a208) - store { ptr, i64, i64 } %t207, ptr %a209 - %t210 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t211 = load i1, ptr %t210 - br i1 %t211, label %then5623, label %endif5625 -then5623: - %t212 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t213 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t213, ptr %a214 - call void @finch_str_copy(ptr %a215, ptr %a214) - %t216 = load { ptr, i64, i64 }, ptr %a215 - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t216, 0 - %t218 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t212, %S.gen.Place %t222, 1 - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t223 -endif5625: - %t224 = load ptr, ptr %a1 - %t225 = load ptr, ptr %a1 - %t226 = load %S.ast.Type, ptr %a27 - %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) - %t228 = load { ptr, i64, i64 }, ptr %a209 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t224, { ptr, i64, i64 } %t227, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t232, ptr %a233 - call void @finch_str_copy(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t235, 0 - %t237 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - %t241 = insertvalue %S.gen.Val %t236, %S.ast.Type %t240, 1 - store %S.gen.Val %t241, ptr %a242 - %t243 = load ptr, ptr %a1 - %t244 = load %S.ast.Type, ptr %a27 - %t245 = call i1 @finch.gen.owning(ptr %t243, %S.ast.Type %t244) - br label %logic.from5626 -logic.from5626: - br i1 %t245, label %logic.rhs5627, label %logic.end5628 -logic.rhs5627: - %t246 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t247 = getelementptr inbounds %S.gen.Val, ptr %t246, i32 0, i32 2 - %t248 = load i1, ptr %t247 - br label %logic.rend5629 -logic.rend5629: - br label %logic.end5628 -logic.end5628: - %t249 = phi i1 [ false, %logic.from5626 ], [ %t248, %logic.rend5629 ] - br i1 %t249, label %then5630, label %endif5632 -then5630: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a231 - %t252 = load %S.ast.Type, ptr %a27 - %t253 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252) - %t254 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t253, 0 - %t255 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t254, %S.ast.Type %t258, 1 - %t260 = insertvalue %S.gen.Val %t259, i1 true, 2 - %t261 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t260, ptr %a242 - store %S.gen.Val %t261, ptr %a262 - call void @finch.drop.S_gen_Val(ptr %a262) - br label %endif5632 -endif5632: - %t263 = load ptr, ptr %a1 - %t264 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t265 = load %S.gen.Val, ptr %t264 - call void @finch.gen.release(ptr %t263, %S.gen.Val %t265) - %t266 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t267 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t267, ptr %a268 - call void @finch.copy.S_gen_Val(ptr %a269, ptr %a268) - %t270 = load %S.gen.Val, ptr %a269 - %t271 = insertvalue %S.gen.Ref %t266, %S.gen.Val %t270, 2 - call void @finch.drop.S_gen_Val(ptr %a242) - call void @finch_str_drop(ptr %a231) - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t271 -} - -define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a71 = alloca %S.ast.Node, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.gen.Val, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a159 = alloca %S.ast.Type, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca i64, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca i64, align 16 - %a208 = alloca %S.gen.Val, align 16 - %a209 = alloca %S.gen.Val, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a236 = alloca %S.gen.Val, align 16 - %a257 = alloca %S.gen.Val, align 16 - %a261 = alloca %S.gen.Val, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a264 = alloca %S.gen.Val, align 16 - %a290 = alloca %S.gen.Val, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca %S.ast.Type, align 16 - %a369 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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.3616, 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 %then5633, label %endif5635 -then5633: - %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 %then5636, label %endif5638 -then5636: - %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.3617, i64 52, i64 0 }) - br label %endif5638 -endif5638: - 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.cond5639 -for.cond5639: - %t31 = load i64, ptr %a30 - %t32 = icmp slt i64 %t31, %t29 - br i1 %t32, label %for.body5640, label %for.end5642 -for.body5640: - %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 %range5643, label %inrange5644 -range5643: - call void @finch_panic_index(ptr @.str.3618, i64 2866, i64 %t36, i64 %t38) - unreachable -inrange5644: - %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.3619, 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.from5645 -logic.from5645: - br i1 %t52, label %logic.rhs5646, label %logic.end5647 -logic.rhs5646: - %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.3620, 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.rend5648 -logic.rend5648: - br label %logic.end5647 -logic.end5647: - %t59 = phi i1 [ false, %logic.from5645 ], [ %t58, %logic.rend5648 ] - br i1 %t59, label %then5649, label %endif5651 -then5649: - %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 %range5652, label %inrange5653 -range5652: - call void @finch_panic_index(ptr @.str.3621, i64 2868, i64 0, i64 %t62) - unreachable -inrange5653: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 - %t66 = load %S.ast.Node, ptr %t65 - store %S.ast.Node %t66, ptr %a67 - call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) - %t69 = load %S.ast.Node, ptr %a68 - %t70 = load %S.ast.Node, ptr %a46 - store %S.ast.Node %t69, ptr %a46 - store %S.ast.Node %t70, ptr %a71 - call void @finch.drop.S_ast_Node(ptr %a71) - br label %endif5651 -endif5651: - %t72 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.3622, i64 5, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then5654, label %else5655 -then5654: - store i1 true, ptr %a25 - br label %endif5656 -else5655: - %t78 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3623, i64 3, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp eq i32 %t82, 0 - br i1 %t83, label %then5657, label %endif5659 -then5657: - store i1 false, ptr %a24 - br label %endif5659 -endif5659: - br label %endif5656 -endif5656: - call void @finch.drop.S_ast_Node(ptr %a46) - br label %for.step5641 -for.step5641: - %t84 = load i64, ptr %a30 - %t85 = add i64 %t84, 1 - store i64 %t85, ptr %a30 - br label %for.cond5639 -for.end5642: - %t86 = load ptr, ptr %a1 - %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range5660, label %inrange5661 -range5660: - call void @finch_panic_index(ptr @.str.3624, i64 2876, i64 0, i64 %t89) - unreachable -inrange5661: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i64 0 - %t93 = load %S.ast.Node, ptr %t92 - %t94 = call %S.gen.Val @finch.gen.expr(ptr %t86, %S.ast.Node %t93) - %t95 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t94, ptr %a10 - store %S.gen.Val %t95, ptr %a96 - call void @finch.drop.S_gen_Val(ptr %a96) - %t97 = load ptr, ptr %a1 - %t98 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t99 = load { ptr, i64, i64 }, ptr %t98 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 1, %t100 - br i1 %t101, label %range5662, label %inrange5663 -range5662: - call void @finch_panic_index(ptr @.str.3625, i64 2877, i64 1, i64 %t100) - unreachable -inrange5663: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Node, ptr %t102, i64 1 - %t104 = load %S.ast.Node, ptr %t103 - %t105 = call %S.gen.Val @finch.gen.expr(ptr %t97, %S.ast.Node %t104) - %t106 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t105, ptr %a11 - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - %t108 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3626, i64 4, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.from5664 -logic.from5664: - br i1 %t114, label %logic.end5666, label %logic.rhs5665 -logic.rhs5665: - %t115 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0 - %t117 = load { ptr, i64, i64 }, ptr %t116 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.3627, i64 4, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.rend5667 -logic.rend5667: - br label %logic.end5666 -logic.end5666: - %t122 = phi i1 [ true, %logic.from5664 ], [ %t121, %logic.rend5667 ] - br i1 %t122, label %then5668, label %endif5670 -then5668: - %t123 = load ptr, ptr %a1 - %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t125 = load { ptr, i64, i64 }, ptr %t124 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 0, %t126 - br i1 %t127, label %range5671, label %inrange5672 -range5671: - call void @finch_panic_index(ptr @.str.3628, i64 2879, i64 0, i64 %t126) - unreachable -inrange5672: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds %S.ast.Node, ptr %t128, i64 0 - %t130 = load %S.ast.Node, ptr %t129 - call void @finch.gen.fail(ptr %t123, %S.ast.Node %t130, { ptr, i64, i64 } { ptr @.str.3629, i64 35, i64 0 }) - br label %endif5670 -endif5670: - %t131 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.3630, 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.from5673 -logic.from5673: - br i1 %t137, label %logic.end5675, label %logic.rhs5674 -logic.rhs5674: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.3631, i64 4, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br label %logic.rend5676 -logic.rend5676: - br label %logic.end5675 -logic.end5675: - %t145 = phi i1 [ true, %logic.from5673 ], [ %t144, %logic.rend5676 ] - br i1 %t145, label %then5677, label %endif5679 -then5677: - %t146 = load ptr, ptr %a1 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 1, %t149 - br i1 %t150, label %range5680, label %inrange5681 -range5680: - call void @finch_panic_index(ptr @.str.3632, i64 2882, i64 1, i64 %t149) - unreachable -inrange5681: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 1 - %t153 = load %S.ast.Node, ptr %t152 - call void @finch.gen.fail(ptr %t146, %S.ast.Node %t153, { ptr, i64, i64 } { ptr @.str.3633, i64 37, i64 0 }) - br label %endif5679 -endif5679: - %t154 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t155 = load %S.ast.Type, ptr %t154 - store %S.ast.Type %t155, ptr %a156 - call void @finch.copy.S_ast_Type(ptr %a157, ptr %a156) - %t158 = load %S.ast.Type, ptr %a157 - store %S.ast.Type %t158, ptr %a159 - %t160 = load i1, ptr %a24 - br label %logic.from5682 -logic.from5682: - br i1 %t160, label %logic.rhs5683, label %logic.end5684 -logic.rhs5683: - %t161 = load i1, ptr %a25 - br label %logic.rend5685 -logic.rend5685: - br label %logic.end5684 -logic.end5684: - %t162 = phi i1 [ false, %logic.from5682 ], [ %t161, %logic.rend5685 ] - br i1 %t162, label %then5686, label %endif5688 -then5686: - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3634, i64 5, i64 0 }) - %t164 = load %S.ast.Type, ptr %a159 - store %S.ast.Type %t163, ptr %a159 - store %S.ast.Type %t164, ptr %a165 - call void @finch.drop.S_ast_Type(ptr %a165) - br label %endif5688 -endif5688: - %t166 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load %S.ast.Type, ptr %a159 - %t169 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t167, %S.ast.Type %t168) - %t170 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t169, ptr %a8 - store %S.ast.Type %t170, ptr %a171 - call void @finch.drop.S_ast_Type(ptr %a171) - store i1 true, ptr %a9 - call void @finch.drop.S_ast_Type(ptr %a159) - br label %endif5635 -endif5635: - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a8 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t172, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t176, ptr %a178 - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = load %S.ast.Type, ptr %a8 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t181) - %t183 = load { ptr, i64, i64 }, ptr %a178 - call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t182, { ptr, i64, i64 } { ptr @.str.3635, i64 15, i64 0 }, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t182, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load ptr, ptr %a1 - %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic5689, label %ok5690 -panic5689: - call void @finch_panic(ptr @.str.3636, i64 2893, ptr @.str.3637) - unreachable -ok5690: - %t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 11 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load i64, ptr %t188 - store i64 %t189, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a178 - %t193 = load %S.ast.Type, ptr %a8 - call void @finch.gen.holdAddr(ptr %t191, { ptr, i64, i64 } %t192, %S.ast.Type %t193) - %t194 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = sdiv i64 %t196, 2 - store i64 0, ptr %a198 - br label %for.cond5691 -for.cond5691: - %t199 = load i64, ptr %a198 - %t200 = icmp slt i64 %t199, %t197 - br i1 %t200, label %for.body5692, label %for.end5694 -for.body5692: - %t201 = load ptr, ptr %a1 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic5695, label %ok5696 -panic5695: - call void @finch_panic(ptr @.str.3638, i64 2896, ptr @.str.3639) - unreachable -ok5696: - %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 11 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - store i64 %t205, ptr %a206 - %t207 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t207, ptr %a208 - call void @finch.copy.S_gen_Val(ptr %a209, ptr %a208) - %t210 = load %S.gen.Val, ptr %a209 - store %S.gen.Val %t210, ptr %a211 - %t212 = load i64, ptr %a198 - %t213 = icmp eq i64 %t212, 0 - br label %logic.from5697 -logic.from5697: - br i1 %t213, label %logic.rhs5698, label %logic.end5699 -logic.rhs5698: - %t214 = load i1, ptr %a9 - br label %logic.rend5700 -logic.rend5700: - br label %logic.end5699 -logic.end5699: - %t215 = phi i1 [ false, %logic.from5697 ], [ %t214, %logic.rend5700 ] - %t216 = xor i1 %t215, true - br i1 %t216, label %then5701, label %endif5703 -then5701: - %t217 = load ptr, ptr %a1 - %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t219 = load i64, ptr %a198 - %t220 = mul i64 2, %t219 - %t221 = load { ptr, i64, i64 }, ptr %t218 - %t222 = extractvalue { ptr, i64, i64 } %t221, 1 - %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range5704, label %inrange5705 -range5704: - call void @finch_panic_index(ptr @.str.3640, i64 2899, i64 %t220, i64 %t222) - unreachable -inrange5705: - %t224 = extractvalue { ptr, i64, i64 } %t221, 0 - %t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220 - %t226 = load %S.ast.Node, ptr %t225 - %t227 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t228 = load { ptr, i64, i64 }, ptr %t227 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 0, %t229 - br i1 %t230, label %range5706, label %inrange5707 -range5706: - call void @finch_panic_index(ptr @.str.3641, i64 2899, i64 0, i64 %t229) - unreachable -inrange5707: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds %S.ast.Type, ptr %t231, i64 0 - %t233 = load %S.ast.Type, ptr %t232 - %t234 = call %S.gen.Val @finch.gen.exprWant(ptr %t217, %S.ast.Node %t226, %S.ast.Type %t233) - %t235 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t234, ptr %a211 - store %S.gen.Val %t235, ptr %a236 - call void @finch.drop.S_gen_Val(ptr %a236) - br label %endif5703 -endif5703: - %t237 = load ptr, ptr %a1 - %t238 = load %S.gen.Val, ptr %a211 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 0, %t241 - br i1 %t242, label %range5708, label %inrange5709 -range5708: - call void @finch_panic_index(ptr @.str.3642, i64 2901, i64 0, i64 %t241) - unreachable -inrange5709: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t247 = load i64, ptr %a198 - %t248 = mul i64 2, %t247 - %t249 = load { ptr, i64, i64 }, ptr %t246 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5710, label %inrange5711 -range5710: - call void @finch_panic_index(ptr @.str.3643, i64 2901, i64 %t248, i64 %t250) - unreachable -inrange5711: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - %t255 = call %S.gen.Val @finch.gen.coerce(ptr %t237, %S.gen.Val %t238, %S.ast.Type %t245, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3644, i64 21, i64 0 }) - %t256 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t255, ptr %a211 - store %S.gen.Val %t256, ptr %a257 - call void @finch.drop.S_gen_Val(ptr %a257) - %t258 = load ptr, ptr %a1 - %t259 = load %S.gen.Val, ptr %a211 - call void @finch.gen.hold(ptr %t258, %S.gen.Val %t259) - %t260 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t260, ptr %a261 - call void @finch.copy.S_gen_Val(ptr %a262, ptr %a261) - %t263 = load %S.gen.Val, ptr %a262 - store %S.gen.Val %t263, ptr %a264 - %t265 = load i64, ptr %a198 - %t266 = icmp eq i64 %t265, 0 - br label %logic.from5712 -logic.from5712: - br i1 %t266, label %logic.rhs5713, label %logic.end5714 -logic.rhs5713: - %t267 = load i1, ptr %a9 - br label %logic.rend5715 -logic.rend5715: - br label %logic.end5714 -logic.end5714: - %t268 = phi i1 [ false, %logic.from5712 ], [ %t267, %logic.rend5715 ] - %t269 = xor i1 %t268, true - br i1 %t269, label %then5716, label %endif5718 -then5716: - %t270 = load ptr, ptr %a1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t272 = load i64, ptr %a198 - %t273 = mul i64 2, %t272 - %t274 = add i64 %t273, 1 - %t275 = load { ptr, i64, i64 }, ptr %t271 - %t276 = extractvalue { ptr, i64, i64 } %t275, 1 - %t277 = icmp uge i64 %t274, %t276 - br i1 %t277, label %range5719, label %inrange5720 -range5719: - call void @finch_panic_index(ptr @.str.3645, i64 2905, i64 %t274, i64 %t276) - unreachable -inrange5720: - %t278 = extractvalue { ptr, i64, i64 } %t275, 0 - %t279 = getelementptr inbounds %S.ast.Node, ptr %t278, i64 %t274 - %t280 = load %S.ast.Node, ptr %t279 - %t281 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t282 = load { ptr, i64, i64 }, ptr %t281 - %t283 = extractvalue { ptr, i64, i64 } %t282, 1 - %t284 = icmp uge i64 1, %t283 - br i1 %t284, label %range5721, label %inrange5722 -range5721: - call void @finch_panic_index(ptr @.str.3646, i64 2905, i64 1, i64 %t283) - unreachable -inrange5722: - %t285 = extractvalue { ptr, i64, i64 } %t282, 0 - %t286 = getelementptr inbounds %S.ast.Type, ptr %t285, i64 1 - %t287 = load %S.ast.Type, ptr %t286 - %t288 = call %S.gen.Val @finch.gen.exprWant(ptr %t270, %S.ast.Node %t280, %S.ast.Type %t287) - %t289 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t288, ptr %a264 - store %S.gen.Val %t289, ptr %a290 - call void @finch.drop.S_gen_Val(ptr %a290) - br label %endif5718 -endif5718: - %t291 = load ptr, ptr %a1 - %t292 = load %S.gen.Val, ptr %a264 - %t293 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t294 = load { ptr, i64, i64 }, ptr %t293 - %t295 = extractvalue { ptr, i64, i64 } %t294, 1 - %t296 = icmp uge i64 1, %t295 - br i1 %t296, label %range5723, label %inrange5724 -range5723: - call void @finch_panic_index(ptr @.str.3647, i64 2907, i64 1, i64 %t295) - unreachable -inrange5724: - %t297 = extractvalue { ptr, i64, i64 } %t294, 0 - %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 1 - %t299 = load %S.ast.Type, ptr %t298 - %t300 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t301 = load i64, ptr %a198 - %t302 = mul i64 2, %t301 - %t303 = add i64 %t302, 1 - %t304 = load { ptr, i64, i64 }, ptr %t300 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range5725, label %inrange5726 -range5725: - call void @finch_panic_index(ptr @.str.3648, i64 2907, i64 %t303, i64 %t305) - unreachable -inrange5726: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Node, ptr %t307, i64 %t303 - %t309 = load %S.ast.Node, ptr %t308 - %t310 = call %S.gen.Val @finch.gen.coerce(ptr %t291, %S.gen.Val %t292, %S.ast.Type %t299, %S.ast.Node %t309, { ptr, i64, i64 } { ptr @.str.3649, i64 23, i64 0 }) - %t311 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t310, ptr %a264 - store %S.gen.Val %t311, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a264 - %t315 = call { ptr, i64, i64 } @finch.gen.own(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = load ptr, ptr %a1 - %t318 = load { ptr, i64, i64 }, ptr %a178 - %t319 = load %S.ast.Type, ptr %a8 - %t320 = load %S.gen.Val, ptr %a211 - %t321 = load %S.ast.Node, ptr %a2 - %t322 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t317, { ptr, i64, i64 } %t318, %S.ast.Type %t319, %S.gen.Val %t320, i1 false, %S.ast.Node %t321) - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a323 - %t326 = load %S.ast.Type, ptr %a8 - %t327 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t324, { ptr, i64, i64 } %t325, %S.ast.Type %t326, i64 2) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = load { ptr, i64, i64 }, ptr %a328 - %t331 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t332 = load { ptr, i64, i64 }, ptr %t331 - %t333 = extractvalue { ptr, i64, i64 } %t332, 1 - %t334 = icmp uge i64 1, %t333 - br i1 %t334, label %range5727, label %inrange5728 -range5727: - call void @finch_panic_index(ptr @.str.3650, i64 2911, i64 1, i64 %t333) - unreachable -inrange5728: - %t335 = extractvalue { ptr, i64, i64 } %t332, 0 - %t336 = getelementptr inbounds %S.ast.Type, ptr %t335, i64 1 - %t337 = load %S.ast.Type, ptr %t336 - call void @finch.gen.dropAt(ptr %t329, { ptr, i64, i64 } %t330, %S.ast.Type %t337) - %t338 = load ptr, ptr %a1 - %t339 = load ptr, ptr %a1 - %t340 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t341 = load { ptr, i64, i64 }, ptr %t340 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 1, %t342 - br i1 %t343, label %range5729, label %inrange5730 -range5729: - call void @finch_panic_index(ptr @.str.3651, i64 2912, i64 1, i64 %t342) - unreachable -inrange5730: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Type, ptr %t344, i64 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t339, %S.ast.Type %t346) - %t348 = load { ptr, i64, i64 }, ptr %a316 - %t349 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.store(ptr %t338, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t348, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load ptr, ptr %a1 - %t352 = load %S.gen.Val, ptr %a211 - call void @finch.gen.release(ptr %t351, %S.gen.Val %t352) - %t353 = load ptr, ptr %a1 - %t354 = load i64, ptr %a206 - call void @finch.gen.heldEnd(ptr %t353, i64 %t354) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a316) - call void @finch.drop.S_gen_Val(ptr %a264) - call void @finch.drop.S_gen_Val(ptr %a211) - br label %for.step5693 -for.step5693: - %t355 = load i64, ptr %a198 - %t356 = add i64 %t355, 1 - store i64 %t356, ptr %a198 - br label %for.cond5691 -for.end5694: - %t357 = load ptr, ptr %a1 - %t358 = load i64, ptr %a190 - call void @finch.gen.heldEnd(ptr %t357, i64 %t358) - %t359 = load ptr, ptr %a1 - %t360 = load ptr, ptr %a1 - %t361 = load %S.ast.Type, ptr %a8 - %t362 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t360, %S.ast.Type %t361) - %t363 = load { ptr, i64, i64 }, ptr %a178 - %t364 = call { ptr, i64, i64 } @finch.gen.load(ptr %t359, { ptr, i64, i64 } %t362, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 - %t367 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t367, ptr %a368 - call void @finch.copy.S_ast_Type(ptr %a369, ptr %a368) - %t370 = load %S.ast.Type, ptr %a369 - %t371 = insertvalue %S.gen.Val %t366, %S.ast.Type %t370, 1 - %t372 = insertvalue %S.gen.Val %t371, i1 true, 2 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.S_gen_Val(ptr %a11) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.gen.Val %t372 -} - -define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a82 = alloca %S.gen.Val, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a278 = alloca %S.gen.Val, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca %S.ast.Type, align 16 - %a351 = alloca %S.ast.Type, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca i64, align 16 - %a501 = alloca %S.ast.Type, align 16 - %a502 = alloca %S.ast.Type, align 16 - %a504 = alloca %S.ast.Type, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a515 = alloca %S.ast.Type, align 16 - %a518 = alloca %S.ast.Type, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.ast.Type, align 16 - %a753 = alloca %S.ast.Type, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5731, label %inrange5732 -range5731: - call void @finch_panic_index(ptr @.str.3652, i64 2922, i64 0, i64 %t13) - unreachable -inrange5732: - %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 %range5733, label %inrange5734 -range5733: - call void @finch_panic_index(ptr @.str.3653, i64 2923, i64 1, i64 %t24) - unreachable -inrange5734: - %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.3654, 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.from5735 -logic.from5735: - br i1 %t37, label %logic.end5737, label %logic.rhs5736 -logic.rhs5736: - %t38 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3655, 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.rend5738 -logic.rend5738: - br label %logic.end5737 -logic.end5737: - %t43 = phi i1 [ true, %logic.from5735 ], [ %t42, %logic.rend5738 ] - br label %logic.from5739 -logic.from5739: - br i1 %t43, label %logic.end5741, label %logic.rhs5740 -logic.rhs5740: - %t44 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.3656, 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.rend5742 -logic.rend5742: - br label %logic.end5741 -logic.end5741: - %t49 = phi i1 [ true, %logic.from5739 ], [ %t48, %logic.rend5742 ] - br i1 %t49, label %then5743, label %endif5745 -then5743: - %t50 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3657, 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 %then5746, label %else5747 -then5746: - %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 %endif5748 -else5747: - %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 %endif5748 -endif5748: - %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 %range5749, label %inrange5750 -range5749: - call void @finch_panic_index(ptr @.str.3658, i64 2930, i64 1, i64 %t65) - unreachable -inrange5750: - %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 %range5751, label %inrange5752 -range5751: - call void @finch_panic_index(ptr @.str.3659, i64 2930, i64 1, i64 %t75) - unreachable -inrange5752: - %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.3660, i64 7, i64 0 }) - store %S.gen.Val %t71, ptr %a81 - call void @finch.drop.S_gen_Val(ptr %a81) - store %S.gen.Val %t80, ptr %a82 - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a3 - %t85 = load ptr, ptr %a1 - %t86 = load %S.gen.Val, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t86) - %t88 = load %S.ast.Type, ptr %a4 - %t89 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t83, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t87, %S.ast.Type %t88) - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t89, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load %S.gen.Val, ptr %a82 - call void @finch.gen.release(ptr %t92, %S.gen.Val %t93) - %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3661, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3662, i64 3, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t94, { ptr, i64, i64 } %t104) - store { ptr, i64, i64 } %t104, ptr %a106 - call void @finch_str_drop(ptr %a106) - store { ptr, i64, i64 } %t105, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.3663, i64 3, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then5753, label %endif5755 -then5753: - %t113 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t113, ptr %a114 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 - %t118 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3664, i64 4, i64 0 }) - %t119 = insertvalue %S.gen.Val %t117, %S.ast.Type %t118, 1 - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t119 -endif5755: - %t120 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.3665, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then5756, label %endif5758 -then5756: - %t125 = load ptr, ptr %a1 - %t126 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t125, { ptr, i64, i64 } { ptr @.str.3666, i64 10, i64 0 }) - store { ptr, i64, i64 } %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t128, { ptr, i64, i64 } { ptr @.str.3667, i64 10, i64 0 }) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a107 - %t133 = load { ptr, i64, i64 }, ptr %a127 - %t134 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.condBr(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t134) - %t135 = load ptr, ptr %a1 - %t136 = load { ptr, i64, i64 }, ptr %a127 - call void @finch.gen.label(ptr %t135, { ptr, i64, i64 } %t136) - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a3 - %t139 = load %S.ast.Type, ptr %a4 - %t140 = load { ptr, i64, i64 }, ptr %a91 - %t141 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t137, { ptr, i64, i64 } %t138, %S.ast.Type %t139, { ptr, i64, i64 } %t140) - store { ptr, i64, i64 } %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a142 - %t146 = load %S.ast.Type, ptr %a4 - %t147 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Type %t146, i64 1) - %t148 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t143, { ptr, i64, i64 } %t147, %S.ast.Type %t148) - store { ptr, i64, i64 } %t147, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a142 - %t153 = load %S.ast.Type, ptr %a4 - %t154 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t151, { ptr, i64, i64 } %t152, %S.ast.Type %t153, i64 2) - %t155 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t150, { ptr, i64, i64 } %t154, %S.ast.Type %t155) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load ptr, ptr %a1 - %t158 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3668, i64 35, i64 0 }, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t162, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3669, i64 6, i64 0 }, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - %t168 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t167, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.3670, i64 6, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = load ptr, ptr %a1 - %t180 = load %S.ast.Type, ptr %a4 - %t181 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t179, %S.ast.Type %t180) - store { ptr, i64, i64 } %t178, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t178, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t181, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.3671, i64 1, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.br(ptr %t194, { ptr, i64, i64 } %t195) - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t198, ptr %a199 - call void @finch_str_copy(ptr %a200, ptr %a199) - %t201 = load { ptr, i64, i64 }, ptr %a200 - %t202 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t201, 0 - %t203 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3672, i64 4, i64 0 }) - %t204 = insertvalue %S.gen.Val %t202, %S.ast.Type %t203, 1 - call void @finch_str_drop(ptr %a142) - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a127) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t204 -endif5758: - %t205 = load ptr, ptr %a1 - %t206 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t205, { ptr, i64, i64 } { ptr @.str.3673, i64 9, i64 0 }) - store { ptr, i64, i64 } %t206, ptr %a207 - %t208 = load ptr, ptr %a1 - %t209 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t208, { ptr, i64, i64 } { ptr @.str.3674, i64 11, i64 0 }) - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t211, { ptr, i64, i64 } { ptr @.str.3675, i64 8, i64 0 }) - store { ptr, i64, i64 } %t212, ptr %a213 - %t214 = load ptr, ptr %a1 - %t215 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t214, { ptr, i64, i64 } { ptr @.str.3676, i64 8, i64 0 }) - store { ptr, i64, i64 } %t215, ptr %a216 - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t217, { ptr, i64, i64 } { ptr @.str.3677, i64 7, i64 0 }) - store { ptr, i64, i64 } %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a107 - %t222 = load { ptr, i64, i64 }, ptr %a207 - %t223 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.condBr(ptr %t220, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223) - %t224 = load ptr, ptr %a1 - %t225 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.label(ptr %t224, { ptr, i64, i64 } %t225) - %t226 = load ptr, ptr %a1 - %t227 = load ptr, ptr %a1 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a32 - %t230 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t228, %S.ast.Type %t229) - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load { ptr, i64, i64 }, ptr %a3 - %t234 = load %S.ast.Type, ptr %a4 - %t235 = load { ptr, i64, i64 }, ptr %a91 - %t236 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } %t233, %S.ast.Type %t234, { ptr, i64, i64 } %t235) - %t237 = load %S.ast.Type, ptr %a4 - %t238 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t231, { ptr, i64, i64 } %t236, %S.ast.Type %t237, i64 2) - store { ptr, i64, i64 } %t236, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } %t230, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t230, ptr %a241 - call void @finch_str_drop(ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load %S.ast.Type, ptr %a32 - %t244 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t226, { ptr, i64, i64 } %t240, %S.ast.Type %t243) - store { ptr, i64, i64 } %t240, ptr %a245 - call void @finch_str_drop(ptr %a245) - store { ptr, i64, i64 } %t244, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t248) - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.label(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a1 - %t252 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t251, { ptr, i64, i64 } %t252) - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.label(ptr %t253, { ptr, i64, i64 } %t254) - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load ptr, ptr %a1 - %t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t259 = load { ptr, i64, i64 }, ptr %t258 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 2, %t260 - br i1 %t261, label %range5759, label %inrange5760 -range5759: - call void @finch_panic_index(ptr @.str.3678, i64 2963, i64 2, i64 %t260) - unreachable -inrange5760: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Node, ptr %t262, i64 2 - %t264 = load %S.ast.Node, ptr %t263 - %t265 = load %S.ast.Type, ptr %a32 - %t266 = call %S.gen.Val @finch.gen.exprWant(ptr %t257, %S.ast.Node %t264, %S.ast.Type %t265) - %t267 = load %S.ast.Type, ptr %a32 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = extractvalue { ptr, i64, i64 } %t269, 1 - %t271 = icmp uge i64 2, %t270 - br i1 %t271, label %range5761, label %inrange5762 -range5761: - call void @finch_panic_index(ptr @.str.3679, i64 2963, i64 2, i64 %t270) - unreachable -inrange5762: - %t272 = extractvalue { ptr, i64, i64 } %t269, 0 - %t273 = getelementptr inbounds %S.ast.Node, ptr %t272, i64 2 - %t274 = load %S.ast.Node, ptr %t273 - %t275 = call %S.gen.Val @finch.gen.coerce(ptr %t256, %S.gen.Val %t266, %S.ast.Type %t267, %S.ast.Node %t274, { ptr, i64, i64 } { ptr @.str.3680, i64 11, i64 0 }) - store %S.gen.Val %t266, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - %t277 = call { ptr, i64, i64 } @finch.gen.own(ptr %t255, %S.gen.Val %t275) - store %S.gen.Val %t275, ptr %a278 - call void @finch.drop.S_gen_Val(ptr %a278) - store { ptr, i64, i64 } %t277, ptr %a279 - %t280 = load ptr, ptr %a1 - %t281 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.br(ptr %t280, { ptr, i64, i64 } %t281) - %t282 = load ptr, ptr %a1 - %t283 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.label(ptr %t282, { ptr, i64, i64 } %t283) - %t284 = load ptr, ptr %a1 - %t285 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t284, { ptr, i64, i64 } %t285) - %t286 = load ptr, ptr %a1 - %t287 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.label(ptr %t286, { ptr, i64, i64 } %t287) - %t288 = load ptr, ptr %a1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a32 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } { ptr @.str.3681, i64 4, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.3682, i64 3, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t301, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t301, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3683, i64 3, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t312, ptr %a315 - store { ptr, i64, i64 } %t313, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t312, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3684, i64 6, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - %t324 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t323, ptr %a326 - store { ptr, i64, i64 } %t324, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.3685, i64 3, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t334, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t334, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.3686, i64 2, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t345) - store { ptr, i64, i64 } %t345, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t346, 0 - %t349 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t349, ptr %a350 - call void @finch.copy.S_ast_Type(ptr %a351, ptr %a350) - %t352 = load %S.ast.Type, ptr %a351 - %t353 = insertvalue %S.gen.Val %t348, %S.ast.Type %t352, 1 - %t354 = load ptr, ptr %a1 - %t355 = load %S.ast.Type, ptr %a32 - %t356 = call i1 @finch.gen.owning(ptr %t354, %S.ast.Type %t355) - %t357 = insertvalue %S.gen.Val %t353, i1 %t356, 2 - call void @finch_str_drop(ptr %a279) - call void @finch_str_drop(ptr %a246) - call void @finch_str_drop(ptr %a219) - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a213) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a207) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t357 -endif5745: - %t358 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.3687, i64 5, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then5763, label %endif5765 -then5763: - %t363 = load ptr, ptr %a1 - %t364 = load %S.ast.Node, ptr %a2 - %t365 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t363, %S.ast.Node %t364, i64 1, i64 0, { ptr, i64, i64 } %t365) - %t366 = load ptr, ptr %a1 - %t367 = load %S.ast.Type, ptr %a21 - %t368 = call i1 @finch.gen.owning(ptr %t366, %S.ast.Type %t367) - br label %logic.from5766 -logic.from5766: - br i1 %t368, label %logic.end5768, label %logic.rhs5767 -logic.rhs5767: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Type, ptr %a32 - %t371 = call i1 @finch.gen.owning(ptr %t369, %S.ast.Type %t370) - br label %logic.rend5769 -logic.rend5769: - br label %logic.end5768 -logic.end5768: - %t372 = phi i1 [ true, %logic.from5766 ], [ %t371, %logic.rend5769 ] - br i1 %t372, label %then5770, label %endif5772 -then5770: - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a4 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - store { ptr, i64, i64 } { ptr @.str.3689, i64 23, i64 0 }, ptr %a379 - store { ptr, i64, i64 } %t377, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t382, ptr %a384 - store { ptr, i64, i64 } { ptr @.str.3690, i64 6, i64 0 }, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - %t388 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t387, ptr %a390 - store { ptr, i64, i64 } %t388, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t387, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - store { ptr, i64, i64 } %t393, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.3691, i64 14, i64 0 }, ptr %a396 - call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) - store { ptr, i64, i64 } %t393, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load { ptr, i64, i64 }, ptr %a394 - %t399 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t398) - store { ptr, i64, i64 } %t398, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.3688, i64 3, i64 0 }, { ptr, i64, i64 } %t399) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store { ptr, i64, i64 } %t401, ptr %a403 - %t404 = load ptr, ptr %a1 - %t405 = load { ptr, i64, i64 }, ptr %a403 - %t406 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t404, { ptr, i64, i64 } %t405) - store { ptr, i64, i64 } %t406, ptr %a407 - %t408 = load ptr, ptr %a1 - %t409 = load { ptr, i64, i64 }, ptr %a3 - %t410 = load %S.ast.Type, ptr %a4 - %t411 = load { ptr, i64, i64 }, ptr %a407 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 3, %t412 - br i1 %t413, label %range5773, label %inrange5774 -range5773: - call void @finch_panic_index(ptr @.str.3692, i64 2975, i64 3, i64 %t412) - unreachable -inrange5774: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 3 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t408, { ptr, i64, i64 } %t409, %S.ast.Type %t410, { ptr, i64, i64 } %t416) - store { ptr, i64, i64 } %t417, ptr %a418 - %t419 = load ptr, ptr %a1 - %t420 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t419, { ptr, i64, i64 } { ptr @.str.3693, i64 10, i64 0 }) - store { ptr, i64, i64 } %t420, ptr %a421 - %t422 = load ptr, ptr %a1 - %t423 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t422, { ptr, i64, i64 } { ptr @.str.3694, i64 10, i64 0 }) - store { ptr, i64, i64 } %t423, ptr %a424 - %t425 = load ptr, ptr %a1 - %t426 = load ptr, ptr %a1 - %t427 = load ptr, ptr %a1 - %t428 = load ptr, ptr %a1 - %t429 = load { ptr, i64, i64 }, ptr %a418 - %t430 = load %S.ast.Type, ptr %a4 - %t431 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t428, { ptr, i64, i64 } %t429, %S.ast.Type %t430, i64 0) - %t432 = call { ptr, i64, i64 } @finch.gen.load(ptr %t427, { ptr, i64, i64 } { ptr @.str.3696, i64 3, i64 0 }, { ptr, i64, i64 } %t431) - store { ptr, i64, i64 } %t431, ptr %a433 - call void @finch_str_drop(ptr %a433) - store { ptr, i64, i64 } { ptr @.str.3695, i64 12, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t432, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t432, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.3697, i64 3, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t426, { ptr, i64, i64 } %t443) - store { ptr, i64, i64 } %t443, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load { ptr, i64, i64 }, ptr %a421 - %t447 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.condBr(ptr %t425, { ptr, i64, i64 } %t444, { ptr, i64, i64 } %t446, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t444, ptr %a448 - call void @finch_str_drop(ptr %a448) - %t449 = load ptr, ptr %a1 - %t450 = load { ptr, i64, i64 }, ptr %a421 - call void @finch.gen.label(ptr %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load ptr, ptr %a1 - %t453 = load { ptr, i64, i64 }, ptr %a418 - %t454 = load %S.ast.Type, ptr %a4 - %t455 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t452, { ptr, i64, i64 } %t453, %S.ast.Type %t454, i64 1) - %t456 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t451, { ptr, i64, i64 } %t455, %S.ast.Type %t456) - store { ptr, i64, i64 } %t455, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load ptr, ptr %a1 - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a418 - %t461 = load %S.ast.Type, ptr %a4 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 2) - %t463 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t458, { ptr, i64, i64 } %t462, %S.ast.Type %t463) - store { ptr, i64, i64 } %t462, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load ptr, ptr %a1 - %t466 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.br(ptr %t465, { ptr, i64, i64 } %t466) - %t467 = load ptr, ptr %a1 - %t468 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.label(ptr %t467, { ptr, i64, i64 } %t468) - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.loopEnd(ptr %t469, { ptr, i64, i64 } %t470) - call void @finch_str_drop(ptr %a424) - call void @finch_str_drop(ptr %a421) - call void @finch_str_drop(ptr %a418) - call void @finch.drop.arr_str(ptr %a407) - call void @finch_str_drop(ptr %a403) - br label %endif5772 -endif5772: - %t471 = load ptr, ptr %a1 - %t472 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3698, i64 31, i64 0 }, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - %t476 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t476, ptr %a478 - store { ptr, i64, i64 } { ptr @.str.3699, i64 1, i64 0 }, ptr %a479 - call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) - store { ptr, i64, i64 } %t476, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a477 - call void @finch.gen.emit(ptr %t471, { ptr, i64, i64 } %t481) - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3700, i64 4, i64 0 }) - %t484 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t483, 1 - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t484 -endif5765: - %t485 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t485, ptr %a486 - store { ptr, i64, i64 } { ptr @.str.3701, i64 4, i64 0 }, ptr %a487 - %t488 = call i32 @finch_str_eq(ptr %a486, ptr %a487) - %t489 = icmp ne i32 %t488, 0 - br label %logic.from5775 -logic.from5775: - br i1 %t489, label %logic.end5777, label %logic.rhs5776 -logic.rhs5776: - %t490 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t490, ptr %a491 - store { ptr, i64, i64 } { ptr @.str.3702, i64 6, i64 0 }, ptr %a492 - %t493 = call i32 @finch_str_eq(ptr %a491, ptr %a492) - %t494 = icmp ne i32 %t493, 0 - br label %logic.rend5778 -logic.rend5778: - br label %logic.end5777 -logic.end5777: - %t495 = phi i1 [ true, %logic.from5775 ], [ %t494, %logic.rend5778 ] - br i1 %t495, label %then5779, label %endif5781 -then5779: - %t496 = load ptr, ptr %a1 - %t497 = load %S.ast.Node, ptr %a2 - %t498 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t496, %S.ast.Node %t497, i64 1, i64 0, { ptr, i64, i64 } %t498) - store i64 1, ptr %a499 - %t500 = load %S.ast.Type, ptr %a21 - store %S.ast.Type %t500, ptr %a501 - call void @finch.copy.S_ast_Type(ptr %a502, ptr %a501) - %t503 = load %S.ast.Type, ptr %a502 - store %S.ast.Type %t503, ptr %a504 - %t505 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t505, ptr %a506 - store { ptr, i64, i64 } { ptr @.str.3703, i64 6, i64 0 }, ptr %a507 - %t508 = call i32 @finch_str_eq(ptr %a506, ptr %a507) - %t509 = icmp ne i32 %t508, 0 - br i1 %t509, label %then5782, label %endif5784 -then5782: - store i64 2, ptr %a499 - %t510 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = load %S.ast.Type, ptr %a504 - store %S.ast.Type %t513, ptr %a504 - store %S.ast.Type %t514, ptr %a515 - call void @finch.drop.S_ast_Type(ptr %a515) - br label %endif5784 -endif5784: - %t516 = load %S.ast.Type, ptr %a504 - %t517 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t516) - store %S.ast.Type %t517, ptr %a518 - %t519 = load ptr, ptr %a1 - %t520 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t519, { ptr, i64, i64 } { ptr @.str.3704, i64 17, i64 0 }) - store { ptr, i64, i64 } %t520, ptr %a521 - %t522 = load ptr, ptr %a1 - %t523 = load { ptr, i64, i64 }, ptr %a521 - call void @finch.gen.store(ptr %t522, { ptr, i64, i64 } { ptr @.str.3705, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3706, i64 15, i64 0 }, { ptr, i64, i64 } %t523) - %t524 = load ptr, ptr %a1 - %t525 = load ptr, ptr %a1 - %t526 = load ptr, ptr %a1 - %t527 = load %S.ast.Type, ptr %a4 - %t528 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t526, %S.ast.Type %t527) - store { ptr, i64, i64 } { ptr @.str.3708, i64 23, i64 0 }, ptr %a530 - store { ptr, i64, i64 } %t528, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } %t533, ptr %a535 - store { ptr, i64, i64 } { ptr @.str.3709, i64 6, i64 0 }, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = load { ptr, i64, i64 }, ptr %a534 - %t539 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t538, ptr %a541 - store { ptr, i64, i64 } %t539, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t538, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - store { ptr, i64, i64 } %t544, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.3710, i64 14, i64 0 }, ptr %a547 - call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) - store { ptr, i64, i64 } %t544, ptr %a548 - call void @finch_str_drop(ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a545 - %t550 = call { ptr, i64, i64 } @finch.gen.op(ptr %t525, { ptr, i64, i64 } %t549) - store { ptr, i64, i64 } %t549, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } { ptr @.str.3707, i64 3, i64 0 }, { ptr, i64, i64 } %t550) - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_drop(ptr %a553) - store { ptr, i64, i64 } %t552, ptr %a554 - %t555 = load ptr, ptr %a1 - %t556 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } { ptr @.str.3711, i64 30, i64 0 }, ptr %a558 - store { ptr, i64, i64 } %t556, ptr %a559 - call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a557 - store { ptr, i64, i64 } %t560, ptr %a562 - store { ptr, i64, i64 } { ptr @.str.3712, i64 6, i64 0 }, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t560, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - %t566 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t565, ptr %a568 - store { ptr, i64, i64 } %t566, ptr %a569 - call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569) - store { ptr, i64, i64 } %t565, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = load { ptr, i64, i64 }, ptr %a567 - store { ptr, i64, i64 } %t571, ptr %a573 - store { ptr, i64, i64 } { ptr @.str.3713, i64 6, i64 0 }, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t571, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - %t577 = load ptr, ptr %a1 - %t578 = load %S.ast.Type, ptr %a504 - %t579 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t577, %S.ast.Type %t578) - store { ptr, i64, i64 } %t576, ptr %a581 - store { ptr, i64, i64 } %t579, ptr %a582 - call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) - store { ptr, i64, i64 } %t576, ptr %a583 - call void @finch_str_drop(ptr %a583) - store { ptr, i64, i64 } %t579, ptr %a584 - call void @finch_str_drop(ptr %a584) - %t585 = load { ptr, i64, i64 }, ptr %a580 - store { ptr, i64, i64 } %t585, ptr %a587 - store { ptr, i64, i64 } { ptr @.str.3714, i64 1, i64 0 }, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t585, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - call void @finch.gen.emit(ptr %t555, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a591 - call void @finch_str_drop(ptr %a591) - %t592 = load ptr, ptr %a1 - %t593 = load { ptr, i64, i64 }, ptr %a521 - %t594 = call { ptr, i64, i64 } @finch.gen.load(ptr %t592, { ptr, i64, i64 } { ptr @.str.3715, i64 3, i64 0 }, { ptr, i64, i64 } %t593) - store { ptr, i64, i64 } %t594, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t596, { ptr, i64, i64 } { ptr @.str.3716, i64 3, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t599, { ptr, i64, i64 } { ptr @.str.3717, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3718, i64 1, i64 0 }, { ptr, i64, i64 } %t600) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = load ptr, ptr %a1 - %t604 = load %S.ast.Type, ptr %a4 - %t605 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t603, %S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.3720, i64 23, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.3721, i64 6, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t615, ptr %a618 - store { ptr, i64, i64 } %t616, ptr %a619 - call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) - store { ptr, i64, i64 } %t615, ptr %a620 - call void @finch_str_drop(ptr %a620) - %t621 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t621, ptr %a623 - store { ptr, i64, i64 } { ptr @.str.3722, i64 14, i64 0 }, ptr %a624 - call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624) - store { ptr, i64, i64 } %t621, ptr %a625 - call void @finch_str_drop(ptr %a625) - %t626 = load { ptr, i64, i64 }, ptr %a622 - %t627 = call { ptr, i64, i64 } @finch.gen.op(ptr %t602, { ptr, i64, i64 } %t626) - store { ptr, i64, i64 } %t626, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } { ptr @.str.3719, i64 3, i64 0 }, { ptr, i64, i64 } %t627) - store { ptr, i64, i64 } %t627, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t629, ptr %a631 - %t632 = load ptr, ptr %a1 - %t633 = load { ptr, i64, i64 }, ptr %a631 - %t634 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t632, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t634, ptr %a635 - %t636 = load ptr, ptr %a1 - %t637 = load { ptr, i64, i64 }, ptr %a3 - %t638 = load %S.ast.Type, ptr %a4 - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = extractvalue { ptr, i64, i64 } %t639, 1 - %t641 = icmp uge i64 3, %t640 - br i1 %t641, label %range5785, label %inrange5786 -range5785: - call void @finch_panic_index(ptr @.str.3723, i64 3007, i64 3, i64 %t640) - unreachable -inrange5786: - %t642 = extractvalue { ptr, i64, i64 } %t639, 0 - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %t642, i64 3 - %t644 = load { ptr, i64, i64 }, ptr %t643 - %t645 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t636, { ptr, i64, i64 } %t637, %S.ast.Type %t638, { ptr, i64, i64 } %t644) - store { ptr, i64, i64 } %t645, ptr %a646 - %t647 = load ptr, ptr %a1 - %t648 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t647, { ptr, i64, i64 } { ptr @.str.3724, i64 10, i64 0 }) - store { ptr, i64, i64 } %t648, ptr %a649 - %t650 = load ptr, ptr %a1 - %t651 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t650, { ptr, i64, i64 } { ptr @.str.3725, i64 10, i64 0 }) - store { ptr, i64, i64 } %t651, ptr %a652 - %t653 = load ptr, ptr %a1 - %t654 = load ptr, ptr %a1 - %t655 = load ptr, ptr %a1 - %t656 = load ptr, ptr %a1 - %t657 = load { ptr, i64, i64 }, ptr %a646 - %t658 = load %S.ast.Type, ptr %a4 - %t659 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t656, { ptr, i64, i64 } %t657, %S.ast.Type %t658, i64 0) - %t660 = call { ptr, i64, i64 } @finch.gen.load(ptr %t655, { ptr, i64, i64 } { ptr @.str.3727, i64 3, i64 0 }, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t659, ptr %a661 - call void @finch_str_drop(ptr %a661) - store { ptr, i64, i64 } { ptr @.str.3726, i64 12, i64 0 }, ptr %a663 - store { ptr, i64, i64 } %t660, ptr %a664 - call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) - store { ptr, i64, i64 } %t660, ptr %a665 - call void @finch_str_drop(ptr %a665) - %t666 = load { ptr, i64, i64 }, ptr %a662 - store { ptr, i64, i64 } %t666, ptr %a668 - store { ptr, i64, i64 } { ptr @.str.3728, i64 3, i64 0 }, ptr %a669 - call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) - store { ptr, i64, i64 } %t666, ptr %a670 - call void @finch_str_drop(ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a667 - %t672 = call { ptr, i64, i64 } @finch.gen.op(ptr %t654, { ptr, i64, i64 } %t671) - store { ptr, i64, i64 } %t671, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a649 - %t675 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.condBr(ptr %t653, { ptr, i64, i64 } %t672, { ptr, i64, i64 } %t674, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t672, ptr %a676 - call void @finch_str_drop(ptr %a676) - %t677 = load ptr, ptr %a1 - %t678 = load { ptr, i64, i64 }, ptr %a649 - call void @finch.gen.label(ptr %t677, { ptr, i64, i64 } %t678) - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a598 - %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t679, { ptr, i64, i64 } { ptr @.str.3729, i64 3, i64 0 }, { ptr, i64, i64 } %t680) - store { ptr, i64, i64 } %t681, ptr %a682 - %t683 = load ptr, ptr %a1 - %t684 = load ptr, ptr %a1 - %t685 = load ptr, ptr %a1 - %t686 = load %S.ast.Type, ptr %a504 - %t687 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t685, %S.ast.Type %t686) - store { ptr, i64, i64 } { ptr @.str.3730, i64 23, i64 0 }, ptr %a689 - store { ptr, i64, i64 } %t687, ptr %a690 - call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) - store { ptr, i64, i64 } %t687, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a688 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.3731, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.3732, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } %t708, ptr %a711 - store { ptr, i64, i64 } %t709, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t708, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - %t715 = call { ptr, i64, i64 } @finch.gen.op(ptr %t684, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a716 - call void @finch_str_drop(ptr %a716) - %t717 = load ptr, ptr %a1 - %t718 = load { ptr, i64, i64 }, ptr %a646 - %t719 = load %S.ast.Type, ptr %a4 - %t720 = load i64, ptr %a499 - %t721 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t717, { ptr, i64, i64 } %t718, %S.ast.Type %t719, i64 %t720) - %t722 = load %S.ast.Type, ptr %a504 - call void @finch.gen.copyAt(ptr %t683, { ptr, i64, i64 } %t715, { ptr, i64, i64 } %t721, %S.ast.Type %t722) - store { ptr, i64, i64 } %t715, ptr %a723 - call void @finch_str_drop(ptr %a723) - store { ptr, i64, i64 } %t721, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load ptr, ptr %a1 - %t727 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.3734, i64 8, i64 0 }, ptr %a729 - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - %t731 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t731, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3735, i64 3, i64 0 }, ptr %a734 - call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) - store { ptr, i64, i64 } %t731, ptr %a735 - call void @finch_str_drop(ptr %a735) - %t736 = load { ptr, i64, i64 }, ptr %a732 - %t737 = call { ptr, i64, i64 } @finch.gen.op(ptr %t726, { ptr, i64, i64 } %t736) - store { ptr, i64, i64 } %t736, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t725, { ptr, i64, i64 } { ptr @.str.3733, i64 3, i64 0 }, { ptr, i64, i64 } %t737, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t737, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load ptr, ptr %a1 - %t742 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.br(ptr %t741, { ptr, i64, i64 } %t742) - %t743 = load ptr, ptr %a1 - %t744 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.label(ptr %t743, { ptr, i64, i64 } %t744) - %t745 = load ptr, ptr %a1 - %t746 = load { ptr, i64, i64 }, ptr %a635 - call void @finch.gen.loopEnd(ptr %t745, { ptr, i64, i64 } %t746) - %t747 = load ptr, ptr %a1 - %t748 = load { ptr, i64, i64 }, ptr %a521 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t747, { ptr, i64, i64 } { ptr @.str.3736, i64 17, i64 0 }, { ptr, i64, i64 } %t748) - %t750 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t749, 0 - %t751 = load %S.ast.Type, ptr %a518 - store %S.ast.Type %t751, ptr %a752 - call void @finch.copy.S_ast_Type(ptr %a753, ptr %a752) - %t754 = load %S.ast.Type, ptr %a753 - %t755 = insertvalue %S.gen.Val %t750, %S.ast.Type %t754, 1 - %t756 = insertvalue %S.gen.Val %t755, i1 true, 2 - call void @finch_str_drop(ptr %a682) - call void @finch_str_drop(ptr %a652) - call void @finch_str_drop(ptr %a649) - call void @finch_str_drop(ptr %a646) - call void @finch.drop.arr_str(ptr %a635) - call void @finch_str_drop(ptr %a631) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a554) - call void @finch_str_drop(ptr %a521) - call void @finch.drop.S_ast_Type(ptr %a518) - call void @finch.drop.S_ast_Type(ptr %a504) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t756 -endif5781: - %t757 = load ptr, ptr %a1 - %t758 = load %S.ast.Node, ptr %a2 - %t759 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.3737, i64 21, i64 0 }, ptr %a761 - store { ptr, i64, i64 } %t759, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a760 - store { ptr, i64, i64 } %t763, ptr %a765 - store { ptr, i64, i64 } { ptr @.str.3738, i64 49, i64 0 }, ptr %a766 - call void @finch_str_concat(ptr %a764, ptr %a765, ptr %a766) - store { ptr, i64, i64 } %t763, ptr %a767 - call void @finch_str_drop(ptr %a767) - %t768 = load { ptr, i64, i64 }, ptr %a764 - call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t768) - store { ptr, i64, i64 } %t768, ptr %a769 - call void @finch_str_drop(ptr %a769) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val zeroinitializer -} - -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 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a118 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3739, 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.from5787 -logic.from5787: - br i1 %t9, label %logic.rhs5788, label %logic.end5789 -logic.rhs5788: - %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.3740, 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.rend5790 -logic.rend5790: - br label %logic.end5789 -logic.end5789: - %t16 = phi i1 [ false, %logic.from5787 ], [ %t15, %logic.rend5790 ] - br label %logic.from5791 -logic.from5791: - br i1 %t16, label %logic.rhs5792, label %logic.end5793 -logic.rhs5792: - %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.rend5794 -logic.rend5794: - br label %logic.end5793 -logic.end5793: - %t22 = phi i1 [ false, %logic.from5791 ], [ %t21, %logic.rend5794 ] - br i1 %t22, label %then5795, label %endif5797 -then5795: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic5798, label %ok5799 -panic5798: - call void @finch_panic(ptr @.str.3741, i64 3029, ptr @.str.3742) - unreachable -ok5799: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 21 - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %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 %range5800, label %inrange5801 -range5800: - call void @finch_panic_index(ptr @.str.3743, i64 3029, i64 %t31, i64 %t33) - unreachable -inrange5801: - %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.cond5802 -find.cond5802: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t47 - br i1 %t51, label %find.body5803, label %find.end5806 -find.body5803: - %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.hit5804, label %find.next5805 -find.hit5804: - store i64 %t50, ptr %a46 - br label %find.end5806 -find.next5805: - %t58 = add i64 %t50, 1 - store i64 %t58, ptr %a49 - br label %find.cond5802 -find.end5806: - %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 %then5807, label %endif5809 -then5807: - %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.3744, 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.3745, i64 22, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 - %t77 = load { ptr, i64, i64 }, ptr %t76 - store { ptr, i64, i64 } %t75, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t75, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.3746, i64 10, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3747, i64 2, i64 0 }, ptr %a90 - call void @finch_str_join(ptr %a91, ptr %t88, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t87, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t87, ptr %a96 - call void @finch_str_drop(ptr %a96) - store { ptr, i64, i64 } %t92, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.3748, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif5809 -endif5809: - %t105 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3 - %t106 = load i64, ptr %a60 - %t107 = load { ptr, i64, i64 }, ptr %t105 - %t108 = extractvalue { ptr, i64, i64 } %t107, 1 - %t109 = icmp uge i64 %t106, %t108 - br i1 %t109, label %range5810, label %inrange5811 -range5810: - call void @finch_panic_index(ptr @.str.3749, i64 3034, i64 %t106, i64 %t108) - unreachable -inrange5811: - %t110 = extractvalue { ptr, i64, i64 } %t107, 0 - %t111 = getelementptr inbounds i64, ptr %t110, i64 %t106 - %t112 = load i64, ptr %t111 - call void @finch_str_from_int(ptr %a113, i64 %t112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t114, 0 - %t116 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t116, ptr %a117 - call void @finch.copy.S_ast_Type(ptr %a118, ptr %a117) - %t119 = load %S.ast.Type, ptr %a118 - %t120 = insertvalue %S.gen.Val %t115, %S.ast.Type %t119, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a41) - ret %S.gen.Val %t120 -endif5797: - %t121 = load ptr, ptr %a1 - %t122 = load ptr, ptr %a1 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = load %S.ast.Type, ptr %a3 - %t125 = call %S.gen.Val @finch.gen.exprWant(ptr %t122, %S.ast.Node %t123, %S.ast.Type %t124) - %t126 = load %S.ast.Type, ptr %a3 - %t127 = load %S.ast.Node, ptr %a2 - %t128 = call %S.gen.Val @finch.gen.coerce(ptr %t121, %S.gen.Val %t125, %S.ast.Type %t126, %S.ast.Node %t127, { ptr, i64, i64 } { ptr @.str.3750, i64 12, i64 0 }) - store %S.gen.Val %t125, ptr %a129 - call void @finch.drop.S_gen_Val(ptr %a129) - ret %S.gen.Val %t128 -} - -define internal void @finch.drop.S_gen_SumPat(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumPat, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t1) - ret void -} - -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 - %a46 = alloca i64, align 16 - %a49 = 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 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i1, align 16 - %a128 = alloca i1, 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 %S.ast.Type, align 16 - %a138 = alloca i64, align 16 - %a140 = alloca i64, align 16 - %a152 = alloca %S.ast.Node, align 16 - %a153 = alloca %S.ast.Node, align 16 - %a155 = alloca %S.ast.Node, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca i64, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca %S.gen.SumPat, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %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 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca %S.gen.Val, align 16 - %a303 = alloca i64, align 16 - %a306 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.gen.Val, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca i1, align 16 - %a404 = alloca %S.gen.StructDef, align 16 - %a405 = alloca %S.gen.StructDef, align 16 - %a407 = alloca %S.gen.StructDef, align 16 - %a410 = alloca i64, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca i64, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a454 = alloca %S.ast.Type, align 16 - %a456 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %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 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca %S.ast.Node, align 16 - %a536 = alloca %S.ast.Node, align 16 - %a538 = alloca %S.ast.Node, align 16 - %a543 = alloca %S.gen.Val, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca %S.ast.Type, align 16 - %a573 = alloca %S.ast.Type, align 16 - %a576 = alloca %S.ast.Type, align 16 - %a583 = alloca %S.gen.Val, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca i64, align 16 - %a670 = alloca i64, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.gen.EnumDef, align 16 - %a753 = alloca %S.gen.EnumDef, align 16 - %a755 = alloca %S.gen.EnumDef, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca i64, align 16 - %a777 = alloca i64, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a882 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a887 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca %S.ast.Type, align 16 - %a891 = alloca %S.ast.Type, align 16 - %a898 = 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 %range5812, label %inrange5813 -range5812: - call void @finch_panic_index(ptr @.str.3751, i64 3042, i64 0, i64 %t7) - unreachable -inrange5813: - %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.3752, 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.from5814 -logic.from5814: - br i1 %t25, label %logic.end5816, label %logic.rhs5815 -logic.rhs5815: - %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.3753, 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.rend5817 -logic.rend5817: - br label %logic.end5816 -logic.end5816: - %t32 = phi i1 [ true, %logic.from5814 ], [ %t31, %logic.rend5817 ] - br i1 %t32, label %then5818, label %endif5820 -then5818: - %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 %range5821, label %inrange5822 -range5821: - call void @finch_panic_index(ptr @.str.3754, i64 3045, i64 0, i64 %t36) - unreachable -inrange5822: - %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.3755, i64 30, i64 0 }) - br label %endif5820 -endif5820: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic5823, label %ok5824 -panic5823: - call void @finch_panic(ptr @.str.3756, i64 3047, ptr @.str.3757) - unreachable -ok5824: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 11 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - store i64 %t45, ptr %a46 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a13 - call void @finch.gen.hold(ptr %t47, %S.gen.Val %t48) - store i64 -1, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3758, i64 0, i64 0 }, ptr %a50 - %t51 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.3759, i64 6, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then5825, label %endif5827 -then5825: - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call i64 @finch.gen.findSum(ptr %t57, { ptr, i64, i64 } %t59, { ptr, i64, i64 } %t61) - store i64 %t62, ptr %a49 - %t63 = load i64, ptr %a49 - %t64 = icmp sge i64 %t63, 0 - br i1 %t64, label %then5828, label %endif5830 -then5828: - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Type, ptr %a19 - %t68 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t66, %S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.3760, i64 13, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3761, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3762, i64 2, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic5831, label %ok5832 -panic5831: - call void @finch_panic(ptr @.str.3763, i64 3054, ptr @.str.3764) - unreachable -ok5832: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 16 - %t94 = load ptr, ptr %a1 - %t95 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t98 = load { ptr, i64, i64 }, ptr %t97 - %t99 = call i64 @finch.gen.findStruct(ptr %t94, { ptr, i64, i64 } %t96, { ptr, i64, i64 } %t98) - %t100 = load { ptr, i64, i64 }, ptr %t93 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range5833, label %inrange5834 -range5833: - call void @finch_panic_index(ptr @.str.3765, i64 3054, i64 %t99, i64 %t101) - unreachable -inrange5834: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.gen.StructDef, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.gen.StructDef, ptr %t104, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - %t107 = extractvalue { ptr, i64, i64 } %t106, 1 - %t108 = icmp uge i64 0, %t107 - br i1 %t108, label %range5835, label %inrange5836 -range5835: - call void @finch_panic_index(ptr @.str.3766, i64 3054, i64 0, i64 %t107) - unreachable -inrange5836: - %t109 = extractvalue { ptr, i64, i64 } %t106, 0 - %t110 = getelementptr inbounds i64, ptr %t109, i64 0 - %t111 = load i64, ptr %t110 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t90, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t90, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t120, ptr %a50 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_drop(ptr %a123) - br label %endif5830 -endif5830: - br label %endif5827 -endif5827: - %t124 = load ptr, ptr %a1 - %t125 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t124, { ptr, i64, i64 } { ptr @.str.3767, i64 9, i64 0 }) - store { ptr, i64, i64 } %t125, ptr %a126 - store i1 false, ptr %a127 - store i1 false, ptr %a128 - store { ptr, i64, i64 } zeroinitializer, ptr %a129 - store { ptr, i64, i64 } zeroinitializer, ptr %a130 - store { ptr, i64, i64 } zeroinitializer, ptr %a131 - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3768, i64 4, i64 0 }) - store %S.ast.Type %t132, ptr %a133 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = sub i64 %t136, 1 - store i64 %t137, ptr %a138 - %t139 = load i64, ptr %a138 - store i64 0, ptr %a140 - br label %for.cond5837 -for.cond5837: - %t141 = load i64, ptr %a140 - %t142 = icmp slt i64 %t141, %t139 - br i1 %t142, label %for.body5838, label %for.end5840 -for.body5838: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load i64, ptr %a140 - %t145 = add i64 1, %t144 - %t146 = load { ptr, i64, i64 }, ptr %t143 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5841, label %inrange5842 -range5841: - call void @finch_panic_index(ptr @.str.3769, i64 3066, i64 %t145, i64 %t147) - unreachable -inrange5842: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Node, ptr %t149, i64 %t145 - %t151 = load %S.ast.Node, ptr %t150 - store %S.ast.Node %t151, ptr %a152 - call void @finch.copy.S_ast_Node(ptr %a153, ptr %a152) - %t154 = load %S.ast.Node, ptr %a153 - store %S.ast.Node %t154, ptr %a155 - %t156 = load i1, ptr %a127 - br i1 %t156, label %then5843, label %endif5845 -then5843: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a155 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } { ptr @.str.3770, i64 72, i64 0 }) - br label %endif5845 -endif5845: - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t159, { ptr, i64, i64 } { ptr @.str.3771, i64 9, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t162, { ptr, i64, i64 } { ptr @.str.3772, i64 10, i64 0 }) - store { ptr, i64, i64 } %t163, ptr %a164 - store { ptr, i64, i64 } zeroinitializer, ptr %a165 - store i64 -1, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t168 = load i1, ptr %t167 - br i1 %t168, label %then5846, label %else5847 -then5846: - store i1 true, ptr %a127 - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.br(ptr %t169, { ptr, i64, i64 } %t170) - br label %endif5848 -else5847: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range5849, label %inrange5850 -range5849: - call void @finch_panic_index(ptr @.str.3773, i64 3078, i64 0, i64 %t173) - unreachable -inrange5850: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 0 - %t177 = getelementptr inbounds %S.ast.Node, ptr %t176, i32 0, i32 9 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t178, ptr %a179 - call void @finch.copy.arr_S_ast_Node(ptr %a180, ptr %a179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - store i64 0, ptr %a185 - br label %for.cond5851 -for.cond5851: - %t186 = load i64, ptr %a185 - %t187 = icmp slt i64 %t186, %t184 - br i1 %t187, label %for.body5852, label %for.end5854 -for.body5852: - store { ptr, i64, i64 } { ptr @.str.3774, i64 0, i64 0 }, ptr %a188 - %t189 = load i64, ptr %a49 - %t190 = icmp sge i64 %t189, 0 - br i1 %t190, label %then5855, label %else5856 -then5855: - %t191 = load ptr, ptr %a1 - %t192 = load i64, ptr %a185 - %t193 = load { ptr, i64, i64 }, ptr %a182 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range5858, label %inrange5859 -range5858: - call void @finch_panic_index(ptr @.str.3775, i64 3082, i64 %t192, i64 %t194) - unreachable -inrange5859: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 %t192 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = load i64, ptr %a49 - %t200 = call %S.gen.SumPat @finch.gen.sumPattern(ptr %t191, %S.ast.Node %t198, i64 %t199) - store %S.gen.SumPat %t200, ptr %a201 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t203 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t204 = load i64, ptr %t203 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store i64 -1, ptr %a207 - %t208 = load i64, ptr %t202 - %t209 = load ptr, ptr %a129 - store i64 0, ptr %a210 - br label %find.cond5860 -find.cond5860: - %t211 = load i64, ptr %a210 - %t212 = icmp slt i64 %t211, %t208 - br i1 %t212, label %find.body5861, label %find.end5864 -find.body5861: - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i64 %t211 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } %t206, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br i1 %t218, label %find.hit5862, label %find.next5863 -find.hit5862: - store i64 %t211, ptr %a207 - br label %find.end5864 -find.next5863: - %t219 = add i64 %t211, 1 - store i64 %t219, ptr %a210 - br label %find.cond5860 -find.end5864: - store { ptr, i64, i64 } %t206, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load i64, ptr %a207 - %t222 = icmp sge i64 %t221, 0 - br i1 %t222, label %then5865, label %endif5867 -then5865: - %t223 = load ptr, ptr %a1 - %t224 = load i64, ptr %a185 - %t225 = load { ptr, i64, i64 }, ptr %a182 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range5868, label %inrange5869 -range5868: - call void @finch_panic_index(ptr @.str.3776, i64 3084, i64 %t224, i64 %t226) - unreachable -inrange5869: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds %S.ast.Node, ptr %t228, i64 %t224 - %t230 = load %S.ast.Node, ptr %t229 - call void @finch.gen.fail(ptr %t223, %S.ast.Node %t230, { ptr, i64, i64 } { ptr @.str.3777, i64 49, i64 0 }) - br label %endif5867 -endif5867: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t232 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t233 = load i64, ptr %t232 - call void @finch_str_from_int(ptr %a234, i64 %t233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load i64, ptr %t231 - %t237 = add i64 %t236, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t237, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t238 = load ptr, ptr %a129 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i64 %t236 - store { ptr, i64, i64 } %t235, ptr %t239 - store i64 %t237, ptr %t231 - %t240 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i32 0, i32 1 - %t242 = load i64, ptr %t241 - %t243 = icmp sgt i64 %t242, 0 - br i1 %t243, label %then5870, label %endif5872 -then5870: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = icmp sgt i64 %t245, 1 - br i1 %t246, label %then5873, label %endif5875 -then5873: - %t247 = load ptr, ptr %a1 - %t248 = load i64, ptr %a185 - %t249 = load { ptr, i64, i64 }, ptr %a182 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5876, label %inrange5877 -range5876: - call void @finch_panic_index(ptr @.str.3778, i64 3089, i64 %t248, i64 %t250) - unreachable -inrange5877: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - call void @finch.gen.fail(ptr %t247, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3779, i64 52, i64 0 }) - br label %endif5875 -endif5875: - %t255 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.copy.arr_S_ast_Node(ptr %a258, ptr %a257) - %t259 = load { ptr, i64, i64 }, ptr %a258 - %t260 = load { ptr, i64, i64 }, ptr %a165 - store { ptr, i64, i64 } %t259, ptr %a165 - store { ptr, i64, i64 } %t260, ptr %a261 - call void @finch.drop.arr_S_ast_Node(ptr %a261) - %t262 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t263 = load i64, ptr %t262 - store i64 %t263, ptr %a166 - br label %endif5872 -endif5872: - %t264 = load ptr, ptr %a1 - %t265 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.3780, i64 12, 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.3781, i64 2, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t276 = load i64, ptr %t275 - call void @finch_str_from_int(ptr %a277, i64 %t276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t274, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t274, ptr %a282 - call void @finch_str_drop(ptr %a282) - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a279 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t264, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t285, ptr %a188 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_drop(ptr %a288) - call void @finch.drop.S_gen_SumPat(ptr %a201) - br label %endif5857 -else5856: - %t289 = load ptr, ptr %a1 - %t290 = load i64, ptr %a185 - %t291 = load { ptr, i64, i64 }, ptr %a182 - %t292 = extractvalue { ptr, i64, i64 } %t291, 1 - %t293 = icmp uge i64 %t290, %t292 - br i1 %t293, label %range5878, label %inrange5879 -range5878: - call void @finch_panic_index(ptr @.str.3782, i64 3096, i64 %t290, i64 %t292) - unreachable -inrange5879: - %t294 = extractvalue { ptr, i64, i64 } %t291, 0 - %t295 = getelementptr inbounds %S.ast.Node, ptr %t294, i64 %t290 - %t296 = load %S.ast.Node, ptr %t295 - %t297 = load %S.ast.Type, ptr %a19 - %t298 = call %S.gen.Val @finch.gen.patternValue(ptr %t289, %S.ast.Node %t296, %S.ast.Type %t297) - store %S.gen.Val %t298, ptr %a299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t301 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store i64 -1, ptr %a303 - %t304 = load i64, ptr %t300 - %t305 = load ptr, ptr %a129 - store i64 0, ptr %a306 - br label %find.cond5880 -find.cond5880: - %t307 = load i64, ptr %a306 - %t308 = icmp slt i64 %t307, %t304 - br i1 %t308, label %find.body5881, label %find.end5884 -find.body5881: - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t305, i64 %t307 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - store { ptr, i64, i64 } %t302, ptr %a312 - %t313 = call i32 @finch_str_eq(ptr %a311, ptr %a312) - %t314 = icmp ne i32 %t313, 0 - br i1 %t314, label %find.hit5882, label %find.next5883 -find.hit5882: - store i64 %t307, ptr %a303 - br label %find.end5884 -find.next5883: - %t315 = add i64 %t307, 1 - store i64 %t315, ptr %a306 - br label %find.cond5880 -find.end5884: - %t316 = load i64, ptr %a303 - %t317 = icmp sge i64 %t316, 0 - br label %logic.from5885 -logic.from5885: - br i1 %t317, label %logic.rhs5886, label %logic.end5887 -logic.rhs5886: - %t318 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3783, i64 4, i64 0 }, ptr %a321 - %t322 = call i32 @finch_str_eq(ptr %a320, ptr %a321) - %t323 = icmp ne i32 %t322, 0 - br label %logic.rend5888 -logic.rend5888: - br label %logic.end5887 -logic.end5887: - %t324 = phi i1 [ false, %logic.from5885 ], [ %t323, %logic.rend5888 ] - br i1 %t324, label %then5889, label %endif5891 -then5889: - %t325 = load ptr, ptr %a1 - %t326 = load i64, ptr %a185 - %t327 = load { ptr, i64, i64 }, ptr %a182 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range5892, label %inrange5893 -range5892: - call void @finch_panic_index(ptr @.str.3784, i64 3098, i64 %t326, i64 %t328) - unreachable -inrange5893: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - call void @finch.gen.fail(ptr %t325, %S.ast.Node %t332, { ptr, i64, i64 } { ptr @.str.3785, i64 49, i64 0 }) - br label %endif5891 -endif5891: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t334 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_copy(ptr %a337, ptr %a336) - %t338 = load { ptr, i64, i64 }, ptr %a337 - %t339 = load i64, ptr %t333 - %t340 = add i64 %t339, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t340, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t341 = load ptr, ptr %a129 - %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 %t339 - store { ptr, i64, i64 } %t338, ptr %t342 - store i64 %t340, ptr %t333 - %t343 = load ptr, ptr %a1 - %t344 = load %S.gen.Val, ptr %a13 - %t345 = load %S.gen.Val, ptr %a299 - %t346 = load i64, ptr %a185 - %t347 = load { ptr, i64, i64 }, ptr %a182 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 %t346, %t348 - br i1 %t349, label %range5894, label %inrange5895 -range5894: - call void @finch_panic_index(ptr @.str.3787, i64 3101, i64 %t346, i64 %t348) - unreachable -inrange5895: - %t350 = extractvalue { ptr, i64, i64 } %t347, 0 - %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 %t346 - %t352 = load %S.ast.Node, ptr %t351 - %t353 = call %S.gen.Val @finch.gen.compare(ptr %t343, { ptr, i64, i64 } { ptr @.str.3786, i64 2, i64 0 }, %S.gen.Val %t344, %S.gen.Val %t345, %S.ast.Node %t352) - %t354 = extractvalue %S.gen.Val %t353, 0 - store { ptr, i64, i64 } %t354, ptr %a355 - call void @finch_str_copy(ptr %a356, ptr %a355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store %S.gen.Val %t353, ptr %a358 - call void @finch.drop.S_gen_Val(ptr %a358) - %t359 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t357, ptr %a188 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - call void @finch.drop.S_gen_Val(ptr %a299) - br label %endif5857 -endif5857: - %t361 = load i64, ptr %a185 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = sub i64 %t363, 1 - %t365 = icmp eq i64 %t361, %t364 - br i1 %t365, label %then5896, label %else5897 -then5896: - %t366 = load ptr, ptr %a1 - %t367 = load { ptr, i64, i64 }, ptr %a188 - %t368 = load { ptr, i64, i64 }, ptr %a161 - %t369 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.condBr(ptr %t366, { ptr, i64, i64 } %t367, { ptr, i64, i64 } %t368, { ptr, i64, i64 } %t369) - br label %endif5898 -else5897: - %t370 = load ptr, ptr %a1 - %t371 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t370, { ptr, i64, i64 } { ptr @.str.3788, i64 8, i64 0 }) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load { ptr, i64, i64 }, ptr %a188 - %t375 = load { ptr, i64, i64 }, ptr %a161 - %t376 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.condBr(ptr %t373, { ptr, i64, i64 } %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } %t376) - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.label(ptr %t377, { ptr, i64, i64 } %t378) - call void @finch_str_drop(ptr %a372) - br label %endif5898 -endif5898: - call void @finch_str_drop(ptr %a188) - br label %for.step5853 -for.step5853: - %t379 = load i64, ptr %a185 - %t380 = add i64 %t379, 1 - store i64 %t380, ptr %a185 - br label %for.cond5851 -for.end5854: - call void @finch.drop.arr_S_ast_Node(ptr %a182) - br label %endif5848 -endif5848: - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t384 = load i64, ptr %t383 - %t385 = icmp sgt i64 %t384, 0 - store i1 %t385, ptr %a386 - %t387 = load i1, ptr %a386 - br i1 %t387, label %then5899, label %endif5901 -then5899: - %t388 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t388) - %t389 = load ptr, ptr %a1 - %t390 = icmp eq ptr %t389, null - br i1 %t390, label %panic5902, label %ok5903 -panic5902: - call void @finch_panic(ptr @.str.3789, i64 3116, ptr @.str.3790) - unreachable -ok5903: - %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 16 - %t392 = load ptr, ptr %a1 - %t393 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t394 = load { ptr, i64, i64 }, ptr %t393 - %t395 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = call i64 @finch.gen.findStruct(ptr %t392, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t396) - %t398 = load { ptr, i64, i64 }, ptr %t391 - %t399 = extractvalue { ptr, i64, i64 } %t398, 1 - %t400 = icmp uge i64 %t397, %t399 - br i1 %t400, label %range5904, label %inrange5905 -range5904: - call void @finch_panic_index(ptr @.str.3791, i64 3116, i64 %t397, i64 %t399) - unreachable -inrange5905: - %t401 = extractvalue { ptr, i64, i64 } %t398, 0 - %t402 = getelementptr inbounds %S.gen.StructDef, ptr %t401, i64 %t397 - %t403 = load %S.gen.StructDef, ptr %t402 - store %S.gen.StructDef %t403, ptr %a404 - call void @finch.copy.S_gen_StructDef(ptr %a405, ptr %a404) - %t406 = load %S.gen.StructDef, ptr %a405 - store %S.gen.StructDef %t406, ptr %a407 - %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t409 = load i64, ptr %t408 - store i64 0, ptr %a410 - br label %for.cond5906 -for.cond5906: - %t411 = load i64, ptr %a410 - %t412 = icmp slt i64 %t411, %t409 - br i1 %t412, label %for.body5907, label %for.end5909 -for.body5907: - %t413 = load i64, ptr %a410 - %t414 = load { ptr, i64, i64 }, ptr %a165 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5910, label %inrange5911 -range5910: - call void @finch_panic_index(ptr @.str.3792, i64 3118, i64 %t413, i64 %t415) - unreachable -inrange5911: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.ast.Node, ptr %t417, i64 %t413 - %t419 = getelementptr inbounds %S.ast.Node, ptr %t418, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - store { ptr, i64, i64 } { ptr @.str.3793, i64 1, i64 0 }, ptr %a422 - %t423 = call i32 @finch_str_eq(ptr %a421, ptr %a422) - %t424 = icmp ne i32 %t423, 0 - br i1 %t424, label %then5912, label %endif5914 -then5912: - br label %for.step5908 -endif5914: - %t425 = load ptr, ptr %a1 - %t426 = icmp eq ptr %t425, null - br i1 %t426, label %panic5915, label %ok5916 -panic5915: - call void @finch_panic(ptr @.str.3794, i64 3121, ptr @.str.3795) - unreachable -ok5916: - %t427 = getelementptr inbounds %S.gen.Gen, ptr %t425, i32 0, i32 22 - %t428 = load i64, ptr %a49 - %t429 = load { ptr, i64, i64 }, ptr %t427 - %t430 = extractvalue { ptr, i64, i64 } %t429, 1 - %t431 = icmp uge i64 %t428, %t430 - br i1 %t431, label %range5917, label %inrange5918 -range5917: - call void @finch_panic_index(ptr @.str.3796, i64 3121, i64 %t428, i64 %t430) - unreachable -inrange5918: - %t432 = extractvalue { ptr, i64, i64 } %t429, 0 - %t433 = getelementptr inbounds %S.gen.SumDef, ptr %t432, i64 %t428 - %t434 = getelementptr inbounds %S.gen.SumDef, ptr %t433, i32 0, i32 4 - %t435 = load i64, ptr %a166 - %t436 = load { ptr, i64, i64 }, ptr %t434 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 %t435, %t437 - br i1 %t438, label %range5919, label %inrange5920 -range5919: - call void @finch_panic_index(ptr @.str.3797, i64 3121, i64 %t435, i64 %t437) - unreachable -inrange5920: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds i64, ptr %t439, i64 %t435 - %t441 = load i64, ptr %t440 - %t442 = load i64, ptr %a410 - %t443 = add i64 %t441, %t442 - store i64 %t443, ptr %a444 - %t445 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 12 - %t446 = load i64, ptr %a444 - %t447 = load { ptr, i64, i64 }, ptr %t445 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range5921, label %inrange5922 -range5921: - call void @finch_panic_index(ptr @.str.3798, i64 3122, i64 %t446, i64 %t448) - unreachable -inrange5922: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds %S.ast.Type, ptr %t450, i64 %t446 - %t452 = load %S.ast.Type, ptr %t451 - store %S.ast.Type %t452, ptr %a453 - call void @finch.copy.S_ast_Type(ptr %a454, ptr %a453) - %t455 = load %S.ast.Type, ptr %a454 - store %S.ast.Type %t455, ptr %a456 - %t457 = load ptr, ptr %a1 - %t458 = load ptr, ptr %a1 - %t459 = load %S.ast.Type, ptr %a19 - %t460 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t458, %S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.3799, i64 13, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.3800, i64 1, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t472 = load { ptr, i64, i64 }, ptr %t471 - store { ptr, i64, i64 } %t470, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - store { ptr, i64, i64 } %t470, ptr %a476 - call void @finch_str_drop(ptr %a476) - %t477 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t477, ptr %a479 - store { ptr, i64, i64 } { ptr @.str.3801, i64 2, i64 0 }, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t477, ptr %a481 - call void @finch_str_drop(ptr %a481) - %t482 = load { ptr, i64, i64 }, ptr %a478 - %t483 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 3 - %t484 = load i64, ptr %a444 - %t485 = load { ptr, i64, i64 }, ptr %t483 - %t486 = extractvalue { ptr, i64, i64 } %t485, 1 - %t487 = icmp uge i64 %t484, %t486 - br i1 %t487, label %range5923, label %inrange5924 -range5923: - call void @finch_panic_index(ptr @.str.3802, i64 3123, i64 %t484, i64 %t486) - unreachable -inrange5924: - %t488 = extractvalue { ptr, i64, i64 } %t485, 0 - %t489 = getelementptr inbounds i64, ptr %t488, i64 %t484 - %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 } %t482, ptr %a494 - store { ptr, i64, i64 } %t492, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t482, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t492, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a493 - %t499 = call { ptr, i64, i64 } @finch.gen.op(ptr %t457, { ptr, i64, i64 } %t498) - store { ptr, i64, i64 } %t498, ptr %a500 - call void @finch_str_drop(ptr %a500) - store { ptr, i64, i64 } %t499, ptr %a501 - %t502 = load ptr, ptr %a1 - %t503 = load i64, ptr %a410 - %t504 = load { ptr, i64, i64 }, ptr %a165 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 %t503, %t505 - br i1 %t506, label %range5925, label %inrange5926 -range5925: - call void @finch_panic_index(ptr @.str.3803, i64 3124, i64 %t503, i64 %t505) - unreachable -inrange5926: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 %t503 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = load i64, ptr %a410 - %t511 = load { ptr, i64, i64 }, ptr %a165 - %t512 = extractvalue { ptr, i64, i64 } %t511, 1 - %t513 = icmp uge i64 %t510, %t512 - br i1 %t513, label %range5927, label %inrange5928 -range5927: - call void @finch_panic_index(ptr @.str.3804, i64 3124, i64 %t510, i64 %t512) - unreachable -inrange5928: - %t514 = extractvalue { ptr, i64, i64 } %t511, 0 - %t515 = getelementptr inbounds %S.ast.Node, ptr %t514, i64 %t510 - %t516 = getelementptr inbounds %S.ast.Node, ptr %t515, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = load %S.ast.Type, ptr %a456 - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a501 - %t521 = load %S.ast.Type, ptr %a456 - %t522 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t519, { ptr, i64, i64 } %t520, %S.ast.Type %t521) - %t523 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t502, %S.ast.Node %t509, { ptr, i64, i64 } %t517, %S.ast.Type %t518, { ptr, i64, i64 } %t522, i1 true, i1 true) - store { ptr, i64, i64 } %t522, ptr %a524 - call void @finch_str_drop(ptr %a524) - store { ptr, i64, i64 } %t523, ptr %a525 - call void @finch_str_drop(ptr %a525) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a456) - br label %for.step5908 -for.step5908: - %t526 = load i64, ptr %a410 - %t527 = add i64 %t526, 1 - store i64 %t527, ptr %a410 - br label %for.cond5906 -for.end5909: - call void @finch.drop.S_gen_StructDef(ptr %a407) - br label %endif5901 -endif5901: - %t528 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = extractvalue { ptr, i64, i64 } %t529, 1 - %t531 = icmp uge i64 1, %t530 - br i1 %t531, label %range5929, label %inrange5930 -range5929: - call void @finch_panic_index(ptr @.str.3805, i64 3127, i64 1, i64 %t530) - unreachable -inrange5930: - %t532 = extractvalue { ptr, i64, i64 } %t529, 0 - %t533 = getelementptr inbounds %S.ast.Node, ptr %t532, i64 1 - %t534 = load %S.ast.Node, ptr %t533 - store %S.ast.Node %t534, ptr %a535 - call void @finch.copy.S_ast_Node(ptr %a536, ptr %a535) - %t537 = load %S.ast.Node, ptr %a536 - store %S.ast.Node %t537, ptr %a538 - %t539 = load i1, ptr %a3 - br i1 %t539, label %then5931, label %else5932 -then5931: - %t540 = load ptr, ptr %a1 - %t541 = load %S.ast.Node, ptr %a538 - %t542 = call %S.gen.Val @finch.gen.expr(ptr %t540, %S.ast.Node %t541) - store %S.gen.Val %t542, ptr %a543 - %t544 = load i64, ptr %a140 - %t545 = icmp eq i64 %t544, 0 - br label %logic.from5934 -logic.from5934: - br i1 %t545, label %logic.end5936, label %logic.rhs5935 -logic.rhs5935: - %t546 = getelementptr inbounds %S.ast.Type, ptr %a133, i32 0, i32 0 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } %t547, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.3806, i64 4, i64 0 }, ptr %a549 - %t550 = call i32 @finch_str_eq(ptr %a548, ptr %a549) - %t551 = icmp ne i32 %t550, 0 - br label %logic.rend5937 -logic.rend5937: - br label %logic.end5936 -logic.end5936: - %t552 = phi i1 [ true, %logic.from5934 ], [ %t551, %logic.rend5937 ] - br i1 %t552, label %then5938, label %endif5940 -then5938: - %t553 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t554 = getelementptr inbounds %S.ast.Type, ptr %t553, i32 0, i32 0 - %t555 = load { ptr, i64, i64 }, ptr %t554 - store { ptr, i64, i64 } %t555, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.3807, i64 4, i64 0 }, ptr %a557 - %t558 = call i32 @finch_str_eq(ptr %a556, ptr %a557) - %t559 = icmp ne i32 %t558, 0 - br label %logic.from5941 -logic.from5941: - br i1 %t559, label %logic.end5943, label %logic.rhs5942 -logic.rhs5942: - %t560 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t561 = getelementptr inbounds %S.ast.Type, ptr %t560, i32 0, i32 0 - %t562 = load { ptr, i64, i64 }, ptr %t561 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.3808, i64 4, i64 0 }, ptr %a564 - %t565 = call i32 @finch_str_eq(ptr %a563, ptr %a564) - %t566 = icmp ne i32 %t565, 0 - br label %logic.rend5944 -logic.rend5944: - br label %logic.end5943 -logic.end5943: - %t567 = phi i1 [ true, %logic.from5941 ], [ %t566, %logic.rend5944 ] - br i1 %t567, label %then5945, label %endif5947 -then5945: - %t568 = load ptr, ptr %a1 - %t569 = load %S.ast.Node, ptr %a538 - call void @finch.gen.fail(ptr %t568, %S.ast.Node %t569, { ptr, i64, i64 } { ptr @.str.3809, i64 52, i64 0 }) - br label %endif5947 -endif5947: - %t570 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t571 = load %S.ast.Type, ptr %t570 - 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 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t574, ptr %a133 - store %S.ast.Type %t575, ptr %a576 - call void @finch.drop.S_ast_Type(ptr %a576) - br label %endif5940 -endif5940: - %t577 = load ptr, ptr %a1 - %t578 = load %S.gen.Val, ptr %a543 - %t579 = load %S.ast.Type, ptr %a133 - %t580 = load %S.ast.Node, ptr %a538 - %t581 = call %S.gen.Val @finch.gen.coerce(ptr %t577, %S.gen.Val %t578, %S.ast.Type %t579, %S.ast.Node %t580, { ptr, i64, i64 } { ptr @.str.3810, i64 57, i64 0 }) - %t582 = load %S.gen.Val, ptr %a543 - store %S.gen.Val %t581, ptr %a543 - store %S.gen.Val %t582, ptr %a583 - call void @finch.drop.S_gen_Val(ptr %a583) - %t584 = load ptr, ptr %a1 - %t585 = load %S.gen.Val, ptr %a543 - %t586 = call { ptr, i64, i64 } @finch.gen.own(ptr %t584, %S.gen.Val %t585) - store { ptr, i64, i64 } %t586, ptr %a587 - %t588 = load i1, ptr %a386 - br i1 %t588, label %then5948, label %endif5950 -then5948: - %t589 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t589) - br label %endif5950 -endif5950: - %t590 = load ptr, ptr %a1 - %t591 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t590, { ptr, i64, i64 } { ptr @.str.3811, i64 10, i64 0 }) - store { ptr, i64, i64 } %t591, ptr %a592 - %t593 = load ptr, ptr %a1 - %t594 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.br(ptr %t593, { ptr, i64, i64 } %t594) - %t595 = load ptr, ptr %a1 - %t596 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.label(ptr %t595, { ptr, i64, i64 } %t596) - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t598 = load { ptr, i64, i64 }, ptr %a587 - store { ptr, i64, i64 } %t598, ptr %a599 - call void @finch_str_copy(ptr %a600, ptr %a599) - %t601 = load { ptr, i64, i64 }, ptr %a600 - %t602 = load i64, ptr %t597 - %t603 = add i64 %t602, 1 - call void @finch_arr_reserve(ptr %a130, i64 %t603, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t604 = load ptr, ptr %a130 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i64 %t602 - store { ptr, i64, i64 } %t601, ptr %t605 - store i64 %t603, ptr %t597 - %t606 = getelementptr inbounds { ptr, i64, i64 }, ptr %a131, i32 0, i32 1 - %t607 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t607, ptr %a608 - call void @finch_str_copy(ptr %a609, ptr %a608) - %t610 = load { ptr, i64, i64 }, ptr %a609 - %t611 = load i64, ptr %t606 - %t612 = add i64 %t611, 1 - call void @finch_arr_reserve(ptr %a131, i64 %t612, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t613 = load ptr, ptr %a131 - %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i64 %t611 - store { ptr, i64, i64 } %t610, ptr %t614 - store i64 %t612, ptr %t606 - %t615 = load ptr, ptr %a1 - %t616 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t615, { ptr, i64, i64 } %t616) - store i1 true, ptr %a128 - call void @finch_str_drop(ptr %a592) - call void @finch_str_drop(ptr %a587) - call void @finch.drop.S_gen_Val(ptr %a543) - br label %endif5933 -else5932: - %t617 = getelementptr inbounds %S.ast.Node, ptr %a538, i32 0, i32 0 - %t618 = load { ptr, i64, i64 }, ptr %t617 - store { ptr, i64, i64 } %t618, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.3812, i64 5, i64 0 }, ptr %a620 - %t621 = call i32 @finch_str_eq(ptr %a619, ptr %a620) - %t622 = icmp ne i32 %t621, 0 - br i1 %t622, label %then5951, label %else5952 -then5951: - %t623 = load ptr, ptr %a1 - %t624 = load %S.ast.Node, ptr %a538 - call void @finch.gen.block(ptr %t623, %S.ast.Node %t624, i1 true) - br label %endif5953 -else5952: - %t625 = load ptr, ptr %a1 - %t626 = load %S.ast.Node, ptr %a538 - call void @finch.gen.stmt(ptr %t625, %S.ast.Node %t626) - br label %endif5953 -endif5953: - %t627 = load ptr, ptr %a1 - %t628 = icmp eq ptr %t627, null - br i1 %t628, label %panic5954, label %ok5955 -panic5954: - call void @finch_panic(ptr @.str.3813, i64 3154, ptr @.str.3814) - unreachable -ok5955: - %t629 = getelementptr inbounds %S.gen.Gen, ptr %t627, i32 0, i32 9 - %t630 = load i1, ptr %t629 - %t631 = xor i1 %t630, true - br i1 %t631, label %then5956, label %endif5958 -then5956: - store i1 true, ptr %a128 - br label %endif5958 -endif5958: - %t632 = load i1, ptr %a386 - br i1 %t632, label %then5959, label %endif5961 -then5959: - %t633 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t633) - br label %endif5961 -endif5961: - %t634 = load ptr, ptr %a1 - %t635 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t634, { ptr, i64, i64 } %t635) - br label %endif5933 -endif5933: - %t636 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t637 = load i1, ptr %t636 - %t638 = xor i1 %t637, true - br i1 %t638, label %then5962, label %endif5964 -then5962: - %t639 = load ptr, ptr %a1 - %t640 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.label(ptr %t639, { ptr, i64, i64 } %t640) - br label %endif5964 -endif5964: - call void @finch.drop.S_ast_Node(ptr %a538) - call void @finch.drop.arr_S_ast_Node(ptr %a165) - call void @finch_str_drop(ptr %a164) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Node(ptr %a155) - br label %for.step5839 -for.step5839: - %t641 = load i64, ptr %a140 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a140 - br label %for.cond5837 -for.end5840: - %t643 = load i1, ptr %a127 - %t644 = xor i1 %t643, true - br i1 %t644, label %then5965, label %endif5967 -then5965: - %t645 = load i64, ptr %a49 - %t646 = icmp sge i64 %t645, 0 - br i1 %t646, label %then5968, label %else5969 -then5968: - store { ptr, i64, i64 } zeroinitializer, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic5971, label %ok5972 -panic5971: - call void @finch_panic(ptr @.str.3815, i64 3169, ptr @.str.3816) - unreachable -ok5972: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 22 - %t651 = load i64, ptr %a49 - %t652 = load { ptr, i64, i64 }, ptr %t650 - %t653 = extractvalue { ptr, i64, i64 } %t652, 1 - %t654 = icmp uge i64 %t651, %t653 - br i1 %t654, label %range5973, label %inrange5974 -range5973: - call void @finch_panic_index(ptr @.str.3817, i64 3169, i64 %t651, i64 %t653) - unreachable -inrange5974: - %t655 = extractvalue { ptr, i64, i64 } %t652, 0 - %t656 = getelementptr inbounds %S.gen.SumDef, ptr %t655, i64 %t651 - %t657 = getelementptr inbounds %S.gen.SumDef, ptr %t656, i32 0, i32 2 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i32 0, i32 1 - %t659 = load i64, ptr %t658 - store i64 0, ptr %a660 - br label %for.cond5975 -for.cond5975: - %t661 = load i64, ptr %a660 - %t662 = icmp slt i64 %t661, %t659 - br i1 %t662, label %for.body5976, label %for.end5978 -for.body5976: - %t663 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t664 = load i64, ptr %a660 - call void @finch_str_from_int(ptr %a665, i64 %t664) - %t666 = load { ptr, i64, i64 }, ptr %a665 - store i64 -1, ptr %a667 - %t668 = load i64, ptr %t663 - %t669 = load ptr, ptr %a129 - store i64 0, ptr %a670 - br label %find.cond5979 -find.cond5979: - %t671 = load i64, ptr %a670 - %t672 = icmp slt i64 %t671, %t668 - br i1 %t672, label %find.body5980, label %find.end5983 -find.body5980: - %t673 = getelementptr inbounds { ptr, i64, i64 }, ptr %t669, i64 %t671 - %t674 = load { ptr, i64, i64 }, ptr %t673 - store { ptr, i64, i64 } %t674, ptr %a675 - store { ptr, i64, i64 } %t666, ptr %a676 - %t677 = call i32 @finch_str_eq(ptr %a675, ptr %a676) - %t678 = icmp ne i32 %t677, 0 - br i1 %t678, label %find.hit5981, label %find.next5982 -find.hit5981: - store i64 %t671, ptr %a667 - br label %find.end5983 -find.next5982: - %t679 = add i64 %t671, 1 - store i64 %t679, ptr %a670 - br label %find.cond5979 -find.end5983: - store { ptr, i64, i64 } %t666, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load i64, ptr %a667 - %t682 = icmp sge i64 %t681, 0 - %t683 = xor i1 %t682, true - br i1 %t683, label %then5984, label %endif5986 -then5984: - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t685 = load ptr, ptr %a1 - %t686 = icmp eq ptr %t685, null - br i1 %t686, label %panic5987, label %ok5988 -panic5987: - call void @finch_panic(ptr @.str.3818, i64 3171, ptr @.str.3819) - unreachable -ok5988: - %t687 = getelementptr inbounds %S.gen.Gen, ptr %t685, i32 0, i32 22 - %t688 = load i64, ptr %a49 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range5989, label %inrange5990 -range5989: - call void @finch_panic_index(ptr @.str.3820, i64 3171, i64 %t688, i64 %t690) - unreachable -inrange5990: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.gen.SumDef, ptr %t692, i64 %t688 - %t694 = getelementptr inbounds %S.gen.SumDef, ptr %t693, i32 0, i32 2 - %t695 = load i64, ptr %a660 - %t696 = load { ptr, i64, i64 }, ptr %t694 - %t697 = extractvalue { ptr, i64, i64 } %t696, 1 - %t698 = icmp uge i64 %t695, %t697 - br i1 %t698, label %range5991, label %inrange5992 -range5991: - call void @finch_panic_index(ptr @.str.3821, i64 3171, i64 %t695, i64 %t697) - unreachable -inrange5992: - %t699 = extractvalue { ptr, i64, i64 } %t696, 0 - %t700 = getelementptr inbounds { ptr, i64, i64 }, ptr %t699, i64 %t695 - %t701 = load { ptr, i64, i64 }, ptr %t700 - store { ptr, i64, i64 } %t701, ptr %a702 - call void @finch_str_copy(ptr %a703, ptr %a702) - %t704 = load { ptr, i64, i64 }, ptr %a703 - %t705 = load i64, ptr %t684 - %t706 = add i64 %t705, 1 - call void @finch_arr_reserve(ptr %a647, i64 %t706, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t707 = load ptr, ptr %a647 - %t708 = getelementptr inbounds { ptr, i64, i64 }, ptr %t707, i64 %t705 - store { ptr, i64, i64 } %t704, ptr %t708 - store i64 %t706, ptr %t684 - br label %endif5986 -endif5986: - br label %for.step5977 -for.step5977: - %t709 = load i64, ptr %a660 - %t710 = add i64 %t709, 1 - store i64 %t710, ptr %a660 - br label %for.cond5975 -for.end5978: - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t712 = load i64, ptr %t711 - %t713 = icmp sgt i64 %t712, 0 - br i1 %t713, label %then5993, label %endif5995 -then5993: - %t714 = load ptr, ptr %a1 - %t715 = load %S.ast.Node, ptr %a2 - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3823, i64 2, i64 0 }, ptr %a717 - call void @finch_str_join(ptr %a718, ptr %a647, ptr %a717) - %t719 = load { ptr, i64, i64 }, ptr %a718 - store { ptr, i64, i64 } { ptr @.str.3822, i64 26, i64 0 }, ptr %a721 - store { ptr, i64, i64 } %t719, ptr %a722 - call void @finch_str_concat(ptr %a720, ptr %a721, ptr %a722) - store { ptr, i64, i64 } %t719, ptr %a723 - call void @finch_str_drop(ptr %a723) - %t724 = load { ptr, i64, i64 }, ptr %a720 - store { ptr, i64, i64 } %t724, ptr %a726 - store { ptr, i64, i64 } { ptr @.str.3824, i64 29, i64 0 }, ptr %a727 - call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727) - store { ptr, i64, i64 } %t724, ptr %a728 - call void @finch_str_drop(ptr %a728) - %t729 = load { ptr, i64, i64 }, ptr %a725 - call void @finch.gen.fail(ptr %t714, %S.ast.Node %t715, { ptr, i64, i64 } %t729) - store { ptr, i64, i64 } %t729, ptr %a730 - call void @finch_str_drop(ptr %a730) - br label %endif5995 -endif5995: - call void @finch.drop.arr_str(ptr %a647) - br label %endif5970 -else5969: - %t731 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t732, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3825, i64 4, i64 0 }, ptr %a734 - %t735 = call i32 @finch_str_eq(ptr %a733, ptr %a734) - %t736 = icmp ne i32 %t735, 0 - br i1 %t736, label %then5996, label %else5997 -then5996: - %t737 = load ptr, ptr %a1 - %t738 = icmp eq ptr %t737, null - br i1 %t738, label %panic5999, label %ok6000 -panic5999: - call void @finch_panic(ptr @.str.3826, i64 3178, ptr @.str.3827) - unreachable -ok6000: - %t739 = getelementptr inbounds %S.gen.Gen, ptr %t737, i32 0, i32 21 - %t740 = load ptr, ptr %a1 - %t741 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t742 = load { ptr, i64, i64 }, ptr %t741 - %t743 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t744 = load { ptr, i64, i64 }, ptr %t743 - %t745 = call i64 @finch.gen.findEnum(ptr %t740, { ptr, i64, i64 } %t742, { ptr, i64, i64 } %t744) - %t746 = load { ptr, i64, i64 }, ptr %t739 - %t747 = extractvalue { ptr, i64, i64 } %t746, 1 - %t748 = icmp uge i64 %t745, %t747 - br i1 %t748, label %range6001, label %inrange6002 -range6001: - call void @finch_panic_index(ptr @.str.3828, i64 3178, i64 %t745, i64 %t747) - unreachable -inrange6002: - %t749 = extractvalue { ptr, i64, i64 } %t746, 0 - %t750 = getelementptr inbounds %S.gen.EnumDef, ptr %t749, i64 %t745 - %t751 = load %S.gen.EnumDef, ptr %t750 - store %S.gen.EnumDef %t751, ptr %a752 - call void @finch.copy.S_gen_EnumDef(ptr %a753, ptr %a752) - %t754 = load %S.gen.EnumDef, ptr %a753 - store %S.gen.EnumDef %t754, ptr %a755 - store { ptr, i64, i64 } zeroinitializer, ptr %a756 - %t757 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t758 = getelementptr inbounds { ptr, i64, i64 }, ptr %t757, i32 0, i32 1 - %t759 = load i64, ptr %t758 - store i64 0, ptr %a760 - br label %for.cond6003 -for.cond6003: - %t761 = load i64, ptr %a760 - %t762 = icmp slt i64 %t761, %t759 - br i1 %t762, label %for.body6004, label %for.end6006 -for.body6004: - %t763 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t764 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 3 - %t765 = load i64, ptr %a760 - %t766 = load { ptr, i64, i64 }, ptr %t764 - %t767 = extractvalue { ptr, i64, i64 } %t766, 1 - %t768 = icmp uge i64 %t765, %t767 - br i1 %t768, label %range6007, label %inrange6008 -range6007: - call void @finch_panic_index(ptr @.str.3829, i64 3181, i64 %t765, i64 %t767) - unreachable -inrange6008: - %t769 = extractvalue { ptr, i64, i64 } %t766, 0 - %t770 = getelementptr inbounds i64, ptr %t769, i64 %t765 - %t771 = load i64, ptr %t770 - call void @finch_str_from_int(ptr %a772, i64 %t771) - %t773 = load { ptr, i64, i64 }, ptr %a772 - store i64 -1, ptr %a774 - %t775 = load i64, ptr %t763 - %t776 = load ptr, ptr %a129 - store i64 0, ptr %a777 - br label %find.cond6009 -find.cond6009: - %t778 = load i64, ptr %a777 - %t779 = icmp slt i64 %t778, %t775 - br i1 %t779, label %find.body6010, label %find.end6013 -find.body6010: - %t780 = getelementptr inbounds { ptr, i64, i64 }, ptr %t776, i64 %t778 - %t781 = load { ptr, i64, i64 }, ptr %t780 - store { ptr, i64, i64 } %t781, ptr %a782 - store { ptr, i64, i64 } %t773, ptr %a783 - %t784 = call i32 @finch_str_eq(ptr %a782, ptr %a783) - %t785 = icmp ne i32 %t784, 0 - br i1 %t785, label %find.hit6011, label %find.next6012 -find.hit6011: - store i64 %t778, ptr %a774 - br label %find.end6013 -find.next6012: - %t786 = add i64 %t778, 1 - store i64 %t786, ptr %a777 - br label %find.cond6009 -find.end6013: - store { ptr, i64, i64 } %t773, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load i64, ptr %a774 - %t789 = icmp sge i64 %t788, 0 - %t790 = xor i1 %t789, true - br i1 %t790, label %then6014, label %endif6016 -then6014: - %t791 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t792 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t793 = load i64, ptr %a760 - %t794 = load { ptr, i64, i64 }, ptr %t792 - %t795 = extractvalue { ptr, i64, i64 } %t794, 1 - %t796 = icmp uge i64 %t793, %t795 - br i1 %t796, label %range6017, label %inrange6018 -range6017: - call void @finch_panic_index(ptr @.str.3830, i64 3182, i64 %t793, i64 %t795) - unreachable -inrange6018: - %t797 = extractvalue { ptr, i64, i64 } %t794, 0 - %t798 = getelementptr inbounds { ptr, i64, i64 }, ptr %t797, i64 %t793 - %t799 = load { ptr, i64, i64 }, ptr %t798 - store { ptr, i64, i64 } %t799, ptr %a800 - call void @finch_str_copy(ptr %a801, ptr %a800) - %t802 = load { ptr, i64, i64 }, ptr %a801 - %t803 = load i64, ptr %t791 - %t804 = add i64 %t803, 1 - call void @finch_arr_reserve(ptr %a756, i64 %t804, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t805 = load ptr, ptr %a756 - %t806 = getelementptr inbounds { ptr, i64, i64 }, ptr %t805, i64 %t803 - store { ptr, i64, i64 } %t802, ptr %t806 - store i64 %t804, ptr %t791 - br label %endif6016 -endif6016: - br label %for.step6005 -for.step6005: - %t807 = load i64, ptr %a760 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a760 - br label %for.cond6003 -for.end6006: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t810 = load i64, ptr %t809 - %t811 = icmp sgt i64 %t810, 0 - br i1 %t811, label %then6019, label %endif6021 -then6019: - %t812 = load ptr, ptr %a1 - %t813 = load %S.ast.Node, ptr %a2 - %t814 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3832, i64 2, i64 0 }, ptr %a815 - call void @finch_str_join(ptr %a816, ptr %a756, ptr %a815) - %t817 = load { ptr, i64, i64 }, ptr %a816 - store { ptr, i64, i64 } { ptr @.str.3831, i64 26, i64 0 }, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t822, ptr %a824 - store { ptr, i64, i64 } { ptr @.str.3833, i64 29, i64 0 }, ptr %a825 - call void @finch_str_concat(ptr %a823, ptr %a824, ptr %a825) - store { ptr, i64, i64 } %t822, ptr %a826 - call void @finch_str_drop(ptr %a826) - %t827 = load { ptr, i64, i64 }, ptr %a823 - call void @finch.gen.fail(ptr %t812, %S.ast.Node %t813, { ptr, i64, i64 } %t827) - store { ptr, i64, i64 } %t827, ptr %a828 - call void @finch_str_drop(ptr %a828) - br label %endif6021 -endif6021: - call void @finch.drop.arr_str(ptr %a756) - call void @finch.drop.S_gen_EnumDef(ptr %a755) - br label %endif5998 -else5997: - %t829 = load ptr, ptr %a1 - %t830 = load %S.ast.Node, ptr %a2 - %t831 = load %S.ast.Type, ptr %a19 - %t832 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t831) - store { ptr, i64, i64 } { ptr @.str.3834, i64 11, i64 0 }, ptr %a834 - store { ptr, i64, i64 } %t832, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - store { ptr, i64, i64 } %t837, ptr %a839 - store { ptr, i64, i64 } { ptr @.str.3835, i64 54, i64 0 }, ptr %a840 - call void @finch_str_concat(ptr %a838, ptr %a839, ptr %a840) - store { ptr, i64, i64 } %t837, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = load { ptr, i64, i64 }, ptr %a838 - call void @finch.gen.fail(ptr %t829, %S.ast.Node %t830, { ptr, i64, i64 } %t842) - store { ptr, i64, i64 } %t842, ptr %a843 - call void @finch_str_drop(ptr %a843) - br label %endif5998 -endif5998: - br label %endif5970 -endif5970: - %t844 = load ptr, ptr %a1 - %t845 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t844, { ptr, i64, i64 } { ptr @.str.3836, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3837, i64 35, i64 0 }, %S.ast.Node %t845) - %t846 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t846, { ptr, i64, i64 } { ptr @.str.3838, i64 11, i64 0 }) - %t847 = load ptr, ptr %a1 - %t848 = icmp eq ptr %t847, null - br i1 %t848, label %panic6022, label %ok6023 -panic6022: - call void @finch_panic(ptr @.str.3839, i64 3194, ptr @.str.3840) - unreachable -ok6023: - %t849 = getelementptr inbounds %S.gen.Gen, ptr %t847, i32 0, i32 9 - store i1 true, ptr %t849 - br label %endif5967 -endif5967: - %t850 = load ptr, ptr %a1 - %t851 = load i64, ptr %a46 - call void @finch.gen.heldEnd(ptr %t850, i64 %t851) - %t852 = load ptr, ptr %a1 - %t853 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.label(ptr %t852, { ptr, i64, i64 } %t853) - %t854 = load i1, ptr %a128 - %t855 = xor i1 %t854, true - br i1 %t855, label %then6024, label %endif6026 -then6024: - %t856 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t856, { ptr, i64, i64 } { ptr @.str.3841, i64 11, i64 0 }) - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic6027, label %ok6028 -panic6027: - call void @finch_panic(ptr @.str.3842, i64 3200, ptr @.str.3843) - unreachable -ok6028: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 9 - store i1 true, ptr %t859 - %t860 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3844, i64 4, i64 0 }) - %t861 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t860, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t861 -endif6026: - %t862 = load i1, ptr %a3 - br i1 %t862, label %then6029, label %endif6031 -then6029: - %t863 = load ptr, ptr %a1 - %t864 = load ptr, ptr %a1 - %t865 = load %S.ast.Type, ptr %a133 - %t866 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t864, %S.ast.Type %t865) - store { ptr, i64, i64 } { ptr @.str.3845, i64 4, i64 0 }, ptr %a868 - store { ptr, i64, i64 } %t866, ptr %a869 - call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869) - store { ptr, i64, i64 } %t866, ptr %a870 - call void @finch_str_drop(ptr %a870) - %t871 = load { ptr, i64, i64 }, ptr %a867 - store { ptr, i64, i64 } %t871, ptr %a873 - store { ptr, i64, i64 } { ptr @.str.3846, i64 1, i64 0 }, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - store { ptr, i64, i64 } %t871, ptr %a875 - call void @finch_str_drop(ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a872 - %t877 = load { ptr, i64, i64 }, ptr %a130 - %t878 = load { ptr, i64, i64 }, ptr %a131 - %t879 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t877, { ptr, i64, i64 } %t878) - store { ptr, i64, i64 } %t876, ptr %a881 - store { ptr, i64, i64 } %t879, ptr %a882 - call void @finch_str_concat(ptr %a880, ptr %a881, ptr %a882) - store { ptr, i64, i64 } %t876, ptr %a883 - call void @finch_str_drop(ptr %a883) - store { ptr, i64, i64 } %t879, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load { ptr, i64, i64 }, ptr %a880 - %t886 = call { ptr, i64, i64 } @finch.gen.op(ptr %t863, { ptr, i64, i64 } %t885) - store { ptr, i64, i64 } %t885, ptr %a887 - call void @finch_str_drop(ptr %a887) - %t888 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t886, 0 - %t889 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t889, ptr %a890 - call void @finch.copy.S_ast_Type(ptr %a891, ptr %a890) - %t892 = load %S.ast.Type, ptr %a891 - %t893 = insertvalue %S.gen.Val %t888, %S.ast.Type %t892, 1 - %t894 = load ptr, ptr %a1 - %t895 = load %S.ast.Type, ptr %a133 - %t896 = call i1 @finch.gen.owning(ptr %t894, %S.ast.Type %t895) - %t897 = insertvalue %S.gen.Val %t893, i1 %t896, 2 - store %S.gen.Val %t897, ptr %a898 - %t899 = load ptr, ptr %a1 - %t900 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t899, %S.gen.Val %t900) - %t901 = load %S.gen.Val, ptr %a898 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t901 -endif6031: - %t902 = load ptr, ptr %a1 - %t903 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t902, %S.gen.Val %t903) - %t904 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3847, i64 4, i64 0 }) - %t905 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t904, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t905 -} - -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 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond6032 -for.cond6032: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body6033, label %for.end6035 -for.body6033: - %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 %range6036, label %inrange6037 -range6036: - call void @finch_panic_index(ptr @.str.3849, i64 3215, i64 %t10, i64 %t12) - unreachable -inrange6037: - %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.3848, 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.3850, i64 3, i64 0 }, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - %t26 = load i64, ptr %a6 - %t27 = load { ptr, i64, i64 }, ptr %a2 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range6038, label %inrange6039 -range6038: - call void @finch_panic_index(ptr @.str.3851, i64 3215, i64 %t26, i64 %t28) - unreachable -inrange6039: - %t30 = extractvalue { ptr, i64, i64 } %t27, 0 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t26 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t25, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t25, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3852, i64 2, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load i64, ptr %t9 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %a3 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t9 - br label %for.step6034 -for.step6034: - %t47 = load i64, ptr %a6 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a6 - br label %for.cond6032 -for.end6035: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3853, i64 2, i64 0 }, ptr %a50 - call void @finch_str_join(ptr %a51, ptr %a3, ptr %a50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t52 -} - -define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) { -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 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a64 = alloca %S.gen.Val, align 16 - %a65 = alloca %S.gen.Val, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.gen.Fallible, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t4 = load { ptr, i64, i64 }, ptr %t3 - store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3854, 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.from6040 -logic.from6040: - br i1 %t8, label %logic.rhs6041, label %logic.end6042 -logic.rhs6041: - %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.3855, 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.rend6043 -logic.rend6043: - br label %logic.end6042 -logic.end6042: - %t15 = phi i1 [ false, %logic.from6040 ], [ %t14, %logic.rend6043 ] - br i1 %t15, label %then6044, label %endif6046 -then6044: - %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.3856, i64 80, i64 0 }) - br label %endif6046 -endif6046: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6047, label %ok6048 -panic6047: - call void @finch_panic(ptr @.str.3857, i64 3233, ptr @.str.3858) - unreachable -ok6048: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 41 - %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 %panic6049, label %ok6050 -panic6049: - call void @finch_panic(ptr @.str.3859, i64 3234, ptr @.str.3860) - unreachable -ok6050: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 42 - %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 %panic6051, label %ok6052 -panic6051: - call void @finch_panic(ptr @.str.3861, i64 3235, ptr @.str.3862) - unreachable -ok6052: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 43 - %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 %panic6053, label %ok6054 -panic6053: - call void @finch_panic(ptr @.str.3863, i64 3236, ptr @.str.3864) - unreachable -ok6054: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 41 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store { ptr, i64, i64 } %t43, ptr %t46 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic6055, label %ok6056 -panic6055: - call void @finch_panic(ptr @.str.3866, i64 3237, ptr @.str.3867) - unreachable -ok6056: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 42 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } { ptr @.str.3865, i64 0, i64 0 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic6057, label %ok6058 -panic6057: - call void @finch_panic(ptr @.str.3869, i64 3238, ptr @.str.3870) - unreachable -ok6058: - %t56 = getelementptr inbounds %S.gen.Gen, ptr %t54, i32 0, i32 43 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } { ptr @.str.3868, i64 0, i64 0 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = load %S.gen.Val, ptr %a62 - store %S.gen.Val %t63, ptr %a64 - call void @finch.copy.S_gen_Val(ptr %a65, ptr %a64) - %t66 = load %S.gen.Val, ptr %a65 - %t67 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t66, 0 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic6059, label %ok6060 -panic6059: - call void @finch_panic(ptr @.str.3871, i64 3240, ptr @.str.3872) - unreachable -ok6060: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 42 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_copy(ptr %a73, ptr %a72) - %t74 = load { ptr, i64, i64 }, ptr %a73 - %t75 = insertvalue %S.gen.Fallible %t67, { ptr, i64, i64 } %t74, 1 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic6061, label %ok6062 -panic6061: - call void @finch_panic(ptr @.str.3873, i64 3240, ptr @.str.3874) - unreachable -ok6062: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 43 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_copy(ptr %a81, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - %t83 = insertvalue %S.gen.Fallible %t75, { ptr, i64, i64 } %t82, 2 - store %S.gen.Fallible %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a25 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic6063, label %ok6064 -panic6063: - call void @finch_panic(ptr @.str.3875, i64 3241, ptr @.str.3876) - unreachable -ok6064: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 41 - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a33 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6065, label %ok6066 -panic6065: - call void @finch_panic(ptr @.str.3877, i64 3242, ptr @.str.3878) - unreachable -ok6066: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 42 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t100, ptr %t97 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a41 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic6067, label %ok6068 -panic6067: - call void @finch_panic(ptr @.str.3879, i64 3243, ptr @.str.3880) - unreachable -ok6068: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 43 - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_copy(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t109, ptr %t106 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = getelementptr inbounds %S.gen.Fallible, ptr %a84, i32 0, i32 1 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = load i64, ptr %t113 - %t115 = icmp eq i64 %t114, 0 - br i1 %t115, label %then6069, label %endif6071 -then6069: - %t116 = load ptr, ptr %a1 - %t117 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } { ptr @.str.3881, i64 50, i64 0 }) - br label %endif6071 -endif6071: - %t118 = load %S.gen.Fallible, ptr %a84 - call void @finch.drop.S_gen_Val(ptr %a62) - call void @finch_str_drop(ptr %a41) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a25) - ret %S.gen.Fallible %t118 -} - -define internal void @finch.drop.S_gen_Fallible(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Val(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca %S.gen.Fallible, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a156 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic6072, label %ok6073 -panic6072: - call void @finch_panic(ptr @.str.3882, i64 3252, ptr @.str.3883) - unreachable -ok6073: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then6074, label %endif6076 -then6074: - %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.3884, i64 30, i64 0 }) - br label %endif6076 -endif6076: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic6077, label %ok6078 -panic6077: - call void @finch_panic(ptr @.str.3885, i64 3255, ptr @.str.3886) - unreachable -ok6078: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9 - %t14 = load i1, ptr %t13 - %t15 = xor i1 %t14, true - br i1 %t15, label %then6079, label %endif6081 -then6079: - store { ptr, i64, i64 } { ptr @.str.3887, i64 1, i64 0 }, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6082, label %ok6083 -panic6082: - call void @finch_panic(ptr @.str.3888, i64 3257, ptr @.str.3889) - unreachable -ok6083: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 13 - %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12 - %t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3890, 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 %then6084, label %endif6086 -then6084: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6087, label %ok6088 -panic6087: - call void @finch_panic(ptr @.str.3891, i64 3258, ptr @.str.3892) - unreachable -ok6088: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 13 - %t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12 - %t31 = load %S.ast.Type, ptr %t30 - %t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31) - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3893, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t37, ptr %a16 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %endif6086 -endif6086: - %t40 = load ptr, ptr %a1 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = load ptr, ptr %a1 - %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic6089, label %ok6090 -panic6089: - call void @finch_panic(ptr @.str.3895, i64 3260, ptr @.str.3896) - unreachable -ok6090: - %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 13 - %t45 = getelementptr inbounds %S.gen.FnSig, ptr %t44, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } { ptr @.str.3894, i64 29, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3897, i64 31, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3898, i64 55, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.fail(ptr %t40, %S.ast.Node %t41, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a16) - br label %endif6081 -endif6081: - %t68 = load ptr, ptr %a1 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t70 = load { ptr, i64, i64 }, ptr %t69 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 0, %t71 - br i1 %t72, label %range6091, label %inrange6092 -range6091: - call void @finch_panic_index(ptr @.str.3899, i64 3262, i64 0, i64 %t71) - unreachable -inrange6092: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 0 - %t75 = load %S.ast.Node, ptr %t74 - %t76 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t68, %S.ast.Node %t75) - store %S.gen.Fallible %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t78, { ptr, i64, i64 } { ptr @.str.3900, i64 10, i64 0 }) - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t81, { ptr, i64, i64 } { ptr @.str.3901, i64 6, i64 0 }) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 1 - %t86 = load { ptr, i64, i64 }, ptr %t85 - %t87 = load { ptr, i64, i64 }, ptr %a80 - %t88 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.condBr(ptr %t84, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t88) - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a80 - call void @finch.gen.label(ptr %t89, { ptr, i64, i64 } %t90) - %t91 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t91, i64 0) - %t92 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t92, i64 0) - %t93 = load ptr, ptr %a1 - %t94 = load ptr, ptr %a1 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6093, label %ok6094 -panic6093: - call void @finch_panic(ptr @.str.3903, i64 3269, ptr @.str.3904) - unreachable -ok6094: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 13 - %t98 = load %S.gen.FnSig, ptr %t97 - %t99 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t94, %S.gen.FnSig %t98) - store { ptr, i64, i64 } { ptr @.str.3902, i64 4, i64 0 }, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.3905, i64 1, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load ptr, ptr %a1 - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic6095, label %ok6096 -panic6095: - call void @finch_panic(ptr @.str.3907, i64 3269, ptr @.str.3908) - unreachable -ok6096: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 13 - %t115 = load %S.gen.FnSig, ptr %t114 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t111, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.3906, i64 12, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.3909, i64 36, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t126, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.3910, i64 3, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t110, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - store { ptr, i64, i64 } %t109, ptr %a142 - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t109, ptr %a144 - call void @finch_str_drop(ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.emit(ptr %t93, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic6097, label %ok6098 -panic6097: - call void @finch_panic(ptr @.str.3911, i64 3270, ptr @.str.3912) - unreachable -ok6098: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 9 - store i1 true, ptr %t150 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) - %t153 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 0 - %t154 = load %S.gen.Val, ptr %t153 - store %S.gen.Val %t154, ptr %a155 - call void @finch.copy.S_gen_Val(ptr %a156, ptr %a155) - %t157 = load %S.gen.Val, ptr %a156 - call void @finch_str_drop(ptr %a83) - call void @finch_str_drop(ptr %a80) - call void @finch.drop.S_gen_Fallible(ptr %a77) - ret %S.gen.Val %t157 -} - -define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) { -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 - %a42 = alloca %S.ast.Type, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca i1, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.ast.Type, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Type, align 16 - %a245 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range6099, label %inrange6100 -range6099: - call void @finch_panic_index(ptr @.str.3913, i64 3277, i64 0, i64 %t7) - unreachable -inrange6100: - %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.3914, 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.3915, 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 %then6101, label %endif6103 -then6101: - %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.3917, 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.3916, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true, i1 true) - store %S.ast.Type %t38, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range6104, label %inrange6105 -range6104: - call void @finch_panic_index(ptr @.str.3918, i64 3286, i64 1, i64 %t47) - unreachable -inrange6105: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 - %t51 = load %S.ast.Node, ptr %t50 - call void @finch.gen.block(ptr %t44, %S.ast.Node %t51, i1 true) - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic6106, label %ok6107 -panic6106: - call void @finch_panic(ptr @.str.3919, i64 3287, ptr @.str.3920) - unreachable -ok6107: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 9 - %t55 = load i1, ptr %t54 - store i1 %t55, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t57) - %t58 = load i1, ptr %a56 - %t59 = xor i1 %t58, true - br label %logic.from6108 -logic.from6108: - br i1 %t59, label %logic.rhs6109, label %logic.end6110 -logic.rhs6109: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3921, i64 4, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp eq i32 %t65, 0 - br label %logic.rend6111 -logic.rend6111: - br label %logic.end6110 -logic.end6110: - %t67 = phi i1 [ false, %logic.from6108 ], [ %t66, %logic.rend6111 ] - br label %logic.from6112 -logic.from6112: - br i1 %t67, label %logic.rhs6113, label %logic.end6114 -logic.rhs6113: - %t68 = load i1, ptr %a3 - %t69 = xor i1 %t68, true - br label %logic.rend6115 -logic.rend6115: - br label %logic.end6114 -logic.end6114: - %t70 = phi i1 [ false, %logic.from6112 ], [ %t69, %logic.rend6115 ] - br i1 %t70, label %then6116, label %endif6118 -then6116: - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 1, %t74 - br i1 %t75, label %range6119, label %inrange6120 -range6119: - call void @finch_panic_index(ptr @.str.3922, i64 3290, i64 1, i64 %t74) - unreachable -inrange6120: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 1 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.3923, i64 142, i64 0 }) - br label %endif6118 -endif6118: - %t79 = load i1, ptr %a3 - br label %logic.from6121 -logic.from6121: - br i1 %t79, label %logic.rhs6122, label %logic.end6123 -logic.rhs6122: - %t80 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %t80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.3924, i64 4, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp eq i32 %t85, 0 - br label %logic.rend6124 -logic.rend6124: - br label %logic.end6123 -logic.end6123: - %t87 = phi i1 [ false, %logic.from6121 ], [ %t86, %logic.rend6124 ] - br i1 %t87, label %then6125, label %endif6127 -then6125: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3925, i64 6, i64 0 }) - store { ptr, i64, i64 } %t89, ptr %a90 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - %t96 = load %S.gen.Val, ptr %a19 - call void @finch.gen.release(ptr %t95, %S.gen.Val %t96) - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t97, { ptr, i64, i64 } %t98) - %t99 = load ptr, ptr %a1 - %t100 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t99, { ptr, i64, i64 } %t100) - %t101 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3926, i64 4, i64 0 }) - %t102 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t101, 1 - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t102 -endif6127: - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load %S.gen.Val, ptr %a19 - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t107 -endif6103: - %t108 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3927, 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 %then6128, label %endif6130 -then6128: - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 1, %t118 - br i1 %t119, label %range6131, label %inrange6132 -range6131: - call void @finch_panic_index(ptr @.str.3928, i64 3306, i64 1, i64 %t118) - unreachable -inrange6132: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Node, ptr %t120, i64 1 - %t122 = load %S.ast.Node, ptr %t121 - call void @finch.gen.fail(ptr %t115, %S.ast.Node %t122, { ptr, i64, i64 } { ptr @.str.3929, i64 98, i64 0 }) - br label %endif6130 -endif6130: - %t123 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t123) - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Node, ptr %a2 - %t126 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3931, i64 3, i64 0 }) - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t124, %S.ast.Node %t125, { ptr, i64, i64 } { ptr @.str.3930, i64 3, i64 0 }, %S.ast.Type %t126, { ptr, i64, i64 } %t128, i1 true, i1 true) - store %S.ast.Type %t126, ptr %a130 - call void @finch.drop.S_ast_Type(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 1, %t136 - br i1 %t137, label %range6133, label %inrange6134 -range6133: - call void @finch_panic_index(ptr @.str.3932, i64 3310, i64 1, i64 %t136) - unreachable -inrange6134: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Node, ptr %t138, i64 1 - %t140 = load %S.ast.Node, ptr %t139 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - %t143 = call %S.gen.Val @finch.gen.exprWant(ptr %t133, %S.ast.Node %t140, %S.ast.Type %t142) - %t144 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t147 = load { ptr, i64, i64 }, ptr %t146 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 1, %t148 - br i1 %t149, label %range6135, label %inrange6136 -range6135: - call void @finch_panic_index(ptr @.str.3933, i64 3310, i64 1, i64 %t148) - unreachable -inrange6136: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.ast.Node, ptr %t150, i64 1 - %t152 = load %S.ast.Node, ptr %t151 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t132, %S.gen.Val %t143, %S.ast.Type %t145, %S.ast.Node %t152, { ptr, i64, i64 } { ptr @.str.3934, i64 20, i64 0 }) - store %S.gen.Val %t143, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store %S.gen.Val %t153, ptr %a155 - %t156 = load ptr, ptr %a1 - %t157 = load %S.gen.Val, ptr %a155 - %t158 = call { ptr, i64, i64 } @finch.gen.own(ptr %t156, %S.gen.Val %t157) - store { ptr, i64, i64 } %t158, ptr %a159 - %t160 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t160) - %t161 = load ptr, ptr %a1 - %t162 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t161, { ptr, i64, i64 } { ptr @.str.3935, i64 7, i64 0 }) - store { ptr, i64, i64 } %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3936, i64 6, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168) - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170) - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172) - %t173 = load ptr, ptr %a1 - %t174 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t173, { ptr, i64, i64 } %t174) - %t175 = load ptr, ptr %a1 - %t176 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t175, { ptr, i64, i64 } %t176) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) - store { ptr, i64, i64 } { ptr @.str.3937, i64 4, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_drop(ptr %a187) - %t188 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t188, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.3938, i64 3, i64 0 }, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t188, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - %t194 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t193, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.3939, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t204, ptr %a207 - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t204, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.3940, i64 6, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.3941, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3942, i64 2, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t179, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t243 = load %S.ast.Type, ptr %t242 - store %S.ast.Type %t243, ptr %a244 - call void @finch.copy.S_ast_Type(ptr %a245, ptr %a244) - %t246 = load %S.ast.Type, ptr %a245 - %t247 = insertvalue %S.gen.Val %t241, %S.ast.Type %t246, 1 - %t248 = load ptr, ptr %a1 - %t249 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t250 = load %S.ast.Type, ptr %t249 - %t251 = call i1 @finch.gen.owning(ptr %t248, %S.ast.Type %t250) - %t252 = insertvalue %S.gen.Val %t247, i1 %t251, 2 - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a163) - call void @finch_str_drop(ptr %a159) - call void @finch.drop.S_gen_Val(ptr %a155) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t252 -} - -define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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.3943, 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 %then6137, label %endif6139 -then6137: - %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 -endif6139: - %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.3944, 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 %then6140, label %endif6142 -then6140: - %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 -endif6142: - %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 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %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.3945, 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 %then6143, label %endif6145 -then6143: - %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.3947, 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.from6146 -logic.from6146: - br i1 %t20, label %logic.end6148, label %logic.rhs6147 -logic.rhs6147: - %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.3949, 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.rend6149 -logic.rend6149: - br label %logic.end6148 -logic.end6148: - %t28 = phi i1 [ true, %logic.from6146 ], [ %t27, %logic.rend6149 ] - br i1 %t28, label %then6150, label %endif6152 -then6150: - 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.3950, i64 3339) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - store i64 0, ptr %a39 - br label %each.cond6153 -each.cond6153: - %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.body6154, label %each.end6156 -each.body6154: - %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.from6157 -logic.from6157: - br i1 %t54, label %logic.rhs6158, label %logic.end6159 -logic.rhs6158: - %t55 = load i8, ptr %a47 - %t56 = icmp ule i8 %t55, 102 - br label %logic.rend6160 -logic.rend6160: - br label %logic.end6159 -logic.end6159: - %t57 = phi i1 [ false, %logic.from6157 ], [ %t56, %logic.rend6160 ] - br i1 %t57, label %then6161, label %endif6163 -then6161: - %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 %endif6163 -endif6163: - %t63 = load i8, ptr %a47 - %t64 = icmp uge i8 %t63, 65 - br label %logic.from6164 -logic.from6164: - br i1 %t64, label %logic.rhs6165, label %logic.end6166 -logic.rhs6165: - %t65 = load i8, ptr %a47 - %t66 = icmp ule i8 %t65, 70 - br label %logic.rend6167 -logic.rend6167: - br label %logic.end6166 -logic.end6166: - %t67 = phi i1 [ false, %logic.from6164 ], [ %t66, %logic.rend6167 ] - br i1 %t67, label %then6168, label %endif6170 -then6168: - %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 %endif6170 -endif6170: - %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.step6155 -each.step6155: - %t77 = load i64, ptr %a39 - %t78 = add i64 %t77, 1 - store i64 %t78, ptr %a39 - br label %each.cond6153 -each.end6156: - call void @finch_str_drop(ptr %a38) - %t79 = load i64, ptr %a29 - call void @finch_str_from_int(ptr %a80, i64 %t79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t81, 0 - %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3951, i64 3, i64 0 }) - %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 - %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t85 -endif6152: - %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.3952, i64 3351) - 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.3953, i64 3, i64 0 }) - %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 - %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t95 -endif6145: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3954, 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 %then6171, label %endif6173 -then6171: - %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.3955, i64 5, i64 0 }) - %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t109 -endif6173: - %t110 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3956, 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 %then6174, label %endif6176 -then6174: - %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.3957, i64 4, i64 0 }) - %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t122 -endif6176: - %t123 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3958, 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 %then6177, label %endif6179 -then6177: - %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 %range6180, label %inrange6181 -range6180: - call void @finch_panic_index(ptr @.str.3959, i64 3360, i64 0, i64 %t130) - unreachable -inrange6181: - %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.3960, i64 4, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif6179: - %t143 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.3961, 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 %then6182, label %endif6184 -then6182: - %t148 = load ptr, ptr %a1 - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t151 -endif6184: - %t152 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.3962, 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 %then6185, label %endif6187 -then6185: - %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3963, i64 4, i64 0 }, 0 - %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3964, i64 4, i64 0 }) - %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t159 -endif6187: - %t160 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3965, 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.from6188 -logic.from6188: - br i1 %t164, label %logic.end6190, label %logic.rhs6189 -logic.rhs6189: - %t165 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3966, 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.rend6191 -logic.rend6191: - br label %logic.end6190 -logic.end6190: - %t170 = phi i1 [ true, %logic.from6188 ], [ %t169, %logic.rend6191 ] - br label %logic.from6192 -logic.from6192: - br i1 %t170, label %logic.end6194, label %logic.rhs6193 -logic.rhs6193: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3967, 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.rend6195 -logic.rend6195: - br label %logic.end6194 -logic.end6194: - %t176 = phi i1 [ true, %logic.from6192 ], [ %t175, %logic.rend6195 ] - br i1 %t176, label %then6196, label %endif6198 -then6196: - %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 %then6199, label %endif6201 -then6199: - %t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2 - %t185 = load %S.gen.Val, ptr %t184 - store %S.gen.Val %t185, ptr %a186 - call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186) - %t188 = load %S.gen.Val, ptr %a187 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t188 -endif6201: - %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) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 - %t201 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.Place, ptr %t201, i32 0, i32 1 - %t203 = load %S.ast.Type, ptr %t202 - store %S.ast.Type %t203, ptr %a204 - call void @finch.copy.S_ast_Type(ptr %a205, ptr %a204) - %t206 = load %S.ast.Type, ptr %a205 - %t207 = insertvalue %S.gen.Val %t200, %S.ast.Type %t206, 1 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t207 -endif6198: - %t208 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.3968, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then6202, label %endif6204 -then6202: - %t213 = load ptr, ptr %a1 - %t214 = load %S.ast.Node, ptr %a2 - %t215 = call %S.gen.Val @finch.gen.matchGen(ptr %t213, %S.ast.Node %t214, i1 true) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t215 -endif6204: - %t216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t216, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.3969, i64 3, i64 0 }, ptr %a218 - %t219 = call i32 @finch_str_eq(ptr %a217, ptr %a218) - %t220 = icmp ne i32 %t219, 0 - br i1 %t220, label %then6205, label %endif6207 -then6205: - %t221 = load ptr, ptr %a1 - %t222 = load %S.ast.Node, ptr %a2 - %t223 = call %S.gen.Val @finch.gen.tryExpr(ptr %t221, %S.ast.Node %t222) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -endif6207: - %t224 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t224, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.3970, i64 2, i64 0 }, ptr %a226 - %t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226) - %t228 = icmp ne i32 %t227, 0 - br i1 %t228, label %then6208, label %endif6210 -then6208: - %t229 = load ptr, ptr %a1 - %t230 = load %S.ast.Node, ptr %a2 - %t231 = call %S.gen.Val @finch.gen.orElse(ptr %t229, %S.ast.Node %t230, i1 false) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t231 -endif6210: - %t232 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t232, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3971, i64 5, i64 0 }, ptr %a234 - %t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234) - %t236 = icmp ne i32 %t235, 0 - br i1 %t236, label %then6211, label %endif6213 -then6211: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.gen.Val @finch.gen.unary(ptr %t237, %S.ast.Node %t238) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t239 -endif6213: - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t240, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3972, i64 6, i64 0 }, ptr %a242 - %t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242) - %t244 = icmp ne i32 %t243, 0 - br i1 %t244, label %then6214, label %endif6216 -then6214: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = call %S.gen.Val @finch.gen.binary(ptr %t245, %S.ast.Node %t246) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t247 -endif6216: - %t248 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3973, i64 4, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br i1 %t252, label %then6217, label %endif6219 -then6217: - %t253 = load ptr, ptr %a1 - %t254 = load %S.ast.Node, ptr %a2 - %t255 = call %S.gen.Val @finch.gen.call(ptr %t253, %S.ast.Node %t254) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t255 -endif6219: - %t256 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t256, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.3974, i64 6, i64 0 }, ptr %a258 - %t259 = call i32 @finch_str_eq(ptr %a257, ptr %a258) - %t260 = icmp ne i32 %t259, 0 - br i1 %t260, label %then6220, label %endif6222 -then6220: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a2 - %t263 = call %S.gen.Val @finch.gen.method(ptr %t261, %S.ast.Node %t262) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t263 -endif6222: - %t264 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t264, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.3975, i64 5, i64 0 }, ptr %a266 - %t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266) - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %then6223, label %endif6225 -then6223: - %t269 = load ptr, ptr %a1 - %t270 = load %S.ast.Node, ptr %a2 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3976, i64 4, i64 0 }) - %t272 = call %S.gen.Val @finch.gen.arrayLit(ptr %t269, %S.ast.Node %t270, %S.ast.Type %t271) - store %S.ast.Type %t271, ptr %a273 - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t272 -endif6225: - %t274 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t274, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.3977, i64 3, i64 0 }, ptr %a276 - %t277 = call i32 @finch_str_eq(ptr %a275, ptr %a276) - %t278 = icmp ne i32 %t277, 0 - br i1 %t278, label %then6226, label %endif6228 -then6226: - %t279 = load ptr, ptr %a1 - %t280 = load %S.ast.Node, ptr %a2 - %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3978, i64 4, i64 0 }) - %t282 = call %S.gen.Val @finch.gen.mapLit(ptr %t279, %S.ast.Node %t280, %S.ast.Type %t281) - store %S.ast.Type %t281, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t282 -endif6228: - %t284 = load ptr, ptr %a1 - %t285 = load %S.ast.Node, ptr %a2 - %t286 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.3979, i64 19, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - call void @finch.gen.fail(ptr %t284, %S.ast.Node %t285, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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.ast.Type, align 16 - %a31 = alloca %S.gen.Val, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a144 = alloca %S.ast.Type, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a158 = alloca %S.ast.Type, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca %S.ast.Type, align 16 - %a190 = alloca %S.ast.Type, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range6229, label %inrange6230 -range6229: - call void @finch_panic_index(ptr @.str.3980, i64 3408, i64 0, i64 %t6) - unreachable -inrange6230: - %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.3981, 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 %then6231, label %endif6233 -then6231: - %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.3982, 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 %range6234, label %inrange6235 -range6234: - call void @finch_panic_index(ptr @.str.3983, i64 3410, i64 0, i64 %t24) - unreachable -inrange6235: - %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.3984, i64 19, i64 0 }) - store %S.ast.Type %t21, ptr %a30 - call void @finch.drop.S_ast_Type(ptr %a30) - store %S.gen.Val %t29, ptr %a31 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } { ptr @.str.3985, 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.3986, i64 6, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = call { ptr, i64, i64 } @finch.gen.op(ptr %t32, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t44, 0 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3987, i64 4, i64 0 }) - %t48 = insertvalue %S.gen.Val %t46, %S.ast.Type %t47, 1 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t48 -endif6233: - %t49 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3988, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then6236, label %endif6238 -then6236: - %t55 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t56 = load %S.ast.Type, ptr %t55 - %t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56) - %t58 = xor i1 %t57, true - br i1 %t58, label %then6239, label %endif6241 -then6239: - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t62) - store { ptr, i64, i64 } { ptr @.str.3989, i64 45, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.gen.fail(ptr %t59, %S.ast.Node %t60, { ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_drop(ptr %a69) - br label %endif6241 -endif6241: - %t70 = load ptr, ptr %a1 - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t73 = load %S.ast.Type, ptr %t72 - %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t71, %S.ast.Type %t73) - store { ptr, i64, i64 } { ptr @.str.3990, i64 4, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3991, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t84, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t84, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3992, i64 4, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0 - %t100 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t101 = load %S.ast.Type, ptr %t100 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t99, %S.ast.Type %t104, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t105 -endif6238: - %t106 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t107 = load %S.ast.Type, ptr %t106 - %t108 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t107) - br i1 %t108, label %then6242, label %endif6244 -then6242: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a2 - %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t112 = load %S.ast.Type, ptr %t111 - %t113 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t112) - store { ptr, i64, i64 } %t113, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.3993, i64 34, i64 0 }, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t113, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t110, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif6244 -endif6244: - %t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.isSigned(%S.ast.Type %t121) - br i1 %t122, label %then6245, label %endif6247 -then6245: - %t123 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 - %t124 = load i1, ptr %t123 - br i1 %t124, label %then6248, label %endif6250 -then6248: - %t125 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3995, i64 1, i64 0 }, ptr %a129 - %t130 = call i32 @finch_str_starts(ptr %a127, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - br i1 %t131, label %then6251, label %endif6253 -then6251: - %t132 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - %t136 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a135, ptr %a134, i64 1, i64 %t138, ptr @.str.3996, i64 3425) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - store %S.ast.Type %t142, ptr %a143 - call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143) - %t145 = load %S.ast.Type, ptr %a144 - %t146 = insertvalue %S.gen.Val %t140, %S.ast.Type %t145, 1 - %t147 = insertvalue %S.gen.Val %t146, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t147 -endif6253: - %t148 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t149 = load { ptr, i64, i64 }, ptr %t148 - store { ptr, i64, i64 } { ptr @.str.3997, i64 1, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t153, 0 - %t155 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t156 = load %S.ast.Type, ptr %t155 - store %S.ast.Type %t156, ptr %a157 - call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) - %t159 = load %S.ast.Type, ptr %a158 - %t160 = insertvalue %S.gen.Val %t154, %S.ast.Type %t159, 1 - %t161 = insertvalue %S.gen.Val %t160, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t161 -endif6250: - %t162 = load ptr, ptr %a1 - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t165 = load %S.ast.Type, ptr %t164 - %t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t165) - store { ptr, i64, i64 } { ptr @.str.3998, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t166, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.3999, i64 4, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - %t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t176, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t176, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t184, 0 - %t187 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t188 = load %S.ast.Type, ptr %t187 - store %S.ast.Type %t188, ptr %a189 - call void @finch.copy.S_ast_Type(ptr %a190, ptr %a189) - %t191 = load %S.ast.Type, ptr %a190 - %t192 = insertvalue %S.gen.Val %t186, %S.ast.Type %t191, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t192 -endif6247: - %t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br i1 %t195, label %then6254, label %endif6256 -then6254: - %t196 = load ptr, ptr %a1 - %t197 = load ptr, ptr %a1 - %t198 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t197, %S.ast.Type %t199) - store { ptr, i64, i64 } { ptr @.str.4000, i64 5, i64 0 }, ptr %a202 - store { ptr, i64, i64 } %t200, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4001, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - %t211 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t212 = load { ptr, i64, i64 }, ptr %t211 - store { ptr, i64, i64 } %t210, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t210, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t196, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t218, 0 - %t221 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t222 = load %S.ast.Type, ptr %t221 - store %S.ast.Type %t222, ptr %a223 - call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223) - %t225 = load %S.ast.Type, ptr %a224 - %t226 = insertvalue %S.gen.Val %t220, %S.ast.Type %t225, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t226 -endif6256: - %t227 = load ptr, ptr %a1 - %t228 = load %S.ast.Node, ptr %a2 - %t229 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t230) - store { ptr, i64, i64 } { ptr @.str.4002, i64 26, i64 0 }, ptr %a233 - store { ptr, i64, i64 } %t231, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t236) - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load %S.gen.Val, ptr %a12 - ret %S.gen.Val %t238 -} - -define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - store %S.gen.Val %p3, ptr %a4 - store %S.ast.Node %p4, ptr %a5 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.4003, 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.4004, i64 5, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a25 - %t26 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t27 = load %S.ast.Type, ptr %t26 - %t28 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call i1 @finch.ast.same(%S.ast.Type %t27, %S.ast.Type %t29) - %t31 = xor i1 %t30, true - br i1 %t31, label %then6257, label %endif6259 -then6257: - %t32 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.4005, i64 5, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - %t37 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t38 = load %S.ast.Type, ptr %t37 - %t39 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t38) - store { ptr, i64, i64 } %t36, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t36, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a40 - %t46 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t45, ptr %a25 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif6259 -endif6259: - %t48 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4006, i64 1, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from6260 -logic.from6260: - br i1 %t52, label %logic.rhs6261, label %logic.end6262 -logic.rhs6261: - %t53 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t54 = getelementptr inbounds %S.ast.Type, ptr %t53, i32 0, i32 0 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4007, 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.from6263 -logic.from6263: - br i1 %t59, label %logic.end6265, label %logic.rhs6264 -logic.rhs6264: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4008, i64 3, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br label %logic.rend6266 -logic.rend6266: - br label %logic.end6265 -logic.end6265: - %t67 = phi i1 [ true, %logic.from6263 ], [ %t66, %logic.rend6266 ] - br label %logic.rend6267 -logic.rend6267: - br label %logic.end6262 -logic.end6262: - %t68 = phi i1 [ false, %logic.from6260 ], [ %t67, %logic.rend6267 ] - br i1 %t68, label %then6268, label %endif6270 -then6268: - %t69 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4009, i64 48, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t73, ptr %a25 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - br label %endif6270 -endif6270: - %t76 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.4010, i64 1, i64 0 }, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br label %logic.from6271 -logic.from6271: - br i1 %t80, label %logic.end6273, label %logic.rhs6272 -logic.rhs6272: - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4011, 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.rend6274 -logic.rend6274: - br label %logic.end6273 -logic.end6273: - %t86 = phi i1 [ true, %logic.from6271 ], [ %t85, %logic.rend6274 ] - br label %logic.from6275 -logic.from6275: - br i1 %t86, label %logic.rhs6276, label %logic.end6277 -logic.rhs6276: - %t87 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4012, i64 4, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp ne i32 %t92, 0 - br label %logic.rend6278 -logic.rend6278: - br label %logic.end6277 -logic.end6277: - %t94 = phi i1 [ false, %logic.from6275 ], [ %t93, %logic.rend6278 ] - br i1 %t94, label %then6279, label %else6280 -then6279: - %t95 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4013, i64 1, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then6282, label %else6283 -then6282: - %t100 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4014, i64 26, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a101 - %t105 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t104, ptr %a25 - store { ptr, i64, i64 } %t105, ptr %a106 - call void @finch_str_drop(ptr %a106) - br label %endif6284 -else6283: - %t107 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.4015, i64 26, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - %t112 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t111, ptr %a25 - store { ptr, i64, i64 } %t112, ptr %a113 - call void @finch_str_drop(ptr %a113) - br label %endif6284 -endif6284: - br label %endif6281 -else6280: - %t114 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.4016, i64 1, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from6285 -logic.from6285: - br i1 %t118, label %logic.end6287, label %logic.rhs6286 -logic.rhs6286: - %t119 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4017, i64 1, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend6288 -logic.rend6288: - br label %logic.end6287 -logic.end6287: - %t124 = phi i1 [ true, %logic.from6285 ], [ %t123, %logic.rend6288 ] - br label %logic.from6289 -logic.from6289: - br i1 %t124, label %logic.end6291, label %logic.rhs6290 -logic.rhs6290: - %t125 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.4018, i64 1, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br label %logic.rend6292 -logic.rend6292: - br label %logic.end6291 -logic.end6291: - %t130 = phi i1 [ true, %logic.from6289 ], [ %t129, %logic.rend6292 ] - br label %logic.from6293 -logic.from6293: - br i1 %t130, label %logic.end6295, label %logic.rhs6294 -logic.rhs6294: - %t131 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4019, i64 2, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6296 -logic.rend6296: - br label %logic.end6295 -logic.end6295: - %t136 = phi i1 [ true, %logic.from6293 ], [ %t135, %logic.rend6296 ] - br label %logic.from6297 -logic.from6297: - br i1 %t136, label %logic.end6299, label %logic.rhs6298 -logic.rhs6298: - %t137 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.4020, i64 2, i64 0 }, ptr %a139 - %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) - %t141 = icmp ne i32 %t140, 0 - br label %logic.rend6300 -logic.rend6300: - br label %logic.end6299 -logic.end6299: - %t142 = phi i1 [ true, %logic.from6297 ], [ %t141, %logic.rend6300 ] - br i1 %t142, label %then6301, label %endif6303 -then6301: - %t143 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.4021, i64 43, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t147, ptr %a25 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - br label %endif6303 -endif6303: - br label %endif6281 -endif6281: - %t150 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t151 = getelementptr inbounds %S.ast.Type, ptr %t150, i32 0, i32 0 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.4022, i64 6, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from6304 -logic.from6304: - br i1 %t156, label %logic.end6306, label %logic.rhs6305 -logic.rhs6305: - %t157 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t158 = getelementptr inbounds %S.ast.Type, ptr %t157, i32 0, i32 0 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.4023, 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.rend6307 -logic.rend6307: - br label %logic.end6306 -logic.end6306: - %t164 = phi i1 [ true, %logic.from6304 ], [ %t163, %logic.rend6307 ] - br label %logic.from6308 -logic.from6308: - br i1 %t164, label %logic.rhs6309, label %logic.end6310 -logic.rhs6309: - %t165 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4024, i64 2, i64 0 }, ptr %a167 - %t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167) - %t169 = icmp ne i32 %t168, 0 - br label %logic.from6311 -logic.from6311: - br i1 %t169, label %logic.end6313, label %logic.rhs6312 -logic.rhs6312: - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4025, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br label %logic.rend6314 -logic.rend6314: - br label %logic.end6313 -logic.end6313: - %t175 = phi i1 [ true, %logic.from6311 ], [ %t174, %logic.rend6314 ] - br label %logic.rend6315 -logic.rend6315: - br label %logic.end6310 -logic.end6310: - %t176 = phi i1 [ false, %logic.from6308 ], [ %t175, %logic.rend6315 ] - br i1 %t176, label %then6316, label %endif6318 -then6316: - %t177 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t177, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.4026, i64 31, i64 0 }, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - %t182 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t181, ptr %a25 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - br label %endif6318 -endif6318: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a5 - %t186 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186) - call void @finch_str_drop(ptr %a25) - ret void -} - -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 - %a68 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Type, align 16 - %a113 = alloca %S.gen.Val, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a149 = alloca %S.gen.Val, align 16 - %a178 = alloca %S.ast.Type, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.gen.Val, align 16 - %a207 = alloca %S.ast.Node, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a233 = alloca %S.ast.Node, align 16 - %a237 = alloca %S.gen.Val, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca %S.ast.Type, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a304 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - store ptr %p2, ptr %a3 - %t4 = load ptr, ptr %a2 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6319, label %ok6320 -panic6319: - call void @finch_panic(ptr @.str.4027, i64 3462, ptr @.str.4028) - unreachable -ok6320: - %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 %panic6321, label %ok6322 -panic6321: - call void @finch_panic(ptr @.str.4029, i64 3462, ptr @.str.4030) - unreachable -ok6322: - %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 %then6323, label %endif6325 -then6323: - ret i1 true -endif6325: - %t13 = load ptr, ptr %a2 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic6326, label %ok6327 -panic6326: - call void @finch_panic(ptr @.str.4031, i64 3465, ptr @.str.4032) - unreachable -ok6327: - %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.from6328 -logic.from6328: - br i1 %t17, label %logic.rhs6329, label %logic.end6330 -logic.rhs6329: - %t18 = load ptr, ptr %a3 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6331, label %ok6332 -panic6331: - call void @finch_panic(ptr @.str.4033, i64 3465, ptr @.str.4034) - unreachable -ok6332: - %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.rend6333 -logic.rend6333: - br label %logic.end6330 -logic.end6330: - %t23 = phi i1 [ false, %logic.from6328 ], [ %t22, %logic.rend6333 ] - br i1 %t23, label %then6334, label %endif6336 -then6334: - %t24 = load ptr, ptr %a2 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic6337, label %ok6338 -panic6337: - call void @finch_panic(ptr @.str.4035, i64 3468, ptr @.str.4036) - unreachable -ok6338: - %t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3 - %t27 = load i1, ptr %t26 - br label %logic.from6339 -logic.from6339: - br i1 %t27, label %logic.rhs6340, label %logic.end6341 -logic.rhs6340: - %t28 = load ptr, ptr %a3 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic6342, label %ok6343 -panic6342: - call void @finch_panic(ptr @.str.4037, i64 3468, ptr @.str.4038) - unreachable -ok6343: - %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.rend6344 -logic.rend6344: - br label %logic.end6341 -logic.end6341: - %t33 = phi i1 [ false, %logic.from6339 ], [ %t32, %logic.rend6344 ] - br label %logic.from6345 -logic.from6345: - br i1 %t33, label %logic.rhs6346, label %logic.end6347 -logic.rhs6346: - %t34 = load ptr, ptr %a2 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic6348, label %ok6349 -panic6348: - call void @finch_panic(ptr @.str.4039, i64 3468, ptr @.str.4040) - unreachable -ok6349: - %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 %panic6350, label %ok6351 -panic6350: - call void @finch_panic(ptr @.str.4041, i64 3468, ptr @.str.4042) - unreachable -ok6351: - %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 %panic6352, label %ok6353 -panic6352: - call void @finch_panic(ptr @.str.4043, i64 3468, ptr @.str.4044) - unreachable -ok6353: - %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.rend6354 -logic.rend6354: - br label %logic.end6347 -logic.end6347: - %t47 = phi i1 [ false, %logic.from6345 ], [ %t46, %logic.rend6354 ] - br i1 %t47, label %then6355, label %endif6357 -then6355: - %t48 = load ptr, ptr %a2 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic6358, label %ok6359 -panic6358: - call void @finch_panic(ptr @.str.4045, i64 3469, ptr @.str.4046) - unreachable -ok6359: - %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 %panic6360, label %ok6361 -panic6360: - call void @finch_panic(ptr @.str.4047, i64 3469, ptr @.str.4048) - unreachable -ok6361: - %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 %panic6362, label %ok6363 -panic6362: - call void @finch_panic(ptr @.str.4049, i64 3469, ptr @.str.4050) - unreachable -ok6363: - %t67 = load %S.gen.Val, ptr %t65 - store %S.gen.Val %t64, ptr %t65 - store %S.gen.Val %t67, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - ret i1 true -endif6357: - %t69 = load ptr, ptr %a3 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic6364, label %ok6365 -panic6364: - call void @finch_panic(ptr @.str.4051, i64 3472, ptr @.str.4052) - unreachable -ok6365: - %t71 = getelementptr inbounds %S.gen.Val, ptr %t69, i32 0, i32 3 - %t72 = load i1, ptr %t71 - br label %logic.from6366 -logic.from6366: - br i1 %t72, label %logic.rhs6367, label %logic.end6368 -logic.rhs6367: - %t73 = load ptr, ptr %a2 - %t74 = icmp eq ptr %t73, null - br i1 %t74, label %panic6369, label %ok6370 -panic6369: - call void @finch_panic(ptr @.str.4053, i64 3472, ptr @.str.4054) - unreachable -ok6370: - %t75 = getelementptr inbounds %S.gen.Val, ptr %t73, i32 0, i32 3 - %t76 = load i1, ptr %t75 - %t77 = xor i1 %t76, true - br label %logic.rend6371 -logic.rend6371: - br label %logic.end6368 -logic.end6368: - %t78 = phi i1 [ false, %logic.from6366 ], [ %t77, %logic.rend6371 ] - br label %logic.from6372 -logic.from6372: - br i1 %t78, label %logic.rhs6373, label %logic.end6374 -logic.rhs6373: - %t79 = load ptr, ptr %a3 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic6375, label %ok6376 -panic6375: - call void @finch_panic(ptr @.str.4055, i64 3472, ptr @.str.4056) - unreachable -ok6376: - %t81 = getelementptr inbounds %S.gen.Val, ptr %t79, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = load ptr, ptr %a3 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic6377, label %ok6378 -panic6377: - call void @finch_panic(ptr @.str.4057, i64 3472, ptr @.str.4058) - unreachable -ok6378: - %t85 = getelementptr inbounds %S.gen.Val, ptr %t83, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - %t87 = load ptr, ptr %a2 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic6379, label %ok6380 -panic6379: - call void @finch_panic(ptr @.str.4059, i64 3472, ptr @.str.4060) - unreachable -ok6380: - %t89 = getelementptr inbounds %S.gen.Val, ptr %t87, i32 0, i32 1 - %t90 = load %S.ast.Type, ptr %t89 - %t91 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t82, %S.ast.Type %t86, %S.ast.Type %t90) - br label %logic.rend6381 -logic.rend6381: - br label %logic.end6374 -logic.end6374: - %t92 = phi i1 [ false, %logic.from6372 ], [ %t91, %logic.rend6381 ] - br i1 %t92, label %then6382, label %endif6384 -then6382: - %t93 = load ptr, ptr %a3 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic6385, label %ok6386 -panic6385: - call void @finch_panic(ptr @.str.4061, i64 3473, ptr @.str.4062) - unreachable -ok6386: - %t95 = getelementptr inbounds %S.gen.Val, ptr %t93, i32 0, i32 0 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load ptr, ptr %a2 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic6387, label %ok6388 -panic6387: - call void @finch_panic(ptr @.str.4063, i64 3473, ptr @.str.4064) - unreachable -ok6388: - %t103 = getelementptr inbounds %S.gen.Val, ptr %t101, i32 0, i32 1 - %t104 = load %S.ast.Type, ptr %t103 - store %S.ast.Type %t104, ptr %a105 - call void @finch.copy.S_ast_Type(ptr %a106, ptr %a105) - %t107 = load %S.ast.Type, ptr %a106 - %t108 = insertvalue %S.gen.Val %t100, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - %t110 = load ptr, ptr %a3 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic6389, label %ok6390 -panic6389: - call void @finch_panic(ptr @.str.4065, i64 3473, ptr @.str.4066) - unreachable -ok6390: - %t112 = load %S.gen.Val, ptr %t110 - store %S.gen.Val %t109, ptr %t110 - store %S.gen.Val %t112, ptr %a113 - call void @finch.drop.S_gen_Val(ptr %a113) - ret i1 true -endif6384: - %t114 = load ptr, ptr %a2 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic6391, label %ok6392 -panic6391: - call void @finch_panic(ptr @.str.4067, i64 3476, ptr @.str.4068) - unreachable -ok6392: - %t116 = getelementptr inbounds %S.gen.Val, ptr %t114, i32 0, i32 1 - %t117 = load %S.ast.Type, ptr %t116 - %t118 = load ptr, ptr %a3 - %t119 = icmp eq ptr %t118, null - br i1 %t119, label %panic6393, label %ok6394 -panic6393: - call void @finch_panic(ptr @.str.4069, i64 3476, ptr @.str.4070) - unreachable -ok6394: - %t120 = getelementptr inbounds %S.gen.Val, ptr %t118, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.widens(%S.ast.Type %t117, %S.ast.Type %t121) - br i1 %t122, label %then6395, label %endif6397 -then6395: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a2 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic6398, label %ok6399 -panic6398: - call void @finch_panic(ptr @.str.4071, i64 3477, ptr @.str.4072) - unreachable -ok6399: - %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 0 - %t127 = load { ptr, i64, i64 }, ptr %t126 - %t128 = load ptr, ptr %a2 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic6400, label %ok6401 -panic6400: - call void @finch_panic(ptr @.str.4073, i64 3477, ptr @.str.4074) - unreachable -ok6401: - %t130 = getelementptr inbounds %S.gen.Val, ptr %t128, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = load ptr, ptr %a3 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic6402, label %ok6403 -panic6402: - call void @finch_panic(ptr @.str.4075, i64 3477, ptr @.str.4076) - unreachable -ok6403: - %t134 = getelementptr inbounds %S.gen.Val, ptr %t132, i32 0, i32 1 - %t135 = load %S.ast.Type, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t127, %S.ast.Type %t131, %S.ast.Type %t135) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t136, 0 - %t138 = load ptr, ptr %a3 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic6404, label %ok6405 -panic6404: - call void @finch_panic(ptr @.str.4077, i64 3477, ptr @.str.4078) - unreachable -ok6405: - %t140 = getelementptr inbounds %S.gen.Val, ptr %t138, i32 0, i32 1 - %t141 = load %S.ast.Type, ptr %t140 - store %S.ast.Type %t141, ptr %a142 - call void @finch.copy.S_ast_Type(ptr %a143, ptr %a142) - %t144 = load %S.ast.Type, ptr %a143 - %t145 = insertvalue %S.gen.Val %t137, %S.ast.Type %t144, 1 - %t146 = load ptr, ptr %a2 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6406, label %ok6407 -panic6406: - call void @finch_panic(ptr @.str.4079, i64 3477, ptr @.str.4080) - unreachable -ok6407: - %t148 = load %S.gen.Val, ptr %t146 - store %S.gen.Val %t145, ptr %t146 - store %S.gen.Val %t148, ptr %a149 - call void @finch.drop.S_gen_Val(ptr %a149) - ret i1 true -endif6397: - %t150 = load ptr, ptr %a3 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic6408, label %ok6409 -panic6408: - call void @finch_panic(ptr @.str.4081, i64 3480, ptr @.str.4082) - unreachable -ok6409: - %t152 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 1 - %t153 = load %S.ast.Type, ptr %t152 - %t154 = load ptr, ptr %a2 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic6410, label %ok6411 -panic6410: - call void @finch_panic(ptr @.str.4083, i64 3480, ptr @.str.4084) - unreachable -ok6411: - %t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 1 - %t157 = load %S.ast.Type, ptr %t156 - %t158 = call i1 @finch.gen.widens(%S.ast.Type %t153, %S.ast.Type %t157) - br i1 %t158, label %then6412, label %endif6414 -then6412: - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a3 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic6415, label %ok6416 -panic6415: - call void @finch_panic(ptr @.str.4085, i64 3481, ptr @.str.4086) - unreachable -ok6416: - %t162 = getelementptr inbounds %S.gen.Val, ptr %t160, i32 0, i32 0 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = load ptr, ptr %a3 - %t165 = icmp eq ptr %t164, null - br i1 %t165, label %panic6417, label %ok6418 -panic6417: - call void @finch_panic(ptr @.str.4087, i64 3481, ptr @.str.4088) - unreachable -ok6418: - %t166 = getelementptr inbounds %S.gen.Val, ptr %t164, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load ptr, ptr %a2 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic6419, label %ok6420 -panic6419: - call void @finch_panic(ptr @.str.4089, i64 3481, ptr @.str.4090) - unreachable -ok6420: - %t170 = getelementptr inbounds %S.gen.Val, ptr %t168, i32 0, i32 1 - %t171 = load %S.ast.Type, ptr %t170 - %t172 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t159, { ptr, i64, i64 } %t163, %S.ast.Type %t167, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load ptr, ptr %a2 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic6421, label %ok6422 -panic6421: - call void @finch_panic(ptr @.str.4091, i64 3481, ptr @.str.4092) - unreachable -ok6422: - %t176 = getelementptr inbounds %S.gen.Val, ptr %t174, i32 0, i32 1 - %t177 = load %S.ast.Type, ptr %t176 - store %S.ast.Type %t177, ptr %a178 - call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) - %t180 = load %S.ast.Type, ptr %a179 - %t181 = insertvalue %S.gen.Val %t173, %S.ast.Type %t180, 1 - %t182 = load ptr, ptr %a3 - %t183 = icmp eq ptr %t182, null - br i1 %t183, label %panic6423, label %ok6424 -panic6423: - call void @finch_panic(ptr @.str.4093, i64 3481, ptr @.str.4094) - unreachable -ok6424: - %t184 = load %S.gen.Val, ptr %t182 - store %S.gen.Val %t181, ptr %t182 - store %S.gen.Val %t184, ptr %a185 - call void @finch.drop.S_gen_Val(ptr %a185) - ret i1 true -endif6414: - ret i1 false -endif6336: - %t186 = load ptr, ptr %a2 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic6425, label %ok6426 -panic6425: - call void @finch_panic(ptr @.str.4095, i64 3486, ptr @.str.4096) - unreachable -ok6426: - %t188 = getelementptr inbounds %S.gen.Val, ptr %t186, i32 0, i32 1 - %t189 = load %S.ast.Type, ptr %t188 - %t190 = call i1 @finch.gen.isInt(%S.ast.Type %t189) - br label %logic.from6427 -logic.from6427: - br i1 %t190, label %logic.rhs6428, label %logic.end6429 -logic.rhs6428: - %t191 = load ptr, ptr %a3 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic6430, label %ok6431 -panic6430: - call void @finch_panic(ptr @.str.4097, i64 3486, ptr @.str.4098) - unreachable -ok6431: - %t193 = getelementptr inbounds %S.gen.Val, ptr %t191, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br label %logic.rend6432 -logic.rend6432: - br label %logic.end6429 -logic.end6429: - %t196 = phi i1 [ false, %logic.from6427 ], [ %t195, %logic.rend6432 ] - br i1 %t196, label %then6433, label %endif6435 -then6433: - %t197 = load ptr, ptr %a1 - %t198 = load ptr, ptr %a2 - %t199 = icmp eq ptr %t198, null - br i1 %t199, label %panic6436, label %ok6437 -panic6436: - call void @finch_panic(ptr @.str.4099, i64 3487, ptr @.str.4100) - unreachable -ok6437: - %t200 = load %S.gen.Val, ptr %t198 - %t201 = load ptr, ptr %a3 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic6438, label %ok6439 -panic6438: - call void @finch_panic(ptr @.str.4101, i64 3487, ptr @.str.4102) - unreachable -ok6439: - %t203 = getelementptr inbounds %S.gen.Val, ptr %t201, i32 0, i32 1 - %t204 = load %S.ast.Type, ptr %t203 - %t205 = call %S.ast.Node @finch.gen.Node0() - %t206 = call %S.gen.Val @finch.gen.coerce(ptr %t197, %S.gen.Val %t200, %S.ast.Type %t204, %S.ast.Node %t205, { ptr, i64, i64 } { ptr @.str.4103, i64 0, i64 0 }) - store %S.ast.Node %t205, ptr %a207 - call void @finch.drop.S_ast_Node(ptr %a207) - %t208 = load ptr, ptr %a2 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic6440, label %ok6441 -panic6440: - call void @finch_panic(ptr @.str.4104, i64 3487, ptr @.str.4105) - unreachable -ok6441: - %t210 = load %S.gen.Val, ptr %t208 - store %S.gen.Val %t206, ptr %t208 - store %S.gen.Val %t210, ptr %a211 - call void @finch.drop.S_gen_Val(ptr %a211) - ret i1 true -endif6435: - %t212 = load ptr, ptr %a2 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic6442, label %ok6443 -panic6442: - call void @finch_panic(ptr @.str.4106, i64 3490, ptr @.str.4107) - unreachable -ok6443: - %t214 = getelementptr inbounds %S.gen.Val, ptr %t212, i32 0, i32 1 - %t215 = load %S.ast.Type, ptr %t214 - %t216 = call i1 @finch.gen.isFloat(%S.ast.Type %t215) - br label %logic.from6444 -logic.from6444: - br i1 %t216, label %logic.rhs6445, label %logic.end6446 -logic.rhs6445: - %t217 = load ptr, ptr %a3 - %t218 = icmp eq ptr %t217, null - br i1 %t218, label %panic6447, label %ok6448 -panic6447: - call void @finch_panic(ptr @.str.4108, i64 3490, ptr @.str.4109) - unreachable -ok6448: - %t219 = getelementptr inbounds %S.gen.Val, ptr %t217, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %t219 - %t221 = call i1 @finch.gen.isInt(%S.ast.Type %t220) - br label %logic.rend6449 -logic.rend6449: - br label %logic.end6446 -logic.end6446: - %t222 = phi i1 [ false, %logic.from6444 ], [ %t221, %logic.rend6449 ] - br i1 %t222, label %then6450, label %endif6452 -then6450: - %t223 = load ptr, ptr %a1 - %t224 = load ptr, ptr %a3 - %t225 = icmp eq ptr %t224, null - br i1 %t225, label %panic6453, label %ok6454 -panic6453: - call void @finch_panic(ptr @.str.4110, i64 3491, ptr @.str.4111) - unreachable -ok6454: - %t226 = load %S.gen.Val, ptr %t224 - %t227 = load ptr, ptr %a2 - %t228 = icmp eq ptr %t227, null - br i1 %t228, label %panic6455, label %ok6456 -panic6455: - call void @finch_panic(ptr @.str.4112, i64 3491, ptr @.str.4113) - unreachable -ok6456: - %t229 = getelementptr inbounds %S.gen.Val, ptr %t227, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call %S.ast.Node @finch.gen.Node0() - %t232 = call %S.gen.Val @finch.gen.coerce(ptr %t223, %S.gen.Val %t226, %S.ast.Type %t230, %S.ast.Node %t231, { ptr, i64, i64 } { ptr @.str.4114, i64 0, i64 0 }) - store %S.ast.Node %t231, ptr %a233 - call void @finch.drop.S_ast_Node(ptr %a233) - %t234 = load ptr, ptr %a3 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic6457, label %ok6458 -panic6457: - call void @finch_panic(ptr @.str.4115, i64 3491, ptr @.str.4116) - unreachable -ok6458: - %t236 = load %S.gen.Val, ptr %t234 - store %S.gen.Val %t232, ptr %t234 - store %S.gen.Val %t236, ptr %a237 - call void @finch.drop.S_gen_Val(ptr %a237) - ret i1 true -endif6452: - %t238 = load ptr, ptr %a2 - %t239 = icmp eq ptr %t238, null - br i1 %t239, label %panic6459, label %ok6460 -panic6459: - call void @finch_panic(ptr @.str.4117, i64 3494, ptr @.str.4118) - unreachable -ok6460: - %t240 = getelementptr inbounds %S.gen.Val, ptr %t238, i32 0, i32 1 - %t241 = load %S.ast.Type, ptr %t240 - %t242 = call i1 @finch.gen.isFloat(%S.ast.Type %t241) - br label %logic.from6461 -logic.from6461: - br i1 %t242, label %logic.rhs6462, label %logic.end6463 -logic.rhs6462: - %t243 = load ptr, ptr %a3 - %t244 = icmp eq ptr %t243, null - br i1 %t244, label %panic6464, label %ok6465 -panic6464: - call void @finch_panic(ptr @.str.4119, i64 3494, ptr @.str.4120) - unreachable -ok6465: - %t245 = getelementptr inbounds %S.gen.Val, ptr %t243, i32 0, i32 1 - %t246 = load %S.ast.Type, ptr %t245 - %t247 = call i1 @finch.gen.isFloat(%S.ast.Type %t246) - br label %logic.rend6466 -logic.rend6466: - br label %logic.end6463 -logic.end6463: - %t248 = phi i1 [ false, %logic.from6461 ], [ %t247, %logic.rend6466 ] - br i1 %t248, label %then6467, label %endif6469 -then6467: - %t249 = load ptr, ptr %a2 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic6470, label %ok6471 -panic6470: - call void @finch_panic(ptr @.str.4121, i64 3495, ptr @.str.4122) - unreachable -ok6471: - %t251 = getelementptr inbounds %S.gen.Val, ptr %t249, i32 0, i32 1 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4123, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br i1 %t257, label %then6472, label %endif6474 -then6472: - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a2 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic6475, label %ok6476 -panic6475: - call void @finch_panic(ptr @.str.4124, i64 3496, ptr @.str.4125) - unreachable -ok6476: - %t261 = getelementptr inbounds %S.gen.Val, ptr %t259, i32 0, i32 0 - %t262 = load { ptr, i64, i64 }, ptr %t261 - %t263 = load ptr, ptr %a2 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic6477, label %ok6478 -panic6477: - call void @finch_panic(ptr @.str.4126, i64 3496, ptr @.str.4127) - unreachable -ok6478: - %t265 = getelementptr inbounds %S.gen.Val, ptr %t263, i32 0, i32 1 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4128, i64 5, i64 0 }) - %t268 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t258, { ptr, i64, i64 } %t262, %S.ast.Type %t266, %S.ast.Type %t267) - store %S.ast.Type %t267, ptr %a269 - call void @finch.drop.S_ast_Type(ptr %a269) - %t270 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4129, i64 5, i64 0 }) - %t272 = insertvalue %S.gen.Val %t270, %S.ast.Type %t271, 1 - %t273 = load ptr, ptr %a2 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic6479, label %ok6480 -panic6479: - call void @finch_panic(ptr @.str.4130, i64 3496, ptr @.str.4131) - unreachable -ok6480: - %t275 = load %S.gen.Val, ptr %t273 - store %S.gen.Val %t272, ptr %t273 - store %S.gen.Val %t275, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - br label %endif6474 -endif6474: - %t277 = load ptr, ptr %a3 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic6481, label %ok6482 -panic6481: - call void @finch_panic(ptr @.str.4132, i64 3498, ptr @.str.4133) - unreachable -ok6482: - %t279 = getelementptr inbounds %S.gen.Val, ptr %t277, i32 0, i32 1 - %t280 = getelementptr inbounds %S.ast.Type, ptr %t279, i32 0, i32 0 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4134, i64 3, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br i1 %t285, label %then6483, label %endif6485 -then6483: - %t286 = load ptr, ptr %a1 - %t287 = load ptr, ptr %a3 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic6486, label %ok6487 -panic6486: - call void @finch_panic(ptr @.str.4135, i64 3499, ptr @.str.4136) - unreachable -ok6487: - %t289 = getelementptr inbounds %S.gen.Val, ptr %t287, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - %t291 = load ptr, ptr %a3 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic6488, label %ok6489 -panic6488: - call void @finch_panic(ptr @.str.4137, i64 3499, ptr @.str.4138) - unreachable -ok6489: - %t293 = getelementptr inbounds %S.gen.Val, ptr %t291, i32 0, i32 1 - %t294 = load %S.ast.Type, ptr %t293 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4139, i64 5, i64 0 }) - %t296 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t286, { ptr, i64, i64 } %t290, %S.ast.Type %t294, %S.ast.Type %t295) - store %S.ast.Type %t295, ptr %a297 - call void @finch.drop.S_ast_Type(ptr %a297) - %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t296, 0 - %t299 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4140, i64 5, i64 0 }) - %t300 = insertvalue %S.gen.Val %t298, %S.ast.Type %t299, 1 - %t301 = load ptr, ptr %a3 - %t302 = icmp eq ptr %t301, null - br i1 %t302, label %panic6490, label %ok6491 -panic6490: - call void @finch_panic(ptr @.str.4141, i64 3499, ptr @.str.4142) - unreachable -ok6491: - %t303 = load %S.gen.Val, ptr %t301 - store %S.gen.Val %t300, ptr %t301 - store %S.gen.Val %t303, ptr %a304 - call void @finch.drop.S_gen_Val(ptr %a304) - br label %endif6485 -endif6485: - ret i1 true -endif6469: - 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca i64, align 16 - %a155 = alloca i64, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca i64, align 16 - %a313 = alloca i64, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca %S.ast.Type, align 16 - %a384 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4143, 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.from6492 -logic.from6492: - br i1 %t16, label %logic.rhs6493, label %logic.end6494 -logic.rhs6493: - %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.4144, 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.rend6495 -logic.rend6495: - br label %logic.end6494 -logic.end6494: - %t24 = phi i1 [ false, %logic.from6492 ], [ %t23, %logic.rend6495 ] - br label %logic.from6496 -logic.from6496: - br i1 %t24, label %logic.rhs6497, label %logic.end6498 -logic.rhs6497: - %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.4145, 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.rend6499 -logic.rend6499: - br label %logic.end6498 -logic.end6498: - %t32 = phi i1 [ false, %logic.from6496 ], [ %t31, %logic.rend6499 ] - br i1 %t32, label %then6500, label %endif6502 -then6500: - %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.4146, 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.4147, 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.4148, i64 6, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a6 - %t49 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t47, %S.gen.Val %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.4149, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load ptr, ptr %a1 - %t62 = load %S.gen.Val, ptr %a10 - %t63 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t61, %S.gen.Val %t62) - store { ptr, i64, i64 } %t60, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t60, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4150, i64 1, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t74) - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load ptr, ptr %a1 - %t77 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t76, %S.gen.Val %t77) - %t78 = load ptr, ptr %a1 - %t79 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t78, %S.gen.Val %t79) - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a35 - %t82 = call { ptr, i64, i64 } @finch.gen.load(ptr %t80, { ptr, i64, i64 } { ptr @.str.4151, i64 17, i64 0 }, { ptr, i64, i64 } %t81) - %t83 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t82, 0 - %t84 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4152, i64 3, i64 0 }) - %t85 = insertvalue %S.gen.Val %t83, %S.ast.Type %t84, 1 - %t86 = insertvalue %S.gen.Val %t85, i1 true, 2 - call void @finch_str_drop(ptr %a35) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t86 -endif6502: - %t87 = load ptr, ptr %a1 - %t88 = call i1 @finch.gen.unify(ptr %t87, ptr %a6, ptr %a10) - %t89 = xor i1 %t88, true - br i1 %t89, label %then6503, label %endif6505 -then6503: - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a2 - %t92 = load %S.gen.Val, ptr %a6 - %t93 = load %S.gen.Val, ptr %a10 - %t94 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t90, { ptr, i64, i64 } %t91, %S.gen.Val %t92, %S.gen.Val %t93, %S.ast.Node %t94) - br label %endif6505 -endif6505: - %t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = call i1 @finch.gen.isInt(%S.ast.Type %t96) - br i1 %t97, label %then6506, label %endif6508 -then6506: - %t98 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t99 = call ptr @finch_alloc(i64 %t98) - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 0 - store { ptr, i64, i64 } { ptr @.str.4153, i64 1, i64 0 }, ptr %t100 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 1 - store { ptr, i64, i64 } { ptr @.str.4154, i64 1, i64 0 }, ptr %t101 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 2 - store { ptr, i64, i64 } { ptr @.str.4155, i64 1, i64 0 }, ptr %t102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 3 - store { ptr, i64, i64 } { ptr @.str.4156, i64 1, i64 0 }, ptr %t103 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 4 - store { ptr, i64, i64 } { ptr @.str.4157, i64 1, i64 0 }, ptr %t104 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 5 - store { ptr, i64, i64 } { ptr @.str.4158, i64 1, i64 0 }, ptr %t105 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 6 - store { ptr, i64, i64 } { ptr @.str.4159, i64 1, i64 0 }, ptr %t106 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 7 - store { ptr, i64, i64 } { ptr @.str.4160, i64 1, i64 0 }, ptr %t107 - %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 8 - store { ptr, i64, i64 } { ptr @.str.4161, i64 2, i64 0 }, ptr %t108 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 9 - store { ptr, i64, i64 } { ptr @.str.4162, i64 2, i64 0 }, ptr %t109 - %t110 = insertvalue { ptr, i64, i64 } undef, ptr %t99, 0 - %t111 = insertvalue { ptr, i64, i64 } %t110, i64 10, 1 - %t112 = insertvalue { ptr, i64, i64 } %t111, i64 10, 2 - store { ptr, i64, i64 } %t112, ptr %a113 - %t114 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t115 = call ptr @finch_alloc(i64 %t114) - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 0 - store { ptr, i64, i64 } { ptr @.str.4163, i64 3, i64 0 }, ptr %t116 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 1 - store { ptr, i64, i64 } { ptr @.str.4164, i64 3, i64 0 }, ptr %t117 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 2 - store { ptr, i64, i64 } { ptr @.str.4165, i64 3, i64 0 }, ptr %t118 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 3 - store { ptr, i64, i64 } { ptr @.str.4166, i64 4, i64 0 }, ptr %t119 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 4 - store { ptr, i64, i64 } { ptr @.str.4167, i64 4, i64 0 }, ptr %t120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 5 - store { ptr, i64, i64 } { ptr @.str.4168, i64 3, i64 0 }, ptr %t121 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 6 - store { ptr, i64, i64 } { ptr @.str.4169, i64 2, i64 0 }, ptr %t122 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 7 - store { ptr, i64, i64 } { ptr @.str.4170, i64 3, i64 0 }, ptr %t123 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 8 - store { ptr, i64, i64 } { ptr @.str.4171, i64 3, i64 0 }, ptr %t124 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 9 - store { ptr, i64, i64 } { ptr @.str.4172, i64 4, i64 0 }, ptr %t125 - %t126 = insertvalue { ptr, i64, i64 } undef, ptr %t115, 0 - %t127 = insertvalue { ptr, i64, i64 } %t126, i64 10, 1 - %t128 = insertvalue { ptr, i64, i64 } %t127, i64 10, 2 - store { ptr, i64, i64 } %t128, ptr %a129 - %t130 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t131) - br i1 %t132, label %then6509, label %endif6511 -then6509: - %t133 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t134 = call ptr @finch_alloc(i64 %t133) - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 0 - store { ptr, i64, i64 } { ptr @.str.4173, i64 3, i64 0 }, ptr %t135 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 1 - store { ptr, i64, i64 } { ptr @.str.4174, i64 3, i64 0 }, ptr %t136 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 2 - store { ptr, i64, i64 } { ptr @.str.4175, i64 3, i64 0 }, ptr %t137 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 3 - store { ptr, i64, i64 } { ptr @.str.4176, i64 4, i64 0 }, ptr %t138 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 4 - store { ptr, i64, i64 } { ptr @.str.4177, i64 4, i64 0 }, ptr %t139 - %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 5 - store { ptr, i64, i64 } { ptr @.str.4178, i64 3, i64 0 }, ptr %t140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 6 - store { ptr, i64, i64 } { ptr @.str.4179, i64 2, i64 0 }, ptr %t141 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 7 - store { ptr, i64, i64 } { ptr @.str.4180, i64 3, i64 0 }, ptr %t142 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 8 - store { ptr, i64, i64 } { ptr @.str.4181, i64 3, i64 0 }, ptr %t143 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 9 - store { ptr, i64, i64 } { ptr @.str.4182, i64 4, i64 0 }, ptr %t144 - %t145 = insertvalue { ptr, i64, i64 } undef, ptr %t134, 0 - %t146 = insertvalue { ptr, i64, i64 } %t145, i64 10, 1 - %t147 = insertvalue { ptr, i64, i64 } %t146, i64 10, 2 - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t147, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_str(ptr %a149) - br label %endif6511 -endif6511: - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a152 - %t153 = load i64, ptr %t150 - %t154 = load ptr, ptr %a113 - store i64 0, ptr %a155 - br label %find.cond6512 -find.cond6512: - %t156 = load i64, ptr %a155 - %t157 = icmp slt i64 %t156, %t153 - br i1 %t157, label %find.body6513, label %find.end6516 -find.body6513: - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i64 %t156 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } %t151, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br i1 %t163, label %find.hit6514, label %find.next6515 -find.hit6514: - store i64 %t156, ptr %a152 - br label %find.end6516 -find.next6515: - %t164 = add i64 %t156, 1 - store i64 %t164, ptr %a155 - br label %find.cond6512 -find.end6516: - %t165 = load i64, ptr %a152 - store i64 %t165, ptr %a166 - %t167 = load i64, ptr %a166 - %t168 = icmp slt i64 %t167, 0 - br i1 %t168, label %then6517, label %endif6519 -then6517: - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a2 - %t171 = load %S.gen.Val, ptr %a6 - %t172 = load %S.gen.Val, ptr %a10 - %t173 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t169, { ptr, i64, i64 } %t170, %S.gen.Val %t171, %S.gen.Val %t172, %S.ast.Node %t173) - br label %endif6519 -endif6519: - %t174 = load ptr, ptr %a1 - %t175 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t174, %S.ast.Type %t176) - store { ptr, i64, i64 } %t177, ptr %a178 - %t179 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4183, 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.from6520 -logic.from6520: - br i1 %t183, label %logic.end6522, label %logic.rhs6521 -logic.rhs6521: - %t184 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.4184, i64 1, i64 0 }, ptr %a186 - %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) - %t188 = icmp ne i32 %t187, 0 - br label %logic.rend6523 -logic.rend6523: - br label %logic.end6522 -logic.end6522: - %t189 = phi i1 [ true, %logic.from6520 ], [ %t188, %logic.rend6523 ] - br i1 %t189, label %then6524, label %endif6526 -then6524: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t191 = load i1, ptr %t190 - br label %logic.from6527 -logic.from6527: - br i1 %t191, label %logic.rhs6528, label %logic.end6529 -logic.rhs6528: - %t192 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4185, i64 1, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br label %logic.rend6530 -logic.rend6530: - br label %logic.end6529 -logic.end6529: - %t198 = phi i1 [ false, %logic.from6527 ], [ %t197, %logic.rend6530 ] - br i1 %t198, label %then6531, label %endif6533 -then6531: - %t199 = load ptr, ptr %a1 - %t200 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t199, %S.ast.Node %t200, { ptr, i64, i64 } { ptr @.str.4186, i64 16, i64 0 }) - br label %endif6533 -endif6533: - %t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t202 = load i1, ptr %t201 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6534, label %endif6536 -then6534: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4187, i64 8, i64 0 }, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a207 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.4188, i64 1, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4189, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = call { ptr, i64, i64 } @finch.gen.op(ptr %t205, { ptr, i64, i64 } %t227) - store { ptr, i64, i64 } %t227, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load %S.ast.Node, ptr %a11 - call void @finch.gen.panicIf(ptr %t204, { ptr, i64, i64 } %t228, { ptr, i64, i64 } { ptr @.str.4190, i64 16, i64 0 }, %S.ast.Node %t230) - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_drop(ptr %a231) - br label %endif6536 -endif6536: - br label %endif6526 -endif6526: - %t232 = load ptr, ptr %a1 - %t233 = load i64, ptr %a166 - %t234 = load { ptr, i64, i64 }, ptr %a129 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range6537, label %inrange6538 -range6537: - call void @finch_panic_index(ptr @.str.4191, i64 3540, i64 %t233, i64 %t235) - unreachable -inrange6538: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t233 - %t239 = load { ptr, i64, i64 }, ptr %t238 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.4192, i64 1, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4193, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.4194, i64 2, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.op(ptr %t232, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t274, 0 - %t277 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = insertvalue %S.gen.Val %t276, %S.ast.Type %t281, 1 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.arr_str(ptr %a129) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t282 -endif6508: - %t283 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t284 = load %S.ast.Type, ptr %t283 - %t285 = call i1 @finch.gen.isFloat(%S.ast.Type %t284) - br i1 %t285, label %then6539, label %endif6541 -then6539: - %t286 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t287 = call ptr @finch_alloc(i64 %t286) - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 0 - store { ptr, i64, i64 } { ptr @.str.4195, i64 1, i64 0 }, ptr %t288 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 1 - store { ptr, i64, i64 } { ptr @.str.4196, i64 1, i64 0 }, ptr %t289 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 2 - store { ptr, i64, i64 } { ptr @.str.4197, i64 1, i64 0 }, ptr %t290 - %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 3 - store { ptr, i64, i64 } { ptr @.str.4198, i64 1, i64 0 }, ptr %t291 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 4 - store { ptr, i64, i64 } { ptr @.str.4199, i64 1, i64 0 }, ptr %t292 - %t293 = insertvalue { ptr, i64, i64 } undef, ptr %t287, 0 - %t294 = insertvalue { ptr, i64, i64 } %t293, i64 5, 1 - %t295 = insertvalue { ptr, i64, i64 } %t294, i64 5, 2 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t298 = call ptr @finch_alloc(i64 %t297) - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 0 - store { ptr, i64, i64 } { ptr @.str.4200, i64 4, i64 0 }, ptr %t299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 1 - store { ptr, i64, i64 } { ptr @.str.4201, i64 4, i64 0 }, ptr %t300 - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 2 - store { ptr, i64, i64 } { ptr @.str.4202, i64 4, i64 0 }, ptr %t301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 3 - store { ptr, i64, i64 } { ptr @.str.4203, i64 4, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 4 - store { ptr, i64, i64 } { ptr @.str.4204, i64 4, i64 0 }, ptr %t303 - %t304 = insertvalue { ptr, i64, i64 } undef, ptr %t298, 0 - %t305 = insertvalue { ptr, i64, i64 } %t304, i64 5, 1 - %t306 = insertvalue { ptr, i64, i64 } %t305, i64 5, 2 - store { ptr, i64, i64 } %t306, ptr %a307 - %t308 = getelementptr inbounds { ptr, i64, i64 }, ptr %a296, i32 0, i32 1 - %t309 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a310 - %t311 = load i64, ptr %t308 - %t312 = load ptr, ptr %a296 - store i64 0, ptr %a313 - br label %find.cond6542 -find.cond6542: - %t314 = load i64, ptr %a313 - %t315 = icmp slt i64 %t314, %t311 - br i1 %t315, label %find.body6543, label %find.end6546 -find.body6543: - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t314 - %t317 = load { ptr, i64, i64 }, ptr %t316 - store { ptr, i64, i64 } %t317, ptr %a318 - store { ptr, i64, i64 } %t309, ptr %a319 - %t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319) - %t321 = icmp ne i32 %t320, 0 - br i1 %t321, label %find.hit6544, label %find.next6545 -find.hit6544: - store i64 %t314, ptr %a310 - br label %find.end6546 -find.next6545: - %t322 = add i64 %t314, 1 - store i64 %t322, ptr %a313 - br label %find.cond6542 -find.end6546: - %t323 = load i64, ptr %a310 - store i64 %t323, ptr %a324 - %t325 = load i64, ptr %a324 - %t326 = icmp slt i64 %t325, 0 - br i1 %t326, label %then6547, label %endif6549 -then6547: - %t327 = load ptr, ptr %a1 - %t328 = load { ptr, i64, i64 }, ptr %a2 - %t329 = load %S.gen.Val, ptr %a6 - %t330 = load %S.gen.Val, ptr %a10 - %t331 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t327, { ptr, i64, i64 } %t328, %S.gen.Val %t329, %S.gen.Val %t330, %S.ast.Node %t331) - br label %endif6549 -endif6549: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %a307 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range6550, label %inrange6551 -range6550: - call void @finch_panic_index(ptr @.str.4205, i64 3549, i64 %t333, i64 %t335) - unreachable -inrange6551: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t333 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a341 - store { ptr, i64, i64 } { ptr @.str.4206, i64 1, i64 0 }, ptr %a342 - call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a340 - %t344 = load ptr, ptr %a1 - %t345 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t344, %S.ast.Type %t346) - store { ptr, i64, i64 } %t343, ptr %a349 - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350) - store { ptr, i64, i64 } %t343, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t347, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t353, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.4207, i64 1, i64 0 }, ptr %a356 - call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) - store { ptr, i64, i64 } %t353, ptr %a357 - call void @finch_str_drop(ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t360 = load { ptr, i64, i64 }, ptr %t359 - store { ptr, i64, i64 } %t358, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t358, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4208, i64 2, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - %t378 = call { ptr, i64, i64 } @finch.gen.op(ptr %t332, { ptr, i64, i64 } %t377) - store { ptr, i64, i64 } %t377, ptr %a379 - call void @finch_str_drop(ptr %a379) - %t380 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t378, 0 - %t381 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t382 = load %S.ast.Type, ptr %t381 - store %S.ast.Type %t382, ptr %a383 - call void @finch.copy.S_ast_Type(ptr %a384, ptr %a383) - %t385 = load %S.ast.Type, ptr %a384 - %t386 = insertvalue %S.gen.Val %t380, %S.ast.Type %t385, 1 - call void @finch.drop.arr_str(ptr %a307) - call void @finch.drop.arr_str(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t386 -endif6541: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a2 - %t389 = load %S.gen.Val, ptr %a6 - %t390 = load %S.gen.Val, ptr %a10 - %t391 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t387, { ptr, i64, i64 } %t388, %S.gen.Val %t389, %S.gen.Val %t390, %S.ast.Node %t391) - %t392 = load %S.gen.Val, ptr %a6 - call void @finch.drop.S_gen_Val(ptr %a10) - ret %S.gen.Val %t392 -} - -define internal %S.gen.Val @finch.gen.compare(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %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 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca i64, align 16 - %a330 = alloca i64, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4209, 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.from6552 -logic.from6552: - br i1 %t16, label %logic.end6554, label %logic.rhs6553 -logic.rhs6553: - %t17 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4210, 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.rend6555 -logic.rend6555: - br label %logic.end6554 -logic.end6554: - %t22 = phi i1 [ true, %logic.from6552 ], [ %t21, %logic.rend6555 ] - 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.4211, 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.from6556 -logic.from6556: - br i1 %t30, label %logic.end6558, label %logic.rhs6557 -logic.rhs6557: - %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.4212, 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.rend6559 -logic.rend6559: - br label %logic.end6558 -logic.end6558: - %t38 = phi i1 [ true, %logic.from6556 ], [ %t37, %logic.rend6559 ] - br label %logic.from6560 -logic.from6560: - br i1 %t38, label %logic.end6562, label %logic.rhs6561 -logic.rhs6561: - %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.4213, 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.rend6563 -logic.rend6563: - br label %logic.end6562 -logic.end6562: - %t46 = phi i1 [ true, %logic.from6560 ], [ %t45, %logic.rend6563 ] - br label %logic.from6564 -logic.from6564: - br i1 %t46, label %logic.end6566, label %logic.rhs6565 -logic.rhs6565: - %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.4214, 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.rend6567 -logic.rend6567: - br label %logic.end6566 -logic.end6566: - %t54 = phi i1 [ true, %logic.from6564 ], [ %t53, %logic.rend6567 ] - br i1 %t54, label %then6568, label %endif6570 -then6568: - %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.4215, 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.from6571 -logic.from6571: - br i1 %t61, label %logic.end6573, label %logic.rhs6572 -logic.rhs6572: - %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.4216, 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.rend6574 -logic.rend6574: - br label %logic.end6573 -logic.end6573: - %t69 = phi i1 [ true, %logic.from6571 ], [ %t68, %logic.rend6574 ] - br i1 %t69, label %then6575, label %endif6577 -then6575: - %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.4217, i64 59, i64 0 }) - br label %endif6577 -endif6577: - %t72 = load i1, ptr %a23 - %t73 = xor i1 %t72, true - br i1 %t73, label %then6578, label %endif6580 -then6578: - %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 %endif6580 -endif6580: - store { ptr, i64, i64 } { ptr @.str.4218, 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.4219, 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 %then6581, label %endif6583 -then6581: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4220, i64 2, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6583 -endif6583: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4221, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4222, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4223, i64 2, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t109, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t109, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t117, 0 - %t120 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4224, i64 4, i64 0 }) - %t121 = insertvalue %S.gen.Val %t119, %S.ast.Type %t120, 1 - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t121 -endif6570: - %t122 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i32 0, i32 0 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.4225, 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.from6584 -logic.from6584: - br i1 %t128, label %logic.rhs6585, label %logic.end6586 -logic.rhs6585: - %t129 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t130 = getelementptr inbounds %S.ast.Type, ptr %t129, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4226, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6587 -logic.rend6587: - br label %logic.end6586 -logic.end6586: - %t136 = phi i1 [ false, %logic.from6584 ], [ %t135, %logic.rend6587 ] - br i1 %t136, label %then6588, label %endif6590 -then6588: - %t137 = load i1, ptr %a23 - br i1 %t137, label %then6591, label %endif6593 -then6591: - %t138 = load ptr, ptr %a1 - %t139 = load ptr, ptr %a1 - %t140 = load %S.gen.Val, ptr %a6 - %t141 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t139, %S.gen.Val %t140) - store { ptr, i64, i64 } { ptr @.str.4227, i64 27, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4228, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a10 - %t154 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t152, %S.gen.Val %t153) - store { ptr, i64, i64 } %t151, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t151, ptr %a158 - call void @finch_str_drop(ptr %a158) - store { ptr, i64, i64 } %t154, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4229, i64 1, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - store { ptr, i64, i64 } %t160, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load { ptr, i64, i64 }, ptr %a161 - %t166 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t165) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4230, i64 2, i64 0 }, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4231, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then6594, label %endif6596 -then6594: - %t175 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4232, i64 2, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif6596 -endif6596: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4233, i64 5, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4234, i64 5, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t193, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4235, i64 3, i64 0 }, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t177, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - store { ptr, i64, i64 } %t199, ptr %a201 - %t202 = load ptr, ptr %a1 - %t203 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t202, %S.gen.Val %t203) - %t204 = load ptr, ptr %a1 - %t205 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t204, %S.gen.Val %t205) - %t206 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4236, i64 4, i64 0 }) - %t212 = insertvalue %S.gen.Val %t210, %S.ast.Type %t211, 1 - call void @finch_str_drop(ptr %a201) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t212 -endif6593: - %t213 = load ptr, ptr %a1 - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.Val, ptr %a6 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t214, %S.gen.Val %t215) - store { ptr, i64, i64 } { ptr @.str.4237, i64 28, i64 0 }, ptr %a218 - store { ptr, i64, i64 } %t216, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - store { ptr, i64, i64 } %t221, ptr %a223 - store { ptr, i64, i64 } { ptr @.str.4238, i64 6, i64 0 }, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t221, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - %t227 = load ptr, ptr %a1 - %t228 = load %S.gen.Val, ptr %a10 - %t229 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t227, %S.gen.Val %t228) - store { ptr, i64, i64 } %t226, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t226, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t229, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.4239, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - %t241 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a242 - call void @finch_str_drop(ptr %a242) - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load { ptr, i64, i64 }, ptr %a2 - %t246 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t245, i1 true) - store { ptr, i64, i64 } { ptr @.str.4240, i64 5, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4241, i64 5, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t256, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.4242, i64 3, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = call { ptr, i64, i64 } @finch.gen.op(ptr %t244, { ptr, i64, i64 } %t267) - store { ptr, i64, i64 } %t267, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t268, ptr %a270 - %t271 = load ptr, ptr %a1 - %t272 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t271, %S.gen.Val %t272) - %t273 = load ptr, ptr %a1 - %t274 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t273, %S.gen.Val %t274) - %t275 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_copy(ptr %a277, ptr %a276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - %t279 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t278, 0 - %t280 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4243, i64 4, i64 0 }) - %t281 = insertvalue %S.gen.Val %t279, %S.ast.Type %t280, 1 - call void @finch_str_drop(ptr %a270) - call void @finch_str_drop(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t281 -endif6590: - %t282 = load ptr, ptr %a1 - %t283 = call i1 @finch.gen.unify(ptr %t282, ptr %a6, ptr %a10) - %t284 = xor i1 %t283, true - br i1 %t284, label %then6597, label %endif6599 -then6597: - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a2 - %t287 = load %S.gen.Val, ptr %a6 - %t288 = load %S.gen.Val, ptr %a10 - %t289 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t285, { ptr, i64, i64 } %t286, %S.gen.Val %t287, %S.gen.Val %t288, %S.ast.Node %t289) - br label %endif6599 -endif6599: - %t290 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Type, ptr %t290, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_copy(ptr %a294, ptr %a293) - %t295 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t298 = load %S.ast.Type, ptr %t297 - %t299 = call i1 @finch.gen.isFloat(%S.ast.Type %t298) - br i1 %t299, label %then6600, label %endif6602 -then6600: - %t300 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t301 = call ptr @finch_alloc(i64 %t300) - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 0 - store { ptr, i64, i64 } { ptr @.str.4244, i64 2, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 1 - store { ptr, i64, i64 } { ptr @.str.4245, i64 2, i64 0 }, ptr %t303 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 2 - store { ptr, i64, i64 } { ptr @.str.4246, i64 1, i64 0 }, ptr %t304 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 3 - store { ptr, i64, i64 } { ptr @.str.4247, i64 2, i64 0 }, ptr %t305 - %t306 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 4 - store { ptr, i64, i64 } { ptr @.str.4248, i64 1, i64 0 }, ptr %t306 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 5 - store { ptr, i64, i64 } { ptr @.str.4249, i64 2, i64 0 }, ptr %t307 - %t308 = insertvalue { ptr, i64, i64 } undef, ptr %t301, 0 - %t309 = insertvalue { ptr, i64, i64 } %t308, i64 6, 1 - %t310 = insertvalue { ptr, i64, i64 } %t309, i64 6, 2 - store { ptr, i64, i64 } %t310, ptr %a311 - %t312 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t313 = call ptr @finch_alloc(i64 %t312) - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 0 - store { ptr, i64, i64 } { ptr @.str.4250, i64 3, i64 0 }, ptr %t314 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 1 - store { ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 2 - store { ptr, i64, i64 } { ptr @.str.4252, i64 3, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 3 - store { ptr, i64, i64 } { ptr @.str.4253, i64 3, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 4 - store { ptr, i64, i64 } { ptr @.str.4254, i64 3, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 5 - store { ptr, i64, i64 } { ptr @.str.4255, i64 3, i64 0 }, ptr %t319 - %t320 = insertvalue { ptr, i64, i64 } undef, ptr %t313, 0 - %t321 = insertvalue { ptr, i64, i64 } %t320, i64 6, 1 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 2 - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a311, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a327 - %t328 = load i64, ptr %t325 - %t329 = load ptr, ptr %a311 - store i64 0, ptr %a330 - br label %find.cond6603 -find.cond6603: - %t331 = load i64, ptr %a330 - %t332 = icmp slt i64 %t331, %t328 - br i1 %t332, label %find.body6604, label %find.end6607 -find.body6604: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t329, i64 %t331 - %t334 = load { ptr, i64, i64 }, ptr %t333 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } %t326, ptr %a336 - %t337 = call i32 @finch_str_eq(ptr %a335, ptr %a336) - %t338 = icmp ne i32 %t337, 0 - br i1 %t338, label %find.hit6605, label %find.next6606 -find.hit6605: - store i64 %t331, ptr %a327 - br label %find.end6607 -find.next6606: - %t339 = add i64 %t331, 1 - store i64 %t339, ptr %a330 - br label %find.cond6603 -find.end6607: - %t340 = load i64, ptr %a327 - %t341 = load { ptr, i64, i64 }, ptr %a323 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range6608, label %inrange6609 -range6608: - call void @finch_panic_index(ptr @.str.4257, i64 3595, i64 %t340, i64 %t342) - unreachable -inrange6609: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds { ptr, i64, i64 }, ptr %t344, i64 %t340 - %t346 = load { ptr, i64, i64 }, ptr %t345 - store { ptr, i64, i64 } { ptr @.str.4256, i64 5, i64 0 }, ptr %a348 - store { ptr, i64, i64 } %t346, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4258, i64 1, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load ptr, ptr %a1 - %t357 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t358 = load %S.ast.Type, ptr %t357 - %t359 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t356, %S.ast.Type %t358) - store { ptr, i64, i64 } %t355, ptr %a361 - store { ptr, i64, i64 } %t359, ptr %a362 - call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) - store { ptr, i64, i64 } %t355, ptr %a363 - call void @finch_str_drop(ptr %a363) - store { ptr, i64, i64 } %t359, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4259, i64 1, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.4260, i64 2, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t384 = load { ptr, i64, i64 }, ptr %t383 - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load { ptr, i64, i64 }, ptr %a385 - %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t324, { ptr, i64, i64 } %t389) - store { ptr, i64, i64 } %t389, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 - %t393 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4261, i64 4, i64 0 }) - %t394 = insertvalue %S.gen.Val %t392, %S.ast.Type %t393, 1 - call void @finch.drop.arr_str(ptr %a323) - call void @finch.drop.arr_str(ptr %a311) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t394 -endif6602: - %t395 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t395, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4262, i64 4, i64 0 }, ptr %a397 - %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) - %t399 = icmp ne i32 %t398, 0 - br i1 %t399, label %then6610, label %endif6612 -then6610: - %t400 = load i1, ptr %a23 - %t401 = xor i1 %t400, true - br i1 %t401, label %then6613, label %endif6615 -then6613: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4263, i64 115, i64 0 }) - br label %endif6615 -endif6615: - store { ptr, i64, i64 } { ptr @.str.4264, i64 2, i64 0 }, ptr %a404 - %t405 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t405, ptr %a406 - store { ptr, i64, i64 } { ptr @.str.4265, i64 2, i64 0 }, ptr %a407 - %t408 = call i32 @finch_str_eq(ptr %a406, ptr %a407) - %t409 = icmp ne i32 %t408, 0 - br i1 %t409, label %then6616, label %endif6618 -then6616: - %t410 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4266, i64 2, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t410, ptr %a411 - call void @finch_str_drop(ptr %a411) - br label %endif6618 -endif6618: - %t412 = load ptr, ptr %a1 - %t413 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4267, i64 5, i64 0 }, ptr %a415 - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t417, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.4268, i64 5, i64 0 }, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t417, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - %t423 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t424 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t422, ptr %a426 - store { ptr, i64, i64 } %t424, ptr %a427 - call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) - store { ptr, i64, i64 } %t422, ptr %a428 - call void @finch_str_drop(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a425 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.4269, i64 2, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t434, ptr %a438 - store { ptr, i64, i64 } %t436, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t434, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t412, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t442, 0 - %t445 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4270, i64 4, i64 0 }) - %t446 = insertvalue %S.gen.Val %t444, %S.ast.Type %t445, 1 - call void @finch_str_drop(ptr %a404) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t446 -endif6612: - %t447 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.4271, i64 4, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br label %logic.from6619 -logic.from6619: - br i1 %t451, label %logic.rhs6620, label %logic.end6621 -logic.rhs6620: - %t452 = load i1, ptr %a23 - %t453 = xor i1 %t452, true - br label %logic.rend6622 -logic.rend6622: - br label %logic.end6621 -logic.end6621: - %t454 = phi i1 [ false, %logic.from6619 ], [ %t453, %logic.rend6622 ] - br i1 %t454, label %then6623, label %endif6625 -then6623: - %t455 = load ptr, ptr %a1 - %t456 = load { ptr, i64, i64 }, ptr %a2 - %t457 = load %S.gen.Val, ptr %a6 - %t458 = load %S.gen.Val, ptr %a10 - %t459 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t455, { ptr, i64, i64 } %t456, %S.gen.Val %t457, %S.gen.Val %t458, %S.ast.Node %t459) - br label %endif6625 -endif6625: - %t460 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t461 = load %S.ast.Type, ptr %t460 - %t462 = call i1 @finch.gen.isInt(%S.ast.Type %t461) - %t463 = xor i1 %t462, true - br label %logic.from6626 -logic.from6626: - br i1 %t463, label %logic.rhs6627, label %logic.end6628 -logic.rhs6627: - %t464 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t464, ptr %a465 - store { ptr, i64, i64 } { ptr @.str.4272, i64 4, i64 0 }, ptr %a466 - %t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466) - %t468 = icmp eq i32 %t467, 0 - br label %logic.rend6629 -logic.rend6629: - br label %logic.end6628 -logic.end6628: - %t469 = phi i1 [ false, %logic.from6626 ], [ %t468, %logic.rend6629 ] - br label %logic.from6630 -logic.from6630: - br i1 %t469, label %logic.rhs6631, label %logic.end6632 -logic.rhs6631: - %t470 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.4273, i64 4, i64 0 }, ptr %a472 - %t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472) - %t474 = icmp eq i32 %t473, 0 - br label %logic.rend6633 -logic.rend6633: - br label %logic.end6632 -logic.end6632: - %t475 = phi i1 [ false, %logic.from6630 ], [ %t474, %logic.rend6633 ] - br i1 %t475, label %then6634, label %endif6636 -then6634: - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a2 - %t478 = load %S.gen.Val, ptr %a6 - %t479 = load %S.gen.Val, ptr %a10 - %t480 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t476, { ptr, i64, i64 } %t477, %S.gen.Val %t478, %S.gen.Val %t479, %S.ast.Node %t480) - br label %endif6636 -endif6636: - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a2 - %t483 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call i1 @finch.gen.isSigned(%S.ast.Type %t484) - %t486 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t482, i1 %t485) - store { ptr, i64, i64 } { ptr @.str.4274, i64 5, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.4275, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = load ptr, ptr %a1 - %t498 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t499 = load %S.ast.Type, ptr %t498 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t497, %S.ast.Type %t499) - store { ptr, i64, i64 } %t496, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t496, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.4276, i64 1, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t513 = load { ptr, i64, i64 }, ptr %t512 - store { ptr, i64, i64 } %t511, ptr %a515 - store { ptr, i64, i64 } %t513, ptr %a516 - call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516) - store { ptr, i64, i64 } %t511, ptr %a517 - call void @finch_str_drop(ptr %a517) - %t518 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.4277, i64 2, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t523, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t523, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = call { ptr, i64, i64 } @finch.gen.op(ptr %t481, { ptr, i64, i64 } %t530) - store { ptr, i64, i64 } %t530, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t531, 0 - %t534 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4278, i64 4, i64 0 }) - %t535 = insertvalue %S.gen.Val %t533, %S.ast.Type %t534, 1 - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t535 -} - -define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) { -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 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca i64, align 16 - %a46 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t4 = call ptr @finch_alloc(i64 %t3) - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 - store { ptr, i64, i64 } { ptr @.str.4279, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 - store { ptr, i64, i64 } { ptr @.str.4280, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 - store { ptr, i64, i64 } { ptr @.str.4281, i64 1, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3 - store { ptr, i64, i64 } { ptr @.str.4282, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 - store { ptr, i64, i64 } { ptr @.str.4283, i64 1, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 - store { ptr, i64, i64 } { ptr @.str.4284, 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.4285, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 - store { ptr, i64, i64 } { ptr @.str.4286, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 - store { ptr, i64, i64 } { ptr @.str.4287, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3 - store { ptr, i64, i64 } { ptr @.str.4288, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 - store { ptr, i64, i64 } { ptr @.str.4289, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 - store { ptr, i64, i64 } { ptr @.str.4290, 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 %then6637, label %endif6639 -then6637: - %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.4291, i64 2, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1 - store { ptr, i64, i64 } { ptr @.str.4292, i64 2, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 - store { ptr, i64, i64 } { ptr @.str.4293, i64 3, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 - store { ptr, i64, i64 } { ptr @.str.4294, i64 3, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4 - store { ptr, i64, i64 } { ptr @.str.4295, i64 3, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 - store { ptr, i64, i64 } { ptr @.str.4296, i64 3, i64 0 }, ptr %t35 - %t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0 - %t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1 - %t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2 - %t39 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t38, ptr %a26 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch.drop.arr_str(ptr %a40) - br label %endif6639 -endif6639: - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %a1 - store i64 -1, ptr %a43 - %t44 = load i64, ptr %t41 - %t45 = load ptr, ptr %a14 - store i64 0, ptr %a46 - br label %find.cond6640 -find.cond6640: - %t47 = load i64, ptr %a46 - %t48 = icmp slt i64 %t47, %t44 - br i1 %t48, label %find.body6641, label %find.end6644 -find.body6641: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t47 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } %t42, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %find.hit6642, label %find.next6643 -find.hit6642: - store i64 %t47, ptr %a43 - br label %find.end6644 -find.next6643: - %t55 = add i64 %t47, 1 - store i64 %t55, ptr %a46 - br label %find.cond6640 -find.end6644: - %t56 = load i64, ptr %a43 - %t57 = load { ptr, i64, i64 }, ptr %a26 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 %t56, %t58 - br i1 %t59, label %range6645, label %inrange6646 -range6645: - call void @finch_panic_index(ptr @.str.4297, i64 3622, i64 %t56, i64 %t58) - unreachable -inrange6646: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i64 %t56 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.drop.arr_str(ptr %a26) - call void @finch.drop.arr_str(ptr %a14) - ret { ptr, i64, i64 } %t65 -} - -define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca %S.gen.Val, align 16 - %a151 = alloca i64, align 16 - %a163 = alloca %S.gen.Val, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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.4298, 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.from6647 -logic.from6647: - br i1 %t13, label %logic.end6649, label %logic.rhs6648 -logic.rhs6648: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.4299, 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.rend6650 -logic.rend6650: - br label %logic.end6649 -logic.end6649: - %t19 = phi i1 [ true, %logic.from6647 ], [ %t18, %logic.rend6650 ] - br i1 %t19, label %then6651, label %endif6653 -then6651: - %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 %range6654, label %inrange6655 -range6654: - call void @finch_panic_index(ptr @.str.4300, i64 3628, i64 0, i64 %t23) - unreachable -inrange6655: - %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.4301, 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.4302, 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.4303, 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.4304, 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 %then6656, label %else6657 -then6656: - %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 %endif6658 -else6657: - %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 %endif6658 -endif6658: - %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 %range6659, label %inrange6660 -range6659: - call void @finch_panic_index(ptr @.str.4305, i64 3640, i64 1, i64 %t61) - unreachable -inrange6660: - %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.4306, 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.4307, 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.4308, 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 %then6661, label %endif6663 -then6661: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4309, i64 5, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6663 -endif6663: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4310, i64 9, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4311, i64 3, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.4312, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4313, i64 3, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4314, i64 2, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t131, 0 - %t134 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }) - %t135 = insertvalue %S.gen.Val %t133, %S.ast.Type %t134, 1 - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a38) - call void @finch_str_drop(ptr %a35) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a29) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t135 -endif6653: - %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 0, %t139 - br i1 %t140, label %range6664, label %inrange6665 -range6664: - call void @finch_panic_index(ptr @.str.4316, i64 3652, i64 0, i64 %t139) - unreachable -inrange6665: - %t141 = extractvalue { ptr, i64, i64 } %t138, 0 - %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 0 - %t143 = load %S.ast.Node, ptr %t142 - %t144 = call %S.gen.Val @finch.gen.expr(ptr %t136, %S.ast.Node %t143) - store %S.gen.Val %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6666, label %ok6667 -panic6666: - call void @finch_panic(ptr @.str.4317, i64 3653, ptr @.str.4318) - unreachable -ok6667: - %t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 11 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i32 0, i32 1 - %t150 = load i64, ptr %t149 - store i64 %t150, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a145 - call void @finch.gen.hold(ptr %t152, %S.gen.Val %t153) - %t154 = load ptr, ptr %a1 - %t155 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t156 = load { ptr, i64, i64 }, ptr %t155 - %t157 = extractvalue { ptr, i64, i64 } %t156, 1 - %t158 = icmp uge i64 1, %t157 - br i1 %t158, label %range6668, label %inrange6669 -range6668: - call void @finch_panic_index(ptr @.str.4319, i64 3655, i64 1, i64 %t157) - unreachable -inrange6669: - %t159 = extractvalue { ptr, i64, i64 } %t156, 0 - %t160 = getelementptr inbounds %S.ast.Node, ptr %t159, i64 1 - %t161 = load %S.ast.Node, ptr %t160 - %t162 = call %S.gen.Val @finch.gen.expr(ptr %t154, %S.ast.Node %t161) - store %S.gen.Val %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = load i64, ptr %a151 - call void @finch.gen.heldEnd(ptr %t164, i64 %t165) - %t166 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4320, i64 2, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from6670 -logic.from6670: - br i1 %t170, label %logic.end6672, label %logic.rhs6671 -logic.rhs6671: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4321, i64 2, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend6673 -logic.rend6673: - br label %logic.end6672 -logic.end6672: - %t176 = phi i1 [ true, %logic.from6670 ], [ %t175, %logic.rend6673 ] - br label %logic.from6674 -logic.from6674: - br i1 %t176, label %logic.end6676, label %logic.rhs6675 -logic.rhs6675: - %t177 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4322, i64 1, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend6677 -logic.rend6677: - br label %logic.end6676 -logic.end6676: - %t182 = phi i1 [ true, %logic.from6674 ], [ %t181, %logic.rend6677 ] - br label %logic.from6678 -logic.from6678: - br i1 %t182, label %logic.end6680, label %logic.rhs6679 -logic.rhs6679: - %t183 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4323, i64 2, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend6681 -logic.rend6681: - br label %logic.end6680 -logic.end6680: - %t188 = phi i1 [ true, %logic.from6678 ], [ %t187, %logic.rend6681 ] - br label %logic.from6682 -logic.from6682: - br i1 %t188, label %logic.end6684, label %logic.rhs6683 -logic.rhs6683: - %t189 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.4324, i64 1, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br label %logic.rend6685 -logic.rend6685: - br label %logic.end6684 -logic.end6684: - %t194 = phi i1 [ true, %logic.from6682 ], [ %t193, %logic.rend6685 ] - br label %logic.from6686 -logic.from6686: - br i1 %t194, label %logic.end6688, label %logic.rhs6687 -logic.rhs6687: - %t195 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t195, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.4325, i64 2, i64 0 }, ptr %a197 - %t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197) - %t199 = icmp ne i32 %t198, 0 - br label %logic.rend6689 -logic.rend6689: - br label %logic.end6688 -logic.end6688: - %t200 = phi i1 [ true, %logic.from6686 ], [ %t199, %logic.rend6689 ] - br i1 %t200, label %then6690, label %endif6692 -then6690: - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a8 - %t203 = load %S.gen.Val, ptr %a145 - %t204 = load %S.gen.Val, ptr %a163 - %t205 = load %S.ast.Node, ptr %a2 - %t206 = call %S.gen.Val @finch.gen.compare(ptr %t201, { ptr, i64, i64 } %t202, %S.gen.Val %t203, %S.gen.Val %t204, %S.ast.Node %t205) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t206 -endif6692: - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a8 - %t209 = load %S.gen.Val, ptr %a145 - %t210 = load %S.gen.Val, ptr %a163 - %t211 = load %S.ast.Node, ptr %a2 - %t212 = call %S.gen.Val @finch.gen.arith(ptr %t207, { ptr, i64, i64 } %t208, %S.gen.Val %t209, %S.gen.Val %t210, %S.ast.Node %t211) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t212 -} - -define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a23 = alloca %S.ast.Type, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca i64, align 16 - %a38 = alloca i64, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a47 = alloca %S.gen.Val, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.gen.Val, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a71 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %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 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca %S.ast.Type, align 16 - %a290 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4326, 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.4327, 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 %then6693, label %else6694 -then6693: - %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 %range6696, label %inrange6697 -range6696: - call void @finch_panic_index(ptr @.str.4328, i64 3666, i64 0, i64 %t14) - unreachable -inrange6697: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 - %t18 = load %S.ast.Type, ptr %t17 - store %S.ast.Type %t18, ptr %a19 - call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) - %t21 = load %S.ast.Type, ptr %a20 - %t22 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t21, ptr %a5 - store %S.ast.Type %t22, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - br label %endif6695 -else6694: - %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = icmp eq i64 %t26, 0 - br i1 %t27, label %then6698, label %endif6700 -then6698: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t28, %S.ast.Node %t29, { ptr, i64, i64 } { ptr @.str.4329, i64 47, i64 0 }) - br label %endif6700 -endif6700: - br label %endif6695 -endif6695: - store { ptr, i64, i64 } zeroinitializer, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic6701, label %ok6702 -panic6701: - call void @finch_panic(ptr @.str.4330, i64 3671, ptr @.str.4331) - unreachable -ok6702: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 11 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - %t35 = load i64, ptr %t34 - store i64 %t35, ptr %a36 - %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a38 - br label %each.cond6703 -each.cond6703: - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 - %t40 = load i64, ptr %t39 - %t41 = load i64, ptr %a38 - %t42 = icmp slt i64 %t41, %t40 - br i1 %t42, label %each.body6704, label %each.end6706 -each.body6704: - %t43 = load ptr, ptr %t37 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - %t45 = load %S.ast.Node, ptr %t44 - store %S.ast.Node %t45, ptr %a46 - store %S.gen.Val zeroinitializer, ptr %a47 - %t48 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0 - %t49 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4332, i64 4, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br i1 %t53, label %then6707, label %else6708 -then6707: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a46 - %t56 = call %S.gen.Val @finch.gen.expr(ptr %t54, %S.ast.Node %t55) - %t57 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t56, ptr %a47 - store %S.gen.Val %t57, ptr %a58 - call void @finch.drop.S_gen_Val(ptr %a58) - %t59 = getelementptr inbounds %S.gen.Val, ptr %a47, i32 0, i32 1 - %t60 = load %S.ast.Type, ptr %t59 - store %S.ast.Type %t60, ptr %a61 - call void @finch.copy.S_ast_Type(ptr %a62, ptr %a61) - %t63 = load %S.ast.Type, ptr %a62 - %t64 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t63, ptr %a5 - store %S.ast.Type %t64, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - br label %endif6709 -else6708: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a46 - %t68 = load %S.ast.Type, ptr %a5 - %t69 = call %S.gen.Val @finch.gen.exprWant(ptr %t66, %S.ast.Node %t67, %S.ast.Type %t68) - %t70 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t69, ptr %a47 - store %S.gen.Val %t70, ptr %a71 - call void @finch.drop.S_gen_Val(ptr %a71) - br label %endif6709 -endif6709: - %t72 = load ptr, ptr %a1 - %t73 = load %S.gen.Val, ptr %a47 - %t74 = load %S.ast.Type, ptr %a5 - %t75 = load %S.ast.Node, ptr %a46 - %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t72, %S.gen.Val %t73, %S.ast.Type %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.4333, i64 27, i64 0 }) - %t77 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t76, ptr %a47 - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t80 = load ptr, ptr %a1 - %t81 = load %S.gen.Val, ptr %a47 - %t82 = call { ptr, i64, i64 } @finch.gen.own(ptr %t80, %S.gen.Val %t81) - %t83 = load i64, ptr %t79 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %a30, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %a30 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t79 - %t87 = load ptr, ptr %a1 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = sub i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %a30 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range6710, label %inrange6711 -range6710: - call void @finch_panic_index(ptr @.str.4334, i64 3682, i64 %t90, i64 %t92) - unreachable -inrange6711: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 %t90 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t100, %S.ast.Type %t104, 1 - %t106 = insertvalue %S.gen.Val %t105, i1 true, 2 - call void @finch.gen.hold(ptr %t87, %S.gen.Val %t106) - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - call void @finch.drop.S_gen_Val(ptr %a47) - br label %each.step6705 -each.step6705: - %t108 = load i64, ptr %a38 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a38 - br label %each.cond6703 -each.end6706: - %t110 = load ptr, ptr %a1 - %t111 = load i64, ptr %a36 - call void @finch.gen.heldEnd(ptr %t110, i64 %t111) - %t112 = load %S.ast.Type, ptr %a5 - %t113 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t112) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t116 = load i64, ptr %t115 - call void @finch_str_from_int(ptr %a117, i64 %t116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4335, i64 4, i64 0 }, ptr %a120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t122 = load i64, ptr %t121 - %t123 = icmp sgt i64 %t122, 0 - br i1 %t123, label %then6712, label %endif6714 -then6712: - %t124 = load ptr, ptr %a1 - %t125 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4336, i64 8, i64 0 }, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t129, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4337, i64 2, i64 0 }, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a5 - %t137 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t135, %S.ast.Type %t136) - store { ptr, i64, i64 } %t134, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t134, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - %t144 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t143, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4338, i64 26, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.4339, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t158, ptr %a120 - store { ptr, i64, i64 } %t160, ptr %a161 - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a146) - br label %endif6714 -endif6714: - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t163 = load i64, ptr %t162 - store i64 0, ptr %a164 - br label %for.cond6715 -for.cond6715: - %t165 = load i64, ptr %a164 - %t166 = icmp slt i64 %t165, %t163 - br i1 %t166, label %for.body6716, label %for.end6718 -for.body6716: - %t167 = load ptr, ptr %a1 - %t168 = load ptr, ptr %a1 - %t169 = load %S.ast.Type, ptr %a5 - %t170 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t168, %S.ast.Type %t169) - store { ptr, i64, i64 } { ptr @.str.4340, i64 23, i64 0 }, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t175, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4341, i64 6, i64 0 }, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_drop(ptr %a179) - %t180 = load { ptr, i64, i64 }, ptr %a176 - %t181 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t180, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t180, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4342, i64 6, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = load i64, ptr %a164 - call void @finch_str_from_int(ptr %a193, i64 %t192) - %t194 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t191, ptr %a198 - call void @finch_str_drop(ptr %a198) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a195 - %t201 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t200) - store { ptr, i64, i64 } %t200, ptr %a202 - call void @finch_str_drop(ptr %a202) - store { ptr, i64, i64 } %t201, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.ast.Type, ptr %a5 - %t207 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t205, %S.ast.Type %t206) - %t208 = load i64, ptr %a164 - %t209 = load { ptr, i64, i64 }, ptr %a30 - %t210 = extractvalue { ptr, i64, i64 } %t209, 1 - %t211 = icmp uge i64 %t208, %t210 - br i1 %t211, label %range6719, label %inrange6720 -range6719: - call void @finch_panic_index(ptr @.str.4343, i64 3694, i64 %t208, i64 %t210) - unreachable -inrange6720: - %t212 = extractvalue { ptr, i64, i64 } %t209, 0 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t208 - %t214 = load { ptr, i64, i64 }, ptr %t213 - %t215 = load { ptr, i64, i64 }, ptr %a203 - call void @finch.gen.store(ptr %t204, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t214, { ptr, i64, i64 } %t215) - store { ptr, i64, i64 } %t207, ptr %a216 - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a203) - br label %for.step6717 -for.step6717: - %t217 = load i64, ptr %a164 - %t218 = add i64 %t217, 1 - store i64 %t218, ptr %a164 - br label %for.cond6715 -for.end6718: - %t219 = load ptr, ptr %a1 - %t220 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4344, i64 41, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4345, i64 3, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t219, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t229, ptr %a231 - call void @finch_str_drop(ptr %a231) - store { ptr, i64, i64 } %t230, ptr %a232 - %t233 = load ptr, ptr %a1 - %t234 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4346, i64 30, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.4347, i64 6, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4348, i64 3, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = call { ptr, i64, i64 } @finch.gen.op(ptr %t233, { ptr, i64, i64 } %t254) - store { ptr, i64, i64 } %t254, ptr %a256 - call void @finch_str_drop(ptr %a256) - store { ptr, i64, i64 } %t255, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.4349, i64 30, i64 0 }, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4351, i64 3, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t279) - store { ptr, i64, i64 } %t279, ptr %a281 - call void @finch_str_drop(ptr %a281) - store { ptr, i64, i64 } %t280, ptr %a282 - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t283, ptr %a284 - call void @finch_str_copy(ptr %a285, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - %t287 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t286, 0 - %t288 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t288, ptr %a289 - call void @finch.copy.S_ast_Type(ptr %a290, ptr %a289) - %t291 = load %S.ast.Type, ptr %a290 - %t292 = insertvalue %S.gen.Val %t287, %S.ast.Type %t291, 1 - %t293 = insertvalue %S.gen.Val %t292, i1 true, 2 - call void @finch_str_drop(ptr %a282) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a120) - call void @finch_str_drop(ptr %a119) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.arr_str(ptr %a30) - call void @finch.drop.S_ast_Type(ptr %a5) - ret %S.gen.Val %t293 -} - -define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) { -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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Ref, align 16 - %a42 = alloca %S.gen.Place, align 16 - %a43 = alloca %S.gen.Place, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4352, 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.from6721 -logic.from6721: - br i1 %t9, label %logic.rhs6722, label %logic.end6723 -logic.rhs6722: - %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.rend6724 -logic.rend6724: - br label %logic.end6723 -logic.end6723: - %t15 = phi i1 [ false, %logic.from6721 ], [ %t14, %logic.rend6724 ] - br i1 %t15, label %then6725, label %endif6727 -then6725: - %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.4353, 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.4354, i64 1, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t28) - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %endif6727 -endif6727: - %t30 = load ptr, ptr %a1 - %t31 = load %S.ast.Node, ptr %a2 - %t32 = load i1, ptr %a3 - %t33 = call %S.gen.Ref @finch.gen.ref(ptr %t30, %S.ast.Node %t31, i1 %t32) - store %S.gen.Ref %t33, ptr %a34 - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 0 - %t36 = load i1, ptr %t35 - %t37 = xor i1 %t36, true - br i1 %t37, label %then6728, label %endif6730 -then6728: - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t39, { ptr, i64, i64 } { ptr @.str.4355, i64 60, i64 0 }) - br label %endif6730 -endif6730: - %t40 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 1 - %t41 = load %S.gen.Place, ptr %t40 - store %S.gen.Place %t41, ptr %a42 - call void @finch.copy.S_gen_Place(ptr %a43, ptr %a42) - %t44 = load %S.gen.Place, ptr %a43 - call void @finch.drop.S_gen_Ref(ptr %a34) - ret %S.gen.Place %t44 -} - -define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i64, align 16 - %a190 = alloca i64, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca %S.gen.Var, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.ast.Type, align 16 - %a359 = alloca %S.ast.Type, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4356, 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 %then6731, label %endif6733 -then6731: - %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.from6734 -logic.from6734: - br i1 %t16, label %logic.rhs6735, label %logic.end6736 -logic.rhs6735: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6737, label %ok6738 -panic6737: - call void @finch_panic(ptr @.str.4357, i64 3718, ptr @.str.4358) - unreachable -ok6738: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 26 - %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.rend6739 -logic.rend6739: - br label %logic.end6736 -logic.end6736: - %t26 = phi i1 [ false, %logic.from6734 ], [ %t25, %logic.rend6739 ] - br i1 %t26, label %then6740, label %endif6742 -then6740: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6743, label %ok6744 -panic6743: - call void @finch_panic(ptr @.str.4359, i64 3719, ptr @.str.4360) - unreachable -ok6744: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 26 - %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.missing6745, label %map.found6746 -map.missing6745: - 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.4361, i64 3719, ptr %a36) - unreachable -map.found6746: - %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 %then6747, label %endif6749 -then6747: - %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.4362, i64 5, i64 0 }) - %t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1 - %t56 = insertvalue %S.gen.Val %t55, i1 true, 3 - %t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t57 -endif6749: - %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.4363, i64 3, i64 0 }) - %t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1 - %t66 = insertvalue %S.gen.Val %t65, i1 true, 3 - %t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t67 -endif6742: - %t68 = load i64, ptr %a14 - %t69 = icmp slt i64 %t68, 0 - br label %logic.from6750 -logic.from6750: - br i1 %t69, label %logic.rhs6751, label %logic.end6752 -logic.rhs6751: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic6753, label %ok6754 -panic6753: - call void @finch_panic(ptr @.str.4364, i64 3726, ptr @.str.4365) - unreachable -ok6754: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 26 - %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.rend6755 -logic.rend6755: - br label %logic.end6752 -logic.end6752: - %t80 = phi i1 [ false, %logic.from6750 ], [ %t79, %logic.rend6755 ] - br label %logic.from6756 -logic.from6756: - br i1 %t80, label %logic.rhs6757, label %logic.end6758 -logic.rhs6757: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic6759, label %ok6760 -panic6759: - call void @finch_panic(ptr @.str.4366, i64 3726, ptr @.str.4367) - unreachable -ok6760: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 26 - %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4368, 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.rend6761 -logic.rend6761: - br label %logic.end6758 -logic.end6758: - %t88 = phi i1 [ false, %logic.from6756 ], [ %t87, %logic.rend6761 ] - br label %logic.from6762 -logic.from6762: - br i1 %t88, label %logic.rhs6763, label %logic.end6764 -logic.rhs6763: - %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.4369, 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.from6765 -logic.from6765: - br i1 %t94, label %logic.end6767, label %logic.rhs6766 -logic.rhs6766: - %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.4370, 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.rend6768 -logic.rend6768: - br label %logic.end6767 -logic.end6767: - %t101 = phi i1 [ true, %logic.from6765 ], [ %t100, %logic.rend6768 ] - br label %logic.from6769 -logic.from6769: - br i1 %t101, label %logic.end6771, label %logic.rhs6770 -logic.rhs6770: - %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.4371, 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.rend6772 -logic.rend6772: - br label %logic.end6771 -logic.end6771: - %t108 = phi i1 [ true, %logic.from6769 ], [ %t107, %logic.rend6772 ] - br label %logic.rend6773 -logic.rend6773: - br label %logic.end6764 -logic.end6764: - %t109 = phi i1 [ false, %logic.from6762 ], [ %t108, %logic.rend6773 ] - br i1 %t109, label %then6774, label %endif6776 -then6774: - store { ptr, i64, i64 } { ptr @.str.4372, 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.4373, 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 %then6777, label %else6778 -then6777: - %t117 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4374, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif6779 -else6778: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t120 = load { ptr, i64, i64 }, ptr %t119 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.4375, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then6780, label %endif6782 -then6780: - %t125 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4376, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - br label %endif6782 -endif6782: - br label %endif6779 -endif6779: - %t127 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t128 = load ptr, ptr %a1 - %t129 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4377, i64 31, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.4378, i64 1, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t128, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t142 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4379, i64 3, i64 0 }) - %t143 = insertvalue %S.gen.Val %t141, %S.ast.Type %t142, 1 - %t144 = insertvalue %S.gen.Ref %t127, %S.gen.Val %t143, 2 - call void @finch_str_drop(ptr %a110) - ret %S.gen.Ref %t144 -endif6776: - %t145 = load i64, ptr %a14 - %t146 = icmp slt i64 %t145, 0 - br label %logic.from6783 -logic.from6783: - br i1 %t146, label %logic.rhs6784, label %logic.end6785 -logic.rhs6784: - %t147 = load ptr, ptr %a1 - %t148 = icmp eq ptr %t147, null - br i1 %t148, label %panic6786, label %ok6787 -panic6786: - call void @finch_panic(ptr @.str.4380, i64 3735, ptr @.str.4381) - unreachable -ok6787: - %t149 = getelementptr inbounds %S.gen.Gen, ptr %t147, i32 0, i32 26 - %t150 = getelementptr inbounds %S.cimport.CImports, ptr %t149, i32 0, i32 2 - %t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = call i64 @finch_map_find(ptr %t150, ptr %a153, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t155 = icmp sge i64 %t154, 0 - br label %logic.rend6788 -logic.rend6788: - br label %logic.end6785 -logic.end6785: - %t156 = phi i1 [ false, %logic.from6783 ], [ %t155, %logic.rend6788 ] - br i1 %t156, label %then6789, label %endif6791 -then6789: - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic6792, label %ok6793 -panic6792: - call void @finch_panic(ptr @.str.4382, i64 3736, ptr @.str.4383) - unreachable -ok6793: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 26 - %t161 = getelementptr inbounds %S.cimport.CImports, ptr %t160, i32 0, i32 2 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - store { ptr, i64, i64 } %t163, ptr %a164 - %t165 = call i64 @finch_map_find(ptr %t161, ptr %a164, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t166 = icmp slt i64 %t165, 0 - br i1 %t166, label %map.missing6794, label %map.found6795 -map.missing6794: - store { ptr, i64, i64 } zeroinitializer, ptr %a167 - store { ptr, i64, i64 } %t163, ptr %a168 - call void @finch_buf_str(ptr %a167, ptr %a168, i32 1) - call void @finch_map_missing(ptr @.str.4384, i64 3736, ptr %a167) - unreachable -map.found6795: - %t169 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t161, i32 0, i32 0 - %t170 = load ptr, ptr %t169 - %t171 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t170, i64 %t165 - %t172 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t171, i32 0, i32 2 - %t173 = load %S.ast.Type, ptr %t172 - %t174 = load %S.ast.Node, ptr %a2 - %t175 = call %S.ast.Type @finch.gen.resolve(ptr %t157, %S.ast.Type %t173, %S.ast.Node %t174) - store %S.ast.Type %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = icmp eq ptr %t177, null - br i1 %t178, label %panic6796, label %ok6797 -panic6796: - call void @finch_panic(ptr @.str.4385, i64 3737, ptr @.str.4386) - unreachable -ok6797: - %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 40 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } { ptr @.str.4387, i64 2, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store i64 -1, ptr %a187 - %t188 = load i64, ptr %t180 - %t189 = load ptr, ptr %t179 - store i64 0, ptr %a190 - br label %find.cond6798 -find.cond6798: - %t191 = load i64, ptr %a190 - %t192 = icmp slt i64 %t191, %t188 - br i1 %t192, label %find.body6799, label %find.end6802 -find.body6799: - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t189, i64 %t191 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } %t186, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br i1 %t198, label %find.hit6800, label %find.next6801 -find.hit6800: - store i64 %t191, ptr %a187 - br label %find.end6802 -find.next6801: - %t199 = add i64 %t191, 1 - store i64 %t199, ptr %a190 - br label %find.cond6798 -find.end6802: - store { ptr, i64, i64 } %t186, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load i64, ptr %a187 - %t202 = icmp sge i64 %t201, 0 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6803, label %endif6805 -then6803: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic6806, label %ok6807 -panic6806: - call void @finch_panic(ptr @.str.4388, i64 3738, ptr @.str.4389) - unreachable -ok6807: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 40 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } { ptr @.str.4390, i64 2, i64 0 }, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a210 - %t214 = load i64, ptr %t207 - %t215 = add i64 %t214, 1 - call void @finch_arr_reserve(ptr %t206, i64 %t215, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t216 = load ptr, ptr %t206 - %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t214 - store { ptr, i64, i64 } %t213, ptr %t217 - store i64 %t215, ptr %t207 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic6808, label %ok6809 -panic6808: - call void @finch_panic(ptr @.str.4391, i64 3739, ptr @.str.4392) - unreachable -ok6809: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 2 - %t221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t220, i32 0, i32 1 - %t222 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t223 = load { ptr, i64, i64 }, ptr %t222 - store { ptr, i64, i64 } { ptr @.str.4393, i64 1, i64 0 }, ptr %a225 - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.4394, i64 19, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load ptr, ptr %a1 - %t234 = load %S.ast.Type, ptr %a176 - %t235 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t233, %S.ast.Type %t234) - store { ptr, i64, i64 } %t232, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t232, ptr %a239 - call void @finch_str_drop(ptr %a239) - store { ptr, i64, i64 } %t235, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a236 - %t242 = load i64, ptr %t221 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %t220, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %t220 - %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 - store { ptr, i64, i64 } %t241, ptr %t245 - store i64 %t243, ptr %t221 - br label %endif6805 -endif6805: - %t246 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t247 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t248 = load { ptr, i64, i64 }, ptr %t247 - store { ptr, i64, i64 } { ptr @.str.4395, i64 1, i64 0 }, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - %t252 = load { ptr, i64, i64 }, ptr %a249 - %t253 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t252, 0 - %t254 = load %S.ast.Type, ptr %a176 - store %S.ast.Type %t254, ptr %a255 - call void @finch.copy.S_ast_Type(ptr %a256, ptr %a255) - %t257 = load %S.ast.Type, ptr %a256 - %t258 = insertvalue %S.gen.Place %t253, %S.ast.Type %t257, 1 - %t259 = insertvalue %S.gen.Ref %t246, %S.gen.Place %t258, 1 - call void @finch.drop.S_ast_Type(ptr %a176) - ret %S.gen.Ref %t259 -endif6791: - %t260 = load i64, ptr %a14 - %t261 = icmp slt i64 %t260, 0 - br i1 %t261, label %then6810, label %endif6812 -then6810: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call i1 @finch.gen.imports(ptr %t262, { ptr, i64, i64 } %t264) - br i1 %t265, label %then6813, label %endif6815 -then6813: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t269 = load { ptr, i64, i64 }, ptr %t268 - store { ptr, i64, i64 } { ptr @.str.4396, i64 1, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.4397, i64 43, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t280 = load { ptr, i64, i64 }, ptr %t279 - store { ptr, i64, i64 } %t278, ptr %a282 - store { ptr, i64, i64 } %t280, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4398, i64 10, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif6815 -endif6815: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - %t294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } { ptr @.str.4399, i64 28, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t295, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.4400, i64 1, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - call void @finch.gen.fail(ptr %t292, %S.ast.Node %t293, { ptr, i64, i64 } %t304) - store { ptr, i64, i64 } %t304, ptr %a305 - call void @finch_str_drop(ptr %a305) - br label %endif6812 -endif6812: - %t306 = load ptr, ptr %a1 - %t307 = load i64, ptr %a14 - %t308 = call %S.gen.Var @finch.gen.varAt(ptr %t306, i64 %t307) - store %S.gen.Var %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = load %S.ast.Node, ptr %a2 - %t312 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t313 = load i64, ptr %t312 - %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t318 = load %S.ast.Type, ptr %t317 - %t319 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t318) - store { ptr, i64, i64 } { ptr @.str.4401, i64 9, i64 0 }, ptr %a321 - store { ptr, i64, i64 } %t319, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.4402, i64 1, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t329, ptr %a333 - store { ptr, i64, i64 } %t331, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t329, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.4403, i64 4, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 7 - %t343 = load { ptr, i64, i64 }, ptr %t342 - %t344 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 8 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 9 - %t347 = load i64, ptr %t346 - call void @finch.gen.noteRef(ptr %t310, %S.ast.Node %t311, i64 %t313, i64 %t316, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t343, i64 %t345, i64 %t347) - store { ptr, i64, i64 } %t341, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t350 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 2 - %t351 = load { ptr, i64, i64 }, ptr %t350 - store { ptr, i64, i64 } %t351, ptr %a352 - call void @finch_str_copy(ptr %a353, ptr %a352) - %t354 = load { ptr, i64, i64 }, ptr %a353 - %t355 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t354, 0 - %t356 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t357 = load %S.ast.Type, ptr %t356 - store %S.ast.Type %t357, ptr %a358 - call void @finch.copy.S_ast_Type(ptr %a359, ptr %a358) - %t360 = load %S.ast.Type, ptr %a359 - %t361 = insertvalue %S.gen.Place %t355, %S.ast.Type %t360, 1 - %t362 = insertvalue %S.gen.Ref %t349, %S.gen.Place %t361, 1 - call void @finch.drop.S_gen_Var(ptr %a309) - ret %S.gen.Ref %t362 -endif6733: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4404, i64 6, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then6816, label %endif6818 -then6816: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = load i1, ptr %a3 - %t372 = call %S.gen.Ref @finch.gen.member(ptr %t369, %S.ast.Node %t370, i1 %t371) - ret %S.gen.Ref %t372 -endif6818: - %t373 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t374 = load { ptr, i64, i64 }, ptr %t373 - store { ptr, i64, i64 } %t374, ptr %a375 - store { ptr, i64, i64 } { ptr @.str.4405, i64 5, i64 0 }, ptr %a376 - %t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376) - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %then6819, label %endif6821 -then6819: - %t379 = load ptr, ptr %a1 - %t380 = load %S.ast.Node, ptr %a2 - %t381 = load i1, ptr %a3 - %t382 = call %S.gen.Ref @finch.gen.index(ptr %t379, %S.ast.Node %t380, i1 %t381) - ret %S.gen.Ref %t382 -endif6821: - %t383 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Node, ptr %a2 - %t386 = call %S.gen.Val @finch.gen.expr(ptr %t384, %S.ast.Node %t385) - %t387 = insertvalue %S.gen.Ref %t383, %S.gen.Val %t386, 2 - ret %S.gen.Ref %t387 -} - -define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { -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 - %a21 = 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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.4407, 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 %then6822, label %endif6824 -then6822: - %t13 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4408, 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 - %t18 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t17, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif6824 -endif6824: - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.4410, i64 1, i64 0 }, ptr %a23 - %t24 = call i64 @finch_str_find(ptr %a21, ptr %a23) - %t25 = icmp sge i64 %t24, 0 - %t26 = xor i1 %t25, true - br i1 %t26, label %then6825, label %endif6827 -then6825: - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.4412, i64 1, i64 0 }, ptr %a30 - %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then6828, label %endif6830 -then6828: - %t35 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.4414, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a32 - br label %endif6830 -endif6830: - %t40 = load i64, ptr %a32 - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %then6831, label %endif6833 -then6831: - %t42 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.4415, i64 2, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a43 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t46 -endif6833: - %t47 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t47, ptr %a48 - %t50 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.4416, i64 3776) - %t51 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4417, i64 2, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t57, ptr %a58 - %t60 = load i64, ptr %a32 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t62 = load i64, ptr %t61 - call void @finch_str_sub(ptr %a59, ptr %a58, i64 %t60, i64 %t62, ptr @.str.4418, i64 3776) - %t63 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t56, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t56, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t69 -endif6827: - %t70 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t70 -} - -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.4419, 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.from6834 -logic.from6834: - br i1 %t8, label %logic.rhs6835, label %logic.end6836 -logic.rhs6835: - %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.rend6837 -logic.rend6837: - br label %logic.end6836 -logic.end6836: - %t14 = phi i1 [ false, %logic.from6834 ], [ %t13, %logic.rend6837 ] - br i1 %t14, label %then6838, label %endif6840 -then6838: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6841, label %ok6842 -panic6841: - call void @finch_panic(ptr @.str.4420, i64 3784, ptr @.str.4421) - unreachable -ok6842: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6840: - %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.4422, 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.from6843 -logic.from6843: - br i1 %t28, label %logic.rhs6844, label %logic.end6845 -logic.rhs6844: - %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 %range6846, label %inrange6847 -range6846: - call void @finch_panic_index(ptr @.str.4423, i64 3786, i64 0, i64 %t31) - unreachable -inrange6847: - %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.4424, 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.rend6848 -logic.rend6848: - br label %logic.end6845 -logic.end6845: - %t41 = phi i1 [ false, %logic.from6843 ], [ %t40, %logic.rend6848 ] - br label %logic.from6849 -logic.from6849: - br i1 %t41, label %logic.rhs6850, label %logic.end6851 -logic.rhs6850: - %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 %range6852, label %inrange6853 -range6852: - call void @finch_panic_index(ptr @.str.4425, i64 3786, i64 0, i64 %t45) - unreachable -inrange6853: - %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.rend6854 -logic.rend6854: - br label %logic.end6851 -logic.end6851: - %t53 = phi i1 [ false, %logic.from6849 ], [ %t52, %logic.rend6854 ] - br label %logic.from6855 -logic.from6855: - br i1 %t53, label %logic.rhs6856, label %logic.end6857 -logic.rhs6856: - %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 %range6858, label %inrange6859 -range6858: - call void @finch_panic_index(ptr @.str.4426, i64 3786, i64 0, i64 %t57) - unreachable -inrange6859: - %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.rend6860 -logic.rend6860: - br label %logic.end6857 -logic.end6857: - %t64 = phi i1 [ false, %logic.from6855 ], [ %t63, %logic.rend6860 ] - br i1 %t64, label %then6861, label %endif6863 -then6861: - %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 %range6864, label %inrange6865 -range6864: - call void @finch_panic_index(ptr @.str.4427, i64 3787, i64 0, i64 %t68) - unreachable -inrange6865: - %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 -endif6863: - ret i64 -1 -} - -define internal i64 @finch.gen.sumNamed(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.4428, 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.from6866 -logic.from6866: - br i1 %t8, label %logic.rhs6867, label %logic.end6868 -logic.rhs6867: - %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.rend6869 -logic.rend6869: - br label %logic.end6868 -logic.end6868: - %t14 = phi i1 [ false, %logic.from6866 ], [ %t13, %logic.rend6869 ] - br i1 %t14, label %then6870, label %endif6872 -then6870: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6873, label %ok6874 -panic6873: - call void @finch_panic(ptr @.str.4429, i64 3795, ptr @.str.4430) - unreachable -ok6874: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findSum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6872: - %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.4431, 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.from6875 -logic.from6875: - br i1 %t28, label %logic.rhs6876, label %logic.end6877 -logic.rhs6876: - %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 %range6878, label %inrange6879 -range6878: - call void @finch_panic_index(ptr @.str.4432, i64 3797, i64 0, i64 %t31) - unreachable -inrange6879: - %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.4433, 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.rend6880 -logic.rend6880: - br label %logic.end6877 -logic.end6877: - %t41 = phi i1 [ false, %logic.from6875 ], [ %t40, %logic.rend6880 ] - br label %logic.from6881 -logic.from6881: - br i1 %t41, label %logic.rhs6882, label %logic.end6883 -logic.rhs6882: - %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 %range6884, label %inrange6885 -range6884: - call void @finch_panic_index(ptr @.str.4434, i64 3797, i64 0, i64 %t45) - unreachable -inrange6885: - %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.rend6886 -logic.rend6886: - br label %logic.end6883 -logic.end6883: - %t53 = phi i1 [ false, %logic.from6881 ], [ %t52, %logic.rend6886 ] - br label %logic.from6887 -logic.from6887: - br i1 %t53, label %logic.rhs6888, label %logic.end6889 -logic.rhs6888: - %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 %range6890, label %inrange6891 -range6890: - call void @finch_panic_index(ptr @.str.4435, i64 3797, i64 0, i64 %t57) - unreachable -inrange6891: - %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.rend6892 -logic.rend6892: - br label %logic.end6889 -logic.end6889: - %t64 = phi i1 [ false, %logic.from6887 ], [ %t63, %logic.rend6892 ] - br i1 %t64, label %then6893, label %endif6895 -then6893: - %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 %range6896, label %inrange6897 -range6896: - call void @finch_panic_index(ptr @.str.4436, i64 3798, i64 0, i64 %t68) - unreachable -inrange6897: - %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.findSum(ptr %t65, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75) - ret i64 %t76 -endif6895: - ret i64 -1 -} - -define internal i64 @finch.gen.sumVariant(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a16 = alloca %S.gen.SumDef, align 16 - %a18 = alloca %S.gen.SumDef, 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 - %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 - %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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic6898, label %ok6899 -panic6898: - call void @finch_panic(ptr @.str.4437, i64 3804, ptr @.str.4438) - unreachable -ok6899: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 22 - %t8 = load i64, ptr %a2 - %t9 = load { ptr, i64, i64 }, ptr %t7 - %t10 = extractvalue { ptr, i64, i64 } %t9, 1 - %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range6900, label %inrange6901 -range6900: - call void @finch_panic_index(ptr @.str.4439, i64 3804, i64 %t8, i64 %t10) - unreachable -inrange6901: - %t12 = extractvalue { ptr, i64, i64 } %t9, 0 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %t12, i64 %t8 - %t14 = load %S.gen.SumDef, ptr %t13 - store %S.gen.SumDef %t14, ptr %a15 - call void @finch.copy.S_gen_SumDef(ptr %a16, ptr %a15) - %t17 = load %S.gen.SumDef, ptr %a16 - store %S.gen.SumDef %t17, ptr %a18 - %t19 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %a3 - store i64 -1, ptr %a22 - %t23 = load i64, ptr %t20 - %t24 = load ptr, ptr %t19 - store i64 0, ptr %a25 - br label %find.cond6902 -find.cond6902: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6903, label %find.end6906 -find.body6903: - %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.hit6904, label %find.next6905 -find.hit6904: - store i64 %t26, ptr %a22 - br label %find.end6906 -find.next6905: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6902 -find.end6906: - %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 %then6907, label %endif6909 -then6907: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a4 - %t41 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } { ptr @.str.4440, 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.4441, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.4442, i64 11, i64 0 }, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t57, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - %t63 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4443, i64 2, 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 } %t62, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t62, ptr %a71 - call void @finch_str_drop(ptr %a71) - store { ptr, i64, i64 } %t67, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.4444, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif6909 -endif6909: - %t80 = load i64, ptr %a36 - call void @finch.drop.S_gen_SumDef(ptr %a18) - ret i64 %t80 -} - -define internal %S.gen.Val @finch.gen.sumMake(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.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, align 16 - %a19 = alloca %S.gen.SumDef, align 16 - %a25 = alloca 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca i64, align 16 - %a178 = alloca %S.ast.Node, align 16 - %a179 = alloca %S.ast.Node, 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 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, 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 %panic6910, label %ok6911 -panic6910: - call void @finch_panic(ptr @.str.4445, i64 3814, ptr @.str.4446) - unreachable -ok6911: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 22 - %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 %range6912, label %inrange6913 -range6912: - call void @finch_panic_index(ptr @.str.4447, i64 3814, i64 %t9, i64 %t11) - unreachable -inrange6913: - %t13 = extractvalue { ptr, i64, i64 } %t10, 0 - %t14 = getelementptr inbounds %S.gen.SumDef, ptr %t13, i64 %t9 - %t15 = load %S.gen.SumDef, ptr %t14 - store %S.gen.SumDef %t15, ptr %a16 - call void @finch.copy.S_gen_SumDef(ptr %a17, ptr %a16) - %t18 = load %S.gen.SumDef, ptr %a17 - store %S.gen.SumDef %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = load i64, ptr %a2 - %t22 = load { ptr, i64, i64 }, ptr %a3 - %t23 = load %S.ast.Node, ptr %a5 - %t24 = call i64 @finch.gen.sumVariant(ptr %t20, i64 %t21, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t27 = load i64, ptr %t26 - %t28 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t29 = load i64, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range6914, label %inrange6915 -range6914: - call void @finch_panic_index(ptr @.str.4448, i64 3816, i64 %t29, i64 %t31) - unreachable -inrange6915: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds i64, ptr %t33, i64 %t29 - %t35 = load i64, ptr %t34 - %t36 = icmp ne i64 %t27, %t35 - br i1 %t36, label %then6916, label %endif6918 -then6916: - %t37 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t38 = load i64, ptr %a25 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range6919, label %inrange6920 -range6919: - call void @finch_panic_index(ptr @.str.4449, i64 3817, i64 %t38, i64 %t40) - unreachable -inrange6920: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i64, ptr %t42, i64 %t38 - %t44 = load i64, ptr %t43 - %t45 = icmp eq i64 %t44, 0 - br i1 %t45, label %then6921, label %endif6923 -then6921: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Node, ptr %a5 - %t48 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4450, i64 22, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a49 - %t53 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t52, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t52, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4451, i64 1, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - %t65 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t64, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t64, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.fail(ptr %t46, %S.ast.Node %t47, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif6923 -endif6923: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a5 - %t74 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4452, i64 7, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t80 = load i64, ptr %a25 - %t81 = load { ptr, i64, i64 }, ptr %t79 - %t82 = extractvalue { ptr, i64, i64 } %t81, 1 - %t83 = icmp uge i64 %t80, %t82 - br i1 %t83, label %range6924, label %inrange6925 -range6924: - call void @finch_panic_index(ptr @.str.4453, i64 3820, i64 %t80, i64 %t82) - unreachable -inrange6925: - %t84 = extractvalue { ptr, i64, i64 } %t81, 0 - %t85 = getelementptr inbounds i64, ptr %t84, i64 %t80 - %t86 = load i64, ptr %t85 - call void @finch_str_from_int(ptr %a87, i64 %t86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t78, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t78, ptr %a92 - call void @finch_str_drop(ptr %a92) - store { ptr, i64, i64 } %t88, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4454, i64 19, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t101 = load i64, ptr %t100 - call void @finch_str_from_int(ptr %a102, i64 %t101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t99, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t99, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t103, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4455, i64 2, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - %t115 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t114, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.4456, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4457, i64 5, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.fail(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif6918 -endif6918: - store { ptr, i64, i64 } zeroinitializer, ptr %a139 - store { ptr, i64, i64 } zeroinitializer, ptr %a140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t142 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.4458, i64 3, i64 0 }, 0 - %t143 = load i64, ptr %a25 - call void @finch_str_from_int(ptr %a144, i64 %t143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.ast.Node %t142, { ptr, i64, i64 } %t145, 4 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 11 - %t148 = load i64, ptr %t147 - %t149 = insertvalue %S.ast.Node %t146, i64 %t148, 11 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t151 = load i64, ptr %t150 - %t152 = insertvalue %S.ast.Node %t149, i64 %t151, 12 - %t153 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 13 - %t154 = load i64, ptr %t153 - %t155 = insertvalue %S.ast.Node %t152, i64 %t154, 13 - %t156 = load i64, ptr %t141 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %a139 - %t159 = getelementptr inbounds %S.ast.Node, ptr %t158, i64 %t156 - store %S.ast.Node %t155, ptr %t159 - store i64 %t157, ptr %t141 - %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t161 = load i64, ptr %t160 - %t162 = add i64 %t161, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t162, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t163 = load ptr, ptr %a140 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t161 - store { ptr, i64, i64 } { ptr @.str.4459, i64 3, i64 0 }, ptr %t164 - store i64 %t162, ptr %t160 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t166 = load i64, ptr %t165 - store i64 0, ptr %a167 - br label %for.cond6926 -for.cond6926: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body6927, label %for.end6929 -for.body6927: - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t171 = load i64, ptr %a167 - %t172 = load { ptr, i64, i64 }, ptr %a4 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 %t171, %t173 - br i1 %t174, label %range6930, label %inrange6931 -range6930: - call void @finch_panic_index(ptr @.str.4460, i64 3827, i64 %t171, i64 %t173) - unreachable -inrange6931: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t171 - %t177 = load %S.ast.Node, ptr %t176 - store %S.ast.Node %t177, ptr %a178 - call void @finch.copy.S_ast_Node(ptr %a179, ptr %a178) - %t180 = load %S.ast.Node, ptr %a179 - %t181 = load i64, ptr %t170 - %t182 = add i64 %t181, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t182, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t183 = load ptr, ptr %a139 - %t184 = getelementptr inbounds %S.ast.Node, ptr %t183, i64 %t181 - store %S.ast.Node %t180, ptr %t184 - store i64 %t182, ptr %t170 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t186 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4461, i64 1, 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 %a167 - 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) - store { ptr, i64, i64 } %t190, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a194 - %t200 = load i64, ptr %t185 - %t201 = add i64 %t200, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t201, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t202 = load ptr, ptr %a140 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 %t200 - store { ptr, i64, i64 } %t199, ptr %t203 - store i64 %t201, ptr %t185 - br label %for.step6928 -for.step6928: - %t204 = load i64, ptr %a167 - %t205 = add i64 %t204, 1 - store i64 %t205, ptr %a167 - br label %for.cond6926 -for.end6929: - %t206 = load ptr, ptr %a1 - %t207 = load %S.ast.Node, ptr %a5 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t209 = load i64, ptr %t208 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t211 = load i64, ptr %t210 - %t212 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } { ptr @.str.4462, i64 9, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4463, i64 1, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t222, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t228, ptr %a230 - store { ptr, i64, i64 } { ptr @.str.4464, i64 4, i64 0 }, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t228, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - call void @finch.gen.noteRef(ptr %t206, %S.ast.Node %t207, i64 %t209, i64 %t211, { ptr, i64, i64 } %t233, { ptr, i64, i64 } { ptr @.str.4465, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t233, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load ptr, ptr %a1 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %a139 - %t243 = load { ptr, i64, i64 }, ptr %a140 - %t244 = load %S.ast.Node, ptr %a5 - %t245 = call %S.gen.Val @finch.gen.construct(ptr %t235, i64 %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, %S.ast.Node %t244) - call void @finch.drop.arr_str(ptr %a140) - call void @finch.drop.arr_S_ast_Node(ptr %a139) - call void @finch.drop.S_gen_SumDef(ptr %a19) - ret %S.gen.Val %t245 -} - -define internal %S.gen.SumPat @finch.gen.sumPattern(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.SumDef, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca i64, align 16 - %a124 = alloca %S.ast.Node, align 16 - %a125 = alloca %S.ast.Node, 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 - %a144 = 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 - %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 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %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 i64, align 16 - %a251 = alloca %S.ast.Node, 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 - 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 %panic6932, label %ok6933 -panic6932: - call void @finch_panic(ptr @.str.4466, i64 3836, ptr @.str.4467) - unreachable -ok6933: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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 %range6934, label %inrange6935 -range6934: - call void @finch_panic_index(ptr @.str.4468, i64 3836, i64 %t7, i64 %t9) - unreachable -inrange6935: - %t11 = extractvalue { ptr, i64, i64 } %t8, 0 - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %t11, i64 %t7 - %t13 = load %S.gen.SumDef, ptr %t12 - store %S.gen.SumDef %t13, ptr %a14 - call void @finch.copy.S_gen_SumDef(ptr %a15, ptr %a14) - %t16 = load %S.gen.SumDef, ptr %a15 - store %S.gen.SumDef %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.4469, i64 0, i64 0 }, ptr %a18 - store { ptr, i64, i64 } zeroinitializer, ptr %a19 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - br label %logic.from6936 -logic.from6936: - br i1 %t25, label %logic.rhs6937, label %logic.end6938 -logic.rhs6937: - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = call i64 @finch.gen.lookup(ptr %t26, { ptr, i64, i64 } %t28) - %t30 = icmp slt i64 %t29, 0 - br label %logic.rend6939 -logic.rend6939: - br label %logic.end6938 -logic.end6938: - %t31 = phi i1 [ false, %logic.from6936 ], [ %t30, %logic.rend6939 ] - br i1 %t31, label %then6940, label %else6941 -then6940: - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 - %t37 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t36, ptr %a18 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif6942 -else6941: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.4471, 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 %then6943, label %else6944 -then6943: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t49, ptr %a18 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch.copy.arr_S_ast_Node(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - %t57 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t56, ptr %a19 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch.drop.arr_S_ast_Node(ptr %a58) - br label %endif6945 -else6944: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4472, i64 6, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br label %logic.from6946 -logic.from6946: - br i1 %t64, label %logic.rhs6947, label %logic.end6948 -logic.rhs6947: - %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 %range6949, label %inrange6950 -range6949: - call void @finch_panic_index(ptr @.str.4473, i64 3844, i64 0, i64 %t68) - unreachable -inrange6950: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 0 - %t72 = load %S.ast.Node, ptr %t71 - %t73 = call i64 @finch.gen.sumNamed(ptr %t65, %S.ast.Node %t72) - %t74 = load i64, ptr %a3 - %t75 = icmp eq i64 %t73, %t74 - br label %logic.rend6951 -logic.rend6951: - br label %logic.end6948 -logic.end6948: - %t76 = phi i1 [ false, %logic.from6946 ], [ %t75, %logic.rend6951 ] - br i1 %t76, label %then6952, label %else6953 -then6952: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_copy(ptr %a80, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t81, ptr %a18 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif6954 -else6953: - %t84 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.4474, i64 6, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.from6955 -logic.from6955: - br i1 %t89, label %logic.rhs6956, label %logic.end6957 -logic.rhs6956: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 0, %t93 - br i1 %t94, label %range6958, label %inrange6959 -range6958: - call void @finch_panic_index(ptr @.str.4475, i64 3846, i64 0, i64 %t93) - unreachable -inrange6959: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 0 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i64 @finch.gen.sumNamed(ptr %t90, %S.ast.Node %t97) - %t99 = load i64, ptr %a3 - %t100 = icmp eq i64 %t98, %t99 - br label %logic.rend6960 -logic.rend6960: - br label %logic.end6957 -logic.end6957: - %t101 = phi i1 [ false, %logic.from6955 ], [ %t100, %logic.rend6960 ] - br i1 %t101, label %then6961, label %else6962 -then6961: - %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 - call void @finch_str_copy(ptr %a105, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - %t107 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t106, ptr %a18 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i32 0, i32 1 - %t111 = load i64, ptr %t110 - store i64 1, ptr %a112 - br label %for.cond6964 -for.cond6964: - %t113 = load i64, ptr %a112 - %t114 = icmp slt i64 %t113, %t111 - br i1 %t114, label %for.body6965, label %for.end6967 -for.body6965: - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load i64, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %t116 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 %t117, %t119 - br i1 %t120, label %range6968, label %inrange6969 -range6968: - call void @finch_panic_index(ptr @.str.4476, i64 3849, i64 %t117, i64 %t119) - unreachable -inrange6969: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Node, ptr %t121, i64 %t117 - %t123 = load %S.ast.Node, ptr %t122 - store %S.ast.Node %t123, ptr %a124 - call void @finch.copy.S_ast_Node(ptr %a125, ptr %a124) - %t126 = load %S.ast.Node, ptr %a125 - %t127 = load i64, ptr %t115 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t128, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %a19 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 %t127 - store %S.ast.Node %t126, ptr %t130 - store i64 %t128, ptr %t115 - br label %for.step6966 -for.step6966: - %t131 = load i64, ptr %a112 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %a112 - br label %for.cond6964 -for.end6967: - br label %endif6963 -else6962: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - %t135 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 1 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } { ptr @.str.4477, i64 33, 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.4478, i64 10, i64 0 }, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t140, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 2 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4479, i64 2, i64 0 }, ptr %a148 - call void @finch_str_join(ptr %a149, ptr %t146, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t145, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t145, ptr %a154 - call void @finch_str_drop(ptr %a154) - store { ptr, i64, i64 } %t150, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4480, i64 1, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a162 - call void @finch_str_drop(ptr %a162) - br label %endif6963 -endif6963: - br label %endif6954 -endif6954: - br label %endif6945 -endif6945: - br label %endif6942 -endif6942: - %t163 = load ptr, ptr %a1 - %t164 = load i64, ptr %a3 - %t165 = load { ptr, i64, i64 }, ptr %a18 - %t166 = load %S.ast.Node, ptr %a2 - %t167 = call i64 @finch.gen.sumVariant(ptr %t163, i64 %t164, { ptr, i64, i64 } %t165, %S.ast.Node %t166) - store i64 %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t172 = load i64, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %t171 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 %t172, %t174 - br i1 %t175, label %range6970, label %inrange6971 -range6970: - call void @finch_panic_index(ptr @.str.4481, i64 3855, i64 %t172, i64 %t174) - unreachable -inrange6971: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds i64, ptr %t176, i64 %t172 - %t178 = load i64, ptr %t177 - %t179 = icmp ne i64 %t170, %t178 - br i1 %t179, label %then6972, label %endif6974 -then6972: - %t180 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t181 = load i64, ptr %a168 - %t182 = load { ptr, i64, i64 }, ptr %t180 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 %t181, %t183 - br i1 %t184, label %range6975, label %inrange6976 -range6975: - call void @finch_panic_index(ptr @.str.4482, i64 3856, i64 %t181, i64 %t183) - unreachable -inrange6976: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds i64, ptr %t185, i64 %t181 - %t187 = load i64, ptr %t186 - %t188 = icmp eq i64 %t187, 0 - br i1 %t188, label %then6977, label %endif6979 -then6977: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t191, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.4483, i64 27, i64 0 }, ptr %a194 - call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a192 - %t196 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t195, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t195, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - call void @finch.gen.fail(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t201) - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif6979 -endif6979: - %t203 = load ptr, ptr %a1 - %t204 = load %S.ast.Node, ptr %a2 - %t205 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4484, i64 7, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a206 - %t210 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t211 = load i64, ptr %a168 - %t212 = load { ptr, i64, i64 }, ptr %t210 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range6980, label %inrange6981 -range6980: - call void @finch_panic_index(ptr @.str.4485, i64 3859, i64 %t211, i64 %t213) - unreachable -inrange6981: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds i64, ptr %t215, i64 %t211 - %t217 = load i64, ptr %t216 - call void @finch_str_from_int(ptr %a218, i64 %t217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t209, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - store { ptr, i64, i64 } %t209, ptr %a223 - call void @finch_str_drop(ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t225, ptr %a227 - store { ptr, i64, i64 } { ptr @.str.4486, i64 27, i64 0 }, ptr %a228 - call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) - store { ptr, i64, i64 } %t225, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load { ptr, i64, i64 }, ptr %a226 - %t231 = load { ptr, i64, i64 }, ptr %a18 - 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) - store { ptr, i64, i64 } %t230, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.4487, i64 27, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.fail(ptr %t203, %S.ast.Node %t204, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a242 - call void @finch_str_drop(ptr %a242) - br label %endif6974 -endif6974: - store i64 0, ptr %a243 - br label %each.cond6982 -each.cond6982: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = load i64, ptr %a243 - %t247 = icmp slt i64 %t246, %t245 - br i1 %t247, label %each.body6983, label %each.end6985 -each.body6983: - %t248 = load ptr, ptr %a19 - %t249 = getelementptr inbounds %S.ast.Node, ptr %t248, i64 %t246 - %t250 = load %S.ast.Node, ptr %t249 - store %S.ast.Node %t250, ptr %a251 - %t252 = getelementptr inbounds %S.ast.Node, ptr %a251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4488, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp eq i32 %t256, 0 - br i1 %t257, label %then6986, label %endif6988 -then6986: - %t258 = load ptr, ptr %a1 - %t259 = load %S.ast.Node, ptr %a251 - call void @finch.gen.fail(ptr %t258, %S.ast.Node %t259, { ptr, i64, i64 } { ptr @.str.4489, i64 50, i64 0 }) - br label %endif6988 -endif6988: - br label %each.step6984 -each.step6984: - %t260 = load i64, ptr %a243 - %t261 = add i64 %t260, 1 - store i64 %t261, ptr %a243 - br label %each.cond6982 -each.end6985: - %t262 = load i64, ptr %a168 - %t263 = insertvalue %S.gen.SumPat zeroinitializer, i64 %t262, 0 - %t264 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch.copy.arr_S_ast_Node(ptr %a266, ptr %a265) - %t267 = load { ptr, i64, i64 }, ptr %a266 - %t268 = insertvalue %S.gen.SumPat %t263, { ptr, i64, i64 } %t267, 1 - call void @finch.drop.arr_S_ast_Node(ptr %a19) - call void @finch_str_drop(ptr %a18) - call void @finch.drop.S_gen_SumDef(ptr %a17) - ret %S.gen.SumPat %t268 -} - -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 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6989, label %ok6990 -panic6989: - call void @finch_panic(ptr @.str.4490, i64 3871, ptr @.str.4491) - unreachable -ok6990: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6991, label %inrange6992 -range6991: - call void @finch_panic_index(ptr @.str.4492, i64 3871, i64 %t7, i64 %t9) - unreachable -inrange6992: - %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.cond6993 -find.cond6993: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6994, label %find.end6997 -find.body6994: - %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.hit6995, label %find.next6996 -find.hit6995: - store i64 %t26, ptr %a22 - br label %find.end6997 -find.next6996: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6993 -find.end6997: - %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 %then6998, label %endif7000 -then6998: - %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.4493, 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.4494, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t51, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t51, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4495, i64 11, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4496, i64 2, i64 0 }, ptr %a66 - call void @finch_str_join(ptr %a67, ptr %t64, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4497, i64 1, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif7000 -endif7000: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a2 - %t83 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t84 = load i64, ptr %t83 - %t85 = add i64 %t84, 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t90 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } { ptr @.str.4498, i64 9, i64 0 }, ptr %a92 - store { ptr, i64, i64 } %t90, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4499, i64 1, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t99, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t99, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.4500, i64 3, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t113 = load i64, ptr %a36 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range7001, label %inrange7002 -range7001: - call void @finch_panic_index(ptr @.str.4501, i64 3876, i64 %t113, i64 %t115) - unreachable -inrange7002: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t113 - %t119 = load i64, ptr %t118 - call void @finch_str_from_int(ptr %a120, i64 %t119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t111, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t111, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t127, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.4502, i64 4, i64 0 }, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t127, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - call void @finch.gen.noteRef(ptr %t81, %S.ast.Node %t82, i64 %t85, i64 %t88, { ptr, i64, i64 } %t132, { ptr, i64, i64 } { ptr @.str.4503, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t135 = load i64, ptr %a36 - %t136 = load { ptr, i64, i64 }, ptr %t134 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 %t135, %t137 - br i1 %t138, label %range7003, label %inrange7004 -range7003: - call void @finch_panic_index(ptr @.str.4504, i64 3877, i64 %t135, i64 %t137) - unreachable -inrange7004: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds i64, ptr %t139, i64 %t135 - %t141 = load i64, ptr %t140 - call void @finch_str_from_int(ptr %a142, i64 %t141) - %t143 = load { ptr, i64, i64 }, ptr %a142 - %t144 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t143, 0 - %t145 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4505, i64 4, i64 0 }, 0 - %t146 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - call void @finch_str_copy(ptr %a149, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - %t151 = insertvalue %S.ast.Type %t145, { ptr, i64, i64 } %t150, 2 - %t152 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t153, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = insertvalue %S.ast.Type %t151, { ptr, i64, i64 } %t156, 3 - %t158 = insertvalue %S.gen.Val %t144, %S.ast.Type %t157, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t158 -} - -define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca i1, align 16 - %a13 = alloca i64, align 16 - %a25 = alloca i64, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a157 = alloca %S.gen.Ref, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a170 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a241 = alloca %S.ast.Type, align 16 - %a242 = alloca i1, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca i64, align 16 - %a268 = alloca i64, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca %S.ast.Type, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.ast.Type, align 16 - %a335 = alloca %S.gen.Ref, align 16 - %a337 = alloca %S.ast.Type, align 16 - %a338 = alloca %S.ast.Type, align 16 - %a341 = alloca %S.ast.Type, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = 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 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = 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 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %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 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca %S.ast.Type, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a616 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a671 = 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 - %a692 = alloca %S.gen.StructDef, align 16 - %a693 = alloca %S.gen.StructDef, align 16 - %a695 = alloca %S.gen.StructDef, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca i64, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a726 = 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 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a769 = alloca %S.ast.Type, align 16 - %a771 = alloca %S.ast.Type, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a855 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca %S.ast.Type, align 16 - %a861 = alloca %S.ast.Type, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %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 - %a887 = 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 - %a900 = 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 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a917 = alloca %S.ast.Type, align 16 - %a918 = alloca %S.ast.Type, align 16 - %a921 = alloca %S.gen.Val, align 16 - %a935 = alloca %S.ast.Type, align 16 - %a936 = alloca %S.ast.Type, align 16 - %a941 = alloca %S.gen.Val, align 16 - %a947 = alloca %S.gen.Val, align 16 - %a948 = 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 %range7005, label %inrange7006 -range7005: - call void @finch_panic_index(ptr @.str.4506, i64 3881, i64 0, i64 %t7) - unreachable -inrange7006: - %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.sumNamed(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 %then7007, label %endif7009 -then7007: - %t16 = load i1, ptr %a3 - br i1 %t16, label %then7010, label %endif7012 -then7010: - %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.4507, i64 37, i64 0 }) - br label %endif7012 -endif7012: - %t19 = load ptr, ptr %a1 - %t20 = load i64, ptr %a13 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = load %S.ast.Node, ptr %a2 - %t24 = call i64 @finch.gen.sumVariant(ptr %t19, i64 %t20, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic7013, label %ok7014 -panic7013: - call void @finch_panic(ptr @.str.4508, i64 3887, ptr @.str.4509) - unreachable -ok7014: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 22 - %t29 = load i64, ptr %a13 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range7015, label %inrange7016 -range7015: - call void @finch_panic_index(ptr @.str.4510, i64 3887, i64 %t29, i64 %t31) - unreachable -inrange7016: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.gen.SumDef, ptr %t33, i64 %t29 - %t35 = getelementptr inbounds %S.gen.SumDef, ptr %t34, i32 0, i32 3 - %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 %range7017, label %inrange7018 -range7017: - call void @finch_panic_index(ptr @.str.4511, i64 3887, i64 %t36, i64 %t38) - unreachable -inrange7018: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds i64, ptr %t40, i64 %t36 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then7019, label %endif7021 -then7019: - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Node, ptr %a2 - %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 %a49 - store { ptr, i64, i64 } { ptr @.str.4512, 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 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic7022, label %ok7023 -panic7022: - call void @finch_panic(ptr @.str.4513, i64 3888, ptr @.str.4514) - unreachable -ok7023: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 22 - %t55 = load i64, ptr %a13 - %t56 = load { ptr, i64, i64 }, ptr %t54 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range7024, label %inrange7025 -range7024: - call void @finch_panic_index(ptr @.str.4515, i64 3888, i64 %t55, i64 %t57) - unreachable -inrange7025: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds %S.gen.SumDef, ptr %t59, i64 %t55 - %t61 = getelementptr inbounds %S.gen.SumDef, ptr %t60, i32 0, i32 3 - %t62 = load i64, ptr %a25 - %t63 = load { ptr, i64, i64 }, ptr %t61 - %t64 = extractvalue { ptr, i64, i64 } %t63, 1 - %t65 = icmp uge i64 %t62, %t64 - br i1 %t65, label %range7026, label %inrange7027 -range7026: - call void @finch_panic_index(ptr @.str.4516, i64 3888, i64 %t62, i64 %t64) - unreachable -inrange7027: - %t66 = extractvalue { ptr, i64, i64 } %t63, 0 - %t67 = getelementptr inbounds i64, ptr %t66, i64 %t62 - %t68 = load i64, ptr %t67 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t51, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t51, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4517, i64 11, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = load ptr, ptr %a1 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic7028, label %ok7029 -panic7028: - call void @finch_panic(ptr @.str.4518, i64 3888, ptr @.str.4519) - unreachable -ok7029: - %t84 = getelementptr inbounds %S.gen.Gen, ptr %t82, i32 0, i32 22 - %t85 = load i64, ptr %a13 - %t86 = load { ptr, i64, i64 }, ptr %t84 - %t87 = extractvalue { ptr, i64, i64 } %t86, 1 - %t88 = icmp uge i64 %t85, %t87 - br i1 %t88, label %range7030, label %inrange7031 -range7030: - call void @finch_panic_index(ptr @.str.4520, i64 3888, i64 %t85, i64 %t87) - unreachable -inrange7031: - %t89 = extractvalue { ptr, i64, i64 } %t86, 0 - %t90 = getelementptr inbounds %S.gen.SumDef, ptr %t89, i64 %t85 - %t91 = getelementptr inbounds %S.gen.SumDef, ptr %t90, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t81, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t81, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4521, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4522, i64 5, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - call void @finch.gen.fail(ptr %t44, %S.ast.Node %t45, { ptr, i64, i64 } %t114) - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_drop(ptr %a115) - br label %endif7021 -endif7021: - store { ptr, i64, i64 } zeroinitializer, ptr %a116 - %t117 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a13 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = load { ptr, i64, i64 }, ptr %a116 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = call %S.gen.Val @finch.gen.sumMake(ptr %t118, i64 %t119, { ptr, i64, i64 } %t121, { ptr, i64, i64 } %t122, %S.ast.Node %t123) - %t125 = insertvalue %S.gen.Ref %t117, %S.gen.Val %t124, 2 - call void @finch.drop.arr_S_ast_Node(ptr %a116) - ret %S.gen.Ref %t125 -endif7009: - %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 %range7032, label %inrange7033 -range7032: - call void @finch_panic_index(ptr @.str.4523, i64 3893, i64 0, i64 %t129) - unreachable -inrange7033: - %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 i64 @finch.gen.enumNamed(ptr %t126, %S.ast.Node %t133) - store i64 %t134, ptr %a135 - %t136 = load i64, ptr %a135 - %t137 = icmp sge i64 %t136, 0 - br i1 %t137, label %then7034, label %endif7036 -then7034: - %t138 = load i1, ptr %a3 - br i1 %t138, label %then7037, label %endif7039 -then7037: - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t139, %S.ast.Node %t140, { ptr, i64, i64 } { ptr @.str.4524, i64 37, i64 0 }) - br label %endif7039 -endif7039: - %t141 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Node, ptr %a2 - %t144 = load i64, ptr %a135 - %t145 = call %S.gen.Val @finch.gen.enumValue(ptr %t142, %S.ast.Node %t143, i64 %t144) - %t146 = insertvalue %S.gen.Ref %t141, %S.gen.Val %t145, 2 - ret %S.gen.Ref %t146 -endif7036: - %t147 = load ptr, ptr %a1 - %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 %range7040, label %inrange7041 -range7040: - call void @finch_panic_index(ptr @.str.4525, i64 3900, i64 0, i64 %t150) - unreachable -inrange7041: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 0 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = load i1, ptr %a3 - %t156 = call %S.gen.Ref @finch.gen.ref(ptr %t147, %S.ast.Node %t154, i1 %t155) - store %S.gen.Ref %t156, ptr %a157 - %t158 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t159 = getelementptr inbounds %S.gen.Val, ptr %t158, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - store %S.ast.Type %t163, ptr %a164 - %t165 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t166 = load i1, ptr %t165 - br i1 %t166, label %then7042, label %endif7044 -then7042: - %t167 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t168 = getelementptr inbounds %S.gen.Place, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Type, ptr %t168 - store %S.ast.Type %t169, ptr %a170 - call void @finch.copy.S_ast_Type(ptr %a171, ptr %a170) - %t172 = load %S.ast.Type, ptr %a171 - %t173 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t172, ptr %a164 - store %S.ast.Type %t173, ptr %a174 - call void @finch.drop.S_ast_Type(ptr %a174) - br label %endif7044 -endif7044: - %t175 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t176 = load { ptr, i64, i64 }, ptr %t175 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4526, 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 %then7045, label %endif7047 -then7045: - %t181 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t182 = getelementptr inbounds %S.gen.Val, ptr %t181, i32 0, i32 0 - %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 - store { ptr, i64, i64 } %t186, ptr %a187 - %t188 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t189 = load i1, ptr %t188 - br i1 %t189, label %then7048, label %endif7050 -then7048: - %t190 = load ptr, ptr %a1 - %t191 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t192 = getelementptr inbounds %S.gen.Place, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t190, { ptr, i64, i64 } { ptr @.str.4527, i64 3, i64 0 }, { ptr, i64, i64 } %t193) - %t195 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t194, ptr %a187 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %endif7050 -endif7050: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = icmp eq i64 %t199, 0 - br i1 %t200, label %then7051, label %endif7053 -then7051: - %t201 = load ptr, ptr %a1 - %t202 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t201, %S.ast.Node %t202, { ptr, i64, i64 } { ptr @.str.4528, i64 57, i64 0 }) - br label %endif7053 -endif7053: - %t203 = load ptr, ptr %a1 - %t204 = load ptr, ptr %a1 - %t205 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4529, i64 12, 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.4530, i64 6, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } { ptr @.str.4531, 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 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4532, i64 18, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t203, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t227, %S.ast.Node %t228) - store { ptr, i64, i64 } %t215, ptr %a229 - call void @finch_str_drop(ptr %a229) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = extractvalue { ptr, i64, i64 } %t232, 1 - %t234 = icmp uge i64 0, %t233 - br i1 %t234, label %range7054, label %inrange7055 -range7054: - call void @finch_panic_index(ptr @.str.4533, i64 3914, i64 0, i64 %t233) - unreachable -inrange7055: - %t235 = extractvalue { ptr, i64, i64 } %t232, 0 - %t236 = getelementptr inbounds %S.ast.Type, ptr %t235, i64 0 - %t237 = load %S.ast.Type, ptr %t236 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - store %S.ast.Type %t240, ptr %a241 - store i1 false, ptr %a242 - %t243 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.4534, i64 6, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then7056, label %endif7058 -then7056: - %t249 = load ptr, ptr %a1 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic7059, label %ok7060 -panic7059: - call void @finch_panic(ptr @.str.4535, i64 3917, ptr @.str.4536) - unreachable -ok7060: - %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 16 - %t252 = load ptr, ptr %a1 - %t253 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 3 - %t254 = load { ptr, i64, i64 }, ptr %t253 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 2 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = call i64 @finch.gen.findStruct(ptr %t252, { ptr, i64, i64 } %t254, { ptr, i64, i64 } %t256) - %t258 = load { ptr, i64, i64 }, ptr %t251 - %t259 = extractvalue { ptr, i64, i64 } %t258, 1 - %t260 = icmp uge i64 %t257, %t259 - br i1 %t260, label %range7061, label %inrange7062 -range7061: - call void @finch_panic_index(ptr @.str.4537, i64 3917, i64 %t257, i64 %t259) - unreachable -inrange7062: - %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 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - store i64 -1, ptr %a265 - %t266 = load i64, ptr %t264 - %t267 = load ptr, ptr %t263 - store i64 0, ptr %a268 - br label %find.cond7063 -find.cond7063: - %t269 = load i64, ptr %a268 - %t270 = icmp slt i64 %t269, %t266 - br i1 %t270, label %find.body7064, label %find.end7067 -find.body7064: - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i64 %t269 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.4538, i64 5, i64 0 }, ptr %a274 - %t275 = call i32 @finch_str_eq(ptr %a273, ptr %a274) - %t276 = icmp ne i32 %t275, 0 - br i1 %t276, label %find.hit7065, label %find.next7066 -find.hit7065: - store i64 %t269, ptr %a265 - br label %find.end7067 -find.next7066: - %t277 = add i64 %t269, 1 - store i64 %t277, ptr %a268 - br label %find.cond7063 -find.end7067: - %t278 = load i64, ptr %a265 - %t279 = icmp sge i64 %t278, 0 - store i1 %t279, ptr %a242 - br label %endif7058 -endif7058: - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4539, 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.from7068 -logic.from7068: - br i1 %t285, label %logic.rhs7069, label %logic.end7070 -logic.rhs7069: - %t286 = load i1, ptr %a242 - %t287 = xor i1 %t286, true - br label %logic.rend7071 -logic.rend7071: - br label %logic.end7070 -logic.end7070: - %t288 = phi i1 [ false, %logic.from7068 ], [ %t287, %logic.rend7071 ] - br i1 %t288, label %then7072, label %endif7074 -then7072: - %t289 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t290 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t295, ptr %a296 - call void @finch.copy.S_ast_Type(ptr %a297, ptr %a296) - %t298 = load %S.ast.Type, ptr %a297 - %t299 = insertvalue %S.gen.Place %t294, %S.ast.Type %t298, 1 - %t300 = insertvalue %S.gen.Ref %t289, %S.gen.Place %t299, 1 - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t300 -endif7074: - %t301 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.4540, i64 6, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp eq i32 %t305, 0 - br i1 %t306, label %then7075, label %endif7077 -then7075: - %t307 = load ptr, ptr %a1 - %t308 = load %S.ast.Node, ptr %a2 - %t309 = load %S.ast.Type, ptr %a164 - %t310 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t309) - store { ptr, i64, i64 } { ptr @.str.4541, i64 2, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4542, i64 43, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - call void @finch.gen.fail(ptr %t307, %S.ast.Node %t308, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_drop(ptr %a321) - br label %endif7077 -endif7077: - %t322 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t323 = load { ptr, i64, i64 }, ptr %a187 - 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.gen.Place zeroinitializer, { ptr, i64, i64 } %t326, 0 - %t328 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t328, ptr %a329 - call void @finch.copy.S_ast_Type(ptr %a330, ptr %a329) - %t331 = load %S.ast.Type, ptr %a330 - %t332 = insertvalue %S.gen.Place %t327, %S.ast.Type %t331, 1 - %t333 = insertvalue %S.gen.Ref %t322, %S.gen.Place %t332, 1 - %t334 = load %S.gen.Ref, ptr %a157 - store %S.gen.Ref %t333, ptr %a157 - store %S.gen.Ref %t334, ptr %a335 - call void @finch.drop.S_gen_Ref(ptr %a335) - %t336 = load %S.ast.Type, ptr %a241 - 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 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t339, ptr %a164 - store %S.ast.Type %t340, ptr %a341 - call void @finch.drop.S_ast_Type(ptr %a341) - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - br label %endif7047 -endif7047: - %t342 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.4543, i64 5, i64 0 }, ptr %a345 - %t346 = call i32 @finch_str_eq(ptr %a344, ptr %a345) - %t347 = icmp ne i32 %t346, 0 - br i1 %t347, label %then7078, label %endif7080 -then7078: - %t348 = load i1, ptr %a3 - br i1 %t348, label %then7081, label %endif7083 -then7081: - %t349 = load ptr, ptr %a1 - %t350 = load %S.ast.Node, ptr %a2 - %t351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t352 = load { ptr, i64, i64 }, ptr %t351 - store { ptr, i64, i64 } { ptr @.str.4544, i64 1, 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.4545, i64 26, i64 0 }, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t356, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - call void @finch.gen.fail(ptr %t349, %S.ast.Node %t350, { ptr, i64, i64 } %t361) - store { ptr, i64, i64 } %t361, ptr %a362 - call void @finch_str_drop(ptr %a362) - br label %endif7083 -endif7083: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4546, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then7084, label %endif7086 -then7084: - %t369 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t370 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 4 - %t371 = load i64, ptr %t370 - call void @finch_str_from_int(ptr %a372, i64 %t371) - %t373 = load { ptr, i64, i64 }, ptr %a372 - %t374 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t373, 0 - %t375 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4547, i64 3, i64 0 }) - %t376 = insertvalue %S.gen.Val %t374, %S.ast.Type %t375, 1 - %t377 = insertvalue %S.gen.Val %t376, i1 true, 3 - %t378 = insertvalue %S.gen.Ref %t369, %S.gen.Val %t377, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t378 -endif7086: - %t379 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t380 = load { ptr, i64, i64 }, ptr %t379 - store { ptr, i64, i64 } %t380, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.4548, i64 3, i64 0 }, ptr %a382 - %t383 = call i32 @finch_str_eq(ptr %a381, ptr %a382) - %t384 = icmp eq i32 %t383, 0 - br i1 %t384, label %then7087, label %endif7089 -then7087: - %t385 = load ptr, ptr %a1 - %t386 = load %S.ast.Node, ptr %a2 - %t387 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t388 = load { ptr, i64, i64 }, ptr %t387 - store { ptr, i64, i64 } { ptr @.str.4549, i64 34, 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.4550, i64 1, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.fail(ptr %t385, %S.ast.Node %t386, { ptr, i64, i64 } %t397) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - br label %endif7089 -endif7089: - %t399 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t400 = load i1, ptr %t399 - %t401 = xor i1 %t400, true - br i1 %t401, label %then7090, label %endif7092 -then7090: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4551, i64 48, i64 0 }) - br label %endif7092 -endif7092: - %t404 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t405 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t406 = getelementptr inbounds %S.gen.Place, ptr %t405, i32 0, i32 0 - %t407 = load { ptr, i64, i64 }, ptr %t406 - store { ptr, i64, i64 } %t407, ptr %a408 - call void @finch_str_copy(ptr %a409, ptr %a408) - %t410 = load { ptr, i64, i64 }, ptr %a409 - %t411 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t410, 0 - %t412 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t413 = load { ptr, i64, i64 }, ptr %t412 - %t414 = extractvalue { ptr, i64, i64 } %t413, 1 - %t415 = icmp uge i64 0, %t414 - br i1 %t415, label %range7093, label %inrange7094 -range7093: - call void @finch_panic_index(ptr @.str.4552, i64 3941, i64 0, i64 %t414) - unreachable -inrange7094: - %t416 = extractvalue { ptr, i64, i64 } %t413, 0 - %t417 = getelementptr inbounds %S.ast.Type, ptr %t416, i64 0 - %t418 = load %S.ast.Type, ptr %t417 - %t419 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val %t411, %S.ast.Type %t419, 1 - %t421 = insertvalue %S.gen.Ref %t404, %S.gen.Val %t420, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t421 -endif7080: - %t422 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t423 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t423, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.4553, i64 5, i64 0 }, ptr %a425 - %t426 = call i32 @finch_str_eq(ptr %a424, ptr %a425) - %t427 = icmp ne i32 %t426, 0 - br label %logic.from7095 -logic.from7095: - br i1 %t427, label %logic.end7097, label %logic.rhs7096 -logic.rhs7096: - %t428 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.4554, i64 3, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.rend7098 -logic.rend7098: - br label %logic.end7097 -logic.end7097: - %t434 = phi i1 [ true, %logic.from7095 ], [ %t433, %logic.rend7098 ] - br label %logic.from7099 -logic.from7099: - br i1 %t434, label %logic.rhs7100, label %logic.end7101 -logic.rhs7100: - %t435 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t436, ptr %a437 - store { ptr, i64, i64 } { ptr @.str.4555, i64 3, i64 0 }, ptr %a438 - %t439 = call i32 @finch_str_eq(ptr %a437, ptr %a438) - %t440 = icmp ne i32 %t439, 0 - br label %logic.rend7102 -logic.rend7102: - br label %logic.end7101 -logic.end7101: - %t441 = phi i1 [ false, %logic.from7099 ], [ %t440, %logic.rend7102 ] - br i1 %t441, label %then7103, label %endif7105 -then7103: - %t442 = load i1, ptr %a3 - br i1 %t442, label %then7106, label %endif7108 -then7106: - %t443 = load ptr, ptr %a1 - %t444 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t443, %S.ast.Node %t444, { ptr, i64, i64 } { ptr @.str.4556, i64 30, i64 0 }) - br label %endif7108 -endif7108: - %t445 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t446 = load i1, ptr %t445 - %t447 = xor i1 %t446, true - br label %logic.from7109 -logic.from7109: - br i1 %t447, label %logic.rhs7110, label %logic.end7111 -logic.rhs7110: - %t448 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t449 = getelementptr inbounds %S.gen.Val, ptr %t448, i32 0, i32 2 - %t450 = load i1, ptr %t449 - br label %logic.rend7112 -logic.rend7112: - br label %logic.end7111 -logic.end7111: - %t451 = phi i1 [ false, %logic.from7109 ], [ %t450, %logic.rend7112 ] - br label %logic.from7113 -logic.from7113: - br i1 %t451, label %logic.rhs7114, label %logic.end7115 -logic.rhs7114: - %t452 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t453 = getelementptr inbounds %S.gen.Val, ptr %t452, i32 0, i32 0 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.4558, i64 1, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_starts(ptr %a455, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend7116 -logic.rend7116: - br label %logic.end7115 -logic.end7115: - %t460 = phi i1 [ false, %logic.from7113 ], [ %t459, %logic.rend7116 ] - br i1 %t460, label %then7117, label %endif7119 -then7117: - %t461 = load ptr, ptr %a1 - %t462 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t461, %S.ast.Node %t462, { ptr, i64, i64 } { ptr @.str.4559, i64 53, i64 0 }) - br label %endif7119 -endif7119: - %t463 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t464 = getelementptr inbounds %S.gen.Val, ptr %t463, i32 0, i32 0 - %t465 = load { ptr, i64, i64 }, ptr %t464 - store { ptr, i64, i64 } %t465, ptr %a466 - call void @finch_str_copy(ptr %a467, ptr %a466) - %t468 = load { ptr, i64, i64 }, ptr %a467 - store { ptr, i64, i64 } %t468, ptr %a469 - %t470 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t471 = load i1, ptr %t470 - br i1 %t471, label %then7120, label %endif7122 -then7120: - %t472 = load ptr, ptr %a1 - %t473 = load ptr, ptr %a1 - %t474 = load %S.ast.Type, ptr %a164 - %t475 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t473, %S.ast.Type %t474) - %t476 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t477 = getelementptr inbounds %S.gen.Place, ptr %t476, i32 0, i32 0 - %t478 = load { ptr, i64, i64 }, ptr %t477 - %t479 = call { ptr, i64, i64 } @finch.gen.load(ptr %t472, { ptr, i64, i64 } %t475, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t475, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t479, ptr %a469 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif7122 -endif7122: - %t483 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - store { ptr, i64, i64 } %t484, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.4560, i64 3, i64 0 }, ptr %a486 - %t487 = call i32 @finch_str_eq(ptr %a485, ptr %a486) - %t488 = icmp ne i32 %t487, 0 - br i1 %t488, label %then7123, label %endif7125 -then7123: - %t489 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t490 = load ptr, ptr %a1 - %t491 = load { ptr, i64, i64 }, ptr %a469 - %t492 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t490, { ptr, i64, i64 } %t491) - %t493 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t492, 0 - %t494 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4561, i64 4, i64 0 }) - %t495 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t494) - store %S.ast.Type %t494, ptr %a496 - call void @finch.drop.S_ast_Type(ptr %a496) - %t497 = insertvalue %S.gen.Val %t493, %S.ast.Type %t495, 1 - %t498 = insertvalue %S.gen.Ref %t489, %S.gen.Val %t497, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t498 -endif7125: - %t499 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t500 = load ptr, ptr %a1 - %t501 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4562, i64 31, i64 0 }, 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.4563, i64 3, i64 0 }, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t505, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - %t511 = call { ptr, i64, i64 } @finch.gen.op(ptr %t500, { ptr, i64, i64 } %t510) - store { ptr, i64, i64 } %t510, ptr %a512 - call void @finch_str_drop(ptr %a512) - %t513 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t511, 0 - %t514 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range7126, label %inrange7127 -range7126: - call void @finch_panic_index(ptr @.str.4564, i64 3959, i64 0, i64 %t516) - unreachable -inrange7127: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = load %S.ast.Type, ptr %t519 - %t521 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t520) - %t522 = insertvalue %S.gen.Val %t513, %S.ast.Type %t521, 1 - %t523 = insertvalue %S.gen.Ref %t499, %S.gen.Val %t522, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t523 -endif7105: - %t524 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.4565, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br label %logic.from7128 -logic.from7128: - br i1 %t529, label %logic.end7130, label %logic.rhs7129 -logic.rhs7129: - %t530 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t531 = load { ptr, i64, i64 }, ptr %t530 - store { ptr, i64, i64 } %t531, ptr %a532 - store { ptr, i64, i64 } { ptr @.str.4566, i64 3, i64 0 }, ptr %a533 - %t534 = call i32 @finch_str_eq(ptr %a532, ptr %a533) - %t535 = icmp ne i32 %t534, 0 - br label %logic.rend7131 -logic.rend7131: - br label %logic.end7130 -logic.end7130: - %t536 = phi i1 [ true, %logic.from7128 ], [ %t535, %logic.rend7131 ] - br label %logic.from7132 -logic.from7132: - br i1 %t536, label %logic.end7134, label %logic.rhs7133 -logic.rhs7133: - %t537 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.4567, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br label %logic.rend7135 -logic.rend7135: - br label %logic.end7134 -logic.end7134: - %t543 = phi i1 [ true, %logic.from7132 ], [ %t542, %logic.rend7135 ] - br i1 %t543, label %then7136, label %endif7138 -then7136: - %t544 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t545, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.4568, i64 3, i64 0 }, ptr %a547 - %t548 = call i32 @finch_str_eq(ptr %a546, ptr %a547) - %t549 = icmp eq i32 %t548, 0 - br i1 %t549, label %then7139, label %endif7141 -then7139: - %t550 = load ptr, ptr %a1 - %t551 = load %S.ast.Node, ptr %a2 - %t552 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t553 = load { ptr, i64, i64 }, ptr %t552 - store { ptr, i64, i64 } { ptr @.str.4569, i64 37, i64 0 }, ptr %a555 - store { ptr, i64, i64 } %t553, ptr %a556 - call void @finch_str_concat(ptr %a554, ptr %a555, ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t557, ptr %a559 - store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.gen.fail(ptr %t550, %S.ast.Node %t551, { ptr, i64, i64 } %t562) - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif7141 -endif7141: - %t564 = load i1, ptr %a3 - br i1 %t564, label %then7142, label %endif7144 -then7142: - %t565 = load ptr, ptr %a1 - %t566 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t565, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.4571, i64 48, i64 0 }) - br label %endif7144 -endif7144: - %t567 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t568 = load i1, ptr %t567 - br i1 %t568, label %then7145, label %endif7147 -then7145: - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a164 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - store { ptr, i64, i64 } { ptr @.str.4572, i64 23, i64 0 }, ptr %a574 - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - store { ptr, i64, i64 } %t577, ptr %a579 - store { ptr, i64, i64 } { ptr @.str.4573, i64 6, i64 0 }, ptr %a580 - call void @finch_str_concat(ptr %a578, ptr %a579, ptr %a580) - store { ptr, i64, i64 } %t577, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = load { ptr, i64, i64 }, ptr %a578 - %t583 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t584 = getelementptr inbounds %S.gen.Place, ptr %t583, i32 0, i32 0 - %t585 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t582, ptr %a587 - store { ptr, i64, i64 } %t585, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t582, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - store { ptr, i64, i64 } %t590, ptr %a592 - store { ptr, i64, i64 } { ptr @.str.4574, i64 14, i64 0 }, ptr %a593 - call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) - store { ptr, i64, i64 } %t590, ptr %a594 - call void @finch_str_drop(ptr %a594) - %t595 = load { ptr, i64, i64 }, ptr %a591 - %t596 = call { ptr, i64, i64 } @finch.gen.op(ptr %t569, { ptr, i64, i64 } %t595) - store { ptr, i64, i64 } %t595, ptr %a597 - call void @finch_str_drop(ptr %a597) - store { ptr, i64, i64 } %t596, ptr %a598 - %t599 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t600 = load ptr, ptr %a1 - %t601 = load { ptr, i64, i64 }, ptr %a598 - %t602 = call { ptr, i64, i64 } @finch.gen.load(ptr %t600, { ptr, i64, i64 } { ptr @.str.4575, i64 3, i64 0 }, { ptr, i64, i64 } %t601) - %t603 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t602, 0 - %t604 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4576, i64 3, i64 0 }) - %t605 = insertvalue %S.gen.Val %t603, %S.ast.Type %t604, 1 - %t606 = insertvalue %S.gen.Ref %t599, %S.gen.Val %t605, 2 - call void @finch_str_drop(ptr %a598) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t606 -endif7147: - %t607 = load ptr, ptr %a1 - %t608 = load ptr, ptr %a1 - %t609 = load %S.ast.Type, ptr %a164 - %t610 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t608, %S.ast.Type %t609) - store { ptr, i64, i64 } { ptr @.str.4577, i64 13, i64 0 }, ptr %a612 - store { ptr, i64, i64 } %t610, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - store { ptr, i64, i64 } %t615, ptr %a617 - store { ptr, i64, i64 } { ptr @.str.4578, i64 1, i64 0 }, ptr %a618 - call void @finch_str_concat(ptr %a616, ptr %a617, ptr %a618) - store { ptr, i64, i64 } %t615, ptr %a619 - call void @finch_str_drop(ptr %a619) - %t620 = load { ptr, i64, i64 }, ptr %a616 - %t621 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t622 = getelementptr inbounds %S.gen.Val, ptr %t621, i32 0, i32 0 - %t623 = load { ptr, i64, i64 }, ptr %t622 - store { ptr, i64, i64 } %t620, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t620, ptr %a627 - call void @finch_str_drop(ptr %a627) - %t628 = load { ptr, i64, i64 }, ptr %a624 - store { ptr, i64, i64 } %t628, ptr %a630 - store { ptr, i64, i64 } { ptr @.str.4579, i64 3, i64 0 }, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t628, ptr %a632 - call void @finch_str_drop(ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a629 - %t634 = call { ptr, i64, i64 } @finch.gen.op(ptr %t607, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t633, ptr %a635 - call void @finch_str_drop(ptr %a635) - store { ptr, i64, i64 } %t634, ptr %a636 - %t637 = load ptr, ptr %a1 - %t638 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t639 = load %S.gen.Val, ptr %t638 - call void @finch.gen.release(ptr %t637, %S.gen.Val %t639) - %t640 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t641 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t641, ptr %a642 - call void @finch_str_copy(ptr %a643, ptr %a642) - %t644 = load { ptr, i64, i64 }, ptr %a643 - %t645 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t644, 0 - %t646 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4580, i64 3, i64 0 }) - %t647 = insertvalue %S.gen.Val %t645, %S.ast.Type %t646, 1 - %t648 = insertvalue %S.gen.Ref %t640, %S.gen.Val %t647, 2 - call void @finch_str_drop(ptr %a636) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t648 -endif7138: - %t649 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t650 = load { ptr, i64, i64 }, ptr %t649 - store { ptr, i64, i64 } %t650, ptr %a651 - store { ptr, i64, i64 } { ptr @.str.4581, i64 6, i64 0 }, ptr %a652 - %t653 = call i32 @finch_str_eq(ptr %a651, ptr %a652) - %t654 = icmp eq i32 %t653, 0 - br i1 %t654, label %then7148, label %endif7150 -then7148: - %t655 = load ptr, ptr %a1 - %t656 = load %S.ast.Node, ptr %a2 - %t657 = load %S.ast.Type, ptr %a164 - %t658 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t657) - store { ptr, i64, i64 } %t658, ptr %a660 - store { ptr, i64, i64 } { ptr @.str.4582, i64 21, i64 0 }, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t658, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - %t664 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } %t663, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t663, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t670, ptr %a672 - store { ptr, i64, i64 } { ptr @.str.4583, i64 2, i64 0 }, ptr %a673 - call void @finch_str_concat(ptr %a671, ptr %a672, ptr %a673) - store { ptr, i64, i64 } %t670, ptr %a674 - call void @finch_str_drop(ptr %a674) - %t675 = load { ptr, i64, i64 }, ptr %a671 - call void @finch.gen.fail(ptr %t655, %S.ast.Node %t656, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t675, ptr %a676 - call void @finch_str_drop(ptr %a676) - br label %endif7150 -endif7150: - %t677 = load ptr, ptr %a1 - %t678 = icmp eq ptr %t677, null - br i1 %t678, label %panic7151, label %ok7152 -panic7151: - call void @finch_panic(ptr @.str.4584, i64 3979, ptr @.str.4585) - unreachable -ok7152: - %t679 = getelementptr inbounds %S.gen.Gen, ptr %t677, i32 0, i32 16 - %t680 = load ptr, ptr %a1 - %t681 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 3 - %t682 = load { ptr, i64, i64 }, ptr %t681 - %t683 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 2 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findStruct(ptr %t680, { ptr, i64, i64 } %t682, { ptr, i64, i64 } %t684) - %t686 = load { ptr, i64, i64 }, ptr %t679 - %t687 = extractvalue { ptr, i64, i64 } %t686, 1 - %t688 = icmp uge i64 %t685, %t687 - br i1 %t688, label %range7153, label %inrange7154 -range7153: - call void @finch_panic_index(ptr @.str.4586, i64 3979, i64 %t685, i64 %t687) - unreachable -inrange7154: - %t689 = extractvalue { ptr, i64, i64 } %t686, 0 - %t690 = getelementptr inbounds %S.gen.StructDef, ptr %t689, i64 %t685 - %t691 = load %S.gen.StructDef, ptr %t690 - store %S.gen.StructDef %t691, ptr %a692 - call void @finch.copy.S_gen_StructDef(ptr %a693, ptr %a692) - %t694 = load %S.gen.StructDef, ptr %a693 - store %S.gen.StructDef %t694, ptr %a695 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t697 = getelementptr inbounds { ptr, i64, i64 }, ptr %t696, i32 0, i32 1 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t697 - %t702 = load ptr, ptr %t696 - store i64 0, ptr %a703 - br label %find.cond7155 -find.cond7155: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body7156, label %find.end7159 -find.body7156: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit7157, label %find.next7158 -find.hit7157: - store i64 %t704, ptr %a700 - br label %find.end7159 -find.next7158: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond7155 -find.end7159: - %t713 = load i64, ptr %a700 - store i64 %t713, ptr %a714 - %t715 = load i64, ptr %a714 - %t716 = icmp slt i64 %t715, 0 - br i1 %t716, label %then7160, label %endif7162 -then7160: - %t717 = load ptr, ptr %a1 - %t718 = load %S.ast.Node, ptr %a2 - %t719 = load %S.ast.Type, ptr %a164 - %t720 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t719) - store { ptr, i64, i64 } { ptr @.str.4587, i64 11, i64 0 }, ptr %a722 - store { ptr, i64, i64 } %t720, ptr %a723 - call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723) - store { ptr, i64, i64 } %t720, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t725, ptr %a727 - store { ptr, i64, i64 } { ptr @.str.4588, i64 15, i64 0 }, ptr %a728 - call void @finch_str_concat(ptr %a726, ptr %a727, ptr %a728) - store { ptr, i64, i64 } %t725, ptr %a729 - call void @finch_str_drop(ptr %a729) - %t730 = load { ptr, i64, i64 }, ptr %a726 - %t731 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t730, ptr %a734 - store { ptr, i64, i64 } %t732, ptr %a735 - call void @finch_str_concat(ptr %a733, ptr %a734, ptr %a735) - store { ptr, i64, i64 } %t730, ptr %a736 - call void @finch_str_drop(ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a733 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.4589, i64 11, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t744 = getelementptr inbounds { ptr, i64, i64 }, ptr %t743, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4590, i64 2, i64 0 }, ptr %a745 - call void @finch_str_join(ptr %a746, ptr %t743, ptr %a745) - %t747 = load { ptr, i64, i64 }, ptr %a746 - store { ptr, i64, i64 } %t742, ptr %a749 - store { ptr, i64, i64 } %t747, ptr %a750 - call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750) - store { ptr, i64, i64 } %t742, ptr %a751 - call void @finch_str_drop(ptr %a751) - store { ptr, i64, i64 } %t747, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a748 - store { ptr, i64, i64 } %t753, ptr %a755 - store { ptr, i64, i64 } { ptr @.str.4591, i64 1, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - call void @finch.gen.fail(ptr %t717, %S.ast.Node %t718, { ptr, i64, i64 } %t758) - store { ptr, i64, i64 } %t758, ptr %a759 - call void @finch_str_drop(ptr %a759) - br label %endif7162 -endif7162: - %t760 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 12 - %t761 = load i64, ptr %a714 - %t762 = load { ptr, i64, i64 }, ptr %t760 - %t763 = extractvalue { ptr, i64, i64 } %t762, 1 - %t764 = icmp uge i64 %t761, %t763 - br i1 %t764, label %range7163, label %inrange7164 -range7163: - call void @finch_panic_index(ptr @.str.4592, i64 3984, i64 %t761, i64 %t763) - unreachable -inrange7164: - %t765 = extractvalue { ptr, i64, i64 } %t762, 0 - %t766 = getelementptr inbounds %S.ast.Type, ptr %t765, i64 %t761 - %t767 = load %S.ast.Type, ptr %t766 - store %S.ast.Type %t767, ptr %a768 - call void @finch.copy.S_ast_Type(ptr %a769, ptr %a768) - %t770 = load %S.ast.Type, ptr %a769 - store %S.ast.Type %t770, ptr %a771 - %t772 = load ptr, ptr %a1 - %t773 = load %S.ast.Node, ptr %a2 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t775 = load i64, ptr %t774 - %t776 = add i64 %t775, 1 - %t777 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t778 = getelementptr inbounds { ptr, i64, i64 }, ptr %t777, i32 0, i32 1 - %t779 = load i64, ptr %t778 - %t780 = load %S.ast.Type, ptr %a771 - %t781 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t780) - store { ptr, i64, i64 } { ptr @.str.4593, i64 9, i64 0 }, ptr %a783 - store { ptr, i64, i64 } %t781, ptr %a784 - call void @finch_str_concat(ptr %a782, ptr %a783, ptr %a784) - store { ptr, i64, i64 } %t781, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a782 - store { ptr, i64, i64 } %t786, ptr %a788 - store { ptr, i64, i64 } { ptr @.str.4594, i64 1, i64 0 }, ptr %a789 - call void @finch_str_concat(ptr %a787, ptr %a788, ptr %a789) - store { ptr, i64, i64 } %t786, ptr %a790 - call void @finch_str_drop(ptr %a790) - %t791 = load { ptr, i64, i64 }, ptr %a787 - %t792 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t793 = load { ptr, i64, i64 }, ptr %t792 - store { ptr, i64, i64 } %t791, ptr %a795 - store { ptr, i64, i64 } %t793, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t791, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - store { ptr, i64, i64 } %t798, ptr %a800 - store { ptr, i64, i64 } { ptr @.str.4595, i64 4, i64 0 }, ptr %a801 - call void @finch_str_concat(ptr %a799, ptr %a800, ptr %a801) - store { ptr, i64, i64 } %t798, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a799 - call void @finch.gen.noteRef(ptr %t772, %S.ast.Node %t773, i64 %t776, i64 %t779, { ptr, i64, i64 } %t803, { ptr, i64, i64 } { ptr @.str.4596, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t803, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t806 = load i1, ptr %t805 - br i1 %t806, label %then7165, label %endif7167 -then7165: - %t807 = load ptr, ptr %a1 - %t808 = load ptr, ptr %a1 - %t809 = load %S.ast.Type, ptr %a164 - %t810 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t808, %S.ast.Type %t809) - store { ptr, i64, i64 } { ptr @.str.4597, i64 23, i64 0 }, ptr %a812 - store { ptr, i64, i64 } %t810, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - store { ptr, i64, i64 } %t815, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.4598, i64 6, i64 0 }, ptr %a818 - call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818) - store { ptr, i64, i64 } %t815, ptr %a819 - call void @finch_str_drop(ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a816 - %t821 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t822 = getelementptr inbounds %S.gen.Place, ptr %t821, i32 0, i32 0 - %t823 = load { ptr, i64, i64 }, ptr %t822 - store { ptr, i64, i64 } %t820, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t820, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.4599, i64 13, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t835 = load i64, ptr %a714 - %t836 = load { ptr, i64, i64 }, ptr %t834 - %t837 = extractvalue { ptr, i64, i64 } %t836, 1 - %t838 = icmp uge i64 %t835, %t837 - br i1 %t838, label %range7168, label %inrange7169 -range7168: - call void @finch_panic_index(ptr @.str.4600, i64 3987, i64 %t835, i64 %t837) - unreachable -inrange7169: - %t839 = extractvalue { ptr, i64, i64 } %t836, 0 - %t840 = getelementptr inbounds i64, ptr %t839, i64 %t835 - %t841 = load i64, ptr %t840 - call void @finch_str_from_int(ptr %a842, i64 %t841) - %t843 = load { ptr, i64, i64 }, ptr %a842 - store { ptr, i64, i64 } %t833, ptr %a845 - store { ptr, i64, i64 } %t843, ptr %a846 - call void @finch_str_concat(ptr %a844, ptr %a845, ptr %a846) - store { ptr, i64, i64 } %t833, ptr %a847 - call void @finch_str_drop(ptr %a847) - store { ptr, i64, i64 } %t843, ptr %a848 - call void @finch_str_drop(ptr %a848) - %t849 = load { ptr, i64, i64 }, ptr %a844 - %t850 = call { ptr, i64, i64 } @finch.gen.op(ptr %t807, { ptr, i64, i64 } %t849) - store { ptr, i64, i64 } %t849, ptr %a851 - call void @finch_str_drop(ptr %a851) - store { ptr, i64, i64 } %t850, ptr %a852 - %t853 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t854 = load { ptr, i64, i64 }, ptr %a852 - store { ptr, i64, i64 } %t854, ptr %a855 - call void @finch_str_copy(ptr %a856, ptr %a855) - %t857 = load { ptr, i64, i64 }, ptr %a856 - %t858 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t857, 0 - %t859 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t859, ptr %a860 - call void @finch.copy.S_ast_Type(ptr %a861, ptr %a860) - %t862 = load %S.ast.Type, ptr %a861 - %t863 = insertvalue %S.gen.Place %t858, %S.ast.Type %t862, 1 - %t864 = insertvalue %S.gen.Ref %t853, %S.gen.Place %t863, 1 - call void @finch_str_drop(ptr %a852) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t864 -endif7167: - %t865 = load ptr, ptr %a1 - %t866 = load ptr, ptr %a1 - %t867 = load %S.ast.Type, ptr %a164 - %t868 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t866, %S.ast.Type %t867) - store { ptr, i64, i64 } { ptr @.str.4601, i64 13, i64 0 }, ptr %a870 - store { ptr, i64, i64 } %t868, ptr %a871 - call void @finch_str_concat(ptr %a869, ptr %a870, ptr %a871) - store { ptr, i64, i64 } %t868, ptr %a872 - call void @finch_str_drop(ptr %a872) - %t873 = load { ptr, i64, i64 }, ptr %a869 - store { ptr, i64, i64 } %t873, ptr %a875 - store { ptr, i64, i64 } { ptr @.str.4602, i64 1, i64 0 }, ptr %a876 - call void @finch_str_concat(ptr %a874, ptr %a875, ptr %a876) - store { ptr, i64, i64 } %t873, ptr %a877 - call void @finch_str_drop(ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a874 - %t879 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t880 = getelementptr inbounds %S.gen.Val, ptr %t879, i32 0, i32 0 - %t881 = load { ptr, i64, i64 }, ptr %t880 - store { ptr, i64, i64 } %t878, ptr %a883 - store { ptr, i64, i64 } %t881, ptr %a884 - call void @finch_str_concat(ptr %a882, ptr %a883, ptr %a884) - store { ptr, i64, i64 } %t878, ptr %a885 - call void @finch_str_drop(ptr %a885) - %t886 = load { ptr, i64, i64 }, ptr %a882 - store { ptr, i64, i64 } %t886, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.4603, i64 2, i64 0 }, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - store { ptr, i64, i64 } %t886, ptr %a890 - call void @finch_str_drop(ptr %a890) - %t891 = load { ptr, i64, i64 }, ptr %a887 - %t892 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t893 = load i64, ptr %a714 - %t894 = load { ptr, i64, i64 }, ptr %t892 - %t895 = extractvalue { ptr, i64, i64 } %t894, 1 - %t896 = icmp uge i64 %t893, %t895 - br i1 %t896, label %range7170, label %inrange7171 -range7170: - call void @finch_panic_index(ptr @.str.4604, i64 3990, i64 %t893, i64 %t895) - unreachable -inrange7171: - %t897 = extractvalue { ptr, i64, i64 } %t894, 0 - %t898 = getelementptr inbounds i64, ptr %t897, i64 %t893 - %t899 = load i64, ptr %t898 - call void @finch_str_from_int(ptr %a900, i64 %t899) - %t901 = load { ptr, i64, i64 }, ptr %a900 - store { ptr, i64, i64 } %t891, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - store { ptr, i64, i64 } %t891, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t901, ptr %a906 - call void @finch_str_drop(ptr %a906) - %t907 = load { ptr, i64, i64 }, ptr %a902 - %t908 = call { ptr, i64, i64 } @finch.gen.op(ptr %t865, { ptr, i64, i64 } %t907) - store { ptr, i64, i64 } %t907, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t908, ptr %a910 - %t911 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t911, ptr %a912 - call void @finch_str_copy(ptr %a913, ptr %a912) - %t914 = load { ptr, i64, i64 }, ptr %a913 - %t915 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t914, 0 - %t916 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t916, ptr %a917 - call void @finch.copy.S_ast_Type(ptr %a918, ptr %a917) - %t919 = load %S.ast.Type, ptr %a918 - %t920 = insertvalue %S.gen.Val %t915, %S.ast.Type %t919, 1 - store %S.gen.Val %t920, ptr %a921 - %t922 = load ptr, ptr %a1 - %t923 = load %S.ast.Type, ptr %a771 - %t924 = call i1 @finch.gen.owning(ptr %t922, %S.ast.Type %t923) - br label %logic.from7172 -logic.from7172: - br i1 %t924, label %logic.rhs7173, label %logic.end7174 -logic.rhs7173: - %t925 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t926 = getelementptr inbounds %S.gen.Val, ptr %t925, i32 0, i32 2 - %t927 = load i1, ptr %t926 - br label %logic.rend7175 -logic.rend7175: - br label %logic.end7174 -logic.end7174: - %t928 = phi i1 [ false, %logic.from7172 ], [ %t927, %logic.rend7175 ] - br i1 %t928, label %then7176, label %endif7178 -then7176: - %t929 = load ptr, ptr %a1 - %t930 = load { ptr, i64, i64 }, ptr %a910 - %t931 = load %S.ast.Type, ptr %a771 - %t932 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t929, { ptr, i64, i64 } %t930, %S.ast.Type %t931) - %t933 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t932, 0 - %t934 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t934, ptr %a935 - call void @finch.copy.S_ast_Type(ptr %a936, ptr %a935) - %t937 = load %S.ast.Type, ptr %a936 - %t938 = insertvalue %S.gen.Val %t933, %S.ast.Type %t937, 1 - %t939 = insertvalue %S.gen.Val %t938, i1 true, 2 - %t940 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t939, ptr %a921 - store %S.gen.Val %t940, ptr %a941 - call void @finch.drop.S_gen_Val(ptr %a941) - br label %endif7178 -endif7178: - %t942 = load ptr, ptr %a1 - %t943 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t944 = load %S.gen.Val, ptr %t943 - call void @finch.gen.release(ptr %t942, %S.gen.Val %t944) - %t945 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t946 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t946, ptr %a947 - call void @finch.copy.S_gen_Val(ptr %a948, ptr %a947) - %t949 = load %S.gen.Val, ptr %a948 - %t950 = insertvalue %S.gen.Ref %t945, %S.gen.Val %t949, 2 - call void @finch.drop.S_gen_Val(ptr %a921) - call void @finch_str_drop(ptr %a910) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t950 -} - -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 - %a20 = alloca i64, align 16 - %a32 = alloca %S.gen.Ref, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range7179, label %inrange7180 -range7179: - call void @finch_panic_index(ptr @.str.4605, i64 4000, i64 0, i64 %t7) - unreachable -inrange7180: - %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 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic7181, label %ok7182 -panic7181: - call void @finch_panic(ptr @.str.4606, i64 4001, ptr @.str.4607) - unreachable -ok7182: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 11 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - %t19 = load i64, ptr %t18 - store i64 %t19, ptr %a20 - %t21 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 - %t22 = load i1, ptr %t21 - %t23 = xor i1 %t22, true - br i1 %t23, label %then7183, label %endif7185 -then7183: - %t24 = load ptr, ptr %a1 - %t25 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 - %t26 = load %S.gen.Val, ptr %t25 - call void @finch.gen.hold(ptr %t24, %S.gen.Val %t26) - br label %endif7185 -endif7185: - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Node, ptr %a2 - %t29 = load %S.gen.Ref, ptr %a14 - %t30 = load i1, ptr %a3 - %t31 = call %S.gen.Ref @finch.gen.indexOf(ptr %t27, %S.ast.Node %t28, %S.gen.Ref %t29, i1 %t30) - store %S.gen.Ref %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load i64, ptr %a20 - call void @finch.gen.heldEnd(ptr %t33, i64 %t34) - %t35 = load %S.gen.Ref, ptr %a32 - call void @finch.drop.S_gen_Ref(ptr %a14) - ret %S.gen.Ref %t35 -} - -define internal %S.gen.Ref @finch.gen.indexOf(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, i1 %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca %S.gen.Ref, align 16 - %a4 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a9 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a180 = alloca %S.ast.Type, align 16 - %a182 = alloca %S.ast.Type, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca %S.ast.Type, align 16 - %a263 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a386 = alloca %S.ast.Type, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca %S.ast.Type, align 16 - %a405 = alloca %S.ast.Type, align 16 - %a408 = alloca %S.gen.Val, align 16 - %a422 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.ast.Type, align 16 - %a428 = alloca %S.gen.Val, align 16 - %a434 = alloca %S.gen.Val, align 16 - %a435 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - store i1 %p3, ptr %a4 - %t5 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t6 = getelementptr inbounds %S.gen.Val, ptr %t5, i32 0, i32 1 - %t7 = load %S.ast.Type, ptr %t6 - store %S.ast.Type %t7, ptr %a8 - call void @finch.copy.S_ast_Type(ptr %a9, ptr %a8) - %t10 = load %S.ast.Type, ptr %a9 - store %S.ast.Type %t10, ptr %a11 - %t12 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t13 = load i1, ptr %t12 - br i1 %t13, label %then7186, label %endif7188 -then7186: - %t14 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t15 = getelementptr inbounds %S.gen.Place, ptr %t14, i32 0, i32 1 - %t16 = load %S.ast.Type, ptr %t15 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = load %S.ast.Type, ptr %a11 - store %S.ast.Type %t19, ptr %a11 - store %S.ast.Type %t20, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - br label %endif7188 -endif7188: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.4608, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then7189, label %endif7191 -then7189: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - %t30 = load %S.gen.Ref, ptr %a3 - %t31 = load %S.ast.Type, ptr %a11 - %t32 = load i1, ptr %a4 - %t33 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t28, %S.ast.Node %t29, %S.gen.Ref %t30, %S.ast.Type %t31, i1 %t32) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t33 -endif7191: - %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 %range7192, label %inrange7193 -range7192: - call void @finch_panic_index(ptr @.str.4609, i64 4018, i64 1, i64 %t38) - unreachable -inrange7193: - %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.4610, 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 %range7194, label %inrange7195 -range7194: - call void @finch_panic_index(ptr @.str.4611, i64 4018, i64 1, i64 %t47) - unreachable -inrange7195: - %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.4612, i64 8, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4613, i64 5, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then7196, label %endif7198 -then7196: - store { ptr, i64, i64 } { ptr @.str.4614, i64 0, i64 0 }, ptr %a67 - %t68 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t69 = load i1, ptr %t68 - br i1 %t69, label %then7199, label %else7200 -then7199: - %t70 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t71 = getelementptr inbounds %S.gen.Place, ptr %t70, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_copy(ptr %a74, ptr %a73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - %t76 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t75, ptr %a67 - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif7201 -else7200: - %t78 = load ptr, ptr %a1 - %t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t80 = load %S.gen.Val, ptr %t79 - %t81 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t78, %S.gen.Val %t80) - %t82 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t81, ptr %a67 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif7201 -endif7201: - %t84 = load ptr, ptr %a1 - %t85 = load { ptr, i64, i64 }, ptr %a60 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 4 - %t87 = load i64, ptr %t86 - call void @finch_str_from_int(ptr %a88, i64 %t87) - %t89 = load { ptr, i64, i64 }, ptr %a88 - %t90 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t84, { ptr, i64, i64 } %t85, { ptr, i64, i64 } %t89, %S.ast.Node %t90) - store { ptr, i64, i64 } %t89, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Type, ptr %a11 - %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4615, i64 23, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4616, i64 6, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t105, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t105, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4617, i64 13, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t122) - store { ptr, i64, i64 } %t122, ptr %a124 - call void @finch_str_drop(ptr %a124) - store { ptr, i64, i64 } %t123, ptr %a125 - %t126 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t127 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t130, 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t133 = load { ptr, i64, i64 }, ptr %t132 - %t134 = extractvalue { ptr, i64, i64 } %t133, 1 - %t135 = icmp uge i64 0, %t134 - br i1 %t135, label %range7202, label %inrange7203 -range7202: - call void @finch_panic_index(ptr @.str.4618, i64 4028, i64 0, i64 %t134) - unreachable -inrange7203: - %t136 = extractvalue { ptr, i64, i64 } %t133, 0 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 - %t138 = load %S.ast.Type, ptr %t137 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Place %t131, %S.ast.Type %t141, 1 - %t143 = insertvalue %S.gen.Ref %t126, %S.gen.Place %t142, 1 - call void @finch_str_drop(ptr %a125) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t143 -endif7198: - %t144 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t145 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t145, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4619, i64 3, i64 0 }, ptr %a147 - %t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147) - %t149 = icmp ne i32 %t148, 0 - br i1 %t149, label %then7204, label %endif7206 -then7204: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = icmp eq i64 %t152, 0 - br i1 %t153, label %then7207, label %endif7209 -then7207: - %t154 = load ptr, ptr %a1 - %t155 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } { ptr @.str.4620, i64 57, i64 0 }) - br label %endif7209 -endif7209: - %t156 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t157 = getelementptr inbounds %S.gen.Val, ptr %t156, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_copy(ptr %a160, ptr %a159) - %t161 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t161, ptr %a162 - %t163 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t164 = load i1, ptr %t163 - br i1 %t164, label %then7210, label %endif7212 -then7210: - %t165 = load ptr, ptr %a1 - %t166 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t167 = getelementptr inbounds %S.gen.Place, ptr %t166, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t165, { ptr, i64, i64 } { ptr @.str.4621, i64 3, i64 0 }, { ptr, i64, i64 } %t168) - %t170 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t169, ptr %a162 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7212 -endif7212: - %t172 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t173 = load { ptr, i64, i64 }, ptr %t172 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 0, %t174 - br i1 %t175, label %range7213, label %inrange7214 -range7213: - call void @finch_panic_index(ptr @.str.4622, i64 4038, i64 0, i64 %t174) - unreachable -inrange7214: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds %S.ast.Type, ptr %t176, i64 0 - %t178 = load %S.ast.Type, ptr %t177 - store %S.ast.Type %t178, ptr %a179 - call void @finch.copy.S_ast_Type(ptr %a180, ptr %a179) - %t181 = load %S.ast.Type, ptr %a180 - store %S.ast.Type %t181, ptr %a182 - %t183 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t184 = load ptr, ptr %a1 - %t185 = load ptr, ptr %a1 - %t186 = load %S.ast.Type, ptr %a182 - %t187 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t186) - store { ptr, i64, i64 } { ptr @.str.4623, i64 23, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4624, i64 6, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.4625, i64 6, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t218 = load %S.ast.Type, ptr %a182 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t183, %S.gen.Place %t222, 1 - call void @finch.drop.S_ast_Type(ptr %a182) - call void @finch_str_drop(ptr %a162) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t223 -endif7206: - %t224 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t225, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4626, i64 5, i64 0 }, ptr %a227 - %t228 = call i32 @finch_str_eq(ptr %a226, ptr %a227) - %t229 = icmp eq i32 %t228, 0 - br label %logic.from7215 -logic.from7215: - br i1 %t229, label %logic.rhs7216, label %logic.end7217 -logic.rhs7216: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4627, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp eq i32 %t234, 0 - br label %logic.rend7218 -logic.rend7218: - br label %logic.end7217 -logic.end7217: - %t236 = phi i1 [ false, %logic.from7215 ], [ %t235, %logic.rend7218 ] - br i1 %t236, label %then7219, label %endif7221 -then7219: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = load %S.ast.Type, ptr %a11 - %t240 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t239) - store { ptr, i64, i64 } { ptr @.str.4628, i64 46, i64 0 }, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7221 -endif7221: - %t247 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4629, i64 4, i64 0 }) - store %S.ast.Type %t247, ptr %a248 - %t249 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4630, i64 5, i64 0 }, ptr %a252 - %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) - %t254 = icmp ne i32 %t253, 0 - br i1 %t254, label %then7222, label %endif7224 -then7222: - %t255 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = extractvalue { ptr, i64, i64 } %t256, 1 - %t258 = icmp uge i64 0, %t257 - br i1 %t258, label %range7225, label %inrange7226 -range7225: - call void @finch_panic_index(ptr @.str.4631, i64 4046, i64 0, i64 %t257) - unreachable -inrange7226: - %t259 = extractvalue { ptr, i64, i64 } %t256, 0 - %t260 = getelementptr inbounds %S.ast.Type, ptr %t259, i64 0 - %t261 = load %S.ast.Type, ptr %t260 - store %S.ast.Type %t261, ptr %a262 - call void @finch.copy.S_ast_Type(ptr %a263, ptr %a262) - %t264 = load %S.ast.Type, ptr %a263 - %t265 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t264, ptr %a248 - store %S.ast.Type %t265, ptr %a266 - call void @finch.drop.S_ast_Type(ptr %a266) - br label %endif7224 -endif7224: - %t267 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4632, i64 3, i64 0 }, ptr %a270 - %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) - %t272 = icmp ne i32 %t271, 0 - br label %logic.from7227 -logic.from7227: - br i1 %t272, label %logic.rhs7228, label %logic.end7229 -logic.rhs7228: - %t273 = load i1, ptr %a4 - br label %logic.rend7230 -logic.rend7230: - br label %logic.end7229 -logic.end7229: - %t274 = phi i1 [ false, %logic.from7227 ], [ %t273, %logic.rend7230 ] - br i1 %t274, label %then7231, label %endif7233 -then7231: - %t275 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t276 = load i1, ptr %t275 - %t277 = xor i1 %t276, true - br i1 %t277, label %then7234, label %endif7236 -then7234: - %t278 = load ptr, ptr %a1 - %t279 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.4633, i64 44, i64 0 }) - br label %endif7236 -endif7236: - %t280 = load ptr, ptr %a1 - %t281 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t282 = getelementptr inbounds %S.gen.Place, ptr %t281, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - store { ptr, i64, i64 } { ptr @.str.4634, i64 29, i64 0 }, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t287, ptr %a289 - store { ptr, i64, i64 } { ptr @.str.4635, i64 1, i64 0 }, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t287, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.emit(ptr %t280, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_drop(ptr %a293) - br label %endif7233 -endif7233: - %t294 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t295 = getelementptr inbounds %S.gen.Val, ptr %t294, i32 0, i32 0 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_copy(ptr %a298, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t299, ptr %a300 - %t301 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t302 = load i1, ptr %t301 - br i1 %t302, label %then7237, label %endif7239 -then7237: - %t303 = load ptr, ptr %a1 - %t304 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t305 = getelementptr inbounds %S.gen.Place, ptr %t304, i32 0, i32 0 - %t306 = load { ptr, i64, i64 }, ptr %t305 - %t307 = call { ptr, i64, i64 } @finch.gen.load(ptr %t303, { ptr, i64, i64 } { ptr @.str.4636, i64 17, i64 0 }, { ptr, i64, i64 } %t306) - %t308 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t307, ptr %a300 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif7239 -endif7239: - %t310 = load ptr, ptr %a1 - %t311 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4637, i64 31, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4638, i64 3, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call { ptr, i64, i64 } @finch.gen.op(ptr %t310, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store { ptr, i64, i64 } %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a60 - %t326 = load { ptr, i64, i64 }, ptr %a323 - %t327 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t324, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326, %S.ast.Node %t327) - %t328 = load ptr, ptr %a1 - %t329 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4639, i64 31, i64 0 }, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t333, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.4640, i64 3, i64 0 }, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - %t339 = call { ptr, i64, i64 } @finch.gen.op(ptr %t328, { ptr, i64, i64 } %t338) - store { ptr, i64, i64 } %t338, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t339, ptr %a341 - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a248 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - store { ptr, i64, i64 } { ptr @.str.4641, i64 23, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t345, ptr %a348 - call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348) - store { ptr, i64, i64 } %t345, ptr %a349 - call void @finch_str_drop(ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4642, i64 6, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t355, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t355, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.4643, i64 6, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - store { ptr, i64, i64 } %t361, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a362 - %t367 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t366, ptr %a369 - store { ptr, i64, i64 } %t367, ptr %a370 - call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) - store { ptr, i64, i64 } %t366, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = load { ptr, i64, i64 }, ptr %a368 - %t373 = call { ptr, i64, i64 } @finch.gen.op(ptr %t342, { ptr, i64, i64 } %t372) - store { ptr, i64, i64 } %t372, ptr %a374 - call void @finch_str_drop(ptr %a374) - store { ptr, i64, i64 } %t373, ptr %a375 - %t376 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t377 = load i1, ptr %t376 - br i1 %t377, label %then7240, label %endif7242 -then7240: - %t378 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t379 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t379, ptr %a380 - call void @finch_str_copy(ptr %a381, ptr %a380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - %t383 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t382, 0 - %t384 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t384, ptr %a385 - call void @finch.copy.S_ast_Type(ptr %a386, ptr %a385) - %t387 = load %S.ast.Type, ptr %a386 - %t388 = insertvalue %S.gen.Place %t383, %S.ast.Type %t387, 1 - %t389 = insertvalue %S.gen.Ref %t378, %S.gen.Place %t388, 1 - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t389 -endif7242: - %t390 = load ptr, ptr %a1 - %t391 = load ptr, ptr %a1 - %t392 = load %S.ast.Type, ptr %a248 - %t393 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t391, %S.ast.Type %t392) - %t394 = load { ptr, i64, i64 }, ptr %a375 - %t395 = call { ptr, i64, i64 } @finch.gen.load(ptr %t390, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) - store { ptr, i64, i64 } %t393, ptr %a396 - call void @finch_str_drop(ptr %a396) - store { ptr, i64, i64 } %t395, ptr %a397 - %t398 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t398, ptr %a399 - call void @finch_str_copy(ptr %a400, ptr %a399) - %t401 = load { ptr, i64, i64 }, ptr %a400 - %t402 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t401, 0 - %t403 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t403, ptr %a404 - call void @finch.copy.S_ast_Type(ptr %a405, ptr %a404) - %t406 = load %S.ast.Type, ptr %a405 - %t407 = insertvalue %S.gen.Val %t402, %S.ast.Type %t406, 1 - store %S.gen.Val %t407, ptr %a408 - %t409 = load ptr, ptr %a1 - %t410 = load %S.ast.Type, ptr %a248 - %t411 = call i1 @finch.gen.owning(ptr %t409, %S.ast.Type %t410) - br label %logic.from7243 -logic.from7243: - br i1 %t411, label %logic.rhs7244, label %logic.end7245 -logic.rhs7244: - %t412 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t413 = getelementptr inbounds %S.gen.Val, ptr %t412, i32 0, i32 2 - %t414 = load i1, ptr %t413 - br label %logic.rend7246 -logic.rend7246: - br label %logic.end7245 -logic.end7245: - %t415 = phi i1 [ false, %logic.from7243 ], [ %t414, %logic.rend7246 ] - br i1 %t415, label %then7247, label %endif7249 -then7247: - %t416 = load ptr, ptr %a1 - %t417 = load { ptr, i64, i64 }, ptr %a397 - %t418 = load %S.ast.Type, ptr %a248 - %t419 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t416, { ptr, i64, i64 } %t417, %S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t421, ptr %a422 - call void @finch.copy.S_ast_Type(ptr %a423, ptr %a422) - %t424 = load %S.ast.Type, ptr %a423 - %t425 = insertvalue %S.gen.Val %t420, %S.ast.Type %t424, 1 - %t426 = insertvalue %S.gen.Val %t425, i1 true, 2 - %t427 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t426, ptr %a408 - store %S.gen.Val %t427, ptr %a428 - call void @finch.drop.S_gen_Val(ptr %a428) - br label %endif7249 -endif7249: - %t429 = load ptr, ptr %a1 - %t430 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t431 = load %S.gen.Val, ptr %t430 - call void @finch.gen.release(ptr %t429, %S.gen.Val %t431) - %t432 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t433 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t433, ptr %a434 - call void @finch.copy.S_gen_Val(ptr %a435, ptr %a434) - %t436 = load %S.gen.Val, ptr %a435 - %t437 = insertvalue %S.gen.Ref %t432, %S.gen.Val %t436, 2 - call void @finch.drop.S_gen_Val(ptr %a408) - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t437 -} - -define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.cond7250 -each.cond7250: - %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.body7251, label %each.end7253 -each.body7251: - %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 %then7254, label %endif7256 -then7254: - %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.4644, 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.4645, i64 36, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %endif7256 -endif7256: - br label %each.step7252 -each.step7252: - %t38 = load i64, ptr %a13 - %t39 = add i64 %t38, 1 - store i64 %t39, ptr %a13 - br label %each.cond7250 -each.end7253: - %t40 = load i64, ptr %a11 - %t41 = load i64, ptr %a4 - %t42 = icmp ne i64 %t40, %t41 - br i1 %t42, label %then7257, label %endif7259 -then7257: - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4646, i64 1, i64 0 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.4647, i64 8, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a56, i64 %t55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } %t57, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.4648, i64 22, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a70, i64 %t69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t68, ptr %a75 - call void @finch_str_drop(ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t77) - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif7259 -endif7259: - 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 - %a12 = alloca %S.gen.Val, align 16 - %a13 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.4649, i64 3, i64 0 }) - %t9 = load %S.ast.Node, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %a3 - %t11 = call %S.gen.Val @finch.gen.coerce(ptr %t4, %S.gen.Val %t7, %S.ast.Type %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t10) - store %S.gen.Val %t7, ptr %a12 - call void @finch.drop.S_gen_Val(ptr %a12) - store %S.ast.Type %t8, ptr %a13 - call void @finch.drop.S_ast_Type(ptr %a13) - ret %S.gen.Val %t11 -} - -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.4650, 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.4651, 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 %then7260, label %endif7262 -then7260: - ret { ptr, i64, i64 } { ptr @.str.4652, i64 3, i64 0 } -endif7262: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4653, 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 %then7263, label %endif7265 -then7263: - ret { ptr, i64, i64 } { ptr @.str.4654, i64 5, i64 0 } -endif7265: - %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.4655, i64 3, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 - store { ptr, i64, i64 } { ptr @.str.4656, i64 5, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 - store { ptr, i64, i64 } { ptr @.str.4657, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3 - store { ptr, i64, i64 } { ptr @.str.4658, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 - store { ptr, i64, i64 } { ptr @.str.4659, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 - store { ptr, i64, i64 } { ptr @.str.4660, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6 - store { ptr, i64, i64 } { ptr @.str.4661, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 - store { ptr, i64, i64 } { ptr @.str.4662, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 - store { ptr, i64, i64 } { ptr @.str.4663, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9 - store { ptr, i64, i64 } { ptr @.str.4664, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 - store { ptr, i64, i64 } { ptr @.str.4665, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 - store { ptr, i64, i64 } { ptr @.str.4666, i64 3, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12 - store { ptr, i64, i64 } { ptr @.str.4667, 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.cond7266 -find.cond7266: - %t37 = load i64, ptr %a36 - %t38 = icmp slt i64 %t37, %t34 - br i1 %t38, label %find.body7267, label %find.end7270 -find.body7267: - %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.hit7268, label %find.next7269 -find.hit7268: - store i64 %t37, ptr %a33 - br label %find.end7270 -find.next7269: - %t45 = add i64 %t37, 1 - store i64 %t45, ptr %a36 - br label %find.cond7266 -find.end7270: - %t46 = load i64, ptr %a33 - %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then7271, label %endif7273 -then7271: - %t48 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t51 -endif7273: - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.4668, 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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.ast.Type, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a365 = alloca %S.ast.Type, align 16 - %a366 = alloca %S.ast.Type, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a387 = alloca %S.ast.Type, align 16 - %a388 = alloca %S.ast.Type, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a418 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Type, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a527 = alloca %S.ast.Type, align 16 - %a528 = alloca %S.ast.Type, align 16 - %a541 = alloca %S.ast.Type, align 16 - %a542 = alloca %S.ast.Type, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca %S.ast.Type, align 16 - %a585 = alloca %S.ast.Type, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.ast.Type, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca %S.ast.Type, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca %S.ast.Type, align 16 - %a651 = alloca %S.ast.Type, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca %S.ast.Type, align 16 - %a689 = alloca %S.ast.Type, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %range7274, label %inrange7275 -range7274: - call void @finch_panic_index(ptr @.str.4669, i64 4116, i64 0, i64 %t11) - unreachable -inrange7275: - %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 %then7276, label %endif7278 -then7276: - %t27 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t27 -endif7278: - %t28 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t29 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.4670, 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.from7279 -logic.from7279: - br i1 %t33, label %logic.rhs7280, label %logic.end7281 -logic.rhs7280: - %t34 = load %S.ast.Type, ptr %a3 - %t35 = call i1 @finch.gen.isNumber(%S.ast.Type %t34) - br label %logic.rend7282 -logic.rend7282: - br label %logic.end7281 -logic.end7281: - %t36 = phi i1 [ false, %logic.from7279 ], [ %t35, %logic.rend7282 ] - br label %logic.from7283 -logic.from7283: - br i1 %t36, label %logic.rhs7284, label %logic.end7285 -logic.rhs7284: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic7286, label %ok7287 -panic7286: - call void @finch_panic(ptr @.str.4671, i64 4121, ptr @.str.4672) - unreachable -ok7287: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 41 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend7288 -logic.rend7288: - br label %logic.end7285 -logic.end7285: - %t48 = phi i1 [ false, %logic.from7283 ], [ %t46, %logic.rend7288 ] - br i1 %t48, label %then7289, label %endif7291 -then7289: - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.4673, i64 17, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.4674, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4675, i64 15, i64 0 }, { ptr, i64, i64 } %t53) - %t54 = load %S.ast.Type, ptr %a3 - %t55 = call i1 @finch.gen.isInt(%S.ast.Type %t54) - br i1 %t55, label %then7292, label %endif7294 -then7292: - %t56 = load ptr, ptr %a1 - %t57 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t56, { ptr, i64, i64 } { ptr @.str.4676, i64 3, i64 0 }) - store { ptr, i64, i64 } %t57, ptr %a58 - %t59 = load ptr, ptr %a1 - %t60 = load { ptr, i64, i64 }, ptr %a58 - call void @finch.gen.store(ptr %t59, { ptr, i64, i64 } { ptr @.str.4677, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4678, i64 1, i64 0 }, { ptr, i64, i64 } %t60) - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = load %S.gen.Val, ptr %a17 - %t64 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t62, %S.gen.Val %t63) - store { ptr, i64, i64 } { ptr @.str.4679, i64 32, i64 0 }, ptr %a66 - store { ptr, i64, i64 } %t64, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4680, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4681, i64 6, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.4682, i64 1, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t97, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4683, i64 12, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4684, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic7295, label %ok7296 -panic7295: - call void @finch_panic(ptr @.str.4685, i64 4129, ptr @.str.4686) - unreachable -ok7296: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 42 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t111, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = load { ptr, i64, i64 }, ptr %a51 - %t120 = call { ptr, i64, i64 } @finch.gen.load(ptr %t118, { ptr, i64, i64 } { ptr @.str.4687, i64 17, i64 0 }, { ptr, i64, i64 } %t119) - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic7297, label %ok7298 -panic7297: - call void @finch_panic(ptr @.str.4688, i64 4130, ptr @.str.4689) - unreachable -ok7298: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 43 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t120, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load ptr, ptr %a1 - %t127 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t126, %S.gen.Val %t127) - %t128 = load ptr, ptr %a1 - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a58 - %t131 = call { ptr, i64, i64 } @finch.gen.load(ptr %t129, { ptr, i64, i64 } { ptr @.str.4690, i64 3, i64 0 }, { ptr, i64, i64 } %t130) - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4691, i64 3, i64 0 }) - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t131, %S.ast.Type %t132, %S.ast.Type %t133) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - store %S.ast.Type %t132, ptr %a136 - call void @finch.drop.S_ast_Type(ptr %a136) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 - %t138 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Val %t137, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t142 -endif7294: - %t143 = load ptr, ptr %a1 - %t144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t143, { ptr, i64, i64 } { ptr @.str.4692, i64 6, i64 0 }) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = load { ptr, i64, i64 }, ptr %a145 - call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.4693, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4694, i64 3, i64 0 }, { ptr, i64, i64 } %t147) - %t148 = load ptr, ptr %a1 - %t149 = load ptr, ptr %a1 - %t150 = load %S.gen.Val, ptr %a17 - %t151 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t149, %S.gen.Val %t150) - store { ptr, i64, i64 } { ptr @.str.4695, i64 34, i64 0 }, ptr %a153 - store { ptr, i64, i64 } %t151, ptr %a154 - call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) - store { ptr, i64, i64 } %t151, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a152 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4696, i64 6, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t161, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t161, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4697, i64 6, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t184, ptr %a186 - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.4699, i64 12, i64 0 }, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4700, i64 3, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t197) - store { ptr, i64, i64 } %t197, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic7299, label %ok7300 -panic7299: - call void @finch_panic(ptr @.str.4701, i64 4137, ptr @.str.4702) - unreachable -ok7300: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 42 - %t203 = load { ptr, i64, i64 }, ptr %t202 - store { ptr, i64, i64 } %t198, ptr %t202 - store { ptr, i64, i64 } %t203, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a51 - %t207 = call { ptr, i64, i64 } @finch.gen.load(ptr %t205, { ptr, i64, i64 } { ptr @.str.4703, i64 17, i64 0 }, { ptr, i64, i64 } %t206) - %t208 = load ptr, ptr %a1 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic7301, label %ok7302 -panic7301: - call void @finch_panic(ptr @.str.4704, i64 4138, ptr @.str.4705) - unreachable -ok7302: - %t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 43 - %t211 = load { ptr, i64, i64 }, ptr %t210 - store { ptr, i64, i64 } %t207, ptr %t210 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t213, %S.gen.Val %t214) - %t215 = load ptr, ptr %a1 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a145 - %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t216, { ptr, i64, i64 } { ptr @.str.4706, i64 6, i64 0 }, { ptr, i64, i64 } %t217) - %t219 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4707, i64 5, i64 0 }) - %t220 = load %S.ast.Type, ptr %a3 - %t221 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t215, { ptr, i64, i64 } %t218, %S.ast.Type %t219, %S.ast.Type %t220) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - store %S.ast.Type %t219, ptr %a223 - call void @finch.drop.S_ast_Type(ptr %a223) - %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 - %t225 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - %t229 = insertvalue %S.gen.Val %t224, %S.ast.Type %t228, 1 - call void @finch_str_drop(ptr %a186) - call void @finch_str_drop(ptr %a145) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t229 -endif7291: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4708, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp ne i32 %t234, 0 - br label %logic.from7303 -logic.from7303: - br i1 %t235, label %logic.rhs7304, label %logic.end7305 -logic.rhs7304: - %t236 = load %S.ast.Type, ptr %a3 - %t237 = call i1 @finch.gen.isNumber(%S.ast.Type %t236) - br label %logic.rend7306 -logic.rend7306: - br label %logic.end7305 -logic.end7305: - %t238 = phi i1 [ false, %logic.from7303 ], [ %t237, %logic.rend7306 ] - br i1 %t238, label %then7307, label %endif7309 -then7307: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic7310, label %ok7311 -panic7310: - call void @finch_panic(ptr @.str.4709, i64 4143, ptr @.str.4710) - unreachable -ok7311: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 1 - %t243 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t244 = load i64, ptr %t243 - %t245 = load { ptr, i64, i64 }, ptr %t242 - %t246 = extractvalue { ptr, i64, i64 } %t245, 1 - %t247 = icmp uge i64 %t244, %t246 - br i1 %t247, label %range7312, label %inrange7313 -range7312: - call void @finch_panic_index(ptr @.str.4711, i64 4143, i64 %t244, i64 %t246) - unreachable -inrange7313: - %t248 = extractvalue { ptr, i64, i64 } %t245, 0 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t239, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t251, ptr %a252 - %t253 = load %S.ast.Type, ptr %a3 - %t254 = call i1 @finch.gen.isInt(%S.ast.Type %t253) - br i1 %t254, label %then7314, label %endif7316 -then7314: - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load %S.gen.Val, ptr %a17 - %t258 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t256, %S.gen.Val %t257) - store { ptr, i64, i64 } { ptr @.str.4712, i64 31, i64 0 }, ptr %a260 - store { ptr, i64, i64 } %t258, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4713, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4714, i64 6, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t281 = load i64, ptr %t280 - call void @finch_str_from_int(ptr %a282, i64 %t281) - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t279, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t279, ptr %a287 - call void @finch_str_drop(ptr %a287) - store { ptr, i64, i64 } %t283, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.4715, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - %t295 = call { ptr, i64, i64 } @finch.gen.op(ptr %t255, { ptr, i64, i64 } %t294) - store { ptr, i64, i64 } %t294, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t295, ptr %a297 - %t298 = load ptr, ptr %a1 - %t299 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t298, %S.gen.Val %t299) - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4716, i64 3, i64 0 }) - %t303 = load %S.ast.Type, ptr %a3 - %t304 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t300, { ptr, i64, i64 } %t301, %S.ast.Type %t302, %S.ast.Type %t303) - store %S.ast.Type %t302, ptr %a305 - call void @finch.drop.S_ast_Type(ptr %a305) - %t306 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t307 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t307, ptr %a308 - call void @finch.copy.S_ast_Type(ptr %a309, ptr %a308) - %t310 = load %S.ast.Type, ptr %a309 - %t311 = insertvalue %S.gen.Val %t306, %S.ast.Type %t310, 1 - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t311 -endif7316: - %t312 = load ptr, ptr %a1 - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a17 - %t315 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } { ptr @.str.4717, i64 36, i64 0 }, ptr %a317 - store { ptr, i64, i64 } %t315, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.4718, i64 6, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - %t326 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t325, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - store { ptr, i64, i64 } %t325, ptr %a330 - call void @finch_str_drop(ptr %a330) - %t331 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t331, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.4719, i64 6, i64 0 }, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t331, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - %t337 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t338 = load i64, ptr %t337 - call void @finch_str_from_int(ptr %a339, i64 %t338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - store { ptr, i64, i64 } %t336, ptr %a342 - store { ptr, i64, i64 } %t340, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t336, ptr %a344 - call void @finch_str_drop(ptr %a344) - store { ptr, i64, i64 } %t340, ptr %a345 - call void @finch_str_drop(ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.4720, i64 1, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t312, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4721, i64 5, i64 0 }) - %t360 = load %S.ast.Type, ptr %a3 - %t361 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359, %S.ast.Type %t360) - store %S.ast.Type %t359, ptr %a362 - call void @finch.drop.S_ast_Type(ptr %a362) - %t363 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t361, 0 - %t364 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t364, ptr %a365 - call void @finch.copy.S_ast_Type(ptr %a366, ptr %a365) - %t367 = load %S.ast.Type, ptr %a366 - %t368 = insertvalue %S.gen.Val %t363, %S.ast.Type %t367, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t368 -endif7309: - %t369 = load %S.ast.Type, ptr %a3 - %t370 = call i1 @finch.gen.isInt(%S.ast.Type %t369) - br label %logic.from7317 -logic.from7317: - br i1 %t370, label %logic.rhs7318, label %logic.end7319 -logic.rhs7318: - %t371 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t372, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.4722, i64 4, i64 0 }, ptr %a374 - %t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374) - %t376 = icmp ne i32 %t375, 0 - br label %logic.rend7320 -logic.rend7320: - br label %logic.end7319 -logic.end7319: - %t377 = phi i1 [ false, %logic.from7317 ], [ %t376, %logic.rend7320 ] - br i1 %t377, label %then7321, label %endif7323 -then7321: - %t378 = load ptr, ptr %a1 - %t379 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4723, i64 3, i64 0 }) - %t382 = load %S.ast.Type, ptr %a3 - %t383 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t378, { ptr, i64, i64 } %t380, %S.ast.Type %t381, %S.ast.Type %t382) - store %S.ast.Type %t381, ptr %a384 - call void @finch.drop.S_ast_Type(ptr %a384) - %t385 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t383, 0 - %t386 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t386, ptr %a387 - call void @finch.copy.S_ast_Type(ptr %a388, ptr %a387) - %t389 = load %S.ast.Type, ptr %a388 - %t390 = insertvalue %S.gen.Val %t385, %S.ast.Type %t389, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t390 -endif7323: - %t391 = load %S.ast.Type, ptr %a3 - %t392 = call i1 @finch.gen.isInt(%S.ast.Type %t391) - br label %logic.from7324 -logic.from7324: - br i1 %t392, label %logic.end7326, label %logic.rhs7325 -logic.rhs7325: - %t393 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t394, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.4724, i64 4, i64 0 }, ptr %a396 - %t397 = call i32 @finch_str_eq(ptr %a395, ptr %a396) - %t398 = icmp ne i32 %t397, 0 - br label %logic.rend7327 -logic.rend7327: - br label %logic.end7326 -logic.end7326: - %t399 = phi i1 [ true, %logic.from7324 ], [ %t398, %logic.rend7327 ] - br i1 %t399, label %then7328, label %endif7330 -then7328: - %t400 = load %S.ast.Type, ptr %a23 - %t401 = call i1 @finch.gen.isInt(%S.ast.Type %t400) - br label %logic.from7331 -logic.from7331: - br i1 %t401, label %logic.end7333, label %logic.rhs7332 -logic.rhs7332: - %t402 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4725, i64 4, i64 0 }, ptr %a405 - %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) - %t407 = icmp ne i32 %t406, 0 - br label %logic.rend7334 -logic.rend7334: - br label %logic.end7333 -logic.end7333: - %t408 = phi i1 [ true, %logic.from7331 ], [ %t407, %logic.rend7334 ] - br i1 %t408, label %then7335, label %endif7337 -then7335: - %t409 = load ptr, ptr %a1 - %t410 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t411 = load { ptr, i64, i64 }, ptr %t410 - %t412 = load %S.ast.Type, ptr %a23 - %t413 = load %S.ast.Type, ptr %a3 - %t414 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t409, { ptr, i64, i64 } %t411, %S.ast.Type %t412, %S.ast.Type %t413) - %t415 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t414, 0 - %t416 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t416, ptr %a417 - call void @finch.copy.S_ast_Type(ptr %a418, ptr %a417) - %t419 = load %S.ast.Type, ptr %a418 - %t420 = insertvalue %S.gen.Val %t415, %S.ast.Type %t419, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t420 -endif7337: - %t421 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - store { ptr, i64, i64 } { ptr @.str.4726, i64 4, i64 0 }, ptr %a424 - %t425 = call i32 @finch_str_eq(ptr %a423, ptr %a424) - %t426 = icmp ne i32 %t425, 0 - br i1 %t426, label %then7338, label %endif7340 -then7338: - %t427 = load ptr, ptr %a1 - %t428 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } { ptr @.str.4727, i64 8, i64 0 }, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - %t433 = load { ptr, i64, i64 }, ptr %a430 - store { ptr, i64, i64 } %t433, ptr %a435 - store { ptr, i64, i64 } { ptr @.str.4728, i64 4, i64 0 }, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t433, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - %t439 = load ptr, ptr %a1 - %t440 = load %S.ast.Type, ptr %a3 - %t441 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t440) - store { ptr, i64, i64 } %t438, ptr %a443 - store { ptr, i64, i64 } %t441, ptr %a444 - call void @finch_str_concat(ptr %a442, ptr %a443, ptr %a444) - store { ptr, i64, i64 } %t438, ptr %a445 - call void @finch_str_drop(ptr %a445) - store { ptr, i64, i64 } %t441, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load { ptr, i64, i64 }, ptr %a442 - %t448 = call { ptr, i64, i64 } @finch.gen.op(ptr %t427, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t447, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t448, 0 - %t451 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t451, ptr %a452 - call void @finch.copy.S_ast_Type(ptr %a453, ptr %a452) - %t454 = load %S.ast.Type, ptr %a453 - %t455 = insertvalue %S.gen.Val %t450, %S.ast.Type %t454, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t455 -endif7340: - %t456 = load %S.ast.Type, ptr %a23 - %t457 = call i1 @finch.gen.isFloat(%S.ast.Type %t456) - br label %logic.from7341 -logic.from7341: - br i1 %t457, label %logic.rhs7342, label %logic.end7343 -logic.rhs7342: - %t458 = load %S.ast.Type, ptr %a3 - %t459 = call i1 @finch.gen.isInt(%S.ast.Type %t458) - br label %logic.rend7344 -logic.rend7344: - br label %logic.end7343 -logic.end7343: - %t460 = phi i1 [ false, %logic.from7341 ], [ %t459, %logic.rend7344 ] - br i1 %t460, label %then7345, label %endif7347 -then7345: - store { ptr, i64, i64 } { ptr @.str.4729, i64 6, i64 0 }, ptr %a461 - %t462 = load %S.ast.Type, ptr %a3 - %t463 = call i1 @finch.gen.isSigned(%S.ast.Type %t462) - br i1 %t463, label %then7348, label %endif7350 -then7348: - %t464 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } { ptr @.str.4730, i64 6, i64 0 }, ptr %a461 - store { ptr, i64, i64 } %t464, ptr %a465 - call void @finch_str_drop(ptr %a465) - br label %endif7350 -endif7350: - %t466 = load ptr, ptr %a1 - %t467 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t467, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4731, i64 1, i64 0 }, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load ptr, ptr %a1 - %t473 = load %S.ast.Type, ptr %a23 - %t474 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t472, %S.ast.Type %t473) - store { ptr, i64, i64 } %t471, ptr %a476 - store { ptr, i64, i64 } %t474, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t471, ptr %a478 - call void @finch_str_drop(ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a475 - store { ptr, i64, i64 } %t480, ptr %a482 - store { ptr, i64, i64 } { ptr @.str.4732, i64 1, i64 0 }, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t480, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - %t486 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } %t485, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.4733, i64 4, i64 0 }, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t492, ptr %a496 - call void @finch_str_drop(ptr %a496) - %t497 = load { ptr, i64, i64 }, ptr %a493 - %t498 = load ptr, ptr %a1 - %t499 = load %S.ast.Type, ptr %a3 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t498, %S.ast.Type %t499) - store { ptr, i64, i64 } %t497, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t497, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - %t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t466, { ptr, i64, i64 } %t506) - store { ptr, i64, i64 } %t506, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 - %t510 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = insertvalue %S.gen.Val %t509, %S.ast.Type %t513, 1 - call void @finch_str_drop(ptr %a461) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t514 -endif7347: - br label %endif7330 -endif7330: - %t515 = load %S.ast.Type, ptr %a3 - %t516 = call i1 @finch.gen.isFloat(%S.ast.Type %t515) - br i1 %t516, label %then7351, label %endif7353 -then7351: - %t517 = load %S.ast.Type, ptr %a23 - %t518 = call i1 @finch.gen.isInt(%S.ast.Type %t517) - br i1 %t518, label %then7354, label %endif7356 -then7354: - %t519 = load ptr, ptr %a1 - %t520 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - %t522 = load %S.ast.Type, ptr %a23 - %t523 = load %S.ast.Type, ptr %a3 - %t524 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t519, { ptr, i64, i64 } %t521, %S.ast.Type %t522, %S.ast.Type %t523) - %t525 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t524, 0 - %t526 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t526, ptr %a527 - call void @finch.copy.S_ast_Type(ptr %a528, ptr %a527) - %t529 = load %S.ast.Type, ptr %a528 - %t530 = insertvalue %S.gen.Val %t525, %S.ast.Type %t529, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t530 -endif7356: - %t531 = load %S.ast.Type, ptr %a23 - %t532 = call i1 @finch.gen.isFloat(%S.ast.Type %t531) - br i1 %t532, label %then7357, label %endif7359 -then7357: - %t533 = load ptr, ptr %a1 - %t534 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load %S.ast.Type, ptr %a23 - %t537 = load %S.ast.Type, ptr %a3 - %t538 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t533, { ptr, i64, i64 } %t535, %S.ast.Type %t536, %S.ast.Type %t537) - %t539 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t538, 0 - %t540 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t540, ptr %a541 - call void @finch.copy.S_ast_Type(ptr %a542, ptr %a541) - %t543 = load %S.ast.Type, ptr %a542 - %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t544 -endif7359: - br label %endif7353 -endif7353: - %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.4734, i64 4, i64 0 }, ptr %a548 - %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) - %t550 = icmp ne i32 %t549, 0 - br label %logic.from7360 -logic.from7360: - br i1 %t550, label %logic.rhs7361, label %logic.end7362 -logic.rhs7361: - %t551 = load %S.ast.Type, ptr %a23 - %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) - br label %logic.rend7363 -logic.rend7363: - br label %logic.end7362 -logic.end7362: - %t553 = phi i1 [ false, %logic.from7360 ], [ %t552, %logic.rend7363 ] - br i1 %t553, label %then7364, label %endif7366 -then7364: - %t554 = load ptr, ptr %a1 - %t555 = load ptr, ptr %a1 - %t556 = load %S.ast.Type, ptr %a23 - %t557 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t555, %S.ast.Type %t556) - store { ptr, i64, i64 } { ptr @.str.4735, i64 8, i64 0 }, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.4736, i64 1, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t569 = load { ptr, i64, i64 }, ptr %t568 - store { ptr, i64, i64 } %t567, ptr %a571 - store { ptr, i64, i64 } %t569, ptr %a572 - call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572) - store { ptr, i64, i64 } %t567, ptr %a573 - call void @finch_str_drop(ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a570 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.4737, i64 3, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t579) - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t580, 0 - %t583 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t583, ptr %a584 - call void @finch.copy.S_ast_Type(ptr %a585, ptr %a584) - %t586 = load %S.ast.Type, ptr %a585 - %t587 = insertvalue %S.gen.Val %t582, %S.ast.Type %t586, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t587 -endif7366: - %t588 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t589 = load { ptr, i64, i64 }, ptr %t588 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.4738, i64 3, i64 0 }, ptr %a591 - %t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591) - %t593 = icmp ne i32 %t592, 0 - br label %logic.from7367 -logic.from7367: - br i1 %t593, label %logic.rhs7368, label %logic.end7369 -logic.rhs7368: - %t594 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t595 = load { ptr, i64, i64 }, ptr %t594 - store { ptr, i64, i64 } %t595, ptr %a596 - store { ptr, i64, i64 } { ptr @.str.4739, i64 3, i64 0 }, ptr %a597 - %t598 = call i32 @finch_str_eq(ptr %a596, ptr %a597) - %t599 = icmp ne i32 %t598, 0 - br label %logic.from7370 -logic.from7370: - br i1 %t599, label %logic.end7372, label %logic.rhs7371 -logic.rhs7371: - %t600 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t601 = load { ptr, i64, i64 }, ptr %t600 - store { ptr, i64, i64 } %t601, ptr %a602 - store { ptr, i64, i64 } { ptr @.str.4740, i64 4, i64 0 }, ptr %a603 - %t604 = call i32 @finch_str_eq(ptr %a602, ptr %a603) - %t605 = icmp ne i32 %t604, 0 - br label %logic.rend7373 -logic.rend7373: - br label %logic.end7372 -logic.end7372: - %t606 = phi i1 [ true, %logic.from7370 ], [ %t605, %logic.rend7373 ] - br label %logic.rend7374 -logic.rend7374: - br label %logic.end7369 -logic.end7369: - %t607 = phi i1 [ false, %logic.from7367 ], [ %t606, %logic.rend7374 ] - br i1 %t607, label %then7375, label %endif7377 -then7375: - %t608 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t609 = load { ptr, i64, i64 }, ptr %t608 - store { ptr, i64, i64 } %t609, ptr %a610 - call void @finch_str_copy(ptr %a611, ptr %a610) - %t612 = load { ptr, i64, i64 }, ptr %a611 - %t613 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t612, 0 - %t614 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t614, ptr %a615 - call void @finch.copy.S_ast_Type(ptr %a616, ptr %a615) - %t617 = load %S.ast.Type, ptr %a616 - %t618 = insertvalue %S.gen.Val %t613, %S.ast.Type %t617, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t618 -endif7377: - %t619 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t620 = load { ptr, i64, i64 }, ptr %t619 - store { ptr, i64, i64 } %t620, ptr %a621 - store { ptr, i64, i64 } { ptr @.str.4741, i64 3, i64 0 }, ptr %a622 - %t623 = call i32 @finch_str_eq(ptr %a621, ptr %a622) - %t624 = icmp ne i32 %t623, 0 - br label %logic.from7378 -logic.from7378: - br i1 %t624, label %logic.rhs7379, label %logic.end7380 -logic.rhs7379: - %t625 = load %S.ast.Type, ptr %a23 - %t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625) - br label %logic.rend7381 -logic.rend7381: - br label %logic.end7380 -logic.end7380: - %t627 = phi i1 [ false, %logic.from7378 ], [ %t626, %logic.rend7381 ] - br i1 %t627, label %then7382, label %endif7384 -then7382: - %t628 = load ptr, ptr %a1 - %t629 = load ptr, ptr %a1 - %t630 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t631 = load { ptr, i64, i64 }, ptr %t630 - %t632 = load %S.ast.Type, ptr %a23 - %t633 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4743, i64 3, i64 0 }) - %t634 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t629, { ptr, i64, i64 } %t631, %S.ast.Type %t632, %S.ast.Type %t633) - store %S.ast.Type %t633, ptr %a635 - call void @finch.drop.S_ast_Type(ptr %a635) - store { ptr, i64, i64 } { ptr @.str.4742, i64 13, i64 0 }, ptr %a637 - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_concat(ptr %a636, ptr %a637, ptr %a638) - store { ptr, i64, i64 } %t634, ptr %a639 - call void @finch_str_drop(ptr %a639) - %t640 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t640, ptr %a642 - store { ptr, i64, i64 } { ptr @.str.4744, i64 7, i64 0 }, ptr %a643 - call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) - store { ptr, i64, i64 } %t640, ptr %a644 - call void @finch_str_drop(ptr %a644) - %t645 = load { ptr, i64, i64 }, ptr %a641 - %t646 = call { ptr, i64, i64 } @finch.gen.op(ptr %t628, { ptr, i64, i64 } %t645) - store { ptr, i64, i64 } %t645, ptr %a647 - call void @finch_str_drop(ptr %a647) - %t648 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t646, 0 - %t649 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t649, ptr %a650 - call void @finch.copy.S_ast_Type(ptr %a651, ptr %a650) - %t652 = load %S.ast.Type, ptr %a651 - %t653 = insertvalue %S.gen.Val %t648, %S.ast.Type %t652, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t653 -endif7384: - %t654 = load %S.ast.Type, ptr %a3 - %t655 = call i1 @finch.gen.isInt(%S.ast.Type %t654) - br label %logic.from7385 -logic.from7385: - br i1 %t655, label %logic.rhs7386, label %logic.end7387 -logic.rhs7386: - %t656 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t657 = load { ptr, i64, i64 }, ptr %t656 - store { ptr, i64, i64 } %t657, ptr %a658 - store { ptr, i64, i64 } { ptr @.str.4745, i64 3, i64 0 }, ptr %a659 - %t660 = call i32 @finch_str_eq(ptr %a658, ptr %a659) - %t661 = icmp ne i32 %t660, 0 - br label %logic.rend7388 -logic.rend7388: - br label %logic.end7387 -logic.end7387: - %t662 = phi i1 [ false, %logic.from7385 ], [ %t661, %logic.rend7388 ] - br i1 %t662, label %then7389, label %endif7391 -then7389: - %t663 = load ptr, ptr %a1 - %t664 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } { ptr @.str.4746, i64 13, i64 0 }, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.4747, i64 4, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = load ptr, ptr %a1 - %t676 = load %S.ast.Type, ptr %a3 - %t677 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t675, %S.ast.Type %t676) - store { ptr, i64, i64 } %t674, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t674, ptr %a681 - call void @finch_str_drop(ptr %a681) - store { ptr, i64, i64 } %t677, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a678 - %t684 = call { ptr, i64, i64 } @finch.gen.op(ptr %t663, { ptr, i64, i64 } %t683) - store { ptr, i64, i64 } %t683, ptr %a685 - call void @finch_str_drop(ptr %a685) - %t686 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t684, 0 - %t687 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t687, ptr %a688 - call void @finch.copy.S_ast_Type(ptr %a689, ptr %a688) - %t690 = load %S.ast.Type, ptr %a689 - %t691 = insertvalue %S.gen.Val %t686, %S.ast.Type %t690, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t691 -endif7391: - %t692 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t693 = load { ptr, i64, i64 }, ptr %t692 - store { ptr, i64, i64 } %t693, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.4748, i64 3, i64 0 }, ptr %a695 - %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) - %t697 = icmp ne i32 %t696, 0 - br label %logic.from7392 -logic.from7392: - br i1 %t697, label %logic.rhs7393, label %logic.end7394 -logic.rhs7393: - %t698 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store { ptr, i64, i64 } %t699, ptr %a700 - store { ptr, i64, i64 } { ptr @.str.4749, i64 3, i64 0 }, ptr %a701 - %t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701) - %t703 = icmp ne i32 %t702, 0 - br label %logic.rend7395 -logic.rend7395: - br label %logic.end7394 -logic.end7394: - %t704 = phi i1 [ false, %logic.from7392 ], [ %t703, %logic.rend7395 ] - br i1 %t704, label %then7396, label %endif7398 -then7396: - %t705 = load ptr, ptr %a1 - %t706 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t707 = load { ptr, i64, i64 }, ptr %t706 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 0, %t708 - br i1 %t709, label %range7399, label %inrange7400 -range7399: - call void @finch_panic_index(ptr @.str.4750, i64 4192, i64 0, i64 %t708) - unreachable -inrange7400: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds %S.ast.Node, ptr %t710, i64 0 - %t712 = load %S.ast.Node, ptr %t711 - call void @finch.gen.fail(ptr %t705, %S.ast.Node %t712, { ptr, i64, i64 } { ptr @.str.4751, i64 70, i64 0 }) - br label %endif7398 -endif7398: - %t713 = load ptr, ptr %a1 - %t714 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 0, %t716 - br i1 %t717, label %range7401, label %inrange7402 -range7401: - call void @finch_panic_index(ptr @.str.4752, i64 4194, i64 0, i64 %t716) - unreachable -inrange7402: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds %S.ast.Node, ptr %t718, i64 0 - %t720 = load %S.ast.Node, ptr %t719 - %t721 = load %S.ast.Type, ptr %a23 - %t722 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t721) - store { ptr, i64, i64 } { ptr @.str.4753, i64 11, i64 0 }, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) - store { ptr, i64, i64 } %t722, ptr %a726 - call void @finch_str_drop(ptr %a726) - %t727 = load { ptr, i64, i64 }, ptr %a723 - store { ptr, i64, i64 } %t727, ptr %a729 - store { ptr, i64, i64 } { ptr @.str.4754, i64 6, i64 0 }, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - store { ptr, i64, i64 } %t727, ptr %a731 - call void @finch_str_drop(ptr %a731) - %t732 = load { ptr, i64, i64 }, ptr %a728 - %t733 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } %t732, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - store { ptr, i64, i64 } %t732, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a735 - call void @finch.gen.fail(ptr %t713, %S.ast.Node %t720, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t741 -} - -define internal i64 @finch.gen.sizeBytes(ptr %p0, %S.ast.Type %p1) { -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.4755, 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 %then7403, label %endif7405 -then7403: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic7406, label %ok7407 -panic7406: - call void @finch_panic(ptr @.str.4756, i64 4227, ptr @.str.4757) - unreachable -ok7407: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 16 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %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 %range7408, label %inrange7409 -range7408: - call void @finch_panic_index(ptr @.str.4758, i64 4227, i64 %t17, i64 %t19) - unreachable -inrange7409: - %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 -endif7405: - %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.4759, 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 %then7410, label %endif7412 -then7410: - %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 %range7413, label %inrange7414 -range7413: - call void @finch_panic_index(ptr @.str.4760, i64 4230, i64 0, i64 %t36) - unreachable -inrange7414: - %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 -endif7412: - %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.4761, 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.from7415 -logic.from7415: - br i1 %t48, label %logic.end7417, label %logic.rhs7416 -logic.rhs7416: - %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.4762, 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.rend7418 -logic.rend7418: - br label %logic.end7417 -logic.end7417: - %t55 = phi i1 [ true, %logic.from7415 ], [ %t54, %logic.rend7418 ] - br i1 %t55, label %then7419, label %endif7421 -then7419: - ret i64 8 -endif7421: - %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.4763, 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 %then7422, label %endif7424 -then7422: - ret i64 8 -endif7424: - %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.4764, 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 %then7425, label %endif7427 -then7425: - ret i64 4 -endif7427: - %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.4765, 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 %then7428, label %endif7430 -then7428: - ret i64 1 -endif7430: - %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.drop.arr_S_gen_Leaf(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - 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 - 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.4766, 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 %then7431, label %else7432 -then7431: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic7434, label %ok7435 -panic7434: - call void @finch_panic(ptr @.str.4767, i64 4251, ptr @.str.4768) - unreachable -ok7435: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 16 - %t14 = load ptr, ptr %a1 - %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t16 = load { ptr, i64, i64 }, ptr %t15 - %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 %range7436, label %inrange7437 -range7436: - call void @finch_panic_index(ptr @.str.4769, i64 4251, i64 %t19, i64 %t21) - unreachable -inrange7437: - %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.cond7438 -for.cond7438: - %t34 = load i64, ptr %a33 - %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body7439, label %for.end7441 -for.body7439: - %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 %range7442, label %inrange7443 -range7442: - call void @finch_panic_index(ptr @.str.4770, i64 4253, i64 %t38, i64 %t40) - unreachable -inrange7443: - %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 %range7444, label %inrange7445 -range7444: - call void @finch_panic_index(ptr @.str.4771, i64 4253, i64 %t47, i64 %t49) - unreachable -inrange7445: - %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.cond7446 -each.cond7446: - %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.body7447, label %each.end7449 -each.body7447: - %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.step7448 -each.step7448: - %t72 = load i64, ptr %a57 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %a57 - br label %each.cond7446 -each.end7449: - call void @finch.drop.arr_S_gen_Leaf(ptr %a56) - br label %for.step7440 -for.step7440: - %t74 = load i64, ptr %a33 - %t75 = add i64 %t74, 1 - store i64 %t75, ptr %a33 - br label %for.cond7438 -for.end7441: - call void @finch.drop.S_gen_StructDef(ptr %a29) - br label %endif7433 -else7432: - %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.4772, 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 %then7450, label %else7451 -then7450: - %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 %range7453, label %inrange7454 -range7453: - call void @finch_panic_index(ptr @.str.4773, i64 4258, i64 0, i64 %t85) - unreachable -inrange7454: - %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.cond7455 -for.cond7455: - %t95 = load i64, ptr %a94 - %t96 = icmp slt i64 %t95, %t93 - br i1 %t96, label %for.body7456, label %for.end7458 -for.body7456: - %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 %range7459, label %inrange7460 -range7459: - call void @finch_panic_index(ptr @.str.4774, i64 4260, i64 0, i64 %t100) - unreachable -inrange7460: - %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.cond7461 -each.cond7461: - %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.body7462, label %each.end7464 -each.body7462: - %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.step7463 -each.step7463: - %t127 = load i64, ptr %a112 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a112 - br label %each.cond7461 -each.end7464: - call void @finch.drop.arr_S_gen_Leaf(ptr %a111) - br label %for.step7457 -for.step7457: - %t129 = load i64, ptr %a94 - %t130 = add i64 %t129, 1 - store i64 %t130, ptr %a94 - br label %for.cond7455 -for.end7458: - br label %endif7452 -else7451: - %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.4775, 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 %endif7452 -endif7452: - br label %endif7433 -endif7433: - %t152 = load { ptr, i64, i64 }, ptr %a4 - ret { ptr, i64, i64 } %t152 -} - -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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca i64, align 16 - %a102 = alloca %S.gen.Leaf, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.gen.Abi %p2, ptr %a3 - 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.from7465 -logic.from7465: - br i1 %t17, label %logic.rhs7466, label %logic.end7467 -logic.rhs7466: - %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.rend7468 -logic.rend7468: - br label %logic.end7467 -logic.end7467: - %t21 = phi i1 [ false, %logic.from7465 ], [ %t20, %logic.rend7468 ] - store i1 %t21, ptr %a22 - store i64 0, ptr %a23 - br label %each.cond7469 -each.cond7469: - %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.body7470, label %each.end7472 -each.body7470: - %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.from7473 -logic.from7473: - br i1 %t34, label %logic.end7475, label %logic.rhs7474 -logic.rhs7474: - %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 %range7476, label %inrange7477 -range7476: - call void @finch_panic_index(ptr @.str.4776, i64 4277, i64 0, i64 %t38) - unreachable -inrange7477: - %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.rend7478 -logic.rend7478: - br label %logic.end7475 -logic.end7475: - %t45 = phi i1 [ true, %logic.from7473 ], [ %t44, %logic.rend7478 ] - br i1 %t45, label %then7479, label %endif7481 -then7479: - store i1 false, ptr %a22 - br label %endif7481 -endif7481: - br label %each.step7471 -each.step7471: - %t46 = load i64, ptr %a23 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a23 - br label %each.cond7469 -each.end7472: - %t48 = load i1, ptr %a22 - br i1 %t48, label %then7482, label %endif7484 -then7482: - store { ptr, i64, i64 } { ptr @.str.4777, 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 %range7485, label %inrange7486 -range7485: - call void @finch_panic_index(ptr @.str.4778, i64 4283, i64 0, i64 %t51) - unreachable -inrange7486: - %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 %then7487, label %endif7489 -then7487: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4779, i64 6, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - br label %endif7489 -endif7489: - %t59 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } { ptr @.str.4780, i64 6, i64 0 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t65 = load i64, ptr %t64 - call void @finch_str_from_int(ptr %a66, i64 %t65) - %t67 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4781, i64 1, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.4782, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t77, ptr %a80 - store { ptr, i64, i64 } %t78, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4783, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %t63 - %t90 = add i64 %t89, 1 - call void @finch_arr_reserve(ptr %t62, i64 %t90, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t91 = load ptr, ptr %t62 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t89 - store { ptr, i64, i64 } %t88, ptr %t92 - store i64 %t90, ptr %t63 - store { ptr, i64, i64 } zeroinitializer, ptr %a93 - store i64 0, ptr %a94 - br label %each.cond7490 -each.cond7490: - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t96 = load i64, ptr %t95 - %t97 = load i64, ptr %a94 - %t98 = icmp slt i64 %t97, %t96 - br i1 %t98, label %each.body7491, label %each.end7493 -each.body7491: - %t99 = load ptr, ptr %a14 - %t100 = getelementptr inbounds %S.gen.Leaf, ptr %t99, i64 %t97 - %t101 = load %S.gen.Leaf, ptr %t100 - store %S.gen.Leaf %t101, ptr %a102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_copy(ptr %a106, ptr %a105) - %t107 = load { ptr, i64, i64 }, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %a93, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %a93 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 - store { ptr, i64, i64 } %t107, ptr %t111 - store i64 %t109, ptr %t103 - br label %each.step7492 -each.step7492: - %t112 = load i64, ptr %a94 - %t113 = add i64 %t112, 1 - store i64 %t113, ptr %a94 - br label %each.cond7490 -each.end7493: - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4785, i64 2, i64 0 }, ptr %a115 - call void @finch_str_join(ptr %a116, ptr %a93, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4784, i64 2, i64 0 }, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.4786, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t127, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_str(ptr %a93) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t131 -endif7484: - %t132 = load i64, ptr %a4 - %t133 = icmp sgt i64 %t132, 16 - br i1 %t133, label %then7494, label %endif7496 -then7494: - %t134 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } { ptr @.str.4787, i64 8, i64 0 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t137 -endif7496: - %t138 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t138 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load i64, ptr %a5 - %t142 = icmp sge i64 %t141, 16 - br i1 %t142, label %then7497, label %else7498 -then7497: - %t143 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t143 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i64 %t145 - store { ptr, i64, i64 } { ptr @.str.4789, i64 4, i64 0 }, ptr %t148 - store i64 %t146, ptr %t144 - %t149 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } { ptr @.str.4790, i64 4, i64 0 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif7499 -else7498: - %t152 = load i64, ptr %a4 - %t153 = icmp sle i64 %t152, 8 - br i1 %t153, label %then7500, label %else7501 -then7500: - %t154 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t157, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t154 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t156 - store { ptr, i64, i64 } { ptr @.str.4791, i64 3, i64 0 }, ptr %t159 - store i64 %t157, ptr %t155 - %t160 = load i64, ptr %a4 - %t161 = mul i64 %t160, 8 - call void @finch_str_from_int(ptr %a162, i64 %t161) - %t163 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4792, i64 1, i64 0 }, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t168, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7502 -else7501: - %t172 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 - %t174 = load i64, ptr %t173 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %t172, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %t172 - %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 - store { ptr, i64, i64 } { ptr @.str.4793, i64 9, i64 0 }, ptr %t177 - store i64 %t175, ptr %t173 - %t178 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } { ptr @.str.4794, i64 9, i64 0 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_drop(ptr %a180) - br label %endif7502 -endif7502: - br label %endif7499 -endif7499: - %t181 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t181 -} - -define internal void @finch.drop.S_gen_Abi(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) { -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 - %a27 = alloca %S.gen.StructDef, align 16 - %a28 = alloca %S.gen.StructDef, align 16 - %a30 = alloca %S.gen.StructDef, align 16 - %a33 = alloca i64, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %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 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4795, 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.4796, 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 %then7503, label %endif7505 -then7503: - %t11 = load %S.gen.Abi, ptr %a4 - ret %S.gen.Abi %t11 -endif7505: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7506, label %ok7507 -panic7506: - call void @finch_panic(ptr @.str.4797, i64 4318, ptr @.str.4798) - unreachable -ok7507: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = call i64 @finch.gen.findStruct(ptr %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t19) - %t21 = load { ptr, i64, i64 }, ptr %t14 - %t22 = extractvalue { ptr, i64, i64 } %t21, 1 - %t23 = icmp uge i64 %t20, %t22 - br i1 %t23, label %range7508, label %inrange7509 -range7508: - call void @finch_panic_index(ptr @.str.4799, i64 4318, i64 %t20, i64 %t22) - unreachable -inrange7509: - %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 9 - %t32 = load i64, ptr %t31 - store i64 %t32, ptr %a33 - %t34 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 8, ptr %t34 - %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t36 = load i64, ptr %t35 - %t37 = icmp sgt i64 %t36, 8 - br i1 %t37, label %then7510, label %endif7512 -then7510: - %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t39 = load i64, ptr %t38 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 %t39, ptr %t40 - br label %endif7512 -endif7512: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic7513, label %ok7514 -panic7513: - call void @finch_panic(ptr @.str.4800, i64 4324, ptr @.str.4801) - unreachable -ok7514: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 31 - %t44 = getelementptr inbounds %S.platform.Target, ptr %t43, i32 0, i32 4 - %t45 = load i1, ptr %t44 - br i1 %t45, label %then7515, label %endif7517 -then7515: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a2 - %t48 = load %S.gen.Abi, ptr %a4 - %t49 = load i64, ptr %a33 - %t50 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t51 = load i64, ptr %t50 - %t52 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t46, %S.ast.Type %t47, %S.gen.Abi %t48, i64 %t49, i64 %t51) - call void @finch.drop.S_gen_StructDef(ptr %a30) - call void @finch.drop.S_gen_Abi(ptr %a4) - ret %S.gen.Abi %t52 -endif7517: - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic7518, label %ok7519 -panic7518: - call void @finch_panic(ptr @.str.4802, i64 4327, ptr @.str.4803) - unreachable -ok7519: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 31 - %t56 = getelementptr inbounds %S.platform.Target, ptr %t55, i32 0, i32 1 - %t57 = load i1, ptr %t56 - br i1 %t57, label %then7520, label %endif7522 -then7520: - %t58 = load i64, ptr %a33 - %t59 = icmp eq i64 %t58, 1 - br label %logic.from7523 -logic.from7523: - br i1 %t59, label %logic.end7525, label %logic.rhs7524 -logic.rhs7524: - %t60 = load i64, ptr %a33 - %t61 = icmp eq i64 %t60, 2 - br label %logic.rend7526 -logic.rend7526: - br label %logic.end7525 -logic.end7525: - %t62 = phi i1 [ true, %logic.from7523 ], [ %t61, %logic.rend7526 ] - br label %logic.from7527 -logic.from7527: - br i1 %t62, label %logic.end7529, label %logic.rhs7528 -logic.rhs7528: - %t63 = load i64, ptr %a33 - %t64 = icmp eq i64 %t63, 4 - br label %logic.rend7530 -logic.rend7530: - br label %logic.end7529 -logic.end7529: - %t65 = phi i1 [ true, %logic.from7527 ], [ %t64, %logic.rend7530 ] - br label %logic.from7531 -logic.from7531: - br i1 %t65, label %logic.end7533, label %logic.rhs7532 -logic.rhs7532: - %t66 = load i64, ptr %a33 - %t67 = icmp eq i64 %t66, 8 - br label %logic.rend7534 -logic.rend7534: - br label %logic.end7533 -logic.end7533: - %t68 = phi i1 [ true, %logic.from7531 ], [ %t67, %logic.rend7534 ] - br i1 %t68, label %then7535, label %else7536 -then7535: - %t69 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } { ptr @.str.4804, i64 6, i64 0 }, ptr %t69 - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load i64, ptr %a33 - %t75 = mul i64 %t74, 8 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4805, i64 1, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load i64, ptr %t73 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t72 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t73 - %t87 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range7538, label %inrange7539 -range7538: - call void @finch_panic_index(ptr @.str.4806, i64 4333, i64 0, i64 %t89) - unreachable -inrange7539: - %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 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif7537 -else7536: - %t100 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } { ptr @.str.4807, i64 8, i64 0 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif7537 -endif7537: - %t103 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t103 -endif7522: - %t104 = load i64, ptr %a33 - %t105 = icmp sgt i64 %t104, 16 - br label %logic.from7540 -logic.from7540: - br i1 %t105, label %logic.end7542, label %logic.rhs7541 -logic.rhs7541: - %t106 = load i64, ptr %a33 - %t107 = icmp eq i64 %t106, 0 - br label %logic.rend7543 -logic.rend7543: - br label %logic.end7542 -logic.end7542: - %t108 = phi i1 [ true, %logic.from7540 ], [ %t107, %logic.rend7543 ] - br i1 %t108, label %then7544, label %endif7546 -then7544: - %t109 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } { ptr @.str.4808, i64 6, i64 0 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t112 -endif7546: - %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 %a33 - %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.cond7547 -each.cond7547: - %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.body7548, label %each.end7550 -each.body7548: - %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 %then7551, label %endif7553 -then7551: - store i64 8, ptr %a148 - br label %endif7553 -endif7553: - %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 %panic7554, label %ok7555 -panic7554: - call void @finch_panic(ptr @.str.4809, i64 4352, ptr @.str.4810) - unreachable -ok7555: - %t155 = srem i64 %t152, %t153 - %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then7556, label %endif7558 -then7556: - %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } { ptr @.str.4811, i64 6, i64 0 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t160 -endif7558: - %t161 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 - %t162 = load i64, ptr %t161 - %t163 = sdiv i64 %t162, 8 - store i64 %t163, ptr %a164 - %t165 = load i64, ptr %a164 - %t166 = load { ptr, i64, i64 }, ptr %a128 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range7559, label %inrange7560 -range7559: - call void @finch_panic_index(ptr @.str.4812, i64 4357, i64 %t165, i64 %t167) - unreachable -inrange7560: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds i64, ptr %t169, i64 %t165 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 1 - br label %logic.from7561 -logic.from7561: - br i1 %t172, label %logic.end7563, label %logic.rhs7562 -logic.rhs7562: - %t173 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2 - %t174 = load i1, ptr %t173 - %t175 = xor i1 %t174, true - br label %logic.rend7564 -logic.rend7564: - br label %logic.end7563 -logic.end7563: - %t176 = phi i1 [ true, %logic.from7561 ], [ %t175, %logic.rend7564 ] - br i1 %t176, label %then7565, label %else7566 -then7565: - %t177 = load i64, ptr %a164 - %t178 = load { ptr, i64, i64 }, ptr %a128 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range7568, label %inrange7569 -range7568: - call void @finch_panic_index(ptr @.str.4813, i64 4358, i64 %t177, i64 %t179) - unreachable -inrange7569: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds i64, ptr %t181, i64 %t177 - store i64 1, ptr %t182 - br label %endif7567 -else7566: - %t183 = load i64, ptr %a164 - %t184 = load { ptr, i64, i64 }, ptr %a128 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range7570, label %inrange7571 -range7570: - call void @finch_panic_index(ptr @.str.4814, i64 4360, i64 %t183, i64 %t185) - unreachable -inrange7571: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t183 - store i64 2, ptr %t188 - br label %endif7567 -endif7567: - %t189 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 - %t190 = load i1, ptr %t189 - br i1 %t190, label %then7572, label %endif7574 -then7572: - %t191 = load i64, ptr %a164 - %t192 = load { ptr, i64, i64 }, ptr %a136 - %t193 = extractvalue { ptr, i64, i64 } %t192, 1 - %t194 = icmp uge i64 %t191, %t193 - br i1 %t194, label %range7575, label %inrange7576 -range7575: - call void @finch_panic_index(ptr @.str.4815, i64 4363, i64 %t191, i64 %t193) - unreachable -inrange7576: - %t195 = extractvalue { ptr, i64, i64 } %t192, 0 - %t196 = getelementptr inbounds i1, ptr %t195, i64 %t191 - store i1 true, ptr %t196 - br label %endif7574 -endif7574: - br label %each.step7549 -each.step7549: - %t197 = load i64, ptr %a137 - %t198 = add i64 %t197, 1 - store i64 %t198, ptr %a137 - br label %each.cond7547 -each.end7550: - %t199 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } { ptr @.str.4816, i64 6, i64 0 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load i64, ptr %a120 - store i64 0, ptr %a203 - br label %for.cond7577 -for.cond7577: - %t204 = load i64, ptr %a203 - %t205 = icmp slt i64 %t204, %t202 - br i1 %t205, label %for.body7578, label %for.end7580 -for.body7578: - %t206 = load i64, ptr %a33 - %t207 = load i64, ptr %a203 - %t208 = mul i64 8, %t207 - %t209 = sub i64 %t206, %t208 - store i64 %t209, ptr %a210 - %t211 = load i64, ptr %a210 - %t212 = icmp sgt i64 %t211, 8 - br i1 %t212, label %then7581, label %endif7583 -then7581: - store i64 8, ptr %a210 - br label %endif7583 -endif7583: - %t213 = load i64, ptr %a203 - %t214 = load { ptr, i64, i64 }, ptr %a128 - %t215 = extractvalue { ptr, i64, i64 } %t214, 1 - %t216 = icmp uge i64 %t213, %t215 - br i1 %t216, label %range7584, label %inrange7585 -range7584: - call void @finch_panic_index(ptr @.str.4817, i64 4372, i64 %t213, i64 %t215) - unreachable -inrange7585: - %t217 = extractvalue { ptr, i64, i64 } %t214, 0 - %t218 = getelementptr inbounds i64, ptr %t217, i64 %t213 - %t219 = load i64, ptr %t218 - %t220 = icmp eq i64 %t219, 2 - br i1 %t220, label %then7586, label %else7587 -then7586: - %t221 = load i64, ptr %a203 - %t222 = load { ptr, i64, i64 }, ptr %a136 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 %t221, %t223 - br i1 %t224, label %range7589, label %inrange7590 -range7589: - call void @finch_panic_index(ptr @.str.4818, i64 4373, i64 %t221, i64 %t223) - unreachable -inrange7590: - %t225 = extractvalue { ptr, i64, i64 } %t222, 0 - %t226 = getelementptr inbounds i1, ptr %t225, i64 %t221 - %t227 = load i1, ptr %t226 - br i1 %t227, label %then7591, label %else7592 -then7591: - %t228 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i32 0, i32 1 - %t230 = load i64, ptr %t229 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %t228, i64 %t231, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %t228 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t230 - store { ptr, i64, i64 } { ptr @.str.4819, i64 6, i64 0 }, ptr %t233 - store i64 %t231, ptr %t229 - br label %endif7593 -else7592: - %t234 = load i64, ptr %a210 - %t235 = icmp sgt i64 %t234, 4 - br i1 %t235, label %then7594, label %else7595 -then7594: - %t236 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 - %t238 = load i64, ptr %t237 - %t239 = add i64 %t238, 1 - call void @finch_arr_reserve(ptr %t236, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t240 = load ptr, ptr %t236 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238 - store { ptr, i64, i64 } { ptr @.str.4820, i64 11, i64 0 }, ptr %t241 - store i64 %t239, ptr %t237 - br label %endif7596 -else7595: - %t242 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %t242, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %t242 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } { ptr @.str.4821, i64 5, i64 0 }, ptr %t247 - store i64 %t245, ptr %t243 - br label %endif7596 -endif7596: - br label %endif7593 -endif7593: - br label %endif7588 -else7587: - %t248 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t250 = load i64, ptr %a210 - %t251 = mul i64 %t250, 8 - call void @finch_str_from_int(ptr %a252, i64 %t251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.4822, i64 1, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - store { ptr, i64, i64 } %t253, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a254 - %t259 = load i64, ptr %t249 - %t260 = add i64 %t259, 1 - call void @finch_arr_reserve(ptr %t248, i64 %t260, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t261 = load ptr, ptr %t248 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t261, i64 %t259 - store { ptr, i64, i64 } %t258, ptr %t262 - store i64 %t260, ptr %t249 - br label %endif7588 -endif7588: - br label %for.step7579 -for.step7579: - %t263 = load i64, ptr %a203 - %t264 = add i64 %t263, 1 - store i64 %t264, ptr %a203 - br label %for.cond7577 -for.end7580: - %t265 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = icmp eq i64 %t267, 1 - br i1 %t268, label %then7597, label %else7598 -then7597: - %t269 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t270 = load { ptr, i64, i64 }, ptr %t269 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 0, %t271 - br i1 %t272, label %range7600, label %inrange7601 -range7600: - call void @finch_panic_index(ptr @.str.4823, i64 4385, i64 0, i64 %t271) - unreachable -inrange7601: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0 - %t275 = load { ptr, i64, i64 }, ptr %t274 - %t276 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t275, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch_str_drop(ptr %a281) - br label %endif7599 -else7598: - %t282 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4825, i64 2, i64 0 }, ptr %a284 - call void @finch_str_join(ptr %a285, ptr %t282, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.4824, i64 2, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4826, i64 2, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } %t296, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - br label %endif7599 -endif7599: - %t300 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t300 -} - -define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) { -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 - %a12 = alloca %S.gen.Abi, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca i64, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.gen.Abi, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a88 = alloca i64, align 16 - %a90 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Abi, align 16 - %a155 = alloca %S.gen.Abi, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 - %t11 = load %S.gen.Abi, ptr %t10 - store %S.gen.Abi %t9, ptr %t10 - store %S.gen.Abi %t11, ptr %a12 - call void @finch.drop.S_gen_Abi(ptr %a12) - %t13 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } { ptr @.str.4827, i64 4, i64 0 }, ptr %t13 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4828, i64 4, i64 0 }, ptr %a19 - %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) - %t21 = icmp eq i32 %t20, 0 - br i1 %t21, label %then7602, label %endif7604 -then7602: - %t22 = load ptr, ptr %a1 - %t23 = load %S.ast.Type, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t22, %S.ast.Type %t23) - %t25 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t24, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_drop(ptr %a27) - br label %endif7604 -endif7604: - %t28 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t29 = getelementptr inbounds %S.gen.Abi, ptr %t28, i32 0, i32 0 - %t30 = load { ptr, i64, i64 }, ptr %t29 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.4829, i64 8, i64 0 }, ptr %a32 - %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) - %t34 = icmp ne i32 %t33, 0 - br i1 %t34, label %then7605, label %endif7607 -then7605: - %t35 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t36 = getelementptr inbounds %S.gen.Abi, ptr %t35, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - store { ptr, i64, i64 } { ptr @.str.4830, i64 6, i64 0 }, ptr %t36 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif7607 -endif7607: - %t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %t39, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.4831, i64 6, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then7608, label %else7609 -then7608: - %t46 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3 - store i1 true, ptr %t46 - %t47 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } { ptr @.str.4832, i64 4, i64 0 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load i64, ptr %a5 - %t51 = sub i64 %t50, 1 - store i64 %t51, ptr %a5 - br label %endif7610 -else7609: - %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t53 = getelementptr inbounds %S.gen.Abi, ptr %t52, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.4833, i64 6, i64 0 }, ptr %a56 - %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %then7611, label %endif7613 -then7611: - %t59 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t60 = getelementptr inbounds %S.gen.Abi, ptr %t59, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t65, ptr %t62 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif7613 -endif7613: - br label %endif7610 -endif7610: - store i64 0, ptr %a68 - br label %each.cond7614 -each.cond7614: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load i64, ptr %a68 - %t72 = icmp slt i64 %t71, %t70 - br i1 %t72, label %each.body7615, label %each.end7617 -each.body7615: - %t73 = load ptr, ptr %a3 - %t74 = getelementptr inbounds %S.ast.Type, ptr %t73, i64 %t71 - %t75 = load %S.ast.Type, ptr %t74 - store %S.ast.Type %t75, ptr %a76 - %t77 = load ptr, ptr %a1 - %t78 = load %S.ast.Type, ptr %a76 - %t79 = call %S.gen.Abi @finch.gen.classify(ptr %t77, %S.ast.Type %t78) - store %S.gen.Abi %t79, ptr %a80 - %t81 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4834, i64 6, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then7618, label %else7619 -then7618: - store i64 0, ptr %a87 - store i64 0, ptr %a88 - %t89 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 1 - store i64 0, ptr %a90 - br label %each.cond7621 -each.cond7621: - %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.body7622, label %each.end7624 -each.body7622: - %t95 = load ptr, ptr %t89 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a102 - %t103 = call i32 @finch_str_starts(ptr %a100, ptr %a102) - %t104 = icmp ne i32 %t103, 0 - br i1 %t104, label %then7625, label %else7626 -then7625: - %t105 = load i64, ptr %a87 - %t106 = add i64 %t105, 1 - store i64 %t106, ptr %a87 - br label %endif7627 -else7626: - %t107 = load i64, ptr %a88 - %t108 = add i64 %t107, 1 - store i64 %t108, ptr %a88 - br label %endif7627 -endif7627: - br label %each.step7623 -each.step7623: - %t109 = load i64, ptr %a90 - %t110 = add i64 %t109, 1 - store i64 %t110, ptr %a90 - br label %each.cond7621 -each.end7624: - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic7628, label %ok7629 -panic7628: - call void @finch_panic(ptr @.str.4837, i64 4425, ptr @.str.4838) - unreachable -ok7629: - %t113 = getelementptr inbounds %S.gen.Gen, ptr %t111, i32 0, i32 31 - %t114 = getelementptr inbounds %S.platform.Target, ptr %t113, i32 0, i32 1 - %t115 = load i1, ptr %t114 - br label %logic.from7630 -logic.from7630: - br i1 %t115, label %logic.end7632, label %logic.rhs7631 -logic.rhs7631: - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic7633, label %ok7634 -panic7633: - call void @finch_panic(ptr @.str.4839, i64 4425, ptr @.str.4840) - unreachable -ok7634: - %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 31 - %t119 = getelementptr inbounds %S.platform.Target, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.rend7635 -logic.rend7635: - br label %logic.end7632 -logic.end7632: - %t121 = phi i1 [ true, %logic.from7630 ], [ %t120, %logic.rend7635 ] - br label %logic.from7636 -logic.from7636: - br i1 %t121, label %logic.end7638, label %logic.rhs7637 -logic.rhs7637: - %t122 = load i64, ptr %a87 - %t123 = load i64, ptr %a5 - %t124 = icmp sle i64 %t122, %t123 - br label %logic.from7639 -logic.from7639: - br i1 %t124, label %logic.rhs7640, label %logic.end7641 -logic.rhs7640: - %t125 = load i64, ptr %a88 - %t126 = load i64, ptr %a6 - %t127 = icmp sle i64 %t125, %t126 - br label %logic.rend7642 -logic.rend7642: - br label %logic.end7641 -logic.end7641: - %t128 = phi i1 [ false, %logic.from7639 ], [ %t127, %logic.rend7642 ] - br label %logic.rend7643 -logic.rend7643: - br label %logic.end7638 -logic.end7638: - %t129 = phi i1 [ true, %logic.from7636 ], [ %t128, %logic.rend7643 ] - br i1 %t129, label %then7644, label %else7645 -then7644: - %t130 = load i64, ptr %a87 - %t131 = load i64, ptr %a5 - %t132 = sub i64 %t131, %t130 - store i64 %t132, ptr %a5 - %t133 = load i64, ptr %a88 - %t134 = load i64, ptr %a6 - %t135 = sub i64 %t134, %t133 - store i64 %t135, ptr %a6 - br label %endif7646 -else7645: - %t136 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t137 = load { ptr, i64, i64 }, ptr %t136 - store { ptr, i64, i64 } { ptr @.str.4841, i64 6, i64 0 }, ptr %t136 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif7646 -endif7646: - br label %endif7620 -else7619: - %t139 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.4842, i64 6, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %then7647, label %endif7649 -then7647: - %t145 = load %S.ast.Type, ptr %a76 - %t146 = call i1 @finch.gen.isFloat(%S.ast.Type %t145) - br i1 %t146, label %then7650, label %else7651 -then7650: - %t147 = load i64, ptr %a6 - %t148 = sub i64 %t147, 1 - store i64 %t148, ptr %a6 - br label %endif7652 -else7651: - %t149 = load i64, ptr %a5 - %t150 = sub i64 %t149, 1 - store i64 %t150, ptr %a5 - br label %endif7652 -endif7652: - br label %endif7649 -endif7649: - br label %endif7620 -endif7620: - %t151 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load %S.gen.Abi, ptr %a80 - store %S.gen.Abi %t153, ptr %a154 - call void @finch.copy.S_gen_Abi(ptr %a155, ptr %a154) - %t156 = load %S.gen.Abi, ptr %a155 - %t157 = load i64, ptr %t152 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t151 - %t160 = getelementptr inbounds %S.gen.Abi, ptr %t159, i64 %t157 - store %S.gen.Abi %t156, ptr %t160 - store i64 %t158, ptr %t152 - call void @finch.drop.S_gen_Abi(ptr %a80) - br label %each.step7616 -each.step7616: - %t161 = load i64, ptr %a68 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a68 - br label %each.cond7614 -each.end7617: - %t163 = load %S.gen.Plan, ptr %a4 - ret %S.gen.Plan %t163 -} - -define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.4843, 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 %then7653, label %endif7655 -then7653: - ret void -endif7655: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7656, label %ok7657 -panic7656: - call void @finch_panic(ptr @.str.4844, i64 4447, ptr @.str.4845) - unreachable -ok7657: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %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 %range7658, label %inrange7659 -range7658: - call void @finch_panic_index(ptr @.str.4846, i64 4447, i64 %t20, i64 %t22) - unreachable -inrange7659: - %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 %then7660, label %endif7662 -then7660: - %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.4847, 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.4848, i64 2, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t45, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t45, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4849, i64 18, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load %S.ast.Type, ptr %a4 - %t58 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t57) - store { ptr, i64, i64 } %t56, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t56, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4850, i64 20, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif7662 -endif7662: - %t71 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 - %t73 = load i64, ptr %t72 - %t74 = icmp sgt i64 %t73, 0 - br i1 %t74, label %then7663, label %endif7665 -then7663: - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Node, ptr %a2 - %t77 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.4851, i64 16, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4852, i64 2, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t86, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4853, i64 12, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load %S.ast.Type, ptr %a4 - %t99 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t98) - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t99, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4854, i64 40, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t110, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } %t117) - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif7665 -endif7665: - call void @finch.drop.S_gen_StructDef(ptr %a30) - 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.from7666 -logic.from7666: - br i1 %t3, label %logic.end7668, label %logic.rhs7667 -logic.rhs7667: - %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.4855, 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.rend7669 -logic.rend7669: - br label %logic.end7668 -logic.end7668: - %t10 = phi i1 [ true, %logic.from7666 ], [ %t9, %logic.rend7669 ] - br label %logic.from7670 -logic.from7670: - br i1 %t10, label %logic.end7672, label %logic.rhs7671 -logic.rhs7671: - %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.4856, 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.rend7673 -logic.rend7673: - br label %logic.end7672 -logic.end7672: - %t17 = phi i1 [ true, %logic.from7670 ], [ %t16, %logic.rend7673 ] - br label %logic.from7674 -logic.from7674: - br i1 %t17, label %logic.end7676, label %logic.rhs7675 -logic.rhs7675: - %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.4857, 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.rend7677 -logic.rend7677: - br label %logic.end7676 -logic.end7676: - %t24 = phi i1 [ true, %logic.from7674 ], [ %t23, %logic.rend7677 ] - 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 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca i64, align 16 - %a106 = alloca %S.gen.FnSig, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %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 %then7678, label %endif7680 -then7678: - %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.4858, i64 59, i64 0 }) - br label %endif7680 -endif7680: - %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7 - %t11 = load i1, ptr %t10 - br i1 %t11, label %then7681, label %endif7683 -then7681: - %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.4859, i64 74, i64 0 }) - br label %endif7683 -endif7683: - %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 %then7684, label %endif7686 -then7684: - %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.4860, i64 29, i64 0 }) - br label %endif7686 -endif7686: - %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.cond7687 -for.cond7687: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t22 - br i1 %t25, label %for.body7688, label %for.end7690 -for.body7688: - %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 %range7691, label %inrange7692 -range7691: - call void @finch_panic_index(ptr @.str.4861, i64 4472, i64 %t27, i64 %t29) - unreachable -inrange7692: - %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 %then7693, label %endif7695 -then7693: - %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 %range7696, label %inrange7697 -range7696: - call void @finch_panic_index(ptr @.str.4862, i64 4473, i64 %t38, i64 %t40) - unreachable -inrange7697: - %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 %range7698, label %inrange7699 -range7698: - call void @finch_panic_index(ptr @.str.4864, i64 4473, i64 %t46, i64 %t48) - unreachable -inrange7699: - %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.4863, i64 66, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4865, i64 50, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - br label %endif7695 -endif7695: - br label %for.step7689 -for.step7689: - %t65 = load i64, ptr %a23 - %t66 = add i64 %t65, 1 - store i64 %t66, ptr %a23 - br label %for.cond7687 -for.end7690: - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t68 = getelementptr inbounds %S.ast.Type, ptr %t67, i32 0, i32 0 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.4866, i64 4, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp eq i32 %t72, 0 - br label %logic.from7700 -logic.from7700: - br i1 %t73, label %logic.rhs7701, label %logic.end7702 -logic.rhs7701: - %t74 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t75 = load %S.ast.Type, ptr %t74 - %t76 = call i1 @finch.gen.cPlain(%S.ast.Type %t75) - %t77 = xor i1 %t76, true - br label %logic.rend7703 -logic.rend7703: - br label %logic.end7702 -logic.end7702: - %t78 = phi i1 [ false, %logic.from7700 ], [ %t77, %logic.rend7703 ] - br i1 %t78, label %then7704, label %endif7706 -then7704: - %t79 = load ptr, ptr %a1 - %t80 = load %S.ast.Node, ptr %a2 - %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t82 = load %S.ast.Type, ptr %t81 - %t83 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t82) - store { ptr, i64, i64 } { ptr @.str.4867, i64 69, i64 0 }, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4868, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif7706 -endif7706: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic7707, label %ok7708 -panic7707: - call void @finch_panic(ptr @.str.4869, i64 4479, ptr @.str.4870) - unreachable -ok7708: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 15 - store i64 0, ptr %a98 - br label %each.cond7709 -each.cond7709: - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = load i64, ptr %a98 - %t102 = icmp slt i64 %t101, %t100 - br i1 %t102, label %each.body7710, label %each.end7712 -each.body7710: - %t103 = load ptr, ptr %t97 - %t104 = getelementptr inbounds %S.gen.FnSig, ptr %t103, i64 %t101 - %t105 = load %S.gen.FnSig, ptr %t104 - store %S.gen.FnSig %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 5 - %t108 = load i1, ptr %t107 - br label %logic.from7713 -logic.from7713: - br i1 %t108, label %logic.rhs7714, label %logic.end7715 -logic.rhs7714: - %t109 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a113 - store { ptr, i64, i64 } %t112, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7716 -logic.rend7716: - br label %logic.end7715 -logic.end7715: - %t117 = phi i1 [ false, %logic.from7713 ], [ %t116, %logic.rend7716 ] - br i1 %t117, label %then7717, label %endif7719 -then7717: - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Node, ptr %a2 - %t120 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } { ptr @.str.4871, 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.4872, i64 38, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a131 - call void @finch_str_drop(ptr %a131) - br label %endif7719 -endif7719: - br label %each.step7711 -each.step7711: - %t132 = load i64, ptr %a98 - %t133 = add i64 %t132, 1 - store i64 %t133, ptr %a98 - br label %each.cond7709 -each.end7712: - 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 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - 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.cond7720 -for.cond7720: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body7721, label %for.end7723 -for.body7721: - %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 %range7724, label %inrange7725 -range7724: - call void @finch_panic_index(ptr @.str.4873, i64 4492, i64 %t15, i64 %t17) - unreachable -inrange7725: - %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.4874, 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 %then7726, label %else7727 -then7726: - %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.4875, i64 13, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load i64, ptr %t32 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %a3 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 - store { ptr, i64, i64 } %t40, ptr %t44 - store i64 %t42, ptr %t32 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.4877, i64 13, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4878, i64 3, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = call { ptr, i64, i64 } @finch.gen.op(ptr %t46, { ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } { ptr @.str.4876, i64 3, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %t45 - %t68 = add i64 %t67, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t69 = load ptr, ptr %a4 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67 - store { ptr, i64, i64 } %t66, ptr %t70 - store i64 %t68, ptr %t45 - br label %endif7728 -else7727: - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Type, ptr %a25 - %t74 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t72, %S.ast.Type %t73) - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a25 - %t77 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t75, %S.ast.Type %t76) - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4879, i64 3, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - %t98 = load i64, ptr %t71 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t99, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %a3 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t98 - store { ptr, i64, i64 } %t97, ptr %t101 - store i64 %t99, ptr %t71 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t103 = load ptr, ptr %a1 - %t104 = load %S.ast.Type, ptr %a25 - %t105 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t103, %S.ast.Type %t104) - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4880, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t110, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = load i64, ptr %t102 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t121, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %a4 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t120 - store { ptr, i64, i64 } %t119, ptr %t123 - store i64 %t121, ptr %t102 - br label %endif7728 -endif7728: - call void @finch.drop.S_ast_Type(ptr %a25) - br label %for.step7722 -for.step7722: - %t124 = load i64, ptr %a11 - %t125 = add i64 %t124, 1 - store i64 %t125, ptr %a11 - br label %for.cond7720 -for.end7723: - %t126 = load ptr, ptr %a1 - %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t128 = load %S.ast.Type, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t126, %S.ast.Type %t128) - store { ptr, i64, i64 } { ptr @.str.4881, i64 5, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4882, i64 1, i64 0 }, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - store { ptr, i64, i64 } %t134, ptr %a138 - call void @finch_str_drop(ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t139, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4883, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4884, i64 2, i64 0 }, ptr %a153 - call void @finch_str_join(ptr %a154, ptr %a4, ptr %a153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t151, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t151, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.4885, i64 1, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4886, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4887, i64 0, i64 0 }, ptr %a169 - %t170 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t171 = getelementptr inbounds %S.ast.Type, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.4888, i64 4, i64 0 }, ptr %a174 - %t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174) - %t176 = icmp ne i32 %t175, 0 - br i1 %t176, label %then7729, label %else7730 -then7729: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a167 - call void @finch.gen.emit(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t179, { ptr, i64, i64 } { ptr @.str.4889, i64 8, i64 0 }) - br label %endif7731 -else7730: - %t180 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t181 = getelementptr inbounds %S.ast.Type, ptr %t180, i32 0, i32 0 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } %t182, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.4890, i64 4, i64 0 }, ptr %a184 - %t185 = call i32 @finch_str_eq(ptr %a183, ptr %a184) - %t186 = icmp ne i32 %t185, 0 - br i1 %t186, label %then7732, label %else7733 -then7732: - %t187 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4891, i64 2, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4892, i64 8, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load ptr, ptr %a1 - %t192 = load ptr, ptr %a1 - %t193 = load ptr, ptr %a1 - %t194 = load { ptr, i64, i64 }, ptr %a167 - %t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } { ptr @.str.4894, i64 8, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.4895, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t205, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } { ptr @.str.4893, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.gen.emit(ptr %t191, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7734 -else7733: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t214, %S.ast.Type %t216) - %t218 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t217, ptr %a168 - store { ptr, i64, i64 } %t218, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load ptr, ptr %a1 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t222 = load %S.ast.Type, ptr %t221 - %t223 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t220, %S.ast.Type %t222) - %t224 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t223, ptr %a169 - store { ptr, i64, i64 } %t224, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4896, i64 4, i64 0 }, ptr %a229 - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a228 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.4897, i64 1, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load ptr, ptr %a1 - %t238 = load { ptr, i64, i64 }, ptr %a167 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t237, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t236, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t236, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.emit(ptr %t226, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7734 -endif7734: - br label %endif7731 -endif7731: - store { ptr, i64, i64 } { ptr @.str.4898, i64 0, i64 0 }, ptr %a247 - %t248 = load ptr, ptr %a1 - %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic7735, label %ok7736 -panic7735: - call void @finch_panic(ptr @.str.4899, i64 4517, ptr @.str.4900) - unreachable -ok7736: - %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 31 - %t251 = getelementptr inbounds %S.platform.Target, ptr %t250, i32 0, i32 1 - %t252 = load i1, ptr %t251 - br i1 %t252, label %then7737, label %endif7739 -then7737: - %t253 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4901, i64 10, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - br label %endif7739 -endif7739: - %t255 = load ptr, ptr %a1 - %t256 = load %S.gen.Saved, ptr %a7 - %t257 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4902, i64 6, i64 0 }, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a258 - %t262 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t261, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t261, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t267, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4903, i64 1, i64 0 }, ptr %a270 - call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) - store { ptr, i64, i64 } %t267, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a268 - %t273 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t272, ptr %a275 - store { ptr, i64, i64 } %t273, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t272, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4904, i64 2, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t283, ptr %a287 - store { ptr, i64, i64 } %t285, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t283, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.4905, i64 1, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4906, i64 2, i64 0 }, ptr %a297 - call void @finch_str_join(ptr %a298, ptr %a3, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t295, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t295, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t305, ptr %a307 - store { ptr, i64, i64 } { ptr @.str.4907, i64 1, i64 0 }, ptr %a308 - call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) - store { ptr, i64, i64 } %t305, ptr %a309 - call void @finch_str_drop(ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a306 - call void @finch.gen.endHelper(ptr %t255, %S.gen.Saved %t256, { ptr, i64, i64 } %t310) - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - call void @finch_str_copy(ptr %a315, ptr %a314) - %t316 = load { ptr, i64, i64 }, ptr %a315 - call void @finch_str_drop(ptr %a247) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Saved(ptr %a7) - call void @finch.drop.arr_str(ptr %a4) - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t316 -} - -define internal void @finch.drop.arr_S_gen_Abi(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond7862 -n.cond7862: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body7863, label %n.end7864 -n.body7863: - %t7 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Abi(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond7862 -n.end7864: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Plan(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Abi(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_gen_Abi(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) { -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca i64, align 16 - %a108 = alloca %S.ast.Type, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.gen.Plan, align 16 - %a276 = alloca %S.gen.Saved, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca i64, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca i64, align 16 - %a318 = alloca %S.ast.Type, align 16 - %a319 = alloca %S.ast.Type, align 16 - %a321 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.gen.Abi, align 16 - %a331 = alloca %S.gen.Abi, align 16 - %a333 = alloca %S.gen.Abi, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca i64, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a793 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a808 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7740, label %ok7741 -panic7740: - call void @finch_panic(ptr @.str.4908, i64 4526, ptr @.str.4909) - unreachable -ok7741: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 - %t7 = load i64, ptr %a2 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.4910, i64 4526, i64 %t7, i64 %t9) - unreachable -inrange7743: - %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.4911, i64 9, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.4912, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t30, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t30, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic7744, label %ok7745 -panic7744: - call void @finch_panic(ptr @.str.4913, i64 4528, ptr @.str.4914) - unreachable -ok7745: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 40 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4915, i64 2, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t42 - %t50 = load ptr, ptr %t41 - store i64 0, ptr %a51 - br label %find.cond7746 -find.cond7746: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body7747, label %find.end7750 -find.body7747: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit7748, label %find.next7749 -find.hit7748: - store i64 %t52, ptr %a48 - br label %find.end7750 -find.next7749: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond7746 -find.end7750: - store { ptr, i64, i64 } %t47, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load i64, ptr %a48 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then7751, label %endif7753 -then7751: - %t64 = load { ptr, i64, i64 }, ptr %a38 - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t64 -endif7753: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic7754, label %ok7755 -panic7754: - call void @finch_panic(ptr @.str.4916, i64 4531, ptr @.str.4917) - unreachable -ok7755: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 40 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4918, i64 2, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load i64, ptr %t68 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t67, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t67 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t68 - %t78 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = icmp sgt i64 %t80, 0 - br label %logic.from7756 -logic.from7756: - br i1 %t81, label %logic.end7758, label %logic.rhs7757 -logic.rhs7757: - %t82 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 - %t83 = load i1, ptr %t82 - br label %logic.rend7759 -logic.rend7759: - br label %logic.end7758 -logic.end7758: - %t84 = phi i1 [ true, %logic.from7756 ], [ %t83, %logic.rend7759 ] - br i1 %t84, label %then7760, label %endif7762 -then7760: - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Node, ptr %a3 - %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - store { ptr, i64, i64 } { ptr @.str.4919, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4920, i64 81, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.fail(ptr %t85, %S.ast.Node %t86, { ptr, i64, i64 } %t97) - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_drop(ptr %a98) - br label %endif7762 -endif7762: - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - store i64 0, ptr %a100 - br label %each.cond7763 -each.cond7763: - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t102 = load i64, ptr %t101 - %t103 = load i64, ptr %a100 - %t104 = icmp slt i64 %t103, %t102 - br i1 %t104, label %each.body7764, label %each.end7766 -each.body7764: - %t105 = load ptr, ptr %t99 - %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t103 - %t107 = load %S.ast.Type, ptr %t106 - store %S.ast.Type %t107, ptr %a108 - %t109 = load %S.ast.Type, ptr %a108 - %t110 = call i1 @finch.gen.isNumber(%S.ast.Type %t109) - br label %logic.from7767 -logic.from7767: - br i1 %t110, label %logic.end7769, label %logic.rhs7768 -logic.rhs7768: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4921, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7770 -logic.rend7770: - br label %logic.end7769 -logic.end7769: - %t117 = phi i1 [ true, %logic.from7767 ], [ %t116, %logic.rend7770 ] - br label %logic.from7771 -logic.from7771: - br i1 %t117, label %logic.end7773, label %logic.rhs7772 -logic.rhs7772: - %t118 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t119 = load { ptr, i64, i64 }, ptr %t118 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4922, i64 4, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend7774 -logic.rend7774: - br label %logic.end7773 -logic.end7773: - %t124 = phi i1 [ true, %logic.from7771 ], [ %t123, %logic.rend7774 ] - br label %logic.from7775 -logic.from7775: - br i1 %t124, label %logic.end7777, label %logic.rhs7776 -logic.rhs7776: - %t125 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4923, i64 3, i64 0 }, ptr %a128 - %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) - %t130 = icmp ne i32 %t129, 0 - br label %logic.rend7778 -logic.rend7778: - br label %logic.end7777 -logic.end7777: - %t131 = phi i1 [ true, %logic.from7775 ], [ %t130, %logic.rend7778 ] - br label %logic.from7779 -logic.from7779: - br i1 %t131, label %logic.end7781, label %logic.rhs7780 -logic.rhs7780: - %t132 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4924, i64 6, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp ne i32 %t136, 0 - br label %logic.from7782 -logic.from7782: - br i1 %t137, label %logic.rhs7783, label %logic.end7784 -logic.rhs7783: - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic7785, label %ok7786 -panic7785: - call void @finch_panic(ptr @.str.4925, i64 4536, ptr @.str.4926) - unreachable -ok7786: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load ptr, ptr %a1 - %t142 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 3 - %t143 = load { ptr, i64, i64 }, ptr %t142 - %t144 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 2 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = call i64 @finch.gen.findStruct(ptr %t141, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t145) - %t147 = load { ptr, i64, i64 }, ptr %t140 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 %t146, %t148 - br i1 %t149, label %range7787, label %inrange7788 -range7787: - call void @finch_panic_index(ptr @.str.4927, i64 4536, i64 %t146, i64 %t148) - unreachable -inrange7788: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.gen.StructDef, ptr %t150, i64 %t146 - %t152 = getelementptr inbounds %S.gen.StructDef, ptr %t151, i32 0, i32 2 - %t153 = load i1, ptr %t152 - br label %logic.rend7789 -logic.rend7789: - br label %logic.end7784 -logic.end7784: - %t154 = phi i1 [ false, %logic.from7782 ], [ %t153, %logic.rend7789 ] - br label %logic.rend7790 -logic.rend7790: - br label %logic.end7781 -logic.end7781: - %t155 = phi i1 [ true, %logic.from7779 ], [ %t154, %logic.rend7790 ] - %t156 = xor i1 %t155, true - br i1 %t156, label %then7791, label %endif7793 -then7791: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a3 - %t159 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } { ptr @.str.4928, i64 5, i64 0 }, ptr %a162 - store { ptr, i64, i64 } %t160, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4929, i64 95, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = load %S.ast.Type, ptr %a108 - %t171 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t170) - store { ptr, i64, i64 } %t169, ptr %a173 - store { ptr, i64, i64 } %t171, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t169, ptr %a175 - call void @finch_str_drop(ptr %a175) - store { ptr, i64, i64 } %t171, ptr %a176 - call void @finch_str_drop(ptr %a176) - %t177 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - br label %endif7793 -endif7793: - br label %each.step7765 -each.step7765: - %t179 = load i64, ptr %a100 - %t180 = add i64 %t179, 1 - store i64 %t180, ptr %a100 - br label %each.cond7763 -each.end7766: - %t181 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call i1 @finch.gen.isNumber(%S.ast.Type %t182) - br label %logic.from7794 -logic.from7794: - br i1 %t183, label %logic.end7796, label %logic.rhs7795 -logic.rhs7795: - %t184 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t185 = getelementptr inbounds %S.ast.Type, ptr %t184, i32 0, i32 0 - %t186 = load { ptr, i64, i64 }, ptr %t185 - store { ptr, i64, i64 } %t186, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4930, i64 4, i64 0 }, ptr %a188 - %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) - %t190 = icmp ne i32 %t189, 0 - br label %logic.rend7797 -logic.rend7797: - br label %logic.end7796 -logic.end7796: - %t191 = phi i1 [ true, %logic.from7794 ], [ %t190, %logic.rend7797 ] - br label %logic.from7798 -logic.from7798: - br i1 %t191, label %logic.end7800, label %logic.rhs7799 -logic.rhs7799: - %t192 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4931, i64 4, i64 0 }, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br label %logic.rend7801 -logic.rend7801: - br label %logic.end7800 -logic.end7800: - %t199 = phi i1 [ true, %logic.from7798 ], [ %t198, %logic.rend7801 ] - br label %logic.from7802 -logic.from7802: - br i1 %t199, label %logic.end7804, label %logic.rhs7803 -logic.rhs7803: - %t200 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.4932, i64 3, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.rend7805 -logic.rend7805: - br label %logic.end7804 -logic.end7804: - %t207 = phi i1 [ true, %logic.from7802 ], [ %t206, %logic.rend7805 ] - br label %logic.from7806 -logic.from7806: - br i1 %t207, label %logic.end7808, label %logic.rhs7807 -logic.rhs7807: - %t208 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t209 = getelementptr inbounds %S.ast.Type, ptr %t208, i32 0, i32 0 - %t210 = load { ptr, i64, i64 }, ptr %t209 - store { ptr, i64, i64 } %t210, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.4933, i64 4, i64 0 }, ptr %a212 - %t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212) - %t214 = icmp ne i32 %t213, 0 - br label %logic.rend7809 -logic.rend7809: - br label %logic.end7808 -logic.end7808: - %t215 = phi i1 [ true, %logic.from7806 ], [ %t214, %logic.rend7809 ] - br label %logic.from7810 -logic.from7810: - br i1 %t215, label %logic.end7812, label %logic.rhs7811 -logic.rhs7811: - %t216 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } %t218, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4934, i64 6, i64 0 }, ptr %a220 - %t221 = call i32 @finch_str_eq(ptr %a219, ptr %a220) - %t222 = icmp ne i32 %t221, 0 - br label %logic.from7813 -logic.from7813: - br i1 %t222, label %logic.rhs7814, label %logic.end7815 -logic.rhs7814: - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic7816, label %ok7817 -panic7816: - call void @finch_panic(ptr @.str.4935, i64 4540, ptr @.str.4936) - unreachable -ok7817: - %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 16 - %t226 = load ptr, ptr %a1 - %t227 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t228 = getelementptr inbounds %S.ast.Type, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - %t230 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t231 = getelementptr inbounds %S.ast.Type, ptr %t230, i32 0, i32 2 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = call i64 @finch.gen.findStruct(ptr %t226, { ptr, i64, i64 } %t229, { ptr, i64, i64 } %t232) - %t234 = load { ptr, i64, i64 }, ptr %t225 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range7818, label %inrange7819 -range7818: - call void @finch_panic_index(ptr @.str.4937, i64 4540, i64 %t233, i64 %t235) - unreachable -inrange7819: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds %S.gen.StructDef, ptr %t237, i64 %t233 - %t239 = getelementptr inbounds %S.gen.StructDef, ptr %t238, i32 0, i32 2 - %t240 = load i1, ptr %t239 - br label %logic.rend7820 -logic.rend7820: - br label %logic.end7815 -logic.end7815: - %t241 = phi i1 [ false, %logic.from7813 ], [ %t240, %logic.rend7820 ] - br label %logic.rend7821 -logic.rend7821: - br label %logic.end7812 -logic.end7812: - %t242 = phi i1 [ true, %logic.from7810 ], [ %t241, %logic.rend7821 ] - %t243 = xor i1 %t242, true - br i1 %t243, label %then7822, label %endif7824 -then7822: - %t244 = load ptr, ptr %a1 - %t245 = load %S.ast.Node, ptr %a3 - %t246 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t247 = load { ptr, i64, i64 }, ptr %t246 - store { ptr, i64, i64 } { ptr @.str.4938, i64 5, i64 0 }, ptr %a249 - store { ptr, i64, i64 } %t247, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4939, i64 38, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t258 = load %S.ast.Type, ptr %t257 - %t259 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t258) - store { ptr, i64, i64 } %t256, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t256, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a260 - call void @finch.gen.fail(ptr %t244, %S.ast.Node %t245, { ptr, i64, i64 } %t265) - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_drop(ptr %a266) - br label %endif7824 -endif7824: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t269 = load %S.ast.Type, ptr %t268 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t271 = load { ptr, i64, i64 }, ptr %t270 - %t272 = call %S.gen.Plan @finch.gen.makePlan(ptr %t267, %S.ast.Type %t269, { ptr, i64, i64 } %t271) - store %S.gen.Plan %t272, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t274) - store %S.gen.Saved %t275, ptr %a276 - store { ptr, i64, i64 } zeroinitializer, ptr %a277 - store i64 0, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.4940, i64 0, i64 0 }, ptr %a279 - %t280 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t281 = load i1, ptr %t280 - br i1 %t281, label %then7825, label %endif7827 -then7825: - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t285 = load %S.ast.Type, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t285) - store { ptr, i64, i64 } { ptr @.str.4941, i64 9, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4942, i64 14, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %t282 - %t298 = add i64 %t297, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t299 = load ptr, ptr %a277 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 - store { ptr, i64, i64 } %t296, ptr %t300 - store i64 %t298, ptr %t282 - %t301 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.4943, i64 3, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - store i64 1, ptr %a278 - br label %endif7827 -endif7827: - store { ptr, i64, i64 } zeroinitializer, ptr %a303 - %t304 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i32 0, i32 1 - %t306 = load i64, ptr %t305 - store i64 0, ptr %a307 - br label %for.cond7828 -for.cond7828: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t306 - br i1 %t309, label %for.body7829, label %for.end7831 -for.body7829: - %t310 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t311 = load i64, ptr %a307 - %t312 = load { ptr, i64, i64 }, ptr %t310 - %t313 = extractvalue { ptr, i64, i64 } %t312, 1 - %t314 = icmp uge i64 %t311, %t313 - br i1 %t314, label %range7832, label %inrange7833 -range7832: - call void @finch_panic_index(ptr @.str.4944, i64 4555, i64 %t311, i64 %t313) - unreachable -inrange7833: - %t315 = extractvalue { ptr, i64, i64 } %t312, 0 - %t316 = getelementptr inbounds %S.ast.Type, ptr %t315, i64 %t311 - %t317 = load %S.ast.Type, ptr %t316 - store %S.ast.Type %t317, ptr %a318 - call void @finch.copy.S_ast_Type(ptr %a319, ptr %a318) - %t320 = load %S.ast.Type, ptr %a319 - store %S.ast.Type %t320, ptr %a321 - %t322 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 1 - %t323 = load i64, ptr %a307 - %t324 = load { ptr, i64, i64 }, ptr %t322 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range7834, label %inrange7835 -range7834: - call void @finch_panic_index(ptr @.str.4945, i64 4556, i64 %t323, i64 %t325) - unreachable -inrange7835: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds %S.gen.Abi, ptr %t327, i64 %t323 - %t329 = load %S.gen.Abi, ptr %t328 - store %S.gen.Abi %t329, ptr %a330 - call void @finch.copy.S_gen_Abi(ptr %a331, ptr %a330) - %t332 = load %S.gen.Abi, ptr %a331 - store %S.gen.Abi %t332, ptr %a333 - %t334 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.4946, i64 6, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %then7836, label %else7837 -then7836: - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t341 = load ptr, ptr %a1 - %t342 = load %S.ast.Type, ptr %a321 - %t343 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t341, %S.ast.Type %t342) - store { ptr, i64, i64 } { ptr @.str.4947, i64 10, i64 0 }, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.4948, i64 8, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - %t354 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 3 - %t355 = load i64, ptr %t354 - call void @finch_str_from_int(ptr %a356, i64 %t355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t353, ptr %a359 - store { ptr, i64, i64 } %t357, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t353, ptr %a361 - call void @finch_str_drop(ptr %a361) - store { ptr, i64, i64 } %t357, ptr %a362 - call void @finch_str_drop(ptr %a362) - %t363 = load { ptr, i64, i64 }, ptr %a358 - store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4949, i64 3, i64 0 }, ptr %a366 - call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) - store { ptr, i64, i64 } %t363, ptr %a367 - call void @finch_str_drop(ptr %a367) - %t368 = load { ptr, i64, i64 }, ptr %a364 - %t369 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a370, i64 %t369) - %t371 = load { ptr, i64, i64 }, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t368, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - %t378 = load i64, ptr %t340 - %t379 = add i64 %t378, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t379, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t380 = load ptr, ptr %a277 - %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t378 - store { ptr, i64, i64 } %t377, ptr %t381 - store i64 %t379, ptr %t340 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t383 = load ptr, ptr %a1 - %t384 = load %S.ast.Type, ptr %a321 - %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.4950, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = load ptr, ptr %a1 - %t392 = load ptr, ptr %a1 - %t393 = load %S.ast.Type, ptr %a321 - %t394 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t392, %S.ast.Type %t393) - %t395 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a396, i64 %t395) - %t397 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4951, i64 2, i64 0 }, ptr %a399 - store { ptr, i64, i64 } %t397, ptr %a400 - call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) - store { ptr, i64, i64 } %t397, ptr %a401 - call void @finch_str_drop(ptr %a401) - %t402 = load { ptr, i64, i64 }, ptr %a398 - %t403 = call { ptr, i64, i64 } @finch.gen.load(ptr %t391, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t402) - store { ptr, i64, i64 } %t394, ptr %a404 - call void @finch_str_drop(ptr %a404) - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_drop(ptr %a405) - store { ptr, i64, i64 } %t390, ptr %a407 - store { ptr, i64, i64 } %t403, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t390, ptr %a409 - call void @finch_str_drop(ptr %a409) - store { ptr, i64, i64 } %t403, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a406 - %t412 = load i64, ptr %t382 - %t413 = add i64 %t412, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t413, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t414 = load ptr, ptr %a303 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t412 - store { ptr, i64, i64 } %t411, ptr %t415 - store i64 %t413, ptr %t382 - %t416 = load i64, ptr %a278 - %t417 = add i64 %t416, 1 - store i64 %t417, ptr %a278 - br label %endif7838 -else7837: - %t418 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t419 = load { ptr, i64, i64 }, ptr %t418 - store { ptr, i64, i64 } %t419, ptr %a420 - store { ptr, i64, i64 } { ptr @.str.4952, i64 8, i64 0 }, ptr %a421 - %t422 = call i32 @finch_str_eq(ptr %a420, ptr %a421) - %t423 = icmp ne i32 %t422, 0 - br i1 %t423, label %then7839, label %else7840 -then7839: - %t424 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t425 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a426, i64 %t425) - %t427 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.4953, i64 6, i64 0 }, ptr %a429 - store { ptr, i64, i64 } %t427, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = load i64, ptr %t424 - %t434 = add i64 %t433, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t435 = load ptr, ptr %a277 - %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433 - store { ptr, i64, i64 } %t432, ptr %t436 - store i64 %t434, ptr %t424 - %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t438 = load ptr, ptr %a1 - %t439 = load %S.ast.Type, ptr %a321 - %t440 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t438, %S.ast.Type %t439) - store { ptr, i64, i64 } %t440, ptr %a442 - store { ptr, i64, i64 } { ptr @.str.4954, i64 1, i64 0 }, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - %t446 = load ptr, ptr %a1 - %t447 = load ptr, ptr %a1 - %t448 = load %S.ast.Type, ptr %a321 - %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) - %t450 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } { ptr @.str.4955, i64 2, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t452, ptr %a456 - call void @finch_str_drop(ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a453 - %t458 = call { ptr, i64, i64 } @finch.gen.load(ptr %t446, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t449, ptr %a459 - call void @finch_str_drop(ptr %a459) - store { ptr, i64, i64 } %t457, ptr %a460 - call void @finch_str_drop(ptr %a460) - store { ptr, i64, i64 } %t445, ptr %a462 - store { ptr, i64, i64 } %t458, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t445, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t458, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a461 - %t467 = load i64, ptr %t437 - %t468 = add i64 %t467, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t468, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t469 = load ptr, ptr %a303 - %t470 = getelementptr inbounds { ptr, i64, i64 }, ptr %t469, i64 %t467 - store { ptr, i64, i64 } %t466, ptr %t470 - store i64 %t468, ptr %t437 - %t471 = load i64, ptr %a278 - %t472 = add i64 %t471, 1 - store i64 %t472, ptr %a278 - br label %endif7841 -else7840: - %t473 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t474 = load { ptr, i64, i64 }, ptr %t473 - store { ptr, i64, i64 } %t474, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.4956, i64 6, i64 0 }, ptr %a476 - %t477 = call i32 @finch_str_eq(ptr %a475, ptr %a476) - %t478 = icmp ne i32 %t477, 0 - br i1 %t478, label %then7842, label %else7843 -then7842: - %t479 = load ptr, ptr %a1 - %t480 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t479, { ptr, i64, i64 } { ptr @.str.4957, i64 9, i64 0 }) - store { ptr, i64, i64 } %t480, ptr %a481 - %t482 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load i64, ptr %t483 - store i64 0, ptr %a485 - br label %for.cond7845 -for.cond7845: - %t486 = load i64, ptr %a485 - %t487 = icmp slt i64 %t486, %t484 - br i1 %t487, label %for.body7846, label %for.end7848 -for.body7846: - %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t489 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t490 = load i64, ptr %a485 - %t491 = load { ptr, i64, i64 }, ptr %t489 - %t492 = extractvalue { ptr, i64, i64 } %t491, 1 - %t493 = icmp uge i64 %t490, %t492 - br i1 %t493, label %range7849, label %inrange7850 -range7849: - call void @finch_panic_index(ptr @.str.4958, i64 4568, i64 %t490, i64 %t492) - unreachable -inrange7850: - %t494 = extractvalue { ptr, i64, i64 } %t491, 0 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i64 %t490 - %t496 = load { ptr, i64, i64 }, ptr %t495 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.4959, i64 3, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - %t500 = load { ptr, i64, i64 }, ptr %a497 - %t501 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a502, i64 %t501) - %t503 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a505 - store { ptr, i64, i64 } %t503, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t500, ptr %a507 - call void @finch_str_drop(ptr %a507) - store { ptr, i64, i64 } %t503, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = load { ptr, i64, i64 }, ptr %a504 - %t510 = load i64, ptr %t488 - %t511 = add i64 %t510, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t511, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t512 = load ptr, ptr %a277 - %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i64 %t510 - store { ptr, i64, i64 } %t509, ptr %t513 - store i64 %t511, ptr %t488 - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t516 = load i64, ptr %a485 - %t517 = load { ptr, i64, i64 }, ptr %t515 - %t518 = extractvalue { ptr, i64, i64 } %t517, 1 - %t519 = icmp uge i64 %t516, %t518 - br i1 %t519, label %range7851, label %inrange7852 -range7851: - call void @finch_panic_index(ptr @.str.4960, i64 4569, i64 %t516, i64 %t518) - unreachable -inrange7852: - %t520 = extractvalue { ptr, i64, i64 } %t517, 0 - %t521 = getelementptr inbounds { ptr, i64, i64 }, ptr %t520, i64 %t516 - %t522 = load { ptr, i64, i64 }, ptr %t521 - %t523 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a524, i64 %t523) - %t525 = load { ptr, i64, i64 }, ptr %a524 - store { ptr, i64, i64 } { ptr @.str.4961, i64 2, i64 0 }, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t525, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = load ptr, ptr %a1 - %t532 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.4962, i64 31, i64 0 }, ptr %a534 - store { ptr, i64, i64 } %t532, ptr %a535 - call void @finch_str_concat(ptr %a533, ptr %a534, ptr %a535) - %t536 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t536, ptr %a538 - store { ptr, i64, i64 } { ptr @.str.4963, i64 6, i64 0 }, ptr %a539 - call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) - store { ptr, i64, i64 } %t536, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a537 - %t542 = load i64, ptr %a485 - %t543 = mul i64 8, %t542 - call void @finch_str_from_int(ptr %a544, i64 %t543) - %t545 = load { ptr, i64, i64 }, ptr %a544 - store { ptr, i64, i64 } %t541, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - store { ptr, i64, i64 } %t541, ptr %a549 - call void @finch_str_drop(ptr %a549) - store { ptr, i64, i64 } %t545, ptr %a550 - call void @finch_str_drop(ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a546 - %t552 = call { ptr, i64, i64 } @finch.gen.op(ptr %t531, { ptr, i64, i64 } %t551) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.gen.store(ptr %t514, { ptr, i64, i64 } %t522, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t552) - store { ptr, i64, i64 } %t530, ptr %a554 - call void @finch_str_drop(ptr %a554) - store { ptr, i64, i64 } %t552, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load i64, ptr %a278 - %t557 = add i64 %t556, 1 - store i64 %t557, ptr %a278 - br label %for.step7847 -for.step7847: - %t558 = load i64, ptr %a485 - %t559 = add i64 %t558, 1 - store i64 %t559, ptr %a485 - br label %for.cond7845 -for.end7848: - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t561 = load ptr, ptr %a1 - %t562 = load %S.ast.Type, ptr %a321 - %t563 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t561, %S.ast.Type %t562) - store { ptr, i64, i64 } %t563, ptr %a565 - store { ptr, i64, i64 } { ptr @.str.4964, i64 1, i64 0 }, ptr %a566 - call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) - store { ptr, i64, i64 } %t563, ptr %a567 - call void @finch_str_drop(ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a564 - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a321 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - %t573 = load { ptr, i64, i64 }, ptr %a481 - %t574 = call { ptr, i64, i64 } @finch.gen.load(ptr %t569, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_drop(ptr %a575) - store { ptr, i64, i64 } %t568, ptr %a577 - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) - store { ptr, i64, i64 } %t568, ptr %a579 - call void @finch_str_drop(ptr %a579) - store { ptr, i64, i64 } %t574, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a576 - %t582 = load i64, ptr %t560 - %t583 = add i64 %t582, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t583, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t584 = load ptr, ptr %a303 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i64 %t582 - store { ptr, i64, i64 } %t581, ptr %t585 - store i64 %t583, ptr %t560 - call void @finch_str_drop(ptr %a481) - br label %endif7844 -else7843: - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t587 = load ptr, ptr %a1 - %t588 = load %S.ast.Type, ptr %a321 - %t589 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t587, %S.ast.Type %t588) - %t590 = load ptr, ptr %a1 - %t591 = load %S.ast.Type, ptr %a321 - %t592 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t590, %S.ast.Type %t591) - store { ptr, i64, i64 } %t589, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t589, ptr %a596 - call void @finch_str_drop(ptr %a596) - store { ptr, i64, i64 } %t592, ptr %a597 - call void @finch_str_drop(ptr %a597) - %t598 = load { ptr, i64, i64 }, ptr %a593 - store { ptr, i64, i64 } %t598, ptr %a600 - store { ptr, i64, i64 } { ptr @.str.4965, i64 3, i64 0 }, ptr %a601 - call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) - store { ptr, i64, i64 } %t598, ptr %a602 - call void @finch_str_drop(ptr %a602) - %t603 = load { ptr, i64, i64 }, ptr %a599 - %t604 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a605, i64 %t604) - %t606 = load { ptr, i64, i64 }, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a608 - store { ptr, i64, i64 } %t606, ptr %a609 - call void @finch_str_concat(ptr %a607, ptr %a608, ptr %a609) - store { ptr, i64, i64 } %t603, ptr %a610 - call void @finch_str_drop(ptr %a610) - store { ptr, i64, i64 } %t606, ptr %a611 - call void @finch_str_drop(ptr %a611) - %t612 = load { ptr, i64, i64 }, ptr %a607 - %t613 = load i64, ptr %t586 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a277 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t586 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t618 = load ptr, ptr %a1 - %t619 = load %S.ast.Type, ptr %a321 - %t620 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t618, %S.ast.Type %t619) - store { ptr, i64, i64 } %t620, ptr %a622 - store { ptr, i64, i64 } { ptr @.str.4966, i64 3, i64 0 }, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - %t626 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a627, i64 %t626) - %t628 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t625, ptr %a630 - store { ptr, i64, i64 } %t628, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t625, ptr %a632 - call void @finch_str_drop(ptr %a632) - store { ptr, i64, i64 } %t628, ptr %a633 - call void @finch_str_drop(ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a629 - %t635 = load i64, ptr %t617 - %t636 = add i64 %t635, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t637 = load ptr, ptr %a303 - %t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635 - store { ptr, i64, i64 } %t634, ptr %t638 - store i64 %t636, ptr %t617 - %t639 = load i64, ptr %a278 - %t640 = add i64 %t639, 1 - store i64 %t640, ptr %a278 - br label %endif7844 -endif7844: - br label %endif7841 -endif7841: - br label %endif7838 -endif7838: - call void @finch.drop.S_gen_Abi(ptr %a333) - call void @finch.drop.S_ast_Type(ptr %a321) - br label %for.step7830 -for.step7830: - %t641 = load i64, ptr %a307 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a307 - br label %for.cond7828 -for.end7831: - %t643 = load ptr, ptr %a1 - %t644 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t645 = load %S.ast.Type, ptr %t644 - %t646 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t643, %S.ast.Type %t645) - store { ptr, i64, i64 } { ptr @.str.4967, i64 5, i64 0 }, ptr %a648 - store { ptr, i64, i64 } %t646, ptr %a649 - call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649) - store { ptr, i64, i64 } %t646, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } %t651, ptr %a653 - store { ptr, i64, i64 } { ptr @.str.4968, i64 1, i64 0 }, ptr %a654 - call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) - store { ptr, i64, i64 } %t651, ptr %a655 - call void @finch_str_drop(ptr %a655) - %t656 = load { ptr, i64, i64 }, ptr %a652 - %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t656, ptr %a660 - store { ptr, i64, i64 } %t658, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t656, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - store { ptr, i64, i64 } %t663, ptr %a665 - store { ptr, i64, i64 } { ptr @.str.4969, i64 1, i64 0 }, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t663, ptr %a667 - call void @finch_str_drop(ptr %a667) - %t668 = load { ptr, i64, i64 }, ptr %a664 - %t669 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4970, i64 2, i64 0 }, ptr %a670 - call void @finch_str_join(ptr %a671, ptr %a303, ptr %a670) - %t672 = load { ptr, i64, i64 }, ptr %a671 - store { ptr, i64, i64 } %t668, ptr %a674 - store { ptr, i64, i64 } %t672, ptr %a675 - call void @finch_str_concat(ptr %a673, ptr %a674, ptr %a675) - store { ptr, i64, i64 } %t668, ptr %a676 - call void @finch_str_drop(ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.4971, i64 1, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - store { ptr, i64, i64 } %t683, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.4972, i64 0, i64 0 }, ptr %a685 - %t686 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t687 = getelementptr inbounds %S.ast.Type, ptr %t686, i32 0, i32 0 - %t688 = load { ptr, i64, i64 }, ptr %t687 - store { ptr, i64, i64 } %t688, ptr %a689 - store { ptr, i64, i64 } { ptr @.str.4973, 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 %then7853, label %else7854 -then7853: - %t693 = load ptr, ptr %a1 - %t694 = load { ptr, i64, i64 }, ptr %a684 - call void @finch.gen.emit(ptr %t693, { ptr, i64, i64 } %t694) - %t695 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t695, { ptr, i64, i64 } { ptr @.str.4974, i64 8, i64 0 }) - br label %endif7855 -else7854: - %t696 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t697 = load i1, ptr %t696 - br i1 %t697, label %then7856, label %else7857 -then7856: - %t698 = load ptr, ptr %a1 - %t699 = load ptr, ptr %a1 - %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t701 = load %S.ast.Type, ptr %t700 - %t702 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t699, %S.ast.Type %t701) - %t703 = load ptr, ptr %a1 - %t704 = load { ptr, i64, i64 }, ptr %a684 - %t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704) - %t706 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.store(ptr %t698, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t705, { ptr, i64, i64 } %t706) - store { ptr, i64, i64 } %t702, ptr %a707 - call void @finch_str_drop(ptr %a707) - store { ptr, i64, i64 } %t705, ptr %a708 - call void @finch_str_drop(ptr %a708) - %t709 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t709, { ptr, i64, i64 } { ptr @.str.4975, i64 8, i64 0 }) - br label %endif7858 -else7857: - %t710 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t711 = getelementptr inbounds %S.gen.Abi, ptr %t710, i32 0, i32 0 - %t712 = load { ptr, i64, i64 }, ptr %t711 - store { ptr, i64, i64 } %t712, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.4976, i64 6, i64 0 }, ptr %a714 - %t715 = call i32 @finch_str_eq(ptr %a713, ptr %a714) - %t716 = icmp ne i32 %t715, 0 - br i1 %t716, label %then7859, label %else7860 -then7859: - %t717 = load ptr, ptr %a1 - %t718 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t717, { ptr, i64, i64 } { ptr @.str.4977, i64 9, i64 0 }) - store { ptr, i64, i64 } %t718, ptr %a719 - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t723 = load %S.ast.Type, ptr %t722 - %t724 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t721, %S.ast.Type %t723) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a684 - %t727 = call { ptr, i64, i64 } @finch.gen.op(ptr %t725, { ptr, i64, i64 } %t726) - %t728 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.store(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t727, { ptr, i64, i64 } %t728) - store { ptr, i64, i64 } %t724, ptr %a729 - call void @finch_str_drop(ptr %a729) - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_drop(ptr %a730) - %t731 = load ptr, ptr %a1 - %t732 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t733 = getelementptr inbounds %S.gen.Abi, ptr %t732, i32 0, i32 2 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } { ptr @.str.4978, i64 4, i64 0 }, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - %t738 = load { ptr, i64, i64 }, ptr %a735 - store { ptr, i64, i64 } %t738, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.4979, i64 1, i64 0 }, ptr %a741 - call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741) - store { ptr, i64, i64 } %t738, ptr %a742 - call void @finch_str_drop(ptr %a742) - %t743 = load { ptr, i64, i64 }, ptr %a739 - %t744 = load ptr, ptr %a1 - %t745 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t746 = getelementptr inbounds %S.gen.Abi, ptr %t745, i32 0, i32 2 - %t747 = load { ptr, i64, i64 }, ptr %t746 - %t748 = load { ptr, i64, i64 }, ptr %a719 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t744, { ptr, i64, i64 } %t747, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t743, ptr %a751 - store { ptr, i64, i64 } %t749, ptr %a752 - call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752) - store { ptr, i64, i64 } %t743, ptr %a753 - call void @finch_str_drop(ptr %a753) - store { ptr, i64, i64 } %t749, ptr %a754 - call void @finch_str_drop(ptr %a754) - %t755 = load { ptr, i64, i64 }, ptr %a750 - call void @finch.gen.emit(ptr %t731, { ptr, i64, i64 } %t755) - store { ptr, i64, i64 } %t755, ptr %a756 - call void @finch_str_drop(ptr %a756) - call void @finch_str_drop(ptr %a719) - br label %endif7861 -else7860: - %t757 = load ptr, ptr %a1 - %t758 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t759 = load %S.ast.Type, ptr %t758 - %t760 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t757, %S.ast.Type %t759) - %t761 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } %t760, ptr %a685 - store { ptr, i64, i64 } %t761, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load ptr, ptr %a1 - %t764 = load ptr, ptr %a1 - %t765 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t766 = load %S.ast.Type, ptr %t765 - %t767 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t764, %S.ast.Type %t766) - store { ptr, i64, i64 } { ptr @.str.4980, i64 4, i64 0 }, ptr %a769 - store { ptr, i64, i64 } %t767, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.4981, i64 1, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = load ptr, ptr %a1 - %t779 = load { ptr, i64, i64 }, ptr %a684 - %t780 = call { ptr, i64, i64 } @finch.gen.op(ptr %t778, { ptr, i64, i64 } %t779) - store { ptr, i64, i64 } %t777, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t777, ptr %a784 - call void @finch_str_drop(ptr %a784) - store { ptr, i64, i64 } %t780, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a781 - call void @finch.gen.emit(ptr %t763, { ptr, i64, i64 } %t786) - store { ptr, i64, i64 } %t786, ptr %a787 - call void @finch_str_drop(ptr %a787) - br label %endif7861 -endif7861: - br label %endif7858 -endif7858: - br label %endif7855 -endif7855: - %t788 = load ptr, ptr %a1 - %t789 = load %S.gen.Saved, ptr %a276 - %t790 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } { ptr @.str.4982, i64 15, i64 0 }, ptr %a792 - store { ptr, i64, i64 } %t790, ptr %a793 - call void @finch_str_concat(ptr %a791, ptr %a792, ptr %a793) - %t794 = load { ptr, i64, i64 }, ptr %a791 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.4983, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - store { ptr, i64, i64 } %t794, ptr %a798 - call void @finch_str_drop(ptr %a798) - %t799 = load { ptr, i64, i64 }, ptr %a795 - %t800 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - store { ptr, i64, i64 } %t799, ptr %a803 - store { ptr, i64, i64 } %t801, ptr %a804 - call void @finch_str_concat(ptr %a802, ptr %a803, ptr %a804) - store { ptr, i64, i64 } %t799, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load { ptr, i64, i64 }, ptr %a802 - store { ptr, i64, i64 } %t806, ptr %a808 - store { ptr, i64, i64 } { ptr @.str.4984, i64 1, i64 0 }, ptr %a809 - call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) - store { ptr, i64, i64 } %t806, ptr %a810 - call void @finch_str_drop(ptr %a810) - %t811 = load { ptr, i64, i64 }, ptr %a807 - %t812 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t811, ptr %a814 - store { ptr, i64, i64 } %t812, ptr %a815 - call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) - store { ptr, i64, i64 } %t811, ptr %a816 - call void @finch_str_drop(ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a813 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.4985, i64 1, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4986, i64 2, i64 0 }, ptr %a824 - call void @finch_str_join(ptr %a825, ptr %a277, ptr %a824) - %t826 = load { ptr, i64, i64 }, ptr %a825 - store { ptr, i64, i64 } %t822, ptr %a828 - store { ptr, i64, i64 } %t826, ptr %a829 - call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) - store { ptr, i64, i64 } %t822, ptr %a830 - call void @finch_str_drop(ptr %a830) - store { ptr, i64, i64 } %t826, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a827 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.4987, i64 1, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.endHelper(ptr %t788, %S.gen.Saved %t789, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a685) - call void @finch_str_drop(ptr %a684) - call void @finch.drop.arr_str(ptr %a303) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.arr_str(ptr %a277) - call void @finch.drop.S_gen_Saved(ptr %a276) - call void @finch.drop.S_gen_Plan(ptr %a273) - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t839 -} - -define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) { -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 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.ast.Type, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca i64, align 16 - %a85 = alloca i64, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %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 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a244 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7865, label %ok7866 -panic7865: - call void @finch_panic(ptr @.str.4988, i64 4601, ptr @.str.4989) - unreachable -ok7866: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7867, label %inrange7868 -range7867: - call void @finch_panic_index(ptr @.str.4990, i64 4601, i64 %t7, i64 %t9) - unreachable -inrange7868: - %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 %range7869, label %inrange7870 -range7869: - call void @finch_panic_index(ptr @.str.4991, i64 4603, i64 0, i64 %t25) - unreachable -inrange7870: - %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 %then7871, label %endif7873 -then7871: - %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 %range7874, label %inrange7875 -range7874: - call void @finch_panic_index(ptr @.str.4992, i64 4605, i64 0, i64 %t39) - unreachable -inrange7875: - %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.4993, 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) - store { ptr, i64, i64 } %t49, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch_str_drop(ptr %a59) - br label %endif7873 -endif7873: - %t60 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4994, i64 4, i64 0 }, 0 - %t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.ast.Type %t60, { ptr, i64, i64 } %t65, 2 - %t67 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_copy(ptr %a70, ptr %a69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = insertvalue %S.ast.Type %t66, { ptr, i64, i64 } %t71, 3 - store %S.ast.Type %t72, ptr %a73 - %t74 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3 - %t75 = load i1, ptr %t74 - br i1 %t75, label %then7876, label %endif7878 -then7876: - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = call i64 @finch_str_to_int(ptr %a80, ptr @.str.4995, i64 4609) - store i64 -1, ptr %a82 - %t83 = load i64, ptr %t77 - %t84 = load ptr, ptr %t76 - store i64 0, ptr %a85 - br label %find.cond7879 -find.cond7879: - %t86 = load i64, ptr %a85 - %t87 = icmp slt i64 %t86, %t83 - br i1 %t87, label %find.body7880, label %find.end7883 -find.body7880: - %t88 = getelementptr inbounds i64, ptr %t84, i64 %t86 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, %t81 - br i1 %t90, label %find.hit7881, label %find.next7882 -find.hit7881: - store i64 %t86, ptr %a82 - br label %find.end7883 -find.next7882: - %t91 = add i64 %t86, 1 - store i64 %t91, ptr %a85 - br label %find.cond7879 -find.end7883: - %t92 = load i64, ptr %a82 - %t93 = icmp sge i64 %t92, 0 - %t94 = xor i1 %t93, true - br i1 %t94, label %then7884, label %endif7886 -then7884: - %t95 = load ptr, ptr %a1 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = extractvalue { ptr, i64, i64 } %t97, 1 - %t99 = icmp uge i64 0, %t98 - br i1 %t99, label %range7887, label %inrange7888 -range7887: - call void @finch_panic_index(ptr @.str.4996, i64 4610, i64 0, i64 %t98) - unreachable -inrange7888: - %t100 = extractvalue { ptr, i64, i64 } %t97, 0 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 0 - %t102 = load %S.ast.Node, ptr %t101 - %t103 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4997, i64 37, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a105 - %t109 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t108, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t108, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t95, %S.ast.Node %t102, { ptr, i64, i64 } %t115) - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_drop(ptr %a116) - br label %endif7886 -endif7886: - %t117 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0 - %t123 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t127 -endif7878: - %t128 = load ptr, ptr %a1 - %t129 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t130 = load { ptr, i64, i64 }, ptr %t129 - %t131 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 - %t132 = load %S.ast.Type, ptr %t131 - %t133 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4998, i64 3, i64 0 }) - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t130, %S.ast.Type %t132, %S.ast.Type %t133) - store %S.ast.Type %t133, ptr %a135 - call void @finch.drop.S_ast_Type(ptr %a135) - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4999, i64 0, i64 0 }, ptr %a137 - %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond7889 -for.cond7889: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body7890, label %for.end7892 -for.body7890: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5000, i64 12, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5001, i64 2, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t156 = load i64, ptr %a141 - %t157 = load { ptr, i64, i64 }, ptr %t155 - %t158 = extractvalue { ptr, i64, i64 } %t157, 1 - %t159 = icmp uge i64 %t156, %t158 - br i1 %t159, label %range7893, label %inrange7894 -range7893: - call void @finch_panic_index(ptr @.str.5002, i64 4617, i64 %t156, i64 %t158) - unreachable -inrange7894: - %t160 = extractvalue { ptr, i64, i64 } %t157, 0 - %t161 = getelementptr inbounds i64, ptr %t160, i64 %t156 - %t162 = load i64, ptr %t161 - call void @finch_str_from_int(ptr %a163, i64 %t162) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t154, ptr %a166 - store { ptr, i64, i64 } %t164, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t154, ptr %a168 - call void @finch_str_drop(ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a165 - %t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t170) - store { ptr, i64, i64 } %t170, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t171, ptr %a173 - %t174 = load i64, ptr %a141 - %t175 = icmp eq i64 %t174, 0 - br i1 %t175, label %then7895, label %else7896 -then7895: - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_copy(ptr %a178, ptr %a177) - %t179 = load { ptr, i64, i64 }, ptr %a178 - %t180 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t179, ptr %a137 - store { ptr, i64, i64 } %t180, ptr %a181 - call void @finch_str_drop(ptr %a181) - br label %endif7897 -else7896: - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5003, i64 6, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5004, i64 2, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t192, ptr %a195 - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t199, ptr %a137 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif7897 -endif7897: - call void @finch_str_drop(ptr %a173) - br label %for.step7891 -for.step7891: - %t203 = load i64, ptr %a141 - %t204 = add i64 %t203, 1 - store i64 %t204, ptr %a141 - br label %for.cond7889 -for.end7892: - %t205 = load ptr, ptr %a1 - %t206 = load ptr, ptr %a1 - %t207 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5005, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.5006, i64 6, i64 0 }, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - %t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t206, { ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } { ptr @.str.5007, i64 32, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - %t225 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t205, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t224, %S.ast.Node %t225) - store { ptr, i64, i64 } %t217, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5008, i64 10, i64 0 }, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5009, i64 7, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t228, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t242, ptr %a243 - call void @finch.copy.S_ast_Type(ptr %a244, ptr %a243) - %t245 = load %S.ast.Type, ptr %a244 - %t246 = insertvalue %S.gen.Val %t241, %S.ast.Type %t245, 1 - call void @finch_str_drop(ptr %a137) - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t246 -} - -define internal { ptr, i64, i64 } @finch.gen.cExt(ptr %p0, %S.ast.Type %p1) { -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.5010, 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.from7898 -logic.from7898: - br i1 %t8, label %logic.end7900, label %logic.rhs7899 -logic.rhs7899: - %t9 = load %S.ast.Type, ptr %a2 - %t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9) - br label %logic.rend7901 -logic.rend7901: - br label %logic.end7900 -logic.end7900: - %t11 = phi i1 [ true, %logic.from7898 ], [ %t10, %logic.rend7901 ] - br i1 %t11, label %then7902, label %endif7904 -then7902: - %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 %then7905, label %endif7907 -then7905: - ret { ptr, i64, i64 } { ptr @.str.5011, i64 8, i64 0 } -endif7907: - br label %endif7904 -endif7904: - %t15 = load %S.ast.Type, ptr %a2 - %t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15) - br label %logic.from7908 -logic.from7908: - br i1 %t16, label %logic.end7910, label %logic.rhs7909 -logic.rhs7909: - %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.5012, 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.from7911 -logic.from7911: - br i1 %t22, label %logic.rhs7912, label %logic.end7913 -logic.rhs7912: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic7914, label %ok7915 -panic7914: - call void @finch_panic(ptr @.str.5013, i64 4637, ptr @.str.5014) - unreachable -ok7915: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 31 - %t26 = load %S.platform.Target, ptr %t25 - %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - br label %logic.rend7916 -logic.rend7916: - br label %logic.end7913 -logic.end7913: - %t28 = phi i1 [ false, %logic.from7911 ], [ %t27, %logic.rend7916 ] - br label %logic.rend7917 -logic.rend7917: - br label %logic.end7910 -logic.end7910: - %t29 = phi i1 [ true, %logic.from7908 ], [ %t28, %logic.rend7917 ] - br label %logic.from7918 -logic.from7918: - br i1 %t29, label %logic.rhs7919, label %logic.end7920 -logic.rhs7919: - %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.rend7921 -logic.rend7921: - br label %logic.end7920 -logic.end7920: - %t33 = phi i1 [ false, %logic.from7918 ], [ %t32, %logic.rend7921 ] - br i1 %t33, label %then7922, label %endif7924 -then7922: - ret { ptr, i64, i64 } { ptr @.str.5015, i64 8, i64 0 } -endif7924: - %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.5016, 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.from7925 -logic.from7925: - br i1 %t39, label %logic.rhs7926, label %logic.end7927 -logic.rhs7926: - %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.rend7928 -logic.rend7928: - br label %logic.end7927 -logic.end7927: - %t43 = phi i1 [ false, %logic.from7925 ], [ %t42, %logic.rend7928 ] - br i1 %t43, label %then7929, label %endif7931 -then7929: - ret { ptr, i64, i64 } { ptr @.str.5017, i64 8, i64 0 } -endif7931: - ret { ptr, i64, i64 } { ptr @.str.5018, 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.5019, 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 %then7932, label %endif7934 -then7932: - ret { ptr, i64, i64 } { ptr @.str.5020, i64 3, i64 0 } -endif7934: - %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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca i64, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a240 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a249 = alloca %S.ast.Type, align 16 - %a261 = alloca %S.gen.Plan, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a327 = alloca i64, align 16 - %a342 = alloca %S.ast.Type, align 16 - %a343 = alloca %S.ast.Type, align 16 - %a345 = alloca %S.ast.Type, align 16 - %a354 = alloca %S.gen.Abi, align 16 - %a355 = alloca %S.gen.Abi, align 16 - %a357 = alloca %S.gen.Abi, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca %S.gen.Val, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca %S.gen.Val, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a407 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca i64, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca %S.gen.Val, align 16 - %a699 = alloca %S.ast.Type, align 16 - %a700 = alloca %S.ast.Type, align 16 - %a702 = alloca %S.ast.Type, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca %S.gen.Val, align 16 - %a721 = alloca %S.gen.Val, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca %S.ast.Type, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca %S.ast.Type, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca %S.ast.Type, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca %S.ast.Type, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca %S.ast.Type, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = 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 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca i64, align 16 - %a900 = alloca i64, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a939 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a973 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a981 = alloca { ptr, i64, i64 }, align 16 - %a982 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a999 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = 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 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1033 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1039 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1042 = alloca { ptr, i64, i64 }, align 16 - %a1043 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1048 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1077 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca %S.ast.Type, align 16 - %a1087 = alloca %S.ast.Type, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca %S.ast.Type, align 16 - %a1107 = alloca %S.ast.Type, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca { ptr, i64, i64 }, align 16 - %a1126 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1142 = alloca %S.ast.Type, align 16 - %a1143 = alloca %S.ast.Type, align 16 - %a1148 = alloca { ptr, i64, i64 }, align 16 - %a1149 = alloca { ptr, i64, i64 }, align 16 - %a1154 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1161 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1174 = alloca { ptr, i64, i64 }, align 16 - %a1175 = alloca { ptr, i64, i64 }, align 16 - %a1176 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca %S.ast.Type, align 16 - %a1186 = alloca %S.ast.Type, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca %S.ast.Type, align 16 - %a1196 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.cimport.CFunc %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7935, label %ok7936 -panic7935: - call void @finch_panic(ptr @.str.5021, i64 4654, ptr @.str.5022) - unreachable -ok7936: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then7937, label %endif7939 -then7937: - 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.cond7940 -each.cond7940: - %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.body7941, label %each.end7943 -each.body7941: - %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.step7942 -each.step7942: - %t26 = load i64, ptr %a10 - %t27 = add i64 %t26, 1 - store i64 %t27, ptr %a10 - br label %each.cond7940 -each.end7943: - %t28 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then7944, label %endif7946 -then7944: - %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.5023, i64 3, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif7946 -endif7946: - %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.5024, 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.5025, i64 7, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t54 = load %S.ast.Type, ptr %t53 - %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.5026, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t66, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t66, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5027, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5028, i64 2, i64 0 }, ptr %a80 - call void @finch_str_join(ptr %a81, ptr %a8, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t78, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t78, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.5029, i64 5, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t93, { ptr, i64, i64 } { ptr @.str.5030, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - call void @finch.drop.arr_str(ptr %a8) - br label %endif7939 -endif7939: - %t95 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = icmp sgt i64 %t97, 0 - br i1 %t98, label %then7947, label %endif7949 -then7947: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } { ptr @.str.5031, i64 16, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5032, i64 35, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t113 = load { ptr, i64, i64 }, ptr %t112 - store { ptr, i64, i64 } %t111, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t111, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif7949 -endif7949: - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t120, i32 0, i32 1 - %t122 = load i64, ptr %t121 - store i64 %t122, ptr %a123 - %t124 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t125 = load i1, ptr %t124 - br i1 %t125, label %then7950, label %else7951 -then7950: - %t126 = load i64, ptr %a123 - %t127 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 - %t129 = load i64, ptr %t128 - %t130 = icmp slt i64 %t126, %t129 - br i1 %t130, label %then7953, label %endif7955 -then7953: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t134 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } { ptr @.str.5033, i64 1, i64 0 }, ptr %a136 - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a135 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5034, i64 17, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t138, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - %t144 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load i64, ptr %t145 - call void @finch_str_from_int(ptr %a147, i64 %t146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t143, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t143, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.5035, i64 22, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a161, i64 %t160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t159, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.fail(ptr %t131, %S.ast.Node %t132, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - br label %endif7955 -endif7955: - br label %endif7952 -else7951: - %t170 = load i64, ptr %a123 - %t171 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load i64, ptr %t172 - %t174 = icmp ne i64 %t170, %t173 - br i1 %t174, label %then7956, label %endif7958 -then7956: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - %t177 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } { ptr @.str.5036, i64 1, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5037, i64 8, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - call void @finch_str_from_int(ptr %a191, i64 %t190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t187, ptr %a194 - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t187, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t198, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.5038, i64 22, i64 0 }, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t198, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - %t204 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t203, ptr %a210 - call void @finch_str_drop(ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.fail(ptr %t175, %S.ast.Node %t176, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7958 -endif7958: - br label %endif7952 -endif7952: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = load %S.ast.Node, ptr %a2 - %t218 = call %S.ast.Type @finch.gen.resolve(ptr %t214, %S.ast.Type %t216, %S.ast.Node %t217) - store %S.ast.Type %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load %S.ast.Node, ptr %a2 - %t222 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = load %S.ast.Type, ptr %a219 - call void @finch.gen.checkByValue(ptr %t220, %S.ast.Node %t221, { ptr, i64, i64 } %t223, %S.ast.Type %t224, { ptr, i64, i64 } { ptr @.str.5039, i64 7, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - store i64 0, ptr %a227 - br label %each.cond7959 -each.cond7959: - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i32 0, i32 1 - %t229 = load i64, ptr %t228 - %t230 = load i64, ptr %a227 - %t231 = icmp slt i64 %t230, %t229 - br i1 %t231, label %each.body7960, label %each.end7962 -each.body7960: - %t232 = load ptr, ptr %t226 - %t233 = getelementptr inbounds %S.ast.Type, ptr %t232, i64 %t230 - %t234 = load %S.ast.Type, ptr %t233 - store %S.ast.Type %t234, ptr %a235 - %t236 = load ptr, ptr %a1 - %t237 = load %S.ast.Type, ptr %a235 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.ast.Type @finch.gen.resolve(ptr %t236, %S.ast.Type %t237, %S.ast.Node %t238) - store %S.ast.Type %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load %S.ast.Node, ptr %a2 - %t243 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - %t245 = load %S.ast.Type, ptr %a240 - call void @finch.gen.checkByValue(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } { ptr @.str.5040, i64 5, i64 0 }) - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a225, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %a240 - store %S.ast.Type %t247, ptr %a248 - call void @finch.copy.S_ast_Type(ptr %a249, ptr %a248) - %t250 = load %S.ast.Type, ptr %a249 - %t251 = load i64, ptr %t246 - %t252 = add i64 %t251, 1 - call void @finch_arr_reserve(ptr %a225, i64 %t252, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t253 = load ptr, ptr %a225 - %t254 = getelementptr inbounds %S.ast.Type, ptr %t253, i64 %t251 - store %S.ast.Type %t250, ptr %t254 - store i64 %t252, ptr %t246 - call void @finch.drop.S_ast_Type(ptr %a240) - br label %each.step7961 -each.step7961: - %t255 = load i64, ptr %a227 - %t256 = add i64 %t255, 1 - store i64 %t256, ptr %a227 - br label %each.cond7959 -each.end7962: - %t257 = load ptr, ptr %a1 - %t258 = load %S.ast.Type, ptr %a219 - %t259 = load { ptr, i64, i64 }, ptr %a225 - %t260 = call %S.gen.Plan @finch.gen.makePlan(ptr %t257, %S.ast.Type %t258, { ptr, i64, i64 } %t259) - store %S.gen.Plan %t260, ptr %a261 - store { ptr, i64, i64 } zeroinitializer, ptr %a262 - store { ptr, i64, i64 } zeroinitializer, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.5041, i64 0, i64 0 }, ptr %a264 - %t265 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t266 = load i1, ptr %t265 - br i1 %t266, label %then7963, label %endif7965 -then7963: - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load %S.ast.Type, ptr %a219 - %t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269) - %t271 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t267, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t271, ptr %a264 - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a219 - %t278 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.5042, i64 9, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.5043, i64 10, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load i64, ptr %t275 - %t290 = add i64 %t289, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t290, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t291 = load ptr, ptr %a262 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i64 %t289 - store { ptr, i64, i64 } %t288, ptr %t292 - store i64 %t290, ptr %t275 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t294 = load ptr, ptr %a1 - %t295 = load %S.ast.Type, ptr %a219 - %t296 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t294, %S.ast.Type %t295) - store { ptr, i64, i64 } { ptr @.str.5044, i64 9, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t301, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.5045, i64 11, i64 0 }, ptr %a304 - call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) - store { ptr, i64, i64 } %t301, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a302 - %t307 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t306, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t306, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load i64, ptr %t293 - %t314 = add i64 %t313, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t314, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t315 = load ptr, ptr %a263 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t315, i64 %t313 - store { ptr, i64, i64 } %t312, ptr %t316 - store i64 %t314, ptr %t293 - br label %endif7965 -endif7965: - store { ptr, i64, i64 } zeroinitializer, ptr %a317 - %t318 = load ptr, ptr %a1 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic7966, label %ok7967 -panic7966: - call void @finch_panic(ptr @.str.5046, i64 4693, ptr @.str.5047) - unreachable -ok7967: - %t320 = getelementptr inbounds %S.gen.Gen, ptr %t318, i32 0, i32 11 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i32 0, i32 1 - %t322 = load i64, ptr %t321 - store i64 %t322, ptr %a323 - %t324 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i32 0, i32 1 - %t326 = load i64, ptr %t325 - store i64 0, ptr %a327 - br label %for.cond7968 -for.cond7968: - %t328 = load i64, ptr %a327 - %t329 = icmp slt i64 %t328, %t326 - br i1 %t329, label %for.body7969, label %for.end7971 -for.body7969: - %t330 = load i64, ptr %a327 - %t331 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = icmp slt i64 %t330, %t333 - br i1 %t334, label %then7972, label %endif7974 -then7972: - %t335 = load i64, ptr %a327 - %t336 = load { ptr, i64, i64 }, ptr %a225 - %t337 = extractvalue { ptr, i64, i64 } %t336, 1 - %t338 = icmp uge i64 %t335, %t337 - br i1 %t338, label %range7975, label %inrange7976 -range7975: - call void @finch_panic_index(ptr @.str.5048, i64 4696, i64 %t335, i64 %t337) - unreachable -inrange7976: - %t339 = extractvalue { ptr, i64, i64 } %t336, 0 - %t340 = getelementptr inbounds %S.ast.Type, ptr %t339, i64 %t335 - %t341 = load %S.ast.Type, ptr %t340 - store %S.ast.Type %t341, ptr %a342 - call void @finch.copy.S_ast_Type(ptr %a343, ptr %a342) - %t344 = load %S.ast.Type, ptr %a343 - store %S.ast.Type %t344, ptr %a345 - %t346 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 1 - %t347 = load i64, ptr %a327 - %t348 = load { ptr, i64, i64 }, ptr %t346 - %t349 = extractvalue { ptr, i64, i64 } %t348, 1 - %t350 = icmp uge i64 %t347, %t349 - br i1 %t350, label %range7977, label %inrange7978 -range7977: - call void @finch_panic_index(ptr @.str.5049, i64 4697, i64 %t347, i64 %t349) - unreachable -inrange7978: - %t351 = extractvalue { ptr, i64, i64 } %t348, 0 - %t352 = getelementptr inbounds %S.gen.Abi, ptr %t351, i64 %t347 - %t353 = load %S.gen.Abi, ptr %t352 - store %S.gen.Abi %t353, ptr %a354 - call void @finch.copy.S_gen_Abi(ptr %a355, ptr %a354) - %t356 = load %S.gen.Abi, ptr %a355 - store %S.gen.Abi %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t361 = load i64, ptr %a327 - %t362 = load { ptr, i64, i64 }, ptr %t360 - %t363 = extractvalue { ptr, i64, i64 } %t362, 1 - %t364 = icmp uge i64 %t361, %t363 - br i1 %t364, label %range7979, label %inrange7980 -range7979: - call void @finch_panic_index(ptr @.str.5050, i64 4698, i64 %t361, i64 %t363) - unreachable -inrange7980: - %t365 = extractvalue { ptr, i64, i64 } %t362, 0 - %t366 = getelementptr inbounds %S.ast.Node, ptr %t365, i64 %t361 - %t367 = load %S.ast.Node, ptr %t366 - %t368 = load %S.ast.Type, ptr %a345 - %t369 = call %S.gen.Val @finch.gen.exprWant(ptr %t359, %S.ast.Node %t367, %S.ast.Type %t368) - %t370 = load %S.ast.Type, ptr %a345 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t372 = load i64, ptr %a327 - %t373 = load { ptr, i64, i64 }, ptr %t371 - %t374 = extractvalue { ptr, i64, i64 } %t373, 1 - %t375 = icmp uge i64 %t372, %t374 - br i1 %t375, label %range7981, label %inrange7982 -range7981: - call void @finch_panic_index(ptr @.str.5051, i64 4698, i64 %t372, i64 %t374) - unreachable -inrange7982: - %t376 = extractvalue { ptr, i64, i64 } %t373, 0 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i64 %t372 - %t378 = load %S.ast.Node, ptr %t377 - %t379 = load i64, ptr %a327 - %t380 = add i64 %t379, 1 - call void @finch_str_from_int(ptr %a381, i64 %t380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.5052, i64 9, i64 0 }, ptr %a384 - store { ptr, i64, i64 } %t382, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.5053, i64 4, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t392, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t392, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = call %S.gen.Val @finch.gen.coerce(ptr %t358, %S.gen.Val %t369, %S.ast.Type %t370, %S.ast.Node %t378, { ptr, i64, i64 } %t399) - store %S.gen.Val %t369, ptr %a401 - call void @finch.drop.S_gen_Val(ptr %a401) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store %S.gen.Val %t400, ptr %a403 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t405 = load %S.gen.Val, ptr %a403 - store %S.gen.Val %t405, ptr %a406 - call void @finch.copy.S_gen_Val(ptr %a407, ptr %a406) - %t408 = load %S.gen.Val, ptr %a407 - %t409 = load i64, ptr %t404 - %t410 = add i64 %t409, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t410, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t411 = load ptr, ptr %a317 - %t412 = getelementptr inbounds %S.gen.Val, ptr %t411, i64 %t409 - store %S.gen.Val %t408, ptr %t412 - store i64 %t410, ptr %t404 - %t413 = load ptr, ptr %a1 - %t414 = load %S.gen.Val, ptr %a403 - call void @finch.gen.hold(ptr %t413, %S.gen.Val %t414) - %t415 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5054, i64 6, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then7983, label %else7984 -then7983: - %t421 = load ptr, ptr %a1 - %t422 = load ptr, ptr %a1 - %t423 = load %S.ast.Type, ptr %a345 - %t424 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t422, %S.ast.Type %t423) - %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t421, { ptr, i64, i64 } %t424) - store { ptr, i64, i64 } %t424, ptr %a426 - call void @finch_str_drop(ptr %a426) - store { ptr, i64, i64 } %t425, ptr %a427 - %t428 = load ptr, ptr %a1 - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Type, ptr %a345 - %t431 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t430) - %t432 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = load { ptr, i64, i64 }, ptr %a427 - call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } %t431, { ptr, i64, i64 } %t433, { ptr, i64, i64 } %t434) - store { ptr, i64, i64 } %t431, ptr %a435 - call void @finch_str_drop(ptr %a435) - %t436 = load ptr, ptr %a1 - %t437 = load %S.ast.Type, ptr %a345 - %t438 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t437) - store { ptr, i64, i64 } { ptr @.str.5055, i64 10, i64 0 }, ptr %a440 - store { ptr, i64, i64 } %t438, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.5056, i64 8, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 3 - %t450 = load i64, ptr %t449 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } %t448, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t448, ptr %a456 - call void @finch_str_drop(ptr %a456) - store { ptr, i64, i64 } %t452, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t458, ptr %a459 - %t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t461 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_copy(ptr %a463, ptr %a462) - %t464 = load { ptr, i64, i64 }, ptr %a463 - %t465 = load i64, ptr %t460 - %t466 = add i64 %t465, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t466, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t467 = load ptr, ptr %a262 - %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t467, i64 %t465 - store { ptr, i64, i64 } %t464, ptr %t468 - store i64 %t466, ptr %t460 - %t469 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t470 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t470, ptr %a472 - store { ptr, i64, i64 } { ptr @.str.5057, i64 1, i64 0 }, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - %t475 = load { ptr, i64, i64 }, ptr %a427 - store { ptr, i64, i64 } %t474, ptr %a477 - store { ptr, i64, i64 } %t475, ptr %a478 - call void @finch_str_concat(ptr %a476, ptr %a477, ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a476 - %t481 = load i64, ptr %t469 - %t482 = add i64 %t481, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t482, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t483 = load ptr, ptr %a263 - %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t481 - store { ptr, i64, i64 } %t480, ptr %t484 - store i64 %t482, ptr %t469 - call void @finch_str_drop(ptr %a459) - call void @finch_str_drop(ptr %a427) - br label %endif7985 -else7984: - %t485 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5058, i64 8, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then7986, label %else7987 -then7986: - %t491 = load ptr, ptr %a1 - %t492 = load ptr, ptr %a1 - %t493 = load %S.ast.Type, ptr %a345 - %t494 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t492, %S.ast.Type %t493) - %t495 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t491, { ptr, i64, i64 } %t494) - store { ptr, i64, i64 } %t494, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t495, ptr %a497 - %t498 = load ptr, ptr %a1 - %t499 = load ptr, ptr %a1 - %t500 = load %S.ast.Type, ptr %a345 - %t501 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t499, %S.ast.Type %t500) - %t502 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t503 = load { ptr, i64, i64 }, ptr %t502 - %t504 = load { ptr, i64, i64 }, ptr %a497 - call void @finch.gen.store(ptr %t498, { ptr, i64, i64 } %t501, { ptr, i64, i64 } %t503, { ptr, i64, i64 } %t504) - store { ptr, i64, i64 } %t501, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t507 = load i64, ptr %t506 - %t508 = add i64 %t507, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t508, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t509 = load ptr, ptr %a262 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i64 %t507 - store { ptr, i64, i64 } { ptr @.str.5059, i64 3, i64 0 }, ptr %t510 - store i64 %t508, ptr %t506 - %t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t512 = load { ptr, i64, i64 }, ptr %a497 - store { ptr, i64, i64 } { ptr @.str.5060, i64 4, i64 0 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a515 - call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a513 - %t517 = load i64, ptr %t511 - %t518 = add i64 %t517, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t518, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t519 = load ptr, ptr %a263 - %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t517 - store { ptr, i64, i64 } %t516, ptr %t520 - store i64 %t518, ptr %t511 - call void @finch_str_drop(ptr %a497) - br label %endif7988 -else7987: - %t521 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5061, i64 6, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp ne i32 %t525, 0 - br i1 %t526, label %then7989, label %else7990 -then7989: - %t527 = load ptr, ptr %a1 - %t528 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t527, { ptr, i64, i64 } { ptr @.str.5062, i64 9, i64 0 }) - store { ptr, i64, i64 } %t528, ptr %a529 - %t530 = load ptr, ptr %a1 - %t531 = load ptr, ptr %a1 - %t532 = load %S.ast.Type, ptr %a345 - %t533 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t531, %S.ast.Type %t532) - %t534 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.store(ptr %t530, { ptr, i64, i64 } %t533, { ptr, i64, i64 } %t535, { ptr, i64, i64 } %t536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t539 = getelementptr inbounds { ptr, i64, i64 }, ptr %t538, i32 0, i32 1 - %t540 = load i64, ptr %t539 - store i64 0, ptr %a541 - br label %for.cond7992 -for.cond7992: - %t542 = load i64, ptr %a541 - %t543 = icmp slt i64 %t542, %t540 - br i1 %t543, label %for.body7993, label %for.end7995 -for.body7993: - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t546 = load i64, ptr %a541 - %t547 = load { ptr, i64, i64 }, ptr %t545 - %t548 = extractvalue { ptr, i64, i64 } %t547, 1 - %t549 = icmp uge i64 %t546, %t548 - br i1 %t549, label %range7996, label %inrange7997 -range7996: - call void @finch_panic_index(ptr @.str.5063, i64 4716, i64 %t546, i64 %t548) - unreachable -inrange7997: - %t550 = extractvalue { ptr, i64, i64 } %t547, 0 - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %t550, i64 %t546 - %t552 = load { ptr, i64, i64 }, ptr %t551 - %t553 = load ptr, ptr %a1 - %t554 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } { ptr @.str.5064, i64 31, i64 0 }, ptr %a556 - store { ptr, i64, i64 } %t554, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - %t558 = load { ptr, i64, i64 }, ptr %a555 - store { ptr, i64, i64 } %t558, ptr %a560 - store { ptr, i64, i64 } { ptr @.str.5065, i64 6, i64 0 }, ptr %a561 - call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561) - store { ptr, i64, i64 } %t558, ptr %a562 - call void @finch_str_drop(ptr %a562) - %t563 = load { ptr, i64, i64 }, ptr %a559 - %t564 = load i64, ptr %a541 - %t565 = mul i64 8, %t564 - call void @finch_str_from_int(ptr %a566, i64 %t565) - %t567 = load { ptr, i64, i64 }, ptr %a566 - store { ptr, i64, i64 } %t563, ptr %a569 - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) - store { ptr, i64, i64 } %t563, ptr %a571 - call void @finch_str_drop(ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a568 - %t574 = call { ptr, i64, i64 } @finch.gen.op(ptr %t553, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t573, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = call { ptr, i64, i64 } @finch.gen.load(ptr %t544, { ptr, i64, i64 } %t552, { ptr, i64, i64 } %t574) - store { ptr, i64, i64 } %t574, ptr %a577 - call void @finch_str_drop(ptr %a577) - store { ptr, i64, i64 } %t576, ptr %a578 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t580 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t581 = load i64, ptr %a541 - %t582 = load { ptr, i64, i64 }, ptr %t580 - %t583 = extractvalue { ptr, i64, i64 } %t582, 1 - %t584 = icmp uge i64 %t581, %t583 - br i1 %t584, label %range7998, label %inrange7999 -range7998: - call void @finch_panic_index(ptr @.str.5066, i64 4717, i64 %t581, i64 %t583) - unreachable -inrange7999: - %t585 = extractvalue { ptr, i64, i64 } %t582, 0 - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i64 %t581 - %t587 = load { ptr, i64, i64 }, ptr %t586 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_copy(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load i64, ptr %t579 - %t592 = add i64 %t591, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t592, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t593 = load ptr, ptr %a262 - %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %t593, i64 %t591 - store { ptr, i64, i64 } %t590, ptr %t594 - store i64 %t592, ptr %t579 - %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t596 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t597 = load i64, ptr %a541 - %t598 = load { ptr, i64, i64 }, ptr %t596 - %t599 = extractvalue { ptr, i64, i64 } %t598, 1 - %t600 = icmp uge i64 %t597, %t599 - br i1 %t600, label %range8000, label %inrange8001 -range8000: - call void @finch_panic_index(ptr @.str.5067, i64 4718, i64 %t597, i64 %t599) - unreachable -inrange8001: - %t601 = extractvalue { ptr, i64, i64 } %t598, 0 - %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i64 %t597 - %t603 = load { ptr, i64, i64 }, ptr %t602 - store { ptr, i64, i64 } %t603, ptr %a605 - store { ptr, i64, i64 } { ptr @.str.5068, i64 1, i64 0 }, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - %t607 = load { ptr, i64, i64 }, ptr %a604 - %t608 = load { ptr, i64, i64 }, ptr %a578 - store { ptr, i64, i64 } %t607, ptr %a610 - store { ptr, i64, i64 } %t608, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t607, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = load i64, ptr %t595 - %t615 = add i64 %t614, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t615, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t616 = load ptr, ptr %a263 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i64 %t614 - store { ptr, i64, i64 } %t613, ptr %t617 - store i64 %t615, ptr %t595 - call void @finch_str_drop(ptr %a578) - br label %for.step7994 -for.step7994: - %t618 = load i64, ptr %a541 - %t619 = add i64 %t618, 1 - store i64 %t619, ptr %a541 - br label %for.cond7992 -for.end7995: - call void @finch_str_drop(ptr %a529) - br label %endif7991 -else7990: - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t621 = load ptr, ptr %a1 - %t622 = load %S.ast.Type, ptr %a345 - %t623 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t621, %S.ast.Type %t622) - %t624 = load ptr, ptr %a1 - %t625 = load %S.ast.Type, ptr %a345 - %t626 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t624, %S.ast.Type %t625) - store { ptr, i64, i64 } %t623, ptr %a628 - store { ptr, i64, i64 } %t626, ptr %a629 - call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) - store { ptr, i64, i64 } %t623, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t626, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a627 - %t633 = load i64, ptr %t620 - %t634 = add i64 %t633, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t634, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t635 = load ptr, ptr %a262 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t633 - store { ptr, i64, i64 } %t632, ptr %t636 - store i64 %t634, ptr %t620 - %t637 = getelementptr inbounds %S.ast.Type, ptr %a345, i32 0, i32 0 - %t638 = load { ptr, i64, i64 }, ptr %t637 - store { ptr, i64, i64 } %t638, ptr %a639 - store { ptr, i64, i64 } { ptr @.str.5069, i64 3, i64 0 }, ptr %a640 - %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) - %t642 = icmp ne i32 %t641, 0 - br i1 %t642, label %then8002, label %else8003 -then8002: - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t644 = load ptr, ptr %a1 - %t645 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t646 = load { ptr, i64, i64 }, ptr %t645 - %t647 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t644, { ptr, i64, i64 } %t646) - store { ptr, i64, i64 } { ptr @.str.5070, i64 4, i64 0 }, ptr %a649 - store { ptr, i64, i64 } %t647, ptr %a650 - call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) - store { ptr, i64, i64 } %t647, ptr %a651 - call void @finch_str_drop(ptr %a651) - %t652 = load { ptr, i64, i64 }, ptr %a648 - %t653 = load i64, ptr %t643 - %t654 = add i64 %t653, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t654, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t655 = load ptr, ptr %a263 - %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i64 %t653 - store { ptr, i64, i64 } %t652, ptr %t656 - store i64 %t654, ptr %t643 - br label %endif8004 -else8003: - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t658 = load ptr, ptr %a1 - %t659 = load %S.ast.Type, ptr %a345 - %t660 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t658, %S.ast.Type %t659) - %t661 = load ptr, ptr %a1 - %t662 = load %S.ast.Type, ptr %a345 - %t663 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t661, %S.ast.Type %t662) - store { ptr, i64, i64 } %t660, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t660, ptr %a667 - call void @finch_str_drop(ptr %a667) - store { ptr, i64, i64 } %t663, ptr %a668 - call void @finch_str_drop(ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.5071, i64 1, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t676 = load { ptr, i64, i64 }, ptr %t675 - store { ptr, i64, i64 } %t674, ptr %a678 - store { ptr, i64, i64 } %t676, ptr %a679 - call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) - store { ptr, i64, i64 } %t674, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load { ptr, i64, i64 }, ptr %a677 - %t682 = load i64, ptr %t657 - %t683 = add i64 %t682, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t683, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t684 = load ptr, ptr %a263 - %t685 = getelementptr inbounds { ptr, i64, i64 }, ptr %t684, i64 %t682 - store { ptr, i64, i64 } %t681, ptr %t685 - store i64 %t683, ptr %t657 - br label %endif8004 -endif8004: - br label %endif7991 -endif7991: - br label %endif7988 -endif7988: - br label %endif7985 -endif7985: - call void @finch.drop.S_gen_Val(ptr %a403) - call void @finch.drop.S_gen_Abi(ptr %a357) - call void @finch.drop.S_ast_Type(ptr %a345) - br label %for.step7970 -endif7974: - %t686 = load ptr, ptr %a1 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t688 = load i64, ptr %a327 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range8005, label %inrange8006 -range8005: - call void @finch_panic_index(ptr @.str.5072, i64 4731, i64 %t688, i64 %t690) - unreachable -inrange8006: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.ast.Node, ptr %t692, i64 %t688 - %t694 = load %S.ast.Node, ptr %t693 - %t695 = call %S.gen.Val @finch.gen.expr(ptr %t686, %S.ast.Node %t694) - store %S.gen.Val %t695, ptr %a696 - %t697 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 1 - %t698 = load %S.ast.Type, ptr %t697 - store %S.ast.Type %t698, ptr %a699 - call void @finch.copy.S_ast_Type(ptr %a700, ptr %a699) - %t701 = load %S.ast.Type, ptr %a700 - store %S.ast.Type %t701, ptr %a702 - %t703 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t704 = load { ptr, i64, i64 }, ptr %t703 - store { ptr, i64, i64 } %t704, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5073, i64 4, i64 0 }, ptr %a706 - %t707 = call i32 @finch_str_eq(ptr %a705, ptr %a706) - %t708 = icmp ne i32 %t707, 0 - br i1 %t708, label %then8007, label %endif8009 -then8007: - %t709 = load ptr, ptr %a1 - %t710 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t711 = load i64, ptr %a327 - %t712 = load { ptr, i64, i64 }, ptr %t710 - %t713 = extractvalue { ptr, i64, i64 } %t712, 1 - %t714 = icmp uge i64 %t711, %t713 - br i1 %t714, label %range8010, label %inrange8011 -range8010: - call void @finch_panic_index(ptr @.str.5074, i64 4734, i64 %t711, i64 %t713) - unreachable -inrange8011: - %t715 = extractvalue { ptr, i64, i64 } %t712, 0 - %t716 = getelementptr inbounds %S.ast.Node, ptr %t715, i64 %t711 - %t717 = load %S.ast.Node, ptr %t716 - call void @finch.gen.fail(ptr %t709, %S.ast.Node %t717, { ptr, i64, i64 } { ptr @.str.5075, i64 23, i64 0 }) - br label %endif8009 -endif8009: - %t718 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t719 = load %S.gen.Val, ptr %a696 - store %S.gen.Val %t719, ptr %a720 - call void @finch.copy.S_gen_Val(ptr %a721, ptr %a720) - %t722 = load %S.gen.Val, ptr %a721 - %t723 = load i64, ptr %t718 - %t724 = add i64 %t723, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t724, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t725 = load ptr, ptr %a317 - %t726 = getelementptr inbounds %S.gen.Val, ptr %t725, i64 %t723 - store %S.gen.Val %t722, ptr %t726 - store i64 %t724, ptr %t718 - %t727 = load ptr, ptr %a1 - %t728 = load %S.gen.Val, ptr %a696 - call void @finch.gen.hold(ptr %t727, %S.gen.Val %t728) - %t729 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t730 = load { ptr, i64, i64 }, ptr %t729 - store { ptr, i64, i64 } %t730, ptr %a731 - store { ptr, i64, i64 } { ptr @.str.5076, i64 6, i64 0 }, ptr %a732 - %t733 = call i32 @finch_str_eq(ptr %a731, ptr %a732) - %t734 = icmp ne i32 %t733, 0 - br label %logic.from8012 -logic.from8012: - br i1 %t734, label %logic.end8014, label %logic.rhs8013 -logic.rhs8013: - %t735 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t736 = load { ptr, i64, i64 }, ptr %t735 - store { ptr, i64, i64 } %t736, ptr %a737 - store { ptr, i64, i64 } { ptr @.str.5077, i64 5, i64 0 }, ptr %a738 - %t739 = call i32 @finch_str_eq(ptr %a737, ptr %a738) - %t740 = icmp ne i32 %t739, 0 - br label %logic.rend8015 -logic.rend8015: - br label %logic.end8014 -logic.end8014: - %t741 = phi i1 [ true, %logic.from8012 ], [ %t740, %logic.rend8015 ] - br i1 %t741, label %then8016, label %endif8018 -then8016: - %t742 = load ptr, ptr %a1 - %t743 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t744 = load i64, ptr %a327 - %t745 = load { ptr, i64, i64 }, ptr %t743 - %t746 = extractvalue { ptr, i64, i64 } %t745, 1 - %t747 = icmp uge i64 %t744, %t746 - br i1 %t747, label %range8019, label %inrange8020 -range8019: - call void @finch_panic_index(ptr @.str.5078, i64 4739, i64 %t744, i64 %t746) - unreachable -inrange8020: - %t748 = extractvalue { ptr, i64, i64 } %t745, 0 - %t749 = getelementptr inbounds %S.ast.Node, ptr %t748, i64 %t744 - %t750 = load %S.ast.Node, ptr %t749 - call void @finch.gen.fail(ptr %t742, %S.ast.Node %t750, { ptr, i64, i64 } { ptr @.str.5079, i64 68, i64 0 }) - br label %endif8018 -endif8018: - %t751 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t755, ptr %a756 - %t757 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t758 = load { ptr, i64, i64 }, ptr %t757 - store { ptr, i64, i64 } %t758, ptr %a759 - store { ptr, i64, i64 } { ptr @.str.5080, i64 3, i64 0 }, ptr %a760 - %t761 = call i32 @finch_str_eq(ptr %a759, ptr %a760) - %t762 = icmp ne i32 %t761, 0 - br i1 %t762, label %then8021, label %else8022 -then8021: - %t763 = load ptr, ptr %a1 - %t764 = load { ptr, i64, i64 }, ptr %a756 - %t765 = load %S.ast.Type, ptr %a702 - %t766 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5081, i64 5, i64 0 }) - %t767 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t763, { ptr, i64, i64 } %t764, %S.ast.Type %t765, %S.ast.Type %t766) - store %S.ast.Type %t766, ptr %a768 - call void @finch.drop.S_ast_Type(ptr %a768) - %t769 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t767, ptr %a756 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch_str_drop(ptr %a770) - %t771 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5082, i64 5, i64 0 }) - %t772 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t771, ptr %a702 - store %S.ast.Type %t772, ptr %a773 - call void @finch.drop.S_ast_Type(ptr %a773) - br label %endif8023 -else8022: - %t774 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t775 = load { ptr, i64, i64 }, ptr %t774 - store { ptr, i64, i64 } %t775, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.5083, i64 3, i64 0 }, ptr %a777 - %t778 = call i32 @finch_str_eq(ptr %a776, ptr %a777) - %t779 = icmp ne i32 %t778, 0 - br i1 %t779, label %then8024, label %else8025 -then8024: - %t780 = load ptr, ptr %a1 - %t781 = load { ptr, i64, i64 }, ptr %a756 - %t782 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t780, { ptr, i64, i64 } %t781) - %t783 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t782, ptr %a756 - store { ptr, i64, i64 } %t783, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5084, i64 3, i64 0 }) - %t786 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t785, ptr %a702 - store %S.ast.Type %t786, ptr %a787 - call void @finch.drop.S_ast_Type(ptr %a787) - br label %endif8026 -else8025: - %t788 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t789 = load { ptr, i64, i64 }, ptr %t788 - store { ptr, i64, i64 } %t789, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.5085, i64 4, i64 0 }, ptr %a791 - %t792 = call i32 @finch_str_eq(ptr %a790, ptr %a791) - %t793 = icmp ne i32 %t792, 0 - br i1 %t793, label %then8027, label %else8028 -then8027: - %t794 = load ptr, ptr %a1 - %t795 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t796 = load { ptr, i64, i64 }, ptr %t795 - store { ptr, i64, i64 } { ptr @.str.5086, i64 8, i64 0 }, ptr %a798 - store { ptr, i64, i64 } %t796, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - %t800 = load { ptr, i64, i64 }, ptr %a797 - store { ptr, i64, i64 } %t800, ptr %a802 - store { ptr, i64, i64 } { ptr @.str.5087, i64 7, i64 0 }, ptr %a803 - call void @finch_str_concat(ptr %a801, ptr %a802, ptr %a803) - store { ptr, i64, i64 } %t800, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = load { ptr, i64, i64 }, ptr %a801 - %t806 = call { ptr, i64, i64 } @finch.gen.op(ptr %t794, { ptr, i64, i64 } %t805) - store { ptr, i64, i64 } %t805, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t806, ptr %a756 - store { ptr, i64, i64 } %t808, ptr %a809 - call void @finch_str_drop(ptr %a809) - %t810 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5088, i64 3, i64 0 }) - %t811 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t810, ptr %a702 - store %S.ast.Type %t811, ptr %a812 - call void @finch.drop.S_ast_Type(ptr %a812) - br label %endif8029 -else8028: - %t813 = load %S.ast.Type, ptr %a702 - %t814 = call i1 @finch.gen.isInt(%S.ast.Type %t813) - br label %logic.from8030 -logic.from8030: - br i1 %t814, label %logic.end8032, label %logic.rhs8031 -logic.rhs8031: - %t815 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } %t816, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.5089, i64 4, i64 0 }, ptr %a818 - %t819 = call i32 @finch_str_eq(ptr %a817, ptr %a818) - %t820 = icmp ne i32 %t819, 0 - br label %logic.rend8033 -logic.rend8033: - br label %logic.end8032 -logic.end8032: - %t821 = phi i1 [ true, %logic.from8030 ], [ %t820, %logic.rend8033 ] - br label %logic.from8034 -logic.from8034: - br i1 %t821, label %logic.rhs8035, label %logic.end8036 -logic.rhs8035: - %t822 = load %S.ast.Type, ptr %a702 - %t823 = call i64 @finch.gen.bitsOf(%S.ast.Type %t822) - %t824 = icmp slt i64 %t823, 32 - br label %logic.rend8037 -logic.rend8037: - br label %logic.end8036 -logic.end8036: - %t825 = phi i1 [ false, %logic.from8034 ], [ %t824, %logic.rend8037 ] - br i1 %t825, label %then8038, label %endif8040 -then8038: - %t826 = load ptr, ptr %a1 - %t827 = load { ptr, i64, i64 }, ptr %a756 - %t828 = load %S.ast.Type, ptr %a702 - %t829 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5090, i64 3, i64 0 }) - %t830 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t826, { ptr, i64, i64 } %t827, %S.ast.Type %t828, %S.ast.Type %t829) - store %S.ast.Type %t829, ptr %a831 - call void @finch.drop.S_ast_Type(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t830, ptr %a756 - store { ptr, i64, i64 } %t832, ptr %a833 - call void @finch_str_drop(ptr %a833) - %t834 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5091, i64 3, i64 0 }) - %t835 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t834, ptr %a702 - store %S.ast.Type %t835, ptr %a836 - call void @finch.drop.S_ast_Type(ptr %a836) - br label %endif8040 -endif8040: - br label %endif8029 -endif8029: - br label %endif8026 -endif8026: - br label %endif8023 -endif8023: - %t837 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t838 = load ptr, ptr %a1 - %t839 = load %S.ast.Type, ptr %a702 - %t840 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t838, %S.ast.Type %t839) - store { ptr, i64, i64 } %t840, ptr %a842 - store { ptr, i64, i64 } { ptr @.str.5092, i64 1, i64 0 }, ptr %a843 - call void @finch_str_concat(ptr %a841, ptr %a842, ptr %a843) - store { ptr, i64, i64 } %t840, ptr %a844 - call void @finch_str_drop(ptr %a844) - %t845 = load { ptr, i64, i64 }, ptr %a841 - %t846 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t845, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - store { ptr, i64, i64 } %t845, ptr %a850 - call void @finch_str_drop(ptr %a850) - %t851 = load { ptr, i64, i64 }, ptr %a847 - %t852 = load i64, ptr %t837 - %t853 = add i64 %t852, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t853, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t854 = load ptr, ptr %a263 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i64 %t852 - store { ptr, i64, i64 } %t851, ptr %t855 - store i64 %t853, ptr %t837 - call void @finch_str_drop(ptr %a756) - call void @finch.drop.S_ast_Type(ptr %a702) - call void @finch.drop.S_gen_Val(ptr %a696) - br label %for.step7970 -for.step7970: - %t856 = load i64, ptr %a327 - %t857 = add i64 %t856, 1 - store i64 %t857, ptr %a327 - br label %for.cond7968 -for.end7971: - %t858 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 2 - %t859 = load { ptr, i64, i64 }, ptr %t858 - store { ptr, i64, i64 } %t859, ptr %a860 - call void @finch_str_copy(ptr %a861, ptr %a860) - %t862 = load { ptr, i64, i64 }, ptr %a861 - store { ptr, i64, i64 } %t862, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5093, i64 0, i64 0 }, ptr %a864 - %t865 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t866 = getelementptr inbounds %S.gen.Abi, ptr %t865, i32 0, i32 0 - %t867 = load { ptr, i64, i64 }, ptr %t866 - store { ptr, i64, i64 } %t867, ptr %a868 - store { ptr, i64, i64 } { ptr @.str.5094, i64 6, i64 0 }, ptr %a869 - %t870 = call i32 @finch_str_eq(ptr %a868, ptr %a869) - %t871 = icmp ne i32 %t870, 0 - br i1 %t871, label %then8041, label %endif8043 -then8041: - %t872 = load ptr, ptr %a1 - %t873 = load %S.ast.Type, ptr %a219 - %t874 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t872, %S.ast.Type %t873) - %t875 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } %t874, ptr %a864 - store { ptr, i64, i64 } %t875, ptr %a876 - call void @finch_str_drop(ptr %a876) - br label %endif8043 -endif8043: - store { ptr, i64, i64 } { ptr @.str.5095, i64 0, i64 0 }, ptr %a877 - %t878 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t879 = load i1, ptr %t878 - br i1 %t879, label %then8044, label %endif8046 -then8044: - %t880 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5096, i64 5, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t883 = load i64, ptr %t882 - %t884 = icmp eq i64 %t883, 0 - br i1 %t884, label %then8047, label %endif8049 -then8047: - %t885 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5097, i64 3, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t885, ptr %a886 - call void @finch_str_drop(ptr %a886) - br label %endif8049 -endif8049: - br label %endif8046 -endif8046: - %t887 = load ptr, ptr %a1 - %t888 = icmp eq ptr %t887, null - br i1 %t888, label %panic8050, label %ok8051 -panic8050: - call void @finch_panic(ptr @.str.5098, i64 4770, ptr @.str.5099) - unreachable -ok8051: - %t889 = getelementptr inbounds %S.gen.Gen, ptr %t887, i32 0, i32 40 - %t890 = getelementptr inbounds { ptr, i64, i64 }, ptr %t889, i32 0, i32 1 - %t891 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t892 = load { ptr, i64, i64 }, ptr %t891 - store { ptr, i64, i64 } { ptr @.str.5100, i64 2, i64 0 }, ptr %a894 - store { ptr, i64, i64 } %t892, ptr %a895 - call void @finch_str_concat(ptr %a893, ptr %a894, ptr %a895) - %t896 = load { ptr, i64, i64 }, ptr %a893 - store i64 -1, ptr %a897 - %t898 = load i64, ptr %t890 - %t899 = load ptr, ptr %t889 - store i64 0, ptr %a900 - br label %find.cond8052 -find.cond8052: - %t901 = load i64, ptr %a900 - %t902 = icmp slt i64 %t901, %t898 - br i1 %t902, label %find.body8053, label %find.end8056 -find.body8053: - %t903 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 %t901 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t904, ptr %a905 - store { ptr, i64, i64 } %t896, ptr %a906 - %t907 = call i32 @finch_str_eq(ptr %a905, ptr %a906) - %t908 = icmp ne i32 %t907, 0 - br i1 %t908, label %find.hit8054, label %find.next8055 -find.hit8054: - store i64 %t901, ptr %a897 - br label %find.end8056 -find.next8055: - %t909 = add i64 %t901, 1 - store i64 %t909, ptr %a900 - br label %find.cond8052 -find.end8056: - store { ptr, i64, i64 } %t896, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load i64, ptr %a897 - %t912 = icmp sge i64 %t911, 0 - %t913 = xor i1 %t912, true - br i1 %t913, label %then8057, label %endif8059 -then8057: - %t914 = load ptr, ptr %a1 - %t915 = icmp eq ptr %t914, null - br i1 %t915, label %panic8060, label %ok8061 -panic8060: - call void @finch_panic(ptr @.str.5101, i64 4771, ptr @.str.5102) - unreachable -ok8061: - %t916 = getelementptr inbounds %S.gen.Gen, ptr %t914, i32 0, i32 40 - %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %t916, i32 0, i32 1 - %t918 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - store { ptr, i64, i64 } { ptr @.str.5103, i64 2, i64 0 }, ptr %a921 - store { ptr, i64, i64 } %t919, ptr %a922 - call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922) - %t923 = load { ptr, i64, i64 }, ptr %a920 - %t924 = load i64, ptr %t917 - %t925 = add i64 %t924, 1 - call void @finch_arr_reserve(ptr %t916, i64 %t925, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t926 = load ptr, ptr %t916 - %t927 = getelementptr inbounds { ptr, i64, i64 }, ptr %t926, i64 %t924 - store { ptr, i64, i64 } %t923, ptr %t927 - store i64 %t925, ptr %t917 - %t928 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t929 = load { ptr, i64, i64 }, ptr %t928 - %t930 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t929) - %t931 = xor i1 %t930, true - br i1 %t931, label %then8062, label %endif8064 -then8062: - %t932 = load ptr, ptr %a1 - %t933 = icmp eq ptr %t932, null - br i1 %t933, label %panic8065, label %ok8066 -panic8065: - call void @finch_panic(ptr @.str.5104, i64 4773, ptr @.str.5105) - unreachable -ok8066: - %t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 2 - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i32 0, i32 1 - %t936 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5106, i64 7, i64 0 }, ptr %a938 - store { ptr, i64, i64 } %t936, ptr %a939 - call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) - %t940 = load { ptr, i64, i64 }, ptr %a937 - store { ptr, i64, i64 } %t940, ptr %a942 - store { ptr, i64, i64 } { ptr @.str.5107, i64 1, i64 0 }, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - store { ptr, i64, i64 } %t940, ptr %a944 - call void @finch_str_drop(ptr %a944) - %t945 = load { ptr, i64, i64 }, ptr %a941 - %t946 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t945, ptr %a948 - store { ptr, i64, i64 } %t946, ptr %a949 - call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) - store { ptr, i64, i64 } %t945, ptr %a950 - call void @finch_str_drop(ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a947 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.5108, i64 2, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.5109, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - %t969 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5110, i64 2, i64 0 }, ptr %a970 - call void @finch_str_join(ptr %a971, ptr %a262, ptr %a970) - %t972 = load { ptr, i64, i64 }, ptr %a971 - store { ptr, i64, i64 } %t968, ptr %a974 - store { ptr, i64, i64 } %t972, ptr %a975 - call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) - store { ptr, i64, i64 } %t968, ptr %a976 - call void @finch_str_drop(ptr %a976) - store { ptr, i64, i64 } %t972, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a973 - %t979 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t978, ptr %a981 - store { ptr, i64, i64 } %t979, ptr %a982 - call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) - store { ptr, i64, i64 } %t978, ptr %a983 - call void @finch_str_drop(ptr %a983) - %t984 = load { ptr, i64, i64 }, ptr %a980 - store { ptr, i64, i64 } %t984, ptr %a986 - store { ptr, i64, i64 } { ptr @.str.5111, i64 1, i64 0 }, ptr %a987 - call void @finch_str_concat(ptr %a985, ptr %a986, ptr %a987) - store { ptr, i64, i64 } %t984, ptr %a988 - call void @finch_str_drop(ptr %a988) - %t989 = load { ptr, i64, i64 }, ptr %a985 - %t990 = load i64, ptr %t935 - %t991 = add i64 %t990, 1 - call void @finch_arr_reserve(ptr %t934, i64 %t991, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t992 = load ptr, ptr %t934 - %t993 = getelementptr inbounds { ptr, i64, i64 }, ptr %t992, i64 %t990 - store { ptr, i64, i64 } %t989, ptr %t993 - store i64 %t991, ptr %t935 - br label %endif8064 -endif8064: - br label %endif8059 -endif8059: - store { ptr, i64, i64 } { ptr @.str.5112, i64 0, i64 0 }, ptr %a994 - %t995 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t996 = load i1, ptr %t995 - br i1 %t996, label %then8067, label %endif8069 -then8067: - %t997 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5114, i64 2, i64 0 }, ptr %a998 - call void @finch_str_join(ptr %a999, ptr %a262, ptr %a998) - %t1000 = load { ptr, i64, i64 }, ptr %a999 - store { ptr, i64, i64 } { ptr @.str.5113, i64 2, i64 0 }, ptr %a1002 - store { ptr, i64, i64 } %t1000, ptr %a1003 - call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) - store { ptr, i64, i64 } %t1000, ptr %a1004 - call void @finch_str_drop(ptr %a1004) - %t1005 = load { ptr, i64, i64 }, ptr %a1001 - %t1006 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t1005, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - store { ptr, i64, i64 } %t1005, ptr %a1010 - call void @finch_str_drop(ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5115, i64 1, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1016, ptr %a994 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_drop(ptr %a1018) - br label %endif8069 -endif8069: - %t1019 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5116, i64 4, i64 0 }, ptr %a1021 - store { ptr, i64, i64 } %t1019, ptr %a1022 - call void @finch_str_concat(ptr %a1020, ptr %a1021, ptr %a1022) - %t1023 = load { ptr, i64, i64 }, ptr %a1020 - store { ptr, i64, i64 } %t1023, ptr %a1025 - store { ptr, i64, i64 } { ptr @.str.5117, i64 1, i64 0 }, ptr %a1026 - call void @finch_str_concat(ptr %a1024, ptr %a1025, ptr %a1026) - store { ptr, i64, i64 } %t1023, ptr %a1027 - call void @finch_str_drop(ptr %a1027) - %t1028 = load { ptr, i64, i64 }, ptr %a1024 - %t1029 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t1028, ptr %a1031 - store { ptr, i64, i64 } %t1029, ptr %a1032 - call void @finch_str_concat(ptr %a1030, ptr %a1031, ptr %a1032) - store { ptr, i64, i64 } %t1028, ptr %a1033 - call void @finch_str_drop(ptr %a1033) - %t1034 = load { ptr, i64, i64 }, ptr %a1030 - %t1035 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1035, ptr %a1038 - call void @finch_str_concat(ptr %a1036, ptr %a1037, ptr %a1038) - store { ptr, i64, i64 } %t1034, ptr %a1039 - call void @finch_str_drop(ptr %a1039) - %t1040 = load { ptr, i64, i64 }, ptr %a1036 - store { ptr, i64, i64 } %t1040, ptr %a1042 - store { ptr, i64, i64 } { ptr @.str.5118, i64 2, i64 0 }, ptr %a1043 - call void @finch_str_concat(ptr %a1041, ptr %a1042, ptr %a1043) - store { ptr, i64, i64 } %t1040, ptr %a1044 - call void @finch_str_drop(ptr %a1044) - %t1045 = load { ptr, i64, i64 }, ptr %a1041 - %t1046 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t1047 = load { ptr, i64, i64 }, ptr %t1046 - store { ptr, i64, i64 } %t1045, ptr %a1049 - store { ptr, i64, i64 } %t1047, ptr %a1050 - call void @finch_str_concat(ptr %a1048, ptr %a1049, ptr %a1050) - store { ptr, i64, i64 } %t1045, ptr %a1051 - call void @finch_str_drop(ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1048 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5119, i64 1, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5120, i64 2, i64 0 }, ptr %a1059 - call void @finch_str_join(ptr %a1060, ptr %a263, ptr %a1059) - %t1061 = load { ptr, i64, i64 }, ptr %a1060 - store { ptr, i64, i64 } %t1057, ptr %a1063 - store { ptr, i64, i64 } %t1061, ptr %a1064 - call void @finch_str_concat(ptr %a1062, ptr %a1063, ptr %a1064) - store { ptr, i64, i64 } %t1057, ptr %a1065 - call void @finch_str_drop(ptr %a1065) - store { ptr, i64, i64 } %t1061, ptr %a1066 - call void @finch_str_drop(ptr %a1066) - %t1067 = load { ptr, i64, i64 }, ptr %a1062 - store { ptr, i64, i64 } %t1067, ptr %a1069 - store { ptr, i64, i64 } { ptr @.str.5121, i64 1, i64 0 }, ptr %a1070 - call void @finch_str_concat(ptr %a1068, ptr %a1069, ptr %a1070) - store { ptr, i64, i64 } %t1067, ptr %a1071 - call void @finch_str_drop(ptr %a1071) - %t1072 = load { ptr, i64, i64 }, ptr %a1068 - store { ptr, i64, i64 } %t1072, ptr %a1073 - %t1074 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1075 = load { ptr, i64, i64 }, ptr %t1074 - store { ptr, i64, i64 } %t1075, ptr %a1076 - store { ptr, i64, i64 } { ptr @.str.5122, i64 4, i64 0 }, ptr %a1077 - %t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077) - %t1079 = icmp ne i32 %t1078, 0 - br i1 %t1079, label %then8070, label %endif8072 -then8070: - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1080, { ptr, i64, i64 } %t1081) - %t1082 = load ptr, ptr %a1 - %t1083 = load { ptr, i64, i64 }, ptr %a317 - %t1084 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1082, { ptr, i64, i64 } %t1083, i64 %t1084) - %t1085 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1085, ptr %a1086 - call void @finch.copy.S_ast_Type(ptr %a1087, ptr %a1086) - %t1088 = load %S.ast.Type, ptr %a1087 - %t1089 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1088, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1089 -endif8072: - %t1090 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t1091 = load i1, ptr %t1090 - br i1 %t1091, label %then8073, label %endif8075 -then8073: - %t1092 = load ptr, ptr %a1 - %t1093 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1092, { ptr, i64, i64 } %t1093) - %t1094 = load ptr, ptr %a1 - %t1095 = load { ptr, i64, i64 }, ptr %a317 - %t1096 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1094, { ptr, i64, i64 } %t1095, i64 %t1096) - %t1097 = load ptr, ptr %a1 - %t1098 = load ptr, ptr %a1 - %t1099 = load %S.ast.Type, ptr %a219 - %t1100 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1098, %S.ast.Type %t1099) - %t1101 = load { ptr, i64, i64 }, ptr %a264 - %t1102 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1097, { ptr, i64, i64 } %t1100, { ptr, i64, i64 } %t1101) - store { ptr, i64, i64 } %t1100, ptr %a1103 - call void @finch_str_drop(ptr %a1103) - %t1104 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1102, 0 - %t1105 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1105, ptr %a1106 - call void @finch.copy.S_ast_Type(ptr %a1107, ptr %a1106) - %t1108 = load %S.ast.Type, ptr %a1107 - %t1109 = insertvalue %S.gen.Val %t1104, %S.ast.Type %t1108, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1109 -endif8075: - %t1110 = load ptr, ptr %a1 - %t1111 = load { ptr, i64, i64 }, ptr %a1073 - %t1112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1110, { ptr, i64, i64 } %t1111) - store { ptr, i64, i64 } %t1112, ptr %a1113 - %t1114 = load ptr, ptr %a1 - %t1115 = load { ptr, i64, i64 }, ptr %a317 - %t1116 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1114, { ptr, i64, i64 } %t1115, i64 %t1116) - %t1117 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1118 = getelementptr inbounds %S.gen.Abi, ptr %t1117, i32 0, i32 0 - %t1119 = load { ptr, i64, i64 }, ptr %t1118 - store { ptr, i64, i64 } %t1119, ptr %a1120 - store { ptr, i64, i64 } { ptr @.str.5123, i64 6, i64 0 }, ptr %a1121 - %t1122 = call i32 @finch_str_eq(ptr %a1120, ptr %a1121) - %t1123 = icmp ne i32 %t1122, 0 - br i1 %t1123, label %then8076, label %endif8078 -then8076: - %t1124 = load ptr, ptr %a1 - %t1125 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1124, { ptr, i64, i64 } { ptr @.str.5124, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1125, ptr %a1126 - %t1127 = load ptr, ptr %a1 - %t1128 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1129 = getelementptr inbounds %S.gen.Abi, ptr %t1128, i32 0, i32 2 - %t1130 = load { ptr, i64, i64 }, ptr %t1129 - %t1131 = load { ptr, i64, i64 }, ptr %a1113 - %t1132 = load { ptr, i64, i64 }, ptr %a1126 - call void @finch.gen.store(ptr %t1127, { ptr, i64, i64 } %t1130, { ptr, i64, i64 } %t1131, { ptr, i64, i64 } %t1132) - %t1133 = load ptr, ptr %a1 - %t1134 = load ptr, ptr %a1 - %t1135 = load %S.ast.Type, ptr %a219 - %t1136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1134, %S.ast.Type %t1135) - %t1137 = load { ptr, i64, i64 }, ptr %a1126 - %t1138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1133, { ptr, i64, i64 } %t1136, { ptr, i64, i64 } %t1137) - store { ptr, i64, i64 } %t1136, ptr %a1139 - call void @finch_str_drop(ptr %a1139) - %t1140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1138, 0 - %t1141 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1141, ptr %a1142 - call void @finch.copy.S_ast_Type(ptr %a1143, ptr %a1142) - %t1144 = load %S.ast.Type, ptr %a1143 - %t1145 = insertvalue %S.gen.Val %t1140, %S.ast.Type %t1144, 1 - call void @finch_str_drop(ptr %a1126) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1145 -endif8078: - %t1146 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1147 = load { ptr, i64, i64 }, ptr %t1146 - store { ptr, i64, i64 } %t1147, ptr %a1148 - store { ptr, i64, i64 } { ptr @.str.5125, i64 3, i64 0 }, ptr %a1149 - %t1150 = call i32 @finch_str_eq(ptr %a1148, ptr %a1149) - %t1151 = icmp ne i32 %t1150, 0 - br i1 %t1151, label %then8079, label %endif8081 -then8079: - %t1152 = load ptr, ptr %a1 - %t1153 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1152) - store { ptr, i64, i64 } %t1153, ptr %a1154 - %t1155 = load ptr, ptr %a1 - %t1156 = load { ptr, i64, i64 }, ptr %a1154 - call void @finch.gen.store(ptr %t1155, { ptr, i64, i64 } { ptr @.str.5126, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5127, i64 15, i64 0 }, { ptr, i64, i64 } %t1156) - %t1157 = load ptr, ptr %a1 - %t1158 = load { ptr, i64, i64 }, ptr %a1154 - store { ptr, i64, i64 } { ptr @.str.5128, i64 32, i64 0 }, ptr %a1160 - store { ptr, i64, i64 } %t1158, ptr %a1161 - call void @finch_str_concat(ptr %a1159, ptr %a1160, ptr %a1161) - %t1162 = load { ptr, i64, i64 }, ptr %a1159 - store { ptr, i64, i64 } %t1162, ptr %a1164 - store { ptr, i64, i64 } { ptr @.str.5129, i64 6, i64 0 }, ptr %a1165 - call void @finch_str_concat(ptr %a1163, ptr %a1164, ptr %a1165) - store { ptr, i64, i64 } %t1162, ptr %a1166 - call void @finch_str_drop(ptr %a1166) - %t1167 = load { ptr, i64, i64 }, ptr %a1163 - %t1168 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1167, ptr %a1170 - store { ptr, i64, i64 } %t1168, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1167, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - store { ptr, i64, i64 } %t1173, ptr %a1175 - store { ptr, i64, i64 } { ptr @.str.5130, i64 1, i64 0 }, ptr %a1176 - call void @finch_str_concat(ptr %a1174, ptr %a1175, ptr %a1176) - store { ptr, i64, i64 } %t1173, ptr %a1177 - call void @finch_str_drop(ptr %a1177) - %t1178 = load { ptr, i64, i64 }, ptr %a1174 - call void @finch.gen.emit(ptr %t1157, { ptr, i64, i64 } %t1178) - store { ptr, i64, i64 } %t1178, ptr %a1179 - call void @finch_str_drop(ptr %a1179) - %t1180 = load ptr, ptr %a1 - %t1181 = load { ptr, i64, i64 }, ptr %a1154 - %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.5131, i64 17, i64 0 }, { ptr, i64, i64 } %t1181) - %t1183 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1182, 0 - %t1184 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1184, ptr %a1185 - call void @finch.copy.S_ast_Type(ptr %a1186, ptr %a1185) - %t1187 = load %S.ast.Type, ptr %a1186 - %t1188 = insertvalue %S.gen.Val %t1183, %S.ast.Type %t1187, 1 - call void @finch_str_drop(ptr %a1154) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1188 -endif8081: - %t1189 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1189, ptr %a1190 - call void @finch_str_copy(ptr %a1191, ptr %a1190) - %t1192 = load { ptr, i64, i64 }, ptr %a1191 - %t1193 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1192, 0 - %t1194 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1194, ptr %a1195 - call void @finch.copy.S_ast_Type(ptr %a1196, ptr %a1195) - %t1197 = load %S.ast.Type, ptr %a1196 - %t1198 = insertvalue %S.gen.Val %t1193, %S.ast.Type %t1197, 1 - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1198 -} - -define internal void @finch.gen.releaseAll(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca i64, align 16 - %a4 = alloca i64, align 16 - %a12 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store i64 0, ptr %a4 - br label %each.cond8082 -each.cond8082: - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t6 = load i64, ptr %t5 - %t7 = load i64, ptr %a4 - %t8 = icmp slt i64 %t7, %t6 - br i1 %t8, label %each.body8083, label %each.end8085 -each.body8083: - %t9 = load ptr, ptr %a2 - %t10 = getelementptr inbounds %S.gen.Val, ptr %t9, i64 %t7 - %t11 = load %S.gen.Val, ptr %t10 - store %S.gen.Val %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = load %S.gen.Val, ptr %a12 - call void @finch.gen.release(ptr %t13, %S.gen.Val %t14) - br label %each.step8084 -each.step8084: - %t15 = load i64, ptr %a4 - %t16 = add i64 %t15, 1 - store i64 %t16, ptr %a4 - br label %each.cond8082 -each.end8085: - %t17 = load ptr, ptr %a1 - %t18 = load i64, ptr %a3 - call void @finch.gen.heldEnd(ptr %t17, i64 %t18) - ret void -} - -define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { -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.5132, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5133, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5134, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5135, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5136, 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.cond8086 -find.cond8086: - %t19 = load i64, ptr %a18 - %t20 = icmp slt i64 %t19, %t16 - br i1 %t20, label %find.body8087, label %find.end8090 -find.body8087: - %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.hit8088, label %find.next8089 -find.hit8088: - store i64 %t19, ptr %a15 - br label %find.end8090 -find.next8089: - %t27 = add i64 %t19, 1 - store i64 %t27, ptr %a18 - br label %find.cond8086 -find.end8090: - %t28 = load i64, ptr %a15 - %t29 = icmp sge i64 %t28, 0 - call void @finch.drop.arr_str(ptr %a12) - 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 - %a93 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.5137, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5138, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5139, i64 7, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5140, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5141, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.5142, i64 7, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.5143, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.5144, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.5145, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.5146, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.5147, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.5148, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.5149, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.5150, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.5151, i64 5, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.5152, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.5153, i64 4, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.5154, i64 6, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.5155, i64 6, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.5156, i64 6, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.5157, i64 4, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.5158, i64 5, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.5159, 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.5160, i64 7, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 - store { ptr, i64, i64 } { ptr @.str.5161, i64 7, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 - store { ptr, i64, i64 } { ptr @.str.5162, i64 7, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3 - store { ptr, i64, i64 } { ptr @.str.5163, i64 7, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 - store { ptr, i64, i64 } { ptr @.str.5164, i64 7, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 - store { ptr, i64, i64 } { ptr @.str.5165, i64 7, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6 - store { ptr, i64, i64 } { ptr @.str.5166, i64 6, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 - store { ptr, i64, i64 } { ptr @.str.5167, i64 6, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 - store { ptr, i64, i64 } { ptr @.str.5168, i64 6, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9 - store { ptr, i64, i64 } { ptr @.str.5169, i64 6, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 - store { ptr, i64, i64 } { ptr @.str.5170, i64 6, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 - store { ptr, i64, i64 } { ptr @.str.5171, i64 6, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12 - store { ptr, i64, i64 } { ptr @.str.5172, i64 8, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 - store { ptr, i64, i64 } { ptr @.str.5173, i64 8, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 - store { ptr, i64, i64 } { ptr @.str.5174, i64 8, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15 - store { ptr, i64, i64 } { ptr @.str.5175, i64 8, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 - store { ptr, i64, i64 } { ptr @.str.5176, i64 8, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 - store { ptr, i64, i64 } { ptr @.str.5177, i64 8, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18 - store { ptr, i64, i64 } { ptr @.str.5178, i64 8, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 - store { ptr, i64, i64 } { ptr @.str.5179, i64 8, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 - store { ptr, i64, i64 } { ptr @.str.5180, i64 6, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21 - store { ptr, i64, i64 } { ptr @.str.5181, i64 8, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 - store { ptr, i64, i64 } { ptr @.str.5182, 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.cond8091 -find.cond8091: - %t66 = load i64, ptr %a65 - %t67 = icmp slt i64 %t66, %t63 - br i1 %t67, label %find.body8092, label %find.end8095 -find.body8092: - %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.hit8093, label %find.next8094 -find.hit8093: - store i64 %t66, ptr %a62 - br label %find.end8095 -find.next8094: - %t74 = add i64 %t66, 1 - store i64 %t74, ptr %a65 - br label %find.cond8091 -find.end8095: - %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 %then8096, label %endif8098 -then8096: - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.5183, i64 0, i64 0 } -endif8098: - %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 %range8099, label %inrange8100 -range8099: - call void @finch_panic_index(ptr @.str.5185, i64 4830, i64 %t79, i64 %t81) - unreachable -inrange8100: - %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.5184, 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.5186, i64 14, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t94 -} - -define internal void @finch.drop.S_docs_Doc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_docs_Doc(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond8110 -n.cond8110: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body8111, label %n.end8112 -n.body8111: - %t7 = getelementptr inbounds %S.docs.Doc, ptr %t1, i64 %t5 - call void @finch.drop.S_docs_Doc(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond8110 -n.end8112: - call void @finch_arr_free(ptr %a) - ret void -} - -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 { ptr, i64, i64 }, align 16 - %a20 = alloca %S.docs.Doc, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca %S.ast.Node, align 16 - %a110 = alloca %S.ast.Node, align 16 - %a112 = alloca %S.ast.Node, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca i64, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.gen.Place, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca %S.gen.Val, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i1, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca %S.ast.Type, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca %S.gen.Val, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %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 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a779 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca %S.gen.Val, align 16 - %a832 = alloca i64, align 16 - %a844 = alloca %S.gen.Val, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a885 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca { ptr, i64, i64 }, align 16 - %a891 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a900 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a915 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca { ptr, i64, i64 }, align 16 - %a919 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a932 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a945 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a956 = alloca { ptr, i64, i64 }, align 16 - %a957 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a972 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca %S.gen.Val, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1011 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1022 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1028 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1080 = alloca { ptr, i64, i64 }, align 16 - %a1081 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca %S.ast.Type, align 16 - %a1108 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1112 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1114 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1118 = alloca { ptr, i64, i64 }, align 16 - %a1119 = alloca { ptr, i64, i64 }, align 16 - %a1123 = alloca %S.ast.Type, align 16 - %a1128 = alloca { ptr, i64, i64 }, align 16 - %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1130 = alloca { ptr, i64, i64 }, align 16 - %a1132 = alloca { ptr, i64, i64 }, align 16 - %a1133 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1143 = alloca { ptr, i64, i64 }, align 16 - %a1144 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1178 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1180 = alloca { ptr, i64, i64 }, align 16 - %a1181 = alloca { ptr, i64, i64 }, align 16 - %a1183 = alloca { ptr, i64, i64 }, align 16 - %a1184 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca { ptr, i64, i64 }, align 16 - %a1188 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca { ptr, i64, i64 }, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca { ptr, i64, i64 }, align 16 - %a1196 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1198 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca %S.ast.Type, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1217 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1243 = alloca %S.gen.Val, align 16 - %a1244 = alloca %S.ast.Type, align 16 - %a1245 = alloca %S.gen.Val, align 16 - %a1249 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1253 = alloca { ptr, i64, i64 }, align 16 - %a1254 = alloca { ptr, i64, i64 }, align 16 - %a1255 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1259 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1270 = alloca { ptr, i64, i64 }, align 16 - %a1271 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca %S.gen.Val, align 16 - %a1303 = alloca %S.gen.Val, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1309 = alloca { ptr, i64, i64 }, align 16 - %a1310 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1313 = alloca { ptr, i64, i64 }, align 16 - %a1314 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1316 = alloca { ptr, i64, i64 }, align 16 - %a1321 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1327 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1332 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1359 = alloca %S.gen.Val, align 16 - %a1365 = alloca { ptr, i64, i64 }, align 16 - %a1366 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1370 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1376 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1387 = alloca { ptr, i64, i64 }, align 16 - %a1388 = alloca { ptr, i64, i64 }, align 16 - %a1390 = alloca { ptr, i64, i64 }, align 16 - %a1391 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca %S.gen.Val, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1452 = alloca { ptr, i64, i64 }, align 16 - %a1457 = alloca { ptr, i64, i64 }, align 16 - %a1458 = alloca { ptr, i64, i64 }, align 16 - %a1459 = alloca { ptr, i64, i64 }, align 16 - %a1461 = alloca { ptr, i64, i64 }, align 16 - %a1462 = alloca { ptr, i64, i64 }, align 16 - %a1463 = alloca { ptr, i64, i64 }, align 16 - %a1464 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca { ptr, i64, i64 }, align 16 - %a1470 = alloca { ptr, i64, i64 }, align 16 - %a1491 = alloca { ptr, i64, i64 }, align 16 - %a1492 = alloca { ptr, i64, i64 }, align 16 - %a1493 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1497 = alloca { ptr, i64, i64 }, align 16 - %a1498 = alloca { ptr, i64, i64 }, align 16 - %a1500 = alloca { ptr, i64, i64 }, align 16 - %a1510 = alloca i64, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1525 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1530 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca i64, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1577 = alloca { ptr, i64, i64 }, align 16 - %a1578 = alloca { ptr, i64, i64 }, align 16 - %a1579 = alloca { ptr, i64, i64 }, align 16 - %a1580 = alloca { ptr, i64, i64 }, align 16 - %a1582 = alloca { ptr, i64, i64 }, align 16 - %a1583 = alloca { ptr, i64, i64 }, align 16 - %a1584 = alloca { ptr, i64, i64 }, align 16 - %a1585 = alloca { ptr, i64, i64 }, align 16 - %a1587 = alloca { ptr, i64, i64 }, align 16 - %a1588 = alloca { ptr, i64, i64 }, align 16 - %a1591 = alloca i64, align 16 - %a1599 = alloca %S.ast.Type, align 16 - %a1620 = alloca %S.ast.Type, align 16 - %a1641 = alloca i64, align 16 - %a1654 = alloca %S.gen.StructDef, align 16 - %a1655 = alloca %S.gen.StructDef, align 16 - %a1657 = alloca %S.gen.StructDef, align 16 - %a1685 = alloca %S.ast.Node, align 16 - %a1686 = alloca %S.ast.Node, align 16 - %a1688 = alloca %S.ast.Node, align 16 - %a1697 = alloca { ptr, i64, i64 }, align 16 - %a1698 = alloca { ptr, i64, i64 }, align 16 - %a1699 = alloca { ptr, i64, i64 }, align 16 - %a1701 = alloca { ptr, i64, i64 }, align 16 - %a1702 = alloca { ptr, i64, i64 }, align 16 - %a1703 = alloca { ptr, i64, i64 }, align 16 - %a1704 = alloca { ptr, i64, i64 }, align 16 - %a1708 = alloca { ptr, i64, i64 }, align 16 - %a1709 = alloca { ptr, i64, i64 }, align 16 - %a1711 = alloca { ptr, i64, i64 }, align 16 - %a1712 = alloca { ptr, i64, i64 }, align 16 - %a1713 = alloca { ptr, i64, i64 }, align 16 - %a1714 = alloca { ptr, i64, i64 }, align 16 - %a1715 = alloca { ptr, i64, i64 }, align 16 - %a1717 = alloca { ptr, i64, i64 }, align 16 - %a1718 = alloca { ptr, i64, i64 }, align 16 - %a1719 = alloca { ptr, i64, i64 }, align 16 - %a1720 = alloca { ptr, i64, i64 }, align 16 - %a1737 = alloca { ptr, i64, i64 }, align 16 - %a1753 = alloca i64, align 16 - %a1765 = alloca { ptr, i64, i64 }, align 16 - %a1775 = alloca { ptr, i64, i64 }, align 16 - %a1778 = alloca { ptr, i64, i64 }, align 16 - %a1779 = alloca { ptr, i64, i64 }, align 16 - %a1806 = alloca { ptr, i64, i64 }, align 16 - %a1807 = alloca { ptr, i64, i64 }, align 16 - %a1808 = alloca { ptr, i64, i64 }, align 16 - %a1810 = alloca { ptr, i64, i64 }, align 16 - %a1811 = alloca { ptr, i64, i64 }, align 16 - %a1812 = alloca { ptr, i64, i64 }, align 16 - %a1813 = alloca { ptr, i64, i64 }, align 16 - %a1815 = alloca { ptr, i64, i64 }, align 16 - %a1819 = alloca { ptr, i64, i64 }, align 16 - %a1820 = alloca { ptr, i64, i64 }, align 16 - %a1821 = alloca { ptr, i64, i64 }, align 16 - %a1823 = alloca { ptr, i64, i64 }, align 16 - %a1824 = alloca { ptr, i64, i64 }, align 16 - %a1825 = alloca { ptr, i64, i64 }, align 16 - %a1826 = alloca { ptr, i64, i64 }, align 16 - %a1830 = alloca { ptr, i64, i64 }, align 16 - %a1831 = alloca { ptr, i64, i64 }, align 16 - %a1832 = alloca { ptr, i64, i64 }, align 16 - %a1833 = alloca { ptr, i64, i64 }, align 16 - %a1834 = alloca { ptr, i64, i64 }, align 16 - %a1836 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 %panic8101, label %ok8102 -panic8101: - call void @finch_panic(ptr @.str.5187, i64 4835, ptr @.str.5188) - unreachable -ok8102: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - br label %logic.from8103 -logic.from8103: - br i1 %t12, label %logic.rhs8104, label %logic.end8105 -logic.rhs8104: - %t13 = load { ptr, i64, i64 }, ptr %a8 - %t14 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t13) - br label %logic.rend8106 -logic.rend8106: - br label %logic.end8105 -logic.end8105: - %t15 = phi i1 [ false, %logic.from8103 ], [ %t14, %logic.rend8106 ] - br i1 %t15, label %then8107, label %endif8109 -then8107: - %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 { ptr, i64, i64 } %t16, ptr %a19 - call void @finch.drop.arr_S_docs_Doc(ptr %a19) - store %S.docs.Doc %t18, ptr %a20 - %t21 = getelementptr inbounds %S.docs.Doc, ptr %a20, i32 0, i32 0 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = icmp sgt i64 %t23, 0 - br i1 %t24, label %then8113, label %endif8115 -then8113: - %t25 = load ptr, ptr %a1 - %t26 = load %S.ast.Node, ptr %a2 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t28 = load i64, ptr %t27 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = load %S.docs.Doc, ptr %a20 - %t32 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t31) - call void @finch.gen.noteRef(ptr %t25, %S.ast.Node %t26, i64 %t28, i64 %t30, { ptr, i64, i64 } %t32, { ptr, i64, i64 } { ptr @.str.5189, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif8115 -endif8115: - call void @finch.drop.S_docs_Doc(ptr %a20) - br label %endif8109 -endif8109: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.5190, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then8116, label %endif8118 -then8116: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.5191, i64 86, i64 0 }) - br label %endif8118 -endif8118: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5192, i64 5, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then8119, label %endif8121 -then8119: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load i64, ptr %t47 - store i64 0, ptr %a49 - br label %for.cond8122 -for.cond8122: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t48 - br i1 %t51, label %for.body8123, label %for.end8125 -for.body8123: - %t52 = load ptr, ptr %a1 - %t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t54 = load i64, ptr %a49 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range8126, label %inrange8127 -range8126: - call void @finch_panic_index(ptr @.str.5193, i64 4846, i64 %t54, i64 %t56) - unreachable -inrange8127: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t52, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t64 = getelementptr inbounds %S.ast.Type, ptr %t63, i32 0, i32 0 - %t65 = load { ptr, i64, i64 }, ptr %t64 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.5194, i64 4, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br i1 %t69, label %then8128, label %endif8130 -then8128: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t72 = load i64, ptr %a49 - %t73 = load { ptr, i64, i64 }, ptr %t71 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range8131, label %inrange8132 -range8131: - call void @finch_panic_index(ptr @.str.5195, i64 4848, i64 %t72, i64 %t74) - unreachable -inrange8132: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 %t72 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5196, i64 53, i64 0 }) - br label %endif8130 -endif8130: - %t79 = load i64, ptr %a49 - %t80 = icmp sgt i64 %t79, 0 - br i1 %t80, label %then8133, label %endif8135 -then8133: - %t81 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t81, { ptr, i64, i64 } { ptr @.str.5197, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5198, i64 0, i64 0 }) - br label %endif8135 -endif8135: - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - call void @finch.gen.emitPrint(ptr %t82, { ptr, i64, i64 } %t84, %S.ast.Type %t86, i1 false) - %t87 = load ptr, ptr %a1 - %t88 = load %S.gen.Val, ptr %a62 - call void @finch.gen.release(ptr %t87, %S.gen.Val %t88) - call void @finch.drop.S_gen_Val(ptr %a62) - br label %for.step8124 -for.step8124: - %t89 = load i64, ptr %a49 - %t90 = add i64 %t89, 1 - store i64 %t90, ptr %a49 - br label %for.cond8122 -for.end8125: - %t91 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t91, { ptr, i64, i64 } { ptr @.str.5199, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5200, i64 0, i64 0 }) - %t92 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5201, i64 4, i64 0 }) - %t93 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t92, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t93 -endif8121: - %t94 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5202, i64 4, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then8136, label %endif8138 -then8136: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t99, %S.ast.Node %t100, i64 0, i64 1, { ptr, i64, i64 } %t101) - %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t103 = load { ptr, i64, i64 }, ptr %t102 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 0, %t104 - br i1 %t105, label %range8139, label %inrange8140 -range8139: - call void @finch_panic_index(ptr @.str.5203, i64 4861, i64 0, i64 %t104) - unreachable -inrange8140: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 0 - %t108 = load %S.ast.Node, ptr %t107 - store %S.ast.Node %t108, ptr %a109 - call void @finch.copy.S_ast_Node(ptr %a110, ptr %a109) - %t111 = load %S.ast.Node, ptr %a110 - store %S.ast.Node %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.5204, i64 3, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from8141 -logic.from8141: - br i1 %t118, label %logic.rhs8142, label %logic.end8143 -logic.rhs8142: - %t119 = load ptr, ptr %a1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = call i64 @finch.gen.lookup(ptr %t119, { ptr, i64, i64 } %t121) - %t123 = icmp slt i64 %t122, 0 - br label %logic.rend8144 -logic.rend8144: - br label %logic.end8143 -logic.end8143: - %t124 = phi i1 [ false, %logic.from8141 ], [ %t123, %logic.rend8144 ] - br i1 %t124, label %then8145, label %endif8147 -then8145: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = icmp eq ptr %t126, null - br i1 %t127, label %panic8148, label %ok8149 -panic8148: - call void @finch_panic(ptr @.str.5205, i64 4863, ptr @.str.5206) - unreachable -ok8149: - %t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 14 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call i64 @finch.gen.findFn(ptr %t125, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t131) - store i64 %t132, ptr %a133 - %t134 = load i64, ptr %a133 - %t135 = icmp sge i64 %t134, 0 - br i1 %t135, label %then8150, label %endif8152 -then8150: - %t136 = load ptr, ptr %a1 - %t137 = load i64, ptr %a133 - %t138 = load %S.ast.Node, ptr %a112 - %t139 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t136, i64 %t137, %S.ast.Node %t138) - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5207, i64 3, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif8152: - br label %endif8147 -endif8147: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5208, i64 3, i64 0 }, ptr %a146 - %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) - %t148 = icmp eq i32 %t147, 0 - br label %logic.from8153 -logic.from8153: - br i1 %t148, label %logic.rhs8154, label %logic.end8155 -logic.rhs8154: - %t149 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5209, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp eq i32 %t153, 0 - br label %logic.rend8156 -logic.rend8156: - br label %logic.end8155 -logic.end8155: - %t155 = phi i1 [ false, %logic.from8153 ], [ %t154, %logic.rend8156 ] - br label %logic.from8157 -logic.from8157: - br i1 %t155, label %logic.rhs8158, label %logic.end8159 -logic.rhs8158: - %t156 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.5210, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br label %logic.rend8160 -logic.rend8160: - br label %logic.end8159 -logic.end8159: - %t162 = phi i1 [ false, %logic.from8157 ], [ %t161, %logic.rend8160 ] - br i1 %t162, label %then8161, label %endif8163 -then8161: - %t163 = load ptr, ptr %a1 - %t164 = load %S.ast.Node, ptr %a112 - call void @finch.gen.fail(ptr %t163, %S.ast.Node %t164, { ptr, i64, i64 } { ptr @.str.5211, i64 63, i64 0 }) - br label %endif8163 -endif8163: - %t165 = load ptr, ptr %a1 - %t166 = load %S.ast.Node, ptr %a112 - %t167 = call %S.gen.Place @finch.gen.place(ptr %t165, %S.ast.Node %t166, i1 true) - store %S.gen.Place %t167, ptr %a168 - %t169 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - %t174 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t173, 0 - %t175 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t176) - %t178 = insertvalue %S.gen.Val %t174, %S.ast.Type %t177, 1 - call void @finch.drop.S_gen_Place(ptr %a168) - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t178 -endif8138: - %t179 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5212, i64 3, i64 0 }, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then8164, label %endif8166 -then8164: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a2 - %t186 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t184, %S.ast.Node %t185, i64 0, i64 1, { ptr, i64, i64 } %t186) - %t187 = load ptr, ptr %a1 - %t188 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 0, %t190 - br i1 %t191, label %range8167, label %inrange8168 -range8167: - call void @finch_panic_index(ptr @.str.5213, i64 4876, i64 0, i64 %t190) - unreachable -inrange8168: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Node, ptr %t192, i64 0 - %t194 = load %S.ast.Node, ptr %t193 - %t195 = call %S.gen.Val @finch.gen.expr(ptr %t187, %S.ast.Node %t194) - store %S.gen.Val %t195, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - call void @finch_str_copy(ptr %a204, ptr %a203) - %t205 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t205, ptr %a206 - store i1 false, ptr %a207 - %t208 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5214, i64 3, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then8169, label %else8170 -then8169: - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a196 - %t215 = call { ptr, i64, i64 } @finch.gen.own(ptr %t213, %S.gen.Val %t214) - %t216 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t217 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t218 = load %S.ast.Type, ptr %t217 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Val %t216, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Val %t222, i1 true, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -else8170: - %t224 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t225 = load %S.ast.Type, ptr %t224 - %t226 = call i1 @finch.gen.isSigned(%S.ast.Type %t225) - br i1 %t226, label %then8172, label %else8173 -then8172: - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5215, i64 34, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.5216, i64 6, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t242 = load %S.ast.Type, ptr %t241 - %t243 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5217, i64 3, i64 0 }) - %t244 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t238, { ptr, i64, i64 } %t240, %S.ast.Type %t242, %S.ast.Type %t243) - store %S.ast.Type %t243, ptr %a245 - call void @finch.drop.S_ast_Type(ptr %a245) - store { ptr, i64, i64 } %t237, ptr %a247 - store { ptr, i64, i64 } %t244, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t237, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t244, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.5218, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t227, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif8174 -else8173: - %t258 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t259 = load %S.ast.Type, ptr %t258 - %t260 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t259) - br i1 %t260, label %then8175, label %else8176 -then8175: - %t261 = load ptr, ptr %a1 - %t262 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5219, i64 35, i64 0 }, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5220, i64 6, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t274 = load { ptr, i64, i64 }, ptr %t273 - %t275 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t276 = load %S.ast.Type, ptr %t275 - %t277 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5221, i64 3, i64 0 }) - %t278 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t272, { ptr, i64, i64 } %t274, %S.ast.Type %t276, %S.ast.Type %t277) - store %S.ast.Type %t277, ptr %a279 - call void @finch.drop.S_ast_Type(ptr %a279) - store { ptr, i64, i64 } %t271, ptr %a281 - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t271, ptr %a283 - call void @finch_str_drop(ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a280 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5222, i64 1, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.emit(ptr %t261, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif8177 -else8176: - %t292 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t293 = load %S.ast.Type, ptr %t292 - %t294 = call i1 @finch.gen.isFloat(%S.ast.Type %t293) - br i1 %t294, label %then8178, label %else8179 -then8178: - %t295 = load ptr, ptr %a1 - %t296 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5223, i64 36, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t300, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.5224, i64 9, i64 0 }, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a301 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5225, i64 5, i64 0 }) - %t312 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t306, { ptr, i64, i64 } %t308, %S.ast.Type %t310, %S.ast.Type %t311) - store %S.ast.Type %t311, ptr %a313 - call void @finch.drop.S_ast_Type(ptr %a313) - store { ptr, i64, i64 } %t305, ptr %a315 - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t305, ptr %a317 - call void @finch_str_drop(ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.5226, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - call void @finch.gen.emit(ptr %t295, { ptr, i64, i64 } %t324) - store { ptr, i64, i64 } %t324, ptr %a325 - call void @finch_str_drop(ptr %a325) - br label %endif8180 -else8179: - %t326 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t326, ptr %a327 - store { ptr, i64, i64 } { ptr @.str.5227, i64 4, i64 0 }, ptr %a328 - %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) - %t330 = icmp ne i32 %t329, 0 - br i1 %t330, label %then8181, label %else8182 -then8181: - %t331 = load ptr, ptr %a1 - %t332 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5228, i64 35, i64 0 }, ptr %a334 - store { ptr, i64, i64 } %t332, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a333 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.5229, i64 13, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t341, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t341, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.5230, i64 1, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - call void @finch.gen.emit(ptr %t331, { ptr, i64, i64 } %t353) - store { ptr, i64, i64 } %t353, ptr %a354 - call void @finch_str_drop(ptr %a354) - br label %endif8183 -else8182: - %t355 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t355, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5231, i64 4, i64 0 }, ptr %a357 - %t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357) - %t359 = icmp ne i32 %t358, 0 - br i1 %t359, label %then8184, label %else8185 -then8184: - %t360 = load ptr, ptr %a1 - %t361 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - store { ptr, i64, i64 } { ptr @.str.5232, i64 8, i64 0 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t366, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.5233, i64 7, i64 0 }, ptr %a369 - call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369) - store { ptr, i64, i64 } %t366, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a367 - %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t360, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a373 - call void @finch_str_drop(ptr %a373) - store { ptr, i64, i64 } %t372, ptr %a374 - %t375 = load ptr, ptr %a1 - %t376 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5234, i64 35, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - %t380 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t380, ptr %a382 - store { ptr, i64, i64 } { ptr @.str.5235, i64 6, i64 0 }, ptr %a383 - call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) - store { ptr, i64, i64 } %t380, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a381 - %t386 = load { ptr, i64, i64 }, ptr %a374 - store { ptr, i64, i64 } %t385, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - store { ptr, i64, i64 } %t385, ptr %a390 - call void @finch_str_drop(ptr %a390) - %t391 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.5236, i64 1, i64 0 }, ptr %a394 - call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) - store { ptr, i64, i64 } %t391, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a392 - call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t396) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a374) - br label %endif8186 -else8185: - %t398 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t398, ptr %a399 - store { ptr, i64, i64 } { ptr @.str.5237, i64 3, i64 0 }, ptr %a400 - %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) - %t402 = icmp ne i32 %t401, 0 - br i1 %t402, label %then8187, label %else8188 -then8187: - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t403, { ptr, i64, i64 } { ptr @.str.5238, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5239, i64 15, i64 0 }, { ptr, i64, i64 } %t404) - %t405 = load ptr, ptr %a1 - %t406 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5240, i64 32, i64 0 }, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5241, i64 6, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - %t416 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t417 = load { ptr, i64, i64 }, ptr %t416 - store { ptr, i64, i64 } %t415, ptr %a419 - store { ptr, i64, i64 } %t417, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t415, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - store { ptr, i64, i64 } %t422, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.5242, i64 1, i64 0 }, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - call void @finch.gen.emit(ptr %t405, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_drop(ptr %a428) - store i1 true, ptr %a207 - br label %endif8189 -else8188: - %t429 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.5243, i64 5, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.from8190 -logic.from8190: - br i1 %t433, label %logic.rhs8191, label %logic.end8192 -logic.rhs8191: - %t434 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t435 = getelementptr inbounds %S.ast.Type, ptr %t434, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 0, %t437 - br i1 %t438, label %range8193, label %inrange8194 -range8193: - call void @finch_panic_index(ptr @.str.5244, i64 4898, i64 0, i64 %t437) - unreachable -inrange8194: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds %S.ast.Type, ptr %t439, i64 0 - %t441 = getelementptr inbounds %S.ast.Type, ptr %t440, i32 0, i32 0 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } { ptr @.str.5245, i64 2, i64 0 }, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br label %logic.from8195 -logic.from8195: - br i1 %t446, label %logic.end8197, label %logic.rhs8196 -logic.rhs8196: - %t447 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t448 = getelementptr inbounds %S.ast.Type, ptr %t447, i32 0, i32 1 - %t449 = load { ptr, i64, i64 }, ptr %t448 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 0, %t450 - br i1 %t451, label %range8198, label %inrange8199 -range8198: - call void @finch_panic_index(ptr @.str.5246, i64 4898, i64 0, i64 %t450) - unreachable -inrange8199: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %t452, i64 0 - %t454 = getelementptr inbounds %S.ast.Type, ptr %t453, i32 0, i32 0 - %t455 = load { ptr, i64, i64 }, ptr %t454 - store { ptr, i64, i64 } %t455, ptr %a456 - store { ptr, i64, i64 } { ptr @.str.5247, i64 4, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend8200 -logic.rend8200: - br label %logic.end8197 -logic.end8197: - %t460 = phi i1 [ true, %logic.from8195 ], [ %t459, %logic.rend8200 ] - br label %logic.rend8201 -logic.rend8201: - br label %logic.end8192 -logic.end8192: - %t461 = phi i1 [ false, %logic.from8190 ], [ %t460, %logic.rend8201 ] - br i1 %t461, label %then8202, label %else8203 -then8202: - %t462 = load ptr, ptr %a1 - %t463 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t462, { ptr, i64, i64 } { ptr @.str.5248, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5249, i64 15, i64 0 }, { ptr, i64, i64 } %t463) - %t464 = load ptr, ptr %a1 - %t465 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5250, i64 36, i64 0 }, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - %t469 = load { ptr, i64, i64 }, ptr %a466 - store { ptr, i64, i64 } %t469, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.5251, i64 6, i64 0 }, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - store { ptr, i64, i64 } %t469, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a470 - %t475 = load ptr, ptr %a1 - %t476 = load %S.gen.Val, ptr %a196 - %t477 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t475, %S.gen.Val %t476) - store { ptr, i64, i64 } %t474, ptr %a479 - store { ptr, i64, i64 } %t477, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t474, ptr %a481 - call void @finch_str_drop(ptr %a481) - store { ptr, i64, i64 } %t477, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = load { ptr, i64, i64 }, ptr %a478 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - store { ptr, i64, i64 } %t483, ptr %a487 - call void @finch_str_drop(ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a484 - call void @finch.gen.emit(ptr %t464, { ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t488, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load ptr, ptr %a1 - %t491 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t490, %S.gen.Val %t491) - br label %endif8204 -else8203: - %t492 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t492, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.5253, i64 4, i64 0 }, ptr %a494 - %t495 = call i32 @finch_str_eq(ptr %a493, ptr %a494) - %t496 = icmp ne i32 %t495, 0 - br label %logic.from8205 -logic.from8205: - br i1 %t496, label %logic.end8207, label %logic.rhs8206 -logic.rhs8206: - %t497 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t497, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5254, i64 4, i64 0 }, ptr %a499 - %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) - %t501 = icmp ne i32 %t500, 0 - br label %logic.rend8208 -logic.rend8208: - br label %logic.end8207 -logic.end8207: - %t502 = phi i1 [ true, %logic.from8205 ], [ %t501, %logic.rend8208 ] - br label %logic.from8209 -logic.from8209: - br i1 %t502, label %logic.end8211, label %logic.rhs8210 -logic.rhs8210: - %t503 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t503, ptr %a504 - store { ptr, i64, i64 } { ptr @.str.5255, i64 5, i64 0 }, ptr %a505 - %t506 = call i32 @finch_str_eq(ptr %a504, ptr %a505) - %t507 = icmp ne i32 %t506, 0 - br label %logic.rend8212 -logic.rend8212: - br label %logic.end8211 -logic.end8211: - %t508 = phi i1 [ true, %logic.from8209 ], [ %t507, %logic.rend8212 ] - br label %logic.from8213 -logic.from8213: - br i1 %t508, label %logic.end8215, label %logic.rhs8214 -logic.rhs8214: - %t509 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.5256, i64 3, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.rend8216 -logic.rend8216: - br label %logic.end8215 -logic.end8215: - %t514 = phi i1 [ true, %logic.from8213 ], [ %t513, %logic.rend8216 ] - br label %logic.from8217 -logic.from8217: - br i1 %t514, label %logic.end8219, label %logic.rhs8218 -logic.rhs8218: - %t515 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t515, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.5257, i64 6, i64 0 }, ptr %a517 - %t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517) - %t519 = icmp ne i32 %t518, 0 - br label %logic.rend8220 -logic.rend8220: - br label %logic.end8219 -logic.end8219: - %t520 = phi i1 [ true, %logic.from8217 ], [ %t519, %logic.rend8220 ] - br label %logic.from8221 -logic.from8221: - br i1 %t520, label %logic.end8223, label %logic.rhs8222 -logic.rhs8222: - %t521 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5258, i64 4, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8224 -logic.rend8224: - br label %logic.end8223 -logic.end8223: - %t526 = phi i1 [ true, %logic.from8221 ], [ %t525, %logic.rend8224 ] - br i1 %t526, label %then8225, label %else8226 -then8225: - %t527 = load ptr, ptr %a1 - %t528 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t527, { ptr, i64, i64 } { ptr @.str.5259, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5260, i64 15, i64 0 }, { ptr, i64, i64 } %t528) - %t529 = load ptr, ptr %a1 - %t530 = load { ptr, i64, i64 }, ptr %a199 - %t531 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t532 = load { ptr, i64, i64 }, ptr %t531 - %t533 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t534 = load %S.ast.Type, ptr %t533 - call void @finch.gen.emitFormat(ptr %t529, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t532, %S.ast.Type %t534, i1 false) - %t535 = load ptr, ptr %a1 - %t536 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t535, %S.gen.Val %t536) - br label %endif8227 -else8226: - %t537 = load ptr, ptr %a1 - %t538 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = extractvalue { ptr, i64, i64 } %t539, 1 - %t541 = icmp uge i64 0, %t540 - br i1 %t541, label %range8228, label %inrange8229 -range8228: - call void @finch_panic_index(ptr @.str.5261, i64 4908, i64 0, i64 %t540) - unreachable -inrange8229: - %t542 = extractvalue { ptr, i64, i64 } %t539, 0 - %t543 = getelementptr inbounds %S.ast.Node, ptr %t542, i64 0 - %t544 = load %S.ast.Node, ptr %t543 - %t545 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t546 = load %S.ast.Type, ptr %t545 - %t547 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t546) - store { ptr, i64, i64 } { ptr @.str.5262, i64 11, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t547, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.5263, i64 9, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - call void @finch.gen.fail(ptr %t537, %S.ast.Node %t544, { ptr, i64, i64 } %t557) - store { ptr, i64, i64 } %t557, ptr %a558 - call void @finch_str_drop(ptr %a558) - br label %endif8227 -endif8227: - br label %endif8204 -endif8204: - br label %endif8189 -endif8189: - br label %endif8186 -endif8186: - br label %endif8183 -endif8183: - br label %endif8180 -endif8180: - br label %endif8177 -endif8177: - br label %endif8174 -endif8174: - br label %endif8171 -endif8171: - %t559 = load ptr, ptr %a1 - %t560 = load { ptr, i64, i64 }, ptr %a199 - %t561 = call { ptr, i64, i64 } @finch.gen.load(ptr %t559, { ptr, i64, i64 } { ptr @.str.5264, i64 17, i64 0 }, { ptr, i64, i64 } %t560) - %t562 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t561, 0 - %t563 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5265, i64 3, i64 0 }) - %t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1 - %t565 = load i1, ptr %a207 - %t566 = xor i1 %t565, true - %t567 = insertvalue %S.gen.Val %t564, i1 %t566, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t567 -endif8166: - %t568 = load { ptr, i64, i64 }, ptr %a8 - %t569 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t568) - store { ptr, i64, i64 } %t569, ptr %a570 - %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %a570, i32 0, i32 1 - %t572 = load i64, ptr %t571 - %t573 = icmp sgt i64 %t572, 0 - br i1 %t573, label %then8230, label %endif8232 -then8230: - %t574 = load ptr, ptr %a1 - %t575 = load %S.ast.Node, ptr %a2 - %t576 = load { ptr, i64, i64 }, ptr %a570 - %t577 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t576) - %t578 = call %S.gen.Val @finch.gen.convert(ptr %t574, %S.ast.Node %t575, %S.ast.Type %t577) - store %S.ast.Type %t577, ptr %a579 - call void @finch.drop.S_ast_Type(ptr %a579) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t578 -endif8232: - %t580 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t580, ptr %a581 - store { ptr, i64, i64 } { ptr @.str.5266, i64 9, i64 0 }, ptr %a582 - %t583 = call i32 @finch_str_eq(ptr %a581, ptr %a582) - %t584 = icmp ne i32 %t583, 0 - br label %logic.from8233 -logic.from8233: - br i1 %t584, label %logic.end8235, label %logic.rhs8234 -logic.rhs8234: - %t585 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t585, ptr %a586 - store { ptr, i64, i64 } { ptr @.str.5267, i64 11, i64 0 }, ptr %a587 - %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) - %t589 = icmp ne i32 %t588, 0 - br label %logic.rend8236 -logic.rend8236: - br label %logic.end8235 -logic.end8235: - %t590 = phi i1 [ true, %logic.from8233 ], [ %t589, %logic.rend8236 ] - br i1 %t590, label %then8237, label %endif8239 -then8237: - %t591 = load ptr, ptr %a1 - %t592 = load %S.ast.Node, ptr %a2 - %t593 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t591, %S.ast.Node %t592, i64 0, i64 1, { ptr, i64, i64 } %t593) - %t594 = load ptr, ptr %a1 - %t595 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t596 = load { ptr, i64, i64 }, ptr %t595 - %t597 = extractvalue { ptr, i64, i64 } %t596, 1 - %t598 = icmp uge i64 0, %t597 - br i1 %t598, label %range8240, label %inrange8241 -range8240: - call void @finch_panic_index(ptr @.str.5268, i64 4918, i64 0, i64 %t597) - unreachable -inrange8241: - %t599 = extractvalue { ptr, i64, i64 } %t596, 0 - %t600 = getelementptr inbounds %S.ast.Node, ptr %t599, i64 0 - %t601 = load %S.ast.Node, ptr %t600 - %t602 = call %S.gen.Val @finch.gen.strArg(ptr %t594, %S.ast.Node %t601, { ptr, i64, i64 } { ptr @.str.5269, i64 13, i64 0 }) - store %S.gen.Val %t602, ptr %a603 - %t604 = load ptr, ptr %a1 - %t605 = load %S.gen.Val, ptr %a603 - %t606 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t604, %S.gen.Val %t605) - store { ptr, i64, i64 } %t606, ptr %a607 - %t608 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t608, ptr %a609 - store { ptr, i64, i64 } { ptr @.str.5270, i64 11, i64 0 }, ptr %a610 - %t611 = call i32 @finch_str_eq(ptr %a609, ptr %a610) - %t612 = icmp ne i32 %t611, 0 - br i1 %t612, label %then8242, label %endif8244 -then8242: - %t613 = load ptr, ptr %a1 - %t614 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } { ptr @.str.5271, i64 32, i64 0 }, ptr %a616 - store { ptr, i64, i64 } %t614, ptr %a617 - call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617) - %t618 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t618, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5272, i64 1, i64 0 }, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t618, ptr %a622 - call void @finch_str_drop(ptr %a622) - %t623 = load { ptr, i64, i64 }, ptr %a619 - %t624 = call { ptr, i64, i64 } @finch.gen.op(ptr %t613, { ptr, i64, i64 } %t623) - store { ptr, i64, i64 } %t623, ptr %a625 - call void @finch_str_drop(ptr %a625) - store { ptr, i64, i64 } %t624, ptr %a626 - %t627 = load ptr, ptr %a1 - %t628 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t627, %S.gen.Val %t628) - %t629 = load ptr, ptr %a1 - %t630 = load { ptr, i64, i64 }, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5273, i64 12, i64 0 }, ptr %a632 - store { ptr, i64, i64 } %t630, ptr %a633 - call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a631 - store { ptr, i64, i64 } %t634, ptr %a636 - store { ptr, i64, i64 } { ptr @.str.5274, i64 3, i64 0 }, ptr %a637 - call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = call { ptr, i64, i64 } @finch.gen.op(ptr %t629, { ptr, i64, i64 } %t639) - store { ptr, i64, i64 } %t639, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t640, 0 - %t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5275, i64 4, i64 0 }) - %t644 = insertvalue %S.gen.Val %t642, %S.ast.Type %t643, 1 - call void @finch_str_drop(ptr %a626) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t644 -endif8244: - %t645 = load ptr, ptr %a1 - %t646 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t645) - store { ptr, i64, i64 } %t646, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic8245, label %ok8246 -panic8245: - call void @finch_panic(ptr @.str.5276, i64 4926, ptr @.str.5277) - unreachable -ok8246: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 41 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = load %S.ast.Node, ptr %a2 - %t653 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t652) - store { ptr, i64, i64 } %t651, ptr %a654 - store { ptr, i64, i64 } %t653, ptr %a655 - %t656 = call i32 @finch_str_eq(ptr %a654, ptr %a655) - %t657 = icmp ne i32 %t656, 0 - store { ptr, i64, i64 } %t653, ptr %a658 - call void @finch_str_drop(ptr %a658) - br i1 %t657, label %then8247, label %endif8249 -then8247: - %t659 = load ptr, ptr %a1 - %t660 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t659, { ptr, i64, i64 } { ptr @.str.5278, i64 17, i64 0 }) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a647 - call void @finch.gen.store(ptr %t662, { ptr, i64, i64 } { ptr @.str.5279, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5280, i64 15, i64 0 }, { ptr, i64, i64 } %t663) - %t664 = load ptr, ptr %a1 - %t665 = load { ptr, i64, i64 }, ptr %a661 - call void @finch.gen.store(ptr %t664, { ptr, i64, i64 } { ptr @.str.5281, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5282, i64 15, i64 0 }, { ptr, i64, i64 } %t665) - %t666 = load ptr, ptr %a1 - %t667 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5283, i64 34, i64 0 }, ptr %a669 - store { ptr, i64, i64 } %t667, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a668 - store { ptr, i64, i64 } %t671, ptr %a673 - store { ptr, i64, i64 } { ptr @.str.5284, i64 6, i64 0 }, ptr %a674 - call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) - store { ptr, i64, i64 } %t671, ptr %a675 - call void @finch_str_drop(ptr %a675) - %t676 = load { ptr, i64, i64 }, ptr %a672 - %t677 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t676, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t676, ptr %a681 - call void @finch_str_drop(ptr %a681) - %t682 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } %t682, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.5285, i64 6, i64 0 }, ptr %a685 - call void @finch_str_concat(ptr %a683, ptr %a684, ptr %a685) - store { ptr, i64, i64 } %t682, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load { ptr, i64, i64 }, ptr %a683 - %t688 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t687, ptr %a690 - store { ptr, i64, i64 } %t688, ptr %a691 - call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) - store { ptr, i64, i64 } %t687, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load { ptr, i64, i64 }, ptr %a689 - store { ptr, i64, i64 } %t693, ptr %a695 - store { ptr, i64, i64 } { ptr @.str.5286, i64 1, i64 0 }, ptr %a696 - call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) - store { ptr, i64, i64 } %t693, ptr %a697 - call void @finch_str_drop(ptr %a697) - %t698 = load { ptr, i64, i64 }, ptr %a694 - %t699 = call { ptr, i64, i64 } @finch.gen.op(ptr %t666, { ptr, i64, i64 } %t698) - store { ptr, i64, i64 } %t698, ptr %a700 - call void @finch_str_drop(ptr %a700) - store { ptr, i64, i64 } %t699, ptr %a701 - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a701 - store { ptr, i64, i64 } { ptr @.str.5287, i64 12, i64 0 }, ptr %a705 - store { ptr, i64, i64 } %t703, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - %t707 = load { ptr, i64, i64 }, ptr %a704 - store { ptr, i64, i64 } %t707, ptr %a709 - store { ptr, i64, i64 } { ptr @.str.5288, i64 3, i64 0 }, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - store { ptr, i64, i64 } %t707, ptr %a711 - call void @finch_str_drop(ptr %a711) - %t712 = load { ptr, i64, i64 }, ptr %a708 - %t713 = call { ptr, i64, i64 } @finch.gen.op(ptr %t702, { ptr, i64, i64 } %t712) - store { ptr, i64, i64 } %t712, ptr %a714 - call void @finch_str_drop(ptr %a714) - %t715 = load ptr, ptr %a1 - %t716 = icmp eq ptr %t715, null - br i1 %t716, label %panic8250, label %ok8251 -panic8250: - call void @finch_panic(ptr @.str.5289, i64 4931, ptr @.str.5290) - unreachable -ok8251: - %t717 = getelementptr inbounds %S.gen.Gen, ptr %t715, i32 0, i32 42 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t713, ptr %t717 - store { ptr, i64, i64 } %t718, ptr %a719 - call void @finch_str_drop(ptr %a719) - %t720 = load ptr, ptr %a1 - %t721 = load { ptr, i64, i64 }, ptr %a661 - %t722 = call { ptr, i64, i64 } @finch.gen.load(ptr %t720, { ptr, i64, i64 } { ptr @.str.5291, i64 17, i64 0 }, { ptr, i64, i64 } %t721) - %t723 = load ptr, ptr %a1 - %t724 = icmp eq ptr %t723, null - br i1 %t724, label %panic8252, label %ok8253 -panic8252: - call void @finch_panic(ptr @.str.5292, i64 4932, ptr @.str.5293) - unreachable -ok8253: - %t725 = getelementptr inbounds %S.gen.Gen, ptr %t723, i32 0, i32 43 - %t726 = load { ptr, i64, i64 }, ptr %t725 - store { ptr, i64, i64 } %t722, ptr %t725 - store { ptr, i64, i64 } %t726, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load ptr, ptr %a1 - %t729 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t728, %S.gen.Val %t729) - %t730 = load ptr, ptr %a1 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = call { ptr, i64, i64 } @finch.gen.load(ptr %t730, { ptr, i64, i64 } { ptr @.str.5294, i64 17, i64 0 }, { ptr, i64, i64 } %t731) - %t733 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t732, 0 - %t734 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5295, i64 3, i64 0 }) - %t735 = insertvalue %S.gen.Val %t733, %S.ast.Type %t734, 1 - %t736 = insertvalue %S.gen.Val %t735, i1 true, 2 - call void @finch_str_drop(ptr %a701) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t736 -endif8249: - %t737 = load ptr, ptr %a1 - %t738 = load ptr, ptr %a1 - %t739 = icmp eq ptr %t738, null - br i1 %t739, label %panic8254, label %ok8255 -panic8254: - call void @finch_panic(ptr @.str.5296, i64 4936, ptr @.str.5297) - unreachable -ok8255: - %t740 = getelementptr inbounds %S.gen.Gen, ptr %t738, i32 0, i32 1 - %t741 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t742 = load i64, ptr %t741 - %t743 = load { ptr, i64, i64 }, ptr %t740 - %t744 = extractvalue { ptr, i64, i64 } %t743, 1 - %t745 = icmp uge i64 %t742, %t744 - br i1 %t745, label %range8256, label %inrange8257 -range8256: - call void @finch_panic_index(ptr @.str.5298, i64 4936, i64 %t742, i64 %t744) - unreachable -inrange8257: - %t746 = extractvalue { ptr, i64, i64 } %t743, 0 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i64 %t742 - %t748 = load { ptr, i64, i64 }, ptr %t747 - %t749 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t737, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t749, ptr %a750 - %t751 = load ptr, ptr %a1 - %t752 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5299, i64 31, i64 0 }, ptr %a754 - store { ptr, i64, i64 } %t752, ptr %a755 - call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) - %t756 = load { ptr, i64, i64 }, ptr %a753 - store { ptr, i64, i64 } %t756, ptr %a758 - store { ptr, i64, i64 } { ptr @.str.5300, i64 6, i64 0 }, ptr %a759 - call void @finch_str_concat(ptr %a757, ptr %a758, ptr %a759) - store { ptr, i64, i64 } %t756, ptr %a760 - call void @finch_str_drop(ptr %a760) - %t761 = load { ptr, i64, i64 }, ptr %a757 - %t762 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t761, ptr %a764 - store { ptr, i64, i64 } %t762, ptr %a765 - call void @finch_str_concat(ptr %a763, ptr %a764, ptr %a765) - store { ptr, i64, i64 } %t761, ptr %a766 - call void @finch_str_drop(ptr %a766) - %t767 = load { ptr, i64, i64 }, ptr %a763 - store { ptr, i64, i64 } %t767, ptr %a769 - store { ptr, i64, i64 } { ptr @.str.5301, i64 6, i64 0 }, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - %t773 = load { ptr, i64, i64 }, ptr %a750 - store { ptr, i64, i64 } %t772, ptr %a775 - store { ptr, i64, i64 } %t773, ptr %a776 - call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776) - store { ptr, i64, i64 } %t772, ptr %a777 - call void @finch_str_drop(ptr %a777) - %t778 = load { ptr, i64, i64 }, ptr %a774 - store { ptr, i64, i64 } %t778, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.5302, i64 6, i64 0 }, ptr %a781 - call void @finch_str_concat(ptr %a779, ptr %a780, ptr %a781) - store { ptr, i64, i64 } %t778, ptr %a782 - call void @finch_str_drop(ptr %a782) - %t783 = load { ptr, i64, i64 }, ptr %a779 - %t784 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t785 = load i64, ptr %t784 - call void @finch_str_from_int(ptr %a786, i64 %t785) - %t787 = load { ptr, i64, i64 }, ptr %a786 - store { ptr, i64, i64 } %t783, ptr %a789 - store { ptr, i64, i64 } %t787, ptr %a790 - call void @finch_str_concat(ptr %a788, ptr %a789, ptr %a790) - store { ptr, i64, i64 } %t783, ptr %a791 - call void @finch_str_drop(ptr %a791) - store { ptr, i64, i64 } %t787, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a788 - store { ptr, i64, i64 } %t793, ptr %a795 - store { ptr, i64, i64 } { ptr @.str.5303, i64 1, i64 0 }, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t793, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - call void @finch.gen.emit(ptr %t751, { ptr, i64, i64 } %t798) - store { ptr, i64, i64 } %t798, ptr %a799 - call void @finch_str_drop(ptr %a799) - %t800 = load ptr, ptr %a1 - %t801 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t800, %S.gen.Val %t801) - %t802 = load ptr, ptr %a1 - %t803 = load { ptr, i64, i64 }, ptr %a647 - %t804 = call { ptr, i64, i64 } @finch.gen.load(ptr %t802, { ptr, i64, i64 } { ptr @.str.5304, i64 17, i64 0 }, { ptr, i64, i64 } %t803) - %t805 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t804, 0 - %t806 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5305, i64 3, i64 0 }) - %t807 = insertvalue %S.gen.Val %t805, %S.ast.Type %t806, 1 - %t808 = insertvalue %S.gen.Val %t807, i1 true, 2 - call void @finch_str_drop(ptr %a750) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t808 -endif8239: - %t809 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t809, ptr %a810 - store { ptr, i64, i64 } { ptr @.str.5306, i64 10, i64 0 }, ptr %a811 - %t812 = call i32 @finch_str_eq(ptr %a810, ptr %a811) - %t813 = icmp ne i32 %t812, 0 - br i1 %t813, label %then8258, label %endif8260 -then8258: - %t814 = load ptr, ptr %a1 - %t815 = load %S.ast.Node, ptr %a2 - %t816 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t814, %S.ast.Node %t815, i64 0, i64 2, { ptr, i64, i64 } %t816) - %t817 = load ptr, ptr %a1 - %t818 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t819 = load { ptr, i64, i64 }, ptr %t818 - %t820 = extractvalue { ptr, i64, i64 } %t819, 1 - %t821 = icmp uge i64 0, %t820 - br i1 %t821, label %range8261, label %inrange8262 -range8261: - call void @finch_panic_index(ptr @.str.5307, i64 4943, i64 0, i64 %t820) - unreachable -inrange8262: - %t822 = extractvalue { ptr, i64, i64 } %t819, 0 - %t823 = getelementptr inbounds %S.ast.Node, ptr %t822, i64 0 - %t824 = load %S.ast.Node, ptr %t823 - %t825 = call %S.gen.Val @finch.gen.strArg(ptr %t817, %S.ast.Node %t824, { ptr, i64, i64 } { ptr @.str.5308, i64 13, i64 0 }) - store %S.gen.Val %t825, ptr %a826 - %t827 = load ptr, ptr %a1 - %t828 = icmp eq ptr %t827, null - br i1 %t828, label %panic8263, label %ok8264 -panic8263: - call void @finch_panic(ptr @.str.5309, i64 4944, ptr @.str.5310) - unreachable -ok8264: - %t829 = getelementptr inbounds %S.gen.Gen, ptr %t827, i32 0, i32 11 - %t830 = getelementptr inbounds { ptr, i64, i64 }, ptr %t829, i32 0, i32 1 - %t831 = load i64, ptr %t830 - store i64 %t831, ptr %a832 - %t833 = load ptr, ptr %a1 - %t834 = load %S.gen.Val, ptr %a826 - call void @finch.gen.hold(ptr %t833, %S.gen.Val %t834) - %t835 = load ptr, ptr %a1 - %t836 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t837 = load { ptr, i64, i64 }, ptr %t836 - %t838 = extractvalue { ptr, i64, i64 } %t837, 1 - %t839 = icmp uge i64 1, %t838 - br i1 %t839, label %range8265, label %inrange8266 -range8265: - call void @finch_panic_index(ptr @.str.5311, i64 4946, i64 1, i64 %t838) - unreachable -inrange8266: - %t840 = extractvalue { ptr, i64, i64 } %t837, 0 - %t841 = getelementptr inbounds %S.ast.Node, ptr %t840, i64 1 - %t842 = load %S.ast.Node, ptr %t841 - %t843 = call %S.gen.Val @finch.gen.strArg(ptr %t835, %S.ast.Node %t842, { ptr, i64, i64 } { ptr @.str.5312, i64 8, i64 0 }) - store %S.gen.Val %t843, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load i64, ptr %a832 - call void @finch.gen.heldEnd(ptr %t845, i64 %t846) - %t847 = load ptr, ptr %a1 - %t848 = load %S.gen.Val, ptr %a826 - %t849 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t847, %S.gen.Val %t848) - store { ptr, i64, i64 } %t849, ptr %a850 - %t851 = load ptr, ptr %a1 - %t852 = load %S.gen.Val, ptr %a844 - %t853 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t851, %S.gen.Val %t852) - store { ptr, i64, i64 } %t853, ptr %a854 - %t855 = load ptr, ptr %a1 - %t856 = icmp eq ptr %t855, null - br i1 %t856, label %panic8267, label %ok8268 -panic8267: - call void @finch_panic(ptr @.str.5313, i64 4950, ptr @.str.5314) - unreachable -ok8268: - %t857 = getelementptr inbounds %S.gen.Gen, ptr %t855, i32 0, i32 41 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = load %S.ast.Node, ptr %a2 - %t860 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t859) - store { ptr, i64, i64 } %t858, ptr %a861 - store { ptr, i64, i64 } %t860, ptr %a862 - %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) - %t864 = icmp ne i32 %t863, 0 - store { ptr, i64, i64 } %t860, ptr %a865 - call void @finch_str_drop(ptr %a865) - br i1 %t864, label %then8269, label %endif8271 -then8269: - %t866 = load ptr, ptr %a1 - %t867 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t866, { ptr, i64, i64 } { ptr @.str.5315, i64 17, i64 0 }) - store { ptr, i64, i64 } %t867, ptr %a868 - %t869 = load ptr, ptr %a1 - %t870 = load { ptr, i64, i64 }, ptr %a868 - call void @finch.gen.store(ptr %t869, { ptr, i64, i64 } { ptr @.str.5316, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5317, i64 15, i64 0 }, { ptr, i64, i64 } %t870) - %t871 = load ptr, ptr %a1 - %t872 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5318, i64 35, i64 0 }, ptr %a874 - store { ptr, i64, i64 } %t872, ptr %a875 - call void @finch_str_concat(ptr %a873, ptr %a874, ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a873 - store { ptr, i64, i64 } %t876, ptr %a878 - store { ptr, i64, i64 } { ptr @.str.5319, i64 6, i64 0 }, ptr %a879 - call void @finch_str_concat(ptr %a877, ptr %a878, ptr %a879) - store { ptr, i64, i64 } %t876, ptr %a880 - call void @finch_str_drop(ptr %a880) - %t881 = load { ptr, i64, i64 }, ptr %a877 - %t882 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t881, ptr %a884 - store { ptr, i64, i64 } %t882, ptr %a885 - call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) - store { ptr, i64, i64 } %t881, ptr %a886 - call void @finch_str_drop(ptr %a886) - %t887 = load { ptr, i64, i64 }, ptr %a883 - store { ptr, i64, i64 } %t887, ptr %a889 - store { ptr, i64, i64 } { ptr @.str.5320, i64 6, i64 0 }, ptr %a890 - call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890) - store { ptr, i64, i64 } %t887, ptr %a891 - call void @finch_str_drop(ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a888 - %t893 = load { ptr, i64, i64 }, ptr %a868 - store { ptr, i64, i64 } %t892, ptr %a895 - store { ptr, i64, i64 } %t893, ptr %a896 - call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) - store { ptr, i64, i64 } %t892, ptr %a897 - call void @finch_str_drop(ptr %a897) - %t898 = load { ptr, i64, i64 }, ptr %a894 - store { ptr, i64, i64 } %t898, ptr %a900 - store { ptr, i64, i64 } { ptr @.str.5321, i64 1, i64 0 }, ptr %a901 - call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) - store { ptr, i64, i64 } %t898, ptr %a902 - call void @finch_str_drop(ptr %a902) - %t903 = load { ptr, i64, i64 }, ptr %a899 - %t904 = call { ptr, i64, i64 } @finch.gen.op(ptr %t871, { ptr, i64, i64 } %t903) - store { ptr, i64, i64 } %t903, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t904, ptr %a906 - %t907 = load ptr, ptr %a1 - %t908 = load { ptr, i64, i64 }, ptr %a906 - store { ptr, i64, i64 } { ptr @.str.5322, i64 12, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t908, ptr %a911 - call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911) - %t912 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } %t912, ptr %a914 - store { ptr, i64, i64 } { ptr @.str.5323, i64 3, i64 0 }, ptr %a915 - call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) - store { ptr, i64, i64 } %t912, ptr %a916 - call void @finch_str_drop(ptr %a916) - %t917 = load { ptr, i64, i64 }, ptr %a913 - %t918 = call { ptr, i64, i64 } @finch.gen.op(ptr %t907, { ptr, i64, i64 } %t917) - store { ptr, i64, i64 } %t917, ptr %a919 - call void @finch_str_drop(ptr %a919) - %t920 = load ptr, ptr %a1 - %t921 = icmp eq ptr %t920, null - br i1 %t921, label %panic8272, label %ok8273 -panic8272: - call void @finch_panic(ptr @.str.5324, i64 4954, ptr @.str.5325) - unreachable -ok8273: - %t922 = getelementptr inbounds %S.gen.Gen, ptr %t920, i32 0, i32 42 - %t923 = load { ptr, i64, i64 }, ptr %t922 - store { ptr, i64, i64 } %t918, ptr %t922 - store { ptr, i64, i64 } %t923, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load ptr, ptr %a1 - %t926 = load { ptr, i64, i64 }, ptr %a868 - %t927 = call { ptr, i64, i64 } @finch.gen.load(ptr %t925, { ptr, i64, i64 } { ptr @.str.5326, i64 17, i64 0 }, { ptr, i64, i64 } %t926) - %t928 = load ptr, ptr %a1 - %t929 = icmp eq ptr %t928, null - br i1 %t929, label %panic8274, label %ok8275 -panic8274: - call void @finch_panic(ptr @.str.5327, i64 4955, ptr @.str.5328) - unreachable -ok8275: - %t930 = getelementptr inbounds %S.gen.Gen, ptr %t928, i32 0, i32 43 - %t931 = load { ptr, i64, i64 }, ptr %t930 - store { ptr, i64, i64 } %t927, ptr %t930 - store { ptr, i64, i64 } %t931, ptr %a932 - call void @finch_str_drop(ptr %a932) - %t933 = load ptr, ptr %a1 - %t934 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t933, %S.gen.Val %t934) - %t935 = load ptr, ptr %a1 - %t936 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t935, %S.gen.Val %t936) - %t937 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5329, i64 4, i64 0 }) - %t938 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t937, 1 - call void @finch_str_drop(ptr %a906) - call void @finch_str_drop(ptr %a868) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t938 -endif8271: - %t939 = load ptr, ptr %a1 - %t940 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5330, i64 31, i64 0 }, ptr %a942 - store { ptr, i64, i64 } %t940, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a941 - store { ptr, i64, i64 } %t944, ptr %a946 - store { ptr, i64, i64 } { ptr @.str.5331, i64 6, i64 0 }, ptr %a947 - call void @finch_str_concat(ptr %a945, ptr %a946, ptr %a947) - store { ptr, i64, i64 } %t944, ptr %a948 - call void @finch_str_drop(ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a945 - %t950 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t949, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t949, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - store { ptr, i64, i64 } %t955, ptr %a957 - store { ptr, i64, i64 } { ptr @.str.5332, i64 1, i64 0 }, ptr %a958 - call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) - store { ptr, i64, i64 } %t955, ptr %a959 - call void @finch_str_drop(ptr %a959) - %t960 = load { ptr, i64, i64 }, ptr %a956 - %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t939, { ptr, i64, i64 } %t960) - store { ptr, i64, i64 } %t960, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t961, ptr %a963 - %t964 = load ptr, ptr %a1 - %t965 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t964, %S.gen.Val %t965) - %t966 = load ptr, ptr %a1 - %t967 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t966, %S.gen.Val %t967) - %t968 = load ptr, ptr %a1 - %t969 = load { ptr, i64, i64 }, ptr %a963 - store { ptr, i64, i64 } { ptr @.str.5333, i64 12, i64 0 }, ptr %a971 - store { ptr, i64, i64 } %t969, ptr %a972 - call void @finch_str_concat(ptr %a970, ptr %a971, ptr %a972) - %t973 = load { ptr, i64, i64 }, ptr %a970 - store { ptr, i64, i64 } %t973, ptr %a975 - store { ptr, i64, i64 } { ptr @.str.5334, i64 3, i64 0 }, ptr %a976 - call void @finch_str_concat(ptr %a974, ptr %a975, ptr %a976) - store { ptr, i64, i64 } %t973, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a974 - %t979 = call { ptr, i64, i64 } @finch.gen.op(ptr %t968, { ptr, i64, i64 } %t978) - store { ptr, i64, i64 } %t978, ptr %a980 - call void @finch_str_drop(ptr %a980) - %t981 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t979, 0 - %t982 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5335, i64 4, i64 0 }) - %t983 = insertvalue %S.gen.Val %t981, %S.ast.Type %t982, 1 - call void @finch_str_drop(ptr %a963) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t983 -endif8260: - %t984 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t984, ptr %a985 - store { ptr, i64, i64 } { ptr @.str.5336, i64 11, i64 0 }, ptr %a986 - %t987 = call i32 @finch_str_eq(ptr %a985, ptr %a986) - %t988 = icmp ne i32 %t987, 0 - br i1 %t988, label %then8276, label %endif8278 -then8276: - %t989 = load ptr, ptr %a1 - %t990 = load %S.ast.Node, ptr %a2 - %t991 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t989, %S.ast.Node %t990, i64 0, i64 1, { ptr, i64, i64 } %t991) - %t992 = load ptr, ptr %a1 - %t993 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = extractvalue { ptr, i64, i64 } %t994, 1 - %t996 = icmp uge i64 0, %t995 - br i1 %t996, label %range8279, label %inrange8280 -range8279: - call void @finch_panic_index(ptr @.str.5337, i64 4967, i64 0, i64 %t995) - unreachable -inrange8280: - %t997 = extractvalue { ptr, i64, i64 } %t994, 0 - %t998 = getelementptr inbounds %S.ast.Node, ptr %t997, i64 0 - %t999 = load %S.ast.Node, ptr %t998 - %t1000 = call %S.gen.Val @finch.gen.strArg(ptr %t992, %S.ast.Node %t999, { ptr, i64, i64 } { ptr @.str.5338, i64 13, i64 0 }) - store %S.gen.Val %t1000, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1002) - store { ptr, i64, i64 } %t1003, ptr %a1004 - %t1005 = load ptr, ptr %a1 - %t1006 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5339, i64 30, i64 0 }, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - %t1010 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1010, ptr %a1012 - store { ptr, i64, i64 } { ptr @.str.5340, i64 6, i64 0 }, ptr %a1013 - call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013) - store { ptr, i64, i64 } %t1010, ptr %a1014 - call void @finch_str_drop(ptr %a1014) - %t1015 = load { ptr, i64, i64 }, ptr %a1011 - %t1016 = load ptr, ptr %a1 - %t1017 = load %S.gen.Val, ptr %a1001 - %t1018 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1016, %S.gen.Val %t1017) - store { ptr, i64, i64 } %t1015, ptr %a1020 - store { ptr, i64, i64 } %t1018, ptr %a1021 - call void @finch_str_concat(ptr %a1019, ptr %a1020, ptr %a1021) - store { ptr, i64, i64 } %t1015, ptr %a1022 - call void @finch_str_drop(ptr %a1022) - store { ptr, i64, i64 } %t1018, ptr %a1023 - call void @finch_str_drop(ptr %a1023) - %t1024 = load { ptr, i64, i64 }, ptr %a1019 - store { ptr, i64, i64 } %t1024, ptr %a1026 - store { ptr, i64, i64 } { ptr @.str.5341, i64 1, i64 0 }, ptr %a1027 - call void @finch_str_concat(ptr %a1025, ptr %a1026, ptr %a1027) - store { ptr, i64, i64 } %t1024, ptr %a1028 - call void @finch_str_drop(ptr %a1028) - %t1029 = load { ptr, i64, i64 }, ptr %a1025 - call void @finch.gen.emit(ptr %t1005, { ptr, i64, i64 } %t1029) - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch_str_drop(ptr %a1030) - %t1031 = load ptr, ptr %a1 - %t1032 = icmp eq ptr %t1031, null - br i1 %t1032, label %panic8281, label %ok8282 -panic8281: - call void @finch_panic(ptr @.str.5342, i64 4970, ptr @.str.5343) - unreachable -ok8282: - %t1033 = getelementptr inbounds %S.gen.Gen, ptr %t1031, i32 0, i32 41 - %t1034 = load { ptr, i64, i64 }, ptr %t1033 - %t1035 = load %S.ast.Node, ptr %a2 - %t1036 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t1035) - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1036, ptr %a1038 - %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) - %t1040 = icmp ne i32 %t1039, 0 - store { ptr, i64, i64 } %t1036, ptr %a1041 - call void @finch_str_drop(ptr %a1041) - br i1 %t1040, label %then8283, label %endif8285 -then8283: - %t1042 = load ptr, ptr %a1 - %t1043 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1042, { ptr, i64, i64 } { ptr @.str.5344, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1043, ptr %a1044 - %t1045 = load ptr, ptr %a1 - %t1046 = load { ptr, i64, i64 }, ptr %a1044 - call void @finch.gen.store(ptr %t1045, { ptr, i64, i64 } { ptr @.str.5345, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5346, i64 15, i64 0 }, { ptr, i64, i64 } %t1046) - %t1047 = load ptr, ptr %a1 - %t1048 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5347, i64 36, i64 0 }, ptr %a1050 - store { ptr, i64, i64 } %t1048, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1049 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5348, i64 6, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = load { ptr, i64, i64 }, ptr %a1044 - store { ptr, i64, i64 } %t1057, ptr %a1060 - store { ptr, i64, i64 } %t1058, ptr %a1061 - call void @finch_str_concat(ptr %a1059, ptr %a1060, ptr %a1061) - store { ptr, i64, i64 } %t1057, ptr %a1062 - call void @finch_str_drop(ptr %a1062) - %t1063 = load { ptr, i64, i64 }, ptr %a1059 - store { ptr, i64, i64 } %t1063, ptr %a1065 - store { ptr, i64, i64 } { ptr @.str.5349, i64 1, i64 0 }, ptr %a1066 - call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) - store { ptr, i64, i64 } %t1063, ptr %a1067 - call void @finch_str_drop(ptr %a1067) - %t1068 = load { ptr, i64, i64 }, ptr %a1064 - %t1069 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1068) - store { ptr, i64, i64 } %t1068, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - store { ptr, i64, i64 } %t1069, ptr %a1071 - %t1072 = load ptr, ptr %a1 - %t1073 = load { ptr, i64, i64 }, ptr %a1071 - store { ptr, i64, i64 } { ptr @.str.5350, i64 12, i64 0 }, ptr %a1075 - store { ptr, i64, i64 } %t1073, ptr %a1076 - call void @finch_str_concat(ptr %a1074, ptr %a1075, ptr %a1076) - %t1077 = load { ptr, i64, i64 }, ptr %a1074 - store { ptr, i64, i64 } %t1077, ptr %a1079 - store { ptr, i64, i64 } { ptr @.str.5351, i64 3, i64 0 }, ptr %a1080 - call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) - store { ptr, i64, i64 } %t1077, ptr %a1081 - call void @finch_str_drop(ptr %a1081) - %t1082 = load { ptr, i64, i64 }, ptr %a1078 - %t1083 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1072, { ptr, i64, i64 } %t1082) - store { ptr, i64, i64 } %t1082, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - %t1085 = load ptr, ptr %a1 - %t1086 = icmp eq ptr %t1085, null - br i1 %t1086, label %panic8286, label %ok8287 -panic8286: - call void @finch_panic(ptr @.str.5352, i64 4974, ptr @.str.5353) - unreachable -ok8287: - %t1087 = getelementptr inbounds %S.gen.Gen, ptr %t1085, i32 0, i32 42 - %t1088 = load { ptr, i64, i64 }, ptr %t1087 - store { ptr, i64, i64 } %t1083, ptr %t1087 - store { ptr, i64, i64 } %t1088, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load ptr, ptr %a1 - %t1091 = load { ptr, i64, i64 }, ptr %a1044 - %t1092 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1090, { ptr, i64, i64 } { ptr @.str.5354, i64 17, i64 0 }, { ptr, i64, i64 } %t1091) - %t1093 = load ptr, ptr %a1 - %t1094 = icmp eq ptr %t1093, null - br i1 %t1094, label %panic8288, label %ok8289 -panic8288: - call void @finch_panic(ptr @.str.5355, i64 4975, ptr @.str.5356) - unreachable -ok8289: - %t1095 = getelementptr inbounds %S.gen.Gen, ptr %t1093, i32 0, i32 43 - %t1096 = load { ptr, i64, i64 }, ptr %t1095 - store { ptr, i64, i64 } %t1092, ptr %t1095 - store { ptr, i64, i64 } %t1096, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load ptr, ptr %a1 - %t1099 = load { ptr, i64, i64 }, ptr %a1004 - %t1100 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5357, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1098, { ptr, i64, i64 } %t1099, %S.ast.Type %t1100) - store %S.ast.Type %t1100, ptr %a1101 - call void @finch.drop.S_ast_Type(ptr %a1101) - %t1102 = load ptr, ptr %a1 - %t1103 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1102, %S.gen.Val %t1103) - %t1104 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5358, i64 4, i64 0 }) - %t1105 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1104, 1 - call void @finch_str_drop(ptr %a1071) - call void @finch_str_drop(ptr %a1044) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1105 -endif8285: - %t1106 = load ptr, ptr %a1 - %t1107 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5359, i64 32, i64 0 }, ptr %a1109 - store { ptr, i64, i64 } %t1107, ptr %a1110 - call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110) - %t1111 = load { ptr, i64, i64 }, ptr %a1108 - store { ptr, i64, i64 } %t1111, ptr %a1113 - store { ptr, i64, i64 } { ptr @.str.5360, i64 1, i64 0 }, ptr %a1114 - call void @finch_str_concat(ptr %a1112, ptr %a1113, ptr %a1114) - store { ptr, i64, i64 } %t1111, ptr %a1115 - call void @finch_str_drop(ptr %a1115) - %t1116 = load { ptr, i64, i64 }, ptr %a1112 - %t1117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1106, { ptr, i64, i64 } %t1116) - store { ptr, i64, i64 } %t1116, ptr %a1118 - call void @finch_str_drop(ptr %a1118) - store { ptr, i64, i64 } %t1117, ptr %a1119 - %t1120 = load ptr, ptr %a1 - %t1121 = load { ptr, i64, i64 }, ptr %a1004 - %t1122 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5361, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1120, { ptr, i64, i64 } %t1121, %S.ast.Type %t1122) - store %S.ast.Type %t1122, ptr %a1123 - call void @finch.drop.S_ast_Type(ptr %a1123) - %t1124 = load ptr, ptr %a1 - %t1125 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1124, %S.gen.Val %t1125) - %t1126 = load ptr, ptr %a1 - %t1127 = load { ptr, i64, i64 }, ptr %a1119 - store { ptr, i64, i64 } { ptr @.str.5362, i64 12, i64 0 }, ptr %a1129 - store { ptr, i64, i64 } %t1127, ptr %a1130 - call void @finch_str_concat(ptr %a1128, ptr %a1129, ptr %a1130) - %t1131 = load { ptr, i64, i64 }, ptr %a1128 - store { ptr, i64, i64 } %t1131, ptr %a1133 - store { ptr, i64, i64 } { ptr @.str.5363, i64 3, i64 0 }, ptr %a1134 - call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134) - store { ptr, i64, i64 } %t1131, ptr %a1135 - call void @finch_str_drop(ptr %a1135) - %t1136 = load { ptr, i64, i64 }, ptr %a1132 - %t1137 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1136) - store { ptr, i64, i64 } %t1136, ptr %a1138 - call void @finch_str_drop(ptr %a1138) - %t1139 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1137, 0 - %t1140 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5364, i64 4, i64 0 }) - %t1141 = insertvalue %S.gen.Val %t1139, %S.ast.Type %t1140, 1 - call void @finch_str_drop(ptr %a1119) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1141 -endif8278: - %t1142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1142, ptr %a1143 - store { ptr, i64, i64 } { ptr @.str.5365, i64 5, i64 0 }, ptr %a1144 - %t1145 = call i32 @finch_str_eq(ptr %a1143, ptr %a1144) - %t1146 = icmp ne i32 %t1145, 0 - br i1 %t1146, label %then8290, label %endif8292 -then8290: - %t1147 = load ptr, ptr %a1 - %t1148 = load %S.ast.Node, ptr %a2 - %t1149 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1147, %S.ast.Node %t1148, i64 0, i64 1, { ptr, i64, i64 } %t1149) - %t1150 = load ptr, ptr %a1 - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 0, %t1153 - br i1 %t1154, label %range8293, label %inrange8294 -range8293: - call void @finch_panic_index(ptr @.str.5366, i64 4987, i64 0, i64 %t1153) - unreachable -inrange8294: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 0 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.strArg(ptr %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5367, i64 11, i64 0 }) - store %S.gen.Val %t1158, ptr %a1159 - %t1160 = load ptr, ptr %a1 - %t1161 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1160) - store { ptr, i64, i64 } %t1161, ptr %a1162 - %t1163 = load ptr, ptr %a1 - %t1164 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5368, i64 30, i64 0 }, ptr %a1166 - store { ptr, i64, i64 } %t1164, ptr %a1167 - call void @finch_str_concat(ptr %a1165, ptr %a1166, ptr %a1167) - %t1168 = load { ptr, i64, i64 }, ptr %a1165 - store { ptr, i64, i64 } %t1168, ptr %a1170 - store { ptr, i64, i64 } { ptr @.str.5369, i64 6, i64 0 }, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1168, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - %t1174 = load ptr, ptr %a1 - %t1175 = load %S.gen.Val, ptr %a1159 - %t1176 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1174, %S.gen.Val %t1175) - store { ptr, i64, i64 } %t1173, ptr %a1178 - store { ptr, i64, i64 } %t1176, ptr %a1179 - call void @finch_str_concat(ptr %a1177, ptr %a1178, ptr %a1179) - store { ptr, i64, i64 } %t1173, ptr %a1180 - call void @finch_str_drop(ptr %a1180) - store { ptr, i64, i64 } %t1176, ptr %a1181 - call void @finch_str_drop(ptr %a1181) - %t1182 = load { ptr, i64, i64 }, ptr %a1177 - store { ptr, i64, i64 } %t1182, ptr %a1184 - store { ptr, i64, i64 } { ptr @.str.5370, i64 1, i64 0 }, ptr %a1185 - call void @finch_str_concat(ptr %a1183, ptr %a1184, ptr %a1185) - store { ptr, i64, i64 } %t1182, ptr %a1186 - call void @finch_str_drop(ptr %a1186) - %t1187 = load { ptr, i64, i64 }, ptr %a1183 - call void @finch.gen.emit(ptr %t1163, { ptr, i64, i64 } %t1187) - store { ptr, i64, i64 } %t1187, ptr %a1188 - call void @finch_str_drop(ptr %a1188) - %t1189 = load ptr, ptr %a1 - %t1190 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5371, i64 26, i64 0 }, ptr %a1192 - store { ptr, i64, i64 } %t1190, ptr %a1193 - call void @finch_str_concat(ptr %a1191, ptr %a1192, ptr %a1193) - %t1194 = load { ptr, i64, i64 }, ptr %a1191 - store { ptr, i64, i64 } %t1194, ptr %a1196 - store { ptr, i64, i64 } { ptr @.str.5372, i64 1, i64 0 }, ptr %a1197 - call void @finch_str_concat(ptr %a1195, ptr %a1196, ptr %a1197) - store { ptr, i64, i64 } %t1194, ptr %a1198 - call void @finch_str_drop(ptr %a1198) - %t1199 = load { ptr, i64, i64 }, ptr %a1195 - %t1200 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1189, { ptr, i64, i64 } %t1199) - store { ptr, i64, i64 } %t1199, ptr %a1201 - call void @finch_str_drop(ptr %a1201) - store { ptr, i64, i64 } %t1200, ptr %a1202 - %t1203 = load ptr, ptr %a1 - %t1204 = load { ptr, i64, i64 }, ptr %a1162 - %t1205 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5373, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1203, { ptr, i64, i64 } %t1204, %S.ast.Type %t1205) - store %S.ast.Type %t1205, ptr %a1206 - call void @finch.drop.S_ast_Type(ptr %a1206) - %t1207 = load ptr, ptr %a1 - %t1208 = load %S.gen.Val, ptr %a1159 - call void @finch.gen.release(ptr %t1207, %S.gen.Val %t1208) - %t1209 = load { ptr, i64, i64 }, ptr %a1202 - store { ptr, i64, i64 } %t1209, ptr %a1210 - call void @finch_str_copy(ptr %a1211, ptr %a1210) - %t1212 = load { ptr, i64, i64 }, ptr %a1211 - %t1213 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1212, 0 - %t1214 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5374, i64 3, i64 0 }) - %t1215 = insertvalue %S.gen.Val %t1213, %S.ast.Type %t1214, 1 - call void @finch_str_drop(ptr %a1202) - call void @finch_str_drop(ptr %a1162) - call void @finch.drop.S_gen_Val(ptr %a1159) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1215 -endif8292: - %t1216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1216, ptr %a1217 - store { ptr, i64, i64 } { ptr @.str.5375, i64 4, i64 0 }, ptr %a1218 - %t1219 = call i32 @finch_str_eq(ptr %a1217, ptr %a1218) - %t1220 = icmp ne i32 %t1219, 0 - br i1 %t1220, label %then8295, label %endif8297 -then8295: - %t1221 = load ptr, ptr %a1 - %t1222 = load %S.ast.Node, ptr %a2 - %t1223 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1221, %S.ast.Node %t1222, i64 0, i64 1, { ptr, i64, i64 } %t1223) - %t1224 = load ptr, ptr %a1 - %t1225 = load ptr, ptr %a1 - %t1226 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1227 = load { ptr, i64, i64 }, ptr %t1226 - %t1228 = extractvalue { ptr, i64, i64 } %t1227, 1 - %t1229 = icmp uge i64 0, %t1228 - br i1 %t1229, label %range8298, label %inrange8299 -range8298: - call void @finch_panic_index(ptr @.str.5376, i64 4997, i64 0, i64 %t1228) - unreachable -inrange8299: - %t1230 = extractvalue { ptr, i64, i64 } %t1227, 0 - %t1231 = getelementptr inbounds %S.ast.Node, ptr %t1230, i64 0 - %t1232 = load %S.ast.Node, ptr %t1231 - %t1233 = call %S.gen.Val @finch.gen.expr(ptr %t1225, %S.ast.Node %t1232) - %t1234 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5377, i64 3, i64 0 }) - %t1235 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1236 = load { ptr, i64, i64 }, ptr %t1235 - %t1237 = extractvalue { ptr, i64, i64 } %t1236, 1 - %t1238 = icmp uge i64 0, %t1237 - br i1 %t1238, label %range8300, label %inrange8301 -range8300: - call void @finch_panic_index(ptr @.str.5378, i64 4997, i64 0, i64 %t1237) - unreachable -inrange8301: - %t1239 = extractvalue { ptr, i64, i64 } %t1236, 0 - %t1240 = getelementptr inbounds %S.ast.Node, ptr %t1239, i64 0 - %t1241 = load %S.ast.Node, ptr %t1240 - %t1242 = call %S.gen.Val @finch.gen.coerce(ptr %t1224, %S.gen.Val %t1233, %S.ast.Type %t1234, %S.ast.Node %t1241, { ptr, i64, i64 } { ptr @.str.5379, i64 13, i64 0 }) - store %S.gen.Val %t1233, ptr %a1243 - call void @finch.drop.S_gen_Val(ptr %a1243) - store %S.ast.Type %t1234, ptr %a1244 - call void @finch.drop.S_ast_Type(ptr %a1244) - store %S.gen.Val %t1242, ptr %a1245 - %t1246 = load ptr, ptr %a1 - %t1247 = getelementptr inbounds %S.gen.Val, ptr %a1245, i32 0, i32 0 - %t1248 = load { ptr, i64, i64 }, ptr %t1247 - store { ptr, i64, i64 } { ptr @.str.5380, i64 10, i64 0 }, ptr %a1250 - store { ptr, i64, i64 } %t1248, ptr %a1251 - call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251) - %t1252 = load { ptr, i64, i64 }, ptr %a1249 - store { ptr, i64, i64 } %t1252, ptr %a1254 - store { ptr, i64, i64 } { ptr @.str.5381, i64 7, i64 0 }, ptr %a1255 - call void @finch_str_concat(ptr %a1253, ptr %a1254, ptr %a1255) - store { ptr, i64, i64 } %t1252, ptr %a1256 - call void @finch_str_drop(ptr %a1256) - %t1257 = load { ptr, i64, i64 }, ptr %a1253 - %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1246, { ptr, i64, i64 } %t1257) - store { ptr, i64, i64 } %t1257, ptr %a1259 - call void @finch_str_drop(ptr %a1259) - store { ptr, i64, i64 } %t1258, ptr %a1260 - %t1261 = load ptr, ptr %a1 - %t1262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1261, { ptr, i64, i64 } { ptr @.str.5382, i64 26, i64 0 }) - store { ptr, i64, i64 } %t1262, ptr %a1263 - %t1264 = load ptr, ptr %a1 - %t1265 = load { ptr, i64, i64 }, ptr %a1260 - store { ptr, i64, i64 } { ptr @.str.5383, i64 20, i64 0 }, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - %t1269 = load { ptr, i64, i64 }, ptr %a1266 - store { ptr, i64, i64 } %t1269, ptr %a1271 - store { ptr, i64, i64 } { ptr @.str.5384, i64 1, i64 0 }, ptr %a1272 - call void @finch_str_concat(ptr %a1270, ptr %a1271, ptr %a1272) - store { ptr, i64, i64 } %t1269, ptr %a1273 - call void @finch_str_drop(ptr %a1273) - %t1274 = load { ptr, i64, i64 }, ptr %a1270 - call void @finch.gen.emit(ptr %t1264, { ptr, i64, i64 } %t1274) - store { ptr, i64, i64 } %t1274, ptr %a1275 - call void @finch_str_drop(ptr %a1275) - %t1276 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5385, i64 4, i64 0 }) - %t1277 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1276, 1 - call void @finch_str_drop(ptr %a1263) - call void @finch_str_drop(ptr %a1260) - call void @finch.drop.S_gen_Val(ptr %a1245) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1277 -endif8297: - %t1278 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1278, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5386, i64 5, i64 0 }, ptr %a1280 - %t1281 = call i32 @finch_str_eq(ptr %a1279, ptr %a1280) - %t1282 = icmp ne i32 %t1281, 0 - br i1 %t1282, label %then8302, label %endif8304 -then8302: - %t1283 = load ptr, ptr %a1 - %t1284 = call %S.gen.Val @finch.gen.strConst(ptr %t1283, { ptr, i64, i64 } { ptr @.str.5387, i64 0, i64 0 }) - store %S.gen.Val %t1284, ptr %a1285 - %t1286 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1286, i32 0, i32 1 - %t1288 = load i64, ptr %t1287 - %t1289 = icmp sgt i64 %t1288, 0 - br i1 %t1289, label %then8305, label %endif8307 -then8305: - %t1290 = load ptr, ptr %a1 - %t1291 = load %S.ast.Node, ptr %a2 - %t1292 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1290, %S.ast.Node %t1291, i64 0, i64 1, { ptr, i64, i64 } %t1292) - %t1293 = load ptr, ptr %a1 - %t1294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1295 = load { ptr, i64, i64 }, ptr %t1294 - %t1296 = extractvalue { ptr, i64, i64 } %t1295, 1 - %t1297 = icmp uge i64 0, %t1296 - br i1 %t1297, label %range8308, label %inrange8309 -range8308: - call void @finch_panic_index(ptr @.str.5388, i64 5007, i64 0, i64 %t1296) - unreachable -inrange8309: - %t1298 = extractvalue { ptr, i64, i64 } %t1295, 0 - %t1299 = getelementptr inbounds %S.ast.Node, ptr %t1298, i64 0 - %t1300 = load %S.ast.Node, ptr %t1299 - %t1301 = call %S.gen.Val @finch.gen.strArg(ptr %t1293, %S.ast.Node %t1300, { ptr, i64, i64 } { ptr @.str.5389, i64 12, i64 0 }) - %t1302 = load %S.gen.Val, ptr %a1285 - store %S.gen.Val %t1301, ptr %a1285 - store %S.gen.Val %t1302, ptr %a1303 - call void @finch.drop.S_gen_Val(ptr %a1303) - br label %endif8307 -endif8307: - %t1304 = load ptr, ptr %a1 - %t1305 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1304) - store { ptr, i64, i64 } %t1305, ptr %a1306 - %t1307 = load ptr, ptr %a1 - %t1308 = load { ptr, i64, i64 }, ptr %a1306 - store { ptr, i64, i64 } { ptr @.str.5390, i64 27, i64 0 }, ptr %a1310 - store { ptr, i64, i64 } %t1308, ptr %a1311 - call void @finch_str_concat(ptr %a1309, ptr %a1310, ptr %a1311) - %t1312 = load { ptr, i64, i64 }, ptr %a1309 - store { ptr, i64, i64 } %t1312, ptr %a1314 - store { ptr, i64, i64 } { ptr @.str.5391, i64 6, i64 0 }, ptr %a1315 - call void @finch_str_concat(ptr %a1313, ptr %a1314, ptr %a1315) - store { ptr, i64, i64 } %t1312, ptr %a1316 - call void @finch_str_drop(ptr %a1316) - %t1317 = load { ptr, i64, i64 }, ptr %a1313 - %t1318 = load ptr, ptr %a1 - %t1319 = load %S.gen.Val, ptr %a1285 - %t1320 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1318, %S.gen.Val %t1319) - store { ptr, i64, i64 } %t1317, ptr %a1322 - store { ptr, i64, i64 } %t1320, ptr %a1323 - call void @finch_str_concat(ptr %a1321, ptr %a1322, ptr %a1323) - store { ptr, i64, i64 } %t1317, ptr %a1324 - call void @finch_str_drop(ptr %a1324) - store { ptr, i64, i64 } %t1320, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1321 - store { ptr, i64, i64 } %t1326, ptr %a1328 - store { ptr, i64, i64 } { ptr @.str.5392, i64 1, i64 0 }, ptr %a1329 - call void @finch_str_concat(ptr %a1327, ptr %a1328, ptr %a1329) - store { ptr, i64, i64 } %t1326, ptr %a1330 - call void @finch_str_drop(ptr %a1330) - %t1331 = load { ptr, i64, i64 }, ptr %a1327 - call void @finch.gen.emit(ptr %t1307, { ptr, i64, i64 } %t1331) - store { ptr, i64, i64 } %t1331, ptr %a1332 - call void @finch_str_drop(ptr %a1332) - %t1333 = load ptr, ptr %a1 - %t1334 = load %S.gen.Val, ptr %a1285 - call void @finch.gen.release(ptr %t1333, %S.gen.Val %t1334) - %t1335 = load ptr, ptr %a1 - %t1336 = load { ptr, i64, i64 }, ptr %a1306 - %t1337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1335, { ptr, i64, i64 } { ptr @.str.5393, i64 17, i64 0 }, { ptr, i64, i64 } %t1336) - %t1338 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1337, 0 - %t1339 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5394, i64 3, i64 0 }) - %t1340 = insertvalue %S.gen.Val %t1338, %S.ast.Type %t1339, 1 - %t1341 = insertvalue %S.gen.Val %t1340, i1 true, 2 - call void @finch_str_drop(ptr %a1306) - call void @finch.drop.S_gen_Val(ptr %a1285) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1341 -endif8304: - %t1342 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1342, ptr %a1343 - store { ptr, i64, i64 } { ptr @.str.5395, i64 3, i64 0 }, ptr %a1344 - %t1345 = call i32 @finch_str_eq(ptr %a1343, ptr %a1344) - %t1346 = icmp ne i32 %t1345, 0 - br i1 %t1346, label %then8310, label %endif8312 -then8310: - %t1347 = load ptr, ptr %a1 - %t1348 = load %S.ast.Node, ptr %a2 - %t1349 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1347, %S.ast.Node %t1348, i64 0, i64 1, { ptr, i64, i64 } %t1349) - %t1350 = load ptr, ptr %a1 - %t1351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1352 = load { ptr, i64, i64 }, ptr %t1351 - %t1353 = extractvalue { ptr, i64, i64 } %t1352, 1 - %t1354 = icmp uge i64 0, %t1353 - br i1 %t1354, label %range8313, label %inrange8314 -range8313: - call void @finch_panic_index(ptr @.str.5396, i64 5016, i64 0, i64 %t1353) - unreachable -inrange8314: - %t1355 = extractvalue { ptr, i64, i64 } %t1352, 0 - %t1356 = getelementptr inbounds %S.ast.Node, ptr %t1355, i64 0 - %t1357 = load %S.ast.Node, ptr %t1356 - %t1358 = call %S.gen.Val @finch.gen.expr(ptr %t1350, %S.ast.Node %t1357) - store %S.gen.Val %t1358, ptr %a1359 - %t1360 = load ptr, ptr %a1 - %t1361 = load ptr, ptr %a1 - %t1362 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1363 = load %S.ast.Type, ptr %t1362 - %t1364 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1361, %S.ast.Type %t1363) - store { ptr, i64, i64 } { ptr @.str.5397, i64 26, i64 0 }, ptr %a1366 - store { ptr, i64, i64 } %t1364, ptr %a1367 - call void @finch_str_concat(ptr %a1365, ptr %a1366, ptr %a1367) - store { ptr, i64, i64 } %t1364, ptr %a1368 - call void @finch_str_drop(ptr %a1368) - %t1369 = load { ptr, i64, i64 }, ptr %a1365 - store { ptr, i64, i64 } %t1369, ptr %a1371 - store { ptr, i64, i64 } { ptr @.str.5398, i64 1, i64 0 }, ptr %a1372 - call void @finch_str_concat(ptr %a1370, ptr %a1371, ptr %a1372) - store { ptr, i64, i64 } %t1369, ptr %a1373 - call void @finch_str_drop(ptr %a1373) - %t1374 = load { ptr, i64, i64 }, ptr %a1370 - %t1375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1360, { ptr, i64, i64 } %t1374) - store { ptr, i64, i64 } %t1374, ptr %a1376 - call void @finch_str_drop(ptr %a1376) - store { ptr, i64, i64 } %t1375, ptr %a1377 - %t1378 = load ptr, ptr %a1 - %t1379 = load ptr, ptr %a1 - %t1380 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1381 = load %S.ast.Type, ptr %t1380 - %t1382 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1379, %S.ast.Type %t1381) - %t1383 = load ptr, ptr %a1 - %t1384 = load %S.gen.Val, ptr %a1359 - %t1385 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1383, %S.gen.Val %t1384) - %t1386 = load { ptr, i64, i64 }, ptr %a1377 - call void @finch.gen.store(ptr %t1378, { ptr, i64, i64 } %t1382, { ptr, i64, i64 } %t1385, { ptr, i64, i64 } %t1386) - store { ptr, i64, i64 } %t1382, ptr %a1387 - call void @finch_str_drop(ptr %a1387) - store { ptr, i64, i64 } %t1385, ptr %a1388 - call void @finch_str_drop(ptr %a1388) - %t1389 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1389, ptr %a1390 - call void @finch_str_copy(ptr %a1391, ptr %a1390) - %t1392 = load { ptr, i64, i64 }, ptr %a1391 - %t1393 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1392, 0 - %t1394 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1395 = load %S.ast.Type, ptr %t1394 - %t1396 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1395) - %t1397 = insertvalue %S.gen.Val %t1393, %S.ast.Type %t1396, 1 - call void @finch_str_drop(ptr %a1377) - call void @finch.drop.S_gen_Val(ptr %a1359) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1397 -endif8312: - %t1398 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1398, ptr %a1399 - store { ptr, i64, i64 } { ptr @.str.5399, i64 4, i64 0 }, ptr %a1400 - %t1401 = call i32 @finch_str_eq(ptr %a1399, ptr %a1400) - %t1402 = icmp ne i32 %t1401, 0 - br i1 %t1402, label %then8315, label %endif8317 -then8315: - %t1403 = load ptr, ptr %a1 - %t1404 = load %S.ast.Node, ptr %a2 - %t1405 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1403, %S.ast.Node %t1404, i64 0, i64 1, { ptr, i64, i64 } %t1405) - %t1406 = load ptr, ptr %a1 - %t1407 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1408 = load { ptr, i64, i64 }, ptr %t1407 - %t1409 = extractvalue { ptr, i64, i64 } %t1408, 1 - %t1410 = icmp uge i64 0, %t1409 - br i1 %t1410, label %range8318, label %inrange8319 -range8318: - call void @finch_panic_index(ptr @.str.5400, i64 5023, i64 0, i64 %t1409) - unreachable -inrange8319: - %t1411 = extractvalue { ptr, i64, i64 } %t1408, 0 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %t1411, i64 0 - %t1413 = load %S.ast.Node, ptr %t1412 - %t1414 = call %S.gen.Val @finch.gen.expr(ptr %t1406, %S.ast.Node %t1413) - store %S.gen.Val %t1414, ptr %a1415 - %t1416 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1417 = getelementptr inbounds %S.ast.Type, ptr %t1416, i32 0, i32 0 - %t1418 = load { ptr, i64, i64 }, ptr %t1417 - store { ptr, i64, i64 } %t1418, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5401, i64 3, i64 0 }, ptr %a1420 - %t1421 = call i32 @finch_str_eq(ptr %a1419, ptr %a1420) - %t1422 = icmp eq i32 %t1421, 0 - br i1 %t1422, label %then8320, label %endif8322 -then8320: - %t1423 = load ptr, ptr %a1 - %t1424 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1425 = load { ptr, i64, i64 }, ptr %t1424 - %t1426 = extractvalue { ptr, i64, i64 } %t1425, 1 - %t1427 = icmp uge i64 0, %t1426 - br i1 %t1427, label %range8323, label %inrange8324 -range8323: - call void @finch_panic_index(ptr @.str.5402, i64 5025, i64 0, i64 %t1426) - unreachable -inrange8324: - %t1428 = extractvalue { ptr, i64, i64 } %t1425, 0 - %t1429 = getelementptr inbounds %S.ast.Node, ptr %t1428, i64 0 - %t1430 = load %S.ast.Node, ptr %t1429 - call void @finch.gen.fail(ptr %t1423, %S.ast.Node %t1430, { ptr, i64, i64 } { ptr @.str.5403, i64 119, i64 0 }) - br label %endif8322 -endif8322: - %t1431 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1432 = getelementptr inbounds %S.ast.Type, ptr %t1431, i32 0, i32 1 - %t1433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1432, i32 0, i32 1 - %t1434 = load i64, ptr %t1433 - %t1435 = icmp sgt i64 %t1434, 0 - br label %logic.from8325 -logic.from8325: - br i1 %t1435, label %logic.rhs8326, label %logic.end8327 -logic.rhs8326: - %t1436 = load ptr, ptr %a1 - %t1437 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.ast.Type, ptr %t1437, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - %t1440 = extractvalue { ptr, i64, i64 } %t1439, 1 - %t1441 = icmp uge i64 0, %t1440 - br i1 %t1441, label %range8328, label %inrange8329 -range8328: - call void @finch_panic_index(ptr @.str.5404, i64 5027, i64 0, i64 %t1440) - unreachable -inrange8329: - %t1442 = extractvalue { ptr, i64, i64 } %t1439, 0 - %t1443 = getelementptr inbounds %S.ast.Type, ptr %t1442, i64 0 - %t1444 = load %S.ast.Type, ptr %t1443 - %t1445 = call i1 @finch.gen.owning(ptr %t1436, %S.ast.Type %t1444) - br label %logic.rend8330 -logic.rend8330: - br label %logic.end8327 -logic.end8327: - %t1446 = phi i1 [ false, %logic.from8325 ], [ %t1445, %logic.rend8330 ] - br i1 %t1446, label %then8331, label %endif8333 -then8331: - %t1447 = load ptr, ptr %a1 - %t1448 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1447, { ptr, i64, i64 } { ptr @.str.5405, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1448, ptr %a1449 - %t1450 = load ptr, ptr %a1 - %t1451 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1450, { ptr, i64, i64 } { ptr @.str.5406, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1451, ptr %a1452 - %t1453 = load ptr, ptr %a1 - %t1454 = load ptr, ptr %a1 - %t1455 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1456 = load { ptr, i64, i64 }, ptr %t1455 - store { ptr, i64, i64 } { ptr @.str.5407, i64 12, i64 0 }, ptr %a1458 - store { ptr, i64, i64 } %t1456, ptr %a1459 - call void @finch_str_concat(ptr %a1457, ptr %a1458, ptr %a1459) - %t1460 = load { ptr, i64, i64 }, ptr %a1457 - store { ptr, i64, i64 } %t1460, ptr %a1462 - store { ptr, i64, i64 } { ptr @.str.5408, i64 6, i64 0 }, ptr %a1463 - call void @finch_str_concat(ptr %a1461, ptr %a1462, ptr %a1463) - store { ptr, i64, i64 } %t1460, ptr %a1464 - call void @finch_str_drop(ptr %a1464) - %t1465 = load { ptr, i64, i64 }, ptr %a1461 - %t1466 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1454, { ptr, i64, i64 } %t1465) - store { ptr, i64, i64 } %t1465, ptr %a1467 - call void @finch_str_drop(ptr %a1467) - %t1468 = load { ptr, i64, i64 }, ptr %a1452 - %t1469 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.condBr(ptr %t1453, { ptr, i64, i64 } %t1466, { ptr, i64, i64 } %t1468, { ptr, i64, i64 } %t1469) - store { ptr, i64, i64 } %t1466, ptr %a1470 - call void @finch_str_drop(ptr %a1470) - %t1471 = load ptr, ptr %a1 - %t1472 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.label(ptr %t1471, { ptr, i64, i64 } %t1472) - %t1473 = load ptr, ptr %a1 - %t1474 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1475 = load { ptr, i64, i64 }, ptr %t1474 - %t1476 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1477 = getelementptr inbounds %S.ast.Type, ptr %t1476, i32 0, i32 1 - %t1478 = load { ptr, i64, i64 }, ptr %t1477 - %t1479 = extractvalue { ptr, i64, i64 } %t1478, 1 - %t1480 = icmp uge i64 0, %t1479 - br i1 %t1480, label %range8334, label %inrange8335 -range8334: - call void @finch_panic_index(ptr @.str.5409, i64 5032, i64 0, i64 %t1479) - unreachable -inrange8335: - %t1481 = extractvalue { ptr, i64, i64 } %t1478, 0 - %t1482 = getelementptr inbounds %S.ast.Type, ptr %t1481, i64 0 - %t1483 = load %S.ast.Type, ptr %t1482 - call void @finch.gen.dropAt(ptr %t1473, { ptr, i64, i64 } %t1475, %S.ast.Type %t1483) - %t1484 = load ptr, ptr %a1 - %t1485 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.br(ptr %t1484, { ptr, i64, i64 } %t1485) - %t1486 = load ptr, ptr %a1 - %t1487 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.label(ptr %t1486, { ptr, i64, i64 } %t1487) - call void @finch_str_drop(ptr %a1452) - call void @finch_str_drop(ptr %a1449) - br label %endif8333 -endif8333: - %t1488 = load ptr, ptr %a1 - %t1489 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1490 = load { ptr, i64, i64 }, ptr %t1489 - store { ptr, i64, i64 } { ptr @.str.5410, i64 20, i64 0 }, ptr %a1492 - store { ptr, i64, i64 } %t1490, ptr %a1493 - call void @finch_str_concat(ptr %a1491, ptr %a1492, ptr %a1493) - %t1494 = load { ptr, i64, i64 }, ptr %a1491 - store { ptr, i64, i64 } %t1494, ptr %a1496 - store { ptr, i64, i64 } { ptr @.str.5411, i64 1, i64 0 }, ptr %a1497 - call void @finch_str_concat(ptr %a1495, ptr %a1496, ptr %a1497) - store { ptr, i64, i64 } %t1494, ptr %a1498 - call void @finch_str_drop(ptr %a1498) - %t1499 = load { ptr, i64, i64 }, ptr %a1495 - call void @finch.gen.emit(ptr %t1488, { ptr, i64, i64 } %t1499) - store { ptr, i64, i64 } %t1499, ptr %a1500 - call void @finch_str_drop(ptr %a1500) - %t1501 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5412, i64 4, i64 0 }) - %t1502 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1501, 1 - call void @finch.drop.S_gen_Val(ptr %a1415) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1502 -endif8317: - %t1503 = load ptr, ptr %a1 - %t1504 = load ptr, ptr %a1 - %t1505 = icmp eq ptr %t1504, null - br i1 %t1505, label %panic8336, label %ok8337 -panic8336: - call void @finch_panic(ptr @.str.5413, i64 5039, ptr @.str.5414) - unreachable -ok8337: - %t1506 = getelementptr inbounds %S.gen.Gen, ptr %t1504, i32 0, i32 14 - %t1507 = load { ptr, i64, i64 }, ptr %t1506 - %t1508 = load { ptr, i64, i64 }, ptr %a8 - %t1509 = call i64 @finch.gen.findFn(ptr %t1503, { ptr, i64, i64 } %t1507, { ptr, i64, i64 } %t1508) - store i64 %t1509, ptr %a1510 - %t1511 = load i64, ptr %a1510 - %t1512 = icmp sge i64 %t1511, 0 - br i1 %t1512, label %then8338, label %endif8340 -then8338: - %t1513 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1514 = getelementptr inbounds %S.ast.Type, ptr %t1513, i32 0, i32 1 - %t1515 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1514, i32 0, i32 1 - %t1516 = load i64, ptr %t1515 - %t1517 = icmp sgt i64 %t1516, 0 - br i1 %t1517, label %then8341, label %endif8343 -then8341: - %t1518 = load ptr, ptr %a1 - %t1519 = load %S.ast.Node, ptr %a2 - %t1520 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5415, i64 1, i64 0 }, ptr %a1522 - store { ptr, i64, i64 } %t1520, ptr %a1523 - call void @finch_str_concat(ptr %a1521, ptr %a1522, ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1521 - store { ptr, i64, i64 } %t1524, ptr %a1526 - store { ptr, i64, i64 } { ptr @.str.5416, i64 47, i64 0 }, ptr %a1527 - call void @finch_str_concat(ptr %a1525, ptr %a1526, ptr %a1527) - store { ptr, i64, i64 } %t1524, ptr %a1528 - call void @finch_str_drop(ptr %a1528) - %t1529 = load { ptr, i64, i64 }, ptr %a1525 - call void @finch.gen.fail(ptr %t1518, %S.ast.Node %t1519, { ptr, i64, i64 } %t1529) - store { ptr, i64, i64 } %t1529, ptr %a1530 - call void @finch_str_drop(ptr %a1530) - br label %endif8343 -endif8343: - %t1531 = load ptr, ptr %a1 - %t1532 = load i64, ptr %a1510 - %t1533 = load %S.ast.Node, ptr %a2 - %t1534 = load { ptr, i64, i64 }, ptr %a8 - %t1535 = call %S.gen.Val @finch.gen.callFn(ptr %t1531, i64 %t1532, %S.ast.Node %t1533, i64 0, { ptr, i64, i64 } %t1534, { ptr, i64, i64 } { ptr @.str.5417, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5418, i64 0, i64 0 }) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1535 -endif8340: - %t1536 = load ptr, ptr %a1 - %t1537 = load ptr, ptr %a1 - %t1538 = icmp eq ptr %t1537, null - br i1 %t1538, label %panic8344, label %ok8345 -panic8344: - call void @finch_panic(ptr @.str.5419, i64 5046, ptr @.str.5420) - unreachable -ok8345: - %t1539 = getelementptr inbounds %S.gen.Gen, ptr %t1537, i32 0, i32 14 - %t1540 = load { ptr, i64, i64 }, ptr %t1539 - %t1541 = load { ptr, i64, i64 }, ptr %a8 - %t1542 = call i64 @finch.gen.findTemplate(ptr %t1536, { ptr, i64, i64 } %t1540, { ptr, i64, i64 } %t1541, { ptr, i64, i64 } { ptr @.str.5421, i64 0, i64 0 }, i1 false) - store i64 %t1542, ptr %a1543 - %t1544 = load i64, ptr %a1543 - %t1545 = icmp sge i64 %t1544, 0 - br i1 %t1545, label %then8346, label %endif8348 -then8346: - %t1546 = load ptr, ptr %a1 - %t1547 = load %S.ast.Node, ptr %a2 - %t1548 = load i64, ptr %a1543 - %t1549 = load { ptr, i64, i64 }, ptr %a8 - %t1550 = call %S.gen.Val @finch.gen.genericCall(ptr %t1546, %S.ast.Node %t1547, i64 %t1548, i64 0, { ptr, i64, i64 } %t1549) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1550 -endif8348: - %t1551 = load ptr, ptr %a1 - %t1552 = load ptr, ptr %a1 - %t1553 = icmp eq ptr %t1552, null - br i1 %t1553, label %panic8349, label %ok8350 -panic8349: - call void @finch_panic(ptr @.str.5422, i64 5050, ptr @.str.5423) - unreachable -ok8350: - %t1554 = getelementptr inbounds %S.gen.Gen, ptr %t1552, i32 0, i32 14 - %t1555 = load { ptr, i64, i64 }, ptr %t1554 - %t1556 = load { ptr, i64, i64 }, ptr %a8 - %t1557 = call i64 @finch.gen.findTemplate(ptr %t1551, { ptr, i64, i64 } %t1555, { ptr, i64, i64 } %t1556, { ptr, i64, i64 } { ptr @.str.5424, i64 0, i64 0 }, i1 true) - %t1558 = icmp sge i64 %t1557, 0 - br i1 %t1558, label %then8351, label %endif8353 -then8351: - %t1559 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1560 = getelementptr inbounds %S.ast.Type, ptr %t1559, i32 0, i32 1 - %t1561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1560, i32 0, i32 1 - %t1562 = load i64, ptr %t1561 - %t1563 = icmp eq i64 %t1562, 0 - br i1 %t1563, label %then8354, label %endif8356 -then8354: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5425, i64 1, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5426, i64 42, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - %t1576 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1575, ptr %a1578 - store { ptr, i64, i64 } %t1576, ptr %a1579 - call void @finch_str_concat(ptr %a1577, ptr %a1578, ptr %a1579) - store { ptr, i64, i64 } %t1575, ptr %a1580 - call void @finch_str_drop(ptr %a1580) - %t1581 = load { ptr, i64, i64 }, ptr %a1577 - store { ptr, i64, i64 } %t1581, ptr %a1583 - store { ptr, i64, i64 } { ptr @.str.5427, i64 10, i64 0 }, ptr %a1584 - call void @finch_str_concat(ptr %a1582, ptr %a1583, ptr %a1584) - store { ptr, i64, i64 } %t1581, ptr %a1585 - call void @finch_str_drop(ptr %a1585) - %t1586 = load { ptr, i64, i64 }, ptr %a1582 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1586) - store { ptr, i64, i64 } %t1586, ptr %a1587 - call void @finch_str_drop(ptr %a1587) - br label %endif8356 -endif8356: - store { ptr, i64, i64 } zeroinitializer, ptr %a1588 - %t1589 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1590 = getelementptr inbounds %S.ast.Type, ptr %t1589, i32 0, i32 1 - store i64 0, ptr %a1591 - br label %each.cond8357 -each.cond8357: - %t1592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1590, i32 0, i32 1 - %t1593 = load i64, ptr %t1592 - %t1594 = load i64, ptr %a1591 - %t1595 = icmp slt i64 %t1594, %t1593 - br i1 %t1595, label %each.body8358, label %each.end8360 -each.body8358: - %t1596 = load ptr, ptr %t1590 - %t1597 = getelementptr inbounds %S.ast.Type, ptr %t1596, i64 %t1594 - %t1598 = load %S.ast.Type, ptr %t1597 - store %S.ast.Type %t1598, ptr %a1599 - %t1600 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1588, i32 0, i32 1 - %t1601 = load ptr, ptr %a1 - %t1602 = load %S.ast.Type, ptr %a1599 - %t1603 = load %S.ast.Node, ptr %a2 - %t1604 = call %S.ast.Type @finch.gen.resolve(ptr %t1601, %S.ast.Type %t1602, %S.ast.Node %t1603) - %t1605 = load i64, ptr %t1600 - %t1606 = add i64 %t1605, 1 - call void @finch_arr_reserve(ptr %a1588, i64 %t1606, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1607 = load ptr, ptr %a1588 - %t1608 = getelementptr inbounds %S.ast.Type, ptr %t1607, i64 %t1605 - store %S.ast.Type %t1604, ptr %t1608 - store i64 %t1606, ptr %t1600 - br label %each.step8359 -each.step8359: - %t1609 = load i64, ptr %a1591 - %t1610 = add i64 %t1609, 1 - store i64 %t1610, ptr %a1591 - br label %each.cond8357 -each.end8360: - %t1611 = load ptr, ptr %a1 - %t1612 = load ptr, ptr %a1 - %t1613 = icmp eq ptr %t1612, null - br i1 %t1613, label %panic8361, label %ok8362 -panic8361: - call void @finch_panic(ptr @.str.5428, i64 5059, ptr @.str.5429) - unreachable -ok8362: - %t1614 = getelementptr inbounds %S.gen.Gen, ptr %t1612, i32 0, i32 14 - %t1615 = load { ptr, i64, i64 }, ptr %t1614 - %t1616 = load { ptr, i64, i64 }, ptr %a8 - %t1617 = load { ptr, i64, i64 }, ptr %a1588 - %t1618 = load %S.ast.Node, ptr %a2 - %t1619 = call %S.ast.Type @finch.gen.instStruct(ptr %t1611, { ptr, i64, i64 } %t1615, { ptr, i64, i64 } %t1616, { ptr, i64, i64 } %t1617, %S.ast.Node %t1618) - store %S.ast.Type %t1619, ptr %a1620 - %t1621 = load ptr, ptr %a1 - %t1622 = load ptr, ptr %a1 - %t1623 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 3 - %t1624 = load { ptr, i64, i64 }, ptr %t1623 - %t1625 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 2 - %t1626 = load { ptr, i64, i64 }, ptr %t1625 - %t1627 = call i64 @finch.gen.findStruct(ptr %t1622, { ptr, i64, i64 } %t1624, { ptr, i64, i64 } %t1626) - %t1628 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1629 = load { ptr, i64, i64 }, ptr %t1628 - %t1630 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1631 = load { ptr, i64, i64 }, ptr %t1630 - %t1632 = load %S.ast.Node, ptr %a2 - %t1633 = call %S.gen.Val @finch.gen.construct(ptr %t1621, i64 %t1627, { ptr, i64, i64 } %t1629, { ptr, i64, i64 } %t1631, %S.ast.Node %t1632) - call void @finch.drop.S_ast_Type(ptr %a1620) - call void @finch.drop.arr_S_ast_Type(ptr %a1588) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1633 -endif8353: - %t1634 = load ptr, ptr %a1 - %t1635 = load ptr, ptr %a1 - %t1636 = icmp eq ptr %t1635, null - br i1 %t1636, label %panic8363, label %ok8364 -panic8363: - call void @finch_panic(ptr @.str.5430, i64 5062, ptr @.str.5431) - unreachable -ok8364: - %t1637 = getelementptr inbounds %S.gen.Gen, ptr %t1635, i32 0, i32 14 - %t1638 = load { ptr, i64, i64 }, ptr %t1637 - %t1639 = load { ptr, i64, i64 }, ptr %a8 - %t1640 = call i64 @finch.gen.findStruct(ptr %t1634, { ptr, i64, i64 } %t1638, { ptr, i64, i64 } %t1639) - store i64 %t1640, ptr %a1641 - %t1642 = load i64, ptr %a1641 - %t1643 = icmp sge i64 %t1642, 0 - br i1 %t1643, label %then8365, label %endif8367 -then8365: - %t1644 = load ptr, ptr %a1 - %t1645 = icmp eq ptr %t1644, null - br i1 %t1645, label %panic8368, label %ok8369 -panic8368: - call void @finch_panic(ptr @.str.5432, i64 5064, ptr @.str.5433) - unreachable -ok8369: - %t1646 = getelementptr inbounds %S.gen.Gen, ptr %t1644, i32 0, i32 16 - %t1647 = load i64, ptr %a1641 - %t1648 = load { ptr, i64, i64 }, ptr %t1646 - %t1649 = extractvalue { ptr, i64, i64 } %t1648, 1 - %t1650 = icmp uge i64 %t1647, %t1649 - br i1 %t1650, label %range8370, label %inrange8371 -range8370: - call void @finch_panic_index(ptr @.str.5434, i64 5064, i64 %t1647, i64 %t1649) - unreachable -inrange8371: - %t1651 = extractvalue { ptr, i64, i64 } %t1648, 0 - %t1652 = getelementptr inbounds %S.gen.StructDef, ptr %t1651, i64 %t1647 - %t1653 = load %S.gen.StructDef, ptr %t1652 - store %S.gen.StructDef %t1653, ptr %a1654 - call void @finch.copy.S_gen_StructDef(ptr %a1655, ptr %a1654) - %t1656 = load %S.gen.StructDef, ptr %a1655 - store %S.gen.StructDef %t1656, ptr %a1657 - %t1658 = load ptr, ptr %a1 - %t1659 = icmp eq ptr %t1658, null - br i1 %t1659, label %panic8372, label %ok8373 -panic8372: - call void @finch_panic(ptr @.str.5435, i64 5065, ptr @.str.5436) - unreachable -ok8373: - %t1660 = getelementptr inbounds %S.gen.Gen, ptr %t1658, i32 0, i32 28 - %t1661 = load i1, ptr %t1660 - br label %logic.from8374 -logic.from8374: - br i1 %t1661, label %logic.rhs8375, label %logic.end8376 -logic.rhs8375: - %t1662 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 2 - %t1663 = load i1, ptr %t1662 - %t1664 = xor i1 %t1663, true - br label %logic.rend8377 -logic.rend8377: - br label %logic.end8376 -logic.end8376: - %t1665 = phi i1 [ false, %logic.from8374 ], [ %t1664, %logic.rend8377 ] - br i1 %t1665, label %then8378, label %endif8380 -then8378: - %t1666 = load ptr, ptr %a1 - %t1667 = icmp eq ptr %t1666, null - br i1 %t1667, label %panic8381, label %ok8382 -panic8381: - call void @finch_panic(ptr @.str.5437, i64 5066, ptr @.str.5438) - unreachable -ok8382: - %t1668 = getelementptr inbounds %S.gen.Gen, ptr %t1666, i32 0, i32 0 - %t1669 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 13 - %t1670 = load i64, ptr %t1669 - %t1671 = load { ptr, i64, i64 }, ptr %t1668 - %t1672 = extractvalue { ptr, i64, i64 } %t1671, 1 - %t1673 = icmp uge i64 %t1670, %t1672 - br i1 %t1673, label %range8383, label %inrange8384 -range8383: - call void @finch_panic_index(ptr @.str.5439, i64 5066, i64 %t1670, i64 %t1672) - unreachable -inrange8384: - %t1674 = extractvalue { ptr, i64, i64 } %t1671, 0 - %t1675 = getelementptr inbounds %S.ast.Program, ptr %t1674, i64 %t1670 - %t1676 = getelementptr inbounds %S.ast.Program, ptr %t1675, i32 0, i32 6 - %t1677 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 14 - %t1678 = load i64, ptr %t1677 - %t1679 = load { ptr, i64, i64 }, ptr %t1676 - %t1680 = extractvalue { ptr, i64, i64 } %t1679, 1 - %t1681 = icmp uge i64 %t1678, %t1680 - br i1 %t1681, label %range8385, label %inrange8386 -range8385: - call void @finch_panic_index(ptr @.str.5440, i64 5066, i64 %t1678, i64 %t1680) - unreachable -inrange8386: - %t1682 = extractvalue { ptr, i64, i64 } %t1679, 0 - %t1683 = getelementptr inbounds %S.ast.Node, ptr %t1682, i64 %t1678 - %t1684 = load %S.ast.Node, ptr %t1683 - store %S.ast.Node %t1684, ptr %a1685 - call void @finch.copy.S_ast_Node(ptr %a1686, ptr %a1685) - %t1687 = load %S.ast.Node, ptr %a1686 - store %S.ast.Node %t1687, ptr %a1688 - %t1689 = load ptr, ptr %a1 - %t1690 = load %S.ast.Node, ptr %a2 - %t1691 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t1692 = load i64, ptr %t1691 - %t1693 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t1694 = load i64, ptr %t1693 - %t1695 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 1 - %t1696 = load { ptr, i64, i64 }, ptr %t1695 - store { ptr, i64, i64 } { ptr @.str.5441, i64 16, i64 0 }, ptr %a1698 - store { ptr, i64, i64 } %t1696, ptr %a1699 - call void @finch_str_concat(ptr %a1697, ptr %a1698, ptr %a1699) - %t1700 = load { ptr, i64, i64 }, ptr %a1697 - store { ptr, i64, i64 } %t1700, ptr %a1702 - store { ptr, i64, i64 } { ptr @.str.5442, i64 3, i64 0 }, ptr %a1703 - call void @finch_str_concat(ptr %a1701, ptr %a1702, ptr %a1703) - store { ptr, i64, i64 } %t1700, ptr %a1704 - call void @finch_str_drop(ptr %a1704) - %t1705 = load { ptr, i64, i64 }, ptr %a1701 - %t1706 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 11 - %t1707 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1706, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5443, i64 2, i64 0 }, ptr %a1708 - call void @finch_str_join(ptr %a1709, ptr %t1706, ptr %a1708) - %t1710 = load { ptr, i64, i64 }, ptr %a1709 - store { ptr, i64, i64 } %t1705, ptr %a1712 - store { ptr, i64, i64 } %t1710, ptr %a1713 - call void @finch_str_concat(ptr %a1711, ptr %a1712, ptr %a1713) - store { ptr, i64, i64 } %t1705, ptr %a1714 - call void @finch_str_drop(ptr %a1714) - store { ptr, i64, i64 } %t1710, ptr %a1715 - call void @finch_str_drop(ptr %a1715) - %t1716 = load { ptr, i64, i64 }, ptr %a1711 - store { ptr, i64, i64 } %t1716, ptr %a1718 - store { ptr, i64, i64 } { ptr @.str.5444, i64 6, i64 0 }, ptr %a1719 - call void @finch_str_concat(ptr %a1717, ptr %a1718, ptr %a1719) - store { ptr, i64, i64 } %t1716, ptr %a1720 - call void @finch_str_drop(ptr %a1720) - %t1721 = load { ptr, i64, i64 }, ptr %a1717 - %t1722 = load ptr, ptr %a1 - %t1723 = icmp eq ptr %t1722, null - br i1 %t1723, label %panic8387, label %ok8388 -panic8387: - call void @finch_panic(ptr @.str.5445, i64 5067, ptr @.str.5446) - unreachable -ok8388: - %t1724 = getelementptr inbounds %S.gen.Gen, ptr %t1722, i32 0, i32 1 - %t1725 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 13 - %t1726 = load i64, ptr %t1725 - %t1727 = load { ptr, i64, i64 }, ptr %t1724 - %t1728 = extractvalue { ptr, i64, i64 } %t1727, 1 - %t1729 = icmp uge i64 %t1726, %t1728 - br i1 %t1729, label %range8389, label %inrange8390 -range8389: - call void @finch_panic_index(ptr @.str.5447, i64 5067, i64 %t1726, i64 %t1728) - unreachable -inrange8390: - %t1730 = extractvalue { ptr, i64, i64 } %t1727, 0 - %t1731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1730, i64 %t1726 - %t1732 = load { ptr, i64, i64 }, ptr %t1731 - %t1733 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 11 - %t1734 = load i64, ptr %t1733 - %t1735 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 12 - %t1736 = load i64, ptr %t1735 - call void @finch.gen.noteRef(ptr %t1689, %S.ast.Node %t1690, i64 %t1692, i64 %t1694, { ptr, i64, i64 } %t1721, { ptr, i64, i64 } %t1732, i64 %t1734, i64 %t1736) - store { ptr, i64, i64 } %t1721, ptr %a1737 - call void @finch_str_drop(ptr %a1737) - call void @finch.drop.S_ast_Node(ptr %a1688) - br label %endif8380 -endif8380: - %t1738 = load ptr, ptr %a1 - %t1739 = load i64, ptr %a1641 - %t1740 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1741 = load { ptr, i64, i64 }, ptr %t1740 - %t1742 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1743 = load { ptr, i64, i64 }, ptr %t1742 - %t1744 = load %S.ast.Node, ptr %a2 - %t1745 = call %S.gen.Val @finch.gen.construct(ptr %t1738, i64 %t1739, { ptr, i64, i64 } %t1741, { ptr, i64, i64 } %t1743, %S.ast.Node %t1744) - call void @finch.drop.S_gen_StructDef(ptr %a1657) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1745 -endif8367: - %t1746 = load ptr, ptr %a1 - %t1747 = load ptr, ptr %a1 - %t1748 = icmp eq ptr %t1747, null - br i1 %t1748, label %panic8391, label %ok8392 -panic8391: - call void @finch_panic(ptr @.str.5448, i64 5071, ptr @.str.5449) - unreachable -ok8392: - %t1749 = getelementptr inbounds %S.gen.Gen, ptr %t1747, i32 0, i32 14 - %t1750 = load { ptr, i64, i64 }, ptr %t1749 - %t1751 = load { ptr, i64, i64 }, ptr %a8 - %t1752 = call i64 @finch.gen.findEnum(ptr %t1746, { ptr, i64, i64 } %t1750, { ptr, i64, i64 } %t1751) - store i64 %t1752, ptr %a1753 - %t1754 = load i64, ptr %a1753 - %t1755 = icmp sge i64 %t1754, 0 - br i1 %t1755, label %then8393, label %endif8395 -then8393: - %t1756 = load ptr, ptr %a1 - %t1757 = load %S.ast.Node, ptr %a2 - %t1758 = load i64, ptr %a1753 - %t1759 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1756, %S.ast.Node %t1757, i64 %t1758) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1759 -endif8395: - %t1760 = load ptr, ptr %a1 - %t1761 = icmp eq ptr %t1760, null - br i1 %t1761, label %panic8396, label %ok8397 -panic8396: - call void @finch_panic(ptr @.str.5450, i64 5075, ptr @.str.5451) - unreachable -ok8397: - %t1762 = getelementptr inbounds %S.gen.Gen, ptr %t1760, i32 0, i32 26 - %t1763 = getelementptr inbounds %S.cimport.CImports, ptr %t1762, i32 0, i32 0 - %t1764 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1764, ptr %a1765 - %t1766 = call i64 @finch_map_find(ptr %t1763, ptr %a1765, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1767 = icmp sge i64 %t1766, 0 - br i1 %t1767, label %then8398, label %endif8400 -then8398: - %t1768 = load ptr, ptr %a1 - %t1769 = load %S.ast.Node, ptr %a2 - %t1770 = load ptr, ptr %a1 - %t1771 = icmp eq ptr %t1770, null - br i1 %t1771, label %panic8401, label %ok8402 -panic8401: - call void @finch_panic(ptr @.str.5452, i64 5076, ptr @.str.5453) - unreachable -ok8402: - %t1772 = getelementptr inbounds %S.gen.Gen, ptr %t1770, i32 0, i32 26 - %t1773 = getelementptr inbounds %S.cimport.CImports, ptr %t1772, i32 0, i32 0 - %t1774 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1774, ptr %a1775 - %t1776 = call i64 @finch_map_find(ptr %t1773, ptr %a1775, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1777 = icmp slt i64 %t1776, 0 - br i1 %t1777, label %map.missing8403, label %map.found8404 -map.missing8403: - store { ptr, i64, i64 } zeroinitializer, ptr %a1778 - store { ptr, i64, i64 } %t1774, ptr %a1779 - call void @finch_buf_str(ptr %a1778, ptr %a1779, i32 1) - call void @finch_map_missing(ptr @.str.5454, i64 5076, ptr %a1778) - unreachable -map.found8404: - %t1780 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1773, i32 0, i32 0 - %t1781 = load ptr, ptr %t1780 - %t1782 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1781, i64 %t1776 - %t1783 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1782, i32 0, i32 2 - %t1784 = load %S.cimport.CFunc, ptr %t1783 - %t1785 = call %S.gen.Val @finch.gen.callC(ptr %t1768, %S.ast.Node %t1769, %S.cimport.CFunc %t1784) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1785 -endif8400: - %t1786 = load ptr, ptr %a1 - %t1787 = load { ptr, i64, i64 }, ptr %a8 - %t1788 = call i64 @finch.gen.findStruct(ptr %t1786, { ptr, i64, i64 } { ptr @.str.5455, i64 1, i64 0 }, { ptr, i64, i64 } %t1787) - store i64 %t1788, ptr %a1641 - %t1789 = load i64, ptr %a1641 - %t1790 = icmp sge i64 %t1789, 0 - br i1 %t1790, label %then8405, label %endif8407 -then8405: - %t1791 = load ptr, ptr %a1 - %t1792 = load i64, ptr %a1641 - %t1793 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1794 = load { ptr, i64, i64 }, ptr %t1793 - %t1795 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1796 = load { ptr, i64, i64 }, ptr %t1795 - %t1797 = load %S.ast.Node, ptr %a2 - %t1798 = call %S.gen.Val @finch.gen.construct(ptr %t1791, i64 %t1792, { ptr, i64, i64 } %t1794, { ptr, i64, i64 } %t1796, %S.ast.Node %t1797) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1798 -endif8407: - %t1799 = load ptr, ptr %a1 - %t1800 = load { ptr, i64, i64 }, ptr %a8 - %t1801 = call i64 @finch.gen.lookup(ptr %t1799, { ptr, i64, i64 } %t1800) - %t1802 = icmp sge i64 %t1801, 0 - br i1 %t1802, label %then8408, label %endif8410 -then8408: - %t1803 = load ptr, ptr %a1 - %t1804 = load %S.ast.Node, ptr %a2 - %t1805 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5456, i64 1, i64 0 }, ptr %a1807 - store { ptr, i64, i64 } %t1805, ptr %a1808 - call void @finch_str_concat(ptr %a1806, ptr %a1807, ptr %a1808) - %t1809 = load { ptr, i64, i64 }, ptr %a1806 - store { ptr, i64, i64 } %t1809, ptr %a1811 - store { ptr, i64, i64 } { ptr @.str.5457, i64 31, i64 0 }, ptr %a1812 - call void @finch_str_concat(ptr %a1810, ptr %a1811, ptr %a1812) - store { ptr, i64, i64 } %t1809, ptr %a1813 - call void @finch_str_drop(ptr %a1813) - %t1814 = load { ptr, i64, i64 }, ptr %a1810 - call void @finch.gen.fail(ptr %t1803, %S.ast.Node %t1804, { ptr, i64, i64 } %t1814) - store { ptr, i64, i64 } %t1814, ptr %a1815 - call void @finch_str_drop(ptr %a1815) - br label %endif8410 -endif8410: - %t1816 = load ptr, ptr %a1 - %t1817 = load %S.ast.Node, ptr %a2 - %t1818 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5458, i64 28, i64 0 }, ptr %a1820 - store { ptr, i64, i64 } %t1818, ptr %a1821 - call void @finch_str_concat(ptr %a1819, ptr %a1820, ptr %a1821) - %t1822 = load { ptr, i64, i64 }, ptr %a1819 - store { ptr, i64, i64 } %t1822, ptr %a1824 - store { ptr, i64, i64 } { ptr @.str.5459, i64 1, i64 0 }, ptr %a1825 - call void @finch_str_concat(ptr %a1823, ptr %a1824, ptr %a1825) - store { ptr, i64, i64 } %t1822, ptr %a1826 - call void @finch_str_drop(ptr %a1826) - %t1827 = load { ptr, i64, i64 }, ptr %a1823 - %t1828 = load { ptr, i64, i64 }, ptr %a8 - %t1829 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1828) - store { ptr, i64, i64 } %t1827, ptr %a1831 - store { ptr, i64, i64 } %t1829, ptr %a1832 - call void @finch_str_concat(ptr %a1830, ptr %a1831, ptr %a1832) - store { ptr, i64, i64 } %t1827, ptr %a1833 - call void @finch_str_drop(ptr %a1833) - store { ptr, i64, i64 } %t1829, ptr %a1834 - call void @finch_str_drop(ptr %a1834) - %t1835 = load { ptr, i64, i64 }, ptr %a1830 - call void @finch.gen.fail(ptr %t1816, %S.ast.Node %t1817, { ptr, i64, i64 } %t1835) - store { ptr, i64, i64 } %t1835, ptr %a1836 - call void @finch_str_drop(ptr %a1836) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca i64, align 16 - %a70 = alloca i64, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca %S.gen.Val, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a166 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca %S.gen.Val, align 16 - %a204 = alloca %S.gen.Val, align 16 - %a220 = alloca %S.gen.Val, align 16 - %a221 = alloca i64, align 16 - %a229 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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 %panic8411, label %ok8412 -panic8411: - call void @finch_panic(ptr @.str.5460, i64 5090, ptr @.str.5461) - unreachable -ok8412: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 15 - %t11 = load i64, ptr %a2 - %t12 = load { ptr, i64, i64 }, ptr %t10 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range8413, label %inrange8414 -range8413: - call void @finch_panic_index(ptr @.str.5462, i64 5090, i64 %t11, i64 %t13) - unreachable -inrange8414: - %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.from8415 -logic.from8415: - br i1 %t25, label %logic.rhs8416, label %logic.end8417 -logic.rhs8416: - %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.5463, 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.rend8418 -logic.rend8418: - br label %logic.end8417 -logic.end8417: - %t32 = phi i1 [ false, %logic.from8415 ], [ %t31, %logic.rend8418 ] - br i1 %t32, label %then8419, label %endif8421 -then8419: - %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.5464, i64 52, i64 0 }) - br label %endif8421 -endif8421: - %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 %then8422, label %endif8424 -then8422: - %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.5465, 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 %endif8424 -endif8424: - store { ptr, i64, i64 } zeroinitializer, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic8425, label %ok8426 -panic8425: - call void @finch_panic(ptr @.str.5466, i64 5101, ptr @.str.5467) - unreachable -ok8426: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load i64, ptr %t64 - store i64 %t65, ptr %a66 - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load i64, ptr %t68 - store i64 0, ptr %a70 - br label %for.cond8427 -for.cond8427: - %t71 = load i64, ptr %a70 - %t72 = icmp slt i64 %t71, %t69 - br i1 %t72, label %for.body8428, label %for.end8430 -for.body8428: - %t73 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t74 = load i64, ptr %a4 - %t75 = load i64, ptr %a70 - %t76 = add i64 %t74, %t75 - %t77 = load { ptr, i64, i64 }, ptr %t73 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range8431, label %inrange8432 -range8431: - call void @finch_panic_index(ptr @.str.5468, i64 5103, i64 %t76, i64 %t78) - unreachable -inrange8432: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds %S.ast.Node, ptr %t80, i64 %t76 - %t82 = load %S.ast.Node, ptr %t81 - store %S.ast.Node %t82, ptr %a83 - call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) - %t85 = load %S.ast.Node, ptr %a84 - store %S.ast.Node %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load ptr, ptr %a1 - %t89 = load %S.ast.Node, ptr %a86 - %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t91 = load i64, ptr %a70 - %t92 = load { ptr, i64, i64 }, ptr %t90 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 %t91, %t93 - br i1 %t94, label %range8433, label %inrange8434 -range8433: - call void @finch_panic_index(ptr @.str.5469, i64 5104, i64 %t91, i64 %t93) - unreachable -inrange8434: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Type, ptr %t95, i64 %t91 - %t97 = load %S.ast.Type, ptr %t96 - %t98 = call %S.gen.Val @finch.gen.exprWant(ptr %t88, %S.ast.Node %t89, %S.ast.Type %t97) - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t100 = load i64, ptr %a70 - %t101 = load { ptr, i64, i64 }, ptr %t99 - %t102 = extractvalue { ptr, i64, i64 } %t101, 1 - %t103 = icmp uge i64 %t100, %t102 - br i1 %t103, label %range8435, label %inrange8436 -range8435: - call void @finch_panic_index(ptr @.str.5470, i64 5104, i64 %t100, i64 %t102) - unreachable -inrange8436: - %t104 = extractvalue { ptr, i64, i64 } %t101, 0 - %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t100 - %t106 = load %S.ast.Type, ptr %t105 - %t107 = load %S.ast.Node, ptr %a86 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 - %t109 = load i64, ptr %a70 - %t110 = load { ptr, i64, i64 }, ptr %t108 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range8437, label %inrange8438 -range8437: - call void @finch_panic_index(ptr @.str.5472, i64 5104, i64 %t109, i64 %t111) - unreachable -inrange8438: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i64 %t109 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.5471, i64 10, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.5473, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = call %S.gen.Val @finch.gen.coerce(ptr %t87, %S.gen.Val %t98, %S.ast.Type %t106, %S.ast.Node %t107, { ptr, i64, i64 } %t124) - store %S.gen.Val %t98, ptr %a126 - call void @finch.drop.S_gen_Val(ptr %a126) - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_drop(ptr %a127) - store %S.gen.Val %t125, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t131 = load i64, ptr %a70 - %t132 = load { ptr, i64, i64 }, ptr %t130 - %t133 = extractvalue { ptr, i64, i64 } %t132, 1 - %t134 = icmp uge i64 %t131, %t133 - br i1 %t134, label %range8439, label %inrange8440 -range8439: - call void @finch_panic_index(ptr @.str.5474, i64 5106, i64 %t131, i64 %t133) - unreachable -inrange8440: - %t135 = extractvalue { ptr, i64, i64 } %t132, 0 - %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t131 - %t137 = load %S.ast.Type, ptr %t136 - %t138 = call i1 @finch.gen.owning(ptr %t129, %S.ast.Type %t137) - br label %logic.from8441 -logic.from8441: - br i1 %t138, label %logic.rhs8442, label %logic.end8443 -logic.rhs8442: - %t139 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t140 = load i1, ptr %t139 - %t141 = xor i1 %t140, true - br label %logic.rend8444 -logic.rend8444: - br label %logic.end8443 -logic.end8443: - %t142 = phi i1 [ false, %logic.from8441 ], [ %t141, %logic.rend8444 ] - br label %logic.from8445 -logic.from8445: - br i1 %t142, label %logic.rhs8446, label %logic.end8447 -logic.rhs8446: - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t144 = load i64, ptr %t143 - %t145 = icmp sgt i64 %t144, 0 - br label %logic.rend8448 -logic.rend8448: - br label %logic.end8447 -logic.end8447: - %t146 = phi i1 [ false, %logic.from8445 ], [ %t145, %logic.rend8448 ] - br label %logic.from8449 -logic.from8449: - br i1 %t146, label %logic.rhs8450, label %logic.end8451 -logic.rhs8450: - %t147 = load %S.ast.Node, ptr %a86 - %t148 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t147) - %t149 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - store { ptr, i64, i64 } %t148, ptr %a154 - call void @finch_str_drop(ptr %a154) - br label %logic.rend8452 -logic.rend8452: - br label %logic.end8451 -logic.end8451: - %t155 = phi i1 [ false, %logic.from8449 ], [ %t153, %logic.rend8452 ] - br i1 %t155, label %then8453, label %endif8455 -then8453: - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - %t161 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t156, { ptr, i64, i64 } %t158, %S.ast.Type %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t164 = load %S.ast.Type, ptr %t163 - store %S.ast.Type %t164, ptr %a165 - call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) - %t167 = load %S.ast.Type, ptr %a166 - %t168 = insertvalue %S.gen.Val %t162, %S.ast.Type %t167, 1 - %t169 = insertvalue %S.gen.Val %t168, i1 true, 2 - %t170 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t169, ptr %a128 - store %S.gen.Val %t170, ptr %a171 - call void @finch.drop.S_gen_Val(ptr %a171) - br label %endif8455 -endif8455: - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t175 = load i64, ptr %a70 - %t176 = load { ptr, i64, i64 }, ptr %t174 - %t177 = extractvalue { ptr, i64, i64 } %t176, 1 - %t178 = icmp uge i64 %t175, %t177 - br i1 %t178, label %range8456, label %inrange8457 -range8456: - call void @finch_panic_index(ptr @.str.5475, i64 5109, i64 %t175, i64 %t177) - unreachable -inrange8457: - %t179 = extractvalue { ptr, i64, i64 } %t176, 0 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i64 %t175 - %t181 = load %S.ast.Type, ptr %t180 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t181) - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5476, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t187, ptr %a191 - store { ptr, i64, i64 } %t189, ptr %a192 - call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192) - store { ptr, i64, i64 } %t187, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a190 - %t195 = load i64, ptr %t172 - %t196 = add i64 %t195, 1 - call void @finch_arr_reserve(ptr %a45, i64 %t196, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t197 = load ptr, ptr %a45 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i64 %t195 - store { ptr, i64, i64 } %t194, ptr %t198 - store i64 %t196, ptr %t172 - %t199 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t200 = load i1, ptr %t199 - br i1 %t200, label %then8458, label %endif8460 -then8458: - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t202 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t202, ptr %a203 - call void @finch.copy.S_gen_Val(ptr %a204, ptr %a203) - %t205 = load %S.gen.Val, ptr %a204 - %t206 = load i64, ptr %t201 - %t207 = add i64 %t206, 1 - call void @finch_arr_reserve(ptr %a60, i64 %t207, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t208 = load ptr, ptr %a60 - %t209 = getelementptr inbounds %S.gen.Val, ptr %t208, i64 %t206 - store %S.gen.Val %t205, ptr %t209 - store i64 %t207, ptr %t201 - br label %endif8460 -endif8460: - %t210 = load ptr, ptr %a1 - %t211 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t210, %S.gen.Val %t211) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Node(ptr %a86) - br label %for.step8429 -for.step8429: - %t212 = load i64, ptr %a70 - %t213 = add i64 %t212, 1 - store i64 %t213, ptr %a70 - br label %for.cond8427 -for.end8430: - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.FnSig, ptr %a21 - %t216 = load %S.ast.Node, ptr %a3 - %t217 = load { ptr, i64, i64 }, ptr %a45 - %t218 = load { ptr, i64, i64 }, ptr %a5 - %t219 = call %S.gen.Val @finch.gen.emitCall(ptr %t214, %S.gen.FnSig %t215, %S.ast.Node %t216, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t218) - store %S.gen.Val %t219, ptr %a220 - store i64 0, ptr %a221 - br label %each.cond8461 -each.cond8461: - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = load i64, ptr %a221 - %t225 = icmp slt i64 %t224, %t223 - br i1 %t225, label %each.body8462, label %each.end8464 -each.body8462: - %t226 = load ptr, ptr %a60 - %t227 = getelementptr inbounds %S.gen.Val, ptr %t226, i64 %t224 - %t228 = load %S.gen.Val, ptr %t227 - store %S.gen.Val %t228, ptr %a229 - %t230 = load ptr, ptr %a1 - %t231 = load %S.gen.Val, ptr %a229 - call void @finch.gen.release(ptr %t230, %S.gen.Val %t231) - br label %each.step8463 -each.step8463: - %t232 = load i64, ptr %a221 - %t233 = add i64 %t232, 1 - store i64 %t233, ptr %a221 - br label %each.cond8461 -each.end8464: - %t234 = load ptr, ptr %a1 - %t235 = load i64, ptr %a66 - call void @finch.gen.heldEnd(ptr %t234, i64 %t235) - %t236 = load %S.gen.Val, ptr %a220 - call void @finch.drop.arr_S_gen_Val(ptr %a60) - call void @finch.drop.arr_str(ptr %a45) - call void @finch.drop.S_gen_FnSig(ptr %a21) - ret %S.gen.Val %t236 -} - -define internal %S.gen.Val @finch.gen.emitCall(ptr %p0, %S.gen.FnSig %p1, %S.ast.Node %p2, { ptr, i64, i64 } %p3, { ptr, i64, i64 } %p4) { -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 - %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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %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 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = 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 - %a200 = alloca %S.ast.Type, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca %S.ast.Type, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a264 = alloca %S.ast.Type, align 16 - %a265 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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.from8465 -logic.from8465: - br i1 %t7, label %logic.rhs8466, label %logic.end8467 -logic.rhs8466: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic8468, label %ok8469 -panic8468: - call void @finch_panic(ptr @.str.5477, i64 5125, ptr @.str.5478) - unreachable -ok8469: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 41 - %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 - store { ptr, i64, i64 } %t13, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend8470 -logic.rend8470: - br label %logic.end8467 -logic.end8467: - %t19 = phi i1 [ false, %logic.from8465 ], [ %t17, %logic.rend8470 ] - br i1 %t19, label %then8471, label %endif8473 -then8471: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Node, ptr %a3 - %t22 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.5479, i64 1, i64 0 }, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.5480, i64 39, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.5481, i64 19, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t42, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5482, i64 27, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5483, i64 5, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } %t64) - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif8473 -endif8473: - %t66 = load ptr, ptr %a1 - %t67 = load %S.gen.FnSig, ptr %a2 - %t68 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t66, %S.gen.FnSig %t67) - store { ptr, i64, i64 } { ptr @.str.5484, i64 5, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5485, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.5486, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5487, i64 2, i64 0 }, ptr %a92 - call void @finch_str_join(ptr %a93, ptr %a4, ptr %a92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t90, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t90, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.5488, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then8474, label %endif8476 -then8474: - %t109 = load ptr, ptr %a1 - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t109, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = load %S.gen.FnSig, ptr %a2 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t114, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.5489, i64 13, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.5490, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.5491, i64 3, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a139 - call void @finch_str_drop(ptr %a139) - store { ptr, i64, i64 } %t138, ptr %a140 - %t141 = load ptr, ptr %a1 - %t142 = load { ptr, i64, i64 }, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5492, i64 7, i64 0 }, ptr %a144 - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5493, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = call { ptr, i64, i64 } @finch.gen.op(ptr %t141, { ptr, i64, i64 } %t151) - store { ptr, i64, i64 } %t151, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic8477, label %ok8478 -panic8477: - call void @finch_panic(ptr @.str.5494, i64 5132, ptr @.str.5495) - unreachable -ok8478: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 42 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t152, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a1 - %t161 = load %S.gen.FnSig, ptr %a2 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t160, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.5496, i64 13, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.5497, i64 1, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5498, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t159, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic8479, label %ok8480 -panic8479: - call void @finch_panic(ptr @.str.5499, i64 5133, ptr @.str.5500) - unreachable -ok8480: - %t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 43 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t184, ptr %t188 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t192 = getelementptr inbounds %S.ast.Type, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5501, i64 4, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then8481, label %endif8483 -then8481: - %t198 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t199 = load %S.ast.Type, ptr %t198 - store %S.ast.Type %t199, ptr %a200 - call void @finch.copy.S_ast_Type(ptr %a201, ptr %a200) - %t202 = load %S.ast.Type, ptr %a201 - %t203 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t202, 1 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t203 -endif8483: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.gen.FnSig, ptr %a2 - %t207 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t205, %S.gen.FnSig %t206) - store { ptr, i64, i64 } { ptr @.str.5502, i64 13, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t212, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.5503, i64 1, i64 0 }, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t217, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.5504, i64 3, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t232 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t233 = load %S.ast.Type, ptr %t232 - store %S.ast.Type %t233, ptr %a234 - call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) - %t236 = load %S.ast.Type, ptr %a235 - %t237 = insertvalue %S.gen.Val %t231, %S.ast.Type %t236, 1 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t240 = load %S.ast.Type, ptr %t239 - %t241 = call i1 @finch.gen.owning(ptr %t238, %S.ast.Type %t240) - %t242 = insertvalue %S.gen.Val %t237, i1 %t241, 2 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t242 -endif8476: - %t243 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i32 0, i32 0 - %t245 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t245, ptr %a246 - store { ptr, i64, i64 } { ptr @.str.5505, i64 4, i64 0 }, ptr %a247 - %t248 = call i32 @finch_str_eq(ptr %a246, ptr %a247) - %t249 = icmp ne i32 %t248, 0 - br i1 %t249, label %then8484, label %endif8486 -then8484: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t253 = load %S.ast.Type, ptr %t252 - store %S.ast.Type %t253, ptr %a254 - call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) - %t256 = load %S.ast.Type, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t256, 1 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t257 -endif8486: - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a106 - %t260 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t259) - %t261 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t260, 0 - %t262 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t263 = load %S.ast.Type, ptr %t262 - store %S.ast.Type %t263, ptr %a264 - call void @finch.copy.S_ast_Type(ptr %a265, ptr %a264) - %t266 = load %S.ast.Type, ptr %a265 - %t267 = insertvalue %S.gen.Val %t261, %S.ast.Type %t266, 1 - %t268 = load ptr, ptr %a1 - %t269 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t268, %S.ast.Type %t270) - %t272 = insertvalue %S.gen.Val %t267, i1 %t271, 2 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t272 -} - -define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { -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 - %a47 = alloca %S.ast.Node, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca i1, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca i64, align 16 - %a95 = alloca i64, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca i64, align 16 - %a196 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca i64, align 16 - %a294 = alloca i64, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a306 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.gen.Val, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca %S.gen.Val, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca %S.gen.Val, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca %S.gen.Val, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca %S.gen.Val, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a522 = 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 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca %S.ast.Type, align 16 - %a562 = alloca %S.ast.Type, align 16 - %a566 = alloca %S.gen.Val, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.ast.Type, align 16 - %a645 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic8487, label %ok8488 -panic8487: - call void @finch_panic(ptr @.str.5506, i64 5147, ptr @.str.5507) - unreachable -ok8488: - %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 %range8489, label %inrange8490 -range8489: - call void @finch_panic_index(ptr @.str.5508, i64 5147, i64 %t9, i64 %t11) - unreachable -inrange8490: - %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 %then8491, label %endif8493 -then8491: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic8494, label %ok8495 -panic8494: - call void @finch_panic(ptr @.str.5509, i64 5150, ptr @.str.5510) - unreachable -ok8495: - %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 %range8496, label %inrange8497 -range8496: - call void @finch_panic_index(ptr @.str.5511, i64 5150, i64 %t28, i64 %t30) - unreachable -inrange8497: - %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 %range8498, label %inrange8499 -range8498: - call void @finch_panic_index(ptr @.str.5512, i64 5150, i64 %t36, i64 %t38) - unreachable -inrange8499: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 - %t42 = load %S.ast.Node, ptr %t41 - store %S.ast.Node %t42, ptr %a43 - call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43) - %t45 = load %S.ast.Node, ptr %a44 - %t46 = load %S.ast.Node, ptr %a20 - store %S.ast.Node %t45, ptr %a20 - store %S.ast.Node %t46, ptr %a47 - call void @finch.drop.S_ast_Node(ptr %a47) - br label %endif8493 -endif8493: - %t48 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5513, i64 6, i64 0 }, 0 - %t49 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_copy(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = insertvalue %S.ast.Type %t48, { ptr, i64, i64 } %t53, 2 - %t55 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - %t60 = insertvalue %S.ast.Type %t54, { ptr, i64, i64 } %t59, 3 - store %S.ast.Type %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load %S.ast.Type, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t62, %S.ast.Type %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t67 = load i64, ptr %t66 - %t68 = icmp sgt i64 %t67, 0 - br label %logic.from8500 -logic.from8500: - br i1 %t68, label %logic.rhs8501, label %logic.end8502 -logic.rhs8501: - %t69 = load { ptr, i64, i64 }, ptr %a4 - %t70 = extractvalue { ptr, i64, i64 } %t69, 1 - %t71 = icmp uge i64 0, %t70 - br i1 %t71, label %range8503, label %inrange8504 -range8503: - call void @finch_panic_index(ptr @.str.5514, i64 5154, i64 0, i64 %t70) - unreachable -inrange8504: - %t72 = extractvalue { ptr, i64, i64 } %t69, 0 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i64 0 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 - %t75 = load i64, ptr %t74 - %t76 = icmp sgt i64 %t75, 0 - br label %logic.rend8505 -logic.rend8505: - br label %logic.end8502 -logic.end8502: - %t77 = phi i1 [ false, %logic.from8500 ], [ %t76, %logic.rend8505 ] - store i1 %t77, ptr %a78 - store { ptr, i64, i64 } zeroinitializer, ptr %a79 - %t80 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1 - %t82 = load i64, ptr %t81 - store i64 0, ptr %a83 - br label %for.cond8506 -for.cond8506: - %t84 = load i64, ptr %a83 - %t85 = icmp slt i64 %t84, %t82 - br i1 %t85, label %for.body8507, label %for.end8509 -for.body8507: - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %a79, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %a79, i64 %t88, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %a79 - %t90 = getelementptr inbounds i64, ptr %t89, i64 %t87 - store i64 -1, ptr %t90 - store i64 %t88, ptr %t86 - br label %for.step8508 -for.step8508: - %t91 = load i64, ptr %a83 - %t92 = add i64 %t91, 1 - store i64 %t92, ptr %a83 - br label %for.cond8506 -for.end8509: - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t94 = load i64, ptr %t93 - store i64 0, ptr %a95 - br label %for.cond8510 -for.cond8510: - %t96 = load i64, ptr %a95 - %t97 = icmp slt i64 %t96, %t94 - br i1 %t97, label %for.body8511, label %for.end8513 -for.body8511: - %t98 = load i64, ptr %a95 - %t99 = load { ptr, i64, i64 }, ptr %a4 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range8514, label %inrange8515 -range8514: - call void @finch_panic_index(ptr @.str.5515, i64 5160, i64 %t98, i64 %t100) - unreachable -inrange8515: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp sgt i64 %t105, 0 - %t107 = load i1, ptr %a78 - %t108 = icmp ne i1 %t106, %t107 - br i1 %t108, label %then8516, label %endif8518 -then8516: - %t109 = load ptr, ptr %a1 - %t110 = load i64, ptr %a95 - %t111 = load { ptr, i64, i64 }, ptr %a3 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range8519, label %inrange8520 -range8519: - call void @finch_panic_index(ptr @.str.5516, i64 5161, i64 %t110, i64 %t112) - unreachable -inrange8520: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 %t110 - %t116 = load %S.ast.Node, ptr %t115 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t116, { ptr, i64, i64 } { ptr @.str.5517, i64 69, i64 0 }) - br label %endif8518 -endif8518: - %t117 = load i1, ptr %a78 - %t118 = xor i1 %t117, true - br i1 %t118, label %then8521, label %endif8523 -then8521: - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t120 = load i64, ptr %t119 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = icmp ne i64 %t120, %t123 - br i1 %t124, label %then8524, label %endif8526 -then8524: - %t125 = load ptr, ptr %a1 - %t126 = load %S.ast.Node, ptr %a5 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5518, i64 5, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a129 - %t133 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - call void @finch_str_from_int(ptr %a136, i64 %t135) - %t137 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t132, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t132, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5519, i64 17, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t150 = load i64, ptr %t149 - call void @finch_str_from_int(ptr %a151, i64 %t150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t148, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t148, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t152, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.5520, i64 23, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t163, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t163, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5521, i64 15, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch.gen.fail(ptr %t125, %S.ast.Node %t126, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif8526 -endif8526: - %t177 = load i64, ptr %a95 - %t178 = load i64, ptr %a95 - %t179 = load { ptr, i64, i64 }, ptr %a79 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range8527, label %inrange8528 -range8527: - call void @finch_panic_index(ptr @.str.5522, i64 5167, i64 %t178, i64 %t180) - unreachable -inrange8528: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 - store i64 %t177, ptr %t183 - br label %for.step8512 -endif8523: - %t184 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i32 0, i32 1 - %t186 = load i64, ptr %a95 - %t187 = load { ptr, i64, i64 }, ptr %a4 - %t188 = extractvalue { ptr, i64, i64 } %t187, 1 - %t189 = icmp uge i64 %t186, %t188 - br i1 %t189, label %range8529, label %inrange8530 -range8529: - call void @finch_panic_index(ptr @.str.5523, i64 5170, i64 %t186, i64 %t188) - unreachable -inrange8530: - %t190 = extractvalue { ptr, i64, i64 } %t187, 0 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t186 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store i64 -1, ptr %a193 - %t194 = load i64, ptr %t185 - %t195 = load ptr, ptr %t184 - store i64 0, ptr %a196 - br label %find.cond8531 -find.cond8531: - %t197 = load i64, ptr %a196 - %t198 = icmp slt i64 %t197, %t194 - br i1 %t198, label %find.body8532, label %find.end8535 -find.body8532: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i64 %t197 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - store { ptr, i64, i64 } %t192, ptr %a202 - %t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202) - %t204 = icmp ne i32 %t203, 0 - br i1 %t204, label %find.hit8533, label %find.next8534 -find.hit8533: - store i64 %t197, ptr %a193 - br label %find.end8535 -find.next8534: - %t205 = add i64 %t197, 1 - store i64 %t205, ptr %a196 - br label %find.cond8531 -find.end8535: - %t206 = load i64, ptr %a193 - store i64 %t206, ptr %a207 - %t208 = load i64, ptr %a207 - %t209 = icmp slt i64 %t208, 0 - br i1 %t209, label %then8536, label %endif8538 -then8536: - %t210 = load ptr, ptr %a1 - %t211 = load i64, ptr %a95 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range8539, label %inrange8540 -range8539: - call void @finch_panic_index(ptr @.str.5524, i64 5172, i64 %t211, i64 %t213) - unreachable -inrange8540: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.5525, i64 15, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load i64, ptr %a95 - %t225 = load { ptr, i64, i64 }, ptr %a4 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range8541, label %inrange8542 -range8541: - call void @finch_panic_index(ptr @.str.5526, i64 5172, i64 %t224, i64 %t226) - unreachable -inrange8542: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i64 %t224 - %t230 = load { ptr, i64, i64 }, ptr %t229 - store { ptr, i64, i64 } %t223, ptr %a232 - store { ptr, i64, i64 } %t230, ptr %a233 - call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) - store { ptr, i64, i64 } %t223, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.5527, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_drop(ptr %a241) - br label %endif8538 -endif8538: - %t242 = load i64, ptr %a207 - %t243 = load { ptr, i64, i64 }, ptr %a79 - %t244 = extractvalue { ptr, i64, i64 } %t243, 1 - %t245 = icmp uge i64 %t242, %t244 - br i1 %t245, label %range8543, label %inrange8544 -range8543: - call void @finch_panic_index(ptr @.str.5528, i64 5174, i64 %t242, i64 %t244) - unreachable -inrange8544: - %t246 = extractvalue { ptr, i64, i64 } %t243, 0 - %t247 = getelementptr inbounds i64, ptr %t246, i64 %t242 - %t248 = load i64, ptr %t247 - %t249 = icmp sge i64 %t248, 0 - br i1 %t249, label %then8545, label %endif8547 -then8545: - %t250 = load ptr, ptr %a1 - %t251 = load i64, ptr %a95 - %t252 = load { ptr, i64, i64 }, ptr %a3 - %t253 = extractvalue { ptr, i64, i64 } %t252, 1 - %t254 = icmp uge i64 %t251, %t253 - br i1 %t254, label %range8548, label %inrange8549 -range8548: - call void @finch_panic_index(ptr @.str.5529, i64 5175, i64 %t251, i64 %t253) - unreachable -inrange8549: - %t255 = extractvalue { ptr, i64, i64 } %t252, 0 - %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 - %t257 = load %S.ast.Node, ptr %t256 - %t258 = load i64, ptr %a95 - %t259 = load { ptr, i64, i64 }, ptr %a4 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range8550, label %inrange8551 -range8550: - call void @finch_panic_index(ptr @.str.5531, i64 5175, i64 %t258, i64 %t260) - unreachable -inrange8551: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 %t258 - %t264 = load { ptr, i64, i64 }, ptr %t263 - store { ptr, i64, i64 } { ptr @.str.5530, i64 11, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.5532, i64 16, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.fail(ptr %t250, %S.ast.Node %t257, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif8547 -endif8547: - %t275 = load i64, ptr %a95 - %t276 = load i64, ptr %a207 - %t277 = load { ptr, i64, i64 }, ptr %a79 - %t278 = extractvalue { ptr, i64, i64 } %t277, 1 - %t279 = icmp uge i64 %t276, %t278 - br i1 %t279, label %range8552, label %inrange8553 -range8552: - call void @finch_panic_index(ptr @.str.5533, i64 5177, i64 %t276, i64 %t278) - unreachable -inrange8553: - %t280 = extractvalue { ptr, i64, i64 } %t277, 0 - %t281 = getelementptr inbounds i64, ptr %t280, i64 %t276 - store i64 %t275, ptr %t281 - br label %for.step8512 -for.step8512: - %t282 = load i64, ptr %a95 - %t283 = add i64 %t282, 1 - store i64 %t283, ptr %a95 - br label %for.cond8510 -for.end8513: - store { ptr, i64, i64 } { ptr @.str.5534, i64 15, i64 0 }, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = icmp eq ptr %t285, null - br i1 %t286, label %panic8554, label %ok8555 -panic8554: - call void @finch_panic(ptr @.str.5535, i64 5180, ptr @.str.5536) - unreachable -ok8555: - %t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 11 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 - %t289 = load i64, ptr %t288 - store i64 %t289, ptr %a290 - %t291 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i32 0, i32 1 - %t293 = load i64, ptr %t292 - store i64 0, ptr %a294 - br label %for.cond8556 -for.cond8556: - %t295 = load i64, ptr %a294 - %t296 = icmp slt i64 %t295, %t293 - br i1 %t296, label %for.body8557, label %for.end8559 -for.body8557: - %t297 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 - %t298 = load i64, ptr %a294 - %t299 = load { ptr, i64, i64 }, ptr %t297 - %t300 = extractvalue { ptr, i64, i64 } %t299, 1 - %t301 = icmp uge i64 %t298, %t300 - br i1 %t301, label %range8560, label %inrange8561 -range8560: - call void @finch_panic_index(ptr @.str.5537, i64 5182, i64 %t298, i64 %t300) - unreachable -inrange8561: - %t302 = extractvalue { ptr, i64, i64 } %t299, 0 - %t303 = getelementptr inbounds %S.ast.Type, ptr %t302, i64 %t298 - %t304 = load %S.ast.Type, ptr %t303 - store %S.ast.Type %t304, ptr %a305 - call void @finch.copy.S_ast_Type(ptr %a306, ptr %a305) - %t307 = load %S.ast.Type, ptr %a306 - store %S.ast.Type %t307, ptr %a308 - store %S.gen.Val zeroinitializer, ptr %a309 - %t310 = load i64, ptr %a294 - %t311 = load { ptr, i64, i64 }, ptr %a79 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range8562, label %inrange8563 -range8562: - call void @finch_panic_index(ptr @.str.5538, i64 5184, i64 %t310, i64 %t312) - unreachable -inrange8563: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds i64, ptr %t314, i64 %t310 - %t316 = load i64, ptr %t315 - %t317 = icmp sge i64 %t316, 0 - br i1 %t317, label %then8564, label %else8565 -then8564: - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load i64, ptr %a294 - %t321 = load { ptr, i64, i64 }, ptr %a79 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range8567, label %inrange8568 -range8567: - call void @finch_panic_index(ptr @.str.5539, i64 5185, i64 %t320, i64 %t322) - unreachable -inrange8568: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds i64, ptr %t324, i64 %t320 - %t326 = load i64, ptr %t325 - %t327 = load { ptr, i64, i64 }, ptr %a3 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range8569, label %inrange8570 -range8569: - call void @finch_panic_index(ptr @.str.5540, i64 5185, i64 %t326, i64 %t328) - unreachable -inrange8570: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - %t333 = load %S.ast.Type, ptr %a308 - %t334 = call %S.gen.Val @finch.gen.exprWant(ptr %t319, %S.ast.Node %t332, %S.ast.Type %t333) - %t335 = load %S.ast.Type, ptr %a308 - %t336 = load i64, ptr %a294 - %t337 = load { ptr, i64, i64 }, ptr %a79 - %t338 = extractvalue { ptr, i64, i64 } %t337, 1 - %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range8571, label %inrange8572 -range8571: - call void @finch_panic_index(ptr @.str.5541, i64 5185, i64 %t336, i64 %t338) - unreachable -inrange8572: - %t340 = extractvalue { ptr, i64, i64 } %t337, 0 - %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 - %t342 = load i64, ptr %t341 - %t343 = load { ptr, i64, i64 }, ptr %a3 - %t344 = extractvalue { ptr, i64, i64 } %t343, 1 - %t345 = icmp uge i64 %t342, %t344 - br i1 %t345, label %range8573, label %inrange8574 -range8573: - call void @finch_panic_index(ptr @.str.5542, i64 5185, i64 %t342, i64 %t344) - unreachable -inrange8574: - %t346 = extractvalue { ptr, i64, i64 } %t343, 0 - %t347 = getelementptr inbounds %S.ast.Node, ptr %t346, i64 %t342 - %t348 = load %S.ast.Node, ptr %t347 - %t349 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t350 = load i64, ptr %a294 - %t351 = load { ptr, i64, i64 }, ptr %t349 - %t352 = extractvalue { ptr, i64, i64 } %t351, 1 - %t353 = icmp uge i64 %t350, %t352 - br i1 %t353, label %range8575, label %inrange8576 -range8575: - call void @finch_panic_index(ptr @.str.5544, i64 5185, i64 %t350, i64 %t352) - unreachable -inrange8576: - %t354 = extractvalue { ptr, i64, i64 } %t351, 0 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i64 %t350 - %t356 = load { ptr, i64, i64 }, ptr %t355 - store { ptr, i64, i64 } { ptr @.str.5543, i64 11, i64 0 }, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t360, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.5545, i64 1, i64 0 }, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t360, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - %t366 = call %S.gen.Val @finch.gen.coerce(ptr %t318, %S.gen.Val %t334, %S.ast.Type %t335, %S.ast.Node %t348, { ptr, i64, i64 } %t365) - store %S.gen.Val %t334, ptr %a367 - call void @finch.drop.S_gen_Val(ptr %a367) - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t366, ptr %a309 - store %S.gen.Val %t369, ptr %a370 - call void @finch.drop.S_gen_Val(ptr %a370) - br label %endif8566 -else8565: - %t371 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 - %t372 = load i1, ptr %t371 - %t373 = xor i1 %t372, true - br label %logic.from8577 -logic.from8577: - br i1 %t373, label %logic.rhs8578, label %logic.end8579 -logic.rhs8578: - %t374 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t375 = load i64, ptr %a294 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range8580, label %inrange8581 -range8580: - call void @finch_panic_index(ptr @.str.5546, i64 5186, i64 %t375, i64 %t377) - unreachable -inrange8581: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.ast.Node, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.ast.Node, ptr %t380, i32 0, i32 9 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t381, i32 0, i32 1 - %t383 = load i64, ptr %t382 - %t384 = icmp sgt i64 %t383, 0 - br label %logic.rend8582 -logic.rend8582: - br label %logic.end8579 -logic.end8579: - %t385 = phi i1 [ false, %logic.from8577 ], [ %t384, %logic.rend8582 ] - br i1 %t385, label %then8583, label %else8584 -then8583: - %t386 = load ptr, ptr %a1 - %t387 = icmp eq ptr %t386, null - br i1 %t387, label %panic8586, label %ok8587 -panic8586: - call void @finch_panic(ptr @.str.5547, i64 5188, ptr @.str.5548) - unreachable -ok8587: - %t388 = getelementptr inbounds %S.gen.Gen, ptr %t386, i32 0, i32 10 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch.copy.arr_S_gen_Scope(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = icmp eq ptr %t394, null - br i1 %t395, label %panic8588, label %ok8589 -panic8588: - call void @finch_panic(ptr @.str.5549, i64 5189, ptr @.str.5550) - unreachable -ok8589: - %t396 = getelementptr inbounds %S.gen.Gen, ptr %t394, i32 0, i32 14 - %t397 = load { ptr, i64, i64 }, ptr %t396 - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_copy(ptr %a399, ptr %a398) - %t400 = load { ptr, i64, i64 }, ptr %a399 - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load ptr, ptr %a1 - %t403 = icmp eq ptr %t402, null - br i1 %t403, label %panic8590, label %ok8591 -panic8590: - call void @finch_panic(ptr @.str.5551, i64 5190, ptr @.str.5552) - unreachable -ok8591: - %t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 18 - %t405 = load { ptr, i64, i64 }, ptr %t404 - store { ptr, i64, i64 } %t405, ptr %a406 - call void @finch.copy.arr_str(ptr %a407, ptr %a406) - %t408 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t408, ptr %a409 - %t410 = load ptr, ptr %a1 - %t411 = icmp eq ptr %t410, null - br i1 %t411, label %panic8592, label %ok8593 -panic8592: - call void @finch_panic(ptr @.str.5553, i64 5191, ptr @.str.5554) - unreachable -ok8593: - %t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 19 - %t413 = load { ptr, i64, i64 }, ptr %t412 - store { ptr, i64, i64 } %t413, ptr %a414 - call void @finch.copy.arr_S_ast_Type(ptr %a415, ptr %a414) - %t416 = load { ptr, i64, i64 }, ptr %a415 - store { ptr, i64, i64 } %t416, ptr %a417 - %t418 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 - %t419 = load { ptr, i64, i64 }, ptr %t418 - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic8594, label %ok8595 -panic8594: - call void @finch_panic(ptr @.str.5555, i64 5192, ptr @.str.5556) - unreachable -ok8595: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 18 - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch.copy.arr_str(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t425, ptr %t422 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch.drop.arr_str(ptr %a427) - %t428 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 - %t429 = load { ptr, i64, i64 }, ptr %t428 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic8596, label %ok8597 -panic8596: - call void @finch_panic(ptr @.str.5557, i64 5193, ptr @.str.5558) - unreachable -ok8597: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 19 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch.copy.arr_S_ast_Type(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch.drop.arr_S_ast_Type(ptr %a437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - %t439 = load { ptr, i64, i64 }, ptr %a438 - %t440 = load ptr, ptr %a1 - %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic8598, label %ok8599 -panic8598: - call void @finch_panic(ptr @.str.5559, i64 5195, ptr @.str.5560) - unreachable -ok8599: - %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 10 - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch.copy.arr_S_gen_Scope(ptr %a444, ptr %a443) - %t445 = load { ptr, i64, i64 }, ptr %a444 - %t446 = load { ptr, i64, i64 }, ptr %t442 - store { ptr, i64, i64 } %t445, ptr %t442 - store { ptr, i64, i64 } %t446, ptr %a447 - call void @finch.drop.arr_S_gen_Scope(ptr %a447) - %t448 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t448) - %t449 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t450 = load { ptr, i64, i64 }, ptr %t449 - %t451 = load ptr, ptr %a1 - %t452 = icmp eq ptr %t451, null - br i1 %t452, label %panic8600, label %ok8601 -panic8600: - call void @finch_panic(ptr @.str.5561, i64 5197, ptr @.str.5562) - unreachable -ok8601: - %t453 = getelementptr inbounds %S.gen.Gen, ptr %t451, i32 0, i32 14 - store { ptr, i64, i64 } %t450, ptr %a454 - call void @finch_str_copy(ptr %a455, ptr %a454) - %t456 = load { ptr, i64, i64 }, ptr %a455 - %t457 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t456, ptr %t453 - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - %t459 = load ptr, ptr %a1 - %t460 = load ptr, ptr %a1 - %t461 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t462 = load i64, ptr %a294 - %t463 = load { ptr, i64, i64 }, ptr %t461 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = icmp uge i64 %t462, %t464 - br i1 %t465, label %range8602, label %inrange8603 -range8602: - call void @finch_panic_index(ptr @.str.5563, i64 5198, i64 %t462, i64 %t464) - unreachable -inrange8603: - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = getelementptr inbounds %S.ast.Node, ptr %t466, i64 %t462 - %t468 = getelementptr inbounds %S.ast.Node, ptr %t467, i32 0, i32 9 - %t469 = load { ptr, i64, i64 }, ptr %t468 - %t470 = extractvalue { ptr, i64, i64 } %t469, 1 - %t471 = icmp uge i64 0, %t470 - br i1 %t471, label %range8604, label %inrange8605 -range8604: - call void @finch_panic_index(ptr @.str.5564, i64 5198, i64 0, i64 %t470) - unreachable -inrange8605: - %t472 = extractvalue { ptr, i64, i64 } %t469, 0 - %t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 0 - %t474 = load %S.ast.Node, ptr %t473 - %t475 = load %S.ast.Type, ptr %a308 - %t476 = call %S.gen.Val @finch.gen.exprWant(ptr %t460, %S.ast.Node %t474, %S.ast.Type %t475) - %t477 = load %S.ast.Type, ptr %a308 - %t478 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t479 = load i64, ptr %a294 - %t480 = load { ptr, i64, i64 }, ptr %t478 - %t481 = extractvalue { ptr, i64, i64 } %t480, 1 - %t482 = icmp uge i64 %t479, %t481 - br i1 %t482, label %range8606, label %inrange8607 -range8606: - call void @finch_panic_index(ptr @.str.5565, i64 5198, i64 %t479, i64 %t481) - unreachable -inrange8607: - %t483 = extractvalue { ptr, i64, i64 } %t480, 0 - %t484 = getelementptr inbounds %S.ast.Node, ptr %t483, i64 %t479 - %t485 = getelementptr inbounds %S.ast.Node, ptr %t484, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range8608, label %inrange8609 -range8608: - call void @finch_panic_index(ptr @.str.5566, i64 5198, i64 0, i64 %t487) - unreachable -inrange8609: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t493 = load i64, ptr %a294 - %t494 = load { ptr, i64, i64 }, ptr %t492 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 %t493, %t495 - br i1 %t496, label %range8610, label %inrange8611 -range8610: - call void @finch_panic_index(ptr @.str.5568, i64 5198, i64 %t493, i64 %t495) - unreachable -inrange8611: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t493 - %t499 = load { ptr, i64, i64 }, ptr %t498 - store { ptr, i64, i64 } { ptr @.str.5567, i64 16, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5569, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call %S.gen.Val @finch.gen.coerce(ptr %t459, %S.gen.Val %t476, %S.ast.Type %t477, %S.ast.Node %t491, { ptr, i64, i64 } %t508) - store %S.gen.Val %t476, ptr %a510 - call void @finch.drop.S_gen_Val(ptr %a510) - store { ptr, i64, i64 } %t508, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t509, ptr %a309 - store %S.gen.Val %t512, ptr %a513 - call void @finch.drop.S_gen_Val(ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a401 - %t515 = load ptr, ptr %a1 - %t516 = icmp eq ptr %t515, null - br i1 %t516, label %panic8612, label %ok8613 -panic8612: - call void @finch_panic(ptr @.str.5570, i64 5199, ptr @.str.5571) - unreachable -ok8613: - %t517 = getelementptr inbounds %S.gen.Gen, ptr %t515, i32 0, i32 14 - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_copy(ptr %a519, ptr %a518) - %t520 = load { ptr, i64, i64 }, ptr %a519 - %t521 = load { ptr, i64, i64 }, ptr %t517 - store { ptr, i64, i64 } %t520, ptr %t517 - store { ptr, i64, i64 } %t521, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a409 - %t524 = load ptr, ptr %a1 - %t525 = icmp eq ptr %t524, null - br i1 %t525, label %panic8614, label %ok8615 -panic8614: - call void @finch_panic(ptr @.str.5572, i64 5200, ptr @.str.5573) - unreachable -ok8615: - %t526 = getelementptr inbounds %S.gen.Gen, ptr %t524, i32 0, i32 18 - store { ptr, i64, i64 } %t523, ptr %a527 - call void @finch.copy.arr_str(ptr %a528, ptr %a527) - %t529 = load { ptr, i64, i64 }, ptr %a528 - %t530 = load { ptr, i64, i64 }, ptr %t526 - store { ptr, i64, i64 } %t529, ptr %t526 - store { ptr, i64, i64 } %t530, ptr %a531 - call void @finch.drop.arr_str(ptr %a531) - %t532 = load { ptr, i64, i64 }, ptr %a417 - %t533 = load ptr, ptr %a1 - %t534 = icmp eq ptr %t533, null - br i1 %t534, label %panic8616, label %ok8617 -panic8616: - call void @finch_panic(ptr @.str.5574, i64 5201, ptr @.str.5575) - unreachable -ok8617: - %t535 = getelementptr inbounds %S.gen.Gen, ptr %t533, i32 0, i32 19 - store { ptr, i64, i64 } %t532, ptr %a536 - call void @finch.copy.arr_S_ast_Type(ptr %a537, ptr %a536) - %t538 = load { ptr, i64, i64 }, ptr %a537 - %t539 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t538, ptr %t535 - store { ptr, i64, i64 } %t539, ptr %a540 - call void @finch.drop.arr_S_ast_Type(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a393 - %t542 = load ptr, ptr %a1 - %t543 = icmp eq ptr %t542, null - br i1 %t543, label %panic8618, label %ok8619 -panic8618: - call void @finch_panic(ptr @.str.5576, i64 5202, ptr @.str.5577) - unreachable -ok8619: - %t544 = getelementptr inbounds %S.gen.Gen, ptr %t542, i32 0, i32 10 - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch.copy.arr_S_gen_Scope(ptr %a546, ptr %a545) - %t547 = load { ptr, i64, i64 }, ptr %a546 - %t548 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t547, ptr %t544 - store { ptr, i64, i64 } %t548, ptr %a549 - call void @finch.drop.arr_S_gen_Scope(ptr %a549) - call void @finch.drop.arr_S_gen_Scope(ptr %a438) - call void @finch.drop.arr_S_ast_Type(ptr %a417) - call void @finch.drop.arr_str(ptr %a409) - call void @finch_str_drop(ptr %a401) - call void @finch.drop.arr_S_gen_Scope(ptr %a393) - br label %endif8585 -else8584: - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -endif8585: - br label %endif8566 -endif8566: - %t550 = load ptr, ptr %a1 - %t551 = load %S.gen.Val, ptr %a309 - %t552 = call { ptr, i64, i64 } @finch.gen.own(ptr %t550, %S.gen.Val %t551) - store { ptr, i64, i64 } %t552, ptr %a553 - %t554 = load ptr, ptr %a1 - %t555 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t555, ptr %a556 - call void @finch_str_copy(ptr %a557, ptr %a556) - %t558 = load { ptr, i64, i64 }, ptr %a557 - %t559 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t558, 0 - %t560 = load %S.ast.Type, ptr %a308 - store %S.ast.Type %t560, ptr %a561 - call void @finch.copy.S_ast_Type(ptr %a562, ptr %a561) - %t563 = load %S.ast.Type, ptr %a562 - %t564 = insertvalue %S.gen.Val %t559, %S.ast.Type %t563, 1 - %t565 = insertvalue %S.gen.Val %t564, i1 true, 2 - call void @finch.gen.hold(ptr %t554, %S.gen.Val %t565) - store %S.gen.Val %t565, ptr %a566 - call void @finch.drop.S_gen_Val(ptr %a566) - %t567 = load ptr, ptr %a1 - %t568 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.5578, i64 12, i64 0 }, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - %t572 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t572, ptr %a574 - store { ptr, i64, i64 } { ptr @.str.5579, i64 1, i64 0 }, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - %t578 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t577, ptr %a580 - store { ptr, i64, i64 } %t578, ptr %a581 - call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581) - store { ptr, i64, i64 } %t577, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a579 - store { ptr, i64, i64 } %t583, ptr %a585 - store { ptr, i64, i64 } { ptr @.str.5580, i64 2, i64 0 }, ptr %a586 - call void @finch_str_concat(ptr %a584, ptr %a585, ptr %a586) - store { ptr, i64, i64 } %t583, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a584 - %t589 = load ptr, ptr %a1 - %t590 = load %S.ast.Type, ptr %a308 - %t591 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t589, %S.ast.Type %t590) - store { ptr, i64, i64 } %t588, ptr %a593 - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594) - store { ptr, i64, i64 } %t588, ptr %a595 - call void @finch_str_drop(ptr %a595) - store { ptr, i64, i64 } %t591, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t597, ptr %a599 - store { ptr, i64, i64 } { ptr @.str.5581, i64 1, i64 0 }, ptr %a600 - call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600) - store { ptr, i64, i64 } %t597, ptr %a601 - call void @finch_str_drop(ptr %a601) - %t602 = load { ptr, i64, i64 }, ptr %a598 - %t603 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t602, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - store { ptr, i64, i64 } %t602, ptr %a607 - call void @finch_str_drop(ptr %a607) - %t608 = load { ptr, i64, i64 }, ptr %a604 - store { ptr, i64, i64 } %t608, ptr %a610 - store { ptr, i64, i64 } { ptr @.str.5582, i64 2, i64 0 }, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t608, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3 - %t615 = load i64, ptr %a294 - %t616 = load { ptr, i64, i64 }, ptr %t614 - %t617 = extractvalue { ptr, i64, i64 } %t616, 1 - %t618 = icmp uge i64 %t615, %t617 - br i1 %t618, label %range8620, label %inrange8621 -range8620: - call void @finch_panic_index(ptr @.str.5583, i64 5208, i64 %t615, i64 %t617) - unreachable -inrange8621: - %t619 = extractvalue { ptr, i64, i64 } %t616, 0 - %t620 = getelementptr inbounds i64, ptr %t619, i64 %t615 - %t621 = load i64, ptr %t620 - call void @finch_str_from_int(ptr %a622, i64 %t621) - %t623 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t613, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t613, ptr %a627 - call void @finch_str_drop(ptr %a627) - store { ptr, i64, i64 } %t623, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a624 - %t630 = call { ptr, i64, i64 } @finch.gen.op(ptr %t567, { ptr, i64, i64 } %t629) - store { ptr, i64, i64 } %t629, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t630, ptr %a284 - store { ptr, i64, i64 } %t632, ptr %a633 - call void @finch_str_drop(ptr %a633) - call void @finch_str_drop(ptr %a553) - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -for.step8558: - %t634 = load i64, ptr %a294 - %t635 = add i64 %t634, 1 - store i64 %t635, ptr %a294 - br label %for.cond8556 -for.end8559: - %t636 = load ptr, ptr %a1 - %t637 = load i64, ptr %a290 - call void @finch.gen.heldEnd(ptr %t636, i64 %t637) - %t638 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t638, ptr %a639 - call void @finch_str_copy(ptr %a640, ptr %a639) - %t641 = load { ptr, i64, i64 }, ptr %a640 - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t641, 0 - %t643 = load %S.ast.Type, ptr %a61 - store %S.ast.Type %t643, ptr %a644 - call void @finch.copy.S_ast_Type(ptr %a645, ptr %a644) - %t646 = load %S.ast.Type, ptr %a645 - %t647 = insertvalue %S.gen.Val %t642, %S.ast.Type %t646, 1 - %t648 = load ptr, ptr %a1 - %t649 = load %S.ast.Type, ptr %a61 - %t650 = call i1 @finch.gen.owning(ptr %t648, %S.ast.Type %t649) - %t651 = insertvalue %S.gen.Val %t647, i1 %t650, 2 - call void @finch_str_drop(ptr %a284) - call void @finch.drop.arr_int(ptr %a79) - call void @finch_str_drop(ptr %a65) - call void @finch.drop.S_ast_Type(ptr %a61) - call void @finch.drop.S_ast_Node(ptr %a20) - call void @finch.drop.S_gen_StructDef(ptr %a19) - ret %S.gen.Val %t651 -} - -define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic8622, label %ok8623 -panic8622: - call void @finch_panic(ptr @.str.5584, i64 5218, ptr @.str.5585) - unreachable -ok8623: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then8624, label %endif8626 -then8624: - ret void -endif8626: - %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 %then8627, label %endif8629 -then8627: - %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.5586, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif8629 -endif8629: - call void @finch.drop.S_docs_Doc(ptr %a13) - 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 - %a17 = alloca i64, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca i64, align 16 - %a36 = alloca %S.ast.Node, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca i64, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca i64, align 16 - %a165 = alloca i64, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca i64, align 16 - %a184 = alloca %S.ast.Node, align 16 - %a185 = alloca %S.ast.Node, 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 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a238 = 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 - %a260 = alloca %S.gen.Ref, align 16 - %a266 = alloca i64, align 16 - %a270 = alloca %S.ast.Type, align 16 - %a271 = alloca %S.ast.Type, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca i64, align 16 - %a307 = alloca i64, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = 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 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca %S.gen.Val, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca %S.gen.Val, align 16 - %a372 = alloca %S.gen.Val, align 16 - %a374 = alloca %S.gen.Val, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a389 = alloca %S.gen.Val, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = 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 - %a435 = alloca i64, align 16 - %a438 = alloca i64, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = 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 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca %S.gen.Val, align 16 - %a497 = alloca %S.ast.Type, align 16 - %a498 = alloca %S.ast.Type, align 16 - %a500 = alloca %S.ast.Type, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca i1, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca %S.ast.Type, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a582 = alloca %S.ast.Type, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca i64, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca i64, align 16 - %a686 = alloca i64, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca i64, align 16 - %a719 = alloca %S.gen.FnSig, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a792 = 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 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a802 = 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 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = 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 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a903 = alloca { ptr, i64, i64 }, align 16 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca i64, align 16 - %a923 = alloca %S.gen.Var, 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 - %a935 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a969 = alloca %S.gen.Val, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - 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 %range8630, label %inrange8631 -range8630: - call void @finch_panic_index(ptr @.str.5587, i64 5228, i64 0, i64 %t5) - unreachable -inrange8631: - %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 ptr, ptr %a1 - %t15 = load %S.ast.Node, ptr %a13 - %t16 = call i64 @finch.gen.sumNamed(ptr %t14, %S.ast.Node %t15) - store i64 %t16, ptr %a17 - %t18 = load i64, ptr %a17 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then8632, label %endif8634 -then8632: - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - store i64 1, ptr %a24 - br label %for.cond8635 -for.cond8635: - %t25 = load i64, ptr %a24 - %t26 = icmp slt i64 %t25, %t23 - br i1 %t26, label %for.body8636, label %for.end8638 -for.body8636: - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t29 = load i64, ptr %a24 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range8639, label %inrange8640 -range8639: - call void @finch_panic_index(ptr @.str.5588, i64 5233, i64 %t29, i64 %t31) - unreachable -inrange8640: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t29 - %t35 = load %S.ast.Node, ptr %t34 - store %S.ast.Node %t35, ptr %a36 - call void @finch.copy.S_ast_Node(ptr %a37, ptr %a36) - %t38 = load %S.ast.Node, ptr %a37 - %t39 = load i64, ptr %t27 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t40, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %a20 - %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39 - store %S.ast.Node %t38, ptr %t42 - store i64 %t40, ptr %t27 - br label %for.step8637 -for.step8637: - %t43 = load i64, ptr %a24 - %t44 = add i64 %t43, 1 - store i64 %t44, ptr %a24 - br label %for.cond8635 -for.end8638: - %t45 = load ptr, ptr %a1 - %t46 = load i64, ptr %a17 - %t47 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = load { ptr, i64, i64 }, ptr %a20 - %t50 = load %S.ast.Node, ptr %a2 - %t51 = call %S.gen.Val @finch.gen.sumMake(ptr %t45, i64 %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t49, %S.ast.Node %t50) - call void @finch.drop.arr_S_ast_Node(ptr %a20) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t51 -endif8634: - %t52 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.5589, i64 3, i64 0 }, ptr %a55 - %t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55) - %t57 = icmp ne i32 %t56, 0 - br label %logic.from8641 -logic.from8641: - br i1 %t57, label %logic.rhs8642, label %logic.end8643 -logic.rhs8642: - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = call i64 @finch.gen.lookup(ptr %t58, { ptr, i64, i64 } %t60) - %t62 = icmp slt i64 %t61, 0 - br label %logic.rend8644 -logic.rend8644: - br label %logic.end8643 -logic.end8643: - %t63 = phi i1 [ false, %logic.from8641 ], [ %t62, %logic.rend8644 ] - br i1 %t63, label %then8645, label %endif8647 -then8645: - %t64 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %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 - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a69 - %t72 = call i1 @finch.gen.imports(ptr %t70, { ptr, i64, i64 } %t71) - %t73 = xor i1 %t72, true - br i1 %t73, label %then8648, label %endif8650 -then8648: - %t74 = load ptr, ptr %a1 - %t75 = load %S.ast.Node, ptr %a13 - %t76 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5590, i64 38, 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.5591, i64 32, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.5592, i64 13, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif8650 -endif8650: - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - %t102 = call i64 @finch.gen.findFn(ptr %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t101) - store i64 %t102, ptr %a103 - %t104 = load i64, ptr %a103 - %t105 = icmp sge i64 %t104, 0 - br i1 %t105, label %then8651, label %endif8653 -then8651: - %t106 = load ptr, ptr %a1 - %t107 = load i64, ptr %a103 - %t108 = load %S.ast.Node, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.5593, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t113, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t113, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = call %S.gen.Val @finch.gen.callFn(ptr %t106, i64 %t107, %S.ast.Node %t108, i64 1, { ptr, i64, i64 } %t120, { ptr, i64, i64 } { ptr @.str.5594, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5595, i64 0, i64 0 }) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t121 -endif8653: - %t123 = load ptr, ptr %a1 - %t124 = load { ptr, i64, i64 }, ptr %a69 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = call i64 @finch.gen.findTemplate(ptr %t123, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } { ptr @.str.5596, i64 0, i64 0 }, i1 false) - store i64 %t127, ptr %a128 - %t129 = load i64, ptr %a128 - %t130 = icmp sge i64 %t129, 0 - br i1 %t130, label %then8654, label %endif8656 -then8654: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = load i64, ptr %a128 - %t134 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5597, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t138, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t138, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = call %S.gen.Val @finch.gen.genericCall(ptr %t131, %S.ast.Node %t132, i64 %t133, i64 1, { ptr, i64, i64 } %t145) - store { ptr, i64, i64 } %t145, ptr %a147 - call void @finch_str_drop(ptr %a147) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t146 -endif8656: - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a69 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %t150 - %t152 = call i64 @finch.gen.findEnum(ptr %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t151) - store i64 %t152, ptr %a153 - %t154 = load i64, ptr %a153 - %t155 = icmp sge i64 %t154, 0 - br i1 %t155, label %then8657, label %endif8659 -then8657: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a2 - %t158 = load i64, ptr %a153 - %t159 = call %S.gen.Val @finch.gen.enumFrom(ptr %t156, %S.ast.Node %t157, i64 %t158) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t159 -endif8659: - %t160 = load ptr, ptr %a1 - %t161 = load { ptr, i64, i64 }, ptr %a69 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = call i64 @finch.gen.findStruct(ptr %t160, { ptr, i64, i64 } %t161, { ptr, i64, i64 } %t163) - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a165 - %t167 = icmp sge i64 %t166, 0 - br i1 %t167, label %then8660, label %endif8662 -then8660: - store { ptr, i64, i64 } zeroinitializer, ptr %a168 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - store i64 1, ptr %a172 - br label %for.cond8663 -for.cond8663: - %t173 = load i64, ptr %a172 - %t174 = icmp slt i64 %t173, %t171 - br i1 %t174, label %for.body8664, label %for.end8666 -for.body8664: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t176 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t177 = load i64, ptr %a172 - %t178 = load { ptr, i64, i64 }, ptr %t176 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range8667, label %inrange8668 -range8667: - call void @finch_panic_index(ptr @.str.5598, i64 5258, i64 %t177, i64 %t179) - unreachable -inrange8668: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds %S.ast.Node, ptr %t181, i64 %t177 - %t183 = load %S.ast.Node, ptr %t182 - store %S.ast.Node %t183, ptr %a184 - call void @finch.copy.S_ast_Node(ptr %a185, ptr %a184) - %t186 = load %S.ast.Node, ptr %a185 - %t187 = load i64, ptr %t175 - %t188 = add i64 %t187, 1 - call void @finch_arr_reserve(ptr %a168, i64 %t188, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t189 = load ptr, ptr %a168 - %t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187 - store %S.ast.Node %t186, ptr %t190 - store i64 %t188, ptr %t175 - br label %for.step8665 -for.step8665: - %t191 = load i64, ptr %a172 - %t192 = add i64 %t191, 1 - store i64 %t192, ptr %a172 - br label %for.cond8663 -for.end8666: - %t193 = load ptr, ptr %a1 - %t194 = load i64, ptr %a165 - %t195 = load { ptr, i64, i64 }, ptr %a168 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load %S.ast.Node, ptr %a2 - %t199 = call %S.gen.Val @finch.gen.construct(ptr %t193, i64 %t194, { ptr, i64, i64 } %t195, { ptr, i64, i64 } %t197, %S.ast.Node %t198) - call void @finch.drop.arr_S_ast_Node(ptr %a168) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t199 -endif8662: - %t200 = load ptr, ptr %a1 - %t201 = load %S.ast.Node, ptr %a2 - %t202 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5599, i64 12, 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.5600, i64 35, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t211, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t211, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.5601, i64 1, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t200, %S.ast.Node %t201, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - call void @finch_str_drop(ptr %a69) - br label %endif8647 -endif8647: - %t225 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t226 = call ptr @finch_alloc(i64 %t225) - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 0 - store { ptr, i64, i64 } { ptr @.str.5602, i64 4, i64 0 }, ptr %t227 - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 1 - store { ptr, i64, i64 } { ptr @.str.5603, i64 3, i64 0 }, ptr %t228 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 2 - store { ptr, i64, i64 } { ptr @.str.5604, i64 6, i64 0 }, ptr %t229 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 3 - store { ptr, i64, i64 } { ptr @.str.5605, i64 6, i64 0 }, ptr %t230 - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 4 - store { ptr, i64, i64 } { ptr @.str.5606, i64 5, i64 0 }, ptr %t231 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 5 - store { ptr, i64, i64 } { ptr @.str.5607, i64 6, i64 0 }, ptr %t232 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 6 - store { ptr, i64, i64 } { ptr @.str.5608, i64 4, i64 0 }, ptr %t233 - %t234 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 7 - store { ptr, i64, i64 } { ptr @.str.5609, i64 7, i64 0 }, ptr %t234 - %t235 = insertvalue { ptr, i64, i64 } undef, ptr %t226, 0 - %t236 = insertvalue { ptr, i64, i64 } %t235, i64 8, 1 - %t237 = insertvalue { ptr, i64, i64 } %t236, i64 8, 2 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = load %S.ast.Node, ptr %a13 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, 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 %a238 - store i64 0, ptr %a247 - br label %find.cond8669 -find.cond8669: - %t248 = load i64, ptr %a247 - %t249 = icmp slt i64 %t248, %t245 - br i1 %t249, label %find.body8670, label %find.end8673 -find.body8670: - %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.hit8671, label %find.next8672 -find.hit8671: - store i64 %t248, ptr %a244 - br label %find.end8673 -find.next8672: - %t256 = add i64 %t248, 1 - store i64 %t256, ptr %a247 - br label %find.cond8669 -find.end8673: - %t257 = load i64, ptr %a244 - %t258 = icmp sge i64 %t257, 0 - %t259 = call %S.gen.Ref @finch.gen.ref(ptr %t239, %S.ast.Node %t240, i1 %t258) - store %S.gen.Ref %t259, ptr %a260 - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic8674, label %ok8675 -panic8674: - call void @finch_panic(ptr @.str.5610, i64 5266, ptr @.str.5611) - unreachable -ok8675: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - store i64 %t265, ptr %a266 - %t267 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t268 = getelementptr inbounds %S.gen.Val, ptr %t267, i32 0, i32 1 - %t269 = load %S.ast.Type, ptr %t268 - store %S.ast.Type %t269, ptr %a270 - call void @finch.copy.S_ast_Type(ptr %a271, ptr %a270) - %t272 = load %S.ast.Type, ptr %a271 - store %S.ast.Type %t272, ptr %a273 - %t274 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t275 = load i1, ptr %t274 - br i1 %t275, label %then8676, label %endif8678 -then8676: - %t276 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t277 = getelementptr inbounds %S.gen.Place, ptr %t276, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t281, ptr %a273 - store %S.ast.Type %t282, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - br label %endif8678 -endif8678: - %t284 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - store { ptr, i64, i64 } { ptr @.str.5612, i64 5, i64 0 }, ptr %a287 - %t288 = call i32 @finch_str_eq(ptr %a286, ptr %a287) - %t289 = icmp ne i32 %t288, 0 - br i1 %t289, label %then8679, label %endif8681 -then8679: - store { ptr, i64, i64 } { ptr @.str.5613, i64 0, i64 0 }, ptr %a290 - %t291 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t292 = load i1, ptr %t291 - br i1 %t292, label %then8682, label %else8683 -then8682: - %t293 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t294 = getelementptr inbounds %S.gen.Place, ptr %t293, 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 - %t299 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t298, ptr %a290 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_drop(ptr %a300) - br label %endif8684 -else8683: - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t302 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store i64 -1, ptr %a304 - %t305 = load i64, ptr %t301 - %t306 = load ptr, ptr %a238 - store i64 0, ptr %a307 - br label %find.cond8685 -find.cond8685: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t305 - br i1 %t309, label %find.body8686, label %find.end8689 -find.body8686: - %t310 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 %t308 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } %t303, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br i1 %t315, label %find.hit8687, label %find.next8688 -find.hit8687: - store i64 %t308, ptr %a304 - br label %find.end8689 -find.next8688: - %t316 = add i64 %t308, 1 - store i64 %t316, ptr %a307 - br label %find.cond8685 -find.end8689: - %t317 = load i64, ptr %a304 - %t318 = icmp sge i64 %t317, 0 - br i1 %t318, label %then8690, label %endif8692 -then8690: - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Node, ptr %a2 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.5614, i64 63, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a323 - call void @finch.gen.fail(ptr %t319, %S.ast.Node %t320, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif8692 -endif8692: - %t328 = load ptr, ptr %a1 - %t329 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t330 = load %S.gen.Val, ptr %t329 - %t331 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t328, %S.gen.Val %t330) - %t332 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t331, ptr %a290 - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t335 = getelementptr inbounds %S.gen.Val, ptr %t334, i32 0, i32 2 - %t336 = load i1, ptr %t335 - br i1 %t336, label %then8693, label %endif8695 -then8693: - %t337 = load ptr, ptr %a1 - %t338 = load { ptr, i64, i64 }, ptr %a290 - %t339 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t337, { ptr, i64, i64 } %t338, %S.ast.Type %t339) - br label %endif8695 -endif8695: - br label %endif8684 -endif8684: - %t340 = load ptr, ptr %a1 - %t341 = load %S.ast.Node, ptr %a2 - %t342 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.gen.noteMethod(ptr %t340, %S.ast.Node %t341, { ptr, i64, i64 } %t342) - store { ptr, i64, i64 } %t342, ptr %a343 - call void @finch.drop.arr_S_docs_Doc(ptr %a343) - %t344 = load ptr, ptr %a1 - %t345 = load %S.ast.Node, ptr %a2 - %t346 = load { ptr, i64, i64 }, ptr %a290 - %t347 = load %S.ast.Type, ptr %a273 - %t348 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t344, %S.ast.Node %t345, { ptr, i64, i64 } %t346, %S.ast.Type %t347) - store %S.gen.Val %t348, ptr %a349 - %t350 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t351 = load i1, ptr %t350 - %t352 = xor i1 %t351, true - br label %logic.from8696 -logic.from8696: - br i1 %t352, label %logic.rhs8697, label %logic.end8698 -logic.rhs8697: - %t353 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t354 = getelementptr inbounds %S.gen.Val, ptr %t353, i32 0, i32 2 - %t355 = load i1, ptr %t354 - br label %logic.rend8699 -logic.rend8699: - br label %logic.end8698 -logic.end8698: - %t356 = phi i1 [ false, %logic.from8696 ], [ %t355, %logic.rend8699 ] - br i1 %t356, label %then8700, label %endif8702 -then8700: - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a290 - %t359 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359) - br label %endif8702 -endif8702: - %t360 = load ptr, ptr %a1 - %t361 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t360, i64 %t361) - %t362 = load %S.gen.Val, ptr %a349 - call void @finch_str_drop(ptr %a290) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t362 -endif8681: - %t363 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5615, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then8703, label %endif8705 -then8703: - %t369 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t370 = load %S.gen.Val, ptr %t369 - store %S.gen.Val %t370, ptr %a371 - call void @finch.copy.S_gen_Val(ptr %a372, ptr %a371) - %t373 = load %S.gen.Val, ptr %a372 - store %S.gen.Val %t373, ptr %a374 - %t375 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t376 = load i1, ptr %t375 - br i1 %t376, label %then8706, label %endif8708 -then8706: - %t377 = load ptr, ptr %a1 - %t378 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t379 = getelementptr inbounds %S.gen.Place, ptr %t378, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call { ptr, i64, i64 } @finch.gen.load(ptr %t377, { ptr, i64, i64 } { ptr @.str.5616, i64 17, i64 0 }, { ptr, i64, i64 } %t380) - %t382 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t381, 0 - %t383 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t383, ptr %a384 - call void @finch.copy.S_ast_Type(ptr %a385, ptr %a384) - %t386 = load %S.ast.Type, ptr %a385 - %t387 = insertvalue %S.gen.Val %t382, %S.ast.Type %t386, 1 - %t388 = load %S.gen.Val, ptr %a374 - store %S.gen.Val %t387, ptr %a374 - store %S.gen.Val %t388, ptr %a389 - call void @finch.drop.S_gen_Val(ptr %a389) - br label %endif8708 -endif8708: - %t390 = load ptr, ptr %a1 - %t391 = load %S.ast.Node, ptr %a2 - %t392 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.gen.noteMethod(ptr %t390, %S.ast.Node %t391, { ptr, i64, i64 } %t392) - store { ptr, i64, i64 } %t392, ptr %a393 - call void @finch.drop.arr_S_docs_Doc(ptr %a393) - %t394 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t395 = load i1, ptr %t394 - %t396 = xor i1 %t395, true - br i1 %t396, label %then8709, label %endif8711 -then8709: - %t397 = load ptr, ptr %a1 - %t398 = load %S.gen.Val, ptr %a374 - call void @finch.gen.hold(ptr %t397, %S.gen.Val %t398) - br label %endif8711 -endif8711: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a2 - %t401 = load ptr, ptr %a1 - %t402 = load %S.gen.Val, ptr %a374 - %t403 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t401, %S.gen.Val %t402) - %t404 = call %S.gen.Val @finch.gen.strMethod(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t403) - store { ptr, i64, i64 } %t403, ptr %a405 - call void @finch_str_drop(ptr %a405) - store %S.gen.Val %t404, ptr %a406 - %t407 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t408 = load i1, ptr %t407 - %t409 = xor i1 %t408, true - br i1 %t409, label %then8712, label %endif8714 -then8712: - %t410 = load ptr, ptr %a1 - %t411 = load %S.gen.Val, ptr %a374 - call void @finch.gen.release(ptr %t410, %S.gen.Val %t411) - br label %endif8714 -endif8714: - %t412 = load ptr, ptr %a1 - %t413 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t412, i64 %t413) - %t414 = load %S.gen.Val, ptr %a406 - call void @finch.drop.S_gen_Val(ptr %a374) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t414 -endif8705: - %t415 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5617, i64 3, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then8715, label %endif8717 -then8715: - store { ptr, i64, i64 } { ptr @.str.5618, i64 0, i64 0 }, ptr %a421 - %t422 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t423 = load i1, ptr %t422 - br i1 %t423, label %then8718, label %else8719 -then8718: - %t424 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t425 = getelementptr inbounds %S.gen.Place, ptr %t424, i32 0, i32 0 - %t426 = load { ptr, i64, i64 }, ptr %t425 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch_str_copy(ptr %a428, ptr %a427) - %t429 = load { ptr, i64, i64 }, ptr %a428 - %t430 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t429, ptr %a421 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - br label %endif8720 -else8719: - %t432 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t433 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t434 = load { ptr, i64, i64 }, ptr %t433 - store i64 -1, ptr %a435 - %t436 = load i64, ptr %t432 - %t437 = load ptr, ptr %a238 - store i64 0, ptr %a438 - br label %find.cond8721 -find.cond8721: - %t439 = load i64, ptr %a438 - %t440 = icmp slt i64 %t439, %t436 - br i1 %t440, label %find.body8722, label %find.end8725 -find.body8722: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t437, i64 %t439 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br i1 %t446, label %find.hit8723, label %find.next8724 -find.hit8723: - store i64 %t439, ptr %a435 - br label %find.end8725 -find.next8724: - %t447 = add i64 %t439, 1 - store i64 %t447, ptr %a438 - br label %find.cond8721 -find.end8725: - %t448 = load i64, ptr %a435 - %t449 = icmp sge i64 %t448, 0 - br i1 %t449, label %then8726, label %endif8728 -then8726: - %t450 = load ptr, ptr %a1 - %t451 = load %S.ast.Node, ptr %a2 - %t452 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t453 = load { ptr, i64, i64 }, ptr %t452 - store { ptr, i64, i64 } %t453, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.5619, i64 61, i64 0 }, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a454 - call void @finch.gen.fail(ptr %t450, %S.ast.Node %t451, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - br label %endif8728 -endif8728: - %t459 = load ptr, ptr %a1 - %t460 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t461 = load %S.gen.Val, ptr %t460 - %t462 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t459, %S.gen.Val %t461) - %t463 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t462, ptr %a421 - store { ptr, i64, i64 } %t463, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t466 = getelementptr inbounds %S.gen.Val, ptr %t465, i32 0, i32 2 - %t467 = load i1, ptr %t466 - br i1 %t467, label %then8729, label %endif8731 -then8729: - %t468 = load ptr, ptr %a1 - %t469 = load { ptr, i64, i64 }, ptr %a421 - %t470 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t468, { ptr, i64, i64 } %t469, %S.ast.Type %t470) - br label %endif8731 -endif8731: - br label %endif8720 -endif8720: - %t471 = load ptr, ptr %a1 - %t472 = load %S.ast.Node, ptr %a2 - %t473 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.gen.noteMethod(ptr %t471, %S.ast.Node %t472, { ptr, i64, i64 } %t473) - store { ptr, i64, i64 } %t473, ptr %a474 - call void @finch.drop.arr_S_docs_Doc(ptr %a474) - %t475 = load ptr, ptr %a1 - %t476 = load %S.ast.Node, ptr %a2 - %t477 = load { ptr, i64, i64 }, ptr %a421 - %t478 = load %S.ast.Type, ptr %a273 - %t479 = call %S.gen.Val @finch.gen.mapMethod(ptr %t475, %S.ast.Node %t476, { ptr, i64, i64 } %t477, %S.ast.Type %t478) - store %S.gen.Val %t479, ptr %a480 - %t481 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t482 = load i1, ptr %t481 - %t483 = xor i1 %t482, true - br label %logic.from8732 -logic.from8732: - br i1 %t483, label %logic.rhs8733, label %logic.end8734 -logic.rhs8733: - %t484 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t485 = getelementptr inbounds %S.gen.Val, ptr %t484, i32 0, i32 2 - %t486 = load i1, ptr %t485 - br label %logic.rend8735 -logic.rend8735: - br label %logic.end8734 -logic.end8734: - %t487 = phi i1 [ false, %logic.from8732 ], [ %t486, %logic.rend8735 ] - br i1 %t487, label %then8736, label %endif8738 -then8736: - %t488 = load ptr, ptr %a1 - %t489 = load { ptr, i64, i64 }, ptr %a421 - %t490 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t488, { ptr, i64, i64 } %t489, %S.ast.Type %t490) - br label %endif8738 -endif8738: - %t491 = load ptr, ptr %a1 - %t492 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t491, i64 %t492) - %t493 = load %S.gen.Val, ptr %a480 - call void @finch_str_drop(ptr %a421) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t493 -endif8717: - %t494 = load ptr, ptr %a1 - %t495 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t494, i64 %t495) - %t496 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t496, ptr %a497 - call void @finch.copy.S_ast_Type(ptr %a498, ptr %a497) - %t499 = load %S.ast.Type, ptr %a498 - store %S.ast.Type %t499, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.5620, i64 0, i64 0 }, ptr %a501 - store i1 false, ptr %a502 - %t503 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t504 = load { ptr, i64, i64 }, ptr %t503 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5621, i64 3, i64 0 }, ptr %a506 - %t507 = call i32 @finch_str_eq(ptr %a505, ptr %a506) - %t508 = icmp ne i32 %t507, 0 - br label %logic.from8739 -logic.from8739: - br i1 %t508, label %logic.rhs8740, label %logic.end8741 -logic.rhs8740: - %t509 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i32 0, i32 1 - %t511 = load i64, ptr %t510 - %t512 = icmp sgt i64 %t511, 0 - br label %logic.rend8742 -logic.rend8742: - br label %logic.end8741 -logic.end8741: - %t513 = phi i1 [ false, %logic.from8739 ], [ %t512, %logic.rend8742 ] - br label %logic.from8743 -logic.from8743: - br i1 %t513, label %logic.rhs8744, label %logic.end8745 -logic.rhs8744: - %t514 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range8746, label %inrange8747 -range8746: - call void @finch_panic_index(ptr @.str.5622, i64 5333, i64 0, i64 %t516) - unreachable -inrange8747: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = getelementptr inbounds %S.ast.Type, ptr %t519, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5623, i64 6, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8748 -logic.rend8748: - br label %logic.end8745 -logic.end8745: - %t526 = phi i1 [ false, %logic.from8743 ], [ %t525, %logic.rend8748 ] - br i1 %t526, label %then8749, label %else8750 -then8749: - %t527 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t528 = getelementptr inbounds %S.gen.Val, ptr %t527, i32 0, i32 0 - %t529 = load { ptr, i64, i64 }, ptr %t528 - store { ptr, i64, i64 } %t529, ptr %a530 - call void @finch_str_copy(ptr %a531, ptr %a530) - %t532 = load { ptr, i64, i64 }, ptr %a531 - store { ptr, i64, i64 } %t532, ptr %a533 - %t534 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t535 = load i1, ptr %t534 - br i1 %t535, label %then8752, label %endif8754 -then8752: - %t536 = load ptr, ptr %a1 - %t537 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t538 = getelementptr inbounds %S.gen.Place, ptr %t537, i32 0, i32 0 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = call { ptr, i64, i64 } @finch.gen.load(ptr %t536, { ptr, i64, i64 } { ptr @.str.5624, i64 3, i64 0 }, { ptr, i64, i64 } %t539) - %t541 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t540, ptr %a533 - store { ptr, i64, i64 } %t541, ptr %a542 - call void @finch_str_drop(ptr %a542) - br label %endif8754 -endif8754: - %t543 = load ptr, ptr %a1 - %t544 = load ptr, ptr %a1 - %t545 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } { ptr @.str.5625, i64 12, i64 0 }, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a546 - store { ptr, i64, i64 } %t549, ptr %a551 - store { ptr, i64, i64 } { ptr @.str.5626, i64 6, i64 0 }, ptr %a552 - call void @finch_str_concat(ptr %a550, ptr %a551, ptr %a552) - store { ptr, i64, i64 } %t549, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a550 - %t555 = call { ptr, i64, i64 } @finch.gen.op(ptr %t544, { ptr, i64, i64 } %t554) - store { ptr, i64, i64 } %t554, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t558 = load { ptr, i64, i64 }, ptr %t557 - store { ptr, i64, i64 } { ptr @.str.5627, i64 8, i64 0 }, 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.5628, i64 20, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t543, { ptr, i64, i64 } %t555, { ptr, i64, i64 } %t567, %S.ast.Node %t568) - store { ptr, i64, i64 } %t555, ptr %a569 - call void @finch_str_drop(ptr %a569) - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t572 = load { ptr, i64, i64 }, ptr %t571 - %t573 = extractvalue { ptr, i64, i64 } %t572, 1 - %t574 = icmp uge i64 0, %t573 - br i1 %t574, label %range8755, label %inrange8756 -range8755: - call void @finch_panic_index(ptr @.str.5629, i64 5339, i64 0, i64 %t573) - unreachable -inrange8756: - %t575 = extractvalue { ptr, i64, i64 } %t572, 0 - %t576 = getelementptr inbounds %S.ast.Type, ptr %t575, i64 0 - %t577 = load %S.ast.Type, ptr %t576 - store %S.ast.Type %t577, ptr %a578 - call void @finch.copy.S_ast_Type(ptr %a579, ptr %a578) - %t580 = load %S.ast.Type, ptr %a579 - %t581 = load %S.ast.Type, ptr %a500 - store %S.ast.Type %t580, ptr %a500 - store %S.ast.Type %t581, ptr %a582 - call void @finch.drop.S_ast_Type(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t583, ptr %a584 - call void @finch_str_copy(ptr %a585, ptr %a584) - %t586 = load { ptr, i64, i64 }, ptr %a585 - %t587 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t586, ptr %a501 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_drop(ptr %a588) - call void @finch_str_drop(ptr %a533) - br label %endif8751 -else8750: - %t589 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t590 = load { ptr, i64, i64 }, ptr %t589 - store { ptr, i64, i64 } %t590, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.5630, i64 6, i64 0 }, ptr %a592 - %t593 = call i32 @finch_str_eq(ptr %a591, ptr %a592) - %t594 = icmp ne i32 %t593, 0 - br label %logic.from8757 -logic.from8757: - br i1 %t594, label %logic.end8759, label %logic.rhs8758 -logic.rhs8758: - %t595 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t596 = load { ptr, i64, i64 }, ptr %t595 - store { ptr, i64, i64 } %t596, ptr %a597 - store { ptr, i64, i64 } { ptr @.str.5631, i64 4, i64 0 }, ptr %a598 - %t599 = call i32 @finch_str_eq(ptr %a597, ptr %a598) - %t600 = icmp ne i32 %t599, 0 - br label %logic.rend8760 -logic.rend8760: - br label %logic.end8759 -logic.end8759: - %t601 = phi i1 [ true, %logic.from8757 ], [ %t600, %logic.rend8760 ] - br i1 %t601, label %then8761, label %endif8763 -then8761: - %t602 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t603 = load i1, ptr %t602 - br i1 %t603, label %then8764, label %else8765 -then8764: - %t604 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t605 = getelementptr inbounds %S.gen.Place, ptr %t604, i32 0, i32 0 - %t606 = load { ptr, i64, i64 }, ptr %t605 - store { ptr, i64, i64 } %t606, ptr %a607 - call void @finch_str_copy(ptr %a608, ptr %a607) - %t609 = load { ptr, i64, i64 }, ptr %a608 - %t610 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t609, ptr %a501 - store { ptr, i64, i64 } %t610, ptr %a611 - call void @finch_str_drop(ptr %a611) - br label %endif8766 -else8765: - %t612 = load ptr, ptr %a1 - %t613 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t614 = load %S.gen.Val, ptr %t613 - %t615 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t612, %S.gen.Val %t614) - %t616 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t615, ptr %a501 - store { ptr, i64, i64 } %t616, ptr %a617 - call void @finch_str_drop(ptr %a617) - store i1 true, ptr %a502 - br label %endif8766 -endif8766: - br label %endif8763 -endif8763: - br label %endif8751 -endif8751: - %t618 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - store { ptr, i64, i64 } %t619, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5632, i64 6, i64 0 }, ptr %a621 - %t622 = call i32 @finch_str_eq(ptr %a620, ptr %a621) - %t623 = icmp ne i32 %t622, 0 - br label %logic.from8767 -logic.from8767: - br i1 %t623, label %logic.end8769, label %logic.rhs8768 -logic.rhs8768: - %t624 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t625 = load { ptr, i64, i64 }, ptr %t624 - store { ptr, i64, i64 } %t625, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5633, i64 4, i64 0 }, ptr %a627 - %t628 = call i32 @finch_str_eq(ptr %a626, ptr %a627) - %t629 = icmp ne i32 %t628, 0 - br label %logic.rend8770 -logic.rend8770: - br label %logic.end8769 -logic.end8769: - %t630 = phi i1 [ true, %logic.from8767 ], [ %t629, %logic.rend8770 ] - br i1 %t630, label %then8771, label %endif8773 -then8771: - %t631 = load ptr, ptr %a1 - %t632 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t633 = load { ptr, i64, i64 }, ptr %t632 - %t634 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t635 = load { ptr, i64, i64 }, ptr %t634 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = call i64 @finch.gen.findMethod(ptr %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635, { ptr, i64, i64 } %t637) - store i64 %t638, ptr %a639 - %t640 = load i64, ptr %a639 - %t641 = icmp slt i64 %t640, 0 - br label %logic.from8774 -logic.from8774: - br i1 %t641, label %logic.rhs8775, label %logic.end8776 -logic.rhs8775: - %t642 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t643 = load { ptr, i64, i64 }, ptr %t642 - store { ptr, i64, i64 } %t643, ptr %a644 - store { ptr, i64, i64 } { ptr @.str.5634, i64 6, i64 0 }, ptr %a645 - %t646 = call i32 @finch_str_eq(ptr %a644, ptr %a645) - %t647 = icmp ne i32 %t646, 0 - br label %logic.rend8777 -logic.rend8777: - br label %logic.end8776 -logic.end8776: - %t648 = phi i1 [ false, %logic.from8774 ], [ %t647, %logic.rend8777 ] - br i1 %t648, label %then8778, label %endif8780 -then8778: - %t649 = load ptr, ptr %a1 - %t650 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t653 = load { ptr, i64, i64 }, ptr %t652 - %t654 = call i64 @finch.gen.findStruct(ptr %t649, { ptr, i64, i64 } %t651, { ptr, i64, i64 } %t653) - store i64 %t654, ptr %a655 - %t656 = load ptr, ptr %a1 - %t657 = icmp eq ptr %t656, null - br i1 %t657, label %panic8781, label %ok8782 -panic8781: - call void @finch_panic(ptr @.str.5635, i64 5353, ptr @.str.5636) - unreachable -ok8782: - %t658 = getelementptr inbounds %S.gen.Gen, ptr %t656, i32 0, i32 16 - %t659 = load i64, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %t658 - %t661 = extractvalue { ptr, i64, i64 } %t660, 1 - %t662 = icmp uge i64 %t659, %t661 - br i1 %t662, label %range8783, label %inrange8784 -range8783: - call void @finch_panic_index(ptr @.str.5637, i64 5353, i64 %t659, i64 %t661) - unreachable -inrange8784: - %t663 = extractvalue { ptr, i64, i64 } %t660, 0 - %t664 = getelementptr inbounds %S.gen.StructDef, ptr %t663, i64 %t659 - %t665 = getelementptr inbounds %S.gen.StructDef, ptr %t664, i32 0, i32 5 - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t667 = load i64, ptr %t666 - %t668 = icmp sgt i64 %t667, 0 - br i1 %t668, label %then8785, label %endif8787 -then8785: - %t669 = load ptr, ptr %a1 - %t670 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t671 = load { ptr, i64, i64 }, ptr %t670 - %t672 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t673 = load { ptr, i64, i64 }, ptr %t672 - %t674 = load ptr, ptr %a1 - %t675 = icmp eq ptr %t674, null - br i1 %t675, label %panic8788, label %ok8789 -panic8788: - call void @finch_panic(ptr @.str.5638, i64 5354, ptr @.str.5639) - unreachable -ok8789: - %t676 = getelementptr inbounds %S.gen.Gen, ptr %t674, i32 0, i32 16 - %t677 = load i64, ptr %a655 - %t678 = load { ptr, i64, i64 }, ptr %t676 - %t679 = extractvalue { ptr, i64, i64 } %t678, 1 - %t680 = icmp uge i64 %t677, %t679 - br i1 %t680, label %range8790, label %inrange8791 -range8790: - call void @finch_panic_index(ptr @.str.5640, i64 5354, i64 %t677, i64 %t679) - unreachable -inrange8791: - %t681 = extractvalue { ptr, i64, i64 } %t678, 0 - %t682 = getelementptr inbounds %S.gen.StructDef, ptr %t681, i64 %t677 - %t683 = getelementptr inbounds %S.gen.StructDef, ptr %t682, i32 0, i32 5 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findTemplate(ptr %t669, { ptr, i64, i64 } %t671, { ptr, i64, i64 } %t673, { ptr, i64, i64 } %t684, i1 false) - store i64 %t685, ptr %a686 - %t687 = load i64, ptr %a686 - %t688 = icmp sge i64 %t687, 0 - br i1 %t688, label %then8792, label %endif8794 -then8792: - %t689 = load ptr, ptr %a1 - %t690 = load i64, ptr %a686 - %t691 = load ptr, ptr %a1 - %t692 = icmp eq ptr %t691, null - br i1 %t692, label %panic8795, label %ok8796 -panic8795: - call void @finch_panic(ptr @.str.5641, i64 5356, ptr @.str.5642) - unreachable -ok8796: - %t693 = getelementptr inbounds %S.gen.Gen, ptr %t691, i32 0, i32 16 - %t694 = load i64, ptr %a655 - %t695 = load { ptr, i64, i64 }, ptr %t693 - %t696 = extractvalue { ptr, i64, i64 } %t695, 1 - %t697 = icmp uge i64 %t694, %t696 - br i1 %t697, label %range8797, label %inrange8798 -range8797: - call void @finch_panic_index(ptr @.str.5643, i64 5356, i64 %t694, i64 %t696) - unreachable -inrange8798: - %t698 = extractvalue { ptr, i64, i64 } %t695, 0 - %t699 = getelementptr inbounds %S.gen.StructDef, ptr %t698, i64 %t694 - %t700 = getelementptr inbounds %S.gen.StructDef, ptr %t699, i32 0, i32 7 - %t701 = load { ptr, i64, i64 }, ptr %t700 - %t702 = load %S.ast.Type, ptr %a500 - %t703 = load %S.ast.Node, ptr %a2 - %t704 = call i64 @finch.gen.instFn(ptr %t689, i64 %t690, { ptr, i64, i64 } %t701, %S.ast.Type %t702, %S.ast.Node %t703) - store i64 %t704, ptr %a639 - br label %endif8794 -endif8794: - br label %endif8787 -endif8787: - br label %endif8780 -endif8780: - %t705 = load i64, ptr %a639 - %t706 = icmp slt i64 %t705, 0 - br i1 %t706, label %then8799, label %endif8801 -then8799: - store { ptr, i64, i64 } zeroinitializer, ptr %a707 - %t708 = load ptr, ptr %a1 - %t709 = icmp eq ptr %t708, null - br i1 %t709, label %panic8802, label %ok8803 -panic8802: - call void @finch_panic(ptr @.str.5644, i64 5362, ptr @.str.5645) - unreachable -ok8803: - %t710 = getelementptr inbounds %S.gen.Gen, ptr %t708, i32 0, i32 15 - store i64 0, ptr %a711 - br label %each.cond8804 -each.cond8804: - %t712 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i32 0, i32 1 - %t713 = load i64, ptr %t712 - %t714 = load i64, ptr %a711 - %t715 = icmp slt i64 %t714, %t713 - br i1 %t715, label %each.body8805, label %each.end8807 -each.body8805: - %t716 = load ptr, ptr %t710 - %t717 = getelementptr inbounds %S.gen.FnSig, ptr %t716, i64 %t714 - %t718 = load %S.gen.FnSig, ptr %t717 - store %S.gen.FnSig %t718, ptr %a719 - %t720 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 2 - %t721 = load { ptr, i64, i64 }, ptr %t720 - %t722 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t723 = load { ptr, i64, i64 }, ptr %t722 - store { ptr, i64, i64 } %t721, ptr %a724 - store { ptr, i64, i64 } %t723, ptr %a725 - %t726 = call i32 @finch_str_eq(ptr %a724, ptr %a725) - %t727 = icmp ne i32 %t726, 0 - br label %logic.from8808 -logic.from8808: - br i1 %t727, label %logic.rhs8809, label %logic.end8810 -logic.rhs8809: - %t728 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 3 - %t729 = load { ptr, i64, i64 }, ptr %t728 - %t730 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t731 = load { ptr, i64, i64 }, ptr %t730 - store { ptr, i64, i64 } %t729, ptr %a732 - store { ptr, i64, i64 } %t731, ptr %a733 - %t734 = call i32 @finch_str_eq(ptr %a732, ptr %a733) - %t735 = icmp ne i32 %t734, 0 - br label %logic.rend8811 -logic.rend8811: - br label %logic.end8810 -logic.end8810: - %t736 = phi i1 [ false, %logic.from8808 ], [ %t735, %logic.rend8811 ] - br i1 %t736, label %then8812, label %endif8814 -then8812: - %t737 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t738 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 1 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_copy(ptr %a741, ptr %a740) - %t742 = load { ptr, i64, i64 }, ptr %a741 - %t743 = load i64, ptr %t737 - %t744 = add i64 %t743, 1 - call void @finch_arr_reserve(ptr %a707, i64 %t744, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t745 = load ptr, ptr %a707 - %t746 = getelementptr inbounds { ptr, i64, i64 }, ptr %t745, i64 %t743 - store { ptr, i64, i64 } %t742, ptr %t746 - store i64 %t744, ptr %t737 - br label %endif8814 -endif8814: - br label %each.step8806 -each.step8806: - %t747 = load i64, ptr %a711 - %t748 = add i64 %t747, 1 - store i64 %t748, ptr %a711 - br label %each.cond8804 -each.end8807: - %t749 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t750 = load i64, ptr %t749 - %t751 = icmp eq i64 %t750, 0 - br i1 %t751, label %then8815, label %endif8817 -then8815: - %t752 = load ptr, ptr %a1 - %t753 = load %S.ast.Node, ptr %a2 - %t754 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t755 = load { ptr, i64, i64 }, ptr %t754 - store { ptr, i64, i64 } { ptr @.str.5646, i64 4, i64 0 }, ptr %a757 - store { ptr, i64, i64 } %t755, ptr %a758 - call void @finch_str_concat(ptr %a756, ptr %a757, ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.5647, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = load %S.ast.Type, ptr %a500 - %t766 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t765) - store { ptr, i64, i64 } %t764, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t764, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.5648, i64 34, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t779 = load { ptr, i64, i64 }, ptr %t778 - store { ptr, i64, i64 } %t777, ptr %a781 - store { ptr, i64, i64 } %t779, ptr %a782 - call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) - store { ptr, i64, i64 } %t777, ptr %a783 - call void @finch_str_drop(ptr %a783) - %t784 = load { ptr, i64, i64 }, ptr %a780 - store { ptr, i64, i64 } %t784, ptr %a786 - store { ptr, i64, i64 } { ptr @.str.5649, i64 1, i64 0 }, ptr %a787 - call void @finch_str_concat(ptr %a785, ptr %a786, ptr %a787) - store { ptr, i64, i64 } %t784, ptr %a788 - call void @finch_str_drop(ptr %a788) - %t789 = load { ptr, i64, i64 }, ptr %a785 - %t790 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t791 = load { ptr, i64, i64 }, ptr %t790 - store { ptr, i64, i64 } %t789, ptr %a793 - store { ptr, i64, i64 } %t791, ptr %a794 - call void @finch_str_concat(ptr %a792, ptr %a793, ptr %a794) - store { ptr, i64, i64 } %t789, ptr %a795 - call void @finch_str_drop(ptr %a795) - %t796 = load { ptr, i64, i64 }, ptr %a792 - store { ptr, i64, i64 } %t796, ptr %a798 - store { ptr, i64, i64 } { ptr @.str.5650, i64 13, i64 0 }, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - store { ptr, i64, i64 } %t796, ptr %a800 - call void @finch_str_drop(ptr %a800) - %t801 = load { ptr, i64, i64 }, ptr %a797 - call void @finch.gen.fail(ptr %t752, %S.ast.Node %t753, { ptr, i64, i64 } %t801) - store { ptr, i64, i64 } %t801, ptr %a802 - call void @finch_str_drop(ptr %a802) - br label %endif8817 -endif8817: - %t803 = load ptr, ptr %a1 - %t804 = load %S.ast.Node, ptr %a2 - %t805 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t806 = load { ptr, i64, i64 }, ptr %t805 - store { ptr, i64, i64 } { ptr @.str.5651, i64 4, 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.5652, i64 1, i64 0 }, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - %t816 = load %S.ast.Type, ptr %a500 - %t817 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t816) - store { ptr, i64, i64 } %t815, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t815, ptr %a821 - call void @finch_str_drop(ptr %a821) - store { ptr, i64, i64 } %t817, ptr %a822 - call void @finch_str_drop(ptr %a822) - %t823 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t823, ptr %a825 - store { ptr, i64, i64 } { ptr @.str.5653, i64 16, i64 0 }, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t823, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - %t829 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t830 = load { ptr, i64, i64 }, ptr %t829 - store { ptr, i64, i64 } %t828, ptr %a832 - store { ptr, i64, i64 } %t830, ptr %a833 - call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) - store { ptr, i64, i64 } %t828, ptr %a834 - call void @finch_str_drop(ptr %a834) - %t835 = load { ptr, i64, i64 }, ptr %a831 - store { ptr, i64, i64 } %t835, ptr %a837 - store { ptr, i64, i64 } { ptr @.str.5654, i64 11, i64 0 }, ptr %a838 - call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838) - store { ptr, i64, i64 } %t835, ptr %a839 - call void @finch_str_drop(ptr %a839) - %t840 = load { ptr, i64, i64 }, ptr %a836 - %t841 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5655, i64 2, i64 0 }, ptr %a842 - call void @finch_str_join(ptr %a843, ptr %a707, ptr %a842) - %t844 = load { ptr, i64, i64 }, ptr %a843 - store { ptr, i64, i64 } %t840, ptr %a846 - store { ptr, i64, i64 } %t844, ptr %a847 - call void @finch_str_concat(ptr %a845, ptr %a846, ptr %a847) - store { ptr, i64, i64 } %t840, ptr %a848 - call void @finch_str_drop(ptr %a848) - store { ptr, i64, i64 } %t844, ptr %a849 - call void @finch_str_drop(ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5656, i64 1, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - call void @finch.gen.fail(ptr %t803, %S.ast.Node %t804, { ptr, i64, i64 } %t855) - store { ptr, i64, i64 } %t855, ptr %a856 - call void @finch_str_drop(ptr %a856) - call void @finch.drop.arr_str(ptr %a707) - br label %endif8801 -endif8801: - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic8818, label %ok8819 -panic8818: - call void @finch_panic(ptr @.str.5657, i64 5373, ptr @.str.5658) - unreachable -ok8819: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 15 - %t860 = load i64, ptr %a639 - %t861 = load { ptr, i64, i64 }, ptr %t859 - %t862 = extractvalue { ptr, i64, i64 } %t861, 1 - %t863 = icmp uge i64 %t860, %t862 - br i1 %t863, label %range8820, label %inrange8821 -range8820: - call void @finch_panic_index(ptr @.str.5659, i64 5373, i64 %t860, i64 %t862) - unreachable -inrange8821: - %t864 = extractvalue { ptr, i64, i64 } %t861, 0 - %t865 = getelementptr inbounds %S.gen.FnSig, ptr %t864, i64 %t860 - %t866 = getelementptr inbounds %S.gen.FnSig, ptr %t865, i32 0, i32 10 - %t867 = load i1, ptr %t866 - br label %logic.from8822 -logic.from8822: - br i1 %t867, label %logic.rhs8823, label %logic.end8824 -logic.rhs8823: - %t868 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t869 = load { ptr, i64, i64 }, ptr %t868 - store { ptr, i64, i64 } %t869, ptr %a870 - store { ptr, i64, i64 } { ptr @.str.5660, i64 6, i64 0 }, ptr %a871 - %t872 = call i32 @finch_str_eq(ptr %a870, ptr %a871) - %t873 = icmp ne i32 %t872, 0 - br label %logic.from8825 -logic.from8825: - br i1 %t873, label %logic.end8827, label %logic.rhs8826 -logic.rhs8826: - %t874 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t875 = load { ptr, i64, i64 }, ptr %t874 - store { ptr, i64, i64 } %t875, ptr %a876 - store { ptr, i64, i64 } { ptr @.str.5661, i64 4, i64 0 }, ptr %a877 - %t878 = call i32 @finch_str_eq(ptr %a876, ptr %a877) - %t879 = icmp ne i32 %t878, 0 - br label %logic.rend8828 -logic.rend8828: - br label %logic.end8827 -logic.end8827: - %t880 = phi i1 [ true, %logic.from8825 ], [ %t879, %logic.rend8828 ] - br label %logic.rend8829 -logic.rend8829: - br label %logic.end8824 -logic.end8824: - %t881 = phi i1 [ false, %logic.from8822 ], [ %t880, %logic.rend8829 ] - br i1 %t881, label %then8830, label %endif8832 -then8830: - %t882 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t883 = load i1, ptr %t882 - %t884 = xor i1 %t883, true - br i1 %t884, label %then8833, label %endif8835 -then8833: - %t885 = load ptr, ptr %a1 - %t886 = load %S.ast.Node, ptr %a2 - %t887 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t888 = load { ptr, i64, i64 }, ptr %t887 - store { ptr, i64, i64 } %t888, ptr %a890 - store { ptr, i64, i64 } { ptr @.str.5662, i64 28, i64 0 }, ptr %a891 - call void @finch_str_concat(ptr %a889, ptr %a890, ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a889 - %t893 = load %S.ast.Type, ptr %a500 - %t894 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t893) - store { ptr, i64, i64 } %t892, ptr %a896 - store { ptr, i64, i64 } %t894, ptr %a897 - call void @finch_str_concat(ptr %a895, ptr %a896, ptr %a897) - store { ptr, i64, i64 } %t892, ptr %a898 - call void @finch_str_drop(ptr %a898) - store { ptr, i64, i64 } %t894, ptr %a899 - call void @finch_str_drop(ptr %a899) - %t900 = load { ptr, i64, i64 }, ptr %a895 - store { ptr, i64, i64 } %t900, ptr %a902 - store { ptr, i64, i64 } { ptr @.str.5663, i64 30, i64 0 }, ptr %a903 - call void @finch_str_concat(ptr %a901, ptr %a902, ptr %a903) - store { ptr, i64, i64 } %t900, ptr %a904 - call void @finch_str_drop(ptr %a904) - %t905 = load { ptr, i64, i64 }, ptr %a901 - call void @finch.gen.fail(ptr %t885, %S.ast.Node %t886, { ptr, i64, i64 } %t905) - store { ptr, i64, i64 } %t905, ptr %a906 - call void @finch_str_drop(ptr %a906) - br label %endif8835 -endif8835: - %t907 = load %S.ast.Node, ptr %a13 - %t908 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t907) - store { ptr, i64, i64 } %t908, ptr %a909 - %t910 = getelementptr inbounds { ptr, i64, i64 }, ptr %a909, i32 0, i32 1 - %t911 = load i64, ptr %t910 - %t912 = icmp sgt i64 %t911, 0 - br i1 %t912, label %then8836, label %endif8838 -then8836: - %t913 = load ptr, ptr %a1 - %t914 = load { ptr, i64, i64 }, ptr %a909 - %t915 = call i64 @finch.gen.lookup(ptr %t913, { ptr, i64, i64 } %t914) - store i64 %t915, ptr %a916 - %t917 = load i64, ptr %a916 - %t918 = icmp sge i64 %t917, 0 - br label %logic.from8839 -logic.from8839: - br i1 %t918, label %logic.rhs8840, label %logic.end8841 -logic.rhs8840: - %t919 = load ptr, ptr %a1 - %t920 = load i64, ptr %a916 - %t921 = call %S.gen.Var @finch.gen.varAt(ptr %t919, i64 %t920) - %t922 = extractvalue %S.gen.Var %t921, 3 - store %S.gen.Var %t921, ptr %a923 - call void @finch.drop.S_gen_Var(ptr %a923) - br label %logic.rend8842 -logic.rend8842: - br label %logic.end8841 -logic.end8841: - %t924 = phi i1 [ false, %logic.from8839 ], [ %t922, %logic.rend8842 ] - br i1 %t924, label %then8843, label %endif8845 -then8843: - %t925 = load ptr, ptr %a1 - %t926 = load %S.ast.Node, ptr %a2 - %t927 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } { ptr @.str.5664, i64 19, i64 0 }, 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.5665, i64 18, i64 0 }, ptr %a934 - call void @finch_str_concat(ptr %a932, ptr %a933, ptr %a934) - store { ptr, i64, i64 } %t931, ptr %a935 - call void @finch_str_drop(ptr %a935) - %t936 = load { ptr, i64, i64 }, ptr %a932 - call void @finch.gen.fail(ptr %t925, %S.ast.Node %t926, { ptr, i64, i64 } %t936) - store { ptr, i64, i64 } %t936, ptr %a937 - call void @finch_str_drop(ptr %a937) - br label %endif8845 -endif8845: - br label %endif8838 -endif8838: - call void @finch_str_drop(ptr %a909) - br label %endif8832 -endif8832: - %t938 = load i1, ptr %a502 - br label %logic.from8846 -logic.from8846: - br i1 %t938, label %logic.rhs8847, label %logic.end8848 -logic.rhs8847: - %t939 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t940 = getelementptr inbounds %S.gen.Val, ptr %t939, i32 0, i32 2 - %t941 = load i1, ptr %t940 - br label %logic.rend8849 -logic.rend8849: - br label %logic.end8848 -logic.end8848: - %t942 = phi i1 [ false, %logic.from8846 ], [ %t941, %logic.rend8849 ] - br i1 %t942, label %then8850, label %endif8852 -then8850: - %t943 = load ptr, ptr %a1 - %t944 = load { ptr, i64, i64 }, ptr %a501 - %t945 = load %S.ast.Type, ptr %a500 - call void @finch.gen.holdAddr(ptr %t943, { ptr, i64, i64 } %t944, %S.ast.Type %t945) - br label %endif8852 -endif8852: - %t946 = load ptr, ptr %a1 - %t947 = load i64, ptr %a639 - %t948 = load %S.ast.Node, ptr %a2 - %t949 = load %S.ast.Type, ptr %a500 - %t950 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t949) - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5666, i64 1, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t957 = load { ptr, i64, i64 }, ptr %t956 - store { ptr, i64, i64 } %t955, ptr %a959 - store { ptr, i64, i64 } %t957, ptr %a960 - call void @finch_str_concat(ptr %a958, ptr %a959, ptr %a960) - store { ptr, i64, i64 } %t955, ptr %a961 - call void @finch_str_drop(ptr %a961) - %t962 = load { ptr, i64, i64 }, ptr %a958 - %t963 = load { ptr, i64, i64 }, ptr %a501 - %t964 = load %S.ast.Node, ptr %a13 - %t965 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t964) - %t966 = call %S.gen.Val @finch.gen.callFn(ptr %t946, i64 %t947, %S.ast.Node %t948, i64 1, { ptr, i64, i64 } %t962, { ptr, i64, i64 } %t963, { ptr, i64, i64 } %t965) - store { ptr, i64, i64 } %t962, ptr %a967 - call void @finch_str_drop(ptr %a967) - store { ptr, i64, i64 } %t965, ptr %a968 - call void @finch_str_drop(ptr %a968) - store %S.gen.Val %t966, ptr %a969 - %t970 = load i1, ptr %a502 - br label %logic.from8853 -logic.from8853: - br i1 %t970, label %logic.rhs8854, label %logic.end8855 -logic.rhs8854: - %t971 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t972 = getelementptr inbounds %S.gen.Val, ptr %t971, i32 0, i32 2 - %t973 = load i1, ptr %t972 - br label %logic.rend8856 -logic.rend8856: - br label %logic.end8855 -logic.end8855: - %t974 = phi i1 [ false, %logic.from8853 ], [ %t973, %logic.rend8856 ] - br label %logic.from8857 -logic.from8857: - br i1 %t974, label %logic.rhs8858, label %logic.end8859 -logic.rhs8858: - %t975 = load ptr, ptr %a1 - %t976 = load %S.ast.Type, ptr %a500 - %t977 = call i1 @finch.gen.owning(ptr %t975, %S.ast.Type %t976) - br label %logic.rend8860 -logic.rend8860: - br label %logic.end8859 -logic.end8859: - %t978 = phi i1 [ false, %logic.from8857 ], [ %t977, %logic.rend8860 ] - br i1 %t978, label %then8861, label %endif8863 -then8861: - %t979 = load ptr, ptr %a1 - %t980 = load { ptr, i64, i64 }, ptr %a501 - %t981 = load %S.ast.Type, ptr %a500 - call void @finch.gen.dropAt(ptr %t979, { ptr, i64, i64 } %t980, %S.ast.Type %t981) - br label %endif8863 -endif8863: - %t982 = load ptr, ptr %a1 - %t983 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t982, i64 %t983) - %t984 = load %S.gen.Val, ptr %a969 - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t984 -endif8773: - %t985 = load ptr, ptr %a1 - %t986 = load %S.ast.Node, ptr %a2 - %t987 = load %S.ast.Type, ptr %a273 - %t988 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t987) - store { ptr, i64, i64 } %t988, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.5667, i64 15, i64 0 }, ptr %a991 - call void @finch_str_concat(ptr %a989, ptr %a990, ptr %a991) - store { ptr, i64, i64 } %t988, ptr %a992 - call void @finch_str_drop(ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a989 - call void @finch.gen.fail(ptr %t985, %S.ast.Node %t986, { ptr, i64, i64 } %t993) - store { ptr, i64, i64 } %t993, ptr %a994 - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - 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 - %a35 = 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 - %a68 = alloca %S.gen.Val, align 16 - %a70 = alloca %S.gen.Val, align 16 - %a71 = 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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = 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 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.ast.Type, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.gen.Val, align 16 - %a315 = alloca %S.gen.Val, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %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 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca %S.ast.Type, align 16 - %a420 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.gen.Val, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca %S.ast.Type, align 16 - %a435 = alloca %S.ast.Type, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.gen.Val, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca %S.gen.Val, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.gen.Val, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca %S.gen.Val, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.gen.Val, align 16 - %a646 = alloca %S.gen.Val, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca %S.gen.Val, align 16 - %a792 = alloca %S.ast.Type, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca %S.gen.Val, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca %S.ast.Type, align 16 - %a889 = alloca %S.ast.Type, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca %S.gen.Val, align 16 - %a923 = alloca %S.ast.Type, align 16 - %a925 = alloca { ptr, i64, i64 }, align 16 - %a926 = alloca { ptr, i64, i64 }, align 16 - %a928 = alloca %S.gen.Val, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a936 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a995 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1034 = alloca { ptr, i64, i64 }, align 16 - %a1035 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca { ptr, i64, i64 }, align 16 - %a1046 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1052 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1057 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1082 = alloca { ptr, i64, i64 }, align 16 - %a1083 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca { ptr, i64, i64 }, align 16 - %a1087 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1092 = alloca { ptr, i64, i64 }, align 16 - %a1093 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1098 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1104 = alloca { ptr, i64, i64 }, align 16 - %a1105 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1160 = alloca %S.ast.Type, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca %S.gen.Val, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca %S.gen.Val, align 16 - %a1187 = alloca %S.ast.Type, align 16 - %a1189 = alloca { ptr, i64, i64 }, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca %S.gen.Val, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1200 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca { ptr, i64, i64 }, align 16 - %a1207 = alloca { ptr, i64, i64 }, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1214 = alloca { ptr, i64, i64 }, align 16 - %a1215 = alloca { ptr, i64, i64 }, align 16 - %a1216 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1219 = alloca { ptr, i64, i64 }, align 16 - %a1220 = alloca { ptr, i64, i64 }, align 16 - %a1221 = alloca { ptr, i64, i64 }, align 16 - %a1224 = alloca { ptr, i64, i64 }, align 16 - %a1225 = alloca { ptr, i64, i64 }, align 16 - %a1226 = alloca { ptr, i64, i64 }, align 16 - %a1227 = alloca { ptr, i64, i64 }, align 16 - %a1230 = alloca { ptr, i64, i64 }, align 16 - %a1231 = alloca { ptr, i64, i64 }, align 16 - %a1234 = alloca { ptr, i64, i64 }, align 16 - %a1235 = alloca { ptr, i64, i64 }, align 16 - %a1236 = alloca { ptr, i64, i64 }, align 16 - %a1238 = alloca { ptr, i64, i64 }, align 16 - %a1239 = alloca { ptr, i64, i64 }, align 16 - %a1240 = alloca { ptr, i64, i64 }, align 16 - %a1241 = alloca { ptr, i64, i64 }, align 16 - %a1244 = alloca { ptr, i64, i64 }, align 16 - %a1245 = alloca { ptr, i64, i64 }, align 16 - %a1246 = alloca { ptr, i64, i64 }, align 16 - %a1247 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1257 = alloca { ptr, i64, i64 }, align 16 - %a1258 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1261 = alloca { ptr, i64, i64 }, align 16 - %a1262 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1269 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1274 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1276 = alloca { ptr, i64, i64 }, align 16 - %a1278 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1281 = alloca { ptr, i64, i64 }, align 16 - %a1284 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca { ptr, i64, i64 }, align 16 - %a1286 = alloca { ptr, i64, i64 }, align 16 - %a1287 = alloca { ptr, i64, i64 }, align 16 - %a1290 = alloca { ptr, i64, i64 }, align 16 - %a1292 = alloca { ptr, i64, i64 }, align 16 - %a1295 = alloca { ptr, i64, i64 }, align 16 - %a1296 = alloca { ptr, i64, i64 }, align 16 - %a1297 = alloca { ptr, i64, i64 }, align 16 - %a1299 = alloca { ptr, i64, i64 }, align 16 - %a1300 = alloca { ptr, i64, i64 }, align 16 - %a1301 = alloca { ptr, i64, i64 }, align 16 - %a1302 = alloca { ptr, i64, i64 }, align 16 - %a1305 = alloca { ptr, i64, i64 }, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1307 = alloca { ptr, i64, i64 }, align 16 - %a1308 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1312 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1318 = alloca { ptr, i64, i64 }, align 16 - %a1319 = alloca { ptr, i64, i64 }, align 16 - %a1320 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1331 = alloca { ptr, i64, i64 }, align 16 - %a1333 = alloca { ptr, i64, i64 }, align 16 - %a1334 = alloca { ptr, i64, i64 }, align 16 - %a1335 = alloca { ptr, i64, i64 }, align 16 - %a1336 = alloca { ptr, i64, i64 }, align 16 - %a1341 = alloca { ptr, i64, i64 }, align 16 - %a1342 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1345 = alloca { ptr, i64, i64 }, align 16 - %a1347 = alloca { ptr, i64, i64 }, align 16 - %a1348 = alloca { ptr, i64, i64 }, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1352 = alloca { ptr, i64, i64 }, align 16 - %a1356 = alloca { ptr, i64, i64 }, align 16 - %a1360 = alloca { ptr, i64, i64 }, align 16 - %a1364 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1369 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1374 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1378 = alloca { ptr, i64, i64 }, align 16 - %a1379 = alloca { ptr, i64, i64 }, align 16 - %a1380 = alloca { ptr, i64, i64 }, align 16 - %a1382 = alloca { ptr, i64, i64 }, align 16 - %a1383 = alloca { ptr, i64, i64 }, align 16 - %a1384 = alloca { ptr, i64, i64 }, align 16 - %a1385 = alloca { ptr, i64, i64 }, align 16 - %a1393 = alloca { ptr, i64, i64 }, align 16 - %a1394 = alloca { ptr, i64, i64 }, align 16 - %a1395 = alloca { ptr, i64, i64 }, align 16 - %a1396 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1403 = alloca { ptr, i64, i64 }, align 16 - %a1404 = alloca { ptr, i64, i64 }, align 16 - %a1405 = alloca { ptr, i64, i64 }, align 16 - %a1407 = alloca { ptr, i64, i64 }, align 16 - %a1408 = alloca { ptr, i64, i64 }, align 16 - %a1409 = alloca { ptr, i64, i64 }, align 16 - %a1410 = alloca { ptr, i64, i64 }, align 16 - %a1413 = alloca { ptr, i64, i64 }, align 16 - %a1414 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca { ptr, i64, i64 }, align 16 - %a1416 = alloca { ptr, i64, i64 }, align 16 - %a1418 = alloca { ptr, i64, i64 }, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1421 = alloca { ptr, i64, i64 }, align 16 - %a1425 = alloca { ptr, i64, i64 }, align 16 - %a1426 = alloca { ptr, i64, i64 }, align 16 - %a1427 = alloca { ptr, i64, i64 }, align 16 - %a1429 = alloca { ptr, i64, i64 }, align 16 - %a1430 = alloca { ptr, i64, i64 }, align 16 - %a1431 = alloca { ptr, i64, i64 }, align 16 - %a1432 = alloca { ptr, i64, i64 }, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1442 = alloca { ptr, i64, i64 }, align 16 - %a1443 = alloca { ptr, i64, i64 }, align 16 - %a1446 = alloca { ptr, i64, i64 }, align 16 - %a1447 = alloca { ptr, i64, i64 }, align 16 - %a1448 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1450 = alloca { ptr, i64, i64 }, align 16 - %a1451 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca { ptr, i64, i64 }, align 16 - %a1455 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca %S.ast.Type, align 16 - %a1468 = alloca %S.ast.Type, align 16 - %a1473 = alloca { ptr, i64, i64 }, align 16 - %a1474 = alloca { ptr, i64, i64 }, align 16 - %a1481 = alloca { ptr, i64, i64 }, align 16 - %a1482 = alloca { ptr, i64, i64 }, align 16 - %a1484 = alloca { ptr, i64, i64 }, align 16 - %a1489 = alloca { ptr, i64, i64 }, align 16 - %a1490 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1505 = alloca { ptr, i64, i64 }, align 16 - %a1509 = alloca { ptr, i64, i64 }, align 16 - %a1513 = alloca { ptr, i64, i64 }, align 16 - %a1516 = alloca { ptr, i64, i64 }, align 16 - %a1517 = alloca { ptr, i64, i64 }, align 16 - %a1518 = alloca { ptr, i64, i64 }, align 16 - %a1520 = alloca { ptr, i64, i64 }, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1529 = alloca { ptr, i64, i64 }, align 16 - %a1531 = alloca { ptr, i64, i64 }, align 16 - %a1532 = alloca { ptr, i64, i64 }, align 16 - %a1533 = alloca { ptr, i64, i64 }, align 16 - %a1534 = alloca { ptr, i64, i64 }, align 16 - %a1539 = alloca { ptr, i64, i64 }, align 16 - %a1540 = alloca { ptr, i64, i64 }, align 16 - %a1541 = alloca { ptr, i64, i64 }, align 16 - %a1542 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca { ptr, i64, i64 }, align 16 - %a1545 = alloca { ptr, i64, i64 }, align 16 - %a1546 = alloca { ptr, i64, i64 }, align 16 - %a1547 = alloca { ptr, i64, i64 }, align 16 - %a1548 = alloca { ptr, i64, i64 }, align 16 - %a1551 = alloca { ptr, i64, i64 }, align 16 - %a1552 = alloca { ptr, i64, i64 }, align 16 - %a1553 = alloca { ptr, i64, i64 }, align 16 - %a1554 = alloca { ptr, i64, i64 }, align 16 - %a1556 = alloca { ptr, i64, i64 }, align 16 - %a1557 = alloca { ptr, i64, i64 }, align 16 - %a1558 = alloca { ptr, i64, i64 }, align 16 - %a1559 = alloca { ptr, i64, i64 }, align 16 - %a1561 = alloca { ptr, i64, i64 }, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1576 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range8864, label %inrange8865 -range8864: - call void @finch_panic_index(ptr @.str.5668, i64 5404, i64 0, i64 %t7) - unreachable -inrange8865: - %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.5669, 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.5670, i64 14, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t37, ptr %a39 - %t40 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.5671, 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 %then8866, label %endif8868 -then8866: - %t45 = load ptr, ptr %a1 - %t46 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t45, %S.ast.Node %t46, i64 1) - %t47 = load ptr, ptr %a1 - %t48 = load ptr, ptr %a1 - %t49 = load ptr, ptr %a1 - %t50 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 1, %t52 - br i1 %t53, label %range8869, label %inrange8870 -range8869: - call void @finch_panic_index(ptr @.str.5672, i64 5410, i64 1, i64 %t52) - unreachable -inrange8870: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 1 - %t56 = load %S.ast.Node, ptr %t55 - %t57 = load %S.ast.Type, ptr %a15 - %t58 = call %S.gen.Val @finch.gen.exprWant(ptr %t49, %S.ast.Node %t56, %S.ast.Type %t57) - %t59 = load %S.ast.Type, ptr %a15 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 1, %t62 - br i1 %t63, label %range8871, label %inrange8872 -range8871: - call void @finch_panic_index(ptr @.str.5673, i64 5410, i64 1, i64 %t62) - unreachable -inrange8872: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 1 - %t66 = load %S.ast.Node, ptr %t65 - %t67 = call %S.gen.Val @finch.gen.coerce(ptr %t48, %S.gen.Val %t58, %S.ast.Type %t59, %S.ast.Node %t66, { ptr, i64, i64 } { ptr @.str.5674, i64 11, i64 0 }) - store %S.gen.Val %t58, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - %t69 = call { ptr, i64, i64 } @finch.gen.own(ptr %t47, %S.gen.Val %t67) - store %S.gen.Val %t67, ptr %a70 - call void @finch.drop.S_gen_Val(ptr %a70) - store { ptr, i64, i64 } %t69, ptr %a71 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a39 - %t74 = call { ptr, i64, i64 } @finch.gen.load(ptr %t72, { ptr, i64, i64 } { ptr @.str.5675, i64 3, i64 0 }, { ptr, i64, i64 } %t73) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5676, i64 8, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.5677, i64 3, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.op(ptr %t76, { ptr, i64, i64 } %t86) - store { ptr, i64, i64 } %t86, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5678, i64 33, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5679, i64 6, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5680, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load ptr, ptr %a1 - %t113 = load %S.ast.Type, ptr %a15 - %t114 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t112, %S.ast.Type %t113) - store { ptr, i64, i64 } %t111, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t111, ptr %a118 - call void @finch_str_drop(ptr %a118) - store { ptr, i64, i64 } %t114, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t120, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.5681, i64 1, i64 0 }, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - call void @finch.gen.emit(ptr %t90, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load ptr, ptr %a1 - %t128 = load { ptr, i64, i64 }, ptr %a3 - %t129 = call { ptr, i64, i64 } @finch.gen.load(ptr %t127, { ptr, i64, i64 } { ptr @.str.5682, i64 3, i64 0 }, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a19 - %t133 = load { ptr, i64, i64 }, ptr %a71 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5683, i64 23, i64 0 }, ptr %a137 - store { ptr, i64, i64 } %t135, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t139, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.5684, i64 6, i64 0 }, ptr %a142 - call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = load { ptr, i64, i64 }, ptr %a140 - %t145 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t144, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.5685, i64 6, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t155, ptr %a158 - store { ptr, i64, i64 } %t156, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a163 - call void @finch_str_drop(ptr %a163) - call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t162) - store { ptr, i64, i64 } %t162, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load ptr, ptr %a1 - %t166 = load { ptr, i64, i64 }, ptr %a89 - %t167 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t165, { ptr, i64, i64 } { ptr @.str.5686, i64 3, i64 0 }, { ptr, i64, i64 } %t166, { ptr, i64, i64 } %t167) - %t168 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5687, i64 4, i64 0 }) - %t169 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t168, 1 - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a89) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t169 -endif8868: - %t170 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.5688, i64 3, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then8873, label %endif8875 -then8873: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t175, %S.ast.Node %t176, i64 0) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a39 - %t179 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.5689, i64 3, i64 0 }, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t179, ptr %a180 - %t181 = load ptr, ptr %a1 - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5690, i64 12, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5691, i64 3, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t181, { ptr, i64, i64 } %t193, { ptr, i64, i64 } { ptr @.str.5692, i64 23, i64 0 }, %S.ast.Node %t195) - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5693, i64 8, i64 0 }, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.5694, i64 3, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_drop(ptr %a209) - store { ptr, i64, i64 } %t208, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = call { ptr, i64, i64 } @finch.gen.load(ptr %t211, { ptr, i64, i64 } { ptr @.str.5695, i64 3, i64 0 }, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t213, ptr %a214 - %t215 = load ptr, ptr %a1 - %t216 = load { ptr, i64, i64 }, ptr %a19 - %t217 = load ptr, ptr %a1 - %t218 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5696, i64 23, i64 0 }, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.5697, i64 6, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5698, i64 6, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t238, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t238, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t244) - store { ptr, i64, i64 } %t244, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = call { ptr, i64, i64 } @finch.gen.load(ptr %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_drop(ptr %a248) - store { ptr, i64, i64 } %t247, ptr %a249 - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a210 - %t252 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.5699, i64 3, i64 0 }, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t256, 0 - %t258 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t258, ptr %a259 - call void @finch.copy.S_ast_Type(ptr %a260, ptr %a259) - %t261 = load %S.ast.Type, ptr %a260 - %t262 = insertvalue %S.gen.Val %t257, %S.ast.Type %t261, 1 - %t263 = load ptr, ptr %a1 - %t264 = load %S.ast.Type, ptr %a15 - %t265 = call i1 @finch.gen.owning(ptr %t263, %S.ast.Type %t264) - %t266 = insertvalue %S.gen.Val %t262, i1 %t265, 2 - call void @finch_str_drop(ptr %a249) - call void @finch_str_drop(ptr %a214) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a180) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t266 -endif8875: - %t267 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t267, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5700, i64 5, i64 0 }, ptr %a269 - %t270 = call i32 @finch_str_eq(ptr %a268, ptr %a269) - %t271 = icmp ne i32 %t270, 0 - br i1 %t271, label %then8876, label %endif8878 -then8876: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t272, %S.ast.Node %t273, i64 0) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a3 - %t276 = load %S.ast.Type, ptr %a4 - call void @finch.gen.dropFrom(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276, { ptr, i64, i64 } { ptr @.str.5701, i64 1, i64 0 }) - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t277, { ptr, i64, i64 } { ptr @.str.5702, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5703, i64 1, i64 0 }, { ptr, i64, i64 } %t278) - %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5704, i64 4, i64 0 }) - %t280 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t279, 1 - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t280 -endif8878: - %t281 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.5705, i64 4, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br label %logic.from8879 -logic.from8879: - br i1 %t285, label %logic.end8881, label %logic.rhs8880 -logic.rhs8880: - %t286 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t286, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5706, i64 8, i64 0 }, ptr %a288 - %t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288) - %t290 = icmp ne i32 %t289, 0 - br label %logic.rend8882 -logic.rend8882: - br label %logic.end8881 -logic.end8881: - %t291 = phi i1 [ true, %logic.from8879 ], [ %t290, %logic.rend8882 ] - br i1 %t291, label %then8883, label %endif8885 -then8883: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t292, %S.ast.Node %t293, i64 1) - %t294 = load ptr, ptr %a1 - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t297 = load { ptr, i64, i64 }, ptr %t296 - %t298 = extractvalue { ptr, i64, i64 } %t297, 1 - %t299 = icmp uge i64 1, %t298 - br i1 %t299, label %range8886, label %inrange8887 -range8886: - call void @finch_panic_index(ptr @.str.5707, i64 5437, i64 1, i64 %t298) - unreachable -inrange8887: - %t300 = extractvalue { ptr, i64, i64 } %t297, 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i64 1 - %t302 = load %S.ast.Node, ptr %t301 - %t303 = load %S.ast.Type, ptr %a15 - %t304 = call %S.gen.Val @finch.gen.exprWant(ptr %t295, %S.ast.Node %t302, %S.ast.Type %t303) - %t305 = load %S.ast.Type, ptr %a15 - %t306 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = extractvalue { ptr, i64, i64 } %t307, 1 - %t309 = icmp uge i64 1, %t308 - br i1 %t309, label %range8888, label %inrange8889 -range8888: - call void @finch_panic_index(ptr @.str.5708, i64 5437, i64 1, i64 %t308) - unreachable -inrange8889: - %t310 = extractvalue { ptr, i64, i64 } %t307, 0 - %t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i64 1 - %t312 = load %S.ast.Node, ptr %t311 - %t313 = call %S.gen.Val @finch.gen.coerce(ptr %t294, %S.gen.Val %t304, %S.ast.Type %t305, %S.ast.Node %t312, { ptr, i64, i64 } { ptr @.str.5709, i64 21, i64 0 }) - store %S.gen.Val %t304, ptr %a314 - call void @finch.drop.S_gen_Val(ptr %a314) - store %S.gen.Val %t313, ptr %a315 - %t316 = load ptr, ptr %a1 - %t317 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t316, { ptr, i64, i64 } { ptr @.str.5710, i64 3, i64 0 }) - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t319, { ptr, i64, i64 } { ptr @.str.5711, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5712, i64 2, i64 0 }, { ptr, i64, i64 } %t320) - %t321 = load ptr, ptr %a1 - %t322 = load { ptr, i64, i64 }, ptr %a39 - %t323 = call { ptr, i64, i64 } @finch.gen.load(ptr %t321, { ptr, i64, i64 } { ptr @.str.5713, i64 3, i64 0 }, { ptr, i64, i64 } %t322) - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = load ptr, ptr %a1 - %t326 = load { ptr, i64, i64 }, ptr %a3 - %t327 = call { ptr, i64, i64 } @finch.gen.load(ptr %t325, { ptr, i64, i64 } { ptr @.str.5714, i64 3, i64 0 }, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.5715, i64 3, i64 0 }) - store { ptr, i64, i64 } %t330, ptr %a331 - %t332 = load ptr, ptr %a1 - %t333 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t332, { ptr, i64, i64 } { ptr @.str.5716, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5717, i64 1, i64 0 }, { ptr, i64, i64 } %t333) - %t334 = load ptr, ptr %a1 - %t335 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t334, { ptr, i64, i64 } { ptr @.str.5718, i64 9, i64 0 }) - store { ptr, i64, i64 } %t335, ptr %a336 - %t337 = load ptr, ptr %a1 - %t338 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t337, { ptr, i64, i64 } { ptr @.str.5719, i64 9, i64 0 }) - store { ptr, i64, i64 } %t338, ptr %a339 - %t340 = load ptr, ptr %a1 - %t341 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t340, { ptr, i64, i64 } { ptr @.str.5720, i64 8, i64 0 }) - store { ptr, i64, i64 } %t341, ptr %a342 - %t343 = load ptr, ptr %a1 - %t344 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t343, { ptr, i64, i64 } { ptr @.str.5721, i64 9, i64 0 }) - store { ptr, i64, i64 } %t344, ptr %a345 - %t346 = load ptr, ptr %a1 - %t347 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t346, { ptr, i64, i64 } { ptr @.str.5722, i64 8, i64 0 }) - store { ptr, i64, i64 } %t347, ptr %a348 - %t349 = load ptr, ptr %a1 - %t350 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t349, { ptr, i64, i64 } %t350) - %t351 = load ptr, ptr %a1 - %t352 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.label(ptr %t351, { ptr, i64, i64 } %t352) - %t353 = load ptr, ptr %a1 - %t354 = load { ptr, i64, i64 }, ptr %a331 - %t355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t353, { ptr, i64, i64 } { ptr @.str.5723, i64 3, i64 0 }, { ptr, i64, i64 } %t354) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5724, i64 13, i64 0 }, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a359 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.5725, i64 2, i64 0 }, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - store { ptr, i64, i64 } %t362, ptr %a366 - call void @finch_str_drop(ptr %a366) - %t367 = load { ptr, i64, i64 }, ptr %a363 - %t368 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t367, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a371 - call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) - store { ptr, i64, i64 } %t367, ptr %a372 - call void @finch_str_drop(ptr %a372) - %t373 = load { ptr, i64, i64 }, ptr %a369 - %t374 = call { ptr, i64, i64 } @finch.gen.op(ptr %t357, { ptr, i64, i64 } %t373) - store { ptr, i64, i64 } %t373, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t374, ptr %a376 - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a376 - %t379 = load { ptr, i64, i64 }, ptr %a339 - %t380 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.condBr(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t379, { ptr, i64, i64 } %t380) - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a339 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a19 - %t385 = load ptr, ptr %a1 - %t386 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5726, i64 23, i64 0 }, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.5727, i64 6, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t395, ptr %a398 - store { ptr, i64, i64 } %t396, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.5728, i64 6, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - %t413 = call { ptr, i64, i64 } @finch.gen.op(ptr %t385, { ptr, i64, i64 } %t412) - store { ptr, i64, i64 } %t412, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = call { ptr, i64, i64 } @finch.gen.load(ptr %t383, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t413) - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t415, 0 - %t418 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t418, ptr %a419 - call void @finch.copy.S_ast_Type(ptr %a420, ptr %a419) - %t421 = load %S.ast.Type, ptr %a420 - %t422 = insertvalue %S.gen.Val %t417, %S.ast.Type %t421, 1 - store %S.gen.Val %t422, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load %S.gen.Val, ptr %a423 - %t426 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 0 - %t427 = load { ptr, i64, i64 }, ptr %t426 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_copy(ptr %a429, ptr %a428) - %t430 = load { ptr, i64, i64 }, ptr %a429 - %t431 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t430, 0 - %t432 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 1 - %t433 = load %S.ast.Type, ptr %t432 - store %S.ast.Type %t433, ptr %a434 - call void @finch.copy.S_ast_Type(ptr %a435, ptr %a434) - %t436 = load %S.ast.Type, ptr %a435 - %t437 = insertvalue %S.gen.Val %t431, %S.ast.Type %t436, 1 - %t438 = load %S.ast.Node, ptr %a2 - %t439 = call %S.gen.Val @finch.gen.compare(ptr %t424, { ptr, i64, i64 } { ptr @.str.5729, i64 2, i64 0 }, %S.gen.Val %t425, %S.gen.Val %t437, %S.ast.Node %t438) - store %S.gen.Val %t437, ptr %a440 - call void @finch.drop.S_gen_Val(ptr %a440) - %t441 = extractvalue %S.gen.Val %t439, 0 - store { ptr, i64, i64 } %t441, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store %S.gen.Val %t439, ptr %a445 - call void @finch.drop.S_gen_Val(ptr %a445) - store { ptr, i64, i64 } %t444, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load { ptr, i64, i64 }, ptr %a446 - %t449 = load { ptr, i64, i64 }, ptr %a342 - %t450 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.condBr(ptr %t447, { ptr, i64, i64 } %t448, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load { ptr, i64, i64 }, ptr %a342 - call void @finch.gen.label(ptr %t451, { ptr, i64, i64 } %t452) - %t453 = load ptr, ptr %a1 - %t454 = load { ptr, i64, i64 }, ptr %a356 - %t455 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t453, { ptr, i64, i64 } { ptr @.str.5730, i64 3, i64 0 }, { ptr, i64, i64 } %t454, { ptr, i64, i64 } %t455) - %t456 = load ptr, ptr %a1 - %t457 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.br(ptr %t456, { ptr, i64, i64 } %t457) - %t458 = load ptr, ptr %a1 - %t459 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.label(ptr %t458, { ptr, i64, i64 } %t459) - %t460 = load ptr, ptr %a1 - %t461 = load ptr, ptr %a1 - %t462 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5732, i64 8, i64 0 }, ptr %a464 - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a463 - store { ptr, i64, i64 } %t466, ptr %a468 - store { ptr, i64, i64 } { ptr @.str.5733, i64 3, i64 0 }, ptr %a469 - call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469) - store { ptr, i64, i64 } %t466, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a467 - %t472 = call { ptr, i64, i64 } @finch.gen.op(ptr %t461, { ptr, i64, i64 } %t471) - store { ptr, i64, i64 } %t471, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t460, { ptr, i64, i64 } { ptr @.str.5731, i64 3, i64 0 }, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_drop(ptr %a475) - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t476, { ptr, i64, i64 } %t477) - %t478 = load ptr, ptr %a1 - %t479 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.label(ptr %t478, { ptr, i64, i64 } %t479) - %t480 = load ptr, ptr %a1 - %t481 = load %S.gen.Val, ptr %a315 - call void @finch.gen.release(ptr %t480, %S.gen.Val %t481) - %t482 = load ptr, ptr %a1 - %t483 = load { ptr, i64, i64 }, ptr %a318 - %t484 = call { ptr, i64, i64 } @finch.gen.load(ptr %t482, { ptr, i64, i64 } { ptr @.str.5734, i64 3, i64 0 }, { ptr, i64, i64 } %t483) - store { ptr, i64, i64 } %t484, ptr %a485 - %t486 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5735, i64 4, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then8890, label %endif8892 -then8890: - %t491 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t491, ptr %a492 - call void @finch_str_copy(ptr %a493, ptr %a492) - %t494 = load { ptr, i64, i64 }, ptr %a493 - %t495 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t494, 0 - %t496 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5736, i64 3, i64 0 }) - %t497 = insertvalue %S.gen.Val %t495, %S.ast.Type %t496, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t497 -endif8892: - %t498 = load ptr, ptr %a1 - %t499 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5737, i64 13, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5738, i64 3, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call { ptr, i64, i64 } @finch.gen.op(ptr %t498, { ptr, i64, i64 } %t508) - store { ptr, i64, i64 } %t508, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t509, 0 - %t512 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5739, i64 4, i64 0 }) - %t513 = insertvalue %S.gen.Val %t511, %S.ast.Type %t512, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t513 -endif8885: - %t514 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t514, ptr %a515 - store { ptr, i64, i64 } { ptr @.str.5740, i64 4, i64 0 }, ptr %a516 - %t517 = call i32 @finch_str_eq(ptr %a515, ptr %a516) - %t518 = icmp ne i32 %t517, 0 - br i1 %t518, label %then8893, label %endif8895 -then8893: - %t519 = load ptr, ptr %a1 - %t520 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t519, %S.ast.Node %t520, i64 1) - %t521 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5741, i64 3, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp eq i32 %t525, 0 - br i1 %t526, label %then8896, label %endif8898 -then8896: - %t527 = load ptr, ptr %a1 - %t528 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t527, %S.ast.Node %t528, { ptr, i64, i64 } { ptr @.str.5742, i64 31, i64 0 }) - br label %endif8898 -endif8898: - %t529 = load ptr, ptr %a1 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t531 = load { ptr, i64, i64 }, ptr %t530 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 1, %t532 - br i1 %t533, label %range8899, label %inrange8900 -range8899: - call void @finch_panic_index(ptr @.str.5743, i64 5477, i64 1, i64 %t532) - unreachable -inrange8900: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.ast.Node, ptr %t534, i64 1 - %t536 = load %S.ast.Node, ptr %t535 - %t537 = call %S.gen.Val @finch.gen.strArg(ptr %t529, %S.ast.Node %t536, { ptr, i64, i64 } { ptr @.str.5744, i64 13, i64 0 }) - store %S.gen.Val %t537, ptr %a538 - %t539 = load ptr, ptr %a1 - %t540 = load %S.gen.Val, ptr %a538 - %t541 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t539, %S.gen.Val %t540) - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = load ptr, ptr %a1 - %t544 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } { ptr @.str.5745, i64 30, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a553 - store { ptr, i64, i64 } { ptr @.str.5746, i64 6, i64 0 }, ptr %a554 - call void @finch_str_concat(ptr %a552, ptr %a553, ptr %a554) - store { ptr, i64, i64 } %t551, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load { ptr, i64, i64 }, ptr %a552 - %t557 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t556, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t556, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.5747, i64 6, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t567, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t573, ptr %a575 - store { ptr, i64, i64 } { ptr @.str.5748, i64 1, i64 0 }, ptr %a576 - call void @finch_str_concat(ptr %a574, ptr %a575, ptr %a576) - store { ptr, i64, i64 } %t573, ptr %a577 - call void @finch_str_drop(ptr %a577) - %t578 = load { ptr, i64, i64 }, ptr %a574 - call void @finch.gen.emit(ptr %t546, { ptr, i64, i64 } %t578) - store { ptr, i64, i64 } %t578, ptr %a579 - call void @finch_str_drop(ptr %a579) - %t580 = load ptr, ptr %a1 - %t581 = load %S.gen.Val, ptr %a538 - call void @finch.gen.release(ptr %t580, %S.gen.Val %t581) - %t582 = load ptr, ptr %a1 - %t583 = load { ptr, i64, i64 }, ptr %a545 - %t584 = call { ptr, i64, i64 } @finch.gen.load(ptr %t582, { ptr, i64, i64 } { ptr @.str.5749, i64 17, i64 0 }, { ptr, i64, i64 } %t583) - %t585 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t584, 0 - %t586 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5750, i64 3, i64 0 }) - %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 - %t588 = insertvalue %S.gen.Val %t587, i1 true, 2 - call void @finch_str_drop(ptr %a545) - call void @finch_str_drop(ptr %a542) - call void @finch.drop.S_gen_Val(ptr %a538) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t588 -endif8895: - %t589 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.5751, 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 %then8901, label %endif8903 -then8901: - %t594 = load ptr, ptr %a1 - %t595 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t594, %S.ast.Node %t595, i64 2) - %t596 = load ptr, ptr %a1 - %t597 = load ptr, ptr %a1 - %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t599 = load { ptr, i64, i64 }, ptr %t598 - %t600 = extractvalue { ptr, i64, i64 } %t599, 1 - %t601 = icmp uge i64 1, %t600 - br i1 %t601, label %range8904, label %inrange8905 -range8904: - call void @finch_panic_index(ptr @.str.5752, i64 5486, i64 1, i64 %t600) - unreachable -inrange8905: - %t602 = extractvalue { ptr, i64, i64 } %t599, 0 - %t603 = getelementptr inbounds %S.ast.Node, ptr %t602, i64 1 - %t604 = load %S.ast.Node, ptr %t603 - %t605 = call %S.gen.Val @finch.gen.expr(ptr %t597, %S.ast.Node %t604) - %t606 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5753, i64 3, i64 0 }) - %t607 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t608 = load { ptr, i64, i64 }, ptr %t607 - %t609 = extractvalue { ptr, i64, i64 } %t608, 1 - %t610 = icmp uge i64 1, %t609 - br i1 %t610, label %range8906, label %inrange8907 -range8906: - call void @finch_panic_index(ptr @.str.5754, i64 5486, i64 1, i64 %t609) - unreachable -inrange8907: - %t611 = extractvalue { ptr, i64, i64 } %t608, 0 - %t612 = getelementptr inbounds %S.ast.Node, ptr %t611, i64 1 - %t613 = load %S.ast.Node, ptr %t612 - %t614 = call %S.gen.Val @finch.gen.coerce(ptr %t596, %S.gen.Val %t605, %S.ast.Type %t606, %S.ast.Node %t613, { ptr, i64, i64 } { ptr @.str.5755, i64 12, i64 0 }) - store %S.gen.Val %t605, ptr %a615 - call void @finch.drop.S_gen_Val(ptr %a615) - store %S.ast.Type %t606, ptr %a616 - call void @finch.drop.S_ast_Type(ptr %a616) - %t617 = extractvalue %S.gen.Val %t614, 0 - store { ptr, i64, i64 } %t617, ptr %a618 - call void @finch_str_copy(ptr %a619, ptr %a618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store %S.gen.Val %t614, ptr %a621 - call void @finch.drop.S_gen_Val(ptr %a621) - store { ptr, i64, i64 } %t620, ptr %a622 - %t623 = load ptr, ptr %a1 - %t624 = load ptr, ptr %a1 - %t625 = load ptr, ptr %a1 - %t626 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t627 = load { ptr, i64, i64 }, ptr %t626 - %t628 = extractvalue { ptr, i64, i64 } %t627, 1 - %t629 = icmp uge i64 2, %t628 - br i1 %t629, label %range8908, label %inrange8909 -range8908: - call void @finch_panic_index(ptr @.str.5756, i64 5487, i64 2, i64 %t628) - unreachable -inrange8909: - %t630 = extractvalue { ptr, i64, i64 } %t627, 0 - %t631 = getelementptr inbounds %S.ast.Node, ptr %t630, i64 2 - %t632 = load %S.ast.Node, ptr %t631 - %t633 = load %S.ast.Type, ptr %a15 - %t634 = call %S.gen.Val @finch.gen.exprWant(ptr %t625, %S.ast.Node %t632, %S.ast.Type %t633) - %t635 = load %S.ast.Type, ptr %a15 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = extractvalue { ptr, i64, i64 } %t637, 1 - %t639 = icmp uge i64 2, %t638 - br i1 %t639, label %range8910, label %inrange8911 -range8910: - call void @finch_panic_index(ptr @.str.5757, i64 5487, i64 2, i64 %t638) - unreachable -inrange8911: - %t640 = extractvalue { ptr, i64, i64 } %t637, 0 - %t641 = getelementptr inbounds %S.ast.Node, ptr %t640, i64 2 - %t642 = load %S.ast.Node, ptr %t641 - %t643 = call %S.gen.Val @finch.gen.coerce(ptr %t624, %S.gen.Val %t634, %S.ast.Type %t635, %S.ast.Node %t642, { ptr, i64, i64 } { ptr @.str.5758, i64 11, i64 0 }) - store %S.gen.Val %t634, ptr %a644 - call void @finch.drop.S_gen_Val(ptr %a644) - %t645 = call { ptr, i64, i64 } @finch.gen.own(ptr %t623, %S.gen.Val %t643) - store %S.gen.Val %t643, ptr %a646 - call void @finch.drop.S_gen_Val(ptr %a646) - store { ptr, i64, i64 } %t645, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = load ptr, ptr %a1 - %t650 = icmp eq ptr %t649, null - br i1 %t650, label %panic8912, label %ok8913 -panic8912: - call void @finch_panic(ptr @.str.5759, i64 5488, ptr @.str.5760) - unreachable -ok8913: - %t651 = getelementptr inbounds %S.gen.Gen, ptr %t649, i32 0, i32 1 - %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t653 = load i64, ptr %t652 - %t654 = load { ptr, i64, i64 }, ptr %t651 - %t655 = extractvalue { ptr, i64, i64 } %t654, 1 - %t656 = icmp uge i64 %t653, %t655 - br i1 %t656, label %range8914, label %inrange8915 -range8914: - call void @finch_panic_index(ptr @.str.5761, i64 5488, i64 %t653, i64 %t655) - unreachable -inrange8915: - %t657 = extractvalue { ptr, i64, i64 } %t654, 0 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i64 %t653 - %t659 = load { ptr, i64, i64 }, ptr %t658 - %t660 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t648, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5762, i64 36, i64 0 }, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - %t667 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t667, ptr %a669 - store { ptr, i64, i64 } { ptr @.str.5763, i64 6, i64 0 }, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - store { ptr, i64, i64 } %t667, ptr %a671 - call void @finch_str_drop(ptr %a671) - %t672 = load { ptr, i64, i64 }, ptr %a668 - %t673 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t672, ptr %a675 - store { ptr, i64, i64 } %t673, ptr %a676 - call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a674 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.5764, i64 6, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a15 - %t686 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t684, %S.ast.Type %t685) - store { ptr, i64, i64 } %t683, ptr %a688 - store { ptr, i64, i64 } %t686, ptr %a689 - call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689) - store { ptr, i64, i64 } %t683, ptr %a690 - call void @finch_str_drop(ptr %a690) - store { ptr, i64, i64 } %t686, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a687 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.5765, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5766, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t710 = load i64, ptr %t709 - call void @finch_str_from_int(ptr %a711, i64 %t710) - %t712 = load { ptr, i64, i64 }, ptr %a711 - store { ptr, i64, i64 } %t708, ptr %a714 - store { ptr, i64, i64 } %t712, ptr %a715 - call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715) - store { ptr, i64, i64 } %t708, ptr %a716 - call void @finch_str_drop(ptr %a716) - store { ptr, i64, i64 } %t712, ptr %a717 - call void @finch_str_drop(ptr %a717) - %t718 = load { ptr, i64, i64 }, ptr %a713 - store { ptr, i64, i64 } %t718, ptr %a720 - store { ptr, i64, i64 } { ptr @.str.5767, i64 1, i64 0 }, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t718, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.emit(ptr %t662, { ptr, i64, i64 } %t723) - store { ptr, i64, i64 } %t723, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a3 - %t727 = call { ptr, i64, i64 } @finch.gen.load(ptr %t725, { ptr, i64, i64 } { ptr @.str.5768, i64 3, i64 0 }, { ptr, i64, i64 } %t726) - store { ptr, i64, i64 } %t727, ptr %a728 - %t729 = load ptr, ptr %a1 - %t730 = load { ptr, i64, i64 }, ptr %a19 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = load ptr, ptr %a1 - %t733 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5769, i64 23, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.5770, i64 6, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t742, ptr %a745 - store { ptr, i64, i64 } %t743, ptr %a746 - call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746) - store { ptr, i64, i64 } %t742, ptr %a747 - call void @finch_str_drop(ptr %a747) - %t748 = load { ptr, i64, i64 }, ptr %a744 - store { ptr, i64, i64 } %t748, ptr %a750 - store { ptr, i64, i64 } { ptr @.str.5771, i64 6, i64 0 }, ptr %a751 - call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751) - store { ptr, i64, i64 } %t748, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a749 - %t754 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t753, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a755 - %t760 = call { ptr, i64, i64 } @finch.gen.op(ptr %t732, { ptr, i64, i64 } %t759) - store { ptr, i64, i64 } %t759, ptr %a761 - call void @finch_str_drop(ptr %a761) - call void @finch.gen.store(ptr %t729, { ptr, i64, i64 } %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t760) - store { ptr, i64, i64 } %t760, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5772, i64 4, i64 0 }) - %t764 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t763, 1 - call void @finch_str_drop(ptr %a728) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a622) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t764 -endif8903: - %t765 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t765, ptr %a766 - store { ptr, i64, i64 } { ptr @.str.5773, i64 6, i64 0 }, ptr %a767 - %t768 = call i32 @finch_str_eq(ptr %a766, ptr %a767) - %t769 = icmp ne i32 %t768, 0 - br i1 %t769, label %then8916, label %endif8918 -then8916: - %t770 = load ptr, ptr %a1 - %t771 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t770, %S.ast.Node %t771, i64 1) - %t772 = load ptr, ptr %a1 - %t773 = load ptr, ptr %a1 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t775 = load { ptr, i64, i64 }, ptr %t774 - %t776 = extractvalue { ptr, i64, i64 } %t775, 1 - %t777 = icmp uge i64 1, %t776 - br i1 %t777, label %range8919, label %inrange8920 -range8919: - call void @finch_panic_index(ptr @.str.5774, i64 5496, i64 1, i64 %t776) - unreachable -inrange8920: - %t778 = extractvalue { ptr, i64, i64 } %t775, 0 - %t779 = getelementptr inbounds %S.ast.Node, ptr %t778, i64 1 - %t780 = load %S.ast.Node, ptr %t779 - %t781 = call %S.gen.Val @finch.gen.expr(ptr %t773, %S.ast.Node %t780) - %t782 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5775, i64 3, i64 0 }) - %t783 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t784 = load { ptr, i64, i64 }, ptr %t783 - %t785 = extractvalue { ptr, i64, i64 } %t784, 1 - %t786 = icmp uge i64 1, %t785 - br i1 %t786, label %range8921, label %inrange8922 -range8921: - call void @finch_panic_index(ptr @.str.5776, i64 5496, i64 1, i64 %t785) - unreachable -inrange8922: - %t787 = extractvalue { ptr, i64, i64 } %t784, 0 - %t788 = getelementptr inbounds %S.ast.Node, ptr %t787, i64 1 - %t789 = load %S.ast.Node, ptr %t788 - %t790 = call %S.gen.Val @finch.gen.coerce(ptr %t772, %S.gen.Val %t781, %S.ast.Type %t782, %S.ast.Node %t789, { ptr, i64, i64 } { ptr @.str.5777, i64 12, i64 0 }) - store %S.gen.Val %t781, ptr %a791 - call void @finch.drop.S_gen_Val(ptr %a791) - store %S.ast.Type %t782, ptr %a792 - call void @finch.drop.S_ast_Type(ptr %a792) - %t793 = extractvalue %S.gen.Val %t790, 0 - store { ptr, i64, i64 } %t793, ptr %a794 - call void @finch_str_copy(ptr %a795, ptr %a794) - %t796 = load { ptr, i64, i64 }, ptr %a795 - store %S.gen.Val %t790, ptr %a797 - call void @finch.drop.S_gen_Val(ptr %a797) - store { ptr, i64, i64 } %t796, ptr %a798 - %t799 = load ptr, ptr %a1 - %t800 = load { ptr, i64, i64 }, ptr %a798 - %t801 = load ptr, ptr %a1 - %t802 = load { ptr, i64, i64 }, ptr %a39 - %t803 = call { ptr, i64, i64 } @finch.gen.load(ptr %t801, { ptr, i64, i64 } { ptr @.str.5778, i64 3, i64 0 }, { ptr, i64, i64 } %t802) - %t804 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t799, { ptr, i64, i64 } %t800, { ptr, i64, i64 } %t803, %S.ast.Node %t804) - store { ptr, i64, i64 } %t803, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load ptr, ptr %a1 - %t807 = load { ptr, i64, i64 }, ptr %a3 - %t808 = call { ptr, i64, i64 } @finch.gen.load(ptr %t806, { ptr, i64, i64 } { ptr @.str.5779, i64 3, i64 0 }, { ptr, i64, i64 } %t807) - store { ptr, i64, i64 } %t808, ptr %a809 - %t810 = load ptr, ptr %a1 - %t811 = load { ptr, i64, i64 }, ptr %a19 - %t812 = load ptr, ptr %a1 - %t813 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5780, i64 23, i64 0 }, ptr %a815 - store { ptr, i64, i64 } %t813, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.5781, i64 6, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = load { ptr, i64, i64 }, ptr %a809 - store { ptr, i64, i64 } %t822, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t822, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.5782, i64 6, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t833, ptr %a836 - store { ptr, i64, i64 } %t834, ptr %a837 - call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) - store { ptr, i64, i64 } %t833, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a835 - %t840 = call { ptr, i64, i64 } @finch.gen.op(ptr %t812, { ptr, i64, i64 } %t839) - store { ptr, i64, i64 } %t839, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = call { ptr, i64, i64 } @finch.gen.load(ptr %t810, { ptr, i64, i64 } %t811, { ptr, i64, i64 } %t840) - store { ptr, i64, i64 } %t840, ptr %a843 - call void @finch_str_drop(ptr %a843) - store { ptr, i64, i64 } %t842, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5783, i64 36, i64 0 }, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a847 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5784, i64 6, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - %t856 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t855, ptr %a858 - store { ptr, i64, i64 } %t856, ptr %a859 - call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) - store { ptr, i64, i64 } %t855, ptr %a860 - call void @finch_str_drop(ptr %a860) - %t861 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } %t861, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5785, i64 6, i64 0 }, ptr %a864 - call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864) - store { ptr, i64, i64 } %t861, ptr %a865 - call void @finch_str_drop(ptr %a865) - %t866 = load { ptr, i64, i64 }, ptr %a862 - %t867 = load ptr, ptr %a1 - %t868 = load %S.ast.Type, ptr %a15 - %t869 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t867, %S.ast.Type %t868) - store { ptr, i64, i64 } %t866, ptr %a871 - store { ptr, i64, i64 } %t869, ptr %a872 - call void @finch_str_concat(ptr %a870, ptr %a871, ptr %a872) - store { ptr, i64, i64 } %t866, ptr %a873 - call void @finch_str_drop(ptr %a873) - store { ptr, i64, i64 } %t869, ptr %a874 - call void @finch_str_drop(ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a870 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5786, i64 1, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.emit(ptr %t845, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = load { ptr, i64, i64 }, ptr %a844 - store { ptr, i64, i64 } %t882, ptr %a883 - call void @finch_str_copy(ptr %a884, ptr %a883) - %t885 = load { ptr, i64, i64 }, ptr %a884 - %t886 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t885, 0 - %t887 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t887, ptr %a888 - call void @finch.copy.S_ast_Type(ptr %a889, ptr %a888) - %t890 = load %S.ast.Type, ptr %a889 - %t891 = insertvalue %S.gen.Val %t886, %S.ast.Type %t890, 1 - %t892 = load ptr, ptr %a1 - %t893 = load %S.ast.Type, ptr %a15 - %t894 = call i1 @finch.gen.owning(ptr %t892, %S.ast.Type %t893) - %t895 = insertvalue %S.gen.Val %t891, i1 %t894, 2 - call void @finch_str_drop(ptr %a844) - call void @finch_str_drop(ptr %a809) - call void @finch_str_drop(ptr %a798) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t895 -endif8918: - %t896 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t896, ptr %a897 - store { ptr, i64, i64 } { ptr @.str.5787, i64 6, i64 0 }, ptr %a898 - %t899 = call i32 @finch_str_eq(ptr %a897, ptr %a898) - %t900 = icmp ne i32 %t899, 0 - br i1 %t900, label %then8923, label %endif8925 -then8923: - %t901 = load ptr, ptr %a1 - %t902 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t901, %S.ast.Node %t902, i64 1) - %t903 = load ptr, ptr %a1 - %t904 = load ptr, ptr %a1 - %t905 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t906 = load { ptr, i64, i64 }, ptr %t905 - %t907 = extractvalue { ptr, i64, i64 } %t906, 1 - %t908 = icmp uge i64 1, %t907 - br i1 %t908, label %range8926, label %inrange8927 -range8926: - call void @finch_panic_index(ptr @.str.5788, i64 5505, i64 1, i64 %t907) - unreachable -inrange8927: - %t909 = extractvalue { ptr, i64, i64 } %t906, 0 - %t910 = getelementptr inbounds %S.ast.Node, ptr %t909, i64 1 - %t911 = load %S.ast.Node, ptr %t910 - %t912 = call %S.gen.Val @finch.gen.expr(ptr %t904, %S.ast.Node %t911) - %t913 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5789, i64 3, i64 0 }) - %t914 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t915 = load { ptr, i64, i64 }, ptr %t914 - %t916 = extractvalue { ptr, i64, i64 } %t915, 1 - %t917 = icmp uge i64 1, %t916 - br i1 %t917, label %range8928, label %inrange8929 -range8928: - call void @finch_panic_index(ptr @.str.5790, i64 5505, i64 1, i64 %t916) - unreachable -inrange8929: - %t918 = extractvalue { ptr, i64, i64 } %t915, 0 - %t919 = getelementptr inbounds %S.ast.Node, ptr %t918, i64 1 - %t920 = load %S.ast.Node, ptr %t919 - %t921 = call %S.gen.Val @finch.gen.coerce(ptr %t903, %S.gen.Val %t912, %S.ast.Type %t913, %S.ast.Node %t920, { ptr, i64, i64 } { ptr @.str.5791, i64 14, i64 0 }) - store %S.gen.Val %t912, ptr %a922 - call void @finch.drop.S_gen_Val(ptr %a922) - store %S.ast.Type %t913, ptr %a923 - call void @finch.drop.S_ast_Type(ptr %a923) - %t924 = extractvalue %S.gen.Val %t921, 0 - store { ptr, i64, i64 } %t924, ptr %a925 - call void @finch_str_copy(ptr %a926, ptr %a925) - %t927 = load { ptr, i64, i64 }, ptr %a926 - store %S.gen.Val %t921, ptr %a928 - call void @finch.drop.S_gen_Val(ptr %a928) - store { ptr, i64, i64 } %t927, ptr %a929 - %t930 = load ptr, ptr %a1 - %t931 = load { ptr, i64, i64 }, ptr %a3 - %t932 = load %S.ast.Type, ptr %a4 - %t933 = load { ptr, i64, i64 }, ptr %a929 - call void @finch.gen.dropFrom(ptr %t930, { ptr, i64, i64 } %t931, %S.ast.Type %t932, { ptr, i64, i64 } %t933) - %t934 = load ptr, ptr %a1 - %t935 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5792, i64 32, i64 0 }, ptr %a937 - store { ptr, i64, i64 } %t935, ptr %a938 - call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938) - %t939 = load { ptr, i64, i64 }, ptr %a936 - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.5793, i64 6, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a929 - store { ptr, i64, i64 } %t944, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - store { ptr, i64, i64 } %t944, ptr %a949 - call void @finch_str_drop(ptr %a949) - %t950 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5794, i64 6, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = load ptr, ptr %a1 - %t957 = load %S.ast.Type, ptr %a15 - %t958 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t956, %S.ast.Type %t957) - store { ptr, i64, i64 } %t955, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t955, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t958, ptr %a963 - call void @finch_str_drop(ptr %a963) - %t964 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t964, ptr %a966 - store { ptr, i64, i64 } { ptr @.str.5795, i64 1, i64 0 }, ptr %a967 - call void @finch_str_concat(ptr %a965, ptr %a966, ptr %a967) - store { ptr, i64, i64 } %t964, ptr %a968 - call void @finch_str_drop(ptr %a968) - %t969 = load { ptr, i64, i64 }, ptr %a965 - call void @finch.gen.emit(ptr %t934, { ptr, i64, i64 } %t969) - store { ptr, i64, i64 } %t969, ptr %a970 - call void @finch_str_drop(ptr %a970) - %t971 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5796, i64 4, i64 0 }) - %t972 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t971, 1 - call void @finch_str_drop(ptr %a929) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t972 -endif8925: - %t973 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t973, ptr %a974 - store { ptr, i64, i64 } { ptr @.str.5797, i64 7, i64 0 }, ptr %a975 - %t976 = call i32 @finch_str_eq(ptr %a974, ptr %a975) - %t977 = icmp ne i32 %t976, 0 - br i1 %t977, label %then8930, label %endif8932 -then8930: - %t978 = load ptr, ptr %a1 - %t979 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t978, %S.ast.Node %t979, i64 0) - %t980 = load ptr, ptr %a1 - %t981 = load { ptr, i64, i64 }, ptr %a39 - %t982 = call { ptr, i64, i64 } @finch.gen.load(ptr %t980, { ptr, i64, i64 } { ptr @.str.5798, i64 3, i64 0 }, { ptr, i64, i64 } %t981) - store { ptr, i64, i64 } %t982, ptr %a983 - %t984 = load ptr, ptr %a1 - %t985 = load { ptr, i64, i64 }, ptr %a3 - %t986 = call { ptr, i64, i64 } @finch.gen.load(ptr %t984, { ptr, i64, i64 } { ptr @.str.5799, i64 3, i64 0 }, { ptr, i64, i64 } %t985) - store { ptr, i64, i64 } %t986, ptr %a987 - %t988 = load ptr, ptr %a1 - %t989 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5800, i64 9, i64 0 }, ptr %a991 - store { ptr, i64, i64 } %t989, ptr %a992 - call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t993, ptr %a995 - store { ptr, i64, i64 } { ptr @.str.5801, i64 3, i64 0 }, ptr %a996 - call void @finch_str_concat(ptr %a994, ptr %a995, ptr %a996) - store { ptr, i64, i64 } %t993, ptr %a997 - call void @finch_str_drop(ptr %a997) - %t998 = load { ptr, i64, i64 }, ptr %a994 - %t999 = call { ptr, i64, i64 } @finch.gen.op(ptr %t988, { ptr, i64, i64 } %t998) - store { ptr, i64, i64 } %t998, ptr %a1000 - call void @finch_str_drop(ptr %a1000) - store { ptr, i64, i64 } %t999, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = load { ptr, i64, i64 }, ptr %a1001 - %t1004 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1002, { ptr, i64, i64 } %t1003) - store { ptr, i64, i64 } %t1004, ptr %a1005 - %t1006 = load ptr, ptr %a1 - %t1007 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5802, i64 23, i64 0 }, ptr %a1009 - store { ptr, i64, i64 } %t1007, ptr %a1010 - call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1008 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5803, i64 6, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1016, ptr %a1019 - store { ptr, i64, i64 } %t1017, ptr %a1020 - call void @finch_str_concat(ptr %a1018, ptr %a1019, ptr %a1020) - store { ptr, i64, i64 } %t1016, ptr %a1021 - call void @finch_str_drop(ptr %a1021) - %t1022 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } %t1022, ptr %a1024 - store { ptr, i64, i64 } { ptr @.str.5804, i64 6, i64 0 }, ptr %a1025 - call void @finch_str_concat(ptr %a1023, ptr %a1024, ptr %a1025) - store { ptr, i64, i64 } %t1022, ptr %a1026 - call void @finch_str_drop(ptr %a1026) - %t1027 = load { ptr, i64, i64 }, ptr %a1023 - %t1028 = load { ptr, i64, i64 }, ptr %a1005 - %t1029 = extractvalue { ptr, i64, i64 } %t1028, 1 - %t1030 = icmp uge i64 3, %t1029 - br i1 %t1030, label %range8933, label %inrange8934 -range8933: - call void @finch_panic_index(ptr @.str.5805, i64 5516, i64 3, i64 %t1029) - unreachable -inrange8934: - %t1031 = extractvalue { ptr, i64, i64 } %t1028, 0 - %t1032 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1031, i64 3 - %t1033 = load { ptr, i64, i64 }, ptr %t1032 - store { ptr, i64, i64 } %t1027, ptr %a1035 - store { ptr, i64, i64 } %t1033, ptr %a1036 - call void @finch_str_concat(ptr %a1034, ptr %a1035, ptr %a1036) - store { ptr, i64, i64 } %t1027, ptr %a1037 - call void @finch_str_drop(ptr %a1037) - %t1038 = load { ptr, i64, i64 }, ptr %a1034 - %t1039 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1006, { ptr, i64, i64 } %t1038) - store { ptr, i64, i64 } %t1038, ptr %a1040 - call void @finch_str_drop(ptr %a1040) - store { ptr, i64, i64 } %t1039, ptr %a1041 - %t1042 = load ptr, ptr %a1 - %t1043 = load ptr, ptr %a1 - %t1044 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5807, i64 8, i64 0 }, ptr %a1046 - store { ptr, i64, i64 } %t1044, ptr %a1047 - call void @finch_str_concat(ptr %a1045, ptr %a1046, ptr %a1047) - %t1048 = load { ptr, i64, i64 }, ptr %a1045 - store { ptr, i64, i64 } %t1048, ptr %a1050 - store { ptr, i64, i64 } { ptr @.str.5808, i64 3, i64 0 }, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - store { ptr, i64, i64 } %t1048, ptr %a1052 - call void @finch_str_drop(ptr %a1052) - %t1053 = load { ptr, i64, i64 }, ptr %a1049 - %t1054 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1043, { ptr, i64, i64 } %t1053) - store { ptr, i64, i64 } %t1053, ptr %a1055 - call void @finch_str_drop(ptr %a1055) - store { ptr, i64, i64 } { ptr @.str.5806, i64 8, i64 0 }, ptr %a1057 - store { ptr, i64, i64 } %t1054, ptr %a1058 - call void @finch_str_concat(ptr %a1056, ptr %a1057, ptr %a1058) - store { ptr, i64, i64 } %t1054, ptr %a1059 - call void @finch_str_drop(ptr %a1059) - %t1060 = load { ptr, i64, i64 }, ptr %a1056 - store { ptr, i64, i64 } %t1060, ptr %a1062 - store { ptr, i64, i64 } { ptr @.str.5809, i64 2, i64 0 }, ptr %a1063 - call void @finch_str_concat(ptr %a1061, ptr %a1062, ptr %a1063) - store { ptr, i64, i64 } %t1060, ptr %a1064 - call void @finch_str_drop(ptr %a1064) - %t1065 = load { ptr, i64, i64 }, ptr %a1061 - %t1066 = load { ptr, i64, i64 }, ptr %a1005 - %t1067 = extractvalue { ptr, i64, i64 } %t1066, 1 - %t1068 = icmp uge i64 3, %t1067 - br i1 %t1068, label %range8935, label %inrange8936 -range8935: - call void @finch_panic_index(ptr @.str.5810, i64 5517, i64 3, i64 %t1067) - unreachable -inrange8936: - %t1069 = extractvalue { ptr, i64, i64 } %t1066, 0 - %t1070 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1069, i64 3 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1065, ptr %a1073 - store { ptr, i64, i64 } %t1071, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1065, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1042, { ptr, i64, i64 } %t1076) - store { ptr, i64, i64 } %t1076, ptr %a1078 - call void @finch_str_drop(ptr %a1078) - store { ptr, i64, i64 } %t1077, ptr %a1079 - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5811, i64 23, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - %t1085 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1085, ptr %a1087 - store { ptr, i64, i64 } { ptr @.str.5812, i64 6, i64 0 }, ptr %a1088 - call void @finch_str_concat(ptr %a1086, ptr %a1087, ptr %a1088) - store { ptr, i64, i64 } %t1085, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load { ptr, i64, i64 }, ptr %a1086 - %t1091 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1090, ptr %a1093 - store { ptr, i64, i64 } %t1091, ptr %a1094 - call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) - store { ptr, i64, i64 } %t1090, ptr %a1095 - call void @finch_str_drop(ptr %a1095) - %t1096 = load { ptr, i64, i64 }, ptr %a1092 - store { ptr, i64, i64 } %t1096, ptr %a1098 - store { ptr, i64, i64 } { ptr @.str.5813, i64 6, i64 0 }, ptr %a1099 - call void @finch_str_concat(ptr %a1097, ptr %a1098, ptr %a1099) - store { ptr, i64, i64 } %t1096, ptr %a1100 - call void @finch_str_drop(ptr %a1100) - %t1101 = load { ptr, i64, i64 }, ptr %a1097 - %t1102 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1101, ptr %a1104 - store { ptr, i64, i64 } %t1102, ptr %a1105 - call void @finch_str_concat(ptr %a1103, ptr %a1104, ptr %a1105) - store { ptr, i64, i64 } %t1101, ptr %a1106 - call void @finch_str_drop(ptr %a1106) - %t1107 = load { ptr, i64, i64 }, ptr %a1103 - %t1108 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1080, { ptr, i64, i64 } %t1107) - store { ptr, i64, i64 } %t1107, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - store { ptr, i64, i64 } %t1108, ptr %a1110 - %t1111 = load ptr, ptr %a1 - %t1112 = load { ptr, i64, i64 }, ptr %a19 - %t1113 = load { ptr, i64, i64 }, ptr %a1041 - %t1114 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1111, { ptr, i64, i64 } %t1112, { ptr, i64, i64 } %t1113) - store { ptr, i64, i64 } %t1114, ptr %a1115 - %t1116 = load ptr, ptr %a1 - %t1117 = load { ptr, i64, i64 }, ptr %a19 - %t1118 = load { ptr, i64, i64 }, ptr %a1110 - %t1119 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1116, { ptr, i64, i64 } %t1117, { ptr, i64, i64 } %t1118) - store { ptr, i64, i64 } %t1119, ptr %a1120 - %t1121 = load ptr, ptr %a1 - %t1122 = load { ptr, i64, i64 }, ptr %a19 - %t1123 = load { ptr, i64, i64 }, ptr %a1120 - %t1124 = load { ptr, i64, i64 }, ptr %a1041 - call void @finch.gen.store(ptr %t1121, { ptr, i64, i64 } %t1122, { ptr, i64, i64 } %t1123, { ptr, i64, i64 } %t1124) - %t1125 = load ptr, ptr %a1 - %t1126 = load { ptr, i64, i64 }, ptr %a19 - %t1127 = load { ptr, i64, i64 }, ptr %a1115 - %t1128 = load { ptr, i64, i64 }, ptr %a1110 - call void @finch.gen.store(ptr %t1125, { ptr, i64, i64 } %t1126, { ptr, i64, i64 } %t1127, { ptr, i64, i64 } %t1128) - %t1129 = load ptr, ptr %a1 - %t1130 = load { ptr, i64, i64 }, ptr %a1005 - call void @finch.gen.loopEnd(ptr %t1129, { ptr, i64, i64 } %t1130) - %t1131 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5814, i64 4, i64 0 }) - %t1132 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1131, 1 - call void @finch_str_drop(ptr %a1120) - call void @finch_str_drop(ptr %a1115) - call void @finch_str_drop(ptr %a1110) - call void @finch_str_drop(ptr %a1079) - call void @finch_str_drop(ptr %a1041) - call void @finch.drop.arr_str(ptr %a1005) - call void @finch_str_drop(ptr %a1001) - call void @finch_str_drop(ptr %a987) - call void @finch_str_drop(ptr %a983) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1132 -endif8932: - %t1133 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1133, ptr %a1134 - store { ptr, i64, i64 } { ptr @.str.5815, i64 5, i64 0 }, ptr %a1135 - %t1136 = call i32 @finch_str_eq(ptr %a1134, ptr %a1135) - %t1137 = icmp ne i32 %t1136, 0 - br i1 %t1137, label %then8937, label %endif8939 -then8937: - %t1138 = load ptr, ptr %a1 - %t1139 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1138, %S.ast.Node %t1139, i64 2) - %t1140 = load ptr, ptr %a1 - %t1141 = load ptr, ptr %a1 - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1143 = load { ptr, i64, i64 }, ptr %t1142 - %t1144 = extractvalue { ptr, i64, i64 } %t1143, 1 - %t1145 = icmp uge i64 1, %t1144 - br i1 %t1145, label %range8940, label %inrange8941 -range8940: - call void @finch_panic_index(ptr @.str.5816, i64 5528, i64 1, i64 %t1144) - unreachable -inrange8941: - %t1146 = extractvalue { ptr, i64, i64 } %t1143, 0 - %t1147 = getelementptr inbounds %S.ast.Node, ptr %t1146, i64 1 - %t1148 = load %S.ast.Node, ptr %t1147 - %t1149 = call %S.gen.Val @finch.gen.expr(ptr %t1141, %S.ast.Node %t1148) - %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5817, i64 3, i64 0 }) - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 1, %t1153 - br i1 %t1154, label %range8942, label %inrange8943 -range8942: - call void @finch_panic_index(ptr @.str.5818, i64 5528, i64 1, i64 %t1153) - unreachable -inrange8943: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 1 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.coerce(ptr %t1140, %S.gen.Val %t1149, %S.ast.Type %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5819, i64 9, i64 0 }) - store %S.gen.Val %t1149, ptr %a1159 - call void @finch.drop.S_gen_Val(ptr %a1159) - store %S.ast.Type %t1150, ptr %a1160 - call void @finch.drop.S_ast_Type(ptr %a1160) - %t1161 = extractvalue %S.gen.Val %t1158, 0 - store { ptr, i64, i64 } %t1161, ptr %a1162 - call void @finch_str_copy(ptr %a1163, ptr %a1162) - %t1164 = load { ptr, i64, i64 }, ptr %a1163 - store %S.gen.Val %t1158, ptr %a1165 - call void @finch.drop.S_gen_Val(ptr %a1165) - store { ptr, i64, i64 } %t1164, ptr %a1166 - %t1167 = load ptr, ptr %a1 - %t1168 = load ptr, ptr %a1 - %t1169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1170 = load { ptr, i64, i64 }, ptr %t1169 - %t1171 = extractvalue { ptr, i64, i64 } %t1170, 1 - %t1172 = icmp uge i64 2, %t1171 - br i1 %t1172, label %range8944, label %inrange8945 -range8944: - call void @finch_panic_index(ptr @.str.5820, i64 5529, i64 2, i64 %t1171) - unreachable -inrange8945: - %t1173 = extractvalue { ptr, i64, i64 } %t1170, 0 - %t1174 = getelementptr inbounds %S.ast.Node, ptr %t1173, i64 2 - %t1175 = load %S.ast.Node, ptr %t1174 - %t1176 = call %S.gen.Val @finch.gen.expr(ptr %t1168, %S.ast.Node %t1175) - %t1177 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5821, i64 3, i64 0 }) - %t1178 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1179 = load { ptr, i64, i64 }, ptr %t1178 - %t1180 = extractvalue { ptr, i64, i64 } %t1179, 1 - %t1181 = icmp uge i64 2, %t1180 - br i1 %t1181, label %range8946, label %inrange8947 -range8946: - call void @finch_panic_index(ptr @.str.5822, i64 5529, i64 2, i64 %t1180) - unreachable -inrange8947: - %t1182 = extractvalue { ptr, i64, i64 } %t1179, 0 - %t1183 = getelementptr inbounds %S.ast.Node, ptr %t1182, i64 2 - %t1184 = load %S.ast.Node, ptr %t1183 - %t1185 = call %S.gen.Val @finch.gen.coerce(ptr %t1167, %S.gen.Val %t1176, %S.ast.Type %t1177, %S.ast.Node %t1184, { ptr, i64, i64 } { ptr @.str.5823, i64 7, i64 0 }) - store %S.gen.Val %t1176, ptr %a1186 - call void @finch.drop.S_gen_Val(ptr %a1186) - store %S.ast.Type %t1177, ptr %a1187 - call void @finch.drop.S_ast_Type(ptr %a1187) - %t1188 = extractvalue %S.gen.Val %t1185, 0 - store { ptr, i64, i64 } %t1188, ptr %a1189 - call void @finch_str_copy(ptr %a1190, ptr %a1189) - %t1191 = load { ptr, i64, i64 }, ptr %a1190 - store %S.gen.Val %t1185, ptr %a1192 - call void @finch.drop.S_gen_Val(ptr %a1192) - store { ptr, i64, i64 } %t1191, ptr %a1193 - %t1194 = load ptr, ptr %a1 - %t1195 = load { ptr, i64, i64 }, ptr %a39 - %t1196 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1194, { ptr, i64, i64 } { ptr @.str.5824, i64 3, i64 0 }, { ptr, i64, i64 } %t1195) - store { ptr, i64, i64 } %t1196, ptr %a1197 - %t1198 = load ptr, ptr %a1 - %t1199 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5825, i64 13, i64 0 }, ptr %a1201 - store { ptr, i64, i64 } %t1199, ptr %a1202 - call void @finch_str_concat(ptr %a1200, ptr %a1201, ptr %a1202) - %t1203 = load { ptr, i64, i64 }, ptr %a1200 - store { ptr, i64, i64 } %t1203, ptr %a1205 - store { ptr, i64, i64 } { ptr @.str.5826, i64 3, i64 0 }, ptr %a1206 - call void @finch_str_concat(ptr %a1204, ptr %a1205, ptr %a1206) - store { ptr, i64, i64 } %t1203, ptr %a1207 - call void @finch_str_drop(ptr %a1207) - %t1208 = load { ptr, i64, i64 }, ptr %a1204 - %t1209 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1198, { ptr, i64, i64 } %t1208) - store { ptr, i64, i64 } %t1208, ptr %a1210 - call void @finch_str_drop(ptr %a1210) - store { ptr, i64, i64 } %t1209, ptr %a1211 - %t1212 = load ptr, ptr %a1 - %t1213 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5827, i64 13, i64 0 }, ptr %a1215 - store { ptr, i64, i64 } %t1213, ptr %a1216 - call void @finch_str_concat(ptr %a1214, ptr %a1215, ptr %a1216) - %t1217 = load { ptr, i64, i64 }, ptr %a1214 - store { ptr, i64, i64 } %t1217, ptr %a1219 - store { ptr, i64, i64 } { ptr @.str.5828, i64 2, i64 0 }, ptr %a1220 - call void @finch_str_concat(ptr %a1218, ptr %a1219, ptr %a1220) - store { ptr, i64, i64 } %t1217, ptr %a1221 - call void @finch_str_drop(ptr %a1221) - %t1222 = load { ptr, i64, i64 }, ptr %a1218 - %t1223 = load { ptr, i64, i64 }, ptr %a1197 - store { ptr, i64, i64 } %t1222, ptr %a1225 - store { ptr, i64, i64 } %t1223, ptr %a1226 - call void @finch_str_concat(ptr %a1224, ptr %a1225, ptr %a1226) - store { ptr, i64, i64 } %t1222, ptr %a1227 - call void @finch_str_drop(ptr %a1227) - %t1228 = load { ptr, i64, i64 }, ptr %a1224 - %t1229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1212, { ptr, i64, i64 } %t1228) - store { ptr, i64, i64 } %t1228, ptr %a1230 - call void @finch_str_drop(ptr %a1230) - store { ptr, i64, i64 } %t1229, ptr %a1231 - %t1232 = load ptr, ptr %a1 - %t1233 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5829, i64 13, i64 0 }, ptr %a1235 - store { ptr, i64, i64 } %t1233, ptr %a1236 - call void @finch_str_concat(ptr %a1234, ptr %a1235, ptr %a1236) - %t1237 = load { ptr, i64, i64 }, ptr %a1234 - store { ptr, i64, i64 } %t1237, ptr %a1239 - store { ptr, i64, i64 } { ptr @.str.5830, i64 2, i64 0 }, ptr %a1240 - call void @finch_str_concat(ptr %a1238, ptr %a1239, ptr %a1240) - store { ptr, i64, i64 } %t1237, ptr %a1241 - call void @finch_str_drop(ptr %a1241) - %t1242 = load { ptr, i64, i64 }, ptr %a1238 - %t1243 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } %t1242, ptr %a1245 - store { ptr, i64, i64 } %t1243, ptr %a1246 - call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246) - store { ptr, i64, i64 } %t1242, ptr %a1247 - call void @finch_str_drop(ptr %a1247) - %t1248 = load { ptr, i64, i64 }, ptr %a1244 - %t1249 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1232, { ptr, i64, i64 } %t1248) - store { ptr, i64, i64 } %t1248, ptr %a1250 - call void @finch_str_drop(ptr %a1250) - store { ptr, i64, i64 } %t1249, ptr %a1251 - %t1252 = load ptr, ptr %a1 - %t1253 = load ptr, ptr %a1 - %t1254 = load ptr, ptr %a1 - %t1255 = load { ptr, i64, i64 }, ptr %a1211 - store { ptr, i64, i64 } { ptr @.str.5832, i64 6, i64 0 }, ptr %a1257 - store { ptr, i64, i64 } %t1255, ptr %a1258 - call void @finch_str_concat(ptr %a1256, ptr %a1257, ptr %a1258) - %t1259 = load { ptr, i64, i64 }, ptr %a1256 - store { ptr, i64, i64 } %t1259, ptr %a1261 - store { ptr, i64, i64 } { ptr @.str.5833, i64 2, i64 0 }, ptr %a1262 - call void @finch_str_concat(ptr %a1260, ptr %a1261, ptr %a1262) - store { ptr, i64, i64 } %t1259, ptr %a1263 - call void @finch_str_drop(ptr %a1263) - %t1264 = load { ptr, i64, i64 }, ptr %a1260 - %t1265 = load { ptr, i64, i64 }, ptr %a1231 - store { ptr, i64, i64 } %t1264, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - store { ptr, i64, i64 } %t1264, ptr %a1269 - call void @finch_str_drop(ptr %a1269) - %t1270 = load { ptr, i64, i64 }, ptr %a1266 - %t1271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1254, { ptr, i64, i64 } %t1270) - store { ptr, i64, i64 } %t1270, ptr %a1272 - call void @finch_str_drop(ptr %a1272) - store { ptr, i64, i64 } { ptr @.str.5831, i64 6, i64 0 }, ptr %a1274 - store { ptr, i64, i64 } %t1271, ptr %a1275 - call void @finch_str_concat(ptr %a1273, ptr %a1274, ptr %a1275) - store { ptr, i64, i64 } %t1271, ptr %a1276 - call void @finch_str_drop(ptr %a1276) - %t1277 = load { ptr, i64, i64 }, ptr %a1273 - store { ptr, i64, i64 } %t1277, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5834, i64 2, i64 0 }, ptr %a1280 - call void @finch_str_concat(ptr %a1278, ptr %a1279, ptr %a1280) - store { ptr, i64, i64 } %t1277, ptr %a1281 - call void @finch_str_drop(ptr %a1281) - %t1282 = load { ptr, i64, i64 }, ptr %a1278 - %t1283 = load { ptr, i64, i64 }, ptr %a1251 - store { ptr, i64, i64 } %t1282, ptr %a1285 - store { ptr, i64, i64 } %t1283, ptr %a1286 - call void @finch_str_concat(ptr %a1284, ptr %a1285, ptr %a1286) - store { ptr, i64, i64 } %t1282, ptr %a1287 - call void @finch_str_drop(ptr %a1287) - %t1288 = load { ptr, i64, i64 }, ptr %a1284 - %t1289 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1253, { ptr, i64, i64 } %t1288) - store { ptr, i64, i64 } %t1288, ptr %a1290 - call void @finch_str_drop(ptr %a1290) - %t1291 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t1252, { ptr, i64, i64 } %t1289, { ptr, i64, i64 } { ptr @.str.5835, i64 33, i64 0 }, %S.ast.Node %t1291) - store { ptr, i64, i64 } %t1289, ptr %a1292 - call void @finch_str_drop(ptr %a1292) - %t1293 = load ptr, ptr %a1 - %t1294 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5836, i64 8, i64 0 }, ptr %a1296 - store { ptr, i64, i64 } %t1294, ptr %a1297 - call void @finch_str_concat(ptr %a1295, ptr %a1296, ptr %a1297) - %t1298 = load { ptr, i64, i64 }, ptr %a1295 - store { ptr, i64, i64 } %t1298, ptr %a1300 - store { ptr, i64, i64 } { ptr @.str.5837, i64 2, i64 0 }, ptr %a1301 - call void @finch_str_concat(ptr %a1299, ptr %a1300, ptr %a1301) - store { ptr, i64, i64 } %t1298, ptr %a1302 - call void @finch_str_drop(ptr %a1302) - %t1303 = load { ptr, i64, i64 }, ptr %a1299 - %t1304 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } %t1303, ptr %a1306 - store { ptr, i64, i64 } %t1304, ptr %a1307 - call void @finch_str_concat(ptr %a1305, ptr %a1306, ptr %a1307) - store { ptr, i64, i64 } %t1303, ptr %a1308 - call void @finch_str_drop(ptr %a1308) - %t1309 = load { ptr, i64, i64 }, ptr %a1305 - %t1310 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1293, { ptr, i64, i64 } %t1309) - store { ptr, i64, i64 } %t1309, ptr %a1311 - call void @finch_str_drop(ptr %a1311) - store { ptr, i64, i64 } %t1310, ptr %a1312 - %t1313 = load ptr, ptr %a1 - %t1314 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1313, { ptr, i64, i64 } { ptr @.str.5838, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1314, ptr %a1315 - %t1316 = load ptr, ptr %a1 - %t1317 = load { ptr, i64, i64 }, ptr %a1315 - store { ptr, i64, i64 } { ptr @.str.5839, i64 30, i64 0 }, ptr %a1319 - store { ptr, i64, i64 } %t1317, ptr %a1320 - call void @finch_str_concat(ptr %a1318, ptr %a1319, ptr %a1320) - %t1321 = load { ptr, i64, i64 }, ptr %a1318 - store { ptr, i64, i64 } %t1321, ptr %a1323 - store { ptr, i64, i64 } { ptr @.str.5840, i64 6, i64 0 }, ptr %a1324 - call void @finch_str_concat(ptr %a1322, ptr %a1323, ptr %a1324) - store { ptr, i64, i64 } %t1321, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1322 - %t1327 = load { ptr, i64, i64 }, ptr %a1312 - store { ptr, i64, i64 } %t1326, ptr %a1329 - store { ptr, i64, i64 } %t1327, ptr %a1330 - call void @finch_str_concat(ptr %a1328, ptr %a1329, ptr %a1330) - store { ptr, i64, i64 } %t1326, ptr %a1331 - call void @finch_str_drop(ptr %a1331) - %t1332 = load { ptr, i64, i64 }, ptr %a1328 - store { ptr, i64, i64 } %t1332, ptr %a1334 - store { ptr, i64, i64 } { ptr @.str.5841, i64 6, i64 0 }, ptr %a1335 - call void @finch_str_concat(ptr %a1333, ptr %a1334, ptr %a1335) - store { ptr, i64, i64 } %t1332, ptr %a1336 - call void @finch_str_drop(ptr %a1336) - %t1337 = load { ptr, i64, i64 }, ptr %a1333 - %t1338 = load ptr, ptr %a1 - %t1339 = load %S.ast.Type, ptr %a15 - %t1340 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1338, %S.ast.Type %t1339) - store { ptr, i64, i64 } %t1337, ptr %a1342 - store { ptr, i64, i64 } %t1340, ptr %a1343 - call void @finch_str_concat(ptr %a1341, ptr %a1342, ptr %a1343) - store { ptr, i64, i64 } %t1337, ptr %a1344 - call void @finch_str_drop(ptr %a1344) - store { ptr, i64, i64 } %t1340, ptr %a1345 - call void @finch_str_drop(ptr %a1345) - %t1346 = load { ptr, i64, i64 }, ptr %a1341 - store { ptr, i64, i64 } %t1346, ptr %a1348 - store { ptr, i64, i64 } { ptr @.str.5842, i64 1, i64 0 }, ptr %a1349 - call void @finch_str_concat(ptr %a1347, ptr %a1348, ptr %a1349) - store { ptr, i64, i64 } %t1346, ptr %a1350 - call void @finch_str_drop(ptr %a1350) - %t1351 = load { ptr, i64, i64 }, ptr %a1347 - call void @finch.gen.emit(ptr %t1316, { ptr, i64, i64 } %t1351) - store { ptr, i64, i64 } %t1351, ptr %a1352 - call void @finch_str_drop(ptr %a1352) - %t1353 = load ptr, ptr %a1 - %t1354 = load { ptr, i64, i64 }, ptr %a3 - %t1355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1353, { ptr, i64, i64 } { ptr @.str.5843, i64 3, i64 0 }, { ptr, i64, i64 } %t1354) - store { ptr, i64, i64 } %t1355, ptr %a1356 - %t1357 = load ptr, ptr %a1 - %t1358 = load { ptr, i64, i64 }, ptr %a1315 - %t1359 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1357, { ptr, i64, i64 } { ptr @.str.5844, i64 3, i64 0 }, { ptr, i64, i64 } %t1358) - store { ptr, i64, i64 } %t1359, ptr %a1360 - %t1361 = load ptr, ptr %a1 - %t1362 = load { ptr, i64, i64 }, ptr %a1312 - %t1363 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1361, { ptr, i64, i64 } %t1362) - store { ptr, i64, i64 } %t1363, ptr %a1364 - %t1365 = load ptr, ptr %a1 - %t1366 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5845, i64 23, i64 0 }, ptr %a1368 - store { ptr, i64, i64 } %t1366, ptr %a1369 - call void @finch_str_concat(ptr %a1367, ptr %a1368, ptr %a1369) - %t1370 = load { ptr, i64, i64 }, ptr %a1367 - store { ptr, i64, i64 } %t1370, ptr %a1372 - store { ptr, i64, i64 } { ptr @.str.5846, i64 6, i64 0 }, ptr %a1373 - call void @finch_str_concat(ptr %a1371, ptr %a1372, ptr %a1373) - store { ptr, i64, i64 } %t1370, ptr %a1374 - call void @finch_str_drop(ptr %a1374) - %t1375 = load { ptr, i64, i64 }, ptr %a1371 - %t1376 = load { ptr, i64, i64 }, ptr %a1360 - store { ptr, i64, i64 } %t1375, ptr %a1378 - store { ptr, i64, i64 } %t1376, ptr %a1379 - call void @finch_str_concat(ptr %a1377, ptr %a1378, ptr %a1379) - store { ptr, i64, i64 } %t1375, ptr %a1380 - call void @finch_str_drop(ptr %a1380) - %t1381 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1381, ptr %a1383 - store { ptr, i64, i64 } { ptr @.str.5847, i64 6, i64 0 }, ptr %a1384 - call void @finch_str_concat(ptr %a1382, ptr %a1383, ptr %a1384) - store { ptr, i64, i64 } %t1381, ptr %a1385 - call void @finch_str_drop(ptr %a1385) - %t1386 = load { ptr, i64, i64 }, ptr %a1382 - %t1387 = load { ptr, i64, i64 }, ptr %a1364 - %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 - %t1389 = icmp uge i64 3, %t1388 - br i1 %t1389, label %range8948, label %inrange8949 -range8948: - call void @finch_panic_index(ptr @.str.5848, i64 5541, i64 3, i64 %t1388) - unreachable -inrange8949: - %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 - %t1391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1390, i64 3 - %t1392 = load { ptr, i64, i64 }, ptr %t1391 - store { ptr, i64, i64 } %t1386, ptr %a1394 - store { ptr, i64, i64 } %t1392, ptr %a1395 - call void @finch_str_concat(ptr %a1393, ptr %a1394, ptr %a1395) - store { ptr, i64, i64 } %t1386, ptr %a1396 - call void @finch_str_drop(ptr %a1396) - %t1397 = load { ptr, i64, i64 }, ptr %a1393 - %t1398 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1365, { ptr, i64, i64 } %t1397) - store { ptr, i64, i64 } %t1397, ptr %a1399 - call void @finch_str_drop(ptr %a1399) - store { ptr, i64, i64 } %t1398, ptr %a1400 - %t1401 = load ptr, ptr %a1 - %t1402 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5849, i64 23, i64 0 }, ptr %a1404 - store { ptr, i64, i64 } %t1402, ptr %a1405 - call void @finch_str_concat(ptr %a1403, ptr %a1404, ptr %a1405) - %t1406 = load { ptr, i64, i64 }, ptr %a1403 - store { ptr, i64, i64 } %t1406, ptr %a1408 - store { ptr, i64, i64 } { ptr @.str.5850, i64 6, i64 0 }, ptr %a1409 - call void @finch_str_concat(ptr %a1407, ptr %a1408, ptr %a1409) - store { ptr, i64, i64 } %t1406, ptr %a1410 - call void @finch_str_drop(ptr %a1410) - %t1411 = load { ptr, i64, i64 }, ptr %a1407 - %t1412 = load { ptr, i64, i64 }, ptr %a1356 - store { ptr, i64, i64 } %t1411, ptr %a1414 - store { ptr, i64, i64 } %t1412, ptr %a1415 - call void @finch_str_concat(ptr %a1413, ptr %a1414, ptr %a1415) - store { ptr, i64, i64 } %t1411, ptr %a1416 - call void @finch_str_drop(ptr %a1416) - %t1417 = load { ptr, i64, i64 }, ptr %a1413 - store { ptr, i64, i64 } %t1417, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5851, i64 6, i64 0 }, ptr %a1420 - call void @finch_str_concat(ptr %a1418, ptr %a1419, ptr %a1420) - store { ptr, i64, i64 } %t1417, ptr %a1421 - call void @finch_str_drop(ptr %a1421) - %t1422 = load { ptr, i64, i64 }, ptr %a1418 - %t1423 = load ptr, ptr %a1 - %t1424 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5852, i64 8, i64 0 }, ptr %a1426 - store { ptr, i64, i64 } %t1424, ptr %a1427 - call void @finch_str_concat(ptr %a1425, ptr %a1426, ptr %a1427) - %t1428 = load { ptr, i64, i64 }, ptr %a1425 - store { ptr, i64, i64 } %t1428, ptr %a1430 - store { ptr, i64, i64 } { ptr @.str.5853, i64 2, i64 0 }, ptr %a1431 - call void @finch_str_concat(ptr %a1429, ptr %a1430, ptr %a1431) - store { ptr, i64, i64 } %t1428, ptr %a1432 - call void @finch_str_drop(ptr %a1432) - %t1433 = load { ptr, i64, i64 }, ptr %a1429 - %t1434 = load { ptr, i64, i64 }, ptr %a1364 - %t1435 = extractvalue { ptr, i64, i64 } %t1434, 1 - %t1436 = icmp uge i64 3, %t1435 - br i1 %t1436, label %range8950, label %inrange8951 -range8950: - call void @finch_panic_index(ptr @.str.5854, i64 5542, i64 3, i64 %t1435) - unreachable -inrange8951: - %t1437 = extractvalue { ptr, i64, i64 } %t1434, 0 - %t1438 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1437, i64 3 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1433, ptr %a1441 - store { ptr, i64, i64 } %t1439, ptr %a1442 - call void @finch_str_concat(ptr %a1440, ptr %a1441, ptr %a1442) - store { ptr, i64, i64 } %t1433, ptr %a1443 - call void @finch_str_drop(ptr %a1443) - %t1444 = load { ptr, i64, i64 }, ptr %a1440 - %t1445 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1423, { ptr, i64, i64 } %t1444) - store { ptr, i64, i64 } %t1444, ptr %a1446 - call void @finch_str_drop(ptr %a1446) - store { ptr, i64, i64 } %t1422, ptr %a1448 - store { ptr, i64, i64 } %t1445, ptr %a1449 - call void @finch_str_concat(ptr %a1447, ptr %a1448, ptr %a1449) - store { ptr, i64, i64 } %t1422, ptr %a1450 - call void @finch_str_drop(ptr %a1450) - store { ptr, i64, i64 } %t1445, ptr %a1451 - call void @finch_str_drop(ptr %a1451) - %t1452 = load { ptr, i64, i64 }, ptr %a1447 - %t1453 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1401, { ptr, i64, i64 } %t1452) - store { ptr, i64, i64 } %t1452, ptr %a1454 - call void @finch_str_drop(ptr %a1454) - store { ptr, i64, i64 } %t1453, ptr %a1455 - %t1456 = load ptr, ptr %a1 - %t1457 = load { ptr, i64, i64 }, ptr %a1400 - %t1458 = load { ptr, i64, i64 }, ptr %a1455 - %t1459 = load %S.ast.Type, ptr %a15 - call void @finch.gen.copyAt(ptr %t1456, { ptr, i64, i64 } %t1457, { ptr, i64, i64 } %t1458, %S.ast.Type %t1459) - %t1460 = load ptr, ptr %a1 - %t1461 = load { ptr, i64, i64 }, ptr %a1364 - call void @finch.gen.loopEnd(ptr %t1460, { ptr, i64, i64 } %t1461) - %t1462 = load ptr, ptr %a1 - %t1463 = load { ptr, i64, i64 }, ptr %a1315 - %t1464 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1462, { ptr, i64, i64 } { ptr @.str.5855, i64 17, i64 0 }, { ptr, i64, i64 } %t1463) - %t1465 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1464, 0 - %t1466 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t1466, ptr %a1467 - call void @finch.copy.S_ast_Type(ptr %a1468, ptr %a1467) - %t1469 = load %S.ast.Type, ptr %a1468 - %t1470 = insertvalue %S.gen.Val %t1465, %S.ast.Type %t1469, 1 - %t1471 = insertvalue %S.gen.Val %t1470, i1 true, 2 - call void @finch_str_drop(ptr %a1455) - call void @finch_str_drop(ptr %a1400) - call void @finch.drop.arr_str(ptr %a1364) - call void @finch_str_drop(ptr %a1360) - call void @finch_str_drop(ptr %a1356) - call void @finch_str_drop(ptr %a1315) - call void @finch_str_drop(ptr %a1312) - call void @finch_str_drop(ptr %a1251) - call void @finch_str_drop(ptr %a1231) - call void @finch_str_drop(ptr %a1211) - call void @finch_str_drop(ptr %a1197) - call void @finch_str_drop(ptr %a1193) - call void @finch_str_drop(ptr %a1166) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1471 -endif8939: - %t1472 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1472, ptr %a1473 - store { ptr, i64, i64 } { ptr @.str.5856, i64 4, i64 0 }, ptr %a1474 - %t1475 = call i32 @finch_str_eq(ptr %a1473, ptr %a1474) - %t1476 = icmp ne i32 %t1475, 0 - br i1 %t1476, label %then8952, label %endif8954 -then8952: - %t1477 = load ptr, ptr %a1 - %t1478 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1477, %S.ast.Node %t1478, i64 0) - %t1479 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t1480 = load { ptr, i64, i64 }, ptr %t1479 - store { ptr, i64, i64 } %t1480, ptr %a1481 - call void @finch_str_copy(ptr %a1482, ptr %a1481) - %t1483 = load { ptr, i64, i64 }, ptr %a1482 - store { ptr, i64, i64 } %t1483, ptr %a1484 - %t1485 = load %S.ast.Type, ptr %a15 - %t1486 = call i1 @finch.gen.isNumber(%S.ast.Type %t1485) - %t1487 = xor i1 %t1486, true - br label %logic.from8955 -logic.from8955: - br i1 %t1487, label %logic.rhs8956, label %logic.end8957 -logic.rhs8956: - %t1488 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1488, ptr %a1489 - store { ptr, i64, i64 } { ptr @.str.5857, i64 4, i64 0 }, ptr %a1490 - %t1491 = call i32 @finch_str_eq(ptr %a1489, ptr %a1490) - %t1492 = icmp eq i32 %t1491, 0 - br label %logic.rend8958 -logic.rend8958: - br label %logic.end8957 -logic.end8957: - %t1493 = phi i1 [ false, %logic.from8955 ], [ %t1492, %logic.rend8958 ] - br label %logic.from8959 -logic.from8959: - br i1 %t1493, label %logic.rhs8960, label %logic.end8961 -logic.rhs8960: - %t1494 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1494, ptr %a1495 - store { ptr, i64, i64 } { ptr @.str.5858, i64 3, i64 0 }, ptr %a1496 - %t1497 = call i32 @finch_str_eq(ptr %a1495, ptr %a1496) - %t1498 = icmp eq i32 %t1497, 0 - br label %logic.rend8962 -logic.rend8962: - br label %logic.end8961 -logic.end8961: - %t1499 = phi i1 [ false, %logic.from8959 ], [ %t1498, %logic.rend8962 ] - br i1 %t1499, label %then8963, label %endif8965 -then8963: - %t1500 = load ptr, ptr %a1 - %t1501 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t1500, %S.ast.Node %t1501, { ptr, i64, i64 } { ptr @.str.5859, i64 47, i64 0 }) - br label %endif8965 -endif8965: - %t1502 = load ptr, ptr %a1 - %t1503 = load %S.ast.Type, ptr %a15 - %t1504 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1502, %S.ast.Type %t1503) - store { ptr, i64, i64 } %t1504, ptr %a1505 - %t1506 = load ptr, ptr %a1 - %t1507 = load { ptr, i64, i64 }, ptr %a39 - %t1508 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1506, { ptr, i64, i64 } { ptr @.str.5860, i64 3, i64 0 }, { ptr, i64, i64 } %t1507) - store { ptr, i64, i64 } %t1508, ptr %a1509 - %t1510 = load ptr, ptr %a1 - %t1511 = load { ptr, i64, i64 }, ptr %a3 - %t1512 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1510, { ptr, i64, i64 } { ptr @.str.5861, i64 3, i64 0 }, { ptr, i64, i64 } %t1511) - store { ptr, i64, i64 } %t1512, ptr %a1513 - %t1514 = load ptr, ptr %a1 - %t1515 = load { ptr, i64, i64 }, ptr %a1513 - store { ptr, i64, i64 } { ptr @.str.5862, i64 21, i64 0 }, ptr %a1517 - store { ptr, i64, i64 } %t1515, ptr %a1518 - call void @finch_str_concat(ptr %a1516, ptr %a1517, ptr %a1518) - %t1519 = load { ptr, i64, i64 }, ptr %a1516 - store { ptr, i64, i64 } %t1519, ptr %a1521 - store { ptr, i64, i64 } { ptr @.str.5863, i64 6, i64 0 }, ptr %a1522 - call void @finch_str_concat(ptr %a1520, ptr %a1521, ptr %a1522) - store { ptr, i64, i64 } %t1519, ptr %a1523 - call void @finch_str_drop(ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1520 - %t1525 = load { ptr, i64, i64 }, ptr %a1509 - store { ptr, i64, i64 } %t1524, ptr %a1527 - store { ptr, i64, i64 } %t1525, ptr %a1528 - call void @finch_str_concat(ptr %a1526, ptr %a1527, ptr %a1528) - store { ptr, i64, i64 } %t1524, ptr %a1529 - call void @finch_str_drop(ptr %a1529) - %t1530 = load { ptr, i64, i64 }, ptr %a1526 - store { ptr, i64, i64 } %t1530, ptr %a1532 - store { ptr, i64, i64 } { ptr @.str.5864, i64 6, i64 0 }, ptr %a1533 - call void @finch_str_concat(ptr %a1531, ptr %a1532, ptr %a1533) - store { ptr, i64, i64 } %t1530, ptr %a1534 - call void @finch_str_drop(ptr %a1534) - %t1535 = load { ptr, i64, i64 }, ptr %a1531 - %t1536 = load ptr, ptr %a1 - %t1537 = load %S.ast.Type, ptr %a15 - %t1538 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1536, %S.ast.Type %t1537) - store { ptr, i64, i64 } %t1535, ptr %a1540 - store { ptr, i64, i64 } %t1538, ptr %a1541 - call void @finch_str_concat(ptr %a1539, ptr %a1540, ptr %a1541) - store { ptr, i64, i64 } %t1535, ptr %a1542 - call void @finch_str_drop(ptr %a1542) - store { ptr, i64, i64 } %t1538, ptr %a1543 - call void @finch_str_drop(ptr %a1543) - %t1544 = load { ptr, i64, i64 }, ptr %a1539 - store { ptr, i64, i64 } %t1544, ptr %a1546 - store { ptr, i64, i64 } { ptr @.str.5865, i64 6, i64 0 }, ptr %a1547 - call void @finch_str_concat(ptr %a1545, ptr %a1546, ptr %a1547) - store { ptr, i64, i64 } %t1544, ptr %a1548 - call void @finch_str_drop(ptr %a1548) - %t1549 = load { ptr, i64, i64 }, ptr %a1545 - %t1550 = load { ptr, i64, i64 }, ptr %a1505 - store { ptr, i64, i64 } %t1549, ptr %a1552 - store { ptr, i64, i64 } %t1550, ptr %a1553 - call void @finch_str_concat(ptr %a1551, ptr %a1552, ptr %a1553) - store { ptr, i64, i64 } %t1549, ptr %a1554 - call void @finch_str_drop(ptr %a1554) - %t1555 = load { ptr, i64, i64 }, ptr %a1551 - store { ptr, i64, i64 } %t1555, ptr %a1557 - store { ptr, i64, i64 } { ptr @.str.5866, i64 1, i64 0 }, ptr %a1558 - call void @finch_str_concat(ptr %a1556, ptr %a1557, ptr %a1558) - store { ptr, i64, i64 } %t1555, ptr %a1559 - call void @finch_str_drop(ptr %a1559) - %t1560 = load { ptr, i64, i64 }, ptr %a1556 - call void @finch.gen.emit(ptr %t1514, { ptr, i64, i64 } %t1560) - store { ptr, i64, i64 } %t1560, ptr %a1561 - call void @finch_str_drop(ptr %a1561) - %t1562 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5867, i64 4, i64 0 }) - %t1563 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1562, 1 - call void @finch_str_drop(ptr %a1513) - call void @finch_str_drop(ptr %a1509) - call void @finch_str_drop(ptr %a1505) - call void @finch_str_drop(ptr %a1484) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1563 -endif8954: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.5868, i64 24, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5869, i64 96, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1575) - store { ptr, i64, i64 } %t1575, ptr %a1576 - call void @finch_str_drop(ptr %a1576) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val zeroinitializer -} - -define internal void @finch.gen.dropFrom(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca %S.ast.Type, align 16 - %a13 = alloca %S.ast.Type, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t6 = load { ptr, i64, i64 }, ptr %t5 - %t7 = extractvalue { ptr, i64, i64 } %t6, 1 - %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range8966, label %inrange8967 -range8966: - call void @finch_panic_index(ptr @.str.5870, i64 5565, i64 0, i64 %t7) - unreachable -inrange8967: - %t9 = extractvalue { ptr, i64, i64 } %t6, 0 - %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 - %t11 = load %S.ast.Type, ptr %t10 - store %S.ast.Type %t11, ptr %a12 - call void @finch.copy.S_ast_Type(ptr %a13, ptr %a12) - %t14 = load %S.ast.Type, ptr %a13 - store %S.ast.Type %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = load %S.ast.Type, ptr %a15 - %t18 = call i1 @finch.gen.owning(ptr %t16, %S.ast.Type %t17) - %t19 = xor i1 %t18, true - br i1 %t19, label %then8968, label %endif8970 -then8968: - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -endif8970: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Type, ptr %a15 - %t22 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t21) - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = load ptr, ptr %a1 - %t26 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.5872, i64 46, i64 0 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5873, i64 14, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = call { ptr, i64, i64 } @finch.gen.load(ptr %t24, { ptr, i64, i64 } { ptr @.str.5871, i64 3, i64 0 }, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_drop(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load ptr, ptr %a1 - %t42 = load { ptr, i64, i64 }, ptr %a2 - %t43 = call { ptr, i64, i64 } @finch.gen.load(ptr %t41, { ptr, i64, i64 } { ptr @.str.5874, i64 3, i64 0 }, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5875, 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.5876, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - store { ptr, i64, i64 } %t62, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5877, i64 13, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.5878, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t75) - store { ptr, i64, i64 } %t75, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t76, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.5879, i64 10, i64 0 }, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.5880, i64 6, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.5881, i64 10, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5882, i64 13, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t89, ptr %a110 - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t89, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t107, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.5883, i64 6, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - %t126 = call { ptr, i64, i64 } @finch.gen.op(ptr %t79, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a127 - call void @finch_str_drop(ptr %a127) - store { ptr, i64, i64 } %t126, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = load ptr, ptr %a1 - %t131 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.5884, i64 8, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5885, i64 2, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t140, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t140, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t130, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t129, { ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.5886, i64 23, i64 0 }, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5887, i64 6, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5888, i64 6, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load ptr, ptr %a1 - %t175 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5889, i64 8, i64 0 }, ptr %a177 - store { ptr, i64, i64 } %t175, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.5890, i64 2, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = load { ptr, i64, i64 }, ptr %a151 - %t186 = extractvalue { ptr, i64, i64 } %t185, 1 - %t187 = icmp uge i64 3, %t186 - br i1 %t187, label %range8971, label %inrange8972 -range8971: - call void @finch_panic_index(ptr @.str.5891, i64 5576, i64 3, i64 %t186) - unreachable -inrange8972: - %t188 = extractvalue { ptr, i64, i64 } %t185, 0 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } %t184, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t184, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = call { ptr, i64, i64 } @finch.gen.op(ptr %t174, { ptr, i64, i64 } %t195) - store { ptr, i64, i64 } %t195, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t173, ptr %a199 - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t173, ptr %a201 - call void @finch_str_drop(ptr %a201) - store { ptr, i64, i64 } %t196, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a198 - %t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t152, { ptr, i64, i64 } %t203) - store { ptr, i64, i64 } %t203, ptr %a205 - call void @finch_str_drop(ptr %a205) - store { ptr, i64, i64 } %t204, ptr %a206 - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a206 - %t209 = load %S.ast.Type, ptr %a15 - call void @finch.gen.dropAt(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a151 - call void @finch.gen.loopEnd(ptr %t210, { ptr, i64, i64 } %t211) - call void @finch_str_drop(ptr %a206) - call void @finch.drop.arr_str(ptr %a151) - call void @finch_str_drop(ptr %a128) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a64) - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a40) - call void @finch_str_drop(ptr %a23) - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cmpFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = 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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.5892, i64 11, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic8973, label %ok8974 -panic8973: - call void @finch_panic(ptr @.str.5893, i64 5584, ptr @.str.5894) - unreachable -ok8974: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then8975, label %endif8977 -then8975: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif8977: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic8978, label %ok8979 -panic8978: - call void @finch_panic(ptr @.str.5895, i64 5587, ptr @.str.5896) - unreachable -ok8979: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5897, i64 0, i64 0 }, ptr %a33 - %t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.5898, 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 %then8980, label %else8981 -then8980: - %t40 = load ptr, ptr %a1 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t40, { ptr, i64, i64 } { ptr @.str.5899, i64 39, i64 0 }) - store { ptr, i64, i64 } %t41, ptr %a42 - %t43 = load ptr, ptr %a1 - %t44 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5900, i64 10, i64 0 }, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5901, i64 7, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } %t53, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t54, ptr %a33 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a42) - br label %endif8982 -else8981: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.load(ptr %t62, { ptr, i64, i64 } %t63, { ptr, i64, i64 } { ptr @.str.5902, i64 2, i64 0 }) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load { ptr, i64, i64 }, ptr %a61 - %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } { ptr @.str.5903, i64 2, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5904, i64 0, i64 0 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5905, i64 0, i64 0 }, ptr %a71 - %t72 = load %S.ast.Type, ptr %a2 - %t73 = call i1 @finch.gen.isFloat(%S.ast.Type %t72) - br i1 %t73, label %then8983, label %else8984 -then8983: - %t74 = load ptr, ptr %a1 - %t75 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5906, 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.5907, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t84, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.5908, i64 2, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - %t96 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t95, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t102, ptr %a70 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load ptr, ptr %a1 - %t107 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5909, i64 9, i64 0 }, ptr %a109 - store { ptr, i64, i64 } %t107, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.5910, i64 1, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.5911, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t127, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t127, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t133) - store { ptr, i64, i64 } %t133, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t134, ptr %a71 - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif8985 -else8984: - %t138 = load ptr, ptr %a1 - %t139 = load %S.ast.Type, ptr %a2 - %t140 = call i1 @finch.gen.isSigned(%S.ast.Type %t139) - %t141 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5913, i64 1, i64 0 }, i1 %t140) - store { ptr, i64, i64 } { ptr @.str.5912, i64 5, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5914, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t151, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t151, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5915, i64 1, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5916, i64 2, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t180, ptr %a70 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Type, ptr %a2 - %t186 = call i1 @finch.gen.isSigned(%S.ast.Type %t185) - %t187 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5918, i64 1, i64 0 }, i1 %t186) - store { ptr, i64, i64 } { ptr @.str.5917, i64 5, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5919, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.5920, i64 1, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t214, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.5921, i64 2, i64 0 }, ptr %a217 - call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) - store { ptr, i64, i64 } %t214, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a215 - %t220 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t219, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a221 - %t226 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t225) - store { ptr, i64, i64 } %t225, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t226, ptr %a71 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch_str_drop(ptr %a229) - br label %endif8985 -endif8985: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.5923, i64 8, i64 0 }, ptr %a234 - store { ptr, i64, i64 } %t232, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.5924, i64 7, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } { ptr @.str.5922, i64 8, i64 0 }, ptr %a245 - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.5925, i64 2, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5926, i64 8, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.5927, i64 7, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t264) - store { ptr, i64, i64 } %t264, ptr %a266 - call void @finch_str_drop(ptr %a266) - store { ptr, i64, i64 } %t253, ptr %a268 - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t253, ptr %a270 - call void @finch_str_drop(ptr %a270) - store { ptr, i64, i64 } %t265, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a267 - %t273 = call { ptr, i64, i64 } @finch.gen.op(ptr %t230, { ptr, i64, i64 } %t272) - store { ptr, i64, i64 } %t272, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t273, ptr %a33 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_drop(ptr %a276) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a65) - call void @finch_str_drop(ptr %a61) - br label %endif8982 -endif8982: - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.5928, i64 8, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.emit(ptr %t277, { ptr, i64, i64 } %t282) - store { ptr, i64, i64 } %t282, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load ptr, ptr %a1 - %t285 = load %S.gen.Saved, ptr %a32 - %t286 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.5929, i64 20, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.5930, i64 16, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - call void @finch.gen.endHelper(ptr %t284, %S.gen.Saved %t285, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a33) - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t297 -} - -define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca %S.gen.Val, align 16 - %a81 = alloca %S.ast.Type, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca %S.gen.Val, 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 - %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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.gen.Val, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a446 = alloca i64, align 16 - %a458 = alloca %S.gen.Val, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca %S.gen.Val, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca %S.ast.Type, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca %S.gen.Val, align 16 - %a621 = alloca %S.ast.Type, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca %S.gen.Val, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a698 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca %S.ast.Type, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %panic8986, label %ok8987 -panic8986: - call void @finch_panic(ptr @.str.5931, i64 5616, ptr @.str.5932) - unreachable -ok8987: - %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 %range8988, label %inrange8989 -range8988: - call void @finch_panic_index(ptr @.str.5933, i64 5616, i64 %t18, i64 %t20) - unreachable -inrange8989: - %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.5934, 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 %then8990, label %endif8992 -then8990: - %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 %range8993, label %inrange8994 -range8993: - call void @finch_panic_index(ptr @.str.5935, i64 5619, i64 1, i64 %t38) - unreachable -inrange8994: - %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.5936, 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 %range8995, label %inrange8996 -range8995: - call void @finch_panic_index(ptr @.str.5937, i64 5619, i64 1, i64 %t47) - unreachable -inrange8996: - %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.5938, i64 9, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = extractvalue { ptr, i64, i64 } %t64, 1 - %t66 = icmp uge i64 2, %t65 - br i1 %t66, label %range8997, label %inrange8998 -range8997: - call void @finch_panic_index(ptr @.str.5939, i64 5620, i64 2, i64 %t65) - unreachable -inrange8998: - %t67 = extractvalue { ptr, i64, i64 } %t64, 0 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 2 - %t69 = load %S.ast.Node, ptr %t68 - %t70 = call %S.gen.Val @finch.gen.expr(ptr %t62, %S.ast.Node %t69) - %t71 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5940, i64 3, i64 0 }) - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 2, %t74 - br i1 %t75, label %range8999, label %inrange9000 -range8999: - call void @finch_panic_index(ptr @.str.5941, i64 5620, i64 2, i64 %t74) - unreachable -inrange9000: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 2 - %t78 = load %S.ast.Node, ptr %t77 - %t79 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t70, %S.ast.Type %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5942, i64 7, i64 0 }) - store %S.gen.Val %t70, ptr %a80 - call void @finch.drop.S_gen_Val(ptr %a80) - store %S.ast.Type %t71, ptr %a81 - call void @finch.drop.S_ast_Type(ptr %a81) - %t82 = extractvalue %S.gen.Val %t79, 0 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_copy(ptr %a84, ptr %a83) - %t85 = load { ptr, i64, i64 }, ptr %a84 - store %S.gen.Val %t79, ptr %a86 - call void @finch.drop.S_gen_Val(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5943, i64 29, i64 0 }, ptr %a91 - store { ptr, i64, i64 } %t89, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5944, i64 6, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t98, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.5945, i64 6, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t109, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t109, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.5946, i64 6, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t120, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5947, i64 6, i64 0 }, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - %t132 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t131, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t131, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.5948, i64 6, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t144 = load i64, ptr %t143 - call void @finch_str_from_int(ptr %a145, i64 %t144) - %t146 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t142, ptr %a148 - store { ptr, i64, i64 } %t146, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t142, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.5949, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load { ptr, i64, i64 }, ptr %a12 - %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.5950, i64 17, i64 0 }, { ptr, i64, i64 } %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5951, i64 3, i64 0 }) - %t164 = insertvalue %S.gen.Val %t162, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 2 - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a60) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t165 -endif8992: - %t166 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.5952, i64 4, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from9001 -logic.from9001: - br i1 %t170, label %logic.end9003, label %logic.rhs9002 -logic.rhs9002: - %t171 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5953, i64 8, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend9004 -logic.rend9004: - br label %logic.end9003 -logic.end9003: - %t176 = phi i1 [ true, %logic.from9001 ], [ %t175, %logic.rend9004 ] - br label %logic.from9005 -logic.from9005: - br i1 %t176, label %logic.end9007, label %logic.rhs9006 -logic.rhs9006: - %t177 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.5954, i64 11, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend9008 -logic.rend9008: - br label %logic.end9007 -logic.end9007: - %t182 = phi i1 [ true, %logic.from9005 ], [ %t181, %logic.rend9008 ] - br label %logic.from9009 -logic.from9009: - br i1 %t182, label %logic.end9011, label %logic.rhs9010 -logic.rhs9010: - %t183 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5955, i64 9, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend9012 -logic.rend9012: - br label %logic.end9011 -logic.end9011: - %t188 = phi i1 [ true, %logic.from9009 ], [ %t187, %logic.rend9012 ] - br i1 %t188, label %then9013, label %endif9015 -then9013: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t189, %S.ast.Node %t190, i64 1) - %t191 = load ptr, ptr %a1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 1, %t194 - br i1 %t195, label %range9016, label %inrange9017 -range9016: - call void @finch_panic_index(ptr @.str.5956, i64 5626, i64 1, i64 %t194) - unreachable -inrange9017: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 1 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = call %S.gen.Val @finch.gen.strArg(ptr %t191, %S.ast.Node %t198, { ptr, i64, i64 } { ptr @.str.5957, i64 20, i64 0 }) - store %S.gen.Val %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load %S.gen.Val, ptr %a200 - %t203 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t201, %S.gen.Val %t202) - store { ptr, i64, i64 } %t203, ptr %a204 - %t205 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.5958, i64 4, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - br i1 %t209, label %then9018, label %endif9020 -then9018: - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5959, i64 29, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.5960, i64 6, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t220, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.5961, i64 1, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - %t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t232, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t235, %S.gen.Val %t236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_copy(ptr %a239, ptr %a238) - %t240 = load { ptr, i64, i64 }, ptr %a239 - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t240, 0 - %t242 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5962, i64 3, i64 0 }) - %t243 = insertvalue %S.gen.Val %t241, %S.ast.Type %t242, 1 - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t243 -endif9020: - %t244 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.5963, i64 8, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then9021, label %endif9023 -then9021: - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5964, i64 29, i64 0 }, ptr %a252 - store { ptr, i64, i64 } %t250, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a251 - store { ptr, i64, i64 } %t254, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.5965, i64 6, i64 0 }, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - store { ptr, i64, i64 } %t254, ptr %a258 - call void @finch_str_drop(ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t259, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a261 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.5966, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - store { ptr, i64, i64 } %t271, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.5967, i64 13, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.5968, i64 3, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t274, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - store { ptr, i64, i64 } %t285, ptr %a287 - %t288 = load ptr, ptr %a1 - %t289 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t288, %S.gen.Val %t289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5969, i64 4, i64 0 }) - %t296 = insertvalue %S.gen.Val %t294, %S.ast.Type %t295, 1 - call void @finch_str_drop(ptr %a287) - call void @finch_str_drop(ptr %a273) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t296 -endif9023: - store { ptr, i64, i64 } { ptr @.str.5970, i64 17, i64 0 }, ptr %a297 - %t298 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t298, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5971, i64 9, i64 0 }, ptr %a300 - %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) - %t302 = icmp ne i32 %t301, 0 - br i1 %t302, label %then9024, label %endif9026 -then9024: - %t303 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5972, i64 15, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif9026 -endif9026: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5973, i64 9, i64 0 }, ptr %a308 - store { ptr, i64, i64 } %t306, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a307 - store { ptr, i64, i64 } %t310, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.5974, i64 5, i64 0 }, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - %t316 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t315, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - store { ptr, i64, i64 } %t315, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t321, ptr %a323 - store { ptr, i64, i64 } { ptr @.str.5975, i64 6, i64 0 }, ptr %a324 - call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) - store { ptr, i64, i64 } %t321, ptr %a325 - call void @finch_str_drop(ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a322 - %t327 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t326, ptr %a329 - store { ptr, i64, i64 } %t327, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t326, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t332, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.5976, i64 1, i64 0 }, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - store { ptr, i64, i64 } %t332, ptr %a336 - call void @finch_str_drop(ptr %a336) - %t337 = load { ptr, i64, i64 }, ptr %a333 - %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t305, { ptr, i64, i64 } %t337) - store { ptr, i64, i64 } %t337, ptr %a339 - call void @finch_str_drop(ptr %a339) - store { ptr, i64, i64 } %t338, ptr %a340 - %t341 = load ptr, ptr %a1 - %t342 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.5977, i64 12, i64 0 }, ptr %a344 - store { ptr, i64, i64 } %t342, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.5978, i64 3, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load { ptr, i64, i64 }, ptr %a354 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_copy(ptr %a359, ptr %a358) - %t360 = load { ptr, i64, i64 }, ptr %a359 - %t361 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t360, 0 - %t362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5979, i64 4, i64 0 }) - %t363 = insertvalue %S.gen.Val %t361, %S.ast.Type %t362, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a340) - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t363 -endif9015: - %t364 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br label %logic.from9027 -logic.from9027: - br i1 %t368, label %logic.end9029, label %logic.rhs9028 -logic.rhs9028: - %t369 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t369, ptr %a370 - store { ptr, i64, i64 } { ptr @.str.5981, i64 5, i64 0 }, ptr %a371 - %t372 = call i32 @finch_str_eq(ptr %a370, ptr %a371) - %t373 = icmp ne i32 %t372, 0 - br label %logic.rend9030 -logic.rend9030: - br label %logic.end9029 -logic.end9029: - %t374 = phi i1 [ true, %logic.from9027 ], [ %t373, %logic.rend9030 ] - br label %logic.from9031 -logic.from9031: - br i1 %t374, label %logic.end9033, label %logic.rhs9032 -logic.rhs9032: - %t375 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t375, ptr %a376 - store { ptr, i64, i64 } { ptr @.str.5982, i64 5, i64 0 }, ptr %a377 - %t378 = call i32 @finch_str_eq(ptr %a376, ptr %a377) - %t379 = icmp ne i32 %t378, 0 - br label %logic.rend9034 -logic.rend9034: - br label %logic.end9033 -logic.end9033: - %t380 = phi i1 [ true, %logic.from9031 ], [ %t379, %logic.rend9034 ] - br i1 %t380, label %then9035, label %endif9037 -then9035: - %t381 = load ptr, ptr %a1 - %t382 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t381, %S.ast.Node %t382, i64 0) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5983, i64 21, i64 0 }, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.5984, i64 5, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t393, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t393, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.5985, i64 6, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t404, ptr %a407 - store { ptr, i64, i64 } %t405, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t404, ptr %a409 - call void @finch_str_drop(ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5986, i64 1, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - call void @finch.gen.emit(ptr %t383, { ptr, i64, i64 } %t415) - store { ptr, i64, i64 } %t415, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load ptr, ptr %a1 - %t418 = load { ptr, i64, i64 }, ptr %a12 - %t419 = call { ptr, i64, i64 } @finch.gen.load(ptr %t417, { ptr, i64, i64 } { ptr @.str.5987, i64 17, i64 0 }, { ptr, i64, i64 } %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5988, i64 3, i64 0 }) - %t422 = insertvalue %S.gen.Val %t420, %S.ast.Type %t421, 1 - %t423 = insertvalue %S.gen.Val %t422, i1 true, 2 - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t423 -endif9037: - %t424 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t424, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.5989, i64 7, i64 0 }, ptr %a426 - %t427 = call i32 @finch_str_eq(ptr %a425, ptr %a426) - %t428 = icmp ne i32 %t427, 0 - br i1 %t428, label %then9038, label %endif9040 -then9038: - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t429, %S.ast.Node %t430, i64 2) - %t431 = load ptr, ptr %a1 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = extractvalue { ptr, i64, i64 } %t433, 1 - %t435 = icmp uge i64 1, %t434 - br i1 %t435, label %range9041, label %inrange9042 -range9041: - call void @finch_panic_index(ptr @.str.5990, i64 5655, i64 1, i64 %t434) - unreachable -inrange9042: - %t436 = extractvalue { ptr, i64, i64 } %t433, 0 - %t437 = getelementptr inbounds %S.ast.Node, ptr %t436, i64 1 - %t438 = load %S.ast.Node, ptr %t437 - %t439 = call %S.gen.Val @finch.gen.strArg(ptr %t431, %S.ast.Node %t438, { ptr, i64, i64 } { ptr @.str.5991, i64 19, i64 0 }) - store %S.gen.Val %t439, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = icmp eq ptr %t441, null - br i1 %t442, label %panic9043, label %ok9044 -panic9043: - call void @finch_panic(ptr @.str.5992, i64 5656, ptr @.str.5993) - unreachable -ok9044: - %t443 = getelementptr inbounds %S.gen.Gen, ptr %t441, i32 0, i32 11 - %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i32 0, i32 1 - %t445 = load i64, ptr %t444 - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load %S.gen.Val, ptr %a440 - call void @finch.gen.hold(ptr %t447, %S.gen.Val %t448) - %t449 = load ptr, ptr %a1 - %t450 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t451 = load { ptr, i64, i64 }, ptr %t450 - %t452 = extractvalue { ptr, i64, i64 } %t451, 1 - %t453 = icmp uge i64 2, %t452 - br i1 %t453, label %range9045, label %inrange9046 -range9045: - call void @finch_panic_index(ptr @.str.5994, i64 5658, i64 2, i64 %t452) - unreachable -inrange9046: - %t454 = extractvalue { ptr, i64, i64 } %t451, 0 - %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 2 - %t456 = load %S.ast.Node, ptr %t455 - %t457 = call %S.gen.Val @finch.gen.strArg(ptr %t449, %S.ast.Node %t456, { ptr, i64, i64 } { ptr @.str.5995, i64 12, i64 0 }) - store %S.gen.Val %t457, ptr %a458 - %t459 = load ptr, ptr %a1 - %t460 = load i64, ptr %a446 - call void @finch.gen.heldEnd(ptr %t459, i64 %t460) - %t461 = load ptr, ptr %a1 - %t462 = load %S.gen.Val, ptr %a440 - %t463 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t461, %S.gen.Val %t462) - store { ptr, i64, i64 } %t463, ptr %a464 - %t465 = load ptr, ptr %a1 - %t466 = load %S.gen.Val, ptr %a458 - %t467 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t465, %S.gen.Val %t466) - store { ptr, i64, i64 } %t467, ptr %a468 - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5996, i64 33, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.5997, i64 6, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - %t480 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t479, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t479, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5998, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - %t491 = load { ptr, i64, i64 }, ptr %a464 - store { ptr, i64, i64 } %t490, ptr %a493 - store { ptr, i64, i64 } %t491, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t490, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5999, i64 6, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - store { ptr, i64, i64 } %t496, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load { ptr, i64, i64 }, ptr %a497 - %t502 = load { ptr, i64, i64 }, ptr %a468 - store { ptr, i64, i64 } %t501, ptr %a504 - store { ptr, i64, i64 } %t502, ptr %a505 - call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a503 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.6000, i64 1, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - call void @finch.gen.emit(ptr %t469, { ptr, i64, i64 } %t512) - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - %t514 = load ptr, ptr %a1 - %t515 = load %S.gen.Val, ptr %a440 - call void @finch.gen.release(ptr %t514, %S.gen.Val %t515) - %t516 = load ptr, ptr %a1 - %t517 = load %S.gen.Val, ptr %a458 - call void @finch.gen.release(ptr %t516, %S.gen.Val %t517) - %t518 = load ptr, ptr %a1 - %t519 = load { ptr, i64, i64 }, ptr %a12 - %t520 = call { ptr, i64, i64 } @finch.gen.load(ptr %t518, { ptr, i64, i64 } { ptr @.str.6001, i64 17, i64 0 }, { ptr, i64, i64 } %t519) - %t521 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t520, 0 - %t522 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6002, i64 3, i64 0 }) - %t523 = insertvalue %S.gen.Val %t521, %S.ast.Type %t522, 1 - %t524 = insertvalue %S.gen.Val %t523, i1 true, 2 - call void @finch_str_drop(ptr %a468) - call void @finch_str_drop(ptr %a464) - call void @finch.drop.S_gen_Val(ptr %a458) - call void @finch.drop.S_gen_Val(ptr %a440) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t524 -endif9040: - %t525 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.6003, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br i1 %t529, label %then9047, label %endif9049 -then9047: - %t530 = load ptr, ptr %a1 - %t531 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t530, %S.ast.Node %t531, i64 1) - %t532 = load ptr, ptr %a1 - %t533 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t534 = load { ptr, i64, i64 }, ptr %t533 - %t535 = extractvalue { ptr, i64, i64 } %t534, 1 - %t536 = icmp uge i64 1, %t535 - br i1 %t536, label %range9050, label %inrange9051 -range9050: - call void @finch_panic_index(ptr @.str.6004, i64 5669, i64 1, i64 %t535) - unreachable -inrange9051: - %t537 = extractvalue { ptr, i64, i64 } %t534, 0 - %t538 = getelementptr inbounds %S.ast.Node, ptr %t537, i64 1 - %t539 = load %S.ast.Node, ptr %t538 - %t540 = call %S.gen.Val @finch.gen.strArg(ptr %t532, %S.ast.Node %t539, { ptr, i64, i64 } { ptr @.str.6005, i64 13, i64 0 }) - store %S.gen.Val %t540, ptr %a541 - %t542 = load ptr, ptr %a1 - %t543 = load %S.gen.Val, ptr %a541 - %t544 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t542, %S.gen.Val %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t546) - store { ptr, i64, i64 } %t547, ptr %a548 - %t549 = load ptr, ptr %a1 - %t550 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.6006, i64 31, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t554, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.6007, i64 6, i64 0 }, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - store { ptr, i64, i64 } %t554, ptr %a558 - call void @finch_str_drop(ptr %a558) - %t559 = load { ptr, i64, i64 }, ptr %a555 - %t560 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t559, ptr %a562 - store { ptr, i64, i64 } %t560, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t559, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - store { ptr, i64, i64 } %t565, ptr %a567 - store { ptr, i64, i64 } { ptr @.str.6008, i64 6, i64 0 }, ptr %a568 - call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) - store { ptr, i64, i64 } %t565, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a566 - %t571 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } %t570, ptr %a573 - store { ptr, i64, i64 } %t571, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t570, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - store { ptr, i64, i64 } %t576, ptr %a578 - store { ptr, i64, i64 } { ptr @.str.6009, i64 1, i64 0 }, ptr %a579 - call void @finch_str_concat(ptr %a577, ptr %a578, ptr %a579) - store { ptr, i64, i64 } %t576, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a577 - call void @finch.gen.emit(ptr %t549, { ptr, i64, i64 } %t581) - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load ptr, ptr %a1 - %t584 = load %S.gen.Val, ptr %a541 - call void @finch.gen.release(ptr %t583, %S.gen.Val %t584) - %t585 = load ptr, ptr %a1 - %t586 = load { ptr, i64, i64 }, ptr %a548 - %t587 = call { ptr, i64, i64 } @finch.gen.load(ptr %t585, { ptr, i64, i64 } { ptr @.str.6010, i64 17, i64 0 }, { ptr, i64, i64 } %t586) - %t588 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t587, 0 - %t589 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6011, i64 3, i64 0 }) - %t590 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t589) - store %S.ast.Type %t589, ptr %a591 - call void @finch.drop.S_ast_Type(ptr %a591) - %t592 = insertvalue %S.gen.Val %t588, %S.ast.Type %t590, 1 - %t593 = insertvalue %S.gen.Val %t592, i1 true, 2 - call void @finch_str_drop(ptr %a548) - call void @finch_str_drop(ptr %a545) - call void @finch.drop.S_gen_Val(ptr %a541) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t593 -endif9049: - %t594 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t594, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.6012, i64 6, i64 0 }, ptr %a596 - %t597 = call i32 @finch_str_eq(ptr %a595, ptr %a596) - %t598 = icmp ne i32 %t597, 0 - br i1 %t598, label %then9052, label %endif9054 -then9052: - %t599 = load ptr, ptr %a1 - %t600 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t599, %S.ast.Node %t600, i64 1) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t604 = load { ptr, i64, i64 }, ptr %t603 - %t605 = extractvalue { ptr, i64, i64 } %t604, 1 - %t606 = icmp uge i64 1, %t605 - br i1 %t606, label %range9055, label %inrange9056 -range9055: - call void @finch_panic_index(ptr @.str.6013, i64 5678, i64 1, i64 %t605) - unreachable -inrange9056: - %t607 = extractvalue { ptr, i64, i64 } %t604, 0 - %t608 = getelementptr inbounds %S.ast.Node, ptr %t607, i64 1 - %t609 = load %S.ast.Node, ptr %t608 - %t610 = call %S.gen.Val @finch.gen.expr(ptr %t602, %S.ast.Node %t609) - %t611 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6014, i64 3, i64 0 }) - %t612 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t613 = load { ptr, i64, i64 }, ptr %t612 - %t614 = extractvalue { ptr, i64, i64 } %t613, 1 - %t615 = icmp uge i64 1, %t614 - br i1 %t615, label %range9057, label %inrange9058 -range9057: - call void @finch_panic_index(ptr @.str.6015, i64 5678, i64 1, i64 %t614) - unreachable -inrange9058: - %t616 = extractvalue { ptr, i64, i64 } %t613, 0 - %t617 = getelementptr inbounds %S.ast.Node, ptr %t616, i64 1 - %t618 = load %S.ast.Node, ptr %t617 - %t619 = call %S.gen.Val @finch.gen.coerce(ptr %t601, %S.gen.Val %t610, %S.ast.Type %t611, %S.ast.Node %t618, { ptr, i64, i64 } { ptr @.str.6016, i64 9, i64 0 }) - store %S.gen.Val %t610, ptr %a620 - call void @finch.drop.S_gen_Val(ptr %a620) - store %S.ast.Type %t611, ptr %a621 - call void @finch.drop.S_ast_Type(ptr %a621) - %t622 = extractvalue %S.gen.Val %t619, 0 - store { ptr, i64, i64 } %t622, ptr %a623 - call void @finch_str_copy(ptr %a624, ptr %a623) - %t625 = load { ptr, i64, i64 }, ptr %a624 - store %S.gen.Val %t619, ptr %a626 - call void @finch.drop.S_gen_Val(ptr %a626) - store { ptr, i64, i64 } %t625, ptr %a627 - %t628 = load ptr, ptr %a1 - %t629 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.6017, i64 32, i64 0 }, ptr %a631 - store { ptr, i64, i64 } %t629, ptr %a632 - call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a630 - store { ptr, i64, i64 } %t633, ptr %a635 - store { ptr, i64, i64 } { ptr @.str.6018, i64 6, i64 0 }, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t633, ptr %a637 - call void @finch_str_drop(ptr %a637) - %t638 = load { ptr, i64, i64 }, ptr %a634 - %t639 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t638, ptr %a641 - store { ptr, i64, i64 } %t639, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t638, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - store { ptr, i64, i64 } %t644, ptr %a646 - store { ptr, i64, i64 } { ptr @.str.6019, i64 6, i64 0 }, ptr %a647 - call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) - store { ptr, i64, i64 } %t644, ptr %a648 - call void @finch_str_drop(ptr %a648) - %t649 = load { ptr, i64, i64 }, ptr %a645 - %t650 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t649, ptr %a652 - store { ptr, i64, i64 } %t650, ptr %a653 - call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) - store { ptr, i64, i64 } %t649, ptr %a654 - call void @finch_str_drop(ptr %a654) - %t655 = load { ptr, i64, i64 }, ptr %a651 - store { ptr, i64, i64 } %t655, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.6020, i64 1, i64 0 }, ptr %a658 - call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) - store { ptr, i64, i64 } %t655, ptr %a659 - call void @finch_str_drop(ptr %a659) - %t660 = load { ptr, i64, i64 }, ptr %a656 - call void @finch.gen.emit(ptr %t628, { ptr, i64, i64 } %t660) - store { ptr, i64, i64 } %t660, ptr %a661 - call void @finch_str_drop(ptr %a661) - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a12 - %t664 = call { ptr, i64, i64 } @finch.gen.load(ptr %t662, { ptr, i64, i64 } { ptr @.str.6021, i64 17, i64 0 }, { ptr, i64, i64 } %t663) - %t665 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t664, 0 - %t666 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6022, i64 3, i64 0 }) - %t667 = insertvalue %S.gen.Val %t665, %S.ast.Type %t666, 1 - %t668 = insertvalue %S.gen.Val %t667, i1 true, 2 - call void @finch_str_drop(ptr %a627) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t668 -endif9054: - %t669 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t669, ptr %a670 - store { ptr, i64, i64 } { ptr @.str.6023, i64 5, i64 0 }, ptr %a671 - %t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671) - %t673 = icmp ne i32 %t672, 0 - br i1 %t673, label %then9059, label %endif9061 -then9059: - %t674 = load ptr, ptr %a1 - %t675 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 0) - %t676 = load ptr, ptr %a1 - %t677 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t676) - store { ptr, i64, i64 } %t677, ptr %a678 - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } { ptr @.str.6024, i64 36, i64 0 }, ptr %a682 - store { ptr, i64, i64 } %t680, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - %t684 = load { ptr, i64, i64 }, ptr %a681 - store { ptr, i64, i64 } %t684, ptr %a686 - store { ptr, i64, i64 } { ptr @.str.6025, i64 6, i64 0 }, ptr %a687 - call void @finch_str_concat(ptr %a685, ptr %a686, ptr %a687) - store { ptr, i64, i64 } %t684, ptr %a688 - call void @finch_str_drop(ptr %a688) - %t689 = load { ptr, i64, i64 }, ptr %a685 - %t690 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t689, ptr %a692 - store { ptr, i64, i64 } %t690, ptr %a693 - call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) - store { ptr, i64, i64 } %t689, ptr %a694 - call void @finch_str_drop(ptr %a694) - %t695 = load { ptr, i64, i64 }, ptr %a691 - store { ptr, i64, i64 } %t695, ptr %a697 - store { ptr, i64, i64 } { ptr @.str.6026, i64 1, i64 0 }, ptr %a698 - call void @finch_str_concat(ptr %a696, ptr %a697, ptr %a698) - store { ptr, i64, i64 } %t695, ptr %a699 - call void @finch_str_drop(ptr %a699) - %t700 = load { ptr, i64, i64 }, ptr %a696 - call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t700) - store { ptr, i64, i64 } %t700, ptr %a701 - call void @finch_str_drop(ptr %a701) - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a678 - %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.6027, i64 17, i64 0 }, { ptr, i64, i64 } %t703) - %t705 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t704, 0 - %t706 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6028, i64 2, i64 0 }) - %t707 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t706) - store %S.ast.Type %t706, ptr %a708 - call void @finch.drop.S_ast_Type(ptr %a708) - %t709 = insertvalue %S.gen.Val %t705, %S.ast.Type %t707, 1 - %t710 = insertvalue %S.gen.Val %t709, i1 true, 2 - call void @finch_str_drop(ptr %a678) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t710 -endif9061: - %t711 = load ptr, ptr %a1 - %t712 = load %S.ast.Node, ptr %a2 - %t713 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.6029, i64 21, i64 0 }, ptr %a715 - store { ptr, i64, i64 } %t713, ptr %a716 - call void @finch_str_concat(ptr %a714, ptr %a715, ptr %a716) - %t717 = load { ptr, i64, i64 }, ptr %a714 - store { ptr, i64, i64 } %t717, ptr %a719 - store { ptr, i64, i64 } { ptr @.str.6030, i64 106, i64 0 }, ptr %a720 - call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) - store { ptr, i64, i64 } %t717, ptr %a721 - call void @finch_str_drop(ptr %a721) - %t722 = load { ptr, i64, i64 }, ptr %a718 - call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t722) - store { ptr, i64, i64 } %t722, ptr %a723 - call void @finch_str_drop(ptr %a723) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val zeroinitializer -} - -define internal { ptr, i64, i64 } @finch.gen.runtimeDecls() { -entry: - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %t1 = mul i64 74, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t2 = call ptr @finch_alloc(i64 %t1) - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 - store { ptr, i64, i64 } { ptr @.str.6031, i64 54, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6032, i64 65, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6033, i64 29, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6034, i64 38, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6035, i64 33, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6036, i64 33, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6037, i64 33, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6038, i64 32, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6039, i64 45, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6040, i64 35, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6041, i64 36, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6042, i64 42, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6043, i64 37, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6044, i64 38, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6045, i64 42, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6046, i64 38, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6047, i64 37, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6048, i64 42, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6049, i64 42, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6050, i64 34, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6051, i64 42, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6052, i64 43, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 - store { ptr, i64, i64 } { ptr @.str.6053, i64 47, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 - store { ptr, i64, i64 } { ptr @.str.6054, i64 50, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24 - store { ptr, i64, i64 } { ptr @.str.6055, i64 43, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 - store { ptr, i64, i64 } { ptr @.str.6056, i64 44, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 - store { ptr, i64, i64 } { ptr @.str.6057, i64 49, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27 - store { ptr, i64, i64 } { ptr @.str.6058, i64 57, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 - store { ptr, i64, i64 } { ptr @.str.6059, i64 37, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 - store { ptr, i64, i64 } { ptr @.str.6060, i64 39, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30 - store { ptr, i64, i64 } { ptr @.str.6061, i64 37, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 - store { ptr, i64, i64 } { ptr @.str.6062, i64 38, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 - store { ptr, i64, i64 } { ptr @.str.6063, i64 39, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33 - store { ptr, i64, i64 } { ptr @.str.6064, i64 39, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 - store { ptr, i64, i64 } { ptr @.str.6065, i64 51, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 - store { ptr, i64, i64 } { ptr @.str.6066, i64 44, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36 - store { ptr, i64, i64 } { ptr @.str.6067, i64 43, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 - store { ptr, i64, i64 } { ptr @.str.6068, i64 45, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 - store { ptr, i64, i64 } { ptr @.str.6069, i64 44, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39 - store { ptr, i64, i64 } { ptr @.str.6070, i64 52, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 - store { ptr, i64, i64 } { ptr @.str.6071, i64 57, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 - store { ptr, i64, i64 } { ptr @.str.6072, i64 48, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42 - store { ptr, i64, i64 } { ptr @.str.6073, i64 34, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 - store { ptr, i64, i64 } { ptr @.str.6074, i64 48, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 - store { ptr, i64, i64 } { ptr @.str.6075, i64 60, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45 - store { ptr, i64, i64 } { ptr @.str.6076, i64 55, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 - store { ptr, i64, i64 } { ptr @.str.6077, i64 46, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 - store { ptr, i64, i64 } { ptr @.str.6078, i64 48, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48 - store { ptr, i64, i64 } { ptr @.str.6079, i64 43, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 - store { ptr, i64, i64 } { ptr @.str.6080, i64 45, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 - store { ptr, i64, i64 } { ptr @.str.6081, i64 59, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51 - store { ptr, i64, i64 } { ptr @.str.6082, i64 49, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 - store { ptr, i64, i64 } { ptr @.str.6083, i64 39, i64 0 }, ptr %t55 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 - store { ptr, i64, i64 } { ptr @.str.6084, i64 39, i64 0 }, ptr %t56 - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54 - store { ptr, i64, i64 } { ptr @.str.6085, i64 35, i64 0 }, ptr %t57 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 - store { ptr, i64, i64 } { ptr @.str.6086, i64 35, i64 0 }, ptr %t58 - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 - store { ptr, i64, i64 } { ptr @.str.6087, i64 45, i64 0 }, ptr %t59 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57 - store { ptr, i64, i64 } { ptr @.str.6088, i64 47, i64 0 }, ptr %t60 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 - store { ptr, i64, i64 } { ptr @.str.6089, i64 47, i64 0 }, ptr %t61 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 - store { ptr, i64, i64 } { ptr @.str.6090, i64 48, i64 0 }, ptr %t62 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60 - store { ptr, i64, i64 } { ptr @.str.6091, i64 44, i64 0 }, ptr %t63 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 - store { ptr, i64, i64 } { ptr @.str.6092, i64 37, i64 0 }, ptr %t64 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 - store { ptr, i64, i64 } { ptr @.str.6093, i64 49, i64 0 }, ptr %t65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63 - store { ptr, i64, i64 } { ptr @.str.6094, i64 39, i64 0 }, ptr %t66 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 - store { ptr, i64, i64 } { ptr @.str.6095, i64 29, i64 0 }, ptr %t67 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 - store { ptr, i64, i64 } { ptr @.str.6096, i64 35, i64 0 }, ptr %t68 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66 - store { ptr, i64, i64 } { ptr @.str.6097, i64 29, i64 0 }, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 - store { ptr, i64, i64 } { ptr @.str.6098, i64 24, i64 0 }, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 - store { ptr, i64, i64 } { ptr @.str.6099, i64 40, i64 0 }, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69 - store { ptr, i64, i64 } { ptr @.str.6100, i64 33, i64 0 }, ptr %t72 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70 - store { ptr, i64, i64 } { ptr @.str.6101, i64 34, i64 0 }, ptr %t73 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 71 - store { ptr, i64, i64 } { ptr @.str.6102, i64 44, i64 0 }, ptr %t74 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 72 - store { ptr, i64, i64 } { ptr @.str.6103, i64 32, i64 0 }, ptr %t75 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 73 - store { ptr, i64, i64 } { ptr @.str.6104, i64 23, i64 0 }, ptr %t76 - %t77 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t78 = insertvalue { ptr, i64, i64 } %t77, i64 74, 1 - %t79 = insertvalue { ptr, i64, i64 } %t78, i64 74, 2 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a80, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6105, i64 1, i64 0 }, ptr %a82 - call void @finch_str_join(ptr %a83, ptr %a80, ptr %a82) - %t84 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.6106, i64 1, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.drop.arr_str(ptr %a80) - ret { ptr, i64, i64 } %t89 -} - -define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6107, i64 52, i64 0 }, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic9062, label %ok9063 -panic9062: - call void @finch_panic(ptr @.str.6108, i64 5776, ptr @.str.6109) - unreachable -ok9063: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 - %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 - %t7 = load i1, ptr %t6 - br label %logic.from9064 -logic.from9064: - br i1 %t7, label %logic.end9066, label %logic.rhs9065 -logic.rhs9065: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic9067, label %ok9068 -panic9067: - call void @finch_panic(ptr @.str.6110, i64 5776, ptr @.str.6111) - unreachable -ok9068: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 31 - %t11 = getelementptr inbounds %S.platform.Target, ptr %t10, i32 0, i32 1 - %t12 = load i1, ptr %t11 - br label %logic.rend9069 -logic.rend9069: - br label %logic.end9066 -logic.end9066: - %t13 = phi i1 [ true, %logic.from9064 ], [ %t12, %logic.rend9069 ] - br i1 %t13, label %then9070, label %endif9072 -then9070: - %t14 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6112, i64 17, 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, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic9073, label %ok9074 -panic9073: - call void @finch_panic(ptr @.str.6113, i64 5777, ptr @.str.6114) - unreachable -ok9074: - %t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 31 - %t22 = getelementptr inbounds %S.platform.Target, ptr %t21, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t18, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t18, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6115, i64 3, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif9072 -endif9072: - %t36 = load { ptr, i64, i64 }, ptr %a2 - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic9075, label %ok9076 -panic9075: - call void @finch_panic(ptr @.str.6116, i64 5779, ptr @.str.6117) - unreachable -ok9076: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6118, i64 1, i64 0 }, ptr %a41 - call void @finch_str_join(ptr %a42, ptr %t39, ptr %a41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t36, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6119, i64 2, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - store { ptr, i64, i64 } %t54, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.6120, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t65, ptr %a2 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic9077, label %ok9078 -panic9077: - call void @finch_panic(ptr @.str.6121, i64 5780, ptr @.str.6122) - unreachable -ok9078: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 30 - %t71 = load i1, ptr %t70 - br i1 %t71, label %then9079, label %endif9081 -then9079: - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6123, i64 62, 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, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a2 - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif9081 -endif9081: - %t79 = load { ptr, i64, i64 }, ptr %a2 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9082, label %ok9083 -panic9082: - call void @finch_panic(ptr @.str.6124, i64 5783, ptr @.str.6125) - unreachable -ok9083: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 3 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6126, i64 1, 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 } %t79, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t91, ptr %a2 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic9084, label %ok9085 -panic9084: - call void @finch_panic(ptr @.str.6127, i64 5784, ptr @.str.6128) - unreachable -ok9085: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 30 - %t97 = load i1, ptr %t96 - br i1 %t97, label %then9086, label %endif9088 -then9086: - %t98 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6129, i64 1, 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 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - %t111 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t110, ptr %a2 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif9088 -endif9088: - %t113 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t113 -} - -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.cond9089 -n.cond9089: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9090, label %n.end9091 -n.body9090: - %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.cond9089 -n.end9091: - 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.cond9092 -n.cond9092: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9093, label %n.end9094 -n.body9093: - %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.live9095, label %entry.next9096 -entry.live9095: - %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.next9096 -entry.next9096: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9092 -n.end9094: - 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.cond9097 -n.cond9097: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9098, label %n.end9099 -n.body9098: - %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.live9100, label %entry.next9101 -entry.live9100: - %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.next9101 -entry.next9101: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9097 -n.end9099: - 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.cond9102 -n.cond9102: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9103, label %n.end9104 -n.body9103: - %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.live9105, label %entry.next9106 -entry.live9105: - %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.next9106 -entry.next9106: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9102 -n.end9104: - 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.cond9107 -n.cond9107: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9108, label %n.end9109 -n.body9108: - %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.live9110, label %entry.next9111 -entry.live9110: - %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.next9111 -entry.next9111: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9107 -n.end9109: - 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 void @finch.drop.arr_S_gen_Pending(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9180 -n.cond9180: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9181, label %n.end9182 -n.body9181: - %t7 = getelementptr inbounds %S.gen.Pending, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Pending(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9180 -n.end9182: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Loop(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9183 -n.cond9183: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9184, label %n.end9185 -n.body9184: - %t7 = getelementptr inbounds %S.gen.Loop, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Loop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9183 -n.end9185: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_FnSig(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9186 -n.cond9186: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9187, label %n.end9188 -n.body9187: - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_FnSig(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9186 -n.end9188: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_StructDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9189 -n.cond9189: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9190, label %n.end9191 -n.body9190: - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_StructDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9189 -n.end9191: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Template(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9192 -n.cond9192: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9193, label %n.end9194 -n.body9193: - %t7 = getelementptr inbounds %S.gen.Template, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Template(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9192 -n.end9194: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_EnumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9195 -n.cond9195: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9196, label %n.end9197 -n.body9196: - %t7 = getelementptr inbounds %S.gen.EnumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_EnumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9195 -n.end9197: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_SumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9198 -n.cond9198: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9199, label %n.end9200 -n.body9199: - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_SumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9198 -n.end9200: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_int(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9201 -n.cond9201: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9202, label %n.end9203 -n.body9202: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9204, label %entry.next9205 -entry.live9204: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 2 - br label %entry.next9205 -entry.next9205: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9201 -n.end9203: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Gen(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_S_gen_Scope(ptr %t7) - %t8 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_S_gen_Pending(ptr %t8) - %t9 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_gen_Loop(ptr %t9) - %t10 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 13 - call void @finch.drop.S_gen_FnSig(ptr %t10) - %t11 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 14 - call void @finch_str_drop(ptr %t11) - %t12 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_S_gen_FnSig(ptr %t12) - %t13 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 16 - call void @finch.drop.arr_S_gen_StructDef(ptr %t13) - %t14 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 17 - call void @finch.drop.arr_S_gen_Template(ptr %t14) - %t15 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 18 - call void @finch.drop.arr_str(ptr %t15) - %t16 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 19 - call void @finch.drop.arr_S_ast_Type(ptr %t16) - %t17 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 20 - call void @finch_str_drop(ptr %t17) - %t18 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 21 - call void @finch.drop.arr_S_gen_EnumDef(ptr %t18) - %t19 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 22 - call void @finch.drop.arr_S_gen_SumDef(ptr %t19) - %t20 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 23 - call void @finch.drop.arr_str(ptr %t20) - %t21 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 24 - call void @finch.drop.arr_str(ptr %t21) - %t22 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 26 - call void @finch.drop.S_cimport_CImports(ptr %t22) - %t23 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 29 - call void @finch.drop.arr_str(ptr %t23) - %t24 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 31 - call void @finch.drop.S_platform_Target(ptr %t24) - %t25 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 32 - call void @finch_str_drop(ptr %t25) - %t26 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 33 - call void @finch.drop.arr_str(ptr %t26) - %t27 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 34 - call void @finch.drop.map_str_int(ptr %t27) - %t28 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 35 - call void @finch.drop.arr_int(ptr %t28) - %t29 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 40 - call void @finch.drop.arr_str(ptr %t29) - %t30 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 41 - call void @finch_str_drop(ptr %t30) - %t31 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 42 - call void @finch_str_drop(ptr %t31) - %t32 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 43 - call void @finch_str_drop(ptr %t32) - 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 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca i64, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca i64, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca %S.gen.FnSig, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca %S.gen.FnSig, align 16 - %a318 = alloca %S.gen.FnSig, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %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 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.cimport.CImports %p2, ptr %a3 - 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, 26 - %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, 27 - %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, 28 - %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, 30 - %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, 31 - %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, 32 - %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 36 - 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 %panic9112, label %ok9113 -panic9112: - call void @finch_panic(ptr @.str.6130, i64 5794, ptr @.str.6131) - unreachable -ok9113: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 30 - %t50 = load i1, ptr %t49 - br i1 %t50, label %then9114, label %endif9116 -then9114: - %t51 = load ptr, ptr %a46 - %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic9117, label %ok9118 -panic9117: - call void @finch_panic(ptr @.str.6132, i64 5796, ptr @.str.6133) - unreachable -ok9118: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 33 - %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.6134, 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 %panic9119, label %ok9120 -panic9119: - call void @finch_panic(ptr @.str.6135, i64 5797, ptr @.str.6136) - unreachable -ok9120: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 33 - %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.6137, 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 %panic9121, label %ok9122 -panic9121: - call void @finch_panic(ptr @.str.6138, i64 5798, ptr @.str.6139) - unreachable -ok9122: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 33 - %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.6140, i64 38, i64 0 }, ptr %t74 - store i64 %t72, ptr %t70 - store i64 0, ptr %a75 - br label %each.cond9123 -each.cond9123: - %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.body9124, label %each.end9126 -each.body9124: - %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 %panic9127, label %ok9128 -panic9127: - call void @finch_panic(ptr @.str.6141, i64 5800, ptr @.str.6142) - unreachable -ok9128: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 35 - %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.6143, 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.6144, i64 15, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load ptr, ptr %a46 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic9129, label %ok9130 -panic9129: - call void @finch_panic(ptr @.str.6145, i64 5800, ptr @.str.6146) - unreachable -ok9130: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 32 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t98, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t98, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6147, i64 2, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t112) - store { ptr, i64, i64 } %t112, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load i64, ptr %t87 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t116, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t86 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t115 - store i64 %t113, ptr %t118 - store i64 %t116, ptr %t87 - br label %each.step9125 -each.step9125: - %t119 = load i64, ptr %a75 - %t120 = add i64 %t119, 1 - store i64 %t120, ptr %a75 - br label %each.cond9123 -each.end9126: - %t121 = load ptr, ptr %a46 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic9131, label %ok9132 -panic9131: - call void @finch_panic(ptr @.str.6149, i64 5802, ptr @.str.6150) - unreachable -ok9132: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 35 - %t124 = load { ptr, i64, i64 }, ptr %t123 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 0, %t125 - br i1 %t126, label %range9133, label %inrange9134 -range9133: - call void @finch_panic_index(ptr @.str.6151, i64 5802, i64 0, i64 %t125) - unreachable -inrange9134: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds i64, ptr %t127, i64 0 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6148, i64 52, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6152, i64 84, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load ptr, ptr %a46 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic9135, label %ok9136 -panic9135: - call void @finch_panic(ptr @.str.6153, i64 5802, ptr @.str.6154) - unreachable -ok9136: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 33 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 0, %t146 - br i1 %t147, label %range9137, label %inrange9138 -range9137: - call void @finch_panic_index(ptr @.str.6155, i64 5802, i64 0, i64 %t146) - unreachable -inrange9138: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t141, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif9116 -endif9116: - %t152 = load ptr, ptr %a46 - call void @finch.gen.declare(ptr %t152) - %t153 = load ptr, ptr %a46 - %t154 = call i64 @finch.gen.findFn(ptr %t153, { ptr, i64, i64 } { ptr @.str.6156, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6157, i64 4, i64 0 }) - store i64 %t154, ptr %a155 - %t156 = load i1, ptr %a7 - br i1 %t156, label %then9139, label %else9140 -then9139: - %t157 = load i64, ptr %a155 - %t158 = icmp sge i64 %t157, 0 - br i1 %t158, label %then9142, label %endif9144 -then9142: - %t159 = load ptr, ptr %a46 - %t160 = load ptr, ptr %a46 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic9145, label %ok9146 -panic9145: - call void @finch_panic(ptr @.str.6158, i64 5808, ptr @.str.6159) - unreachable -ok9146: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 0 - %t163 = load ptr, ptr %a46 - %t164 = icmp eq ptr %t163, null - br i1 %t164, label %panic9147, label %ok9148 -panic9147: - call void @finch_panic(ptr @.str.6160, i64 5808, ptr @.str.6161) - unreachable -ok9148: - %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 15 - %t166 = load i64, ptr %a155 - %t167 = load { ptr, i64, i64 }, ptr %t165 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range9149, label %inrange9150 -range9149: - call void @finch_panic_index(ptr @.str.6162, i64 5808, i64 %t166, i64 %t168) - unreachable -inrange9150: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.FnSig, ptr %t170, i64 %t166 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %t171, i32 0, i32 16 - %t173 = load i64, ptr %t172 - %t174 = load { ptr, i64, i64 }, ptr %t162 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range9151, label %inrange9152 -range9151: - call void @finch_panic_index(ptr @.str.6163, i64 5808, i64 %t173, i64 %t175) - unreachable -inrange9152: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Program, ptr %t178, i32 0, i32 8 - %t180 = load ptr, ptr %a46 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic9153, label %ok9154 -panic9153: - call void @finch_panic(ptr @.str.6164, i64 5808, ptr @.str.6165) - unreachable -ok9154: - %t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 15 - %t183 = load i64, ptr %a155 - %t184 = load { ptr, i64, i64 }, ptr %t182 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range9155, label %inrange9156 -range9155: - call void @finch_panic_index(ptr @.str.6166, i64 5808, i64 %t183, i64 %t185) - unreachable -inrange9156: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i64 %t183 - %t189 = getelementptr inbounds %S.gen.FnSig, ptr %t188, i32 0, i32 17 - %t190 = load i64, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %t179 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 %t190, %t192 - br i1 %t193, label %range9157, label %inrange9158 -range9157: - call void @finch_panic_index(ptr @.str.6167, i64 5808, i64 %t190, i64 %t192) - unreachable -inrange9158: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t190 - %t196 = load %S.ast.Node, ptr %t195 - call void @finch.gen.fail(ptr %t159, %S.ast.Node %t196, { ptr, i64, i64 } { ptr @.str.6168, i64 82, i64 0 }) - br label %endif9144 -endif9144: - br label %endif9141 -else9140: - %t197 = load i64, ptr %a155 - %t198 = icmp slt i64 %t197, 0 - br i1 %t198, label %then9159, label %endif9161 -then9159: - %t199 = load { ptr, i64, i64 }, ptr %a2 - %t200 = extractvalue { ptr, i64, i64 } %t199, 1 - %t201 = icmp uge i64 0, %t200 - br i1 %t201, label %range9162, label %inrange9163 -range9162: - call void @finch_panic_index(ptr @.str.6169, i64 5811, i64 0, i64 %t200) - unreachable -inrange9163: - %t202 = extractvalue { ptr, i64, i64 } %t199, 0 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 0 - %t204 = load { ptr, i64, i64 }, ptr %t203 - store { ptr, i64, i64 } %t204, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.6170, i64 64, i64 0 }, ptr %a207 - call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a205 - %t209 = extractvalue { ptr, i64, i64 } %t208, 1 - %t210 = trunc i64 %t209 to i32 - %t211 = extractvalue { ptr, i64, i64 } %t208, 0 - %t212 = icmp eq ptr %t211, null - %t213 = select i1 %t212, ptr @.str.6171, ptr %t211 - %t214 = call i32 (ptr, ...) @printf(ptr @.str.6172, i32 %t210, ptr %t213) - store { ptr, i64, i64 } %t208, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = call i32 (ptr, ...) @printf(ptr @.str.6173) - %t217 = trunc i64 1 to i32 - %t218 = call i32 @fflush(ptr null) - call void @exit(i32 %t217) - br label %endif9161 -endif9161: - br label %endif9141 -endif9141: - store i64 0, ptr %a219 - br label %while.cond9164 -while.cond9164: - %t220 = load i64, ptr %a219 - %t221 = load ptr, ptr %a46 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic9167, label %ok9168 -panic9167: - call void @finch_panic(ptr @.str.6174, i64 5816, ptr @.str.6175) - unreachable -ok9168: - %t223 = getelementptr inbounds %S.gen.Gen, ptr %t221, i32 0, i32 15 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp slt i64 %t220, %t225 - br i1 %t226, label %while.body9165, label %while.end9166 -while.body9165: - %t227 = load ptr, ptr %a46 - %t228 = load i64, ptr %a219 - call void @finch.gen.define(ptr %t227, i64 %t228) - %t229 = load i64, ptr %a219 - %t230 = add i64 %t229, 1 - store i64 %t230, ptr %a219 - br label %while.cond9164 -while.end9166: - %t231 = load ptr, ptr %a46 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic9169, label %ok9170 -panic9169: - call void @finch_panic(ptr @.str.6176, i64 5820, ptr @.str.6177) - unreachable -ok9170: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 28 - %t234 = load i1, ptr %t233 - br i1 %t234, label %then9171, label %endif9173 -then9171: - %t235 = load ptr, ptr %a46 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic9174, label %ok9175 -panic9174: - call void @finch_panic(ptr @.str.6178, i64 5821, ptr @.str.6179) - unreachable -ok9175: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range9176, label %inrange9177 -range9176: - call void @finch_panic_index(ptr @.str.6180, i64 5821, i64 0, i64 %t239) - unreachable -inrange9177: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.ast.Program, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.ast.Program, ptr %t242, i32 0, i32 2 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.copy.arr_str(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t247, ptr %a248 - %t249 = load ptr, ptr %a46 - %t250 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.indexAll(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a46 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic9178, label %ok9179 -panic9178: - call void @finch_panic(ptr @.str.6181, i64 5823, ptr @.str.6182) - unreachable -ok9179: - %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 29 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6183, i64 1, i64 0 }, ptr %a255 - call void @finch_str_join(ptr %a256, ptr %t253, ptr %a255) - %t257 = load { ptr, i64, i64 }, ptr %a256 - call void @finch.drop.arr_str(ptr %a248) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t257 -endif9173: - %t258 = load ptr, ptr %a46 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic9206, label %ok9207 -panic9206: - call void @finch_panic(ptr @.str.6184, i64 5825, ptr @.str.6185) - unreachable -ok9207: - %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 15 - store i64 0, ptr %a261 - br label %each.cond9208 -each.cond9208: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body9209, label %each.end9211 -each.body9209: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i64 %t264 - %t268 = load %S.gen.FnSig, ptr %t267 - store %S.gen.FnSig %t268, ptr %a269 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a269, i32 0, i32 5 - %t271 = load i1, ptr %t270 - br i1 %t271, label %then9212, label %endif9214 -then9212: - %t272 = load ptr, ptr %a46 - %t273 = load %S.gen.FnSig, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t272, %S.gen.FnSig %t273) - store { ptr, i64, i64 } %t274, ptr %a275 - call void @finch_str_drop(ptr %a275) - br label %endif9214 -endif9214: - br label %each.step9210 -each.step9210: - %t276 = load i64, ptr %a261 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a261 - br label %each.cond9208 -each.end9211: - %t278 = load i1, ptr %a7 - br i1 %t278, label %then9215, label %endif9217 -then9215: - store { ptr, i64, i64 } { ptr @.str.6186, i64 0, i64 0 }, ptr %a279 - %t280 = load ptr, ptr %a46 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic9218, label %ok9219 -panic9218: - call void @finch_panic(ptr @.str.6187, i64 5833, ptr @.str.6188) - unreachable -ok9219: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 31 - %t283 = getelementptr inbounds %S.platform.Target, ptr %t282, i32 0, i32 1 - %t284 = load i1, ptr %t283 - br i1 %t284, label %then9220, label %endif9222 -then9220: - %t285 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6189, i64 10, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif9222 -endif9222: - %t287 = load ptr, ptr %a46 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic9223, label %ok9224 -panic9223: - call void @finch_panic(ptr @.str.6190, i64 5836, ptr @.str.6191) - unreachable -ok9224: - %t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 3 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6192, i64 6, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.6193, i64 107, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = load i64, ptr %t290 - %t302 = add i64 %t301, 1 - call void @finch_arr_reserve(ptr %t289, i64 %t302, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t303 = load ptr, ptr %t289 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t303, i64 %t301 - store { ptr, i64, i64 } %t300, ptr %t304 - store i64 %t302, ptr %t290 - %t305 = load ptr, ptr %a46 - %t306 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t305) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t306 -endif9217: - %t307 = load ptr, ptr %a46 - %t308 = icmp eq ptr %t307, null - br i1 %t308, label %panic9225, label %ok9226 -panic9225: - call void @finch_panic(ptr @.str.6194, i64 5840, ptr @.str.6195) - unreachable -ok9226: - %t309 = getelementptr inbounds %S.gen.Gen, ptr %t307, i32 0, i32 15 - %t310 = load i64, ptr %a155 - %t311 = load { ptr, i64, i64 }, ptr %t309 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range9227, label %inrange9228 -range9227: - call void @finch_panic_index(ptr @.str.6196, i64 5840, i64 %t310, i64 %t312) - unreachable -inrange9228: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds %S.gen.FnSig, ptr %t314, i64 %t310 - %t316 = load %S.gen.FnSig, ptr %t315 - store %S.gen.FnSig %t316, ptr %a317 - call void @finch.copy.S_gen_FnSig(ptr %a318, ptr %a317) - %t319 = load %S.gen.FnSig, ptr %a318 - store %S.gen.FnSig %t319, ptr %a320 - %t321 = load ptr, ptr %a46 - %t322 = load %S.gen.FnSig, ptr %a320 - %t323 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t321, %S.gen.FnSig %t322) - store { ptr, i64, i64 } { ptr @.str.6197, i64 5, i64 0 }, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t323, ptr %a327 - call void @finch_str_drop(ptr %a327) - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6198, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - store { ptr, i64, i64 } %t328, ptr %a332 - call void @finch_str_drop(ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a329 - %t334 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 11 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t333, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t333, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.6199, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t345, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6200, i64 0, i64 0 }, ptr %a347 - %t348 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 13 - %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i32 0, i32 1 - %t350 = load i64, ptr %t349 - %t351 = icmp eq i64 %t350, 1 - br i1 %t351, label %then9229, label %endif9231 -then9229: - %t352 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6201, i64 133, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6202, i64 20, i64 0 }, ptr %a357 - call void @finch_str_concat(ptr %a355, ptr %a356, ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a355 - %t359 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t358, ptr %a346 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif9231 -endif9231: - %t361 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.6203, i64 1, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a362 - %t366 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t365, ptr %a346 - store { ptr, i64, i64 } %t366, ptr %a367 - call void @finch_str_drop(ptr %a367) - store { ptr, i64, i64 } { ptr @.str.6204, i64 12, i64 0 }, ptr %a368 - %t369 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 9 - %t370 = load i1, ptr %t369 - br i1 %t370, label %then9232, label %else9233 -then9232: - %t371 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6205, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a372 - %t376 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t375, ptr %a346 - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t378, ptr %a380 - store { ptr, i64, i64 } { ptr @.str.6206, i64 2, i64 0 }, ptr %a381 - call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a379 - %t383 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t382, ptr %a385 - store { ptr, i64, i64 } %t383, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t382, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.6207, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t393, ptr %a347 - store { ptr, i64, i64 } %t394, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6208, i64 0, i64 0 }, ptr %a346 - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a46 - %t399 = load %S.gen.FnSig, ptr %a320 - %t400 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t398, %S.gen.FnSig %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t402, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.6209, i64 21, i64 0 }, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - %t407 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.6210, i64 62, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t417, ptr %a347 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t420, ptr %a422 - store { ptr, i64, i64 } { ptr @.str.6211, i64 20, i64 0 }, ptr %a423 - call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) - %t424 = load { ptr, i64, i64 }, ptr %a421 - %t425 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t424, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t424, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.6212, i64 78, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - store { ptr, i64, i64 } %t430, ptr %a434 - call void @finch_str_drop(ptr %a434) - %t435 = load { ptr, i64, i64 }, ptr %a431 - %t436 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t435, ptr %a347 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.6213, i64 62, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a439 - %t443 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t442, ptr %a347 - store { ptr, i64, i64 } %t443, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t446 = getelementptr inbounds %S.ast.Type, ptr %t445, i32 0, i32 0 - %t447 = load { ptr, i64, i64 }, ptr %t446 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.6214, i64 3, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br i1 %t451, label %then9235, label %endif9237 -then9235: - %t452 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.6215, i64 20, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - %t456 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t456, ptr %a458 - store { ptr, i64, i64 } { ptr @.str.6216, i64 53, i64 0 }, ptr %a459 - call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) - store { ptr, i64, i64 } %t456, ptr %a460 - call void @finch_str_drop(ptr %a460) - %t461 = load { ptr, i64, i64 }, ptr %a457 - %t462 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t461, ptr %a368 - store { ptr, i64, i64 } %t462, ptr %a463 - call void @finch_str_drop(ptr %a463) - br label %endif9237 -endif9237: - call void @finch_str_drop(ptr %a401) - br label %endif9234 -else9233: - %t464 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t465 = getelementptr inbounds %S.ast.Type, ptr %t464, i32 0, i32 0 - %t466 = load { ptr, i64, i64 }, ptr %t465 - store { ptr, i64, i64 } %t466, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.6217, i64 3, i64 0 }, ptr %a468 - %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) - %t470 = icmp ne i32 %t469, 0 - br i1 %t470, label %then9238, label %endif9240 -then9238: - %t471 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6218, i64 5, i64 0 }, ptr %a473 - store { ptr, i64, i64 } %t471, ptr %a474 - call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474) - %t475 = load { ptr, i64, i64 }, ptr %a472 - %t476 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t475, ptr %a346 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.6219, i64 46, i64 0 }, ptr %a368 - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif9240 -endif9240: - br label %endif9234 -endif9234: - %t480 = load ptr, ptr %a46 - %t481 = icmp eq ptr %t480, null - br i1 %t481, label %panic9241, label %ok9242 -panic9241: - call void @finch_panic(ptr @.str.6220, i64 5865, ptr @.str.6221) - unreachable -ok9242: - %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 3 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6222, i64 48, i64 0 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a487 - call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t488, ptr %a490 - store { ptr, i64, i64 } { ptr @.str.6223, i64 2, i64 0 }, ptr %a491 - call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) - store { ptr, i64, i64 } %t488, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a489 - %t494 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t493, ptr %a496 - store { ptr, i64, i64 } %t494, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t493, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - store { ptr, i64, i64 } %t499, ptr %a501 - store { ptr, i64, i64 } { ptr @.str.6224, i64 1, i64 0 }, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - store { ptr, i64, i64 } %t499, ptr %a503 - call void @finch_str_drop(ptr %a503) - %t504 = load { ptr, i64, i64 }, ptr %a500 - %t505 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t504, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t504, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - store { ptr, i64, i64 } %t510, ptr %a512 - store { ptr, i64, i64 } { ptr @.str.6225, i64 2, i64 0 }, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - store { ptr, i64, i64 } %t510, ptr %a514 - call void @finch_str_drop(ptr %a514) - %t515 = load { ptr, i64, i64 }, ptr %a511 - %t516 = load i64, ptr %t483 - %t517 = add i64 %t516, 1 - call void @finch_arr_reserve(ptr %t482, i64 %t517, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t518 = load ptr, ptr %t482 - %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 %t516 - store { ptr, i64, i64 } %t515, ptr %t519 - store i64 %t517, ptr %t483 - %t520 = load ptr, ptr %a46 - %t521 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t520) - call void @finch_str_drop(ptr %a368) - call void @finch_str_drop(ptr %a347) - call void @finch_str_drop(ptr %a346) - call void @finch.drop.S_gen_FnSig(ptr %a320) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t521 -} - -define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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.6226, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6227, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6228, i64 78, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6229, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6230, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.6231, i64 77, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6232, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6233, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6234, i64 121, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6235, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6236, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.6237, i64 83, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6238, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6239, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6240, i64 29, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6241, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6242, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6243, i64 73, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6244, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6245, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6246, i64 98, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6247, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6248, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.6249, i64 66, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6250, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6251, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6252, i64 48, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6253, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6254, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6255, i64 77, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6256, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6257, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6258, i64 66, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6259, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6260, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6261, i64 73, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6262, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6263, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6264, i64 61, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6265, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6266, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6267, i64 130, i64 0 }) - %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6268, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6269, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6270, i64 75, i64 0 }) - %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6271, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6272, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6273, i64 29, i64 0 }) - %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6274, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6275, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6276, i64 26, i64 0 }) - %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6277, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6278, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6279, 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.6280, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6281, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6282, i64 23, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6283, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6284, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6285, i64 40, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6286, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6287, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6288, i64 18, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6289, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6290, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6291, i64 43, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6292, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6293, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6294, i64 38, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6295, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6296, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6297, i64 37, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6298, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6299, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6300, i64 19, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6301, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6302, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6303, i64 46, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6304, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6305, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6306, i64 22, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6307, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6308, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6309, i64 18, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6310, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6311, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6312, i64 37, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6313, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6314, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6315, i64 18, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6316, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6317, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6318, i64 45, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6319, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6321, 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.6322, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6323, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6324, i64 20, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6325, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6326, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6327, i64 59, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6328, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6329, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.6330, i64 29, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6331, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6332, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6333, i64 22, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6334, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6335, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6336, i64 24, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6337, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6338, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6339, i64 27, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6340, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6341, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6342, i64 25, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6343, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6344, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6345, i64 62, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6346, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6347, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6348, i64 41, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6349, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6350, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6351, i64 24, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6352, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6353, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6354, i64 24, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6355, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6356, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6357, i64 26, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6358, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6359, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6360, i64 17, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6361, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6362, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6363, 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.6364, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6365, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6366, i64 19, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6367, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6368, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6369, i64 22, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6370, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6371, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6372, i64 53, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6373, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6374, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6375, i64 52, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6376, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6377, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6378, i64 19, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6379, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6380, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6381, i64 39, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6382, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6383, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6384, 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.6385, i64 2, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6386, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6387, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6388, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6389, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6390, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6391, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6392, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6393, i64 8, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6394, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6395, i64 5, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6396, i64 4, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6397, i64 6, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6398, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6399, i64 6, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6400, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6401, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6402, i64 6, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6403, i64 5, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6404, i64 2, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6405, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6406, 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.6407, i64 3, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6408, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6409, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6410, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6411, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6412, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6413, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6414, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6415, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6416, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6417, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6418, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6419, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6420, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6421, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6422, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6423, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 17, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 17, 2 - ret { ptr, i64, i64 } %t22 -} - -define internal void @finch.copy.S_docs_Doc(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.docs.Doc, ptr %src - store %S.docs.Doc %t1, ptr %dst - %t2 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca %S.docs.Doc, align 16 - %a21 = alloca %S.docs.Doc, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond9243 -each.cond9243: - %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.body9244, label %each.end9246 -each.body9244: - %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 %then9247, label %endif9249 -then9247: - %t19 = load %S.docs.Doc, ptr %a11 - store %S.docs.Doc %t19, ptr %a20 - call void @finch.copy.S_docs_Doc(ptr %a21, ptr %a20) - %t22 = load %S.docs.Doc, ptr %a21 - ret %S.docs.Doc %t22 -endif9249: - br label %each.step9245 -each.step9245: - %t23 = load i64, ptr %a3 - %t24 = add i64 %t23, 1 - store i64 %t24, ptr %a3 - br label %each.cond9243 -each.end9246: - 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 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store %S.docs.Doc %p0, ptr %a1 - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } { ptr @.str.6424, 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.6425, i64 5, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } %t12, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t12, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { -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 - 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 - ret { ptr, i64, i64 } %t17 -} - -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 - store %S.ast.Type %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6426, 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 - ret %S.ast.Type %t17 -} - -define internal { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca i1, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca i64, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6427, i64 15, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a10, i64 %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t8, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6428, i64 4, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6429, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.6430, i64 2, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6431, i64 0, i64 0 }, ptr %a47 - %t48 = call i32 @finch_write_file(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - %t50 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6432, i64 12, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - %t55 = load { ptr, i64, i64 }, ptr %a44 - %t56 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t54, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t54, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6433, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load { ptr, i64, i64 }, ptr %a23 - %t69 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t67, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t67, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.6434, i64 3, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - %t88 = call i64 @finch.host.run({ ptr, i64, i64 } %t87) - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a44 - call void @finch.host.remove({ ptr, i64, i64 } %t90) - %t91 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - %t95 = xor i1 %t94, true - br i1 %t95, label %then9250, label %endif9252 -then9250: - %t96 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t96 -endif9252: - store i1 false, ptr %a97 - %t98 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_read_file(ptr %a100, ptr %a99, ptr @.str.6435, i64 114) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.6437, i64 1, i64 0 }, ptr %a104 - call void @finch_str_split(ptr %a105, ptr %a102, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t101, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t106, ptr %a108 - store i64 0, ptr %a109 - br label %each.cond9253 -each.cond9253: - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a108, i32 0, i32 1 - %t111 = load i64, ptr %t110 - %t112 = load i64, ptr %a109 - %t113 = icmp slt i64 %t112, %t111 - br i1 %t113, label %each.body9254, label %each.end9256 -each.body9254: - %t114 = load ptr, ptr %a108 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_trim(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t121, ptr %a122 - %t123 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.6440, i64 34, i64 0 }, ptr %a126 - %t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126) - %t128 = icmp ne i32 %t127, 0 - br i1 %t128, label %then9257, label %endif9259 -then9257: - store i1 true, ptr %a97 - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9259: - %t129 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6442, i64 19, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br i1 %t134, label %then9260, label %endif9262 -then9260: - call void @finch_str_drop(ptr %a122) - br label %each.end9256 -endif9262: - %t135 = load i1, ptr %a97 - %t136 = xor i1 %t135, true - br label %logic.from9263 -logic.from9263: - br i1 %t136, label %logic.end9265, label %logic.rhs9264 -logic.rhs9264: - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br label %logic.rend9266 -logic.rend9266: - br label %logic.end9265 -logic.end9265: - %t140 = phi i1 [ true, %logic.from9263 ], [ %t139, %logic.rend9266 ] - br i1 %t140, label %then9267, label %endif9269 -then9267: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9269: - %t141 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6444, i64 22, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_ends(ptr %a142, ptr %a144) - %t146 = icmp ne i32 %t145, 0 - br i1 %t146, label %then9270, label %else9271 -then9270: - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t148, ptr %a149 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = sub i64 %t152, 22 - call void @finch_str_sub(ptr %a150, ptr %a149, i64 0, i64 %t153, ptr @.str.6446, i64 128) - %t154 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.6445, i64 11, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %t147 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t161, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %a2 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160 - store { ptr, i64, i64 } %t159, ptr %t163 - store i64 %t161, ptr %t147 - br label %endif9272 -else9271: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6447, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - %t170 = load i64, ptr %t164 - %t171 = add i64 %t170, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t172 = load ptr, ptr %a2 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 - store { ptr, i64, i64 } %t169, ptr %t173 - store i64 %t171, ptr %t164 - br label %endif9272 -endif9272: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -each.step9255: - %t174 = load i64, ptr %a109 - %t175 = add i64 %t174, 1 - store i64 %t175, ptr %a109 - br label %each.cond9253 -each.end9256: - call void @finch.drop.arr_str(ptr %a108) - %t176 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.host.remove({ ptr, i64, i64 } %t176) - %t177 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t177 -} - -define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) { -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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - %t4 = load %S.C.CXType, ptr %a2 - 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 %panic9273, label %ok9274 -panic9273: - call void @finch_panic(ptr @.str.6448, i64 143, ptr @.str.6449) - unreachable -ok9274: - %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 %then9275, label %endif9277 -then9275: - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic9278, label %ok9279 -panic9278: - call void @finch_panic(ptr @.str.6450, i64 144, ptr @.str.6451) - unreachable -ok9279: - %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.missing9280, label %map.found9281 -map.missing9280: - 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.6452, i64 144, ptr %a29) - unreachable -map.found9281: - %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 - call void @finch_str_drop(ptr %a14) - ret { ptr, i64, i64 } %t38 -endif9277: - %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.from9282 -logic.from9282: - br i1 %t48, label %logic.end9284, label %logic.rhs9283 -logic.rhs9283: - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6454, 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.rend9285 -logic.rend9285: - br label %logic.end9284 -logic.end9284: - %t55 = phi i1 [ true, %logic.from9282 ], [ %t54, %logic.rend9285 ] - br i1 %t55, label %then9286, label %endif9288 -then9286: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic9289, label %ok9290 -panic9289: - call void @finch_panic(ptr @.str.6455, i64 148, ptr @.str.6456) - unreachable -ok9290: - %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 %panic9291, label %ok9292 -panic9291: - call void @finch_panic(ptr @.str.6458, i64 149, ptr @.str.6459) - unreachable -ok9292: - %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.6457, i64 12, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t71, ptr %a45 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_drop(ptr %a73) - br label %endif9288 -endif9288: - %t74 = load { ptr, i64, i64 }, ptr %a45 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic9293, label %ok9294 -panic9293: - call void @finch_panic(ptr @.str.6460, i64 151, ptr @.str.6461) - unreachable -ok9294: - %t77 = getelementptr inbounds %S.cimport.Importer, ptr %t75, i32 0, i32 3 - %t78 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t78, ptr %a79 - store i32 0, ptr %a80 - %t81 = call i64 @finch_map_slot(ptr %t77, ptr %a79, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a80) - %t82 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t77, i32 0, i32 0 - %t83 = load ptr, ptr %t82 - %t84 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i64 %t81 - %t85 = load i32, ptr %a80 - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %map.new9295, label %map.have9296 -map.new9295: - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 1 - call void @finch_str_copy(ptr %t87, ptr %a79) - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t88 - br label %map.have9296 -map.have9296: - %t89 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 - store { ptr, i64, i64 } %t74, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } %t92, ptr %t89 - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a14) - ret { ptr, i64, i64 } %t95 -} - -define internal i32 @finch.c.cimport.visitField(ptr %c0, ptr %c1) { -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 - %a42 = alloca %S.C.CXType, align 16 - %a44 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i32, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca %S.C.CXType, align 16 - %a73 = alloca %S.cimport.CStruct, align 16 - %a75 = alloca %S.C.CXCursor, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.cimport.FieldCtx, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca i32, align 16 - %a117 = alloca %S.cimport.CStruct, align 16 - %a118 = alloca %S.cimport.CStruct, align 16 - %a121 = alloca %S.cimport.CStruct, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - %t4 = load %S.C.CXType, ptr %a2 - 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 %panic9297, label %ok9298 -panic9297: - call void @finch_panic(ptr @.str.6462, i64 161, ptr @.str.6463) - unreachable -ok9298: - %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.from9299 -logic.from9299: - br i1 %t31, label %logic.end9301, label %logic.rhs9300 -logic.rhs9300: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic9302, label %ok9303 -panic9302: - call void @finch_panic(ptr @.str.6464, i64 161, ptr @.str.6465) - unreachable -ok9303: - %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.rend9304 -logic.rend9304: - br label %logic.end9301 -logic.end9301: - %t39 = phi i1 [ true, %logic.from9299 ], [ %t38, %logic.rend9304 ] - br i1 %t39, label %then9305, label %endif9307 -then9305: - %t40 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t40 -endif9307: - %t41 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t41, ptr %a42 - %t43 = call i64 @clang_Type_getSizeOf(ptr %a42) - store i64 %t43, ptr %a44 - %t45 = load i64, ptr %a44 - %t46 = icmp slt i64 %t45, 0 - br i1 %t46, label %then9308, label %endif9310 -then9308: - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } { ptr @.str.6466, i64 0, i64 0 } -endif9310: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic9311, label %ok9312 -panic9311: - call void @finch_panic(ptr @.str.6467, i64 168, ptr @.str.6468) - unreachable -ok9312: - %t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 4 - %t50 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t50, ptr %a51 - store i32 0, ptr %a52 - %t53 = call i64 @finch_map_slot(ptr %t49, ptr %a51, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a52) - %t54 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t49, i32 0, i32 0 - %t55 = load ptr, ptr %t54 - %t56 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i64 %t53 - %t57 = load i32, ptr %a52 - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %map.new9313, label %map.have9314 -map.new9313: - %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 1 - call void @finch_str_copy(ptr %t59, ptr %a51) - %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 - store i1 false, ptr %t60 - br label %map.have9314 -map.have9314: - %t61 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 - store i1 true, ptr %t61 - %t62 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t65, 0 - %t67 = load i64, ptr %a44 - %t68 = insertvalue %S.cimport.CStruct %t66, i64 %t67, 2 - %t69 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t69, ptr %a70 - %t71 = call i64 @clang_Type_getAlignOf(ptr %a70) - %t72 = insertvalue %S.cimport.CStruct %t68, i64 %t71, 3 - store %S.cimport.CStruct %t72, ptr %a73 - %t74 = load %S.C.CXCursor, ptr %a12 - store %S.C.CXCursor %t74, ptr %a75 - %t76 = call i32 @clang_getCursorKind(ptr %a75) - %t77 = icmp eq i32 %t76, 3 - br i1 %t77, label %then9315, label %endif9317 -then9315: - %t78 = getelementptr inbounds %S.cimport.CStruct, ptr %a73, i32 0, i32 4 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } { ptr @.str.6469, i64 12, i64 0 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif9317 -endif9317: - %t81 = load ptr, ptr %a1 - %t82 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t81, 0 - %t83 = insertvalue %S.cimport.FieldCtx %t82, ptr %a73, 1 - store %S.cimport.FieldCtx %t83, ptr %a84 - %t85 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t85, ptr %a86 - %t87 = call i32 @clang_Type_visitFields(ptr %a86, ptr @finch.c.cimport.visitField, ptr %a84) - %t88 = load ptr, ptr %a1 - %t89 = icmp eq ptr %t88, null - br i1 %t89, label %panic9318, label %ok9319 -panic9318: - call void @finch_panic(ptr @.str.6470, i64 176, ptr @.str.6471) - unreachable -ok9319: - %t90 = getelementptr inbounds %S.cimport.Importer, ptr %t88, i32 0, i32 4 - %t91 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i64 @finch_map_find(ptr %t90, ptr %a92, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t94 = icmp sge i64 %t93, 0 - br i1 %t94, label %remove.hit9320, label %remove.end9321 -remove.hit9320: - %t95 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t90, i32 0, i32 0 - %t96 = load ptr, ptr %t95 - %t97 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t96, i64 %t93 - %t98 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 1 - call void @finch_str_drop(ptr %t98) - %t99 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 2 - call void @finch_map_remove_at(ptr %t90, i64 %t93, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64)) - br label %remove.end9321 -remove.end9321: - %t100 = load %S.cimport.CStruct, ptr %a73 - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic9322, label %ok9323 -panic9322: - call void @finch_panic(ptr @.str.6472, i64 177, ptr @.str.6473) - unreachable -ok9323: - %t103 = getelementptr inbounds %S.cimport.Importer, ptr %t101, i32 0, i32 0 - %t104 = getelementptr inbounds %S.cimport.CImports, ptr %t103, i32 0, i32 3 - %t105 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t105, ptr %a106 - store i32 0, ptr %a107 - %t108 = call i64 @finch_map_slot(ptr %t104, ptr %a106, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a107) - %t109 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t104, i32 0, i32 0 - %t110 = load ptr, ptr %t109 - %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i64 %t108 - %t112 = load i32, ptr %a107 - %t113 = icmp ne i32 %t112, 0 - br i1 %t113, label %map.new9324, label %map.have9325 -map.new9324: - %t114 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 1 - call void @finch_str_copy(ptr %t114, ptr %a106) - %t115 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 - store %S.cimport.CStruct zeroinitializer, ptr %t115 - br label %map.have9325 -map.have9325: - %t116 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 - store %S.cimport.CStruct %t100, ptr %a117 - call void @finch.copy.S_cimport_CStruct(ptr %a118, ptr %a117) - %t119 = load %S.cimport.CStruct, ptr %a118 - %t120 = load %S.cimport.CStruct, ptr %t116 - store %S.cimport.CStruct %t119, ptr %t116 - store %S.cimport.CStruct %t120, ptr %a121 - call void @finch.drop.S_cimport_CStruct(ptr %a121) - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic9326, label %ok9327 -panic9326: - call void @finch_panic(ptr @.str.6474, i64 178, ptr @.str.6475) - unreachable -ok9327: - %t124 = getelementptr inbounds %S.cimport.Importer, ptr %t122, i32 0, i32 0 - %t125 = getelementptr inbounds %S.cimport.CImports, ptr %t124, i32 0, i32 4 - %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t125, i32 0, i32 1 - %t127 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = load i64, ptr %t126 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t125, i64 %t132, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t125 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i64 %t131 - store { ptr, i64, i64 } %t130, ptr %t134 - store i64 %t132, ptr %t126 - %t135 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.S_cimport_CStruct(ptr %a73) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t135 -} - -define internal void @finch.drop.S_cimport_Mapped(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 0 - call void @finch.drop.S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) { -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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca %S.C.CXCursor, align 16 - %a52 = alloca %S.C.CXType, align 16 - %a54 = alloca %S.C.CXCursor, align 16 - %a65 = alloca %S.cimport.Mapped, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a72 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a98 = alloca %S.cimport.CField, align 16 - %a99 = alloca %S.cimport.CField, align 16 - store %S.C.CXCursor %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a2 - 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 %then9328, label %else9329 -then9328: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic9331, label %ok9332 -panic9331: - call void @finch_panic(ptr @.str.6477, i64 195, ptr @.str.6478) - unreachable -ok9332: - %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 %panic9333, label %ok9334 -panic9333: - call void @finch_panic(ptr @.str.6479, i64 195, ptr @.str.6480) - unreachable -ok9334: - %t43 = getelementptr inbounds %S.cimport.CStruct, ptr %t41, i32 0, i32 4 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.6476, i64 14, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t46 - br label %endif9330 -else9329: - %t47 = getelementptr inbounds %S.C.CXType, ptr %a20, i32 0, i32 0 - %t48 = load i32, ptr %t47 - %t49 = icmp eq i32 %t48, 105 - br label %logic.from9335 -logic.from9335: - br i1 %t49, label %logic.rhs9336, label %logic.end9337 -logic.rhs9336: - %t51 = load %S.C.CXType, ptr %a20 - store %S.C.CXType %t51, ptr %a52 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a50, ptr %a52) - %t53 = load %S.C.CXCursor, ptr %a50 - store %S.C.CXCursor %t53, ptr %a54 - %t55 = call i32 @clang_getCursorKind(ptr %a54) - %t56 = icmp eq i32 %t55, 3 - br label %logic.rend9338 -logic.rend9338: - br label %logic.end9337 -logic.end9337: - %t57 = phi i1 [ false, %logic.from9335 ], [ %t56, %logic.rend9338 ] - br i1 %t57, label %then9339, label %else9340 -then9339: - %t58 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t58 - br label %endif9341 -else9340: - %t59 = load ptr, ptr %a4 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic9342, label %ok9343 -panic9342: - call void @finch_panic(ptr @.str.6481, i64 200, ptr @.str.6482) - unreachable -ok9343: - %t61 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t59, i32 0, i32 0 - %t62 = load ptr, ptr %t61 - %t63 = load %S.C.CXType, ptr %a20 - %t64 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t62, %S.C.CXType %t63, i1 false, i1 false) - store %S.cimport.Mapped %t64, ptr %a65 - %t66 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 2 - %t67 = load i1, ptr %t66 - br i1 %t67, label %then9344, label %else9345 -then9344: - %t68 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 0 - %t69 = load %S.ast.Type, ptr %t68 - %t70 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 1 - store %S.ast.Type %t69, ptr %a71 - call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71) - %t73 = load %S.ast.Type, ptr %a72 - %t74 = load %S.ast.Type, ptr %t70 - store %S.ast.Type %t73, ptr %t70 - store %S.ast.Type %t74, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - br label %endif9346 -else9345: - %t76 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t76 - br label %endif9346 -endif9346: - call void @finch.drop.S_cimport_Mapped(ptr %a65) - br label %endif9341 -endif9341: - br label %endif9330 -endif9330: - %t77 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then9347, label %endif9349 -then9347: - %t79 = load ptr, ptr %a4 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic9350, label %ok9351 -panic9350: - call void @finch_panic(ptr @.str.6483, i64 208, ptr @.str.6484) - unreachable -ok9351: - %t81 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t79, i32 0, i32 1 - %t82 = load ptr, ptr %t81 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic9352, label %ok9353 -panic9352: - call void @finch_panic(ptr @.str.6485, i64 208, ptr @.str.6486) - unreachable -ok9353: - %t84 = getelementptr inbounds %S.cimport.CStruct, ptr %t82, i32 0, i32 5 - store i1 true, ptr %t84 - br label %endif9349 -endif9349: - %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = icmp eq i64 %t87, 0 - br i1 %t88, label %then9354, label %endif9356 -then9354: - %t89 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t89 - br label %endif9356 -endif9356: - %t90 = load ptr, ptr %a4 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic9357, label %ok9358 -panic9357: - call void @finch_panic(ptr @.str.6487, i64 213, ptr @.str.6488) - unreachable -ok9358: - %t92 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t90, i32 0, i32 1 - %t93 = load ptr, ptr %t92 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic9359, label %ok9360 -panic9359: - call void @finch_panic(ptr @.str.6489, i64 213, ptr @.str.6490) - unreachable -ok9360: - %t95 = getelementptr inbounds %S.cimport.CStruct, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load %S.cimport.CField, ptr %a12 - store %S.cimport.CField %t97, ptr %a98 - call void @finch.copy.S_cimport_CField(ptr %a99, ptr %a98) - %t100 = load %S.cimport.CField, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds %S.cimport.CField, ptr %t103, i64 %t101 - store %S.cimport.CField %t100, ptr %t104 - store i64 %t102, ptr %t96 - call void @finch.drop.S_cimport_CField(ptr %a12) - ret i32 1 -} - -define internal %S.cimport.Mapped @finch.cimport.sized(i64 %p0, i1 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a29 = alloca %S.ast.Type, align 16 - %a35 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load i64, ptr %a1 - %t4 = icmp eq i64 %t3, 1 - br i1 %t4, label %then9361, label %endif9363 -then9361: - %t5 = load i1, ptr %a2 - br i1 %t5, label %then9364, label %endif9366 -then9364: - %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6491, i64 2, i64 0 }) - %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) - store %S.ast.Type %t6, ptr %a8 - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.cimport.Mapped %t7 -endif9366: - %t9 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6492, i64 2, i64 0 }) - %t10 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t9) - store %S.ast.Type %t9, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.cimport.Mapped %t10 -endif9363: - %t12 = load i64, ptr %a1 - %t13 = icmp eq i64 %t12, 2 - br i1 %t13, label %then9367, label %endif9369 -then9367: - %t14 = load i1, ptr %a2 - br i1 %t14, label %then9370, label %endif9372 -then9370: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6493, i64 3, i64 0 }) - %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) - store %S.ast.Type %t15, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a17) - ret %S.cimport.Mapped %t16 -endif9372: - %t18 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6494, i64 3, i64 0 }) - %t19 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t18) - store %S.ast.Type %t18, ptr %a20 - call void @finch.drop.S_ast_Type(ptr %a20) - ret %S.cimport.Mapped %t19 -endif9369: - %t21 = load i64, ptr %a1 - %t22 = icmp eq i64 %t21, 4 - br i1 %t22, label %then9373, label %endif9375 -then9373: - %t23 = load i1, ptr %a2 - br i1 %t23, label %then9376, label %endif9378 -then9376: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6495, i64 3, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9378: - %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6496, i64 3, i64 0 }) - %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) - store %S.ast.Type %t27, ptr %a29 - call void @finch.drop.S_ast_Type(ptr %a29) - ret %S.cimport.Mapped %t28 -endif9375: - %t30 = load i64, ptr %a1 - %t31 = icmp eq i64 %t30, 8 - br i1 %t31, label %then9379, label %endif9381 -then9379: - %t32 = load i1, ptr %a2 - br i1 %t32, label %then9382, label %endif9384 -then9382: - %t33 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6497, i64 3, i64 0 }) - %t34 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t33) - store %S.ast.Type %t33, ptr %a35 - call void @finch.drop.S_ast_Type(ptr %a35) - ret %S.cimport.Mapped %t34 -endif9384: - %t36 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6498, i64 3, i64 0 }) - %t37 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t36) - store %S.ast.Type %t36, ptr %a38 - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.cimport.Mapped %t37 -endif9381: - %t39 = load i64, ptr %a1 - %t40 = mul i64 %t39, 8 - call void @finch_str_from_int(ptr %a41, i64 %t40) - %t42 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.6499, i64 7, i64 0 }, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.6500, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a54 - call void @finch_str_drop(ptr %a54) - ret %S.cimport.Mapped %t53 -} - -define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) { -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 - %a21 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.ast.Type, align 16 - %a83 = alloca %S.C.CXType, align 16 - %a84 = alloca %S.C.CXType, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a88 = alloca %S.C.CXType, align 16 - %a90 = alloca %S.C.CXType, align 16 - %a103 = alloca %S.C.CXType, align 16 - %a109 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.cimport.Mapped, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca %S.ast.Type, align 16 - %a154 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.C.CXCursor, align 16 - %a159 = alloca %S.C.CXType, align 16 - %a161 = alloca %S.C.CXCursor, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.C.CXType, align 16 - %a187 = alloca %S.C.CXType, align 16 - %a190 = alloca %S.cimport.Mapped, align 16 - %a198 = alloca %S.C.CXType, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a207 = alloca %S.C.CXType, align 16 - %a209 = alloca [32 x i8], align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - store i1 %p2, ptr %a3 - 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 %then9385, label %endif9387 -then9385: - %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6501, i64 4, i64 0 }) - %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.cimport.Mapped %t20 -endif9387: - %t22 = load i32, ptr %a16 - %t23 = icmp eq i32 %t22, 3 - br i1 %t23, label %then9388, label %endif9390 -then9388: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6502, i64 4, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9390: - %t27 = load i32, ptr %a16 - %t28 = icmp eq i32 %t27, 13 - br label %logic.from9391 -logic.from9391: - br i1 %t28, label %logic.end9393, label %logic.rhs9392 -logic.rhs9392: - %t29 = load i32, ptr %a16 - %t30 = icmp eq i32 %t29, 4 - br label %logic.rend9394 -logic.rend9394: - br label %logic.end9393 -logic.end9393: - %t31 = phi i1 [ true, %logic.from9391 ], [ %t30, %logic.rend9394 ] - br i1 %t31, label %then9395, label %endif9397 -then9395: - %t32 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6503, i64 4, i64 0 }) - %t33 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - ret %S.cimport.Mapped %t33 -endif9397: - %t35 = load i32, ptr %a16 - %t36 = icmp eq i32 %t35, 14 - br label %logic.from9398 -logic.from9398: - br i1 %t36, label %logic.end9400, label %logic.rhs9399 -logic.rhs9399: - %t37 = load i32, ptr %a16 - %t38 = icmp eq i32 %t37, 16 - br label %logic.rend9401 -logic.rend9401: - br label %logic.end9400 -logic.end9400: - %t39 = phi i1 [ true, %logic.from9398 ], [ %t38, %logic.rend9401 ] - br label %logic.from9402 -logic.from9402: - br i1 %t39, label %logic.end9404, label %logic.rhs9403 -logic.rhs9403: - %t40 = load i32, ptr %a16 - %t41 = icmp eq i32 %t40, 17 - br label %logic.rend9405 -logic.rend9405: - br label %logic.end9404 -logic.end9404: - %t42 = phi i1 [ true, %logic.from9402 ], [ %t41, %logic.rend9405 ] - br label %logic.from9406 -logic.from9406: - br i1 %t42, label %logic.end9408, label %logic.rhs9407 -logic.rhs9407: - %t43 = load i32, ptr %a16 - %t44 = icmp eq i32 %t43, 18 - br label %logic.rend9409 -logic.rend9409: - br label %logic.end9408 -logic.end9408: - %t45 = phi i1 [ true, %logic.from9406 ], [ %t44, %logic.rend9409 ] - br label %logic.from9410 -logic.from9410: - br i1 %t45, label %logic.end9412, label %logic.rhs9411 -logic.rhs9411: - %t46 = load i32, ptr %a16 - %t47 = icmp eq i32 %t46, 19 - br label %logic.rend9413 -logic.rend9413: - br label %logic.end9412 -logic.end9412: - %t48 = phi i1 [ true, %logic.from9410 ], [ %t47, %logic.rend9413 ] - br i1 %t48, label %then9414, label %endif9416 -then9414: - %t49 = load i64, ptr %a13 - %t50 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t49, i1 true) - ret %S.cimport.Mapped %t50 -endif9416: - %t51 = load i32, ptr %a16 - %t52 = icmp eq i32 %t51, 5 - br label %logic.from9417 -logic.from9417: - br i1 %t52, label %logic.end9419, label %logic.rhs9418 -logic.rhs9418: - %t53 = load i32, ptr %a16 - %t54 = icmp eq i32 %t53, 8 - br label %logic.rend9420 -logic.rend9420: - br label %logic.end9419 -logic.end9419: - %t55 = phi i1 [ true, %logic.from9417 ], [ %t54, %logic.rend9420 ] - br label %logic.from9421 -logic.from9421: - br i1 %t55, label %logic.end9423, label %logic.rhs9422 -logic.rhs9422: - %t56 = load i32, ptr %a16 - %t57 = icmp eq i32 %t56, 9 - br label %logic.rend9424 -logic.rend9424: - br label %logic.end9423 -logic.end9423: - %t58 = phi i1 [ true, %logic.from9421 ], [ %t57, %logic.rend9424 ] - br label %logic.from9425 -logic.from9425: - br i1 %t58, label %logic.end9427, label %logic.rhs9426 -logic.rhs9426: - %t59 = load i32, ptr %a16 - %t60 = icmp eq i32 %t59, 10 - br label %logic.rend9428 -logic.rend9428: - br label %logic.end9427 -logic.end9427: - %t61 = phi i1 [ true, %logic.from9425 ], [ %t60, %logic.rend9428 ] - br label %logic.from9429 -logic.from9429: - br i1 %t61, label %logic.end9431, label %logic.rhs9430 -logic.rhs9430: - %t62 = load i32, ptr %a16 - %t63 = icmp eq i32 %t62, 11 - br label %logic.rend9432 -logic.rend9432: - br label %logic.end9431 -logic.end9431: - %t64 = phi i1 [ true, %logic.from9429 ], [ %t63, %logic.rend9432 ] - br i1 %t64, label %then9433, label %endif9435 -then9433: - %t65 = load i64, ptr %a13 - %t66 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t65, i1 false) - ret %S.cimport.Mapped %t66 -endif9435: - %t67 = load i32, ptr %a16 - %t68 = icmp eq i32 %t67, 106 - br i1 %t68, label %then9436, label %endif9438 -then9436: - %t69 = load i64, ptr %a13 - %t70 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t69, i1 true) - ret %S.cimport.Mapped %t70 -endif9438: - %t71 = load i32, ptr %a16 - %t72 = icmp eq i32 %t71, 21 - br i1 %t72, label %then9439, label %endif9441 -then9439: - %t73 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6504, i64 3, i64 0 }) - %t74 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t73) - store %S.ast.Type %t73, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - ret %S.cimport.Mapped %t74 -endif9441: - %t76 = load i32, ptr %a16 - %t77 = icmp eq i32 %t76, 22 - br i1 %t77, label %then9442, label %endif9444 -then9442: - %t78 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6505, i64 5, i64 0 }) - %t79 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t78) - store %S.ast.Type %t78, ptr %a80 - call void @finch.drop.S_ast_Type(ptr %a80) - ret %S.cimport.Mapped %t79 -endif9444: - %t81 = load i32, ptr %a16 - %t82 = icmp eq i32 %t81, 101 - br i1 %t82, label %then9445, label %endif9447 -then9445: - %t85 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t85, ptr %a86 - call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a84, ptr %a86) - %t87 = load %S.C.CXType, ptr %a84 - store %S.C.CXType %t87, ptr %a88 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a83, ptr %a88) - %t89 = load %S.C.CXType, ptr %a83 - store %S.C.CXType %t89, ptr %a90 - %t91 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t92 = load i32, ptr %t91 - %t93 = icmp eq i32 %t92, 13 - br label %logic.from9448 -logic.from9448: - br i1 %t93, label %logic.end9450, label %logic.rhs9449 -logic.rhs9449: - %t94 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t95 = load i32, ptr %t94 - %t96 = icmp eq i32 %t95, 4 - br label %logic.rend9451 -logic.rend9451: - br label %logic.end9450 -logic.end9450: - %t97 = phi i1 [ true, %logic.from9448 ], [ %t96, %logic.rend9451 ] - br label %logic.from9452 -logic.from9452: - br i1 %t97, label %logic.rhs9453, label %logic.end9454 -logic.rhs9453: - %t98 = load i1, ptr %a3 - br label %logic.rend9455 -logic.rend9455: - br label %logic.end9454 -logic.end9454: - %t99 = phi i1 [ false, %logic.from9452 ], [ %t98, %logic.rend9455 ] - br i1 %t99, label %then9456, label %endif9458 -then9456: - %t100 = load i1, ptr %a4 - %t101 = xor i1 %t100, true - br label %logic.from9459 -logic.from9459: - br i1 %t101, label %logic.end9461, label %logic.rhs9460 -logic.rhs9460: - %t102 = load %S.C.CXType, ptr %a90 - store %S.C.CXType %t102, ptr %a103 - %t104 = call i32 @clang_isConstQualifiedType(ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend9462 -logic.rend9462: - br label %logic.end9461 -logic.end9461: - %t106 = phi i1 [ true, %logic.from9459 ], [ %t105, %logic.rend9462 ] - br i1 %t106, label %then9463, label %endif9465 -then9463: - %t107 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6506, i64 3, i64 0 }) - %t108 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t107) - store %S.ast.Type %t107, ptr %a109 - call void @finch.drop.S_ast_Type(ptr %a109) - ret %S.cimport.Mapped %t108 -endif9465: - br label %endif9458 -endif9458: - %t110 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t111 = load i32, ptr %t110 - %t112 = icmp eq i32 %t111, 2 - br label %logic.from9466 -logic.from9466: - br i1 %t112, label %logic.end9468, label %logic.rhs9467 -logic.rhs9467: - %t113 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t114 = load i32, ptr %t113 - %t115 = icmp eq i32 %t114, 111 - br label %logic.rend9469 -logic.rend9469: - br label %logic.end9468 -logic.end9468: - %t116 = phi i1 [ true, %logic.from9466 ], [ %t115, %logic.rend9469 ] - br label %logic.from9470 -logic.from9470: - br i1 %t116, label %logic.end9472, label %logic.rhs9471 -logic.rhs9471: - %t117 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t118 = load i32, ptr %t117 - %t119 = icmp eq i32 %t118, 110 - br label %logic.rend9473 -logic.rend9473: - br label %logic.end9472 -logic.end9472: - %t120 = phi i1 [ true, %logic.from9470 ], [ %t119, %logic.rend9473 ] - br i1 %t120, label %then9474, label %endif9476 -then9474: - %t121 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6507, i64 3, i64 0 }) - %t122 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t121) - store %S.ast.Type %t121, ptr %a123 - call void @finch.drop.S_ast_Type(ptr %a123) - ret %S.cimport.Mapped %t122 -endif9476: - %t124 = load ptr, ptr %a1 - %t125 = load %S.C.CXType, ptr %a90 - %t126 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t124, %S.C.CXType %t125, i1 false, i1 false) - store %S.cimport.Mapped %t126, ptr %a127 - %t128 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 2 - %t129 = load i1, ptr %t128 - %t130 = xor i1 %t129, true - br label %logic.from9477 -logic.from9477: - br i1 %t130, label %logic.end9479, label %logic.rhs9478 -logic.rhs9478: - %t131 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.6508, 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.rend9480 -logic.rend9480: - br label %logic.end9479 -logic.end9479: - %t138 = phi i1 [ true, %logic.from9477 ], [ %t137, %logic.rend9480 ] - br label %logic.from9481 -logic.from9481: - br i1 %t138, label %logic.end9483, label %logic.rhs9482 -logic.rhs9482: - %t139 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t140 = getelementptr inbounds %S.ast.Type, ptr %t139, i32 0, i32 0 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6509, i64 5, i64 0 }, ptr %a143 - %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) - %t145 = icmp ne i32 %t144, 0 - br label %logic.rend9484 -logic.rend9484: - br label %logic.end9483 -logic.end9483: - %t146 = phi i1 [ true, %logic.from9481 ], [ %t145, %logic.rend9484 ] - br i1 %t146, label %then9485, label %endif9487 -then9485: - %t147 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6510, i64 3, i64 0 }) - %t148 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t147) - store %S.ast.Type %t147, ptr %a149 - call void @finch.drop.S_ast_Type(ptr %a149) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t148 -endif9487: - %t150 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t151) - %t153 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t152) - store %S.ast.Type %t152, ptr %a154 - call void @finch.drop.S_ast_Type(ptr %a154) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t153 -endif9447: - %t155 = load i32, ptr %a16 - %t156 = icmp eq i32 %t155, 105 - br i1 %t156, label %then9488, label %endif9490 -then9488: - %t158 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t158, ptr %a159 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a157, ptr %a159) - %t160 = load %S.C.CXCursor, ptr %a157 - store %S.C.CXCursor %t160, ptr %a161 - %t162 = call i32 @clang_getCursorKind(ptr %a161) - %t163 = icmp eq i32 %t162, 3 - br i1 %t163, label %then9491, label %endif9493 -then9491: - %t164 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6511, i64 23, i64 0 }) - ret %S.cimport.Mapped %t164 -endif9493: - %t165 = load ptr, ptr %a1 - %t166 = load %S.C.CXType, ptr %a9 - %t167 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t165, %S.C.CXType %t166) - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = icmp eq i64 %t170, 0 - br i1 %t171, label %then9494, label %endif9496 -then9494: - %t172 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6512, i64 36, i64 0 }) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t172 -endif9496: - %t173 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6513, i64 5, i64 0 }, 0 - %t174 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t174, ptr %a175 - call void @finch_str_copy(ptr %a176, ptr %a175) - %t177 = load { ptr, i64, i64 }, ptr %a176 - %t178 = insertvalue %S.ast.Type %t173, { ptr, i64, i64 } %t177, 2 - %t179 = insertvalue %S.ast.Type %t178, { ptr, i64, i64 } { ptr @.str.6514, i64 1, i64 0 }, 3 - %t180 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t179) - store %S.ast.Type %t179, ptr %a181 - call void @finch.drop.S_ast_Type(ptr %a181) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t180 -endif9490: - %t182 = load i32, ptr %a16 - %t183 = icmp eq i32 %t182, 112 - br i1 %t183, label %then9497, label %endif9499 -then9497: - %t184 = load ptr, ptr %a1 - %t186 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t186, ptr %a187 - call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a185, ptr %a187) - %t188 = load %S.C.CXType, ptr %a185 - %t189 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t184, %S.C.CXType %t188, i1 false, i1 false) - store %S.cimport.Mapped %t189, ptr %a190 - %t191 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 2 - %t192 = load i1, ptr %t191 - %t193 = xor i1 %t192, true - br i1 %t193, label %then9500, label %endif9502 -then9500: - %t194 = load %S.cimport.Mapped, ptr %a190 - ret %S.cimport.Mapped %t194 -endif9502: - %t195 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t197, ptr %a198 - %t199 = call i64 @clang_getArraySize(ptr %a198) - %t200 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t196, i64 %t199) - %t201 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t200) - store %S.ast.Type %t200, ptr %a202 - call void @finch.drop.S_ast_Type(ptr %a202) - call void @finch.drop.S_cimport_Mapped(ptr %a190) - ret %S.cimport.Mapped %t201 -endif9499: - %t203 = load i32, ptr %a16 - %t204 = icmp eq i32 %t203, 23 - br i1 %t204, label %then9503, label %endif9505 -then9503: - %t205 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }) - ret %S.cimport.Mapped %t205 -endif9505: - %t206 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t206, ptr %a207 - %t208 = call [2 x i64] @clang_getTypeSpelling(ptr %a207) - store [2 x i64] %t208, ptr %a209 - %t210 = load %S.C.CXString, ptr %a209 - %t211 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t210) - store { ptr, i64, i64 } { ptr @.str.6516, i64 17, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.6517, i64 1, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t221) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - ret %S.cimport.Mapped %t222 -} - -define internal %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %p0) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a49 = alloca i1, align 16 - %a50 = alloca i64, align 16 - %a62 = alloca i8, align 16 - %a63 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6519, 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.from9506 -logic.from9506: - br i1 %t13, label %logic.end9508, label %logic.rhs9507 -logic.rhs9507: - %t14 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6521, 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.rend9509 -logic.rend9509: - br label %logic.end9508 -logic.end9508: - %t20 = phi i1 [ true, %logic.from9506 ], [ %t19, %logic.rend9509 ] - br i1 %t20, label %then9510, label %else9511 -then9510: - 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.6522, i64 331) - %t26 = load { ptr, i64, i64 }, ptr %a23 - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t26, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif9512 -else9511: - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = icmp sgt i64 %t30, 1 - br label %logic.from9513 -logic.from9513: - br i1 %t31, label %logic.rhs9514, label %logic.end9515 -logic.rhs9514: - %t32 = load { ptr, i64, i64 }, ptr %a6 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 0, %t33 - br i1 %t34, label %range9516, label %inrange9517 -range9516: - call void @finch_panic_index(ptr @.str.6523, i64 332, i64 0, i64 %t33) - unreachable -inrange9517: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds i8, ptr %t35, i64 0 - %t37 = load i8, ptr %t36 - %t38 = icmp eq i8 %t37, 48 - br label %logic.rend9518 -logic.rend9518: - br label %logic.end9515 -logic.end9515: - %t39 = phi i1 [ false, %logic.from9513 ], [ %t38, %logic.rend9518 ] - br i1 %t39, label %then9519, label %endif9521 -then9519: - store i64 8, ptr %a7 - %t40 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t40, ptr %a41 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t44 = load i64, ptr %t43 - call void @finch_str_sub(ptr %a42, ptr %a41, i64 1, i64 %t44, ptr @.str.6524, i64 334) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t45, ptr %a6 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif9521 -endif9521: - br label %endif9512 -endif9512: - store i64 0, ptr %a48 - store i1 false, ptr %a49 - store i64 0, ptr %a50 - br label %while.cond9522 -while.cond9522: - %t51 = load i64, ptr %a50 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t53 = load i64, ptr %t52 - %t54 = icmp slt i64 %t51, %t53 - br i1 %t54, label %while.body9523, label %while.end9524 -while.body9523: - %t55 = load i64, ptr %a50 - %t56 = load { ptr, i64, i64 }, ptr %a6 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range9525, label %inrange9526 -range9525: - call void @finch_panic_index(ptr @.str.6525, i64 340, i64 %t55, i64 %t57) - unreachable -inrange9526: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds i8, ptr %t59, i64 %t55 - %t61 = load i8, ptr %t60 - store i8 %t61, ptr %a62 - store i64 99, ptr %a63 - %t64 = load i8, ptr %a62 - %t65 = icmp uge i8 %t64, 48 - br label %logic.from9527 -logic.from9527: - br i1 %t65, label %logic.rhs9528, label %logic.end9529 -logic.rhs9528: - %t66 = load i8, ptr %a62 - %t67 = icmp ule i8 %t66, 57 - br label %logic.rend9530 -logic.rend9530: - br label %logic.end9529 -logic.end9529: - %t68 = phi i1 [ false, %logic.from9527 ], [ %t67, %logic.rend9530 ] - br i1 %t68, label %then9531, label %else9532 -then9531: - %t69 = load i8, ptr %a62 - %t70 = zext i8 %t69 to i64 - %t71 = zext i8 48 to i64 - %t72 = sub i64 %t70, %t71 - store i64 %t72, ptr %a63 - br label %endif9533 -else9532: - %t73 = load i8, ptr %a62 - %t74 = icmp uge i8 %t73, 97 - br label %logic.from9534 -logic.from9534: - br i1 %t74, label %logic.rhs9535, label %logic.end9536 -logic.rhs9535: - %t75 = load i8, ptr %a62 - %t76 = icmp ule i8 %t75, 102 - br label %logic.rend9537 -logic.rend9537: - br label %logic.end9536 -logic.end9536: - %t77 = phi i1 [ false, %logic.from9534 ], [ %t76, %logic.rend9537 ] - br i1 %t77, label %then9538, label %else9539 -then9538: - %t78 = load i8, ptr %a62 - %t79 = zext i8 %t78 to i64 - %t80 = zext i8 97 to i64 - %t81 = sub i64 %t79, %t80 - %t82 = add i64 %t81, 10 - store i64 %t82, ptr %a63 - br label %endif9540 -else9539: - %t83 = load i8, ptr %a62 - %t84 = icmp uge i8 %t83, 65 - br label %logic.from9541 -logic.from9541: - br i1 %t84, label %logic.rhs9542, label %logic.end9543 -logic.rhs9542: - %t85 = load i8, ptr %a62 - %t86 = icmp ule i8 %t85, 70 - br label %logic.rend9544 -logic.rend9544: - br label %logic.end9543 -logic.end9543: - %t87 = phi i1 [ false, %logic.from9541 ], [ %t86, %logic.rend9544 ] - br i1 %t87, label %then9545, label %endif9547 -then9545: - %t88 = load i8, ptr %a62 - %t89 = zext i8 %t88 to i64 - %t90 = zext i8 65 to i64 - %t91 = sub i64 %t89, %t90 - %t92 = add i64 %t91, 10 - store i64 %t92, ptr %a63 - br label %endif9547 -endif9547: - br label %endif9540 -endif9540: - br label %endif9533 -endif9533: - %t93 = load i64, ptr %a63 - %t94 = load i64, ptr %a7 - %t95 = icmp sge i64 %t93, %t94 - br i1 %t95, label %then9548, label %endif9550 -then9548: - br label %while.end9524 -endif9550: - %t96 = load i64, ptr %a48 - %t97 = load i64, ptr %a7 - %t98 = mul i64 %t96, %t97 - %t99 = load i64, ptr %a63 - %t100 = add i64 %t98, %t99 - store i64 %t100, ptr %a48 - store i1 true, ptr %a49 - %t101 = load i64, ptr %a50 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %a50 - br label %while.cond9522 -while.end9524: - br label %while.cond9551 -while.cond9551: - %t103 = load i64, ptr %a50 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp slt i64 %t103, %t105 - br i1 %t106, label %while.body9552, label %while.end9553 -while.body9552: - store { ptr, i64, i64 } { ptr @.str.6526, i64 4, i64 0 }, ptr %a107 - %t109 = load i64, ptr %a50 - %t110 = load { ptr, i64, i64 }, ptr %a6 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range9554, label %inrange9555 -range9554: - call void @finch_panic_index(ptr @.str.6528, i64 358, i64 %t109, i64 %t111) - unreachable -inrange9555: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds i8, ptr %t113, i64 %t109 - %t115 = load i8, ptr %t114 - call void @finch_str_from_char(ptr %a116, i8 signext %t115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t117, ptr %a118 - %t119 = call i64 @finch_str_find(ptr %a107, ptr %a118) - %t120 = icmp sge i64 %t119, 0 - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = xor i1 %t120, true - br i1 %t122, label %then9556, label %endif9558 -then9556: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9558: - %t123 = load i64, ptr %a50 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a50 - br label %while.cond9551 -while.end9553: - %t125 = load i1, ptr %a49 - %t126 = xor i1 %t125, true - br label %logic.from9559 -logic.from9559: - br i1 %t126, label %logic.rhs9560, label %logic.end9561 -logic.rhs9560: - %t127 = load i64, ptr %a7 - %t128 = icmp ne i64 %t127, 8 - br label %logic.rend9562 -logic.rend9562: - br label %logic.end9561 -logic.end9561: - %t129 = phi i1 [ false, %logic.from9559 ], [ %t128, %logic.rend9562 ] - br i1 %t129, label %then9563, label %endif9565 -then9563: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9565: - %t130 = load i64, ptr %a48 - %t131 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t130, 1 - %t132 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t131, 0 - %t133 = insertvalue %S.cimport.Number %t132, i1 true, 1 - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number %t133 -} - -define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) { -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 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca i1, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i1, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca double, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca double, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca %S.cimport.Number, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - store ptr null, ptr %a3 - store i32 0, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic9566, label %ok9567 -panic9566: - call void @finch_panic(ptr @.str.6529, i64 373, ptr @.str.6530) - unreachable -ok9567: - %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.cond9568 -for.cond9568: - %t18 = load i64, ptr %a17 - %t19 = icmp slt i64 %t18, %t16 - br i1 %t19, label %for.body9569, label %for.end9571 -for.body9569: - %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 %then9572, label %endif9574 -then9572: - br label %for.step9570 -endif9574: - %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 %panic9575, label %ok9576 -panic9575: - call void @finch_panic(ptr @.str.6531, i64 379, ptr @.str.6532) - unreachable -ok9576: - %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.step9570 -for.step9570: - %t45 = load i64, ptr %a17 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a17 - br label %for.cond9568 -for.end9571: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic9577, label %ok9578 -panic9577: - call void @finch_panic(ptr @.str.6533, i64 381, ptr @.str.6534) - unreachable -ok9578: - %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.cond9579 -while.cond9579: - %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.from9582 -logic.from9582: - br i1 %t55, label %logic.rhs9583, label %logic.end9584 -logic.rhs9583: - %t56 = load { ptr, i64, i64 }, ptr %a14 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 0, %t57 - br i1 %t58, label %range9585, label %inrange9586 -range9585: - call void @finch_panic_index(ptr @.str.6535, i64 383, i64 0, i64 %t57) - unreachable -inrange9586: - %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.6536, 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.rend9587 -logic.rend9587: - br label %logic.end9584 -logic.end9584: - %t66 = phi i1 [ false, %logic.from9582 ], [ %t65, %logic.rend9587 ] - br label %logic.from9588 -logic.from9588: - br i1 %t66, label %logic.rhs9589, label %logic.end9590 -logic.rhs9589: - %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 %range9591, label %inrange9592 -range9591: - call void @finch_panic_index(ptr @.str.6537, i64 383, i64 %t69, i64 %t71) - unreachable -inrange9592: - %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.6538, 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.rend9593 -logic.rend9593: - br label %logic.end9590 -logic.end9590: - %t80 = phi i1 [ false, %logic.from9588 ], [ %t79, %logic.rend9593 ] - br i1 %t80, label %while.body9580, label %while.end9581 -while.body9580: - %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 %range9594, label %inrange9595 -range9594: - call void @finch_panic_index(ptr @.str.6539, i64 384, i64 0, i64 %t82) - unreachable -inrange9595: - %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)) - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, 0 - br i1 %t90, label %panic9596, label %ok9597 -panic9596: - call void @finch_panic(ptr @.str.6540, i64 385, ptr @.str.6541) - unreachable -ok9597: - %t91 = sub i64 %t89, 1 - %t92 = load ptr, ptr %a14 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t91 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store i64 %t91, ptr %t88 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %while.cond9579 -while.end9581: - store i1 false, ptr %a96 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = icmp eq i64 %t98, 2 - br label %logic.from9598 -logic.from9598: - br i1 %t99, label %logic.rhs9599, label %logic.end9600 -logic.rhs9599: - %t100 = load { ptr, i64, i64 }, ptr %a14 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 0, %t101 - br i1 %t102, label %range9601, label %inrange9602 -range9601: - call void @finch_panic_index(ptr @.str.6542, i64 388, i64 0, i64 %t101) - unreachable -inrange9602: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 0 - %t105 = load { ptr, i64, i64 }, ptr %t104 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.6543, i64 1, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.rend9603 -logic.rend9603: - br label %logic.end9600 -logic.end9600: - %t110 = phi i1 [ false, %logic.from9598 ], [ %t109, %logic.rend9603 ] - br i1 %t110, label %then9604, label %endif9606 -then9604: - store i1 true, ptr %a96 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp uge i64 0, %t112 - br i1 %t113, label %range9607, label %inrange9608 -range9607: - call void @finch_panic_index(ptr @.str.6544, i64 390, i64 0, i64 %t112) - unreachable -inrange9608: - %t114 = load ptr, ptr %a14 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif9606 -endif9606: - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t119 = load i64, ptr %t118 - %t120 = icmp ne i64 %t119, 1 - br i1 %t120, label %then9609, label %endif9611 -then9609: - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9611: - %t121 = load { ptr, i64, i64 }, ptr %a14 - %t122 = extractvalue { ptr, i64, i64 } %t121, 1 - %t123 = icmp uge i64 0, %t122 - br i1 %t123, label %range9612, label %inrange9613 -range9612: - call void @finch_panic_index(ptr @.str.6545, i64 395, i64 0, i64 %t122) - unreachable -inrange9613: - %t124 = extractvalue { ptr, i64, i64 } %t121, 0 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - call void @finch_str_copy(ptr %a128, ptr %a127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t132 = load i64, ptr %t131 - %t133 = icmp eq i64 %t132, 0 - br label %logic.from9614 -logic.from9614: - br i1 %t133, label %logic.end9616, label %logic.rhs9615 -logic.rhs9615: - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = extractvalue { ptr, i64, i64 } %t134, 1 - %t136 = icmp uge i64 0, %t135 - br i1 %t136, label %range9617, label %inrange9618 -range9617: - call void @finch_panic_index(ptr @.str.6546, i64 396, i64 0, i64 %t135) - unreachable -inrange9618: - %t137 = extractvalue { ptr, i64, i64 } %t134, 0 - %t138 = getelementptr inbounds i8, ptr %t137, i64 0 - %t139 = load i8, ptr %t138 - %t140 = icmp uge i8 %t139, 48 - br label %logic.from9619 -logic.from9619: - br i1 %t140, label %logic.rhs9620, label %logic.end9621 -logic.rhs9620: - %t141 = load { ptr, i64, i64 }, ptr %a130 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range9622, label %inrange9623 -range9622: - call void @finch_panic_index(ptr @.str.6547, i64 396, i64 0, i64 %t142) - unreachable -inrange9623: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds i8, ptr %t144, i64 0 - %t146 = load i8, ptr %t145 - %t147 = icmp ule i8 %t146, 57 - br label %logic.rend9624 -logic.rend9624: - br label %logic.end9621 -logic.end9621: - %t148 = phi i1 [ false, %logic.from9619 ], [ %t147, %logic.rend9624 ] - br label %logic.from9625 -logic.from9625: - br i1 %t148, label %logic.end9627, label %logic.rhs9626 -logic.rhs9626: - %t149 = load { ptr, i64, i64 }, ptr %a130 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 0, %t150 - br i1 %t151, label %range9628, label %inrange9629 -range9628: - call void @finch_panic_index(ptr @.str.6548, i64 396, i64 0, i64 %t150) - unreachable -inrange9629: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds i8, ptr %t152, i64 0 - %t154 = load i8, ptr %t153 - %t155 = icmp eq i8 %t154, 46 - br label %logic.rend9630 -logic.rend9630: - br label %logic.end9627 -logic.end9627: - %t156 = phi i1 [ true, %logic.from9625 ], [ %t155, %logic.rend9630 ] - %t157 = xor i1 %t156, true - br label %logic.rend9631 -logic.rend9631: - br label %logic.end9616 -logic.end9616: - %t158 = phi i1 [ true, %logic.from9614 ], [ %t157, %logic.rend9631 ] - br i1 %t158, label %then9632, label %endif9634 -then9632: - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9634: - %t159 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.6550, i64 1, i64 0 }, ptr %a162 - %t163 = call i64 @finch_str_find(ptr %a160, ptr %a162) - %t164 = icmp sge i64 %t163, 0 - br label %logic.from9635 -logic.from9635: - br i1 %t164, label %logic.end9637, label %logic.rhs9636 -logic.rhs9636: - %t165 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.6552, i64 1, i64 0 }, ptr %a168 - %t169 = call i64 @finch_str_find(ptr %a166, ptr %a168) - %t170 = icmp sge i64 %t169, 0 - br label %logic.rend9638 -logic.rend9638: - br label %logic.end9637 -logic.end9637: - %t171 = phi i1 [ true, %logic.from9635 ], [ %t170, %logic.rend9638 ] - br label %logic.from9639 -logic.from9639: - br i1 %t171, label %logic.end9641, label %logic.rhs9640 -logic.rhs9640: - %t172 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6554, i64 1, i64 0 }, ptr %a175 - %t176 = call i64 @finch_str_find(ptr %a173, ptr %a175) - %t177 = icmp sge i64 %t176, 0 - br label %logic.rend9642 -logic.rend9642: - br label %logic.end9641 -logic.end9641: - %t178 = phi i1 [ true, %logic.from9639 ], [ %t177, %logic.rend9642 ] - br label %logic.from9643 -logic.from9643: - br i1 %t178, label %logic.rhs9644, label %logic.end9645 -logic.rhs9644: - %t179 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.6556, i64 2, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_starts(ptr %a180, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - %t185 = xor i1 %t184, true - br label %logic.rend9646 -logic.rend9646: - br label %logic.end9645 -logic.end9645: - %t186 = phi i1 [ false, %logic.from9643 ], [ %t185, %logic.rend9646 ] - store i1 %t186, ptr %a187 - %t188 = load i1, ptr %a187 - br i1 %t188, label %then9647, label %endif9649 -then9647: - %t189 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_copy(ptr %a191, ptr %a190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t192, ptr %a193 - br label %while.cond9650 -while.cond9650: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t195 = load i64, ptr %t194 - %t196 = icmp sgt i64 %t195, 0 - br label %logic.from9653 -logic.from9653: - br i1 %t196, label %logic.rhs9654, label %logic.end9655 -logic.rhs9654: - store { ptr, i64, i64 } { ptr @.str.6557, i64 4, i64 0 }, ptr %a197 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = sub i64 %t200, 1 - %t202 = load { ptr, i64, i64 }, ptr %a193 - %t203 = extractvalue { ptr, i64, i64 } %t202, 1 - %t204 = icmp uge i64 %t201, %t203 - br i1 %t204, label %range9656, label %inrange9657 -range9656: - call void @finch_panic_index(ptr @.str.6559, i64 402, i64 %t201, i64 %t203) - unreachable -inrange9657: - %t205 = extractvalue { ptr, i64, i64 } %t202, 0 - %t206 = getelementptr inbounds i8, ptr %t205, i64 %t201 - %t207 = load i8, ptr %t206 - call void @finch_str_from_char(ptr %a208, i8 signext %t207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = call i64 @finch_str_find(ptr %a197, ptr %a210) - %t212 = icmp sge i64 %t211, 0 - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %logic.rend9658 -logic.rend9658: - br label %logic.end9655 -logic.end9655: - %t214 = phi i1 [ false, %logic.from9653 ], [ %t212, %logic.rend9658 ] - br i1 %t214, label %while.body9651, label %while.end9652 -while.body9651: - %t215 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t215, ptr %a216 - %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t219 = load i64, ptr %t218 - %t220 = sub i64 %t219, 1 - call void @finch_str_sub(ptr %a217, ptr %a216, i64 0, i64 %t220, ptr @.str.6560, i64 403) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t221, ptr %a193 - store { ptr, i64, i64 } %t222, ptr %a223 - call void @finch_str_drop(ptr %a223) - br label %while.cond9650 -while.end9652: - %t224 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - store double 0.0, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - %t228 = call i32 @finch_str_try_float(ptr %a227, ptr %a226, ptr %a225) - %t229 = icmp eq i32 %t228, 0 - %t230 = load { ptr, i64, i64 }, ptr %a225 - %t231 = load double, ptr %a226 - br i1 %t229, label %or.failed9659, label %or.ok9660 -or.failed9659: - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a193) - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -or.ok9660: - store double %t231, ptr %a233 - %t234 = load i1, ptr %a96 - br i1 %t234, label %then9661, label %endif9663 -then9661: - %t235 = load double, ptr %a233 - %t236 = fsub double 0.0, %t235 - store double %t236, ptr %a233 - br label %endif9663 -endif9663: - %t237 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 - %t238 = load double, ptr %a233 - %t239 = insertvalue %S.cimport.CConst %t237, double %t238, 2 - %t240 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_copy(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = insertvalue %S.cimport.CConst %t239, { ptr, i64, i64 } %t243, 3 - %t245 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t244, 0 - %t246 = insertvalue %S.cimport.Number %t245, i1 true, 1 - call void @finch_str_drop(ptr %a193) - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t246 -endif9649: - %t247 = load { ptr, i64, i64 }, ptr %a130 - %t248 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t247) - store %S.cimport.Number %t248, ptr %a249 - %t250 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.from9664 -logic.from9664: - br i1 %t251, label %logic.rhs9665, label %logic.end9666 -logic.rhs9665: - %t252 = load i1, ptr %a96 - br label %logic.rend9667 -logic.rend9667: - br label %logic.end9666 -logic.end9666: - %t253 = phi i1 [ false, %logic.from9664 ], [ %t252, %logic.rend9667 ] - br i1 %t253, label %then9668, label %endif9670 -then9668: - %t254 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 - %t255 = getelementptr inbounds %S.cimport.CConst, ptr %t254, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = sub i64 0, %t256 - %t258 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 - %t259 = getelementptr inbounds %S.cimport.CConst, ptr %t258, i32 0, i32 1 - store i64 %t257, ptr %t259 - br label %endif9670 -endif9670: - %t260 = load %S.cimport.Number, ptr %a249 - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t260 -} - -define internal i32 @finch.cimport.visitTop(%S.C.CXCursor %p0, %S.C.CXCursor %p1, ptr %p2) { -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.drop.S_cimport_Number(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Number, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CConst(ptr %t1) - ret void -} - -define internal void @finch.cimport.visit(ptr %p0, %S.C.CXCursor %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca %S.cimport.CFunc, align 16 - %a125 = alloca %S.C.CXCursor, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i32, align 16 - %a148 = alloca %S.cimport.CFunc, align 16 - %a149 = alloca %S.cimport.CFunc, align 16 - %a152 = alloca %S.cimport.CFunc, align 16 - %a153 = alloca %S.C.CXType, align 16 - %a154 = alloca %S.C.CXType, align 16 - %a156 = alloca %S.C.CXCursor, align 16 - %a158 = alloca %S.C.CXType, align 16 - %a160 = alloca %S.C.CXType, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i32, align 16 - %a184 = alloca %S.cimport.CFunc, align 16 - %a185 = alloca %S.cimport.CFunc, align 16 - %a188 = alloca %S.cimport.CFunc, align 16 - %a190 = alloca %S.C.CXType, align 16 - %a192 = alloca %S.C.CXType, align 16 - %a195 = alloca %S.cimport.Mapped, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca %S.C.CXType, align 16 - %a218 = alloca i64, align 16 - %a220 = alloca i64, align 16 - %a228 = alloca %S.C.CXType, align 16 - %a230 = alloca %S.C.CXType, align 16 - %a235 = alloca %S.cimport.Mapped, align 16 - %a242 = alloca %S.ast.Type, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca %S.C.CXType, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca i32, align 16 - %a281 = alloca %S.cimport.CFunc, align 16 - %a282 = alloca %S.cimport.CFunc, align 16 - %a285 = alloca %S.cimport.CFunc, align 16 - %a289 = alloca %S.C.CXCursor, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca %S.C.CXType, align 16 - %a304 = alloca %S.C.CXCursor, align 16 - %a307 = alloca %S.cimport.Mapped, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca i32, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a332 = alloca %S.ast.Type, align 16 - %a336 = alloca %S.C.CXCursor, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca %S.C.CXCursor, align 16 - %a354 = alloca [32 x i8], align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca i32, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca %S.C.CXCursor, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca %S.C.CXCursor, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca i32, align 16 - %a425 = alloca %S.cimport.CConst, align 16 - %a429 = alloca %S.C.CXCursor, align 16 - %a433 = alloca %S.C.CXCursor, align 16 - %a440 = alloca %S.cimport.Number, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca i32, align 16 - %a471 = alloca %S.cimport.CConst, align 16 - %a472 = alloca %S.cimport.CConst, align 16 - %a475 = alloca %S.cimport.CConst, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - %t3 = load %S.C.CXCursor, ptr %a2 - 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 %then9671, label %else9672 -then9671: - %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 %then9674, label %endif9676 -then9674: - %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 %panic9677, label %ok9678 -panic9677: - call void @finch_panic(ptr @.str.6561, i64 437, ptr @.str.6562) - unreachable -ok9678: - %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.from9679 -logic.from9679: - br i1 %t43, label %logic.rhs9680, label %logic.end9681 -logic.rhs9680: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic9682, label %ok9683 -panic9682: - call void @finch_panic(ptr @.str.6563, i64 437, ptr @.str.6564) - unreachable -ok9683: - %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 %panic9684, label %ok9685 -panic9684: - call void @finch_panic(ptr @.str.6565, i64 437, ptr @.str.6566) - unreachable -ok9685: - %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.missing9686, label %map.found9687 -map.missing9686: - 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.6567, i64 437, ptr %a55) - unreachable -map.found9687: - %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.rend9688 -logic.rend9688: - br label %logic.end9681 -logic.end9681: - %t65 = phi i1 [ false, %logic.from9679 ], [ %t64, %logic.rend9688 ] - store i1 %t65, ptr %a66 - %t67 = load i1, ptr %a66 - %t68 = xor i1 %t67, true - br label %logic.from9689 -logic.from9689: - br i1 %t68, label %logic.rhs9690, label %logic.end9691 -logic.rhs9690: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic9692, label %ok9693 -panic9692: - call void @finch_panic(ptr @.str.6568, i64 438, ptr @.str.6569) - unreachable -ok9693: - %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.rend9694 -logic.rend9694: - br label %logic.end9691 -logic.end9691: - %t78 = phi i1 [ false, %logic.from9689 ], [ %t77, %logic.rend9694 ] - br i1 %t78, label %then9695, label %endif9697 -then9695: - %t79 = load { ptr, i64, i64 }, ptr %a9 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9698, label %ok9699 -panic9698: - call void @finch_panic(ptr @.str.6570, i64 439, ptr @.str.6571) - unreachable -ok9699: - %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.new9700, label %map.have9701 -map.new9700: - %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.have9701 -map.have9701: - %t94 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2 - store { ptr, i64, i64 } %t79, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif9697 -endif9697: - call void @finch_str_drop(ptr %a36) - br label %endif9676 -endif9676: - br label %endif9673 -else9672: - %t100 = load i32, ptr %a13 - %t101 = icmp eq i32 %t100, 8 - br i1 %t101, label %then9702, label %else9703 -then9702: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic9705, label %ok9706 -panic9705: - call void @finch_panic(ptr @.str.6572, i64 443, ptr @.str.6573) - unreachable -ok9706: - %t104 = getelementptr inbounds %S.cimport.Importer, ptr %t102, i32 0, i32 0 - %t105 = getelementptr inbounds %S.cimport.CImports, ptr %t104, i32 0, i32 0 - %t106 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = call i64 @finch_map_find(ptr %t105, ptr %a107, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t109 = icmp sge i64 %t108, 0 - br i1 %t109, label %then9707, label %endif9709 -then9707: - call void @finch_str_drop(ptr %a9) - ret void -endif9709: - %t110 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = insertvalue %S.cimport.CFunc zeroinitializer, { ptr, i64, i64 } %t113, 0 - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic9710, label %ok9711 -panic9710: - call void @finch_panic(ptr @.str.6574, i64 446, ptr @.str.6575) - unreachable -ok9711: - %t117 = getelementptr inbounds %S.cimport.Importer, ptr %t115, i32 0, i32 2 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.cimport.CFunc %t114, { ptr, i64, i64 } %t121, 1 - store %S.cimport.CFunc %t122, ptr %a123 - %t124 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t124, ptr %a125 - %t126 = call i32 @clang_Cursor_getStorageClass(ptr %a125) - %t127 = icmp eq i32 %t126, 3 - br i1 %t127, label %then9712, label %endif9714 -then9712: - %t128 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } { ptr @.str.6576, i64 62, i64 0 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.cimport.CFunc, ptr %a123 - %t132 = load ptr, ptr %a1 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic9715, label %ok9716 -panic9715: - call void @finch_panic(ptr @.str.6577, i64 449, ptr @.str.6578) - unreachable -ok9716: - %t134 = getelementptr inbounds %S.cimport.Importer, ptr %t132, i32 0, i32 0 - %t135 = getelementptr inbounds %S.cimport.CImports, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t136, ptr %a137 - store i32 0, ptr %a138 - %t139 = call i64 @finch_map_slot(ptr %t135, ptr %a137, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a138) - %t140 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t135, i32 0, i32 0 - %t141 = load ptr, ptr %t140 - %t142 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t141, i64 %t139 - %t143 = load i32, ptr %a138 - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %map.new9717, label %map.have9718 -map.new9717: - %t145 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 1 - call void @finch_str_copy(ptr %t145, ptr %a137) - %t146 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t146 - br label %map.have9718 -map.have9718: - %t147 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 - store %S.cimport.CFunc %t131, ptr %a148 - call void @finch.copy.S_cimport_CFunc(ptr %a149, ptr %a148) - %t150 = load %S.cimport.CFunc, ptr %a149 - %t151 = load %S.cimport.CFunc, ptr %t147 - store %S.cimport.CFunc %t150, ptr %t147 - store %S.cimport.CFunc %t151, ptr %a152 - call void @finch.drop.S_cimport_CFunc(ptr %a152) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - call void @finch_str_drop(ptr %a9) - ret void -endif9714: - %t155 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t155, ptr %a156 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a154, ptr %a156) - %t157 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t157, ptr %a158 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a153, ptr %a158) - %t159 = load %S.C.CXType, ptr %a153 - store %S.C.CXType %t159, ptr %a160 - %t161 = getelementptr inbounds %S.C.CXType, ptr %a160, i32 0, i32 0 - %t162 = load i32, ptr %t161 - %t163 = icmp eq i32 %t162, 110 - br i1 %t163, label %then9719, label %endif9721 -then9719: - %t164 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } { ptr @.str.6579, i64 42, i64 0 }, ptr %t164 - store { ptr, i64, i64 } %t165, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load %S.cimport.CFunc, ptr %a123 - %t168 = load ptr, ptr %a1 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic9722, label %ok9723 -panic9722: - call void @finch_panic(ptr @.str.6580, i64 455, ptr @.str.6581) - unreachable -ok9723: - %t170 = getelementptr inbounds %S.cimport.Importer, ptr %t168, i32 0, i32 0 - %t171 = getelementptr inbounds %S.cimport.CImports, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t172, ptr %a173 - store i32 0, ptr %a174 - %t175 = call i64 @finch_map_slot(ptr %t171, ptr %a173, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a174) - %t176 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t171, i32 0, i32 0 - %t177 = load ptr, ptr %t176 - %t178 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t177, i64 %t175 - %t179 = load i32, ptr %a174 - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %map.new9724, label %map.have9725 -map.new9724: - %t181 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 1 - call void @finch_str_copy(ptr %t181, ptr %a173) - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t182 - br label %map.have9725 -map.have9725: - %t183 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 - store %S.cimport.CFunc %t167, ptr %a184 - call void @finch.copy.S_cimport_CFunc(ptr %a185, ptr %a184) - %t186 = load %S.cimport.CFunc, ptr %a185 - %t187 = load %S.cimport.CFunc, ptr %t183 - store %S.cimport.CFunc %t186, ptr %t183 - store %S.cimport.CFunc %t187, ptr %a188 - call void @finch.drop.S_cimport_CFunc(ptr %a188) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - call void @finch_str_drop(ptr %a9) - ret void -endif9721: - %t189 = load ptr, ptr %a1 - %t191 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t191, ptr %a192 - call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a190, ptr %a192) - %t193 = load %S.C.CXType, ptr %a190 - %t194 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t189, %S.C.CXType %t193, i1 true, i1 false) - store %S.cimport.Mapped %t194, ptr %a195 - %t196 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 2 - %t197 = load i1, ptr %t196 - br i1 %t197, label %then9726, label %else9727 -then9726: - %t198 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 0 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 2 - store %S.ast.Type %t199, ptr %a201 - call void @finch.copy.S_ast_Type(ptr %a202, ptr %a201) - %t203 = load %S.ast.Type, ptr %a202 - %t204 = load %S.ast.Type, ptr %t200 - store %S.ast.Type %t203, ptr %t200 - store %S.ast.Type %t204, ptr %a205 - call void @finch.drop.S_ast_Type(ptr %a205) - br label %endif9728 -else9727: - %t206 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 1 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_copy(ptr %a210, ptr %a209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - %t212 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t211, ptr %t208 - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif9728 -endif9728: - %t214 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t214, ptr %a215 - %t216 = call i32 @clang_getNumArgTypes(ptr %a215) - %t217 = sext i32 %t216 to i64 - store i64 %t217, ptr %a218 - %t219 = load i64, ptr %a218 - store i64 0, ptr %a220 - br label %for.cond9729 -for.cond9729: - %t221 = load i64, ptr %a220 - %t222 = icmp slt i64 %t221, %t219 - br i1 %t222, label %for.body9730, label %for.end9732 -for.body9730: - %t223 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp sgt i64 %t225, 0 - br i1 %t226, label %then9733, label %endif9735 -then9733: - br label %for.end9732 -endif9735: - %t227 = load ptr, ptr %a1 - %t229 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t229, ptr %a230 - %t231 = load i64, ptr %a220 - %t232 = trunc i64 %t231 to i32 - call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a228, ptr %a230, i32 %t232) - %t233 = load %S.C.CXType, ptr %a228 - %t234 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t227, %S.C.CXType %t233, i1 true, i1 true) - store %S.cimport.Mapped %t234, ptr %a235 - %t236 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 2 - %t237 = load i1, ptr %t236 - br i1 %t237, label %then9736, label %else9737 -then9736: - %t238 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 3 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 - %t240 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 0 - %t241 = load %S.ast.Type, ptr %t240 - store %S.ast.Type %t241, ptr %a242 - call void @finch.copy.S_ast_Type(ptr %a243, ptr %a242) - %t244 = load %S.ast.Type, ptr %a243 - %t245 = load i64, ptr %t239 - %t246 = add i64 %t245, 1 - call void @finch_arr_reserve(ptr %t238, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t247 = load ptr, ptr %t238 - %t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i64 %t245 - store %S.ast.Type %t244, ptr %t248 - store i64 %t246, ptr %t239 - br label %endif9738 -else9737: - %t249 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 1 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - store { ptr, i64, i64 } %t250, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - %t255 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } %t254, ptr %t251 - store { ptr, i64, i64 } %t255, ptr %a256 - call void @finch_str_drop(ptr %a256) - br label %endif9738 -endif9738: - call void @finch.drop.S_cimport_Mapped(ptr %a235) - br label %for.step9731 -for.step9731: - %t257 = load i64, ptr %a220 - %t258 = add i64 %t257, 1 - store i64 %t258, ptr %a220 - br label %for.cond9729 -for.end9732: - %t259 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t259, ptr %a260 - %t261 = call i32 @clang_isFunctionTypeVariadic(ptr %a260) - %t262 = icmp ne i32 %t261, 0 - %t263 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 4 - store i1 %t262, ptr %t263 - %t264 = load %S.cimport.CFunc, ptr %a123 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic9739, label %ok9740 -panic9739: - call void @finch_panic(ptr @.str.6582, i64 477, ptr @.str.6583) - unreachable -ok9740: - %t267 = getelementptr inbounds %S.cimport.Importer, ptr %t265, i32 0, i32 0 - %t268 = getelementptr inbounds %S.cimport.CImports, ptr %t267, i32 0, i32 0 - %t269 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t269, ptr %a270 - store i32 0, ptr %a271 - %t272 = call i64 @finch_map_slot(ptr %t268, ptr %a270, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a271) - %t273 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t268, i32 0, i32 0 - %t274 = load ptr, ptr %t273 - %t275 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t274, i64 %t272 - %t276 = load i32, ptr %a271 - %t277 = icmp ne i32 %t276, 0 - br i1 %t277, label %map.new9741, label %map.have9742 -map.new9741: - %t278 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 1 - call void @finch_str_copy(ptr %t278, ptr %a270) - %t279 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t279 - br label %map.have9742 -map.have9742: - %t280 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 - store %S.cimport.CFunc %t264, ptr %a281 - call void @finch.copy.S_cimport_CFunc(ptr %a282, ptr %a281) - %t283 = load %S.cimport.CFunc, ptr %a282 - %t284 = load %S.cimport.CFunc, ptr %t280 - store %S.cimport.CFunc %t283, ptr %t280 - store %S.cimport.CFunc %t284, ptr %a285 - call void @finch.drop.S_cimport_CFunc(ptr %a285) - call void @finch.drop.S_cimport_Mapped(ptr %a195) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - br label %endif9704 -else9703: - %t286 = load i32, ptr %a13 - %t287 = icmp eq i32 %t286, 9 - br i1 %t287, label %then9743, label %else9744 -then9743: - %t288 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t288, ptr %a289 - %t290 = call i32 @clang_Cursor_getStorageClass(ptr %a289) - %t291 = icmp ne i32 %t290, 2 - br label %logic.from9746 -logic.from9746: - br i1 %t291, label %logic.end9748, label %logic.rhs9747 -logic.rhs9747: - %t292 = load ptr, ptr %a1 - %t293 = icmp eq ptr %t292, null - br i1 %t293, label %panic9749, label %ok9750 -panic9749: - call void @finch_panic(ptr @.str.6584, i64 479, ptr @.str.6585) - unreachable -ok9750: - %t294 = getelementptr inbounds %S.cimport.Importer, ptr %t292, i32 0, i32 0 - %t295 = getelementptr inbounds %S.cimport.CImports, ptr %t294, i32 0, i32 2 - %t296 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t296, ptr %a297 - %t298 = call i64 @finch_map_find(ptr %t295, ptr %a297, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t299 = icmp sge i64 %t298, 0 - br label %logic.rend9751 -logic.rend9751: - br label %logic.end9748 -logic.end9748: - %t300 = phi i1 [ true, %logic.from9746 ], [ %t299, %logic.rend9751 ] - br i1 %t300, label %then9752, label %endif9754 -then9752: - call void @finch_str_drop(ptr %a9) - ret void -endif9754: - %t301 = load ptr, ptr %a1 - %t303 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t303, ptr %a304 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a302, ptr %a304) - %t305 = load %S.C.CXType, ptr %a302 - %t306 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t301, %S.C.CXType %t305, i1 false, i1 false) - store %S.cimport.Mapped %t306, ptr %a307 - %t308 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 2 - %t309 = load i1, ptr %t308 - br i1 %t309, label %then9755, label %endif9757 -then9755: - %t310 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 0 - %t311 = load %S.ast.Type, ptr %t310 - %t312 = load ptr, ptr %a1 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic9758, label %ok9759 -panic9758: - call void @finch_panic(ptr @.str.6586, i64 484, ptr @.str.6587) - unreachable -ok9759: - %t314 = getelementptr inbounds %S.cimport.Importer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds %S.cimport.CImports, ptr %t314, i32 0, i32 2 - %t316 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t316, ptr %a317 - store i32 0, ptr %a318 - %t319 = call i64 @finch_map_slot(ptr %t315, ptr %a317, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a318) - %t320 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t315, i32 0, i32 0 - %t321 = load ptr, ptr %t320 - %t322 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t321, i64 %t319 - %t323 = load i32, ptr %a318 - %t324 = icmp ne i32 %t323, 0 - br i1 %t324, label %map.new9760, label %map.have9761 -map.new9760: - %t325 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 1 - call void @finch_str_copy(ptr %t325, ptr %a317) - %t326 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 - store %S.ast.Type zeroinitializer, ptr %t326 - br label %map.have9761 -map.have9761: - %t327 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 - store %S.ast.Type %t311, ptr %a328 - call void @finch.copy.S_ast_Type(ptr %a329, ptr %a328) - %t330 = load %S.ast.Type, ptr %a329 - %t331 = load %S.ast.Type, ptr %t327 - store %S.ast.Type %t330, ptr %t327 - store %S.ast.Type %t331, ptr %a332 - call void @finch.drop.S_ast_Type(ptr %a332) - br label %endif9757 -endif9757: - call void @finch.drop.S_cimport_Mapped(ptr %a307) - br label %endif9745 -else9744: - %t333 = load i32, ptr %a13 - %t334 = icmp eq i32 %t333, 2 - br i1 %t334, label %then9762, label %else9763 -then9762: - %t335 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t335, ptr %a336 - %t337 = call i32 @clang_isCursorDefinition(ptr %a336) - %t338 = icmp ne i32 %t337, 0 - br label %logic.from9765 -logic.from9765: - br i1 %t338, label %logic.rhs9766, label %logic.end9767 -logic.rhs9766: - %t339 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t340 = load i64, ptr %t339 - %t341 = icmp sgt i64 %t340, 0 - br label %logic.rend9768 -logic.rend9768: - br label %logic.end9767 -logic.end9767: - %t342 = phi i1 [ false, %logic.from9765 ], [ %t341, %logic.rend9768 ] - br label %logic.from9769 -logic.from9769: - br i1 %t342, label %logic.rhs9770, label %logic.end9771 -logic.rhs9770: - %t343 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6589, i64 1, i64 0 }, ptr %a346 - %t347 = call i64 @finch_str_find(ptr %a344, ptr %a346) - %t348 = icmp sge i64 %t347, 0 - %t349 = xor i1 %t348, true - br label %logic.rend9772 -logic.rend9772: - br label %logic.end9771 -logic.end9771: - %t350 = phi i1 [ false, %logic.from9769 ], [ %t349, %logic.rend9772 ] - br i1 %t350, label %then9773, label %endif9775 -then9773: - %t351 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t351, ptr %a352 - %t353 = call [2 x i64] @clang_getCursorUSR(ptr %a352) - store [2 x i64] %t353, ptr %a354 - %t355 = load %S.C.CXString, ptr %a354 - %t356 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t355) - store { ptr, i64, i64 } %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = icmp eq ptr %t358, null - br i1 %t359, label %panic9776, label %ok9777 -panic9776: - call void @finch_panic(ptr @.str.6590, i64 489, ptr @.str.6591) - unreachable -ok9777: - %t360 = getelementptr inbounds %S.cimport.Importer, ptr %t358, i32 0, i32 3 - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a362 - %t363 = call i64 @finch_map_find(ptr %t360, ptr %a362, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t364 = icmp sge i64 %t363, 0 - %t365 = xor i1 %t364, true - br i1 %t365, label %then9778, label %endif9780 -then9778: - %t366 = load { ptr, i64, i64 }, ptr %a9 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic9781, label %ok9782 -panic9781: - call void @finch_panic(ptr @.str.6592, i64 490, ptr @.str.6593) - unreachable -ok9782: - %t369 = getelementptr inbounds %S.cimport.Importer, ptr %t367, i32 0, i32 3 - %t370 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t370, ptr %a371 - store i32 0, ptr %a372 - %t373 = call i64 @finch_map_slot(ptr %t369, ptr %a371, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a372) - %t374 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t369, i32 0, i32 0 - %t375 = load ptr, ptr %t374 - %t376 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t375, i64 %t373 - %t377 = load i32, ptr %a372 - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %map.new9783, label %map.have9784 -map.new9783: - %t379 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 1 - call void @finch_str_copy(ptr %t379, ptr %a371) - %t380 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t380 - br label %map.have9784 -map.have9784: - %t381 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 - store { ptr, i64, i64 } %t366, ptr %a382 - call void @finch_str_copy(ptr %a383, ptr %a382) - %t384 = load { ptr, i64, i64 }, ptr %a383 - %t385 = load { ptr, i64, i64 }, ptr %t381 - store { ptr, i64, i64 } %t384, ptr %t381 - store { ptr, i64, i64 } %t385, ptr %a386 - call void @finch_str_drop(ptr %a386) - br label %endif9780 -endif9780: - call void @finch_str_drop(ptr %a357) - br label %endif9775 -endif9775: - br label %endif9764 -else9763: - %t387 = load i32, ptr %a13 - %t388 = icmp eq i32 %t387, 5 - br i1 %t388, label %then9785, label %else9786 -then9785: - %t389 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t389, ptr %a390 - %t391 = load ptr, ptr %a1 - %t392 = call i32 @clang_visitChildren(ptr %a390, ptr @finch.c.cimport.visitTop, ptr %t391) - br label %endif9787 -else9786: - %t393 = load i32, ptr %a13 - %t394 = icmp eq i32 %t393, 7 - br i1 %t394, label %then9788, label %else9789 -then9788: - %t395 = load ptr, ptr %a1 - %t396 = icmp eq ptr %t395, null - br i1 %t396, label %panic9791, label %ok9792 -panic9791: - call void @finch_panic(ptr @.str.6594, i64 496, ptr @.str.6595) - unreachable -ok9792: - %t397 = getelementptr inbounds %S.cimport.Importer, ptr %t395, i32 0, i32 0 - %t398 = getelementptr inbounds %S.cimport.CImports, ptr %t397, i32 0, i32 1 - %t399 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t399, ptr %a400 - %t401 = call i64 @finch_map_find(ptr %t398, ptr %a400, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t402 = icmp sge i64 %t401, 0 - %t403 = xor i1 %t402, true - br i1 %t403, label %then9793, label %endif9795 -then9793: - %t404 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t404, ptr %a405 - %t406 = call i64 @clang_getEnumConstantDeclValue(ptr %a405) - %t407 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t406, 1 - %t408 = load ptr, ptr %a1 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic9796, label %ok9797 -panic9796: - call void @finch_panic(ptr @.str.6596, i64 497, ptr @.str.6597) - unreachable -ok9797: - %t410 = getelementptr inbounds %S.cimport.Importer, ptr %t408, i32 0, i32 0 - %t411 = getelementptr inbounds %S.cimport.CImports, ptr %t410, i32 0, i32 1 - %t412 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t412, ptr %a413 - store i32 0, ptr %a414 - %t415 = call i64 @finch_map_slot(ptr %t411, ptr %a413, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a414) - %t416 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t411, i32 0, i32 0 - %t417 = load ptr, ptr %t416 - %t418 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t417, i64 %t415 - %t419 = load i32, ptr %a414 - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %map.new9798, label %map.have9799 -map.new9798: - %t421 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 1 - call void @finch_str_copy(ptr %t421, ptr %a413) - %t422 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t422 - br label %map.have9799 -map.have9799: - %t423 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 - %t424 = load %S.cimport.CConst, ptr %t423 - store %S.cimport.CConst %t407, ptr %t423 - store %S.cimport.CConst %t424, ptr %a425 - call void @finch.drop.S_cimport_CConst(ptr %a425) - br label %endif9795 -endif9795: - br label %endif9790 -else9789: - %t426 = load i32, ptr %a13 - %t427 = icmp eq i32 %t426, 501 - br i1 %t427, label %then9800, label %endif9802 -then9800: - %t428 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t428, ptr %a429 - %t430 = call i32 @clang_Cursor_isMacroBuiltin(ptr %a429) - %t431 = icmp ne i32 %t430, 0 - br label %logic.from9803 -logic.from9803: - br i1 %t431, label %logic.end9805, label %logic.rhs9804 -logic.rhs9804: - %t432 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t432, ptr %a433 - %t434 = call i32 @clang_Cursor_isMacroFunctionLike(ptr %a433) - %t435 = icmp ne i32 %t434, 0 - br label %logic.rend9806 -logic.rend9806: - br label %logic.end9805 -logic.end9805: - %t436 = phi i1 [ true, %logic.from9803 ], [ %t435, %logic.rend9806 ] - br i1 %t436, label %then9807, label %endif9809 -then9807: - call void @finch_str_drop(ptr %a9) - ret void -endif9809: - %t437 = load ptr, ptr %a1 - %t438 = load %S.C.CXCursor, ptr %a2 - %t439 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t437, %S.C.CXCursor %t438) - store %S.cimport.Number %t439, ptr %a440 - %t441 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 1 - %t442 = load i1, ptr %t441 - br label %logic.from9810 -logic.from9810: - br i1 %t442, label %logic.rhs9811, label %logic.end9812 -logic.rhs9811: - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic9813, label %ok9814 -panic9813: - call void @finch_panic(ptr @.str.6598, i64 504, ptr @.str.6599) - unreachable -ok9814: - %t445 = getelementptr inbounds %S.cimport.Importer, ptr %t443, i32 0, i32 0 - %t446 = getelementptr inbounds %S.cimport.CImports, ptr %t445, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t447, ptr %a448 - %t449 = call i64 @finch_map_find(ptr %t446, ptr %a448, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t450 = icmp sge i64 %t449, 0 - %t451 = xor i1 %t450, true - br label %logic.rend9815 -logic.rend9815: - br label %logic.end9812 -logic.end9812: - %t452 = phi i1 [ false, %logic.from9810 ], [ %t451, %logic.rend9815 ] - br i1 %t452, label %then9816, label %endif9818 -then9816: - %t453 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 0 - %t454 = load %S.cimport.CConst, ptr %t453 - %t455 = load ptr, ptr %a1 - %t456 = icmp eq ptr %t455, null - br i1 %t456, label %panic9819, label %ok9820 -panic9819: - call void @finch_panic(ptr @.str.6600, i64 505, ptr @.str.6601) - unreachable -ok9820: - %t457 = getelementptr inbounds %S.cimport.Importer, ptr %t455, i32 0, i32 0 - %t458 = getelementptr inbounds %S.cimport.CImports, ptr %t457, i32 0, i32 1 - %t459 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t459, ptr %a460 - store i32 0, ptr %a461 - %t462 = call i64 @finch_map_slot(ptr %t458, ptr %a460, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a461) - %t463 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t458, i32 0, i32 0 - %t464 = load ptr, ptr %t463 - %t465 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t464, i64 %t462 - %t466 = load i32, ptr %a461 - %t467 = icmp ne i32 %t466, 0 - br i1 %t467, label %map.new9821, label %map.have9822 -map.new9821: - %t468 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 1 - call void @finch_str_copy(ptr %t468, ptr %a460) - %t469 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t469 - br label %map.have9822 -map.have9822: - %t470 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 - store %S.cimport.CConst %t454, ptr %a471 - call void @finch.copy.S_cimport_CConst(ptr %a472, ptr %a471) - %t473 = load %S.cimport.CConst, ptr %a472 - %t474 = load %S.cimport.CConst, ptr %t470 - store %S.cimport.CConst %t473, ptr %t470 - store %S.cimport.CConst %t474, ptr %a475 - call void @finch.drop.S_cimport_CConst(ptr %a475) - br label %endif9818 -endif9818: - call void @finch.drop.S_cimport_Number(ptr %a440) - br label %endif9802 -endif9802: - br label %endif9790 -endif9790: - br label %endif9787 -endif9787: - br label %endif9764 -endif9764: - br label %endif9745 -endif9745: - br label %endif9704 -endif9704: - br label %endif9673 -endif9673: - call void @finch_str_drop(ptr %a9) - ret void -} - -define internal void @finch.drop.map_str_str(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9826 -n.cond9826: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9827, label %n.end9828 -n.body9827: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9829, label %entry.next9830 -entry.live9829: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 2 - call void @finch_str_drop(ptr %t13) - br label %entry.next9830 -entry.next9830: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9826 -n.end9828: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_bool(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9831 -n.cond9831: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9832, label %n.end9833 -n.body9832: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9834, label %entry.next9835 -entry.live9834: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 2 - br label %entry.next9835 -entry.next9835: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9831 -n.end9833: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_Importer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CImports(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_bool(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_ptr(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.C.CXUnsavedFile, align 16 - %a138 = alloca ptr, align 16 - %a140 = alloca i64, align 16 - %a153 = alloca i32, 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 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca i64, align 16 - %a183 = alloca i64, align 16 - %a190 = alloca ptr, align 16 - %a196 = alloca [32 x i8], align 16 - %a199 = 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 - %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 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = 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 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca %S.C.CXCursor, align 16 - %a321 = alloca %S.C.CXCursor, align 16 - %a329 = alloca %S.cimport.CImports, align 16 - %a330 = 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 %then9823, label %endif9825 -then9823: - %t10 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t11 = load %S.cimport.CImports, ptr %t10 - store %S.cimport.CImports %t11, ptr %a12 - call void @finch.copy.S_cimport_CImports(ptr %a13, ptr %a12) - %t14 = load %S.cimport.CImports, ptr %a13 - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t15 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t16 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t15, %S.cimport.CImports %t14, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t16 -endif9825: - %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.6602, i64 2, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - store { ptr, i64, i64 } { ptr @.str.6603, i64 1, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 - store { ptr, i64, i64 } { ptr @.str.6604, 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 %then9836, label %endif9838 -then9836: - %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.6605, 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 %endif9838 -endif9838: - %t39 = load i1, ptr %a4 - br i1 %t39, label %then9839, label %endif9841 -then9839: - %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.6606, i64 19, i64 0 }, ptr %t44 - store i64 %t42, ptr %t40 - br label %endif9841 -endif9841: - store i64 0, ptr %a45 - br label %each.cond9842 -each.cond9842: - %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.body9843, label %each.end9845 -each.body9843: - %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.6607, 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.step9844 -each.step9844: - %t64 = load i64, ptr %a45 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a45 - br label %each.cond9842 -each.end9845: - %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.cond9846 -each.cond9846: - %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.body9847, label %each.end9849 -each.body9847: - %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.step9848 -each.step9848: - %t87 = load i64, ptr %a69 - %t88 = add i64 %t87, 1 - store i64 %t88, ptr %a69 - br label %each.cond9846 -each.end9849: - call void @finch.drop.arr_str(ptr %a68) - store { ptr, i64, i64 } zeroinitializer, ptr %a89 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 0, ptr %a92 - br label %for.cond9850 -for.cond9850: - %t93 = load i64, ptr %a92 - %t94 = icmp slt i64 %t93, %t91 - br i1 %t94, label %for.body9851, label %for.end9853 -for.body9851: - %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 %range9854, label %inrange9855 -range9854: - call void @finch_panic_index(ptr @.str.6608, i64 532, i64 %t96, i64 %t98) - unreachable -inrange9855: - %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.6609, 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.step9852 -for.step9852: - %t110 = load i64, ptr %a92 - %t111 = add i64 %t110, 1 - store i64 %t111, ptr %a92 - br label %for.cond9850 -for.end9853: - %t112 = call ptr @clang_createIndex(i32 0, i32 0) - store ptr %t112, ptr %a113 - store i64 0, ptr %a114 - br label %each.cond9856 -each.cond9856: - %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.body9857, label %each.end9859 -each.body9857: - %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.6610, 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.6611, i64 2, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t128, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a134 - %t135 = load { ptr, i64, i64 }, ptr %a134 - %t136 = call %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } { ptr @.str.6612, i64 14, i64 0 }, { ptr, i64, i64 } %t135) - store %S.C.CXUnsavedFile %t136, ptr %a137 - store ptr null, ptr %a138 - %t139 = or i64 1, 64 - store i64 %t139, ptr %a140 - %t141 = load ptr, ptr %a113 - %t142 = extractvalue { ptr, i64, i64 } { ptr @.str.6613, i64 14, i64 0 }, 0 - %t143 = icmp eq ptr %t142, null - %t144 = select i1 %t143, ptr @.str.6614, ptr %t142 - %t145 = load { ptr, i64, i64 }, ptr %a89 - %t146 = extractvalue { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 - %t148 = load i64, ptr %t147 - %t149 = trunc i64 %t148 to i32 - %t150 = load i64, ptr %a140 - %t151 = trunc i64 %t150 to i32 - %t152 = call i32 @clang_parseTranslationUnit2(ptr %t141, ptr %t144, ptr %t146, i32 %t149, ptr %a137, i32 1, i32 %t151, ptr %a138) - store i32 %t152, ptr %a153 - %t154 = load i32, ptr %a153 - %t155 = icmp ne i32 %t154, 0 - br label %logic.from9860 -logic.from9860: - br i1 %t155, label %logic.end9862, label %logic.rhs9861 -logic.rhs9861: - %t156 = load ptr, ptr %a138 - %t157 = icmp eq ptr %t156, null - br label %logic.rend9863 -logic.rend9863: - br label %logic.end9862 -logic.end9862: - %t158 = phi i1 [ true, %logic.from9860 ], [ %t157, %logic.rend9863 ] - br i1 %t158, label %then9864, label %endif9866 -then9864: - %t159 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6615, i64 33, 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.cimport.Header, ptr %a122, i32 0, i32 0 - %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) - store { ptr, i64, i64 } %t164, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6616, i64 1, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t177 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t176, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t177 -endif9866: - %t178 = load ptr, ptr %a138 - %t179 = call i32 @clang_getNumDiagnostics(ptr %t178) - %t180 = zext i32 %t179 to i64 - store i64 %t180, ptr %a181 - %t182 = load i64, ptr %a181 - store i64 0, ptr %a183 - br label %for.cond9867 -for.cond9867: - %t184 = load i64, ptr %a183 - %t185 = icmp slt i64 %t184, %t182 - br i1 %t185, label %for.body9868, label %for.end9870 -for.body9868: - %t186 = load ptr, ptr %a138 - %t187 = load i64, ptr %a183 - %t188 = trunc i64 %t187 to i32 - %t189 = call ptr @clang_getDiagnostic(ptr %t186, i32 %t188) - store ptr %t189, ptr %a190 - %t191 = load ptr, ptr %a190 - %t192 = call i32 @clang_getDiagnosticSeverity(ptr %t191) - %t193 = icmp sge i32 %t192, 3 - br i1 %t193, label %then9871, label %endif9873 -then9871: - %t194 = load ptr, ptr %a190 - %t195 = call [2 x i64] @clang_getDiagnosticSpelling(ptr %t194) - store [2 x i64] %t195, ptr %a196 - %t197 = load %S.C.CXString, ptr %a196 - %t198 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t200) - %t201 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.6618, i64 14, i64 0 }, ptr %a204 - %t205 = call i64 @finch_str_find(ptr %a202, ptr %a204) - %t206 = icmp sge i64 %t205, 0 - br i1 %t206, label %then9874, label %endif9876 -then9874: - %t207 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t207, ptr %a208 - %t210 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t210, ptr %a211 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %a199, i32 0, i32 1 - %t214 = load i64, ptr %t213 - call void @finch_str_sub(ptr %a212, ptr %a211, i64 1, i64 %t214, ptr @.str.6620, i64 552) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.6622, i64 1, i64 0 }, ptr %a218 - %t219 = call i64 @finch_str_find(ptr %a216, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = add i64 %t219, 1 - call void @finch_str_sub(ptr %a209, ptr %a208, i64 1, i64 %t221, ptr @.str.6619, i64 552) - %t222 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t222, ptr %a223 - %t224 = load { ptr, i64, i64 }, ptr %a223 - %t225 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } %t224, ptr %a227 - store { ptr, i64, i64 } %t226, ptr %a228 - %t229 = call i32 @finch_str_eq(ptr %a227, ptr %a228) - %t230 = icmp ne i32 %t229, 0 - br i1 %t230, label %then9877, label %endif9879 -then9877: - %t231 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.6623, i64 34, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - %t237 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t236, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.6624, i64 1, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - call void @finch_str_drop(ptr %a223) - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t249 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t248, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t249 -endif9879: - %t250 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t251 = load { ptr, i64, i64 }, ptr %t250 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.6625, i64 34, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a252 - %t256 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.6626, i64 10, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.6627, i64 60, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - call void @finch_str_drop(ptr %a223) - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t279 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t278, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t279 -endif9876: - %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.6628, 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) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.6629, i64 16, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - %t298 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t297, ptr %a300 - store { ptr, i64, i64 } %t298, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t297, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t304 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t303, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t304 -endif9873: - %t305 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t305) - br label %for.step9869 -for.step9869: - %t306 = load i64, ptr %a183 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a183 - br label %for.cond9867 -for.end9870: - %t308 = load ptr, ptr %a138 - %t309 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 - store ptr %t308, ptr %t309 - %t310 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - %t312 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 - store { ptr, i64, i64 } %t311, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - %t316 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t315, ptr %t312 - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t319 = load ptr, ptr %a138 - call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a318, ptr %t319) - %t320 = load %S.C.CXCursor, ptr %a318 - store %S.C.CXCursor %t320, ptr %a321 - %t322 = call i32 @clang_visitChildren(ptr %a321, ptr @finch.c.cimport.visitTop, ptr %a6) - %t323 = load ptr, ptr %a138 - call void @clang_disposeTranslationUnit(ptr %t323) - call void @finch_str_drop(ptr %a134) - br label %each.step9858 -each.step9858: - %t324 = load i64, ptr %a114 - %t325 = add i64 %t324, 1 - store i64 %t325, ptr %a114 - br label %each.cond9856 -each.end9859: - %t326 = load ptr, ptr %a113 - call void @clang_disposeIndex(ptr %t326) - %t327 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t328 = load %S.cimport.CImports, ptr %t327 - store %S.cimport.CImports %t328, ptr %a329 - call void @finch.copy.S_cimport_CImports(ptr %a330, ptr %a329) - %t331 = load %S.cimport.CImports, ptr %a330 - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t332 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t333 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t332, %S.cimport.CImports %t331, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t333 -} - -define internal %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = extractvalue { ptr, i64, i64 } %t3, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6630, ptr %t4 - %t7 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t6, 0 - %t8 = load { ptr, i64, i64 }, ptr %a2 - %t9 = extractvalue { ptr, i64, i64 } %t8, 0 - %t10 = icmp eq ptr %t9, null - %t11 = select i1 %t10, ptr @.str.6631, ptr %t9 - %t12 = insertvalue %S.C.CXUnsavedFile %t7, ptr %t11, 1 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = insertvalue %S.C.CXUnsavedFile %t12, i64 %t14, 2 - ret %S.C.CXUnsavedFile %t15 -} - -define internal { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6634, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6635, 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.6632, i64 1, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6636, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal i64 @finch.host.run({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i64 @finch_shell(ptr %a3) - call void @finch_str_drop(ptr %a3) - ret i64 %t5 -} - -define internal { ptr, i64, i64 } @finch.host.nullDevice() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6637, i64 9, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.tempDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6638, i64 6, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6639, 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 %then9880, label %endif9882 -then9880: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6641, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_ends(ptr %a15, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - br i1 %t19, label %then9883, label %endif9885 -then9883: - %t20 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t20, ptr %a21 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - %t24 = load i64, ptr %t23 - %t25 = sub i64 %t24, 1 - call void @finch_str_sub(ptr %a22, ptr %a21, i64 0, i64 %t25, ptr @.str.6642, i64 31) - %t26 = load { ptr, i64, i64 }, ptr %a22 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t26 -endif9885: - %t27 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t27 -endif9882: - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } { ptr @.str.6643, i64 4, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.pathSeparator() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6644, i64 1, i64 0 } -} - -define internal i64 @finch.host.pid() { -entry: - - %t1 = call i32 @getpid() - %t2 = sext i32 %t1 to i64 - ret i64 %t2 -} - -define internal { ptr, i64, i64 } @finch.host.cwd() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6645, i64 3, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6646, ptr %t1 - %t4 = call ptr @getenv(ptr %t3) - store { ptr, i64, i64 } zeroinitializer, ptr %a5 - call void @finch_str_from_c(ptr %a5, ptr %t4) - %t6 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t6, ptr %a7 - call void @finch_str_copy(ptr %a8, ptr %a7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - ret { ptr, i64, i64 } %t9 -} - -define internal { ptr, i64, i64 } @finch.host.cacheDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6647, i64 14, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6648, 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 %then9886, label %endif9888 -then9886: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6649, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t18 -endif9888: - %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6650, i64 4, i64 0 }, 0 - %t20 = icmp eq ptr %t19, null - %t21 = select i1 %t20, ptr @.str.6651, 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 %then9889, label %endif9891 -then9889: - %t32 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.6652, i64 13, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - call void @finch_str_drop(ptr %a28) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t36 -endif9891: - %t37 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.6653, i64 12, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a28) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.host.binaryStdio() { -entry: - - ret void -} - -define internal void @finch.host.makeDirs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - store { ptr, i64, i64 } { ptr @.str.6654, i64 9, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t3, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_copy(ptr %a9, ptr %a10) - %t11 = call i64 @finch_shell(ptr %a9) - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret void -} - -define internal void @finch.host.remove({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i32 @finch_delete_file(ptr %a3) - call void @finch_str_drop(ptr %a3) - %t6 = icmp ne i32 %t5, 0 - ret void -} - -define internal void @finch.host.removeTree({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - store { ptr, i64, i64 } { ptr @.str.6655, i64 7, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t3, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_copy(ptr %a9, ptr %a10) - %t11 = call i64 @finch_shell(ptr %a9) - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret void -} - -define internal void @finch.host.move({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.6656, i64 3, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.6657, i64 1, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load { ptr, i64, i64 }, ptr %a2 - %t16 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t14, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t14, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a24 - call void @finch_str_copy(ptr %a23, ptr %a24) - %t25 = call i64 @finch_shell(ptr %a23) - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - ret void -} - -define internal { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_trim(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.6660, 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 } %t5, ptr %a11 - call void @finch_str_drop(ptr %a11) - store { ptr, i64, i64 } %t10, ptr %a12 - %t13 = load { ptr, i64, i64 }, ptr %a12 - %t14 = extractvalue { ptr, i64, i64 } %t13, 1 - %t15 = icmp uge i64 0, %t14 - br i1 %t15, label %range9892, label %inrange9893 -range9892: - call void @finch_panic_index(ptr @.str.6661, i64 21, i64 0, i64 %t14) - unreachable -inrange9893: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 - %t18 = load { ptr, i64, i64 }, ptr %t17 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_trim(ptr %a20, ptr %a19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.drop.arr_str(ptr %a12) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.platform.hostTriple() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t1, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6663, i64 14, i64 0 }, ptr %a4 - call void @finch_str_concat(ptr %a2, ptr %a3, ptr %a4) - store { ptr, i64, i64 } %t1, ptr %a5 - call void @finch_str_drop(ptr %a5) - %t6 = load { ptr, i64, i64 }, ptr %a2 - %t7 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a8, i64 %t7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t6, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t9, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.6664, i64 4, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t20, ptr %a21 - %t22 = load { ptr, i64, i64 }, ptr %a21 - %t23 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t22) - store { ptr, i64, i64 } { ptr @.str.6665, i64 21, i64 0 }, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6666, i64 4, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call i64 @finch.host.run({ ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - store { ptr, i64, i64 } zeroinitializer, ptr %a46 - %t47 = call i32 @finch_try_read_file(ptr %a45, ptr %a44, ptr %a46) - %t48 = icmp eq i32 %t47, 0 - %t49 = load { ptr, i64, i64 }, ptr %a46 - %t50 = load { ptr, i64, i64 }, ptr %a45 - br i1 %t48, label %or.failed9894, label %or.ok9895 -or.failed9894: - store { ptr, i64, i64 } %t49, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %or.bend9896 -or.bend9896: - br label %or.end9897 -or.ok9895: - br label %or.end9897 -or.end9897: - %t52 = phi { ptr, i64, i64 } [ { ptr @.str.6667, i64 0, i64 0 }, %or.bend9896 ], [ %t50, %or.ok9895 ] - store { ptr, i64, i64 } %t52, ptr %a53 - %t54 = load { ptr, i64, i64 }, ptr %a21 - call void @finch.host.remove({ ptr, i64, i64 } %t54) - %t55 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_trim(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = icmp eq i64 %t59, 0 - br i1 %t61, label %then9898, label %endif9900 -then9898: - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } { ptr @.str.6669, i64 24, i64 0 } -endif9900: - %t62 = load { ptr, i64, i64 }, ptr %a53 - %t63 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t62) - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } %t63 -} - -define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = 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 - %a59 = 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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca %S.platform.Target, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = 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 - %a135 = 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 - %a145 = 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 - %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 - %a169 = alloca i1, 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 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca i1, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = 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 - %a204 = alloca i1, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a255 = 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 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = call { ptr, i64, i64 } @finch.platform.hostTriple() - store { ptr, i64, i64 } %t2, ptr %a3 - %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 %then9901, label %else9902 -then9901: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t15, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - br label %endif9903 -else9902: - %t18 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6670, i64 7, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br i1 %t22, label %then9904, label %else9905 -then9904: - %t23 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6671, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - br label %endif9906 -else9905: - %t25 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6672, i64 5, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br i1 %t29, label %then9907, label %else9908 -then9907: - %t30 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6673, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %endif9909 -else9908: - %t32 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.6674, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.from9910 -logic.from9910: - br i1 %t36, label %logic.end9912, label %logic.rhs9911 -logic.rhs9911: - %t37 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.6675, i64 7, i64 0 }, ptr %a39 - %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) - %t41 = icmp ne i32 %t40, 0 - br label %logic.rend9913 -logic.rend9913: - br label %logic.end9912 -logic.end9912: - %t42 = phi i1 [ true, %logic.from9910 ], [ %t41, %logic.rend9913 ] - br label %logic.from9914 -logic.from9914: - br i1 %t42, label %logic.end9916, label %logic.rhs9915 -logic.rhs9915: - %t43 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6676, i64 11, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp ne i32 %t46, 0 - br label %logic.rend9917 -logic.rend9917: - br label %logic.end9916 -logic.end9916: - %t48 = phi i1 [ true, %logic.from9914 ], [ %t47, %logic.rend9917 ] - br i1 %t48, label %then9918, label %else9919 -then9918: - %t49 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6677, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t49, ptr %a50 - call void @finch_str_drop(ptr %a50) - br label %endif9920 -else9919: - %t51 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6678, i64 5, i64 0 }, ptr %a53 - %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) - %t55 = icmp ne i32 %t54, 0 - br i1 %t55, label %then9921, label %endif9923 -then9921: - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.6680, i64 7, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_starts(ptr %a57, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br label %logic.from9924 -logic.from9924: - br i1 %t61, label %logic.end9926, label %logic.rhs9925 -logic.rhs9925: - %t62 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6682, i64 5, i64 0 }, ptr %a65 - %t66 = call i32 @finch_str_starts(ptr %a63, ptr %a65) - %t67 = icmp ne i32 %t66, 0 - br label %logic.rend9927 -logic.rend9927: - br label %logic.end9926 -logic.end9926: - %t68 = phi i1 [ true, %logic.from9924 ], [ %t67, %logic.rend9927 ] - br i1 %t68, label %then9928, label %else9929 -then9928: - %t69 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6683, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif9930 -else9929: - %t71 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6684, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif9930 -endif9930: - br label %endif9923 -endif9923: - br label %endif9920 -endif9920: - br label %endif9909 -endif9909: - br label %endif9906 -endif9906: - br label %endif9903 -endif9903: - %t73 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6685, i64 22, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then9931, label %endif9933 -then9931: - %t78 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6686, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif9933 -endif9933: - %t80 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t80, ptr %a81 - call void @finch_str_copy(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t83, 0 - store %S.platform.Target %t84, ptr %a85 - %t86 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.6688, i64 7, i64 0 }, ptr %a89 - %t90 = call i64 @finch_str_find(ptr %a87, ptr %a89) - %t91 = icmp sge i64 %t90, 0 - br label %logic.from9934 -logic.from9934: - br i1 %t91, label %logic.end9936, label %logic.rhs9935 -logic.rhs9935: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.6690, i64 5, i64 0 }, ptr %a95 - %t96 = call i64 @finch_str_find(ptr %a93, ptr %a95) - %t97 = icmp sge i64 %t96, 0 - br label %logic.rend9937 -logic.rend9937: - br label %logic.end9936 -logic.end9936: - %t98 = phi i1 [ true, %logic.from9934 ], [ %t97, %logic.rend9937 ] - br label %logic.from9938 -logic.from9938: - br i1 %t98, label %logic.end9940, label %logic.rhs9939 -logic.rhs9939: - %t99 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6692, i64 4, i64 0 }, ptr %a102 - %t103 = call i64 @finch_str_find(ptr %a100, ptr %a102) - %t104 = icmp sge i64 %t103, 0 - br label %logic.rend9941 -logic.rend9941: - br label %logic.end9940 -logic.end9940: - %t105 = phi i1 [ true, %logic.from9938 ], [ %t104, %logic.rend9941 ] - br label %logic.from9942 -logic.from9942: - br i1 %t105, label %logic.end9944, label %logic.rhs9943 -logic.rhs9943: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.6694, i64 5, i64 0 }, ptr %a109 - %t110 = call i64 @finch_str_find(ptr %a107, ptr %a109) - %t111 = icmp sge i64 %t110, 0 - br label %logic.rend9945 -logic.rend9945: - br label %logic.end9944 -logic.end9944: - %t112 = phi i1 [ true, %logic.from9942 ], [ %t111, %logic.rend9945 ] - %t113 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - store i1 %t112, ptr %t113 - %t114 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.6696, i64 4, i64 0 }, ptr %a117 - %t118 = call i64 @finch_str_find(ptr %a115, ptr %a117) - %t119 = icmp sge i64 %t118, 0 - %t120 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 2 - store i1 %t119, ptr %t120 - %t121 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6698, i64 5, i64 0 }, ptr %a124 - %t125 = call i64 @finch_str_find(ptr %a122, ptr %a124) - %t126 = icmp sge i64 %t125, 0 - br label %logic.from9946 -logic.from9946: - br i1 %t126, label %logic.end9948, label %logic.rhs9947 -logic.rhs9947: - %t127 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6700, i64 6, i64 0 }, ptr %a130 - %t131 = call i64 @finch_str_find(ptr %a128, ptr %a130) - %t132 = icmp sge i64 %t131, 0 - br label %logic.rend9949 -logic.rend9949: - br label %logic.end9948 -logic.end9948: - %t133 = phi i1 [ true, %logic.from9946 ], [ %t132, %logic.rend9949 ] - br label %logic.from9950 -logic.from9950: - br i1 %t133, label %logic.end9952, label %logic.rhs9951 -logic.rhs9951: - %t134 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t134, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.6702, i64 5, i64 0 }, ptr %a137 - %t138 = call i64 @finch_str_find(ptr %a135, ptr %a137) - %t139 = icmp sge i64 %t138, 0 - br label %logic.rend9953 -logic.rend9953: - br label %logic.end9952 -logic.end9952: - %t140 = phi i1 [ true, %logic.from9950 ], [ %t139, %logic.rend9953 ] - %t141 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - store i1 %t140, ptr %t141 - %t142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.6704, i64 7, i64 0 }, ptr %a145 - %t146 = call i32 @finch_str_starts(ptr %a143, ptr %a145) - %t147 = icmp ne i32 %t146, 0 - br label %logic.from9954 -logic.from9954: - br i1 %t147, label %logic.end9956, label %logic.rhs9955 -logic.rhs9955: - %t148 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.6706, i64 5, i64 0 }, ptr %a151 - %t152 = call i32 @finch_str_starts(ptr %a149, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.rend9957 -logic.rend9957: - br label %logic.end9956 -logic.end9956: - %t154 = phi i1 [ true, %logic.from9954 ], [ %t153, %logic.rend9957 ] - %t155 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - store i1 %t154, ptr %t155 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.6708, i64 7, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_starts(ptr %a157, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.from9958 -logic.from9958: - br i1 %t161, label %logic.end9960, label %logic.rhs9959 -logic.rhs9959: - %t162 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t162, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.6710, i64 5, i64 0 }, ptr %a165 - %t166 = call i32 @finch_str_starts(ptr %a163, ptr %a165) - %t167 = icmp ne i32 %t166, 0 - br label %logic.rend9961 -logic.rend9961: - br label %logic.end9960 -logic.end9960: - %t168 = phi i1 [ true, %logic.from9958 ], [ %t167, %logic.rend9961 ] - store i1 %t168, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.6712, i64 5, i64 0 }, ptr %a173 - %t174 = call i64 @finch_str_find(ptr %a171, ptr %a173) - %t175 = icmp sge i64 %t174, 0 - br label %logic.from9962 -logic.from9962: - br i1 %t175, label %logic.end9964, label %logic.rhs9963 -logic.rhs9963: - %t176 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.6714, i64 6, i64 0 }, ptr %a179 - %t180 = call i64 @finch_str_find(ptr %a177, ptr %a179) - %t181 = icmp sge i64 %t180, 0 - br label %logic.rend9965 -logic.rend9965: - br label %logic.end9964 -logic.end9964: - %t182 = phi i1 [ true, %logic.from9962 ], [ %t181, %logic.rend9965 ] - store i1 %t182, ptr %a183 - %t184 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.6716, i64 7, i64 0 }, ptr %a187 - %t188 = call i64 @finch_str_find(ptr %a185, ptr %a187) - %t189 = icmp sge i64 %t188, 0 - br label %logic.from9966 -logic.from9966: - br i1 %t189, label %logic.end9968, label %logic.rhs9967 -logic.rhs9967: - %t190 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t190, ptr %a191 - store { ptr, i64, i64 } { ptr @.str.6718, i64 5, i64 0 }, ptr %a193 - %t194 = call i64 @finch_str_find(ptr %a191, ptr %a193) - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend9969 -logic.rend9969: - br label %logic.end9968 -logic.end9968: - %t196 = phi i1 [ true, %logic.from9966 ], [ %t195, %logic.rend9969 ] - br label %logic.from9970 -logic.from9970: - br i1 %t196, label %logic.end9972, label %logic.rhs9971 -logic.rhs9971: - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t197, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.6720, i64 4, i64 0 }, ptr %a200 - %t201 = call i64 @finch_str_find(ptr %a198, ptr %a200) - %t202 = icmp sge i64 %t201, 0 - br label %logic.rend9973 -logic.rend9973: - br label %logic.end9972 -logic.end9972: - %t203 = phi i1 [ true, %logic.from9970 ], [ %t202, %logic.rend9973 ] - store i1 %t203, ptr %a204 - %t205 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t206 = load i1, ptr %t205 - %t207 = load i1, ptr %a204 - %t208 = icmp ne i1 %t206, %t207 - br label %logic.from9974 -logic.from9974: - br i1 %t208, label %logic.end9976, label %logic.rhs9975 -logic.rhs9975: - %t209 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t210 = load i1, ptr %t209 - %t211 = load i1, ptr %a183 - %t212 = icmp ne i1 %t210, %t211 - br label %logic.rend9977 -logic.rend9977: - br label %logic.end9976 -logic.end9976: - %t213 = phi i1 [ true, %logic.from9974 ], [ %t212, %logic.rend9977 ] - br label %logic.from9978 -logic.from9978: - br i1 %t213, label %logic.end9980, label %logic.rhs9979 -logic.rhs9979: - %t214 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t215 = load i1, ptr %t214 - %t216 = load i1, ptr %a169 - %t217 = icmp ne i1 %t215, %t216 - br label %logic.rend9981 -logic.rend9981: - br label %logic.end9980 -logic.end9980: - %t218 = phi i1 [ true, %logic.from9978 ], [ %t217, %logic.rend9981 ] - %t219 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - store i1 %t218, ptr %t219 - %t220 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t221 = load { ptr, i64, i64 }, ptr %t220 - store { ptr, i64, i64 } { ptr @.str.6721, i64 0, i64 0 }, ptr %t220 - store { ptr, i64, i64 } %t221, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t224 = load i1, ptr %t223 - br i1 %t224, label %then9982, label %endif9984 -then9982: - %t225 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } { ptr @.str.6722, i64 4, i64 0 }, ptr %t225 - store { ptr, i64, i64 } %t226, ptr %a227 - call void @finch_str_drop(ptr %a227) - br label %endif9984 -endif9984: - %t228 = extractvalue { ptr, i64, i64 } { ptr @.str.6723, i64 8, i64 0 }, 0 - %t229 = icmp eq ptr %t228, null - %t230 = select i1 %t229, ptr @.str.6724, ptr %t228 - %t231 = call ptr @getenv(ptr %t230) - store { ptr, i64, i64 } zeroinitializer, ptr %a232 - call void @finch_str_from_c(ptr %a232, ptr %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - 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 %a237 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %a237, i32 0, i32 1 - %t239 = load i64, ptr %t238 - %t240 = icmp sgt i64 %t239, 0 - br i1 %t240, label %then9985, label %else9986 -then9985: - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_copy(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - %t246 = load { ptr, i64, i64 }, ptr %t242 - store { ptr, i64, i64 } %t245, ptr %t242 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif9987 -else9986: - %t248 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t249 = load i1, ptr %t248 - br label %logic.from9988 -logic.from9988: - br i1 %t249, label %logic.rhs9989, label %logic.end9990 -logic.rhs9989: - %t250 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.rend9991 -logic.rend9991: - br label %logic.end9990 -logic.end9990: - %t252 = phi i1 [ false, %logic.from9988 ], [ %t251, %logic.rend9991 ] - br i1 %t252, label %then9992, label %else9993 -then9992: - %t253 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t254 = load { ptr, i64, i64 }, ptr %t253 - store { ptr, i64, i64 } { ptr @.str.6725, i64 22, i64 0 }, ptr %t253 - store { ptr, i64, i64 } %t254, ptr %a255 - call void @finch_str_drop(ptr %a255) - br label %endif9994 -else9993: - %t256 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t257 = load i1, ptr %t256 - br label %logic.from9995 -logic.from9995: - br i1 %t257, label %logic.rhs9996, label %logic.end9997 -logic.rhs9996: - %t258 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t259 = load i1, ptr %t258 - br label %logic.rend9998 -logic.rend9998: - br label %logic.end9997 -logic.end9997: - %t260 = phi i1 [ false, %logic.from9995 ], [ %t259, %logic.rend9998 ] - br label %logic.from9999 -logic.from9999: - br i1 %t260, label %logic.rhs10000, label %logic.end10001 -logic.rhs10000: - %t261 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t262 = load i1, ptr %t261 - %t263 = xor i1 %t262, true - br label %logic.rend10002 -logic.rend10002: - br label %logic.end10001 -logic.end10001: - %t264 = phi i1 [ false, %logic.from9999 ], [ %t263, %logic.rend10002 ] - br i1 %t264, label %then10003, label %else10004 -then10003: - %t265 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } { ptr @.str.6726, i64 21, i64 0 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_drop(ptr %a267) - br label %endif10005 -else10004: - %t268 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t269 = load i1, ptr %t268 - br i1 %t269, label %then10006, label %else10007 -then10006: - %t270 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6727, i64 15, i64 0 }, 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 - %t275 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } %t274, ptr %t275 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - br label %endif10008 -else10007: - %t278 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6728, i64 1, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - br i1 %t282, label %then10009, label %else10010 -then10009: - %t284 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.6729, i64 5, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif10011 -else10010: - %t287 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t288 = load { ptr, i64, i64 }, ptr %t287 - store { ptr, i64, i64 } { ptr @.str.6730, i64 2, i64 0 }, ptr %t287 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - br label %endif10011 -endif10011: - br label %endif10008 -endif10008: - br label %endif10005 -endif10005: - br label %endif9994 -endif9994: - br label %endif9987 -endif9987: - %t290 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t291 = load i1, ptr %t290 - br label %logic.from10012 -logic.from10012: - br i1 %t291, label %logic.rhs10013, label %logic.end10014 -logic.rhs10013: - %t292 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t293 = load i1, ptr %t292 - br label %logic.rend10015 -logic.rend10015: - br label %logic.end10014 -logic.end10014: - %t294 = phi i1 [ false, %logic.from10012 ], [ %t293, %logic.rend10015 ] - br i1 %t294, label %then10016, label %else10017 -then10016: - %t295 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } { ptr @.str.6731, i64 5, i64 0 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif10018 -else10017: - %t298 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t299 = load i1, ptr %t298 - br label %logic.from10019 -logic.from10019: - br i1 %t299, label %logic.rhs10020, label %logic.end10021 -logic.rhs10020: - %t300 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t301 = load i1, ptr %t300 - br label %logic.rend10022 -logic.rend10022: - br label %logic.end10021 -logic.end10021: - %t302 = phi i1 [ false, %logic.from10019 ], [ %t301, %logic.rend10022 ] - br label %logic.from10023 -logic.from10023: - br i1 %t302, label %logic.rhs10024, label %logic.end10025 -logic.rhs10024: - %t303 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t304 = load i1, ptr %t303 - %t305 = xor i1 %t304, true - br label %logic.rend10026 -logic.rend10026: - br label %logic.end10025 -logic.end10025: - %t306 = phi i1 [ false, %logic.from10023 ], [ %t305, %logic.rend10026 ] - br i1 %t306, label %then10027, label %endif10029 -then10027: - %t307 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } { ptr @.str.6732, i64 13, i64 0 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10029 -endif10029: - br label %endif10018 -endif10018: - %t310 = load %S.platform.Target, ptr %a85 - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a3) - ret %S.platform.Target %t310 -} - -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.from10030 -logic.from10030: - br i1 %t4, label %logic.end10032, label %logic.rhs10031 -logic.rhs10031: - %t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3 - %t6 = load i1, ptr %t5 - br label %logic.rend10033 -logic.rend10033: - br label %logic.end10032 -logic.end10032: - %t7 = phi i1 [ true, %logic.from10030 ], [ %t6, %logic.rend10033 ] - br label %logic.from10034 -logic.from10034: - br i1 %t7, label %logic.end10036, label %logic.rhs10035 -logic.rhs10035: - %t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1 - %t9 = load i1, ptr %t8 - br label %logic.rend10037 -logic.rend10037: - br label %logic.end10036 -logic.end10036: - %t10 = phi i1 [ true, %logic.from10034 ], [ %t9, %logic.rend10037 ] - 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.cond10038 -each.cond10038: - %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.body10039, label %each.end10041 -each.body10039: - %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.step10040 -each.step10040: - %t17 = load i64, ptr %a3 - %t18 = add i64 %t17, 1 - store i64 %t18, ptr %a3 - br label %each.cond10038 -each.end10041: - store { ptr, i64, i64 } { ptr @.str.6733, i64 16, i64 0 }, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %for.cond10042 -for.cond10042: - %t22 = load i64, ptr %a21 - %t23 = icmp slt i64 %t22, 8 - br i1 %t23, label %for.body10043, label %for.end10045 -for.body10043: - %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 %range10046, label %inrange10047 -range10046: - call void @finch_panic_index(ptr @.str.6734, i64 16, i64 %t32, i64 %t34) - unreachable -inrange10047: - %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.step10044 -for.step10044: - %t45 = load i64, ptr %a21 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a21 - br label %for.cond10042 -for.end10045: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6735, i64 0, i64 0 }, ptr %a48 - call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - call void @finch.drop.arr_str(ptr %a20) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t50 -} - -define internal { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - ret { ptr, i64, i64 } %t3 -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.platform.Target %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.6737, 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 %then10048, label %endif10050 -then10048: - %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.6739, i64 28) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - store { ptr, i64, i64 } { ptr @.str.6738, i64 11, i64 0 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - ret { ptr, i64, i64 } %t22 -endif10050: - %t23 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t24 = load i1, ptr %t23 - %t25 = xor i1 %t24, true - br i1 %t25, label %then10051, label %endif10053 -then10051: - %t26 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.6740, i64 17, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a33, i64 %t32) - %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.6741, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a46 - %t47 = load { ptr, i64, i64 }, ptr %a1 - %t48 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t47) - store { ptr, i64, i64 } { ptr @.str.6742, i64 18, i64 0 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t53, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6743, i64 3, i64 0 }, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - %t59 = load { ptr, i64, i64 }, ptr %a46 - %t60 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.6744, i64 4, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a73 - %t79 = call i64 @finch.host.run({ ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load i64, ptr %a81 - %t83 = icmp eq i64 %t82, 0 - br label %logic.from10054 -logic.from10054: - br i1 %t83, label %logic.rhs10055, label %logic.end10056 -logic.rhs10055: - %t84 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t84, ptr %a85 - %t86 = call i32 @finch_file_exists(ptr %a85) - %t87 = icmp ne i32 %t86, 0 - br label %logic.rend10057 -logic.rend10057: - br label %logic.end10056 -logic.end10056: - %t88 = phi i1 [ false, %logic.from10054 ], [ %t87, %logic.rend10057 ] - br i1 %t88, label %then10058, label %endif10060 -then10058: - %t89 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - store { ptr, i64, i64 } zeroinitializer, ptr %a92 - %t93 = call i32 @finch_try_read_file(ptr %a91, ptr %a90, ptr %a92) - %t94 = icmp eq i32 %t93, 0 - %t95 = load { ptr, i64, i64 }, ptr %a92 - %t96 = load { ptr, i64, i64 }, ptr %a91 - br i1 %t94, label %or.failed10061, label %or.ok10062 -or.failed10061: - store { ptr, i64, i64 } %t95, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %or.bend10063 -or.bend10063: - br label %or.end10064 -or.ok10062: - br label %or.end10064 -or.end10064: - %t98 = phi { ptr, i64, i64 } [ { ptr @.str.6745, i64 0, i64 0 }, %or.bend10063 ], [ %t96, %or.ok10062 ] - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_trim(ptr %a100, ptr %a99) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t101, ptr %a103 - %t104 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.host.remove({ ptr, i64, i64 } %t104) - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a103, i32 0, i32 1 - %t106 = load i64, ptr %t105 - %t107 = icmp sgt i64 %t106, 0 - br i1 %t107, label %then10065, label %endif10067 -then10065: - %t108 = load { ptr, i64, i64 }, ptr %a103 - call void @finch_str_drop(ptr %a46) - ret { ptr, i64, i64 } %t108 -endif10067: - call void @finch_str_drop(ptr %a103) - br label %endif10060 -endif10060: - call void @finch_str_drop(ptr %a46) - br label %endif10053 -endif10053: - %t109 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6747, i64 2, i64 0 }, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_drop(ptr %a115) - ret { ptr, i64, i64 } %t114 -} - -define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a35 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6749, i64 1, i64 0 }, ptr %a10 - %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) - store i64 %t11, ptr %a12 - br label %while.cond10068 -while.cond10068: - %t13 = load i64, ptr %a12 - %t14 = icmp sge i64 %t13, 0 - br i1 %t14, label %while.body10069, label %while.end10070 -while.body10069: - %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.6750, i64 49) - %t22 = load { ptr, i64, i64 }, ptr %a17 - %t23 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t22, ptr %a6 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6752, i64 1, i64 0 }, ptr %a28 - %t29 = call i64 @finch_str_find(ptr %a26, ptr %a28) - store i64 %t29, ptr %a12 - br label %while.cond10068 -while.end10070: - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t31 = load i64, ptr %t30 - store i64 %t31, ptr %a32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t34 = load i64, ptr %t33 - store i64 0, ptr %a35 - br label %for.cond10071 -for.cond10071: - %t36 = load i64, ptr %a35 - %t37 = icmp slt i64 %t36, %t34 - br i1 %t37, label %for.body10072, label %for.end10074 -for.body10072: - %t38 = load i64, ptr %a35 - %t39 = load { ptr, i64, i64 }, ptr %a6 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range10075, label %inrange10076 -range10075: - call void @finch_panic_index(ptr @.str.6753, i64 54, i64 %t38, i64 %t40) - unreachable -inrange10076: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 - %t44 = load i8, ptr %t43 - %t45 = icmp eq i8 %t44, 46 - br i1 %t45, label %then10077, label %endif10079 -then10077: - %t46 = load i64, ptr %a35 - store i64 %t46, ptr %a32 - br label %endif10079 -endif10079: - br label %for.step10073 -for.step10073: - %t47 = load i64, ptr %a35 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a35 - br label %for.cond10071 -for.end10074: - %t49 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6754, i64 58) - %t53 = load { ptr, i64, i64 }, ptr %a51 - %t54 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t53, ptr %a6 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %while.cond10080 -while.cond10080: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t57 = load i64, ptr %t56 - %t58 = icmp sgt i64 %t57, 0 - br label %logic.from10083 -logic.from10083: - br i1 %t58, label %logic.rhs10084, label %logic.end10085 -logic.rhs10084: - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t60 = load i64, ptr %t59 - %t61 = sub i64 %t60, 1 - %t62 = load { ptr, i64, i64 }, ptr %a6 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 %t61, %t63 - br i1 %t64, label %range10086, label %inrange10087 -range10086: - call void @finch_panic_index(ptr @.str.6755, i64 59, i64 %t61, i64 %t63) - unreachable -inrange10087: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds i8, ptr %t65, i64 %t61 - %t67 = load i8, ptr %t66 - %t68 = icmp uge i8 %t67, 48 - br label %logic.rend10088 -logic.rend10088: - br label %logic.end10085 -logic.end10085: - %t69 = phi i1 [ false, %logic.from10083 ], [ %t68, %logic.rend10088 ] - br label %logic.from10089 -logic.from10089: - br i1 %t69, label %logic.rhs10090, label %logic.end10091 -logic.rhs10090: - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t71 = load i64, ptr %t70 - %t72 = sub i64 %t71, 1 - %t73 = load { ptr, i64, i64 }, ptr %a6 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range10092, label %inrange10093 -range10092: - call void @finch_panic_index(ptr @.str.6756, i64 59, i64 %t72, i64 %t74) - unreachable -inrange10093: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds i8, ptr %t76, i64 %t72 - %t78 = load i8, ptr %t77 - %t79 = icmp ule i8 %t78, 57 - br label %logic.rend10094 -logic.rend10094: - br label %logic.end10091 -logic.end10091: - %t80 = phi i1 [ false, %logic.from10089 ], [ %t79, %logic.rend10094 ] - br i1 %t80, label %while.body10081, label %while.end10082 -while.body10081: - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t81, ptr %a82 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - call void @finch_str_sub(ptr %a83, ptr %a82, i64 0, i64 %t86, ptr @.str.6757, i64 60) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t87, ptr %a6 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %while.cond10080 -while.end10082: - %t90 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_lower(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t93 -} - -define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.from10095 -logic.from10095: - br i1 %t4, label %logic.rhs10096, label %logic.end10097 -logic.rhs10096: - %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.cond10098 -find.cond10098: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body10099, label %find.end10102 -find.body10099: - %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.hit10100, label %find.next10101 -find.hit10100: - store i64 %t12, ptr %a8 - br label %find.end10102 -find.next10101: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond10098 -find.end10102: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - %t23 = xor i1 %t22, true - br label %logic.rend10103 -logic.rend10103: - br label %logic.end10097 -logic.end10097: - %t24 = phi i1 [ false, %logic.from10095 ], [ %t23, %logic.rend10103 ] - br i1 %t24, label %then10104, label %endif10106 -then10104: - %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 %endif10106 -endif10106: - 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then10107, label %endif10109 -then10107: - ret { ptr, i64, i64 } { ptr @.str.6760, i64 0, i64 0 } -endif10109: - %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.6761, i64 81) - %t22 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t22, ptr %a23 - store i64 0, ptr %a24 - br label %while.cond10110 -while.cond10110: - %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.from10113 -logic.from10113: - br i1 %t28, label %logic.rhs10114, label %logic.end10115 -logic.rhs10114: - %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 %range10116, label %inrange10117 -range10116: - call void @finch_panic_index(ptr @.str.6763, i64 83, i64 %t32, i64 %t34) - unreachable -inrange10117: - %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 - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = xor i1 %t43, true - br label %logic.rend10118 -logic.rend10118: - br label %logic.end10115 -logic.end10115: - %t46 = phi i1 [ false, %logic.from10113 ], [ %t45, %logic.rend10118 ] - br i1 %t46, label %while.body10111, label %while.end10112 -while.body10111: - %t47 = load i64, ptr %a24 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a24 - br label %while.cond10110 -while.end10112: - %t49 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a24 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6764, i64 86) - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t53 -} - -define internal void @finch.drop.S_linker_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal void @finch.drop.arr_S_linker_Names(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10222 -n.cond10222: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10223, label %n.end10224 -n.body10223: - %t7 = getelementptr inbounds %S.linker.Names, ptr %t1, i64 %t5 - call void @finch.drop.S_linker_Names(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10222 -n.end10224: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca i64, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a238 = alloca i64, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca i64, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.cimport.CImports %p1, ptr %a2 - store %S.platform.Target %p2, ptr %a3 - 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.6766, 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.cond10119 -each.cond10119: - %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.body10120, label %each.end10122 -each.body10120: - %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.6769, 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 %then10123, label %else10124 -then10123: - %t33 = load { ptr, i64, i64 }, ptr %a26 - %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6770, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6771, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif10125 -else10124: - %t36 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.6773, i64 18, i64 0 }, ptr %a39 - %t40 = call i64 @finch_str_find(ptr %a37, ptr %a39) - %t41 = icmp sge i64 %t40, 0 - br i1 %t41, label %then10126, label %else10127 -then10126: - %t42 = load { ptr, i64, i64 }, ptr %a26 - %t43 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t42, { ptr, i64, i64 } { ptr @.str.6774, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6775, i64 2, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - br label %endif10128 -else10127: - %t45 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6777, i64 27, i64 0 }, ptr %a48 - %t49 = call i64 @finch_str_find(ptr %a46, ptr %a48) - %t50 = icmp sge i64 %t49, 0 - br i1 %t50, label %then10129, label %else10130 -then10129: - %t51 = load { ptr, i64, i64 }, ptr %a26 - %t52 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t51, { ptr, i64, i64 } { ptr @.str.6778, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6779, i64 3, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - br label %endif10131 -else10130: - %t54 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6781, i64 14, i64 0 }, ptr %a57 - %t58 = call i64 @finch_str_find(ptr %a55, ptr %a57) - %t59 = icmp sge i64 %t58, 0 - br i1 %t59, label %then10132, label %else10133 -then10132: - %t60 = load { ptr, i64, i64 }, ptr %a26 - %t61 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t60, { ptr, i64, i64 } { ptr @.str.6782, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6783, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch_str_drop(ptr %a62) - br label %endif10134 -else10133: - %t63 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6785, i64 24, i64 0 }, ptr %a66 - %t67 = call i64 @finch_str_find(ptr %a64, ptr %a66) - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then10135, label %else10136 -then10135: - %t69 = load { ptr, i64, i64 }, ptr %a26 - %t70 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t69, { ptr, i64, i64 } { ptr @.str.6786, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6787, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif10137 -else10136: - %t72 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.6789, i64 13, i64 0 }, ptr %a75 - %t76 = call i64 @finch_str_find(ptr %a73, ptr %a75) - %t77 = icmp sge i64 %t76, 0 - br i1 %t77, label %then10138, label %else10139 -then10138: - %t78 = load { ptr, i64, i64 }, ptr %a26 - %t79 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.6790, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6791, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10140 -else10139: - %t81 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.6793, i64 11, i64 0 }, ptr %a84 - %t85 = call i64 @finch_str_find(ptr %a82, ptr %a84) - %t86 = icmp sge i64 %t85, 0 - br label %logic.from10141 -logic.from10141: - br i1 %t86, label %logic.rhs10142, label %logic.end10143 -logic.rhs10142: - %t87 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.6795, i64 9, i64 0 }, ptr %a90 - %t91 = call i64 @finch_str_find(ptr %a88, ptr %a90) - %t92 = icmp sge i64 %t91, 0 - br label %logic.rend10144 -logic.rend10144: - br label %logic.end10143 -logic.end10143: - %t93 = phi i1 [ false, %logic.from10141 ], [ %t92, %logic.rend10144 ] - br i1 %t93, label %then10145, label %else10146 -then10145: - %t94 = load { ptr, i64, i64 }, ptr %a26 - %t95 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t94, { ptr, i64, i64 } { ptr @.str.6796, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6797, i64 1, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.6798, i64 10, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t100) - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif10147 -else10146: - %t102 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.6800, i64 1, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_starts(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.from10148 -logic.from10148: - br i1 %t107, label %logic.rhs10149, label %logic.end10150 -logic.rhs10149: - %t108 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6802, i64 19, i64 0 }, ptr %a111 - %t112 = call i64 @finch_str_find(ptr %a109, ptr %a111) - %t113 = icmp sge i64 %t112, 0 - br label %logic.rend10151 -logic.rend10151: - br label %logic.end10150 -logic.end10150: - %t114 = phi i1 [ false, %logic.from10148 ], [ %t113, %logic.rend10151 ] - br i1 %t114, label %then10152, label %endif10154 -then10152: - %t115 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t115, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.6805, i64 19, i64 0 }, ptr %a121 - %t122 = call i64 @finch_str_find(ptr %a119, ptr %a121) - call void @finch_str_sub(ptr %a117, ptr %a116, i64 1, i64 %t122, ptr @.str.6803, i64 111) - %t123 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t123, ptr %a124 - %t125 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 - %t126 = load i1, ptr %t125 - br label %logic.from10155 -logic.from10155: - br i1 %t126, label %logic.rhs10156, label %logic.end10157 -logic.rhs10156: - %t127 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6807, i64 1, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_starts(ptr %a128, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend10158 -logic.rend10158: - br label %logic.end10157 -logic.end10157: - %t133 = phi i1 [ false, %logic.from10155 ], [ %t132, %logic.rend10158 ] - br i1 %t133, label %then10159, label %endif10161 -then10159: - %t134 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t134, ptr %a135 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a136, ptr %a135, i64 1, i64 %t138, ptr @.str.6808, i64 113) - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t139, ptr %a124 - store { ptr, i64, i64 } %t140, ptr %a141 - call void @finch_str_drop(ptr %a141) - br label %endif10161 -endif10161: - %t142 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t142) - call void @finch_str_drop(ptr %a124) - br label %endif10154 -endif10154: - br label %endif10147 -endif10147: - br label %endif10140 -endif10140: - br label %endif10137 -endif10137: - br label %endif10134 -endif10134: - br label %endif10131 -endif10131: - br label %endif10128 -endif10128: - br label %endif10125 -endif10125: - call void @finch_str_drop(ptr %a26) - br label %each.step10121 -each.step10121: - %t143 = load i64, ptr %a13 - %t144 = add i64 %t143, 1 - store i64 %t144, ptr %a13 - br label %each.cond10119 -each.end10122: - call void @finch.drop.arr_str(ptr %a12) - %t145 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = icmp eq i64 %t147, 0 - br label %logic.from10162 -logic.from10162: - br i1 %t148, label %logic.rhs10163, label %logic.end10164 -logic.rhs10163: - %t149 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1 - %t151 = load i64, ptr %t150 - %t152 = icmp eq i64 %t151, 0 - br label %logic.rend10165 -logic.rend10165: - br label %logic.end10164 -logic.end10164: - %t153 = phi i1 [ false, %logic.from10162 ], [ %t152, %logic.rend10165 ] - br i1 %t153, label %then10166, label %endif10168 -then10166: - %t154 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.6809, i64 21, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = trunc i64 %t159 to i32 - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = icmp eq ptr %t161, null - %t163 = select i1 %t162, ptr @.str.6810, ptr %t161 - %t164 = call i32 (ptr, ...) @printf(ptr @.str.6811, i32 %t160, ptr %t163) - store { ptr, i64, i64 } %t158, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = call i32 (ptr, ...) @printf(ptr @.str.6812) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -endif10168: - %t167 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - store i64 0, ptr %a168 - br label %each.cond10169 -each.cond10169: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10170, label %each.end10172 -each.body10170: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 %t171 - %t175 = load { ptr, i64, i64 }, ptr %t174 - store { ptr, i64, i64 } %t175, ptr %a176 - %t177 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.6813, i64 20, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t181, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.6814, i64 62, i64 0 }, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t181, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - %t187 = extractvalue { ptr, i64, i64 } %t186, 1 - %t188 = trunc i64 %t187 to i32 - %t189 = extractvalue { ptr, i64, i64 } %t186, 0 - %t190 = icmp eq ptr %t189, null - %t191 = select i1 %t190, ptr @.str.6815, ptr %t189 - %t192 = call i32 (ptr, ...) @printf(ptr @.str.6816, i32 %t188, ptr %t191) - store { ptr, i64, i64 } %t186, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call i32 (ptr, ...) @printf(ptr @.str.6817) - br label %each.step10171 -each.step10171: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10169 -each.end10172: - store { ptr, i64, i64 } zeroinitializer, ptr %a197 - store { ptr, i64, i64 } zeroinitializer, ptr %a198 - %t199 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - store i64 0, ptr %a200 - br label %each.cond10173 -each.cond10173: - %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.body10174, label %each.end10176 -each.body10174: - %t205 = load ptr, ptr %t199 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i64 %t203 - %t207 = load { ptr, i64, i64 }, ptr %t206 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.6818, i64 0, i64 0 }, ptr %a209 - %t210 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a212 - %t213 = call i64 @finch_map_find(ptr %t210, ptr %a212, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t214 = icmp sge i64 %t213, 0 - br i1 %t214, label %then10177, label %endif10179 -then10177: - %t215 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t216 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t216, ptr %a217 - %t218 = call i64 @finch_map_find(ptr %t215, ptr %a217, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t219 = icmp slt i64 %t218, 0 - br i1 %t219, label %map.missing10180, label %map.found10181 -map.missing10180: - store { ptr, i64, i64 } zeroinitializer, ptr %a220 - store { ptr, i64, i64 } %t216, ptr %a221 - call void @finch_buf_str(ptr %a220, ptr %a221, i32 1) - call void @finch_map_missing(ptr @.str.6819, i64 131, ptr %a220) - unreachable -map.found10181: - %t222 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t215, i32 0, i32 0 - %t223 = load ptr, ptr %t222 - %t224 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t223, i64 %t218 - %t225 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t224, i32 0, i32 2 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %t225, i32 0, i32 1 - %t227 = load { ptr, i64, i64 }, ptr %t226 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_copy(ptr %a229, ptr %a228) - %t230 = load { ptr, i64, i64 }, ptr %a229 - %t231 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t230, ptr %a209 - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif10179 -endif10179: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %a209 - store i64 -1, ptr %a235 - %t236 = load i64, ptr %t233 - %t237 = load ptr, ptr %a197 - store i64 0, ptr %a238 - br label %find.cond10182 -find.cond10182: - %t239 = load i64, ptr %a238 - %t240 = icmp slt i64 %t239, %t236 - br i1 %t240, label %find.body10183, label %find.end10186 -find.body10183: - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t239 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - store { ptr, i64, i64 } %t234, ptr %a244 - %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) - %t246 = icmp ne i32 %t245, 0 - br i1 %t246, label %find.hit10184, label %find.next10185 -find.hit10184: - store i64 %t239, ptr %a235 - br label %find.end10186 -find.next10185: - %t247 = add i64 %t239, 1 - store i64 %t247, ptr %a238 - br label %find.cond10182 -find.end10186: - %t248 = load i64, ptr %a235 - store i64 %t248, ptr %a249 - %t250 = load i64, ptr %a249 - %t251 = icmp slt i64 %t250, 0 - br i1 %t251, label %then10187, label %endif10189 -then10187: - %t252 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t253 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = load i64, ptr %t252 - %t258 = add i64 %t257, 1 - call void @finch_arr_reserve(ptr %a197, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t259 = load ptr, ptr %a197 - %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 - store { ptr, i64, i64 } %t256, ptr %t260 - store i64 %t258, ptr %t252 - %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 - %t262 = load i64, ptr %t261 - %t263 = add i64 %t262, 1 - call void @finch_arr_reserve(ptr %a198, i64 %t263, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) - %t264 = load ptr, ptr %a198 - %t265 = getelementptr inbounds %S.linker.Names, ptr %t264, i64 %t262 - store %S.linker.Names zeroinitializer, ptr %t265 - store i64 %t263, ptr %t261 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = sub i64 %t267, 1 - store i64 %t268, ptr %a249 - br label %endif10189 -endif10189: - %t269 = load i64, ptr %a249 - %t270 = load { ptr, i64, i64 }, ptr %a198 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 %t269, %t271 - br i1 %t272, label %range10190, label %inrange10191 -range10190: - call void @finch_panic_index(ptr @.str.6820, i64 139, i64 %t269, i64 %t271) - unreachable -inrange10191: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i64 %t269 - %t275 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.linker.Names.add(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a209) - br label %each.step10175 -each.step10175: - %t276 = load i64, ptr %a200 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a200 - br label %each.cond10173 -each.end10176: - %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t279 = load i64, ptr %t278 - store i64 0, ptr %a280 - br label %for.cond10192 -for.cond10192: - %t281 = load i64, ptr %a280 - %t282 = icmp slt i64 %t281, %t279 - br i1 %t282, label %for.body10193, label %for.end10195 -for.body10193: - %t283 = load i64, ptr %a280 - %t284 = load { ptr, i64, i64 }, ptr %a198 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range10196, label %inrange10197 -range10196: - call void @finch_panic_index(ptr @.str.6821, i64 142, i64 %t283, i64 %t285) - unreachable -inrange10197: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds %S.linker.Names, ptr %t287, i64 %t283 - %t289 = getelementptr inbounds %S.linker.Names, ptr %t288, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch.copy.arr_str(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t293, ptr %a294 - store { ptr, i64, i64 } zeroinitializer, ptr %a295 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t297 = load i64, ptr %t296 - store i64 0, ptr %a298 - br label %for.cond10198 -for.cond10198: - %t299 = load i64, ptr %a298 - %t300 = icmp slt i64 %t299, %t297 - br i1 %t300, label %for.body10199, label %for.end10201 -for.body10199: - %t301 = load i64, ptr %a298 - %t302 = icmp slt i64 %t301, 3 - br i1 %t302, label %then10202, label %endif10204 -then10202: - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - %t304 = load i64, ptr %a298 - %t305 = load { ptr, i64, i64 }, ptr %a294 - %t306 = extractvalue { ptr, i64, i64 } %t305, 1 - %t307 = icmp uge i64 %t304, %t306 - br i1 %t307, label %range10205, label %inrange10206 -range10205: - call void @finch_panic_index(ptr @.str.6822, i64 146, i64 %t304, i64 %t306) - unreachable -inrange10206: - %t308 = extractvalue { ptr, i64, i64 } %t305, 0 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t304 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_copy(ptr %a312, ptr %a311) - %t313 = load { ptr, i64, i64 }, ptr %a312 - %t314 = load i64, ptr %t303 - %t315 = add i64 %t314, 1 - call void @finch_arr_reserve(ptr %a295, i64 %t315, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t316 = load ptr, ptr %a295 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 %t314 - store { ptr, i64, i64 } %t313, ptr %t317 - store i64 %t315, ptr %t303 - br label %endif10204 -endif10204: - br label %for.step10200 -for.step10200: - %t318 = load i64, ptr %a298 - %t319 = add i64 %t318, 1 - store i64 %t319, ptr %a298 - br label %for.cond10198 -for.end10201: - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6823, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a295, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t326 = load i64, ptr %t325 - %t327 = icmp sgt i64 %t326, 3 - br i1 %t327, label %then10207, label %endif10209 -then10207: - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6824, i64 5, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t334 = load i64, ptr %t333 - %t335 = sub i64 %t334, 3 - call void @finch_str_from_int(ptr %a336, i64 %t335) - %t337 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t332, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) - store { ptr, i64, i64 } %t332, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t337, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a338 - store { ptr, i64, i64 } %t343, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.6825, i64 5, i64 0 }, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - %t349 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t348, ptr %a324 - store { ptr, i64, i64 } %t349, ptr %a350 - call void @finch_str_drop(ptr %a350) - br label %endif10209 -endif10209: - %t351 = load i64, ptr %a280 - %t352 = load { ptr, i64, i64 }, ptr %a197 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range10210, label %inrange10211 -range10210: - call void @finch_panic_index(ptr @.str.6826, i64 153, i64 %t351, i64 %t353) - unreachable -inrange10211: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds { ptr, i64, i64 }, ptr %t355, i64 %t351 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %then10212, label %endif10214 -then10212: - %t360 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6827, i64 25, i64 0 }, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a361 - %t365 = extractvalue { ptr, i64, i64 } %t364, 1 - %t366 = trunc i64 %t365 to i32 - %t367 = extractvalue { ptr, i64, i64 } %t364, 0 - %t368 = icmp eq ptr %t367, null - %t369 = select i1 %t368, ptr @.str.6828, ptr %t367 - %t370 = call i32 (ptr, ...) @printf(ptr @.str.6829, i32 %t366, ptr %t369) - store { ptr, i64, i64 } %t364, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = call i32 (ptr, ...) @printf(ptr @.str.6830) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10194 -endif10214: - store { ptr, i64, i64 } { ptr @.str.6831, i64 4, i64 0 }, ptr %a373 - %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t375 = load i64, ptr %t374 - %t376 = icmp eq i64 %t375, 1 - br i1 %t376, label %then10215, label %endif10217 -then10215: - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.6832, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a378 - call void @finch_str_drop(ptr %a378) - br label %endif10217 -endif10217: - %t379 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6833, i64 7, i64 0 }, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - %t383 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t383, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.6834, i64 1, i64 0 }, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t383, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - %t389 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t388, ptr %a391 - store { ptr, i64, i64 } %t389, ptr %a392 - call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) - store { ptr, i64, i64 } %t388, ptr %a393 - call void @finch_str_drop(ptr %a393) - %t394 = load { ptr, i64, i64 }, ptr %a390 - store { ptr, i64, i64 } %t394, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.6835, i64 7, i64 0 }, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t394, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = load i64, ptr %a280 - %t401 = load { ptr, i64, i64 }, ptr %a197 - %t402 = extractvalue { ptr, i64, i64 } %t401, 1 - %t403 = icmp uge i64 %t400, %t402 - br i1 %t403, label %range10218, label %inrange10219 -range10218: - call void @finch_panic_index(ptr @.str.6836, i64 161, i64 %t400, i64 %t402) - unreachable -inrange10219: - %t404 = extractvalue { ptr, i64, i64 } %t401, 0 - %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i64 %t400 - %t406 = load { ptr, i64, i64 }, ptr %t405 - store { ptr, i64, i64 } %t399, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t399, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t411, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.6837, i64 31, i64 0 }, ptr %a414 - call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch_str_drop(ptr %a415) - %t416 = load { ptr, i64, i64 }, ptr %a412 - %t417 = extractvalue { ptr, i64, i64 } %t416, 1 - %t418 = trunc i64 %t417 to i32 - %t419 = extractvalue { ptr, i64, i64 } %t416, 0 - %t420 = icmp eq ptr %t419, null - %t421 = select i1 %t420, ptr @.str.6838, ptr %t419 - %t422 = call i32 (ptr, ...) @printf(ptr @.str.6839, i32 %t418, ptr %t421) - store { ptr, i64, i64 } %t416, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = call i32 (ptr, ...) @printf(ptr @.str.6840) - %t425 = extractvalue { ptr, i64, i64 } { ptr @.str.6841, i64 74, i64 0 }, 1 - %t426 = trunc i64 %t425 to i32 - %t427 = extractvalue { ptr, i64, i64 } { ptr @.str.6841, i64 74, i64 0 }, 0 - %t428 = icmp eq ptr %t427, null - %t429 = select i1 %t428, ptr @.str.6842, ptr %t427 - %t430 = call i32 (ptr, ...) @printf(ptr @.str.6843, i32 %t426, ptr %t429) - %t431 = call i32 (ptr, ...) @printf(ptr @.str.6844) - %t432 = extractvalue { ptr, i64, i64 } { ptr @.str.6845, i64 66, i64 0 }, 1 - %t433 = trunc i64 %t432 to i32 - %t434 = extractvalue { ptr, i64, i64 } { ptr @.str.6845, i64 66, i64 0 }, 0 - %t435 = icmp eq ptr %t434, null - %t436 = select i1 %t435, ptr @.str.6846, ptr %t434 - %t437 = call i32 (ptr, ...) @printf(ptr @.str.6847, i32 %t433, ptr %t436) - %t438 = call i32 (ptr, ...) @printf(ptr @.str.6848) - %t439 = extractvalue { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, 1 - %t440 = trunc i64 %t439 to i32 - %t441 = extractvalue { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, 0 - %t442 = icmp eq ptr %t441, null - %t443 = select i1 %t442, ptr @.str.6850, ptr %t441 - %t444 = call i32 (ptr, ...) @printf(ptr @.str.6851, i32 %t440, ptr %t443) - %t445 = call i32 (ptr, ...) @printf(ptr @.str.6852) - %t446 = load i64, ptr %a280 - %t447 = load { ptr, i64, i64 }, ptr %a197 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range10220, label %inrange10221 -range10220: - call void @finch_panic_index(ptr @.str.6854, i64 165, i64 %t446, i64 %t448) - unreachable -inrange10221: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds { ptr, i64, i64 }, ptr %t450, i64 %t446 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t452) - store { ptr, i64, i64 } { ptr @.str.6853, i64 12, i64 0 }, ptr %a455 - store { ptr, i64, i64 } %t453, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - store { ptr, i64, i64 } %t453, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a454 - store { ptr, i64, i64 } %t458, ptr %a460 - store { ptr, i64, i64 } { ptr @.str.6855, i64 1, i64 0 }, ptr %a461 - call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) - store { ptr, i64, i64 } %t458, ptr %a462 - call void @finch_str_drop(ptr %a462) - %t463 = load { ptr, i64, i64 }, ptr %a459 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = trunc i64 %t464 to i32 - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = icmp eq ptr %t466, null - %t468 = select i1 %t467, ptr @.str.6856, ptr %t466 - %t469 = call i32 (ptr, ...) @printf(ptr @.str.6857, i32 %t465, ptr %t468) - store { ptr, i64, i64 } %t463, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = call i32 (ptr, ...) @printf(ptr @.str.6858) - %t472 = extractvalue { ptr, i64, i64 } { ptr @.str.6859, i64 0, i64 0 }, 1 - %t473 = trunc i64 %t472 to i32 - %t474 = extractvalue { ptr, i64, i64 } { ptr @.str.6859, i64 0, i64 0 }, 0 - %t475 = icmp eq ptr %t474, null - %t476 = select i1 %t475, ptr @.str.6860, ptr %t474 - %t477 = call i32 (ptr, ...) @printf(ptr @.str.6861, i32 %t473, ptr %t476) - %t478 = call i32 (ptr, ...) @printf(ptr @.str.6862) - call void @finch_str_drop(ptr %a373) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10194 -for.step10194: - %t479 = load i64, ptr %a280 - %t480 = add i64 %t479, 1 - store i64 %t480, ptr %a280 - br label %for.cond10192 -for.end10195: - call void @finch.drop.arr_S_linker_Names(ptr %a198) - call void @finch.drop.arr_str(ptr %a197) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -} - -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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca i64, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - 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.failed10225, label %try.ok10226 -try.failed10225: - %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.ok10226: - store { ptr, i64, i64 } %t11, ptr %a13 - %t14 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t14, ptr %a15 - %t16 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.6863, 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) - store { ptr, i64, i64 } %t26, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.6864, i64 3, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - %t39 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t20, ptr %a42 - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t20, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t39, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.6865, i64 2, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = call i32 @finch_file_exists(ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then10227, label %endif10229 -then10227: - %t57 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t58 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t59 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t58, { ptr, i64, i64 } %t57, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t59 -endif10229: - %t60 = load { ptr, i64, i64 }, ptr %a15 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t60) - %t61 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6866, i64 5, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t65, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.6867, i64 6, i64 0 }, ptr %a76 - %t77 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then10230, label %endif10232 -then10230: - %t79 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.6868, i64 0, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10232 -endif10232: - %t81 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.6869, i64 4, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.6870, i64 4, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - %t92 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t91, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.6871, i64 4, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load { ptr, i64, i64 }, ptr %a1 - %t104 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a106 - store { ptr, i64, i64 } %t104, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.6872, i64 4, i64 0 }, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - %t116 = load { ptr, i64, i64 }, ptr %a75 - %t117 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t115, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t115, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.6873, i64 3, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a86 - %t130 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6874, i64 5, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call i64 @finch.host.run({ ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - store i64 %t142, ptr %a144 - %t145 = load i64, ptr %a144 - %t146 = icmp ne i64 %t145, 0 - br i1 %t146, label %then10233, label %endif10235 -then10233: - %t147 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } zeroinitializer, ptr %a149 - store { ptr, i64, i64 } zeroinitializer, ptr %a150 - %t151 = call i32 @finch_try_read_file(ptr %a149, ptr %a148, ptr %a150) - %t152 = icmp eq i32 %t151, 0 - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = load { ptr, i64, i64 }, ptr %a149 - br i1 %t152, label %or.failed10236, label %or.ok10237 -or.failed10236: - store { ptr, i64, i64 } %t153, ptr %a155 - call void @finch_str_drop(ptr %a155) - br label %or.bend10238 -or.bend10238: - br label %or.end10239 -or.ok10237: - br label %or.end10239 -or.end10239: - %t156 = phi { ptr, i64, i64 } [ { ptr @.str.6875, i64 0, i64 0 }, %or.bend10238 ], [ %t154, %or.ok10237 ] - store { ptr, i64, i64 } %t156, ptr %a157 - %t158 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.host.remove({ ptr, i64, i64 } %t158) - %t159 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t159) - %t160 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6876, i64 46, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t164, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.6877, i64 30, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch_str_drop(ptr %a157) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a52) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t176 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t175, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t176 -endif10235: - %t177 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t177) - %t178 = load { ptr, i64, i64 }, ptr %a75 - %t179 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.host.move({ ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) - %t180 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t181 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t182 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t181, { ptr, i64, i64 } %t180, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t182 -} - -define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) { -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = 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 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a204 = 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 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = 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 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a270 = 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 - %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 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = 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 - %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 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca i64, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = 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 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = 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 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %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 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a513 = 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 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca i64, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca i64, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a580 = 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.6878, i64 11, i64 0 }, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6879, 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 %then10240, label %endif10242 -then10240: - %t17 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.6880, i64 5, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %endif10242 -endif10242: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_copy(ptr %a21, ptr %a20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t25 = load i1, ptr %t24 - br i1 %t25, label %then10243, label %else10244 -then10243: - %t26 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7 - %t27 = load { ptr, i64, i64 }, ptr %t26 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - %t31 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t30, ptr %a23 - store { ptr, i64, i64 } %t31, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif10245 -else10244: - %t33 = extractvalue { ptr, i64, i64 } { ptr @.str.6881, i64 8, i64 0 }, 0 - %t34 = icmp eq ptr %t33, null - %t35 = select i1 %t34, ptr @.str.6882, ptr %t33 - %t36 = call ptr @getenv(ptr %t35) - store { ptr, i64, i64 } zeroinitializer, ptr %a37 - call void @finch_str_from_c(ptr %a37, ptr %t36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = extractvalue { ptr, i64, i64 } %t38, 1 - %t40 = icmp sgt i64 %t39, 0 - br i1 %t40, label %then10246, label %endif10248 -then10246: - %t41 = extractvalue { ptr, i64, i64 } { ptr @.str.6883, i64 8, i64 0 }, 0 - %t42 = icmp eq ptr %t41, null - %t43 = select i1 %t42, ptr @.str.6884, ptr %t41 - %t44 = call ptr @getenv(ptr %t43) - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - call void @finch_str_from_c(ptr %a45, ptr %t44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a23 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif10248 -endif10248: - br label %endif10245 -endif10245: - %t52 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = load %S.platform.Target, ptr %a2 - %t55 = load { ptr, i64, i64 }, ptr %a23 - %t56 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t53, %S.platform.Target %t54, { ptr, i64, i64 } %t55) - %t57 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 0 - %t58 = xor i1 %t57, true - %t59 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 2 - %t60 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 1 - br i1 %t58, label %or.failed10249, label %or.ok10250 -or.failed10249: - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = trunc i64 %t63 to i32 - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = icmp eq ptr %t65, null - %t67 = select i1 %t66, ptr @.str.6885, ptr %t65 - %t68 = call i32 (ptr, ...) @printf(ptr @.str.6886, i32 %t64, ptr %t67) - %t69 = call i32 (ptr, ...) @printf(ptr @.str.6887) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -or.ok10250: - store { ptr, i64, i64 } %t60, ptr %a70 - %t71 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6888, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t76, ptr %a77 - %t78 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.6889, i64 2, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a77 - %t86 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = call i32 @finch_write_file(ptr %a88, ptr %a89) - %t91 = icmp ne i32 %t90, 0 - store { ptr, i64, i64 } { ptr @.str.6890, i64 0, i64 0 }, ptr %a92 - %t93 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t94 = load i1, ptr %t93 - br label %logic.from10251 -logic.from10251: - br i1 %t94, label %logic.end10253, label %logic.rhs10252 -logic.rhs10252: - %t95 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t96 = load i1, ptr %t95 - br label %logic.rend10254 -logic.rend10254: - br label %logic.end10253 -logic.end10253: - %t97 = phi i1 [ true, %logic.from10251 ], [ %t96, %logic.rend10254 ] - br i1 %t97, label %then10255, label %endif10257 -then10255: - %t98 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } { ptr @.str.6891, i64 10, i64 0 }, 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 - %t104 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t103, ptr %a92 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - br label %endif10257 -endif10257: - %t106 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6892, i64 4, i64 0 }, 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 %a112 - %t113 = load { ptr, i64, i64 }, ptr %a13 - %t114 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.6893, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3 - %t125 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t123, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t123, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t130, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.6894, i64 7, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = load { ptr, i64, i64 }, ptr %a77 - %t144 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t142, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t142, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.6895, i64 4, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a84 - %t157 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t155, ptr %a161 - call void @finch_str_drop(ptr %a161) - store { ptr, i64, i64 } %t157, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a158 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.6896, i64 3, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = load { ptr, i64, i64 }, ptr %a112 - %t170 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t169) - store { ptr, i64, i64 } %t168, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t168, ptr %a174 - call void @finch_str_drop(ptr %a174) - store { ptr, i64, i64 } %t170, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.6897, i64 5, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call i64 @finch.host.run({ ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - store i64 %t182, ptr %a184 - %t185 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.host.remove({ ptr, i64, i64 } %t185) - %t186 = load i64, ptr %a184 - %t187 = icmp ne i64 %t186, 0 - br i1 %t187, label %then10258, label %endif10260 -then10258: - %t188 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t188, ptr %a189 - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - store { ptr, i64, i64 } zeroinitializer, ptr %a191 - %t192 = call i32 @finch_try_read_file(ptr %a190, ptr %a189, ptr %a191) - %t193 = icmp eq i32 %t192, 0 - %t194 = load { ptr, i64, i64 }, ptr %a191 - %t195 = load { ptr, i64, i64 }, ptr %a190 - br i1 %t193, label %or.failed10261, label %or.ok10262 -or.failed10261: - store { ptr, i64, i64 } %t194, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %or.bend10263 -or.bend10263: - br label %or.end10264 -or.ok10262: - br label %or.end10264 -or.end10264: - %t197 = phi { ptr, i64, i64 } [ { ptr @.str.6898, i64 0, i64 0 }, %or.bend10263 ], [ %t195, %or.ok10262 ] - %t198 = extractvalue { ptr, i64, i64 } %t197, 1 - %t199 = trunc i64 %t198 to i32 - %t200 = extractvalue { ptr, i64, i64 } %t197, 0 - %t201 = icmp eq ptr %t200, null - %t202 = select i1 %t201, ptr @.str.6899, ptr %t200 - %t203 = call i32 (ptr, ...) @printf(ptr @.str.6900, i32 %t199, ptr %t202) - store { ptr, i64, i64 } %t197, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = call i32 (ptr, ...) @printf(ptr @.str.6901) - %t206 = extractvalue { ptr, i64, i64 } { ptr @.str.6902, i64 46, i64 0 }, 1 - %t207 = trunc i64 %t206 to i32 - %t208 = extractvalue { ptr, i64, i64 } { ptr @.str.6902, i64 46, i64 0 }, 0 - %t209 = icmp eq ptr %t208, null - %t210 = select i1 %t209, ptr @.str.6903, ptr %t208 - %t211 = call i32 (ptr, ...) @printf(ptr @.str.6904, i32 %t207, ptr %t210) - %t212 = call i32 (ptr, ...) @printf(ptr @.str.6905) - %t213 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t213) - %t214 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t214) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10260: - %t215 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.6906, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a216 - %t220 = load { ptr, i64, i64 }, ptr %a84 - %t221 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t220) - store { ptr, i64, i64 } %t219, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t219, ptr %a225 - call void @finch_str_drop(ptr %a225) - store { ptr, i64, i64 } %t221, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.6907, i64 1, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load { ptr, i64, i64 }, ptr %a70 - %t234 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t232, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t232, ptr %a238 - call void @finch_str_drop(ptr %a238) - store { ptr, i64, i64 } %t234, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.6908, i64 4, i64 0 }, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t247 = load { ptr, i64, i64 }, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t245, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t245, ptr %a252 - call void @finch_str_drop(ptr %a252) - store { ptr, i64, i64 } %t248, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2 - %t257 = load i1, ptr %t256 - %t258 = xor i1 %t257, true - br i1 %t258, label %then10265, label %endif10267 -then10265: - %t259 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.6909, i64 4, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - %t264 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t263, ptr %a255 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch_str_drop(ptr %a265) - br label %endif10267 -endif10267: - %t266 = extractvalue { ptr, i64, i64 } { ptr @.str.6910, i64 13, i64 0 }, 0 - %t267 = icmp eq ptr %t266, null - %t268 = select i1 %t267, ptr @.str.6911, ptr %t266 - %t269 = call ptr @getenv(ptr %t268) - store { ptr, i64, i64 } zeroinitializer, ptr %a270 - call void @finch_str_from_c(ptr %a270, ptr %t269) - %t271 = load { ptr, i64, i64 }, ptr %a270 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp sgt i64 %t272, 0 - br i1 %t273, label %then10268, label %endif10270 -then10268: - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.6912, i64 1, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - %t279 = extractvalue { ptr, i64, i64 } { ptr @.str.6913, i64 13, i64 0 }, 0 - %t280 = icmp eq ptr %t279, null - %t281 = select i1 %t280, ptr @.str.6914, ptr %t279 - %t282 = call ptr @getenv(ptr %t281) - store { ptr, i64, i64 } zeroinitializer, ptr %a283 - call void @finch_str_from_c(ptr %a283, ptr %t282) - %t284 = load { ptr, i64, i64 }, ptr %a283 - store { ptr, i64, i64 } %t278, ptr %a286 - store { ptr, i64, i64 } %t284, ptr %a287 - call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) - store { ptr, i64, i64 } %t278, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a285 - %t290 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t289, ptr %a255 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif10270 -endif10270: - %t292 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 - %t293 = load i1, ptr %t292 - br i1 %t293, label %then10271, label %endif10273 -then10271: - %t294 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 - %t295 = load i1, ptr %t294 - br i1 %t295, label %then10274, label %else10275 -then10274: - %t296 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.6915, i64 12, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t300, ptr %a255 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif10276 -else10275: - %t303 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.6916, i64 8, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t307, ptr %a255 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10276 -endif10276: - br label %endif10273 -endif10273: - store { ptr, i64, i64 } zeroinitializer, ptr %a310 - %t311 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6 - store i64 0, ptr %a312 - br label %each.cond10277 -each.cond10277: - %t313 = getelementptr inbounds { ptr, i64, i64 }, ptr %t311, i32 0, i32 1 - %t314 = load i64, ptr %t313 - %t315 = load i64, ptr %a312 - %t316 = icmp slt i64 %t315, %t314 - br i1 %t316, label %each.body10278, label %each.end10280 -each.body10278: - %t317 = load ptr, ptr %t311 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i64 %t315 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - %t321 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.6918, i64 2, i64 0 }, ptr %a324 - %t325 = call i32 @finch_str_ends(ptr %a322, ptr %a324) - %t326 = icmp ne i32 %t325, 0 - br i1 %t326, label %then10281, label %else10282 -then10281: - %t327 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t328 = load { ptr, i64, i64 }, ptr %t327 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6919, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t334 = load i64, ptr %t333 - call void @finch_str_from_int(ptr %a335, i64 %t334) - %t336 = load { ptr, i64, i64 }, ptr %a335 - store { ptr, i64, i64 } %t332, ptr %a338 - store { ptr, i64, i64 } %t336, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t332, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t336, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load { ptr, i64, i64 }, ptr %a337 - store { ptr, i64, i64 } %t342, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6920, i64 2, i64 0 }, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - store { ptr, i64, i64 } %t342, ptr %a346 - call void @finch_str_drop(ptr %a346) - %t347 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t347, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.6921, i64 6, i64 0 }, ptr %a349 - %t350 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t351 = load i1, ptr %t350 - br i1 %t351, label %then10284, label %endif10286 -then10284: - %t352 = load { ptr, i64, i64 }, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.6922, i64 0, i64 0 }, ptr %a349 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - br label %endif10286 -endif10286: - %t354 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6923, i64 4, 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 %a349 - 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) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t364, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.6924, i64 4, i64 0 }, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - %t370 = load { ptr, i64, i64 }, ptr %a320 - %t371 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t369, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t369, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.6925, i64 4, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = load { ptr, i64, i64 }, ptr %a348 - %t384 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t383) - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - store { ptr, i64, i64 } %t384, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.6926, i64 3, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a112 - %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) - store { ptr, i64, i64 } %t395, ptr %a401 - call void @finch_str_drop(ptr %a401) - store { ptr, i64, i64 } %t397, ptr %a402 - call void @finch_str_drop(ptr %a402) - %t403 = load { ptr, i64, i64 }, ptr %a398 - store { ptr, i64, i64 } %t403, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.6927, i64 5, i64 0 }, ptr %a406 - call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406) - store { ptr, i64, i64 } %t403, ptr %a407 - call void @finch_str_drop(ptr %a407) - %t408 = load { ptr, i64, i64 }, ptr %a404 - %t409 = call i64 @finch.host.run({ ptr, i64, i64 } %t408) - store { ptr, i64, i64 } %t408, ptr %a410 - call void @finch_str_drop(ptr %a410) - store i64 %t409, ptr %a411 - %t412 = load i64, ptr %a411 - %t413 = icmp ne i64 %t412, 0 - br i1 %t413, label %then10287, label %endif10289 -then10287: - %t414 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t414, ptr %a415 - store { ptr, i64, i64 } zeroinitializer, ptr %a416 - store { ptr, i64, i64 } zeroinitializer, ptr %a417 - %t418 = call i32 @finch_try_read_file(ptr %a416, ptr %a415, ptr %a417) - %t419 = icmp eq i32 %t418, 0 - %t420 = load { ptr, i64, i64 }, ptr %a417 - %t421 = load { ptr, i64, i64 }, ptr %a416 - br i1 %t419, label %or.failed10290, label %or.ok10291 -or.failed10290: - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - br label %or.bend10292 -or.bend10292: - br label %or.end10293 -or.ok10291: - br label %or.end10293 -or.end10293: - %t423 = phi { ptr, i64, i64 } [ { ptr @.str.6928, i64 0, i64 0 }, %or.bend10292 ], [ %t421, %or.ok10291 ] - store { ptr, i64, i64 } %t423, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.6929, i64 24, i64 0 }, ptr %a426 - call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) - store { ptr, i64, i64 } %t423, ptr %a427 - call void @finch_str_drop(ptr %a427) - %t428 = load { ptr, i64, i64 }, ptr %a424 - %t429 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t428, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t428, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = extractvalue { ptr, i64, i64 } %t434, 1 - %t436 = trunc i64 %t435 to i32 - %t437 = extractvalue { ptr, i64, i64 } %t434, 0 - %t438 = icmp eq ptr %t437, null - %t439 = select i1 %t438, ptr @.str.6930, ptr %t437 - %t440 = call i32 (ptr, ...) @printf(ptr @.str.6931, i32 %t436, ptr %t439) - store { ptr, i64, i64 } %t434, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = call i32 (ptr, ...) @printf(ptr @.str.6932) - %t443 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t443) - %t444 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t444) - %t445 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.host.remove({ ptr, i64, i64 } %t445) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10289: - %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t447, ptr %a448 - call void @finch_str_copy(ptr %a449, ptr %a448) - %t450 = load { ptr, i64, i64 }, ptr %a449 - %t451 = load i64, ptr %t446 - %t452 = add i64 %t451, 1 - call void @finch_arr_reserve(ptr %a310, i64 %t452, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t453 = load ptr, ptr %a310 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t451 - store { ptr, i64, i64 } %t450, ptr %t454 - store i64 %t452, ptr %t446 - %t455 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.6933, i64 1, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - %t459 = load { ptr, i64, i64 }, ptr %a456 - %t460 = load { ptr, i64, i64 }, ptr %a348 - %t461 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t460) - store { ptr, i64, i64 } %t459, ptr %a463 - store { ptr, i64, i64 } %t461, ptr %a464 - call void @finch_str_concat(ptr %a462, ptr %a463, ptr %a464) - store { ptr, i64, i64 } %t459, ptr %a465 - call void @finch_str_drop(ptr %a465) - store { ptr, i64, i64 } %t461, ptr %a466 - call void @finch_str_drop(ptr %a466) - %t467 = load { ptr, i64, i64 }, ptr %a462 - %t468 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t467, ptr %a255 - store { ptr, i64, i64 } %t468, ptr %a469 - call void @finch_str_drop(ptr %a469) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - br label %endif10283 -else10282: - %t470 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.6935, i64 2, i64 0 }, ptr %a473 - %t474 = call i32 @finch_str_ends(ptr %a471, ptr %a473) - %t475 = icmp ne i32 %t474, 0 - br label %logic.from10294 -logic.from10294: - br i1 %t475, label %logic.end10296, label %logic.rhs10295 -logic.rhs10295: - %t476 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t476, ptr %a477 - store { ptr, i64, i64 } { ptr @.str.6937, i64 2, i64 0 }, ptr %a479 - %t480 = call i32 @finch_str_ends(ptr %a477, ptr %a479) - %t481 = icmp ne i32 %t480, 0 - br label %logic.rend10297 -logic.rend10297: - br label %logic.end10296 -logic.end10296: - %t482 = phi i1 [ true, %logic.from10294 ], [ %t481, %logic.rend10297 ] - br i1 %t482, label %then10298, label %else10299 -then10298: - %t483 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.6938, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - %t487 = load { ptr, i64, i64 }, ptr %a484 - %t488 = load { ptr, i64, i64 }, ptr %a320 - %t489 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t487, ptr %a491 - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_concat(ptr %a490, ptr %a491, ptr %a492) - store { ptr, i64, i64 } %t487, ptr %a493 - call void @finch_str_drop(ptr %a493) - store { ptr, i64, i64 } %t489, ptr %a494 - call void @finch_str_drop(ptr %a494) - %t495 = load { ptr, i64, i64 }, ptr %a490 - %t496 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t495, ptr %a255 - store { ptr, i64, i64 } %t496, ptr %a497 - call void @finch_str_drop(ptr %a497) - br label %endif10300 -else10299: - %t498 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t498, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.6939, i64 1, i64 0 }, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - %t502 = load { ptr, i64, i64 }, ptr %a499 - %t503 = load { ptr, i64, i64 }, ptr %a320 - %t504 = load %S.platform.Target, ptr %a2 - %t505 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t503, %S.platform.Target %t504) - store { ptr, i64, i64 } %t502, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t502, ptr %a509 - call void @finch_str_drop(ptr %a509) - store { ptr, i64, i64 } %t505, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a506 - %t512 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t511, ptr %a255 - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - br label %endif10300 -endif10300: - br label %endif10283 -endif10283: - br label %each.step10279 -each.step10279: - %t514 = load i64, ptr %a312 - %t515 = add i64 %t514, 1 - store i64 %t515, ptr %a312 - br label %each.cond10277 -each.end10280: - %t516 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t516, ptr %a518 - store { ptr, i64, i64 } { ptr @.str.6940, i64 3, 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, i64, i64 }, ptr %a112 - %t522 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t520, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.6941, i64 5, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - %t534 = call i64 @finch.host.run({ ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a535 - call void @finch_str_drop(ptr %a535) - store i64 %t534, ptr %a536 - %t537 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t537, ptr %a538 - store { ptr, i64, i64 } zeroinitializer, ptr %a539 - store { ptr, i64, i64 } zeroinitializer, ptr %a540 - %t541 = call i32 @finch_try_read_file(ptr %a539, ptr %a538, ptr %a540) - %t542 = icmp eq i32 %t541, 0 - %t543 = load { ptr, i64, i64 }, ptr %a540 - %t544 = load { ptr, i64, i64 }, ptr %a539 - br i1 %t542, label %or.failed10301, label %or.ok10302 -or.failed10301: - store { ptr, i64, i64 } %t543, ptr %a545 - call void @finch_str_drop(ptr %a545) - br label %or.bend10303 -or.bend10303: - br label %or.end10304 -or.ok10302: - br label %or.end10304 -or.end10304: - %t546 = phi { ptr, i64, i64 } [ { ptr @.str.6942, i64 0, i64 0 }, %or.bend10303 ], [ %t544, %or.ok10302 ] - store { ptr, i64, i64 } %t546, ptr %a547 - %t548 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t548) - %t549 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t549) - store i64 0, ptr %a550 - br label %each.cond10305 -each.cond10305: - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t552 = load i64, ptr %t551 - %t553 = load i64, ptr %a550 - %t554 = icmp slt i64 %t553, %t552 - br i1 %t554, label %each.body10306, label %each.end10308 -each.body10306: - %t555 = load ptr, ptr %a310 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t555, i64 %t553 - %t557 = load { ptr, i64, i64 }, ptr %t556 - store { ptr, i64, i64 } %t557, ptr %a558 - %t559 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.host.remove({ ptr, i64, i64 } %t559) - br label %each.step10307 -each.step10307: - %t560 = load i64, ptr %a550 - %t561 = add i64 %t560, 1 - store i64 %t561, ptr %a550 - br label %each.cond10305 -each.end10308: - %t562 = load i64, ptr %a536 - %t563 = icmp eq i64 %t562, 127 - br i1 %t563, label %then10309, label %endif10311 -then10309: - %t564 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.6943, i64 42, i64 0 }, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t568, ptr %a570 - store { ptr, i64, i64 } { ptr @.str.6944, i64 32, i64 0 }, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t568, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - %t574 = extractvalue { ptr, i64, i64 } %t573, 1 - %t575 = trunc i64 %t574 to i32 - %t576 = extractvalue { ptr, i64, i64 } %t573, 0 - %t577 = icmp eq ptr %t576, null - %t578 = select i1 %t577, ptr @.str.6945, ptr %t576 - %t579 = call i32 (ptr, ...) @printf(ptr @.str.6946, i32 %t575, ptr %t578) - store { ptr, i64, i64 } %t573, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = call i32 (ptr, ...) @printf(ptr @.str.6947) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10311: - %t582 = load i64, ptr %a536 - %t583 = icmp ne i64 %t582, 0 - br i1 %t583, label %then10312, label %endif10314 -then10312: - %t584 = load { ptr, i64, i64 }, ptr %a547 - %t585 = load %S.cimport.CImports, ptr %a3 - %t586 = load %S.platform.Target, ptr %a2 - %t587 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t584, %S.cimport.CImports %t585, %S.platform.Target %t586) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 %t587 -endif10314: - %t588 = getelementptr inbounds { ptr, i64, i64 }, ptr %a547, i32 0, i32 1 - %t589 = load i64, ptr %t588 - %t590 = icmp sgt i64 %t589, 0 - br i1 %t590, label %then10315, label %endif10317 -then10315: - %t591 = load { ptr, i64, i64 }, ptr %a547 - %t592 = extractvalue { ptr, i64, i64 } %t591, 1 - %t593 = trunc i64 %t592 to i32 - %t594 = extractvalue { ptr, i64, i64 } %t591, 0 - %t595 = icmp eq ptr %t594, null - %t596 = select i1 %t595, ptr @.str.6948, ptr %t594 - %t597 = call i32 (ptr, ...) @printf(ptr @.str.6949, i32 %t593, ptr %t596) - %t598 = call i32 (ptr, ...) @printf(ptr @.str.6950) - br label %endif10317 -endif10317: - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 0 -} - -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.from10318 -logic.from10318: - br i1 %t3, label %logic.rhs10319, label %logic.end10320 -logic.rhs10319: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend10321 -logic.rend10321: - br label %logic.end10320 -logic.end10320: - %t6 = phi i1 [ false, %logic.from10318 ], [ %t5, %logic.rend10321 ] - br i1 %t6, label %then10322, label %endif10324 -then10322: - %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 -endif10324: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from10325 -logic.from10325: - br i1 %t12, label %logic.rhs10326, label %logic.end10327 -logic.rhs10326: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend10328 -logic.rend10328: - br label %logic.end10327 -logic.end10327: - %t15 = phi i1 [ false, %logic.from10325 ], [ %t14, %logic.rend10328 ] - br i1 %t15, label %then10329, label %endif10331 -then10329: - %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 -endif10331: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from10332 -logic.from10332: - br i1 %t22, label %logic.rhs10333, label %logic.end10334 -logic.rhs10333: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend10335 -logic.rend10335: - br label %logic.end10334 -logic.end10334: - %t25 = phi i1 [ false, %logic.from10332 ], [ %t24, %logic.rend10335 ] - br i1 %t25, label %then10336, label %endif10338 -then10336: - %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 -endif10338: - ret i64 -1 -} - -define internal void @finch.drop.arr_u8(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6952, 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 %then10339, label %endif10341 -then10339: - %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.6953, i64 114) - %t18 = load { ptr, i64, i64 }, ptr %a15 - %t19 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %endif10341 -endif10341: - store { ptr, i64, i64 } zeroinitializer, ptr %a21 - store i64 0, ptr %a22 - br label %while.cond10342 -while.cond10342: - %t23 = load i64, ptr %a22 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = icmp slt i64 %t23, %t25 - br i1 %t26, label %while.body10343, label %while.end10344 -while.body10343: - %t27 = load i64, ptr %a22 - %t28 = load { ptr, i64, i64 }, ptr %a6 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 %t27, %t29 - br i1 %t30, label %range10345, label %inrange10346 -range10345: - call void @finch_panic_index(ptr @.str.6954, i64 119, i64 %t27, i64 %t29) - unreachable -inrange10346: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds i8, ptr %t31, i64 %t27 - %t33 = load i8, ptr %t32 - %t34 = icmp eq i8 %t33, 37 - br label %logic.from10347 -logic.from10347: - br i1 %t34, label %logic.rhs10348, label %logic.end10349 -logic.rhs10348: - %t35 = load i64, ptr %a22 - %t36 = add i64 %t35, 2 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 0 - %t40 = icmp slt i64 %t36, %t39 - br label %logic.rend10350 -logic.rend10350: - br label %logic.end10349 -logic.end10349: - %t41 = phi i1 [ false, %logic.from10347 ], [ %t40, %logic.rend10350 ] - br label %logic.from10351 -logic.from10351: - br i1 %t41, label %logic.rhs10352, label %logic.end10353 -logic.rhs10352: - %t42 = load i64, ptr %a22 - %t43 = add i64 %t42, 1 - %t44 = load { ptr, i64, i64 }, ptr %a6 - %t45 = extractvalue { ptr, i64, i64 } %t44, 1 - %t46 = icmp uge i64 %t43, %t45 - br i1 %t46, label %range10354, label %inrange10355 -range10354: - call void @finch_panic_index(ptr @.str.6955, i64 119, i64 %t43, i64 %t45) - unreachable -inrange10355: - %t47 = extractvalue { ptr, i64, i64 } %t44, 0 - %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 - %t49 = load i8, ptr %t48 - %t50 = call i64 @finch.lsp.hexval(i8 %t49) - %t51 = icmp sge i64 %t50, 0 - br label %logic.rend10356 -logic.rend10356: - br label %logic.end10353 -logic.end10353: - %t52 = phi i1 [ false, %logic.from10351 ], [ %t51, %logic.rend10356 ] - br label %logic.from10357 -logic.from10357: - br i1 %t52, label %logic.rhs10358, label %logic.end10359 -logic.rhs10358: - %t53 = load i64, ptr %a22 - %t54 = add i64 %t53, 2 - %t55 = load { ptr, i64, i64 }, ptr %a6 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range10360, label %inrange10361 -range10360: - call void @finch_panic_index(ptr @.str.6956, i64 119, i64 %t54, i64 %t56) - unreachable -inrange10361: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 - %t60 = load i8, ptr %t59 - %t61 = call i64 @finch.lsp.hexval(i8 %t60) - %t62 = icmp sge i64 %t61, 0 - br label %logic.rend10362 -logic.rend10362: - br label %logic.end10359 -logic.end10359: - %t63 = phi i1 [ false, %logic.from10357 ], [ %t62, %logic.rend10362 ] - br i1 %t63, label %then10363, label %else10364 -then10363: - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t65 = load i64, ptr %a22 - %t66 = add i64 %t65, 1 - %t67 = load { ptr, i64, i64 }, ptr %a6 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range10366, label %inrange10367 -range10366: - call void @finch_panic_index(ptr @.str.6957, i64 120, i64 %t66, i64 %t68) - unreachable -inrange10367: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds i8, ptr %t70, i64 %t66 - %t72 = load i8, ptr %t71 - %t73 = call i64 @finch.lsp.hexval(i8 %t72) - %t74 = mul i64 %t73, 16 - %t75 = load i64, ptr %a22 - %t76 = add i64 %t75, 2 - %t77 = load { ptr, i64, i64 }, ptr %a6 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range10368, label %inrange10369 -range10368: - call void @finch_panic_index(ptr @.str.6958, i64 120, i64 %t76, i64 %t78) - unreachable -inrange10369: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds i8, ptr %t80, i64 %t76 - %t82 = load i8, ptr %t81 - %t83 = call i64 @finch.lsp.hexval(i8 %t82) - %t84 = add i64 %t74, %t83 - %t85 = trunc i64 %t84 to i8 - %t86 = load i64, ptr %t64 - %t87 = add i64 %t86, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t87, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t88 = load ptr, ptr %a21 - %t89 = getelementptr inbounds i8, ptr %t88, i64 %t86 - store i8 %t85, ptr %t89 - store i64 %t87, ptr %t64 - %t90 = load i64, ptr %a22 - %t91 = add i64 %t90, 3 - store i64 %t91, ptr %a22 - br label %endif10365 -else10364: - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t93 = load i64, ptr %a22 - %t94 = load { ptr, i64, i64 }, ptr %a6 - %t95 = extractvalue { ptr, i64, i64 } %t94, 1 - %t96 = icmp uge i64 %t93, %t95 - br i1 %t96, label %range10370, label %inrange10371 -range10370: - call void @finch_panic_index(ptr @.str.6959, i64 123, i64 %t93, i64 %t95) - unreachable -inrange10371: - %t97 = extractvalue { ptr, i64, i64 } %t94, 0 - %t98 = getelementptr inbounds i8, ptr %t97, i64 %t93 - %t99 = load i8, ptr %t98 - %t100 = load i64, ptr %t92 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t101, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %a21 - %t103 = getelementptr inbounds i8, ptr %t102, i64 %t100 - store i8 %t99, ptr %t103 - store i64 %t101, ptr %t92 - %t104 = load i64, ptr %a22 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a22 - br label %endif10365 -endif10365: - br label %while.cond10342 -while.end10344: - %t106 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } zeroinitializer, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_from_bytes(ptr %a107, ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.drop.arr_u8(ptr %a21) - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t109 -} - -define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { -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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6960, 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.6961, 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.cond10372 -each.cond10372: - %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.body10373, label %each.end10375 -each.body10373: - %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.from10376 -logic.from10376: - br i1 %t23, label %logic.rhs10377, label %logic.end10378 -logic.rhs10377: - %t24 = load i8, ptr %a18 - %t25 = icmp ule i8 %t24, 122 - br label %logic.rend10379 -logic.rend10379: - br label %logic.end10378 -logic.end10378: - %t26 = phi i1 [ false, %logic.from10376 ], [ %t25, %logic.rend10379 ] - br label %logic.from10380 -logic.from10380: - br i1 %t26, label %logic.end10382, label %logic.rhs10381 -logic.rhs10381: - %t27 = load i8, ptr %a18 - %t28 = icmp uge i8 %t27, 65 - br label %logic.from10383 -logic.from10383: - br i1 %t28, label %logic.rhs10384, label %logic.end10385 -logic.rhs10384: - %t29 = load i8, ptr %a18 - %t30 = icmp ule i8 %t29, 90 - br label %logic.rend10386 -logic.rend10386: - br label %logic.end10385 -logic.end10385: - %t31 = phi i1 [ false, %logic.from10383 ], [ %t30, %logic.rend10386 ] - br label %logic.rend10387 -logic.rend10387: - br label %logic.end10382 -logic.end10382: - %t32 = phi i1 [ true, %logic.from10380 ], [ %t31, %logic.rend10387 ] - br label %logic.from10388 -logic.from10388: - br i1 %t32, label %logic.end10390, label %logic.rhs10389 -logic.rhs10389: - %t33 = load i8, ptr %a18 - %t34 = icmp uge i8 %t33, 48 - br label %logic.from10391 -logic.from10391: - br i1 %t34, label %logic.rhs10392, label %logic.end10393 -logic.rhs10392: - %t35 = load i8, ptr %a18 - %t36 = icmp ule i8 %t35, 57 - br label %logic.rend10394 -logic.rend10394: - br label %logic.end10393 -logic.end10393: - %t37 = phi i1 [ false, %logic.from10391 ], [ %t36, %logic.rend10394 ] - br label %logic.rend10395 -logic.rend10395: - br label %logic.end10390 -logic.end10390: - %t38 = phi i1 [ true, %logic.from10388 ], [ %t37, %logic.rend10395 ] - br label %logic.from10396 -logic.from10396: - br i1 %t38, label %logic.end10398, label %logic.rhs10397 -logic.rhs10397: - store { ptr, i64, i64 } { ptr @.str.6962, 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 - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend10399 -logic.rend10399: - br label %logic.end10398 -logic.end10398: - %t48 = phi i1 [ true, %logic.from10396 ], [ %t46, %logic.rend10399 ] - br i1 %t48, label %then10400, label %else10401 -then10400: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t50 = load i8, ptr %a18 - call void @finch_str_from_char(ptr %a51, i8 signext %t50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - %t53 = load i64, ptr %t49 - %t54 = add i64 %t53, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t55 = load ptr, ptr %a9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53 - store { ptr, i64, i64 } %t52, ptr %t56 - store i64 %t54, ptr %t49 - br label %endif10402 -else10401: - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t58 = load i64, ptr %a21 - %t59 = sdiv i64 %t58, 16 - %t60 = srem i64 %t59, 16 - %t61 = load { ptr, i64, i64 }, ptr %a2 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 %t60, %t62 - br i1 %t63, label %range10403, label %inrange10404 -range10403: - call void @finch_panic_index(ptr @.str.6965, i64 138, i64 %t60, i64 %t62) - unreachable -inrange10404: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 - %t66 = load i8, ptr %t65 - call void @finch_str_from_char(ptr %a67, i8 signext %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.6964, i64 1, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load i64, ptr %a21 - %t75 = srem i64 %t74, 16 - %t76 = load { ptr, i64, i64 }, ptr %a2 - %t77 = extractvalue { ptr, i64, i64 } %t76, 1 - %t78 = icmp uge i64 %t75, %t77 - br i1 %t78, label %range10405, label %inrange10406 -range10405: - call void @finch_panic_index(ptr @.str.6966, i64 138, i64 %t75, i64 %t77) - unreachable -inrange10406: - %t79 = extractvalue { ptr, i64, i64 } %t76, 0 - %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 - %t81 = load i8, ptr %t80 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t73, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t73, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - %t90 = load i64, ptr %t57 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t91, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %a9 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t90 - store { ptr, i64, i64 } %t89, ptr %t93 - store i64 %t91, ptr %t57 - br label %endif10402 -endif10402: - br label %each.step10374 -each.step10374: - %t94 = load i64, ptr %a10 - %t95 = add i64 %t94, 1 - store i64 %t95, ptr %a10 - br label %each.cond10372 -each.end10375: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6967, i64 0, i64 0 }, ptr %a97 - call void @finch_str_join(ptr %a98, ptr %a9, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.drop.arr_str(ptr %a9) - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t99 -} - -define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { -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.cond10407 -while.cond10407: - %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.body10408, label %while.end10409 -while.body10408: - %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 %range10410, label %inrange10411 -range10410: - call void @finch_panic_index(ptr @.str.6968, i64 149, i64 %t8, i64 %t10) - unreachable -inrange10411: - %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.from10412 -logic.from10412: - br i1 %t15, label %logic.rhs10413, label %logic.end10414 -logic.rhs10413: - %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.rend10415 -logic.rend10415: - br label %logic.end10414 -logic.end10414: - %t21 = phi i1 [ false, %logic.from10412 ], [ %t20, %logic.rend10415 ] - br i1 %t21, label %then10416, label %else10417 -then10416: - %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 %range10419, label %inrange10420 -range10419: - call void @finch_panic_index(ptr @.str.6969, i64 150, i64 %t23, i64 %t25) - unreachable -inrange10420: - %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 %then10421, label %else10422 -then10421: - %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.6970, i64 1, i64 0 }, ptr %t35 - store i64 %t33, ptr %t31 - br label %endif10423 -else10422: - %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 %range10424, label %inrange10425 -range10424: - call void @finch_panic_index(ptr @.str.6971, i64 153, i64 %t38, i64 %t40) - unreachable -inrange10425: - %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 %endif10423 -endif10423: - %t51 = load i64, ptr %a3 - %t52 = add i64 %t51, 2 - store i64 %t52, ptr %a3 - br label %endif10418 -else10417: - %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 %range10426, label %inrange10427 -range10426: - call void @finch_panic_index(ptr @.str.6972, i64 157, i64 %t54, i64 %t56) - unreachable -inrange10427: - %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 %endif10418 -endif10418: - br label %while.cond10407 -while.end10409: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6973, i64 0, i64 0 }, ptr %a70 - call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t72 -} - -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.6975, 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.from10428 -logic.from10428: - br i1 %t11, label %logic.rhs10429, label %logic.end10430 -logic.rhs10429: - %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.rend10431 -logic.rend10431: - br label %logic.end10430 -logic.end10430: - %t16 = phi i1 [ false, %logic.from10428 ], [ %t15, %logic.rend10431 ] - br i1 %t16, label %then10432, label %endif10434 -then10432: - %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 %range10435, label %inrange10436 -range10435: - call void @finch_panic_index(ptr @.str.6976, i64 167, i64 %t18, i64 %t20) - unreachable -inrange10436: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 - %t24 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t27 -endif10434: - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } { ptr @.str.6977, 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 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - br label %while.cond10437 -while.cond10437: - br label %while.body10438 -while.body10438: - %t2 = call i32 @getchar() - store i32 %t2, ptr %a3 - %t4 = load i32, ptr %a3 - %t5 = icmp slt i32 %t4, 0 - br i1 %t5, label %then10440, label %endif10442 -then10440: - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } { ptr @.str.6978, i64 0, i64 0 } -endif10442: - %t6 = load i32, ptr %a3 - %t7 = icmp eq i32 %t6, 10 - br i1 %t7, label %then10443, label %endif10445 -then10443: - br label %while.end10439 -endif10445: - %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.cond10437 -while.end10439: - %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.6980, 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 %then10446, label %endif10448 -then10446: - %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.6981, i64 188) - %t32 = load { ptr, i64, i64 }, ptr %a28 - %t33 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t32, ptr %a19 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif10448 -endif10448: - %t35 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } %t35 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { -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 { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a45 = alloca i32, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - store i64 0, ptr %a1 - br label %while.cond10449 -while.cond10449: - br label %while.body10450 -while.body10450: - %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 %then10452, label %endif10454 -then10452: - %t7 = load i64, ptr %a1 - %t8 = icmp sgt i64 %t7, 0 - br i1 %t8, label %then10455, label %endif10457 -then10455: - call void @finch_str_drop(ptr %a3) - br label %while.end10451 -endif10457: - %t9 = load ptr, ptr @stdin - %t10 = call i32 @feof(ptr %t9) - %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then10458, label %endif10460 -then10458: - call void @finch_str_drop(ptr %a3) - %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6982, i64 32, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 -endif10460: - call void @finch_str_drop(ptr %a3) - br label %while.cond10449 -endif10454: - %t13 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6984, 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 %then10461, label %endif10463 -then10461: - %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.6985, 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 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } zeroinitializer, ptr %a29 - store i64 0, ptr %a30 - store { ptr, i64, i64 } %t27, ptr %a31 - %t32 = call i32 @finch_str_try_int(ptr %a31, ptr %a30, ptr %a29) - %t33 = icmp eq i32 %t32, 0 - %t34 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load i64, ptr %a30 - br i1 %t33, label %or.failed10464, label %or.ok10465 -or.failed10464: - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %or.bend10466 -or.bend10466: - br label %or.end10467 -or.ok10465: - br label %or.end10467 -or.end10467: - %t38 = phi i64 [ 0, %or.bend10466 ], [ %t36, %or.ok10465 ] - store i64 %t38, ptr %a1 - br label %endif10463 -endif10463: - call void @finch_str_drop(ptr %a3) - br label %while.cond10449 -while.end10451: - store { ptr, i64, i64 } zeroinitializer, ptr %a39 - %t40 = load i64, ptr %a1 - store i64 0, ptr %a41 - br label %for.cond10468 -for.cond10468: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body10469, label %for.end10471 -for.body10469: - %t44 = call i32 @getchar() - store i32 %t44, ptr %a45 - %t46 = load i32, ptr %a45 - %t47 = icmp slt i32 %t46, 0 - br i1 %t47, label %then10472, label %endif10474 -then10472: - call void @finch.drop.arr_u8(ptr %a39) - %t48 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6987, i64 25, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t48 -endif10474: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a39, i32 0, i32 1 - %t50 = load i32, ptr %a45 - %t51 = trunc i32 %t50 to i8 - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a39, i64 %t53, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a39 - %t55 = getelementptr inbounds i8, ptr %t54, i64 %t52 - store i8 %t51, ptr %t55 - store i64 %t53, ptr %t49 - br label %for.step10470 -for.step10470: - %t56 = load i64, ptr %a41 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a41 - br label %for.cond10468 -for.end10471: - %t58 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } zeroinitializer, ptr %a59 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_from_bytes(ptr %a59, ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a59 - %t62 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t61) - %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 0 - %t64 = xor i1 %t63, true - %t65 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 2 - %t66 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 1 - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - br i1 %t64, label %try.failed10475, label %try.ok10476 -try.failed10475: - call void @finch.drop.arr_u8(ptr %a39) - %t68 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t65, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t68 -try.ok10476: - call void @finch.drop.arr_u8(ptr %a39) - %t69 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t70 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t69, %S.json.Json %t66, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t70 -} - -define internal void @finch.lsp.send(%S.json.Json %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = load %S.json.Json, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %t2) - 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.6988, i64 16, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6989, i64 4, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load { ptr, i64, i64 }, ptr %a19 - %t21 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t25, ptr %a26 - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = extractvalue { ptr, i64, i64 } %t27, 0 - %t29 = icmp eq ptr %t28, null - %t30 = select i1 %t29, ptr @.str.6990, ptr %t28 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 - %t32 = load i64, ptr %t31 - %t33 = load ptr, ptr @stdout - %t34 = call i64 @fwrite(ptr %t30, i64 1, i64 %t32, ptr %t33) - %t35 = load ptr, ptr @stdout - %t36 = call i32 @fflush(ptr %t35) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a19) - call void @finch_str_drop(ptr %a4) - ret void -} - -define internal void @finch.drop.arr_S_json_Json(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10477 -n.cond10477: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10478, label %n.end10479 -n.body10478: - %t7 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t5 - call void @finch.drop.S_json_Json(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10477 -n.end10479: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_json_Json(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_json_Json(ptr %t2) - %t3 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t3) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6992, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6991, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6993, i64 2, i64 0 }, %S.json.Json %t7) - %t8 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6994, i64 6, i64 0 }, %S.json.Json %t8) - %t9 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t9) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6996, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6995, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load { ptr, i64, i64 }, ptr %a1 - %t8 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t7) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6997, i64 6, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6998, i64 6, i64 0 }, %S.json.Json %t10) - %t11 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t11) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 %S.json.Json @finch.lsp.position(i64 %p0, i64 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a4 = alloca %S.json.Json, align 16 - %a7 = alloca %S.json.Json, align 16 - %a10 = alloca %S.json.Json, align 16 - 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.6999, i64 4, i64 0 }, %S.json.Json %t6) - store %S.json.Json %t6, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a7) - %t8 = load i64, ptr %a2 - %t9 = call %S.json.Json @finch.lsp.num(i64 %t8) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7000, i64 9, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t11 -} - -define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca i64, align 16 - %a5 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - 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.7001, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a1 - %t11 = load i64, ptr %a3 - %t12 = call %S.json.Json @finch.lsp.position(i64 %t10, i64 %t11) - call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.7002, i64 3, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = load %S.json.Json, ptr %a5 - ret %S.json.Json %t14 -} - -define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { -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.7004, 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.failed10480, label %or.ok10481 -or.failed10480: - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_drop(ptr %a10) - br label %or.bend10482 -or.bend10482: - br label %or.end10483 -or.ok10481: - br label %or.end10483 -or.end10483: - %t11 = phi i64 [ 0, %or.bend10482 ], [ %t9, %or.ok10481 ] - 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.7006, 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 %then10484, label %endif10486 -then10484: - ret %S.lsp.Diag zeroinitializer -endif10486: - %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.7007, 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.7008, 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.7010, 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 %then10487, label %endif10489 -then10487: - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag zeroinitializer -endif10489: - %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 %range10490, label %inrange10491 -range10490: - call void @finch_panic_index(ptr @.str.7011, i64 287, i64 %t37, i64 %t39) - unreachable -inrange10491: - %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 %range10492, label %inrange10493 -range10492: - call void @finch_panic_index(ptr @.str.7012, i64 288, i64 %t48, i64 %t50) - unreachable -inrange10493: - %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.cond10494 -for.cond10494: - %t62 = load i64, ptr %a61 - %t63 = icmp slt i64 %t62, %t60 - br i1 %t63, label %for.body10495, label %for.end10497 -for.body10495: - %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 %range10498, label %inrange10499 -range10498: - call void @finch_panic_index(ptr @.str.7013, i64 291, i64 %t65, i64 %t67) - unreachable -inrange10499: - %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.step10496 -for.step10496: - %t79 = load i64, ptr %a61 - %t80 = add i64 %t79, 1 - store i64 %t80, ptr %a61 - br label %for.cond10494 -for.end10497: - %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.7014, 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 - call void @finch.drop.arr_str(ptr %a57) - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag %t95 -} - -define internal void @finch.drop.S_lsp_Diag(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a536 = alloca %S.lsp.Diag, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis zeroinitializer, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7016, 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.cond10500 -each.cond10500: - %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.body10501, label %each.end10503 -each.body10501: - %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.7018, 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 %then10504, label %else10505 -then10504: - %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 %range10507, label %inrange10508 -range10507: - call void @finch_panic_index(ptr @.str.7019, i64 301, i64 0, i64 %t29) - unreachable -inrange10508: - %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.7020, 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.from10509 -logic.from10509: - br i1 %t42, label %logic.rhs10510, label %logic.end10511 -logic.rhs10510: - %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.rend10512 -logic.rend10512: - br label %logic.end10511 -logic.end10511: - %t46 = phi i1 [ false, %logic.from10509 ], [ %t45, %logic.rend10512 ] - br i1 %t46, label %then10513, label %else10514 -then10513: - %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 %range10516, label %inrange10517 -range10516: - call void @finch_panic_index(ptr @.str.7021, i64 303, i64 1, i64 %t50) - unreachable -inrange10517: - %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 %range10518, label %inrange10519 -range10518: - call void @finch_panic_index(ptr @.str.7022, i64 303, i64 2, i64 %t60) - unreachable -inrange10519: - %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 %range10520, label %inrange10521 -range10520: - call void @finch_panic_index(ptr @.str.7023, i64 303, i64 3, i64 %t68) - unreachable -inrange10521: - %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 %range10522, label %inrange10523 -range10522: - call void @finch_panic_index(ptr @.str.7024, i64 303, i64 4, i64 %t76) - unreachable -inrange10523: - %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 %range10524, label %inrange10525 -range10524: - call void @finch_panic_index(ptr @.str.7025, i64 303, i64 5, i64 %t84) - unreachable -inrange10525: - %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 %range10526, label %inrange10527 -range10526: - call void @finch_panic_index(ptr @.str.7026, i64 303, i64 6, i64 %t94) - unreachable -inrange10527: - %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 %range10528, label %inrange10529 -range10528: - call void @finch_panic_index(ptr @.str.7027, i64 303, i64 7, i64 %t102) - unreachable -inrange10529: - %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 %range10530, label %inrange10531 -range10530: - call void @finch_panic_index(ptr @.str.7028, i64 303, i64 8, i64 %t110) - unreachable -inrange10531: - %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 %endif10515 -else10514: - %t121 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.7029, 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.from10532 -logic.from10532: - br i1 %t125, label %logic.rhs10533, label %logic.end10534 -logic.rhs10533: - %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.rend10535 -logic.rend10535: - br label %logic.end10534 -logic.end10534: - %t129 = phi i1 [ false, %logic.from10532 ], [ %t128, %logic.rend10535 ] - br i1 %t129, label %then10536, label %else10537 -then10536: - %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 %range10539, label %inrange10540 -range10539: - call void @finch_panic_index(ptr @.str.7030, i64 305, i64 1, i64 %t133) - unreachable -inrange10540: - %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 %range10541, label %inrange10542 -range10541: - call void @finch_panic_index(ptr @.str.7031, i64 305, i64 2, i64 %t143) - unreachable -inrange10542: - %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 %range10543, label %inrange10544 -range10543: - call void @finch_panic_index(ptr @.str.7032, i64 305, i64 3, i64 %t153) - unreachable -inrange10544: - %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 %range10545, label %inrange10546 -range10545: - call void @finch_panic_index(ptr @.str.7033, i64 305, i64 4, i64 %t163) - unreachable -inrange10546: - %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 %range10547, label %inrange10548 -range10547: - call void @finch_panic_index(ptr @.str.7034, i64 305, i64 5, i64 %t171) - unreachable -inrange10548: - %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 %range10549, label %inrange10550 -range10549: - call void @finch_panic_index(ptr @.str.7035, i64 305, i64 6, i64 %t179) - unreachable -inrange10550: - %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 %range10551, label %inrange10552 -range10551: - call void @finch_panic_index(ptr @.str.7036, i64 305, i64 7, i64 %t189) - unreachable -inrange10552: - %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 %range10553, label %inrange10554 -range10553: - call void @finch_panic_index(ptr @.str.7037, i64 305, i64 8, i64 %t197) - unreachable -inrange10554: - %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 %endif10538 -else10537: - %t208 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.7038, 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.from10555 -logic.from10555: - br i1 %t212, label %logic.rhs10556, label %logic.end10557 -logic.rhs10556: - %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.rend10558 -logic.rend10558: - br label %logic.end10557 -logic.end10557: - %t216 = phi i1 [ false, %logic.from10555 ], [ %t215, %logic.rend10558 ] - br i1 %t216, label %then10559, label %else10560 -then10559: - %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 %range10562, label %inrange10563 -range10562: - call void @finch_panic_index(ptr @.str.7039, i64 307, i64 1, i64 %t220) - unreachable -inrange10563: - %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 %range10564, label %inrange10565 -range10564: - call void @finch_panic_index(ptr @.str.7040, i64 307, i64 2, i64 %t230) - unreachable -inrange10565: - %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 %range10566, label %inrange10567 -range10566: - call void @finch_panic_index(ptr @.str.7041, i64 307, i64 3, i64 %t240) - unreachable -inrange10567: - %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 %range10568, label %inrange10569 -range10568: - call void @finch_panic_index(ptr @.str.7042, i64 307, i64 4, i64 %t250) - unreachable -inrange10569: - %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 %range10570, label %inrange10571 -range10570: - call void @finch_panic_index(ptr @.str.7043, i64 307, i64 5, i64 %t260) - unreachable -inrange10571: - %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 %range10572, label %inrange10573 -range10572: - call void @finch_panic_index(ptr @.str.7044, i64 307, i64 6, i64 %t268) - unreachable -inrange10573: - %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 %range10574, label %inrange10575 -range10574: - call void @finch_panic_index(ptr @.str.7045, i64 307, i64 7, i64 %t276) - unreachable -inrange10575: - %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 %range10576, label %inrange10577 -range10576: - call void @finch_panic_index(ptr @.str.7046, i64 307, i64 8, i64 %t284) - unreachable -inrange10577: - %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 %range10578, label %inrange10579 -range10578: - call void @finch_panic_index(ptr @.str.7047, i64 307, i64 9, i64 %t292) - unreachable -inrange10579: - %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.7049, 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 %endif10561 -else10560: - %t307 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t307, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.7050, 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.from10580 -logic.from10580: - br i1 %t311, label %logic.rhs10581, label %logic.end10582 -logic.rhs10581: - %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.rend10583 -logic.rend10583: - br label %logic.end10582 -logic.end10582: - %t315 = phi i1 [ false, %logic.from10580 ], [ %t314, %logic.rend10583 ] - br i1 %t315, label %then10584, label %else10585 -then10584: - %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 %range10587, label %inrange10588 -range10587: - call void @finch_panic_index(ptr @.str.7051, i64 309, i64 1, i64 %t319) - unreachable -inrange10588: - %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 %range10589, label %inrange10590 -range10589: - call void @finch_panic_index(ptr @.str.7052, i64 309, i64 2, i64 %t329) - unreachable -inrange10590: - %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 %range10591, label %inrange10592 -range10591: - call void @finch_panic_index(ptr @.str.7053, i64 309, i64 3, i64 %t339) - unreachable -inrange10592: - %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 %range10593, label %inrange10594 -range10593: - call void @finch_panic_index(ptr @.str.7054, i64 309, i64 4, i64 %t349) - unreachable -inrange10594: - %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 %range10595, label %inrange10596 -range10595: - call void @finch_panic_index(ptr @.str.7055, i64 309, i64 5, i64 %t357) - unreachable -inrange10596: - %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 %endif10586 -else10585: - %t368 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t368, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.7056, 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.from10597 -logic.from10597: - br i1 %t372, label %logic.rhs10598, label %logic.end10599 -logic.rhs10598: - %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.rend10600 -logic.rend10600: - br label %logic.end10599 -logic.end10599: - %t376 = phi i1 [ false, %logic.from10597 ], [ %t375, %logic.rend10600 ] - br label %logic.from10601 -logic.from10601: - br i1 %t376, label %logic.rhs10602, label %logic.end10603 -logic.rhs10602: - %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.rend10604 -logic.rend10604: - br label %logic.end10603 -logic.end10603: - %t381 = phi i1 [ false, %logic.from10601 ], [ %t380, %logic.rend10604 ] - br i1 %t381, label %then10605, label %else10606 -then10605: - %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 %range10608, label %inrange10609 -range10608: - call void @finch_panic_index(ptr @.str.7057, i64 312, i64 %t388, i64 %t390) - unreachable -inrange10609: - %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 %range10610, label %inrange10611 -range10610: - call void @finch_panic_index(ptr @.str.7058, i64 312, i64 3, i64 %t397) - unreachable -inrange10611: - %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 %range10612, label %inrange10613 -range10612: - call void @finch_panic_index(ptr @.str.7059, i64 313, i64 %t410, i64 %t412) - unreachable -inrange10613: - %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 %range10614, label %inrange10615 -range10614: - call void @finch_panic_index(ptr @.str.7060, i64 313, i64 4, i64 %t419) - unreachable -inrange10615: - %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 %endif10607 -else10606: - %t431 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t431, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.7061, 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.from10616 -logic.from10616: - br i1 %t435, label %logic.rhs10617, label %logic.end10618 -logic.rhs10617: - %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.rend10619 -logic.rend10619: - br label %logic.end10618 -logic.end10618: - %t439 = phi i1 [ false, %logic.from10616 ], [ %t438, %logic.rend10619 ] - br i1 %t439, label %then10620, label %else10621 -then10620: - %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 %range10623, label %inrange10624 -range10623: - call void @finch_panic_index(ptr @.str.7062, i64 315, i64 1, i64 %t443) - unreachable -inrange10624: - %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 %range10625, label %inrange10626 -range10625: - call void @finch_panic_index(ptr @.str.7063, i64 315, i64 2, i64 %t453) - unreachable -inrange10626: - %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 %range10627, label %inrange10628 -range10627: - call void @finch_panic_index(ptr @.str.7064, i64 315, i64 3, i64 %t463) - unreachable -inrange10628: - %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 %range10629, label %inrange10630 -range10629: - call void @finch_panic_index(ptr @.str.7065, i64 315, i64 4, i64 %t473) - unreachable -inrange10630: - %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 %range10631, label %inrange10632 -range10631: - call void @finch_panic_index(ptr @.str.7066, i64 315, i64 5, i64 %t481) - unreachable -inrange10632: - %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 %range10633, label %inrange10634 -range10633: - call void @finch_panic_index(ptr @.str.7067, i64 315, i64 6, i64 %t489) - unreachable -inrange10634: - %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.7069, 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 %endif10622 -else10621: - %t504 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.7070, 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.from10635 -logic.from10635: - br i1 %t508, label %logic.rhs10636, label %logic.end10637 -logic.rhs10636: - %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.rend10638 -logic.rend10638: - br label %logic.end10637 -logic.end10637: - %t512 = phi i1 [ false, %logic.from10635 ], [ %t511, %logic.rend10638 ] - br i1 %t512, label %then10639, label %endif10641 -then10639: - %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 %range10642, label %inrange10643 -range10642: - call void @finch_panic_index(ptr @.str.7071, i64 317, i64 1, i64 %t516) - unreachable -inrange10643: - %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 %endif10641 -endif10641: - br label %endif10622 -endif10622: - br label %endif10607 -endif10607: - br label %endif10586 -endif10586: - br label %endif10561 -endif10561: - br label %endif10538 -endif10538: - br label %endif10515 -endif10515: - call void @finch_str_drop(ptr %a37) - call void @finch.drop.arr_str(ptr %a27) - br label %endif10506 -else10505: - %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 %then10644, label %endif10646 -then10644: - %t532 = load { ptr, i64, i64 }, ptr %a18 - %t533 = call %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %t532) - %t534 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t535 = load %S.lsp.Diag, ptr %t534 - store %S.lsp.Diag %t533, ptr %t534 - store %S.lsp.Diag %t535, ptr %a536 - call void @finch.drop.S_lsp_Diag(ptr %a536) - br label %endif10646 -endif10646: - br label %endif10506 -endif10506: - br label %each.step10502 -each.step10502: - %t537 = load i64, ptr %a10 - %t538 = add i64 %t537, 1 - store i64 %t538, ptr %a10 - br label %each.cond10500 -each.end10503: - call void @finch.drop.arr_str(ptr %a9) - %t539 = load %S.lsp.Analysis, ptr %a2 - ret %S.lsp.Analysis %t539 -} - -define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Ref, ptr %src - store %S.lsp.Ref %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 7 - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 7 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal void @finch.copy.arr_S_lsp_Ref(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond10667 -n.cond10667: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10668, label %n.end10669 -n.body10668: - %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.cond10667 -n.end10669: - 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.cond10670 -n.cond10670: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10671, label %n.end10672 -n.body10671: - %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.cond10670 -n.end10672: - 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.cond10673 -n.cond10673: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10674, label %n.end10675 -n.body10674: - %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.cond10673 -n.end10675: - 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.cond10676 -n.cond10676: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10677, label %n.end10678 -n.body10677: - %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.cond10676 -n.end10678: - 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.cond10679 -n.cond10679: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10680, label %n.end10681 -n.body10680: - %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.cond10679 -n.end10681: - ret void -} - -define internal void @finch.copy.S_lsp_Diag(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Diag, ptr %src - store %S.lsp.Diag %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 1 - %t3 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.copy.S_lsp_Analysis(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Analysis, ptr %src - store %S.lsp.Analysis %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_lsp_Ref(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_lsp_VarRec(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_S_lsp_FnRec(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_lsp_StructRec(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t12, ptr %t13) - %t14 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 6 - %t15 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 6 - call void @finch.copy.S_lsp_Diag(ptr %t14, ptr %t15) - ret void -} - -define internal void @finch.drop.S_lsp_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_lsp_Ref(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10682 -n.cond10682: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10683, label %n.end10684 -n.body10683: - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_Ref(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10682 -n.end10684: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_VarRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_VarRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10685 -n.cond10685: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10686, label %n.end10687 -n.body10686: - %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_VarRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10685 -n.end10687: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_FnRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal void @finch.drop.arr_S_lsp_FnRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10688 -n.cond10688: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10689, label %n.end10690 -n.body10689: - %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_FnRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10688 -n.end10690: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_StructRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.arr_S_lsp_StructRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10691 -n.cond10691: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10692, label %n.end10693 -n.body10692: - %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_StructRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10691 -n.end10693: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_EnumRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_EnumRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10694 -n.cond10694: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10695, label %n.end10696 -n.body10695: - %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_EnumRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10694 -n.end10696: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Analysis(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lsp_Ref(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_lsp_VarRec(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_S_lsp_FnRec(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_lsp_StructRec(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 6 - call void @finch.drop.S_lsp_Diag(ptr %t7) - ret void -} - -define internal void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca i64, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca i64, align 16 - %a14 = alloca i64, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca i64, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lsp.Analysis, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca i32, align 16 - %a188 = alloca %S.lsp.Analysis, align 16 - %a189 = alloca %S.lsp.Analysis, align 16 - %a192 = alloca %S.lsp.Analysis, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %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 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca i32, align 16 - %a272 = alloca %S.lsp.Analysis, align 16 - %a273 = alloca %S.lsp.Analysis, align 16 - %a276 = alloca %S.lsp.Analysis, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.7072, i64 0, i64 0 }, ptr %a4 - store i64 0, ptr %a5 - %t6 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %a7 - %t8 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t9 = load i64, ptr %t8 - call void @finch_arr_make(ptr %a7, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a7 - store i64 0, ptr %a11 - %t12 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 2 - %t13 = load i64, ptr %t12 - store i64 0, ptr %a14 - br label %n.cond10647 -n.cond10647: - %t15 = load i64, ptr %a14 - %t16 = icmp slt i64 %t15, %t13 - br i1 %t16, label %n.body10648, label %n.end10649 -n.body10648: - %t17 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 - %t18 = load ptr, ptr %t17 - %t19 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t18, i64 %t15 - %t20 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 0 - %t21 = load i64, ptr %t20 - %t22 = icmp ne i64 %t21, 0 - br i1 %t22, label %entry.live10650, label %entry.next10651 -entry.live10650: - %t23 = load i64, ptr %a11 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t23 - %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 1 - call void @finch_str_copy(ptr %t24, ptr %t25) - %t26 = add i64 %t23, 1 - store i64 %t26, ptr %a11 - br label %entry.next10651 -entry.next10651: - %t27 = load i64, ptr %a14 - %t28 = add i64 %t27, 1 - store i64 %t28, ptr %a14 - br label %n.cond10647 -n.end10649: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store i64 0, ptr %a31 - br label %each.cond10652 -each.cond10652: - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = load i64, ptr %a31 - %t35 = icmp slt i64 %t34, %t33 - br i1 %t35, label %each.body10653, label %each.end10655 -each.body10653: - %t36 = load ptr, ptr %a30 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i64 %t34 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.7073, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.7074, i64 4, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a60 - %t61 = load { ptr, i64, i64 }, ptr %a60 - %t62 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t63 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = call i64 @finch_map_find(ptr %t62, ptr %a64, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t66 = icmp slt i64 %t65, 0 - br i1 %t66, label %map.missing10656, label %map.found10657 -map.missing10656: - store { ptr, i64, i64 } zeroinitializer, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_buf_str(ptr %a67, ptr %a68, i32 1) - call void @finch_map_missing(ptr @.str.7075, i64 333, ptr %a67) - unreachable -map.found10657: - %t69 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t62, i32 0, i32 0 - %t70 = load ptr, ptr %t69 - %t71 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t70, i64 %t65 - %t72 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t71, i32 0, i32 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t61, ptr %a74 - store { ptr, i64, i64 } %t73, ptr %a75 - %t76 = call i32 @finch_write_file(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - %t78 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.7076, i64 11, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a79 - %t83 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.7077, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a84 - %t88 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t82, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t94, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - %t102 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t101, ptr %a4 - store { ptr, i64, i64 } %t102, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load i64, ptr %a5 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a5 - call void @finch_str_drop(ptr %a60) - br label %each.step10654 -each.step10654: - %t106 = load i64, ptr %a31 - %t107 = add i64 %t106, 1 - store i64 %t107, ptr %a31 - br label %each.cond10652 -each.end10655: - call void @finch.drop.arr_str(ptr %a30) - %t108 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.7078, i64 8, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t113, ptr %a114 - %t115 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.7079, i64 7, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a1 - %t124 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - %t131 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.7080, i64 3, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load { ptr, i64, i64 }, ptr %a114 - %t143 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t141, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t141, ptr %a147 - call void @finch_str_drop(ptr %a147) - store { ptr, i64, i64 } %t143, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.7081, i64 5, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call i64 @finch.host.run({ ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - store { ptr, i64, i64 } zeroinitializer, ptr %a160 - %t161 = call i32 @finch_try_read_file(ptr %a159, ptr %a158, ptr %a160) - %t162 = icmp eq i32 %t161, 0 - %t163 = load { ptr, i64, i64 }, ptr %a160 - %t164 = load { ptr, i64, i64 }, ptr %a159 - br i1 %t162, label %or.failed10658, label %or.ok10659 -or.failed10658: - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_drop(ptr %a165) - br label %or.bend10660 -or.bend10660: - br label %or.end10661 -or.ok10659: - br label %or.end10661 -or.end10661: - %t166 = phi { ptr, i64, i64 } [ { ptr @.str.7082, i64 0, i64 0 }, %or.bend10660 ], [ %t164, %or.ok10659 ] - %t167 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a168 - call void @finch_str_drop(ptr %a168) - store %S.lsp.Analysis %t167, ptr %a169 - %t170 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 6 - %t171 = getelementptr inbounds %S.lsp.Diag, ptr %t170, i32 0, i32 0 - %t172 = load i1, ptr %t171 - %t173 = xor i1 %t172, true - br i1 %t173, label %then10662, label %else10663 -then10662: - %t174 = load %S.lsp.Analysis, ptr %a169 - %t175 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t176 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t176, ptr %a177 - store i32 0, ptr %a178 - %t179 = call i64 @finch_map_slot(ptr %t175, ptr %a177, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a178) - %t180 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t175, i32 0, i32 0 - %t181 = load ptr, ptr %t180 - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t181, i64 %t179 - %t183 = load i32, ptr %a178 - %t184 = icmp ne i32 %t183, 0 - br i1 %t184, label %map.new10665, label %map.have10666 -map.new10665: - %t185 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 1 - call void @finch_str_copy(ptr %t185, ptr %a177) - %t186 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t186 - br label %map.have10666 -map.have10666: - %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis %t174, ptr %a188 - call void @finch.copy.S_lsp_Analysis(ptr %a189, ptr %a188) - %t190 = load %S.lsp.Analysis, ptr %a189 - %t191 = load %S.lsp.Analysis, ptr %t187 - store %S.lsp.Analysis %t190, ptr %t187 - store %S.lsp.Analysis %t191, ptr %a192 - call void @finch.drop.S_lsp_Analysis(ptr %a192) - br label %endif10664 -else10663: - %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 %then10697, label %endif10699 -then10697: - %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.missing10700, label %map.found10701 -map.missing10700: - 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.7083, i64 344, ptr %a203) - unreachable -map.found10701: - %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 %a169, i32 0, i32 2 - store { ptr, i64, i64 } %t215, ptr %a217 - call void @finch.copy.arr_S_lsp_FnRec(ptr %a218, ptr %a217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - %t220 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t219, ptr %t216 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch.drop.arr_S_lsp_FnRec(ptr %a221) - %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 3 - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch.copy.arr_S_lsp_StructRec(ptr %a226, ptr %a225) - %t227 = load { ptr, i64, i64 }, ptr %a226 - %t228 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t227, ptr %t224 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch.drop.arr_S_lsp_StructRec(ptr %a229) - %t230 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 - %t231 = load { ptr, i64, i64 }, ptr %t230 - %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 4 - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load { ptr, i64, i64 }, ptr %t232 - store { ptr, i64, i64 } %t235, ptr %t232 - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %a237) - %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t239, ptr %a241 - call void @finch.copy.arr_S_lsp_VarRec(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = load { ptr, i64, i64 }, ptr %t240 - store { ptr, i64, i64 } %t243, ptr %t240 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.drop.arr_S_lsp_VarRec(ptr %a245) - %t246 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1 - %t248 = load i64, ptr %t247 - %t249 = icmp eq i64 %t248, 0 - br i1 %t249, label %then10702, label %endif10704 -then10702: - %t250 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 - %t251 = load { ptr, i64, i64 }, ptr %t250 - %t252 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - store { ptr, i64, i64 } %t251, ptr %a253 - call void @finch.copy.arr_str(ptr %a254, ptr %a253) - %t255 = load { ptr, i64, i64 }, ptr %a254 - %t256 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t255, ptr %t252 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.drop.arr_str(ptr %a257) - br label %endif10704 -endif10704: - call void @finch.drop.S_lsp_Analysis(ptr %a213) - br label %endif10699 -endif10699: - br label %endif10664 -endif10664: - %t258 = load %S.lsp.Analysis, ptr %a169 - %t259 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t260 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t260, ptr %a261 - store i32 0, ptr %a262 - %t263 = call i64 @finch_map_slot(ptr %t259, ptr %a261, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a262) - %t264 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t259, i32 0, i32 0 - %t265 = load ptr, ptr %t264 - %t266 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t265, i64 %t263 - %t267 = load i32, ptr %a262 - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %map.new10705, label %map.have10706 -map.new10705: - %t269 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 1 - call void @finch_str_copy(ptr %t269, ptr %a261) - %t270 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t270 - br label %map.have10706 -map.have10706: - %t271 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis %t258, ptr %a272 - call void @finch.copy.S_lsp_Analysis(ptr %a273, ptr %a272) - %t274 = load %S.lsp.Analysis, ptr %a273 - %t275 = load %S.lsp.Analysis, ptr %t271 - store %S.lsp.Analysis %t274, ptr %t271 - store %S.lsp.Analysis %t275, ptr %a276 - call void @finch.drop.S_lsp_Analysis(ptr %a276) - %t277 = load { ptr, i64, i64 }, ptr %a1 - %t278 = load %S.lsp.Analysis, ptr %a169 - call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t277, %S.lsp.Analysis %t278) - call void @finch.drop.S_lsp_Analysis(ptr %a169) - call void @finch_str_drop(ptr %a114) - call void @finch_str_drop(ptr %a4) - ret void -} - -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 - %a98 = alloca %S.json.Json, align 16 - %a100 = alloca %S.json.Json, align 16 - %a102 = alloca %S.json.Json, align 16 - %a107 = alloca %S.json.Json, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.json.Json, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond10707 -each.cond10707: - %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.body10708, label %each.end10710 -each.body10708: - %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.cond10711 -find.cond10711: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body10712, label %find.end10715 -find.body10712: - %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.hit10713, label %find.next10714 -find.hit10713: - store i64 %t30, ptr %a26 - br label %find.end10715 -find.next10714: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond10711 -find.end10715: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - %t41 = xor i1 %t40, true - br i1 %t41, label %then10716, label %endif10718 -then10716: - %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 %endif10718 -endif10718: - br label %each.step10709 -each.step10709: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %each.cond10707 -each.end10710: - store { ptr, i64, i64 } zeroinitializer, ptr %a53 - store i64 0, ptr %a54 - br label %each.cond10719 -each.cond10719: - %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.body10720, label %each.end10722 -each.body10720: - %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.from10723 -logic.from10723: - br i1 %t67, label %logic.rhs10724, label %logic.end10725 -logic.rhs10724: - %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.rend10726 -logic.rend10726: - br label %logic.end10725 -logic.end10725: - %t76 = phi i1 [ false, %logic.from10723 ], [ %t75, %logic.rend10726 ] - br i1 %t76, label %then10727, label %endif10729 -then10727: - %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 %then10730, label %endif10732 -then10730: - store i64 0, ptr %a81 - br label %endif10732 -endif10732: - %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 %then10733, label %endif10735 -then10733: - store i64 0, ptr %a88 - br label %endif10735 -endif10735: - %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.7084, i64 5, i64 0 }, %S.json.Json %t97) - store %S.json.Json %t97, ptr %a98 - call void @finch.drop.S_json_Json(ptr %a98) - %t99 = call %S.json.Json @finch.lsp.num(i64 1) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7085, i64 8, i64 0 }, %S.json.Json %t99) - store %S.json.Json %t99, ptr %a100 - call void @finch.drop.S_json_Json(ptr %a100) - %t101 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7087, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7086, i64 6, i64 0 }, %S.json.Json %t101) - store %S.json.Json %t101, ptr %a102 - call void @finch.drop.S_json_Json(ptr %a102) - %t103 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t104 = getelementptr inbounds %S.lsp.Diag, ptr %t103, i32 0, i32 4 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t105) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7088, i64 7, i64 0 }, %S.json.Json %t106) - store %S.json.Json %t106, ptr %a107 - call void @finch.drop.S_json_Json(ptr %a107) - %t108 = load %S.json.Json, ptr %a92 - call void @finch.json.Json.push(ptr %a64, %S.json.Json %t108) - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = load i64, ptr %t109 - %t115 = add i64 %t114, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t115, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t116 = load ptr, ptr %a53 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i64 %t114 - store { ptr, i64, i64 } %t113, ptr %t117 - store i64 %t115, ptr %t109 - call void @finch.drop.S_json_Json(ptr %a92) - br label %endif10729 -endif10729: - %t118 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t118, ptr %a119 - %t120 = load { ptr, i64, i64 }, ptr %a62 - %t121 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t120) - %t122 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t121) - store { ptr, i64, i64 } %t121, ptr %a123 - call void @finch_str_drop(ptr %a123) - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7089, i64 3, i64 0 }, %S.json.Json %t122) - store %S.json.Json %t122, ptr %a124 - call void @finch.drop.S_json_Json(ptr %a124) - %t125 = load %S.json.Json, ptr %a64 - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7090, i64 11, i64 0 }, %S.json.Json %t125) - %t126 = load %S.json.Json, ptr %a119 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7091, i64 31, i64 0 }, %S.json.Json %t126) - call void @finch.drop.S_json_Json(ptr %a119) - call void @finch.drop.S_json_Json(ptr %a64) - br label %each.step10721 -each.step10721: - %t127 = load i64, ptr %a54 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a54 - br label %each.cond10719 -each.end10722: - %t129 = load { ptr, i64, i64 }, ptr %a53 - %t130 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch.copy.arr_str(ptr %a132, ptr %a131) - %t133 = load { ptr, i64, i64 }, ptr %a132 - %t134 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t133, ptr %t130 - store { ptr, i64, i64 } %t134, ptr %a135 - call void @finch.drop.arr_str(ptr %a135) - call void @finch.drop.arr_str(ptr %a53) - call void @finch.drop.arr_str(ptr %a13) - ret void -} - -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.cond10736 -for.cond10736: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body10737, label %for.end10739 -for.body10737: - %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 %range10740, label %inrange10741 -range10740: - call void @finch_panic_index(ptr @.str.7092, i64 397, i64 %t12, i64 %t14) - unreachable -inrange10741: - %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.from10742 -logic.from10742: - br i1 %t26, label %logic.rhs10743, label %logic.end10744 -logic.rhs10743: - %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.rend10745 -logic.rend10745: - br label %logic.end10744 -logic.end10744: - %t31 = phi i1 [ false, %logic.from10742 ], [ %t30, %logic.rend10745 ] - br label %logic.from10746 -logic.from10746: - br i1 %t31, label %logic.rhs10747, label %logic.end10748 -logic.rhs10747: - %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.rend10749 -logic.rend10749: - br label %logic.end10748 -logic.end10748: - %t39 = phi i1 [ false, %logic.from10746 ], [ %t38, %logic.rend10749 ] - br label %logic.from10750 -logic.from10750: - br i1 %t39, label %logic.rhs10751, label %logic.end10752 -logic.rhs10751: - %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.rend10753 -logic.rend10753: - br label %logic.end10752 -logic.end10752: - %t47 = phi i1 [ false, %logic.from10750 ], [ %t46, %logic.rend10753 ] - br i1 %t47, label %then10754, label %endif10756 -then10754: - %t48 = load i64, ptr %a8 - call void @finch.drop.S_lsp_Ref(ptr %a22) - ret i64 %t48 -endif10756: - call void @finch.drop.S_lsp_Ref(ptr %a22) - br label %for.step10738 -for.step10738: - %t49 = load i64, ptr %a8 - %t50 = add i64 %t49, 1 - store i64 %t50, ptr %a8 - br label %for.cond10736 -for.end10739: - 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 - %a17 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %then10757, label %endif10759 -then10757: - %t13 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t13 -endif10759: - %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.7094, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7093, i64 4, i64 0 }, %S.json.Json %t16) - store %S.json.Json %t16, ptr %a17 - call void @finch.drop.S_json_Json(ptr %a17) - %t18 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 - %t19 = load i64, ptr %a10 - %t20 = load { ptr, i64, i64 }, ptr %t18 - %t21 = extractvalue { ptr, i64, i64 } %t20, 1 - %t22 = icmp uge i64 %t19, %t21 - br i1 %t22, label %range10760, label %inrange10761 -range10760: - call void @finch_panic_index(ptr @.str.7096, i64 412, i64 %t19, i64 %t21) - unreachable -inrange10761: - %t23 = extractvalue { ptr, i64, i64 } %t20, 0 - %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i64 %t19 - %t25 = getelementptr inbounds %S.lsp.Ref, ptr %t24, i32 0, i32 7 - %t26 = load { ptr, i64, i64 }, ptr %t25 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7095, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t29, ptr %a30 - %t31 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a30, { ptr, i64, i64 } { ptr @.str.7097, i64 8, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.json.Json, align 16 - %a56 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - 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.from10762 -logic.from10762: - br i1 %t12, label %logic.end10764, label %logic.rhs10763 -logic.rhs10763: - %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 %range10765, label %inrange10766 -range10765: - call void @finch_panic_index(ptr @.str.7098, i64 420, i64 %t14, i64 %t16) - unreachable -inrange10766: - %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.rend10767 -logic.rend10767: - br label %logic.end10764 -logic.end10764: - %t24 = phi i1 [ true, %logic.from10762 ], [ %t23, %logic.rend10767 ] - br i1 %t24, label %then10768, label %endif10770 -then10768: - %t25 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t25 -endif10770: - %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 %range10771, label %inrange10772 -range10771: - call void @finch_panic_index(ptr @.str.7099, i64 423, i64 %t27, i64 %t29) - unreachable -inrange10772: - %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) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7100, i64 3, i64 0 }, %S.json.Json %t43) - store %S.json.Json %t43, ptr %a45 - call void @finch.drop.S_json_Json(ptr %a45) - %t46 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 - %t47 = load i64, ptr %t46 - %t48 = sub i64 %t47, 1 - %t49 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t50 = load i64, ptr %t49 - %t51 = sub i64 %t50, 1 - %t52 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t53 = load i64, ptr %t52 - %t54 = sub i64 %t53, 1 - %t55 = call %S.json.Json @finch.lsp.range(i64 %t48, i64 %t51, i64 %t54) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7101, i64 5, i64 0 }, %S.json.Json %t55) - store %S.json.Json %t55, ptr %a56 - call void @finch.drop.S_json_Json(ptr %a56) - %t57 = load %S.json.Json, ptr %a39 - call void @finch.drop.S_lsp_Ref(ptr %a37) - ret %S.json.Json %t57 -} - -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.json.Json, align 16 - %a61 = alloca i64, align 16 - %a69 = alloca %S.lsp.StructRec, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca %S.json.Json, align 16 - %a95 = alloca i64, align 16 - %a103 = alloca %S.lsp.EnumRec, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t3, ptr %a4 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a6 - br label %each.cond10773 -each.cond10773: - %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.body10774, label %each.end10776 -each.body10774: - %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 %then10777, label %endif10779 -then10777: - br label %each.step10775 -endif10779: - 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 %then10780, label %endif10782 -then10780: - 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.7102, 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) - store { ptr, i64, i64 } %t38, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t45, ptr %a28 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif10782 -endif10782: - %t48 = load { ptr, i64, i64 }, ptr %a28 - %t49 = load i64, ptr %a22 - %t50 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 - %t51 = load i64, ptr %t50 - %t52 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 - %t53 = load i64, ptr %t52 - %t54 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 - %t55 = load i64, ptr %t54 - %t56 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t48, i64 %t49, i64 %t51, i64 %t53, i64 %t55) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t56) - store %S.json.Json %t56, ptr %a57 - call void @finch.drop.S_json_Json(ptr %a57) - call void @finch_str_drop(ptr %a28) - br label %each.step10775 -each.step10775: - %t58 = load i64, ptr %a6 - %t59 = add i64 %t58, 1 - store i64 %t59, ptr %a6 - br label %each.cond10773 -each.end10776: - %t60 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a61 - br label %each.cond10783 -each.cond10783: - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - %t64 = load i64, ptr %a61 - %t65 = icmp slt i64 %t64, %t63 - br i1 %t65, label %each.body10784, label %each.end10786 -each.body10784: - %t66 = load ptr, ptr %t60 - %t67 = getelementptr inbounds %S.lsp.StructRec, ptr %t66, i64 %t64 - %t68 = load %S.lsp.StructRec, ptr %t67 - store %S.lsp.StructRec %t68, ptr %a69 - %t70 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 2 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) - %t76 = icmp ne i32 %t75, 0 - br i1 %t76, label %then10787, label %endif10789 -then10787: - %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t80 = load i64, ptr %t79 - %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 4 - %t82 = load i64, ptr %t81 - %t83 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t84 = load i64, ptr %t83 - %t85 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 5 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t84, %t87 - %t89 = add i64 %t88, 1 - %t90 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t78, i64 23, i64 %t80, i64 %t82, i64 %t89) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t90) - store %S.json.Json %t90, ptr %a91 - call void @finch.drop.S_json_Json(ptr %a91) - br label %endif10789 -endif10789: - br label %each.step10785 -each.step10785: - %t92 = load i64, ptr %a61 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a61 - br label %each.cond10783 -each.end10786: - %t94 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a95 - br label %each.cond10790 -each.cond10790: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = load i64, ptr %a95 - %t99 = icmp slt i64 %t98, %t97 - br i1 %t99, label %each.body10791, label %each.end10793 -each.body10791: - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.lsp.EnumRec, ptr %t100, i64 %t98 - %t102 = load %S.lsp.EnumRec, ptr %t101 - store %S.lsp.EnumRec %t102, ptr %a103 - %t104 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - br i1 %t110, label %then10794, label %endif10796 -then10794: - %t111 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - %t113 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t114 = load i64, ptr %t113 - %t115 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 4 - %t116 = load i64, ptr %t115 - %t117 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t118 = load i64, ptr %t117 - %t119 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load i64, ptr %t120 - %t122 = add i64 %t118, %t121 - %t123 = add i64 %t122, 1 - %t124 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t112, i64 10, i64 %t114, i64 %t116, i64 %t123) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t124) - store %S.json.Json %t124, ptr %a125 - call void @finch.drop.S_json_Json(ptr %a125) - br label %endif10796 -endif10796: - br label %each.step10792 -each.step10792: - %t126 = load i64, ptr %a95 - %t127 = add i64 %t126, 1 - store i64 %t127, ptr %a95 - br label %each.cond10790 -each.end10793: - %t128 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t128 -} - -define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { -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 - %a10 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - %a15 = alloca %S.json.Json, align 16 - %a19 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a31 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.7103, i64 4, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load i64, ptr %a2 - %t12 = call %S.json.Json @finch.lsp.num(i64 %t11) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7104, i64 4, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t14, ptr %a15 - %t16 = load i64, ptr %a3 - %t17 = sub i64 %t16, 1 - %t18 = call %S.json.Json @finch.lsp.position(i64 %t17, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7105, i64 5, i64 0 }, %S.json.Json %t18) - store %S.json.Json %t18, ptr %a19 - call void @finch.drop.S_json_Json(ptr %a19) - %t20 = load i64, ptr %a5 - %t21 = call %S.json.Json @finch.lsp.position(i64 %t20, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7106, i64 3, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7107, i64 5, i64 0 }, %S.json.Json %t23) - %t24 = load i64, ptr %a3 - %t25 = sub i64 %t24, 1 - %t26 = load i64, ptr %a4 - %t27 = sub i64 %t26, 1 - %t28 = load i64, ptr %a4 - %t29 = sub i64 %t28, 1 - %t30 = call %S.json.Json @finch.lsp.range(i64 %t25, i64 %t27, i64 %t29) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7108, i64 14, i64 0 }, %S.json.Json %t30) - store %S.json.Json %t30, ptr %a31 - call void @finch.drop.S_json_Json(ptr %a31) - %t32 = load %S.json.Json, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a9 = alloca %S.json.Json, align 16 - %a12 = alloca %S.json.Json, align 16 - %a18 = alloca %S.json.Json, align 16 - %a23 = alloca %S.json.Json, align 16 - %a25 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.7109, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a2 - %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7110, i64 4, i64 0 }, %S.json.Json %t11) - store %S.json.Json %t11, ptr %a12 - call void @finch.drop.S_json_Json(ptr %a12) - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp sgt i64 %t14, 0 - br i1 %t15, label %then10797, label %endif10799 -then10797: - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t16) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7111, i64 6, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - br label %endif10799 -endif10799: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t20 = load i64, ptr %t19 - %t21 = icmp sgt i64 %t20, 0 - br i1 %t21, label %then10800, label %endif10802 -then10800: - %t22 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t22, ptr %a23 - %t24 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7113, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7112, i64 4, i64 0 }, %S.json.Json %t24) - store %S.json.Json %t24, ptr %a25 - call void @finch.drop.S_json_Json(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a4 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7114, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = load %S.json.Json, ptr %a23 - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7115, i64 13, i64 0 }, %S.json.Json %t29) - call void @finch.drop.S_json_Json(ptr %a23) - br label %endif10802 -endif10802: - %t30 = load %S.json.Json, ptr %a6 - ret %S.json.Json %t30 -} - -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.from10803 -logic.from10803: - br i1 %t3, label %logic.rhs10804, label %logic.end10805 -logic.rhs10804: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend10806 -logic.rend10806: - br label %logic.end10805 -logic.end10805: - %t6 = phi i1 [ false, %logic.from10803 ], [ %t5, %logic.rend10806 ] - br label %logic.from10807 -logic.from10807: - br i1 %t6, label %logic.end10809, label %logic.rhs10808 -logic.rhs10808: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from10810 -logic.from10810: - br i1 %t8, label %logic.rhs10811, label %logic.end10812 -logic.rhs10811: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend10813 -logic.rend10813: - br label %logic.end10812 -logic.end10812: - %t11 = phi i1 [ false, %logic.from10810 ], [ %t10, %logic.rend10813 ] - br label %logic.rend10814 -logic.rend10814: - br label %logic.end10809 -logic.end10809: - %t12 = phi i1 [ true, %logic.from10807 ], [ %t11, %logic.rend10814 ] - br label %logic.from10815 -logic.from10815: - br i1 %t12, label %logic.end10817, label %logic.rhs10816 -logic.rhs10816: - %t13 = load i8, ptr %a1 - %t14 = icmp uge i8 %t13, 48 - br label %logic.from10818 -logic.from10818: - br i1 %t14, label %logic.rhs10819, label %logic.end10820 -logic.rhs10819: - %t15 = load i8, ptr %a1 - %t16 = icmp ule i8 %t15, 57 - br label %logic.rend10821 -logic.rend10821: - br label %logic.end10820 -logic.end10820: - %t17 = phi i1 [ false, %logic.from10818 ], [ %t16, %logic.rend10821 ] - br label %logic.rend10822 -logic.rend10822: - br label %logic.end10817 -logic.end10817: - %t18 = phi i1 [ true, %logic.from10815 ], [ %t17, %logic.rend10822 ] - br label %logic.from10823 -logic.from10823: - br i1 %t18, label %logic.end10825, label %logic.rhs10824 -logic.rhs10824: - %t19 = load i8, ptr %a1 - %t20 = icmp eq i8 %t19, 95 - br label %logic.rend10826 -logic.rend10826: - br label %logic.end10825 -logic.end10825: - %t21 = phi i1 [ true, %logic.from10823 ], [ %t20, %logic.rend10826 ] - 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 - %a30 = alloca %S.json.Json, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond10827 -each.cond10827: - %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.body10828, label %each.end10830 -each.body10828: - %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.7117, 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 %then10831, label %endif10833 -then10831: - store i64 5, ptr %a12 - br label %endif10833 -endif10833: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic10834, label %ok10835 -panic10834: - call void @finch_panic(ptr @.str.7118, i64 497, ptr @.str.7119) - unreachable -ok10835: - %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) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - br label %each.step10829 -each.step10829: - %t31 = load i64, ptr %a3 - %t32 = add i64 %t31, 1 - store i64 %t32, ptr %a3 - br label %each.cond10827 -each.end10830: - 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 - %a47 = alloca %S.lsp.VarRec, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.cond10836 -each.cond10836: - %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.body10837, label %each.end10839 -each.body10837: - %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.from10840 -logic.from10840: - br i1 %t22, label %logic.rhs10841, label %logic.end10842 -logic.rhs10841: - %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.rend10843 -logic.rend10843: - br label %logic.end10842 -logic.end10842: - %t27 = phi i1 [ false, %logic.from10840 ], [ %t26, %logic.rend10843 ] - br label %logic.from10844 -logic.from10844: - br i1 %t27, label %logic.rhs10845, label %logic.end10846 -logic.rhs10845: - %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.rend10847 -logic.rend10847: - br label %logic.end10846 -logic.end10846: - %t33 = phi i1 [ false, %logic.from10844 ], [ %t32, %logic.rend10847 ] - br label %logic.from10848 -logic.from10848: - br i1 %t33, label %logic.rhs10849, label %logic.end10850 -logic.rhs10849: - %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.rend10851 -logic.rend10851: - br label %logic.end10850 -logic.end10850: - %t41 = phi i1 [ false, %logic.from10848 ], [ %t40, %logic.rend10851 ] - br i1 %t41, label %then10852, label %endif10854 -then10852: - %t42 = load %S.lsp.VarRec, ptr %a15 - store %S.lsp.VarRec %t42, ptr %a43 - call void @finch.copy.S_lsp_VarRec(ptr %a44, ptr %a43) - %t45 = load %S.lsp.VarRec, ptr %a44 - %t46 = load %S.lsp.VarRec, ptr %a5 - store %S.lsp.VarRec %t45, ptr %a5 - store %S.lsp.VarRec %t46, ptr %a47 - call void @finch.drop.S_lsp_VarRec(ptr %a47) - br label %endif10854 -endif10854: - br label %each.step10838 -each.step10838: - %t48 = load i64, ptr %a7 - %t49 = add i64 %t48, 1 - store i64 %t49, ptr %a7 - br label %each.cond10836 -each.end10839: - %t50 = load %S.lsp.VarRec, ptr %a5 - ret %S.lsp.VarRec %t50 -} - -define internal void @finch.drop.S_lsp_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a125 = alloca i64, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i64, align 16 - %a146 = alloca %S.lsp.FnRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.json.Json, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca %S.lsp.StructRec, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca %S.json.Json, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca %S.lsp.EnumRec, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.json.Json, align 16 - %a230 = alloca i64, align 16 - %a238 = alloca %S.lsp.EnumRec, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.lsp.VarRec, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca %S.json.Json, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca %S.lsp.VarRec, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca i64, align 16 - %a387 = alloca %S.lsp.StructRec, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca i64, align 16 - %a418 = alloca %S.json.Json, align 16 - %a424 = alloca i64, align 16 - %a432 = alloca %S.lsp.FnRec, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.json.Json, align 16 - %a450 = alloca %S.lsp.Names, align 16 - %a452 = alloca i64, align 16 - %a460 = alloca %S.lsp.VarRec, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca %S.json.Json, align 16 - %a492 = alloca i64, align 16 - %a500 = alloca %S.lsp.FnRec, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca %S.json.Json, align 16 - %a525 = alloca i64, align 16 - %a533 = alloca %S.lsp.StructRec, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca %S.json.Json, align 16 - %a558 = alloca i64, align 16 - %a566 = alloca %S.lsp.EnumRec, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca %S.json.Json, align 16 - %a591 = alloca i64, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca %S.json.Json, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca i64, align 16 - %a617 = alloca %S.docs.Doc, align 16 - %a628 = alloca %S.json.Json, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca i64, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca %S.json.Json, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then10855, label %endif10857 -then10855: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 - %t20 = load i64, ptr %t19 - store i64 %t20, ptr %a14 - br label %endif10857 -endif10857: - %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.7120, 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.cond10858 -while.cond10858: - %t30 = load i64, ptr %a29 - %t31 = icmp sgt i64 %t30, 0 - br label %logic.from10861 -logic.from10861: - br i1 %t31, label %logic.rhs10862, label %logic.end10863 -logic.rhs10862: - %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 %range10864, label %inrange10865 -range10864: - call void @finch_panic_index(ptr @.str.7121, i64 522, i64 %t33, i64 %t35) - unreachable -inrange10865: - %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.rend10866 -logic.rend10866: - br label %logic.end10863 -logic.end10863: - %t41 = phi i1 [ false, %logic.from10861 ], [ %t40, %logic.rend10866 ] - br i1 %t41, label %while.body10859, label %while.end10860 -while.body10859: - %t42 = load i64, ptr %a29 - %t43 = sub i64 %t42, 1 - store i64 %t43, ptr %a29 - br label %while.cond10858 -while.end10860: - %t44 = load i64, ptr %a29 - %t45 = icmp sgt i64 %t44, 0 - br label %logic.from10867 -logic.from10867: - br i1 %t45, label %logic.rhs10868, label %logic.end10869 -logic.rhs10868: - %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 %range10870, label %inrange10871 -range10870: - call void @finch_panic_index(ptr @.str.7122, i64 525, i64 %t47, i64 %t49) - unreachable -inrange10871: - %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.rend10872 -logic.rend10872: - br label %logic.end10869 -logic.end10869: - %t55 = phi i1 [ false, %logic.from10867 ], [ %t54, %logic.rend10872 ] - store i1 %t55, ptr %a56 - %t57 = load i1, ptr %a56 - br i1 %t57, label %then10873, label %endif10875 -then10873: - %t58 = load i64, ptr %a29 - %t59 = sub i64 %t58, 1 - store i64 %t59, ptr %a60 - br label %while.cond10876 -while.cond10876: - %t61 = load i64, ptr %a60 - %t62 = icmp sgt i64 %t61, 0 - br label %logic.from10879 -logic.from10879: - br i1 %t62, label %logic.rhs10880, label %logic.end10881 -logic.rhs10880: - %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 %range10882, label %inrange10883 -range10882: - call void @finch_panic_index(ptr @.str.7123, i64 528, i64 %t64, i64 %t66) - unreachable -inrange10883: - %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.from10884 -logic.from10884: - br i1 %t71, label %logic.end10886, label %logic.rhs10885 -logic.rhs10885: - %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 %range10887, label %inrange10888 -range10887: - call void @finch_panic_index(ptr @.str.7124, i64 528, i64 %t73, i64 %t75) - unreachable -inrange10888: - %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.rend10889 -logic.rend10889: - br label %logic.end10886 -logic.end10886: - %t81 = phi i1 [ true, %logic.from10884 ], [ %t80, %logic.rend10889 ] - br label %logic.from10890 -logic.from10890: - br i1 %t81, label %logic.end10892, label %logic.rhs10891 -logic.rhs10891: - %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 %range10893, label %inrange10894 -range10893: - call void @finch_panic_index(ptr @.str.7125, i64 528, i64 %t83, i64 %t85) - unreachable -inrange10894: - %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.rend10895 -logic.rend10895: - br label %logic.end10892 -logic.end10892: - %t91 = phi i1 [ true, %logic.from10890 ], [ %t90, %logic.rend10895 ] - br label %logic.rend10896 -logic.rend10896: - br label %logic.end10881 -logic.end10881: - %t92 = phi i1 [ false, %logic.from10879 ], [ %t91, %logic.rend10896 ] - br i1 %t92, label %while.body10877, label %while.end10878 -while.body10877: - %t93 = load i64, ptr %a60 - %t94 = sub i64 %t93, 1 - store i64 %t94, ptr %a60 - br label %while.cond10876 -while.end10878: - %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.7126, 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.7128, 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 %then10897, label %endif10899 -then10897: - %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.7129, i64 535) - %t116 = load { ptr, i64, i64 }, ptr %a114 - %t117 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t116, ptr %a102 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - store i1 true, ptr %a103 - br label %endif10899 -endif10899: - %t119 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a102 - store i64 -1, ptr %a122 - %t123 = load i64, ptr %t120 - %t124 = load ptr, ptr %t119 - store i64 0, ptr %a125 - br label %find.cond10900 -find.cond10900: - %t126 = load i64, ptr %a125 - %t127 = icmp slt i64 %t126, %t123 - br i1 %t127, label %find.body10901, label %find.end10904 -find.body10901: - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 %t126 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } %t121, ptr %a131 - %t132 = call i32 @finch_str_eq(ptr %a130, ptr %a131) - %t133 = icmp ne i32 %t132, 0 - br i1 %t133, label %find.hit10902, label %find.next10903 -find.hit10902: - store i64 %t126, ptr %a122 - br label %find.end10904 -find.next10903: - %t134 = add i64 %t126, 1 - store i64 %t134, ptr %a125 - br label %find.cond10900 -find.end10904: - %t135 = load i64, ptr %a122 - %t136 = icmp sge i64 %t135, 0 - br i1 %t136, label %then10905, label %endif10907 -then10905: - %t137 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a138 - br label %each.cond10908 -each.cond10908: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t140 = load i64, ptr %t139 - %t141 = load i64, ptr %a138 - %t142 = icmp slt i64 %t141, %t140 - br i1 %t142, label %each.body10909, label %each.end10911 -each.body10909: - %t143 = load ptr, ptr %t137 - %t144 = getelementptr inbounds %S.lsp.FnRec, ptr %t143, i64 %t141 - %t145 = load %S.lsp.FnRec, ptr %t144 - store %S.lsp.FnRec %t145, ptr %a146 - %t147 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.from10912 -logic.from10912: - br i1 %t153, label %logic.rhs10913, label %logic.end10914 -logic.rhs10913: - %t154 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 2 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp eq i64 %t156, 0 - br label %logic.rend10915 -logic.rend10915: - br label %logic.end10914 -logic.end10914: - %t158 = phi i1 [ false, %logic.from10912 ], [ %t157, %logic.rend10915 ] - br i1 %t158, label %then10916, label %endif10918 -then10916: - %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 7 - %t162 = load { ptr, i64, i64 }, ptr %t161 - %t163 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t160, i64 3, { ptr, i64, i64 } %t162, { ptr, i64, i64 } { ptr @.str.7130, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t163) - store %S.json.Json %t163, ptr %a164 - call void @finch.drop.S_json_Json(ptr %a164) - br label %endif10918 -endif10918: - br label %each.step10910 -each.step10910: - %t165 = load i64, ptr %a138 - %t166 = add i64 %t165, 1 - store i64 %t166, ptr %a138 - br label %each.cond10908 -each.end10911: - %t167 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a168 - br label %each.cond10919 -each.cond10919: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10920, label %each.end10922 -each.body10920: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %t173, i64 %t171 - %t175 = load %S.lsp.StructRec, ptr %t174 - store %S.lsp.StructRec %t175, ptr %a176 - %t177 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } %t179, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then10923, label %endif10925 -then10923: - %t184 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - %t186 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } { ptr @.str.7131, i64 7, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a188 - %t192 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t185, i64 22, { ptr, i64, i64 } %t191, { ptr, i64, i64 } { ptr @.str.7132, i64 0, i64 0 }) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t192) - store %S.json.Json %t192, ptr %a194 - call void @finch.drop.S_json_Json(ptr %a194) - br label %endif10925 -endif10925: - br label %each.step10921 -each.step10921: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10919 -each.end10922: - %t197 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a198 - br label %each.cond10926 -each.cond10926: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = load i64, ptr %a198 - %t202 = icmp slt i64 %t201, %t200 - br i1 %t202, label %each.body10927, label %each.end10929 -each.body10927: - %t203 = load ptr, ptr %t197 - %t204 = getelementptr inbounds %S.lsp.EnumRec, ptr %t203, i64 %t201 - %t205 = load %S.lsp.EnumRec, ptr %t204 - store %S.lsp.EnumRec %t205, ptr %a206 - %t207 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } %t209, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br i1 %t213, label %then10930, label %endif10932 -then10930: - %t214 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t215 = load { ptr, i64, i64 }, ptr %t214 - %t216 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } { ptr @.str.7133, i64 5, i64 0 }, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a218 - %t222 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t215, i64 13, { ptr, i64, i64 } %t221, { ptr, i64, i64 } { ptr @.str.7134, i64 0, i64 0 }) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t222) - store %S.json.Json %t222, ptr %a224 - call void @finch.drop.S_json_Json(ptr %a224) - br label %endif10932 -endif10932: - br label %each.step10928 -each.step10928: - %t225 = load i64, ptr %a198 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a198 - br label %each.cond10926 -each.end10929: - %t227 = load %S.json.Json, ptr %a7 - %t228 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t227) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t228 -endif10907: - %t229 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a230 - br label %each.cond10933 -each.cond10933: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t232 = load i64, ptr %t231 - %t233 = load i64, ptr %a230 - %t234 = icmp slt i64 %t233, %t232 - br i1 %t234, label %each.body10934, label %each.end10936 -each.body10934: - %t235 = load ptr, ptr %t229 - %t236 = getelementptr inbounds %S.lsp.EnumRec, ptr %t235, i64 %t233 - %t237 = load %S.lsp.EnumRec, ptr %t236 - store %S.lsp.EnumRec %t237, ptr %a238 - %t239 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from10937 -logic.from10937: - br i1 %t245, label %logic.rhs10938, label %logic.end10939 -logic.rhs10938: - %t246 = load %S.lsp.Analysis, ptr %a1 - %t247 = load { ptr, i64, i64 }, ptr %a3 - %t248 = load { ptr, i64, i64 }, ptr %a102 - %t249 = load i64, ptr %a4 - %t250 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t246, { ptr, i64, i64 } %t247, { ptr, i64, i64 } %t248, i64 %t249) - %t251 = extractvalue %S.lsp.VarRec %t250, 0 - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - store %S.lsp.VarRec %t250, ptr %a255 - call void @finch.drop.S_lsp_VarRec(ptr %a255) - %t256 = extractvalue { ptr, i64, i64 } %t254, 1 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = icmp eq i64 %t256, 0 - br label %logic.rend10940 -logic.rend10940: - br label %logic.end10939 -logic.end10939: - %t259 = phi i1 [ false, %logic.from10937 ], [ %t258, %logic.rend10940 ] - br i1 %t259, label %then10941, label %endif10943 -then10941: - %t260 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 5 - store i64 0, ptr %a261 - br label %each.cond10944 -each.cond10944: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body10945, label %each.end10947 -each.body10945: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t264 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.7135, i64 1, i64 0 }, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - %t277 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t276, ptr %a279 - store { ptr, i64, i64 } %t277, ptr %a280 - call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a278 - %t283 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t270, i64 20, { ptr, i64, i64 } %t282, { ptr, i64, i64 } { ptr @.str.7136, i64 0, i64 0 }) - store { ptr, i64, i64 } %t282, ptr %a284 - call void @finch_str_drop(ptr %a284) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t283) - store %S.json.Json %t283, ptr %a285 - call void @finch.drop.S_json_Json(ptr %a285) - br label %each.step10946 -each.step10946: - %t286 = load i64, ptr %a261 - %t287 = add i64 %t286, 1 - store i64 %t287, ptr %a261 - br label %each.cond10944 -each.end10947: - %t288 = load %S.json.Json, ptr %a7 - %t289 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t288) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t289 -endif10943: - br label %each.step10935 -each.step10935: - %t290 = load i64, ptr %a230 - %t291 = add i64 %t290, 1 - store i64 %t291, ptr %a230 - br label %each.cond10933 -each.end10936: - %t292 = load %S.lsp.Analysis, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a3 - %t294 = load { ptr, i64, i64 }, ptr %a102 - %t295 = load i64, ptr %a4 - %t296 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t292, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294, i64 %t295) - %t297 = extractvalue %S.lsp.VarRec %t296, 1 - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_copy(ptr %a299, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store %S.lsp.VarRec %t296, ptr %a301 - call void @finch.drop.S_lsp_VarRec(ptr %a301) - store { ptr, i64, i64 } %t300, ptr %a302 - %t303 = load i1, ptr %a103 - br label %logic.from10948 -logic.from10948: - br i1 %t303, label %logic.rhs10949, label %logic.end10950 -logic.rhs10949: - %t304 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t304, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.7138, i64 2, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_starts(ptr %a305, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br label %logic.rend10951 -logic.rend10951: - br label %logic.end10950 -logic.end10950: - %t310 = phi i1 [ false, %logic.from10948 ], [ %t309, %logic.rend10951 ] - br i1 %t310, label %then10952, label %else10953 -then10952: - %t311 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t311, ptr %a312 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t315 = load i64, ptr %t314 - call void @finch_str_sub(ptr %a313, ptr %a312, i64 2, i64 %t315, ptr @.str.7139, i64 569) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t316, ptr %a302 - store { ptr, i64, i64 } %t317, ptr %a318 - call void @finch_str_drop(ptr %a318) - br label %endif10954 -else10953: - %t319 = load i1, ptr %a103 - br label %logic.from10955 -logic.from10955: - br i1 %t319, label %logic.rhs10956, label %logic.end10957 -logic.rhs10956: - %t320 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t320, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.7140, i64 3, i64 0 }, ptr %a322 - %t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322) - %t324 = icmp ne i32 %t323, 0 - br label %logic.rend10958 -logic.rend10958: - br label %logic.end10957 -logic.end10957: - %t325 = phi i1 [ false, %logic.from10955 ], [ %t324, %logic.rend10958 ] - br i1 %t325, label %then10959, label %endif10961 -then10959: - %t326 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.7141, i64 4, i64 0 }, ptr %a302 - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif10961 -endif10961: - br label %endif10954 -endif10954: - %t328 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t328, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.7143, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_starts(ptr %a329, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.from10962 -logic.from10962: - br i1 %t333, label %logic.rhs10963, label %logic.end10964 -logic.rhs10963: - %t334 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.7145, i64 1, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_ends(ptr %a335, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br label %logic.rend10965 -logic.rend10965: - br label %logic.end10964 -logic.end10964: - %t340 = phi i1 [ false, %logic.from10962 ], [ %t339, %logic.rend10965 ] - br i1 %t340, label %then10966, label %endif10968 -then10966: - %t341 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t341, ptr %a342 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = sub i64 %t345, 1 - call void @finch_str_sub(ptr %a343, ptr %a342, i64 4, i64 %t346, ptr @.str.7146, i64 574) - %t347 = load { ptr, i64, i64 }, ptr %a343 - %t348 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t347, ptr %a302 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_drop(ptr %a349) - br label %endif10968 -endif10968: - %t350 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t350, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.7148, i64 2, i64 0 }, ptr %a353 - %t354 = call i32 @finch_str_starts(ptr %a351, ptr %a353) - %t355 = icmp ne i32 %t354, 0 - br i1 %t355, label %then10969, label %else10970 -then10969: - %t356 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t356) - store { ptr, i64, i64 } %t356, ptr %a357 - call void @finch.drop.arr_S_docs_Doc(ptr %a357) - br label %endif10971 -else10970: - %t358 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.7149, i64 3, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then10972, label %else10973 -then10972: - %t363 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t363, ptr %a364 - call void @finch.drop.arr_S_docs_Doc(ptr %a364) - br label %endif10974 -else10973: - %t365 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t365, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.7151, i64 4, i64 0 }, ptr %a368 - %t369 = call i32 @finch_str_starts(ptr %a366, ptr %a368) - %t370 = icmp ne i32 %t369, 0 - br i1 %t370, label %then10975, label %else10976 -then10975: - %t371 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a372 - call void @finch.drop.arr_S_docs_Doc(ptr %a372) - br label %endif10977 -else10976: - %t373 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t373, ptr %a374 - call void @finch_str_copy(ptr %a375, ptr %a374) - %t376 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t376, ptr %a377 - %t378 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a379 - br label %each.cond10978 -each.cond10978: - %t380 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t381 = load i64, ptr %t380 - %t382 = load i64, ptr %a379 - %t383 = icmp slt i64 %t382, %t381 - br i1 %t383, label %each.body10979, label %each.end10981 -each.body10979: - %t384 = load ptr, ptr %t378 - %t385 = getelementptr inbounds %S.lsp.StructRec, ptr %t384, i64 %t382 - %t386 = load %S.lsp.StructRec, ptr %t385 - store %S.lsp.StructRec %t386, ptr %a387 - %t388 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 1 - %t389 = load { ptr, i64, i64 }, ptr %t388 - %t390 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t389, ptr %a391 - store { ptr, i64, i64 } %t390, ptr %a392 - %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) - %t394 = icmp ne i32 %t393, 0 - br i1 %t394, label %then10982, label %endif10984 -then10982: - %t395 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %t395, i32 0, i32 1 - %t397 = load i64, ptr %t396 - store i64 0, ptr %a398 - br label %for.cond10985 -for.cond10985: - %t399 = load i64, ptr %a398 - %t400 = icmp slt i64 %t399, %t397 - br i1 %t400, label %for.body10986, label %for.end10988 -for.body10986: - %t401 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t402 = load i64, ptr %a398 - %t403 = load { ptr, i64, i64 }, ptr %t401 - %t404 = extractvalue { ptr, i64, i64 } %t403, 1 - %t405 = icmp uge i64 %t402, %t404 - br i1 %t405, label %range10989, label %inrange10990 -range10989: - call void @finch_panic_index(ptr @.str.7152, i64 587, i64 %t402, i64 %t404) - unreachable -inrange10990: - %t406 = extractvalue { ptr, i64, i64 } %t403, 0 - %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t402 - %t408 = load { ptr, i64, i64 }, ptr %t407 - %t409 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 6 - %t410 = load i64, ptr %a398 - %t411 = load { ptr, i64, i64 }, ptr %t409 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 %t410, %t412 - br i1 %t413, label %range10991, label %inrange10992 -range10991: - call void @finch_panic_index(ptr @.str.7153, i64 587, i64 %t410, i64 %t412) - unreachable -inrange10992: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t410 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t408, i64 5, { ptr, i64, i64 } %t416, { ptr, i64, i64 } { ptr @.str.7154, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t417) - store %S.json.Json %t417, ptr %a418 - call void @finch.drop.S_json_Json(ptr %a418) - br label %for.step10987 -for.step10987: - %t419 = load i64, ptr %a398 - %t420 = add i64 %t419, 1 - store i64 %t420, ptr %a398 - br label %for.cond10985 -for.end10988: - br label %endif10984 -endif10984: - br label %each.step10980 -each.step10980: - %t421 = load i64, ptr %a379 - %t422 = add i64 %t421, 1 - store i64 %t422, ptr %a379 - br label %each.cond10978 -each.end10981: - %t423 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a424 - br label %each.cond10993 -each.cond10993: - %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t423, i32 0, i32 1 - %t426 = load i64, ptr %t425 - %t427 = load i64, ptr %a424 - %t428 = icmp slt i64 %t427, %t426 - br i1 %t428, label %each.body10994, label %each.end10996 -each.body10994: - %t429 = load ptr, ptr %t423 - %t430 = getelementptr inbounds %S.lsp.FnRec, ptr %t429, i64 %t427 - %t431 = load %S.lsp.FnRec, ptr %t430 - store %S.lsp.FnRec %t431, ptr %a432 - %t433 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 2 - %t434 = load { ptr, i64, i64 }, ptr %t433 - %t435 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t434, ptr %a436 - store { ptr, i64, i64 } %t435, ptr %a437 - %t438 = call i32 @finch_str_eq(ptr %a436, ptr %a437) - %t439 = icmp ne i32 %t438, 0 - br i1 %t439, label %then10997, label %endif10999 -then10997: - %t440 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 1 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 7 - %t443 = load { ptr, i64, i64 }, ptr %t442 - %t444 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t441, i64 2, { ptr, i64, i64 } %t443, { ptr, i64, i64 } { ptr @.str.7155, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t444) - store %S.json.Json %t444, ptr %a445 - call void @finch.drop.S_json_Json(ptr %a445) - br label %endif10999 -endif10999: - br label %each.step10995 -each.step10995: - %t446 = load i64, ptr %a424 - %t447 = add i64 %t446, 1 - store i64 %t447, ptr %a424 - br label %each.cond10993 -each.end10996: - call void @finch_str_drop(ptr %a377) - br label %endif10977 -endif10977: - br label %endif10974 -endif10974: - br label %endif10971 -endif10971: - %t448 = load %S.json.Json, ptr %a7 - %t449 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t448) - call void @finch_str_drop(ptr %a302) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t449 -endif10875: - store %S.lsp.Names zeroinitializer, ptr %a450 - %t451 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 - store i64 0, ptr %a452 - br label %each.cond11000 -each.cond11000: - %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t451, i32 0, i32 1 - %t454 = load i64, ptr %t453 - %t455 = load i64, ptr %a452 - %t456 = icmp slt i64 %t455, %t454 - br i1 %t456, label %each.body11001, label %each.end11003 -each.body11001: - %t457 = load ptr, ptr %t451 - %t458 = getelementptr inbounds %S.lsp.VarRec, ptr %t457, i64 %t455 - %t459 = load %S.lsp.VarRec, ptr %t458 - store %S.lsp.VarRec %t459, ptr %a460 - %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 3 - %t462 = load i64, ptr %t461 - %t463 = load i64, ptr %a4 - %t464 = icmp sle i64 %t462, %t463 - br label %logic.from11004 -logic.from11004: - br i1 %t464, label %logic.rhs11005, label %logic.end11006 -logic.rhs11005: - %t465 = load i64, ptr %a4 - %t466 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 7 - %t467 = load i64, ptr %t466 - %t468 = add i64 %t467, 1 - %t469 = icmp sle i64 %t465, %t468 - br label %logic.rend11007 -logic.rend11007: - br label %logic.end11006 -logic.end11006: - %t470 = phi i1 [ false, %logic.from11004 ], [ %t469, %logic.rend11007 ] - br label %logic.from11008 -logic.from11008: - br i1 %t470, label %logic.rhs11009, label %logic.end11010 -logic.rhs11009: - %t471 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 5 - %t472 = load { ptr, i64, i64 }, ptr %t471 - %t473 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t472, ptr %a474 - store { ptr, i64, i64 } %t473, ptr %a475 - %t476 = call i32 @finch_str_eq(ptr %a474, ptr %a475) - %t477 = icmp ne i32 %t476, 0 - br label %logic.rend11011 -logic.rend11011: - br label %logic.end11010 -logic.end11010: - %t478 = phi i1 [ false, %logic.from11008 ], [ %t477, %logic.rend11011 ] - br label %logic.from11012 -logic.from11012: - br i1 %t478, label %logic.rhs11013, label %logic.end11014 -logic.rhs11013: - %t479 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t480 = load { ptr, i64, i64 }, ptr %t479 - %t481 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t480) - br label %logic.rend11015 -logic.rend11015: - br label %logic.end11014 -logic.end11014: - %t482 = phi i1 [ false, %logic.from11012 ], [ %t481, %logic.rend11015 ] - br i1 %t482, label %then11016, label %endif11018 -then11016: - %t483 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - %t485 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 1 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t484, i64 6, { ptr, i64, i64 } %t486, { ptr, i64, i64 } { ptr @.str.7156, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t487) - store %S.json.Json %t487, ptr %a488 - call void @finch.drop.S_json_Json(ptr %a488) - br label %endif11018 -endif11018: - br label %each.step11002 -each.step11002: - %t489 = load i64, ptr %a452 - %t490 = add i64 %t489, 1 - store i64 %t490, ptr %a452 - br label %each.cond11000 -each.end11003: - %t491 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a492 - br label %each.cond11019 -each.cond11019: - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i32 0, i32 1 - %t494 = load i64, ptr %t493 - %t495 = load i64, ptr %a492 - %t496 = icmp slt i64 %t495, %t494 - br i1 %t496, label %each.body11020, label %each.end11022 -each.body11020: - %t497 = load ptr, ptr %t491 - %t498 = getelementptr inbounds %S.lsp.FnRec, ptr %t497, i64 %t495 - %t499 = load %S.lsp.FnRec, ptr %t498 - store %S.lsp.FnRec %t499, ptr %a500 - %t501 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 2 - %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 - %t503 = load i64, ptr %t502 - %t504 = icmp eq i64 %t503, 0 - br label %logic.from11023 -logic.from11023: - br i1 %t504, label %logic.rhs11024, label %logic.end11025 -logic.rhs11024: - %t505 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 0 - %t506 = load { ptr, i64, i64 }, ptr %t505 - store { ptr, i64, i64 } %t506, ptr %a507 - store { ptr, i64, i64 } { ptr @.str.7157, i64 0, i64 0 }, ptr %a508 - %t509 = call i32 @finch_str_eq(ptr %a507, ptr %a508) - %t510 = icmp ne i32 %t509, 0 - br label %logic.rend11026 -logic.rend11026: - br label %logic.end11025 -logic.end11025: - %t511 = phi i1 [ false, %logic.from11023 ], [ %t510, %logic.rend11026 ] - br label %logic.from11027 -logic.from11027: - br i1 %t511, label %logic.rhs11028, label %logic.end11029 -logic.rhs11028: - %t512 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t513 = load { ptr, i64, i64 }, ptr %t512 - %t514 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t513) - br label %logic.rend11030 -logic.rend11030: - br label %logic.end11029 -logic.end11029: - %t515 = phi i1 [ false, %logic.from11027 ], [ %t514, %logic.rend11030 ] - br i1 %t515, label %then11031, label %endif11033 -then11031: - %t516 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 7 - %t519 = load { ptr, i64, i64 }, ptr %t518 - %t520 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t517, i64 3, { ptr, i64, i64 } %t519, { ptr, i64, i64 } { ptr @.str.7158, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t520) - store %S.json.Json %t520, ptr %a521 - call void @finch.drop.S_json_Json(ptr %a521) - br label %endif11033 -endif11033: - br label %each.step11021 -each.step11021: - %t522 = load i64, ptr %a492 - %t523 = add i64 %t522, 1 - store i64 %t523, ptr %a492 - br label %each.cond11019 -each.end11022: - %t524 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a525 - br label %each.cond11034 -each.cond11034: - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 - %t527 = load i64, ptr %t526 - %t528 = load i64, ptr %a525 - %t529 = icmp slt i64 %t528, %t527 - br i1 %t529, label %each.body11035, label %each.end11037 -each.body11035: - %t530 = load ptr, ptr %t524 - %t531 = getelementptr inbounds %S.lsp.StructRec, ptr %t530, i64 %t528 - %t532 = load %S.lsp.StructRec, ptr %t531 - store %S.lsp.StructRec %t532, ptr %a533 - %t534 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - store { ptr, i64, i64 } %t535, ptr %a536 - store { ptr, i64, i64 } { ptr @.str.7159, i64 0, i64 0 }, ptr %a537 - %t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537) - %t539 = icmp ne i32 %t538, 0 - br label %logic.from11038 -logic.from11038: - br i1 %t539, label %logic.rhs11039, label %logic.end11040 -logic.rhs11039: - %t540 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t541 = load { ptr, i64, i64 }, ptr %t540 - %t542 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t541) - br label %logic.rend11041 -logic.rend11041: - br label %logic.end11040 -logic.end11040: - %t543 = phi i1 [ false, %logic.from11038 ], [ %t542, %logic.rend11041 ] - br i1 %t543, label %then11042, label %endif11044 -then11042: - %t544 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - %t546 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } { ptr @.str.7160, i64 7, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - %t552 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t545, i64 22, { ptr, i64, i64 } %t551, { ptr, i64, i64 } { ptr @.str.7161, i64 0, i64 0 }) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t552) - store %S.json.Json %t552, ptr %a554 - call void @finch.drop.S_json_Json(ptr %a554) - br label %endif11044 -endif11044: - br label %each.step11036 -each.step11036: - %t555 = load i64, ptr %a525 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a525 - br label %each.cond11034 -each.end11037: - %t557 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a558 - br label %each.cond11045 -each.cond11045: - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i32 0, i32 1 - %t560 = load i64, ptr %t559 - %t561 = load i64, ptr %a558 - %t562 = icmp slt i64 %t561, %t560 - br i1 %t562, label %each.body11046, label %each.end11048 -each.body11046: - %t563 = load ptr, ptr %t557 - %t564 = getelementptr inbounds %S.lsp.EnumRec, ptr %t563, i64 %t561 - %t565 = load %S.lsp.EnumRec, ptr %t564 - store %S.lsp.EnumRec %t565, ptr %a566 - %t567 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 0 - %t568 = load { ptr, i64, i64 }, ptr %t567 - store { ptr, i64, i64 } %t568, ptr %a569 - store { ptr, i64, i64 } { ptr @.str.7162, i64 0, i64 0 }, ptr %a570 - %t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570) - %t572 = icmp ne i32 %t571, 0 - br label %logic.from11049 -logic.from11049: - br i1 %t572, label %logic.rhs11050, label %logic.end11051 -logic.rhs11050: - %t573 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t574 = load { ptr, i64, i64 }, ptr %t573 - %t575 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t574) - br label %logic.rend11052 -logic.rend11052: - br label %logic.end11051 -logic.end11051: - %t576 = phi i1 [ false, %logic.from11049 ], [ %t575, %logic.rend11052 ] - br i1 %t576, label %then11053, label %endif11055 -then11053: - %t577 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t578 = load { ptr, i64, i64 }, ptr %t577 - %t579 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t580 = load { ptr, i64, i64 }, ptr %t579 - store { ptr, i64, i64 } { ptr @.str.7163, i64 5, i64 0 }, ptr %a582 - store { ptr, i64, i64 } %t580, ptr %a583 - call void @finch_str_concat(ptr %a581, ptr %a582, ptr %a583) - %t584 = load { ptr, i64, i64 }, ptr %a581 - %t585 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t578, i64 13, { ptr, i64, i64 } %t584, { ptr, i64, i64 } { ptr @.str.7164, i64 0, i64 0 }) - store { ptr, i64, i64 } %t584, ptr %a586 - call void @finch_str_drop(ptr %a586) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t585) - store %S.json.Json %t585, ptr %a587 - call void @finch.drop.S_json_Json(ptr %a587) - br label %endif11055 -endif11055: - br label %each.step11047 -each.step11047: - %t588 = load i64, ptr %a558 - %t589 = add i64 %t588, 1 - store i64 %t589, ptr %a558 - br label %each.cond11045 -each.end11048: - %t590 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - store i64 0, ptr %a591 - br label %each.cond11056 -each.cond11056: - %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i32 0, i32 1 - %t593 = load i64, ptr %t592 - %t594 = load i64, ptr %a591 - %t595 = icmp slt i64 %t594, %t593 - br i1 %t595, label %each.body11057, label %each.end11059 -each.body11057: - %t596 = load ptr, ptr %t590 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - %t598 = load { ptr, i64, i64 }, ptr %t597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t600) - br i1 %t601, label %then11060, label %endif11062 -then11060: - %t602 = load { ptr, i64, i64 }, ptr %a599 - %t603 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t602, i64 9, { ptr, i64, i64 } { ptr @.str.7165, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.7166, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t603) - store %S.json.Json %t603, ptr %a604 - call void @finch.drop.S_json_Json(ptr %a604) - br label %endif11062 -endif11062: - br label %each.step11058 -each.step11058: - %t605 = load i64, ptr %a591 - %t606 = add i64 %t605, 1 - store i64 %t606, ptr %a591 - br label %each.cond11056 -each.end11059: - %t607 = call { ptr, i64, i64 } @finch.docs.builtins() - store { ptr, i64, i64 } %t607, ptr %a608 - store i64 0, ptr %a609 - br label %each.cond11063 -each.cond11063: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a608, i32 0, i32 1 - %t611 = load i64, ptr %t610 - %t612 = load i64, ptr %a609 - %t613 = icmp slt i64 %t612, %t611 - br i1 %t613, label %each.body11064, label %each.end11066 -each.body11064: - %t614 = load ptr, ptr %a608 - %t615 = getelementptr inbounds %S.docs.Doc, ptr %t614, i64 %t612 - %t616 = load %S.docs.Doc, ptr %t615 - store %S.docs.Doc %t616, ptr %a617 - %t618 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - %t620 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t619) - br i1 %t620, label %then11067, label %endif11069 -then11067: - %t621 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t622 = load { ptr, i64, i64 }, ptr %t621 - %t623 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 1 - %t624 = load { ptr, i64, i64 }, ptr %t623 - %t625 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 2 - %t626 = load { ptr, i64, i64 }, ptr %t625 - %t627 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t622, i64 3, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t627) - store %S.json.Json %t627, ptr %a628 - call void @finch.drop.S_json_Json(ptr %a628) - br label %endif11069 -endif11069: - br label %each.step11065 -each.step11065: - %t629 = load i64, ptr %a609 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a609 - br label %each.cond11063 -each.end11066: - call void @finch.drop.arr_S_docs_Doc(ptr %a608) - %t631 = call { ptr, i64, i64 } @finch.docs.keywords() - store { ptr, i64, i64 } %t631, ptr %a632 - store i64 0, ptr %a633 - br label %each.cond11070 -each.cond11070: - %t634 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t635 = load i64, ptr %t634 - %t636 = load i64, ptr %a633 - %t637 = icmp slt i64 %t636, %t635 - br i1 %t637, label %each.body11071, label %each.end11073 -each.body11071: - %t638 = load ptr, ptr %a632 - %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t636 - %t640 = load { ptr, i64, i64 }, ptr %t639 - store { ptr, i64, i64 } %t640, ptr %a641 - %t642 = load { ptr, i64, i64 }, ptr %a641 - %t643 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t642) - br i1 %t643, label %then11074, label %endif11076 -then11074: - %t644 = load { ptr, i64, i64 }, ptr %a641 - %t645 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t644, i64 14, { ptr, i64, i64 } { ptr @.str.7167, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7168, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t645) - store %S.json.Json %t645, ptr %a646 - call void @finch.drop.S_json_Json(ptr %a646) - br label %endif11076 -endif11076: - br label %each.step11072 -each.step11072: - %t647 = load i64, ptr %a633 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a633 - br label %each.cond11070 -each.end11073: - call void @finch.drop.arr_str(ptr %a632) - %t649 = call { ptr, i64, i64 } @finch.docs.typeNames() - store { ptr, i64, i64 } %t649, ptr %a650 - store i64 0, ptr %a651 - br label %each.cond11077 -each.cond11077: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %a650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body11078, label %each.end11080 -each.body11078: - %t656 = load ptr, ptr %a650 - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %t656, i64 %t654 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t658, ptr %a659 - %t660 = load { ptr, i64, i64 }, ptr %a659 - %t661 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t660) - br i1 %t661, label %then11081, label %endif11083 -then11081: - %t662 = load { ptr, i64, i64 }, ptr %a659 - %t663 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t662, i64 25, { ptr, i64, i64 } { ptr @.str.7169, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7170, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t663) - store %S.json.Json %t663, ptr %a664 - call void @finch.drop.S_json_Json(ptr %a664) - br label %endif11083 -endif11083: - br label %each.step11079 -each.step11079: - %t665 = load i64, ptr %a651 - %t666 = add i64 %t665, 1 - store i64 %t666, ptr %a651 - br label %each.cond11077 -each.end11080: - call void @finch.drop.arr_str(ptr %a650) - %t667 = load %S.json.Json, ptr %a7 - %t668 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t667) - call void @finch.drop.S_lsp_Names(ptr %a450) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t668 -} - -define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.cond11084 -find.cond11084: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body11085, label %find.end11088 -find.body11085: - %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.hit11086, label %find.next11087 -find.hit11086: - store i64 %t9, ptr %a5 - br label %find.end11088 -find.next11087: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond11084 -find.end11088: - %t18 = load i64, ptr %a5 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then11089, label %endif11091 -then11089: - ret i1 false -endif11091: - %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 - %a5 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t2, ptr %a3 - %t4 = call %S.json.Json @finch.json.new_bool(i1 false) - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7171, i64 12, i64 0 }, %S.json.Json %t4) - store %S.json.Json %t4, ptr %a5 - call void @finch.drop.S_json_Json(ptr %a5) - %t6 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7172, i64 5, i64 0 }, %S.json.Json %t6) - %t7 = load %S.json.Json, ptr %a3 - ret %S.json.Json %t7 -} - -define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 %S.lsp.VarRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca i64, align 16 - %a188 = alloca %S.lsp.FnRec, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca %S.json.Json, align 16 - %a209 = alloca %S.json.Json, align 16 - %a211 = alloca %S.json.Json, align 16 - %a213 = alloca i64, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.json.Json, align 16 - %a229 = alloca %S.json.Json, align 16 - %a235 = alloca %S.json.Json, align 16 - %a238 = alloca %S.json.Json, align 16 - %a241 = alloca %S.json.Json, align 16 - %a244 = alloca %S.json.Json, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca %S.docs.Doc, align 16 - %a258 = alloca %S.json.Json, align 16 - %a262 = alloca %S.json.Json, align 16 - %a266 = alloca %S.json.Json, align 16 - %a268 = alloca %S.json.Json, align 16 - %a271 = alloca %S.json.Json, align 16 - %a274 = alloca %S.json.Json, align 16 - %a277 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then11092, label %endif11094 -then11092: - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t18 = load i64, ptr %t17 - store i64 %t18, ptr %a12 - br label %endif11094 -endif11094: - %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.7173, 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.cond11095 -while.cond11095: - %t32 = load i64, ptr %a31 - %t33 = icmp sge i64 %t32, 0 - br i1 %t33, label %while.body11096, label %while.end11097 -while.body11096: - %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 %range11098, label %inrange11099 -range11098: - call void @finch_panic_index(ptr @.str.7174, i64 678, i64 %t34, i64 %t36) - unreachable -inrange11099: - %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.from11100 -logic.from11100: - br i1 %t43, label %logic.end11102, label %logic.rhs11101 -logic.rhs11101: - %t44 = load i8, ptr %a41 - %t45 = icmp eq i8 %t44, 93 - br label %logic.rend11103 -logic.rend11103: - br label %logic.end11102 -logic.end11102: - %t46 = phi i1 [ true, %logic.from11100 ], [ %t45, %logic.rend11103 ] - br i1 %t46, label %then11104, label %else11105 -then11104: - %t47 = load i64, ptr %a25 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a25 - br label %endif11106 -else11105: - %t49 = load i8, ptr %a41 - %t50 = icmp eq i8 %t49, 40 - br label %logic.from11107 -logic.from11107: - br i1 %t50, label %logic.end11109, label %logic.rhs11108 -logic.rhs11108: - %t51 = load i8, ptr %a41 - %t52 = icmp eq i8 %t51, 91 - br label %logic.rend11110 -logic.rend11110: - br label %logic.end11109 -logic.end11109: - %t53 = phi i1 [ true, %logic.from11107 ], [ %t52, %logic.rend11110 ] - br i1 %t53, label %then11111, label %else11112 -then11111: - %t54 = load i64, ptr %a25 - %t55 = icmp eq i64 %t54, 0 - br i1 %t55, label %then11114, label %else11115 -then11114: - %t56 = load i8, ptr %a41 - %t57 = icmp eq i8 %t56, 40 - br i1 %t57, label %then11117, label %endif11119 -then11117: - %t58 = load i64, ptr %a31 - store i64 %t58, ptr %a27 - br label %while.end11097 -endif11119: - br label %endif11116 -else11115: - %t59 = load i64, ptr %a25 - %t60 = sub i64 %t59, 1 - store i64 %t60, ptr %a25 - br label %endif11116 -endif11116: - br label %endif11113 -else11112: - %t61 = load i8, ptr %a41 - %t62 = icmp eq i8 %t61, 44 - br label %logic.from11120 -logic.from11120: - br i1 %t62, label %logic.rhs11121, label %logic.end11122 -logic.rhs11121: - %t63 = load i64, ptr %a25 - %t64 = icmp eq i64 %t63, 0 - br label %logic.rend11123 -logic.rend11123: - br label %logic.end11122 -logic.end11122: - %t65 = phi i1 [ false, %logic.from11120 ], [ %t64, %logic.rend11123 ] - br i1 %t65, label %then11124, label %endif11126 -then11124: - %t66 = load i64, ptr %a26 - %t67 = add i64 %t66, 1 - store i64 %t67, ptr %a26 - br label %endif11126 -endif11126: - br label %endif11113 -endif11113: - br label %endif11106 -endif11106: - %t68 = load i64, ptr %a31 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %a31 - br label %while.cond11095 -while.end11097: - %t70 = load i64, ptr %a27 - %t71 = icmp slt i64 %t70, 0 - br i1 %t71, label %then11127, label %endif11129 -then11127: - %t72 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t72 -endif11129: - %t73 = load i64, ptr %a27 - store i64 %t73, ptr %a74 - %t75 = load i64, ptr %a74 - store i64 %t75, ptr %a76 - br label %while.cond11130 -while.cond11130: - %t77 = load i64, ptr %a76 - %t78 = icmp sgt i64 %t77, 0 - br label %logic.from11133 -logic.from11133: - br i1 %t78, label %logic.rhs11134, label %logic.end11135 -logic.rhs11134: - %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 %range11136, label %inrange11137 -range11136: - call void @finch_panic_index(ptr @.str.7175, i64 700, i64 %t80, i64 %t82) - unreachable -inrange11137: - %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.rend11138 -logic.rend11138: - br label %logic.end11135 -logic.end11135: - %t88 = phi i1 [ false, %logic.from11133 ], [ %t87, %logic.rend11138 ] - br i1 %t88, label %while.body11131, label %while.end11132 -while.body11131: - %t89 = load i64, ptr %a76 - %t90 = sub i64 %t89, 1 - store i64 %t90, ptr %a76 - br label %while.cond11130 -while.end11132: - %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.7176, 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 %then11139, label %endif11141 -then11139: - %t101 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t101 -endif11141: - store { ptr, i64, i64 } { ptr @.str.7177, i64 0, i64 0 }, ptr %a102 - %t103 = load i64, ptr %a76 - %t104 = icmp sgt i64 %t103, 0 - br label %logic.from11142 -logic.from11142: - br i1 %t104, label %logic.rhs11143, label %logic.end11144 -logic.rhs11143: - %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 %range11145, label %inrange11146 -range11145: - call void @finch_panic_index(ptr @.str.7178, i64 708, i64 %t106, i64 %t108) - unreachable -inrange11146: - %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.rend11147 -logic.rend11147: - br label %logic.end11144 -logic.end11144: - %t114 = phi i1 [ false, %logic.from11142 ], [ %t113, %logic.rend11147 ] - br i1 %t114, label %then11148, label %endif11150 -then11148: - %t115 = load i64, ptr %a76 - %t116 = sub i64 %t115, 1 - store i64 %t116, ptr %a117 - br label %while.cond11151 -while.cond11151: - %t118 = load i64, ptr %a117 - %t119 = icmp sgt i64 %t118, 0 - br label %logic.from11154 -logic.from11154: - br i1 %t119, label %logic.rhs11155, label %logic.end11156 -logic.rhs11155: - %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 %range11157, label %inrange11158 -range11157: - call void @finch_panic_index(ptr @.str.7179, i64 711, i64 %t121, i64 %t123) - unreachable -inrange11158: - %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.rend11159 -logic.rend11159: - br label %logic.end11156 -logic.end11156: - %t129 = phi i1 [ false, %logic.from11154 ], [ %t128, %logic.rend11159 ] - br i1 %t129, label %while.body11152, label %while.end11153 -while.body11152: - %t130 = load i64, ptr %a117 - %t131 = sub i64 %t130, 1 - store i64 %t131, ptr %a117 - br label %while.cond11151 -while.end11153: - %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.7180, 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 %S.lsp.VarRec %t144, ptr %a149 - call void @finch.drop.S_lsp_VarRec(ptr %a149) - store { ptr, i64, i64 } %t148, ptr %a150 - %t151 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.7182, i64 4, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_starts(ptr %a152, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from11160 -logic.from11160: - br i1 %t156, label %logic.rhs11161, label %logic.end11162 -logic.rhs11161: - %t157 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.7184, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_ends(ptr %a158, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - br label %logic.rend11163 -logic.rend11163: - br label %logic.end11162 -logic.end11162: - %t163 = phi i1 [ false, %logic.from11160 ], [ %t162, %logic.rend11163 ] - br i1 %t163, label %then11164, label %endif11166 -then11164: - %t164 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t164, ptr %a165 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %a150, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = sub i64 %t168, 1 - call void @finch_str_sub(ptr %a166, ptr %a165, i64 4, i64 %t169, ptr @.str.7185, i64 717) - %t170 = load { ptr, i64, i64 }, ptr %a166 - %t171 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t170, ptr %a150 - store { ptr, i64, i64 } %t171, ptr %a172 - call void @finch_str_drop(ptr %a172) - br label %endif11166 -endif11166: - %t173 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t173, ptr %a174 - call void @finch_str_copy(ptr %a175, ptr %a174) - %t176 = load { ptr, i64, i64 }, ptr %a175 - %t177 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t176, ptr %a102 - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - call void @finch_str_drop(ptr %a150) - call void @finch_str_drop(ptr %a139) - br label %endif11150 -endif11150: - %t179 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a180 - br label %each.cond11167 -each.cond11167: - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t182 = load i64, ptr %t181 - %t183 = load i64, ptr %a180 - %t184 = icmp slt i64 %t183, %t182 - br i1 %t184, label %each.body11168, label %each.end11170 -each.body11168: - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.lsp.FnRec, ptr %t185, i64 %t183 - %t187 = load %S.lsp.FnRec, ptr %t186 - store %S.lsp.FnRec %t187, ptr %a188 - %t189 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } %t191, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br label %logic.from11171 -logic.from11171: - br i1 %t195, label %logic.rhs11172, label %logic.end11173 -logic.rhs11172: - %t196 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 2 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t197, ptr %a199 - store { ptr, i64, i64 } %t198, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.rend11174 -logic.rend11174: - br label %logic.end11173 -logic.end11173: - %t203 = phi i1 [ false, %logic.from11171 ], [ %t202, %logic.rend11174 ] - br i1 %t203, label %then11175, label %endif11177 -then11175: - %t204 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t204, ptr %a205 - %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 7 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t207) - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7186, i64 5, i64 0 }, %S.json.Json %t208) - store %S.json.Json %t208, ptr %a209 - call void @finch.drop.S_json_Json(ptr %a209) - %t210 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t210, ptr %a211 - %t212 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 8 - store i64 0, ptr %a213 - br label %each.cond11178 -each.cond11178: - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t215 = load i64, ptr %t214 - %t216 = load i64, ptr %a213 - %t217 = icmp slt i64 %t216, %t215 - br i1 %t217, label %each.body11179, label %each.end11181 -each.body11179: - %t218 = load ptr, ptr %t212 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a221, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = icmp sgt i64 %t223, 0 - br i1 %t224, label %then11182, label %endif11184 -then11182: - %t225 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t225, ptr %a226 - %t227 = load { ptr, i64, i64 }, ptr %a221 - %t228 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t227) - call void @finch.json.Json.set(ptr %a226, { ptr, i64, i64 } { ptr @.str.7187, i64 5, i64 0 }, %S.json.Json %t228) - store %S.json.Json %t228, ptr %a229 - call void @finch.drop.S_json_Json(ptr %a229) - %t230 = load %S.json.Json, ptr %a226 - call void @finch.json.Json.push(ptr %a211, %S.json.Json %t230) - call void @finch.drop.S_json_Json(ptr %a226) - br label %endif11184 -endif11184: - br label %each.step11180 -each.step11180: - %t231 = load i64, ptr %a213 - %t232 = add i64 %t231, 1 - store i64 %t232, ptr %a213 - br label %each.cond11178 -each.end11181: - %t233 = load %S.json.Json, ptr %a211 - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7188, i64 10, i64 0 }, %S.json.Json %t233) - %t234 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t234, ptr %a235 - %t236 = load %S.json.Json, ptr %a205 - call void @finch.json.Json.push(ptr %a235, %S.json.Json %t236) - %t237 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t237, ptr %a238 - %t239 = load %S.json.Json, ptr %a235 - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7189, i64 10, i64 0 }, %S.json.Json %t239) - %t240 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7190, i64 15, i64 0 }, %S.json.Json %t240) - store %S.json.Json %t240, ptr %a241 - call void @finch.drop.S_json_Json(ptr %a241) - %t242 = load i64, ptr %a26 - %t243 = call %S.json.Json @finch.lsp.num(i64 %t242) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7191, i64 15, i64 0 }, %S.json.Json %t243) - store %S.json.Json %t243, ptr %a244 - call void @finch.drop.S_json_Json(ptr %a244) - %t245 = load %S.json.Json, ptr %a238 - call void @finch.drop.S_json_Json(ptr %a235) - call void @finch.drop.S_json_Json(ptr %a211) - call void @finch.drop.S_json_Json(ptr %a205) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t245 -endif11177: - br label %each.step11169 -each.step11169: - %t246 = load i64, ptr %a180 - %t247 = add i64 %t246, 1 - store i64 %t247, ptr %a180 - br label %each.cond11167 -each.end11170: - %t248 = call { ptr, i64, i64 } @finch.docs.builtins() - %t249 = load { ptr, i64, i64 }, ptr %a97 - %t250 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t248, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch.drop.arr_S_docs_Doc(ptr %a251) - store %S.docs.Doc %t250, ptr %a252 - %t253 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 0 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - %t255 = load i64, ptr %t254 - %t256 = icmp sgt i64 %t255, 0 - br i1 %t256, label %then11185, label %endif11187 -then11185: - %t257 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t257, ptr %a258 - %t259 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %t259 - %t261 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t260) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7192, i64 5, i64 0 }, %S.json.Json %t261) - store %S.json.Json %t261, ptr %a262 - call void @finch.drop.S_json_Json(ptr %a262) - %t263 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 2 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t264) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7193, i64 13, i64 0 }, %S.json.Json %t265) - store %S.json.Json %t265, ptr %a266 - call void @finch.drop.S_json_Json(ptr %a266) - %t267 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t267, ptr %a268 - %t269 = load %S.json.Json, ptr %a258 - call void @finch.json.Json.push(ptr %a268, %S.json.Json %t269) - %t270 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t270, ptr %a271 - %t272 = load %S.json.Json, ptr %a268 - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7194, i64 10, i64 0 }, %S.json.Json %t272) - %t273 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7195, i64 15, i64 0 }, %S.json.Json %t273) - store %S.json.Json %t273, ptr %a274 - call void @finch.drop.S_json_Json(ptr %a274) - %t275 = load i64, ptr %a26 - %t276 = call %S.json.Json @finch.lsp.num(i64 %t275) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7196, i64 15, i64 0 }, %S.json.Json %t276) - store %S.json.Json %t276, ptr %a277 - call void @finch.drop.S_json_Json(ptr %a277) - %t278 = load %S.json.Json, ptr %a271 - call void @finch.drop.S_json_Json(ptr %a268) - call void @finch.drop.S_json_Json(ptr %a258) - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t278 -endif11187: - %t279 = call %S.json.Json @finch.json.new_null() - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t279 -} - -define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { -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.7197, 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.7198, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7199, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7200, 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.7201, i64 3, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7202, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t7 -} - -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 - %a18 = alloca %S.json.Json, align 16 - %a20 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a24 = alloca %S.json.Json, align 16 - %a26 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - %a34 = alloca %S.json.Json, align 16 - %a36 = alloca %S.json.Json, align 16 - %a38 = alloca %S.json.Json, align 16 - %a40 = alloca %S.json.Json, align 16 - %a44 = alloca %S.json.Json, align 16 - %a47 = alloca %S.json.Json, align 16 - %a49 = alloca %S.json.Json, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.json.Json, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.json.Json, align 16 - %a106 = alloca %S.json.Json, align 16 - %a108 = alloca %S.json.Json, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca i32, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca %S.json.Json, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca %S.json.Json, align 16 - %a184 = alloca %S.json.Json, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca %S.json.Json, align 16 - %a212 = alloca %S.json.Json, align 16 - %a215 = alloca i64, align 16 - %a217 = alloca %S.json.Json, align 16 - %a219 = alloca %S.json.Json, align 16 - %a222 = alloca i64, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.json.Json, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.lsp.Analysis, align 16 - %a245 = alloca %S.lsp.Analysis, align 16 - %a247 = alloca %S.lsp.Analysis, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca %S.json.Json, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.json.Json, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.json.Json, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.json.Json, align 16 - %a322 = alloca %S.json.Json, align 16 - %a328 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7203, 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.7204, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store { ptr, i64, i64 } %t4, ptr %a5 - %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7205, 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.7206, 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.7207, 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.arm11189, label %match.next11190 -match.arm11189: - %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.7208, i64 16, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - %t19 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7209, i64 13, i64 0 }, %S.json.Json %t19) - store %S.json.Json %t19, ptr %a20 - call void @finch.drop.S_json_Json(ptr %a20) - %t21 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7210, i64 18, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7211, i64 22, i64 0 }, %S.json.Json %t23) - store %S.json.Json %t23, ptr %a24 - call void @finch.drop.S_json_Json(ptr %a24) - %t25 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t25, ptr %a26 - %t27 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t27, ptr %a28 - %t29 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7212, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a28, %S.json.Json %t29) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - %t31 = load %S.json.Json, ptr %a28 - call void @finch.json.Json.set(ptr %a26, { ptr, i64, i64 } { ptr @.str.7213, i64 17, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a26 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7214, i64 18, i64 0 }, %S.json.Json %t32) - %t33 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t33, ptr %a34 - %t35 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t35, ptr %a36 - %t37 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7215, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t37) - store %S.json.Json %t37, ptr %a38 - call void @finch.drop.S_json_Json(ptr %a38) - %t39 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7216, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t39) - store %S.json.Json %t39, ptr %a40 - call void @finch.drop.S_json_Json(ptr %a40) - %t41 = load %S.json.Json, ptr %a36 - call void @finch.json.Json.set(ptr %a34, { ptr, i64, i64 } { ptr @.str.7217, i64 17, i64 0 }, %S.json.Json %t41) - %t42 = load %S.json.Json, ptr %a34 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7218, i64 21, i64 0 }, %S.json.Json %t42) - %t43 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t43, ptr %a44 - %t45 = load %S.json.Json, ptr %a16 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7219, i64 12, i64 0 }, %S.json.Json %t45) - %t46 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t46, ptr %a47 - %t48 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7221, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a47, { ptr, i64, i64 } { ptr @.str.7220, i64 4, i64 0 }, %S.json.Json %t48) - store %S.json.Json %t48, ptr %a49 - call void @finch.drop.S_json_Json(ptr %a49) - %t50 = load %S.json.Json, ptr %a47 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7222, i64 10, i64 0 }, %S.json.Json %t50) - %t51 = load %S.json.Json, ptr %a9 - %t52 = load %S.json.Json, ptr %a44 - call void @finch.lsp.reply(%S.json.Json %t51, %S.json.Json %t52) - call void @finch.drop.S_json_Json(ptr %a47) - call void @finch.drop.S_json_Json(ptr %a44) - call void @finch.drop.S_json_Json(ptr %a36) - call void @finch.drop.S_json_Json(ptr %a34) - call void @finch.drop.S_json_Json(ptr %a28) - call void @finch.drop.S_json_Json(ptr %a26) - call void @finch.drop.S_json_Json(ptr %a16) - br label %match.end11188 -match.next11190: - store { ptr, i64, i64 } %t10, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.7223, i64 8, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %match.arm11191, label %match.next11192 -match.arm11191: - %t57 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 - store i1 true, ptr %t57 - %t58 = load %S.json.Json, ptr %a9 - %t59 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t58, %S.json.Json %t59) - store %S.json.Json %t59, ptr %a60 - call void @finch.drop.S_json_Json(ptr %a60) - br label %match.end11188 -match.next11192: - store { ptr, i64, i64 } %t10, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.7224, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %match.arm11193, label %match.next11194 -match.arm11193: - %t65 = trunc i64 0 to i32 - %t66 = call i32 @fflush(ptr null) - call void @exit(i32 %t65) - br label %match.end11188 -match.next11194: - store { ptr, i64, i64 } %t10, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.7225, i64 20, i64 0 }, ptr %a68 - %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) - %t70 = icmp ne i32 %t69, 0 - br i1 %t70, label %match.arm11195, label %match.next11196 -match.arm11195: - %t71 = load %S.json.Json, ptr %a7 - %t72 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t71) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load %S.json.Json, ptr %a7 - %t75 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t74) - %t76 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a78 - store i32 0, ptr %a79 - %t80 = call i64 @finch_map_slot(ptr %t76, ptr %a78, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a79) - %t81 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t76, i32 0, i32 0 - %t82 = load ptr, ptr %t81 - %t83 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i64 %t80 - %t84 = load i32, ptr %a79 - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %map.new11197, label %map.have11198 -map.new11197: - %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 1 - call void @finch_str_copy(ptr %t86, ptr %a78) - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t87 - br label %map.have11198 -map.have11198: - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t75, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t91) - call void @finch_str_drop(ptr %a73) - br label %match.end11188 -match.next11196: - store { ptr, i64, i64 } %t10, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.7226, i64 22, i64 0 }, ptr %a93 - %t94 = call i32 @finch_str_eq(ptr %a92, ptr %a93) - %t95 = icmp ne i32 %t94, 0 - br i1 %t95, label %match.arm11199, label %match.next11200 -match.arm11199: - %t96 = load %S.json.Json, ptr %a7 - %t97 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t96) - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7227, i64 14, i64 0 }) - store %S.json.Json %t99, ptr %a100 - %t101 = call i64 @finch.json.Json.len(ptr %a100) - %t102 = icmp sgt i64 %t101, 0 - br i1 %t102, label %then11201, label %endif11203 -then11201: - %t103 = call i64 @finch.json.Json.len(ptr %a100) - %t104 = sub i64 %t103, 1 - %t105 = call %S.json.Json @finch.json.Json.at(ptr %a100, i64 %t104) - store %S.json.Json %t105, ptr %a106 - %t107 = call %S.json.Json @finch.json.Json.get(ptr %a106, { ptr, i64, i64 } { ptr @.str.7228, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a106) - store %S.json.Json %t107, ptr %a108 - %t109 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a108, { ptr, i64, i64 } { ptr @.str.7229, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a108) - %t110 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t111 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t111, ptr %a112 - store i32 0, ptr %a113 - %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a113) - %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 - %t116 = load ptr, ptr %t115 - %t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t116, i64 %t114 - %t118 = load i32, ptr %a113 - %t119 = icmp ne i32 %t118, 0 - br i1 %t119, label %map.new11204, label %map.have11205 -map.new11204: - %t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 1 - call void @finch_str_copy(ptr %t120, ptr %a112) - %t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t121 - br label %map.have11205 -map.have11205: - %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - %t123 = load { ptr, i64, i64 }, ptr %t122 - store { ptr, i64, i64 } %t109, ptr %t122 - store { ptr, i64, i64 } %t123, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) - br label %endif11203 -endif11203: - call void @finch.drop.S_json_Json(ptr %a100) - call void @finch_str_drop(ptr %a98) - br label %match.end11188 -match.next11200: - store { ptr, i64, i64 } %t10, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.7230, i64 20, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br i1 %t129, label %match.arm11206, label %match.next11207 -match.arm11206: - %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 %then11208, label %endif11210 -then11208: - %t138 = load { ptr, i64, i64 }, ptr %a132 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t138) - br label %endif11210 -endif11210: - call void @finch_str_drop(ptr %a132) - br label %match.end11188 -match.next11207: - store { ptr, i64, i64 } %t10, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.7231, i64 21, i64 0 }, ptr %a140 - %t141 = call i32 @finch_str_eq(ptr %a139, ptr %a140) - %t142 = icmp ne i32 %t141, 0 - br i1 %t142, label %match.arm11211, label %match.next11212 -match.arm11211: - %t143 = load %S.json.Json, ptr %a7 - %t144 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t143) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t147 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t147, ptr %a148 - %t149 = call i64 @finch_map_find(ptr %t146, ptr %a148, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t150 = icmp sge i64 %t149, 0 - br i1 %t150, label %remove.hit11213, label %remove.end11214 -remove.hit11213: - %t151 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t146, i32 0, i32 0 - %t152 = load ptr, ptr %t151 - %t153 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t152, i64 %t149 - %t154 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 1 - call void @finch_str_drop(ptr %t154) - %t155 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 2 - call void @finch_str_drop(ptr %t155) - call void @finch_map_remove_at(ptr %t146, i64 %t149, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) - br label %remove.end11214 -remove.end11214: - %t156 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t157 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t157, ptr %a158 - %t159 = call i64 @finch_map_find(ptr %t156, ptr %a158, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t160 = icmp sge i64 %t159, 0 - br i1 %t160, label %remove.hit11215, label %remove.end11216 -remove.hit11215: - %t161 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t156, i32 0, i32 0 - %t162 = load ptr, ptr %t161 - %t163 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t162, i64 %t159 - %t164 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 1 - call void @finch_str_drop(ptr %t164) - %t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t165) - call void @finch_map_remove_at(ptr %t156, i64 %t159, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11216 -remove.end11216: - %t166 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t167 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = call i64 @finch_map_find(ptr %t166, ptr %a168, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t170 = icmp sge i64 %t169, 0 - br i1 %t170, label %remove.hit11217, label %remove.end11218 -remove.hit11217: - %t171 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t166, i32 0, i32 0 - %t172 = load ptr, ptr %t171 - %t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t172, i64 %t169 - %t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 1 - call void @finch_str_drop(ptr %t174) - %t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t175) - call void @finch_map_remove_at(ptr %t166, i64 %t169, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11218 -remove.end11218: - %t176 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t176, ptr %a177 - %t178 = load { ptr, i64, i64 }, ptr %a145 - %t179 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t178) - %t180 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7232, i64 3, i64 0 }, %S.json.Json %t180) - store %S.json.Json %t180, ptr %a182 - call void @finch.drop.S_json_Json(ptr %a182) - %t183 = call %S.json.Json @finch.json.new_list() - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7233, i64 11, i64 0 }, %S.json.Json %t183) - store %S.json.Json %t183, ptr %a184 - call void @finch.drop.S_json_Json(ptr %a184) - %t185 = load %S.json.Json, ptr %a177 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7234, i64 31, i64 0 }, %S.json.Json %t185) - call void @finch.drop.S_json_Json(ptr %a177) - call void @finch_str_drop(ptr %a145) - br label %match.end11188 -match.next11212: - store { ptr, i64, i64 } %t10, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.7235, i64 18, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br i1 %t189, label %match.arm11219, label %match.or11221 -match.or11221: - store { ptr, i64, i64 } %t10, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.7236, i64 23, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br i1 %t193, label %match.arm11219, label %match.or11222 -match.or11222: - store { ptr, i64, i64 } %t10, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.7237, i64 23, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %match.arm11219, label %match.or11223 -match.or11223: - store { ptr, i64, i64 } %t10, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.7238, i64 27, i64 0 }, ptr %a199 - %t200 = call i32 @finch_str_eq(ptr %a198, ptr %a199) - %t201 = icmp ne i32 %t200, 0 - br i1 %t201, label %match.arm11219, label %match.or11224 -match.or11224: - store { ptr, i64, i64 } %t10, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.7239, i64 26, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %match.arm11219, label %match.next11220 -match.arm11219: - %t206 = load %S.json.Json, ptr %a7 - %t207 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t206) - store { ptr, i64, i64 } %t207, ptr %a208 - %t209 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7240, i64 8, i64 0 }) - store %S.json.Json %t209, ptr %a210 - %t211 = call %S.json.Json @finch.json.Json.get(ptr %a210, { ptr, i64, i64 } { ptr @.str.7241, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a210) - store %S.json.Json %t211, ptr %a212 - %t213 = call i64 @finch.json.Json.int_or(ptr %a212, i64 0) - call void @finch.drop.S_json_Json(ptr %a212) - %t214 = add i64 %t213, 1 - store i64 %t214, ptr %a215 - %t216 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7242, i64 8, i64 0 }) - store %S.json.Json %t216, ptr %a217 - %t218 = call %S.json.Json @finch.json.Json.get(ptr %a217, { ptr, i64, i64 } { ptr @.str.7243, i64 9, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a217) - store %S.json.Json %t218, ptr %a219 - %t220 = call i64 @finch.json.Json.int_or(ptr %a219, i64 0) - call void @finch.drop.S_json_Json(ptr %a219) - %t221 = add i64 %t220, 1 - store i64 %t221, ptr %a222 - %t223 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t224 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t224, ptr %a225 - %t226 = call i64 @finch_map_find(ptr %t223, ptr %a225, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t227 = icmp sge i64 %t226, 0 - %t228 = xor i1 %t227, true - br i1 %t228, label %then11225, label %endif11227 -then11225: - %t229 = load %S.json.Json, ptr %a9 - %t230 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t229, %S.json.Json %t230) - store %S.json.Json %t230, ptr %a231 - call void @finch.drop.S_json_Json(ptr %a231) - call void @finch_str_drop(ptr %a208) - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -endif11227: - %t232 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t233 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = call i64 @finch_map_find(ptr %t232, ptr %a234, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t236 = icmp slt i64 %t235, 0 - br i1 %t236, label %map.missing11228, label %map.found11229 -map.missing11228: - store { ptr, i64, i64 } zeroinitializer, ptr %a237 - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_buf_str(ptr %a237, ptr %a238, i32 1) - call void @finch_map_missing(ptr @.str.7244, i64 842, ptr %a237) - unreachable -map.found11229: - %t239 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t232, i32 0, i32 0 - %t240 = load ptr, ptr %t239 - %t241 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t240, i64 %t235 - %t242 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t241, i32 0, i32 2 - %t243 = load %S.lsp.Analysis, ptr %t242 - store %S.lsp.Analysis %t243, ptr %a244 - call void @finch.copy.S_lsp_Analysis(ptr %a245, ptr %a244) - %t246 = load %S.lsp.Analysis, ptr %a245 - store %S.lsp.Analysis %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.7245, i64 0, i64 0 }, ptr %a248 - %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t250 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = call i64 @finch_map_find(ptr %t249, ptr %a251, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t253 = icmp sge i64 %t252, 0 - br i1 %t253, label %then11230, label %endif11232 -then11230: - %t254 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t255 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t255, ptr %a256 - %t257 = call i64 @finch_map_find(ptr %t254, ptr %a256, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t258 = icmp slt i64 %t257, 0 - br i1 %t258, label %map.missing11233, label %map.found11234 -map.missing11233: - store { ptr, i64, i64 } zeroinitializer, ptr %a259 - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_buf_str(ptr %a259, ptr %a260, i32 1) - call void @finch_map_missing(ptr @.str.7246, i64 845, ptr %a259) - unreachable -map.found11234: - %t261 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t254, i32 0, i32 0 - %t262 = load ptr, ptr %t261 - %t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t262, i64 %t257 - %t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t263, i32 0, i32 2 - %t265 = load { ptr, i64, i64 }, ptr %t264 - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_copy(ptr %a267, ptr %a266) - %t268 = load { ptr, i64, i64 }, ptr %a267 - %t269 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t268, ptr %a248 - store { ptr, i64, i64 } %t269, ptr %a270 - call void @finch_str_drop(ptr %a270) - br label %endif11232 -endif11232: - %t271 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t271, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.7247, i64 18, i64 0 }, ptr %a273 - %t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273) - %t275 = icmp ne i32 %t274, 0 - br i1 %t275, label %match.arm11236, label %match.next11237 -match.arm11236: - %t276 = load %S.json.Json, ptr %a9 - %t277 = load %S.lsp.Analysis, ptr %a247 - %t278 = load { ptr, i64, i64 }, ptr %a208 - %t279 = load i64, ptr %a215 - %t280 = load i64, ptr %a222 - %t281 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t277, { ptr, i64, i64 } %t278, i64 %t279, i64 %t280) - call void @finch.lsp.reply(%S.json.Json %t276, %S.json.Json %t281) - store %S.json.Json %t281, ptr %a282 - call void @finch.drop.S_json_Json(ptr %a282) - br label %match.end11235 -match.next11237: - store { ptr, i64, i64 } %t271, ptr %a283 - store { ptr, i64, i64 } { ptr @.str.7248, i64 23, i64 0 }, ptr %a284 - %t285 = call i32 @finch_str_eq(ptr %a283, ptr %a284) - %t286 = icmp ne i32 %t285, 0 - br i1 %t286, label %match.arm11238, label %match.next11239 -match.arm11238: - %t287 = load %S.json.Json, ptr %a9 - %t288 = load %S.lsp.Analysis, ptr %a247 - %t289 = load { ptr, i64, i64 }, ptr %a208 - %t290 = load i64, ptr %a215 - %t291 = load i64, ptr %a222 - %t292 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t288, { ptr, i64, i64 } %t289, i64 %t290, i64 %t291) - call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t292) - store %S.json.Json %t292, ptr %a293 - call void @finch.drop.S_json_Json(ptr %a293) - br label %match.end11235 -match.next11239: - store { ptr, i64, i64 } %t271, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.7249, i64 23, i64 0 }, ptr %a295 - %t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295) - %t297 = icmp ne i32 %t296, 0 - br i1 %t297, label %match.arm11240, label %match.next11241 -match.arm11240: - %t298 = load %S.json.Json, ptr %a9 - %t299 = load %S.lsp.Analysis, ptr %a247 - %t300 = load { ptr, i64, i64 }, ptr %a248 - %t301 = load { ptr, i64, i64 }, ptr %a208 - %t302 = load i64, ptr %a215 - %t303 = load i64, ptr %a222 - %t304 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t299, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t301, i64 %t302, i64 %t303) - call void @finch.lsp.reply(%S.json.Json %t298, %S.json.Json %t304) - store %S.json.Json %t304, ptr %a305 - call void @finch.drop.S_json_Json(ptr %a305) - br label %match.end11235 -match.next11241: - store { ptr, i64, i64 } %t271, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.7250, i64 27, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br i1 %t309, label %match.arm11242, label %match.next11243 -match.arm11242: - %t310 = load %S.json.Json, ptr %a9 - %t311 = load %S.lsp.Analysis, ptr %a247 - %t312 = load { ptr, i64, i64 }, ptr %a208 - %t313 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t311, { ptr, i64, i64 } %t312) - call void @finch.lsp.reply(%S.json.Json %t310, %S.json.Json %t313) - store %S.json.Json %t313, ptr %a314 - call void @finch.drop.S_json_Json(ptr %a314) - br label %match.end11235 -match.next11243: - br label %match.arm11244 -match.arm11244: - %t315 = load %S.json.Json, ptr %a9 - %t316 = load %S.lsp.Analysis, ptr %a247 - %t317 = load { ptr, i64, i64 }, ptr %a248 - %t318 = load { ptr, i64, i64 }, ptr %a208 - %t319 = load i64, ptr %a215 - %t320 = load i64, ptr %a222 - %t321 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t316, { ptr, i64, i64 } %t317, { ptr, i64, i64 } %t318, i64 %t319, i64 %t320) - call void @finch.lsp.reply(%S.json.Json %t315, %S.json.Json %t321) - store %S.json.Json %t321, ptr %a322 - call void @finch.drop.S_json_Json(ptr %a322) - br label %match.end11235 -match.end11235: - call void @finch_str_drop(ptr %a248) - call void @finch.drop.S_lsp_Analysis(ptr %a247) - call void @finch_str_drop(ptr %a208) - br label %match.end11188 -match.next11220: - br label %match.arm11246 -match.arm11246: - %t323 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 - %t324 = load i32, ptr %t323 - %t325 = icmp ne i32 %t324, 0 - br i1 %t325, label %then11248, label %endif11250 -then11248: - %t326 = load %S.json.Json, ptr %a9 - %t327 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t326, %S.json.Json %t327) - store %S.json.Json %t327, ptr %a328 - call void @finch.drop.S_json_Json(ptr %a328) - br label %endif11250 -endif11250: - br label %match.end11188 -match.end11188: - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.map_str_S_lsp_Analysis(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond11256 -n.cond11256: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body11257, label %n.end11258 -n.body11257: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live11259, label %entry.next11260 -entry.live11259: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t13) - br label %entry.next11260 -entry.next11260: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond11256 -n.end11258: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Server(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -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 - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lsp.Server, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - call void @finch.host.binaryStdio() - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_copy(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - %t6 = insertvalue %S.lsp.Server zeroinitializer, { ptr, i64, i64 } %t5, 0 - %t7 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.7251, i64 11, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - %t22 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t21, 1 - store %S.lsp.Server %t22, ptr %a23 - br label %while.cond11251 -while.cond11251: - br label %while.body11252 -while.body11252: - %t24 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() - %t25 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 0 - %t26 = xor i1 %t25, true - %t27 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 2 - %t28 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 1 - br i1 %t26, label %or.failed11254, label %or.ok11255 -or.failed11254: - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %while.end11253 -or.ok11255: - store %S.json.Json %t28, ptr %a30 - %t31 = load %S.json.Json, ptr %a30 - call void @finch.lsp.Server.answer(ptr %a23, %S.json.Json %t31) - call void @finch.drop.S_json_Json(ptr %a30) - br label %while.cond11251 -while.end11253: - %t32 = getelementptr inbounds %S.lsp.Server, ptr %a23, i32 0, i32 1 - %t33 = load { ptr, i64, i64 }, ptr %t32 - call void @finch.host.removeTree({ ptr, i64, i64 } %t33) - call void @finch.drop.S_lsp_Server(ptr %a23) - ret i64 0 -} - -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.arm11262, label %match.or11264 -match.or11264: - %t4 = icmp eq i32 %t2, 5 - br i1 %t4, label %match.arm11262, label %match.next11263 -match.arm11262: - %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.from11265 -match.from11265: - br label %match.end11261 -match.next11263: - %t8 = icmp eq i32 %t2, 3 - br i1 %t8, label %match.arm11266, label %match.next11267 -match.arm11266: - %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.from11268 -match.from11268: - br label %match.end11261 -match.next11267: - br label %match.arm11269 -match.arm11269: - br label %match.from11271 -match.from11271: - br label %match.end11261 -match.end11261: - %t12 = phi i64 [ %t7, %match.from11265 ], [ %t11, %match.from11268 ], [ 0, %match.from11271 ] - 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.from11272 -logic.from11272: - br i1 %t4, label %logic.rhs11273, label %logic.end11274 -logic.rhs11273: - %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.cond11275 -find.cond11275: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body11276, label %find.end11279 -find.body11276: - %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.hit11277, label %find.next11278 -find.hit11277: - store i64 %t12, ptr %a8 - br label %find.end11279 -find.next11278: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond11275 -find.end11279: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - br label %logic.rend11280 -logic.rend11280: - br label %logic.end11274 -logic.end11274: - %t23 = phi i1 [ false, %logic.from11272 ], [ %t22, %logic.rend11280 ] - ret i1 %t23 -} - -define internal void @finch.copy.arr_S_json_Json(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond11294 -n.cond11294: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body11295, label %n.end11296 -n.body11295: - %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.cond11294 -n.end11296: - ret void -} - -define internal void @finch.copy.S_json_Json(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.json.Json, ptr %src - store %S.json.Json %t1, ptr %dst - %t2 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 3 - %t3 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 3 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_json_Json(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 5 - %t7 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - ret void -} - -define internal %S.json.Json @finch.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 %then11281, label %endif11283 -then11281: - %t5 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t5 -endif11283: - %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.cond11284 -find.cond11284: - %t13 = load i64, ptr %a12 - %t14 = icmp slt i64 %t13, %t10 - br i1 %t14, label %find.body11285, label %find.end11288 -find.body11285: - %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.hit11286, label %find.next11287 -find.hit11286: - store i64 %t13, ptr %a9 - br label %find.end11288 -find.next11287: - %t21 = add i64 %t13, 1 - store i64 %t21, ptr %a12 - br label %find.cond11284 -find.end11288: - %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 %then11289, label %endif11291 -then11289: - %t26 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t26 -endif11291: - %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 %range11292, label %inrange11293 -range11292: - call void @finch_panic_index(ptr @.str.7252, i64 84, i64 %t28, i64 %t30) - unreachable -inrange11293: - %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.from11297 -logic.from11297: - br i1 %t4, label %logic.end11299, label %logic.rhs11298 -logic.rhs11298: - %t5 = load i64, ptr %a1 - %t6 = icmp slt i64 %t5, 0 - br label %logic.rend11300 -logic.rend11300: - br label %logic.end11299 -logic.end11299: - %t7 = phi i1 [ true, %logic.from11297 ], [ %t6, %logic.rend11300 ] - br label %logic.from11301 -logic.from11301: - br i1 %t7, label %logic.end11303, label %logic.rhs11302 -logic.rhs11302: - %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.rend11304 -logic.rend11304: - br label %logic.end11303 -logic.end11303: - %t13 = phi i1 [ true, %logic.from11301 ], [ %t12, %logic.rend11304 ] - br i1 %t13, label %then11305, label %endif11307 -then11305: - %t14 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t14 -endif11307: - %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 %range11308, label %inrange11309 -range11308: - call void @finch_panic_index(ptr @.str.7253, i64 92, i64 %t16, i64 %t18) - unreachable -inrange11309: - %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 %then11310, label %endif11312 -then11310: - %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 -endif11312: - %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 %then11313, label %endif11315 -then11313: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 - %t6 = load double, ptr %t5 - ret double %t6 -endif11315: - %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 %then11316, label %endif11318 -then11316: - %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 -endif11318: - %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 %then11319, label %endif11321 -then11319: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 - %t6 = load i1, ptr %t5 - ret i1 %t6 -endif11321: - %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 - %a35 = alloca %S.json.Json, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.json.Json, align 16 - %a50 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %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.cond11322 -find.cond11322: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t7 - br i1 %t11, label %find.body11323, label %find.end11326 -find.body11323: - %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.hit11324, label %find.next11325 -find.hit11324: - store i64 %t10, ptr %a6 - br label %find.end11326 -find.next11325: - %t18 = add i64 %t10, 1 - store i64 %t18, ptr %a9 - br label %find.cond11322 -find.end11326: - %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 %then11327, label %endif11329 -then11327: - %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 %range11330, label %inrange11331 -range11330: - call void @finch_panic_index(ptr @.str.7254, i64 140, i64 %t25, i64 %t27) - unreachable -inrange11331: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds %S.json.Json, ptr %t29, i64 %t25 - store %S.json.Json %t23, ptr %a31 - call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) - %t33 = load %S.json.Json, ptr %a32 - %t34 = load %S.json.Json, ptr %t30 - store %S.json.Json %t33, ptr %t30 - store %S.json.Json %t34, ptr %a35 - call void @finch.drop.S_json_Json(ptr %a35) - ret void -endif11329: - %t36 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_copy(ptr %a40, ptr %a39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - %t42 = load i64, ptr %t37 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t36 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } %t41, ptr %t45 - store i64 %t43, ptr %t37 - %t46 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load %S.json.Json, ptr %a2 - store %S.json.Json %t48, ptr %a49 - call void @finch.copy.S_json_Json(ptr %a50, ptr %a49) - %t51 = load %S.json.Json, ptr %a50 - %t52 = load i64, ptr %t47 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t46, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t46 - %t55 = getelementptr inbounds %S.json.Json, ptr %t54, i64 %t52 - store %S.json.Json %t51, ptr %t55 - store i64 %t53, ptr %t47 - ret void -} - -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.7255, 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.cond11332 -each.cond11332: - %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.body11333, label %each.end11335 -each.body11333: - %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 %then11336, label %else11337 -then11336: - %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.7256, i64 2, i64 0 }, ptr %t27 - store i64 %t25, ptr %t23 - br label %endif11338 -else11337: - %t28 = load i8, ptr %a17 - %t29 = icmp eq i8 %t28, 92 - br i1 %t29, label %then11339, label %else11340 -then11339: - %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.7257, i64 2, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif11341 -else11340: - %t35 = load i8, ptr %a17 - %t36 = icmp eq i8 %t35, 10 - br i1 %t36, label %then11342, label %else11343 -then11342: - %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.7258, i64 2, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - br label %endif11344 -else11343: - %t42 = load i8, ptr %a17 - %t43 = icmp eq i8 %t42, 13 - br i1 %t43, label %then11345, label %else11346 -then11345: - %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.7259, i64 2, i64 0 }, ptr %t48 - store i64 %t46, ptr %t44 - br label %endif11347 -else11346: - %t49 = load i8, ptr %a17 - %t50 = icmp eq i8 %t49, 9 - br i1 %t50, label %then11348, label %else11349 -then11348: - %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.7260, i64 2, i64 0 }, ptr %t55 - store i64 %t53, ptr %t51 - br label %endif11350 -else11349: - %t56 = load i64, ptr %a20 - %t57 = icmp slt i64 %t56, 32 - br i1 %t57, label %then11351, label %else11352 -then11351: - %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.7261, i64 4, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a20 - %t68 = srem i64 %t67, 16 - %t69 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t68) - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - %t76 = load i64, ptr %t58 - %t77 = add i64 %t76, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t77, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t78 = load ptr, ptr %a8 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 %t76 - store { ptr, i64, i64 } %t75, ptr %t79 - store i64 %t77, ptr %t58 - br label %endif11353 -else11352: - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t81 = load i8, ptr %a17 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load i64, ptr %t80 - %t85 = add i64 %t84, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t85, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t86 = load ptr, ptr %a8 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 %t84 - store { ptr, i64, i64 } %t83, ptr %t87 - store i64 %t85, ptr %t80 - br label %endif11353 -endif11353: - br label %endif11350 -endif11350: - br label %endif11347 -endif11347: - br label %endif11344 -endif11344: - br label %endif11341 -endif11341: - br label %endif11338 -endif11338: - br label %each.step11334 -each.step11334: - %t88 = load i64, ptr %a9 - %t89 = add i64 %t88, 1 - store i64 %t89, ptr %a9 - br label %each.cond11332 -each.end11335: - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t91 = load i64, ptr %t90 - %t92 = add i64 %t91, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t93 = load ptr, ptr %a8 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 - store { ptr, i64, i64 } { ptr @.str.7262, i64 1, i64 0 }, ptr %t94 - store i64 %t92, ptr %t90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7263, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a8, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - call void @finch.drop.arr_str(ptr %a8) - ret { ptr, i64, i64 } %t98 -} - -define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { -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.7264, 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 %range11354, label %inrange11355 -range11354: - call void @finch_panic_index(ptr @.str.7265, i64 175, i64 %t3, i64 %t5) - unreachable -inrange11355: - %t7 = extractvalue { ptr, i64, i64 } %t4, 0 - %t8 = getelementptr inbounds i8, ptr %t7, i64 %t3 - %t9 = load i8, ptr %t8 - call void @finch_str_from_char(ptr %a10, i8 signext %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t11 -} - -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.from11356 -logic.from11356: - br i1 %t6, label %logic.rhs11357, label %logic.end11358 -logic.rhs11357: - %t7 = load double, ptr %a1 - %t8 = fneg double 1000000000000000.0 - %t9 = fcmp ogt double %t7, %t8 - br label %logic.rend11359 -logic.rend11359: - br label %logic.end11358 -logic.end11358: - %t10 = phi i1 [ false, %logic.from11356 ], [ %t9, %logic.rend11359 ] - br label %logic.from11360 -logic.from11360: - br i1 %t10, label %logic.rhs11361, label %logic.end11362 -logic.rhs11361: - %t11 = load double, ptr %a1 - %t12 = fcmp olt double %t11, 1000000000000000.0 - br label %logic.rend11363 -logic.rend11363: - br label %logic.end11362 -logic.end11362: - %t13 = phi i1 [ false, %logic.from11360 ], [ %t12, %logic.rend11363 ] - br i1 %t13, label %then11364, label %endif11366 -then11364: - %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 -endif11366: - %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 - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca i64, align 16 - %a114 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a203 = alloca i64, align 16 - %a204 = alloca %S.json.Json, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store ptr %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7266, i64 0, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7267, i64 0, i64 0 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.7268, i64 1, i64 0 }, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.7269, 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 %then11367, label %endif11369 -then11367: - %t12 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7270, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a3 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.7271, i64 2, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif11369 -endif11369: - %t24 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 - %t25 = load i32, ptr %t24 - %t26 = icmp eq i32 %t25, 0 - br i1 %t26, label %match.arm11371, label %match.next11372 -match.arm11371: - %t27 = load ptr, ptr %a4 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic11373, label %ok11374 -panic11373: - call void @finch_panic(ptr @.str.7272, i64 200, ptr @.str.7273) - unreachable -ok11374: - %t29 = getelementptr inbounds %S.json.Writer, ptr %t27, i32 0, i32 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 - %t31 = load i64, ptr %t30 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t29, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t29 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 - store { ptr, i64, i64 } { ptr @.str.7274, i64 4, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %match.end11370 -match.next11372: - %t35 = icmp eq i32 %t25, 1 - br i1 %t35, label %match.arm11375, label %match.next11376 -match.arm11375: - %t36 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 - %t37 = load i1, ptr %t36 - br i1 %t37, label %then11377, label %else11378 -then11377: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic11380, label %ok11381 -panic11380: - call void @finch_panic(ptr @.str.7275, i64 203, ptr @.str.7276) - unreachable -ok11381: - %t40 = getelementptr inbounds %S.json.Writer, ptr %t38, i32 0, i32 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t40 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } { ptr @.str.7277, i64 4, i64 0 }, ptr %t45 - store i64 %t43, ptr %t41 - br label %endif11379 -else11378: - %t46 = load ptr, ptr %a4 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic11382, label %ok11383 -panic11382: - call void @finch_panic(ptr @.str.7278, i64 205, ptr @.str.7279) - unreachable -ok11383: - %t48 = getelementptr inbounds %S.json.Writer, ptr %t46, i32 0, i32 0 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load i64, ptr %t49 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t51, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t48 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t50 - store { ptr, i64, i64 } { ptr @.str.7280, i64 5, i64 0 }, ptr %t53 - store i64 %t51, ptr %t49 - br label %endif11379 -endif11379: - br label %match.end11370 -match.next11376: - %t54 = icmp eq i32 %t25, 2 - br i1 %t54, label %match.arm11384, label %match.next11385 -match.arm11384: - %t55 = load ptr, ptr %a4 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic11386, label %ok11387 -panic11386: - call void @finch_panic(ptr @.str.7281, i64 208, ptr @.str.7282) - unreachable -ok11387: - %t57 = getelementptr inbounds %S.json.Writer, ptr %t55, i32 0, i32 0 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 - %t60 = load double, ptr %t59 - %t61 = call { ptr, i64, i64 } @finch.json.number_text(double %t60) - %t62 = load i64, ptr %t58 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t57 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t58 - br label %match.end11370 -match.next11385: - %t66 = icmp eq i32 %t25, 3 - br i1 %t66, label %match.arm11388, label %match.next11389 -match.arm11388: - %t67 = load ptr, ptr %a4 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic11390, label %ok11391 -panic11390: - call void @finch_panic(ptr @.str.7283, i64 209, ptr @.str.7284) - unreachable -ok11391: - %t69 = getelementptr inbounds %S.json.Writer, ptr %t67, i32 0, i32 0 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 - %t71 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 - %t72 = load { ptr, i64, i64 }, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t72) - %t74 = load i64, ptr %t70 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t69, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t69 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t70 - br label %match.end11370 -match.next11389: - %t78 = icmp eq i32 %t25, 4 - br i1 %t78, label %match.arm11392, label %match.next11393 -match.arm11392: - %t79 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load i64, ptr %t80 - %t82 = icmp eq i64 %t81, 0 - br i1 %t82, label %then11394, label %endif11396 -then11394: - %t83 = load ptr, ptr %a4 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic11397, label %ok11398 -panic11397: - call void @finch_panic(ptr @.str.7285, i64 212, ptr @.str.7286) - unreachable -ok11398: - %t85 = getelementptr inbounds %S.json.Writer, ptr %t83, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t85, i64 %t88, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t85 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i64 %t87 - store { ptr, i64, i64 } { ptr @.str.7287, i64 2, i64 0 }, ptr %t90 - store i64 %t88, ptr %t86 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11396: - %t91 = load ptr, ptr %a4 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic11399, label %ok11400 -panic11399: - call void @finch_panic(ptr @.str.7288, i64 215, ptr @.str.7289) - unreachable -ok11400: - %t93 = getelementptr inbounds %S.json.Writer, ptr %t91, i32 0, i32 0 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7290, i64 1, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - %t100 = load i64, ptr %t94 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %t93 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100 - store { ptr, i64, i64 } %t99, ptr %t103 - store i64 %t101, ptr %t94 - %t104 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a105 - br label %each.cond11401 -each.cond11401: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body11402, label %each.end11404 -each.body11402: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.json.Json, ptr %t110, i64 %t108 - %t112 = load %S.json.Json, ptr %t111 - store i64 %t108, ptr %a113 - store %S.json.Json %t112, ptr %a114 - %t115 = load i64, ptr %a113 - %t116 = icmp sgt i64 %t115, 0 - br i1 %t116, label %then11405, label %endif11407 -then11405: - %t117 = load ptr, ptr %a4 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic11408, label %ok11409 -panic11408: - call void @finch_panic(ptr @.str.7291, i64 218, ptr @.str.7292) - unreachable -ok11409: - %t119 = getelementptr inbounds %S.json.Writer, ptr %t117, i32 0, i32 0 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a7 - %t122 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t121, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a123 - %t127 = load i64, ptr %t120 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %t119, i64 %t128, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %t119 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t127 - store { ptr, i64, i64 } %t126, ptr %t130 - store i64 %t128, ptr %t120 - br label %endif11407 -endif11407: - %t131 = load ptr, ptr %a4 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic11410, label %ok11411 -panic11410: - call void @finch_panic(ptr @.str.7293, i64 220, ptr @.str.7294) - unreachable -ok11411: - %t133 = getelementptr inbounds %S.json.Writer, ptr %t131, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load i64, ptr %t134 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t133 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 - store { ptr, i64, i64 } %t138, ptr %t142 - store i64 %t140, ptr %t134 - %t143 = load %S.json.Json, ptr %a114 - %t144 = load { ptr, i64, i64 }, ptr %a2 - %t145 = load { ptr, i64, i64 }, ptr %a6 - %t146 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t143, { ptr, i64, i64 } %t144, { ptr, i64, i64 } %t145, ptr %t146) - br label %each.step11403 -each.step11403: - %t147 = load i64, ptr %a105 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a105 - br label %each.cond11401 -each.end11404: - %t149 = load ptr, ptr %a4 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic11412, label %ok11413 -panic11412: - call void @finch_panic(ptr @.str.7295, i64 223, ptr @.str.7296) - unreachable -ok11413: - %t151 = getelementptr inbounds %S.json.Writer, ptr %t149, i32 0, i32 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load { ptr, i64, i64 }, ptr %a5 - %t154 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t153, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.7297, i64 1, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load i64, ptr %t152 - %t165 = add i64 %t164, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t165, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t166 = load ptr, ptr %t151 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i64 %t164 - store { ptr, i64, i64 } %t163, ptr %t167 - store i64 %t165, ptr %t152 - br label %match.end11370 -match.next11393: - %t168 = icmp eq i32 %t25, 5 - br i1 %t168, label %match.arm11414, label %match.next11415 -match.arm11414: - %t169 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 0 - br i1 %t172, label %then11416, label %endif11418 -then11416: - %t173 = load ptr, ptr %a4 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic11419, label %ok11420 -panic11419: - call void @finch_panic(ptr @.str.7298, i64 227, ptr @.str.7299) - unreachable -ok11420: - %t175 = getelementptr inbounds %S.json.Writer, ptr %t173, i32 0, i32 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1 - %t177 = load i64, ptr %t176 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t175, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t175 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177 - store { ptr, i64, i64 } { ptr @.str.7300, i64 2, i64 0 }, ptr %t180 - store i64 %t178, ptr %t176 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11418: - %t181 = load ptr, ptr %a4 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic11421, label %ok11422 -panic11421: - call void @finch_panic(ptr @.str.7301, i64 230, ptr @.str.7302) - unreachable -ok11422: - %t183 = getelementptr inbounds %S.json.Writer, ptr %t181, i32 0, i32 0 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7303, i64 1, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a186 - %t190 = load i64, ptr %t184 - %t191 = add i64 %t190, 1 - call void @finch_arr_reserve(ptr %t183, i64 %t191, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t192 = load ptr, ptr %t183 - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190 - store { ptr, i64, i64 } %t189, ptr %t193 - store i64 %t191, ptr %t184 - %t194 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a195 - br label %each.cond11423 -each.cond11423: - %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t197 = load i64, ptr %t196 - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, %t197 - br i1 %t199, label %each.body11424, label %each.end11426 -each.body11424: - %t200 = load ptr, ptr %t194 - %t201 = getelementptr inbounds %S.json.Json, ptr %t200, i64 %t198 - %t202 = load %S.json.Json, ptr %t201 - store i64 %t198, ptr %a203 - store %S.json.Json %t202, ptr %a204 - %t205 = load i64, ptr %a203 - %t206 = icmp sgt i64 %t205, 0 - br i1 %t206, label %then11427, label %endif11429 -then11427: - %t207 = load ptr, ptr %a4 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic11430, label %ok11431 -panic11430: - call void @finch_panic(ptr @.str.7304, i64 233, ptr @.str.7305) - unreachable -ok11431: - %t209 = getelementptr inbounds %S.json.Writer, ptr %t207, i32 0, i32 0 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - %t211 = load { ptr, i64, i64 }, ptr %a7 - %t212 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a213 - %t217 = load i64, ptr %t210 - %t218 = add i64 %t217, 1 - call void @finch_arr_reserve(ptr %t209, i64 %t218, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t219 = load ptr, ptr %t209 - %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %t219, i64 %t217 - store { ptr, i64, i64 } %t216, ptr %t220 - store i64 %t218, ptr %t210 - br label %endif11429 -endif11429: - %t221 = load ptr, ptr %a4 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic11432, label %ok11433 -panic11432: - call void @finch_panic(ptr @.str.7306, i64 235, ptr @.str.7307) - unreachable -ok11433: - %t223 = getelementptr inbounds %S.json.Writer, ptr %t221, i32 0, i32 0 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load { ptr, i64, i64 }, ptr %a6 - %t226 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 - %t227 = load i64, ptr %a203 - %t228 = load { ptr, i64, i64 }, ptr %t226 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 %t227, %t229 - br i1 %t230, label %range11434, label %inrange11435 -range11434: - call void @finch_panic_index(ptr @.str.7308, i64 235, i64 %t227, i64 %t229) - unreachable -inrange11435: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t227 - %t233 = load { ptr, i64, i64 }, ptr %t232 - %t234 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t225, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t239, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = load i64, ptr %t224 - %t247 = add i64 %t246, 1 - call void @finch_arr_reserve(ptr %t223, i64 %t247, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t248 = load ptr, ptr %t223 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t246 - store { ptr, i64, i64 } %t245, ptr %t249 - store i64 %t247, ptr %t224 - %t250 = load %S.json.Json, ptr %a204 - %t251 = load { ptr, i64, i64 }, ptr %a2 - %t252 = load { ptr, i64, i64 }, ptr %a6 - %t253 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t250, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252, ptr %t253) - br label %each.step11425 -each.step11425: - %t254 = load i64, ptr %a195 - %t255 = add i64 %t254, 1 - store i64 %t255, ptr %a195 - br label %each.cond11423 -each.end11426: - %t256 = load ptr, ptr %a4 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic11436, label %ok11437 -panic11436: - call void @finch_panic(ptr @.str.7309, i64 238, ptr @.str.7310) - unreachable -ok11437: - %t258 = getelementptr inbounds %S.json.Writer, ptr %t256, i32 0, i32 0 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %a5 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.7311, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %t258, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %t258 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - br label %match.end11370 -match.next11415: - br i1 true, label %panic11438, label %ok11439 -panic11438: - call void @finch_panic(ptr @.str.7312, i64 199, ptr @.str.7313) - unreachable -ok11439: - unreachable -match.end11370: - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.S_json_Writer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Writer, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -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.7314, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7315, 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.7316, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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.7317, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.7318, 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.7319, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 1, ptr %a2 - store i64 1, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic11440, label %ok11441 -panic11440: - call void @finch_panic(ptr @.str.7320, i64 268, ptr @.str.7321) - unreachable -ok11441: - %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.cond11442 -for.cond11442: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body11443, label %for.end11445 -for.body11443: - %t11 = load i64, ptr %a8 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11446, label %ok11447 -panic11446: - call void @finch_panic(ptr @.str.7322, i64 269, ptr @.str.7323) - unreachable -ok11447: - %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.from11448 -logic.from11448: - br i1 %t17, label %logic.rhs11449, label %logic.end11450 -logic.rhs11449: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic11451, label %ok11452 -panic11451: - call void @finch_panic(ptr @.str.7324, i64 269, ptr @.str.7325) - unreachable -ok11452: - %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 %range11453, label %inrange11454 -range11453: - call void @finch_panic_index(ptr @.str.7326, i64 269, i64 %t21, i64 %t23) - unreachable -inrange11454: - %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.rend11455 -logic.rend11455: - br label %logic.end11450 -logic.end11450: - %t29 = phi i1 [ false, %logic.from11448 ], [ %t28, %logic.rend11455 ] - br i1 %t29, label %then11456, label %else11457 -then11456: - %t30 = load i64, ptr %a2 - %t31 = add i64 %t30, 1 - store i64 %t31, ptr %a2 - store i64 1, ptr %a3 - br label %endif11458 -else11457: - %t32 = load i64, ptr %a3 - %t33 = add i64 %t32, 1 - store i64 %t33, ptr %a3 - br label %endif11458 -endif11458: - br label %for.step11444 -for.step11444: - %t34 = load i64, ptr %a8 - %t35 = add i64 %t34, 1 - store i64 %t35, ptr %a8 - br label %for.cond11442 -for.end11445: - %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.7327, i64 5, i64 0 }, ptr %a40 - store { ptr, i64, i64 } %t38, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.7328, i64 9, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a50, i64 %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t48, ptr %a55 - call void @finch_str_drop(ptr %a55) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a52 - ret { ptr, i64, i64 } %t57 -} - -define internal i8 @finch.json.peek(ptr %p0) { -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 %panic11459, label %ok11460 -panic11459: - call void @finch_panic(ptr @.str.7329, i64 280, ptr @.str.7330) - unreachable -ok11460: - %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 %panic11461, label %ok11462 -panic11461: - call void @finch_panic(ptr @.str.7331, i64 280, ptr @.str.7332) - unreachable -ok11462: - %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 %then11463, label %endif11465 -then11463: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11466, label %ok11467 -panic11466: - call void @finch_panic(ptr @.str.7333, i64 281, ptr @.str.7334) - unreachable -ok11467: - %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 %panic11468, label %ok11469 -panic11468: - call void @finch_panic(ptr @.str.7335, i64 281, ptr @.str.7336) - unreachable -ok11469: - %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 %range11470, label %inrange11471 -range11470: - call void @finch_panic_index(ptr @.str.7337, i64 281, i64 %t18, i64 %t20) - unreachable -inrange11471: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 - %t24 = load i8, ptr %t23 - ret i8 %t24 -endif11465: - %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.cond11472 -while.cond11472: - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11475, label %ok11476 -panic11475: - call void @finch_panic(ptr @.str.7338, i64 287, ptr @.str.7339) - unreachable -ok11476: - %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 %panic11477, label %ok11478 -panic11477: - call void @finch_panic(ptr @.str.7340, i64 287, ptr @.str.7341) - unreachable -ok11478: - %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.from11479 -logic.from11479: - br i1 %t11, label %logic.rhs11480, label %logic.end11481 -logic.rhs11480: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11482, label %ok11483 -panic11482: - call void @finch_panic(ptr @.str.7342, i64 287, ptr @.str.7343) - unreachable -ok11483: - %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 %panic11484, label %ok11485 -panic11484: - call void @finch_panic(ptr @.str.7344, i64 287, ptr @.str.7345) - unreachable -ok11485: - %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 %range11486, label %inrange11487 -range11486: - call void @finch_panic_index(ptr @.str.7346, i64 287, i64 %t18, i64 %t20) - unreachable -inrange11487: - %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.from11488 -logic.from11488: - br i1 %t25, label %logic.end11490, label %logic.rhs11489 -logic.rhs11489: - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic11491, label %ok11492 -panic11491: - call void @finch_panic(ptr @.str.7347, i64 287, ptr @.str.7348) - unreachable -ok11492: - %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 %panic11493, label %ok11494 -panic11493: - call void @finch_panic(ptr @.str.7349, i64 287, ptr @.str.7350) - unreachable -ok11494: - %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 %range11495, label %inrange11496 -range11495: - call void @finch_panic_index(ptr @.str.7351, i64 287, i64 %t32, i64 %t34) - unreachable -inrange11496: - %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.rend11497 -logic.rend11497: - br label %logic.end11490 -logic.end11490: - %t40 = phi i1 [ true, %logic.from11488 ], [ %t39, %logic.rend11497 ] - br label %logic.from11498 -logic.from11498: - br i1 %t40, label %logic.end11500, label %logic.rhs11499 -logic.rhs11499: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic11501, label %ok11502 -panic11501: - call void @finch_panic(ptr @.str.7352, i64 287, ptr @.str.7353) - unreachable -ok11502: - %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 %panic11503, label %ok11504 -panic11503: - call void @finch_panic(ptr @.str.7354, i64 287, ptr @.str.7355) - unreachable -ok11504: - %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 %range11505, label %inrange11506 -range11505: - call void @finch_panic_index(ptr @.str.7356, i64 287, i64 %t47, i64 %t49) - unreachable -inrange11506: - %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.rend11507 -logic.rend11507: - br label %logic.end11500 -logic.end11500: - %t55 = phi i1 [ true, %logic.from11498 ], [ %t54, %logic.rend11507 ] - br label %logic.from11508 -logic.from11508: - br i1 %t55, label %logic.end11510, label %logic.rhs11509 -logic.rhs11509: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic11511, label %ok11512 -panic11511: - call void @finch_panic(ptr @.str.7357, i64 287, ptr @.str.7358) - unreachable -ok11512: - %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 %panic11513, label %ok11514 -panic11513: - call void @finch_panic(ptr @.str.7359, i64 287, ptr @.str.7360) - unreachable -ok11514: - %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 %range11515, label %inrange11516 -range11515: - call void @finch_panic_index(ptr @.str.7361, i64 287, i64 %t62, i64 %t64) - unreachable -inrange11516: - %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.rend11517 -logic.rend11517: - br label %logic.end11510 -logic.end11510: - %t70 = phi i1 [ true, %logic.from11508 ], [ %t69, %logic.rend11517 ] - br label %logic.rend11518 -logic.rend11518: - br label %logic.end11481 -logic.end11481: - %t71 = phi i1 [ false, %logic.from11479 ], [ %t70, %logic.rend11518 ] - br i1 %t71, label %while.body11473, label %while.end11474 -while.body11473: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic11519, label %ok11520 -panic11519: - call void @finch_panic(ptr @.str.7362, i64 288, ptr @.str.7363) - unreachable -ok11520: - %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.cond11472 -while.end11474: - 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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11521, label %ok11522 -panic11521: - call void @finch_panic(ptr @.str.7364, i64 293, ptr @.str.7365) - unreachable -ok11522: - %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 %panic11523, label %ok11524 -panic11523: - call void @finch_panic(ptr @.str.7366, i64 293, ptr @.str.7367) - unreachable -ok11524: - %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 %then11525, label %endif11527 -then11525: - %t13 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7368, 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.7369, i64 12, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } %t22, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t22, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.7370, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - ret { ptr, i64, i64 } %t35 -endif11527: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11528, label %ok11529 -panic11528: - call void @finch_panic(ptr @.str.7372, i64 296, ptr @.str.7373) - unreachable -ok11529: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11530, label %ok11531 -panic11530: - call void @finch_panic(ptr @.str.7374, i64 296, ptr @.str.7375) - unreachable -ok11531: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11532, label %inrange11533 -range11532: - call void @finch_panic_index(ptr @.str.7376, i64 296, i64 %t42, i64 %t44) - unreachable -inrange11533: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - call void @finch_str_from_char(ptr %a49, i8 signext %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.7371, i64 13, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.7377, i64 8, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.7378, i64 12, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load ptr, ptr %a1 - %t73 = call { ptr, i64, i64 } @finch.json.where(ptr %t72) - store { ptr, i64, i64 } %t71, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t71, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.7379, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -} - -define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11534, label %ok11535 -panic11534: - call void @finch_panic(ptr @.str.7380, i64 301, ptr @.str.7381) - unreachable -ok11535: - %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 %panic11536, label %ok11537 -panic11536: - call void @finch_panic(ptr @.str.7382, i64 301, ptr @.str.7383) - unreachable -ok11537: - %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.from11538 -logic.from11538: - br i1 %t15, label %logic.rhs11539, label %logic.end11540 -logic.rhs11539: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11541, label %ok11542 -panic11541: - call void @finch_panic(ptr @.str.7384, i64 301, ptr @.str.7385) - unreachable -ok11542: - %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 %panic11543, label %ok11544 -panic11543: - call void @finch_panic(ptr @.str.7387, i64 301, ptr @.str.7388) - unreachable -ok11544: - %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 %panic11545, label %ok11546 -panic11545: - call void @finch_panic(ptr @.str.7389, i64 301, ptr @.str.7390) - unreachable -ok11546: - %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.7386, 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 - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %logic.rend11547 -logic.rend11547: - br label %logic.end11540 -logic.end11540: - %t40 = phi i1 [ false, %logic.from11538 ], [ %t38, %logic.rend11547 ] - ret i1 %t40 -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = call i1 @finch.json.comes(ptr %t3, { ptr, i64, i64 } %t4) - %t6 = xor i1 %t5, true - br i1 %t6, label %then11548, label %endif11550 -then11548: - %t7 = load ptr, ptr %a1 - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7391, 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.7392, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t18, 2 - ret { i1, i8, { ptr, i64, i64 } } %t20 -endif11550: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t22 = load i64, ptr %t21 - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic11551, label %ok11552 -panic11551: - call void @finch_panic(ptr @.str.7393, i64 308, ptr @.str.7394) - unreachable -ok11552: - %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = add i64 %t26, %t22 - store i64 %t27, ptr %t25 - ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } -} - -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.from11553 -logic.from11553: - br i1 %t3, label %logic.rhs11554, label %logic.end11555 -logic.rhs11554: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend11556 -logic.rend11556: - br label %logic.end11555 -logic.end11555: - %t6 = phi i1 [ false, %logic.from11553 ], [ %t5, %logic.rend11556 ] - br i1 %t6, label %then11557, label %endif11559 -then11557: - %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 -endif11559: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from11560 -logic.from11560: - br i1 %t12, label %logic.rhs11561, label %logic.end11562 -logic.rhs11561: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend11563 -logic.rend11563: - br label %logic.end11562 -logic.end11562: - %t15 = phi i1 [ false, %logic.from11560 ], [ %t14, %logic.rend11563 ] - br i1 %t15, label %then11564, label %endif11566 -then11564: - %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 -endif11566: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from11567 -logic.from11567: - br i1 %t22, label %logic.rhs11568, label %logic.end11569 -logic.rhs11568: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend11570 -logic.rend11570: - br label %logic.end11569 -logic.end11569: - %t25 = phi i1 [ false, %logic.from11567 ], [ %t24, %logic.rend11570 ] - br i1 %t25, label %then11571, label %endif11573 -then11571: - %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 -endif11573: - 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 %then11574, label %else11575 -then11574: - %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 %endif11576 -else11575: - %t12 = load i64, ptr %a1 - %t13 = icmp slt i64 %t12, 2048 - br i1 %t13, label %then11577, label %else11578 -then11577: - %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 %endif11579 -else11578: - %t32 = load i64, ptr %a1 - %t33 = icmp slt i64 %t32, 65536 - br i1 %t33, label %then11580, label %else11581 -then11580: - %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 %endif11582 -else11581: - %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 %endif11582 -endif11582: - br label %endif11579 -endif11579: - br label %endif11576 -endif11576: - %t100 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a101 - store { ptr, i64, i64 } %t100, ptr %a102 - call void @finch_str_from_bytes(ptr %a101, ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a101 - call void @finch.drop.arr_u8(ptr %a2) - ret { ptr, i64, i64 } %t103 -} - -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.cond11583 -for.cond11583: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, 4 - br i1 %t5, label %for.body11584, label %for.end11586 -for.body11584: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic11587, label %ok11588 -panic11587: - call void @finch_panic(ptr @.str.7395, i64 348, ptr @.str.7396) - unreachable -ok11588: - %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 %panic11589, label %ok11590 -panic11589: - call void @finch_panic(ptr @.str.7397, i64 348, ptr @.str.7398) - unreachable -ok11590: - %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.from11591 -logic.from11591: - br i1 %t15, label %logic.end11593, label %logic.rhs11592 -logic.rhs11592: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11594, label %ok11595 -panic11594: - call void @finch_panic(ptr @.str.7399, i64 348, ptr @.str.7400) - unreachable -ok11595: - %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 %panic11596, label %ok11597 -panic11596: - call void @finch_panic(ptr @.str.7401, i64 348, ptr @.str.7402) - unreachable -ok11597: - %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 %range11598, label %inrange11599 -range11598: - call void @finch_panic_index(ptr @.str.7403, i64 348, i64 %t22, i64 %t24) - unreachable -inrange11599: - %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.rend11600 -logic.rend11600: - br label %logic.end11593 -logic.end11593: - %t31 = phi i1 [ true, %logic.from11591 ], [ %t30, %logic.rend11600 ] - br i1 %t31, label %then11601, label %endif11603 -then11601: - %t32 = load ptr, ptr %a1 - %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.7404, i64 19, i64 0 }) - %t34 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t33, 2 - ret { i1, i64, { ptr, i64, i64 } } %t34 -endif11603: - %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 %panic11604, label %ok11605 -panic11604: - call void @finch_panic(ptr @.str.7405, i64 351, ptr @.str.7406) - unreachable -ok11605: - %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 %panic11606, label %ok11607 -panic11606: - call void @finch_panic(ptr @.str.7407, i64 351, ptr @.str.7408) - unreachable -ok11607: - %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 %range11608, label %inrange11609 -range11608: - call void @finch_panic_index(ptr @.str.7409, i64 351, i64 %t43, i64 %t45) - unreachable -inrange11609: - %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 %panic11610, label %ok11611 -panic11610: - call void @finch_panic(ptr @.str.7410, i64 352, ptr @.str.7411) - unreachable -ok11611: - %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.step11585 -for.step11585: - %t57 = load i64, ptr %a3 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a3 - br label %for.cond11583 -for.end11586: - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i8, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i8, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a216 = alloca i64, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11612, label %ok11613 -panic11612: - call void @finch_panic(ptr @.str.7412, i64 358, ptr @.str.7413) - unreachable -ok11613: - %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 %panic11614, label %ok11615 -panic11614: - call void @finch_panic(ptr @.str.7414, i64 360, ptr @.str.7415) - unreachable -ok11615: - %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.cond11616 -while.cond11616: - br label %while.body11617 -while.body11617: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic11619, label %ok11620 -panic11619: - call void @finch_panic(ptr @.str.7416, i64 362, ptr @.str.7417) - unreachable -ok11620: - %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 %panic11621, label %ok11622 -panic11621: - call void @finch_panic(ptr @.str.7418, i64 362, ptr @.str.7419) - unreachable -ok11622: - %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 %then11623, label %endif11625 -then11623: - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } { ptr @.str.7420, i64 30, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.7421, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - call void @finch.drop.arr_str(ptr %a7) - %t35 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t34, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t35 -endif11625: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11626, label %ok11627 -panic11626: - call void @finch_panic(ptr @.str.7422, i64 365, ptr @.str.7423) - unreachable -ok11627: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11628, label %ok11629 -panic11628: - call void @finch_panic(ptr @.str.7424, i64 365, ptr @.str.7425) - unreachable -ok11629: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11630, label %inrange11631 -range11630: - call void @finch_panic_index(ptr @.str.7426, i64 365, i64 %t42, i64 %t44) - unreachable -inrange11631: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - store i8 %t48, ptr %a49 - %t50 = load i8, ptr %a49 - %t51 = icmp eq i8 %t50, 34 - br i1 %t51, label %then11632, label %endif11634 -then11632: - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic11635, label %ok11636 -panic11635: - call void @finch_panic(ptr @.str.7427, i64 367, ptr @.str.7428) - unreachable -ok11636: - %t55 = getelementptr inbounds %S.json.Reader, ptr %t53, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - %t59 = load i64, ptr %a12 - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic11637, label %ok11638 -panic11637: - call void @finch_panic(ptr @.str.7430, i64 367, ptr @.str.7431) - unreachable -ok11638: - %t62 = getelementptr inbounds %S.json.Reader, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - call void @finch_str_sub(ptr %a58, ptr %a57, i64 %t59, i64 %t63, ptr @.str.7429, i64 367) - %t64 = load { ptr, i64, i64 }, ptr %a58 - %t65 = load i64, ptr %t52 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t66, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %a7 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i64 %t65 - store { ptr, i64, i64 } %t64, ptr %t68 - store i64 %t66, ptr %t52 - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11639, label %ok11640 -panic11639: - call void @finch_panic(ptr @.str.7432, i64 368, ptr @.str.7433) - unreachable -ok11640: - %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %t71 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7434, i64 0, i64 0 }, ptr %a75 - call void @finch_str_join(ptr %a76, ptr %a7, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.drop.arr_str(ptr %a7) - %t78 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t79 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t78, { ptr, i64, i64 } %t77, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t79 -endif11634: - %t80 = load i8, ptr %a49 - %t81 = zext i8 %t80 to i64 - %t82 = icmp slt i64 %t81, 32 - br i1 %t82, label %then11641, label %endif11643 -then11641: - %t83 = load ptr, ptr %a1 - %t84 = call { ptr, i64, i64 } @finch.json.where(ptr %t83) - store { ptr, i64, i64 } { ptr @.str.7435, i64 55, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.7436, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a7) - %t95 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t94, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t95 -endif11643: - %t96 = load i8, ptr %a49 - %t97 = icmp ne i8 %t96, 92 - br i1 %t97, label %then11644, label %endif11646 -then11644: - %t98 = load ptr, ptr %a1 - %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic11647, label %ok11648 -panic11647: - call void @finch_panic(ptr @.str.7437, i64 375, ptr @.str.7438) - unreachable -ok11648: - %t100 = getelementptr inbounds %S.json.Reader, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %t100 - br label %while.cond11616 -endif11646: - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic11649, label %ok11650 -panic11649: - call void @finch_panic(ptr @.str.7439, i64 378, ptr @.str.7440) - unreachable -ok11650: - %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - %t110 = load i64, ptr %a12 - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic11651, label %ok11652 -panic11651: - call void @finch_panic(ptr @.str.7442, i64 378, ptr @.str.7443) - unreachable -ok11652: - %t113 = getelementptr inbounds %S.json.Reader, ptr %t111, i32 0, i32 1 - %t114 = load i64, ptr %t113 - call void @finch_str_sub(ptr %a109, ptr %a108, i64 %t110, i64 %t114, ptr @.str.7441, i64 378) - %t115 = load { ptr, i64, i64 }, ptr %a109 - %t116 = load i64, ptr %t103 - %t117 = add i64 %t116, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t117, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t118 = load ptr, ptr %a7 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116 - store { ptr, i64, i64 } %t115, ptr %t119 - store i64 %t117, ptr %t103 - %t120 = load ptr, ptr %a1 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic11653, label %ok11654 -panic11653: - call void @finch_panic(ptr @.str.7444, i64 379, ptr @.str.7445) - unreachable -ok11654: - %t122 = getelementptr inbounds %S.json.Reader, ptr %t120, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %t122 - %t125 = load ptr, ptr %a1 - %t126 = call i8 @finch.json.peek(ptr %t125) - store i8 %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic11655, label %ok11656 -panic11655: - call void @finch_panic(ptr @.str.7446, i64 381, ptr @.str.7447) - unreachable -ok11656: - %t130 = getelementptr inbounds %S.json.Reader, ptr %t128, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %t130 - %t133 = load i8, ptr %a127 - %t134 = icmp eq i8 %t133, 110 - br i1 %t134, label %then11657, label %else11658 -then11657: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = add i64 %t136, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t137, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t138 = load ptr, ptr %a7 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i64 %t136 - store { ptr, i64, i64 } { ptr @.str.7448, i64 1, i64 0 }, ptr %t139 - store i64 %t137, ptr %t135 - br label %endif11659 -else11658: - %t140 = load i8, ptr %a127 - %t141 = icmp eq i8 %t140, 116 - br i1 %t141, label %then11660, label %else11661 -then11660: - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = add i64 %t143, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t144, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t145 = load ptr, ptr %a7 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t143 - store { ptr, i64, i64 } { ptr @.str.7449, i64 1, i64 0 }, ptr %t146 - store i64 %t144, ptr %t142 - br label %endif11662 -else11661: - %t147 = load i8, ptr %a127 - %t148 = icmp eq i8 %t147, 114 - br i1 %t148, label %then11663, label %else11664 -then11663: - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = add i64 %t150, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t151, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t152 = load ptr, ptr %a7 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i64 %t150 - store { ptr, i64, i64 } { ptr @.str.7450, i64 1, i64 0 }, ptr %t153 - store i64 %t151, ptr %t149 - br label %endif11665 -else11664: - %t154 = load i8, ptr %a127 - %t155 = icmp eq i8 %t154, 98 - br i1 %t155, label %then11666, label %else11667 -then11666: - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t157 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) - %t158 = load i64, ptr %t156 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t159, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %a7 - %t161 = getelementptr inbounds { ptr, i64, i64 }, ptr %t160, i64 %t158 - store { ptr, i64, i64 } %t157, ptr %t161 - store i64 %t159, ptr %t156 - br label %endif11668 -else11667: - %t162 = load i8, ptr %a127 - %t163 = icmp eq i8 %t162, 102 - br i1 %t163, label %then11669, label %else11670 -then11669: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t165 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) - %t166 = load i64, ptr %t164 - %t167 = add i64 %t166, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t167, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t168 = load ptr, ptr %a7 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i64 %t166 - store { ptr, i64, i64 } %t165, ptr %t169 - store i64 %t167, ptr %t164 - br label %endif11671 -else11670: - %t170 = load i8, ptr %a127 - %t171 = icmp eq i8 %t170, 34 - br label %logic.from11672 -logic.from11672: - br i1 %t171, label %logic.end11674, label %logic.rhs11673 -logic.rhs11673: - %t172 = load i8, ptr %a127 - %t173 = icmp eq i8 %t172, 92 - br label %logic.rend11675 -logic.rend11675: - br label %logic.end11674 -logic.end11674: - %t174 = phi i1 [ true, %logic.from11672 ], [ %t173, %logic.rend11675 ] - br label %logic.from11676 -logic.from11676: - br i1 %t174, label %logic.end11678, label %logic.rhs11677 -logic.rhs11677: - %t175 = load i8, ptr %a127 - %t176 = icmp eq i8 %t175, 47 - br label %logic.rend11679 -logic.rend11679: - br label %logic.end11678 -logic.end11678: - %t177 = phi i1 [ true, %logic.from11676 ], [ %t176, %logic.rend11679 ] - br i1 %t177, label %then11680, label %else11681 -then11680: - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t179 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a180, i8 signext %t179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - %t182 = load i64, ptr %t178 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a7 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t178 - br label %endif11682 -else11681: - %t186 = load i8, ptr %a127 - %t187 = icmp eq i8 %t186, 117 - br i1 %t187, label %then11683, label %else11684 -then11683: - %t188 = load ptr, ptr %a1 - %t189 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t188) - %t190 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 0 - %t191 = xor i1 %t190, true - %t192 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 2 - %t193 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 1 - br i1 %t191, label %try.failed11686, label %try.ok11687 -try.failed11686: - call void @finch.drop.arr_str(ptr %a7) - %t194 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t192, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t194 -try.ok11687: - store i64 %t193, ptr %a195 - %t196 = load i64, ptr %a195 - %t197 = icmp sge i64 %t196, 55296 - br label %logic.from11688 -logic.from11688: - br i1 %t197, label %logic.rhs11689, label %logic.end11690 -logic.rhs11689: - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, 56320 - br label %logic.rend11691 -logic.rend11691: - br label %logic.end11690 -logic.end11690: - %t200 = phi i1 [ false, %logic.from11688 ], [ %t199, %logic.rend11691 ] - br label %logic.from11692 -logic.from11692: - br i1 %t200, label %logic.rhs11693, label %logic.end11694 -logic.rhs11693: - %t201 = load ptr, ptr %a1 - %t202 = call i1 @finch.json.comes(ptr %t201, { ptr, i64, i64 } { ptr @.str.7451, i64 2, i64 0 }) - br label %logic.rend11695 -logic.rend11695: - br label %logic.end11694 -logic.end11694: - %t203 = phi i1 [ false, %logic.from11692 ], [ %t202, %logic.rend11695 ] - br i1 %t203, label %then11696, label %endif11698 -then11696: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic11699, label %ok11700 -panic11699: - call void @finch_panic(ptr @.str.7452, i64 398, ptr @.str.7453) - unreachable -ok11700: - %t206 = getelementptr inbounds %S.json.Reader, ptr %t204, i32 0, i32 1 - %t207 = load i64, ptr %t206 - %t208 = add i64 %t207, 2 - store i64 %t208, ptr %t206 - %t209 = load ptr, ptr %a1 - %t210 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t209) - %t211 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 0 - %t212 = xor i1 %t211, true - %t213 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 2 - %t214 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 1 - br i1 %t212, label %try.failed11701, label %try.ok11702 -try.failed11701: - call void @finch.drop.arr_str(ptr %a7) - %t215 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t213, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t215 -try.ok11702: - store i64 %t214, ptr %a216 - %t217 = load i64, ptr %a195 - %t218 = sub i64 %t217, 55296 - %t219 = mul i64 %t218, 1024 - %t220 = add i64 65536, %t219 - %t221 = load i64, ptr %a216 - %t222 = sub i64 %t221, 56320 - %t223 = add i64 %t220, %t222 - store i64 %t223, ptr %a195 - br label %endif11698 -endif11698: - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t225 = load i64, ptr %a195 - %t226 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t225) - %t227 = load i64, ptr %t224 - %t228 = add i64 %t227, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t229 = load ptr, ptr %a7 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227 - store { ptr, i64, i64 } %t226, ptr %t230 - store i64 %t228, ptr %t224 - br label %endif11685 -else11684: - %t231 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a232, i8 signext %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.7454, i64 22, i64 0 }, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.7455, i64 12, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load ptr, ptr %a1 - %t245 = call { ptr, i64, i64 } @finch.json.where(ptr %t244) - store { ptr, i64, i64 } %t243, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t243, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t245, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.7456, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.drop.arr_str(ptr %a7) - %t257 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t256, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t257 -endif11685: - br label %endif11682 -endif11682: - br label %endif11671 -endif11671: - br label %endif11668 -endif11668: - br label %endif11665 -endif11665: - br label %endif11662 -endif11662: - br label %endif11659 -endif11659: - %t258 = load ptr, ptr %a1 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic11703, label %ok11704 -panic11703: - call void @finch_panic(ptr @.str.7457, i64 406, ptr @.str.7458) - unreachable -ok11704: - %t260 = getelementptr inbounds %S.json.Reader, ptr %t258, i32 0, i32 1 - %t261 = load i64, ptr %t260 - store i64 %t261, ptr %a12 - br label %while.cond11616 -} - -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 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca double, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11705, label %ok11706 -panic11705: - call void @finch_panic(ptr @.str.7459, i64 411, ptr @.str.7460) - unreachable -ok11706: - %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 %then11707, label %endif11709 -then11707: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic11710, label %ok11711 -panic11710: - call void @finch_panic(ptr @.str.7461, i64 413, ptr @.str.7462) - unreachable -ok11711: - %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 %endif11709 -endif11709: - br label %while.cond11712 -while.cond11712: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic11715, label %ok11716 -panic11715: - call void @finch_panic(ptr @.str.7463, i64 415, ptr @.str.7464) - unreachable -ok11716: - %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 %panic11717, label %ok11718 -panic11717: - call void @finch_panic(ptr @.str.7465, i64 415, ptr @.str.7466) - unreachable -ok11718: - %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.from11719 -logic.from11719: - br i1 %t24, label %logic.rhs11720, label %logic.end11721 -logic.rhs11720: - %t25 = load ptr, ptr %a1 - %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic11722, label %ok11723 -panic11722: - call void @finch_panic(ptr @.str.7467, i64 415, ptr @.str.7468) - unreachable -ok11723: - %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 %panic11724, label %ok11725 -panic11724: - call void @finch_panic(ptr @.str.7469, i64 415, ptr @.str.7470) - unreachable -ok11725: - %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 %range11726, label %inrange11727 -range11726: - call void @finch_panic_index(ptr @.str.7471, i64 415, i64 %t31, i64 %t33) - unreachable -inrange11727: - %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.from11728 -logic.from11728: - br i1 %t38, label %logic.rhs11729, label %logic.end11730 -logic.rhs11729: - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11731, label %ok11732 -panic11731: - call void @finch_panic(ptr @.str.7472, i64 415, ptr @.str.7473) - unreachable -ok11732: - %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 %panic11733, label %ok11734 -panic11733: - call void @finch_panic(ptr @.str.7474, i64 415, ptr @.str.7475) - unreachable -ok11734: - %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 %range11735, label %inrange11736 -range11735: - call void @finch_panic_index(ptr @.str.7476, i64 415, i64 %t45, i64 %t47) - unreachable -inrange11736: - %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.rend11737 -logic.rend11737: - br label %logic.end11730 -logic.end11730: - %t53 = phi i1 [ false, %logic.from11728 ], [ %t52, %logic.rend11737 ] - br label %logic.from11738 -logic.from11738: - br i1 %t53, label %logic.end11740, label %logic.rhs11739 -logic.rhs11739: - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic11741, label %ok11742 -panic11741: - call void @finch_panic(ptr @.str.7477, i64 415, ptr @.str.7478) - unreachable -ok11742: - %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 %panic11743, label %ok11744 -panic11743: - call void @finch_panic(ptr @.str.7479, i64 415, ptr @.str.7480) - unreachable -ok11744: - %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 %range11745, label %inrange11746 -range11745: - call void @finch_panic_index(ptr @.str.7481, i64 415, i64 %t60, i64 %t62) - unreachable -inrange11746: - %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.rend11747 -logic.rend11747: - br label %logic.end11740 -logic.end11740: - %t68 = phi i1 [ true, %logic.from11738 ], [ %t67, %logic.rend11747 ] - br label %logic.from11748 -logic.from11748: - br i1 %t68, label %logic.end11750, label %logic.rhs11749 -logic.rhs11749: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11751, label %ok11752 -panic11751: - call void @finch_panic(ptr @.str.7482, i64 415, ptr @.str.7483) - unreachable -ok11752: - %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 %panic11753, label %ok11754 -panic11753: - call void @finch_panic(ptr @.str.7484, i64 415, ptr @.str.7485) - unreachable -ok11754: - %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 %range11755, label %inrange11756 -range11755: - call void @finch_panic_index(ptr @.str.7486, i64 415, i64 %t75, i64 %t77) - unreachable -inrange11756: - %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.rend11757 -logic.rend11757: - br label %logic.end11750 -logic.end11750: - %t83 = phi i1 [ true, %logic.from11748 ], [ %t82, %logic.rend11757 ] - br label %logic.from11758 -logic.from11758: - br i1 %t83, label %logic.end11760, label %logic.rhs11759 -logic.rhs11759: - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic11761, label %ok11762 -panic11761: - call void @finch_panic(ptr @.str.7487, i64 415, ptr @.str.7488) - unreachable -ok11762: - %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 %panic11763, label %ok11764 -panic11763: - call void @finch_panic(ptr @.str.7489, i64 415, ptr @.str.7490) - unreachable -ok11764: - %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 %range11765, label %inrange11766 -range11765: - call void @finch_panic_index(ptr @.str.7491, i64 415, i64 %t90, i64 %t92) - unreachable -inrange11766: - %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.rend11767 -logic.rend11767: - br label %logic.end11760 -logic.end11760: - %t98 = phi i1 [ true, %logic.from11758 ], [ %t97, %logic.rend11767 ] - br label %logic.from11768 -logic.from11768: - br i1 %t98, label %logic.end11770, label %logic.rhs11769 -logic.rhs11769: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic11771, label %ok11772 -panic11771: - call void @finch_panic(ptr @.str.7492, i64 415, ptr @.str.7493) - unreachable -ok11772: - %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 %panic11773, label %ok11774 -panic11773: - call void @finch_panic(ptr @.str.7494, i64 415, ptr @.str.7495) - unreachable -ok11774: - %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 %range11775, label %inrange11776 -range11775: - call void @finch_panic_index(ptr @.str.7496, i64 415, i64 %t105, i64 %t107) - unreachable -inrange11776: - %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.rend11777 -logic.rend11777: - br label %logic.end11770 -logic.end11770: - %t113 = phi i1 [ true, %logic.from11768 ], [ %t112, %logic.rend11777 ] - br label %logic.from11778 -logic.from11778: - br i1 %t113, label %logic.end11780, label %logic.rhs11779 -logic.rhs11779: - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic11781, label %ok11782 -panic11781: - call void @finch_panic(ptr @.str.7497, i64 415, ptr @.str.7498) - unreachable -ok11782: - %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 %panic11783, label %ok11784 -panic11783: - call void @finch_panic(ptr @.str.7499, i64 415, ptr @.str.7500) - unreachable -ok11784: - %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 %range11785, label %inrange11786 -range11785: - call void @finch_panic_index(ptr @.str.7501, i64 415, i64 %t120, i64 %t122) - unreachable -inrange11786: - %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.rend11787 -logic.rend11787: - br label %logic.end11780 -logic.end11780: - %t128 = phi i1 [ true, %logic.from11778 ], [ %t127, %logic.rend11787 ] - br label %logic.rend11788 -logic.rend11788: - br label %logic.end11721 -logic.end11721: - %t129 = phi i1 [ false, %logic.from11719 ], [ %t128, %logic.rend11788 ] - br i1 %t129, label %while.body11713, label %while.end11714 -while.body11713: - %t130 = load ptr, ptr %a1 - %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic11789, label %ok11790 -panic11789: - call void @finch_panic(ptr @.str.7502, i64 416, ptr @.str.7503) - unreachable -ok11790: - %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.cond11712 -while.end11714: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic11791, label %ok11792 -panic11791: - call void @finch_panic(ptr @.str.7504, i64 418, ptr @.str.7505) - unreachable -ok11792: - %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 %panic11793, label %ok11794 -panic11793: - call void @finch_panic(ptr @.str.7507, i64 418, ptr @.str.7508) - unreachable -ok11794: - %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.7506, 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 - store { ptr, i64, i64 } %t146, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load double, ptr %a148 - br i1 %t151, label %or.failed11795, label %or.ok11796 -or.failed11795: - store { ptr, i64, i64 } %t152, ptr %a155 - %t156 = load i64, ptr %a6 - %t157 = load ptr, ptr %a1 - %t158 = icmp eq ptr %t157, null - br i1 %t158, label %panic11797, label %ok11798 -panic11797: - call void @finch_panic(ptr @.str.7509, i64 419, ptr @.str.7510) - unreachable -ok11798: - %t159 = getelementptr inbounds %S.json.Reader, ptr %t157, i32 0, i32 1 - store i64 %t156, ptr %t159 - %t160 = load ptr, ptr %a1 - %t161 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t160, { ptr, i64, i64 } { ptr @.str.7511, i64 8, i64 0 }) - call void @finch_str_drop(ptr %a155) - %t162 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t161, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t162 -or.ok11796: - store double %t154, ptr %a163 - %t164 = load double, ptr %a163 - %t165 = call %S.json.Json @finch.json.new_number(double %t164) - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t167 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t166, %S.json.Json %t165, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t167 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { -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 %panic11799, label %ok11800 -panic11799: - call void @finch_panic(ptr @.str.7512, i64 428, ptr @.str.7513) - unreachable -ok11800: - %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 %panic11801, label %ok11802 -panic11801: - call void @finch_panic(ptr @.str.7514, i64 428, ptr @.str.7515) - unreachable -ok11802: - %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 %then11803, label %endif11805 -then11803: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7516, 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 -endif11805: - %t19 = load i8, ptr %a5 - %t20 = icmp eq i8 %t19, 123 - br i1 %t20, label %then11806, label %endif11808 -then11806: - %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 %panic11809, label %ok11810 -panic11809: - call void @finch_panic(ptr @.str.7517, i64 433, ptr @.str.7518) - unreachable -ok11810: - %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 %then11811, label %endif11813 -then11811: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic11814, label %ok11815 -panic11814: - call void @finch_panic(ptr @.str.7519, i64 436, ptr @.str.7520) - unreachable -ok11815: - %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 -endif11813: - br label %while.cond11816 -while.cond11816: - br label %while.body11817 -while.body11817: - %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 %then11819, label %endif11821 -then11819: - %t44 = load ptr, ptr %a1 - %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7521, i64 15, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a22) - %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 -endif11821: - %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.failed11822, label %try.ok11823 -try.failed11822: - call void @finch.drop.S_json_Json(ptr %a22) - %t53 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t51, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t53 -try.ok11823: - 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 %then11824, label %endif11826 -then11824: - %t59 = load ptr, ptr %a1 - %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7522, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 -endif11826: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic11827, label %ok11828 -panic11827: - call void @finch_panic(ptr @.str.7523, i64 449, ptr @.str.7524) - unreachable -ok11828: - %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.failed11829, label %try.ok11830 -try.failed11829: - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t73 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t71, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t73 -try.ok11830: - 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 %then11831, label %endif11833 -then11831: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic11834, label %ok11835 -panic11834: - call void @finch_panic(ptr @.str.7525, i64 454, ptr @.str.7526) - unreachable -ok11835: - %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 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - br label %while.cond11816 -endif11833: - %t86 = load ptr, ptr %a1 - %t87 = call i8 @finch.json.peek(ptr %t86) - %t88 = icmp eq i8 %t87, 125 - br i1 %t88, label %then11836, label %endif11838 -then11836: - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic11839, label %ok11840 -panic11839: - call void @finch_panic(ptr @.str.7527, i64 458, ptr @.str.7528) - unreachable -ok11840: - %t91 = getelementptr inbounds %S.json.Reader, ptr %t89, i32 0, i32 1 - %t92 = load i64, ptr %t91 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %t91 - %t94 = load %S.json.Json, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - %t95 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t96 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t95, %S.json.Json %t94, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t96 -endif11838: - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7529, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 -endif11808: - %t100 = load i8, ptr %a5 - %t101 = icmp eq i8 %t100, 91 - br i1 %t101, label %then11841, label %endif11843 -then11841: - %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 %panic11844, label %ok11845 -panic11844: - call void @finch_panic(ptr @.str.7530, i64 466, ptr @.str.7531) - unreachable -ok11845: - %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 %then11846, label %endif11848 -then11846: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic11849, label %ok11850 -panic11849: - call void @finch_panic(ptr @.str.7532, i64 469, ptr @.str.7533) - unreachable -ok11850: - %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 -endif11848: - br label %while.cond11851 -while.cond11851: - br label %while.body11852 -while.body11852: - %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.failed11854, label %try.ok11855 -try.failed11854: - call void @finch.drop.S_json_Json(ptr %a103) - %t127 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t125, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t127 -try.ok11855: - 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 %then11856, label %endif11858 -then11856: - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic11859, label %ok11860 -panic11859: - call void @finch_panic(ptr @.str.7534, i64 477, ptr @.str.7535) - unreachable -ok11860: - %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 - call void @finch.drop.S_json_Json(ptr %a128) - br label %while.cond11851 -endif11858: - %t139 = load ptr, ptr %a1 - %t140 = call i8 @finch.json.peek(ptr %t139) - %t141 = icmp eq i8 %t140, 93 - br i1 %t141, label %then11861, label %endif11863 -then11861: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic11864, label %ok11865 -panic11864: - call void @finch_panic(ptr @.str.7536, i64 481, ptr @.str.7537) - unreachable -ok11865: - %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - store i64 %t146, ptr %t144 - %t147 = load %S.json.Json, ptr %a103 - call void @finch.drop.S_json_Json(ptr %a128) - %t148 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t149 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t148, %S.json.Json %t147, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t149 -endif11863: - %t150 = load ptr, ptr %a1 - %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7538, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a128) - call void @finch.drop.S_json_Json(ptr %a103) - %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 -endif11843: - %t153 = load i8, ptr %a5 - %t154 = icmp eq i8 %t153, 34 - br i1 %t154, label %then11866, label %endif11868 -then11866: - %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.failed11869, label %try.ok11870 -try.failed11869: - %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.ok11870: - store { ptr, i64, i64 } %t160, ptr %a162 - %t163 = load { ptr, i64, i64 }, ptr %a162 - %t164 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t163) - call void @finch_str_drop(ptr %a162) - %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 -endif11868: - %t167 = load i8, ptr %a5 - %t168 = icmp eq i8 %t167, 116 - br i1 %t168, label %then11871, label %endif11873 -then11871: - %t169 = load ptr, ptr %a1 - %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7539, 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.failed11874, label %try.ok11875 -try.failed11874: - %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.ok11875: - %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 -endif11873: - %t178 = load i8, ptr %a5 - %t179 = icmp eq i8 %t178, 102 - br i1 %t179, label %then11876, label %endif11878 -then11876: - %t180 = load ptr, ptr %a1 - %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7540, 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.failed11879, label %try.ok11880 -try.failed11879: - %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.ok11880: - %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 -endif11878: - %t189 = load i8, ptr %a5 - %t190 = icmp eq i8 %t189, 110 - br i1 %t190, label %then11881, label %endif11883 -then11881: - %t191 = load ptr, ptr %a1 - %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7541, 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.failed11884, label %try.ok11885 -try.failed11884: - %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.ok11885: - %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 -endif11883: - %t200 = load i8, ptr %a5 - %t201 = icmp eq i8 %t200, 45 - br label %logic.from11886 -logic.from11886: - br i1 %t201, label %logic.end11888, label %logic.rhs11887 -logic.rhs11887: - %t202 = load i8, ptr %a5 - %t203 = icmp uge i8 %t202, 48 - br label %logic.from11889 -logic.from11889: - br i1 %t203, label %logic.rhs11890, label %logic.end11891 -logic.rhs11890: - %t204 = load i8, ptr %a5 - %t205 = icmp ule i8 %t204, 57 - br label %logic.rend11892 -logic.rend11892: - br label %logic.end11891 -logic.end11891: - %t206 = phi i1 [ false, %logic.from11889 ], [ %t205, %logic.rend11892 ] - br label %logic.rend11893 -logic.rend11893: - br label %logic.end11888 -logic.end11888: - %t207 = phi i1 [ true, %logic.from11886 ], [ %t206, %logic.rend11893 ] - br i1 %t207, label %then11894, label %endif11896 -then11894: - %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.failed11897, label %try.ok11898 -try.failed11897: - %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.ok11898: - %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 -endif11896: - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7542, i64 7, i64 0 }) - %t219 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t218, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t219 -} - -define internal void @finch.drop.S_json_Reader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Reader, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - 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.failed11899, label %try.ok11900 -try.failed11899: - call void @finch.drop.S_json_Reader(ptr %a7) - %t13 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t11, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t13 -try.ok11900: - 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 %then11901, label %endif11903 -then11901: - %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7543, i64 19, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a14) - call void @finch.drop.S_json_Reader(ptr %a7) - %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 -endif11903: - %t23 = load %S.json.Json, ptr %a14 - call void @finch.drop.S_json_Reader(ptr %a7) - %t24 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t25 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, %S.json.Json %t23, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t25 -} - -define internal { ptr, i64, i64 } @finch.embedded.names() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7544, i64 18, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7545, i64 12, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7546, i64 12, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7547, i64 12, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7548, i64 20, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7549, i64 12, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7550, i64 20, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7551, i64 15, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define internal { ptr, i64, i64 } @finch.embedded.texts() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7552, i64 24981, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7553, i64 12884, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7554, i64 2846, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7555, i64 1406, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7556, i64 995, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7557, i64 2539, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7558, i64 1792, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7559, i64 365, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define i32 @main(i32 %argc, ptr %argv) { -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 deleted file mode 100644 index b87f062..0000000 --- a/bootstrap/linux-x86_64.ll +++ /dev/null @@ -1,117512 +0,0 @@ -; generated by the Finch compiler written in Finch - -%S.main.Loader = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { 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, i1, i1, { ptr, i64, i64 }, i64, i64 } -%S.platform.Target = type { { ptr, i64, i64 }, i1, i1, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Options = type { i1, i1, i1, { ptr, i64, i64 }, %S.platform.Target } -%S.gen.Template = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1, i1 } -%S.gen.Binds = type { { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.EnumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Cleanup = type { i1, i64 } -%S.gen.SumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.SumPat = type { i64, { ptr, i64, i64 } } -%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Pending = type { { ptr, i64, i64 }, %S.ast.Type, i1 } -%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.FnSig = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.StructDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } -%S.gen.Val = type { { ptr, i64, i64 }, %S.ast.Type, i1, i1 } -%S.gen.Place = type { { ptr, i64, i64 }, %S.ast.Type } -%S.gen.Ref = type { i1, %S.gen.Place, %S.gen.Val } -%S.cimport.CImports = type { { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Gen = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { 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 }, { 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_tag = type { i32, i32, ptr, ptr } -%S.C.__mbstate_t = type { i32, [4 x i8] } -%S.C.fpos_t = type { i64, %S.C.__mbstate_t } -@.str.1 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.2 = private unnamed_addr constant [2 x i8] c".\00" -@.str.3 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.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 [8 x i8] c"/files-\00" -@.str.146 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.147 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.148 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.149 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.150 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.151 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.153 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.155 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.156 = private unnamed_addr constant [8 x i8] c"version\00" -@.str.157 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.158 = private unnamed_addr constant [10 x i8] c"--version\00" -@.str.159 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" -@.str.160 = private unnamed_addr constant [1 x i8] c"\00" -@.str.161 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.162 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.164 = private unnamed_addr constant [4 x i8] c"lsp\00" -@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.166 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.168 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.169 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.170 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.171 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.172 = private unnamed_addr constant [1 x i8] c"\00" -@.str.173 = private unnamed_addr constant [4 x i8] c"-O2\00" -@.str.174 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.175 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.176 = private unnamed_addr constant [3 x i8] c"-o\00" -@.str.177 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.178 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.179 = private unnamed_addr constant [9 x i8] c"--shared\00" -@.str.180 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.181 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.182 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.183 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.185 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.186 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.187 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.188 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.189 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.190 = private unnamed_addr constant [10 x i8] c"--overlay\00" -@.str.191 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.192 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.193 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.194 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.195 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.196 = private unnamed_addr constant [3 x i8] c"-g\00" -@.str.197 = private unnamed_addr constant [9 x i8] c"--target\00" -@.str.198 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.199 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.200 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.201 = private unnamed_addr constant [12 x i8] c"/finch_run_\00" -@.str.202 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.203 = private unnamed_addr constant [5 x i8] c".dll\00" -@.str.204 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.205 = private unnamed_addr constant [7 x i8] c".dylib\00" -@.str.206 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.207 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.208 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.209 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.210 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.212 = private unnamed_addr constant [8 x i8] c"/../std\00" -@.str.213 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.214 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.216 = private unnamed_addr constant [20 x i8] c"/../share/finch/std\00" -@.str.217 = private unnamed_addr constant [4 x i8] c"std\00" -@.str.218 = private unnamed_addr constant [10 x i8] c"/path.fch\00" -@.str.219 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.220 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" -@.str.221 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @getenv(ptr) -@.str.222 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.223 = private unnamed_addr constant [1 x i8] c"\00" -@.str.224 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.225 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.226 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.227 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.228 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.229 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.230 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.231 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.232 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.233 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.234 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.235 = private unnamed_addr constant [1 x i8] c"\00" -@.str.236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.239 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.240 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.241 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.243 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.244 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.245 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" -@.str.246 = private unnamed_addr constant [1 x i8] c"\00" -@.str.247 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.248 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" -@.str.249 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.250 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.251 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.252 = private unnamed_addr constant [35 x i8] c"/../share/finch/runtime/finch_rt.c\00" -@.str.253 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.254 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.255 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.256 = private unnamed_addr constant [1 x i8] c"\00" -@.str.257 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.258 = private unnamed_addr constant [4 x i8] c" -g\00" -@.str.259 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.260 = private unnamed_addr constant [2 x i8] c" \00" -@.str.261 = private unnamed_addr constant [2 x i8] c" \00" -@.str.262 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.263 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.264 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.265 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.266 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.267 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.268 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.269 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.270 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.271 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.272 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.273 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.274 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.275 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.276 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.277 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.278 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.279 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.280 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.281 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.282 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.283 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.284 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.285 = private unnamed_addr constant [2 x i8] c":\00" -@.str.286 = private unnamed_addr constant [2 x i8] c":\00" -@.str.287 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.288 = private unnamed_addr constant [1 x i8] c"\00" -@.str.289 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.290 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.291 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.292 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.293 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.294 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.295 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.296 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.297 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.298 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.299 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.300 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.301 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.302 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.303 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.304 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.305 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.306 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.307 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.308 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.310 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.311 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.312 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.313 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.315 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.316 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.317 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.318 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.319 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.322 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.323 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.324 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.325 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.326 = private unnamed_addr constant [3 x i8] c"+=\00" -@.str.327 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str.328 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str.329 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str.330 = private unnamed_addr constant [3 x i8] c"%=\00" -@.str.331 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.332 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.333 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.335 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.336 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.338 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.340 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.341 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.342 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" -@.str.343 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.344 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.345 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.347 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.349 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.350 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.351 = private unnamed_addr constant [1 x i8] c"\00" -@.str.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.353 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.354 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.355 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.356 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00" -@.str.357 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.358 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.359 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.360 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.361 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.362 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.369 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.370 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.371 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.372 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.373 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.374 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.375 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.376 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.377 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.378 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.379 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.381 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.382 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.383 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.384 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.385 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.386 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.387 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.388 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.389 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.390 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.391 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.392 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" -@.str.393 = private unnamed_addr constant [1 x i8] c"\00" -@.str.394 = private unnamed_addr constant [1 x i8] c"\00" -@.str.395 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.396 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.398 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.399 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.400 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.401 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.402 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.403 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.404 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.406 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.407 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.408 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.409 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.410 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.411 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.415 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.416 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.418 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.420 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.421 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.422 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.423 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.424 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.425 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.426 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.427 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.428 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.429 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.430 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.431 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.432 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.434 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.435 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.436 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.442 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.443 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.444 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.445 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.446 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.448 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.449 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.450 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.451 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.452 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.453 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.454 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.455 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.456 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.457 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.458 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.459 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.460 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.461 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.465 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.466 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.467 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.468 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.469 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.470 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.471 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.472 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.473 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.474 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.475 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.476 = private unnamed_addr constant [1 x i8] c"\00" -@.str.477 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.478 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.479 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" -@.str.480 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" -@.str.481 = private unnamed_addr constant [1 x i8] c"\00" -@.str.482 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" -@.str.483 = private unnamed_addr constant [1 x i8] c"\00" -@.str.484 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00" -@.str.485 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" -@.str.486 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.487 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.488 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.489 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.491 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.492 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.493 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.494 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.495 = private unnamed_addr constant [1 x i8] c"\00" -@.str.496 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.497 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.498 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.499 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.500 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.501 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.502 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.503 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.504 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.506 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.507 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.508 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.509 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.510 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.511 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.512 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.513 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.514 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.516 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.517 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.518 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.519 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.520 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.521 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.522 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.523 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.524 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.525 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.527 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.528 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.529 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.530 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.531 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.532 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.533 = private unnamed_addr constant [2 x i8] c".\00" -@.str.534 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.535 = private unnamed_addr constant [8 x i8] c"nothing\00" -@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.537 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.538 = private unnamed_addr constant [2 x i8] c":\00" -@.str.539 = private unnamed_addr constant [2 x i8] c":\00" -@.str.540 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.541 = private unnamed_addr constant [1 x i8] c"\00" -@.str.542 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.545 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.546 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.547 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.548 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.549 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.550 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.553 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.554 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.555 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.556 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.557 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.558 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.559 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.560 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.561 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.562 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.563 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.564 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.565 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.566 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.567 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.568 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.569 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.570 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.571 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.572 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.573 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.574 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.575 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.576 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.577 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.578 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.579 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.580 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.581 = private unnamed_addr constant [12 x i8] c"end of file\00" -@.str.582 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.583 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.584 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.585 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.586 = private unnamed_addr constant [9 x i8] c"a string\00" -@.str.587 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.588 = private unnamed_addr constant [7 x i8] c"a char\00" -@.str.589 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.590 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.591 = private unnamed_addr constant [10 x i8] c"expected \00" -@.str.592 = private unnamed_addr constant [9 x i8] c", found \00" -@.str.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.594 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.595 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.596 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.597 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.598 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.599 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.600 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.601 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.602 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.603 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.604 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.605 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.606 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.607 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.608 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.609 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.610 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.611 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.612 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.613 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.614 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.615 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.616 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.617 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.618 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.619 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.620 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.621 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.622 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.623 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.624 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.625 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" -@.str.626 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.627 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.628 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" -@.str.629 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.630 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.631 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.632 = private unnamed_addr constant [40 x i8] c"']' (a map type looks like map[str]int)\00" -@.str.633 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.634 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.635 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.636 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.637 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.638 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.639 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.640 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.641 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.642 = private unnamed_addr constant [2 x i8] c".\00" -@.str.643 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.644 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.645 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.646 = private unnamed_addr constant [2 x i8] c",\00" -@.str.647 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.648 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.649 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.650 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.651 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.652 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.653 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.654 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.655 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.656 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.657 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.658 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.659 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.660 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.661 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.662 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.663 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.664 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.666 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.667 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.668 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.669 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.670 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.671 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.672 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.673 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.674 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.675 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.676 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.677 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.678 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.679 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.680 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.681 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.682 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.683 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.684 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.685 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.686 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.687 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.688 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.689 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.690 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.691 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.692 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.693 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.694 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.695 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.696 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.697 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.698 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.699 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.700 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.701 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.703 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.705 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.706 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.707 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.708 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.709 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.710 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.711 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.712 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.714 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.715 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.716 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.717 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.718 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.719 = private unnamed_addr constant [2 x i8] c".\00" -@.str.720 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.721 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.723 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.725 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.726 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.727 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.728 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.729 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.730 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" -@.str.731 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.732 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.733 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.735 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.736 = private unnamed_addr constant [2 x i8] c":\00" -@.str.737 = private unnamed_addr constant [2 x i8] c":\00" -@.str.738 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.739 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" -@.str.740 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.741 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.742 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" -@.str.743 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.744 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.745 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.746 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.747 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.748 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.749 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.750 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.751 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.752 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.753 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.754 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.755 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" -@.str.756 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.757 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.758 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.759 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.760 = private unnamed_addr constant [7 x i8] c"'enum'\00" -@.str.761 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.762 = private unnamed_addr constant [13 x i8] c"an enum name\00" -@.str.763 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.764 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.765 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.766 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.767 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" -@.str.768 = private unnamed_addr constant [8 x i8] c"variant\00" -@.str.769 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.770 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" -@.str.771 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.772 = private unnamed_addr constant [2 x i8] c")\00" -@.str.773 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.774 = private unnamed_addr constant [2 x i8] c",\00" -@.str.775 = private unnamed_addr constant [2 x i8] c")\00" -@.str.776 = private unnamed_addr constant [36 x i8] c"')' after the values of the variant\00" -@.str.777 = private unnamed_addr constant [13 x i8] c"the variant \00" -@.str.778 = private unnamed_addr constant [28 x i8] c" has empty () : write just \00" -@.str.779 = private unnamed_addr constant [21 x i8] c" if it holds nothing\00" -@.str.780 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.781 = private unnamed_addr constant [53 x i8] c"a variant can't have both values inside and a number\00" -@.str.782 = private unnamed_addr constant [1 x i8] c"\00" -@.str.783 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.784 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.785 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.786 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" -@.str.787 = private unnamed_addr constant [2 x i8] c",\00" -@.str.788 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.789 = private unnamed_addr constant [17 x i8] c" has no variants\00" -@.str.790 = private unnamed_addr constant [55 x i8] c"an enum whose variants hold values can't number them (\00" -@.str.791 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.793 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.794 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.795 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.796 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.797 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.798 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.799 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.800 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.801 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.802 = private unnamed_addr constant [8 x i8] c"'match'\00" -@.str.803 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.804 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.805 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.806 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.807 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.808 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\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 [38 x i8] c"a match is never closed (missing '}')\00" -@.str.812 = private unnamed_addr constant [4 x i8] c"arm\00" -@.str.813 = private unnamed_addr constant [9 x i8] c"patterns\00" -@.str.814 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.815 = private unnamed_addr constant [2 x i8] c",\00" -@.str.816 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.817 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00" -@.str.818 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.819 = private unnamed_addr constant [2 x i8] c",\00" -@.str.820 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.821 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.822 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" -@.str.823 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.824 = private unnamed_addr constant [4 x i8] c"'['\00" -@.str.825 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.826 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" -@.str.827 = private unnamed_addr constant [2 x i8] c",\00" -@.str.828 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.829 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" -@.str.830 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.831 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.832 = private unnamed_addr constant [9 x i8] c"'struct'\00" -@.str.833 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.834 = private unnamed_addr constant [14 x i8] c"a struct name\00" -@.str.835 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.836 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.837 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.838 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.839 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.840 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" -@.str.841 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.842 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.843 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" -@.str.844 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.845 = private unnamed_addr constant [13 x i8] c"a field name\00" -@.str.846 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.847 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.848 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.849 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.850 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" -@.str.851 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.852 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" -@.str.853 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.854 = private unnamed_addr constant [16 x i8] c"a function name\00" -@.str.855 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.856 = private unnamed_addr constant [2 x i8] c".\00" -@.str.857 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.858 = private unnamed_addr constant [14 x i8] c"a method name\00" -@.str.859 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.860 = private unnamed_addr constant [4 x i8] c"'('\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 [2 x i8] c")\00" -@.str.864 = private unnamed_addr constant [6 x i8] c"param\00" -@.str.865 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.866 = private unnamed_addr constant [17 x i8] c"a parameter name\00" -@.str.867 = private unnamed_addr constant [2 x i8] c",\00" -@.str.868 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.869 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.870 = private unnamed_addr constant [2 x i8] c")\00" -@.str.871 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.872 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.873 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.874 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.875 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.876 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.877 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.878 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" -@.str.879 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.880 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.881 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.882 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.883 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.884 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.885 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.886 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.887 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.888 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.889 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" -@.str.890 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.891 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.892 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.893 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.894 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.895 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.896 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.897 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.898 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" -@.str.899 = private unnamed_addr constant [2 x i8] c",\00" -@.str.900 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.901 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" -@.str.902 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.903 = private unnamed_addr constant [5 x i8] c"'in'\00" -@.str.904 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.905 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" -@.str.906 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.907 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.908 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.909 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.910 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.911 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.912 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.913 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.914 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.915 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.916 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.917 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.918 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.919 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.920 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.921 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.922 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.923 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" -@.str.924 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.925 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.926 = private unnamed_addr constant [16 x i8] c"a variable name\00" -@.str.927 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.928 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.929 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.930 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.931 = private unnamed_addr constant [2 x i8] c"=\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 [3 x i8] c"%=\00" -@.str.937 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.938 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.939 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.940 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" -@.str.941 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.942 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.943 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.944 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.945 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.946 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.947 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.948 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" -@.str.949 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.950 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.951 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.952 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.953 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.954 = private unnamed_addr constant [5 x i8] c"'if'\00" -@.str.955 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.956 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.957 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.958 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.959 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.960 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.961 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.962 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.963 = private unnamed_addr constant [2 x i8] c">\00" -@.str.964 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.965 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.966 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.967 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.968 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.969 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.970 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.971 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.972 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.973 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.974 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.975 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.976 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.977 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.978 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.979 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.980 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.981 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.982 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.983 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.984 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.986 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.987 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.988 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.989 = private unnamed_addr constant [2 x i8] c")\00" -@.str.990 = private unnamed_addr constant [2 x i8] c")\00" -@.str.991 = private unnamed_addr constant [1 x i8] c"\00" -@.str.992 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.993 = private unnamed_addr constant [2 x i8] c":\00" -@.str.994 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.995 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" -@.str.996 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.997 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" -@.str.998 = private unnamed_addr constant [2 x i8] c",\00" -@.str.999 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1000 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1001 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1002 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1003 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1004 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.1005 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1006 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" -@.str.1007 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1008 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1009 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1010 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.1011 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1012 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1013 = private unnamed_addr constant [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"']'\00" -@.str.1017 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1018 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1019 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1021 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.1022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1023 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1024 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1025 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1026 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1027 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1028 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1029 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1030 = private unnamed_addr constant [30 x i8] c"used .depth 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 [30 x i8] c"used .depth on a null pointer\00" -@.str.1033 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1034 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1035 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.1036 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1037 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1038 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1039 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1040 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1041 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1042 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1043 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1044 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1045 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1046 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1047 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1048 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" -@.str.1049 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1050 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1051 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1052 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1053 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.1054 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1055 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1056 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1057 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.1058 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1059 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.1060 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1061 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1062 = private unnamed_addr constant [6 x i8] c"targs\00" -@.str.1063 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1064 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1065 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.1066 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1067 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1068 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1069 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.1070 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.1071 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" -@.str.1072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1073 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1074 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.1075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1076 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1077 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.1078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1079 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1080 = private unnamed_addr constant [2 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 [12 x i8] c"src/gen.fch\00" -@.str.1084 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1085 = private unnamed_addr constant [4 x i8] c"@R\09\00" -@.str.1086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1087 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1089 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1090 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1091 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1092 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1093 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1094 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1095 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1097 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1099 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1100 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1101 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1102 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1103 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1104 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1105 = private unnamed_addr constant [6 x i8] c" -> !\00" -@.str.1106 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1107 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.1108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1109 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1111 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1112 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1114 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1117 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.1118 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.1119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1120 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1123 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1124 = private unnamed_addr constant [4 x i8] c"@I\09\00" -@.str.1125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1126 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1128 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1132 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1135 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1136 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1141 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1143 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1146 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1147 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1148 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.1149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1150 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1152 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.1156 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1157 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1162 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1164 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1165 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1166 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1167 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1168 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1169 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1170 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1171 = private unnamed_addr constant [7 x i8] c"](...)\00" -@.str.1172 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1174 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1176 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"@S\09\00" -@.str.1182 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1183 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1185 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [28 x i8] c"used .idx on a null pointer\00" -@.str.1191 = private unnamed_addr constant [5 x i8] c"@SF\09\00" -@.str.1192 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1193 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1195 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1198 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 .progs 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 [1 x i8] c"\00" -@.str.1203 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1204 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1205 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1206 = private unnamed_addr constant [4 x i8] c"@E\09\00" -@.str.1207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1208 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1210 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1211 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1213 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1215 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1216 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1217 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1219 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1221 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1223 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1225 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1226 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1227 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1229 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c":\00" -@.str.1232 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1233 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.1234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1235 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.1236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1240 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1242 = private unnamed_addr constant [6 x i8] c"call \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 .body on a null pointer\00" -@.str.1245 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1246 = private unnamed_addr constant [9 x i8] c", !dbg !\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 .body on a null pointer\00" -@.str.1249 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1251 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1252 = private unnamed_addr constant [3 x i8] c"%t\00" -@.str.1253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1254 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1256 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1258 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1260 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1261 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1263 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1265 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1266 = private unnamed_addr constant [11 x i8] c"br label %\00" -@.str.1267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1268 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1269 = private unnamed_addr constant [7 x i8] c"br i1 \00" -@.str.1270 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1271 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1273 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1275 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1276 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1278 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1280 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1281 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1282 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str.1283 = private unnamed_addr constant [11 x i8] c", align 16\00" -@.str.1284 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str.1285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1286 = private unnamed_addr constant [7 x i8] c"store \00" -@.str.1287 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1288 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1289 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.1290 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1291 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1292 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1293 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1294 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1295 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1296 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1297 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1298 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1299 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1300 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1301 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1302 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1303 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1304 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1305 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1306 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1307 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1308 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1311 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1313 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1316 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1319 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1321 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1324 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1327 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1329 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1332 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.1335 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1337 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1340 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1344 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1346 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1347 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1348 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1349 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1350 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1351 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1352 = 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.1353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1354 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1355 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" -@.str.1356 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1357 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1359 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1361 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.1362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1363 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1365 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.1366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1367 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1370 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1371 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1372 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1373 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1374 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1375 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1376 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" -@.str.1377 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1378 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1379 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1381 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1382 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1383 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1385 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1386 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1387 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1388 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1389 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" -@.str.1390 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1391 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1393 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1394 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1396 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1397 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.1402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1403 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1404 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.1405 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1406 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1407 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1408 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.1409 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1410 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.1411 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1412 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1413 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1414 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1415 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1416 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1417 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" -@.str.1418 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1419 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1420 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.1421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1422 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1423 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1424 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1425 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1426 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1427 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1428 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1429 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1430 = private unnamed_addr constant [4 x i8] c"%S.\00" -@.str.1431 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1432 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1434 = private unnamed_addr constant [7 x i8] c"{ i1, \00" -@.str.1435 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" -@.str.1436 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1437 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1438 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1439 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1440 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1441 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1442 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1443 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1444 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.1445 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1446 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1447 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1448 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1449 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.1450 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.1451 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1452 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1453 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1454 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1455 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1456 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1458 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1459 = private unnamed_addr constant [5 x i8] c"arr_\00" -@.str.1460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1461 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1462 = private unnamed_addr constant [5 x i8] c"map_\00" -@.str.1463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1464 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1466 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1467 = private unnamed_addr constant [3 x i8] c"E_\00" -@.str.1468 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1469 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1470 = private unnamed_addr constant [3 x i8] c"S_\00" -@.str.1471 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1472 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.1473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1476 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1477 = private unnamed_addr constant [7 x i8] c"@.str.\00" -@.str.1478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1479 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1480 = private unnamed_addr constant [2 x i8] c"\5C\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 .head on a null pointer\00" -@.str.1483 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str.1484 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str.1485 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1486 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" -@.str.1487 = private unnamed_addr constant [7 x i8] c"{ ptr \00" -@.str.1488 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1489 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" -@.str.1490 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1491 = private unnamed_addr constant [6 x i8] c"panic\00" -@.str.1492 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str.1493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1494 = private unnamed_addr constant [30 x i8] c"used .files 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 [28 x i8] c"call void @finch_panic(ptr \00" -@.str.1497 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1498 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1499 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1500 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1502 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1503 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.1504 = private unnamed_addr constant [8 x i8] c"inrange\00" -@.str.1505 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" -@.str.1506 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1508 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1510 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" -@.str.1511 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1512 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1513 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1514 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1515 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1517 = private unnamed_addr constant [29 x i8] c"used .term 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 .body 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 [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.1526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1527 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1529 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1531 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1533 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1535 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1537 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1539 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.1540 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.1541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1542 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1544 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1546 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1547 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1548 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.1549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1550 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1552 = private unnamed_addr constant [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp on a null pointer\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 .term 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 [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1559 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1560 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1561 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1562 = private unnamed_addr constant [7 x i8] c"n.cond\00" -@.str.1563 = private unnamed_addr constant [7 x i8] c"n.body\00" -@.str.1564 = private unnamed_addr constant [6 x i8] c"n.end\00" -@.str.1565 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1566 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.1567 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1568 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1570 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1571 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.1572 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1576 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1577 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.1578 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1579 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1580 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1581 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1582 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1583 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1584 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1585 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1586 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1587 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" -@.str.1588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1589 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1591 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1592 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1594 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1595 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1596 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1597 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1598 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1599 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1600 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1601 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" -@.str.1602 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1603 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1604 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1606 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1607 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1608 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1610 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1611 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1615 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1616 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1617 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" -@.str.1618 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1620 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1622 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1623 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1624 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1625 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1626 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1627 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1628 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.1629 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1633 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1635 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1636 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1638 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1639 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" -@.str.1640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1642 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" -@.str.1643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1645 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1646 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1647 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" -@.str.1648 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1649 = private unnamed_addr constant [31 x i8] c"call void @finch_str_drop(ptr \00" -@.str.1650 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1651 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1652 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1653 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1655 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.1656 = private unnamed_addr constant [13 x i8] c"@finch.drop.\00" -@.str.1657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1658 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1660 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1661 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1663 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1664 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1665 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1666 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1667 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1668 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1670 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1671 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_free(ptr %a)\00" -@.str.1672 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1676 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1677 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1678 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1680 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1681 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1682 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1683 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1685 = private unnamed_addr constant [34 x i8] c"call void @finch_map_free(ptr %a)\00" -@.str.1686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1690 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1691 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1694 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1695 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1696 = private unnamed_addr constant [9 x i8] c"(ptr %a)\00" -@.str.1697 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1698 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1699 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1700 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1702 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1704 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1707 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1709 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1710 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1711 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.1712 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1713 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1714 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" -@.str.1715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1716 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1717 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1718 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1719 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1720 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1721 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1722 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1723 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1724 = private unnamed_addr constant [5 x i8] c"%lld\00" -@.str.1725 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1726 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1727 = private unnamed_addr constant [5 x i8] c"%llu\00" -@.str.1728 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1729 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1730 = private unnamed_addr constant [3 x i8] c"%g\00" -@.str.1731 = private unnamed_addr constant [8 x i8] c"double \00" -@.str.1732 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1733 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1734 = private unnamed_addr constant [9 x i8] c"sext i8 \00" -@.str.1735 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1736 = private unnamed_addr constant [5 x i8] c"'%c'\00" -@.str.1737 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1738 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.1739 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1740 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1741 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1742 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1743 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1744 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1745 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1746 = private unnamed_addr constant [3 x i8] c"%s\00" -@.str.1747 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.1748 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1749 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1750 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1751 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.1752 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1753 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" -@.str.1754 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1755 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1756 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1757 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1758 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1759 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1760 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1761 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1762 = private unnamed_addr constant [9 x i8] c"ptr.null\00" -@.str.1763 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" -@.str.1764 = private unnamed_addr constant [9 x i8] c"ptr.done\00" -@.str.1765 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1766 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1767 = private unnamed_addr constant [7 x i8] c"0x%llx\00" -@.str.1768 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1769 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.1770 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1771 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1772 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1773 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1774 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1775 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1776 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1777 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" -@.str.1778 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1779 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" -@.str.1780 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1781 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1782 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1783 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1784 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.1785 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" -@.str.1786 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1787 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1788 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1789 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" -@.str.1790 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1791 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1793 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" -@.str.1794 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.1795 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1796 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1797 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1798 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" -@.str.1799 = private unnamed_addr constant [6 x i8] c", i8 \00" -@.str.1800 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1801 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1802 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1803 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" -@.str.1804 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1805 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.1806 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1807 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1808 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1809 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" -@.str.1810 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1811 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1812 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1813 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1814 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1815 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" -@.str.1816 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1817 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1818 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1819 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1820 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1821 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1822 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" -@.str.1823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1824 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1826 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1827 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1830 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1831 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1832 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1833 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1834 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1835 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1836 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1837 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.1838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1839 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1840 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1841 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1842 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1843 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1844 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1846 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1847 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1848 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1849 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1851 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1853 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1854 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1855 = private unnamed_addr constant [11 x i8] c"enum.other\00" -@.str.1856 = private unnamed_addr constant [10 x i8] c"enum.done\00" -@.str.1857 = private unnamed_addr constant [7 x i8] c"enum.v\00" -@.str.1858 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1860 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1862 = private unnamed_addr constant [12 x i8] c"switch i32 \00" -@.str.1863 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1864 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1865 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1866 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1868 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1870 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1872 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1873 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1874 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" -@.str.1875 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str.1876 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1877 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1878 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1879 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1880 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1881 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1882 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1883 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1884 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1885 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.1886 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1887 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1888 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1889 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1891 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1892 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1893 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1894 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1895 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1896 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1897 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1898 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1899 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1900 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1901 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1902 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1903 = private unnamed_addr constant [5 x i8] c"%buf\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 [5 x i8] c"%buf\00" -@.str.1907 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1908 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1911 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1912 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.1913 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1915 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1918 = private unnamed_addr constant [32 x i8] c"used .structs 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 [4 x i8] c"i64\00" -@.str.1921 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1922 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1924 = private unnamed_addr constant [10 x i8] c"sum.other\00" -@.str.1925 = private unnamed_addr constant [9 x i8] c"sum.done\00" -@.str.1926 = private unnamed_addr constant [6 x i8] c"sum.v\00" -@.str.1927 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1928 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1930 = private unnamed_addr constant [12 x i8] c"switch i64 \00" -@.str.1931 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1932 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1934 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1936 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1938 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1940 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1941 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1942 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1944 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1945 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1947 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1948 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1950 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1953 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1954 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1955 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1956 = private unnamed_addr constant [4 x i8] c"(?)\00" -@.str.1957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1958 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1960 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1961 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1962 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1963 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1964 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1966 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1967 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1968 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1970 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1973 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1974 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1976 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1977 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" -@.str.1978 = private unnamed_addr constant [7 x i8] c"trunc \00" -@.str.1979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1980 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1981 = private unnamed_addr constant [6 x i8] c"sext \00" -@.str.1982 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1983 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1984 = private unnamed_addr constant [6 x i8] c"zext \00" -@.str.1985 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1986 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1987 = private unnamed_addr constant [7 x i8] c"fpext \00" -@.str.1988 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1989 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1990 = private unnamed_addr constant [9 x i8] c"fptrunc \00" -@.str.1991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1992 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1993 = private unnamed_addr constant [8 x i8] c"sitofp \00" -@.str.1994 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1995 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1996 = private unnamed_addr constant [8 x i8] c"uitofp \00" -@.str.1997 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1998 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1999 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2000 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2001 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2002 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2003 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2004 = private unnamed_addr constant [12 x i8] c"the number \00" -@.str.2005 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" -@.str.2006 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2007 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.2008 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2009 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2010 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2011 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2012 = private unnamed_addr constant [10 x i8] c" must be \00" -@.str.2013 = private unnamed_addr constant [15 x i8] c", but this is \00" -@.str.2014 = private unnamed_addr constant [7 x i8] c" (use \00" -@.str.2015 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" -@.str.2016 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" -@.str.2017 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2018 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2019 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2021 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" -@.str.2022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2023 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2034 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [12 x i8] c"src/gen.fch\00" -@.str.2039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2040 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 [12 x i8] c"src/gen.fch\00" -@.str.2045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2046 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2048 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2051 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2054 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2057 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2059 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2062 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2065 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2067 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.2068 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.2069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2070 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2071 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2072 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2073 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2074 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.2075 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.2076 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.2077 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.2078 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.2079 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.2080 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.2081 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.2082 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2083 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.2084 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2085 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2086 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2087 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2088 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2089 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2090 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2091 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.2092 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2093 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.2094 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.2095 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2096 = private unnamed_addr constant [19 x i8] c"a variable named '\00" -@.str.2097 = private unnamed_addr constant [22 x i8] c"' already exists here\00" -@.str.2098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2099 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2100 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2101 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" -@.str.2102 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2103 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" -@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2105 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2107 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2110 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2116 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2118 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2121 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2123 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.2124 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2126 = private unnamed_addr constant [2 x i8] c"$\00" -@.str.2127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2128 = private unnamed_addr constant [30 x i8] c"used .progs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.2131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2133 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .idx on a null pointer\00" -@.str.2137 = private unnamed_addr constant [4 x i8] c"@V\09\00" -@.str.2138 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2139 = private unnamed_addr constant [2 x i8] c"\09\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 .files 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 [2 x i8] c"\09\00" -@.str.2144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2147 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2149 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2150 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2151 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.2152 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2153 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.2154 = private unnamed_addr constant [1 x i8] c"\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 .scopes on a null pointer\00" -@.str.2157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2158 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2160 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2162 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2164 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2166 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2169 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2173 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2177 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2179 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2181 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2182 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2183 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2187 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2191 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2195 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2197 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2199 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2201 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2202 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.2203 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.2204 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2206 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2207 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.2208 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.2209 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.2210 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.2211 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.2212 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.2213 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.2214 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.2215 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.2216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2217 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.2218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2219 = private unnamed_addr constant [27 x i8] c"used .mm 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 [5 x i8] c"call\00" -@.str.2222 = private unnamed_addr constant [5 x i8] c"addr\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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2227 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2230 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2232 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2235 = private unnamed_addr constant [30 x i8] c"used .progs 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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2243 = private unnamed_addr constant [13 x i8] c"the struct '\00" -@.str.2244 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2246 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2248 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2250 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2252 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2254 = private unnamed_addr constant [30 x i8] c"used .progs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2259 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2261 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2264 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2271 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2272 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2274 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2275 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2276 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2277 = private unnamed_addr constant [7 x i8] c" twice\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 .sums 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2283 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2284 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2285 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2287 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2289 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2290 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2291 = private unnamed_addr constant [7 x i8] c" twice\00" -@.str.2292 = private unnamed_addr constant [17 x i8] c"two variants of \00" -@.str.2293 = private unnamed_addr constant [18 x i8] c" have the number \00" -@.str.2294 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" -@.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2296 = private unnamed_addr constant [30 x i8] c"used .enums 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.2299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2300 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2301 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2303 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2306 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2308 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2310 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2313 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2315 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2318 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2322 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2323 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2324 = private unnamed_addr constant [19 x i8] c"' is defined twice\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 [1 x i8] c"\00" -@.str.2328 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2329 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" -@.str.2330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2331 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2333 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2335 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2337 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2338 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2339 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2340 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2343 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2344 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2345 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2346 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" -@.str.2347 = 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.2348 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2349 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2350 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2352 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2354 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2355 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" -@.str.2356 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2358 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2359 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2360 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2361 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2362 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" -@.str.2363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2364 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2365 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2367 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2368 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2369 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2371 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2372 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2373 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2375 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2377 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" -@.str.2378 = private unnamed_addr constant [25 x i8] c" the method is called on\00" -@.str.2379 = 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 [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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2385 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2390 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2393 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2395 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2399 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"self\00" -@.str.2403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2405 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2408 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.2409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2410 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2413 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2415 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2418 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [5 x i8] c"self\00" -@.str.2422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2424 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2427 = private unnamed_addr constant [27 x i8] c"used .mm 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 [29 x i8] c"used .sigs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2433 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2437 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.2442 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2445 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2449 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2452 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [34 x i8] c"used .templates 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 [34 x i8] c"used .templates on a null pointer\00" -@.str.2459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2460 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2461 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2462 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2463 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" -@.str.2464 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" -@.str.2465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2466 = private unnamed_addr constant [34 x i8] c"used .templates 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 [8 x i8] c" takes \00" -@.str.2469 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" -@.str.2470 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2471 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2472 = private unnamed_addr constant [12 x i8] c"], but got \00" -@.str.2473 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2474 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2476 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [7 x i8] c"struct\00" -@.str.2480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2481 = private unnamed_addr constant [34 x i8] c"used .templates 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 [2 x i8] c"[\00" -@.str.2484 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2486 = private unnamed_addr constant [30 x i8] c"used .progs 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 [8 x i8] c"@finch.\00" -@.str.2490 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2491 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2492 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2493 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2494 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2496 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.2500 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2502 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2504 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2506 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2508 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2509 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2510 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2512 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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 [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .tnames 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 [30 x i8] c"used .targs on a null pointer\00" -@.str.2522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2523 = private unnamed_addr constant [31 x i8] c"used .module 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2527 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2529 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2530 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2532 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2535 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" -@.str.2536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2538 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2540 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2541 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2542 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2545 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2546 = private unnamed_addr constant [4 x i8] c"map\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 [12 x i8] c"src/gen.fch\00" -@.str.2550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2551 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2552 = private unnamed_addr constant [7 x i8] c"struct\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 [12 x i8] c"src/gen.fch\00" -@.str.2558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2559 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2562 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2565 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2566 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" -@.str.2567 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2568 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2569 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2570 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2572 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.2573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2574 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2575 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2577 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" -@.str.2578 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2579 = private unnamed_addr constant [6 x i8] c" from\00" -@.str.2580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2582 = private unnamed_addr constant [17 x i8] c"can't tell what \00" -@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2584 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" -@.str.2585 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.2586 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2588 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2593 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.2594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2595 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2596 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2597 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2599 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2601 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2605 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2607 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2608 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2609 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2611 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2614 = private unnamed_addr constant [32 x i8] c"used .structs 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 .structs on a null pointer\00" -@.str.2618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2620 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2622 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2623 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2624 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2625 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2627 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" -@.str.2628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2629 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2632 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2635 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2638 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2641 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2642 = private unnamed_addr constant [6 x i8] c"%S.C.\00" -@.str.2643 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2644 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2645 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2647 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2650 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2653 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2656 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2658 = private unnamed_addr constant [30 x i8] c"used .targs 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2662 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2665 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2667 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2670 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2671 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2673 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2675 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2676 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2677 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2679 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2681 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2683 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2685 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2691 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2695 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2697 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2698 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" -@.str.2699 = private unnamed_addr constant [8 x i8] c"] or []\00" -@.str.2700 = private unnamed_addr constant [16 x i8] c" for that field\00" -@.str.2701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2702 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2705 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2707 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2710 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2711 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2712 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2713 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2716 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2717 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2718 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2719 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2722 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2726 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2728 = private unnamed_addr constant [31 x i8] c"used .module 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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2733 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2734 = private unnamed_addr constant [4 x i8] c"%S.\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 .structs on a null pointer\00" -@.str.2737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2738 = private unnamed_addr constant [2 x i8] c".\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 .structs on a null pointer\00" -@.str.2741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2742 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2743 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2744 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2746 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2747 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2748 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2749 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2750 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2752 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.2753 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2754 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2755 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2756 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2757 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2758 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2759 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2760 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2761 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2762 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2763 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2764 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2765 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2766 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2768 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2770 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2772 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" -@.str.2773 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2774 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2775 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2776 = private unnamed_addr constant [13 x i8] c", baseType: \00" -@.str.2777 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2778 = private unnamed_addr constant [11 x i8] c", offset: \00" -@.str.2779 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2780 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2781 = private unnamed_addr constant [10 x i8] c"\22, size: \00" -@.str.2782 = private unnamed_addr constant [13 x i8] c", encoding: \00" -@.str.2783 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2784 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2785 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2786 = private unnamed_addr constant [3 x i8] c"T:\00" -@.str.2787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2788 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2790 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2792 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2793 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2795 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2796 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2797 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" -@.str.2798 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2799 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2800 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" -@.str.2801 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2802 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2803 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2804 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2805 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2806 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2807 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2808 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2809 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2810 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" -@.str.2811 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2812 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2814 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.2815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2816 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" -@.str.2817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2818 = private unnamed_addr constant [11 x i8] c"\22, value: \00" -@.str.2819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2820 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2821 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" -@.str.2822 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2823 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" -@.str.2824 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2825 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2826 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2828 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2831 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2832 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2834 = private unnamed_addr constant [27 x i8] c"used .md 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 [6 x i8] c"fixed\00" -@.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2838 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" -@.str.2839 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2840 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" -@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2842 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2843 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" -@.str.2844 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2846 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2848 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2849 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2850 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2851 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2853 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2854 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2855 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2856 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2857 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2858 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2859 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2860 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2861 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" -@.str.2862 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2863 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2864 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2866 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2868 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2869 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2870 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" -@.str.2871 = private unnamed_addr constant [8 x i8] c"entries\00" -@.str.2872 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2873 = private unnamed_addr constant [5 x i8] c"used\00" -@.str.2874 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2875 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2876 = private unnamed_addr constant [5 x i8] c"icap\00" -@.str.2877 = private unnamed_addr constant [5 x i8] c"adds\00" -@.str.2878 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2880 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2881 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2882 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" -@.str.2883 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2884 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2886 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2888 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2890 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2897 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2898 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2899 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2900 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" -@.str.2901 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2902 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2904 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2906 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2907 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" -@.str.2908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2909 = private unnamed_addr constant [27 x i8] c"used .md 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 [12 x i8] c"src/gen.fch\00" -@.str.2912 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2913 = private unnamed_addr constant [3 x i8] c"L:\00" -@.str.2914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2915 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2916 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2918 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2919 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2921 = private unnamed_addr constant [33 x i8] c"used .dbgScope 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 [32 x i8] c"used .mdcache 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 [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2926 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2927 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" -@.str.2928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2929 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2930 = private unnamed_addr constant [11 x i8] c", column: \00" -@.str.2931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2932 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2933 = private unnamed_addr constant [11 x i8] c", scope: !\00" -@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2935 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2936 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2938 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2940 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2941 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2942 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2943 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2945 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" -@.str.2946 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2947 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2948 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" -@.str.2949 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" -@.str.2950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2951 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2952 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2953 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2954 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2955 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" -@.str.2956 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" -@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2958 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2960 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2961 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2962 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2963 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2964 = private unnamed_addr constant [8 x i8] c", arg: \00" -@.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2966 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2967 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" -@.str.2968 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2970 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2971 = private unnamed_addr constant [10 x i8] c", file: !\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 .mdfiles 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 [9 x i8] c", line: \00" -@.str.2976 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2977 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2979 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2981 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2982 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" -@.str.2983 = private unnamed_addr constant [13 x i8] c", metadata !\00" -@.str.2984 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" -@.str.2985 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" -@.str.2986 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" -@.str.2987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2988 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2989 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2990 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.2991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2992 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2994 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2995 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2997 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3002 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3004 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.3005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3006 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3008 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3010 = private unnamed_addr constant [28 x i8] c"used .cur 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 .targs on a null pointer\00" -@.str.3013 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3015 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3017 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3018 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.3019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3020 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3021 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3023 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3025 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3027 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3030 = private unnamed_addr constant [28 x i8] c"used .cur 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 [29 x i8] c"used .body 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 [32 x i8] c"used .allocas on a null pointer\00" -@.str.3036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3037 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.3040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3041 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3043 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3045 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3047 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3049 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3051 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3053 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3055 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3057 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3059 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3060 = private unnamed_addr constant [10 x i8] c"ptr %self\00" -@.str.3061 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3063 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3064 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3066 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3068 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3070 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3072 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3073 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3075 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3076 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3077 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3079 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3081 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3083 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str.3084 = private unnamed_addr constant [3 x i8] c"%p\00" -@.str.3085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3086 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3089 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3091 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3093 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3096 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3099 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3102 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3105 = private unnamed_addr constant [29 x i8] c"used .term 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3109 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.3110 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" -@.str.3111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3112 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3115 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3117 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3118 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3119 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3120 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3121 = private unnamed_addr constant [8 x i8] c" !dbg !\00" -@.str.3122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3123 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.3126 = private unnamed_addr constant [17 x i8] c"define internal \00" -@.str.3127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3128 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3129 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3131 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3132 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.3133 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3134 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3135 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.3136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3137 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.3138 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3139 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3141 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.3142 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3143 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.3144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3145 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3146 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00" -@.str.3147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3148 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3150 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3151 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3152 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.3153 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.3154 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.3155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3156 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3159 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3160 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.3161 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3162 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3163 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3164 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.3165 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3167 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3168 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.3169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3170 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3172 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3175 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3178 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3182 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3185 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3186 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3187 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.3188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3190 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" -@.str.3191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3192 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3193 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" -@.str.3194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3195 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3197 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3199 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3200 = private unnamed_addr constant [19 x i8] c"unknown statement \00" -@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3202 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3204 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" -@.str.3205 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3207 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" -@.str.3208 = private unnamed_addr constant [8 x i8] c" = null\00" -@.str.3209 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3212 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3213 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3215 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.3216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3218 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3222 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3223 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.3224 = private unnamed_addr constant [19 x i8] c"' (create it with \00" -@.str.3225 = private unnamed_addr constant [9 x i8] c" := ...)\00" -@.str.3226 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.3227 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.3228 = private unnamed_addr constant [10 x i8] c"the value\00" -@.str.3229 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3230 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3231 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3232 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.3233 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3234 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3236 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3238 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3242 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3244 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3245 = private unnamed_addr constant [12 x i8] c"a condition\00" -@.str.3246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3247 = private unnamed_addr constant [5 x i8] c"then\00" -@.str.3248 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.3249 = private unnamed_addr constant [6 x i8] c"endif\00" -@.str.3250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3252 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3255 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3256 = private unnamed_addr constant [11 x i8] c"while.cond\00" -@.str.3257 = private unnamed_addr constant [11 x i8] c"while.body\00" -@.str.3258 = private unnamed_addr constant [10 x i8] c"while.end\00" -@.str.3259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3260 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3262 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3265 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3267 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3269 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3271 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3273 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3275 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3276 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3277 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3278 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3279 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3281 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3283 = private unnamed_addr constant [21 x i8] c"the start of a range\00" -@.str.3284 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3285 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3287 = private unnamed_addr constant [19 x i8] c"the end of a range\00" -@.str.3288 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3289 = private unnamed_addr constant [9 x i8] c"for.cond\00" -@.str.3290 = private unnamed_addr constant [9 x i8] c"for.body\00" -@.str.3291 = private unnamed_addr constant [9 x i8] c"for.step\00" -@.str.3292 = private unnamed_addr constant [8 x i8] c"for.end\00" -@.str.3293 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3294 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3295 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3297 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3299 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3301 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3304 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3306 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3307 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3308 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3309 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3310 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3315 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3316 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3317 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3319 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3320 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3321 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3322 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.3323 = private unnamed_addr constant [9 x i8] c"map.cond\00" -@.str.3324 = private unnamed_addr constant [10 x i8] c"map.check\00" -@.str.3325 = private unnamed_addr constant [9 x i8] c"map.body\00" -@.str.3326 = private unnamed_addr constant [9 x i8] c"map.step\00" -@.str.3327 = private unnamed_addr constant [8 x i8] c"map.end\00" -@.str.3328 = private unnamed_addr constant [12 x i8] c"map.changed\00" -@.str.3329 = private unnamed_addr constant [9 x i8] c"map.same\00" -@.str.3330 = private unnamed_addr constant [4 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 [15 x i8] c", i32 0, i32 6\00" -@.str.3334 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3335 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3336 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" -@.str.3337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3338 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3340 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3342 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3344 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3345 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3346 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3347 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3349 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3350 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3351 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3352 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3353 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3354 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3356 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3358 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3360 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3363 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3365 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3366 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3367 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3368 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3369 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3371 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3372 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3373 = private unnamed_addr constant [6 x i8] c"$list\00" -@.str.3374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3375 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3376 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3377 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3378 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3380 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" -@.str.3381 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" -@.str.3382 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3383 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3387 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3388 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3389 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3390 = private unnamed_addr constant [10 x i8] c"each.cond\00" -@.str.3391 = private unnamed_addr constant [10 x i8] c"each.body\00" -@.str.3392 = private unnamed_addr constant [10 x i8] c"each.step\00" -@.str.3393 = private unnamed_addr constant [9 x i8] c"each.end\00" -@.str.3394 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3395 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.3396 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3397 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3398 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3399 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3400 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3401 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3402 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3403 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3405 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3407 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3408 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3409 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3410 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3413 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3415 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3416 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3418 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3419 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3421 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3422 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" -@.str.3423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3424 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3426 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3429 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3430 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3432 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3435 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3436 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3437 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3439 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3440 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" -@.str.3441 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3442 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3444 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3446 = private unnamed_addr constant [18 x i8] c"the error message\00" -@.str.3447 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3449 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3450 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3451 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3453 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3454 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3455 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3457 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3459 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3460 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3462 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3464 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3465 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" -@.str.3466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3467 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3468 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3470 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3471 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3472 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3474 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3475 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3477 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3478 = private unnamed_addr constant [15 x i8] c"' must return \00" -@.str.3479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3480 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3482 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3484 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3485 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3487 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3490 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3494 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3496 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3500 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.3501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3502 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3506 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3508 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3512 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.3516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3517 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3519 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3521 = private unnamed_addr constant [19 x i8] c"the returned value\00" -@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3523 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3524 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3526 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3527 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" -@.str.3528 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3530 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3531 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3532 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3534 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3535 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3536 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3537 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3539 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3540 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3541 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3543 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3544 = private unnamed_addr constant [2 x i8] c" \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 [8 x i8] c"{ i64, \00" -@.str.3548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3549 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3551 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.3552 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.3553 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.3554 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3555 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3556 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3557 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.3558 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3559 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3560 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3561 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3562 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3563 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.3564 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3567 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.3568 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.3569 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3570 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3571 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3573 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.3574 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" -@.str.3575 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3576 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3577 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3578 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3579 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3580 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" -@.str.3581 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3582 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3583 = private unnamed_addr constant [8 x i8] c"map.new\00" -@.str.3584 = private unnamed_addr constant [9 x i8] c"map.have\00" -@.str.3585 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.3586 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3587 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3596 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3597 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" -@.str.3598 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3599 = private unnamed_addr constant [12 x i8] c"map.missing\00" -@.str.3600 = private unnamed_addr constant [10 x i8] c"map.found\00" -@.str.3601 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3602 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3603 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3604 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3605 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3606 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" -@.str.3607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3608 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3610 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3611 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3613 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3615 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3616 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3617 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" -@.str.3618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3619 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3620 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3622 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3623 = private unnamed_addr constant [4 x i8] c"int\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 [5 x i8] c"void\00" -@.str.3627 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3629 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" -@.str.3630 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3631 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3633 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" -@.str.3634 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3635 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3637 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3639 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [22 x i8] c"every key of this map\00" -@.str.3645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3649 = private unnamed_addr constant [24 x i8] c"every value of this map\00" -@.str.3650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3653 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3654 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3655 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3656 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3657 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3660 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3661 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.3662 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3663 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3664 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3665 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3666 = private unnamed_addr constant [11 x i8] c"remove.hit\00" -@.str.3667 = private unnamed_addr constant [11 x i8] c"remove.end\00" -@.str.3668 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" -@.str.3669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3670 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3671 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3672 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3673 = private unnamed_addr constant [10 x i8] c"get.found\00" -@.str.3674 = private unnamed_addr constant [12 x i8] c"get.missing\00" -@.str.3675 = private unnamed_addr constant [9 x i8] c"get.fend\00" -@.str.3676 = private unnamed_addr constant [9 x i8] c"get.mend\00" -@.str.3677 = private unnamed_addr constant [8 x i8] c"get.end\00" -@.str.3678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3680 = private unnamed_addr constant [12 x i8] c"the default\00" -@.str.3681 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3682 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3683 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3684 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3685 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3686 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3687 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.3688 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3689 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3690 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3691 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3693 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3694 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3695 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3696 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3697 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3698 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" -@.str.3699 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3700 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3701 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.3702 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3703 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3704 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3705 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3706 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3707 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3708 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3709 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3710 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3711 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.3712 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3713 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3714 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3715 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3717 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3718 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3719 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3720 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3721 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3722 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3724 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3725 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3726 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3727 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3728 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3729 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3730 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3731 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3732 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3733 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3734 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3735 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3736 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3737 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" -@.str.3738 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" -@.str.3739 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3740 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3742 = private unnamed_addr constant [30 x i8] c"used .enums 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 [2 x i8] c"'\00" -@.str.3745 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" -@.str.3746 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.3747 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3749 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3750 = private unnamed_addr constant [13 x i8] c"this pattern\00" -@.str.3751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3752 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3753 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3755 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" -@.str.3756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3757 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3758 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3759 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3760 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3761 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3762 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3764 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3767 = private unnamed_addr constant [10 x i8] c"match.end\00" -@.str.3768 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3770 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" -@.str.3771 = private unnamed_addr constant [10 x i8] c"match.arm\00" -@.str.3772 = private unnamed_addr constant [11 x i8] c"match.next\00" -@.str.3773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3774 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3775 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3777 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3779 = private unnamed_addr constant [53 x i8] c"an arm with several variants can't name their values\00" -@.str.3780 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3781 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3783 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3785 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3786 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3788 = private unnamed_addr constant [9 x i8] c"match.or\00" -@.str.3789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3790 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3793 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.3794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3795 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3799 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3800 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3801 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3806 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3807 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3808 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3809 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" -@.str.3810 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" -@.str.3811 = private unnamed_addr constant [11 x i8] c"match.from\00" -@.str.3812 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3814 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3816 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3819 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.3822 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3824 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3825 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3826 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3827 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3829 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3831 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3832 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3833 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3834 = private unnamed_addr constant [12 x i8] c"a match on \00" -@.str.3835 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" -@.str.3836 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3837 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.3838 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3840 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3841 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3843 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3844 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3845 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3846 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3847 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3848 = private unnamed_addr constant [3 x i8] c"[ \00" -@.str.3849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3850 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3851 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3852 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3854 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3855 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3856 = 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.3857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3858 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3860 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3862 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3864 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3865 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3867 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3870 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3872 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3874 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3876 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3878 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3880 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3881 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" -@.str.3882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3883 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3884 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" -@.str.3885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3886 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3887 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3889 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3890 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3892 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3894 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" -@.str.3895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3896 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3897 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" -@.str.3898 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" -@.str.3899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3900 = private unnamed_addr constant [11 x i8] c"try.failed\00" -@.str.3901 = private unnamed_addr constant [7 x i8] c"try.ok\00" -@.str.3902 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3904 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3905 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3906 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3908 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3909 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3910 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3912 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3914 = private unnamed_addr constant [10 x i8] c"or.failed\00" -@.str.3915 = private unnamed_addr constant [6 x i8] c"or.ok\00" -@.str.3916 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3917 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3920 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3921 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3923 = 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.3924 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3925 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3926 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3927 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3929 = 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.3930 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3931 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3934 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" -@.str.3935 = private unnamed_addr constant [8 x i8] c"or.bend\00" -@.str.3936 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3937 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3938 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3939 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3940 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3941 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3942 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3943 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3944 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3945 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3947 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.3948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3949 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.3950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3951 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3953 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3954 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3955 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3956 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3957 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3958 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3960 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3961 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3962 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3963 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3964 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3965 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3966 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3967 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3968 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3969 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.3970 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3971 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3972 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.3973 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3974 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3975 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3976 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3977 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3978 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3979 = private unnamed_addr constant [20 x i8] c"unknown expression \00" -@.str.3980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3981 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3982 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3984 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" -@.str.3985 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.3986 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.3987 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3988 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.3989 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" -@.str.3990 = private unnamed_addr constant [5 x i8] c"xor \00" -@.str.3991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3992 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str.3993 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" -@.str.3994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3995 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3997 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3998 = private unnamed_addr constant [5 x i8] c"sub \00" -@.str.3999 = private unnamed_addr constant [5 x i8] c" 0, \00" -@.str.4000 = private unnamed_addr constant [6 x i8] c"fneg \00" -@.str.4001 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4002 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" -@.str.4003 = private unnamed_addr constant [12 x i8] c"can't use '\00" -@.str.4004 = private unnamed_addr constant [6 x i8] c"' on \00" -@.str.4005 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.4006 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4007 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4008 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4009 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" -@.str.4010 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4011 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4012 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4013 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4014 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" -@.str.4015 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" -@.str.4016 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4017 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4018 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4019 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4020 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4021 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" -@.str.4022 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4023 = private unnamed_addr constant [6 x i8] c"array\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 [32 x i8] c" (compare the parts one by one)\00" -@.str.4027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4028 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4030 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4032 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4034 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4036 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4038 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4040 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4042 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4044 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4046 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4048 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4050 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4052 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4054 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4056 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4058 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4060 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4062 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4064 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4066 = private unnamed_addr constant [30 x i8] c"used .value 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 .ty on a null pointer\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 .ty 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 [26 x i8] c"used .v on a null pointer\00" -@.str.4073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4074 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4076 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4078 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4080 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\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 .ty 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 .ty 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 [26 x i8] c"used .v 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 .ty 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 [27 x i8] c"used .ty on a null pointer\00" -@.str.4091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4092 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\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 .value on a null pointer\00" -@.str.4095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4096 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4098 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4100 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4102 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4103 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4105 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4107 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4109 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4111 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4113 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4114 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4116 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4118 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4120 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4122 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4123 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4125 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4127 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4128 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4129 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4131 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4133 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4134 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4136 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4137 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4138 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4139 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4140 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4142 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4143 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4144 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4145 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4146 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4147 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" -@.str.4148 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4149 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4150 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4151 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4152 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4153 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4154 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4155 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4156 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4157 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4158 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4159 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4160 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4161 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4162 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4163 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4164 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4165 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4166 = private unnamed_addr constant [5 x i8] c"sdiv\00" -@.str.4167 = private unnamed_addr constant [5 x i8] c"srem\00" -@.str.4168 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4169 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4170 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4171 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4172 = private unnamed_addr constant [5 x i8] c"ashr\00" -@.str.4173 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4174 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4175 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4176 = private unnamed_addr constant [5 x i8] c"udiv\00" -@.str.4177 = private unnamed_addr constant [5 x i8] c"urem\00" -@.str.4178 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4179 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4180 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4181 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4182 = private unnamed_addr constant [5 x i8] c"lshr\00" -@.str.4183 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4184 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4185 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4186 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4187 = private unnamed_addr constant [9 x i8] c"icmp eq \00" -@.str.4188 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4189 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4190 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4192 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4193 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4194 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4195 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4196 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4197 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4198 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4199 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4200 = private unnamed_addr constant [5 x i8] c"fadd\00" -@.str.4201 = private unnamed_addr constant [5 x i8] c"fsub\00" -@.str.4202 = private unnamed_addr constant [5 x i8] c"fmul\00" -@.str.4203 = private unnamed_addr constant [5 x i8] c"fdiv\00" -@.str.4204 = private unnamed_addr constant [5 x i8] c"frem\00" -@.str.4205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4206 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4207 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4208 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4209 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4210 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4211 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4212 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4213 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4214 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4215 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4216 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4217 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" -@.str.4218 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4219 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4220 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4221 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4222 = private unnamed_addr constant [6 x i8] c" ptr \00" -@.str.4223 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4224 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4225 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4226 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4227 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" -@.str.4228 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4229 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4230 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4231 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4232 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4233 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4234 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4235 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4236 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4237 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" -@.str.4238 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4239 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4240 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4241 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str.4242 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4243 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4244 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4245 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4246 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4247 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4248 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4249 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4250 = private unnamed_addr constant [4 x i8] c"oeq\00" -@.str.4251 = private unnamed_addr constant [4 x i8] c"une\00" -@.str.4252 = private unnamed_addr constant [4 x i8] c"olt\00" -@.str.4253 = private unnamed_addr constant [4 x i8] c"ole\00" -@.str.4254 = private unnamed_addr constant [4 x i8] c"ogt\00" -@.str.4255 = private unnamed_addr constant [4 x i8] c"oge\00" -@.str.4256 = private unnamed_addr constant [6 x i8] c"fcmp \00" -@.str.4257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4258 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4259 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4260 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4261 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4262 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4263 = 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.4264 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4265 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4266 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4267 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4268 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4269 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4270 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4271 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4272 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4273 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4274 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4275 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4276 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4277 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4278 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4279 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4280 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4281 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4282 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4283 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4284 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4285 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4286 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4287 = private unnamed_addr constant [4 x i8] c"ult\00" -@.str.4288 = private unnamed_addr constant [4 x i8] c"ule\00" -@.str.4289 = private unnamed_addr constant [4 x i8] c"ugt\00" -@.str.4290 = private unnamed_addr constant [4 x i8] c"uge\00" -@.str.4291 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4292 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4293 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str.4294 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str.4295 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str.4296 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str.4297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4298 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4299 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.4300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4301 = private unnamed_addr constant [11 x i8] c"logic.from\00" -@.str.4302 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" -@.str.4303 = private unnamed_addr constant [10 x i8] c"logic.end\00" -@.str.4304 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4306 = private unnamed_addr constant [11 x i8] c"logic.rend\00" -@.str.4307 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.4308 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4309 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.4310 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" -@.str.4311 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4312 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.4313 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4314 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.4315 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4318 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4322 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4323 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4324 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4325 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4326 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4327 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4329 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" -@.str.4330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4331 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4332 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4333 = private unnamed_addr constant [28 x i8] c"every element of this array\00" -@.str.4334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4335 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4336 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str.4337 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4338 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.4339 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4340 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4341 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4342 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4344 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" -@.str.4345 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4346 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4347 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4348 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4349 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4350 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4351 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.4352 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4353 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4354 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4355 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" -@.str.4356 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4358 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4360 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4362 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4363 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4365 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4367 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4368 = private unnamed_addr constant [8 x i8] c"fprintf\00" -@.str.4369 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4370 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4371 = private unnamed_addr constant [7 x i8] c"stderr\00" -@.str.4372 = private unnamed_addr constant [2 x i8] c"2\00" -@.str.4373 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4374 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4375 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4376 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.4377 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" -@.str.4378 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4379 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4381 = private unnamed_addr constant [27 x i8] c"used .ci 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.4384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4386 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4387 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4389 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4390 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4392 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.4393 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4394 = private unnamed_addr constant [20 x i8] c" = external global \00" -@.str.4395 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4396 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4397 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" -@.str.4398 = private unnamed_addr constant [11 x i8] c".name(...)\00" -@.str.4399 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4400 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4401 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4403 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4404 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4405 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.4406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4407 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4408 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4410 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4412 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.4413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4414 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.4415 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4417 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4419 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4421 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4422 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4424 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4428 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4430 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4431 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4433 = private unnamed_addr constant [4 x i8] c"var\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 [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 [29 x i8] c"used .sums on a null pointer\00" -@.str.4439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4440 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4441 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4442 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4444 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4446 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4450 = private unnamed_addr constant [23 x i8] c" holds nothing: write \00" -@.str.4451 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4452 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4454 = private unnamed_addr constant [20 x i8] c" value(s), but got \00" -@.str.4455 = private unnamed_addr constant [3 x i8] c": \00" -@.str.4456 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4457 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4458 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4459 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.4460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4461 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.4462 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4463 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4464 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4465 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4467 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4469 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4470 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4471 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.4472 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4474 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.4475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4477 = private unnamed_addr constant [34 x i8] c"this pattern is not a variant of \00" -@.str.4478 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.4479 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4480 = private unnamed_addr constant [2 x i8] c")\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 [28 x i8] c" holds nothing: write just \00" -@.str.4484 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4486 = private unnamed_addr constant [28 x i8] c" value(s): name them, like \00" -@.str.4487 = private unnamed_addr constant [28 x i8] c"(x), or use _ to ignore one\00" -@.str.4488 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4489 = private unnamed_addr constant [51 x i8] c"write a name to hold the value (or _ to ignore it)\00" -@.str.4490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4491 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4493 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4494 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4495 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4496 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4497 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4498 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4499 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4500 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.4501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4502 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4503 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4507 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4509 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4512 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4514 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4517 = private unnamed_addr constant [12 x i8] c" value(s): \00" -@.str.4518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4519 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4521 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4522 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4524 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4527 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4528 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4529 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.4530 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.4531 = private unnamed_addr constant [7 x i8] c"used .\00" -@.str.4532 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" -@.str.4533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4534 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4536 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4538 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4539 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4540 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4541 = private unnamed_addr constant [3 x i8] c"a \00" -@.str.4542 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" -@.str.4543 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4544 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4545 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" -@.str.4546 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4547 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4548 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4549 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" -@.str.4550 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4551 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" -@.str.4552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4553 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4554 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4555 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4556 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" -@.str.4557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4558 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4559 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" -@.str.4560 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4561 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4562 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4563 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4565 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4567 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4568 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4569 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" -@.str.4570 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4571 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" -@.str.4572 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4573 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4574 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.4575 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4576 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4577 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4578 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4579 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4580 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4581 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4582 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" -@.str.4583 = private unnamed_addr constant [3 x i8] c"')\00" -@.str.4584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4585 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4587 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.4588 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.4589 = private unnamed_addr constant [12 x i8] c"' (it has: \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 [12 x i8] c"src/gen.fch\00" -@.str.4593 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4594 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4595 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4597 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4598 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4599 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.4600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4601 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4602 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4603 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4607 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4608 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4610 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4612 = private unnamed_addr constant [9 x i8] c"an index\00" -@.str.4613 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4614 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4615 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4616 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4617 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.4618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4619 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4620 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4623 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4624 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4625 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4626 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4627 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4628 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" -@.str.4629 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4630 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4632 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4633 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" -@.str.4634 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" -@.str.4635 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4636 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4637 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4638 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4639 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4640 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4642 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4643 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4644 = private unnamed_addr constant [18 x i8] c"named arguments (\00" -@.str.4645 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" -@.str.4646 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4647 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4648 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4649 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4650 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4651 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4652 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4653 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.4654 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4655 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4656 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4657 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4658 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4659 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4660 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.4661 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4662 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4663 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.4664 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.4665 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4666 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4667 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4668 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4670 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4672 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4674 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4675 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4676 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4677 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4678 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4679 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" -@.str.4680 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4681 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4682 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4683 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4686 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4687 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4689 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4690 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4691 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4692 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4693 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4694 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.4695 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" -@.str.4696 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4698 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4699 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4700 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4702 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4703 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4705 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4706 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4707 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4708 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4710 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.4711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4712 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" -@.str.4713 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4714 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4716 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4717 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" -@.str.4718 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4719 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4720 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4721 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4722 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4723 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4724 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4725 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4726 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4727 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4728 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4729 = private unnamed_addr constant [7 x i8] c"fptoui\00" -@.str.4730 = private unnamed_addr constant [7 x i8] c"fptosi\00" -@.str.4731 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4732 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4733 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4734 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4735 = private unnamed_addr constant [9 x i8] c"icmp ne \00" -@.str.4736 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4737 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4738 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4739 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4740 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4741 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4742 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" -@.str.4743 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4744 = private unnamed_addr constant [8 x i8] c" to ptr\00" -@.str.4745 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4746 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.4747 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4748 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4749 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4751 = 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.4752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4753 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4754 = private unnamed_addr constant [7 x i8] c" into \00" -@.str.4755 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4757 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4758 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4759 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4761 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4762 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4763 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4764 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4765 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4766 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4768 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4772 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4775 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4777 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4779 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4780 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4781 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.4782 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.4783 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.4784 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4785 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4786 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4787 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4788 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4789 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4790 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4791 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4792 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4793 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4794 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4795 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4796 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4798 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4801 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4803 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4804 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4805 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4807 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4808 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4810 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4811 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4816 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4819 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4820 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" -@.str.4821 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4822 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4824 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4825 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4826 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4827 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4828 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4829 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4830 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4831 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4832 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4833 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4834 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4836 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4838 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4840 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4841 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4842 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4843 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4845 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4847 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4848 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4849 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" -@.str.4850 = private unnamed_addr constant [21 x i8] c", which C can't take\00" -@.str.4851 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4852 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4853 = private unnamed_addr constant [13 x i8] c" the struct \00" -@.str.4854 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" -@.str.4855 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4856 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4857 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4858 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" -@.str.4859 = 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.4860 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" -@.str.4861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4863 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" -@.str.4864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4865 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" -@.str.4866 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4867 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" -@.str.4868 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4870 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4871 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4872 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" -@.str.4873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4874 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4875 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" -@.str.4876 = private unnamed_addr constant [4 x i8] c"i1 \00" -@.str.4877 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" -@.str.4878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4879 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4880 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4881 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4882 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4883 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4884 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4885 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4886 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4887 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4888 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4889 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4890 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4891 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4892 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4893 = private unnamed_addr constant [8 x i8] c"ret i8 \00" -@.str.4894 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4895 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str.4896 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4897 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4900 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4901 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.4902 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.4903 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4904 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4905 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4906 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4907 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4909 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4911 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" -@.str.4912 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4914 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4915 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4917 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4918 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4919 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4920 = 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.4921 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4922 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4923 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4924 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4926 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4928 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4929 = 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.4930 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4931 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4932 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4933 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4934 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4936 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4938 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4939 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" -@.str.4940 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4941 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4942 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" -@.str.4943 = private unnamed_addr constant [4 x i8] c"%c0\00" -@.str.4944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4946 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4947 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4948 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4949 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4950 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4951 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4952 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4953 = private unnamed_addr constant [7 x i8] c"ptr %c\00" -@.str.4954 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4955 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4956 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4957 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4958 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4959 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4960 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4961 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4962 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4963 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4964 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4965 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4966 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4967 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4968 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4969 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4970 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4971 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4972 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4973 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4974 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4976 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4977 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4978 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4980 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4981 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4982 = private unnamed_addr constant [16 x i8] c"define internal\00" -@.str.4983 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4984 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4986 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4987 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4989 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4993 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" -@.str.4994 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4997 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" -@.str.4998 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4999 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5000 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5001 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5003 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5004 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5005 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5006 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5007 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" -@.str.5008 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5009 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5010 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5011 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5012 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5014 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5015 = private unnamed_addr constant [9 x i8] c" signext\00" -@.str.5016 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5017 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5018 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5019 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5020 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5022 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5023 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5024 = private unnamed_addr constant [18 x i8] c"C function from `\00" -@.str.5025 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" -@.str.5026 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5027 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5028 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5029 = private unnamed_addr constant [6 x i8] c")\0A```\00" -@.str.5030 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5031 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.5032 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" -@.str.5033 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5034 = private unnamed_addr constant [18 x i8] c"' takes at least \00" -@.str.5035 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5036 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5037 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.5038 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5039 = private unnamed_addr constant [8 x i8] c"returns\00" -@.str.5040 = private unnamed_addr constant [6 x i8] c"takes\00" -@.str.5041 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5042 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5043 = private unnamed_addr constant [11 x i8] c") align 16\00" -@.str.5044 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5045 = private unnamed_addr constant [12 x i8] c") align 16 \00" -@.str.5046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5047 = private unnamed_addr constant [32 x i8] c"used .pending 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 [12 x i8] c"src/gen.fch\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 [10 x i8] c"argument \00" -@.str.5053 = private unnamed_addr constant [5 x i8] c" of \00" -@.str.5054 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.5055 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.5056 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.5057 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5058 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.5059 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5060 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5061 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5062 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5064 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.5065 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5068 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5070 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5071 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5073 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5075 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" -@.str.5076 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5077 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5079 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" -@.str.5080 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.5081 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5082 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5083 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5084 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5085 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5086 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5087 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5088 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5089 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5090 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5091 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5092 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5093 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5094 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.5095 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5096 = private unnamed_addr constant [6 x i8] c", ...\00" -@.str.5097 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5099 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5100 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.5101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5102 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5103 = private unnamed_addr constant [3 x i8] c"f:\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 .head on a null pointer\00" -@.str.5106 = private unnamed_addr constant [8 x i8] c"declare\00" -@.str.5107 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5108 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5109 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5110 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5111 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5112 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5113 = private unnamed_addr constant [3 x i8] c" (\00" -@.str.5114 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5115 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5116 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.5117 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5118 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5119 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5120 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5121 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5122 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5123 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5124 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5125 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5126 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5127 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5128 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5129 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5130 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5131 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5132 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5133 = private unnamed_addr constant [7 x i8] c"fflush\00" -@.str.5134 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5135 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5136 = private unnamed_addr constant [6 x i8] c"qsort\00" -@.str.5137 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5138 = private unnamed_addr constant [5 x i8] c"puts\00" -@.str.5139 = private unnamed_addr constant [8 x i8] c"putchar\00" -@.str.5140 = private unnamed_addr constant [6 x i8] c"scanf\00" -@.str.5141 = private unnamed_addr constant [6 x i8] c"fopen\00" -@.str.5142 = private unnamed_addr constant [8 x i8] c"getchar\00" -@.str.5143 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str.5144 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str.5145 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str.5146 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str.5147 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str.5148 = private unnamed_addr constant [5 x i8] c"fabs\00" -@.str.5149 = private unnamed_addr constant [7 x i8] c"malloc\00" -@.str.5150 = private unnamed_addr constant [5 x i8] c"rand\00" -@.str.5151 = private unnamed_addr constant [6 x i8] c"srand\00" -@.str.5152 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str.5153 = private unnamed_addr constant [5 x i8] c"atoi\00" -@.str.5154 = private unnamed_addr constant [7 x i8] c"strlen\00" -@.str.5155 = private unnamed_addr constant [7 x i8] c"strcpy\00" -@.str.5156 = private unnamed_addr constant [7 x i8] c"memcpy\00" -@.str.5157 = private unnamed_addr constant [5 x i8] c"time\00" -@.str.5158 = private unnamed_addr constant [6 x i8] c"sleep\00" -@.str.5159 = private unnamed_addr constant [7 x i8] c"usleep\00" -@.str.5160 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5161 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5162 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5163 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5164 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5165 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5166 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5167 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5168 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5169 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5170 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5171 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5172 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5173 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5174 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5175 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5176 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5177 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5178 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5179 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5180 = private unnamed_addr constant [7 x i8] c"time.h\00" -@.str.5181 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5182 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5183 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5184 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" -@.str.5185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5186 = private unnamed_addr constant [15 x i8] c"\22 at the top)\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 [6 x i8] c"error\00" -@.str.5191 = 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.5192 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.5193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5194 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5196 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" -@.str.5197 = private unnamed_addr constant [2 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"\0A\00" -@.str.5200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5201 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5202 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.5203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5204 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5206 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5207 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5208 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5209 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.5210 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.5211 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" -@.str.5212 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5214 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5215 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" -@.str.5216 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5218 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5219 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" -@.str.5220 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5221 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.5222 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5223 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" -@.str.5224 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.5225 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5226 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5227 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5228 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" -@.str.5229 = private unnamed_addr constant [14 x i8] c", i8 signext \00" -@.str.5230 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5231 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5232 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5233 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5234 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" -@.str.5235 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.5236 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5237 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5238 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5239 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5240 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5241 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5242 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5243 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5245 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5247 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5248 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5249 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5250 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" -@.str.5251 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5252 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5253 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5254 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5255 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5256 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5257 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5258 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5259 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5260 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5262 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.5263 = private unnamed_addr constant [10 x i8] c" into str\00" -@.str.5264 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5265 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5266 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.5267 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5269 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5270 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5271 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" -@.str.5272 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5273 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5274 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5275 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5277 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5278 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5279 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5280 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5281 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5282 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5283 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" -@.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5286 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5287 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5288 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5290 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5291 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5293 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5294 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5295 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5297 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5299 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" -@.str.5300 = private unnamed_addr constant [7 x i8] c", ptr \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 [2 x i8] c")\00" -@.str.5304 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5305 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5306 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5308 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5310 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5312 = private unnamed_addr constant [9 x i8] c"the text\00" -@.str.5313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5314 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5315 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5316 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5317 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5318 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" -@.str.5319 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5320 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5321 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5322 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5323 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5325 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5326 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5328 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5329 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5330 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" -@.str.5331 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5332 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5333 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5334 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5335 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5336 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.5337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5338 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5339 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5340 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5343 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5344 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5345 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5346 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5347 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" -@.str.5348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5349 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5350 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5351 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5353 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5354 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5356 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5357 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5358 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5359 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" -@.str.5360 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5361 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5362 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5363 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5364 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5365 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.5366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5367 = private unnamed_addr constant [12 x i8] c"the command\00" -@.str.5368 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5369 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5371 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" -@.str.5372 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5373 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5374 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5375 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5377 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5379 = private unnamed_addr constant [14 x i8] c"the exit code\00" -@.str.5380 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5381 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5382 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" -@.str.5383 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" -@.str.5384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5385 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5386 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.5387 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5389 = private unnamed_addr constant [13 x i8] c"the question\00" -@.str.5390 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" -@.str.5391 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5392 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5393 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5394 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5395 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.5396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5397 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.5398 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5399 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5401 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5403 = 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.5404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5405 = private unnamed_addr constant [10 x i8] c"free.drop\00" -@.str.5406 = private unnamed_addr constant [10 x i8] c"free.done\00" -@.str.5407 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5408 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5410 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" -@.str.5411 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5412 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5414 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5415 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5416 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" -@.str.5417 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5418 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5420 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5421 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5423 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5424 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5425 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5426 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" -@.str.5427 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.5428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5429 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5431 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5433 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5436 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5438 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5441 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" -@.str.5442 = private unnamed_addr constant [4 x i8] c" { \00" -@.str.5443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5444 = private unnamed_addr constant [7 x i8] c" }\0A```\00" -@.str.5445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5446 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5449 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5451 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5453 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5455 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.5456 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5457 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" -@.str.5458 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" -@.str.5459 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5461 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5463 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.5464 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" -@.str.5465 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5467 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5471 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.5472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5473 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5476 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5477 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5478 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5479 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5480 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" -@.str.5481 = private unnamed_addr constant [20 x i8] c"(...) or , \00" -@.str.5482 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" -@.str.5483 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.5484 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5485 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5486 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5487 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5488 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5489 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5490 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5491 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5492 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5493 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5495 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5496 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5497 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5498 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5500 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5502 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5503 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5504 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5505 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5507 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5510 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5513 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5517 = 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.5518 = private unnamed_addr constant [6 x i8] c" has \00" -@.str.5519 = private unnamed_addr constant [18 x i8] c" fields, but got \00" -@.str.5520 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" -@.str.5521 = private unnamed_addr constant [16 x i8] c"(field: value))\00" -@.str.5522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5525 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.5526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5527 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5530 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5532 = private unnamed_addr constant [17 x i8] c"' is given twice\00" -@.str.5533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5534 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5536 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5543 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5545 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5548 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5550 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5552 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5554 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5556 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5558 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5560 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5562 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5567 = private unnamed_addr constant [17 x i8] c"the default of '\00" -@.str.5568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5569 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5571 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5573 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5575 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5577 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5578 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.5579 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5580 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5581 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5582 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5585 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5586 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"var\00" -@.str.5590 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" -@.str.5591 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" -@.str.5592 = private unnamed_addr constant [14 x i8] c" at the top)\00" -@.str.5593 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5594 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5595 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5597 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5599 = private unnamed_addr constant [13 x i8] c"the module '\00" -@.str.5600 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" -@.str.5601 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5602 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5603 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5604 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5605 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5606 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5607 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5608 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5609 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5611 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5612 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5613 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5614 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" -@.str.5615 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5616 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5617 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5618 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5619 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" -@.str.5620 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5623 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5624 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5625 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5626 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5627 = private unnamed_addr constant [9 x i8] c"called .\00" -@.str.5628 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" -@.str.5629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5630 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5631 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5632 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5633 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5634 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5636 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5639 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5642 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5645 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5646 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5647 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5648 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" -@.str.5649 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5650 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" -@.str.5651 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5652 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5653 = private unnamed_addr constant [17 x i8] c" has no method '\00" -@.str.5654 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.5655 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5656 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5658 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5660 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5661 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5662 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" -@.str.5663 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" -@.str.5664 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.5665 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.5666 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5667 = private unnamed_addr constant [16 x i8] c" has no methods\00" -@.str.5668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5669 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5670 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5671 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5674 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5676 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5677 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5678 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" -@.str.5679 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5680 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5681 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5682 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5683 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5684 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5685 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5686 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5687 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5688 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5689 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5690 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5691 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5692 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5693 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5694 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5695 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5696 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5698 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5699 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5700 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5701 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5702 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5703 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5704 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5705 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5706 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5709 = private unnamed_addr constant [22 x i8] c"the value to look for\00" -@.str.5710 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5711 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5712 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str.5713 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5714 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5715 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5717 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5718 = private unnamed_addr constant [10 x i8] c"find.cond\00" -@.str.5719 = private unnamed_addr constant [10 x i8] c"find.body\00" -@.str.5720 = private unnamed_addr constant [9 x i8] c"find.hit\00" -@.str.5721 = private unnamed_addr constant [10 x i8] c"find.next\00" -@.str.5722 = private unnamed_addr constant [9 x i8] c"find.end\00" -@.str.5723 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5724 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5725 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5726 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5727 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5728 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5729 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.5730 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5731 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5732 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5733 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5734 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5735 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5736 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5737 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5738 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5739 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5740 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5741 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5742 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" -@.str.5743 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5744 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5745 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" -@.str.5746 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5747 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5749 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5750 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5751 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5753 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5755 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5758 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5759 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5760 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5762 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" -@.str.5763 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5764 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5765 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5766 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5767 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5768 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5769 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5770 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5771 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5772 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5773 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5775 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5777 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5778 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5779 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5780 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5781 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5782 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5783 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" -@.str.5784 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5785 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5786 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5787 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5788 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5789 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5791 = private unnamed_addr constant [15 x i8] c"the new length\00" -@.str.5792 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" -@.str.5793 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5794 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5795 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5796 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5797 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5798 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5799 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5800 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str.5801 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5802 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5803 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5804 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5806 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5807 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5808 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5809 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5811 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5812 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5813 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5814 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5815 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.5816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5817 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5819 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5821 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5823 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5824 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5825 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5826 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5827 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5828 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5829 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5830 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5831 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5832 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5833 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5834 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5835 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" -@.str.5836 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5837 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5838 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5839 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.5840 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5841 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5842 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5843 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5844 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5845 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5846 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5847 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5848 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5849 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5850 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5851 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5852 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5855 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5856 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5857 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5858 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5859 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" -@.str.5860 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5861 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5862 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" -@.str.5863 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5864 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5865 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5866 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5867 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5868 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" -@.str.5869 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" -@.str.5870 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5871 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5872 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5873 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5874 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5875 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5876 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5877 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5879 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5880 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5881 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5882 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.5883 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5884 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5885 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5886 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5887 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5888 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5889 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5890 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5892 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" -@.str.5893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5894 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5896 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5897 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5898 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5899 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" -@.str.5900 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5901 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5902 = private unnamed_addr constant [3 x i8] c"%x\00" -@.str.5903 = private unnamed_addr constant [3 x i8] c"%y\00" -@.str.5904 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5905 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5906 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" -@.str.5907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5908 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5909 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" -@.str.5910 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5911 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5912 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5913 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.5914 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5915 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5916 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5917 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5918 = private unnamed_addr constant [2 x i8] c">\00" -@.str.5919 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5920 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5921 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5922 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str.5923 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5924 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5925 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5926 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5927 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5928 = private unnamed_addr constant [9 x i8] c"ret i32 \00" -@.str.5929 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" -@.str.5930 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" -@.str.5931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5932 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5934 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.5935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5936 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5938 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5940 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5942 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5943 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" -@.str.5944 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5945 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5946 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5947 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5948 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5949 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5950 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5951 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5952 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5953 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5954 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5955 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5957 = private unnamed_addr constant [21 x i8] c"the text to look for\00" -@.str.5958 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5959 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5960 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5961 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5962 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5963 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5964 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5965 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5966 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5967 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5968 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5969 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5970 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" -@.str.5971 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5972 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" -@.str.5973 = private unnamed_addr constant [10 x i8] c"call i32 \00" -@.str.5974 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5975 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5976 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5977 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5978 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5979 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5980 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5981 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5982 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5983 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" -@.str.5984 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5985 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5986 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5987 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5988 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5989 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5991 = private unnamed_addr constant [20 x i8] c"the text to replace\00" -@.str.5992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5993 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5995 = private unnamed_addr constant [13 x i8] c"the new text\00" -@.str.5996 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" -@.str.5997 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5998 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5999 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6000 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6001 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6002 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6003 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6005 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.6006 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" -@.str.6007 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6008 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6009 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6010 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6011 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6012 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6014 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6016 = private unnamed_addr constant [10 x i8] c"the count\00" -@.str.6017 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" -@.str.6018 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6019 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.6020 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6021 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6023 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6024 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" -@.str.6025 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6026 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6027 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6028 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6029 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" -@.str.6030 = 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.6031 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" -@.str.6032 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" -@.str.6033 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" -@.str.6034 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" -@.str.6035 = private unnamed_addr constant [34 x i8] c"declare void @finch_str_drop(ptr)\00" -@.str.6036 = private unnamed_addr constant [34 x i8] c"declare void @finch_arr_free(ptr)\00" -@.str.6037 = private unnamed_addr constant [34 x i8] c"declare void @finch_map_free(ptr)\00" -@.str.6038 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" -@.str.6039 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" -@.str.6040 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" -@.str.6041 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" -@.str.6042 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" -@.str.6043 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" -@.str.6044 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" -@.str.6045 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" -@.str.6046 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" -@.str.6047 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" -@.str.6048 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" -@.str.6049 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" -@.str.6050 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" -@.str.6051 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" -@.str.6052 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" -@.str.6053 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" -@.str.6054 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" -@.str.6055 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" -@.str.6056 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" -@.str.6057 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" -@.str.6058 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" -@.str.6059 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" -@.str.6060 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" -@.str.6061 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" -@.str.6062 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" -@.str.6063 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" -@.str.6064 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" -@.str.6065 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" -@.str.6066 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" -@.str.6067 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" -@.str.6068 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" -@.str.6069 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" -@.str.6070 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" -@.str.6071 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" -@.str.6072 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" -@.str.6073 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" -@.str.6074 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" -@.str.6075 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" -@.str.6076 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" -@.str.6077 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" -@.str.6078 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" -@.str.6079 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" -@.str.6080 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" -@.str.6081 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" -@.str.6082 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" -@.str.6083 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" -@.str.6084 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" -@.str.6085 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" -@.str.6086 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" -@.str.6087 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" -@.str.6088 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" -@.str.6089 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" -@.str.6090 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" -@.str.6091 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" -@.str.6092 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" -@.str.6093 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" -@.str.6094 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" -@.str.6095 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" -@.str.6096 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" -@.str.6097 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" -@.str.6098 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" -@.str.6099 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" -@.str.6100 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" -@.str.6101 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" -@.str.6102 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" -@.str.6103 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" -@.str.6104 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" -@.str.6105 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6106 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6107 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" -@.str.6108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6109 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6111 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6112 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" -@.str.6113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6114 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6115 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" -@.str.6116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6117 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.6118 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6119 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" -@.str.6120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6122 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6123 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" -@.str.6124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6126 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6128 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6129 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6131 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6133 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6136 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6137 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" -@.str.6138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6139 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6140 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" -@.str.6141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6142 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6143 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" -@.str.6144 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" -@.str.6145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6146 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" -@.str.6147 = private unnamed_addr constant [3 x i8] c"\22)\00" -@.str.6148 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" -@.str.6149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6150 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6152 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" -@.str.6153 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6154 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6157 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.6158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6159 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6161 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6165 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6168 = 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.6169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6170 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" -@.str.6171 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6172 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6173 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6175 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6177 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.6178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6179 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6182 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.6183 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6185 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6186 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6188 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6189 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.6190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6191 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6192 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.6193 = 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.6194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6195 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6197 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.6198 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6199 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6201 = 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.6202 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" -@.str.6203 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6204 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str.6205 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6206 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6207 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6208 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6209 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" -@.str.6210 = 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.6211 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" -@.str.6212 = 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.6213 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" -@.str.6214 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6215 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" -@.str.6216 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" -@.str.6217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6218 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6219 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" -@.str.6220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6221 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6222 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str.6223 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6225 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str.6226 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.6227 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" -@.str.6228 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" -@.str.6229 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.6230 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" -@.str.6231 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" -@.str.6232 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.6233 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" -@.str.6234 = 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.6235 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.6236 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" -@.str.6237 = 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.6238 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.6239 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" -@.str.6240 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" -@.str.6241 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.6242 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" -@.str.6243 = 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.6244 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.6245 = private unnamed_addr constant [19 x i8] c"error(str message)\00" -@.str.6246 = 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.6247 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.6248 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" -@.str.6249 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" -@.str.6250 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.6251 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" -@.str.6252 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" -@.str.6253 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.6254 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" -@.str.6255 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" -@.str.6256 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.6257 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" -@.str.6258 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" -@.str.6259 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.6260 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" -@.str.6261 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" -@.str.6262 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6263 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" -@.str.6264 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" -@.str.6265 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6266 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" -@.str.6267 = 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.6268 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6269 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" -@.str.6270 = 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.6271 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6272 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" -@.str.6273 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" -@.str.6274 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6275 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" -@.str.6276 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" -@.str.6277 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6278 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" -@.str.6279 = 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.6280 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6281 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6282 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" -@.str.6283 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6284 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" -@.str.6285 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" -@.str.6286 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.6287 = private unnamed_addr constant [10 x i8] c"push(T x)\00" -@.str.6288 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" -@.str.6289 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.6290 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" -@.str.6291 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" -@.str.6292 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.6293 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" -@.str.6294 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" -@.str.6295 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6296 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" -@.str.6297 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" -@.str.6298 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6299 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6300 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6301 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.6302 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" -@.str.6303 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" -@.str.6304 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6305 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" -@.str.6306 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" -@.str.6307 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6308 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" -@.str.6309 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" -@.str.6310 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.6311 = private unnamed_addr constant [7 x i8] c"sort()\00" -@.str.6312 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" -@.str.6313 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.6314 = private unnamed_addr constant [10 x i8] c"reverse()\00" -@.str.6315 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" -@.str.6316 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.6317 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" -@.str.6318 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" -@.str.6319 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.6320 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" -@.str.6321 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" -@.str.6322 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6323 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6324 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" -@.str.6325 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6326 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" -@.str.6327 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" -@.str.6328 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.6329 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" -@.str.6330 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" -@.str.6331 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6332 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" -@.str.6333 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" -@.str.6334 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6335 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" -@.str.6336 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" -@.str.6337 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.6338 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" -@.str.6339 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" -@.str.6340 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.6341 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" -@.str.6342 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" -@.str.6343 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6344 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" -@.str.6345 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" -@.str.6346 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.6347 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" -@.str.6348 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" -@.str.6349 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.6350 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" -@.str.6351 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" -@.str.6352 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.6353 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" -@.str.6354 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" -@.str.6355 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.6356 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" -@.str.6357 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" -@.str.6358 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6359 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" -@.str.6360 = private unnamed_addr constant [18 x i8] c"The text n times.\00" -@.str.6361 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6362 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" -@.str.6363 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" -@.str.6364 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6365 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6366 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" -@.str.6367 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.6368 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" -@.str.6369 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" -@.str.6370 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.6371 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" -@.str.6372 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" -@.str.6373 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6374 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" -@.str.6375 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" -@.str.6376 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6377 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6378 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6379 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.6380 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" -@.str.6381 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" -@.str.6382 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.6383 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" -@.str.6384 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" -@.str.6385 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.6386 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.6387 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.6388 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.6389 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.6390 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.6391 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.6392 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.6393 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.6394 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.6395 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.6396 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.6397 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.6398 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.6399 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.6400 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.6401 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.6402 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.6403 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.6404 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.6405 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.6406 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.6407 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6408 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6409 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6410 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6411 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6412 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6413 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.6414 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6415 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6416 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.6418 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6419 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6420 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6421 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6422 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6423 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.6424 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.6425 = private unnamed_addr constant [6 x i8] c"\0A```\0A\00" -declare ptr @clang_getCString(i64, i64) -declare void @clang_disposeString(i64, i64) -@.str.6426 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6427 = private unnamed_addr constant [16 x i8] c"/finch_cc_dirs_\00" -@.str.6428 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6429 = private unnamed_addr constant [14 x i8] c"/finch_empty_\00" -@.str.6430 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6431 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6432 = private unnamed_addr constant [13 x i8] c" -E -v -x c \00" -@.str.6433 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6434 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6435 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6436 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6437 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6438 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6439 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6440 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" -@.str.6441 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6442 = private unnamed_addr constant [20 x i8] c"End of search list.\00" -@.str.6443 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6444 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" -@.str.6445 = private unnamed_addr constant [12 x i8] c"-iframework\00" -@.str.6446 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6447 = private unnamed_addr constant [9 x i8] c"-isystem\00" -declare void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16, ptr byval(%S.C.CXType) align 8) -declare { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8) -@.str.6448 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6449 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6450 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6451 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6452 = 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.6453 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6454 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6455 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6456 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6457 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" -@.str.6458 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6459 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6460 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6461 = 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.6462 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6463 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6464 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6465 = 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.6466 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6467 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6468 = 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.6469 = 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.6470 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6471 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -@.str.6472 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6473 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6474 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6475 = 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.6476 = private unnamed_addr constant [15 x i8] c"has bit fields\00" -@.str.6477 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6478 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6479 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6480 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" -@.str.6481 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6482 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" -@.str.6483 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6484 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6485 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6486 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" -@.str.6487 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6488 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6489 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6490 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" -@.str.6491 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6492 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6493 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6494 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6495 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6496 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6497 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6498 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6499 = private unnamed_addr constant [8 x i8] c"uses a \00" -@.str.6500 = private unnamed_addr constant [12 x i8] c"-bit number\00" -@.str.6501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6502 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6503 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6504 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6505 = 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.6506 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6507 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6508 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6509 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6510 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6511 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" -@.str.6512 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" -@.str.6513 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.6514 = 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.6515 = private unnamed_addr constant [17 x i8] c"uses long double\00" -@.str.6516 = 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.6517 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6518 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6519 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6520 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6521 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.6522 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6523 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6524 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6525 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6526 = private unnamed_addr constant [5 x i8] c"uUlL\00" -@.str.6527 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6528 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6529 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6530 = 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.6531 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6532 = 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.6533 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6534 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare void @clang_disposeTokens(ptr, ptr, i32) -@.str.6535 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6536 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6537 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6538 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6539 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6540 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6541 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.6542 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6543 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.6544 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6545 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6546 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6547 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6548 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6549 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6550 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6551 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6552 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.6553 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6554 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.6555 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6556 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6557 = private unnamed_addr constant [5 x i8] c"fFlL\00" -@.str.6558 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6559 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6560 = 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.6561 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6562 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6563 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6564 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6565 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6566 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6567 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6568 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6569 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6570 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6571 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6572 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6573 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6574 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6575 = 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.6576 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" -@.str.6577 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6578 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6579 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" -@.str.6580 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6581 = 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.6582 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6583 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6584 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6585 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6586 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6587 = 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.6588 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6589 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6590 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6591 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6592 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6593 = 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.6594 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6595 = 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.6596 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6597 = 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.6598 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6599 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6600 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6601 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6602 = private unnamed_addr constant [3 x i8] c"-x\00" -@.str.6603 = private unnamed_addr constant [2 x i8] c"c\00" -@.str.6604 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" -@.str.6605 = private unnamed_addr constant [10 x i8] c"--target=\00" -@.str.6606 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" -@.str.6607 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.6608 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6609 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @clang_createIndex(i32, i32) -@.str.6610 = private unnamed_addr constant [11 x i8] c"#include \22\00" -@.str.6611 = private unnamed_addr constant [3 x i8] c"\22\0A\00" -@.str.6612 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6613 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6614 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr) -@.str.6615 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" -@.str.6616 = 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.6617 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6618 = private unnamed_addr constant [15 x i8] c"file not found\00" -@.str.6619 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6620 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6621 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6622 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6623 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6624 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6625 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6626 = private unnamed_addr constant [11 x i8] c"', which '\00" -@.str.6627 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" -@.str.6628 = private unnamed_addr constant [20 x i8] c": error: C header '\00" -@.str.6629 = 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.6630 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6631 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6632 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6633 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6634 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6635 = private unnamed_addr constant [5 x i8] c"'\5C''\00" -@.str.6636 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6637 = private unnamed_addr constant [10 x i8] c"/dev/null\00" -@.str.6638 = private unnamed_addr constant [7 x i8] c"TMPDIR\00" -@.str.6639 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6640 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6641 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6642 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6643 = private unnamed_addr constant [5 x i8] c"/tmp\00" -@.str.6644 = private unnamed_addr constant [2 x i8] c":\00" -declare i32 @getpid() -@.str.6645 = private unnamed_addr constant [4 x i8] c"PWD\00" -@.str.6646 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6647 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" -@.str.6648 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6649 = private unnamed_addr constant [7 x i8] c"/finch\00" -@.str.6650 = private unnamed_addr constant [5 x i8] c"HOME\00" -@.str.6651 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6652 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" -@.str.6653 = private unnamed_addr constant [13 x i8] c"/finch-cache\00" -@.str.6654 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" -@.str.6655 = private unnamed_addr constant [8 x i8] c"rm -rf \00" -@.str.6656 = private unnamed_addr constant [4 x i8] c"mv \00" -@.str.6657 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6658 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6659 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6660 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6661 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6662 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6663 = private unnamed_addr constant [15 x i8] c"/finch_triple_\00" -@.str.6664 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6665 = private unnamed_addr constant [22 x i8] c"clang -dumpmachine > \00" -@.str.6666 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6667 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6668 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6669 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6670 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6671 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6672 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.6673 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6674 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6675 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6676 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" -@.str.6677 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" -@.str.6678 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6679 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6680 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6681 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6682 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6683 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" -@.str.6684 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" -@.str.6685 = private unnamed_addr constant [23 x i8] c"x86_64-w64-windows-gnu\00" -@.str.6686 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6687 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6688 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6689 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6690 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6691 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6692 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6693 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6694 = private unnamed_addr constant [6 x i8] c"win32\00" -@.str.6695 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6696 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6697 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6698 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6699 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6700 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6701 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6702 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6703 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6704 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6705 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6706 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6707 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6708 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6709 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6710 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6711 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6712 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6713 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6714 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6715 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6716 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6717 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6718 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6719 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6720 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6721 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6722 = private unnamed_addr constant [5 x i8] c".exe\00" -@.str.6723 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6724 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6725 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" -@.str.6726 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" -@.str.6727 = private unnamed_addr constant [16 x i8] c"clang --target=\00" -@.str.6728 = private unnamed_addr constant [2 x i8] c";\00" -@.str.6729 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6730 = private unnamed_addr constant [3 x i8] c"cc\00" -@.str.6731 = private unnamed_addr constant [6 x i8] c"wine \00" -@.str.6732 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" -@.str.6733 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.6734 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6735 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6736 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6737 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6738 = private unnamed_addr constant [12 x i8] c"-framework \00" -@.str.6739 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6740 = private unnamed_addr constant [18 x i8] c"/finch_pkg_flags_\00" -@.str.6741 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6742 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" -@.str.6743 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6744 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6745 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6746 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6747 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.6748 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6749 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6750 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6751 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6752 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6753 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6754 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6755 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6756 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6757 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6758 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6759 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6760 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6761 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6762 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6763 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6764 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6765 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6766 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6767 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6768 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6769 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6770 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6771 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6772 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6773 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6774 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6775 = private unnamed_addr constant [3 x i8] c" \0A\00" -@.str.6776 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6777 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6778 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6779 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" -@.str.6780 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6781 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6782 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6783 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6784 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6785 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6786 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6787 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6788 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6789 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6790 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6791 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6792 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6793 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6794 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6795 = private unnamed_addr constant [10 x i8] c"not found\00" -@.str.6796 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6797 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6798 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6799 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6800 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6801 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6802 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6803 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6804 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6805 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6806 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6807 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.6808 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6809 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" -@.str.6810 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6811 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6812 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6813 = private unnamed_addr constant [21 x i8] c"error: the library '\00" -@.str.6814 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" -@.str.6815 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6816 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6817 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6818 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6819 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6820 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6821 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6822 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.6824 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.6825 = private unnamed_addr constant [6 x i8] c" more\00" -@.str.6826 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6827 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" -@.str.6828 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6829 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6830 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6831 = private unnamed_addr constant [5 x i8] c"come\00" -@.str.6832 = private unnamed_addr constant [6 x i8] c"comes\00" -@.str.6833 = private unnamed_addr constant [8 x i8] c"error: \00" -@.str.6834 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6835 = private unnamed_addr constant [8 x i8] c" from \22\00" -@.str.6836 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6837 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" -@.str.6838 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6839 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6840 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6841 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" -@.str.6842 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6843 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6844 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6845 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" -@.str.6846 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6847 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6848 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6849 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6850 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6851 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6852 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6853 = private unnamed_addr constant [13 x i8] c" link \22\00" -@.str.6854 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6855 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6856 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6857 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6858 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6859 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6860 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6861 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6862 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6863 = private unnamed_addr constant [5 x i8] c"/rt-\00" -@.str.6864 = private unnamed_addr constant [4 x i8] c"2.5\00" -@.str.6865 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6866 = private unnamed_addr constant [6 x i8] c".part\00" -@.str.6867 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6869 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6870 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6871 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6872 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6873 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6874 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6875 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6876 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" -@.str.6877 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" -@.str.6878 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" -@.str.6879 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6880 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6881 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6882 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6883 = private unnamed_addr constant [9 x i8] c"FINCH_CC\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 [5 x i8] c"%.*s\00" -@.str.6887 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6888 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str.6889 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6890 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6891 = private unnamed_addr constant [11 x i8] c" --target=\00" -@.str.6892 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6893 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6894 = private unnamed_addr constant [8 x i8] c" -w -c \00" -@.str.6895 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6896 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6897 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6899 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6900 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6901 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6902 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" -@.str.6903 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6904 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6905 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6906 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6908 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6909 = private unnamed_addr constant [5 x i8] c" -lm\00" -@.str.6910 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6911 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6912 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6913 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6914 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6915 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" -@.str.6916 = private unnamed_addr constant [9 x i8] c" -shared\00" -@.str.6917 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6918 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6919 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6920 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6921 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6922 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6923 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6924 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6925 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6926 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6927 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6928 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6929 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" -@.str.6930 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6931 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6932 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6934 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6935 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6936 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6937 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.6938 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6939 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6940 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6941 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6942 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6943 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" -@.str.6944 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" -@.str.6945 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6946 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6947 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6948 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6949 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6950 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6951 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6952 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6953 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6954 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6955 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6956 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6957 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6958 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6959 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6960 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.6961 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6962 = private unnamed_addr constant [6 x i8] c"/-_.~\00" -@.str.6963 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6964 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.6965 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6966 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6967 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6968 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6969 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6970 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6971 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6972 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6973 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6974 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6975 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6976 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6977 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @getchar() -@.str.6978 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6979 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6980 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.6981 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@stdin = external global ptr -declare i32 @feof(ptr) -@.str.6982 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" -@.str.6983 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6984 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" -@.str.6985 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6986 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6987 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" -@.str.6988 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" -@.str.6989 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" -@.str.6990 = private unnamed_addr constant [1 x i8] c"\00" -@stdout = external global ptr -declare i64 @fwrite(ptr, i64, i64, ptr) -@.str.6991 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6992 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6993 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.6994 = private unnamed_addr constant [7 x i8] c"result\00" -@.str.6995 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6996 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6997 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.6998 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.6999 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7000 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7001 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7002 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7003 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7004 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7005 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7006 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.7007 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7008 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7009 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7010 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7011 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7012 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7013 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7014 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7015 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7016 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7017 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7018 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.7019 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7020 = private unnamed_addr constant [3 x i8] c"@R\00" -@.str.7021 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7022 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7023 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7024 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7025 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7026 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7027 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7028 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7029 = private unnamed_addr constant [3 x i8] c"@V\00" -@.str.7030 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7031 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7032 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7033 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7034 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7035 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7036 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7037 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7038 = private unnamed_addr constant [3 x i8] c"@F\00" -@.str.7039 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7040 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7041 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7042 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7043 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7044 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7045 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7046 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7047 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7048 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7049 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.7050 = private unnamed_addr constant [3 x i8] c"@S\00" -@.str.7051 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7052 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7053 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7054 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7055 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7056 = private unnamed_addr constant [4 x i8] c"@SF\00" -@.str.7057 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7058 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7059 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7060 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7061 = private unnamed_addr constant [3 x i8] c"@E\00" -@.str.7062 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7063 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7064 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7065 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7066 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7067 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7068 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7069 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7070 = private unnamed_addr constant [3 x i8] c"@I\00" -@.str.7071 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7072 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7073 = private unnamed_addr constant [5 x i8] c"/doc\00" -@.str.7074 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.7075 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7076 = private unnamed_addr constant [12 x i8] c" --overlay \00" -@.str.7077 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.7078 = private unnamed_addr constant [9 x i8] c"/out.txt\00" -@.str.7079 = private unnamed_addr constant [8 x i8] c" index \00" -@.str.7080 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.7081 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.7082 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7083 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7084 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7085 = private unnamed_addr constant [9 x i8] c"severity\00" -@.str.7086 = private unnamed_addr constant [7 x i8] c"source\00" -@.str.7087 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7088 = private unnamed_addr constant [8 x i8] c"message\00" -@.str.7089 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7090 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7091 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7092 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7093 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7094 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7095 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7096 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7097 = private unnamed_addr constant [9 x i8] c"contents\00" -@.str.7098 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7099 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7100 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7101 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7102 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7103 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7104 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7105 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7106 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7107 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7108 = private unnamed_addr constant [15 x i8] c"selectionRange\00" -@.str.7109 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7110 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7111 = private unnamed_addr constant [7 x i8] c"detail\00" -@.str.7112 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7113 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7114 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7115 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7116 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7117 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7118 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7119 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" -@.str.7120 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7121 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7122 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7123 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7124 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7125 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7126 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7127 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7128 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7129 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7130 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7131 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7132 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7133 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7135 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7136 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7137 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7138 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7139 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7140 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7141 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.7142 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7143 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7144 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7145 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7146 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7147 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7148 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7149 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7150 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7151 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.7152 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7153 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7155 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7157 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7158 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7159 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7160 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7161 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7162 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7163 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7164 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7165 = private unnamed_addr constant [7 x i8] c"module\00" -@.str.7166 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7167 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7168 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7169 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7170 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7171 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" -@.str.7172 = private unnamed_addr constant [6 x i8] c"items\00" -@.str.7173 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7174 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7175 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7176 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7177 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7178 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7179 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7180 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7181 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7182 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7183 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7184 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7185 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7186 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7187 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7188 = private unnamed_addr constant [11 x i8] c"parameters\00" -@.str.7189 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7190 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7191 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7192 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7193 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7194 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7195 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7196 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7197 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7198 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7199 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7200 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7201 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7202 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7203 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.7204 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7205 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.7206 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.7207 = private unnamed_addr constant [11 x i8] c"initialize\00" -@.str.7208 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" -@.str.7209 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" -@.str.7210 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" -@.str.7211 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" -@.str.7212 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7213 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7214 = private unnamed_addr constant [19 x i8] c"completionProvider\00" -@.str.7215 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.7216 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7217 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7218 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" -@.str.7219 = private unnamed_addr constant [13 x i8] c"capabilities\00" -@.str.7220 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7221 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7222 = private unnamed_addr constant [11 x i8] c"serverInfo\00" -@.str.7223 = private unnamed_addr constant [9 x i8] c"shutdown\00" -@.str.7224 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.7225 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" -@.str.7226 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" -@.str.7227 = private unnamed_addr constant [15 x i8] c"contentChanges\00" -@.str.7228 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7229 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7230 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" -@.str.7231 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" -@.str.7232 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7233 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7234 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7235 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7236 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7237 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7238 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7239 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" -@.str.7240 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7241 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7242 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7243 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7244 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7245 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7246 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7247 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7248 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7249 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7250 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7251 = private unnamed_addr constant [12 x i8] c"/finch_lsp_\00" -@.str.7252 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7253 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7254 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7255 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7256 = private unnamed_addr constant [3 x i8] c"\5C\22\00" -@.str.7257 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.7258 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.7259 = private unnamed_addr constant [3 x i8] c"\5Cr\00" -@.str.7260 = private unnamed_addr constant [3 x i8] c"\5Ct\00" -@.str.7261 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" -@.str.7262 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7263 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7264 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.7265 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7266 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7267 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7268 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7269 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7270 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7271 = private unnamed_addr constant [3 x i8] c": \00" -@.str.7272 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7273 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7274 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7275 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7276 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7277 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7278 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7279 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7280 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7281 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7282 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7283 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7284 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7285 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7286 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7287 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7288 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7289 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7290 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7291 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7292 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7293 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7294 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7295 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7296 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7297 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7298 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7299 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7300 = private unnamed_addr constant [3 x i8] c"{}\00" -@.str.7301 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7302 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7303 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.7304 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7305 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7306 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7307 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7308 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7309 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7310 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7311 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.7312 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7313 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.7314 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7315 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7316 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7317 = private unnamed_addr constant [3 x i8] c" \00" -@.str.7318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7319 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7320 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7321 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7322 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7323 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7324 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7325 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7326 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7327 = private unnamed_addr constant [6 x i8] c"line \00" -@.str.7328 = private unnamed_addr constant [10 x i8] c", column \00" -@.str.7329 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7330 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7331 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7332 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7333 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7335 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7336 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7337 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7338 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7340 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7341 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7342 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7343 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7344 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7345 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7346 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7347 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7348 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7349 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7350 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7351 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7352 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7353 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7354 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7355 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7356 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7357 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7358 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7359 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7360 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7361 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7362 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7363 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7364 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7365 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7366 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7367 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7368 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" -@.str.7369 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7371 = private unnamed_addr constant [14 x i8] c"json: found '\00" -@.str.7372 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7373 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7374 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7375 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7376 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7377 = private unnamed_addr constant [9 x i8] c"' where \00" -@.str.7378 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7379 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7380 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7381 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7382 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7383 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7384 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7385 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7386 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7387 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7388 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7389 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7390 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7391 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7392 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7393 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7394 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7395 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7396 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7397 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7398 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7399 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7400 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7401 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7402 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7403 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7404 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" -@.str.7405 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7406 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7407 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7408 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7409 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7410 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7411 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7412 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7413 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7414 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7415 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7416 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7418 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7419 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7420 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" -@.str.7421 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7422 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7423 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7424 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7425 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7426 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7427 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7428 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7429 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7430 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7431 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7432 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7434 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7435 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" -@.str.7436 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7437 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7438 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7439 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7440 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7441 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7442 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7443 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7444 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7445 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7446 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7448 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7449 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7450 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.7451 = private unnamed_addr constant [3 x i8] c"\5Cu\00" -@.str.7452 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7453 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7454 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" -@.str.7455 = private unnamed_addr constant [13 x i8] c" in a text (\00" -@.str.7456 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7457 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7458 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7459 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7460 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7461 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7462 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7463 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7464 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7465 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7466 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7467 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7468 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7469 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7470 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7471 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7472 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7473 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7474 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7475 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7476 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7477 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7478 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7479 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7480 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7481 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7482 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7483 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7484 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7485 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7486 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7487 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7488 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7489 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7491 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7492 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7493 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7494 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7495 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7496 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7497 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7498 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7499 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7500 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7501 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7502 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7503 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7504 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7505 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7506 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7507 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7508 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7509 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7510 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7511 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.7512 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7513 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7514 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7515 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7516 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7517 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7518 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7519 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7520 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7521 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" -@.str.7522 = private unnamed_addr constant [4 x i8] c"':'\00" -@.str.7523 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7524 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7525 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7526 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7527 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7528 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7529 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" -@.str.7530 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7531 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7532 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7533 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7534 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7535 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7536 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7537 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7538 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" -@.str.7539 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7540 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7541 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7542 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7543 = private unnamed_addr constant [20 x i8] c"the end of the text\00" -@.str.7544 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.7545 = private unnamed_addr constant [13 x i8] c"std/json.fch\00" -@.str.7546 = private unnamed_addr constant [13 x i8] c"std/path.fch\00" -@.str.7547 = private unnamed_addr constant [13 x i8] c"std/proc.fch\00" -@.str.7548 = private unnamed_addr constant [21 x i8] c"std/proc_windows.fch\00" -@.str.7549 = private unnamed_addr constant [13 x i8] c"std/time.fch\00" -@.str.7550 = private unnamed_addr constant [21 x i8] c"std/time_windows.fch\00" -@.str.7551 = private unnamed_addr constant [16 x i8] c"std/finch_win.h\00" -@.str.7552 = private unnamed_addr constant [24982 x i8] c"// The Finch runtime: string and array helpers, input, files and runtime errors.\0A// It is embedded in the compiler, compiled once into a cache folder, and linked\0A// statically into every Finch program. Everything here is plain C with no state.\0A//\0A// Layout shared with the compiler (src/codegen.cpp):\0A// str = { char *ptr; int64 len; int64 cap } ptr is always NUL-terminated\0A// cap > 0 : heap memory owned by the value (cap bytes allocated)\0A// cap == 0 : a string literal, valid forever, never written to\0A// cap == -1: borrowed from C, must be copied before it is kept\0A// []T = { T *ptr; int64 len; int64 cap } owns ptr when cap > 0\0A// map[K]V: see \22maps\22 below\0A\0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#ifndef _WIN32\0A#include \0A#endif\0A\0Atypedef struct {\0A char *ptr;\0A int64_t len;\0A int64_t cap;\0A} FStr;\0A\0Atypedef struct {\0A void *ptr;\0A int64_t len;\0A int64_t cap;\0A} FArr;\0A\0Astatic char empty[1] = \22\22;\0A\0A// ---------- runtime errors ----------\0A\0A// A program that loads Finch libraries (finch build --shared) can take runtime errors over\0A// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler\0A// gets the message and must not return (longjmp out, or exit itself).\0Astatic void (*fatal_hook)(const char *msg);\0Avoid finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; }\0A\0Astatic __attribute__((noreturn)) void fatal(const char *msg) {\0A if (fatal_hook) fatal_hook(msg);\0A fflush(stdout);\0A fprintf(stderr, \22%s\5Cn\22, msg);\0A exit(1);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) {\0A char full[1024];\0A snprintf(full, sizeof full, \22%s:%lld: runtime error: %s\22, file, (long long)line, msg);\0A fflush(stdout);\0A fatal(full);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) {\0A char msg[128];\0A snprintf(msg, sizeof msg, \22index %lld is out of range (the length is %lld)\22, (long long)i, (long long)len);\0A finch_panic(file, line, msg);\0A}\0A\0Astatic void *must(void *p) {\0A if (!p) {\0A fflush(stdout);\0A fatal(\22runtime error: out of memory\22);\0A }\0A return p;\0A}\0A\0Avoid *finch_alloc(int64_t n) { return must(malloc(n ? (size_t)n : 1)); }\0Avoid *finch_zalloc(int64_t n) { return must(calloc(1, n ? (size_t)n : 1)); }\0A\0A// ---------- strings ----------\0A\0Astatic void str_heap(FStr *out, const char *p, int64_t len) {\0A char *m = finch_alloc(len + 1);\0A if (len) memcpy(m, p, (size_t)len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void str_static(FStr *out, const char *lit) {\0A out->ptr = (char *)lit;\0A out->len = (int64_t)strlen(lit);\0A out->cap = 0;\0A}\0A\0A// A copy that can be kept: literals are shared, everything else is duplicated.\0Avoid finch_str_copy(FStr *out, const FStr *s) {\0A if (s->cap == 0) *out = *s;\0A else str_heap(out, s->ptr, s->len);\0A}\0A\0A// Make `s` writable (before s[i] = c).\0Avoid finch_str_own(FStr *s) {\0A if (s->cap > 0) return;\0A FStr t;\0A str_heap(&t, s->ptr, s->len);\0A *s = t;\0A}\0A\0Avoid finch_str_drop(FStr *s) {\0A if (s->cap > 0) free(s->ptr);\0A}\0A\0Avoid finch_str_from_c(FStr *out, const char *p) {\0A if (!p) {\0A str_static(out, empty);\0A return;\0A }\0A out->ptr = (char *)p;\0A out->len = (int64_t)strlen(p);\0A out->cap = -1;\0A}\0A\0Avoid finch_str_concat(FStr *out, const FStr *a, const FStr *b) {\0A int64_t len = a->len + b->len;\0A char *m = finch_alloc(len + 1);\0A memcpy(m, a->ptr, (size_t)a->len);\0A memcpy(m + a->len, b->ptr, (size_t)b->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Aint finch_str_eq(const FStr *a, const FStr *b) {\0A return a->len == b->len && memcmp(a->ptr, b->ptr, (size_t)a->len) == 0;\0A}\0A\0Aint64_t finch_str_cmp(const FStr *a, const FStr *b) {\0A int64_t n = a->len < b->len ? a->len : b->len;\0A int c = memcmp(a->ptr, b->ptr, (size_t)n);\0A if (c) return c < 0 ? -1 : 1;\0A return a->len < b->len ? -1 : a->len > b->len;\0A}\0A\0Avoid finch_str_from_int(FStr *out, int64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%lld\22, (long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_uint(FStr *out, uint64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%llu\22, (unsigned long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_float(FStr *out, double v) {\0A char buf[64];\0A int n = snprintf(buf, sizeof buf, \22%g\22, v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_char(FStr *out, char c) { str_heap(out, &c, 1); }\0A\0Avoid finch_str_from_bool(FStr *out, int b) { str_static(out, b ? \22true\22 : \22false\22); }\0A\0Astatic void number_error(char *msg, size_t size, const FStr *s, const char *kind) {\0A snprintf(msg, size, \22can't turn \5C\22%.*s\5C\22 into %s\22, (int)(s->len > 100 ? 100 : s->len), s->ptr ? s->ptr : \22\22, kind);\0A}\0A\0Astatic int parse_int(const FStr *s, int64_t *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A errno = 0;\0A long long v = strtoll(p, &end, 10);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end || errno == ERANGE);\0A}\0A\0Astatic int parse_float(const FStr *s, double *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A double v = strtod(p, &end);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end);\0A}\0A\0Aint64_t finch_str_to_int(const FStr *s, const char *file, int64_t line) {\0A int64_t v;\0A if (!parse_int(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0Adouble finch_str_to_float(const FStr *s, const char *file, int64_t line) {\0A double v;\0A if (!parse_float(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0A// ---------- errors as values: int(s) or 0, try read_file(p) ... ----------\0A// Each gives back 1 on success; on failure 0, with the message in *err.\0A\0Astatic void set_error(FStr *err, const char *msg) { str_heap(err, msg, (int64_t)strlen(msg)); }\0A\0Aint finch_str_try_int(const FStr *s, int64_t *out, FStr *err) {\0A if (parse_int(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Aint finch_str_try_float(const FStr *s, double *out, FStr *err) {\0A if (parse_float(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Astatic void file_error(FStr *err, const char *what, const FStr *path) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't %s the file \5C\22%.*s\5C\22: %s\22, what, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr ? path->ptr : \22\22, strerror(errno));\0A set_error(err, msg);\0A}\0A\0A// when `fn main() -> !` fails\0Avoid finch_report_error(const FStr *msg) {\0A fflush(stdout);\0A fprintf(stderr, \22error: %.*s\5Cn\22, (int)msg->len, msg->ptr ? msg->ptr : \22\22);\0A}\0A\0Avoid finch_str_sub(FStr *out, const FStr *s, int64_t start, int64_t end, const char *file, int64_t line) {\0A if (start < 0 || end > s->len || start > end) {\0A char msg[160];\0A snprintf(msg, sizeof msg, \22sub(%lld, %lld) is out of range (the length is %lld)\22, (long long)start,\0A (long long)end, (long long)s->len);\0A finch_panic(file, line, msg);\0A }\0A str_heap(out, s->ptr + start, end - start);\0A}\0A\0Aint64_t finch_str_find(const FStr *s, const FStr *t) {\0A if (t->len == 0) return 0;\0A for (int64_t i = 0; i + t->len <= s->len; i++)\0A if (s->ptr[i] == t->ptr[0] && memcmp(s->ptr + i, t->ptr, (size_t)t->len) == 0) return i;\0A return -1;\0A}\0A\0Aint finch_str_starts(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Aint finch_str_ends(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr + s->len - t->len, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Avoid finch_str_trim(FStr *out, const FStr *s) {\0A int64_t a = 0, b = s->len;\0A while (a < b && isspace((unsigned char)s->ptr[a])) a++;\0A while (b > a && isspace((unsigned char)s->ptr[b - 1])) b--;\0A str_heap(out, s->ptr + a, b - a);\0A}\0A\0Avoid finch_str_upper(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)toupper((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_lower(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)tolower((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_replace(FStr *out, const FStr *s, const FStr *from, const FStr *to) {\0A if (from->len == 0) {\0A str_heap(out, s->ptr, s->len);\0A return;\0A }\0A int64_t count = 0;\0A for (int64_t i = 0; i + from->len <= s->len;) {\0A if (memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A count++;\0A i += from->len;\0A } else {\0A i++;\0A }\0A }\0A int64_t len = s->len + count * (to->len - from->len);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < s->len;) {\0A if (i + from->len <= s->len && memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A memcpy(w, to->ptr, (size_t)to->len);\0A w += to->len;\0A i += from->len;\0A } else {\0A *w++ = s->ptr[i++];\0A }\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len);\0A\0A// \22a,b,,c\22.split(\22,\22) -> [\22a\22, \22b\22, \22\22, \22c\22]; split(\22\22) gives single characters.\0Avoid finch_str_split(FArr *out, const FStr *s, const FStr *sep) {\0A out->ptr = NULL;\0A out->len = out->cap = 0;\0A if (sep->len == 0) {\0A for (int64_t i = 0; i < s->len; i++) arr_push_str(out, s->ptr + i, 1);\0A return;\0A }\0A int64_t start = 0;\0A for (int64_t i = 0; i + sep->len <= s->len;) {\0A if (memcmp(s->ptr + i, sep->ptr, (size_t)sep->len) == 0) {\0A arr_push_str(out, s->ptr + start, i - start);\0A i += sep->len;\0A start = i;\0A } else {\0A i++;\0A }\0A }\0A arr_push_str(out, s->ptr + start, s->len - start);\0A}\0A\0Avoid finch_str_join(FStr *out, const FArr *parts, const FStr *sep) {\0A const FStr *p = parts->ptr;\0A int64_t len = 0;\0A for (int64_t i = 0; i < parts->len; i++) len += p[i].len + (i ? sep->len : 0);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < parts->len; i++) {\0A if (i) {\0A memcpy(w, sep->ptr, (size_t)sep->len);\0A w += sep->len;\0A }\0A memcpy(w, p[i].ptr, (size_t)p[i].len);\0A w += p[i].len;\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_repeat(FStr *out, const FStr *s, int64_t n) {\0A if (n < 0) n = 0;\0A int64_t len = s->len * n;\0A char *m = finch_alloc(len + 1);\0A for (int64_t i = 0; i < n; i++) memcpy(m + i * s->len, s->ptr, (size_t)s->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_from_bytes(FStr *out, const FArr *bytes) { str_heap(out, bytes->ptr, bytes->len); }\0A\0A// ---------- building text: print(x) and str(x) of arrays, maps and structs ----------\0A// A buffer starts as an empty str and grows on the heap.\0A\0Avoid finch_buf_add(FStr *b, const char *p, int64_t n) {\0A if (b->len + n + 1 > b->cap) {\0A int64_t cap = b->cap > 0 ? b->cap * 2 : 32;\0A while (cap < b->len + n + 1) cap *= 2;\0A b->ptr = must(realloc(b->cap > 0 ? b->ptr : NULL, (size_t)cap));\0A b->cap = cap;\0A }\0A if (n) memcpy(b->ptr + b->len, p, (size_t)n);\0A b->len += n;\0A b->ptr[b->len] = 0;\0A}\0A\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) {\0A char t[64];\0A va_list ap;\0A va_start(ap, fmt);\0A int n = vsnprintf(t, sizeof t, fmt, ap);\0A va_end(ap);\0A finch_buf_add(b, t, n);\0A}\0A\0Avoid finch_buf_int(FStr *b, int64_t v) { buf_fmt(b, \22%lld\22, (long long)v); }\0Avoid finch_buf_uint(FStr *b, uint64_t v) { buf_fmt(b, \22%llu\22, (unsigned long long)v); }\0Avoid finch_buf_float(FStr *b, double v) { buf_fmt(b, \22%g\22, v); }\0Avoid finch_buf_bool(FStr *b, int v) { finch_buf_add(b, v ? \22true\22 : \22false\22, v ? 4 : 5); }\0Avoid finch_buf_ptr(FStr *b, const void *p) {\0A if (p) buf_fmt(b, \220x%llx\22, (unsigned long long)(uintptr_t)p);\0A else finch_buf_add(b, \22null\22, 4);\0A}\0A\0Avoid finch_buf_char(FStr *b, char c, int quoted) {\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A finch_buf_add(b, &c, 1);\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A}\0A\0Avoid finch_buf_str(FStr *b, const FStr *s, int quoted) {\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A finch_buf_add(b, s->ptr, s->len);\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A}\0A\0A// print the buffer and free it\0Avoid finch_buf_print(FStr *b) {\0A if (b->len) fwrite(b->ptr, 1, (size_t)b->len, stdout);\0A if (b->cap > 0) free(b->ptr);\0A}\0A\0A// ---------- arrays ----------\0A\0Avoid finch_arr_reserve(FArr *a, int64_t need, int64_t es) {\0A if (need <= a->cap) return;\0A int64_t cap = a->cap * 2;\0A if (cap < 4) cap = 4;\0A if (cap < need) cap = need;\0A a->ptr = must(realloc(a->cap > 0 ? a->ptr : NULL, (size_t)(cap * es)));\0A a->cap = cap;\0A}\0A\0Avoid finch_arr_make(FArr *out, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A out->ptr = len ? finch_zalloc(len * es) : NULL;\0A out->len = len;\0A out->cap = len;\0A}\0A\0A// grow or shrink to `len`; new elements are zero\0Avoid finch_arr_resize(FArr *a, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A finch_arr_reserve(a, len, es);\0A if (len > a->len) memset((char *)a->ptr + a->len * es, 0, (size_t)((len - a->len) * es));\0A a->len = len;\0A}\0A\0A// a byte-for-byte copy of the elements (the compiler deep-copies owning elements afterwards)\0Avoid finch_arr_clone_raw(FArr *out, const FArr *a, int64_t es) {\0A out->len = a->len;\0A out->cap = a->len;\0A out->ptr = a->len ? finch_alloc(a->len * es) : NULL;\0A if (a->len) memcpy(out->ptr, a->ptr, (size_t)(a->len * es));\0A}\0A\0Avoid finch_arr_free(FArr *a) {\0A if (a->cap > 0) free(a->ptr);\0A}\0A\0A// open a hole at i (0 <= i <= len), len grows by one\0Avoid finch_arr_insert_gap(FArr *a, int64_t i, int64_t es, const char *file, int64_t line) {\0A if (i < 0 || i > a->len) finch_panic_index(file, line, i, a->len);\0A finch_arr_reserve(a, a->len + 1, es);\0A char *p = a->ptr;\0A memmove(p + (i + 1) * es, p + i * es, (size_t)((a->len - i) * es));\0A a->len++;\0A}\0A\0A// close the hole at i (the element was already moved out), len shrinks by one\0Avoid finch_arr_remove_gap(FArr *a, int64_t i, int64_t es) {\0A char *p = a->ptr;\0A memmove(p + i * es, p + (i + 1) * es, (size_t)((a->len - i - 1) * es));\0A a->len--;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len) {\0A finch_arr_reserve(a, a->len + 1, (int64_t)sizeof(FStr));\0A str_heap((FStr *)a->ptr + a->len, p, len);\0A a->len++;\0A}\0A\0Avoid finch_bytes_from_str(FArr *out, const FStr *s) {\0A out->len = out->cap = s->len;\0A out->ptr = s->len ? finch_alloc(s->len) : NULL;\0A if (s->len) memcpy(out->ptr, s->ptr, (size_t)s->len);\0A}\0A\0A// ---------- program arguments, input and files ----------\0A\0Avoid finch_args(FArr *out, int argc, char **argv) {\0A out->len = out->cap = argc;\0A out->ptr = finch_alloc((int64_t)sizeof(FStr) * (argc ? argc : 1));\0A for (int i = 0; i < argc; i++) str_heap((FStr *)out->ptr + i, argv[i], (int64_t)strlen(argv[i]));\0A}\0A\0A// input(\22Name? \22) prints the prompt and reads one line, without the newline.\0Avoid finch_input(FStr *out, const FStr *prompt) {\0A if (prompt->len) fwrite(prompt->ptr, 1, (size_t)prompt->len, stdout);\0A fflush(stdout);\0A // read one line of any length (getline isn't available everywhere)\0A size_t size = 128, n = 0;\0A char *line = finch_alloc((int64_t)size);\0A int c, got = 0;\0A while ((c = fgetc(stdin)) != EOF) {\0A got = 1;\0A if (c == '\5Cn') break;\0A if (n + 1 >= size) line = must(realloc(line, size *= 2));\0A line[n++] = (char)c;\0A }\0A if (!got) {\0A free(line);\0A str_static(out, empty);\0A return;\0A }\0A while (n > 0 && line[n - 1] == '\5Cr') n--;\0A line[n] = 0;\0A out->ptr = line;\0A out->len = (int64_t)n;\0A out->cap = (int64_t)size;\0A}\0A\0Aint finch_file_exists(const FStr *path) {\0A FILE *f = fopen(path->ptr, \22rb\22);\0A if (f) fclose(f);\0A return f != NULL;\0A}\0A\0Aint finch_try_read_file(FStr *out, const FStr *path, FStr *err) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A file_error(err, \22read\22, path);\0A return 0;\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A return 1;\0A}\0A\0Avoid finch_read_file(FStr *out, const FStr *path, const char *file, int64_t line) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't read the file \5C\22%.*s\5C\22: %s\22, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr, strerror(errno));\0A finch_panic(file, line, msg);\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A}\0A\0A// shell(\22ls -l\22): run a command, give back its exit code\0Aint64_t finch_shell(const FStr *cmd) {\0A fflush(stdout);\0A int status = system(cmd->ptr ? cmd->ptr : \22\22);\0A#ifdef _WIN32\0A return status; // Windows gives the exit code directly\0A#else\0A if (status == -1) return -1;\0A if (WIFEXITED(status)) return WEXITSTATUS(status);\0A return 128 + (WIFSIGNALED(status) ? WTERMSIG(status) : 0);\0A#endif\0A}\0A\0Aint finch_delete_file(const FStr *path) { return remove(path->ptr ? path->ptr : \22\22) == 0; }\0A\0Aint finch_try_delete_file(const FStr *path, FStr *err) {\0A if (remove(path->ptr ? path->ptr : \22\22) == 0) return 1;\0A file_error(err, \22delete\22, path);\0A return 0;\0A}\0A\0A// stdin/stdout/stderr are macros on some systems (Windows), so Finch asks for them here\0Avoid *finch_std_stream(int i) { return i == 0 ? (void *)stdin : i == 1 ? (void *)stdout : (void *)stderr; }\0A\0Aint finch_write_file(const FStr *path, const FStr *text) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22wb\22);\0A if (!f) return 0;\0A size_t put = text->len ? fwrite(text->ptr, 1, (size_t)text->len, f) : 0;\0A return fclose(f) == 0 && put == (size_t)text->len;\0A}\0A\0Aint finch_try_write_file(const FStr *path, const FStr *text, FStr *err) {\0A errno = 0;\0A if (finch_write_file(path, text)) return 1;\0A if (!errno) errno = EIO;\0A file_error(err, \22write\22, path);\0A return 0;\0A}\0A\0A// ---------- maps ----------\0A// map[K]V = { entries; len; used; cap; index; icap; adds }\0A// entries: `used` slots of es bytes, each { uint64 hash; K key; V value }, in insertion order.\0A// A removed entry keeps its slot (hash 0) until the next resize packs the slots.\0A// index: icap slots (a power of two, at least 2 * cap): -1 empty, -2 removed, else an entry number.\0A// adds: how many keys were ever added; a `for` over the map stops with an error if it changes.\0A// The compiler stores, copies and drops keys and values; the runtime only finds and places entries.\0A// Keys are compared byte for byte (numbers, chars, bools) or as text (kstr).\0A\0Atypedef struct {\0A char *entries;\0A int64_t len, used, cap;\0A int64_t *index;\0A int64_t icap;\0A int64_t adds;\0A} FMap;\0A\0Astatic uint64_t map_hash(const void *key, int64_t ks, int kstr) {\0A const unsigned char *p;\0A size_t n;\0A if (kstr) {\0A const FStr *s = key;\0A p = (const unsigned char *)s->ptr;\0A n = (size_t)s->len;\0A } else {\0A p = key;\0A n = (size_t)ks;\0A }\0A uint64_t h = 1469598103934665603ULL; // FNV-1a, then mixed so the low bits spread well\0A for (size_t i = 0; i < n; i++) {\0A h ^= p[i];\0A h *= 1099511628211ULL;\0A }\0A h ^= h >> 31;\0A h *= 0xbf58476d1ce4e5b9ULL;\0A h ^= h >> 29;\0A return h | 1; // 0 marks a removed entry\0A}\0A\0Astatic int map_key_eq(const char *a, const void *b, int64_t ks, int kstr) {\0A if (!kstr) return memcmp(a, b, (size_t)ks) == 0;\0A const FStr *x = (const FStr *)a, *y = b;\0A return x->len == y->len && (x->len == 0 || memcmp(x->ptr, y->ptr, (size_t)x->len) == 0);\0A}\0A\0Astatic void map_reindex(FMap *m, int64_t es) {\0A if (m->len != m->used) { // pack the slots of removed entries away\0A int64_t j = 0;\0A for (int64_t i = 0; i < m->used; i++) {\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == 0) continue;\0A if (i != j) memmove(m->entries + j * es, e, (size_t)es);\0A j++;\0A }\0A m->used = j;\0A }\0A int64_t icap = 16;\0A while (icap < m->cap * 2) icap *= 2;\0A free(m->index);\0A m->index = finch_alloc(icap * (int64_t)sizeof(int64_t));\0A memset(m->index, 0xff, (size_t)icap * sizeof(int64_t));\0A m->icap = icap;\0A for (int64_t i = 0; i < m->used; i++) {\0A uint64_t h = *(uint64_t *)(m->entries + i * es);\0A int64_t s = (int64_t)(h & (uint64_t)(icap - 1));\0A while (m->index[s] != -1) s = (s + 1) & (icap - 1);\0A m->index[s] = i;\0A }\0A}\0A\0A// the entry number of `key`, or -1\0Aint64_t finch_map_find(const FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr) {\0A if (m->len == 0) return -1;\0A uint64_t h = map_hash(key, ks, kstr);\0A for (int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));; s = (s + 1) & (m->icap - 1)) {\0A int64_t i = m->index[s];\0A if (i == -1) return -1;\0A if (i < 0) continue;\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == h && map_key_eq(e + 8, key, ks, kstr)) return i;\0A }\0A}\0A\0A// The entry for `key`. A new one is zeroed except its hash (*added = 1); the compiler then stores the key.\0Aint64_t finch_map_slot(FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr, int32_t *added) {\0A int64_t i = finch_map_find(m, key, es, ks, kstr);\0A *added = i < 0;\0A if (i >= 0) return i;\0A if (m->used == m->cap) {\0A if (m->len * 4 < m->cap * 3) { // many removed slots: pack them instead of growing\0A map_reindex(m, es);\0A } else {\0A m->cap = m->cap ? m->cap * 2 : 8;\0A m->entries = must(realloc(m->entries, (size_t)(m->cap * es)));\0A map_reindex(m, es);\0A }\0A }\0A uint64_t h = map_hash(key, ks, kstr);\0A i = m->used++;\0A char *e = m->entries + i * es;\0A memset(e, 0, (size_t)es);\0A *(uint64_t *)e = h;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] >= 0) s = (s + 1) & (m->icap - 1);\0A m->index[s] = i;\0A m->len++;\0A m->adds++;\0A return i;\0A}\0A\0A// Forget entry i (its key and value were already dropped by the compiler).\0Avoid finch_map_remove_at(FMap *m, int64_t i, int64_t es) {\0A char *e = m->entries + i * es;\0A uint64_t h = *(uint64_t *)e;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] != i) s = (s + 1) & (m->icap - 1);\0A m->index[s] = -2;\0A *(uint64_t *)e = 0;\0A if (--m->len == 0) {\0A m->used = 0;\0A memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A }\0A}\0A\0Avoid finch_map_clear(FMap *m) {\0A m->len = m->used = 0;\0A if (m->index) memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0Avoid finch_map_free(FMap *m) {\0A free(m->entries);\0A free(m->index);\0A}\0A\0A// A copy of the slots and the index; the compiler then copies the keys and values that own memory.\0Avoid finch_map_clone_raw(FMap *out, const FMap *m, int64_t es) {\0A *out = *m;\0A if (!m->cap) return;\0A out->entries = finch_alloc(m->cap * es);\0A memcpy(out->entries, m->entries, (size_t)(m->used * es));\0A out->index = finch_alloc(m->icap * (int64_t)sizeof(int64_t));\0A memcpy(out->index, m->index, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_changed(const char *file, int64_t line) {\0A finch_panic(file, line, \22a key was added to the map while looping over it (collect the new keys, and add them after the loop)\22);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_missing(const char *file, int64_t line, const FStr *key) {\0A char msg[200];\0A snprintf(msg, sizeof msg, \22the key %.*s is not in the map (check with .has(key), or use .get(key, default))\22,\0A (int)(key->len > 100 ? 100 : key->len), key->ptr ? key->ptr : \22\22);\0A finch_panic(file, line, msg);\0A}\0A\00" -@.str.7553 = private unnamed_addr constant [12885 x i8] c"// JSON: read it, build it, write it.\0A//\0A// import json\0A//\0A// doc := try json.parse(\22{\5C\22name\5C\22: \5C\22Finch\5C\22, \5C\22tags\5C\22: [\5C\22fast\5C\22, \5C\22small\5C\22], \5C\22stars\5C\22: 5}\22)\0A// print(doc.get(\22name\22).str_or(\22\22)) Finch\0A// print(doc.get(\22tags\22).at(1).str_or(\22\22)) small\0A// print(doc.get(\22stars\22).int_or(0)) 5\0A// print(doc.get(\22missing\22).is_null()) true (a missing key is null, so chains never fail)\0A//\0A// out := json.new_object()\0A// out.set(\22ok\22, json.new_bool(true))\0A// list := json.new_list()\0A// list.push(json.new_number(1.5))\0A// out.set(\22values\22, list)\0A// print(json.stringify(out)) {\22ok\22:true,\22values\22:[1.5]}\0A// print(json.pretty(out)) the same, over several lines\0A\0Aenum Kind { Null, Bool, Number, Text, List, Object }\0A\0A// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number,\0A// text for Text, items for List, and items with keys (the same length, in the same order) for Object.\0Astruct Json {\0A Kind kind\0A bool flag\0A float num\0A str text\0A []Json items\0A []str keys\0A}\0A\0Afn new_null() -> Json {\0A return Json(kind: Kind.Null)\0A}\0A\0Afn new_bool(bool b) -> Json {\0A return Json(kind: Kind.Bool, flag: b)\0A}\0A\0Afn new_number(float n) -> Json {\0A return Json(kind: Kind.Number, num: n)\0A}\0A\0Afn new_text(str s) -> Json {\0A return Json(kind: Kind.Text, text: s)\0A}\0A\0Afn new_list() -> Json {\0A return Json(kind: Kind.List)\0A}\0A\0Afn new_object() -> Json {\0A return Json(kind: Kind.Object)\0A}\0A\0A// ---------- looking inside ----------\0A\0Afn Json.is_null() -> bool {\0A return self.kind == Kind.Null\0A}\0A\0A// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest\0Afn Json.len() -> int {\0A return match self.kind {\0A List, Object -> self.items.len\0A Text -> self.text.len\0A else -> 0\0A }\0A}\0A\0Afn Json.has(str key) -> bool {\0A return self.kind == Kind.Object && self.keys.contains(key)\0A}\0A\0A// the value of a key of an object; null if there is none (or this is not an object)\0Afn Json.get(str key) -> Json {\0A if self.kind != Kind.Object {\0A return new_null()\0A }\0A i := self.keys.find(key)\0A if i < 0 {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the element of a list; null if there is none\0Afn Json.at(int i) -> Json {\0A if self.kind != Kind.List || i < 0 || i >= self.items.len {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the value if it is of that kind, else what was given\0Afn Json.str_or(str fallback) -> str {\0A if self.kind == Kind.Text {\0A return self.text\0A }\0A return fallback\0A}\0A\0Afn Json.float_or(float fallback) -> float {\0A if self.kind == Kind.Number {\0A return self.num\0A }\0A return fallback\0A}\0A\0Afn Json.int_or(int fallback) -> int {\0A if self.kind == Kind.Number {\0A return int(self.num)\0A }\0A return fallback\0A}\0A\0Afn Json.bool_or(bool fallback) -> bool {\0A if self.kind == Kind.Bool {\0A return self.flag\0A }\0A return fallback\0A}\0A\0A// the keys of an object, in the order they were written\0Afn Json.names() -> []str {\0A return self.keys\0A}\0A\0A// ---------- building ----------\0A\0A// add to the end of a list\0Afn Json.push(Json v) {\0A self.items.push(v)\0A}\0A\0A// give a key a value in an object; a key that is already there is replaced\0Afn Json.set(str key, Json v) {\0A i := self.keys.find(key)\0A if i >= 0 {\0A self.items[i] = v\0A return\0A }\0A self.keys.push(key)\0A self.items.push(v)\0A}\0A\0A// ---------- writing ----------\0A\0Afn quote(str s) -> str {\0A []str parts = [\22\5C\22\22]\0A for c in s {\0A n := int(c)\0A if c == '\22' {\0A parts.push(\22\5C\5C\5C\22\22)\0A } else if c == '\5C\5C' {\0A parts.push(\22\5C\5C\5C\5C\22)\0A } else if c == '\5Cn' {\0A parts.push(\22\5C\5Cn\22)\0A } else if c == '\5Cr' {\0A parts.push(\22\5C\5Cr\22)\0A } else if c == '\5Ct' {\0A parts.push(\22\5C\5Ct\22)\0A } else if n < 32 {\0A parts.push(\22\5C\5Cu00\22 + hexdigit(n / 16) + hexdigit(n % 16))\0A } else {\0A parts.push(str(c))\0A }\0A }\0A parts.push(\22\5C\22\22)\0A return parts.join(\22\22)\0A}\0A\0Afn hexdigit(int n) -> str {\0A digits := \220123456789abcdef\22\0A return str(digits[n])\0A}\0A\0Afn number_text(float n) -> str {\0A if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 {\0A return str(int(n))\0A }\0A return str(n)\0A}\0A\0Astruct Writer {\0A []str out\0A}\0A\0Afn write(Json j, str indent, str pad, ptr[Writer] w) {\0A nl := \22\22\0A inner := \22\22\0A sep := \22,\22\0A colon := \22:\22\0A if indent.len > 0 {\0A nl = \22\5Cn\22\0A inner = pad + indent\0A colon = \22: \22\0A }\0A match j.kind {\0A Null -> w.out.push(\22null\22)\0A Bool -> {\0A if j.flag {\0A w.out.push(\22true\22)\0A } else {\0A w.out.push(\22false\22)\0A }\0A }\0A Number -> w.out.push(number_text(j.num))\0A Text -> w.out.push(quote(j.text))\0A List -> {\0A if j.items.len == 0 {\0A w.out.push(\22[]\22)\0A return\0A }\0A w.out.push(\22[\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22]\22)\0A }\0A Object -> {\0A if j.items.len == 0 {\0A w.out.push(\22{}\22)\0A return\0A }\0A w.out.push(\22{\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner + quote(j.keys[i]) + colon)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22}\22)\0A }\0A }\0A}\0A\0A// the value as text on one line\0Afn stringify(Json j) -> str {\0A w := Writer()\0A write(j, \22\22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// the value as text over several lines, indented by two spaces\0Afn pretty(Json j) -> str {\0A w := Writer()\0A write(j, \22 \22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// ---------- reading ----------\0A\0Astruct Reader {\0A str src\0A int i\0A}\0A\0A// the line and column of a position, for a message\0Afn where(ptr[Reader] r) -> str {\0A line := 1\0A col := 1\0A for k in 0..r.i {\0A if k < r.src.len && r.src[k] == '\5Cn' {\0A line += 1\0A col = 1\0A } else {\0A col += 1\0A }\0A }\0A return \22line \22 + str(line) + \22, column \22 + str(col)\0A}\0A\0Afn peek(ptr[Reader] r) -> char {\0A if r.i < r.src.len {\0A return r.src[r.i]\0A }\0A return char(0)\0A}\0A\0Afn skip_space(ptr[Reader] r) {\0A while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\5Cn' || r.src[r.i] == '\5Ct' || r.src[r.i] == '\5Cr') {\0A r.i += 1\0A }\0A}\0A\0Afn unexpected(ptr[Reader] r, str wanted) -> str {\0A if r.i >= r.src.len {\0A return \22json: the text ends where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A }\0A return \22json: found '\22 + str(r.src[r.i]) + \22' where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A}\0A\0A// does `word` come next?\0Afn comes(ptr[Reader] r, str word) -> bool {\0A return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word\0A}\0A\0Afn expect_word(ptr[Reader] r, str word) -> ! {\0A if !comes(r, word) {\0A return error(unexpected(r, \22'\22 + word + \22'\22))\0A }\0A r.i += word.len\0A}\0A\0Afn hex_value(char c) -> int {\0A if c >= '0' && c <= '9' {\0A return int(c) - int('0')\0A }\0A if c >= 'a' && c <= 'f' {\0A return int(c) - int('a') + 10\0A }\0A if c >= 'A' && c <= 'F' {\0A return int(c) - int('A') + 10\0A }\0A return -1\0A}\0A\0A// a code point as UTF-8\0Afn utf8(int cp) -> str {\0A []u8 b\0A if cp < 128 {\0A b.push(u8(cp))\0A } else if cp < 2048 {\0A b.push(u8(192 + cp / 64))\0A b.push(u8(128 + cp % 64))\0A } else if cp < 65536 {\0A b.push(u8(224 + cp / 4096))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A } else {\0A b.push(u8(240 + cp / 262144))\0A b.push(u8(128 + (cp / 4096) % 64))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A }\0A return str(b)\0A}\0A\0Afn read_hex4(ptr[Reader] r) -> int! {\0A n := 0\0A for k in 0..4 {\0A if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 {\0A return error(unexpected(r, \22a hexadecimal digit\22))\0A }\0A n = n * 16 + hex_value(r.src[r.i])\0A r.i += 1\0A }\0A return n\0A}\0A\0Afn read_string(ptr[Reader] r) -> str! {\0A r.i += 1 // the opening quote\0A []str parts\0A start := r.i\0A while true {\0A if r.i >= r.src.len {\0A return error(\22json: a text is never closed (\22 + where(r) + \22)\22)\0A }\0A c := r.src[r.i]\0A if c == '\22' {\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A return parts.join(\22\22)\0A }\0A if int(c) < 32 {\0A return error(\22json: a line break or control character inside a text (\22 + where(r) + \22)\22)\0A }\0A if c != '\5C\5C' {\0A r.i += 1\0A continue\0A }\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A e := peek(r)\0A r.i += 1\0A if e == 'n' {\0A parts.push(\22\5Cn\22)\0A } else if e == 't' {\0A parts.push(\22\5Ct\22)\0A } else if e == 'r' {\0A parts.push(\22\5Cr\22)\0A } else if e == 'b' {\0A parts.push(utf8(8))\0A } else if e == 'f' {\0A parts.push(utf8(12))\0A } else if e == '\22' || e == '\5C\5C' || e == '/' {\0A parts.push(str(e))\0A } else if e == 'u' {\0A cp := try read_hex4(r)\0A // a pair of \F0\9F\98\80 stands for one character above U+FFFF\0A if cp >= 55296 && cp < 56320 && comes(r, \22\5C\5Cu\22) {\0A r.i += 2\0A low := try read_hex4(r)\0A cp = 65536 + (cp - 55296) * 1024 + (low - 56320)\0A }\0A parts.push(utf8(cp))\0A } else {\0A return error(\22json: unknown escape \5C\5C\22 + str(e) + \22 in a text (\22 + where(r) + \22)\22)\0A }\0A start = r.i\0A }\0A}\0A\0Afn read_number(ptr[Reader] r) -> Json! {\0A start := r.i\0A if peek(r) == '-' {\0A r.i += 1\0A }\0A while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') {\0A r.i += 1\0A }\0A n := float(r.src.sub(start, r.i)) or {\0A r.i = start\0A return error(unexpected(r, \22a number\22))\0A }\0A return new_number(n)\0A}\0A\0Afn read_value(ptr[Reader] r) -> Json! {\0A skip_space(r)\0A c := peek(r)\0A if r.i >= r.src.len {\0A return error(unexpected(r, \22a value\22))\0A }\0A if c == '{' {\0A obj := new_object()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A while true {\0A skip_space(r)\0A if peek(r) != '\22' {\0A return error(unexpected(r, \22a key in quotes\22))\0A }\0A key := try read_string(r)\0A skip_space(r)\0A if peek(r) != ':' {\0A return error(unexpected(r, \22':'\22))\0A }\0A r.i += 1\0A v := try read_value(r)\0A obj.set(key, v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A return error(unexpected(r, \22',' or '}'\22))\0A }\0A }\0A if c == '[' {\0A list := new_list()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A while true {\0A v := try read_value(r)\0A list.push(v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A return error(unexpected(r, \22',' or ']'\22))\0A }\0A }\0A if c == '\22' {\0A s := try read_string(r)\0A return new_text(s)\0A }\0A if c == 't' {\0A try expect_word(r, \22true\22)\0A return new_bool(true)\0A }\0A if c == 'f' {\0A try expect_word(r, \22false\22)\0A return new_bool(false)\0A }\0A if c == 'n' {\0A try expect_word(r, \22null\22)\0A return new_null()\0A }\0A if c == '-' || (c >= '0' && c <= '9') {\0A return try read_number(r)\0A }\0A return error(unexpected(r, \22a value\22))\0A}\0A\0A// the JSON in `text`; an error with the line and column where it went wrong\0Afn parse(str text) -> Json! {\0A r := Reader(src: text)\0A v := try read_value(addr(r))\0A skip_space(addr(r))\0A if r.i < r.src.len {\0A return error(unexpected(addr(r), \22the end of the text\22))\0A }\0A return v\0A}\0A\00" -@.str.7554 = private unnamed_addr constant [2847 x i8] c"// Paths, as text. Elements are separated by \22/\22.\0A//\0A// import path\0A// path.join(\22a\22, \22b.txt\22) a/b.txt\0A// path.base(\22/tmp/x/a.tar.gz\22) a.tar.gz path.stem(...) a.tar path.ext(...) .gz\0A// path.dir(\22/tmp/x/a.txt\22) /tmp/x\0A// path.clean(\22a//b/../c/./d\22) a/c/d\0A\0A// a and b with one separator between; an absolute b replaces a\0Afn join(str a, str b) -> str {\0A if a.len == 0 {\0A return b\0A }\0A if b.len == 0 {\0A return a\0A }\0A if b[0] == '/' {\0A return b\0A }\0A if a[a.len - 1] == '/' {\0A return a + b\0A }\0A return a + \22/\22 + b\0A}\0A\0Afn is_abs(str p) -> bool {\0A return p.len > 0 && p[0] == '/'\0A}\0A\0A// the last element: \22a/b.txt\22 -> \22b.txt\22, \22a/b/\22 -> \22b\22, \22\22 -> \22.\22, \22/\22 -> \22/\22\0Afn base(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A if end == 1 && p[0] == '/' {\0A return \22/\22\0A }\0A start := end\0A while start > 0 && p[start - 1] != '/' {\0A start -= 1\0A }\0A return p.sub(start, end)\0A}\0A\0A// everything before the last element: \22a/b.txt\22 -> \22a\22, \22b.txt\22 -> \22.\22, \22/b\22 -> \22/\22\0Afn dir(str p) -> str {\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A i := end\0A while i > 0 && p[i - 1] != '/' {\0A i -= 1\0A }\0A if i == 0 {\0A return \22.\22\0A }\0A while i > 1 && p[i - 1] == '/' {\0A i -= 1\0A }\0A return p.sub(0, i)\0A}\0A\0A// the part of the last element from its last dot: \22a.tar.gz\22 -> \22.gz\22; \22\22 when there is none\0Afn ext(str p) -> str {\0A b := base(p)\0A i := b.len\0A while i > 0 && b[i - 1] != '.' {\0A i -= 1\0A }\0A if i <= 1 { // no dot, or a name that only starts with one (.bashrc)\0A return \22\22\0A }\0A return b.sub(i - 1, b.len)\0A}\0A\0A// the last element without its extension\0Afn stem(str p) -> str {\0A b := base(p)\0A e := ext(p)\0A return b.sub(0, b.len - e.len)\0A}\0A\0A// the elements of a path: \22/a/b/c\22 -> [\22a\22, \22b\22, \22c\22]\0Afn parts(str p) -> []str {\0A []str out\0A for piece in p.split(\22/\22) {\0A if piece.len > 0 {\0A out.push(piece)\0A }\0A }\0A return out\0A}\0A\0A// the shortest path with the same meaning: no \22//\22, no \22.\22, and \22..\22 resolved where it can be\0Afn clean(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A abs := is_abs(p)\0A []str out\0A for piece in parts(p) {\0A if piece == \22.\22 {\0A continue\0A }\0A if piece == \22..\22 {\0A if out.len > 0 && out[out.len - 1] != \22..\22 {\0A out.pop()\0A } else if !abs {\0A out.push(\22..\22)\0A }\0A continue\0A }\0A out.push(piece)\0A }\0A joined := out.join(\22/\22)\0A if abs {\0A return \22/\22 + joined\0A }\0A if joined.len == 0 {\0A return \22.\22\0A }\0A return joined\0A}\0A\00" -@.str.7555 = private unnamed_addr constant [1407 x i8] c"// Programs: run a command, read what it printed, look at the environment.\0A//\0A// import proc\0A// code := proc.run(\22make\22) the exit code; what the command prints goes to the screen\0A// text := try proc.output(\22git describe\22) what the command printed; an error if it failed\0A// proc.env(\22HOME\22, \22/\22) an environment variable, or the second value if it is not set\0Aimport \22stdlib.h\22\0Aimport \22unistd.h\22\0Aimport \22time.h\22\0A\0A// run a command; its output goes to the screen. Gives its exit code.\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0A// run a command and give what it printed. Fails, with its output as the message, if it exits with an error.\0Afn output(str command) -> str! {\0A tmp := \22/tmp/finch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(\22(\22 + command + \22) > '\22 + tmp + \22' 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0A// the folder the program is running in\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7556 = private unnamed_addr constant [996 x i8] c"// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS).\0Aimport \22stdlib.h\22\0Aimport \22process.h\22\0Aimport \22direct.h\22\0Aimport \22time.h\22\0A\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0Afn output(str command) -> str! {\0A tmp := proc_env(\22TEMP\22, \22.\22) + \22\5C\5Cfinch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(command + \22 > \5C\22\22 + tmp + \22\5C\22 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn proc_env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn env(str name, str fallback) -> str {\0A return proc_env(name, fallback)\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7557 = private unnamed_addr constant [2540 x i8] c"// Time: the clock, sleeping, and dates.\0A//\0A// import time\0A// start := time.millis() milliseconds from a clock that only goes forward (to measure with)\0A// time.sleep(250) wait a quarter of a second\0A// time.now() seconds since 1970-01-01 00:00 UTC\0A// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second\0A// time.format(time.now(), \22%Y-%m-%d %H:%M\22) as text, in the computer's time zone\0Aimport \22time.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0A// seconds since 1970-01-01 00:00 UTC\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward: for measuring how long something took\0Afn millis() -> int {\0A timespec ts\0A clock_gettime(CLOCK_MONOTONIC, addr(ts))\0A return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000\0A}\0A\0Afn sleep(int ms) {\0A timespec ts\0A ts.tv_sec = ms / 1000\0A ts.tv_nsec = (ms % 1000) * 1000000\0A nanosleep(addr(ts), null)\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0A// the date and time of a moment, in UTC\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A gmtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// the date and time of a moment, in the computer's time zone\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second\0A// (the rest of C's strftime works too: %A weekday name, %B month name, ...)\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0A// the number of days in a month (month is 1 to 12)\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7558 = private unnamed_addr constant [1793 x i8] c"// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS).\0Aimport \22time.h\22\0Aimport \22finch_win.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms)\0Afn millis() -> int {\0A i64 count = 0\0A i64 freq = 1\0A QueryPerformanceFrequency(addr(freq))\0A QueryPerformanceCounter(addr(count))\0A return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq)\0A}\0A\0Afn sleep(int ms) {\0A Sleep(u32(ms))\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _gmtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7559 = private unnamed_addr constant [366 x i8] c"/* The Windows functions std/time_windows.fch needs. Declared here, not by including :\0A libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */\0Aunsigned long long GetTickCount64(void);\0Avoid Sleep(unsigned long milliseconds);\0Aint QueryPerformanceCounter(long long *count);\0Aint QueryPerformanceFrequency(long long *frequency);\0A\00" - -declare void @finch_panic(ptr, i64, ptr) noreturn cold -declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold -declare ptr @finch_alloc(i64) -declare void @finch_str_copy(ptr, ptr) -declare void @finch_str_drop(ptr) -declare void @finch_arr_free(ptr) -declare void @finch_map_free(ptr) -declare void @finch_str_own(ptr) -declare void @finch_str_concat(ptr, ptr, ptr) -declare i32 @finch_str_eq(ptr, ptr) -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 22, 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 28) - %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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca i64, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - 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 - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = add i64 %t7, 1 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t11 = load i64, ptr %t10 - call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t9, i64 %t11, ptr @.str.4, i64 32) - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - %t14 = load { ptr, i64, i64 }, ptr %a1 - %t15 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %logic.from13 -logic.from13: - br i1 %t19, label %logic.rhs14, label %logic.end15 -logic.rhs14: - %t21 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_starts(ptr %a22, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - %t27 = xor i1 %t26, true - br label %logic.rend16 -logic.rend16: - br label %logic.end15 -logic.end15: - %t28 = phi i1 [ false, %logic.from13 ], [ %t27, %logic.rend16 ] - br i1 %t28, label %then17, label %endif19 -then17: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - %t33 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t32, ptr %a13 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif19 -endif19: - %t35 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a40 - %t41 = load i64, ptr %a40 - %t42 = icmp sgt i64 %t41, 0 - br i1 %t42, label %then20, label %endif22 -then20: - %t43 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t43, ptr %a44 - %t46 = load i64, ptr %a40 - call void @finch_str_sub(ptr %a45, ptr %a44, i64 0, i64 %t46, ptr @.str.10, i64 38) - %t47 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a13) - ret { ptr, i64, i64 } %t47 -endif22: - %t48 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t48 -} - -define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { -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 55, 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 57, 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 57, i64 %t28, i64 %t30) - unreachable -inrange36: - %t32 = extractvalue { ptr, i64, i64 } %t29, 0 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 %t28 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 57) - %t37 = load { ptr, i64, i64 }, ptr %a36 - ret { ptr, i64, i64 } %t37 -endif32: - %t38 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 59) - %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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %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 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = 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 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - %t11 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t10, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t10, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.19, i64 4, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a22 - %t23 = load { ptr, i64, i64 }, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.20, i64 1, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.21, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic37, label %ok38 -panic37: - call void @finch_panic(ptr @.str.22, i64 67, ptr @.str.23) - unreachable -ok38: - %t43 = getelementptr inbounds %S.main.Loader, ptr %t41, i32 0, i32 3 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t40, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t40, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.24, i64 4, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = call i32 @finch_file_exists(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = icmp ne i32 %t56, 0 - br i1 %t58, label %then39, label %endif41 -then39: - %t59 = load { ptr, i64, i64 }, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.25, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t65, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load ptr, ptr %a1 - %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic42, label %ok43 -panic42: - call void @finch_panic(ptr @.str.27, i64 68, ptr @.str.28) - unreachable -ok43: - %t79 = getelementptr inbounds %S.main.Loader, ptr %t77, i32 0, i32 3 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t76, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t76, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t90 -endif41: - %t91 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - br i1 %t94, label %then44, label %endif46 -then44: - %t95 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t95 -endif46: - %t96 = load ptr, ptr %a1 - %t97 = icmp eq ptr %t96, null - br i1 %t97, label %panic47, label %ok48 -panic47: - call void @finch_panic(ptr @.str.30, i64 73, ptr @.str.31) - unreachable -ok48: - %t98 = getelementptr inbounds %S.main.Loader, ptr %t96, i32 0, i32 5 - store i64 0, ptr %a99 - br label %each.cond49 -each.cond49: - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = load i64, ptr %a99 - %t103 = icmp slt i64 %t102, %t101 - br i1 %t103, label %each.body50, label %each.end52 -each.body50: - %t104 = load ptr, ptr %t98 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.32, i64 1, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a109 - %t113 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t112, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t112, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.33, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic53, label %ok54 -panic53: - call void @finch_panic(ptr @.str.34, i64 74, ptr @.str.35) - unreachable -ok54: - %t126 = getelementptr inbounds %S.main.Loader, ptr %t124, i32 0, i32 3 - %t127 = load { ptr, i64, i64 }, ptr %t126 - store { ptr, i64, i64 } %t123, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t123, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a138 - %t139 = call i32 @finch_file_exists(ptr %a138) - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = icmp ne i32 %t139, 0 - br i1 %t141, label %then55, label %endif57 -then55: - %t142 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - %t147 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t146, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.38, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic58, label %ok59 -panic58: - call void @finch_panic(ptr @.str.39, i64 75, ptr @.str.40) - unreachable -ok59: - %t160 = getelementptr inbounds %S.main.Loader, ptr %t158, i32 0, i32 3 - %t161 = load { ptr, i64, i64 }, ptr %t160 - store { ptr, i64, i64 } %t157, ptr %a163 - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t157, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.41, i64 4, i64 0 }, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t171 -endif57: - %t172 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t172, ptr %a174 - store { ptr, i64, i64 } { ptr @.str.42, i64 1, i64 0 }, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - %t177 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t176, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.43, i64 4, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t187, ptr %a188 - %t189 = call i32 @finch_file_exists(ptr %a188) - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = icmp ne i32 %t189, 0 - br i1 %t191, label %then60, label %endif62 -then60: - %t192 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.44, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - %t196 = load { ptr, i64, i64 }, ptr %a193 - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t196, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t196, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.45, i64 4, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t207 -endif62: - br label %each.step51 -each.step51: - %t208 = load i64, ptr %a99 - %t209 = add i64 %t208, 1 - store i64 %t209, ptr %a99 - br label %each.cond49 -each.end52: - %t210 = load ptr, ptr %a1 - %t211 = icmp eq ptr %t210, null - br i1 %t211, label %panic63, label %ok64 -panic63: - call void @finch_panic(ptr @.str.46, i64 81, ptr @.str.47) - unreachable -ok64: - %t212 = getelementptr inbounds %S.main.Loader, ptr %t210, i32 0, i32 4 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t214 = load i64, ptr %t213 - %t215 = icmp sgt i64 %t214, 0 - br i1 %t215, label %then65, label %endif67 -then65: - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic68, label %ok69 -panic68: - call void @finch_panic(ptr @.str.48, i64 82, ptr @.str.49) - unreachable -ok69: - %t218 = getelementptr inbounds %S.main.Loader, ptr %t216, i32 0, i32 4 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t223, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t223, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - store { ptr, i64, i64 } %t229, ptr %a231 - store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t229, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic70, label %ok71 -panic70: - call void @finch_panic(ptr @.str.52, i64 82, ptr @.str.53) - unreachable -ok71: - %t237 = getelementptr inbounds %S.main.Loader, ptr %t235, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - store { ptr, i64, i64 } %t234, ptr %a240 - store { ptr, i64, i64 } %t238, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t234, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a249 - %t250 = call i32 @finch_file_exists(ptr %a249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - %t252 = icmp ne i32 %t250, 0 - br i1 %t252, label %then72, label %endif74 -then72: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic75, label %ok76 -panic75: - call void @finch_panic(ptr @.str.55, i64 83, ptr @.str.56) - unreachable -ok76: - %t255 = getelementptr inbounds %S.main.Loader, ptr %t253, i32 0, i32 4 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.57, i64 1, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - %t260 = load { ptr, i64, i64 }, ptr %a257 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t260, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.58, i64 1, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic77, label %ok78 -panic77: - call void @finch_panic(ptr @.str.59, i64 83, ptr @.str.60) - unreachable -ok78: - %t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } %t271, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t271, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.61, i64 4, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t285 -endif74: - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic79, label %ok80 -panic79: - call void @finch_panic(ptr @.str.62, i64 85, ptr @.str.63) - unreachable -ok80: - %t288 = getelementptr inbounds %S.main.Loader, ptr %t286, i32 0, i32 4 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.64, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a290 - %t294 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t293, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.65, i64 4, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t304, ptr %a305 - %t306 = call i32 @finch_file_exists(ptr %a305) - store { ptr, i64, i64 } %t304, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = icmp ne i32 %t306, 0 - br i1 %t308, label %then81, label %endif83 -then81: - %t309 = load ptr, ptr %a1 - %t310 = icmp eq ptr %t309, null - br i1 %t310, label %panic84, label %ok85 -panic84: - call void @finch_panic(ptr @.str.66, i64 86, ptr @.str.67) - unreachable -ok85: - %t311 = getelementptr inbounds %S.main.Loader, ptr %t309, i32 0, i32 4 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.68, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t316, ptr %a319 - store { ptr, i64, i64 } %t317, ptr %a320 - call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) - store { ptr, i64, i64 } %t316, ptr %a321 - call void @finch_str_drop(ptr %a321) - %t322 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.69, i64 4, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - store { ptr, i64, i64 } %t322, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t327 -endif83: - br label %endif67 -endif67: - %t328 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t328 -} - -define internal void @finch.drop.S_lexer_Token(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_lexer_Token(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond107 -n.cond107: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body108, label %n.end109 -n.body108: - %t7 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t5 - call void @finch.drop.S_lexer_Token(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond107 -n.end109: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.copy.arr_str(ptr %dst, ptr %src) { -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.cond110 -n.cond110: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body111, label %n.end112 -n.body111: - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 %t6 - call void @finch_str_copy(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond110 -n.end112: - 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.cond118 -n.cond118: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body119, label %n.end120 -n.body119: - %t8 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds %S.ast.Type, ptr %t2, i64 %t6 - call void @finch.copy.S_ast_Type(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond118 -n.end120: - 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.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.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.cond115 -n.end117: - 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.drop.arr_str(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond137 -n.cond137: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body138, label %n.end139 -n.body138: - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t5 - call void @finch_str_drop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond137 -n.end139: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Type(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond143 -n.cond143: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body144, label %n.end145 -n.body144: - %t7 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Type(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond143 -n.end145: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Type(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.S_ast_Node(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 5 - call void @finch.drop.S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 9 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.arr_S_ast_Node(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond140 -n.cond140: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body141, label %n.end142 -n.body141: - %t7 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Node(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond140 -n.end142: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Program(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Node(ptr %t8) - %t9 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_S_ast_Node(ptr %t9) - ret void -} - -define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Program, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.ast.Program, align 16 - %a139 = alloca %S.ast.Program, align 16 - %a145 = alloca i64, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca i64, align 16 - %a162 = alloca i64, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 93, 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) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t43, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = extractvalue { ptr, i64, i64 } %t54, 1 - %t56 = trunc i64 %t55 to i32 - %t57 = extractvalue { ptr, i64, i64 } %t54, 0 - %t58 = icmp eq ptr %t57, null - %t59 = select i1 %t58, ptr @.str.75, ptr %t57 - %t60 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t56, ptr %t59) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = call i32 (ptr, ...) @printf(ptr @.str.77) - br label %endif102 -else101: - %t63 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.78, i64 19, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = extractvalue { ptr, i64, i64 } %t72, 1 - %t74 = trunc i64 %t73 to i32 - %t75 = extractvalue { ptr, i64, i64 } %t72, 0 - %t76 = icmp eq ptr %t75, null - %t77 = select i1 %t76, ptr @.str.80, ptr %t75 - %t78 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t74, ptr %t77) - store { ptr, i64, i64 } %t72, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = call i32 (ptr, ...) @printf(ptr @.str.82) - br label %endif102 -endif102: - %t81 = trunc i64 1 to i32 - %t82 = call i32 @fflush(ptr null) - call void @exit(i32 %t81) - br label %endif99 -endif99: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a2 - %t85 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t83, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic103, label %ok104 -panic103: - call void @finch_panic(ptr @.str.83, i64 102, ptr @.str.84) - unreachable -ok104: - %t89 = getelementptr inbounds %S.main.Loader, ptr %t87, i32 0, i32 1 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 %t91, ptr %a92 - %t93 = load ptr, ptr %a1 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic105, label %ok106 -panic105: - call void @finch_panic(ptr @.str.85, i64 103, ptr @.str.86) - unreachable -ok106: - %t95 = getelementptr inbounds %S.main.Loader, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 - store { ptr, i64, i64 } %t100, ptr %t104 - store i64 %t102, ptr %t96 - %t105 = load { ptr, i64, i64 }, ptr %a86 - %t106 = load { ptr, i64, i64 }, ptr %a2 - %t107 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t105, { ptr, i64, i64 } %t106) - %t108 = load i64, ptr %a92 - %t109 = load { ptr, i64, i64 }, ptr %a2 - %t110 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t107, i64 %t108, { ptr, i64, i64 } %t109) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch.drop.arr_S_lexer_Token(ptr %a111) - store %S.ast.Program %t110, ptr %a112 - %t113 = load { ptr, i64, i64 }, ptr %a3 - %t114 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 0 - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t117, ptr %t114 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a2 - %t121 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 1 - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t124, ptr %t121 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.copy.arr_str(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t131, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic113, label %ok114 -panic113: - call void @finch_panic(ptr @.str.87, i64 108, ptr @.str.88) - unreachable -ok114: - %t135 = getelementptr inbounds %S.main.Loader, ptr %t133, i32 0, i32 0 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load %S.ast.Program, ptr %a112 - store %S.ast.Program %t137, ptr %a138 - call void @finch.copy.S_ast_Program(ptr %a139, ptr %a138) - %t140 = load %S.ast.Program, ptr %a139 - %t141 = load i64, ptr %t136 - %t142 = add i64 %t141, 1 - call void @finch_arr_reserve(ptr %t135, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) - %t143 = load ptr, ptr %t135 - %t144 = getelementptr inbounds %S.ast.Program, ptr %t143, i64 %t141 - store %S.ast.Program %t140, ptr %t144 - store i64 %t142, ptr %t136 - store i64 0, ptr %a145 - br label %each.cond121 -each.cond121: - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = load i64, ptr %a145 - %t149 = icmp slt i64 %t148, %t147 - br i1 %t149, label %each.body122, label %each.end124 -each.body122: - %t150 = load ptr, ptr %a132 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic125, label %ok126 -panic125: - call void @finch_panic(ptr @.str.89, i64 110, ptr @.str.90) - unreachable -ok126: - %t156 = getelementptr inbounds %S.main.Loader, ptr %t154, i32 0, i32 2 - %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 - %t158 = load { ptr, i64, i64 }, ptr %a153 - store i64 -1, ptr %a159 - %t160 = load i64, ptr %t157 - %t161 = load ptr, ptr %t156 - store i64 0, ptr %a162 - br label %find.cond127 -find.cond127: - %t163 = load i64, ptr %a162 - %t164 = icmp slt i64 %t163, %t160 - br i1 %t164, label %find.body128, label %find.end131 -find.body128: - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t163 - %t166 = load { ptr, i64, i64 }, ptr %t165 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } %t158, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br i1 %t170, label %find.hit129, label %find.next130 -find.hit129: - store i64 %t163, ptr %a159 - br label %find.end131 -find.next130: - %t171 = add i64 %t163, 1 - store i64 %t171, ptr %a162 - br label %find.cond127 -find.end131: - %t172 = load i64, ptr %a159 - %t173 = icmp sge i64 %t172, 0 - %t174 = xor i1 %t173, true - br i1 %t174, label %then132, label %endif134 -then132: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic135, label %ok136 -panic135: - call void @finch_panic(ptr @.str.91, i64 111, ptr @.str.92) - unreachable -ok136: - %t177 = getelementptr inbounds %S.main.Loader, ptr %t175, i32 0, i32 2 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_copy(ptr %a181, ptr %a180) - %t182 = load { ptr, i64, i64 }, ptr %a181 - %t183 = load i64, ptr %t178 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t177, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t177 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 - store { ptr, i64, i64 } %t182, ptr %t186 - store i64 %t184, ptr %t178 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a2 - %t190 = load { ptr, i64, i64 }, ptr %a153 - %t191 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) - %t192 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.main.load(ptr %t187, { ptr, i64, i64 } %t191, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - br label %endif134 -endif134: - br label %each.step123 -each.step123: - %t194 = load i64, ptr %a145 - %t195 = add i64 %t194, 1 - store i64 %t195, ptr %a145 - br label %each.cond121 -each.end124: - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_ast_Program(ptr %a112) - call void @finch_str_drop(ptr %a86) - ret void -} - -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 { ptr, i64, i64 } @finch.main.unpack() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca i64, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.embedded.names() - store { ptr, i64, i64 } %t1, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.145, i64 7, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.146, i64 1, i64 0 }, ptr %a12 - call void @finch_str_join(ptr %a13, ptr %a10, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.drop.arr_str(ptr %a10) - %t15 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t14, ptr %a16 - call void @finch_str_drop(ptr %a16) - store { ptr, i64, i64 } %t8, ptr %a18 - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t8, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t15, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a29 - %t30 = call i32 @finch_file_exists(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = icmp ne i32 %t30, 0 - br i1 %t32, label %then146, label %endif148 -then146: - %t33 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t33 -endif148: - %t34 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t34, ptr %a35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t37 = load i64, ptr %t36 - store i64 0, ptr %a38 - br label %for.cond149 -for.cond149: - %t39 = load i64, ptr %a38 - %t40 = icmp slt i64 %t39, %t37 - br i1 %t40, label %for.body150, label %for.end152 -for.body150: - %t41 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.148, i64 1, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a38 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = icmp uge i64 %t46, %t48 - br i1 %t49, label %range153, label %inrange154 -range153: - call void @finch_panic_index(ptr @.str.149, i64 144, i64 %t46, i64 %t48) - unreachable -inrange154: - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t46 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t45, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t45, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - %t58 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t57) - store { ptr, i64, i64 } %t57, ptr %a59 - call void @finch_str_drop(ptr %a59) - call void @finch.host.makeDirs({ ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.150, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = load i64, ptr %a38 - %t67 = load { ptr, i64, i64 }, ptr %a2 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range155, label %inrange156 -range155: - call void @finch_panic_index(ptr @.str.151, i64 145, i64 %t66, i64 %t68) - unreachable -inrange156: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t66 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t65, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t65, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load i64, ptr %a38 - %t79 = load { ptr, i64, i64 }, ptr %a35 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range157, label %inrange158 -range157: - call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t78, i64 %t80) - unreachable -inrange158: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i64 %t78 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t77, ptr %a85 - store { ptr, i64, i64 } %t84, ptr %a86 - %t87 = call i32 @finch_write_file(ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t77, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = icmp ne i32 %t87, 0 - br label %for.step151 -for.step151: - %t90 = load i64, ptr %a38 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a38 - br label %for.cond149 -for.end152: - %t92 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.153, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.154, i64 0, i64 0 }, ptr %a98 - %t99 = call i32 @finch_write_file(ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = icmp ne i32 %t99, 0 - %t102 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a35) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t102 -} - -define internal void @finch.drop.S_cimport_Header(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_Header(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond403 -n.cond403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body404, label %n.end405 -n.body404: - %t7 = getelementptr inbounds %S.cimport.Header, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_Header(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond403 -n.end405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Program(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond406 -n.cond406: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body407, label %n.end408 -n.body407: - %t7 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Program(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond406 -n.end408: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_main_Loader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t7) - %t8 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.S_platform_Target(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 6 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) { -entry: - - %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 void @finch.drop.S_gen_Options(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 4 - call void @finch.drop.S_platform_Target(ptr %t2) - ret void -} - -define internal void @finch.drop.S_cimport_CFunc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_ast_Type(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CFunc(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond416 -n.cond416: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body417, label %n.end418 -n.body417: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live419, label %entry.next420 -entry.live419: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CFunc(ptr %t13) - br label %entry.next420 -entry.next420: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond416 -n.end418: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CConst(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CConst, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CConst(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond421 -n.cond421: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body422, label %n.end423 -n.body422: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live424, label %entry.next425 -entry.live424: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CConst(ptr %t13) - br label %entry.next425 -entry.next425: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond421 -n.end423: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_S_ast_Type(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond426 -n.cond426: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body427, label %n.end428 -n.body427: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live429, label %entry.next430 -entry.live429: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t13) - br label %entry.next430 -entry.next430: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond426 -n.end428: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CField(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_CField(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond436 -n.cond436: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body437, label %n.end438 -n.body437: - %t7 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_CField(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond436 -n.end438: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CStruct(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_cimport_CField(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CStruct(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond431 -n.cond431: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body432, label %n.end433 -n.body432: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live434, label %entry.next435 -entry.live434: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CStruct(ptr %t13) - br label %entry.next435 -entry.next435: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond431 -n.end433: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CImports(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 0 - call void @finch.drop.map_str_S_cimport_CFunc(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 1 - call void @finch.drop.map_str_S_cimport_CConst(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_cimport_CStruct(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.S_linker_Build(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.platform.Target, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = 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 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca %S.main.Loader, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca i64, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca i64, align 16 - %a653 = alloca %S.ast.Program, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a663 = alloca i64, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca i64, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca %S.cimport.CImports, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a866 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca %S.platform.Target, align 16 - %a876 = alloca %S.platform.Target, align 16 - %a880 = alloca %S.gen.Options, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a921 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca { ptr, i64, i64 }, align 16 - %a923 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a927 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a978 = 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 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a993 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca %S.linker.Build, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca i64, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1081 = 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 - %a1085 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca i64, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = icmp eq i64 %t3, 2 - br label %logic.from159 -logic.from159: - br i1 %t4, label %logic.rhs160, label %logic.end161 -logic.rhs160: - %t5 = load { ptr, i64, i64 }, ptr %a1 - %t6 = extractvalue { ptr, i64, i64 } %t5, 1 - %t7 = icmp uge i64 1, %t6 - br i1 %t7, label %range162, label %inrange163 -range162: - call void @finch_panic_index(ptr @.str.155, i64 152, i64 1, i64 %t6) - unreachable -inrange163: - %t8 = extractvalue { ptr, i64, i64 } %t5, 0 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 1 - %t10 = load { ptr, i64, i64 }, ptr %t9 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.156, i64 7, i64 0 }, ptr %a12 - %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) - %t14 = icmp ne i32 %t13, 0 - br label %logic.from164 -logic.from164: - br i1 %t14, label %logic.end166, label %logic.rhs165 -logic.rhs165: - %t15 = load { ptr, i64, i64 }, ptr %a1 - %t16 = extractvalue { ptr, i64, i64 } %t15, 1 - %t17 = icmp uge i64 1, %t16 - br i1 %t17, label %range167, label %inrange168 -range167: - call void @finch_panic_index(ptr @.str.157, i64 152, i64 1, i64 %t16) - unreachable -inrange168: - %t18 = extractvalue { ptr, i64, i64 } %t15, 0 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.158, i64 9, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br label %logic.rend169 -logic.rend169: - br label %logic.end166 -logic.end166: - %t25 = phi i1 [ true, %logic.from164 ], [ %t24, %logic.rend169 ] - br label %logic.rend170 -logic.rend170: - br label %logic.end161 -logic.end161: - %t26 = phi i1 [ false, %logic.from159 ], [ %t25, %logic.rend170 ] - br i1 %t26, label %then171, label %endif173 -then171: - %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 1 - %t28 = trunc i64 %t27 to i32 - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 0 - %t30 = icmp eq ptr %t29, null - %t31 = select i1 %t30, ptr @.str.160, ptr %t29 - %t32 = call i32 (ptr, ...) @printf(ptr @.str.161, i32 %t28, ptr %t31) - %t33 = call i32 (ptr, ...) @printf(ptr @.str.162) - ret i64 0 -endif173: - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t35 = load i64, ptr %t34 - %t36 = icmp eq i64 %t35, 2 - br label %logic.from174 -logic.from174: - br i1 %t36, label %logic.rhs175, label %logic.end176 -logic.rhs175: - %t37 = load { ptr, i64, i64 }, ptr %a1 - %t38 = extractvalue { ptr, i64, i64 } %t37, 1 - %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range177, label %inrange178 -range177: - call void @finch_panic_index(ptr @.str.163, i64 156, i64 1, i64 %t38) - unreachable -inrange178: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.164, i64 3, i64 0 }, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - br label %logic.rend179 -logic.rend179: - br label %logic.end176 -logic.end176: - %t47 = phi i1 [ false, %logic.from174 ], [ %t46, %logic.rend179 ] - br i1 %t47, label %then180, label %endif182 -then180: - %t48 = load { ptr, i64, i64 }, ptr %a1 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 0, %t49 - br i1 %t50, label %range183, label %inrange184 -range183: - call void @finch_panic_index(ptr @.str.165, i64 157, i64 0, i64 %t49) - unreachable -inrange184: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = call i64 @finch.lsp.run({ ptr, i64, i64 } %t53) - ret i64 %t54 -endif182: - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t56 = load i64, ptr %t55 - %t57 = icmp slt i64 %t56, 3 - br i1 %t57, label %then185, label %endif187 -then185: - call void @finch.main.usage() - br label %endif187 -endif187: - %t58 = load { ptr, i64, i64 }, ptr %a1 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - %t60 = icmp uge i64 1, %t59 - br i1 %t60, label %range188, label %inrange189 -range188: - call void @finch_panic_index(ptr @.str.166, i64 162, i64 1, i64 %t59) - unreachable -inrange189: - %t61 = extractvalue { ptr, i64, i64 } %t58, 0 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - 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 %range190, label %inrange191 -range190: - call void @finch_panic_index(ptr @.str.167, i64 163, i64 2, i64 %t69) - unreachable -inrange191: - %t71 = extractvalue { ptr, i64, i64 } %t68, 0 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - 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.168, i64 5, i64 0 }, ptr %a80 - %t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80) - %t82 = icmp eq i32 %t81, 0 - br label %logic.from192 -logic.from192: - br i1 %t82, label %logic.rhs193, label %logic.end194 -logic.rhs193: - %t83 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t83, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.169, i64 3, i64 0 }, ptr %a85 - %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) - %t87 = icmp eq i32 %t86, 0 - br label %logic.rend195 -logic.rend195: - br label %logic.end194 -logic.end194: - %t88 = phi i1 [ false, %logic.from192 ], [ %t87, %logic.rend195 ] - br label %logic.from196 -logic.from196: - br i1 %t88, label %logic.rhs197, label %logic.end198 -logic.rhs197: - %t89 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.170, i64 2, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp eq i32 %t92, 0 - br label %logic.rend199 -logic.rend199: - br label %logic.end198 -logic.end198: - %t94 = phi i1 [ false, %logic.from196 ], [ %t93, %logic.rend199 ] - br label %logic.from200 -logic.from200: - br i1 %t94, label %logic.rhs201, label %logic.end202 -logic.rhs201: - %t95 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.171, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp eq i32 %t98, 0 - br label %logic.rend203 -logic.rend203: - br label %logic.end202 -logic.end202: - %t100 = phi i1 [ false, %logic.from200 ], [ %t99, %logic.rend203 ] - br i1 %t100, label %then204, label %endif206 -then204: - call void @finch.main.usage() - br label %endif206 -endif206: - %t101 = load { ptr, i64, i64 }, ptr %a77 - %t102 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t102, ptr %a103 - store i1 false, ptr %a104 - store i1 false, ptr %a105 - store i1 false, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.172, i64 0, i64 0 }, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.173, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } zeroinitializer, ptr %a109 - store { ptr, i64, i64 } zeroinitializer, ptr %a110 - store { ptr, i64, i64 } zeroinitializer, ptr %a111 - store { ptr, i64, i64 } zeroinitializer, ptr %a112 - store { ptr, i64, i64 } zeroinitializer, ptr %a113 - store i64 3, ptr %a114 - br label %while.cond207 -while.cond207: - %t115 = load i64, ptr %a114 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t117 = load i64, ptr %t116 - %t118 = icmp slt i64 %t115, %t117 - br i1 %t118, label %while.body208, label %while.end209 -while.body208: - %t119 = load i64, ptr %a114 - %t120 = load { ptr, i64, i64 }, ptr %a1 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 %t119, %t121 - br i1 %t122, label %range210, label %inrange211 -range210: - call void @finch_panic_index(ptr @.str.174, i64 180, i64 %t119, i64 %t121) - unreachable -inrange211: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 - %t125 = load { ptr, i64, i64 }, ptr %t124 - 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.175, i64 3, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br label %logic.from212 -logic.from212: - br i1 %t134, label %logic.rhs213, label %logic.end214 -logic.rhs213: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = icmp sgt i64 %t136, 0 - br label %logic.rend215 -logic.rend215: - br label %logic.end214 -logic.end214: - %t138 = phi i1 [ false, %logic.from212 ], [ %t137, %logic.rend215 ] - br i1 %t138, label %then216, label %else217 -then216: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t140, ptr %a141 - 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 %endif218 -else217: - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.176, i64 2, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br label %logic.from219 -logic.from219: - br i1 %t152, label %logic.rhs220, label %logic.end221 -logic.rhs220: - %t153 = load i64, ptr %a114 - %t154 = add i64 %t153, 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp slt i64 %t154, %t156 - br label %logic.rend222 -logic.rend222: - br label %logic.end221 -logic.end221: - %t158 = phi i1 [ false, %logic.from219 ], [ %t157, %logic.rend222 ] - br label %logic.from223 -logic.from223: - br i1 %t158, label %logic.rhs224, label %logic.end225 -logic.rhs224: - %t159 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.177, i64 5, i64 0 }, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br label %logic.rend226 -logic.rend226: - br label %logic.end225 -logic.end225: - %t164 = phi i1 [ false, %logic.from223 ], [ %t163, %logic.rend226 ] - br i1 %t164, label %then227, label %else228 -then227: - %t165 = load i64, ptr %a114 - %t166 = add i64 %t165, 1 - %t167 = load { ptr, i64, i64 }, ptr %a1 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range230, label %inrange231 -range230: - call void @finch_panic_index(ptr @.str.178, i64 184, i64 %t166, i64 %t168) - unreachable -inrange231: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i64 %t166 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t175, ptr %a103 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - store i1 true, ptr %a104 - %t178 = load i64, ptr %a114 - %t179 = add i64 %t178, 1 - store i64 %t179, ptr %a114 - br label %endif229 -else228: - %t180 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t180, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.179, i64 8, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - br label %logic.from232 -logic.from232: - br i1 %t184, label %logic.rhs233, label %logic.end234 -logic.rhs233: - %t185 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.180, i64 5, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.rend235 -logic.rend235: - br label %logic.end234 -logic.end234: - %t190 = phi i1 [ false, %logic.from232 ], [ %t189, %logic.rend235 ] - br i1 %t190, label %then236, label %else237 -then236: - store i1 true, ptr %a105 - br label %endif238 -else237: - %t191 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t191, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.181, i64 3, i64 0 }, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br i1 %t195, label %then239, label %else240 -then239: - %t196 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.182, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } %t196, ptr %a197 - call void @finch_str_drop(ptr %a197) - br label %endif241 -else240: - %t198 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.183, i64 2, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from242 -logic.from242: - br i1 %t202, label %logic.rhs243, label %logic.end244 -logic.rhs243: - %t203 = load i64, ptr %a114 - %t204 = add i64 %t203, 1 - %t205 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t206 = load i64, ptr %t205 - %t207 = icmp slt i64 %t204, %t206 - br label %logic.rend245 -logic.rend245: - br label %logic.end244 -logic.end244: - %t208 = phi i1 [ false, %logic.from242 ], [ %t207, %logic.rend245 ] - br i1 %t208, label %then246, label %else247 -then246: - %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t210 = load i64, ptr %a114 - %t211 = add i64 %t210, 1 - %t212 = load { ptr, i64, i64 }, ptr %a1 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range249, label %inrange250 -range249: - call void @finch_panic_index(ptr @.str.184, i64 192, i64 %t211, i64 %t213) - unreachable -inrange250: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t217, ptr %a218 - call void @finch_str_copy(ptr %a219, ptr %a218) - %t220 = load { ptr, i64, i64 }, ptr %a219 - %t221 = load i64, ptr %t209 - %t222 = add i64 %t221, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t222, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t223 = load ptr, ptr %a109 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t221 - store { ptr, i64, i64 } %t220, ptr %t224 - store i64 %t222, ptr %t209 - %t225 = load i64, ptr %a114 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a114 - br label %endif248 -else247: - %t227 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t227, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a230 - %t231 = call i32 @finch_str_starts(ptr %a228, ptr %a230) - %t232 = icmp ne i32 %t231, 0 - br label %logic.from251 -logic.from251: - br i1 %t232, label %logic.rhs252, label %logic.end253 -logic.rhs252: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t234 = load i64, ptr %t233 - %t235 = icmp sgt i64 %t234, 2 - br label %logic.rend254 -logic.rend254: - br label %logic.end253 -logic.end253: - %t236 = phi i1 [ false, %logic.from251 ], [ %t235, %logic.rend254 ] - br i1 %t236, label %then255, label %else256 -then255: - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t238 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t238, ptr %a239 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t242 = load i64, ptr %t241 - call void @finch_str_sub(ptr %a240, ptr %a239, i64 2, i64 %t242, ptr @.str.187, i64 195) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load i64, ptr %t237 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %a109 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } %t243, ptr %t247 - store i64 %t245, ptr %t237 - br label %endif257 -else256: - %t248 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.188, i64 2, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br label %logic.from258 -logic.from258: - br i1 %t252, label %logic.rhs259, label %logic.end260 -logic.rhs259: - %t253 = load i64, ptr %a114 - %t254 = add i64 %t253, 1 - %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = icmp slt i64 %t254, %t256 - br label %logic.rend261 -logic.rend261: - br label %logic.end260 -logic.end260: - %t258 = phi i1 [ false, %logic.from258 ], [ %t257, %logic.rend261 ] - br i1 %t258, label %then262, label %else263 -then262: - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %a110, i32 0, i32 1 - %t260 = load i64, ptr %a114 - %t261 = add i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %a1 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range265, label %inrange266 -range265: - call void @finch_panic_index(ptr @.str.189, i64 197, i64 %t261, i64 %t263) - unreachable -inrange266: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 %t261 - %t267 = load { ptr, i64, i64 }, ptr %t266 - store { ptr, i64, i64 } %t267, ptr %a268 - call void @finch_str_copy(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %a110, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %a110 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - %t275 = load i64, ptr %a114 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a114 - br label %endif264 -else263: - %t277 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t277, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.190, i64 9, i64 0 }, ptr %a279 - %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) - %t281 = icmp ne i32 %t280, 0 - br label %logic.from267 -logic.from267: - br i1 %t281, label %logic.rhs268, label %logic.end269 -logic.rhs268: - %t282 = load i64, ptr %a114 - %t283 = add i64 %t282, 1 - %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t285 = load i64, ptr %t284 - %t286 = icmp slt i64 %t283, %t285 - br label %logic.rend270 -logic.rend270: - br label %logic.end269 -logic.end269: - %t287 = phi i1 [ false, %logic.from267 ], [ %t286, %logic.rend270 ] - br i1 %t287, label %then271, label %else272 -then271: - %t288 = load i64, ptr %a114 - %t289 = add i64 %t288, 1 - %t290 = load { ptr, i64, i64 }, ptr %a1 - %t291 = extractvalue { ptr, i64, i64 } %t290, 1 - %t292 = icmp uge i64 %t289, %t291 - br i1 %t292, label %range274, label %inrange275 -range274: - call void @finch_panic_index(ptr @.str.191, i64 200, i64 %t289, i64 %t291) - unreachable -inrange275: - %t293 = extractvalue { ptr, i64, i64 } %t290, 0 - %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } %t295, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.193, i64 1, i64 0 }, ptr %a298 - call void @finch_str_split(ptr %a299, ptr %a296, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t300, ptr %a301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %a301 - %t304 = extractvalue { ptr, i64, i64 } %t303, 1 - %t305 = icmp uge i64 0, %t304 - br i1 %t305, label %range276, label %inrange277 -range276: - call void @finch_panic_index(ptr @.str.194, i64 201, i64 0, i64 %t304) - unreachable -inrange277: - %t306 = extractvalue { ptr, i64, i64 } %t303, 0 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_copy(ptr %a310, ptr %a309) - %t311 = load { ptr, i64, i64 }, ptr %a310 - %t312 = load i64, ptr %t302 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %a111, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %a111 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t302 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %a301 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 1, %t318 - br i1 %t319, label %range278, label %inrange279 -range278: - call void @finch_panic_index(ptr @.str.195, i64 202, i64 1, i64 %t318) - unreachable -inrange279: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i64 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a323 - call void @finch_str_copy(ptr %a324, ptr %a323) - %t325 = load { ptr, i64, i64 }, ptr %a324 - %t326 = load i64, ptr %t316 - %t327 = add i64 %t326, 1 - call void @finch_arr_reserve(ptr %a112, i64 %t327, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t328 = load ptr, ptr %a112 - %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i64 %t326 - store { ptr, i64, i64 } %t325, ptr %t329 - store i64 %t327, ptr %t316 - %t330 = load i64, ptr %a114 - %t331 = add i64 %t330, 1 - store i64 %t331, ptr %a114 - call void @finch.drop.arr_str(ptr %a301) - br label %endif273 -else272: - %t332 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t332, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.196, i64 2, i64 0 }, ptr %a334 - %t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334) - %t336 = icmp ne i32 %t335, 0 - br i1 %t336, label %then280, label %else281 -then280: - store i1 true, ptr %a106 - br label %endif282 -else281: - %t337 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t337, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.197, i64 8, i64 0 }, ptr %a339 - %t340 = call i32 @finch_str_eq(ptr %a338, ptr %a339) - %t341 = icmp ne i32 %t340, 0 - br label %logic.from283 -logic.from283: - br i1 %t341, label %logic.rhs284, label %logic.end285 -logic.rhs284: - %t342 = load i64, ptr %a114 - %t343 = add i64 %t342, 1 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = icmp slt i64 %t343, %t345 - br label %logic.rend286 -logic.rend286: - br label %logic.end285 -logic.end285: - %t347 = phi i1 [ false, %logic.from283 ], [ %t346, %logic.rend286 ] - br i1 %t347, label %then287, label %else288 -then287: - %t348 = load i64, ptr %a114 - %t349 = add i64 %t348, 1 - %t350 = load { ptr, i64, i64 }, ptr %a1 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range290, label %inrange291 -range290: - call void @finch_panic_index(ptr @.str.198, i64 207, i64 %t349, i64 %t351) - unreachable -inrange291: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349 - %t355 = load { ptr, i64, i64 }, ptr %t354 - store { ptr, i64, i64 } %t355, ptr %a356 - call void @finch_str_copy(ptr %a357, ptr %a356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - %t359 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t358, ptr %a107 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load i64, ptr %a114 - %t362 = add i64 %t361, 1 - store i64 %t362, ptr %a114 - br label %endif289 -else288: - %t363 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t363, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.199, i64 3, i64 0 }, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br i1 %t367, label %then292, label %else293 -then292: - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t369 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t368 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %a113, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %a113 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t368 - br label %endif294 -else293: - call void @finch.main.usage() - br label %endif294 -endif294: - br label %endif289 -endif289: - br label %endif282 -endif282: - br label %endif273 -endif273: - br label %endif264 -endif264: - br label %endif257 -endif257: - br label %endif248 -endif248: - br label %endif241 -endif241: - br label %endif238 -endif238: - br label %endif229 -endif229: - br label %endif218 -endif218: - %t377 = load i64, ptr %a114 - %t378 = add i64 %t377, 1 - store i64 %t378, ptr %a114 - call void @finch_str_drop(ptr %a129) - br label %while.cond207 -while.end209: - %t379 = load { ptr, i64, i64 }, ptr %a107 - %t380 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t379) - store %S.platform.Target %t380, ptr %a381 - %t382 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t382, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.200, i64 3, i64 0 }, ptr %a384 - %t385 = call i32 @finch_str_eq(ptr %a383, ptr %a384) - %t386 = icmp ne i32 %t385, 0 - br i1 %t386, label %then295, label %else296 -then295: - %t387 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.201, i64 11, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a394, i64 %t393) - %t395 = load { ptr, i64, i64 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t392, ptr %a399 - call void @finch_str_drop(ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.202, i64 1, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a77 - %t408 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t407) - store { ptr, i64, i64 } %t406, ptr %a410 - store { ptr, i64, i64 } %t408, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t406, ptr %a412 - call void @finch_str_drop(ptr %a412) - store { ptr, i64, i64 } %t408, ptr %a413 - call void @finch_str_drop(ptr %a413) - %t414 = load { ptr, i64, i64 }, ptr %a409 - %t415 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t414, ptr %a418 - store { ptr, i64, i64 } %t416, ptr %a419 - call void @finch_str_concat(ptr %a417, ptr %a418, ptr %a419) - store { ptr, i64, i64 } %t414, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a417 - %t422 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t421, ptr %a103 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_drop(ptr %a423) - br label %endif297 -else296: - %t424 = load i1, ptr %a105 - br label %logic.from298 -logic.from298: - br i1 %t424, label %logic.rhs299, label %logic.end300 -logic.rhs299: - %t425 = load i1, ptr %a104 - %t426 = xor i1 %t425, true - br label %logic.rend301 -logic.rend301: - br label %logic.end300 -logic.end300: - %t427 = phi i1 [ false, %logic.from298 ], [ %t426, %logic.rend301 ] - br i1 %t427, label %then302, label %else303 -then302: - %t428 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t429 = load i1, ptr %t428 - br i1 %t429, label %then305, label %else306 -then305: - %t430 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.203, i64 4, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a431 - %t435 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t434, ptr %a103 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif307 -else306: - %t437 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t438 = load i1, ptr %t437 - br i1 %t438, label %then308, label %else309 -then308: - %t439 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.204, i64 3, i64 0 }, ptr %a441 - store { ptr, i64, i64 } %t439, ptr %a442 - call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a440 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.205, i64 6, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t448, ptr %a103 - store { ptr, i64, i64 } %t449, ptr %a450 - call void @finch_str_drop(ptr %a450) - br label %endif310 -else309: - %t451 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.206, i64 3, i64 0 }, ptr %a453 - store { ptr, i64, i64 } %t451, ptr %a454 - call void @finch_str_concat(ptr %a452, ptr %a453, ptr %a454) - %t455 = load { ptr, i64, i64 }, ptr %a452 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.207, i64 3, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - store { ptr, i64, i64 } %t455, ptr %a459 - call void @finch_str_drop(ptr %a459) - %t460 = load { ptr, i64, i64 }, ptr %a456 - %t461 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t460, ptr %a103 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_drop(ptr %a462) - br label %endif310 -endif310: - br label %endif307 -endif307: - br label %endif304 -else303: - %t463 = load i1, ptr %a104 - %t464 = xor i1 %t463, true - br i1 %t464, label %then311, label %endif313 -then311: - %t465 = load { ptr, i64, i64 }, ptr %a103 - %t466 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t467 = load { ptr, i64, i64 }, ptr %t466 - store { ptr, i64, i64 } %t465, ptr %a469 - store { ptr, i64, i64 } %t467, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t471, ptr %a103 - store { ptr, i64, i64 } %t472, ptr %a473 - call void @finch_str_drop(ptr %a473) - br label %endif313 -endif313: - br label %endif304 -endif304: - br label %endif297 -endif297: - store %S.main.Loader zeroinitializer, ptr %a474 - %t475 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t476 = load { ptr, i64, i64 }, ptr %t475 - store { ptr, i64, i64 } { ptr @.str.208, i64 5, i64 0 }, ptr %t475 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t479 = load i1, ptr %t478 - br i1 %t479, label %then314, label %else315 -then314: - %t480 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t481 = load { ptr, i64, i64 }, ptr %t480 - store { ptr, i64, i64 } { ptr @.str.209, i64 7, i64 0 }, ptr %t480 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif316 -else315: - %t483 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t484 = load i1, ptr %t483 - br i1 %t484, label %then317, label %endif319 -then317: - %t485 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } { ptr @.str.210, i64 5, i64 0 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - call void @finch_str_drop(ptr %a487) - br label %endif319 -endif319: - br label %endif316 -endif316: - %t488 = load { ptr, i64, i64 }, ptr %a1 - %t489 = extractvalue { ptr, i64, i64 } %t488, 1 - %t490 = icmp uge i64 0, %t489 - br i1 %t490, label %range320, label %inrange321 -range320: - call void @finch_panic_index(ptr @.str.211, i64 238, i64 0, i64 %t489) - unreachable -inrange321: - %t491 = extractvalue { ptr, i64, i64 } %t488, 0 - %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 0 - %t493 = load { ptr, i64, i64 }, ptr %t492 - %t494 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t493) - store { ptr, i64, i64 } %t494, ptr %a496 - store { ptr, i64, i64 } { ptr @.str.212, i64 7, i64 0 }, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t494, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - %t500 = load { ptr, i64, i64 }, ptr %a1 - %t501 = extractvalue { ptr, i64, i64 } %t500, 1 - %t502 = icmp uge i64 0, %t501 - br i1 %t502, label %range322, label %inrange323 -range322: - call void @finch_panic_index(ptr @.str.213, i64 238, i64 0, i64 %t501) - unreachable -inrange323: - %t503 = extractvalue { ptr, i64, i64 } %t500, 0 - %t504 = getelementptr inbounds { ptr, i64, i64 }, ptr %t503, i64 0 - %t505 = load { ptr, i64, i64 }, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t505) - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.214, i64 4, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = load { ptr, i64, i64 }, ptr %a1 - %t513 = extractvalue { ptr, i64, i64 } %t512, 1 - %t514 = icmp uge i64 0, %t513 - br i1 %t514, label %range324, label %inrange325 -range324: - call void @finch_panic_index(ptr @.str.215, i64 238, i64 0, i64 %t513) - unreachable -inrange325: - %t515 = extractvalue { ptr, i64, i64 } %t512, 0 - %t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %t515, i64 0 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t517) - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.216, i64 19, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t525 = call ptr @finch_alloc(i64 %t524) - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 0 - store { ptr, i64, i64 } %t499, ptr %t526 - %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 1 - store { ptr, i64, i64 } %t511, ptr %t527 - %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 2 - store { ptr, i64, i64 } %t523, ptr %t528 - %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 3 - store { ptr, i64, i64 } { ptr @.str.217, i64 3, i64 0 }, ptr %t529 - %t530 = insertvalue { ptr, i64, i64 } undef, ptr %t525, 0 - %t531 = insertvalue { ptr, i64, i64 } %t530, i64 4, 1 - %t532 = insertvalue { ptr, i64, i64 } %t531, i64 4, 2 - store { ptr, i64, i64 } %t532, ptr %a533 - store i64 0, ptr %a534 - br label %each.cond326 -each.cond326: - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %a533, i32 0, i32 1 - %t536 = load i64, ptr %t535 - %t537 = load i64, ptr %a534 - %t538 = icmp slt i64 %t537, %t536 - br i1 %t538, label %each.body327, label %each.end329 -each.body327: - %t539 = load ptr, ptr %a533 - %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i64 %t537 - %t541 = load { ptr, i64, i64 }, ptr %t540 - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1 - %t545 = load i64, ptr %t544 - %t546 = icmp eq i64 %t545, 0 - br label %logic.from330 -logic.from330: - br i1 %t546, label %logic.rhs331, label %logic.end332 -logic.rhs331: - %t547 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t547, ptr %a549 - store { ptr, i64, i64 } { ptr @.str.218, i64 9, i64 0 }, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a552 - %t553 = call i32 @finch_file_exists(ptr %a552) - store { ptr, i64, i64 } %t551, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = icmp ne i32 %t553, 0 - br label %logic.rend333 -logic.rend333: - br label %logic.end332 -logic.end332: - %t556 = phi i1 [ false, %logic.from330 ], [ %t555, %logic.rend333 ] - br i1 %t556, label %then334, label %endif336 -then334: - %t557 = load { ptr, i64, i64 }, ptr %a542 - %t558 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - store { ptr, i64, i64 } %t557, ptr %a559 - call void @finch_str_copy(ptr %a560, ptr %a559) - %t561 = load { ptr, i64, i64 }, ptr %a560 - %t562 = load { ptr, i64, i64 }, ptr %t558 - store { ptr, i64, i64 } %t561, ptr %t558 - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif336 -endif336: - br label %each.step328 -each.step328: - %t564 = load i64, ptr %a534 - %t565 = add i64 %t564, 1 - store i64 %t565, ptr %a534 - br label %each.cond326 -each.end329: - call void @finch.drop.arr_str(ptr %a533) - %t566 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i32 0, i32 1 - %t568 = load i64, ptr %t567 - %t569 = icmp eq i64 %t568, 0 - br i1 %t569, label %then337, label %endif339 -then337: - %t570 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.219, i64 4, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t577 = load { ptr, i64, i64 }, ptr %t576 - store { ptr, i64, i64 } %t575, ptr %t576 - store { ptr, i64, i64 } %t577, ptr %a578 - call void @finch_str_drop(ptr %a578) - br label %endif339 -endif339: - %t579 = load { ptr, i64, i64 }, ptr %a111 - %t580 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 6 - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch.copy.arr_str(ptr %a582, ptr %a581) - %t583 = load { ptr, i64, i64 }, ptr %a582 - %t584 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t583, ptr %t580 - store { ptr, i64, i64 } %t584, ptr %a585 - call void @finch.drop.arr_str(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a112 - %t587 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 7 - store { ptr, i64, i64 } %t586, ptr %a588 - call void @finch.copy.arr_str(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load { ptr, i64, i64 }, ptr %t587 - store { ptr, i64, i64 } %t590, ptr %t587 - store { ptr, i64, i64 } %t591, ptr %a592 - call void @finch.drop.arr_str(ptr %a592) - %t593 = extractvalue { ptr, i64, i64 } { ptr @.str.220, i64 10, i64 0 }, 0 - %t594 = icmp eq ptr %t593, null - %t595 = select i1 %t594, ptr @.str.221, ptr %t593 - %t596 = call ptr @getenv(ptr %t595) - store { ptr, i64, i64 } zeroinitializer, ptr %a597 - call void @finch_str_from_c(ptr %a597, ptr %t596) - %t598 = load { ptr, i64, i64 }, ptr %a597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t601 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t601, ptr %a602 - call void @finch_str_split(ptr %a603, ptr %a599, ptr %a602) - store { ptr, i64, i64 } %t601, ptr %a604 - call void @finch_str_drop(ptr %a604) - %t605 = load { ptr, i64, i64 }, ptr %a603 - store { ptr, i64, i64 } %t605, ptr %a606 - store i64 0, ptr %a607 - br label %each.cond340 -each.cond340: - %t608 = getelementptr inbounds { ptr, i64, i64 }, ptr %a606, i32 0, i32 1 - %t609 = load i64, ptr %t608 - %t610 = load i64, ptr %a607 - %t611 = icmp slt i64 %t610, %t609 - br i1 %t611, label %each.body341, label %each.end343 -each.body341: - %t612 = load ptr, ptr %a606 - %t613 = getelementptr inbounds { ptr, i64, i64 }, ptr %t612, i64 %t610 - %t614 = load { ptr, i64, i64 }, ptr %t613 - store { ptr, i64, i64 } %t614, ptr %a615 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %a615, i32 0, i32 1 - %t617 = load i64, ptr %t616 - %t618 = icmp sgt i64 %t617, 0 - br i1 %t618, label %then344, label %endif346 -then344: - %t619 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 5 - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %t619, i32 0, i32 1 - %t621 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t621, ptr %a622 - call void @finch_str_copy(ptr %a623, ptr %a622) - %t624 = load { ptr, i64, i64 }, ptr %a623 - %t625 = load i64, ptr %t620 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t619, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t619 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t620 - br label %endif346 -endif346: - br label %each.step342 -each.step342: - %t629 = load i64, ptr %a607 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a607 - br label %each.cond340 -each.end343: - call void @finch.drop.arr_str(ptr %a606) - %t631 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.main.load(ptr %a474, { ptr, i64, i64 } %t631, { ptr, i64, i64 } { ptr @.str.223, i64 0, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a632 - store { ptr, i64, i64 } zeroinitializer, ptr %a633 - %t634 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t634, ptr %a635 - call void @finch.copy.arr_str(ptr %a636, ptr %a635) - %t637 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t637, ptr %a638 - %t639 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t639, ptr %a640 - call void @finch.copy.arr_str(ptr %a641, ptr %a640) - %t642 = load { ptr, i64, i64 }, ptr %a641 - store { ptr, i64, i64 } %t642, ptr %a643 - %t644 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - store i64 0, ptr %a645 - br label %each.cond347 -each.cond347: - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t644, i32 0, i32 1 - %t647 = load i64, ptr %t646 - %t648 = load i64, ptr %a645 - %t649 = icmp slt i64 %t648, %t647 - br i1 %t649, label %each.body348, label %each.end350 -each.body348: - %t650 = load ptr, ptr %t644 - %t651 = getelementptr inbounds %S.ast.Program, ptr %t650, i64 %t648 - %t652 = load %S.ast.Program, ptr %t651 - store %S.ast.Program %t652, ptr %a653 - %t654 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 1 - %t655 = load { ptr, i64, i64 }, ptr %t654 - %t656 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t655) - store { ptr, i64, i64 } %t656, ptr %a657 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t659 = load { ptr, i64, i64 }, ptr %a657 - store i64 -1, ptr %a660 - %t661 = load i64, ptr %t658 - %t662 = load ptr, ptr %a638 - store i64 0, ptr %a663 - br label %find.cond351 -find.cond351: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t661 - br i1 %t665, label %find.body352, label %find.end355 -find.body352: - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t662, i64 %t664 - %t667 = load { ptr, i64, i64 }, ptr %t666 - store { ptr, i64, i64 } %t667, ptr %a668 - store { ptr, i64, i64 } %t659, ptr %a669 - %t670 = call i32 @finch_str_eq(ptr %a668, ptr %a669) - %t671 = icmp ne i32 %t670, 0 - br i1 %t671, label %find.hit353, label %find.next354 -find.hit353: - store i64 %t664, ptr %a660 - br label %find.end355 -find.next354: - %t672 = add i64 %t664, 1 - store i64 %t672, ptr %a663 - br label %find.cond351 -find.end355: - %t673 = load i64, ptr %a660 - %t674 = icmp sge i64 %t673, 0 - %t675 = xor i1 %t674, true - br i1 %t675, label %then356, label %endif358 -then356: - %t676 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t676 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a638, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a638 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t676 - br label %endif358 -endif358: - %t685 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i32 0, i32 1 - %t687 = load i64, ptr %t686 - store i64 0, ptr %a688 - br label %for.cond359 -for.cond359: - %t689 = load i64, ptr %a688 - %t690 = icmp slt i64 %t689, %t687 - br i1 %t690, label %for.body360, label %for.end362 -for.body360: - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t692 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t693 = load i64, ptr %a688 - %t694 = load { ptr, i64, i64 }, ptr %t692 - %t695 = extractvalue { ptr, i64, i64 } %t694, 1 - %t696 = icmp uge i64 %t693, %t695 - br i1 %t696, label %range363, label %inrange364 -range363: - call void @finch_panic_index(ptr @.str.224, i64 266, i64 %t693, i64 %t695) - unreachable -inrange364: - %t697 = extractvalue { ptr, i64, i64 } %t694, 0 - %t698 = getelementptr inbounds { ptr, i64, i64 }, ptr %t697, i64 %t693 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t691 - %t702 = load ptr, ptr %a633 - store i64 0, ptr %a703 - br label %find.cond365 -find.cond365: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body366, label %find.end369 -find.body366: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit367, label %find.next368 -find.hit367: - store i64 %t704, ptr %a700 - br label %find.end369 -find.next368: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond365 -find.end369: - %t713 = load i64, ptr %a700 - %t714 = icmp sge i64 %t713, 0 - %t715 = xor i1 %t714, true - br i1 %t715, label %then370, label %endif372 -then370: - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t717 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t718 = load i64, ptr %a688 - %t719 = load { ptr, i64, i64 }, ptr %t717 - %t720 = extractvalue { ptr, i64, i64 } %t719, 1 - %t721 = icmp uge i64 %t718, %t720 - br i1 %t721, label %range373, label %inrange374 -range373: - call void @finch_panic_index(ptr @.str.225, i64 267, i64 %t718, i64 %t720) - unreachable -inrange374: - %t722 = extractvalue { ptr, i64, i64 } %t719, 0 - %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t718 - %t724 = load { ptr, i64, i64 }, ptr %t723 - store { ptr, i64, i64 } %t724, ptr %a725 - call void @finch_str_copy(ptr %a726, ptr %a725) - %t727 = load { ptr, i64, i64 }, ptr %a726 - %t728 = load i64, ptr %t716 - %t729 = add i64 %t728, 1 - call void @finch_arr_reserve(ptr %a633, i64 %t729, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t730 = load ptr, ptr %a633 - %t731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t730, i64 %t728 - store { ptr, i64, i64 } %t727, ptr %t731 - store i64 %t729, ptr %t716 - %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t733 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t734 = load i64, ptr %a688 - %t735 = load { ptr, i64, i64 }, ptr %t733 - %t736 = extractvalue { ptr, i64, i64 } %t735, 1 - %t737 = icmp uge i64 %t734, %t736 - br i1 %t737, label %range375, label %inrange376 -range375: - call void @finch_panic_index(ptr @.str.226, i64 268, i64 %t734, i64 %t736) - unreachable -inrange376: - %t738 = extractvalue { ptr, i64, i64 } %t735, 0 - %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734 - %t740 = load { ptr, i64, i64 }, ptr %t739 - store { ptr, i64, i64 } %t740, ptr %a741 - call void @finch_str_copy(ptr %a742, ptr %a741) - %t743 = load { ptr, i64, i64 }, ptr %a742 - %t744 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t743, 0 - %t745 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 4 - %t746 = load i64, ptr %a688 - %t747 = load { ptr, i64, i64 }, ptr %t745 - %t748 = extractvalue { ptr, i64, i64 } %t747, 1 - %t749 = icmp uge i64 %t746, %t748 - br i1 %t749, label %range377, label %inrange378 -range377: - call void @finch_panic_index(ptr @.str.227, i64 268, i64 %t746, i64 %t748) - unreachable -inrange378: - %t750 = extractvalue { ptr, i64, i64 } %t747, 0 - %t751 = getelementptr inbounds { ptr, i64, i64 }, ptr %t750, i64 %t746 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - %t756 = insertvalue %S.cimport.Header %t744, { ptr, i64, i64 } %t755, 1 - %t757 = load i64, ptr %t732 - %t758 = add i64 %t757, 1 - call void @finch_arr_reserve(ptr %a632, i64 %t758, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) - %t759 = load ptr, ptr %a632 - %t760 = getelementptr inbounds %S.cimport.Header, ptr %t759, i64 %t757 - store %S.cimport.Header %t756, ptr %t760 - store i64 %t758, ptr %t732 - br label %endif372 -endif372: - br label %for.step361 -for.step361: - %t761 = load i64, ptr %a688 - %t762 = add i64 %t761, 1 - store i64 %t762, ptr %a688 - br label %for.cond359 -for.end362: - %t763 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 5 - store i64 0, ptr %a764 - br label %each.cond379 -each.cond379: - %t765 = getelementptr inbounds { ptr, i64, i64 }, ptr %t763, i32 0, i32 1 - %t766 = load i64, ptr %t765 - %t767 = load i64, ptr %a764 - %t768 = icmp slt i64 %t767, %t766 - br i1 %t768, label %each.body380, label %each.end382 -each.body380: - %t769 = load ptr, ptr %t763 - %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i64 %t767 - %t771 = load { ptr, i64, i64 }, ptr %t770 - store { ptr, i64, i64 } %t771, ptr %a772 - %t773 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t773, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a776 - %t777 = call i32 @finch_str_ends(ptr %a774, ptr %a776) - %t778 = icmp ne i32 %t777, 0 - br label %logic.from383 -logic.from383: - br i1 %t778, label %logic.end385, label %logic.rhs384 -logic.rhs384: - %t779 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t779, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.231, i64 2, i64 0 }, ptr %a782 - %t783 = call i32 @finch_str_ends(ptr %a780, ptr %a782) - %t784 = icmp ne i32 %t783, 0 - br label %logic.rend386 -logic.rend386: - br label %logic.end385 -logic.end385: - %t785 = phi i1 [ true, %logic.from383 ], [ %t784, %logic.rend386 ] - br label %logic.from387 -logic.from387: - br i1 %t785, label %logic.end389, label %logic.rhs388 -logic.rhs388: - %t786 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t786, ptr %a787 - store { ptr, i64, i64 } { ptr @.str.233, i64 2, i64 0 }, ptr %a789 - %t790 = call i32 @finch_str_ends(ptr %a787, ptr %a789) - %t791 = icmp ne i32 %t790, 0 - br label %logic.rend390 -logic.rend390: - br label %logic.end389 -logic.end389: - %t792 = phi i1 [ true, %logic.from387 ], [ %t791, %logic.rend390 ] - br i1 %t792, label %then391, label %else392 -then391: - %t793 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t794 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.234, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a795 - %t799 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t798, ptr %a801 - store { ptr, i64, i64 } %t799, ptr %a802 - call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) - store { ptr, i64, i64 } %t798, ptr %a803 - call void @finch_str_drop(ptr %a803) - %t804 = load { ptr, i64, i64 }, ptr %a800 - %t805 = load i64, ptr %t793 - %t806 = add i64 %t805, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t806, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t807 = load ptr, ptr %a643 - %t808 = getelementptr inbounds { ptr, i64, i64 }, ptr %t807, i64 %t805 - store { ptr, i64, i64 } %t804, ptr %t808 - store i64 %t806, ptr %t793 - br label %endif393 -else392: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t810, ptr %a811 - call void @finch_str_copy(ptr %a812, ptr %a811) - %t813 = load { ptr, i64, i64 }, ptr %a812 - %t814 = load i64, ptr %t809 - %t815 = add i64 %t814, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t815, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t816 = load ptr, ptr %a643 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t814 - store { ptr, i64, i64 } %t813, ptr %t817 - store i64 %t815, ptr %t809 - br label %endif393 -endif393: - br label %each.step381 -each.step381: - %t818 = load i64, ptr %a764 - %t819 = add i64 %t818, 1 - store i64 %t819, ptr %a764 - br label %each.cond379 -each.end382: - call void @finch_str_drop(ptr %a657) - br label %each.step349 -each.step349: - %t820 = load i64, ptr %a645 - %t821 = add i64 %t820, 1 - store i64 %t821, ptr %a645 - br label %each.cond347 -each.end350: - store { ptr, i64, i64 } { ptr @.str.235, i64 0, i64 0 }, ptr %a822 - %t823 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 5 - %t824 = load i1, ptr %t823 - br label %logic.from394 -logic.from394: - br i1 %t824, label %logic.end396, label %logic.rhs395 -logic.rhs395: - %t825 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t826 = load i1, ptr %t825 - br label %logic.rend397 -logic.rend397: - br label %logic.end396 -logic.end396: - %t827 = phi i1 [ true, %logic.from394 ], [ %t826, %logic.rend397 ] - br i1 %t827, label %then398, label %endif400 -then398: - %t828 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 0 - %t829 = load { ptr, i64, i64 }, ptr %t828 - store { ptr, i64, i64 } %t829, ptr %a830 - call void @finch_str_copy(ptr %a831, ptr %a830) - %t832 = load { ptr, i64, i64 }, ptr %a831 - %t833 = load { ptr, i64, i64 }, ptr %a822 - store { ptr, i64, i64 } %t832, ptr %a822 - store { ptr, i64, i64 } %t833, ptr %a834 - call void @finch_str_drop(ptr %a834) - br label %endif400 -endif400: - %t835 = load { ptr, i64, i64 }, ptr %a632 - %t836 = load { ptr, i64, i64 }, ptr %a638 - %t837 = load { ptr, i64, i64 }, ptr %a822 - %t838 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t839 = load i1, ptr %t838 - %t840 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 7 - %t841 = load { ptr, i64, i64 }, ptr %t840 - %t842 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t835, { ptr, i64, i64 } %t836, { ptr, i64, i64 } %t837, i1 %t839, { ptr, i64, i64 } %t841) - %t843 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 0 - %t844 = xor i1 %t843, true - %t845 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 2 - %t846 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 1 - br i1 %t844, label %or.failed401, label %or.ok402 -or.failed401: - store { ptr, i64, i64 } %t845, ptr %a847 - %t848 = load { ptr, i64, i64 }, ptr %a847 - %t849 = extractvalue { ptr, i64, i64 } %t848, 1 - %t850 = trunc i64 %t849 to i32 - %t851 = extractvalue { ptr, i64, i64 } %t848, 0 - %t852 = icmp eq ptr %t851, null - %t853 = select i1 %t852, ptr @.str.236, ptr %t851 - %t854 = call i32 (ptr, ...) @printf(ptr @.str.237, i32 %t850, ptr %t853) - %t855 = call i32 (ptr, ...) @printf(ptr @.str.238) - call void @finch_str_drop(ptr %a847) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -or.ok402: - store %S.cimport.CImports %t846, ptr %a856 - %t857 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 1 - %t860 = load { ptr, i64, i64 }, ptr %t859 - %t861 = load %S.cimport.CImports, ptr %a856 - %t862 = load i1, ptr %a105 - %t863 = insertvalue %S.gen.Options zeroinitializer, i1 %t862, 0 - %t864 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t864, ptr %a865 - store { ptr, i64, i64 } { ptr @.str.239, i64 5, i64 0 }, ptr %a866 - %t867 = call i32 @finch_str_eq(ptr %a865, ptr %a866) - %t868 = icmp ne i32 %t867, 0 - %t869 = insertvalue %S.gen.Options %t863, i1 %t868, 1 - %t870 = load i1, ptr %a106 - %t871 = insertvalue %S.gen.Options %t869, i1 %t870, 2 - %t872 = call { ptr, i64, i64 } @finch.host.cwd() - %t873 = insertvalue %S.gen.Options %t871, { ptr, i64, i64 } %t872, 3 - %t874 = load %S.platform.Target, ptr %a381 - store %S.platform.Target %t874, ptr %a875 - call void @finch.copy.S_platform_Target(ptr %a876, ptr %a875) - %t877 = load %S.platform.Target, ptr %a876 - %t878 = insertvalue %S.gen.Options %t873, %S.platform.Target %t877, 4 - %t879 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t858, { ptr, i64, i64 } %t860, %S.cimport.CImports %t861, %S.gen.Options %t878) - store %S.gen.Options %t878, ptr %a880 - call void @finch.drop.S_gen_Options(ptr %a880) - store { ptr, i64, i64 } %t879, ptr %a881 - %t882 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t882, ptr %a883 - store { ptr, i64, i64 } { ptr @.str.240, i64 2, i64 0 }, ptr %a884 - %t885 = call i32 @finch_str_eq(ptr %a883, ptr %a884) - %t886 = icmp ne i32 %t885, 0 - br label %logic.from409 -logic.from409: - br i1 %t886, label %logic.end411, label %logic.rhs410 -logic.rhs410: - %t887 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t887, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.241, i64 5, i64 0 }, ptr %a889 - %t890 = call i32 @finch_str_eq(ptr %a888, ptr %a889) - %t891 = icmp ne i32 %t890, 0 - br label %logic.rend412 -logic.rend412: - br label %logic.end411 -logic.end411: - %t892 = phi i1 [ true, %logic.from409 ], [ %t891, %logic.rend412 ] - br i1 %t892, label %then413, label %endif415 -then413: - %t893 = load { ptr, i64, i64 }, ptr %a881 - %t894 = extractvalue { ptr, i64, i64 } %t893, 1 - %t895 = trunc i64 %t894 to i32 - %t896 = extractvalue { ptr, i64, i64 } %t893, 0 - %t897 = icmp eq ptr %t896, null - %t898 = select i1 %t897, ptr @.str.242, ptr %t896 - %t899 = call i32 (ptr, ...) @printf(ptr @.str.243, i32 %t895, ptr %t898) - %t900 = call i32 (ptr, ...) @printf(ptr @.str.244) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -endif415: - %t901 = extractvalue { ptr, i64, i64 } { ptr @.str.245, i64 8, i64 0 }, 0 - %t902 = icmp eq ptr %t901, null - %t903 = select i1 %t902, ptr @.str.246, ptr %t901 - %t904 = call ptr @getenv(ptr %t903) - store { ptr, i64, i64 } zeroinitializer, ptr %a905 - call void @finch_str_from_c(ptr %a905, ptr %t904) - %t906 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t906, ptr %a907 - call void @finch_str_copy(ptr %a908, ptr %a907) - %t909 = load { ptr, i64, i64 }, ptr %a908 - store { ptr, i64, i64 } %t909, ptr %a910 - %t911 = getelementptr inbounds { ptr, i64, i64 }, ptr %a910, i32 0, i32 1 - %t912 = load i64, ptr %t911 - %t913 = icmp eq i64 %t912, 0 - br i1 %t913, label %then439, label %endif441 -then439: - %t914 = load { ptr, i64, i64 }, ptr %a1 - %t915 = extractvalue { ptr, i64, i64 } %t914, 1 - %t916 = icmp uge i64 0, %t915 - br i1 %t916, label %range442, label %inrange443 -range442: - call void @finch_panic_index(ptr @.str.247, i64 296, i64 0, i64 %t915) - unreachable -inrange443: - %t917 = extractvalue { ptr, i64, i64 } %t914, 0 - %t918 = getelementptr inbounds { ptr, i64, i64 }, ptr %t917, i64 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - %t920 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t919) - store { ptr, i64, i64 } %t920, ptr %a922 - store { ptr, i64, i64 } { ptr @.str.248, i64 22, i64 0 }, ptr %a923 - call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923) - store { ptr, i64, i64 } %t920, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load { ptr, i64, i64 }, ptr %a921 - %t926 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t925, ptr %a910 - store { ptr, i64, i64 } %t926, ptr %a927 - call void @finch_str_drop(ptr %a927) - br label %endif441 -endif441: - %t928 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t928, ptr %a929 - %t930 = call i32 @finch_file_exists(ptr %a929) - %t931 = icmp ne i32 %t930, 0 - %t932 = xor i1 %t931, true - br i1 %t932, label %then444, label %endif446 -then444: - %t933 = load { ptr, i64, i64 }, ptr %a1 - %t934 = extractvalue { ptr, i64, i64 } %t933, 1 - %t935 = icmp uge i64 0, %t934 - br i1 %t935, label %range447, label %inrange448 -range447: - call void @finch_panic_index(ptr @.str.249, i64 299, i64 0, i64 %t934) - unreachable -inrange448: - %t936 = extractvalue { ptr, i64, i64 } %t933, 0 - %t937 = getelementptr inbounds { ptr, i64, i64 }, ptr %t936, i64 0 - %t938 = load { ptr, i64, i64 }, ptr %t937 - %t939 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t938) - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.250, i64 19, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t944, ptr %a910 - store { ptr, i64, i64 } %t945, ptr %a946 - call void @finch_str_drop(ptr %a946) - br label %endif446 -endif446: - %t947 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t947, ptr %a948 - %t949 = call i32 @finch_file_exists(ptr %a948) - %t950 = icmp ne i32 %t949, 0 - %t951 = xor i1 %t950, true - br i1 %t951, label %then449, label %endif451 -then449: - %t952 = load { ptr, i64, i64 }, ptr %a1 - %t953 = extractvalue { ptr, i64, i64 } %t952, 1 - %t954 = icmp uge i64 0, %t953 - br i1 %t954, label %range452, label %inrange453 -range452: - call void @finch_panic_index(ptr @.str.251, i64 302, i64 0, i64 %t953) - unreachable -inrange453: - %t955 = extractvalue { ptr, i64, i64 } %t952, 0 - %t956 = getelementptr inbounds { ptr, i64, i64 }, ptr %t955, i64 0 - %t957 = load { ptr, i64, i64 }, ptr %t956 - %t958 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t957) - store { ptr, i64, i64 } %t958, ptr %a960 - store { ptr, i64, i64 } { ptr @.str.252, i64 34, i64 0 }, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t958, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - %t964 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t963, ptr %a910 - store { ptr, i64, i64 } %t964, ptr %a965 - call void @finch_str_drop(ptr %a965) - br label %endif451 -endif451: - %t966 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t966, ptr %a967 - %t968 = call i32 @finch_file_exists(ptr %a967) - %t969 = icmp ne i32 %t968, 0 - %t970 = xor i1 %t969, true - br label %logic.from454 -logic.from454: - br i1 %t970, label %logic.rhs455, label %logic.end456 -logic.rhs455: - store { ptr, i64, i64 } { ptr @.str.253, i64 18, i64 0 }, ptr %a971 - %t972 = call i32 @finch_file_exists(ptr %a971) - %t973 = icmp ne i32 %t972, 0 - br label %logic.rend457 -logic.rend457: - br label %logic.end456 -logic.end456: - %t974 = phi i1 [ false, %logic.from454 ], [ %t973, %logic.rend457 ] - br i1 %t974, label %then458, label %endif460 -then458: - %t975 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } { ptr @.str.254, i64 18, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t975, ptr %a976 - call void @finch_str_drop(ptr %a976) - br label %endif460 -endif460: - %t977 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t977, ptr %a978 - %t979 = call i32 @finch_file_exists(ptr %a978) - %t980 = icmp ne i32 %t979, 0 - %t981 = xor i1 %t980, true - br i1 %t981, label %then461, label %endif463 -then461: - %t982 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t982, ptr %a984 - store { ptr, i64, i64 } { ptr @.str.255, i64 19, i64 0 }, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - store { ptr, i64, i64 } %t982, ptr %a986 - call void @finch_str_drop(ptr %a986) - %t987 = load { ptr, i64, i64 }, ptr %a983 - %t988 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t987, ptr %a910 - store { ptr, i64, i64 } %t988, ptr %a989 - call void @finch_str_drop(ptr %a989) - br label %endif463 -endif463: - store { ptr, i64, i64 } { ptr @.str.256, i64 0, i64 0 }, ptr %a990 - %t991 = load i1, ptr %a105 - br i1 %t991, label %then464, label %endif466 -then464: - %t992 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.257, i64 6, i64 0 }, ptr %a990 - store { ptr, i64, i64 } %t992, ptr %a993 - call void @finch_str_drop(ptr %a993) - br label %endif466 -endif466: - %t994 = load i1, ptr %a106 - br i1 %t994, label %then467, label %endif469 -then467: - %t995 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t995, ptr %a997 - store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %a998 - call void @finch_str_concat(ptr %a996, ptr %a997, ptr %a998) - %t999 = load { ptr, i64, i64 }, ptr %a996 - %t1000 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t999, ptr %a990 - store { ptr, i64, i64 } %t1000, ptr %a1001 - call void @finch_str_drop(ptr %a1001) - br label %endif469 -endif469: - %t1002 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t1002, ptr %a1003 - call void @finch_str_copy(ptr %a1004, ptr %a1003) - %t1005 = load { ptr, i64, i64 }, ptr %a1004 - %t1006 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t1005, 0 - %t1007 = load { ptr, i64, i64 }, ptr %a881 - store { ptr, i64, i64 } %t1007, ptr %a1008 - call void @finch_str_copy(ptr %a1009, ptr %a1008) - %t1010 = load { ptr, i64, i64 }, ptr %a1009 - %t1011 = insertvalue %S.linker.Build %t1006, { ptr, i64, i64 } %t1010, 1 - %t1012 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t1012, ptr %a1013 - call void @finch_str_copy(ptr %a1014, ptr %a1013) - %t1015 = load { ptr, i64, i64 }, ptr %a1014 - %t1016 = insertvalue %S.linker.Build %t1011, { ptr, i64, i64 } %t1015, 2 - %t1017 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_copy(ptr %a1019, ptr %a1018) - %t1020 = load { ptr, i64, i64 }, ptr %a1019 - %t1021 = insertvalue %S.linker.Build %t1016, { ptr, i64, i64 } %t1020, 3 - %t1022 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t1022, ptr %a1023 - call void @finch_str_copy(ptr %a1024, ptr %a1023) - %t1025 = load { ptr, i64, i64 }, ptr %a1024 - %t1026 = insertvalue %S.linker.Build %t1021, { ptr, i64, i64 } %t1025, 4 - %t1027 = load i1, ptr %a105 - %t1028 = insertvalue %S.linker.Build %t1026, i1 %t1027, 5 - %t1029 = load { ptr, i64, i64 }, ptr %a643 - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch.copy.arr_str(ptr %a1031, ptr %a1030) - %t1032 = load { ptr, i64, i64 }, ptr %a1031 - %t1033 = insertvalue %S.linker.Build %t1028, { ptr, i64, i64 } %t1032, 6 - %t1034 = load %S.platform.Target, ptr %a381 - %t1035 = load %S.cimport.CImports, ptr %a856 - %t1036 = call i64 @finch.linker.build(%S.linker.Build %t1033, %S.platform.Target %t1034, %S.cimport.CImports %t1035) - store %S.linker.Build %t1033, ptr %a1037 - call void @finch.drop.S_linker_Build(ptr %a1037) - %t1038 = icmp ne i64 %t1036, 0 - br i1 %t1038, label %then470, label %endif472 -then470: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -endif472: - %t1039 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t1039, ptr %a1040 - store { ptr, i64, i64 } { ptr @.str.259, i64 3, i64 0 }, ptr %a1041 - %t1042 = call i32 @finch_str_eq(ptr %a1040, ptr %a1041) - %t1043 = icmp ne i32 %t1042, 0 - br i1 %t1043, label %then473, label %endif475 -then473: - store { ptr, i64, i64 } zeroinitializer, ptr %a1044 - store i64 0, ptr %a1045 - br label %each.cond476 -each.cond476: - %t1046 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t1047 = load i64, ptr %t1046 - %t1048 = load i64, ptr %a1045 - %t1049 = icmp slt i64 %t1048, %t1047 - br i1 %t1049, label %each.body477, label %each.end479 -each.body477: - %t1050 = load ptr, ptr %a113 - %t1051 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1050, i64 %t1048 - %t1052 = load { ptr, i64, i64 }, ptr %t1051 - store { ptr, i64, i64 } %t1052, ptr %a1053 - %t1054 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - %t1055 = load { ptr, i64, i64 }, ptr %a1053 - %t1056 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1055) - %t1057 = load i64, ptr %t1054 - %t1058 = add i64 %t1057, 1 - call void @finch_arr_reserve(ptr %a1044, i64 %t1058, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1059 = load ptr, ptr %a1044 - %t1060 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1059, i64 %t1057 - store { ptr, i64, i64 } %t1056, ptr %t1060 - store i64 %t1058, ptr %t1054 - br label %each.step478 -each.step478: - %t1061 = load i64, ptr %a1045 - %t1062 = add i64 %t1061, 1 - store i64 %t1062, ptr %a1045 - br label %each.cond476 -each.end479: - %t1063 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 8 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - %t1065 = load { ptr, i64, i64 }, ptr %a103 - %t1066 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1065) - store { ptr, i64, i64 } %t1064, ptr %a1068 - store { ptr, i64, i64 } %t1066, ptr %a1069 - call void @finch_str_concat(ptr %a1067, ptr %a1068, ptr %a1069) - store { ptr, i64, i64 } %t1066, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - %t1071 = load { ptr, i64, i64 }, ptr %a1067 - store { ptr, i64, i64 } %t1071, ptr %a1073 - store { ptr, i64, i64 } { ptr @.str.260, i64 1, i64 0 }, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1071, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.261, i64 1, i64 0 }, ptr %a1078 - call void @finch_str_join(ptr %a1079, ptr %a1044, ptr %a1078) - %t1080 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1076, ptr %a1082 - store { ptr, i64, i64 } %t1080, ptr %a1083 - call void @finch_str_concat(ptr %a1081, ptr %a1082, ptr %a1083) - store { ptr, i64, i64 } %t1076, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - store { ptr, i64, i64 } %t1080, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1081 - %t1087 = call i64 @finch.host.run({ ptr, i64, i64 } %t1086) - store { ptr, i64, i64 } %t1086, ptr %a1088 - call void @finch_str_drop(ptr %a1088) - store i64 %t1087, ptr %a1089 - %t1090 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.host.remove({ ptr, i64, i64 } %t1090) - %t1091 = load i64, ptr %a1089 - call void @finch.drop.arr_str(ptr %a1044) - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 %t1091 -endif475: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -} - -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.from480 -logic.from480: - br i1 %t3, label %logic.rhs481, label %logic.end482 -logic.rhs481: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend483 -logic.rend483: - br label %logic.end482 -logic.end482: - %t6 = phi i1 [ false, %logic.from480 ], [ %t5, %logic.rend483 ] - br label %logic.from484 -logic.from484: - br i1 %t6, label %logic.end486, label %logic.rhs485 -logic.rhs485: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from487 -logic.from487: - br i1 %t8, label %logic.rhs488, label %logic.end489 -logic.rhs488: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend490 -logic.rend490: - br label %logic.end489 -logic.end489: - %t11 = phi i1 [ false, %logic.from487 ], [ %t10, %logic.rend490 ] - br label %logic.rend491 -logic.rend491: - br label %logic.end486 -logic.end486: - %t12 = phi i1 [ true, %logic.from484 ], [ %t11, %logic.rend491 ] - br label %logic.from492 -logic.from492: - br i1 %t12, label %logic.end494, label %logic.rhs493 -logic.rhs493: - %t13 = load i8, ptr %a1 - %t14 = icmp eq i8 %t13, 95 - br label %logic.rend495 -logic.rend495: - br label %logic.end494 -logic.end494: - %t15 = phi i1 [ true, %logic.from492 ], [ %t14, %logic.rend495 ] - 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.from496 -logic.from496: - br i1 %t3, label %logic.rhs497, label %logic.end498 -logic.rhs497: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend499 -logic.rend499: - br label %logic.end498 -logic.end498: - %t6 = phi i1 [ false, %logic.from496 ], [ %t5, %logic.rend499 ] - 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.from500 -logic.from500: - br i1 %t3, label %logic.end502, label %logic.rhs501 -logic.rhs501: - %t4 = load i8, ptr %a1 - %t5 = icmp uge i8 %t4, 97 - br label %logic.from503 -logic.from503: - br i1 %t5, label %logic.rhs504, label %logic.end505 -logic.rhs504: - %t6 = load i8, ptr %a1 - %t7 = icmp ule i8 %t6, 102 - br label %logic.rend506 -logic.rend506: - br label %logic.end505 -logic.end505: - %t8 = phi i1 [ false, %logic.from503 ], [ %t7, %logic.rend506 ] - br label %logic.rend507 -logic.rend507: - br label %logic.end502 -logic.end502: - %t9 = phi i1 [ true, %logic.from500 ], [ %t8, %logic.rend507 ] - br label %logic.from508 -logic.from508: - br i1 %t9, label %logic.end510, label %logic.rhs509 -logic.rhs509: - %t10 = load i8, ptr %a1 - %t11 = icmp uge i8 %t10, 65 - br label %logic.from511 -logic.from511: - br i1 %t11, label %logic.rhs512, label %logic.end513 -logic.rhs512: - %t12 = load i8, ptr %a1 - %t13 = icmp ule i8 %t12, 70 - br label %logic.rend514 -logic.rend514: - br label %logic.end513 -logic.end513: - %t14 = phi i1 [ false, %logic.from511 ], [ %t13, %logic.rend514 ] - br label %logic.rend515 -logic.rend515: - br label %logic.end510 -logic.end510: - %t15 = phi i1 [ true, %logic.from508 ], [ %t14, %logic.rend515 ] - 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.262, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.263, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.264, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.265, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.266, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.267, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.268, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.269, i64 5, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.270, i64 8, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.273, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.274, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.275, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.276, i64 6, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.277, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.278, i64 2, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.279, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.280, i64 4, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.281, i64 5, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.282, i64 6, i64 0 }, ptr %t24 - %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t26 = insertvalue { ptr, i64, i64 } %t25, i64 21, 1 - %t27 = insertvalue { ptr, i64, i64 } %t26, i64 21, 2 - 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.cond516 -find.cond516: - %t35 = load i64, ptr %a34 - %t36 = icmp slt i64 %t35, %t32 - br i1 %t36, label %find.body517, label %find.end520 -find.body517: - %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.hit518, label %find.next519 -find.hit518: - store i64 %t35, ptr %a31 - br label %find.end520 -find.next519: - %t43 = add i64 %t35, 1 - store i64 %t43, ptr %a34 - br label %find.cond516 -find.end520: - %t44 = load i64, ptr %a31 - %t45 = icmp sge i64 %t44, 0 - call void @finch.drop.arr_str(ptr %a28) - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic521, label %ok522 -panic521: - call void @finch_panic(ptr @.str.283, i64 41, ptr @.str.284) - unreachable -ok522: - %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.285, i64 1, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a9 - %t13 = load i64, ptr %a2 - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.286, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a28, i64 %t27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t26, ptr %a33 - call void @finch_str_drop(ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.287, i64 9, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = trunc i64 %t47 to i32 - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = icmp eq ptr %t49, null - %t51 = select i1 %t50, ptr @.str.288, ptr %t49 - %t52 = call i32 (ptr, ...) @printf(ptr @.str.289, i32 %t48, ptr %t51) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = call i32 (ptr, ...) @printf(ptr @.str.290) - %t55 = trunc i64 1 to i32 - %t56 = call i32 @fflush(ptr null) - call void @exit(i32 %t55) - ret void -} - -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 %panic523, label %ok524 -panic523: - call void @finch_panic(ptr @.str.291, i64 46, ptr @.str.292) - unreachable -ok524: - %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 %panic525, label %ok526 -panic525: - call void @finch_panic(ptr @.str.293, i64 46, ptr @.str.294) - unreachable -ok526: - %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 %then527, label %endif529 -then527: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic530, label %ok531 -panic530: - call void @finch_panic(ptr @.str.295, i64 47, ptr @.str.296) - unreachable -ok531: - %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 %panic532, label %ok533 -panic532: - call void @finch_panic(ptr @.str.297, i64 47, ptr @.str.298) - unreachable -ok533: - %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 %range534, label %inrange535 -range534: - call void @finch_panic_index(ptr @.str.299, i64 47, i64 %t23, i64 %t25) - unreachable -inrange535: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 - %t29 = load i8, ptr %t28 - ret i8 %t29 -endif529: - %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 %panic536, label %ok537 -panic536: - call void @finch_panic(ptr @.str.300, i64 53, ptr @.str.301) - unreachable -ok537: - %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 %panic538, label %ok539 -panic538: - call void @finch_panic(ptr @.str.302, i64 53, ptr @.str.303) - unreachable -ok539: - %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 %range540, label %inrange541 -range540: - call void @finch_panic_index(ptr @.str.304, i64 53, i64 %t8, i64 %t10) - unreachable -inrange541: - %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 %then542, label %else543 -then542: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic545, label %ok546 -panic545: - call void @finch_panic(ptr @.str.305, i64 55, ptr @.str.306) - unreachable -ok546: - %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 %panic547, label %ok548 -panic547: - call void @finch_panic(ptr @.str.307, i64 56, ptr @.str.308) - unreachable -ok548: - %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 %panic549, label %ok550 -panic549: - call void @finch_panic(ptr @.str.309, i64 57, ptr @.str.310) - unreachable -ok550: - %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 - store i1 true, ptr %t28 - br label %endif544 -else543: - %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 %then551, label %endif553 -then551: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic554, label %ok555 -panic554: - call void @finch_panic(ptr @.str.311, i64 59, ptr @.str.312) - unreachable -ok555: - %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 %endif553 -endif553: - br label %endif544 -endif544: - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic556, label %ok557 -panic556: - call void @finch_panic(ptr @.str.313, i64 61, ptr @.str.314) - unreachable -ok557: - %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 - 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.315, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.322, i64 2, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.323, i64 2, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.324, i64 2, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.325, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.326, i64 2, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.327, i64 2, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.328, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.329, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.330, i64 2, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic558, label %ok559 -panic558: - call void @finch_panic(ptr @.str.331, i64 67, ptr @.str.332) - unreachable -ok559: - %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 %panic560, label %ok561 -panic560: - call void @finch_panic(ptr @.str.333, i64 67, ptr @.str.334) - unreachable -ok561: - %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 %then562, label %endif564 -then562: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic565, label %ok566 -panic565: - call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) - unreachable -ok566: - %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 %panic567, label %ok568 -panic567: - call void @finch_panic(ptr @.str.338, i64 68, ptr @.str.339) - unreachable -ok568: - %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 %panic569, label %ok570 -panic569: - call void @finch_panic(ptr @.str.340, i64 68, ptr @.str.341) - unreachable -ok570: - %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.337, i64 68) - %t50 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 - %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.cond571 -find.cond571: - %t58 = load i64, ptr %a57 - %t59 = icmp slt i64 %t58, %t55 - br i1 %t59, label %find.body572, label %find.end575 -find.body572: - %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.hit573, label %find.next574 -find.hit573: - store i64 %t58, ptr %a54 - br label %find.end575 -find.next574: - %t66 = add i64 %t58, 1 - store i64 %t66, ptr %a57 - br label %find.cond571 -find.end575: - %t67 = load i64, ptr %a54 - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then576, label %endif578 -then576: - %t69 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t69 -endif578: - call void @finch_str_drop(ptr %a51) - br label %endif564 -endif564: - store { ptr, i64, i64 } { ptr @.str.342, i64 22, i64 0 }, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic579, label %ok580 -panic579: - call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) - unreachable -ok580: - %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 %panic581, label %ok582 -panic581: - call void @finch_panic(ptr @.str.346, i64 74, ptr @.str.347) - unreachable -ok582: - %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 %panic583, label %ok584 -panic583: - call void @finch_panic(ptr @.str.348, i64 74, ptr @.str.349) - unreachable -ok584: - %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.345, 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 %then585, label %endif587 -then585: - %t95 = load { ptr, i64, i64 }, ptr %a87 - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t95 -endif587: - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } { ptr @.str.351, i64 0, i64 0 } -} - -define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { -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 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i8 %p1, ptr %a2 - %t3 = load i8, ptr %a2 - %t4 = icmp eq i8 %t3, 110 - br i1 %t4, label %then588, label %endif590 -then588: - ret i8 10 -endif590: - %t5 = load i8, ptr %a2 - %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then591, label %endif593 -then591: - ret i8 9 -endif593: - %t7 = load i8, ptr %a2 - %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then594, label %endif596 -then594: - ret i8 13 -endif596: - %t9 = load i8, ptr %a2 - %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then597, label %endif599 -then597: - %t11 = trunc i64 0 to i8 - ret i8 %t11 -endif599: - %t12 = load i8, ptr %a2 - %t13 = icmp eq i8 %t12, 92 - br label %logic.from600 -logic.from600: - br i1 %t13, label %logic.end602, label %logic.rhs601 -logic.rhs601: - %t14 = load i8, ptr %a2 - %t15 = icmp eq i8 %t14, 34 - br label %logic.rend603 -logic.rend603: - br label %logic.end602 -logic.end602: - %t16 = phi i1 [ true, %logic.from600 ], [ %t15, %logic.rend603 ] - br label %logic.from604 -logic.from604: - br i1 %t16, label %logic.end606, label %logic.rhs605 -logic.rhs605: - %t17 = load i8, ptr %a2 - %t18 = icmp eq i8 %t17, 39 - br label %logic.rend607 -logic.rend607: - br label %logic.end606 -logic.end606: - %t19 = phi i1 [ true, %logic.from604 ], [ %t18, %logic.rend607 ] - br i1 %t19, label %then608, label %endif610 -then608: - %t20 = load i8, ptr %a2 - ret i8 %t20 -endif610: - %t21 = load ptr, ptr %a1 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic611, label %ok612 -panic611: - call void @finch_panic(ptr @.str.352, i64 97, ptr @.str.353) - unreachable -ok612: - %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 %panic613, label %ok614 -panic613: - call void @finch_panic(ptr @.str.354, i64 97, ptr @.str.355) - unreachable -ok614: - %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.356, i64 16, i64 0 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load i8, ptr %a2 - ret i8 %t40 -} - -define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) { -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.drop.S_lexer_Lexer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca i8, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca i8, align 16 - %a471 = alloca i8, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca i64, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca i64, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca %S.lexer.Token, align 16 - %a593 = alloca %S.lexer.Token, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond615 -while.cond615: - %t20 = load ptr, ptr %a18 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic618, label %ok619 -panic618: - call void @finch_panic(ptr @.str.357, i64 105, ptr @.str.358) - unreachable -ok619: - %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 %panic620, label %ok621 -panic620: - call void @finch_panic(ptr @.str.359, i64 105, ptr @.str.360) - unreachable -ok621: - %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.body616, label %while.end617 -while.body616: - %t30 = load ptr, ptr %a18 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic622, label %ok623 -panic622: - call void @finch_panic(ptr @.str.361, i64 106, ptr @.str.362) - unreachable -ok623: - %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 %panic624, label %ok625 -panic624: - call void @finch_panic(ptr @.str.363, i64 106, ptr @.str.364) - unreachable -ok625: - %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 %range626, label %inrange627 -range626: - call void @finch_panic_index(ptr @.str.365, i64 106, i64 %t36, i64 %t38) - unreachable -inrange627: - %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.from628 -logic.from628: - br i1 %t45, label %logic.end630, label %logic.rhs629 -logic.rhs629: - %t46 = load i8, ptr %a43 - %t47 = icmp eq i8 %t46, 9 - br label %logic.rend631 -logic.rend631: - br label %logic.end630 -logic.end630: - %t48 = phi i1 [ true, %logic.from628 ], [ %t47, %logic.rend631 ] - br label %logic.from632 -logic.from632: - br i1 %t48, label %logic.end634, label %logic.rhs633 -logic.rhs633: - %t49 = load i8, ptr %a43 - %t50 = icmp eq i8 %t49, 10 - br label %logic.rend635 -logic.rend635: - br label %logic.end634 -logic.end634: - %t51 = phi i1 [ true, %logic.from632 ], [ %t50, %logic.rend635 ] - br label %logic.from636 -logic.from636: - br i1 %t51, label %logic.end638, label %logic.rhs637 -logic.rhs637: - %t52 = load i8, ptr %a43 - %t53 = icmp eq i8 %t52, 13 - br label %logic.rend639 -logic.rend639: - br label %logic.end638 -logic.end638: - %t54 = phi i1 [ true, %logic.from636 ], [ %t53, %logic.rend639 ] - br i1 %t54, label %then640, label %endif642 -then640: - %t55 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t55) - br label %while.cond615 -endif642: - %t56 = load i8, ptr %a43 - %t57 = icmp eq i8 %t56, 47 - br label %logic.from643 -logic.from643: - br i1 %t57, label %logic.rhs644, label %logic.end645 -logic.rhs644: - %t58 = load ptr, ptr %a18 - %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) - %t60 = icmp eq i8 %t59, 47 - br label %logic.rend646 -logic.rend646: - br label %logic.end645 -logic.end645: - %t61 = phi i1 [ false, %logic.from643 ], [ %t60, %logic.rend646 ] - br i1 %t61, label %then647, label %endif649 -then647: - br label %while.cond650 -while.cond650: - %t62 = load ptr, ptr %a18 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic653, label %ok654 -panic653: - call void @finch_panic(ptr @.str.366, i64 112, ptr @.str.367) - unreachable -ok654: - %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 %panic655, label %ok656 -panic655: - call void @finch_panic(ptr @.str.368, i64 112, ptr @.str.369) - unreachable -ok656: - %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.from657 -logic.from657: - br i1 %t71, label %logic.rhs658, label %logic.end659 -logic.rhs658: - %t72 = load ptr, ptr %a18 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic660, label %ok661 -panic660: - call void @finch_panic(ptr @.str.370, i64 112, ptr @.str.371) - unreachable -ok661: - %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 %panic662, label %ok663 -panic662: - call void @finch_panic(ptr @.str.372, i64 112, ptr @.str.373) - unreachable -ok663: - %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 %range664, label %inrange665 -range664: - call void @finch_panic_index(ptr @.str.374, i64 112, i64 %t78, i64 %t80) - unreachable -inrange665: - %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.rend666 -logic.rend666: - br label %logic.end659 -logic.end659: - %t86 = phi i1 [ false, %logic.from657 ], [ %t85, %logic.rend666 ] - br i1 %t86, label %while.body651, label %while.end652 -while.body651: - %t87 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t87) - br label %while.cond650 -while.end652: - br label %while.cond615 -endif649: - %t88 = load i8, ptr %a43 - %t89 = icmp eq i8 %t88, 47 - br label %logic.from667 -logic.from667: - br i1 %t89, label %logic.rhs668, label %logic.end669 -logic.rhs668: - %t90 = load ptr, ptr %a18 - %t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1) - %t92 = icmp eq i8 %t91, 42 - br label %logic.rend670 -logic.rend670: - br label %logic.end669 -logic.end669: - %t93 = phi i1 [ false, %logic.from667 ], [ %t92, %logic.rend670 ] - br i1 %t93, label %then671, label %endif673 -then671: - %t94 = load ptr, ptr %a18 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic674, label %ok675 -panic674: - call void @finch_panic(ptr @.str.375, i64 118, ptr @.str.376) - unreachable -ok675: - %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 %panic676, label %ok677 -panic676: - call void @finch_panic(ptr @.str.377, i64 119, ptr @.str.378) - unreachable -ok677: - %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.cond678 -while.cond678: - %t106 = load ptr, ptr %a18 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic681, label %ok682 -panic681: - call void @finch_panic(ptr @.str.379, i64 122, ptr @.str.380) - unreachable -ok682: - %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 %panic683, label %ok684 -panic683: - call void @finch_panic(ptr @.str.381, i64 122, ptr @.str.382) - unreachable -ok684: - %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.from685 -logic.from685: - br i1 %t115, label %logic.rhs686, label %logic.end687 -logic.rhs686: - %t116 = load ptr, ptr %a18 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic688, label %ok689 -panic688: - call void @finch_panic(ptr @.str.383, i64 122, ptr @.str.384) - unreachable -ok689: - %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 %panic690, label %ok691 -panic690: - call void @finch_panic(ptr @.str.385, i64 122, ptr @.str.386) - unreachable -ok691: - %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 %range692, label %inrange693 -range692: - call void @finch_panic_index(ptr @.str.387, i64 122, i64 %t122, i64 %t124) - unreachable -inrange693: - %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.from694 -logic.from694: - br i1 %t129, label %logic.rhs695, label %logic.end696 -logic.rhs695: - %t130 = load ptr, ptr %a18 - %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) - %t132 = icmp eq i8 %t131, 47 - br label %logic.rend697 -logic.rend697: - br label %logic.end696 -logic.end696: - %t133 = phi i1 [ false, %logic.from694 ], [ %t132, %logic.rend697 ] - %t134 = xor i1 %t133, true - br label %logic.rend698 -logic.rend698: - br label %logic.end687 -logic.end687: - %t135 = phi i1 [ false, %logic.from685 ], [ %t134, %logic.rend698 ] - br i1 %t135, label %while.body679, label %while.end680 -while.body679: - %t136 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t136) - br label %while.cond678 -while.end680: - %t137 = load ptr, ptr %a18 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic699, label %ok700 -panic699: - call void @finch_panic(ptr @.str.388, i64 125, ptr @.str.389) - unreachable -ok700: - %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 %panic701, label %ok702 -panic701: - call void @finch_panic(ptr @.str.390, i64 125, ptr @.str.391) - unreachable -ok702: - %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 %then703, label %endif705 -then703: - %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.392, i64 36, i64 0 }) - br label %endif705 -endif705: - %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.cond615 -endif673: - %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.393, i64 0, i64 0 }, 0 - %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.394, i64 0, i64 0 }, 1 - %t154 = load ptr, ptr %a18 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic706, label %ok707 -panic706: - call void @finch_panic(ptr @.str.395, i64 133, ptr @.str.396) - unreachable -ok707: - %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 %panic708, label %ok709 -panic708: - call void @finch_panic(ptr @.str.397, i64 133, ptr @.str.398) - unreachable -ok709: - %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 %panic710, label %ok711 -panic710: - call void @finch_panic(ptr @.str.399, i64 133, ptr @.str.400) - unreachable -ok711: - %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 %panic712, label %ok713 -panic712: - call void @finch_panic(ptr @.str.401, i64 134, ptr @.str.402) - unreachable -ok713: - %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 %panic714, label %ok715 -panic714: - call void @finch_panic(ptr @.str.403, i64 135, ptr @.str.404) - unreachable -ok715: - %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 %then716, label %else717 -then716: - br label %while.cond719 -while.cond719: - %t180 = load ptr, ptr %a18 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic722, label %ok723 -panic722: - call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) - unreachable -ok723: - %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 %panic724, label %ok725 -panic724: - call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) - unreachable -ok725: - %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.from726 -logic.from726: - br i1 %t189, label %logic.rhs727, label %logic.end728 -logic.rhs727: - %t190 = load ptr, ptr %a18 - %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic729, label %ok730 -panic729: - call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) - unreachable -ok730: - %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 %panic731, label %ok732 -panic731: - call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) - unreachable -ok732: - %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 %range733, label %inrange734 -range733: - call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t196, i64 %t198) - unreachable -inrange734: - %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.from735 -logic.from735: - br i1 %t203, label %logic.end737, label %logic.rhs736 -logic.rhs736: - %t204 = load ptr, ptr %a18 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic738, label %ok739 -panic738: - call void @finch_panic(ptr @.str.414, i64 137, ptr @.str.415) - unreachable -ok739: - %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 %panic740, label %ok741 -panic740: - call void @finch_panic(ptr @.str.416, i64 137, ptr @.str.417) - unreachable -ok741: - %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 %range742, label %inrange743 -range742: - call void @finch_panic_index(ptr @.str.418, i64 137, i64 %t210, i64 %t212) - unreachable -inrange743: - %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.rend744 -logic.rend744: - br label %logic.end737 -logic.end737: - %t218 = phi i1 [ true, %logic.from735 ], [ %t217, %logic.rend744 ] - br label %logic.rend745 -logic.rend745: - br label %logic.end728 -logic.end728: - %t219 = phi i1 [ false, %logic.from726 ], [ %t218, %logic.rend745 ] - br i1 %t219, label %while.body720, label %while.end721 -while.body720: - %t220 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t220) - br label %while.cond719 -while.end721: - %t221 = load ptr, ptr %a18 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic746, label %ok747 -panic746: - call void @finch_panic(ptr @.str.419, i64 140, ptr @.str.420) - unreachable -ok747: - %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 %panic748, label %ok749 -panic748: - call void @finch_panic(ptr @.str.422, i64 140, ptr @.str.423) - unreachable -ok749: - %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.421, i64 140) - %t232 = load { ptr, i64, i64 }, ptr %a226 - %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t232, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } { ptr @.str.424, i64 5, i64 0 }, ptr %t236 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t240) - br i1 %t241, label %then750, label %endif752 -then750: - %t242 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t243, ptr %a245 - call void @finch_str_copy(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - %t248 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t247, ptr %t244 - store { ptr, i64, i64 } %t248, ptr %a249 - call void @finch_str_drop(ptr %a249) - br label %endif752 -endif752: - br label %endif718 -else717: - %t250 = load i8, ptr %a43 - %t251 = call i1 @finch.lexer.isDigit(i8 %t250) - br i1 %t251, label %then753, label %else754 -then753: - %t252 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } { ptr @.str.425, i64 3, i64 0 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load i8, ptr %a43 - %t256 = icmp eq i8 %t255, 48 - br label %logic.from756 -logic.from756: - br i1 %t256, label %logic.rhs757, label %logic.end758 -logic.rhs757: - %t257 = load ptr, ptr %a18 - %t258 = call i8 @finch.lexer.peek(ptr %t257, i64 1) - %t259 = icmp eq i8 %t258, 120 - br label %logic.from759 -logic.from759: - br i1 %t259, label %logic.end761, label %logic.rhs760 -logic.rhs760: - %t260 = load ptr, ptr %a18 - %t261 = call i8 @finch.lexer.peek(ptr %t260, i64 1) - %t262 = icmp eq i8 %t261, 88 - br label %logic.rend762 -logic.rend762: - br label %logic.end761 -logic.end761: - %t263 = phi i1 [ true, %logic.from759 ], [ %t262, %logic.rend762 ] - br label %logic.rend763 -logic.rend763: - br label %logic.end758 -logic.end758: - %t264 = phi i1 [ false, %logic.from756 ], [ %t263, %logic.rend763 ] - br i1 %t264, label %then764, label %else765 -then764: - %t265 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t265) - %t266 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t266) - br label %while.cond767 -while.cond767: - %t267 = load ptr, ptr %a18 - %t268 = icmp eq ptr %t267, null - br i1 %t268, label %panic770, label %ok771 -panic770: - call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) - unreachable -ok771: - %t269 = getelementptr inbounds %S.lexer.Lexer, ptr %t267, i32 0, i32 2 - %t270 = load i64, ptr %t269 - %t271 = load ptr, ptr %a18 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic772, label %ok773 -panic772: - call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) - unreachable -ok773: - %t273 = getelementptr inbounds %S.lexer.Lexer, ptr %t271, i32 0, i32 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load i64, ptr %t274 - %t276 = icmp slt i64 %t270, %t275 - br label %logic.from774 -logic.from774: - br i1 %t276, label %logic.rhs775, label %logic.end776 -logic.rhs775: - %t277 = load ptr, ptr %a18 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic777, label %ok778 -panic777: - call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) - unreachable -ok778: - %t279 = getelementptr inbounds %S.lexer.Lexer, ptr %t277, i32 0, i32 0 - %t280 = load ptr, ptr %a18 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic779, label %ok780 -panic779: - call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) - unreachable -ok780: - %t282 = getelementptr inbounds %S.lexer.Lexer, ptr %t280, i32 0, i32 2 - %t283 = load i64, ptr %t282 - %t284 = load { ptr, i64, i64 }, ptr %t279 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range781, label %inrange782 -range781: - call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t283, i64 %t285) - unreachable -inrange782: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds i8, ptr %t287, i64 %t283 - %t289 = load i8, ptr %t288 - %t290 = call i1 @finch.lexer.isHex(i8 %t289) - br label %logic.from783 -logic.from783: - br i1 %t290, label %logic.end785, label %logic.rhs784 -logic.rhs784: - %t291 = load ptr, ptr %a18 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic786, label %ok787 -panic786: - call void @finch_panic(ptr @.str.435, i64 150, ptr @.str.436) - unreachable -ok787: - %t293 = getelementptr inbounds %S.lexer.Lexer, ptr %t291, i32 0, i32 0 - %t294 = load ptr, ptr %a18 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic788, label %ok789 -panic788: - call void @finch_panic(ptr @.str.437, i64 150, ptr @.str.438) - unreachable -ok789: - %t296 = getelementptr inbounds %S.lexer.Lexer, ptr %t294, i32 0, i32 2 - %t297 = load i64, ptr %t296 - %t298 = load { ptr, i64, i64 }, ptr %t293 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range790, label %inrange791 -range790: - call void @finch_panic_index(ptr @.str.439, i64 150, i64 %t297, i64 %t299) - unreachable -inrange791: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds i8, ptr %t301, i64 %t297 - %t303 = load i8, ptr %t302 - %t304 = icmp eq i8 %t303, 95 - br label %logic.rend792 -logic.rend792: - br label %logic.end785 -logic.end785: - %t305 = phi i1 [ true, %logic.from783 ], [ %t304, %logic.rend792 ] - br label %logic.rend793 -logic.rend793: - br label %logic.end776 -logic.end776: - %t306 = phi i1 [ false, %logic.from774 ], [ %t305, %logic.rend793 ] - br i1 %t306, label %while.body768, label %while.end769 -while.body768: - %t307 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t307) - br label %while.cond767 -while.end769: - br label %endif766 -else765: - br label %while.cond794 -while.cond794: - %t308 = load ptr, ptr %a18 - %t309 = icmp eq ptr %t308, null - br i1 %t309, label %panic797, label %ok798 -panic797: - call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) - unreachable -ok798: - %t310 = getelementptr inbounds %S.lexer.Lexer, ptr %t308, i32 0, i32 2 - %t311 = load i64, ptr %t310 - %t312 = load ptr, ptr %a18 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic799, label %ok800 -panic799: - call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) - unreachable -ok800: - %t314 = getelementptr inbounds %S.lexer.Lexer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = icmp slt i64 %t311, %t316 - br label %logic.from801 -logic.from801: - br i1 %t317, label %logic.rhs802, label %logic.end803 -logic.rhs802: - %t318 = load ptr, ptr %a18 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic804, label %ok805 -panic804: - call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) - unreachable -ok805: - %t320 = getelementptr inbounds %S.lexer.Lexer, ptr %t318, i32 0, i32 0 - %t321 = load ptr, ptr %a18 - %t322 = icmp eq ptr %t321, null - br i1 %t322, label %panic806, label %ok807 -panic806: - call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) - unreachable -ok807: - %t323 = getelementptr inbounds %S.lexer.Lexer, ptr %t321, i32 0, i32 2 - %t324 = load i64, ptr %t323 - %t325 = load { ptr, i64, i64 }, ptr %t320 - %t326 = extractvalue { ptr, i64, i64 } %t325, 1 - %t327 = icmp uge i64 %t324, %t326 - br i1 %t327, label %range808, label %inrange809 -range808: - call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t324, i64 %t326) - unreachable -inrange809: - %t328 = extractvalue { ptr, i64, i64 } %t325, 0 - %t329 = getelementptr inbounds i8, ptr %t328, i64 %t324 - %t330 = load i8, ptr %t329 - %t331 = call i1 @finch.lexer.isDigit(i8 %t330) - br label %logic.from810 -logic.from810: - br i1 %t331, label %logic.end812, label %logic.rhs811 -logic.rhs811: - %t332 = load ptr, ptr %a18 - %t333 = icmp eq ptr %t332, null - br i1 %t333, label %panic813, label %ok814 -panic813: - call void @finch_panic(ptr @.str.449, i64 154, ptr @.str.450) - unreachable -ok814: - %t334 = getelementptr inbounds %S.lexer.Lexer, ptr %t332, i32 0, i32 0 - %t335 = load ptr, ptr %a18 - %t336 = icmp eq ptr %t335, null - br i1 %t336, label %panic815, label %ok816 -panic815: - call void @finch_panic(ptr @.str.451, i64 154, ptr @.str.452) - unreachable -ok816: - %t337 = getelementptr inbounds %S.lexer.Lexer, ptr %t335, i32 0, i32 2 - %t338 = load i64, ptr %t337 - %t339 = load { ptr, i64, i64 }, ptr %t334 - %t340 = extractvalue { ptr, i64, i64 } %t339, 1 - %t341 = icmp uge i64 %t338, %t340 - br i1 %t341, label %range817, label %inrange818 -range817: - call void @finch_panic_index(ptr @.str.453, i64 154, i64 %t338, i64 %t340) - unreachable -inrange818: - %t342 = extractvalue { ptr, i64, i64 } %t339, 0 - %t343 = getelementptr inbounds i8, ptr %t342, i64 %t338 - %t344 = load i8, ptr %t343 - %t345 = icmp eq i8 %t344, 95 - br label %logic.rend819 -logic.rend819: - br label %logic.end812 -logic.end812: - %t346 = phi i1 [ true, %logic.from810 ], [ %t345, %logic.rend819 ] - br label %logic.rend820 -logic.rend820: - br label %logic.end803 -logic.end803: - %t347 = phi i1 [ false, %logic.from801 ], [ %t346, %logic.rend820 ] - br i1 %t347, label %while.body795, label %while.end796 -while.body795: - %t348 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t348) - br label %while.cond794 -while.end796: - %t349 = load ptr, ptr %a18 - %t350 = call i8 @finch.lexer.peek(ptr %t349, i64 0) - %t351 = icmp eq i8 %t350, 46 - br label %logic.from821 -logic.from821: - br i1 %t351, label %logic.rhs822, label %logic.end823 -logic.rhs822: - %t352 = load ptr, ptr %a18 - %t353 = call i8 @finch.lexer.peek(ptr %t352, i64 1) - %t354 = call i1 @finch.lexer.isDigit(i8 %t353) - br label %logic.rend824 -logic.rend824: - br label %logic.end823 -logic.end823: - %t355 = phi i1 [ false, %logic.from821 ], [ %t354, %logic.rend824 ] - br i1 %t355, label %then825, label %endif827 -then825: - %t356 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t357 = load { ptr, i64, i64 }, ptr %t356 - store { ptr, i64, i64 } { ptr @.str.454, i64 5, i64 0 }, ptr %t356 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_drop(ptr %a358) - %t359 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t359) - br label %while.cond828 -while.cond828: - %t360 = load ptr, ptr %a18 - %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic831, label %ok832 -panic831: - call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) - unreachable -ok832: - %t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 2 - %t363 = load i64, ptr %t362 - %t364 = load ptr, ptr %a18 - %t365 = icmp eq ptr %t364, null - br i1 %t365, label %panic833, label %ok834 -panic833: - call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) - unreachable -ok834: - %t366 = getelementptr inbounds %S.lexer.Lexer, ptr %t364, i32 0, i32 0 - %t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1 - %t368 = load i64, ptr %t367 - %t369 = icmp slt i64 %t363, %t368 - br label %logic.from835 -logic.from835: - br i1 %t369, label %logic.rhs836, label %logic.end837 -logic.rhs836: - %t370 = load ptr, ptr %a18 - %t371 = icmp eq ptr %t370, null - br i1 %t371, label %panic838, label %ok839 -panic838: - call void @finch_panic(ptr @.str.459, i64 160, ptr @.str.460) - unreachable -ok839: - %t372 = getelementptr inbounds %S.lexer.Lexer, ptr %t370, i32 0, i32 0 - %t373 = load ptr, ptr %a18 - %t374 = icmp eq ptr %t373, null - br i1 %t374, label %panic840, label %ok841 -panic840: - call void @finch_panic(ptr @.str.461, i64 160, ptr @.str.462) - unreachable -ok841: - %t375 = getelementptr inbounds %S.lexer.Lexer, ptr %t373, i32 0, i32 2 - %t376 = load i64, ptr %t375 - %t377 = load { ptr, i64, i64 }, ptr %t372 - %t378 = extractvalue { ptr, i64, i64 } %t377, 1 - %t379 = icmp uge i64 %t376, %t378 - br i1 %t379, label %range842, label %inrange843 -range842: - call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t376, i64 %t378) - unreachable -inrange843: - %t380 = extractvalue { ptr, i64, i64 } %t377, 0 - %t381 = getelementptr inbounds i8, ptr %t380, i64 %t376 - %t382 = load i8, ptr %t381 - %t383 = call i1 @finch.lexer.isDigit(i8 %t382) - br label %logic.from844 -logic.from844: - br i1 %t383, label %logic.end846, label %logic.rhs845 -logic.rhs845: - %t384 = load ptr, ptr %a18 - %t385 = icmp eq ptr %t384, null - br i1 %t385, label %panic847, label %ok848 -panic847: - call void @finch_panic(ptr @.str.464, i64 160, ptr @.str.465) - unreachable -ok848: - %t386 = getelementptr inbounds %S.lexer.Lexer, ptr %t384, i32 0, i32 0 - %t387 = load ptr, ptr %a18 - %t388 = icmp eq ptr %t387, null - br i1 %t388, label %panic849, label %ok850 -panic849: - call void @finch_panic(ptr @.str.466, i64 160, ptr @.str.467) - unreachable -ok850: - %t389 = getelementptr inbounds %S.lexer.Lexer, ptr %t387, i32 0, i32 2 - %t390 = load i64, ptr %t389 - %t391 = load { ptr, i64, i64 }, ptr %t386 - %t392 = extractvalue { ptr, i64, i64 } %t391, 1 - %t393 = icmp uge i64 %t390, %t392 - br i1 %t393, label %range851, label %inrange852 -range851: - call void @finch_panic_index(ptr @.str.468, i64 160, i64 %t390, i64 %t392) - unreachable -inrange852: - %t394 = extractvalue { ptr, i64, i64 } %t391, 0 - %t395 = getelementptr inbounds i8, ptr %t394, i64 %t390 - %t396 = load i8, ptr %t395 - %t397 = icmp eq i8 %t396, 95 - br label %logic.rend853 -logic.rend853: - br label %logic.end846 -logic.end846: - %t398 = phi i1 [ true, %logic.from844 ], [ %t397, %logic.rend853 ] - br label %logic.rend854 -logic.rend854: - br label %logic.end837 -logic.end837: - %t399 = phi i1 [ false, %logic.from835 ], [ %t398, %logic.rend854 ] - br i1 %t399, label %while.body829, label %while.end830 -while.body829: - %t400 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t400) - br label %while.cond828 -while.end830: - br label %endif827 -endif827: - br label %endif766 -endif766: - %t401 = load ptr, ptr %a18 - %t402 = icmp eq ptr %t401, null - br i1 %t402, label %panic855, label %ok856 -panic855: - call void @finch_panic(ptr @.str.469, i64 165, ptr @.str.470) - unreachable -ok856: - %t403 = getelementptr inbounds %S.lexer.Lexer, ptr %t401, i32 0, i32 0 - %t404 = load { ptr, i64, i64 }, ptr %t403 - store { ptr, i64, i64 } %t404, ptr %a405 - %t407 = load i64, ptr %a177 - %t408 = load ptr, ptr %a18 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic857, label %ok858 -panic857: - call void @finch_panic(ptr @.str.472, i64 165, ptr @.str.473) - unreachable -ok858: - %t410 = getelementptr inbounds %S.lexer.Lexer, ptr %t408, i32 0, i32 2 - %t411 = load i64, ptr %t410 - call void @finch_str_sub(ptr %a406, ptr %a405, i64 %t407, i64 %t411, ptr @.str.471, i64 165) - %t412 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.475, i64 1, i64 0 }, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.476, i64 0, i64 0 }, ptr %a416 - call void @finch_str_replace(ptr %a414, ptr %a413, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t412, ptr %a418 - call void @finch_str_drop(ptr %a418) - %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t417, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - call void @finch_str_drop(ptr %a421) - br label %endif755 -else754: - %t422 = load i8, ptr %a43 - %t423 = icmp eq i8 %t422, 34 - br label %logic.from859 -logic.from859: - br i1 %t423, label %logic.end861, label %logic.rhs860 -logic.rhs860: - %t424 = load i8, ptr %a43 - %t425 = icmp eq i8 %t424, 39 - br label %logic.rend862 -logic.rend862: - br label %logic.end861 -logic.end861: - %t426 = phi i1 [ true, %logic.from859 ], [ %t425, %logic.rend862 ] - br i1 %t426, label %then863, label %else864 -then863: - %t427 = load i8, ptr %a43 - store i8 %t427, ptr %a428 - %t429 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t430 = load { ptr, i64, i64 }, ptr %t429 - store { ptr, i64, i64 } { ptr @.str.477, i64 6, i64 0 }, ptr %t429 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load i8, ptr %a428 - %t433 = icmp eq i8 %t432, 39 - br i1 %t433, label %then866, label %endif868 -then866: - %t434 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t435 = load { ptr, i64, i64 }, ptr %t434 - store { ptr, i64, i64 } { ptr @.str.478, i64 4, i64 0 }, ptr %t434 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif868 -endif868: - %t437 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - br label %while.cond869 -while.cond869: - %t439 = load ptr, ptr %a18 - %t440 = call i8 @finch.lexer.peek(ptr %t439, i64 0) - %t441 = load i8, ptr %a428 - %t442 = icmp ne i8 %t440, %t441 - br i1 %t442, label %while.body870, label %while.end871 -while.body870: - %t443 = load ptr, ptr %a18 - %t444 = call i8 @finch.lexer.peek(ptr %t443, i64 0) - %t445 = trunc i64 0 to i8 - %t446 = icmp eq i8 %t444, %t445 - br label %logic.from872 -logic.from872: - br i1 %t446, label %logic.end874, label %logic.rhs873 -logic.rhs873: - %t447 = load ptr, ptr %a18 - %t448 = call i8 @finch.lexer.peek(ptr %t447, i64 0) - %t449 = icmp eq i8 %t448, 10 - br label %logic.rend875 -logic.rend875: - br label %logic.end874 -logic.end874: - %t450 = phi i1 [ true, %logic.from872 ], [ %t449, %logic.rend875 ] - br i1 %t450, label %then876, label %endif878 -then876: - %t451 = load i8, ptr %a428 - %t452 = icmp eq i8 %t451, 34 - br i1 %t452, label %then879, label %endif881 -then879: - %t453 = load ptr, ptr %a18 - %t454 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t455 = load i64, ptr %t454 - %t456 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t457 = load i64, ptr %t456 - call void @finch.lexer.fail(ptr %t453, i64 %t455, i64 %t457, { ptr, i64, i64 } { ptr @.str.479, i64 34, i64 0 }) - br label %endif881 -endif881: - %t458 = load ptr, ptr %a18 - %t459 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t460 = load i64, ptr %t459 - %t461 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t462 = load i64, ptr %t461 - call void @finch.lexer.fail(ptr %t458, i64 %t460, i64 %t462, { ptr, i64, i64 } { ptr @.str.480, i64 32, i64 0 }) - br label %endif878 -endif878: - %t463 = load ptr, ptr %a18 - %t464 = call i8 @finch.lexer.peek(ptr %t463, i64 0) - store i8 %t464, ptr %a465 - %t466 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t466) - %t467 = load i8, ptr %a465 - %t468 = icmp eq i8 %t467, 92 - br i1 %t468, label %then882, label %endif884 -then882: - %t469 = load ptr, ptr %a18 - %t470 = call i8 @finch.lexer.peek(ptr %t469, i64 0) - store i8 %t470, ptr %a471 - %t472 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t472) - %t473 = load ptr, ptr %a18 - %t474 = load i8, ptr %a471 - %t475 = call i8 @finch.lexer.escape(ptr %t473, i8 %t474) - store i8 %t475, ptr %a465 - br label %endif884 -endif884: - %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - %t477 = load i8, ptr %a465 - call void @finch_str_from_char(ptr %a478, i8 signext %t477) - %t479 = load { ptr, i64, i64 }, ptr %a478 - %t480 = load i64, ptr %t476 - %t481 = add i64 %t480, 1 - call void @finch_arr_reserve(ptr %a438, i64 %t481, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t482 = load ptr, ptr %a438 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i64 %t480 - store { ptr, i64, i64 } %t479, ptr %t483 - store i64 %t481, ptr %t476 - br label %while.cond869 -while.end871: - %t484 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t484) - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.481, i64 0, i64 0 }, ptr %a486 - call void @finch_str_join(ptr %a487, ptr %a438, ptr %a486) - %t488 = load { ptr, i64, i64 }, ptr %a487 - %t489 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t490 = load { ptr, i64, i64 }, ptr %t489 - store { ptr, i64, i64 } %t488, ptr %t489 - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load i8, ptr %a428 - %t493 = icmp eq i8 %t492, 39 - br label %logic.from885 -logic.from885: - br i1 %t493, label %logic.rhs886, label %logic.end887 -logic.rhs886: - %t494 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i32 0, i32 1 - %t496 = load i64, ptr %t495 - %t497 = icmp ne i64 %t496, 1 - br label %logic.rend888 -logic.rend888: - br label %logic.end887 -logic.end887: - %t498 = phi i1 [ false, %logic.from885 ], [ %t497, %logic.rend888 ] - br i1 %t498, label %then889, label %endif891 -then889: - %t499 = load ptr, ptr %a18 - %t500 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t501 = load i64, ptr %t500 - %t502 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t503 = load i64, ptr %t502 - call void @finch.lexer.fail(ptr %t499, i64 %t501, i64 %t503, { ptr, i64, i64 } { ptr @.str.482, i64 44, i64 0 }) - br label %endif891 -endif891: - call void @finch.drop.arr_str(ptr %a438) - br label %endif865 -else864: - %t504 = load ptr, ptr %a18 - %t505 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t504) - store { ptr, i64, i64 } %t505, ptr %a506 - %t507 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t508 = load i64, ptr %t507 - %t509 = icmp eq i64 %t508, 0 - br i1 %t509, label %then892, label %endif894 -then892: - store i64 1, ptr %a510 - %t511 = load i8, ptr %a43 - %t512 = zext i8 %t511 to i64 - %t513 = and i64 %t512, 224 - %t514 = icmp eq i64 %t513, 192 - br i1 %t514, label %then895, label %else896 -then895: - store i64 2, ptr %a510 - br label %endif897 -else896: - %t515 = load i8, ptr %a43 - %t516 = zext i8 %t515 to i64 - %t517 = and i64 %t516, 240 - %t518 = icmp eq i64 %t517, 224 - br i1 %t518, label %then898, label %else899 -then898: - store i64 3, ptr %a510 - br label %endif900 -else899: - %t519 = load i8, ptr %a43 - %t520 = zext i8 %t519 to i64 - %t521 = and i64 %t520, 248 - %t522 = icmp eq i64 %t521, 240 - br i1 %t522, label %then901, label %endif903 -then901: - store i64 4, ptr %a510 - br label %endif903 -endif903: - br label %endif900 -endif900: - br label %endif897 -endif897: - store { ptr, i64, i64 } { ptr @.str.483, i64 0, i64 0 }, ptr %a523 - %t524 = load i8, ptr %a43 - %t525 = zext i8 %t524 to i64 - %t526 = icmp sge i64 %t525, 128 - br i1 %t526, label %then904, label %endif906 -then904: - %t527 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.484, i64 74, i64 0 }, ptr %a523 - store { ptr, i64, i64 } %t527, ptr %a528 - call void @finch_str_drop(ptr %a528) - br label %endif906 -endif906: - %t529 = load ptr, ptr %a18 - %t530 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t531 = load i64, ptr %t530 - %t532 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t533 = load i64, ptr %t532 - %t534 = load ptr, ptr %a18 - %t535 = icmp eq ptr %t534, null - br i1 %t535, label %panic907, label %ok908 -panic907: - call void @finch_panic(ptr @.str.486, i64 211, ptr @.str.487) - unreachable -ok908: - %t536 = getelementptr inbounds %S.lexer.Lexer, ptr %t534, i32 0, i32 0 - %t537 = load { ptr, i64, i64 }, ptr %t536 - store { ptr, i64, i64 } %t537, ptr %a538 - %t540 = load ptr, ptr %a18 - %t541 = icmp eq ptr %t540, null - br i1 %t541, label %panic909, label %ok910 -panic909: - call void @finch_panic(ptr @.str.489, i64 211, ptr @.str.490) - unreachable -ok910: - %t542 = getelementptr inbounds %S.lexer.Lexer, ptr %t540, i32 0, i32 2 - %t543 = load i64, ptr %t542 - %t544 = load ptr, ptr %a18 - %t545 = icmp eq ptr %t544, null - br i1 %t545, label %panic911, label %ok912 -panic911: - call void @finch_panic(ptr @.str.491, i64 211, ptr @.str.492) - unreachable -ok912: - %t546 = getelementptr inbounds %S.lexer.Lexer, ptr %t544, i32 0, i32 2 - %t547 = load i64, ptr %t546 - %t548 = load i64, ptr %a510 - %t549 = add i64 %t547, %t548 - call void @finch_str_sub(ptr %a539, ptr %a538, i64 %t543, i64 %t549, ptr @.str.488, i64 211) - %t550 = load { ptr, i64, i64 }, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.485, i64 22, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - store { ptr, i64, i64 } %t550, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t555, ptr %a557 - store { ptr, i64, i64 } { ptr @.str.493, i64 1, i64 0 }, ptr %a558 - call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) - store { ptr, i64, i64 } %t555, ptr %a559 - call void @finch_str_drop(ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a556 - %t561 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t560, ptr %a563 - store { ptr, i64, i64 } %t561, ptr %a564 - call void @finch_str_concat(ptr %a562, ptr %a563, ptr %a564) - store { ptr, i64, i64 } %t560, ptr %a565 - call void @finch_str_drop(ptr %a565) - %t566 = load { ptr, i64, i64 }, ptr %a562 - call void @finch.lexer.fail(ptr %t529, i64 %t531, i64 %t533, { ptr, i64, i64 } %t566) - store { ptr, i64, i64 } %t566, ptr %a567 - call void @finch_str_drop(ptr %a567) - call void @finch_str_drop(ptr %a523) - br label %endif894 -endif894: - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t569 = load i64, ptr %t568 - store i64 0, ptr %a570 - br label %for.cond913 -for.cond913: - %t571 = load i64, ptr %a570 - %t572 = icmp slt i64 %t571, %t569 - br i1 %t572, label %for.body914, label %for.end916 -for.body914: - %t573 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t573) - br label %for.step915 -for.step915: - %t574 = load i64, ptr %a570 - %t575 = add i64 %t574, 1 - store i64 %t575, ptr %a570 - br label %for.cond913 -for.end916: - %t576 = load { ptr, i64, i64 }, ptr %a506 - %t577 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t576, ptr %a578 - call void @finch_str_copy(ptr %a579, ptr %a578) - %t580 = load { ptr, i64, i64 }, ptr %a579 - %t581 = load { ptr, i64, i64 }, ptr %t577 - store { ptr, i64, i64 } %t580, ptr %t577 - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a506 - %t584 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t583, ptr %a585 - call void @finch_str_copy(ptr %a586, ptr %a585) - %t587 = load { ptr, i64, i64 }, ptr %a586 - %t588 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t587, ptr %t584 - store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch_str_drop(ptr %a589) - call void @finch_str_drop(ptr %a506) - br label %endif865 -endif865: - br label %endif755 -endif755: - br label %endif718 -endif718: - %t590 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t591 = load %S.lexer.Token, ptr %a169 - store %S.lexer.Token %t591, ptr %a592 - call void @finch.copy.S_lexer_Token(ptr %a593, ptr %a592) - %t594 = load %S.lexer.Token, ptr %a593 - %t595 = load i64, ptr %t590 - %t596 = add i64 %t595, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t596, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t597 = load ptr, ptr %a19 - %t598 = getelementptr inbounds %S.lexer.Token, ptr %t597, i64 %t595 - store %S.lexer.Token %t594, ptr %t598 - store i64 %t596, ptr %t590 - call void @finch.drop.S_lexer_Token(ptr %a169) - br label %while.cond615 -while.end617: - %t599 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t600 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.494, i64 3, i64 0 }, 0 - %t601 = insertvalue %S.lexer.Token %t600, { ptr, i64, i64 } { ptr @.str.495, i64 0, i64 0 }, 1 - %t602 = load ptr, ptr %a18 - %t603 = icmp eq ptr %t602, null - br i1 %t603, label %panic917, label %ok918 -panic917: - call void @finch_panic(ptr @.str.496, i64 221, ptr @.str.497) - unreachable -ok918: - %t604 = getelementptr inbounds %S.lexer.Lexer, ptr %t602, i32 0, i32 3 - %t605 = load i64, ptr %t604 - %t606 = insertvalue %S.lexer.Token %t601, i64 %t605, 2 - %t607 = load ptr, ptr %a18 - %t608 = icmp eq ptr %t607, null - br i1 %t608, label %panic919, label %ok920 -panic919: - call void @finch_panic(ptr @.str.498, i64 221, ptr @.str.499) - unreachable -ok920: - %t609 = getelementptr inbounds %S.lexer.Lexer, ptr %t607, i32 0, i32 4 - %t610 = load i64, ptr %t609 - %t611 = insertvalue %S.lexer.Token %t606, i64 %t610, 3 - %t612 = insertvalue %S.lexer.Token %t611, i1 true, 4 - %t613 = load i64, ptr %t599 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t614, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a19 - %t616 = getelementptr inbounds %S.lexer.Token, ptr %t615, i64 %t613 - store %S.lexer.Token %t612, ptr %t616 - store i64 %t614, ptr %t599 - %t617 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.S_lexer_Lexer(ptr %a17) - ret { ptr, i64, i64 } %t617 -} - -define internal %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %p0) { -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.500, i64 5, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 - 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.501, i64 3, i64 0 }, 0 - store %S.ast.Type %t3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %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 - ret %S.ast.Type %t25 -} - -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.502, i64 3, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 %then921, label %endif923 -then921: - ret i1 false -endif923: - %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.503, i64 6, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp ne i32 %t15, 0 - br label %logic.from924 -logic.from924: - br i1 %t16, label %logic.end926, label %logic.rhs925 -logic.rhs925: - %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.504, i64 5, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br label %logic.rend927 -logic.rend927: - br label %logic.end926 -logic.end926: - %t23 = phi i1 [ true, %logic.from924 ], [ %t22, %logic.rend927 ] - br label %logic.from928 -logic.from928: - br i1 %t23, label %logic.end930, label %logic.rhs929 -logic.rhs929: - %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.505, i64 4, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br label %logic.rend931 -logic.rend931: - br label %logic.end930 -logic.end930: - %t30 = phi i1 [ true, %logic.from928 ], [ %t29, %logic.rend931 ] - br i1 %t30, label %then932, label %endif934 -then932: - %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.from935 -logic.from935: - br i1 %t38, label %logic.rhs936, label %logic.end937 -logic.rhs936: - %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.rend938 -logic.rend938: - br label %logic.end937 -logic.end937: - %t47 = phi i1 [ false, %logic.from935 ], [ %t46, %logic.rend938 ] - ret i1 %t47 -endif934: - %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.506, i64 5, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br label %logic.from939 -logic.from939: - br i1 %t53, label %logic.rhs940, label %logic.end941 -logic.rhs940: - %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.rend942 -logic.rend942: - br label %logic.end941 -logic.end941: - %t59 = phi i1 [ false, %logic.from939 ], [ %t58, %logic.rend942 ] - br i1 %t59, label %then943, label %endif945 -then943: - ret i1 false -endif945: - %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.507, i64 5, i64 0 }, ptr %a63 - %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) - %t65 = icmp ne i32 %t64, 0 - br label %logic.from946 -logic.from946: - br i1 %t65, label %logic.end948, label %logic.rhs947 -logic.rhs947: - %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.508, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br label %logic.rend949 -logic.rend949: - br label %logic.end948 -logic.end948: - %t72 = phi i1 [ true, %logic.from946 ], [ %t71, %logic.rend949 ] - br label %logic.from950 -logic.from950: - br i1 %t72, label %logic.end952, label %logic.rhs951 -logic.rhs951: - %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.509, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br label %logic.rend953 -logic.rend953: - br label %logic.end952 -logic.end952: - %t79 = phi i1 [ true, %logic.from950 ], [ %t78, %logic.rend953 ] - br label %logic.from954 -logic.from954: - br i1 %t79, label %logic.end956, label %logic.rhs955 -logic.rhs955: - %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.510, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.rend957 -logic.rend957: - br label %logic.end956 -logic.end956: - %t86 = phi i1 [ true, %logic.from954 ], [ %t85, %logic.rend957 ] - br i1 %t86, label %then958, label %endif960 -then958: - %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 %then961, label %endif963 -then961: - ret i1 false -endif963: - %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.cond964 -for.cond964: - %t98 = load i64, ptr %a97 - %t99 = icmp slt i64 %t98, %t96 - br i1 %t99, label %for.body965, label %for.end967 -for.body965: - %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 %range968, label %inrange969 -range968: - call void @finch_panic_index(ptr @.str.511, i64 54, i64 %t101, i64 %t103) - unreachable -inrange969: - %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 %range970, label %inrange971 -range970: - call void @finch_panic_index(ptr @.str.512, i64 54, i64 %t109, i64 %t111) - unreachable -inrange971: - %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 %then972, label %endif974 -then972: - ret i1 false -endif974: - br label %for.step966 -for.step966: - %t118 = load i64, ptr %a97 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %a97 - br label %for.cond964 -for.end967: - ret i1 true -endif960: - 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 - %a19 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.513, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then975, label %endif977 -then975: - %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 %range978, label %inrange979 -range978: - call void @finch_panic_index(ptr @.str.515, i64 65, i64 0, i64 %t10) - unreachable -inrange979: - %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.514, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif977: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.516, i64 5, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %then980, label %endif982 -then980: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.517, i64 1, i64 0 }, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.518, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 0, %t43 - br i1 %t44, label %range983, label %inrange984 -range983: - call void @finch_panic_index(ptr @.str.519, i64 68, i64 0, i64 %t43) - unreachable -inrange984: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 - %t47 = load %S.ast.Type, ptr %t46 - %t48 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t47) - store { ptr, i64, i64 } %t40, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t40, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - ret { ptr, i64, i64 } %t54 -endif982: - %t55 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.520, i64 3, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then985, label %endif987 -then985: - %t61 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 0, %t63 - br i1 %t64, label %range988, label %inrange989 -range988: - call void @finch_panic_index(ptr @.str.522, i64 71, i64 0, i64 %t63) - unreachable -inrange989: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds %S.ast.Type, ptr %t65, i64 0 - %t67 = load %S.ast.Type, ptr %t66 - %t68 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.521, i64 4, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.523, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = extractvalue { ptr, i64, i64 } %t80, 1 - %t82 = icmp uge i64 1, %t81 - br i1 %t82, label %range990, label %inrange991 -range990: - call void @finch_panic_index(ptr @.str.524, i64 71, i64 1, i64 %t81) - unreachable -inrange991: - %t83 = extractvalue { ptr, i64, i64 } %t80, 0 - %t84 = getelementptr inbounds %S.ast.Type, ptr %t83, i64 1 - %t85 = load %S.ast.Type, ptr %t84 - %t86 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t85) - store { ptr, i64, i64 } %t78, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t78, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - ret { ptr, i64, i64 } %t92 -endif987: - %t93 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.525, i64 3, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then992, label %endif994 -then992: - %t99 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = icmp eq i64 %t101, 0 - br i1 %t102, label %then995, label %endif997 -then995: - ret { ptr, i64, i64 } { ptr @.str.526, i64 3, i64 0 } -endif997: - %t103 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %t103 - %t105 = extractvalue { ptr, i64, i64 } %t104, 1 - %t106 = icmp uge i64 0, %t105 - br i1 %t106, label %range998, label %inrange999 -range998: - call void @finch_panic_index(ptr @.str.528, i64 77, i64 0, i64 %t105) - unreachable -inrange999: - %t107 = extractvalue { ptr, i64, i64 } %t104, 0 - %t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i64 0 - %t109 = load %S.ast.Type, ptr %t108 - %t110 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t109) - store { ptr, i64, i64 } { ptr @.str.527, i64 4, i64 0 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t120 -endif994: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t122, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.530, i64 6, i64 0 }, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.from1000 -logic.from1000: - br i1 %t126, label %logic.end1002, label %logic.rhs1001 -logic.rhs1001: - %t127 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.531, i64 5, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend1003 -logic.rend1003: - br label %logic.end1002 -logic.end1002: - %t133 = phi i1 [ true, %logic.from1000 ], [ %t132, %logic.rend1003 ] - br label %logic.from1004 -logic.from1004: - br i1 %t133, label %logic.end1006, label %logic.rhs1005 -logic.rhs1005: - %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.532, i64 4, i64 0 }, ptr %a137 - %t138 = call i32 @finch_str_eq(ptr %a136, ptr %a137) - %t139 = icmp ne i32 %t138, 0 - br label %logic.rend1007 -logic.rend1007: - br label %logic.end1006 -logic.end1006: - %t140 = phi i1 [ true, %logic.from1004 ], [ %t139, %logic.rend1007 ] - br i1 %t140, label %then1008, label %endif1010 -then1008: - %t141 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = icmp sgt i64 %t143, 0 - br i1 %t144, label %then1011, label %endif1013 -then1011: - %t145 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t146 = load { ptr, i64, i64 }, ptr %t145 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.533, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a147 - %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t150, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t150, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - ret { ptr, i64, i64 } %t157 -endif1013: - %t158 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - call void @finch_str_copy(ptr %a161, ptr %a160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - ret { ptr, i64, i64 } %t162 -endif1010: - %t163 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t164 = load { ptr, i64, i64 }, ptr %t163 - store { ptr, i64, i64 } %t164, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.534, i64 4, i64 0 }, ptr %a166 - %t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166) - %t168 = icmp ne i32 %t167, 0 - br i1 %t168, label %then1014, label %endif1016 -then1014: - ret { ptr, i64, i64 } { ptr @.str.535, i64 7, i64 0 } -endif1016: - %t169 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - ret { ptr, i64, i64 } %t173 -} - -define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.lexer.Token %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1017, label %ok1018 -panic1017: - call void @finch_panic(ptr @.str.536, i64 14, ptr @.str.537) - unreachable -ok1018: - %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.538, i64 1, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a8 - %t12 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 2 - %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) - store { ptr, i64, i64 } %t11, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.539, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t26, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t26, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.540, i64 9, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t41, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = trunc i64 %t48 to i32 - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = icmp eq ptr %t50, null - %t52 = select i1 %t51, ptr @.str.541, ptr %t50 - %t53 = call i32 (ptr, ...) @printf(ptr @.str.542, i32 %t49, ptr %t52) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = call i32 (ptr, ...) @printf(ptr @.str.543) - %t56 = trunc i64 1 to i32 - %t57 = call i32 @fflush(ptr null) - call void @exit(i32 %t56) - ret void -} - -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 %panic1019, label %ok1020 -panic1019: - call void @finch_panic(ptr @.str.544, i64 19, ptr @.str.545) - unreachable -ok1020: - %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 %panic1021, label %ok1022 -panic1021: - call void @finch_panic(ptr @.str.546, i64 19, ptr @.str.547) - unreachable -ok1022: - %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 %range1023, label %inrange1024 -range1023: - call void @finch_panic_index(ptr @.str.548, i64 19, i64 %t8, i64 %t10) - unreachable -inrange1024: - %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 %panic1025, label %ok1026 -panic1025: - call void @finch_panic(ptr @.str.549, i64 23, ptr @.str.550) - unreachable -ok1026: - %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 %panic1027, label %ok1028 -panic1027: - call void @finch_panic(ptr @.str.551, i64 23, ptr @.str.552) - unreachable -ok1028: - %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 %range1029, label %inrange1030 -range1029: - call void @finch_panic_index(ptr @.str.553, i64 23, i64 %t8, i64 %t10) - unreachable -inrange1030: - %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 %panic1031, label %ok1032 -panic1031: - call void @finch_panic(ptr @.str.554, i64 27, ptr @.str.555) - unreachable -ok1032: - %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 %panic1033, label %ok1034 -panic1033: - call void @finch_panic(ptr @.str.556, i64 28, ptr @.str.557) - unreachable -ok1034: - %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 %then1035, label %endif1037 -then1035: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic1038, label %ok1039 -panic1038: - call void @finch_panic(ptr @.str.558, i64 29, ptr @.str.559) - unreachable -ok1039: - %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 %endif1037 -endif1037: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic1040, label %ok1041 -panic1040: - call void @finch_panic(ptr @.str.560, i64 31, ptr @.str.561) - unreachable -ok1041: - %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 %range1042, label %inrange1043 -range1042: - call void @finch_panic_index(ptr @.str.562, i64 31, i64 %t26, i64 %t28) - unreachable -inrange1043: - %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 %panic1044, label %ok1045 -panic1044: - call void @finch_panic(ptr @.str.563, i64 35, ptr @.str.564) - unreachable -ok1045: - %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 %panic1046, label %ok1047 -panic1046: - call void @finch_panic(ptr @.str.565, i64 35, ptr @.str.566) - unreachable -ok1047: - %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 %range1048, label %inrange1049 -range1048: - call void @finch_panic_index(ptr @.str.567, i64 35, i64 %t9, i64 %t11) - unreachable -inrange1049: - %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 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1050, label %ok1051 -panic1050: - call void @finch_panic(ptr @.str.568, i64 39, ptr @.str.569) - unreachable -ok1051: - %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 %panic1052, label %ok1053 -panic1052: - call void @finch_panic(ptr @.str.570, i64 39, ptr @.str.571) - unreachable -ok1053: - %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 %range1054, label %inrange1055 -range1054: - call void @finch_panic_index(ptr @.str.572, i64 39, i64 %t8, i64 %t10) - unreachable -inrange1055: - %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 %panic1056, label %ok1057 -panic1056: - call void @finch_panic(ptr @.str.573, i64 40, ptr @.str.574) - unreachable -ok1057: - %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 - ret %S.lexer.Token %t24 -} - -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 %then1058, label %endif1060 -then1058: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1061, label %ok1062 -panic1061: - call void @finch_panic(ptr @.str.575, i64 46, ptr @.str.576) - unreachable -ok1062: - %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 -endif1060: - 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 - %a17 = 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 - %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 - %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 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - store %S.lexer.Token %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.577, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then1063, label %endif1065 -then1063: - %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.578, i64 1, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.579, i64 1, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - ret { ptr, i64, i64 } %t18 -endif1065: - %t19 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.580, i64 3, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br i1 %t24, label %then1066, label %endif1068 -then1066: - ret { ptr, i64, i64 } { ptr @.str.581, i64 11, i64 0 } -endif1068: - %t25 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.582, i64 3, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - br label %logic.from1069 -logic.from1069: - br i1 %t30, label %logic.end1071, label %logic.rhs1070 -logic.rhs1070: - %t31 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.583, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.rend1072 -logic.rend1072: - br label %logic.end1071 -logic.end1071: - %t37 = phi i1 [ true, %logic.from1069 ], [ %t36, %logic.rend1072 ] - br i1 %t37, label %then1073, label %endif1075 -then1073: - ret { ptr, i64, i64 } { ptr @.str.584, i64 8, i64 0 } -endif1075: - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t39 = load { ptr, i64, i64 }, ptr %t38 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.585, i64 6, i64 0 }, ptr %a41 - %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) - %t43 = icmp ne i32 %t42, 0 - br i1 %t43, label %then1076, label %endif1078 -then1076: - ret { ptr, i64, i64 } { ptr @.str.586, i64 8, i64 0 } -endif1078: - %t44 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.587, i64 4, i64 0 }, ptr %a47 - %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - br i1 %t49, label %then1079, label %endif1081 -then1079: - ret { ptr, i64, i64 } { ptr @.str.588, i64 6, i64 0 } -endif1081: - %t50 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t51 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } { ptr @.str.589, i64 1, i64 0 }, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.590, i64 1, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - ret { ptr, i64, i64 } %t60 -} - -define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then1082, label %endif1084 -then1082: - %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.591, i64 9, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.592, i64 8, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21) - %t23 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t22) - store %S.lexer.Token %t22, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a26 - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t20, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t23, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t10, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1084 -endif1084: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - ret %S.lexer.Token %t34 -} - -define internal i1 @finch.parser.sameLine(ptr %p0) { -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 %panic1085, label %ok1086 -panic1085: - call void @finch_panic(ptr @.str.593, i64 79, ptr @.str.594) - unreachable -ok1086: - %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.from1087 -logic.from1087: - br i1 %t6, label %logic.end1089, label %logic.rhs1088 -logic.rhs1088: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1090, label %ok1091 -panic1090: - call void @finch_panic(ptr @.str.595, i64 79, ptr @.str.596) - unreachable -ok1091: - %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 %panic1092, label %ok1093 -panic1092: - call void @finch_panic(ptr @.str.597, i64 79, ptr @.str.598) - unreachable -ok1093: - %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 %range1094, label %inrange1095 -range1094: - call void @finch_panic_index(ptr @.str.599, i64 79, i64 %t13, i64 %t15) - unreachable -inrange1095: - %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.rend1096 -logic.rend1096: - br label %logic.end1089 -logic.end1089: - %t22 = phi i1 [ true, %logic.from1087 ], [ %t21, %logic.rend1096 ] - 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 %panic1097, label %ok1098 -panic1097: - call void @finch_panic(ptr @.str.600, i64 83, ptr @.str.601) - unreachable -ok1098: - %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 %panic1099, label %ok1100 -panic1099: - call void @finch_panic(ptr @.str.602, i64 83, ptr @.str.603) - unreachable -ok1100: - %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 %range1101, label %inrange1102 -range1101: - call void @finch_panic_index(ptr @.str.604, i64 83, i64 %t9, i64 %t11) - unreachable -inrange1102: - %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 %panic1103, label %ok1104 -panic1103: - call void @finch_panic(ptr @.str.605, i64 84, ptr @.str.606) - unreachable -ok1104: - %t33 = getelementptr inbounds %S.parser.Parser, ptr %t31, i32 0, i32 3 - %t34 = load i64, ptr %t33 - %t35 = insertvalue %S.ast.Node %t30, i64 %t34, 13 - call void @finch.drop.S_lexer_Token(ptr %a19) - ret %S.ast.Node %t35 -} - -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.607, i64 3, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.608, i64 5, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.609, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.610, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.613, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.614, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.615, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.616, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.617, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.618, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.619, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.620, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.621, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.622, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - 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.cond1105 -find.cond1105: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body1106, label %find.end1109 -find.body1106: - %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.hit1107, label %find.next1108 -find.hit1107: - store i64 %t30, ptr %a26 - br label %find.end1109 -find.next1108: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond1105 -find.end1109: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - call void @finch.drop.arr_str(ptr %a23) - ret i1 %t40 -} - -define internal %S.ast.Type @finch.parser.parseType(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.lexer.Token, align 16 - %a10 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.lexer.Token, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a77 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.lexer.Token, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca %S.lexer.Token, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca %S.lexer.Token, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca %S.lexer.Token, align 16 - %a165 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.623, i64 1, i64 0 }) - br i1 %t3, label %then1110, label %endif1112 -then1110: - %t4 = load ptr, ptr %a1 - %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.624, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.625, i64 36, i64 0 }) - store %S.lexer.Token %t5, ptr %a6 - call void @finch.drop.S_lexer_Token(ptr %a6) - %t7 = load ptr, ptr %a1 - %t8 = call %S.ast.Type @finch.parser.parseType(ptr %t7) - %t9 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t8) - store %S.ast.Type %t8, ptr %a10 - call void @finch.drop.S_ast_Type(ptr %a10) - ret %S.ast.Type %t9 -endif1112: - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.626, i64 5, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1113, label %endif1115 -then1113: - %t14 = load ptr, ptr %a1 - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.cur(ptr %t15) - %t17 = load ptr, ptr %a1 - %t18 = call %S.lexer.Token @finch.parser.cur(ptr %t17) - %t19 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t18) - store %S.lexer.Token %t18, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - store { ptr, i64, i64 } { ptr @.str.627, i64 11, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.628, i64 56, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.parser.fail(ptr %t14, %S.lexer.Token %t16, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t16, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1115 -endif1115: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.629, i64 3, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br label %logic.from1116 -logic.from1116: - br i1 %t45, label %logic.rhs1117, label %logic.end1118 -logic.rhs1117: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }) - br label %logic.rend1119 -logic.rend1119: - br label %logic.end1118 -logic.end1118: - %t48 = phi i1 [ false, %logic.from1116 ], [ %t47, %logic.rend1119 ] - br i1 %t48, label %then1120, label %endif1122 -then1120: - %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) - store %S.lexer.Token %t50, ptr %a51 - call void @finch.drop.S_lexer_Token(ptr %a51) - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - store %S.ast.Type %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.expect(ptr %t55, { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.632, i64 39, i64 0 }) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = load %S.ast.Type, ptr %a54 - %t59 = load ptr, ptr %a1 - %t60 = call %S.ast.Type @finch.parser.parseType(ptr %t59) - %t61 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t58, %S.ast.Type %t60) - store %S.ast.Type %t60, ptr %a62 - call void @finch.drop.S_ast_Type(ptr %a62) - call void @finch.drop.S_ast_Type(ptr %a54) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t61 -endif1122: - %t63 = load { ptr, i64, i64 }, ptr %a40 - %t64 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t63) - br i1 %t64, label %then1123, label %endif1125 -then1123: - %t65 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.633, i64 3, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.from1126 -logic.from1126: - br i1 %t69, label %logic.rhs1127, label %logic.end1128 -logic.rhs1127: - %t70 = load ptr, ptr %a1 - %t71 = call i1 @finch.parser.accept(ptr %t70, { ptr, i64, i64 } { ptr @.str.634, i64 1, i64 0 }) - br label %logic.rend1129 -logic.rend1129: - br label %logic.end1128 -logic.end1128: - %t72 = phi i1 [ false, %logic.from1126 ], [ %t71, %logic.rend1129 ] - br i1 %t72, label %then1130, label %endif1132 -then1130: - %t73 = load ptr, ptr %a1 - %t74 = call %S.ast.Type @finch.parser.parseType(ptr %t73) - %t75 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t74) - store %S.ast.Type %t74, ptr %a76 - call void @finch.drop.S_ast_Type(ptr %a76) - store %S.ast.Type %t75, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.expect(ptr %t78, { ptr, i64, i64 } { ptr @.str.635, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.636, i64 3, i64 0 }) - store %S.lexer.Token %t79, ptr %a80 - call void @finch.drop.S_lexer_Token(ptr %a80) - %t81 = load %S.ast.Type, ptr %a77 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t81 -endif1132: - %t82 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.637, i64 3, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then1133, label %endif1135 -then1133: - %t87 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.638, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t87 -endif1135: - %t88 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.639, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then1136, label %endif1138 -then1136: - %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t93 -endif1138: - %t94 = load { ptr, i64, i64 }, ptr %a40 - %t95 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t94) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t95 -endif1125: - %t96 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.641, i64 5, i64 0 }, 0 - %t97 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = insertvalue %S.ast.Type %t96, { ptr, i64, i64 } %t100, 2 - store %S.ast.Type %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.at(ptr %t103, { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }) - br label %logic.from1139 -logic.from1139: - br i1 %t104, label %logic.rhs1140, label %logic.end1141 -logic.rhs1140: - %t105 = load ptr, ptr %a1 - %t106 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t105, i64 1) - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.643, i64 5, i64 0 }, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - br label %logic.rend1142 -logic.rend1142: - br label %logic.end1141 -logic.end1141: - %t112 = phi i1 [ false, %logic.from1139 ], [ %t110, %logic.rend1142 ] - br i1 %t112, label %then1143, label %endif1145 -then1143: - %t113 = load ptr, ptr %a1 - %t114 = call %S.lexer.Token @finch.parser.next(ptr %t113) - store %S.lexer.Token %t114, ptr %a115 - call void @finch.drop.S_lexer_Token(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a40 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 3 - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t120, ptr %t117 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load ptr, ptr %a1 - %t124 = call %S.lexer.Token @finch.parser.next(ptr %t123) - %t125 = extractvalue %S.lexer.Token %t124, 1 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - store %S.lexer.Token %t124, ptr %a129 - call void @finch.drop.S_lexer_Token(ptr %a129) - %t130 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t128, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %endif1145 -endif1145: - %t133 = load ptr, ptr %a1 - %t134 = call i1 @finch.parser.at(ptr %t133, { ptr, i64, i64 } { ptr @.str.644, i64 1, i64 0 }) - br label %logic.from1146 -logic.from1146: - br i1 %t134, label %logic.rhs1147, label %logic.end1148 -logic.rhs1147: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1149 -logic.rend1149: - br label %logic.end1148 -logic.end1148: - %t140 = phi i1 [ false, %logic.from1146 ], [ %t139, %logic.rend1149 ] - br label %logic.from1150 -logic.from1150: - br i1 %t140, label %logic.rhs1151, label %logic.end1152 -logic.rhs1151: - %t141 = load ptr, ptr %a1 - %t142 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t141, i64 1) - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.645, i64 1, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) - %t146 = icmp eq i32 %t145, 0 - store { ptr, i64, i64 } %t142, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %logic.rend1153 -logic.rend1153: - br label %logic.end1152 -logic.end1152: - %t148 = phi i1 [ false, %logic.from1150 ], [ %t146, %logic.rend1153 ] - br i1 %t148, label %then1154, label %endif1156 -then1154: - %t149 = load ptr, ptr %a1 - %t150 = call %S.lexer.Token @finch.parser.next(ptr %t149) - store %S.lexer.Token %t150, ptr %a151 - call void @finch.drop.S_lexer_Token(ptr %a151) - br label %while.cond1157 -while.cond1157: - br label %while.body1158 -while.body1158: - %t152 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 1 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 - %t154 = load ptr, ptr %a1 - %t155 = call %S.ast.Type @finch.parser.parseType(ptr %t154) - %t156 = load i64, ptr %t153 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t152, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t152 - %t159 = getelementptr inbounds %S.ast.Type, ptr %t158, i64 %t156 - store %S.ast.Type %t155, ptr %t159 - store i64 %t157, ptr %t153 - %t160 = load ptr, ptr %a1 - %t161 = call i1 @finch.parser.accept(ptr %t160, { ptr, i64, i64 } { ptr @.str.646, i64 1, i64 0 }) - %t162 = xor i1 %t161, true - br i1 %t162, label %then1160, label %endif1162 -then1160: - br label %while.end1159 -endif1162: - br label %while.cond1157 -while.end1159: - %t163 = load ptr, ptr %a1 - %t164 = call %S.lexer.Token @finch.parser.expect(ptr %t163, { ptr, i64, i64 } { ptr @.str.647, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.648, i64 28, i64 0 }) - store %S.lexer.Token %t164, ptr %a165 - call void @finch.drop.S_lexer_Token(ptr %a165) - br label %endif1156 -endif1156: - %t166 = load %S.ast.Type, ptr %a102 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t166 -} - -define internal i1 @finch.parser.genericDeclAhead(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a27 = alloca i64, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.649, i64 5, i64 0 }) - %t4 = xor i1 %t3, true - br label %logic.from1163 -logic.from1163: - br i1 %t4, label %logic.end1165, label %logic.rhs1164 -logic.rhs1164: - %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.650, i64 1, i64 0 }, ptr %a8 - %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) - %t10 = icmp eq i32 %t9, 0 - store { ptr, i64, i64 } %t6, ptr %a11 - call void @finch_str_drop(ptr %a11) - br label %logic.rend1166 -logic.rend1166: - br label %logic.end1165 -logic.end1165: - %t12 = phi i1 [ true, %logic.from1163 ], [ %t10, %logic.rend1166 ] - br label %logic.from1167 -logic.from1167: - br i1 %t12, label %logic.end1169, label %logic.rhs1168 -logic.rhs1168: - %t13 = load ptr, ptr %a1 - %t14 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t13, i64 2) - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.651, i64 1, i64 0 }, ptr %a16 - %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) - %t18 = icmp ne i32 %t17, 0 - store { ptr, i64, i64 } %t14, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %logic.rend1170 -logic.rend1170: - br label %logic.end1169 -logic.end1169: - %t20 = phi i1 [ true, %logic.from1167 ], [ %t18, %logic.rend1170 ] - br i1 %t20, label %then1171, label %endif1173 -then1171: - ret i1 false -endif1173: - store i64 0, ptr %a21 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1174, label %ok1175 -panic1174: - call void @finch_panic(ptr @.str.652, i64 148, ptr @.str.653) - unreachable -ok1175: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a27 - br label %while.cond1176 -while.cond1176: - %t28 = load i64, ptr %a27 - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic1179, label %ok1180 -panic1179: - call void @finch_panic(ptr @.str.654, i64 149, ptr @.str.655) - unreachable -ok1180: - %t31 = getelementptr inbounds %S.parser.Parser, ptr %t29, i32 0, i32 0 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = icmp slt i64 %t28, %t33 - br i1 %t34, label %while.body1177, label %while.end1178 -while.body1177: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1181, label %ok1182 -panic1181: - call void @finch_panic(ptr @.str.656, i64 150, ptr @.str.657) - unreachable -ok1182: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 0 - %t38 = load i64, ptr %a27 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range1183, label %inrange1184 -range1183: - call void @finch_panic_index(ptr @.str.658, i64 150, i64 %t38, i64 %t40) - unreachable -inrange1184: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds %S.lexer.Token, ptr %t42, i64 %t38 - %t44 = getelementptr inbounds %S.lexer.Token, ptr %t43, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_copy(ptr %a47, ptr %a46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t48, ptr %a49 - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.659, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1185, label %else1186 -then1185: - %t55 = load i64, ptr %a21 - %t56 = add i64 %t55, 1 - store i64 %t56, ptr %a21 - br label %endif1187 -else1186: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.660, i64 1, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br i1 %t61, label %then1188, label %else1189 -then1188: - %t62 = load i64, ptr %a21 - %t63 = sub i64 %t62, 1 - store i64 %t63, ptr %a21 - %t64 = load i64, ptr %a21 - %t65 = icmp eq i64 %t64, 0 - br i1 %t65, label %then1191, label %endif1193 -then1191: - %t66 = load i64, ptr %a27 - %t67 = add i64 %t66, 1 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic1194, label %ok1195 -panic1194: - call void @finch_panic(ptr @.str.661, i64 156, ptr @.str.662) - unreachable -ok1195: - %t70 = getelementptr inbounds %S.parser.Parser, ptr %t68, i32 0, i32 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = icmp slt i64 %t67, %t72 - br label %logic.from1196 -logic.from1196: - br i1 %t73, label %logic.rhs1197, label %logic.end1198 -logic.rhs1197: - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic1199, label %ok1200 -panic1199: - call void @finch_panic(ptr @.str.663, i64 156, ptr @.str.664) - unreachable -ok1200: - %t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 0 - %t77 = load i64, ptr %a27 - %t78 = add i64 %t77, 1 - %t79 = load { ptr, i64, i64 }, ptr %t76 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range1201, label %inrange1202 -range1201: - call void @finch_panic_index(ptr @.str.665, i64 156, i64 %t78, i64 %t80) - unreachable -inrange1202: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds %S.lexer.Token, ptr %t82, i64 %t78 - %t84 = getelementptr inbounds %S.lexer.Token, ptr %t83, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.666, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.rend1203 -logic.rend1203: - br label %logic.end1198 -logic.end1198: - %t90 = phi i1 [ false, %logic.from1196 ], [ %t89, %logic.rend1203 ] - br label %logic.from1204 -logic.from1204: - br i1 %t90, label %logic.rhs1205, label %logic.end1206 -logic.rhs1205: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic1207, label %ok1208 -panic1207: - call void @finch_panic(ptr @.str.667, i64 156, ptr @.str.668) - unreachable -ok1208: - %t93 = getelementptr inbounds %S.parser.Parser, ptr %t91, i32 0, i32 0 - %t94 = load i64, ptr %a27 - %t95 = add i64 %t94, 1 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range1209, label %inrange1210 -range1209: - call void @finch_panic_index(ptr @.str.669, i64 156, i64 %t95, i64 %t97) - unreachable -inrange1210: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds %S.lexer.Token, ptr %t99, i64 %t95 - %t101 = getelementptr inbounds %S.lexer.Token, ptr %t100, i32 0, i32 4 - %t102 = load i1, ptr %t101 - %t103 = xor i1 %t102, true - br label %logic.rend1211 -logic.rend1211: - br label %logic.end1206 -logic.end1206: - %t104 = phi i1 [ false, %logic.from1204 ], [ %t103, %logic.rend1211 ] - call void @finch_str_drop(ptr %a49) - ret i1 %t104 -endif1193: - br label %endif1190 -else1189: - %t105 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.670, i64 3, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.from1212 -logic.from1212: - br i1 %t109, label %logic.end1214, label %logic.rhs1213 -logic.rhs1213: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic1215, label %ok1216 -panic1215: - call void @finch_panic(ptr @.str.671, i64 158, ptr @.str.672) - unreachable -ok1216: - %t112 = getelementptr inbounds %S.parser.Parser, ptr %t110, i32 0, i32 0 - %t113 = load i64, ptr %a27 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range1217, label %inrange1218 -range1217: - call void @finch_panic_index(ptr @.str.673, i64 158, i64 %t113, i64 %t115) - unreachable -inrange1218: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.lexer.Token, ptr %t117, i64 %t113 - %t119 = getelementptr inbounds %S.lexer.Token, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.from1219 -logic.from1219: - br i1 %t120, label %logic.rhs1220, label %logic.end1221 -logic.rhs1220: - %t121 = load i64, ptr %a21 - %t122 = icmp eq i64 %t121, 0 - br label %logic.rend1222 -logic.rend1222: - br label %logic.end1221 -logic.end1221: - %t123 = phi i1 [ false, %logic.from1219 ], [ %t122, %logic.rend1222 ] - br label %logic.rend1223 -logic.rend1223: - br label %logic.end1214 -logic.end1214: - %t124 = phi i1 [ true, %logic.from1212 ], [ %t123, %logic.rend1223 ] - br i1 %t124, label %then1224, label %endif1226 -then1224: - call void @finch_str_drop(ptr %a49) - ret i1 false -endif1226: - br label %endif1190 -endif1190: - br label %endif1187 -endif1187: - %t125 = load i64, ptr %a27 - %t126 = add i64 %t125, 1 - store i64 %t126, ptr %a27 - call void @finch_str_drop(ptr %a49) - br label %while.cond1176 -while.end1178: - 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 %panic1227, label %ok1228 -panic1227: - call void @finch_panic(ptr @.str.674, i64 168, ptr @.str.675) - unreachable -ok1228: - %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 %panic1229, label %ok1230 -panic1229: - call void @finch_panic(ptr @.str.676, i64 170, ptr @.str.677) - unreachable -ok1230: - %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 - %a8 = 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 i64, align 16 - %a39 = alloca i64, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t2, i64 1) - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.678, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp eq i32 %t6, 0 - store { ptr, i64, i64 } %t3, ptr %a8 - call void @finch_str_drop(ptr %a8) - br label %logic.from1231 -logic.from1231: - br i1 %t7, label %logic.end1233, label %logic.rhs1232 -logic.rhs1232: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic1234, label %ok1235 -panic1234: - call void @finch_panic(ptr @.str.679, i64 176, ptr @.str.680) - unreachable -ok1235: - %t11 = getelementptr inbounds %S.parser.Parser, ptr %t9, i32 0, i32 0 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic1236, label %ok1237 -panic1236: - call void @finch_panic(ptr @.str.681, i64 176, ptr @.str.682) - unreachable -ok1237: - %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 1 - %t15 = load i64, ptr %t14 - %t16 = add i64 %t15, 1 - %t17 = load { ptr, i64, i64 }, ptr %t11 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range1238, label %inrange1239 -range1238: - call void @finch_panic_index(ptr @.str.683, i64 176, i64 %t16, i64 %t18) - unreachable -inrange1239: - %t20 = extractvalue { ptr, i64, i64 } %t17, 0 - %t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i64 %t16 - %t22 = getelementptr inbounds %S.lexer.Token, ptr %t21, i32 0, i32 4 - %t23 = load i1, ptr %t22 - br label %logic.rend1240 -logic.rend1240: - br label %logic.end1233 -logic.end1233: - %t24 = phi i1 [ true, %logic.from1231 ], [ %t23, %logic.rend1240 ] - br label %logic.from1241 -logic.from1241: - br i1 %t24, label %logic.end1243, label %logic.rhs1242 -logic.rhs1242: - %t25 = load ptr, ptr %a1 - %t26 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t25, i64 2) - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.684, i64 1, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %logic.rend1244 -logic.rend1244: - br label %logic.end1243 -logic.end1243: - %t32 = phi i1 [ true, %logic.from1241 ], [ %t30, %logic.rend1244 ] - br i1 %t32, label %then1245, label %endif1247 -then1245: - ret i1 false -endif1247: - store i64 0, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic1248, label %ok1249 -panic1248: - call void @finch_panic(ptr @.str.685, i64 180, ptr @.str.686) - unreachable -ok1249: - %t36 = getelementptr inbounds %S.parser.Parser, ptr %t34, i32 0, i32 1 - %t37 = load i64, ptr %t36 - %t38 = add i64 %t37, 1 - store i64 %t38, ptr %a39 - br label %while.cond1250 -while.cond1250: - %t40 = load i64, ptr %a39 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic1253, label %ok1254 -panic1253: - call void @finch_panic(ptr @.str.687, i64 181, ptr @.str.688) - unreachable -ok1254: - %t43 = getelementptr inbounds %S.parser.Parser, ptr %t41, i32 0, i32 0 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - %t46 = icmp slt i64 %t40, %t45 - br i1 %t46, label %while.body1251, label %while.end1252 -while.body1251: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic1255, label %ok1256 -panic1255: - call void @finch_panic(ptr @.str.689, i64 182, ptr @.str.690) - unreachable -ok1256: - %t49 = getelementptr inbounds %S.parser.Parser, ptr %t47, i32 0, i32 0 - %t50 = load i64, ptr %a39 - %t51 = load { ptr, i64, i64 }, ptr %t49 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 %t50, %t52 - br i1 %t53, label %range1257, label %inrange1258 -range1257: - call void @finch_panic_index(ptr @.str.691, i64 182, i64 %t50, i64 %t52) - unreachable -inrange1258: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.lexer.Token, ptr %t54, i64 %t50 - %t56 = getelementptr inbounds %S.lexer.Token, ptr %t55, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_copy(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.692, i64 1, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then1259, label %else1260 -then1259: - %t67 = load i64, ptr %a33 - %t68 = add i64 %t67, 1 - store i64 %t68, ptr %a33 - br label %endif1261 -else1260: - %t69 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.693, i64 1, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp ne i32 %t72, 0 - br i1 %t73, label %then1262, label %else1263 -then1262: - %t74 = load i64, ptr %a33 - %t75 = sub i64 %t74, 1 - store i64 %t75, ptr %a33 - %t76 = load i64, ptr %a33 - %t77 = icmp eq i64 %t76, 0 - br i1 %t77, label %then1265, label %endif1267 -then1265: - %t78 = load i64, ptr %a39 - %t79 = add i64 %t78, 1 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic1268, label %ok1269 -panic1268: - call void @finch_panic(ptr @.str.694, i64 188, ptr @.str.695) - unreachable -ok1269: - %t82 = getelementptr inbounds %S.parser.Parser, ptr %t80, i32 0, i32 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - %t84 = load i64, ptr %t83 - %t85 = icmp slt i64 %t79, %t84 - br label %logic.from1270 -logic.from1270: - br i1 %t85, label %logic.rhs1271, label %logic.end1272 -logic.rhs1271: - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic1273, label %ok1274 -panic1273: - call void @finch_panic(ptr @.str.696, i64 188, ptr @.str.697) - unreachable -ok1274: - %t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 0 - %t89 = load i64, ptr %a39 - %t90 = add i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %t88 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range1275, label %inrange1276 -range1275: - call void @finch_panic_index(ptr @.str.698, i64 188, i64 %t90, i64 %t92) - unreachable -inrange1276: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds %S.lexer.Token, ptr %t94, i64 %t90 - %t96 = getelementptr inbounds %S.lexer.Token, ptr %t95, i32 0, i32 0 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.699, i64 1, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.rend1277 -logic.rend1277: - br label %logic.end1272 -logic.end1272: - %t102 = phi i1 [ false, %logic.from1270 ], [ %t101, %logic.rend1277 ] - br label %logic.from1278 -logic.from1278: - br i1 %t102, label %logic.rhs1279, label %logic.end1280 -logic.rhs1279: - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic1281, label %ok1282 -panic1281: - call void @finch_panic(ptr @.str.700, i64 188, ptr @.str.701) - unreachable -ok1282: - %t105 = getelementptr inbounds %S.parser.Parser, ptr %t103, i32 0, i32 0 - %t106 = load i64, ptr %a39 - %t107 = add i64 %t106, 1 - %t108 = load { ptr, i64, i64 }, ptr %t105 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 %t107, %t109 - br i1 %t110, label %range1283, label %inrange1284 -range1283: - call void @finch_panic_index(ptr @.str.702, i64 188, i64 %t107, i64 %t109) - unreachable -inrange1284: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.lexer.Token, ptr %t111, i64 %t107 - %t113 = getelementptr inbounds %S.lexer.Token, ptr %t112, i32 0, i32 4 - %t114 = load i1, ptr %t113 - %t115 = xor i1 %t114, true - br label %logic.rend1285 -logic.rend1285: - br label %logic.end1280 -logic.end1280: - %t116 = phi i1 [ false, %logic.from1278 ], [ %t115, %logic.rend1285 ] - call void @finch_str_drop(ptr %a61) - ret i1 %t116 -endif1267: - br label %endif1264 -else1263: - %t117 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.703, i64 3, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.from1286 -logic.from1286: - br i1 %t121, label %logic.end1288, label %logic.rhs1287 -logic.rhs1287: - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic1289, label %ok1290 -panic1289: - call void @finch_panic(ptr @.str.704, i64 190, ptr @.str.705) - unreachable -ok1290: - %t124 = getelementptr inbounds %S.parser.Parser, ptr %t122, i32 0, i32 0 - %t125 = load i64, ptr %a39 - %t126 = load { ptr, i64, i64 }, ptr %t124 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 %t125, %t127 - br i1 %t128, label %range1291, label %inrange1292 -range1291: - call void @finch_panic_index(ptr @.str.706, i64 190, i64 %t125, i64 %t127) - unreachable -inrange1292: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.lexer.Token, ptr %t129, i64 %t125 - %t131 = getelementptr inbounds %S.lexer.Token, ptr %t130, i32 0, i32 4 - %t132 = load i1, ptr %t131 - br label %logic.rend1293 -logic.rend1293: - br label %logic.end1288 -logic.end1288: - %t133 = phi i1 [ true, %logic.from1286 ], [ %t132, %logic.rend1293 ] - br i1 %t133, label %then1294, label %endif1296 -then1294: - call void @finch_str_drop(ptr %a61) - ret i1 false -endif1296: - br label %endif1264 -endif1264: - br label %endif1261 -endif1261: - %t134 = load i64, ptr %a39 - %t135 = add i64 %t134, 1 - store i64 %t135, ptr %a39 - call void @finch_str_drop(ptr %a61) - br label %while.cond1250 -while.end1252: - 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 - %a12 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.lexer.Token, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.lexer.Token, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2) - br i1 %t3, label %then1297, label %endif1299 -then1297: - ret i1 true -endif1299: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }) - br i1 %t5, label %then1300, label %endif1302 -then1300: - %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.708, i64 1, i64 0 }, ptr %a9 - %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) - %t11 = icmp ne i32 %t10, 0 - store { ptr, i64, i64 } %t7, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret i1 %t11 -endif1302: - %t13 = load ptr, ptr %a1 - %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 }) - %t15 = xor i1 %t14, true - br i1 %t15, label %then1303, label %endif1305 -then1303: - ret i1 false -endif1305: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t16, i64 1) - store { ptr, i64, i64 } %t17, ptr %a18 - %t19 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.710, i64 5, i64 0 }, ptr %a21 - %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) - %t23 = icmp ne i32 %t22, 0 - br i1 %t23, label %then1306, label %endif1308 -then1306: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic1309, label %ok1310 -panic1309: - call void @finch_panic(ptr @.str.711, i64 210, ptr @.str.712) - unreachable -ok1310: - %t26 = getelementptr inbounds %S.parser.Parser, ptr %t24, i32 0, i32 0 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1311, label %ok1312 -panic1311: - call void @finch_panic(ptr @.str.713, i64 210, ptr @.str.714) - unreachable -ok1312: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = add i64 %t30, 1 - %t32 = load { ptr, i64, i64 }, ptr %t26 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range1313, label %inrange1314 -range1313: - call void @finch_panic_index(ptr @.str.715, i64 210, i64 %t31, i64 %t33) - unreachable -inrange1314: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.lexer.Token, ptr %t36, i32 0, i32 4 - %t38 = load i1, ptr %t37 - %t39 = xor i1 %t38, true - call void @finch_str_drop(ptr %a18) - ret i1 %t39 -endif1308: - %t40 = load ptr, ptr %a1 - %t41 = call %S.lexer.Token @finch.parser.cur(ptr %t40) - %t42 = extractvalue %S.lexer.Token %t41, 1 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch_str_copy(ptr %a44, ptr %a43) - %t45 = load { ptr, i64, i64 }, ptr %a44 - store %S.lexer.Token %t41, ptr %a46 - call void @finch.drop.S_lexer_Token(ptr %a46) - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.716, i64 3, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - store { ptr, i64, i64 } %t45, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %logic.from1315 -logic.from1315: - br i1 %t50, label %logic.end1317, label %logic.rhs1316 -logic.rhs1316: - %t52 = load ptr, ptr %a1 - %t53 = call %S.lexer.Token @finch.parser.cur(ptr %t52) - %t54 = extractvalue %S.lexer.Token %t53, 1 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_copy(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store %S.lexer.Token %t53, ptr %a58 - call void @finch.drop.S_lexer_Token(ptr %a58) - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.717, i64 3, i64 0 }, ptr %a60 - %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) - %t62 = icmp ne i32 %t61, 0 - store { ptr, i64, i64 } %t57, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %logic.rend1318 -logic.rend1318: - br label %logic.end1317 -logic.end1317: - %t64 = phi i1 [ true, %logic.from1315 ], [ %t62, %logic.rend1318 ] - br label %logic.from1319 -logic.from1319: - br i1 %t64, label %logic.rhs1320, label %logic.end1321 -logic.rhs1320: - %t65 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.718, i64 1, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.rend1322 -logic.rend1322: - br label %logic.end1321 -logic.end1321: - %t70 = phi i1 [ false, %logic.from1319 ], [ %t69, %logic.rend1322 ] - br i1 %t70, label %then1323, label %endif1325 -then1323: - call void @finch_str_drop(ptr %a18) - ret i1 true -endif1325: - %t71 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t71, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.719, i64 1, i64 0 }, ptr %a73 - %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) - %t75 = icmp ne i32 %t74, 0 - br label %logic.from1326 -logic.from1326: - br i1 %t75, label %logic.rhs1327, label %logic.end1328 -logic.rhs1327: - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t76, i64 2) - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.720, i64 5, i64 0 }, ptr %a79 - %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) - %t81 = icmp ne i32 %t80, 0 - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %logic.rend1329 -logic.rend1329: - br label %logic.end1328 -logic.end1328: - %t83 = phi i1 [ false, %logic.from1326 ], [ %t81, %logic.rend1329 ] - br label %logic.from1330 -logic.from1330: - br i1 %t83, label %logic.rhs1331, label %logic.end1332 -logic.rhs1331: - %t84 = load ptr, ptr %a1 - %t85 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t84, i64 3) - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.721, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %logic.rend1333 -logic.rend1333: - br label %logic.end1332 -logic.end1332: - %t91 = phi i1 [ false, %logic.from1330 ], [ %t89, %logic.rend1333 ] - br label %logic.from1334 -logic.from1334: - br i1 %t91, label %logic.rhs1335, label %logic.end1336 -logic.rhs1335: - %t92 = load ptr, ptr %a1 - %t93 = icmp eq ptr %t92, null - br i1 %t93, label %panic1337, label %ok1338 -panic1337: - call void @finch_panic(ptr @.str.722, i64 215, ptr @.str.723) - unreachable -ok1338: - %t94 = getelementptr inbounds %S.parser.Parser, ptr %t92, i32 0, i32 0 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic1339, label %ok1340 -panic1339: - call void @finch_panic(ptr @.str.724, i64 215, ptr @.str.725) - unreachable -ok1340: - %t97 = getelementptr inbounds %S.parser.Parser, ptr %t95, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = add i64 %t98, 3 - %t100 = load { ptr, i64, i64 }, ptr %t94 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range1341, label %inrange1342 -range1341: - call void @finch_panic_index(ptr @.str.726, i64 215, i64 %t99, i64 %t101) - unreachable -inrange1342: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.lexer.Token, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.lexer.Token, ptr %t104, i32 0, i32 4 - %t106 = load i1, ptr %t105 - %t107 = xor i1 %t106, true - br label %logic.rend1343 -logic.rend1343: - br label %logic.end1336 -logic.end1336: - %t108 = phi i1 [ false, %logic.from1334 ], [ %t107, %logic.rend1343 ] - call void @finch_str_drop(ptr %a18) - ret i1 %t108 -} - -define internal void @finch.parser.endOfStatement(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a10 = alloca %S.lexer.Token, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }) - br label %logic.from1344 -logic.from1344: - br i1 %t3, label %logic.end1346, label %logic.rhs1345 -logic.rhs1345: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.728, i64 3, i64 0 }) - br label %logic.rend1347 -logic.rend1347: - br label %logic.end1346 -logic.end1346: - %t6 = phi i1 [ true, %logic.from1344 ], [ %t5, %logic.rend1347 ] - br label %logic.from1348 -logic.from1348: - br i1 %t6, label %logic.end1350, label %logic.rhs1349 -logic.rhs1349: - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.cur(ptr %t7) - %t9 = extractvalue %S.lexer.Token %t8, 4 - store %S.lexer.Token %t8, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %logic.rend1351 -logic.rend1351: - br label %logic.end1350 -logic.end1350: - %t11 = phi i1 [ true, %logic.from1348 ], [ %t9, %logic.rend1351 ] - br i1 %t11, label %then1352, label %endif1354 -then1352: - ret void -endif1354: - %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 %S.lexer.Token %t16, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - store { ptr, i64, i64 } { ptr @.str.729, i64 11, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.730, i64 37, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t28) - store %S.lexer.Token %t14, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - call void @finch_str_drop(ptr %a30) - ret void -} - -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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca %S.lexer.Token, align 16 - %a87 = alloca %S.lexer.Token, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca %S.lexer.Token, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca i1, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca %S.ast.Node, align 16 - %a170 = alloca %S.ast.Node, align 16 - %a171 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1355 -while.cond1355: - %t3 = load ptr, ptr %a1 - %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.731, i64 3, i64 0 }) - %t5 = xor i1 %t4, true - br i1 %t5, label %while.body1356, label %while.end1357 -while.body1356: - %t6 = load ptr, ptr %a1 - %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.732, i64 6, i64 0 }) - br i1 %t7, label %then1358, label %else1359 -then1358: - %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.733, i64 6, i64 0 }) - br i1 %t12, label %then1361, label %else1362 -then1361: - %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 %panic1364, label %ok1365 -panic1364: - call void @finch_panic(ptr @.str.734, i64 233, ptr @.str.735) - unreachable -ok1365: - %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.736, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - %t23 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 2 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.737, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - %t48 = load i64, ptr %t14 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t13, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t13 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t14 - %t52 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.next(ptr %t54) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load i64, ptr %t53 - %t62 = add i64 %t61, 1 - call void @finch_arr_reserve(ptr %t52, i64 %t62, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t63 = load ptr, ptr %t52 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i64 %t61 - store { ptr, i64, i64 } %t59, ptr %t64 - store i64 %t62, ptr %t53 - br label %endif1363 -else1362: - %t65 = load ptr, ptr %a1 - %t66 = call i1 @finch.parser.at(ptr %t65, { ptr, i64, i64 } { ptr @.str.738, i64 5, i64 0 }) - %t67 = xor i1 %t66, true - br i1 %t67, label %then1366, label %endif1368 -then1366: - %t68 = load ptr, ptr %a1 - %t69 = load %S.lexer.Token, ptr %a10 - call void @finch.parser.fail(ptr %t68, %S.lexer.Token %t69, { ptr, i64, i64 } { ptr @.str.739, i64 51, i64 0 }) - br label %endif1368 -endif1368: - %t70 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = call %S.lexer.Token @finch.parser.next(ptr %t72) - %t74 = extractvalue %S.lexer.Token %t73, 1 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_copy(ptr %a76, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store %S.lexer.Token %t73, ptr %a78 - call void @finch.drop.S_lexer_Token(ptr %a78) - %t79 = load i64, ptr %t71 - %t80 = add i64 %t79, 1 - call void @finch_arr_reserve(ptr %t70, i64 %t80, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t81 = load ptr, ptr %t70 - %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i64 %t79 - store { ptr, i64, i64 } %t77, ptr %t82 - store i64 %t80, ptr %t71 - br label %endif1363 -endif1363: - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %endif1360 -else1359: - %t83 = load ptr, ptr %a1 - %t84 = call i1 @finch.parser.at(ptr %t83, { ptr, i64, i64 } { ptr @.str.740, i64 4, i64 0 }) - br i1 %t84, label %then1369, label %else1370 -then1369: - %t85 = load ptr, ptr %a1 - %t86 = call %S.lexer.Token @finch.parser.next(ptr %t85) - store %S.lexer.Token %t86, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = call %S.lexer.Token @finch.parser.expect(ptr %t88, { ptr, i64, i64 } { ptr @.str.741, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.742, i64 42, i64 0 }) - %t90 = extractvalue %S.lexer.Token %t89, 1 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_copy(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - store %S.lexer.Token %t89, ptr %a94 - call void @finch.drop.S_lexer_Token(ptr %a94) - store { ptr, i64, i64 } %t93, ptr %a95 - %t96 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.744, i64 2, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_ends(ptr %a97, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.from1372 -logic.from1372: - br i1 %t101, label %logic.end1374, label %logic.rhs1373 -logic.rhs1373: - %t102 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.746, i64 2, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_ends(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.rend1375 -logic.rend1375: - br label %logic.end1374 -logic.end1374: - %t108 = phi i1 [ true, %logic.from1372 ], [ %t107, %logic.rend1375 ] - br label %logic.from1376 -logic.from1376: - br i1 %t108, label %logic.end1378, label %logic.rhs1377 -logic.rhs1377: - %t109 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.748, i64 2, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_ends(ptr %a110, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.rend1379 -logic.rend1379: - br label %logic.end1378 -logic.end1378: - %t115 = phi i1 [ true, %logic.from1376 ], [ %t114, %logic.rend1379 ] - store i1 %t115, ptr %a116 - %t117 = load i1, ptr %a116 - %t118 = xor i1 %t117, true - br label %logic.from1380 -logic.from1380: - br i1 %t118, label %logic.rhs1381, label %logic.end1382 -logic.rhs1381: - %t119 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.750, i64 3, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br label %logic.from1383 -logic.from1383: - br i1 %t124, label %logic.end1385, label %logic.rhs1384 -logic.rhs1384: - %t125 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.752, i64 3, i64 0 }, ptr %a128 - %t129 = call i64 @finch_str_find(ptr %a126, ptr %a128) - %t130 = icmp sge i64 %t129, 0 - br label %logic.rend1386 -logic.rend1386: - br label %logic.end1385 -logic.end1385: - %t131 = phi i1 [ true, %logic.from1383 ], [ %t130, %logic.rend1386 ] - br label %logic.from1387 -logic.from1387: - br i1 %t131, label %logic.end1389, label %logic.rhs1388 -logic.rhs1388: - %t132 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, ptr %a135 - %t136 = call i64 @finch_str_find(ptr %a133, ptr %a135) - %t137 = icmp sge i64 %t136, 0 - br label %logic.rend1390 -logic.rend1390: - br label %logic.end1389 -logic.end1389: - %t138 = phi i1 [ true, %logic.from1387 ], [ %t137, %logic.rend1390 ] - br label %logic.rend1391 -logic.rend1391: - br label %logic.end1382 -logic.end1382: - %t139 = phi i1 [ false, %logic.from1380 ], [ %t138, %logic.rend1391 ] - br i1 %t139, label %then1392, label %endif1394 -then1392: - %t140 = load ptr, ptr %a1 - %t141 = load %S.lexer.Token, ptr %a87 - call void @finch.parser.fail(ptr %t140, %S.lexer.Token %t141, { ptr, i64, i64 } { ptr @.str.755, i64 65, i64 0 }) - br label %endif1394 -endif1394: - %t142 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1 - %t144 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch_str_copy(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load i64, ptr %t143 - %t149 = add i64 %t148, 1 - call void @finch_arr_reserve(ptr %t142, i64 %t149, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t150 = load ptr, ptr %t142 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - store { ptr, i64, i64 } %t147, ptr %t151 - store i64 %t149, ptr %t143 - call void @finch_str_drop(ptr %a95) - call void @finch.drop.S_lexer_Token(ptr %a87) - br label %endif1371 -else1370: - %t152 = load ptr, ptr %a1 - %t153 = call i1 @finch.parser.at(ptr %t152, { ptr, i64, i64 } { ptr @.str.756, i64 6, i64 0 }) - br i1 %t153, label %then1395, label %else1396 -then1395: - %t154 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.ast.Node @finch.parser.parseStruct(ptr %t156) - %t158 = load i64, ptr %t155 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %t154 - %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 - store %S.ast.Node %t157, ptr %t161 - store i64 %t159, ptr %t155 - br label %endif1397 -else1396: - %t162 = load ptr, ptr %a1 - %t163 = call i1 @finch.parser.at(ptr %t162, { ptr, i64, i64 } { ptr @.str.757, i64 4, i64 0 }) - br i1 %t163, label %then1398, label %else1399 -then1398: - %t164 = load ptr, ptr %a1 - %t165 = call %S.ast.Node @finch.parser.parseEnum(ptr %t164) - store %S.ast.Node %t165, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Node, ptr %a166 - store %S.ast.Node %t169, ptr %a170 - call void @finch.copy.S_ast_Node(ptr %a171, ptr %a170) - %t172 = load %S.ast.Node, ptr %a171 - %t173 = load i64, ptr %t168 - %t174 = add i64 %t173, 1 - call void @finch_arr_reserve(ptr %t167, i64 %t174, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t175 = load ptr, ptr %t167 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t173 - store %S.ast.Node %t172, ptr %t176 - store i64 %t174, ptr %t168 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a166, i32 0, i32 6 - %t178 = load i1, ptr %t177 - br i1 %t178, label %then1401, label %endif1403 -then1401: - %t179 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = load %S.ast.Node, ptr %a166 - %t182 = call %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %t181) - %t183 = load i64, ptr %t180 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t179, i64 %t184, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.ast.Node, ptr %t185, i64 %t183 - store %S.ast.Node %t182, ptr %t186 - store i64 %t184, ptr %t180 - br label %endif1403 -endif1403: - call void @finch.drop.S_ast_Node(ptr %a166) - br label %endif1400 -else1399: - %t187 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load ptr, ptr %a1 - %t190 = call %S.ast.Node @finch.parser.parseFn(ptr %t189) - %t191 = load i64, ptr %t188 - %t192 = add i64 %t191, 1 - call void @finch_arr_reserve(ptr %t187, i64 %t192, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t193 = load ptr, ptr %t187 - %t194 = getelementptr inbounds %S.ast.Node, ptr %t193, i64 %t191 - store %S.ast.Node %t190, ptr %t194 - store i64 %t192, ptr %t188 - br label %endif1400 -endif1400: - br label %endif1397 -endif1397: - br label %endif1371 -endif1371: - br label %endif1360 -endif1360: - br label %while.cond1355 -while.end1357: - %t195 = load %S.ast.Program, ptr %a2 - ret %S.ast.Program %t195 -} - -define internal %S.ast.Node @finch.parser.parseEnum(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a32 = alloca %S.ast.Node, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Type, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a72 = alloca %S.lexer.Token, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.lexer.Token, align 16 - %a113 = 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 - %a125 = alloca %S.lexer.Token, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.ast.Node, align 16 - %a138 = alloca %S.ast.Node, align 16 - %a150 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i64, align 16 - %a182 = alloca %S.ast.Node, 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 - %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 - %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 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.lexer.Token, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.758, i64 4, i64 0 }) - store %S.ast.Node %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.759, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.760, i64 6, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.761, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.762, i64 12, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.763, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.764, i64 3, i64 0 }) - store %S.lexer.Token %t19, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - br label %while.cond1404 -while.cond1404: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.765, i64 1, i64 0 }) - %t23 = xor i1 %t22, true - br i1 %t23, label %while.body1405, label %while.end1406 -while.body1405: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.766, i64 3, i64 0 }) - br i1 %t25, label %then1407, label %endif1409 -then1407: - %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.767, i64 37, i64 0 }) - store %S.lexer.Token %t28, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - br label %endif1409 -endif1409: - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.node(ptr %t30, { ptr, i64, i64 } { ptr @.str.768, i64 7, i64 0 }) - store %S.ast.Node %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.expect(ptr %t33, { ptr, i64, i64 } { ptr @.str.769, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.770, i64 24, i64 0 }) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t38, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = call i1 @finch.parser.accept(ptr %t43, { ptr, i64, i64 } { ptr @.str.771, i64 1, i64 0 }) - br i1 %t44, label %then1410, label %endif1412 -then1410: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - store i1 true, ptr %t45 - br label %while.cond1413 -while.cond1413: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.772, i64 1, i64 0 }) - %t48 = xor i1 %t47, true - br i1 %t48, label %while.body1414, label %while.end1415 -while.body1414: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.node(ptr %t49, { ptr, i64, i64 } { ptr @.str.773, i64 5, i64 0 }) - store %S.ast.Node %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - %t54 = getelementptr inbounds %S.ast.Node, ptr %a51, i32 0, i32 5 - %t55 = load %S.ast.Type, ptr %t54 - store %S.ast.Type %t53, ptr %t54 - store %S.ast.Type %t55, ptr %a56 - call void @finch.drop.S_ast_Type(ptr %a56) - %t57 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = load %S.ast.Node, ptr %a51 - store %S.ast.Node %t59, ptr %a60 - call void @finch.copy.S_ast_Node(ptr %a61, ptr %a60) - %t62 = load %S.ast.Node, ptr %a61 - %t63 = load i64, ptr %t58 - %t64 = add i64 %t63, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t64, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t65 = load ptr, ptr %t57 - %t66 = getelementptr inbounds %S.ast.Node, ptr %t65, i64 %t63 - store %S.ast.Node %t62, ptr %t66 - store i64 %t64, ptr %t58 - %t67 = load ptr, ptr %a1 - %t68 = call i1 @finch.parser.accept(ptr %t67, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }) - %t69 = xor i1 %t68, true - br i1 %t69, label %then1416, label %endif1418 -then1416: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.end1415 -endif1418: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.cond1413 -while.end1415: - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.775, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.776, i64 35, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - %t73 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %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 %then1419, label %endif1421 -then1419: - %t77 = load ptr, ptr %a1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.cur(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } { ptr @.str.777, i64 12, 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.778, i64 27, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t90, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t90, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.779, i64 20, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.parser.fail(ptr %t77, %S.lexer.Token %t79, { ptr, i64, i64 } %t102) - store %S.lexer.Token %t79, ptr %a103 - call void @finch.drop.S_lexer_Token(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1421 -endif1421: - br label %endif1412 -endif1412: - %t105 = load ptr, ptr %a1 - %t106 = call i1 @finch.parser.accept(ptr %t105, { ptr, i64, i64 } { ptr @.str.780, i64 1, i64 0 }) - br i1 %t106, label %then1422, label %endif1424 -then1422: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then1425, label %endif1427 -then1425: - %t109 = load ptr, ptr %a1 - %t110 = load ptr, ptr %a1 - %t111 = call %S.lexer.Token @finch.parser.cur(ptr %t110) - call void @finch.parser.fail(ptr %t109, %S.lexer.Token %t111, { ptr, i64, i64 } { ptr @.str.781, i64 52, i64 0 }) - store %S.lexer.Token %t111, ptr %a112 - call void @finch.drop.S_lexer_Token(ptr %a112) - br label %endif1427 -endif1427: - store { ptr, i64, i64 } { ptr @.str.782, i64 0, i64 0 }, ptr %a113 - %t114 = load ptr, ptr %a1 - %t115 = call i1 @finch.parser.accept(ptr %t114, { ptr, i64, i64 } { ptr @.str.783, i64 1, i64 0 }) - br i1 %t115, label %then1428, label %endif1430 -then1428: - %t116 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.784, i64 1, i64 0 }, ptr %a113 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif1430 -endif1430: - %t118 = load { ptr, i64, i64 }, ptr %a113 - %t119 = load ptr, ptr %a1 - %t120 = call %S.lexer.Token @finch.parser.expect(ptr %t119, { ptr, i64, i64 } { ptr @.str.785, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.786, i64 30, i64 0 }) - %t121 = extractvalue %S.lexer.Token %t120, 1 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - store %S.lexer.Token %t120, ptr %a125 - call void @finch.drop.S_lexer_Token(ptr %a125) - store { ptr, i64, i64 } %t118, ptr %a127 - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %t131 - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a113) - br label %endif1424 -endif1424: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load %S.ast.Node, ptr %a32 - store %S.ast.Node %t136, ptr %a137 - call void @finch.copy.S_ast_Node(ptr %a138, ptr %a137) - %t139 = load %S.ast.Node, 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 (%S.ast.Node, ptr null, i32 1) to i64)) - %t142 = load ptr, ptr %t134 - %t143 = getelementptr inbounds %S.ast.Node, ptr %t142, i64 %t140 - store %S.ast.Node %t139, ptr %t143 - store i64 %t141, ptr %t135 - %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.accept(ptr %t144, { ptr, i64, i64 } { ptr @.str.787, i64 1, i64 0 }) - %t146 = xor i1 %t145, true - br i1 %t146, label %then1431, label %endif1433 -then1431: - %t147 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t147) - br label %endif1433 -endif1433: - call void @finch.drop.S_ast_Node(ptr %a32) - br label %while.cond1404 -while.end1406: - %t148 = load ptr, ptr %a1 - %t149 = call %S.lexer.Token @finch.parser.next(ptr %t148) - store %S.lexer.Token %t149, ptr %a150 - call void @finch.drop.S_lexer_Token(ptr %a150) - %t151 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = icmp eq i64 %t153, 0 - br i1 %t154, label %then1434, label %endif1436 -then1434: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.lexer.Token @finch.parser.cur(ptr %t156) - %t158 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } { ptr @.str.788, i64 9, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.789, i64 16, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.parser.fail(ptr %t155, %S.lexer.Token %t157, { ptr, i64, i64 } %t168) - store %S.lexer.Token %t157, ptr %a169 - call void @finch.drop.S_lexer_Token(ptr %a169) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1436 -endif1436: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t172 = load i1, ptr %t171 - br i1 %t172, label %then1437, label %endif1439 -then1437: - %t173 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - store i64 0, ptr %a174 - br label %each.cond1440 -each.cond1440: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %a174 - %t178 = icmp slt i64 %t177, %t176 - br i1 %t178, label %each.body1441, label %each.end1443 -each.body1441: - %t179 = load ptr, ptr %t173 - %t180 = getelementptr inbounds %S.ast.Node, ptr %t179, i64 %t177 - %t181 = load %S.ast.Node, ptr %t180 - store %S.ast.Node %t181, ptr %a182 - %t183 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load i64, ptr %t184 - %t186 = icmp sgt i64 %t185, 0 - br i1 %t186, label %then1444, label %endif1446 -then1444: - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = call %S.lexer.Token @finch.parser.cur(ptr %t188) - %t190 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - store { ptr, i64, i64 } { ptr @.str.790, i64 54, i64 0 }, 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.791, i64 3, i64 0 }, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - %t201 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %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) - store { ptr, i64, i64 } %t200, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.792, i64 1, i64 0 }, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.parser.fail(ptr %t187, %S.lexer.Token %t189, { ptr, i64, i64 } %t212) - store %S.lexer.Token %t189, ptr %a213 - call void @finch.drop.S_lexer_Token(ptr %a213) - store { ptr, i64, i64 } %t212, ptr %a214 - call void @finch_str_drop(ptr %a214) - br label %endif1446 -endif1446: - br label %each.step1442 -each.step1442: - %t215 = load i64, ptr %a174 - %t216 = add i64 %t215, 1 - store i64 %t216, ptr %a174 - br label %each.cond1440 -each.end1443: - br label %endif1439 -endif1439: - %t217 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t217 -} - -define internal %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %p0) { -entry: - %a1 = alloca %S.ast.Node, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca %S.ast.Node, align 16 - %a30 = alloca %S.ast.Node, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a46 = alloca i64, align 16 - %a54 = alloca %S.ast.Node, align 16 - %a58 = alloca 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a98 = alloca %S.ast.Type, align 16 - %a99 = alloca %S.ast.Type, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a107 = alloca %S.ast.Node, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.793, i64 6, i64 0 }, 0 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a1, 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 - %t8 = insertvalue %S.ast.Node %t2, { ptr, i64, i64 } %t7, 1 - %t9 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t10 = load i64, ptr %t9 - %t11 = insertvalue %S.ast.Node %t8, i64 %t10, 11 - %t12 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t13 = load i64, ptr %t12 - %t14 = insertvalue %S.ast.Node %t11, i64 %t13, 12 - %t15 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t16 = load i64, ptr %t15 - %t17 = insertvalue %S.ast.Node %t14, i64 %t16, 13 - store %S.ast.Node %t17, ptr %a18 - %t19 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.794, i64 5, i64 0 }, 0 - %t20 = insertvalue %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.795, i64 3, i64 0 }, 1 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t22 = load i64, ptr %t21 - %t23 = insertvalue %S.ast.Node %t20, i64 %t22, 11 - %t24 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t25 = load i64, ptr %t24 - %t26 = insertvalue %S.ast.Node %t23, i64 %t25, 12 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t28 = load i64, ptr %t27 - %t29 = insertvalue %S.ast.Node %t26, i64 %t28, 13 - store %S.ast.Node %t29, ptr %a30 - %t31 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.796, i64 3, i64 0 }) - %t32 = getelementptr inbounds %S.ast.Node, ptr %a30, i32 0, i32 5 - %t33 = load %S.ast.Type, ptr %t32 - store %S.ast.Type %t31, ptr %t32 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - %t35 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Node, ptr %a30 - store %S.ast.Node %t37, ptr %a38 - call void @finch.copy.S_ast_Node(ptr %a39, ptr %a38) - %t40 = load %S.ast.Node, ptr %a39 - %t41 = load i64, ptr %t36 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %t35, i64 %t42, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - store %S.ast.Node %t40, ptr %t44 - store i64 %t42, ptr %t36 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a46 - br label %each.cond1447 -each.cond1447: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t48 = load i64, ptr %t47 - %t49 = load i64, ptr %a46 - %t50 = icmp slt i64 %t49, %t48 - br i1 %t50, label %each.body1448, label %each.end1450 -each.body1448: - %t51 = load ptr, ptr %t45 - %t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t49 - %t53 = load %S.ast.Node, ptr %t52 - store %S.ast.Node %t53, ptr %a54 - %t55 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i32 0, i32 1 - %t57 = load i64, ptr %t56 - store i64 0, ptr %a58 - br label %for.cond1451 -for.cond1451: - %t59 = load i64, ptr %a58 - %t60 = icmp slt i64 %t59, %t57 - br i1 %t60, label %for.body1452, label %for.end1454 -for.body1452: - %t61 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.797, i64 5, i64 0 }, 0 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.798, 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 = load i64, ptr %a58 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = insertvalue %S.ast.Node %t61, { ptr, i64, i64 } %t76, 1 - %t78 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 11 - %t79 = load i64, ptr %t78 - %t80 = insertvalue %S.ast.Node %t77, i64 %t79, 11 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 12 - %t82 = load i64, ptr %t81 - %t83 = insertvalue %S.ast.Node %t80, i64 %t82, 12 - %t84 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 13 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.ast.Node %t83, i64 %t85, 13 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t89 = load i64, ptr %a58 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range1455, label %inrange1456 -range1455: - call void @finch_panic_index(ptr @.str.799, i64 333, i64 %t89, i64 %t91) - unreachable -inrange1456: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.ast.Node, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.ast.Node, ptr %t94, i32 0, i32 5 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - store %S.ast.Type %t96, ptr %a98 - call void @finch.copy.S_ast_Type(ptr %a99, ptr %a98) - %t100 = load %S.ast.Type, ptr %a99 - %t101 = load %S.ast.Type, ptr %t97 - store %S.ast.Type %t100, ptr %t97 - store %S.ast.Type %t101, ptr %a102 - call void @finch.drop.S_ast_Type(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load %S.ast.Node, ptr %a87 - store %S.ast.Node %t105, ptr %a106 - call void @finch.copy.S_ast_Node(ptr %a107, ptr %a106) - %t108 = load %S.ast.Node, ptr %a107 - %t109 = load i64, ptr %t104 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t103, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t103 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t104 - call void @finch.drop.S_ast_Node(ptr %a87) - br label %for.step1453 -for.step1453: - %t113 = load i64, ptr %a58 - %t114 = add i64 %t113, 1 - store i64 %t114, ptr %a58 - br label %for.cond1451 -for.end1454: - br label %each.step1449 -each.step1449: - %t115 = load i64, ptr %a46 - %t116 = add i64 %t115, 1 - store i64 %t116, ptr %a46 - br label %each.cond1447 -each.end1450: - %t117 = load %S.ast.Node, ptr %a18 - call void @finch.drop.S_ast_Node(ptr %a30) - ret %S.ast.Node %t117 -} - -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 - %a10 = alloca %S.lexer.Token, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a26 = alloca i64, align 16 - %a38 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a63 = alloca %S.ast.Node, align 16 - %a71 = alloca %S.lexer.Token, align 16 - %a105 = alloca %S.ast.Node, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a122 = alloca %S.lexer.Token, align 16 - %a130 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.800, 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.801, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.802, i64 7, i64 0 }) - store %S.lexer.Token %t9, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - %t11 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.parseExpr(ptr %t13) - %t15 = load i64, ptr %t12 - %t16 = add i64 %t15, 1 - call void @finch_arr_reserve(ptr %t11, i64 %t16, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t17 = load ptr, ptr %t11 - %t18 = getelementptr inbounds %S.ast.Node, ptr %t17, i64 %t15 - store %S.ast.Node %t14, ptr %t18 - store i64 %t16, ptr %t12 - %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.803, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.804, i64 3, i64 0 }) - store %S.lexer.Token %t20, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1457, label %ok1458 -panic1457: - call void @finch_panic(ptr @.str.805, i64 348, ptr @.str.806) - unreachable -ok1458: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 2 - %t25 = load i64, ptr %t24 - store i64 %t25, ptr %a26 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1459, label %ok1460 -panic1459: - call void @finch_panic(ptr @.str.807, i64 349, ptr @.str.808) - unreachable -ok1460: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 2 - store i64 0, ptr %t29 - br label %while.cond1461 -while.cond1461: - %t30 = load ptr, ptr %a1 - %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.809, i64 1, i64 0 }) - %t32 = xor i1 %t31, true - br i1 %t32, label %while.body1462, label %while.end1463 -while.body1462: - %t33 = load ptr, ptr %a1 - %t34 = call i1 @finch.parser.at(ptr %t33, { ptr, i64, i64 } { ptr @.str.810, i64 3, i64 0 }) - br i1 %t34, label %then1464, label %endif1466 -then1464: - %t35 = load ptr, ptr %a1 - %t36 = load ptr, ptr %a1 - %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) - call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } { ptr @.str.811, i64 37, i64 0 }) - store %S.lexer.Token %t37, ptr %a38 - call void @finch.drop.S_lexer_Token(ptr %a38) - br label %endif1466 -endif1466: - %t39 = load ptr, ptr %a1 - %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.812, i64 3, i64 0 }) - store %S.ast.Node %t40, ptr %a41 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.node(ptr %t42, { ptr, i64, i64 } { ptr @.str.813, i64 8, i64 0 }) - store %S.ast.Node %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = call i1 @finch.parser.accept(ptr %t45, { ptr, i64, i64 } { ptr @.str.814, i64 4, i64 0 }) - br i1 %t46, label %then1467, label %else1468 -then1467: - %t47 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 6 - store i1 true, ptr %t47 - br label %endif1469 -else1468: - br label %while.cond1470 -while.cond1470: - br label %while.body1471 -while.body1471: - %t48 = getelementptr inbounds %S.ast.Node, ptr %a44, i32 0, i32 9 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load ptr, ptr %a1 - %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t48 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 - store %S.ast.Node %t51, ptr %t55 - store i64 %t53, ptr %t49 - %t56 = load ptr, ptr %a1 - %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.815, i64 1, i64 0 }) - %t58 = xor i1 %t57, true - br i1 %t58, label %then1473, label %endif1475 -then1473: - br label %while.end1472 -endif1475: - br label %while.cond1470 -while.end1472: - br label %endif1469 -endif1469: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 - %t61 = load %S.ast.Node, ptr %a44 - store %S.ast.Node %t61, ptr %a62 - call void @finch.copy.S_ast_Node(ptr %a63, ptr %a62) - %t64 = load %S.ast.Node, ptr %a63 - %t65 = load i64, ptr %t60 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %t59, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %t59 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 - store %S.ast.Node %t64, ptr %t68 - store i64 %t66, ptr %t60 - %t69 = load ptr, ptr %a1 - %t70 = call %S.lexer.Token @finch.parser.expect(ptr %t69, { ptr, i64, i64 } { ptr @.str.816, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 57, i64 0 }) - store %S.lexer.Token %t70, ptr %a71 - call void @finch.drop.S_lexer_Token(ptr %a71) - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 }) - br label %logic.from1476 -logic.from1476: - br i1 %t73, label %logic.rhs1477, label %logic.end1478 -logic.rhs1477: - %t74 = load i1, ptr %a2 - %t75 = xor i1 %t74, true - br label %logic.rend1479 -logic.rend1479: - br label %logic.end1478 -logic.end1478: - %t76 = phi i1 [ false, %logic.from1476 ], [ %t75, %logic.rend1479 ] - br i1 %t76, label %then1480, label %else1481 -then1480: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 - %t79 = load ptr, ptr %a1 - %t80 = call %S.ast.Node @finch.parser.parseBlock(ptr %t79) - %t81 = load i64, ptr %t78 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t77, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t77 - %t84 = getelementptr inbounds %S.ast.Node, ptr %t83, i64 %t81 - store %S.ast.Node %t80, ptr %t84 - store i64 %t82, ptr %t78 - br label %endif1482 -else1481: - %t85 = load i1, ptr %a2 - br i1 %t85, label %then1483, label %else1484 -then1483: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load ptr, ptr %a1 - %t89 = call %S.ast.Node @finch.parser.parseExpr(ptr %t88) - %t90 = load i64, ptr %t87 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t91, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %t86 - %t93 = getelementptr inbounds %S.ast.Node, ptr %t92, i64 %t90 - store %S.ast.Node %t89, ptr %t93 - store i64 %t91, ptr %t87 - br label %endif1485 -else1484: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseStatement(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1485 -endif1485: - br label %endif1482 -endif1482: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i32 0, i32 1 - %t104 = load %S.ast.Node, ptr %a41 - store %S.ast.Node %t104, ptr %a105 - call void @finch.copy.S_ast_Node(ptr %a106, ptr %a105) - %t107 = load %S.ast.Node, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %t102, i64 %t109, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %t102 - %t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 %t108 - store %S.ast.Node %t107, ptr %t111 - store i64 %t109, ptr %t103 - %t112 = load ptr, ptr %a1 - %t113 = call i1 @finch.parser.accept(ptr %t112, { ptr, i64, i64 } { ptr @.str.819, i64 1, i64 0 }) - %t114 = xor i1 %t113, true - br i1 %t114, label %then1486, label %endif1488 -then1486: - %t115 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t115) - br label %endif1488 -endif1488: - call void @finch.drop.S_ast_Node(ptr %a44) - call void @finch.drop.S_ast_Node(ptr %a41) - br label %while.cond1461 -while.end1463: - %t116 = load i64, ptr %a26 - %t117 = load ptr, ptr %a1 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic1489, label %ok1490 -panic1489: - call void @finch_panic(ptr @.str.820, i64 380, ptr @.str.821) - unreachable -ok1490: - %t119 = getelementptr inbounds %S.parser.Parser, ptr %t117, i32 0, i32 2 - store i64 %t116, ptr %t119 - %t120 = load ptr, ptr %a1 - %t121 = call %S.lexer.Token @finch.parser.next(ptr %t120) - store %S.lexer.Token %t121, ptr %a122 - call void @finch.drop.S_lexer_Token(ptr %a122) - %t123 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1 - %t125 = load i64, ptr %t124 - %t126 = icmp eq i64 %t125, 1 - br i1 %t126, label %then1491, label %endif1493 -then1491: - %t127 = load ptr, ptr %a1 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.cur(ptr %t128) - call void @finch.parser.fail(ptr %t127, %S.lexer.Token %t129, { ptr, i64, i64 } { ptr @.str.822, i64 30, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - br label %endif1493 -endif1493: - %t131 = load %S.ast.Node, ptr %a5 - ret %S.ast.Node %t131 -} - -define internal { ptr, i64, i64 } @finch.parser.parseTParams(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca %S.lexer.Token, align 16 - %a23 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.823, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.824, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - br label %while.cond1494 -while.cond1494: - br label %while.body1495 -while.body1495: - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.825, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.826, i64 29, i64 0 }) - %t9 = extractvalue %S.lexer.Token %t8, 1 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - store %S.lexer.Token %t8, ptr %a13 - call void @finch.drop.S_lexer_Token(ptr %a13) - %t14 = load i64, ptr %t6 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t15, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %a2 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t14 - store { ptr, i64, i64 } %t12, ptr %t17 - store i64 %t15, ptr %t6 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.accept(ptr %t18, { ptr, i64, i64 } { ptr @.str.827, i64 1, i64 0 }) - %t20 = xor i1 %t19, true - br i1 %t20, label %then1497, label %endif1499 -then1497: - br label %while.end1496 -endif1499: - br label %while.cond1494 -while.end1496: - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.828, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.829, i64 29, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t24 -} - -define internal %S.ast.Node @finch.parser.parseStruct(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca %S.lexer.Token, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.lexer.Token, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.ast.Type, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.lexer.Token, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.ast.Node, align 16 - %a100 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.830, 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.831, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 8, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.833, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.834, i64 13, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.835, i64 1, i64 0 }) - br i1 %t19, label %then1500, label %endif1502 -then1500: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t20) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t21, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch.drop.arr_str(ptr %a24) - br label %endif1502 -endif1502: - %t25 = load ptr, ptr %a1 - %t26 = call %S.lexer.Token @finch.parser.expect(ptr %t25, { ptr, i64, i64 } { ptr @.str.836, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.837, i64 3, i64 0 }) - store %S.lexer.Token %t26, ptr %a27 - call void @finch.drop.S_lexer_Token(ptr %a27) - br label %while.cond1503 -while.cond1503: - %t28 = load ptr, ptr %a1 - %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.838, i64 1, i64 0 }) - %t30 = xor i1 %t29, true - br i1 %t30, label %while.body1504, label %while.end1505 -while.body1504: - %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.839, i64 3, i64 0 }) - br i1 %t32, label %then1506, label %endif1508 -then1506: - %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.840, i64 38, i64 0 }) - store %S.lexer.Token %t35, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - br label %endif1508 -endif1508: - %t37 = load ptr, ptr %a1 - %t38 = call %S.ast.Node @finch.parser.node(ptr %t37, { ptr, i64, i64 } { ptr @.str.841, i64 5, i64 0 }) - store %S.ast.Node %t38, ptr %a39 - %t40 = load ptr, ptr %a1 - %t41 = call i1 @finch.parser.atDeclaration(ptr %t40) - %t42 = xor i1 %t41, true - br i1 %t42, label %then1509, label %endif1511 -then1509: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = call %S.lexer.Token @finch.parser.cur(ptr %t44) - %t46 = load ptr, ptr %a1 - %t47 = call %S.lexer.Token @finch.parser.cur(ptr %t46) - %t48 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t47) - store %S.lexer.Token %t47, ptr %a49 - call void @finch.drop.S_lexer_Token(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.842, i64 11, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.843, i64 28, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - call void @finch.parser.fail(ptr %t43, %S.lexer.Token %t45, { ptr, i64, i64 } %t59) - store %S.lexer.Token %t45, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - br label %endif1511 -endif1511: - %t62 = load ptr, ptr %a1 - %t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62) - %t64 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 5 - %t65 = load %S.ast.Type, ptr %t64 - store %S.ast.Type %t63, ptr %t64 - store %S.ast.Type %t65, ptr %a66 - call void @finch.drop.S_ast_Type(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = call %S.lexer.Token @finch.parser.expect(ptr %t67, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.845, i64 12, i64 0 }) - %t69 = extractvalue %S.lexer.Token %t68, 1 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_copy(ptr %a71, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - store %S.lexer.Token %t68, ptr %a73 - call void @finch.drop.S_lexer_Token(ptr %a73) - %t74 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 1 - %t75 = load { ptr, i64, i64 }, ptr %t74 - store { ptr, i64, i64 } %t72, ptr %t74 - store { ptr, i64, i64 } %t75, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load ptr, ptr %a1 - %t78 = call i1 @finch.parser.accept(ptr %t77, { ptr, i64, i64 } { ptr @.str.846, i64 1, i64 0 }) - br i1 %t78, label %then1512, label %endif1514 -then1512: - %t79 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 9 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load ptr, ptr %a1 - %t82 = call %S.ast.Node @finch.parser.parseExpr(ptr %t81) - %t83 = load i64, ptr %t80 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t79, i64 %t84, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t79 - %t86 = getelementptr inbounds %S.ast.Node, ptr %t85, i64 %t83 - store %S.ast.Node %t82, ptr %t86 - store i64 %t84, ptr %t80 - br label %endif1514 -endif1514: - %t87 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 - %t89 = load %S.ast.Node, ptr %a39 - store %S.ast.Node %t89, ptr %a90 - call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90) - %t92 = load %S.ast.Node, ptr %a91 - %t93 = load i64, ptr %t88 - %t94 = add i64 %t93, 1 - call void @finch_arr_reserve(ptr %t87, i64 %t94, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t95 = load ptr, ptr %t87 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 %t93 - store %S.ast.Node %t92, ptr %t96 - store i64 %t94, ptr %t88 - %t97 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t97) - call void @finch.drop.S_ast_Node(ptr %a39) - br label %while.cond1503 -while.end1505: - %t98 = load ptr, ptr %a1 - %t99 = call %S.lexer.Token @finch.parser.next(ptr %t98) - store %S.lexer.Token %t99, ptr %a100 - call void @finch.drop.S_lexer_Token(ptr %a100) - %t101 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t101 -} - -define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) { -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 - %a16 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lexer.Token, align 16 - %a26 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.lexer.Token, align 16 - %a77 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Type, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca %S.lexer.Token, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - %a113 = alloca %S.lexer.Token, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.847, 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.848, 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.849, i64 5, i64 0 }) - br label %logic.from1515 -logic.from1515: - br i1 %t9, label %logic.rhs1516, label %logic.end1517 -logic.rhs1516: - %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 - store %S.lexer.Token %t11, ptr %a16 - call void @finch.drop.S_lexer_Token(ptr %a16) - %t17 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend1518 -logic.rend1518: - br label %logic.end1517 -logic.end1517: - %t19 = phi i1 [ false, %logic.from1515 ], [ %t17, %logic.rend1518 ] - br i1 %t19, label %then1519, label %endif1521 -then1519: - %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.850, i64 68, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - br label %endif1521 -endif1521: - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.expect(ptr %t24, { ptr, i64, i64 } { ptr @.str.851, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.852, i64 26, i64 0 }) - store %S.lexer.Token %t25, ptr %a26 - call void @finch.drop.S_lexer_Token(ptr %a26) - %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.853, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.854, i64 15, i64 0 }) - %t29 = extractvalue %S.lexer.Token %t28, 1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store %S.lexer.Token %t28, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t32, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call i1 @finch.parser.at(ptr %t37, { ptr, i64, i64 } { ptr @.str.855, i64 1, i64 0 }) - br i1 %t38, label %then1522, label %endif1524 -then1522: - %t39 = load ptr, ptr %a1 - %t40 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t39) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t40, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch.drop.arr_str(ptr %a43) - br label %endif1524 -endif1524: - %t44 = load ptr, ptr %a1 - %t45 = call i1 @finch.parser.accept(ptr %t44, { ptr, i64, i64 } { ptr @.str.856, i64 1, i64 0 }) - br i1 %t45, label %then1525, label %endif1527 -then1525: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - %t48 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t47, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t51, ptr %t48 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.expect(ptr %t54, { ptr, i64, i64 } { ptr @.str.857, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.858, i64 13, i64 0 }) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t59, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %endif1527 -endif1527: - %t64 = load ptr, ptr %a1 - %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.859, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.860, i64 3, i64 0 }) - store %S.lexer.Token %t65, ptr %a66 - call void @finch.drop.S_lexer_Token(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic1528, label %ok1529 -panic1528: - call void @finch_panic(ptr @.str.861, i64 446, ptr @.str.862) - unreachable -ok1529: - %t69 = getelementptr inbounds %S.parser.Parser, ptr %t67, i32 0, i32 2 - %t70 = load i64, ptr %t69 - %t71 = add i64 %t70, 1 - store i64 %t71, ptr %t69 - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.863, i64 1, i64 0 }) - %t74 = xor i1 %t73, true - br i1 %t74, label %then1530, label %endif1532 -then1530: - br label %while.cond1533 -while.cond1533: - br label %while.body1534 -while.body1534: - %t75 = load ptr, ptr %a1 - %t76 = call %S.ast.Node @finch.parser.node(ptr %t75, { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }) - store %S.ast.Node %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Type @finch.parser.parseType(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 5 - %t81 = load %S.ast.Type, ptr %t80 - store %S.ast.Type %t79, ptr %t80 - store %S.ast.Type %t81, ptr %a82 - call void @finch.drop.S_ast_Type(ptr %a82) - %t83 = load ptr, ptr %a1 - %t84 = call %S.lexer.Token @finch.parser.expect(ptr %t83, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.866, i64 16, i64 0 }) - %t85 = extractvalue %S.lexer.Token %t84, 1 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_copy(ptr %a87, ptr %a86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store %S.lexer.Token %t84, ptr %a89 - call void @finch.drop.S_lexer_Token(ptr %a89) - %t90 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 1 - %t91 = load { ptr, i64, i64 }, ptr %t90 - store { ptr, i64, i64 } %t88, ptr %t90 - store { ptr, i64, i64 } %t91, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load %S.ast.Node, ptr %a77 - store %S.ast.Node %t95, ptr %a96 - call void @finch.copy.S_ast_Node(ptr %a97, ptr %a96) - %t98 = load %S.ast.Node, ptr %a97 - %t99 = load i64, ptr %t94 - %t100 = add i64 %t99, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t100, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t101 = load ptr, ptr %t93 - %t102 = getelementptr inbounds %S.ast.Node, ptr %t101, i64 %t99 - store %S.ast.Node %t98, ptr %t102 - store i64 %t100, ptr %t94 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.867, i64 1, i64 0 }) - %t105 = xor i1 %t104, true - br i1 %t105, label %then1536, label %endif1538 -then1536: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.end1535 -endif1538: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.cond1533 -while.end1535: - br label %endif1532 -endif1532: - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic1539, label %ok1540 -panic1539: - call void @finch_panic(ptr @.str.868, i64 458, ptr @.str.869) - unreachable -ok1540: - %t108 = getelementptr inbounds %S.parser.Parser, ptr %t106, i32 0, i32 2 - %t109 = load i64, ptr %t108 - %t110 = sub i64 %t109, 1 - store i64 %t110, ptr %t108 - %t111 = load ptr, ptr %a1 - %t112 = call %S.lexer.Token @finch.parser.expect(ptr %t111, { ptr, i64, i64 } { ptr @.str.870, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.871, i64 3, i64 0 }) - store %S.lexer.Token %t112, ptr %a113 - call void @finch.drop.S_lexer_Token(ptr %a113) - %t114 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.872, i64 4, i64 0 }) - %t115 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t116 = load %S.ast.Type, ptr %t115 - store %S.ast.Type %t114, ptr %t115 - store %S.ast.Type %t116, ptr %a117 - call void @finch.drop.S_ast_Type(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = call i1 @finch.parser.accept(ptr %t118, { ptr, i64, i64 } { ptr @.str.873, i64 2, i64 0 }) - br i1 %t119, label %then1541, label %endif1543 -then1541: - %t120 = load ptr, ptr %a1 - %t121 = call i1 @finch.parser.at(ptr %t120, { ptr, i64, i64 } { ptr @.str.874, i64 1, i64 0 }) - %t122 = xor i1 %t121, true - br i1 %t122, label %then1544, label %endif1546 -then1544: - %t123 = load ptr, ptr %a1 - %t124 = call %S.ast.Type @finch.parser.parseType(ptr %t123) - %t125 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t126 = load %S.ast.Type, ptr %t125 - store %S.ast.Type %t124, ptr %t125 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif1546 -endif1546: - %t128 = load ptr, ptr %a1 - %t129 = call i1 @finch.parser.accept(ptr %t128, { ptr, i64, i64 } { ptr @.str.875, i64 1, i64 0 }) - %t130 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - store i1 %t129, ptr %t130 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - %t132 = load i1, ptr %t131 - %t133 = xor i1 %t132, true - br label %logic.from1547 -logic.from1547: - br i1 %t133, label %logic.rhs1548, label %logic.end1549 -logic.rhs1548: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t136, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.876, i64 4, i64 0 }, ptr %a138 - %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) - %t140 = icmp ne i32 %t139, 0 - br label %logic.rend1550 -logic.rend1550: - br label %logic.end1549 -logic.end1549: - %t141 = phi i1 [ false, %logic.from1547 ], [ %t140, %logic.rend1550 ] - br i1 %t141, label %then1551, label %endif1553 -then1551: - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.lexer.Token @finch.parser.cur(ptr %t143) - %t145 = load ptr, ptr %a1 - %t146 = call %S.lexer.Token @finch.parser.cur(ptr %t145) - %t147 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t146) - store %S.lexer.Token %t146, ptr %a148 - call void @finch.drop.S_lexer_Token(ptr %a148) - store { ptr, i64, i64 } { ptr @.str.877, i64 11, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t147, ptr %a152 - call void @finch_str_drop(ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.878, i64 61, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - call void @finch.parser.fail(ptr %t142, %S.lexer.Token %t144, { ptr, i64, i64 } %t158) - store %S.lexer.Token %t144, ptr %a159 - call void @finch.drop.S_lexer_Token(ptr %a159) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - br label %endif1553 -endif1553: - br label %endif1543 -endif1543: - %t161 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i32 0, i32 1 - %t163 = load ptr, ptr %a1 - %t164 = call %S.ast.Node @finch.parser.parseBlock(ptr %t163) - %t165 = load i64, ptr %t162 - %t166 = add i64 %t165, 1 - call void @finch_arr_reserve(ptr %t161, i64 %t166, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t167 = load ptr, ptr %t161 - %t168 = getelementptr inbounds %S.ast.Node, ptr %t167, i64 %t165 - store %S.ast.Node %t164, ptr %t168 - store i64 %t166, ptr %t162 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = sub i64 %t172, 1 - %t174 = load { ptr, i64, i64 }, ptr %t169 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range1554, label %inrange1555 -range1554: - call void @finch_panic_index(ptr @.str.879, i64 471, i64 %t173, i64 %t175) - unreachable -inrange1555: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Node, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i32 0, i32 14 - %t180 = load i64, ptr %t179 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t180, ptr %t181 - %t182 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t182 -} - -define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a12 = alloca i64, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.lexer.Token, align 16 - %a45 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.880, 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.881, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.882, i64 3, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic1556, label %ok1557 -panic1556: - call void @finch_panic(ptr @.str.883, i64 480, ptr @.str.884) - unreachable -ok1557: - %t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 2 - %t11 = load i64, ptr %t10 - store i64 %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic1558, label %ok1559 -panic1558: - call void @finch_panic(ptr @.str.885, i64 481, ptr @.str.886) - unreachable -ok1559: - %t15 = getelementptr inbounds %S.parser.Parser, ptr %t13, i32 0, i32 2 - store i64 0, ptr %t15 - br label %while.cond1560 -while.cond1560: - %t16 = load ptr, ptr %a1 - %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.887, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - br i1 %t18, label %while.body1561, label %while.end1562 -while.body1561: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.888, i64 3, i64 0 }) - br i1 %t20, label %then1563, label %endif1565 -then1563: - %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.889, i64 35, i64 0 }) - store %S.lexer.Token %t23, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - br label %endif1565 -endif1565: - %t25 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.parseStatement(ptr %t27) - %t29 = load i64, ptr %t26 - %t30 = add i64 %t29, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t30, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t31 = load ptr, ptr %t25 - %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 %t29 - store %S.ast.Node %t28, ptr %t32 - store i64 %t30, ptr %t26 - %t33 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t33) - br label %while.cond1560 -while.end1562: - %t34 = load i64, ptr %a12 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1566, label %ok1567 -panic1566: - call void @finch_panic(ptr @.str.890, i64 489, ptr @.str.891) - unreachable -ok1567: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 2 - store i64 %t34, ptr %t37 - %t38 = load ptr, ptr %a1 - %t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38) - %t40 = extractvalue %S.lexer.Token %t39, 2 - store %S.lexer.Token %t39, ptr %a41 - call void @finch.drop.S_lexer_Token(ptr %a41) - %t42 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t40, ptr %t42 - %t43 = load ptr, ptr %a1 - %t44 = call %S.lexer.Token @finch.parser.next(ptr %t43) - store %S.lexer.Token %t44, ptr %a45 - call void @finch.drop.S_lexer_Token(ptr %a45) - %t46 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t46 -} - -define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { -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 - %a22 = alloca %S.lexer.Token, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.ast.Node, align 16 - %a50 = alloca %S.lexer.Token, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca %S.lexer.Token, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Node, align 16 - %a131 = alloca %S.lexer.Token, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.ast.Node, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca %S.ast.Node, align 16 - %a186 = alloca %S.lexer.Token, align 16 - %a192 = alloca %S.lexer.Token, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.lexer.Token, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Node, align 16 - %a250 = alloca %S.ast.Type, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca %S.lexer.Token, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca %S.ast.Node, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca %S.lexer.Token, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.lexer.Token, align 16 - %a309 = alloca %S.lexer.Token, align 16 - %a312 = alloca %S.ast.Node, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca i64, align 16 - %a331 = alloca i64, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.ast.Node, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca %S.lexer.Token, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca %S.ast.Node, align 16 - %a396 = alloca %S.ast.Node, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Node, align 16 - %a456 = alloca %S.ast.Node, align 16 - %a457 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t2) - store { ptr, i64, i64 } %t3, ptr %a4 - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.892, 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 %then1568, label %endif1570 -then1568: - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t11 -endif1570: - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.893, 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 %then1571, label %endif1573 -then1571: - %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.894, 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) - store %S.lexer.Token %t21, ptr %a22 - call void @finch.drop.S_lexer_Token(ptr %a22) - %t23 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 - %t25 = load ptr, ptr %a1 - %t26 = call %S.ast.Node @finch.parser.parseExpr(ptr %t25) - %t27 = load i64, ptr %t24 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - store %S.ast.Node %t26, ptr %t30 - store i64 %t28, ptr %t24 - %t31 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load ptr, ptr %a1 - %t34 = call %S.ast.Node @finch.parser.parseBlock(ptr %t33) - %t35 = load i64, ptr %t32 - %t36 = add i64 %t35, 1 - call void @finch_arr_reserve(ptr %t31, i64 %t36, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t37 = load ptr, ptr %t31 - %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t35 - store %S.ast.Node %t34, ptr %t38 - store i64 %t36, ptr %t32 - %t39 = load %S.ast.Node, ptr %a19 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t39 -endif1573: - %t40 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.895, i64 3, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br i1 %t44, label %then1574, label %endif1576 -then1574: - %t45 = load ptr, ptr %a1 - %t46 = call %S.ast.Node @finch.parser.node(ptr %t45, { ptr, i64, i64 } { ptr @.str.896, i64 3, i64 0 }) - store %S.ast.Node %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = call %S.lexer.Token @finch.parser.next(ptr %t48) - store %S.lexer.Token %t49, ptr %a50 - call void @finch.drop.S_lexer_Token(ptr %a50) - %t51 = load ptr, ptr %a1 - %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.897, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.898, i64 20, i64 0 }) - %t53 = extractvalue %S.lexer.Token %t52, 1 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch_str_copy(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store %S.lexer.Token %t52, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 1 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } %t56, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.899, i64 1, i64 0 }) - br i1 %t62, label %then1577, label %endif1579 -then1577: - %t63 = load ptr, ptr %a1 - %t64 = call %S.lexer.Token @finch.parser.expect(ptr %t63, { ptr, i64, i64 } { ptr @.str.900, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.901, i64 27, i64 0 }) - %t65 = extractvalue %S.lexer.Token %t64, 1 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store %S.lexer.Token %t64, ptr %a69 - call void @finch.drop.S_lexer_Token(ptr %a69) - %t70 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t68, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif1579 -endif1579: - %t73 = load ptr, ptr %a1 - %t74 = call %S.lexer.Token @finch.parser.expect(ptr %t73, { ptr, i64, i64 } { ptr @.str.902, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.903, i64 4, i64 0 }) - store %S.lexer.Token %t74, ptr %a75 - call void @finch.drop.S_lexer_Token(ptr %a75) - %t76 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = call i1 @finch.parser.accept(ptr %t84, { ptr, i64, i64 } { ptr @.str.904, i64 2, i64 0 }) - br i1 %t85, label %then1580, label %else1581 -then1580: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = icmp sgt i64 %t88, 0 - br i1 %t89, label %then1583, label %endif1585 -then1583: - %t90 = load ptr, ptr %a1 - %t91 = load ptr, ptr %a1 - %t92 = call %S.lexer.Token @finch.parser.cur(ptr %t91) - call void @finch.parser.fail(ptr %t90, %S.lexer.Token %t92, { ptr, i64, i64 } { ptr @.str.905, i64 55, i64 0 }) - store %S.lexer.Token %t92, ptr %a93 - call void @finch.drop.S_lexer_Token(ptr %a93) - br label %endif1585 -endif1585: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseExpr(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1582 -else1581: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } { ptr @.str.906, i64 4, i64 0 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1582 -endif1582: - %t105 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1 - %t107 = load ptr, ptr %a1 - %t108 = call %S.ast.Node @finch.parser.parseBlock(ptr %t107) - %t109 = load i64, ptr %t106 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t105, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t105 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t106 - %t113 = load %S.ast.Node, ptr %a47 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t113 -endif1576: - %t114 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.907, i64 5, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br i1 %t118, label %then1586, label %endif1588 -then1586: - %t119 = load ptr, ptr %a1 - %t120 = call %S.ast.Node @finch.parser.parseMatch(ptr %t119, i1 false) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t120 -endif1588: - %t121 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.908, i64 6, i64 0 }, ptr %a123 - %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) - %t125 = icmp ne i32 %t124, 0 - br i1 %t125, label %then1589, label %endif1591 -then1589: - %t126 = load ptr, ptr %a1 - %t127 = call %S.ast.Node @finch.parser.node(ptr %t126, { ptr, i64, i64 } { ptr @.str.909, i64 6, i64 0 }) - store %S.ast.Node %t127, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = call %S.lexer.Token @finch.parser.next(ptr %t129) - store %S.lexer.Token %t130, ptr %a131 - call void @finch.drop.S_lexer_Token(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = call i1 @finch.parser.at(ptr %t132, { ptr, i64, i64 } { ptr @.str.910, i64 1, i64 0 }) - %t134 = xor i1 %t133, true - br label %logic.from1592 -logic.from1592: - br i1 %t134, label %logic.rhs1593, label %logic.end1594 -logic.rhs1593: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1595 -logic.rend1595: - br label %logic.end1594 -logic.end1594: - %t140 = phi i1 [ false, %logic.from1592 ], [ %t139, %logic.rend1595 ] - br i1 %t140, label %then1596, label %endif1598 -then1596: - %t141 = getelementptr inbounds %S.ast.Node, ptr %a128, i32 0, i32 9 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.ast.Node @finch.parser.parseExpr(ptr %t143) - %t145 = load i64, ptr %t142 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t141, i64 %t146, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t141 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t145 - store %S.ast.Node %t144, ptr %t148 - store i64 %t146, ptr %t142 - br label %endif1598 -endif1598: - %t149 = load %S.ast.Node, ptr %a128 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t149 -endif1591: - %t150 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.911, 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.from1599 -logic.from1599: - br i1 %t154, label %logic.end1601, label %logic.rhs1600 -logic.rhs1600: - %t155 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.912, i64 8, i64 0 }, ptr %a157 - %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) - %t159 = icmp ne i32 %t158, 0 - br label %logic.rend1602 -logic.rend1602: - br label %logic.end1601 -logic.end1601: - %t160 = phi i1 [ true, %logic.from1599 ], [ %t159, %logic.rend1602 ] - br i1 %t160, label %then1603, label %endif1605 -then1603: - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a4 - %t163 = call %S.ast.Node @finch.parser.node(ptr %t161, { ptr, i64, i64 } %t162) - store %S.ast.Node %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = load %S.ast.Node, ptr %a164 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t168 -endif1605: - %t169 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.913, i64 1, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then1606, label %endif1608 -then1606: - %t174 = load ptr, ptr %a1 - %t175 = call %S.ast.Node @finch.parser.parseBlock(ptr %t174) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t175 -endif1608: - %t176 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.914, i64 5, i64 0 }, ptr %a178 - %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %then1609, label %endif1611 -then1609: - %t181 = load ptr, ptr %a1 - %t182 = call %S.ast.Node @finch.parser.node(ptr %t181, { ptr, i64, i64 } { ptr @.str.915, i64 5, i64 0 }) - store %S.ast.Node %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = call %S.lexer.Token @finch.parser.next(ptr %t184) - store %S.lexer.Token %t185, ptr %a186 - call void @finch.drop.S_lexer_Token(ptr %a186) - %t187 = load ptr, ptr %a1 - %t188 = call i1 @finch.parser.at(ptr %t187, { ptr, i64, i64 } { ptr @.str.916, i64 5, i64 0 }) - br i1 %t188, label %then1612, label %endif1614 -then1612: - %t189 = load ptr, ptr %a1 - %t190 = load ptr, ptr %a1 - %t191 = call %S.lexer.Token @finch.parser.cur(ptr %t190) - call void @finch.parser.fail(ptr %t189, %S.lexer.Token %t191, { ptr, i64, i64 } { ptr @.str.917, i64 33, i64 0 }) - store %S.lexer.Token %t191, ptr %a192 - call void @finch.drop.S_lexer_Token(ptr %a192) - br label %endif1614 -endif1614: - %t193 = getelementptr inbounds %S.ast.Node, ptr %a183, i32 0, i32 9 - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t193, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call %S.ast.Node @finch.parser.parseStatement(ptr %t195) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %t193, i64 %t198, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %t193 - %t200 = getelementptr inbounds %S.ast.Node, ptr %t199, i64 %t197 - store %S.ast.Node %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = load %S.ast.Node, ptr %a183 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t201 -endif1611: - %t202 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.918, i64 2, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.from1615 -logic.from1615: - br i1 %t206, label %logic.end1617, label %logic.rhs1616 -logic.rhs1616: - %t207 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.919, 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.rend1618 -logic.rend1618: - br label %logic.end1617 -logic.end1617: - %t212 = phi i1 [ true, %logic.from1615 ], [ %t211, %logic.rend1618 ] - br label %logic.from1619 -logic.from1619: - br i1 %t212, label %logic.end1621, label %logic.rhs1620 -logic.rhs1620: - %t213 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.920, i64 6, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br label %logic.rend1622 -logic.rend1622: - br label %logic.end1621 -logic.end1621: - %t218 = phi i1 [ true, %logic.from1619 ], [ %t217, %logic.rend1622 ] - br label %logic.from1623 -logic.from1623: - br i1 %t218, label %logic.end1625, label %logic.rhs1624 -logic.rhs1624: - %t219 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t219, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.921, i64 4, i64 0 }, ptr %a221 - %t222 = call i32 @finch_str_eq(ptr %a220, ptr %a221) - %t223 = icmp ne i32 %t222, 0 - br label %logic.rend1626 -logic.rend1626: - br label %logic.end1625 -logic.end1625: - %t224 = phi i1 [ true, %logic.from1623 ], [ %t223, %logic.rend1626 ] - br i1 %t224, label %then1627, label %endif1629 -then1627: - %t225 = load ptr, ptr %a1 - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.cur(ptr %t226) - %t228 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.922, i64 1, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.923, i64 48, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - call void @finch.parser.fail(ptr %t225, %S.lexer.Token %t227, { ptr, i64, i64 } %t237) - store %S.lexer.Token %t227, ptr %a238 - call void @finch.drop.S_lexer_Token(ptr %a238) - store { ptr, i64, i64 } %t237, ptr %a239 - call void @finch_str_drop(ptr %a239) - br label %endif1629 -endif1629: - %t240 = load ptr, ptr %a1 - %t241 = call i1 @finch.parser.atDeclaration(ptr %t240) - br i1 %t241, label %then1630, label %endif1632 -then1630: - %t242 = load ptr, ptr %a1 - %t243 = call %S.ast.Node @finch.parser.node(ptr %t242, { ptr, i64, i64 } { ptr @.str.924, i64 4, i64 0 }) - store %S.ast.Node %t243, ptr %a244 - %t245 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 6 - store i1 true, ptr %t245 - %t246 = load ptr, ptr %a1 - %t247 = call %S.ast.Type @finch.parser.parseType(ptr %t246) - %t248 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 5 - %t249 = load %S.ast.Type, ptr %t248 - store %S.ast.Type %t247, ptr %t248 - store %S.ast.Type %t249, ptr %a250 - call void @finch.drop.S_ast_Type(ptr %a250) - %t251 = load ptr, ptr %a1 - %t252 = call %S.lexer.Token @finch.parser.expect(ptr %t251, { ptr, i64, i64 } { ptr @.str.925, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.926, i64 15, i64 0 }) - %t253 = extractvalue %S.lexer.Token %t252, 1 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - store %S.lexer.Token %t252, ptr %a257 - call void @finch.drop.S_lexer_Token(ptr %a257) - %t258 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 1 - %t259 = load { ptr, i64, i64 }, ptr %t258 - store { ptr, i64, i64 } %t256, ptr %t258 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = call i1 @finch.parser.accept(ptr %t261, { ptr, i64, i64 } { ptr @.str.927, i64 1, i64 0 }) - br i1 %t262, label %then1633, label %endif1635 -then1633: - %t263 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 9 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load ptr, ptr %a1 - %t266 = call %S.ast.Node @finch.parser.parseExpr(ptr %t265) - %t267 = load i64, ptr %t264 - %t268 = add i64 %t267, 1 - call void @finch_arr_reserve(ptr %t263, i64 %t268, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t269 = load ptr, ptr %t263 - %t270 = getelementptr inbounds %S.ast.Node, ptr %t269, i64 %t267 - store %S.ast.Node %t266, ptr %t270 - store i64 %t268, ptr %t264 - br label %endif1635 -endif1635: - %t271 = load %S.ast.Node, ptr %a244 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t271 -endif1632: - %t272 = load ptr, ptr %a1 - %t273 = call i1 @finch.parser.at(ptr %t272, { ptr, i64, i64 } { ptr @.str.928, i64 5, i64 0 }) - br label %logic.from1636 -logic.from1636: - br i1 %t273, label %logic.rhs1637, label %logic.end1638 -logic.rhs1637: - %t274 = load ptr, ptr %a1 - %t275 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t274, i64 1) - store { ptr, i64, i64 } %t275, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.929, i64 2, i64 0 }, ptr %a277 - %t278 = call i32 @finch_str_eq(ptr %a276, ptr %a277) - %t279 = icmp ne i32 %t278, 0 - store { ptr, i64, i64 } %t275, ptr %a280 - call void @finch_str_drop(ptr %a280) - br label %logic.rend1639 -logic.rend1639: - br label %logic.end1638 -logic.end1638: - %t281 = phi i1 [ false, %logic.from1636 ], [ %t279, %logic.rend1639 ] - br i1 %t281, label %then1640, label %endif1642 -then1640: - %t282 = load ptr, ptr %a1 - %t283 = call %S.ast.Node @finch.parser.node(ptr %t282, { ptr, i64, i64 } { ptr @.str.930, i64 4, i64 0 }) - store %S.ast.Node %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = call %S.lexer.Token @finch.parser.next(ptr %t285) - %t287 = extractvalue %S.lexer.Token %t286, 1 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_copy(ptr %a289, ptr %a288) - %t290 = load { ptr, i64, i64 }, ptr %a289 - store %S.lexer.Token %t286, ptr %a291 - call void @finch.drop.S_lexer_Token(ptr %a291) - %t292 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 1 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } %t290, ptr %t292 - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load ptr, ptr %a1 - %t296 = call %S.lexer.Token @finch.parser.next(ptr %t295) - store %S.lexer.Token %t296, ptr %a297 - call void @finch.drop.S_lexer_Token(ptr %a297) - %t298 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 9 - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 - %t300 = load ptr, ptr %a1 - %t301 = call %S.ast.Node @finch.parser.parseExpr(ptr %t300) - %t302 = load i64, ptr %t299 - %t303 = add i64 %t302, 1 - call void @finch_arr_reserve(ptr %t298, i64 %t303, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t304 = load ptr, ptr %t298 - %t305 = getelementptr inbounds %S.ast.Node, ptr %t304, i64 %t302 - store %S.ast.Node %t301, ptr %t305 - store i64 %t303, ptr %t299 - %t306 = load %S.ast.Node, ptr %a284 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t306 -endif1642: - %t307 = load ptr, ptr %a1 - %t308 = call %S.lexer.Token @finch.parser.cur(ptr %t307) - store %S.lexer.Token %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = call %S.ast.Node @finch.parser.parseExpr(ptr %t310) - store %S.ast.Node %t311, ptr %a312 - %t313 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t314 = call ptr @finch_alloc(i64 %t313) - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 0 - store { ptr, i64, i64 } { ptr @.str.931, i64 1, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 1 - store { ptr, i64, i64 } { ptr @.str.932, i64 2, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 2 - store { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 3 - store { ptr, i64, i64 } { ptr @.str.934, i64 2, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 4 - store { ptr, i64, i64 } { ptr @.str.935, i64 2, i64 0 }, ptr %t319 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 5 - store { ptr, i64, i64 } { ptr @.str.936, i64 2, i64 0 }, ptr %t320 - %t321 = insertvalue { ptr, i64, i64 } undef, ptr %t314, 0 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 1 - %t323 = insertvalue { ptr, i64, i64 } %t322, i64 6, 2 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a324, i32 0, i32 1 - %t326 = load ptr, ptr %a1 - %t327 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t326) - store i64 -1, ptr %a328 - %t329 = load i64, ptr %t325 - %t330 = load ptr, ptr %a324 - store i64 0, ptr %a331 - br label %find.cond1643 -find.cond1643: - %t332 = load i64, ptr %a331 - %t333 = icmp slt i64 %t332, %t329 - br i1 %t333, label %find.body1644, label %find.end1647 -find.body1644: - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t330, i64 %t332 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } %t327, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %find.hit1645, label %find.next1646 -find.hit1645: - store i64 %t332, ptr %a328 - br label %find.end1647 -find.next1646: - %t340 = add i64 %t332, 1 - store i64 %t340, ptr %a331 - br label %find.cond1643 -find.end1647: - store { ptr, i64, i64 } %t327, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load i64, ptr %a328 - %t343 = icmp sge i64 %t342, 0 - br label %logic.from1648 -logic.from1648: - br i1 %t343, label %logic.rhs1649, label %logic.end1650 -logic.rhs1649: - %t344 = load ptr, ptr %a1 - %t345 = call i1 @finch.parser.sameLine(ptr %t344) - br label %logic.rend1651 -logic.rend1651: - br label %logic.end1650 -logic.end1650: - %t346 = phi i1 [ false, %logic.from1648 ], [ %t345, %logic.rend1651 ] - br i1 %t346, label %then1652, label %endif1654 -then1652: - %t347 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.937, i64 3, i64 0 }, ptr %a350 - %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) - %t352 = icmp eq i32 %t351, 0 - br label %logic.from1655 -logic.from1655: - br i1 %t352, label %logic.rhs1656, label %logic.end1657 -logic.rhs1656: - %t353 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t354 = load { ptr, i64, i64 }, ptr %t353 - store { ptr, i64, i64 } %t354, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.938, i64 6, i64 0 }, ptr %a356 - %t357 = call i32 @finch_str_eq(ptr %a355, ptr %a356) - %t358 = icmp eq i32 %t357, 0 - br label %logic.rend1658 -logic.rend1658: - br label %logic.end1657 -logic.end1657: - %t359 = phi i1 [ false, %logic.from1655 ], [ %t358, %logic.rend1658 ] - br label %logic.from1659 -logic.from1659: - br i1 %t359, label %logic.rhs1660, label %logic.end1661 -logic.rhs1660: - %t360 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t361 = load { ptr, i64, i64 }, ptr %t360 - store { ptr, i64, i64 } %t361, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.939, i64 5, i64 0 }, ptr %a363 - %t364 = call i32 @finch_str_eq(ptr %a362, ptr %a363) - %t365 = icmp eq i32 %t364, 0 - br label %logic.rend1662 -logic.rend1662: - br label %logic.end1661 -logic.end1661: - %t366 = phi i1 [ false, %logic.from1659 ], [ %t365, %logic.rend1662 ] - br i1 %t366, label %then1663, label %endif1665 -then1663: - %t367 = load ptr, ptr %a1 - %t368 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t367, %S.lexer.Token %t368, { ptr, i64, i64 } { ptr @.str.940, i64 66, i64 0 }) - br label %endif1665 -endif1665: - %t369 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.941, i64 6, i64 0 }, 0 - %t370 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t371 = load i64, ptr %t370 - %t372 = insertvalue %S.ast.Node %t369, i64 %t371, 11 - %t373 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t374 = load i64, ptr %t373 - %t375 = insertvalue %S.ast.Node %t372, i64 %t374, 12 - %t376 = load ptr, ptr %a1 - %t377 = icmp eq ptr %t376, null - br i1 %t377, label %panic1666, label %ok1667 -panic1666: - call void @finch_panic(ptr @.str.942, i64 584, ptr @.str.943) - unreachable -ok1667: - %t378 = getelementptr inbounds %S.parser.Parser, ptr %t376, i32 0, i32 3 - %t379 = load i64, ptr %t378 - %t380 = insertvalue %S.ast.Node %t375, i64 %t379, 13 - store %S.ast.Node %t380, ptr %a381 - %t382 = load ptr, ptr %a1 - %t383 = call %S.lexer.Token @finch.parser.next(ptr %t382) - %t384 = extractvalue %S.lexer.Token %t383, 0 - store { ptr, i64, i64 } %t384, ptr %a385 - call void @finch_str_copy(ptr %a386, ptr %a385) - %t387 = load { ptr, i64, i64 }, ptr %a386 - store %S.lexer.Token %t383, ptr %a388 - call void @finch.drop.S_lexer_Token(ptr %a388) - %t389 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 1 - %t390 = load { ptr, i64, i64 }, ptr %t389 - store { ptr, i64, i64 } %t387, ptr %t389 - store { ptr, i64, i64 } %t390, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i32 0, i32 1 - %t394 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t394, ptr %a395 - call void @finch.copy.S_ast_Node(ptr %a396, ptr %a395) - %t397 = load %S.ast.Node, ptr %a396 - %t398 = load i64, ptr %t393 - %t399 = add i64 %t398, 1 - call void @finch_arr_reserve(ptr %t392, i64 %t399, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t400 = load ptr, ptr %t392 - %t401 = getelementptr inbounds %S.ast.Node, ptr %t400, i64 %t398 - store %S.ast.Node %t397, ptr %t401 - store i64 %t399, ptr %t393 - %t402 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - %t404 = load ptr, ptr %a1 - %t405 = call %S.ast.Node @finch.parser.parseExpr(ptr %t404) - %t406 = load i64, ptr %t403 - %t407 = add i64 %t406, 1 - call void @finch_arr_reserve(ptr %t402, i64 %t407, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t408 = load ptr, ptr %t402 - %t409 = getelementptr inbounds %S.ast.Node, ptr %t408, i64 %t406 - store %S.ast.Node %t405, ptr %t409 - store i64 %t407, ptr %t403 - %t410 = load %S.ast.Node, ptr %a381 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t410 -endif1654: - %t411 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t412 = load { ptr, i64, i64 }, ptr %t411 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.944, i64 4, i64 0 }, ptr %a414 - %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) - %t416 = icmp eq i32 %t415, 0 - br label %logic.from1668 -logic.from1668: - br i1 %t416, label %logic.rhs1669, label %logic.end1670 -logic.rhs1669: - %t417 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t418 = load { ptr, i64, i64 }, ptr %t417 - store { ptr, i64, i64 } %t418, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.945, i64 6, i64 0 }, ptr %a420 - %t421 = call i32 @finch_str_eq(ptr %a419, ptr %a420) - %t422 = icmp eq i32 %t421, 0 - br label %logic.rend1671 -logic.rend1671: - br label %logic.end1670 -logic.end1670: - %t423 = phi i1 [ false, %logic.from1668 ], [ %t422, %logic.rend1671 ] - br label %logic.from1672 -logic.from1672: - br i1 %t423, label %logic.rhs1673, label %logic.end1674 -logic.rhs1673: - %t424 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.946, i64 3, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br label %logic.rend1675 -logic.rend1675: - br label %logic.end1674 -logic.end1674: - %t430 = phi i1 [ false, %logic.from1672 ], [ %t429, %logic.rend1675 ] - br label %logic.from1676 -logic.from1676: - br i1 %t430, label %logic.rhs1677, label %logic.end1678 -logic.rhs1677: - %t431 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t432 = load { ptr, i64, i64 }, ptr %t431 - store { ptr, i64, i64 } %t432, ptr %a433 - store { ptr, i64, i64 } { ptr @.str.947, i64 2, i64 0 }, ptr %a434 - %t435 = call i32 @finch_str_eq(ptr %a433, ptr %a434) - %t436 = icmp eq i32 %t435, 0 - br label %logic.rend1679 -logic.rend1679: - br label %logic.end1678 -logic.end1678: - %t437 = phi i1 [ false, %logic.from1676 ], [ %t436, %logic.rend1679 ] - br i1 %t437, label %then1680, label %endif1682 -then1680: - %t438 = load ptr, ptr %a1 - %t439 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t438, %S.lexer.Token %t439, { ptr, i64, i64 } { ptr @.str.948, i64 37, i64 0 }) - br label %endif1682 -endif1682: - %t440 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.949, i64 4, i64 0 }, 0 - %t441 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t442 = load i64, ptr %t441 - %t443 = insertvalue %S.ast.Node %t440, i64 %t442, 11 - %t444 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t445 = load i64, ptr %t444 - %t446 = insertvalue %S.ast.Node %t443, i64 %t445, 12 - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic1683, label %ok1684 -panic1683: - call void @finch_panic(ptr @.str.950, i64 593, ptr @.str.951) - unreachable -ok1684: - %t449 = getelementptr inbounds %S.parser.Parser, ptr %t447, i32 0, i32 3 - %t450 = load i64, ptr %t449 - %t451 = insertvalue %S.ast.Node %t446, i64 %t450, 13 - store %S.ast.Node %t451, ptr %a452 - %t453 = getelementptr inbounds %S.ast.Node, ptr %a452, i32 0, i32 9 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i32 0, i32 1 - %t455 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t455, ptr %a456 - call void @finch.copy.S_ast_Node(ptr %a457, ptr %a456) - %t458 = load %S.ast.Node, ptr %a457 - %t459 = load i64, ptr %t454 - %t460 = add i64 %t459, 1 - call void @finch_arr_reserve(ptr %t453, i64 %t460, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t461 = load ptr, ptr %t453 - %t462 = getelementptr inbounds %S.ast.Node, ptr %t461, i64 %t459 - store %S.ast.Node %t458, ptr %t462 - store i64 %t460, ptr %t454 - %t463 = load %S.ast.Node, ptr %a452 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t463 -} - -define internal %S.ast.Node @finch.parser.parseIf(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.952, 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.953, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.954, i64 4, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseExpr(ptr %t10) - %t12 = load i64, ptr %t9 - %t13 = add i64 %t12, 1 - call void @finch_arr_reserve(ptr %t8, i64 %t13, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t14 = load ptr, ptr %t8 - %t15 = getelementptr inbounds %S.ast.Node, ptr %t14, i64 %t12 - store %S.ast.Node %t11, ptr %t15 - store i64 %t13, ptr %t9 - %t16 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 - %t18 = load ptr, ptr %a1 - %t19 = call %S.ast.Node @finch.parser.parseBlock(ptr %t18) - %t20 = load i64, ptr %t17 - %t21 = add i64 %t20, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t21, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t22 = load ptr, ptr %t16 - %t23 = getelementptr inbounds %S.ast.Node, ptr %t22, i64 %t20 - store %S.ast.Node %t19, ptr %t23 - store i64 %t21, ptr %t17 - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.accept(ptr %t24, { ptr, i64, i64 } { ptr @.str.955, i64 4, i64 0 }) - br i1 %t25, label %then1685, label %endif1687 -then1685: - %t26 = load ptr, ptr %a1 - %t27 = call i1 @finch.parser.at(ptr %t26, { ptr, i64, i64 } { ptr @.str.956, i64 2, i64 0 }) - br i1 %t27, label %then1688, label %else1689 -then1688: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.parseIf(ptr %t30) - %t32 = load i64, ptr %t29 - %t33 = add i64 %t32, 1 - call void @finch_arr_reserve(ptr %t28, i64 %t33, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t34 = load ptr, ptr %t28 - %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 - store %S.ast.Node %t31, ptr %t35 - store i64 %t33, ptr %t29 - br label %endif1690 -else1689: - %t36 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load ptr, ptr %a1 - %t39 = call %S.ast.Node @finch.parser.parseBlock(ptr %t38) - %t40 = load i64, ptr %t37 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t36 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t37 - br label %endif1690 -endif1690: - br label %endif1687 -endif1687: - %t44 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t44 -} - -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.957, 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 %then1691, label %endif1693 -then1691: - ret i64 1 -endif1693: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.958, 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 %then1694, label %endif1696 -then1694: - ret i64 2 -endif1696: - %t12 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.959, 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.from1697 -logic.from1697: - br i1 %t16, label %logic.end1699, label %logic.rhs1698 -logic.rhs1698: - %t17 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.960, 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.rend1700 -logic.rend1700: - br label %logic.end1699 -logic.end1699: - %t22 = phi i1 [ true, %logic.from1697 ], [ %t21, %logic.rend1700 ] - br label %logic.from1701 -logic.from1701: - br i1 %t22, label %logic.end1703, label %logic.rhs1702 -logic.rhs1702: - %t23 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.961, 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.rend1704 -logic.rend1704: - br label %logic.end1703 -logic.end1703: - %t28 = phi i1 [ true, %logic.from1701 ], [ %t27, %logic.rend1704 ] - br label %logic.from1705 -logic.from1705: - br i1 %t28, label %logic.end1707, label %logic.rhs1706 -logic.rhs1706: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.962, 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.rend1708 -logic.rend1708: - br label %logic.end1707 -logic.end1707: - %t34 = phi i1 [ true, %logic.from1705 ], [ %t33, %logic.rend1708 ] - br label %logic.from1709 -logic.from1709: - br i1 %t34, label %logic.end1711, label %logic.rhs1710 -logic.rhs1710: - %t35 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.963, 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.rend1712 -logic.rend1712: - br label %logic.end1711 -logic.end1711: - %t40 = phi i1 [ true, %logic.from1709 ], [ %t39, %logic.rend1712 ] - br label %logic.from1713 -logic.from1713: - br i1 %t40, label %logic.end1715, label %logic.rhs1714 -logic.rhs1714: - %t41 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.964, 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.rend1716 -logic.rend1716: - br label %logic.end1715 -logic.end1715: - %t46 = phi i1 [ true, %logic.from1713 ], [ %t45, %logic.rend1716 ] - br i1 %t46, label %then1717, label %endif1719 -then1717: - ret i64 3 -endif1719: - %t47 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.965, 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.from1720 -logic.from1720: - br i1 %t51, label %logic.end1722, label %logic.rhs1721 -logic.rhs1721: - %t52 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.966, 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.rend1723 -logic.rend1723: - br label %logic.end1722 -logic.end1722: - %t57 = phi i1 [ true, %logic.from1720 ], [ %t56, %logic.rend1723 ] - br label %logic.from1724 -logic.from1724: - br i1 %t57, label %logic.end1726, label %logic.rhs1725 -logic.rhs1725: - %t58 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.967, 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.rend1727 -logic.rend1727: - br label %logic.end1726 -logic.end1726: - %t63 = phi i1 [ true, %logic.from1724 ], [ %t62, %logic.rend1727 ] - br label %logic.from1728 -logic.from1728: - br i1 %t63, label %logic.end1730, label %logic.rhs1729 -logic.rhs1729: - %t64 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.968, 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.rend1731 -logic.rend1731: - br label %logic.end1730 -logic.end1730: - %t69 = phi i1 [ true, %logic.from1728 ], [ %t68, %logic.rend1731 ] - br i1 %t69, label %then1732, label %endif1734 -then1732: - ret i64 4 -endif1734: - %t70 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.969, 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.from1735 -logic.from1735: - br i1 %t74, label %logic.end1737, label %logic.rhs1736 -logic.rhs1736: - %t75 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.970, 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.rend1738 -logic.rend1738: - br label %logic.end1737 -logic.end1737: - %t80 = phi i1 [ true, %logic.from1735 ], [ %t79, %logic.rend1738 ] - br label %logic.from1739 -logic.from1739: - br i1 %t80, label %logic.end1741, label %logic.rhs1740 -logic.rhs1740: - %t81 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.971, 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.rend1742 -logic.rend1742: - br label %logic.end1741 -logic.end1741: - %t86 = phi i1 [ true, %logic.from1739 ], [ %t85, %logic.rend1742 ] - br label %logic.from1743 -logic.from1743: - br i1 %t86, label %logic.end1745, label %logic.rhs1744 -logic.rhs1744: - %t87 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.972, 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.rend1746 -logic.rend1746: - br label %logic.end1745 -logic.end1745: - %t92 = phi i1 [ true, %logic.from1743 ], [ %t91, %logic.rend1746 ] - br label %logic.from1747 -logic.from1747: - br i1 %t92, label %logic.end1749, label %logic.rhs1748 -logic.rhs1748: - %t93 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.973, 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.rend1750 -logic.rend1750: - br label %logic.end1749 -logic.end1749: - %t98 = phi i1 [ true, %logic.from1747 ], [ %t97, %logic.rend1750 ] - br label %logic.from1751 -logic.from1751: - br i1 %t98, label %logic.end1753, label %logic.rhs1752 -logic.rhs1752: - %t99 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.974, 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.rend1754 -logic.rend1754: - br label %logic.end1753 -logic.end1753: - %t104 = phi i1 [ true, %logic.from1751 ], [ %t103, %logic.rend1754 ] - br i1 %t104, label %then1755, label %endif1757 -then1755: - ret i64 5 -endif1757: - 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 - %a15 = alloca %S.ast.Node, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a22 = alloca %S.ast.Node, align 16 - %a23 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1) - 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.from1758 -logic.from1758: - br i1 %t7, label %logic.end1760, label %logic.rhs1759 -logic.rhs1759: - %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.975, i64 2, i64 0 }) - %t10 = xor i1 %t9, true - br label %logic.rend1761 -logic.rend1761: - br label %logic.end1760 -logic.end1760: - %t11 = phi i1 [ true, %logic.from1758 ], [ %t10, %logic.rend1761 ] - br i1 %t11, label %then1762, label %endif1764 -then1762: - %t12 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t12 -endif1764: - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.node(ptr %t13, { ptr, i64, i64 } { ptr @.str.976, i64 2, i64 0 }) - store %S.ast.Node %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = call %S.lexer.Token @finch.parser.next(ptr %t16) - store %S.lexer.Token %t17, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - %t19 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t21, ptr %a22 - call void @finch.copy.S_ast_Node(ptr %a23, ptr %a22) - %t24 = load %S.ast.Node, ptr %a23 - %t25 = load i64, ptr %t20 - %t26 = add i64 %t25, 1 - call void @finch_arr_reserve(ptr %t19, i64 %t26, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t27 = load ptr, ptr %t19 - %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 %t25 - store %S.ast.Node %t24, ptr %t28 - store i64 %t26, ptr %t20 - %t29 = load ptr, ptr %a1 - %t30 = call i1 @finch.parser.at(ptr %t29, { ptr, i64, i64 } { ptr @.str.977, i64 1, i64 0 }) - br i1 %t30, label %then1765, label %else1766 -then1765: - %t31 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 6 - store i1 true, ptr %t31 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i32 0, i32 1 - %t34 = load ptr, ptr %a1 - %t35 = call %S.ast.Node @finch.parser.parseBlock(ptr %t34) - %t36 = load i64, ptr %t33 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t32, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t32 - %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 - store %S.ast.Node %t35, ptr %t39 - store i64 %t37, ptr %t33 - br label %endif1767 -else1766: - %t40 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseExpr(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - br label %endif1767 -endif1767: - %t48 = load %S.ast.Node, ptr %a15 - call void @finch.drop.S_ast_Node(ptr %a4) - ret %S.ast.Node %t48 -} - -define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a11 = alloca %S.ast.Node, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.ast.Node, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.lexer.Token, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a55 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load i64, ptr %a2 - %t4 = icmp sgt i64 %t3, 5 - br i1 %t4, label %then1768, label %endif1770 -then1768: - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) - ret %S.ast.Node %t6 -endif1770: - %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.cond1771 -while.cond1771: - %t12 = load ptr, ptr %a1 - %t13 = call i1 @finch.parser.sameLine(ptr %t12) - br label %logic.from1774 -logic.from1774: - br i1 %t13, label %logic.rhs1775, label %logic.end1776 -logic.rhs1775: - %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) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load i64, ptr %a2 - %t19 = icmp eq i64 %t16, %t18 - br label %logic.rend1777 -logic.rend1777: - br label %logic.end1776 -logic.end1776: - %t20 = phi i1 [ false, %logic.from1774 ], [ %t19, %logic.rend1777 ] - br i1 %t20, label %while.body1772, label %while.end1773 -while.body1772: - %t21 = load ptr, ptr %a1 - %t22 = call %S.ast.Node @finch.parser.node(ptr %t21, { ptr, i64, i64 } { ptr @.str.978, i64 6, i64 0 }) - store %S.ast.Node %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.next(ptr %t24) - %t26 = extractvalue %S.lexer.Token %t25, 0 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_copy(ptr %a28, ptr %a27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store %S.lexer.Token %t25, ptr %a30 - call void @finch.drop.S_lexer_Token(ptr %a30) - %t31 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t29, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 - %t36 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t36, ptr %a37 - call void @finch.copy.S_ast_Node(ptr %a38, ptr %a37) - %t39 = load %S.ast.Node, ptr %a38 - %t40 = load i64, ptr %t35 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t34, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t34 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a2 - %t48 = add i64 %t47, 1 - %t49 = call %S.ast.Node @finch.parser.parseBinary(ptr %t46, i64 %t48) - %t50 = load i64, ptr %t45 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t44 - %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 %t50 - store %S.ast.Node %t49, ptr %t53 - store i64 %t51, ptr %t45 - %t54 = load %S.ast.Node, ptr %a23 - store %S.ast.Node %t54, ptr %a55 - call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) - %t57 = load %S.ast.Node, ptr %a56 - %t58 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t57, ptr %a11 - store %S.ast.Node %t58, ptr %a59 - call void @finch.drop.S_ast_Node(ptr %a59) - call void @finch.drop.S_ast_Node(ptr %a23) - br label %while.cond1771 -while.end1773: - %t60 = load %S.ast.Node, ptr %a11 - ret %S.ast.Node %t60 -} - -define internal %S.ast.Node @finch.parser.parseUnary(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.ast.Node, align 16 - %a9 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.979, i64 3, i64 0 }) - br i1 %t3, label %then1778, label %endif1780 -then1778: - %t4 = load ptr, ptr %a1 - %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.980, 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) - store %S.lexer.Token %t8, ptr %a9 - call void @finch.drop.S_lexer_Token(ptr %a9) - %t10 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load ptr, ptr %a1 - %t13 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t12) - %t14 = load i64, ptr %t11 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %t10 - %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 - store %S.ast.Node %t13, ptr %t17 - store i64 %t15, ptr %t11 - %t18 = load %S.ast.Node, ptr %a6 - ret %S.ast.Node %t18 -endif1780: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.981, i64 1, i64 0 }) - br label %logic.from1781 -logic.from1781: - br i1 %t20, label %logic.end1783, label %logic.rhs1782 -logic.rhs1782: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.982, i64 1, i64 0 }) - br label %logic.rend1784 -logic.rend1784: - br label %logic.end1783 -logic.end1783: - %t23 = phi i1 [ true, %logic.from1781 ], [ %t22, %logic.rend1784 ] - br label %logic.from1785 -logic.from1785: - br i1 %t23, label %logic.end1787, label %logic.rhs1786 -logic.rhs1786: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }) - br label %logic.rend1788 -logic.rend1788: - br label %logic.end1787 -logic.end1787: - %t26 = phi i1 [ true, %logic.from1785 ], [ %t25, %logic.rend1788 ] - br i1 %t26, label %then1789, label %endif1791 -then1789: - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.node(ptr %t27, { ptr, i64, i64 } { ptr @.str.984, i64 5, i64 0 }) - store %S.ast.Node %t28, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = call %S.lexer.Token @finch.parser.next(ptr %t30) - %t32 = extractvalue %S.lexer.Token %t31, 0 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_copy(ptr %a34, ptr %a33) - %t35 = load { ptr, i64, i64 }, ptr %a34 - store %S.lexer.Token %t31, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - %t37 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t35, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseUnary(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - %t48 = load %S.ast.Node, ptr %a29 - ret %S.ast.Node %t48 -endif1791: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t49) - ret %S.ast.Node %t50 -} - -define internal void @finch.parser.parseArgs(ptr %p0, ptr %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca ptr, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a17 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.985, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.986, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1792, label %ok1793 -panic1792: - call void @finch_panic(ptr @.str.987, i64 686, ptr @.str.988) - unreachable -ok1793: - %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 2 - %t9 = load i64, ptr %t8 - %t10 = add i64 %t9, 1 - store i64 %t10, ptr %t8 - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.989, i64 1, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1794, label %endif1796 -then1794: - br label %while.cond1797 -while.cond1797: - %t14 = load ptr, ptr %a1 - %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.990, i64 1, i64 0 }) - %t16 = xor i1 %t15, true - br i1 %t16, label %while.body1798, label %while.end1799 -while.body1798: - store { ptr, i64, i64 } { ptr @.str.991, i64 0, i64 0 }, ptr %a17 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.992, i64 5, i64 0 }) - br label %logic.from1800 -logic.from1800: - br i1 %t19, label %logic.rhs1801, label %logic.end1802 -logic.rhs1801: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t20, i64 1) - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.993, i64 1, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - br label %logic.rend1803 -logic.rend1803: - br label %logic.end1802 -logic.end1802: - %t27 = phi i1 [ false, %logic.from1800 ], [ %t25, %logic.rend1803 ] - br i1 %t27, label %then1804, label %endif1806 -then1804: - %t28 = load ptr, ptr %a1 - %t29 = call %S.lexer.Token @finch.parser.next(ptr %t28) - %t30 = extractvalue %S.lexer.Token %t29, 1 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_copy(ptr %a32, ptr %a31) - %t33 = load { ptr, i64, i64 }, ptr %a32 - store %S.lexer.Token %t29, ptr %a34 - call void @finch.drop.S_lexer_Token(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t33, ptr %a17 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.next(ptr %t37) - store %S.lexer.Token %t38, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - br label %endif1806 -endif1806: - %t40 = load ptr, ptr %a2 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic1807, label %ok1808 -panic1807: - call void @finch_panic(ptr @.str.994, i64 694, ptr @.str.995) - unreachable -ok1808: - %t42 = getelementptr inbounds %S.ast.Node, ptr %t40, i32 0, i32 10 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - %t48 = load i64, ptr %t43 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t42 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t43 - %t52 = load ptr, ptr %a2 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic1809, label %ok1810 -panic1809: - call void @finch_panic(ptr @.str.996, i64 695, ptr @.str.997) - unreachable -ok1810: - %t54 = getelementptr inbounds %S.ast.Node, ptr %t52, i32 0, i32 9 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 - %t56 = load ptr, ptr %a1 - %t57 = call %S.ast.Node @finch.parser.parseExpr(ptr %t56) - %t58 = load i64, ptr %t55 - %t59 = add i64 %t58, 1 - call void @finch_arr_reserve(ptr %t54, i64 %t59, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t60 = load ptr, ptr %t54 - %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i64 %t58 - store %S.ast.Node %t57, ptr %t61 - store i64 %t59, ptr %t55 - %t62 = load ptr, ptr %a1 - %t63 = call i1 @finch.parser.accept(ptr %t62, { ptr, i64, i64 } { ptr @.str.998, i64 1, i64 0 }) - %t64 = xor i1 %t63, true - br i1 %t64, label %then1811, label %endif1813 -then1811: - call void @finch_str_drop(ptr %a17) - br label %while.end1799 -endif1813: - call void @finch_str_drop(ptr %a17) - br label %while.cond1797 -while.end1799: - br label %endif1796 -endif1796: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic1814, label %ok1815 -panic1814: - call void @finch_panic(ptr @.str.999, i64 701, ptr @.str.1000) - unreachable -ok1815: - %t67 = getelementptr inbounds %S.parser.Parser, ptr %t65, i32 0, i32 2 - %t68 = load i64, ptr %t67 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %t67 - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.1001, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1002, i64 3, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - 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 - %a14 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.ast.Node, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a40 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 - %a57 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a69 = alloca %S.ast.Node, align 16 - %a70 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.ast.Node, align 16 - %a94 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parsePrimary(ptr %t2) - store %S.ast.Node %t3, ptr %a4 - br label %while.cond1816 -while.cond1816: - %t5 = load ptr, ptr %a1 - %t6 = call i1 @finch.parser.sameLine(ptr %t5) - br i1 %t6, label %while.body1817, label %while.end1818 -while.body1817: - %t7 = load ptr, ptr %a1 - %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.1003, i64 1, i64 0 }) - br i1 %t8, label %then1819, label %else1820 -then1819: - %t9 = load ptr, ptr %a1 - %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.1004, 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) - store %S.lexer.Token %t13, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.expect(ptr %t15, { ptr, i64, i64 } { ptr @.str.1005, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.1006, i64 16, i64 0 }) - %t17 = extractvalue %S.lexer.Token %t16, 1 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store %S.lexer.Token %t16, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t20, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t27, ptr %a28 - call void @finch.copy.S_ast_Node(ptr %a29, ptr %a28) - %t30 = load %S.ast.Node, ptr %a29 - %t31 = load i64, ptr %t26 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t25 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 - store %S.ast.Node %t30, ptr %t34 - store i64 %t32, ptr %t26 - %t35 = load ptr, ptr %a1 - %t36 = call i1 @finch.parser.at(ptr %t35, { ptr, i64, i64 } { ptr @.str.1007, i64 1, i64 0 }) - br label %logic.from1822 -logic.from1822: - br i1 %t36, label %logic.rhs1823, label %logic.end1824 -logic.rhs1823: - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.cur(ptr %t37) - %t39 = extractvalue %S.lexer.Token %t38, 4 - store %S.lexer.Token %t38, ptr %a40 - call void @finch.drop.S_lexer_Token(ptr %a40) - %t41 = xor i1 %t39, true - br label %logic.rend1825 -logic.rend1825: - br label %logic.end1824 -logic.end1824: - %t42 = phi i1 [ false, %logic.from1822 ], [ %t41, %logic.rend1825 ] - br i1 %t42, label %then1826, label %endif1828 -then1826: - %t43 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.1008, i64 6, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t46, ptr %a11) - br label %endif1828 -endif1828: - %t47 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t47, ptr %a48 - call void @finch.copy.S_ast_Node(ptr %a49, ptr %a48) - %t50 = load %S.ast.Node, ptr %a49 - %t51 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t50, ptr %a4 - store %S.ast.Node %t51, ptr %a52 - call void @finch.drop.S_ast_Node(ptr %a52) - call void @finch.drop.S_ast_Node(ptr %a11) - br label %endif1821 -else1820: - %t53 = load ptr, ptr %a1 - %t54 = call i1 @finch.parser.at(ptr %t53, { ptr, i64, i64 } { ptr @.str.1009, i64 1, i64 0 }) - br i1 %t54, label %then1829, label %else1830 -then1829: - %t55 = load ptr, ptr %a1 - %t56 = call %S.ast.Node @finch.parser.node(ptr %t55, { ptr, i64, i64 } { ptr @.str.1010, i64 5, i64 0 }) - store %S.ast.Node %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = call %S.lexer.Token @finch.parser.next(ptr %t58) - store %S.lexer.Token %t59, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic1832, label %ok1833 -panic1832: - call void @finch_panic(ptr @.str.1011, i64 721, ptr @.str.1012) - unreachable -ok1833: - %t63 = getelementptr inbounds %S.parser.Parser, ptr %t61, i32 0, i32 2 - %t64 = load i64, ptr %t63 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %t63 - %t66 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 - %t68 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t68, ptr %a69 - call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) - %t71 = load %S.ast.Node, ptr %a70 - %t72 = load i64, ptr %t67 - %t73 = add i64 %t72, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t74 = load ptr, ptr %t66 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 - store %S.ast.Node %t71, ptr %t75 - store i64 %t73, ptr %t67 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic1834, label %ok1835 -panic1834: - call void @finch_panic(ptr @.str.1013, i64 724, ptr @.str.1014) - unreachable -ok1835: - %t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 2 - %t87 = load i64, ptr %t86 - %t88 = sub i64 %t87, 1 - store i64 %t88, ptr %t86 - %t89 = load ptr, ptr %a1 - %t90 = call %S.lexer.Token @finch.parser.expect(ptr %t89, { ptr, i64, i64 } { ptr @.str.1015, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1016, i64 3, i64 0 }) - store %S.lexer.Token %t90, ptr %a91 - call void @finch.drop.S_lexer_Token(ptr %a91) - %t92 = load %S.ast.Node, ptr %a57 - store %S.ast.Node %t92, ptr %a93 - call void @finch.copy.S_ast_Node(ptr %a94, ptr %a93) - %t95 = load %S.ast.Node, ptr %a94 - %t96 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t95, ptr %a4 - store %S.ast.Node %t96, ptr %a97 - call void @finch.drop.S_ast_Node(ptr %a97) - call void @finch.drop.S_ast_Node(ptr %a57) - br label %endif1831 -else1830: - %t98 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t98 -endif1831: - br label %endif1821 -endif1821: - br label %while.cond1816 -while.end1818: - %t99 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t99 -} - -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 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca %S.lexer.Token, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.lexer.Token, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.lexer.Token, align 16 - %a122 = alloca %S.ast.Node, align 16 - %a130 = alloca %S.lexer.Token, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.lexer.Token, align 16 - %a219 = alloca %S.lexer.Token, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.lexer.Token, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca %S.lexer.Token, align 16 - %a268 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.lexer.Token, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca %S.lexer.Token, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.lexer.Token @finch.parser.cur(ptr %t2) - store %S.lexer.Token %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.1017, 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.1018, 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.from1836 -logic.from1836: - br i1 %t18, label %logic.end1838, label %logic.rhs1837 -logic.rhs1837: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1019, 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.rend1839 -logic.rend1839: - br label %logic.end1838 -logic.end1838: - %t24 = phi i1 [ true, %logic.from1836 ], [ %t23, %logic.rend1839 ] - br label %logic.from1840 -logic.from1840: - br i1 %t24, label %logic.end1842, label %logic.rhs1841 -logic.rhs1841: - %t25 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1020, 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.rend1843 -logic.rend1843: - br label %logic.end1842 -logic.end1842: - %t30 = phi i1 [ true, %logic.from1840 ], [ %t29, %logic.rend1843 ] - br i1 %t30, label %then1844, label %endif1846 -then1844: - %t31 = load ptr, ptr %a1 - %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) - store %S.lexer.Token %t32, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a13 - %t35 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } %t34, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = load { ptr, i64, i64 }, ptr %t35 - store { ptr, i64, i64 } %t38, ptr %t35 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_copy(ptr %a45, ptr %a44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - %t47 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t46, ptr %t43 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t49 -endif1846: - %t50 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1021, i64 6, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1847, label %endif1849 -then1847: - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.next(ptr %t55) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } { ptr @.str.1022, i64 3, i64 0 }, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t62, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t66, ptr %t63 - store { ptr, i64, i64 } %t67, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t69 -endif1849: - %t70 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1023, i64 4, i64 0 }, ptr %a72 - %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) - %t74 = icmp ne i32 %t73, 0 - br label %logic.from1850 -logic.from1850: - br i1 %t74, label %logic.end1852, label %logic.rhs1851 -logic.rhs1851: - %t75 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1024, i64 5, i64 0 }, ptr %a77 - %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) - %t79 = icmp ne i32 %t78, 0 - br label %logic.rend1853 -logic.rend1853: - br label %logic.end1852 -logic.end1852: - %t80 = phi i1 [ true, %logic.from1850 ], [ %t79, %logic.rend1853 ] - br i1 %t80, label %then1854, label %endif1856 -then1854: - %t81 = load ptr, ptr %a1 - %t82 = call %S.lexer.Token @finch.parser.next(ptr %t81) - store %S.lexer.Token %t82, ptr %a83 - call void @finch.drop.S_lexer_Token(ptr %a83) - %t84 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } { ptr @.str.1025, i64 4, i64 0 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a13 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t94 -endif1856: - %t95 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.1026, i64 4, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then1857, label %endif1859 -then1857: - %t100 = load ptr, ptr %a1 - %t101 = call %S.lexer.Token @finch.parser.next(ptr %t100) - store %S.lexer.Token %t101, ptr %a102 - call void @finch.drop.S_lexer_Token(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } { ptr @.str.1027, i64 4, i64 0 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t106 -endif1859: - %t107 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1028, i64 1, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then1860, label %endif1862 -then1860: - %t112 = load ptr, ptr %a1 - %t113 = call %S.lexer.Token @finch.parser.next(ptr %t112) - store %S.lexer.Token %t113, ptr %a114 - call void @finch.drop.S_lexer_Token(ptr %a114) - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic1863, label %ok1864 -panic1863: - call void @finch_panic(ptr @.str.1029, i64 763, ptr @.str.1030) - unreachable -ok1864: - %t117 = getelementptr inbounds %S.parser.Parser, ptr %t115, i32 0, i32 2 - %t118 = load i64, ptr %t117 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %t117 - %t120 = load ptr, ptr %a1 - %t121 = call %S.ast.Node @finch.parser.parseExpr(ptr %t120) - store %S.ast.Node %t121, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic1865, label %ok1866 -panic1865: - call void @finch_panic(ptr @.str.1031, i64 765, ptr @.str.1032) - unreachable -ok1866: - %t125 = getelementptr inbounds %S.parser.Parser, ptr %t123, i32 0, i32 2 - %t126 = load i64, ptr %t125 - %t127 = sub i64 %t126, 1 - store i64 %t127, ptr %t125 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.expect(ptr %t128, { ptr, i64, i64 } { ptr @.str.1033, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1034, i64 3, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - %t131 = load %S.ast.Node, ptr %a122 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t131 -endif1862: - %t132 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1035, i64 5, i64 0 }, ptr %a134 - %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) - %t136 = icmp ne i32 %t135, 0 - br i1 %t136, label %then1867, label %endif1869 -then1867: - %t137 = load ptr, ptr %a1 - %t138 = call %S.ast.Node @finch.parser.parseMatch(ptr %t137, i1 true) - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t138 -endif1869: - %t139 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1036, i64 1, i64 0 }, ptr %a141 - %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) - %t143 = icmp ne i32 %t142, 0 - br i1 %t143, label %then1870, label %endif1872 -then1870: - %t144 = load ptr, ptr %a1 - %t145 = call %S.lexer.Token @finch.parser.next(ptr %t144) - store %S.lexer.Token %t145, ptr %a146 - call void @finch.drop.S_lexer_Token(ptr %a146) - %t147 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.1037, i64 5, i64 0 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic1873, label %ok1874 -panic1873: - call void @finch_panic(ptr @.str.1038, i64 775, ptr @.str.1039) - unreachable -ok1874: - %t152 = getelementptr inbounds %S.parser.Parser, ptr %t150, i32 0, i32 2 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - store i64 %t154, ptr %t152 - %t155 = load ptr, ptr %a1 - %t156 = call i1 @finch.parser.at(ptr %t155, { ptr, i64, i64 } { ptr @.str.1040, i64 1, i64 0 }) - br label %logic.from1875 -logic.from1875: - br i1 %t156, label %logic.rhs1876, label %logic.end1877 -logic.rhs1876: - %t157 = load ptr, ptr %a1 - %t158 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t157, i64 1) - store { ptr, i64, i64 } %t158, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.1041, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - br label %logic.rend1878 -logic.rend1878: - br label %logic.end1877 -logic.end1877: - %t164 = phi i1 [ false, %logic.from1875 ], [ %t162, %logic.rend1878 ] - br i1 %t164, label %then1879, label %endif1881 -then1879: - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } { ptr @.str.1042, i64 3, i64 0 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1881 -endif1881: - br label %while.cond1882 -while.cond1882: - %t171 = load ptr, ptr %a1 - %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1043, i64 1, i64 0 }) - %t173 = xor i1 %t172, true - br i1 %t173, label %while.body1883, label %while.end1884 -while.body1883: - %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 - %t176 = load ptr, ptr %a1 - %t177 = call %S.ast.Node @finch.parser.parseExpr(ptr %t176) - %t178 = load i64, ptr %t175 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t174, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t174 - %t181 = getelementptr inbounds %S.ast.Node, ptr %t180, i64 %t178 - store %S.ast.Node %t177, ptr %t181 - store i64 %t179, ptr %t175 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = icmp eq i64 %t184, 1 - br label %logic.from1885 -logic.from1885: - br i1 %t185, label %logic.rhs1886, label %logic.end1887 -logic.rhs1886: - %t186 = load ptr, ptr %a1 - %t187 = call i1 @finch.parser.at(ptr %t186, { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }) - br label %logic.rend1888 -logic.rend1888: - br label %logic.end1887 -logic.end1887: - %t188 = phi i1 [ false, %logic.from1885 ], [ %t187, %logic.rend1888 ] - br i1 %t188, label %then1889, label %endif1891 -then1889: - %t189 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.1045, i64 3, i64 0 }, ptr %t189 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - br label %endif1891 -endif1891: - %t192 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.1046, i64 3, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then1892, label %endif1894 -then1892: - %t198 = load ptr, ptr %a1 - %t199 = call %S.lexer.Token @finch.parser.expect(ptr %t198, { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1048, i64 41, i64 0 }) - store %S.lexer.Token %t199, ptr %a200 - call void @finch.drop.S_lexer_Token(ptr %a200) - %t201 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load ptr, ptr %a1 - %t204 = call %S.ast.Node @finch.parser.parseExpr(ptr %t203) - %t205 = load i64, ptr %t202 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t201, i64 %t206, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t201 - %t208 = getelementptr inbounds %S.ast.Node, ptr %t207, i64 %t205 - store %S.ast.Node %t204, ptr %t208 - store i64 %t206, ptr %t202 - br label %endif1894 -endif1894: - %t209 = load ptr, ptr %a1 - %t210 = call i1 @finch.parser.accept(ptr %t209, { ptr, i64, i64 } { ptr @.str.1049, i64 1, i64 0 }) - %t211 = xor i1 %t210, true - br i1 %t211, label %then1895, label %endif1897 -then1895: - br label %while.end1884 -endif1897: - br label %while.cond1882 -while.end1884: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic1898, label %ok1899 -panic1898: - call void @finch_panic(ptr @.str.1050, i64 793, ptr @.str.1051) - unreachable -ok1899: - %t214 = getelementptr inbounds %S.parser.Parser, ptr %t212, i32 0, i32 2 - %t215 = load i64, ptr %t214 - %t216 = sub i64 %t215, 1 - store i64 %t216, ptr %t214 - %t217 = load ptr, ptr %a1 - %t218 = call %S.lexer.Token @finch.parser.expect(ptr %t217, { ptr, i64, i64 } { ptr @.str.1052, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1053, i64 3, i64 0 }) - store %S.lexer.Token %t218, ptr %a219 - call void @finch.drop.S_lexer_Token(ptr %a219) - %t220 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t220 -endif1872: - %t221 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t221, ptr %a222 - store { ptr, i64, i64 } { ptr @.str.1054, i64 5, i64 0 }, ptr %a223 - %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) - %t225 = icmp ne i32 %t224, 0 - br i1 %t225, label %then1900, label %endif1902 -then1900: - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.next(ptr %t226) - store %S.lexer.Token %t227, ptr %a228 - call void @finch.drop.S_lexer_Token(ptr %a228) - %t229 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t230 = load { ptr, i64, i64 }, ptr %t229 - %t231 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_copy(ptr %a233, ptr %a232) - %t234 = load { ptr, i64, i64 }, ptr %a233 - %t235 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t234, ptr %t231 - store { ptr, i64, i64 } %t235, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load ptr, ptr %a1 - %t238 = call i1 @finch.parser.at(ptr %t237, { ptr, i64, i64 } { ptr @.str.1055, i64 1, i64 0 }) - br label %logic.from1903 -logic.from1903: - br i1 %t238, label %logic.rhs1904, label %logic.end1905 -logic.rhs1904: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic1906, label %ok1907 -panic1906: - call void @finch_panic(ptr @.str.1056, i64 800, ptr @.str.1057) - unreachable -ok1907: - %t241 = getelementptr inbounds %S.parser.Parser, ptr %t239, i32 0, i32 0 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic1908, label %ok1909 -panic1908: - call void @finch_panic(ptr @.str.1058, i64 800, ptr @.str.1059) - unreachable -ok1909: - %t244 = getelementptr inbounds %S.parser.Parser, ptr %t242, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = sub i64 %t245, 1 - %t247 = load { ptr, i64, i64 }, ptr %t241 - %t248 = extractvalue { ptr, i64, i64 } %t247, 1 - %t249 = icmp uge i64 %t246, %t248 - br i1 %t249, label %range1910, label %inrange1911 -range1910: - call void @finch_panic_index(ptr @.str.1060, i64 800, i64 %t246, i64 %t248) - unreachable -inrange1911: - %t250 = extractvalue { ptr, i64, i64 } %t247, 0 - %t251 = getelementptr inbounds %S.lexer.Token, ptr %t250, i64 %t246 - %t252 = getelementptr inbounds %S.lexer.Token, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.1061, i64 5, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br label %logic.rend1912 -logic.rend1912: - br label %logic.end1905 -logic.end1905: - %t258 = phi i1 [ false, %logic.from1903 ], [ %t257, %logic.rend1912 ] - br label %logic.from1913 -logic.from1913: - br i1 %t258, label %logic.rhs1914, label %logic.end1915 -logic.rhs1914: - %t259 = load ptr, ptr %a1 - %t260 = call i1 @finch.parser.genericCallAheadFrom(ptr %t259) - br label %logic.rend1916 -logic.rend1916: - br label %logic.end1915 -logic.end1915: - %t261 = phi i1 [ false, %logic.from1913 ], [ %t260, %logic.rend1916 ] - br i1 %t261, label %then1917, label %endif1919 -then1917: - %t262 = load ptr, ptr %a1 - %t263 = call %S.lexer.Token @finch.parser.next(ptr %t262) - store %S.lexer.Token %t263, ptr %a264 - call void @finch.drop.S_lexer_Token(ptr %a264) - %t265 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1062, i64 5, i64 0 }, 0 - %t266 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t267 = load %S.ast.Type, ptr %t266 - store %S.ast.Type %t265, ptr %t266 - store %S.ast.Type %t267, ptr %a268 - call void @finch.drop.S_ast_Type(ptr %a268) - br label %while.cond1920 -while.cond1920: - br label %while.body1921 -while.body1921: - %t269 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t270 = getelementptr inbounds %S.ast.Type, ptr %t269, i32 0, i32 1 - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i32 0, i32 1 - %t272 = load ptr, ptr %a1 - %t273 = call %S.ast.Type @finch.parser.parseType(ptr %t272) - %t274 = load i64, ptr %t271 - %t275 = add i64 %t274, 1 - call void @finch_arr_reserve(ptr %t270, i64 %t275, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t276 = load ptr, ptr %t270 - %t277 = getelementptr inbounds %S.ast.Type, ptr %t276, i64 %t274 - store %S.ast.Type %t273, ptr %t277 - store i64 %t275, ptr %t271 - %t278 = load ptr, ptr %a1 - %t279 = call i1 @finch.parser.accept(ptr %t278, { ptr, i64, i64 } { ptr @.str.1063, i64 1, i64 0 }) - %t280 = xor i1 %t279, true - br i1 %t280, label %then1923, label %endif1925 -then1923: - br label %while.end1922 -endif1925: - br label %while.cond1920 -while.end1922: - %t281 = load ptr, ptr %a1 - %t282 = call %S.lexer.Token @finch.parser.expect(ptr %t281, { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1065, i64 28, i64 0 }) - store %S.lexer.Token %t282, ptr %a283 - call void @finch.drop.S_lexer_Token(ptr %a283) - %t284 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.1066, i64 4, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t287, ptr %a7) - %t288 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t288 -endif1919: - %t289 = load ptr, ptr %a1 - %t290 = call i1 @finch.parser.at(ptr %t289, { ptr, i64, i64 } { ptr @.str.1067, i64 1, i64 0 }) - br label %logic.from1926 -logic.from1926: - br i1 %t290, label %logic.rhs1927, label %logic.end1928 -logic.rhs1927: - %t291 = load ptr, ptr %a1 - %t292 = call %S.lexer.Token @finch.parser.cur(ptr %t291) - %t293 = extractvalue %S.lexer.Token %t292, 4 - store %S.lexer.Token %t292, ptr %a294 - call void @finch.drop.S_lexer_Token(ptr %a294) - %t295 = xor i1 %t293, true - br label %logic.rend1929 -logic.rend1929: - br label %logic.end1928 -logic.end1928: - %t296 = phi i1 [ false, %logic.from1926 ], [ %t295, %logic.rend1929 ] - br i1 %t296, label %then1930, label %endif1932 -then1930: - %t297 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } { ptr @.str.1068, i64 4, i64 0 }, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t300, ptr %a7) - %t301 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t301 -endif1932: - %t302 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store { ptr, i64, i64 } { ptr @.str.1069, i64 3, i64 0 }, ptr %t302 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t305 -endif1902: - %t306 = load ptr, ptr %a1 - %t307 = load %S.lexer.Token, ptr %a4 - %t308 = load %S.lexer.Token, ptr %a4 - %t309 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t308) - store { ptr, i64, i64 } { ptr @.str.1070, i64 11, i64 0 }, ptr %a311 - store { ptr, i64, i64 } %t309, ptr %a312 - call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) - store { ptr, i64, i64 } %t309, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a310 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.1071, i64 19, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - call void @finch.parser.fail(ptr %t306, %S.lexer.Token %t307, { ptr, i64, i64 } %t319) - store { ptr, i64, i64 } %t319, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t321 -} - -define internal void @finch.copy.arr_S_lexer_Token(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond1933 -n.cond1933: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body1934, label %n.end1935 -n.body1934: - %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.cond1933 -n.end1935: - ret void -} - -define internal void @finch.drop.S_parser_Parser(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lexer_Token(ptr %t1) - %t2 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) { -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) - call void @finch.drop.S_parser_Parser(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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1073, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1074, 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.1076, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1077, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1079, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1080, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t18 -} - -define internal void @finch.gen.noteRef(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4, { ptr, i64, i64 } %p5, i64 %p6, i64 %p7) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic1936, label %ok1937 -panic1936: - call void @finch_panic(ptr @.str.1081, i64 232, ptr @.str.1082) - unreachable -ok1937: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - %t13 = xor i1 %t12, true - br i1 %t13, label %then1938, label %endif1940 -then1938: - ret void -endif1940: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic1941, label %ok1942 -panic1941: - call void @finch_panic(ptr @.str.1083, i64 235, ptr @.str.1084) - unreachable -ok1942: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 29 - %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 %panic1943, label %ok1944 -panic1943: - call void @finch_panic(ptr @.str.1086, i64 235, ptr @.str.1087) - unreachable -ok1944: - %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 %range1945, label %inrange1946 -range1945: - call void @finch_panic_index(ptr @.str.1088, i64 235, i64 %t22, i64 %t24) - unreachable -inrange1946: - %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.1085, 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.1089, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1090, i64 1, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a54, i64 %t53) - %t55 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1091, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a68, i64 %t67) - %t69 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.1092, i64 1, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.1093, i64 1, i64 0 }, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a93, i64 %t92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t91, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1094, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t105, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1095, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a5 - %t121 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t120) - store { ptr, i64, i64 } %t119, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t119, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - %t128 = load i64, ptr %t17 - %t129 = add i64 %t128, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t129, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t130 = load ptr, ptr %t16 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i64 %t128 - store { ptr, i64, i64 } %t127, ptr %t131 - store i64 %t129, ptr %t17 - ret void -} - -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %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 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - store %S.gen.FnSig %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond1947 -for.cond1947: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body1948, label %for.end1950 -for.body1948: - %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 %range1951, label %inrange1952 -range1951: - call void @finch_panic_index(ptr @.str.1096, i64 242, i64 %t11, i64 %t13) - unreachable -inrange1952: - %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.1097, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 - %t25 = load i64, ptr %a6 - %t26 = load { ptr, i64, i64 }, ptr %t24 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 %t25, %t27 - br i1 %t28, label %range1953, label %inrange1954 -range1953: - call void @finch_panic_index(ptr @.str.1098, i64 242, i64 %t25, i64 %t27) - unreachable -inrange1954: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 - %t31 = load { ptr, i64, i64 }, ptr %t30 - store { ptr, i64, i64 } %t23, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t23, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = load i64, ptr %t9 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t38, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %a2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t37 - store { ptr, i64, i64 } %t36, ptr %t40 - store i64 %t38, ptr %t9 - br label %for.step1949 -for.step1949: - %t41 = load i64, ptr %a6 - %t42 = add i64 %t41, 1 - store i64 %t42, ptr %a6 - br label %for.cond1947 -for.end1950: - %t43 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t47, ptr %a48 - %t49 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 - %t51 = load i64, ptr %t50 - %t52 = icmp sgt i64 %t51, 0 - br i1 %t52, label %then1955, label %endif1957 -then1955: - %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1099, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a55 - %t59 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t65, ptr %a48 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif1957 -endif1957: - %t68 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.1100, i64 3, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1101, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1102, i64 2, i64 0 }, ptr %a79 - call void @finch_str_join(ptr %a80, ptr %a2, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t77, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t77, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.1103, i64 1, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 - %t95 = load i1, ptr %t94 - br i1 %t95, label %then1958, label %else1959 -then1958: - %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t97 = getelementptr inbounds %S.ast.Type, ptr %t96, i32 0, i32 0 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.1104, i64 4, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then1961, label %else1962 -then1961: - %t103 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1105, i64 5, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a104 - %t108 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t107, ptr %a93 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_drop(ptr %a109) - br label %endif1963 -else1962: - %t110 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.1106, i64 4, 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.FnSig, ptr %a1, i32 0, i32 12 - %t116 = load %S.ast.Type, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t116) - store { ptr, i64, i64 } %t114, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t114, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.1107, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t128, ptr %a93 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - br label %endif1963 -endif1963: - br label %endif1960 -else1959: - %t131 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.1108, i64 4, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp eq i32 %t136, 0 - br i1 %t137, label %then1964, label %endif1966 -then1964: - %t138 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1109, i64 4, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a139 - %t143 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t144 = load %S.ast.Type, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t144) - store { ptr, i64, i64 } %t142, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t142, ptr %a149 - call void @finch_str_drop(ptr %a149) - store { ptr, i64, i64 } %t145, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a146 - %t152 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t151, ptr %a93 - store { ptr, i64, i64 } %t152, ptr %a153 - call void @finch_str_drop(ptr %a153) - br label %endif1966 -endif1966: - br label %endif1960 -endif1960: - %t154 = load { ptr, i64, i64 }, ptr %a93 - call void @finch_str_drop(ptr %a48) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t154 -} - -define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1967, label %ok1968 -panic1967: - call void @finch_panic(ptr @.str.1110, i64 263, ptr @.str.1111) - unreachable -ok1968: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then1969, label %endif1971 -then1969: - ret void -endif1971: - %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.1112, 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 %then1972, label %endif1974 -then1972: - %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 %endif1974 -endif1974: - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic1975, label %ok1976 -panic1975: - call void @finch_panic(ptr @.str.1113, i64 270, ptr @.str.1114) - unreachable -ok1976: - %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 %range1977, label %inrange1978 -range1977: - call void @finch_panic_index(ptr @.str.1115, i64 270, i64 %t25, i64 %t27) - unreachable -inrange1978: - %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 %range1979, label %inrange1980 -range1979: - call void @finch_panic_index(ptr @.str.1116, i64 270, i64 %t33, i64 %t35) - unreachable -inrange1980: - %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.from1981 -logic.from1981: - br i1 %t53, label %logic.rhs1982, label %logic.end1983 -logic.rhs1982: - %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.rend1984 -logic.rend1984: - br label %logic.end1983 -logic.end1983: - %t58 = phi i1 [ false, %logic.from1981 ], [ %t57, %logic.rend1984 ] - br i1 %t58, label %then1985, label %endif1987 -then1985: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_copy(ptr %a62, ptr %a61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - %t64 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t63, ptr %a49 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif1987 -endif1987: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a2 - %t68 = load i64, ptr %a11 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load %S.gen.FnSig, ptr %a3 - %t72 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t71) - store { ptr, i64, i64 } { ptr @.str.1117, i64 9, i64 0 }, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1118, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic1988, label %ok1989 -panic1988: - call void @finch_panic(ptr @.str.1119, i64 275, ptr @.str.1120) - unreachable -ok1989: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 - %t87 = load i64, ptr %t86 - %t88 = load { ptr, i64, i64 }, ptr %t85 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range1990, label %inrange1991 -range1990: - call void @finch_panic_index(ptr @.str.1121, i64 275, i64 %t87, i64 %t89) - unreachable -inrange1991: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t87 - %t93 = load { ptr, i64, i64 }, ptr %t92 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 - %t95 = load i64, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 - %t97 = load i64, ptr %t96 - %t98 = add i64 %t97, 3 - call void @finch.gen.noteRef(ptr %t66, %S.ast.Node %t67, i64 %t68, i64 %t70, { ptr, i64, i64 } %t82, { ptr, i64, i64 } %t93, i64 %t95, i64 %t98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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.drop.arr_bool(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_FnSig(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t7) - %t8 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 11 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 12 - call void @finch.drop.S_ast_Type(ptr %t9) - %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 13 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - %t11 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 14 - call void @finch.drop.arr_str(ptr %t11) - %t12 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_bool(ptr %t12) - ret void -} - -define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { -entry: - - %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.drop.S_gen_Template(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { -entry: - - 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.drop.arr_int(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_StructDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t7) - %t8 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_str(ptr %t9) - %t10 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - ret void -} - -define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a257 = alloca %S.gen.Template, align 16 - %a258 = alloca %S.gen.Template, align 16 - %a260 = alloca %S.gen.Template, align 16 - %a282 = alloca %S.ast.Node, align 16 - %a283 = alloca %S.ast.Node, align 16 - %a285 = alloca %S.ast.Node, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca i64, align 16 - %a448 = alloca %S.gen.StructDef, align 16 - %a449 = alloca %S.gen.StructDef, align 16 - %a451 = alloca %S.gen.StructDef, align 16 - %a478 = alloca %S.ast.Node, align 16 - %a479 = alloca %S.ast.Node, align 16 - %a481 = alloca %S.ast.Node, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca i64, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca i64, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca %S.ast.Node, align 16 - %a660 = alloca %S.ast.Node, align 16 - %a662 = alloca %S.ast.Node, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca i64, align 16 - %a674 = alloca %S.ast.Node, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a778 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond1992 -each.cond1992: - %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.body1993, label %each.end1995 -each.body1993: - %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 %panic1996, label %ok1997 -panic1996: - call void @finch_panic(ptr @.str.1122, i64 281, ptr @.str.1123) - unreachable -ok1997: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 29 - %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.1124, 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.step1994 -each.step1994: - %t25 = load i64, ptr %a3 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a3 - br label %each.cond1992 -each.end1995: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1998, label %ok1999 -panic1998: - call void @finch_panic(ptr @.str.1125, i64 283, ptr @.str.1126) - unreachable -ok1999: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 15 - store i64 0, ptr %a30 - br label %each.cond2000 -each.cond2000: - %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.body2001, label %each.end2003 -each.body2001: - %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 %panic2004, label %ok2005 -panic2004: - call void @finch_panic(ptr @.str.1127, i64 284, ptr @.str.1128) - unreachable -ok2005: - %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 %range2006, label %inrange2007 -range2006: - call void @finch_panic_index(ptr @.str.1129, i64 284, i64 %t46, i64 %t48) - unreachable -inrange2007: - %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 %range2008, label %inrange2009 -range2008: - call void @finch_panic_index(ptr @.str.1130, i64 284, i64 %t54, i64 %t56) - unreachable -inrange2009: - %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 %then2010, label %endif2012 -then2010: - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -endif2012: - 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.cond2013 -for.cond2013: - %t74 = load i64, ptr %a73 - %t75 = icmp slt i64 %t74, %t72 - br i1 %t75, label %for.body2014, label %for.end2016 -for.body2014: - %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 %range2017, label %inrange2018 -range2017: - call void @finch_panic_index(ptr @.str.1131, i64 290, i64 %t78, i64 %t80) - unreachable -inrange2018: - %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.1132, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 - %t92 = load i64, ptr %a73 - %t93 = load { ptr, i64, i64 }, ptr %t91 - %t94 = extractvalue { ptr, i64, i64 } %t93, 1 - %t95 = icmp uge i64 %t92, %t94 - br i1 %t95, label %range2019, label %inrange2020 -range2019: - call void @finch_panic_index(ptr @.str.1133, i64 290, i64 %t92, i64 %t94) - unreachable -inrange2020: - %t96 = extractvalue { ptr, i64, i64 } %t93, 0 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t92 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t90, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t90, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = load i64, ptr %t76 - %t105 = add i64 %t104, 1 - call void @finch_arr_reserve(ptr %a69, i64 %t105, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t106 = load ptr, ptr %a69 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 %t104 - store { ptr, i64, i64 } %t103, ptr %t107 - store i64 %t105, ptr %t76 - br label %for.step2015 -for.step2015: - %t108 = load i64, ptr %a73 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a73 - br label %for.cond2013 -for.end2016: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic2021, label %ok2022 -panic2021: - call void @finch_panic(ptr @.str.1134, i64 292, ptr @.str.1135) - unreachable -ok2022: - %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 29 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.1136, i64 3, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1137, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t124, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t124, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1138, i64 1, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 - %t138 = load { ptr, i64, i64 }, ptr %t137 - store { ptr, i64, i64 } %t136, ptr %a140 - store { ptr, i64, i64 } %t138, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t136, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.1139, i64 1, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = load ptr, ptr %a1 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic2023, label %ok2024 -panic2023: - call void @finch_panic(ptr @.str.1140, i64 292, ptr @.str.1141) - unreachable -ok2024: - %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 1 - %t152 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 - %t153 = load i64, ptr %t152 - %t154 = load { ptr, i64, i64 }, ptr %t151 - %t155 = extractvalue { ptr, i64, i64 } %t154, 1 - %t156 = icmp uge i64 %t153, %t155 - br i1 %t156, label %range2025, label %inrange2026 -range2025: - call void @finch_panic_index(ptr @.str.1142, i64 292, i64 %t153, i64 %t155) - unreachable -inrange2026: - %t157 = extractvalue { ptr, i64, i64 } %t154, 0 - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i64 %t153 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t148, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t148, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.1143, i64 1, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.1144, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 - %t186 = load i64, ptr %t185 - call void @finch_str_from_int(ptr %a187, i64 %t186) - %t188 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t184, ptr %a192 - call void @finch_str_drop(ptr %a192) - store { ptr, i64, i64 } %t188, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.1145, i64 1, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 - %t201 = load i64, ptr %t200 - call void @finch_str_from_int(ptr %a202, i64 %t201) - %t203 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t199, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t199, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } %t203, ptr %a208 - call void @finch_str_drop(ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t209, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.1146, i64 1, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = load %S.gen.FnSig, ptr %a41 - %t216 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t215) - %t217 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - store { ptr, i64, i64 } %t214, ptr %a220 - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t214, ptr %a222 - call void @finch_str_drop(ptr %a222) - store { ptr, i64, i64 } %t217, ptr %a223 - call void @finch_str_drop(ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.1147, i64 1, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1148, i64 1, i64 0 }, ptr %a231 - call void @finch_str_join(ptr %a232, ptr %a69, ptr %a231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t229, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t229, ptr %a237 - call void @finch_str_drop(ptr %a237) - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a234 - %t240 = load i64, ptr %t113 - %t241 = add i64 %t240, 1 - call void @finch_arr_reserve(ptr %t112, i64 %t241, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t242 = load ptr, ptr %t112 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 %t240 - store { ptr, i64, i64 } %t239, ptr %t243 - store i64 %t241, ptr %t113 - call void @finch.drop.arr_str(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -each.step2002: - %t244 = load i64, ptr %a30 - %t245 = add i64 %t244, 1 - store i64 %t245, ptr %a30 - br label %each.cond2000 -each.end2003: - %t246 = load ptr, ptr %a1 - %t247 = icmp eq ptr %t246, null - br i1 %t247, label %panic2027, label %ok2028 -panic2027: - call void @finch_panic(ptr @.str.1149, i64 294, ptr @.str.1150) - unreachable -ok2028: - %t248 = getelementptr inbounds %S.gen.Gen, ptr %t246, i32 0, i32 17 - store i64 0, ptr %a249 - br label %each.cond2029 -each.cond2029: - %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t251 = load i64, ptr %t250 - %t252 = load i64, ptr %a249 - %t253 = icmp slt i64 %t252, %t251 - br i1 %t253, label %each.body2030, label %each.end2032 -each.body2030: - %t254 = load ptr, ptr %t248 - %t255 = getelementptr inbounds %S.gen.Template, ptr %t254, i64 %t252 - %t256 = load %S.gen.Template, ptr %t255 - store %S.gen.Template %t256, ptr %a257 - call void @finch.copy.S_gen_Template(ptr %a258, ptr %a257) - %t259 = load %S.gen.Template, ptr %a258 - store %S.gen.Template %t259, ptr %a260 - %t261 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 6 - %t262 = load i1, ptr %t261 - br i1 %t262, label %then2033, label %endif2035 -then2033: - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -endif2035: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic2036, label %ok2037 -panic2036: - call void @finch_panic(ptr @.str.1151, i64 298, ptr @.str.1152) - unreachable -ok2037: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 0 - %t266 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 4 - %t267 = load i64, ptr %t266 - %t268 = load { ptr, i64, i64 }, ptr %t265 - %t269 = extractvalue { ptr, i64, i64 } %t268, 1 - %t270 = icmp uge i64 %t267, %t269 - br i1 %t270, label %range2038, label %inrange2039 -range2038: - call void @finch_panic_index(ptr @.str.1153, i64 298, i64 %t267, i64 %t269) - unreachable -inrange2039: - %t271 = extractvalue { ptr, i64, i64 } %t268, 0 - %t272 = getelementptr inbounds %S.ast.Program, ptr %t271, i64 %t267 - %t273 = getelementptr inbounds %S.ast.Program, ptr %t272, i32 0, i32 8 - %t274 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 5 - %t275 = load i64, ptr %t274 - %t276 = load { ptr, i64, i64 }, ptr %t273 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range2040, label %inrange2041 -range2040: - call void @finch_panic_index(ptr @.str.1154, i64 298, i64 %t275, i64 %t277) - unreachable -inrange2041: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.ast.Node, ptr %t279, i64 %t275 - %t281 = load %S.ast.Node, ptr %t280 - store %S.ast.Node %t281, ptr %a282 - call void @finch.copy.S_ast_Node(ptr %a283, ptr %a282) - %t284 = load %S.ast.Node, ptr %a283 - store %S.ast.Node %t284, ptr %a285 - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic2042, label %ok2043 -panic2042: - call void @finch_panic(ptr @.str.1155, i64 299, ptr @.str.1156) - unreachable -ok2043: - %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 29 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1 - %t290 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 0 - %t291 = load { ptr, i64, i64 }, ptr %t290 - store { ptr, i64, i64 } { ptr @.str.1157, i64 3, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.1158, i64 1, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t300, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t300, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 2 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t312, ptr %a316 - store { ptr, i64, i64 } %t314, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.1160, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic2044, label %ok2045 -panic2044: - call void @finch_panic(ptr @.str.1161, i64 299, ptr @.str.1162) - unreachable -ok2045: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 13 - %t329 = load i64, ptr %t328 - %t330 = load { ptr, i64, i64 }, ptr %t327 - %t331 = extractvalue { ptr, i64, i64 } %t330, 1 - %t332 = icmp uge i64 %t329, %t331 - br i1 %t332, label %range2046, label %inrange2047 -range2046: - call void @finch_panic_index(ptr @.str.1163, i64 299, i64 %t329, i64 %t331) - unreachable -inrange2047: - %t333 = extractvalue { ptr, i64, i64 } %t330, 0 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i64 %t329 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t324, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t324, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.1164, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 11 - %t347 = load i64, ptr %t346 - call void @finch_str_from_int(ptr %a348, i64 %t347) - %t349 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t345, ptr %a351 - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t345, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t349, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t355, ptr %a357 - store { ptr, i64, i64 } { ptr @.str.1165, i64 1, i64 0 }, ptr %a358 - call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) - store { ptr, i64, i64 } %t355, ptr %a359 - call void @finch_str_drop(ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a356 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 12 - %t362 = load i64, ptr %t361 - call void @finch_str_from_int(ptr %a363, i64 %t362) - %t364 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t360, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t360, ptr %a368 - call void @finch_str_drop(ptr %a368) - store { ptr, i64, i64 } %t364, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t370, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.1166, i64 1, i64 0 }, ptr %a373 - call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) - store { ptr, i64, i64 } %t370, ptr %a374 - call void @finch_str_drop(ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 14 - %t377 = load i64, ptr %t376 - call void @finch_str_from_int(ptr %a378, i64 %t377) - %t379 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t375, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t375, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t379, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.1167, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t392 = load { ptr, i64, i64 }, ptr %t391 - store { ptr, i64, i64 } { ptr @.str.1168, i64 3, i64 0 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a393 - store { ptr, i64, i64 } %t396, ptr %a398 - store { ptr, i64, i64 } { ptr @.str.1169, i64 1, i64 0 }, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t396, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - %t402 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 3 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1170, i64 2, i64 0 }, ptr %a404 - call void @finch_str_join(ptr %a405, ptr %t402, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - store { ptr, i64, i64 } %t401, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t401, ptr %a410 - call void @finch_str_drop(ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.1171, i64 6, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t417) - store { ptr, i64, i64 } %t417, ptr %a419 - call void @finch_str_drop(ptr %a419) - store { ptr, i64, i64 } %t390, ptr %a421 - store { ptr, i64, i64 } %t418, ptr %a422 - call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) - store { ptr, i64, i64 } %t390, ptr %a423 - call void @finch_str_drop(ptr %a423) - store { ptr, i64, i64 } %t418, ptr %a424 - call void @finch_str_drop(ptr %a424) - %t425 = load { ptr, i64, i64 }, ptr %a420 - store { ptr, i64, i64 } %t425, ptr %a427 - store { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t425, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - %t431 = load i64, ptr %t289 - %t432 = add i64 %t431, 1 - call void @finch_arr_reserve(ptr %t288, i64 %t432, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t433 = load ptr, ptr %t288 - %t434 = getelementptr inbounds { ptr, i64, i64 }, ptr %t433, i64 %t431 - store { ptr, i64, i64 } %t430, ptr %t434 - store i64 %t432, ptr %t289 - call void @finch.drop.S_ast_Node(ptr %a285) - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -each.step2031: - %t435 = load i64, ptr %a249 - %t436 = add i64 %t435, 1 - store i64 %t436, ptr %a249 - br label %each.cond2029 -each.end2032: - %t437 = load ptr, ptr %a1 - %t438 = icmp eq ptr %t437, null - br i1 %t438, label %panic2048, label %ok2049 -panic2048: - call void @finch_panic(ptr @.str.1173, i64 301, ptr @.str.1174) - unreachable -ok2049: - %t439 = getelementptr inbounds %S.gen.Gen, ptr %t437, i32 0, i32 16 - store i64 0, ptr %a440 - br label %each.cond2050 -each.cond2050: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t442 = load i64, ptr %t441 - %t443 = load i64, ptr %a440 - %t444 = icmp slt i64 %t443, %t442 - br i1 %t444, label %each.body2051, label %each.end2053 -each.body2051: - %t445 = load ptr, ptr %t439 - %t446 = getelementptr inbounds %S.gen.StructDef, ptr %t445, i64 %t443 - %t447 = load %S.gen.StructDef, ptr %t446 - store %S.gen.StructDef %t447, ptr %a448 - call void @finch.copy.S_gen_StructDef(ptr %a449, ptr %a448) - %t450 = load %S.gen.StructDef, ptr %a449 - store %S.gen.StructDef %t450, ptr %a451 - %t452 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 2 - %t453 = load i1, ptr %t452 - br label %logic.from2054 -logic.from2054: - br i1 %t453, label %logic.end2056, label %logic.rhs2055 -logic.rhs2055: - %t454 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 5 - %t455 = getelementptr inbounds { ptr, i64, i64 }, ptr %t454, i32 0, i32 1 - %t456 = load i64, ptr %t455 - %t457 = icmp sgt i64 %t456, 0 - br label %logic.rend2057 -logic.rend2057: - br label %logic.end2056 -logic.end2056: - %t458 = phi i1 [ true, %logic.from2054 ], [ %t457, %logic.rend2057 ] - br i1 %t458, label %then2058, label %endif2060 -then2058: - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -endif2060: - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic2061, label %ok2062 -panic2061: - call void @finch_panic(ptr @.str.1175, i64 305, ptr @.str.1176) - unreachable -ok2062: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 0 - %t462 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 13 - %t463 = load i64, ptr %t462 - %t464 = load { ptr, i64, i64 }, ptr %t461 - %t465 = extractvalue { ptr, i64, i64 } %t464, 1 - %t466 = icmp uge i64 %t463, %t465 - br i1 %t466, label %range2063, label %inrange2064 -range2063: - call void @finch_panic_index(ptr @.str.1177, i64 305, i64 %t463, i64 %t465) - unreachable -inrange2064: - %t467 = extractvalue { ptr, i64, i64 } %t464, 0 - %t468 = getelementptr inbounds %S.ast.Program, ptr %t467, i64 %t463 - %t469 = getelementptr inbounds %S.ast.Program, ptr %t468, i32 0, i32 6 - %t470 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 14 - %t471 = load i64, ptr %t470 - %t472 = load { ptr, i64, i64 }, ptr %t469 - %t473 = extractvalue { ptr, i64, i64 } %t472, 1 - %t474 = icmp uge i64 %t471, %t473 - br i1 %t474, label %range2065, label %inrange2066 -range2065: - call void @finch_panic_index(ptr @.str.1178, i64 305, i64 %t471, i64 %t473) - unreachable -inrange2066: - %t475 = extractvalue { ptr, i64, i64 } %t472, 0 - %t476 = getelementptr inbounds %S.ast.Node, ptr %t475, i64 %t471 - %t477 = load %S.ast.Node, ptr %t476 - store %S.ast.Node %t477, ptr %a478 - call void @finch.copy.S_ast_Node(ptr %a479, ptr %a478) - %t480 = load %S.ast.Node, ptr %a479 - store %S.ast.Node %t480, ptr %a481 - %t482 = load ptr, ptr %a1 - %t483 = icmp eq ptr %t482, null - br i1 %t483, label %panic2067, label %ok2068 -panic2067: - call void @finch_panic(ptr @.str.1179, i64 306, ptr @.str.1180) - unreachable -ok2068: - %t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 29 - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i32 0, i32 1 - %t486 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } { ptr @.str.1181, i64 3, i64 0 }, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t498 = load { ptr, i64, i64 }, ptr %t497 - store { ptr, i64, i64 } %t496, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - store { ptr, i64, i64 } %t496, ptr %a502 - call void @finch_str_drop(ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a499 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.1183, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = load ptr, ptr %a1 - %t510 = icmp eq ptr %t509, null - br i1 %t510, label %panic2069, label %ok2070 -panic2069: - call void @finch_panic(ptr @.str.1184, i64 306, ptr @.str.1185) - unreachable -ok2070: - %t511 = getelementptr inbounds %S.gen.Gen, ptr %t509, i32 0, i32 1 - %t512 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 13 - %t513 = load i64, ptr %t512 - %t514 = load { ptr, i64, i64 }, ptr %t511 - %t515 = extractvalue { ptr, i64, i64 } %t514, 1 - %t516 = icmp uge i64 %t513, %t515 - br i1 %t516, label %range2071, label %inrange2072 -range2071: - call void @finch_panic_index(ptr @.str.1186, i64 306, i64 %t513, i64 %t515) - unreachable -inrange2072: - %t517 = extractvalue { ptr, i64, i64 } %t514, 0 - %t518 = getelementptr inbounds { ptr, i64, i64 }, ptr %t517, i64 %t513 - %t519 = load { ptr, i64, i64 }, ptr %t518 - store { ptr, i64, i64 } %t508, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a522 - call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) - store { ptr, i64, i64 } %t508, ptr %a523 - call void @finch_str_drop(ptr %a523) - %t524 = load { ptr, i64, i64 }, ptr %a520 - store { ptr, i64, i64 } %t524, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.1187, i64 1, i64 0 }, ptr %a527 - call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) - store { ptr, i64, i64 } %t524, ptr %a528 - call void @finch_str_drop(ptr %a528) - %t529 = load { ptr, i64, i64 }, ptr %a525 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 11 - %t531 = load i64, ptr %t530 - call void @finch_str_from_int(ptr %a532, i64 %t531) - %t533 = load { ptr, i64, i64 }, ptr %a532 - store { ptr, i64, i64 } %t529, ptr %a535 - store { ptr, i64, i64 } %t533, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t529, ptr %a537 - call void @finch_str_drop(ptr %a537) - store { ptr, i64, i64 } %t533, ptr %a538 - call void @finch_str_drop(ptr %a538) - %t539 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t539, ptr %a541 - store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t539, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - %t545 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 12 - %t546 = load i64, ptr %t545 - call void @finch_str_from_int(ptr %a547, i64 %t546) - %t548 = load { ptr, i64, i64 }, ptr %a547 - store { ptr, i64, i64 } %t544, ptr %a550 - store { ptr, i64, i64 } %t548, ptr %a551 - call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) - store { ptr, i64, i64 } %t544, ptr %a552 - call void @finch_str_drop(ptr %a552) - store { ptr, i64, i64 } %t548, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a549 - %t555 = load i64, ptr %t485 - %t556 = add i64 %t555, 1 - call void @finch_arr_reserve(ptr %t484, i64 %t556, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t557 = load ptr, ptr %t484 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t555 - store { ptr, i64, i64 } %t554, ptr %t558 - store i64 %t556, ptr %t485 - %t559 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load i64, ptr %t560 - store i64 0, ptr %a562 - br label %for.cond2073 -for.cond2073: - %t563 = load i64, ptr %a562 - %t564 = icmp slt i64 %t563, %t561 - br i1 %t564, label %for.body2074, label %for.end2076 -for.body2074: - %t565 = load ptr, ptr %a1 - %t566 = icmp eq ptr %t565, null - br i1 %t566, label %panic2077, label %ok2078 -panic2077: - call void @finch_panic(ptr @.str.1189, i64 308, ptr @.str.1190) - unreachable -ok2078: - %t567 = getelementptr inbounds %S.gen.Gen, ptr %t565, i32 0, i32 29 - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1 - %t569 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t570 = load { ptr, i64, i64 }, ptr %t569 - store { ptr, i64, i64 } { ptr @.str.1191, i64 4, i64 0 }, ptr %a572 - store { ptr, i64, i64 } %t570, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a571 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.1192, i64 1, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t581 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t579, ptr %a583 - store { ptr, i64, i64 } %t581, ptr %a584 - call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) - store { ptr, i64, i64 } %t579, ptr %a585 - call void @finch_str_drop(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a582 - store { ptr, i64, i64 } %t586, ptr %a588 - store { ptr, i64, i64 } { ptr @.str.1193, i64 1, i64 0 }, ptr %a589 - call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) - store { ptr, i64, i64 } %t586, ptr %a590 - call void @finch_str_drop(ptr %a590) - %t591 = load { ptr, i64, i64 }, ptr %a587 - %t592 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t593 = load i64, ptr %a562 - %t594 = load { ptr, i64, i64 }, ptr %t592 - %t595 = extractvalue { ptr, i64, i64 } %t594, 1 - %t596 = icmp uge i64 %t593, %t595 - br i1 %t596, label %range2079, label %inrange2080 -range2079: - call void @finch_panic_index(ptr @.str.1194, i64 308, i64 %t593, i64 %t595) - unreachable -inrange2080: - %t597 = extractvalue { ptr, i64, i64 } %t594, 0 - %t598 = getelementptr inbounds { ptr, i64, i64 }, ptr %t597, i64 %t593 - %t599 = load { ptr, i64, i64 }, ptr %t598 - store { ptr, i64, i64 } %t591, ptr %a601 - store { ptr, i64, i64 } %t599, ptr %a602 - call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602) - store { ptr, i64, i64 } %t591, ptr %a603 - call void @finch_str_drop(ptr %a603) - %t604 = load { ptr, i64, i64 }, ptr %a600 - store { ptr, i64, i64 } %t604, ptr %a606 - store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a607 - call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) - store { ptr, i64, i64 } %t604, ptr %a608 - call void @finch_str_drop(ptr %a608) - %t609 = load { ptr, i64, i64 }, ptr %a605 - %t610 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 12 - %t611 = load i64, ptr %a562 - %t612 = load { ptr, i64, i64 }, ptr %t610 - %t613 = extractvalue { ptr, i64, i64 } %t612, 1 - %t614 = icmp uge i64 %t611, %t613 - br i1 %t614, label %range2081, label %inrange2082 -range2081: - call void @finch_panic_index(ptr @.str.1196, i64 308, i64 %t611, i64 %t613) - unreachable -inrange2082: - %t615 = extractvalue { ptr, i64, i64 } %t612, 0 - %t616 = getelementptr inbounds %S.ast.Type, ptr %t615, i64 %t611 - %t617 = load %S.ast.Type, ptr %t616 - %t618 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t617) - store { ptr, i64, i64 } %t609, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t609, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - %t625 = load i64, ptr %t568 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t567, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t567 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t568 - br label %for.step2075 -for.step2075: - %t629 = load i64, ptr %a562 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a562 - br label %for.cond2073 -for.end2076: - call void @finch.drop.S_ast_Node(ptr %a481) - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -each.step2052: - %t631 = load i64, ptr %a440 - %t632 = add i64 %t631, 1 - store i64 %t632, ptr %a440 - br label %each.cond2050 -each.end2053: - %t633 = load ptr, ptr %a1 - %t634 = icmp eq ptr %t633, null - br i1 %t634, label %panic2083, label %ok2084 -panic2083: - call void @finch_panic(ptr @.str.1197, i64 311, ptr @.str.1198) - unreachable -ok2084: - %t635 = getelementptr inbounds %S.gen.Gen, ptr %t633, i32 0, i32 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i32 0, i32 1 - %t637 = load i64, ptr %t636 - store i64 0, ptr %a638 - br label %for.cond2085 -for.cond2085: - %t639 = load i64, ptr %a638 - %t640 = icmp slt i64 %t639, %t637 - br i1 %t640, label %for.body2086, label %for.end2088 -for.body2086: - %t641 = load ptr, ptr %a1 - %t642 = icmp eq ptr %t641, null - br i1 %t642, label %panic2089, label %ok2090 -panic2089: - call void @finch_panic(ptr @.str.1199, i64 312, ptr @.str.1200) - unreachable -ok2090: - %t643 = getelementptr inbounds %S.gen.Gen, ptr %t641, i32 0, i32 0 - %t644 = load i64, ptr %a638 - %t645 = load { ptr, i64, i64 }, ptr %t643 - %t646 = extractvalue { ptr, i64, i64 } %t645, 1 - %t647 = icmp uge i64 %t644, %t646 - br i1 %t647, label %range2091, label %inrange2092 -range2091: - call void @finch_panic_index(ptr @.str.1201, i64 312, i64 %t644, i64 %t646) - unreachable -inrange2092: - %t648 = extractvalue { ptr, i64, i64 } %t645, 0 - %t649 = getelementptr inbounds %S.ast.Program, ptr %t648, i64 %t644 - %t650 = getelementptr inbounds %S.ast.Program, ptr %t649, i32 0, i32 7 - store i64 0, ptr %a651 - br label %each.cond2093 -each.cond2093: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body2094, label %each.end2096 -each.body2094: - %t656 = load ptr, ptr %t650 - %t657 = getelementptr inbounds %S.ast.Node, ptr %t656, i64 %t654 - %t658 = load %S.ast.Node, ptr %t657 - store %S.ast.Node %t658, ptr %a659 - call void @finch.copy.S_ast_Node(ptr %a660, ptr %a659) - %t661 = load %S.ast.Node, ptr %a660 - store %S.ast.Node %t661, ptr %a662 - store { ptr, i64, i64 } { ptr @.str.1202, i64 0, i64 0 }, ptr %a663 - store { ptr, i64, i64 } zeroinitializer, ptr %a664 - %t665 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 9 - store i64 0, ptr %a666 - br label %each.cond2097 -each.cond2097: - %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t668 = load i64, ptr %t667 - %t669 = load i64, ptr %a666 - %t670 = icmp slt i64 %t669, %t668 - br i1 %t670, label %each.body2098, label %each.end2100 -each.body2098: - %t671 = load ptr, ptr %t665 - %t672 = getelementptr inbounds %S.ast.Node, ptr %t671, i64 %t669 - %t673 = load %S.ast.Node, ptr %t672 - store %S.ast.Node %t673, ptr %a674 - %t675 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - %t676 = getelementptr inbounds %S.ast.Node, ptr %a674, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %t676 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t675 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a664, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a664 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t675 - br label %each.step2099 -each.step2099: - %t685 = load i64, ptr %a666 - %t686 = add i64 %t685, 1 - store i64 %t686, ptr %a666 - br label %each.cond2097 -each.end2100: - %t687 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1203, i64 1, i64 0 }, ptr %a688 - call void @finch_str_join(ptr %a689, ptr %a664, ptr %a688) - %t690 = load { ptr, i64, i64 }, ptr %a689 - %t691 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t690, ptr %a663 - store { ptr, i64, i64 } %t691, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load ptr, ptr %a1 - %t694 = icmp eq ptr %t693, null - br i1 %t694, label %panic2101, label %ok2102 -panic2101: - call void @finch_panic(ptr @.str.1204, i64 319, ptr @.str.1205) - unreachable -ok2102: - %t695 = getelementptr inbounds %S.gen.Gen, ptr %t693, i32 0, i32 29 - %t696 = getelementptr inbounds { ptr, i64, i64 }, ptr %t695, i32 0, i32 1 - %t697 = load ptr, ptr %a1 - %t698 = icmp eq ptr %t697, null - br i1 %t698, label %panic2103, label %ok2104 -panic2103: - call void @finch_panic(ptr @.str.1207, i64 319, ptr @.str.1208) - unreachable -ok2104: - %t699 = getelementptr inbounds %S.gen.Gen, ptr %t697, i32 0, i32 0 - %t700 = load i64, ptr %a638 - %t701 = load { ptr, i64, i64 }, ptr %t699 - %t702 = extractvalue { ptr, i64, i64 } %t701, 1 - %t703 = icmp uge i64 %t700, %t702 - br i1 %t703, label %range2105, label %inrange2106 -range2105: - call void @finch_panic_index(ptr @.str.1209, i64 319, i64 %t700, i64 %t702) - unreachable -inrange2106: - %t704 = extractvalue { ptr, i64, i64 } %t701, 0 - %t705 = getelementptr inbounds %S.ast.Program, ptr %t704, i64 %t700 - %t706 = getelementptr inbounds %S.ast.Program, ptr %t705, i32 0, i32 0 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } { ptr @.str.1206, i64 3, i64 0 }, ptr %a709 - store { ptr, i64, i64 } %t707, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - %t711 = load { ptr, i64, i64 }, ptr %a708 - store { ptr, i64, i64 } %t711, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.1210, i64 1, i64 0 }, ptr %a714 - call void @finch_str_concat(ptr %a712, ptr %a713, ptr %a714) - store { ptr, i64, i64 } %t711, ptr %a715 - call void @finch_str_drop(ptr %a715) - %t716 = load { ptr, i64, i64 }, ptr %a712 - %t717 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 1 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t716, ptr %a720 - store { ptr, i64, i64 } %t718, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t716, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - store { ptr, i64, i64 } %t723, ptr %a725 - store { ptr, i64, i64 } { ptr @.str.1211, i64 1, i64 0 }, ptr %a726 - call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) - store { ptr, i64, i64 } %t723, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load { ptr, i64, i64 }, ptr %a724 - %t729 = load ptr, ptr %a1 - %t730 = icmp eq ptr %t729, null - br i1 %t730, label %panic2107, label %ok2108 -panic2107: - call void @finch_panic(ptr @.str.1212, i64 319, ptr @.str.1213) - unreachable -ok2108: - %t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 1 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 13 - %t733 = load i64, ptr %t732 - %t734 = load { ptr, i64, i64 }, ptr %t731 - %t735 = extractvalue { ptr, i64, i64 } %t734, 1 - %t736 = icmp uge i64 %t733, %t735 - br i1 %t736, label %range2109, label %inrange2110 -range2109: - call void @finch_panic_index(ptr @.str.1214, i64 319, i64 %t733, i64 %t735) - unreachable -inrange2110: - %t737 = extractvalue { ptr, i64, i64 } %t734, 0 - %t738 = getelementptr inbounds { ptr, i64, i64 }, ptr %t737, i64 %t733 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t728, ptr %a741 - store { ptr, i64, i64 } %t739, ptr %a742 - call void @finch_str_concat(ptr %a740, ptr %a741, ptr %a742) - store { ptr, i64, i64 } %t728, ptr %a743 - call void @finch_str_drop(ptr %a743) - %t744 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } %t744, ptr %a746 - store { ptr, i64, i64 } { ptr @.str.1215, i64 1, i64 0 }, ptr %a747 - call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) - store { ptr, i64, i64 } %t744, ptr %a748 - call void @finch_str_drop(ptr %a748) - %t749 = load { ptr, i64, i64 }, ptr %a745 - %t750 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 11 - %t751 = load i64, ptr %t750 - call void @finch_str_from_int(ptr %a752, i64 %t751) - %t753 = load { ptr, i64, i64 }, ptr %a752 - store { ptr, i64, i64 } %t749, ptr %a755 - store { ptr, i64, i64 } %t753, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t749, ptr %a757 - call void @finch_str_drop(ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.1216, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 12 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t764, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t764, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - store { ptr, i64, i64 } %t774, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.1217, i64 1, i64 0 }, ptr %a777 - call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) - store { ptr, i64, i64 } %t774, ptr %a778 - call void @finch_str_drop(ptr %a778) - %t779 = load { ptr, i64, i64 }, ptr %a775 - %t780 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t779, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t779, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = load { ptr, i64, i64 }, ptr %a781 - %t786 = load i64, ptr %t696 - %t787 = add i64 %t786, 1 - call void @finch_arr_reserve(ptr %t695, i64 %t787, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t788 = load ptr, ptr %t695 - %t789 = getelementptr inbounds { ptr, i64, i64 }, ptr %t788, i64 %t786 - store { ptr, i64, i64 } %t785, ptr %t789 - store i64 %t787, ptr %t696 - call void @finch.drop.arr_str(ptr %a664) - call void @finch_str_drop(ptr %a663) - call void @finch.drop.S_ast_Node(ptr %a662) - br label %each.step2095 -each.step2095: - %t790 = load i64, ptr %a651 - %t791 = add i64 %t790, 1 - store i64 %t791, ptr %a651 - br label %each.cond2093 -each.end2096: - br label %for.step2087 -for.step2087: - %t792 = load i64, ptr %a638 - %t793 = add i64 %t792, 1 - store i64 %t793, ptr %a638 - br label %for.cond2085 -for.end2088: - 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 - %a28 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2111, label %ok2112 -panic2111: - call void @finch_panic(ptr @.str.1218, i64 325, ptr @.str.1219) - unreachable -ok2112: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br label %logic.from2113 -logic.from2113: - br i1 %t7, label %logic.rhs2114, label %logic.end2115 -logic.rhs2114: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic2116, label %ok2117 -panic2116: - call void @finch_panic(ptr @.str.1220, i64 325, ptr @.str.1221) - unreachable -ok2117: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 29 - %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.rend2118 -logic.rend2118: - br label %logic.end2115 -logic.end2115: - %t14 = phi i1 [ false, %logic.from2113 ], [ %t13, %logic.rend2118 ] - br i1 %t14, label %then2119, label %endif2121 -then2119: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2122, label %ok2123 -panic2122: - call void @finch_panic(ptr @.str.1222, i64 326, ptr @.str.1223) - unreachable -ok2123: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 29 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1224, 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.1225, ptr %t24 - %t27 = call i32 (ptr, ...) @printf(ptr @.str.1226, i32 %t23, ptr %t26) - store { ptr, i64, i64 } %t21, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = call i32 (ptr, ...) @printf(ptr @.str.1227) - br label %endif2121 -endif2121: - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic2124, label %ok2125 -panic2124: - call void @finch_panic(ptr @.str.1228, i64 328, ptr @.str.1229) - unreachable -ok2125: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 1 - %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t34 = load i64, ptr %t33 - %t35 = load { ptr, i64, i64 }, ptr %t32 - %t36 = extractvalue { ptr, i64, i64 } %t35, 1 - %t37 = icmp uge i64 %t34, %t36 - br i1 %t37, label %range2126, label %inrange2127 -range2126: - call void @finch_panic_index(ptr @.str.1230, i64 328, i64 %t34, i64 %t36) - unreachable -inrange2127: - %t38 = extractvalue { ptr, i64, i64 } %t35, 0 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t34 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1231, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a41 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t46 = load i64, ptr %t45 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t44, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t44, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1232, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t61 = load i64, ptr %t60 - call void @finch_str_from_int(ptr %a62, i64 %t61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t59, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t59, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1233, i64 9, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic2128, label %ok2129 -panic2128: - call void @finch_panic(ptr @.str.1234, i64 328, ptr @.str.1235) - unreachable -ok2129: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 20 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t80, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t80, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = trunc i64 %t90 to i32 - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = icmp eq ptr %t92, null - %t94 = select i1 %t93, ptr @.str.1236, ptr %t92 - %t95 = call i32 (ptr, ...) @printf(ptr @.str.1237, i32 %t91, ptr %t94) - store { ptr, i64, i64 } %t89, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = call i32 (ptr, ...) @printf(ptr @.str.1238) - %t98 = trunc i64 1 to i32 - %t99 = call i32 @fflush(ptr null) - call void @exit(i32 %t98) - 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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2130, label %ok2131 -panic2130: - call void @finch_panic(ptr @.str.1239, i64 334, ptr @.str.1240) - unreachable -ok2131: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 36 - %t6 = load i64, ptr %t5 - %t7 = icmp sge i64 %t6, 0 - br label %logic.from2132 -logic.from2132: - br i1 %t7, label %logic.rhs2133, label %logic.end2134 -logic.rhs2133: - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1242, 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.rend2135 -logic.rend2135: - br label %logic.end2134 -logic.end2134: - %t14 = phi i1 [ false, %logic.from2132 ], [ %t13, %logic.rend2135 ] - br i1 %t14, label %then2136, label %endif2138 -then2136: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2139, label %ok2140 -panic2139: - call void @finch_panic(ptr @.str.1243, i64 335, ptr @.str.1244) - unreachable -ok2140: - %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.1245, 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.1246, i64 8, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = call i64 @finch.gen.dbgLocation(ptr %t29) - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = load i64, ptr %t18 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %t17, i64 %t40, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %t17 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t39 - store { ptr, i64, i64 } %t38, ptr %t42 - store i64 %t40, ptr %t18 - ret void -endif2138: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic2141, label %ok2142 -panic2141: - call void @finch_panic(ptr @.str.1247, i64 338, ptr @.str.1248) - unreachable -ok2142: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 4 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1249, i64 2, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a48 - %t52 = load i64, ptr %t46 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t45, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t45 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t46 - ret void -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2143, label %ok2144 -panic2143: - call void @finch_panic(ptr @.str.1250, i64 342, ptr @.str.1251) - unreachable -ok2144: - %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 %panic2145, label %ok2146 -panic2145: - call void @finch_panic(ptr @.str.1253, i64 343, ptr @.str.1254) - unreachable -ok2146: - %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.1252, i64 2, i64 0 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal { 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 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2147, label %ok2148 -panic2147: - call void @finch_panic(ptr @.str.1255, i64 347, ptr @.str.1256) - unreachable -ok2148: - %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 %panic2149, label %ok2150 -panic2149: - call void @finch_panic(ptr @.str.1257, i64 348, ptr @.str.1258) - unreachable -ok2150: - %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) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic2151, label %ok2152 -panic2151: - call void @finch_panic(ptr @.str.1259, i64 352, ptr @.str.1260) - unreachable -ok2152: - %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.1261, 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 %panic2153, label %ok2154 -panic2153: - call void @finch_panic(ptr @.str.1262, i64 353, ptr @.str.1263) - unreachable -ok2154: - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2155, label %ok2156 -panic2155: - call void @finch_panic(ptr @.str.1264, i64 357, ptr @.str.1265) - unreachable -ok2156: - %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 %then2157, label %endif2159 -then2157: - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1266, 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) - store { ptr, i64, i64 } %t13, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2160, label %ok2161 -panic2160: - call void @finch_panic(ptr @.str.1267, i64 359, ptr @.str.1268) - unreachable -ok2161: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 9 - store i1 true, ptr %t17 - br label %endif2159 -endif2159: - 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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1269, 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.1270, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1271, i64 9, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic2162, label %ok2163 -panic2162: - call void @finch_panic(ptr @.str.1272, i64 365, ptr @.str.1273) - unreachable -ok2163: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 9 - store i1 true, ptr %t36 - 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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2164, label %ok2165 -panic2164: - call void @finch_panic(ptr @.str.1274, i64 369, ptr @.str.1275) - unreachable -ok2165: - %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 %panic2166, label %ok2167 -panic2166: - call void @finch_panic(ptr @.str.1277, i64 370, ptr @.str.1278) - unreachable -ok2167: - %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.1276, i64 2, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2168, label %ok2169 -panic2168: - call void @finch_panic(ptr @.str.1279, i64 371, ptr @.str.1280) - unreachable -ok2169: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 5 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1281, i64 2, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1282, i64 10, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1283, i64 10, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load i64, ptr %t23 - %t46 = add i64 %t45, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t47 = load ptr, ptr %t22 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 - store { ptr, i64, i64 } %t44, ptr %t48 - store i64 %t46, ptr %t23 - %t49 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t49 -} - -define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { 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.1284, 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) - store { ptr, i64, i64 } %t12, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1285, i64 6, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t23, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t31 -} - -define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1286, 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.1287, i64 1, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1288, i64 6, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - ret void -} - -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 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a19 = 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 } %t7, ptr %a9 - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t14 = load %S.ast.Type, ptr %t13 - %t15 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t12, %S.ast.Type %t14) - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.store(ptr %t11, { ptr, i64, i64 } %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t20 -} - -define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = 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.1289, 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) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a5 - ret { ptr, i64, i64 } %t19 -} - -define internal i1 @finch.gen.has({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -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.cond2170 -find.cond2170: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body2171, label %find.end2174 -find.body2171: - %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.hit2172, label %find.next2173 -find.hit2172: - store i64 %t9, ptr %a5 - br label %find.end2174 -find.next2173: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond2170 -find.end2174: - %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.1290, 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.from2175 -logic.from2175: - br i1 %t12, label %logic.end2177, label %logic.rhs2176 -logic.rhs2176: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1291, 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.rend2178 -logic.rend2178: - br label %logic.end2177 -logic.end2177: - %t18 = phi i1 [ true, %logic.from2175 ], [ %t17, %logic.rend2178 ] - br label %logic.from2179 -logic.from2179: - br i1 %t18, label %logic.end2181, label %logic.rhs2180 -logic.rhs2180: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1292, 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.rend2182 -logic.rend2182: - br label %logic.end2181 -logic.end2181: - %t24 = phi i1 [ true, %logic.from2179 ], [ %t23, %logic.rend2182 ] - br label %logic.from2183 -logic.from2183: - br i1 %t24, label %logic.end2185, label %logic.rhs2184 -logic.rhs2184: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1293, 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.rend2186 -logic.rend2186: - br label %logic.end2185 -logic.end2185: - %t30 = phi i1 [ true, %logic.from2183 ], [ %t29, %logic.rend2186 ] - call void @finch_str_drop(ptr %a7) - 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.1294, 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.from2187 -logic.from2187: - br i1 %t12, label %logic.end2189, label %logic.rhs2188 -logic.rhs2188: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1295, 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.rend2190 -logic.rend2190: - br label %logic.end2189 -logic.end2189: - %t18 = phi i1 [ true, %logic.from2187 ], [ %t17, %logic.rend2190 ] - br label %logic.from2191 -logic.from2191: - br i1 %t18, label %logic.end2193, label %logic.rhs2192 -logic.rhs2192: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1296, 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.rend2194 -logic.rend2194: - br label %logic.end2193 -logic.end2193: - %t24 = phi i1 [ true, %logic.from2191 ], [ %t23, %logic.rend2194 ] - br label %logic.from2195 -logic.from2195: - br i1 %t24, label %logic.end2197, label %logic.rhs2196 -logic.rhs2196: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1297, 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.rend2198 -logic.rend2198: - br label %logic.end2197 -logic.end2197: - %t30 = phi i1 [ true, %logic.from2195 ], [ %t29, %logic.rend2198 ] - call void @finch_str_drop(ptr %a7) - 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.from2199 -logic.from2199: - br i1 %t3, label %logic.end2201, label %logic.rhs2200 -logic.rhs2200: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4) - br label %logic.rend2202 -logic.rend2202: - br label %logic.end2201 -logic.end2201: - %t6 = phi i1 [ true, %logic.from2199 ], [ %t5, %logic.rend2202 ] - 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.1298, 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.from2203 -logic.from2203: - br i1 %t7, label %logic.end2205, label %logic.rhs2204 -logic.rhs2204: - %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.1299, 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.rend2206 -logic.rend2206: - br label %logic.end2205 -logic.end2205: - %t14 = phi i1 [ true, %logic.from2203 ], [ %t13, %logic.rend2206 ] - 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.from2207 -logic.from2207: - br i1 %t3, label %logic.end2209, label %logic.rhs2208 -logic.rhs2208: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4) - br label %logic.rend2210 -logic.rend2210: - br label %logic.end2209 -logic.end2209: - %t6 = phi i1 [ true, %logic.from2207 ], [ %t5, %logic.rend2210 ] - 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.1300, 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 %then2211, label %endif2213 -then2211: - call void @finch_str_drop(ptr %a7) - ret i64 1 -endif2213: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1301, 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.from2214 -logic.from2214: - br i1 %t17, label %logic.end2216, label %logic.rhs2215 -logic.rhs2215: - %t18 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1302, 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.rend2217 -logic.rend2217: - br label %logic.end2216 -logic.end2216: - %t23 = phi i1 [ true, %logic.from2214 ], [ %t22, %logic.rend2217 ] - br label %logic.from2218 -logic.from2218: - br i1 %t23, label %logic.end2220, label %logic.rhs2219 -logic.rhs2219: - %t24 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1303, 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.rend2221 -logic.rend2221: - br label %logic.end2220 -logic.end2220: - %t29 = phi i1 [ true, %logic.from2218 ], [ %t28, %logic.rend2221 ] - br i1 %t29, label %then2222, label %endif2224 -then2222: - call void @finch_str_drop(ptr %a7) - ret i64 8 -endif2224: - %t30 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1304, 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.from2225 -logic.from2225: - br i1 %t34, label %logic.end2227, label %logic.rhs2226 -logic.rhs2226: - %t35 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1305, 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.rend2228 -logic.rend2228: - br label %logic.end2227 -logic.end2227: - %t40 = phi i1 [ true, %logic.from2225 ], [ %t39, %logic.rend2228 ] - br i1 %t40, label %then2229, label %endif2231 -then2229: - call void @finch_str_drop(ptr %a7) - ret i64 16 -endif2231: - %t41 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1306, 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.from2232 -logic.from2232: - br i1 %t45, label %logic.end2234, label %logic.rhs2233 -logic.rhs2233: - %t46 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1307, 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.rend2235 -logic.rend2235: - br label %logic.end2234 -logic.end2234: - %t51 = phi i1 [ true, %logic.from2232 ], [ %t50, %logic.rend2235 ] - br label %logic.from2236 -logic.from2236: - br i1 %t51, label %logic.end2238, label %logic.rhs2237 -logic.rhs2237: - %t52 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1308, 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.rend2239 -logic.rend2239: - br label %logic.end2238 -logic.end2238: - %t57 = phi i1 [ true, %logic.from2236 ], [ %t56, %logic.rend2239 ] - br i1 %t57, label %then2240, label %endif2242 -then2240: - call void @finch_str_drop(ptr %a7) - ret i64 32 -endif2242: - call void @finch_str_drop(ptr %a7) - 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.from2243 -logic.from2243: - br i1 %t5, label %logic.end2245, label %logic.rhs2244 -logic.rhs2244: - %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.rend2246 -logic.rend2246: - br label %logic.end2245 -logic.end2245: - %t9 = phi i1 [ true, %logic.from2243 ], [ %t8, %logic.rend2246 ] - br i1 %t9, label %then2247, label %endif2249 -then2247: - ret i1 false -endif2249: - %t10 = load %S.ast.Type, ptr %a1 - %t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10) - br label %logic.from2250 -logic.from2250: - br i1 %t11, label %logic.rhs2251, label %logic.end2252 -logic.rhs2251: - %t12 = load %S.ast.Type, ptr %a2 - %t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12) - br label %logic.rend2253 -logic.rend2253: - br label %logic.end2252 -logic.end2252: - %t14 = phi i1 [ false, %logic.from2250 ], [ %t13, %logic.rend2253 ] - br i1 %t14, label %then2254, label %endif2256 -then2254: - ret i1 false -endif2256: - %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 %then2257, label %endif2259 -then2257: - ret i1 false -endif2259: - %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.1309, i64 464) - 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 %then2260, label %endif2262 -then2260: - %t16 = load %S.ast.Type, ptr %a3 - %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) - br i1 %t17, label %then2263, label %endif2265 -then2263: - ret i1 false -endif2265: - %t18 = load i64, ptr %a13 - %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then2266, label %endif2268 -then2266: - ret i1 true -endif2268: - %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 -endif2262: - %t26 = load i64, ptr %a13 - %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then2269, label %endif2271 -then2269: - ret i1 true -endif2271: - %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 %then2272, label %endif2274 -then2272: - %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 %endif2274 -endif2274: - %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 %panic2275, label %ok2276 -panic2275: - call void @finch_panic(ptr @.str.1310, i64 486, ptr @.str.1311) - unreachable -ok2276: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 16 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2277 -for.cond2277: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2278, label %for.end2280 -for.body2278: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2281, label %ok2282 -panic2281: - call void @finch_panic(ptr @.str.1312, i64 487, ptr @.str.1313) - unreachable -ok2282: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2283, label %inrange2284 -range2283: - call void @finch_panic_index(ptr @.str.1314, i64 487, i64 %t15, i64 %t17) - unreachable -inrange2284: - %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.from2285 -logic.from2285: - br i1 %t27, label %logic.rhs2286, label %logic.end2287 -logic.rhs2286: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2288, label %ok2289 -panic2288: - call void @finch_panic(ptr @.str.1315, i64 487, ptr @.str.1316) - unreachable -ok2289: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2290, label %inrange2291 -range2290: - call void @finch_panic_index(ptr @.str.1317, i64 487, i64 %t31, i64 %t33) - unreachable -inrange2291: - %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.rend2292 -logic.rend2292: - br label %logic.end2287 -logic.end2287: - %t44 = phi i1 [ false, %logic.from2285 ], [ %t43, %logic.rend2292 ] - br i1 %t44, label %then2293, label %endif2295 -then2293: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2295: - br label %for.step2279 -for.step2279: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2277 -for.end2280: - 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 %panic2296, label %ok2297 -panic2296: - call void @finch_panic(ptr @.str.1318, i64 495, ptr @.str.1319) - unreachable -ok2297: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2298 -for.cond2298: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2299, label %for.end2301 -for.body2299: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2302, label %ok2303 -panic2302: - call void @finch_panic(ptr @.str.1320, i64 496, ptr @.str.1321) - unreachable -ok2303: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 21 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2304, label %inrange2305 -range2304: - call void @finch_panic_index(ptr @.str.1322, i64 496, i64 %t15, i64 %t17) - unreachable -inrange2305: - %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.from2306 -logic.from2306: - br i1 %t27, label %logic.rhs2307, label %logic.end2308 -logic.rhs2307: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2309, label %ok2310 -panic2309: - call void @finch_panic(ptr @.str.1323, i64 496, ptr @.str.1324) - unreachable -ok2310: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 21 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2311, label %inrange2312 -range2311: - call void @finch_panic_index(ptr @.str.1325, i64 496, i64 %t31, i64 %t33) - unreachable -inrange2312: - %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.rend2313 -logic.rend2313: - br label %logic.end2308 -logic.end2308: - %t44 = phi i1 [ false, %logic.from2306 ], [ %t43, %logic.rend2313 ] - br i1 %t44, label %then2314, label %endif2316 -then2314: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2316: - br label %for.step2300 -for.step2300: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2298 -for.end2301: - ret i64 -1 -} - -define internal i64 @finch.gen.findSum(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 %panic2317, label %ok2318 -panic2317: - call void @finch_panic(ptr @.str.1326, i64 504, ptr @.str.1327) - unreachable -ok2318: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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.cond2319 -for.cond2319: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2320, label %for.end2322 -for.body2320: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2323, label %ok2324 -panic2323: - call void @finch_panic(ptr @.str.1328, i64 505, ptr @.str.1329) - unreachable -ok2324: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 22 - %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 %range2325, label %inrange2326 -range2325: - call void @finch_panic_index(ptr @.str.1330, i64 505, i64 %t15, i64 %t17) - unreachable -inrange2326: - %t19 = extractvalue { ptr, i64, i64 } %t16, 0 - %t20 = getelementptr inbounds %S.gen.SumDef, ptr %t19, i64 %t15 - %t21 = getelementptr inbounds %S.gen.SumDef, 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.from2327 -logic.from2327: - br i1 %t27, label %logic.rhs2328, label %logic.end2329 -logic.rhs2328: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2330, label %ok2331 -panic2330: - call void @finch_panic(ptr @.str.1331, i64 505, ptr @.str.1332) - unreachable -ok2331: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 22 - %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 %range2332, label %inrange2333 -range2332: - call void @finch_panic_index(ptr @.str.1333, i64 505, i64 %t31, i64 %t33) - unreachable -inrange2333: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.gen.SumDef, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.gen.SumDef, 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.rend2334 -logic.rend2334: - br label %logic.end2329 -logic.end2329: - %t44 = phi i1 [ false, %logic.from2327 ], [ %t43, %logic.rend2334 ] - br i1 %t44, label %then2335, label %endif2337 -then2335: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2337: - br label %for.step2321 -for.step2321: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2319 -for.end2322: - 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 %panic2338, label %ok2339 -panic2338: - call void @finch_panic(ptr @.str.1334, i64 513, ptr @.str.1335) - unreachable -ok2339: - %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.cond2340 -for.cond2340: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2341, label %for.end2343 -for.body2341: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2344, label %ok2345 -panic2344: - call void @finch_panic(ptr @.str.1336, i64 514, ptr @.str.1337) - unreachable -ok2345: - %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 %range2346, label %inrange2347 -range2346: - call void @finch_panic_index(ptr @.str.1338, i64 514, i64 %t14, i64 %t16) - unreachable -inrange2347: - %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 %then2348, label %endif2350 -then2348: - %t27 = load i64, ptr %a8 - ret i64 %t27 -endif2350: - br label %for.step2342 -for.step2342: - %t28 = load i64, ptr %a8 - %t29 = add i64 %t28, 1 - store i64 %t29, ptr %a8 - br label %for.cond2340 -for.end2343: - 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 %panic2351, label %ok2352 -panic2351: - call void @finch_panic(ptr @.str.1339, i64 522, ptr @.str.1340) - unreachable -ok2352: - %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 %panic2353, label %ok2354 -panic2353: - call void @finch_panic(ptr @.str.1341, i64 522, ptr @.str.1342) - unreachable -ok2354: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 14 - %t10 = load { ptr, i64, i64 }, ptr %t9 - %t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10) - %t12 = load { ptr, i64, i64 }, ptr %t5 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range2355, label %inrange2356 -range2355: - call void @finch_panic_index(ptr @.str.1343, i64 522, i64 %t11, i64 %t13) - unreachable -inrange2356: - %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.cond2357 -find.cond2357: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t21 - br i1 %t25, label %find.body2358, label %find.end2361 -find.body2358: - %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.hit2359, label %find.next2360 -find.hit2359: - store i64 %t24, ptr %a20 - br label %find.end2361 -find.next2360: - %t32 = add i64 %t24, 1 - store i64 %t32, ptr %a23 - br label %find.cond2357 -find.end2361: - %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 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Type, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Type, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a155 = alloca %S.ast.Type, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a181 = alloca i64, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca i64, align 16 - %a209 = alloca i64, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1344, 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 %then2362, label %endif2364 -then2362: - %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 %range2365, label %inrange2366 -range2365: - call void @finch_panic_index(ptr @.str.1345, i64 527, i64 0, i64 %t13) - unreachable -inrange2366: - %t15 = extractvalue { ptr, i64, i64 } %t12, 0 - %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = load %S.ast.Node, ptr %a3 - %t19 = call %S.ast.Type @finch.gen.resolve(ptr %t10, %S.ast.Type %t17, %S.ast.Node %t18) - %t20 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.ast.Type %t20 -endif2364: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1346, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then2367, label %endif2369 -then2367: - %t28 = load ptr, ptr %a1 - %t29 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t30 = load { ptr, i64, i64 }, ptr %t29 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 0, %t31 - br i1 %t32, label %range2370, label %inrange2371 -range2370: - call void @finch_panic_index(ptr @.str.1347, i64 530, i64 0, i64 %t31) - unreachable -inrange2371: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Type, ptr %t33, i64 0 - %t35 = load %S.ast.Type, ptr %t34 - %t36 = load %S.ast.Node, ptr %a3 - %t37 = call %S.ast.Type @finch.gen.resolve(ptr %t28, %S.ast.Type %t35, %S.ast.Node %t36) - store %S.ast.Type %t37, ptr %a38 - %t39 = load %S.ast.Type, ptr %a38 - %t40 = call i1 @finch.gen.isInt(%S.ast.Type %t39) - %t41 = xor i1 %t40, true - br label %logic.from2372 -logic.from2372: - br i1 %t41, label %logic.rhs2373, label %logic.end2374 -logic.rhs2373: - %t42 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.1348, i64 4, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp eq i32 %t46, 0 - br label %logic.rend2375 -logic.rend2375: - br label %logic.end2374 -logic.end2374: - %t48 = phi i1 [ false, %logic.from2372 ], [ %t47, %logic.rend2375 ] - br label %logic.from2376 -logic.from2376: - br i1 %t48, label %logic.rhs2377, label %logic.end2378 -logic.rhs2377: - %t49 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1349, i64 4, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp eq i32 %t53, 0 - br label %logic.rend2379 -logic.rend2379: - br label %logic.end2378 -logic.end2378: - %t55 = phi i1 [ false, %logic.from2376 ], [ %t54, %logic.rend2379 ] - br label %logic.from2380 -logic.from2380: - br i1 %t55, label %logic.rhs2381, label %logic.end2382 -logic.rhs2381: - %t56 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1350, i64 3, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp eq i32 %t60, 0 - br label %logic.rend2383 -logic.rend2383: - br label %logic.end2382 -logic.end2382: - %t62 = phi i1 [ false, %logic.from2380 ], [ %t61, %logic.rend2383 ] - br label %logic.from2384 -logic.from2384: - br i1 %t62, label %logic.rhs2385, label %logic.end2386 -logic.rhs2385: - %t63 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t64 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.1351, i64 4, i64 0 }, ptr %a66 - %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) - %t68 = icmp eq i32 %t67, 0 - br label %logic.rend2387 -logic.rend2387: - br label %logic.end2386 -logic.end2386: - %t69 = phi i1 [ false, %logic.from2384 ], [ %t68, %logic.rend2387 ] - br i1 %t69, label %then2388, label %endif2390 -then2388: - %t70 = load ptr, ptr %a1 - %t71 = load %S.ast.Node, ptr %a3 - %t72 = load %S.ast.Type, ptr %a38 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } { ptr @.str.1352, i64 63, i64 0 }, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif2390 -endif2390: - %t80 = load ptr, ptr %a1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = extractvalue { ptr, i64, i64 } %t82, 1 - %t84 = icmp uge i64 1, %t83 - br i1 %t84, label %range2391, label %inrange2392 -range2391: - call void @finch_panic_index(ptr @.str.1353, i64 534, i64 1, i64 %t83) - unreachable -inrange2392: - %t85 = extractvalue { ptr, i64, i64 } %t82, 0 - %t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 1 - %t87 = load %S.ast.Type, ptr %t86 - %t88 = load %S.ast.Node, ptr %a3 - %t89 = call %S.ast.Type @finch.gen.resolve(ptr %t80, %S.ast.Type %t87, %S.ast.Node %t88) - store %S.ast.Type %t89, ptr %a90 - %t91 = getelementptr inbounds %S.ast.Type, ptr %a90, i32 0, i32 0 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.1354, i64 4, i64 0 }, ptr %a94 - %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) - %t96 = icmp ne i32 %t95, 0 - br i1 %t96, label %then2393, label %endif2395 -then2393: - %t97 = load ptr, ptr %a1 - %t98 = load %S.ast.Node, ptr %a3 - call void @finch.gen.fail(ptr %t97, %S.ast.Node %t98, { ptr, i64, i64 } { ptr @.str.1355, i64 41, i64 0 }) - br label %endif2395 -endif2395: - %t99 = load %S.ast.Type, ptr %a38 - %t100 = load %S.ast.Type, ptr %a90 - %t101 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t99, %S.ast.Type %t100) - call void @finch.drop.S_ast_Type(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.ast.Type %t101 -endif2369: - %t102 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1356, i64 5, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br i1 %t107, label %then2396, label %endif2398 -then2396: - %t108 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1357, i64 5, i64 0 }, 0 - %t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t110 = load i64, ptr %t109 - %t111 = insertvalue %S.ast.Type %t108, i64 %t110, 4 - store %S.ast.Type %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Type, ptr %a112, i32 0, i32 1 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 0, %t118 - br i1 %t119, label %range2399, label %inrange2400 -range2399: - call void @finch_panic_index(ptr @.str.1358, i64 542, i64 0, i64 %t118) - unreachable -inrange2400: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Type, ptr %t120, i64 0 - %t122 = load %S.ast.Type, ptr %t121 - %t123 = load %S.ast.Node, ptr %a3 - %t124 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t122, %S.ast.Node %t123) - %t125 = load i64, ptr %t114 - %t126 = add i64 %t125, 1 - call void @finch_arr_reserve(ptr %t113, i64 %t126, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t127 = load ptr, ptr %t113 - %t128 = getelementptr inbounds %S.ast.Type, ptr %t127, i64 %t125 - store %S.ast.Type %t124, ptr %t128 - store i64 %t126, ptr %t114 - %t129 = load %S.ast.Type, ptr %a112 - ret %S.ast.Type %t129 -endif2398: - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1359, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %then2401, label %endif2403 -then2401: - %t136 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br i1 %t139, label %then2404, label %endif2406 -then2404: - %t140 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - ret %S.ast.Type %t143 -endif2406: - %t144 = load ptr, ptr %a1 - %t145 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %t145 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 0, %t147 - br i1 %t148, label %range2407, label %inrange2408 -range2407: - call void @finch_panic_index(ptr @.str.1360, i64 549, i64 0, i64 %t147) - unreachable -inrange2408: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = load %S.ast.Node, ptr %a3 - %t153 = call %S.ast.Type @finch.gen.resolve(ptr %t144, %S.ast.Type %t151, %S.ast.Node %t152) - %t154 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t153) - store %S.ast.Type %t153, ptr %a155 - call void @finch.drop.S_ast_Type(ptr %a155) - ret %S.ast.Type %t154 -endif2403: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.1361, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br i1 %t161, label %then2409, label %endif2411 -then2409: - %t162 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t162, ptr %a163 - call void @finch.copy.S_ast_Type(ptr %a164, ptr %a163) - %t165 = load %S.ast.Type, ptr %a164 - ret %S.ast.Type %t165 -endif2411: - %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = icmp eq i64 %t168, 0 - br label %logic.from2412 -logic.from2412: - br i1 %t169, label %logic.rhs2413, label %logic.end2414 -logic.rhs2413: - %t170 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = icmp eq i64 %t172, 0 - br label %logic.rend2415 -logic.rend2415: - br label %logic.end2414 -logic.end2414: - %t174 = phi i1 [ false, %logic.from2412 ], [ %t173, %logic.rend2415 ] - br label %logic.from2416 -logic.from2416: - br i1 %t174, label %logic.rhs2417, label %logic.end2418 -logic.rhs2417: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic2419, label %ok2420 -panic2419: - call void @finch_panic(ptr @.str.1362, i64 555, ptr @.str.1363) - unreachable -ok2420: - %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 18 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t180 = load { ptr, i64, i64 }, ptr %t179 - store i64 -1, ptr %a181 - %t182 = load i64, ptr %t178 - %t183 = load ptr, ptr %t177 - store i64 0, ptr %a184 - br label %find.cond2421 -find.cond2421: - %t185 = load i64, ptr %a184 - %t186 = icmp slt i64 %t185, %t182 - br i1 %t186, label %find.body2422, label %find.end2425 -find.body2422: - %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.hit2423, label %find.next2424 -find.hit2423: - store i64 %t185, ptr %a181 - br label %find.end2425 -find.next2424: - %t193 = add i64 %t185, 1 - store i64 %t193, ptr %a184 - br label %find.cond2421 -find.end2425: - %t194 = load i64, ptr %a181 - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend2426 -logic.rend2426: - br label %logic.end2418 -logic.end2418: - %t196 = phi i1 [ false, %logic.from2416 ], [ %t195, %logic.rend2426 ] - br i1 %t196, label %then2427, label %endif2429 -then2427: - %t197 = load ptr, ptr %a1 - %t198 = icmp eq ptr %t197, null - br i1 %t198, label %panic2430, label %ok2431 -panic2430: - call void @finch_panic(ptr @.str.1364, i64 556, ptr @.str.1365) - unreachable -ok2431: - %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 19 - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic2432, label %ok2433 -panic2432: - call void @finch_panic(ptr @.str.1366, i64 556, ptr @.str.1367) - unreachable -ok2433: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 18 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 - %t204 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t205 = load { ptr, i64, i64 }, ptr %t204 - store i64 -1, ptr %a206 - %t207 = load i64, ptr %t203 - %t208 = load ptr, ptr %t202 - store i64 0, ptr %a209 - br label %find.cond2434 -find.cond2434: - %t210 = load i64, ptr %a209 - %t211 = icmp slt i64 %t210, %t207 - br i1 %t211, label %find.body2435, label %find.end2438 -find.body2435: - %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } %t205, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %find.hit2436, label %find.next2437 -find.hit2436: - store i64 %t210, ptr %a206 - br label %find.end2438 -find.next2437: - %t218 = add i64 %t210, 1 - store i64 %t218, ptr %a209 - br label %find.cond2434 -find.end2438: - %t219 = load i64, ptr %a206 - %t220 = load { ptr, i64, i64 }, ptr %t199 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range2439, label %inrange2440 -range2439: - call void @finch_panic_index(ptr @.str.1368, i64 556, i64 %t219, i64 %t221) - unreachable -inrange2440: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i64 %t219 - %t225 = load %S.ast.Type, ptr %t224 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - ret %S.ast.Type %t228 -endif2429: - %t229 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t231 = load i64, ptr %t230 - %t232 = icmp sgt i64 %t231, 0 - br i1 %t232, label %then2441, label %endif2443 -then2441: - store { ptr, i64, i64 } zeroinitializer, ptr %a233 - %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - store i64 0, ptr %a235 - br label %each.cond2444 -each.cond2444: - %t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t237 = load i64, ptr %t236 - %t238 = load i64, ptr %a235 - %t239 = icmp slt i64 %t238, %t237 - br i1 %t239, label %each.body2445, label %each.end2447 -each.body2445: - %t240 = load ptr, ptr %t234 - %t241 = getelementptr inbounds %S.ast.Type, ptr %t240, i64 %t238 - %t242 = load %S.ast.Type, ptr %t241 - store %S.ast.Type %t242, ptr %a243 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a233, i32 0, i32 1 - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Type, ptr %a243 - %t247 = load %S.ast.Node, ptr %a3 - %t248 = call %S.ast.Type @finch.gen.resolve(ptr %t245, %S.ast.Type %t246, %S.ast.Node %t247) - %t249 = load i64, ptr %t244 - %t250 = add i64 %t249, 1 - call void @finch_arr_reserve(ptr %a233, i64 %t250, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t251 = load ptr, ptr %a233 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i64 %t249 - store %S.ast.Type %t248, ptr %t252 - store i64 %t250, ptr %t244 - br label %each.step2446 -each.step2446: - %t253 = load i64, ptr %a235 - %t254 = add i64 %t253, 1 - store i64 %t254, ptr %a235 - br label %each.cond2444 -each.end2447: - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic2448, label %ok2449 -panic2448: - call void @finch_panic(ptr @.str.1369, i64 564, ptr @.str.1370) - unreachable -ok2449: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 14 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - %t266 = icmp sgt i64 %t265, 0 - br i1 %t266, label %then2450, label %endif2452 -then2450: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = call i1 @finch.gen.imports(ptr %t267, { ptr, i64, i64 } %t269) - %t271 = xor i1 %t270, true - br i1 %t271, label %then2453, label %endif2455 -then2453: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a3 - %t274 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.1372, i64 36, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t286 = load { ptr, i64, i64 }, ptr %t285 - store { ptr, i64, i64 } %t284, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t284, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.1373, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t272, %S.ast.Node %t273, { ptr, i64, i64 } %t296) - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif2455 -endif2455: - %t298 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t299 = load { ptr, i64, i64 }, ptr %t298 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_copy(ptr %a301, ptr %a300) - %t302 = load { ptr, i64, i64 }, ptr %a301 - %t303 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t302, ptr %a262 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif2452 -endif2452: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a262 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = load { ptr, i64, i64 }, ptr %a233 - %t310 = load %S.ast.Node, ptr %a3 - %t311 = call %S.ast.Type @finch.gen.instStruct(ptr %t305, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t308, { ptr, i64, i64 } %t309, %S.ast.Node %t310) - call void @finch_str_drop(ptr %a262) - call void @finch.drop.arr_S_ast_Type(ptr %a233) - ret %S.ast.Type %t311 -endif2443: - %t312 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1374, i64 1, i64 0 }, ptr %a315 - %t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315) - %t317 = icmp ne i32 %t316, 0 - br i1 %t317, label %then2456, label %endif2458 -then2456: - %t318 = load ptr, ptr %a1 - %t319 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t320 = load { ptr, i64, i64 }, ptr %t319 - %t321 = call i64 @finch.gen.findStruct(ptr %t318, { ptr, i64, i64 } { ptr @.str.1375, i64 1, i64 0 }, { ptr, i64, i64 } %t320) - %t322 = icmp slt i64 %t321, 0 - br i1 %t322, label %then2459, label %endif2461 -then2459: - %t323 = load ptr, ptr %a1 - %t324 = load %S.ast.Node, ptr %a3 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t326 = load { ptr, i64, i64 }, ptr %t325 - store { ptr, i64, i64 } { ptr @.str.1376, i64 28, i64 0 }, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - %t330 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t330, ptr %a332 - store { ptr, i64, i64 } { ptr @.str.1377, i64 1, i64 0 }, ptr %a333 - call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_drop(ptr %a334) - %t335 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t335) - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif2461 -endif2461: - %t337 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1378, i64 6, i64 0 }, 0 - %t338 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_copy(ptr %a341, ptr %a340) - %t342 = load { ptr, i64, i64 }, ptr %a341 - %t343 = insertvalue %S.ast.Type %t337, { ptr, i64, i64 } %t342, 2 - %t344 = insertvalue %S.ast.Type %t343, { ptr, i64, i64 } { ptr @.str.1379, i64 1, i64 0 }, 3 - ret %S.ast.Type %t344 -endif2458: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic2462, label %ok2463 -panic2462: - call void @finch_panic(ptr @.str.1380, i64 579, ptr @.str.1381) - unreachable -ok2463: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 14 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_copy(ptr %a350, ptr %a349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t351, ptr %a352 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i32 0, i32 1 - %t355 = load i64, ptr %t354 - %t356 = icmp sgt i64 %t355, 0 - br i1 %t356, label %then2464, label %endif2466 -then2464: - %t357 = load ptr, ptr %a1 - %t358 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t359 = load { ptr, i64, i64 }, ptr %t358 - %t360 = call i1 @finch.gen.imports(ptr %t357, { ptr, i64, i64 } %t359) - %t361 = xor i1 %t360, true - br i1 %t361, label %then2467, label %endif2469 -then2467: - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Node, ptr %a3 - %t364 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.1382, i64 1, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1383, i64 36, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t376 = load { ptr, i64, i64 }, ptr %t375 - store { ptr, i64, i64 } %t374, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t374, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.1384, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - call void @finch.gen.fail(ptr %t362, %S.ast.Node %t363, { ptr, i64, i64 } %t386) - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif2469 -endif2469: - %t388 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch_str_copy(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - %t393 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t392, ptr %a352 - store { ptr, i64, i64 } %t393, ptr %a394 - call void @finch_str_drop(ptr %a394) - br label %endif2466 -endif2466: - %t395 = load ptr, ptr %a1 - %t396 = load { ptr, i64, i64 }, ptr %a352 - %t397 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t398 = load { ptr, i64, i64 }, ptr %t397 - %t399 = call i64 @finch.gen.findEnum(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398) - %t400 = icmp sge i64 %t399, 0 - br i1 %t400, label %then2470, label %endif2472 -then2470: - %t401 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1385, i64 4, i64 0 }, 0 - %t402 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - call void @finch_str_copy(ptr %a405, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - %t407 = insertvalue %S.ast.Type %t401, { ptr, i64, i64 } %t406, 2 - %t408 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t408, ptr %a409 - call void @finch_str_copy(ptr %a410, ptr %a409) - %t411 = load { ptr, i64, i64 }, ptr %a410 - %t412 = insertvalue %S.ast.Type %t407, { ptr, i64, i64 } %t411, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t412 -endif2472: - %t413 = load ptr, ptr %a1 - %t414 = load { ptr, i64, i64 }, ptr %a352 - %t415 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call i64 @finch.gen.findStruct(ptr %t413, { ptr, i64, i64 } %t414, { ptr, i64, i64 } %t416) - %t418 = icmp slt i64 %t417, 0 - br i1 %t418, label %then2473, label %endif2475 -then2473: - %t419 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 - %t421 = load i64, ptr %t420 - %t422 = icmp eq i64 %t421, 0 - br label %logic.from2476 -logic.from2476: - br i1 %t422, label %logic.rhs2477, label %logic.end2478 -logic.rhs2477: - %t423 = load ptr, ptr %a1 - %t424 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t425 = load { ptr, i64, i64 }, ptr %t424 - %t426 = call i64 @finch.gen.findStruct(ptr %t423, { ptr, i64, i64 } { ptr @.str.1386, i64 1, i64 0 }, { ptr, i64, i64 } %t425) - %t427 = icmp sge i64 %t426, 0 - br label %logic.rend2479 -logic.rend2479: - br label %logic.end2478 -logic.end2478: - %t428 = phi i1 [ false, %logic.from2476 ], [ %t427, %logic.rend2479 ] - br i1 %t428, label %then2480, label %endif2482 -then2480: - %t429 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1387, i64 6, i64 0 }, 0 - %t430 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t431 = load { ptr, i64, i64 }, ptr %t430 - store { ptr, i64, i64 } %t431, ptr %a432 - call void @finch_str_copy(ptr %a433, ptr %a432) - %t434 = load { ptr, i64, i64 }, ptr %a433 - %t435 = insertvalue %S.ast.Type %t429, { ptr, i64, i64 } %t434, 2 - %t436 = insertvalue %S.ast.Type %t435, { ptr, i64, i64 } { ptr @.str.1388, i64 1, i64 0 }, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t436 -endif2482: - %t437 = load ptr, ptr %a1 - %t438 = load %S.ast.Node, ptr %a3 - %t439 = load %S.ast.Type, ptr %a2 - %t440 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t439) - store { ptr, i64, i64 } { ptr @.str.1389, i64 24, i64 0 }, ptr %a442 - store { ptr, i64, i64 } %t440, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - store { ptr, i64, i64 } %t445, ptr %a447 - store { ptr, i64, i64 } { ptr @.str.1390, i64 1, i64 0 }, ptr %a448 - call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) - store { ptr, i64, i64 } %t445, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a446 - call void @finch.gen.fail(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a451 - call void @finch_str_drop(ptr %a451) - br label %endif2475 -endif2475: - %t452 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1391, i64 6, i64 0 }, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_copy(ptr %a456, ptr %a455) - %t457 = load { ptr, i64, i64 }, ptr %a456 - %t458 = insertvalue %S.ast.Type %t452, { ptr, i64, i64 } %t457, 2 - %t459 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t459, ptr %a460 - call void @finch_str_copy(ptr %a461, ptr %a460) - %t462 = load { ptr, i64, i64 }, ptr %a461 - %t463 = insertvalue %S.ast.Type %t458, { ptr, i64, i64 } %t462, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t463 -} - -define internal { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %p0) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1393, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1394, 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.1396, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1397, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1399, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1400, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1402, i64 1, i64 0 }, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1403, i64 0, i64 0 }, ptr %a23 - call void @finch_str_replace(ptr %a21, ptr %a20, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a25 - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t24 -} - -define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) { -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 %then2483, label %endif2485 -then2483: - ret { ptr, i64, i64 } { ptr @.str.1404, i64 4, i64 0 } -endif2485: - %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 - %a29 = 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 - %a38 = 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.1405, 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 %then2486, label %endif2488 -then2486: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1406, i64 2, i64 0 } -endif2488: - %t14 = load %S.ast.Type, ptr %a2 - %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) - br label %logic.from2489 -logic.from2489: - br i1 %t15, label %logic.end2491, label %logic.rhs2490 -logic.rhs2490: - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - 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.rend2492 -logic.rend2492: - br label %logic.end2491 -logic.end2491: - %t21 = phi i1 [ true, %logic.from2489 ], [ %t20, %logic.rend2492 ] - br i1 %t21, label %then2493, label %endif2495 -then2493: - %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.1408, i64 1, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t30 -endif2495: - %t31 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1409, i64 5, i64 0 }, ptr %a33 - %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) - %t35 = icmp ne i32 %t34, 0 - br i1 %t35, label %then2496, label %endif2498 -then2496: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1410, i64 6, i64 0 } -endif2498: - %t36 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 }, ptr %a38 - %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) - %t40 = icmp ne i32 %t39, 0 - br i1 %t40, label %then2499, label %endif2501 -then2499: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1412, i64 5, i64 0 } -endif2501: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1413, 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.from2502 -logic.from2502: - br i1 %t45, label %logic.end2504, label %logic.rhs2503 -logic.rhs2503: - %t46 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1414, i64 5, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - br label %logic.rend2505 -logic.rend2505: - br label %logic.end2504 -logic.end2504: - %t51 = phi i1 [ true, %logic.from2502 ], [ %t50, %logic.rend2505 ] - br i1 %t51, label %then2506, label %endif2508 -then2506: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1415, i64 17, i64 0 } -endif2508: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1416, 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 %then2509, label %endif2511 -then2509: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1417, i64 37, i64 0 } -endif2511: - %t57 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1418, 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 %then2512, label %endif2514 -then2512: - %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1419, i64 1, i64 0 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.1420, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = load ptr, ptr %a1 - %t77 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range2515, label %inrange2516 -range2515: - call void @finch_panic_index(ptr @.str.1421, i64 632, i64 0, i64 %t79) - unreachable -inrange2516: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0 - %t83 = load %S.ast.Type, ptr %t82 - %t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t76, %S.ast.Type %t83) - store { ptr, i64, i64 } %t75, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t75, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.1422, i64 1, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t95 -endif2514: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.1423, i64 4, i64 0 }, ptr %a98 - %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) - %t100 = icmp ne i32 %t99, 0 - br i1 %t100, label %then2517, label %endif2519 -then2517: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1424, i64 3, i64 0 } -endif2519: - %t101 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1425, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.from2520 -logic.from2520: - br i1 %t105, label %logic.end2522, label %logic.rhs2521 -logic.rhs2521: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1426, 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.rend2523 -logic.rend2523: - br label %logic.end2522 -logic.end2522: - %t111 = phi i1 [ true, %logic.from2520 ], [ %t110, %logic.rend2523 ] - br i1 %t111, label %then2524, label %endif2526 -then2524: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1427, i64 3, i64 0 } -endif2526: - %t112 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1428, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2527, label %endif2529 -then2527: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1429, i64 4, i64 0 } -endif2529: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t118) - store { ptr, i64, i64 } { ptr @.str.1430, i64 3, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.1431, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t131) - store { ptr, i64, i64 } %t129, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t132, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a133 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t138 -} - -define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) { -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 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then2530, label %endif2532 -then2530: - %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 -endif2532: - store { ptr, i64, i64 } { ptr @.str.1432, 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.1433, 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 %then2533, label %endif2535 -then2533: - %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) - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t21, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif2535 -endif2535: - %t24 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1434, 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.1435, i64 21, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) { -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 - %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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1436, 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) - store { ptr, i64, i64 } %t7, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1437, i64 1, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.1438, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - ret { ptr, i64, i64 } %t47 -} - -define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) { -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.from2536 -logic.from2536: - br i1 %t9, label %logic.end2538, label %logic.rhs2537 -logic.rhs2537: - %t10 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1439, 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.rend2539 -logic.rend2539: - br label %logic.end2538 -logic.end2538: - %t15 = phi i1 [ true, %logic.from2536 ], [ %t14, %logic.rend2539 ] - br label %logic.from2540 -logic.from2540: - br i1 %t15, label %logic.end2542, label %logic.rhs2541 -logic.rhs2541: - %t16 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1440, 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.rend2543 -logic.rend2543: - br label %logic.end2542 -logic.end2542: - %t21 = phi i1 [ true, %logic.from2540 ], [ %t20, %logic.rend2543 ] - br i1 %t21, label %then2544, label %endif2546 -then2544: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1441, i64 1, i64 0 } -endif2546: - %t22 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1442, 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 %then2547, label %endif2549 -then2547: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1443, i64 5, i64 0 } -endif2549: - %t27 = load %S.ast.Type, ptr %a1 - %t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27) - br i1 %t28, label %then2550, label %endif2552 -then2550: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1444, i64 3, i64 0 } -endif2552: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1445, 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.from2553 -logic.from2553: - br i1 %t33, label %logic.end2555, label %logic.rhs2554 -logic.rhs2554: - %t34 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1446, 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.rend2556 -logic.rend2556: - br label %logic.end2555 -logic.end2555: - %t39 = phi i1 [ true, %logic.from2553 ], [ %t38, %logic.rend2556 ] - br i1 %t39, label %then2557, label %endif2559 -then2557: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1447, i64 4, i64 0 } -endif2559: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1448, 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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.1449, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1450, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal i1 @finch.gen.owning(ptr %p0, %S.ast.Type %p1) { -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.1451, 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.from2560 -logic.from2560: - br i1 %t8, label %logic.end2562, label %logic.rhs2561 -logic.rhs2561: - %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.1452, 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.rend2563 -logic.rend2563: - br label %logic.end2562 -logic.end2562: - %t15 = phi i1 [ true, %logic.from2560 ], [ %t14, %logic.rend2563 ] - br label %logic.from2564 -logic.from2564: - br i1 %t15, label %logic.end2566, label %logic.rhs2565 -logic.rhs2565: - %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.1453, 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.rend2567 -logic.rend2567: - br label %logic.end2566 -logic.end2566: - %t22 = phi i1 [ true, %logic.from2564 ], [ %t21, %logic.rend2567 ] - br i1 %t22, label %then2568, label %endif2570 -then2568: - ret i1 true -endif2570: - %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.1454, 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 %then2571, label %endif2573 -then2571: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2574, label %ok2575 -panic2574: - call void @finch_panic(ptr @.str.1455, i64 690, ptr @.str.1456) - unreachable -ok2575: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 16 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t34 = load { ptr, i64, i64 }, ptr %t33 - %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 %range2576, label %inrange2577 -range2576: - call void @finch_panic_index(ptr @.str.1457, i64 690, i64 %t37, i64 %t39) - unreachable -inrange2577: - %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 -endif2573: - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1458, 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 %then2578, label %endif2580 -then2578: - %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 %range2581, label %inrange2582 -range2581: - call void @finch_panic_index(ptr @.str.1460, i64 697, i64 0, i64 %t10) - unreachable -inrange2582: - %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.1459, i64 4, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif2580: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1461, 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 %then2583, label %endif2585 -then2583: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 0, %t29 - br i1 %t30, label %range2586, label %inrange2587 -range2586: - call void @finch_panic_index(ptr @.str.1463, i64 700, i64 0, i64 %t29) - unreachable -inrange2587: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 0 - %t33 = load %S.ast.Type, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t33) - store { ptr, i64, i64 } { ptr @.str.1462, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1464, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range2588, label %inrange2589 -range2588: - call void @finch_panic_index(ptr @.str.1465, i64 700, i64 1, i64 %t47) - unreachable -inrange2589: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Type, ptr %t49, i64 1 - %t51 = load %S.ast.Type, ptr %t50 - %t52 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t51) - store { ptr, i64, i64 } %t44, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t44, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - ret { ptr, i64, i64 } %t58 -endif2585: - %t59 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.1466, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then2590, label %endif2592 -then2590: - %t65 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t66 = load { ptr, i64, i64 }, ptr %t65 - %t67 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t66) - store { ptr, i64, i64 } { ptr @.str.1467, i64 2, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1468, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, ptr %a81 - store { ptr, i64, i64 } %t79, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t77, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -endif2592: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1469, i64 6, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp ne i32 %t89, 0 - br i1 %t90, label %then2593, label %endif2595 -then2593: - %t91 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t92) - store { ptr, i64, i64 } { ptr @.str.1470, i64 2, i64 0 }, ptr %a95 - store { ptr, i64, i64 } %t93, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.1471, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t105) - store { ptr, i64, i64 } %t103, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t103, ptr %a110 - call void @finch_str_drop(ptr %a110) - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a107 - ret { ptr, i64, i64 } %t112 -endif2595: - %t113 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t117 -} - -define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1472, 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 %range2596, label %inrange2597 -range2596: - call void @finch_panic_index(ptr @.str.1473, i64 715, i64 %t4, i64 %t6) - unreachable -inrange2597: - %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 %range2598, label %inrange2599 -range2598: - call void @finch_panic_index(ptr @.str.1474, i64 715, i64 %t14, i64 %t16) - unreachable -inrange2599: - %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) - store { ptr, i64, i64 } %t12, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t28 -} - -define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a29 = alloca i8, align 16 - %a32 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = 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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2600, label %ok2601 -panic2600: - call void @finch_panic(ptr @.str.1475, i64 719, ptr @.str.1476) - unreachable -ok2601: - %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 %panic2602, label %ok2603 -panic2602: - call void @finch_panic(ptr @.str.1478, i64 720, ptr @.str.1479) - unreachable -ok2603: - %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.1477, i64 6, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %each.cond2604 -each.cond2604: - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = load i64, ptr %a21 - %t25 = icmp slt i64 %t24, %t23 - br i1 %t25, label %each.body2605, label %each.end2607 -each.body2605: - %t26 = load ptr, ptr %a2 - %t27 = getelementptr inbounds i8, ptr %t26, i64 %t24 - %t28 = load i8, ptr %t27 - store i8 %t28, ptr %a29 - %t30 = load i8, ptr %a29 - %t31 = zext i8 %t30 to i64 - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then2608, label %endif2610 -then2608: - %t35 = load i64, ptr %a32 - %t36 = add i64 %t35, 256 - store i64 %t36, ptr %a32 - br label %endif2610 -endif2610: - %t37 = load i64, ptr %a32 - %t38 = icmp sge i64 %t37, 32 - br label %logic.from2611 -logic.from2611: - br i1 %t38, label %logic.rhs2612, label %logic.end2613 -logic.rhs2612: - %t39 = load i64, ptr %a32 - %t40 = icmp slt i64 %t39, 127 - br label %logic.rend2614 -logic.rend2614: - br label %logic.end2613 -logic.end2613: - %t41 = phi i1 [ false, %logic.from2611 ], [ %t40, %logic.rend2614 ] - br label %logic.from2615 -logic.from2615: - br i1 %t41, label %logic.rhs2616, label %logic.end2617 -logic.rhs2616: - %t42 = load i8, ptr %a29 - %t43 = icmp ne i8 %t42, 34 - br label %logic.rend2618 -logic.rend2618: - br label %logic.end2617 -logic.end2617: - %t44 = phi i1 [ false, %logic.from2615 ], [ %t43, %logic.rend2618 ] - br label %logic.from2619 -logic.from2619: - br i1 %t44, label %logic.rhs2620, label %logic.end2621 -logic.rhs2620: - %t45 = load i8, ptr %a29 - %t46 = icmp ne i8 %t45, 92 - br label %logic.rend2622 -logic.rend2622: - br label %logic.end2621 -logic.end2621: - %t47 = phi i1 [ false, %logic.from2619 ], [ %t46, %logic.rend2622 ] - br i1 %t47, label %then2623, label %else2624 -then2623: - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t49 = load i8, ptr %a29 - call void @finch_str_from_char(ptr %a50, i8 signext %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load i64, ptr %t48 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a20 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t48 - br label %endif2625 -else2624: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t57 = load i64, ptr %a32 - %t58 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t57) - store { ptr, i64, i64 } { ptr @.str.1480, i64 1, i64 0 }, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = load i64, ptr %t56 - %t65 = add i64 %t64, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t65, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t66 = load ptr, ptr %a20 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i64 %t64 - store { ptr, i64, i64 } %t63, ptr %t67 - store i64 %t65, ptr %t56 - br label %endif2625 -endif2625: - br label %each.step2606 -each.step2606: - %t68 = load i64, ptr %a21 - %t69 = add i64 %t68, 1 - store i64 %t69, ptr %a21 - br label %each.cond2604 -each.end2607: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic2626, label %ok2627 -panic2626: - call void @finch_panic(ptr @.str.1481, i64 733, ptr @.str.1482) - unreachable -ok2627: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 2 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1483, i64 34, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = add i64 %t80, 1 - call void @finch_str_from_int(ptr %a82, i64 %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t78, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t78, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1484, i64 9, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1485, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a20, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t94, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.1486, i64 4, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load i64, ptr %t73 - %t111 = add i64 %t110, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t112 = load ptr, ptr %t72 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 - store { ptr, i64, i64 } %t109, ptr %t113 - store i64 %t111, ptr %t73 - %t114 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_str(ptr %a20) - ret { ptr, i64, i64 } %t114 -} - -define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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.1487, 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.1488, i64 6, i64 0 }, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t18 = load i64, ptr %t17 - call void @finch_str_from_int(ptr %a19, i64 %t18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t16, ptr %a24 - call void @finch_str_drop(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1489, i64 9, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t31, 0 - %t33 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1490, i64 3, i64 0 }) - %t34 = insertvalue %S.gen.Val %t32, %S.ast.Type %t33, 1 - %t35 = insertvalue %S.gen.Val %t34, i1 true, 2 - call void @finch_str_drop(ptr %a6) - ret %S.gen.Val %t35 -} - -define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1491, 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.1492, 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 %panic2628, label %ok2629 -panic2628: - call void @finch_panic(ptr @.str.1493, i64 749, ptr @.str.1494) - unreachable -ok2629: - %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 %range2630, label %inrange2631 -range2630: - call void @finch_panic_index(ptr @.str.1495, i64 749, i64 %t22, i64 %t24) - unreachable -inrange2631: - %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.1496, 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.1497, i64 6, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t47 = load i64, ptr %t46 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t45, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t45, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1498, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1499, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t73, { ptr, i64, i64 } { ptr @.str.1500, i64 11, i64 0 }) - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic2632, label %ok2633 -panic2632: - call void @finch_panic(ptr @.str.1501, i64 753, ptr @.str.1502) - unreachable -ok2633: - %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 9 - store i1 true, ptr %t76 - %t77 = load ptr, ptr %a1 - %t78 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t77, { ptr, i64, i64 } %t78) - call void @finch_str_drop(ptr %a34) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1503, 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.1504, 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.1505, 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.1506, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = load { ptr, i64, i64 }, ptr %a30 - %t33 = load { ptr, i64, i64 }, ptr %a7 - %t34 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.condBr(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, { ptr, i64, i64 } %t34) - %t35 = load ptr, ptr %a1 - %t36 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.gen.label(ptr %t35, { ptr, i64, i64 } %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic2634, label %ok2635 -panic2634: - call void @finch_panic(ptr @.str.1507, i64 763, ptr @.str.1508) - unreachable -ok2635: - %t40 = getelementptr inbounds %S.gen.Gen, ptr %t38, i32 0, i32 1 - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t40 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range2636, label %inrange2637 -range2636: - call void @finch_panic_index(ptr @.str.1509, i64 763, i64 %t42, i64 %t44) - unreachable -inrange2637: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t42 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t37, { ptr, i64, i64 } %t48) - store { ptr, i64, i64 } %t49, ptr %a50 - %t51 = load ptr, ptr %a1 - %t52 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.1510, i64 33, i64 0 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1511, i64 6, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t61, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t61, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1512, i64 6, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t76, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.1513, i64 6, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.1514, i64 1, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - call void @finch.gen.emit(ptr %t51, { ptr, i64, i64 } %t98) - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t100, { ptr, i64, i64 } { ptr @.str.1515, i64 11, i64 0 }) - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic2638, label %ok2639 -panic2638: - call void @finch_panic(ptr @.str.1516, i64 766, ptr @.str.1517) - unreachable -ok2639: - %t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 9 - store i1 true, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t104, { ptr, i64, i64 } %t105) - call void @finch_str_drop(ptr %a50) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2640, label %ok2641 -panic2640: - call void @finch_panic(ptr @.str.1518, i64 781, ptr @.str.1519) - unreachable -ok2641: - %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 %panic2642, label %ok2643 -panic2642: - call void @finch_panic(ptr @.str.1520, i64 781, ptr @.str.1521) - unreachable -ok2643: - %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 %panic2644, label %ok2645 -panic2644: - call void @finch_panic(ptr @.str.1522, i64 781, ptr @.str.1523) - unreachable -ok2645: - %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 %panic2646, label %ok2647 -panic2646: - call void @finch_panic(ptr @.str.1524, i64 781, ptr @.str.1525) - unreachable -ok2647: - %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 %panic2648, label %ok2649 -panic2648: - call void @finch_panic(ptr @.str.1526, i64 781, ptr @.str.1527) - unreachable -ok2649: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 36 - %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 %panic2650, label %ok2651 -panic2650: - call void @finch_panic(ptr @.str.1528, i64 782, ptr @.str.1529) - unreachable -ok2651: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 36 - 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 %panic2652, label %ok2653 -panic2652: - call void @finch_panic(ptr @.str.1530, i64 784, ptr @.str.1531) - unreachable -ok2653: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 4 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a37 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic2654, label %ok2655 -panic2654: - call void @finch_panic(ptr @.str.1532, i64 785, ptr @.str.1533) - unreachable -ok2655: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 5 - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch.copy.arr_str(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } %t53, ptr %t50 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.drop.arr_str(ptr %a55) - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic2656, label %ok2657 -panic2656: - call void @finch_panic(ptr @.str.1534, i64 786, ptr @.str.1535) - unreachable -ok2657: - %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 6 - store i64 0, ptr %t58 - %t59 = load ptr, ptr %a1 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic2658, label %ok2659 -panic2658: - call void @finch_panic(ptr @.str.1536, i64 787, ptr @.str.1537) - unreachable -ok2659: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 9 - store i1 false, ptr %t61 - %t62 = load %S.gen.Saved, ptr %a33 - call void @finch.drop.arr_str(ptr %a37) - ret %S.gen.Saved %t62 -} - -define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) { -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Saved %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2660, label %ok2661 -panic2660: - call void @finch_panic(ptr @.str.1538, i64 792, ptr @.str.1539) - unreachable -ok2661: - %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.1540, 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 %panic2662, label %ok2663 -panic2662: - call void @finch_panic(ptr @.str.1541, i64 792, ptr @.str.1542) - unreachable -ok2663: - %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.1543, 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) - store { ptr, i64, i64 } %t12, ptr %a23 - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.1544, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic2664, label %ok2665 -panic2664: - call void @finch_panic(ptr @.str.1545, i64 792, ptr @.str.1546) - unreachable -ok2665: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 4 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1547, i64 1, i64 0 }, ptr %a35 - call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) - %t37 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t30, ptr %a39 - store { ptr, i64, i64 } %t37, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t30, ptr %a41 - call void @finch_str_drop(ptr %a41) - store { ptr, i64, i64 } %t37, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.1548, i64 3, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %t7 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t6, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t6 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 - store { ptr, i64, i64 } %t48, ptr %t52 - store i64 %t50, ptr %t7 - %t53 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic2666, label %ok2667 -panic2666: - call void @finch_panic(ptr @.str.1549, i64 793, ptr @.str.1550) - unreachable -ok2667: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 4 - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch.copy.arr_str(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - %t61 = load { ptr, i64, i64 }, ptr %t57 - store { ptr, i64, i64 } %t60, ptr %t57 - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch.drop.arr_str(ptr %a62) - %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2668, label %ok2669 -panic2668: - call void @finch_panic(ptr @.str.1551, i64 794, ptr @.str.1552) - unreachable -ok2669: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 5 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch.copy.arr_str(ptr %a69, ptr %a68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - %t71 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t70, ptr %t67 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch.drop.arr_str(ptr %a72) - %t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 - %t74 = load i64, ptr %t73 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2670, label %ok2671 -panic2670: - call void @finch_panic(ptr @.str.1553, i64 795, ptr @.str.1554) - unreachable -ok2671: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 6 - store i64 %t74, ptr %t77 - %t78 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3 - %t79 = load i1, ptr %t78 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic2672, label %ok2673 -panic2672: - call void @finch_panic(ptr @.str.1555, i64 796, ptr @.str.1556) - unreachable -ok2673: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 9 - store i1 %t79, ptr %t82 - %t83 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4 - %t84 = load i64, ptr %t83 - %t85 = load ptr, ptr %a1 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic2674, label %ok2675 -panic2674: - call void @finch_panic(ptr @.str.1557, i64 797, ptr @.str.1558) - unreachable -ok2675: - %t87 = getelementptr inbounds %S.gen.Gen, ptr %t85, i32 0, i32 36 - store i64 %t84, ptr %t87 - 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - 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.1559, 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.1560, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1561, 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.1562, 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.1563, 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.1564, 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.1565, 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.1566, 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.1567, i64 2, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a44 - %t47 = load { ptr, i64, i64 }, ptr %a13 - %t48 = load { ptr, i64, i64 }, ptr %a16 - call void @finch.gen.condBr(ptr %t45, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t47, { ptr, i64, i64 } %t48) - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.label(ptr %t49, { ptr, i64, i64 } %t50) - %t51 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %t55 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t68 = call ptr @finch_alloc(i64 %t67) - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 0 - store { ptr, i64, i64 } %t54, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 1 - store { ptr, i64, i64 } %t58, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 2 - store { ptr, i64, i64 } %t62, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 3 - store { ptr, i64, i64 } %t66, ptr %t72 - %t73 = insertvalue { ptr, i64, i64 } undef, ptr %t68, 0 - %t74 = insertvalue { ptr, i64, i64 } %t73, i64 4, 1 - %t75 = insertvalue { ptr, i64, i64 } %t74, i64 4, 2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a16) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t75 -} - -define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2676, label %inrange2677 -range2676: - call void @finch_panic_index(ptr @.str.1569, i64 817, i64 0, i64 %t5) - unreachable -inrange2677: - %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.1568, 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.1571, 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.1572, i64 3, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t23, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a2 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 0, %t27 - br i1 %t28, label %range2678, label %inrange2679 -range2678: - call void @finch_panic_index(ptr @.str.1573, i64 818, i64 0, i64 %t27) - unreachable -inrange2679: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 - %t31 = load { ptr, i64, i64 }, ptr %t30 - call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1570, i64 3, i64 0 }, { ptr, i64, i64 } %t24, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t24, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a2 - %t35 = extractvalue { ptr, i64, i64 } %t34, 1 - %t36 = icmp uge i64 1, %t35 - br i1 %t36, label %range2680, label %inrange2681 -range2680: - call void @finch_panic_index(ptr @.str.1574, i64 819, i64 1, i64 %t35) - unreachable -inrange2681: - %t37 = extractvalue { ptr, i64, i64 } %t34, 0 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 1 - %t39 = load { ptr, i64, i64 }, ptr %t38 - call void @finch.gen.br(ptr %t33, { ptr, i64, i64 } %t39) - %t40 = load ptr, ptr %a1 - %t41 = load { ptr, i64, i64 }, ptr %a2 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 2, %t42 - br i1 %t43, label %range2682, label %inrange2683 -range2682: - call void @finch_panic_index(ptr @.str.1575, i64 820, i64 2, i64 %t42) - unreachable -inrange2683: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 2 - %t46 = load { ptr, i64, i64 }, ptr %t45 - call void @finch.gen.label(ptr %t40, { ptr, i64, i64 } %t46) - call void @finch_str_drop(ptr %a11) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1576, 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 %then2684, label %else2685 -then2684: - %t11 = load ptr, ptr %a1 - %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1577, 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.1578, i64 6, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t27, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.1579, i64 1, i64 0 }, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t27, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif2686 -else2685: - %t34 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1580, i64 5, i64 0 }, ptr %a37 - %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) - %t39 = icmp ne i32 %t38, 0 - br label %logic.from2687 -logic.from2687: - br i1 %t39, label %logic.end2689, label %logic.rhs2688 -logic.rhs2688: - %t40 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1581, 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.rend2690 -logic.rend2690: - br label %logic.end2689 -logic.end2689: - %t46 = phi i1 [ true, %logic.from2687 ], [ %t45, %logic.rend2690 ] - br label %logic.from2691 -logic.from2691: - br i1 %t46, label %logic.end2693, label %logic.rhs2692 -logic.rhs2692: - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1582, i64 6, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from2694 -logic.from2694: - br i1 %t52, label %logic.rhs2695, label %logic.end2696 -logic.rhs2695: - %t53 = load ptr, ptr %a1 - %t54 = load %S.ast.Type, ptr %a4 - %t55 = call i1 @finch.gen.owning(ptr %t53, %S.ast.Type %t54) - br label %logic.rend2697 -logic.rend2697: - br label %logic.end2696 -logic.end2696: - %t56 = phi i1 [ false, %logic.from2694 ], [ %t55, %logic.rend2697 ] - br label %logic.rend2698 -logic.rend2698: - br label %logic.end2693 -logic.end2693: - %t57 = phi i1 [ true, %logic.from2691 ], [ %t56, %logic.rend2698 ] - br i1 %t57, label %then2699, label %else2700 -then2699: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1583, i64 10, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1584, i64 5, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1585, i64 6, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t82, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1586, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.emit(ptr %t58, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif2701 -else2700: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a4 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - %t99 = load ptr, ptr %a1 - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Type, ptr %a4 - %t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101) - %t103 = load { ptr, i64, i64 }, ptr %a3 - %t104 = call { ptr, i64, i64 } @finch.gen.load(ptr %t99, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a2 - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t98, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2701 -endif2701: - br label %endif2686 -endif2686: - ret void -} - -define internal void @finch.drop.S_gen_Saved(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - ret void -} - -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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.StructDef, align 16 - %a365 = alloca %S.gen.StructDef, align 16 - %a367 = alloca %S.gen.StructDef, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca i64, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1587, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2702, label %ok2703 -panic2702: - call void @finch_panic(ptr @.str.1588, i64 835, ptr @.str.1589) - unreachable -ok2703: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2704, label %endif2706 -then2704: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2706: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2707, label %ok2708 -panic2707: - call void @finch_panic(ptr @.str.1590, i64 838, ptr @.str.1591) - unreachable -ok2708: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1592, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2709, label %else2710 -then2709: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2712, label %inrange2713 -range2712: - call void @finch_panic_index(ptr @.str.1593, i64 841, i64 0, i64 %t41) - unreachable -inrange2713: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load ptr, ptr %a1 - %t52 = load %S.ast.Type, ptr %a49 - %t53 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t51, %S.ast.Type %t52) - store { ptr, i64, i64 } { ptr @.str.1594, i64 55, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.1595, i64 1, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.emit(ptr %t50, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Type, ptr %a49 - %t67 = call i1 @finch.gen.owning(ptr %t65, %S.ast.Type %t66) - br i1 %t67, label %then2714, label %endif2716 -then2714: - %t68 = load ptr, ptr %a1 - %t69 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.1596, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1597, i64 4, i64 0 }) - store { ptr, i64, i64 } %t69, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t71, { ptr, i64, i64 } { ptr @.str.1598, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1599, i64 4, i64 0 }) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t75, { ptr, i64, i64 } { ptr @.str.1601, i64 64, i64 0 }) - %t77 = call { ptr, i64, i64 } @finch.gen.load(ptr %t74, { ptr, i64, i64 } { ptr @.str.1600, i64 3, i64 0 }, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - store { ptr, i64, i64 } %t77, ptr %a79 - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a79 - %t82 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t80, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Type, ptr %a49 - %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) - store { ptr, i64, i64 } { ptr @.str.1602, i64 23, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.1603, i64 6, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1604, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a83 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 3, %t110 - br i1 %t111, label %range2717, label %inrange2718 -range2717: - call void @finch_panic_index(ptr @.str.1605, i64 848, i64 3, i64 %t110) - unreachable -inrange2718: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 3 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t108, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t108, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t84, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Type, ptr %a49 - %t126 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t124, %S.ast.Type %t125) - store { ptr, i64, i64 } { ptr @.str.1606, i64 23, i64 0 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1607, i64 6, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t136, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t136, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.1608, i64 6, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - store { ptr, i64, i64 } %t142, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a143 - %t148 = load { ptr, i64, i64 }, ptr %a83 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 3, %t149 - br i1 %t150, label %range2719, label %inrange2720 -range2719: - call void @finch_panic_index(ptr @.str.1609, i64 849, i64 3, i64 %t149) - unreachable -inrange2720: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 3 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t147, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t147, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = call { ptr, i64, i64 } @finch.gen.op(ptr %t123, { ptr, i64, i64 } %t158) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - store { ptr, i64, i64 } %t159, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a122 - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load %S.ast.Type, ptr %a49 - call void @finch.gen.copyAt(ptr %t162, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t164, %S.ast.Type %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.loopEnd(ptr %t166, { ptr, i64, i64 } %t167) - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a122) - call void @finch.drop.arr_str(ptr %a83) - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a73) - call void @finch_str_drop(ptr %a70) - br label %endif2716 -endif2716: - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2711 -else2710: - %t168 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.1610, i64 3, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then2721, label %else2722 -then2721: - %t174 = load ptr, ptr %a1 - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Type, ptr %a2 - %t177 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t175, %S.ast.Type %t176) - store { ptr, i64, i64 } { ptr @.str.1611, i64 55, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t177, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1612, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 0, %t192 - br i1 %t193, label %range2724, label %inrange2725 -range2724: - call void @finch_panic_index(ptr @.str.1613, i64 855, i64 0, i64 %t192) - unreachable -inrange2725: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Type, ptr %t194, i64 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = call i1 @finch.gen.owning(ptr %t189, %S.ast.Type %t196) - br label %logic.from2726 -logic.from2726: - br i1 %t197, label %logic.end2728, label %logic.rhs2727 -logic.rhs2727: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t200 = load { ptr, i64, i64 }, ptr %t199 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 1, %t201 - br i1 %t202, label %range2729, label %inrange2730 -range2729: - call void @finch_panic_index(ptr @.str.1614, i64 855, i64 1, i64 %t201) - unreachable -inrange2730: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.ast.Type, ptr %t203, i64 1 - %t205 = load %S.ast.Type, ptr %t204 - %t206 = call i1 @finch.gen.owning(ptr %t198, %S.ast.Type %t205) - br label %logic.rend2731 -logic.rend2731: - br label %logic.end2728 -logic.end2728: - %t207 = phi i1 [ true, %logic.from2726 ], [ %t206, %logic.rend2731 ] - br i1 %t207, label %then2732, label %endif2734 -then2732: - %t208 = load ptr, ptr %a1 - %t209 = load ptr, ptr %a1 - %t210 = load ptr, ptr %a1 - %t211 = load %S.ast.Type, ptr %a2 - %t212 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t210, %S.ast.Type %t211) - store { ptr, i64, i64 } { ptr @.str.1616, i64 23, i64 0 }, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.1617, i64 24, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t209, { ptr, i64, i64 } %t222) - store { ptr, i64, i64 } %t222, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = call { ptr, i64, i64 } @finch.gen.load(ptr %t208, { ptr, i64, i64 } { ptr @.str.1615, i64 3, i64 0 }, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t225, ptr %a227 - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a227 - %t230 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t228, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a2 - %t234 = load { ptr, i64, i64 }, ptr %a231 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 3, %t235 - br i1 %t236, label %range2735, label %inrange2736 -range2735: - call void @finch_panic_index(ptr @.str.1619, i64 859, i64 3, i64 %t235) - unreachable -inrange2736: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 3 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } { ptr @.str.1618, i64 4, i64 0 }, %S.ast.Type %t233, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t240, ptr %a241 - %t242 = load ptr, ptr %a1 - %t243 = load %S.ast.Type, ptr %a2 - %t244 = load { ptr, i64, i64 }, ptr %a231 - %t245 = extractvalue { ptr, i64, i64 } %t244, 1 - %t246 = icmp uge i64 3, %t245 - br i1 %t246, label %range2737, label %inrange2738 -range2737: - call void @finch_panic_index(ptr @.str.1621, i64 860, i64 3, i64 %t245) - unreachable -inrange2738: - %t247 = extractvalue { ptr, i64, i64 } %t244, 0 - %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i64 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - %t250 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t242, { ptr, i64, i64 } { ptr @.str.1620, i64 4, i64 0 }, %S.ast.Type %t243, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t252, { ptr, i64, i64 } { ptr @.str.1622, i64 10, i64 0 }) - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t255, { ptr, i64, i64 } { ptr @.str.1623, i64 10, i64 0 }) - store { ptr, i64, i64 } %t256, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a1 - %t260 = load ptr, ptr %a1 - %t261 = load ptr, ptr %a1 - %t262 = load ptr, ptr %a1 - %t263 = load %S.ast.Type, ptr %a2 - %t264 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t262, %S.ast.Type %t263) - store { ptr, i64, i64 } { ptr @.str.1626, i64 23, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_drop(ptr %a268) - %t269 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t269, ptr %a271 - store { ptr, i64, i64 } { ptr @.str.1627, i64 6, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = load { ptr, i64, i64 }, ptr %a241 - store { ptr, i64, i64 } %t274, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t274, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.1628, i64 14, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t261, { ptr, i64, i64 } %t285) - store { ptr, i64, i64 } %t285, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = call { ptr, i64, i64 } @finch.gen.load(ptr %t260, { ptr, i64, i64 } { ptr @.str.1625, i64 3, i64 0 }, { ptr, i64, i64 } %t286) - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_drop(ptr %a289) - store { ptr, i64, i64 } { ptr @.str.1624, i64 12, i64 0 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1629, i64 3, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t259, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a254 - %t303 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.condBr(ptr %t258, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a254 - call void @finch.gen.label(ptr %t305, { ptr, i64, i64 } %t306) - %t307 = load ptr, ptr %a1 - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a251 - %t310 = load %S.ast.Type, ptr %a2 - %t311 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310, i64 1) - %t312 = load ptr, ptr %a1 - %t313 = load { ptr, i64, i64 }, ptr %a241 - %t314 = load %S.ast.Type, ptr %a2 - %t315 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t312, { ptr, i64, i64 } %t313, %S.ast.Type %t314, i64 1) - %t316 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %t316 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 0, %t318 - br i1 %t319, label %range2739, label %inrange2740 -range2739: - call void @finch_panic_index(ptr @.str.1630, i64 865, i64 0, i64 %t318) - unreachable -inrange2740: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds %S.ast.Type, ptr %t320, i64 0 - %t322 = load %S.ast.Type, ptr %t321 - call void @finch.gen.copyAt(ptr %t307, { ptr, i64, i64 } %t311, { ptr, i64, i64 } %t315, %S.ast.Type %t322) - store { ptr, i64, i64 } %t311, ptr %a323 - call void @finch_str_drop(ptr %a323) - store { ptr, i64, i64 } %t315, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load ptr, ptr %a1 - %t326 = load ptr, ptr %a1 - %t327 = load { ptr, i64, i64 }, ptr %a251 - %t328 = load %S.ast.Type, ptr %a2 - %t329 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t326, { ptr, i64, i64 } %t327, %S.ast.Type %t328, i64 2) - %t330 = load ptr, ptr %a1 - %t331 = load { ptr, i64, i64 }, ptr %a241 - %t332 = load %S.ast.Type, ptr %a2 - %t333 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t330, { ptr, i64, i64 } %t331, %S.ast.Type %t332, i64 2) - %t334 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t335 = load { ptr, i64, i64 }, ptr %t334 - %t336 = extractvalue { ptr, i64, i64 } %t335, 1 - %t337 = icmp uge i64 1, %t336 - br i1 %t337, label %range2741, label %inrange2742 -range2741: - call void @finch_panic_index(ptr @.str.1631, i64 866, i64 1, i64 %t336) - unreachable -inrange2742: - %t338 = extractvalue { ptr, i64, i64 } %t335, 0 - %t339 = getelementptr inbounds %S.ast.Type, ptr %t338, i64 1 - %t340 = load %S.ast.Type, ptr %t339 - call void @finch.gen.copyAt(ptr %t325, { ptr, i64, i64 } %t329, { ptr, i64, i64 } %t333, %S.ast.Type %t340) - store { ptr, i64, i64 } %t329, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t333, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - %t344 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.br(ptr %t343, { ptr, i64, i64 } %t344) - %t345 = load ptr, ptr %a1 - %t346 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.label(ptr %t345, { ptr, i64, i64 } %t346) - %t347 = load ptr, ptr %a1 - %t348 = load { ptr, i64, i64 }, ptr %a231 - call void @finch.gen.loopEnd(ptr %t347, { ptr, i64, i64 } %t348) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a254) - call void @finch_str_drop(ptr %a251) - call void @finch_str_drop(ptr %a241) - call void @finch.drop.arr_str(ptr %a231) - call void @finch_str_drop(ptr %a227) - br label %endif2734 -endif2734: - br label %endif2723 -else2722: - %t349 = load ptr, ptr %a1 - %t350 = icmp eq ptr %t349, null - br i1 %t350, label %panic2743, label %ok2744 -panic2743: - call void @finch_panic(ptr @.str.1632, i64 872, ptr @.str.1633) - unreachable -ok2744: - %t351 = getelementptr inbounds %S.gen.Gen, ptr %t349, i32 0, i32 16 - %t352 = load ptr, ptr %a1 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = load { ptr, i64, i64 }, ptr %t353 - %t355 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t356 = load { ptr, i64, i64 }, ptr %t355 - %t357 = call i64 @finch.gen.findStruct(ptr %t352, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356) - %t358 = load { ptr, i64, i64 }, ptr %t351 - %t359 = extractvalue { ptr, i64, i64 } %t358, 1 - %t360 = icmp uge i64 %t357, %t359 - br i1 %t360, label %range2745, label %inrange2746 -range2745: - call void @finch_panic_index(ptr @.str.1634, i64 872, i64 %t357, i64 %t359) - unreachable -inrange2746: - %t361 = extractvalue { ptr, i64, i64 } %t358, 0 - %t362 = getelementptr inbounds %S.gen.StructDef, ptr %t361, i64 %t357 - %t363 = load %S.gen.StructDef, ptr %t362 - store %S.gen.StructDef %t363, ptr %a364 - call void @finch.copy.S_gen_StructDef(ptr %a365, ptr %a364) - %t366 = load %S.gen.StructDef, ptr %a365 - store %S.gen.StructDef %t366, ptr %a367 - %t368 = load ptr, ptr %a1 - %t369 = load %S.ast.Type, ptr %a2 - %t370 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t368, %S.ast.Type %t369) - store { ptr, i64, i64 } %t370, ptr %a371 - %t372 = load ptr, ptr %a1 - %t373 = load { ptr, i64, i64 }, ptr %a371 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } { ptr @.str.1635, i64 4, i64 0 }) - call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } %t373, { ptr, i64, i64 } %t376, { ptr, i64, i64 } { ptr @.str.1636, i64 4, i64 0 }) - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t380 = load i64, ptr %t379 - store i64 0, ptr %a381 - br label %for.cond2747 -for.cond2747: - %t382 = load i64, ptr %a381 - %t383 = icmp slt i64 %t382, %t380 - br i1 %t383, label %for.body2748, label %for.end2750 -for.body2748: - %t384 = load ptr, ptr %a1 - %t385 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t386 = load i64, ptr %a381 - %t387 = load { ptr, i64, i64 }, ptr %t385 - %t388 = extractvalue { ptr, i64, i64 } %t387, 1 - %t389 = icmp uge i64 %t386, %t388 - br i1 %t389, label %range2751, label %inrange2752 -range2751: - call void @finch_panic_index(ptr @.str.1637, i64 876, i64 %t386, i64 %t388) - unreachable -inrange2752: - %t390 = extractvalue { ptr, i64, i64 } %t387, 0 - %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i64 %t386 - %t392 = load %S.ast.Type, ptr %t391 - %t393 = call i1 @finch.gen.owning(ptr %t384, %S.ast.Type %t392) - br i1 %t393, label %then2753, label %endif2755 -then2753: - %t394 = load ptr, ptr %a1 - %t395 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1638, i64 23, i64 0 }, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.1639, i64 23, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t406 = load i64, ptr %a381 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range2756, label %inrange2757 -range2756: - call void @finch_panic_index(ptr @.str.1640, i64 877, i64 %t406, i64 %t408) - unreachable -inrange2757: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds i64, ptr %t410, i64 %t406 - %t412 = load i64, ptr %t411 - call void @finch_str_from_int(ptr %a413, i64 %t412) - %t414 = load { ptr, i64, i64 }, ptr %a413 - store { ptr, i64, i64 } %t404, ptr %a416 - store { ptr, i64, i64 } %t414, ptr %a417 - call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) - store { ptr, i64, i64 } %t404, ptr %a418 - call void @finch_str_drop(ptr %a418) - store { ptr, i64, i64 } %t414, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a415 - %t421 = call { ptr, i64, i64 } @finch.gen.op(ptr %t394, { ptr, i64, i64 } %t420) - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - store { ptr, i64, i64 } %t421, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1641, i64 23, i64 0 }, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.1642, i64 23, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t436 = load i64, ptr %a381 - %t437 = load { ptr, i64, i64 }, ptr %t435 - %t438 = extractvalue { ptr, i64, i64 } %t437, 1 - %t439 = icmp uge i64 %t436, %t438 - br i1 %t439, label %range2758, label %inrange2759 -range2758: - call void @finch_panic_index(ptr @.str.1643, i64 878, i64 %t436, i64 %t438) - unreachable -inrange2759: - %t440 = extractvalue { ptr, i64, i64 } %t437, 0 - %t441 = getelementptr inbounds i64, ptr %t440, i64 %t436 - %t442 = load i64, ptr %t441 - call void @finch_str_from_int(ptr %a443, i64 %t442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a446 - store { ptr, i64, i64 } %t444, ptr %a447 - call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447) - store { ptr, i64, i64 } %t434, ptr %a448 - call void @finch_str_drop(ptr %a448) - store { ptr, i64, i64 } %t444, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a445 - %t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t424, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t451, ptr %a453 - %t454 = load ptr, ptr %a1 - %t455 = load { ptr, i64, i64 }, ptr %a423 - %t456 = load { ptr, i64, i64 }, ptr %a453 - %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t458 = load i64, ptr %a381 - %t459 = load { ptr, i64, i64 }, ptr %t457 - %t460 = extractvalue { ptr, i64, i64 } %t459, 1 - %t461 = icmp uge i64 %t458, %t460 - br i1 %t461, label %range2760, label %inrange2761 -range2760: - call void @finch_panic_index(ptr @.str.1644, i64 879, i64 %t458, i64 %t460) - unreachable -inrange2761: - %t462 = extractvalue { ptr, i64, i64 } %t459, 0 - %t463 = getelementptr inbounds %S.ast.Type, ptr %t462, i64 %t458 - %t464 = load %S.ast.Type, ptr %t463 - call void @finch.gen.copyAt(ptr %t454, { ptr, i64, i64 } %t455, { ptr, i64, i64 } %t456, %S.ast.Type %t464) - call void @finch_str_drop(ptr %a453) - call void @finch_str_drop(ptr %a423) - br label %endif2755 -endif2755: - br label %for.step2749 -for.step2749: - %t465 = load i64, ptr %a381 - %t466 = add i64 %t465, 1 - store i64 %t466, ptr %a381 - br label %for.cond2747 -for.end2750: - call void @finch_str_drop(ptr %a371) - call void @finch.drop.S_gen_StructDef(ptr %a367) - br label %endif2723 -endif2723: - br label %endif2711 -endif2711: - %t467 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t467, { ptr, i64, i64 } { ptr @.str.1645, i64 8, i64 0 }) - %t468 = load ptr, ptr %a1 - %t469 = load %S.gen.Saved, ptr %a32 - %t470 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1646, i64 21, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.1647, i64 20, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - call void @finch.gen.endHelper(ptr %t468, %S.gen.Saved %t469, { ptr, i64, i64 } %t479) - store { ptr, i64, i64 } %t479, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t481 -} - -define internal void @finch.drop.S_gen_Val(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.copyValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -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 %S.gen.Val, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %then2762, label %endif2764 -then2762: - %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 -endif2764: - %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 %S.gen.Val %t22, ptr %a24 - call void @finch.drop.S_gen_Val(ptr %a24) - store { ptr, i64, i64 } %t23, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t27, %S.ast.Type %t28) - %t30 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t26, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a32 - %t35 = load { ptr, i64, i64 }, ptr %a25 - %t36 = load %S.ast.Type, ptr %a3 - call void @finch.gen.copyAt(ptr %t33, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t35, %S.ast.Type %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Type, ptr %a3 - %t40 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t38, %S.ast.Type %t39) - %t41 = load { ptr, i64, i64 }, ptr %a32 - %t42 = call { ptr, i64, i64 } @finch.gen.load(ptr %t37, { ptr, i64, i64 } %t40, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_drop(ptr %a43) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.gen.dropAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - %t7 = xor i1 %t6, true - br i1 %t7, label %then2765, label %endif2767 -then2765: - ret void -endif2767: - %t8 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t9 = load { ptr, i64, i64 }, ptr %t8 - store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1648, 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 %then2768, label %else2769 -then2768: - %t14 = load ptr, ptr %a1 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1649, i64 30, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1650, i64 1, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.emit(ptr %t14, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2770 -else2769: - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.dropFn(ptr %t27, %S.ast.Type %t28) - store { ptr, i64, i64 } { ptr @.str.1651, i64 10, i64 0 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1652, i64 5, i64 0 }, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t39, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1653, i64 1, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.emit(ptr %t26, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif2770 -endif2770: - ret void -} - -define internal void @finch.gen.dropValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a16 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.gen.Val, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2771, label %endif2773 -then2771: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %t13 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t12, 0 - %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - %t18 = insertvalue %S.gen.Val %t13, %S.ast.Type %t17, 1 - %t19 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t8, %S.gen.Val %t18) - store %S.gen.Val %t18, ptr %a20 - call void @finch.drop.S_gen_Val(ptr %a20) - %t21 = load %S.ast.Type, ptr %a3 - call void @finch.gen.dropAt(ptr %t7, { ptr, i64, i64 } %t19, %S.ast.Type %t21) - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_drop(ptr %a22) - br label %endif2773 -endif2773: - ret void -} - -define internal void @finch.gen.release(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2774 -logic.from2774: - br i1 %t4, label %logic.rhs2775, label %logic.end2776 -logic.rhs2775: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2777 -logic.rend2777: - br label %logic.end2776 -logic.end2776: - %t9 = phi i1 [ false, %logic.from2774 ], [ %t8, %logic.rend2777 ] - br label %logic.from2778 -logic.from2778: - br i1 %t9, label %logic.rhs2779, label %logic.end2780 -logic.rhs2779: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2781 -logic.rend2781: - br label %logic.end2780 -logic.end2780: - %t14 = phi i1 [ false, %logic.from2778 ], [ %t13, %logic.rend2781 ] - br label %logic.from2782 -logic.from2782: - br i1 %t14, label %logic.rhs2783, label %logic.end2784 -logic.rhs2783: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2785 -logic.rend2785: - br label %logic.end2784 -logic.end2784: - %t19 = phi i1 [ false, %logic.from2782 ], [ %t18, %logic.rend2785 ] - br i1 %t19, label %then2786, label %endif2788 -then2786: - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t24 = load %S.ast.Type, ptr %t23 - call void @finch.gen.dropValue(ptr %t20, { ptr, i64, i64 } %t22, %S.ast.Type %t24) - br label %endif2788 -endif2788: - ret void -} - -define internal i1 @finch.gen.isConstant({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1655, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_starts(ptr %a3, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - %t8 = xor i1 %t7, true - ret i1 %t8 -} - -define internal { ptr, i64, i64 } @finch.gen.dropFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.gen.StructDef, align 16 - %a249 = alloca %S.gen.StructDef, align 16 - %a251 = alloca %S.gen.StructDef, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca i64, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1656, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2789, label %ok2790 -panic2789: - call void @finch_panic(ptr @.str.1657, i64 930, ptr @.str.1658) - unreachable -ok2790: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2791, label %endif2793 -then2791: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2793: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2794, label %ok2795 -panic2794: - call void @finch_panic(ptr @.str.1659, i64 933, ptr @.str.1660) - unreachable -ok2795: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1661, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2796, label %else2797 -then2796: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2799, label %inrange2800 -range2799: - call void @finch_panic_index(ptr @.str.1662, i64 936, i64 0, i64 %t41) - unreachable -inrange2800: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load %S.ast.Type, ptr %a49 - %t52 = call i1 @finch.gen.owning(ptr %t50, %S.ast.Type %t51) - br i1 %t52, label %then2801, label %endif2803 -then2801: - %t53 = load ptr, ptr %a1 - %t54 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1663, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1664, i64 2, i64 0 }) - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } { ptr @.str.1666, i64 62, i64 0 }) - %t59 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.1665, i64 3, i64 0 }, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t62, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load ptr, ptr %a1 - %t68 = load %S.ast.Type, ptr %a49 - %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) - store { ptr, i64, i64 } { ptr @.str.1667, i64 23, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1668, i64 6, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1669, i64 6, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load { ptr, i64, i64 }, ptr %a65 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 3, %t92 - br i1 %t93, label %range2804, label %inrange2805 -range2804: - call void @finch_panic_index(ptr @.str.1670, i64 941, i64 3, i64 %t92) - unreachable -inrange2805: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t66, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a104 - %t107 = load %S.ast.Type, ptr %a49 - call void @finch.gen.dropAt(ptr %t105, { ptr, i64, i64 } %t106, %S.ast.Type %t107) - %t108 = load ptr, ptr %a1 - %t109 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.loopEnd(ptr %t108, { ptr, i64, i64 } %t109) - call void @finch_str_drop(ptr %a104) - call void @finch.drop.arr_str(ptr %a65) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a55) - br label %endif2803 -endif2803: - %t110 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t110, { ptr, i64, i64 } { ptr @.str.1671, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2798 -else2797: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1672, i64 3, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2806, label %else2807 -then2806: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 0, %t119 - br i1 %t120, label %range2809, label %inrange2810 -range2809: - call void @finch_panic_index(ptr @.str.1673, i64 947, i64 0, i64 %t119) - unreachable -inrange2810: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 0 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - store %S.ast.Type %t126, ptr %a127 - %t128 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 1, %t130 - br i1 %t131, label %range2811, label %inrange2812 -range2811: - call void @finch_panic_index(ptr @.str.1674, i64 948, i64 1, i64 %t130) - unreachable -inrange2812: - %t132 = extractvalue { ptr, i64, i64 } %t129, 0 - %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i64 1 - %t134 = load %S.ast.Type, ptr %t133 - store %S.ast.Type %t134, ptr %a135 - call void @finch.copy.S_ast_Type(ptr %a136, ptr %a135) - %t137 = load %S.ast.Type, ptr %a136 - store %S.ast.Type %t137, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Type, ptr %a127 - %t141 = call i1 @finch.gen.owning(ptr %t139, %S.ast.Type %t140) - br label %logic.from2813 -logic.from2813: - br i1 %t141, label %logic.end2815, label %logic.rhs2814 -logic.rhs2814: - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Type, ptr %a138 - %t144 = call i1 @finch.gen.owning(ptr %t142, %S.ast.Type %t143) - br label %logic.rend2816 -logic.rend2816: - br label %logic.end2815 -logic.end2815: - %t145 = phi i1 [ true, %logic.from2813 ], [ %t144, %logic.rend2816 ] - br i1 %t145, label %then2817, label %endif2819 -then2817: - %t146 = load ptr, ptr %a1 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load %S.ast.Type, ptr %a2 - %t150 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t148, %S.ast.Type %t149) - store { ptr, i64, i64 } { ptr @.str.1676, i64 23, i64 0 }, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t155, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1677, i64 22, i64 0 }, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t155, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a156 - %t161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t160) - store { ptr, i64, i64 } %t160, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t146, { ptr, i64, i64 } { ptr @.str.1675, i64 3, i64 0 }, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_drop(ptr %a164) - store { ptr, i64, i64 } %t163, ptr %a165 - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a165 - %t168 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t166, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load %S.ast.Type, ptr %a2 - %t172 = load { ptr, i64, i64 }, ptr %a169 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 3, %t173 - br i1 %t174, label %range2820, label %inrange2821 -range2820: - call void @finch_panic_index(ptr @.str.1679, i64 952, i64 3, i64 %t173) - unreachable -inrange2821: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i64 3 - %t177 = load { ptr, i64, i64 }, ptr %t176 - %t178 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t170, { ptr, i64, i64 } { ptr @.str.1678, i64 2, i64 0 }, %S.ast.Type %t171, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1680, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1681, i64 10, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - %t186 = load ptr, ptr %a1 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a179 - %t191 = load %S.ast.Type, ptr %a2 - %t192 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t189, { ptr, i64, i64 } %t190, %S.ast.Type %t191, i64 0) - %t193 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } { ptr @.str.1683, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - store { ptr, i64, i64 } { ptr @.str.1682, i64 12, i64 0 }, ptr %a196 - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1684, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t204, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a182 - %t208 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.condBr(ptr %t186, { ptr, i64, i64 } %t205, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t210, { ptr, i64, i64 } %t211) - %t212 = load ptr, ptr %a1 - %t213 = load ptr, ptr %a1 - %t214 = load { ptr, i64, i64 }, ptr %a179 - %t215 = load %S.ast.Type, ptr %a2 - %t216 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t213, { ptr, i64, i64 } %t214, %S.ast.Type %t215, i64 1) - %t217 = load %S.ast.Type, ptr %a127 - call void @finch.gen.dropAt(ptr %t212, { ptr, i64, i64 } %t216, %S.ast.Type %t217) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load ptr, ptr %a1 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a179 - %t222 = load %S.ast.Type, ptr %a2 - %t223 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t220, { ptr, i64, i64 } %t221, %S.ast.Type %t222, i64 2) - %t224 = load %S.ast.Type, ptr %a138 - call void @finch.gen.dropAt(ptr %t219, { ptr, i64, i64 } %t223, %S.ast.Type %t224) - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t226, { ptr, i64, i64 } %t227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t228, { ptr, i64, i64 } %t229) - %t230 = load ptr, ptr %a1 - %t231 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.loopEnd(ptr %t230, { ptr, i64, i64 } %t231) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.arr_str(ptr %a169) - call void @finch_str_drop(ptr %a165) - br label %endif2819 -endif2819: - %t232 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.1685, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a138) - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif2808 -else2807: - %t233 = load ptr, ptr %a1 - %t234 = icmp eq ptr %t233, null - br i1 %t234, label %panic2822, label %ok2823 -panic2822: - call void @finch_panic(ptr @.str.1686, i64 965, ptr @.str.1687) - unreachable -ok2823: - %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 16 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %t235 - %t243 = extractvalue { ptr, i64, i64 } %t242, 1 - %t244 = icmp uge i64 %t241, %t243 - br i1 %t244, label %range2824, label %inrange2825 -range2824: - call void @finch_panic_index(ptr @.str.1688, i64 965, i64 %t241, i64 %t243) - unreachable -inrange2825: - %t245 = extractvalue { ptr, i64, i64 } %t242, 0 - %t246 = getelementptr inbounds %S.gen.StructDef, ptr %t245, i64 %t241 - %t247 = load %S.gen.StructDef, ptr %t246 - store %S.gen.StructDef %t247, ptr %a248 - call void @finch.copy.S_gen_StructDef(ptr %a249, ptr %a248) - %t250 = load %S.gen.StructDef, ptr %a249 - store %S.gen.StructDef %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = load %S.ast.Type, ptr %a2 - %t254 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t252, %S.ast.Type %t253) - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i32 0, i32 1 - %t258 = load i64, ptr %t257 - store i64 0, ptr %a259 - br label %for.cond2826 -for.cond2826: - %t260 = load i64, ptr %a259 - %t261 = icmp slt i64 %t260, %t258 - br i1 %t261, label %for.body2827, label %for.end2829 -for.body2827: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t264 = load i64, ptr %a259 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range2830, label %inrange2831 -range2830: - call void @finch_panic_index(ptr @.str.1689, i64 968, i64 %t264, i64 %t266) - unreachable -inrange2831: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.ast.Type, ptr %t268, i64 %t264 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t262, %S.ast.Type %t270) - br i1 %t271, label %then2832, label %endif2834 -then2832: - %t272 = load ptr, ptr %a1 - %t273 = load ptr, ptr %a1 - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } { ptr @.str.1690, i64 23, i64 0 }, ptr %a276 - store { ptr, i64, i64 } %t274, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.1691, i64 21, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 3 - %t285 = load i64, ptr %a259 - %t286 = load { ptr, i64, i64 }, ptr %t284 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 %t285, %t287 - br i1 %t288, label %range2835, label %inrange2836 -range2835: - call void @finch_panic_index(ptr @.str.1692, i64 969, i64 %t285, i64 %t287) - unreachable -inrange2836: - %t289 = extractvalue { ptr, i64, i64 } %t286, 0 - %t290 = getelementptr inbounds i64, ptr %t289, i64 %t285 - %t291 = load i64, ptr %t290 - call void @finch_str_from_int(ptr %a292, i64 %t291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t283, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - store { ptr, i64, i64 } %t283, ptr %a297 - call void @finch_str_drop(ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a294 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t273, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t303 = load i64, ptr %a259 - %t304 = load { ptr, i64, i64 }, ptr %t302 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range2837, label %inrange2838 -range2837: - call void @finch_panic_index(ptr @.str.1693, i64 969, i64 %t303, i64 %t305) - unreachable -inrange2838: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Type, ptr %t307, i64 %t303 - %t309 = load %S.ast.Type, ptr %t308 - call void @finch.gen.dropAt(ptr %t272, { ptr, i64, i64 } %t300, %S.ast.Type %t309) - store { ptr, i64, i64 } %t300, ptr %a310 - call void @finch_str_drop(ptr %a310) - br label %endif2834 -endif2834: - br label %for.step2828 -for.step2828: - %t311 = load i64, ptr %a259 - %t312 = add i64 %t311, 1 - store i64 %t312, ptr %a259 - br label %for.cond2826 -for.end2829: - call void @finch_str_drop(ptr %a255) - call void @finch.drop.S_gen_StructDef(ptr %a251) - br label %endif2808 -endif2808: - br label %endif2798 -endif2798: - %t313 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t313, { ptr, i64, i64 } { ptr @.str.1694, i64 8, i64 0 }) - %t314 = load ptr, ptr %a1 - %t315 = load %S.gen.Saved, ptr %a32 - %t316 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1695, i64 21, i64 0 }, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.1696, i64 8, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - call void @finch.gen.endHelper(ptr %t314, %S.gen.Saved %t315, { ptr, i64, i64 } %t325) - store { ptr, i64, i64 } %t325, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t327 -} - -define internal void @finch.gen.hold(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.ast.Type, align 16 - %a33 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2839 -logic.from2839: - br i1 %t4, label %logic.rhs2840, label %logic.end2841 -logic.rhs2840: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2842 -logic.rend2842: - br label %logic.end2841 -logic.end2841: - %t9 = phi i1 [ false, %logic.from2839 ], [ %t8, %logic.rend2842 ] - br label %logic.from2843 -logic.from2843: - br i1 %t9, label %logic.rhs2844, label %logic.end2845 -logic.rhs2844: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2846 -logic.rend2846: - br label %logic.end2845 -logic.end2845: - %t14 = phi i1 [ false, %logic.from2843 ], [ %t13, %logic.rend2846 ] - br label %logic.from2847 -logic.from2847: - br i1 %t14, label %logic.rhs2848, label %logic.end2849 -logic.rhs2848: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2850 -logic.rend2850: - br label %logic.end2849 -logic.end2849: - %t19 = phi i1 [ false, %logic.from2847 ], [ %t18, %logic.rend2850 ] - br i1 %t19, label %then2851, label %endif2853 -then2851: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2854, label %ok2855 -panic2854: - call void @finch_panic(ptr @.str.1697, i64 982, ptr @.str.1698) - unreachable -ok2855: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 11 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_copy(ptr %a27, ptr %a26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %t29 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t28, 0 - %t30 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t31 = load %S.ast.Type, ptr %t30 - store %S.ast.Type %t31, ptr %a32 - call void @finch.copy.S_ast_Type(ptr %a33, ptr %a32) - %t34 = load %S.ast.Type, ptr %a33 - %t35 = insertvalue %S.gen.Pending %t29, %S.ast.Type %t34, 1 - %t36 = insertvalue %S.gen.Pending %t35, i1 false, 2 - %t37 = load i64, ptr %t23 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t38, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %t22 - %t40 = getelementptr inbounds %S.gen.Pending, ptr %t39, i64 %t37 - store %S.gen.Pending %t36, ptr %t40 - store i64 %t38, ptr %t23 - br label %endif2853 -endif2853: - ret void -} - -define internal void @finch.gen.holdAddr(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2856, label %endif2858 -then2856: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic2859, label %ok2860 -panic2859: - call void @finch_panic(ptr @.str.1699, i64 988, ptr @.str.1700) - unreachable -ok2860: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 11 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 - %t11 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t11, ptr %a12 - call void @finch_str_copy(ptr %a13, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - %t15 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t14, 0 - %t16 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = insertvalue %S.gen.Pending %t15, %S.ast.Type %t19, 1 - %t21 = insertvalue %S.gen.Pending %t20, i1 true, 2 - %t22 = load i64, ptr %t10 - %t23 = add i64 %t22, 1 - call void @finch_arr_reserve(ptr %t9, i64 %t23, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t24 = load ptr, ptr %t9 - %t25 = getelementptr inbounds %S.gen.Pending, ptr %t24, i64 %t22 - store %S.gen.Pending %t21, ptr %t25 - store i64 %t23, ptr %t10 - br label %endif2858 -endif2858: - ret void -} - -define internal void @finch.copy.S_gen_Pending(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Pending, ptr %src - store %S.gen.Pending %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 1 - call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.drop.S_gen_Pending(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.dropPending(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a8 = alloca i64, align 16 - %a24 = alloca %S.gen.Pending, align 16 - %a25 = alloca %S.gen.Pending, align 16 - %a27 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2861, label %ok2862 -panic2861: - call void @finch_panic(ptr @.str.1701, i64 994, ptr @.str.1702) - unreachable -ok2862: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - store i64 %t7, ptr %a8 - br label %while.cond2863 -while.cond2863: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body2864, label %while.end2865 -while.body2864: - %t12 = load i64, ptr %a8 - %t13 = sub i64 %t12, 1 - store i64 %t13, ptr %a8 - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic2866, label %ok2867 -panic2866: - call void @finch_panic(ptr @.str.1703, i64 997, ptr @.str.1704) - unreachable -ok2867: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 11 - %t17 = load i64, ptr %a8 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range2868, label %inrange2869 -range2868: - call void @finch_panic_index(ptr @.str.1705, i64 997, i64 %t17, i64 %t19) - unreachable -inrange2869: - %t21 = extractvalue { ptr, i64, i64 } %t18, 0 - %t22 = getelementptr inbounds %S.gen.Pending, ptr %t21, i64 %t17 - %t23 = load %S.gen.Pending, ptr %t22 - store %S.gen.Pending %t23, ptr %a24 - call void @finch.copy.S_gen_Pending(ptr %a25, ptr %a24) - %t26 = load %S.gen.Pending, ptr %a25 - store %S.gen.Pending %t26, ptr %a27 - %t28 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 2 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then2870, label %else2871 -then2870: - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - %t33 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t34 = load %S.ast.Type, ptr %t33 - call void @finch.gen.dropAt(ptr %t30, { ptr, i64, i64 } %t32, %S.ast.Type %t34) - br label %endif2872 -else2871: - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - %t38 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t39 = load %S.ast.Type, ptr %t38 - call void @finch.gen.dropValue(ptr %t35, { ptr, i64, i64 } %t37, %S.ast.Type %t39) - br label %endif2872 -endif2872: - call void @finch.drop.S_gen_Pending(ptr %a27) - br label %while.cond2863 -while.end2865: - ret void -} - -define internal void @finch.gen.heldEnd(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a20 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - br label %while.cond2873 -while.cond2873: - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2876, label %ok2877 -panic2876: - call void @finch_panic(ptr @.str.1706, i64 1008, ptr @.str.1707) - unreachable -ok2877: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = load i64, ptr %a2 - %t9 = icmp sgt i64 %t7, %t8 - br i1 %t9, label %while.body2874, label %while.end2875 -while.body2874: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2878, label %ok2879 -panic2878: - call void @finch_panic(ptr @.str.1708, i64 1009, ptr @.str.1709) - unreachable -ok2879: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 11 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp eq i64 %t14, 0 - br i1 %t15, label %panic2880, label %ok2881 -panic2880: - call void @finch_panic(ptr @.str.1710, i64 1009, ptr @.str.1711) - unreachable -ok2881: - %t16 = sub i64 %t14, 1 - %t17 = load ptr, ptr %t12 - %t18 = getelementptr inbounds %S.gen.Pending, ptr %t17, i64 %t16 - %t19 = load %S.gen.Pending, ptr %t18 - store i64 %t16, ptr %t13 - store %S.gen.Pending %t19, ptr %a20 - call void @finch.drop.S_gen_Pending(ptr %a20) - br label %while.cond2873 -while.end2875: - ret void -} - -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.from2882 -logic.from2882: - br i1 %t7, label %logic.end2884, label %logic.rhs2883 -logic.rhs2883: - %t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t9 = load i1, ptr %t8 - br label %logic.rend2885 -logic.rend2885: - br label %logic.end2884 -logic.end2884: - %t10 = phi i1 [ true, %logic.from2882 ], [ %t9, %logic.rend2885 ] - br i1 %t10, label %then2886, label %endif2888 -then2886: - %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 -endif2888: - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.1712, 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 %then2889, label %endif2891 -then2889: - %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1713, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t19, ptr %a11 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - br label %endif2891 -endif2891: - %t22 = load ptr, ptr %a1 - %t23 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1714, i64 35, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a24 - %t28 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t27, ptr %a30 - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1715, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - call void @finch.gen.emit(ptr %t22, { ptr, i64, i64 } %t44) - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1716, 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.1717, i64 3, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - %t14 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t13) - store { ptr, i64, i64 } %t13, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t14, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1718, i64 12, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t22, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1719, i64 6, i64 0 }, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t17, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t31, { ptr, i64, i64 } { ptr @.str.1720, i64 0, i64 0 }) - store { ptr, i64, i64 } %t32, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1721, i64 10, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1722, i64 6, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.1723, i64 6, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t34, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a16) - ret { ptr, i64, i64 } %t62 -} - -define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) { -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 %S.ast.Type, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a153 = 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 - %a167 = 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 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then2892, label %else2893 -then2892: - %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.1726, 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 %S.ast.Type %t17, ptr %a19 - call void @finch.drop.S_ast_Type(ptr %a19) - store { ptr, i64, i64 } { ptr @.str.1725, i64 4, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1724, i64 4, i64 0 }, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2894 -else2893: - %t26 = load %S.ast.Type, ptr %a3 - %t27 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t26) - br i1 %t27, label %then2895, label %else2896 -then2895: - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a2 - %t31 = load %S.ast.Type, ptr %a3 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1729, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } { ptr @.str.1728, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - call void @finch.gen.printf(ptr %t28, { ptr, i64, i64 } { ptr @.str.1727, i64 4, i64 0 }, { ptr, i64, i64 } %t39) - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - br label %endif2897 -else2896: - %t41 = load %S.ast.Type, ptr %a3 - %t42 = call i1 @finch.gen.isFloat(%S.ast.Type %t41) - br i1 %t42, label %then2898, label %else2899 -then2898: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load { ptr, i64, i64 }, ptr %a2 - %t46 = load %S.ast.Type, ptr %a3 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1732, i64 5, i64 0 }) - %t48 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t44, { ptr, i64, i64 } %t45, %S.ast.Type %t46, %S.ast.Type %t47) - store %S.ast.Type %t47, ptr %a49 - call void @finch.drop.S_ast_Type(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.1731, i64 7, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.gen.printf(ptr %t43, { ptr, i64, i64 } { ptr @.str.1730, i64 2, i64 0 }, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %endif2900 -else2899: - %t56 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1733, i64 4, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then2901, label %else2902 -then2901: - %t61 = load ptr, ptr %a1 - %t62 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1734, i64 8, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1735, i64 7, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = load i1, ptr %a4 - br i1 %t75, label %then2904, label %else2905 -then2904: - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1737, i64 4, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.printf(ptr %t76, { ptr, i64, i64 } { ptr @.str.1736, i64 4, i64 0 }, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %endif2906 -else2905: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1739, i64 4, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.gen.printf(ptr %t83, { ptr, i64, i64 } { ptr @.str.1738, i64 2, i64 0 }, { ptr, i64, i64 } %t88) - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif2906 -endif2906: - call void @finch_str_drop(ptr %a74) - br label %endif2903 -else2902: - %t90 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1740, 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 %then2907, label %else2908 -then2907: - %t95 = load ptr, ptr %a1 - %t96 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t95, { ptr, i64, i64 } { ptr @.str.1741, i64 4, i64 0 }) - store { ptr, i64, i64 } %t96, ptr %a97 - %t98 = load ptr, ptr %a1 - %t99 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t98, { ptr, i64, i64 } { ptr @.str.1742, i64 5, i64 0 }) - store { ptr, i64, i64 } %t99, ptr %a100 - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1743, i64 10, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1744, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t111, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.1745, i64 6, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t122, ptr %a125 - store { ptr, i64, i64 } %t123, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t101, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - %t132 = load ptr, ptr %a1 - %t133 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.1747, i64 4, i64 0 }, ptr %a135 - store { ptr, i64, i64 } %t133, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a134 - call void @finch.gen.printf(ptr %t132, { ptr, i64, i64 } { ptr @.str.1746, i64 2, i64 0 }, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a131) - call void @finch_str_drop(ptr %a100) - call void @finch_str_drop(ptr %a97) - br label %endif2909 -else2908: - %t139 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1748, 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 %then2910, label %else2911 -then2910: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1749, i64 31, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.1750, i64 3, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t155, ptr %a157 - %t158 = load ptr, ptr %a1 - %t159 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1751, i64 10, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.1752, i64 7, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - store { ptr, i64, i64 } %t169, ptr %a171 - %t172 = load ptr, ptr %a1 - %t173 = load { ptr, i64, i64 }, ptr %a2 - %t174 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t172, { ptr, i64, i64 } %t173) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load i1, ptr %a4 - br i1 %t176, label %then2913, label %else2914 -then2913: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1754, i64 4, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1755, i64 6, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - call void @finch.gen.printf(ptr %t177, { ptr, i64, i64 } { ptr @.str.1753, i64 6, i64 0 }, { ptr, i64, i64 } %t193) - store { ptr, i64, i64 } %t193, ptr %a194 - call void @finch_str_drop(ptr %a194) - br label %endif2915 -else2914: - %t195 = load ptr, ptr %a1 - %t196 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1757, i64 4, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.1758, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t205, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t205, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.printf(ptr %t195, { ptr, i64, i64 } { ptr @.str.1756, i64 4, i64 0 }, { ptr, i64, i64 } %t211) - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - br label %endif2915 -endif2915: - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a171) - call void @finch_str_drop(ptr %a157) - br label %endif2912 -else2911: - %t213 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.1759, i64 3, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %then2916, label %else2917 -then2916: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1760, i64 12, i64 0 }, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1761, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t218, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t232, { ptr, i64, i64 } { ptr @.str.1762, i64 8, i64 0 }) - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t235, { ptr, i64, i64 } { ptr @.str.1763, i64 8, i64 0 }) - store { ptr, i64, i64 } %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t238, { ptr, i64, i64 } { ptr @.str.1764, i64 8, i64 0 }) - store { ptr, i64, i64 } %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load { ptr, i64, i64 }, ptr %a231 - %t243 = load { ptr, i64, i64 }, ptr %a234 - %t244 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.condBr(ptr %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t244) - %t245 = load ptr, ptr %a1 - %t246 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.label(ptr %t245, { ptr, i64, i64 } %t246) - %t247 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t247, { ptr, i64, i64 } { ptr @.str.1765, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1766, i64 0, i64 0 }) - %t248 = load ptr, ptr %a1 - %t249 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t248, { ptr, i64, i64 } %t249) - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.label(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = load ptr, ptr %a1 - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1769, i64 13, i64 0 }, ptr %a256 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t258, ptr %a260 - store { ptr, i64, i64 } { ptr @.str.1770, i64 7, i64 0 }, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - %t264 = call { ptr, i64, i64 } @finch.gen.op(ptr %t253, { ptr, i64, i64 } %t263) - store { ptr, i64, i64 } %t263, ptr %a265 - call void @finch_str_drop(ptr %a265) - store { ptr, i64, i64 } { ptr @.str.1768, i64 4, i64 0 }, ptr %a267 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - call void @finch.gen.printf(ptr %t252, { ptr, i64, i64 } { ptr @.str.1767, i64 6, i64 0 }, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load ptr, ptr %a1 - %t273 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t272, { ptr, i64, i64 } %t273) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a240) - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a231) - br label %endif2918 -else2917: - %t276 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t276, ptr %a277 - store { ptr, i64, i64 } { ptr @.str.1771, i64 4, i64 0 }, ptr %a278 - %t279 = call i32 @finch_str_eq(ptr %a277, ptr %a278) - %t280 = icmp ne i32 %t279, 0 - br i1 %t280, label %then2919, label %else2920 -then2919: - %t281 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t281, { ptr, i64, i64 } { ptr @.str.1772, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1773, i64 0, i64 0 }) - br label %endif2921 -else2920: - %t282 = load ptr, ptr %a1 - %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.1774, i64 17, i64 0 }) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a284 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } { ptr @.str.1775, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1776, i64 15, i64 0 }, { ptr, i64, i64 } %t286) - %t287 = load ptr, ptr %a1 - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - %t290 = load %S.ast.Type, ptr %a3 - %t291 = load i1, ptr %a4 - call void @finch.gen.emitFormat(ptr %t287, { ptr, i64, i64 } %t288, { ptr, i64, i64 } %t289, %S.ast.Type %t290, i1 %t291) - %t292 = load ptr, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1777, i64 31, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.1778, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - call void @finch.gen.emit(ptr %t292, { ptr, i64, i64 } %t302) - store { ptr, i64, i64 } %t302, ptr %a303 - call void @finch_str_drop(ptr %a303) - call void @finch_str_drop(ptr %a284) - br label %endif2921 -endif2921: - br label %endif2918 -endif2918: - br label %endif2912 -endif2912: - br label %endif2909 -endif2909: - br label %endif2903 -endif2903: - br label %endif2900 -endif2900: - br label %endif2897 -endif2897: - br label %endif2894 -endif2894: - call void @finch_str_drop(ptr %a10) - 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 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1779, 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.1780, i64 6, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load ptr, ptr %a1 - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t15, { ptr, i64, i64 } %t16) - store { ptr, i64, i64 } %t14, ptr %a19 - store { ptr, i64, i64 } %t17, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t14, ptr %a21 - call void @finch_str_drop(ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1781, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t30 = load i64, ptr %t29 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1782, i64 1, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - ret void -} - -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Type, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { 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 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca %S.ast.Type, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.gen.Val, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %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 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1783, i64 1, i64 0 }, ptr %a12 - %t13 = load i1, ptr %a5 - br i1 %t13, label %then2922, label %endif2924 -then2922: - %t14 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - br label %endif2924 -endif2924: - %t16 = load %S.ast.Type, ptr %a4 - %t17 = call i1 @finch.gen.isSigned(%S.ast.Type %t16) - br i1 %t17, label %then2925, label %else2926 -then2925: - %t18 = load ptr, ptr %a1 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1785, i64 29, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1786, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a3 - %t31 = load %S.ast.Type, ptr %a4 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1787, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } %t28, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t28, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1788, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - call void @finch.gen.emit(ptr %t18, { ptr, i64, i64 } %t45) - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %endif2927 -else2926: - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t47) - br i1 %t48, label %then2928, label %else2929 -then2928: - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1789, i64 30, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1790, i64 6, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a3 - %t62 = load %S.ast.Type, ptr %a4 - %t63 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1791, i64 3, i64 0 }) - %t64 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t60, { ptr, i64, i64 } %t61, %S.ast.Type %t62, %S.ast.Type %t63) - store %S.ast.Type %t63, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t59, ptr %a67 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t59, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t64, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1792, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.emit(ptr %t49, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif2930 -else2929: - %t78 = load %S.ast.Type, ptr %a4 - %t79 = call i1 @finch.gen.isFloat(%S.ast.Type %t78) - br i1 %t79, label %then2931, label %else2932 -then2931: - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1793, i64 31, i64 0 }, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1794, i64 9, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a3 - %t93 = load %S.ast.Type, ptr %a4 - %t94 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1795, i64 5, i64 0 }) - %t95 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t91, { ptr, i64, i64 } %t92, %S.ast.Type %t93, %S.ast.Type %t94) - store %S.ast.Type %t94, ptr %a96 - call void @finch.drop.S_ast_Type(ptr %a96) - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - store { ptr, i64, i64 } %t95, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1796, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.emit(ptr %t80, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2933 -else2932: - %t109 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1797, 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 %then2934, label %else2935 -then2934: - %t114 = load ptr, ptr %a1 - %t115 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1798, i64 30, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1799, i64 5, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t124, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1800, i64 6, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t135, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t135, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.1801, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - call void @finch.gen.emit(ptr %t114, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %endif2936 -else2935: - %t148 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.1802, i64 4, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br i1 %t152, label %then2937, label %else2938 -then2937: - %t153 = load ptr, ptr %a1 - %t154 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1803, i64 30, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.1804, i64 6, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1805, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1806, i64 7, i64 0 }, ptr %a172 - call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) - store { ptr, i64, i64 } %t169, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a170 - %t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t174) - store { ptr, i64, i64 } %t174, ptr %a176 - call void @finch_str_drop(ptr %a176) - store { ptr, i64, i64 } %t163, ptr %a178 - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t163, ptr %a180 - call void @finch_str_drop(ptr %a180) - store { ptr, i64, i64 } %t175, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a177 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1807, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - br label %endif2939 -else2938: - %t189 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.1808, 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 %then2940, label %else2941 -then2940: - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1809, i64 29, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1810, i64 6, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t211, ptr %a212 - call void @finch.copy.S_ast_Type(ptr %a213, ptr %a212) - %t214 = load %S.ast.Type, ptr %a213 - %t215 = insertvalue %S.gen.Val %t210, %S.ast.Type %t214, 1 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t205, %S.gen.Val %t215) - store %S.gen.Val %t215, ptr %a217 - call void @finch.drop.S_gen_Val(ptr %a217) - store { ptr, i64, i64 } %t204, ptr %a219 - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t204, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t216, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1811, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t228, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t228, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t234, ptr %a236 - store { ptr, i64, i64 } { ptr @.str.1812, i64 1, i64 0 }, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - call void @finch.gen.emit(ptr %t194, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t239, ptr %a240 - call void @finch_str_drop(ptr %a240) - br label %endif2942 -else2941: - %t241 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t241, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.1813, i64 3, i64 0 }, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from2943 -logic.from2943: - br i1 %t245, label %logic.end2945, label %logic.rhs2944 -logic.rhs2944: - %t246 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1814, i64 4, i64 0 }, ptr %a248 - %t249 = call i32 @finch_str_eq(ptr %a247, ptr %a248) - %t250 = icmp ne i32 %t249, 0 - br label %logic.rend2946 -logic.rend2946: - br label %logic.end2945 -logic.end2945: - %t251 = phi i1 [ true, %logic.from2943 ], [ %t250, %logic.rend2946 ] - br i1 %t251, label %then2947, label %else2948 -then2947: - %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1815, i64 29, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - %t257 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t257, ptr %a259 - store { ptr, i64, i64 } { ptr @.str.1816, i64 6, i64 0 }, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t257, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - %t263 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t262, ptr %a265 - store { ptr, i64, i64 } %t263, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t262, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.1817, i64 1, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.emit(ptr %t252, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif2949 -else2948: - %t275 = load ptr, ptr %a1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a4 - %t278 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.1818, i64 10, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.1819, i64 5, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t288, ptr %a291 - store { ptr, i64, i64 } %t289, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1820, i64 6, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_copy(ptr %a303, ptr %a302) - %t304 = load { ptr, i64, i64 }, ptr %a303 - %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t306 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t306, ptr %a307 - call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) - %t309 = load %S.ast.Type, ptr %a308 - %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 - %t311 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t300, %S.gen.Val %t310) - store %S.gen.Val %t310, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - store { ptr, i64, i64 } %t299, ptr %a314 - store { ptr, i64, i64 } %t311, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t299, ptr %a316 - call void @finch_str_drop(ptr %a316) - store { ptr, i64, i64 } %t311, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.1821, i64 1, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - call void @finch.gen.emit(ptr %t275, { ptr, i64, i64 } %t323) - store { ptr, i64, i64 } %t323, ptr %a324 - call void @finch_str_drop(ptr %a324) - br label %endif2949 -endif2949: - br label %endif2942 -endif2942: - br label %endif2939 -endif2939: - br label %endif2936 -endif2936: - br label %endif2933 -endif2933: - br label %endif2930 -endif2930: - br label %endif2927 -endif2927: - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a11) - 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 void @finch.drop.S_gen_EnumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - ret void -} - -define internal void @finch.copy.S_gen_SumDef(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.SumDef, ptr %src - store %S.gen.SumDef %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_int(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_int(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_S_ast_Node(ptr %t12, ptr %t13) - ret void -} - -define internal void @finch.drop.S_gen_SumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_S_ast_Node(ptr %t6) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.gen.EnumDef, align 16 - %a174 = alloca %S.gen.EnumDef, align 16 - %a176 = alloca %S.gen.EnumDef, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca i64, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca i64, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a342 = 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 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca %S.gen.SumDef, align 16 - %a538 = alloca %S.gen.SumDef, align 16 - %a540 = alloca %S.gen.SumDef, align 16 - %a556 = alloca %S.gen.StructDef, align 16 - %a557 = alloca %S.gen.StructDef, align 16 - %a559 = alloca %S.gen.StructDef, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = 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 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca i64, align 16 - %a731 = alloca i64, align 16 - %a747 = alloca i64, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca %S.gen.StructDef, align 16 - %a839 = alloca %S.gen.StructDef, align 16 - %a841 = alloca %S.gen.StructDef, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca i64, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a879 = 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 - %a884 = 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 - %a891 = 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 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a938 = 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 - %a950 = 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 - 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.1822, i64 14, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2950, label %ok2951 -panic2950: - call void @finch_panic(ptr @.str.1823, i64 1126, ptr @.str.1824) - unreachable -ok2951: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2952, label %endif2954 -then2952: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2954: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2955, label %ok2956 -panic2955: - call void @finch_panic(ptr @.str.1825, i64 1129, ptr @.str.1826) - unreachable -ok2956: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1827, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2957, label %else2958 -then2957: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2960, label %inrange2961 -range2960: - call void @finch_panic_index(ptr @.str.1828, i64 1132, i64 0, i64 %t41) - unreachable -inrange2961: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = call { ptr, i64, i64 } @finch.gen.load(ptr %t50, { ptr, i64, i64 } { ptr @.str.1829, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1830, i64 2, i64 0 }) - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load ptr, ptr %a1 - %t54 = load ptr, ptr %a1 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } { ptr @.str.1832, i64 62, i64 0 }) - %t56 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1831, i64 3, i64 0 }, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - store { ptr, i64, i64 } %t56, ptr %a58 - %t59 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t59, { ptr, i64, i64 } { ptr @.str.1833, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1834, i64 1, i64 0 }) - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a58 - %t62 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t60, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %t64 = load ptr, ptr %a1 - %t65 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t64, { ptr, i64, i64 } { ptr @.str.1835, i64 3, i64 0 }) - store { ptr, i64, i64 } %t65, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.1836, i64 4, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a63 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 3, %t72 - br i1 %t73, label %range2962, label %inrange2963 -range2962: - call void @finch_panic_index(ptr @.str.1838, i64 1139, i64 3, i64 %t72) - unreachable -inrange2963: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 3 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.1837, i64 13, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.1839, i64 3, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t85) - store { ptr, i64, i64 } %t85, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t86, ptr %a88 - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a88 - %t91 = load { ptr, i64, i64 }, ptr %a66 - %t92 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.condBr(ptr %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t95, { ptr, i64, i64 } { ptr @.str.1840, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1841, i64 2, i64 0 }) - %t96 = load ptr, ptr %a1 - %t97 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t96, { ptr, i64, i64 } %t97) - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t98, { ptr, i64, i64 } %t99) - %t100 = load ptr, ptr %a1 - %t101 = load ptr, ptr %a1 - %t102 = load %S.ast.Type, ptr %a49 - %t103 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t101, %S.ast.Type %t102) - store { ptr, i64, i64 } { ptr @.str.1842, i64 23, i64 0 }, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1843, i64 6, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t108, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a109 - %t114 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1844, i64 6, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a63 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 3, %t126 - br i1 %t127, label %range2964, label %inrange2965 -range2964: - call void @finch_panic_index(ptr @.str.1845, i64 1145, i64 3, i64 %t126) - unreachable -inrange2965: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i64 3 - %t130 = load { ptr, i64, i64 }, ptr %t129 - store { ptr, i64, i64 } %t124, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t124, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a137 - call void @finch_str_drop(ptr %a137) - store { ptr, i64, i64 } %t136, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = load %S.ast.Type, ptr %a49 - %t143 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t141, %S.ast.Type %t142) - %t144 = load { ptr, i64, i64 }, ptr %a138 - %t145 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t144) - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load %S.ast.Type, ptr %a49 - call void @finch.gen.emitFormat(ptr %t139, { ptr, i64, i64 } { ptr @.str.1846, i64 4, i64 0 }, { ptr, i64, i64 } %t145, %S.ast.Type %t147, i1 true) - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load ptr, ptr %a1 - %t150 = load { ptr, i64, i64 }, ptr %a63 - call void @finch.gen.loopEnd(ptr %t149, { ptr, i64, i64 } %t150) - %t151 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t151, { ptr, i64, i64 } { ptr @.str.1847, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1848, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a88) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_str(ptr %a63) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a52) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2959 -else2958: - %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.1849, i64 4, i64 0 }, ptr %a155 - %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) - %t157 = icmp ne i32 %t156, 0 - br i1 %t157, label %then2966, label %else2967 -then2966: - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic2969, label %ok2970 -panic2969: - call void @finch_panic(ptr @.str.1850, i64 1151, ptr @.str.1851) - unreachable -ok2970: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 21 - %t161 = load ptr, ptr %a1 - %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = call i64 @finch.gen.findEnum(ptr %t161, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t165) - %t167 = load { ptr, i64, i64 }, ptr %t160 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range2971, label %inrange2972 -range2971: - call void @finch_panic_index(ptr @.str.1852, i64 1151, i64 %t166, i64 %t168) - unreachable -inrange2972: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.EnumDef, ptr %t170, i64 %t166 - %t172 = load %S.gen.EnumDef, ptr %t171 - store %S.gen.EnumDef %t172, ptr %a173 - call void @finch.copy.S_gen_EnumDef(ptr %a174, ptr %a173) - %t175 = load %S.gen.EnumDef, ptr %a174 - store %S.gen.EnumDef %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.1853, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1854, i64 2, i64 0 }) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1855, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1856, i64 9, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } zeroinitializer, ptr %a186 - store { ptr, i64, i64 } zeroinitializer, ptr %a187 - %t188 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - store i64 0, ptr %a191 - br label %for.cond2973 -for.cond2973: - %t192 = load i64, ptr %a191 - %t193 = icmp slt i64 %t192, %t190 - br i1 %t193, label %for.body2974, label %for.end2976 -for.body2974: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a187, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t195, { ptr, i64, i64 } { ptr @.str.1857, i64 6, i64 0 }) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %a187, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %a187 - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 - store { ptr, i64, i64 } %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 3 - %t203 = load i64, ptr %a191 - %t204 = load { ptr, i64, i64 }, ptr %t202 - %t205 = extractvalue { ptr, i64, i64 } %t204, 1 - %t206 = icmp uge i64 %t203, %t205 - br i1 %t206, label %range2977, label %inrange2978 -range2977: - call void @finch_panic_index(ptr @.str.1859, i64 1159, i64 %t203, i64 %t205) - unreachable -inrange2978: - %t207 = extractvalue { ptr, i64, i64 } %t204, 0 - %t208 = getelementptr inbounds i64, ptr %t207, i64 %t203 - %t209 = load i64, ptr %t208 - call void @finch_str_from_int(ptr %a210, i64 %t209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.1858, i64 4, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.1860, i64 9, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load i64, ptr %a191 - %t223 = load { ptr, i64, i64 }, ptr %a187 - %t224 = extractvalue { ptr, i64, i64 } %t223, 1 - %t225 = icmp uge i64 %t222, %t224 - br i1 %t225, label %range2979, label %inrange2980 -range2979: - call void @finch_panic_index(ptr @.str.1861, i64 1159, i64 %t222, i64 %t224) - unreachable -inrange2980: - %t226 = extractvalue { ptr, i64, i64 } %t223, 0 - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 %t222 - %t228 = load { ptr, i64, i64 }, ptr %t227 - store { ptr, i64, i64 } %t221, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t221, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - %t234 = load i64, ptr %t201 - %t235 = add i64 %t234, 1 - call void @finch_arr_reserve(ptr %a186, i64 %t235, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t236 = load ptr, ptr %a186 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i64 %t234 - store { ptr, i64, i64 } %t233, ptr %t237 - store i64 %t235, ptr %t201 - br label %for.step2975 -for.step2975: - %t238 = load i64, ptr %a191 - %t239 = add i64 %t238, 1 - store i64 %t239, ptr %a191 - br label %for.cond2973 -for.end2976: - %t240 = load ptr, ptr %a1 - %t241 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1862, i64 11, i64 0 }, ptr %a243 - store { ptr, i64, i64 } %t241, ptr %a244 - call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a242 - store { ptr, i64, i64 } %t245, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1863, i64 9, i64 0 }, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t245, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - %t251 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t250, ptr %a253 - store { ptr, i64, i64 } %t251, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t250, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.1864, i64 3, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1865, i64 1, i64 0 }, ptr %a263 - call void @finch_str_join(ptr %a264, ptr %a186, ptr %a263) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t261, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t261, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t265, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a266 - store { ptr, i64, i64 } %t271, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.1866, i64 2, i64 0 }, ptr %a274 - call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a272 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t276) - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load ptr, ptr %a1 - %t279 = icmp eq ptr %t278, null - br i1 %t279, label %panic2981, label %ok2982 -panic2981: - call void @finch_panic(ptr @.str.1867, i64 1162, ptr @.str.1868) - unreachable -ok2982: - %t280 = getelementptr inbounds %S.gen.Gen, ptr %t278, i32 0, i32 9 - store i1 true, ptr %t280 - %t281 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i32 0, i32 1 - %t283 = load i64, ptr %t282 - store i64 0, ptr %a284 - br label %for.cond2983 -for.cond2983: - %t285 = load i64, ptr %a284 - %t286 = icmp slt i64 %t285, %t283 - br i1 %t286, label %for.body2984, label %for.end2986 -for.body2984: - %t287 = load ptr, ptr %a1 - %t288 = load i64, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a187 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range2987, label %inrange2988 -range2987: - call void @finch_panic_index(ptr @.str.1869, i64 1164, i64 %t288, i64 %t290) - unreachable -inrange2988: - %t292 = extractvalue { ptr, i64, i64 } %t289, 0 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %t292, i64 %t288 - %t294 = load { ptr, i64, i64 }, ptr %t293 - call void @finch.gen.label(ptr %t287, { ptr, i64, i64 } %t294) - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t297 = load i64, ptr %a284 - %t298 = load { ptr, i64, i64 }, ptr %t296 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range2989, label %inrange2990 -range2989: - call void @finch_panic_index(ptr @.str.1871, i64 1165, i64 %t297, i64 %t299) - unreachable -inrange2990: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t297 - %t303 = load { ptr, i64, i64 }, ptr %t302 - call void @finch.gen.bufText(ptr %t295, { ptr, i64, i64 } { ptr @.str.1870, i64 4, i64 0 }, { ptr, i64, i64 } %t303) - %t304 = load ptr, ptr %a1 - %t305 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t304, { ptr, i64, i64 } %t305) - br label %for.step2985 -for.step2985: - %t306 = load i64, ptr %a284 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a284 - br label %for.cond2983 -for.end2986: - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) - %t310 = load ptr, ptr %a1 - %t311 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1873, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - call void @finch.gen.bufText(ptr %t310, { ptr, i64, i64 } { ptr @.str.1872, i64 4, i64 0 }, { ptr, i64, i64 } %t316) - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1875, i64 9, i64 0 }, ptr %a322 - store { ptr, i64, i64 } %t320, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a321 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.1876, i64 7, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = call { ptr, i64, i64 } @finch.gen.op(ptr %t319, { ptr, i64, i64 } %t329) - store { ptr, i64, i64 } %t329, ptr %a331 - call void @finch_str_drop(ptr %a331) - store { ptr, i64, i64 } { ptr @.str.1874, i64 39, i64 0 }, ptr %a333 - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t330, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.1877, i64 1, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - call void @finch.gen.emit(ptr %t318, { ptr, i64, i64 } %t341) - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t343, { ptr, i64, i64 } { ptr @.str.1878, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1879, i64 1, i64 0 }) - %t344 = load ptr, ptr %a1 - %t345 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t344, { ptr, i64, i64 } %t345) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t346, { ptr, i64, i64 } %t347) - call void @finch.drop.arr_str(ptr %a187) - call void @finch.drop.arr_str(ptr %a186) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.S_gen_EnumDef(ptr %a176) - br label %endif2968 -else2967: - %t348 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t349 = load { ptr, i64, i64 }, ptr %t348 - store { ptr, i64, i64 } %t349, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.1880, i64 3, i64 0 }, ptr %a351 - %t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351) - %t353 = icmp ne i32 %t352, 0 - br i1 %t353, label %then2991, label %else2992 -then2991: - %t354 = load ptr, ptr %a1 - %t355 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t354, { ptr, i64, i64 } { ptr @.str.1881, i64 2, i64 0 }) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t357, { ptr, i64, i64 } { ptr @.str.1882, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1883, i64 4, i64 0 }, { ptr, i64, i64 } %t358) - %t359 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t359, { ptr, i64, i64 } { ptr @.str.1884, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1885, i64 1, i64 0 }) - %t360 = load ptr, ptr %a1 - %t361 = load ptr, ptr %a1 - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Type, ptr %a2 - %t364 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t362, %S.ast.Type %t363) - store { ptr, i64, i64 } { ptr @.str.1887, i64 23, i64 0 }, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1888, i64 22, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t361, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = call { ptr, i64, i64 } @finch.gen.load(ptr %t360, { ptr, i64, i64 } { ptr @.str.1886, i64 3, i64 0 }, { ptr, i64, i64 } %t375) - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_drop(ptr %a378) - store { ptr, i64, i64 } %t377, ptr %a379 - %t380 = load ptr, ptr %a1 - %t381 = load { ptr, i64, i64 }, ptr %a379 - %t382 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t380, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t382, ptr %a383 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Type, ptr %a2 - %t386 = load { ptr, i64, i64 }, ptr %a383 - %t387 = extractvalue { ptr, i64, i64 } %t386, 1 - %t388 = icmp uge i64 3, %t387 - br i1 %t388, label %range2994, label %inrange2995 -range2994: - call void @finch_panic_index(ptr @.str.1890, i64 1181, i64 3, i64 %t387) - unreachable -inrange2995: - %t389 = extractvalue { ptr, i64, i64 } %t386, 0 - %t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i64 3 - %t391 = load { ptr, i64, i64 }, ptr %t390 - %t392 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t384, { ptr, i64, i64 } { ptr @.str.1889, i64 2, i64 0 }, %S.ast.Type %t385, { ptr, i64, i64 } %t391) - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t394, { ptr, i64, i64 } { ptr @.str.1891, i64 10, i64 0 }) - store { ptr, i64, i64 } %t395, ptr %a396 - %t397 = load ptr, ptr %a1 - %t398 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t397, { ptr, i64, i64 } { ptr @.str.1892, i64 10, i64 0 }) - store { ptr, i64, i64 } %t398, ptr %a399 - %t400 = load ptr, ptr %a1 - %t401 = load ptr, ptr %a1 - %t402 = load ptr, ptr %a1 - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a393 - %t405 = load %S.ast.Type, ptr %a2 - %t406 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t403, { ptr, i64, i64 } %t404, %S.ast.Type %t405, i64 0) - %t407 = call { ptr, i64, i64 } @finch.gen.load(ptr %t402, { ptr, i64, i64 } { ptr @.str.1894, i64 3, i64 0 }, { ptr, i64, i64 } %t406) - store { ptr, i64, i64 } %t406, ptr %a408 - call void @finch_str_drop(ptr %a408) - store { ptr, i64, i64 } { ptr @.str.1893, i64 12, i64 0 }, ptr %a410 - store { ptr, i64, i64 } %t407, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t407, ptr %a412 - call void @finch_str_drop(ptr %a412) - %t413 = load { ptr, i64, i64 }, ptr %a409 - store { ptr, i64, i64 } %t413, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.1895, i64 3, i64 0 }, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - store { ptr, i64, i64 } %t413, ptr %a417 - call void @finch_str_drop(ptr %a417) - %t418 = load { ptr, i64, i64 }, ptr %a414 - %t419 = call { ptr, i64, i64 } @finch.gen.op(ptr %t401, { ptr, i64, i64 } %t418) - store { ptr, i64, i64 } %t418, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a396 - %t422 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.condBr(ptr %t400, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t421, { ptr, i64, i64 } %t422) - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a396 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t426, { ptr, i64, i64 } { ptr @.str.1896, i64 3, i64 0 }) - store { ptr, i64, i64 } %t427, ptr %a428 - %t429 = load ptr, ptr %a1 - %t430 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t429, { ptr, i64, i64 } { ptr @.str.1897, i64 4, i64 0 }) - store { ptr, i64, i64 } %t430, ptr %a431 - %t432 = load ptr, ptr %a1 - %t433 = load ptr, ptr %a1 - %t434 = load { ptr, i64, i64 }, ptr %a356 - %t435 = call { ptr, i64, i64 } @finch.gen.load(ptr %t433, { ptr, i64, i64 } { ptr @.str.1898, i64 2, i64 0 }, { ptr, i64, i64 } %t434) - %t436 = load { ptr, i64, i64 }, ptr %a431 - %t437 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.condBr(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t436, { ptr, i64, i64 } %t437) - store { ptr, i64, i64 } %t435, ptr %a438 - call void @finch_str_drop(ptr %a438) - %t439 = load ptr, ptr %a1 - %t440 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.label(ptr %t439, { ptr, i64, i64 } %t440) - %t441 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t441, { ptr, i64, i64 } { ptr @.str.1899, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1900, i64 2, i64 0 }) - %t442 = load ptr, ptr %a1 - %t443 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.br(ptr %t442, { ptr, i64, i64 } %t443) - %t444 = load ptr, ptr %a1 - %t445 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.label(ptr %t444, { ptr, i64, i64 } %t445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t446, { ptr, i64, i64 } { ptr @.str.1901, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1902, i64 5, i64 0 }, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load ptr, ptr %a1 - %t450 = load ptr, ptr %a1 - %t451 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = extractvalue { ptr, i64, i64 } %t452, 1 - %t454 = icmp uge i64 0, %t453 - br i1 %t454, label %range2996, label %inrange2997 -range2996: - call void @finch_panic_index(ptr @.str.1904, i64 1194, i64 0, i64 %t453) - unreachable -inrange2997: - %t455 = extractvalue { ptr, i64, i64 } %t452, 0 - %t456 = getelementptr inbounds %S.ast.Type, ptr %t455, i64 0 - %t457 = load %S.ast.Type, ptr %t456 - %t458 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t450, %S.ast.Type %t457) - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a393 - %t461 = load %S.ast.Type, ptr %a2 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 1) - %t463 = call { ptr, i64, i64 } @finch.gen.load(ptr %t449, { ptr, i64, i64 } %t458, { ptr, i64, i64 } %t462) - store { ptr, i64, i64 } %t458, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t467 = load { ptr, i64, i64 }, ptr %t466 - %t468 = extractvalue { ptr, i64, i64 } %t467, 1 - %t469 = icmp uge i64 0, %t468 - br i1 %t469, label %range2998, label %inrange2999 -range2998: - call void @finch_panic_index(ptr @.str.1905, i64 1194, i64 0, i64 %t468) - unreachable -inrange2999: - %t470 = extractvalue { ptr, i64, i64 } %t467, 0 - %t471 = getelementptr inbounds %S.ast.Type, ptr %t470, i64 0 - %t472 = load %S.ast.Type, ptr %t471 - call void @finch.gen.emitFormat(ptr %t448, { ptr, i64, i64 } { ptr @.str.1903, i64 4, i64 0 }, { ptr, i64, i64 } %t463, %S.ast.Type %t472, i1 true) - store { ptr, i64, i64 } %t463, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t474, { ptr, i64, i64 } { ptr @.str.1906, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1907, i64 2, i64 0 }) - %t475 = load ptr, ptr %a1 - %t476 = load ptr, ptr %a1 - %t477 = load ptr, ptr %a1 - %t478 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t479 = load { ptr, i64, i64 }, ptr %t478 - %t480 = extractvalue { ptr, i64, i64 } %t479, 1 - %t481 = icmp uge i64 1, %t480 - br i1 %t481, label %range3000, label %inrange3001 -range3000: - call void @finch_panic_index(ptr @.str.1909, i64 1196, i64 1, i64 %t480) - unreachable -inrange3001: - %t482 = extractvalue { ptr, i64, i64 } %t479, 0 - %t483 = getelementptr inbounds %S.ast.Type, ptr %t482, i64 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t477, %S.ast.Type %t484) - %t486 = load ptr, ptr %a1 - %t487 = load { ptr, i64, i64 }, ptr %a393 - %t488 = load %S.ast.Type, ptr %a2 - %t489 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t486, { ptr, i64, i64 } %t487, %S.ast.Type %t488, i64 2) - %t490 = call { ptr, i64, i64 } @finch.gen.load(ptr %t476, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t489) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t494 = load { ptr, i64, i64 }, ptr %t493 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 1, %t495 - br i1 %t496, label %range3002, label %inrange3003 -range3002: - call void @finch_panic_index(ptr @.str.1910, i64 1196, i64 1, i64 %t495) - unreachable -inrange3003: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds %S.ast.Type, ptr %t497, i64 1 - %t499 = load %S.ast.Type, ptr %t498 - call void @finch.gen.emitFormat(ptr %t475, { ptr, i64, i64 } { ptr @.str.1908, i64 4, i64 0 }, { ptr, i64, i64 } %t490, %S.ast.Type %t499, i1 true) - store { ptr, i64, i64 } %t490, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load ptr, ptr %a1 - %t502 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.br(ptr %t501, { ptr, i64, i64 } %t502) - %t503 = load ptr, ptr %a1 - %t504 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.label(ptr %t503, { ptr, i64, i64 } %t504) - %t505 = load ptr, ptr %a1 - %t506 = load { ptr, i64, i64 }, ptr %a383 - call void @finch.gen.loopEnd(ptr %t505, { ptr, i64, i64 } %t506) - %t507 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t507, { ptr, i64, i64 } { ptr @.str.1911, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1912, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a431) - call void @finch_str_drop(ptr %a428) - call void @finch_str_drop(ptr %a399) - call void @finch_str_drop(ptr %a396) - call void @finch_str_drop(ptr %a393) - call void @finch.drop.arr_str(ptr %a383) - call void @finch_str_drop(ptr %a379) - call void @finch_str_drop(ptr %a356) - br label %endif2993 -else2992: - %t508 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t509 = load { ptr, i64, i64 }, ptr %t508 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.1913, i64 6, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.from3004 -logic.from3004: - br i1 %t513, label %logic.rhs3005, label %logic.end3006 -logic.rhs3005: - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t516 = load { ptr, i64, i64 }, ptr %t515 - %t517 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t518 = load { ptr, i64, i64 }, ptr %t517 - %t519 = call i64 @finch.gen.findSum(ptr %t514, { ptr, i64, i64 } %t516, { ptr, i64, i64 } %t518) - %t520 = icmp sge i64 %t519, 0 - br label %logic.rend3007 -logic.rend3007: - br label %logic.end3006 -logic.end3006: - %t521 = phi i1 [ false, %logic.from3004 ], [ %t520, %logic.rend3007 ] - br i1 %t521, label %then3008, label %else3009 -then3008: - %t522 = load ptr, ptr %a1 - %t523 = icmp eq ptr %t522, null - br i1 %t523, label %panic3011, label %ok3012 -panic3011: - call void @finch_panic(ptr @.str.1914, i64 1203, ptr @.str.1915) - unreachable -ok3012: - %t524 = getelementptr inbounds %S.gen.Gen, ptr %t522, i32 0, i32 22 - %t525 = load ptr, ptr %a1 - %t526 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t527 = load { ptr, i64, i64 }, ptr %t526 - %t528 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = call i64 @finch.gen.findSum(ptr %t525, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t529) - %t531 = load { ptr, i64, i64 }, ptr %t524 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range3013, label %inrange3014 -range3013: - call void @finch_panic_index(ptr @.str.1916, i64 1203, i64 %t530, i64 %t532) - unreachable -inrange3014: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.gen.SumDef, ptr %t534, i64 %t530 - %t536 = load %S.gen.SumDef, ptr %t535 - store %S.gen.SumDef %t536, ptr %a537 - call void @finch.copy.S_gen_SumDef(ptr %a538, ptr %a537) - %t539 = load %S.gen.SumDef, ptr %a538 - store %S.gen.SumDef %t539, ptr %a540 - %t541 = load ptr, ptr %a1 - %t542 = icmp eq ptr %t541, null - br i1 %t542, label %panic3015, label %ok3016 -panic3015: - call void @finch_panic(ptr @.str.1917, i64 1204, ptr @.str.1918) - unreachable -ok3016: - %t543 = getelementptr inbounds %S.gen.Gen, ptr %t541, i32 0, i32 16 - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t546 = load { ptr, i64, i64 }, ptr %t545 - %t547 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t548 = load { ptr, i64, i64 }, ptr %t547 - %t549 = call i64 @finch.gen.findStruct(ptr %t544, { ptr, i64, i64 } %t546, { ptr, i64, i64 } %t548) - %t550 = load { ptr, i64, i64 }, ptr %t543 - %t551 = extractvalue { ptr, i64, i64 } %t550, 1 - %t552 = icmp uge i64 %t549, %t551 - br i1 %t552, label %range3017, label %inrange3018 -range3017: - call void @finch_panic_index(ptr @.str.1919, i64 1204, i64 %t549, i64 %t551) - unreachable -inrange3018: - %t553 = extractvalue { ptr, i64, i64 } %t550, 0 - %t554 = getelementptr inbounds %S.gen.StructDef, ptr %t553, i64 %t549 - %t555 = load %S.gen.StructDef, ptr %t554 - store %S.gen.StructDef %t555, ptr %a556 - call void @finch.copy.S_gen_StructDef(ptr %a557, ptr %a556) - %t558 = load %S.gen.StructDef, ptr %a557 - store %S.gen.StructDef %t558, ptr %a559 - %t560 = load ptr, ptr %a1 - %t561 = load %S.ast.Type, ptr %a2 - %t562 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t560, %S.ast.Type %t561) - store { ptr, i64, i64 } %t562, ptr %a563 - %t564 = load ptr, ptr %a1 - %t565 = load ptr, ptr %a1 - %t566 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1921, i64 23, 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.1922, i64 21, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t577 = load { ptr, i64, i64 }, ptr %t576 - %t578 = extractvalue { ptr, i64, i64 } %t577, 1 - %t579 = icmp uge i64 0, %t578 - br i1 %t579, label %range3019, label %inrange3020 -range3019: - call void @finch_panic_index(ptr @.str.1923, i64 1206, i64 0, i64 %t578) - unreachable -inrange3020: - %t580 = extractvalue { ptr, i64, i64 } %t577, 0 - %t581 = getelementptr inbounds i64, ptr %t580, i64 0 - %t582 = load i64, ptr %t581 - call void @finch_str_from_int(ptr %a583, i64 %t582) - %t584 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t575, ptr %a586 - store { ptr, i64, i64 } %t584, ptr %a587 - call void @finch_str_concat(ptr %a585, ptr %a586, ptr %a587) - store { ptr, i64, i64 } %t575, ptr %a588 - call void @finch_str_drop(ptr %a588) - store { ptr, i64, i64 } %t584, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a585 - %t591 = call { ptr, i64, i64 } @finch.gen.op(ptr %t565, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = call { ptr, i64, i64 } @finch.gen.load(ptr %t564, { ptr, i64, i64 } { ptr @.str.1920, i64 3, i64 0 }, { ptr, i64, i64 } %t591) - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_drop(ptr %a594) - store { ptr, i64, i64 } %t593, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t596, { ptr, i64, i64 } { ptr @.str.1924, i64 9, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t599, { ptr, i64, i64 } { ptr @.str.1925, i64 8, i64 0 }) - store { ptr, i64, i64 } %t600, ptr %a601 - store { ptr, i64, i64 } zeroinitializer, ptr %a602 - store { ptr, i64, i64 } zeroinitializer, ptr %a603 - %t604 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i32 0, i32 1 - %t606 = load i64, ptr %t605 - store i64 0, ptr %a607 - br label %for.cond3021 -for.cond3021: - %t608 = load i64, ptr %a607 - %t609 = icmp slt i64 %t608, %t606 - br i1 %t609, label %for.body3022, label %for.end3024 -for.body3022: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a603, i32 0, i32 1 - %t611 = load ptr, ptr %a1 - %t612 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t611, { ptr, i64, i64 } { ptr @.str.1926, i64 5, i64 0 }) - %t613 = load i64, ptr %t610 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a603, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a603 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t610 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - %t618 = load i64, ptr %a607 - call void @finch_str_from_int(ptr %a619, i64 %t618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.1927, i64 4, i64 0 }, ptr %a622 - store { ptr, i64, i64 } %t620, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - store { ptr, i64, i64 } %t625, ptr %a627 - store { ptr, i64, i64 } { ptr @.str.1928, i64 9, i64 0 }, ptr %a628 - call void @finch_str_concat(ptr %a626, ptr %a627, ptr %a628) - store { ptr, i64, i64 } %t625, ptr %a629 - call void @finch_str_drop(ptr %a629) - %t630 = load { ptr, i64, i64 }, ptr %a626 - %t631 = load i64, ptr %a607 - %t632 = load { ptr, i64, i64 }, ptr %a603 - %t633 = extractvalue { ptr, i64, i64 } %t632, 1 - %t634 = icmp uge i64 %t631, %t633 - br i1 %t634, label %range3025, label %inrange3026 -range3025: - call void @finch_panic_index(ptr @.str.1929, i64 1213, i64 %t631, i64 %t633) - unreachable -inrange3026: - %t635 = extractvalue { ptr, i64, i64 } %t632, 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t631 - %t637 = load { ptr, i64, i64 }, ptr %t636 - store { ptr, i64, i64 } %t630, ptr %a639 - store { ptr, i64, i64 } %t637, ptr %a640 - call void @finch_str_concat(ptr %a638, ptr %a639, ptr %a640) - store { ptr, i64, i64 } %t630, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = load { ptr, i64, i64 }, ptr %a638 - %t643 = load i64, ptr %t617 - %t644 = add i64 %t643, 1 - call void @finch_arr_reserve(ptr %a602, i64 %t644, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t645 = load ptr, ptr %a602 - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t645, i64 %t643 - store { ptr, i64, i64 } %t642, ptr %t646 - store i64 %t644, ptr %t617 - br label %for.step3023 -for.step3023: - %t647 = load i64, ptr %a607 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a607 - br label %for.cond3021 -for.end3024: - %t649 = load ptr, ptr %a1 - %t650 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.1930, i64 11, i64 0 }, 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.1931, i64 9, i64 0 }, ptr %a657 - call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) - store { ptr, i64, i64 } %t654, ptr %a658 - call void @finch_str_drop(ptr %a658) - %t659 = load { ptr, i64, i64 }, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %a598 - store { ptr, i64, i64 } %t659, ptr %a662 - store { ptr, i64, i64 } %t660, ptr %a663 - call void @finch_str_concat(ptr %a661, ptr %a662, ptr %a663) - store { ptr, i64, i64 } %t659, ptr %a664 - call void @finch_str_drop(ptr %a664) - %t665 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t665, ptr %a667 - store { ptr, i64, i64 } { ptr @.str.1932, i64 3, i64 0 }, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t665, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - %t671 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1933, i64 1, i64 0 }, ptr %a672 - call void @finch_str_join(ptr %a673, ptr %a602, ptr %a672) - %t674 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t670, ptr %a676 - store { ptr, i64, i64 } %t674, ptr %a677 - call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677) - store { ptr, i64, i64 } %t670, ptr %a678 - call void @finch_str_drop(ptr %a678) - store { ptr, i64, i64 } %t674, ptr %a679 - call void @finch_str_drop(ptr %a679) - %t680 = load { ptr, i64, i64 }, ptr %a675 - store { ptr, i64, i64 } %t680, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.1934, i64 2, i64 0 }, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - store { ptr, i64, i64 } %t680, ptr %a684 - call void @finch_str_drop(ptr %a684) - %t685 = load { ptr, i64, i64 }, ptr %a681 - call void @finch.gen.emit(ptr %t649, { ptr, i64, i64 } %t685) - store { ptr, i64, i64 } %t685, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load ptr, ptr %a1 - %t688 = icmp eq ptr %t687, null - br i1 %t688, label %panic3027, label %ok3028 -panic3027: - call void @finch_panic(ptr @.str.1935, i64 1216, ptr @.str.1936) - unreachable -ok3028: - %t689 = getelementptr inbounds %S.gen.Gen, ptr %t687, i32 0, i32 9 - store i1 true, ptr %t689 - %t690 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %t690, i32 0, i32 1 - %t692 = load i64, ptr %t691 - store i64 0, ptr %a693 - br label %for.cond3029 -for.cond3029: - %t694 = load i64, ptr %a693 - %t695 = icmp slt i64 %t694, %t692 - br i1 %t695, label %for.body3030, label %for.end3032 -for.body3030: - %t696 = load ptr, ptr %a1 - %t697 = load i64, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a603 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range3033, label %inrange3034 -range3033: - call void @finch_panic_index(ptr @.str.1937, i64 1218, i64 %t697, i64 %t699) - unreachable -inrange3034: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds { ptr, i64, i64 }, ptr %t701, i64 %t697 - %t703 = load { ptr, i64, i64 }, ptr %t702 - call void @finch.gen.label(ptr %t696, { ptr, i64, i64 } %t703) - %t704 = load ptr, ptr %a1 - %t705 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t706 = load i64, ptr %a693 - %t707 = load { ptr, i64, i64 }, ptr %t705 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 %t706, %t708 - br i1 %t709, label %range3035, label %inrange3036 -range3035: - call void @finch_panic_index(ptr @.str.1939, i64 1219, i64 %t706, i64 %t708) - unreachable -inrange3036: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i64 %t706 - %t712 = load { ptr, i64, i64 }, ptr %t711 - call void @finch.gen.bufText(ptr %t704, { ptr, i64, i64 } { ptr @.str.1938, i64 4, i64 0 }, { ptr, i64, i64 } %t712) - %t713 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t714 = load i64, ptr %a693 - %t715 = load { ptr, i64, i64 }, ptr %t713 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 %t714, %t716 - br i1 %t717, label %range3037, label %inrange3038 -range3037: - call void @finch_panic_index(ptr @.str.1940, i64 1220, i64 %t714, i64 %t716) - unreachable -inrange3038: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds i64, ptr %t718, i64 %t714 - %t720 = load i64, ptr %t719 - %t721 = icmp sgt i64 %t720, 0 - br i1 %t721, label %then3039, label %endif3041 -then3039: - %t722 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t722, { ptr, i64, i64 } { ptr @.str.1941, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1942, i64 1, i64 0 }) - %t723 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t724 = load i64, ptr %a693 - %t725 = load { ptr, i64, i64 }, ptr %t723 - %t726 = extractvalue { ptr, i64, i64 } %t725, 1 - %t727 = icmp uge i64 %t724, %t726 - br i1 %t727, label %range3042, label %inrange3043 -range3042: - call void @finch_panic_index(ptr @.str.1943, i64 1222, i64 %t724, i64 %t726) - unreachable -inrange3043: - %t728 = extractvalue { ptr, i64, i64 } %t725, 0 - %t729 = getelementptr inbounds i64, ptr %t728, i64 %t724 - %t730 = load i64, ptr %t729 - store i64 0, ptr %a731 - br label %for.cond3044 -for.cond3044: - %t732 = load i64, ptr %a731 - %t733 = icmp slt i64 %t732, %t730 - br i1 %t733, label %for.body3045, label %for.end3047 -for.body3045: - %t734 = load i64, ptr %a731 - %t735 = icmp sgt i64 %t734, 0 - br i1 %t735, label %then3048, label %endif3050 -then3048: - %t736 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t736, { ptr, i64, i64 } { ptr @.str.1944, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1945, i64 2, i64 0 }) - br label %endif3050 -endif3050: - %t737 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 4 - %t738 = load i64, ptr %a693 - %t739 = load { ptr, i64, i64 }, ptr %t737 - %t740 = extractvalue { ptr, i64, i64 } %t739, 1 - %t741 = icmp uge i64 %t738, %t740 - br i1 %t741, label %range3051, label %inrange3052 -range3051: - call void @finch_panic_index(ptr @.str.1946, i64 1226, i64 %t738, i64 %t740) - unreachable -inrange3052: - %t742 = extractvalue { ptr, i64, i64 } %t739, 0 - %t743 = getelementptr inbounds i64, ptr %t742, i64 %t738 - %t744 = load i64, ptr %t743 - %t745 = load i64, ptr %a731 - %t746 = add i64 %t744, %t745 - store i64 %t746, ptr %a747 - %t748 = load ptr, ptr %a1 - %t749 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1947, i64 23, i64 0 }, 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.1948, i64 21, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - %t759 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t760 = load i64, ptr %a747 - %t761 = load { ptr, i64, i64 }, ptr %t759 - %t762 = extractvalue { ptr, i64, i64 } %t761, 1 - %t763 = icmp uge i64 %t760, %t762 - br i1 %t763, label %range3053, label %inrange3054 -range3053: - call void @finch_panic_index(ptr @.str.1949, i64 1227, i64 %t760, i64 %t762) - unreachable -inrange3054: - %t764 = extractvalue { ptr, i64, i64 } %t761, 0 - %t765 = getelementptr inbounds i64, ptr %t764, i64 %t760 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t758, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t758, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - %t775 = call { ptr, i64, i64 } @finch.gen.op(ptr %t748, { ptr, i64, i64 } %t774) - store { ptr, i64, i64 } %t774, ptr %a776 - call void @finch_str_drop(ptr %a776) - store { ptr, i64, i64 } %t775, ptr %a777 - %t778 = load ptr, ptr %a1 - %t779 = load ptr, ptr %a1 - %t780 = load ptr, ptr %a1 - %t781 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t782 = load i64, ptr %a747 - %t783 = load { ptr, i64, i64 }, ptr %t781 - %t784 = extractvalue { ptr, i64, i64 } %t783, 1 - %t785 = icmp uge i64 %t782, %t784 - br i1 %t785, label %range3055, label %inrange3056 -range3055: - call void @finch_panic_index(ptr @.str.1951, i64 1228, i64 %t782, i64 %t784) - unreachable -inrange3056: - %t786 = extractvalue { ptr, i64, i64 } %t783, 0 - %t787 = getelementptr inbounds %S.ast.Type, ptr %t786, i64 %t782 - %t788 = load %S.ast.Type, ptr %t787 - %t789 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t780, %S.ast.Type %t788) - %t790 = load { ptr, i64, i64 }, ptr %a777 - %t791 = call { ptr, i64, i64 } @finch.gen.load(ptr %t779, { ptr, i64, i64 } %t789, { ptr, i64, i64 } %t790) - store { ptr, i64, i64 } %t789, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t794 = load i64, ptr %a747 - %t795 = load { ptr, i64, i64 }, ptr %t793 - %t796 = extractvalue { ptr, i64, i64 } %t795, 1 - %t797 = icmp uge i64 %t794, %t796 - br i1 %t797, label %range3057, label %inrange3058 -range3057: - call void @finch_panic_index(ptr @.str.1952, i64 1228, i64 %t794, i64 %t796) - unreachable -inrange3058: - %t798 = extractvalue { ptr, i64, i64 } %t795, 0 - %t799 = getelementptr inbounds %S.ast.Type, ptr %t798, i64 %t794 - %t800 = load %S.ast.Type, ptr %t799 - call void @finch.gen.emitFormat(ptr %t778, { ptr, i64, i64 } { ptr @.str.1950, i64 4, i64 0 }, { ptr, i64, i64 } %t791, %S.ast.Type %t800, i1 true) - store { ptr, i64, i64 } %t791, ptr %a801 - call void @finch_str_drop(ptr %a801) - call void @finch_str_drop(ptr %a777) - br label %for.step3046 -for.step3046: - %t802 = load i64, ptr %a731 - %t803 = add i64 %t802, 1 - store i64 %t803, ptr %a731 - br label %for.cond3044 -for.end3047: - %t804 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t804, { ptr, i64, i64 } { ptr @.str.1953, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1954, i64 1, i64 0 }) - br label %endif3041 -endif3041: - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t805, { ptr, i64, i64 } %t806) - br label %for.step3031 -for.step3031: - %t807 = load i64, ptr %a693 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a693 - br label %for.cond3029 -for.end3032: - %t809 = load ptr, ptr %a1 - %t810 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.label(ptr %t809, { ptr, i64, i64 } %t810) - %t811 = load ptr, ptr %a1 - %t812 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 1 - %t813 = load { ptr, i64, i64 }, ptr %t812 - store { ptr, i64, i64 } %t813, ptr %a815 - store { ptr, i64, i64 } { ptr @.str.1956, i64 3, i64 0 }, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - call void @finch.gen.bufText(ptr %t811, { ptr, i64, i64 } { ptr @.str.1955, i64 4, i64 0 }, { ptr, i64, i64 } %t817) - store { ptr, i64, i64 } %t817, ptr %a818 - call void @finch_str_drop(ptr %a818) - %t819 = load ptr, ptr %a1 - %t820 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t819, { ptr, i64, i64 } %t820) - %t821 = load ptr, ptr %a1 - %t822 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.label(ptr %t821, { ptr, i64, i64 } %t822) - call void @finch.drop.arr_str(ptr %a603) - call void @finch.drop.arr_str(ptr %a602) - call void @finch_str_drop(ptr %a601) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a563) - call void @finch.drop.S_gen_StructDef(ptr %a559) - call void @finch.drop.S_gen_SumDef(ptr %a540) - br label %endif3010 -else3009: - %t823 = load ptr, ptr %a1 - %t824 = icmp eq ptr %t823, null - br i1 %t824, label %panic3059, label %ok3060 -panic3059: - call void @finch_panic(ptr @.str.1957, i64 1239, ptr @.str.1958) - unreachable -ok3060: - %t825 = getelementptr inbounds %S.gen.Gen, ptr %t823, i32 0, i32 16 - %t826 = load ptr, ptr %a1 - %t827 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t828 = load { ptr, i64, i64 }, ptr %t827 - %t829 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t830 = load { ptr, i64, i64 }, ptr %t829 - %t831 = call i64 @finch.gen.findStruct(ptr %t826, { ptr, i64, i64 } %t828, { ptr, i64, i64 } %t830) - %t832 = load { ptr, i64, i64 }, ptr %t825 - %t833 = extractvalue { ptr, i64, i64 } %t832, 1 - %t834 = icmp uge i64 %t831, %t833 - br i1 %t834, label %range3061, label %inrange3062 -range3061: - call void @finch_panic_index(ptr @.str.1959, i64 1239, i64 %t831, i64 %t833) - unreachable -inrange3062: - %t835 = extractvalue { ptr, i64, i64 } %t832, 0 - %t836 = getelementptr inbounds %S.gen.StructDef, ptr %t835, i64 %t831 - %t837 = load %S.gen.StructDef, ptr %t836 - store %S.gen.StructDef %t837, ptr %a838 - call void @finch.copy.S_gen_StructDef(ptr %a839, ptr %a838) - %t840 = load %S.gen.StructDef, ptr %a839 - store %S.gen.StructDef %t840, ptr %a841 - %t842 = load ptr, ptr %a1 - %t843 = load %S.ast.Type, ptr %a2 - %t844 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t842, %S.ast.Type %t843) - store { ptr, i64, i64 } %t844, ptr %a845 - %t846 = load ptr, ptr %a1 - %t847 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 1 - %t848 = load { ptr, i64, i64 }, ptr %t847 - store { ptr, i64, i64 } %t848, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.1961, i64 1, i64 0 }, ptr %a851 - call void @finch_str_concat(ptr %a849, ptr %a850, ptr %a851) - %t852 = load { ptr, i64, i64 }, ptr %a849 - call void @finch.gen.bufText(ptr %t846, { ptr, i64, i64 } { ptr @.str.1960, i64 4, i64 0 }, { ptr, i64, i64 } %t852) - store { ptr, i64, i64 } %t852, ptr %a853 - call void @finch_str_drop(ptr %a853) - %t854 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i32 0, i32 1 - %t856 = load i64, ptr %t855 - store i64 0, ptr %a857 - br label %for.cond3063 -for.cond3063: - %t858 = load i64, ptr %a857 - %t859 = icmp slt i64 %t858, %t856 - br i1 %t859, label %for.body3064, label %for.end3066 -for.body3064: - store { ptr, i64, i64 } { ptr @.str.1962, i64 2, i64 0 }, ptr %a860 - %t861 = load i64, ptr %a857 - %t862 = icmp eq i64 %t861, 0 - br i1 %t862, label %then3067, label %endif3069 -then3067: - %t863 = load { ptr, i64, i64 }, ptr %a860 - store { ptr, i64, i64 } { ptr @.str.1963, i64 0, i64 0 }, ptr %a860 - store { ptr, i64, i64 } %t863, ptr %a864 - call void @finch_str_drop(ptr %a864) - br label %endif3069 -endif3069: - %t865 = load ptr, ptr %a1 - %t866 = load { ptr, i64, i64 }, ptr %a860 - %t867 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 11 - %t868 = load i64, ptr %a857 - %t869 = load { ptr, i64, i64 }, ptr %t867 - %t870 = extractvalue { ptr, i64, i64 } %t869, 1 - %t871 = icmp uge i64 %t868, %t870 - br i1 %t871, label %range3070, label %inrange3071 -range3070: - call void @finch_panic_index(ptr @.str.1965, i64 1247, i64 %t868, i64 %t870) - unreachable -inrange3071: - %t872 = extractvalue { ptr, i64, i64 } %t869, 0 - %t873 = getelementptr inbounds { ptr, i64, i64 }, ptr %t872, i64 %t868 - %t874 = load { ptr, i64, i64 }, ptr %t873 - store { ptr, i64, i64 } %t866, ptr %a876 - store { ptr, i64, i64 } %t874, ptr %a877 - call void @finch_str_concat(ptr %a875, ptr %a876, ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a875 - store { ptr, i64, i64 } %t878, ptr %a880 - store { ptr, i64, i64 } { ptr @.str.1966, i64 2, i64 0 }, ptr %a881 - call void @finch_str_concat(ptr %a879, ptr %a880, ptr %a881) - store { ptr, i64, i64 } %t878, ptr %a882 - call void @finch_str_drop(ptr %a882) - %t883 = load { ptr, i64, i64 }, ptr %a879 - call void @finch.gen.bufText(ptr %t865, { ptr, i64, i64 } { ptr @.str.1964, i64 4, i64 0 }, { ptr, i64, i64 } %t883) - store { ptr, i64, i64 } %t883, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load ptr, ptr %a1 - %t886 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } { ptr @.str.1967, i64 23, i64 0 }, ptr %a888 - store { ptr, i64, i64 } %t886, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - %t890 = load { ptr, i64, i64 }, ptr %a887 - store { ptr, i64, i64 } %t890, ptr %a892 - store { ptr, i64, i64 } { ptr @.str.1968, i64 21, i64 0 }, ptr %a893 - call void @finch_str_concat(ptr %a891, ptr %a892, ptr %a893) - store { ptr, i64, i64 } %t890, ptr %a894 - call void @finch_str_drop(ptr %a894) - %t895 = load { ptr, i64, i64 }, ptr %a891 - %t896 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 3 - %t897 = load i64, ptr %a857 - %t898 = load { ptr, i64, i64 }, ptr %t896 - %t899 = extractvalue { ptr, i64, i64 } %t898, 1 - %t900 = icmp uge i64 %t897, %t899 - br i1 %t900, label %range3072, label %inrange3073 -range3072: - call void @finch_panic_index(ptr @.str.1969, i64 1248, i64 %t897, i64 %t899) - unreachable -inrange3073: - %t901 = extractvalue { ptr, i64, i64 } %t898, 0 - %t902 = getelementptr inbounds i64, ptr %t901, i64 %t897 - %t903 = load i64, ptr %t902 - call void @finch_str_from_int(ptr %a904, i64 %t903) - %t905 = load { ptr, i64, i64 }, ptr %a904 - store { ptr, i64, i64 } %t895, ptr %a907 - store { ptr, i64, i64 } %t905, ptr %a908 - call void @finch_str_concat(ptr %a906, ptr %a907, ptr %a908) - store { ptr, i64, i64 } %t895, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t905, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load { ptr, i64, i64 }, ptr %a906 - %t912 = call { ptr, i64, i64 } @finch.gen.op(ptr %t885, { ptr, i64, i64 } %t911) - store { ptr, i64, i64 } %t911, ptr %a913 - call void @finch_str_drop(ptr %a913) - store { ptr, i64, i64 } %t912, ptr %a914 - %t915 = load ptr, ptr %a1 - %t916 = load ptr, ptr %a1 - %t917 = load ptr, ptr %a1 - %t918 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t919 = load i64, ptr %a857 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3074, label %inrange3075 -range3074: - call void @finch_panic_index(ptr @.str.1971, i64 1249, i64 %t919, i64 %t921) - unreachable -inrange3075: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.ast.Type, ptr %t923, i64 %t919 - %t925 = load %S.ast.Type, ptr %t924 - %t926 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t917, %S.ast.Type %t925) - %t927 = load { ptr, i64, i64 }, ptr %a914 - %t928 = call { ptr, i64, i64 } @finch.gen.load(ptr %t916, { ptr, i64, i64 } %t926, { ptr, i64, i64 } %t927) - store { ptr, i64, i64 } %t926, ptr %a929 - call void @finch_str_drop(ptr %a929) - %t930 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t931 = load i64, ptr %a857 - %t932 = load { ptr, i64, i64 }, ptr %t930 - %t933 = extractvalue { ptr, i64, i64 } %t932, 1 - %t934 = icmp uge i64 %t931, %t933 - br i1 %t934, label %range3076, label %inrange3077 -range3076: - call void @finch_panic_index(ptr @.str.1972, i64 1249, i64 %t931, i64 %t933) - unreachable -inrange3077: - %t935 = extractvalue { ptr, i64, i64 } %t932, 0 - %t936 = getelementptr inbounds %S.ast.Type, ptr %t935, i64 %t931 - %t937 = load %S.ast.Type, ptr %t936 - call void @finch.gen.emitFormat(ptr %t915, { ptr, i64, i64 } { ptr @.str.1970, i64 4, i64 0 }, { ptr, i64, i64 } %t928, %S.ast.Type %t937, i1 true) - store { ptr, i64, i64 } %t928, ptr %a938 - call void @finch_str_drop(ptr %a938) - call void @finch_str_drop(ptr %a914) - call void @finch_str_drop(ptr %a860) - br label %for.step3065 -for.step3065: - %t939 = load i64, ptr %a857 - %t940 = add i64 %t939, 1 - store i64 %t940, ptr %a857 - br label %for.cond3063 -for.end3066: - %t941 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t941, { ptr, i64, i64 } { ptr @.str.1973, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1974, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a845) - call void @finch.drop.S_gen_StructDef(ptr %a841) - br label %endif3010 -endif3010: - br label %endif2993 -endif2993: - br label %endif2968 -endif2968: - br label %endif2959 -endif2959: - %t942 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t942, { ptr, i64, i64 } { ptr @.str.1975, i64 8, i64 0 }) - %t943 = load ptr, ptr %a1 - %t944 = load %S.gen.Saved, ptr %a32 - %t945 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1976, i64 21, i64 0 }, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t949, ptr %a951 - store { ptr, i64, i64 } { ptr @.str.1977, i64 18, i64 0 }, ptr %a952 - call void @finch_str_concat(ptr %a950, ptr %a951, ptr %a952) - store { ptr, i64, i64 } %t949, ptr %a953 - call void @finch_str_drop(ptr %a953) - %t954 = load { ptr, i64, i64 }, ptr %a950 - call void @finch.gen.endHelper(ptr %t943, %S.gen.Saved %t944, { ptr, i64, i64 } %t954) - store { ptr, i64, i64 } %t954, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t956 -} - -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3078, label %endif3080 -then3078: - %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 -endif3080: - %t18 = load i64, ptr %a10 - %t19 = load i64, ptr %a7 - %t20 = icmp slt i64 %t18, %t19 - br i1 %t20, label %then3081, label %endif3083 -then3081: - %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.1978, i64 6, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1979, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1980, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t46, %S.ast.Type %t47) - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a56 - call void @finch_str_drop(ptr %a56) - ret { ptr, i64, i64 } %t55 -endif3083: - %t57 = load %S.ast.Type, ptr %a3 - %t58 = call i1 @finch.gen.isSigned(%S.ast.Type %t57) - br i1 %t58, label %then3084, label %endif3086 -then3084: - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load %S.ast.Type, ptr %a3 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) - store { ptr, i64, i64 } { ptr @.str.1981, i64 5, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.1982, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.1983, i64 4, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t78, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Type, ptr %a4 - %t86 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t84, %S.ast.Type %t85) - store { ptr, i64, i64 } %t83, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t83, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a94 - call void @finch_str_drop(ptr %a94) - ret { ptr, i64, i64 } %t93 -endif3086: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a3 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - store { ptr, i64, i64 } { ptr @.str.1984, i64 5, i64 0 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1985, i64 1, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1986, i64 4, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load ptr, ptr %a1 - %t121 = load %S.ast.Type, ptr %a4 - %t122 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t120, %S.ast.Type %t121) - store { ptr, i64, i64 } %t119, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t119, ptr %a126 - call void @finch_str_drop(ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a123 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - ret { ptr, i64, i64 } %t129 -} - -define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3087, label %endif3089 -then3087: - %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 -endif3089: - %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 %then3090, label %endif3092 -then3090: - %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.1987, i64 6, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1988, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.1989, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.ast.Type, ptr %a4 - %t49 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t47, %S.ast.Type %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - %t56 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - ret { ptr, i64, i64 } %t56 -endif3092: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a3 - %t61 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1990, i64 8, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1991, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1992, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = load %S.ast.Type, ptr %a4 - %t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84) - store { ptr, i64, i64 } %t82, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t82, ptr %a89 - call void @finch_str_drop(ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a86 - %t92 = call { ptr, i64, i64 } @finch.gen.op(ptr %t58, { ptr, i64, i64 } %t91) - store { ptr, i64, i64 } %t91, ptr %a93 - call void @finch_str_drop(ptr %a93) - ret { ptr, i64, i64 } %t92 -} - -define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.isSigned(%S.ast.Type %t5) - br i1 %t6, label %then3093, label %endif3095 -then3093: - %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.1993, i64 7, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1994, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1995, i64 4, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = load %S.ast.Type, ptr %a4 - %t34 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t32, %S.ast.Type %t33) - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret { ptr, i64, i64 } %t41 -endif3095: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Type, ptr %a3 - %t46 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t44, %S.ast.Type %t45) - store { ptr, i64, i64 } { ptr @.str.1996, i64 7, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1997, i64 1, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t56, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1998, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - ret { ptr, i64, i64 } %t77 -} - -define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) { -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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a175 = alloca %S.ast.Type, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a203 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.ast.Type, align 16 - %a233 = alloca %S.ast.Type, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca %S.gen.Val, align 16 - %a348 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3096, label %endif3098 -then3096: - %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 -endif3098: - %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.1999, 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.from3099 -logic.from3099: - br i1 %t20, label %logic.rhs3100, label %logic.end3101 -logic.rhs3100: - %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.2000, 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.rend3102 -logic.rend3102: - br label %logic.end3101 -logic.end3101: - %t27 = phi i1 [ false, %logic.from3099 ], [ %t26, %logic.rend3102 ] - br i1 %t27, label %then3103, label %endif3105 -then3103: - %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.2001, 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 -endif3105: - %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.2002, 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.from3106 -logic.from3106: - br i1 %t40, label %logic.rhs3107, label %logic.end3108 -logic.rhs3107: - %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.2003, 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.rend3109 -logic.rend3109: - br label %logic.end3108 -logic.end3108: - %t47 = phi i1 [ false, %logic.from3106 ], [ %t46, %logic.rend3109 ] - br label %logic.from3110 -logic.from3110: - br i1 %t47, label %logic.rhs3111, label %logic.end3112 -logic.rhs3111: - %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.from3113 -logic.from3113: - br i1 %t52, label %logic.end3115, label %logic.rhs3114 -logic.rhs3114: - %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.rend3116 -logic.rend3116: - br label %logic.end3115 -logic.end3115: - %t57 = phi i1 [ true, %logic.from3113 ], [ %t56, %logic.rend3116 ] - br label %logic.rend3117 -logic.rend3117: - br label %logic.end3112 -logic.end3112: - %t58 = phi i1 [ false, %logic.from3110 ], [ %t57, %logic.rend3117 ] - br i1 %t58, label %then3118, label %endif3120 -then3118: - %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 -endif3120: - %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.from3121 -logic.from3121: - br i1 %t72, label %logic.rhs3122, label %logic.end3123 -logic.rhs3122: - %t73 = load %S.ast.Type, ptr %a3 - %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) - br label %logic.rend3124 -logic.rend3124: - br label %logic.end3123 -logic.end3123: - %t75 = phi i1 [ false, %logic.from3121 ], [ %t74, %logic.rend3124 ] - br i1 %t75, label %then3125, label %endif3127 -then3125: - %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t77 = load i1, ptr %t76 - br label %logic.from3128 -logic.from3128: - br i1 %t77, label %logic.rhs3129, label %logic.end3130 -logic.rhs3129: - %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.rend3131 -logic.rend3131: - br label %logic.end3130 -logic.end3130: - %t84 = phi i1 [ false, %logic.from3128 ], [ %t83, %logic.rend3131 ] - br i1 %t84, label %then3132, label %endif3134 -then3132: - %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 -endif3134: - %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 %then3135, label %endif3137 -then3135: - %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 -endif3137: - %t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t115 = load i1, ptr %t114 - br i1 %t115, label %then3138, label %endif3140 -then3138: - %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.2004, 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.2005, i64 16, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load %S.ast.Type, ptr %a3 - %t130 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t136) - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif3140 -endif3140: - br label %endif3127 -endif3127: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t139 = load %S.ast.Type, ptr %t138 - %t140 = call i1 @finch.gen.isInt(%S.ast.Type %t139) - br label %logic.from3141 -logic.from3141: - br i1 %t140, label %logic.rhs3142, label %logic.end3143 -logic.rhs3142: - %t141 = load %S.ast.Type, ptr %a3 - %t142 = call i1 @finch.gen.isFloat(%S.ast.Type %t141) - br label %logic.rend3144 -logic.rend3144: - br label %logic.end3143 -logic.end3143: - %t143 = phi i1 [ false, %logic.from3141 ], [ %t142, %logic.rend3144 ] - br i1 %t143, label %then3145, label %endif3147 -then3145: - %t144 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t145 = load i1, ptr %t144 - br label %logic.from3148 -logic.from3148: - br i1 %t145, label %logic.rhs3149, label %logic.end3150 -logic.rhs3149: - %t146 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.2006, i64 5, i64 0 }, ptr %a149 - %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) - %t151 = icmp ne i32 %t150, 0 - br label %logic.rend3151 -logic.rend3151: - br label %logic.end3150 -logic.end3150: - %t152 = phi i1 [ false, %logic.from3148 ], [ %t151, %logic.rend3151 ] - br i1 %t152, label %then3152, label %endif3154 -then3152: - %t153 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t154 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.2007, i64 2, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t158, 0 - %t160 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - %t164 = insertvalue %S.gen.Val %t159, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 3 - ret %S.gen.Val %t165 -endif3154: - %t166 = load ptr, ptr %a1 - %t167 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = load %S.ast.Type, ptr %a3 - %t172 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t166, { ptr, i64, i64 } %t168, %S.ast.Type %t170, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t174, ptr %a175 - call void @finch.copy.S_ast_Type(ptr %a176, ptr %a175) - %t177 = load %S.ast.Type, ptr %a176 - %t178 = insertvalue %S.gen.Val %t173, %S.ast.Type %t177, 1 - ret %S.gen.Val %t178 -endif3147: - %t179 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i32 0, i32 0 - %t181 = load { ptr, i64, i64 }, ptr %t180 - store { ptr, i64, i64 } %t181, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.2008, i64 3, i64 0 }, ptr %a183 - %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) - %t185 = icmp ne i32 %t184, 0 - br label %logic.from3155 -logic.from3155: - br i1 %t185, label %logic.rhs3156, label %logic.end3157 -logic.rhs3156: - %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t187, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.2009, i64 5, i64 0 }, ptr %a189 - %t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189) - %t191 = icmp ne i32 %t190, 0 - br label %logic.rend3158 -logic.rend3158: - br label %logic.end3157 -logic.end3157: - %t192 = phi i1 [ false, %logic.from3155 ], [ %t191, %logic.rend3158 ] - br i1 %t192, label %then3159, label %endif3161 -then3159: - %t193 = load ptr, ptr %a1 - %t194 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t197 = load %S.ast.Type, ptr %t196 - %t198 = load %S.ast.Type, ptr %a3 - %t199 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t193, { ptr, i64, i64 } %t195, %S.ast.Type %t197, %S.ast.Type %t198) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 - %t201 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t201, ptr %a202 - call void @finch.copy.S_ast_Type(ptr %a203, ptr %a202) - %t204 = load %S.ast.Type, ptr %a203 - %t205 = insertvalue %S.gen.Val %t200, %S.ast.Type %t204, 1 - ret %S.gen.Val %t205 -endif3161: - %t206 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t207 = getelementptr inbounds %S.ast.Type, ptr %t206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.2010, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br label %logic.from3162 -logic.from3162: - br i1 %t212, label %logic.rhs3163, label %logic.end3164 -logic.rhs3163: - %t213 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } { ptr @.str.2011, i64 3, i64 0 }, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br label %logic.rend3165 -logic.rend3165: - br label %logic.end3164 -logic.end3164: - %t219 = phi i1 [ false, %logic.from3162 ], [ %t218, %logic.rend3165 ] - br label %logic.from3166 -logic.from3166: - br i1 %t219, label %logic.rhs3167, label %logic.end3168 -logic.rhs3167: - %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t221 = load i1, ptr %t220 - br label %logic.rend3169 -logic.rend3169: - br label %logic.end3168 -logic.end3168: - %t222 = phi i1 [ false, %logic.from3166 ], [ %t221, %logic.rend3169 ] - br i1 %t222, label %then3170, label %endif3172 -then3170: - %t223 = load ptr, ptr %a1 - %t224 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t227 = load %S.ast.Type, ptr %t226 - %t228 = load %S.ast.Type, ptr %a3 - %t229 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t223, { ptr, i64, i64 } %t225, %S.ast.Type %t227, %S.ast.Type %t228) - %t230 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t231 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t231, ptr %a232 - call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) - %t234 = load %S.ast.Type, ptr %a233 - %t235 = insertvalue %S.gen.Val %t230, %S.ast.Type %t234, 1 - ret %S.gen.Val %t235 -endif3172: - %t236 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.2012, i64 9, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a237 - %t241 = load %S.ast.Type, ptr %a3 - %t242 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t241) - store { ptr, i64, i64 } %t240, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t240, ptr %a246 - call void @finch_str_drop(ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2013, i64 14, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t253, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t253, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a263 - %t264 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t265 = load %S.ast.Type, ptr %t264 - %t266 = call i1 @finch.gen.isNumber(%S.ast.Type %t265) - br label %logic.from3173 -logic.from3173: - br i1 %t266, label %logic.rhs3174, label %logic.end3175 -logic.rhs3174: - %t267 = load %S.ast.Type, ptr %a3 - %t268 = call i1 @finch.gen.isNumber(%S.ast.Type %t267) - br label %logic.rend3176 -logic.rend3176: - br label %logic.end3175 -logic.end3175: - %t269 = phi i1 [ false, %logic.from3173 ], [ %t268, %logic.rend3176 ] - br i1 %t269, label %then3177, label %endif3179 -then3177: - %t270 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t270, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.2014, i64 6, i64 0 }, ptr %a273 - call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a271 - %t275 = load %S.ast.Type, ptr %a3 - %t276 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t275) - store { ptr, i64, i64 } %t274, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t274, ptr %a280 - call void @finch_str_drop(ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.2015, i64 16, i64 0 }, ptr %a285 - call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) - store { ptr, i64, i64 } %t282, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a283 - %t288 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t287, ptr %a263 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t291 = load %S.ast.Type, ptr %t290 - %t292 = call i1 @finch.gen.isFloat(%S.ast.Type %t291) - br label %logic.from3180 -logic.from3180: - br i1 %t292, label %logic.rhs3181, label %logic.end3182 -logic.rhs3181: - %t293 = load %S.ast.Type, ptr %a3 - %t294 = call i1 @finch.gen.isInt(%S.ast.Type %t293) - br label %logic.rend3183 -logic.rend3183: - br label %logic.end3182 -logic.end3182: - %t295 = phi i1 [ false, %logic.from3180 ], [ %t294, %logic.rend3183 ] - br i1 %t295, label %then3184, label %endif3186 -then3184: - %t296 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.2016, i64 26, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t300, ptr %a263 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif3186 -endif3186: - %t303 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.2017, i64 1, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t307, ptr %a263 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif3179 -endif3179: - %t310 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.2018, i64 3, i64 0 }, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br label %logic.from3187 -logic.from3187: - br i1 %t315, label %logic.rhs3188, label %logic.end3189 -logic.rhs3188: - %t316 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t317 = load %S.ast.Type, ptr %t316 - %t318 = call i1 @finch.gen.isNumber(%S.ast.Type %t317) - br label %logic.from3190 -logic.from3190: - br i1 %t318, label %logic.end3192, label %logic.rhs3191 -logic.rhs3191: - %t319 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i32 0, i32 0 - %t321 = load { ptr, i64, i64 }, ptr %t320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.2019, i64 4, i64 0 }, ptr %a323 - %t324 = call i32 @finch_str_eq(ptr %a322, ptr %a323) - %t325 = icmp ne i32 %t324, 0 - br label %logic.rend3193 -logic.rend3193: - br label %logic.end3192 -logic.end3192: - %t326 = phi i1 [ true, %logic.from3190 ], [ %t325, %logic.rend3193 ] - br label %logic.from3194 -logic.from3194: - br i1 %t326, label %logic.end3196, label %logic.rhs3195 -logic.rhs3195: - %t327 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Type, ptr %t327, i32 0, i32 0 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t329, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.2020, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_eq(ptr %a330, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.rend3197 -logic.rend3197: - br label %logic.end3196 -logic.end3196: - %t334 = phi i1 [ true, %logic.from3194 ], [ %t333, %logic.rend3197 ] - br label %logic.rend3198 -logic.rend3198: - br label %logic.end3189 -logic.end3189: - %t335 = phi i1 [ false, %logic.from3187 ], [ %t334, %logic.rend3198 ] - br i1 %t335, label %then3199, label %endif3201 -then3199: - %t336 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.2021, i64 34, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a337 - %t341 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t340, ptr %a263 - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - br label %endif3201 -endif3201: - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Node, ptr %a4 - %t345 = load { ptr, i64, i64 }, ptr %a263 - call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t345) - %t346 = load %S.gen.Val, ptr %a2 - store %S.gen.Val %t346, ptr %a347 - call void @finch.copy.S_gen_Val(ptr %a348, ptr %a347) - %t349 = load %S.gen.Val, ptr %a348 - call void @finch_str_drop(ptr %a263) - ret %S.gen.Val %t349 -} - -define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic3202, label %ok3203 -panic3202: - call void @finch_panic(ptr @.str.2022, i64 1346, ptr @.str.2023) - unreachable -ok3203: - %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.cond3204 -for.cond3204: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body3205, label %for.end3207 -for.body3205: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic3208, label %ok3209 -panic3208: - call void @finch_panic(ptr @.str.2024, i64 1347, ptr @.str.2025) - unreachable -ok3209: - %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 %panic3210, label %ok3211 -panic3210: - call void @finch_panic(ptr @.str.2026, i64 1348, ptr @.str.2027) - unreachable -ok3211: - %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 %range3212, label %inrange3213 -range3212: - call void @finch_panic_index(ptr @.str.2028, i64 1348, i64 %t23, i64 %t25) - unreachable -inrange3213: - %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.cond3214 -for.cond3214: - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, %t31 - br i1 %t34, label %for.body3215, label %for.end3217 -for.body3215: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic3218, label %ok3219 -panic3218: - call void @finch_panic(ptr @.str.2029, i64 1349, ptr @.str.2030) - unreachable -ok3219: - %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 %range3220, label %inrange3221 -range3220: - call void @finch_panic_index(ptr @.str.2031, i64 1349, i64 %t38, i64 %t40) - unreachable -inrange3221: - %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 %range3222, label %inrange3223 -range3222: - call void @finch_panic_index(ptr @.str.2032, i64 1349, i64 %t45, i64 %t47) - unreachable -inrange3223: - %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 %then3224, label %endif3226 -then3224: - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic3227, label %ok3228 -panic3227: - call void @finch_panic(ptr @.str.2033, i64 1350, ptr @.str.2034) - unreachable -ok3228: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 44 - %t61 = load i1, ptr %t60 - br label %logic.from3229 -logic.from3229: - br i1 %t61, label %logic.rhs3230, label %logic.end3231 -logic.rhs3230: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3232, label %ok3233 -panic3232: - call void @finch_panic(ptr @.str.2035, i64 1350, ptr @.str.2036) - unreachable -ok3233: - %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 %range3234, label %inrange3235 -range3234: - call void @finch_panic_index(ptr @.str.2037, i64 1350, i64 %t65, i64 %t67) - unreachable -inrange3235: - %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 %range3236, label %inrange3237 -range3236: - call void @finch_panic_index(ptr @.str.2038, i64 1350, i64 %t72, i64 %t74) - unreachable -inrange3237: - %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 %panic3238, label %ok3239 -panic3238: - call void @finch_panic(ptr @.str.2039, i64 1350, ptr @.str.2040) - unreachable -ok3239: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 45 - %t83 = load i64, ptr %t82 - %t84 = icmp sge i64 %t79, %t83 - br label %logic.rend3240 -logic.rend3240: - br label %logic.end3231 -logic.end3231: - %t85 = phi i1 [ false, %logic.from3229 ], [ %t84, %logic.rend3240 ] - br i1 %t85, label %then3241, label %endif3243 -then3241: - br label %for.step3216 -endif3243: - %t86 = load i64, ptr %a19 - %t87 = mul i64 %t86, 100000 - %t88 = load i64, ptr %a32 - %t89 = add i64 %t87, %t88 - ret i64 %t89 -endif3226: - br label %for.step3216 -for.step3216: - %t90 = load i64, ptr %a32 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a32 - br label %for.cond3214 -for.end3217: - br label %for.step3206 -for.step3206: - %t92 = load i64, ptr %a8 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a8 - br label %for.cond3204 -for.end3207: - 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 7 - %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 7 - 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 %panic3244, label %ok3245 -panic3244: - call void @finch_panic(ptr @.str.2041, i64 1361, ptr @.str.2042) - unreachable -ok3245: - %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 %range3246, label %inrange3247 -range3246: - call void @finch_panic_index(ptr @.str.2043, i64 1361, i64 %t7, i64 %t9) - unreachable -inrange3247: - %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 %range3248, label %inrange3249 -range3248: - call void @finch_panic_index(ptr @.str.2044, i64 1361, i64 %t15, i64 %t17) - unreachable -inrange3249: - %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 %panic3250, label %ok3251 -panic3250: - call void @finch_panic(ptr @.str.2045, i64 1365, ptr @.str.2046) - unreachable -ok3251: - %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.cond3252 -for.cond3252: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body3253, label %for.end3255 -for.body3253: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic3256, label %ok3257 -panic3256: - call void @finch_panic(ptr @.str.2047, i64 1366, ptr @.str.2048) - unreachable -ok3257: - %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 %range3258, label %inrange3259 -range3258: - call void @finch_panic_index(ptr @.str.2049, i64 1366, i64 %t15, i64 %t17) - unreachable -inrange3259: - %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.from3260 -logic.from3260: - br i1 %t27, label %logic.rhs3261, label %logic.end3262 -logic.rhs3261: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic3263, label %ok3264 -panic3263: - call void @finch_panic(ptr @.str.2050, i64 1366, ptr @.str.2051) - unreachable -ok3264: - %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 %range3265, label %inrange3266 -range3265: - call void @finch_panic_index(ptr @.str.2052, i64 1366, i64 %t31, i64 %t33) - unreachable -inrange3266: - %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.rend3267 -logic.rend3267: - br label %logic.end3262 -logic.end3262: - %t44 = phi i1 [ false, %logic.from3260 ], [ %t43, %logic.rend3267 ] - br label %logic.from3268 -logic.from3268: - br i1 %t44, label %logic.rhs3269, label %logic.end3270 -logic.rhs3269: - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic3271, label %ok3272 -panic3271: - call void @finch_panic(ptr @.str.2053, i64 1366, ptr @.str.2054) - unreachable -ok3272: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 15 - %t48 = load i64, ptr %a9 - %t49 = load { ptr, i64, i64 }, ptr %t47 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range3273, label %inrange3274 -range3273: - call void @finch_panic_index(ptr @.str.2055, i64 1366, i64 %t48, i64 %t50) - unreachable -inrange3274: - %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.rend3275 -logic.rend3275: - br label %logic.end3270 -logic.end3270: - %t58 = phi i1 [ false, %logic.from3268 ], [ %t57, %logic.rend3275 ] - br i1 %t58, label %then3276, label %endif3278 -then3276: - %t59 = load i64, ptr %a9 - ret i64 %t59 -endif3278: - br label %for.step3254 -for.step3254: - %t60 = load i64, ptr %a9 - %t61 = add i64 %t60, 1 - store i64 %t61, ptr %a9 - br label %for.cond3252 -for.end3255: - 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 %panic3279, label %ok3280 -panic3279: - call void @finch_panic(ptr @.str.2056, i64 1374, ptr @.str.2057) - unreachable -ok3280: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 15 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 - %t9 = load i64, ptr %t8 - store i64 0, ptr %a10 - br label %for.cond3281 -for.cond3281: - %t11 = load i64, ptr %a10 - %t12 = icmp slt i64 %t11, %t9 - br i1 %t12, label %for.body3282, label %for.end3284 -for.body3282: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic3285, label %ok3286 -panic3285: - call void @finch_panic(ptr @.str.2058, i64 1375, ptr @.str.2059) - unreachable -ok3286: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 15 - %t16 = load i64, ptr %a10 - %t17 = load { ptr, i64, i64 }, ptr %t15 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range3287, label %inrange3288 -range3287: - call void @finch_panic_index(ptr @.str.2060, i64 1375, i64 %t16, i64 %t18) - unreachable -inrange3288: - %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.from3289 -logic.from3289: - br i1 %t28, label %logic.rhs3290, label %logic.end3291 -logic.rhs3290: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3292, label %ok3293 -panic3292: - call void @finch_panic(ptr @.str.2061, i64 1375, ptr @.str.2062) - unreachable -ok3293: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 - %t32 = load i64, ptr %a10 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3294, label %inrange3295 -range3294: - call void @finch_panic_index(ptr @.str.2063, i64 1375, i64 %t32, i64 %t34) - unreachable -inrange3295: - %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.rend3296 -logic.rend3296: - br label %logic.end3291 -logic.end3291: - %t45 = phi i1 [ false, %logic.from3289 ], [ %t44, %logic.rend3296 ] - br label %logic.from3297 -logic.from3297: - br i1 %t45, label %logic.rhs3298, label %logic.end3299 -logic.rhs3298: - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic3300, label %ok3301 -panic3300: - call void @finch_panic(ptr @.str.2064, i64 1375, ptr @.str.2065) - unreachable -ok3301: - %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 15 - %t49 = load i64, ptr %a10 - %t50 = load { ptr, i64, i64 }, ptr %t48 - %t51 = extractvalue { ptr, i64, i64 } %t50, 1 - %t52 = icmp uge i64 %t49, %t51 - br i1 %t52, label %range3302, label %inrange3303 -range3302: - call void @finch_panic_index(ptr @.str.2066, i64 1375, i64 %t49, i64 %t51) - unreachable -inrange3303: - %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.rend3304 -logic.rend3304: - br label %logic.end3299 -logic.end3299: - %t62 = phi i1 [ false, %logic.from3297 ], [ %t61, %logic.rend3304 ] - br i1 %t62, label %then3305, label %endif3307 -then3305: - %t63 = load i64, ptr %a10 - ret i64 %t63 -endif3307: - br label %for.step3283 -for.step3283: - %t64 = load i64, ptr %a10 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a10 - br label %for.cond3281 -for.end3284: - 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.2067, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2068, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.2069, i64 3, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.2070, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.2071, i64 4, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.2072, i64 5, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.2073, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.2074, i64 9, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.2075, i64 10, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.2076, i64 11, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.2077, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.2078, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.2079, i64 5, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.2080, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.2081, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.2082, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.2083, i64 11, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.2084, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.2085, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.2086, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.2087, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.2088, i64 2, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.2089, i64 3, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 - store { ptr, i64, i64 } { ptr @.str.2090, i64 3, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24 - store { ptr, i64, i64 } { ptr @.str.2091, i64 3, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 - store { ptr, i64, i64 } { ptr @.str.2092, i64 3, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 - store { ptr, i64, i64 } { ptr @.str.2093, i64 3, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27 - store { ptr, i64, i64 } { ptr @.str.2094, 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.cond3308 -find.cond3308: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t39 - br i1 %t43, label %find.body3309, label %find.end3312 -find.body3309: - %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.hit3310, label %find.next3311 -find.hit3310: - store i64 %t42, ptr %a38 - br label %find.end3312 -find.next3311: - %t50 = add i64 %t42, 1 - store i64 %t50, ptr %a41 - br label %find.cond3308 -find.end3312: - %t51 = load i64, ptr %a38 - %t52 = icmp sge i64 %t51, 0 - call void @finch.drop.arr_str(ptr %a35) - ret i1 %t52 -} - -define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5, i1 %p6) { -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 - %a7 = alloca i1, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a93 = alloca i1, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca %S.ast.Node, align 16 - %a238 = alloca %S.ast.Node, align 16 - %a240 = alloca %S.ast.Node, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %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 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } %p4, ptr %a5 - store i1 %p5, ptr %a6 - store i1 %p6, ptr %a7 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a3 - %t10 = call i64 @finch.gen.lookup(ptr %t8, { ptr, i64, i64 } %t9) - %t11 = icmp sge i64 %t10, 0 - br label %logic.from3313 -logic.from3313: - br i1 %t11, label %logic.rhs3314, label %logic.end3315 -logic.rhs3314: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.2095, i64 3, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp eq i32 %t15, 0 - br label %logic.rend3316 -logic.rend3316: - br label %logic.end3315 -logic.end3315: - %t17 = phi i1 [ false, %logic.from3313 ], [ %t16, %logic.rend3316 ] - br i1 %t17, label %then3317, label %endif3319 -then3317: - %t18 = load ptr, ptr %a1 - %t19 = load %S.ast.Node, ptr %a2 - %t20 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2096, i64 18, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2097, i64 21, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - br label %endif3319 -endif3319: - %t31 = load ptr, ptr %a1 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic3320, label %ok3321 -panic3320: - call void @finch_panic(ptr @.str.2098, i64 1393, ptr @.str.2099) - unreachable -ok3321: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 14 - %t35 = load { ptr, i64, i64 }, ptr %t34 - %t36 = load { ptr, i64, i64 }, ptr %a3 - %t37 = call i64 @finch.gen.findFn(ptr %t31, { ptr, i64, i64 } %t35, { ptr, i64, i64 } %t36) - %t38 = icmp sge i64 %t37, 0 - br i1 %t38, label %then3322, label %endif3324 -then3322: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - %t41 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2100, i64 1, i64 0 }, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.2101, i64 35, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif3324 -endif3324: - %t52 = load { ptr, i64, i64 }, ptr %a3 - %t53 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t52) - br i1 %t53, label %then3325, label %endif3327 -then3325: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2102, i64 1, i64 0 }, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.2103, i64 38, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } %t65) - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_drop(ptr %a66) - br label %endif3327 -endif3327: - %t67 = load ptr, ptr %a1 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - %t71 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t67, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t71, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a4 - %t77 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t75, %S.ast.Type %t76) - %t78 = load { ptr, i64, i64 }, ptr %a5 - %t79 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.store(ptr %t74, { ptr, i64, i64 } %t77, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3328, label %ok3329 -panic3328: - call void @finch_panic(ptr @.str.2104, i64 1401, ptr @.str.2105) - unreachable -ok3329: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 10 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - store i64 %t86, ptr %a87 - %t88 = load i1, ptr %a7 - br label %logic.from3330 -logic.from3330: - br i1 %t88, label %logic.rhs3331, label %logic.end3332 -logic.rhs3331: - %t89 = load ptr, ptr %a1 - %t90 = load %S.ast.Type, ptr %a4 - %t91 = call i1 @finch.gen.owning(ptr %t89, %S.ast.Type %t90) - br label %logic.rend3333 -logic.rend3333: - br label %logic.end3332 -logic.end3332: - %t92 = phi i1 [ false, %logic.from3330 ], [ %t91, %logic.rend3333 ] - store i1 %t92, ptr %a93 - %t94 = load i1, ptr %a93 - br i1 %t94, label %then3334, label %endif3336 -then3334: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic3337, label %ok3338 -panic3337: - call void @finch_panic(ptr @.str.2106, i64 1404, ptr @.str.2107) - unreachable -ok3338: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 10 - %t98 = load i64, ptr %a87 - %t99 = load { ptr, i64, i64 }, ptr %t97 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range3339, label %inrange3340 -range3339: - call void @finch_panic_index(ptr @.str.2108, i64 1404, i64 %t98, i64 %t100) - unreachable -inrange3340: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.gen.Scope, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.gen.Scope, ptr %t103, i32 0, i32 3 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = insertvalue %S.gen.Cleanup zeroinitializer, i1 false, 0 - %t107 = load ptr, ptr %a1 - %t108 = icmp eq ptr %t107, null - br i1 %t108, label %panic3341, label %ok3342 -panic3341: - call void @finch_panic(ptr @.str.2109, i64 1404, ptr @.str.2110) - unreachable -ok3342: - %t109 = getelementptr inbounds %S.gen.Gen, ptr %t107, i32 0, i32 10 - %t110 = load i64, ptr %a87 - %t111 = load { ptr, i64, i64 }, ptr %t109 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range3343, label %inrange3344 -range3343: - call void @finch_panic_index(ptr @.str.2111, i64 1404, i64 %t110, i64 %t112) - unreachable -inrange3344: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.gen.Scope, ptr %t114, i64 %t110 - %t116 = getelementptr inbounds %S.gen.Scope, ptr %t115, i32 0, i32 0 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i32 0, i32 1 - %t118 = load i64, ptr %t117 - %t119 = insertvalue %S.gen.Cleanup %t106, i64 %t118, 1 - %t120 = load i64, ptr %t105 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t121, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %t104 - %t123 = getelementptr inbounds %S.gen.Cleanup, ptr %t122, i64 %t120 - store %S.gen.Cleanup %t119, ptr %t123 - store i64 %t121, ptr %t105 - br label %endif3336 -endif3336: - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic3345, label %ok3346 -panic3345: - call void @finch_panic(ptr @.str.2112, i64 1406, ptr @.str.2113) - unreachable -ok3346: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 10 - %t127 = load i64, ptr %a87 - %t128 = load { ptr, i64, i64 }, ptr %t126 - %t129 = extractvalue { ptr, i64, i64 } %t128, 1 - %t130 = icmp uge i64 %t127, %t129 - br i1 %t130, label %range3347, label %inrange3348 -range3347: - call void @finch_panic_index(ptr @.str.2114, i64 1406, i64 %t127, i64 %t129) - unreachable -inrange3348: - %t131 = extractvalue { ptr, i64, i64 } %t128, 0 - %t132 = getelementptr inbounds %S.gen.Scope, ptr %t131, i64 %t127 - %t133 = getelementptr inbounds %S.gen.Scope, ptr %t132, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } %t138, 0 - %t140 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - %t144 = insertvalue %S.gen.Var %t139, %S.ast.Type %t143, 1 - %t145 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t145, ptr %a146 - call void @finch_str_copy(ptr %a147, ptr %a146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - %t149 = insertvalue %S.gen.Var %t144, { ptr, i64, i64 } %t148, 2 - %t150 = load i1, ptr %a6 - %t151 = insertvalue %S.gen.Var %t149, i1 %t150, 3 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic3349, label %ok3350 -panic3349: - call void @finch_panic(ptr @.str.2115, i64 1406, ptr @.str.2116) - unreachable -ok3350: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 25 - %t155 = load i64, ptr %t154 - %t156 = insertvalue %S.gen.Var %t151, i64 %t155, 4 - %t157 = load i1, ptr %a93 - %t158 = insertvalue %S.gen.Var %t156, i1 %t157, 5 - %t159 = load ptr, ptr %a1 - %t160 = icmp eq ptr %t159, null - br i1 %t160, label %panic3351, label %ok3352 -panic3351: - call void @finch_panic(ptr @.str.2117, i64 1406, ptr @.str.2118) - unreachable -ok3352: - %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 1 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t163 = load i64, ptr %t162 - %t164 = load { ptr, i64, i64 }, ptr %t161 - %t165 = extractvalue { ptr, i64, i64 } %t164, 1 - %t166 = icmp uge i64 %t163, %t165 - br i1 %t166, label %range3353, label %inrange3354 -range3353: - call void @finch_panic_index(ptr @.str.2119, i64 1406, i64 %t163, i64 %t165) - unreachable -inrange3354: - %t167 = extractvalue { ptr, i64, i64 } %t164, 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i64 %t163 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_copy(ptr %a171, ptr %a170) - %t172 = load { ptr, i64, i64 }, ptr %a171 - %t173 = insertvalue %S.gen.Var %t158, { ptr, i64, i64 } %t172, 7 - %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t175 = load i64, ptr %t174 - %t176 = insertvalue %S.gen.Var %t173, i64 %t175, 8 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t178 = load i64, ptr %t177 - %t179 = insertvalue %S.gen.Var %t176, i64 %t178, 9 - %t180 = load i64, ptr %t134 - %t181 = add i64 %t180, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t182 = load ptr, ptr %t133 - %t183 = getelementptr inbounds %S.gen.Var, ptr %t182, i64 %t180 - store %S.gen.Var %t179, ptr %t183 - store i64 %t181, ptr %t134 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3355, label %ok3356 -panic3355: - call void @finch_panic(ptr @.str.2120, i64 1407, ptr @.str.2121) - unreachable -ok3356: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 25 - %t187 = load i64, ptr %t186 - %t188 = add i64 %t187, 1 - store i64 %t188, ptr %t186 - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a3 - %t192 = load %S.ast.Type, ptr %a4 - %t193 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.dbgVariable(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t191, %S.ast.Type %t192, { ptr, i64, i64 } %t193) - %t194 = load ptr, ptr %a1 - %t195 = icmp eq ptr %t194, null - br i1 %t195, label %panic3357, label %ok3358 -panic3357: - call void @finch_panic(ptr @.str.2122, i64 1409, ptr @.str.2123) - unreachable -ok3358: - %t196 = getelementptr inbounds %S.gen.Gen, ptr %t194, i32 0, i32 28 - %t197 = load i1, ptr %t196 - br label %logic.from3359 -logic.from3359: - br i1 %t197, label %logic.rhs3360, label %logic.end3361 -logic.rhs3360: - %t198 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2124, i64 3, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp eq i32 %t201, 0 - br label %logic.rend3362 -logic.rend3362: - br label %logic.end3361 -logic.end3361: - %t203 = phi i1 [ false, %logic.from3359 ], [ %t202, %logic.rend3362 ] - br label %logic.from3363 -logic.from3363: - br i1 %t203, label %logic.rhs3364, label %logic.end3365 -logic.rhs3364: - %t204 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t204, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.2126, i64 1, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_starts(ptr %a205, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - %t210 = xor i1 %t209, true - br label %logic.rend3366 -logic.rend3366: - br label %logic.end3365 -logic.end3365: - %t211 = phi i1 [ false, %logic.from3363 ], [ %t210, %logic.rend3366 ] - br i1 %t211, label %then3367, label %endif3369 -then3367: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic3370, label %ok3371 -panic3370: - call void @finch_panic(ptr @.str.2127, i64 1410, ptr @.str.2128) - unreachable -ok3371: - %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 0 - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3372, label %ok3373 -panic3372: - call void @finch_panic(ptr @.str.2129, i64 1410, ptr @.str.2130) - unreachable -ok3373: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 13 - %t218 = getelementptr inbounds %S.gen.FnSig, ptr %t217, i32 0, i32 16 - %t219 = load i64, ptr %t218 - %t220 = load { ptr, i64, i64 }, ptr %t214 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range3374, label %inrange3375 -range3374: - call void @finch_panic_index(ptr @.str.2131, i64 1410, i64 %t219, i64 %t221) - unreachable -inrange3375: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Program, ptr %t223, i64 %t219 - %t225 = getelementptr inbounds %S.ast.Program, ptr %t224, i32 0, i32 8 - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic3376, label %ok3377 -panic3376: - call void @finch_panic(ptr @.str.2132, i64 1410, ptr @.str.2133) - unreachable -ok3377: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 13 - %t229 = getelementptr inbounds %S.gen.FnSig, ptr %t228, i32 0, i32 17 - %t230 = load i64, ptr %t229 - %t231 = load { ptr, i64, i64 }, ptr %t225 - %t232 = extractvalue { ptr, i64, i64 } %t231, 1 - %t233 = icmp uge i64 %t230, %t232 - br i1 %t233, label %range3378, label %inrange3379 -range3378: - call void @finch_panic_index(ptr @.str.2134, i64 1410, i64 %t230, i64 %t232) - unreachable -inrange3379: - %t234 = extractvalue { ptr, i64, i64 } %t231, 0 - %t235 = getelementptr inbounds %S.ast.Node, ptr %t234, i64 %t230 - %t236 = load %S.ast.Node, ptr %t235 - store %S.ast.Node %t236, ptr %a237 - call void @finch.copy.S_ast_Node(ptr %a238, ptr %a237) - %t239 = load %S.ast.Node, ptr %a238 - store %S.ast.Node %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = icmp eq ptr %t241, null - br i1 %t242, label %panic3380, label %ok3381 -panic3380: - call void @finch_panic(ptr @.str.2135, i64 1411, ptr @.str.2136) - unreachable -ok3381: - %t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 29 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2137, i64 3, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.2138, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = load %S.ast.Type, ptr %a4 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.2139, i64 1, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic3382, label %ok3383 -panic3382: - call void @finch_panic(ptr @.str.2140, i64 1411, ptr @.str.2141) - unreachable -ok3383: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t272 = load i64, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %t270 - %t274 = extractvalue { ptr, i64, i64 } %t273, 1 - %t275 = icmp uge i64 %t272, %t274 - br i1 %t275, label %range3384, label %inrange3385 -range3384: - call void @finch_panic_index(ptr @.str.2142, i64 1411, i64 %t272, i64 %t274) - unreachable -inrange3385: - %t276 = extractvalue { ptr, i64, i64 } %t273, 0 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i64 %t272 - %t278 = load { ptr, i64, i64 }, ptr %t277 - store { ptr, i64, i64 } %t267, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t267, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.2143, i64 1, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t290 = load i64, ptr %t289 - call void @finch_str_from_int(ptr %a291, i64 %t290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a294 - store { ptr, i64, i64 } %t292, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t288, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t292, ptr %a297 - call void @finch_str_drop(ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a293 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.2144, i64 1, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t305 = load i64, ptr %t304 - call void @finch_str_from_int(ptr %a306, i64 %t305) - %t307 = load { ptr, i64, i64 }, ptr %a306 - store { ptr, i64, i64 } %t303, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t303, ptr %a311 - call void @finch_str_drop(ptr %a311) - store { ptr, i64, i64 } %t307, ptr %a312 - call void @finch_str_drop(ptr %a312) - %t313 = load { ptr, i64, i64 }, ptr %a308 - store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.2145, i64 1, i64 0 }, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t313, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic3386, label %ok3387 -panic3386: - call void @finch_panic(ptr @.str.2146, i64 1411, ptr @.str.2147) - unreachable -ok3387: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 1 - %t322 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 13 - %t323 = load i64, ptr %t322 - %t324 = load { ptr, i64, i64 }, ptr %t321 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range3388, label %inrange3389 -range3388: - call void @finch_panic_index(ptr @.str.2148, i64 1411, i64 %t323, i64 %t325) - unreachable -inrange3389: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t323 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t318, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t318, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t334, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.2149, i64 1, i64 0 }, ptr %a337 - call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) - store { ptr, i64, i64 } %t334, ptr %a338 - call void @finch_str_drop(ptr %a338) - %t339 = load { ptr, i64, i64 }, ptr %a335 - %t340 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 11 - %t341 = load i64, ptr %t340 - call void @finch_str_from_int(ptr %a342, i64 %t341) - %t343 = load { ptr, i64, i64 }, ptr %a342 - store { ptr, i64, i64 } %t339, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t339, ptr %a347 - call void @finch_str_drop(ptr %a347) - store { ptr, i64, i64 } %t343, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t349, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.2150, i64 1, i64 0 }, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t349, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a350 - %t355 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 14 - %t356 = load i64, ptr %t355 - call void @finch_str_from_int(ptr %a357, i64 %t356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t354, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - store { ptr, i64, i64 } %t354, ptr %a362 - call void @finch_str_drop(ptr %a362) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a359 - %t365 = load i64, ptr %t244 - %t366 = add i64 %t365, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t366, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t367 = load ptr, ptr %t243 - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t365 - store { ptr, i64, i64 } %t364, ptr %t368 - store i64 %t366, ptr %t244 - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t372 = load i64, ptr %t371 - %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t374 = load i64, ptr %t373 - %t375 = load %S.ast.Type, ptr %a4 - %t376 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t375) - store { ptr, i64, i64 } { ptr @.str.2151, i64 9, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t376, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.2152, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - %t387 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t386, ptr %a389 - store { ptr, i64, i64 } %t387, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t386, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t392, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2153, i64 4, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.noteRef(ptr %t369, %S.ast.Node %t370, i64 %t372, i64 %t374, { ptr, i64, i64 } %t397, { ptr, i64, i64 } { ptr @.str.2154, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - call void @finch.drop.S_ast_Node(ptr %a240) - br label %endif3369 -endif3369: - %t399 = load { ptr, i64, i64 }, ptr %a73 - ret { ptr, i64, i64 } %t399 -} - -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 %panic3390, label %ok3391 -panic3390: - call void @finch_panic(ptr @.str.2155, i64 1418, ptr @.str.2156) - unreachable -ok3391: - %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.drop.S_gen_Var(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_gen_Var(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond3403 -n.cond3403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body3404, label %n.end3405 -n.body3404: - %t7 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Var(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond3403 -n.end3405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Cleanup(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Scope(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_gen_Var(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_gen_Cleanup(ptr %t4) - ret void -} - -define internal void @finch.gen.popScope(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a24 = alloca %S.gen.Scope, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3392, label %ok3393 -panic3392: - call void @finch_panic(ptr @.str.2157, i64 1424, ptr @.str.2158) - unreachable -ok3393: - %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 %then3394, label %endif3396 -then3394: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic3397, label %ok3398 -panic3397: - call void @finch_panic(ptr @.str.2159, i64 1425, ptr @.str.2160) - unreachable -ok3398: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load i64, ptr %t11 - %t13 = sub i64 %t12, 1 - call void @finch.gen.runCleanups(ptr %t7, i64 %t13) - br label %endif3396 -endif3396: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3399, label %ok3400 -panic3399: - call void @finch_panic(ptr @.str.2161, i64 1427, ptr @.str.2162) - unreachable -ok3400: - %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 %panic3401, label %ok3402 -panic3401: - call void @finch_panic(ptr @.str.2163, i64 1427, ptr @.str.2164) - unreachable -ok3402: - %t20 = sub i64 %t18, 1 - %t21 = load ptr, ptr %t16 - %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 - %t23 = load %S.gen.Scope, ptr %t22 - store i64 %t20, ptr %t17 - store %S.gen.Scope %t23, ptr %a24 - call void @finch.drop.S_gen_Scope(ptr %a24) - ret void -} - -define internal void @finch.gen.runCleanups(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a15 = alloca i64, align 16 - %a37 = alloca %S.gen.Cleanup, align 16 - %a59 = alloca %S.gen.Var, align 16 - %a60 = alloca %S.gen.Var, align 16 - %a62 = alloca %S.gen.Var, align 16 - %a75 = alloca i1, align 16 - %a80 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3406, label %ok3407 -panic3406: - call void @finch_panic(ptr @.str.2165, i64 1432, ptr @.str.2166) - unreachable -ok3407: - %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 %range3408, label %inrange3409 -range3408: - call void @finch_panic_index(ptr @.str.2167, i64 1432, i64 %t6, i64 %t8) - unreachable -inrange3409: - %t10 = extractvalue { ptr, i64, i64 } %t7, 0 - %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 - %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i32 0, i32 3 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - store i64 %t14, ptr %a15 - br label %while.cond3410 -while.cond3410: - %t16 = load i64, ptr %a15 - %t17 = icmp sgt i64 %t16, 0 - br i1 %t17, label %while.body3411, label %while.end3412 -while.body3411: - %t18 = load i64, ptr %a15 - %t19 = sub i64 %t18, 1 - store i64 %t19, ptr %a15 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic3413, label %ok3414 -panic3413: - call void @finch_panic(ptr @.str.2168, i64 1435, ptr @.str.2169) - unreachable -ok3414: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 - %t23 = load i64, ptr %a2 - %t24 = load { ptr, i64, i64 }, ptr %t22 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range3415, label %inrange3416 -range3415: - call void @finch_panic_index(ptr @.str.2170, i64 1435, i64 %t23, i64 %t25) - unreachable -inrange3416: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.gen.Scope, ptr %t27, i64 %t23 - %t29 = getelementptr inbounds %S.gen.Scope, ptr %t28, i32 0, i32 3 - %t30 = load i64, ptr %a15 - %t31 = load { ptr, i64, i64 }, ptr %t29 - %t32 = extractvalue { ptr, i64, i64 } %t31, 1 - %t33 = icmp uge i64 %t30, %t32 - br i1 %t33, label %range3417, label %inrange3418 -range3417: - call void @finch_panic_index(ptr @.str.2171, i64 1435, i64 %t30, i64 %t32) - unreachable -inrange3418: - %t34 = extractvalue { ptr, i64, i64 } %t31, 0 - %t35 = getelementptr inbounds %S.gen.Cleanup, ptr %t34, i64 %t30 - %t36 = load %S.gen.Cleanup, ptr %t35 - store %S.gen.Cleanup %t36, ptr %a37 - %t38 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 0 - %t39 = load i1, ptr %t38 - %t40 = xor i1 %t39, true - br i1 %t40, label %then3419, label %endif3421 -then3419: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic3422, label %ok3423 -panic3422: - call void @finch_panic(ptr @.str.2172, i64 1437, ptr @.str.2173) - unreachable -ok3423: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 10 - %t44 = load i64, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %t43 - %t46 = extractvalue { ptr, i64, i64 } %t45, 1 - %t47 = icmp uge i64 %t44, %t46 - br i1 %t47, label %range3424, label %inrange3425 -range3424: - call void @finch_panic_index(ptr @.str.2174, i64 1437, i64 %t44, i64 %t46) - unreachable -inrange3425: - %t48 = extractvalue { ptr, i64, i64 } %t45, 0 - %t49 = getelementptr inbounds %S.gen.Scope, ptr %t48, i64 %t44 - %t50 = getelementptr inbounds %S.gen.Scope, ptr %t49, i32 0, i32 0 - %t51 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = load { ptr, i64, i64 }, ptr %t50 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 %t52, %t54 - br i1 %t55, label %range3426, label %inrange3427 -range3426: - call void @finch_panic_index(ptr @.str.2175, i64 1437, i64 %t52, i64 %t54) - unreachable -inrange3427: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds %S.gen.Var, ptr %t56, i64 %t52 - %t58 = load %S.gen.Var, ptr %t57 - store %S.gen.Var %t58, ptr %a59 - call void @finch.copy.S_gen_Var(ptr %a60, ptr %a59) - %t61 = load %S.gen.Var, ptr %a60 - store %S.gen.Var %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 6 - %t64 = load i1, ptr %t63 - %t65 = xor i1 %t64, true - br i1 %t65, label %then3428, label %endif3430 -then3428: - %t66 = load ptr, ptr %a1 - %t67 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 2 - %t68 = load { ptr, i64, i64 }, ptr %t67 - %t69 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 1 - %t70 = load %S.ast.Type, ptr %t69 - call void @finch.gen.dropAt(ptr %t66, { ptr, i64, i64 } %t68, %S.ast.Type %t70) - br label %endif3430 -endif3430: - call void @finch.drop.S_gen_Var(ptr %a62) - br label %while.cond3410 -endif3421: - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3431, label %ok3432 -panic3431: - call void @finch_panic(ptr @.str.2176, i64 1443, ptr @.str.2177) - unreachable -ok3432: - %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 44 - %t74 = load i1, ptr %t73 - store i1 %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic3433, label %ok3434 -panic3433: - call void @finch_panic(ptr @.str.2178, i64 1444, ptr @.str.2179) - unreachable -ok3434: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 45 - %t79 = load i64, ptr %t78 - store i64 %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3435, label %ok3436 -panic3435: - call void @finch_panic(ptr @.str.2180, i64 1445, ptr @.str.2181) - unreachable -ok3436: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 44 - store i1 true, ptr %t83 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic3437, label %ok3438 -panic3437: - call void @finch_panic(ptr @.str.2182, i64 1446, ptr @.str.2183) - unreachable -ok3438: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 10 - %t87 = load i64, ptr %a2 - %t88 = load { ptr, i64, i64 }, ptr %t86 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range3439, label %inrange3440 -range3439: - call void @finch_panic_index(ptr @.str.2184, i64 1446, i64 %t87, i64 %t89) - unreachable -inrange3440: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.gen.Scope, ptr %t91, i64 %t87 - %t93 = getelementptr inbounds %S.gen.Scope, ptr %t92, i32 0, i32 2 - %t94 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t95 = load i64, ptr %t94 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range3441, label %inrange3442 -range3441: - call void @finch_panic_index(ptr @.str.2185, i64 1446, i64 %t95, i64 %t97) - unreachable -inrange3442: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds i64, ptr %t99, i64 %t95 - %t101 = load i64, ptr %t100 - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3443, label %ok3444 -panic3443: - call void @finch_panic(ptr @.str.2186, i64 1446, ptr @.str.2187) - unreachable -ok3444: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 45 - store i64 %t101, ptr %t104 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic3445, label %ok3446 -panic3445: - call void @finch_panic(ptr @.str.2188, i64 1447, ptr @.str.2189) - unreachable -ok3446: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 46 - %t108 = load i64, ptr %t107 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %t107 - %t110 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t110) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic3447, label %ok3448 -panic3447: - call void @finch_panic(ptr @.str.2190, i64 1449, ptr @.str.2191) - unreachable -ok3448: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 10 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range3449, label %inrange3450 -range3449: - call void @finch_panic_index(ptr @.str.2192, i64 1449, i64 %t115, i64 %t117) - unreachable -inrange3450: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.Scope, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.Scope, ptr %t120, i32 0, i32 1 - %t122 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = load { ptr, i64, i64 }, ptr %t121 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 %t123, %t125 - br i1 %t126, label %range3451, label %inrange3452 -range3451: - call void @finch_panic_index(ptr @.str.2193, i64 1449, i64 %t123, i64 %t125) - unreachable -inrange3452: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds %S.ast.Node, ptr %t127, i64 %t123 - %t129 = load %S.ast.Node, ptr %t128 - call void @finch.gen.stmt(ptr %t111, %S.ast.Node %t129) - %t130 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t130) - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic3453, label %ok3454 -panic3453: - call void @finch_panic(ptr @.str.2194, i64 1451, ptr @.str.2195) - unreachable -ok3454: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 46 - %t134 = load i64, ptr %t133 - %t135 = sub i64 %t134, 1 - store i64 %t135, ptr %t133 - %t136 = load i1, ptr %a75 - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic3455, label %ok3456 -panic3455: - call void @finch_panic(ptr @.str.2196, i64 1452, ptr @.str.2197) - unreachable -ok3456: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 44 - store i1 %t136, ptr %t139 - %t140 = load i64, ptr %a80 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic3457, label %ok3458 -panic3457: - call void @finch_panic(ptr @.str.2198, i64 1453, ptr @.str.2199) - unreachable -ok3458: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 45 - store i64 %t140, ptr %t143 - br label %while.cond3410 -while.end3412: - 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 %panic3459, label %ok3460 -panic3459: - call void @finch_panic(ptr @.str.2200, i64 1459, ptr @.str.2201) - unreachable -ok3460: - %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.cond3461 -while.cond3461: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body3462, label %while.end3463 -while.body3462: - %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.runCleanups(ptr %t14, i64 %t15) - br label %while.cond3461 -while.end3463: - 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 - call void @finch.gen.popScope(ptr %t2) - 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.2202, 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 %then3464, label %endif3466 -then3464: - %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 -endif3466: - %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.2203, 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.from3467 -logic.from3467: - br i1 %t18, label %logic.end3469, label %logic.rhs3468 -logic.rhs3468: - %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.2204, 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.rend3470 -logic.rend3470: - br label %logic.end3469 -logic.end3469: - %t25 = phi i1 [ true, %logic.from3467 ], [ %t24, %logic.rend3470 ] - br i1 %t25, label %then3471, label %endif3473 -then3471: - %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 %range3474, label %inrange3475 -range3474: - call void @finch_panic_index(ptr @.str.2205, i64 1477, i64 0, i64 %t28) - unreachable -inrange3475: - %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 -endif3473: - ret { ptr, i64, i64 } { ptr @.str.2206, 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 - %a37 = 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 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca i64, align 16 - %a72 = alloca i64, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a143 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t5 = call ptr @finch_alloc(i64 %t4) - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 0 - store { ptr, i64, i64 } { ptr @.str.2207, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 - store { ptr, i64, i64 } { ptr @.str.2208, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 - store { ptr, i64, i64 } { ptr @.str.2209, i64 6, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3 - store { ptr, i64, i64 } { ptr @.str.2210, i64 6, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 - store { ptr, i64, i64 } { ptr @.str.2211, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 - store { ptr, i64, i64 } { ptr @.str.2212, i64 6, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6 - store { ptr, i64, i64 } { ptr @.str.2213, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 - store { ptr, i64, i64 } { ptr @.str.2214, 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.2215, 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.from3476 -logic.from3476: - br i1 %t23, label %logic.rhs3477, label %logic.end3478 -logic.rhs3477: - %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 %range3479, label %inrange3480 -range3479: - call void @finch_panic_index(ptr @.str.2216, i64 1484, i64 0, i64 %t26) - unreachable -inrange3480: - %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 - store { ptr, i64, i64 } %t31, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %logic.rend3481 -logic.rend3481: - br label %logic.end3478 -logic.end3478: - %t38 = phi i1 [ false, %logic.from3476 ], [ %t36, %logic.rend3481 ] - br i1 %t38, label %then3482, label %endif3484 -then3482: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3484: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2217, i64 6, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br label %logic.from3485 -logic.from3485: - br i1 %t44, label %logic.rhs3486, label %logic.end3487 -logic.rhs3486: - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t45 - %t50 = load ptr, ptr %a17 - store i64 0, ptr %a51 - br label %find.cond3488 -find.cond3488: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body3489, label %find.end3492 -find.body3489: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit3490, label %find.next3491 -find.hit3490: - store i64 %t52, ptr %a48 - br label %find.end3492 -find.next3491: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond3488 -find.end3492: - %t61 = load i64, ptr %a48 - %t62 = icmp sge i64 %t61, 0 - br label %logic.from3493 -logic.from3493: - br i1 %t62, label %logic.end3495, label %logic.rhs3494 -logic.rhs3494: - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic3496, label %ok3497 -panic3496: - call void @finch_panic(ptr @.str.2218, i64 1490, ptr @.str.2219) - unreachable -ok3497: - %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 24 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 - %t67 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store i64 -1, ptr %a69 - %t70 = load i64, ptr %t66 - %t71 = load ptr, ptr %t65 - store i64 0, ptr %a72 - br label %find.cond3498 -find.cond3498: - %t73 = load i64, ptr %a72 - %t74 = icmp slt i64 %t73, %t70 - br i1 %t74, label %find.body3499, label %find.end3502 -find.body3499: - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 %t73 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } %t68, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br i1 %t80, label %find.hit3500, label %find.next3501 -find.hit3500: - store i64 %t73, ptr %a69 - br label %find.end3502 -find.next3501: - %t81 = add i64 %t73, 1 - store i64 %t81, ptr %a72 - br label %find.cond3498 -find.end3502: - %t82 = load i64, ptr %a69 - %t83 = icmp sge i64 %t82, 0 - br label %logic.rend3503 -logic.rend3503: - br label %logic.end3495 -logic.end3495: - %t84 = phi i1 [ true, %logic.from3493 ], [ %t83, %logic.rend3503 ] - br label %logic.rend3504 -logic.rend3504: - br label %logic.end3487 -logic.end3487: - %t85 = phi i1 [ false, %logic.from3485 ], [ %t84, %logic.rend3504 ] - br label %logic.from3505 -logic.from3505: - br i1 %t85, label %logic.rhs3506, label %logic.end3507 -logic.rhs3506: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range3508, label %inrange3509 -range3508: - call void @finch_panic_index(ptr @.str.2220, i64 1490, i64 0, i64 %t88) - unreachable -inrange3509: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0 - %t92 = load %S.ast.Node, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t92) - %t94 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } %t94, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - store { ptr, i64, i64 } %t93, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %logic.rend3510 -logic.rend3510: - br label %logic.end3507 -logic.end3507: - %t100 = phi i1 [ false, %logic.from3505 ], [ %t98, %logic.rend3510 ] - br i1 %t100, label %then3511, label %endif3513 -then3511: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3513: - %t101 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2221, i64 4, i64 0 }, ptr %a104 - %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) - %t106 = icmp ne i32 %t105, 0 - br label %logic.from3514 -logic.from3514: - br i1 %t106, label %logic.rhs3515, label %logic.end3516 -logic.rhs3515: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2222, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend3517 -logic.rend3517: - br label %logic.end3516 -logic.end3516: - %t113 = phi i1 [ false, %logic.from3514 ], [ %t112, %logic.rend3517 ] - br label %logic.from3518 -logic.from3518: - br i1 %t113, label %logic.rhs3519, label %logic.end3520 -logic.rhs3519: - %t114 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp eq i64 %t116, 1 - br label %logic.rend3521 -logic.rend3521: - br label %logic.end3520 -logic.end3520: - %t118 = phi i1 [ false, %logic.from3518 ], [ %t117, %logic.rend3521 ] - br label %logic.from3522 -logic.from3522: - br i1 %t118, label %logic.rhs3523, label %logic.end3524 -logic.rhs3523: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 0, %t121 - br i1 %t122, label %range3525, label %inrange3526 -range3525: - call void @finch_panic_index(ptr @.str.2223, i64 1493, i64 0, i64 %t121) - unreachable -inrange3526: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds %S.ast.Node, ptr %t123, i64 0 - %t125 = load %S.ast.Node, ptr %t124 - %t126 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t125) - %t127 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } %t127, ptr %a129 - %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %logic.rend3527 -logic.rend3527: - br label %logic.end3524 -logic.end3524: - %t133 = phi i1 [ false, %logic.from3522 ], [ %t131, %logic.rend3527 ] - br i1 %t133, label %then3528, label %endif3530 -then3528: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3530: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - store i64 0, ptr %a135 - br label %each.cond3531 -each.cond3531: - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = load i64, ptr %a135 - %t139 = icmp slt i64 %t138, %t137 - br i1 %t139, label %each.body3532, label %each.end3534 -each.body3532: - %t140 = load ptr, ptr %t134 - %t141 = getelementptr inbounds %S.ast.Node, ptr %t140, i64 %t138 - %t142 = load %S.ast.Node, ptr %t141 - store %S.ast.Node %t142, ptr %a143 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - %t146 = load %S.ast.Node, ptr %a143 - %t147 = call i1 @finch.gen.mutates(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Node %t146) - br i1 %t147, label %then3535, label %endif3537 -then3535: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3537: - br label %each.step3533 -each.step3533: - %t148 = load i64, ptr %a135 - %t149 = add i64 %t148, 1 - store i64 %t149, ptr %a135 - br label %each.cond3531 -each.end3534: - call void @finch.drop.arr_str(ptr %a17) - 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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a64 = alloca %S.ast.Node, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca i64, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca i64, align 16 - %a224 = alloca %S.ast.Node, align 16 - %a225 = alloca %S.ast.Node, align 16 - %a227 = alloca %S.ast.Node, align 16 - %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 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca %S.gen.SumDef, align 16 - %a278 = alloca i64, align 16 - %a280 = alloca i64, align 16 - %a288 = alloca %S.ast.Node, align 16 - %a293 = alloca i64, align 16 - %a296 = alloca i64, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca %S.gen.SumDef, align 16 - %a374 = alloca %S.gen.SumDef, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = 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 - %a427 = alloca %S.gen.EnumDef, align 16 - %a428 = alloca i64, align 16 - %a430 = alloca i64, align 16 - %a438 = alloca %S.ast.Node, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca i64, align 16 - %a454 = alloca i64, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca i64, align 16 - %a498 = alloca i64, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca %S.gen.EnumDef, align 16 - %a563 = alloca %S.gen.EnumDef, align 16 - %a579 = alloca i64, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca i64, align 16 - %a629 = alloca i64, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca i64, align 16 - %a683 = alloca %S.ast.Node, align 16 - %a684 = alloca %S.ast.Node, align 16 - %a686 = alloca %S.ast.Node, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = 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 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca i1, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca i64, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = 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 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a929 = alloca i64, align 16 - %a932 = alloca i64, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a969 = 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 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1009 = 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 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca %S.gen.FnSig, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1072 = 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 - %a1085 = 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 - %a1090 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1096 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca { ptr, i64, i64 }, align 16 - %a1102 = 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 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca %S.ast.Type, align 16 - %a1126 = alloca i64, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1158 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1223 = alloca %S.gen.FnSig, align 16 - %a1224 = alloca %S.gen.FnSig, align 16 - %a1234 = alloca i1, align 16 - %a1241 = alloca i64, align 16 - %a1307 = alloca %S.ast.Node, align 16 - %a1308 = alloca %S.ast.Node, align 16 - %a1310 = alloca %S.ast.Node, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1363 = alloca i64, align 16 - %a1376 = alloca %S.gen.Template, align 16 - %a1377 = alloca %S.gen.Template, align 16 - %a1379 = alloca %S.gen.Template, align 16 - %a1407 = alloca %S.ast.Node, align 16 - %a1408 = alloca %S.ast.Node, align 16 - %a1410 = alloca %S.ast.Node, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca i64, align 16 - %a1494 = alloca %S.ast.Node, align 16 - %a1495 = alloca %S.ast.Node, align 16 - %a1497 = alloca %S.ast.Node, align 16 - %a1509 = alloca %S.ast.Node, align 16 - %a1510 = alloca %S.ast.Node, align 16 - %a1512 = alloca %S.ast.Node, align 16 - %a1525 = alloca i64, align 16 - %a1545 = alloca %S.ast.Type, align 16 - %a1546 = alloca %S.ast.Type, align 16 - %a1548 = 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 %panic3538, label %ok3539 -panic3538: - call void @finch_panic(ptr @.str.2224, i64 1507, ptr @.str.2225) - unreachable -ok3539: - %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.cond3540 -for.cond3540: - %t8 = load i64, ptr %a7 - %t9 = icmp slt i64 %t8, %t6 - br i1 %t9, label %for.body3541, label %for.end3543 -for.body3541: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic3544, label %ok3545 -panic3544: - call void @finch_panic(ptr @.str.2226, i64 1508, ptr @.str.2227) - unreachable -ok3545: - %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 %range3546, label %inrange3547 -range3546: - call void @finch_panic_index(ptr @.str.2228, i64 1508, i64 %t13, i64 %t15) - unreachable -inrange3547: - %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 %panic3548, label %ok3549 -panic3548: - call void @finch_panic(ptr @.str.2229, i64 1508, ptr @.str.2230) - unreachable -ok3549: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 14 - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_copy(ptr %a25, ptr %a24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - %t27 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t26, ptr %t23 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3550, label %ok3551 -panic3550: - call void @finch_panic(ptr @.str.2231, i64 1509, ptr @.str.2232) - unreachable -ok3551: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 0 - %t32 = load i64, ptr %a7 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3552, label %inrange3553 -range3552: - call void @finch_panic_index(ptr @.str.2233, i64 1509, i64 %t32, i64 %t34) - unreachable -inrange3553: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Program, ptr %t36, i64 %t32 - %t38 = getelementptr inbounds %S.ast.Program, ptr %t37, i32 0, i32 6 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 - %t40 = load i64, ptr %t39 - store i64 0, ptr %a41 - br label %for.cond3554 -for.cond3554: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body3555, label %for.end3557 -for.body3555: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic3558, label %ok3559 -panic3558: - call void @finch_panic(ptr @.str.2234, i64 1510, ptr @.str.2235) - unreachable -ok3559: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 0 - %t47 = load i64, ptr %a7 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range3560, label %inrange3561 -range3560: - call void @finch_panic_index(ptr @.str.2236, i64 1510, i64 %t47, i64 %t49) - unreachable -inrange3561: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i64 %t47 - %t53 = getelementptr inbounds %S.ast.Program, ptr %t52, i32 0, i32 6 - %t54 = load i64, ptr %a41 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range3562, label %inrange3563 -range3562: - call void @finch_panic_index(ptr @.str.2237, i64 1510, i64 %t54, i64 %t56) - unreachable -inrange3563: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - store %S.ast.Node %t60, ptr %a61 - call void @finch.copy.S_ast_Node(ptr %a62, ptr %a61) - %t63 = load %S.ast.Node, ptr %a62 - store %S.ast.Node %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic3564, label %ok3565 -panic3564: - call void @finch_panic(ptr @.str.2238, i64 1511, ptr @.str.2239) - unreachable -ok3565: - %t68 = getelementptr inbounds %S.gen.Gen, ptr %t66, i32 0, i32 14 - %t69 = load { ptr, i64, i64 }, ptr %t68 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = call i64 @finch.gen.findStruct(ptr %t65, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t71) - %t73 = icmp sge i64 %t72, 0 - br label %logic.from3566 -logic.from3566: - br i1 %t73, label %logic.end3568, label %logic.rhs3567 -logic.rhs3567: - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic3569, label %ok3570 -panic3569: - call void @finch_panic(ptr @.str.2240, i64 1511, ptr @.str.2241) - unreachable -ok3570: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 14 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = call i64 @finch.gen.findTemplate(ptr %t74, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t80, { ptr, i64, i64 } { ptr @.str.2242, i64 0, i64 0 }, i1 true) - %t82 = icmp sge i64 %t81, 0 - br label %logic.rend3571 -logic.rend3571: - br label %logic.end3568 -logic.end3568: - %t83 = phi i1 [ true, %logic.from3566 ], [ %t82, %logic.rend3571 ] - br i1 %t83, label %then3572, label %endif3574 -then3572: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a64 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.2243, i64 12, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2244, i64 18, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif3574 -endif3574: - %t98 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = icmp sgt i64 %t100, 0 - br i1 %t101, label %then3575, label %endif3577 -then3575: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3578, label %ok3579 -panic3578: - call void @finch_panic(ptr @.str.2245, i64 1516, ptr @.str.2246) - unreachable -ok3579: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 17 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic3580, label %ok3581 -panic3580: - call void @finch_panic(ptr @.str.2247, i64 1516, ptr @.str.2248) - unreachable -ok3581: - %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 14 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a110 - call void @finch_str_copy(ptr %a111, ptr %a110) - %t112 = load { ptr, i64, i64 }, ptr %a111 - %t113 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t112, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_copy(ptr %a117, ptr %a116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - %t119 = insertvalue %S.gen.Template %t113, { ptr, i64, i64 } %t118, 1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch.copy.arr_str(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = insertvalue %S.gen.Template %t119, { ptr, i64, i64 } %t124, 3 - %t126 = load i64, ptr %a7 - %t127 = insertvalue %S.gen.Template %t125, i64 %t126, 4 - %t128 = load i64, ptr %a41 - %t129 = insertvalue %S.gen.Template %t127, i64 %t128, 5 - %t130 = insertvalue %S.gen.Template %t129, i1 true, 6 - %t131 = load i64, ptr %t105 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t104 - %t134 = getelementptr inbounds %S.gen.Template, ptr %t133, i64 %t131 - store %S.gen.Template %t130, ptr %t134 - store i64 %t132, ptr %t105 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -endif3577: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic3582, label %ok3583 -panic3582: - call void @finch_panic(ptr @.str.2249, i64 1519, ptr @.str.2250) - unreachable -ok3583: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 16 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic3584, label %ok3585 -panic3584: - call void @finch_panic(ptr @.str.2251, i64 1519, ptr @.str.2252) - unreachable -ok3585: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 14 - %t142 = load { ptr, i64, i64 }, ptr %t141 - store { ptr, i64, i64 } %t142, ptr %a143 - call void @finch_str_copy(ptr %a144, ptr %a143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_copy(ptr %a150, ptr %a149) - %t151 = load { ptr, i64, i64 }, ptr %a150 - %t152 = insertvalue %S.gen.StructDef %t146, { ptr, i64, i64 } %t151, 1 - %t153 = load i64, ptr %a7 - %t154 = insertvalue %S.gen.StructDef %t152, i64 %t153, 13 - %t155 = load i64, ptr %a41 - %t156 = insertvalue %S.gen.StructDef %t154, i64 %t155, 14 - %t157 = load i64, ptr %t138 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t137, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t137 - %t160 = getelementptr inbounds %S.gen.StructDef, ptr %t159, i64 %t157 - store %S.gen.StructDef %t156, ptr %t160 - store i64 %t158, ptr %t138 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -for.step3556: - %t161 = load i64, ptr %a41 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a41 - br label %for.cond3554 -for.end3557: - br label %for.step3542 -for.step3542: - %t163 = load i64, ptr %a7 - %t164 = add i64 %t163, 1 - store i64 %t164, ptr %a7 - br label %for.cond3540 -for.end3543: - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3586, label %ok3587 -panic3586: - call void @finch_panic(ptr @.str.2253, i64 1522, ptr @.str.2254) - unreachable -ok3587: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load i64, ptr %t168 - store i64 0, ptr %a170 - br label %for.cond3588 -for.cond3588: - %t171 = load i64, ptr %a170 - %t172 = icmp slt i64 %t171, %t169 - br i1 %t172, label %for.body3589, label %for.end3591 -for.body3589: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic3592, label %ok3593 -panic3592: - call void @finch_panic(ptr @.str.2255, i64 1523, ptr @.str.2256) - unreachable -ok3593: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 0 - %t176 = load i64, ptr %a170 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range3594, label %inrange3595 -range3594: - call void @finch_panic_index(ptr @.str.2257, i64 1523, i64 %t176, i64 %t178) - unreachable -inrange3595: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.ast.Program, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.ast.Program, ptr %t181, i32 0, i32 0 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3596, label %ok3597 -panic3596: - call void @finch_panic(ptr @.str.2258, i64 1523, ptr @.str.2259) - unreachable -ok3597: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 14 - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_copy(ptr %a188, ptr %a187) - %t189 = load { ptr, i64, i64 }, ptr %a188 - %t190 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t189, ptr %t186 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - %t193 = icmp eq ptr %t192, null - br i1 %t193, label %panic3598, label %ok3599 -panic3598: - call void @finch_panic(ptr @.str.2260, i64 1524, ptr @.str.2261) - unreachable -ok3599: - %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 0 - %t195 = load i64, ptr %a170 - %t196 = load { ptr, i64, i64 }, ptr %t194 - %t197 = extractvalue { ptr, i64, i64 } %t196, 1 - %t198 = icmp uge i64 %t195, %t197 - br i1 %t198, label %range3600, label %inrange3601 -range3600: - call void @finch_panic_index(ptr @.str.2262, i64 1524, i64 %t195, i64 %t197) - unreachable -inrange3601: - %t199 = extractvalue { ptr, i64, i64 } %t196, 0 - %t200 = getelementptr inbounds %S.ast.Program, ptr %t199, i64 %t195 - %t201 = getelementptr inbounds %S.ast.Program, ptr %t200, i32 0, i32 7 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load i64, ptr %t202 - store i64 0, ptr %a204 - br label %for.cond3602 -for.cond3602: - %t205 = load i64, ptr %a204 - %t206 = icmp slt i64 %t205, %t203 - br i1 %t206, label %for.body3603, label %for.end3605 -for.body3603: - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic3606, label %ok3607 -panic3606: - call void @finch_panic(ptr @.str.2263, i64 1525, ptr @.str.2264) - unreachable -ok3607: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 0 - %t210 = load i64, ptr %a170 - %t211 = load { ptr, i64, i64 }, ptr %t209 - %t212 = extractvalue { ptr, i64, i64 } %t211, 1 - %t213 = icmp uge i64 %t210, %t212 - br i1 %t213, label %range3608, label %inrange3609 -range3608: - call void @finch_panic_index(ptr @.str.2265, i64 1525, i64 %t210, i64 %t212) - unreachable -inrange3609: - %t214 = extractvalue { ptr, i64, i64 } %t211, 0 - %t215 = getelementptr inbounds %S.ast.Program, ptr %t214, i64 %t210 - %t216 = getelementptr inbounds %S.ast.Program, ptr %t215, i32 0, i32 7 - %t217 = load i64, ptr %a204 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range3610, label %inrange3611 -range3610: - call void @finch_panic_index(ptr @.str.2266, i64 1525, i64 %t217, i64 %t219) - unreachable -inrange3611: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 - %t223 = load %S.ast.Node, ptr %t222 - store %S.ast.Node %t223, ptr %a224 - call void @finch.copy.S_ast_Node(ptr %a225, ptr %a224) - %t226 = load %S.ast.Node, ptr %a225 - store %S.ast.Node %t226, ptr %a227 - %t228 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 6 - %t229 = load i1, ptr %t228 - br i1 %t229, label %then3612, label %endif3614 -then3612: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic3615, label %ok3616 -panic3615: - call void @finch_panic(ptr @.str.2267, i64 1527, ptr @.str.2268) - unreachable -ok3616: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 14 - %t234 = load { ptr, i64, i64 }, ptr %t233 - %t235 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t236 = load { ptr, i64, i64 }, ptr %t235 - %t237 = call i64 @finch.gen.findEnum(ptr %t230, { ptr, i64, i64 } %t234, { ptr, i64, i64 } %t236) - %t238 = icmp sge i64 %t237, 0 - br label %logic.from3617 -logic.from3617: - br i1 %t238, label %logic.end3619, label %logic.rhs3618 -logic.rhs3618: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic3620, label %ok3621 -panic3620: - call void @finch_panic(ptr @.str.2269, i64 1527, ptr @.str.2270) - unreachable -ok3621: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 14 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %t244 - %t246 = call i64 @finch.gen.findSum(ptr %t239, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t245) - %t247 = icmp sge i64 %t246, 0 - br label %logic.rend3622 -logic.rend3622: - br label %logic.end3619 -logic.end3619: - %t248 = phi i1 [ true, %logic.from3617 ], [ %t247, %logic.rend3622 ] - br i1 %t248, label %then3623, label %endif3625 -then3623: - %t249 = load ptr, ptr %a1 - %t250 = load %S.ast.Node, ptr %a227 - %t251 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t252 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } { ptr @.str.2271, 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 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.2272, i64 18, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.fail(ptr %t249, %S.ast.Node %t250, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a262 - call void @finch_str_drop(ptr %a262) - br label %endif3625 -endif3625: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic3626, label %ok3627 -panic3626: - call void @finch_panic(ptr @.str.2273, i64 1530, ptr @.str.2274) - unreachable -ok3627: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 14 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_copy(ptr %a268, ptr %a267) - %t269 = load { ptr, i64, i64 }, ptr %a268 - %t270 = insertvalue %S.gen.SumDef zeroinitializer, { ptr, i64, i64 } %t269, 0 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - call void @finch_str_copy(ptr %a274, ptr %a273) - %t275 = load { ptr, i64, i64 }, ptr %a274 - %t276 = insertvalue %S.gen.SumDef %t270, { ptr, i64, i64 } %t275, 1 - store %S.gen.SumDef %t276, ptr %a277 - store i64 1, ptr %a278 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a280 - br label %each.cond3628 -each.cond3628: - %t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %t279, i32 0, i32 1 - %t282 = load i64, ptr %t281 - %t283 = load i64, ptr %a280 - %t284 = icmp slt i64 %t283, %t282 - br i1 %t284, label %each.body3629, label %each.end3631 -each.body3629: - %t285 = load ptr, ptr %t279 - %t286 = getelementptr inbounds %S.ast.Node, ptr %t285, i64 %t283 - %t287 = load %S.ast.Node, ptr %t286 - store %S.ast.Node %t287, ptr %a288 - %t289 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store i64 -1, ptr %a293 - %t294 = load i64, ptr %t290 - %t295 = load ptr, ptr %t289 - store i64 0, ptr %a296 - br label %find.cond3632 -find.cond3632: - %t297 = load i64, ptr %a296 - %t298 = icmp slt i64 %t297, %t294 - br i1 %t298, label %find.body3633, label %find.end3636 -find.body3633: - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t295, i64 %t297 - %t300 = load { ptr, i64, i64 }, ptr %t299 - store { ptr, i64, i64 } %t300, ptr %a301 - store { ptr, i64, i64 } %t292, ptr %a302 - %t303 = call i32 @finch_str_eq(ptr %a301, ptr %a302) - %t304 = icmp ne i32 %t303, 0 - br i1 %t304, label %find.hit3634, label %find.next3635 -find.hit3634: - store i64 %t297, ptr %a293 - br label %find.end3636 -find.next3635: - %t305 = add i64 %t297, 1 - store i64 %t305, ptr %a296 - br label %find.cond3632 -find.end3636: - %t306 = load i64, ptr %a293 - %t307 = icmp sge i64 %t306, 0 - br i1 %t307, label %then3637, label %endif3639 -then3637: - %t308 = load ptr, ptr %a1 - %t309 = load %S.ast.Node, ptr %a288 - %t310 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } { ptr @.str.2275, i64 9, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2276, i64 17, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t320, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - store { ptr, i64, i64 } %t327, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.2277, i64 6, i64 0 }, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t327, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.fail(ptr %t308, %S.ast.Node %t309, { ptr, i64, i64 } %t332) - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - br label %endif3639 -endif3639: - %t334 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t335 = getelementptr inbounds { ptr, i64, i64 }, ptr %t334, i32 0, i32 1 - %t336 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t337 = load { ptr, i64, i64 }, ptr %t336 - store { ptr, i64, i64 } %t337, ptr %a338 - call void @finch_str_copy(ptr %a339, ptr %a338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - %t341 = load i64, ptr %t335 - %t342 = add i64 %t341, 1 - call void @finch_arr_reserve(ptr %t334, i64 %t342, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t343 = load ptr, ptr %t334 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %t343, i64 %t341 - store { ptr, i64, i64 } %t340, ptr %t344 - store i64 %t342, ptr %t335 - %t345 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 3 - %t346 = getelementptr inbounds { ptr, i64, i64 }, ptr %t345, i32 0, i32 1 - %t347 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t348 = getelementptr inbounds { ptr, i64, i64 }, ptr %t347, i32 0, i32 1 - %t349 = load i64, ptr %t348 - %t350 = load i64, ptr %t346 - %t351 = add i64 %t350, 1 - call void @finch_arr_reserve(ptr %t345, i64 %t351, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t352 = load ptr, ptr %t345 - %t353 = getelementptr inbounds i64, ptr %t352, i64 %t350 - store i64 %t349, ptr %t353 - store i64 %t351, ptr %t346 - %t354 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 4 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i32 0, i32 1 - %t356 = load i64, ptr %a278 - %t357 = load i64, ptr %t355 - %t358 = add i64 %t357, 1 - call void @finch_arr_reserve(ptr %t354, i64 %t358, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t359 = load ptr, ptr %t354 - %t360 = getelementptr inbounds i64, ptr %t359, i64 %t357 - store i64 %t356, ptr %t360 - store i64 %t358, ptr %t355 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = load i64, ptr %a278 - %t365 = add i64 %t364, %t363 - store i64 %t365, ptr %a278 - br label %each.step3630 -each.step3630: - %t366 = load i64, ptr %a280 - %t367 = add i64 %t366, 1 - store i64 %t367, ptr %a280 - br label %each.cond3628 -each.end3631: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic3640, label %ok3641 -panic3640: - call void @finch_panic(ptr @.str.2278, i64 1541, ptr @.str.2279) - unreachable -ok3641: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 22 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load %S.gen.SumDef, ptr %a277 - store %S.gen.SumDef %t372, ptr %a373 - call void @finch.copy.S_gen_SumDef(ptr %a374, ptr %a373) - %t375 = load %S.gen.SumDef, ptr %a374 - %t376 = load i64, ptr %t371 - %t377 = add i64 %t376, 1 - call void @finch_arr_reserve(ptr %t370, i64 %t377, i64 ptrtoint (ptr getelementptr (%S.gen.SumDef, ptr null, i32 1) to i64)) - %t378 = load ptr, ptr %t370 - %t379 = getelementptr inbounds %S.gen.SumDef, ptr %t378, i64 %t376 - store %S.gen.SumDef %t375, ptr %t379 - store i64 %t377, ptr %t371 - call void @finch.drop.S_gen_SumDef(ptr %a277) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -endif3614: - %t380 = load ptr, ptr %a1 - %t381 = load ptr, ptr %a1 - %t382 = icmp eq ptr %t381, null - br i1 %t382, label %panic3642, label %ok3643 -panic3642: - call void @finch_panic(ptr @.str.2280, i64 1544, ptr @.str.2281) - unreachable -ok3643: - %t383 = getelementptr inbounds %S.gen.Gen, ptr %t381, i32 0, i32 14 - %t384 = load { ptr, i64, i64 }, ptr %t383 - %t385 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t386 = load { ptr, i64, i64 }, ptr %t385 - %t387 = call i64 @finch.gen.findEnum(ptr %t380, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t386) - %t388 = icmp sge i64 %t387, 0 - br label %logic.from3644 -logic.from3644: - br i1 %t388, label %logic.end3646, label %logic.rhs3645 -logic.rhs3645: - %t389 = load ptr, ptr %a1 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic3647, label %ok3648 -panic3647: - call void @finch_panic(ptr @.str.2282, i64 1544, ptr @.str.2283) - unreachable -ok3648: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 14 - %t393 = load { ptr, i64, i64 }, ptr %t392 - %t394 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t395 = load { ptr, i64, i64 }, ptr %t394 - %t396 = call i64 @finch.gen.findStruct(ptr %t389, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t395) - %t397 = icmp sge i64 %t396, 0 - br label %logic.rend3649 -logic.rend3649: - br label %logic.end3646 -logic.end3646: - %t398 = phi i1 [ true, %logic.from3644 ], [ %t397, %logic.rend3649 ] - br i1 %t398, label %then3650, label %endif3652 -then3650: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a227 - %t401 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t402 = load { ptr, i64, i64 }, ptr %t401 - store { ptr, i64, i64 } { ptr @.str.2284, i64 1, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - store { ptr, i64, i64 } %t406, ptr %a408 - store { ptr, i64, i64 } { ptr @.str.2285, i64 18, i64 0 }, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t406, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.fail(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t411) - store { ptr, i64, i64 } %t411, ptr %a412 - call void @finch_str_drop(ptr %a412) - br label %endif3652 -endif3652: - %t413 = load ptr, ptr %a1 - %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic3653, label %ok3654 -panic3653: - call void @finch_panic(ptr @.str.2286, i64 1547, ptr @.str.2287) - unreachable -ok3654: - %t415 = getelementptr inbounds %S.gen.Gen, ptr %t413, i32 0, i32 14 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - call void @finch_str_copy(ptr %a418, ptr %a417) - %t419 = load { ptr, i64, i64 }, ptr %a418 - %t420 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_copy(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = insertvalue %S.gen.EnumDef %t420, { ptr, i64, i64 } %t425, 1 - store %S.gen.EnumDef %t426, ptr %a427 - store i64 0, ptr %a428 - %t429 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a430 - br label %each.cond3655 -each.cond3655: - %t431 = getelementptr inbounds { ptr, i64, i64 }, ptr %t429, i32 0, i32 1 - %t432 = load i64, ptr %t431 - %t433 = load i64, ptr %a430 - %t434 = icmp slt i64 %t433, %t432 - br i1 %t434, label %each.body3656, label %each.end3658 -each.body3656: - %t435 = load ptr, ptr %t429 - %t436 = getelementptr inbounds %S.ast.Node, ptr %t435, i64 %t433 - %t437 = load %S.ast.Node, ptr %t436 - store %S.ast.Node %t437, ptr %a438 - %t439 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t440 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t441 = load i64, ptr %t440 - %t442 = icmp sgt i64 %t441, 0 - br i1 %t442, label %then3659, label %endif3661 -then3659: - %t443 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t444 = load { ptr, i64, i64 }, ptr %t443 - store { ptr, i64, i64 } %t444, ptr %a445 - %t446 = call i64 @finch_str_to_int(ptr %a445, ptr @.str.2288, i64 1551) - store i64 %t446, ptr %a428 - br label %endif3661 -endif3661: - %t447 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i32 0, i32 1 - %t449 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t450 = load { ptr, i64, i64 }, ptr %t449 - store i64 -1, ptr %a451 - %t452 = load i64, ptr %t448 - %t453 = load ptr, ptr %t447 - store i64 0, ptr %a454 - br label %find.cond3662 -find.cond3662: - %t455 = load i64, ptr %a454 - %t456 = icmp slt i64 %t455, %t452 - br i1 %t456, label %find.body3663, label %find.end3666 -find.body3663: - %t457 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t455 - %t458 = load { ptr, i64, i64 }, ptr %t457 - store { ptr, i64, i64 } %t458, ptr %a459 - store { ptr, i64, i64 } %t450, ptr %a460 - %t461 = call i32 @finch_str_eq(ptr %a459, ptr %a460) - %t462 = icmp ne i32 %t461, 0 - br i1 %t462, label %find.hit3664, label %find.next3665 -find.hit3664: - store i64 %t455, ptr %a451 - br label %find.end3666 -find.next3665: - %t463 = add i64 %t455, 1 - store i64 %t463, ptr %a454 - br label %find.cond3662 -find.end3666: - %t464 = load i64, ptr %a451 - %t465 = icmp sge i64 %t464, 0 - br i1 %t465, label %then3667, label %endif3669 -then3667: - %t466 = load ptr, ptr %a1 - %t467 = load %S.ast.Node, ptr %a438 - %t468 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t469 = load { ptr, i64, i64 }, ptr %t468 - store { ptr, i64, i64 } { ptr @.str.2289, i64 9, i64 0 }, ptr %a471 - store { ptr, i64, i64 } %t469, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a470 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.2290, i64 17, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - %t479 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t480 = load { ptr, i64, i64 }, ptr %t479 - store { ptr, i64, i64 } %t478, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t478, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.2291, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - call void @finch.gen.fail(ptr %t466, %S.ast.Node %t467, { ptr, i64, i64 } %t490) - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - br label %endif3669 -endif3669: - %t492 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t492, i32 0, i32 1 - %t494 = load i64, ptr %a428 - store i64 -1, ptr %a495 - %t496 = load i64, ptr %t493 - %t497 = load ptr, ptr %t492 - store i64 0, ptr %a498 - br label %find.cond3670 -find.cond3670: - %t499 = load i64, ptr %a498 - %t500 = icmp slt i64 %t499, %t496 - br i1 %t500, label %find.body3671, label %find.end3674 -find.body3671: - %t501 = getelementptr inbounds i64, ptr %t497, i64 %t499 - %t502 = load i64, ptr %t501 - %t503 = icmp eq i64 %t502, %t494 - br i1 %t503, label %find.hit3672, label %find.next3673 -find.hit3672: - store i64 %t499, ptr %a495 - br label %find.end3674 -find.next3673: - %t504 = add i64 %t499, 1 - store i64 %t504, ptr %a498 - br label %find.cond3670 -find.end3674: - %t505 = load i64, ptr %a495 - %t506 = icmp sge i64 %t505, 0 - br i1 %t506, label %then3675, label %endif3677 -then3675: - %t507 = load ptr, ptr %a1 - %t508 = load %S.ast.Node, ptr %a438 - %t509 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t510 = load { ptr, i64, i64 }, ptr %t509 - store { ptr, i64, i64 } { ptr @.str.2292, i64 16, i64 0 }, ptr %a512 - store { ptr, i64, i64 } %t510, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a511 - store { ptr, i64, i64 } %t514, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.2293, i64 17, i64 0 }, ptr %a517 - call void @finch_str_concat(ptr %a515, ptr %a516, ptr %a517) - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_drop(ptr %a518) - %t519 = load { ptr, i64, i64 }, ptr %a515 - %t520 = load i64, ptr %a428 - call void @finch_str_from_int(ptr %a521, i64 %t520) - %t522 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a524 - store { ptr, i64, i64 } %t522, ptr %a525 - call void @finch_str_concat(ptr %a523, ptr %a524, ptr %a525) - store { ptr, i64, i64 } %t519, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.2294, i64 20, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.fail(ptr %t507, %S.ast.Node %t508, { ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a534 - call void @finch_str_drop(ptr %a534) - br label %endif3677 -endif3677: - %t535 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 - %t537 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - call void @finch_str_copy(ptr %a540, ptr %a539) - %t541 = load { ptr, i64, i64 }, ptr %a540 - %t542 = load i64, ptr %t536 - %t543 = add i64 %t542, 1 - call void @finch_arr_reserve(ptr %t535, i64 %t543, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t544 = load ptr, ptr %t535 - %t545 = getelementptr inbounds { ptr, i64, i64 }, ptr %t544, i64 %t542 - store { ptr, i64, i64 } %t541, ptr %t545 - store i64 %t543, ptr %t536 - %t546 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t547 = getelementptr inbounds { ptr, i64, i64 }, ptr %t546, i32 0, i32 1 - %t548 = load i64, ptr %a428 - %t549 = load i64, ptr %t547 - %t550 = add i64 %t549, 1 - call void @finch_arr_reserve(ptr %t546, i64 %t550, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t551 = load ptr, ptr %t546 - %t552 = getelementptr inbounds i64, ptr %t551, i64 %t549 - store i64 %t548, ptr %t552 - store i64 %t550, ptr %t547 - %t553 = load i64, ptr %a428 - %t554 = add i64 %t553, 1 - store i64 %t554, ptr %a428 - br label %each.step3657 -each.step3657: - %t555 = load i64, ptr %a430 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a430 - br label %each.cond3655 -each.end3658: - %t557 = load ptr, ptr %a1 - %t558 = icmp eq ptr %t557, null - br i1 %t558, label %panic3678, label %ok3679 -panic3678: - call void @finch_panic(ptr @.str.2295, i64 1563, ptr @.str.2296) - unreachable -ok3679: - %t559 = getelementptr inbounds %S.gen.Gen, ptr %t557, i32 0, i32 21 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load %S.gen.EnumDef, ptr %a427 - store %S.gen.EnumDef %t561, ptr %a562 - call void @finch.copy.S_gen_EnumDef(ptr %a563, ptr %a562) - %t564 = load %S.gen.EnumDef, ptr %a563 - %t565 = load i64, ptr %t560 - %t566 = add i64 %t565, 1 - call void @finch_arr_reserve(ptr %t559, i64 %t566, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) - %t567 = load ptr, ptr %t559 - %t568 = getelementptr inbounds %S.gen.EnumDef, ptr %t567, i64 %t565 - store %S.gen.EnumDef %t564, ptr %t568 - store i64 %t566, ptr %t560 - call void @finch.drop.S_gen_EnumDef(ptr %a427) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -for.step3604: - %t569 = load i64, ptr %a204 - %t570 = add i64 %t569, 1 - store i64 %t570, ptr %a204 - br label %for.cond3602 -for.end3605: - br label %for.step3590 -for.step3590: - %t571 = load i64, ptr %a170 - %t572 = add i64 %t571, 1 - store i64 %t572, ptr %a170 - br label %for.cond3588 -for.end3591: - %t573 = load ptr, ptr %a1 - %t574 = icmp eq ptr %t573, null - br i1 %t574, label %panic3680, label %ok3681 -panic3680: - call void @finch_panic(ptr @.str.2297, i64 1566, ptr @.str.2298) - unreachable -ok3681: - %t575 = getelementptr inbounds %S.gen.Gen, ptr %t573, i32 0, i32 26 - %t576 = getelementptr inbounds %S.cimport.CImports, ptr %t575, i32 0, i32 4 - %t577 = getelementptr inbounds { ptr, i64, i64 }, ptr %t576, i32 0, i32 1 - %t578 = load i64, ptr %t577 - store i64 0, ptr %a579 - br label %for.cond3682 -for.cond3682: - %t580 = load i64, ptr %a579 - %t581 = icmp slt i64 %t580, %t578 - br i1 %t581, label %for.body3683, label %for.end3685 -for.body3683: - %t582 = load ptr, ptr %a1 - %t583 = icmp eq ptr %t582, null - br i1 %t583, label %panic3686, label %ok3687 -panic3686: - call void @finch_panic(ptr @.str.2299, i64 1567, ptr @.str.2300) - unreachable -ok3687: - %t584 = getelementptr inbounds %S.gen.Gen, ptr %t582, i32 0, i32 16 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i32 0, i32 1 - %t586 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.2301, i64 1, i64 0 }, 0 - %t587 = load ptr, ptr %a1 - %t588 = icmp eq ptr %t587, null - br i1 %t588, label %panic3688, label %ok3689 -panic3688: - call void @finch_panic(ptr @.str.2302, i64 1567, ptr @.str.2303) - unreachable -ok3689: - %t589 = getelementptr inbounds %S.gen.Gen, ptr %t587, i32 0, i32 26 - %t590 = getelementptr inbounds %S.cimport.CImports, ptr %t589, i32 0, i32 4 - %t591 = load i64, ptr %a579 - %t592 = load { ptr, i64, i64 }, ptr %t590 - %t593 = extractvalue { ptr, i64, i64 } %t592, 1 - %t594 = icmp uge i64 %t591, %t593 - br i1 %t594, label %range3690, label %inrange3691 -range3690: - call void @finch_panic_index(ptr @.str.2304, i64 1567, i64 %t591, i64 %t593) - unreachable -inrange3691: - %t595 = extractvalue { ptr, i64, i64 } %t592, 0 - %t596 = getelementptr inbounds { ptr, i64, i64 }, ptr %t595, i64 %t591 - %t597 = load { ptr, i64, i64 }, ptr %t596 - store { ptr, i64, i64 } %t597, ptr %a598 - call void @finch_str_copy(ptr %a599, ptr %a598) - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = insertvalue %S.gen.StructDef %t586, { ptr, i64, i64 } %t600, 1 - %t602 = insertvalue %S.gen.StructDef %t601, i1 true, 2 - %t603 = insertvalue %S.gen.StructDef %t602, i64 -1, 13 - %t604 = load i64, ptr %a579 - %t605 = insertvalue %S.gen.StructDef %t603, i64 %t604, 14 - %t606 = load i64, ptr %t585 - %t607 = add i64 %t606, 1 - call void @finch_arr_reserve(ptr %t584, i64 %t607, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t608 = load ptr, ptr %t584 - %t609 = getelementptr inbounds %S.gen.StructDef, ptr %t608, i64 %t606 - store %S.gen.StructDef %t605, ptr %t609 - store i64 %t607, ptr %t585 - br label %for.step3684 -for.step3684: - %t610 = load i64, ptr %a579 - %t611 = add i64 %t610, 1 - store i64 %t611, ptr %a579 - br label %for.cond3682 -for.end3685: - %t612 = load ptr, ptr %a1 - %t613 = icmp eq ptr %t612, null - br i1 %t613, label %panic3692, label %ok3693 -panic3692: - call void @finch_panic(ptr @.str.2305, i64 1569, ptr @.str.2306) - unreachable -ok3693: - %t614 = getelementptr inbounds %S.gen.Gen, ptr %t612, i32 0, i32 16 - %t615 = getelementptr inbounds { ptr, i64, i64 }, ptr %t614, i32 0, i32 1 - %t616 = load i64, ptr %t615 - store i64 0, ptr %a617 - br label %for.cond3694 -for.cond3694: - %t618 = load i64, ptr %a617 - %t619 = icmp slt i64 %t618, %t616 - br i1 %t619, label %for.body3695, label %for.end3697 -for.body3695: - %t620 = load ptr, ptr %a1 - %t621 = load i64, ptr %a617 - call void @finch.gen.resolveStruct(ptr %t620, i64 %t621) - br label %for.step3696 -for.step3696: - %t622 = load i64, ptr %a617 - %t623 = add i64 %t622, 1 - store i64 %t623, ptr %a617 - br label %for.cond3694 -for.end3697: - %t624 = load ptr, ptr %a1 - %t625 = icmp eq ptr %t624, null - br i1 %t625, label %panic3698, label %ok3699 -panic3698: - call void @finch_panic(ptr @.str.2307, i64 1572, ptr @.str.2308) - unreachable -ok3699: - %t626 = getelementptr inbounds %S.gen.Gen, ptr %t624, i32 0, i32 0 - %t627 = getelementptr inbounds { ptr, i64, i64 }, ptr %t626, i32 0, i32 1 - %t628 = load i64, ptr %t627 - store i64 0, ptr %a629 - br label %for.cond3700 -for.cond3700: - %t630 = load i64, ptr %a629 - %t631 = icmp slt i64 %t630, %t628 - br i1 %t631, label %for.body3701, label %for.end3703 -for.body3701: - %t632 = load ptr, ptr %a1 - %t633 = icmp eq ptr %t632, null - br i1 %t633, label %panic3704, label %ok3705 -panic3704: - call void @finch_panic(ptr @.str.2309, i64 1573, ptr @.str.2310) - unreachable -ok3705: - %t634 = getelementptr inbounds %S.gen.Gen, ptr %t632, i32 0, i32 0 - %t635 = load i64, ptr %a629 - %t636 = load { ptr, i64, i64 }, ptr %t634 - %t637 = extractvalue { ptr, i64, i64 } %t636, 1 - %t638 = icmp uge i64 %t635, %t637 - br i1 %t638, label %range3706, label %inrange3707 -range3706: - call void @finch_panic_index(ptr @.str.2311, i64 1573, i64 %t635, i64 %t637) - unreachable -inrange3707: - %t639 = extractvalue { ptr, i64, i64 } %t636, 0 - %t640 = getelementptr inbounds %S.ast.Program, ptr %t639, i64 %t635 - %t641 = getelementptr inbounds %S.ast.Program, ptr %t640, i32 0, i32 0 - %t642 = load { ptr, i64, i64 }, ptr %t641 - %t643 = load ptr, ptr %a1 - %t644 = icmp eq ptr %t643, null - br i1 %t644, label %panic3708, label %ok3709 -panic3708: - call void @finch_panic(ptr @.str.2312, i64 1573, ptr @.str.2313) - unreachable -ok3709: - %t645 = getelementptr inbounds %S.gen.Gen, ptr %t643, i32 0, i32 14 - store { ptr, i64, i64 } %t642, ptr %a646 - call void @finch_str_copy(ptr %a647, ptr %a646) - %t648 = load { ptr, i64, i64 }, ptr %a647 - %t649 = load { ptr, i64, i64 }, ptr %t645 - store { ptr, i64, i64 } %t648, ptr %t645 - store { ptr, i64, i64 } %t649, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load ptr, ptr %a1 - %t652 = icmp eq ptr %t651, null - br i1 %t652, label %panic3710, label %ok3711 -panic3710: - call void @finch_panic(ptr @.str.2314, i64 1574, ptr @.str.2315) - unreachable -ok3711: - %t653 = getelementptr inbounds %S.gen.Gen, ptr %t651, i32 0, i32 0 - %t654 = load i64, ptr %a629 - %t655 = load { ptr, i64, i64 }, ptr %t653 - %t656 = extractvalue { ptr, i64, i64 } %t655, 1 - %t657 = icmp uge i64 %t654, %t656 - br i1 %t657, label %range3712, label %inrange3713 -range3712: - call void @finch_panic_index(ptr @.str.2316, i64 1574, i64 %t654, i64 %t656) - unreachable -inrange3713: - %t658 = extractvalue { ptr, i64, i64 } %t655, 0 - %t659 = getelementptr inbounds %S.ast.Program, ptr %t658, i64 %t654 - %t660 = getelementptr inbounds %S.ast.Program, ptr %t659, i32 0, i32 8 - %t661 = getelementptr inbounds { ptr, i64, i64 }, ptr %t660, i32 0, i32 1 - %t662 = load i64, ptr %t661 - store i64 0, ptr %a663 - br label %for.cond3714 -for.cond3714: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t662 - br i1 %t665, label %for.body3715, label %for.end3717 -for.body3715: - %t666 = load ptr, ptr %a1 - %t667 = icmp eq ptr %t666, null - br i1 %t667, label %panic3718, label %ok3719 -panic3718: - call void @finch_panic(ptr @.str.2317, i64 1575, ptr @.str.2318) - unreachable -ok3719: - %t668 = getelementptr inbounds %S.gen.Gen, ptr %t666, i32 0, i32 0 - %t669 = load i64, ptr %a629 - %t670 = load { ptr, i64, i64 }, ptr %t668 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range3720, label %inrange3721 -range3720: - call void @finch_panic_index(ptr @.str.2319, i64 1575, i64 %t669, i64 %t671) - unreachable -inrange3721: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.ast.Program, ptr %t673, i64 %t669 - %t675 = getelementptr inbounds %S.ast.Program, ptr %t674, i32 0, i32 8 - %t676 = load i64, ptr %a663 - %t677 = load { ptr, i64, i64 }, ptr %t675 - %t678 = extractvalue { ptr, i64, i64 } %t677, 1 - %t679 = icmp uge i64 %t676, %t678 - br i1 %t679, label %range3722, label %inrange3723 -range3722: - call void @finch_panic_index(ptr @.str.2320, i64 1575, i64 %t676, i64 %t678) - unreachable -inrange3723: - %t680 = extractvalue { ptr, i64, i64 } %t677, 0 - %t681 = getelementptr inbounds %S.ast.Node, ptr %t680, i64 %t676 - %t682 = load %S.ast.Node, ptr %t681 - store %S.ast.Node %t682, ptr %a683 - call void @finch.copy.S_ast_Node(ptr %a684, ptr %a683) - %t685 = load %S.ast.Node, ptr %a684 - store %S.ast.Node %t685, ptr %a686 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t688 = getelementptr inbounds { ptr, i64, i64 }, ptr %t687, i32 0, i32 1 - %t689 = load i64, ptr %t688 - %t690 = icmp sgt i64 %t689, 0 - br i1 %t690, label %then3724, label %endif3726 -then3724: - %t691 = load ptr, ptr %a1 - %t692 = load ptr, ptr %a1 - %t693 = icmp eq ptr %t692, null - br i1 %t693, label %panic3727, label %ok3728 -panic3727: - call void @finch_panic(ptr @.str.2321, i64 1578, ptr @.str.2322) - unreachable -ok3728: - %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 - %t695 = load { ptr, i64, i64 }, ptr %t694 - %t696 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t697 = load { ptr, i64, i64 }, ptr %t696 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t699 = load { ptr, i64, i64 }, ptr %t698 - %t700 = call i64 @finch.gen.findTemplate(ptr %t691, { ptr, i64, i64 } %t695, { ptr, i64, i64 } %t697, { ptr, i64, i64 } %t699, i1 false) - %t701 = icmp sge i64 %t700, 0 - br i1 %t701, label %then3729, label %endif3731 -then3729: - %t702 = load ptr, ptr %a1 - %t703 = load %S.ast.Node, ptr %a686 - %t704 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t705 = load { ptr, i64, i64 }, ptr %t704 - store { ptr, i64, i64 } { ptr @.str.2323, i64 10, i64 0 }, 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 - store { ptr, i64, i64 } %t709, ptr %a711 - store { ptr, i64, i64 } { ptr @.str.2324, i64 18, i64 0 }, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t709, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - call void @finch.gen.fail(ptr %t702, %S.ast.Node %t703, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a715 - call void @finch_str_drop(ptr %a715) - br label %endif3731 -endif3731: - %t716 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t717 = getelementptr inbounds { ptr, i64, i64 }, ptr %t716, i32 0, i32 1 - %t718 = load i64, ptr %t717 - %t719 = icmp sgt i64 %t718, 0 - br label %logic.from3732 -logic.from3732: - br i1 %t719, label %logic.rhs3733, label %logic.end3734 -logic.rhs3733: - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = icmp eq ptr %t721, null - br i1 %t722, label %panic3735, label %ok3736 -panic3735: - call void @finch_panic(ptr @.str.2325, i64 1581, ptr @.str.2326) - unreachable -ok3736: - %t723 = getelementptr inbounds %S.gen.Gen, ptr %t721, i32 0, i32 14 - %t724 = load { ptr, i64, i64 }, ptr %t723 - %t725 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t726 = load { ptr, i64, i64 }, ptr %t725 - %t727 = call i64 @finch.gen.findTemplate(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t726, { ptr, i64, i64 } { ptr @.str.2327, i64 0, i64 0 }, i1 true) - %t728 = icmp slt i64 %t727, 0 - br label %logic.rend3737 -logic.rend3737: - br label %logic.end3734 -logic.end3734: - %t729 = phi i1 [ false, %logic.from3732 ], [ %t728, %logic.rend3737 ] - br i1 %t729, label %then3738, label %endif3740 -then3738: - %t730 = load ptr, ptr %a1 - %t731 = load %S.ast.Node, ptr %a686 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t733 = load { ptr, i64, i64 }, ptr %t732 - store { ptr, i64, i64 } { ptr @.str.2328, i64 34, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.2329, i64 53, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - call void @finch.gen.fail(ptr %t730, %S.ast.Node %t731, { ptr, i64, i64 } %t742) - store { ptr, i64, i64 } %t742, ptr %a743 - call void @finch_str_drop(ptr %a743) - br label %endif3740 -endif3740: - %t744 = load ptr, ptr %a1 - %t745 = icmp eq ptr %t744, null - br i1 %t745, label %panic3741, label %ok3742 -panic3741: - call void @finch_panic(ptr @.str.2330, i64 1584, ptr @.str.2331) - unreachable -ok3742: - %t746 = getelementptr inbounds %S.gen.Gen, ptr %t744, i32 0, i32 17 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i32 0, i32 1 - %t748 = load ptr, ptr %a1 - %t749 = icmp eq ptr %t748, null - br i1 %t749, label %panic3743, label %ok3744 -panic3743: - call void @finch_panic(ptr @.str.2332, i64 1584, ptr @.str.2333) - unreachable -ok3744: - %t750 = getelementptr inbounds %S.gen.Gen, ptr %t748, i32 0, i32 14 - %t751 = load { ptr, i64, i64 }, ptr %t750 - store { ptr, i64, i64 } %t751, ptr %a752 - call void @finch_str_copy(ptr %a753, ptr %a752) - %t754 = load { ptr, i64, i64 }, ptr %a753 - %t755 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t754, 0 - %t756 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t757 = load { ptr, i64, i64 }, ptr %t756 - store { ptr, i64, i64 } %t757, ptr %a758 - call void @finch_str_copy(ptr %a759, ptr %a758) - %t760 = load { ptr, i64, i64 }, ptr %a759 - %t761 = insertvalue %S.gen.Template %t755, { ptr, i64, i64 } %t760, 1 - %t762 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t763 = load { ptr, i64, i64 }, ptr %t762 - store { ptr, i64, i64 } %t763, ptr %a764 - call void @finch_str_copy(ptr %a765, ptr %a764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - %t767 = insertvalue %S.gen.Template %t761, { ptr, i64, i64 } %t766, 2 - %t768 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t769 = load { ptr, i64, i64 }, ptr %t768 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch.copy.arr_str(ptr %a771, ptr %a770) - %t772 = load { ptr, i64, i64 }, ptr %a771 - %t773 = insertvalue %S.gen.Template %t767, { ptr, i64, i64 } %t772, 3 - %t774 = load i64, ptr %a629 - %t775 = insertvalue %S.gen.Template %t773, i64 %t774, 4 - %t776 = load i64, ptr %a663 - %t777 = insertvalue %S.gen.Template %t775, i64 %t776, 5 - %t778 = load i64, ptr %t747 - %t779 = add i64 %t778, 1 - call void @finch_arr_reserve(ptr %t746, i64 %t779, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t780 = load ptr, ptr %t746 - %t781 = getelementptr inbounds %S.gen.Template, ptr %t780, i64 %t778 - store %S.gen.Template %t777, ptr %t781 - store i64 %t779, ptr %t747 - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -endif3726: - %t782 = load ptr, ptr %a1 - %t783 = icmp eq ptr %t782, null - br i1 %t783, label %panic3745, label %ok3746 -panic3745: - call void @finch_panic(ptr @.str.2334, i64 1587, ptr @.str.2335) - unreachable -ok3746: - %t784 = getelementptr inbounds %S.gen.Gen, ptr %t782, i32 0, i32 14 - %t785 = load { ptr, i64, i64 }, ptr %t784 - store { ptr, i64, i64 } %t785, ptr %a786 - call void @finch_str_copy(ptr %a787, ptr %a786) - %t788 = load { ptr, i64, i64 }, ptr %a787 - store { ptr, i64, i64 } %t788, ptr %a789 - store i1 false, ptr %a790 - %t791 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t792 = getelementptr inbounds { ptr, i64, i64 }, ptr %t791, i32 0, i32 1 - %t793 = load i64, ptr %t792 - %t794 = icmp sgt i64 %t793, 0 - br label %logic.from3747 -logic.from3747: - br i1 %t794, label %logic.rhs3748, label %logic.end3749 -logic.rhs3748: - %t795 = load ptr, ptr %a1 - %t796 = load ptr, ptr %a1 - %t797 = icmp eq ptr %t796, null - br i1 %t797, label %panic3750, label %ok3751 -panic3750: - call void @finch_panic(ptr @.str.2336, i64 1589, ptr @.str.2337) - unreachable -ok3751: - %t798 = getelementptr inbounds %S.gen.Gen, ptr %t796, i32 0, i32 14 - %t799 = load { ptr, i64, i64 }, ptr %t798 - %t800 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - %t802 = call i64 @finch.gen.findEnum(ptr %t795, { ptr, i64, i64 } %t799, { ptr, i64, i64 } %t801) - %t803 = icmp sge i64 %t802, 0 - br label %logic.rend3752 -logic.rend3752: - br label %logic.end3749 -logic.end3749: - %t804 = phi i1 [ false, %logic.from3747 ], [ %t803, %logic.rend3752 ] - br i1 %t804, label %then3753, label %else3754 -then3753: - store i1 true, ptr %a790 - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a789 - %t807 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t808 = load { ptr, i64, i64 }, ptr %t807 - %t809 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %t809 - %t811 = call i64 @finch.gen.findMethod(ptr %t805, { ptr, i64, i64 } %t806, { ptr, i64, i64 } %t808, { ptr, i64, i64 } %t810) - %t812 = icmp sge i64 %t811, 0 - br i1 %t812, label %then3756, label %endif3758 -then3756: - %t813 = load ptr, ptr %a1 - %t814 = load %S.ast.Node, ptr %a686 - %t815 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } { ptr @.str.2338, i64 11, i64 0 }, ptr %a818 - store { ptr, i64, i64 } %t816, ptr %a819 - call void @finch_str_concat(ptr %a817, ptr %a818, ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a817 - store { ptr, i64, i64 } %t820, ptr %a822 - store { ptr, i64, i64 } { ptr @.str.2339, i64 1, i64 0 }, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - store { ptr, i64, i64 } %t820, ptr %a824 - call void @finch_str_drop(ptr %a824) - %t825 = load { ptr, i64, i64 }, ptr %a821 - %t826 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t827 = load { ptr, i64, i64 }, ptr %t826 - store { ptr, i64, i64 } %t825, ptr %a829 - store { ptr, i64, i64 } %t827, ptr %a830 - call void @finch_str_concat(ptr %a828, ptr %a829, ptr %a830) - store { ptr, i64, i64 } %t825, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a828 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.2340, i64 17, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.fail(ptr %t813, %S.ast.Node %t814, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - br label %endif3758 -endif3758: - br label %endif3755 -else3754: - %t839 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t840 = getelementptr inbounds { ptr, i64, i64 }, ptr %t839, i32 0, i32 1 - %t841 = load i64, ptr %t840 - %t842 = icmp sgt i64 %t841, 0 - br i1 %t842, label %then3759, label %else3760 -then3759: - %t843 = load ptr, ptr %a1 - %t844 = load ptr, ptr %a1 - %t845 = icmp eq ptr %t844, null - br i1 %t845, label %panic3762, label %ok3763 -panic3762: - call void @finch_panic(ptr @.str.2341, i64 1595, ptr @.str.2342) - unreachable -ok3763: - %t846 = getelementptr inbounds %S.gen.Gen, ptr %t844, i32 0, i32 14 - %t847 = load { ptr, i64, i64 }, ptr %t846 - %t848 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t849 = load { ptr, i64, i64 }, ptr %t848 - %t850 = call i64 @finch.gen.findStruct(ptr %t843, { ptr, i64, i64 } %t847, { ptr, i64, i64 } %t849) - store i64 %t850, ptr %a851 - %t852 = load i64, ptr %a851 - %t853 = icmp slt i64 %t852, 0 - br label %logic.from3764 -logic.from3764: - br i1 %t853, label %logic.rhs3765, label %logic.end3766 -logic.rhs3765: - %t854 = load ptr, ptr %a1 - %t855 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t856 = load { ptr, i64, i64 }, ptr %t855 - %t857 = call i64 @finch.gen.findStruct(ptr %t854, { ptr, i64, i64 } { ptr @.str.2343, i64 1, i64 0 }, { ptr, i64, i64 } %t856) - %t858 = icmp sge i64 %t857, 0 - br label %logic.rend3767 -logic.rend3767: - br label %logic.end3766 -logic.end3766: - %t859 = phi i1 [ false, %logic.from3764 ], [ %t858, %logic.rend3767 ] - br i1 %t859, label %then3768, label %endif3770 -then3768: - %t860 = load ptr, ptr %a1 - %t861 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t862 = load { ptr, i64, i64 }, ptr %t861 - %t863 = call i64 @finch.gen.findStruct(ptr %t860, { ptr, i64, i64 } { ptr @.str.2344, i64 1, i64 0 }, { ptr, i64, i64 } %t862) - store i64 %t863, ptr %a851 - %t864 = load { ptr, i64, i64 }, ptr %a789 - store { ptr, i64, i64 } { ptr @.str.2345, i64 1, i64 0 }, ptr %a789 - store { ptr, i64, i64 } %t864, ptr %a865 - call void @finch_str_drop(ptr %a865) - br label %endif3770 -endif3770: - %t866 = load i64, ptr %a851 - %t867 = icmp slt i64 %t866, 0 - br i1 %t867, label %then3771, label %endif3773 -then3771: - %t868 = load ptr, ptr %a1 - %t869 = load %S.ast.Node, ptr %a686 - %t870 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t871 = load { ptr, i64, i64 }, ptr %t870 - store { ptr, i64, i64 } { ptr @.str.2346, i64 26, i64 0 }, ptr %a873 - store { ptr, i64, i64 } %t871, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a872 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.2347, i64 76, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.fail(ptr %t868, %S.ast.Node %t869, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - br label %endif3773 -endif3773: - %t882 = load ptr, ptr %a1 - %t883 = load { ptr, i64, i64 }, ptr %a789 - %t884 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t885 = load { ptr, i64, i64 }, ptr %t884 - %t886 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t887 = load { ptr, i64, i64 }, ptr %t886 - %t888 = call i64 @finch.gen.findMethod(ptr %t882, { ptr, i64, i64 } %t883, { ptr, i64, i64 } %t885, { ptr, i64, i64 } %t887) - %t889 = icmp sge i64 %t888, 0 - br i1 %t889, label %then3774, label %endif3776 -then3774: - %t890 = load ptr, ptr %a1 - %t891 = load %S.ast.Node, ptr %a686 - %t892 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t893 = load { ptr, i64, i64 }, ptr %t892 - store { ptr, i64, i64 } { ptr @.str.2348, i64 11, i64 0 }, 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.2349, i64 1, i64 0 }, ptr %a900 - call void @finch_str_concat(ptr %a898, ptr %a899, ptr %a900) - store { ptr, i64, i64 } %t897, ptr %a901 - call void @finch_str_drop(ptr %a901) - %t902 = load { ptr, i64, i64 }, ptr %a898 - %t903 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t902, ptr %a906 - store { ptr, i64, i64 } %t904, ptr %a907 - call void @finch_str_concat(ptr %a905, ptr %a906, ptr %a907) - store { ptr, i64, i64 } %t902, ptr %a908 - call void @finch_str_drop(ptr %a908) - %t909 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t909, ptr %a911 - store { ptr, i64, i64 } { ptr @.str.2350, i64 17, i64 0 }, ptr %a912 - call void @finch_str_concat(ptr %a910, ptr %a911, ptr %a912) - store { ptr, i64, i64 } %t909, ptr %a913 - call void @finch_str_drop(ptr %a913) - %t914 = load { ptr, i64, i64 }, ptr %a910 - call void @finch.gen.fail(ptr %t890, %S.ast.Node %t891, { ptr, i64, i64 } %t914) - store { ptr, i64, i64 } %t914, ptr %a915 - call void @finch_str_drop(ptr %a915) - br label %endif3776 -endif3776: - %t916 = load ptr, ptr %a1 - %t917 = icmp eq ptr %t916, null - br i1 %t917, label %panic3777, label %ok3778 -panic3777: - call void @finch_panic(ptr @.str.2351, i64 1606, ptr @.str.2352) - unreachable -ok3778: - %t918 = getelementptr inbounds %S.gen.Gen, ptr %t916, i32 0, i32 16 - %t919 = load i64, ptr %a851 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3779, label %inrange3780 -range3779: - call void @finch_panic_index(ptr @.str.2353, i64 1606, i64 %t919, i64 %t921) - unreachable -inrange3780: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.gen.StructDef, ptr %t923, i64 %t919 - %t925 = getelementptr inbounds %S.gen.StructDef, ptr %t924, i32 0, i32 11 - %t926 = getelementptr inbounds { ptr, i64, i64 }, ptr %t925, i32 0, i32 1 - %t927 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t928 = load { ptr, i64, i64 }, ptr %t927 - store i64 -1, ptr %a929 - %t930 = load i64, ptr %t926 - %t931 = load ptr, ptr %t925 - store i64 0, ptr %a932 - br label %find.cond3781 -find.cond3781: - %t933 = load i64, ptr %a932 - %t934 = icmp slt i64 %t933, %t930 - br i1 %t934, label %find.body3782, label %find.end3785 -find.body3782: - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t931, i64 %t933 - %t936 = load { ptr, i64, i64 }, ptr %t935 - store { ptr, i64, i64 } %t936, ptr %a937 - store { ptr, i64, i64 } %t928, ptr %a938 - %t939 = call i32 @finch_str_eq(ptr %a937, ptr %a938) - %t940 = icmp ne i32 %t939, 0 - br i1 %t940, label %find.hit3783, label %find.next3784 -find.hit3783: - store i64 %t933, ptr %a929 - br label %find.end3785 -find.next3784: - %t941 = add i64 %t933, 1 - store i64 %t941, ptr %a932 - br label %find.cond3781 -find.end3785: - %t942 = load i64, ptr %a929 - %t943 = icmp sge i64 %t942, 0 - br i1 %t943, label %then3786, label %endif3788 -then3786: - %t944 = load ptr, ptr %a1 - %t945 = load %S.ast.Node, ptr %a686 - %t946 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t947 = load { ptr, i64, i64 }, ptr %t946 - store { ptr, i64, i64 } { ptr @.str.2354, i64 11, i64 0 }, ptr %a949 - store { ptr, i64, i64 } %t947, ptr %a950 - call void @finch_str_concat(ptr %a948, ptr %a949, ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a948 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.2355, i64 28, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.2356, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - call void @finch.gen.fail(ptr %t944, %S.ast.Node %t945, { ptr, i64, i64 } %t968) - store { ptr, i64, i64 } %t968, ptr %a969 - call void @finch_str_drop(ptr %a969) - br label %endif3788 -endif3788: - br label %endif3761 -else3760: - %t970 = load ptr, ptr %a1 - %t971 = load ptr, ptr %a1 - %t972 = icmp eq ptr %t971, null - br i1 %t972, label %panic3789, label %ok3790 -panic3789: - call void @finch_panic(ptr @.str.2357, i64 1610, ptr @.str.2358) - unreachable -ok3790: - %t973 = getelementptr inbounds %S.gen.Gen, ptr %t971, i32 0, i32 14 - %t974 = load { ptr, i64, i64 }, ptr %t973 - %t975 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t976 = load { ptr, i64, i64 }, ptr %t975 - %t977 = call i64 @finch.gen.findFn(ptr %t970, { ptr, i64, i64 } %t974, { ptr, i64, i64 } %t976) - %t978 = icmp sge i64 %t977, 0 - br i1 %t978, label %then3791, label %endif3793 -then3791: - %t979 = load ptr, ptr %a1 - %t980 = load %S.ast.Node, ptr %a686 - %t981 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t982 = load { ptr, i64, i64 }, ptr %t981 - store { ptr, i64, i64 } { ptr @.str.2359, i64 10, i64 0 }, ptr %a984 - store { ptr, i64, i64 } %t982, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - %t986 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } %t986, ptr %a988 - store { ptr, i64, i64 } { ptr @.str.2360, i64 18, i64 0 }, ptr %a989 - call void @finch_str_concat(ptr %a987, ptr %a988, ptr %a989) - store { ptr, i64, i64 } %t986, ptr %a990 - call void @finch_str_drop(ptr %a990) - %t991 = load { ptr, i64, i64 }, ptr %a987 - call void @finch.gen.fail(ptr %t979, %S.ast.Node %t980, { ptr, i64, i64 } %t991) - store { ptr, i64, i64 } %t991, ptr %a992 - call void @finch_str_drop(ptr %a992) - br label %endif3793 -endif3793: - %t993 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t994) - br i1 %t995, label %then3794, label %endif3796 -then3794: - %t996 = load ptr, ptr %a1 - %t997 = load %S.ast.Node, ptr %a686 - %t998 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t999 = load { ptr, i64, i64 }, ptr %t998 - store { ptr, i64, i64 } { ptr @.str.2361, i64 1, i64 0 }, ptr %a1001 - store { ptr, i64, i64 } %t999, ptr %a1002 - call void @finch_str_concat(ptr %a1000, ptr %a1001, ptr %a1002) - %t1003 = load { ptr, i64, i64 }, ptr %a1000 - store { ptr, i64, i64 } %t1003, ptr %a1005 - store { ptr, i64, i64 } { ptr @.str.2362, i64 43, i64 0 }, ptr %a1006 - call void @finch_str_concat(ptr %a1004, ptr %a1005, ptr %a1006) - store { ptr, i64, i64 } %t1003, ptr %a1007 - call void @finch_str_drop(ptr %a1007) - %t1008 = load { ptr, i64, i64 }, ptr %a1004 - call void @finch.gen.fail(ptr %t996, %S.ast.Node %t997, { ptr, i64, i64 } %t1008) - store { ptr, i64, i64 } %t1008, ptr %a1009 - call void @finch_str_drop(ptr %a1009) - br label %endif3796 -endif3796: - br label %endif3761 -endif3761: - br label %endif3755 -endif3755: - %t1010 = load ptr, ptr %a1 - %t1011 = icmp eq ptr %t1010, null - br i1 %t1011, label %panic3797, label %ok3798 -panic3797: - call void @finch_panic(ptr @.str.2363, i64 1617, ptr @.str.2364) - unreachable -ok3798: - %t1012 = getelementptr inbounds %S.gen.Gen, ptr %t1010, i32 0, i32 14 - %t1013 = load { ptr, i64, i64 }, ptr %t1012 - store { ptr, i64, i64 } %t1013, ptr %a1014 - call void @finch_str_copy(ptr %a1015, ptr %a1014) - %t1016 = load { ptr, i64, i64 }, ptr %a1015 - %t1017 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t1016, 0 - %t1018 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1019 = load { ptr, i64, i64 }, ptr %t1018 - store { ptr, i64, i64 } %t1019, ptr %a1020 - call void @finch_str_copy(ptr %a1021, ptr %a1020) - %t1022 = load { ptr, i64, i64 }, ptr %a1021 - %t1023 = insertvalue %S.gen.FnSig %t1017, { ptr, i64, i64 } %t1022, 1 - %t1024 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1025 = load { ptr, i64, i64 }, ptr %t1024 - store { ptr, i64, i64 } %t1025, ptr %a1026 - call void @finch_str_copy(ptr %a1027, ptr %a1026) - %t1028 = load { ptr, i64, i64 }, ptr %a1027 - %t1029 = insertvalue %S.gen.FnSig %t1023, { ptr, i64, i64 } %t1028, 2 - %t1030 = load { ptr, i64, i64 }, ptr %a789 - 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.FnSig %t1029, { ptr, i64, i64 } %t1033, 3 - %t1035 = load i1, ptr %a790 - %t1036 = insertvalue %S.gen.FnSig %t1034, i1 %t1035, 4 - %t1037 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1038 = load i1, ptr %t1037 - %t1039 = insertvalue %S.gen.FnSig %t1036, i1 %t1038, 5 - %t1040 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 7 - %t1041 = load i1, ptr %t1040 - %t1042 = insertvalue %S.gen.FnSig %t1039, i1 %t1041, 9 - %t1043 = load i64, ptr %a629 - %t1044 = insertvalue %S.gen.FnSig %t1042, i64 %t1043, 16 - %t1045 = load i64, ptr %a663 - %t1046 = insertvalue %S.gen.FnSig %t1044, i64 %t1045, 17 - store %S.gen.FnSig %t1046, ptr %a1047 - %t1048 = load ptr, ptr %a1 - %t1049 = icmp eq ptr %t1048, null - br i1 %t1049, label %panic3799, label %ok3800 -panic3799: - call void @finch_panic(ptr @.str.2366, i64 1618, ptr @.str.2367) - unreachable -ok3800: - %t1050 = getelementptr inbounds %S.gen.Gen, ptr %t1048, i32 0, i32 14 - %t1051 = load { ptr, i64, i64 }, ptr %t1050 - %t1052 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1051) - store { ptr, i64, i64 } { ptr @.str.2365, i64 7, i64 0 }, ptr %a1054 - store { ptr, i64, i64 } %t1052, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - store { ptr, i64, i64 } %t1057, ptr %a1059 - store { ptr, i64, i64 } { ptr @.str.2368, i64 1, i64 0 }, ptr %a1060 - call void @finch_str_concat(ptr %a1058, ptr %a1059, ptr %a1060) - store { ptr, i64, i64 } %t1057, ptr %a1061 - call void @finch_str_drop(ptr %a1061) - %t1062 = load { ptr, i64, i64 }, ptr %a1058 - %t1063 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - store { ptr, i64, i64 } %t1062, ptr %a1066 - store { ptr, i64, i64 } %t1064, ptr %a1067 - call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067) - store { ptr, i64, i64 } %t1062, ptr %a1068 - call void @finch_str_drop(ptr %a1068) - %t1069 = load { ptr, i64, i64 }, ptr %a1065 - %t1070 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1069, ptr %t1070 - store { ptr, i64, i64 } %t1071, ptr %a1072 - call void @finch_str_drop(ptr %a1072) - %t1073 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1074 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1073, i32 0, i32 1 - %t1075 = load i64, ptr %t1074 - %t1076 = icmp sgt i64 %t1075, 0 - br i1 %t1076, label %then3801, label %endif3803 -then3801: - %t1077 = load ptr, ptr %a1 - %t1078 = icmp eq ptr %t1077, null - br i1 %t1078, label %panic3804, label %ok3805 -panic3804: - call void @finch_panic(ptr @.str.2370, i64 1620, ptr @.str.2371) - unreachable -ok3805: - %t1079 = getelementptr inbounds %S.gen.Gen, ptr %t1077, i32 0, i32 14 - %t1080 = load { ptr, i64, i64 }, ptr %t1079 - %t1081 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1080) - store { ptr, i64, i64 } { ptr @.str.2369, i64 7, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - store { ptr, i64, i64 } %t1081, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1086, ptr %a1088 - store { ptr, i64, i64 } { ptr @.str.2372, i64 1, i64 0 }, ptr %a1089 - call void @finch_str_concat(ptr %a1087, ptr %a1088, ptr %a1089) - store { ptr, i64, i64 } %t1086, ptr %a1090 - call void @finch_str_drop(ptr %a1090) - %t1091 = load { ptr, i64, i64 }, ptr %a1087 - %t1092 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1093 = load { ptr, i64, i64 }, ptr %t1092 - store { ptr, i64, i64 } %t1091, ptr %a1095 - store { ptr, i64, i64 } %t1093, ptr %a1096 - call void @finch_str_concat(ptr %a1094, ptr %a1095, ptr %a1096) - store { ptr, i64, i64 } %t1091, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load { ptr, i64, i64 }, ptr %a1094 - store { ptr, i64, i64 } %t1098, ptr %a1100 - store { ptr, i64, i64 } { ptr @.str.2373, i64 1, i64 0 }, ptr %a1101 - call void @finch_str_concat(ptr %a1099, ptr %a1100, ptr %a1101) - store { ptr, i64, i64 } %t1098, ptr %a1102 - call void @finch_str_drop(ptr %a1102) - %t1103 = load { ptr, i64, i64 }, ptr %a1099 - %t1104 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1105 = load { ptr, i64, i64 }, ptr %t1104 - store { ptr, i64, i64 } %t1103, ptr %a1107 - store { ptr, i64, i64 } %t1105, ptr %a1108 - call void @finch_str_concat(ptr %a1106, ptr %a1107, ptr %a1108) - store { ptr, i64, i64 } %t1103, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - %t1110 = load { ptr, i64, i64 }, ptr %a1106 - %t1111 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1112 = load { ptr, i64, i64 }, ptr %t1111 - store { ptr, i64, i64 } %t1110, ptr %t1111 - store { ptr, i64, i64 } %t1112, ptr %a1113 - call void @finch_str_drop(ptr %a1113) - br label %endif3803 -endif3803: - %t1114 = load ptr, ptr %a1 - %t1115 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 5 - %t1116 = load %S.ast.Type, ptr %t1115 - %t1117 = load %S.ast.Node, ptr %a686 - %t1118 = call %S.ast.Type @finch.gen.resolve(ptr %t1114, %S.ast.Type %t1116, %S.ast.Node %t1117) - %t1119 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 12 - %t1120 = load %S.ast.Type, ptr %t1119 - store %S.ast.Type %t1118, ptr %t1119 - store %S.ast.Type %t1120, ptr %a1121 - call void @finch.drop.S_ast_Type(ptr %a1121) - %t1122 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1122, i32 0, i32 1 - %t1124 = load i64, ptr %t1123 - %t1125 = sub i64 %t1124, 1 - store i64 0, ptr %a1126 - br label %for.cond3806 -for.cond3806: - %t1127 = load i64, ptr %a1126 - %t1128 = icmp slt i64 %t1127, %t1125 - br i1 %t1128, label %for.body3807, label %for.end3809 -for.body3807: - %t1129 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1130 = load i64, ptr %a1126 - %t1131 = load { ptr, i64, i64 }, ptr %t1129 - %t1132 = extractvalue { ptr, i64, i64 } %t1131, 1 - %t1133 = icmp uge i64 %t1130, %t1132 - br i1 %t1133, label %range3810, label %inrange3811 -range3810: - call void @finch_panic_index(ptr @.str.2374, i64 1624, i64 %t1130, i64 %t1132) - unreachable -inrange3811: - %t1134 = extractvalue { ptr, i64, i64 } %t1131, 0 - %t1135 = getelementptr inbounds %S.ast.Node, ptr %t1134, i64 %t1130 - %t1136 = getelementptr inbounds %S.ast.Node, ptr %t1135, i32 0, i32 1 - %t1137 = load { ptr, i64, i64 }, ptr %t1136 - store { ptr, i64, i64 } %t1137, ptr %a1138 - store { ptr, i64, i64 } { ptr @.str.2375, i64 4, i64 0 }, ptr %a1139 - %t1140 = call i32 @finch_str_eq(ptr %a1138, ptr %a1139) - %t1141 = icmp ne i32 %t1140, 0 - br label %logic.from3812 -logic.from3812: - br i1 %t1141, label %logic.rhs3813, label %logic.end3814 -logic.rhs3813: - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1142, i32 0, i32 1 - %t1144 = load i64, ptr %t1143 - %t1145 = icmp sgt i64 %t1144, 0 - br label %logic.rend3815 -logic.rend3815: - br label %logic.end3814 -logic.end3814: - %t1146 = phi i1 [ false, %logic.from3812 ], [ %t1145, %logic.rend3815 ] - br i1 %t1146, label %then3816, label %endif3818 -then3816: - %t1147 = load ptr, ptr %a1 - %t1148 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1149 = load i64, ptr %a1126 - %t1150 = load { ptr, i64, i64 }, ptr %t1148 - %t1151 = extractvalue { ptr, i64, i64 } %t1150, 1 - %t1152 = icmp uge i64 %t1149, %t1151 - br i1 %t1152, label %range3819, label %inrange3820 -range3819: - call void @finch_panic_index(ptr @.str.2376, i64 1625, i64 %t1149, i64 %t1151) - unreachable -inrange3820: - %t1153 = extractvalue { ptr, i64, i64 } %t1150, 0 - %t1154 = getelementptr inbounds %S.ast.Node, ptr %t1153, i64 %t1149 - %t1155 = load %S.ast.Node, ptr %t1154 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1157 = load { ptr, i64, i64 }, ptr %t1156 - store { ptr, i64, i64 } { ptr @.str.2377, i64 22, i64 0 }, ptr %a1159 - store { ptr, i64, i64 } %t1157, ptr %a1160 - call void @finch_str_concat(ptr %a1158, ptr %a1159, ptr %a1160) - %t1161 = load { ptr, i64, i64 }, ptr %a1158 - store { ptr, i64, i64 } %t1161, ptr %a1163 - store { ptr, i64, i64 } { ptr @.str.2378, i64 24, i64 0 }, ptr %a1164 - call void @finch_str_concat(ptr %a1162, ptr %a1163, ptr %a1164) - store { ptr, i64, i64 } %t1161, ptr %a1165 - call void @finch_str_drop(ptr %a1165) - %t1166 = load { ptr, i64, i64 }, ptr %a1162 - call void @finch.gen.fail(ptr %t1147, %S.ast.Node %t1155, { ptr, i64, i64 } %t1166) - store { ptr, i64, i64 } %t1166, ptr %a1167 - call void @finch_str_drop(ptr %a1167) - br label %endif3818 -endif3818: - %t1168 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 13 - %t1169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1168, i32 0, i32 1 - %t1170 = load ptr, ptr %a1 - %t1171 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1172 = load i64, ptr %a1126 - %t1173 = load { ptr, i64, i64 }, ptr %t1171 - %t1174 = extractvalue { ptr, i64, i64 } %t1173, 1 - %t1175 = icmp uge i64 %t1172, %t1174 - br i1 %t1175, label %range3821, label %inrange3822 -range3821: - call void @finch_panic_index(ptr @.str.2379, i64 1627, i64 %t1172, i64 %t1174) - unreachable -inrange3822: - %t1176 = extractvalue { ptr, i64, i64 } %t1173, 0 - %t1177 = getelementptr inbounds %S.ast.Node, ptr %t1176, i64 %t1172 - %t1178 = getelementptr inbounds %S.ast.Node, ptr %t1177, i32 0, i32 5 - %t1179 = load %S.ast.Type, ptr %t1178 - %t1180 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1181 = load i64, ptr %a1126 - %t1182 = load { ptr, i64, i64 }, ptr %t1180 - %t1183 = extractvalue { ptr, i64, i64 } %t1182, 1 - %t1184 = icmp uge i64 %t1181, %t1183 - br i1 %t1184, label %range3823, label %inrange3824 -range3823: - call void @finch_panic_index(ptr @.str.2380, i64 1627, i64 %t1181, i64 %t1183) - unreachable -inrange3824: - %t1185 = extractvalue { ptr, i64, i64 } %t1182, 0 - %t1186 = getelementptr inbounds %S.ast.Node, ptr %t1185, i64 %t1181 - %t1187 = load %S.ast.Node, ptr %t1186 - %t1188 = call %S.ast.Type @finch.gen.resolve(ptr %t1170, %S.ast.Type %t1179, %S.ast.Node %t1187) - %t1189 = load i64, ptr %t1169 - %t1190 = add i64 %t1189, 1 - call void @finch_arr_reserve(ptr %t1168, i64 %t1190, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1191 = load ptr, ptr %t1168 - %t1192 = getelementptr inbounds %S.ast.Type, ptr %t1191, i64 %t1189 - store %S.ast.Type %t1188, ptr %t1192 - store i64 %t1190, ptr %t1169 - %t1193 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 14 - %t1194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1193, i32 0, i32 1 - %t1195 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1196 = load i64, ptr %a1126 - %t1197 = load { ptr, i64, i64 }, ptr %t1195 - %t1198 = extractvalue { ptr, i64, i64 } %t1197, 1 - %t1199 = icmp uge i64 %t1196, %t1198 - br i1 %t1199, label %range3825, label %inrange3826 -range3825: - call void @finch_panic_index(ptr @.str.2381, i64 1628, i64 %t1196, i64 %t1198) - unreachable -inrange3826: - %t1200 = extractvalue { ptr, i64, i64 } %t1197, 0 - %t1201 = getelementptr inbounds %S.ast.Node, ptr %t1200, i64 %t1196 - %t1202 = getelementptr inbounds %S.ast.Node, ptr %t1201, i32 0, i32 1 - %t1203 = load { ptr, i64, i64 }, ptr %t1202 - store { ptr, i64, i64 } %t1203, ptr %a1204 - call void @finch_str_copy(ptr %a1205, ptr %a1204) - %t1206 = load { ptr, i64, i64 }, ptr %a1205 - %t1207 = load i64, ptr %t1194 - %t1208 = add i64 %t1207, 1 - call void @finch_arr_reserve(ptr %t1193, i64 %t1208, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1209 = load ptr, ptr %t1193 - %t1210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1209, i64 %t1207 - store { ptr, i64, i64 } %t1206, ptr %t1210 - store i64 %t1208, ptr %t1194 - br label %for.step3808 -for.step3808: - %t1211 = load i64, ptr %a1126 - %t1212 = add i64 %t1211, 1 - store i64 %t1212, ptr %a1126 - br label %for.cond3806 -for.end3809: - %t1213 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1214 = load i1, ptr %t1213 - br i1 %t1214, label %then3827, label %endif3829 -then3827: - %t1215 = load ptr, ptr %a1 - %t1216 = load %S.ast.Node, ptr %a686 - %t1217 = load %S.gen.FnSig, ptr %a1047 - call void @finch.gen.checkExport(ptr %t1215, %S.ast.Node %t1216, %S.gen.FnSig %t1217) - br label %endif3829 -endif3829: - %t1218 = load ptr, ptr %a1 - %t1219 = icmp eq ptr %t1218, null - br i1 %t1219, label %panic3830, label %ok3831 -panic3830: - call void @finch_panic(ptr @.str.2382, i64 1633, ptr @.str.2383) - unreachable -ok3831: - %t1220 = getelementptr inbounds %S.gen.Gen, ptr %t1218, i32 0, i32 15 - %t1221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1220, i32 0, i32 1 - %t1222 = load %S.gen.FnSig, ptr %a1047 - store %S.gen.FnSig %t1222, ptr %a1223 - call void @finch.copy.S_gen_FnSig(ptr %a1224, ptr %a1223) - %t1225 = load %S.gen.FnSig, ptr %a1224 - %t1226 = load i64, ptr %t1221 - %t1227 = add i64 %t1226, 1 - call void @finch_arr_reserve(ptr %t1220, i64 %t1227, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t1228 = load ptr, ptr %t1220 - %t1229 = getelementptr inbounds %S.gen.FnSig, ptr %t1228, i64 %t1226 - store %S.gen.FnSig %t1225, ptr %t1229 - store i64 %t1227, ptr %t1221 - call void @finch.drop.S_gen_FnSig(ptr %a1047) - call void @finch_str_drop(ptr %a789) - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -for.step3716: - %t1230 = load i64, ptr %a663 - %t1231 = add i64 %t1230, 1 - store i64 %t1231, ptr %a663 - br label %for.cond3714 -for.end3717: - br label %for.step3702 -for.step3702: - %t1232 = load i64, ptr %a629 - %t1233 = add i64 %t1232, 1 - store i64 %t1233, ptr %a629 - br label %for.cond3700 -for.end3703: - store i1 true, ptr %a1234 - br label %while.cond3832 -while.cond3832: - %t1235 = load i1, ptr %a1234 - br i1 %t1235, label %while.body3833, label %while.end3834 -while.body3833: - store i1 false, ptr %a1234 - %t1236 = load ptr, ptr %a1 - %t1237 = icmp eq ptr %t1236, null - br i1 %t1237, label %panic3835, label %ok3836 -panic3835: - call void @finch_panic(ptr @.str.2384, i64 1641, ptr @.str.2385) - unreachable -ok3836: - %t1238 = getelementptr inbounds %S.gen.Gen, ptr %t1236, i32 0, i32 15 - %t1239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1238, i32 0, i32 1 - %t1240 = load i64, ptr %t1239 - store i64 0, ptr %a1241 - br label %for.cond3837 -for.cond3837: - %t1242 = load i64, ptr %a1241 - %t1243 = icmp slt i64 %t1242, %t1240 - br i1 %t1243, label %for.body3838, label %for.end3840 -for.body3838: - %t1244 = load ptr, ptr %a1 - %t1245 = icmp eq ptr %t1244, null - br i1 %t1245, label %panic3841, label %ok3842 -panic3841: - call void @finch_panic(ptr @.str.2386, i64 1642, ptr @.str.2387) - unreachable -ok3842: - %t1246 = getelementptr inbounds %S.gen.Gen, ptr %t1244, i32 0, i32 15 - %t1247 = load i64, ptr %a1241 - %t1248 = load { ptr, i64, i64 }, ptr %t1246 - %t1249 = extractvalue { ptr, i64, i64 } %t1248, 1 - %t1250 = icmp uge i64 %t1247, %t1249 - br i1 %t1250, label %range3843, label %inrange3844 -range3843: - call void @finch_panic_index(ptr @.str.2388, i64 1642, i64 %t1247, i64 %t1249) - unreachable -inrange3844: - %t1251 = extractvalue { ptr, i64, i64 } %t1248, 0 - %t1252 = getelementptr inbounds %S.gen.FnSig, ptr %t1251, i64 %t1247 - %t1253 = getelementptr inbounds %S.gen.FnSig, ptr %t1252, i32 0, i32 2 - %t1254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1253, i32 0, i32 1 - %t1255 = load i64, ptr %t1254 - %t1256 = icmp sgt i64 %t1255, 0 - br label %logic.from3845 -logic.from3845: - br i1 %t1256, label %logic.rhs3846, label %logic.end3847 -logic.rhs3846: - %t1257 = load ptr, ptr %a1 - %t1258 = icmp eq ptr %t1257, null - br i1 %t1258, label %panic3848, label %ok3849 -panic3848: - call void @finch_panic(ptr @.str.2389, i64 1642, ptr @.str.2390) - unreachable -ok3849: - %t1259 = getelementptr inbounds %S.gen.Gen, ptr %t1257, i32 0, i32 15 - %t1260 = load i64, ptr %a1241 - %t1261 = load { ptr, i64, i64 }, ptr %t1259 - %t1262 = extractvalue { ptr, i64, i64 } %t1261, 1 - %t1263 = icmp uge i64 %t1260, %t1262 - br i1 %t1263, label %range3850, label %inrange3851 -range3850: - call void @finch_panic_index(ptr @.str.2391, i64 1642, i64 %t1260, i64 %t1262) - unreachable -inrange3851: - %t1264 = extractvalue { ptr, i64, i64 } %t1261, 0 - %t1265 = getelementptr inbounds %S.gen.FnSig, ptr %t1264, i64 %t1260 - %t1266 = getelementptr inbounds %S.gen.FnSig, ptr %t1265, i32 0, i32 10 - %t1267 = load i1, ptr %t1266 - %t1268 = xor i1 %t1267, true - br label %logic.rend3852 -logic.rend3852: - br label %logic.end3847 -logic.end3847: - %t1269 = phi i1 [ false, %logic.from3845 ], [ %t1268, %logic.rend3852 ] - br i1 %t1269, label %then3853, label %endif3855 -then3853: - %t1270 = load ptr, ptr %a1 - %t1271 = icmp eq ptr %t1270, null - br i1 %t1271, label %panic3856, label %ok3857 -panic3856: - call void @finch_panic(ptr @.str.2392, i64 1643, ptr @.str.2393) - unreachable -ok3857: - %t1272 = getelementptr inbounds %S.gen.Gen, ptr %t1270, i32 0, i32 0 - %t1273 = load ptr, ptr %a1 - %t1274 = icmp eq ptr %t1273, null - br i1 %t1274, label %panic3858, label %ok3859 -panic3858: - call void @finch_panic(ptr @.str.2394, i64 1643, ptr @.str.2395) - unreachable -ok3859: - %t1275 = getelementptr inbounds %S.gen.Gen, ptr %t1273, i32 0, i32 15 - %t1276 = load i64, ptr %a1241 - %t1277 = load { ptr, i64, i64 }, ptr %t1275 - %t1278 = extractvalue { ptr, i64, i64 } %t1277, 1 - %t1279 = icmp uge i64 %t1276, %t1278 - br i1 %t1279, label %range3860, label %inrange3861 -range3860: - call void @finch_panic_index(ptr @.str.2396, i64 1643, i64 %t1276, i64 %t1278) - unreachable -inrange3861: - %t1280 = extractvalue { ptr, i64, i64 } %t1277, 0 - %t1281 = getelementptr inbounds %S.gen.FnSig, ptr %t1280, i64 %t1276 - %t1282 = getelementptr inbounds %S.gen.FnSig, ptr %t1281, i32 0, i32 16 - %t1283 = load i64, ptr %t1282 - %t1284 = load { ptr, i64, i64 }, ptr %t1272 - %t1285 = extractvalue { ptr, i64, i64 } %t1284, 1 - %t1286 = icmp uge i64 %t1283, %t1285 - br i1 %t1286, label %range3862, label %inrange3863 -range3862: - call void @finch_panic_index(ptr @.str.2397, i64 1643, i64 %t1283, i64 %t1285) - unreachable -inrange3863: - %t1287 = extractvalue { ptr, i64, i64 } %t1284, 0 - %t1288 = getelementptr inbounds %S.ast.Program, ptr %t1287, i64 %t1283 - %t1289 = getelementptr inbounds %S.ast.Program, ptr %t1288, i32 0, i32 8 - %t1290 = load ptr, ptr %a1 - %t1291 = icmp eq ptr %t1290, null - br i1 %t1291, label %panic3864, label %ok3865 -panic3864: - call void @finch_panic(ptr @.str.2398, i64 1643, ptr @.str.2399) - unreachable -ok3865: - %t1292 = getelementptr inbounds %S.gen.Gen, ptr %t1290, i32 0, i32 15 - %t1293 = load i64, ptr %a1241 - %t1294 = load { ptr, i64, i64 }, ptr %t1292 - %t1295 = extractvalue { ptr, i64, i64 } %t1294, 1 - %t1296 = icmp uge i64 %t1293, %t1295 - br i1 %t1296, label %range3866, label %inrange3867 -range3866: - call void @finch_panic_index(ptr @.str.2400, i64 1643, i64 %t1293, i64 %t1295) - unreachable -inrange3867: - %t1297 = extractvalue { ptr, i64, i64 } %t1294, 0 - %t1298 = getelementptr inbounds %S.gen.FnSig, ptr %t1297, i64 %t1293 - %t1299 = getelementptr inbounds %S.gen.FnSig, ptr %t1298, i32 0, i32 17 - %t1300 = load i64, ptr %t1299 - %t1301 = load { ptr, i64, i64 }, ptr %t1289 - %t1302 = extractvalue { ptr, i64, i64 } %t1301, 1 - %t1303 = icmp uge i64 %t1300, %t1302 - br i1 %t1303, label %range3868, label %inrange3869 -range3868: - call void @finch_panic_index(ptr @.str.2401, i64 1643, i64 %t1300, i64 %t1302) - unreachable -inrange3869: - %t1304 = extractvalue { ptr, i64, i64 } %t1301, 0 - %t1305 = getelementptr inbounds %S.ast.Node, ptr %t1304, i64 %t1300 - %t1306 = load %S.ast.Node, ptr %t1305 - store %S.ast.Node %t1306, ptr %a1307 - call void @finch.copy.S_ast_Node(ptr %a1308, ptr %a1307) - %t1309 = load %S.ast.Node, ptr %a1308 - store %S.ast.Node %t1309, ptr %a1310 - %t1311 = load ptr, ptr %a1 - %t1312 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1313 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1313, i32 0, i32 1 - %t1315 = load i64, ptr %t1314 - %t1316 = sub i64 %t1315, 1 - %t1317 = load { ptr, i64, i64 }, ptr %t1312 - %t1318 = extractvalue { ptr, i64, i64 } %t1317, 1 - %t1319 = icmp uge i64 %t1316, %t1318 - br i1 %t1319, label %range3870, label %inrange3871 -range3870: - call void @finch_panic_index(ptr @.str.2403, i64 1644, i64 %t1316, i64 %t1318) - unreachable -inrange3871: - %t1320 = extractvalue { ptr, i64, i64 } %t1317, 0 - %t1321 = getelementptr inbounds %S.ast.Node, ptr %t1320, i64 %t1316 - %t1322 = load %S.ast.Node, ptr %t1321 - %t1323 = call i1 @finch.gen.mutates(ptr %t1311, { ptr, i64, i64 } { ptr @.str.2402, i64 4, i64 0 }, %S.ast.Node %t1322) - br i1 %t1323, label %then3872, label %endif3874 -then3872: - %t1324 = load ptr, ptr %a1 - %t1325 = icmp eq ptr %t1324, null - br i1 %t1325, label %panic3875, label %ok3876 -panic3875: - call void @finch_panic(ptr @.str.2404, i64 1645, ptr @.str.2405) - unreachable -ok3876: - %t1326 = getelementptr inbounds %S.gen.Gen, ptr %t1324, i32 0, i32 15 - %t1327 = load i64, ptr %a1241 - %t1328 = load { ptr, i64, i64 }, ptr %t1326 - %t1329 = extractvalue { ptr, i64, i64 } %t1328, 1 - %t1330 = icmp uge i64 %t1327, %t1329 - br i1 %t1330, label %range3877, label %inrange3878 -range3877: - call void @finch_panic_index(ptr @.str.2406, i64 1645, i64 %t1327, i64 %t1329) - unreachable -inrange3878: - %t1331 = extractvalue { ptr, i64, i64 } %t1328, 0 - %t1332 = getelementptr inbounds %S.gen.FnSig, ptr %t1331, i64 %t1327 - %t1333 = getelementptr inbounds %S.gen.FnSig, ptr %t1332, i32 0, i32 10 - store i1 true, ptr %t1333 - %t1334 = load ptr, ptr %a1 - %t1335 = icmp eq ptr %t1334, null - br i1 %t1335, label %panic3879, label %ok3880 -panic3879: - call void @finch_panic(ptr @.str.2407, i64 1646, ptr @.str.2408) - unreachable -ok3880: - %t1336 = getelementptr inbounds %S.gen.Gen, ptr %t1334, i32 0, i32 24 - %t1337 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1336, i32 0, i32 1 - %t1338 = load ptr, ptr %a1 - %t1339 = icmp eq ptr %t1338, null - br i1 %t1339, label %panic3881, label %ok3882 -panic3881: - call void @finch_panic(ptr @.str.2409, i64 1646, ptr @.str.2410) - unreachable -ok3882: - %t1340 = getelementptr inbounds %S.gen.Gen, ptr %t1338, i32 0, i32 15 - %t1341 = load i64, ptr %a1241 - %t1342 = load { ptr, i64, i64 }, ptr %t1340 - %t1343 = extractvalue { ptr, i64, i64 } %t1342, 1 - %t1344 = icmp uge i64 %t1341, %t1343 - br i1 %t1344, label %range3883, label %inrange3884 -range3883: - call void @finch_panic_index(ptr @.str.2411, i64 1646, i64 %t1341, i64 %t1343) - unreachable -inrange3884: - %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 1 - %t1348 = load { ptr, i64, i64 }, ptr %t1347 - store { ptr, i64, i64 } %t1348, ptr %a1349 - call void @finch_str_copy(ptr %a1350, ptr %a1349) - %t1351 = load { ptr, i64, i64 }, ptr %a1350 - %t1352 = load i64, ptr %t1337 - %t1353 = add i64 %t1352, 1 - call void @finch_arr_reserve(ptr %t1336, i64 %t1353, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1354 = load ptr, ptr %t1336 - %t1355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1354, i64 %t1352 - store { ptr, i64, i64 } %t1351, ptr %t1355 - store i64 %t1353, ptr %t1337 - store i1 true, ptr %a1234 - br label %endif3874 -endif3874: - call void @finch.drop.S_ast_Node(ptr %a1310) - br label %endif3855 -endif3855: - br label %for.step3839 -for.step3839: - %t1356 = load i64, ptr %a1241 - %t1357 = add i64 %t1356, 1 - store i64 %t1357, ptr %a1241 - br label %for.cond3837 -for.end3840: - %t1358 = load ptr, ptr %a1 - %t1359 = icmp eq ptr %t1358, null - br i1 %t1359, label %panic3885, label %ok3886 -panic3885: - call void @finch_panic(ptr @.str.2412, i64 1651, ptr @.str.2413) - unreachable -ok3886: - %t1360 = getelementptr inbounds %S.gen.Gen, ptr %t1358, i32 0, i32 17 - %t1361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1360, i32 0, i32 1 - %t1362 = load i64, ptr %t1361 - store i64 0, ptr %a1363 - br label %for.cond3887 -for.cond3887: - %t1364 = load i64, ptr %a1363 - %t1365 = icmp slt i64 %t1364, %t1362 - br i1 %t1365, label %for.body3888, label %for.end3890 -for.body3888: - %t1366 = load ptr, ptr %a1 - %t1367 = icmp eq ptr %t1366, null - br i1 %t1367, label %panic3891, label %ok3892 -panic3891: - call void @finch_panic(ptr @.str.2414, i64 1652, ptr @.str.2415) - unreachable -ok3892: - %t1368 = getelementptr inbounds %S.gen.Gen, ptr %t1366, i32 0, i32 17 - %t1369 = load i64, ptr %a1363 - %t1370 = load { ptr, i64, i64 }, ptr %t1368 - %t1371 = extractvalue { ptr, i64, i64 } %t1370, 1 - %t1372 = icmp uge i64 %t1369, %t1371 - br i1 %t1372, label %range3893, label %inrange3894 -range3893: - call void @finch_panic_index(ptr @.str.2416, i64 1652, i64 %t1369, i64 %t1371) - unreachable -inrange3894: - %t1373 = extractvalue { ptr, i64, i64 } %t1370, 0 - %t1374 = getelementptr inbounds %S.gen.Template, ptr %t1373, i64 %t1369 - %t1375 = load %S.gen.Template, ptr %t1374 - store %S.gen.Template %t1375, ptr %a1376 - call void @finch.copy.S_gen_Template(ptr %a1377, ptr %a1376) - %t1378 = load %S.gen.Template, ptr %a1377 - store %S.gen.Template %t1378, ptr %a1379 - %t1380 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 2 - %t1381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1380, i32 0, i32 1 - %t1382 = load i64, ptr %t1381 - %t1383 = icmp sgt i64 %t1382, 0 - br label %logic.from3895 -logic.from3895: - br i1 %t1383, label %logic.rhs3896, label %logic.end3897 -logic.rhs3896: - %t1384 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 7 - %t1385 = load i1, ptr %t1384 - %t1386 = xor i1 %t1385, true - br label %logic.rend3898 -logic.rend3898: - br label %logic.end3897 -logic.end3897: - %t1387 = phi i1 [ false, %logic.from3895 ], [ %t1386, %logic.rend3898 ] - br i1 %t1387, label %then3899, label %endif3901 -then3899: - %t1388 = load ptr, ptr %a1 - %t1389 = icmp eq ptr %t1388, null - br i1 %t1389, label %panic3902, label %ok3903 -panic3902: - call void @finch_panic(ptr @.str.2417, i64 1654, ptr @.str.2418) - unreachable -ok3903: - %t1390 = getelementptr inbounds %S.gen.Gen, ptr %t1388, i32 0, i32 0 - %t1391 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 4 - %t1392 = load i64, ptr %t1391 - %t1393 = load { ptr, i64, i64 }, ptr %t1390 - %t1394 = extractvalue { ptr, i64, i64 } %t1393, 1 - %t1395 = icmp uge i64 %t1392, %t1394 - br i1 %t1395, label %range3904, label %inrange3905 -range3904: - call void @finch_panic_index(ptr @.str.2419, i64 1654, i64 %t1392, i64 %t1394) - unreachable -inrange3905: - %t1396 = extractvalue { ptr, i64, i64 } %t1393, 0 - %t1397 = getelementptr inbounds %S.ast.Program, ptr %t1396, i64 %t1392 - %t1398 = getelementptr inbounds %S.ast.Program, ptr %t1397, i32 0, i32 8 - %t1399 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 5 - %t1400 = load i64, ptr %t1399 - %t1401 = load { ptr, i64, i64 }, ptr %t1398 - %t1402 = extractvalue { ptr, i64, i64 } %t1401, 1 - %t1403 = icmp uge i64 %t1400, %t1402 - br i1 %t1403, label %range3906, label %inrange3907 -range3906: - call void @finch_panic_index(ptr @.str.2420, i64 1654, i64 %t1400, i64 %t1402) - unreachable -inrange3907: - %t1404 = extractvalue { ptr, i64, i64 } %t1401, 0 - %t1405 = getelementptr inbounds %S.ast.Node, ptr %t1404, i64 %t1400 - %t1406 = load %S.ast.Node, ptr %t1405 - store %S.ast.Node %t1406, ptr %a1407 - call void @finch.copy.S_ast_Node(ptr %a1408, ptr %a1407) - %t1409 = load %S.ast.Node, ptr %a1408 - store %S.ast.Node %t1409, ptr %a1410 - %t1411 = load ptr, ptr %a1 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1413 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1413, i32 0, i32 1 - %t1415 = load i64, ptr %t1414 - %t1416 = sub i64 %t1415, 1 - %t1417 = load { ptr, i64, i64 }, ptr %t1412 - %t1418 = extractvalue { ptr, i64, i64 } %t1417, 1 - %t1419 = icmp uge i64 %t1416, %t1418 - br i1 %t1419, label %range3908, label %inrange3909 -range3908: - call void @finch_panic_index(ptr @.str.2422, i64 1655, i64 %t1416, i64 %t1418) - unreachable -inrange3909: - %t1420 = extractvalue { ptr, i64, i64 } %t1417, 0 - %t1421 = getelementptr inbounds %S.ast.Node, ptr %t1420, i64 %t1416 - %t1422 = load %S.ast.Node, ptr %t1421 - %t1423 = call i1 @finch.gen.mutates(ptr %t1411, { ptr, i64, i64 } { ptr @.str.2421, i64 4, i64 0 }, %S.ast.Node %t1422) - br i1 %t1423, label %then3910, label %endif3912 -then3910: - %t1424 = load ptr, ptr %a1 - %t1425 = icmp eq ptr %t1424, null - br i1 %t1425, label %panic3913, label %ok3914 -panic3913: - call void @finch_panic(ptr @.str.2423, i64 1656, ptr @.str.2424) - unreachable -ok3914: - %t1426 = getelementptr inbounds %S.gen.Gen, ptr %t1424, i32 0, i32 17 - %t1427 = load i64, ptr %a1363 - %t1428 = load { ptr, i64, i64 }, ptr %t1426 - %t1429 = extractvalue { ptr, i64, i64 } %t1428, 1 - %t1430 = icmp uge i64 %t1427, %t1429 - br i1 %t1430, label %range3915, label %inrange3916 -range3915: - call void @finch_panic_index(ptr @.str.2425, i64 1656, i64 %t1427, i64 %t1429) - unreachable -inrange3916: - %t1431 = extractvalue { ptr, i64, i64 } %t1428, 0 - %t1432 = getelementptr inbounds %S.gen.Template, ptr %t1431, i64 %t1427 - %t1433 = getelementptr inbounds %S.gen.Template, ptr %t1432, i32 0, i32 7 - store i1 true, ptr %t1433 - %t1434 = load ptr, ptr %a1 - %t1435 = icmp eq ptr %t1434, null - br i1 %t1435, label %panic3917, label %ok3918 -panic3917: - call void @finch_panic(ptr @.str.2426, i64 1657, ptr @.str.2427) - unreachable -ok3918: - %t1436 = getelementptr inbounds %S.gen.Gen, ptr %t1434, i32 0, i32 24 - %t1437 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1436, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1439, ptr %a1440 - call void @finch_str_copy(ptr %a1441, ptr %a1440) - %t1442 = load { ptr, i64, i64 }, ptr %a1441 - %t1443 = load i64, ptr %t1437 - %t1444 = add i64 %t1443, 1 - call void @finch_arr_reserve(ptr %t1436, i64 %t1444, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1445 = load ptr, ptr %t1436 - %t1446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1445, i64 %t1443 - store { ptr, i64, i64 } %t1442, ptr %t1446 - store i64 %t1444, ptr %t1437 - store i1 true, ptr %a1234 - br label %endif3912 -endif3912: - call void @finch.drop.S_ast_Node(ptr %a1410) - br label %endif3901 -endif3901: - call void @finch.drop.S_gen_Template(ptr %a1379) - br label %for.step3889 -for.step3889: - %t1447 = load i64, ptr %a1363 - %t1448 = add i64 %t1447, 1 - store i64 %t1448, ptr %a1363 - br label %for.cond3887 -for.end3890: - br label %while.cond3832 -while.end3834: - %t1449 = load ptr, ptr %a1 - %t1450 = icmp eq ptr %t1449, null - br i1 %t1450, label %panic3919, label %ok3920 -panic3919: - call void @finch_panic(ptr @.str.2428, i64 1664, ptr @.str.2429) - unreachable -ok3920: - %t1451 = getelementptr inbounds %S.gen.Gen, ptr %t1449, i32 0, i32 15 - %t1452 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1451, i32 0, i32 1 - %t1453 = load i64, ptr %t1452 - store i64 0, ptr %a1454 - br label %for.cond3921 -for.cond3921: - %t1455 = load i64, ptr %a1454 - %t1456 = icmp slt i64 %t1455, %t1453 - br i1 %t1456, label %for.body3922, label %for.end3924 -for.body3922: - %t1457 = load ptr, ptr %a1 - %t1458 = icmp eq ptr %t1457, null - br i1 %t1458, label %panic3925, label %ok3926 -panic3925: - call void @finch_panic(ptr @.str.2430, i64 1665, ptr @.str.2431) - unreachable -ok3926: - %t1459 = getelementptr inbounds %S.gen.Gen, ptr %t1457, i32 0, i32 0 - %t1460 = load ptr, ptr %a1 - %t1461 = icmp eq ptr %t1460, null - br i1 %t1461, label %panic3927, label %ok3928 -panic3927: - call void @finch_panic(ptr @.str.2432, i64 1665, ptr @.str.2433) - unreachable -ok3928: - %t1462 = getelementptr inbounds %S.gen.Gen, ptr %t1460, i32 0, i32 15 - %t1463 = load i64, ptr %a1454 - %t1464 = load { ptr, i64, i64 }, ptr %t1462 - %t1465 = extractvalue { ptr, i64, i64 } %t1464, 1 - %t1466 = icmp uge i64 %t1463, %t1465 - br i1 %t1466, label %range3929, label %inrange3930 -range3929: - call void @finch_panic_index(ptr @.str.2434, i64 1665, i64 %t1463, i64 %t1465) - unreachable -inrange3930: - %t1467 = extractvalue { ptr, i64, i64 } %t1464, 0 - %t1468 = getelementptr inbounds %S.gen.FnSig, ptr %t1467, i64 %t1463 - %t1469 = getelementptr inbounds %S.gen.FnSig, ptr %t1468, i32 0, i32 16 - %t1470 = load i64, ptr %t1469 - %t1471 = load { ptr, i64, i64 }, ptr %t1459 - %t1472 = extractvalue { ptr, i64, i64 } %t1471, 1 - %t1473 = icmp uge i64 %t1470, %t1472 - br i1 %t1473, label %range3931, label %inrange3932 -range3931: - call void @finch_panic_index(ptr @.str.2435, i64 1665, i64 %t1470, i64 %t1472) - unreachable -inrange3932: - %t1474 = extractvalue { ptr, i64, i64 } %t1471, 0 - %t1475 = getelementptr inbounds %S.ast.Program, ptr %t1474, i64 %t1470 - %t1476 = getelementptr inbounds %S.ast.Program, ptr %t1475, i32 0, i32 8 - %t1477 = load ptr, ptr %a1 - %t1478 = icmp eq ptr %t1477, null - br i1 %t1478, label %panic3933, label %ok3934 -panic3933: - call void @finch_panic(ptr @.str.2436, i64 1665, ptr @.str.2437) - unreachable -ok3934: - %t1479 = getelementptr inbounds %S.gen.Gen, ptr %t1477, i32 0, i32 15 - %t1480 = load i64, ptr %a1454 - %t1481 = load { ptr, i64, i64 }, ptr %t1479 - %t1482 = extractvalue { ptr, i64, i64 } %t1481, 1 - %t1483 = icmp uge i64 %t1480, %t1482 - br i1 %t1483, label %range3935, label %inrange3936 -range3935: - call void @finch_panic_index(ptr @.str.2438, i64 1665, i64 %t1480, i64 %t1482) - unreachable -inrange3936: - %t1484 = extractvalue { ptr, i64, i64 } %t1481, 0 - %t1485 = getelementptr inbounds %S.gen.FnSig, ptr %t1484, i64 %t1480 - %t1486 = getelementptr inbounds %S.gen.FnSig, ptr %t1485, i32 0, i32 17 - %t1487 = load i64, ptr %t1486 - %t1488 = load { ptr, i64, i64 }, ptr %t1476 - %t1489 = extractvalue { ptr, i64, i64 } %t1488, 1 - %t1490 = icmp uge i64 %t1487, %t1489 - br i1 %t1490, label %range3937, label %inrange3938 -range3937: - call void @finch_panic_index(ptr @.str.2439, i64 1665, i64 %t1487, i64 %t1489) - unreachable -inrange3938: - %t1491 = extractvalue { ptr, i64, i64 } %t1488, 0 - %t1492 = getelementptr inbounds %S.ast.Node, ptr %t1491, i64 %t1487 - %t1493 = load %S.ast.Node, ptr %t1492 - store %S.ast.Node %t1493, ptr %a1494 - call void @finch.copy.S_ast_Node(ptr %a1495, ptr %a1494) - %t1496 = load %S.ast.Node, ptr %a1495 - store %S.ast.Node %t1496, ptr %a1497 - %t1498 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1499 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1499, i32 0, i32 1 - %t1501 = load i64, ptr %t1500 - %t1502 = sub i64 %t1501, 1 - %t1503 = load { ptr, i64, i64 }, ptr %t1498 - %t1504 = extractvalue { ptr, i64, i64 } %t1503, 1 - %t1505 = icmp uge i64 %t1502, %t1504 - br i1 %t1505, label %range3939, label %inrange3940 -range3939: - call void @finch_panic_index(ptr @.str.2440, i64 1666, i64 %t1502, i64 %t1504) - unreachable -inrange3940: - %t1506 = extractvalue { ptr, i64, i64 } %t1503, 0 - %t1507 = getelementptr inbounds %S.ast.Node, ptr %t1506, i64 %t1502 - %t1508 = load %S.ast.Node, ptr %t1507 - store %S.ast.Node %t1508, ptr %a1509 - call void @finch.copy.S_ast_Node(ptr %a1510, ptr %a1509) - %t1511 = load %S.ast.Node, ptr %a1510 - store %S.ast.Node %t1511, ptr %a1512 - %t1513 = load ptr, ptr %a1 - %t1514 = icmp eq ptr %t1513, null - br i1 %t1514, label %panic3941, label %ok3942 -panic3941: - call void @finch_panic(ptr @.str.2441, i64 1667, ptr @.str.2442) - unreachable -ok3942: - %t1515 = getelementptr inbounds %S.gen.Gen, ptr %t1513, i32 0, i32 15 - %t1516 = load i64, ptr %a1454 - %t1517 = load { ptr, i64, i64 }, ptr %t1515 - %t1518 = extractvalue { ptr, i64, i64 } %t1517, 1 - %t1519 = icmp uge i64 %t1516, %t1518 - br i1 %t1519, label %range3943, label %inrange3944 -range3943: - call void @finch_panic_index(ptr @.str.2443, i64 1667, i64 %t1516, i64 %t1518) - unreachable -inrange3944: - %t1520 = extractvalue { ptr, i64, i64 } %t1517, 0 - %t1521 = getelementptr inbounds %S.gen.FnSig, ptr %t1520, i64 %t1516 - %t1522 = getelementptr inbounds %S.gen.FnSig, ptr %t1521, i32 0, i32 13 - %t1523 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1522, i32 0, i32 1 - %t1524 = load i64, ptr %t1523 - store i64 0, ptr %a1525 - br label %for.cond3945 -for.cond3945: - %t1526 = load i64, ptr %a1525 - %t1527 = icmp slt i64 %t1526, %t1524 - br i1 %t1527, label %for.body3946, label %for.end3948 -for.body3946: - %t1528 = load ptr, ptr %a1 - %t1529 = icmp eq ptr %t1528, null - br i1 %t1529, label %panic3949, label %ok3950 -panic3949: - call void @finch_panic(ptr @.str.2444, i64 1668, ptr @.str.2445) - unreachable -ok3950: - %t1530 = getelementptr inbounds %S.gen.Gen, ptr %t1528, i32 0, i32 15 - %t1531 = load i64, ptr %a1454 - %t1532 = load { ptr, i64, i64 }, ptr %t1530 - %t1533 = extractvalue { ptr, i64, i64 } %t1532, 1 - %t1534 = icmp uge i64 %t1531, %t1533 - br i1 %t1534, label %range3951, label %inrange3952 -range3951: - call void @finch_panic_index(ptr @.str.2446, i64 1668, i64 %t1531, i64 %t1533) - unreachable -inrange3952: - %t1535 = extractvalue { ptr, i64, i64 } %t1532, 0 - %t1536 = getelementptr inbounds %S.gen.FnSig, ptr %t1535, i64 %t1531 - %t1537 = getelementptr inbounds %S.gen.FnSig, ptr %t1536, i32 0, i32 13 - %t1538 = load i64, ptr %a1525 - %t1539 = load { ptr, i64, i64 }, ptr %t1537 - %t1540 = extractvalue { ptr, i64, i64 } %t1539, 1 - %t1541 = icmp uge i64 %t1538, %t1540 - br i1 %t1541, label %range3953, label %inrange3954 -range3953: - call void @finch_panic_index(ptr @.str.2447, i64 1668, i64 %t1538, i64 %t1540) - unreachable -inrange3954: - %t1542 = extractvalue { ptr, i64, i64 } %t1539, 0 - %t1543 = getelementptr inbounds %S.ast.Type, ptr %t1542, i64 %t1538 - %t1544 = load %S.ast.Type, ptr %t1543 - store %S.ast.Type %t1544, ptr %a1545 - call void @finch.copy.S_ast_Type(ptr %a1546, ptr %a1545) - %t1547 = load %S.ast.Type, ptr %a1546 - store %S.ast.Type %t1547, ptr %a1548 - %t1549 = load ptr, ptr %a1 - %t1550 = icmp eq ptr %t1549, null - br i1 %t1550, label %panic3955, label %ok3956 -panic3955: - call void @finch_panic(ptr @.str.2448, i64 1669, ptr @.str.2449) - unreachable -ok3956: - %t1551 = getelementptr inbounds %S.gen.Gen, ptr %t1549, i32 0, i32 15 - %t1552 = load i64, ptr %a1454 - %t1553 = load { ptr, i64, i64 }, ptr %t1551 - %t1554 = extractvalue { ptr, i64, i64 } %t1553, 1 - %t1555 = icmp uge i64 %t1552, %t1554 - br i1 %t1555, label %range3957, label %inrange3958 -range3957: - call void @finch_panic_index(ptr @.str.2450, i64 1669, i64 %t1552, i64 %t1554) - unreachable -inrange3958: - %t1556 = extractvalue { ptr, i64, i64 } %t1553, 0 - %t1557 = getelementptr inbounds %S.gen.FnSig, ptr %t1556, i64 %t1552 - %t1558 = getelementptr inbounds %S.gen.FnSig, ptr %t1557, i32 0, i32 15 - %t1559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1558, i32 0, i32 1 - %t1560 = load ptr, ptr %a1 - %t1561 = load %S.ast.Type, ptr %a1548 - %t1562 = call i1 @finch.gen.owning(ptr %t1560, %S.ast.Type %t1561) - br label %logic.from3959 -logic.from3959: - br i1 %t1562, label %logic.rhs3960, label %logic.end3961 -logic.rhs3960: - %t1563 = load ptr, ptr %a1 - %t1564 = load ptr, ptr %a1 - %t1565 = icmp eq ptr %t1564, null - br i1 %t1565, label %panic3962, label %ok3963 -panic3962: - call void @finch_panic(ptr @.str.2451, i64 1669, ptr @.str.2452) - unreachable -ok3963: - %t1566 = getelementptr inbounds %S.gen.Gen, ptr %t1564, i32 0, i32 15 - %t1567 = load i64, ptr %a1454 - %t1568 = load { ptr, i64, i64 }, ptr %t1566 - %t1569 = extractvalue { ptr, i64, i64 } %t1568, 1 - %t1570 = icmp uge i64 %t1567, %t1569 - br i1 %t1570, label %range3964, label %inrange3965 -range3964: - call void @finch_panic_index(ptr @.str.2453, i64 1669, i64 %t1567, i64 %t1569) - unreachable -inrange3965: - %t1571 = extractvalue { ptr, i64, i64 } %t1568, 0 - %t1572 = getelementptr inbounds %S.gen.FnSig, ptr %t1571, i64 %t1567 - %t1573 = getelementptr inbounds %S.gen.FnSig, ptr %t1572, i32 0, i32 14 - %t1574 = load i64, ptr %a1525 - %t1575 = load { ptr, i64, i64 }, ptr %t1573 - %t1576 = extractvalue { ptr, i64, i64 } %t1575, 1 - %t1577 = icmp uge i64 %t1574, %t1576 - br i1 %t1577, label %range3966, label %inrange3967 -range3966: - call void @finch_panic_index(ptr @.str.2454, i64 1669, i64 %t1574, i64 %t1576) - unreachable -inrange3967: - %t1578 = extractvalue { ptr, i64, i64 } %t1575, 0 - %t1579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1578, i64 %t1574 - %t1580 = load { ptr, i64, i64 }, ptr %t1579 - %t1581 = load %S.ast.Node, ptr %a1512 - %t1582 = call i1 @finch.gen.mutates(ptr %t1563, { ptr, i64, i64 } %t1580, %S.ast.Node %t1581) - %t1583 = xor i1 %t1582, true - br label %logic.rend3968 -logic.rend3968: - br label %logic.end3961 -logic.end3961: - %t1584 = phi i1 [ false, %logic.from3959 ], [ %t1583, %logic.rend3968 ] - %t1585 = load i64, ptr %t1559 - %t1586 = add i64 %t1585, 1 - call void @finch_arr_reserve(ptr %t1558, i64 %t1586, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t1587 = load ptr, ptr %t1558 - %t1588 = getelementptr inbounds i1, ptr %t1587, i64 %t1585 - store i1 %t1584, ptr %t1588 - store i64 %t1586, ptr %t1559 - call void @finch.drop.S_ast_Type(ptr %a1548) - br label %for.step3947 -for.step3947: - %t1589 = load i64, ptr %a1525 - %t1590 = add i64 %t1589, 1 - store i64 %t1590, ptr %a1525 - br label %for.cond3945 -for.end3948: - call void @finch.drop.S_ast_Node(ptr %a1512) - call void @finch.drop.S_ast_Node(ptr %a1497) - br label %for.step3923 -for.step3923: - %t1591 = load i64, ptr %a1454 - %t1592 = add i64 %t1591, 1 - store i64 %t1592, ptr %a1454 - br label %for.cond3921 -for.end3924: - 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 %panic3969, label %ok3970 -panic3969: - call void @finch_panic(ptr @.str.2455, i64 1675, ptr @.str.2456) - unreachable -ok3970: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load i64, ptr %t9 - store i64 0, ptr %a11 - br label %for.cond3971 -for.cond3971: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body3972, label %for.end3974 -for.body3972: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3975, label %ok3976 -panic3975: - call void @finch_panic(ptr @.str.2457, i64 1676, ptr @.str.2458) - unreachable -ok3976: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 17 - %t17 = load i64, ptr %a11 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range3977, label %inrange3978 -range3977: - call void @finch_panic_index(ptr @.str.2459, i64 1676, i64 %t17, i64 %t19) - unreachable -inrange3978: - %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.from3979 -logic.from3979: - br i1 %t34, label %logic.rhs3980, label %logic.end3981 -logic.rhs3980: - %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.rend3982 -logic.rend3982: - br label %logic.end3981 -logic.end3981: - %t42 = phi i1 [ false, %logic.from3979 ], [ %t41, %logic.rend3982 ] - br label %logic.from3983 -logic.from3983: - br i1 %t42, label %logic.rhs3984, label %logic.end3985 -logic.rhs3984: - %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.rend3986 -logic.rend3986: - br label %logic.end3985 -logic.end3985: - %t50 = phi i1 [ false, %logic.from3983 ], [ %t49, %logic.rend3986 ] - br label %logic.from3987 -logic.from3987: - br i1 %t50, label %logic.rhs3988, label %logic.end3989 -logic.rhs3988: - %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.rend3990 -logic.rend3990: - br label %logic.end3989 -logic.end3989: - %t55 = phi i1 [ false, %logic.from3987 ], [ %t54, %logic.rend3990 ] - br i1 %t55, label %then3991, label %endif3993 -then3991: - %t56 = load i64, ptr %a11 - call void @finch.drop.S_gen_Template(ptr %a27) - ret i64 %t56 -endif3993: - call void @finch.drop.S_gen_Template(ptr %a27) - br label %for.step3973 -for.step3973: - %t57 = load i64, ptr %a11 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a11 - br label %for.cond3971 -for.end3974: - 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.cond3994 -each.cond3994: - %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.body3995, label %each.end3997 -each.body3995: - %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.step3996 -each.step3996: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %each.cond3994 -each.end3997: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2460, i64 2, i64 0 }, ptr %a22 - call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t24 -} - -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.gen.Template, align 16 - %a48 = alloca %S.gen.Template, align 16 - %a50 = alloca %S.gen.Template, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.2461, 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 %then3998, label %endif4000 -then3998: - %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.2462, 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.2463, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t24, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.2464, i64 34, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - br label %endif4000 -endif4000: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic4001, label %ok4002 -panic4001: - call void @finch_panic(ptr @.str.2465, i64 1698, ptr @.str.2466) - unreachable -ok4002: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 17 - %t40 = load i64, ptr %a10 - %t41 = load { ptr, i64, i64 }, ptr %t39 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 %t40, %t42 - br i1 %t43, label %range4003, label %inrange4004 -range4003: - call void @finch_panic_index(ptr @.str.2467, i64 1698, i64 %t40, i64 %t42) - unreachable -inrange4004: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds %S.gen.Template, ptr %t44, i64 %t40 - %t46 = load %S.gen.Template, ptr %t45 - store %S.gen.Template %t46, ptr %a47 - call void @finch.copy.S_gen_Template(ptr %a48, ptr %a47) - %t49 = load %S.gen.Template, ptr %a48 - store %S.gen.Template %t49, ptr %a50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 - %t55 = load i64, ptr %t54 - %t56 = icmp ne i64 %t52, %t55 - br i1 %t56, label %then4005, label %endif4007 -then4005: - %t57 = load ptr, ptr %a1 - %t58 = load %S.ast.Node, ptr %a5 - %t59 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2468, i64 7, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a60 - %t64 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - %t66 = load i64, ptr %t65 - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.2469, i64 24, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.2470, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2471, i64 2, i64 0 }, ptr %a93 - call void @finch_str_join(ptr %a94, ptr %t91, ptr %a93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t90, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t90, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t101, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2472, i64 11, i64 0 }, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t108 = load i64, ptr %t107 - call void @finch_str_from_int(ptr %a109, i64 %t108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t106, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t106, ptr %a114 - call void @finch_str_drop(ptr %a114) - store { ptr, i64, i64 } %t110, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t57, %S.ast.Node %t58, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif4007 -endif4007: - %t118 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.2473, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a119 - %t123 = load { ptr, i64, i64 }, ptr %a4 - %t124 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.2474, i64 1, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a2 - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = call i64 @finch.gen.findStruct(ptr %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139) - %t141 = icmp slt i64 %t140, 0 - br i1 %t141, label %then4008, label %endif4010 -then4008: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4011, label %ok4012 -panic4011: - call void @finch_panic(ptr @.str.2475, i64 1704, ptr @.str.2476) - unreachable -ok4012: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 16 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_copy(ptr %a148, ptr %a147) - %t149 = load { ptr, i64, i64 }, ptr %a148 - %t150 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t149, 0 - %t151 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t151, ptr %a152 - call void @finch_str_copy(ptr %a153, ptr %a152) - %t154 = load { ptr, i64, i64 }, ptr %a153 - %t155 = insertvalue %S.gen.StructDef %t150, { ptr, i64, i64 } %t154, 1 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_copy(ptr %a158, ptr %a157) - %t159 = load { ptr, i64, i64 }, ptr %a158 - %t160 = insertvalue %S.gen.StructDef %t155, { ptr, i64, i64 } %t159, 5 - %t161 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t162 = load { ptr, i64, i64 }, ptr %t161 - store { ptr, i64, i64 } %t162, ptr %a163 - call void @finch.copy.arr_str(ptr %a164, ptr %a163) - %t165 = load { ptr, i64, i64 }, ptr %a164 - %t166 = insertvalue %S.gen.StructDef %t160, { ptr, i64, i64 } %t165, 6 - %t167 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t167, ptr %a168 - call void @finch.copy.arr_S_ast_Type(ptr %a169, ptr %a168) - %t170 = load { ptr, i64, i64 }, ptr %a169 - %t171 = insertvalue %S.gen.StructDef %t166, { ptr, i64, i64 } %t170, 7 - %t172 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 4 - %t173 = load i64, ptr %t172 - %t174 = insertvalue %S.gen.StructDef %t171, i64 %t173, 13 - %t175 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 5 - %t176 = load i64, ptr %t175 - %t177 = insertvalue %S.gen.StructDef %t174, i64 %t176, 14 - %t178 = load i64, ptr %t145 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t144 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t178 - store %S.gen.StructDef %t177, ptr %t181 - store i64 %t179, ptr %t145 - %t182 = load ptr, ptr %a1 - %t183 = load ptr, ptr %a1 - %t184 = icmp eq ptr %t183, null - br i1 %t184, label %panic4013, label %ok4014 -panic4013: - call void @finch_panic(ptr @.str.2477, i64 1705, ptr @.str.2478) - unreachable -ok4014: - %t185 = getelementptr inbounds %S.gen.Gen, ptr %t183, i32 0, i32 16 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i32 0, i32 1 - %t187 = load i64, ptr %t186 - %t188 = sub i64 %t187, 1 - call void @finch.gen.resolveStruct(ptr %t182, i64 %t188) - br label %endif4010 -endif4010: - %t189 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2479, i64 6, i64 0 }, 0 - %t190 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_copy(ptr %a192, ptr %a191) - %t193 = load { ptr, i64, i64 }, ptr %a192 - %t194 = insertvalue %S.ast.Type %t189, { ptr, i64, i64 } %t193, 2 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_copy(ptr %a197, ptr %a196) - %t198 = load { ptr, i64, i64 }, ptr %a197 - %t199 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t198, 3 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Template(ptr %a50) - ret %S.ast.Type %t199 -} - -define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) { -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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i64, align 16 - %a61 = alloca i64, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a85 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca %S.gen.FnSig, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %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 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca %S.ast.Type, align 16 - %a327 = alloca %S.ast.Node, align 16 - %a328 = alloca %S.ast.Node, align 16 - %a330 = alloca %S.ast.Node, align 16 - %a335 = alloca i64, align 16 - %a357 = alloca %S.ast.Type, align 16 - %a361 = alloca %S.ast.Type, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.gen.FnSig, align 16 - %a453 = alloca %S.gen.FnSig, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4015, label %ok4016 -panic4015: - call void @finch_panic(ptr @.str.2480, i64 1712, ptr @.str.2481) - unreachable -ok4016: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4017, label %inrange4018 -range4017: - call void @finch_panic_index(ptr @.str.2482, i64 1712, i64 %t9, i64 %t11) - unreachable -inrange4018: - %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.2483, 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) - store { ptr, i64, i64 } %t25, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2484, i64 1, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then4019, label %else4020 -then4019: - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - %t51 = call i64 @finch.gen.findMethod(ptr %t44, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t50) - store i64 %t51, ptr %a52 - %t53 = load i64, ptr %a52 - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4022, label %endif4024 -then4022: - %t55 = load i64, ptr %a52 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t55 -endif4024: - br label %endif4021 -else4020: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t58 = load { ptr, i64, i64 }, ptr %t57 - %t59 = load { ptr, i64, i64 }, ptr %a39 - %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t58, { ptr, i64, i64 } %t59) - store i64 %t60, ptr %a61 - %t62 = load i64, ptr %a61 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then4025, label %endif4027 -then4025: - %t64 = load i64, ptr %a61 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t64 -endif4027: - br label %endif4021 -endif4021: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4028, label %ok4029 -panic4028: - call void @finch_panic(ptr @.str.2485, i64 1725, ptr @.str.2486) - unreachable -ok4029: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 0 - %t68 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t69 = load i64, ptr %t68 - %t70 = load { ptr, i64, i64 }, ptr %t67 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 %t69, %t71 - br i1 %t72, label %range4030, label %inrange4031 -range4030: - call void @finch_panic_index(ptr @.str.2487, i64 1725, i64 %t69, i64 %t71) - unreachable -inrange4031: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Program, ptr %t73, i64 %t69 - %t75 = getelementptr inbounds %S.ast.Program, ptr %t74, i32 0, i32 8 - %t76 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t77 = load i64, ptr %t76 - %t78 = load { ptr, i64, i64 }, ptr %t75 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 %t77, %t79 - br i1 %t80, label %range4032, label %inrange4033 -range4032: - call void @finch_panic_index(ptr @.str.2488, i64 1725, i64 %t77, i64 %t79) - unreachable -inrange4033: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t77 - %t83 = load %S.ast.Node, ptr %t82 - store %S.ast.Node %t83, ptr %a84 - call void @finch.copy.S_ast_Node(ptr %a85, ptr %a84) - %t86 = load %S.ast.Node, ptr %a85 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t92, 0 - %t94 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = insertvalue %S.gen.FnSig %t93, { ptr, i64, i64 } %t97, 1 - %t99 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t100 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_copy(ptr %a102, ptr %a101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - %t104 = insertvalue %S.gen.FnSig %t98, { ptr, i64, i64 } %t103, 3 - %t105 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - call void @finch.copy.arr_str(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = insertvalue %S.gen.FnSig %t104, { ptr, i64, i64 } %t109, 6 - %t111 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch.copy.arr_S_ast_Type(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.FnSig %t110, { ptr, i64, i64 } %t114, 7 - %t116 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_copy(ptr %a118, ptr %a117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - %t120 = insertvalue %S.gen.FnSig %t115, { ptr, i64, i64 } %t119, 8 - %t121 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 7 - %t122 = load i1, ptr %t121 - %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 9 - %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 - %t125 = load i1, ptr %t124 - %t126 = insertvalue %S.gen.FnSig %t123, i1 %t125, 10 - %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t128 = load i64, ptr %t127 - %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 16 - %t130 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.FnSig %t129, i64 %t131, 17 - store %S.gen.FnSig %t132, ptr %a133 - %t134 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t135) - store { ptr, i64, i64 } { ptr @.str.2489, i64 7, i64 0 }, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.2490, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = load { ptr, i64, i64 }, ptr %a39 - %t148 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t146, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t146, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - %t155 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t156 = load { ptr, i64, i64 }, ptr %t155 - store { ptr, i64, i64 } %t154, ptr %t155 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i32 0, i32 1 - %t160 = load i64, ptr %t159 - %t161 = icmp sgt i64 %t160, 0 - br i1 %t161, label %then4034, label %endif4036 -then4034: - %t162 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 1 - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_copy(ptr %a166, ptr %a165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - %t168 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t167, ptr %t164 - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t171 = load { ptr, i64, i64 }, ptr %t170 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 2 - store { ptr, i64, i64 } %t171, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %t172 - store { ptr, i64, i64 } %t175, ptr %t172 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2491, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a180 - %t184 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t183, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t183, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t190, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t195) - store { ptr, i64, i64 } { ptr @.str.2492, i64 7, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t201, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.2493, i64 1, i64 0 }, ptr %a204 - call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) - store { ptr, i64, i64 } %t201, ptr %a205 - call void @finch_str_drop(ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a202 - %t207 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t206, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t206, ptr %a213 - call void @finch_str_drop(ptr %a213) - store { ptr, i64, i64 } %t209, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.2494, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } %t220, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t220, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t227, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_drop(ptr %a230) - br label %endif4036 -endif4036: - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic4037, label %ok4038 -panic4037: - call void @finch_panic(ptr @.str.2495, i64 1734, ptr @.str.2496) - unreachable -ok4038: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 18 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch.copy.arr_str(ptr %a236, ptr %a235) - %t237 = load { ptr, i64, i64 }, ptr %a236 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic4039, label %ok4040 -panic4039: - call void @finch_panic(ptr @.str.2497, i64 1735, ptr @.str.2498) - unreachable -ok4040: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 19 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - call void @finch.copy.arr_S_ast_Type(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t245, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = icmp eq ptr %t247, null - br i1 %t248, label %panic4041, label %ok4042 -panic4041: - call void @finch_panic(ptr @.str.2499, i64 1736, ptr @.str.2500) - unreachable -ok4042: - %t249 = getelementptr inbounds %S.gen.Gen, ptr %t247, i32 0, i32 14 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - call void @finch_str_copy(ptr %a252, ptr %a251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic4043, label %ok4044 -panic4043: - call void @finch_panic(ptr @.str.2501, i64 1737, ptr @.str.2502) - unreachable -ok4044: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 20 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic4045, label %ok4046 -panic4045: - call void @finch_panic(ptr @.str.2503, i64 1738, ptr @.str.2504) - unreachable -ok4046: - %t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 18 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch.copy.arr_str(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t270, ptr %t267 - store { ptr, i64, i64 } %t271, ptr %a272 - call void @finch.drop.arr_str(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a3 - %t274 = load ptr, ptr %a1 - %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic4047, label %ok4048 -panic4047: - call void @finch_panic(ptr @.str.2505, i64 1739, ptr @.str.2506) - unreachable -ok4048: - %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 19 - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch.copy.arr_S_ast_Type(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch.drop.arr_S_ast_Type(ptr %a281) - %t282 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - %t284 = load ptr, ptr %a1 - %t285 = icmp eq ptr %t284, null - br i1 %t285, label %panic4049, label %ok4050 -panic4049: - call void @finch_panic(ptr @.str.2507, i64 1740, ptr @.str.2508) - unreachable -ok4050: - %t286 = getelementptr inbounds %S.gen.Gen, ptr %t284, i32 0, i32 14 - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_copy(ptr %a288, ptr %a287) - %t289 = load { ptr, i64, i64 }, ptr %a288 - %t290 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t289, ptr %t286 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } { ptr @.str.2509, i64 17, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.2510, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - %t303 = load ptr, ptr %a1 - %t304 = icmp eq ptr %t303, null - br i1 %t304, label %panic4051, label %ok4052 -panic4051: - call void @finch_panic(ptr @.str.2511, i64 1741, ptr @.str.2512) - unreachable -ok4052: - %t305 = getelementptr inbounds %S.gen.Gen, ptr %t303, i32 0, i32 20 - %t306 = load { ptr, i64, i64 }, ptr %t305 - store { ptr, i64, i64 } %t302, ptr %t305 - store { ptr, i64, i64 } %t306, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = load ptr, ptr %a1 - %t309 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = load %S.ast.Node, ptr %a87 - %t312 = call %S.ast.Type @finch.gen.resolve(ptr %t308, %S.ast.Type %t310, %S.ast.Node %t311) - %t313 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 12 - %t314 = load %S.ast.Type, ptr %t313 - store %S.ast.Type %t312, ptr %t313 - store %S.ast.Type %t314, ptr %a315 - call void @finch.drop.S_ast_Type(ptr %a315) - %t316 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = sub i64 %t319, 1 - %t321 = load { ptr, i64, i64 }, ptr %t316 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range4053, label %inrange4054 -range4053: - call void @finch_panic_index(ptr @.str.2513, i64 1743, i64 %t320, i64 %t322) - unreachable -inrange4054: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 - %t326 = load %S.ast.Node, ptr %t325 - store %S.ast.Node %t326, ptr %a327 - call void @finch.copy.S_ast_Node(ptr %a328, ptr %a327) - %t329 = load %S.ast.Node, ptr %a328 - store %S.ast.Node %t329, ptr %a330 - %t331 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = sub i64 %t333, 1 - store i64 0, ptr %a335 - br label %for.cond4055 -for.cond4055: - %t336 = load i64, ptr %a335 - %t337 = icmp slt i64 %t336, %t334 - br i1 %t337, label %for.body4056, label %for.end4058 -for.body4056: - %t338 = load ptr, ptr %a1 - %t339 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t340 = load i64, ptr %a335 - %t341 = load { ptr, i64, i64 }, ptr %t339 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range4059, label %inrange4060 -range4059: - call void @finch_panic_index(ptr @.str.2514, i64 1745, i64 %t340, i64 %t342) - unreachable -inrange4060: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Node, ptr %t344, i64 %t340 - %t346 = getelementptr inbounds %S.ast.Node, ptr %t345, i32 0, i32 5 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t349 = load i64, ptr %a335 - %t350 = load { ptr, i64, i64 }, ptr %t348 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range4061, label %inrange4062 -range4061: - call void @finch_panic_index(ptr @.str.2515, i64 1745, i64 %t349, i64 %t351) - unreachable -inrange4062: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i64 %t349 - %t355 = load %S.ast.Node, ptr %t354 - %t356 = call %S.ast.Type @finch.gen.resolve(ptr %t338, %S.ast.Type %t347, %S.ast.Node %t355) - store %S.ast.Type %t356, ptr %a357 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 13 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 - %t360 = load %S.ast.Type, ptr %a357 - store %S.ast.Type %t360, ptr %a361 - call void @finch.copy.S_ast_Type(ptr %a362, ptr %a361) - %t363 = load %S.ast.Type, ptr %a362 - %t364 = load i64, ptr %t359 - %t365 = add i64 %t364, 1 - call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t366 = load ptr, ptr %t358 - %t367 = getelementptr inbounds %S.ast.Type, ptr %t366, i64 %t364 - store %S.ast.Type %t363, ptr %t367 - store i64 %t365, ptr %t359 - %t368 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 14 - %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 - %t370 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t371 = load i64, ptr %a335 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4063, label %inrange4064 -range4063: - call void @finch_panic_index(ptr @.str.2516, i64 1747, i64 %t371, i64 %t373) - unreachable -inrange4064: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds %S.ast.Node, ptr %t375, i64 %t371 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i32 0, i32 1 - %t378 = load { ptr, i64, i64 }, ptr %t377 - store { ptr, i64, i64 } %t378, ptr %a379 - call void @finch_str_copy(ptr %a380, ptr %a379) - %t381 = load { ptr, i64, i64 }, ptr %a380 - %t382 = load i64, ptr %t369 - %t383 = add i64 %t382, 1 - call void @finch_arr_reserve(ptr %t368, i64 %t383, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t384 = load ptr, ptr %t368 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t382 - store { ptr, i64, i64 } %t381, ptr %t385 - store i64 %t383, ptr %t369 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 15 - %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i32 0, i32 1 - %t388 = load ptr, ptr %a1 - %t389 = load %S.ast.Type, ptr %a357 - %t390 = call i1 @finch.gen.owning(ptr %t388, %S.ast.Type %t389) - br label %logic.from4065 -logic.from4065: - br i1 %t390, label %logic.rhs4066, label %logic.end4067 -logic.rhs4066: - %t391 = load ptr, ptr %a1 - %t392 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t393 = load i64, ptr %a335 - %t394 = load { ptr, i64, i64 }, ptr %t392 - %t395 = extractvalue { ptr, i64, i64 } %t394, 1 - %t396 = icmp uge i64 %t393, %t395 - br i1 %t396, label %range4068, label %inrange4069 -range4068: - call void @finch_panic_index(ptr @.str.2517, i64 1748, i64 %t393, i64 %t395) - unreachable -inrange4069: - %t397 = extractvalue { ptr, i64, i64 } %t394, 0 - %t398 = getelementptr inbounds %S.ast.Node, ptr %t397, i64 %t393 - %t399 = getelementptr inbounds %S.ast.Node, ptr %t398, i32 0, i32 1 - %t400 = load { ptr, i64, i64 }, ptr %t399 - %t401 = load %S.ast.Node, ptr %a330 - %t402 = call i1 @finch.gen.mutates(ptr %t391, { ptr, i64, i64 } %t400, %S.ast.Node %t401) - %t403 = xor i1 %t402, true - br label %logic.rend4070 -logic.rend4070: - br label %logic.end4067 -logic.end4067: - %t404 = phi i1 [ false, %logic.from4065 ], [ %t403, %logic.rend4070 ] - %t405 = load i64, ptr %t387 - %t406 = add i64 %t405, 1 - call void @finch_arr_reserve(ptr %t386, i64 %t406, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t407 = load ptr, ptr %t386 - %t408 = getelementptr inbounds i1, ptr %t407, i64 %t405 - store i1 %t404, ptr %t408 - store i64 %t406, ptr %t387 - call void @finch.drop.S_ast_Type(ptr %a357) - br label %for.step4057 -for.step4057: - %t409 = load i64, ptr %a335 - %t410 = add i64 %t409, 1 - store i64 %t410, ptr %a335 - br label %for.cond4055 -for.end4058: - %t411 = load { ptr, i64, i64 }, ptr %a238 - %t412 = load ptr, ptr %a1 - %t413 = icmp eq ptr %t412, null - br i1 %t413, label %panic4071, label %ok4072 -panic4071: - call void @finch_panic(ptr @.str.2518, i64 1750, ptr @.str.2519) - unreachable -ok4072: - %t414 = getelementptr inbounds %S.gen.Gen, ptr %t412, i32 0, i32 18 - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch.copy.arr_str(ptr %a416, ptr %a415) - %t417 = load { ptr, i64, i64 }, ptr %a416 - %t418 = load { ptr, i64, i64 }, ptr %t414 - store { ptr, i64, i64 } %t417, ptr %t414 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch.drop.arr_str(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a246 - %t421 = load ptr, ptr %a1 - %t422 = icmp eq ptr %t421, null - br i1 %t422, label %panic4073, label %ok4074 -panic4073: - call void @finch_panic(ptr @.str.2520, i64 1751, ptr @.str.2521) - unreachable -ok4074: - %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 19 - store { ptr, i64, i64 } %t420, ptr %a424 - call void @finch.copy.arr_S_ast_Type(ptr %a425, ptr %a424) - %t426 = load { ptr, i64, i64 }, ptr %a425 - %t427 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t426, ptr %t423 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch.drop.arr_S_ast_Type(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a254 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic4075, label %ok4076 -panic4075: - call void @finch_panic(ptr @.str.2522, i64 1752, ptr @.str.2523) - unreachable -ok4076: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 14 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_copy(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a262 - %t439 = load ptr, ptr %a1 - %t440 = icmp eq ptr %t439, null - br i1 %t440, label %panic4077, label %ok4078 -panic4077: - call void @finch_panic(ptr @.str.2524, i64 1753, ptr @.str.2525) - unreachable -ok4078: - %t441 = getelementptr inbounds %S.gen.Gen, ptr %t439, i32 0, i32 20 - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - %t445 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t444, ptr %t441 - store { ptr, i64, i64 } %t445, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic4079, label %ok4080 -panic4079: - call void @finch_panic(ptr @.str.2526, i64 1754, ptr @.str.2527) - unreachable -ok4080: - %t449 = getelementptr inbounds %S.gen.Gen, ptr %t447, i32 0, i32 15 - %t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i32 0, i32 1 - %t451 = load %S.gen.FnSig, ptr %a133 - store %S.gen.FnSig %t451, ptr %a452 - call void @finch.copy.S_gen_FnSig(ptr %a453, ptr %a452) - %t454 = load %S.gen.FnSig, ptr %a453 - %t455 = load i64, ptr %t450 - %t456 = add i64 %t455, 1 - call void @finch_arr_reserve(ptr %t449, i64 %t456, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t457 = load ptr, ptr %t449 - %t458 = getelementptr inbounds %S.gen.FnSig, ptr %t457, i64 %t455 - store %S.gen.FnSig %t454, ptr %t458 - store i64 %t456, ptr %t450 - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic4081, label %ok4082 -panic4081: - call void @finch_panic(ptr @.str.2528, i64 1755, ptr @.str.2529) - unreachable -ok4082: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 15 - %t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i32 0, i32 1 - %t463 = load i64, ptr %t462 - %t464 = sub i64 %t463, 1 - call void @finch.drop.S_ast_Node(ptr %a330) - call void @finch_str_drop(ptr %a262) - call void @finch_str_drop(ptr %a254) - call void @finch.drop.arr_S_ast_Type(ptr %a246) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_gen_FnSig(ptr %a133) - call void @finch.drop.S_ast_Node(ptr %a87) - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t464 -} - -define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) { -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 - %a84 = alloca %S.ast.Type, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca %S.gen.StructDef, align 16 - %a231 = alloca %S.gen.StructDef, align 16 - %a233 = alloca %S.gen.StructDef, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.2530, 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.from4083 -logic.from4083: - br i1 %t11, label %logic.rhs4084, label %logic.end4085 -logic.rhs4084: - %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.rend4086 -logic.rend4086: - br label %logic.end4085 -logic.end4085: - %t16 = phi i1 [ false, %logic.from4083 ], [ %t15, %logic.rend4086 ] - br label %logic.from4087 -logic.from4087: - br i1 %t16, label %logic.rhs4088, label %logic.end4089 -logic.rhs4088: - %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.rend4090 -logic.rend4090: - br label %logic.end4089 -logic.end4089: - %t21 = phi i1 [ false, %logic.from4087 ], [ %t20, %logic.rend4090 ] - br label %logic.from4091 -logic.from4091: - br i1 %t21, label %logic.rhs4092, label %logic.end4093 -logic.rhs4092: - %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.cond4094 -find.cond4094: - %t29 = load i64, ptr %a28 - %t30 = icmp slt i64 %t29, %t26 - br i1 %t30, label %find.body4095, label %find.end4098 -find.body4095: - %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.hit4096, label %find.next4097 -find.hit4096: - store i64 %t29, ptr %a25 - br label %find.end4098 -find.next4097: - %t37 = add i64 %t29, 1 - store i64 %t37, ptr %a28 - br label %find.cond4094 -find.end4098: - %t38 = load i64, ptr %a25 - %t39 = icmp sge i64 %t38, 0 - br label %logic.rend4099 -logic.rend4099: - br label %logic.end4093 -logic.end4093: - %t40 = phi i1 [ false, %logic.from4091 ], [ %t39, %logic.rend4099 ] - br i1 %t40, label %then4100, label %endif4102 -then4100: - %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.cond4103 -find.cond4103: - %t48 = load i64, ptr %a47 - %t49 = icmp slt i64 %t48, %t45 - br i1 %t49, label %find.body4104, label %find.end4107 -find.body4104: - %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.hit4105, label %find.next4106 -find.hit4105: - store i64 %t48, ptr %a44 - br label %find.end4107 -find.next4106: - %t56 = add i64 %t48, 1 - store i64 %t56, ptr %a47 - br label %find.cond4103 -find.end4107: - %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 %panic4108, label %ok4109 -panic4108: - call void @finch_panic(ptr @.str.2531, i64 1762, ptr @.str.2532) - unreachable -ok4109: - %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 %range4110, label %inrange4111 -range4110: - call void @finch_panic_index(ptr @.str.2533, i64 1762, i64 %t62, i64 %t64) - unreachable -inrange4111: - %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 %then4112, label %endif4114 -then4112: - %t70 = load %S.ast.Type, ptr %a3 - %t71 = load ptr, ptr %a5 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic4115, label %ok4116 -panic4115: - call void @finch_panic(ptr @.str.2534, i64 1763, ptr @.str.2535) - unreachable -ok4116: - %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 %range4117, label %inrange4118 -range4117: - call void @finch_panic_index(ptr @.str.2536, i64 1763, i64 %t74, i64 %t76) - unreachable -inrange4118: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 - store %S.ast.Type %t70, ptr %a80 - call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80) - %t82 = load %S.ast.Type, ptr %a81 - %t83 = load %S.ast.Type, ptr %t79 - store %S.ast.Type %t82, ptr %t79 - store %S.ast.Type %t83, ptr %a84 - call void @finch.drop.S_ast_Type(ptr %a84) - %t85 = load ptr, ptr %a5 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic4119, label %ok4120 -panic4119: - call void @finch_panic(ptr @.str.2537, i64 1764, ptr @.str.2538) - unreachable -ok4120: - %t87 = getelementptr inbounds %S.gen.Binds, ptr %t85, i32 0, i32 1 - %t88 = load i64, ptr %a58 - %t89 = load { ptr, i64, i64 }, ptr %t87 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = icmp uge i64 %t88, %t90 - br i1 %t91, label %range4121, label %inrange4122 -range4121: - call void @finch_panic_index(ptr @.str.2539, i64 1764, i64 %t88, i64 %t90) - unreachable -inrange4122: - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = getelementptr inbounds i1, ptr %t92, i64 %t88 - store i1 true, ptr %t93 - br label %endif4114 -endif4114: - ret void -endif4102: - %t94 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.2540, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br label %logic.from4123 -logic.from4123: - br i1 %t99, label %logic.end4125, label %logic.rhs4124 -logic.rhs4124: - %t100 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.2541, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend4126 -logic.rend4126: - br label %logic.end4125 -logic.end4125: - %t106 = phi i1 [ true, %logic.from4123 ], [ %t105, %logic.rend4126 ] - br label %logic.from4127 -logic.from4127: - br i1 %t106, label %logic.end4129, label %logic.rhs4128 -logic.rhs4128: - %t107 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2542, i64 5, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend4130 -logic.rend4130: - br label %logic.end4129 -logic.end4129: - %t113 = phi i1 [ true, %logic.from4127 ], [ %t112, %logic.rend4130 ] - br label %logic.from4131 -logic.from4131: - br i1 %t113, label %logic.rhs4132, label %logic.end4133 -logic.rhs4132: - %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp sgt i64 %t116, 0 - br label %logic.rend4134 -logic.rend4134: - br label %logic.end4133 -logic.end4133: - %t118 = phi i1 [ false, %logic.from4131 ], [ %t117, %logic.rend4134 ] - br label %logic.from4135 -logic.from4135: - br i1 %t118, label %logic.rhs4136, label %logic.end4137 -logic.rhs4136: - %t119 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t122, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.rend4138 -logic.rend4138: - br label %logic.end4137 -logic.end4137: - %t127 = phi i1 [ false, %logic.from4135 ], [ %t126, %logic.rend4138 ] - br label %logic.from4139 -logic.from4139: - br i1 %t127, label %logic.rhs4140, label %logic.end4141 -logic.rhs4140: - %t128 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load i64, ptr %t129 - %t131 = icmp sgt i64 %t130, 0 - br label %logic.rend4142 -logic.rend4142: - br label %logic.end4141 -logic.end4141: - %t132 = phi i1 [ false, %logic.from4139 ], [ %t131, %logic.rend4142 ] - br i1 %t132, label %then4143, label %endif4145 -then4143: - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 0, %t136 - br i1 %t137, label %range4146, label %inrange4147 -range4146: - call void @finch_panic_index(ptr @.str.2543, i64 1769, i64 0, i64 %t136) - unreachable -inrange4147: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i64 0 - %t140 = load %S.ast.Type, ptr %t139 - %t141 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t142 = load { ptr, i64, i64 }, ptr %t141 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 0, %t143 - br i1 %t144, label %range4148, label %inrange4149 -range4148: - call void @finch_panic_index(ptr @.str.2544, i64 1769, i64 0, i64 %t143) - unreachable -inrange4149: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 0 - %t147 = load %S.ast.Type, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %a4 - %t149 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t133, %S.ast.Type %t140, %S.ast.Type %t147, { ptr, i64, i64 } %t148, ptr %t149) - ret void -endif4145: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t151 = load { ptr, i64, i64 }, ptr %t150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2545, i64 3, i64 0 }, ptr %a153 - %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) - %t155 = icmp ne i32 %t154, 0 - br label %logic.from4150 -logic.from4150: - br i1 %t155, label %logic.rhs4151, label %logic.end4152 -logic.rhs4151: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.2546, i64 3, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.rend4153 -logic.rend4153: - br label %logic.end4152 -logic.end4152: - %t162 = phi i1 [ false, %logic.from4150 ], [ %t161, %logic.rend4153 ] - br i1 %t162, label %then4154, label %endif4156 -then4154: - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = extractvalue { ptr, i64, i64 } %t165, 1 - %t167 = icmp uge i64 0, %t166 - br i1 %t167, label %range4157, label %inrange4158 -range4157: - call void @finch_panic_index(ptr @.str.2547, i64 1773, i64 0, i64 %t166) - unreachable -inrange4158: - %t168 = extractvalue { ptr, i64, i64 } %t165, 0 - %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range4159, label %inrange4160 -range4159: - call void @finch_panic_index(ptr @.str.2548, i64 1773, i64 0, i64 %t173) - unreachable -inrange4160: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i64 0 - %t177 = load %S.ast.Type, ptr %t176 - %t178 = load { ptr, i64, i64 }, ptr %a4 - %t179 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t163, %S.ast.Type %t170, %S.ast.Type %t177, { ptr, i64, i64 } %t178, ptr %t179) - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 1, %t183 - br i1 %t184, label %range4161, label %inrange4162 -range4161: - call void @finch_panic_index(ptr @.str.2549, i64 1774, i64 1, i64 %t183) - unreachable -inrange4162: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i64 1 - %t187 = load %S.ast.Type, ptr %t186 - %t188 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 1, %t190 - br i1 %t191, label %range4163, label %inrange4164 -range4163: - call void @finch_panic_index(ptr @.str.2550, i64 1774, i64 1, i64 %t190) - unreachable -inrange4164: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i64 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = load { ptr, i64, i64 }, ptr %a4 - %t196 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t180, %S.ast.Type %t187, %S.ast.Type %t194, { ptr, i64, i64 } %t195, ptr %t196) - ret void -endif4156: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t198 = load { ptr, i64, i64 }, ptr %t197 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2551, i64 5, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from4165 -logic.from4165: - br i1 %t202, label %logic.rhs4166, label %logic.end4167 -logic.rhs4166: - %t203 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - %t206 = icmp sgt i64 %t205, 0 - br label %logic.rend4168 -logic.rend4168: - br label %logic.end4167 -logic.end4167: - %t207 = phi i1 [ false, %logic.from4165 ], [ %t206, %logic.rend4168 ] - br label %logic.from4169 -logic.from4169: - br i1 %t207, label %logic.rhs4170, label %logic.end4171 -logic.rhs4170: - %t208 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t209, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2552, i64 6, i64 0 }, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br label %logic.rend4172 -logic.rend4172: - br label %logic.end4171 -logic.end4171: - %t214 = phi i1 [ false, %logic.from4169 ], [ %t213, %logic.rend4172 ] - br i1 %t214, label %then4173, label %endif4175 -then4173: - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic4176, label %ok4177 -panic4176: - call void @finch_panic(ptr @.str.2553, i64 1778, ptr @.str.2554) - unreachable -ok4177: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 16 - %t218 = load ptr, ptr %a1 - %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t220 = load { ptr, i64, i64 }, ptr %t219 - %t221 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = call i64 @finch.gen.findStruct(ptr %t218, { ptr, i64, i64 } %t220, { ptr, i64, i64 } %t222) - %t224 = load { ptr, i64, i64 }, ptr %t217 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 %t223, %t225 - br i1 %t226, label %range4178, label %inrange4179 -range4178: - call void @finch_panic_index(ptr @.str.2555, i64 1778, i64 %t223, i64 %t225) - unreachable -inrange4179: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.gen.StructDef, ptr %t227, i64 %t223 - %t229 = load %S.gen.StructDef, ptr %t228 - store %S.gen.StructDef %t229, ptr %a230 - call void @finch.copy.S_gen_StructDef(ptr %a231, ptr %a230) - %t232 = load %S.gen.StructDef, ptr %a231 - store %S.gen.StructDef %t232, ptr %a233 - %t234 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 5 - %t235 = load { ptr, i64, i64 }, ptr %t234 - %t236 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } %t235, ptr %a238 - store { ptr, i64, i64 } %t237, ptr %a239 - %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) - %t241 = icmp ne i32 %t240, 0 - br label %logic.from4180 -logic.from4180: - br i1 %t241, label %logic.rhs4181, label %logic.end4182 -logic.rhs4181: - %t242 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i32 0, i32 1 - %t247 = load i64, ptr %t246 - %t248 = icmp eq i64 %t244, %t247 - br label %logic.rend4183 -logic.rend4183: - br label %logic.end4182 -logic.end4182: - %t249 = phi i1 [ false, %logic.from4180 ], [ %t248, %logic.rend4183 ] - br i1 %t249, label %then4184, label %endif4186 -then4184: - %t250 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1 - %t252 = load i64, ptr %t251 - store i64 0, ptr %a253 - br label %for.cond4187 -for.cond4187: - %t254 = load i64, ptr %a253 - %t255 = icmp slt i64 %t254, %t252 - br i1 %t255, label %for.body4188, label %for.end4190 -for.body4188: - %t256 = load ptr, ptr %a1 - %t257 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t258 = load i64, ptr %a253 - %t259 = load { ptr, i64, i64 }, ptr %t257 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range4191, label %inrange4192 -range4191: - call void @finch_panic_index(ptr @.str.2556, i64 1781, i64 %t258, i64 %t260) - unreachable -inrange4192: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i64 %t258 - %t264 = load %S.ast.Type, ptr %t263 - %t265 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t266 = load i64, ptr %a253 - %t267 = load { ptr, i64, i64 }, ptr %t265 - %t268 = extractvalue { ptr, i64, i64 } %t267, 1 - %t269 = icmp uge i64 %t266, %t268 - br i1 %t269, label %range4193, label %inrange4194 -range4193: - call void @finch_panic_index(ptr @.str.2557, i64 1781, i64 %t266, i64 %t268) - unreachable -inrange4194: - %t270 = extractvalue { ptr, i64, i64 } %t267, 0 - %t271 = getelementptr inbounds %S.ast.Type, ptr %t270, i64 %t266 - %t272 = load %S.ast.Type, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %a4 - %t274 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t256, %S.ast.Type %t264, %S.ast.Type %t272, { ptr, i64, i64 } %t273, ptr %t274) - br label %for.step4189 -for.step4189: - %t275 = load i64, ptr %a253 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a253 - br label %for.cond4187 -for.end4190: - br label %endif4186 -endif4186: - call void @finch.drop.S_gen_StructDef(ptr %a233) - br label %endif4175 -endif4175: - ret void -} - -define internal void @finch.drop.arr_S_gen_Val(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4271 -n.cond4271: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4272, label %n.end4273 -n.body4272: - %t7 = getelementptr inbounds %S.gen.Val, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Val(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4271 -n.end4273: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Binds(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_bool(ptr %t2) - ret void -} - -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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a137 = alloca %S.gen.Binds, align 16 - %a141 = alloca i64, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca i64, align 16 - %a167 = alloca i64, align 16 - %a182 = alloca %S.gen.Val, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca %S.gen.Val, align 16 - %a228 = alloca %S.gen.Val, align 16 - %a255 = alloca i64, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca i64, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a321 = alloca %S.gen.FnSig, align 16 - %a323 = alloca %S.gen.FnSig, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca i64, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca %S.gen.Val, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.gen.Val, align 16 - %a414 = alloca i64, align 16 - %a422 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic4195, label %ok4196 -panic4195: - call void @finch_panic(ptr @.str.2558, i64 1789, ptr @.str.2559) - unreachable -ok4196: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a3 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4197, label %inrange4198 -range4197: - call void @finch_panic_index(ptr @.str.2560, i64 1789, i64 %t9, i64 %t11) - unreachable -inrange4198: - %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 %panic4199, label %ok4200 -panic4199: - call void @finch_panic(ptr @.str.2561, i64 1790, ptr @.str.2562) - unreachable -ok4200: - %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 %range4201, label %inrange4202 -range4201: - call void @finch_panic_index(ptr @.str.2563, i64 1790, i64 %t24, i64 %t26) - unreachable -inrange4202: - %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 %range4203, label %inrange4204 -range4203: - call void @finch_panic_index(ptr @.str.2564, i64 1790, i64 %t32, i64 %t34) - unreachable -inrange4204: - %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 %then4205, label %endif4207 -then4205: - %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 %then4208, label %endif4210 -then4208: - %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.2565, 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) - store { ptr, i64, i64 } %t73, ptr %a82 - call void @finch_str_drop(ptr %a82) - store { ptr, i64, i64 } %t78, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2566, i64 27, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i32 0, i32 1 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - %t93 = load i64, ptr %t92 - call void @finch_str_from_int(ptr %a94, i64 %t93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t89, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t89, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif4210 -endif4210: - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t104 = getelementptr inbounds %S.ast.Type, ptr %t103, i32 0, i32 1 - store i64 0, ptr %a105 - br label %each.cond4211 -each.cond4211: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body4212, label %each.end4214 -each.body4212: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.ast.Type, ptr %t110, i64 %t108 - %t112 = load %S.ast.Type, ptr %t111 - store %S.ast.Type %t112, ptr %a113 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = load %S.ast.Type, ptr %a113 - %t117 = load %S.ast.Node, ptr %a2 - %t118 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t116, %S.ast.Node %t117) - %t119 = load i64, ptr %t114 - %t120 = add i64 %t119, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t120, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t121 = load ptr, ptr %a53 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 %t119 - store %S.ast.Type %t118, ptr %t122 - store i64 %t120, ptr %t114 - br label %each.step4213 -each.step4213: - %t123 = load i64, ptr %a105 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a105 - br label %each.cond4211 -each.end4214: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = load i64, ptr %a3 - %t128 = load { ptr, i64, i64 }, ptr %a53 - %t129 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2567, i64 4, i64 0 }) - %t130 = load %S.ast.Node, ptr %a2 - %t131 = call i64 @finch.gen.instFn(ptr %t126, i64 %t127, { ptr, i64, i64 } %t128, %S.ast.Type %t129, %S.ast.Node %t130) - store %S.ast.Type %t129, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - %t133 = load %S.ast.Node, ptr %a2 - %t134 = load i64, ptr %a4 - %t135 = load { ptr, i64, i64 }, ptr %a5 - %t136 = call %S.gen.Val @finch.gen.callFn(ptr %t125, i64 %t131, %S.ast.Node %t133, i64 %t134, { ptr, i64, i64 } %t135, { ptr, i64, i64 } { ptr @.str.2568, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2569, i64 0, i64 0 }) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t136 -endif4207: - store %S.gen.Binds zeroinitializer, ptr %a137 - %t138 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond4215 -for.cond4215: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body4216, label %for.end4218 -for.body4216: - %t144 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2570, i64 4, i64 0 }) - %t147 = load i64, ptr %t145 - %t148 = add i64 %t147, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t148, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t149 = load ptr, ptr %t144 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 %t147 - store %S.ast.Type %t146, ptr %t150 - store i64 %t148, ptr %t145 - %t151 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t154, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %t151 - %t156 = getelementptr inbounds i1, ptr %t155, i64 %t153 - store i1 false, ptr %t156 - store i64 %t154, ptr %t152 - br label %for.step4217 -for.step4217: - %t157 = load i64, ptr %a141 - %t158 = add i64 %t157, 1 - store i64 %t158, ptr %a141 - br label %for.cond4215 -for.end4218: - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4219, label %ok4220 -panic4219: - call void @finch_panic(ptr @.str.2571, i64 1809, ptr @.str.2572) - unreachable -ok4220: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 11 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 - %t164 = load i64, ptr %t163 - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a47 - store i64 0, ptr %a167 - br label %for.cond4221 -for.cond4221: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body4222, label %for.end4224 -for.body4222: - %t170 = load ptr, ptr %a1 - %t171 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t172 = load i64, ptr %a4 - %t173 = load i64, ptr %a167 - %t174 = add i64 %t172, %t173 - %t175 = load { ptr, i64, i64 }, ptr %t171 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range4225, label %inrange4226 -range4225: - call void @finch_panic_index(ptr @.str.2573, i64 1811, i64 %t174, i64 %t176) - unreachable -inrange4226: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t174 - %t180 = load %S.ast.Node, ptr %t179 - %t181 = call %S.gen.Val @finch.gen.expr(ptr %t170, %S.ast.Node %t180) - store %S.gen.Val %t181, ptr %a182 - %t183 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i32 0, i32 0 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.2574, i64 4, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.from4227 -logic.from4227: - br i1 %t189, label %logic.end4229, label %logic.rhs4228 -logic.rhs4228: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i32 0, i32 0 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.2575, i64 4, i64 0 }, ptr %a194 - %t195 = call i32 @finch_str_eq(ptr %a193, ptr %a194) - %t196 = icmp ne i32 %t195, 0 - br label %logic.rend4230 -logic.rend4230: - br label %logic.end4229 -logic.end4229: - %t197 = phi i1 [ true, %logic.from4227 ], [ %t196, %logic.rend4230 ] - br i1 %t197, label %then4231, label %endif4233 -then4231: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t200 = load i64, ptr %a4 - %t201 = load i64, ptr %a167 - %t202 = add i64 %t200, %t201 - %t203 = load { ptr, i64, i64 }, ptr %t199 - %t204 = extractvalue { ptr, i64, i64 } %t203, 1 - %t205 = icmp uge i64 %t202, %t204 - br i1 %t205, label %range4234, label %inrange4235 -range4234: - call void @finch_panic_index(ptr @.str.2576, i64 1813, i64 %t202, i64 %t204) - unreachable -inrange4235: - %t206 = extractvalue { ptr, i64, i64 } %t203, 0 - %t207 = getelementptr inbounds %S.ast.Node, ptr %t206, i64 %t202 - %t208 = load %S.ast.Node, ptr %t207 - %t209 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2578, i64 2, i64 0 }, ptr %a211 - call void @finch_str_join(ptr %a212, ptr %t209, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.2577, i64 29, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t213, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.2579, i64 5, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t198, %S.ast.Node %t208, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - br label %endif4233 -endif4233: - %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t226 = load %S.gen.Val, ptr %a182 - store %S.gen.Val %t226, ptr %a227 - call void @finch.copy.S_gen_Val(ptr %a228, ptr %a227) - %t229 = load %S.gen.Val, ptr %a228 - %t230 = load i64, ptr %t225 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %a159, i64 %t231, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %a159 - %t233 = getelementptr inbounds %S.gen.Val, ptr %t232, i64 %t230 - store %S.gen.Val %t229, ptr %t233 - store i64 %t231, ptr %t225 - %t234 = load ptr, ptr %a1 - %t235 = load %S.gen.Val, ptr %a182 - call void @finch.gen.hold(ptr %t234, %S.gen.Val %t235) - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 - %t238 = load i64, ptr %a167 - %t239 = load { ptr, i64, i64 }, ptr %t237 - %t240 = extractvalue { ptr, i64, i64 } %t239, 1 - %t241 = icmp uge i64 %t238, %t240 - br i1 %t241, label %range4236, label %inrange4237 -range4236: - call void @finch_panic_index(ptr @.str.2580, i64 1817, i64 %t238, i64 %t240) - unreachable -inrange4237: - %t242 = extractvalue { ptr, i64, i64 } %t239, 0 - %t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238 - %t244 = getelementptr inbounds %S.ast.Node, ptr %t243, i32 0, i32 5 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - call void @finch.gen.bindType(ptr %t236, %S.ast.Type %t245, %S.ast.Type %t247, { ptr, i64, i64 } %t249, ptr %a137) - call void @finch.drop.S_gen_Val(ptr %a182) - br label %for.step4223 -for.step4223: - %t250 = load i64, ptr %a167 - %t251 = add i64 %t250, 1 - store i64 %t251, ptr %a167 - br label %for.cond4221 -for.end4224: - %t252 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i32 0, i32 1 - %t254 = load i64, ptr %t253 - store i64 0, ptr %a255 - br label %for.cond4238 -for.cond4238: - %t256 = load i64, ptr %a255 - %t257 = icmp slt i64 %t256, %t254 - br i1 %t257, label %for.body4239, label %for.end4241 -for.body4239: - %t258 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t259 = load i64, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %t258 - %t261 = extractvalue { ptr, i64, i64 } %t260, 1 - %t262 = icmp uge i64 %t259, %t261 - br i1 %t262, label %range4242, label %inrange4243 -range4242: - call void @finch_panic_index(ptr @.str.2581, i64 1820, i64 %t259, i64 %t261) - unreachable -inrange4243: - %t263 = extractvalue { ptr, i64, i64 } %t260, 0 - %t264 = getelementptr inbounds i1, ptr %t263, i64 %t259 - %t265 = load i1, ptr %t264 - %t266 = xor i1 %t265, true - br i1 %t266, label %then4244, label %endif4246 -then4244: - %t267 = load ptr, ptr %a1 - %t268 = load %S.ast.Node, ptr %a2 - %t269 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t270 = load i64, ptr %a255 - %t271 = load { ptr, i64, i64 }, ptr %t269 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp uge i64 %t270, %t272 - br i1 %t273, label %range4247, label %inrange4248 -range4247: - call void @finch_panic_index(ptr @.str.2583, i64 1821, i64 %t270, i64 %t272) - unreachable -inrange4248: - %t274 = extractvalue { ptr, i64, i64 } %t271, 0 - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i64 %t270 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } { ptr @.str.2582, i64 16, i64 0 }, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.2584, i64 24, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t285, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.2585, i64 10, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - call void @finch.gen.fail(ptr %t267, %S.ast.Node %t268, { ptr, i64, i64 } %t297) - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_drop(ptr %a298) - br label %endif4246 -endif4246: - br label %for.step4240 -for.step4240: - %t299 = load i64, ptr %a255 - %t300 = add i64 %t299, 1 - store i64 %t300, ptr %a255 - br label %for.cond4238 -for.end4241: - %t301 = load ptr, ptr %a1 - %t302 = load i64, ptr %a3 - %t303 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t304 = load { ptr, i64, i64 }, ptr %t303 - %t305 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2586, i64 4, i64 0 }) - %t306 = load %S.ast.Node, ptr %a2 - %t307 = call i64 @finch.gen.instFn(ptr %t301, i64 %t302, { ptr, i64, i64 } %t304, %S.ast.Type %t305, %S.ast.Node %t306) - store %S.ast.Type %t305, ptr %a308 - call void @finch.drop.S_ast_Type(ptr %a308) - store i64 %t307, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = icmp eq ptr %t310, null - br i1 %t311, label %panic4249, label %ok4250 -panic4249: - call void @finch_panic(ptr @.str.2587, i64 1825, ptr @.str.2588) - unreachable -ok4250: - %t312 = getelementptr inbounds %S.gen.Gen, ptr %t310, i32 0, i32 15 - %t313 = load i64, ptr %a309 - %t314 = load { ptr, i64, i64 }, ptr %t312 - %t315 = extractvalue { ptr, i64, i64 } %t314, 1 - %t316 = icmp uge i64 %t313, %t315 - br i1 %t316, label %range4251, label %inrange4252 -range4251: - call void @finch_panic_index(ptr @.str.2589, i64 1825, i64 %t313, i64 %t315) - unreachable -inrange4252: - %t317 = extractvalue { ptr, i64, i64 } %t314, 0 - %t318 = getelementptr inbounds %S.gen.FnSig, ptr %t317, i64 %t313 - %t319 = load %S.gen.FnSig, ptr %t318 - store %S.gen.FnSig %t319, ptr %a320 - call void @finch.copy.S_gen_FnSig(ptr %a321, ptr %a320) - %t322 = load %S.gen.FnSig, ptr %a321 - store %S.gen.FnSig %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load %S.ast.Node, ptr %a2 - %t326 = load %S.gen.FnSig, ptr %a323 - call void @finch.gen.noteCall(ptr %t324, %S.ast.Node %t325, %S.gen.FnSig %t326) - store { ptr, i64, i64 } zeroinitializer, ptr %a327 - %t328 = load i64, ptr %a47 - store i64 0, ptr %a329 - br label %for.cond4253 -for.cond4253: - %t330 = load i64, ptr %a329 - %t331 = icmp slt i64 %t330, %t328 - br i1 %t331, label %for.body4254, label %for.end4256 -for.body4254: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a329 - %t334 = load { ptr, i64, i64 }, ptr %a159 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range4257, label %inrange4258 -range4257: - call void @finch_panic_index(ptr @.str.2590, i64 1829, i64 %t333, i64 %t335) - unreachable -inrange4258: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Val, ptr %t337, i64 %t333 - %t339 = load %S.gen.Val, ptr %t338 - %t340 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t341 = load i64, ptr %a329 - %t342 = load { ptr, i64, i64 }, ptr %t340 - %t343 = extractvalue { ptr, i64, i64 } %t342, 1 - %t344 = icmp uge i64 %t341, %t343 - br i1 %t344, label %range4259, label %inrange4260 -range4259: - call void @finch_panic_index(ptr @.str.2591, i64 1829, i64 %t341, i64 %t343) - unreachable -inrange4260: - %t345 = extractvalue { ptr, i64, i64 } %t342, 0 - %t346 = getelementptr inbounds %S.ast.Type, ptr %t345, i64 %t341 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t349 = load i64, ptr %a4 - %t350 = load i64, ptr %a329 - %t351 = add i64 %t349, %t350 - %t352 = load { ptr, i64, i64 }, ptr %t348 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range4261, label %inrange4262 -range4261: - call void @finch_panic_index(ptr @.str.2592, i64 1829, i64 %t351, i64 %t353) - unreachable -inrange4262: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds %S.ast.Node, ptr %t355, i64 %t351 - %t357 = load %S.ast.Node, ptr %t356 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 14 - %t359 = load i64, ptr %a329 - %t360 = load { ptr, i64, i64 }, ptr %t358 - %t361 = extractvalue { ptr, i64, i64 } %t360, 1 - %t362 = icmp uge i64 %t359, %t361 - br i1 %t362, label %range4263, label %inrange4264 -range4263: - call void @finch_panic_index(ptr @.str.2594, i64 1829, i64 %t359, i64 %t361) - unreachable -inrange4264: - %t363 = extractvalue { ptr, i64, i64 } %t360, 0 - %t364 = getelementptr inbounds { ptr, i64, i64 }, ptr %t363, i64 %t359 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.2593, i64 10, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.2595, i64 1, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call %S.gen.Val @finch.gen.coerce(ptr %t332, %S.gen.Val %t339, %S.ast.Type %t347, %S.ast.Node %t357, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - store %S.gen.Val %t375, ptr %a377 - %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 - %t379 = load ptr, ptr %a1 - %t380 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t381 = load i64, ptr %a329 - %t382 = load { ptr, i64, i64 }, ptr %t380 - %t383 = extractvalue { ptr, i64, i64 } %t382, 1 - %t384 = icmp uge i64 %t381, %t383 - br i1 %t384, label %range4265, label %inrange4266 -range4265: - call void @finch_panic_index(ptr @.str.2596, i64 1830, i64 %t381, i64 %t383) - unreachable -inrange4266: - %t385 = extractvalue { ptr, i64, i64 } %t382, 0 - %t386 = getelementptr inbounds %S.ast.Type, ptr %t385, i64 %t381 - %t387 = load %S.ast.Type, ptr %t386 - %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t379, %S.ast.Type %t387) - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.2597, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = getelementptr inbounds %S.gen.Val, ptr %a377, i32 0, i32 0 - %t395 = load { ptr, i64, i64 }, ptr %t394 - store { ptr, i64, i64 } %t393, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t393, ptr %a399 - call void @finch_str_drop(ptr %a399) - %t400 = load { ptr, i64, i64 }, ptr %a396 - %t401 = load i64, ptr %t378 - %t402 = add i64 %t401, 1 - call void @finch_arr_reserve(ptr %a327, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t403 = load ptr, ptr %a327 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 - store { ptr, i64, i64 } %t400, ptr %t404 - store i64 %t402, ptr %t378 - call void @finch.drop.S_gen_Val(ptr %a377) - br label %for.step4255 -for.step4255: - %t405 = load i64, ptr %a329 - %t406 = add i64 %t405, 1 - store i64 %t406, ptr %a329 - br label %for.cond4253 -for.end4256: - %t407 = load ptr, ptr %a1 - %t408 = load %S.gen.FnSig, ptr %a323 - %t409 = load %S.ast.Node, ptr %a2 - %t410 = load { ptr, i64, i64 }, ptr %a327 - %t411 = load { ptr, i64, i64 }, ptr %a5 - %t412 = call %S.gen.Val @finch.gen.emitCall(ptr %t407, %S.gen.FnSig %t408, %S.ast.Node %t409, { ptr, i64, i64 } %t410, { ptr, i64, i64 } %t411) - store %S.gen.Val %t412, ptr %a413 - store i64 0, ptr %a414 - br label %each.cond4267 -each.cond4267: - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t416 = load i64, ptr %t415 - %t417 = load i64, ptr %a414 - %t418 = icmp slt i64 %t417, %t416 - br i1 %t418, label %each.body4268, label %each.end4270 -each.body4268: - %t419 = load ptr, ptr %a159 - %t420 = getelementptr inbounds %S.gen.Val, ptr %t419, i64 %t417 - %t421 = load %S.gen.Val, ptr %t420 - store %S.gen.Val %t421, ptr %a422 - %t423 = load ptr, ptr %a1 - %t424 = load %S.gen.Val, ptr %a422 - call void @finch.gen.release(ptr %t423, %S.gen.Val %t424) - br label %each.step4269 -each.step4269: - %t425 = load i64, ptr %a414 - %t426 = add i64 %t425, 1 - store i64 %t426, ptr %a414 - br label %each.cond4267 -each.end4270: - %t427 = load ptr, ptr %a1 - %t428 = load i64, ptr %a165 - call void @finch.gen.heldEnd(ptr %t427, i64 %t428) - %t429 = load %S.gen.Val, ptr %a413 - call void @finch.drop.arr_str(ptr %a327) - call void @finch.drop.S_gen_FnSig(ptr %a323) - call void @finch.drop.arr_S_gen_Val(ptr %a159) - call void @finch.drop.S_gen_Binds(ptr %a137) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t429 -} - -define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { -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.cond4282 -n.cond4282: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4283, label %n.end4284 -n.body4283: - %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.cond4282 -n.end4284: - 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 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4274, label %ok4275 -panic4274: - call void @finch_panic(ptr @.str.2598, i64 1843, ptr @.str.2599) - unreachable -ok4275: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 26 - %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 %panic4276, label %ok4277 -panic4276: - call void @finch_panic(ptr @.str.2600, i64 1843, ptr @.str.2601) - unreachable -ok4277: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 16 - %t10 = load i64, ptr %a2 - %t11 = load { ptr, i64, i64 }, ptr %t9 - %t12 = extractvalue { ptr, i64, i64 } %t11, 1 - %t13 = icmp uge i64 %t10, %t12 - br i1 %t13, label %range4278, label %inrange4279 -range4278: - call void @finch_panic_index(ptr @.str.2602, i64 1843, i64 %t10, i64 %t12) - unreachable -inrange4279: - %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.missing4280, label %map.found4281 -map.missing4280: - 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.2603, i64 1843, ptr %a21) - unreachable -map.found4281: - %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 %panic4285, label %ok4286 -panic4285: - call void @finch_panic(ptr @.str.2604, i64 1844, ptr @.str.2605) - unreachable -ok4286: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 16 - %t35 = load i64, ptr %a2 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4287, label %inrange4288 -range4287: - call void @finch_panic_index(ptr @.str.2606, i64 1844, i64 %t35, i64 %t37) - unreachable -inrange4288: - %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.cond4289 -each.cond4289: - %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.body4290, label %each.end4292 -each.body4290: - %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 %then4293, label %endif4295 -then4293: - br label %each.step4291 -endif4295: - %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.2607, 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 %then4296, label %endif4298 -then4296: - %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 %endif4298 -endif4298: - %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 %then4299, label %endif4301 -then4299: - %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.2608, i64 1, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.2609, i64 6, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load i64, ptr %t78 - %t96 = add i64 %t95, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t96, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t97 = load ptr, ptr %a43 - %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i64 %t95 - store { ptr, i64, i64 } %t94, ptr %t98 - store i64 %t96, ptr %t78 - br label %endif4301 -endif4301: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic4302, label %ok4303 -panic4302: - call void @finch_panic(ptr @.str.2610, i64 1858, ptr @.str.2611) - unreachable -ok4303: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 16 - %t102 = load i64, ptr %a2 - %t103 = load { ptr, i64, i64 }, ptr %t101 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 %t102, %t104 - br i1 %t105, label %range4304, label %inrange4305 -range4304: - call void @finch_panic_index(ptr @.str.2612, i64 1858, i64 %t102, i64 %t104) - unreachable -inrange4305: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.gen.StructDef, ptr %t106, i64 %t102 - %t108 = getelementptr inbounds %S.gen.StructDef, ptr %t107, i32 0, i32 11 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t108, i32 0, i32 1 - %t110 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_copy(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = load i64, ptr %t109 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t108, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t108 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115 - store { ptr, i64, i64 } %t114, ptr %t118 - store i64 %t116, ptr %t109 - %t119 = load ptr, ptr %a1 - %t120 = icmp eq ptr %t119, null - br i1 %t120, label %panic4306, label %ok4307 -panic4306: - call void @finch_panic(ptr @.str.2613, i64 1859, ptr @.str.2614) - unreachable -ok4307: - %t121 = getelementptr inbounds %S.gen.Gen, ptr %t119, i32 0, i32 16 - %t122 = load i64, ptr %a2 - %t123 = load { ptr, i64, i64 }, ptr %t121 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 %t122, %t124 - br i1 %t125, label %range4308, label %inrange4309 -range4308: - call void @finch_panic_index(ptr @.str.2615, i64 1859, i64 %t122, i64 %t124) - unreachable -inrange4309: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %t126, i64 %t122 - %t128 = getelementptr inbounds %S.gen.StructDef, ptr %t127, i32 0, i32 12 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load %S.ast.Type, ptr %a60 - store %S.ast.Type %t130, ptr %a131 - call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) - %t133 = load %S.ast.Type, ptr %a132 - %t134 = load i64, ptr %t129 - %t135 = add i64 %t134, 1 - call void @finch_arr_reserve(ptr %t128, i64 %t135, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t136 = load ptr, ptr %t128 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 %t134 - store %S.ast.Type %t133, ptr %t137 - store i64 %t135, ptr %t129 - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic4310, label %ok4311 -panic4310: - call void @finch_panic(ptr @.str.2616, i64 1860, ptr @.str.2617) - unreachable -ok4311: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load i64, ptr %a2 - %t142 = load { ptr, i64, i64 }, ptr %t140 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 %t141, %t143 - br i1 %t144, label %range4312, label %inrange4313 -range4312: - call void @finch_panic_index(ptr @.str.2618, i64 1860, i64 %t141, i64 %t143) - unreachable -inrange4313: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.gen.StructDef, ptr %t145, i64 %t141 - %t147 = getelementptr inbounds %S.gen.StructDef, ptr %t146, i32 0, i32 3 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i32 0, i32 1 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = load i64, ptr %t148 - %t152 = add i64 %t151, 1 - call void @finch_arr_reserve(ptr %t147, i64 %t152, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t153 = load ptr, ptr %t147 - %t154 = getelementptr inbounds i64, ptr %t153, i64 %t151 - store i64 %t150, ptr %t154 - store i64 %t152, ptr %t148 - %t155 = load ptr, ptr %a1 - %t156 = icmp eq ptr %t155, null - br i1 %t156, label %panic4314, label %ok4315 -panic4314: - call void @finch_panic(ptr @.str.2619, i64 1861, ptr @.str.2620) - unreachable -ok4315: - %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 16 - %t158 = load i64, ptr %a2 - %t159 = load { ptr, i64, i64 }, ptr %t157 - %t160 = extractvalue { ptr, i64, i64 } %t159, 1 - %t161 = icmp uge i64 %t158, %t160 - br i1 %t161, label %range4316, label %inrange4317 -range4316: - call void @finch_panic_index(ptr @.str.2621, i64 1861, i64 %t158, i64 %t160) - unreachable -inrange4317: - %t162 = extractvalue { ptr, i64, i64 } %t159, 0 - %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t158 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %t163, i32 0, i32 4 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 - %t166 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t167 = load i64, ptr %t166 - %t168 = load i64, ptr %t165 - %t169 = add i64 %t168, 1 - call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t170 = load ptr, ptr %t164 - %t171 = getelementptr inbounds i64, ptr %t170, i64 %t168 - store i64 %t167, ptr %t171 - store i64 %t169, ptr %t165 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a60 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = load i64, ptr %t172 - %t177 = add i64 %t176, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t178 = load ptr, ptr %a43 - %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176 - store { ptr, i64, i64 } %t175, ptr %t179 - store i64 %t177, ptr %t172 - %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t181 = load i64, ptr %t180 - %t182 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 - %t183 = load i64, ptr %t182 - %t184 = add i64 %t181, %t183 - store i64 %t184, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a60) - br label %each.step4291 -each.step4291: - %t185 = load i64, ptr %a45 - %t186 = add i64 %t185, 1 - store i64 %t186, ptr %a45 - br label %each.cond4289 -each.end4292: - %t187 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t188 = load i64, ptr %t187 - %t189 = load i64, ptr %a42 - %t190 = icmp sgt i64 %t188, %t189 - br i1 %t190, label %then4318, label %endif4320 -then4318: - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t192 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t193 = load i64, ptr %t192 - %t194 = load i64, ptr %a42 - %t195 = sub i64 %t193, %t194 - call void @finch_str_from_int(ptr %a196, i64 %t195) - %t197 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2622, i64 1, i64 0 }, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t197, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.2623, i64 6, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = load i64, ptr %t191 - %t209 = add i64 %t208, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t209, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t210 = load ptr, ptr %a43 - %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i64 %t208 - store { ptr, i64, i64 } %t207, ptr %t211 - store i64 %t209, ptr %t191 - br label %endif4320 -endif4320: - %t212 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t213 = load { ptr, i64, i64 }, ptr %t212 - %t214 = load ptr, ptr %a1 - %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic4321, label %ok4322 -panic4321: - call void @finch_panic(ptr @.str.2624, i64 1868, ptr @.str.2625) - unreachable -ok4322: - %t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 16 - %t217 = load i64, ptr %a2 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range4323, label %inrange4324 -range4323: - call void @finch_panic_index(ptr @.str.2626, i64 1868, i64 %t217, i64 %t219) - unreachable -inrange4324: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.gen.StructDef, ptr %t221, i64 %t217 - %t223 = getelementptr inbounds %S.gen.StructDef, ptr %t222, i32 0, i32 8 - store { ptr, i64, i64 } %t213, ptr %a224 - call void @finch_str_copy(ptr %a225, ptr %a224) - %t226 = load { ptr, i64, i64 }, ptr %a225 - %t227 = load { ptr, i64, i64 }, ptr %t223 - store { ptr, i64, i64 } %t226, ptr %t223 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5 - %t230 = load i1, ptr %t229 - br label %logic.from4325 -logic.from4325: - br i1 %t230, label %logic.rhs4326, label %logic.end4327 -logic.rhs4326: - %t231 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i32 0, i32 1 - %t233 = load i64, ptr %t232 - %t234 = icmp eq i64 %t233, 0 - br label %logic.rend4328 -logic.rend4328: - br label %logic.end4327 -logic.end4327: - %t235 = phi i1 [ false, %logic.from4325 ], [ %t234, %logic.rend4328 ] - br i1 %t235, label %then4329, label %endif4331 -then4329: - %t236 = load ptr, ptr %a1 - %t237 = icmp eq ptr %t236, null - br i1 %t237, label %panic4332, label %ok4333 -panic4332: - call void @finch_panic(ptr @.str.2628, i64 1870, ptr @.str.2629) - unreachable -ok4333: - %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 16 - %t239 = load i64, ptr %a2 - %t240 = load { ptr, i64, i64 }, ptr %t238 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 %t239, %t241 - br i1 %t242, label %range4334, label %inrange4335 -range4334: - call void @finch_panic_index(ptr @.str.2630, i64 1870, i64 %t239, i64 %t241) - unreachable -inrange4335: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.gen.StructDef, ptr %t243, i64 %t239 - %t245 = getelementptr inbounds %S.gen.StructDef, ptr %t244, i32 0, i32 8 - %t246 = load { ptr, i64, i64 }, ptr %t245 - store { ptr, i64, i64 } { ptr @.str.2627, i64 49, i64 0 }, ptr %t245 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif4331 -endif4331: - %t248 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t249 = load i64, ptr %t248 - %t250 = load ptr, ptr %a1 - %t251 = icmp eq ptr %t250, null - br i1 %t251, label %panic4336, label %ok4337 -panic4336: - call void @finch_panic(ptr @.str.2631, i64 1872, ptr @.str.2632) - unreachable -ok4337: - %t252 = getelementptr inbounds %S.gen.Gen, ptr %t250, i32 0, i32 16 - %t253 = load i64, ptr %a2 - %t254 = load { ptr, i64, i64 }, ptr %t252 - %t255 = extractvalue { ptr, i64, i64 } %t254, 1 - %t256 = icmp uge i64 %t253, %t255 - br i1 %t256, label %range4338, label %inrange4339 -range4338: - call void @finch_panic_index(ptr @.str.2633, i64 1872, i64 %t253, i64 %t255) - unreachable -inrange4339: - %t257 = extractvalue { ptr, i64, i64 } %t254, 0 - %t258 = getelementptr inbounds %S.gen.StructDef, ptr %t257, i64 %t253 - %t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i32 0, i32 9 - store i64 %t249, ptr %t259 - %t260 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 - %t261 = load i64, ptr %t260 - %t262 = load ptr, ptr %a1 - %t263 = icmp eq ptr %t262, null - br i1 %t263, label %panic4340, label %ok4341 -panic4340: - call void @finch_panic(ptr @.str.2634, i64 1873, ptr @.str.2635) - unreachable -ok4341: - %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 16 - %t265 = load i64, ptr %a2 - %t266 = load { ptr, i64, i64 }, ptr %t264 - %t267 = extractvalue { ptr, i64, i64 } %t266, 1 - %t268 = icmp uge i64 %t265, %t267 - br i1 %t268, label %range4342, label %inrange4343 -range4342: - call void @finch_panic_index(ptr @.str.2636, i64 1873, i64 %t265, i64 %t267) - unreachable -inrange4343: - %t269 = extractvalue { ptr, i64, i64 } %t266, 0 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i64 %t265 - %t271 = getelementptr inbounds %S.gen.StructDef, ptr %t270, i32 0, i32 10 - store i64 %t261, ptr %t271 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic4344, label %ok4345 -panic4344: - call void @finch_panic(ptr @.str.2637, i64 1874, ptr @.str.2638) - unreachable -ok4345: - %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 16 - %t275 = load i64, ptr %a2 - %t276 = load { ptr, i64, i64 }, ptr %t274 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range4346, label %inrange4347 -range4346: - call void @finch_panic_index(ptr @.str.2639, i64 1874, i64 %t275, i64 %t277) - unreachable -inrange4347: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.gen.StructDef, ptr %t279, i64 %t275 - %t281 = getelementptr inbounds %S.gen.StructDef, ptr %t280, i32 0, i32 15 - store i64 2, ptr %t281 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic4348, label %ok4349 -panic4348: - call void @finch_panic(ptr @.str.2640, i64 1875, ptr @.str.2641) - unreachable -ok4349: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 2 - %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i32 0, i32 1 - %t286 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } { ptr @.str.2642, i64 5, i64 0 }, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2643, i64 10, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2644, i64 2, i64 0 }, ptr %a298 - call void @finch_str_join(ptr %a299, ptr %a43, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t296, ptr %a302 - store { ptr, i64, i64 } %t300, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t296, ptr %a304 - call void @finch_str_drop(ptr %a304) - store { ptr, i64, i64 } %t300, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a301 - store { ptr, i64, i64 } %t306, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.2645, i64 2, i64 0 }, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - store { ptr, i64, i64 } %t306, ptr %a310 - call void @finch_str_drop(ptr %a310) - %t311 = load { ptr, i64, i64 }, ptr %a307 - %t312 = load i64, ptr %t285 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %t284, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %t284 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t285 - call void @finch.drop.arr_str(ptr %a43) - call void @finch.drop.S_cimport_CStruct(ptr %a31) - ret void -} - -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 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4350, label %ok4351 -panic4350: - call void @finch_panic(ptr @.str.2646, i64 1879, ptr @.str.2647) - unreachable -ok4351: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load i64, ptr %a2 - %t7 = load { ptr, i64, i64 }, ptr %t5 - %t8 = extractvalue { ptr, i64, i64 } %t7, 1 - %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range4352, label %inrange4353 -range4352: - call void @finch_panic_index(ptr @.str.2648, i64 1879, i64 %t6, i64 %t8) - unreachable -inrange4353: - %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 %then4354, label %endif4356 -then4354: - ret void -endif4356: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic4357, label %ok4358 -panic4357: - call void @finch_panic(ptr @.str.2649, i64 1882, ptr @.str.2650) - unreachable -ok4358: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 16 - %t18 = load i64, ptr %a2 - %t19 = load { ptr, i64, i64 }, ptr %t17 - %t20 = extractvalue { ptr, i64, i64 } %t19, 1 - %t21 = icmp uge i64 %t18, %t20 - br i1 %t21, label %range4359, label %inrange4360 -range4359: - call void @finch_panic_index(ptr @.str.2651, i64 1882, i64 %t18, i64 %t20) - unreachable -inrange4360: - %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 %then4361, label %endif4363 -then4361: - %t26 = load ptr, ptr %a1 - %t27 = load i64, ptr %a2 - call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) - ret void -endif4363: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4364, label %ok4365 -panic4364: - call void @finch_panic(ptr @.str.2652, i64 1886, ptr @.str.2653) - unreachable -ok4365: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a2 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range4366, label %inrange4367 -range4366: - call void @finch_panic_index(ptr @.str.2654, i64 1886, i64 %t31, i64 %t33) - unreachable -inrange4367: - %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 %then4368, label %endif4370 -then4368: - %t41 = load ptr, ptr %a1 - %t42 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) - ret void -endif4370: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic4371, label %ok4372 -panic4371: - call void @finch_panic(ptr @.str.2655, i64 1891, ptr @.str.2656) - unreachable -ok4372: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 18 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch.copy.arr_str(ptr %a48, ptr %a47) - %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 %panic4373, label %ok4374 -panic4373: - call void @finch_panic(ptr @.str.2657, i64 1892, ptr @.str.2658) - unreachable -ok4374: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 19 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %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 %panic4375, label %ok4376 -panic4375: - call void @finch_panic(ptr @.str.2659, i64 1893, ptr @.str.2660) - unreachable -ok4376: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 20 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %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 %panic4377, label %ok4378 -panic4377: - call void @finch_panic(ptr @.str.2661, i64 1894, ptr @.str.2662) - unreachable -ok4378: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 16 - %t70 = load i64, ptr %a2 - %t71 = load { ptr, i64, i64 }, ptr %t69 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 %t70, %t72 - br i1 %t73, label %range4379, label %inrange4380 -range4379: - call void @finch_panic_index(ptr @.str.2663, i64 1894, i64 %t70, i64 %t72) - unreachable -inrange4380: - %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 %panic4381, label %ok4382 -panic4381: - call void @finch_panic(ptr @.str.2664, i64 1894, ptr @.str.2665) - unreachable -ok4382: - %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 18 - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch.copy.arr_str(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t83, ptr %t80 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch.drop.arr_str(ptr %a85) - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4383, label %ok4384 -panic4383: - call void @finch_panic(ptr @.str.2666, i64 1895, ptr @.str.2667) - unreachable -ok4384: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 16 - %t89 = load i64, ptr %a2 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range4385, label %inrange4386 -range4385: - call void @finch_panic_index(ptr @.str.2668, i64 1895, i64 %t89, i64 %t91) - unreachable -inrange4386: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.gen.StructDef, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.gen.StructDef, ptr %t94, i32 0, i32 7 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = load ptr, ptr %a1 - %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic4387, label %ok4388 -panic4387: - call void @finch_panic(ptr @.str.2669, i64 1895, ptr @.str.2670) - unreachable -ok4388: - %t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 19 - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch.copy.arr_S_ast_Type(ptr %a101, ptr %a100) - %t102 = load { ptr, i64, i64 }, ptr %a101 - %t103 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t102, ptr %t99 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch.drop.arr_S_ast_Type(ptr %a104) - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4389, label %ok4390 -panic4389: - call void @finch_panic(ptr @.str.2672, i64 1896, ptr @.str.2673) - unreachable -ok4390: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 16 - %t108 = load i64, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %t107 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 %t108, %t110 - br i1 %t111, label %range4391, label %inrange4392 -range4391: - call void @finch_panic_index(ptr @.str.2674, i64 1896, i64 %t108, i64 %t110) - unreachable -inrange4392: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds %S.gen.StructDef, ptr %t112, i64 %t108 - %t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.2671, i64 17, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.2675, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load ptr, ptr %a1 - %t126 = icmp eq ptr %t125, null - br i1 %t126, label %panic4393, label %ok4394 -panic4393: - call void @finch_panic(ptr @.str.2676, i64 1896, ptr @.str.2677) - unreachable -ok4394: - %t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 20 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t124, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load ptr, ptr %a1 - %t131 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t130, i64 %t131) - %t132 = load { ptr, i64, i64 }, ptr %a50 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic4395, label %ok4396 -panic4395: - call void @finch_panic(ptr @.str.2678, i64 1898, ptr @.str.2679) - unreachable -ok4396: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 18 - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch.copy.arr_str(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t138, ptr %t135 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch.drop.arr_str(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a58 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4397, label %ok4398 -panic4397: - call void @finch_panic(ptr @.str.2680, i64 1899, ptr @.str.2681) - unreachable -ok4398: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 19 - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch.copy.arr_S_ast_Type(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t147, ptr %t144 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_S_ast_Type(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a66 - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic4399, label %ok4400 -panic4399: - call void @finch_panic(ptr @.str.2682, i64 1900, ptr @.str.2683) - unreachable -ok4400: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 20 - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t156, ptr %t153 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_S_ast_Type(ptr %a58) - call void @finch.drop.arr_str(ptr %a50) - ret void -} - -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 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i1, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a142 = alloca %S.ast.Node, align 16 - %a148 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca %S.ast.Type, align 16 - %a222 = alloca %S.ast.Type, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4401, label %ok4402 -panic4401: - call void @finch_panic(ptr @.str.2684, i64 1904, ptr @.str.2685) - unreachable -ok4402: - %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 %panic4403, label %ok4404 -panic4403: - call void @finch_panic(ptr @.str.2686, i64 1904, ptr @.str.2687) - unreachable -ok4404: - %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 %range4405, label %inrange4406 -range4405: - call void @finch_panic_index(ptr @.str.2688, i64 1904, i64 %t9, i64 %t11) - unreachable -inrange4406: - %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 %range4407, label %inrange4408 -range4407: - call void @finch_panic_index(ptr @.str.2689, i64 1904, i64 %t16, i64 %t18) - unreachable -inrange4408: - %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 %panic4409, label %ok4410 -panic4409: - call void @finch_panic(ptr @.str.2690, i64 1904, ptr @.str.2691) - unreachable -ok4410: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 16 - %t26 = load i64, ptr %a2 - %t27 = load { ptr, i64, i64 }, ptr %t25 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range4411, label %inrange4412 -range4411: - call void @finch_panic_index(ptr @.str.2692, i64 1904, i64 %t26, i64 %t28) - unreachable -inrange4412: - %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 %range4413, label %inrange4414 -range4413: - call void @finch_panic_index(ptr @.str.2693, i64 1904, i64 %t33, i64 %t35) - unreachable -inrange4414: - %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 %panic4415, label %ok4416 -panic4415: - call void @finch_panic(ptr @.str.2694, i64 1905, ptr @.str.2695) - unreachable -ok4416: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 16 - %t47 = load i64, ptr %a2 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range4417, label %inrange4418 -range4417: - call void @finch_panic_index(ptr @.str.2696, i64 1905, i64 %t47, i64 %t49) - unreachable -inrange4418: - %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 %then4419, label %endif4421 -then4419: - %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.2697, 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.2698, i64 26, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } %t68, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t68, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.2699, i64 7, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t80, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t80, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2700, i64 15, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - br label %endif4421 -endif4421: - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4422, label %ok4423 -panic4422: - call void @finch_panic(ptr @.str.2701, i64 1908, ptr @.str.2702) - unreachable -ok4423: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 16 - %t97 = load i64, ptr %a2 - %t98 = load { ptr, i64, i64 }, ptr %t96 - %t99 = extractvalue { ptr, i64, i64 } %t98, 1 - %t100 = icmp uge i64 %t97, %t99 - br i1 %t100, label %range4424, label %inrange4425 -range4424: - call void @finch_panic_index(ptr @.str.2703, i64 1908, i64 %t97, i64 %t99) - unreachable -inrange4425: - %t101 = extractvalue { ptr, i64, i64 } %t98, 0 - %t102 = getelementptr inbounds %S.gen.StructDef, ptr %t101, i64 %t97 - %t103 = getelementptr inbounds %S.gen.StructDef, ptr %t102, i32 0, i32 15 - store i64 1, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic4426, label %ok4427 -panic4426: - call void @finch_panic(ptr @.str.2704, i64 1909, ptr @.str.2705) - unreachable -ok4427: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 14 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_copy(ptr %a109, ptr %a108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic4428, label %ok4429 -panic4428: - call void @finch_panic(ptr @.str.2706, i64 1910, ptr @.str.2707) - unreachable -ok4429: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 16 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range4430, label %inrange4431 -range4430: - call void @finch_panic_index(ptr @.str.2708, i64 1910, i64 %t115, i64 %t117) - unreachable -inrange4431: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.StructDef, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %t120, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic4432, label %ok4433 -panic4432: - call void @finch_panic(ptr @.str.2709, i64 1910, ptr @.str.2710) - unreachable -ok4433: - %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 14 - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - %t129 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t128, ptr %t125 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i1 false, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9 - store i64 0, ptr %a134 - br label %each.cond4434 -each.cond4434: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = load i64, ptr %a134 - %t138 = icmp slt i64 %t137, %t136 - br i1 %t138, label %each.body4435, label %each.end4437 -each.body4435: - %t139 = load ptr, ptr %t133 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 %t137 - %t141 = load %S.ast.Node, ptr %t140 - store %S.ast.Node %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 5 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = load %S.ast.Node, ptr %a142 - %t147 = call %S.ast.Type @finch.gen.resolve(ptr %t143, %S.ast.Type %t145, %S.ast.Node %t146) - store %S.ast.Type %t147, ptr %a148 - %t149 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.2711, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp ne i32 %t153, 0 - br i1 %t154, label %then4438, label %endif4440 -then4438: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 3 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 2 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = call i64 @finch.gen.findStruct(ptr %t156, { ptr, i64, i64 } %t158, { ptr, i64, i64 } %t160) - call void @finch.gen.resolveStruct(ptr %t155, i64 %t161) - br label %endif4440 -endif4440: - %t162 = load ptr, ptr %a1 - %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic4441, label %ok4442 -panic4441: - call void @finch_panic(ptr @.str.2712, i64 1918, ptr @.str.2713) - unreachable -ok4442: - %t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 16 - %t165 = load i64, ptr %a2 - %t166 = load { ptr, i64, i64 }, ptr %t164 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range4443, label %inrange4444 -range4443: - call void @finch_panic_index(ptr @.str.2714, i64 1918, i64 %t165, i64 %t167) - unreachable -inrange4444: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds %S.gen.StructDef, ptr %t169, i64 %t165 - %t171 = getelementptr inbounds %S.gen.StructDef, ptr %t170, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4445, label %ok4446 -panic4445: - call void @finch_panic(ptr @.str.2715, i64 1918, ptr @.str.2716) - unreachable -ok4446: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 16 - %t176 = load i64, ptr %a2 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range4447, label %inrange4448 -range4447: - call void @finch_panic_index(ptr @.str.2717, i64 1918, i64 %t176, i64 %t178) - unreachable -inrange4448: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.gen.StructDef, ptr %t181, i32 0, i32 11 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = load i64, ptr %t172 - %t186 = add i64 %t185, 1 - call void @finch_arr_reserve(ptr %t171, i64 %t186, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t187 = load ptr, ptr %t171 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t185 - store i64 %t184, ptr %t188 - store i64 %t186, ptr %t172 - %t189 = load ptr, ptr %a1 - %t190 = icmp eq ptr %t189, null - br i1 %t190, label %panic4449, label %ok4450 -panic4449: - call void @finch_panic(ptr @.str.2718, i64 1919, ptr @.str.2719) - unreachable -ok4450: - %t191 = getelementptr inbounds %S.gen.Gen, ptr %t189, i32 0, i32 16 - %t192 = load i64, ptr %a2 - %t193 = load { ptr, i64, i64 }, ptr %t191 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range4451, label %inrange4452 -range4451: - call void @finch_panic_index(ptr @.str.2720, i64 1919, i64 %t192, i64 %t194) - unreachable -inrange4452: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.gen.StructDef, ptr %t196, i64 %t192 - %t198 = getelementptr inbounds %S.gen.StructDef, ptr %t197, i32 0, i32 11 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 1 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_copy(ptr %a203, ptr %a202) - %t204 = load { ptr, i64, i64 }, ptr %a203 - %t205 = load i64, ptr %t199 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t198, i64 %t206, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t198 - %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t207, i64 %t205 - store { ptr, i64, i64 } %t204, ptr %t208 - store i64 %t206, ptr %t199 - %t209 = load ptr, ptr %a1 - %t210 = icmp eq ptr %t209, null - br i1 %t210, label %panic4453, label %ok4454 -panic4453: - call void @finch_panic(ptr @.str.2721, i64 1920, ptr @.str.2722) - unreachable -ok4454: - %t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 16 - %t212 = load i64, ptr %a2 - %t213 = load { ptr, i64, i64 }, ptr %t211 - %t214 = extractvalue { ptr, i64, i64 } %t213, 1 - %t215 = icmp uge i64 %t212, %t214 - br i1 %t215, label %range4455, label %inrange4456 -range4455: - call void @finch_panic_index(ptr @.str.2723, i64 1920, i64 %t212, i64 %t214) - unreachable -inrange4456: - %t216 = extractvalue { ptr, i64, i64 } %t213, 0 - %t217 = getelementptr inbounds %S.gen.StructDef, ptr %t216, i64 %t212 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i32 0, i32 12 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %a148 - store %S.ast.Type %t220, ptr %a221 - call void @finch.copy.S_ast_Type(ptr %a222, ptr %a221) - %t223 = load %S.ast.Type, ptr %a222 - %t224 = load i64, ptr %t219 - %t225 = add i64 %t224, 1 - call void @finch_arr_reserve(ptr %t218, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t226 = load ptr, ptr %t218 - %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 - store %S.ast.Type %t223, ptr %t227 - store i64 %t225, ptr %t219 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a148 - %t230 = call i1 @finch.gen.owning(ptr %t228, %S.ast.Type %t229) - br i1 %t230, label %then4457, label %endif4459 -then4457: - store i1 true, ptr %a131 - br label %endif4459 -endif4459: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a148 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - %t235 = load i64, ptr %t231 - %t236 = add i64 %t235, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t236, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t237 = load ptr, ptr %a132 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t235 - store { ptr, i64, i64 } %t234, ptr %t238 - store i64 %t236, ptr %t231 - call void @finch.drop.S_ast_Type(ptr %a148) - br label %each.step4436 -each.step4436: - %t239 = load i64, ptr %a134 - %t240 = add i64 %t239, 1 - store i64 %t240, ptr %a134 - br label %each.cond4434 -each.end4437: - %t241 = load i1, ptr %a131 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic4460, label %ok4461 -panic4460: - call void @finch_panic(ptr @.str.2724, i64 1926, ptr @.str.2725) - unreachable -ok4461: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 16 - %t245 = load i64, ptr %a2 - %t246 = load { ptr, i64, i64 }, ptr %t244 - %t247 = extractvalue { ptr, i64, i64 } %t246, 1 - %t248 = icmp uge i64 %t245, %t247 - br i1 %t248, label %range4462, label %inrange4463 -range4462: - call void @finch_panic_index(ptr @.str.2726, i64 1926, i64 %t245, i64 %t247) - unreachable -inrange4463: - %t249 = extractvalue { ptr, i64, i64 } %t246, 0 - %t250 = getelementptr inbounds %S.gen.StructDef, ptr %t249, i64 %t245 - %t251 = getelementptr inbounds %S.gen.StructDef, ptr %t250, i32 0, i32 16 - store i1 %t241, ptr %t251 - %t252 = load { ptr, i64, i64 }, ptr %a111 - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic4464, label %ok4465 -panic4464: - call void @finch_panic(ptr @.str.2727, i64 1927, ptr @.str.2728) - unreachable -ok4465: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 14 - store { ptr, i64, i64 } %t252, ptr %a256 - call void @finch_str_copy(ptr %a257, ptr %a256) - %t258 = load { ptr, i64, i64 }, ptr %a257 - %t259 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t258, ptr %t255 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic4466, label %ok4467 -panic4466: - call void @finch_panic(ptr @.str.2729, i64 1928, ptr @.str.2730) - unreachable -ok4467: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 16 - %t264 = load i64, ptr %a2 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range4468, label %inrange4469 -range4468: - call void @finch_panic_index(ptr @.str.2731, i64 1928, i64 %t264, i64 %t266) - unreachable -inrange4469: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.gen.StructDef, ptr %t268, i64 %t264 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i32 0, i32 15 - store i64 2, ptr %t270 - %t271 = load ptr, ptr %a1 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic4470, label %ok4471 -panic4470: - call void @finch_panic(ptr @.str.2732, i64 1929, ptr @.str.2733) - unreachable -ok4471: - %t273 = getelementptr inbounds %S.gen.Gen, ptr %t271, i32 0, i32 2 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load ptr, ptr %a1 - %t276 = icmp eq ptr %t275, null - br i1 %t276, label %panic4472, label %ok4473 -panic4472: - call void @finch_panic(ptr @.str.2735, i64 1929, ptr @.str.2736) - unreachable -ok4473: - %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 16 - %t278 = load i64, ptr %a2 - %t279 = load { ptr, i64, i64 }, ptr %t277 - %t280 = extractvalue { ptr, i64, i64 } %t279, 1 - %t281 = icmp uge i64 %t278, %t280 - br i1 %t281, label %range4474, label %inrange4475 -range4474: - call void @finch_panic_index(ptr @.str.2737, i64 1929, i64 %t278, i64 %t280) - unreachable -inrange4475: - %t282 = extractvalue { ptr, i64, i64 } %t279, 0 - %t283 = getelementptr inbounds %S.gen.StructDef, ptr %t282, i64 %t278 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %t283, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t285) - store { ptr, i64, i64 } { ptr @.str.2734, i64 3, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2738, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load ptr, ptr %a1 - %t298 = icmp eq ptr %t297, null - br i1 %t298, label %panic4476, label %ok4477 -panic4476: - call void @finch_panic(ptr @.str.2739, i64 1929, ptr @.str.2740) - unreachable -ok4477: - %t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 16 - %t300 = load i64, ptr %a2 - %t301 = load { ptr, i64, i64 }, ptr %t299 - %t302 = extractvalue { ptr, i64, i64 } %t301, 1 - %t303 = icmp uge i64 %t300, %t302 - br i1 %t303, label %range4478, label %inrange4479 -range4478: - call void @finch_panic_index(ptr @.str.2741, i64 1929, i64 %t300, i64 %t302) - unreachable -inrange4479: - %t304 = extractvalue { ptr, i64, i64 } %t301, 0 - %t305 = getelementptr inbounds %S.gen.StructDef, ptr %t304, i64 %t300 - %t306 = getelementptr inbounds %S.gen.StructDef, ptr %t305, i32 0, i32 1 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t296, ptr %a310 - store { ptr, i64, i64 } %t308, ptr %a311 - call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) - store { ptr, i64, i64 } %t296, ptr %a312 - call void @finch_str_drop(ptr %a312) - store { ptr, i64, i64 } %t308, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.2742, i64 10, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2743, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a132, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t319, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t319, ptr %a327 - call void @finch_str_drop(ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.2744, i64 2, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load i64, ptr %t274 - %t336 = add i64 %t335, 1 - call void @finch_arr_reserve(ptr %t273, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t337 = load ptr, ptr %t273 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335 - store { ptr, i64, i64 } %t334, ptr %t338 - store i64 %t336, ptr %t274 - call void @finch.drop.arr_str(ptr %a132) - call void @finch_str_drop(ptr %a111) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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 %panic4480, label %ok4481 -panic4480: - call void @finch_panic(ptr @.str.2745, i64 1938, ptr @.str.2746) - unreachable -ok4481: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 33 - %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 %panic4482, label %ok4483 -panic4482: - call void @finch_panic(ptr @.str.2747, i64 1939, ptr @.str.2748) - unreachable -ok4483: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 33 - %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 - %a10 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - %t2 = load i64, ptr %a1 - %t3 = icmp slt i64 %t2, 0 - br i1 %t3, label %then4484, label %endif4486 -then4484: - ret { ptr, i64, i64 } { ptr @.str.2749, i64 4, i64 0 } -endif4486: - %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.2750, i64 1, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a9 - call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) - store { ptr, i64, i64 } %t6, ptr %a10 - call void @finch_str_drop(ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a7 - ret { ptr, i64, i64 } %t11 -} - -define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) { -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 %then4487, label %endif4489 -then4487: - %t5 = load i64, ptr %a1 - ret i64 %t5 -endif4489: - %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 %panic4490, label %ok4491 -panic4490: - call void @finch_panic(ptr @.str.2751, i64 1958, ptr @.str.2752) - unreachable -ok4491: - %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.2753, 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.from4492 -logic.from4492: - br i1 %t13, label %logic.end4494, label %logic.rhs4493 -logic.rhs4493: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2754, 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.rend4495 -logic.rend4495: - br label %logic.end4494 -logic.end4494: - %t19 = phi i1 [ true, %logic.from4492 ], [ %t18, %logic.rend4495 ] - br label %logic.from4496 -logic.from4496: - br i1 %t19, label %logic.end4498, label %logic.rhs4497 -logic.rhs4497: - %t20 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2755, 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.rend4499 -logic.rend4499: - br label %logic.end4498 -logic.end4498: - %t25 = phi i1 [ true, %logic.from4496 ], [ %t24, %logic.rend4499 ] - br label %logic.from4500 -logic.from4500: - br i1 %t25, label %logic.end4502, label %logic.rhs4501 -logic.rhs4501: - %t26 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2756, 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.rend4503 -logic.rend4503: - br label %logic.end4502 -logic.end4502: - %t31 = phi i1 [ true, %logic.from4500 ], [ %t30, %logic.rend4503 ] - br i1 %t31, label %then4504, label %endif4506 -then4504: - %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 - %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t33 -endif4506: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2757, 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.from4507 -logic.from4507: - br i1 %t38, label %logic.end4509, label %logic.rhs4508 -logic.rhs4508: - %t39 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2758, 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.rend4510 -logic.rend4510: - br label %logic.end4509 -logic.end4509: - %t44 = phi i1 [ true, %logic.from4507 ], [ %t43, %logic.rend4510 ] - br i1 %t44, label %then4511, label %endif4513 -then4511: - %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 - %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t46 -endif4513: - %t47 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.2759, 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.from4514 -logic.from4514: - br i1 %t51, label %logic.end4516, label %logic.rhs4515 -logic.rhs4515: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2760, 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.rend4517 -logic.rend4517: - br label %logic.end4516 -logic.end4516: - %t57 = phi i1 [ true, %logic.from4514 ], [ %t56, %logic.rend4517 ] - br label %logic.from4518 -logic.from4518: - br i1 %t57, label %logic.end4520, label %logic.rhs4519 -logic.rhs4519: - %t58 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2761, 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.rend4521 -logic.rend4521: - br label %logic.end4520 -logic.end4520: - %t63 = phi i1 [ true, %logic.from4518 ], [ %t62, %logic.rend4521 ] - br label %logic.from4522 -logic.from4522: - br i1 %t63, label %logic.end4524, label %logic.rhs4523 -logic.rhs4523: - %t64 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2762, 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.rend4525 -logic.rend4525: - br label %logic.end4524 -logic.end4524: - %t69 = phi i1 [ true, %logic.from4522 ], [ %t68, %logic.rend4525 ] - br i1 %t69, label %then4526, label %endif4528 -then4526: - %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 - %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t71 -endif4528: - %t72 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.2763, 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.from4529 -logic.from4529: - br i1 %t76, label %logic.end4531, label %logic.rhs4530 -logic.rhs4530: - %t77 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2764, 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.rend4532 -logic.rend4532: - br label %logic.end4531 -logic.end4531: - %t82 = phi i1 [ true, %logic.from4529 ], [ %t81, %logic.rend4532 ] - br i1 %t82, label %then4533, label %endif4535 -then4533: - %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 - %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t84 -endif4535: - %t85 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2765, 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 %then4536, label %endif4538 -then4536: - %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 - %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t91 -endif4538: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2766, 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 %then4539, label %endif4541 -then4539: - %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 %range4542, label %inrange4543 -range4542: - call void @finch_panic_index(ptr @.str.2767, i64 1980, i64 0, i64 %t100) - unreachable -inrange4543: - %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 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t115 -endif4541: - %t116 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2768, 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 %then4544, label %endif4546 -then4544: - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic4547, label %ok4548 -panic4547: - call void @finch_panic(ptr @.str.2769, i64 1984, ptr @.str.2770) - unreachable -ok4548: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 16 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %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 %range4549, label %inrange4550 -range4549: - call void @finch_panic_index(ptr @.str.2771, i64 1984, i64 %t129, i64 %t131) - unreachable -inrange4550: - %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 %then4551, label %endif4553 -then4551: - %t142 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 9 - %t143 = load i64, ptr %t142 - %t144 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t143, 0 - %t145 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 10 - %t146 = load i64, ptr %t145 - %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t147 -endif4553: - 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.cond4554 -each.cond4554: - %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.body4555, label %each.end4557 -each.body4555: - %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 %then4558, label %endif4560 -then4558: - %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 - %t176 = load i64, ptr %t175 - store i64 %t176, ptr %a149 - br label %endif4560 -endif4560: - br label %each.step4556 -each.step4556: - %t177 = load i64, ptr %a151 - %t178 = add i64 %t177, 1 - store i64 %t178, ptr %a151 - br label %each.cond4554 -each.end4557: - %t179 = load i64, ptr %a148 - %t180 = load i64, ptr %a149 - %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) - %t182 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t181, 0 - %t183 = load i64, ptr %a149 - %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t184 -endif4546: - %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 - %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t186 -} - -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 - 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 %then4561, label %endif4563 -then4561: - %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 -endif4563: - 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.cond4564 -each.cond4564: - %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.body4565, label %each.end4567 -each.body4565: - %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.step4566 -each.step4566: - %t40 = load i64, ptr %a13 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a13 - br label %each.cond4564 -each.end4567: - %t42 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t42 -} - -define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) { -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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.2772, 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.2773, i64 11, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a21, i64 %t20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t19, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.2774, i64 9, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a35, i64 %t34) - %t36 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t33, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t36, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.2775, i64 8, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - store { ptr, i64, i64 } %t50, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2776, i64 12, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = load i64, ptr %a6 - %t63 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t62) - store { ptr, i64, i64 } %t61, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.2777, i64 8, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.2778, i64 10, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2779, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t102) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - ret i64 %t103 -} - -define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2780, 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.2781, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a17, i64 %t16) - %t18 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2782, i64 12, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.2783, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret i64 %t41 -} - -define internal i64 @finch.gen.diType(ptr %p0, %S.ast.Type %p1) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a59 = alloca 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 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.EnumDef, align 16 - %a129 = alloca %S.gen.EnumDef, align 16 - %a131 = alloca %S.gen.EnumDef, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca i32, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca i64, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.gen.SizeAlign, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca %S.ast.Type, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.ast.Type, align 16 - %a414 = alloca %S.ast.Type, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca i64, align 16 - %a439 = alloca %S.ast.Type, align 16 - %a440 = alloca i64, align 16 - %a446 = alloca i64, align 16 - %a452 = alloca i64, align 16 - %a458 = alloca i64, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca %S.ast.Type, align 16 - %a547 = alloca i64, align 16 - %a550 = alloca i64, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca i64, align 16 - %a569 = alloca i64, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca %S.gen.StructDef, align 16 - %a677 = alloca %S.gen.StructDef, align 16 - %a679 = alloca %S.gen.StructDef, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca %S.gen.SizeAlign, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca i64, align 16 - %a705 = alloca %S.gen.SizeAlign, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a806 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca i32, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.2784, 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.from4568 -logic.from4568: - br i1 %t13, label %logic.end4570, label %logic.rhs4569 -logic.rhs4569: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2785, 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.rend4571 -logic.rend4571: - br label %logic.end4570 -logic.end4570: - %t19 = phi i1 [ true, %logic.from4568 ], [ %t18, %logic.rend4571 ] - br i1 %t19, label %then4572, label %endif4574 -then4572: - call void @finch_str_drop(ptr %a8) - ret i64 -1 -endif4574: - %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.2786, i64 2, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4575, label %ok4576 -panic4575: - call void @finch_panic(ptr @.str.2787, i64 2033, ptr @.str.2788) - unreachable -ok4576: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 - %t31 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t31, ptr %a32 - %t33 = call i64 @finch_map_find(ptr %t30, ptr %a32, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t34 = icmp sge i64 %t33, 0 - br i1 %t34, label %then4577, label %endif4579 -then4577: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4580, label %ok4581 -panic4580: - call void @finch_panic(ptr @.str.2789, i64 2034, ptr @.str.2790) - unreachable -ok4581: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 34 - %t38 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = call i64 @finch_map_find(ptr %t37, ptr %a39, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %map.missing4582, label %map.found4583 -map.missing4582: - store { ptr, i64, i64 } zeroinitializer, ptr %a42 - store { ptr, i64, i64 } %t38, ptr %a43 - call void @finch_buf_str(ptr %a42, ptr %a43, i32 1) - call void @finch_map_missing(ptr @.str.2791, i64 2034, ptr %a42) - unreachable -map.found4583: - %t44 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t37, i32 0, i32 0 - %t45 = load ptr, ptr %t44 - %t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i64 %t40 - %t47 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t46, i32 0, i32 2 - %t48 = load i64, ptr %t47 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t48 -endif4579: - store i64 -1, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic4584, label %ok4585 -panic4584: - call void @finch_panic(ptr @.str.2792, i64 2037, ptr @.str.2793) - unreachable -ok4585: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 35 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 0, %t54 - br i1 %t55, label %range4586, label %inrange4587 -range4586: - call void @finch_panic_index(ptr @.str.2794, i64 2037, i64 0, i64 %t54) - unreachable -inrange4587: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds i64, ptr %t56, i64 0 - %t58 = load i64, ptr %t57 - store i64 %t58, ptr %a59 - %t60 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2795, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then4588, label %else4589 -then4588: - %t65 = load ptr, ptr %a1 - %t66 = call i64 @finch.gen.basicType(ptr %t65, { ptr, i64, i64 } { ptr @.str.2796, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2797, i64 14, i64 0 }) - store i64 %t66, ptr %a49 - br label %endif4590 -else4589: - %t67 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.2798, i64 4, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then4591, label %else4592 -then4591: - %t72 = load ptr, ptr %a1 - %t73 = call i64 @finch.gen.basicType(ptr %t72, { ptr, i64, i64 } { ptr @.str.2799, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2800, i64 18, i64 0 }) - store i64 %t73, ptr %a49 - br label %endif4593 -else4592: - %t74 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2801, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br i1 %t78, label %then4594, label %else4595 -then4594: - %t79 = load ptr, ptr %a1 - %t80 = call i64 @finch.gen.basicType(ptr %t79, { ptr, i64, i64 } { ptr @.str.2802, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2803, i64 13, i64 0 }) - store i64 %t80, ptr %a49 - br label %endif4596 -else4595: - %t81 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2804, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %then4597, label %else4598 -then4597: - %t86 = load ptr, ptr %a1 - %t87 = call i64 @finch.gen.basicType(ptr %t86, { ptr, i64, i64 } { ptr @.str.2805, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2806, i64 12, i64 0 }) - store i64 %t87, ptr %a49 - br label %endif4599 -else4598: - %t88 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2807, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then4600, label %else4601 -then4600: - %t93 = load ptr, ptr %a1 - %t94 = call i64 @finch.gen.basicType(ptr %t93, { ptr, i64, i64 } { ptr @.str.2808, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2809, i64 12, i64 0 }) - store i64 %t94, ptr %a49 - br label %endif4602 -else4601: - %t95 = load %S.ast.Type, ptr %a2 - %t96 = call i1 @finch.gen.isInt(%S.ast.Type %t95) - br i1 %t96, label %then4603, label %else4604 -then4603: - store { ptr, i64, i64 } { ptr @.str.2810, i64 15, i64 0 }, ptr %a97 - %t98 = load %S.ast.Type, ptr %a2 - %t99 = call i1 @finch.gen.isSigned(%S.ast.Type %t98) - br i1 %t99, label %then4606, label %endif4608 -then4606: - %t100 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.2811, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif4608 -endif4608: - %t102 = load ptr, ptr %a1 - %t103 = load { ptr, i64, i64 }, ptr %a8 - %t104 = load %S.ast.Type, ptr %a2 - %t105 = call i64 @finch.gen.bitsOf(%S.ast.Type %t104) - %t106 = load { ptr, i64, i64 }, ptr %a97 - %t107 = call i64 @finch.gen.basicType(ptr %t102, { ptr, i64, i64 } %t103, i64 %t105, { ptr, i64, i64 } %t106) - store i64 %t107, ptr %a49 - call void @finch_str_drop(ptr %a97) - br label %endif4605 -else4604: - %t108 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2812, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then4609, label %else4610 -then4609: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic4612, label %ok4613 -panic4612: - call void @finch_panic(ptr @.str.2813, i64 2055, ptr @.str.2814) - unreachable -ok4613: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 21 - %t116 = load ptr, ptr %a1 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = call i64 @finch.gen.findEnum(ptr %t116, { ptr, i64, i64 } %t118, { ptr, i64, i64 } %t120) - %t122 = load { ptr, i64, i64 }, ptr %t115 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 %t121, %t123 - br i1 %t124, label %range4614, label %inrange4615 -range4614: - call void @finch_panic_index(ptr @.str.2815, i64 2055, i64 %t121, i64 %t123) - unreachable -inrange4615: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.gen.EnumDef, ptr %t125, i64 %t121 - %t127 = load %S.gen.EnumDef, ptr %t126 - store %S.gen.EnumDef %t127, ptr %a128 - call void @finch.copy.S_gen_EnumDef(ptr %a129, ptr %a128) - %t130 = load %S.gen.EnumDef, ptr %a129 - store %S.gen.EnumDef %t130, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - store i64 0, ptr %a136 - br label %for.cond4616 -for.cond4616: - %t137 = load i64, ptr %a136 - %t138 = icmp slt i64 %t137, %t135 - br i1 %t138, label %for.body4617, label %for.end4619 -for.body4617: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t140 = load ptr, ptr %a1 - %t141 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t142 = load i64, ptr %a136 - %t143 = load { ptr, i64, i64 }, ptr %t141 - %t144 = extractvalue { ptr, i64, i64 } %t143, 1 - %t145 = icmp uge i64 %t142, %t144 - br i1 %t145, label %range4620, label %inrange4621 -range4620: - call void @finch_panic_index(ptr @.str.2817, i64 2058, i64 %t142, i64 %t144) - unreachable -inrange4621: - %t146 = extractvalue { ptr, i64, i64 } %t143, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t142 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.2816, i64 21, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.2818, i64 10, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 3 - %t159 = load i64, ptr %a136 - %t160 = load { ptr, i64, i64 }, ptr %t158 - %t161 = extractvalue { ptr, i64, i64 } %t160, 1 - %t162 = icmp uge i64 %t159, %t161 - br i1 %t162, label %range4622, label %inrange4623 -range4622: - call void @finch_panic_index(ptr @.str.2819, i64 2058, i64 %t159, i64 %t161) - unreachable -inrange4623: - %t163 = extractvalue { ptr, i64, i64 } %t160, 0 - %t164 = getelementptr inbounds i64, ptr %t163, i64 %t159 - %t165 = load i64, ptr %t164 - call void @finch_str_from_int(ptr %a166, i64 %t165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t157, ptr %a169 - store { ptr, i64, i64 } %t167, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t157, ptr %a171 - call void @finch_str_drop(ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.2820, i64 1, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = call i64 @finch.gen.md(ptr %t140, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t178, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t179) - %t182 = load i64, ptr %t139 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a132 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t139 - br label %for.step4618 -for.step4618: - %t186 = load i64, ptr %a136 - %t187 = add i64 %t186, 1 - store i64 %t187, ptr %a136 - br label %for.cond4616 -for.end4619: - %t188 = load ptr, ptr %a1 - %t189 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.2821, i64 54, i64 0 }, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2822, i64 10, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a201, i64 %t200) - %t202 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t199, ptr %a206 - call void @finch_str_drop(ptr %a206) - store { ptr, i64, i64 } %t202, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2823, i64 24, i64 0 }, ptr %a211 - call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) - store { ptr, i64, i64 } %t208, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a209 - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2824, i64 2, i64 0 }, ptr %a215 - call void @finch_str_join(ptr %a216, ptr %a132, ptr %a215) - %t217 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t213, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t213, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.2825, i64 2, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call i64 @finch.gen.md(ptr %t188, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store i64 %t229, ptr %a49 - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_gen_EnumDef(ptr %a131) - br label %endif4611 -else4610: - %t231 = load ptr, ptr %a1 - %t232 = call i64 @finch.gen.md(ptr %t231, { ptr, i64, i64 } { ptr @.str.2826, i64 0, i64 0 }) - store i64 %t232, ptr %a49 - %t233 = load i64, ptr %a49 - %t234 = load ptr, ptr %a1 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4624, label %ok4625 -panic4624: - call void @finch_panic(ptr @.str.2827, i64 2064, ptr @.str.2828) - unreachable -ok4625: - %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 34 - %t237 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t237, ptr %a238 - store i32 0, ptr %a239 - %t240 = call i64 @finch_map_slot(ptr %t236, ptr %a238, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a239) - %t241 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t236, i32 0, i32 0 - %t242 = load ptr, ptr %t241 - %t243 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t242, i64 %t240 - %t244 = load i32, ptr %a239 - %t245 = icmp ne i32 %t244, 0 - br i1 %t245, label %map.new4626, label %map.have4627 -map.new4626: - %t246 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 1 - call void @finch_str_copy(ptr %t246, ptr %a238) - %t247 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 0, ptr %t247 - br label %map.have4627 -map.have4627: - %t248 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 %t233, ptr %t248 - %t249 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t249, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2829, i64 3, i64 0 }, ptr %a251 - %t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251) - %t253 = icmp ne i32 %t252, 0 - br i1 %t253, label %then4628, label %else4629 -then4628: - store i64 -1, ptr %a254 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t255, i32 0, i32 1 - %t257 = load i64, ptr %t256 - %t258 = icmp sgt i64 %t257, 0 - br i1 %t258, label %then4631, label %endif4633 -then4631: - %t259 = load ptr, ptr %a1 - %t260 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t261 = load { ptr, i64, i64 }, ptr %t260 - %t262 = extractvalue { ptr, i64, i64 } %t261, 1 - %t263 = icmp uge i64 0, %t262 - br i1 %t263, label %range4634, label %inrange4635 -range4634: - call void @finch_panic_index(ptr @.str.2830, i64 2068, i64 0, i64 %t262) - unreachable -inrange4635: - %t264 = extractvalue { ptr, i64, i64 } %t261, 0 - %t265 = getelementptr inbounds %S.ast.Type, ptr %t264, i64 0 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call i64 @finch.gen.diType(ptr %t259, %S.ast.Type %t266) - store i64 %t267, ptr %a254 - br label %endif4633 -endif4633: - %t268 = load i64, ptr %a254 - %t269 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t268) - store { ptr, i64, i64 } { ptr @.str.2831, i64 51, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.2832, i64 11, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic4636, label %ok4637 -panic4636: - call void @finch_panic(ptr @.str.2833, i64 2070, ptr @.str.2834) - unreachable -ok4637: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 33 - %t283 = load i64, ptr %a49 - %t284 = load { ptr, i64, i64 }, ptr %t282 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range4638, label %inrange4639 -range4638: - call void @finch_panic_index(ptr @.str.2835, i64 2070, i64 %t283, i64 %t285) - unreachable -inrange4639: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t283 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t279, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_drop(ptr %a290) - br label %endif4630 -else4629: - %t291 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t291, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.2836, i64 5, i64 0 }, ptr %a293 - %t294 = call i32 @finch_str_eq(ptr %a292, ptr %a293) - %t295 = icmp ne i32 %t294, 0 - br i1 %t295, label %then4640, label %else4641 -then4640: - %t296 = load ptr, ptr %a1 - %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t298 = load { ptr, i64, i64 }, ptr %t297 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 0, %t299 - br i1 %t300, label %range4643, label %inrange4644 -range4643: - call void @finch_panic_index(ptr @.str.2837, i64 2072, i64 0, i64 %t299) - unreachable -inrange4644: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i64 0 - %t303 = load %S.ast.Type, ptr %t302 - %t304 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t296, %S.ast.Type %t303) - store %S.gen.SizeAlign %t304, ptr %a305 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t308 = load i64, ptr %t307 - call void @finch_str_from_int(ptr %a309, i64 %t308) - %t310 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.2838, i64 19, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2839, i64 1, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call i64 @finch.gen.md(ptr %t306, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store i64 %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %t325 - %t327 = extractvalue { ptr, i64, i64 } %t326, 1 - %t328 = icmp uge i64 0, %t327 - br i1 %t328, label %range4645, label %inrange4646 -range4645: - call void @finch_panic_index(ptr @.str.2841, i64 2074, i64 0, i64 %t327) - unreachable -inrange4646: - %t329 = extractvalue { ptr, i64, i64 } %t326, 0 - %t330 = getelementptr inbounds %S.ast.Type, ptr %t329, i64 0 - %t331 = load %S.ast.Type, ptr %t330 - %t332 = call i64 @finch.gen.diType(ptr %t324, %S.ast.Type %t331) - %t333 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t332) - store { ptr, i64, i64 } { ptr @.str.2840, i64 51, i64 0 }, ptr %a335 - store { ptr, i64, i64 } %t333, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - store { ptr, i64, i64 } %t338, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.2842, i64 8, i64 0 }, ptr %a341 - call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) - store { ptr, i64, i64 } %t338, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a339 - %t344 = getelementptr inbounds %S.gen.SizeAlign, ptr %a305, i32 0, i32 0 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t347 = load i64, ptr %t346 - %t348 = mul i64 %t345, %t347 - %t349 = mul i64 %t348, 8 - call void @finch_str_from_int(ptr %a350, i64 %t349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t343, ptr %a353 - store { ptr, i64, i64 } %t351, ptr %a354 - call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) - store { ptr, i64, i64 } %t343, ptr %a355 - call void @finch_str_drop(ptr %a355) - store { ptr, i64, i64 } %t351, ptr %a356 - call void @finch_str_drop(ptr %a356) - %t357 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t357, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.2843, i64 15, i64 0 }, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t357, ptr %a361 - call void @finch_str_drop(ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a358 - %t363 = load i64, ptr %a323 - call void @finch_str_from_int(ptr %a364, i64 %t363) - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t362, ptr %a369 - call void @finch_str_drop(ptr %a369) - store { ptr, i64, i64 } %t365, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t371, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.2844, i64 2, i64 0 }, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t371, ptr %a375 - call void @finch_str_drop(ptr %a375) - %t376 = load { ptr, i64, i64 }, ptr %a372 - %t377 = load ptr, ptr %a1 - %t378 = icmp eq ptr %t377, null - br i1 %t378, label %panic4647, label %ok4648 -panic4647: - call void @finch_panic(ptr @.str.2845, i64 2074, ptr @.str.2846) - unreachable -ok4648: - %t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 33 - %t380 = load i64, ptr %a49 - %t381 = load { ptr, i64, i64 }, ptr %t379 - %t382 = extractvalue { ptr, i64, i64 } %t381, 1 - %t383 = icmp uge i64 %t380, %t382 - br i1 %t383, label %range4649, label %inrange4650 -range4649: - call void @finch_panic_index(ptr @.str.2847, i64 2074, i64 %t380, i64 %t382) - unreachable -inrange4650: - %t384 = extractvalue { ptr, i64, i64 } %t381, 0 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 - %t386 = load { ptr, i64, i64 }, ptr %t385 - store { ptr, i64, i64 } %t376, ptr %t385 - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif4642 -else4641: - %t388 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t388, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.2848, i64 3, i64 0 }, ptr %a390 - %t391 = call i32 @finch_str_eq(ptr %a389, ptr %a390) - %t392 = icmp ne i32 %t391, 0 - br label %logic.from4651 -logic.from4651: - br i1 %t392, label %logic.end4653, label %logic.rhs4652 -logic.rhs4652: - %t393 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t393, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2849, i64 5, i64 0 }, ptr %a395 - %t396 = call i32 @finch_str_eq(ptr %a394, ptr %a395) - %t397 = icmp ne i32 %t396, 0 - br label %logic.rend4654 -logic.rend4654: - br label %logic.end4653 -logic.end4653: - %t398 = phi i1 [ true, %logic.from4651 ], [ %t397, %logic.rend4654 ] - br i1 %t398, label %then4655, label %else4656 -then4655: - %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2850, i64 4, i64 0 }) - store %S.ast.Type %t399, ptr %a400 - %t401 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t401, ptr %a402 - store { ptr, i64, i64 } { ptr @.str.2851, i64 5, i64 0 }, ptr %a403 - %t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403) - %t405 = icmp ne i32 %t404, 0 - br i1 %t405, label %then4658, label %endif4660 -then4658: - %t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t407 = load { ptr, i64, i64 }, ptr %t406 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 0, %t408 - br i1 %t409, label %range4661, label %inrange4662 -range4661: - call void @finch_panic_index(ptr @.str.2852, i64 2078, i64 0, i64 %t408) - unreachable -inrange4662: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.ast.Type, ptr %t410, i64 0 - %t412 = load %S.ast.Type, ptr %t411 - store %S.ast.Type %t412, ptr %a413 - call void @finch.copy.S_ast_Type(ptr %a414, ptr %a413) - %t415 = load %S.ast.Type, ptr %a414 - %t416 = load %S.ast.Type, ptr %a400 - store %S.ast.Type %t415, ptr %a400 - store %S.ast.Type %t416, ptr %a417 - call void @finch.drop.S_ast_Type(ptr %a417) - br label %endif4660 -endif4660: - %t418 = load ptr, ptr %a1 - %t419 = load ptr, ptr %a1 - %t420 = load %S.ast.Type, ptr %a400 - %t421 = call i64 @finch.gen.diType(ptr %t419, %S.ast.Type %t420) - %t422 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t421) - store { ptr, i64, i64 } { ptr @.str.2853, i64 51, i64 0 }, ptr %a424 - store { ptr, i64, i64 } %t422, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - store { ptr, i64, i64 } %t427, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.2854, i64 11, i64 0 }, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = call i64 @finch.gen.md(ptr %t418, { ptr, i64, i64 } %t432) - store { ptr, i64, i64 } %t432, ptr %a434 - call void @finch_str_drop(ptr %a434) - store i64 %t433, ptr %a435 - %t436 = load ptr, ptr %a1 - %t437 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2855, i64 3, i64 0 }) - %t438 = call i64 @finch.gen.diType(ptr %t436, %S.ast.Type %t437) - store %S.ast.Type %t437, ptr %a439 - call void @finch.drop.S_ast_Type(ptr %a439) - store i64 %t438, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = load i64, ptr %a49 - %t443 = load i64, ptr %a59 - %t444 = load i64, ptr %a435 - %t445 = call i64 @finch.gen.dbgMember(ptr %t441, { ptr, i64, i64 } { ptr @.str.2856, i64 3, i64 0 }, i64 %t442, i64 %t443, i64 0, i64 %t444, i64 64, i64 0) - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load i64, ptr %a49 - %t449 = load i64, ptr %a59 - %t450 = load i64, ptr %a440 - %t451 = call i64 @finch.gen.dbgMember(ptr %t447, { ptr, i64, i64 } { ptr @.str.2857, i64 3, i64 0 }, i64 %t448, i64 %t449, i64 0, i64 %t450, i64 64, i64 64) - store i64 %t451, ptr %a452 - %t453 = load ptr, ptr %a1 - %t454 = load i64, ptr %a49 - %t455 = load i64, ptr %a59 - %t456 = load i64, ptr %a440 - %t457 = call i64 @finch.gen.dbgMember(ptr %t453, { ptr, i64, i64 } { ptr @.str.2858, i64 3, i64 0 }, i64 %t454, i64 %t455, i64 0, i64 %t456, i64 64, i64 128) - store i64 %t457, ptr %a458 - %t459 = load %S.ast.Type, ptr %a2 - %t460 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.2859, i64 52, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.2860, i64 10, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a472, i64 %t471) - %t473 = load { ptr, i64, i64 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a475 - store { ptr, i64, i64 } %t473, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t470, ptr %a477 - call void @finch_str_drop(ptr %a477) - store { ptr, i64, i64 } %t473, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a474 - store { ptr, i64, i64 } %t479, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.2861, i64 37, i64 0 }, ptr %a482 - call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482) - store { ptr, i64, i64 } %t479, ptr %a483 - call void @finch_str_drop(ptr %a483) - %t484 = load { ptr, i64, i64 }, ptr %a480 - %t485 = load i64, ptr %a446 - call void @finch_str_from_int(ptr %a486, i64 %t485) - %t487 = load { ptr, i64, i64 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t484, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t487, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t493, ptr %a495 - store { ptr, i64, i64 } { ptr @.str.2862, i64 3, i64 0 }, ptr %a496 - call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) - store { ptr, i64, i64 } %t493, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a494 - %t499 = load i64, ptr %a452 - call void @finch_str_from_int(ptr %a500, i64 %t499) - %t501 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a503 - store { ptr, i64, i64 } %t501, ptr %a504 - call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) - store { ptr, i64, i64 } %t498, ptr %a505 - call void @finch_str_drop(ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.2863, i64 3, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - %t513 = load i64, ptr %a458 - call void @finch_str_from_int(ptr %a514, i64 %t513) - %t515 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a517 - store { ptr, i64, i64 } %t515, ptr %a518 - call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) - store { ptr, i64, i64 } %t512, ptr %a519 - call void @finch_str_drop(ptr %a519) - store { ptr, i64, i64 } %t515, ptr %a520 - call void @finch_str_drop(ptr %a520) - %t521 = load { ptr, i64, i64 }, ptr %a516 - store { ptr, i64, i64 } %t521, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.2864, i64 2, i64 0 }, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t521, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - %t527 = load ptr, ptr %a1 - %t528 = icmp eq ptr %t527, null - br i1 %t528, label %panic4663, label %ok4664 -panic4663: - call void @finch_panic(ptr @.str.2865, i64 2085, ptr @.str.2866) - unreachable -ok4664: - %t529 = getelementptr inbounds %S.gen.Gen, ptr %t527, i32 0, i32 33 - %t530 = load i64, ptr %a49 - %t531 = load { ptr, i64, i64 }, ptr %t529 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range4665, label %inrange4666 -range4665: - call void @finch_panic_index(ptr @.str.2867, i64 2085, i64 %t530, i64 %t532) - unreachable -inrange4666: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %t534, i64 %t530 - %t536 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t526, ptr %t535 - store { ptr, i64, i64 } %t536, ptr %a537 - call void @finch_str_drop(ptr %a537) - call void @finch.drop.S_ast_Type(ptr %a400) - br label %endif4657 -else4656: - %t538 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.2868, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br i1 %t542, label %then4667, label %else4668 -then4667: - %t543 = load ptr, ptr %a1 - %t544 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2869, i64 3, i64 0 }) - %t545 = call i64 @finch.gen.diType(ptr %t543, %S.ast.Type %t544) - store %S.ast.Type %t544, ptr %a546 - call void @finch.drop.S_ast_Type(ptr %a546) - store i64 %t545, ptr %a547 - %t548 = load ptr, ptr %a1 - %t549 = call i64 @finch.gen.md(ptr %t548, { ptr, i64, i64 } { ptr @.str.2870, i64 66, i64 0 }) - store i64 %t549, ptr %a550 - %t551 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t552 = call ptr @finch_alloc(i64 %t551) - %t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 0 - store { ptr, i64, i64 } { ptr @.str.2871, i64 7, i64 0 }, ptr %t553 - %t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 1 - store { ptr, i64, i64 } { ptr @.str.2872, i64 3, i64 0 }, ptr %t554 - %t555 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 2 - store { ptr, i64, i64 } { ptr @.str.2873, i64 4, i64 0 }, ptr %t555 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 3 - store { ptr, i64, i64 } { ptr @.str.2874, i64 3, i64 0 }, ptr %t556 - %t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 4 - store { ptr, i64, i64 } { ptr @.str.2875, i64 5, i64 0 }, ptr %t557 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 5 - store { ptr, i64, i64 } { ptr @.str.2876, i64 4, i64 0 }, ptr %t558 - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 6 - store { ptr, i64, i64 } { ptr @.str.2877, i64 4, i64 0 }, ptr %t559 - %t560 = insertvalue { ptr, i64, i64 } undef, ptr %t552, 0 - %t561 = insertvalue { ptr, i64, i64 } %t560, i64 7, 1 - %t562 = insertvalue { ptr, i64, i64 } %t561, i64 7, 2 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } zeroinitializer, ptr %a564 - store i64 0, ptr %a565 - br label %for.cond4670 -for.cond4670: - %t566 = load i64, ptr %a565 - %t567 = icmp slt i64 %t566, 7 - br i1 %t567, label %for.body4671, label %for.end4673 -for.body4671: - %t568 = load i64, ptr %a547 - store i64 %t568, ptr %a569 - %t570 = load i64, ptr %a565 - %t571 = icmp eq i64 %t570, 0 - br label %logic.from4674 -logic.from4674: - br i1 %t571, label %logic.end4676, label %logic.rhs4675 -logic.rhs4675: - %t572 = load i64, ptr %a565 - %t573 = icmp eq i64 %t572, 4 - br label %logic.rend4677 -logic.rend4677: - br label %logic.end4676 -logic.end4676: - %t574 = phi i1 [ true, %logic.from4674 ], [ %t573, %logic.rend4677 ] - br i1 %t574, label %then4678, label %endif4680 -then4678: - %t575 = load i64, ptr %a550 - store i64 %t575, ptr %a569 - br label %endif4680 -endif4680: - %t576 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - %t577 = load ptr, ptr %a1 - %t578 = load i64, ptr %a565 - %t579 = load { ptr, i64, i64 }, ptr %a563 - %t580 = extractvalue { ptr, i64, i64 } %t579, 1 - %t581 = icmp uge i64 %t578, %t580 - br i1 %t581, label %range4681, label %inrange4682 -range4681: - call void @finch_panic_index(ptr @.str.2879, i64 2096, i64 %t578, i64 %t580) - unreachable -inrange4682: - %t582 = extractvalue { ptr, i64, i64 } %t579, 0 - %t583 = getelementptr inbounds { ptr, i64, i64 }, ptr %t582, i64 %t578 - %t584 = load { ptr, i64, i64 }, ptr %t583 - %t585 = load i64, ptr %a49 - %t586 = load i64, ptr %a59 - %t587 = load i64, ptr %a569 - %t588 = load i64, ptr %a565 - %t589 = mul i64 64, %t588 - %t590 = call i64 @finch.gen.dbgMember(ptr %t577, { ptr, i64, i64 } %t584, i64 %t585, i64 %t586, i64 0, i64 %t587, i64 64, i64 %t589) - call void @finch_str_from_int(ptr %a591, i64 %t590) - %t592 = load { ptr, i64, i64 }, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.2878, i64 1, i64 0 }, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t592, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a593 - %t598 = load i64, ptr %t576 - %t599 = add i64 %t598, 1 - call void @finch_arr_reserve(ptr %a564, i64 %t599, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t600 = load ptr, ptr %a564 - %t601 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i64 %t598 - store { ptr, i64, i64 } %t597, ptr %t601 - store i64 %t599, ptr %t576 - br label %for.step4672 -for.step4672: - %t602 = load i64, ptr %a565 - %t603 = add i64 %t602, 1 - store i64 %t603, ptr %a565 - br label %for.cond4670 -for.end4673: - %t604 = load %S.ast.Type, ptr %a2 - %t605 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.2880, i64 52, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.2881, i64 10, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a617, i64 %t616) - %t618 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t615, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t615, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } %t624, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.2882, i64 36, i64 0 }, ptr %a627 - call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627) - store { ptr, i64, i64 } %t624, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a625 - %t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2883, i64 2, i64 0 }, ptr %a631 - call void @finch_str_join(ptr %a632, ptr %a564, ptr %a631) - %t633 = load { ptr, i64, i64 }, ptr %a632 - store { ptr, i64, i64 } %t629, ptr %a635 - store { ptr, i64, i64 } %t633, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t629, ptr %a637 - call void @finch_str_drop(ptr %a637) - store { ptr, i64, i64 } %t633, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a634 - store { ptr, i64, i64 } %t639, ptr %a641 - store { ptr, i64, i64 } { ptr @.str.2884, i64 2, i64 0 }, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t639, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - %t645 = load ptr, ptr %a1 - %t646 = icmp eq ptr %t645, null - br i1 %t646, label %panic4683, label %ok4684 -panic4683: - call void @finch_panic(ptr @.str.2885, i64 2098, ptr @.str.2886) - unreachable -ok4684: - %t647 = getelementptr inbounds %S.gen.Gen, ptr %t645, i32 0, i32 33 - %t648 = load i64, ptr %a49 - %t649 = load { ptr, i64, i64 }, ptr %t647 - %t650 = extractvalue { ptr, i64, i64 } %t649, 1 - %t651 = icmp uge i64 %t648, %t650 - br i1 %t651, label %range4685, label %inrange4686 -range4685: - call void @finch_panic_index(ptr @.str.2887, i64 2098, i64 %t648, i64 %t650) - unreachable -inrange4686: - %t652 = extractvalue { ptr, i64, i64 } %t649, 0 - %t653 = getelementptr inbounds { ptr, i64, i64 }, ptr %t652, i64 %t648 - %t654 = load { ptr, i64, i64 }, ptr %t653 - store { ptr, i64, i64 } %t644, ptr %t653 - store { ptr, i64, i64 } %t654, ptr %a655 - call void @finch_str_drop(ptr %a655) - call void @finch.drop.arr_str(ptr %a564) - call void @finch.drop.arr_str(ptr %a563) - br label %endif4669 -else4668: - %t656 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t656, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.2888, i64 6, i64 0 }, ptr %a658 - %t659 = call i32 @finch_str_eq(ptr %a657, ptr %a658) - %t660 = icmp ne i32 %t659, 0 - br i1 %t660, label %then4687, label %else4688 -then4687: - %t661 = load ptr, ptr %a1 - %t662 = icmp eq ptr %t661, null - br i1 %t662, label %panic4690, label %ok4691 -panic4690: - call void @finch_panic(ptr @.str.2889, i64 2100, ptr @.str.2890) - unreachable -ok4691: - %t663 = getelementptr inbounds %S.gen.Gen, ptr %t661, i32 0, i32 16 - %t664 = load ptr, ptr %a1 - %t665 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t666 = load { ptr, i64, i64 }, ptr %t665 - %t667 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t668 = load { ptr, i64, i64 }, ptr %t667 - %t669 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t666, { ptr, i64, i64 } %t668) - %t670 = load { ptr, i64, i64 }, ptr %t663 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range4692, label %inrange4693 -range4692: - call void @finch_panic_index(ptr @.str.2891, i64 2100, i64 %t669, i64 %t671) - unreachable -inrange4693: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.gen.StructDef, ptr %t673, i64 %t669 - %t675 = load %S.gen.StructDef, ptr %t674 - store %S.gen.StructDef %t675, ptr %a676 - call void @finch.copy.S_gen_StructDef(ptr %a677, ptr %a676) - %t678 = load %S.gen.StructDef, ptr %a677 - store %S.gen.StructDef %t678, ptr %a679 - %t680 = load ptr, ptr %a1 - %t681 = load %S.gen.StructDef, ptr %a679 - %t682 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t680, %S.gen.StructDef %t681) - store { ptr, i64, i64 } %t682, ptr %a683 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a2 - %t686 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t684, %S.ast.Type %t685) - store %S.gen.SizeAlign %t686, ptr %a687 - store { ptr, i64, i64 } zeroinitializer, ptr %a688 - %t689 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t690 = getelementptr inbounds { ptr, i64, i64 }, ptr %t689, i32 0, i32 1 - %t691 = load i64, ptr %t690 - store i64 0, ptr %a692 - br label %for.cond4694 -for.cond4694: - %t693 = load i64, ptr %a692 - %t694 = icmp slt i64 %t693, %t691 - br i1 %t694, label %for.body4695, label %for.end4697 -for.body4695: - %t695 = load ptr, ptr %a1 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t697 = load i64, ptr %a692 - %t698 = load { ptr, i64, i64 }, ptr %t696 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range4698, label %inrange4699 -range4698: - call void @finch_panic_index(ptr @.str.2892, i64 2105, i64 %t697, i64 %t699) - unreachable -inrange4699: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds %S.ast.Type, ptr %t701, i64 %t697 - %t703 = load %S.ast.Type, ptr %t702 - %t704 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t695, %S.ast.Type %t703) - store %S.gen.SizeAlign %t704, ptr %a705 - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - %t707 = load ptr, ptr %a1 - %t708 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 11 - %t709 = load i64, ptr %a692 - %t710 = load { ptr, i64, i64 }, ptr %t708 - %t711 = extractvalue { ptr, i64, i64 } %t710, 1 - %t712 = icmp uge i64 %t709, %t711 - br i1 %t712, label %range4700, label %inrange4701 -range4700: - call void @finch_panic_index(ptr @.str.2894, i64 2106, i64 %t709, i64 %t711) - unreachable -inrange4701: - %t713 = extractvalue { ptr, i64, i64 } %t710, 0 - %t714 = getelementptr inbounds { ptr, i64, i64 }, ptr %t713, i64 %t709 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = load i64, ptr %a49 - %t717 = load i64, ptr %a59 - %t718 = load ptr, ptr %a1 - %t719 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t720 = load i64, ptr %a692 - %t721 = load { ptr, i64, i64 }, ptr %t719 - %t722 = extractvalue { ptr, i64, i64 } %t721, 1 - %t723 = icmp uge i64 %t720, %t722 - br i1 %t723, label %range4702, label %inrange4703 -range4702: - call void @finch_panic_index(ptr @.str.2895, i64 2106, i64 %t720, i64 %t722) - unreachable -inrange4703: - %t724 = extractvalue { ptr, i64, i64 } %t721, 0 - %t725 = getelementptr inbounds %S.ast.Type, ptr %t724, i64 %t720 - %t726 = load %S.ast.Type, ptr %t725 - %t727 = call i64 @finch.gen.diType(ptr %t718, %S.ast.Type %t726) - %t728 = getelementptr inbounds %S.gen.SizeAlign, ptr %a705, i32 0, i32 0 - %t729 = load i64, ptr %t728 - %t730 = mul i64 %t729, 8 - %t731 = load i64, ptr %a692 - %t732 = load { ptr, i64, i64 }, ptr %a683 - %t733 = extractvalue { ptr, i64, i64 } %t732, 1 - %t734 = icmp uge i64 %t731, %t733 - br i1 %t734, label %range4704, label %inrange4705 -range4704: - call void @finch_panic_index(ptr @.str.2896, i64 2106, i64 %t731, i64 %t733) - unreachable -inrange4705: - %t735 = extractvalue { ptr, i64, i64 } %t732, 0 - %t736 = getelementptr inbounds i64, ptr %t735, i64 %t731 - %t737 = load i64, ptr %t736 - %t738 = mul i64 %t737, 8 - %t739 = call i64 @finch.gen.dbgMember(ptr %t707, { ptr, i64, i64 } %t715, i64 %t716, i64 %t717, i64 0, i64 %t727, i64 %t730, i64 %t738) - call void @finch_str_from_int(ptr %a740, i64 %t739) - %t741 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.2893, i64 1, i64 0 }, ptr %a743 - store { ptr, i64, i64 } %t741, ptr %a744 - call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) - store { ptr, i64, i64 } %t741, ptr %a745 - call void @finch_str_drop(ptr %a745) - %t746 = load { ptr, i64, i64 }, ptr %a742 - %t747 = load i64, ptr %t706 - %t748 = add i64 %t747, 1 - call void @finch_arr_reserve(ptr %a688, i64 %t748, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t749 = load ptr, ptr %a688 - %t750 = getelementptr inbounds { ptr, i64, i64 }, ptr %t749, i64 %t747 - store { ptr, i64, i64 } %t746, ptr %t750 - store i64 %t748, ptr %t706 - br label %for.step4696 -for.step4696: - %t751 = load i64, ptr %a692 - %t752 = add i64 %t751, 1 - store i64 %t752, ptr %a692 - br label %for.cond4694 -for.end4697: - %t753 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 1 - %t754 = load { ptr, i64, i64 }, ptr %t753 - store { ptr, i64, i64 } { ptr @.str.2897, i64 52, i64 0 }, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a755 - store { ptr, i64, i64 } %t758, ptr %a760 - store { ptr, i64, i64 } { ptr @.str.2898, i64 10, i64 0 }, ptr %a761 - call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) - store { ptr, i64, i64 } %t758, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a759 - %t764 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a765, i64 %t764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - store { ptr, i64, i64 } %t763, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t763, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.2899, i64 8, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.gen.SizeAlign, ptr %a687, i32 0, i32 0 - %t779 = load i64, ptr %t778 - %t780 = mul i64 %t779, 8 - call void @finch_str_from_int(ptr %a781, i64 %t780) - %t782 = load { ptr, i64, i64 }, ptr %a781 - store { ptr, i64, i64 } %t777, ptr %a784 - store { ptr, i64, i64 } %t782, ptr %a785 - call void @finch_str_concat(ptr %a783, ptr %a784, ptr %a785) - store { ptr, i64, i64 } %t777, ptr %a786 - call void @finch_str_drop(ptr %a786) - store { ptr, i64, i64 } %t782, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load { ptr, i64, i64 }, ptr %a783 - store { ptr, i64, i64 } %t788, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.2900, i64 24, i64 0 }, ptr %a791 - call void @finch_str_concat(ptr %a789, ptr %a790, ptr %a791) - store { ptr, i64, i64 } %t788, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a789 - %t794 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2901, i64 2, i64 0 }, ptr %a795 - call void @finch_str_join(ptr %a796, ptr %a688, ptr %a795) - %t797 = load { ptr, i64, i64 }, ptr %a796 - store { ptr, i64, i64 } %t793, ptr %a799 - store { ptr, i64, i64 } %t797, ptr %a800 - call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) - store { ptr, i64, i64 } %t793, ptr %a801 - call void @finch_str_drop(ptr %a801) - store { ptr, i64, i64 } %t797, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t803, ptr %a805 - store { ptr, i64, i64 } { ptr @.str.2902, i64 2, i64 0 }, ptr %a806 - call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) - store { ptr, i64, i64 } %t803, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a804 - %t809 = load ptr, ptr %a1 - %t810 = icmp eq ptr %t809, null - br i1 %t810, label %panic4706, label %ok4707 -panic4706: - call void @finch_panic(ptr @.str.2903, i64 2108, ptr @.str.2904) - unreachable -ok4707: - %t811 = getelementptr inbounds %S.gen.Gen, ptr %t809, i32 0, i32 33 - %t812 = load i64, ptr %a49 - %t813 = load { ptr, i64, i64 }, ptr %t811 - %t814 = extractvalue { ptr, i64, i64 } %t813, 1 - %t815 = icmp uge i64 %t812, %t814 - br i1 %t815, label %range4708, label %inrange4709 -range4708: - call void @finch_panic_index(ptr @.str.2905, i64 2108, i64 %t812, i64 %t814) - unreachable -inrange4709: - %t816 = extractvalue { ptr, i64, i64 } %t813, 0 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t812 - %t818 = load { ptr, i64, i64 }, ptr %t817 - store { ptr, i64, i64 } %t808, ptr %t817 - store { ptr, i64, i64 } %t818, ptr %a819 - call void @finch_str_drop(ptr %a819) - call void @finch.drop.arr_str(ptr %a688) - call void @finch.drop.arr_int(ptr %a683) - call void @finch.drop.S_gen_StructDef(ptr %a679) - br label %endif4689 -else4688: - %t820 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2906, i64 20, i64 0 }, ptr %a822 - store { ptr, i64, i64 } %t820, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - %t824 = load { ptr, i64, i64 }, ptr %a821 - store { ptr, i64, i64 } %t824, ptr %a826 - store { ptr, i64, i64 } { ptr @.str.2907, i64 39, i64 0 }, ptr %a827 - call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) - store { ptr, i64, i64 } %t824, ptr %a828 - call void @finch_str_drop(ptr %a828) - %t829 = load { ptr, i64, i64 }, ptr %a825 - %t830 = load ptr, ptr %a1 - %t831 = icmp eq ptr %t830, null - br i1 %t831, label %panic4710, label %ok4711 -panic4710: - call void @finch_panic(ptr @.str.2908, i64 2110, ptr @.str.2909) - unreachable -ok4711: - %t832 = getelementptr inbounds %S.gen.Gen, ptr %t830, i32 0, i32 33 - %t833 = load i64, ptr %a49 - %t834 = load { ptr, i64, i64 }, ptr %t832 - %t835 = extractvalue { ptr, i64, i64 } %t834, 1 - %t836 = icmp uge i64 %t833, %t835 - br i1 %t836, label %range4712, label %inrange4713 -range4712: - call void @finch_panic_index(ptr @.str.2910, i64 2110, i64 %t833, i64 %t835) - unreachable -inrange4713: - %t837 = extractvalue { ptr, i64, i64 } %t834, 0 - %t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t833 - %t839 = load { ptr, i64, i64 }, ptr %t838 - store { ptr, i64, i64 } %t829, ptr %t838 - store { ptr, i64, i64 } %t839, ptr %a840 - call void @finch_str_drop(ptr %a840) - br label %endif4689 -endif4689: - br label %endif4669 -endif4669: - br label %endif4657 -endif4657: - br label %endif4642 -endif4642: - br label %endif4630 -endif4630: - %t841 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t841 -endif4611: - br label %endif4605 -endif4605: - br label %endif4602 -endif4602: - br label %endif4599 -endif4599: - br label %endif4596 -endif4596: - br label %endif4593 -endif4593: - br label %endif4590 -endif4590: - %t842 = load i64, ptr %a49 - %t843 = load ptr, ptr %a1 - %t844 = icmp eq ptr %t843, null - br i1 %t844, label %panic4714, label %ok4715 -panic4714: - call void @finch_panic(ptr @.str.2911, i64 2114, ptr @.str.2912) - unreachable -ok4715: - %t845 = getelementptr inbounds %S.gen.Gen, ptr %t843, i32 0, i32 34 - %t846 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t846, ptr %a847 - store i32 0, ptr %a848 - %t849 = call i64 @finch_map_slot(ptr %t845, ptr %a847, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a848) - %t850 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t845, i32 0, i32 0 - %t851 = load ptr, ptr %t850 - %t852 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t851, i64 %t849 - %t853 = load i32, ptr %a848 - %t854 = icmp ne i32 %t853, 0 - br i1 %t854, label %map.new4716, label %map.have4717 -map.new4716: - %t855 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 1 - call void @finch_str_copy(ptr %t855, ptr %a847) - %t856 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 0, ptr %t856 - br label %map.have4717 -map.have4717: - %t857 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 %t842, ptr %t857 - %t858 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t858 -} - -define internal i64 @finch.gen.dbgLocation(ptr %p0) { -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 - %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 - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca i32, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic4718, label %ok4719 -panic4718: - call void @finch_panic(ptr @.str.2914, i64 2119, ptr @.str.2915) - unreachable -ok4719: - %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 37 - %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.2913, i64 2, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.2916, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic4720, label %ok4721 -panic4720: - call void @finch_panic(ptr @.str.2917, i64 2119, ptr @.str.2918) - unreachable -ok4721: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 38 - %t21 = load i64, ptr %t20 - call void @finch_str_from_int(ptr %a22, i64 %t21) - %t23 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t17, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t17, ptr %a27 - call void @finch_str_drop(ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.2919, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4722, label %ok4723 -panic4722: - call void @finch_panic(ptr @.str.2920, i64 2119, ptr @.str.2921) - unreachable -ok4723: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 36 - %t38 = load i64, ptr %t37 - call void @finch_str_from_int(ptr %a39, i64 %t38) - %t40 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t34, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t34, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic4724, label %ok4725 -panic4724: - call void @finch_panic(ptr @.str.2922, i64 2120, ptr @.str.2923) - unreachable -ok4725: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 34 - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4726, label %endif4728 -then4726: - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic4729, label %ok4730 -panic4729: - call void @finch_panic(ptr @.str.2924, i64 2121, ptr @.str.2925) - unreachable -ok4730: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 34 - %t58 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t58, ptr %a59 - %t60 = call i64 @finch_map_find(ptr %t57, ptr %a59, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t61 = icmp slt i64 %t60, 0 - br i1 %t61, label %map.missing4731, label %map.found4732 -map.missing4731: - store { ptr, i64, i64 } zeroinitializer, ptr %a62 - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_buf_str(ptr %a62, ptr %a63, i32 1) - call void @finch_map_missing(ptr @.str.2926, i64 2121, ptr %a62) - unreachable -map.found4732: - %t64 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t57, i32 0, i32 0 - %t65 = load ptr, ptr %t64 - %t66 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t65, i64 %t60 - %t67 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t66, i32 0, i32 2 - %t68 = load i64, ptr %t67 - call void @finch_str_drop(ptr %a47) - ret i64 %t68 -endif4728: - %t69 = load ptr, ptr %a1 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4733, label %ok4734 -panic4733: - call void @finch_panic(ptr @.str.2928, i64 2123, ptr @.str.2929) - unreachable -ok4734: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 37 - %t73 = load i64, ptr %t72 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2927, i64 18, i64 0 }, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2930, i64 10, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4735, label %ok4736 -panic4735: - call void @finch_panic(ptr @.str.2931, i64 2123, ptr @.str.2932) - unreachable -ok4736: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 38 - %t89 = load i64, ptr %t88 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t85, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t85, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2933, i64 10, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic4737, label %ok4738 -panic4737: - call void @finch_panic(ptr @.str.2934, i64 2123, ptr @.str.2935) - unreachable -ok4738: - %t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 36 - %t106 = load i64, ptr %t105 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t102, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t102, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.2936, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call i64 @finch.gen.md(ptr %t69, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store i64 %t120, ptr %a122 - %t123 = load i64, ptr %a122 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic4739, label %ok4740 -panic4739: - call void @finch_panic(ptr @.str.2937, i64 2124, ptr @.str.2938) - unreachable -ok4740: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 34 - %t127 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t127, ptr %a128 - store i32 0, ptr %a129 - %t130 = call i64 @finch_map_slot(ptr %t126, ptr %a128, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a129) - %t131 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t126, i32 0, i32 0 - %t132 = load ptr, ptr %t131 - %t133 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t132, i64 %t130 - %t134 = load i32, ptr %a129 - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %map.new4741, label %map.have4742 -map.new4741: - %t136 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 1 - call void @finch_str_copy(ptr %t136, ptr %a128) - %t137 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 0, ptr %t137 - br label %map.have4742 -map.have4742: - %t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 %t123, ptr %t138 - %t139 = load i64, ptr %a122 - call void @finch_str_drop(ptr %a47) - ret i64 %t139 -} - -define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) { -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 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %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 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %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 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4743, label %ok4744 -panic4743: - call void @finch_panic(ptr @.str.2939, i64 2129, ptr @.str.2940) - unreachable -ok4744: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = load %S.gen.FnSig, ptr %t5 - store %S.gen.FnSig %t6, ptr %a7 - call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7) - %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 %then4745, label %endif4747 -then4745: - %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.2941, i64 4, i64 0 }, ptr %t30 - store i64 %t28, ptr %t26 - br label %endif4747 -endif4747: - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 - store i64 0, ptr %a32 - br label %each.cond4748 -each.cond4748: - %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.body4749, label %each.end4751 -each.body4749: - %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.step4750 -each.step4750: - %t50 = load i64, ptr %a32 - %t51 = add i64 %t50, 1 - store i64 %t51, ptr %a32 - br label %each.cond4748 -each.end4751: - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4752, label %ok4753 -panic4752: - call void @finch_panic(ptr @.str.2942, i64 2138, ptr @.str.2943) - unreachable -ok4753: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 35 - %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 %range4754, label %inrange4755 -range4754: - call void @finch_panic_index(ptr @.str.2944, i64 2138, i64 %t56, i64 %t58) - unreachable -inrange4755: - %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.2946, 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.2945, i64 27, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2947, i64 2, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } { ptr @.str.2948, i64 30, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2949, i64 17, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - %t98 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - call void @finch_str_sub(ptr %a97, ptr %a96, i64 1, i64 %t100, ptr @.str.2950, i64 2140) - %t101 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t93, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t93, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t101, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2951, i64 11, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a114, i64 %t113) - %t115 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t112, ptr %a119 - call void @finch_str_drop(ptr %a119) - store { ptr, i64, i64 } %t115, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.2952, i64 9, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a128, i64 %t127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t126, ptr %a133 - call void @finch_str_drop(ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.2953, i64 8, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t142 = load i64, ptr %t141 - call void @finch_str_from_int(ptr %a143, i64 %t142) - %t144 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t140, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t140, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2954, i64 9, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load i64, ptr %a81 - call void @finch_str_from_int(ptr %a157, i64 %t156) - %t158 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t155, ptr %a162 - call void @finch_str_drop(ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.2955, i64 13, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2956, i64 87, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = call i64 @finch.gen.md(ptr %t82, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t184, ptr %a186 - call void @finch_str_drop(ptr %a186) - call void @finch.drop.arr_str(ptr %a11) - call void @finch.drop.S_gen_FnSig(ptr %a10) - ret i64 %t185 -} - -define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a38 = 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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i64, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4756, label %ok4757 -panic4756: - call void @finch_panic(ptr @.str.2957, i64 2144, ptr @.str.2958) - unreachable -ok4757: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 30 - %t9 = load i1, ptr %t8 - %t10 = xor i1 %t9, true - br label %logic.from4758 -logic.from4758: - br i1 %t10, label %logic.end4760, label %logic.rhs4759 -logic.rhs4759: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic4761, label %ok4762 -panic4761: - call void @finch_panic(ptr @.str.2959, i64 2144, ptr @.str.2960) - unreachable -ok4762: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 36 - %t14 = load i64, ptr %t13 - %t15 = icmp slt i64 %t14, 0 - br label %logic.rend4763 -logic.rend4763: - br label %logic.end4760 -logic.end4760: - %t16 = phi i1 [ true, %logic.from4758 ], [ %t15, %logic.rend4763 ] - br i1 %t16, label %then4764, label %endif4766 -then4764: - ret void -endif4766: - %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 %then4767, label %endif4769 -then4767: - ret void -endif4769: - store { ptr, i64, i64 } { ptr @.str.2961, i64 0, i64 0 }, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4770, label %ok4771 -panic4770: - call void @finch_panic(ptr @.str.2962, i64 2152, ptr @.str.2963) - unreachable -ok4771: - %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 39 - %t27 = load i64, ptr %t26 - %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4772, label %endif4774 -then4772: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic4775, label %ok4776 -panic4775: - call void @finch_panic(ptr @.str.2965, i64 2153, ptr @.str.2966) - unreachable -ok4776: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 39 - %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.2964, i64 7, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t39, ptr %a23 - store { ptr, i64, i64 } %t40, ptr %a41 - call void @finch_str_drop(ptr %a41) - br label %endif4774 -endif4774: - %t42 = load ptr, ptr %a1 - %t43 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2967, i64 24, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.2968, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic4777, label %ok4778 -panic4777: - call void @finch_panic(ptr @.str.2969, i64 2155, ptr @.str.2970) - unreachable -ok4778: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 36 - %t56 = load i64, ptr %t55 - call void @finch_str_from_int(ptr %a57, i64 %t56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t52, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t52, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.2971, i64 9, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4779, label %ok4780 -panic4779: - call void @finch_panic(ptr @.str.2972, i64 2155, ptr @.str.2973) - unreachable -ok4780: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 35 - %t73 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t74 = load i64, ptr %t73 - %t75 = load { ptr, i64, i64 }, ptr %t72 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range4781, label %inrange4782 -range4781: - call void @finch_panic_index(ptr @.str.2974, i64 2155, i64 %t74, i64 %t76) - unreachable -inrange4782: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds i64, ptr %t78, i64 %t74 - %t80 = load i64, ptr %t79 - call void @finch_str_from_int(ptr %a81, i64 %t80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t69, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t69, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2975, i64 8, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t95 = load i64, ptr %t94 - call void @finch_str_from_int(ptr %a96, i64 %t95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t93, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t93, ptr %a101 - call void @finch_str_drop(ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2976, i64 9, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load i64, ptr %a20 - call void @finch_str_from_int(ptr %a110, i64 %t109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t108, ptr %a115 - call void @finch_str_drop(ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t117, ptr %a120 - store { ptr, i64, i64 } %t118, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.2977, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call i64 @finch.gen.md(ptr %t42, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i64 %t129, ptr %a131 - %t132 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t133 = load i64, ptr %t132 - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic4783, label %ok4784 -panic4783: - call void @finch_panic(ptr @.str.2978, i64 2156, ptr @.str.2979) - unreachable -ok4784: - %t136 = getelementptr inbounds %S.gen.Gen, ptr %t134, i32 0, i32 37 - store i64 %t133, ptr %t136 - %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t138 = load i64, ptr %t137 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4785, label %ok4786 -panic4785: - call void @finch_panic(ptr @.str.2980, i64 2157, ptr @.str.2981) - unreachable -ok4786: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 38 - store i64 %t138, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.2982, i64 41, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.2983, i64 12, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = load i64, ptr %a131 - call void @finch_str_from_int(ptr %a154, i64 %t153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t152, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.2984, i64 27, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - call void @finch.gen.emit(ptr %t142, { ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch_str_drop(ptr %a23) - ret void -} - -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = mul i64 2, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.2985, i64 20, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2986, 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 %panic4787, label %ok4788 -panic4787: - call void @finch_panic(ptr @.str.2987, i64 2164, ptr @.str.2988) - unreachable -ok4788: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 33 - %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.cond4789 -for.cond4789: - %t16 = load i64, ptr %a15 - %t17 = icmp slt i64 %t16, %t14 - br i1 %t17, label %for.body4790, label %for.end4792 -for.body4790: - %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.2989, i64 1, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.2990, i64 3, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic4793, label %ok4794 -panic4793: - call void @finch_panic(ptr @.str.2991, i64 2165, ptr @.str.2992) - unreachable -ok4794: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 33 - %t35 = load i64, ptr %a15 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4795, label %inrange4796 -range4795: - call void @finch_panic_index(ptr @.str.2993, i64 2165, i64 %t35, i64 %t37) - unreachable -inrange4796: - %t39 = extractvalue { ptr, i64, i64 } %t36, 0 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t35 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t31, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t31, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load i64, ptr %t18 - %t48 = add i64 %t47, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t49 = load ptr, ptr %a9 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 - store { ptr, i64, i64 } %t46, ptr %t50 - store i64 %t48, ptr %t18 - br label %for.step4791 -for.step4791: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %for.cond4789 -for.end4792: - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2994, i64 1, i64 0 }, ptr %a54 - call void @finch_str_join(ptr %a55, ptr %a9, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2995, i64 1, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t61 -} - -define internal void @finch.copy.arr_S_gen_Var(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond4868 -n.cond4868: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4869, label %n.end4870 -n.body4869: - %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.cond4868 -n.end4870: - ret void -} - -define internal void @finch.copy.arr_S_gen_Cleanup(ptr %dst, ptr %src) { -entry: - - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - ret void -} - -define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Scope, ptr %src - store %S.gen.Scope %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_int(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_gen_Cleanup(ptr %t8, ptr %t9) - ret void -} - -define internal void @finch.copy.arr_S_gen_Scope(ptr %dst, ptr %src) { -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.cond4865 -n.cond4865: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4866, label %n.end4867 -n.body4866: - %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.cond4865 -n.end4867: - ret void -} - -define internal void @finch.drop.arr_S_gen_Scope(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4871 -n.cond4871: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4872, label %n.end4873 -n.body4872: - %t7 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Scope(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4871 -n.end4873: - call void @finch_arr_free(ptr %a) - 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 - %a20 = alloca %S.gen.FnSig, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca %S.ast.Node, align 16 - %a117 = alloca %S.ast.Node, align 16 - %a119 = alloca %S.ast.Node, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a247 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a270 = alloca i64, align 16 - %a284 = alloca %S.ast.Type, align 16 - %a285 = alloca %S.ast.Type, align 16 - %a287 = alloca %S.ast.Type, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %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 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4797, label %ok4798 -panic4797: - call void @finch_panic(ptr @.str.2996, i64 2171, ptr @.str.2997) - unreachable -ok4798: - %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 %range4799, label %inrange4800 -range4799: - call void @finch_panic_index(ptr @.str.2998, i64 2171, i64 %t6, i64 %t8) - unreachable -inrange4800: - %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 %panic4801, label %ok4802 -panic4801: - call void @finch_panic(ptr @.str.2999, i64 2171, ptr @.str.3000) - unreachable -ok4802: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 13 - store %S.gen.FnSig %t12, ptr %a16 - call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) - %t18 = load %S.gen.FnSig, ptr %a17 - %t19 = load %S.gen.FnSig, ptr %t15 - store %S.gen.FnSig %t18, ptr %t15 - store %S.gen.FnSig %t19, ptr %a20 - call void @finch.drop.S_gen_FnSig(ptr %a20) - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic4803, label %ok4804 -panic4803: - call void @finch_panic(ptr @.str.3001, i64 2172, ptr @.str.3002) - unreachable -ok4804: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %t23, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic4805, label %ok4806 -panic4805: - call void @finch_panic(ptr @.str.3003, i64 2172, ptr @.str.3004) - unreachable -ok4806: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 14 - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - %t32 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t31, ptr %t28 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic4807, label %ok4808 -panic4807: - call void @finch_panic(ptr @.str.3005, i64 2173, ptr @.str.3006) - unreachable -ok4808: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 13 - %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 6 - %t38 = load { ptr, i64, i64 }, ptr %t37 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic4809, label %ok4810 -panic4809: - call void @finch_panic(ptr @.str.3007, i64 2173, ptr @.str.3008) - unreachable -ok4810: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 18 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic4811, label %ok4812 -panic4811: - call void @finch_panic(ptr @.str.3009, i64 2174, ptr @.str.3010) - unreachable -ok4812: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 13 - %t50 = getelementptr inbounds %S.gen.FnSig, ptr %t49, i32 0, i32 7 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4813, label %ok4814 -panic4813: - call void @finch_panic(ptr @.str.3011, i64 2174, ptr @.str.3012) - unreachable -ok4814: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19 - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - %t58 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t57, ptr %t54 - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch.drop.arr_S_ast_Type(ptr %a59) - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic4815, label %ok4816 -panic4815: - call void @finch_panic(ptr @.str.3014, i64 2175, ptr @.str.3015) - unreachable -ok4816: - %t62 = getelementptr inbounds %S.gen.Gen, ptr %t60, i32 0, i32 20 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } { ptr @.str.3013, i64 0, i64 0 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4817, label %ok4818 -panic4817: - call void @finch_panic(ptr @.str.3016, i64 2176, ptr @.str.3017) - unreachable -ok4818: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 13 - %t68 = getelementptr inbounds %S.gen.FnSig, ptr %t67, i32 0, i32 7 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = icmp sgt i64 %t70, 0 - br i1 %t71, label %then4819, label %endif4821 -then4819: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic4822, label %ok4823 -panic4822: - call void @finch_panic(ptr @.str.3019, i64 2177, ptr @.str.3020) - unreachable -ok4823: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 13 - %t75 = getelementptr inbounds %S.gen.FnSig, ptr %t74, i32 0, i32 8 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.3018, i64 17, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3021, i64 1, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4824, label %ok4825 -panic4824: - call void @finch_panic(ptr @.str.3022, i64 2177, ptr @.str.3023) - unreachable -ok4825: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 20 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t85, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %endif4821 -endif4821: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic4826, label %ok4827 -panic4826: - call void @finch_panic(ptr @.str.3024, i64 2179, ptr @.str.3025) - unreachable -ok4827: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 0 - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4828, label %ok4829 -panic4828: - call void @finch_panic(ptr @.str.3026, i64 2179, ptr @.str.3027) - unreachable -ok4829: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 13 - %t97 = getelementptr inbounds %S.gen.FnSig, ptr %t96, i32 0, i32 16 - %t98 = load i64, ptr %t97 - %t99 = load { ptr, i64, i64 }, ptr %t93 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range4830, label %inrange4831 -range4830: - call void @finch_panic_index(ptr @.str.3028, i64 2179, i64 %t98, i64 %t100) - unreachable -inrange4831: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Program, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.ast.Program, ptr %t103, i32 0, i32 8 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4832, label %ok4833 -panic4832: - call void @finch_panic(ptr @.str.3029, i64 2179, ptr @.str.3030) - unreachable -ok4833: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 13 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %t107, i32 0, i32 17 - %t109 = load i64, ptr %t108 - %t110 = load { ptr, i64, i64 }, ptr %t104 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range4834, label %inrange4835 -range4834: - call void @finch_panic_index(ptr @.str.3031, i64 2179, i64 %t109, i64 %t111) - unreachable -inrange4835: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %t113, i64 %t109 - %t115 = load %S.ast.Node, ptr %t114 - store %S.ast.Node %t115, ptr %a116 - call void @finch.copy.S_ast_Node(ptr %a117, ptr %a116) - %t118 = load %S.ast.Node, ptr %a117 - store %S.ast.Node %t118, ptr %a119 - store { ptr, i64, i64 } zeroinitializer, ptr %a120 - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic4836, label %ok4837 -panic4836: - call void @finch_panic(ptr @.str.3032, i64 2181, ptr @.str.3033) - unreachable -ok4837: - %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 4 - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch.copy.arr_str(ptr %a126, ptr %a125) - %t127 = load { ptr, i64, i64 }, ptr %a126 - %t128 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t127, ptr %t124 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.drop.arr_str(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a120 - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4838, label %ok4839 -panic4838: - call void @finch_panic(ptr @.str.3034, i64 2182, ptr @.str.3035) - unreachable -ok4839: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 5 - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch.copy.arr_str(ptr %a135, ptr %a134) - %t136 = load { ptr, i64, i64 }, ptr %a135 - %t137 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } %t136, ptr %t133 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch.drop.arr_str(ptr %a138) - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4840, label %ok4841 -panic4840: - call void @finch_panic(ptr @.str.3036, i64 2183, ptr @.str.3037) - unreachable -ok4841: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 6 - store i64 0, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4842, label %ok4843 -panic4842: - call void @finch_panic(ptr @.str.3038, i64 2184, ptr @.str.3039) - unreachable -ok4843: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 9 - store i1 false, ptr %t144 - %t145 = load ptr, ptr %a1 - %t146 = icmp eq ptr %t145, null - br i1 %t146, label %panic4844, label %ok4845 -panic4844: - call void @finch_panic(ptr @.str.3040, i64 2185, ptr @.str.3041) - unreachable -ok4845: - %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 25 - store i64 0, ptr %t147 - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic4846, label %ok4847 -panic4846: - call void @finch_panic(ptr @.str.3042, i64 2186, ptr @.str.3043) - unreachable -ok4847: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 36 - store i64 -1, ptr %t150 - store i64 -1, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic4848, label %ok4849 -panic4848: - call void @finch_panic(ptr @.str.3044, i64 2188, ptr @.str.3045) - unreachable -ok4849: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 30 - %t155 = load i1, ptr %t154 - br i1 %t155, label %then4850, label %endif4852 -then4850: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a119 - %t158 = call i64 @finch.gen.dbgSubprogram(ptr %t156, %S.ast.Node %t157) - store i64 %t158, ptr %a151 - %t159 = load i64, ptr %a151 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4853, label %ok4854 -panic4853: - call void @finch_panic(ptr @.str.3046, i64 2190, ptr @.str.3047) - unreachable -ok4854: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 36 - store i64 %t159, ptr %t162 - %t163 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 11 - %t164 = load i64, ptr %t163 - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic4855, label %ok4856 -panic4855: - call void @finch_panic(ptr @.str.3048, i64 2191, ptr @.str.3049) - unreachable -ok4856: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 37 - store i64 %t164, ptr %t167 - %t168 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 12 - %t169 = load i64, ptr %t168 - %t170 = load ptr, ptr %a1 - %t171 = icmp eq ptr %t170, null - br i1 %t171, label %panic4857, label %ok4858 -panic4857: - call void @finch_panic(ptr @.str.3050, i64 2192, ptr @.str.3051) - unreachable -ok4858: - %t172 = getelementptr inbounds %S.gen.Gen, ptr %t170, i32 0, i32 38 - store i64 %t169, ptr %t172 - br label %endif4852 -endif4852: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4859, label %ok4860 -panic4859: - call void @finch_panic(ptr @.str.3052, i64 2194, ptr @.str.3053) - unreachable -ok4860: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 44 - store i1 false, ptr %t175 - %t176 = load ptr, ptr %a1 - %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic4861, label %ok4862 -panic4861: - call void @finch_panic(ptr @.str.3054, i64 2195, ptr @.str.3055) - unreachable -ok4862: - %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 46 - store i64 0, ptr %t178 - store { ptr, i64, i64 } zeroinitializer, ptr %a179 - %t180 = load { ptr, i64, i64 }, ptr %a179 - %t181 = load ptr, ptr %a1 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic4863, label %ok4864 -panic4863: - call void @finch_panic(ptr @.str.3056, i64 2197, ptr @.str.3057) - unreachable -ok4864: - %t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 10 - store { ptr, i64, i64 } %t180, ptr %a184 - call void @finch.copy.arr_S_gen_Scope(ptr %a185, ptr %a184) - %t186 = load { ptr, i64, i64 }, ptr %a185 - %t187 = load { ptr, i64, i64 }, ptr %t183 - store { ptr, i64, i64 } %t186, ptr %t183 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch.drop.arr_S_gen_Scope(ptr %a188) - %t189 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t189) - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic4874, label %ok4875 -panic4874: - call void @finch_panic(ptr @.str.3058, i64 2200, ptr @.str.3059) - unreachable -ok4875: - %t193 = getelementptr inbounds %S.gen.Gen, ptr %t191, i32 0, i32 13 - %t194 = getelementptr inbounds %S.gen.FnSig, ptr %t193, i32 0, i32 2 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = icmp sgt i64 %t196, 0 - br i1 %t197, label %then4876, label %endif4878 -then4876: - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = add i64 %t199, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t200, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t201 = load ptr, ptr %a190 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i64 %t199 - store { ptr, i64, i64 } { ptr @.str.3060, i64 9, i64 0 }, ptr %t202 - store i64 %t200, ptr %t198 - store { ptr, i64, i64 } { ptr @.str.3061, i64 6, i64 0 }, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4879, label %ok4880 -panic4879: - call void @finch_panic(ptr @.str.3062, i64 2204, ptr @.str.3063) - unreachable -ok4880: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 13 - %t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 4 - %t208 = load i1, ptr %t207 - br i1 %t208, label %then4881, label %endif4883 -then4881: - %t209 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.3064, i64 4, i64 0 }, ptr %a203 - store { ptr, i64, i64 } %t209, ptr %a210 - call void @finch_str_drop(ptr %a210) - br label %endif4883 -endif4883: - %t211 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_copy(ptr %a213, ptr %a212) - %t214 = load { ptr, i64, i64 }, ptr %a213 - %t215 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t214, 0 - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic4884, label %ok4885 -panic4884: - call void @finch_panic(ptr @.str.3065, i64 2207, ptr @.str.3066) - unreachable -ok4885: - %t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 13 - %t219 = getelementptr inbounds %S.gen.FnSig, ptr %t218, i32 0, i32 2 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch_str_copy(ptr %a222, ptr %a221) - %t223 = load { ptr, i64, i64 }, ptr %a222 - %t224 = insertvalue %S.ast.Type %t215, { ptr, i64, i64 } %t223, 2 - %t225 = load ptr, ptr %a1 - %t226 = icmp eq ptr %t225, null - br i1 %t226, label %panic4886, label %ok4887 -panic4886: - call void @finch_panic(ptr @.str.3067, i64 2207, ptr @.str.3068) - unreachable -ok4887: - %t227 = getelementptr inbounds %S.gen.Gen, ptr %t225, i32 0, i32 13 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_copy(ptr %a231, ptr %a230) - %t232 = load { ptr, i64, i64 }, ptr %a231 - %t233 = insertvalue %S.ast.Type %t224, { ptr, i64, i64 } %t232, 3 - store %S.ast.Type %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic4888, label %ok4889 -panic4888: - call void @finch_panic(ptr @.str.3069, i64 2208, ptr @.str.3070) - unreachable -ok4889: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 10 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range4890, label %inrange4891 -range4890: - call void @finch_panic_index(ptr @.str.3071, i64 2208, i64 0, i64 %t239) - unreachable -inrange4891: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.gen.Scope, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.gen.Scope, ptr %t242, i32 0, i32 0 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.3072, i64 4, i64 0 }, 0 - %t246 = load %S.ast.Type, ptr %a234 - store %S.ast.Type %t246, ptr %a247 - call void @finch.copy.S_ast_Type(ptr %a248, ptr %a247) - %t249 = load %S.ast.Type, ptr %a248 - %t250 = insertvalue %S.gen.Var %t245, %S.ast.Type %t249, 1 - %t251 = insertvalue %S.gen.Var %t250, { ptr, i64, i64 } { ptr @.str.3073, i64 5, i64 0 }, 2 - %t252 = insertvalue %S.gen.Var %t251, i1 false, 3 - %t253 = load i64, ptr %t244 - %t254 = add i64 %t253, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t254, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t255 = load ptr, ptr %t243 - %t256 = getelementptr inbounds %S.gen.Var, ptr %t255, i64 %t253 - store %S.gen.Var %t252, ptr %t256 - store i64 %t254, ptr %t244 - %t257 = load ptr, ptr %a1 - %t258 = icmp eq ptr %t257, null - br i1 %t258, label %panic4892, label %ok4893 -panic4892: - call void @finch_panic(ptr @.str.3074, i64 2209, ptr @.str.3075) - unreachable -ok4893: - %t259 = getelementptr inbounds %S.gen.Gen, ptr %t257, i32 0, i32 30 - %t260 = load i1, ptr %t259 - br i1 %t260, label %then4894, label %endif4896 -then4894: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a119 - %t263 = load %S.ast.Type, ptr %a234 - call void @finch.gen.dbgVariable(ptr %t261, %S.ast.Node %t262, { ptr, i64, i64 } { ptr @.str.3076, i64 4, i64 0 }, %S.ast.Type %t263, { ptr, i64, i64 } { ptr @.str.3077, i64 5, i64 0 }) - br label %endif4896 -endif4896: - call void @finch.drop.S_ast_Type(ptr %a234) - call void @finch_str_drop(ptr %a203) - br label %endif4878 -endif4878: - %t264 = load ptr, ptr %a1 - %t265 = icmp eq ptr %t264, null - br i1 %t265, label %panic4897, label %ok4898 -panic4897: - call void @finch_panic(ptr @.str.3078, i64 2214, ptr @.str.3079) - unreachable -ok4898: - %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 13 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i32 0, i32 13 - %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i32 0, i32 1 - %t269 = load i64, ptr %t268 - store i64 0, ptr %a270 - br label %for.cond4899 -for.cond4899: - %t271 = load i64, ptr %a270 - %t272 = icmp slt i64 %t271, %t269 - br i1 %t272, label %for.body4900, label %for.end4902 -for.body4900: - %t273 = load ptr, ptr %a1 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic4903, label %ok4904 -panic4903: - call void @finch_panic(ptr @.str.3080, i64 2215, ptr @.str.3081) - unreachable -ok4904: - %t275 = getelementptr inbounds %S.gen.Gen, ptr %t273, i32 0, i32 13 - %t276 = getelementptr inbounds %S.gen.FnSig, ptr %t275, i32 0, i32 13 - %t277 = load i64, ptr %a270 - %t278 = load { ptr, i64, i64 }, ptr %t276 - %t279 = extractvalue { ptr, i64, i64 } %t278, 1 - %t280 = icmp uge i64 %t277, %t279 - br i1 %t280, label %range4905, label %inrange4906 -range4905: - call void @finch_panic_index(ptr @.str.3082, i64 2215, i64 %t277, i64 %t279) - unreachable -inrange4906: - %t281 = extractvalue { ptr, i64, i64 } %t278, 0 - %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 %t277 - %t283 = load %S.ast.Type, ptr %t282 - store %S.ast.Type %t283, ptr %a284 - call void @finch.copy.S_ast_Type(ptr %a285, ptr %a284) - %t286 = load %S.ast.Type, ptr %a285 - store %S.ast.Type %t286, ptr %a287 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a287 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.3083, i64 3, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a298, i64 %t297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t296, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - %t306 = load i64, ptr %t288 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t307, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %a190 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t306 - store { ptr, i64, i64 } %t305, ptr %t309 - store i64 %t307, ptr %t288 - %t310 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a311, i64 %t310) - %t312 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } { ptr @.str.3084, i64 2, i64 0 }, ptr %a314 - store { ptr, i64, i64 } %t312, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_drop(ptr %a316) - %t317 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Type, ptr %a287 - %t321 = call i1 @finch.gen.owning(ptr %t319, %S.ast.Type %t320) - br label %logic.from4907 -logic.from4907: - br i1 %t321, label %logic.rhs4908, label %logic.end4909 -logic.rhs4908: - %t322 = load ptr, ptr %a1 - %t323 = icmp eq ptr %t322, null - br i1 %t323, label %panic4910, label %ok4911 -panic4910: - call void @finch_panic(ptr @.str.3085, i64 2218, ptr @.str.3086) - unreachable -ok4911: - %t324 = getelementptr inbounds %S.gen.Gen, ptr %t322, i32 0, i32 13 - %t325 = getelementptr inbounds %S.gen.FnSig, ptr %t324, i32 0, i32 15 - %t326 = load i64, ptr %a270 - %t327 = load { ptr, i64, i64 }, ptr %t325 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range4912, label %inrange4913 -range4912: - call void @finch_panic_index(ptr @.str.3087, i64 2218, i64 %t326, i64 %t328) - unreachable -inrange4913: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds i1, ptr %t330, i64 %t326 - %t332 = load i1, ptr %t331 - %t333 = xor i1 %t332, true - br label %logic.rend4914 -logic.rend4914: - br label %logic.end4909 -logic.end4909: - %t334 = phi i1 [ false, %logic.from4907 ], [ %t333, %logic.rend4914 ] - br i1 %t334, label %then4915, label %endif4917 -then4915: - %t335 = load ptr, ptr %a1 - %t336 = load { ptr, i64, i64 }, ptr %a318 - %t337 = load %S.ast.Type, ptr %a287 - %t338 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t335, { ptr, i64, i64 } %t336, %S.ast.Type %t337) - %t339 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t338, ptr %a318 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_drop(ptr %a340) - br label %endif4917 -endif4917: - %t341 = load i64, ptr %a270 - %t342 = add i64 %t341, 1 - %t343 = load ptr, ptr %a1 - %t344 = icmp eq ptr %t343, null - br i1 %t344, label %panic4918, label %ok4919 -panic4918: - call void @finch_panic(ptr @.str.3088, i64 2221, ptr @.str.3089) - unreachable -ok4919: - %t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 39 - store i64 %t342, ptr %t345 - %t346 = load ptr, ptr %a1 - %t347 = icmp eq ptr %t346, null - br i1 %t347, label %panic4920, label %ok4921 -panic4920: - call void @finch_panic(ptr @.str.3090, i64 2222, ptr @.str.3091) - unreachable -ok4921: - %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 13 - %t349 = getelementptr inbounds %S.gen.FnSig, ptr %t348, i32 0, i32 2 - %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i32 0, i32 1 - %t351 = load i64, ptr %t350 - %t352 = icmp sgt i64 %t351, 0 - br i1 %t352, label %then4922, label %endif4924 -then4922: - %t353 = load i64, ptr %a270 - %t354 = add i64 %t353, 2 - %t355 = load ptr, ptr %a1 - %t356 = icmp eq ptr %t355, null - br i1 %t356, label %panic4925, label %ok4926 -panic4925: - call void @finch_panic(ptr @.str.3092, i64 2223, ptr @.str.3093) - unreachable -ok4926: - %t357 = getelementptr inbounds %S.gen.Gen, ptr %t355, i32 0, i32 39 - store i64 %t354, ptr %t357 - br label %endif4924 -endif4924: - %t358 = load ptr, ptr %a1 - %t359 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t360 = load i64, ptr %a270 - %t361 = load { ptr, i64, i64 }, ptr %t359 - %t362 = extractvalue { ptr, i64, i64 } %t361, 1 - %t363 = icmp uge i64 %t360, %t362 - br i1 %t363, label %range4927, label %inrange4928 -range4927: - call void @finch_panic_index(ptr @.str.3094, i64 2225, i64 %t360, i64 %t362) - unreachable -inrange4928: - %t364 = extractvalue { ptr, i64, i64 } %t361, 0 - %t365 = getelementptr inbounds %S.ast.Node, ptr %t364, i64 %t360 - %t366 = load %S.ast.Node, ptr %t365 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic4929, label %ok4930 -panic4929: - call void @finch_panic(ptr @.str.3095, i64 2225, ptr @.str.3096) - unreachable -ok4930: - %t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13 - %t370 = getelementptr inbounds %S.gen.FnSig, ptr %t369, i32 0, i32 14 - %t371 = load i64, ptr %a270 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4931, label %inrange4932 -range4931: - call void @finch_panic_index(ptr @.str.3097, i64 2225, i64 %t371, i64 %t373) - unreachable -inrange4932: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t371 - %t377 = load { ptr, i64, i64 }, ptr %t376 - %t378 = load %S.ast.Type, ptr %a287 - %t379 = load { ptr, i64, i64 }, ptr %a318 - %t380 = load ptr, ptr %a1 - %t381 = load %S.ast.Type, ptr %a287 - %t382 = call i1 @finch.gen.owning(ptr %t380, %S.ast.Type %t381) - br label %logic.from4933 -logic.from4933: - br i1 %t382, label %logic.rhs4934, label %logic.end4935 -logic.rhs4934: - %t383 = load ptr, ptr %a1 - %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic4936, label %ok4937 -panic4936: - call void @finch_panic(ptr @.str.3098, i64 2225, ptr @.str.3099) - unreachable -ok4937: - %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 13 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 15 - %t387 = load i64, ptr %a270 - %t388 = load { ptr, i64, i64 }, ptr %t386 - %t389 = extractvalue { ptr, i64, i64 } %t388, 1 - %t390 = icmp uge i64 %t387, %t389 - br i1 %t390, label %range4938, label %inrange4939 -range4938: - call void @finch_panic_index(ptr @.str.3100, i64 2225, i64 %t387, i64 %t389) - unreachable -inrange4939: - %t391 = extractvalue { ptr, i64, i64 } %t388, 0 - %t392 = getelementptr inbounds i1, ptr %t391, i64 %t387 - %t393 = load i1, ptr %t392 - %t394 = xor i1 %t393, true - br label %logic.rend4940 -logic.rend4940: - br label %logic.end4935 -logic.end4935: - %t395 = phi i1 [ false, %logic.from4933 ], [ %t394, %logic.rend4940 ] - %t396 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t358, %S.ast.Node %t366, { ptr, i64, i64 } %t377, %S.ast.Type %t378, { ptr, i64, i64 } %t379, i1 false, i1 %t395) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a1 - %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic4941, label %ok4942 -panic4941: - call void @finch_panic(ptr @.str.3101, i64 2226, ptr @.str.3102) - unreachable -ok4942: - %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 39 - store i64 0, ptr %t400 - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_ast_Type(ptr %a287) - br label %for.step4901 -for.step4901: - %t401 = load i64, ptr %a270 - %t402 = add i64 %t401, 1 - store i64 %t402, ptr %a270 - br label %for.cond4899 -for.end4902: - %t403 = load ptr, ptr %a1 - %t404 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t405 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t406 = getelementptr inbounds { ptr, i64, i64 }, ptr %t405, i32 0, i32 1 - %t407 = load i64, ptr %t406 - %t408 = sub i64 %t407, 1 - %t409 = load { ptr, i64, i64 }, ptr %t404 - %t410 = extractvalue { ptr, i64, i64 } %t409, 1 - %t411 = icmp uge i64 %t408, %t410 - br i1 %t411, label %range4943, label %inrange4944 -range4943: - call void @finch_panic_index(ptr @.str.3103, i64 2228, i64 %t408, i64 %t410) - unreachable -inrange4944: - %t412 = extractvalue { ptr, i64, i64 } %t409, 0 - %t413 = getelementptr inbounds %S.ast.Node, ptr %t412, i64 %t408 - %t414 = load %S.ast.Node, ptr %t413 - call void @finch.gen.block(ptr %t403, %S.ast.Node %t414, i1 false) - %t415 = load ptr, ptr %a1 - %t416 = icmp eq ptr %t415, null - br i1 %t416, label %panic4945, label %ok4946 -panic4945: - call void @finch_panic(ptr @.str.3104, i64 2229, ptr @.str.3105) - unreachable -ok4946: - %t417 = getelementptr inbounds %S.gen.Gen, ptr %t415, i32 0, i32 9 - %t418 = load i1, ptr %t417 - %t419 = xor i1 %t418, true - br i1 %t419, label %then4947, label %endif4949 -then4947: - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic4950, label %ok4951 -panic4950: - call void @finch_panic(ptr @.str.3106, i64 2230, ptr @.str.3107) - unreachable -ok4951: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 13 - %t423 = getelementptr inbounds %S.gen.FnSig, ptr %t422, i32 0, i32 12 - %t424 = getelementptr inbounds %S.ast.Type, ptr %t423, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.3108, i64 4, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br i1 %t429, label %then4952, label %endif4954 -then4952: - %t430 = load ptr, ptr %a1 - %t431 = load %S.ast.Node, ptr %a119 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 1 - %t433 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } { ptr @.str.3109, i64 10, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t433, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - %t437 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t437, ptr %a439 - store { ptr, i64, i64 } { ptr @.str.3110, i64 38, i64 0 }, ptr %a440 - call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) - store { ptr, i64, i64 } %t437, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a438 - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4955, label %ok4956 -panic4955: - call void @finch_panic(ptr @.str.3111, i64 2231, ptr @.str.3112) - unreachable -ok4956: - %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 13 - %t446 = getelementptr inbounds %S.gen.FnSig, ptr %t445, i32 0, i32 12 - %t447 = load %S.ast.Type, ptr %t446 - %t448 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t447) - store { ptr, i64, i64 } %t442, ptr %a450 - store { ptr, i64, i64 } %t448, ptr %a451 - call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451) - store { ptr, i64, i64 } %t442, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t448, ptr %a453 - call void @finch_str_drop(ptr %a453) - %t454 = load { ptr, i64, i64 }, ptr %a449 - call void @finch.gen.fail(ptr %t430, %S.ast.Node %t431, { ptr, i64, i64 } %t454) - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_drop(ptr %a455) - br label %endif4954 -endif4954: - %t456 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t456, i64 0) - %t457 = load ptr, ptr %a1 - %t458 = icmp eq ptr %t457, null - br i1 %t458, label %panic4957, label %ok4958 -panic4957: - call void @finch_panic(ptr @.str.3113, i64 2234, ptr @.str.3114) - unreachable -ok4958: - %t459 = getelementptr inbounds %S.gen.Gen, ptr %t457, i32 0, i32 13 - %t460 = getelementptr inbounds %S.gen.FnSig, ptr %t459, i32 0, i32 9 - %t461 = load i1, ptr %t460 - br i1 %t461, label %then4959, label %else4960 -then4959: - %t462 = load ptr, ptr %a1 - %t463 = load ptr, ptr %a1 - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic4962, label %ok4963 -panic4962: - call void @finch_panic(ptr @.str.3116, i64 2235, ptr @.str.3117) - unreachable -ok4963: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 13 - %t467 = load %S.gen.FnSig, ptr %t466 - %t468 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t463, %S.gen.FnSig %t467) - store { ptr, i64, i64 } { ptr @.str.3115, i64 4, i64 0 }, ptr %a470 - store { ptr, i64, i64 } %t468, ptr %a471 - call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) - store { ptr, i64, i64 } %t468, ptr %a472 - call void @finch_str_drop(ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.3118, i64 53, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.emit(ptr %t462, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif4961 -else4960: - %t480 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t480, { ptr, i64, i64 } { ptr @.str.3119, i64 8, i64 0 }) - br label %endif4961 -endif4961: - br label %endif4949 -endif4949: - store { ptr, i64, i64 } { ptr @.str.3120, i64 0, i64 0 }, ptr %a481 - %t482 = load i64, ptr %a151 - %t483 = icmp sge i64 %t482, 0 - br i1 %t483, label %then4964, label %endif4966 -then4964: - %t484 = load i64, ptr %a151 - call void @finch_str_from_int(ptr %a485, i64 %t484) - %t486 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.3121, i64 7, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - %t492 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t491, ptr %a481 - store { ptr, i64, i64 } %t492, ptr %a493 - call void @finch_str_drop(ptr %a493) - br label %endif4966 -endif4966: - %t494 = load ptr, ptr %a1 - %t495 = icmp eq ptr %t494, null - br i1 %t495, label %panic4967, label %ok4968 -panic4967: - call void @finch_panic(ptr @.str.3122, i64 2244, ptr @.str.3123) - unreachable -ok4968: - %t496 = getelementptr inbounds %S.gen.Gen, ptr %t494, i32 0, i32 36 - store i64 -1, ptr %t496 - %t497 = load ptr, ptr %a1 - %t498 = icmp eq ptr %t497, null - br i1 %t498, label %panic4969, label %ok4970 -panic4969: - call void @finch_panic(ptr @.str.3124, i64 2245, ptr @.str.3125) - unreachable -ok4970: - %t499 = getelementptr inbounds %S.gen.Gen, ptr %t497, i32 0, i32 3 - %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i32 0, i32 1 - %t501 = load ptr, ptr %a1 - %t502 = load ptr, ptr %a1 - %t503 = icmp eq ptr %t502, null - br i1 %t503, label %panic4971, label %ok4972 -panic4971: - call void @finch_panic(ptr @.str.3127, i64 2245, ptr @.str.3128) - unreachable -ok4972: - %t504 = getelementptr inbounds %S.gen.Gen, ptr %t502, i32 0, i32 13 - %t505 = load %S.gen.FnSig, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t501, %S.gen.FnSig %t505) - store { ptr, i64, i64 } { ptr @.str.3126, i64 16, i64 0 }, ptr %a508 - store { ptr, i64, i64 } %t506, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - store { ptr, i64, i64 } %t511, ptr %a513 - store { ptr, i64, i64 } { ptr @.str.3129, i64 1, i64 0 }, ptr %a514 - call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) - store { ptr, i64, i64 } %t511, ptr %a515 - call void @finch_str_drop(ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a512 - %t517 = load ptr, ptr %a1 - %t518 = icmp eq ptr %t517, null - br i1 %t518, label %panic4973, label %ok4974 -panic4973: - call void @finch_panic(ptr @.str.3130, i64 2245, ptr @.str.3131) - unreachable -ok4974: - %t519 = getelementptr inbounds %S.gen.Gen, ptr %t517, i32 0, i32 13 - %t520 = getelementptr inbounds %S.gen.FnSig, ptr %t519, i32 0, i32 11 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t516, ptr %a523 - store { ptr, i64, i64 } %t521, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t516, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - store { ptr, i64, i64 } %t526, ptr %a528 - store { ptr, i64, i64 } { ptr @.str.3132, i64 1, i64 0 }, ptr %a529 - call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) - store { ptr, i64, i64 } %t526, ptr %a530 - call void @finch_str_drop(ptr %a530) - %t531 = load { ptr, i64, i64 }, ptr %a527 - %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3133, i64 2, i64 0 }, ptr %a533 - call void @finch_str_join(ptr %a534, ptr %a190, ptr %a533) - %t535 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t531, ptr %a537 - store { ptr, i64, i64 } %t535, ptr %a538 - call void @finch_str_concat(ptr %a536, ptr %a537, ptr %a538) - store { ptr, i64, i64 } %t531, ptr %a539 - call void @finch_str_drop(ptr %a539) - store { ptr, i64, i64 } %t535, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a536 - store { ptr, i64, i64 } %t541, ptr %a543 - store { ptr, i64, i64 } { ptr @.str.3134, i64 1, i64 0 }, ptr %a544 - call void @finch_str_concat(ptr %a542, ptr %a543, ptr %a544) - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch_str_drop(ptr %a545) - %t546 = load { ptr, i64, i64 }, ptr %a542 - %t547 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t546, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t546, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.3135, i64 10, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - %t558 = load ptr, ptr %a1 - %t559 = icmp eq ptr %t558, null - br i1 %t559, label %panic4975, label %ok4976 -panic4975: - call void @finch_panic(ptr @.str.3136, i64 2246, ptr @.str.3137) - unreachable -ok4976: - %t560 = getelementptr inbounds %S.gen.Gen, ptr %t558, i32 0, i32 5 - %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3138, i64 1, i64 0 }, ptr %a562 - call void @finch_str_join(ptr %a563, ptr %t560, ptr %a562) - %t564 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } %t557, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - store { ptr, i64, i64 } %t557, ptr %a568 - call void @finch_str_drop(ptr %a568) - store { ptr, i64, i64 } %t564, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.3139, i64 1, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = load ptr, ptr %a1 - %t577 = icmp eq ptr %t576, null - br i1 %t577, label %panic4977, label %ok4978 -panic4977: - call void @finch_panic(ptr @.str.3140, i64 2246, ptr @.str.3141) - unreachable -ok4978: - %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 4 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3142, i64 1, i64 0 }, ptr %a580 - call void @finch_str_join(ptr %a581, ptr %t578, ptr %a580) - %t582 = load { ptr, i64, i64 }, ptr %a581 - store { ptr, i64, i64 } %t575, ptr %a584 - store { ptr, i64, i64 } %t582, ptr %a585 - call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585) - store { ptr, i64, i64 } %t575, ptr %a586 - call void @finch_str_drop(ptr %a586) - store { ptr, i64, i64 } %t582, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t588, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.3143, i64 3, i64 0 }, ptr %a591 - call void @finch_str_concat(ptr %a589, ptr %a590, ptr %a591) - store { ptr, i64, i64 } %t588, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = load { ptr, i64, i64 }, ptr %a589 - %t594 = load i64, ptr %t500 - %t595 = add i64 %t594, 1 - call void @finch_arr_reserve(ptr %t499, i64 %t595, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t596 = load ptr, ptr %t499 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - store { ptr, i64, i64 } %t593, ptr %t597 - store i64 %t595, ptr %t500 - call void @finch_str_drop(ptr %a481) - call void @finch.drop.arr_str(ptr %a190) - call void @finch.drop.arr_S_gen_Scope(ptr %a179) - call void @finch.drop.arr_str(ptr %a120) - call void @finch.drop.S_ast_Node(ptr %a119) - ret void -} - -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 %then4979, label %endif4981 -then4979: - %t5 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t5) - br label %endif4981 -endif4981: - %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a7 - br label %each.cond4982 -each.cond4982: - %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.body4983, label %each.end4985 -each.body4983: - %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 %panic4986, label %ok4987 -panic4986: - call void @finch_panic(ptr @.str.3144, i64 2256, ptr @.str.3145) - unreachable -ok4987: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 - %t19 = load i1, ptr %t18 - br i1 %t19, label %then4988, label %endif4990 -then4988: - %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.3146, i64 66, i64 0 }) - br label %endif4990 -endif4990: - %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.step4984 -each.step4984: - %t24 = load i64, ptr %a7 - %t25 = add i64 %t24, 1 - store i64 %t25, ptr %a7 - br label %each.cond4982 -each.end4985: - %t26 = load i1, ptr %a3 - br i1 %t26, label %then4991, label %endif4993 -then4991: - %t27 = load ptr, ptr %a1 - call void @finch.gen.endScope(ptr %t27) - br label %endif4993 -endif4993: - 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.drop.S_gen_Loop(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a67 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.gen.Val, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a189 = alloca %S.ast.Node, align 16 - %a190 = alloca %S.ast.Node, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca %S.gen.Loop, align 16 - %a269 = alloca %S.gen.Loop, align 16 - %a271 = alloca %S.gen.Loop, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t4 = load i64, ptr %t3 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic4994, label %ok4995 -panic4994: - call void @finch_panic(ptr @.str.3147, i64 2267, ptr @.str.3148) - unreachable -ok4995: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 37 - 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 %panic4996, label %ok4997 -panic4996: - call void @finch_panic(ptr @.str.3149, i64 2268, ptr @.str.3150) - unreachable -ok4997: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 38 - 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.3151, 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 %then4998, label %else4999 -then4998: - %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 %endif5000 -else4999: - %t26 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3152, 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 %then5001, label %else5002 -then5001: - %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 %endif5003 -else5002: - %t33 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3153, 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 %then5004, label %else5005 -then5004: - %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 %endif5006 -else5005: - %t40 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3154, 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 %then5007, label %else5008 -then5007: - %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 %range5010, label %inrange5011 -range5010: - call void @finch_panic_index(ptr @.str.3155, i64 2277, i64 0, i64 %t47) - unreachable -inrange5011: - %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.3156, 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 %then5012, label %else5013 -then5012: - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = extractvalue { ptr, i64, i64 } %t60, 1 - %t62 = icmp uge i64 0, %t61 - br i1 %t62, label %range5015, label %inrange5016 -range5015: - call void @finch_panic_index(ptr @.str.3157, i64 2278, i64 0, i64 %t61) - unreachable -inrange5016: - %t63 = extractvalue { ptr, i64, i64 } %t60, 0 - %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 0 - %t65 = load %S.ast.Node, ptr %t64 - %t66 = call %S.gen.Val @finch.gen.orElse(ptr %t58, %S.ast.Node %t65, i1 true) - call void @finch.gen.release(ptr %t57, %S.gen.Val %t66) - store %S.gen.Val %t66, ptr %a67 - call void @finch.drop.S_gen_Val(ptr %a67) - br label %endif5014 -else5013: - %t68 = load ptr, ptr %a1 - %t69 = load ptr, ptr %a1 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 0, %t72 - br i1 %t73, label %range5017, label %inrange5018 -range5017: - call void @finch_panic_index(ptr @.str.3158, i64 2280, i64 0, i64 %t72) - unreachable -inrange5018: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 0 - %t76 = load %S.ast.Node, ptr %t75 - %t77 = call %S.gen.Val @finch.gen.expr(ptr %t69, %S.ast.Node %t76) - call void @finch.gen.release(ptr %t68, %S.gen.Val %t77) - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - br label %endif5014 -endif5014: - br label %endif5009 -else5008: - %t79 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3159, i64 5, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp ne i32 %t82, 0 - br i1 %t83, label %then5019, label %else5020 -then5019: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a2 - %t86 = call %S.gen.Val @finch.gen.matchGen(ptr %t84, %S.ast.Node %t85, i1 false) - store %S.gen.Val %t86, ptr %a87 - call void @finch.drop.S_gen_Val(ptr %a87) - br label %endif5021 -else5020: - %t88 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.3160, i64 2, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then5022, label %else5023 -then5022: - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Node, ptr %a2 - call void @finch.gen.ifStmt(ptr %t93, %S.ast.Node %t94) - br label %endif5024 -else5023: - %t95 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.3161, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then5025, label %else5026 -then5025: - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Node, ptr %a2 - call void @finch.gen.whileStmt(ptr %t100, %S.ast.Node %t101) - br label %endif5027 -else5026: - %t102 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.3162, 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 %then5028, label %else5029 -then5028: - %t107 = load ptr, ptr %a1 - %t108 = load %S.ast.Node, ptr %a2 - call void @finch.gen.forStmt(ptr %t107, %S.ast.Node %t108) - br label %endif5030 -else5029: - %t109 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.3163, 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 %then5031, label %else5032 -then5031: - %t114 = load ptr, ptr %a1 - %t115 = load %S.ast.Node, ptr %a2 - call void @finch.gen.eachStmt(ptr %t114, %S.ast.Node %t115) - br label %endif5033 -else5032: - %t116 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3164, 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 %then5034, label %else5035 -then5034: - %t121 = load ptr, ptr %a1 - %t122 = load %S.ast.Node, ptr %a2 - call void @finch.gen.returnStmt(ptr %t121, %S.ast.Node %t122) - br label %endif5036 -else5035: - %t123 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3165, i64 5, i64 0 }, ptr %a125 - %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) - %t127 = icmp ne i32 %t126, 0 - br i1 %t127, label %then5037, label %else5038 -then5037: - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic5040, label %ok5041 -panic5040: - call void @finch_panic(ptr @.str.3166, i64 2295, ptr @.str.3167) - unreachable -ok5041: - %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 46 - %t131 = load i64, ptr %t130 - %t132 = icmp sgt i64 %t131, 0 - br i1 %t132, label %then5042, label %endif5044 -then5042: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } { ptr @.str.3168, i64 33, i64 0 }) - br label %endif5044 -endif5044: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic5045, label %ok5046 -panic5045: - call void @finch_panic(ptr @.str.3169, i64 2298, ptr @.str.3170) - unreachable -ok5046: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 10 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load i64, ptr %t138 - %t140 = sub i64 %t139, 1 - store i64 %t140, ptr %a141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic5047, label %ok5048 -panic5047: - call void @finch_panic(ptr @.str.3171, i64 2299, ptr @.str.3172) - unreachable -ok5048: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 10 - %t145 = load i64, ptr %a141 - %t146 = load { ptr, i64, i64 }, ptr %t144 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5049, label %inrange5050 -range5049: - call void @finch_panic_index(ptr @.str.3173, i64 2299, i64 %t145, i64 %t147) - unreachable -inrange5050: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.gen.Scope, ptr %t149, i64 %t145 - %t151 = getelementptr inbounds %S.gen.Scope, ptr %t150, i32 0, i32 3 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = insertvalue %S.gen.Cleanup zeroinitializer, i1 true, 0 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic5051, label %ok5052 -panic5051: - call void @finch_panic(ptr @.str.3174, i64 2299, ptr @.str.3175) - unreachable -ok5052: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 10 - %t157 = load i64, ptr %a141 - %t158 = load { ptr, i64, i64 }, ptr %t156 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range5053, label %inrange5054 -range5053: - call void @finch_panic_index(ptr @.str.3176, i64 2299, i64 %t157, i64 %t159) - unreachable -inrange5054: - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = getelementptr inbounds %S.gen.Scope, ptr %t161, i64 %t157 - %t163 = getelementptr inbounds %S.gen.Scope, ptr %t162, i32 0, i32 1 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 - %t165 = load i64, ptr %t164 - %t166 = insertvalue %S.gen.Cleanup %t153, i64 %t165, 1 - %t167 = load i64, ptr %t152 - %t168 = add i64 %t167, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t168, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t169 = load ptr, ptr %t151 - %t170 = getelementptr inbounds %S.gen.Cleanup, ptr %t169, i64 %t167 - store %S.gen.Cleanup %t166, ptr %t170 - store i64 %t168, ptr %t152 - %t171 = load ptr, ptr %a1 - %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic5055, label %ok5056 -panic5055: - call void @finch_panic(ptr @.str.3177, i64 2300, ptr @.str.3178) - unreachable -ok5056: - %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 10 - %t174 = load i64, ptr %a141 - %t175 = load { ptr, i64, i64 }, ptr %t173 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range5057, label %inrange5058 -range5057: - call void @finch_panic_index(ptr @.str.3179, i64 2300, i64 %t174, i64 %t176) - unreachable -inrange5058: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.gen.Scope, ptr %t178, i64 %t174 - %t180 = getelementptr inbounds %S.gen.Scope, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i32 0, i32 1 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = extractvalue { ptr, i64, i64 } %t183, 1 - %t185 = icmp uge i64 0, %t184 - br i1 %t185, label %range5059, label %inrange5060 -range5059: - call void @finch_panic_index(ptr @.str.3180, i64 2300, i64 0, i64 %t184) - unreachable -inrange5060: - %t186 = extractvalue { ptr, i64, i64 } %t183, 0 - %t187 = getelementptr inbounds %S.ast.Node, ptr %t186, i64 0 - %t188 = load %S.ast.Node, ptr %t187 - store %S.ast.Node %t188, ptr %a189 - call void @finch.copy.S_ast_Node(ptr %a190, ptr %a189) - %t191 = load %S.ast.Node, ptr %a190 - %t192 = load i64, ptr %t181 - %t193 = add i64 %t192, 1 - call void @finch_arr_reserve(ptr %t180, i64 %t193, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t194 = load ptr, ptr %t180 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t192 - store %S.ast.Node %t191, ptr %t195 - store i64 %t193, ptr %t181 - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5061, label %ok5062 -panic5061: - call void @finch_panic(ptr @.str.3181, i64 2301, ptr @.str.3182) - unreachable -ok5062: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 10 - %t199 = load i64, ptr %a141 - %t200 = load { ptr, i64, i64 }, ptr %t198 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 %t199, %t201 - br i1 %t202, label %range5063, label %inrange5064 -range5063: - call void @finch_panic_index(ptr @.str.3183, i64 2301, i64 %t199, i64 %t201) - unreachable -inrange5064: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.gen.Scope, ptr %t203, i64 %t199 - %t205 = getelementptr inbounds %S.gen.Scope, ptr %t204, i32 0, i32 2 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i32 0, i32 1 - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic5065, label %ok5066 -panic5065: - call void @finch_panic(ptr @.str.3184, i64 2301, ptr @.str.3185) - unreachable -ok5066: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 25 - %t210 = load i64, ptr %t209 - %t211 = load i64, ptr %t206 - %t212 = add i64 %t211, 1 - call void @finch_arr_reserve(ptr %t205, i64 %t212, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t213 = load ptr, ptr %t205 - %t214 = getelementptr inbounds i64, ptr %t213, i64 %t211 - store i64 %t210, ptr %t214 - store i64 %t212, ptr %t206 - br label %endif5039 -else5038: - %t215 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.3186, i64 5, i64 0 }, ptr %a217 - %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) - %t219 = icmp ne i32 %t218, 0 - br label %logic.from5067 -logic.from5067: - br i1 %t219, label %logic.end5069, label %logic.rhs5068 -logic.rhs5068: - %t220 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3187, i64 8, i64 0 }, ptr %a222 - %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) - %t224 = icmp ne i32 %t223, 0 - br label %logic.rend5070 -logic.rend5070: - br label %logic.end5069 -logic.end5069: - %t225 = phi i1 [ true, %logic.from5067 ], [ %t224, %logic.rend5070 ] - br i1 %t225, label %then5071, label %else5072 -then5071: - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic5074, label %ok5075 -panic5074: - call void @finch_panic(ptr @.str.3188, i64 2303, ptr @.str.3189) - unreachable -ok5075: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 46 - %t229 = load i64, ptr %t228 - %t230 = icmp sgt i64 %t229, 0 - br i1 %t230, label %then5076, label %endif5078 -then5076: - %t231 = load ptr, ptr %a1 - %t232 = load %S.ast.Node, ptr %a2 - %t233 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3190, i64 27, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.fail(ptr %t231, %S.ast.Node %t232, { ptr, i64, i64 } %t237) - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - br label %endif5078 -endif5078: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic5079, label %ok5080 -panic5079: - call void @finch_panic(ptr @.str.3191, i64 2306, ptr @.str.3192) - unreachable -ok5080: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 12 - %t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1 - %t243 = load i64, ptr %t242 - %t244 = icmp eq i64 %t243, 0 - br i1 %t244, label %then5081, label %endif5083 -then5081: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t247, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3193, i64 31, i64 0 }, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t251) - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_drop(ptr %a252) - br label %endif5083 -endif5083: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic5084, label %ok5085 -panic5084: - call void @finch_panic(ptr @.str.3194, i64 2309, ptr @.str.3195) - unreachable -ok5085: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 12 - %t256 = load ptr, ptr %a1 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic5086, label %ok5087 -panic5086: - call void @finch_panic(ptr @.str.3196, i64 2309, ptr @.str.3197) - unreachable -ok5087: - %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 12 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load i64, ptr %t259 - %t261 = sub i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %t255 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range5088, label %inrange5089 -range5088: - call void @finch_panic_index(ptr @.str.3198, i64 2309, i64 %t261, i64 %t263) - unreachable -inrange5089: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds %S.gen.Loop, ptr %t265, i64 %t261 - %t267 = load %S.gen.Loop, ptr %t266 - store %S.gen.Loop %t267, ptr %a268 - call void @finch.copy.S_gen_Loop(ptr %a269, ptr %a268) - %t270 = load %S.gen.Loop, ptr %a269 - store %S.gen.Loop %t270, ptr %a271 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 3 - %t274 = load i64, ptr %t273 - call void @finch.gen.dropPending(ptr %t272, i64 %t274) - %t275 = load ptr, ptr %a1 - %t276 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 2 - %t277 = load i64, ptr %t276 - call void @finch.gen.unwind(ptr %t275, i64 %t277) - %t278 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.3199, i64 5, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - br i1 %t282, label %then5090, label %else5091 -then5090: - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - call void @finch.gen.br(ptr %t283, { ptr, i64, i64 } %t285) - br label %endif5092 -else5091: - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 0 - %t288 = load { ptr, i64, i64 }, ptr %t287 - call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t288) - br label %endif5092 -endif5092: - call void @finch.drop.S_gen_Loop(ptr %a271) - br label %endif5073 -else5072: - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Node, ptr %a2 - %t291 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3200, i64 18, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t289, %S.ast.Node %t290, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - br label %endif5073 -endif5073: - br label %endif5039 -endif5039: - br label %endif5036 -endif5036: - br label %endif5033 -endif5033: - br label %endif5030 -endif5030: - br label %endif5027 -endif5027: - br label %endif5024 -endif5024: - br label %endif5021 -endif5021: - br label %endif5009 -endif5009: - br label %endif5006 -endif5006: - br label %endif5003 -endif5003: - br label %endif5000 -endif5000: - call void @finch_str_drop(ptr %a18) - 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.gen.Val, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.gen.Val, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then5093, label %endif5095 -then5093: - %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 %range5096, label %inrange5097 -range5096: - call void @finch_panic_index(ptr @.str.3201, i64 2324, i64 0, i64 %t9) - unreachable -inrange5097: - %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.3202, 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 %then5098, label %endif5100 -then5098: - %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 %range5101, label %inrange5102 -range5101: - call void @finch_panic_index(ptr @.str.3203, i64 2326, i64 0, i64 %t26) - unreachable -inrange5102: - %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.3204, i64 46, i64 0 }) - br label %endif5100 -endif5100: - %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.3205, 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 %then5103, label %endif5105 -then5103: - %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 %range5106, label %inrange5107 -range5106: - call void @finch_panic_index(ptr @.str.3206, i64 2329, i64 0, i64 %t41) - unreachable -inrange5107: - %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.3207, 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.3208, i64 7, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t56) - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - br label %endif5105 -endif5105: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 - %t63 = load %S.ast.Type, ptr %t62 - %t64 = load ptr, ptr %a1 - %t65 = load %S.gen.Val, ptr %a15 - %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) - %t67 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t63, { ptr, i64, i64 } %t66, i1 false, i1 true) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - store { ptr, i64, i64 } %t67, ptr %a69 - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_gen_Val(ptr %a15) - ret void -endif5095: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = call %S.ast.Type @finch.gen.resolve(ptr %t70, %S.ast.Type %t72, %S.ast.Node %t73) - store %S.ast.Type %t74, ptr %a75 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load i64, ptr %t77 - %t79 = icmp eq i64 %t78, 0 - br i1 %t79, label %then5108, label %endif5110 -then5108: - %t80 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 0 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3209, i64 6, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.from5111 -logic.from5111: - br i1 %t85, label %logic.rhs5112, label %logic.end5113 -logic.rhs5112: - %t86 = load ptr, ptr %a1 - %t87 = load %S.ast.Type, ptr %a75 - %t88 = call i1 @finch.gen.hasDefaults(ptr %t86, %S.ast.Type %t87) - br label %logic.rend5114 -logic.rend5114: - br label %logic.end5113 -logic.end5113: - %t89 = phi i1 [ false, %logic.from5111 ], [ %t88, %logic.rend5114 ] - br i1 %t89, label %then5115, label %endif5117 -then5115: - store { ptr, i64, i64 } zeroinitializer, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 3 - %t95 = load { ptr, i64, i64 }, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 2 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = call i64 @finch.gen.findStruct(ptr %t93, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t97) - %t99 = load { ptr, i64, i64 }, ptr %a90 - %t100 = load { ptr, i64, i64 }, ptr %a91 - %t101 = load %S.ast.Node, ptr %a2 - %t102 = call %S.gen.Val @finch.gen.construct(ptr %t92, i64 %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100, %S.ast.Node %t101) - store %S.gen.Val %t102, ptr %a103 - %t104 = load ptr, ptr %a1 - %t105 = load %S.ast.Node, ptr %a2 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t107 = load { ptr, i64, i64 }, ptr %t106 - %t108 = load %S.ast.Type, ptr %a75 - %t109 = getelementptr inbounds %S.gen.Val, ptr %a103, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } %t107, %S.ast.Type %t108, { ptr, i64, i64 } %t110, i1 false, i1 true) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - call void @finch.drop.S_gen_Val(ptr %a103) - call void @finch.drop.arr_str(ptr %a91) - call void @finch.drop.arr_S_ast_Node(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5117: - %t113 = load ptr, ptr %a1 - %t114 = load %S.ast.Node, ptr %a2 - %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = load %S.ast.Type, ptr %a75 - %t118 = load %S.ast.Type, ptr %a75 - %t119 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t118) - %t120 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t113, %S.ast.Node %t114, { ptr, i64, i64 } %t116, %S.ast.Type %t117, { ptr, i64, i64 } %t119, i1 false, i1 true) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5110: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 0, %t127 - br i1 %t128, label %range5118, label %inrange5119 -range5118: - call void @finch_panic_index(ptr @.str.3210, i64 2346, i64 0, i64 %t127) - unreachable -inrange5119: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 0 - %t131 = load %S.ast.Node, ptr %t130 - %t132 = load %S.ast.Type, ptr %a75 - %t133 = call %S.gen.Val @finch.gen.exprWant(ptr %t124, %S.ast.Node %t131, %S.ast.Type %t132) - %t134 = load %S.ast.Type, ptr %a75 - %t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t136 = load { ptr, i64, i64 }, ptr %t135 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 0, %t137 - br i1 %t138, label %range5120, label %inrange5121 -range5120: - call void @finch_panic_index(ptr @.str.3211, i64 2346, i64 0, i64 %t137) - unreachable -inrange5121: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 0 - %t141 = load %S.ast.Node, ptr %t140 - %t142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t143 = load { ptr, i64, i64 }, ptr %t142 - store { ptr, i64, i64 } { ptr @.str.3212, i64 1, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.3213, i64 1, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t123, %S.gen.Val %t133, %S.ast.Type %t134, %S.ast.Node %t141, { ptr, i64, i64 } %t152) - store %S.gen.Val %t133, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_drop(ptr %a155) - store %S.gen.Val %t153, ptr %a156 - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a2 - %t159 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = load %S.ast.Type, ptr %a75 - %t162 = load ptr, ptr %a1 - %t163 = load %S.gen.Val, ptr %a156 - %t164 = call { ptr, i64, i64 } @finch.gen.own(ptr %t162, %S.gen.Val %t163) - %t165 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t160, %S.ast.Type %t161, { ptr, i64, i64 } %t164, i1 false, i1 true) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Val(ptr %a156) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -} - -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 %panic5122, label %ok5123 -panic5122: - call void @finch_panic(ptr @.str.3214, i64 2351, ptr @.str.3215) - unreachable -ok5123: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load ptr, ptr %a1 - %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t8 = load { ptr, i64, i64 }, ptr %t7 - %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 %range5124, label %inrange5125 -range5124: - call void @finch_panic_index(ptr @.str.3216, i64 2351, i64 %t11, i64 %t13) - unreachable -inrange5125: - %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 %then5126, label %endif5128 -then5126: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -endif5128: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic5129, label %ok5130 -panic5129: - call void @finch_panic(ptr @.str.3217, i64 2355, ptr @.str.3218) - unreachable -ok5130: - %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 %range5131, label %inrange5132 -range5131: - call void @finch_panic_index(ptr @.str.3219, i64 2355, i64 %t28, i64 %t30) - unreachable -inrange5132: - %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 %range5133, label %inrange5134 -range5133: - call void @finch_panic_index(ptr @.str.3220, i64 2355, i64 %t36, i64 %t38) - unreachable -inrange5134: - %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.cond5135 -each.cond5135: - %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.body5136, label %each.end5138 -each.body5136: - %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 %then5139, label %endif5141 -then5139: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 true -endif5141: - br label %each.step5137 -each.step5137: - %t56 = load i64, ptr %a43 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a43 - br label %each.cond5135 -each.end5138: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -} - -define internal void @finch.drop.S_gen_Place(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca %S.gen.Var, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca %S.ast.Type, align 16 - %a105 = alloca i1, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca i64, align 16 - %a122 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.gen.Var, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a141 = alloca %S.gen.Val, align 16 - %a152 = alloca %S.gen.Val, align 16 - %a158 = alloca i64, align 16 - %a164 = alloca %S.gen.Place, align 16 - %a179 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.gen.Val, align 16 - %a237 = alloca i64, align 16 - %a243 = alloca %S.gen.Place, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.gen.Val, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.gen.Val, align 16 - %a280 = alloca %S.gen.Val, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t4 = load { ptr, i64, i64 }, ptr %t3 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range5142, label %inrange5143 -range5142: - call void @finch_panic_index(ptr @.str.3221, i64 2364, i64 0, i64 %t5) - unreachable -inrange5143: - %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 %then5144, label %endif5146 -then5144: - %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.from5147 -logic.from5147: - br i1 %t25, label %logic.rhs5148, label %logic.end5149 -logic.rhs5148: - %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.3222, 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.rend5150 -logic.rend5150: - br label %logic.end5149 -logic.end5149: - %t32 = phi i1 [ false, %logic.from5147 ], [ %t31, %logic.rend5150 ] - br i1 %t32, label %then5151, label %endif5153 -then5151: - %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.3223, 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.3224, i64 18, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3225, i64 8, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_drop(ptr %a56) - br label %endif5153 -endif5153: - %t57 = load i64, ptr %a23 - %t58 = icmp sge i64 %t57, 0 - br label %logic.from5154 -logic.from5154: - br i1 %t58, label %logic.rhs5155, label %logic.end5156 -logic.rhs5155: - %t59 = load ptr, ptr %a1 - %t60 = load i64, ptr %a23 - %t61 = call %S.gen.Var @finch.gen.varAt(ptr %t59, i64 %t60) - %t62 = extractvalue %S.gen.Var %t61, 3 - store %S.gen.Var %t61, ptr %a63 - call void @finch.drop.S_gen_Var(ptr %a63) - br label %logic.rend5157 -logic.rend5157: - br label %logic.end5156 -logic.end5156: - %t64 = phi i1 [ false, %logic.from5154 ], [ %t62, %logic.rend5157 ] - br i1 %t64, label %then5158, label %endif5160 -then5158: - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Node, ptr %a2 - %t67 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3226, i64 19, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.3227, i64 18, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t65, %S.ast.Node %t66, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif5160 -endif5160: - br label %endif5146 -endif5146: - store { ptr, i64, i64 } { ptr @.str.3228, i64 9, i64 0 }, ptr %a78 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3229, i64 3, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %then5161, label %endif5163 -then5161: - %t85 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3230, i64 1, i64 0 }, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3231, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t94, ptr %a78 - store { ptr, i64, i64 } %t95, ptr %a96 - call void @finch_str_drop(ptr %a96) - br label %endif5163 -endif5163: - %t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.3232, i64 1, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then5164, label %endif5166 -then5164: - %t103 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3233, i64 4, i64 0 }) - store %S.ast.Type %t103, ptr %a104 - store i1 false, ptr %a105 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3234, i64 3, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then5167, label %endif5169 -then5167: - %t112 = load ptr, ptr %a1 - %t113 = load { ptr, i64, i64 }, ptr %a16 - %t114 = call i64 @finch.gen.lookup(ptr %t112, { ptr, i64, i64 } %t113) - store i64 %t114, ptr %a115 - %t116 = load i64, ptr %a115 - %t117 = icmp sge i64 %t116, 0 - br i1 %t117, label %then5170, label %endif5172 -then5170: - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a115 - %t120 = call %S.gen.Var @finch.gen.varAt(ptr %t118, i64 %t119) - %t121 = extractvalue %S.gen.Var %t120, 1 - store %S.ast.Type %t121, ptr %a122 - call void @finch.copy.S_ast_Type(ptr %a123, ptr %a122) - %t124 = load %S.ast.Type, ptr %a123 - store %S.gen.Var %t120, ptr %a125 - call void @finch.drop.S_gen_Var(ptr %a125) - %t126 = load %S.ast.Type, ptr %a104 - store %S.ast.Type %t124, ptr %a104 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - store i1 true, ptr %a105 - br label %endif5172 -endif5172: - br label %endif5169 -endif5169: - store %S.gen.Val zeroinitializer, ptr %a128 - %t129 = load i1, ptr %a105 - br i1 %t129, label %then5173, label %else5174 -then5173: - %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 %range5176, label %inrange5177 -range5176: - call void @finch_panic_index(ptr @.str.3235, i64 2392, i64 1, i64 %t133) - unreachable -inrange5177: - %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 = load %S.ast.Type, ptr %a104 - %t139 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t138) - %t140 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t139, ptr %a128 - store %S.gen.Val %t140, ptr %a141 - call void @finch.drop.S_gen_Val(ptr %a141) - br label %endif5175 -else5174: - %t142 = load ptr, ptr %a1 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load { ptr, i64, i64 }, ptr %t143 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 1, %t145 - br i1 %t146, label %range5178, label %inrange5179 -range5178: - call void @finch_panic_index(ptr @.str.3236, i64 2394, i64 1, i64 %t145) - unreachable -inrange5179: - %t147 = extractvalue { ptr, i64, i64 } %t144, 0 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 1 - %t149 = load %S.ast.Node, ptr %t148 - %t150 = call %S.gen.Val @finch.gen.expr(ptr %t142, %S.ast.Node %t149) - %t151 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t150, ptr %a128 - store %S.gen.Val %t151, ptr %a152 - call void @finch.drop.S_gen_Val(ptr %a152) - br label %endif5175 -endif5175: - %t153 = load ptr, ptr %a1 - %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic5180, label %ok5181 -panic5180: - call void @finch_panic(ptr @.str.3237, i64 2396, ptr @.str.3238) - unreachable -ok5181: - %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 11 - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i32 0, i32 1 - %t157 = load i64, ptr %t156 - store i64 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t159, %S.gen.Val %t160) - %t161 = load ptr, ptr %a1 - %t162 = load %S.ast.Node, ptr %a13 - %t163 = call %S.gen.Place @finch.gen.place(ptr %t161, %S.ast.Node %t162, i1 true) - store %S.gen.Place %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = load %S.gen.Val, ptr %a128 - %t167 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t168 = load %S.ast.Type, ptr %t167 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = load { ptr, i64, i64 }, ptr %t169 - %t171 = extractvalue { ptr, i64, i64 } %t170, 1 - %t172 = icmp uge i64 1, %t171 - br i1 %t172, label %range5182, label %inrange5183 -range5182: - call void @finch_panic_index(ptr @.str.3239, i64 2399, i64 1, i64 %t171) - unreachable -inrange5183: - %t173 = extractvalue { ptr, i64, i64 } %t170, 0 - %t174 = getelementptr inbounds %S.ast.Node, ptr %t173, i64 1 - %t175 = load %S.ast.Node, ptr %t174 - %t176 = load { ptr, i64, i64 }, ptr %a78 - %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t165, %S.gen.Val %t166, %S.ast.Type %t168, %S.ast.Node %t175, { ptr, i64, i64 } %t176) - %t178 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t177, ptr %a128 - store %S.gen.Val %t178, ptr %a179 - call void @finch.drop.S_gen_Val(ptr %a179) - %t180 = load ptr, ptr %a1 - %t181 = load %S.gen.Val, ptr %a128 - %t182 = call { ptr, i64, i64 } @finch.gen.own(ptr %t180, %S.gen.Val %t181) - store { ptr, i64, i64 } %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t186 = load %S.ast.Type, ptr %t185 - %t187 = call i1 @finch.gen.owning(ptr %t184, %S.ast.Type %t186) - br i1 %t187, label %then5184, label %else5185 -then5184: - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t191 = load %S.ast.Type, ptr %t190 - %t192 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t189, %S.ast.Type %t191) - %t193 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t195, ptr %a197 - %t198 = load ptr, ptr %a1 - %t199 = load ptr, ptr %a1 - %t200 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t201 = load %S.ast.Type, ptr %t200 - %t202 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t201) - %t203 = load { ptr, i64, i64 }, ptr %a183 - %t204 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t205 = load { ptr, i64, i64 }, ptr %t204 - call void @finch.gen.store(ptr %t198, { ptr, i64, i64 } %t202, { ptr, i64, i64 } %t203, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a197 - %t209 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t210 = load %S.ast.Type, ptr %t209 - call void @finch.gen.dropValue(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t210) - call void @finch_str_drop(ptr %a197) - br label %endif5186 -else5185: - %t211 = load ptr, ptr %a1 - %t212 = load ptr, ptr %a1 - %t213 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t214 = load %S.ast.Type, ptr %t213 - %t215 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t212, %S.ast.Type %t214) - %t216 = load { ptr, i64, i64 }, ptr %a183 - %t217 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - call void @finch.gen.store(ptr %t211, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - br label %endif5186 -endif5186: - %t220 = load ptr, ptr %a1 - %t221 = load i64, ptr %a158 - call void @finch.gen.heldEnd(ptr %t220, i64 %t221) - call void @finch_str_drop(ptr %a183) - call void @finch.drop.S_gen_Place(ptr %a164) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Type(ptr %a104) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -endif5166: - %t222 = load ptr, ptr %a1 - %t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t224 = load { ptr, i64, i64 }, ptr %t223 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 1, %t225 - br i1 %t226, label %range5187, label %inrange5188 -range5187: - call void @finch_panic_index(ptr @.str.3240, i64 2411, i64 1, i64 %t225) - unreachable -inrange5188: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.ast.Node, ptr %t227, i64 1 - %t229 = load %S.ast.Node, ptr %t228 - %t230 = call %S.gen.Val @finch.gen.expr(ptr %t222, %S.ast.Node %t229) - store %S.gen.Val %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = icmp eq ptr %t232, null - br i1 %t233, label %panic5189, label %ok5190 -panic5189: - call void @finch_panic(ptr @.str.3241, i64 2412, ptr @.str.3242) - unreachable -ok5190: - %t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 11 - %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t236 = load i64, ptr %t235 - store i64 %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = load %S.gen.Val, ptr %a231 - call void @finch.gen.hold(ptr %t238, %S.gen.Val %t239) - %t240 = load ptr, ptr %a1 - %t241 = load %S.ast.Node, ptr %a13 - %t242 = call %S.gen.Place @finch.gen.place(ptr %t240, %S.ast.Node %t241, i1 true) - store %S.gen.Place %t242, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load ptr, ptr %a1 - %t246 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t245, %S.ast.Type %t247) - %t249 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.load(ptr %t244, { ptr, i64, i64 } %t248, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 - %t254 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t253, %S.ast.Type %t258, 1 - store %S.gen.Val %t259, ptr %a260 - %t261 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t262 = load { ptr, i64, i64 }, ptr %t261 - store { ptr, i64, i64 } %t262, ptr %a263 - call void @finch_str_sub(ptr %a264, ptr %a263, i64 0, i64 1, ptr @.str.3243, i64 2416) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t265, ptr %a266 - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load { ptr, i64, i64 }, ptr %a266 - %t270 = load %S.gen.Val, ptr %a260 - %t271 = load %S.gen.Val, ptr %a231 - %t272 = load %S.ast.Node, ptr %a2 - %t273 = call %S.gen.Val @finch.gen.arith(ptr %t268, { ptr, i64, i64 } %t269, %S.gen.Val %t270, %S.gen.Val %t271, %S.ast.Node %t272) - %t274 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t275 = load %S.ast.Type, ptr %t274 - %t276 = load %S.ast.Node, ptr %a2 - %t277 = load { ptr, i64, i64 }, ptr %a78 - %t278 = call %S.gen.Val @finch.gen.coerce(ptr %t267, %S.gen.Val %t273, %S.ast.Type %t275, %S.ast.Node %t276, { ptr, i64, i64 } %t277) - store %S.gen.Val %t273, ptr %a279 - call void @finch.drop.S_gen_Val(ptr %a279) - store %S.gen.Val %t278, ptr %a280 - %t281 = load ptr, ptr %a1 - %t282 = load %S.gen.Val, ptr %a280 - %t283 = call { ptr, i64, i64 } @finch.gen.own(ptr %t281, %S.gen.Val %t282) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t288 = load %S.ast.Type, ptr %t287 - %t289 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t286, %S.ast.Type %t288) - %t290 = load { ptr, i64, i64 }, ptr %a284 - %t291 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } %t289, { ptr, i64, i64 } %t290, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load ptr, ptr %a1 - %t295 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t296 = load %S.ast.Type, ptr %t295 - %t297 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t296) - br i1 %t297, label %then5191, label %endif5193 -then5191: - %t298 = load ptr, ptr %a1 - %t299 = getelementptr inbounds %S.gen.Val, ptr %a260, i32 0, i32 0 - %t300 = load { ptr, i64, i64 }, ptr %t299 - %t301 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t302 = load %S.ast.Type, ptr %t301 - call void @finch.gen.dropValue(ptr %t298, { ptr, i64, i64 } %t300, %S.ast.Type %t302) - br label %endif5193 -endif5193: - %t303 = load ptr, ptr %a1 - %t304 = load i64, ptr %a237 - call void @finch.gen.heldEnd(ptr %t303, i64 %t304) - call void @finch_str_drop(ptr %a284) - call void @finch.drop.S_gen_Val(ptr %a280) - call void @finch_str_drop(ptr %a266) - call void @finch.drop.S_gen_Val(ptr %a260) - call void @finch.drop.S_gen_Place(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a231) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -} - -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 - %a10 = alloca %S.gen.Val, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Node, ptr %a2 - %t6 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t5) - %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3244, 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.3245, i64 11, i64 0 }) - store %S.gen.Val %t6, ptr %a10 - call void @finch.drop.S_gen_Val(ptr %a10) - store %S.ast.Type %t7, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - %t12 = extractvalue %S.gen.Val %t9, 0 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store %S.gen.Val %t9, ptr %a16 - call void @finch.drop.S_gen_Val(ptr %a16) - ret { ptr, i64, i64 } %t15 -} - -define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) { -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 %range5194, label %inrange5195 -range5194: - call void @finch_panic_index(ptr @.str.3246, i64 2431, i64 0, i64 %t6) - unreachable -inrange5195: - %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.3247, 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.3248, 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.3249, 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 %then5196, label %else5197 -then5196: - %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 %endif5198 -else5197: - %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 %endif5198 -endif5198: - %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 %range5199, label %inrange5200 -range5199: - call void @finch_panic_index(ptr @.str.3250, i64 2441, i64 1, i64 %t39) - unreachable -inrange5200: - %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 %panic5201, label %ok5202 -panic5201: - call void @finch_panic(ptr @.str.3251, i64 2442, ptr @.str.3252) - unreachable -ok5202: - %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 %then5203, label %else5204 -then5203: - %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 %range5206, label %inrange5207 -range5206: - call void @finch_panic_index(ptr @.str.3253, i64 2446, i64 2, i64 %t61) - unreachable -inrange5207: - %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.from5208 -logic.from5208: - br i1 %t66, label %logic.end5210, label %logic.rhs5209 -logic.rhs5209: - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic5211, label %ok5212 -panic5211: - call void @finch_panic(ptr @.str.3254, i64 2447, ptr @.str.3255) - unreachable -ok5212: - %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.rend5213 -logic.rend5213: - br label %logic.end5210 -logic.end5210: - %t72 = phi i1 [ true, %logic.from5208 ], [ %t71, %logic.rend5213 ] - 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 %endif5205 -else5204: - store i1 true, ptr %a49 - br label %endif5205 -endif5205: - %t75 = load i1, ptr %a49 - br i1 %t75, label %then5214, label %endif5216 -then5214: - %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 %endif5216 -endif5216: - call void @finch_str_drop(ptr %a21) - call void @finch_str_drop(ptr %a18) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a12) - ret void -} - -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 - %a99 = alloca i1, align 16 - %a118 = alloca %S.gen.Loop, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3256, 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.3257, 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.3258, 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 %range5217, label %inrange5218 -range5217: - call void @finch_panic_index(ptr @.str.3259, i64 2463, i64 0, i64 %t18) - unreachable -inrange5218: - %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.3260, 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.from5219 -logic.from5219: - br i1 %t27, label %logic.rhs5220, label %logic.end5221 -logic.rhs5220: - %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 %range5222, label %inrange5223 -range5222: - call void @finch_panic_index(ptr @.str.3261, i64 2463, i64 0, i64 %t30) - unreachable -inrange5223: - %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.3262, 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.rend5224 -logic.rend5224: - br label %logic.end5221 -logic.end5221: - %t40 = phi i1 [ false, %logic.from5219 ], [ %t39, %logic.rend5224 ] - 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 %range5225, label %inrange5226 -range5225: - call void @finch_panic_index(ptr @.str.3263, i64 2464, i64 0, i64 %t45) - unreachable -inrange5226: - %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 %then5227, label %else5228 -then5227: - %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 %endif5229 -else5228: - %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 %endif5229 -endif5229: - %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 %panic5230, label %ok5231 -panic5230: - call void @finch_panic(ptr @.str.3264, i64 2471, ptr @.str.3265) - unreachable -ok5231: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 12 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t65, ptr %a66 - 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 %panic5232, label %ok5233 -panic5232: - call void @finch_panic(ptr @.str.3266, i64 2471, ptr @.str.3267) - unreachable -ok5233: - %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 ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic5234, label %ok5235 -panic5234: - call void @finch_panic(ptr @.str.3268, i64 2471, ptr @.str.3269) - unreachable -ok5235: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 11 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.gen.Loop %t80, i64 %t85, 3 - %t87 = load i64, ptr %t64 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t63, i64 %t88, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t63 - %t90 = getelementptr inbounds %S.gen.Loop, ptr %t89, i64 %t87 - store %S.gen.Loop %t86, ptr %t90 - store i64 %t88, ptr %t64 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 1, %t93 - br i1 %t94, label %range5236, label %inrange5237 -range5236: - call void @finch_panic_index(ptr @.str.3270, i64 2472, i64 1, i64 %t93) - unreachable -inrange5237: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 1 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i1 @finch.gen.countBreaks(%S.ast.Node %t97) - store i1 %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t102 = load { ptr, i64, i64 }, ptr %t101 - %t103 = extractvalue { ptr, i64, i64 } %t102, 1 - %t104 = icmp uge i64 1, %t103 - br i1 %t104, label %range5238, label %inrange5239 -range5238: - call void @finch_panic_index(ptr @.str.3271, i64 2473, i64 1, i64 %t103) - unreachable -inrange5239: - %t105 = extractvalue { ptr, i64, i64 } %t102, 0 - %t106 = getelementptr inbounds %S.ast.Node, ptr %t105, i64 1 - %t107 = load %S.ast.Node, ptr %t106 - call void @finch.gen.block(ptr %t100, %S.ast.Node %t107, i1 true) - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic5240, label %ok5241 -panic5240: - call void @finch_panic(ptr @.str.3272, i64 2474, ptr @.str.3273) - unreachable -ok5241: - %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 12 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp eq i64 %t112, 0 - br i1 %t113, label %panic5242, label %ok5243 -panic5242: - call void @finch_panic(ptr @.str.3274, i64 2474, ptr @.str.3275) - unreachable -ok5243: - %t114 = sub i64 %t112, 1 - %t115 = load ptr, ptr %t110 - %t116 = getelementptr inbounds %S.gen.Loop, ptr %t115, i64 %t114 - %t117 = load %S.gen.Loop, ptr %t116 - store i64 %t114, ptr %t111 - store %S.gen.Loop %t117, ptr %a118 - call void @finch.drop.S_gen_Loop(ptr %a118) - %t119 = load ptr, ptr %a1 - %t120 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.br(ptr %t119, { ptr, i64, i64 } %t120) - %t121 = load i1, ptr %a41 - %t122 = xor i1 %t121, true - br label %logic.from5244 -logic.from5244: - br i1 %t122, label %logic.end5246, label %logic.rhs5245 -logic.rhs5245: - %t123 = load i1, ptr %a99 - br label %logic.rend5247 -logic.rend5247: - br label %logic.end5246 -logic.end5246: - %t124 = phi i1 [ true, %logic.from5244 ], [ %t123, %logic.rend5247 ] - br i1 %t124, label %then5248, label %endif5250 -then5248: - %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a11 - call void @finch.gen.label(ptr %t125, { ptr, i64, i64 } %t126) - br label %endif5250 -endif5250: - call void @finch_str_drop(ptr %a51) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a5) - ret void -} - -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.3276, 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 %then5251, label %endif5253 -then5251: - ret i1 true -endif5253: - %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.3277, 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.from5254 -logic.from5254: - br i1 %t13, label %logic.end5256, label %logic.rhs5255 -logic.rhs5255: - %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.3278, 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.rend5257 -logic.rend5257: - br label %logic.end5256 -logic.end5256: - %t20 = phi i1 [ true, %logic.from5254 ], [ %t19, %logic.rend5257 ] - br label %logic.from5258 -logic.from5258: - br i1 %t20, label %logic.end5260, label %logic.rhs5259 -logic.rhs5259: - %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.3279, 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.rend5261 -logic.rend5261: - br label %logic.end5260 -logic.end5260: - %t27 = phi i1 [ true, %logic.from5258 ], [ %t26, %logic.rend5261 ] - br i1 %t27, label %then5262, label %endif5264 -then5262: - ret i1 false -endif5264: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a29 - br label %each.cond5265 -each.cond5265: - %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.body5266, label %each.end5268 -each.body5266: - %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 %then5269, label %endif5271 -then5269: - ret i1 true -endif5271: - br label %each.step5267 -each.step5267: - %t40 = load i64, ptr %a29 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a29 - br label %each.cond5265 -each.end5268: - 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 - %a22 = alloca %S.gen.Val, align 16 - %a23 = alloca %S.ast.Type, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.gen.Val, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.gen.Val, align 16 - %a50 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca %S.gen.Val, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.gen.Loop, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5272, label %inrange5273 -range5272: - call void @finch_panic_index(ptr @.str.3280, i64 2498, i64 0, i64 %t7) - unreachable -inrange5273: - %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.3281, 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 %range5274, label %inrange5275 -range5274: - call void @finch_panic_index(ptr @.str.3282, i64 2498, i64 0, i64 %t16) - unreachable -inrange5275: - %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.3283, i64 20, i64 0 }) - store %S.gen.Val %t12, ptr %a22 - call void @finch.drop.S_gen_Val(ptr %a22) - store %S.ast.Type %t13, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - %t24 = extractvalue %S.gen.Val %t21, 0 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - store %S.gen.Val %t21, ptr %a28 - call void @finch.drop.S_gen_Val(ptr %a28) - store { ptr, i64, i64 } %t27, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = load ptr, ptr %a1 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t33 = load { ptr, i64, i64 }, ptr %t32 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 1, %t34 - br i1 %t35, label %range5276, label %inrange5277 -range5276: - call void @finch_panic_index(ptr @.str.3284, i64 2499, i64 1, i64 %t34) - unreachable -inrange5277: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 1 - %t38 = load %S.ast.Node, ptr %t37 - %t39 = call %S.gen.Val @finch.gen.expr(ptr %t31, %S.ast.Node %t38) - %t40 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3285, i64 3, i64 0 }) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 1, %t43 - br i1 %t44, label %range5278, label %inrange5279 -range5278: - call void @finch_panic_index(ptr @.str.3286, i64 2499, i64 1, i64 %t43) - unreachable -inrange5279: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Node, ptr %t45, i64 1 - %t47 = load %S.ast.Node, ptr %t46 - %t48 = call %S.gen.Val @finch.gen.coerce(ptr %t30, %S.gen.Val %t39, %S.ast.Type %t40, %S.ast.Node %t47, { ptr, i64, i64 } { ptr @.str.3287, i64 18, i64 0 }) - store %S.gen.Val %t39, ptr %a49 - call void @finch.drop.S_gen_Val(ptr %a49) - store %S.ast.Type %t40, ptr %a50 - call void @finch.drop.S_ast_Type(ptr %a50) - %t51 = extractvalue %S.gen.Val %t48, 0 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - store %S.gen.Val %t48, ptr %a55 - call void @finch.drop.S_gen_Val(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t57) - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3288, i64 3, i64 0 }) - %t63 = load { ptr, i64, i64 }, ptr %a29 - %t64 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t62, { ptr, i64, i64 } %t63, i1 true, i1 false) - store %S.ast.Type %t62, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t64, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.3289, i64 8, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t70, { ptr, i64, i64 } { ptr @.str.3290, i64 8, i64 0 }) - store { ptr, i64, i64 } %t71, ptr %a72 - %t73 = load ptr, ptr %a1 - %t74 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t73, { ptr, i64, i64 } { ptr @.str.3291, i64 8, i64 0 }) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3292, i64 7, i64 0 }) - store { ptr, i64, i64 } %t77, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t79, { ptr, i64, i64 } %t80) - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t81, { ptr, i64, i64 } %t82) - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a66 - %t85 = call { ptr, i64, i64 } @finch.gen.load(ptr %t83, { ptr, i64, i64 } { ptr @.str.3293, i64 3, i64 0 }, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.3294, i64 13, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.3295, i64 2, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t104, ptr %a106 - %t107 = load ptr, ptr %a1 - %t108 = load { ptr, i64, i64 }, ptr %a106 - %t109 = load { ptr, i64, i64 }, ptr %a72 - %t110 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.condBr(ptr %t107, { ptr, i64, i64 } %t108, { ptr, i64, i64 } %t109, { ptr, i64, i64 } %t110) - %t111 = load ptr, ptr %a1 - %t112 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.label(ptr %t111, { ptr, i64, i64 } %t112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic5280, label %ok5281 -panic5280: - call void @finch_panic(ptr @.str.3296, i64 2512, ptr @.str.3297) - unreachable -ok5281: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 12 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t120, 0 - %t122 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_copy(ptr %a124, ptr %a123) - %t125 = load { ptr, i64, i64 }, ptr %a124 - %t126 = insertvalue %S.gen.Loop %t121, { ptr, i64, i64 } %t125, 1 - %t127 = load ptr, ptr %a1 - %t128 = icmp eq ptr %t127, null - br i1 %t128, label %panic5282, label %ok5283 -panic5282: - call void @finch_panic(ptr @.str.3298, i64 2512, ptr @.str.3299) - unreachable -ok5283: - %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 10 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.Loop %t126, i64 %t131, 2 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic5284, label %ok5285 -panic5284: - call void @finch_panic(ptr @.str.3300, i64 2512, ptr @.str.3301) - unreachable -ok5285: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 11 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = insertvalue %S.gen.Loop %t132, i64 %t137, 3 - %t139 = load i64, ptr %t116 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t115, i64 %t140, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t115 - %t142 = getelementptr inbounds %S.gen.Loop, ptr %t141, i64 %t139 - store %S.gen.Loop %t138, ptr %t142 - store i64 %t140, ptr %t116 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 2, %t146 - br i1 %t147, label %range5286, label %inrange5287 -range5286: - call void @finch_panic_index(ptr @.str.3302, i64 2513, i64 2, i64 %t146) - unreachable -inrange5287: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i64 2 - %t150 = load %S.ast.Node, ptr %t149 - call void @finch.gen.block(ptr %t143, %S.ast.Node %t150, i1 true) - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic5288, label %ok5289 -panic5288: - call void @finch_panic(ptr @.str.3303, i64 2514, ptr @.str.3304) - unreachable -ok5289: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 12 - %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i32 0, i32 1 - %t155 = load i64, ptr %t154 - %t156 = icmp eq i64 %t155, 0 - br i1 %t156, label %panic5290, label %ok5291 -panic5290: - call void @finch_panic(ptr @.str.3305, i64 2514, ptr @.str.3306) - unreachable -ok5291: - %t157 = sub i64 %t155, 1 - %t158 = load ptr, ptr %t153 - %t159 = getelementptr inbounds %S.gen.Loop, ptr %t158, i64 %t157 - %t160 = load %S.gen.Loop, ptr %t159 - store i64 %t157, ptr %t154 - store %S.gen.Loop %t160, ptr %a161 - call void @finch.drop.S_gen_Loop(ptr %a161) - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.br(ptr %t162, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.label(ptr %t164, { ptr, i64, i64 } %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a66 - %t168 = call { ptr, i64, i64 } @finch.gen.load(ptr %t166, { ptr, i64, i64 } { ptr @.str.3307, i64 3, i64 0 }, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3309, i64 8, i64 0 }, ptr %a174 - store { ptr, i64, i64 } %t172, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.3310, i64 3, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t171, { ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.store(ptr %t170, { ptr, i64, i64 } { ptr @.str.3308, i64 3, i64 0 }, { ptr, i64, i64 } %t182, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t186, { ptr, i64, i64 } %t187) - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189) - %t190 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t190) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a106) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a72) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch_str_drop(ptr %a56) - call void @finch_str_drop(ptr %a29) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i1, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca %S.gen.Loop, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5292, label %inrange5293 -range5292: - call void @finch_panic_index(ptr @.str.3311, i64 2526, i64 0, i64 %t8) - unreachable -inrange5293: - %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 %range5294, label %inrange5295 -range5294: - call void @finch_panic_index(ptr @.str.3312, i64 2527, i64 1, i64 %t19) - unreachable -inrange5295: - %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.from5296 -logic.from5296: - br i1 %t28, label %logic.rhs5297, label %logic.end5298 -logic.rhs5297: - %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 %range5299, label %inrange5300 -range5299: - call void @finch_panic_index(ptr @.str.3313, i64 2528, i64 0, i64 %t32) - unreachable -inrange5300: - %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 %range5301, label %inrange5302 -range5301: - call void @finch_panic_index(ptr @.str.3314, i64 2528, i64 1, i64 %t40) - unreachable -inrange5302: - %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) - store { ptr, i64, i64 } %t37, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %logic.rend5303 -logic.rend5303: - br label %logic.end5298 -logic.end5298: - %t47 = phi i1 [ false, %logic.from5296 ], [ %t45, %logic.rend5303 ] - store i1 %t47, ptr %a48 - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.3315, i64 3, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.3316, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3317, i64 1, i64 0 }, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } { ptr @.str.3318, i64 0, i64 0 }, ptr %a54 - %t55 = load i1, ptr %a5 - br i1 %t55, label %then5304, label %endif5306 -then5304: - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a4 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } { ptr @.str.3320, i64 23, i64 0 }, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t65, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.3321, i64 6, i64 0 }, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - %t71 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t70, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.3322, i64 14, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.3319, i64 3, i64 0 }, { ptr, i64, i64 } %t82) - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t84, ptr %a54 - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - br label %endif5306 -endif5306: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3323, 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.3324, i64 9, i64 0 }) - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = load ptr, ptr %a1 - %t95 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t94, { ptr, i64, i64 } { ptr @.str.3325, i64 8, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t97, { ptr, i64, i64 } { ptr @.str.3326, i64 8, i64 0 }) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t100, { ptr, i64, i64 } { ptr @.str.3327, i64 7, i64 0 }) - store { ptr, i64, i64 } %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load i1, ptr %a5 - br label %logic.from5307 -logic.from5307: - br i1 %t107, label %logic.rhs5308, label %logic.end5309 -logic.rhs5308: - %t108 = load i1, ptr %a48 - br label %logic.rend5310 -logic.rend5310: - br label %logic.end5309 -logic.end5309: - %t109 = phi i1 [ false, %logic.from5307 ], [ %t108, %logic.rend5310 ] - br i1 %t109, label %then5311, label %endif5313 -then5311: - %t110 = load ptr, ptr %a1 - %t111 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t110, { ptr, i64, i64 } { ptr @.str.3328, i64 11, i64 0 }) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t113, { ptr, i64, i64 } { ptr @.str.3329, i64 8, i64 0 }) - store { ptr, i64, i64 } %t114, ptr %a115 - %t116 = load ptr, ptr %a1 - %t117 = load ptr, ptr %a1 - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Type, ptr %a4 - %t120 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t118, %S.ast.Type %t119) - store { ptr, i64, i64 } { ptr @.str.3331, i64 23, i64 0 }, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3332, i64 6, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3333, i64 14, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call { ptr, i64, i64 } @finch.gen.op(ptr %t117, { ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.3330, i64 3, i64 0 }, { ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.3334, i64 12, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.3335, i64 2, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t158, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t164) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a112 - %t168 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.condBr(ptr %t147, { ptr, i64, i64 } %t165, { ptr, i64, i64 } %t167, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t165, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load ptr, ptr %a1 - %t171 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.gen.label(ptr %t170, { ptr, i64, i64 } %t171) - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load ptr, ptr %a1 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic5314, label %ok5315 -panic5314: - call void @finch_panic(ptr @.str.3337, i64 2549, ptr @.str.3338) - unreachable -ok5315: - %t176 = getelementptr inbounds %S.gen.Gen, ptr %t174, i32 0, i32 1 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t178 = load i64, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %t176 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range5316, label %inrange5317 -range5316: - call void @finch_panic_index(ptr @.str.3339, i64 2549, i64 %t178, i64 %t180) - unreachable -inrange5317: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178 - %t184 = load { ptr, i64, i64 }, ptr %t183 - %t185 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t173, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } { ptr @.str.3336, i64 33, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.3340, i64 6, i64 0 }, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t190, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t197 = load i64, ptr %t196 - call void @finch_str_from_int(ptr %a198, i64 %t197) - %t199 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t195, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t195, ptr %a203 - call void @finch_str_drop(ptr %a203) - store { ptr, i64, i64 } %t199, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.3341, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.emit(ptr %t172, { ptr, i64, i64 } %t210) - store { ptr, i64, i64 } %t210, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t212, { ptr, i64, i64 } { ptr @.str.3342, i64 11, i64 0 }) - %t213 = load ptr, ptr %a1 - %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic5318, label %ok5319 -panic5318: - call void @finch_panic(ptr @.str.3343, i64 2551, ptr @.str.3344) - unreachable -ok5319: - %t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 9 - store i1 true, ptr %t215 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) - call void @finch_str_drop(ptr %a146) - call void @finch_str_drop(ptr %a115) - call void @finch_str_drop(ptr %a112) - br label %endif5313 -endif5313: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a51 - %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t218, { ptr, i64, i64 } { ptr @.str.3345, 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, ptr %a1 - %t225 = load %S.ast.Type, ptr %a4 - %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) - store { ptr, i64, i64 } { ptr @.str.3347, i64 23, i64 0 }, ptr %a228 - store { ptr, i64, i64 } %t226, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3348, i64 6, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t236, ptr %a239 - store { ptr, i64, i64 } %t237, ptr %a240 - call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) - store { ptr, i64, i64 } %t236, ptr %a241 - call void @finch_str_drop(ptr %a241) - %t242 = load { ptr, i64, i64 }, ptr %a238 - store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.3349, i64 14, i64 0 }, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = load { ptr, i64, i64 }, ptr %a243 - %t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t247, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } { ptr @.str.3346, i64 3, i64 0 }, { ptr, i64, i64 } %t248) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - store { ptr, i64, i64 } %t250, ptr %a252 - %t253 = load ptr, ptr %a1 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3350, i64 13, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.3351, i64 2, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t264, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a93 - %t274 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.condBr(ptr %t253, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t273, { ptr, i64, i64 } %t274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load ptr, ptr %a1 - %t277 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.label(ptr %t276, { ptr, i64, i64 } %t277) - %t278 = load ptr, ptr %a1 - %t279 = load { ptr, i64, i64 }, ptr %a3 - %t280 = load %S.ast.Type, ptr %a4 - %t281 = load { ptr, i64, i64 }, ptr %a221 - %t282 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t278, { ptr, i64, i64 } %t279, %S.ast.Type %t280, { ptr, i64, i64 } %t281) - store { ptr, i64, i64 } %t282, ptr %a283 - %t284 = load ptr, ptr %a1 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a283 - %t287 = load %S.ast.Type, ptr %a4 - %t288 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t285, { ptr, i64, i64 } %t286, %S.ast.Type %t287, i64 0) - %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t284, { ptr, i64, i64 } { ptr @.str.3352, i64 3, i64 0 }, { ptr, i64, i64 } %t288) - store { ptr, i64, i64 } %t288, ptr %a290 - call void @finch_str_drop(ptr %a290) - store { ptr, i64, i64 } %t289, ptr %a291 - %t292 = load ptr, ptr %a1 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.3353, i64 12, i64 0 }, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.3354, i64 3, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = call { ptr, i64, i64 } @finch.gen.op(ptr %t293, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t303, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a99 - %t307 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.condBr(ptr %t292, { ptr, i64, i64 } %t304, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t304, ptr %a308 - call void @finch_str_drop(ptr %a308) - %t309 = load ptr, ptr %a1 - %t310 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.label(ptr %t309, { ptr, i64, i64 } %t310) - %t311 = load ptr, ptr %a1 - %t312 = icmp eq ptr %t311, null - br i1 %t312, label %panic5320, label %ok5321 -panic5320: - call void @finch_panic(ptr @.str.3355, i64 2562, ptr @.str.3356) - unreachable -ok5321: - %t313 = getelementptr inbounds %S.gen.Gen, ptr %t311, i32 0, i32 12 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i32 0, i32 1 - %t315 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t315, ptr %a316 - call void @finch_str_copy(ptr %a317, ptr %a316) - %t318 = load { ptr, i64, i64 }, ptr %a317 - %t319 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t318, 0 - %t320 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_copy(ptr %a322, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - %t324 = insertvalue %S.gen.Loop %t319, { ptr, i64, i64 } %t323, 1 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic5322, label %ok5323 -panic5322: - call void @finch_panic(ptr @.str.3357, i64 2562, ptr @.str.3358) - unreachable -ok5323: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 10 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i32 0, i32 1 - %t329 = load i64, ptr %t328 - %t330 = insertvalue %S.gen.Loop %t324, i64 %t329, 2 - %t331 = load ptr, ptr %a1 - %t332 = icmp eq ptr %t331, null - br i1 %t332, label %panic5324, label %ok5325 -panic5324: - call void @finch_panic(ptr @.str.3359, i64 2562, ptr @.str.3360) - unreachable -ok5325: - %t333 = getelementptr inbounds %S.gen.Gen, ptr %t331, i32 0, i32 11 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 - %t335 = load i64, ptr %t334 - %t336 = insertvalue %S.gen.Loop %t330, i64 %t335, 3 - %t337 = load i64, ptr %t314 - %t338 = add i64 %t337, 1 - call void @finch_arr_reserve(ptr %t313, i64 %t338, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t339 = load ptr, ptr %t313 - %t340 = getelementptr inbounds %S.gen.Loop, ptr %t339, i64 %t337 - store %S.gen.Loop %t336, ptr %t340 - store i64 %t338, ptr %t314 - %t341 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t341) - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a16 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a283 - %t348 = load %S.ast.Type, ptr %a4 - %t349 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t346, { ptr, i64, i64 } %t347, %S.ast.Type %t348, i64 1) - %t350 = call { ptr, i64, i64 } @finch.gen.load(ptr %t342, { ptr, i64, i64 } %t345, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t345, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_drop(ptr %a352) - store { ptr, i64, i64 } %t350, ptr %a353 - %t354 = load i1, ptr %a48 - br i1 %t354, label %then5326, label %endif5328 -then5326: - %t355 = load ptr, ptr %a1 - %t356 = load { ptr, i64, i64 }, ptr %a353 - %t357 = load %S.ast.Type, ptr %a16 - %t358 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t355, { ptr, i64, i64 } %t356, %S.ast.Type %t357) - %t359 = load { ptr, i64, i64 }, ptr %a353 - store { ptr, i64, i64 } %t358, ptr %a353 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif5328 -endif5328: - %t361 = load ptr, ptr %a1 - %t362 = load %S.ast.Node, ptr %a2 - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - %t365 = load %S.ast.Type, ptr %a16 - %t366 = load { ptr, i64, i64 }, ptr %a353 - %t367 = load i1, ptr %a48 - %t368 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t364, %S.ast.Type %t365, { ptr, i64, i64 } %t366, i1 true, i1 %t367) - store { ptr, i64, i64 } %t368, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load i64, ptr %t371 - %t373 = icmp sgt i64 %t372, 0 - br i1 %t373, label %then5329, label %endif5331 -then5329: - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a27 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - %t378 = load ptr, ptr %a1 - %t379 = load { ptr, i64, i64 }, ptr %a283 - %t380 = load %S.ast.Type, ptr %a4 - %t381 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t378, { ptr, i64, i64 } %t379, %S.ast.Type %t380, i64 2) - %t382 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t377, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t377, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t381, ptr %a384 - call void @finch_str_drop(ptr %a384) - store { ptr, i64, i64 } %t382, ptr %a385 - %t386 = load i1, ptr %a48 - br i1 %t386, label %then5332, label %endif5334 -then5332: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a385 - %t389 = load %S.ast.Type, ptr %a27 - %t390 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t387, { ptr, i64, i64 } %t388, %S.ast.Type %t389) - %t391 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a385 - store { ptr, i64, i64 } %t391, ptr %a392 - call void @finch_str_drop(ptr %a392) - br label %endif5334 -endif5334: - %t393 = load ptr, ptr %a1 - %t394 = load %S.ast.Node, ptr %a2 - %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = load %S.ast.Type, ptr %a27 - %t398 = load { ptr, i64, i64 }, ptr %a385 - %t399 = load i1, ptr %a48 - %t400 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t393, %S.ast.Node %t394, { ptr, i64, i64 } %t396, %S.ast.Type %t397, { ptr, i64, i64 } %t398, i1 true, i1 %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - call void @finch_str_drop(ptr %a401) - call void @finch_str_drop(ptr %a385) - br label %endif5331 -endif5331: - %t402 = load ptr, ptr %a1 - %t403 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t404 = load { ptr, i64, i64 }, ptr %t403 - %t405 = extractvalue { ptr, i64, i64 } %t404, 1 - %t406 = icmp uge i64 1, %t405 - br i1 %t406, label %range5335, label %inrange5336 -range5335: - call void @finch_panic_index(ptr @.str.3361, i64 2576, i64 1, i64 %t405) - unreachable -inrange5336: - %t407 = extractvalue { ptr, i64, i64 } %t404, 0 - %t408 = getelementptr inbounds %S.ast.Node, ptr %t407, i64 1 - %t409 = load %S.ast.Node, ptr %t408 - call void @finch.gen.block(ptr %t402, %S.ast.Node %t409, i1 true) - %t410 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t410) - %t411 = load ptr, ptr %a1 - %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic5337, label %ok5338 -panic5337: - call void @finch_panic(ptr @.str.3362, i64 2578, ptr @.str.3363) - unreachable -ok5338: - %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 12 - %t414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t413, i32 0, i32 1 - %t415 = load i64, ptr %t414 - %t416 = icmp eq i64 %t415, 0 - br i1 %t416, label %panic5339, label %ok5340 -panic5339: - call void @finch_panic(ptr @.str.3364, i64 2578, ptr @.str.3365) - unreachable -ok5340: - %t417 = sub i64 %t415, 1 - %t418 = load ptr, ptr %t413 - %t419 = getelementptr inbounds %S.gen.Loop, ptr %t418, i64 %t417 - %t420 = load %S.gen.Loop, ptr %t419 - store i64 %t417, ptr %t414 - store %S.gen.Loop %t420, ptr %a421 - call void @finch.drop.S_gen_Loop(ptr %a421) - %t422 = load ptr, ptr %a1 - %t423 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.br(ptr %t422, { ptr, i64, i64 } %t423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = load { ptr, i64, i64 }, ptr %a51 - %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t426, { ptr, i64, i64 } { ptr @.str.3366, i64 3, i64 0 }, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t428, ptr %a429 - %t430 = load ptr, ptr %a1 - %t431 = load ptr, ptr %a1 - %t432 = load { ptr, i64, i64 }, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.3368, i64 8, i64 0 }, ptr %a434 - store { ptr, i64, i64 } %t432, ptr %a435 - call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) - %t436 = load { ptr, i64, i64 }, ptr %a433 - store { ptr, i64, i64 } %t436, ptr %a438 - store { ptr, i64, i64 } { ptr @.str.3369, i64 3, i64 0 }, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t436, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t431, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t430, { ptr, i64, i64 } { ptr @.str.3367, i64 3, i64 0 }, { ptr, i64, i64 } %t442, { ptr, i64, i64 } %t444) - store { ptr, i64, i64 } %t442, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t446, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.label(ptr %t448, { ptr, i64, i64 } %t449) - call void @finch_str_drop(ptr %a429) - call void @finch_str_drop(ptr %a353) - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a283) - call void @finch_str_drop(ptr %a252) - call void @finch_str_drop(ptr %a221) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a96) - call void @finch_str_drop(ptr %a93) - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret void -} - -define internal void @finch.drop.S_gen_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 1 - call void @finch.drop.S_gen_Place(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 2 - call void @finch.drop.S_gen_Val(ptr %t2) - ret void -} - -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.ast.Type, align 16 - %a31 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a39 = alloca %S.ast.Type, align 16 - %a42 = alloca %S.ast.Type, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca i1, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.Loop, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - 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 %range5341, label %inrange5342 -range5341: - call void @finch_panic_index(ptr @.str.3370, i64 2589, i64 0, i64 %t7) - unreachable -inrange5342: - %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.3371, i64 0, i64 0 }, ptr %a14 - %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3372, 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 %then5343, label %else5344 -then5343: - %t19 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t20 = getelementptr inbounds %S.gen.Place, ptr %t19, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - call void @finch_str_copy(ptr %a23, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - %t25 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t24, ptr %a14 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t28 = getelementptr inbounds %S.gen.Place, ptr %t27, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - store %S.ast.Type %t29, ptr %a30 - call void @finch.copy.S_ast_Type(ptr %a31, ptr %a30) - %t32 = load %S.ast.Type, ptr %a31 - %t33 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t32, ptr %a16 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - br label %endif5345 -else5344: - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t36 = getelementptr inbounds %S.gen.Val, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Type, ptr %t36 - store %S.ast.Type %t37, ptr %a38 - call void @finch.copy.S_ast_Type(ptr %a39, ptr %a38) - %t40 = load %S.ast.Type, ptr %a39 - %t41 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t40, ptr %a16 - store %S.ast.Type %t41, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic5346, label %ok5347 -panic5346: - call void @finch_panic(ptr @.str.3374, i64 2597, ptr @.str.3375) - unreachable -ok5347: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 25 - %t48 = load i64, ptr %t47 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3373, i64 5, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load %S.ast.Type, ptr %a16 - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t59 = load %S.gen.Val, ptr %t58 - %t60 = call { ptr, i64, i64 } @finch.gen.own(ptr %t57, %S.gen.Val %t59) - %t61 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t60, i1 false, i1 true) - store { ptr, i64, i64 } %t55, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t61, ptr %a14 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif5345 -endif5345: - %t66 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t67 = load { ptr, i64, i64 }, ptr %t66 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.3376, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then5348, label %endif5350 -then5348: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = load { ptr, i64, i64 }, ptr %a14 - %t75 = load %S.ast.Type, ptr %a16 - %t76 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t77 = load i1, ptr %t76 - call void @finch.gen.eachMap(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t74, %S.ast.Type %t75, i1 %t77) - %t78 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t78) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -endif5350: - %t79 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3377, i64 5, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp eq i32 %t83, 0 - br label %logic.from5351 -logic.from5351: - br i1 %t84, label %logic.rhs5352, label %logic.end5353 -logic.rhs5352: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3378, i64 3, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp eq i32 %t89, 0 - br label %logic.rend5354 -logic.rend5354: - br label %logic.end5353 -logic.end5353: - %t91 = phi i1 [ false, %logic.from5351 ], [ %t90, %logic.rend5354 ] - br i1 %t91, label %then5355, label %endif5357 -then5355: - %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 %range5358, label %inrange5359 -range5358: - call void @finch_panic_index(ptr @.str.3379, i64 2605, i64 0, i64 %t95) - unreachable -inrange5359: - %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 = load %S.ast.Type, ptr %a16 - %t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100) - store { ptr, i64, i64 } { ptr @.str.3380, i64 55, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3381, i64 36, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif5357 -endif5357: - %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3382, i64 4, i64 0 }) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3383, i64 5, i64 0 }, ptr %a118 - %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) - %t120 = icmp ne i32 %t119, 0 - br i1 %t120, label %then5360, label %endif5362 -then5360: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 0, %t123 - br i1 %t124, label %range5363, label %inrange5364 -range5363: - call void @finch_panic_index(ptr @.str.3384, i64 2609, i64 0, i64 %t123) - unreachable -inrange5364: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i64 0 - %t127 = load %S.ast.Type, ptr %t126 - store %S.ast.Type %t127, ptr %a128 - call void @finch.copy.S_ast_Type(ptr %a129, ptr %a128) - %t130 = load %S.ast.Type, ptr %a129 - %t131 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t130, ptr %a114 - store %S.ast.Type %t131, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - br label %endif5362 -endif5362: - %t133 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t134 = load i1, ptr %t133 - br label %logic.from5365 -logic.from5365: - br i1 %t134, label %logic.rhs5366, label %logic.end5367 -logic.rhs5366: - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a114 - %t137 = call i1 @finch.gen.owning(ptr %t135, %S.ast.Type %t136) - br label %logic.rend5368 -logic.rend5368: - br label %logic.end5367 -logic.end5367: - %t138 = phi i1 [ false, %logic.from5365 ], [ %t137, %logic.rend5368 ] - br label %logic.from5369 -logic.from5369: - br i1 %t138, label %logic.rhs5370, label %logic.end5371 -logic.rhs5370: - %t139 = load ptr, ptr %a1 - %t140 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t141 = load { ptr, i64, i64 }, ptr %t140 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range5372, label %inrange5373 -range5372: - call void @finch_panic_index(ptr @.str.3385, i64 2611, i64 0, i64 %t142) - unreachable -inrange5373: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 0 - %t146 = load %S.ast.Node, ptr %t145 - %t147 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t146) - %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t149 = load { ptr, i64, i64 }, ptr %t148 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 1, %t150 - br i1 %t151, label %range5374, label %inrange5375 -range5374: - call void @finch_panic_index(ptr @.str.3386, i64 2611, i64 1, i64 %t150) - unreachable -inrange5375: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 1 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = call i1 @finch.gen.mutates(ptr %t139, { ptr, i64, i64 } %t147, %S.ast.Node %t154) - store { ptr, i64, i64 } %t147, ptr %a156 - call void @finch_str_drop(ptr %a156) - br label %logic.rend5376 -logic.rend5376: - br label %logic.end5371 -logic.end5371: - %t157 = phi i1 [ false, %logic.from5369 ], [ %t155, %logic.rend5376 ] - store i1 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } { ptr @.str.3387, i64 3, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t162, { ptr, i64, i64 } { ptr @.str.3388, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3389, i64 1, i64 0 }, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3390, i64 9, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t167, { ptr, i64, i64 } { ptr @.str.3391, i64 9, i64 0 }) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t170, { ptr, i64, i64 } { ptr @.str.3392, i64 9, i64 0 }) - store { ptr, i64, i64 } %t171, ptr %a172 - %t173 = load ptr, ptr %a1 - %t174 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t173, { ptr, i64, i64 } { ptr @.str.3393, i64 8, i64 0 }) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load ptr, ptr %a1 - %t177 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t176, { ptr, i64, i64 } %t177) - %t178 = load ptr, ptr %a1 - %t179 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) - %t180 = load ptr, ptr %a1 - %t181 = load ptr, ptr %a1 - %t182 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3395, i64 46, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.3396, i64 14, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = call { ptr, i64, i64 } @finch.gen.op(ptr %t181, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t180, { ptr, i64, i64 } { ptr @.str.3394, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_drop(ptr %a195) - store { ptr, i64, i64 } %t194, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a161 - %t199 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.3397, i64 3, i64 0 }, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.3398, i64 13, i64 0 }, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t206, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3399, i64 2, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t211, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t201, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - store { ptr, i64, i64 } %t218, ptr %a220 - %t221 = load ptr, ptr %a1 - %t222 = load { ptr, i64, i64 }, ptr %a220 - %t223 = load { ptr, i64, i64 }, ptr %a169 - %t224 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.condBr(ptr %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223, { ptr, i64, i64 } %t224) - %t225 = load ptr, ptr %a1 - %t226 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.label(ptr %t225, { ptr, i64, i64 } %t226) - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a14 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } { ptr @.str.3400, i64 3, i64 0 }, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t229, ptr %a230 - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a114 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - store { ptr, i64, i64 } { ptr @.str.3401, i64 23, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3402, i64 6, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t239, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t244, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t244, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.3403, i64 6, i64 0 }, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - store { ptr, i64, i64 } %t250, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a251 - %t256 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t262, ptr %a264 - %t265 = load ptr, ptr %a1 - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Type, ptr %a114 - %t268 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t266, %S.ast.Type %t267) - %t269 = load { ptr, i64, i64 }, ptr %a264 - %t270 = call { ptr, i64, i64 } @finch.gen.load(ptr %t265, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_drop(ptr %a271) - store { ptr, i64, i64 } %t270, ptr %a272 - %t273 = load i1, ptr %a158 - br i1 %t273, label %then5377, label %endif5379 -then5377: - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a272 - %t276 = load %S.ast.Type, ptr %a114 - %t277 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276) - %t278 = load { ptr, i64, i64 }, ptr %a272 - store { ptr, i64, i64 } %t277, ptr %a272 - store { ptr, i64, i64 } %t278, ptr %a279 - call void @finch_str_drop(ptr %a279) - br label %endif5379 -endif5379: - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic5380, label %ok5381 -panic5380: - call void @finch_panic(ptr @.str.3404, i64 2631, ptr @.str.3405) - unreachable -ok5381: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - %t284 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t284, ptr %a285 - call void @finch_str_copy(ptr %a286, ptr %a285) - %t287 = load { ptr, i64, i64 }, ptr %a286 - %t288 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t287, 0 - %t289 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_copy(ptr %a291, ptr %a290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - %t293 = insertvalue %S.gen.Loop %t288, { ptr, i64, i64 } %t292, 1 - %t294 = load ptr, ptr %a1 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic5382, label %ok5383 -panic5382: - call void @finch_panic(ptr @.str.3406, i64 2631, ptr @.str.3407) - unreachable -ok5383: - %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 10 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 - %t298 = load i64, ptr %t297 - %t299 = insertvalue %S.gen.Loop %t293, i64 %t298, 2 - %t300 = load ptr, ptr %a1 - %t301 = icmp eq ptr %t300, null - br i1 %t301, label %panic5384, label %ok5385 -panic5384: - call void @finch_panic(ptr @.str.3408, i64 2631, ptr @.str.3409) - unreachable -ok5385: - %t302 = getelementptr inbounds %S.gen.Gen, ptr %t300, i32 0, i32 11 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i32 0, i32 1 - %t304 = load i64, ptr %t303 - %t305 = insertvalue %S.gen.Loop %t299, i64 %t304, 3 - %t306 = load i64, ptr %t283 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %t282, i64 %t307, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %t282 - %t309 = getelementptr inbounds %S.gen.Loop, ptr %t308, i64 %t306 - store %S.gen.Loop %t305, ptr %t309 - store i64 %t307, ptr %t283 - %t310 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t310) - %t311 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = icmp sgt i64 %t319, 0 - br i1 %t320, label %then5386, label %endif5388 -then5386: - %t321 = load ptr, ptr %a1 - %t322 = load %S.ast.Node, ptr %a2 - %t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t324 = load { ptr, i64, i64 }, ptr %t323 - %t325 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3410, i64 3, i64 0 }) - %t326 = load { ptr, i64, i64 }, ptr %a200 - %t327 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } %t324, %S.ast.Type %t325, { ptr, i64, i64 } %t326, i1 true, i1 false) - store %S.ast.Type %t325, ptr %a328 - call void @finch.drop.S_ast_Type(ptr %a328) - store { ptr, i64, i64 } %t327, ptr %a329 - call void @finch_str_drop(ptr %a329) - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t331, ptr %a332 - call void @finch_str_copy(ptr %a333, ptr %a332) - %t334 = load { ptr, i64, i64 }, ptr %a333 - %t335 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t334, ptr %a316 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif5388 -endif5388: - %t337 = load ptr, ptr %a1 - %t338 = load %S.ast.Node, ptr %a2 - %t339 = load { ptr, i64, i64 }, ptr %a316 - %t340 = load %S.ast.Type, ptr %a114 - %t341 = load { ptr, i64, i64 }, ptr %a272 - %t342 = load i1, ptr %a158 - %t343 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t337, %S.ast.Node %t338, { ptr, i64, i64 } %t339, %S.ast.Type %t340, { ptr, i64, i64 } %t341, i1 true, i1 %t342) - store { ptr, i64, i64 } %t343, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load ptr, ptr %a1 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t347 = load { ptr, i64, i64 }, ptr %t346 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 1, %t348 - br i1 %t349, label %range5389, label %inrange5390 -range5389: - call void @finch_panic_index(ptr @.str.3411, i64 2639, i64 1, i64 %t348) - unreachable -inrange5390: - %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 %panic5391, label %ok5392 -panic5391: - call void @finch_panic(ptr @.str.3412, i64 2641, ptr @.str.3413) - unreachable -ok5392: - %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 12 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %panic5393, label %ok5394 -panic5393: - call void @finch_panic(ptr @.str.3414, i64 2641, ptr @.str.3415) - unreachable -ok5394: - %t360 = sub i64 %t358, 1 - %t361 = load ptr, ptr %t356 - %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 - %t363 = load %S.gen.Loop, ptr %t362 - store i64 %t360, ptr %t357 - store %S.gen.Loop %t363, ptr %a364 - call void @finch.drop.S_gen_Loop(ptr %a364) - %t365 = load ptr, ptr %a1 - %t366 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.br(ptr %t365, { ptr, i64, i64 } %t366) - %t367 = load ptr, ptr %a1 - %t368 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.label(ptr %t367, { ptr, i64, i64 } %t368) - %t369 = load ptr, ptr %a1 - %t370 = load { ptr, i64, i64 }, ptr %a161 - %t371 = call { ptr, i64, i64 } @finch.gen.load(ptr %t369, { ptr, i64, i64 } { ptr @.str.3416, i64 3, i64 0 }, { ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.3418, i64 8, i64 0 }, ptr %a377 - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) - %t379 = load { ptr, i64, i64 }, ptr %a376 - store { ptr, i64, i64 } %t379, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.3419, i64 3, i64 0 }, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t379, ptr %a383 - call void @finch_str_drop(ptr %a383) - %t384 = load { ptr, i64, i64 }, ptr %a380 - %t385 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t384) - store { ptr, i64, i64 } %t384, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.3417, i64 3, i64 0 }, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387) - store { ptr, i64, i64 } %t385, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load ptr, ptr %a1 - %t390 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t389, { ptr, i64, i64 } %t390) - %t391 = load ptr, ptr %a1 - %t392 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.label(ptr %t391, { ptr, i64, i64 } %t392) - %t393 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t393) - call void @finch_str_drop(ptr %a372) - call void @finch_str_drop(ptr %a316) - call void @finch_str_drop(ptr %a272) - call void @finch_str_drop(ptr %a264) - call void @finch_str_drop(ptr %a230) - call void @finch_str_drop(ptr %a220) - call void @finch_str_drop(ptr %a200) - call void @finch_str_drop(ptr %a196) - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a172) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -} - -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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.gen.Val, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a329 = alloca i64, align 16 - %a342 = alloca i64, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca %S.gen.Var, align 16 - %a421 = alloca %S.gen.Var, align 16 - %a423 = alloca %S.gen.Var, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.gen.Val, align 16 - %a512 = alloca %S.gen.Val, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5395, label %ok5396 -panic5395: - call void @finch_panic(ptr @.str.3420, i64 2652, ptr @.str.3421) - unreachable -ok5396: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5397, label %endif5399 -then5397: - %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.3422, i64 33, i64 0 }) - br label %endif5399 -endif5399: - %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.from5400 -logic.from5400: - br i1 %t13, label %logic.rhs5401, label %logic.end5402 -logic.rhs5401: - %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 %range5403, label %inrange5404 -range5403: - call void @finch_panic_index(ptr @.str.3423, i64 2656, i64 0, i64 %t16) - unreachable -inrange5404: - %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.3424, 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.rend5405 -logic.rend5405: - br label %logic.end5402 -logic.end5402: - %t26 = phi i1 [ false, %logic.from5400 ], [ %t25, %logic.rend5405 ] - br label %logic.from5406 -logic.from5406: - br i1 %t26, label %logic.rhs5407, label %logic.end5408 -logic.rhs5407: - %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 %range5409, label %inrange5410 -range5409: - call void @finch_panic_index(ptr @.str.3425, i64 2656, i64 0, i64 %t29) - unreachable -inrange5410: - %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.3426, 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.rend5411 -logic.rend5411: - br label %logic.end5408 -logic.end5408: - %t39 = phi i1 [ false, %logic.from5406 ], [ %t38, %logic.rend5411 ] - br i1 %t39, label %then5412, label %endif5414 -then5412: - %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 %range5415, label %inrange5416 -range5415: - call void @finch_panic_index(ptr @.str.3427, i64 2657, i64 0, i64 %t42) - unreachable -inrange5416: - %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 %panic5417, label %ok5418 -panic5417: - call void @finch_panic(ptr @.str.3428, i64 2658, ptr @.str.3429) - unreachable -ok5418: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 13 - %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9 - %t55 = load i1, ptr %t54 - %t56 = xor i1 %t55, true - br i1 %t56, label %then5419, label %endif5421 -then5419: - store { ptr, i64, i64 } { ptr @.str.3430, i64 1, i64 0 }, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic5422, label %ok5423 -panic5422: - call void @finch_panic(ptr @.str.3431, i64 2660, ptr @.str.3432) - unreachable -ok5423: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 13 - %t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12 - %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3433, 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 %then5424, label %endif5426 -then5424: - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic5427, label %ok5428 -panic5427: - call void @finch_panic(ptr @.str.3434, i64 2661, ptr @.str.3435) - unreachable -ok5428: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 13 - %t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3436, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t78, ptr %a57 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif5426 -endif5426: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a50 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic5429, label %ok5430 -panic5429: - call void @finch_panic(ptr @.str.3438, i64 2663, ptr @.str.3439) - unreachable -ok5430: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 13 - %t86 = getelementptr inbounds %S.gen.FnSig, ptr %t85, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.3437, i64 1, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3440, i64 64, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t96, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t96, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.3441, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.fail(ptr %t81, %S.ast.Node %t82, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a57) - br label %endif5421 -endif5421: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a50 - call void @finch.gen.checkArgs(ptr %t109, %S.ast.Node %t110, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3442, i64 5, i64 0 }) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t114 = load { ptr, i64, i64 }, ptr %t113 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 0, %t115 - br i1 %t116, label %range5431, label %inrange5432 -range5431: - call void @finch_panic_index(ptr @.str.3443, i64 2666, i64 0, i64 %t115) - unreachable -inrange5432: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.ast.Node, ptr %t117, i64 0 - %t119 = load %S.ast.Node, ptr %t118 - %t120 = call %S.gen.Val @finch.gen.expr(ptr %t112, %S.ast.Node %t119) - %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3444, i64 3, i64 0 }) - %t122 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 0, %t124 - br i1 %t125, label %range5433, label %inrange5434 -range5433: - call void @finch_panic_index(ptr @.str.3445, i64 2666, i64 0, i64 %t124) - unreachable -inrange5434: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.ast.Node, ptr %t126, i64 0 - %t128 = load %S.ast.Node, ptr %t127 - %t129 = call %S.gen.Val @finch.gen.coerce(ptr %t111, %S.gen.Val %t120, %S.ast.Type %t121, %S.ast.Node %t128, { ptr, i64, i64 } { ptr @.str.3446, i64 17, i64 0 }) - store %S.gen.Val %t120, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - store %S.ast.Type %t121, ptr %a131 - call void @finch.drop.S_ast_Type(ptr %a131) - store %S.gen.Val %t129, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = load %S.gen.Val, ptr %a132 - %t135 = call { ptr, i64, i64 } @finch.gen.own(ptr %t133, %S.gen.Val %t134) - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t137, i64 0) - %t138 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t138, i64 0) - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic5435, label %ok5436 -panic5435: - call void @finch_panic(ptr @.str.3448, i64 2670, ptr @.str.3449) - unreachable -ok5436: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 13 - %t144 = load %S.gen.FnSig, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t140, %S.gen.FnSig %t144) - store { ptr, i64, i64 } { ptr @.str.3447, i64 4, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t145, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.3450, i64 1, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load ptr, ptr %a1 - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic5437, label %ok5438 -panic5437: - call void @finch_panic(ptr @.str.3452, i64 2670, ptr @.str.3453) - unreachable -ok5438: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 13 - %t161 = load %S.gen.FnSig, ptr %t160 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t157, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.3451, i64 12, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3454, i64 36, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3455, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t156, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t155, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t155, ptr %a189 - call void @finch_str_drop(ptr %a189) - store { ptr, i64, i64 } %t184, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t139, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5439, label %ok5440 -panic5439: - call void @finch_panic(ptr @.str.3456, i64 2671, ptr @.str.3457) - unreachable -ok5440: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Val(ptr %a132) - call void @finch.drop.S_ast_Node(ptr %a50) - ret void -endif5414: - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5441, label %ok5442 -panic5441: - call void @finch_panic(ptr @.str.3458, i64 2674, ptr @.str.3459) - unreachable -ok5442: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 13 - %t199 = getelementptr inbounds %S.gen.FnSig, ptr %t198, i32 0, i32 12 - %t200 = getelementptr inbounds %S.ast.Type, ptr %t199, i32 0, i32 0 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.3460, i64 4, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %then5443, label %endif5445 -then5443: - %t206 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = load i64, ptr %t207 - %t209 = icmp sgt i64 %t208, 0 - br i1 %t209, label %then5446, label %endif5448 -then5446: - %t210 = load ptr, ptr %a1 - %t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t212 = load { ptr, i64, i64 }, ptr %t211 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 0, %t213 - br i1 %t214, label %range5449, label %inrange5450 -range5449: - call void @finch_panic_index(ptr @.str.3461, i64 2676, i64 0, i64 %t213) - unreachable -inrange5450: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 0 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic5451, label %ok5452 -panic5451: - call void @finch_panic(ptr @.str.3463, i64 2676, ptr @.str.3464) - unreachable -ok5452: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 13 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %t220, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } { ptr @.str.3462, i64 1, i64 0 }, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.3465, i64 46, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif5448 -endif5448: - %t233 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t233, i64 0) - %t234 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t234, i64 0) - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic5453, label %ok5454 -panic5453: - call void @finch_panic(ptr @.str.3466, i64 2680, ptr @.str.3467) - unreachable -ok5454: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 13 - %t238 = getelementptr inbounds %S.gen.FnSig, ptr %t237, i32 0, i32 9 - %t239 = load i1, ptr %t238 - br i1 %t239, label %then5455, label %else5456 -then5455: - %t240 = load ptr, ptr %a1 - %t241 = load ptr, ptr %a1 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic5458, label %ok5459 -panic5458: - call void @finch_panic(ptr @.str.3469, i64 2681, ptr @.str.3470) - unreachable -ok5459: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 13 - %t245 = load %S.gen.FnSig, ptr %t244 - %t246 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t241, %S.gen.FnSig %t245) - store { ptr, i64, i64 } { ptr @.str.3468, i64 4, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.3471, i64 53, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif5457 -else5456: - %t258 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } { ptr @.str.3472, i64 8, i64 0 }) - br label %endif5457 -endif5457: - %t259 = load ptr, ptr %a1 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic5460, label %ok5461 -panic5460: - call void @finch_panic(ptr @.str.3473, i64 2685, ptr @.str.3474) - unreachable -ok5461: - %t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9 - store i1 true, ptr %t261 - ret void -endif5445: - %t262 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1 - %t264 = load i64, ptr %t263 - %t265 = icmp eq i64 %t264, 0 - br i1 %t265, label %then5462, label %endif5464 -then5462: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic5465, label %ok5466 -panic5465: - call void @finch_panic(ptr @.str.3476, i64 2689, ptr @.str.3477) - unreachable -ok5466: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 13 - %t271 = getelementptr inbounds %S.gen.FnSig, ptr %t270, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } { ptr @.str.3475, i64 1, i64 0 }, ptr %a274 - store { ptr, i64, i64 } %t272, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } %t276, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.3478, i64 14, i64 0 }, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t276, ptr %a280 - call void @finch_str_drop(ptr %a280) - %t281 = load { ptr, i64, i64 }, ptr %a277 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic5467, label %ok5468 -panic5467: - call void @finch_panic(ptr @.str.3479, i64 2689, ptr @.str.3480) - unreachable -ok5468: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 13 - %t285 = getelementptr inbounds %S.gen.FnSig, ptr %t284, i32 0, i32 12 - %t286 = load %S.ast.Type, ptr %t285 - %t287 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t286) - store { ptr, i64, i64 } %t281, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t281, ptr %a291 - call void @finch_str_drop(ptr %a291) - store { ptr, i64, i64 } %t287, ptr %a292 - call void @finch_str_drop(ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t293) - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - br label %endif5464 -endif5464: - %t295 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t296 = load { ptr, i64, i64 }, ptr %t295 - %t297 = extractvalue { ptr, i64, i64 } %t296, 1 - %t298 = icmp uge i64 0, %t297 - br i1 %t298, label %range5469, label %inrange5470 -range5469: - call void @finch_panic_index(ptr @.str.3481, i64 2692, i64 0, i64 %t297) - unreachable -inrange5470: - %t299 = extractvalue { ptr, i64, i64 } %t296, 0 - %t300 = getelementptr inbounds %S.ast.Node, ptr %t299, i64 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.3482, i64 3, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp ne i32 %t305, 0 - br i1 %t306, label %then5471, label %endif5473 -then5471: - %t307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = extractvalue { ptr, i64, i64 } %t308, 1 - %t310 = icmp uge i64 0, %t309 - br i1 %t310, label %range5474, label %inrange5475 -range5474: - call void @finch_panic_index(ptr @.str.3483, i64 2693, i64 0, i64 %t309) - unreachable -inrange5475: - %t311 = extractvalue { ptr, i64, i64 } %t308, 0 - %t312 = getelementptr inbounds %S.ast.Node, ptr %t311, i64 0 - %t313 = getelementptr inbounds %S.ast.Node, ptr %t312, i32 0, i32 1 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t314, ptr %a315 - call void @finch_str_copy(ptr %a316, ptr %a315) - %t317 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic5476, label %ok5477 -panic5476: - call void @finch_panic(ptr @.str.3484, i64 2694, ptr @.str.3485) - unreachable -ok5477: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 10 - %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i32 0, i32 1 - %t323 = load i64, ptr %t322 - store i64 %t323, ptr %a324 - br label %while.cond5478 -while.cond5478: - %t325 = load i64, ptr %a324 - %t326 = icmp sgt i64 %t325, 0 - br i1 %t326, label %while.body5479, label %while.end5480 -while.body5479: - %t327 = load i64, ptr %a324 - %t328 = sub i64 %t327, 1 - store i64 %t328, ptr %a324 - store i64 -1, ptr %a329 - %t330 = load ptr, ptr %a1 - %t331 = icmp eq ptr %t330, null - br i1 %t331, label %panic5481, label %ok5482 -panic5481: - call void @finch_panic(ptr @.str.3486, i64 2698, ptr @.str.3487) - unreachable -ok5482: - %t332 = getelementptr inbounds %S.gen.Gen, ptr %t330, i32 0, i32 10 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %t332 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range5483, label %inrange5484 -range5483: - call void @finch_panic_index(ptr @.str.3488, i64 2698, i64 %t333, i64 %t335) - unreachable -inrange5484: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Scope, ptr %t337, i64 %t333 - %t339 = getelementptr inbounds %S.gen.Scope, ptr %t338, i32 0, i32 0 - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %t339, i32 0, i32 1 - %t341 = load i64, ptr %t340 - store i64 0, ptr %a342 - br label %for.cond5485 -for.cond5485: - %t343 = load i64, ptr %a342 - %t344 = icmp slt i64 %t343, %t341 - br i1 %t344, label %for.body5486, label %for.end5488 -for.body5486: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic5489, label %ok5490 -panic5489: - call void @finch_panic(ptr @.str.3489, i64 2699, ptr @.str.3490) - unreachable -ok5490: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 10 - %t348 = load i64, ptr %a324 - %t349 = load { ptr, i64, i64 }, ptr %t347 - %t350 = extractvalue { ptr, i64, i64 } %t349, 1 - %t351 = icmp uge i64 %t348, %t350 - br i1 %t351, label %range5491, label %inrange5492 -range5491: - call void @finch_panic_index(ptr @.str.3491, i64 2699, i64 %t348, i64 %t350) - unreachable -inrange5492: - %t352 = extractvalue { ptr, i64, i64 } %t349, 0 - %t353 = getelementptr inbounds %S.gen.Scope, ptr %t352, i64 %t348 - %t354 = getelementptr inbounds %S.gen.Scope, ptr %t353, i32 0, i32 0 - %t355 = load i64, ptr %a342 - %t356 = load { ptr, i64, i64 }, ptr %t354 - %t357 = extractvalue { ptr, i64, i64 } %t356, 1 - %t358 = icmp uge i64 %t355, %t357 - br i1 %t358, label %range5493, label %inrange5494 -range5493: - call void @finch_panic_index(ptr @.str.3492, i64 2699, i64 %t355, i64 %t357) - unreachable -inrange5494: - %t359 = extractvalue { ptr, i64, i64 } %t356, 0 - %t360 = getelementptr inbounds %S.gen.Var, ptr %t359, i64 %t355 - %t361 = getelementptr inbounds %S.gen.Var, ptr %t360, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - %t363 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } %t363, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br label %logic.from5495 -logic.from5495: - br i1 %t367, label %logic.rhs5496, label %logic.end5497 -logic.rhs5496: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic5498, label %ok5499 -panic5498: - call void @finch_panic(ptr @.str.3493, i64 2699, ptr @.str.3494) - unreachable -ok5499: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 44 - %t371 = load i1, ptr %t370 - br label %logic.from5500 -logic.from5500: - br i1 %t371, label %logic.rhs5501, label %logic.end5502 -logic.rhs5501: - %t372 = load ptr, ptr %a1 - %t373 = icmp eq ptr %t372, null - br i1 %t373, label %panic5503, label %ok5504 -panic5503: - call void @finch_panic(ptr @.str.3495, i64 2699, ptr @.str.3496) - unreachable -ok5504: - %t374 = getelementptr inbounds %S.gen.Gen, ptr %t372, i32 0, i32 10 - %t375 = load i64, ptr %a324 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range5505, label %inrange5506 -range5505: - call void @finch_panic_index(ptr @.str.3497, i64 2699, i64 %t375, i64 %t377) - unreachable -inrange5506: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.gen.Scope, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.gen.Scope, ptr %t380, i32 0, i32 0 - %t382 = load i64, ptr %a342 - %t383 = load { ptr, i64, i64 }, ptr %t381 - %t384 = extractvalue { ptr, i64, i64 } %t383, 1 - %t385 = icmp uge i64 %t382, %t384 - br i1 %t385, label %range5507, label %inrange5508 -range5507: - call void @finch_panic_index(ptr @.str.3498, i64 2699, i64 %t382, i64 %t384) - unreachable -inrange5508: - %t386 = extractvalue { ptr, i64, i64 } %t383, 0 - %t387 = getelementptr inbounds %S.gen.Var, ptr %t386, i64 %t382 - %t388 = getelementptr inbounds %S.gen.Var, ptr %t387, i32 0, i32 4 - %t389 = load i64, ptr %t388 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic5509, label %ok5510 -panic5509: - call void @finch_panic(ptr @.str.3499, i64 2699, ptr @.str.3500) - unreachable -ok5510: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 45 - %t393 = load i64, ptr %t392 - %t394 = icmp sge i64 %t389, %t393 - br label %logic.rend5511 -logic.rend5511: - br label %logic.end5502 -logic.end5502: - %t395 = phi i1 [ false, %logic.from5500 ], [ %t394, %logic.rend5511 ] - %t396 = xor i1 %t395, true - br label %logic.rend5512 -logic.rend5512: - br label %logic.end5497 -logic.end5497: - %t397 = phi i1 [ false, %logic.from5495 ], [ %t396, %logic.rend5512 ] - br i1 %t397, label %then5513, label %endif5515 -then5513: - %t398 = load i64, ptr %a342 - store i64 %t398, ptr %a329 - br label %endif5515 -endif5515: - br label %for.step5487 -for.step5487: - %t399 = load i64, ptr %a342 - %t400 = add i64 %t399, 1 - store i64 %t400, ptr %a342 - br label %for.cond5485 -for.end5488: - %t401 = load i64, ptr %a329 - %t402 = icmp slt i64 %t401, 0 - br i1 %t402, label %then5516, label %endif5518 -then5516: - br label %while.cond5478 -endif5518: - %t403 = load ptr, ptr %a1 - %t404 = icmp eq ptr %t403, null - br i1 %t404, label %panic5519, label %ok5520 -panic5519: - call void @finch_panic(ptr @.str.3501, i64 2706, ptr @.str.3502) - unreachable -ok5520: - %t405 = getelementptr inbounds %S.gen.Gen, ptr %t403, i32 0, i32 10 - %t406 = load i64, ptr %a324 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range5521, label %inrange5522 -range5521: - call void @finch_panic_index(ptr @.str.3503, i64 2706, i64 %t406, i64 %t408) - unreachable -inrange5522: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.gen.Scope, ptr %t410, i64 %t406 - %t412 = getelementptr inbounds %S.gen.Scope, ptr %t411, i32 0, i32 0 - %t413 = load i64, ptr %a329 - %t414 = load { ptr, i64, i64 }, ptr %t412 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5523, label %inrange5524 -range5523: - call void @finch_panic_index(ptr @.str.3504, i64 2706, i64 %t413, i64 %t415) - unreachable -inrange5524: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.gen.Var, ptr %t417, i64 %t413 - %t419 = load %S.gen.Var, ptr %t418 - store %S.gen.Var %t419, ptr %a420 - call void @finch.copy.S_gen_Var(ptr %a421, ptr %a420) - %t422 = load %S.gen.Var, ptr %a421 - store %S.gen.Var %t422, ptr %a423 - %t424 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 5 - %t425 = load i1, ptr %t424 - br label %logic.from5525 -logic.from5525: - br i1 %t425, label %logic.rhs5526, label %logic.end5527 -logic.rhs5526: - %t426 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t427 = load %S.ast.Type, ptr %t426 - %t428 = load ptr, ptr %a1 - %t429 = icmp eq ptr %t428, null - br i1 %t429, label %panic5528, label %ok5529 -panic5528: - call void @finch_panic(ptr @.str.3505, i64 2707, ptr @.str.3506) - unreachable -ok5529: - %t430 = getelementptr inbounds %S.gen.Gen, ptr %t428, i32 0, i32 13 - %t431 = getelementptr inbounds %S.gen.FnSig, ptr %t430, i32 0, i32 12 - %t432 = load %S.ast.Type, ptr %t431 - %t433 = call i1 @finch.ast.same(%S.ast.Type %t427, %S.ast.Type %t432) - br label %logic.rend5530 -logic.rend5530: - br label %logic.end5527 -logic.end5527: - %t434 = phi i1 [ false, %logic.from5525 ], [ %t433, %logic.rend5530 ] - br i1 %t434, label %then5531, label %endif5533 -then5531: - %t435 = load ptr, ptr %a1 - %t436 = load ptr, ptr %a1 - %t437 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t438 = load %S.ast.Type, ptr %t437 - %t439 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t438) - %t440 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 2 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = call { ptr, i64, i64 } @finch.gen.load(ptr %t435, { ptr, i64, i64 } %t439, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch_str_drop(ptr %a443) - store { ptr, i64, i64 } %t442, ptr %a444 - %t445 = load ptr, ptr %a1 - %t446 = icmp eq ptr %t445, null - br i1 %t446, label %panic5534, label %ok5535 -panic5534: - call void @finch_panic(ptr @.str.3507, i64 2709, ptr @.str.3508) - unreachable -ok5535: - %t447 = getelementptr inbounds %S.gen.Gen, ptr %t445, i32 0, i32 10 - %t448 = load i64, ptr %a324 - %t449 = load { ptr, i64, i64 }, ptr %t447 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 %t448, %t450 - br i1 %t451, label %range5536, label %inrange5537 -range5536: - call void @finch_panic_index(ptr @.str.3509, i64 2709, i64 %t448, i64 %t450) - unreachable -inrange5537: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.gen.Scope, ptr %t452, i64 %t448 - %t454 = getelementptr inbounds %S.gen.Scope, ptr %t453, i32 0, i32 0 - %t455 = load i64, ptr %a329 - %t456 = load { ptr, i64, i64 }, ptr %t454 - %t457 = extractvalue { ptr, i64, i64 } %t456, 1 - %t458 = icmp uge i64 %t455, %t457 - br i1 %t458, label %range5538, label %inrange5539 -range5538: - call void @finch_panic_index(ptr @.str.3510, i64 2709, i64 %t455, i64 %t457) - unreachable -inrange5539: - %t459 = extractvalue { ptr, i64, i64 } %t456, 0 - %t460 = getelementptr inbounds %S.gen.Var, ptr %t459, i64 %t455 - %t461 = getelementptr inbounds %S.gen.Var, ptr %t460, i32 0, i32 6 - store i1 true, ptr %t461 - %t462 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t462, i64 0) - %t463 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t463, i64 0) - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic5540, label %ok5541 -panic5540: - call void @finch_panic(ptr @.str.3511, i64 2712, ptr @.str.3512) - unreachable -ok5541: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 10 - %t467 = load i64, ptr %a324 - %t468 = load { ptr, i64, i64 }, ptr %t466 - %t469 = extractvalue { ptr, i64, i64 } %t468, 1 - %t470 = icmp uge i64 %t467, %t469 - br i1 %t470, label %range5542, label %inrange5543 -range5542: - call void @finch_panic_index(ptr @.str.3513, i64 2712, i64 %t467, i64 %t469) - unreachable -inrange5543: - %t471 = extractvalue { ptr, i64, i64 } %t468, 0 - %t472 = getelementptr inbounds %S.gen.Scope, ptr %t471, i64 %t467 - %t473 = getelementptr inbounds %S.gen.Scope, ptr %t472, i32 0, i32 0 - %t474 = load i64, ptr %a329 - %t475 = load { ptr, i64, i64 }, ptr %t473 - %t476 = extractvalue { ptr, i64, i64 } %t475, 1 - %t477 = icmp uge i64 %t474, %t476 - br i1 %t477, label %range5544, label %inrange5545 -range5544: - call void @finch_panic_index(ptr @.str.3514, i64 2712, i64 %t474, i64 %t476) - unreachable -inrange5545: - %t478 = extractvalue { ptr, i64, i64 } %t475, 0 - %t479 = getelementptr inbounds %S.gen.Var, ptr %t478, i64 %t474 - %t480 = getelementptr inbounds %S.gen.Var, ptr %t479, i32 0, i32 6 - store i1 false, ptr %t480 - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a444 - call void @finch.gen.finishReturn(ptr %t481, { ptr, i64, i64 } %t482) - call void @finch_str_drop(ptr %a444) - call void @finch.drop.S_gen_Var(ptr %a423) - call void @finch_str_drop(ptr %a318) - ret void -endif5533: - call void @finch.drop.S_gen_Var(ptr %a423) - br label %while.end5480 -while.end5480: - call void @finch_str_drop(ptr %a318) - br label %endif5473 -endif5473: - %t483 = load ptr, ptr %a1 - %t484 = load ptr, ptr %a1 - %t485 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range5546, label %inrange5547 -range5546: - call void @finch_panic_index(ptr @.str.3515, i64 2719, i64 0, i64 %t487) - unreachable -inrange5547: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = load ptr, ptr %a1 - %t493 = icmp eq ptr %t492, null - br i1 %t493, label %panic5548, label %ok5549 -panic5548: - call void @finch_panic(ptr @.str.3516, i64 2719, ptr @.str.3517) - unreachable -ok5549: - %t494 = getelementptr inbounds %S.gen.Gen, ptr %t492, i32 0, i32 13 - %t495 = getelementptr inbounds %S.gen.FnSig, ptr %t494, i32 0, i32 12 - %t496 = load %S.ast.Type, ptr %t495 - %t497 = call %S.gen.Val @finch.gen.exprWant(ptr %t484, %S.ast.Node %t491, %S.ast.Type %t496) - %t498 = load ptr, ptr %a1 - %t499 = icmp eq ptr %t498, null - br i1 %t499, label %panic5550, label %ok5551 -panic5550: - call void @finch_panic(ptr @.str.3518, i64 2719, ptr @.str.3519) - unreachable -ok5551: - %t500 = getelementptr inbounds %S.gen.Gen, ptr %t498, i32 0, i32 13 - %t501 = getelementptr inbounds %S.gen.FnSig, ptr %t500, i32 0, i32 12 - %t502 = load %S.ast.Type, ptr %t501 - %t503 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t504 = load { ptr, i64, i64 }, ptr %t503 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 0, %t505 - br i1 %t506, label %range5552, label %inrange5553 -range5552: - call void @finch_panic_index(ptr @.str.3520, i64 2719, i64 0, i64 %t505) - unreachable -inrange5553: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 0 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = call %S.gen.Val @finch.gen.coerce(ptr %t483, %S.gen.Val %t497, %S.ast.Type %t502, %S.ast.Node %t509, { ptr, i64, i64 } { ptr @.str.3521, i64 18, i64 0 }) - store %S.gen.Val %t497, ptr %a511 - call void @finch.drop.S_gen_Val(ptr %a511) - store %S.gen.Val %t510, ptr %a512 - %t513 = load ptr, ptr %a1 - %t514 = load %S.gen.Val, ptr %a512 - %t515 = call { ptr, i64, i64 } @finch.gen.own(ptr %t513, %S.gen.Val %t514) - store { ptr, i64, i64 } %t515, ptr %a516 - %t517 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t517, i64 0) - %t518 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t518, i64 0) - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a516 - call void @finch.gen.finishReturn(ptr %t519, { ptr, i64, i64 } %t520) - call void @finch_str_drop(ptr %a516) - call void @finch.drop.S_gen_Val(ptr %a512) - ret void -} - -define internal void @finch.gen.finishReturn(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5554, label %ok5555 -panic5554: - call void @finch_panic(ptr @.str.3522, i64 2727, ptr @.str.3523) - unreachable -ok5555: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %t5, i32 0, i32 9 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then5556, label %else5557 -then5556: - %t8 = load ptr, ptr %a1 - %t9 = load ptr, ptr %a1 - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic5559, label %ok5560 -panic5559: - call void @finch_panic(ptr @.str.3525, i64 2728, ptr @.str.3526) - unreachable -ok5560: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = load %S.gen.FnSig, ptr %t12 - %t14 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t9, %S.gen.FnSig %t13) - store { ptr, i64, i64 } { ptr @.str.3524, i64 12, i64 0 }, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.3527, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t8, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t25, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic5561, label %ok5562 -panic5561: - call void @finch_panic(ptr @.str.3529, i64 2729, ptr @.str.3530) - unreachable -ok5562: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 13 - %t33 = load %S.gen.FnSig, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t29, %S.gen.FnSig %t33) - store { ptr, i64, i64 } { ptr @.str.3528, i64 12, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3531, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3532, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic5563, label %ok5564 -panic5563: - call void @finch_panic(ptr @.str.3533, i64 2729, ptr @.str.3534) - unreachable -ok5564: - %t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 13 - %t60 = getelementptr inbounds %S.gen.FnSig, ptr %t59, i32 0, i32 12 - %t61 = load %S.ast.Type, ptr %t60 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t61) - store { ptr, i64, i64 } %t55, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t55, ptr %a66 - call void @finch_str_drop(ptr %a66) - store { ptr, i64, i64 } %t62, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.3535, i64 1, i64 0 }, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t73, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3536, i64 3, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = call { ptr, i64, i64 } @finch.gen.op(ptr %t28, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t84, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load ptr, ptr %a1 - %t90 = load ptr, ptr %a1 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic5565, label %ok5566 -panic5565: - call void @finch_panic(ptr @.str.3538, i64 2730, ptr @.str.3539) - unreachable -ok5566: - %t92 = getelementptr inbounds %S.gen.Gen, ptr %t90, i32 0, i32 13 - %t93 = load %S.gen.FnSig, ptr %t92 - %t94 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t89, %S.gen.FnSig %t93) - store { ptr, i64, i64 } { ptr @.str.3537, i64 4, i64 0 }, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3540, i64 1, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t104, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a27) - br label %endif5558 -else5557: - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic5567, label %ok5568 -panic5567: - call void @finch_panic(ptr @.str.3542, i64 2732, ptr @.str.3543) - unreachable -ok5568: - %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 13 - %t117 = getelementptr inbounds %S.gen.FnSig, ptr %t116, i32 0, i32 12 - %t118 = load %S.ast.Type, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t118) - store { ptr, i64, i64 } { ptr @.str.3541, i64 4, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.3544, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t129, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.emit(ptr %t112, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - br label %endif5558 -endif5558: - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic5569, label %ok5570 -panic5569: - call void @finch_panic(ptr @.str.3545, i64 2734, ptr @.str.3546) - unreachable -ok5570: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 9 - store i1 true, ptr %t139 - 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 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5571, label %inrange5572 -range5571: - call void @finch_panic_index(ptr @.str.3548, i64 2746, i64 0, i64 %t6) - unreachable -inrange5572: - %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.3547, i64 7, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3549, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load ptr, ptr %a1 - %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %t23 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 1, %t25 - br i1 %t26, label %range5573, label %inrange5574 -range5573: - call void @finch_panic_index(ptr @.str.3550, i64 2746, i64 1, i64 %t25) - unreachable -inrange5574: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.ast.Type, ptr %t27, i64 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t29) - store { ptr, i64, i64 } %t21, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t21, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.3551, i64 2, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - ret { ptr, i64, i64 } %t41 -} - -define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) { -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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.3552, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.3553, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal { ptr, i64, i64 } @finch.gen.entryAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -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 - %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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3555, i64 23, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3556, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t19, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3557, i64 14, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t30) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3554, i64 3, i64 0 }, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t33, ptr %a35 - %t36 = load ptr, ptr %a1 - %t37 = load ptr, ptr %a1 - %t38 = load %S.ast.Type, ptr %a3 - %t39 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t37, %S.ast.Type %t38) - store { ptr, i64, i64 } { ptr @.str.3558, i64 23, i64 0 }, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.3559, i64 6, i64 0 }, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t44, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t49, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.3560, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - call void @finch_str_drop(ptr %a35) - ret { ptr, i64, i64 } %t67 -} - -define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3561, i64 23, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.3562, i64 6, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t18, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3563, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - ret { ptr, i64, i64 } %t39 -} - -define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %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 - %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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3564, 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 %range5575, label %inrange5576 -range5575: - call void @finch_panic_index(ptr @.str.3565, i64 2766, i64 0, i64 %t8) - unreachable -inrange5576: - %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.3566, 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 %then5577, label %endif5579 -then5577: - %t18 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3567, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif5579 -endif5579: - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3568, i64 4, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3569, i64 6, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.3570, i64 6, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = load %S.ast.Type, ptr %a4 - %t43 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t41, %S.ast.Type %t42) - store { ptr, i64, i64 } %t40, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t40, ptr %a47 - call void @finch_str_drop(ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3571, i64 6, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load ptr, ptr %a1 - %t56 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t57 = load { ptr, i64, i64 }, ptr %t56 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 0, %t58 - br i1 %t59, label %range5580, label %inrange5581 -range5580: - call void @finch_panic_index(ptr @.str.3572, i64 2769, i64 0, i64 %t58) - unreachable -inrange5581: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i64 0 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t55, %S.ast.Type %t62) - store { ptr, i64, i64 } %t54, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t54, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.3573, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t80 -} - -define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.3574, i64 25, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.3575, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t20) - store { ptr, i64, i64 } %t20, ptr %a22 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { -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 - %a31 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3576, 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.from5582 -logic.from5582: - br i1 %t9, label %logic.rhs5583, label %logic.end5584 -logic.rhs5583: - %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.rend5585 -logic.rend5585: - br label %logic.end5584 -logic.end5584: - %t13 = phi i1 [ false, %logic.from5582 ], [ %t12, %logic.rend5585 ] - br i1 %t13, label %then5586, label %endif5588 -then5586: - 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 - store %S.gen.Val %t26, ptr %a31 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.arr_str(ptr %a15) - call void @finch.drop.arr_S_ast_Node(ptr %a14) - ret { ptr, i64, i64 } %t30 -endif5588: - %t32 = load %S.ast.Type, ptr %a2 - %t33 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t32) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.mapSlot(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.gen.Val %p3, i1 %p4, %S.ast.Node %p5) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3577, 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.3578, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3579, 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.3580, i64 25, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.3581, i64 6, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3582, i64 1, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t43, ptr %a45 - %t46 = load ptr, ptr %a1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = load %S.ast.Type, ptr %a3 - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t46, { ptr, i64, i64 } %t47, %S.ast.Type %t48, { ptr, i64, i64 } %t49) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t52, { ptr, i64, i64 } { ptr @.str.3583, i64 7, i64 0 }) - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t55, { ptr, i64, i64 } { ptr @.str.3584, i64 8, i64 0 }) - store { ptr, i64, i64 } %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a13 - %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } { ptr @.str.3586, i64 3, i64 0 }, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } { ptr @.str.3585, i64 12, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.3587, i64 3, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t72) - store { ptr, i64, i64 } %t72, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a54 - %t76 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.condBr(ptr %t58, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load ptr, ptr %a1 - %t79 = load { ptr, i64, i64 }, ptr %a54 - call void @finch.gen.label(ptr %t78, { ptr, i64, i64 } %t79) - %t80 = load ptr, ptr %a1 - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a51 - %t83 = load %S.ast.Type, ptr %a3 - %t84 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t81, { ptr, i64, i64 } %t82, %S.ast.Type %t83, i64 1) - %t85 = load { ptr, i64, i64 }, ptr %a10 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range5589, label %inrange5590 -range5589: - call void @finch_panic_index(ptr @.str.3588, i64 2797, i64 0, i64 %t88) - unreachable -inrange5590: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i64 0 - %t92 = load %S.ast.Type, ptr %t91 - call void @finch.gen.copyAt(ptr %t80, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t85, %S.ast.Type %t92) - store { ptr, i64, i64 } %t84, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load i1, ptr %a5 - br i1 %t94, label %then5591, label %endif5593 -then5591: - %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 %range5594, label %inrange5595 -range5594: - call void @finch_panic_index(ptr @.str.3589, i64 2799, i64 1, i64 %t99) - unreachable -inrange5595: - %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 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t103) - %t105 = load ptr, ptr %a1 - %t106 = load ptr, ptr %a1 - %t107 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 1, %t109 - br i1 %t110, label %range5596, label %inrange5597 -range5596: - call void @finch_panic_index(ptr @.str.3590, i64 2799, i64 1, i64 %t109) - unreachable -inrange5597: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 - %t113 = load %S.ast.Type, ptr %t112 - %t114 = load %S.ast.Node, ptr %a6 - %t115 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t106, %S.ast.Type %t113, %S.ast.Node %t114) - %t116 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t115, 0 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 1, %t119 - br i1 %t120, label %range5598, label %inrange5599 -range5598: - call void @finch_panic_index(ptr @.str.3591, i64 2799, i64 1, i64 %t119) - unreachable -inrange5599: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 1 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t116, %S.ast.Type %t126, 1 - %t128 = insertvalue %S.gen.Val %t127, i1 true, 2 - %t129 = call { ptr, i64, i64 } @finch.gen.own(ptr %t105, %S.gen.Val %t128) - store %S.gen.Val %t128, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a51 - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t131, { ptr, i64, i64 } %t132, %S.ast.Type %t133, i64 2) - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t134) - store { ptr, i64, i64 } %t104, ptr %a135 - call void @finch_str_drop(ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif5593 -endif5593: - %t138 = load ptr, ptr %a1 - %t139 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.br(ptr %t138, { ptr, i64, i64 } %t139) - %t140 = load ptr, ptr %a1 - %t141 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.label(ptr %t140, { ptr, i64, i64 } %t141) - %t142 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t142 -} - -define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) { -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 - %a49 = alloca %S.gen.Val, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a242 = alloca %S.gen.Val, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a268 = alloca %S.gen.Val, align 16 - %a269 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - 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 %range5600, label %inrange5601 -range5600: - call void @finch_panic_index(ptr @.str.3592, i64 2808, i64 0, i64 %t8) - unreachable -inrange5601: - %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 %range5602, label %inrange5603 -range5602: - call void @finch_panic_index(ptr @.str.3593, i64 2809, i64 1, i64 %t19) - unreachable -inrange5603: - %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 %range5604, label %inrange5605 -range5604: - call void @finch_panic_index(ptr @.str.3594, i64 2810, i64 1, i64 %t32) - unreachable -inrange5605: - %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 %range5606, label %inrange5607 -range5606: - call void @finch_panic_index(ptr @.str.3595, i64 2810, i64 1, i64 %t42) - unreachable -inrange5607: - %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.3596, i64 7, i64 0 }) - store %S.gen.Val %t38, ptr %a48 - call void @finch.drop.S_gen_Val(ptr %a48) - store %S.gen.Val %t47, ptr %a49 - %t50 = load i1, ptr %a5 - br i1 %t50, label %then5608, label %endif5610 -then5608: - %t51 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t52 = load i1, ptr %t51 - %t53 = xor i1 %t52, true - br i1 %t53, label %then5611, label %endif5613 -then5611: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } { ptr @.str.3597, i64 44, i64 0 }) - br label %endif5613 -endif5613: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t58 = getelementptr inbounds %S.gen.Place, ptr %t57, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = load %S.gen.Val, ptr %a49 - %t62 = load %S.ast.Node, ptr %a2 - %t63 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t56, { ptr, i64, i64 } %t59, %S.ast.Type %t60, %S.gen.Val %t61, i1 true, %S.ast.Node %t62) - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t65, %S.gen.Val %t66) - %t67 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t68 = load ptr, ptr %a1 - %t69 = load { ptr, i64, i64 }, ptr %a64 - %t70 = load %S.ast.Type, ptr %a4 - %t71 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t68, { ptr, i64, i64 } %t69, %S.ast.Type %t70, i64 2) - %t72 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t71, 0 - %t73 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t73, ptr %a74 - call void @finch.copy.S_ast_Type(ptr %a75, ptr %a74) - %t76 = load %S.ast.Type, ptr %a75 - %t77 = insertvalue %S.gen.Place %t72, %S.ast.Type %t76, 1 - %t78 = insertvalue %S.gen.Ref %t67, %S.gen.Place %t77, 1 - call void @finch_str_drop(ptr %a64) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t78 -endif5610: - store { ptr, i64, i64 } { ptr @.str.3598, i64 0, i64 0 }, ptr %a79 - %t80 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t81 = load i1, ptr %t80 - br i1 %t81, label %then5614, label %else5615 -then5614: - %t82 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t83 = getelementptr inbounds %S.gen.Place, ptr %t82, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch_str_copy(ptr %a86, ptr %a85) - %t87 = load { ptr, i64, i64 }, ptr %a86 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t87, ptr %a79 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif5616 -else5615: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t92 = load %S.gen.Val, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t90, %S.gen.Val %t92) - %t94 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t93, ptr %a79 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %endif5616 -endif5616: - %t96 = load ptr, ptr %a1 - %t97 = load %S.gen.Val, ptr %a49 - %t98 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t96, %S.gen.Val %t97) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a79 - %t102 = load { ptr, i64, i64 }, ptr %a99 - %t103 = load %S.ast.Type, ptr %a4 - %t104 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t100, { ptr, i64, i64 } %t101, { ptr, i64, i64 } %t102, %S.ast.Type %t103) - store { ptr, i64, i64 } %t104, ptr %a105 - %t106 = load ptr, ptr %a1 - %t107 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t106, { ptr, i64, i64 } { ptr @.str.3599, i64 11, i64 0 }) - store { ptr, i64, i64 } %t107, ptr %a108 - %t109 = load ptr, ptr %a1 - %t110 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t109, { ptr, i64, i64 } { ptr @.str.3600, i64 9, i64 0 }) - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.3601, i64 13, i64 0 }, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.3602, i64 3, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t123, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a108 - %t127 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.condBr(ptr %t112, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a108 - call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) - %t131 = load ptr, ptr %a1 - %t132 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t131, { ptr, i64, i64 } { ptr @.str.3603, i64 17, i64 0 }) - store { ptr, i64, i64 } %t132, ptr %a133 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.store(ptr %t134, { ptr, i64, i64 } { ptr @.str.3604, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3605, i64 15, i64 0 }, { ptr, i64, i64 } %t135) - %t136 = load ptr, ptr %a1 - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = getelementptr inbounds %S.gen.Val, ptr %a49, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - %t140 = load %S.ast.Type, ptr %a16 - call void @finch.gen.emitFormat(ptr %t136, { ptr, i64, i64 } %t137, { ptr, i64, i64 } %t139, %S.ast.Type %t140, i1 true) - %t141 = load ptr, ptr %a1 - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic5617, label %ok5618 -panic5617: - call void @finch_panic(ptr @.str.3607, i64 2834, ptr @.str.3608) - unreachable -ok5618: - %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 1 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t147 = load i64, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %t145 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 %t147, %t149 - br i1 %t150, label %range5619, label %inrange5620 -range5619: - call void @finch_panic_index(ptr @.str.3609, i64 2834, i64 %t147, i64 %t149) - unreachable -inrange5620: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 %t147 - %t153 = load { ptr, i64, i64 }, ptr %t152 - %t154 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t142, { ptr, i64, i64 } %t153) - store { ptr, i64, i64 } { ptr @.str.3606, i64 33, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t159, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3610, i64 6, i64 0 }, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t159, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t166 = load i64, ptr %t165 - call void @finch_str_from_int(ptr %a167, i64 %t166) - %t168 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t164, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t164, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t168, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t174, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.3611, i64 6, i64 0 }, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t174, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t179, ptr %a182 - store { ptr, i64, i64 } %t180, ptr %a183 - call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) - store { ptr, i64, i64 } %t179, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load { ptr, i64, i64 }, ptr %a181 - store { ptr, i64, i64 } %t185, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.3612, i64 1, i64 0 }, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t141, { ptr, i64, i64 } %t190) - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t192, { ptr, i64, i64 } { ptr @.str.3613, i64 11, i64 0 }) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5621, label %ok5622 -panic5621: - call void @finch_panic(ptr @.str.3614, i64 2836, ptr @.str.3615) - unreachable -ok5622: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load ptr, ptr %a1 - %t199 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t198, %S.gen.Val %t199) - %t200 = load ptr, ptr %a1 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a79 - %t203 = load %S.ast.Type, ptr %a4 - %t204 = load { ptr, i64, i64 }, ptr %a105 - %t205 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t201, { ptr, i64, i64 } %t202, %S.ast.Type %t203, { ptr, i64, i64 } %t204) - %t206 = load %S.ast.Type, ptr %a4 - %t207 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t200, { ptr, i64, i64 } %t205, %S.ast.Type %t206, i64 2) - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_drop(ptr %a208) - store { ptr, i64, i64 } %t207, ptr %a209 - %t210 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t211 = load i1, ptr %t210 - br i1 %t211, label %then5623, label %endif5625 -then5623: - %t212 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t213 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t213, ptr %a214 - call void @finch_str_copy(ptr %a215, ptr %a214) - %t216 = load { ptr, i64, i64 }, ptr %a215 - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t216, 0 - %t218 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t212, %S.gen.Place %t222, 1 - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t223 -endif5625: - %t224 = load ptr, ptr %a1 - %t225 = load ptr, ptr %a1 - %t226 = load %S.ast.Type, ptr %a27 - %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) - %t228 = load { ptr, i64, i64 }, ptr %a209 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t224, { ptr, i64, i64 } %t227, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t232, ptr %a233 - call void @finch_str_copy(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t235, 0 - %t237 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - %t241 = insertvalue %S.gen.Val %t236, %S.ast.Type %t240, 1 - store %S.gen.Val %t241, ptr %a242 - %t243 = load ptr, ptr %a1 - %t244 = load %S.ast.Type, ptr %a27 - %t245 = call i1 @finch.gen.owning(ptr %t243, %S.ast.Type %t244) - br label %logic.from5626 -logic.from5626: - br i1 %t245, label %logic.rhs5627, label %logic.end5628 -logic.rhs5627: - %t246 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t247 = getelementptr inbounds %S.gen.Val, ptr %t246, i32 0, i32 2 - %t248 = load i1, ptr %t247 - br label %logic.rend5629 -logic.rend5629: - br label %logic.end5628 -logic.end5628: - %t249 = phi i1 [ false, %logic.from5626 ], [ %t248, %logic.rend5629 ] - br i1 %t249, label %then5630, label %endif5632 -then5630: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a231 - %t252 = load %S.ast.Type, ptr %a27 - %t253 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252) - %t254 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t253, 0 - %t255 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t254, %S.ast.Type %t258, 1 - %t260 = insertvalue %S.gen.Val %t259, i1 true, 2 - %t261 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t260, ptr %a242 - store %S.gen.Val %t261, ptr %a262 - call void @finch.drop.S_gen_Val(ptr %a262) - br label %endif5632 -endif5632: - %t263 = load ptr, ptr %a1 - %t264 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t265 = load %S.gen.Val, ptr %t264 - call void @finch.gen.release(ptr %t263, %S.gen.Val %t265) - %t266 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t267 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t267, ptr %a268 - call void @finch.copy.S_gen_Val(ptr %a269, ptr %a268) - %t270 = load %S.gen.Val, ptr %a269 - %t271 = insertvalue %S.gen.Ref %t266, %S.gen.Val %t270, 2 - call void @finch.drop.S_gen_Val(ptr %a242) - call void @finch_str_drop(ptr %a231) - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t271 -} - -define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a71 = alloca %S.ast.Node, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.gen.Val, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a159 = alloca %S.ast.Type, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca i64, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca i64, align 16 - %a208 = alloca %S.gen.Val, align 16 - %a209 = alloca %S.gen.Val, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a236 = alloca %S.gen.Val, align 16 - %a257 = alloca %S.gen.Val, align 16 - %a261 = alloca %S.gen.Val, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a264 = alloca %S.gen.Val, align 16 - %a290 = alloca %S.gen.Val, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca %S.ast.Type, align 16 - %a369 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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.3616, 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 %then5633, label %endif5635 -then5633: - %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 %then5636, label %endif5638 -then5636: - %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.3617, i64 52, i64 0 }) - br label %endif5638 -endif5638: - 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.cond5639 -for.cond5639: - %t31 = load i64, ptr %a30 - %t32 = icmp slt i64 %t31, %t29 - br i1 %t32, label %for.body5640, label %for.end5642 -for.body5640: - %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 %range5643, label %inrange5644 -range5643: - call void @finch_panic_index(ptr @.str.3618, i64 2866, i64 %t36, i64 %t38) - unreachable -inrange5644: - %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.3619, 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.from5645 -logic.from5645: - br i1 %t52, label %logic.rhs5646, label %logic.end5647 -logic.rhs5646: - %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.3620, 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.rend5648 -logic.rend5648: - br label %logic.end5647 -logic.end5647: - %t59 = phi i1 [ false, %logic.from5645 ], [ %t58, %logic.rend5648 ] - br i1 %t59, label %then5649, label %endif5651 -then5649: - %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 %range5652, label %inrange5653 -range5652: - call void @finch_panic_index(ptr @.str.3621, i64 2868, i64 0, i64 %t62) - unreachable -inrange5653: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 - %t66 = load %S.ast.Node, ptr %t65 - store %S.ast.Node %t66, ptr %a67 - call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) - %t69 = load %S.ast.Node, ptr %a68 - %t70 = load %S.ast.Node, ptr %a46 - store %S.ast.Node %t69, ptr %a46 - store %S.ast.Node %t70, ptr %a71 - call void @finch.drop.S_ast_Node(ptr %a71) - br label %endif5651 -endif5651: - %t72 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.3622, i64 5, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then5654, label %else5655 -then5654: - store i1 true, ptr %a25 - br label %endif5656 -else5655: - %t78 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3623, i64 3, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp eq i32 %t82, 0 - br i1 %t83, label %then5657, label %endif5659 -then5657: - store i1 false, ptr %a24 - br label %endif5659 -endif5659: - br label %endif5656 -endif5656: - call void @finch.drop.S_ast_Node(ptr %a46) - br label %for.step5641 -for.step5641: - %t84 = load i64, ptr %a30 - %t85 = add i64 %t84, 1 - store i64 %t85, ptr %a30 - br label %for.cond5639 -for.end5642: - %t86 = load ptr, ptr %a1 - %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range5660, label %inrange5661 -range5660: - call void @finch_panic_index(ptr @.str.3624, i64 2876, i64 0, i64 %t89) - unreachable -inrange5661: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i64 0 - %t93 = load %S.ast.Node, ptr %t92 - %t94 = call %S.gen.Val @finch.gen.expr(ptr %t86, %S.ast.Node %t93) - %t95 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t94, ptr %a10 - store %S.gen.Val %t95, ptr %a96 - call void @finch.drop.S_gen_Val(ptr %a96) - %t97 = load ptr, ptr %a1 - %t98 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t99 = load { ptr, i64, i64 }, ptr %t98 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 1, %t100 - br i1 %t101, label %range5662, label %inrange5663 -range5662: - call void @finch_panic_index(ptr @.str.3625, i64 2877, i64 1, i64 %t100) - unreachable -inrange5663: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Node, ptr %t102, i64 1 - %t104 = load %S.ast.Node, ptr %t103 - %t105 = call %S.gen.Val @finch.gen.expr(ptr %t97, %S.ast.Node %t104) - %t106 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t105, ptr %a11 - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - %t108 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3626, i64 4, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.from5664 -logic.from5664: - br i1 %t114, label %logic.end5666, label %logic.rhs5665 -logic.rhs5665: - %t115 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0 - %t117 = load { ptr, i64, i64 }, ptr %t116 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.3627, i64 4, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.rend5667 -logic.rend5667: - br label %logic.end5666 -logic.end5666: - %t122 = phi i1 [ true, %logic.from5664 ], [ %t121, %logic.rend5667 ] - br i1 %t122, label %then5668, label %endif5670 -then5668: - %t123 = load ptr, ptr %a1 - %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t125 = load { ptr, i64, i64 }, ptr %t124 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 0, %t126 - br i1 %t127, label %range5671, label %inrange5672 -range5671: - call void @finch_panic_index(ptr @.str.3628, i64 2879, i64 0, i64 %t126) - unreachable -inrange5672: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds %S.ast.Node, ptr %t128, i64 0 - %t130 = load %S.ast.Node, ptr %t129 - call void @finch.gen.fail(ptr %t123, %S.ast.Node %t130, { ptr, i64, i64 } { ptr @.str.3629, i64 35, i64 0 }) - br label %endif5670 -endif5670: - %t131 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.3630, 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.from5673 -logic.from5673: - br i1 %t137, label %logic.end5675, label %logic.rhs5674 -logic.rhs5674: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.3631, i64 4, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br label %logic.rend5676 -logic.rend5676: - br label %logic.end5675 -logic.end5675: - %t145 = phi i1 [ true, %logic.from5673 ], [ %t144, %logic.rend5676 ] - br i1 %t145, label %then5677, label %endif5679 -then5677: - %t146 = load ptr, ptr %a1 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 1, %t149 - br i1 %t150, label %range5680, label %inrange5681 -range5680: - call void @finch_panic_index(ptr @.str.3632, i64 2882, i64 1, i64 %t149) - unreachable -inrange5681: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 1 - %t153 = load %S.ast.Node, ptr %t152 - call void @finch.gen.fail(ptr %t146, %S.ast.Node %t153, { ptr, i64, i64 } { ptr @.str.3633, i64 37, i64 0 }) - br label %endif5679 -endif5679: - %t154 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t155 = load %S.ast.Type, ptr %t154 - store %S.ast.Type %t155, ptr %a156 - call void @finch.copy.S_ast_Type(ptr %a157, ptr %a156) - %t158 = load %S.ast.Type, ptr %a157 - store %S.ast.Type %t158, ptr %a159 - %t160 = load i1, ptr %a24 - br label %logic.from5682 -logic.from5682: - br i1 %t160, label %logic.rhs5683, label %logic.end5684 -logic.rhs5683: - %t161 = load i1, ptr %a25 - br label %logic.rend5685 -logic.rend5685: - br label %logic.end5684 -logic.end5684: - %t162 = phi i1 [ false, %logic.from5682 ], [ %t161, %logic.rend5685 ] - br i1 %t162, label %then5686, label %endif5688 -then5686: - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3634, i64 5, i64 0 }) - %t164 = load %S.ast.Type, ptr %a159 - store %S.ast.Type %t163, ptr %a159 - store %S.ast.Type %t164, ptr %a165 - call void @finch.drop.S_ast_Type(ptr %a165) - br label %endif5688 -endif5688: - %t166 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load %S.ast.Type, ptr %a159 - %t169 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t167, %S.ast.Type %t168) - %t170 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t169, ptr %a8 - store %S.ast.Type %t170, ptr %a171 - call void @finch.drop.S_ast_Type(ptr %a171) - store i1 true, ptr %a9 - call void @finch.drop.S_ast_Type(ptr %a159) - br label %endif5635 -endif5635: - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a8 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t172, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t176, ptr %a178 - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = load %S.ast.Type, ptr %a8 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t181) - %t183 = load { ptr, i64, i64 }, ptr %a178 - call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t182, { ptr, i64, i64 } { ptr @.str.3635, i64 15, i64 0 }, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t182, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load ptr, ptr %a1 - %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic5689, label %ok5690 -panic5689: - call void @finch_panic(ptr @.str.3636, i64 2893, ptr @.str.3637) - unreachable -ok5690: - %t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 11 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load i64, ptr %t188 - store i64 %t189, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a178 - %t193 = load %S.ast.Type, ptr %a8 - call void @finch.gen.holdAddr(ptr %t191, { ptr, i64, i64 } %t192, %S.ast.Type %t193) - %t194 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = sdiv i64 %t196, 2 - store i64 0, ptr %a198 - br label %for.cond5691 -for.cond5691: - %t199 = load i64, ptr %a198 - %t200 = icmp slt i64 %t199, %t197 - br i1 %t200, label %for.body5692, label %for.end5694 -for.body5692: - %t201 = load ptr, ptr %a1 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic5695, label %ok5696 -panic5695: - call void @finch_panic(ptr @.str.3638, i64 2896, ptr @.str.3639) - unreachable -ok5696: - %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 11 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - store i64 %t205, ptr %a206 - %t207 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t207, ptr %a208 - call void @finch.copy.S_gen_Val(ptr %a209, ptr %a208) - %t210 = load %S.gen.Val, ptr %a209 - store %S.gen.Val %t210, ptr %a211 - %t212 = load i64, ptr %a198 - %t213 = icmp eq i64 %t212, 0 - br label %logic.from5697 -logic.from5697: - br i1 %t213, label %logic.rhs5698, label %logic.end5699 -logic.rhs5698: - %t214 = load i1, ptr %a9 - br label %logic.rend5700 -logic.rend5700: - br label %logic.end5699 -logic.end5699: - %t215 = phi i1 [ false, %logic.from5697 ], [ %t214, %logic.rend5700 ] - %t216 = xor i1 %t215, true - br i1 %t216, label %then5701, label %endif5703 -then5701: - %t217 = load ptr, ptr %a1 - %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t219 = load i64, ptr %a198 - %t220 = mul i64 2, %t219 - %t221 = load { ptr, i64, i64 }, ptr %t218 - %t222 = extractvalue { ptr, i64, i64 } %t221, 1 - %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range5704, label %inrange5705 -range5704: - call void @finch_panic_index(ptr @.str.3640, i64 2899, i64 %t220, i64 %t222) - unreachable -inrange5705: - %t224 = extractvalue { ptr, i64, i64 } %t221, 0 - %t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220 - %t226 = load %S.ast.Node, ptr %t225 - %t227 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t228 = load { ptr, i64, i64 }, ptr %t227 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 0, %t229 - br i1 %t230, label %range5706, label %inrange5707 -range5706: - call void @finch_panic_index(ptr @.str.3641, i64 2899, i64 0, i64 %t229) - unreachable -inrange5707: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds %S.ast.Type, ptr %t231, i64 0 - %t233 = load %S.ast.Type, ptr %t232 - %t234 = call %S.gen.Val @finch.gen.exprWant(ptr %t217, %S.ast.Node %t226, %S.ast.Type %t233) - %t235 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t234, ptr %a211 - store %S.gen.Val %t235, ptr %a236 - call void @finch.drop.S_gen_Val(ptr %a236) - br label %endif5703 -endif5703: - %t237 = load ptr, ptr %a1 - %t238 = load %S.gen.Val, ptr %a211 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 0, %t241 - br i1 %t242, label %range5708, label %inrange5709 -range5708: - call void @finch_panic_index(ptr @.str.3642, i64 2901, i64 0, i64 %t241) - unreachable -inrange5709: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t247 = load i64, ptr %a198 - %t248 = mul i64 2, %t247 - %t249 = load { ptr, i64, i64 }, ptr %t246 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5710, label %inrange5711 -range5710: - call void @finch_panic_index(ptr @.str.3643, i64 2901, i64 %t248, i64 %t250) - unreachable -inrange5711: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - %t255 = call %S.gen.Val @finch.gen.coerce(ptr %t237, %S.gen.Val %t238, %S.ast.Type %t245, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3644, i64 21, i64 0 }) - %t256 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t255, ptr %a211 - store %S.gen.Val %t256, ptr %a257 - call void @finch.drop.S_gen_Val(ptr %a257) - %t258 = load ptr, ptr %a1 - %t259 = load %S.gen.Val, ptr %a211 - call void @finch.gen.hold(ptr %t258, %S.gen.Val %t259) - %t260 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t260, ptr %a261 - call void @finch.copy.S_gen_Val(ptr %a262, ptr %a261) - %t263 = load %S.gen.Val, ptr %a262 - store %S.gen.Val %t263, ptr %a264 - %t265 = load i64, ptr %a198 - %t266 = icmp eq i64 %t265, 0 - br label %logic.from5712 -logic.from5712: - br i1 %t266, label %logic.rhs5713, label %logic.end5714 -logic.rhs5713: - %t267 = load i1, ptr %a9 - br label %logic.rend5715 -logic.rend5715: - br label %logic.end5714 -logic.end5714: - %t268 = phi i1 [ false, %logic.from5712 ], [ %t267, %logic.rend5715 ] - %t269 = xor i1 %t268, true - br i1 %t269, label %then5716, label %endif5718 -then5716: - %t270 = load ptr, ptr %a1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t272 = load i64, ptr %a198 - %t273 = mul i64 2, %t272 - %t274 = add i64 %t273, 1 - %t275 = load { ptr, i64, i64 }, ptr %t271 - %t276 = extractvalue { ptr, i64, i64 } %t275, 1 - %t277 = icmp uge i64 %t274, %t276 - br i1 %t277, label %range5719, label %inrange5720 -range5719: - call void @finch_panic_index(ptr @.str.3645, i64 2905, i64 %t274, i64 %t276) - unreachable -inrange5720: - %t278 = extractvalue { ptr, i64, i64 } %t275, 0 - %t279 = getelementptr inbounds %S.ast.Node, ptr %t278, i64 %t274 - %t280 = load %S.ast.Node, ptr %t279 - %t281 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t282 = load { ptr, i64, i64 }, ptr %t281 - %t283 = extractvalue { ptr, i64, i64 } %t282, 1 - %t284 = icmp uge i64 1, %t283 - br i1 %t284, label %range5721, label %inrange5722 -range5721: - call void @finch_panic_index(ptr @.str.3646, i64 2905, i64 1, i64 %t283) - unreachable -inrange5722: - %t285 = extractvalue { ptr, i64, i64 } %t282, 0 - %t286 = getelementptr inbounds %S.ast.Type, ptr %t285, i64 1 - %t287 = load %S.ast.Type, ptr %t286 - %t288 = call %S.gen.Val @finch.gen.exprWant(ptr %t270, %S.ast.Node %t280, %S.ast.Type %t287) - %t289 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t288, ptr %a264 - store %S.gen.Val %t289, ptr %a290 - call void @finch.drop.S_gen_Val(ptr %a290) - br label %endif5718 -endif5718: - %t291 = load ptr, ptr %a1 - %t292 = load %S.gen.Val, ptr %a264 - %t293 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t294 = load { ptr, i64, i64 }, ptr %t293 - %t295 = extractvalue { ptr, i64, i64 } %t294, 1 - %t296 = icmp uge i64 1, %t295 - br i1 %t296, label %range5723, label %inrange5724 -range5723: - call void @finch_panic_index(ptr @.str.3647, i64 2907, i64 1, i64 %t295) - unreachable -inrange5724: - %t297 = extractvalue { ptr, i64, i64 } %t294, 0 - %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 1 - %t299 = load %S.ast.Type, ptr %t298 - %t300 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t301 = load i64, ptr %a198 - %t302 = mul i64 2, %t301 - %t303 = add i64 %t302, 1 - %t304 = load { ptr, i64, i64 }, ptr %t300 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range5725, label %inrange5726 -range5725: - call void @finch_panic_index(ptr @.str.3648, i64 2907, i64 %t303, i64 %t305) - unreachable -inrange5726: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Node, ptr %t307, i64 %t303 - %t309 = load %S.ast.Node, ptr %t308 - %t310 = call %S.gen.Val @finch.gen.coerce(ptr %t291, %S.gen.Val %t292, %S.ast.Type %t299, %S.ast.Node %t309, { ptr, i64, i64 } { ptr @.str.3649, i64 23, i64 0 }) - %t311 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t310, ptr %a264 - store %S.gen.Val %t311, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a264 - %t315 = call { ptr, i64, i64 } @finch.gen.own(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = load ptr, ptr %a1 - %t318 = load { ptr, i64, i64 }, ptr %a178 - %t319 = load %S.ast.Type, ptr %a8 - %t320 = load %S.gen.Val, ptr %a211 - %t321 = load %S.ast.Node, ptr %a2 - %t322 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t317, { ptr, i64, i64 } %t318, %S.ast.Type %t319, %S.gen.Val %t320, i1 false, %S.ast.Node %t321) - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a323 - %t326 = load %S.ast.Type, ptr %a8 - %t327 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t324, { ptr, i64, i64 } %t325, %S.ast.Type %t326, i64 2) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = load { ptr, i64, i64 }, ptr %a328 - %t331 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t332 = load { ptr, i64, i64 }, ptr %t331 - %t333 = extractvalue { ptr, i64, i64 } %t332, 1 - %t334 = icmp uge i64 1, %t333 - br i1 %t334, label %range5727, label %inrange5728 -range5727: - call void @finch_panic_index(ptr @.str.3650, i64 2911, i64 1, i64 %t333) - unreachable -inrange5728: - %t335 = extractvalue { ptr, i64, i64 } %t332, 0 - %t336 = getelementptr inbounds %S.ast.Type, ptr %t335, i64 1 - %t337 = load %S.ast.Type, ptr %t336 - call void @finch.gen.dropAt(ptr %t329, { ptr, i64, i64 } %t330, %S.ast.Type %t337) - %t338 = load ptr, ptr %a1 - %t339 = load ptr, ptr %a1 - %t340 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t341 = load { ptr, i64, i64 }, ptr %t340 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 1, %t342 - br i1 %t343, label %range5729, label %inrange5730 -range5729: - call void @finch_panic_index(ptr @.str.3651, i64 2912, i64 1, i64 %t342) - unreachable -inrange5730: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Type, ptr %t344, i64 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t339, %S.ast.Type %t346) - %t348 = load { ptr, i64, i64 }, ptr %a316 - %t349 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.store(ptr %t338, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t348, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load ptr, ptr %a1 - %t352 = load %S.gen.Val, ptr %a211 - call void @finch.gen.release(ptr %t351, %S.gen.Val %t352) - %t353 = load ptr, ptr %a1 - %t354 = load i64, ptr %a206 - call void @finch.gen.heldEnd(ptr %t353, i64 %t354) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a316) - call void @finch.drop.S_gen_Val(ptr %a264) - call void @finch.drop.S_gen_Val(ptr %a211) - br label %for.step5693 -for.step5693: - %t355 = load i64, ptr %a198 - %t356 = add i64 %t355, 1 - store i64 %t356, ptr %a198 - br label %for.cond5691 -for.end5694: - %t357 = load ptr, ptr %a1 - %t358 = load i64, ptr %a190 - call void @finch.gen.heldEnd(ptr %t357, i64 %t358) - %t359 = load ptr, ptr %a1 - %t360 = load ptr, ptr %a1 - %t361 = load %S.ast.Type, ptr %a8 - %t362 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t360, %S.ast.Type %t361) - %t363 = load { ptr, i64, i64 }, ptr %a178 - %t364 = call { ptr, i64, i64 } @finch.gen.load(ptr %t359, { ptr, i64, i64 } %t362, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 - %t367 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t367, ptr %a368 - call void @finch.copy.S_ast_Type(ptr %a369, ptr %a368) - %t370 = load %S.ast.Type, ptr %a369 - %t371 = insertvalue %S.gen.Val %t366, %S.ast.Type %t370, 1 - %t372 = insertvalue %S.gen.Val %t371, i1 true, 2 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.S_gen_Val(ptr %a11) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.gen.Val %t372 -} - -define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a82 = alloca %S.gen.Val, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a278 = alloca %S.gen.Val, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca %S.ast.Type, align 16 - %a351 = alloca %S.ast.Type, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca i64, align 16 - %a501 = alloca %S.ast.Type, align 16 - %a502 = alloca %S.ast.Type, align 16 - %a504 = alloca %S.ast.Type, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a515 = alloca %S.ast.Type, align 16 - %a518 = alloca %S.ast.Type, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.ast.Type, align 16 - %a753 = alloca %S.ast.Type, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5731, label %inrange5732 -range5731: - call void @finch_panic_index(ptr @.str.3652, i64 2922, i64 0, i64 %t13) - unreachable -inrange5732: - %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 %range5733, label %inrange5734 -range5733: - call void @finch_panic_index(ptr @.str.3653, i64 2923, i64 1, i64 %t24) - unreachable -inrange5734: - %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.3654, 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.from5735 -logic.from5735: - br i1 %t37, label %logic.end5737, label %logic.rhs5736 -logic.rhs5736: - %t38 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3655, 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.rend5738 -logic.rend5738: - br label %logic.end5737 -logic.end5737: - %t43 = phi i1 [ true, %logic.from5735 ], [ %t42, %logic.rend5738 ] - br label %logic.from5739 -logic.from5739: - br i1 %t43, label %logic.end5741, label %logic.rhs5740 -logic.rhs5740: - %t44 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.3656, 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.rend5742 -logic.rend5742: - br label %logic.end5741 -logic.end5741: - %t49 = phi i1 [ true, %logic.from5739 ], [ %t48, %logic.rend5742 ] - br i1 %t49, label %then5743, label %endif5745 -then5743: - %t50 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3657, 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 %then5746, label %else5747 -then5746: - %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 %endif5748 -else5747: - %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 %endif5748 -endif5748: - %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 %range5749, label %inrange5750 -range5749: - call void @finch_panic_index(ptr @.str.3658, i64 2930, i64 1, i64 %t65) - unreachable -inrange5750: - %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 %range5751, label %inrange5752 -range5751: - call void @finch_panic_index(ptr @.str.3659, i64 2930, i64 1, i64 %t75) - unreachable -inrange5752: - %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.3660, i64 7, i64 0 }) - store %S.gen.Val %t71, ptr %a81 - call void @finch.drop.S_gen_Val(ptr %a81) - store %S.gen.Val %t80, ptr %a82 - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a3 - %t85 = load ptr, ptr %a1 - %t86 = load %S.gen.Val, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t86) - %t88 = load %S.ast.Type, ptr %a4 - %t89 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t83, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t87, %S.ast.Type %t88) - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t89, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load %S.gen.Val, ptr %a82 - call void @finch.gen.release(ptr %t92, %S.gen.Val %t93) - %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3661, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3662, i64 3, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t94, { ptr, i64, i64 } %t104) - store { ptr, i64, i64 } %t104, ptr %a106 - call void @finch_str_drop(ptr %a106) - store { ptr, i64, i64 } %t105, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.3663, i64 3, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then5753, label %endif5755 -then5753: - %t113 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t113, ptr %a114 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 - %t118 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3664, i64 4, i64 0 }) - %t119 = insertvalue %S.gen.Val %t117, %S.ast.Type %t118, 1 - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t119 -endif5755: - %t120 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.3665, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then5756, label %endif5758 -then5756: - %t125 = load ptr, ptr %a1 - %t126 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t125, { ptr, i64, i64 } { ptr @.str.3666, i64 10, i64 0 }) - store { ptr, i64, i64 } %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t128, { ptr, i64, i64 } { ptr @.str.3667, i64 10, i64 0 }) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a107 - %t133 = load { ptr, i64, i64 }, ptr %a127 - %t134 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.condBr(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t134) - %t135 = load ptr, ptr %a1 - %t136 = load { ptr, i64, i64 }, ptr %a127 - call void @finch.gen.label(ptr %t135, { ptr, i64, i64 } %t136) - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a3 - %t139 = load %S.ast.Type, ptr %a4 - %t140 = load { ptr, i64, i64 }, ptr %a91 - %t141 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t137, { ptr, i64, i64 } %t138, %S.ast.Type %t139, { ptr, i64, i64 } %t140) - store { ptr, i64, i64 } %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a142 - %t146 = load %S.ast.Type, ptr %a4 - %t147 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Type %t146, i64 1) - %t148 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t143, { ptr, i64, i64 } %t147, %S.ast.Type %t148) - store { ptr, i64, i64 } %t147, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a142 - %t153 = load %S.ast.Type, ptr %a4 - %t154 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t151, { ptr, i64, i64 } %t152, %S.ast.Type %t153, i64 2) - %t155 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t150, { ptr, i64, i64 } %t154, %S.ast.Type %t155) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load ptr, ptr %a1 - %t158 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3668, i64 35, i64 0 }, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t162, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3669, i64 6, i64 0 }, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - %t168 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t167, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.3670, i64 6, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = load ptr, ptr %a1 - %t180 = load %S.ast.Type, ptr %a4 - %t181 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t179, %S.ast.Type %t180) - store { ptr, i64, i64 } %t178, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t178, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t181, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.3671, i64 1, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.br(ptr %t194, { ptr, i64, i64 } %t195) - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t198, ptr %a199 - call void @finch_str_copy(ptr %a200, ptr %a199) - %t201 = load { ptr, i64, i64 }, ptr %a200 - %t202 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t201, 0 - %t203 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3672, i64 4, i64 0 }) - %t204 = insertvalue %S.gen.Val %t202, %S.ast.Type %t203, 1 - call void @finch_str_drop(ptr %a142) - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a127) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t204 -endif5758: - %t205 = load ptr, ptr %a1 - %t206 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t205, { ptr, i64, i64 } { ptr @.str.3673, i64 9, i64 0 }) - store { ptr, i64, i64 } %t206, ptr %a207 - %t208 = load ptr, ptr %a1 - %t209 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t208, { ptr, i64, i64 } { ptr @.str.3674, i64 11, i64 0 }) - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t211, { ptr, i64, i64 } { ptr @.str.3675, i64 8, i64 0 }) - store { ptr, i64, i64 } %t212, ptr %a213 - %t214 = load ptr, ptr %a1 - %t215 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t214, { ptr, i64, i64 } { ptr @.str.3676, i64 8, i64 0 }) - store { ptr, i64, i64 } %t215, ptr %a216 - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t217, { ptr, i64, i64 } { ptr @.str.3677, i64 7, i64 0 }) - store { ptr, i64, i64 } %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a107 - %t222 = load { ptr, i64, i64 }, ptr %a207 - %t223 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.condBr(ptr %t220, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223) - %t224 = load ptr, ptr %a1 - %t225 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.label(ptr %t224, { ptr, i64, i64 } %t225) - %t226 = load ptr, ptr %a1 - %t227 = load ptr, ptr %a1 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a32 - %t230 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t228, %S.ast.Type %t229) - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load { ptr, i64, i64 }, ptr %a3 - %t234 = load %S.ast.Type, ptr %a4 - %t235 = load { ptr, i64, i64 }, ptr %a91 - %t236 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } %t233, %S.ast.Type %t234, { ptr, i64, i64 } %t235) - %t237 = load %S.ast.Type, ptr %a4 - %t238 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t231, { ptr, i64, i64 } %t236, %S.ast.Type %t237, i64 2) - store { ptr, i64, i64 } %t236, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } %t230, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t230, ptr %a241 - call void @finch_str_drop(ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load %S.ast.Type, ptr %a32 - %t244 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t226, { ptr, i64, i64 } %t240, %S.ast.Type %t243) - store { ptr, i64, i64 } %t240, ptr %a245 - call void @finch_str_drop(ptr %a245) - store { ptr, i64, i64 } %t244, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t248) - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.label(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a1 - %t252 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t251, { ptr, i64, i64 } %t252) - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.label(ptr %t253, { ptr, i64, i64 } %t254) - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load ptr, ptr %a1 - %t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t259 = load { ptr, i64, i64 }, ptr %t258 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 2, %t260 - br i1 %t261, label %range5759, label %inrange5760 -range5759: - call void @finch_panic_index(ptr @.str.3678, i64 2963, i64 2, i64 %t260) - unreachable -inrange5760: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Node, ptr %t262, i64 2 - %t264 = load %S.ast.Node, ptr %t263 - %t265 = load %S.ast.Type, ptr %a32 - %t266 = call %S.gen.Val @finch.gen.exprWant(ptr %t257, %S.ast.Node %t264, %S.ast.Type %t265) - %t267 = load %S.ast.Type, ptr %a32 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = extractvalue { ptr, i64, i64 } %t269, 1 - %t271 = icmp uge i64 2, %t270 - br i1 %t271, label %range5761, label %inrange5762 -range5761: - call void @finch_panic_index(ptr @.str.3679, i64 2963, i64 2, i64 %t270) - unreachable -inrange5762: - %t272 = extractvalue { ptr, i64, i64 } %t269, 0 - %t273 = getelementptr inbounds %S.ast.Node, ptr %t272, i64 2 - %t274 = load %S.ast.Node, ptr %t273 - %t275 = call %S.gen.Val @finch.gen.coerce(ptr %t256, %S.gen.Val %t266, %S.ast.Type %t267, %S.ast.Node %t274, { ptr, i64, i64 } { ptr @.str.3680, i64 11, i64 0 }) - store %S.gen.Val %t266, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - %t277 = call { ptr, i64, i64 } @finch.gen.own(ptr %t255, %S.gen.Val %t275) - store %S.gen.Val %t275, ptr %a278 - call void @finch.drop.S_gen_Val(ptr %a278) - store { ptr, i64, i64 } %t277, ptr %a279 - %t280 = load ptr, ptr %a1 - %t281 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.br(ptr %t280, { ptr, i64, i64 } %t281) - %t282 = load ptr, ptr %a1 - %t283 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.label(ptr %t282, { ptr, i64, i64 } %t283) - %t284 = load ptr, ptr %a1 - %t285 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t284, { ptr, i64, i64 } %t285) - %t286 = load ptr, ptr %a1 - %t287 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.label(ptr %t286, { ptr, i64, i64 } %t287) - %t288 = load ptr, ptr %a1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a32 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } { ptr @.str.3681, i64 4, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.3682, i64 3, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t301, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t301, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3683, i64 3, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t312, ptr %a315 - store { ptr, i64, i64 } %t313, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t312, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3684, i64 6, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - %t324 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t323, ptr %a326 - store { ptr, i64, i64 } %t324, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.3685, i64 3, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t334, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t334, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.3686, i64 2, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t345) - store { ptr, i64, i64 } %t345, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t346, 0 - %t349 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t349, ptr %a350 - call void @finch.copy.S_ast_Type(ptr %a351, ptr %a350) - %t352 = load %S.ast.Type, ptr %a351 - %t353 = insertvalue %S.gen.Val %t348, %S.ast.Type %t352, 1 - %t354 = load ptr, ptr %a1 - %t355 = load %S.ast.Type, ptr %a32 - %t356 = call i1 @finch.gen.owning(ptr %t354, %S.ast.Type %t355) - %t357 = insertvalue %S.gen.Val %t353, i1 %t356, 2 - call void @finch_str_drop(ptr %a279) - call void @finch_str_drop(ptr %a246) - call void @finch_str_drop(ptr %a219) - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a213) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a207) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t357 -endif5745: - %t358 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.3687, i64 5, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then5763, label %endif5765 -then5763: - %t363 = load ptr, ptr %a1 - %t364 = load %S.ast.Node, ptr %a2 - %t365 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t363, %S.ast.Node %t364, i64 1, i64 0, { ptr, i64, i64 } %t365) - %t366 = load ptr, ptr %a1 - %t367 = load %S.ast.Type, ptr %a21 - %t368 = call i1 @finch.gen.owning(ptr %t366, %S.ast.Type %t367) - br label %logic.from5766 -logic.from5766: - br i1 %t368, label %logic.end5768, label %logic.rhs5767 -logic.rhs5767: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Type, ptr %a32 - %t371 = call i1 @finch.gen.owning(ptr %t369, %S.ast.Type %t370) - br label %logic.rend5769 -logic.rend5769: - br label %logic.end5768 -logic.end5768: - %t372 = phi i1 [ true, %logic.from5766 ], [ %t371, %logic.rend5769 ] - br i1 %t372, label %then5770, label %endif5772 -then5770: - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a4 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - store { ptr, i64, i64 } { ptr @.str.3689, i64 23, i64 0 }, ptr %a379 - store { ptr, i64, i64 } %t377, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t382, ptr %a384 - store { ptr, i64, i64 } { ptr @.str.3690, i64 6, i64 0 }, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - %t388 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t387, ptr %a390 - store { ptr, i64, i64 } %t388, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t387, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - store { ptr, i64, i64 } %t393, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.3691, i64 14, i64 0 }, ptr %a396 - call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) - store { ptr, i64, i64 } %t393, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load { ptr, i64, i64 }, ptr %a394 - %t399 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t398) - store { ptr, i64, i64 } %t398, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.3688, i64 3, i64 0 }, { ptr, i64, i64 } %t399) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store { ptr, i64, i64 } %t401, ptr %a403 - %t404 = load ptr, ptr %a1 - %t405 = load { ptr, i64, i64 }, ptr %a403 - %t406 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t404, { ptr, i64, i64 } %t405) - store { ptr, i64, i64 } %t406, ptr %a407 - %t408 = load ptr, ptr %a1 - %t409 = load { ptr, i64, i64 }, ptr %a3 - %t410 = load %S.ast.Type, ptr %a4 - %t411 = load { ptr, i64, i64 }, ptr %a407 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 3, %t412 - br i1 %t413, label %range5773, label %inrange5774 -range5773: - call void @finch_panic_index(ptr @.str.3692, i64 2975, i64 3, i64 %t412) - unreachable -inrange5774: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 3 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t408, { ptr, i64, i64 } %t409, %S.ast.Type %t410, { ptr, i64, i64 } %t416) - store { ptr, i64, i64 } %t417, ptr %a418 - %t419 = load ptr, ptr %a1 - %t420 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t419, { ptr, i64, i64 } { ptr @.str.3693, i64 10, i64 0 }) - store { ptr, i64, i64 } %t420, ptr %a421 - %t422 = load ptr, ptr %a1 - %t423 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t422, { ptr, i64, i64 } { ptr @.str.3694, i64 10, i64 0 }) - store { ptr, i64, i64 } %t423, ptr %a424 - %t425 = load ptr, ptr %a1 - %t426 = load ptr, ptr %a1 - %t427 = load ptr, ptr %a1 - %t428 = load ptr, ptr %a1 - %t429 = load { ptr, i64, i64 }, ptr %a418 - %t430 = load %S.ast.Type, ptr %a4 - %t431 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t428, { ptr, i64, i64 } %t429, %S.ast.Type %t430, i64 0) - %t432 = call { ptr, i64, i64 } @finch.gen.load(ptr %t427, { ptr, i64, i64 } { ptr @.str.3696, i64 3, i64 0 }, { ptr, i64, i64 } %t431) - store { ptr, i64, i64 } %t431, ptr %a433 - call void @finch_str_drop(ptr %a433) - store { ptr, i64, i64 } { ptr @.str.3695, i64 12, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t432, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t432, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.3697, i64 3, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t426, { ptr, i64, i64 } %t443) - store { ptr, i64, i64 } %t443, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load { ptr, i64, i64 }, ptr %a421 - %t447 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.condBr(ptr %t425, { ptr, i64, i64 } %t444, { ptr, i64, i64 } %t446, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t444, ptr %a448 - call void @finch_str_drop(ptr %a448) - %t449 = load ptr, ptr %a1 - %t450 = load { ptr, i64, i64 }, ptr %a421 - call void @finch.gen.label(ptr %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load ptr, ptr %a1 - %t453 = load { ptr, i64, i64 }, ptr %a418 - %t454 = load %S.ast.Type, ptr %a4 - %t455 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t452, { ptr, i64, i64 } %t453, %S.ast.Type %t454, i64 1) - %t456 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t451, { ptr, i64, i64 } %t455, %S.ast.Type %t456) - store { ptr, i64, i64 } %t455, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load ptr, ptr %a1 - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a418 - %t461 = load %S.ast.Type, ptr %a4 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 2) - %t463 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t458, { ptr, i64, i64 } %t462, %S.ast.Type %t463) - store { ptr, i64, i64 } %t462, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load ptr, ptr %a1 - %t466 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.br(ptr %t465, { ptr, i64, i64 } %t466) - %t467 = load ptr, ptr %a1 - %t468 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.label(ptr %t467, { ptr, i64, i64 } %t468) - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.loopEnd(ptr %t469, { ptr, i64, i64 } %t470) - call void @finch_str_drop(ptr %a424) - call void @finch_str_drop(ptr %a421) - call void @finch_str_drop(ptr %a418) - call void @finch.drop.arr_str(ptr %a407) - call void @finch_str_drop(ptr %a403) - br label %endif5772 -endif5772: - %t471 = load ptr, ptr %a1 - %t472 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3698, i64 31, i64 0 }, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - %t476 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t476, ptr %a478 - store { ptr, i64, i64 } { ptr @.str.3699, i64 1, i64 0 }, ptr %a479 - call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) - store { ptr, i64, i64 } %t476, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a477 - call void @finch.gen.emit(ptr %t471, { ptr, i64, i64 } %t481) - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3700, i64 4, i64 0 }) - %t484 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t483, 1 - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t484 -endif5765: - %t485 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t485, ptr %a486 - store { ptr, i64, i64 } { ptr @.str.3701, i64 4, i64 0 }, ptr %a487 - %t488 = call i32 @finch_str_eq(ptr %a486, ptr %a487) - %t489 = icmp ne i32 %t488, 0 - br label %logic.from5775 -logic.from5775: - br i1 %t489, label %logic.end5777, label %logic.rhs5776 -logic.rhs5776: - %t490 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t490, ptr %a491 - store { ptr, i64, i64 } { ptr @.str.3702, i64 6, i64 0 }, ptr %a492 - %t493 = call i32 @finch_str_eq(ptr %a491, ptr %a492) - %t494 = icmp ne i32 %t493, 0 - br label %logic.rend5778 -logic.rend5778: - br label %logic.end5777 -logic.end5777: - %t495 = phi i1 [ true, %logic.from5775 ], [ %t494, %logic.rend5778 ] - br i1 %t495, label %then5779, label %endif5781 -then5779: - %t496 = load ptr, ptr %a1 - %t497 = load %S.ast.Node, ptr %a2 - %t498 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t496, %S.ast.Node %t497, i64 1, i64 0, { ptr, i64, i64 } %t498) - store i64 1, ptr %a499 - %t500 = load %S.ast.Type, ptr %a21 - store %S.ast.Type %t500, ptr %a501 - call void @finch.copy.S_ast_Type(ptr %a502, ptr %a501) - %t503 = load %S.ast.Type, ptr %a502 - store %S.ast.Type %t503, ptr %a504 - %t505 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t505, ptr %a506 - store { ptr, i64, i64 } { ptr @.str.3703, i64 6, i64 0 }, ptr %a507 - %t508 = call i32 @finch_str_eq(ptr %a506, ptr %a507) - %t509 = icmp ne i32 %t508, 0 - br i1 %t509, label %then5782, label %endif5784 -then5782: - store i64 2, ptr %a499 - %t510 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = load %S.ast.Type, ptr %a504 - store %S.ast.Type %t513, ptr %a504 - store %S.ast.Type %t514, ptr %a515 - call void @finch.drop.S_ast_Type(ptr %a515) - br label %endif5784 -endif5784: - %t516 = load %S.ast.Type, ptr %a504 - %t517 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t516) - store %S.ast.Type %t517, ptr %a518 - %t519 = load ptr, ptr %a1 - %t520 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t519, { ptr, i64, i64 } { ptr @.str.3704, i64 17, i64 0 }) - store { ptr, i64, i64 } %t520, ptr %a521 - %t522 = load ptr, ptr %a1 - %t523 = load { ptr, i64, i64 }, ptr %a521 - call void @finch.gen.store(ptr %t522, { ptr, i64, i64 } { ptr @.str.3705, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3706, i64 15, i64 0 }, { ptr, i64, i64 } %t523) - %t524 = load ptr, ptr %a1 - %t525 = load ptr, ptr %a1 - %t526 = load ptr, ptr %a1 - %t527 = load %S.ast.Type, ptr %a4 - %t528 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t526, %S.ast.Type %t527) - store { ptr, i64, i64 } { ptr @.str.3708, i64 23, i64 0 }, ptr %a530 - store { ptr, i64, i64 } %t528, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } %t533, ptr %a535 - store { ptr, i64, i64 } { ptr @.str.3709, i64 6, i64 0 }, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = load { ptr, i64, i64 }, ptr %a534 - %t539 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t538, ptr %a541 - store { ptr, i64, i64 } %t539, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t538, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - store { ptr, i64, i64 } %t544, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.3710, i64 14, i64 0 }, ptr %a547 - call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) - store { ptr, i64, i64 } %t544, ptr %a548 - call void @finch_str_drop(ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a545 - %t550 = call { ptr, i64, i64 } @finch.gen.op(ptr %t525, { ptr, i64, i64 } %t549) - store { ptr, i64, i64 } %t549, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } { ptr @.str.3707, i64 3, i64 0 }, { ptr, i64, i64 } %t550) - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_drop(ptr %a553) - store { ptr, i64, i64 } %t552, ptr %a554 - %t555 = load ptr, ptr %a1 - %t556 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } { ptr @.str.3711, i64 30, i64 0 }, ptr %a558 - store { ptr, i64, i64 } %t556, ptr %a559 - call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a557 - store { ptr, i64, i64 } %t560, ptr %a562 - store { ptr, i64, i64 } { ptr @.str.3712, i64 6, i64 0 }, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t560, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - %t566 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t565, ptr %a568 - store { ptr, i64, i64 } %t566, ptr %a569 - call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569) - store { ptr, i64, i64 } %t565, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = load { ptr, i64, i64 }, ptr %a567 - store { ptr, i64, i64 } %t571, ptr %a573 - store { ptr, i64, i64 } { ptr @.str.3713, i64 6, i64 0 }, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t571, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - %t577 = load ptr, ptr %a1 - %t578 = load %S.ast.Type, ptr %a504 - %t579 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t577, %S.ast.Type %t578) - store { ptr, i64, i64 } %t576, ptr %a581 - store { ptr, i64, i64 } %t579, ptr %a582 - call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) - store { ptr, i64, i64 } %t576, ptr %a583 - call void @finch_str_drop(ptr %a583) - store { ptr, i64, i64 } %t579, ptr %a584 - call void @finch_str_drop(ptr %a584) - %t585 = load { ptr, i64, i64 }, ptr %a580 - store { ptr, i64, i64 } %t585, ptr %a587 - store { ptr, i64, i64 } { ptr @.str.3714, i64 1, i64 0 }, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t585, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - call void @finch.gen.emit(ptr %t555, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a591 - call void @finch_str_drop(ptr %a591) - %t592 = load ptr, ptr %a1 - %t593 = load { ptr, i64, i64 }, ptr %a521 - %t594 = call { ptr, i64, i64 } @finch.gen.load(ptr %t592, { ptr, i64, i64 } { ptr @.str.3715, i64 3, i64 0 }, { ptr, i64, i64 } %t593) - store { ptr, i64, i64 } %t594, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t596, { ptr, i64, i64 } { ptr @.str.3716, i64 3, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t599, { ptr, i64, i64 } { ptr @.str.3717, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3718, i64 1, i64 0 }, { ptr, i64, i64 } %t600) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = load ptr, ptr %a1 - %t604 = load %S.ast.Type, ptr %a4 - %t605 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t603, %S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.3720, i64 23, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.3721, i64 6, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t615, ptr %a618 - store { ptr, i64, i64 } %t616, ptr %a619 - call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) - store { ptr, i64, i64 } %t615, ptr %a620 - call void @finch_str_drop(ptr %a620) - %t621 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t621, ptr %a623 - store { ptr, i64, i64 } { ptr @.str.3722, i64 14, i64 0 }, ptr %a624 - call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624) - store { ptr, i64, i64 } %t621, ptr %a625 - call void @finch_str_drop(ptr %a625) - %t626 = load { ptr, i64, i64 }, ptr %a622 - %t627 = call { ptr, i64, i64 } @finch.gen.op(ptr %t602, { ptr, i64, i64 } %t626) - store { ptr, i64, i64 } %t626, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } { ptr @.str.3719, i64 3, i64 0 }, { ptr, i64, i64 } %t627) - store { ptr, i64, i64 } %t627, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t629, ptr %a631 - %t632 = load ptr, ptr %a1 - %t633 = load { ptr, i64, i64 }, ptr %a631 - %t634 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t632, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t634, ptr %a635 - %t636 = load ptr, ptr %a1 - %t637 = load { ptr, i64, i64 }, ptr %a3 - %t638 = load %S.ast.Type, ptr %a4 - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = extractvalue { ptr, i64, i64 } %t639, 1 - %t641 = icmp uge i64 3, %t640 - br i1 %t641, label %range5785, label %inrange5786 -range5785: - call void @finch_panic_index(ptr @.str.3723, i64 3007, i64 3, i64 %t640) - unreachable -inrange5786: - %t642 = extractvalue { ptr, i64, i64 } %t639, 0 - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %t642, i64 3 - %t644 = load { ptr, i64, i64 }, ptr %t643 - %t645 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t636, { ptr, i64, i64 } %t637, %S.ast.Type %t638, { ptr, i64, i64 } %t644) - store { ptr, i64, i64 } %t645, ptr %a646 - %t647 = load ptr, ptr %a1 - %t648 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t647, { ptr, i64, i64 } { ptr @.str.3724, i64 10, i64 0 }) - store { ptr, i64, i64 } %t648, ptr %a649 - %t650 = load ptr, ptr %a1 - %t651 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t650, { ptr, i64, i64 } { ptr @.str.3725, i64 10, i64 0 }) - store { ptr, i64, i64 } %t651, ptr %a652 - %t653 = load ptr, ptr %a1 - %t654 = load ptr, ptr %a1 - %t655 = load ptr, ptr %a1 - %t656 = load ptr, ptr %a1 - %t657 = load { ptr, i64, i64 }, ptr %a646 - %t658 = load %S.ast.Type, ptr %a4 - %t659 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t656, { ptr, i64, i64 } %t657, %S.ast.Type %t658, i64 0) - %t660 = call { ptr, i64, i64 } @finch.gen.load(ptr %t655, { ptr, i64, i64 } { ptr @.str.3727, i64 3, i64 0 }, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t659, ptr %a661 - call void @finch_str_drop(ptr %a661) - store { ptr, i64, i64 } { ptr @.str.3726, i64 12, i64 0 }, ptr %a663 - store { ptr, i64, i64 } %t660, ptr %a664 - call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) - store { ptr, i64, i64 } %t660, ptr %a665 - call void @finch_str_drop(ptr %a665) - %t666 = load { ptr, i64, i64 }, ptr %a662 - store { ptr, i64, i64 } %t666, ptr %a668 - store { ptr, i64, i64 } { ptr @.str.3728, i64 3, i64 0 }, ptr %a669 - call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) - store { ptr, i64, i64 } %t666, ptr %a670 - call void @finch_str_drop(ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a667 - %t672 = call { ptr, i64, i64 } @finch.gen.op(ptr %t654, { ptr, i64, i64 } %t671) - store { ptr, i64, i64 } %t671, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a649 - %t675 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.condBr(ptr %t653, { ptr, i64, i64 } %t672, { ptr, i64, i64 } %t674, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t672, ptr %a676 - call void @finch_str_drop(ptr %a676) - %t677 = load ptr, ptr %a1 - %t678 = load { ptr, i64, i64 }, ptr %a649 - call void @finch.gen.label(ptr %t677, { ptr, i64, i64 } %t678) - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a598 - %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t679, { ptr, i64, i64 } { ptr @.str.3729, i64 3, i64 0 }, { ptr, i64, i64 } %t680) - store { ptr, i64, i64 } %t681, ptr %a682 - %t683 = load ptr, ptr %a1 - %t684 = load ptr, ptr %a1 - %t685 = load ptr, ptr %a1 - %t686 = load %S.ast.Type, ptr %a504 - %t687 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t685, %S.ast.Type %t686) - store { ptr, i64, i64 } { ptr @.str.3730, i64 23, i64 0 }, ptr %a689 - store { ptr, i64, i64 } %t687, ptr %a690 - call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) - store { ptr, i64, i64 } %t687, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a688 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.3731, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.3732, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } %t708, ptr %a711 - store { ptr, i64, i64 } %t709, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t708, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - %t715 = call { ptr, i64, i64 } @finch.gen.op(ptr %t684, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a716 - call void @finch_str_drop(ptr %a716) - %t717 = load ptr, ptr %a1 - %t718 = load { ptr, i64, i64 }, ptr %a646 - %t719 = load %S.ast.Type, ptr %a4 - %t720 = load i64, ptr %a499 - %t721 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t717, { ptr, i64, i64 } %t718, %S.ast.Type %t719, i64 %t720) - %t722 = load %S.ast.Type, ptr %a504 - call void @finch.gen.copyAt(ptr %t683, { ptr, i64, i64 } %t715, { ptr, i64, i64 } %t721, %S.ast.Type %t722) - store { ptr, i64, i64 } %t715, ptr %a723 - call void @finch_str_drop(ptr %a723) - store { ptr, i64, i64 } %t721, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load ptr, ptr %a1 - %t727 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.3734, i64 8, i64 0 }, ptr %a729 - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - %t731 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t731, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3735, i64 3, i64 0 }, ptr %a734 - call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) - store { ptr, i64, i64 } %t731, ptr %a735 - call void @finch_str_drop(ptr %a735) - %t736 = load { ptr, i64, i64 }, ptr %a732 - %t737 = call { ptr, i64, i64 } @finch.gen.op(ptr %t726, { ptr, i64, i64 } %t736) - store { ptr, i64, i64 } %t736, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t725, { ptr, i64, i64 } { ptr @.str.3733, i64 3, i64 0 }, { ptr, i64, i64 } %t737, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t737, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load ptr, ptr %a1 - %t742 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.br(ptr %t741, { ptr, i64, i64 } %t742) - %t743 = load ptr, ptr %a1 - %t744 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.label(ptr %t743, { ptr, i64, i64 } %t744) - %t745 = load ptr, ptr %a1 - %t746 = load { ptr, i64, i64 }, ptr %a635 - call void @finch.gen.loopEnd(ptr %t745, { ptr, i64, i64 } %t746) - %t747 = load ptr, ptr %a1 - %t748 = load { ptr, i64, i64 }, ptr %a521 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t747, { ptr, i64, i64 } { ptr @.str.3736, i64 17, i64 0 }, { ptr, i64, i64 } %t748) - %t750 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t749, 0 - %t751 = load %S.ast.Type, ptr %a518 - store %S.ast.Type %t751, ptr %a752 - call void @finch.copy.S_ast_Type(ptr %a753, ptr %a752) - %t754 = load %S.ast.Type, ptr %a753 - %t755 = insertvalue %S.gen.Val %t750, %S.ast.Type %t754, 1 - %t756 = insertvalue %S.gen.Val %t755, i1 true, 2 - call void @finch_str_drop(ptr %a682) - call void @finch_str_drop(ptr %a652) - call void @finch_str_drop(ptr %a649) - call void @finch_str_drop(ptr %a646) - call void @finch.drop.arr_str(ptr %a635) - call void @finch_str_drop(ptr %a631) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a554) - call void @finch_str_drop(ptr %a521) - call void @finch.drop.S_ast_Type(ptr %a518) - call void @finch.drop.S_ast_Type(ptr %a504) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t756 -endif5781: - %t757 = load ptr, ptr %a1 - %t758 = load %S.ast.Node, ptr %a2 - %t759 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.3737, i64 21, i64 0 }, ptr %a761 - store { ptr, i64, i64 } %t759, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a760 - store { ptr, i64, i64 } %t763, ptr %a765 - store { ptr, i64, i64 } { ptr @.str.3738, i64 49, i64 0 }, ptr %a766 - call void @finch_str_concat(ptr %a764, ptr %a765, ptr %a766) - store { ptr, i64, i64 } %t763, ptr %a767 - call void @finch_str_drop(ptr %a767) - %t768 = load { ptr, i64, i64 }, ptr %a764 - call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t768) - store { ptr, i64, i64 } %t768, ptr %a769 - call void @finch_str_drop(ptr %a769) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val zeroinitializer -} - -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 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a118 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3739, 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.from5787 -logic.from5787: - br i1 %t9, label %logic.rhs5788, label %logic.end5789 -logic.rhs5788: - %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.3740, 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.rend5790 -logic.rend5790: - br label %logic.end5789 -logic.end5789: - %t16 = phi i1 [ false, %logic.from5787 ], [ %t15, %logic.rend5790 ] - br label %logic.from5791 -logic.from5791: - br i1 %t16, label %logic.rhs5792, label %logic.end5793 -logic.rhs5792: - %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.rend5794 -logic.rend5794: - br label %logic.end5793 -logic.end5793: - %t22 = phi i1 [ false, %logic.from5791 ], [ %t21, %logic.rend5794 ] - br i1 %t22, label %then5795, label %endif5797 -then5795: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic5798, label %ok5799 -panic5798: - call void @finch_panic(ptr @.str.3741, i64 3029, ptr @.str.3742) - unreachable -ok5799: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 21 - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %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 %range5800, label %inrange5801 -range5800: - call void @finch_panic_index(ptr @.str.3743, i64 3029, i64 %t31, i64 %t33) - unreachable -inrange5801: - %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.cond5802 -find.cond5802: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t47 - br i1 %t51, label %find.body5803, label %find.end5806 -find.body5803: - %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.hit5804, label %find.next5805 -find.hit5804: - store i64 %t50, ptr %a46 - br label %find.end5806 -find.next5805: - %t58 = add i64 %t50, 1 - store i64 %t58, ptr %a49 - br label %find.cond5802 -find.end5806: - %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 %then5807, label %endif5809 -then5807: - %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.3744, 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.3745, i64 22, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 - %t77 = load { ptr, i64, i64 }, ptr %t76 - store { ptr, i64, i64 } %t75, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t75, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.3746, i64 10, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3747, i64 2, i64 0 }, ptr %a90 - call void @finch_str_join(ptr %a91, ptr %t88, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t87, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t87, ptr %a96 - call void @finch_str_drop(ptr %a96) - store { ptr, i64, i64 } %t92, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.3748, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif5809 -endif5809: - %t105 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3 - %t106 = load i64, ptr %a60 - %t107 = load { ptr, i64, i64 }, ptr %t105 - %t108 = extractvalue { ptr, i64, i64 } %t107, 1 - %t109 = icmp uge i64 %t106, %t108 - br i1 %t109, label %range5810, label %inrange5811 -range5810: - call void @finch_panic_index(ptr @.str.3749, i64 3034, i64 %t106, i64 %t108) - unreachable -inrange5811: - %t110 = extractvalue { ptr, i64, i64 } %t107, 0 - %t111 = getelementptr inbounds i64, ptr %t110, i64 %t106 - %t112 = load i64, ptr %t111 - call void @finch_str_from_int(ptr %a113, i64 %t112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t114, 0 - %t116 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t116, ptr %a117 - call void @finch.copy.S_ast_Type(ptr %a118, ptr %a117) - %t119 = load %S.ast.Type, ptr %a118 - %t120 = insertvalue %S.gen.Val %t115, %S.ast.Type %t119, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a41) - ret %S.gen.Val %t120 -endif5797: - %t121 = load ptr, ptr %a1 - %t122 = load ptr, ptr %a1 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = load %S.ast.Type, ptr %a3 - %t125 = call %S.gen.Val @finch.gen.exprWant(ptr %t122, %S.ast.Node %t123, %S.ast.Type %t124) - %t126 = load %S.ast.Type, ptr %a3 - %t127 = load %S.ast.Node, ptr %a2 - %t128 = call %S.gen.Val @finch.gen.coerce(ptr %t121, %S.gen.Val %t125, %S.ast.Type %t126, %S.ast.Node %t127, { ptr, i64, i64 } { ptr @.str.3750, i64 12, i64 0 }) - store %S.gen.Val %t125, ptr %a129 - call void @finch.drop.S_gen_Val(ptr %a129) - ret %S.gen.Val %t128 -} - -define internal void @finch.drop.S_gen_SumPat(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumPat, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t1) - ret void -} - -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 - %a46 = alloca i64, align 16 - %a49 = 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 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i1, align 16 - %a128 = alloca i1, 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 %S.ast.Type, align 16 - %a138 = alloca i64, align 16 - %a140 = alloca i64, align 16 - %a152 = alloca %S.ast.Node, align 16 - %a153 = alloca %S.ast.Node, align 16 - %a155 = alloca %S.ast.Node, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca i64, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca %S.gen.SumPat, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %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 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca %S.gen.Val, align 16 - %a303 = alloca i64, align 16 - %a306 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.gen.Val, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca i1, align 16 - %a404 = alloca %S.gen.StructDef, align 16 - %a405 = alloca %S.gen.StructDef, align 16 - %a407 = alloca %S.gen.StructDef, align 16 - %a410 = alloca i64, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca i64, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a454 = alloca %S.ast.Type, align 16 - %a456 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %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 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca %S.ast.Node, align 16 - %a536 = alloca %S.ast.Node, align 16 - %a538 = alloca %S.ast.Node, align 16 - %a543 = alloca %S.gen.Val, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca %S.ast.Type, align 16 - %a573 = alloca %S.ast.Type, align 16 - %a576 = alloca %S.ast.Type, align 16 - %a583 = alloca %S.gen.Val, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca i64, align 16 - %a670 = alloca i64, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.gen.EnumDef, align 16 - %a753 = alloca %S.gen.EnumDef, align 16 - %a755 = alloca %S.gen.EnumDef, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca i64, align 16 - %a777 = alloca i64, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a882 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a887 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca %S.ast.Type, align 16 - %a891 = alloca %S.ast.Type, align 16 - %a898 = 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 %range5812, label %inrange5813 -range5812: - call void @finch_panic_index(ptr @.str.3751, i64 3042, i64 0, i64 %t7) - unreachable -inrange5813: - %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.3752, 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.from5814 -logic.from5814: - br i1 %t25, label %logic.end5816, label %logic.rhs5815 -logic.rhs5815: - %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.3753, 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.rend5817 -logic.rend5817: - br label %logic.end5816 -logic.end5816: - %t32 = phi i1 [ true, %logic.from5814 ], [ %t31, %logic.rend5817 ] - br i1 %t32, label %then5818, label %endif5820 -then5818: - %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 %range5821, label %inrange5822 -range5821: - call void @finch_panic_index(ptr @.str.3754, i64 3045, i64 0, i64 %t36) - unreachable -inrange5822: - %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.3755, i64 30, i64 0 }) - br label %endif5820 -endif5820: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic5823, label %ok5824 -panic5823: - call void @finch_panic(ptr @.str.3756, i64 3047, ptr @.str.3757) - unreachable -ok5824: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 11 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - store i64 %t45, ptr %a46 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a13 - call void @finch.gen.hold(ptr %t47, %S.gen.Val %t48) - store i64 -1, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3758, i64 0, i64 0 }, ptr %a50 - %t51 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.3759, i64 6, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then5825, label %endif5827 -then5825: - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call i64 @finch.gen.findSum(ptr %t57, { ptr, i64, i64 } %t59, { ptr, i64, i64 } %t61) - store i64 %t62, ptr %a49 - %t63 = load i64, ptr %a49 - %t64 = icmp sge i64 %t63, 0 - br i1 %t64, label %then5828, label %endif5830 -then5828: - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Type, ptr %a19 - %t68 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t66, %S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.3760, i64 13, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3761, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3762, i64 2, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic5831, label %ok5832 -panic5831: - call void @finch_panic(ptr @.str.3763, i64 3054, ptr @.str.3764) - unreachable -ok5832: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 16 - %t94 = load ptr, ptr %a1 - %t95 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t98 = load { ptr, i64, i64 }, ptr %t97 - %t99 = call i64 @finch.gen.findStruct(ptr %t94, { ptr, i64, i64 } %t96, { ptr, i64, i64 } %t98) - %t100 = load { ptr, i64, i64 }, ptr %t93 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range5833, label %inrange5834 -range5833: - call void @finch_panic_index(ptr @.str.3765, i64 3054, i64 %t99, i64 %t101) - unreachable -inrange5834: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.gen.StructDef, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.gen.StructDef, ptr %t104, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - %t107 = extractvalue { ptr, i64, i64 } %t106, 1 - %t108 = icmp uge i64 0, %t107 - br i1 %t108, label %range5835, label %inrange5836 -range5835: - call void @finch_panic_index(ptr @.str.3766, i64 3054, i64 0, i64 %t107) - unreachable -inrange5836: - %t109 = extractvalue { ptr, i64, i64 } %t106, 0 - %t110 = getelementptr inbounds i64, ptr %t109, i64 0 - %t111 = load i64, ptr %t110 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t90, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t90, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t120, ptr %a50 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_drop(ptr %a123) - br label %endif5830 -endif5830: - br label %endif5827 -endif5827: - %t124 = load ptr, ptr %a1 - %t125 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t124, { ptr, i64, i64 } { ptr @.str.3767, i64 9, i64 0 }) - store { ptr, i64, i64 } %t125, ptr %a126 - store i1 false, ptr %a127 - store i1 false, ptr %a128 - store { ptr, i64, i64 } zeroinitializer, ptr %a129 - store { ptr, i64, i64 } zeroinitializer, ptr %a130 - store { ptr, i64, i64 } zeroinitializer, ptr %a131 - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3768, i64 4, i64 0 }) - store %S.ast.Type %t132, ptr %a133 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = sub i64 %t136, 1 - store i64 %t137, ptr %a138 - %t139 = load i64, ptr %a138 - store i64 0, ptr %a140 - br label %for.cond5837 -for.cond5837: - %t141 = load i64, ptr %a140 - %t142 = icmp slt i64 %t141, %t139 - br i1 %t142, label %for.body5838, label %for.end5840 -for.body5838: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load i64, ptr %a140 - %t145 = add i64 1, %t144 - %t146 = load { ptr, i64, i64 }, ptr %t143 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5841, label %inrange5842 -range5841: - call void @finch_panic_index(ptr @.str.3769, i64 3066, i64 %t145, i64 %t147) - unreachable -inrange5842: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Node, ptr %t149, i64 %t145 - %t151 = load %S.ast.Node, ptr %t150 - store %S.ast.Node %t151, ptr %a152 - call void @finch.copy.S_ast_Node(ptr %a153, ptr %a152) - %t154 = load %S.ast.Node, ptr %a153 - store %S.ast.Node %t154, ptr %a155 - %t156 = load i1, ptr %a127 - br i1 %t156, label %then5843, label %endif5845 -then5843: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a155 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } { ptr @.str.3770, i64 72, i64 0 }) - br label %endif5845 -endif5845: - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t159, { ptr, i64, i64 } { ptr @.str.3771, i64 9, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t162, { ptr, i64, i64 } { ptr @.str.3772, i64 10, i64 0 }) - store { ptr, i64, i64 } %t163, ptr %a164 - store { ptr, i64, i64 } zeroinitializer, ptr %a165 - store i64 -1, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t168 = load i1, ptr %t167 - br i1 %t168, label %then5846, label %else5847 -then5846: - store i1 true, ptr %a127 - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.br(ptr %t169, { ptr, i64, i64 } %t170) - br label %endif5848 -else5847: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range5849, label %inrange5850 -range5849: - call void @finch_panic_index(ptr @.str.3773, i64 3078, i64 0, i64 %t173) - unreachable -inrange5850: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 0 - %t177 = getelementptr inbounds %S.ast.Node, ptr %t176, i32 0, i32 9 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t178, ptr %a179 - call void @finch.copy.arr_S_ast_Node(ptr %a180, ptr %a179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - store i64 0, ptr %a185 - br label %for.cond5851 -for.cond5851: - %t186 = load i64, ptr %a185 - %t187 = icmp slt i64 %t186, %t184 - br i1 %t187, label %for.body5852, label %for.end5854 -for.body5852: - store { ptr, i64, i64 } { ptr @.str.3774, i64 0, i64 0 }, ptr %a188 - %t189 = load i64, ptr %a49 - %t190 = icmp sge i64 %t189, 0 - br i1 %t190, label %then5855, label %else5856 -then5855: - %t191 = load ptr, ptr %a1 - %t192 = load i64, ptr %a185 - %t193 = load { ptr, i64, i64 }, ptr %a182 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range5858, label %inrange5859 -range5858: - call void @finch_panic_index(ptr @.str.3775, i64 3082, i64 %t192, i64 %t194) - unreachable -inrange5859: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 %t192 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = load i64, ptr %a49 - %t200 = call %S.gen.SumPat @finch.gen.sumPattern(ptr %t191, %S.ast.Node %t198, i64 %t199) - store %S.gen.SumPat %t200, ptr %a201 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t203 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t204 = load i64, ptr %t203 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store i64 -1, ptr %a207 - %t208 = load i64, ptr %t202 - %t209 = load ptr, ptr %a129 - store i64 0, ptr %a210 - br label %find.cond5860 -find.cond5860: - %t211 = load i64, ptr %a210 - %t212 = icmp slt i64 %t211, %t208 - br i1 %t212, label %find.body5861, label %find.end5864 -find.body5861: - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i64 %t211 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } %t206, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br i1 %t218, label %find.hit5862, label %find.next5863 -find.hit5862: - store i64 %t211, ptr %a207 - br label %find.end5864 -find.next5863: - %t219 = add i64 %t211, 1 - store i64 %t219, ptr %a210 - br label %find.cond5860 -find.end5864: - store { ptr, i64, i64 } %t206, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load i64, ptr %a207 - %t222 = icmp sge i64 %t221, 0 - br i1 %t222, label %then5865, label %endif5867 -then5865: - %t223 = load ptr, ptr %a1 - %t224 = load i64, ptr %a185 - %t225 = load { ptr, i64, i64 }, ptr %a182 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range5868, label %inrange5869 -range5868: - call void @finch_panic_index(ptr @.str.3776, i64 3084, i64 %t224, i64 %t226) - unreachable -inrange5869: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds %S.ast.Node, ptr %t228, i64 %t224 - %t230 = load %S.ast.Node, ptr %t229 - call void @finch.gen.fail(ptr %t223, %S.ast.Node %t230, { ptr, i64, i64 } { ptr @.str.3777, i64 49, i64 0 }) - br label %endif5867 -endif5867: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t232 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t233 = load i64, ptr %t232 - call void @finch_str_from_int(ptr %a234, i64 %t233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load i64, ptr %t231 - %t237 = add i64 %t236, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t237, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t238 = load ptr, ptr %a129 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i64 %t236 - store { ptr, i64, i64 } %t235, ptr %t239 - store i64 %t237, ptr %t231 - %t240 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i32 0, i32 1 - %t242 = load i64, ptr %t241 - %t243 = icmp sgt i64 %t242, 0 - br i1 %t243, label %then5870, label %endif5872 -then5870: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = icmp sgt i64 %t245, 1 - br i1 %t246, label %then5873, label %endif5875 -then5873: - %t247 = load ptr, ptr %a1 - %t248 = load i64, ptr %a185 - %t249 = load { ptr, i64, i64 }, ptr %a182 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5876, label %inrange5877 -range5876: - call void @finch_panic_index(ptr @.str.3778, i64 3089, i64 %t248, i64 %t250) - unreachable -inrange5877: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - call void @finch.gen.fail(ptr %t247, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3779, i64 52, i64 0 }) - br label %endif5875 -endif5875: - %t255 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.copy.arr_S_ast_Node(ptr %a258, ptr %a257) - %t259 = load { ptr, i64, i64 }, ptr %a258 - %t260 = load { ptr, i64, i64 }, ptr %a165 - store { ptr, i64, i64 } %t259, ptr %a165 - store { ptr, i64, i64 } %t260, ptr %a261 - call void @finch.drop.arr_S_ast_Node(ptr %a261) - %t262 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t263 = load i64, ptr %t262 - store i64 %t263, ptr %a166 - br label %endif5872 -endif5872: - %t264 = load ptr, ptr %a1 - %t265 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.3780, i64 12, 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.3781, i64 2, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t276 = load i64, ptr %t275 - call void @finch_str_from_int(ptr %a277, i64 %t276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t274, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t274, ptr %a282 - call void @finch_str_drop(ptr %a282) - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a279 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t264, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t285, ptr %a188 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_drop(ptr %a288) - call void @finch.drop.S_gen_SumPat(ptr %a201) - br label %endif5857 -else5856: - %t289 = load ptr, ptr %a1 - %t290 = load i64, ptr %a185 - %t291 = load { ptr, i64, i64 }, ptr %a182 - %t292 = extractvalue { ptr, i64, i64 } %t291, 1 - %t293 = icmp uge i64 %t290, %t292 - br i1 %t293, label %range5878, label %inrange5879 -range5878: - call void @finch_panic_index(ptr @.str.3782, i64 3096, i64 %t290, i64 %t292) - unreachable -inrange5879: - %t294 = extractvalue { ptr, i64, i64 } %t291, 0 - %t295 = getelementptr inbounds %S.ast.Node, ptr %t294, i64 %t290 - %t296 = load %S.ast.Node, ptr %t295 - %t297 = load %S.ast.Type, ptr %a19 - %t298 = call %S.gen.Val @finch.gen.patternValue(ptr %t289, %S.ast.Node %t296, %S.ast.Type %t297) - store %S.gen.Val %t298, ptr %a299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t301 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store i64 -1, ptr %a303 - %t304 = load i64, ptr %t300 - %t305 = load ptr, ptr %a129 - store i64 0, ptr %a306 - br label %find.cond5880 -find.cond5880: - %t307 = load i64, ptr %a306 - %t308 = icmp slt i64 %t307, %t304 - br i1 %t308, label %find.body5881, label %find.end5884 -find.body5881: - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t305, i64 %t307 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - store { ptr, i64, i64 } %t302, ptr %a312 - %t313 = call i32 @finch_str_eq(ptr %a311, ptr %a312) - %t314 = icmp ne i32 %t313, 0 - br i1 %t314, label %find.hit5882, label %find.next5883 -find.hit5882: - store i64 %t307, ptr %a303 - br label %find.end5884 -find.next5883: - %t315 = add i64 %t307, 1 - store i64 %t315, ptr %a306 - br label %find.cond5880 -find.end5884: - %t316 = load i64, ptr %a303 - %t317 = icmp sge i64 %t316, 0 - br label %logic.from5885 -logic.from5885: - br i1 %t317, label %logic.rhs5886, label %logic.end5887 -logic.rhs5886: - %t318 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3783, i64 4, i64 0 }, ptr %a321 - %t322 = call i32 @finch_str_eq(ptr %a320, ptr %a321) - %t323 = icmp ne i32 %t322, 0 - br label %logic.rend5888 -logic.rend5888: - br label %logic.end5887 -logic.end5887: - %t324 = phi i1 [ false, %logic.from5885 ], [ %t323, %logic.rend5888 ] - br i1 %t324, label %then5889, label %endif5891 -then5889: - %t325 = load ptr, ptr %a1 - %t326 = load i64, ptr %a185 - %t327 = load { ptr, i64, i64 }, ptr %a182 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range5892, label %inrange5893 -range5892: - call void @finch_panic_index(ptr @.str.3784, i64 3098, i64 %t326, i64 %t328) - unreachable -inrange5893: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - call void @finch.gen.fail(ptr %t325, %S.ast.Node %t332, { ptr, i64, i64 } { ptr @.str.3785, i64 49, i64 0 }) - br label %endif5891 -endif5891: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t334 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_copy(ptr %a337, ptr %a336) - %t338 = load { ptr, i64, i64 }, ptr %a337 - %t339 = load i64, ptr %t333 - %t340 = add i64 %t339, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t340, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t341 = load ptr, ptr %a129 - %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 %t339 - store { ptr, i64, i64 } %t338, ptr %t342 - store i64 %t340, ptr %t333 - %t343 = load ptr, ptr %a1 - %t344 = load %S.gen.Val, ptr %a13 - %t345 = load %S.gen.Val, ptr %a299 - %t346 = load i64, ptr %a185 - %t347 = load { ptr, i64, i64 }, ptr %a182 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 %t346, %t348 - br i1 %t349, label %range5894, label %inrange5895 -range5894: - call void @finch_panic_index(ptr @.str.3787, i64 3101, i64 %t346, i64 %t348) - unreachable -inrange5895: - %t350 = extractvalue { ptr, i64, i64 } %t347, 0 - %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 %t346 - %t352 = load %S.ast.Node, ptr %t351 - %t353 = call %S.gen.Val @finch.gen.compare(ptr %t343, { ptr, i64, i64 } { ptr @.str.3786, i64 2, i64 0 }, %S.gen.Val %t344, %S.gen.Val %t345, %S.ast.Node %t352) - %t354 = extractvalue %S.gen.Val %t353, 0 - store { ptr, i64, i64 } %t354, ptr %a355 - call void @finch_str_copy(ptr %a356, ptr %a355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store %S.gen.Val %t353, ptr %a358 - call void @finch.drop.S_gen_Val(ptr %a358) - %t359 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t357, ptr %a188 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - call void @finch.drop.S_gen_Val(ptr %a299) - br label %endif5857 -endif5857: - %t361 = load i64, ptr %a185 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = sub i64 %t363, 1 - %t365 = icmp eq i64 %t361, %t364 - br i1 %t365, label %then5896, label %else5897 -then5896: - %t366 = load ptr, ptr %a1 - %t367 = load { ptr, i64, i64 }, ptr %a188 - %t368 = load { ptr, i64, i64 }, ptr %a161 - %t369 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.condBr(ptr %t366, { ptr, i64, i64 } %t367, { ptr, i64, i64 } %t368, { ptr, i64, i64 } %t369) - br label %endif5898 -else5897: - %t370 = load ptr, ptr %a1 - %t371 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t370, { ptr, i64, i64 } { ptr @.str.3788, i64 8, i64 0 }) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load { ptr, i64, i64 }, ptr %a188 - %t375 = load { ptr, i64, i64 }, ptr %a161 - %t376 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.condBr(ptr %t373, { ptr, i64, i64 } %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } %t376) - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.label(ptr %t377, { ptr, i64, i64 } %t378) - call void @finch_str_drop(ptr %a372) - br label %endif5898 -endif5898: - call void @finch_str_drop(ptr %a188) - br label %for.step5853 -for.step5853: - %t379 = load i64, ptr %a185 - %t380 = add i64 %t379, 1 - store i64 %t380, ptr %a185 - br label %for.cond5851 -for.end5854: - call void @finch.drop.arr_S_ast_Node(ptr %a182) - br label %endif5848 -endif5848: - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t384 = load i64, ptr %t383 - %t385 = icmp sgt i64 %t384, 0 - store i1 %t385, ptr %a386 - %t387 = load i1, ptr %a386 - br i1 %t387, label %then5899, label %endif5901 -then5899: - %t388 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t388) - %t389 = load ptr, ptr %a1 - %t390 = icmp eq ptr %t389, null - br i1 %t390, label %panic5902, label %ok5903 -panic5902: - call void @finch_panic(ptr @.str.3789, i64 3116, ptr @.str.3790) - unreachable -ok5903: - %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 16 - %t392 = load ptr, ptr %a1 - %t393 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t394 = load { ptr, i64, i64 }, ptr %t393 - %t395 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = call i64 @finch.gen.findStruct(ptr %t392, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t396) - %t398 = load { ptr, i64, i64 }, ptr %t391 - %t399 = extractvalue { ptr, i64, i64 } %t398, 1 - %t400 = icmp uge i64 %t397, %t399 - br i1 %t400, label %range5904, label %inrange5905 -range5904: - call void @finch_panic_index(ptr @.str.3791, i64 3116, i64 %t397, i64 %t399) - unreachable -inrange5905: - %t401 = extractvalue { ptr, i64, i64 } %t398, 0 - %t402 = getelementptr inbounds %S.gen.StructDef, ptr %t401, i64 %t397 - %t403 = load %S.gen.StructDef, ptr %t402 - store %S.gen.StructDef %t403, ptr %a404 - call void @finch.copy.S_gen_StructDef(ptr %a405, ptr %a404) - %t406 = load %S.gen.StructDef, ptr %a405 - store %S.gen.StructDef %t406, ptr %a407 - %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t409 = load i64, ptr %t408 - store i64 0, ptr %a410 - br label %for.cond5906 -for.cond5906: - %t411 = load i64, ptr %a410 - %t412 = icmp slt i64 %t411, %t409 - br i1 %t412, label %for.body5907, label %for.end5909 -for.body5907: - %t413 = load i64, ptr %a410 - %t414 = load { ptr, i64, i64 }, ptr %a165 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5910, label %inrange5911 -range5910: - call void @finch_panic_index(ptr @.str.3792, i64 3118, i64 %t413, i64 %t415) - unreachable -inrange5911: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.ast.Node, ptr %t417, i64 %t413 - %t419 = getelementptr inbounds %S.ast.Node, ptr %t418, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - store { ptr, i64, i64 } { ptr @.str.3793, i64 1, i64 0 }, ptr %a422 - %t423 = call i32 @finch_str_eq(ptr %a421, ptr %a422) - %t424 = icmp ne i32 %t423, 0 - br i1 %t424, label %then5912, label %endif5914 -then5912: - br label %for.step5908 -endif5914: - %t425 = load ptr, ptr %a1 - %t426 = icmp eq ptr %t425, null - br i1 %t426, label %panic5915, label %ok5916 -panic5915: - call void @finch_panic(ptr @.str.3794, i64 3121, ptr @.str.3795) - unreachable -ok5916: - %t427 = getelementptr inbounds %S.gen.Gen, ptr %t425, i32 0, i32 22 - %t428 = load i64, ptr %a49 - %t429 = load { ptr, i64, i64 }, ptr %t427 - %t430 = extractvalue { ptr, i64, i64 } %t429, 1 - %t431 = icmp uge i64 %t428, %t430 - br i1 %t431, label %range5917, label %inrange5918 -range5917: - call void @finch_panic_index(ptr @.str.3796, i64 3121, i64 %t428, i64 %t430) - unreachable -inrange5918: - %t432 = extractvalue { ptr, i64, i64 } %t429, 0 - %t433 = getelementptr inbounds %S.gen.SumDef, ptr %t432, i64 %t428 - %t434 = getelementptr inbounds %S.gen.SumDef, ptr %t433, i32 0, i32 4 - %t435 = load i64, ptr %a166 - %t436 = load { ptr, i64, i64 }, ptr %t434 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 %t435, %t437 - br i1 %t438, label %range5919, label %inrange5920 -range5919: - call void @finch_panic_index(ptr @.str.3797, i64 3121, i64 %t435, i64 %t437) - unreachable -inrange5920: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds i64, ptr %t439, i64 %t435 - %t441 = load i64, ptr %t440 - %t442 = load i64, ptr %a410 - %t443 = add i64 %t441, %t442 - store i64 %t443, ptr %a444 - %t445 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 12 - %t446 = load i64, ptr %a444 - %t447 = load { ptr, i64, i64 }, ptr %t445 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range5921, label %inrange5922 -range5921: - call void @finch_panic_index(ptr @.str.3798, i64 3122, i64 %t446, i64 %t448) - unreachable -inrange5922: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds %S.ast.Type, ptr %t450, i64 %t446 - %t452 = load %S.ast.Type, ptr %t451 - store %S.ast.Type %t452, ptr %a453 - call void @finch.copy.S_ast_Type(ptr %a454, ptr %a453) - %t455 = load %S.ast.Type, ptr %a454 - store %S.ast.Type %t455, ptr %a456 - %t457 = load ptr, ptr %a1 - %t458 = load ptr, ptr %a1 - %t459 = load %S.ast.Type, ptr %a19 - %t460 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t458, %S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.3799, i64 13, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.3800, i64 1, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t472 = load { ptr, i64, i64 }, ptr %t471 - store { ptr, i64, i64 } %t470, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - store { ptr, i64, i64 } %t470, ptr %a476 - call void @finch_str_drop(ptr %a476) - %t477 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t477, ptr %a479 - store { ptr, i64, i64 } { ptr @.str.3801, i64 2, i64 0 }, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t477, ptr %a481 - call void @finch_str_drop(ptr %a481) - %t482 = load { ptr, i64, i64 }, ptr %a478 - %t483 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 3 - %t484 = load i64, ptr %a444 - %t485 = load { ptr, i64, i64 }, ptr %t483 - %t486 = extractvalue { ptr, i64, i64 } %t485, 1 - %t487 = icmp uge i64 %t484, %t486 - br i1 %t487, label %range5923, label %inrange5924 -range5923: - call void @finch_panic_index(ptr @.str.3802, i64 3123, i64 %t484, i64 %t486) - unreachable -inrange5924: - %t488 = extractvalue { ptr, i64, i64 } %t485, 0 - %t489 = getelementptr inbounds i64, ptr %t488, i64 %t484 - %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 } %t482, ptr %a494 - store { ptr, i64, i64 } %t492, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t482, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t492, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a493 - %t499 = call { ptr, i64, i64 } @finch.gen.op(ptr %t457, { ptr, i64, i64 } %t498) - store { ptr, i64, i64 } %t498, ptr %a500 - call void @finch_str_drop(ptr %a500) - store { ptr, i64, i64 } %t499, ptr %a501 - %t502 = load ptr, ptr %a1 - %t503 = load i64, ptr %a410 - %t504 = load { ptr, i64, i64 }, ptr %a165 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 %t503, %t505 - br i1 %t506, label %range5925, label %inrange5926 -range5925: - call void @finch_panic_index(ptr @.str.3803, i64 3124, i64 %t503, i64 %t505) - unreachable -inrange5926: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 %t503 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = load i64, ptr %a410 - %t511 = load { ptr, i64, i64 }, ptr %a165 - %t512 = extractvalue { ptr, i64, i64 } %t511, 1 - %t513 = icmp uge i64 %t510, %t512 - br i1 %t513, label %range5927, label %inrange5928 -range5927: - call void @finch_panic_index(ptr @.str.3804, i64 3124, i64 %t510, i64 %t512) - unreachable -inrange5928: - %t514 = extractvalue { ptr, i64, i64 } %t511, 0 - %t515 = getelementptr inbounds %S.ast.Node, ptr %t514, i64 %t510 - %t516 = getelementptr inbounds %S.ast.Node, ptr %t515, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = load %S.ast.Type, ptr %a456 - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a501 - %t521 = load %S.ast.Type, ptr %a456 - %t522 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t519, { ptr, i64, i64 } %t520, %S.ast.Type %t521) - %t523 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t502, %S.ast.Node %t509, { ptr, i64, i64 } %t517, %S.ast.Type %t518, { ptr, i64, i64 } %t522, i1 true, i1 true) - store { ptr, i64, i64 } %t522, ptr %a524 - call void @finch_str_drop(ptr %a524) - store { ptr, i64, i64 } %t523, ptr %a525 - call void @finch_str_drop(ptr %a525) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a456) - br label %for.step5908 -for.step5908: - %t526 = load i64, ptr %a410 - %t527 = add i64 %t526, 1 - store i64 %t527, ptr %a410 - br label %for.cond5906 -for.end5909: - call void @finch.drop.S_gen_StructDef(ptr %a407) - br label %endif5901 -endif5901: - %t528 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = extractvalue { ptr, i64, i64 } %t529, 1 - %t531 = icmp uge i64 1, %t530 - br i1 %t531, label %range5929, label %inrange5930 -range5929: - call void @finch_panic_index(ptr @.str.3805, i64 3127, i64 1, i64 %t530) - unreachable -inrange5930: - %t532 = extractvalue { ptr, i64, i64 } %t529, 0 - %t533 = getelementptr inbounds %S.ast.Node, ptr %t532, i64 1 - %t534 = load %S.ast.Node, ptr %t533 - store %S.ast.Node %t534, ptr %a535 - call void @finch.copy.S_ast_Node(ptr %a536, ptr %a535) - %t537 = load %S.ast.Node, ptr %a536 - store %S.ast.Node %t537, ptr %a538 - %t539 = load i1, ptr %a3 - br i1 %t539, label %then5931, label %else5932 -then5931: - %t540 = load ptr, ptr %a1 - %t541 = load %S.ast.Node, ptr %a538 - %t542 = call %S.gen.Val @finch.gen.expr(ptr %t540, %S.ast.Node %t541) - store %S.gen.Val %t542, ptr %a543 - %t544 = load i64, ptr %a140 - %t545 = icmp eq i64 %t544, 0 - br label %logic.from5934 -logic.from5934: - br i1 %t545, label %logic.end5936, label %logic.rhs5935 -logic.rhs5935: - %t546 = getelementptr inbounds %S.ast.Type, ptr %a133, i32 0, i32 0 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } %t547, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.3806, i64 4, i64 0 }, ptr %a549 - %t550 = call i32 @finch_str_eq(ptr %a548, ptr %a549) - %t551 = icmp ne i32 %t550, 0 - br label %logic.rend5937 -logic.rend5937: - br label %logic.end5936 -logic.end5936: - %t552 = phi i1 [ true, %logic.from5934 ], [ %t551, %logic.rend5937 ] - br i1 %t552, label %then5938, label %endif5940 -then5938: - %t553 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t554 = getelementptr inbounds %S.ast.Type, ptr %t553, i32 0, i32 0 - %t555 = load { ptr, i64, i64 }, ptr %t554 - store { ptr, i64, i64 } %t555, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.3807, i64 4, i64 0 }, ptr %a557 - %t558 = call i32 @finch_str_eq(ptr %a556, ptr %a557) - %t559 = icmp ne i32 %t558, 0 - br label %logic.from5941 -logic.from5941: - br i1 %t559, label %logic.end5943, label %logic.rhs5942 -logic.rhs5942: - %t560 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t561 = getelementptr inbounds %S.ast.Type, ptr %t560, i32 0, i32 0 - %t562 = load { ptr, i64, i64 }, ptr %t561 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.3808, i64 4, i64 0 }, ptr %a564 - %t565 = call i32 @finch_str_eq(ptr %a563, ptr %a564) - %t566 = icmp ne i32 %t565, 0 - br label %logic.rend5944 -logic.rend5944: - br label %logic.end5943 -logic.end5943: - %t567 = phi i1 [ true, %logic.from5941 ], [ %t566, %logic.rend5944 ] - br i1 %t567, label %then5945, label %endif5947 -then5945: - %t568 = load ptr, ptr %a1 - %t569 = load %S.ast.Node, ptr %a538 - call void @finch.gen.fail(ptr %t568, %S.ast.Node %t569, { ptr, i64, i64 } { ptr @.str.3809, i64 52, i64 0 }) - br label %endif5947 -endif5947: - %t570 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t571 = load %S.ast.Type, ptr %t570 - 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 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t574, ptr %a133 - store %S.ast.Type %t575, ptr %a576 - call void @finch.drop.S_ast_Type(ptr %a576) - br label %endif5940 -endif5940: - %t577 = load ptr, ptr %a1 - %t578 = load %S.gen.Val, ptr %a543 - %t579 = load %S.ast.Type, ptr %a133 - %t580 = load %S.ast.Node, ptr %a538 - %t581 = call %S.gen.Val @finch.gen.coerce(ptr %t577, %S.gen.Val %t578, %S.ast.Type %t579, %S.ast.Node %t580, { ptr, i64, i64 } { ptr @.str.3810, i64 57, i64 0 }) - %t582 = load %S.gen.Val, ptr %a543 - store %S.gen.Val %t581, ptr %a543 - store %S.gen.Val %t582, ptr %a583 - call void @finch.drop.S_gen_Val(ptr %a583) - %t584 = load ptr, ptr %a1 - %t585 = load %S.gen.Val, ptr %a543 - %t586 = call { ptr, i64, i64 } @finch.gen.own(ptr %t584, %S.gen.Val %t585) - store { ptr, i64, i64 } %t586, ptr %a587 - %t588 = load i1, ptr %a386 - br i1 %t588, label %then5948, label %endif5950 -then5948: - %t589 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t589) - br label %endif5950 -endif5950: - %t590 = load ptr, ptr %a1 - %t591 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t590, { ptr, i64, i64 } { ptr @.str.3811, i64 10, i64 0 }) - store { ptr, i64, i64 } %t591, ptr %a592 - %t593 = load ptr, ptr %a1 - %t594 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.br(ptr %t593, { ptr, i64, i64 } %t594) - %t595 = load ptr, ptr %a1 - %t596 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.label(ptr %t595, { ptr, i64, i64 } %t596) - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t598 = load { ptr, i64, i64 }, ptr %a587 - store { ptr, i64, i64 } %t598, ptr %a599 - call void @finch_str_copy(ptr %a600, ptr %a599) - %t601 = load { ptr, i64, i64 }, ptr %a600 - %t602 = load i64, ptr %t597 - %t603 = add i64 %t602, 1 - call void @finch_arr_reserve(ptr %a130, i64 %t603, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t604 = load ptr, ptr %a130 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i64 %t602 - store { ptr, i64, i64 } %t601, ptr %t605 - store i64 %t603, ptr %t597 - %t606 = getelementptr inbounds { ptr, i64, i64 }, ptr %a131, i32 0, i32 1 - %t607 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t607, ptr %a608 - call void @finch_str_copy(ptr %a609, ptr %a608) - %t610 = load { ptr, i64, i64 }, ptr %a609 - %t611 = load i64, ptr %t606 - %t612 = add i64 %t611, 1 - call void @finch_arr_reserve(ptr %a131, i64 %t612, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t613 = load ptr, ptr %a131 - %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i64 %t611 - store { ptr, i64, i64 } %t610, ptr %t614 - store i64 %t612, ptr %t606 - %t615 = load ptr, ptr %a1 - %t616 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t615, { ptr, i64, i64 } %t616) - store i1 true, ptr %a128 - call void @finch_str_drop(ptr %a592) - call void @finch_str_drop(ptr %a587) - call void @finch.drop.S_gen_Val(ptr %a543) - br label %endif5933 -else5932: - %t617 = getelementptr inbounds %S.ast.Node, ptr %a538, i32 0, i32 0 - %t618 = load { ptr, i64, i64 }, ptr %t617 - store { ptr, i64, i64 } %t618, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.3812, i64 5, i64 0 }, ptr %a620 - %t621 = call i32 @finch_str_eq(ptr %a619, ptr %a620) - %t622 = icmp ne i32 %t621, 0 - br i1 %t622, label %then5951, label %else5952 -then5951: - %t623 = load ptr, ptr %a1 - %t624 = load %S.ast.Node, ptr %a538 - call void @finch.gen.block(ptr %t623, %S.ast.Node %t624, i1 true) - br label %endif5953 -else5952: - %t625 = load ptr, ptr %a1 - %t626 = load %S.ast.Node, ptr %a538 - call void @finch.gen.stmt(ptr %t625, %S.ast.Node %t626) - br label %endif5953 -endif5953: - %t627 = load ptr, ptr %a1 - %t628 = icmp eq ptr %t627, null - br i1 %t628, label %panic5954, label %ok5955 -panic5954: - call void @finch_panic(ptr @.str.3813, i64 3154, ptr @.str.3814) - unreachable -ok5955: - %t629 = getelementptr inbounds %S.gen.Gen, ptr %t627, i32 0, i32 9 - %t630 = load i1, ptr %t629 - %t631 = xor i1 %t630, true - br i1 %t631, label %then5956, label %endif5958 -then5956: - store i1 true, ptr %a128 - br label %endif5958 -endif5958: - %t632 = load i1, ptr %a386 - br i1 %t632, label %then5959, label %endif5961 -then5959: - %t633 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t633) - br label %endif5961 -endif5961: - %t634 = load ptr, ptr %a1 - %t635 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t634, { ptr, i64, i64 } %t635) - br label %endif5933 -endif5933: - %t636 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t637 = load i1, ptr %t636 - %t638 = xor i1 %t637, true - br i1 %t638, label %then5962, label %endif5964 -then5962: - %t639 = load ptr, ptr %a1 - %t640 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.label(ptr %t639, { ptr, i64, i64 } %t640) - br label %endif5964 -endif5964: - call void @finch.drop.S_ast_Node(ptr %a538) - call void @finch.drop.arr_S_ast_Node(ptr %a165) - call void @finch_str_drop(ptr %a164) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Node(ptr %a155) - br label %for.step5839 -for.step5839: - %t641 = load i64, ptr %a140 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a140 - br label %for.cond5837 -for.end5840: - %t643 = load i1, ptr %a127 - %t644 = xor i1 %t643, true - br i1 %t644, label %then5965, label %endif5967 -then5965: - %t645 = load i64, ptr %a49 - %t646 = icmp sge i64 %t645, 0 - br i1 %t646, label %then5968, label %else5969 -then5968: - store { ptr, i64, i64 } zeroinitializer, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic5971, label %ok5972 -panic5971: - call void @finch_panic(ptr @.str.3815, i64 3169, ptr @.str.3816) - unreachable -ok5972: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 22 - %t651 = load i64, ptr %a49 - %t652 = load { ptr, i64, i64 }, ptr %t650 - %t653 = extractvalue { ptr, i64, i64 } %t652, 1 - %t654 = icmp uge i64 %t651, %t653 - br i1 %t654, label %range5973, label %inrange5974 -range5973: - call void @finch_panic_index(ptr @.str.3817, i64 3169, i64 %t651, i64 %t653) - unreachable -inrange5974: - %t655 = extractvalue { ptr, i64, i64 } %t652, 0 - %t656 = getelementptr inbounds %S.gen.SumDef, ptr %t655, i64 %t651 - %t657 = getelementptr inbounds %S.gen.SumDef, ptr %t656, i32 0, i32 2 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i32 0, i32 1 - %t659 = load i64, ptr %t658 - store i64 0, ptr %a660 - br label %for.cond5975 -for.cond5975: - %t661 = load i64, ptr %a660 - %t662 = icmp slt i64 %t661, %t659 - br i1 %t662, label %for.body5976, label %for.end5978 -for.body5976: - %t663 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t664 = load i64, ptr %a660 - call void @finch_str_from_int(ptr %a665, i64 %t664) - %t666 = load { ptr, i64, i64 }, ptr %a665 - store i64 -1, ptr %a667 - %t668 = load i64, ptr %t663 - %t669 = load ptr, ptr %a129 - store i64 0, ptr %a670 - br label %find.cond5979 -find.cond5979: - %t671 = load i64, ptr %a670 - %t672 = icmp slt i64 %t671, %t668 - br i1 %t672, label %find.body5980, label %find.end5983 -find.body5980: - %t673 = getelementptr inbounds { ptr, i64, i64 }, ptr %t669, i64 %t671 - %t674 = load { ptr, i64, i64 }, ptr %t673 - store { ptr, i64, i64 } %t674, ptr %a675 - store { ptr, i64, i64 } %t666, ptr %a676 - %t677 = call i32 @finch_str_eq(ptr %a675, ptr %a676) - %t678 = icmp ne i32 %t677, 0 - br i1 %t678, label %find.hit5981, label %find.next5982 -find.hit5981: - store i64 %t671, ptr %a667 - br label %find.end5983 -find.next5982: - %t679 = add i64 %t671, 1 - store i64 %t679, ptr %a670 - br label %find.cond5979 -find.end5983: - store { ptr, i64, i64 } %t666, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load i64, ptr %a667 - %t682 = icmp sge i64 %t681, 0 - %t683 = xor i1 %t682, true - br i1 %t683, label %then5984, label %endif5986 -then5984: - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t685 = load ptr, ptr %a1 - %t686 = icmp eq ptr %t685, null - br i1 %t686, label %panic5987, label %ok5988 -panic5987: - call void @finch_panic(ptr @.str.3818, i64 3171, ptr @.str.3819) - unreachable -ok5988: - %t687 = getelementptr inbounds %S.gen.Gen, ptr %t685, i32 0, i32 22 - %t688 = load i64, ptr %a49 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range5989, label %inrange5990 -range5989: - call void @finch_panic_index(ptr @.str.3820, i64 3171, i64 %t688, i64 %t690) - unreachable -inrange5990: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.gen.SumDef, ptr %t692, i64 %t688 - %t694 = getelementptr inbounds %S.gen.SumDef, ptr %t693, i32 0, i32 2 - %t695 = load i64, ptr %a660 - %t696 = load { ptr, i64, i64 }, ptr %t694 - %t697 = extractvalue { ptr, i64, i64 } %t696, 1 - %t698 = icmp uge i64 %t695, %t697 - br i1 %t698, label %range5991, label %inrange5992 -range5991: - call void @finch_panic_index(ptr @.str.3821, i64 3171, i64 %t695, i64 %t697) - unreachable -inrange5992: - %t699 = extractvalue { ptr, i64, i64 } %t696, 0 - %t700 = getelementptr inbounds { ptr, i64, i64 }, ptr %t699, i64 %t695 - %t701 = load { ptr, i64, i64 }, ptr %t700 - store { ptr, i64, i64 } %t701, ptr %a702 - call void @finch_str_copy(ptr %a703, ptr %a702) - %t704 = load { ptr, i64, i64 }, ptr %a703 - %t705 = load i64, ptr %t684 - %t706 = add i64 %t705, 1 - call void @finch_arr_reserve(ptr %a647, i64 %t706, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t707 = load ptr, ptr %a647 - %t708 = getelementptr inbounds { ptr, i64, i64 }, ptr %t707, i64 %t705 - store { ptr, i64, i64 } %t704, ptr %t708 - store i64 %t706, ptr %t684 - br label %endif5986 -endif5986: - br label %for.step5977 -for.step5977: - %t709 = load i64, ptr %a660 - %t710 = add i64 %t709, 1 - store i64 %t710, ptr %a660 - br label %for.cond5975 -for.end5978: - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t712 = load i64, ptr %t711 - %t713 = icmp sgt i64 %t712, 0 - br i1 %t713, label %then5993, label %endif5995 -then5993: - %t714 = load ptr, ptr %a1 - %t715 = load %S.ast.Node, ptr %a2 - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3823, i64 2, i64 0 }, ptr %a717 - call void @finch_str_join(ptr %a718, ptr %a647, ptr %a717) - %t719 = load { ptr, i64, i64 }, ptr %a718 - store { ptr, i64, i64 } { ptr @.str.3822, i64 26, i64 0 }, ptr %a721 - store { ptr, i64, i64 } %t719, ptr %a722 - call void @finch_str_concat(ptr %a720, ptr %a721, ptr %a722) - store { ptr, i64, i64 } %t719, ptr %a723 - call void @finch_str_drop(ptr %a723) - %t724 = load { ptr, i64, i64 }, ptr %a720 - store { ptr, i64, i64 } %t724, ptr %a726 - store { ptr, i64, i64 } { ptr @.str.3824, i64 29, i64 0 }, ptr %a727 - call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727) - store { ptr, i64, i64 } %t724, ptr %a728 - call void @finch_str_drop(ptr %a728) - %t729 = load { ptr, i64, i64 }, ptr %a725 - call void @finch.gen.fail(ptr %t714, %S.ast.Node %t715, { ptr, i64, i64 } %t729) - store { ptr, i64, i64 } %t729, ptr %a730 - call void @finch_str_drop(ptr %a730) - br label %endif5995 -endif5995: - call void @finch.drop.arr_str(ptr %a647) - br label %endif5970 -else5969: - %t731 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t732, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3825, i64 4, i64 0 }, ptr %a734 - %t735 = call i32 @finch_str_eq(ptr %a733, ptr %a734) - %t736 = icmp ne i32 %t735, 0 - br i1 %t736, label %then5996, label %else5997 -then5996: - %t737 = load ptr, ptr %a1 - %t738 = icmp eq ptr %t737, null - br i1 %t738, label %panic5999, label %ok6000 -panic5999: - call void @finch_panic(ptr @.str.3826, i64 3178, ptr @.str.3827) - unreachable -ok6000: - %t739 = getelementptr inbounds %S.gen.Gen, ptr %t737, i32 0, i32 21 - %t740 = load ptr, ptr %a1 - %t741 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t742 = load { ptr, i64, i64 }, ptr %t741 - %t743 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t744 = load { ptr, i64, i64 }, ptr %t743 - %t745 = call i64 @finch.gen.findEnum(ptr %t740, { ptr, i64, i64 } %t742, { ptr, i64, i64 } %t744) - %t746 = load { ptr, i64, i64 }, ptr %t739 - %t747 = extractvalue { ptr, i64, i64 } %t746, 1 - %t748 = icmp uge i64 %t745, %t747 - br i1 %t748, label %range6001, label %inrange6002 -range6001: - call void @finch_panic_index(ptr @.str.3828, i64 3178, i64 %t745, i64 %t747) - unreachable -inrange6002: - %t749 = extractvalue { ptr, i64, i64 } %t746, 0 - %t750 = getelementptr inbounds %S.gen.EnumDef, ptr %t749, i64 %t745 - %t751 = load %S.gen.EnumDef, ptr %t750 - store %S.gen.EnumDef %t751, ptr %a752 - call void @finch.copy.S_gen_EnumDef(ptr %a753, ptr %a752) - %t754 = load %S.gen.EnumDef, ptr %a753 - store %S.gen.EnumDef %t754, ptr %a755 - store { ptr, i64, i64 } zeroinitializer, ptr %a756 - %t757 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t758 = getelementptr inbounds { ptr, i64, i64 }, ptr %t757, i32 0, i32 1 - %t759 = load i64, ptr %t758 - store i64 0, ptr %a760 - br label %for.cond6003 -for.cond6003: - %t761 = load i64, ptr %a760 - %t762 = icmp slt i64 %t761, %t759 - br i1 %t762, label %for.body6004, label %for.end6006 -for.body6004: - %t763 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t764 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 3 - %t765 = load i64, ptr %a760 - %t766 = load { ptr, i64, i64 }, ptr %t764 - %t767 = extractvalue { ptr, i64, i64 } %t766, 1 - %t768 = icmp uge i64 %t765, %t767 - br i1 %t768, label %range6007, label %inrange6008 -range6007: - call void @finch_panic_index(ptr @.str.3829, i64 3181, i64 %t765, i64 %t767) - unreachable -inrange6008: - %t769 = extractvalue { ptr, i64, i64 } %t766, 0 - %t770 = getelementptr inbounds i64, ptr %t769, i64 %t765 - %t771 = load i64, ptr %t770 - call void @finch_str_from_int(ptr %a772, i64 %t771) - %t773 = load { ptr, i64, i64 }, ptr %a772 - store i64 -1, ptr %a774 - %t775 = load i64, ptr %t763 - %t776 = load ptr, ptr %a129 - store i64 0, ptr %a777 - br label %find.cond6009 -find.cond6009: - %t778 = load i64, ptr %a777 - %t779 = icmp slt i64 %t778, %t775 - br i1 %t779, label %find.body6010, label %find.end6013 -find.body6010: - %t780 = getelementptr inbounds { ptr, i64, i64 }, ptr %t776, i64 %t778 - %t781 = load { ptr, i64, i64 }, ptr %t780 - store { ptr, i64, i64 } %t781, ptr %a782 - store { ptr, i64, i64 } %t773, ptr %a783 - %t784 = call i32 @finch_str_eq(ptr %a782, ptr %a783) - %t785 = icmp ne i32 %t784, 0 - br i1 %t785, label %find.hit6011, label %find.next6012 -find.hit6011: - store i64 %t778, ptr %a774 - br label %find.end6013 -find.next6012: - %t786 = add i64 %t778, 1 - store i64 %t786, ptr %a777 - br label %find.cond6009 -find.end6013: - store { ptr, i64, i64 } %t773, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load i64, ptr %a774 - %t789 = icmp sge i64 %t788, 0 - %t790 = xor i1 %t789, true - br i1 %t790, label %then6014, label %endif6016 -then6014: - %t791 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t792 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t793 = load i64, ptr %a760 - %t794 = load { ptr, i64, i64 }, ptr %t792 - %t795 = extractvalue { ptr, i64, i64 } %t794, 1 - %t796 = icmp uge i64 %t793, %t795 - br i1 %t796, label %range6017, label %inrange6018 -range6017: - call void @finch_panic_index(ptr @.str.3830, i64 3182, i64 %t793, i64 %t795) - unreachable -inrange6018: - %t797 = extractvalue { ptr, i64, i64 } %t794, 0 - %t798 = getelementptr inbounds { ptr, i64, i64 }, ptr %t797, i64 %t793 - %t799 = load { ptr, i64, i64 }, ptr %t798 - store { ptr, i64, i64 } %t799, ptr %a800 - call void @finch_str_copy(ptr %a801, ptr %a800) - %t802 = load { ptr, i64, i64 }, ptr %a801 - %t803 = load i64, ptr %t791 - %t804 = add i64 %t803, 1 - call void @finch_arr_reserve(ptr %a756, i64 %t804, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t805 = load ptr, ptr %a756 - %t806 = getelementptr inbounds { ptr, i64, i64 }, ptr %t805, i64 %t803 - store { ptr, i64, i64 } %t802, ptr %t806 - store i64 %t804, ptr %t791 - br label %endif6016 -endif6016: - br label %for.step6005 -for.step6005: - %t807 = load i64, ptr %a760 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a760 - br label %for.cond6003 -for.end6006: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t810 = load i64, ptr %t809 - %t811 = icmp sgt i64 %t810, 0 - br i1 %t811, label %then6019, label %endif6021 -then6019: - %t812 = load ptr, ptr %a1 - %t813 = load %S.ast.Node, ptr %a2 - %t814 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3832, i64 2, i64 0 }, ptr %a815 - call void @finch_str_join(ptr %a816, ptr %a756, ptr %a815) - %t817 = load { ptr, i64, i64 }, ptr %a816 - store { ptr, i64, i64 } { ptr @.str.3831, i64 26, i64 0 }, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t822, ptr %a824 - store { ptr, i64, i64 } { ptr @.str.3833, i64 29, i64 0 }, ptr %a825 - call void @finch_str_concat(ptr %a823, ptr %a824, ptr %a825) - store { ptr, i64, i64 } %t822, ptr %a826 - call void @finch_str_drop(ptr %a826) - %t827 = load { ptr, i64, i64 }, ptr %a823 - call void @finch.gen.fail(ptr %t812, %S.ast.Node %t813, { ptr, i64, i64 } %t827) - store { ptr, i64, i64 } %t827, ptr %a828 - call void @finch_str_drop(ptr %a828) - br label %endif6021 -endif6021: - call void @finch.drop.arr_str(ptr %a756) - call void @finch.drop.S_gen_EnumDef(ptr %a755) - br label %endif5998 -else5997: - %t829 = load ptr, ptr %a1 - %t830 = load %S.ast.Node, ptr %a2 - %t831 = load %S.ast.Type, ptr %a19 - %t832 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t831) - store { ptr, i64, i64 } { ptr @.str.3834, i64 11, i64 0 }, ptr %a834 - store { ptr, i64, i64 } %t832, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - store { ptr, i64, i64 } %t837, ptr %a839 - store { ptr, i64, i64 } { ptr @.str.3835, i64 54, i64 0 }, ptr %a840 - call void @finch_str_concat(ptr %a838, ptr %a839, ptr %a840) - store { ptr, i64, i64 } %t837, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = load { ptr, i64, i64 }, ptr %a838 - call void @finch.gen.fail(ptr %t829, %S.ast.Node %t830, { ptr, i64, i64 } %t842) - store { ptr, i64, i64 } %t842, ptr %a843 - call void @finch_str_drop(ptr %a843) - br label %endif5998 -endif5998: - br label %endif5970 -endif5970: - %t844 = load ptr, ptr %a1 - %t845 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t844, { ptr, i64, i64 } { ptr @.str.3836, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3837, i64 35, i64 0 }, %S.ast.Node %t845) - %t846 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t846, { ptr, i64, i64 } { ptr @.str.3838, i64 11, i64 0 }) - %t847 = load ptr, ptr %a1 - %t848 = icmp eq ptr %t847, null - br i1 %t848, label %panic6022, label %ok6023 -panic6022: - call void @finch_panic(ptr @.str.3839, i64 3194, ptr @.str.3840) - unreachable -ok6023: - %t849 = getelementptr inbounds %S.gen.Gen, ptr %t847, i32 0, i32 9 - store i1 true, ptr %t849 - br label %endif5967 -endif5967: - %t850 = load ptr, ptr %a1 - %t851 = load i64, ptr %a46 - call void @finch.gen.heldEnd(ptr %t850, i64 %t851) - %t852 = load ptr, ptr %a1 - %t853 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.label(ptr %t852, { ptr, i64, i64 } %t853) - %t854 = load i1, ptr %a128 - %t855 = xor i1 %t854, true - br i1 %t855, label %then6024, label %endif6026 -then6024: - %t856 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t856, { ptr, i64, i64 } { ptr @.str.3841, i64 11, i64 0 }) - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic6027, label %ok6028 -panic6027: - call void @finch_panic(ptr @.str.3842, i64 3200, ptr @.str.3843) - unreachable -ok6028: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 9 - store i1 true, ptr %t859 - %t860 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3844, i64 4, i64 0 }) - %t861 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t860, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t861 -endif6026: - %t862 = load i1, ptr %a3 - br i1 %t862, label %then6029, label %endif6031 -then6029: - %t863 = load ptr, ptr %a1 - %t864 = load ptr, ptr %a1 - %t865 = load %S.ast.Type, ptr %a133 - %t866 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t864, %S.ast.Type %t865) - store { ptr, i64, i64 } { ptr @.str.3845, i64 4, i64 0 }, ptr %a868 - store { ptr, i64, i64 } %t866, ptr %a869 - call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869) - store { ptr, i64, i64 } %t866, ptr %a870 - call void @finch_str_drop(ptr %a870) - %t871 = load { ptr, i64, i64 }, ptr %a867 - store { ptr, i64, i64 } %t871, ptr %a873 - store { ptr, i64, i64 } { ptr @.str.3846, i64 1, i64 0 }, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - store { ptr, i64, i64 } %t871, ptr %a875 - call void @finch_str_drop(ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a872 - %t877 = load { ptr, i64, i64 }, ptr %a130 - %t878 = load { ptr, i64, i64 }, ptr %a131 - %t879 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t877, { ptr, i64, i64 } %t878) - store { ptr, i64, i64 } %t876, ptr %a881 - store { ptr, i64, i64 } %t879, ptr %a882 - call void @finch_str_concat(ptr %a880, ptr %a881, ptr %a882) - store { ptr, i64, i64 } %t876, ptr %a883 - call void @finch_str_drop(ptr %a883) - store { ptr, i64, i64 } %t879, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load { ptr, i64, i64 }, ptr %a880 - %t886 = call { ptr, i64, i64 } @finch.gen.op(ptr %t863, { ptr, i64, i64 } %t885) - store { ptr, i64, i64 } %t885, ptr %a887 - call void @finch_str_drop(ptr %a887) - %t888 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t886, 0 - %t889 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t889, ptr %a890 - call void @finch.copy.S_ast_Type(ptr %a891, ptr %a890) - %t892 = load %S.ast.Type, ptr %a891 - %t893 = insertvalue %S.gen.Val %t888, %S.ast.Type %t892, 1 - %t894 = load ptr, ptr %a1 - %t895 = load %S.ast.Type, ptr %a133 - %t896 = call i1 @finch.gen.owning(ptr %t894, %S.ast.Type %t895) - %t897 = insertvalue %S.gen.Val %t893, i1 %t896, 2 - store %S.gen.Val %t897, ptr %a898 - %t899 = load ptr, ptr %a1 - %t900 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t899, %S.gen.Val %t900) - %t901 = load %S.gen.Val, ptr %a898 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t901 -endif6031: - %t902 = load ptr, ptr %a1 - %t903 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t902, %S.gen.Val %t903) - %t904 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3847, i64 4, i64 0 }) - %t905 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t904, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t905 -} - -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 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond6032 -for.cond6032: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body6033, label %for.end6035 -for.body6033: - %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 %range6036, label %inrange6037 -range6036: - call void @finch_panic_index(ptr @.str.3849, i64 3215, i64 %t10, i64 %t12) - unreachable -inrange6037: - %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.3848, 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.3850, i64 3, i64 0 }, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - %t26 = load i64, ptr %a6 - %t27 = load { ptr, i64, i64 }, ptr %a2 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range6038, label %inrange6039 -range6038: - call void @finch_panic_index(ptr @.str.3851, i64 3215, i64 %t26, i64 %t28) - unreachable -inrange6039: - %t30 = extractvalue { ptr, i64, i64 } %t27, 0 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t26 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t25, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t25, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3852, i64 2, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load i64, ptr %t9 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %a3 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t9 - br label %for.step6034 -for.step6034: - %t47 = load i64, ptr %a6 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a6 - br label %for.cond6032 -for.end6035: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3853, i64 2, i64 0 }, ptr %a50 - call void @finch_str_join(ptr %a51, ptr %a3, ptr %a50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t52 -} - -define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) { -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 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a64 = alloca %S.gen.Val, align 16 - %a65 = alloca %S.gen.Val, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.gen.Fallible, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t4 = load { ptr, i64, i64 }, ptr %t3 - store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3854, 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.from6040 -logic.from6040: - br i1 %t8, label %logic.rhs6041, label %logic.end6042 -logic.rhs6041: - %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.3855, 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.rend6043 -logic.rend6043: - br label %logic.end6042 -logic.end6042: - %t15 = phi i1 [ false, %logic.from6040 ], [ %t14, %logic.rend6043 ] - br i1 %t15, label %then6044, label %endif6046 -then6044: - %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.3856, i64 80, i64 0 }) - br label %endif6046 -endif6046: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6047, label %ok6048 -panic6047: - call void @finch_panic(ptr @.str.3857, i64 3233, ptr @.str.3858) - unreachable -ok6048: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 41 - %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 %panic6049, label %ok6050 -panic6049: - call void @finch_panic(ptr @.str.3859, i64 3234, ptr @.str.3860) - unreachable -ok6050: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 42 - %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 %panic6051, label %ok6052 -panic6051: - call void @finch_panic(ptr @.str.3861, i64 3235, ptr @.str.3862) - unreachable -ok6052: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 43 - %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 %panic6053, label %ok6054 -panic6053: - call void @finch_panic(ptr @.str.3863, i64 3236, ptr @.str.3864) - unreachable -ok6054: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 41 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store { ptr, i64, i64 } %t43, ptr %t46 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic6055, label %ok6056 -panic6055: - call void @finch_panic(ptr @.str.3866, i64 3237, ptr @.str.3867) - unreachable -ok6056: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 42 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } { ptr @.str.3865, i64 0, i64 0 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic6057, label %ok6058 -panic6057: - call void @finch_panic(ptr @.str.3869, i64 3238, ptr @.str.3870) - unreachable -ok6058: - %t56 = getelementptr inbounds %S.gen.Gen, ptr %t54, i32 0, i32 43 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } { ptr @.str.3868, i64 0, i64 0 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = load %S.gen.Val, ptr %a62 - store %S.gen.Val %t63, ptr %a64 - call void @finch.copy.S_gen_Val(ptr %a65, ptr %a64) - %t66 = load %S.gen.Val, ptr %a65 - %t67 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t66, 0 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic6059, label %ok6060 -panic6059: - call void @finch_panic(ptr @.str.3871, i64 3240, ptr @.str.3872) - unreachable -ok6060: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 42 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_copy(ptr %a73, ptr %a72) - %t74 = load { ptr, i64, i64 }, ptr %a73 - %t75 = insertvalue %S.gen.Fallible %t67, { ptr, i64, i64 } %t74, 1 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic6061, label %ok6062 -panic6061: - call void @finch_panic(ptr @.str.3873, i64 3240, ptr @.str.3874) - unreachable -ok6062: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 43 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_copy(ptr %a81, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - %t83 = insertvalue %S.gen.Fallible %t75, { ptr, i64, i64 } %t82, 2 - store %S.gen.Fallible %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a25 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic6063, label %ok6064 -panic6063: - call void @finch_panic(ptr @.str.3875, i64 3241, ptr @.str.3876) - unreachable -ok6064: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 41 - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a33 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6065, label %ok6066 -panic6065: - call void @finch_panic(ptr @.str.3877, i64 3242, ptr @.str.3878) - unreachable -ok6066: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 42 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t100, ptr %t97 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a41 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic6067, label %ok6068 -panic6067: - call void @finch_panic(ptr @.str.3879, i64 3243, ptr @.str.3880) - unreachable -ok6068: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 43 - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_copy(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t109, ptr %t106 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = getelementptr inbounds %S.gen.Fallible, ptr %a84, i32 0, i32 1 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = load i64, ptr %t113 - %t115 = icmp eq i64 %t114, 0 - br i1 %t115, label %then6069, label %endif6071 -then6069: - %t116 = load ptr, ptr %a1 - %t117 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } { ptr @.str.3881, i64 50, i64 0 }) - br label %endif6071 -endif6071: - %t118 = load %S.gen.Fallible, ptr %a84 - call void @finch.drop.S_gen_Val(ptr %a62) - call void @finch_str_drop(ptr %a41) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a25) - ret %S.gen.Fallible %t118 -} - -define internal void @finch.drop.S_gen_Fallible(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Val(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca %S.gen.Fallible, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a156 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic6072, label %ok6073 -panic6072: - call void @finch_panic(ptr @.str.3882, i64 3252, ptr @.str.3883) - unreachable -ok6073: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then6074, label %endif6076 -then6074: - %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.3884, i64 30, i64 0 }) - br label %endif6076 -endif6076: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic6077, label %ok6078 -panic6077: - call void @finch_panic(ptr @.str.3885, i64 3255, ptr @.str.3886) - unreachable -ok6078: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9 - %t14 = load i1, ptr %t13 - %t15 = xor i1 %t14, true - br i1 %t15, label %then6079, label %endif6081 -then6079: - store { ptr, i64, i64 } { ptr @.str.3887, i64 1, i64 0 }, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6082, label %ok6083 -panic6082: - call void @finch_panic(ptr @.str.3888, i64 3257, ptr @.str.3889) - unreachable -ok6083: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 13 - %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12 - %t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3890, 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 %then6084, label %endif6086 -then6084: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6087, label %ok6088 -panic6087: - call void @finch_panic(ptr @.str.3891, i64 3258, ptr @.str.3892) - unreachable -ok6088: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 13 - %t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12 - %t31 = load %S.ast.Type, ptr %t30 - %t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31) - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3893, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t37, ptr %a16 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %endif6086 -endif6086: - %t40 = load ptr, ptr %a1 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = load ptr, ptr %a1 - %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic6089, label %ok6090 -panic6089: - call void @finch_panic(ptr @.str.3895, i64 3260, ptr @.str.3896) - unreachable -ok6090: - %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 13 - %t45 = getelementptr inbounds %S.gen.FnSig, ptr %t44, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } { ptr @.str.3894, i64 29, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3897, i64 31, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3898, i64 55, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.fail(ptr %t40, %S.ast.Node %t41, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a16) - br label %endif6081 -endif6081: - %t68 = load ptr, ptr %a1 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t70 = load { ptr, i64, i64 }, ptr %t69 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 0, %t71 - br i1 %t72, label %range6091, label %inrange6092 -range6091: - call void @finch_panic_index(ptr @.str.3899, i64 3262, i64 0, i64 %t71) - unreachable -inrange6092: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 0 - %t75 = load %S.ast.Node, ptr %t74 - %t76 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t68, %S.ast.Node %t75) - store %S.gen.Fallible %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t78, { ptr, i64, i64 } { ptr @.str.3900, i64 10, i64 0 }) - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t81, { ptr, i64, i64 } { ptr @.str.3901, i64 6, i64 0 }) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 1 - %t86 = load { ptr, i64, i64 }, ptr %t85 - %t87 = load { ptr, i64, i64 }, ptr %a80 - %t88 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.condBr(ptr %t84, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t88) - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a80 - call void @finch.gen.label(ptr %t89, { ptr, i64, i64 } %t90) - %t91 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t91, i64 0) - %t92 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t92, i64 0) - %t93 = load ptr, ptr %a1 - %t94 = load ptr, ptr %a1 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6093, label %ok6094 -panic6093: - call void @finch_panic(ptr @.str.3903, i64 3269, ptr @.str.3904) - unreachable -ok6094: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 13 - %t98 = load %S.gen.FnSig, ptr %t97 - %t99 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t94, %S.gen.FnSig %t98) - store { ptr, i64, i64 } { ptr @.str.3902, i64 4, i64 0 }, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.3905, i64 1, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load ptr, ptr %a1 - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic6095, label %ok6096 -panic6095: - call void @finch_panic(ptr @.str.3907, i64 3269, ptr @.str.3908) - unreachable -ok6096: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 13 - %t115 = load %S.gen.FnSig, ptr %t114 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t111, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.3906, i64 12, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.3909, i64 36, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t126, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.3910, i64 3, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t110, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - store { ptr, i64, i64 } %t109, ptr %a142 - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t109, ptr %a144 - call void @finch_str_drop(ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.emit(ptr %t93, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic6097, label %ok6098 -panic6097: - call void @finch_panic(ptr @.str.3911, i64 3270, ptr @.str.3912) - unreachable -ok6098: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 9 - store i1 true, ptr %t150 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) - %t153 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 0 - %t154 = load %S.gen.Val, ptr %t153 - store %S.gen.Val %t154, ptr %a155 - call void @finch.copy.S_gen_Val(ptr %a156, ptr %a155) - %t157 = load %S.gen.Val, ptr %a156 - call void @finch_str_drop(ptr %a83) - call void @finch_str_drop(ptr %a80) - call void @finch.drop.S_gen_Fallible(ptr %a77) - ret %S.gen.Val %t157 -} - -define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) { -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 - %a42 = alloca %S.ast.Type, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca i1, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.ast.Type, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Type, align 16 - %a245 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range6099, label %inrange6100 -range6099: - call void @finch_panic_index(ptr @.str.3913, i64 3277, i64 0, i64 %t7) - unreachable -inrange6100: - %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.3914, 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.3915, 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 %then6101, label %endif6103 -then6101: - %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.3917, 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.3916, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true, i1 true) - store %S.ast.Type %t38, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range6104, label %inrange6105 -range6104: - call void @finch_panic_index(ptr @.str.3918, i64 3286, i64 1, i64 %t47) - unreachable -inrange6105: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 - %t51 = load %S.ast.Node, ptr %t50 - call void @finch.gen.block(ptr %t44, %S.ast.Node %t51, i1 true) - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic6106, label %ok6107 -panic6106: - call void @finch_panic(ptr @.str.3919, i64 3287, ptr @.str.3920) - unreachable -ok6107: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 9 - %t55 = load i1, ptr %t54 - store i1 %t55, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t57) - %t58 = load i1, ptr %a56 - %t59 = xor i1 %t58, true - br label %logic.from6108 -logic.from6108: - br i1 %t59, label %logic.rhs6109, label %logic.end6110 -logic.rhs6109: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3921, i64 4, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp eq i32 %t65, 0 - br label %logic.rend6111 -logic.rend6111: - br label %logic.end6110 -logic.end6110: - %t67 = phi i1 [ false, %logic.from6108 ], [ %t66, %logic.rend6111 ] - br label %logic.from6112 -logic.from6112: - br i1 %t67, label %logic.rhs6113, label %logic.end6114 -logic.rhs6113: - %t68 = load i1, ptr %a3 - %t69 = xor i1 %t68, true - br label %logic.rend6115 -logic.rend6115: - br label %logic.end6114 -logic.end6114: - %t70 = phi i1 [ false, %logic.from6112 ], [ %t69, %logic.rend6115 ] - br i1 %t70, label %then6116, label %endif6118 -then6116: - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 1, %t74 - br i1 %t75, label %range6119, label %inrange6120 -range6119: - call void @finch_panic_index(ptr @.str.3922, i64 3290, i64 1, i64 %t74) - unreachable -inrange6120: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 1 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.3923, i64 142, i64 0 }) - br label %endif6118 -endif6118: - %t79 = load i1, ptr %a3 - br label %logic.from6121 -logic.from6121: - br i1 %t79, label %logic.rhs6122, label %logic.end6123 -logic.rhs6122: - %t80 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %t80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.3924, i64 4, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp eq i32 %t85, 0 - br label %logic.rend6124 -logic.rend6124: - br label %logic.end6123 -logic.end6123: - %t87 = phi i1 [ false, %logic.from6121 ], [ %t86, %logic.rend6124 ] - br i1 %t87, label %then6125, label %endif6127 -then6125: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3925, i64 6, i64 0 }) - store { ptr, i64, i64 } %t89, ptr %a90 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - %t96 = load %S.gen.Val, ptr %a19 - call void @finch.gen.release(ptr %t95, %S.gen.Val %t96) - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t97, { ptr, i64, i64 } %t98) - %t99 = load ptr, ptr %a1 - %t100 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t99, { ptr, i64, i64 } %t100) - %t101 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3926, i64 4, i64 0 }) - %t102 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t101, 1 - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t102 -endif6127: - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load %S.gen.Val, ptr %a19 - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t107 -endif6103: - %t108 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3927, 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 %then6128, label %endif6130 -then6128: - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 1, %t118 - br i1 %t119, label %range6131, label %inrange6132 -range6131: - call void @finch_panic_index(ptr @.str.3928, i64 3306, i64 1, i64 %t118) - unreachable -inrange6132: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Node, ptr %t120, i64 1 - %t122 = load %S.ast.Node, ptr %t121 - call void @finch.gen.fail(ptr %t115, %S.ast.Node %t122, { ptr, i64, i64 } { ptr @.str.3929, i64 98, i64 0 }) - br label %endif6130 -endif6130: - %t123 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t123) - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Node, ptr %a2 - %t126 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3931, i64 3, i64 0 }) - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t124, %S.ast.Node %t125, { ptr, i64, i64 } { ptr @.str.3930, i64 3, i64 0 }, %S.ast.Type %t126, { ptr, i64, i64 } %t128, i1 true, i1 true) - store %S.ast.Type %t126, ptr %a130 - call void @finch.drop.S_ast_Type(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 1, %t136 - br i1 %t137, label %range6133, label %inrange6134 -range6133: - call void @finch_panic_index(ptr @.str.3932, i64 3310, i64 1, i64 %t136) - unreachable -inrange6134: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Node, ptr %t138, i64 1 - %t140 = load %S.ast.Node, ptr %t139 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - %t143 = call %S.gen.Val @finch.gen.exprWant(ptr %t133, %S.ast.Node %t140, %S.ast.Type %t142) - %t144 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t147 = load { ptr, i64, i64 }, ptr %t146 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 1, %t148 - br i1 %t149, label %range6135, label %inrange6136 -range6135: - call void @finch_panic_index(ptr @.str.3933, i64 3310, i64 1, i64 %t148) - unreachable -inrange6136: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.ast.Node, ptr %t150, i64 1 - %t152 = load %S.ast.Node, ptr %t151 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t132, %S.gen.Val %t143, %S.ast.Type %t145, %S.ast.Node %t152, { ptr, i64, i64 } { ptr @.str.3934, i64 20, i64 0 }) - store %S.gen.Val %t143, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store %S.gen.Val %t153, ptr %a155 - %t156 = load ptr, ptr %a1 - %t157 = load %S.gen.Val, ptr %a155 - %t158 = call { ptr, i64, i64 } @finch.gen.own(ptr %t156, %S.gen.Val %t157) - store { ptr, i64, i64 } %t158, ptr %a159 - %t160 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t160) - %t161 = load ptr, ptr %a1 - %t162 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t161, { ptr, i64, i64 } { ptr @.str.3935, i64 7, i64 0 }) - store { ptr, i64, i64 } %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3936, i64 6, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168) - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170) - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172) - %t173 = load ptr, ptr %a1 - %t174 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t173, { ptr, i64, i64 } %t174) - %t175 = load ptr, ptr %a1 - %t176 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t175, { ptr, i64, i64 } %t176) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) - store { ptr, i64, i64 } { ptr @.str.3937, i64 4, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_drop(ptr %a187) - %t188 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t188, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.3938, i64 3, i64 0 }, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t188, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - %t194 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t193, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.3939, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t204, ptr %a207 - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t204, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.3940, i64 6, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.3941, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3942, i64 2, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t179, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t243 = load %S.ast.Type, ptr %t242 - store %S.ast.Type %t243, ptr %a244 - call void @finch.copy.S_ast_Type(ptr %a245, ptr %a244) - %t246 = load %S.ast.Type, ptr %a245 - %t247 = insertvalue %S.gen.Val %t241, %S.ast.Type %t246, 1 - %t248 = load ptr, ptr %a1 - %t249 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t250 = load %S.ast.Type, ptr %t249 - %t251 = call i1 @finch.gen.owning(ptr %t248, %S.ast.Type %t250) - %t252 = insertvalue %S.gen.Val %t247, i1 %t251, 2 - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a163) - call void @finch_str_drop(ptr %a159) - call void @finch.drop.S_gen_Val(ptr %a155) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t252 -} - -define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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.3943, 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 %then6137, label %endif6139 -then6137: - %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 -endif6139: - %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.3944, 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 %then6140, label %endif6142 -then6140: - %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 -endif6142: - %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 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %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.3945, 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 %then6143, label %endif6145 -then6143: - %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.3947, 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.from6146 -logic.from6146: - br i1 %t20, label %logic.end6148, label %logic.rhs6147 -logic.rhs6147: - %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.3949, 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.rend6149 -logic.rend6149: - br label %logic.end6148 -logic.end6148: - %t28 = phi i1 [ true, %logic.from6146 ], [ %t27, %logic.rend6149 ] - br i1 %t28, label %then6150, label %endif6152 -then6150: - 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.3950, i64 3339) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - store i64 0, ptr %a39 - br label %each.cond6153 -each.cond6153: - %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.body6154, label %each.end6156 -each.body6154: - %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.from6157 -logic.from6157: - br i1 %t54, label %logic.rhs6158, label %logic.end6159 -logic.rhs6158: - %t55 = load i8, ptr %a47 - %t56 = icmp ule i8 %t55, 102 - br label %logic.rend6160 -logic.rend6160: - br label %logic.end6159 -logic.end6159: - %t57 = phi i1 [ false, %logic.from6157 ], [ %t56, %logic.rend6160 ] - br i1 %t57, label %then6161, label %endif6163 -then6161: - %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 %endif6163 -endif6163: - %t63 = load i8, ptr %a47 - %t64 = icmp uge i8 %t63, 65 - br label %logic.from6164 -logic.from6164: - br i1 %t64, label %logic.rhs6165, label %logic.end6166 -logic.rhs6165: - %t65 = load i8, ptr %a47 - %t66 = icmp ule i8 %t65, 70 - br label %logic.rend6167 -logic.rend6167: - br label %logic.end6166 -logic.end6166: - %t67 = phi i1 [ false, %logic.from6164 ], [ %t66, %logic.rend6167 ] - br i1 %t67, label %then6168, label %endif6170 -then6168: - %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 %endif6170 -endif6170: - %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.step6155 -each.step6155: - %t77 = load i64, ptr %a39 - %t78 = add i64 %t77, 1 - store i64 %t78, ptr %a39 - br label %each.cond6153 -each.end6156: - call void @finch_str_drop(ptr %a38) - %t79 = load i64, ptr %a29 - call void @finch_str_from_int(ptr %a80, i64 %t79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t81, 0 - %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3951, i64 3, i64 0 }) - %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 - %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t85 -endif6152: - %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.3952, i64 3351) - 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.3953, i64 3, i64 0 }) - %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 - %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t95 -endif6145: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3954, 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 %then6171, label %endif6173 -then6171: - %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.3955, i64 5, i64 0 }) - %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t109 -endif6173: - %t110 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3956, 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 %then6174, label %endif6176 -then6174: - %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.3957, i64 4, i64 0 }) - %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t122 -endif6176: - %t123 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3958, 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 %then6177, label %endif6179 -then6177: - %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 %range6180, label %inrange6181 -range6180: - call void @finch_panic_index(ptr @.str.3959, i64 3360, i64 0, i64 %t130) - unreachable -inrange6181: - %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.3960, i64 4, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif6179: - %t143 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.3961, 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 %then6182, label %endif6184 -then6182: - %t148 = load ptr, ptr %a1 - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t151 -endif6184: - %t152 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.3962, 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 %then6185, label %endif6187 -then6185: - %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3963, i64 4, i64 0 }, 0 - %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3964, i64 4, i64 0 }) - %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t159 -endif6187: - %t160 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3965, 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.from6188 -logic.from6188: - br i1 %t164, label %logic.end6190, label %logic.rhs6189 -logic.rhs6189: - %t165 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3966, 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.rend6191 -logic.rend6191: - br label %logic.end6190 -logic.end6190: - %t170 = phi i1 [ true, %logic.from6188 ], [ %t169, %logic.rend6191 ] - br label %logic.from6192 -logic.from6192: - br i1 %t170, label %logic.end6194, label %logic.rhs6193 -logic.rhs6193: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3967, 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.rend6195 -logic.rend6195: - br label %logic.end6194 -logic.end6194: - %t176 = phi i1 [ true, %logic.from6192 ], [ %t175, %logic.rend6195 ] - br i1 %t176, label %then6196, label %endif6198 -then6196: - %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 %then6199, label %endif6201 -then6199: - %t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2 - %t185 = load %S.gen.Val, ptr %t184 - store %S.gen.Val %t185, ptr %a186 - call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186) - %t188 = load %S.gen.Val, ptr %a187 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t188 -endif6201: - %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) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 - %t201 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.Place, ptr %t201, i32 0, i32 1 - %t203 = load %S.ast.Type, ptr %t202 - store %S.ast.Type %t203, ptr %a204 - call void @finch.copy.S_ast_Type(ptr %a205, ptr %a204) - %t206 = load %S.ast.Type, ptr %a205 - %t207 = insertvalue %S.gen.Val %t200, %S.ast.Type %t206, 1 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t207 -endif6198: - %t208 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.3968, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then6202, label %endif6204 -then6202: - %t213 = load ptr, ptr %a1 - %t214 = load %S.ast.Node, ptr %a2 - %t215 = call %S.gen.Val @finch.gen.matchGen(ptr %t213, %S.ast.Node %t214, i1 true) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t215 -endif6204: - %t216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t216, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.3969, i64 3, i64 0 }, ptr %a218 - %t219 = call i32 @finch_str_eq(ptr %a217, ptr %a218) - %t220 = icmp ne i32 %t219, 0 - br i1 %t220, label %then6205, label %endif6207 -then6205: - %t221 = load ptr, ptr %a1 - %t222 = load %S.ast.Node, ptr %a2 - %t223 = call %S.gen.Val @finch.gen.tryExpr(ptr %t221, %S.ast.Node %t222) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -endif6207: - %t224 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t224, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.3970, i64 2, i64 0 }, ptr %a226 - %t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226) - %t228 = icmp ne i32 %t227, 0 - br i1 %t228, label %then6208, label %endif6210 -then6208: - %t229 = load ptr, ptr %a1 - %t230 = load %S.ast.Node, ptr %a2 - %t231 = call %S.gen.Val @finch.gen.orElse(ptr %t229, %S.ast.Node %t230, i1 false) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t231 -endif6210: - %t232 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t232, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3971, i64 5, i64 0 }, ptr %a234 - %t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234) - %t236 = icmp ne i32 %t235, 0 - br i1 %t236, label %then6211, label %endif6213 -then6211: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.gen.Val @finch.gen.unary(ptr %t237, %S.ast.Node %t238) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t239 -endif6213: - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t240, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3972, i64 6, i64 0 }, ptr %a242 - %t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242) - %t244 = icmp ne i32 %t243, 0 - br i1 %t244, label %then6214, label %endif6216 -then6214: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = call %S.gen.Val @finch.gen.binary(ptr %t245, %S.ast.Node %t246) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t247 -endif6216: - %t248 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3973, i64 4, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br i1 %t252, label %then6217, label %endif6219 -then6217: - %t253 = load ptr, ptr %a1 - %t254 = load %S.ast.Node, ptr %a2 - %t255 = call %S.gen.Val @finch.gen.call(ptr %t253, %S.ast.Node %t254) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t255 -endif6219: - %t256 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t256, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.3974, i64 6, i64 0 }, ptr %a258 - %t259 = call i32 @finch_str_eq(ptr %a257, ptr %a258) - %t260 = icmp ne i32 %t259, 0 - br i1 %t260, label %then6220, label %endif6222 -then6220: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a2 - %t263 = call %S.gen.Val @finch.gen.method(ptr %t261, %S.ast.Node %t262) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t263 -endif6222: - %t264 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t264, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.3975, i64 5, i64 0 }, ptr %a266 - %t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266) - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %then6223, label %endif6225 -then6223: - %t269 = load ptr, ptr %a1 - %t270 = load %S.ast.Node, ptr %a2 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3976, i64 4, i64 0 }) - %t272 = call %S.gen.Val @finch.gen.arrayLit(ptr %t269, %S.ast.Node %t270, %S.ast.Type %t271) - store %S.ast.Type %t271, ptr %a273 - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t272 -endif6225: - %t274 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t274, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.3977, i64 3, i64 0 }, ptr %a276 - %t277 = call i32 @finch_str_eq(ptr %a275, ptr %a276) - %t278 = icmp ne i32 %t277, 0 - br i1 %t278, label %then6226, label %endif6228 -then6226: - %t279 = load ptr, ptr %a1 - %t280 = load %S.ast.Node, ptr %a2 - %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3978, i64 4, i64 0 }) - %t282 = call %S.gen.Val @finch.gen.mapLit(ptr %t279, %S.ast.Node %t280, %S.ast.Type %t281) - store %S.ast.Type %t281, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t282 -endif6228: - %t284 = load ptr, ptr %a1 - %t285 = load %S.ast.Node, ptr %a2 - %t286 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.3979, i64 19, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - call void @finch.gen.fail(ptr %t284, %S.ast.Node %t285, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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.ast.Type, align 16 - %a31 = alloca %S.gen.Val, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a144 = alloca %S.ast.Type, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a158 = alloca %S.ast.Type, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca %S.ast.Type, align 16 - %a190 = alloca %S.ast.Type, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range6229, label %inrange6230 -range6229: - call void @finch_panic_index(ptr @.str.3980, i64 3408, i64 0, i64 %t6) - unreachable -inrange6230: - %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.3981, 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 %then6231, label %endif6233 -then6231: - %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.3982, 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 %range6234, label %inrange6235 -range6234: - call void @finch_panic_index(ptr @.str.3983, i64 3410, i64 0, i64 %t24) - unreachable -inrange6235: - %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.3984, i64 19, i64 0 }) - store %S.ast.Type %t21, ptr %a30 - call void @finch.drop.S_ast_Type(ptr %a30) - store %S.gen.Val %t29, ptr %a31 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } { ptr @.str.3985, 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.3986, i64 6, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = call { ptr, i64, i64 } @finch.gen.op(ptr %t32, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t44, 0 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3987, i64 4, i64 0 }) - %t48 = insertvalue %S.gen.Val %t46, %S.ast.Type %t47, 1 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t48 -endif6233: - %t49 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3988, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then6236, label %endif6238 -then6236: - %t55 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t56 = load %S.ast.Type, ptr %t55 - %t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56) - %t58 = xor i1 %t57, true - br i1 %t58, label %then6239, label %endif6241 -then6239: - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t62) - store { ptr, i64, i64 } { ptr @.str.3989, i64 45, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.gen.fail(ptr %t59, %S.ast.Node %t60, { ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_drop(ptr %a69) - br label %endif6241 -endif6241: - %t70 = load ptr, ptr %a1 - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t73 = load %S.ast.Type, ptr %t72 - %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t71, %S.ast.Type %t73) - store { ptr, i64, i64 } { ptr @.str.3990, i64 4, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3991, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t84, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t84, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3992, i64 4, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0 - %t100 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t101 = load %S.ast.Type, ptr %t100 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t99, %S.ast.Type %t104, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t105 -endif6238: - %t106 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t107 = load %S.ast.Type, ptr %t106 - %t108 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t107) - br i1 %t108, label %then6242, label %endif6244 -then6242: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a2 - %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t112 = load %S.ast.Type, ptr %t111 - %t113 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t112) - store { ptr, i64, i64 } %t113, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.3993, i64 34, i64 0 }, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t113, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t110, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif6244 -endif6244: - %t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.isSigned(%S.ast.Type %t121) - br i1 %t122, label %then6245, label %endif6247 -then6245: - %t123 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 - %t124 = load i1, ptr %t123 - br i1 %t124, label %then6248, label %endif6250 -then6248: - %t125 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3995, i64 1, i64 0 }, ptr %a129 - %t130 = call i32 @finch_str_starts(ptr %a127, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - br i1 %t131, label %then6251, label %endif6253 -then6251: - %t132 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - %t136 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a135, ptr %a134, i64 1, i64 %t138, ptr @.str.3996, i64 3425) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - store %S.ast.Type %t142, ptr %a143 - call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143) - %t145 = load %S.ast.Type, ptr %a144 - %t146 = insertvalue %S.gen.Val %t140, %S.ast.Type %t145, 1 - %t147 = insertvalue %S.gen.Val %t146, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t147 -endif6253: - %t148 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t149 = load { ptr, i64, i64 }, ptr %t148 - store { ptr, i64, i64 } { ptr @.str.3997, i64 1, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t153, 0 - %t155 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t156 = load %S.ast.Type, ptr %t155 - store %S.ast.Type %t156, ptr %a157 - call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) - %t159 = load %S.ast.Type, ptr %a158 - %t160 = insertvalue %S.gen.Val %t154, %S.ast.Type %t159, 1 - %t161 = insertvalue %S.gen.Val %t160, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t161 -endif6250: - %t162 = load ptr, ptr %a1 - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t165 = load %S.ast.Type, ptr %t164 - %t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t165) - store { ptr, i64, i64 } { ptr @.str.3998, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t166, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.3999, i64 4, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - %t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t176, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t176, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t184, 0 - %t187 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t188 = load %S.ast.Type, ptr %t187 - store %S.ast.Type %t188, ptr %a189 - call void @finch.copy.S_ast_Type(ptr %a190, ptr %a189) - %t191 = load %S.ast.Type, ptr %a190 - %t192 = insertvalue %S.gen.Val %t186, %S.ast.Type %t191, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t192 -endif6247: - %t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br i1 %t195, label %then6254, label %endif6256 -then6254: - %t196 = load ptr, ptr %a1 - %t197 = load ptr, ptr %a1 - %t198 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t197, %S.ast.Type %t199) - store { ptr, i64, i64 } { ptr @.str.4000, i64 5, i64 0 }, ptr %a202 - store { ptr, i64, i64 } %t200, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4001, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - %t211 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t212 = load { ptr, i64, i64 }, ptr %t211 - store { ptr, i64, i64 } %t210, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t210, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t196, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t218, 0 - %t221 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t222 = load %S.ast.Type, ptr %t221 - store %S.ast.Type %t222, ptr %a223 - call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223) - %t225 = load %S.ast.Type, ptr %a224 - %t226 = insertvalue %S.gen.Val %t220, %S.ast.Type %t225, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t226 -endif6256: - %t227 = load ptr, ptr %a1 - %t228 = load %S.ast.Node, ptr %a2 - %t229 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t230) - store { ptr, i64, i64 } { ptr @.str.4002, i64 26, i64 0 }, ptr %a233 - store { ptr, i64, i64 } %t231, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t236) - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load %S.gen.Val, ptr %a12 - ret %S.gen.Val %t238 -} - -define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - store %S.gen.Val %p3, ptr %a4 - store %S.ast.Node %p4, ptr %a5 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.4003, 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.4004, i64 5, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a25 - %t26 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t27 = load %S.ast.Type, ptr %t26 - %t28 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call i1 @finch.ast.same(%S.ast.Type %t27, %S.ast.Type %t29) - %t31 = xor i1 %t30, true - br i1 %t31, label %then6257, label %endif6259 -then6257: - %t32 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.4005, i64 5, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - %t37 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t38 = load %S.ast.Type, ptr %t37 - %t39 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t38) - store { ptr, i64, i64 } %t36, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t36, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a40 - %t46 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t45, ptr %a25 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif6259 -endif6259: - %t48 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4006, i64 1, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from6260 -logic.from6260: - br i1 %t52, label %logic.rhs6261, label %logic.end6262 -logic.rhs6261: - %t53 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t54 = getelementptr inbounds %S.ast.Type, ptr %t53, i32 0, i32 0 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4007, 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.from6263 -logic.from6263: - br i1 %t59, label %logic.end6265, label %logic.rhs6264 -logic.rhs6264: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4008, i64 3, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br label %logic.rend6266 -logic.rend6266: - br label %logic.end6265 -logic.end6265: - %t67 = phi i1 [ true, %logic.from6263 ], [ %t66, %logic.rend6266 ] - br label %logic.rend6267 -logic.rend6267: - br label %logic.end6262 -logic.end6262: - %t68 = phi i1 [ false, %logic.from6260 ], [ %t67, %logic.rend6267 ] - br i1 %t68, label %then6268, label %endif6270 -then6268: - %t69 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4009, i64 48, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t73, ptr %a25 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - br label %endif6270 -endif6270: - %t76 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.4010, i64 1, i64 0 }, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br label %logic.from6271 -logic.from6271: - br i1 %t80, label %logic.end6273, label %logic.rhs6272 -logic.rhs6272: - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4011, 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.rend6274 -logic.rend6274: - br label %logic.end6273 -logic.end6273: - %t86 = phi i1 [ true, %logic.from6271 ], [ %t85, %logic.rend6274 ] - br label %logic.from6275 -logic.from6275: - br i1 %t86, label %logic.rhs6276, label %logic.end6277 -logic.rhs6276: - %t87 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4012, i64 4, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp ne i32 %t92, 0 - br label %logic.rend6278 -logic.rend6278: - br label %logic.end6277 -logic.end6277: - %t94 = phi i1 [ false, %logic.from6275 ], [ %t93, %logic.rend6278 ] - br i1 %t94, label %then6279, label %else6280 -then6279: - %t95 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4013, i64 1, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then6282, label %else6283 -then6282: - %t100 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4014, i64 26, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a101 - %t105 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t104, ptr %a25 - store { ptr, i64, i64 } %t105, ptr %a106 - call void @finch_str_drop(ptr %a106) - br label %endif6284 -else6283: - %t107 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.4015, i64 26, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - %t112 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t111, ptr %a25 - store { ptr, i64, i64 } %t112, ptr %a113 - call void @finch_str_drop(ptr %a113) - br label %endif6284 -endif6284: - br label %endif6281 -else6280: - %t114 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.4016, i64 1, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from6285 -logic.from6285: - br i1 %t118, label %logic.end6287, label %logic.rhs6286 -logic.rhs6286: - %t119 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4017, i64 1, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend6288 -logic.rend6288: - br label %logic.end6287 -logic.end6287: - %t124 = phi i1 [ true, %logic.from6285 ], [ %t123, %logic.rend6288 ] - br label %logic.from6289 -logic.from6289: - br i1 %t124, label %logic.end6291, label %logic.rhs6290 -logic.rhs6290: - %t125 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.4018, i64 1, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br label %logic.rend6292 -logic.rend6292: - br label %logic.end6291 -logic.end6291: - %t130 = phi i1 [ true, %logic.from6289 ], [ %t129, %logic.rend6292 ] - br label %logic.from6293 -logic.from6293: - br i1 %t130, label %logic.end6295, label %logic.rhs6294 -logic.rhs6294: - %t131 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4019, i64 2, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6296 -logic.rend6296: - br label %logic.end6295 -logic.end6295: - %t136 = phi i1 [ true, %logic.from6293 ], [ %t135, %logic.rend6296 ] - br label %logic.from6297 -logic.from6297: - br i1 %t136, label %logic.end6299, label %logic.rhs6298 -logic.rhs6298: - %t137 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.4020, i64 2, i64 0 }, ptr %a139 - %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) - %t141 = icmp ne i32 %t140, 0 - br label %logic.rend6300 -logic.rend6300: - br label %logic.end6299 -logic.end6299: - %t142 = phi i1 [ true, %logic.from6297 ], [ %t141, %logic.rend6300 ] - br i1 %t142, label %then6301, label %endif6303 -then6301: - %t143 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.4021, i64 43, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t147, ptr %a25 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - br label %endif6303 -endif6303: - br label %endif6281 -endif6281: - %t150 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t151 = getelementptr inbounds %S.ast.Type, ptr %t150, i32 0, i32 0 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.4022, i64 6, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from6304 -logic.from6304: - br i1 %t156, label %logic.end6306, label %logic.rhs6305 -logic.rhs6305: - %t157 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t158 = getelementptr inbounds %S.ast.Type, ptr %t157, i32 0, i32 0 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.4023, 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.rend6307 -logic.rend6307: - br label %logic.end6306 -logic.end6306: - %t164 = phi i1 [ true, %logic.from6304 ], [ %t163, %logic.rend6307 ] - br label %logic.from6308 -logic.from6308: - br i1 %t164, label %logic.rhs6309, label %logic.end6310 -logic.rhs6309: - %t165 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4024, i64 2, i64 0 }, ptr %a167 - %t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167) - %t169 = icmp ne i32 %t168, 0 - br label %logic.from6311 -logic.from6311: - br i1 %t169, label %logic.end6313, label %logic.rhs6312 -logic.rhs6312: - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4025, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br label %logic.rend6314 -logic.rend6314: - br label %logic.end6313 -logic.end6313: - %t175 = phi i1 [ true, %logic.from6311 ], [ %t174, %logic.rend6314 ] - br label %logic.rend6315 -logic.rend6315: - br label %logic.end6310 -logic.end6310: - %t176 = phi i1 [ false, %logic.from6308 ], [ %t175, %logic.rend6315 ] - br i1 %t176, label %then6316, label %endif6318 -then6316: - %t177 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t177, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.4026, i64 31, i64 0 }, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - %t182 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t181, ptr %a25 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - br label %endif6318 -endif6318: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a5 - %t186 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186) - call void @finch_str_drop(ptr %a25) - ret void -} - -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 - %a68 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Type, align 16 - %a113 = alloca %S.gen.Val, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a149 = alloca %S.gen.Val, align 16 - %a178 = alloca %S.ast.Type, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.gen.Val, align 16 - %a207 = alloca %S.ast.Node, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a233 = alloca %S.ast.Node, align 16 - %a237 = alloca %S.gen.Val, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca %S.ast.Type, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a304 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - store ptr %p2, ptr %a3 - %t4 = load ptr, ptr %a2 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6319, label %ok6320 -panic6319: - call void @finch_panic(ptr @.str.4027, i64 3462, ptr @.str.4028) - unreachable -ok6320: - %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 %panic6321, label %ok6322 -panic6321: - call void @finch_panic(ptr @.str.4029, i64 3462, ptr @.str.4030) - unreachable -ok6322: - %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 %then6323, label %endif6325 -then6323: - ret i1 true -endif6325: - %t13 = load ptr, ptr %a2 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic6326, label %ok6327 -panic6326: - call void @finch_panic(ptr @.str.4031, i64 3465, ptr @.str.4032) - unreachable -ok6327: - %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.from6328 -logic.from6328: - br i1 %t17, label %logic.rhs6329, label %logic.end6330 -logic.rhs6329: - %t18 = load ptr, ptr %a3 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6331, label %ok6332 -panic6331: - call void @finch_panic(ptr @.str.4033, i64 3465, ptr @.str.4034) - unreachable -ok6332: - %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.rend6333 -logic.rend6333: - br label %logic.end6330 -logic.end6330: - %t23 = phi i1 [ false, %logic.from6328 ], [ %t22, %logic.rend6333 ] - br i1 %t23, label %then6334, label %endif6336 -then6334: - %t24 = load ptr, ptr %a2 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic6337, label %ok6338 -panic6337: - call void @finch_panic(ptr @.str.4035, i64 3468, ptr @.str.4036) - unreachable -ok6338: - %t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3 - %t27 = load i1, ptr %t26 - br label %logic.from6339 -logic.from6339: - br i1 %t27, label %logic.rhs6340, label %logic.end6341 -logic.rhs6340: - %t28 = load ptr, ptr %a3 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic6342, label %ok6343 -panic6342: - call void @finch_panic(ptr @.str.4037, i64 3468, ptr @.str.4038) - unreachable -ok6343: - %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.rend6344 -logic.rend6344: - br label %logic.end6341 -logic.end6341: - %t33 = phi i1 [ false, %logic.from6339 ], [ %t32, %logic.rend6344 ] - br label %logic.from6345 -logic.from6345: - br i1 %t33, label %logic.rhs6346, label %logic.end6347 -logic.rhs6346: - %t34 = load ptr, ptr %a2 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic6348, label %ok6349 -panic6348: - call void @finch_panic(ptr @.str.4039, i64 3468, ptr @.str.4040) - unreachable -ok6349: - %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 %panic6350, label %ok6351 -panic6350: - call void @finch_panic(ptr @.str.4041, i64 3468, ptr @.str.4042) - unreachable -ok6351: - %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 %panic6352, label %ok6353 -panic6352: - call void @finch_panic(ptr @.str.4043, i64 3468, ptr @.str.4044) - unreachable -ok6353: - %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.rend6354 -logic.rend6354: - br label %logic.end6347 -logic.end6347: - %t47 = phi i1 [ false, %logic.from6345 ], [ %t46, %logic.rend6354 ] - br i1 %t47, label %then6355, label %endif6357 -then6355: - %t48 = load ptr, ptr %a2 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic6358, label %ok6359 -panic6358: - call void @finch_panic(ptr @.str.4045, i64 3469, ptr @.str.4046) - unreachable -ok6359: - %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 %panic6360, label %ok6361 -panic6360: - call void @finch_panic(ptr @.str.4047, i64 3469, ptr @.str.4048) - unreachable -ok6361: - %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 %panic6362, label %ok6363 -panic6362: - call void @finch_panic(ptr @.str.4049, i64 3469, ptr @.str.4050) - unreachable -ok6363: - %t67 = load %S.gen.Val, ptr %t65 - store %S.gen.Val %t64, ptr %t65 - store %S.gen.Val %t67, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - ret i1 true -endif6357: - %t69 = load ptr, ptr %a3 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic6364, label %ok6365 -panic6364: - call void @finch_panic(ptr @.str.4051, i64 3472, ptr @.str.4052) - unreachable -ok6365: - %t71 = getelementptr inbounds %S.gen.Val, ptr %t69, i32 0, i32 3 - %t72 = load i1, ptr %t71 - br label %logic.from6366 -logic.from6366: - br i1 %t72, label %logic.rhs6367, label %logic.end6368 -logic.rhs6367: - %t73 = load ptr, ptr %a2 - %t74 = icmp eq ptr %t73, null - br i1 %t74, label %panic6369, label %ok6370 -panic6369: - call void @finch_panic(ptr @.str.4053, i64 3472, ptr @.str.4054) - unreachable -ok6370: - %t75 = getelementptr inbounds %S.gen.Val, ptr %t73, i32 0, i32 3 - %t76 = load i1, ptr %t75 - %t77 = xor i1 %t76, true - br label %logic.rend6371 -logic.rend6371: - br label %logic.end6368 -logic.end6368: - %t78 = phi i1 [ false, %logic.from6366 ], [ %t77, %logic.rend6371 ] - br label %logic.from6372 -logic.from6372: - br i1 %t78, label %logic.rhs6373, label %logic.end6374 -logic.rhs6373: - %t79 = load ptr, ptr %a3 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic6375, label %ok6376 -panic6375: - call void @finch_panic(ptr @.str.4055, i64 3472, ptr @.str.4056) - unreachable -ok6376: - %t81 = getelementptr inbounds %S.gen.Val, ptr %t79, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = load ptr, ptr %a3 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic6377, label %ok6378 -panic6377: - call void @finch_panic(ptr @.str.4057, i64 3472, ptr @.str.4058) - unreachable -ok6378: - %t85 = getelementptr inbounds %S.gen.Val, ptr %t83, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - %t87 = load ptr, ptr %a2 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic6379, label %ok6380 -panic6379: - call void @finch_panic(ptr @.str.4059, i64 3472, ptr @.str.4060) - unreachable -ok6380: - %t89 = getelementptr inbounds %S.gen.Val, ptr %t87, i32 0, i32 1 - %t90 = load %S.ast.Type, ptr %t89 - %t91 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t82, %S.ast.Type %t86, %S.ast.Type %t90) - br label %logic.rend6381 -logic.rend6381: - br label %logic.end6374 -logic.end6374: - %t92 = phi i1 [ false, %logic.from6372 ], [ %t91, %logic.rend6381 ] - br i1 %t92, label %then6382, label %endif6384 -then6382: - %t93 = load ptr, ptr %a3 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic6385, label %ok6386 -panic6385: - call void @finch_panic(ptr @.str.4061, i64 3473, ptr @.str.4062) - unreachable -ok6386: - %t95 = getelementptr inbounds %S.gen.Val, ptr %t93, i32 0, i32 0 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load ptr, ptr %a2 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic6387, label %ok6388 -panic6387: - call void @finch_panic(ptr @.str.4063, i64 3473, ptr @.str.4064) - unreachable -ok6388: - %t103 = getelementptr inbounds %S.gen.Val, ptr %t101, i32 0, i32 1 - %t104 = load %S.ast.Type, ptr %t103 - store %S.ast.Type %t104, ptr %a105 - call void @finch.copy.S_ast_Type(ptr %a106, ptr %a105) - %t107 = load %S.ast.Type, ptr %a106 - %t108 = insertvalue %S.gen.Val %t100, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - %t110 = load ptr, ptr %a3 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic6389, label %ok6390 -panic6389: - call void @finch_panic(ptr @.str.4065, i64 3473, ptr @.str.4066) - unreachable -ok6390: - %t112 = load %S.gen.Val, ptr %t110 - store %S.gen.Val %t109, ptr %t110 - store %S.gen.Val %t112, ptr %a113 - call void @finch.drop.S_gen_Val(ptr %a113) - ret i1 true -endif6384: - %t114 = load ptr, ptr %a2 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic6391, label %ok6392 -panic6391: - call void @finch_panic(ptr @.str.4067, i64 3476, ptr @.str.4068) - unreachable -ok6392: - %t116 = getelementptr inbounds %S.gen.Val, ptr %t114, i32 0, i32 1 - %t117 = load %S.ast.Type, ptr %t116 - %t118 = load ptr, ptr %a3 - %t119 = icmp eq ptr %t118, null - br i1 %t119, label %panic6393, label %ok6394 -panic6393: - call void @finch_panic(ptr @.str.4069, i64 3476, ptr @.str.4070) - unreachable -ok6394: - %t120 = getelementptr inbounds %S.gen.Val, ptr %t118, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.widens(%S.ast.Type %t117, %S.ast.Type %t121) - br i1 %t122, label %then6395, label %endif6397 -then6395: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a2 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic6398, label %ok6399 -panic6398: - call void @finch_panic(ptr @.str.4071, i64 3477, ptr @.str.4072) - unreachable -ok6399: - %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 0 - %t127 = load { ptr, i64, i64 }, ptr %t126 - %t128 = load ptr, ptr %a2 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic6400, label %ok6401 -panic6400: - call void @finch_panic(ptr @.str.4073, i64 3477, ptr @.str.4074) - unreachable -ok6401: - %t130 = getelementptr inbounds %S.gen.Val, ptr %t128, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = load ptr, ptr %a3 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic6402, label %ok6403 -panic6402: - call void @finch_panic(ptr @.str.4075, i64 3477, ptr @.str.4076) - unreachable -ok6403: - %t134 = getelementptr inbounds %S.gen.Val, ptr %t132, i32 0, i32 1 - %t135 = load %S.ast.Type, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t127, %S.ast.Type %t131, %S.ast.Type %t135) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t136, 0 - %t138 = load ptr, ptr %a3 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic6404, label %ok6405 -panic6404: - call void @finch_panic(ptr @.str.4077, i64 3477, ptr @.str.4078) - unreachable -ok6405: - %t140 = getelementptr inbounds %S.gen.Val, ptr %t138, i32 0, i32 1 - %t141 = load %S.ast.Type, ptr %t140 - store %S.ast.Type %t141, ptr %a142 - call void @finch.copy.S_ast_Type(ptr %a143, ptr %a142) - %t144 = load %S.ast.Type, ptr %a143 - %t145 = insertvalue %S.gen.Val %t137, %S.ast.Type %t144, 1 - %t146 = load ptr, ptr %a2 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6406, label %ok6407 -panic6406: - call void @finch_panic(ptr @.str.4079, i64 3477, ptr @.str.4080) - unreachable -ok6407: - %t148 = load %S.gen.Val, ptr %t146 - store %S.gen.Val %t145, ptr %t146 - store %S.gen.Val %t148, ptr %a149 - call void @finch.drop.S_gen_Val(ptr %a149) - ret i1 true -endif6397: - %t150 = load ptr, ptr %a3 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic6408, label %ok6409 -panic6408: - call void @finch_panic(ptr @.str.4081, i64 3480, ptr @.str.4082) - unreachable -ok6409: - %t152 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 1 - %t153 = load %S.ast.Type, ptr %t152 - %t154 = load ptr, ptr %a2 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic6410, label %ok6411 -panic6410: - call void @finch_panic(ptr @.str.4083, i64 3480, ptr @.str.4084) - unreachable -ok6411: - %t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 1 - %t157 = load %S.ast.Type, ptr %t156 - %t158 = call i1 @finch.gen.widens(%S.ast.Type %t153, %S.ast.Type %t157) - br i1 %t158, label %then6412, label %endif6414 -then6412: - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a3 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic6415, label %ok6416 -panic6415: - call void @finch_panic(ptr @.str.4085, i64 3481, ptr @.str.4086) - unreachable -ok6416: - %t162 = getelementptr inbounds %S.gen.Val, ptr %t160, i32 0, i32 0 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = load ptr, ptr %a3 - %t165 = icmp eq ptr %t164, null - br i1 %t165, label %panic6417, label %ok6418 -panic6417: - call void @finch_panic(ptr @.str.4087, i64 3481, ptr @.str.4088) - unreachable -ok6418: - %t166 = getelementptr inbounds %S.gen.Val, ptr %t164, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load ptr, ptr %a2 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic6419, label %ok6420 -panic6419: - call void @finch_panic(ptr @.str.4089, i64 3481, ptr @.str.4090) - unreachable -ok6420: - %t170 = getelementptr inbounds %S.gen.Val, ptr %t168, i32 0, i32 1 - %t171 = load %S.ast.Type, ptr %t170 - %t172 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t159, { ptr, i64, i64 } %t163, %S.ast.Type %t167, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load ptr, ptr %a2 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic6421, label %ok6422 -panic6421: - call void @finch_panic(ptr @.str.4091, i64 3481, ptr @.str.4092) - unreachable -ok6422: - %t176 = getelementptr inbounds %S.gen.Val, ptr %t174, i32 0, i32 1 - %t177 = load %S.ast.Type, ptr %t176 - store %S.ast.Type %t177, ptr %a178 - call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) - %t180 = load %S.ast.Type, ptr %a179 - %t181 = insertvalue %S.gen.Val %t173, %S.ast.Type %t180, 1 - %t182 = load ptr, ptr %a3 - %t183 = icmp eq ptr %t182, null - br i1 %t183, label %panic6423, label %ok6424 -panic6423: - call void @finch_panic(ptr @.str.4093, i64 3481, ptr @.str.4094) - unreachable -ok6424: - %t184 = load %S.gen.Val, ptr %t182 - store %S.gen.Val %t181, ptr %t182 - store %S.gen.Val %t184, ptr %a185 - call void @finch.drop.S_gen_Val(ptr %a185) - ret i1 true -endif6414: - ret i1 false -endif6336: - %t186 = load ptr, ptr %a2 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic6425, label %ok6426 -panic6425: - call void @finch_panic(ptr @.str.4095, i64 3486, ptr @.str.4096) - unreachable -ok6426: - %t188 = getelementptr inbounds %S.gen.Val, ptr %t186, i32 0, i32 1 - %t189 = load %S.ast.Type, ptr %t188 - %t190 = call i1 @finch.gen.isInt(%S.ast.Type %t189) - br label %logic.from6427 -logic.from6427: - br i1 %t190, label %logic.rhs6428, label %logic.end6429 -logic.rhs6428: - %t191 = load ptr, ptr %a3 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic6430, label %ok6431 -panic6430: - call void @finch_panic(ptr @.str.4097, i64 3486, ptr @.str.4098) - unreachable -ok6431: - %t193 = getelementptr inbounds %S.gen.Val, ptr %t191, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br label %logic.rend6432 -logic.rend6432: - br label %logic.end6429 -logic.end6429: - %t196 = phi i1 [ false, %logic.from6427 ], [ %t195, %logic.rend6432 ] - br i1 %t196, label %then6433, label %endif6435 -then6433: - %t197 = load ptr, ptr %a1 - %t198 = load ptr, ptr %a2 - %t199 = icmp eq ptr %t198, null - br i1 %t199, label %panic6436, label %ok6437 -panic6436: - call void @finch_panic(ptr @.str.4099, i64 3487, ptr @.str.4100) - unreachable -ok6437: - %t200 = load %S.gen.Val, ptr %t198 - %t201 = load ptr, ptr %a3 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic6438, label %ok6439 -panic6438: - call void @finch_panic(ptr @.str.4101, i64 3487, ptr @.str.4102) - unreachable -ok6439: - %t203 = getelementptr inbounds %S.gen.Val, ptr %t201, i32 0, i32 1 - %t204 = load %S.ast.Type, ptr %t203 - %t205 = call %S.ast.Node @finch.gen.Node0() - %t206 = call %S.gen.Val @finch.gen.coerce(ptr %t197, %S.gen.Val %t200, %S.ast.Type %t204, %S.ast.Node %t205, { ptr, i64, i64 } { ptr @.str.4103, i64 0, i64 0 }) - store %S.ast.Node %t205, ptr %a207 - call void @finch.drop.S_ast_Node(ptr %a207) - %t208 = load ptr, ptr %a2 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic6440, label %ok6441 -panic6440: - call void @finch_panic(ptr @.str.4104, i64 3487, ptr @.str.4105) - unreachable -ok6441: - %t210 = load %S.gen.Val, ptr %t208 - store %S.gen.Val %t206, ptr %t208 - store %S.gen.Val %t210, ptr %a211 - call void @finch.drop.S_gen_Val(ptr %a211) - ret i1 true -endif6435: - %t212 = load ptr, ptr %a2 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic6442, label %ok6443 -panic6442: - call void @finch_panic(ptr @.str.4106, i64 3490, ptr @.str.4107) - unreachable -ok6443: - %t214 = getelementptr inbounds %S.gen.Val, ptr %t212, i32 0, i32 1 - %t215 = load %S.ast.Type, ptr %t214 - %t216 = call i1 @finch.gen.isFloat(%S.ast.Type %t215) - br label %logic.from6444 -logic.from6444: - br i1 %t216, label %logic.rhs6445, label %logic.end6446 -logic.rhs6445: - %t217 = load ptr, ptr %a3 - %t218 = icmp eq ptr %t217, null - br i1 %t218, label %panic6447, label %ok6448 -panic6447: - call void @finch_panic(ptr @.str.4108, i64 3490, ptr @.str.4109) - unreachable -ok6448: - %t219 = getelementptr inbounds %S.gen.Val, ptr %t217, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %t219 - %t221 = call i1 @finch.gen.isInt(%S.ast.Type %t220) - br label %logic.rend6449 -logic.rend6449: - br label %logic.end6446 -logic.end6446: - %t222 = phi i1 [ false, %logic.from6444 ], [ %t221, %logic.rend6449 ] - br i1 %t222, label %then6450, label %endif6452 -then6450: - %t223 = load ptr, ptr %a1 - %t224 = load ptr, ptr %a3 - %t225 = icmp eq ptr %t224, null - br i1 %t225, label %panic6453, label %ok6454 -panic6453: - call void @finch_panic(ptr @.str.4110, i64 3491, ptr @.str.4111) - unreachable -ok6454: - %t226 = load %S.gen.Val, ptr %t224 - %t227 = load ptr, ptr %a2 - %t228 = icmp eq ptr %t227, null - br i1 %t228, label %panic6455, label %ok6456 -panic6455: - call void @finch_panic(ptr @.str.4112, i64 3491, ptr @.str.4113) - unreachable -ok6456: - %t229 = getelementptr inbounds %S.gen.Val, ptr %t227, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call %S.ast.Node @finch.gen.Node0() - %t232 = call %S.gen.Val @finch.gen.coerce(ptr %t223, %S.gen.Val %t226, %S.ast.Type %t230, %S.ast.Node %t231, { ptr, i64, i64 } { ptr @.str.4114, i64 0, i64 0 }) - store %S.ast.Node %t231, ptr %a233 - call void @finch.drop.S_ast_Node(ptr %a233) - %t234 = load ptr, ptr %a3 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic6457, label %ok6458 -panic6457: - call void @finch_panic(ptr @.str.4115, i64 3491, ptr @.str.4116) - unreachable -ok6458: - %t236 = load %S.gen.Val, ptr %t234 - store %S.gen.Val %t232, ptr %t234 - store %S.gen.Val %t236, ptr %a237 - call void @finch.drop.S_gen_Val(ptr %a237) - ret i1 true -endif6452: - %t238 = load ptr, ptr %a2 - %t239 = icmp eq ptr %t238, null - br i1 %t239, label %panic6459, label %ok6460 -panic6459: - call void @finch_panic(ptr @.str.4117, i64 3494, ptr @.str.4118) - unreachable -ok6460: - %t240 = getelementptr inbounds %S.gen.Val, ptr %t238, i32 0, i32 1 - %t241 = load %S.ast.Type, ptr %t240 - %t242 = call i1 @finch.gen.isFloat(%S.ast.Type %t241) - br label %logic.from6461 -logic.from6461: - br i1 %t242, label %logic.rhs6462, label %logic.end6463 -logic.rhs6462: - %t243 = load ptr, ptr %a3 - %t244 = icmp eq ptr %t243, null - br i1 %t244, label %panic6464, label %ok6465 -panic6464: - call void @finch_panic(ptr @.str.4119, i64 3494, ptr @.str.4120) - unreachable -ok6465: - %t245 = getelementptr inbounds %S.gen.Val, ptr %t243, i32 0, i32 1 - %t246 = load %S.ast.Type, ptr %t245 - %t247 = call i1 @finch.gen.isFloat(%S.ast.Type %t246) - br label %logic.rend6466 -logic.rend6466: - br label %logic.end6463 -logic.end6463: - %t248 = phi i1 [ false, %logic.from6461 ], [ %t247, %logic.rend6466 ] - br i1 %t248, label %then6467, label %endif6469 -then6467: - %t249 = load ptr, ptr %a2 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic6470, label %ok6471 -panic6470: - call void @finch_panic(ptr @.str.4121, i64 3495, ptr @.str.4122) - unreachable -ok6471: - %t251 = getelementptr inbounds %S.gen.Val, ptr %t249, i32 0, i32 1 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4123, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br i1 %t257, label %then6472, label %endif6474 -then6472: - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a2 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic6475, label %ok6476 -panic6475: - call void @finch_panic(ptr @.str.4124, i64 3496, ptr @.str.4125) - unreachable -ok6476: - %t261 = getelementptr inbounds %S.gen.Val, ptr %t259, i32 0, i32 0 - %t262 = load { ptr, i64, i64 }, ptr %t261 - %t263 = load ptr, ptr %a2 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic6477, label %ok6478 -panic6477: - call void @finch_panic(ptr @.str.4126, i64 3496, ptr @.str.4127) - unreachable -ok6478: - %t265 = getelementptr inbounds %S.gen.Val, ptr %t263, i32 0, i32 1 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4128, i64 5, i64 0 }) - %t268 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t258, { ptr, i64, i64 } %t262, %S.ast.Type %t266, %S.ast.Type %t267) - store %S.ast.Type %t267, ptr %a269 - call void @finch.drop.S_ast_Type(ptr %a269) - %t270 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4129, i64 5, i64 0 }) - %t272 = insertvalue %S.gen.Val %t270, %S.ast.Type %t271, 1 - %t273 = load ptr, ptr %a2 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic6479, label %ok6480 -panic6479: - call void @finch_panic(ptr @.str.4130, i64 3496, ptr @.str.4131) - unreachable -ok6480: - %t275 = load %S.gen.Val, ptr %t273 - store %S.gen.Val %t272, ptr %t273 - store %S.gen.Val %t275, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - br label %endif6474 -endif6474: - %t277 = load ptr, ptr %a3 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic6481, label %ok6482 -panic6481: - call void @finch_panic(ptr @.str.4132, i64 3498, ptr @.str.4133) - unreachable -ok6482: - %t279 = getelementptr inbounds %S.gen.Val, ptr %t277, i32 0, i32 1 - %t280 = getelementptr inbounds %S.ast.Type, ptr %t279, i32 0, i32 0 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4134, i64 3, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br i1 %t285, label %then6483, label %endif6485 -then6483: - %t286 = load ptr, ptr %a1 - %t287 = load ptr, ptr %a3 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic6486, label %ok6487 -panic6486: - call void @finch_panic(ptr @.str.4135, i64 3499, ptr @.str.4136) - unreachable -ok6487: - %t289 = getelementptr inbounds %S.gen.Val, ptr %t287, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - %t291 = load ptr, ptr %a3 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic6488, label %ok6489 -panic6488: - call void @finch_panic(ptr @.str.4137, i64 3499, ptr @.str.4138) - unreachable -ok6489: - %t293 = getelementptr inbounds %S.gen.Val, ptr %t291, i32 0, i32 1 - %t294 = load %S.ast.Type, ptr %t293 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4139, i64 5, i64 0 }) - %t296 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t286, { ptr, i64, i64 } %t290, %S.ast.Type %t294, %S.ast.Type %t295) - store %S.ast.Type %t295, ptr %a297 - call void @finch.drop.S_ast_Type(ptr %a297) - %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t296, 0 - %t299 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4140, i64 5, i64 0 }) - %t300 = insertvalue %S.gen.Val %t298, %S.ast.Type %t299, 1 - %t301 = load ptr, ptr %a3 - %t302 = icmp eq ptr %t301, null - br i1 %t302, label %panic6490, label %ok6491 -panic6490: - call void @finch_panic(ptr @.str.4141, i64 3499, ptr @.str.4142) - unreachable -ok6491: - %t303 = load %S.gen.Val, ptr %t301 - store %S.gen.Val %t300, ptr %t301 - store %S.gen.Val %t303, ptr %a304 - call void @finch.drop.S_gen_Val(ptr %a304) - br label %endif6485 -endif6485: - ret i1 true -endif6469: - 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca i64, align 16 - %a155 = alloca i64, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca i64, align 16 - %a313 = alloca i64, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca %S.ast.Type, align 16 - %a384 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4143, 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.from6492 -logic.from6492: - br i1 %t16, label %logic.rhs6493, label %logic.end6494 -logic.rhs6493: - %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.4144, 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.rend6495 -logic.rend6495: - br label %logic.end6494 -logic.end6494: - %t24 = phi i1 [ false, %logic.from6492 ], [ %t23, %logic.rend6495 ] - br label %logic.from6496 -logic.from6496: - br i1 %t24, label %logic.rhs6497, label %logic.end6498 -logic.rhs6497: - %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.4145, 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.rend6499 -logic.rend6499: - br label %logic.end6498 -logic.end6498: - %t32 = phi i1 [ false, %logic.from6496 ], [ %t31, %logic.rend6499 ] - br i1 %t32, label %then6500, label %endif6502 -then6500: - %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.4146, 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.4147, 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.4148, i64 6, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a6 - %t49 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t47, %S.gen.Val %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.4149, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load ptr, ptr %a1 - %t62 = load %S.gen.Val, ptr %a10 - %t63 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t61, %S.gen.Val %t62) - store { ptr, i64, i64 } %t60, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t60, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4150, i64 1, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t74) - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load ptr, ptr %a1 - %t77 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t76, %S.gen.Val %t77) - %t78 = load ptr, ptr %a1 - %t79 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t78, %S.gen.Val %t79) - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a35 - %t82 = call { ptr, i64, i64 } @finch.gen.load(ptr %t80, { ptr, i64, i64 } { ptr @.str.4151, i64 17, i64 0 }, { ptr, i64, i64 } %t81) - %t83 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t82, 0 - %t84 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4152, i64 3, i64 0 }) - %t85 = insertvalue %S.gen.Val %t83, %S.ast.Type %t84, 1 - %t86 = insertvalue %S.gen.Val %t85, i1 true, 2 - call void @finch_str_drop(ptr %a35) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t86 -endif6502: - %t87 = load ptr, ptr %a1 - %t88 = call i1 @finch.gen.unify(ptr %t87, ptr %a6, ptr %a10) - %t89 = xor i1 %t88, true - br i1 %t89, label %then6503, label %endif6505 -then6503: - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a2 - %t92 = load %S.gen.Val, ptr %a6 - %t93 = load %S.gen.Val, ptr %a10 - %t94 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t90, { ptr, i64, i64 } %t91, %S.gen.Val %t92, %S.gen.Val %t93, %S.ast.Node %t94) - br label %endif6505 -endif6505: - %t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = call i1 @finch.gen.isInt(%S.ast.Type %t96) - br i1 %t97, label %then6506, label %endif6508 -then6506: - %t98 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t99 = call ptr @finch_alloc(i64 %t98) - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 0 - store { ptr, i64, i64 } { ptr @.str.4153, i64 1, i64 0 }, ptr %t100 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 1 - store { ptr, i64, i64 } { ptr @.str.4154, i64 1, i64 0 }, ptr %t101 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 2 - store { ptr, i64, i64 } { ptr @.str.4155, i64 1, i64 0 }, ptr %t102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 3 - store { ptr, i64, i64 } { ptr @.str.4156, i64 1, i64 0 }, ptr %t103 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 4 - store { ptr, i64, i64 } { ptr @.str.4157, i64 1, i64 0 }, ptr %t104 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 5 - store { ptr, i64, i64 } { ptr @.str.4158, i64 1, i64 0 }, ptr %t105 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 6 - store { ptr, i64, i64 } { ptr @.str.4159, i64 1, i64 0 }, ptr %t106 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 7 - store { ptr, i64, i64 } { ptr @.str.4160, i64 1, i64 0 }, ptr %t107 - %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 8 - store { ptr, i64, i64 } { ptr @.str.4161, i64 2, i64 0 }, ptr %t108 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 9 - store { ptr, i64, i64 } { ptr @.str.4162, i64 2, i64 0 }, ptr %t109 - %t110 = insertvalue { ptr, i64, i64 } undef, ptr %t99, 0 - %t111 = insertvalue { ptr, i64, i64 } %t110, i64 10, 1 - %t112 = insertvalue { ptr, i64, i64 } %t111, i64 10, 2 - store { ptr, i64, i64 } %t112, ptr %a113 - %t114 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t115 = call ptr @finch_alloc(i64 %t114) - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 0 - store { ptr, i64, i64 } { ptr @.str.4163, i64 3, i64 0 }, ptr %t116 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 1 - store { ptr, i64, i64 } { ptr @.str.4164, i64 3, i64 0 }, ptr %t117 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 2 - store { ptr, i64, i64 } { ptr @.str.4165, i64 3, i64 0 }, ptr %t118 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 3 - store { ptr, i64, i64 } { ptr @.str.4166, i64 4, i64 0 }, ptr %t119 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 4 - store { ptr, i64, i64 } { ptr @.str.4167, i64 4, i64 0 }, ptr %t120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 5 - store { ptr, i64, i64 } { ptr @.str.4168, i64 3, i64 0 }, ptr %t121 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 6 - store { ptr, i64, i64 } { ptr @.str.4169, i64 2, i64 0 }, ptr %t122 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 7 - store { ptr, i64, i64 } { ptr @.str.4170, i64 3, i64 0 }, ptr %t123 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 8 - store { ptr, i64, i64 } { ptr @.str.4171, i64 3, i64 0 }, ptr %t124 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 9 - store { ptr, i64, i64 } { ptr @.str.4172, i64 4, i64 0 }, ptr %t125 - %t126 = insertvalue { ptr, i64, i64 } undef, ptr %t115, 0 - %t127 = insertvalue { ptr, i64, i64 } %t126, i64 10, 1 - %t128 = insertvalue { ptr, i64, i64 } %t127, i64 10, 2 - store { ptr, i64, i64 } %t128, ptr %a129 - %t130 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t131) - br i1 %t132, label %then6509, label %endif6511 -then6509: - %t133 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t134 = call ptr @finch_alloc(i64 %t133) - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 0 - store { ptr, i64, i64 } { ptr @.str.4173, i64 3, i64 0 }, ptr %t135 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 1 - store { ptr, i64, i64 } { ptr @.str.4174, i64 3, i64 0 }, ptr %t136 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 2 - store { ptr, i64, i64 } { ptr @.str.4175, i64 3, i64 0 }, ptr %t137 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 3 - store { ptr, i64, i64 } { ptr @.str.4176, i64 4, i64 0 }, ptr %t138 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 4 - store { ptr, i64, i64 } { ptr @.str.4177, i64 4, i64 0 }, ptr %t139 - %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 5 - store { ptr, i64, i64 } { ptr @.str.4178, i64 3, i64 0 }, ptr %t140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 6 - store { ptr, i64, i64 } { ptr @.str.4179, i64 2, i64 0 }, ptr %t141 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 7 - store { ptr, i64, i64 } { ptr @.str.4180, i64 3, i64 0 }, ptr %t142 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 8 - store { ptr, i64, i64 } { ptr @.str.4181, i64 3, i64 0 }, ptr %t143 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 9 - store { ptr, i64, i64 } { ptr @.str.4182, i64 4, i64 0 }, ptr %t144 - %t145 = insertvalue { ptr, i64, i64 } undef, ptr %t134, 0 - %t146 = insertvalue { ptr, i64, i64 } %t145, i64 10, 1 - %t147 = insertvalue { ptr, i64, i64 } %t146, i64 10, 2 - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t147, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_str(ptr %a149) - br label %endif6511 -endif6511: - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a152 - %t153 = load i64, ptr %t150 - %t154 = load ptr, ptr %a113 - store i64 0, ptr %a155 - br label %find.cond6512 -find.cond6512: - %t156 = load i64, ptr %a155 - %t157 = icmp slt i64 %t156, %t153 - br i1 %t157, label %find.body6513, label %find.end6516 -find.body6513: - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i64 %t156 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } %t151, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br i1 %t163, label %find.hit6514, label %find.next6515 -find.hit6514: - store i64 %t156, ptr %a152 - br label %find.end6516 -find.next6515: - %t164 = add i64 %t156, 1 - store i64 %t164, ptr %a155 - br label %find.cond6512 -find.end6516: - %t165 = load i64, ptr %a152 - store i64 %t165, ptr %a166 - %t167 = load i64, ptr %a166 - %t168 = icmp slt i64 %t167, 0 - br i1 %t168, label %then6517, label %endif6519 -then6517: - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a2 - %t171 = load %S.gen.Val, ptr %a6 - %t172 = load %S.gen.Val, ptr %a10 - %t173 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t169, { ptr, i64, i64 } %t170, %S.gen.Val %t171, %S.gen.Val %t172, %S.ast.Node %t173) - br label %endif6519 -endif6519: - %t174 = load ptr, ptr %a1 - %t175 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t174, %S.ast.Type %t176) - store { ptr, i64, i64 } %t177, ptr %a178 - %t179 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4183, 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.from6520 -logic.from6520: - br i1 %t183, label %logic.end6522, label %logic.rhs6521 -logic.rhs6521: - %t184 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.4184, i64 1, i64 0 }, ptr %a186 - %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) - %t188 = icmp ne i32 %t187, 0 - br label %logic.rend6523 -logic.rend6523: - br label %logic.end6522 -logic.end6522: - %t189 = phi i1 [ true, %logic.from6520 ], [ %t188, %logic.rend6523 ] - br i1 %t189, label %then6524, label %endif6526 -then6524: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t191 = load i1, ptr %t190 - br label %logic.from6527 -logic.from6527: - br i1 %t191, label %logic.rhs6528, label %logic.end6529 -logic.rhs6528: - %t192 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4185, i64 1, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br label %logic.rend6530 -logic.rend6530: - br label %logic.end6529 -logic.end6529: - %t198 = phi i1 [ false, %logic.from6527 ], [ %t197, %logic.rend6530 ] - br i1 %t198, label %then6531, label %endif6533 -then6531: - %t199 = load ptr, ptr %a1 - %t200 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t199, %S.ast.Node %t200, { ptr, i64, i64 } { ptr @.str.4186, i64 16, i64 0 }) - br label %endif6533 -endif6533: - %t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t202 = load i1, ptr %t201 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6534, label %endif6536 -then6534: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4187, i64 8, i64 0 }, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a207 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.4188, i64 1, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4189, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = call { ptr, i64, i64 } @finch.gen.op(ptr %t205, { ptr, i64, i64 } %t227) - store { ptr, i64, i64 } %t227, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load %S.ast.Node, ptr %a11 - call void @finch.gen.panicIf(ptr %t204, { ptr, i64, i64 } %t228, { ptr, i64, i64 } { ptr @.str.4190, i64 16, i64 0 }, %S.ast.Node %t230) - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_drop(ptr %a231) - br label %endif6536 -endif6536: - br label %endif6526 -endif6526: - %t232 = load ptr, ptr %a1 - %t233 = load i64, ptr %a166 - %t234 = load { ptr, i64, i64 }, ptr %a129 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range6537, label %inrange6538 -range6537: - call void @finch_panic_index(ptr @.str.4191, i64 3540, i64 %t233, i64 %t235) - unreachable -inrange6538: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t233 - %t239 = load { ptr, i64, i64 }, ptr %t238 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.4192, i64 1, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4193, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.4194, i64 2, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.op(ptr %t232, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t274, 0 - %t277 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = insertvalue %S.gen.Val %t276, %S.ast.Type %t281, 1 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.arr_str(ptr %a129) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t282 -endif6508: - %t283 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t284 = load %S.ast.Type, ptr %t283 - %t285 = call i1 @finch.gen.isFloat(%S.ast.Type %t284) - br i1 %t285, label %then6539, label %endif6541 -then6539: - %t286 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t287 = call ptr @finch_alloc(i64 %t286) - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 0 - store { ptr, i64, i64 } { ptr @.str.4195, i64 1, i64 0 }, ptr %t288 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 1 - store { ptr, i64, i64 } { ptr @.str.4196, i64 1, i64 0 }, ptr %t289 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 2 - store { ptr, i64, i64 } { ptr @.str.4197, i64 1, i64 0 }, ptr %t290 - %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 3 - store { ptr, i64, i64 } { ptr @.str.4198, i64 1, i64 0 }, ptr %t291 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 4 - store { ptr, i64, i64 } { ptr @.str.4199, i64 1, i64 0 }, ptr %t292 - %t293 = insertvalue { ptr, i64, i64 } undef, ptr %t287, 0 - %t294 = insertvalue { ptr, i64, i64 } %t293, i64 5, 1 - %t295 = insertvalue { ptr, i64, i64 } %t294, i64 5, 2 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t298 = call ptr @finch_alloc(i64 %t297) - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 0 - store { ptr, i64, i64 } { ptr @.str.4200, i64 4, i64 0 }, ptr %t299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 1 - store { ptr, i64, i64 } { ptr @.str.4201, i64 4, i64 0 }, ptr %t300 - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 2 - store { ptr, i64, i64 } { ptr @.str.4202, i64 4, i64 0 }, ptr %t301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 3 - store { ptr, i64, i64 } { ptr @.str.4203, i64 4, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 4 - store { ptr, i64, i64 } { ptr @.str.4204, i64 4, i64 0 }, ptr %t303 - %t304 = insertvalue { ptr, i64, i64 } undef, ptr %t298, 0 - %t305 = insertvalue { ptr, i64, i64 } %t304, i64 5, 1 - %t306 = insertvalue { ptr, i64, i64 } %t305, i64 5, 2 - store { ptr, i64, i64 } %t306, ptr %a307 - %t308 = getelementptr inbounds { ptr, i64, i64 }, ptr %a296, i32 0, i32 1 - %t309 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a310 - %t311 = load i64, ptr %t308 - %t312 = load ptr, ptr %a296 - store i64 0, ptr %a313 - br label %find.cond6542 -find.cond6542: - %t314 = load i64, ptr %a313 - %t315 = icmp slt i64 %t314, %t311 - br i1 %t315, label %find.body6543, label %find.end6546 -find.body6543: - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t314 - %t317 = load { ptr, i64, i64 }, ptr %t316 - store { ptr, i64, i64 } %t317, ptr %a318 - store { ptr, i64, i64 } %t309, ptr %a319 - %t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319) - %t321 = icmp ne i32 %t320, 0 - br i1 %t321, label %find.hit6544, label %find.next6545 -find.hit6544: - store i64 %t314, ptr %a310 - br label %find.end6546 -find.next6545: - %t322 = add i64 %t314, 1 - store i64 %t322, ptr %a313 - br label %find.cond6542 -find.end6546: - %t323 = load i64, ptr %a310 - store i64 %t323, ptr %a324 - %t325 = load i64, ptr %a324 - %t326 = icmp slt i64 %t325, 0 - br i1 %t326, label %then6547, label %endif6549 -then6547: - %t327 = load ptr, ptr %a1 - %t328 = load { ptr, i64, i64 }, ptr %a2 - %t329 = load %S.gen.Val, ptr %a6 - %t330 = load %S.gen.Val, ptr %a10 - %t331 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t327, { ptr, i64, i64 } %t328, %S.gen.Val %t329, %S.gen.Val %t330, %S.ast.Node %t331) - br label %endif6549 -endif6549: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %a307 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range6550, label %inrange6551 -range6550: - call void @finch_panic_index(ptr @.str.4205, i64 3549, i64 %t333, i64 %t335) - unreachable -inrange6551: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t333 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a341 - store { ptr, i64, i64 } { ptr @.str.4206, i64 1, i64 0 }, ptr %a342 - call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a340 - %t344 = load ptr, ptr %a1 - %t345 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t344, %S.ast.Type %t346) - store { ptr, i64, i64 } %t343, ptr %a349 - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350) - store { ptr, i64, i64 } %t343, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t347, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t353, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.4207, i64 1, i64 0 }, ptr %a356 - call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) - store { ptr, i64, i64 } %t353, ptr %a357 - call void @finch_str_drop(ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t360 = load { ptr, i64, i64 }, ptr %t359 - store { ptr, i64, i64 } %t358, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t358, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4208, i64 2, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - %t378 = call { ptr, i64, i64 } @finch.gen.op(ptr %t332, { ptr, i64, i64 } %t377) - store { ptr, i64, i64 } %t377, ptr %a379 - call void @finch_str_drop(ptr %a379) - %t380 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t378, 0 - %t381 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t382 = load %S.ast.Type, ptr %t381 - store %S.ast.Type %t382, ptr %a383 - call void @finch.copy.S_ast_Type(ptr %a384, ptr %a383) - %t385 = load %S.ast.Type, ptr %a384 - %t386 = insertvalue %S.gen.Val %t380, %S.ast.Type %t385, 1 - call void @finch.drop.arr_str(ptr %a307) - call void @finch.drop.arr_str(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t386 -endif6541: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a2 - %t389 = load %S.gen.Val, ptr %a6 - %t390 = load %S.gen.Val, ptr %a10 - %t391 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t387, { ptr, i64, i64 } %t388, %S.gen.Val %t389, %S.gen.Val %t390, %S.ast.Node %t391) - %t392 = load %S.gen.Val, ptr %a6 - call void @finch.drop.S_gen_Val(ptr %a10) - ret %S.gen.Val %t392 -} - -define internal %S.gen.Val @finch.gen.compare(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %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 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca i64, align 16 - %a330 = alloca i64, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4209, 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.from6552 -logic.from6552: - br i1 %t16, label %logic.end6554, label %logic.rhs6553 -logic.rhs6553: - %t17 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4210, 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.rend6555 -logic.rend6555: - br label %logic.end6554 -logic.end6554: - %t22 = phi i1 [ true, %logic.from6552 ], [ %t21, %logic.rend6555 ] - 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.4211, 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.from6556 -logic.from6556: - br i1 %t30, label %logic.end6558, label %logic.rhs6557 -logic.rhs6557: - %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.4212, 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.rend6559 -logic.rend6559: - br label %logic.end6558 -logic.end6558: - %t38 = phi i1 [ true, %logic.from6556 ], [ %t37, %logic.rend6559 ] - br label %logic.from6560 -logic.from6560: - br i1 %t38, label %logic.end6562, label %logic.rhs6561 -logic.rhs6561: - %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.4213, 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.rend6563 -logic.rend6563: - br label %logic.end6562 -logic.end6562: - %t46 = phi i1 [ true, %logic.from6560 ], [ %t45, %logic.rend6563 ] - br label %logic.from6564 -logic.from6564: - br i1 %t46, label %logic.end6566, label %logic.rhs6565 -logic.rhs6565: - %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.4214, 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.rend6567 -logic.rend6567: - br label %logic.end6566 -logic.end6566: - %t54 = phi i1 [ true, %logic.from6564 ], [ %t53, %logic.rend6567 ] - br i1 %t54, label %then6568, label %endif6570 -then6568: - %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.4215, 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.from6571 -logic.from6571: - br i1 %t61, label %logic.end6573, label %logic.rhs6572 -logic.rhs6572: - %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.4216, 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.rend6574 -logic.rend6574: - br label %logic.end6573 -logic.end6573: - %t69 = phi i1 [ true, %logic.from6571 ], [ %t68, %logic.rend6574 ] - br i1 %t69, label %then6575, label %endif6577 -then6575: - %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.4217, i64 59, i64 0 }) - br label %endif6577 -endif6577: - %t72 = load i1, ptr %a23 - %t73 = xor i1 %t72, true - br i1 %t73, label %then6578, label %endif6580 -then6578: - %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 %endif6580 -endif6580: - store { ptr, i64, i64 } { ptr @.str.4218, 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.4219, 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 %then6581, label %endif6583 -then6581: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4220, i64 2, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6583 -endif6583: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4221, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4222, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4223, i64 2, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t109, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t109, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t117, 0 - %t120 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4224, i64 4, i64 0 }) - %t121 = insertvalue %S.gen.Val %t119, %S.ast.Type %t120, 1 - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t121 -endif6570: - %t122 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i32 0, i32 0 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.4225, 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.from6584 -logic.from6584: - br i1 %t128, label %logic.rhs6585, label %logic.end6586 -logic.rhs6585: - %t129 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t130 = getelementptr inbounds %S.ast.Type, ptr %t129, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4226, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6587 -logic.rend6587: - br label %logic.end6586 -logic.end6586: - %t136 = phi i1 [ false, %logic.from6584 ], [ %t135, %logic.rend6587 ] - br i1 %t136, label %then6588, label %endif6590 -then6588: - %t137 = load i1, ptr %a23 - br i1 %t137, label %then6591, label %endif6593 -then6591: - %t138 = load ptr, ptr %a1 - %t139 = load ptr, ptr %a1 - %t140 = load %S.gen.Val, ptr %a6 - %t141 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t139, %S.gen.Val %t140) - store { ptr, i64, i64 } { ptr @.str.4227, i64 27, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4228, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a10 - %t154 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t152, %S.gen.Val %t153) - store { ptr, i64, i64 } %t151, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t151, ptr %a158 - call void @finch_str_drop(ptr %a158) - store { ptr, i64, i64 } %t154, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4229, i64 1, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - store { ptr, i64, i64 } %t160, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load { ptr, i64, i64 }, ptr %a161 - %t166 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t165) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4230, i64 2, i64 0 }, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4231, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then6594, label %endif6596 -then6594: - %t175 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4232, i64 2, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif6596 -endif6596: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4233, i64 5, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4234, i64 5, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t193, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4235, i64 3, i64 0 }, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t177, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - store { ptr, i64, i64 } %t199, ptr %a201 - %t202 = load ptr, ptr %a1 - %t203 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t202, %S.gen.Val %t203) - %t204 = load ptr, ptr %a1 - %t205 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t204, %S.gen.Val %t205) - %t206 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4236, i64 4, i64 0 }) - %t212 = insertvalue %S.gen.Val %t210, %S.ast.Type %t211, 1 - call void @finch_str_drop(ptr %a201) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t212 -endif6593: - %t213 = load ptr, ptr %a1 - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.Val, ptr %a6 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t214, %S.gen.Val %t215) - store { ptr, i64, i64 } { ptr @.str.4237, i64 28, i64 0 }, ptr %a218 - store { ptr, i64, i64 } %t216, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - store { ptr, i64, i64 } %t221, ptr %a223 - store { ptr, i64, i64 } { ptr @.str.4238, i64 6, i64 0 }, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t221, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - %t227 = load ptr, ptr %a1 - %t228 = load %S.gen.Val, ptr %a10 - %t229 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t227, %S.gen.Val %t228) - store { ptr, i64, i64 } %t226, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t226, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t229, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.4239, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - %t241 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a242 - call void @finch_str_drop(ptr %a242) - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load { ptr, i64, i64 }, ptr %a2 - %t246 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t245, i1 true) - store { ptr, i64, i64 } { ptr @.str.4240, i64 5, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4241, i64 5, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t256, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.4242, i64 3, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = call { ptr, i64, i64 } @finch.gen.op(ptr %t244, { ptr, i64, i64 } %t267) - store { ptr, i64, i64 } %t267, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t268, ptr %a270 - %t271 = load ptr, ptr %a1 - %t272 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t271, %S.gen.Val %t272) - %t273 = load ptr, ptr %a1 - %t274 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t273, %S.gen.Val %t274) - %t275 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_copy(ptr %a277, ptr %a276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - %t279 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t278, 0 - %t280 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4243, i64 4, i64 0 }) - %t281 = insertvalue %S.gen.Val %t279, %S.ast.Type %t280, 1 - call void @finch_str_drop(ptr %a270) - call void @finch_str_drop(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t281 -endif6590: - %t282 = load ptr, ptr %a1 - %t283 = call i1 @finch.gen.unify(ptr %t282, ptr %a6, ptr %a10) - %t284 = xor i1 %t283, true - br i1 %t284, label %then6597, label %endif6599 -then6597: - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a2 - %t287 = load %S.gen.Val, ptr %a6 - %t288 = load %S.gen.Val, ptr %a10 - %t289 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t285, { ptr, i64, i64 } %t286, %S.gen.Val %t287, %S.gen.Val %t288, %S.ast.Node %t289) - br label %endif6599 -endif6599: - %t290 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Type, ptr %t290, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_copy(ptr %a294, ptr %a293) - %t295 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t298 = load %S.ast.Type, ptr %t297 - %t299 = call i1 @finch.gen.isFloat(%S.ast.Type %t298) - br i1 %t299, label %then6600, label %endif6602 -then6600: - %t300 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t301 = call ptr @finch_alloc(i64 %t300) - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 0 - store { ptr, i64, i64 } { ptr @.str.4244, i64 2, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 1 - store { ptr, i64, i64 } { ptr @.str.4245, i64 2, i64 0 }, ptr %t303 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 2 - store { ptr, i64, i64 } { ptr @.str.4246, i64 1, i64 0 }, ptr %t304 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 3 - store { ptr, i64, i64 } { ptr @.str.4247, i64 2, i64 0 }, ptr %t305 - %t306 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 4 - store { ptr, i64, i64 } { ptr @.str.4248, i64 1, i64 0 }, ptr %t306 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 5 - store { ptr, i64, i64 } { ptr @.str.4249, i64 2, i64 0 }, ptr %t307 - %t308 = insertvalue { ptr, i64, i64 } undef, ptr %t301, 0 - %t309 = insertvalue { ptr, i64, i64 } %t308, i64 6, 1 - %t310 = insertvalue { ptr, i64, i64 } %t309, i64 6, 2 - store { ptr, i64, i64 } %t310, ptr %a311 - %t312 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t313 = call ptr @finch_alloc(i64 %t312) - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 0 - store { ptr, i64, i64 } { ptr @.str.4250, i64 3, i64 0 }, ptr %t314 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 1 - store { ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 2 - store { ptr, i64, i64 } { ptr @.str.4252, i64 3, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 3 - store { ptr, i64, i64 } { ptr @.str.4253, i64 3, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 4 - store { ptr, i64, i64 } { ptr @.str.4254, i64 3, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 5 - store { ptr, i64, i64 } { ptr @.str.4255, i64 3, i64 0 }, ptr %t319 - %t320 = insertvalue { ptr, i64, i64 } undef, ptr %t313, 0 - %t321 = insertvalue { ptr, i64, i64 } %t320, i64 6, 1 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 2 - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a311, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a327 - %t328 = load i64, ptr %t325 - %t329 = load ptr, ptr %a311 - store i64 0, ptr %a330 - br label %find.cond6603 -find.cond6603: - %t331 = load i64, ptr %a330 - %t332 = icmp slt i64 %t331, %t328 - br i1 %t332, label %find.body6604, label %find.end6607 -find.body6604: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t329, i64 %t331 - %t334 = load { ptr, i64, i64 }, ptr %t333 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } %t326, ptr %a336 - %t337 = call i32 @finch_str_eq(ptr %a335, ptr %a336) - %t338 = icmp ne i32 %t337, 0 - br i1 %t338, label %find.hit6605, label %find.next6606 -find.hit6605: - store i64 %t331, ptr %a327 - br label %find.end6607 -find.next6606: - %t339 = add i64 %t331, 1 - store i64 %t339, ptr %a330 - br label %find.cond6603 -find.end6607: - %t340 = load i64, ptr %a327 - %t341 = load { ptr, i64, i64 }, ptr %a323 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range6608, label %inrange6609 -range6608: - call void @finch_panic_index(ptr @.str.4257, i64 3595, i64 %t340, i64 %t342) - unreachable -inrange6609: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds { ptr, i64, i64 }, ptr %t344, i64 %t340 - %t346 = load { ptr, i64, i64 }, ptr %t345 - store { ptr, i64, i64 } { ptr @.str.4256, i64 5, i64 0 }, ptr %a348 - store { ptr, i64, i64 } %t346, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4258, i64 1, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load ptr, ptr %a1 - %t357 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t358 = load %S.ast.Type, ptr %t357 - %t359 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t356, %S.ast.Type %t358) - store { ptr, i64, i64 } %t355, ptr %a361 - store { ptr, i64, i64 } %t359, ptr %a362 - call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) - store { ptr, i64, i64 } %t355, ptr %a363 - call void @finch_str_drop(ptr %a363) - store { ptr, i64, i64 } %t359, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4259, i64 1, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.4260, i64 2, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t384 = load { ptr, i64, i64 }, ptr %t383 - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load { ptr, i64, i64 }, ptr %a385 - %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t324, { ptr, i64, i64 } %t389) - store { ptr, i64, i64 } %t389, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 - %t393 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4261, i64 4, i64 0 }) - %t394 = insertvalue %S.gen.Val %t392, %S.ast.Type %t393, 1 - call void @finch.drop.arr_str(ptr %a323) - call void @finch.drop.arr_str(ptr %a311) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t394 -endif6602: - %t395 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t395, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4262, i64 4, i64 0 }, ptr %a397 - %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) - %t399 = icmp ne i32 %t398, 0 - br i1 %t399, label %then6610, label %endif6612 -then6610: - %t400 = load i1, ptr %a23 - %t401 = xor i1 %t400, true - br i1 %t401, label %then6613, label %endif6615 -then6613: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4263, i64 115, i64 0 }) - br label %endif6615 -endif6615: - store { ptr, i64, i64 } { ptr @.str.4264, i64 2, i64 0 }, ptr %a404 - %t405 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t405, ptr %a406 - store { ptr, i64, i64 } { ptr @.str.4265, i64 2, i64 0 }, ptr %a407 - %t408 = call i32 @finch_str_eq(ptr %a406, ptr %a407) - %t409 = icmp ne i32 %t408, 0 - br i1 %t409, label %then6616, label %endif6618 -then6616: - %t410 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4266, i64 2, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t410, ptr %a411 - call void @finch_str_drop(ptr %a411) - br label %endif6618 -endif6618: - %t412 = load ptr, ptr %a1 - %t413 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4267, i64 5, i64 0 }, ptr %a415 - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t417, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.4268, i64 5, i64 0 }, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t417, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - %t423 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t424 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t422, ptr %a426 - store { ptr, i64, i64 } %t424, ptr %a427 - call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) - store { ptr, i64, i64 } %t422, ptr %a428 - call void @finch_str_drop(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a425 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.4269, i64 2, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t434, ptr %a438 - store { ptr, i64, i64 } %t436, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t434, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t412, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t442, 0 - %t445 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4270, i64 4, i64 0 }) - %t446 = insertvalue %S.gen.Val %t444, %S.ast.Type %t445, 1 - call void @finch_str_drop(ptr %a404) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t446 -endif6612: - %t447 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.4271, i64 4, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br label %logic.from6619 -logic.from6619: - br i1 %t451, label %logic.rhs6620, label %logic.end6621 -logic.rhs6620: - %t452 = load i1, ptr %a23 - %t453 = xor i1 %t452, true - br label %logic.rend6622 -logic.rend6622: - br label %logic.end6621 -logic.end6621: - %t454 = phi i1 [ false, %logic.from6619 ], [ %t453, %logic.rend6622 ] - br i1 %t454, label %then6623, label %endif6625 -then6623: - %t455 = load ptr, ptr %a1 - %t456 = load { ptr, i64, i64 }, ptr %a2 - %t457 = load %S.gen.Val, ptr %a6 - %t458 = load %S.gen.Val, ptr %a10 - %t459 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t455, { ptr, i64, i64 } %t456, %S.gen.Val %t457, %S.gen.Val %t458, %S.ast.Node %t459) - br label %endif6625 -endif6625: - %t460 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t461 = load %S.ast.Type, ptr %t460 - %t462 = call i1 @finch.gen.isInt(%S.ast.Type %t461) - %t463 = xor i1 %t462, true - br label %logic.from6626 -logic.from6626: - br i1 %t463, label %logic.rhs6627, label %logic.end6628 -logic.rhs6627: - %t464 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t464, ptr %a465 - store { ptr, i64, i64 } { ptr @.str.4272, i64 4, i64 0 }, ptr %a466 - %t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466) - %t468 = icmp eq i32 %t467, 0 - br label %logic.rend6629 -logic.rend6629: - br label %logic.end6628 -logic.end6628: - %t469 = phi i1 [ false, %logic.from6626 ], [ %t468, %logic.rend6629 ] - br label %logic.from6630 -logic.from6630: - br i1 %t469, label %logic.rhs6631, label %logic.end6632 -logic.rhs6631: - %t470 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.4273, i64 4, i64 0 }, ptr %a472 - %t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472) - %t474 = icmp eq i32 %t473, 0 - br label %logic.rend6633 -logic.rend6633: - br label %logic.end6632 -logic.end6632: - %t475 = phi i1 [ false, %logic.from6630 ], [ %t474, %logic.rend6633 ] - br i1 %t475, label %then6634, label %endif6636 -then6634: - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a2 - %t478 = load %S.gen.Val, ptr %a6 - %t479 = load %S.gen.Val, ptr %a10 - %t480 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t476, { ptr, i64, i64 } %t477, %S.gen.Val %t478, %S.gen.Val %t479, %S.ast.Node %t480) - br label %endif6636 -endif6636: - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a2 - %t483 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call i1 @finch.gen.isSigned(%S.ast.Type %t484) - %t486 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t482, i1 %t485) - store { ptr, i64, i64 } { ptr @.str.4274, i64 5, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.4275, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = load ptr, ptr %a1 - %t498 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t499 = load %S.ast.Type, ptr %t498 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t497, %S.ast.Type %t499) - store { ptr, i64, i64 } %t496, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t496, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.4276, i64 1, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t513 = load { ptr, i64, i64 }, ptr %t512 - store { ptr, i64, i64 } %t511, ptr %a515 - store { ptr, i64, i64 } %t513, ptr %a516 - call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516) - store { ptr, i64, i64 } %t511, ptr %a517 - call void @finch_str_drop(ptr %a517) - %t518 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.4277, i64 2, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t523, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t523, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = call { ptr, i64, i64 } @finch.gen.op(ptr %t481, { ptr, i64, i64 } %t530) - store { ptr, i64, i64 } %t530, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t531, 0 - %t534 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4278, i64 4, i64 0 }) - %t535 = insertvalue %S.gen.Val %t533, %S.ast.Type %t534, 1 - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t535 -} - -define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) { -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 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca i64, align 16 - %a46 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t4 = call ptr @finch_alloc(i64 %t3) - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 - store { ptr, i64, i64 } { ptr @.str.4279, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 - store { ptr, i64, i64 } { ptr @.str.4280, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 - store { ptr, i64, i64 } { ptr @.str.4281, i64 1, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3 - store { ptr, i64, i64 } { ptr @.str.4282, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 - store { ptr, i64, i64 } { ptr @.str.4283, i64 1, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 - store { ptr, i64, i64 } { ptr @.str.4284, 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.4285, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 - store { ptr, i64, i64 } { ptr @.str.4286, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 - store { ptr, i64, i64 } { ptr @.str.4287, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3 - store { ptr, i64, i64 } { ptr @.str.4288, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 - store { ptr, i64, i64 } { ptr @.str.4289, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 - store { ptr, i64, i64 } { ptr @.str.4290, 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 %then6637, label %endif6639 -then6637: - %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.4291, i64 2, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1 - store { ptr, i64, i64 } { ptr @.str.4292, i64 2, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 - store { ptr, i64, i64 } { ptr @.str.4293, i64 3, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 - store { ptr, i64, i64 } { ptr @.str.4294, i64 3, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4 - store { ptr, i64, i64 } { ptr @.str.4295, i64 3, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 - store { ptr, i64, i64 } { ptr @.str.4296, i64 3, i64 0 }, ptr %t35 - %t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0 - %t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1 - %t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2 - %t39 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t38, ptr %a26 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch.drop.arr_str(ptr %a40) - br label %endif6639 -endif6639: - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %a1 - store i64 -1, ptr %a43 - %t44 = load i64, ptr %t41 - %t45 = load ptr, ptr %a14 - store i64 0, ptr %a46 - br label %find.cond6640 -find.cond6640: - %t47 = load i64, ptr %a46 - %t48 = icmp slt i64 %t47, %t44 - br i1 %t48, label %find.body6641, label %find.end6644 -find.body6641: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t47 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } %t42, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %find.hit6642, label %find.next6643 -find.hit6642: - store i64 %t47, ptr %a43 - br label %find.end6644 -find.next6643: - %t55 = add i64 %t47, 1 - store i64 %t55, ptr %a46 - br label %find.cond6640 -find.end6644: - %t56 = load i64, ptr %a43 - %t57 = load { ptr, i64, i64 }, ptr %a26 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 %t56, %t58 - br i1 %t59, label %range6645, label %inrange6646 -range6645: - call void @finch_panic_index(ptr @.str.4297, i64 3622, i64 %t56, i64 %t58) - unreachable -inrange6646: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i64 %t56 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.drop.arr_str(ptr %a26) - call void @finch.drop.arr_str(ptr %a14) - ret { ptr, i64, i64 } %t65 -} - -define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca %S.gen.Val, align 16 - %a151 = alloca i64, align 16 - %a163 = alloca %S.gen.Val, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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.4298, 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.from6647 -logic.from6647: - br i1 %t13, label %logic.end6649, label %logic.rhs6648 -logic.rhs6648: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.4299, 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.rend6650 -logic.rend6650: - br label %logic.end6649 -logic.end6649: - %t19 = phi i1 [ true, %logic.from6647 ], [ %t18, %logic.rend6650 ] - br i1 %t19, label %then6651, label %endif6653 -then6651: - %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 %range6654, label %inrange6655 -range6654: - call void @finch_panic_index(ptr @.str.4300, i64 3628, i64 0, i64 %t23) - unreachable -inrange6655: - %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.4301, 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.4302, 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.4303, 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.4304, 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 %then6656, label %else6657 -then6656: - %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 %endif6658 -else6657: - %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 %endif6658 -endif6658: - %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 %range6659, label %inrange6660 -range6659: - call void @finch_panic_index(ptr @.str.4305, i64 3640, i64 1, i64 %t61) - unreachable -inrange6660: - %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.4306, 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.4307, 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.4308, 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 %then6661, label %endif6663 -then6661: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4309, i64 5, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6663 -endif6663: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4310, i64 9, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4311, i64 3, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.4312, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4313, i64 3, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4314, i64 2, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t131, 0 - %t134 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }) - %t135 = insertvalue %S.gen.Val %t133, %S.ast.Type %t134, 1 - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a38) - call void @finch_str_drop(ptr %a35) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a29) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t135 -endif6653: - %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 0, %t139 - br i1 %t140, label %range6664, label %inrange6665 -range6664: - call void @finch_panic_index(ptr @.str.4316, i64 3652, i64 0, i64 %t139) - unreachable -inrange6665: - %t141 = extractvalue { ptr, i64, i64 } %t138, 0 - %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 0 - %t143 = load %S.ast.Node, ptr %t142 - %t144 = call %S.gen.Val @finch.gen.expr(ptr %t136, %S.ast.Node %t143) - store %S.gen.Val %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6666, label %ok6667 -panic6666: - call void @finch_panic(ptr @.str.4317, i64 3653, ptr @.str.4318) - unreachable -ok6667: - %t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 11 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i32 0, i32 1 - %t150 = load i64, ptr %t149 - store i64 %t150, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a145 - call void @finch.gen.hold(ptr %t152, %S.gen.Val %t153) - %t154 = load ptr, ptr %a1 - %t155 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t156 = load { ptr, i64, i64 }, ptr %t155 - %t157 = extractvalue { ptr, i64, i64 } %t156, 1 - %t158 = icmp uge i64 1, %t157 - br i1 %t158, label %range6668, label %inrange6669 -range6668: - call void @finch_panic_index(ptr @.str.4319, i64 3655, i64 1, i64 %t157) - unreachable -inrange6669: - %t159 = extractvalue { ptr, i64, i64 } %t156, 0 - %t160 = getelementptr inbounds %S.ast.Node, ptr %t159, i64 1 - %t161 = load %S.ast.Node, ptr %t160 - %t162 = call %S.gen.Val @finch.gen.expr(ptr %t154, %S.ast.Node %t161) - store %S.gen.Val %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = load i64, ptr %a151 - call void @finch.gen.heldEnd(ptr %t164, i64 %t165) - %t166 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4320, i64 2, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from6670 -logic.from6670: - br i1 %t170, label %logic.end6672, label %logic.rhs6671 -logic.rhs6671: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4321, i64 2, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend6673 -logic.rend6673: - br label %logic.end6672 -logic.end6672: - %t176 = phi i1 [ true, %logic.from6670 ], [ %t175, %logic.rend6673 ] - br label %logic.from6674 -logic.from6674: - br i1 %t176, label %logic.end6676, label %logic.rhs6675 -logic.rhs6675: - %t177 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4322, i64 1, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend6677 -logic.rend6677: - br label %logic.end6676 -logic.end6676: - %t182 = phi i1 [ true, %logic.from6674 ], [ %t181, %logic.rend6677 ] - br label %logic.from6678 -logic.from6678: - br i1 %t182, label %logic.end6680, label %logic.rhs6679 -logic.rhs6679: - %t183 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4323, i64 2, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend6681 -logic.rend6681: - br label %logic.end6680 -logic.end6680: - %t188 = phi i1 [ true, %logic.from6678 ], [ %t187, %logic.rend6681 ] - br label %logic.from6682 -logic.from6682: - br i1 %t188, label %logic.end6684, label %logic.rhs6683 -logic.rhs6683: - %t189 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.4324, i64 1, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br label %logic.rend6685 -logic.rend6685: - br label %logic.end6684 -logic.end6684: - %t194 = phi i1 [ true, %logic.from6682 ], [ %t193, %logic.rend6685 ] - br label %logic.from6686 -logic.from6686: - br i1 %t194, label %logic.end6688, label %logic.rhs6687 -logic.rhs6687: - %t195 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t195, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.4325, i64 2, i64 0 }, ptr %a197 - %t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197) - %t199 = icmp ne i32 %t198, 0 - br label %logic.rend6689 -logic.rend6689: - br label %logic.end6688 -logic.end6688: - %t200 = phi i1 [ true, %logic.from6686 ], [ %t199, %logic.rend6689 ] - br i1 %t200, label %then6690, label %endif6692 -then6690: - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a8 - %t203 = load %S.gen.Val, ptr %a145 - %t204 = load %S.gen.Val, ptr %a163 - %t205 = load %S.ast.Node, ptr %a2 - %t206 = call %S.gen.Val @finch.gen.compare(ptr %t201, { ptr, i64, i64 } %t202, %S.gen.Val %t203, %S.gen.Val %t204, %S.ast.Node %t205) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t206 -endif6692: - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a8 - %t209 = load %S.gen.Val, ptr %a145 - %t210 = load %S.gen.Val, ptr %a163 - %t211 = load %S.ast.Node, ptr %a2 - %t212 = call %S.gen.Val @finch.gen.arith(ptr %t207, { ptr, i64, i64 } %t208, %S.gen.Val %t209, %S.gen.Val %t210, %S.ast.Node %t211) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t212 -} - -define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a23 = alloca %S.ast.Type, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca i64, align 16 - %a38 = alloca i64, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a47 = alloca %S.gen.Val, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.gen.Val, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a71 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %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 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca %S.ast.Type, align 16 - %a290 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4326, 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.4327, 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 %then6693, label %else6694 -then6693: - %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 %range6696, label %inrange6697 -range6696: - call void @finch_panic_index(ptr @.str.4328, i64 3666, i64 0, i64 %t14) - unreachable -inrange6697: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 - %t18 = load %S.ast.Type, ptr %t17 - store %S.ast.Type %t18, ptr %a19 - call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) - %t21 = load %S.ast.Type, ptr %a20 - %t22 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t21, ptr %a5 - store %S.ast.Type %t22, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - br label %endif6695 -else6694: - %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = icmp eq i64 %t26, 0 - br i1 %t27, label %then6698, label %endif6700 -then6698: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t28, %S.ast.Node %t29, { ptr, i64, i64 } { ptr @.str.4329, i64 47, i64 0 }) - br label %endif6700 -endif6700: - br label %endif6695 -endif6695: - store { ptr, i64, i64 } zeroinitializer, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic6701, label %ok6702 -panic6701: - call void @finch_panic(ptr @.str.4330, i64 3671, ptr @.str.4331) - unreachable -ok6702: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 11 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - %t35 = load i64, ptr %t34 - store i64 %t35, ptr %a36 - %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a38 - br label %each.cond6703 -each.cond6703: - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 - %t40 = load i64, ptr %t39 - %t41 = load i64, ptr %a38 - %t42 = icmp slt i64 %t41, %t40 - br i1 %t42, label %each.body6704, label %each.end6706 -each.body6704: - %t43 = load ptr, ptr %t37 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - %t45 = load %S.ast.Node, ptr %t44 - store %S.ast.Node %t45, ptr %a46 - store %S.gen.Val zeroinitializer, ptr %a47 - %t48 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0 - %t49 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4332, i64 4, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br i1 %t53, label %then6707, label %else6708 -then6707: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a46 - %t56 = call %S.gen.Val @finch.gen.expr(ptr %t54, %S.ast.Node %t55) - %t57 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t56, ptr %a47 - store %S.gen.Val %t57, ptr %a58 - call void @finch.drop.S_gen_Val(ptr %a58) - %t59 = getelementptr inbounds %S.gen.Val, ptr %a47, i32 0, i32 1 - %t60 = load %S.ast.Type, ptr %t59 - store %S.ast.Type %t60, ptr %a61 - call void @finch.copy.S_ast_Type(ptr %a62, ptr %a61) - %t63 = load %S.ast.Type, ptr %a62 - %t64 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t63, ptr %a5 - store %S.ast.Type %t64, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - br label %endif6709 -else6708: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a46 - %t68 = load %S.ast.Type, ptr %a5 - %t69 = call %S.gen.Val @finch.gen.exprWant(ptr %t66, %S.ast.Node %t67, %S.ast.Type %t68) - %t70 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t69, ptr %a47 - store %S.gen.Val %t70, ptr %a71 - call void @finch.drop.S_gen_Val(ptr %a71) - br label %endif6709 -endif6709: - %t72 = load ptr, ptr %a1 - %t73 = load %S.gen.Val, ptr %a47 - %t74 = load %S.ast.Type, ptr %a5 - %t75 = load %S.ast.Node, ptr %a46 - %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t72, %S.gen.Val %t73, %S.ast.Type %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.4333, i64 27, i64 0 }) - %t77 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t76, ptr %a47 - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t80 = load ptr, ptr %a1 - %t81 = load %S.gen.Val, ptr %a47 - %t82 = call { ptr, i64, i64 } @finch.gen.own(ptr %t80, %S.gen.Val %t81) - %t83 = load i64, ptr %t79 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %a30, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %a30 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t79 - %t87 = load ptr, ptr %a1 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = sub i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %a30 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range6710, label %inrange6711 -range6710: - call void @finch_panic_index(ptr @.str.4334, i64 3682, i64 %t90, i64 %t92) - unreachable -inrange6711: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 %t90 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t100, %S.ast.Type %t104, 1 - %t106 = insertvalue %S.gen.Val %t105, i1 true, 2 - call void @finch.gen.hold(ptr %t87, %S.gen.Val %t106) - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - call void @finch.drop.S_gen_Val(ptr %a47) - br label %each.step6705 -each.step6705: - %t108 = load i64, ptr %a38 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a38 - br label %each.cond6703 -each.end6706: - %t110 = load ptr, ptr %a1 - %t111 = load i64, ptr %a36 - call void @finch.gen.heldEnd(ptr %t110, i64 %t111) - %t112 = load %S.ast.Type, ptr %a5 - %t113 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t112) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t116 = load i64, ptr %t115 - call void @finch_str_from_int(ptr %a117, i64 %t116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4335, i64 4, i64 0 }, ptr %a120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t122 = load i64, ptr %t121 - %t123 = icmp sgt i64 %t122, 0 - br i1 %t123, label %then6712, label %endif6714 -then6712: - %t124 = load ptr, ptr %a1 - %t125 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4336, i64 8, i64 0 }, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t129, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4337, i64 2, i64 0 }, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a5 - %t137 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t135, %S.ast.Type %t136) - store { ptr, i64, i64 } %t134, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t134, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - %t144 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t143, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4338, i64 26, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.4339, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t158, ptr %a120 - store { ptr, i64, i64 } %t160, ptr %a161 - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a146) - br label %endif6714 -endif6714: - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t163 = load i64, ptr %t162 - store i64 0, ptr %a164 - br label %for.cond6715 -for.cond6715: - %t165 = load i64, ptr %a164 - %t166 = icmp slt i64 %t165, %t163 - br i1 %t166, label %for.body6716, label %for.end6718 -for.body6716: - %t167 = load ptr, ptr %a1 - %t168 = load ptr, ptr %a1 - %t169 = load %S.ast.Type, ptr %a5 - %t170 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t168, %S.ast.Type %t169) - store { ptr, i64, i64 } { ptr @.str.4340, i64 23, i64 0 }, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t175, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4341, i64 6, i64 0 }, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_drop(ptr %a179) - %t180 = load { ptr, i64, i64 }, ptr %a176 - %t181 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t180, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t180, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4342, i64 6, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = load i64, ptr %a164 - call void @finch_str_from_int(ptr %a193, i64 %t192) - %t194 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t191, ptr %a198 - call void @finch_str_drop(ptr %a198) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a195 - %t201 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t200) - store { ptr, i64, i64 } %t200, ptr %a202 - call void @finch_str_drop(ptr %a202) - store { ptr, i64, i64 } %t201, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.ast.Type, ptr %a5 - %t207 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t205, %S.ast.Type %t206) - %t208 = load i64, ptr %a164 - %t209 = load { ptr, i64, i64 }, ptr %a30 - %t210 = extractvalue { ptr, i64, i64 } %t209, 1 - %t211 = icmp uge i64 %t208, %t210 - br i1 %t211, label %range6719, label %inrange6720 -range6719: - call void @finch_panic_index(ptr @.str.4343, i64 3694, i64 %t208, i64 %t210) - unreachable -inrange6720: - %t212 = extractvalue { ptr, i64, i64 } %t209, 0 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t208 - %t214 = load { ptr, i64, i64 }, ptr %t213 - %t215 = load { ptr, i64, i64 }, ptr %a203 - call void @finch.gen.store(ptr %t204, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t214, { ptr, i64, i64 } %t215) - store { ptr, i64, i64 } %t207, ptr %a216 - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a203) - br label %for.step6717 -for.step6717: - %t217 = load i64, ptr %a164 - %t218 = add i64 %t217, 1 - store i64 %t218, ptr %a164 - br label %for.cond6715 -for.end6718: - %t219 = load ptr, ptr %a1 - %t220 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4344, i64 41, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4345, i64 3, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t219, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t229, ptr %a231 - call void @finch_str_drop(ptr %a231) - store { ptr, i64, i64 } %t230, ptr %a232 - %t233 = load ptr, ptr %a1 - %t234 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4346, i64 30, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.4347, i64 6, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4348, i64 3, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = call { ptr, i64, i64 } @finch.gen.op(ptr %t233, { ptr, i64, i64 } %t254) - store { ptr, i64, i64 } %t254, ptr %a256 - call void @finch_str_drop(ptr %a256) - store { ptr, i64, i64 } %t255, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.4349, i64 30, i64 0 }, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4351, i64 3, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t279) - store { ptr, i64, i64 } %t279, ptr %a281 - call void @finch_str_drop(ptr %a281) - store { ptr, i64, i64 } %t280, ptr %a282 - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t283, ptr %a284 - call void @finch_str_copy(ptr %a285, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - %t287 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t286, 0 - %t288 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t288, ptr %a289 - call void @finch.copy.S_ast_Type(ptr %a290, ptr %a289) - %t291 = load %S.ast.Type, ptr %a290 - %t292 = insertvalue %S.gen.Val %t287, %S.ast.Type %t291, 1 - %t293 = insertvalue %S.gen.Val %t292, i1 true, 2 - call void @finch_str_drop(ptr %a282) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a120) - call void @finch_str_drop(ptr %a119) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.arr_str(ptr %a30) - call void @finch.drop.S_ast_Type(ptr %a5) - ret %S.gen.Val %t293 -} - -define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) { -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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Ref, align 16 - %a42 = alloca %S.gen.Place, align 16 - %a43 = alloca %S.gen.Place, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4352, 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.from6721 -logic.from6721: - br i1 %t9, label %logic.rhs6722, label %logic.end6723 -logic.rhs6722: - %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.rend6724 -logic.rend6724: - br label %logic.end6723 -logic.end6723: - %t15 = phi i1 [ false, %logic.from6721 ], [ %t14, %logic.rend6724 ] - br i1 %t15, label %then6725, label %endif6727 -then6725: - %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.4353, 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.4354, i64 1, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t28) - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %endif6727 -endif6727: - %t30 = load ptr, ptr %a1 - %t31 = load %S.ast.Node, ptr %a2 - %t32 = load i1, ptr %a3 - %t33 = call %S.gen.Ref @finch.gen.ref(ptr %t30, %S.ast.Node %t31, i1 %t32) - store %S.gen.Ref %t33, ptr %a34 - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 0 - %t36 = load i1, ptr %t35 - %t37 = xor i1 %t36, true - br i1 %t37, label %then6728, label %endif6730 -then6728: - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t39, { ptr, i64, i64 } { ptr @.str.4355, i64 60, i64 0 }) - br label %endif6730 -endif6730: - %t40 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 1 - %t41 = load %S.gen.Place, ptr %t40 - store %S.gen.Place %t41, ptr %a42 - call void @finch.copy.S_gen_Place(ptr %a43, ptr %a42) - %t44 = load %S.gen.Place, ptr %a43 - call void @finch.drop.S_gen_Ref(ptr %a34) - ret %S.gen.Place %t44 -} - -define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i64, align 16 - %a190 = alloca i64, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca %S.gen.Var, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.ast.Type, align 16 - %a359 = alloca %S.ast.Type, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4356, 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 %then6731, label %endif6733 -then6731: - %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.from6734 -logic.from6734: - br i1 %t16, label %logic.rhs6735, label %logic.end6736 -logic.rhs6735: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6737, label %ok6738 -panic6737: - call void @finch_panic(ptr @.str.4357, i64 3718, ptr @.str.4358) - unreachable -ok6738: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 26 - %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.rend6739 -logic.rend6739: - br label %logic.end6736 -logic.end6736: - %t26 = phi i1 [ false, %logic.from6734 ], [ %t25, %logic.rend6739 ] - br i1 %t26, label %then6740, label %endif6742 -then6740: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6743, label %ok6744 -panic6743: - call void @finch_panic(ptr @.str.4359, i64 3719, ptr @.str.4360) - unreachable -ok6744: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 26 - %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.missing6745, label %map.found6746 -map.missing6745: - 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.4361, i64 3719, ptr %a36) - unreachable -map.found6746: - %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 %then6747, label %endif6749 -then6747: - %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.4362, i64 5, i64 0 }) - %t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1 - %t56 = insertvalue %S.gen.Val %t55, i1 true, 3 - %t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t57 -endif6749: - %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.4363, i64 3, i64 0 }) - %t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1 - %t66 = insertvalue %S.gen.Val %t65, i1 true, 3 - %t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t67 -endif6742: - %t68 = load i64, ptr %a14 - %t69 = icmp slt i64 %t68, 0 - br label %logic.from6750 -logic.from6750: - br i1 %t69, label %logic.rhs6751, label %logic.end6752 -logic.rhs6751: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic6753, label %ok6754 -panic6753: - call void @finch_panic(ptr @.str.4364, i64 3726, ptr @.str.4365) - unreachable -ok6754: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 26 - %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.rend6755 -logic.rend6755: - br label %logic.end6752 -logic.end6752: - %t80 = phi i1 [ false, %logic.from6750 ], [ %t79, %logic.rend6755 ] - br label %logic.from6756 -logic.from6756: - br i1 %t80, label %logic.rhs6757, label %logic.end6758 -logic.rhs6757: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic6759, label %ok6760 -panic6759: - call void @finch_panic(ptr @.str.4366, i64 3726, ptr @.str.4367) - unreachable -ok6760: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 26 - %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4368, 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.rend6761 -logic.rend6761: - br label %logic.end6758 -logic.end6758: - %t88 = phi i1 [ false, %logic.from6756 ], [ %t87, %logic.rend6761 ] - br label %logic.from6762 -logic.from6762: - br i1 %t88, label %logic.rhs6763, label %logic.end6764 -logic.rhs6763: - %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.4369, 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.from6765 -logic.from6765: - br i1 %t94, label %logic.end6767, label %logic.rhs6766 -logic.rhs6766: - %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.4370, 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.rend6768 -logic.rend6768: - br label %logic.end6767 -logic.end6767: - %t101 = phi i1 [ true, %logic.from6765 ], [ %t100, %logic.rend6768 ] - br label %logic.from6769 -logic.from6769: - br i1 %t101, label %logic.end6771, label %logic.rhs6770 -logic.rhs6770: - %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.4371, 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.rend6772 -logic.rend6772: - br label %logic.end6771 -logic.end6771: - %t108 = phi i1 [ true, %logic.from6769 ], [ %t107, %logic.rend6772 ] - br label %logic.rend6773 -logic.rend6773: - br label %logic.end6764 -logic.end6764: - %t109 = phi i1 [ false, %logic.from6762 ], [ %t108, %logic.rend6773 ] - br i1 %t109, label %then6774, label %endif6776 -then6774: - store { ptr, i64, i64 } { ptr @.str.4372, 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.4373, 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 %then6777, label %else6778 -then6777: - %t117 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4374, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif6779 -else6778: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t120 = load { ptr, i64, i64 }, ptr %t119 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.4375, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then6780, label %endif6782 -then6780: - %t125 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4376, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - br label %endif6782 -endif6782: - br label %endif6779 -endif6779: - %t127 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t128 = load ptr, ptr %a1 - %t129 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4377, i64 31, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.4378, i64 1, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t128, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t142 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4379, i64 3, i64 0 }) - %t143 = insertvalue %S.gen.Val %t141, %S.ast.Type %t142, 1 - %t144 = insertvalue %S.gen.Ref %t127, %S.gen.Val %t143, 2 - call void @finch_str_drop(ptr %a110) - ret %S.gen.Ref %t144 -endif6776: - %t145 = load i64, ptr %a14 - %t146 = icmp slt i64 %t145, 0 - br label %logic.from6783 -logic.from6783: - br i1 %t146, label %logic.rhs6784, label %logic.end6785 -logic.rhs6784: - %t147 = load ptr, ptr %a1 - %t148 = icmp eq ptr %t147, null - br i1 %t148, label %panic6786, label %ok6787 -panic6786: - call void @finch_panic(ptr @.str.4380, i64 3735, ptr @.str.4381) - unreachable -ok6787: - %t149 = getelementptr inbounds %S.gen.Gen, ptr %t147, i32 0, i32 26 - %t150 = getelementptr inbounds %S.cimport.CImports, ptr %t149, i32 0, i32 2 - %t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = call i64 @finch_map_find(ptr %t150, ptr %a153, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t155 = icmp sge i64 %t154, 0 - br label %logic.rend6788 -logic.rend6788: - br label %logic.end6785 -logic.end6785: - %t156 = phi i1 [ false, %logic.from6783 ], [ %t155, %logic.rend6788 ] - br i1 %t156, label %then6789, label %endif6791 -then6789: - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic6792, label %ok6793 -panic6792: - call void @finch_panic(ptr @.str.4382, i64 3736, ptr @.str.4383) - unreachable -ok6793: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 26 - %t161 = getelementptr inbounds %S.cimport.CImports, ptr %t160, i32 0, i32 2 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - store { ptr, i64, i64 } %t163, ptr %a164 - %t165 = call i64 @finch_map_find(ptr %t161, ptr %a164, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t166 = icmp slt i64 %t165, 0 - br i1 %t166, label %map.missing6794, label %map.found6795 -map.missing6794: - store { ptr, i64, i64 } zeroinitializer, ptr %a167 - store { ptr, i64, i64 } %t163, ptr %a168 - call void @finch_buf_str(ptr %a167, ptr %a168, i32 1) - call void @finch_map_missing(ptr @.str.4384, i64 3736, ptr %a167) - unreachable -map.found6795: - %t169 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t161, i32 0, i32 0 - %t170 = load ptr, ptr %t169 - %t171 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t170, i64 %t165 - %t172 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t171, i32 0, i32 2 - %t173 = load %S.ast.Type, ptr %t172 - %t174 = load %S.ast.Node, ptr %a2 - %t175 = call %S.ast.Type @finch.gen.resolve(ptr %t157, %S.ast.Type %t173, %S.ast.Node %t174) - store %S.ast.Type %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = icmp eq ptr %t177, null - br i1 %t178, label %panic6796, label %ok6797 -panic6796: - call void @finch_panic(ptr @.str.4385, i64 3737, ptr @.str.4386) - unreachable -ok6797: - %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 40 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } { ptr @.str.4387, i64 2, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store i64 -1, ptr %a187 - %t188 = load i64, ptr %t180 - %t189 = load ptr, ptr %t179 - store i64 0, ptr %a190 - br label %find.cond6798 -find.cond6798: - %t191 = load i64, ptr %a190 - %t192 = icmp slt i64 %t191, %t188 - br i1 %t192, label %find.body6799, label %find.end6802 -find.body6799: - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t189, i64 %t191 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } %t186, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br i1 %t198, label %find.hit6800, label %find.next6801 -find.hit6800: - store i64 %t191, ptr %a187 - br label %find.end6802 -find.next6801: - %t199 = add i64 %t191, 1 - store i64 %t199, ptr %a190 - br label %find.cond6798 -find.end6802: - store { ptr, i64, i64 } %t186, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load i64, ptr %a187 - %t202 = icmp sge i64 %t201, 0 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6803, label %endif6805 -then6803: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic6806, label %ok6807 -panic6806: - call void @finch_panic(ptr @.str.4388, i64 3738, ptr @.str.4389) - unreachable -ok6807: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 40 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } { ptr @.str.4390, i64 2, i64 0 }, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a210 - %t214 = load i64, ptr %t207 - %t215 = add i64 %t214, 1 - call void @finch_arr_reserve(ptr %t206, i64 %t215, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t216 = load ptr, ptr %t206 - %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t214 - store { ptr, i64, i64 } %t213, ptr %t217 - store i64 %t215, ptr %t207 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic6808, label %ok6809 -panic6808: - call void @finch_panic(ptr @.str.4391, i64 3739, ptr @.str.4392) - unreachable -ok6809: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 2 - %t221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t220, i32 0, i32 1 - %t222 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t223 = load { ptr, i64, i64 }, ptr %t222 - store { ptr, i64, i64 } { ptr @.str.4393, i64 1, i64 0 }, ptr %a225 - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.4394, i64 19, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load ptr, ptr %a1 - %t234 = load %S.ast.Type, ptr %a176 - %t235 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t233, %S.ast.Type %t234) - store { ptr, i64, i64 } %t232, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t232, ptr %a239 - call void @finch_str_drop(ptr %a239) - store { ptr, i64, i64 } %t235, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a236 - %t242 = load i64, ptr %t221 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %t220, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %t220 - %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 - store { ptr, i64, i64 } %t241, ptr %t245 - store i64 %t243, ptr %t221 - br label %endif6805 -endif6805: - %t246 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t247 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t248 = load { ptr, i64, i64 }, ptr %t247 - store { ptr, i64, i64 } { ptr @.str.4395, i64 1, i64 0 }, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - %t252 = load { ptr, i64, i64 }, ptr %a249 - %t253 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t252, 0 - %t254 = load %S.ast.Type, ptr %a176 - store %S.ast.Type %t254, ptr %a255 - call void @finch.copy.S_ast_Type(ptr %a256, ptr %a255) - %t257 = load %S.ast.Type, ptr %a256 - %t258 = insertvalue %S.gen.Place %t253, %S.ast.Type %t257, 1 - %t259 = insertvalue %S.gen.Ref %t246, %S.gen.Place %t258, 1 - call void @finch.drop.S_ast_Type(ptr %a176) - ret %S.gen.Ref %t259 -endif6791: - %t260 = load i64, ptr %a14 - %t261 = icmp slt i64 %t260, 0 - br i1 %t261, label %then6810, label %endif6812 -then6810: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call i1 @finch.gen.imports(ptr %t262, { ptr, i64, i64 } %t264) - br i1 %t265, label %then6813, label %endif6815 -then6813: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t269 = load { ptr, i64, i64 }, ptr %t268 - store { ptr, i64, i64 } { ptr @.str.4396, i64 1, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.4397, i64 43, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t280 = load { ptr, i64, i64 }, ptr %t279 - store { ptr, i64, i64 } %t278, ptr %a282 - store { ptr, i64, i64 } %t280, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4398, i64 10, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif6815 -endif6815: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - %t294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } { ptr @.str.4399, i64 28, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t295, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.4400, i64 1, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - call void @finch.gen.fail(ptr %t292, %S.ast.Node %t293, { ptr, i64, i64 } %t304) - store { ptr, i64, i64 } %t304, ptr %a305 - call void @finch_str_drop(ptr %a305) - br label %endif6812 -endif6812: - %t306 = load ptr, ptr %a1 - %t307 = load i64, ptr %a14 - %t308 = call %S.gen.Var @finch.gen.varAt(ptr %t306, i64 %t307) - store %S.gen.Var %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = load %S.ast.Node, ptr %a2 - %t312 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t313 = load i64, ptr %t312 - %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t318 = load %S.ast.Type, ptr %t317 - %t319 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t318) - store { ptr, i64, i64 } { ptr @.str.4401, i64 9, i64 0 }, ptr %a321 - store { ptr, i64, i64 } %t319, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.4402, i64 1, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t329, ptr %a333 - store { ptr, i64, i64 } %t331, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t329, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.4403, i64 4, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 7 - %t343 = load { ptr, i64, i64 }, ptr %t342 - %t344 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 8 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 9 - %t347 = load i64, ptr %t346 - call void @finch.gen.noteRef(ptr %t310, %S.ast.Node %t311, i64 %t313, i64 %t316, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t343, i64 %t345, i64 %t347) - store { ptr, i64, i64 } %t341, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t350 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 2 - %t351 = load { ptr, i64, i64 }, ptr %t350 - store { ptr, i64, i64 } %t351, ptr %a352 - call void @finch_str_copy(ptr %a353, ptr %a352) - %t354 = load { ptr, i64, i64 }, ptr %a353 - %t355 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t354, 0 - %t356 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t357 = load %S.ast.Type, ptr %t356 - store %S.ast.Type %t357, ptr %a358 - call void @finch.copy.S_ast_Type(ptr %a359, ptr %a358) - %t360 = load %S.ast.Type, ptr %a359 - %t361 = insertvalue %S.gen.Place %t355, %S.ast.Type %t360, 1 - %t362 = insertvalue %S.gen.Ref %t349, %S.gen.Place %t361, 1 - call void @finch.drop.S_gen_Var(ptr %a309) - ret %S.gen.Ref %t362 -endif6733: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4404, i64 6, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then6816, label %endif6818 -then6816: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = load i1, ptr %a3 - %t372 = call %S.gen.Ref @finch.gen.member(ptr %t369, %S.ast.Node %t370, i1 %t371) - ret %S.gen.Ref %t372 -endif6818: - %t373 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t374 = load { ptr, i64, i64 }, ptr %t373 - store { ptr, i64, i64 } %t374, ptr %a375 - store { ptr, i64, i64 } { ptr @.str.4405, i64 5, i64 0 }, ptr %a376 - %t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376) - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %then6819, label %endif6821 -then6819: - %t379 = load ptr, ptr %a1 - %t380 = load %S.ast.Node, ptr %a2 - %t381 = load i1, ptr %a3 - %t382 = call %S.gen.Ref @finch.gen.index(ptr %t379, %S.ast.Node %t380, i1 %t381) - ret %S.gen.Ref %t382 -endif6821: - %t383 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Node, ptr %a2 - %t386 = call %S.gen.Val @finch.gen.expr(ptr %t384, %S.ast.Node %t385) - %t387 = insertvalue %S.gen.Ref %t383, %S.gen.Val %t386, 2 - ret %S.gen.Ref %t387 -} - -define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { -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 - %a21 = 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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.4407, 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 %then6822, label %endif6824 -then6822: - %t13 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4408, 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 - %t18 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t17, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif6824 -endif6824: - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.4410, i64 1, i64 0 }, ptr %a23 - %t24 = call i64 @finch_str_find(ptr %a21, ptr %a23) - %t25 = icmp sge i64 %t24, 0 - %t26 = xor i1 %t25, true - br i1 %t26, label %then6825, label %endif6827 -then6825: - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.4412, i64 1, i64 0 }, ptr %a30 - %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then6828, label %endif6830 -then6828: - %t35 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.4414, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a32 - br label %endif6830 -endif6830: - %t40 = load i64, ptr %a32 - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %then6831, label %endif6833 -then6831: - %t42 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.4415, i64 2, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a43 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t46 -endif6833: - %t47 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t47, ptr %a48 - %t50 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.4416, i64 3776) - %t51 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4417, i64 2, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t57, ptr %a58 - %t60 = load i64, ptr %a32 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t62 = load i64, ptr %t61 - call void @finch_str_sub(ptr %a59, ptr %a58, i64 %t60, i64 %t62, ptr @.str.4418, i64 3776) - %t63 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t56, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t56, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t69 -endif6827: - %t70 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t70 -} - -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.4419, 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.from6834 -logic.from6834: - br i1 %t8, label %logic.rhs6835, label %logic.end6836 -logic.rhs6835: - %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.rend6837 -logic.rend6837: - br label %logic.end6836 -logic.end6836: - %t14 = phi i1 [ false, %logic.from6834 ], [ %t13, %logic.rend6837 ] - br i1 %t14, label %then6838, label %endif6840 -then6838: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6841, label %ok6842 -panic6841: - call void @finch_panic(ptr @.str.4420, i64 3784, ptr @.str.4421) - unreachable -ok6842: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6840: - %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.4422, 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.from6843 -logic.from6843: - br i1 %t28, label %logic.rhs6844, label %logic.end6845 -logic.rhs6844: - %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 %range6846, label %inrange6847 -range6846: - call void @finch_panic_index(ptr @.str.4423, i64 3786, i64 0, i64 %t31) - unreachable -inrange6847: - %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.4424, 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.rend6848 -logic.rend6848: - br label %logic.end6845 -logic.end6845: - %t41 = phi i1 [ false, %logic.from6843 ], [ %t40, %logic.rend6848 ] - br label %logic.from6849 -logic.from6849: - br i1 %t41, label %logic.rhs6850, label %logic.end6851 -logic.rhs6850: - %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 %range6852, label %inrange6853 -range6852: - call void @finch_panic_index(ptr @.str.4425, i64 3786, i64 0, i64 %t45) - unreachable -inrange6853: - %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.rend6854 -logic.rend6854: - br label %logic.end6851 -logic.end6851: - %t53 = phi i1 [ false, %logic.from6849 ], [ %t52, %logic.rend6854 ] - br label %logic.from6855 -logic.from6855: - br i1 %t53, label %logic.rhs6856, label %logic.end6857 -logic.rhs6856: - %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 %range6858, label %inrange6859 -range6858: - call void @finch_panic_index(ptr @.str.4426, i64 3786, i64 0, i64 %t57) - unreachable -inrange6859: - %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.rend6860 -logic.rend6860: - br label %logic.end6857 -logic.end6857: - %t64 = phi i1 [ false, %logic.from6855 ], [ %t63, %logic.rend6860 ] - br i1 %t64, label %then6861, label %endif6863 -then6861: - %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 %range6864, label %inrange6865 -range6864: - call void @finch_panic_index(ptr @.str.4427, i64 3787, i64 0, i64 %t68) - unreachable -inrange6865: - %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 -endif6863: - ret i64 -1 -} - -define internal i64 @finch.gen.sumNamed(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.4428, 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.from6866 -logic.from6866: - br i1 %t8, label %logic.rhs6867, label %logic.end6868 -logic.rhs6867: - %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.rend6869 -logic.rend6869: - br label %logic.end6868 -logic.end6868: - %t14 = phi i1 [ false, %logic.from6866 ], [ %t13, %logic.rend6869 ] - br i1 %t14, label %then6870, label %endif6872 -then6870: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6873, label %ok6874 -panic6873: - call void @finch_panic(ptr @.str.4429, i64 3795, ptr @.str.4430) - unreachable -ok6874: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findSum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6872: - %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.4431, 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.from6875 -logic.from6875: - br i1 %t28, label %logic.rhs6876, label %logic.end6877 -logic.rhs6876: - %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 %range6878, label %inrange6879 -range6878: - call void @finch_panic_index(ptr @.str.4432, i64 3797, i64 0, i64 %t31) - unreachable -inrange6879: - %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.4433, 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.rend6880 -logic.rend6880: - br label %logic.end6877 -logic.end6877: - %t41 = phi i1 [ false, %logic.from6875 ], [ %t40, %logic.rend6880 ] - br label %logic.from6881 -logic.from6881: - br i1 %t41, label %logic.rhs6882, label %logic.end6883 -logic.rhs6882: - %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 %range6884, label %inrange6885 -range6884: - call void @finch_panic_index(ptr @.str.4434, i64 3797, i64 0, i64 %t45) - unreachable -inrange6885: - %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.rend6886 -logic.rend6886: - br label %logic.end6883 -logic.end6883: - %t53 = phi i1 [ false, %logic.from6881 ], [ %t52, %logic.rend6886 ] - br label %logic.from6887 -logic.from6887: - br i1 %t53, label %logic.rhs6888, label %logic.end6889 -logic.rhs6888: - %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 %range6890, label %inrange6891 -range6890: - call void @finch_panic_index(ptr @.str.4435, i64 3797, i64 0, i64 %t57) - unreachable -inrange6891: - %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.rend6892 -logic.rend6892: - br label %logic.end6889 -logic.end6889: - %t64 = phi i1 [ false, %logic.from6887 ], [ %t63, %logic.rend6892 ] - br i1 %t64, label %then6893, label %endif6895 -then6893: - %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 %range6896, label %inrange6897 -range6896: - call void @finch_panic_index(ptr @.str.4436, i64 3798, i64 0, i64 %t68) - unreachable -inrange6897: - %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.findSum(ptr %t65, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75) - ret i64 %t76 -endif6895: - ret i64 -1 -} - -define internal i64 @finch.gen.sumVariant(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a16 = alloca %S.gen.SumDef, align 16 - %a18 = alloca %S.gen.SumDef, 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 - %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 - %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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic6898, label %ok6899 -panic6898: - call void @finch_panic(ptr @.str.4437, i64 3804, ptr @.str.4438) - unreachable -ok6899: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 22 - %t8 = load i64, ptr %a2 - %t9 = load { ptr, i64, i64 }, ptr %t7 - %t10 = extractvalue { ptr, i64, i64 } %t9, 1 - %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range6900, label %inrange6901 -range6900: - call void @finch_panic_index(ptr @.str.4439, i64 3804, i64 %t8, i64 %t10) - unreachable -inrange6901: - %t12 = extractvalue { ptr, i64, i64 } %t9, 0 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %t12, i64 %t8 - %t14 = load %S.gen.SumDef, ptr %t13 - store %S.gen.SumDef %t14, ptr %a15 - call void @finch.copy.S_gen_SumDef(ptr %a16, ptr %a15) - %t17 = load %S.gen.SumDef, ptr %a16 - store %S.gen.SumDef %t17, ptr %a18 - %t19 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %a3 - store i64 -1, ptr %a22 - %t23 = load i64, ptr %t20 - %t24 = load ptr, ptr %t19 - store i64 0, ptr %a25 - br label %find.cond6902 -find.cond6902: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6903, label %find.end6906 -find.body6903: - %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.hit6904, label %find.next6905 -find.hit6904: - store i64 %t26, ptr %a22 - br label %find.end6906 -find.next6905: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6902 -find.end6906: - %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 %then6907, label %endif6909 -then6907: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a4 - %t41 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } { ptr @.str.4440, 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.4441, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.4442, i64 11, i64 0 }, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t57, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - %t63 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4443, i64 2, 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 } %t62, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t62, ptr %a71 - call void @finch_str_drop(ptr %a71) - store { ptr, i64, i64 } %t67, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.4444, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif6909 -endif6909: - %t80 = load i64, ptr %a36 - call void @finch.drop.S_gen_SumDef(ptr %a18) - ret i64 %t80 -} - -define internal %S.gen.Val @finch.gen.sumMake(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.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, align 16 - %a19 = alloca %S.gen.SumDef, align 16 - %a25 = alloca 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca i64, align 16 - %a178 = alloca %S.ast.Node, align 16 - %a179 = alloca %S.ast.Node, 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 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, 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 %panic6910, label %ok6911 -panic6910: - call void @finch_panic(ptr @.str.4445, i64 3814, ptr @.str.4446) - unreachable -ok6911: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 22 - %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 %range6912, label %inrange6913 -range6912: - call void @finch_panic_index(ptr @.str.4447, i64 3814, i64 %t9, i64 %t11) - unreachable -inrange6913: - %t13 = extractvalue { ptr, i64, i64 } %t10, 0 - %t14 = getelementptr inbounds %S.gen.SumDef, ptr %t13, i64 %t9 - %t15 = load %S.gen.SumDef, ptr %t14 - store %S.gen.SumDef %t15, ptr %a16 - call void @finch.copy.S_gen_SumDef(ptr %a17, ptr %a16) - %t18 = load %S.gen.SumDef, ptr %a17 - store %S.gen.SumDef %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = load i64, ptr %a2 - %t22 = load { ptr, i64, i64 }, ptr %a3 - %t23 = load %S.ast.Node, ptr %a5 - %t24 = call i64 @finch.gen.sumVariant(ptr %t20, i64 %t21, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t27 = load i64, ptr %t26 - %t28 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t29 = load i64, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range6914, label %inrange6915 -range6914: - call void @finch_panic_index(ptr @.str.4448, i64 3816, i64 %t29, i64 %t31) - unreachable -inrange6915: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds i64, ptr %t33, i64 %t29 - %t35 = load i64, ptr %t34 - %t36 = icmp ne i64 %t27, %t35 - br i1 %t36, label %then6916, label %endif6918 -then6916: - %t37 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t38 = load i64, ptr %a25 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range6919, label %inrange6920 -range6919: - call void @finch_panic_index(ptr @.str.4449, i64 3817, i64 %t38, i64 %t40) - unreachable -inrange6920: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i64, ptr %t42, i64 %t38 - %t44 = load i64, ptr %t43 - %t45 = icmp eq i64 %t44, 0 - br i1 %t45, label %then6921, label %endif6923 -then6921: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Node, ptr %a5 - %t48 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4450, i64 22, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a49 - %t53 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t52, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t52, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4451, i64 1, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - %t65 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t64, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t64, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.fail(ptr %t46, %S.ast.Node %t47, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif6923 -endif6923: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a5 - %t74 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4452, i64 7, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t80 = load i64, ptr %a25 - %t81 = load { ptr, i64, i64 }, ptr %t79 - %t82 = extractvalue { ptr, i64, i64 } %t81, 1 - %t83 = icmp uge i64 %t80, %t82 - br i1 %t83, label %range6924, label %inrange6925 -range6924: - call void @finch_panic_index(ptr @.str.4453, i64 3820, i64 %t80, i64 %t82) - unreachable -inrange6925: - %t84 = extractvalue { ptr, i64, i64 } %t81, 0 - %t85 = getelementptr inbounds i64, ptr %t84, i64 %t80 - %t86 = load i64, ptr %t85 - call void @finch_str_from_int(ptr %a87, i64 %t86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t78, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t78, ptr %a92 - call void @finch_str_drop(ptr %a92) - store { ptr, i64, i64 } %t88, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4454, i64 19, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t101 = load i64, ptr %t100 - call void @finch_str_from_int(ptr %a102, i64 %t101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t99, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t99, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t103, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4455, i64 2, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - %t115 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t114, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.4456, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4457, i64 5, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.fail(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif6918 -endif6918: - store { ptr, i64, i64 } zeroinitializer, ptr %a139 - store { ptr, i64, i64 } zeroinitializer, ptr %a140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t142 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.4458, i64 3, i64 0 }, 0 - %t143 = load i64, ptr %a25 - call void @finch_str_from_int(ptr %a144, i64 %t143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.ast.Node %t142, { ptr, i64, i64 } %t145, 4 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 11 - %t148 = load i64, ptr %t147 - %t149 = insertvalue %S.ast.Node %t146, i64 %t148, 11 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t151 = load i64, ptr %t150 - %t152 = insertvalue %S.ast.Node %t149, i64 %t151, 12 - %t153 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 13 - %t154 = load i64, ptr %t153 - %t155 = insertvalue %S.ast.Node %t152, i64 %t154, 13 - %t156 = load i64, ptr %t141 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %a139 - %t159 = getelementptr inbounds %S.ast.Node, ptr %t158, i64 %t156 - store %S.ast.Node %t155, ptr %t159 - store i64 %t157, ptr %t141 - %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t161 = load i64, ptr %t160 - %t162 = add i64 %t161, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t162, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t163 = load ptr, ptr %a140 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t161 - store { ptr, i64, i64 } { ptr @.str.4459, i64 3, i64 0 }, ptr %t164 - store i64 %t162, ptr %t160 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t166 = load i64, ptr %t165 - store i64 0, ptr %a167 - br label %for.cond6926 -for.cond6926: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body6927, label %for.end6929 -for.body6927: - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t171 = load i64, ptr %a167 - %t172 = load { ptr, i64, i64 }, ptr %a4 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 %t171, %t173 - br i1 %t174, label %range6930, label %inrange6931 -range6930: - call void @finch_panic_index(ptr @.str.4460, i64 3827, i64 %t171, i64 %t173) - unreachable -inrange6931: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t171 - %t177 = load %S.ast.Node, ptr %t176 - store %S.ast.Node %t177, ptr %a178 - call void @finch.copy.S_ast_Node(ptr %a179, ptr %a178) - %t180 = load %S.ast.Node, ptr %a179 - %t181 = load i64, ptr %t170 - %t182 = add i64 %t181, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t182, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t183 = load ptr, ptr %a139 - %t184 = getelementptr inbounds %S.ast.Node, ptr %t183, i64 %t181 - store %S.ast.Node %t180, ptr %t184 - store i64 %t182, ptr %t170 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t186 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4461, i64 1, 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 %a167 - 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) - store { ptr, i64, i64 } %t190, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a194 - %t200 = load i64, ptr %t185 - %t201 = add i64 %t200, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t201, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t202 = load ptr, ptr %a140 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 %t200 - store { ptr, i64, i64 } %t199, ptr %t203 - store i64 %t201, ptr %t185 - br label %for.step6928 -for.step6928: - %t204 = load i64, ptr %a167 - %t205 = add i64 %t204, 1 - store i64 %t205, ptr %a167 - br label %for.cond6926 -for.end6929: - %t206 = load ptr, ptr %a1 - %t207 = load %S.ast.Node, ptr %a5 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t209 = load i64, ptr %t208 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t211 = load i64, ptr %t210 - %t212 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } { ptr @.str.4462, i64 9, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4463, i64 1, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t222, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t228, ptr %a230 - store { ptr, i64, i64 } { ptr @.str.4464, i64 4, i64 0 }, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t228, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - call void @finch.gen.noteRef(ptr %t206, %S.ast.Node %t207, i64 %t209, i64 %t211, { ptr, i64, i64 } %t233, { ptr, i64, i64 } { ptr @.str.4465, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t233, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load ptr, ptr %a1 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %a139 - %t243 = load { ptr, i64, i64 }, ptr %a140 - %t244 = load %S.ast.Node, ptr %a5 - %t245 = call %S.gen.Val @finch.gen.construct(ptr %t235, i64 %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, %S.ast.Node %t244) - call void @finch.drop.arr_str(ptr %a140) - call void @finch.drop.arr_S_ast_Node(ptr %a139) - call void @finch.drop.S_gen_SumDef(ptr %a19) - ret %S.gen.Val %t245 -} - -define internal %S.gen.SumPat @finch.gen.sumPattern(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.SumDef, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca i64, align 16 - %a124 = alloca %S.ast.Node, align 16 - %a125 = alloca %S.ast.Node, 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 - %a144 = 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 - %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 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %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 i64, align 16 - %a251 = alloca %S.ast.Node, 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 - 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 %panic6932, label %ok6933 -panic6932: - call void @finch_panic(ptr @.str.4466, i64 3836, ptr @.str.4467) - unreachable -ok6933: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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 %range6934, label %inrange6935 -range6934: - call void @finch_panic_index(ptr @.str.4468, i64 3836, i64 %t7, i64 %t9) - unreachable -inrange6935: - %t11 = extractvalue { ptr, i64, i64 } %t8, 0 - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %t11, i64 %t7 - %t13 = load %S.gen.SumDef, ptr %t12 - store %S.gen.SumDef %t13, ptr %a14 - call void @finch.copy.S_gen_SumDef(ptr %a15, ptr %a14) - %t16 = load %S.gen.SumDef, ptr %a15 - store %S.gen.SumDef %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.4469, i64 0, i64 0 }, ptr %a18 - store { ptr, i64, i64 } zeroinitializer, ptr %a19 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - br label %logic.from6936 -logic.from6936: - br i1 %t25, label %logic.rhs6937, label %logic.end6938 -logic.rhs6937: - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = call i64 @finch.gen.lookup(ptr %t26, { ptr, i64, i64 } %t28) - %t30 = icmp slt i64 %t29, 0 - br label %logic.rend6939 -logic.rend6939: - br label %logic.end6938 -logic.end6938: - %t31 = phi i1 [ false, %logic.from6936 ], [ %t30, %logic.rend6939 ] - br i1 %t31, label %then6940, label %else6941 -then6940: - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 - %t37 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t36, ptr %a18 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif6942 -else6941: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.4471, 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 %then6943, label %else6944 -then6943: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t49, ptr %a18 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch.copy.arr_S_ast_Node(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - %t57 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t56, ptr %a19 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch.drop.arr_S_ast_Node(ptr %a58) - br label %endif6945 -else6944: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4472, i64 6, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br label %logic.from6946 -logic.from6946: - br i1 %t64, label %logic.rhs6947, label %logic.end6948 -logic.rhs6947: - %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 %range6949, label %inrange6950 -range6949: - call void @finch_panic_index(ptr @.str.4473, i64 3844, i64 0, i64 %t68) - unreachable -inrange6950: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 0 - %t72 = load %S.ast.Node, ptr %t71 - %t73 = call i64 @finch.gen.sumNamed(ptr %t65, %S.ast.Node %t72) - %t74 = load i64, ptr %a3 - %t75 = icmp eq i64 %t73, %t74 - br label %logic.rend6951 -logic.rend6951: - br label %logic.end6948 -logic.end6948: - %t76 = phi i1 [ false, %logic.from6946 ], [ %t75, %logic.rend6951 ] - br i1 %t76, label %then6952, label %else6953 -then6952: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_copy(ptr %a80, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t81, ptr %a18 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif6954 -else6953: - %t84 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.4474, i64 6, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.from6955 -logic.from6955: - br i1 %t89, label %logic.rhs6956, label %logic.end6957 -logic.rhs6956: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 0, %t93 - br i1 %t94, label %range6958, label %inrange6959 -range6958: - call void @finch_panic_index(ptr @.str.4475, i64 3846, i64 0, i64 %t93) - unreachable -inrange6959: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 0 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i64 @finch.gen.sumNamed(ptr %t90, %S.ast.Node %t97) - %t99 = load i64, ptr %a3 - %t100 = icmp eq i64 %t98, %t99 - br label %logic.rend6960 -logic.rend6960: - br label %logic.end6957 -logic.end6957: - %t101 = phi i1 [ false, %logic.from6955 ], [ %t100, %logic.rend6960 ] - br i1 %t101, label %then6961, label %else6962 -then6961: - %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 - call void @finch_str_copy(ptr %a105, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - %t107 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t106, ptr %a18 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i32 0, i32 1 - %t111 = load i64, ptr %t110 - store i64 1, ptr %a112 - br label %for.cond6964 -for.cond6964: - %t113 = load i64, ptr %a112 - %t114 = icmp slt i64 %t113, %t111 - br i1 %t114, label %for.body6965, label %for.end6967 -for.body6965: - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load i64, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %t116 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 %t117, %t119 - br i1 %t120, label %range6968, label %inrange6969 -range6968: - call void @finch_panic_index(ptr @.str.4476, i64 3849, i64 %t117, i64 %t119) - unreachable -inrange6969: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Node, ptr %t121, i64 %t117 - %t123 = load %S.ast.Node, ptr %t122 - store %S.ast.Node %t123, ptr %a124 - call void @finch.copy.S_ast_Node(ptr %a125, ptr %a124) - %t126 = load %S.ast.Node, ptr %a125 - %t127 = load i64, ptr %t115 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t128, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %a19 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 %t127 - store %S.ast.Node %t126, ptr %t130 - store i64 %t128, ptr %t115 - br label %for.step6966 -for.step6966: - %t131 = load i64, ptr %a112 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %a112 - br label %for.cond6964 -for.end6967: - br label %endif6963 -else6962: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - %t135 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 1 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } { ptr @.str.4477, i64 33, 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.4478, i64 10, i64 0 }, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t140, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 2 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4479, i64 2, i64 0 }, ptr %a148 - call void @finch_str_join(ptr %a149, ptr %t146, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t145, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t145, ptr %a154 - call void @finch_str_drop(ptr %a154) - store { ptr, i64, i64 } %t150, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4480, i64 1, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a162 - call void @finch_str_drop(ptr %a162) - br label %endif6963 -endif6963: - br label %endif6954 -endif6954: - br label %endif6945 -endif6945: - br label %endif6942 -endif6942: - %t163 = load ptr, ptr %a1 - %t164 = load i64, ptr %a3 - %t165 = load { ptr, i64, i64 }, ptr %a18 - %t166 = load %S.ast.Node, ptr %a2 - %t167 = call i64 @finch.gen.sumVariant(ptr %t163, i64 %t164, { ptr, i64, i64 } %t165, %S.ast.Node %t166) - store i64 %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t172 = load i64, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %t171 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 %t172, %t174 - br i1 %t175, label %range6970, label %inrange6971 -range6970: - call void @finch_panic_index(ptr @.str.4481, i64 3855, i64 %t172, i64 %t174) - unreachable -inrange6971: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds i64, ptr %t176, i64 %t172 - %t178 = load i64, ptr %t177 - %t179 = icmp ne i64 %t170, %t178 - br i1 %t179, label %then6972, label %endif6974 -then6972: - %t180 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t181 = load i64, ptr %a168 - %t182 = load { ptr, i64, i64 }, ptr %t180 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 %t181, %t183 - br i1 %t184, label %range6975, label %inrange6976 -range6975: - call void @finch_panic_index(ptr @.str.4482, i64 3856, i64 %t181, i64 %t183) - unreachable -inrange6976: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds i64, ptr %t185, i64 %t181 - %t187 = load i64, ptr %t186 - %t188 = icmp eq i64 %t187, 0 - br i1 %t188, label %then6977, label %endif6979 -then6977: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t191, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.4483, i64 27, i64 0 }, ptr %a194 - call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a192 - %t196 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t195, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t195, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - call void @finch.gen.fail(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t201) - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif6979 -endif6979: - %t203 = load ptr, ptr %a1 - %t204 = load %S.ast.Node, ptr %a2 - %t205 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4484, i64 7, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a206 - %t210 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t211 = load i64, ptr %a168 - %t212 = load { ptr, i64, i64 }, ptr %t210 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range6980, label %inrange6981 -range6980: - call void @finch_panic_index(ptr @.str.4485, i64 3859, i64 %t211, i64 %t213) - unreachable -inrange6981: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds i64, ptr %t215, i64 %t211 - %t217 = load i64, ptr %t216 - call void @finch_str_from_int(ptr %a218, i64 %t217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t209, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - store { ptr, i64, i64 } %t209, ptr %a223 - call void @finch_str_drop(ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t225, ptr %a227 - store { ptr, i64, i64 } { ptr @.str.4486, i64 27, i64 0 }, ptr %a228 - call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) - store { ptr, i64, i64 } %t225, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load { ptr, i64, i64 }, ptr %a226 - %t231 = load { ptr, i64, i64 }, ptr %a18 - 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) - store { ptr, i64, i64 } %t230, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.4487, i64 27, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.fail(ptr %t203, %S.ast.Node %t204, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a242 - call void @finch_str_drop(ptr %a242) - br label %endif6974 -endif6974: - store i64 0, ptr %a243 - br label %each.cond6982 -each.cond6982: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = load i64, ptr %a243 - %t247 = icmp slt i64 %t246, %t245 - br i1 %t247, label %each.body6983, label %each.end6985 -each.body6983: - %t248 = load ptr, ptr %a19 - %t249 = getelementptr inbounds %S.ast.Node, ptr %t248, i64 %t246 - %t250 = load %S.ast.Node, ptr %t249 - store %S.ast.Node %t250, ptr %a251 - %t252 = getelementptr inbounds %S.ast.Node, ptr %a251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4488, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp eq i32 %t256, 0 - br i1 %t257, label %then6986, label %endif6988 -then6986: - %t258 = load ptr, ptr %a1 - %t259 = load %S.ast.Node, ptr %a251 - call void @finch.gen.fail(ptr %t258, %S.ast.Node %t259, { ptr, i64, i64 } { ptr @.str.4489, i64 50, i64 0 }) - br label %endif6988 -endif6988: - br label %each.step6984 -each.step6984: - %t260 = load i64, ptr %a243 - %t261 = add i64 %t260, 1 - store i64 %t261, ptr %a243 - br label %each.cond6982 -each.end6985: - %t262 = load i64, ptr %a168 - %t263 = insertvalue %S.gen.SumPat zeroinitializer, i64 %t262, 0 - %t264 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch.copy.arr_S_ast_Node(ptr %a266, ptr %a265) - %t267 = load { ptr, i64, i64 }, ptr %a266 - %t268 = insertvalue %S.gen.SumPat %t263, { ptr, i64, i64 } %t267, 1 - call void @finch.drop.arr_S_ast_Node(ptr %a19) - call void @finch_str_drop(ptr %a18) - call void @finch.drop.S_gen_SumDef(ptr %a17) - ret %S.gen.SumPat %t268 -} - -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 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6989, label %ok6990 -panic6989: - call void @finch_panic(ptr @.str.4490, i64 3871, ptr @.str.4491) - unreachable -ok6990: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6991, label %inrange6992 -range6991: - call void @finch_panic_index(ptr @.str.4492, i64 3871, i64 %t7, i64 %t9) - unreachable -inrange6992: - %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.cond6993 -find.cond6993: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6994, label %find.end6997 -find.body6994: - %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.hit6995, label %find.next6996 -find.hit6995: - store i64 %t26, ptr %a22 - br label %find.end6997 -find.next6996: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6993 -find.end6997: - %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 %then6998, label %endif7000 -then6998: - %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.4493, 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.4494, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t51, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t51, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4495, i64 11, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4496, i64 2, i64 0 }, ptr %a66 - call void @finch_str_join(ptr %a67, ptr %t64, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4497, i64 1, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif7000 -endif7000: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a2 - %t83 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t84 = load i64, ptr %t83 - %t85 = add i64 %t84, 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t90 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } { ptr @.str.4498, i64 9, i64 0 }, ptr %a92 - store { ptr, i64, i64 } %t90, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4499, i64 1, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t99, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t99, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.4500, i64 3, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t113 = load i64, ptr %a36 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range7001, label %inrange7002 -range7001: - call void @finch_panic_index(ptr @.str.4501, i64 3876, i64 %t113, i64 %t115) - unreachable -inrange7002: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t113 - %t119 = load i64, ptr %t118 - call void @finch_str_from_int(ptr %a120, i64 %t119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t111, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t111, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t127, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.4502, i64 4, i64 0 }, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t127, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - call void @finch.gen.noteRef(ptr %t81, %S.ast.Node %t82, i64 %t85, i64 %t88, { ptr, i64, i64 } %t132, { ptr, i64, i64 } { ptr @.str.4503, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t135 = load i64, ptr %a36 - %t136 = load { ptr, i64, i64 }, ptr %t134 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 %t135, %t137 - br i1 %t138, label %range7003, label %inrange7004 -range7003: - call void @finch_panic_index(ptr @.str.4504, i64 3877, i64 %t135, i64 %t137) - unreachable -inrange7004: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds i64, ptr %t139, i64 %t135 - %t141 = load i64, ptr %t140 - call void @finch_str_from_int(ptr %a142, i64 %t141) - %t143 = load { ptr, i64, i64 }, ptr %a142 - %t144 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t143, 0 - %t145 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4505, i64 4, i64 0 }, 0 - %t146 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - call void @finch_str_copy(ptr %a149, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - %t151 = insertvalue %S.ast.Type %t145, { ptr, i64, i64 } %t150, 2 - %t152 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t153, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = insertvalue %S.ast.Type %t151, { ptr, i64, i64 } %t156, 3 - %t158 = insertvalue %S.gen.Val %t144, %S.ast.Type %t157, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t158 -} - -define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca i1, align 16 - %a13 = alloca i64, align 16 - %a25 = alloca i64, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a157 = alloca %S.gen.Ref, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a170 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a241 = alloca %S.ast.Type, align 16 - %a242 = alloca i1, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca i64, align 16 - %a268 = alloca i64, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca %S.ast.Type, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.ast.Type, align 16 - %a335 = alloca %S.gen.Ref, align 16 - %a337 = alloca %S.ast.Type, align 16 - %a338 = alloca %S.ast.Type, align 16 - %a341 = alloca %S.ast.Type, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = 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 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = 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 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %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 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca %S.ast.Type, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a616 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a671 = 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 - %a692 = alloca %S.gen.StructDef, align 16 - %a693 = alloca %S.gen.StructDef, align 16 - %a695 = alloca %S.gen.StructDef, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca i64, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a726 = 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 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a769 = alloca %S.ast.Type, align 16 - %a771 = alloca %S.ast.Type, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a855 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca %S.ast.Type, align 16 - %a861 = alloca %S.ast.Type, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %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 - %a887 = 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 - %a900 = 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 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a917 = alloca %S.ast.Type, align 16 - %a918 = alloca %S.ast.Type, align 16 - %a921 = alloca %S.gen.Val, align 16 - %a935 = alloca %S.ast.Type, align 16 - %a936 = alloca %S.ast.Type, align 16 - %a941 = alloca %S.gen.Val, align 16 - %a947 = alloca %S.gen.Val, align 16 - %a948 = 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 %range7005, label %inrange7006 -range7005: - call void @finch_panic_index(ptr @.str.4506, i64 3881, i64 0, i64 %t7) - unreachable -inrange7006: - %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.sumNamed(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 %then7007, label %endif7009 -then7007: - %t16 = load i1, ptr %a3 - br i1 %t16, label %then7010, label %endif7012 -then7010: - %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.4507, i64 37, i64 0 }) - br label %endif7012 -endif7012: - %t19 = load ptr, ptr %a1 - %t20 = load i64, ptr %a13 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = load %S.ast.Node, ptr %a2 - %t24 = call i64 @finch.gen.sumVariant(ptr %t19, i64 %t20, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic7013, label %ok7014 -panic7013: - call void @finch_panic(ptr @.str.4508, i64 3887, ptr @.str.4509) - unreachable -ok7014: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 22 - %t29 = load i64, ptr %a13 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range7015, label %inrange7016 -range7015: - call void @finch_panic_index(ptr @.str.4510, i64 3887, i64 %t29, i64 %t31) - unreachable -inrange7016: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.gen.SumDef, ptr %t33, i64 %t29 - %t35 = getelementptr inbounds %S.gen.SumDef, ptr %t34, i32 0, i32 3 - %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 %range7017, label %inrange7018 -range7017: - call void @finch_panic_index(ptr @.str.4511, i64 3887, i64 %t36, i64 %t38) - unreachable -inrange7018: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds i64, ptr %t40, i64 %t36 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then7019, label %endif7021 -then7019: - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Node, ptr %a2 - %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 %a49 - store { ptr, i64, i64 } { ptr @.str.4512, 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 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic7022, label %ok7023 -panic7022: - call void @finch_panic(ptr @.str.4513, i64 3888, ptr @.str.4514) - unreachable -ok7023: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 22 - %t55 = load i64, ptr %a13 - %t56 = load { ptr, i64, i64 }, ptr %t54 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range7024, label %inrange7025 -range7024: - call void @finch_panic_index(ptr @.str.4515, i64 3888, i64 %t55, i64 %t57) - unreachable -inrange7025: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds %S.gen.SumDef, ptr %t59, i64 %t55 - %t61 = getelementptr inbounds %S.gen.SumDef, ptr %t60, i32 0, i32 3 - %t62 = load i64, ptr %a25 - %t63 = load { ptr, i64, i64 }, ptr %t61 - %t64 = extractvalue { ptr, i64, i64 } %t63, 1 - %t65 = icmp uge i64 %t62, %t64 - br i1 %t65, label %range7026, label %inrange7027 -range7026: - call void @finch_panic_index(ptr @.str.4516, i64 3888, i64 %t62, i64 %t64) - unreachable -inrange7027: - %t66 = extractvalue { ptr, i64, i64 } %t63, 0 - %t67 = getelementptr inbounds i64, ptr %t66, i64 %t62 - %t68 = load i64, ptr %t67 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t51, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t51, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4517, i64 11, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = load ptr, ptr %a1 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic7028, label %ok7029 -panic7028: - call void @finch_panic(ptr @.str.4518, i64 3888, ptr @.str.4519) - unreachable -ok7029: - %t84 = getelementptr inbounds %S.gen.Gen, ptr %t82, i32 0, i32 22 - %t85 = load i64, ptr %a13 - %t86 = load { ptr, i64, i64 }, ptr %t84 - %t87 = extractvalue { ptr, i64, i64 } %t86, 1 - %t88 = icmp uge i64 %t85, %t87 - br i1 %t88, label %range7030, label %inrange7031 -range7030: - call void @finch_panic_index(ptr @.str.4520, i64 3888, i64 %t85, i64 %t87) - unreachable -inrange7031: - %t89 = extractvalue { ptr, i64, i64 } %t86, 0 - %t90 = getelementptr inbounds %S.gen.SumDef, ptr %t89, i64 %t85 - %t91 = getelementptr inbounds %S.gen.SumDef, ptr %t90, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t81, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t81, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4521, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4522, i64 5, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - call void @finch.gen.fail(ptr %t44, %S.ast.Node %t45, { ptr, i64, i64 } %t114) - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_drop(ptr %a115) - br label %endif7021 -endif7021: - store { ptr, i64, i64 } zeroinitializer, ptr %a116 - %t117 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a13 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = load { ptr, i64, i64 }, ptr %a116 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = call %S.gen.Val @finch.gen.sumMake(ptr %t118, i64 %t119, { ptr, i64, i64 } %t121, { ptr, i64, i64 } %t122, %S.ast.Node %t123) - %t125 = insertvalue %S.gen.Ref %t117, %S.gen.Val %t124, 2 - call void @finch.drop.arr_S_ast_Node(ptr %a116) - ret %S.gen.Ref %t125 -endif7009: - %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 %range7032, label %inrange7033 -range7032: - call void @finch_panic_index(ptr @.str.4523, i64 3893, i64 0, i64 %t129) - unreachable -inrange7033: - %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 i64 @finch.gen.enumNamed(ptr %t126, %S.ast.Node %t133) - store i64 %t134, ptr %a135 - %t136 = load i64, ptr %a135 - %t137 = icmp sge i64 %t136, 0 - br i1 %t137, label %then7034, label %endif7036 -then7034: - %t138 = load i1, ptr %a3 - br i1 %t138, label %then7037, label %endif7039 -then7037: - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t139, %S.ast.Node %t140, { ptr, i64, i64 } { ptr @.str.4524, i64 37, i64 0 }) - br label %endif7039 -endif7039: - %t141 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Node, ptr %a2 - %t144 = load i64, ptr %a135 - %t145 = call %S.gen.Val @finch.gen.enumValue(ptr %t142, %S.ast.Node %t143, i64 %t144) - %t146 = insertvalue %S.gen.Ref %t141, %S.gen.Val %t145, 2 - ret %S.gen.Ref %t146 -endif7036: - %t147 = load ptr, ptr %a1 - %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 %range7040, label %inrange7041 -range7040: - call void @finch_panic_index(ptr @.str.4525, i64 3900, i64 0, i64 %t150) - unreachable -inrange7041: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 0 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = load i1, ptr %a3 - %t156 = call %S.gen.Ref @finch.gen.ref(ptr %t147, %S.ast.Node %t154, i1 %t155) - store %S.gen.Ref %t156, ptr %a157 - %t158 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t159 = getelementptr inbounds %S.gen.Val, ptr %t158, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - store %S.ast.Type %t163, ptr %a164 - %t165 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t166 = load i1, ptr %t165 - br i1 %t166, label %then7042, label %endif7044 -then7042: - %t167 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t168 = getelementptr inbounds %S.gen.Place, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Type, ptr %t168 - store %S.ast.Type %t169, ptr %a170 - call void @finch.copy.S_ast_Type(ptr %a171, ptr %a170) - %t172 = load %S.ast.Type, ptr %a171 - %t173 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t172, ptr %a164 - store %S.ast.Type %t173, ptr %a174 - call void @finch.drop.S_ast_Type(ptr %a174) - br label %endif7044 -endif7044: - %t175 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t176 = load { ptr, i64, i64 }, ptr %t175 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4526, 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 %then7045, label %endif7047 -then7045: - %t181 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t182 = getelementptr inbounds %S.gen.Val, ptr %t181, i32 0, i32 0 - %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 - store { ptr, i64, i64 } %t186, ptr %a187 - %t188 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t189 = load i1, ptr %t188 - br i1 %t189, label %then7048, label %endif7050 -then7048: - %t190 = load ptr, ptr %a1 - %t191 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t192 = getelementptr inbounds %S.gen.Place, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t190, { ptr, i64, i64 } { ptr @.str.4527, i64 3, i64 0 }, { ptr, i64, i64 } %t193) - %t195 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t194, ptr %a187 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %endif7050 -endif7050: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = icmp eq i64 %t199, 0 - br i1 %t200, label %then7051, label %endif7053 -then7051: - %t201 = load ptr, ptr %a1 - %t202 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t201, %S.ast.Node %t202, { ptr, i64, i64 } { ptr @.str.4528, i64 57, i64 0 }) - br label %endif7053 -endif7053: - %t203 = load ptr, ptr %a1 - %t204 = load ptr, ptr %a1 - %t205 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4529, i64 12, 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.4530, i64 6, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } { ptr @.str.4531, 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 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4532, i64 18, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t203, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t227, %S.ast.Node %t228) - store { ptr, i64, i64 } %t215, ptr %a229 - call void @finch_str_drop(ptr %a229) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = extractvalue { ptr, i64, i64 } %t232, 1 - %t234 = icmp uge i64 0, %t233 - br i1 %t234, label %range7054, label %inrange7055 -range7054: - call void @finch_panic_index(ptr @.str.4533, i64 3914, i64 0, i64 %t233) - unreachable -inrange7055: - %t235 = extractvalue { ptr, i64, i64 } %t232, 0 - %t236 = getelementptr inbounds %S.ast.Type, ptr %t235, i64 0 - %t237 = load %S.ast.Type, ptr %t236 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - store %S.ast.Type %t240, ptr %a241 - store i1 false, ptr %a242 - %t243 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.4534, i64 6, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then7056, label %endif7058 -then7056: - %t249 = load ptr, ptr %a1 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic7059, label %ok7060 -panic7059: - call void @finch_panic(ptr @.str.4535, i64 3917, ptr @.str.4536) - unreachable -ok7060: - %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 16 - %t252 = load ptr, ptr %a1 - %t253 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 3 - %t254 = load { ptr, i64, i64 }, ptr %t253 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 2 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = call i64 @finch.gen.findStruct(ptr %t252, { ptr, i64, i64 } %t254, { ptr, i64, i64 } %t256) - %t258 = load { ptr, i64, i64 }, ptr %t251 - %t259 = extractvalue { ptr, i64, i64 } %t258, 1 - %t260 = icmp uge i64 %t257, %t259 - br i1 %t260, label %range7061, label %inrange7062 -range7061: - call void @finch_panic_index(ptr @.str.4537, i64 3917, i64 %t257, i64 %t259) - unreachable -inrange7062: - %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 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - store i64 -1, ptr %a265 - %t266 = load i64, ptr %t264 - %t267 = load ptr, ptr %t263 - store i64 0, ptr %a268 - br label %find.cond7063 -find.cond7063: - %t269 = load i64, ptr %a268 - %t270 = icmp slt i64 %t269, %t266 - br i1 %t270, label %find.body7064, label %find.end7067 -find.body7064: - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i64 %t269 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.4538, i64 5, i64 0 }, ptr %a274 - %t275 = call i32 @finch_str_eq(ptr %a273, ptr %a274) - %t276 = icmp ne i32 %t275, 0 - br i1 %t276, label %find.hit7065, label %find.next7066 -find.hit7065: - store i64 %t269, ptr %a265 - br label %find.end7067 -find.next7066: - %t277 = add i64 %t269, 1 - store i64 %t277, ptr %a268 - br label %find.cond7063 -find.end7067: - %t278 = load i64, ptr %a265 - %t279 = icmp sge i64 %t278, 0 - store i1 %t279, ptr %a242 - br label %endif7058 -endif7058: - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4539, 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.from7068 -logic.from7068: - br i1 %t285, label %logic.rhs7069, label %logic.end7070 -logic.rhs7069: - %t286 = load i1, ptr %a242 - %t287 = xor i1 %t286, true - br label %logic.rend7071 -logic.rend7071: - br label %logic.end7070 -logic.end7070: - %t288 = phi i1 [ false, %logic.from7068 ], [ %t287, %logic.rend7071 ] - br i1 %t288, label %then7072, label %endif7074 -then7072: - %t289 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t290 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t295, ptr %a296 - call void @finch.copy.S_ast_Type(ptr %a297, ptr %a296) - %t298 = load %S.ast.Type, ptr %a297 - %t299 = insertvalue %S.gen.Place %t294, %S.ast.Type %t298, 1 - %t300 = insertvalue %S.gen.Ref %t289, %S.gen.Place %t299, 1 - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t300 -endif7074: - %t301 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.4540, i64 6, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp eq i32 %t305, 0 - br i1 %t306, label %then7075, label %endif7077 -then7075: - %t307 = load ptr, ptr %a1 - %t308 = load %S.ast.Node, ptr %a2 - %t309 = load %S.ast.Type, ptr %a164 - %t310 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t309) - store { ptr, i64, i64 } { ptr @.str.4541, i64 2, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4542, i64 43, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - call void @finch.gen.fail(ptr %t307, %S.ast.Node %t308, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_drop(ptr %a321) - br label %endif7077 -endif7077: - %t322 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t323 = load { ptr, i64, i64 }, ptr %a187 - 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.gen.Place zeroinitializer, { ptr, i64, i64 } %t326, 0 - %t328 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t328, ptr %a329 - call void @finch.copy.S_ast_Type(ptr %a330, ptr %a329) - %t331 = load %S.ast.Type, ptr %a330 - %t332 = insertvalue %S.gen.Place %t327, %S.ast.Type %t331, 1 - %t333 = insertvalue %S.gen.Ref %t322, %S.gen.Place %t332, 1 - %t334 = load %S.gen.Ref, ptr %a157 - store %S.gen.Ref %t333, ptr %a157 - store %S.gen.Ref %t334, ptr %a335 - call void @finch.drop.S_gen_Ref(ptr %a335) - %t336 = load %S.ast.Type, ptr %a241 - 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 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t339, ptr %a164 - store %S.ast.Type %t340, ptr %a341 - call void @finch.drop.S_ast_Type(ptr %a341) - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - br label %endif7047 -endif7047: - %t342 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.4543, i64 5, i64 0 }, ptr %a345 - %t346 = call i32 @finch_str_eq(ptr %a344, ptr %a345) - %t347 = icmp ne i32 %t346, 0 - br i1 %t347, label %then7078, label %endif7080 -then7078: - %t348 = load i1, ptr %a3 - br i1 %t348, label %then7081, label %endif7083 -then7081: - %t349 = load ptr, ptr %a1 - %t350 = load %S.ast.Node, ptr %a2 - %t351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t352 = load { ptr, i64, i64 }, ptr %t351 - store { ptr, i64, i64 } { ptr @.str.4544, i64 1, 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.4545, i64 26, i64 0 }, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t356, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - call void @finch.gen.fail(ptr %t349, %S.ast.Node %t350, { ptr, i64, i64 } %t361) - store { ptr, i64, i64 } %t361, ptr %a362 - call void @finch_str_drop(ptr %a362) - br label %endif7083 -endif7083: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4546, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then7084, label %endif7086 -then7084: - %t369 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t370 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 4 - %t371 = load i64, ptr %t370 - call void @finch_str_from_int(ptr %a372, i64 %t371) - %t373 = load { ptr, i64, i64 }, ptr %a372 - %t374 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t373, 0 - %t375 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4547, i64 3, i64 0 }) - %t376 = insertvalue %S.gen.Val %t374, %S.ast.Type %t375, 1 - %t377 = insertvalue %S.gen.Val %t376, i1 true, 3 - %t378 = insertvalue %S.gen.Ref %t369, %S.gen.Val %t377, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t378 -endif7086: - %t379 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t380 = load { ptr, i64, i64 }, ptr %t379 - store { ptr, i64, i64 } %t380, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.4548, i64 3, i64 0 }, ptr %a382 - %t383 = call i32 @finch_str_eq(ptr %a381, ptr %a382) - %t384 = icmp eq i32 %t383, 0 - br i1 %t384, label %then7087, label %endif7089 -then7087: - %t385 = load ptr, ptr %a1 - %t386 = load %S.ast.Node, ptr %a2 - %t387 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t388 = load { ptr, i64, i64 }, ptr %t387 - store { ptr, i64, i64 } { ptr @.str.4549, i64 34, 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.4550, i64 1, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.fail(ptr %t385, %S.ast.Node %t386, { ptr, i64, i64 } %t397) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - br label %endif7089 -endif7089: - %t399 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t400 = load i1, ptr %t399 - %t401 = xor i1 %t400, true - br i1 %t401, label %then7090, label %endif7092 -then7090: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4551, i64 48, i64 0 }) - br label %endif7092 -endif7092: - %t404 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t405 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t406 = getelementptr inbounds %S.gen.Place, ptr %t405, i32 0, i32 0 - %t407 = load { ptr, i64, i64 }, ptr %t406 - store { ptr, i64, i64 } %t407, ptr %a408 - call void @finch_str_copy(ptr %a409, ptr %a408) - %t410 = load { ptr, i64, i64 }, ptr %a409 - %t411 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t410, 0 - %t412 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t413 = load { ptr, i64, i64 }, ptr %t412 - %t414 = extractvalue { ptr, i64, i64 } %t413, 1 - %t415 = icmp uge i64 0, %t414 - br i1 %t415, label %range7093, label %inrange7094 -range7093: - call void @finch_panic_index(ptr @.str.4552, i64 3941, i64 0, i64 %t414) - unreachable -inrange7094: - %t416 = extractvalue { ptr, i64, i64 } %t413, 0 - %t417 = getelementptr inbounds %S.ast.Type, ptr %t416, i64 0 - %t418 = load %S.ast.Type, ptr %t417 - %t419 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val %t411, %S.ast.Type %t419, 1 - %t421 = insertvalue %S.gen.Ref %t404, %S.gen.Val %t420, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t421 -endif7080: - %t422 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t423 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t423, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.4553, i64 5, i64 0 }, ptr %a425 - %t426 = call i32 @finch_str_eq(ptr %a424, ptr %a425) - %t427 = icmp ne i32 %t426, 0 - br label %logic.from7095 -logic.from7095: - br i1 %t427, label %logic.end7097, label %logic.rhs7096 -logic.rhs7096: - %t428 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.4554, i64 3, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.rend7098 -logic.rend7098: - br label %logic.end7097 -logic.end7097: - %t434 = phi i1 [ true, %logic.from7095 ], [ %t433, %logic.rend7098 ] - br label %logic.from7099 -logic.from7099: - br i1 %t434, label %logic.rhs7100, label %logic.end7101 -logic.rhs7100: - %t435 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t436, ptr %a437 - store { ptr, i64, i64 } { ptr @.str.4555, i64 3, i64 0 }, ptr %a438 - %t439 = call i32 @finch_str_eq(ptr %a437, ptr %a438) - %t440 = icmp ne i32 %t439, 0 - br label %logic.rend7102 -logic.rend7102: - br label %logic.end7101 -logic.end7101: - %t441 = phi i1 [ false, %logic.from7099 ], [ %t440, %logic.rend7102 ] - br i1 %t441, label %then7103, label %endif7105 -then7103: - %t442 = load i1, ptr %a3 - br i1 %t442, label %then7106, label %endif7108 -then7106: - %t443 = load ptr, ptr %a1 - %t444 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t443, %S.ast.Node %t444, { ptr, i64, i64 } { ptr @.str.4556, i64 30, i64 0 }) - br label %endif7108 -endif7108: - %t445 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t446 = load i1, ptr %t445 - %t447 = xor i1 %t446, true - br label %logic.from7109 -logic.from7109: - br i1 %t447, label %logic.rhs7110, label %logic.end7111 -logic.rhs7110: - %t448 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t449 = getelementptr inbounds %S.gen.Val, ptr %t448, i32 0, i32 2 - %t450 = load i1, ptr %t449 - br label %logic.rend7112 -logic.rend7112: - br label %logic.end7111 -logic.end7111: - %t451 = phi i1 [ false, %logic.from7109 ], [ %t450, %logic.rend7112 ] - br label %logic.from7113 -logic.from7113: - br i1 %t451, label %logic.rhs7114, label %logic.end7115 -logic.rhs7114: - %t452 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t453 = getelementptr inbounds %S.gen.Val, ptr %t452, i32 0, i32 0 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.4558, i64 1, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_starts(ptr %a455, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend7116 -logic.rend7116: - br label %logic.end7115 -logic.end7115: - %t460 = phi i1 [ false, %logic.from7113 ], [ %t459, %logic.rend7116 ] - br i1 %t460, label %then7117, label %endif7119 -then7117: - %t461 = load ptr, ptr %a1 - %t462 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t461, %S.ast.Node %t462, { ptr, i64, i64 } { ptr @.str.4559, i64 53, i64 0 }) - br label %endif7119 -endif7119: - %t463 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t464 = getelementptr inbounds %S.gen.Val, ptr %t463, i32 0, i32 0 - %t465 = load { ptr, i64, i64 }, ptr %t464 - store { ptr, i64, i64 } %t465, ptr %a466 - call void @finch_str_copy(ptr %a467, ptr %a466) - %t468 = load { ptr, i64, i64 }, ptr %a467 - store { ptr, i64, i64 } %t468, ptr %a469 - %t470 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t471 = load i1, ptr %t470 - br i1 %t471, label %then7120, label %endif7122 -then7120: - %t472 = load ptr, ptr %a1 - %t473 = load ptr, ptr %a1 - %t474 = load %S.ast.Type, ptr %a164 - %t475 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t473, %S.ast.Type %t474) - %t476 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t477 = getelementptr inbounds %S.gen.Place, ptr %t476, i32 0, i32 0 - %t478 = load { ptr, i64, i64 }, ptr %t477 - %t479 = call { ptr, i64, i64 } @finch.gen.load(ptr %t472, { ptr, i64, i64 } %t475, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t475, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t479, ptr %a469 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif7122 -endif7122: - %t483 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - store { ptr, i64, i64 } %t484, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.4560, i64 3, i64 0 }, ptr %a486 - %t487 = call i32 @finch_str_eq(ptr %a485, ptr %a486) - %t488 = icmp ne i32 %t487, 0 - br i1 %t488, label %then7123, label %endif7125 -then7123: - %t489 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t490 = load ptr, ptr %a1 - %t491 = load { ptr, i64, i64 }, ptr %a469 - %t492 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t490, { ptr, i64, i64 } %t491) - %t493 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t492, 0 - %t494 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4561, i64 4, i64 0 }) - %t495 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t494) - store %S.ast.Type %t494, ptr %a496 - call void @finch.drop.S_ast_Type(ptr %a496) - %t497 = insertvalue %S.gen.Val %t493, %S.ast.Type %t495, 1 - %t498 = insertvalue %S.gen.Ref %t489, %S.gen.Val %t497, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t498 -endif7125: - %t499 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t500 = load ptr, ptr %a1 - %t501 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4562, i64 31, i64 0 }, 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.4563, i64 3, i64 0 }, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t505, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - %t511 = call { ptr, i64, i64 } @finch.gen.op(ptr %t500, { ptr, i64, i64 } %t510) - store { ptr, i64, i64 } %t510, ptr %a512 - call void @finch_str_drop(ptr %a512) - %t513 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t511, 0 - %t514 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range7126, label %inrange7127 -range7126: - call void @finch_panic_index(ptr @.str.4564, i64 3959, i64 0, i64 %t516) - unreachable -inrange7127: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = load %S.ast.Type, ptr %t519 - %t521 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t520) - %t522 = insertvalue %S.gen.Val %t513, %S.ast.Type %t521, 1 - %t523 = insertvalue %S.gen.Ref %t499, %S.gen.Val %t522, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t523 -endif7105: - %t524 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.4565, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br label %logic.from7128 -logic.from7128: - br i1 %t529, label %logic.end7130, label %logic.rhs7129 -logic.rhs7129: - %t530 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t531 = load { ptr, i64, i64 }, ptr %t530 - store { ptr, i64, i64 } %t531, ptr %a532 - store { ptr, i64, i64 } { ptr @.str.4566, i64 3, i64 0 }, ptr %a533 - %t534 = call i32 @finch_str_eq(ptr %a532, ptr %a533) - %t535 = icmp ne i32 %t534, 0 - br label %logic.rend7131 -logic.rend7131: - br label %logic.end7130 -logic.end7130: - %t536 = phi i1 [ true, %logic.from7128 ], [ %t535, %logic.rend7131 ] - br label %logic.from7132 -logic.from7132: - br i1 %t536, label %logic.end7134, label %logic.rhs7133 -logic.rhs7133: - %t537 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.4567, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br label %logic.rend7135 -logic.rend7135: - br label %logic.end7134 -logic.end7134: - %t543 = phi i1 [ true, %logic.from7132 ], [ %t542, %logic.rend7135 ] - br i1 %t543, label %then7136, label %endif7138 -then7136: - %t544 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t545, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.4568, i64 3, i64 0 }, ptr %a547 - %t548 = call i32 @finch_str_eq(ptr %a546, ptr %a547) - %t549 = icmp eq i32 %t548, 0 - br i1 %t549, label %then7139, label %endif7141 -then7139: - %t550 = load ptr, ptr %a1 - %t551 = load %S.ast.Node, ptr %a2 - %t552 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t553 = load { ptr, i64, i64 }, ptr %t552 - store { ptr, i64, i64 } { ptr @.str.4569, i64 37, i64 0 }, ptr %a555 - store { ptr, i64, i64 } %t553, ptr %a556 - call void @finch_str_concat(ptr %a554, ptr %a555, ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t557, ptr %a559 - store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.gen.fail(ptr %t550, %S.ast.Node %t551, { ptr, i64, i64 } %t562) - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif7141 -endif7141: - %t564 = load i1, ptr %a3 - br i1 %t564, label %then7142, label %endif7144 -then7142: - %t565 = load ptr, ptr %a1 - %t566 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t565, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.4571, i64 48, i64 0 }) - br label %endif7144 -endif7144: - %t567 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t568 = load i1, ptr %t567 - br i1 %t568, label %then7145, label %endif7147 -then7145: - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a164 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - store { ptr, i64, i64 } { ptr @.str.4572, i64 23, i64 0 }, ptr %a574 - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - store { ptr, i64, i64 } %t577, ptr %a579 - store { ptr, i64, i64 } { ptr @.str.4573, i64 6, i64 0 }, ptr %a580 - call void @finch_str_concat(ptr %a578, ptr %a579, ptr %a580) - store { ptr, i64, i64 } %t577, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = load { ptr, i64, i64 }, ptr %a578 - %t583 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t584 = getelementptr inbounds %S.gen.Place, ptr %t583, i32 0, i32 0 - %t585 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t582, ptr %a587 - store { ptr, i64, i64 } %t585, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t582, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - store { ptr, i64, i64 } %t590, ptr %a592 - store { ptr, i64, i64 } { ptr @.str.4574, i64 14, i64 0 }, ptr %a593 - call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) - store { ptr, i64, i64 } %t590, ptr %a594 - call void @finch_str_drop(ptr %a594) - %t595 = load { ptr, i64, i64 }, ptr %a591 - %t596 = call { ptr, i64, i64 } @finch.gen.op(ptr %t569, { ptr, i64, i64 } %t595) - store { ptr, i64, i64 } %t595, ptr %a597 - call void @finch_str_drop(ptr %a597) - store { ptr, i64, i64 } %t596, ptr %a598 - %t599 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t600 = load ptr, ptr %a1 - %t601 = load { ptr, i64, i64 }, ptr %a598 - %t602 = call { ptr, i64, i64 } @finch.gen.load(ptr %t600, { ptr, i64, i64 } { ptr @.str.4575, i64 3, i64 0 }, { ptr, i64, i64 } %t601) - %t603 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t602, 0 - %t604 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4576, i64 3, i64 0 }) - %t605 = insertvalue %S.gen.Val %t603, %S.ast.Type %t604, 1 - %t606 = insertvalue %S.gen.Ref %t599, %S.gen.Val %t605, 2 - call void @finch_str_drop(ptr %a598) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t606 -endif7147: - %t607 = load ptr, ptr %a1 - %t608 = load ptr, ptr %a1 - %t609 = load %S.ast.Type, ptr %a164 - %t610 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t608, %S.ast.Type %t609) - store { ptr, i64, i64 } { ptr @.str.4577, i64 13, i64 0 }, ptr %a612 - store { ptr, i64, i64 } %t610, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - store { ptr, i64, i64 } %t615, ptr %a617 - store { ptr, i64, i64 } { ptr @.str.4578, i64 1, i64 0 }, ptr %a618 - call void @finch_str_concat(ptr %a616, ptr %a617, ptr %a618) - store { ptr, i64, i64 } %t615, ptr %a619 - call void @finch_str_drop(ptr %a619) - %t620 = load { ptr, i64, i64 }, ptr %a616 - %t621 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t622 = getelementptr inbounds %S.gen.Val, ptr %t621, i32 0, i32 0 - %t623 = load { ptr, i64, i64 }, ptr %t622 - store { ptr, i64, i64 } %t620, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t620, ptr %a627 - call void @finch_str_drop(ptr %a627) - %t628 = load { ptr, i64, i64 }, ptr %a624 - store { ptr, i64, i64 } %t628, ptr %a630 - store { ptr, i64, i64 } { ptr @.str.4579, i64 3, i64 0 }, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t628, ptr %a632 - call void @finch_str_drop(ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a629 - %t634 = call { ptr, i64, i64 } @finch.gen.op(ptr %t607, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t633, ptr %a635 - call void @finch_str_drop(ptr %a635) - store { ptr, i64, i64 } %t634, ptr %a636 - %t637 = load ptr, ptr %a1 - %t638 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t639 = load %S.gen.Val, ptr %t638 - call void @finch.gen.release(ptr %t637, %S.gen.Val %t639) - %t640 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t641 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t641, ptr %a642 - call void @finch_str_copy(ptr %a643, ptr %a642) - %t644 = load { ptr, i64, i64 }, ptr %a643 - %t645 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t644, 0 - %t646 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4580, i64 3, i64 0 }) - %t647 = insertvalue %S.gen.Val %t645, %S.ast.Type %t646, 1 - %t648 = insertvalue %S.gen.Ref %t640, %S.gen.Val %t647, 2 - call void @finch_str_drop(ptr %a636) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t648 -endif7138: - %t649 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t650 = load { ptr, i64, i64 }, ptr %t649 - store { ptr, i64, i64 } %t650, ptr %a651 - store { ptr, i64, i64 } { ptr @.str.4581, i64 6, i64 0 }, ptr %a652 - %t653 = call i32 @finch_str_eq(ptr %a651, ptr %a652) - %t654 = icmp eq i32 %t653, 0 - br i1 %t654, label %then7148, label %endif7150 -then7148: - %t655 = load ptr, ptr %a1 - %t656 = load %S.ast.Node, ptr %a2 - %t657 = load %S.ast.Type, ptr %a164 - %t658 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t657) - store { ptr, i64, i64 } %t658, ptr %a660 - store { ptr, i64, i64 } { ptr @.str.4582, i64 21, i64 0 }, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t658, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - %t664 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } %t663, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t663, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t670, ptr %a672 - store { ptr, i64, i64 } { ptr @.str.4583, i64 2, i64 0 }, ptr %a673 - call void @finch_str_concat(ptr %a671, ptr %a672, ptr %a673) - store { ptr, i64, i64 } %t670, ptr %a674 - call void @finch_str_drop(ptr %a674) - %t675 = load { ptr, i64, i64 }, ptr %a671 - call void @finch.gen.fail(ptr %t655, %S.ast.Node %t656, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t675, ptr %a676 - call void @finch_str_drop(ptr %a676) - br label %endif7150 -endif7150: - %t677 = load ptr, ptr %a1 - %t678 = icmp eq ptr %t677, null - br i1 %t678, label %panic7151, label %ok7152 -panic7151: - call void @finch_panic(ptr @.str.4584, i64 3979, ptr @.str.4585) - unreachable -ok7152: - %t679 = getelementptr inbounds %S.gen.Gen, ptr %t677, i32 0, i32 16 - %t680 = load ptr, ptr %a1 - %t681 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 3 - %t682 = load { ptr, i64, i64 }, ptr %t681 - %t683 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 2 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findStruct(ptr %t680, { ptr, i64, i64 } %t682, { ptr, i64, i64 } %t684) - %t686 = load { ptr, i64, i64 }, ptr %t679 - %t687 = extractvalue { ptr, i64, i64 } %t686, 1 - %t688 = icmp uge i64 %t685, %t687 - br i1 %t688, label %range7153, label %inrange7154 -range7153: - call void @finch_panic_index(ptr @.str.4586, i64 3979, i64 %t685, i64 %t687) - unreachable -inrange7154: - %t689 = extractvalue { ptr, i64, i64 } %t686, 0 - %t690 = getelementptr inbounds %S.gen.StructDef, ptr %t689, i64 %t685 - %t691 = load %S.gen.StructDef, ptr %t690 - store %S.gen.StructDef %t691, ptr %a692 - call void @finch.copy.S_gen_StructDef(ptr %a693, ptr %a692) - %t694 = load %S.gen.StructDef, ptr %a693 - store %S.gen.StructDef %t694, ptr %a695 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t697 = getelementptr inbounds { ptr, i64, i64 }, ptr %t696, i32 0, i32 1 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t697 - %t702 = load ptr, ptr %t696 - store i64 0, ptr %a703 - br label %find.cond7155 -find.cond7155: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body7156, label %find.end7159 -find.body7156: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit7157, label %find.next7158 -find.hit7157: - store i64 %t704, ptr %a700 - br label %find.end7159 -find.next7158: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond7155 -find.end7159: - %t713 = load i64, ptr %a700 - store i64 %t713, ptr %a714 - %t715 = load i64, ptr %a714 - %t716 = icmp slt i64 %t715, 0 - br i1 %t716, label %then7160, label %endif7162 -then7160: - %t717 = load ptr, ptr %a1 - %t718 = load %S.ast.Node, ptr %a2 - %t719 = load %S.ast.Type, ptr %a164 - %t720 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t719) - store { ptr, i64, i64 } { ptr @.str.4587, i64 11, i64 0 }, ptr %a722 - store { ptr, i64, i64 } %t720, ptr %a723 - call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723) - store { ptr, i64, i64 } %t720, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t725, ptr %a727 - store { ptr, i64, i64 } { ptr @.str.4588, i64 15, i64 0 }, ptr %a728 - call void @finch_str_concat(ptr %a726, ptr %a727, ptr %a728) - store { ptr, i64, i64 } %t725, ptr %a729 - call void @finch_str_drop(ptr %a729) - %t730 = load { ptr, i64, i64 }, ptr %a726 - %t731 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t730, ptr %a734 - store { ptr, i64, i64 } %t732, ptr %a735 - call void @finch_str_concat(ptr %a733, ptr %a734, ptr %a735) - store { ptr, i64, i64 } %t730, ptr %a736 - call void @finch_str_drop(ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a733 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.4589, i64 11, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t744 = getelementptr inbounds { ptr, i64, i64 }, ptr %t743, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4590, i64 2, i64 0 }, ptr %a745 - call void @finch_str_join(ptr %a746, ptr %t743, ptr %a745) - %t747 = load { ptr, i64, i64 }, ptr %a746 - store { ptr, i64, i64 } %t742, ptr %a749 - store { ptr, i64, i64 } %t747, ptr %a750 - call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750) - store { ptr, i64, i64 } %t742, ptr %a751 - call void @finch_str_drop(ptr %a751) - store { ptr, i64, i64 } %t747, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a748 - store { ptr, i64, i64 } %t753, ptr %a755 - store { ptr, i64, i64 } { ptr @.str.4591, i64 1, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - call void @finch.gen.fail(ptr %t717, %S.ast.Node %t718, { ptr, i64, i64 } %t758) - store { ptr, i64, i64 } %t758, ptr %a759 - call void @finch_str_drop(ptr %a759) - br label %endif7162 -endif7162: - %t760 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 12 - %t761 = load i64, ptr %a714 - %t762 = load { ptr, i64, i64 }, ptr %t760 - %t763 = extractvalue { ptr, i64, i64 } %t762, 1 - %t764 = icmp uge i64 %t761, %t763 - br i1 %t764, label %range7163, label %inrange7164 -range7163: - call void @finch_panic_index(ptr @.str.4592, i64 3984, i64 %t761, i64 %t763) - unreachable -inrange7164: - %t765 = extractvalue { ptr, i64, i64 } %t762, 0 - %t766 = getelementptr inbounds %S.ast.Type, ptr %t765, i64 %t761 - %t767 = load %S.ast.Type, ptr %t766 - store %S.ast.Type %t767, ptr %a768 - call void @finch.copy.S_ast_Type(ptr %a769, ptr %a768) - %t770 = load %S.ast.Type, ptr %a769 - store %S.ast.Type %t770, ptr %a771 - %t772 = load ptr, ptr %a1 - %t773 = load %S.ast.Node, ptr %a2 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t775 = load i64, ptr %t774 - %t776 = add i64 %t775, 1 - %t777 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t778 = getelementptr inbounds { ptr, i64, i64 }, ptr %t777, i32 0, i32 1 - %t779 = load i64, ptr %t778 - %t780 = load %S.ast.Type, ptr %a771 - %t781 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t780) - store { ptr, i64, i64 } { ptr @.str.4593, i64 9, i64 0 }, ptr %a783 - store { ptr, i64, i64 } %t781, ptr %a784 - call void @finch_str_concat(ptr %a782, ptr %a783, ptr %a784) - store { ptr, i64, i64 } %t781, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a782 - store { ptr, i64, i64 } %t786, ptr %a788 - store { ptr, i64, i64 } { ptr @.str.4594, i64 1, i64 0 }, ptr %a789 - call void @finch_str_concat(ptr %a787, ptr %a788, ptr %a789) - store { ptr, i64, i64 } %t786, ptr %a790 - call void @finch_str_drop(ptr %a790) - %t791 = load { ptr, i64, i64 }, ptr %a787 - %t792 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t793 = load { ptr, i64, i64 }, ptr %t792 - store { ptr, i64, i64 } %t791, ptr %a795 - store { ptr, i64, i64 } %t793, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t791, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - store { ptr, i64, i64 } %t798, ptr %a800 - store { ptr, i64, i64 } { ptr @.str.4595, i64 4, i64 0 }, ptr %a801 - call void @finch_str_concat(ptr %a799, ptr %a800, ptr %a801) - store { ptr, i64, i64 } %t798, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a799 - call void @finch.gen.noteRef(ptr %t772, %S.ast.Node %t773, i64 %t776, i64 %t779, { ptr, i64, i64 } %t803, { ptr, i64, i64 } { ptr @.str.4596, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t803, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t806 = load i1, ptr %t805 - br i1 %t806, label %then7165, label %endif7167 -then7165: - %t807 = load ptr, ptr %a1 - %t808 = load ptr, ptr %a1 - %t809 = load %S.ast.Type, ptr %a164 - %t810 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t808, %S.ast.Type %t809) - store { ptr, i64, i64 } { ptr @.str.4597, i64 23, i64 0 }, ptr %a812 - store { ptr, i64, i64 } %t810, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - store { ptr, i64, i64 } %t815, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.4598, i64 6, i64 0 }, ptr %a818 - call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818) - store { ptr, i64, i64 } %t815, ptr %a819 - call void @finch_str_drop(ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a816 - %t821 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t822 = getelementptr inbounds %S.gen.Place, ptr %t821, i32 0, i32 0 - %t823 = load { ptr, i64, i64 }, ptr %t822 - store { ptr, i64, i64 } %t820, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t820, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.4599, i64 13, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t835 = load i64, ptr %a714 - %t836 = load { ptr, i64, i64 }, ptr %t834 - %t837 = extractvalue { ptr, i64, i64 } %t836, 1 - %t838 = icmp uge i64 %t835, %t837 - br i1 %t838, label %range7168, label %inrange7169 -range7168: - call void @finch_panic_index(ptr @.str.4600, i64 3987, i64 %t835, i64 %t837) - unreachable -inrange7169: - %t839 = extractvalue { ptr, i64, i64 } %t836, 0 - %t840 = getelementptr inbounds i64, ptr %t839, i64 %t835 - %t841 = load i64, ptr %t840 - call void @finch_str_from_int(ptr %a842, i64 %t841) - %t843 = load { ptr, i64, i64 }, ptr %a842 - store { ptr, i64, i64 } %t833, ptr %a845 - store { ptr, i64, i64 } %t843, ptr %a846 - call void @finch_str_concat(ptr %a844, ptr %a845, ptr %a846) - store { ptr, i64, i64 } %t833, ptr %a847 - call void @finch_str_drop(ptr %a847) - store { ptr, i64, i64 } %t843, ptr %a848 - call void @finch_str_drop(ptr %a848) - %t849 = load { ptr, i64, i64 }, ptr %a844 - %t850 = call { ptr, i64, i64 } @finch.gen.op(ptr %t807, { ptr, i64, i64 } %t849) - store { ptr, i64, i64 } %t849, ptr %a851 - call void @finch_str_drop(ptr %a851) - store { ptr, i64, i64 } %t850, ptr %a852 - %t853 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t854 = load { ptr, i64, i64 }, ptr %a852 - store { ptr, i64, i64 } %t854, ptr %a855 - call void @finch_str_copy(ptr %a856, ptr %a855) - %t857 = load { ptr, i64, i64 }, ptr %a856 - %t858 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t857, 0 - %t859 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t859, ptr %a860 - call void @finch.copy.S_ast_Type(ptr %a861, ptr %a860) - %t862 = load %S.ast.Type, ptr %a861 - %t863 = insertvalue %S.gen.Place %t858, %S.ast.Type %t862, 1 - %t864 = insertvalue %S.gen.Ref %t853, %S.gen.Place %t863, 1 - call void @finch_str_drop(ptr %a852) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t864 -endif7167: - %t865 = load ptr, ptr %a1 - %t866 = load ptr, ptr %a1 - %t867 = load %S.ast.Type, ptr %a164 - %t868 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t866, %S.ast.Type %t867) - store { ptr, i64, i64 } { ptr @.str.4601, i64 13, i64 0 }, ptr %a870 - store { ptr, i64, i64 } %t868, ptr %a871 - call void @finch_str_concat(ptr %a869, ptr %a870, ptr %a871) - store { ptr, i64, i64 } %t868, ptr %a872 - call void @finch_str_drop(ptr %a872) - %t873 = load { ptr, i64, i64 }, ptr %a869 - store { ptr, i64, i64 } %t873, ptr %a875 - store { ptr, i64, i64 } { ptr @.str.4602, i64 1, i64 0 }, ptr %a876 - call void @finch_str_concat(ptr %a874, ptr %a875, ptr %a876) - store { ptr, i64, i64 } %t873, ptr %a877 - call void @finch_str_drop(ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a874 - %t879 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t880 = getelementptr inbounds %S.gen.Val, ptr %t879, i32 0, i32 0 - %t881 = load { ptr, i64, i64 }, ptr %t880 - store { ptr, i64, i64 } %t878, ptr %a883 - store { ptr, i64, i64 } %t881, ptr %a884 - call void @finch_str_concat(ptr %a882, ptr %a883, ptr %a884) - store { ptr, i64, i64 } %t878, ptr %a885 - call void @finch_str_drop(ptr %a885) - %t886 = load { ptr, i64, i64 }, ptr %a882 - store { ptr, i64, i64 } %t886, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.4603, i64 2, i64 0 }, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - store { ptr, i64, i64 } %t886, ptr %a890 - call void @finch_str_drop(ptr %a890) - %t891 = load { ptr, i64, i64 }, ptr %a887 - %t892 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t893 = load i64, ptr %a714 - %t894 = load { ptr, i64, i64 }, ptr %t892 - %t895 = extractvalue { ptr, i64, i64 } %t894, 1 - %t896 = icmp uge i64 %t893, %t895 - br i1 %t896, label %range7170, label %inrange7171 -range7170: - call void @finch_panic_index(ptr @.str.4604, i64 3990, i64 %t893, i64 %t895) - unreachable -inrange7171: - %t897 = extractvalue { ptr, i64, i64 } %t894, 0 - %t898 = getelementptr inbounds i64, ptr %t897, i64 %t893 - %t899 = load i64, ptr %t898 - call void @finch_str_from_int(ptr %a900, i64 %t899) - %t901 = load { ptr, i64, i64 }, ptr %a900 - store { ptr, i64, i64 } %t891, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - store { ptr, i64, i64 } %t891, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t901, ptr %a906 - call void @finch_str_drop(ptr %a906) - %t907 = load { ptr, i64, i64 }, ptr %a902 - %t908 = call { ptr, i64, i64 } @finch.gen.op(ptr %t865, { ptr, i64, i64 } %t907) - store { ptr, i64, i64 } %t907, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t908, ptr %a910 - %t911 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t911, ptr %a912 - call void @finch_str_copy(ptr %a913, ptr %a912) - %t914 = load { ptr, i64, i64 }, ptr %a913 - %t915 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t914, 0 - %t916 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t916, ptr %a917 - call void @finch.copy.S_ast_Type(ptr %a918, ptr %a917) - %t919 = load %S.ast.Type, ptr %a918 - %t920 = insertvalue %S.gen.Val %t915, %S.ast.Type %t919, 1 - store %S.gen.Val %t920, ptr %a921 - %t922 = load ptr, ptr %a1 - %t923 = load %S.ast.Type, ptr %a771 - %t924 = call i1 @finch.gen.owning(ptr %t922, %S.ast.Type %t923) - br label %logic.from7172 -logic.from7172: - br i1 %t924, label %logic.rhs7173, label %logic.end7174 -logic.rhs7173: - %t925 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t926 = getelementptr inbounds %S.gen.Val, ptr %t925, i32 0, i32 2 - %t927 = load i1, ptr %t926 - br label %logic.rend7175 -logic.rend7175: - br label %logic.end7174 -logic.end7174: - %t928 = phi i1 [ false, %logic.from7172 ], [ %t927, %logic.rend7175 ] - br i1 %t928, label %then7176, label %endif7178 -then7176: - %t929 = load ptr, ptr %a1 - %t930 = load { ptr, i64, i64 }, ptr %a910 - %t931 = load %S.ast.Type, ptr %a771 - %t932 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t929, { ptr, i64, i64 } %t930, %S.ast.Type %t931) - %t933 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t932, 0 - %t934 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t934, ptr %a935 - call void @finch.copy.S_ast_Type(ptr %a936, ptr %a935) - %t937 = load %S.ast.Type, ptr %a936 - %t938 = insertvalue %S.gen.Val %t933, %S.ast.Type %t937, 1 - %t939 = insertvalue %S.gen.Val %t938, i1 true, 2 - %t940 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t939, ptr %a921 - store %S.gen.Val %t940, ptr %a941 - call void @finch.drop.S_gen_Val(ptr %a941) - br label %endif7178 -endif7178: - %t942 = load ptr, ptr %a1 - %t943 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t944 = load %S.gen.Val, ptr %t943 - call void @finch.gen.release(ptr %t942, %S.gen.Val %t944) - %t945 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t946 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t946, ptr %a947 - call void @finch.copy.S_gen_Val(ptr %a948, ptr %a947) - %t949 = load %S.gen.Val, ptr %a948 - %t950 = insertvalue %S.gen.Ref %t945, %S.gen.Val %t949, 2 - call void @finch.drop.S_gen_Val(ptr %a921) - call void @finch_str_drop(ptr %a910) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t950 -} - -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 - %a20 = alloca i64, align 16 - %a32 = alloca %S.gen.Ref, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range7179, label %inrange7180 -range7179: - call void @finch_panic_index(ptr @.str.4605, i64 4000, i64 0, i64 %t7) - unreachable -inrange7180: - %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 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic7181, label %ok7182 -panic7181: - call void @finch_panic(ptr @.str.4606, i64 4001, ptr @.str.4607) - unreachable -ok7182: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 11 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - %t19 = load i64, ptr %t18 - store i64 %t19, ptr %a20 - %t21 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 - %t22 = load i1, ptr %t21 - %t23 = xor i1 %t22, true - br i1 %t23, label %then7183, label %endif7185 -then7183: - %t24 = load ptr, ptr %a1 - %t25 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 - %t26 = load %S.gen.Val, ptr %t25 - call void @finch.gen.hold(ptr %t24, %S.gen.Val %t26) - br label %endif7185 -endif7185: - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Node, ptr %a2 - %t29 = load %S.gen.Ref, ptr %a14 - %t30 = load i1, ptr %a3 - %t31 = call %S.gen.Ref @finch.gen.indexOf(ptr %t27, %S.ast.Node %t28, %S.gen.Ref %t29, i1 %t30) - store %S.gen.Ref %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load i64, ptr %a20 - call void @finch.gen.heldEnd(ptr %t33, i64 %t34) - %t35 = load %S.gen.Ref, ptr %a32 - call void @finch.drop.S_gen_Ref(ptr %a14) - ret %S.gen.Ref %t35 -} - -define internal %S.gen.Ref @finch.gen.indexOf(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, i1 %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca %S.gen.Ref, align 16 - %a4 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a9 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a180 = alloca %S.ast.Type, align 16 - %a182 = alloca %S.ast.Type, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca %S.ast.Type, align 16 - %a263 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a386 = alloca %S.ast.Type, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca %S.ast.Type, align 16 - %a405 = alloca %S.ast.Type, align 16 - %a408 = alloca %S.gen.Val, align 16 - %a422 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.ast.Type, align 16 - %a428 = alloca %S.gen.Val, align 16 - %a434 = alloca %S.gen.Val, align 16 - %a435 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - store i1 %p3, ptr %a4 - %t5 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t6 = getelementptr inbounds %S.gen.Val, ptr %t5, i32 0, i32 1 - %t7 = load %S.ast.Type, ptr %t6 - store %S.ast.Type %t7, ptr %a8 - call void @finch.copy.S_ast_Type(ptr %a9, ptr %a8) - %t10 = load %S.ast.Type, ptr %a9 - store %S.ast.Type %t10, ptr %a11 - %t12 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t13 = load i1, ptr %t12 - br i1 %t13, label %then7186, label %endif7188 -then7186: - %t14 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t15 = getelementptr inbounds %S.gen.Place, ptr %t14, i32 0, i32 1 - %t16 = load %S.ast.Type, ptr %t15 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = load %S.ast.Type, ptr %a11 - store %S.ast.Type %t19, ptr %a11 - store %S.ast.Type %t20, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - br label %endif7188 -endif7188: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.4608, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then7189, label %endif7191 -then7189: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - %t30 = load %S.gen.Ref, ptr %a3 - %t31 = load %S.ast.Type, ptr %a11 - %t32 = load i1, ptr %a4 - %t33 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t28, %S.ast.Node %t29, %S.gen.Ref %t30, %S.ast.Type %t31, i1 %t32) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t33 -endif7191: - %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 %range7192, label %inrange7193 -range7192: - call void @finch_panic_index(ptr @.str.4609, i64 4018, i64 1, i64 %t38) - unreachable -inrange7193: - %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.4610, 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 %range7194, label %inrange7195 -range7194: - call void @finch_panic_index(ptr @.str.4611, i64 4018, i64 1, i64 %t47) - unreachable -inrange7195: - %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.4612, i64 8, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4613, i64 5, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then7196, label %endif7198 -then7196: - store { ptr, i64, i64 } { ptr @.str.4614, i64 0, i64 0 }, ptr %a67 - %t68 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t69 = load i1, ptr %t68 - br i1 %t69, label %then7199, label %else7200 -then7199: - %t70 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t71 = getelementptr inbounds %S.gen.Place, ptr %t70, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_copy(ptr %a74, ptr %a73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - %t76 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t75, ptr %a67 - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif7201 -else7200: - %t78 = load ptr, ptr %a1 - %t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t80 = load %S.gen.Val, ptr %t79 - %t81 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t78, %S.gen.Val %t80) - %t82 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t81, ptr %a67 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif7201 -endif7201: - %t84 = load ptr, ptr %a1 - %t85 = load { ptr, i64, i64 }, ptr %a60 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 4 - %t87 = load i64, ptr %t86 - call void @finch_str_from_int(ptr %a88, i64 %t87) - %t89 = load { ptr, i64, i64 }, ptr %a88 - %t90 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t84, { ptr, i64, i64 } %t85, { ptr, i64, i64 } %t89, %S.ast.Node %t90) - store { ptr, i64, i64 } %t89, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Type, ptr %a11 - %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4615, i64 23, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4616, i64 6, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t105, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t105, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4617, i64 13, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t122) - store { ptr, i64, i64 } %t122, ptr %a124 - call void @finch_str_drop(ptr %a124) - store { ptr, i64, i64 } %t123, ptr %a125 - %t126 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t127 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t130, 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t133 = load { ptr, i64, i64 }, ptr %t132 - %t134 = extractvalue { ptr, i64, i64 } %t133, 1 - %t135 = icmp uge i64 0, %t134 - br i1 %t135, label %range7202, label %inrange7203 -range7202: - call void @finch_panic_index(ptr @.str.4618, i64 4028, i64 0, i64 %t134) - unreachable -inrange7203: - %t136 = extractvalue { ptr, i64, i64 } %t133, 0 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 - %t138 = load %S.ast.Type, ptr %t137 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Place %t131, %S.ast.Type %t141, 1 - %t143 = insertvalue %S.gen.Ref %t126, %S.gen.Place %t142, 1 - call void @finch_str_drop(ptr %a125) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t143 -endif7198: - %t144 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t145 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t145, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4619, i64 3, i64 0 }, ptr %a147 - %t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147) - %t149 = icmp ne i32 %t148, 0 - br i1 %t149, label %then7204, label %endif7206 -then7204: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = icmp eq i64 %t152, 0 - br i1 %t153, label %then7207, label %endif7209 -then7207: - %t154 = load ptr, ptr %a1 - %t155 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } { ptr @.str.4620, i64 57, i64 0 }) - br label %endif7209 -endif7209: - %t156 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t157 = getelementptr inbounds %S.gen.Val, ptr %t156, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_copy(ptr %a160, ptr %a159) - %t161 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t161, ptr %a162 - %t163 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t164 = load i1, ptr %t163 - br i1 %t164, label %then7210, label %endif7212 -then7210: - %t165 = load ptr, ptr %a1 - %t166 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t167 = getelementptr inbounds %S.gen.Place, ptr %t166, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t165, { ptr, i64, i64 } { ptr @.str.4621, i64 3, i64 0 }, { ptr, i64, i64 } %t168) - %t170 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t169, ptr %a162 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7212 -endif7212: - %t172 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t173 = load { ptr, i64, i64 }, ptr %t172 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 0, %t174 - br i1 %t175, label %range7213, label %inrange7214 -range7213: - call void @finch_panic_index(ptr @.str.4622, i64 4038, i64 0, i64 %t174) - unreachable -inrange7214: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds %S.ast.Type, ptr %t176, i64 0 - %t178 = load %S.ast.Type, ptr %t177 - store %S.ast.Type %t178, ptr %a179 - call void @finch.copy.S_ast_Type(ptr %a180, ptr %a179) - %t181 = load %S.ast.Type, ptr %a180 - store %S.ast.Type %t181, ptr %a182 - %t183 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t184 = load ptr, ptr %a1 - %t185 = load ptr, ptr %a1 - %t186 = load %S.ast.Type, ptr %a182 - %t187 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t186) - store { ptr, i64, i64 } { ptr @.str.4623, i64 23, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4624, i64 6, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.4625, i64 6, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t218 = load %S.ast.Type, ptr %a182 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t183, %S.gen.Place %t222, 1 - call void @finch.drop.S_ast_Type(ptr %a182) - call void @finch_str_drop(ptr %a162) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t223 -endif7206: - %t224 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t225, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4626, i64 5, i64 0 }, ptr %a227 - %t228 = call i32 @finch_str_eq(ptr %a226, ptr %a227) - %t229 = icmp eq i32 %t228, 0 - br label %logic.from7215 -logic.from7215: - br i1 %t229, label %logic.rhs7216, label %logic.end7217 -logic.rhs7216: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4627, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp eq i32 %t234, 0 - br label %logic.rend7218 -logic.rend7218: - br label %logic.end7217 -logic.end7217: - %t236 = phi i1 [ false, %logic.from7215 ], [ %t235, %logic.rend7218 ] - br i1 %t236, label %then7219, label %endif7221 -then7219: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = load %S.ast.Type, ptr %a11 - %t240 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t239) - store { ptr, i64, i64 } { ptr @.str.4628, i64 46, i64 0 }, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7221 -endif7221: - %t247 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4629, i64 4, i64 0 }) - store %S.ast.Type %t247, ptr %a248 - %t249 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4630, i64 5, i64 0 }, ptr %a252 - %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) - %t254 = icmp ne i32 %t253, 0 - br i1 %t254, label %then7222, label %endif7224 -then7222: - %t255 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = extractvalue { ptr, i64, i64 } %t256, 1 - %t258 = icmp uge i64 0, %t257 - br i1 %t258, label %range7225, label %inrange7226 -range7225: - call void @finch_panic_index(ptr @.str.4631, i64 4046, i64 0, i64 %t257) - unreachable -inrange7226: - %t259 = extractvalue { ptr, i64, i64 } %t256, 0 - %t260 = getelementptr inbounds %S.ast.Type, ptr %t259, i64 0 - %t261 = load %S.ast.Type, ptr %t260 - store %S.ast.Type %t261, ptr %a262 - call void @finch.copy.S_ast_Type(ptr %a263, ptr %a262) - %t264 = load %S.ast.Type, ptr %a263 - %t265 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t264, ptr %a248 - store %S.ast.Type %t265, ptr %a266 - call void @finch.drop.S_ast_Type(ptr %a266) - br label %endif7224 -endif7224: - %t267 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4632, i64 3, i64 0 }, ptr %a270 - %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) - %t272 = icmp ne i32 %t271, 0 - br label %logic.from7227 -logic.from7227: - br i1 %t272, label %logic.rhs7228, label %logic.end7229 -logic.rhs7228: - %t273 = load i1, ptr %a4 - br label %logic.rend7230 -logic.rend7230: - br label %logic.end7229 -logic.end7229: - %t274 = phi i1 [ false, %logic.from7227 ], [ %t273, %logic.rend7230 ] - br i1 %t274, label %then7231, label %endif7233 -then7231: - %t275 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t276 = load i1, ptr %t275 - %t277 = xor i1 %t276, true - br i1 %t277, label %then7234, label %endif7236 -then7234: - %t278 = load ptr, ptr %a1 - %t279 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.4633, i64 44, i64 0 }) - br label %endif7236 -endif7236: - %t280 = load ptr, ptr %a1 - %t281 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t282 = getelementptr inbounds %S.gen.Place, ptr %t281, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - store { ptr, i64, i64 } { ptr @.str.4634, i64 29, i64 0 }, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t287, ptr %a289 - store { ptr, i64, i64 } { ptr @.str.4635, i64 1, i64 0 }, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t287, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.emit(ptr %t280, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_drop(ptr %a293) - br label %endif7233 -endif7233: - %t294 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t295 = getelementptr inbounds %S.gen.Val, ptr %t294, i32 0, i32 0 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_copy(ptr %a298, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t299, ptr %a300 - %t301 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t302 = load i1, ptr %t301 - br i1 %t302, label %then7237, label %endif7239 -then7237: - %t303 = load ptr, ptr %a1 - %t304 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t305 = getelementptr inbounds %S.gen.Place, ptr %t304, i32 0, i32 0 - %t306 = load { ptr, i64, i64 }, ptr %t305 - %t307 = call { ptr, i64, i64 } @finch.gen.load(ptr %t303, { ptr, i64, i64 } { ptr @.str.4636, i64 17, i64 0 }, { ptr, i64, i64 } %t306) - %t308 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t307, ptr %a300 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif7239 -endif7239: - %t310 = load ptr, ptr %a1 - %t311 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4637, i64 31, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4638, i64 3, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call { ptr, i64, i64 } @finch.gen.op(ptr %t310, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store { ptr, i64, i64 } %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a60 - %t326 = load { ptr, i64, i64 }, ptr %a323 - %t327 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t324, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326, %S.ast.Node %t327) - %t328 = load ptr, ptr %a1 - %t329 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4639, i64 31, i64 0 }, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t333, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.4640, i64 3, i64 0 }, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - %t339 = call { ptr, i64, i64 } @finch.gen.op(ptr %t328, { ptr, i64, i64 } %t338) - store { ptr, i64, i64 } %t338, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t339, ptr %a341 - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a248 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - store { ptr, i64, i64 } { ptr @.str.4641, i64 23, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t345, ptr %a348 - call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348) - store { ptr, i64, i64 } %t345, ptr %a349 - call void @finch_str_drop(ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4642, i64 6, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t355, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t355, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.4643, i64 6, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - store { ptr, i64, i64 } %t361, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a362 - %t367 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t366, ptr %a369 - store { ptr, i64, i64 } %t367, ptr %a370 - call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) - store { ptr, i64, i64 } %t366, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = load { ptr, i64, i64 }, ptr %a368 - %t373 = call { ptr, i64, i64 } @finch.gen.op(ptr %t342, { ptr, i64, i64 } %t372) - store { ptr, i64, i64 } %t372, ptr %a374 - call void @finch_str_drop(ptr %a374) - store { ptr, i64, i64 } %t373, ptr %a375 - %t376 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t377 = load i1, ptr %t376 - br i1 %t377, label %then7240, label %endif7242 -then7240: - %t378 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t379 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t379, ptr %a380 - call void @finch_str_copy(ptr %a381, ptr %a380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - %t383 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t382, 0 - %t384 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t384, ptr %a385 - call void @finch.copy.S_ast_Type(ptr %a386, ptr %a385) - %t387 = load %S.ast.Type, ptr %a386 - %t388 = insertvalue %S.gen.Place %t383, %S.ast.Type %t387, 1 - %t389 = insertvalue %S.gen.Ref %t378, %S.gen.Place %t388, 1 - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t389 -endif7242: - %t390 = load ptr, ptr %a1 - %t391 = load ptr, ptr %a1 - %t392 = load %S.ast.Type, ptr %a248 - %t393 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t391, %S.ast.Type %t392) - %t394 = load { ptr, i64, i64 }, ptr %a375 - %t395 = call { ptr, i64, i64 } @finch.gen.load(ptr %t390, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) - store { ptr, i64, i64 } %t393, ptr %a396 - call void @finch_str_drop(ptr %a396) - store { ptr, i64, i64 } %t395, ptr %a397 - %t398 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t398, ptr %a399 - call void @finch_str_copy(ptr %a400, ptr %a399) - %t401 = load { ptr, i64, i64 }, ptr %a400 - %t402 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t401, 0 - %t403 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t403, ptr %a404 - call void @finch.copy.S_ast_Type(ptr %a405, ptr %a404) - %t406 = load %S.ast.Type, ptr %a405 - %t407 = insertvalue %S.gen.Val %t402, %S.ast.Type %t406, 1 - store %S.gen.Val %t407, ptr %a408 - %t409 = load ptr, ptr %a1 - %t410 = load %S.ast.Type, ptr %a248 - %t411 = call i1 @finch.gen.owning(ptr %t409, %S.ast.Type %t410) - br label %logic.from7243 -logic.from7243: - br i1 %t411, label %logic.rhs7244, label %logic.end7245 -logic.rhs7244: - %t412 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t413 = getelementptr inbounds %S.gen.Val, ptr %t412, i32 0, i32 2 - %t414 = load i1, ptr %t413 - br label %logic.rend7246 -logic.rend7246: - br label %logic.end7245 -logic.end7245: - %t415 = phi i1 [ false, %logic.from7243 ], [ %t414, %logic.rend7246 ] - br i1 %t415, label %then7247, label %endif7249 -then7247: - %t416 = load ptr, ptr %a1 - %t417 = load { ptr, i64, i64 }, ptr %a397 - %t418 = load %S.ast.Type, ptr %a248 - %t419 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t416, { ptr, i64, i64 } %t417, %S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t421, ptr %a422 - call void @finch.copy.S_ast_Type(ptr %a423, ptr %a422) - %t424 = load %S.ast.Type, ptr %a423 - %t425 = insertvalue %S.gen.Val %t420, %S.ast.Type %t424, 1 - %t426 = insertvalue %S.gen.Val %t425, i1 true, 2 - %t427 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t426, ptr %a408 - store %S.gen.Val %t427, ptr %a428 - call void @finch.drop.S_gen_Val(ptr %a428) - br label %endif7249 -endif7249: - %t429 = load ptr, ptr %a1 - %t430 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t431 = load %S.gen.Val, ptr %t430 - call void @finch.gen.release(ptr %t429, %S.gen.Val %t431) - %t432 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t433 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t433, ptr %a434 - call void @finch.copy.S_gen_Val(ptr %a435, ptr %a434) - %t436 = load %S.gen.Val, ptr %a435 - %t437 = insertvalue %S.gen.Ref %t432, %S.gen.Val %t436, 2 - call void @finch.drop.S_gen_Val(ptr %a408) - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t437 -} - -define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.cond7250 -each.cond7250: - %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.body7251, label %each.end7253 -each.body7251: - %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 %then7254, label %endif7256 -then7254: - %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.4644, 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.4645, i64 36, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %endif7256 -endif7256: - br label %each.step7252 -each.step7252: - %t38 = load i64, ptr %a13 - %t39 = add i64 %t38, 1 - store i64 %t39, ptr %a13 - br label %each.cond7250 -each.end7253: - %t40 = load i64, ptr %a11 - %t41 = load i64, ptr %a4 - %t42 = icmp ne i64 %t40, %t41 - br i1 %t42, label %then7257, label %endif7259 -then7257: - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4646, i64 1, i64 0 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.4647, i64 8, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a56, i64 %t55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } %t57, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.4648, i64 22, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a70, i64 %t69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t68, ptr %a75 - call void @finch_str_drop(ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t77) - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif7259 -endif7259: - 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 - %a12 = alloca %S.gen.Val, align 16 - %a13 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.4649, i64 3, i64 0 }) - %t9 = load %S.ast.Node, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %a3 - %t11 = call %S.gen.Val @finch.gen.coerce(ptr %t4, %S.gen.Val %t7, %S.ast.Type %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t10) - store %S.gen.Val %t7, ptr %a12 - call void @finch.drop.S_gen_Val(ptr %a12) - store %S.ast.Type %t8, ptr %a13 - call void @finch.drop.S_ast_Type(ptr %a13) - ret %S.gen.Val %t11 -} - -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.4650, 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.4651, 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 %then7260, label %endif7262 -then7260: - ret { ptr, i64, i64 } { ptr @.str.4652, i64 3, i64 0 } -endif7262: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4653, 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 %then7263, label %endif7265 -then7263: - ret { ptr, i64, i64 } { ptr @.str.4654, i64 5, i64 0 } -endif7265: - %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.4655, i64 3, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 - store { ptr, i64, i64 } { ptr @.str.4656, i64 5, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 - store { ptr, i64, i64 } { ptr @.str.4657, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3 - store { ptr, i64, i64 } { ptr @.str.4658, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 - store { ptr, i64, i64 } { ptr @.str.4659, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 - store { ptr, i64, i64 } { ptr @.str.4660, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6 - store { ptr, i64, i64 } { ptr @.str.4661, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 - store { ptr, i64, i64 } { ptr @.str.4662, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 - store { ptr, i64, i64 } { ptr @.str.4663, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9 - store { ptr, i64, i64 } { ptr @.str.4664, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 - store { ptr, i64, i64 } { ptr @.str.4665, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 - store { ptr, i64, i64 } { ptr @.str.4666, i64 3, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12 - store { ptr, i64, i64 } { ptr @.str.4667, 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.cond7266 -find.cond7266: - %t37 = load i64, ptr %a36 - %t38 = icmp slt i64 %t37, %t34 - br i1 %t38, label %find.body7267, label %find.end7270 -find.body7267: - %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.hit7268, label %find.next7269 -find.hit7268: - store i64 %t37, ptr %a33 - br label %find.end7270 -find.next7269: - %t45 = add i64 %t37, 1 - store i64 %t45, ptr %a36 - br label %find.cond7266 -find.end7270: - %t46 = load i64, ptr %a33 - %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then7271, label %endif7273 -then7271: - %t48 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t51 -endif7273: - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.4668, 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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.ast.Type, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a365 = alloca %S.ast.Type, align 16 - %a366 = alloca %S.ast.Type, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a387 = alloca %S.ast.Type, align 16 - %a388 = alloca %S.ast.Type, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a418 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Type, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a527 = alloca %S.ast.Type, align 16 - %a528 = alloca %S.ast.Type, align 16 - %a541 = alloca %S.ast.Type, align 16 - %a542 = alloca %S.ast.Type, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca %S.ast.Type, align 16 - %a585 = alloca %S.ast.Type, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.ast.Type, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca %S.ast.Type, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca %S.ast.Type, align 16 - %a651 = alloca %S.ast.Type, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca %S.ast.Type, align 16 - %a689 = alloca %S.ast.Type, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %range7274, label %inrange7275 -range7274: - call void @finch_panic_index(ptr @.str.4669, i64 4116, i64 0, i64 %t11) - unreachable -inrange7275: - %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 %then7276, label %endif7278 -then7276: - %t27 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t27 -endif7278: - %t28 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t29 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.4670, 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.from7279 -logic.from7279: - br i1 %t33, label %logic.rhs7280, label %logic.end7281 -logic.rhs7280: - %t34 = load %S.ast.Type, ptr %a3 - %t35 = call i1 @finch.gen.isNumber(%S.ast.Type %t34) - br label %logic.rend7282 -logic.rend7282: - br label %logic.end7281 -logic.end7281: - %t36 = phi i1 [ false, %logic.from7279 ], [ %t35, %logic.rend7282 ] - br label %logic.from7283 -logic.from7283: - br i1 %t36, label %logic.rhs7284, label %logic.end7285 -logic.rhs7284: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic7286, label %ok7287 -panic7286: - call void @finch_panic(ptr @.str.4671, i64 4121, ptr @.str.4672) - unreachable -ok7287: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 41 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend7288 -logic.rend7288: - br label %logic.end7285 -logic.end7285: - %t48 = phi i1 [ false, %logic.from7283 ], [ %t46, %logic.rend7288 ] - br i1 %t48, label %then7289, label %endif7291 -then7289: - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.4673, i64 17, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.4674, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4675, i64 15, i64 0 }, { ptr, i64, i64 } %t53) - %t54 = load %S.ast.Type, ptr %a3 - %t55 = call i1 @finch.gen.isInt(%S.ast.Type %t54) - br i1 %t55, label %then7292, label %endif7294 -then7292: - %t56 = load ptr, ptr %a1 - %t57 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t56, { ptr, i64, i64 } { ptr @.str.4676, i64 3, i64 0 }) - store { ptr, i64, i64 } %t57, ptr %a58 - %t59 = load ptr, ptr %a1 - %t60 = load { ptr, i64, i64 }, ptr %a58 - call void @finch.gen.store(ptr %t59, { ptr, i64, i64 } { ptr @.str.4677, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4678, i64 1, i64 0 }, { ptr, i64, i64 } %t60) - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = load %S.gen.Val, ptr %a17 - %t64 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t62, %S.gen.Val %t63) - store { ptr, i64, i64 } { ptr @.str.4679, i64 32, i64 0 }, ptr %a66 - store { ptr, i64, i64 } %t64, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4680, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4681, i64 6, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.4682, i64 1, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t97, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4683, i64 12, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4684, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic7295, label %ok7296 -panic7295: - call void @finch_panic(ptr @.str.4685, i64 4129, ptr @.str.4686) - unreachable -ok7296: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 42 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t111, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = load { ptr, i64, i64 }, ptr %a51 - %t120 = call { ptr, i64, i64 } @finch.gen.load(ptr %t118, { ptr, i64, i64 } { ptr @.str.4687, i64 17, i64 0 }, { ptr, i64, i64 } %t119) - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic7297, label %ok7298 -panic7297: - call void @finch_panic(ptr @.str.4688, i64 4130, ptr @.str.4689) - unreachable -ok7298: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 43 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t120, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load ptr, ptr %a1 - %t127 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t126, %S.gen.Val %t127) - %t128 = load ptr, ptr %a1 - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a58 - %t131 = call { ptr, i64, i64 } @finch.gen.load(ptr %t129, { ptr, i64, i64 } { ptr @.str.4690, i64 3, i64 0 }, { ptr, i64, i64 } %t130) - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4691, i64 3, i64 0 }) - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t131, %S.ast.Type %t132, %S.ast.Type %t133) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - store %S.ast.Type %t132, ptr %a136 - call void @finch.drop.S_ast_Type(ptr %a136) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 - %t138 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Val %t137, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t142 -endif7294: - %t143 = load ptr, ptr %a1 - %t144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t143, { ptr, i64, i64 } { ptr @.str.4692, i64 6, i64 0 }) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = load { ptr, i64, i64 }, ptr %a145 - call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.4693, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4694, i64 3, i64 0 }, { ptr, i64, i64 } %t147) - %t148 = load ptr, ptr %a1 - %t149 = load ptr, ptr %a1 - %t150 = load %S.gen.Val, ptr %a17 - %t151 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t149, %S.gen.Val %t150) - store { ptr, i64, i64 } { ptr @.str.4695, i64 34, i64 0 }, ptr %a153 - store { ptr, i64, i64 } %t151, ptr %a154 - call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) - store { ptr, i64, i64 } %t151, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a152 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4696, i64 6, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t161, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t161, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4697, i64 6, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t184, ptr %a186 - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.4699, i64 12, i64 0 }, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4700, i64 3, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t197) - store { ptr, i64, i64 } %t197, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic7299, label %ok7300 -panic7299: - call void @finch_panic(ptr @.str.4701, i64 4137, ptr @.str.4702) - unreachable -ok7300: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 42 - %t203 = load { ptr, i64, i64 }, ptr %t202 - store { ptr, i64, i64 } %t198, ptr %t202 - store { ptr, i64, i64 } %t203, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a51 - %t207 = call { ptr, i64, i64 } @finch.gen.load(ptr %t205, { ptr, i64, i64 } { ptr @.str.4703, i64 17, i64 0 }, { ptr, i64, i64 } %t206) - %t208 = load ptr, ptr %a1 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic7301, label %ok7302 -panic7301: - call void @finch_panic(ptr @.str.4704, i64 4138, ptr @.str.4705) - unreachable -ok7302: - %t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 43 - %t211 = load { ptr, i64, i64 }, ptr %t210 - store { ptr, i64, i64 } %t207, ptr %t210 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t213, %S.gen.Val %t214) - %t215 = load ptr, ptr %a1 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a145 - %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t216, { ptr, i64, i64 } { ptr @.str.4706, i64 6, i64 0 }, { ptr, i64, i64 } %t217) - %t219 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4707, i64 5, i64 0 }) - %t220 = load %S.ast.Type, ptr %a3 - %t221 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t215, { ptr, i64, i64 } %t218, %S.ast.Type %t219, %S.ast.Type %t220) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - store %S.ast.Type %t219, ptr %a223 - call void @finch.drop.S_ast_Type(ptr %a223) - %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 - %t225 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - %t229 = insertvalue %S.gen.Val %t224, %S.ast.Type %t228, 1 - call void @finch_str_drop(ptr %a186) - call void @finch_str_drop(ptr %a145) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t229 -endif7291: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4708, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp ne i32 %t234, 0 - br label %logic.from7303 -logic.from7303: - br i1 %t235, label %logic.rhs7304, label %logic.end7305 -logic.rhs7304: - %t236 = load %S.ast.Type, ptr %a3 - %t237 = call i1 @finch.gen.isNumber(%S.ast.Type %t236) - br label %logic.rend7306 -logic.rend7306: - br label %logic.end7305 -logic.end7305: - %t238 = phi i1 [ false, %logic.from7303 ], [ %t237, %logic.rend7306 ] - br i1 %t238, label %then7307, label %endif7309 -then7307: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic7310, label %ok7311 -panic7310: - call void @finch_panic(ptr @.str.4709, i64 4143, ptr @.str.4710) - unreachable -ok7311: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 1 - %t243 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t244 = load i64, ptr %t243 - %t245 = load { ptr, i64, i64 }, ptr %t242 - %t246 = extractvalue { ptr, i64, i64 } %t245, 1 - %t247 = icmp uge i64 %t244, %t246 - br i1 %t247, label %range7312, label %inrange7313 -range7312: - call void @finch_panic_index(ptr @.str.4711, i64 4143, i64 %t244, i64 %t246) - unreachable -inrange7313: - %t248 = extractvalue { ptr, i64, i64 } %t245, 0 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t239, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t251, ptr %a252 - %t253 = load %S.ast.Type, ptr %a3 - %t254 = call i1 @finch.gen.isInt(%S.ast.Type %t253) - br i1 %t254, label %then7314, label %endif7316 -then7314: - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load %S.gen.Val, ptr %a17 - %t258 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t256, %S.gen.Val %t257) - store { ptr, i64, i64 } { ptr @.str.4712, i64 31, i64 0 }, ptr %a260 - store { ptr, i64, i64 } %t258, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4713, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4714, i64 6, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t281 = load i64, ptr %t280 - call void @finch_str_from_int(ptr %a282, i64 %t281) - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t279, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t279, ptr %a287 - call void @finch_str_drop(ptr %a287) - store { ptr, i64, i64 } %t283, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.4715, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - %t295 = call { ptr, i64, i64 } @finch.gen.op(ptr %t255, { ptr, i64, i64 } %t294) - store { ptr, i64, i64 } %t294, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t295, ptr %a297 - %t298 = load ptr, ptr %a1 - %t299 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t298, %S.gen.Val %t299) - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4716, i64 3, i64 0 }) - %t303 = load %S.ast.Type, ptr %a3 - %t304 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t300, { ptr, i64, i64 } %t301, %S.ast.Type %t302, %S.ast.Type %t303) - store %S.ast.Type %t302, ptr %a305 - call void @finch.drop.S_ast_Type(ptr %a305) - %t306 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t307 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t307, ptr %a308 - call void @finch.copy.S_ast_Type(ptr %a309, ptr %a308) - %t310 = load %S.ast.Type, ptr %a309 - %t311 = insertvalue %S.gen.Val %t306, %S.ast.Type %t310, 1 - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t311 -endif7316: - %t312 = load ptr, ptr %a1 - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a17 - %t315 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } { ptr @.str.4717, i64 36, i64 0 }, ptr %a317 - store { ptr, i64, i64 } %t315, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.4718, i64 6, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - %t326 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t325, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - store { ptr, i64, i64 } %t325, ptr %a330 - call void @finch_str_drop(ptr %a330) - %t331 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t331, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.4719, i64 6, i64 0 }, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t331, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - %t337 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t338 = load i64, ptr %t337 - call void @finch_str_from_int(ptr %a339, i64 %t338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - store { ptr, i64, i64 } %t336, ptr %a342 - store { ptr, i64, i64 } %t340, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t336, ptr %a344 - call void @finch_str_drop(ptr %a344) - store { ptr, i64, i64 } %t340, ptr %a345 - call void @finch_str_drop(ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.4720, i64 1, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t312, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4721, i64 5, i64 0 }) - %t360 = load %S.ast.Type, ptr %a3 - %t361 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359, %S.ast.Type %t360) - store %S.ast.Type %t359, ptr %a362 - call void @finch.drop.S_ast_Type(ptr %a362) - %t363 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t361, 0 - %t364 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t364, ptr %a365 - call void @finch.copy.S_ast_Type(ptr %a366, ptr %a365) - %t367 = load %S.ast.Type, ptr %a366 - %t368 = insertvalue %S.gen.Val %t363, %S.ast.Type %t367, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t368 -endif7309: - %t369 = load %S.ast.Type, ptr %a3 - %t370 = call i1 @finch.gen.isInt(%S.ast.Type %t369) - br label %logic.from7317 -logic.from7317: - br i1 %t370, label %logic.rhs7318, label %logic.end7319 -logic.rhs7318: - %t371 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t372, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.4722, i64 4, i64 0 }, ptr %a374 - %t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374) - %t376 = icmp ne i32 %t375, 0 - br label %logic.rend7320 -logic.rend7320: - br label %logic.end7319 -logic.end7319: - %t377 = phi i1 [ false, %logic.from7317 ], [ %t376, %logic.rend7320 ] - br i1 %t377, label %then7321, label %endif7323 -then7321: - %t378 = load ptr, ptr %a1 - %t379 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4723, i64 3, i64 0 }) - %t382 = load %S.ast.Type, ptr %a3 - %t383 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t378, { ptr, i64, i64 } %t380, %S.ast.Type %t381, %S.ast.Type %t382) - store %S.ast.Type %t381, ptr %a384 - call void @finch.drop.S_ast_Type(ptr %a384) - %t385 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t383, 0 - %t386 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t386, ptr %a387 - call void @finch.copy.S_ast_Type(ptr %a388, ptr %a387) - %t389 = load %S.ast.Type, ptr %a388 - %t390 = insertvalue %S.gen.Val %t385, %S.ast.Type %t389, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t390 -endif7323: - %t391 = load %S.ast.Type, ptr %a3 - %t392 = call i1 @finch.gen.isInt(%S.ast.Type %t391) - br label %logic.from7324 -logic.from7324: - br i1 %t392, label %logic.end7326, label %logic.rhs7325 -logic.rhs7325: - %t393 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t394, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.4724, i64 4, i64 0 }, ptr %a396 - %t397 = call i32 @finch_str_eq(ptr %a395, ptr %a396) - %t398 = icmp ne i32 %t397, 0 - br label %logic.rend7327 -logic.rend7327: - br label %logic.end7326 -logic.end7326: - %t399 = phi i1 [ true, %logic.from7324 ], [ %t398, %logic.rend7327 ] - br i1 %t399, label %then7328, label %endif7330 -then7328: - %t400 = load %S.ast.Type, ptr %a23 - %t401 = call i1 @finch.gen.isInt(%S.ast.Type %t400) - br label %logic.from7331 -logic.from7331: - br i1 %t401, label %logic.end7333, label %logic.rhs7332 -logic.rhs7332: - %t402 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4725, i64 4, i64 0 }, ptr %a405 - %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) - %t407 = icmp ne i32 %t406, 0 - br label %logic.rend7334 -logic.rend7334: - br label %logic.end7333 -logic.end7333: - %t408 = phi i1 [ true, %logic.from7331 ], [ %t407, %logic.rend7334 ] - br i1 %t408, label %then7335, label %endif7337 -then7335: - %t409 = load ptr, ptr %a1 - %t410 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t411 = load { ptr, i64, i64 }, ptr %t410 - %t412 = load %S.ast.Type, ptr %a23 - %t413 = load %S.ast.Type, ptr %a3 - %t414 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t409, { ptr, i64, i64 } %t411, %S.ast.Type %t412, %S.ast.Type %t413) - %t415 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t414, 0 - %t416 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t416, ptr %a417 - call void @finch.copy.S_ast_Type(ptr %a418, ptr %a417) - %t419 = load %S.ast.Type, ptr %a418 - %t420 = insertvalue %S.gen.Val %t415, %S.ast.Type %t419, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t420 -endif7337: - %t421 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - store { ptr, i64, i64 } { ptr @.str.4726, i64 4, i64 0 }, ptr %a424 - %t425 = call i32 @finch_str_eq(ptr %a423, ptr %a424) - %t426 = icmp ne i32 %t425, 0 - br i1 %t426, label %then7338, label %endif7340 -then7338: - %t427 = load ptr, ptr %a1 - %t428 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } { ptr @.str.4727, i64 8, i64 0 }, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - %t433 = load { ptr, i64, i64 }, ptr %a430 - store { ptr, i64, i64 } %t433, ptr %a435 - store { ptr, i64, i64 } { ptr @.str.4728, i64 4, i64 0 }, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t433, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - %t439 = load ptr, ptr %a1 - %t440 = load %S.ast.Type, ptr %a3 - %t441 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t440) - store { ptr, i64, i64 } %t438, ptr %a443 - store { ptr, i64, i64 } %t441, ptr %a444 - call void @finch_str_concat(ptr %a442, ptr %a443, ptr %a444) - store { ptr, i64, i64 } %t438, ptr %a445 - call void @finch_str_drop(ptr %a445) - store { ptr, i64, i64 } %t441, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load { ptr, i64, i64 }, ptr %a442 - %t448 = call { ptr, i64, i64 } @finch.gen.op(ptr %t427, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t447, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t448, 0 - %t451 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t451, ptr %a452 - call void @finch.copy.S_ast_Type(ptr %a453, ptr %a452) - %t454 = load %S.ast.Type, ptr %a453 - %t455 = insertvalue %S.gen.Val %t450, %S.ast.Type %t454, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t455 -endif7340: - %t456 = load %S.ast.Type, ptr %a23 - %t457 = call i1 @finch.gen.isFloat(%S.ast.Type %t456) - br label %logic.from7341 -logic.from7341: - br i1 %t457, label %logic.rhs7342, label %logic.end7343 -logic.rhs7342: - %t458 = load %S.ast.Type, ptr %a3 - %t459 = call i1 @finch.gen.isInt(%S.ast.Type %t458) - br label %logic.rend7344 -logic.rend7344: - br label %logic.end7343 -logic.end7343: - %t460 = phi i1 [ false, %logic.from7341 ], [ %t459, %logic.rend7344 ] - br i1 %t460, label %then7345, label %endif7347 -then7345: - store { ptr, i64, i64 } { ptr @.str.4729, i64 6, i64 0 }, ptr %a461 - %t462 = load %S.ast.Type, ptr %a3 - %t463 = call i1 @finch.gen.isSigned(%S.ast.Type %t462) - br i1 %t463, label %then7348, label %endif7350 -then7348: - %t464 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } { ptr @.str.4730, i64 6, i64 0 }, ptr %a461 - store { ptr, i64, i64 } %t464, ptr %a465 - call void @finch_str_drop(ptr %a465) - br label %endif7350 -endif7350: - %t466 = load ptr, ptr %a1 - %t467 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t467, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4731, i64 1, i64 0 }, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load ptr, ptr %a1 - %t473 = load %S.ast.Type, ptr %a23 - %t474 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t472, %S.ast.Type %t473) - store { ptr, i64, i64 } %t471, ptr %a476 - store { ptr, i64, i64 } %t474, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t471, ptr %a478 - call void @finch_str_drop(ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a475 - store { ptr, i64, i64 } %t480, ptr %a482 - store { ptr, i64, i64 } { ptr @.str.4732, i64 1, i64 0 }, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t480, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - %t486 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } %t485, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.4733, i64 4, i64 0 }, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t492, ptr %a496 - call void @finch_str_drop(ptr %a496) - %t497 = load { ptr, i64, i64 }, ptr %a493 - %t498 = load ptr, ptr %a1 - %t499 = load %S.ast.Type, ptr %a3 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t498, %S.ast.Type %t499) - store { ptr, i64, i64 } %t497, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t497, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - %t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t466, { ptr, i64, i64 } %t506) - store { ptr, i64, i64 } %t506, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 - %t510 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = insertvalue %S.gen.Val %t509, %S.ast.Type %t513, 1 - call void @finch_str_drop(ptr %a461) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t514 -endif7347: - br label %endif7330 -endif7330: - %t515 = load %S.ast.Type, ptr %a3 - %t516 = call i1 @finch.gen.isFloat(%S.ast.Type %t515) - br i1 %t516, label %then7351, label %endif7353 -then7351: - %t517 = load %S.ast.Type, ptr %a23 - %t518 = call i1 @finch.gen.isInt(%S.ast.Type %t517) - br i1 %t518, label %then7354, label %endif7356 -then7354: - %t519 = load ptr, ptr %a1 - %t520 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - %t522 = load %S.ast.Type, ptr %a23 - %t523 = load %S.ast.Type, ptr %a3 - %t524 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t519, { ptr, i64, i64 } %t521, %S.ast.Type %t522, %S.ast.Type %t523) - %t525 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t524, 0 - %t526 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t526, ptr %a527 - call void @finch.copy.S_ast_Type(ptr %a528, ptr %a527) - %t529 = load %S.ast.Type, ptr %a528 - %t530 = insertvalue %S.gen.Val %t525, %S.ast.Type %t529, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t530 -endif7356: - %t531 = load %S.ast.Type, ptr %a23 - %t532 = call i1 @finch.gen.isFloat(%S.ast.Type %t531) - br i1 %t532, label %then7357, label %endif7359 -then7357: - %t533 = load ptr, ptr %a1 - %t534 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load %S.ast.Type, ptr %a23 - %t537 = load %S.ast.Type, ptr %a3 - %t538 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t533, { ptr, i64, i64 } %t535, %S.ast.Type %t536, %S.ast.Type %t537) - %t539 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t538, 0 - %t540 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t540, ptr %a541 - call void @finch.copy.S_ast_Type(ptr %a542, ptr %a541) - %t543 = load %S.ast.Type, ptr %a542 - %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t544 -endif7359: - br label %endif7353 -endif7353: - %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.4734, i64 4, i64 0 }, ptr %a548 - %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) - %t550 = icmp ne i32 %t549, 0 - br label %logic.from7360 -logic.from7360: - br i1 %t550, label %logic.rhs7361, label %logic.end7362 -logic.rhs7361: - %t551 = load %S.ast.Type, ptr %a23 - %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) - br label %logic.rend7363 -logic.rend7363: - br label %logic.end7362 -logic.end7362: - %t553 = phi i1 [ false, %logic.from7360 ], [ %t552, %logic.rend7363 ] - br i1 %t553, label %then7364, label %endif7366 -then7364: - %t554 = load ptr, ptr %a1 - %t555 = load ptr, ptr %a1 - %t556 = load %S.ast.Type, ptr %a23 - %t557 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t555, %S.ast.Type %t556) - store { ptr, i64, i64 } { ptr @.str.4735, i64 8, i64 0 }, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.4736, i64 1, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t569 = load { ptr, i64, i64 }, ptr %t568 - store { ptr, i64, i64 } %t567, ptr %a571 - store { ptr, i64, i64 } %t569, ptr %a572 - call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572) - store { ptr, i64, i64 } %t567, ptr %a573 - call void @finch_str_drop(ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a570 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.4737, i64 3, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t579) - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t580, 0 - %t583 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t583, ptr %a584 - call void @finch.copy.S_ast_Type(ptr %a585, ptr %a584) - %t586 = load %S.ast.Type, ptr %a585 - %t587 = insertvalue %S.gen.Val %t582, %S.ast.Type %t586, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t587 -endif7366: - %t588 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t589 = load { ptr, i64, i64 }, ptr %t588 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.4738, i64 3, i64 0 }, ptr %a591 - %t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591) - %t593 = icmp ne i32 %t592, 0 - br label %logic.from7367 -logic.from7367: - br i1 %t593, label %logic.rhs7368, label %logic.end7369 -logic.rhs7368: - %t594 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t595 = load { ptr, i64, i64 }, ptr %t594 - store { ptr, i64, i64 } %t595, ptr %a596 - store { ptr, i64, i64 } { ptr @.str.4739, i64 3, i64 0 }, ptr %a597 - %t598 = call i32 @finch_str_eq(ptr %a596, ptr %a597) - %t599 = icmp ne i32 %t598, 0 - br label %logic.from7370 -logic.from7370: - br i1 %t599, label %logic.end7372, label %logic.rhs7371 -logic.rhs7371: - %t600 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t601 = load { ptr, i64, i64 }, ptr %t600 - store { ptr, i64, i64 } %t601, ptr %a602 - store { ptr, i64, i64 } { ptr @.str.4740, i64 4, i64 0 }, ptr %a603 - %t604 = call i32 @finch_str_eq(ptr %a602, ptr %a603) - %t605 = icmp ne i32 %t604, 0 - br label %logic.rend7373 -logic.rend7373: - br label %logic.end7372 -logic.end7372: - %t606 = phi i1 [ true, %logic.from7370 ], [ %t605, %logic.rend7373 ] - br label %logic.rend7374 -logic.rend7374: - br label %logic.end7369 -logic.end7369: - %t607 = phi i1 [ false, %logic.from7367 ], [ %t606, %logic.rend7374 ] - br i1 %t607, label %then7375, label %endif7377 -then7375: - %t608 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t609 = load { ptr, i64, i64 }, ptr %t608 - store { ptr, i64, i64 } %t609, ptr %a610 - call void @finch_str_copy(ptr %a611, ptr %a610) - %t612 = load { ptr, i64, i64 }, ptr %a611 - %t613 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t612, 0 - %t614 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t614, ptr %a615 - call void @finch.copy.S_ast_Type(ptr %a616, ptr %a615) - %t617 = load %S.ast.Type, ptr %a616 - %t618 = insertvalue %S.gen.Val %t613, %S.ast.Type %t617, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t618 -endif7377: - %t619 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t620 = load { ptr, i64, i64 }, ptr %t619 - store { ptr, i64, i64 } %t620, ptr %a621 - store { ptr, i64, i64 } { ptr @.str.4741, i64 3, i64 0 }, ptr %a622 - %t623 = call i32 @finch_str_eq(ptr %a621, ptr %a622) - %t624 = icmp ne i32 %t623, 0 - br label %logic.from7378 -logic.from7378: - br i1 %t624, label %logic.rhs7379, label %logic.end7380 -logic.rhs7379: - %t625 = load %S.ast.Type, ptr %a23 - %t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625) - br label %logic.rend7381 -logic.rend7381: - br label %logic.end7380 -logic.end7380: - %t627 = phi i1 [ false, %logic.from7378 ], [ %t626, %logic.rend7381 ] - br i1 %t627, label %then7382, label %endif7384 -then7382: - %t628 = load ptr, ptr %a1 - %t629 = load ptr, ptr %a1 - %t630 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t631 = load { ptr, i64, i64 }, ptr %t630 - %t632 = load %S.ast.Type, ptr %a23 - %t633 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4743, i64 3, i64 0 }) - %t634 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t629, { ptr, i64, i64 } %t631, %S.ast.Type %t632, %S.ast.Type %t633) - store %S.ast.Type %t633, ptr %a635 - call void @finch.drop.S_ast_Type(ptr %a635) - store { ptr, i64, i64 } { ptr @.str.4742, i64 13, i64 0 }, ptr %a637 - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_concat(ptr %a636, ptr %a637, ptr %a638) - store { ptr, i64, i64 } %t634, ptr %a639 - call void @finch_str_drop(ptr %a639) - %t640 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t640, ptr %a642 - store { ptr, i64, i64 } { ptr @.str.4744, i64 7, i64 0 }, ptr %a643 - call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) - store { ptr, i64, i64 } %t640, ptr %a644 - call void @finch_str_drop(ptr %a644) - %t645 = load { ptr, i64, i64 }, ptr %a641 - %t646 = call { ptr, i64, i64 } @finch.gen.op(ptr %t628, { ptr, i64, i64 } %t645) - store { ptr, i64, i64 } %t645, ptr %a647 - call void @finch_str_drop(ptr %a647) - %t648 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t646, 0 - %t649 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t649, ptr %a650 - call void @finch.copy.S_ast_Type(ptr %a651, ptr %a650) - %t652 = load %S.ast.Type, ptr %a651 - %t653 = insertvalue %S.gen.Val %t648, %S.ast.Type %t652, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t653 -endif7384: - %t654 = load %S.ast.Type, ptr %a3 - %t655 = call i1 @finch.gen.isInt(%S.ast.Type %t654) - br label %logic.from7385 -logic.from7385: - br i1 %t655, label %logic.rhs7386, label %logic.end7387 -logic.rhs7386: - %t656 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t657 = load { ptr, i64, i64 }, ptr %t656 - store { ptr, i64, i64 } %t657, ptr %a658 - store { ptr, i64, i64 } { ptr @.str.4745, i64 3, i64 0 }, ptr %a659 - %t660 = call i32 @finch_str_eq(ptr %a658, ptr %a659) - %t661 = icmp ne i32 %t660, 0 - br label %logic.rend7388 -logic.rend7388: - br label %logic.end7387 -logic.end7387: - %t662 = phi i1 [ false, %logic.from7385 ], [ %t661, %logic.rend7388 ] - br i1 %t662, label %then7389, label %endif7391 -then7389: - %t663 = load ptr, ptr %a1 - %t664 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } { ptr @.str.4746, i64 13, i64 0 }, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.4747, i64 4, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = load ptr, ptr %a1 - %t676 = load %S.ast.Type, ptr %a3 - %t677 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t675, %S.ast.Type %t676) - store { ptr, i64, i64 } %t674, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t674, ptr %a681 - call void @finch_str_drop(ptr %a681) - store { ptr, i64, i64 } %t677, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a678 - %t684 = call { ptr, i64, i64 } @finch.gen.op(ptr %t663, { ptr, i64, i64 } %t683) - store { ptr, i64, i64 } %t683, ptr %a685 - call void @finch_str_drop(ptr %a685) - %t686 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t684, 0 - %t687 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t687, ptr %a688 - call void @finch.copy.S_ast_Type(ptr %a689, ptr %a688) - %t690 = load %S.ast.Type, ptr %a689 - %t691 = insertvalue %S.gen.Val %t686, %S.ast.Type %t690, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t691 -endif7391: - %t692 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t693 = load { ptr, i64, i64 }, ptr %t692 - store { ptr, i64, i64 } %t693, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.4748, i64 3, i64 0 }, ptr %a695 - %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) - %t697 = icmp ne i32 %t696, 0 - br label %logic.from7392 -logic.from7392: - br i1 %t697, label %logic.rhs7393, label %logic.end7394 -logic.rhs7393: - %t698 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store { ptr, i64, i64 } %t699, ptr %a700 - store { ptr, i64, i64 } { ptr @.str.4749, i64 3, i64 0 }, ptr %a701 - %t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701) - %t703 = icmp ne i32 %t702, 0 - br label %logic.rend7395 -logic.rend7395: - br label %logic.end7394 -logic.end7394: - %t704 = phi i1 [ false, %logic.from7392 ], [ %t703, %logic.rend7395 ] - br i1 %t704, label %then7396, label %endif7398 -then7396: - %t705 = load ptr, ptr %a1 - %t706 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t707 = load { ptr, i64, i64 }, ptr %t706 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 0, %t708 - br i1 %t709, label %range7399, label %inrange7400 -range7399: - call void @finch_panic_index(ptr @.str.4750, i64 4192, i64 0, i64 %t708) - unreachable -inrange7400: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds %S.ast.Node, ptr %t710, i64 0 - %t712 = load %S.ast.Node, ptr %t711 - call void @finch.gen.fail(ptr %t705, %S.ast.Node %t712, { ptr, i64, i64 } { ptr @.str.4751, i64 70, i64 0 }) - br label %endif7398 -endif7398: - %t713 = load ptr, ptr %a1 - %t714 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 0, %t716 - br i1 %t717, label %range7401, label %inrange7402 -range7401: - call void @finch_panic_index(ptr @.str.4752, i64 4194, i64 0, i64 %t716) - unreachable -inrange7402: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds %S.ast.Node, ptr %t718, i64 0 - %t720 = load %S.ast.Node, ptr %t719 - %t721 = load %S.ast.Type, ptr %a23 - %t722 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t721) - store { ptr, i64, i64 } { ptr @.str.4753, i64 11, i64 0 }, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) - store { ptr, i64, i64 } %t722, ptr %a726 - call void @finch_str_drop(ptr %a726) - %t727 = load { ptr, i64, i64 }, ptr %a723 - store { ptr, i64, i64 } %t727, ptr %a729 - store { ptr, i64, i64 } { ptr @.str.4754, i64 6, i64 0 }, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - store { ptr, i64, i64 } %t727, ptr %a731 - call void @finch_str_drop(ptr %a731) - %t732 = load { ptr, i64, i64 }, ptr %a728 - %t733 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } %t732, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - store { ptr, i64, i64 } %t732, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a735 - call void @finch.gen.fail(ptr %t713, %S.ast.Node %t720, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t741 -} - -define internal i64 @finch.gen.sizeBytes(ptr %p0, %S.ast.Type %p1) { -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.4755, 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 %then7403, label %endif7405 -then7403: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic7406, label %ok7407 -panic7406: - call void @finch_panic(ptr @.str.4756, i64 4227, ptr @.str.4757) - unreachable -ok7407: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 16 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %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 %range7408, label %inrange7409 -range7408: - call void @finch_panic_index(ptr @.str.4758, i64 4227, i64 %t17, i64 %t19) - unreachable -inrange7409: - %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 -endif7405: - %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.4759, 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 %then7410, label %endif7412 -then7410: - %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 %range7413, label %inrange7414 -range7413: - call void @finch_panic_index(ptr @.str.4760, i64 4230, i64 0, i64 %t36) - unreachable -inrange7414: - %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 -endif7412: - %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.4761, 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.from7415 -logic.from7415: - br i1 %t48, label %logic.end7417, label %logic.rhs7416 -logic.rhs7416: - %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.4762, 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.rend7418 -logic.rend7418: - br label %logic.end7417 -logic.end7417: - %t55 = phi i1 [ true, %logic.from7415 ], [ %t54, %logic.rend7418 ] - br i1 %t55, label %then7419, label %endif7421 -then7419: - ret i64 8 -endif7421: - %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.4763, 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 %then7422, label %endif7424 -then7422: - ret i64 8 -endif7424: - %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.4764, 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 %then7425, label %endif7427 -then7425: - ret i64 4 -endif7427: - %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.4765, 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 %then7428, label %endif7430 -then7428: - ret i64 1 -endif7430: - %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.drop.arr_S_gen_Leaf(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - 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 - 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.4766, 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 %then7431, label %else7432 -then7431: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic7434, label %ok7435 -panic7434: - call void @finch_panic(ptr @.str.4767, i64 4251, ptr @.str.4768) - unreachable -ok7435: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 16 - %t14 = load ptr, ptr %a1 - %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t16 = load { ptr, i64, i64 }, ptr %t15 - %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 %range7436, label %inrange7437 -range7436: - call void @finch_panic_index(ptr @.str.4769, i64 4251, i64 %t19, i64 %t21) - unreachable -inrange7437: - %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.cond7438 -for.cond7438: - %t34 = load i64, ptr %a33 - %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body7439, label %for.end7441 -for.body7439: - %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 %range7442, label %inrange7443 -range7442: - call void @finch_panic_index(ptr @.str.4770, i64 4253, i64 %t38, i64 %t40) - unreachable -inrange7443: - %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 %range7444, label %inrange7445 -range7444: - call void @finch_panic_index(ptr @.str.4771, i64 4253, i64 %t47, i64 %t49) - unreachable -inrange7445: - %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.cond7446 -each.cond7446: - %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.body7447, label %each.end7449 -each.body7447: - %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.step7448 -each.step7448: - %t72 = load i64, ptr %a57 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %a57 - br label %each.cond7446 -each.end7449: - call void @finch.drop.arr_S_gen_Leaf(ptr %a56) - br label %for.step7440 -for.step7440: - %t74 = load i64, ptr %a33 - %t75 = add i64 %t74, 1 - store i64 %t75, ptr %a33 - br label %for.cond7438 -for.end7441: - call void @finch.drop.S_gen_StructDef(ptr %a29) - br label %endif7433 -else7432: - %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.4772, 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 %then7450, label %else7451 -then7450: - %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 %range7453, label %inrange7454 -range7453: - call void @finch_panic_index(ptr @.str.4773, i64 4258, i64 0, i64 %t85) - unreachable -inrange7454: - %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.cond7455 -for.cond7455: - %t95 = load i64, ptr %a94 - %t96 = icmp slt i64 %t95, %t93 - br i1 %t96, label %for.body7456, label %for.end7458 -for.body7456: - %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 %range7459, label %inrange7460 -range7459: - call void @finch_panic_index(ptr @.str.4774, i64 4260, i64 0, i64 %t100) - unreachable -inrange7460: - %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.cond7461 -each.cond7461: - %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.body7462, label %each.end7464 -each.body7462: - %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.step7463 -each.step7463: - %t127 = load i64, ptr %a112 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a112 - br label %each.cond7461 -each.end7464: - call void @finch.drop.arr_S_gen_Leaf(ptr %a111) - br label %for.step7457 -for.step7457: - %t129 = load i64, ptr %a94 - %t130 = add i64 %t129, 1 - store i64 %t130, ptr %a94 - br label %for.cond7455 -for.end7458: - br label %endif7452 -else7451: - %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.4775, 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 %endif7452 -endif7452: - br label %endif7433 -endif7433: - %t152 = load { ptr, i64, i64 }, ptr %a4 - ret { ptr, i64, i64 } %t152 -} - -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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca i64, align 16 - %a102 = alloca %S.gen.Leaf, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.gen.Abi %p2, ptr %a3 - 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.from7465 -logic.from7465: - br i1 %t17, label %logic.rhs7466, label %logic.end7467 -logic.rhs7466: - %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.rend7468 -logic.rend7468: - br label %logic.end7467 -logic.end7467: - %t21 = phi i1 [ false, %logic.from7465 ], [ %t20, %logic.rend7468 ] - store i1 %t21, ptr %a22 - store i64 0, ptr %a23 - br label %each.cond7469 -each.cond7469: - %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.body7470, label %each.end7472 -each.body7470: - %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.from7473 -logic.from7473: - br i1 %t34, label %logic.end7475, label %logic.rhs7474 -logic.rhs7474: - %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 %range7476, label %inrange7477 -range7476: - call void @finch_panic_index(ptr @.str.4776, i64 4277, i64 0, i64 %t38) - unreachable -inrange7477: - %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.rend7478 -logic.rend7478: - br label %logic.end7475 -logic.end7475: - %t45 = phi i1 [ true, %logic.from7473 ], [ %t44, %logic.rend7478 ] - br i1 %t45, label %then7479, label %endif7481 -then7479: - store i1 false, ptr %a22 - br label %endif7481 -endif7481: - br label %each.step7471 -each.step7471: - %t46 = load i64, ptr %a23 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a23 - br label %each.cond7469 -each.end7472: - %t48 = load i1, ptr %a22 - br i1 %t48, label %then7482, label %endif7484 -then7482: - store { ptr, i64, i64 } { ptr @.str.4777, 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 %range7485, label %inrange7486 -range7485: - call void @finch_panic_index(ptr @.str.4778, i64 4283, i64 0, i64 %t51) - unreachable -inrange7486: - %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 %then7487, label %endif7489 -then7487: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4779, i64 6, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - br label %endif7489 -endif7489: - %t59 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } { ptr @.str.4780, i64 6, i64 0 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t65 = load i64, ptr %t64 - call void @finch_str_from_int(ptr %a66, i64 %t65) - %t67 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4781, i64 1, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.4782, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t77, ptr %a80 - store { ptr, i64, i64 } %t78, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4783, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %t63 - %t90 = add i64 %t89, 1 - call void @finch_arr_reserve(ptr %t62, i64 %t90, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t91 = load ptr, ptr %t62 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t89 - store { ptr, i64, i64 } %t88, ptr %t92 - store i64 %t90, ptr %t63 - store { ptr, i64, i64 } zeroinitializer, ptr %a93 - store i64 0, ptr %a94 - br label %each.cond7490 -each.cond7490: - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t96 = load i64, ptr %t95 - %t97 = load i64, ptr %a94 - %t98 = icmp slt i64 %t97, %t96 - br i1 %t98, label %each.body7491, label %each.end7493 -each.body7491: - %t99 = load ptr, ptr %a14 - %t100 = getelementptr inbounds %S.gen.Leaf, ptr %t99, i64 %t97 - %t101 = load %S.gen.Leaf, ptr %t100 - store %S.gen.Leaf %t101, ptr %a102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_copy(ptr %a106, ptr %a105) - %t107 = load { ptr, i64, i64 }, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %a93, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %a93 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 - store { ptr, i64, i64 } %t107, ptr %t111 - store i64 %t109, ptr %t103 - br label %each.step7492 -each.step7492: - %t112 = load i64, ptr %a94 - %t113 = add i64 %t112, 1 - store i64 %t113, ptr %a94 - br label %each.cond7490 -each.end7493: - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4785, i64 2, i64 0 }, ptr %a115 - call void @finch_str_join(ptr %a116, ptr %a93, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4784, i64 2, i64 0 }, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.4786, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t127, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_str(ptr %a93) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t131 -endif7484: - %t132 = load i64, ptr %a4 - %t133 = icmp sgt i64 %t132, 16 - br i1 %t133, label %then7494, label %endif7496 -then7494: - %t134 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } { ptr @.str.4787, i64 8, i64 0 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t137 -endif7496: - %t138 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t138 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load i64, ptr %a5 - %t142 = icmp sge i64 %t141, 16 - br i1 %t142, label %then7497, label %else7498 -then7497: - %t143 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t143 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i64 %t145 - store { ptr, i64, i64 } { ptr @.str.4789, i64 4, i64 0 }, ptr %t148 - store i64 %t146, ptr %t144 - %t149 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } { ptr @.str.4790, i64 4, i64 0 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif7499 -else7498: - %t152 = load i64, ptr %a4 - %t153 = icmp sle i64 %t152, 8 - br i1 %t153, label %then7500, label %else7501 -then7500: - %t154 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t157, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t154 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t156 - store { ptr, i64, i64 } { ptr @.str.4791, i64 3, i64 0 }, ptr %t159 - store i64 %t157, ptr %t155 - %t160 = load i64, ptr %a4 - %t161 = mul i64 %t160, 8 - call void @finch_str_from_int(ptr %a162, i64 %t161) - %t163 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4792, i64 1, i64 0 }, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t168, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7502 -else7501: - %t172 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 - %t174 = load i64, ptr %t173 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %t172, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %t172 - %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 - store { ptr, i64, i64 } { ptr @.str.4793, i64 9, i64 0 }, ptr %t177 - store i64 %t175, ptr %t173 - %t178 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } { ptr @.str.4794, i64 9, i64 0 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_drop(ptr %a180) - br label %endif7502 -endif7502: - br label %endif7499 -endif7499: - %t181 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t181 -} - -define internal void @finch.drop.S_gen_Abi(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) { -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 - %a27 = alloca %S.gen.StructDef, align 16 - %a28 = alloca %S.gen.StructDef, align 16 - %a30 = alloca %S.gen.StructDef, align 16 - %a33 = alloca i64, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %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 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4795, 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.4796, 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 %then7503, label %endif7505 -then7503: - %t11 = load %S.gen.Abi, ptr %a4 - ret %S.gen.Abi %t11 -endif7505: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7506, label %ok7507 -panic7506: - call void @finch_panic(ptr @.str.4797, i64 4318, ptr @.str.4798) - unreachable -ok7507: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = call i64 @finch.gen.findStruct(ptr %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t19) - %t21 = load { ptr, i64, i64 }, ptr %t14 - %t22 = extractvalue { ptr, i64, i64 } %t21, 1 - %t23 = icmp uge i64 %t20, %t22 - br i1 %t23, label %range7508, label %inrange7509 -range7508: - call void @finch_panic_index(ptr @.str.4799, i64 4318, i64 %t20, i64 %t22) - unreachable -inrange7509: - %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 9 - %t32 = load i64, ptr %t31 - store i64 %t32, ptr %a33 - %t34 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 8, ptr %t34 - %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t36 = load i64, ptr %t35 - %t37 = icmp sgt i64 %t36, 8 - br i1 %t37, label %then7510, label %endif7512 -then7510: - %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t39 = load i64, ptr %t38 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 %t39, ptr %t40 - br label %endif7512 -endif7512: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic7513, label %ok7514 -panic7513: - call void @finch_panic(ptr @.str.4800, i64 4324, ptr @.str.4801) - unreachable -ok7514: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 31 - %t44 = getelementptr inbounds %S.platform.Target, ptr %t43, i32 0, i32 4 - %t45 = load i1, ptr %t44 - br i1 %t45, label %then7515, label %endif7517 -then7515: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a2 - %t48 = load %S.gen.Abi, ptr %a4 - %t49 = load i64, ptr %a33 - %t50 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t51 = load i64, ptr %t50 - %t52 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t46, %S.ast.Type %t47, %S.gen.Abi %t48, i64 %t49, i64 %t51) - call void @finch.drop.S_gen_StructDef(ptr %a30) - call void @finch.drop.S_gen_Abi(ptr %a4) - ret %S.gen.Abi %t52 -endif7517: - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic7518, label %ok7519 -panic7518: - call void @finch_panic(ptr @.str.4802, i64 4327, ptr @.str.4803) - unreachable -ok7519: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 31 - %t56 = getelementptr inbounds %S.platform.Target, ptr %t55, i32 0, i32 1 - %t57 = load i1, ptr %t56 - br i1 %t57, label %then7520, label %endif7522 -then7520: - %t58 = load i64, ptr %a33 - %t59 = icmp eq i64 %t58, 1 - br label %logic.from7523 -logic.from7523: - br i1 %t59, label %logic.end7525, label %logic.rhs7524 -logic.rhs7524: - %t60 = load i64, ptr %a33 - %t61 = icmp eq i64 %t60, 2 - br label %logic.rend7526 -logic.rend7526: - br label %logic.end7525 -logic.end7525: - %t62 = phi i1 [ true, %logic.from7523 ], [ %t61, %logic.rend7526 ] - br label %logic.from7527 -logic.from7527: - br i1 %t62, label %logic.end7529, label %logic.rhs7528 -logic.rhs7528: - %t63 = load i64, ptr %a33 - %t64 = icmp eq i64 %t63, 4 - br label %logic.rend7530 -logic.rend7530: - br label %logic.end7529 -logic.end7529: - %t65 = phi i1 [ true, %logic.from7527 ], [ %t64, %logic.rend7530 ] - br label %logic.from7531 -logic.from7531: - br i1 %t65, label %logic.end7533, label %logic.rhs7532 -logic.rhs7532: - %t66 = load i64, ptr %a33 - %t67 = icmp eq i64 %t66, 8 - br label %logic.rend7534 -logic.rend7534: - br label %logic.end7533 -logic.end7533: - %t68 = phi i1 [ true, %logic.from7531 ], [ %t67, %logic.rend7534 ] - br i1 %t68, label %then7535, label %else7536 -then7535: - %t69 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } { ptr @.str.4804, i64 6, i64 0 }, ptr %t69 - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load i64, ptr %a33 - %t75 = mul i64 %t74, 8 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4805, i64 1, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load i64, ptr %t73 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t72 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t73 - %t87 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range7538, label %inrange7539 -range7538: - call void @finch_panic_index(ptr @.str.4806, i64 4333, i64 0, i64 %t89) - unreachable -inrange7539: - %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 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif7537 -else7536: - %t100 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } { ptr @.str.4807, i64 8, i64 0 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif7537 -endif7537: - %t103 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t103 -endif7522: - %t104 = load i64, ptr %a33 - %t105 = icmp sgt i64 %t104, 16 - br label %logic.from7540 -logic.from7540: - br i1 %t105, label %logic.end7542, label %logic.rhs7541 -logic.rhs7541: - %t106 = load i64, ptr %a33 - %t107 = icmp eq i64 %t106, 0 - br label %logic.rend7543 -logic.rend7543: - br label %logic.end7542 -logic.end7542: - %t108 = phi i1 [ true, %logic.from7540 ], [ %t107, %logic.rend7543 ] - br i1 %t108, label %then7544, label %endif7546 -then7544: - %t109 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } { ptr @.str.4808, i64 6, i64 0 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t112 -endif7546: - %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 %a33 - %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.cond7547 -each.cond7547: - %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.body7548, label %each.end7550 -each.body7548: - %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 %then7551, label %endif7553 -then7551: - store i64 8, ptr %a148 - br label %endif7553 -endif7553: - %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 %panic7554, label %ok7555 -panic7554: - call void @finch_panic(ptr @.str.4809, i64 4352, ptr @.str.4810) - unreachable -ok7555: - %t155 = srem i64 %t152, %t153 - %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then7556, label %endif7558 -then7556: - %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } { ptr @.str.4811, i64 6, i64 0 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t160 -endif7558: - %t161 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 - %t162 = load i64, ptr %t161 - %t163 = sdiv i64 %t162, 8 - store i64 %t163, ptr %a164 - %t165 = load i64, ptr %a164 - %t166 = load { ptr, i64, i64 }, ptr %a128 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range7559, label %inrange7560 -range7559: - call void @finch_panic_index(ptr @.str.4812, i64 4357, i64 %t165, i64 %t167) - unreachable -inrange7560: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds i64, ptr %t169, i64 %t165 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 1 - br label %logic.from7561 -logic.from7561: - br i1 %t172, label %logic.end7563, label %logic.rhs7562 -logic.rhs7562: - %t173 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2 - %t174 = load i1, ptr %t173 - %t175 = xor i1 %t174, true - br label %logic.rend7564 -logic.rend7564: - br label %logic.end7563 -logic.end7563: - %t176 = phi i1 [ true, %logic.from7561 ], [ %t175, %logic.rend7564 ] - br i1 %t176, label %then7565, label %else7566 -then7565: - %t177 = load i64, ptr %a164 - %t178 = load { ptr, i64, i64 }, ptr %a128 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range7568, label %inrange7569 -range7568: - call void @finch_panic_index(ptr @.str.4813, i64 4358, i64 %t177, i64 %t179) - unreachable -inrange7569: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds i64, ptr %t181, i64 %t177 - store i64 1, ptr %t182 - br label %endif7567 -else7566: - %t183 = load i64, ptr %a164 - %t184 = load { ptr, i64, i64 }, ptr %a128 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range7570, label %inrange7571 -range7570: - call void @finch_panic_index(ptr @.str.4814, i64 4360, i64 %t183, i64 %t185) - unreachable -inrange7571: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t183 - store i64 2, ptr %t188 - br label %endif7567 -endif7567: - %t189 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 - %t190 = load i1, ptr %t189 - br i1 %t190, label %then7572, label %endif7574 -then7572: - %t191 = load i64, ptr %a164 - %t192 = load { ptr, i64, i64 }, ptr %a136 - %t193 = extractvalue { ptr, i64, i64 } %t192, 1 - %t194 = icmp uge i64 %t191, %t193 - br i1 %t194, label %range7575, label %inrange7576 -range7575: - call void @finch_panic_index(ptr @.str.4815, i64 4363, i64 %t191, i64 %t193) - unreachable -inrange7576: - %t195 = extractvalue { ptr, i64, i64 } %t192, 0 - %t196 = getelementptr inbounds i1, ptr %t195, i64 %t191 - store i1 true, ptr %t196 - br label %endif7574 -endif7574: - br label %each.step7549 -each.step7549: - %t197 = load i64, ptr %a137 - %t198 = add i64 %t197, 1 - store i64 %t198, ptr %a137 - br label %each.cond7547 -each.end7550: - %t199 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } { ptr @.str.4816, i64 6, i64 0 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load i64, ptr %a120 - store i64 0, ptr %a203 - br label %for.cond7577 -for.cond7577: - %t204 = load i64, ptr %a203 - %t205 = icmp slt i64 %t204, %t202 - br i1 %t205, label %for.body7578, label %for.end7580 -for.body7578: - %t206 = load i64, ptr %a33 - %t207 = load i64, ptr %a203 - %t208 = mul i64 8, %t207 - %t209 = sub i64 %t206, %t208 - store i64 %t209, ptr %a210 - %t211 = load i64, ptr %a210 - %t212 = icmp sgt i64 %t211, 8 - br i1 %t212, label %then7581, label %endif7583 -then7581: - store i64 8, ptr %a210 - br label %endif7583 -endif7583: - %t213 = load i64, ptr %a203 - %t214 = load { ptr, i64, i64 }, ptr %a128 - %t215 = extractvalue { ptr, i64, i64 } %t214, 1 - %t216 = icmp uge i64 %t213, %t215 - br i1 %t216, label %range7584, label %inrange7585 -range7584: - call void @finch_panic_index(ptr @.str.4817, i64 4372, i64 %t213, i64 %t215) - unreachable -inrange7585: - %t217 = extractvalue { ptr, i64, i64 } %t214, 0 - %t218 = getelementptr inbounds i64, ptr %t217, i64 %t213 - %t219 = load i64, ptr %t218 - %t220 = icmp eq i64 %t219, 2 - br i1 %t220, label %then7586, label %else7587 -then7586: - %t221 = load i64, ptr %a203 - %t222 = load { ptr, i64, i64 }, ptr %a136 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 %t221, %t223 - br i1 %t224, label %range7589, label %inrange7590 -range7589: - call void @finch_panic_index(ptr @.str.4818, i64 4373, i64 %t221, i64 %t223) - unreachable -inrange7590: - %t225 = extractvalue { ptr, i64, i64 } %t222, 0 - %t226 = getelementptr inbounds i1, ptr %t225, i64 %t221 - %t227 = load i1, ptr %t226 - br i1 %t227, label %then7591, label %else7592 -then7591: - %t228 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i32 0, i32 1 - %t230 = load i64, ptr %t229 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %t228, i64 %t231, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %t228 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t230 - store { ptr, i64, i64 } { ptr @.str.4819, i64 6, i64 0 }, ptr %t233 - store i64 %t231, ptr %t229 - br label %endif7593 -else7592: - %t234 = load i64, ptr %a210 - %t235 = icmp sgt i64 %t234, 4 - br i1 %t235, label %then7594, label %else7595 -then7594: - %t236 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 - %t238 = load i64, ptr %t237 - %t239 = add i64 %t238, 1 - call void @finch_arr_reserve(ptr %t236, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t240 = load ptr, ptr %t236 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238 - store { ptr, i64, i64 } { ptr @.str.4820, i64 11, i64 0 }, ptr %t241 - store i64 %t239, ptr %t237 - br label %endif7596 -else7595: - %t242 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %t242, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %t242 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } { ptr @.str.4821, i64 5, i64 0 }, ptr %t247 - store i64 %t245, ptr %t243 - br label %endif7596 -endif7596: - br label %endif7593 -endif7593: - br label %endif7588 -else7587: - %t248 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t250 = load i64, ptr %a210 - %t251 = mul i64 %t250, 8 - call void @finch_str_from_int(ptr %a252, i64 %t251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.4822, i64 1, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - store { ptr, i64, i64 } %t253, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a254 - %t259 = load i64, ptr %t249 - %t260 = add i64 %t259, 1 - call void @finch_arr_reserve(ptr %t248, i64 %t260, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t261 = load ptr, ptr %t248 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t261, i64 %t259 - store { ptr, i64, i64 } %t258, ptr %t262 - store i64 %t260, ptr %t249 - br label %endif7588 -endif7588: - br label %for.step7579 -for.step7579: - %t263 = load i64, ptr %a203 - %t264 = add i64 %t263, 1 - store i64 %t264, ptr %a203 - br label %for.cond7577 -for.end7580: - %t265 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = icmp eq i64 %t267, 1 - br i1 %t268, label %then7597, label %else7598 -then7597: - %t269 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t270 = load { ptr, i64, i64 }, ptr %t269 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 0, %t271 - br i1 %t272, label %range7600, label %inrange7601 -range7600: - call void @finch_panic_index(ptr @.str.4823, i64 4385, i64 0, i64 %t271) - unreachable -inrange7601: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0 - %t275 = load { ptr, i64, i64 }, ptr %t274 - %t276 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t275, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch_str_drop(ptr %a281) - br label %endif7599 -else7598: - %t282 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4825, i64 2, i64 0 }, ptr %a284 - call void @finch_str_join(ptr %a285, ptr %t282, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.4824, i64 2, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4826, i64 2, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } %t296, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - br label %endif7599 -endif7599: - %t300 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t300 -} - -define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) { -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 - %a12 = alloca %S.gen.Abi, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca i64, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.gen.Abi, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a88 = alloca i64, align 16 - %a90 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Abi, align 16 - %a155 = alloca %S.gen.Abi, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 - %t11 = load %S.gen.Abi, ptr %t10 - store %S.gen.Abi %t9, ptr %t10 - store %S.gen.Abi %t11, ptr %a12 - call void @finch.drop.S_gen_Abi(ptr %a12) - %t13 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } { ptr @.str.4827, i64 4, i64 0 }, ptr %t13 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4828, i64 4, i64 0 }, ptr %a19 - %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) - %t21 = icmp eq i32 %t20, 0 - br i1 %t21, label %then7602, label %endif7604 -then7602: - %t22 = load ptr, ptr %a1 - %t23 = load %S.ast.Type, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t22, %S.ast.Type %t23) - %t25 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t24, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_drop(ptr %a27) - br label %endif7604 -endif7604: - %t28 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t29 = getelementptr inbounds %S.gen.Abi, ptr %t28, i32 0, i32 0 - %t30 = load { ptr, i64, i64 }, ptr %t29 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.4829, i64 8, i64 0 }, ptr %a32 - %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) - %t34 = icmp ne i32 %t33, 0 - br i1 %t34, label %then7605, label %endif7607 -then7605: - %t35 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t36 = getelementptr inbounds %S.gen.Abi, ptr %t35, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - store { ptr, i64, i64 } { ptr @.str.4830, i64 6, i64 0 }, ptr %t36 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif7607 -endif7607: - %t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %t39, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.4831, i64 6, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then7608, label %else7609 -then7608: - %t46 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3 - store i1 true, ptr %t46 - %t47 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } { ptr @.str.4832, i64 4, i64 0 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load i64, ptr %a5 - %t51 = sub i64 %t50, 1 - store i64 %t51, ptr %a5 - br label %endif7610 -else7609: - %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t53 = getelementptr inbounds %S.gen.Abi, ptr %t52, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.4833, i64 6, i64 0 }, ptr %a56 - %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %then7611, label %endif7613 -then7611: - %t59 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t60 = getelementptr inbounds %S.gen.Abi, ptr %t59, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t65, ptr %t62 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif7613 -endif7613: - br label %endif7610 -endif7610: - store i64 0, ptr %a68 - br label %each.cond7614 -each.cond7614: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load i64, ptr %a68 - %t72 = icmp slt i64 %t71, %t70 - br i1 %t72, label %each.body7615, label %each.end7617 -each.body7615: - %t73 = load ptr, ptr %a3 - %t74 = getelementptr inbounds %S.ast.Type, ptr %t73, i64 %t71 - %t75 = load %S.ast.Type, ptr %t74 - store %S.ast.Type %t75, ptr %a76 - %t77 = load ptr, ptr %a1 - %t78 = load %S.ast.Type, ptr %a76 - %t79 = call %S.gen.Abi @finch.gen.classify(ptr %t77, %S.ast.Type %t78) - store %S.gen.Abi %t79, ptr %a80 - %t81 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4834, i64 6, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then7618, label %else7619 -then7618: - store i64 0, ptr %a87 - store i64 0, ptr %a88 - %t89 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 1 - store i64 0, ptr %a90 - br label %each.cond7621 -each.cond7621: - %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.body7622, label %each.end7624 -each.body7622: - %t95 = load ptr, ptr %t89 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a102 - %t103 = call i32 @finch_str_starts(ptr %a100, ptr %a102) - %t104 = icmp ne i32 %t103, 0 - br i1 %t104, label %then7625, label %else7626 -then7625: - %t105 = load i64, ptr %a87 - %t106 = add i64 %t105, 1 - store i64 %t106, ptr %a87 - br label %endif7627 -else7626: - %t107 = load i64, ptr %a88 - %t108 = add i64 %t107, 1 - store i64 %t108, ptr %a88 - br label %endif7627 -endif7627: - br label %each.step7623 -each.step7623: - %t109 = load i64, ptr %a90 - %t110 = add i64 %t109, 1 - store i64 %t110, ptr %a90 - br label %each.cond7621 -each.end7624: - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic7628, label %ok7629 -panic7628: - call void @finch_panic(ptr @.str.4837, i64 4425, ptr @.str.4838) - unreachable -ok7629: - %t113 = getelementptr inbounds %S.gen.Gen, ptr %t111, i32 0, i32 31 - %t114 = getelementptr inbounds %S.platform.Target, ptr %t113, i32 0, i32 1 - %t115 = load i1, ptr %t114 - br label %logic.from7630 -logic.from7630: - br i1 %t115, label %logic.end7632, label %logic.rhs7631 -logic.rhs7631: - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic7633, label %ok7634 -panic7633: - call void @finch_panic(ptr @.str.4839, i64 4425, ptr @.str.4840) - unreachable -ok7634: - %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 31 - %t119 = getelementptr inbounds %S.platform.Target, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.rend7635 -logic.rend7635: - br label %logic.end7632 -logic.end7632: - %t121 = phi i1 [ true, %logic.from7630 ], [ %t120, %logic.rend7635 ] - br label %logic.from7636 -logic.from7636: - br i1 %t121, label %logic.end7638, label %logic.rhs7637 -logic.rhs7637: - %t122 = load i64, ptr %a87 - %t123 = load i64, ptr %a5 - %t124 = icmp sle i64 %t122, %t123 - br label %logic.from7639 -logic.from7639: - br i1 %t124, label %logic.rhs7640, label %logic.end7641 -logic.rhs7640: - %t125 = load i64, ptr %a88 - %t126 = load i64, ptr %a6 - %t127 = icmp sle i64 %t125, %t126 - br label %logic.rend7642 -logic.rend7642: - br label %logic.end7641 -logic.end7641: - %t128 = phi i1 [ false, %logic.from7639 ], [ %t127, %logic.rend7642 ] - br label %logic.rend7643 -logic.rend7643: - br label %logic.end7638 -logic.end7638: - %t129 = phi i1 [ true, %logic.from7636 ], [ %t128, %logic.rend7643 ] - br i1 %t129, label %then7644, label %else7645 -then7644: - %t130 = load i64, ptr %a87 - %t131 = load i64, ptr %a5 - %t132 = sub i64 %t131, %t130 - store i64 %t132, ptr %a5 - %t133 = load i64, ptr %a88 - %t134 = load i64, ptr %a6 - %t135 = sub i64 %t134, %t133 - store i64 %t135, ptr %a6 - br label %endif7646 -else7645: - %t136 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t137 = load { ptr, i64, i64 }, ptr %t136 - store { ptr, i64, i64 } { ptr @.str.4841, i64 6, i64 0 }, ptr %t136 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif7646 -endif7646: - br label %endif7620 -else7619: - %t139 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.4842, i64 6, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %then7647, label %endif7649 -then7647: - %t145 = load %S.ast.Type, ptr %a76 - %t146 = call i1 @finch.gen.isFloat(%S.ast.Type %t145) - br i1 %t146, label %then7650, label %else7651 -then7650: - %t147 = load i64, ptr %a6 - %t148 = sub i64 %t147, 1 - store i64 %t148, ptr %a6 - br label %endif7652 -else7651: - %t149 = load i64, ptr %a5 - %t150 = sub i64 %t149, 1 - store i64 %t150, ptr %a5 - br label %endif7652 -endif7652: - br label %endif7649 -endif7649: - br label %endif7620 -endif7620: - %t151 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load %S.gen.Abi, ptr %a80 - store %S.gen.Abi %t153, ptr %a154 - call void @finch.copy.S_gen_Abi(ptr %a155, ptr %a154) - %t156 = load %S.gen.Abi, ptr %a155 - %t157 = load i64, ptr %t152 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t151 - %t160 = getelementptr inbounds %S.gen.Abi, ptr %t159, i64 %t157 - store %S.gen.Abi %t156, ptr %t160 - store i64 %t158, ptr %t152 - call void @finch.drop.S_gen_Abi(ptr %a80) - br label %each.step7616 -each.step7616: - %t161 = load i64, ptr %a68 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a68 - br label %each.cond7614 -each.end7617: - %t163 = load %S.gen.Plan, ptr %a4 - ret %S.gen.Plan %t163 -} - -define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.4843, 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 %then7653, label %endif7655 -then7653: - ret void -endif7655: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7656, label %ok7657 -panic7656: - call void @finch_panic(ptr @.str.4844, i64 4447, ptr @.str.4845) - unreachable -ok7657: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %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 %range7658, label %inrange7659 -range7658: - call void @finch_panic_index(ptr @.str.4846, i64 4447, i64 %t20, i64 %t22) - unreachable -inrange7659: - %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 %then7660, label %endif7662 -then7660: - %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.4847, 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.4848, i64 2, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t45, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t45, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4849, i64 18, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load %S.ast.Type, ptr %a4 - %t58 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t57) - store { ptr, i64, i64 } %t56, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t56, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4850, i64 20, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif7662 -endif7662: - %t71 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 - %t73 = load i64, ptr %t72 - %t74 = icmp sgt i64 %t73, 0 - br i1 %t74, label %then7663, label %endif7665 -then7663: - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Node, ptr %a2 - %t77 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.4851, i64 16, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4852, i64 2, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t86, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4853, i64 12, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load %S.ast.Type, ptr %a4 - %t99 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t98) - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t99, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4854, i64 40, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t110, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } %t117) - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif7665 -endif7665: - call void @finch.drop.S_gen_StructDef(ptr %a30) - 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.from7666 -logic.from7666: - br i1 %t3, label %logic.end7668, label %logic.rhs7667 -logic.rhs7667: - %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.4855, 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.rend7669 -logic.rend7669: - br label %logic.end7668 -logic.end7668: - %t10 = phi i1 [ true, %logic.from7666 ], [ %t9, %logic.rend7669 ] - br label %logic.from7670 -logic.from7670: - br i1 %t10, label %logic.end7672, label %logic.rhs7671 -logic.rhs7671: - %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.4856, 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.rend7673 -logic.rend7673: - br label %logic.end7672 -logic.end7672: - %t17 = phi i1 [ true, %logic.from7670 ], [ %t16, %logic.rend7673 ] - br label %logic.from7674 -logic.from7674: - br i1 %t17, label %logic.end7676, label %logic.rhs7675 -logic.rhs7675: - %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.4857, 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.rend7677 -logic.rend7677: - br label %logic.end7676 -logic.end7676: - %t24 = phi i1 [ true, %logic.from7674 ], [ %t23, %logic.rend7677 ] - 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 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca i64, align 16 - %a106 = alloca %S.gen.FnSig, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %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 %then7678, label %endif7680 -then7678: - %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.4858, i64 59, i64 0 }) - br label %endif7680 -endif7680: - %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7 - %t11 = load i1, ptr %t10 - br i1 %t11, label %then7681, label %endif7683 -then7681: - %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.4859, i64 74, i64 0 }) - br label %endif7683 -endif7683: - %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 %then7684, label %endif7686 -then7684: - %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.4860, i64 29, i64 0 }) - br label %endif7686 -endif7686: - %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.cond7687 -for.cond7687: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t22 - br i1 %t25, label %for.body7688, label %for.end7690 -for.body7688: - %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 %range7691, label %inrange7692 -range7691: - call void @finch_panic_index(ptr @.str.4861, i64 4472, i64 %t27, i64 %t29) - unreachable -inrange7692: - %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 %then7693, label %endif7695 -then7693: - %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 %range7696, label %inrange7697 -range7696: - call void @finch_panic_index(ptr @.str.4862, i64 4473, i64 %t38, i64 %t40) - unreachable -inrange7697: - %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 %range7698, label %inrange7699 -range7698: - call void @finch_panic_index(ptr @.str.4864, i64 4473, i64 %t46, i64 %t48) - unreachable -inrange7699: - %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.4863, i64 66, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4865, i64 50, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - br label %endif7695 -endif7695: - br label %for.step7689 -for.step7689: - %t65 = load i64, ptr %a23 - %t66 = add i64 %t65, 1 - store i64 %t66, ptr %a23 - br label %for.cond7687 -for.end7690: - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t68 = getelementptr inbounds %S.ast.Type, ptr %t67, i32 0, i32 0 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.4866, i64 4, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp eq i32 %t72, 0 - br label %logic.from7700 -logic.from7700: - br i1 %t73, label %logic.rhs7701, label %logic.end7702 -logic.rhs7701: - %t74 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t75 = load %S.ast.Type, ptr %t74 - %t76 = call i1 @finch.gen.cPlain(%S.ast.Type %t75) - %t77 = xor i1 %t76, true - br label %logic.rend7703 -logic.rend7703: - br label %logic.end7702 -logic.end7702: - %t78 = phi i1 [ false, %logic.from7700 ], [ %t77, %logic.rend7703 ] - br i1 %t78, label %then7704, label %endif7706 -then7704: - %t79 = load ptr, ptr %a1 - %t80 = load %S.ast.Node, ptr %a2 - %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t82 = load %S.ast.Type, ptr %t81 - %t83 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t82) - store { ptr, i64, i64 } { ptr @.str.4867, i64 69, i64 0 }, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4868, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif7706 -endif7706: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic7707, label %ok7708 -panic7707: - call void @finch_panic(ptr @.str.4869, i64 4479, ptr @.str.4870) - unreachable -ok7708: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 15 - store i64 0, ptr %a98 - br label %each.cond7709 -each.cond7709: - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = load i64, ptr %a98 - %t102 = icmp slt i64 %t101, %t100 - br i1 %t102, label %each.body7710, label %each.end7712 -each.body7710: - %t103 = load ptr, ptr %t97 - %t104 = getelementptr inbounds %S.gen.FnSig, ptr %t103, i64 %t101 - %t105 = load %S.gen.FnSig, ptr %t104 - store %S.gen.FnSig %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 5 - %t108 = load i1, ptr %t107 - br label %logic.from7713 -logic.from7713: - br i1 %t108, label %logic.rhs7714, label %logic.end7715 -logic.rhs7714: - %t109 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a113 - store { ptr, i64, i64 } %t112, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7716 -logic.rend7716: - br label %logic.end7715 -logic.end7715: - %t117 = phi i1 [ false, %logic.from7713 ], [ %t116, %logic.rend7716 ] - br i1 %t117, label %then7717, label %endif7719 -then7717: - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Node, ptr %a2 - %t120 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } { ptr @.str.4871, 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.4872, i64 38, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a131 - call void @finch_str_drop(ptr %a131) - br label %endif7719 -endif7719: - br label %each.step7711 -each.step7711: - %t132 = load i64, ptr %a98 - %t133 = add i64 %t132, 1 - store i64 %t133, ptr %a98 - br label %each.cond7709 -each.end7712: - 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 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - 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.cond7720 -for.cond7720: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body7721, label %for.end7723 -for.body7721: - %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 %range7724, label %inrange7725 -range7724: - call void @finch_panic_index(ptr @.str.4873, i64 4492, i64 %t15, i64 %t17) - unreachable -inrange7725: - %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.4874, 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 %then7726, label %else7727 -then7726: - %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.4875, i64 13, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load i64, ptr %t32 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %a3 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 - store { ptr, i64, i64 } %t40, ptr %t44 - store i64 %t42, ptr %t32 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.4877, i64 13, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4878, i64 3, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = call { ptr, i64, i64 } @finch.gen.op(ptr %t46, { ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } { ptr @.str.4876, i64 3, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %t45 - %t68 = add i64 %t67, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t69 = load ptr, ptr %a4 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67 - store { ptr, i64, i64 } %t66, ptr %t70 - store i64 %t68, ptr %t45 - br label %endif7728 -else7727: - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Type, ptr %a25 - %t74 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t72, %S.ast.Type %t73) - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a25 - %t77 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t75, %S.ast.Type %t76) - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4879, i64 3, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - %t98 = load i64, ptr %t71 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t99, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %a3 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t98 - store { ptr, i64, i64 } %t97, ptr %t101 - store i64 %t99, ptr %t71 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t103 = load ptr, ptr %a1 - %t104 = load %S.ast.Type, ptr %a25 - %t105 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t103, %S.ast.Type %t104) - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4880, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t110, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = load i64, ptr %t102 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t121, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %a4 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t120 - store { ptr, i64, i64 } %t119, ptr %t123 - store i64 %t121, ptr %t102 - br label %endif7728 -endif7728: - call void @finch.drop.S_ast_Type(ptr %a25) - br label %for.step7722 -for.step7722: - %t124 = load i64, ptr %a11 - %t125 = add i64 %t124, 1 - store i64 %t125, ptr %a11 - br label %for.cond7720 -for.end7723: - %t126 = load ptr, ptr %a1 - %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t128 = load %S.ast.Type, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t126, %S.ast.Type %t128) - store { ptr, i64, i64 } { ptr @.str.4881, i64 5, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4882, i64 1, i64 0 }, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - store { ptr, i64, i64 } %t134, ptr %a138 - call void @finch_str_drop(ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t139, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4883, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4884, i64 2, i64 0 }, ptr %a153 - call void @finch_str_join(ptr %a154, ptr %a4, ptr %a153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t151, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t151, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.4885, i64 1, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4886, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4887, i64 0, i64 0 }, ptr %a169 - %t170 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t171 = getelementptr inbounds %S.ast.Type, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.4888, i64 4, i64 0 }, ptr %a174 - %t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174) - %t176 = icmp ne i32 %t175, 0 - br i1 %t176, label %then7729, label %else7730 -then7729: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a167 - call void @finch.gen.emit(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t179, { ptr, i64, i64 } { ptr @.str.4889, i64 8, i64 0 }) - br label %endif7731 -else7730: - %t180 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t181 = getelementptr inbounds %S.ast.Type, ptr %t180, i32 0, i32 0 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } %t182, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.4890, i64 4, i64 0 }, ptr %a184 - %t185 = call i32 @finch_str_eq(ptr %a183, ptr %a184) - %t186 = icmp ne i32 %t185, 0 - br i1 %t186, label %then7732, label %else7733 -then7732: - %t187 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4891, i64 2, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4892, i64 8, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load ptr, ptr %a1 - %t192 = load ptr, ptr %a1 - %t193 = load ptr, ptr %a1 - %t194 = load { ptr, i64, i64 }, ptr %a167 - %t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } { ptr @.str.4894, i64 8, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.4895, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t205, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } { ptr @.str.4893, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.gen.emit(ptr %t191, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7734 -else7733: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t214, %S.ast.Type %t216) - %t218 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t217, ptr %a168 - store { ptr, i64, i64 } %t218, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load ptr, ptr %a1 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t222 = load %S.ast.Type, ptr %t221 - %t223 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t220, %S.ast.Type %t222) - %t224 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t223, ptr %a169 - store { ptr, i64, i64 } %t224, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4896, i64 4, i64 0 }, ptr %a229 - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a228 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.4897, i64 1, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load ptr, ptr %a1 - %t238 = load { ptr, i64, i64 }, ptr %a167 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t237, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t236, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t236, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.emit(ptr %t226, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7734 -endif7734: - br label %endif7731 -endif7731: - store { ptr, i64, i64 } { ptr @.str.4898, i64 0, i64 0 }, ptr %a247 - %t248 = load ptr, ptr %a1 - %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic7735, label %ok7736 -panic7735: - call void @finch_panic(ptr @.str.4899, i64 4517, ptr @.str.4900) - unreachable -ok7736: - %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 31 - %t251 = getelementptr inbounds %S.platform.Target, ptr %t250, i32 0, i32 1 - %t252 = load i1, ptr %t251 - br i1 %t252, label %then7737, label %endif7739 -then7737: - %t253 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4901, i64 10, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - br label %endif7739 -endif7739: - %t255 = load ptr, ptr %a1 - %t256 = load %S.gen.Saved, ptr %a7 - %t257 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4902, i64 6, i64 0 }, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a258 - %t262 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t261, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t261, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t267, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4903, i64 1, i64 0 }, ptr %a270 - call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) - store { ptr, i64, i64 } %t267, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a268 - %t273 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t272, ptr %a275 - store { ptr, i64, i64 } %t273, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t272, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4904, i64 2, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t283, ptr %a287 - store { ptr, i64, i64 } %t285, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t283, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.4905, i64 1, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4906, i64 2, i64 0 }, ptr %a297 - call void @finch_str_join(ptr %a298, ptr %a3, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t295, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t295, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t305, ptr %a307 - store { ptr, i64, i64 } { ptr @.str.4907, i64 1, i64 0 }, ptr %a308 - call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) - store { ptr, i64, i64 } %t305, ptr %a309 - call void @finch_str_drop(ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a306 - call void @finch.gen.endHelper(ptr %t255, %S.gen.Saved %t256, { ptr, i64, i64 } %t310) - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - call void @finch_str_copy(ptr %a315, ptr %a314) - %t316 = load { ptr, i64, i64 }, ptr %a315 - call void @finch_str_drop(ptr %a247) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Saved(ptr %a7) - call void @finch.drop.arr_str(ptr %a4) - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t316 -} - -define internal void @finch.drop.arr_S_gen_Abi(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond7862 -n.cond7862: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body7863, label %n.end7864 -n.body7863: - %t7 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Abi(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond7862 -n.end7864: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Plan(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Abi(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_gen_Abi(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) { -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca i64, align 16 - %a108 = alloca %S.ast.Type, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.gen.Plan, align 16 - %a276 = alloca %S.gen.Saved, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca i64, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca i64, align 16 - %a318 = alloca %S.ast.Type, align 16 - %a319 = alloca %S.ast.Type, align 16 - %a321 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.gen.Abi, align 16 - %a331 = alloca %S.gen.Abi, align 16 - %a333 = alloca %S.gen.Abi, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca i64, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a793 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a808 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7740, label %ok7741 -panic7740: - call void @finch_panic(ptr @.str.4908, i64 4526, ptr @.str.4909) - unreachable -ok7741: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 - %t7 = load i64, ptr %a2 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.4910, i64 4526, i64 %t7, i64 %t9) - unreachable -inrange7743: - %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.4911, i64 9, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.4912, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t30, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t30, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic7744, label %ok7745 -panic7744: - call void @finch_panic(ptr @.str.4913, i64 4528, ptr @.str.4914) - unreachable -ok7745: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 40 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4915, i64 2, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t42 - %t50 = load ptr, ptr %t41 - store i64 0, ptr %a51 - br label %find.cond7746 -find.cond7746: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body7747, label %find.end7750 -find.body7747: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit7748, label %find.next7749 -find.hit7748: - store i64 %t52, ptr %a48 - br label %find.end7750 -find.next7749: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond7746 -find.end7750: - store { ptr, i64, i64 } %t47, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load i64, ptr %a48 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then7751, label %endif7753 -then7751: - %t64 = load { ptr, i64, i64 }, ptr %a38 - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t64 -endif7753: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic7754, label %ok7755 -panic7754: - call void @finch_panic(ptr @.str.4916, i64 4531, ptr @.str.4917) - unreachable -ok7755: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 40 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4918, i64 2, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load i64, ptr %t68 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t67, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t67 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t68 - %t78 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = icmp sgt i64 %t80, 0 - br label %logic.from7756 -logic.from7756: - br i1 %t81, label %logic.end7758, label %logic.rhs7757 -logic.rhs7757: - %t82 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 - %t83 = load i1, ptr %t82 - br label %logic.rend7759 -logic.rend7759: - br label %logic.end7758 -logic.end7758: - %t84 = phi i1 [ true, %logic.from7756 ], [ %t83, %logic.rend7759 ] - br i1 %t84, label %then7760, label %endif7762 -then7760: - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Node, ptr %a3 - %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - store { ptr, i64, i64 } { ptr @.str.4919, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4920, i64 81, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.fail(ptr %t85, %S.ast.Node %t86, { ptr, i64, i64 } %t97) - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_drop(ptr %a98) - br label %endif7762 -endif7762: - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - store i64 0, ptr %a100 - br label %each.cond7763 -each.cond7763: - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t102 = load i64, ptr %t101 - %t103 = load i64, ptr %a100 - %t104 = icmp slt i64 %t103, %t102 - br i1 %t104, label %each.body7764, label %each.end7766 -each.body7764: - %t105 = load ptr, ptr %t99 - %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t103 - %t107 = load %S.ast.Type, ptr %t106 - store %S.ast.Type %t107, ptr %a108 - %t109 = load %S.ast.Type, ptr %a108 - %t110 = call i1 @finch.gen.isNumber(%S.ast.Type %t109) - br label %logic.from7767 -logic.from7767: - br i1 %t110, label %logic.end7769, label %logic.rhs7768 -logic.rhs7768: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4921, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7770 -logic.rend7770: - br label %logic.end7769 -logic.end7769: - %t117 = phi i1 [ true, %logic.from7767 ], [ %t116, %logic.rend7770 ] - br label %logic.from7771 -logic.from7771: - br i1 %t117, label %logic.end7773, label %logic.rhs7772 -logic.rhs7772: - %t118 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t119 = load { ptr, i64, i64 }, ptr %t118 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4922, i64 4, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend7774 -logic.rend7774: - br label %logic.end7773 -logic.end7773: - %t124 = phi i1 [ true, %logic.from7771 ], [ %t123, %logic.rend7774 ] - br label %logic.from7775 -logic.from7775: - br i1 %t124, label %logic.end7777, label %logic.rhs7776 -logic.rhs7776: - %t125 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4923, i64 3, i64 0 }, ptr %a128 - %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) - %t130 = icmp ne i32 %t129, 0 - br label %logic.rend7778 -logic.rend7778: - br label %logic.end7777 -logic.end7777: - %t131 = phi i1 [ true, %logic.from7775 ], [ %t130, %logic.rend7778 ] - br label %logic.from7779 -logic.from7779: - br i1 %t131, label %logic.end7781, label %logic.rhs7780 -logic.rhs7780: - %t132 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4924, i64 6, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp ne i32 %t136, 0 - br label %logic.from7782 -logic.from7782: - br i1 %t137, label %logic.rhs7783, label %logic.end7784 -logic.rhs7783: - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic7785, label %ok7786 -panic7785: - call void @finch_panic(ptr @.str.4925, i64 4536, ptr @.str.4926) - unreachable -ok7786: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load ptr, ptr %a1 - %t142 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 3 - %t143 = load { ptr, i64, i64 }, ptr %t142 - %t144 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 2 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = call i64 @finch.gen.findStruct(ptr %t141, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t145) - %t147 = load { ptr, i64, i64 }, ptr %t140 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 %t146, %t148 - br i1 %t149, label %range7787, label %inrange7788 -range7787: - call void @finch_panic_index(ptr @.str.4927, i64 4536, i64 %t146, i64 %t148) - unreachable -inrange7788: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.gen.StructDef, ptr %t150, i64 %t146 - %t152 = getelementptr inbounds %S.gen.StructDef, ptr %t151, i32 0, i32 2 - %t153 = load i1, ptr %t152 - br label %logic.rend7789 -logic.rend7789: - br label %logic.end7784 -logic.end7784: - %t154 = phi i1 [ false, %logic.from7782 ], [ %t153, %logic.rend7789 ] - br label %logic.rend7790 -logic.rend7790: - br label %logic.end7781 -logic.end7781: - %t155 = phi i1 [ true, %logic.from7779 ], [ %t154, %logic.rend7790 ] - %t156 = xor i1 %t155, true - br i1 %t156, label %then7791, label %endif7793 -then7791: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a3 - %t159 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } { ptr @.str.4928, i64 5, i64 0 }, ptr %a162 - store { ptr, i64, i64 } %t160, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4929, i64 95, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = load %S.ast.Type, ptr %a108 - %t171 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t170) - store { ptr, i64, i64 } %t169, ptr %a173 - store { ptr, i64, i64 } %t171, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t169, ptr %a175 - call void @finch_str_drop(ptr %a175) - store { ptr, i64, i64 } %t171, ptr %a176 - call void @finch_str_drop(ptr %a176) - %t177 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - br label %endif7793 -endif7793: - br label %each.step7765 -each.step7765: - %t179 = load i64, ptr %a100 - %t180 = add i64 %t179, 1 - store i64 %t180, ptr %a100 - br label %each.cond7763 -each.end7766: - %t181 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call i1 @finch.gen.isNumber(%S.ast.Type %t182) - br label %logic.from7794 -logic.from7794: - br i1 %t183, label %logic.end7796, label %logic.rhs7795 -logic.rhs7795: - %t184 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t185 = getelementptr inbounds %S.ast.Type, ptr %t184, i32 0, i32 0 - %t186 = load { ptr, i64, i64 }, ptr %t185 - store { ptr, i64, i64 } %t186, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4930, i64 4, i64 0 }, ptr %a188 - %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) - %t190 = icmp ne i32 %t189, 0 - br label %logic.rend7797 -logic.rend7797: - br label %logic.end7796 -logic.end7796: - %t191 = phi i1 [ true, %logic.from7794 ], [ %t190, %logic.rend7797 ] - br label %logic.from7798 -logic.from7798: - br i1 %t191, label %logic.end7800, label %logic.rhs7799 -logic.rhs7799: - %t192 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4931, i64 4, i64 0 }, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br label %logic.rend7801 -logic.rend7801: - br label %logic.end7800 -logic.end7800: - %t199 = phi i1 [ true, %logic.from7798 ], [ %t198, %logic.rend7801 ] - br label %logic.from7802 -logic.from7802: - br i1 %t199, label %logic.end7804, label %logic.rhs7803 -logic.rhs7803: - %t200 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.4932, i64 3, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.rend7805 -logic.rend7805: - br label %logic.end7804 -logic.end7804: - %t207 = phi i1 [ true, %logic.from7802 ], [ %t206, %logic.rend7805 ] - br label %logic.from7806 -logic.from7806: - br i1 %t207, label %logic.end7808, label %logic.rhs7807 -logic.rhs7807: - %t208 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t209 = getelementptr inbounds %S.ast.Type, ptr %t208, i32 0, i32 0 - %t210 = load { ptr, i64, i64 }, ptr %t209 - store { ptr, i64, i64 } %t210, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.4933, i64 4, i64 0 }, ptr %a212 - %t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212) - %t214 = icmp ne i32 %t213, 0 - br label %logic.rend7809 -logic.rend7809: - br label %logic.end7808 -logic.end7808: - %t215 = phi i1 [ true, %logic.from7806 ], [ %t214, %logic.rend7809 ] - br label %logic.from7810 -logic.from7810: - br i1 %t215, label %logic.end7812, label %logic.rhs7811 -logic.rhs7811: - %t216 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } %t218, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4934, i64 6, i64 0 }, ptr %a220 - %t221 = call i32 @finch_str_eq(ptr %a219, ptr %a220) - %t222 = icmp ne i32 %t221, 0 - br label %logic.from7813 -logic.from7813: - br i1 %t222, label %logic.rhs7814, label %logic.end7815 -logic.rhs7814: - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic7816, label %ok7817 -panic7816: - call void @finch_panic(ptr @.str.4935, i64 4540, ptr @.str.4936) - unreachable -ok7817: - %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 16 - %t226 = load ptr, ptr %a1 - %t227 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t228 = getelementptr inbounds %S.ast.Type, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - %t230 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t231 = getelementptr inbounds %S.ast.Type, ptr %t230, i32 0, i32 2 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = call i64 @finch.gen.findStruct(ptr %t226, { ptr, i64, i64 } %t229, { ptr, i64, i64 } %t232) - %t234 = load { ptr, i64, i64 }, ptr %t225 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range7818, label %inrange7819 -range7818: - call void @finch_panic_index(ptr @.str.4937, i64 4540, i64 %t233, i64 %t235) - unreachable -inrange7819: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds %S.gen.StructDef, ptr %t237, i64 %t233 - %t239 = getelementptr inbounds %S.gen.StructDef, ptr %t238, i32 0, i32 2 - %t240 = load i1, ptr %t239 - br label %logic.rend7820 -logic.rend7820: - br label %logic.end7815 -logic.end7815: - %t241 = phi i1 [ false, %logic.from7813 ], [ %t240, %logic.rend7820 ] - br label %logic.rend7821 -logic.rend7821: - br label %logic.end7812 -logic.end7812: - %t242 = phi i1 [ true, %logic.from7810 ], [ %t241, %logic.rend7821 ] - %t243 = xor i1 %t242, true - br i1 %t243, label %then7822, label %endif7824 -then7822: - %t244 = load ptr, ptr %a1 - %t245 = load %S.ast.Node, ptr %a3 - %t246 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t247 = load { ptr, i64, i64 }, ptr %t246 - store { ptr, i64, i64 } { ptr @.str.4938, i64 5, i64 0 }, ptr %a249 - store { ptr, i64, i64 } %t247, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4939, i64 38, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t258 = load %S.ast.Type, ptr %t257 - %t259 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t258) - store { ptr, i64, i64 } %t256, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t256, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a260 - call void @finch.gen.fail(ptr %t244, %S.ast.Node %t245, { ptr, i64, i64 } %t265) - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_drop(ptr %a266) - br label %endif7824 -endif7824: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t269 = load %S.ast.Type, ptr %t268 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t271 = load { ptr, i64, i64 }, ptr %t270 - %t272 = call %S.gen.Plan @finch.gen.makePlan(ptr %t267, %S.ast.Type %t269, { ptr, i64, i64 } %t271) - store %S.gen.Plan %t272, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t274) - store %S.gen.Saved %t275, ptr %a276 - store { ptr, i64, i64 } zeroinitializer, ptr %a277 - store i64 0, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.4940, i64 0, i64 0 }, ptr %a279 - %t280 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t281 = load i1, ptr %t280 - br i1 %t281, label %then7825, label %endif7827 -then7825: - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t285 = load %S.ast.Type, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t285) - store { ptr, i64, i64 } { ptr @.str.4941, i64 9, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4942, i64 14, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %t282 - %t298 = add i64 %t297, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t299 = load ptr, ptr %a277 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 - store { ptr, i64, i64 } %t296, ptr %t300 - store i64 %t298, ptr %t282 - %t301 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.4943, i64 3, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - store i64 1, ptr %a278 - br label %endif7827 -endif7827: - store { ptr, i64, i64 } zeroinitializer, ptr %a303 - %t304 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i32 0, i32 1 - %t306 = load i64, ptr %t305 - store i64 0, ptr %a307 - br label %for.cond7828 -for.cond7828: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t306 - br i1 %t309, label %for.body7829, label %for.end7831 -for.body7829: - %t310 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t311 = load i64, ptr %a307 - %t312 = load { ptr, i64, i64 }, ptr %t310 - %t313 = extractvalue { ptr, i64, i64 } %t312, 1 - %t314 = icmp uge i64 %t311, %t313 - br i1 %t314, label %range7832, label %inrange7833 -range7832: - call void @finch_panic_index(ptr @.str.4944, i64 4555, i64 %t311, i64 %t313) - unreachable -inrange7833: - %t315 = extractvalue { ptr, i64, i64 } %t312, 0 - %t316 = getelementptr inbounds %S.ast.Type, ptr %t315, i64 %t311 - %t317 = load %S.ast.Type, ptr %t316 - store %S.ast.Type %t317, ptr %a318 - call void @finch.copy.S_ast_Type(ptr %a319, ptr %a318) - %t320 = load %S.ast.Type, ptr %a319 - store %S.ast.Type %t320, ptr %a321 - %t322 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 1 - %t323 = load i64, ptr %a307 - %t324 = load { ptr, i64, i64 }, ptr %t322 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range7834, label %inrange7835 -range7834: - call void @finch_panic_index(ptr @.str.4945, i64 4556, i64 %t323, i64 %t325) - unreachable -inrange7835: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds %S.gen.Abi, ptr %t327, i64 %t323 - %t329 = load %S.gen.Abi, ptr %t328 - store %S.gen.Abi %t329, ptr %a330 - call void @finch.copy.S_gen_Abi(ptr %a331, ptr %a330) - %t332 = load %S.gen.Abi, ptr %a331 - store %S.gen.Abi %t332, ptr %a333 - %t334 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.4946, i64 6, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %then7836, label %else7837 -then7836: - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t341 = load ptr, ptr %a1 - %t342 = load %S.ast.Type, ptr %a321 - %t343 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t341, %S.ast.Type %t342) - store { ptr, i64, i64 } { ptr @.str.4947, i64 10, i64 0 }, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.4948, i64 8, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - %t354 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 3 - %t355 = load i64, ptr %t354 - call void @finch_str_from_int(ptr %a356, i64 %t355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t353, ptr %a359 - store { ptr, i64, i64 } %t357, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t353, ptr %a361 - call void @finch_str_drop(ptr %a361) - store { ptr, i64, i64 } %t357, ptr %a362 - call void @finch_str_drop(ptr %a362) - %t363 = load { ptr, i64, i64 }, ptr %a358 - store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4949, i64 3, i64 0 }, ptr %a366 - call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) - store { ptr, i64, i64 } %t363, ptr %a367 - call void @finch_str_drop(ptr %a367) - %t368 = load { ptr, i64, i64 }, ptr %a364 - %t369 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a370, i64 %t369) - %t371 = load { ptr, i64, i64 }, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t368, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - %t378 = load i64, ptr %t340 - %t379 = add i64 %t378, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t379, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t380 = load ptr, ptr %a277 - %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t378 - store { ptr, i64, i64 } %t377, ptr %t381 - store i64 %t379, ptr %t340 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t383 = load ptr, ptr %a1 - %t384 = load %S.ast.Type, ptr %a321 - %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.4950, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = load ptr, ptr %a1 - %t392 = load ptr, ptr %a1 - %t393 = load %S.ast.Type, ptr %a321 - %t394 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t392, %S.ast.Type %t393) - %t395 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a396, i64 %t395) - %t397 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4951, i64 2, i64 0 }, ptr %a399 - store { ptr, i64, i64 } %t397, ptr %a400 - call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) - store { ptr, i64, i64 } %t397, ptr %a401 - call void @finch_str_drop(ptr %a401) - %t402 = load { ptr, i64, i64 }, ptr %a398 - %t403 = call { ptr, i64, i64 } @finch.gen.load(ptr %t391, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t402) - store { ptr, i64, i64 } %t394, ptr %a404 - call void @finch_str_drop(ptr %a404) - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_drop(ptr %a405) - store { ptr, i64, i64 } %t390, ptr %a407 - store { ptr, i64, i64 } %t403, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t390, ptr %a409 - call void @finch_str_drop(ptr %a409) - store { ptr, i64, i64 } %t403, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a406 - %t412 = load i64, ptr %t382 - %t413 = add i64 %t412, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t413, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t414 = load ptr, ptr %a303 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t412 - store { ptr, i64, i64 } %t411, ptr %t415 - store i64 %t413, ptr %t382 - %t416 = load i64, ptr %a278 - %t417 = add i64 %t416, 1 - store i64 %t417, ptr %a278 - br label %endif7838 -else7837: - %t418 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t419 = load { ptr, i64, i64 }, ptr %t418 - store { ptr, i64, i64 } %t419, ptr %a420 - store { ptr, i64, i64 } { ptr @.str.4952, i64 8, i64 0 }, ptr %a421 - %t422 = call i32 @finch_str_eq(ptr %a420, ptr %a421) - %t423 = icmp ne i32 %t422, 0 - br i1 %t423, label %then7839, label %else7840 -then7839: - %t424 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t425 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a426, i64 %t425) - %t427 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.4953, i64 6, i64 0 }, ptr %a429 - store { ptr, i64, i64 } %t427, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = load i64, ptr %t424 - %t434 = add i64 %t433, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t435 = load ptr, ptr %a277 - %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433 - store { ptr, i64, i64 } %t432, ptr %t436 - store i64 %t434, ptr %t424 - %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t438 = load ptr, ptr %a1 - %t439 = load %S.ast.Type, ptr %a321 - %t440 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t438, %S.ast.Type %t439) - store { ptr, i64, i64 } %t440, ptr %a442 - store { ptr, i64, i64 } { ptr @.str.4954, i64 1, i64 0 }, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - %t446 = load ptr, ptr %a1 - %t447 = load ptr, ptr %a1 - %t448 = load %S.ast.Type, ptr %a321 - %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) - %t450 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } { ptr @.str.4955, i64 2, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t452, ptr %a456 - call void @finch_str_drop(ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a453 - %t458 = call { ptr, i64, i64 } @finch.gen.load(ptr %t446, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t449, ptr %a459 - call void @finch_str_drop(ptr %a459) - store { ptr, i64, i64 } %t457, ptr %a460 - call void @finch_str_drop(ptr %a460) - store { ptr, i64, i64 } %t445, ptr %a462 - store { ptr, i64, i64 } %t458, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t445, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t458, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a461 - %t467 = load i64, ptr %t437 - %t468 = add i64 %t467, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t468, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t469 = load ptr, ptr %a303 - %t470 = getelementptr inbounds { ptr, i64, i64 }, ptr %t469, i64 %t467 - store { ptr, i64, i64 } %t466, ptr %t470 - store i64 %t468, ptr %t437 - %t471 = load i64, ptr %a278 - %t472 = add i64 %t471, 1 - store i64 %t472, ptr %a278 - br label %endif7841 -else7840: - %t473 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t474 = load { ptr, i64, i64 }, ptr %t473 - store { ptr, i64, i64 } %t474, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.4956, i64 6, i64 0 }, ptr %a476 - %t477 = call i32 @finch_str_eq(ptr %a475, ptr %a476) - %t478 = icmp ne i32 %t477, 0 - br i1 %t478, label %then7842, label %else7843 -then7842: - %t479 = load ptr, ptr %a1 - %t480 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t479, { ptr, i64, i64 } { ptr @.str.4957, i64 9, i64 0 }) - store { ptr, i64, i64 } %t480, ptr %a481 - %t482 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load i64, ptr %t483 - store i64 0, ptr %a485 - br label %for.cond7845 -for.cond7845: - %t486 = load i64, ptr %a485 - %t487 = icmp slt i64 %t486, %t484 - br i1 %t487, label %for.body7846, label %for.end7848 -for.body7846: - %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t489 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t490 = load i64, ptr %a485 - %t491 = load { ptr, i64, i64 }, ptr %t489 - %t492 = extractvalue { ptr, i64, i64 } %t491, 1 - %t493 = icmp uge i64 %t490, %t492 - br i1 %t493, label %range7849, label %inrange7850 -range7849: - call void @finch_panic_index(ptr @.str.4958, i64 4568, i64 %t490, i64 %t492) - unreachable -inrange7850: - %t494 = extractvalue { ptr, i64, i64 } %t491, 0 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i64 %t490 - %t496 = load { ptr, i64, i64 }, ptr %t495 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.4959, i64 3, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - %t500 = load { ptr, i64, i64 }, ptr %a497 - %t501 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a502, i64 %t501) - %t503 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a505 - store { ptr, i64, i64 } %t503, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t500, ptr %a507 - call void @finch_str_drop(ptr %a507) - store { ptr, i64, i64 } %t503, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = load { ptr, i64, i64 }, ptr %a504 - %t510 = load i64, ptr %t488 - %t511 = add i64 %t510, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t511, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t512 = load ptr, ptr %a277 - %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i64 %t510 - store { ptr, i64, i64 } %t509, ptr %t513 - store i64 %t511, ptr %t488 - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t516 = load i64, ptr %a485 - %t517 = load { ptr, i64, i64 }, ptr %t515 - %t518 = extractvalue { ptr, i64, i64 } %t517, 1 - %t519 = icmp uge i64 %t516, %t518 - br i1 %t519, label %range7851, label %inrange7852 -range7851: - call void @finch_panic_index(ptr @.str.4960, i64 4569, i64 %t516, i64 %t518) - unreachable -inrange7852: - %t520 = extractvalue { ptr, i64, i64 } %t517, 0 - %t521 = getelementptr inbounds { ptr, i64, i64 }, ptr %t520, i64 %t516 - %t522 = load { ptr, i64, i64 }, ptr %t521 - %t523 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a524, i64 %t523) - %t525 = load { ptr, i64, i64 }, ptr %a524 - store { ptr, i64, i64 } { ptr @.str.4961, i64 2, i64 0 }, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t525, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = load ptr, ptr %a1 - %t532 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.4962, i64 31, i64 0 }, ptr %a534 - store { ptr, i64, i64 } %t532, ptr %a535 - call void @finch_str_concat(ptr %a533, ptr %a534, ptr %a535) - %t536 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t536, ptr %a538 - store { ptr, i64, i64 } { ptr @.str.4963, i64 6, i64 0 }, ptr %a539 - call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) - store { ptr, i64, i64 } %t536, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a537 - %t542 = load i64, ptr %a485 - %t543 = mul i64 8, %t542 - call void @finch_str_from_int(ptr %a544, i64 %t543) - %t545 = load { ptr, i64, i64 }, ptr %a544 - store { ptr, i64, i64 } %t541, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - store { ptr, i64, i64 } %t541, ptr %a549 - call void @finch_str_drop(ptr %a549) - store { ptr, i64, i64 } %t545, ptr %a550 - call void @finch_str_drop(ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a546 - %t552 = call { ptr, i64, i64 } @finch.gen.op(ptr %t531, { ptr, i64, i64 } %t551) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.gen.store(ptr %t514, { ptr, i64, i64 } %t522, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t552) - store { ptr, i64, i64 } %t530, ptr %a554 - call void @finch_str_drop(ptr %a554) - store { ptr, i64, i64 } %t552, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load i64, ptr %a278 - %t557 = add i64 %t556, 1 - store i64 %t557, ptr %a278 - br label %for.step7847 -for.step7847: - %t558 = load i64, ptr %a485 - %t559 = add i64 %t558, 1 - store i64 %t559, ptr %a485 - br label %for.cond7845 -for.end7848: - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t561 = load ptr, ptr %a1 - %t562 = load %S.ast.Type, ptr %a321 - %t563 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t561, %S.ast.Type %t562) - store { ptr, i64, i64 } %t563, ptr %a565 - store { ptr, i64, i64 } { ptr @.str.4964, i64 1, i64 0 }, ptr %a566 - call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) - store { ptr, i64, i64 } %t563, ptr %a567 - call void @finch_str_drop(ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a564 - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a321 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - %t573 = load { ptr, i64, i64 }, ptr %a481 - %t574 = call { ptr, i64, i64 } @finch.gen.load(ptr %t569, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_drop(ptr %a575) - store { ptr, i64, i64 } %t568, ptr %a577 - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) - store { ptr, i64, i64 } %t568, ptr %a579 - call void @finch_str_drop(ptr %a579) - store { ptr, i64, i64 } %t574, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a576 - %t582 = load i64, ptr %t560 - %t583 = add i64 %t582, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t583, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t584 = load ptr, ptr %a303 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i64 %t582 - store { ptr, i64, i64 } %t581, ptr %t585 - store i64 %t583, ptr %t560 - call void @finch_str_drop(ptr %a481) - br label %endif7844 -else7843: - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t587 = load ptr, ptr %a1 - %t588 = load %S.ast.Type, ptr %a321 - %t589 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t587, %S.ast.Type %t588) - %t590 = load ptr, ptr %a1 - %t591 = load %S.ast.Type, ptr %a321 - %t592 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t590, %S.ast.Type %t591) - store { ptr, i64, i64 } %t589, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t589, ptr %a596 - call void @finch_str_drop(ptr %a596) - store { ptr, i64, i64 } %t592, ptr %a597 - call void @finch_str_drop(ptr %a597) - %t598 = load { ptr, i64, i64 }, ptr %a593 - store { ptr, i64, i64 } %t598, ptr %a600 - store { ptr, i64, i64 } { ptr @.str.4965, i64 3, i64 0 }, ptr %a601 - call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) - store { ptr, i64, i64 } %t598, ptr %a602 - call void @finch_str_drop(ptr %a602) - %t603 = load { ptr, i64, i64 }, ptr %a599 - %t604 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a605, i64 %t604) - %t606 = load { ptr, i64, i64 }, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a608 - store { ptr, i64, i64 } %t606, ptr %a609 - call void @finch_str_concat(ptr %a607, ptr %a608, ptr %a609) - store { ptr, i64, i64 } %t603, ptr %a610 - call void @finch_str_drop(ptr %a610) - store { ptr, i64, i64 } %t606, ptr %a611 - call void @finch_str_drop(ptr %a611) - %t612 = load { ptr, i64, i64 }, ptr %a607 - %t613 = load i64, ptr %t586 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a277 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t586 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t618 = load ptr, ptr %a1 - %t619 = load %S.ast.Type, ptr %a321 - %t620 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t618, %S.ast.Type %t619) - store { ptr, i64, i64 } %t620, ptr %a622 - store { ptr, i64, i64 } { ptr @.str.4966, i64 3, i64 0 }, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - %t626 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a627, i64 %t626) - %t628 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t625, ptr %a630 - store { ptr, i64, i64 } %t628, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t625, ptr %a632 - call void @finch_str_drop(ptr %a632) - store { ptr, i64, i64 } %t628, ptr %a633 - call void @finch_str_drop(ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a629 - %t635 = load i64, ptr %t617 - %t636 = add i64 %t635, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t637 = load ptr, ptr %a303 - %t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635 - store { ptr, i64, i64 } %t634, ptr %t638 - store i64 %t636, ptr %t617 - %t639 = load i64, ptr %a278 - %t640 = add i64 %t639, 1 - store i64 %t640, ptr %a278 - br label %endif7844 -endif7844: - br label %endif7841 -endif7841: - br label %endif7838 -endif7838: - call void @finch.drop.S_gen_Abi(ptr %a333) - call void @finch.drop.S_ast_Type(ptr %a321) - br label %for.step7830 -for.step7830: - %t641 = load i64, ptr %a307 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a307 - br label %for.cond7828 -for.end7831: - %t643 = load ptr, ptr %a1 - %t644 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t645 = load %S.ast.Type, ptr %t644 - %t646 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t643, %S.ast.Type %t645) - store { ptr, i64, i64 } { ptr @.str.4967, i64 5, i64 0 }, ptr %a648 - store { ptr, i64, i64 } %t646, ptr %a649 - call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649) - store { ptr, i64, i64 } %t646, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } %t651, ptr %a653 - store { ptr, i64, i64 } { ptr @.str.4968, i64 1, i64 0 }, ptr %a654 - call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) - store { ptr, i64, i64 } %t651, ptr %a655 - call void @finch_str_drop(ptr %a655) - %t656 = load { ptr, i64, i64 }, ptr %a652 - %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t656, ptr %a660 - store { ptr, i64, i64 } %t658, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t656, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - store { ptr, i64, i64 } %t663, ptr %a665 - store { ptr, i64, i64 } { ptr @.str.4969, i64 1, i64 0 }, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t663, ptr %a667 - call void @finch_str_drop(ptr %a667) - %t668 = load { ptr, i64, i64 }, ptr %a664 - %t669 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4970, i64 2, i64 0 }, ptr %a670 - call void @finch_str_join(ptr %a671, ptr %a303, ptr %a670) - %t672 = load { ptr, i64, i64 }, ptr %a671 - store { ptr, i64, i64 } %t668, ptr %a674 - store { ptr, i64, i64 } %t672, ptr %a675 - call void @finch_str_concat(ptr %a673, ptr %a674, ptr %a675) - store { ptr, i64, i64 } %t668, ptr %a676 - call void @finch_str_drop(ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.4971, i64 1, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - store { ptr, i64, i64 } %t683, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.4972, i64 0, i64 0 }, ptr %a685 - %t686 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t687 = getelementptr inbounds %S.ast.Type, ptr %t686, i32 0, i32 0 - %t688 = load { ptr, i64, i64 }, ptr %t687 - store { ptr, i64, i64 } %t688, ptr %a689 - store { ptr, i64, i64 } { ptr @.str.4973, 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 %then7853, label %else7854 -then7853: - %t693 = load ptr, ptr %a1 - %t694 = load { ptr, i64, i64 }, ptr %a684 - call void @finch.gen.emit(ptr %t693, { ptr, i64, i64 } %t694) - %t695 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t695, { ptr, i64, i64 } { ptr @.str.4974, i64 8, i64 0 }) - br label %endif7855 -else7854: - %t696 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t697 = load i1, ptr %t696 - br i1 %t697, label %then7856, label %else7857 -then7856: - %t698 = load ptr, ptr %a1 - %t699 = load ptr, ptr %a1 - %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t701 = load %S.ast.Type, ptr %t700 - %t702 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t699, %S.ast.Type %t701) - %t703 = load ptr, ptr %a1 - %t704 = load { ptr, i64, i64 }, ptr %a684 - %t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704) - %t706 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.store(ptr %t698, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t705, { ptr, i64, i64 } %t706) - store { ptr, i64, i64 } %t702, ptr %a707 - call void @finch_str_drop(ptr %a707) - store { ptr, i64, i64 } %t705, ptr %a708 - call void @finch_str_drop(ptr %a708) - %t709 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t709, { ptr, i64, i64 } { ptr @.str.4975, i64 8, i64 0 }) - br label %endif7858 -else7857: - %t710 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t711 = getelementptr inbounds %S.gen.Abi, ptr %t710, i32 0, i32 0 - %t712 = load { ptr, i64, i64 }, ptr %t711 - store { ptr, i64, i64 } %t712, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.4976, i64 6, i64 0 }, ptr %a714 - %t715 = call i32 @finch_str_eq(ptr %a713, ptr %a714) - %t716 = icmp ne i32 %t715, 0 - br i1 %t716, label %then7859, label %else7860 -then7859: - %t717 = load ptr, ptr %a1 - %t718 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t717, { ptr, i64, i64 } { ptr @.str.4977, i64 9, i64 0 }) - store { ptr, i64, i64 } %t718, ptr %a719 - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t723 = load %S.ast.Type, ptr %t722 - %t724 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t721, %S.ast.Type %t723) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a684 - %t727 = call { ptr, i64, i64 } @finch.gen.op(ptr %t725, { ptr, i64, i64 } %t726) - %t728 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.store(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t727, { ptr, i64, i64 } %t728) - store { ptr, i64, i64 } %t724, ptr %a729 - call void @finch_str_drop(ptr %a729) - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_drop(ptr %a730) - %t731 = load ptr, ptr %a1 - %t732 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t733 = getelementptr inbounds %S.gen.Abi, ptr %t732, i32 0, i32 2 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } { ptr @.str.4978, i64 4, i64 0 }, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - %t738 = load { ptr, i64, i64 }, ptr %a735 - store { ptr, i64, i64 } %t738, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.4979, i64 1, i64 0 }, ptr %a741 - call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741) - store { ptr, i64, i64 } %t738, ptr %a742 - call void @finch_str_drop(ptr %a742) - %t743 = load { ptr, i64, i64 }, ptr %a739 - %t744 = load ptr, ptr %a1 - %t745 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t746 = getelementptr inbounds %S.gen.Abi, ptr %t745, i32 0, i32 2 - %t747 = load { ptr, i64, i64 }, ptr %t746 - %t748 = load { ptr, i64, i64 }, ptr %a719 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t744, { ptr, i64, i64 } %t747, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t743, ptr %a751 - store { ptr, i64, i64 } %t749, ptr %a752 - call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752) - store { ptr, i64, i64 } %t743, ptr %a753 - call void @finch_str_drop(ptr %a753) - store { ptr, i64, i64 } %t749, ptr %a754 - call void @finch_str_drop(ptr %a754) - %t755 = load { ptr, i64, i64 }, ptr %a750 - call void @finch.gen.emit(ptr %t731, { ptr, i64, i64 } %t755) - store { ptr, i64, i64 } %t755, ptr %a756 - call void @finch_str_drop(ptr %a756) - call void @finch_str_drop(ptr %a719) - br label %endif7861 -else7860: - %t757 = load ptr, ptr %a1 - %t758 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t759 = load %S.ast.Type, ptr %t758 - %t760 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t757, %S.ast.Type %t759) - %t761 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } %t760, ptr %a685 - store { ptr, i64, i64 } %t761, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load ptr, ptr %a1 - %t764 = load ptr, ptr %a1 - %t765 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t766 = load %S.ast.Type, ptr %t765 - %t767 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t764, %S.ast.Type %t766) - store { ptr, i64, i64 } { ptr @.str.4980, i64 4, i64 0 }, ptr %a769 - store { ptr, i64, i64 } %t767, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.4981, i64 1, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = load ptr, ptr %a1 - %t779 = load { ptr, i64, i64 }, ptr %a684 - %t780 = call { ptr, i64, i64 } @finch.gen.op(ptr %t778, { ptr, i64, i64 } %t779) - store { ptr, i64, i64 } %t777, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t777, ptr %a784 - call void @finch_str_drop(ptr %a784) - store { ptr, i64, i64 } %t780, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a781 - call void @finch.gen.emit(ptr %t763, { ptr, i64, i64 } %t786) - store { ptr, i64, i64 } %t786, ptr %a787 - call void @finch_str_drop(ptr %a787) - br label %endif7861 -endif7861: - br label %endif7858 -endif7858: - br label %endif7855 -endif7855: - %t788 = load ptr, ptr %a1 - %t789 = load %S.gen.Saved, ptr %a276 - %t790 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } { ptr @.str.4982, i64 15, i64 0 }, ptr %a792 - store { ptr, i64, i64 } %t790, ptr %a793 - call void @finch_str_concat(ptr %a791, ptr %a792, ptr %a793) - %t794 = load { ptr, i64, i64 }, ptr %a791 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.4983, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - store { ptr, i64, i64 } %t794, ptr %a798 - call void @finch_str_drop(ptr %a798) - %t799 = load { ptr, i64, i64 }, ptr %a795 - %t800 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - store { ptr, i64, i64 } %t799, ptr %a803 - store { ptr, i64, i64 } %t801, ptr %a804 - call void @finch_str_concat(ptr %a802, ptr %a803, ptr %a804) - store { ptr, i64, i64 } %t799, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load { ptr, i64, i64 }, ptr %a802 - store { ptr, i64, i64 } %t806, ptr %a808 - store { ptr, i64, i64 } { ptr @.str.4984, i64 1, i64 0 }, ptr %a809 - call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) - store { ptr, i64, i64 } %t806, ptr %a810 - call void @finch_str_drop(ptr %a810) - %t811 = load { ptr, i64, i64 }, ptr %a807 - %t812 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t811, ptr %a814 - store { ptr, i64, i64 } %t812, ptr %a815 - call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) - store { ptr, i64, i64 } %t811, ptr %a816 - call void @finch_str_drop(ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a813 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.4985, i64 1, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4986, i64 2, i64 0 }, ptr %a824 - call void @finch_str_join(ptr %a825, ptr %a277, ptr %a824) - %t826 = load { ptr, i64, i64 }, ptr %a825 - store { ptr, i64, i64 } %t822, ptr %a828 - store { ptr, i64, i64 } %t826, ptr %a829 - call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) - store { ptr, i64, i64 } %t822, ptr %a830 - call void @finch_str_drop(ptr %a830) - store { ptr, i64, i64 } %t826, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a827 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.4987, i64 1, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.endHelper(ptr %t788, %S.gen.Saved %t789, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a685) - call void @finch_str_drop(ptr %a684) - call void @finch.drop.arr_str(ptr %a303) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.arr_str(ptr %a277) - call void @finch.drop.S_gen_Saved(ptr %a276) - call void @finch.drop.S_gen_Plan(ptr %a273) - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t839 -} - -define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) { -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 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.ast.Type, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca i64, align 16 - %a85 = alloca i64, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %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 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a244 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7865, label %ok7866 -panic7865: - call void @finch_panic(ptr @.str.4988, i64 4601, ptr @.str.4989) - unreachable -ok7866: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7867, label %inrange7868 -range7867: - call void @finch_panic_index(ptr @.str.4990, i64 4601, i64 %t7, i64 %t9) - unreachable -inrange7868: - %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 %range7869, label %inrange7870 -range7869: - call void @finch_panic_index(ptr @.str.4991, i64 4603, i64 0, i64 %t25) - unreachable -inrange7870: - %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 %then7871, label %endif7873 -then7871: - %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 %range7874, label %inrange7875 -range7874: - call void @finch_panic_index(ptr @.str.4992, i64 4605, i64 0, i64 %t39) - unreachable -inrange7875: - %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.4993, 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) - store { ptr, i64, i64 } %t49, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch_str_drop(ptr %a59) - br label %endif7873 -endif7873: - %t60 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4994, i64 4, i64 0 }, 0 - %t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.ast.Type %t60, { ptr, i64, i64 } %t65, 2 - %t67 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_copy(ptr %a70, ptr %a69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = insertvalue %S.ast.Type %t66, { ptr, i64, i64 } %t71, 3 - store %S.ast.Type %t72, ptr %a73 - %t74 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3 - %t75 = load i1, ptr %t74 - br i1 %t75, label %then7876, label %endif7878 -then7876: - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = call i64 @finch_str_to_int(ptr %a80, ptr @.str.4995, i64 4609) - store i64 -1, ptr %a82 - %t83 = load i64, ptr %t77 - %t84 = load ptr, ptr %t76 - store i64 0, ptr %a85 - br label %find.cond7879 -find.cond7879: - %t86 = load i64, ptr %a85 - %t87 = icmp slt i64 %t86, %t83 - br i1 %t87, label %find.body7880, label %find.end7883 -find.body7880: - %t88 = getelementptr inbounds i64, ptr %t84, i64 %t86 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, %t81 - br i1 %t90, label %find.hit7881, label %find.next7882 -find.hit7881: - store i64 %t86, ptr %a82 - br label %find.end7883 -find.next7882: - %t91 = add i64 %t86, 1 - store i64 %t91, ptr %a85 - br label %find.cond7879 -find.end7883: - %t92 = load i64, ptr %a82 - %t93 = icmp sge i64 %t92, 0 - %t94 = xor i1 %t93, true - br i1 %t94, label %then7884, label %endif7886 -then7884: - %t95 = load ptr, ptr %a1 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = extractvalue { ptr, i64, i64 } %t97, 1 - %t99 = icmp uge i64 0, %t98 - br i1 %t99, label %range7887, label %inrange7888 -range7887: - call void @finch_panic_index(ptr @.str.4996, i64 4610, i64 0, i64 %t98) - unreachable -inrange7888: - %t100 = extractvalue { ptr, i64, i64 } %t97, 0 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 0 - %t102 = load %S.ast.Node, ptr %t101 - %t103 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4997, i64 37, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a105 - %t109 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t108, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t108, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t95, %S.ast.Node %t102, { ptr, i64, i64 } %t115) - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_drop(ptr %a116) - br label %endif7886 -endif7886: - %t117 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0 - %t123 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t127 -endif7878: - %t128 = load ptr, ptr %a1 - %t129 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t130 = load { ptr, i64, i64 }, ptr %t129 - %t131 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 - %t132 = load %S.ast.Type, ptr %t131 - %t133 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4998, i64 3, i64 0 }) - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t130, %S.ast.Type %t132, %S.ast.Type %t133) - store %S.ast.Type %t133, ptr %a135 - call void @finch.drop.S_ast_Type(ptr %a135) - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4999, i64 0, i64 0 }, ptr %a137 - %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond7889 -for.cond7889: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body7890, label %for.end7892 -for.body7890: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5000, i64 12, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5001, i64 2, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t156 = load i64, ptr %a141 - %t157 = load { ptr, i64, i64 }, ptr %t155 - %t158 = extractvalue { ptr, i64, i64 } %t157, 1 - %t159 = icmp uge i64 %t156, %t158 - br i1 %t159, label %range7893, label %inrange7894 -range7893: - call void @finch_panic_index(ptr @.str.5002, i64 4617, i64 %t156, i64 %t158) - unreachable -inrange7894: - %t160 = extractvalue { ptr, i64, i64 } %t157, 0 - %t161 = getelementptr inbounds i64, ptr %t160, i64 %t156 - %t162 = load i64, ptr %t161 - call void @finch_str_from_int(ptr %a163, i64 %t162) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t154, ptr %a166 - store { ptr, i64, i64 } %t164, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t154, ptr %a168 - call void @finch_str_drop(ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a165 - %t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t170) - store { ptr, i64, i64 } %t170, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t171, ptr %a173 - %t174 = load i64, ptr %a141 - %t175 = icmp eq i64 %t174, 0 - br i1 %t175, label %then7895, label %else7896 -then7895: - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_copy(ptr %a178, ptr %a177) - %t179 = load { ptr, i64, i64 }, ptr %a178 - %t180 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t179, ptr %a137 - store { ptr, i64, i64 } %t180, ptr %a181 - call void @finch_str_drop(ptr %a181) - br label %endif7897 -else7896: - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5003, i64 6, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5004, i64 2, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t192, ptr %a195 - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t199, ptr %a137 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif7897 -endif7897: - call void @finch_str_drop(ptr %a173) - br label %for.step7891 -for.step7891: - %t203 = load i64, ptr %a141 - %t204 = add i64 %t203, 1 - store i64 %t204, ptr %a141 - br label %for.cond7889 -for.end7892: - %t205 = load ptr, ptr %a1 - %t206 = load ptr, ptr %a1 - %t207 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5005, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.5006, i64 6, i64 0 }, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - %t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t206, { ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } { ptr @.str.5007, i64 32, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - %t225 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t205, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t224, %S.ast.Node %t225) - store { ptr, i64, i64 } %t217, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5008, i64 10, i64 0 }, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5009, i64 7, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t228, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t242, ptr %a243 - call void @finch.copy.S_ast_Type(ptr %a244, ptr %a243) - %t245 = load %S.ast.Type, ptr %a244 - %t246 = insertvalue %S.gen.Val %t241, %S.ast.Type %t245, 1 - call void @finch_str_drop(ptr %a137) - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t246 -} - -define internal { ptr, i64, i64 } @finch.gen.cExt(ptr %p0, %S.ast.Type %p1) { -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.5010, 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.from7898 -logic.from7898: - br i1 %t8, label %logic.end7900, label %logic.rhs7899 -logic.rhs7899: - %t9 = load %S.ast.Type, ptr %a2 - %t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9) - br label %logic.rend7901 -logic.rend7901: - br label %logic.end7900 -logic.end7900: - %t11 = phi i1 [ true, %logic.from7898 ], [ %t10, %logic.rend7901 ] - br i1 %t11, label %then7902, label %endif7904 -then7902: - %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 %then7905, label %endif7907 -then7905: - ret { ptr, i64, i64 } { ptr @.str.5011, i64 8, i64 0 } -endif7907: - br label %endif7904 -endif7904: - %t15 = load %S.ast.Type, ptr %a2 - %t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15) - br label %logic.from7908 -logic.from7908: - br i1 %t16, label %logic.end7910, label %logic.rhs7909 -logic.rhs7909: - %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.5012, 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.from7911 -logic.from7911: - br i1 %t22, label %logic.rhs7912, label %logic.end7913 -logic.rhs7912: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic7914, label %ok7915 -panic7914: - call void @finch_panic(ptr @.str.5013, i64 4637, ptr @.str.5014) - unreachable -ok7915: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 31 - %t26 = load %S.platform.Target, ptr %t25 - %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - br label %logic.rend7916 -logic.rend7916: - br label %logic.end7913 -logic.end7913: - %t28 = phi i1 [ false, %logic.from7911 ], [ %t27, %logic.rend7916 ] - br label %logic.rend7917 -logic.rend7917: - br label %logic.end7910 -logic.end7910: - %t29 = phi i1 [ true, %logic.from7908 ], [ %t28, %logic.rend7917 ] - br label %logic.from7918 -logic.from7918: - br i1 %t29, label %logic.rhs7919, label %logic.end7920 -logic.rhs7919: - %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.rend7921 -logic.rend7921: - br label %logic.end7920 -logic.end7920: - %t33 = phi i1 [ false, %logic.from7918 ], [ %t32, %logic.rend7921 ] - br i1 %t33, label %then7922, label %endif7924 -then7922: - ret { ptr, i64, i64 } { ptr @.str.5015, i64 8, i64 0 } -endif7924: - %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.5016, 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.from7925 -logic.from7925: - br i1 %t39, label %logic.rhs7926, label %logic.end7927 -logic.rhs7926: - %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.rend7928 -logic.rend7928: - br label %logic.end7927 -logic.end7927: - %t43 = phi i1 [ false, %logic.from7925 ], [ %t42, %logic.rend7928 ] - br i1 %t43, label %then7929, label %endif7931 -then7929: - ret { ptr, i64, i64 } { ptr @.str.5017, i64 8, i64 0 } -endif7931: - ret { ptr, i64, i64 } { ptr @.str.5018, 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.5019, 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 %then7932, label %endif7934 -then7932: - ret { ptr, i64, i64 } { ptr @.str.5020, i64 3, i64 0 } -endif7934: - %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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca i64, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a240 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a249 = alloca %S.ast.Type, align 16 - %a261 = alloca %S.gen.Plan, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a327 = alloca i64, align 16 - %a342 = alloca %S.ast.Type, align 16 - %a343 = alloca %S.ast.Type, align 16 - %a345 = alloca %S.ast.Type, align 16 - %a354 = alloca %S.gen.Abi, align 16 - %a355 = alloca %S.gen.Abi, align 16 - %a357 = alloca %S.gen.Abi, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca %S.gen.Val, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca %S.gen.Val, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a407 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca i64, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca %S.gen.Val, align 16 - %a699 = alloca %S.ast.Type, align 16 - %a700 = alloca %S.ast.Type, align 16 - %a702 = alloca %S.ast.Type, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca %S.gen.Val, align 16 - %a721 = alloca %S.gen.Val, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca %S.ast.Type, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca %S.ast.Type, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca %S.ast.Type, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca %S.ast.Type, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca %S.ast.Type, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = 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 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca i64, align 16 - %a900 = alloca i64, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a939 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a973 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a981 = alloca { ptr, i64, i64 }, align 16 - %a982 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a999 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = 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 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1033 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1039 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1042 = alloca { ptr, i64, i64 }, align 16 - %a1043 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1048 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1077 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca %S.ast.Type, align 16 - %a1087 = alloca %S.ast.Type, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca %S.ast.Type, align 16 - %a1107 = alloca %S.ast.Type, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca { ptr, i64, i64 }, align 16 - %a1126 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1142 = alloca %S.ast.Type, align 16 - %a1143 = alloca %S.ast.Type, align 16 - %a1148 = alloca { ptr, i64, i64 }, align 16 - %a1149 = alloca { ptr, i64, i64 }, align 16 - %a1154 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1161 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1174 = alloca { ptr, i64, i64 }, align 16 - %a1175 = alloca { ptr, i64, i64 }, align 16 - %a1176 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca %S.ast.Type, align 16 - %a1186 = alloca %S.ast.Type, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca %S.ast.Type, align 16 - %a1196 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.cimport.CFunc %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7935, label %ok7936 -panic7935: - call void @finch_panic(ptr @.str.5021, i64 4654, ptr @.str.5022) - unreachable -ok7936: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then7937, label %endif7939 -then7937: - 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.cond7940 -each.cond7940: - %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.body7941, label %each.end7943 -each.body7941: - %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.step7942 -each.step7942: - %t26 = load i64, ptr %a10 - %t27 = add i64 %t26, 1 - store i64 %t27, ptr %a10 - br label %each.cond7940 -each.end7943: - %t28 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then7944, label %endif7946 -then7944: - %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.5023, i64 3, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif7946 -endif7946: - %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.5024, 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.5025, i64 7, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t54 = load %S.ast.Type, ptr %t53 - %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.5026, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t66, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t66, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5027, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5028, i64 2, i64 0 }, ptr %a80 - call void @finch_str_join(ptr %a81, ptr %a8, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t78, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t78, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.5029, i64 5, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t93, { ptr, i64, i64 } { ptr @.str.5030, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - call void @finch.drop.arr_str(ptr %a8) - br label %endif7939 -endif7939: - %t95 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = icmp sgt i64 %t97, 0 - br i1 %t98, label %then7947, label %endif7949 -then7947: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } { ptr @.str.5031, i64 16, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5032, i64 35, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t113 = load { ptr, i64, i64 }, ptr %t112 - store { ptr, i64, i64 } %t111, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t111, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif7949 -endif7949: - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t120, i32 0, i32 1 - %t122 = load i64, ptr %t121 - store i64 %t122, ptr %a123 - %t124 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t125 = load i1, ptr %t124 - br i1 %t125, label %then7950, label %else7951 -then7950: - %t126 = load i64, ptr %a123 - %t127 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 - %t129 = load i64, ptr %t128 - %t130 = icmp slt i64 %t126, %t129 - br i1 %t130, label %then7953, label %endif7955 -then7953: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t134 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } { ptr @.str.5033, i64 1, i64 0 }, ptr %a136 - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a135 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5034, i64 17, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t138, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - %t144 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load i64, ptr %t145 - call void @finch_str_from_int(ptr %a147, i64 %t146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t143, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t143, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.5035, i64 22, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a161, i64 %t160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t159, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.fail(ptr %t131, %S.ast.Node %t132, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - br label %endif7955 -endif7955: - br label %endif7952 -else7951: - %t170 = load i64, ptr %a123 - %t171 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load i64, ptr %t172 - %t174 = icmp ne i64 %t170, %t173 - br i1 %t174, label %then7956, label %endif7958 -then7956: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - %t177 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } { ptr @.str.5036, i64 1, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5037, i64 8, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - call void @finch_str_from_int(ptr %a191, i64 %t190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t187, ptr %a194 - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t187, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t198, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.5038, i64 22, i64 0 }, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t198, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - %t204 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t203, ptr %a210 - call void @finch_str_drop(ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.fail(ptr %t175, %S.ast.Node %t176, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7958 -endif7958: - br label %endif7952 -endif7952: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = load %S.ast.Node, ptr %a2 - %t218 = call %S.ast.Type @finch.gen.resolve(ptr %t214, %S.ast.Type %t216, %S.ast.Node %t217) - store %S.ast.Type %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load %S.ast.Node, ptr %a2 - %t222 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = load %S.ast.Type, ptr %a219 - call void @finch.gen.checkByValue(ptr %t220, %S.ast.Node %t221, { ptr, i64, i64 } %t223, %S.ast.Type %t224, { ptr, i64, i64 } { ptr @.str.5039, i64 7, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - store i64 0, ptr %a227 - br label %each.cond7959 -each.cond7959: - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i32 0, i32 1 - %t229 = load i64, ptr %t228 - %t230 = load i64, ptr %a227 - %t231 = icmp slt i64 %t230, %t229 - br i1 %t231, label %each.body7960, label %each.end7962 -each.body7960: - %t232 = load ptr, ptr %t226 - %t233 = getelementptr inbounds %S.ast.Type, ptr %t232, i64 %t230 - %t234 = load %S.ast.Type, ptr %t233 - store %S.ast.Type %t234, ptr %a235 - %t236 = load ptr, ptr %a1 - %t237 = load %S.ast.Type, ptr %a235 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.ast.Type @finch.gen.resolve(ptr %t236, %S.ast.Type %t237, %S.ast.Node %t238) - store %S.ast.Type %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load %S.ast.Node, ptr %a2 - %t243 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - %t245 = load %S.ast.Type, ptr %a240 - call void @finch.gen.checkByValue(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } { ptr @.str.5040, i64 5, i64 0 }) - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a225, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %a240 - store %S.ast.Type %t247, ptr %a248 - call void @finch.copy.S_ast_Type(ptr %a249, ptr %a248) - %t250 = load %S.ast.Type, ptr %a249 - %t251 = load i64, ptr %t246 - %t252 = add i64 %t251, 1 - call void @finch_arr_reserve(ptr %a225, i64 %t252, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t253 = load ptr, ptr %a225 - %t254 = getelementptr inbounds %S.ast.Type, ptr %t253, i64 %t251 - store %S.ast.Type %t250, ptr %t254 - store i64 %t252, ptr %t246 - call void @finch.drop.S_ast_Type(ptr %a240) - br label %each.step7961 -each.step7961: - %t255 = load i64, ptr %a227 - %t256 = add i64 %t255, 1 - store i64 %t256, ptr %a227 - br label %each.cond7959 -each.end7962: - %t257 = load ptr, ptr %a1 - %t258 = load %S.ast.Type, ptr %a219 - %t259 = load { ptr, i64, i64 }, ptr %a225 - %t260 = call %S.gen.Plan @finch.gen.makePlan(ptr %t257, %S.ast.Type %t258, { ptr, i64, i64 } %t259) - store %S.gen.Plan %t260, ptr %a261 - store { ptr, i64, i64 } zeroinitializer, ptr %a262 - store { ptr, i64, i64 } zeroinitializer, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.5041, i64 0, i64 0 }, ptr %a264 - %t265 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t266 = load i1, ptr %t265 - br i1 %t266, label %then7963, label %endif7965 -then7963: - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load %S.ast.Type, ptr %a219 - %t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269) - %t271 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t267, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t271, ptr %a264 - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a219 - %t278 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.5042, i64 9, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.5043, i64 10, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load i64, ptr %t275 - %t290 = add i64 %t289, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t290, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t291 = load ptr, ptr %a262 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i64 %t289 - store { ptr, i64, i64 } %t288, ptr %t292 - store i64 %t290, ptr %t275 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t294 = load ptr, ptr %a1 - %t295 = load %S.ast.Type, ptr %a219 - %t296 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t294, %S.ast.Type %t295) - store { ptr, i64, i64 } { ptr @.str.5044, i64 9, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t301, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.5045, i64 11, i64 0 }, ptr %a304 - call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) - store { ptr, i64, i64 } %t301, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a302 - %t307 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t306, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t306, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load i64, ptr %t293 - %t314 = add i64 %t313, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t314, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t315 = load ptr, ptr %a263 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t315, i64 %t313 - store { ptr, i64, i64 } %t312, ptr %t316 - store i64 %t314, ptr %t293 - br label %endif7965 -endif7965: - store { ptr, i64, i64 } zeroinitializer, ptr %a317 - %t318 = load ptr, ptr %a1 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic7966, label %ok7967 -panic7966: - call void @finch_panic(ptr @.str.5046, i64 4693, ptr @.str.5047) - unreachable -ok7967: - %t320 = getelementptr inbounds %S.gen.Gen, ptr %t318, i32 0, i32 11 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i32 0, i32 1 - %t322 = load i64, ptr %t321 - store i64 %t322, ptr %a323 - %t324 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i32 0, i32 1 - %t326 = load i64, ptr %t325 - store i64 0, ptr %a327 - br label %for.cond7968 -for.cond7968: - %t328 = load i64, ptr %a327 - %t329 = icmp slt i64 %t328, %t326 - br i1 %t329, label %for.body7969, label %for.end7971 -for.body7969: - %t330 = load i64, ptr %a327 - %t331 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = icmp slt i64 %t330, %t333 - br i1 %t334, label %then7972, label %endif7974 -then7972: - %t335 = load i64, ptr %a327 - %t336 = load { ptr, i64, i64 }, ptr %a225 - %t337 = extractvalue { ptr, i64, i64 } %t336, 1 - %t338 = icmp uge i64 %t335, %t337 - br i1 %t338, label %range7975, label %inrange7976 -range7975: - call void @finch_panic_index(ptr @.str.5048, i64 4696, i64 %t335, i64 %t337) - unreachable -inrange7976: - %t339 = extractvalue { ptr, i64, i64 } %t336, 0 - %t340 = getelementptr inbounds %S.ast.Type, ptr %t339, i64 %t335 - %t341 = load %S.ast.Type, ptr %t340 - store %S.ast.Type %t341, ptr %a342 - call void @finch.copy.S_ast_Type(ptr %a343, ptr %a342) - %t344 = load %S.ast.Type, ptr %a343 - store %S.ast.Type %t344, ptr %a345 - %t346 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 1 - %t347 = load i64, ptr %a327 - %t348 = load { ptr, i64, i64 }, ptr %t346 - %t349 = extractvalue { ptr, i64, i64 } %t348, 1 - %t350 = icmp uge i64 %t347, %t349 - br i1 %t350, label %range7977, label %inrange7978 -range7977: - call void @finch_panic_index(ptr @.str.5049, i64 4697, i64 %t347, i64 %t349) - unreachable -inrange7978: - %t351 = extractvalue { ptr, i64, i64 } %t348, 0 - %t352 = getelementptr inbounds %S.gen.Abi, ptr %t351, i64 %t347 - %t353 = load %S.gen.Abi, ptr %t352 - store %S.gen.Abi %t353, ptr %a354 - call void @finch.copy.S_gen_Abi(ptr %a355, ptr %a354) - %t356 = load %S.gen.Abi, ptr %a355 - store %S.gen.Abi %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t361 = load i64, ptr %a327 - %t362 = load { ptr, i64, i64 }, ptr %t360 - %t363 = extractvalue { ptr, i64, i64 } %t362, 1 - %t364 = icmp uge i64 %t361, %t363 - br i1 %t364, label %range7979, label %inrange7980 -range7979: - call void @finch_panic_index(ptr @.str.5050, i64 4698, i64 %t361, i64 %t363) - unreachable -inrange7980: - %t365 = extractvalue { ptr, i64, i64 } %t362, 0 - %t366 = getelementptr inbounds %S.ast.Node, ptr %t365, i64 %t361 - %t367 = load %S.ast.Node, ptr %t366 - %t368 = load %S.ast.Type, ptr %a345 - %t369 = call %S.gen.Val @finch.gen.exprWant(ptr %t359, %S.ast.Node %t367, %S.ast.Type %t368) - %t370 = load %S.ast.Type, ptr %a345 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t372 = load i64, ptr %a327 - %t373 = load { ptr, i64, i64 }, ptr %t371 - %t374 = extractvalue { ptr, i64, i64 } %t373, 1 - %t375 = icmp uge i64 %t372, %t374 - br i1 %t375, label %range7981, label %inrange7982 -range7981: - call void @finch_panic_index(ptr @.str.5051, i64 4698, i64 %t372, i64 %t374) - unreachable -inrange7982: - %t376 = extractvalue { ptr, i64, i64 } %t373, 0 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i64 %t372 - %t378 = load %S.ast.Node, ptr %t377 - %t379 = load i64, ptr %a327 - %t380 = add i64 %t379, 1 - call void @finch_str_from_int(ptr %a381, i64 %t380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.5052, i64 9, i64 0 }, ptr %a384 - store { ptr, i64, i64 } %t382, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.5053, i64 4, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t392, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t392, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = call %S.gen.Val @finch.gen.coerce(ptr %t358, %S.gen.Val %t369, %S.ast.Type %t370, %S.ast.Node %t378, { ptr, i64, i64 } %t399) - store %S.gen.Val %t369, ptr %a401 - call void @finch.drop.S_gen_Val(ptr %a401) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store %S.gen.Val %t400, ptr %a403 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t405 = load %S.gen.Val, ptr %a403 - store %S.gen.Val %t405, ptr %a406 - call void @finch.copy.S_gen_Val(ptr %a407, ptr %a406) - %t408 = load %S.gen.Val, ptr %a407 - %t409 = load i64, ptr %t404 - %t410 = add i64 %t409, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t410, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t411 = load ptr, ptr %a317 - %t412 = getelementptr inbounds %S.gen.Val, ptr %t411, i64 %t409 - store %S.gen.Val %t408, ptr %t412 - store i64 %t410, ptr %t404 - %t413 = load ptr, ptr %a1 - %t414 = load %S.gen.Val, ptr %a403 - call void @finch.gen.hold(ptr %t413, %S.gen.Val %t414) - %t415 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5054, i64 6, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then7983, label %else7984 -then7983: - %t421 = load ptr, ptr %a1 - %t422 = load ptr, ptr %a1 - %t423 = load %S.ast.Type, ptr %a345 - %t424 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t422, %S.ast.Type %t423) - %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t421, { ptr, i64, i64 } %t424) - store { ptr, i64, i64 } %t424, ptr %a426 - call void @finch_str_drop(ptr %a426) - store { ptr, i64, i64 } %t425, ptr %a427 - %t428 = load ptr, ptr %a1 - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Type, ptr %a345 - %t431 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t430) - %t432 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = load { ptr, i64, i64 }, ptr %a427 - call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } %t431, { ptr, i64, i64 } %t433, { ptr, i64, i64 } %t434) - store { ptr, i64, i64 } %t431, ptr %a435 - call void @finch_str_drop(ptr %a435) - %t436 = load ptr, ptr %a1 - %t437 = load %S.ast.Type, ptr %a345 - %t438 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t437) - store { ptr, i64, i64 } { ptr @.str.5055, i64 10, i64 0 }, ptr %a440 - store { ptr, i64, i64 } %t438, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.5056, i64 8, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 3 - %t450 = load i64, ptr %t449 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } %t448, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t448, ptr %a456 - call void @finch_str_drop(ptr %a456) - store { ptr, i64, i64 } %t452, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t458, ptr %a459 - %t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t461 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_copy(ptr %a463, ptr %a462) - %t464 = load { ptr, i64, i64 }, ptr %a463 - %t465 = load i64, ptr %t460 - %t466 = add i64 %t465, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t466, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t467 = load ptr, ptr %a262 - %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t467, i64 %t465 - store { ptr, i64, i64 } %t464, ptr %t468 - store i64 %t466, ptr %t460 - %t469 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t470 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t470, ptr %a472 - store { ptr, i64, i64 } { ptr @.str.5057, i64 1, i64 0 }, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - %t475 = load { ptr, i64, i64 }, ptr %a427 - store { ptr, i64, i64 } %t474, ptr %a477 - store { ptr, i64, i64 } %t475, ptr %a478 - call void @finch_str_concat(ptr %a476, ptr %a477, ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a476 - %t481 = load i64, ptr %t469 - %t482 = add i64 %t481, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t482, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t483 = load ptr, ptr %a263 - %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t481 - store { ptr, i64, i64 } %t480, ptr %t484 - store i64 %t482, ptr %t469 - call void @finch_str_drop(ptr %a459) - call void @finch_str_drop(ptr %a427) - br label %endif7985 -else7984: - %t485 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5058, i64 8, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then7986, label %else7987 -then7986: - %t491 = load ptr, ptr %a1 - %t492 = load ptr, ptr %a1 - %t493 = load %S.ast.Type, ptr %a345 - %t494 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t492, %S.ast.Type %t493) - %t495 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t491, { ptr, i64, i64 } %t494) - store { ptr, i64, i64 } %t494, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t495, ptr %a497 - %t498 = load ptr, ptr %a1 - %t499 = load ptr, ptr %a1 - %t500 = load %S.ast.Type, ptr %a345 - %t501 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t499, %S.ast.Type %t500) - %t502 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t503 = load { ptr, i64, i64 }, ptr %t502 - %t504 = load { ptr, i64, i64 }, ptr %a497 - call void @finch.gen.store(ptr %t498, { ptr, i64, i64 } %t501, { ptr, i64, i64 } %t503, { ptr, i64, i64 } %t504) - store { ptr, i64, i64 } %t501, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t507 = load i64, ptr %t506 - %t508 = add i64 %t507, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t508, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t509 = load ptr, ptr %a262 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i64 %t507 - store { ptr, i64, i64 } { ptr @.str.5059, i64 3, i64 0 }, ptr %t510 - store i64 %t508, ptr %t506 - %t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t512 = load { ptr, i64, i64 }, ptr %a497 - store { ptr, i64, i64 } { ptr @.str.5060, i64 4, i64 0 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a515 - call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a513 - %t517 = load i64, ptr %t511 - %t518 = add i64 %t517, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t518, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t519 = load ptr, ptr %a263 - %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t517 - store { ptr, i64, i64 } %t516, ptr %t520 - store i64 %t518, ptr %t511 - call void @finch_str_drop(ptr %a497) - br label %endif7988 -else7987: - %t521 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5061, i64 6, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp ne i32 %t525, 0 - br i1 %t526, label %then7989, label %else7990 -then7989: - %t527 = load ptr, ptr %a1 - %t528 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t527, { ptr, i64, i64 } { ptr @.str.5062, i64 9, i64 0 }) - store { ptr, i64, i64 } %t528, ptr %a529 - %t530 = load ptr, ptr %a1 - %t531 = load ptr, ptr %a1 - %t532 = load %S.ast.Type, ptr %a345 - %t533 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t531, %S.ast.Type %t532) - %t534 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.store(ptr %t530, { ptr, i64, i64 } %t533, { ptr, i64, i64 } %t535, { ptr, i64, i64 } %t536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t539 = getelementptr inbounds { ptr, i64, i64 }, ptr %t538, i32 0, i32 1 - %t540 = load i64, ptr %t539 - store i64 0, ptr %a541 - br label %for.cond7992 -for.cond7992: - %t542 = load i64, ptr %a541 - %t543 = icmp slt i64 %t542, %t540 - br i1 %t543, label %for.body7993, label %for.end7995 -for.body7993: - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t546 = load i64, ptr %a541 - %t547 = load { ptr, i64, i64 }, ptr %t545 - %t548 = extractvalue { ptr, i64, i64 } %t547, 1 - %t549 = icmp uge i64 %t546, %t548 - br i1 %t549, label %range7996, label %inrange7997 -range7996: - call void @finch_panic_index(ptr @.str.5063, i64 4716, i64 %t546, i64 %t548) - unreachable -inrange7997: - %t550 = extractvalue { ptr, i64, i64 } %t547, 0 - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %t550, i64 %t546 - %t552 = load { ptr, i64, i64 }, ptr %t551 - %t553 = load ptr, ptr %a1 - %t554 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } { ptr @.str.5064, i64 31, i64 0 }, ptr %a556 - store { ptr, i64, i64 } %t554, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - %t558 = load { ptr, i64, i64 }, ptr %a555 - store { ptr, i64, i64 } %t558, ptr %a560 - store { ptr, i64, i64 } { ptr @.str.5065, i64 6, i64 0 }, ptr %a561 - call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561) - store { ptr, i64, i64 } %t558, ptr %a562 - call void @finch_str_drop(ptr %a562) - %t563 = load { ptr, i64, i64 }, ptr %a559 - %t564 = load i64, ptr %a541 - %t565 = mul i64 8, %t564 - call void @finch_str_from_int(ptr %a566, i64 %t565) - %t567 = load { ptr, i64, i64 }, ptr %a566 - store { ptr, i64, i64 } %t563, ptr %a569 - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) - store { ptr, i64, i64 } %t563, ptr %a571 - call void @finch_str_drop(ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a568 - %t574 = call { ptr, i64, i64 } @finch.gen.op(ptr %t553, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t573, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = call { ptr, i64, i64 } @finch.gen.load(ptr %t544, { ptr, i64, i64 } %t552, { ptr, i64, i64 } %t574) - store { ptr, i64, i64 } %t574, ptr %a577 - call void @finch_str_drop(ptr %a577) - store { ptr, i64, i64 } %t576, ptr %a578 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t580 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t581 = load i64, ptr %a541 - %t582 = load { ptr, i64, i64 }, ptr %t580 - %t583 = extractvalue { ptr, i64, i64 } %t582, 1 - %t584 = icmp uge i64 %t581, %t583 - br i1 %t584, label %range7998, label %inrange7999 -range7998: - call void @finch_panic_index(ptr @.str.5066, i64 4717, i64 %t581, i64 %t583) - unreachable -inrange7999: - %t585 = extractvalue { ptr, i64, i64 } %t582, 0 - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i64 %t581 - %t587 = load { ptr, i64, i64 }, ptr %t586 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_copy(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load i64, ptr %t579 - %t592 = add i64 %t591, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t592, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t593 = load ptr, ptr %a262 - %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %t593, i64 %t591 - store { ptr, i64, i64 } %t590, ptr %t594 - store i64 %t592, ptr %t579 - %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t596 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t597 = load i64, ptr %a541 - %t598 = load { ptr, i64, i64 }, ptr %t596 - %t599 = extractvalue { ptr, i64, i64 } %t598, 1 - %t600 = icmp uge i64 %t597, %t599 - br i1 %t600, label %range8000, label %inrange8001 -range8000: - call void @finch_panic_index(ptr @.str.5067, i64 4718, i64 %t597, i64 %t599) - unreachable -inrange8001: - %t601 = extractvalue { ptr, i64, i64 } %t598, 0 - %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i64 %t597 - %t603 = load { ptr, i64, i64 }, ptr %t602 - store { ptr, i64, i64 } %t603, ptr %a605 - store { ptr, i64, i64 } { ptr @.str.5068, i64 1, i64 0 }, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - %t607 = load { ptr, i64, i64 }, ptr %a604 - %t608 = load { ptr, i64, i64 }, ptr %a578 - store { ptr, i64, i64 } %t607, ptr %a610 - store { ptr, i64, i64 } %t608, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t607, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = load i64, ptr %t595 - %t615 = add i64 %t614, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t615, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t616 = load ptr, ptr %a263 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i64 %t614 - store { ptr, i64, i64 } %t613, ptr %t617 - store i64 %t615, ptr %t595 - call void @finch_str_drop(ptr %a578) - br label %for.step7994 -for.step7994: - %t618 = load i64, ptr %a541 - %t619 = add i64 %t618, 1 - store i64 %t619, ptr %a541 - br label %for.cond7992 -for.end7995: - call void @finch_str_drop(ptr %a529) - br label %endif7991 -else7990: - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t621 = load ptr, ptr %a1 - %t622 = load %S.ast.Type, ptr %a345 - %t623 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t621, %S.ast.Type %t622) - %t624 = load ptr, ptr %a1 - %t625 = load %S.ast.Type, ptr %a345 - %t626 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t624, %S.ast.Type %t625) - store { ptr, i64, i64 } %t623, ptr %a628 - store { ptr, i64, i64 } %t626, ptr %a629 - call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) - store { ptr, i64, i64 } %t623, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t626, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a627 - %t633 = load i64, ptr %t620 - %t634 = add i64 %t633, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t634, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t635 = load ptr, ptr %a262 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t633 - store { ptr, i64, i64 } %t632, ptr %t636 - store i64 %t634, ptr %t620 - %t637 = getelementptr inbounds %S.ast.Type, ptr %a345, i32 0, i32 0 - %t638 = load { ptr, i64, i64 }, ptr %t637 - store { ptr, i64, i64 } %t638, ptr %a639 - store { ptr, i64, i64 } { ptr @.str.5069, i64 3, i64 0 }, ptr %a640 - %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) - %t642 = icmp ne i32 %t641, 0 - br i1 %t642, label %then8002, label %else8003 -then8002: - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t644 = load ptr, ptr %a1 - %t645 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t646 = load { ptr, i64, i64 }, ptr %t645 - %t647 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t644, { ptr, i64, i64 } %t646) - store { ptr, i64, i64 } { ptr @.str.5070, i64 4, i64 0 }, ptr %a649 - store { ptr, i64, i64 } %t647, ptr %a650 - call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) - store { ptr, i64, i64 } %t647, ptr %a651 - call void @finch_str_drop(ptr %a651) - %t652 = load { ptr, i64, i64 }, ptr %a648 - %t653 = load i64, ptr %t643 - %t654 = add i64 %t653, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t654, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t655 = load ptr, ptr %a263 - %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i64 %t653 - store { ptr, i64, i64 } %t652, ptr %t656 - store i64 %t654, ptr %t643 - br label %endif8004 -else8003: - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t658 = load ptr, ptr %a1 - %t659 = load %S.ast.Type, ptr %a345 - %t660 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t658, %S.ast.Type %t659) - %t661 = load ptr, ptr %a1 - %t662 = load %S.ast.Type, ptr %a345 - %t663 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t661, %S.ast.Type %t662) - store { ptr, i64, i64 } %t660, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t660, ptr %a667 - call void @finch_str_drop(ptr %a667) - store { ptr, i64, i64 } %t663, ptr %a668 - call void @finch_str_drop(ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.5071, i64 1, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t676 = load { ptr, i64, i64 }, ptr %t675 - store { ptr, i64, i64 } %t674, ptr %a678 - store { ptr, i64, i64 } %t676, ptr %a679 - call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) - store { ptr, i64, i64 } %t674, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load { ptr, i64, i64 }, ptr %a677 - %t682 = load i64, ptr %t657 - %t683 = add i64 %t682, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t683, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t684 = load ptr, ptr %a263 - %t685 = getelementptr inbounds { ptr, i64, i64 }, ptr %t684, i64 %t682 - store { ptr, i64, i64 } %t681, ptr %t685 - store i64 %t683, ptr %t657 - br label %endif8004 -endif8004: - br label %endif7991 -endif7991: - br label %endif7988 -endif7988: - br label %endif7985 -endif7985: - call void @finch.drop.S_gen_Val(ptr %a403) - call void @finch.drop.S_gen_Abi(ptr %a357) - call void @finch.drop.S_ast_Type(ptr %a345) - br label %for.step7970 -endif7974: - %t686 = load ptr, ptr %a1 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t688 = load i64, ptr %a327 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range8005, label %inrange8006 -range8005: - call void @finch_panic_index(ptr @.str.5072, i64 4731, i64 %t688, i64 %t690) - unreachable -inrange8006: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.ast.Node, ptr %t692, i64 %t688 - %t694 = load %S.ast.Node, ptr %t693 - %t695 = call %S.gen.Val @finch.gen.expr(ptr %t686, %S.ast.Node %t694) - store %S.gen.Val %t695, ptr %a696 - %t697 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 1 - %t698 = load %S.ast.Type, ptr %t697 - store %S.ast.Type %t698, ptr %a699 - call void @finch.copy.S_ast_Type(ptr %a700, ptr %a699) - %t701 = load %S.ast.Type, ptr %a700 - store %S.ast.Type %t701, ptr %a702 - %t703 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t704 = load { ptr, i64, i64 }, ptr %t703 - store { ptr, i64, i64 } %t704, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5073, i64 4, i64 0 }, ptr %a706 - %t707 = call i32 @finch_str_eq(ptr %a705, ptr %a706) - %t708 = icmp ne i32 %t707, 0 - br i1 %t708, label %then8007, label %endif8009 -then8007: - %t709 = load ptr, ptr %a1 - %t710 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t711 = load i64, ptr %a327 - %t712 = load { ptr, i64, i64 }, ptr %t710 - %t713 = extractvalue { ptr, i64, i64 } %t712, 1 - %t714 = icmp uge i64 %t711, %t713 - br i1 %t714, label %range8010, label %inrange8011 -range8010: - call void @finch_panic_index(ptr @.str.5074, i64 4734, i64 %t711, i64 %t713) - unreachable -inrange8011: - %t715 = extractvalue { ptr, i64, i64 } %t712, 0 - %t716 = getelementptr inbounds %S.ast.Node, ptr %t715, i64 %t711 - %t717 = load %S.ast.Node, ptr %t716 - call void @finch.gen.fail(ptr %t709, %S.ast.Node %t717, { ptr, i64, i64 } { ptr @.str.5075, i64 23, i64 0 }) - br label %endif8009 -endif8009: - %t718 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t719 = load %S.gen.Val, ptr %a696 - store %S.gen.Val %t719, ptr %a720 - call void @finch.copy.S_gen_Val(ptr %a721, ptr %a720) - %t722 = load %S.gen.Val, ptr %a721 - %t723 = load i64, ptr %t718 - %t724 = add i64 %t723, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t724, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t725 = load ptr, ptr %a317 - %t726 = getelementptr inbounds %S.gen.Val, ptr %t725, i64 %t723 - store %S.gen.Val %t722, ptr %t726 - store i64 %t724, ptr %t718 - %t727 = load ptr, ptr %a1 - %t728 = load %S.gen.Val, ptr %a696 - call void @finch.gen.hold(ptr %t727, %S.gen.Val %t728) - %t729 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t730 = load { ptr, i64, i64 }, ptr %t729 - store { ptr, i64, i64 } %t730, ptr %a731 - store { ptr, i64, i64 } { ptr @.str.5076, i64 6, i64 0 }, ptr %a732 - %t733 = call i32 @finch_str_eq(ptr %a731, ptr %a732) - %t734 = icmp ne i32 %t733, 0 - br label %logic.from8012 -logic.from8012: - br i1 %t734, label %logic.end8014, label %logic.rhs8013 -logic.rhs8013: - %t735 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t736 = load { ptr, i64, i64 }, ptr %t735 - store { ptr, i64, i64 } %t736, ptr %a737 - store { ptr, i64, i64 } { ptr @.str.5077, i64 5, i64 0 }, ptr %a738 - %t739 = call i32 @finch_str_eq(ptr %a737, ptr %a738) - %t740 = icmp ne i32 %t739, 0 - br label %logic.rend8015 -logic.rend8015: - br label %logic.end8014 -logic.end8014: - %t741 = phi i1 [ true, %logic.from8012 ], [ %t740, %logic.rend8015 ] - br i1 %t741, label %then8016, label %endif8018 -then8016: - %t742 = load ptr, ptr %a1 - %t743 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t744 = load i64, ptr %a327 - %t745 = load { ptr, i64, i64 }, ptr %t743 - %t746 = extractvalue { ptr, i64, i64 } %t745, 1 - %t747 = icmp uge i64 %t744, %t746 - br i1 %t747, label %range8019, label %inrange8020 -range8019: - call void @finch_panic_index(ptr @.str.5078, i64 4739, i64 %t744, i64 %t746) - unreachable -inrange8020: - %t748 = extractvalue { ptr, i64, i64 } %t745, 0 - %t749 = getelementptr inbounds %S.ast.Node, ptr %t748, i64 %t744 - %t750 = load %S.ast.Node, ptr %t749 - call void @finch.gen.fail(ptr %t742, %S.ast.Node %t750, { ptr, i64, i64 } { ptr @.str.5079, i64 68, i64 0 }) - br label %endif8018 -endif8018: - %t751 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t755, ptr %a756 - %t757 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t758 = load { ptr, i64, i64 }, ptr %t757 - store { ptr, i64, i64 } %t758, ptr %a759 - store { ptr, i64, i64 } { ptr @.str.5080, i64 3, i64 0 }, ptr %a760 - %t761 = call i32 @finch_str_eq(ptr %a759, ptr %a760) - %t762 = icmp ne i32 %t761, 0 - br i1 %t762, label %then8021, label %else8022 -then8021: - %t763 = load ptr, ptr %a1 - %t764 = load { ptr, i64, i64 }, ptr %a756 - %t765 = load %S.ast.Type, ptr %a702 - %t766 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5081, i64 5, i64 0 }) - %t767 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t763, { ptr, i64, i64 } %t764, %S.ast.Type %t765, %S.ast.Type %t766) - store %S.ast.Type %t766, ptr %a768 - call void @finch.drop.S_ast_Type(ptr %a768) - %t769 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t767, ptr %a756 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch_str_drop(ptr %a770) - %t771 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5082, i64 5, i64 0 }) - %t772 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t771, ptr %a702 - store %S.ast.Type %t772, ptr %a773 - call void @finch.drop.S_ast_Type(ptr %a773) - br label %endif8023 -else8022: - %t774 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t775 = load { ptr, i64, i64 }, ptr %t774 - store { ptr, i64, i64 } %t775, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.5083, i64 3, i64 0 }, ptr %a777 - %t778 = call i32 @finch_str_eq(ptr %a776, ptr %a777) - %t779 = icmp ne i32 %t778, 0 - br i1 %t779, label %then8024, label %else8025 -then8024: - %t780 = load ptr, ptr %a1 - %t781 = load { ptr, i64, i64 }, ptr %a756 - %t782 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t780, { ptr, i64, i64 } %t781) - %t783 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t782, ptr %a756 - store { ptr, i64, i64 } %t783, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5084, i64 3, i64 0 }) - %t786 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t785, ptr %a702 - store %S.ast.Type %t786, ptr %a787 - call void @finch.drop.S_ast_Type(ptr %a787) - br label %endif8026 -else8025: - %t788 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t789 = load { ptr, i64, i64 }, ptr %t788 - store { ptr, i64, i64 } %t789, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.5085, i64 4, i64 0 }, ptr %a791 - %t792 = call i32 @finch_str_eq(ptr %a790, ptr %a791) - %t793 = icmp ne i32 %t792, 0 - br i1 %t793, label %then8027, label %else8028 -then8027: - %t794 = load ptr, ptr %a1 - %t795 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t796 = load { ptr, i64, i64 }, ptr %t795 - store { ptr, i64, i64 } { ptr @.str.5086, i64 8, i64 0 }, ptr %a798 - store { ptr, i64, i64 } %t796, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - %t800 = load { ptr, i64, i64 }, ptr %a797 - store { ptr, i64, i64 } %t800, ptr %a802 - store { ptr, i64, i64 } { ptr @.str.5087, i64 7, i64 0 }, ptr %a803 - call void @finch_str_concat(ptr %a801, ptr %a802, ptr %a803) - store { ptr, i64, i64 } %t800, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = load { ptr, i64, i64 }, ptr %a801 - %t806 = call { ptr, i64, i64 } @finch.gen.op(ptr %t794, { ptr, i64, i64 } %t805) - store { ptr, i64, i64 } %t805, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t806, ptr %a756 - store { ptr, i64, i64 } %t808, ptr %a809 - call void @finch_str_drop(ptr %a809) - %t810 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5088, i64 3, i64 0 }) - %t811 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t810, ptr %a702 - store %S.ast.Type %t811, ptr %a812 - call void @finch.drop.S_ast_Type(ptr %a812) - br label %endif8029 -else8028: - %t813 = load %S.ast.Type, ptr %a702 - %t814 = call i1 @finch.gen.isInt(%S.ast.Type %t813) - br label %logic.from8030 -logic.from8030: - br i1 %t814, label %logic.end8032, label %logic.rhs8031 -logic.rhs8031: - %t815 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } %t816, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.5089, i64 4, i64 0 }, ptr %a818 - %t819 = call i32 @finch_str_eq(ptr %a817, ptr %a818) - %t820 = icmp ne i32 %t819, 0 - br label %logic.rend8033 -logic.rend8033: - br label %logic.end8032 -logic.end8032: - %t821 = phi i1 [ true, %logic.from8030 ], [ %t820, %logic.rend8033 ] - br label %logic.from8034 -logic.from8034: - br i1 %t821, label %logic.rhs8035, label %logic.end8036 -logic.rhs8035: - %t822 = load %S.ast.Type, ptr %a702 - %t823 = call i64 @finch.gen.bitsOf(%S.ast.Type %t822) - %t824 = icmp slt i64 %t823, 32 - br label %logic.rend8037 -logic.rend8037: - br label %logic.end8036 -logic.end8036: - %t825 = phi i1 [ false, %logic.from8034 ], [ %t824, %logic.rend8037 ] - br i1 %t825, label %then8038, label %endif8040 -then8038: - %t826 = load ptr, ptr %a1 - %t827 = load { ptr, i64, i64 }, ptr %a756 - %t828 = load %S.ast.Type, ptr %a702 - %t829 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5090, i64 3, i64 0 }) - %t830 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t826, { ptr, i64, i64 } %t827, %S.ast.Type %t828, %S.ast.Type %t829) - store %S.ast.Type %t829, ptr %a831 - call void @finch.drop.S_ast_Type(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t830, ptr %a756 - store { ptr, i64, i64 } %t832, ptr %a833 - call void @finch_str_drop(ptr %a833) - %t834 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5091, i64 3, i64 0 }) - %t835 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t834, ptr %a702 - store %S.ast.Type %t835, ptr %a836 - call void @finch.drop.S_ast_Type(ptr %a836) - br label %endif8040 -endif8040: - br label %endif8029 -endif8029: - br label %endif8026 -endif8026: - br label %endif8023 -endif8023: - %t837 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t838 = load ptr, ptr %a1 - %t839 = load %S.ast.Type, ptr %a702 - %t840 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t838, %S.ast.Type %t839) - store { ptr, i64, i64 } %t840, ptr %a842 - store { ptr, i64, i64 } { ptr @.str.5092, i64 1, i64 0 }, ptr %a843 - call void @finch_str_concat(ptr %a841, ptr %a842, ptr %a843) - store { ptr, i64, i64 } %t840, ptr %a844 - call void @finch_str_drop(ptr %a844) - %t845 = load { ptr, i64, i64 }, ptr %a841 - %t846 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t845, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - store { ptr, i64, i64 } %t845, ptr %a850 - call void @finch_str_drop(ptr %a850) - %t851 = load { ptr, i64, i64 }, ptr %a847 - %t852 = load i64, ptr %t837 - %t853 = add i64 %t852, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t853, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t854 = load ptr, ptr %a263 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i64 %t852 - store { ptr, i64, i64 } %t851, ptr %t855 - store i64 %t853, ptr %t837 - call void @finch_str_drop(ptr %a756) - call void @finch.drop.S_ast_Type(ptr %a702) - call void @finch.drop.S_gen_Val(ptr %a696) - br label %for.step7970 -for.step7970: - %t856 = load i64, ptr %a327 - %t857 = add i64 %t856, 1 - store i64 %t857, ptr %a327 - br label %for.cond7968 -for.end7971: - %t858 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 2 - %t859 = load { ptr, i64, i64 }, ptr %t858 - store { ptr, i64, i64 } %t859, ptr %a860 - call void @finch_str_copy(ptr %a861, ptr %a860) - %t862 = load { ptr, i64, i64 }, ptr %a861 - store { ptr, i64, i64 } %t862, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5093, i64 0, i64 0 }, ptr %a864 - %t865 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t866 = getelementptr inbounds %S.gen.Abi, ptr %t865, i32 0, i32 0 - %t867 = load { ptr, i64, i64 }, ptr %t866 - store { ptr, i64, i64 } %t867, ptr %a868 - store { ptr, i64, i64 } { ptr @.str.5094, i64 6, i64 0 }, ptr %a869 - %t870 = call i32 @finch_str_eq(ptr %a868, ptr %a869) - %t871 = icmp ne i32 %t870, 0 - br i1 %t871, label %then8041, label %endif8043 -then8041: - %t872 = load ptr, ptr %a1 - %t873 = load %S.ast.Type, ptr %a219 - %t874 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t872, %S.ast.Type %t873) - %t875 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } %t874, ptr %a864 - store { ptr, i64, i64 } %t875, ptr %a876 - call void @finch_str_drop(ptr %a876) - br label %endif8043 -endif8043: - store { ptr, i64, i64 } { ptr @.str.5095, i64 0, i64 0 }, ptr %a877 - %t878 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t879 = load i1, ptr %t878 - br i1 %t879, label %then8044, label %endif8046 -then8044: - %t880 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5096, i64 5, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t883 = load i64, ptr %t882 - %t884 = icmp eq i64 %t883, 0 - br i1 %t884, label %then8047, label %endif8049 -then8047: - %t885 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5097, i64 3, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t885, ptr %a886 - call void @finch_str_drop(ptr %a886) - br label %endif8049 -endif8049: - br label %endif8046 -endif8046: - %t887 = load ptr, ptr %a1 - %t888 = icmp eq ptr %t887, null - br i1 %t888, label %panic8050, label %ok8051 -panic8050: - call void @finch_panic(ptr @.str.5098, i64 4770, ptr @.str.5099) - unreachable -ok8051: - %t889 = getelementptr inbounds %S.gen.Gen, ptr %t887, i32 0, i32 40 - %t890 = getelementptr inbounds { ptr, i64, i64 }, ptr %t889, i32 0, i32 1 - %t891 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t892 = load { ptr, i64, i64 }, ptr %t891 - store { ptr, i64, i64 } { ptr @.str.5100, i64 2, i64 0 }, ptr %a894 - store { ptr, i64, i64 } %t892, ptr %a895 - call void @finch_str_concat(ptr %a893, ptr %a894, ptr %a895) - %t896 = load { ptr, i64, i64 }, ptr %a893 - store i64 -1, ptr %a897 - %t898 = load i64, ptr %t890 - %t899 = load ptr, ptr %t889 - store i64 0, ptr %a900 - br label %find.cond8052 -find.cond8052: - %t901 = load i64, ptr %a900 - %t902 = icmp slt i64 %t901, %t898 - br i1 %t902, label %find.body8053, label %find.end8056 -find.body8053: - %t903 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 %t901 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t904, ptr %a905 - store { ptr, i64, i64 } %t896, ptr %a906 - %t907 = call i32 @finch_str_eq(ptr %a905, ptr %a906) - %t908 = icmp ne i32 %t907, 0 - br i1 %t908, label %find.hit8054, label %find.next8055 -find.hit8054: - store i64 %t901, ptr %a897 - br label %find.end8056 -find.next8055: - %t909 = add i64 %t901, 1 - store i64 %t909, ptr %a900 - br label %find.cond8052 -find.end8056: - store { ptr, i64, i64 } %t896, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load i64, ptr %a897 - %t912 = icmp sge i64 %t911, 0 - %t913 = xor i1 %t912, true - br i1 %t913, label %then8057, label %endif8059 -then8057: - %t914 = load ptr, ptr %a1 - %t915 = icmp eq ptr %t914, null - br i1 %t915, label %panic8060, label %ok8061 -panic8060: - call void @finch_panic(ptr @.str.5101, i64 4771, ptr @.str.5102) - unreachable -ok8061: - %t916 = getelementptr inbounds %S.gen.Gen, ptr %t914, i32 0, i32 40 - %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %t916, i32 0, i32 1 - %t918 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - store { ptr, i64, i64 } { ptr @.str.5103, i64 2, i64 0 }, ptr %a921 - store { ptr, i64, i64 } %t919, ptr %a922 - call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922) - %t923 = load { ptr, i64, i64 }, ptr %a920 - %t924 = load i64, ptr %t917 - %t925 = add i64 %t924, 1 - call void @finch_arr_reserve(ptr %t916, i64 %t925, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t926 = load ptr, ptr %t916 - %t927 = getelementptr inbounds { ptr, i64, i64 }, ptr %t926, i64 %t924 - store { ptr, i64, i64 } %t923, ptr %t927 - store i64 %t925, ptr %t917 - %t928 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t929 = load { ptr, i64, i64 }, ptr %t928 - %t930 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t929) - %t931 = xor i1 %t930, true - br i1 %t931, label %then8062, label %endif8064 -then8062: - %t932 = load ptr, ptr %a1 - %t933 = icmp eq ptr %t932, null - br i1 %t933, label %panic8065, label %ok8066 -panic8065: - call void @finch_panic(ptr @.str.5104, i64 4773, ptr @.str.5105) - unreachable -ok8066: - %t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 2 - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i32 0, i32 1 - %t936 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5106, i64 7, i64 0 }, ptr %a938 - store { ptr, i64, i64 } %t936, ptr %a939 - call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) - %t940 = load { ptr, i64, i64 }, ptr %a937 - store { ptr, i64, i64 } %t940, ptr %a942 - store { ptr, i64, i64 } { ptr @.str.5107, i64 1, i64 0 }, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - store { ptr, i64, i64 } %t940, ptr %a944 - call void @finch_str_drop(ptr %a944) - %t945 = load { ptr, i64, i64 }, ptr %a941 - %t946 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t945, ptr %a948 - store { ptr, i64, i64 } %t946, ptr %a949 - call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) - store { ptr, i64, i64 } %t945, ptr %a950 - call void @finch_str_drop(ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a947 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.5108, i64 2, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.5109, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - %t969 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5110, i64 2, i64 0 }, ptr %a970 - call void @finch_str_join(ptr %a971, ptr %a262, ptr %a970) - %t972 = load { ptr, i64, i64 }, ptr %a971 - store { ptr, i64, i64 } %t968, ptr %a974 - store { ptr, i64, i64 } %t972, ptr %a975 - call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) - store { ptr, i64, i64 } %t968, ptr %a976 - call void @finch_str_drop(ptr %a976) - store { ptr, i64, i64 } %t972, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a973 - %t979 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t978, ptr %a981 - store { ptr, i64, i64 } %t979, ptr %a982 - call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) - store { ptr, i64, i64 } %t978, ptr %a983 - call void @finch_str_drop(ptr %a983) - %t984 = load { ptr, i64, i64 }, ptr %a980 - store { ptr, i64, i64 } %t984, ptr %a986 - store { ptr, i64, i64 } { ptr @.str.5111, i64 1, i64 0 }, ptr %a987 - call void @finch_str_concat(ptr %a985, ptr %a986, ptr %a987) - store { ptr, i64, i64 } %t984, ptr %a988 - call void @finch_str_drop(ptr %a988) - %t989 = load { ptr, i64, i64 }, ptr %a985 - %t990 = load i64, ptr %t935 - %t991 = add i64 %t990, 1 - call void @finch_arr_reserve(ptr %t934, i64 %t991, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t992 = load ptr, ptr %t934 - %t993 = getelementptr inbounds { ptr, i64, i64 }, ptr %t992, i64 %t990 - store { ptr, i64, i64 } %t989, ptr %t993 - store i64 %t991, ptr %t935 - br label %endif8064 -endif8064: - br label %endif8059 -endif8059: - store { ptr, i64, i64 } { ptr @.str.5112, i64 0, i64 0 }, ptr %a994 - %t995 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t996 = load i1, ptr %t995 - br i1 %t996, label %then8067, label %endif8069 -then8067: - %t997 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5114, i64 2, i64 0 }, ptr %a998 - call void @finch_str_join(ptr %a999, ptr %a262, ptr %a998) - %t1000 = load { ptr, i64, i64 }, ptr %a999 - store { ptr, i64, i64 } { ptr @.str.5113, i64 2, i64 0 }, ptr %a1002 - store { ptr, i64, i64 } %t1000, ptr %a1003 - call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) - store { ptr, i64, i64 } %t1000, ptr %a1004 - call void @finch_str_drop(ptr %a1004) - %t1005 = load { ptr, i64, i64 }, ptr %a1001 - %t1006 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t1005, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - store { ptr, i64, i64 } %t1005, ptr %a1010 - call void @finch_str_drop(ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5115, i64 1, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1016, ptr %a994 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_drop(ptr %a1018) - br label %endif8069 -endif8069: - %t1019 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5116, i64 4, i64 0 }, ptr %a1021 - store { ptr, i64, i64 } %t1019, ptr %a1022 - call void @finch_str_concat(ptr %a1020, ptr %a1021, ptr %a1022) - %t1023 = load { ptr, i64, i64 }, ptr %a1020 - store { ptr, i64, i64 } %t1023, ptr %a1025 - store { ptr, i64, i64 } { ptr @.str.5117, i64 1, i64 0 }, ptr %a1026 - call void @finch_str_concat(ptr %a1024, ptr %a1025, ptr %a1026) - store { ptr, i64, i64 } %t1023, ptr %a1027 - call void @finch_str_drop(ptr %a1027) - %t1028 = load { ptr, i64, i64 }, ptr %a1024 - %t1029 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t1028, ptr %a1031 - store { ptr, i64, i64 } %t1029, ptr %a1032 - call void @finch_str_concat(ptr %a1030, ptr %a1031, ptr %a1032) - store { ptr, i64, i64 } %t1028, ptr %a1033 - call void @finch_str_drop(ptr %a1033) - %t1034 = load { ptr, i64, i64 }, ptr %a1030 - %t1035 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1035, ptr %a1038 - call void @finch_str_concat(ptr %a1036, ptr %a1037, ptr %a1038) - store { ptr, i64, i64 } %t1034, ptr %a1039 - call void @finch_str_drop(ptr %a1039) - %t1040 = load { ptr, i64, i64 }, ptr %a1036 - store { ptr, i64, i64 } %t1040, ptr %a1042 - store { ptr, i64, i64 } { ptr @.str.5118, i64 2, i64 0 }, ptr %a1043 - call void @finch_str_concat(ptr %a1041, ptr %a1042, ptr %a1043) - store { ptr, i64, i64 } %t1040, ptr %a1044 - call void @finch_str_drop(ptr %a1044) - %t1045 = load { ptr, i64, i64 }, ptr %a1041 - %t1046 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t1047 = load { ptr, i64, i64 }, ptr %t1046 - store { ptr, i64, i64 } %t1045, ptr %a1049 - store { ptr, i64, i64 } %t1047, ptr %a1050 - call void @finch_str_concat(ptr %a1048, ptr %a1049, ptr %a1050) - store { ptr, i64, i64 } %t1045, ptr %a1051 - call void @finch_str_drop(ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1048 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5119, i64 1, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5120, i64 2, i64 0 }, ptr %a1059 - call void @finch_str_join(ptr %a1060, ptr %a263, ptr %a1059) - %t1061 = load { ptr, i64, i64 }, ptr %a1060 - store { ptr, i64, i64 } %t1057, ptr %a1063 - store { ptr, i64, i64 } %t1061, ptr %a1064 - call void @finch_str_concat(ptr %a1062, ptr %a1063, ptr %a1064) - store { ptr, i64, i64 } %t1057, ptr %a1065 - call void @finch_str_drop(ptr %a1065) - store { ptr, i64, i64 } %t1061, ptr %a1066 - call void @finch_str_drop(ptr %a1066) - %t1067 = load { ptr, i64, i64 }, ptr %a1062 - store { ptr, i64, i64 } %t1067, ptr %a1069 - store { ptr, i64, i64 } { ptr @.str.5121, i64 1, i64 0 }, ptr %a1070 - call void @finch_str_concat(ptr %a1068, ptr %a1069, ptr %a1070) - store { ptr, i64, i64 } %t1067, ptr %a1071 - call void @finch_str_drop(ptr %a1071) - %t1072 = load { ptr, i64, i64 }, ptr %a1068 - store { ptr, i64, i64 } %t1072, ptr %a1073 - %t1074 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1075 = load { ptr, i64, i64 }, ptr %t1074 - store { ptr, i64, i64 } %t1075, ptr %a1076 - store { ptr, i64, i64 } { ptr @.str.5122, i64 4, i64 0 }, ptr %a1077 - %t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077) - %t1079 = icmp ne i32 %t1078, 0 - br i1 %t1079, label %then8070, label %endif8072 -then8070: - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1080, { ptr, i64, i64 } %t1081) - %t1082 = load ptr, ptr %a1 - %t1083 = load { ptr, i64, i64 }, ptr %a317 - %t1084 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1082, { ptr, i64, i64 } %t1083, i64 %t1084) - %t1085 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1085, ptr %a1086 - call void @finch.copy.S_ast_Type(ptr %a1087, ptr %a1086) - %t1088 = load %S.ast.Type, ptr %a1087 - %t1089 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1088, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1089 -endif8072: - %t1090 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t1091 = load i1, ptr %t1090 - br i1 %t1091, label %then8073, label %endif8075 -then8073: - %t1092 = load ptr, ptr %a1 - %t1093 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1092, { ptr, i64, i64 } %t1093) - %t1094 = load ptr, ptr %a1 - %t1095 = load { ptr, i64, i64 }, ptr %a317 - %t1096 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1094, { ptr, i64, i64 } %t1095, i64 %t1096) - %t1097 = load ptr, ptr %a1 - %t1098 = load ptr, ptr %a1 - %t1099 = load %S.ast.Type, ptr %a219 - %t1100 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1098, %S.ast.Type %t1099) - %t1101 = load { ptr, i64, i64 }, ptr %a264 - %t1102 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1097, { ptr, i64, i64 } %t1100, { ptr, i64, i64 } %t1101) - store { ptr, i64, i64 } %t1100, ptr %a1103 - call void @finch_str_drop(ptr %a1103) - %t1104 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1102, 0 - %t1105 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1105, ptr %a1106 - call void @finch.copy.S_ast_Type(ptr %a1107, ptr %a1106) - %t1108 = load %S.ast.Type, ptr %a1107 - %t1109 = insertvalue %S.gen.Val %t1104, %S.ast.Type %t1108, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1109 -endif8075: - %t1110 = load ptr, ptr %a1 - %t1111 = load { ptr, i64, i64 }, ptr %a1073 - %t1112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1110, { ptr, i64, i64 } %t1111) - store { ptr, i64, i64 } %t1112, ptr %a1113 - %t1114 = load ptr, ptr %a1 - %t1115 = load { ptr, i64, i64 }, ptr %a317 - %t1116 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1114, { ptr, i64, i64 } %t1115, i64 %t1116) - %t1117 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1118 = getelementptr inbounds %S.gen.Abi, ptr %t1117, i32 0, i32 0 - %t1119 = load { ptr, i64, i64 }, ptr %t1118 - store { ptr, i64, i64 } %t1119, ptr %a1120 - store { ptr, i64, i64 } { ptr @.str.5123, i64 6, i64 0 }, ptr %a1121 - %t1122 = call i32 @finch_str_eq(ptr %a1120, ptr %a1121) - %t1123 = icmp ne i32 %t1122, 0 - br i1 %t1123, label %then8076, label %endif8078 -then8076: - %t1124 = load ptr, ptr %a1 - %t1125 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1124, { ptr, i64, i64 } { ptr @.str.5124, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1125, ptr %a1126 - %t1127 = load ptr, ptr %a1 - %t1128 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1129 = getelementptr inbounds %S.gen.Abi, ptr %t1128, i32 0, i32 2 - %t1130 = load { ptr, i64, i64 }, ptr %t1129 - %t1131 = load { ptr, i64, i64 }, ptr %a1113 - %t1132 = load { ptr, i64, i64 }, ptr %a1126 - call void @finch.gen.store(ptr %t1127, { ptr, i64, i64 } %t1130, { ptr, i64, i64 } %t1131, { ptr, i64, i64 } %t1132) - %t1133 = load ptr, ptr %a1 - %t1134 = load ptr, ptr %a1 - %t1135 = load %S.ast.Type, ptr %a219 - %t1136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1134, %S.ast.Type %t1135) - %t1137 = load { ptr, i64, i64 }, ptr %a1126 - %t1138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1133, { ptr, i64, i64 } %t1136, { ptr, i64, i64 } %t1137) - store { ptr, i64, i64 } %t1136, ptr %a1139 - call void @finch_str_drop(ptr %a1139) - %t1140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1138, 0 - %t1141 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1141, ptr %a1142 - call void @finch.copy.S_ast_Type(ptr %a1143, ptr %a1142) - %t1144 = load %S.ast.Type, ptr %a1143 - %t1145 = insertvalue %S.gen.Val %t1140, %S.ast.Type %t1144, 1 - call void @finch_str_drop(ptr %a1126) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1145 -endif8078: - %t1146 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1147 = load { ptr, i64, i64 }, ptr %t1146 - store { ptr, i64, i64 } %t1147, ptr %a1148 - store { ptr, i64, i64 } { ptr @.str.5125, i64 3, i64 0 }, ptr %a1149 - %t1150 = call i32 @finch_str_eq(ptr %a1148, ptr %a1149) - %t1151 = icmp ne i32 %t1150, 0 - br i1 %t1151, label %then8079, label %endif8081 -then8079: - %t1152 = load ptr, ptr %a1 - %t1153 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1152) - store { ptr, i64, i64 } %t1153, ptr %a1154 - %t1155 = load ptr, ptr %a1 - %t1156 = load { ptr, i64, i64 }, ptr %a1154 - call void @finch.gen.store(ptr %t1155, { ptr, i64, i64 } { ptr @.str.5126, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5127, i64 15, i64 0 }, { ptr, i64, i64 } %t1156) - %t1157 = load ptr, ptr %a1 - %t1158 = load { ptr, i64, i64 }, ptr %a1154 - store { ptr, i64, i64 } { ptr @.str.5128, i64 32, i64 0 }, ptr %a1160 - store { ptr, i64, i64 } %t1158, ptr %a1161 - call void @finch_str_concat(ptr %a1159, ptr %a1160, ptr %a1161) - %t1162 = load { ptr, i64, i64 }, ptr %a1159 - store { ptr, i64, i64 } %t1162, ptr %a1164 - store { ptr, i64, i64 } { ptr @.str.5129, i64 6, i64 0 }, ptr %a1165 - call void @finch_str_concat(ptr %a1163, ptr %a1164, ptr %a1165) - store { ptr, i64, i64 } %t1162, ptr %a1166 - call void @finch_str_drop(ptr %a1166) - %t1167 = load { ptr, i64, i64 }, ptr %a1163 - %t1168 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1167, ptr %a1170 - store { ptr, i64, i64 } %t1168, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1167, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - store { ptr, i64, i64 } %t1173, ptr %a1175 - store { ptr, i64, i64 } { ptr @.str.5130, i64 1, i64 0 }, ptr %a1176 - call void @finch_str_concat(ptr %a1174, ptr %a1175, ptr %a1176) - store { ptr, i64, i64 } %t1173, ptr %a1177 - call void @finch_str_drop(ptr %a1177) - %t1178 = load { ptr, i64, i64 }, ptr %a1174 - call void @finch.gen.emit(ptr %t1157, { ptr, i64, i64 } %t1178) - store { ptr, i64, i64 } %t1178, ptr %a1179 - call void @finch_str_drop(ptr %a1179) - %t1180 = load ptr, ptr %a1 - %t1181 = load { ptr, i64, i64 }, ptr %a1154 - %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.5131, i64 17, i64 0 }, { ptr, i64, i64 } %t1181) - %t1183 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1182, 0 - %t1184 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1184, ptr %a1185 - call void @finch.copy.S_ast_Type(ptr %a1186, ptr %a1185) - %t1187 = load %S.ast.Type, ptr %a1186 - %t1188 = insertvalue %S.gen.Val %t1183, %S.ast.Type %t1187, 1 - call void @finch_str_drop(ptr %a1154) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1188 -endif8081: - %t1189 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1189, ptr %a1190 - call void @finch_str_copy(ptr %a1191, ptr %a1190) - %t1192 = load { ptr, i64, i64 }, ptr %a1191 - %t1193 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1192, 0 - %t1194 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1194, ptr %a1195 - call void @finch.copy.S_ast_Type(ptr %a1196, ptr %a1195) - %t1197 = load %S.ast.Type, ptr %a1196 - %t1198 = insertvalue %S.gen.Val %t1193, %S.ast.Type %t1197, 1 - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1198 -} - -define internal void @finch.gen.releaseAll(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca i64, align 16 - %a4 = alloca i64, align 16 - %a12 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store i64 0, ptr %a4 - br label %each.cond8082 -each.cond8082: - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t6 = load i64, ptr %t5 - %t7 = load i64, ptr %a4 - %t8 = icmp slt i64 %t7, %t6 - br i1 %t8, label %each.body8083, label %each.end8085 -each.body8083: - %t9 = load ptr, ptr %a2 - %t10 = getelementptr inbounds %S.gen.Val, ptr %t9, i64 %t7 - %t11 = load %S.gen.Val, ptr %t10 - store %S.gen.Val %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = load %S.gen.Val, ptr %a12 - call void @finch.gen.release(ptr %t13, %S.gen.Val %t14) - br label %each.step8084 -each.step8084: - %t15 = load i64, ptr %a4 - %t16 = add i64 %t15, 1 - store i64 %t16, ptr %a4 - br label %each.cond8082 -each.end8085: - %t17 = load ptr, ptr %a1 - %t18 = load i64, ptr %a3 - call void @finch.gen.heldEnd(ptr %t17, i64 %t18) - ret void -} - -define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { -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.5132, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5133, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5134, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5135, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5136, 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.cond8086 -find.cond8086: - %t19 = load i64, ptr %a18 - %t20 = icmp slt i64 %t19, %t16 - br i1 %t20, label %find.body8087, label %find.end8090 -find.body8087: - %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.hit8088, label %find.next8089 -find.hit8088: - store i64 %t19, ptr %a15 - br label %find.end8090 -find.next8089: - %t27 = add i64 %t19, 1 - store i64 %t27, ptr %a18 - br label %find.cond8086 -find.end8090: - %t28 = load i64, ptr %a15 - %t29 = icmp sge i64 %t28, 0 - call void @finch.drop.arr_str(ptr %a12) - 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 - %a93 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.5137, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5138, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5139, i64 7, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5140, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5141, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.5142, i64 7, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.5143, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.5144, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.5145, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.5146, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.5147, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.5148, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.5149, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.5150, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.5151, i64 5, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.5152, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.5153, i64 4, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.5154, i64 6, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.5155, i64 6, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.5156, i64 6, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.5157, i64 4, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.5158, i64 5, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.5159, 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.5160, i64 7, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 - store { ptr, i64, i64 } { ptr @.str.5161, i64 7, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 - store { ptr, i64, i64 } { ptr @.str.5162, i64 7, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3 - store { ptr, i64, i64 } { ptr @.str.5163, i64 7, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 - store { ptr, i64, i64 } { ptr @.str.5164, i64 7, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 - store { ptr, i64, i64 } { ptr @.str.5165, i64 7, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6 - store { ptr, i64, i64 } { ptr @.str.5166, i64 6, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 - store { ptr, i64, i64 } { ptr @.str.5167, i64 6, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 - store { ptr, i64, i64 } { ptr @.str.5168, i64 6, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9 - store { ptr, i64, i64 } { ptr @.str.5169, i64 6, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 - store { ptr, i64, i64 } { ptr @.str.5170, i64 6, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 - store { ptr, i64, i64 } { ptr @.str.5171, i64 6, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12 - store { ptr, i64, i64 } { ptr @.str.5172, i64 8, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 - store { ptr, i64, i64 } { ptr @.str.5173, i64 8, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 - store { ptr, i64, i64 } { ptr @.str.5174, i64 8, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15 - store { ptr, i64, i64 } { ptr @.str.5175, i64 8, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 - store { ptr, i64, i64 } { ptr @.str.5176, i64 8, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 - store { ptr, i64, i64 } { ptr @.str.5177, i64 8, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18 - store { ptr, i64, i64 } { ptr @.str.5178, i64 8, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 - store { ptr, i64, i64 } { ptr @.str.5179, i64 8, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 - store { ptr, i64, i64 } { ptr @.str.5180, i64 6, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21 - store { ptr, i64, i64 } { ptr @.str.5181, i64 8, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 - store { ptr, i64, i64 } { ptr @.str.5182, 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.cond8091 -find.cond8091: - %t66 = load i64, ptr %a65 - %t67 = icmp slt i64 %t66, %t63 - br i1 %t67, label %find.body8092, label %find.end8095 -find.body8092: - %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.hit8093, label %find.next8094 -find.hit8093: - store i64 %t66, ptr %a62 - br label %find.end8095 -find.next8094: - %t74 = add i64 %t66, 1 - store i64 %t74, ptr %a65 - br label %find.cond8091 -find.end8095: - %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 %then8096, label %endif8098 -then8096: - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.5183, i64 0, i64 0 } -endif8098: - %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 %range8099, label %inrange8100 -range8099: - call void @finch_panic_index(ptr @.str.5185, i64 4830, i64 %t79, i64 %t81) - unreachable -inrange8100: - %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.5184, 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.5186, i64 14, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t94 -} - -define internal void @finch.drop.S_docs_Doc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_docs_Doc(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond8110 -n.cond8110: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body8111, label %n.end8112 -n.body8111: - %t7 = getelementptr inbounds %S.docs.Doc, ptr %t1, i64 %t5 - call void @finch.drop.S_docs_Doc(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond8110 -n.end8112: - call void @finch_arr_free(ptr %a) - ret void -} - -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 { ptr, i64, i64 }, align 16 - %a20 = alloca %S.docs.Doc, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca %S.ast.Node, align 16 - %a110 = alloca %S.ast.Node, align 16 - %a112 = alloca %S.ast.Node, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca i64, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.gen.Place, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca %S.gen.Val, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i1, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca %S.ast.Type, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca %S.gen.Val, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %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 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a779 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca %S.gen.Val, align 16 - %a832 = alloca i64, align 16 - %a844 = alloca %S.gen.Val, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a885 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca { ptr, i64, i64 }, align 16 - %a891 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a900 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a915 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca { ptr, i64, i64 }, align 16 - %a919 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a932 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a945 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a956 = alloca { ptr, i64, i64 }, align 16 - %a957 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a972 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca %S.gen.Val, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1011 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1022 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1028 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1080 = alloca { ptr, i64, i64 }, align 16 - %a1081 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca %S.ast.Type, align 16 - %a1108 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1112 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1114 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1118 = alloca { ptr, i64, i64 }, align 16 - %a1119 = alloca { ptr, i64, i64 }, align 16 - %a1123 = alloca %S.ast.Type, align 16 - %a1128 = alloca { ptr, i64, i64 }, align 16 - %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1130 = alloca { ptr, i64, i64 }, align 16 - %a1132 = alloca { ptr, i64, i64 }, align 16 - %a1133 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1143 = alloca { ptr, i64, i64 }, align 16 - %a1144 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1178 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1180 = alloca { ptr, i64, i64 }, align 16 - %a1181 = alloca { ptr, i64, i64 }, align 16 - %a1183 = alloca { ptr, i64, i64 }, align 16 - %a1184 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca { ptr, i64, i64 }, align 16 - %a1188 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca { ptr, i64, i64 }, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca { ptr, i64, i64 }, align 16 - %a1196 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1198 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca %S.ast.Type, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1217 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1243 = alloca %S.gen.Val, align 16 - %a1244 = alloca %S.ast.Type, align 16 - %a1245 = alloca %S.gen.Val, align 16 - %a1249 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1253 = alloca { ptr, i64, i64 }, align 16 - %a1254 = alloca { ptr, i64, i64 }, align 16 - %a1255 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1259 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1270 = alloca { ptr, i64, i64 }, align 16 - %a1271 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca %S.gen.Val, align 16 - %a1303 = alloca %S.gen.Val, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1309 = alloca { ptr, i64, i64 }, align 16 - %a1310 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1313 = alloca { ptr, i64, i64 }, align 16 - %a1314 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1316 = alloca { ptr, i64, i64 }, align 16 - %a1321 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1327 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1332 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1359 = alloca %S.gen.Val, align 16 - %a1365 = alloca { ptr, i64, i64 }, align 16 - %a1366 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1370 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1376 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1387 = alloca { ptr, i64, i64 }, align 16 - %a1388 = alloca { ptr, i64, i64 }, align 16 - %a1390 = alloca { ptr, i64, i64 }, align 16 - %a1391 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca %S.gen.Val, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1452 = alloca { ptr, i64, i64 }, align 16 - %a1457 = alloca { ptr, i64, i64 }, align 16 - %a1458 = alloca { ptr, i64, i64 }, align 16 - %a1459 = alloca { ptr, i64, i64 }, align 16 - %a1461 = alloca { ptr, i64, i64 }, align 16 - %a1462 = alloca { ptr, i64, i64 }, align 16 - %a1463 = alloca { ptr, i64, i64 }, align 16 - %a1464 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca { ptr, i64, i64 }, align 16 - %a1470 = alloca { ptr, i64, i64 }, align 16 - %a1491 = alloca { ptr, i64, i64 }, align 16 - %a1492 = alloca { ptr, i64, i64 }, align 16 - %a1493 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1497 = alloca { ptr, i64, i64 }, align 16 - %a1498 = alloca { ptr, i64, i64 }, align 16 - %a1500 = alloca { ptr, i64, i64 }, align 16 - %a1510 = alloca i64, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1525 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1530 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca i64, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1577 = alloca { ptr, i64, i64 }, align 16 - %a1578 = alloca { ptr, i64, i64 }, align 16 - %a1579 = alloca { ptr, i64, i64 }, align 16 - %a1580 = alloca { ptr, i64, i64 }, align 16 - %a1582 = alloca { ptr, i64, i64 }, align 16 - %a1583 = alloca { ptr, i64, i64 }, align 16 - %a1584 = alloca { ptr, i64, i64 }, align 16 - %a1585 = alloca { ptr, i64, i64 }, align 16 - %a1587 = alloca { ptr, i64, i64 }, align 16 - %a1588 = alloca { ptr, i64, i64 }, align 16 - %a1591 = alloca i64, align 16 - %a1599 = alloca %S.ast.Type, align 16 - %a1620 = alloca %S.ast.Type, align 16 - %a1641 = alloca i64, align 16 - %a1654 = alloca %S.gen.StructDef, align 16 - %a1655 = alloca %S.gen.StructDef, align 16 - %a1657 = alloca %S.gen.StructDef, align 16 - %a1685 = alloca %S.ast.Node, align 16 - %a1686 = alloca %S.ast.Node, align 16 - %a1688 = alloca %S.ast.Node, align 16 - %a1697 = alloca { ptr, i64, i64 }, align 16 - %a1698 = alloca { ptr, i64, i64 }, align 16 - %a1699 = alloca { ptr, i64, i64 }, align 16 - %a1701 = alloca { ptr, i64, i64 }, align 16 - %a1702 = alloca { ptr, i64, i64 }, align 16 - %a1703 = alloca { ptr, i64, i64 }, align 16 - %a1704 = alloca { ptr, i64, i64 }, align 16 - %a1708 = alloca { ptr, i64, i64 }, align 16 - %a1709 = alloca { ptr, i64, i64 }, align 16 - %a1711 = alloca { ptr, i64, i64 }, align 16 - %a1712 = alloca { ptr, i64, i64 }, align 16 - %a1713 = alloca { ptr, i64, i64 }, align 16 - %a1714 = alloca { ptr, i64, i64 }, align 16 - %a1715 = alloca { ptr, i64, i64 }, align 16 - %a1717 = alloca { ptr, i64, i64 }, align 16 - %a1718 = alloca { ptr, i64, i64 }, align 16 - %a1719 = alloca { ptr, i64, i64 }, align 16 - %a1720 = alloca { ptr, i64, i64 }, align 16 - %a1737 = alloca { ptr, i64, i64 }, align 16 - %a1753 = alloca i64, align 16 - %a1765 = alloca { ptr, i64, i64 }, align 16 - %a1775 = alloca { ptr, i64, i64 }, align 16 - %a1778 = alloca { ptr, i64, i64 }, align 16 - %a1779 = alloca { ptr, i64, i64 }, align 16 - %a1806 = alloca { ptr, i64, i64 }, align 16 - %a1807 = alloca { ptr, i64, i64 }, align 16 - %a1808 = alloca { ptr, i64, i64 }, align 16 - %a1810 = alloca { ptr, i64, i64 }, align 16 - %a1811 = alloca { ptr, i64, i64 }, align 16 - %a1812 = alloca { ptr, i64, i64 }, align 16 - %a1813 = alloca { ptr, i64, i64 }, align 16 - %a1815 = alloca { ptr, i64, i64 }, align 16 - %a1819 = alloca { ptr, i64, i64 }, align 16 - %a1820 = alloca { ptr, i64, i64 }, align 16 - %a1821 = alloca { ptr, i64, i64 }, align 16 - %a1823 = alloca { ptr, i64, i64 }, align 16 - %a1824 = alloca { ptr, i64, i64 }, align 16 - %a1825 = alloca { ptr, i64, i64 }, align 16 - %a1826 = alloca { ptr, i64, i64 }, align 16 - %a1830 = alloca { ptr, i64, i64 }, align 16 - %a1831 = alloca { ptr, i64, i64 }, align 16 - %a1832 = alloca { ptr, i64, i64 }, align 16 - %a1833 = alloca { ptr, i64, i64 }, align 16 - %a1834 = alloca { ptr, i64, i64 }, align 16 - %a1836 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 %panic8101, label %ok8102 -panic8101: - call void @finch_panic(ptr @.str.5187, i64 4835, ptr @.str.5188) - unreachable -ok8102: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - br label %logic.from8103 -logic.from8103: - br i1 %t12, label %logic.rhs8104, label %logic.end8105 -logic.rhs8104: - %t13 = load { ptr, i64, i64 }, ptr %a8 - %t14 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t13) - br label %logic.rend8106 -logic.rend8106: - br label %logic.end8105 -logic.end8105: - %t15 = phi i1 [ false, %logic.from8103 ], [ %t14, %logic.rend8106 ] - br i1 %t15, label %then8107, label %endif8109 -then8107: - %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 { ptr, i64, i64 } %t16, ptr %a19 - call void @finch.drop.arr_S_docs_Doc(ptr %a19) - store %S.docs.Doc %t18, ptr %a20 - %t21 = getelementptr inbounds %S.docs.Doc, ptr %a20, i32 0, i32 0 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = icmp sgt i64 %t23, 0 - br i1 %t24, label %then8113, label %endif8115 -then8113: - %t25 = load ptr, ptr %a1 - %t26 = load %S.ast.Node, ptr %a2 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t28 = load i64, ptr %t27 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = load %S.docs.Doc, ptr %a20 - %t32 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t31) - call void @finch.gen.noteRef(ptr %t25, %S.ast.Node %t26, i64 %t28, i64 %t30, { ptr, i64, i64 } %t32, { ptr, i64, i64 } { ptr @.str.5189, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif8115 -endif8115: - call void @finch.drop.S_docs_Doc(ptr %a20) - br label %endif8109 -endif8109: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.5190, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then8116, label %endif8118 -then8116: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.5191, i64 86, i64 0 }) - br label %endif8118 -endif8118: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5192, i64 5, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then8119, label %endif8121 -then8119: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load i64, ptr %t47 - store i64 0, ptr %a49 - br label %for.cond8122 -for.cond8122: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t48 - br i1 %t51, label %for.body8123, label %for.end8125 -for.body8123: - %t52 = load ptr, ptr %a1 - %t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t54 = load i64, ptr %a49 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range8126, label %inrange8127 -range8126: - call void @finch_panic_index(ptr @.str.5193, i64 4846, i64 %t54, i64 %t56) - unreachable -inrange8127: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t52, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t64 = getelementptr inbounds %S.ast.Type, ptr %t63, i32 0, i32 0 - %t65 = load { ptr, i64, i64 }, ptr %t64 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.5194, i64 4, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br i1 %t69, label %then8128, label %endif8130 -then8128: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t72 = load i64, ptr %a49 - %t73 = load { ptr, i64, i64 }, ptr %t71 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range8131, label %inrange8132 -range8131: - call void @finch_panic_index(ptr @.str.5195, i64 4848, i64 %t72, i64 %t74) - unreachable -inrange8132: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 %t72 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5196, i64 53, i64 0 }) - br label %endif8130 -endif8130: - %t79 = load i64, ptr %a49 - %t80 = icmp sgt i64 %t79, 0 - br i1 %t80, label %then8133, label %endif8135 -then8133: - %t81 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t81, { ptr, i64, i64 } { ptr @.str.5197, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5198, i64 0, i64 0 }) - br label %endif8135 -endif8135: - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - call void @finch.gen.emitPrint(ptr %t82, { ptr, i64, i64 } %t84, %S.ast.Type %t86, i1 false) - %t87 = load ptr, ptr %a1 - %t88 = load %S.gen.Val, ptr %a62 - call void @finch.gen.release(ptr %t87, %S.gen.Val %t88) - call void @finch.drop.S_gen_Val(ptr %a62) - br label %for.step8124 -for.step8124: - %t89 = load i64, ptr %a49 - %t90 = add i64 %t89, 1 - store i64 %t90, ptr %a49 - br label %for.cond8122 -for.end8125: - %t91 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t91, { ptr, i64, i64 } { ptr @.str.5199, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5200, i64 0, i64 0 }) - %t92 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5201, i64 4, i64 0 }) - %t93 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t92, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t93 -endif8121: - %t94 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5202, i64 4, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then8136, label %endif8138 -then8136: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t99, %S.ast.Node %t100, i64 0, i64 1, { ptr, i64, i64 } %t101) - %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t103 = load { ptr, i64, i64 }, ptr %t102 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 0, %t104 - br i1 %t105, label %range8139, label %inrange8140 -range8139: - call void @finch_panic_index(ptr @.str.5203, i64 4861, i64 0, i64 %t104) - unreachable -inrange8140: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 0 - %t108 = load %S.ast.Node, ptr %t107 - store %S.ast.Node %t108, ptr %a109 - call void @finch.copy.S_ast_Node(ptr %a110, ptr %a109) - %t111 = load %S.ast.Node, ptr %a110 - store %S.ast.Node %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.5204, i64 3, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from8141 -logic.from8141: - br i1 %t118, label %logic.rhs8142, label %logic.end8143 -logic.rhs8142: - %t119 = load ptr, ptr %a1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = call i64 @finch.gen.lookup(ptr %t119, { ptr, i64, i64 } %t121) - %t123 = icmp slt i64 %t122, 0 - br label %logic.rend8144 -logic.rend8144: - br label %logic.end8143 -logic.end8143: - %t124 = phi i1 [ false, %logic.from8141 ], [ %t123, %logic.rend8144 ] - br i1 %t124, label %then8145, label %endif8147 -then8145: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = icmp eq ptr %t126, null - br i1 %t127, label %panic8148, label %ok8149 -panic8148: - call void @finch_panic(ptr @.str.5205, i64 4863, ptr @.str.5206) - unreachable -ok8149: - %t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 14 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call i64 @finch.gen.findFn(ptr %t125, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t131) - store i64 %t132, ptr %a133 - %t134 = load i64, ptr %a133 - %t135 = icmp sge i64 %t134, 0 - br i1 %t135, label %then8150, label %endif8152 -then8150: - %t136 = load ptr, ptr %a1 - %t137 = load i64, ptr %a133 - %t138 = load %S.ast.Node, ptr %a112 - %t139 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t136, i64 %t137, %S.ast.Node %t138) - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5207, i64 3, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif8152: - br label %endif8147 -endif8147: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5208, i64 3, i64 0 }, ptr %a146 - %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) - %t148 = icmp eq i32 %t147, 0 - br label %logic.from8153 -logic.from8153: - br i1 %t148, label %logic.rhs8154, label %logic.end8155 -logic.rhs8154: - %t149 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5209, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp eq i32 %t153, 0 - br label %logic.rend8156 -logic.rend8156: - br label %logic.end8155 -logic.end8155: - %t155 = phi i1 [ false, %logic.from8153 ], [ %t154, %logic.rend8156 ] - br label %logic.from8157 -logic.from8157: - br i1 %t155, label %logic.rhs8158, label %logic.end8159 -logic.rhs8158: - %t156 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.5210, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br label %logic.rend8160 -logic.rend8160: - br label %logic.end8159 -logic.end8159: - %t162 = phi i1 [ false, %logic.from8157 ], [ %t161, %logic.rend8160 ] - br i1 %t162, label %then8161, label %endif8163 -then8161: - %t163 = load ptr, ptr %a1 - %t164 = load %S.ast.Node, ptr %a112 - call void @finch.gen.fail(ptr %t163, %S.ast.Node %t164, { ptr, i64, i64 } { ptr @.str.5211, i64 63, i64 0 }) - br label %endif8163 -endif8163: - %t165 = load ptr, ptr %a1 - %t166 = load %S.ast.Node, ptr %a112 - %t167 = call %S.gen.Place @finch.gen.place(ptr %t165, %S.ast.Node %t166, i1 true) - store %S.gen.Place %t167, ptr %a168 - %t169 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - %t174 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t173, 0 - %t175 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t176) - %t178 = insertvalue %S.gen.Val %t174, %S.ast.Type %t177, 1 - call void @finch.drop.S_gen_Place(ptr %a168) - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t178 -endif8138: - %t179 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5212, i64 3, i64 0 }, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then8164, label %endif8166 -then8164: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a2 - %t186 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t184, %S.ast.Node %t185, i64 0, i64 1, { ptr, i64, i64 } %t186) - %t187 = load ptr, ptr %a1 - %t188 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 0, %t190 - br i1 %t191, label %range8167, label %inrange8168 -range8167: - call void @finch_panic_index(ptr @.str.5213, i64 4876, i64 0, i64 %t190) - unreachable -inrange8168: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Node, ptr %t192, i64 0 - %t194 = load %S.ast.Node, ptr %t193 - %t195 = call %S.gen.Val @finch.gen.expr(ptr %t187, %S.ast.Node %t194) - store %S.gen.Val %t195, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - call void @finch_str_copy(ptr %a204, ptr %a203) - %t205 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t205, ptr %a206 - store i1 false, ptr %a207 - %t208 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5214, i64 3, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then8169, label %else8170 -then8169: - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a196 - %t215 = call { ptr, i64, i64 } @finch.gen.own(ptr %t213, %S.gen.Val %t214) - %t216 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t217 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t218 = load %S.ast.Type, ptr %t217 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Val %t216, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Val %t222, i1 true, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -else8170: - %t224 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t225 = load %S.ast.Type, ptr %t224 - %t226 = call i1 @finch.gen.isSigned(%S.ast.Type %t225) - br i1 %t226, label %then8172, label %else8173 -then8172: - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5215, i64 34, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.5216, i64 6, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t242 = load %S.ast.Type, ptr %t241 - %t243 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5217, i64 3, i64 0 }) - %t244 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t238, { ptr, i64, i64 } %t240, %S.ast.Type %t242, %S.ast.Type %t243) - store %S.ast.Type %t243, ptr %a245 - call void @finch.drop.S_ast_Type(ptr %a245) - store { ptr, i64, i64 } %t237, ptr %a247 - store { ptr, i64, i64 } %t244, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t237, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t244, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.5218, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t227, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif8174 -else8173: - %t258 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t259 = load %S.ast.Type, ptr %t258 - %t260 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t259) - br i1 %t260, label %then8175, label %else8176 -then8175: - %t261 = load ptr, ptr %a1 - %t262 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5219, i64 35, i64 0 }, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5220, i64 6, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t274 = load { ptr, i64, i64 }, ptr %t273 - %t275 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t276 = load %S.ast.Type, ptr %t275 - %t277 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5221, i64 3, i64 0 }) - %t278 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t272, { ptr, i64, i64 } %t274, %S.ast.Type %t276, %S.ast.Type %t277) - store %S.ast.Type %t277, ptr %a279 - call void @finch.drop.S_ast_Type(ptr %a279) - store { ptr, i64, i64 } %t271, ptr %a281 - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t271, ptr %a283 - call void @finch_str_drop(ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a280 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5222, i64 1, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.emit(ptr %t261, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif8177 -else8176: - %t292 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t293 = load %S.ast.Type, ptr %t292 - %t294 = call i1 @finch.gen.isFloat(%S.ast.Type %t293) - br i1 %t294, label %then8178, label %else8179 -then8178: - %t295 = load ptr, ptr %a1 - %t296 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5223, i64 36, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t300, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.5224, i64 9, i64 0 }, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a301 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5225, i64 5, i64 0 }) - %t312 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t306, { ptr, i64, i64 } %t308, %S.ast.Type %t310, %S.ast.Type %t311) - store %S.ast.Type %t311, ptr %a313 - call void @finch.drop.S_ast_Type(ptr %a313) - store { ptr, i64, i64 } %t305, ptr %a315 - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t305, ptr %a317 - call void @finch_str_drop(ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.5226, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - call void @finch.gen.emit(ptr %t295, { ptr, i64, i64 } %t324) - store { ptr, i64, i64 } %t324, ptr %a325 - call void @finch_str_drop(ptr %a325) - br label %endif8180 -else8179: - %t326 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t326, ptr %a327 - store { ptr, i64, i64 } { ptr @.str.5227, i64 4, i64 0 }, ptr %a328 - %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) - %t330 = icmp ne i32 %t329, 0 - br i1 %t330, label %then8181, label %else8182 -then8181: - %t331 = load ptr, ptr %a1 - %t332 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5228, i64 35, i64 0 }, ptr %a334 - store { ptr, i64, i64 } %t332, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a333 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.5229, i64 13, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t341, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t341, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.5230, i64 1, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - call void @finch.gen.emit(ptr %t331, { ptr, i64, i64 } %t353) - store { ptr, i64, i64 } %t353, ptr %a354 - call void @finch_str_drop(ptr %a354) - br label %endif8183 -else8182: - %t355 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t355, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5231, i64 4, i64 0 }, ptr %a357 - %t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357) - %t359 = icmp ne i32 %t358, 0 - br i1 %t359, label %then8184, label %else8185 -then8184: - %t360 = load ptr, ptr %a1 - %t361 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - store { ptr, i64, i64 } { ptr @.str.5232, i64 8, i64 0 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t366, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.5233, i64 7, i64 0 }, ptr %a369 - call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369) - store { ptr, i64, i64 } %t366, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a367 - %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t360, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a373 - call void @finch_str_drop(ptr %a373) - store { ptr, i64, i64 } %t372, ptr %a374 - %t375 = load ptr, ptr %a1 - %t376 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5234, i64 35, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - %t380 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t380, ptr %a382 - store { ptr, i64, i64 } { ptr @.str.5235, i64 6, i64 0 }, ptr %a383 - call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) - store { ptr, i64, i64 } %t380, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a381 - %t386 = load { ptr, i64, i64 }, ptr %a374 - store { ptr, i64, i64 } %t385, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - store { ptr, i64, i64 } %t385, ptr %a390 - call void @finch_str_drop(ptr %a390) - %t391 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.5236, i64 1, i64 0 }, ptr %a394 - call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) - store { ptr, i64, i64 } %t391, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a392 - call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t396) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a374) - br label %endif8186 -else8185: - %t398 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t398, ptr %a399 - store { ptr, i64, i64 } { ptr @.str.5237, i64 3, i64 0 }, ptr %a400 - %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) - %t402 = icmp ne i32 %t401, 0 - br i1 %t402, label %then8187, label %else8188 -then8187: - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t403, { ptr, i64, i64 } { ptr @.str.5238, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5239, i64 15, i64 0 }, { ptr, i64, i64 } %t404) - %t405 = load ptr, ptr %a1 - %t406 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5240, i64 32, i64 0 }, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5241, i64 6, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - %t416 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t417 = load { ptr, i64, i64 }, ptr %t416 - store { ptr, i64, i64 } %t415, ptr %a419 - store { ptr, i64, i64 } %t417, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t415, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - store { ptr, i64, i64 } %t422, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.5242, i64 1, i64 0 }, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - call void @finch.gen.emit(ptr %t405, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_drop(ptr %a428) - store i1 true, ptr %a207 - br label %endif8189 -else8188: - %t429 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.5243, i64 5, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.from8190 -logic.from8190: - br i1 %t433, label %logic.rhs8191, label %logic.end8192 -logic.rhs8191: - %t434 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t435 = getelementptr inbounds %S.ast.Type, ptr %t434, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 0, %t437 - br i1 %t438, label %range8193, label %inrange8194 -range8193: - call void @finch_panic_index(ptr @.str.5244, i64 4898, i64 0, i64 %t437) - unreachable -inrange8194: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds %S.ast.Type, ptr %t439, i64 0 - %t441 = getelementptr inbounds %S.ast.Type, ptr %t440, i32 0, i32 0 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } { ptr @.str.5245, i64 2, i64 0 }, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br label %logic.from8195 -logic.from8195: - br i1 %t446, label %logic.end8197, label %logic.rhs8196 -logic.rhs8196: - %t447 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t448 = getelementptr inbounds %S.ast.Type, ptr %t447, i32 0, i32 1 - %t449 = load { ptr, i64, i64 }, ptr %t448 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 0, %t450 - br i1 %t451, label %range8198, label %inrange8199 -range8198: - call void @finch_panic_index(ptr @.str.5246, i64 4898, i64 0, i64 %t450) - unreachable -inrange8199: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %t452, i64 0 - %t454 = getelementptr inbounds %S.ast.Type, ptr %t453, i32 0, i32 0 - %t455 = load { ptr, i64, i64 }, ptr %t454 - store { ptr, i64, i64 } %t455, ptr %a456 - store { ptr, i64, i64 } { ptr @.str.5247, i64 4, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend8200 -logic.rend8200: - br label %logic.end8197 -logic.end8197: - %t460 = phi i1 [ true, %logic.from8195 ], [ %t459, %logic.rend8200 ] - br label %logic.rend8201 -logic.rend8201: - br label %logic.end8192 -logic.end8192: - %t461 = phi i1 [ false, %logic.from8190 ], [ %t460, %logic.rend8201 ] - br i1 %t461, label %then8202, label %else8203 -then8202: - %t462 = load ptr, ptr %a1 - %t463 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t462, { ptr, i64, i64 } { ptr @.str.5248, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5249, i64 15, i64 0 }, { ptr, i64, i64 } %t463) - %t464 = load ptr, ptr %a1 - %t465 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5250, i64 36, i64 0 }, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - %t469 = load { ptr, i64, i64 }, ptr %a466 - store { ptr, i64, i64 } %t469, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.5251, i64 6, i64 0 }, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - store { ptr, i64, i64 } %t469, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a470 - %t475 = load ptr, ptr %a1 - %t476 = load %S.gen.Val, ptr %a196 - %t477 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t475, %S.gen.Val %t476) - store { ptr, i64, i64 } %t474, ptr %a479 - store { ptr, i64, i64 } %t477, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t474, ptr %a481 - call void @finch_str_drop(ptr %a481) - store { ptr, i64, i64 } %t477, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = load { ptr, i64, i64 }, ptr %a478 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - store { ptr, i64, i64 } %t483, ptr %a487 - call void @finch_str_drop(ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a484 - call void @finch.gen.emit(ptr %t464, { ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t488, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load ptr, ptr %a1 - %t491 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t490, %S.gen.Val %t491) - br label %endif8204 -else8203: - %t492 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t492, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.5253, i64 4, i64 0 }, ptr %a494 - %t495 = call i32 @finch_str_eq(ptr %a493, ptr %a494) - %t496 = icmp ne i32 %t495, 0 - br label %logic.from8205 -logic.from8205: - br i1 %t496, label %logic.end8207, label %logic.rhs8206 -logic.rhs8206: - %t497 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t497, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5254, i64 4, i64 0 }, ptr %a499 - %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) - %t501 = icmp ne i32 %t500, 0 - br label %logic.rend8208 -logic.rend8208: - br label %logic.end8207 -logic.end8207: - %t502 = phi i1 [ true, %logic.from8205 ], [ %t501, %logic.rend8208 ] - br label %logic.from8209 -logic.from8209: - br i1 %t502, label %logic.end8211, label %logic.rhs8210 -logic.rhs8210: - %t503 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t503, ptr %a504 - store { ptr, i64, i64 } { ptr @.str.5255, i64 5, i64 0 }, ptr %a505 - %t506 = call i32 @finch_str_eq(ptr %a504, ptr %a505) - %t507 = icmp ne i32 %t506, 0 - br label %logic.rend8212 -logic.rend8212: - br label %logic.end8211 -logic.end8211: - %t508 = phi i1 [ true, %logic.from8209 ], [ %t507, %logic.rend8212 ] - br label %logic.from8213 -logic.from8213: - br i1 %t508, label %logic.end8215, label %logic.rhs8214 -logic.rhs8214: - %t509 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.5256, i64 3, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.rend8216 -logic.rend8216: - br label %logic.end8215 -logic.end8215: - %t514 = phi i1 [ true, %logic.from8213 ], [ %t513, %logic.rend8216 ] - br label %logic.from8217 -logic.from8217: - br i1 %t514, label %logic.end8219, label %logic.rhs8218 -logic.rhs8218: - %t515 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t515, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.5257, i64 6, i64 0 }, ptr %a517 - %t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517) - %t519 = icmp ne i32 %t518, 0 - br label %logic.rend8220 -logic.rend8220: - br label %logic.end8219 -logic.end8219: - %t520 = phi i1 [ true, %logic.from8217 ], [ %t519, %logic.rend8220 ] - br label %logic.from8221 -logic.from8221: - br i1 %t520, label %logic.end8223, label %logic.rhs8222 -logic.rhs8222: - %t521 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5258, i64 4, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8224 -logic.rend8224: - br label %logic.end8223 -logic.end8223: - %t526 = phi i1 [ true, %logic.from8221 ], [ %t525, %logic.rend8224 ] - br i1 %t526, label %then8225, label %else8226 -then8225: - %t527 = load ptr, ptr %a1 - %t528 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t527, { ptr, i64, i64 } { ptr @.str.5259, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5260, i64 15, i64 0 }, { ptr, i64, i64 } %t528) - %t529 = load ptr, ptr %a1 - %t530 = load { ptr, i64, i64 }, ptr %a199 - %t531 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t532 = load { ptr, i64, i64 }, ptr %t531 - %t533 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t534 = load %S.ast.Type, ptr %t533 - call void @finch.gen.emitFormat(ptr %t529, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t532, %S.ast.Type %t534, i1 false) - %t535 = load ptr, ptr %a1 - %t536 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t535, %S.gen.Val %t536) - br label %endif8227 -else8226: - %t537 = load ptr, ptr %a1 - %t538 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = extractvalue { ptr, i64, i64 } %t539, 1 - %t541 = icmp uge i64 0, %t540 - br i1 %t541, label %range8228, label %inrange8229 -range8228: - call void @finch_panic_index(ptr @.str.5261, i64 4908, i64 0, i64 %t540) - unreachable -inrange8229: - %t542 = extractvalue { ptr, i64, i64 } %t539, 0 - %t543 = getelementptr inbounds %S.ast.Node, ptr %t542, i64 0 - %t544 = load %S.ast.Node, ptr %t543 - %t545 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t546 = load %S.ast.Type, ptr %t545 - %t547 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t546) - store { ptr, i64, i64 } { ptr @.str.5262, i64 11, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t547, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.5263, i64 9, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - call void @finch.gen.fail(ptr %t537, %S.ast.Node %t544, { ptr, i64, i64 } %t557) - store { ptr, i64, i64 } %t557, ptr %a558 - call void @finch_str_drop(ptr %a558) - br label %endif8227 -endif8227: - br label %endif8204 -endif8204: - br label %endif8189 -endif8189: - br label %endif8186 -endif8186: - br label %endif8183 -endif8183: - br label %endif8180 -endif8180: - br label %endif8177 -endif8177: - br label %endif8174 -endif8174: - br label %endif8171 -endif8171: - %t559 = load ptr, ptr %a1 - %t560 = load { ptr, i64, i64 }, ptr %a199 - %t561 = call { ptr, i64, i64 } @finch.gen.load(ptr %t559, { ptr, i64, i64 } { ptr @.str.5264, i64 17, i64 0 }, { ptr, i64, i64 } %t560) - %t562 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t561, 0 - %t563 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5265, i64 3, i64 0 }) - %t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1 - %t565 = load i1, ptr %a207 - %t566 = xor i1 %t565, true - %t567 = insertvalue %S.gen.Val %t564, i1 %t566, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t567 -endif8166: - %t568 = load { ptr, i64, i64 }, ptr %a8 - %t569 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t568) - store { ptr, i64, i64 } %t569, ptr %a570 - %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %a570, i32 0, i32 1 - %t572 = load i64, ptr %t571 - %t573 = icmp sgt i64 %t572, 0 - br i1 %t573, label %then8230, label %endif8232 -then8230: - %t574 = load ptr, ptr %a1 - %t575 = load %S.ast.Node, ptr %a2 - %t576 = load { ptr, i64, i64 }, ptr %a570 - %t577 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t576) - %t578 = call %S.gen.Val @finch.gen.convert(ptr %t574, %S.ast.Node %t575, %S.ast.Type %t577) - store %S.ast.Type %t577, ptr %a579 - call void @finch.drop.S_ast_Type(ptr %a579) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t578 -endif8232: - %t580 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t580, ptr %a581 - store { ptr, i64, i64 } { ptr @.str.5266, i64 9, i64 0 }, ptr %a582 - %t583 = call i32 @finch_str_eq(ptr %a581, ptr %a582) - %t584 = icmp ne i32 %t583, 0 - br label %logic.from8233 -logic.from8233: - br i1 %t584, label %logic.end8235, label %logic.rhs8234 -logic.rhs8234: - %t585 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t585, ptr %a586 - store { ptr, i64, i64 } { ptr @.str.5267, i64 11, i64 0 }, ptr %a587 - %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) - %t589 = icmp ne i32 %t588, 0 - br label %logic.rend8236 -logic.rend8236: - br label %logic.end8235 -logic.end8235: - %t590 = phi i1 [ true, %logic.from8233 ], [ %t589, %logic.rend8236 ] - br i1 %t590, label %then8237, label %endif8239 -then8237: - %t591 = load ptr, ptr %a1 - %t592 = load %S.ast.Node, ptr %a2 - %t593 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t591, %S.ast.Node %t592, i64 0, i64 1, { ptr, i64, i64 } %t593) - %t594 = load ptr, ptr %a1 - %t595 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t596 = load { ptr, i64, i64 }, ptr %t595 - %t597 = extractvalue { ptr, i64, i64 } %t596, 1 - %t598 = icmp uge i64 0, %t597 - br i1 %t598, label %range8240, label %inrange8241 -range8240: - call void @finch_panic_index(ptr @.str.5268, i64 4918, i64 0, i64 %t597) - unreachable -inrange8241: - %t599 = extractvalue { ptr, i64, i64 } %t596, 0 - %t600 = getelementptr inbounds %S.ast.Node, ptr %t599, i64 0 - %t601 = load %S.ast.Node, ptr %t600 - %t602 = call %S.gen.Val @finch.gen.strArg(ptr %t594, %S.ast.Node %t601, { ptr, i64, i64 } { ptr @.str.5269, i64 13, i64 0 }) - store %S.gen.Val %t602, ptr %a603 - %t604 = load ptr, ptr %a1 - %t605 = load %S.gen.Val, ptr %a603 - %t606 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t604, %S.gen.Val %t605) - store { ptr, i64, i64 } %t606, ptr %a607 - %t608 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t608, ptr %a609 - store { ptr, i64, i64 } { ptr @.str.5270, i64 11, i64 0 }, ptr %a610 - %t611 = call i32 @finch_str_eq(ptr %a609, ptr %a610) - %t612 = icmp ne i32 %t611, 0 - br i1 %t612, label %then8242, label %endif8244 -then8242: - %t613 = load ptr, ptr %a1 - %t614 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } { ptr @.str.5271, i64 32, i64 0 }, ptr %a616 - store { ptr, i64, i64 } %t614, ptr %a617 - call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617) - %t618 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t618, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5272, i64 1, i64 0 }, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t618, ptr %a622 - call void @finch_str_drop(ptr %a622) - %t623 = load { ptr, i64, i64 }, ptr %a619 - %t624 = call { ptr, i64, i64 } @finch.gen.op(ptr %t613, { ptr, i64, i64 } %t623) - store { ptr, i64, i64 } %t623, ptr %a625 - call void @finch_str_drop(ptr %a625) - store { ptr, i64, i64 } %t624, ptr %a626 - %t627 = load ptr, ptr %a1 - %t628 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t627, %S.gen.Val %t628) - %t629 = load ptr, ptr %a1 - %t630 = load { ptr, i64, i64 }, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5273, i64 12, i64 0 }, ptr %a632 - store { ptr, i64, i64 } %t630, ptr %a633 - call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a631 - store { ptr, i64, i64 } %t634, ptr %a636 - store { ptr, i64, i64 } { ptr @.str.5274, i64 3, i64 0 }, ptr %a637 - call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = call { ptr, i64, i64 } @finch.gen.op(ptr %t629, { ptr, i64, i64 } %t639) - store { ptr, i64, i64 } %t639, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t640, 0 - %t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5275, i64 4, i64 0 }) - %t644 = insertvalue %S.gen.Val %t642, %S.ast.Type %t643, 1 - call void @finch_str_drop(ptr %a626) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t644 -endif8244: - %t645 = load ptr, ptr %a1 - %t646 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t645) - store { ptr, i64, i64 } %t646, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic8245, label %ok8246 -panic8245: - call void @finch_panic(ptr @.str.5276, i64 4926, ptr @.str.5277) - unreachable -ok8246: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 41 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = load %S.ast.Node, ptr %a2 - %t653 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t652) - store { ptr, i64, i64 } %t651, ptr %a654 - store { ptr, i64, i64 } %t653, ptr %a655 - %t656 = call i32 @finch_str_eq(ptr %a654, ptr %a655) - %t657 = icmp ne i32 %t656, 0 - store { ptr, i64, i64 } %t653, ptr %a658 - call void @finch_str_drop(ptr %a658) - br i1 %t657, label %then8247, label %endif8249 -then8247: - %t659 = load ptr, ptr %a1 - %t660 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t659, { ptr, i64, i64 } { ptr @.str.5278, i64 17, i64 0 }) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a647 - call void @finch.gen.store(ptr %t662, { ptr, i64, i64 } { ptr @.str.5279, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5280, i64 15, i64 0 }, { ptr, i64, i64 } %t663) - %t664 = load ptr, ptr %a1 - %t665 = load { ptr, i64, i64 }, ptr %a661 - call void @finch.gen.store(ptr %t664, { ptr, i64, i64 } { ptr @.str.5281, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5282, i64 15, i64 0 }, { ptr, i64, i64 } %t665) - %t666 = load ptr, ptr %a1 - %t667 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5283, i64 34, i64 0 }, ptr %a669 - store { ptr, i64, i64 } %t667, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a668 - store { ptr, i64, i64 } %t671, ptr %a673 - store { ptr, i64, i64 } { ptr @.str.5284, i64 6, i64 0 }, ptr %a674 - call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) - store { ptr, i64, i64 } %t671, ptr %a675 - call void @finch_str_drop(ptr %a675) - %t676 = load { ptr, i64, i64 }, ptr %a672 - %t677 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t676, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t676, ptr %a681 - call void @finch_str_drop(ptr %a681) - %t682 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } %t682, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.5285, i64 6, i64 0 }, ptr %a685 - call void @finch_str_concat(ptr %a683, ptr %a684, ptr %a685) - store { ptr, i64, i64 } %t682, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load { ptr, i64, i64 }, ptr %a683 - %t688 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t687, ptr %a690 - store { ptr, i64, i64 } %t688, ptr %a691 - call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) - store { ptr, i64, i64 } %t687, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load { ptr, i64, i64 }, ptr %a689 - store { ptr, i64, i64 } %t693, ptr %a695 - store { ptr, i64, i64 } { ptr @.str.5286, i64 1, i64 0 }, ptr %a696 - call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) - store { ptr, i64, i64 } %t693, ptr %a697 - call void @finch_str_drop(ptr %a697) - %t698 = load { ptr, i64, i64 }, ptr %a694 - %t699 = call { ptr, i64, i64 } @finch.gen.op(ptr %t666, { ptr, i64, i64 } %t698) - store { ptr, i64, i64 } %t698, ptr %a700 - call void @finch_str_drop(ptr %a700) - store { ptr, i64, i64 } %t699, ptr %a701 - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a701 - store { ptr, i64, i64 } { ptr @.str.5287, i64 12, i64 0 }, ptr %a705 - store { ptr, i64, i64 } %t703, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - %t707 = load { ptr, i64, i64 }, ptr %a704 - store { ptr, i64, i64 } %t707, ptr %a709 - store { ptr, i64, i64 } { ptr @.str.5288, i64 3, i64 0 }, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - store { ptr, i64, i64 } %t707, ptr %a711 - call void @finch_str_drop(ptr %a711) - %t712 = load { ptr, i64, i64 }, ptr %a708 - %t713 = call { ptr, i64, i64 } @finch.gen.op(ptr %t702, { ptr, i64, i64 } %t712) - store { ptr, i64, i64 } %t712, ptr %a714 - call void @finch_str_drop(ptr %a714) - %t715 = load ptr, ptr %a1 - %t716 = icmp eq ptr %t715, null - br i1 %t716, label %panic8250, label %ok8251 -panic8250: - call void @finch_panic(ptr @.str.5289, i64 4931, ptr @.str.5290) - unreachable -ok8251: - %t717 = getelementptr inbounds %S.gen.Gen, ptr %t715, i32 0, i32 42 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t713, ptr %t717 - store { ptr, i64, i64 } %t718, ptr %a719 - call void @finch_str_drop(ptr %a719) - %t720 = load ptr, ptr %a1 - %t721 = load { ptr, i64, i64 }, ptr %a661 - %t722 = call { ptr, i64, i64 } @finch.gen.load(ptr %t720, { ptr, i64, i64 } { ptr @.str.5291, i64 17, i64 0 }, { ptr, i64, i64 } %t721) - %t723 = load ptr, ptr %a1 - %t724 = icmp eq ptr %t723, null - br i1 %t724, label %panic8252, label %ok8253 -panic8252: - call void @finch_panic(ptr @.str.5292, i64 4932, ptr @.str.5293) - unreachable -ok8253: - %t725 = getelementptr inbounds %S.gen.Gen, ptr %t723, i32 0, i32 43 - %t726 = load { ptr, i64, i64 }, ptr %t725 - store { ptr, i64, i64 } %t722, ptr %t725 - store { ptr, i64, i64 } %t726, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load ptr, ptr %a1 - %t729 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t728, %S.gen.Val %t729) - %t730 = load ptr, ptr %a1 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = call { ptr, i64, i64 } @finch.gen.load(ptr %t730, { ptr, i64, i64 } { ptr @.str.5294, i64 17, i64 0 }, { ptr, i64, i64 } %t731) - %t733 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t732, 0 - %t734 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5295, i64 3, i64 0 }) - %t735 = insertvalue %S.gen.Val %t733, %S.ast.Type %t734, 1 - %t736 = insertvalue %S.gen.Val %t735, i1 true, 2 - call void @finch_str_drop(ptr %a701) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t736 -endif8249: - %t737 = load ptr, ptr %a1 - %t738 = load ptr, ptr %a1 - %t739 = icmp eq ptr %t738, null - br i1 %t739, label %panic8254, label %ok8255 -panic8254: - call void @finch_panic(ptr @.str.5296, i64 4936, ptr @.str.5297) - unreachable -ok8255: - %t740 = getelementptr inbounds %S.gen.Gen, ptr %t738, i32 0, i32 1 - %t741 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t742 = load i64, ptr %t741 - %t743 = load { ptr, i64, i64 }, ptr %t740 - %t744 = extractvalue { ptr, i64, i64 } %t743, 1 - %t745 = icmp uge i64 %t742, %t744 - br i1 %t745, label %range8256, label %inrange8257 -range8256: - call void @finch_panic_index(ptr @.str.5298, i64 4936, i64 %t742, i64 %t744) - unreachable -inrange8257: - %t746 = extractvalue { ptr, i64, i64 } %t743, 0 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i64 %t742 - %t748 = load { ptr, i64, i64 }, ptr %t747 - %t749 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t737, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t749, ptr %a750 - %t751 = load ptr, ptr %a1 - %t752 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5299, i64 31, i64 0 }, ptr %a754 - store { ptr, i64, i64 } %t752, ptr %a755 - call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) - %t756 = load { ptr, i64, i64 }, ptr %a753 - store { ptr, i64, i64 } %t756, ptr %a758 - store { ptr, i64, i64 } { ptr @.str.5300, i64 6, i64 0 }, ptr %a759 - call void @finch_str_concat(ptr %a757, ptr %a758, ptr %a759) - store { ptr, i64, i64 } %t756, ptr %a760 - call void @finch_str_drop(ptr %a760) - %t761 = load { ptr, i64, i64 }, ptr %a757 - %t762 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t761, ptr %a764 - store { ptr, i64, i64 } %t762, ptr %a765 - call void @finch_str_concat(ptr %a763, ptr %a764, ptr %a765) - store { ptr, i64, i64 } %t761, ptr %a766 - call void @finch_str_drop(ptr %a766) - %t767 = load { ptr, i64, i64 }, ptr %a763 - store { ptr, i64, i64 } %t767, ptr %a769 - store { ptr, i64, i64 } { ptr @.str.5301, i64 6, i64 0 }, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - %t773 = load { ptr, i64, i64 }, ptr %a750 - store { ptr, i64, i64 } %t772, ptr %a775 - store { ptr, i64, i64 } %t773, ptr %a776 - call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776) - store { ptr, i64, i64 } %t772, ptr %a777 - call void @finch_str_drop(ptr %a777) - %t778 = load { ptr, i64, i64 }, ptr %a774 - store { ptr, i64, i64 } %t778, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.5302, i64 6, i64 0 }, ptr %a781 - call void @finch_str_concat(ptr %a779, ptr %a780, ptr %a781) - store { ptr, i64, i64 } %t778, ptr %a782 - call void @finch_str_drop(ptr %a782) - %t783 = load { ptr, i64, i64 }, ptr %a779 - %t784 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t785 = load i64, ptr %t784 - call void @finch_str_from_int(ptr %a786, i64 %t785) - %t787 = load { ptr, i64, i64 }, ptr %a786 - store { ptr, i64, i64 } %t783, ptr %a789 - store { ptr, i64, i64 } %t787, ptr %a790 - call void @finch_str_concat(ptr %a788, ptr %a789, ptr %a790) - store { ptr, i64, i64 } %t783, ptr %a791 - call void @finch_str_drop(ptr %a791) - store { ptr, i64, i64 } %t787, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a788 - store { ptr, i64, i64 } %t793, ptr %a795 - store { ptr, i64, i64 } { ptr @.str.5303, i64 1, i64 0 }, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t793, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - call void @finch.gen.emit(ptr %t751, { ptr, i64, i64 } %t798) - store { ptr, i64, i64 } %t798, ptr %a799 - call void @finch_str_drop(ptr %a799) - %t800 = load ptr, ptr %a1 - %t801 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t800, %S.gen.Val %t801) - %t802 = load ptr, ptr %a1 - %t803 = load { ptr, i64, i64 }, ptr %a647 - %t804 = call { ptr, i64, i64 } @finch.gen.load(ptr %t802, { ptr, i64, i64 } { ptr @.str.5304, i64 17, i64 0 }, { ptr, i64, i64 } %t803) - %t805 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t804, 0 - %t806 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5305, i64 3, i64 0 }) - %t807 = insertvalue %S.gen.Val %t805, %S.ast.Type %t806, 1 - %t808 = insertvalue %S.gen.Val %t807, i1 true, 2 - call void @finch_str_drop(ptr %a750) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t808 -endif8239: - %t809 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t809, ptr %a810 - store { ptr, i64, i64 } { ptr @.str.5306, i64 10, i64 0 }, ptr %a811 - %t812 = call i32 @finch_str_eq(ptr %a810, ptr %a811) - %t813 = icmp ne i32 %t812, 0 - br i1 %t813, label %then8258, label %endif8260 -then8258: - %t814 = load ptr, ptr %a1 - %t815 = load %S.ast.Node, ptr %a2 - %t816 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t814, %S.ast.Node %t815, i64 0, i64 2, { ptr, i64, i64 } %t816) - %t817 = load ptr, ptr %a1 - %t818 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t819 = load { ptr, i64, i64 }, ptr %t818 - %t820 = extractvalue { ptr, i64, i64 } %t819, 1 - %t821 = icmp uge i64 0, %t820 - br i1 %t821, label %range8261, label %inrange8262 -range8261: - call void @finch_panic_index(ptr @.str.5307, i64 4943, i64 0, i64 %t820) - unreachable -inrange8262: - %t822 = extractvalue { ptr, i64, i64 } %t819, 0 - %t823 = getelementptr inbounds %S.ast.Node, ptr %t822, i64 0 - %t824 = load %S.ast.Node, ptr %t823 - %t825 = call %S.gen.Val @finch.gen.strArg(ptr %t817, %S.ast.Node %t824, { ptr, i64, i64 } { ptr @.str.5308, i64 13, i64 0 }) - store %S.gen.Val %t825, ptr %a826 - %t827 = load ptr, ptr %a1 - %t828 = icmp eq ptr %t827, null - br i1 %t828, label %panic8263, label %ok8264 -panic8263: - call void @finch_panic(ptr @.str.5309, i64 4944, ptr @.str.5310) - unreachable -ok8264: - %t829 = getelementptr inbounds %S.gen.Gen, ptr %t827, i32 0, i32 11 - %t830 = getelementptr inbounds { ptr, i64, i64 }, ptr %t829, i32 0, i32 1 - %t831 = load i64, ptr %t830 - store i64 %t831, ptr %a832 - %t833 = load ptr, ptr %a1 - %t834 = load %S.gen.Val, ptr %a826 - call void @finch.gen.hold(ptr %t833, %S.gen.Val %t834) - %t835 = load ptr, ptr %a1 - %t836 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t837 = load { ptr, i64, i64 }, ptr %t836 - %t838 = extractvalue { ptr, i64, i64 } %t837, 1 - %t839 = icmp uge i64 1, %t838 - br i1 %t839, label %range8265, label %inrange8266 -range8265: - call void @finch_panic_index(ptr @.str.5311, i64 4946, i64 1, i64 %t838) - unreachable -inrange8266: - %t840 = extractvalue { ptr, i64, i64 } %t837, 0 - %t841 = getelementptr inbounds %S.ast.Node, ptr %t840, i64 1 - %t842 = load %S.ast.Node, ptr %t841 - %t843 = call %S.gen.Val @finch.gen.strArg(ptr %t835, %S.ast.Node %t842, { ptr, i64, i64 } { ptr @.str.5312, i64 8, i64 0 }) - store %S.gen.Val %t843, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load i64, ptr %a832 - call void @finch.gen.heldEnd(ptr %t845, i64 %t846) - %t847 = load ptr, ptr %a1 - %t848 = load %S.gen.Val, ptr %a826 - %t849 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t847, %S.gen.Val %t848) - store { ptr, i64, i64 } %t849, ptr %a850 - %t851 = load ptr, ptr %a1 - %t852 = load %S.gen.Val, ptr %a844 - %t853 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t851, %S.gen.Val %t852) - store { ptr, i64, i64 } %t853, ptr %a854 - %t855 = load ptr, ptr %a1 - %t856 = icmp eq ptr %t855, null - br i1 %t856, label %panic8267, label %ok8268 -panic8267: - call void @finch_panic(ptr @.str.5313, i64 4950, ptr @.str.5314) - unreachable -ok8268: - %t857 = getelementptr inbounds %S.gen.Gen, ptr %t855, i32 0, i32 41 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = load %S.ast.Node, ptr %a2 - %t860 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t859) - store { ptr, i64, i64 } %t858, ptr %a861 - store { ptr, i64, i64 } %t860, ptr %a862 - %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) - %t864 = icmp ne i32 %t863, 0 - store { ptr, i64, i64 } %t860, ptr %a865 - call void @finch_str_drop(ptr %a865) - br i1 %t864, label %then8269, label %endif8271 -then8269: - %t866 = load ptr, ptr %a1 - %t867 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t866, { ptr, i64, i64 } { ptr @.str.5315, i64 17, i64 0 }) - store { ptr, i64, i64 } %t867, ptr %a868 - %t869 = load ptr, ptr %a1 - %t870 = load { ptr, i64, i64 }, ptr %a868 - call void @finch.gen.store(ptr %t869, { ptr, i64, i64 } { ptr @.str.5316, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5317, i64 15, i64 0 }, { ptr, i64, i64 } %t870) - %t871 = load ptr, ptr %a1 - %t872 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5318, i64 35, i64 0 }, ptr %a874 - store { ptr, i64, i64 } %t872, ptr %a875 - call void @finch_str_concat(ptr %a873, ptr %a874, ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a873 - store { ptr, i64, i64 } %t876, ptr %a878 - store { ptr, i64, i64 } { ptr @.str.5319, i64 6, i64 0 }, ptr %a879 - call void @finch_str_concat(ptr %a877, ptr %a878, ptr %a879) - store { ptr, i64, i64 } %t876, ptr %a880 - call void @finch_str_drop(ptr %a880) - %t881 = load { ptr, i64, i64 }, ptr %a877 - %t882 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t881, ptr %a884 - store { ptr, i64, i64 } %t882, ptr %a885 - call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) - store { ptr, i64, i64 } %t881, ptr %a886 - call void @finch_str_drop(ptr %a886) - %t887 = load { ptr, i64, i64 }, ptr %a883 - store { ptr, i64, i64 } %t887, ptr %a889 - store { ptr, i64, i64 } { ptr @.str.5320, i64 6, i64 0 }, ptr %a890 - call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890) - store { ptr, i64, i64 } %t887, ptr %a891 - call void @finch_str_drop(ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a888 - %t893 = load { ptr, i64, i64 }, ptr %a868 - store { ptr, i64, i64 } %t892, ptr %a895 - store { ptr, i64, i64 } %t893, ptr %a896 - call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) - store { ptr, i64, i64 } %t892, ptr %a897 - call void @finch_str_drop(ptr %a897) - %t898 = load { ptr, i64, i64 }, ptr %a894 - store { ptr, i64, i64 } %t898, ptr %a900 - store { ptr, i64, i64 } { ptr @.str.5321, i64 1, i64 0 }, ptr %a901 - call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) - store { ptr, i64, i64 } %t898, ptr %a902 - call void @finch_str_drop(ptr %a902) - %t903 = load { ptr, i64, i64 }, ptr %a899 - %t904 = call { ptr, i64, i64 } @finch.gen.op(ptr %t871, { ptr, i64, i64 } %t903) - store { ptr, i64, i64 } %t903, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t904, ptr %a906 - %t907 = load ptr, ptr %a1 - %t908 = load { ptr, i64, i64 }, ptr %a906 - store { ptr, i64, i64 } { ptr @.str.5322, i64 12, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t908, ptr %a911 - call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911) - %t912 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } %t912, ptr %a914 - store { ptr, i64, i64 } { ptr @.str.5323, i64 3, i64 0 }, ptr %a915 - call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) - store { ptr, i64, i64 } %t912, ptr %a916 - call void @finch_str_drop(ptr %a916) - %t917 = load { ptr, i64, i64 }, ptr %a913 - %t918 = call { ptr, i64, i64 } @finch.gen.op(ptr %t907, { ptr, i64, i64 } %t917) - store { ptr, i64, i64 } %t917, ptr %a919 - call void @finch_str_drop(ptr %a919) - %t920 = load ptr, ptr %a1 - %t921 = icmp eq ptr %t920, null - br i1 %t921, label %panic8272, label %ok8273 -panic8272: - call void @finch_panic(ptr @.str.5324, i64 4954, ptr @.str.5325) - unreachable -ok8273: - %t922 = getelementptr inbounds %S.gen.Gen, ptr %t920, i32 0, i32 42 - %t923 = load { ptr, i64, i64 }, ptr %t922 - store { ptr, i64, i64 } %t918, ptr %t922 - store { ptr, i64, i64 } %t923, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load ptr, ptr %a1 - %t926 = load { ptr, i64, i64 }, ptr %a868 - %t927 = call { ptr, i64, i64 } @finch.gen.load(ptr %t925, { ptr, i64, i64 } { ptr @.str.5326, i64 17, i64 0 }, { ptr, i64, i64 } %t926) - %t928 = load ptr, ptr %a1 - %t929 = icmp eq ptr %t928, null - br i1 %t929, label %panic8274, label %ok8275 -panic8274: - call void @finch_panic(ptr @.str.5327, i64 4955, ptr @.str.5328) - unreachable -ok8275: - %t930 = getelementptr inbounds %S.gen.Gen, ptr %t928, i32 0, i32 43 - %t931 = load { ptr, i64, i64 }, ptr %t930 - store { ptr, i64, i64 } %t927, ptr %t930 - store { ptr, i64, i64 } %t931, ptr %a932 - call void @finch_str_drop(ptr %a932) - %t933 = load ptr, ptr %a1 - %t934 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t933, %S.gen.Val %t934) - %t935 = load ptr, ptr %a1 - %t936 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t935, %S.gen.Val %t936) - %t937 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5329, i64 4, i64 0 }) - %t938 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t937, 1 - call void @finch_str_drop(ptr %a906) - call void @finch_str_drop(ptr %a868) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t938 -endif8271: - %t939 = load ptr, ptr %a1 - %t940 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5330, i64 31, i64 0 }, ptr %a942 - store { ptr, i64, i64 } %t940, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a941 - store { ptr, i64, i64 } %t944, ptr %a946 - store { ptr, i64, i64 } { ptr @.str.5331, i64 6, i64 0 }, ptr %a947 - call void @finch_str_concat(ptr %a945, ptr %a946, ptr %a947) - store { ptr, i64, i64 } %t944, ptr %a948 - call void @finch_str_drop(ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a945 - %t950 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t949, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t949, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - store { ptr, i64, i64 } %t955, ptr %a957 - store { ptr, i64, i64 } { ptr @.str.5332, i64 1, i64 0 }, ptr %a958 - call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) - store { ptr, i64, i64 } %t955, ptr %a959 - call void @finch_str_drop(ptr %a959) - %t960 = load { ptr, i64, i64 }, ptr %a956 - %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t939, { ptr, i64, i64 } %t960) - store { ptr, i64, i64 } %t960, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t961, ptr %a963 - %t964 = load ptr, ptr %a1 - %t965 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t964, %S.gen.Val %t965) - %t966 = load ptr, ptr %a1 - %t967 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t966, %S.gen.Val %t967) - %t968 = load ptr, ptr %a1 - %t969 = load { ptr, i64, i64 }, ptr %a963 - store { ptr, i64, i64 } { ptr @.str.5333, i64 12, i64 0 }, ptr %a971 - store { ptr, i64, i64 } %t969, ptr %a972 - call void @finch_str_concat(ptr %a970, ptr %a971, ptr %a972) - %t973 = load { ptr, i64, i64 }, ptr %a970 - store { ptr, i64, i64 } %t973, ptr %a975 - store { ptr, i64, i64 } { ptr @.str.5334, i64 3, i64 0 }, ptr %a976 - call void @finch_str_concat(ptr %a974, ptr %a975, ptr %a976) - store { ptr, i64, i64 } %t973, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a974 - %t979 = call { ptr, i64, i64 } @finch.gen.op(ptr %t968, { ptr, i64, i64 } %t978) - store { ptr, i64, i64 } %t978, ptr %a980 - call void @finch_str_drop(ptr %a980) - %t981 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t979, 0 - %t982 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5335, i64 4, i64 0 }) - %t983 = insertvalue %S.gen.Val %t981, %S.ast.Type %t982, 1 - call void @finch_str_drop(ptr %a963) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t983 -endif8260: - %t984 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t984, ptr %a985 - store { ptr, i64, i64 } { ptr @.str.5336, i64 11, i64 0 }, ptr %a986 - %t987 = call i32 @finch_str_eq(ptr %a985, ptr %a986) - %t988 = icmp ne i32 %t987, 0 - br i1 %t988, label %then8276, label %endif8278 -then8276: - %t989 = load ptr, ptr %a1 - %t990 = load %S.ast.Node, ptr %a2 - %t991 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t989, %S.ast.Node %t990, i64 0, i64 1, { ptr, i64, i64 } %t991) - %t992 = load ptr, ptr %a1 - %t993 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = extractvalue { ptr, i64, i64 } %t994, 1 - %t996 = icmp uge i64 0, %t995 - br i1 %t996, label %range8279, label %inrange8280 -range8279: - call void @finch_panic_index(ptr @.str.5337, i64 4967, i64 0, i64 %t995) - unreachable -inrange8280: - %t997 = extractvalue { ptr, i64, i64 } %t994, 0 - %t998 = getelementptr inbounds %S.ast.Node, ptr %t997, i64 0 - %t999 = load %S.ast.Node, ptr %t998 - %t1000 = call %S.gen.Val @finch.gen.strArg(ptr %t992, %S.ast.Node %t999, { ptr, i64, i64 } { ptr @.str.5338, i64 13, i64 0 }) - store %S.gen.Val %t1000, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1002) - store { ptr, i64, i64 } %t1003, ptr %a1004 - %t1005 = load ptr, ptr %a1 - %t1006 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5339, i64 30, i64 0 }, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - %t1010 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1010, ptr %a1012 - store { ptr, i64, i64 } { ptr @.str.5340, i64 6, i64 0 }, ptr %a1013 - call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013) - store { ptr, i64, i64 } %t1010, ptr %a1014 - call void @finch_str_drop(ptr %a1014) - %t1015 = load { ptr, i64, i64 }, ptr %a1011 - %t1016 = load ptr, ptr %a1 - %t1017 = load %S.gen.Val, ptr %a1001 - %t1018 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1016, %S.gen.Val %t1017) - store { ptr, i64, i64 } %t1015, ptr %a1020 - store { ptr, i64, i64 } %t1018, ptr %a1021 - call void @finch_str_concat(ptr %a1019, ptr %a1020, ptr %a1021) - store { ptr, i64, i64 } %t1015, ptr %a1022 - call void @finch_str_drop(ptr %a1022) - store { ptr, i64, i64 } %t1018, ptr %a1023 - call void @finch_str_drop(ptr %a1023) - %t1024 = load { ptr, i64, i64 }, ptr %a1019 - store { ptr, i64, i64 } %t1024, ptr %a1026 - store { ptr, i64, i64 } { ptr @.str.5341, i64 1, i64 0 }, ptr %a1027 - call void @finch_str_concat(ptr %a1025, ptr %a1026, ptr %a1027) - store { ptr, i64, i64 } %t1024, ptr %a1028 - call void @finch_str_drop(ptr %a1028) - %t1029 = load { ptr, i64, i64 }, ptr %a1025 - call void @finch.gen.emit(ptr %t1005, { ptr, i64, i64 } %t1029) - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch_str_drop(ptr %a1030) - %t1031 = load ptr, ptr %a1 - %t1032 = icmp eq ptr %t1031, null - br i1 %t1032, label %panic8281, label %ok8282 -panic8281: - call void @finch_panic(ptr @.str.5342, i64 4970, ptr @.str.5343) - unreachable -ok8282: - %t1033 = getelementptr inbounds %S.gen.Gen, ptr %t1031, i32 0, i32 41 - %t1034 = load { ptr, i64, i64 }, ptr %t1033 - %t1035 = load %S.ast.Node, ptr %a2 - %t1036 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t1035) - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1036, ptr %a1038 - %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) - %t1040 = icmp ne i32 %t1039, 0 - store { ptr, i64, i64 } %t1036, ptr %a1041 - call void @finch_str_drop(ptr %a1041) - br i1 %t1040, label %then8283, label %endif8285 -then8283: - %t1042 = load ptr, ptr %a1 - %t1043 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1042, { ptr, i64, i64 } { ptr @.str.5344, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1043, ptr %a1044 - %t1045 = load ptr, ptr %a1 - %t1046 = load { ptr, i64, i64 }, ptr %a1044 - call void @finch.gen.store(ptr %t1045, { ptr, i64, i64 } { ptr @.str.5345, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5346, i64 15, i64 0 }, { ptr, i64, i64 } %t1046) - %t1047 = load ptr, ptr %a1 - %t1048 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5347, i64 36, i64 0 }, ptr %a1050 - store { ptr, i64, i64 } %t1048, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1049 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5348, i64 6, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = load { ptr, i64, i64 }, ptr %a1044 - store { ptr, i64, i64 } %t1057, ptr %a1060 - store { ptr, i64, i64 } %t1058, ptr %a1061 - call void @finch_str_concat(ptr %a1059, ptr %a1060, ptr %a1061) - store { ptr, i64, i64 } %t1057, ptr %a1062 - call void @finch_str_drop(ptr %a1062) - %t1063 = load { ptr, i64, i64 }, ptr %a1059 - store { ptr, i64, i64 } %t1063, ptr %a1065 - store { ptr, i64, i64 } { ptr @.str.5349, i64 1, i64 0 }, ptr %a1066 - call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) - store { ptr, i64, i64 } %t1063, ptr %a1067 - call void @finch_str_drop(ptr %a1067) - %t1068 = load { ptr, i64, i64 }, ptr %a1064 - %t1069 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1068) - store { ptr, i64, i64 } %t1068, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - store { ptr, i64, i64 } %t1069, ptr %a1071 - %t1072 = load ptr, ptr %a1 - %t1073 = load { ptr, i64, i64 }, ptr %a1071 - store { ptr, i64, i64 } { ptr @.str.5350, i64 12, i64 0 }, ptr %a1075 - store { ptr, i64, i64 } %t1073, ptr %a1076 - call void @finch_str_concat(ptr %a1074, ptr %a1075, ptr %a1076) - %t1077 = load { ptr, i64, i64 }, ptr %a1074 - store { ptr, i64, i64 } %t1077, ptr %a1079 - store { ptr, i64, i64 } { ptr @.str.5351, i64 3, i64 0 }, ptr %a1080 - call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) - store { ptr, i64, i64 } %t1077, ptr %a1081 - call void @finch_str_drop(ptr %a1081) - %t1082 = load { ptr, i64, i64 }, ptr %a1078 - %t1083 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1072, { ptr, i64, i64 } %t1082) - store { ptr, i64, i64 } %t1082, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - %t1085 = load ptr, ptr %a1 - %t1086 = icmp eq ptr %t1085, null - br i1 %t1086, label %panic8286, label %ok8287 -panic8286: - call void @finch_panic(ptr @.str.5352, i64 4974, ptr @.str.5353) - unreachable -ok8287: - %t1087 = getelementptr inbounds %S.gen.Gen, ptr %t1085, i32 0, i32 42 - %t1088 = load { ptr, i64, i64 }, ptr %t1087 - store { ptr, i64, i64 } %t1083, ptr %t1087 - store { ptr, i64, i64 } %t1088, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load ptr, ptr %a1 - %t1091 = load { ptr, i64, i64 }, ptr %a1044 - %t1092 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1090, { ptr, i64, i64 } { ptr @.str.5354, i64 17, i64 0 }, { ptr, i64, i64 } %t1091) - %t1093 = load ptr, ptr %a1 - %t1094 = icmp eq ptr %t1093, null - br i1 %t1094, label %panic8288, label %ok8289 -panic8288: - call void @finch_panic(ptr @.str.5355, i64 4975, ptr @.str.5356) - unreachable -ok8289: - %t1095 = getelementptr inbounds %S.gen.Gen, ptr %t1093, i32 0, i32 43 - %t1096 = load { ptr, i64, i64 }, ptr %t1095 - store { ptr, i64, i64 } %t1092, ptr %t1095 - store { ptr, i64, i64 } %t1096, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load ptr, ptr %a1 - %t1099 = load { ptr, i64, i64 }, ptr %a1004 - %t1100 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5357, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1098, { ptr, i64, i64 } %t1099, %S.ast.Type %t1100) - store %S.ast.Type %t1100, ptr %a1101 - call void @finch.drop.S_ast_Type(ptr %a1101) - %t1102 = load ptr, ptr %a1 - %t1103 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1102, %S.gen.Val %t1103) - %t1104 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5358, i64 4, i64 0 }) - %t1105 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1104, 1 - call void @finch_str_drop(ptr %a1071) - call void @finch_str_drop(ptr %a1044) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1105 -endif8285: - %t1106 = load ptr, ptr %a1 - %t1107 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5359, i64 32, i64 0 }, ptr %a1109 - store { ptr, i64, i64 } %t1107, ptr %a1110 - call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110) - %t1111 = load { ptr, i64, i64 }, ptr %a1108 - store { ptr, i64, i64 } %t1111, ptr %a1113 - store { ptr, i64, i64 } { ptr @.str.5360, i64 1, i64 0 }, ptr %a1114 - call void @finch_str_concat(ptr %a1112, ptr %a1113, ptr %a1114) - store { ptr, i64, i64 } %t1111, ptr %a1115 - call void @finch_str_drop(ptr %a1115) - %t1116 = load { ptr, i64, i64 }, ptr %a1112 - %t1117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1106, { ptr, i64, i64 } %t1116) - store { ptr, i64, i64 } %t1116, ptr %a1118 - call void @finch_str_drop(ptr %a1118) - store { ptr, i64, i64 } %t1117, ptr %a1119 - %t1120 = load ptr, ptr %a1 - %t1121 = load { ptr, i64, i64 }, ptr %a1004 - %t1122 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5361, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1120, { ptr, i64, i64 } %t1121, %S.ast.Type %t1122) - store %S.ast.Type %t1122, ptr %a1123 - call void @finch.drop.S_ast_Type(ptr %a1123) - %t1124 = load ptr, ptr %a1 - %t1125 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1124, %S.gen.Val %t1125) - %t1126 = load ptr, ptr %a1 - %t1127 = load { ptr, i64, i64 }, ptr %a1119 - store { ptr, i64, i64 } { ptr @.str.5362, i64 12, i64 0 }, ptr %a1129 - store { ptr, i64, i64 } %t1127, ptr %a1130 - call void @finch_str_concat(ptr %a1128, ptr %a1129, ptr %a1130) - %t1131 = load { ptr, i64, i64 }, ptr %a1128 - store { ptr, i64, i64 } %t1131, ptr %a1133 - store { ptr, i64, i64 } { ptr @.str.5363, i64 3, i64 0 }, ptr %a1134 - call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134) - store { ptr, i64, i64 } %t1131, ptr %a1135 - call void @finch_str_drop(ptr %a1135) - %t1136 = load { ptr, i64, i64 }, ptr %a1132 - %t1137 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1136) - store { ptr, i64, i64 } %t1136, ptr %a1138 - call void @finch_str_drop(ptr %a1138) - %t1139 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1137, 0 - %t1140 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5364, i64 4, i64 0 }) - %t1141 = insertvalue %S.gen.Val %t1139, %S.ast.Type %t1140, 1 - call void @finch_str_drop(ptr %a1119) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1141 -endif8278: - %t1142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1142, ptr %a1143 - store { ptr, i64, i64 } { ptr @.str.5365, i64 5, i64 0 }, ptr %a1144 - %t1145 = call i32 @finch_str_eq(ptr %a1143, ptr %a1144) - %t1146 = icmp ne i32 %t1145, 0 - br i1 %t1146, label %then8290, label %endif8292 -then8290: - %t1147 = load ptr, ptr %a1 - %t1148 = load %S.ast.Node, ptr %a2 - %t1149 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1147, %S.ast.Node %t1148, i64 0, i64 1, { ptr, i64, i64 } %t1149) - %t1150 = load ptr, ptr %a1 - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 0, %t1153 - br i1 %t1154, label %range8293, label %inrange8294 -range8293: - call void @finch_panic_index(ptr @.str.5366, i64 4987, i64 0, i64 %t1153) - unreachable -inrange8294: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 0 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.strArg(ptr %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5367, i64 11, i64 0 }) - store %S.gen.Val %t1158, ptr %a1159 - %t1160 = load ptr, ptr %a1 - %t1161 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1160) - store { ptr, i64, i64 } %t1161, ptr %a1162 - %t1163 = load ptr, ptr %a1 - %t1164 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5368, i64 30, i64 0 }, ptr %a1166 - store { ptr, i64, i64 } %t1164, ptr %a1167 - call void @finch_str_concat(ptr %a1165, ptr %a1166, ptr %a1167) - %t1168 = load { ptr, i64, i64 }, ptr %a1165 - store { ptr, i64, i64 } %t1168, ptr %a1170 - store { ptr, i64, i64 } { ptr @.str.5369, i64 6, i64 0 }, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1168, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - %t1174 = load ptr, ptr %a1 - %t1175 = load %S.gen.Val, ptr %a1159 - %t1176 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1174, %S.gen.Val %t1175) - store { ptr, i64, i64 } %t1173, ptr %a1178 - store { ptr, i64, i64 } %t1176, ptr %a1179 - call void @finch_str_concat(ptr %a1177, ptr %a1178, ptr %a1179) - store { ptr, i64, i64 } %t1173, ptr %a1180 - call void @finch_str_drop(ptr %a1180) - store { ptr, i64, i64 } %t1176, ptr %a1181 - call void @finch_str_drop(ptr %a1181) - %t1182 = load { ptr, i64, i64 }, ptr %a1177 - store { ptr, i64, i64 } %t1182, ptr %a1184 - store { ptr, i64, i64 } { ptr @.str.5370, i64 1, i64 0 }, ptr %a1185 - call void @finch_str_concat(ptr %a1183, ptr %a1184, ptr %a1185) - store { ptr, i64, i64 } %t1182, ptr %a1186 - call void @finch_str_drop(ptr %a1186) - %t1187 = load { ptr, i64, i64 }, ptr %a1183 - call void @finch.gen.emit(ptr %t1163, { ptr, i64, i64 } %t1187) - store { ptr, i64, i64 } %t1187, ptr %a1188 - call void @finch_str_drop(ptr %a1188) - %t1189 = load ptr, ptr %a1 - %t1190 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5371, i64 26, i64 0 }, ptr %a1192 - store { ptr, i64, i64 } %t1190, ptr %a1193 - call void @finch_str_concat(ptr %a1191, ptr %a1192, ptr %a1193) - %t1194 = load { ptr, i64, i64 }, ptr %a1191 - store { ptr, i64, i64 } %t1194, ptr %a1196 - store { ptr, i64, i64 } { ptr @.str.5372, i64 1, i64 0 }, ptr %a1197 - call void @finch_str_concat(ptr %a1195, ptr %a1196, ptr %a1197) - store { ptr, i64, i64 } %t1194, ptr %a1198 - call void @finch_str_drop(ptr %a1198) - %t1199 = load { ptr, i64, i64 }, ptr %a1195 - %t1200 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1189, { ptr, i64, i64 } %t1199) - store { ptr, i64, i64 } %t1199, ptr %a1201 - call void @finch_str_drop(ptr %a1201) - store { ptr, i64, i64 } %t1200, ptr %a1202 - %t1203 = load ptr, ptr %a1 - %t1204 = load { ptr, i64, i64 }, ptr %a1162 - %t1205 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5373, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1203, { ptr, i64, i64 } %t1204, %S.ast.Type %t1205) - store %S.ast.Type %t1205, ptr %a1206 - call void @finch.drop.S_ast_Type(ptr %a1206) - %t1207 = load ptr, ptr %a1 - %t1208 = load %S.gen.Val, ptr %a1159 - call void @finch.gen.release(ptr %t1207, %S.gen.Val %t1208) - %t1209 = load { ptr, i64, i64 }, ptr %a1202 - store { ptr, i64, i64 } %t1209, ptr %a1210 - call void @finch_str_copy(ptr %a1211, ptr %a1210) - %t1212 = load { ptr, i64, i64 }, ptr %a1211 - %t1213 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1212, 0 - %t1214 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5374, i64 3, i64 0 }) - %t1215 = insertvalue %S.gen.Val %t1213, %S.ast.Type %t1214, 1 - call void @finch_str_drop(ptr %a1202) - call void @finch_str_drop(ptr %a1162) - call void @finch.drop.S_gen_Val(ptr %a1159) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1215 -endif8292: - %t1216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1216, ptr %a1217 - store { ptr, i64, i64 } { ptr @.str.5375, i64 4, i64 0 }, ptr %a1218 - %t1219 = call i32 @finch_str_eq(ptr %a1217, ptr %a1218) - %t1220 = icmp ne i32 %t1219, 0 - br i1 %t1220, label %then8295, label %endif8297 -then8295: - %t1221 = load ptr, ptr %a1 - %t1222 = load %S.ast.Node, ptr %a2 - %t1223 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1221, %S.ast.Node %t1222, i64 0, i64 1, { ptr, i64, i64 } %t1223) - %t1224 = load ptr, ptr %a1 - %t1225 = load ptr, ptr %a1 - %t1226 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1227 = load { ptr, i64, i64 }, ptr %t1226 - %t1228 = extractvalue { ptr, i64, i64 } %t1227, 1 - %t1229 = icmp uge i64 0, %t1228 - br i1 %t1229, label %range8298, label %inrange8299 -range8298: - call void @finch_panic_index(ptr @.str.5376, i64 4997, i64 0, i64 %t1228) - unreachable -inrange8299: - %t1230 = extractvalue { ptr, i64, i64 } %t1227, 0 - %t1231 = getelementptr inbounds %S.ast.Node, ptr %t1230, i64 0 - %t1232 = load %S.ast.Node, ptr %t1231 - %t1233 = call %S.gen.Val @finch.gen.expr(ptr %t1225, %S.ast.Node %t1232) - %t1234 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5377, i64 3, i64 0 }) - %t1235 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1236 = load { ptr, i64, i64 }, ptr %t1235 - %t1237 = extractvalue { ptr, i64, i64 } %t1236, 1 - %t1238 = icmp uge i64 0, %t1237 - br i1 %t1238, label %range8300, label %inrange8301 -range8300: - call void @finch_panic_index(ptr @.str.5378, i64 4997, i64 0, i64 %t1237) - unreachable -inrange8301: - %t1239 = extractvalue { ptr, i64, i64 } %t1236, 0 - %t1240 = getelementptr inbounds %S.ast.Node, ptr %t1239, i64 0 - %t1241 = load %S.ast.Node, ptr %t1240 - %t1242 = call %S.gen.Val @finch.gen.coerce(ptr %t1224, %S.gen.Val %t1233, %S.ast.Type %t1234, %S.ast.Node %t1241, { ptr, i64, i64 } { ptr @.str.5379, i64 13, i64 0 }) - store %S.gen.Val %t1233, ptr %a1243 - call void @finch.drop.S_gen_Val(ptr %a1243) - store %S.ast.Type %t1234, ptr %a1244 - call void @finch.drop.S_ast_Type(ptr %a1244) - store %S.gen.Val %t1242, ptr %a1245 - %t1246 = load ptr, ptr %a1 - %t1247 = getelementptr inbounds %S.gen.Val, ptr %a1245, i32 0, i32 0 - %t1248 = load { ptr, i64, i64 }, ptr %t1247 - store { ptr, i64, i64 } { ptr @.str.5380, i64 10, i64 0 }, ptr %a1250 - store { ptr, i64, i64 } %t1248, ptr %a1251 - call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251) - %t1252 = load { ptr, i64, i64 }, ptr %a1249 - store { ptr, i64, i64 } %t1252, ptr %a1254 - store { ptr, i64, i64 } { ptr @.str.5381, i64 7, i64 0 }, ptr %a1255 - call void @finch_str_concat(ptr %a1253, ptr %a1254, ptr %a1255) - store { ptr, i64, i64 } %t1252, ptr %a1256 - call void @finch_str_drop(ptr %a1256) - %t1257 = load { ptr, i64, i64 }, ptr %a1253 - %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1246, { ptr, i64, i64 } %t1257) - store { ptr, i64, i64 } %t1257, ptr %a1259 - call void @finch_str_drop(ptr %a1259) - store { ptr, i64, i64 } %t1258, ptr %a1260 - %t1261 = load ptr, ptr %a1 - %t1262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1261, { ptr, i64, i64 } { ptr @.str.5382, i64 26, i64 0 }) - store { ptr, i64, i64 } %t1262, ptr %a1263 - %t1264 = load ptr, ptr %a1 - %t1265 = load { ptr, i64, i64 }, ptr %a1260 - store { ptr, i64, i64 } { ptr @.str.5383, i64 20, i64 0 }, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - %t1269 = load { ptr, i64, i64 }, ptr %a1266 - store { ptr, i64, i64 } %t1269, ptr %a1271 - store { ptr, i64, i64 } { ptr @.str.5384, i64 1, i64 0 }, ptr %a1272 - call void @finch_str_concat(ptr %a1270, ptr %a1271, ptr %a1272) - store { ptr, i64, i64 } %t1269, ptr %a1273 - call void @finch_str_drop(ptr %a1273) - %t1274 = load { ptr, i64, i64 }, ptr %a1270 - call void @finch.gen.emit(ptr %t1264, { ptr, i64, i64 } %t1274) - store { ptr, i64, i64 } %t1274, ptr %a1275 - call void @finch_str_drop(ptr %a1275) - %t1276 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5385, i64 4, i64 0 }) - %t1277 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1276, 1 - call void @finch_str_drop(ptr %a1263) - call void @finch_str_drop(ptr %a1260) - call void @finch.drop.S_gen_Val(ptr %a1245) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1277 -endif8297: - %t1278 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1278, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5386, i64 5, i64 0 }, ptr %a1280 - %t1281 = call i32 @finch_str_eq(ptr %a1279, ptr %a1280) - %t1282 = icmp ne i32 %t1281, 0 - br i1 %t1282, label %then8302, label %endif8304 -then8302: - %t1283 = load ptr, ptr %a1 - %t1284 = call %S.gen.Val @finch.gen.strConst(ptr %t1283, { ptr, i64, i64 } { ptr @.str.5387, i64 0, i64 0 }) - store %S.gen.Val %t1284, ptr %a1285 - %t1286 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1286, i32 0, i32 1 - %t1288 = load i64, ptr %t1287 - %t1289 = icmp sgt i64 %t1288, 0 - br i1 %t1289, label %then8305, label %endif8307 -then8305: - %t1290 = load ptr, ptr %a1 - %t1291 = load %S.ast.Node, ptr %a2 - %t1292 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1290, %S.ast.Node %t1291, i64 0, i64 1, { ptr, i64, i64 } %t1292) - %t1293 = load ptr, ptr %a1 - %t1294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1295 = load { ptr, i64, i64 }, ptr %t1294 - %t1296 = extractvalue { ptr, i64, i64 } %t1295, 1 - %t1297 = icmp uge i64 0, %t1296 - br i1 %t1297, label %range8308, label %inrange8309 -range8308: - call void @finch_panic_index(ptr @.str.5388, i64 5007, i64 0, i64 %t1296) - unreachable -inrange8309: - %t1298 = extractvalue { ptr, i64, i64 } %t1295, 0 - %t1299 = getelementptr inbounds %S.ast.Node, ptr %t1298, i64 0 - %t1300 = load %S.ast.Node, ptr %t1299 - %t1301 = call %S.gen.Val @finch.gen.strArg(ptr %t1293, %S.ast.Node %t1300, { ptr, i64, i64 } { ptr @.str.5389, i64 12, i64 0 }) - %t1302 = load %S.gen.Val, ptr %a1285 - store %S.gen.Val %t1301, ptr %a1285 - store %S.gen.Val %t1302, ptr %a1303 - call void @finch.drop.S_gen_Val(ptr %a1303) - br label %endif8307 -endif8307: - %t1304 = load ptr, ptr %a1 - %t1305 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1304) - store { ptr, i64, i64 } %t1305, ptr %a1306 - %t1307 = load ptr, ptr %a1 - %t1308 = load { ptr, i64, i64 }, ptr %a1306 - store { ptr, i64, i64 } { ptr @.str.5390, i64 27, i64 0 }, ptr %a1310 - store { ptr, i64, i64 } %t1308, ptr %a1311 - call void @finch_str_concat(ptr %a1309, ptr %a1310, ptr %a1311) - %t1312 = load { ptr, i64, i64 }, ptr %a1309 - store { ptr, i64, i64 } %t1312, ptr %a1314 - store { ptr, i64, i64 } { ptr @.str.5391, i64 6, i64 0 }, ptr %a1315 - call void @finch_str_concat(ptr %a1313, ptr %a1314, ptr %a1315) - store { ptr, i64, i64 } %t1312, ptr %a1316 - call void @finch_str_drop(ptr %a1316) - %t1317 = load { ptr, i64, i64 }, ptr %a1313 - %t1318 = load ptr, ptr %a1 - %t1319 = load %S.gen.Val, ptr %a1285 - %t1320 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1318, %S.gen.Val %t1319) - store { ptr, i64, i64 } %t1317, ptr %a1322 - store { ptr, i64, i64 } %t1320, ptr %a1323 - call void @finch_str_concat(ptr %a1321, ptr %a1322, ptr %a1323) - store { ptr, i64, i64 } %t1317, ptr %a1324 - call void @finch_str_drop(ptr %a1324) - store { ptr, i64, i64 } %t1320, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1321 - store { ptr, i64, i64 } %t1326, ptr %a1328 - store { ptr, i64, i64 } { ptr @.str.5392, i64 1, i64 0 }, ptr %a1329 - call void @finch_str_concat(ptr %a1327, ptr %a1328, ptr %a1329) - store { ptr, i64, i64 } %t1326, ptr %a1330 - call void @finch_str_drop(ptr %a1330) - %t1331 = load { ptr, i64, i64 }, ptr %a1327 - call void @finch.gen.emit(ptr %t1307, { ptr, i64, i64 } %t1331) - store { ptr, i64, i64 } %t1331, ptr %a1332 - call void @finch_str_drop(ptr %a1332) - %t1333 = load ptr, ptr %a1 - %t1334 = load %S.gen.Val, ptr %a1285 - call void @finch.gen.release(ptr %t1333, %S.gen.Val %t1334) - %t1335 = load ptr, ptr %a1 - %t1336 = load { ptr, i64, i64 }, ptr %a1306 - %t1337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1335, { ptr, i64, i64 } { ptr @.str.5393, i64 17, i64 0 }, { ptr, i64, i64 } %t1336) - %t1338 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1337, 0 - %t1339 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5394, i64 3, i64 0 }) - %t1340 = insertvalue %S.gen.Val %t1338, %S.ast.Type %t1339, 1 - %t1341 = insertvalue %S.gen.Val %t1340, i1 true, 2 - call void @finch_str_drop(ptr %a1306) - call void @finch.drop.S_gen_Val(ptr %a1285) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1341 -endif8304: - %t1342 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1342, ptr %a1343 - store { ptr, i64, i64 } { ptr @.str.5395, i64 3, i64 0 }, ptr %a1344 - %t1345 = call i32 @finch_str_eq(ptr %a1343, ptr %a1344) - %t1346 = icmp ne i32 %t1345, 0 - br i1 %t1346, label %then8310, label %endif8312 -then8310: - %t1347 = load ptr, ptr %a1 - %t1348 = load %S.ast.Node, ptr %a2 - %t1349 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1347, %S.ast.Node %t1348, i64 0, i64 1, { ptr, i64, i64 } %t1349) - %t1350 = load ptr, ptr %a1 - %t1351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1352 = load { ptr, i64, i64 }, ptr %t1351 - %t1353 = extractvalue { ptr, i64, i64 } %t1352, 1 - %t1354 = icmp uge i64 0, %t1353 - br i1 %t1354, label %range8313, label %inrange8314 -range8313: - call void @finch_panic_index(ptr @.str.5396, i64 5016, i64 0, i64 %t1353) - unreachable -inrange8314: - %t1355 = extractvalue { ptr, i64, i64 } %t1352, 0 - %t1356 = getelementptr inbounds %S.ast.Node, ptr %t1355, i64 0 - %t1357 = load %S.ast.Node, ptr %t1356 - %t1358 = call %S.gen.Val @finch.gen.expr(ptr %t1350, %S.ast.Node %t1357) - store %S.gen.Val %t1358, ptr %a1359 - %t1360 = load ptr, ptr %a1 - %t1361 = load ptr, ptr %a1 - %t1362 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1363 = load %S.ast.Type, ptr %t1362 - %t1364 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1361, %S.ast.Type %t1363) - store { ptr, i64, i64 } { ptr @.str.5397, i64 26, i64 0 }, ptr %a1366 - store { ptr, i64, i64 } %t1364, ptr %a1367 - call void @finch_str_concat(ptr %a1365, ptr %a1366, ptr %a1367) - store { ptr, i64, i64 } %t1364, ptr %a1368 - call void @finch_str_drop(ptr %a1368) - %t1369 = load { ptr, i64, i64 }, ptr %a1365 - store { ptr, i64, i64 } %t1369, ptr %a1371 - store { ptr, i64, i64 } { ptr @.str.5398, i64 1, i64 0 }, ptr %a1372 - call void @finch_str_concat(ptr %a1370, ptr %a1371, ptr %a1372) - store { ptr, i64, i64 } %t1369, ptr %a1373 - call void @finch_str_drop(ptr %a1373) - %t1374 = load { ptr, i64, i64 }, ptr %a1370 - %t1375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1360, { ptr, i64, i64 } %t1374) - store { ptr, i64, i64 } %t1374, ptr %a1376 - call void @finch_str_drop(ptr %a1376) - store { ptr, i64, i64 } %t1375, ptr %a1377 - %t1378 = load ptr, ptr %a1 - %t1379 = load ptr, ptr %a1 - %t1380 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1381 = load %S.ast.Type, ptr %t1380 - %t1382 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1379, %S.ast.Type %t1381) - %t1383 = load ptr, ptr %a1 - %t1384 = load %S.gen.Val, ptr %a1359 - %t1385 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1383, %S.gen.Val %t1384) - %t1386 = load { ptr, i64, i64 }, ptr %a1377 - call void @finch.gen.store(ptr %t1378, { ptr, i64, i64 } %t1382, { ptr, i64, i64 } %t1385, { ptr, i64, i64 } %t1386) - store { ptr, i64, i64 } %t1382, ptr %a1387 - call void @finch_str_drop(ptr %a1387) - store { ptr, i64, i64 } %t1385, ptr %a1388 - call void @finch_str_drop(ptr %a1388) - %t1389 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1389, ptr %a1390 - call void @finch_str_copy(ptr %a1391, ptr %a1390) - %t1392 = load { ptr, i64, i64 }, ptr %a1391 - %t1393 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1392, 0 - %t1394 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1395 = load %S.ast.Type, ptr %t1394 - %t1396 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1395) - %t1397 = insertvalue %S.gen.Val %t1393, %S.ast.Type %t1396, 1 - call void @finch_str_drop(ptr %a1377) - call void @finch.drop.S_gen_Val(ptr %a1359) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1397 -endif8312: - %t1398 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1398, ptr %a1399 - store { ptr, i64, i64 } { ptr @.str.5399, i64 4, i64 0 }, ptr %a1400 - %t1401 = call i32 @finch_str_eq(ptr %a1399, ptr %a1400) - %t1402 = icmp ne i32 %t1401, 0 - br i1 %t1402, label %then8315, label %endif8317 -then8315: - %t1403 = load ptr, ptr %a1 - %t1404 = load %S.ast.Node, ptr %a2 - %t1405 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1403, %S.ast.Node %t1404, i64 0, i64 1, { ptr, i64, i64 } %t1405) - %t1406 = load ptr, ptr %a1 - %t1407 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1408 = load { ptr, i64, i64 }, ptr %t1407 - %t1409 = extractvalue { ptr, i64, i64 } %t1408, 1 - %t1410 = icmp uge i64 0, %t1409 - br i1 %t1410, label %range8318, label %inrange8319 -range8318: - call void @finch_panic_index(ptr @.str.5400, i64 5023, i64 0, i64 %t1409) - unreachable -inrange8319: - %t1411 = extractvalue { ptr, i64, i64 } %t1408, 0 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %t1411, i64 0 - %t1413 = load %S.ast.Node, ptr %t1412 - %t1414 = call %S.gen.Val @finch.gen.expr(ptr %t1406, %S.ast.Node %t1413) - store %S.gen.Val %t1414, ptr %a1415 - %t1416 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1417 = getelementptr inbounds %S.ast.Type, ptr %t1416, i32 0, i32 0 - %t1418 = load { ptr, i64, i64 }, ptr %t1417 - store { ptr, i64, i64 } %t1418, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5401, i64 3, i64 0 }, ptr %a1420 - %t1421 = call i32 @finch_str_eq(ptr %a1419, ptr %a1420) - %t1422 = icmp eq i32 %t1421, 0 - br i1 %t1422, label %then8320, label %endif8322 -then8320: - %t1423 = load ptr, ptr %a1 - %t1424 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1425 = load { ptr, i64, i64 }, ptr %t1424 - %t1426 = extractvalue { ptr, i64, i64 } %t1425, 1 - %t1427 = icmp uge i64 0, %t1426 - br i1 %t1427, label %range8323, label %inrange8324 -range8323: - call void @finch_panic_index(ptr @.str.5402, i64 5025, i64 0, i64 %t1426) - unreachable -inrange8324: - %t1428 = extractvalue { ptr, i64, i64 } %t1425, 0 - %t1429 = getelementptr inbounds %S.ast.Node, ptr %t1428, i64 0 - %t1430 = load %S.ast.Node, ptr %t1429 - call void @finch.gen.fail(ptr %t1423, %S.ast.Node %t1430, { ptr, i64, i64 } { ptr @.str.5403, i64 119, i64 0 }) - br label %endif8322 -endif8322: - %t1431 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1432 = getelementptr inbounds %S.ast.Type, ptr %t1431, i32 0, i32 1 - %t1433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1432, i32 0, i32 1 - %t1434 = load i64, ptr %t1433 - %t1435 = icmp sgt i64 %t1434, 0 - br label %logic.from8325 -logic.from8325: - br i1 %t1435, label %logic.rhs8326, label %logic.end8327 -logic.rhs8326: - %t1436 = load ptr, ptr %a1 - %t1437 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.ast.Type, ptr %t1437, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - %t1440 = extractvalue { ptr, i64, i64 } %t1439, 1 - %t1441 = icmp uge i64 0, %t1440 - br i1 %t1441, label %range8328, label %inrange8329 -range8328: - call void @finch_panic_index(ptr @.str.5404, i64 5027, i64 0, i64 %t1440) - unreachable -inrange8329: - %t1442 = extractvalue { ptr, i64, i64 } %t1439, 0 - %t1443 = getelementptr inbounds %S.ast.Type, ptr %t1442, i64 0 - %t1444 = load %S.ast.Type, ptr %t1443 - %t1445 = call i1 @finch.gen.owning(ptr %t1436, %S.ast.Type %t1444) - br label %logic.rend8330 -logic.rend8330: - br label %logic.end8327 -logic.end8327: - %t1446 = phi i1 [ false, %logic.from8325 ], [ %t1445, %logic.rend8330 ] - br i1 %t1446, label %then8331, label %endif8333 -then8331: - %t1447 = load ptr, ptr %a1 - %t1448 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1447, { ptr, i64, i64 } { ptr @.str.5405, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1448, ptr %a1449 - %t1450 = load ptr, ptr %a1 - %t1451 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1450, { ptr, i64, i64 } { ptr @.str.5406, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1451, ptr %a1452 - %t1453 = load ptr, ptr %a1 - %t1454 = load ptr, ptr %a1 - %t1455 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1456 = load { ptr, i64, i64 }, ptr %t1455 - store { ptr, i64, i64 } { ptr @.str.5407, i64 12, i64 0 }, ptr %a1458 - store { ptr, i64, i64 } %t1456, ptr %a1459 - call void @finch_str_concat(ptr %a1457, ptr %a1458, ptr %a1459) - %t1460 = load { ptr, i64, i64 }, ptr %a1457 - store { ptr, i64, i64 } %t1460, ptr %a1462 - store { ptr, i64, i64 } { ptr @.str.5408, i64 6, i64 0 }, ptr %a1463 - call void @finch_str_concat(ptr %a1461, ptr %a1462, ptr %a1463) - store { ptr, i64, i64 } %t1460, ptr %a1464 - call void @finch_str_drop(ptr %a1464) - %t1465 = load { ptr, i64, i64 }, ptr %a1461 - %t1466 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1454, { ptr, i64, i64 } %t1465) - store { ptr, i64, i64 } %t1465, ptr %a1467 - call void @finch_str_drop(ptr %a1467) - %t1468 = load { ptr, i64, i64 }, ptr %a1452 - %t1469 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.condBr(ptr %t1453, { ptr, i64, i64 } %t1466, { ptr, i64, i64 } %t1468, { ptr, i64, i64 } %t1469) - store { ptr, i64, i64 } %t1466, ptr %a1470 - call void @finch_str_drop(ptr %a1470) - %t1471 = load ptr, ptr %a1 - %t1472 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.label(ptr %t1471, { ptr, i64, i64 } %t1472) - %t1473 = load ptr, ptr %a1 - %t1474 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1475 = load { ptr, i64, i64 }, ptr %t1474 - %t1476 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1477 = getelementptr inbounds %S.ast.Type, ptr %t1476, i32 0, i32 1 - %t1478 = load { ptr, i64, i64 }, ptr %t1477 - %t1479 = extractvalue { ptr, i64, i64 } %t1478, 1 - %t1480 = icmp uge i64 0, %t1479 - br i1 %t1480, label %range8334, label %inrange8335 -range8334: - call void @finch_panic_index(ptr @.str.5409, i64 5032, i64 0, i64 %t1479) - unreachable -inrange8335: - %t1481 = extractvalue { ptr, i64, i64 } %t1478, 0 - %t1482 = getelementptr inbounds %S.ast.Type, ptr %t1481, i64 0 - %t1483 = load %S.ast.Type, ptr %t1482 - call void @finch.gen.dropAt(ptr %t1473, { ptr, i64, i64 } %t1475, %S.ast.Type %t1483) - %t1484 = load ptr, ptr %a1 - %t1485 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.br(ptr %t1484, { ptr, i64, i64 } %t1485) - %t1486 = load ptr, ptr %a1 - %t1487 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.label(ptr %t1486, { ptr, i64, i64 } %t1487) - call void @finch_str_drop(ptr %a1452) - call void @finch_str_drop(ptr %a1449) - br label %endif8333 -endif8333: - %t1488 = load ptr, ptr %a1 - %t1489 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1490 = load { ptr, i64, i64 }, ptr %t1489 - store { ptr, i64, i64 } { ptr @.str.5410, i64 20, i64 0 }, ptr %a1492 - store { ptr, i64, i64 } %t1490, ptr %a1493 - call void @finch_str_concat(ptr %a1491, ptr %a1492, ptr %a1493) - %t1494 = load { ptr, i64, i64 }, ptr %a1491 - store { ptr, i64, i64 } %t1494, ptr %a1496 - store { ptr, i64, i64 } { ptr @.str.5411, i64 1, i64 0 }, ptr %a1497 - call void @finch_str_concat(ptr %a1495, ptr %a1496, ptr %a1497) - store { ptr, i64, i64 } %t1494, ptr %a1498 - call void @finch_str_drop(ptr %a1498) - %t1499 = load { ptr, i64, i64 }, ptr %a1495 - call void @finch.gen.emit(ptr %t1488, { ptr, i64, i64 } %t1499) - store { ptr, i64, i64 } %t1499, ptr %a1500 - call void @finch_str_drop(ptr %a1500) - %t1501 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5412, i64 4, i64 0 }) - %t1502 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1501, 1 - call void @finch.drop.S_gen_Val(ptr %a1415) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1502 -endif8317: - %t1503 = load ptr, ptr %a1 - %t1504 = load ptr, ptr %a1 - %t1505 = icmp eq ptr %t1504, null - br i1 %t1505, label %panic8336, label %ok8337 -panic8336: - call void @finch_panic(ptr @.str.5413, i64 5039, ptr @.str.5414) - unreachable -ok8337: - %t1506 = getelementptr inbounds %S.gen.Gen, ptr %t1504, i32 0, i32 14 - %t1507 = load { ptr, i64, i64 }, ptr %t1506 - %t1508 = load { ptr, i64, i64 }, ptr %a8 - %t1509 = call i64 @finch.gen.findFn(ptr %t1503, { ptr, i64, i64 } %t1507, { ptr, i64, i64 } %t1508) - store i64 %t1509, ptr %a1510 - %t1511 = load i64, ptr %a1510 - %t1512 = icmp sge i64 %t1511, 0 - br i1 %t1512, label %then8338, label %endif8340 -then8338: - %t1513 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1514 = getelementptr inbounds %S.ast.Type, ptr %t1513, i32 0, i32 1 - %t1515 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1514, i32 0, i32 1 - %t1516 = load i64, ptr %t1515 - %t1517 = icmp sgt i64 %t1516, 0 - br i1 %t1517, label %then8341, label %endif8343 -then8341: - %t1518 = load ptr, ptr %a1 - %t1519 = load %S.ast.Node, ptr %a2 - %t1520 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5415, i64 1, i64 0 }, ptr %a1522 - store { ptr, i64, i64 } %t1520, ptr %a1523 - call void @finch_str_concat(ptr %a1521, ptr %a1522, ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1521 - store { ptr, i64, i64 } %t1524, ptr %a1526 - store { ptr, i64, i64 } { ptr @.str.5416, i64 47, i64 0 }, ptr %a1527 - call void @finch_str_concat(ptr %a1525, ptr %a1526, ptr %a1527) - store { ptr, i64, i64 } %t1524, ptr %a1528 - call void @finch_str_drop(ptr %a1528) - %t1529 = load { ptr, i64, i64 }, ptr %a1525 - call void @finch.gen.fail(ptr %t1518, %S.ast.Node %t1519, { ptr, i64, i64 } %t1529) - store { ptr, i64, i64 } %t1529, ptr %a1530 - call void @finch_str_drop(ptr %a1530) - br label %endif8343 -endif8343: - %t1531 = load ptr, ptr %a1 - %t1532 = load i64, ptr %a1510 - %t1533 = load %S.ast.Node, ptr %a2 - %t1534 = load { ptr, i64, i64 }, ptr %a8 - %t1535 = call %S.gen.Val @finch.gen.callFn(ptr %t1531, i64 %t1532, %S.ast.Node %t1533, i64 0, { ptr, i64, i64 } %t1534, { ptr, i64, i64 } { ptr @.str.5417, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5418, i64 0, i64 0 }) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1535 -endif8340: - %t1536 = load ptr, ptr %a1 - %t1537 = load ptr, ptr %a1 - %t1538 = icmp eq ptr %t1537, null - br i1 %t1538, label %panic8344, label %ok8345 -panic8344: - call void @finch_panic(ptr @.str.5419, i64 5046, ptr @.str.5420) - unreachable -ok8345: - %t1539 = getelementptr inbounds %S.gen.Gen, ptr %t1537, i32 0, i32 14 - %t1540 = load { ptr, i64, i64 }, ptr %t1539 - %t1541 = load { ptr, i64, i64 }, ptr %a8 - %t1542 = call i64 @finch.gen.findTemplate(ptr %t1536, { ptr, i64, i64 } %t1540, { ptr, i64, i64 } %t1541, { ptr, i64, i64 } { ptr @.str.5421, i64 0, i64 0 }, i1 false) - store i64 %t1542, ptr %a1543 - %t1544 = load i64, ptr %a1543 - %t1545 = icmp sge i64 %t1544, 0 - br i1 %t1545, label %then8346, label %endif8348 -then8346: - %t1546 = load ptr, ptr %a1 - %t1547 = load %S.ast.Node, ptr %a2 - %t1548 = load i64, ptr %a1543 - %t1549 = load { ptr, i64, i64 }, ptr %a8 - %t1550 = call %S.gen.Val @finch.gen.genericCall(ptr %t1546, %S.ast.Node %t1547, i64 %t1548, i64 0, { ptr, i64, i64 } %t1549) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1550 -endif8348: - %t1551 = load ptr, ptr %a1 - %t1552 = load ptr, ptr %a1 - %t1553 = icmp eq ptr %t1552, null - br i1 %t1553, label %panic8349, label %ok8350 -panic8349: - call void @finch_panic(ptr @.str.5422, i64 5050, ptr @.str.5423) - unreachable -ok8350: - %t1554 = getelementptr inbounds %S.gen.Gen, ptr %t1552, i32 0, i32 14 - %t1555 = load { ptr, i64, i64 }, ptr %t1554 - %t1556 = load { ptr, i64, i64 }, ptr %a8 - %t1557 = call i64 @finch.gen.findTemplate(ptr %t1551, { ptr, i64, i64 } %t1555, { ptr, i64, i64 } %t1556, { ptr, i64, i64 } { ptr @.str.5424, i64 0, i64 0 }, i1 true) - %t1558 = icmp sge i64 %t1557, 0 - br i1 %t1558, label %then8351, label %endif8353 -then8351: - %t1559 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1560 = getelementptr inbounds %S.ast.Type, ptr %t1559, i32 0, i32 1 - %t1561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1560, i32 0, i32 1 - %t1562 = load i64, ptr %t1561 - %t1563 = icmp eq i64 %t1562, 0 - br i1 %t1563, label %then8354, label %endif8356 -then8354: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5425, i64 1, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5426, i64 42, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - %t1576 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1575, ptr %a1578 - store { ptr, i64, i64 } %t1576, ptr %a1579 - call void @finch_str_concat(ptr %a1577, ptr %a1578, ptr %a1579) - store { ptr, i64, i64 } %t1575, ptr %a1580 - call void @finch_str_drop(ptr %a1580) - %t1581 = load { ptr, i64, i64 }, ptr %a1577 - store { ptr, i64, i64 } %t1581, ptr %a1583 - store { ptr, i64, i64 } { ptr @.str.5427, i64 10, i64 0 }, ptr %a1584 - call void @finch_str_concat(ptr %a1582, ptr %a1583, ptr %a1584) - store { ptr, i64, i64 } %t1581, ptr %a1585 - call void @finch_str_drop(ptr %a1585) - %t1586 = load { ptr, i64, i64 }, ptr %a1582 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1586) - store { ptr, i64, i64 } %t1586, ptr %a1587 - call void @finch_str_drop(ptr %a1587) - br label %endif8356 -endif8356: - store { ptr, i64, i64 } zeroinitializer, ptr %a1588 - %t1589 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1590 = getelementptr inbounds %S.ast.Type, ptr %t1589, i32 0, i32 1 - store i64 0, ptr %a1591 - br label %each.cond8357 -each.cond8357: - %t1592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1590, i32 0, i32 1 - %t1593 = load i64, ptr %t1592 - %t1594 = load i64, ptr %a1591 - %t1595 = icmp slt i64 %t1594, %t1593 - br i1 %t1595, label %each.body8358, label %each.end8360 -each.body8358: - %t1596 = load ptr, ptr %t1590 - %t1597 = getelementptr inbounds %S.ast.Type, ptr %t1596, i64 %t1594 - %t1598 = load %S.ast.Type, ptr %t1597 - store %S.ast.Type %t1598, ptr %a1599 - %t1600 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1588, i32 0, i32 1 - %t1601 = load ptr, ptr %a1 - %t1602 = load %S.ast.Type, ptr %a1599 - %t1603 = load %S.ast.Node, ptr %a2 - %t1604 = call %S.ast.Type @finch.gen.resolve(ptr %t1601, %S.ast.Type %t1602, %S.ast.Node %t1603) - %t1605 = load i64, ptr %t1600 - %t1606 = add i64 %t1605, 1 - call void @finch_arr_reserve(ptr %a1588, i64 %t1606, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1607 = load ptr, ptr %a1588 - %t1608 = getelementptr inbounds %S.ast.Type, ptr %t1607, i64 %t1605 - store %S.ast.Type %t1604, ptr %t1608 - store i64 %t1606, ptr %t1600 - br label %each.step8359 -each.step8359: - %t1609 = load i64, ptr %a1591 - %t1610 = add i64 %t1609, 1 - store i64 %t1610, ptr %a1591 - br label %each.cond8357 -each.end8360: - %t1611 = load ptr, ptr %a1 - %t1612 = load ptr, ptr %a1 - %t1613 = icmp eq ptr %t1612, null - br i1 %t1613, label %panic8361, label %ok8362 -panic8361: - call void @finch_panic(ptr @.str.5428, i64 5059, ptr @.str.5429) - unreachable -ok8362: - %t1614 = getelementptr inbounds %S.gen.Gen, ptr %t1612, i32 0, i32 14 - %t1615 = load { ptr, i64, i64 }, ptr %t1614 - %t1616 = load { ptr, i64, i64 }, ptr %a8 - %t1617 = load { ptr, i64, i64 }, ptr %a1588 - %t1618 = load %S.ast.Node, ptr %a2 - %t1619 = call %S.ast.Type @finch.gen.instStruct(ptr %t1611, { ptr, i64, i64 } %t1615, { ptr, i64, i64 } %t1616, { ptr, i64, i64 } %t1617, %S.ast.Node %t1618) - store %S.ast.Type %t1619, ptr %a1620 - %t1621 = load ptr, ptr %a1 - %t1622 = load ptr, ptr %a1 - %t1623 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 3 - %t1624 = load { ptr, i64, i64 }, ptr %t1623 - %t1625 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 2 - %t1626 = load { ptr, i64, i64 }, ptr %t1625 - %t1627 = call i64 @finch.gen.findStruct(ptr %t1622, { ptr, i64, i64 } %t1624, { ptr, i64, i64 } %t1626) - %t1628 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1629 = load { ptr, i64, i64 }, ptr %t1628 - %t1630 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1631 = load { ptr, i64, i64 }, ptr %t1630 - %t1632 = load %S.ast.Node, ptr %a2 - %t1633 = call %S.gen.Val @finch.gen.construct(ptr %t1621, i64 %t1627, { ptr, i64, i64 } %t1629, { ptr, i64, i64 } %t1631, %S.ast.Node %t1632) - call void @finch.drop.S_ast_Type(ptr %a1620) - call void @finch.drop.arr_S_ast_Type(ptr %a1588) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1633 -endif8353: - %t1634 = load ptr, ptr %a1 - %t1635 = load ptr, ptr %a1 - %t1636 = icmp eq ptr %t1635, null - br i1 %t1636, label %panic8363, label %ok8364 -panic8363: - call void @finch_panic(ptr @.str.5430, i64 5062, ptr @.str.5431) - unreachable -ok8364: - %t1637 = getelementptr inbounds %S.gen.Gen, ptr %t1635, i32 0, i32 14 - %t1638 = load { ptr, i64, i64 }, ptr %t1637 - %t1639 = load { ptr, i64, i64 }, ptr %a8 - %t1640 = call i64 @finch.gen.findStruct(ptr %t1634, { ptr, i64, i64 } %t1638, { ptr, i64, i64 } %t1639) - store i64 %t1640, ptr %a1641 - %t1642 = load i64, ptr %a1641 - %t1643 = icmp sge i64 %t1642, 0 - br i1 %t1643, label %then8365, label %endif8367 -then8365: - %t1644 = load ptr, ptr %a1 - %t1645 = icmp eq ptr %t1644, null - br i1 %t1645, label %panic8368, label %ok8369 -panic8368: - call void @finch_panic(ptr @.str.5432, i64 5064, ptr @.str.5433) - unreachable -ok8369: - %t1646 = getelementptr inbounds %S.gen.Gen, ptr %t1644, i32 0, i32 16 - %t1647 = load i64, ptr %a1641 - %t1648 = load { ptr, i64, i64 }, ptr %t1646 - %t1649 = extractvalue { ptr, i64, i64 } %t1648, 1 - %t1650 = icmp uge i64 %t1647, %t1649 - br i1 %t1650, label %range8370, label %inrange8371 -range8370: - call void @finch_panic_index(ptr @.str.5434, i64 5064, i64 %t1647, i64 %t1649) - unreachable -inrange8371: - %t1651 = extractvalue { ptr, i64, i64 } %t1648, 0 - %t1652 = getelementptr inbounds %S.gen.StructDef, ptr %t1651, i64 %t1647 - %t1653 = load %S.gen.StructDef, ptr %t1652 - store %S.gen.StructDef %t1653, ptr %a1654 - call void @finch.copy.S_gen_StructDef(ptr %a1655, ptr %a1654) - %t1656 = load %S.gen.StructDef, ptr %a1655 - store %S.gen.StructDef %t1656, ptr %a1657 - %t1658 = load ptr, ptr %a1 - %t1659 = icmp eq ptr %t1658, null - br i1 %t1659, label %panic8372, label %ok8373 -panic8372: - call void @finch_panic(ptr @.str.5435, i64 5065, ptr @.str.5436) - unreachable -ok8373: - %t1660 = getelementptr inbounds %S.gen.Gen, ptr %t1658, i32 0, i32 28 - %t1661 = load i1, ptr %t1660 - br label %logic.from8374 -logic.from8374: - br i1 %t1661, label %logic.rhs8375, label %logic.end8376 -logic.rhs8375: - %t1662 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 2 - %t1663 = load i1, ptr %t1662 - %t1664 = xor i1 %t1663, true - br label %logic.rend8377 -logic.rend8377: - br label %logic.end8376 -logic.end8376: - %t1665 = phi i1 [ false, %logic.from8374 ], [ %t1664, %logic.rend8377 ] - br i1 %t1665, label %then8378, label %endif8380 -then8378: - %t1666 = load ptr, ptr %a1 - %t1667 = icmp eq ptr %t1666, null - br i1 %t1667, label %panic8381, label %ok8382 -panic8381: - call void @finch_panic(ptr @.str.5437, i64 5066, ptr @.str.5438) - unreachable -ok8382: - %t1668 = getelementptr inbounds %S.gen.Gen, ptr %t1666, i32 0, i32 0 - %t1669 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 13 - %t1670 = load i64, ptr %t1669 - %t1671 = load { ptr, i64, i64 }, ptr %t1668 - %t1672 = extractvalue { ptr, i64, i64 } %t1671, 1 - %t1673 = icmp uge i64 %t1670, %t1672 - br i1 %t1673, label %range8383, label %inrange8384 -range8383: - call void @finch_panic_index(ptr @.str.5439, i64 5066, i64 %t1670, i64 %t1672) - unreachable -inrange8384: - %t1674 = extractvalue { ptr, i64, i64 } %t1671, 0 - %t1675 = getelementptr inbounds %S.ast.Program, ptr %t1674, i64 %t1670 - %t1676 = getelementptr inbounds %S.ast.Program, ptr %t1675, i32 0, i32 6 - %t1677 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 14 - %t1678 = load i64, ptr %t1677 - %t1679 = load { ptr, i64, i64 }, ptr %t1676 - %t1680 = extractvalue { ptr, i64, i64 } %t1679, 1 - %t1681 = icmp uge i64 %t1678, %t1680 - br i1 %t1681, label %range8385, label %inrange8386 -range8385: - call void @finch_panic_index(ptr @.str.5440, i64 5066, i64 %t1678, i64 %t1680) - unreachable -inrange8386: - %t1682 = extractvalue { ptr, i64, i64 } %t1679, 0 - %t1683 = getelementptr inbounds %S.ast.Node, ptr %t1682, i64 %t1678 - %t1684 = load %S.ast.Node, ptr %t1683 - store %S.ast.Node %t1684, ptr %a1685 - call void @finch.copy.S_ast_Node(ptr %a1686, ptr %a1685) - %t1687 = load %S.ast.Node, ptr %a1686 - store %S.ast.Node %t1687, ptr %a1688 - %t1689 = load ptr, ptr %a1 - %t1690 = load %S.ast.Node, ptr %a2 - %t1691 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t1692 = load i64, ptr %t1691 - %t1693 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t1694 = load i64, ptr %t1693 - %t1695 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 1 - %t1696 = load { ptr, i64, i64 }, ptr %t1695 - store { ptr, i64, i64 } { ptr @.str.5441, i64 16, i64 0 }, ptr %a1698 - store { ptr, i64, i64 } %t1696, ptr %a1699 - call void @finch_str_concat(ptr %a1697, ptr %a1698, ptr %a1699) - %t1700 = load { ptr, i64, i64 }, ptr %a1697 - store { ptr, i64, i64 } %t1700, ptr %a1702 - store { ptr, i64, i64 } { ptr @.str.5442, i64 3, i64 0 }, ptr %a1703 - call void @finch_str_concat(ptr %a1701, ptr %a1702, ptr %a1703) - store { ptr, i64, i64 } %t1700, ptr %a1704 - call void @finch_str_drop(ptr %a1704) - %t1705 = load { ptr, i64, i64 }, ptr %a1701 - %t1706 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 11 - %t1707 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1706, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5443, i64 2, i64 0 }, ptr %a1708 - call void @finch_str_join(ptr %a1709, ptr %t1706, ptr %a1708) - %t1710 = load { ptr, i64, i64 }, ptr %a1709 - store { ptr, i64, i64 } %t1705, ptr %a1712 - store { ptr, i64, i64 } %t1710, ptr %a1713 - call void @finch_str_concat(ptr %a1711, ptr %a1712, ptr %a1713) - store { ptr, i64, i64 } %t1705, ptr %a1714 - call void @finch_str_drop(ptr %a1714) - store { ptr, i64, i64 } %t1710, ptr %a1715 - call void @finch_str_drop(ptr %a1715) - %t1716 = load { ptr, i64, i64 }, ptr %a1711 - store { ptr, i64, i64 } %t1716, ptr %a1718 - store { ptr, i64, i64 } { ptr @.str.5444, i64 6, i64 0 }, ptr %a1719 - call void @finch_str_concat(ptr %a1717, ptr %a1718, ptr %a1719) - store { ptr, i64, i64 } %t1716, ptr %a1720 - call void @finch_str_drop(ptr %a1720) - %t1721 = load { ptr, i64, i64 }, ptr %a1717 - %t1722 = load ptr, ptr %a1 - %t1723 = icmp eq ptr %t1722, null - br i1 %t1723, label %panic8387, label %ok8388 -panic8387: - call void @finch_panic(ptr @.str.5445, i64 5067, ptr @.str.5446) - unreachable -ok8388: - %t1724 = getelementptr inbounds %S.gen.Gen, ptr %t1722, i32 0, i32 1 - %t1725 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 13 - %t1726 = load i64, ptr %t1725 - %t1727 = load { ptr, i64, i64 }, ptr %t1724 - %t1728 = extractvalue { ptr, i64, i64 } %t1727, 1 - %t1729 = icmp uge i64 %t1726, %t1728 - br i1 %t1729, label %range8389, label %inrange8390 -range8389: - call void @finch_panic_index(ptr @.str.5447, i64 5067, i64 %t1726, i64 %t1728) - unreachable -inrange8390: - %t1730 = extractvalue { ptr, i64, i64 } %t1727, 0 - %t1731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1730, i64 %t1726 - %t1732 = load { ptr, i64, i64 }, ptr %t1731 - %t1733 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 11 - %t1734 = load i64, ptr %t1733 - %t1735 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 12 - %t1736 = load i64, ptr %t1735 - call void @finch.gen.noteRef(ptr %t1689, %S.ast.Node %t1690, i64 %t1692, i64 %t1694, { ptr, i64, i64 } %t1721, { ptr, i64, i64 } %t1732, i64 %t1734, i64 %t1736) - store { ptr, i64, i64 } %t1721, ptr %a1737 - call void @finch_str_drop(ptr %a1737) - call void @finch.drop.S_ast_Node(ptr %a1688) - br label %endif8380 -endif8380: - %t1738 = load ptr, ptr %a1 - %t1739 = load i64, ptr %a1641 - %t1740 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1741 = load { ptr, i64, i64 }, ptr %t1740 - %t1742 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1743 = load { ptr, i64, i64 }, ptr %t1742 - %t1744 = load %S.ast.Node, ptr %a2 - %t1745 = call %S.gen.Val @finch.gen.construct(ptr %t1738, i64 %t1739, { ptr, i64, i64 } %t1741, { ptr, i64, i64 } %t1743, %S.ast.Node %t1744) - call void @finch.drop.S_gen_StructDef(ptr %a1657) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1745 -endif8367: - %t1746 = load ptr, ptr %a1 - %t1747 = load ptr, ptr %a1 - %t1748 = icmp eq ptr %t1747, null - br i1 %t1748, label %panic8391, label %ok8392 -panic8391: - call void @finch_panic(ptr @.str.5448, i64 5071, ptr @.str.5449) - unreachable -ok8392: - %t1749 = getelementptr inbounds %S.gen.Gen, ptr %t1747, i32 0, i32 14 - %t1750 = load { ptr, i64, i64 }, ptr %t1749 - %t1751 = load { ptr, i64, i64 }, ptr %a8 - %t1752 = call i64 @finch.gen.findEnum(ptr %t1746, { ptr, i64, i64 } %t1750, { ptr, i64, i64 } %t1751) - store i64 %t1752, ptr %a1753 - %t1754 = load i64, ptr %a1753 - %t1755 = icmp sge i64 %t1754, 0 - br i1 %t1755, label %then8393, label %endif8395 -then8393: - %t1756 = load ptr, ptr %a1 - %t1757 = load %S.ast.Node, ptr %a2 - %t1758 = load i64, ptr %a1753 - %t1759 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1756, %S.ast.Node %t1757, i64 %t1758) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1759 -endif8395: - %t1760 = load ptr, ptr %a1 - %t1761 = icmp eq ptr %t1760, null - br i1 %t1761, label %panic8396, label %ok8397 -panic8396: - call void @finch_panic(ptr @.str.5450, i64 5075, ptr @.str.5451) - unreachable -ok8397: - %t1762 = getelementptr inbounds %S.gen.Gen, ptr %t1760, i32 0, i32 26 - %t1763 = getelementptr inbounds %S.cimport.CImports, ptr %t1762, i32 0, i32 0 - %t1764 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1764, ptr %a1765 - %t1766 = call i64 @finch_map_find(ptr %t1763, ptr %a1765, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1767 = icmp sge i64 %t1766, 0 - br i1 %t1767, label %then8398, label %endif8400 -then8398: - %t1768 = load ptr, ptr %a1 - %t1769 = load %S.ast.Node, ptr %a2 - %t1770 = load ptr, ptr %a1 - %t1771 = icmp eq ptr %t1770, null - br i1 %t1771, label %panic8401, label %ok8402 -panic8401: - call void @finch_panic(ptr @.str.5452, i64 5076, ptr @.str.5453) - unreachable -ok8402: - %t1772 = getelementptr inbounds %S.gen.Gen, ptr %t1770, i32 0, i32 26 - %t1773 = getelementptr inbounds %S.cimport.CImports, ptr %t1772, i32 0, i32 0 - %t1774 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1774, ptr %a1775 - %t1776 = call i64 @finch_map_find(ptr %t1773, ptr %a1775, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1777 = icmp slt i64 %t1776, 0 - br i1 %t1777, label %map.missing8403, label %map.found8404 -map.missing8403: - store { ptr, i64, i64 } zeroinitializer, ptr %a1778 - store { ptr, i64, i64 } %t1774, ptr %a1779 - call void @finch_buf_str(ptr %a1778, ptr %a1779, i32 1) - call void @finch_map_missing(ptr @.str.5454, i64 5076, ptr %a1778) - unreachable -map.found8404: - %t1780 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1773, i32 0, i32 0 - %t1781 = load ptr, ptr %t1780 - %t1782 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1781, i64 %t1776 - %t1783 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1782, i32 0, i32 2 - %t1784 = load %S.cimport.CFunc, ptr %t1783 - %t1785 = call %S.gen.Val @finch.gen.callC(ptr %t1768, %S.ast.Node %t1769, %S.cimport.CFunc %t1784) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1785 -endif8400: - %t1786 = load ptr, ptr %a1 - %t1787 = load { ptr, i64, i64 }, ptr %a8 - %t1788 = call i64 @finch.gen.findStruct(ptr %t1786, { ptr, i64, i64 } { ptr @.str.5455, i64 1, i64 0 }, { ptr, i64, i64 } %t1787) - store i64 %t1788, ptr %a1641 - %t1789 = load i64, ptr %a1641 - %t1790 = icmp sge i64 %t1789, 0 - br i1 %t1790, label %then8405, label %endif8407 -then8405: - %t1791 = load ptr, ptr %a1 - %t1792 = load i64, ptr %a1641 - %t1793 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1794 = load { ptr, i64, i64 }, ptr %t1793 - %t1795 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1796 = load { ptr, i64, i64 }, ptr %t1795 - %t1797 = load %S.ast.Node, ptr %a2 - %t1798 = call %S.gen.Val @finch.gen.construct(ptr %t1791, i64 %t1792, { ptr, i64, i64 } %t1794, { ptr, i64, i64 } %t1796, %S.ast.Node %t1797) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1798 -endif8407: - %t1799 = load ptr, ptr %a1 - %t1800 = load { ptr, i64, i64 }, ptr %a8 - %t1801 = call i64 @finch.gen.lookup(ptr %t1799, { ptr, i64, i64 } %t1800) - %t1802 = icmp sge i64 %t1801, 0 - br i1 %t1802, label %then8408, label %endif8410 -then8408: - %t1803 = load ptr, ptr %a1 - %t1804 = load %S.ast.Node, ptr %a2 - %t1805 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5456, i64 1, i64 0 }, ptr %a1807 - store { ptr, i64, i64 } %t1805, ptr %a1808 - call void @finch_str_concat(ptr %a1806, ptr %a1807, ptr %a1808) - %t1809 = load { ptr, i64, i64 }, ptr %a1806 - store { ptr, i64, i64 } %t1809, ptr %a1811 - store { ptr, i64, i64 } { ptr @.str.5457, i64 31, i64 0 }, ptr %a1812 - call void @finch_str_concat(ptr %a1810, ptr %a1811, ptr %a1812) - store { ptr, i64, i64 } %t1809, ptr %a1813 - call void @finch_str_drop(ptr %a1813) - %t1814 = load { ptr, i64, i64 }, ptr %a1810 - call void @finch.gen.fail(ptr %t1803, %S.ast.Node %t1804, { ptr, i64, i64 } %t1814) - store { ptr, i64, i64 } %t1814, ptr %a1815 - call void @finch_str_drop(ptr %a1815) - br label %endif8410 -endif8410: - %t1816 = load ptr, ptr %a1 - %t1817 = load %S.ast.Node, ptr %a2 - %t1818 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5458, i64 28, i64 0 }, ptr %a1820 - store { ptr, i64, i64 } %t1818, ptr %a1821 - call void @finch_str_concat(ptr %a1819, ptr %a1820, ptr %a1821) - %t1822 = load { ptr, i64, i64 }, ptr %a1819 - store { ptr, i64, i64 } %t1822, ptr %a1824 - store { ptr, i64, i64 } { ptr @.str.5459, i64 1, i64 0 }, ptr %a1825 - call void @finch_str_concat(ptr %a1823, ptr %a1824, ptr %a1825) - store { ptr, i64, i64 } %t1822, ptr %a1826 - call void @finch_str_drop(ptr %a1826) - %t1827 = load { ptr, i64, i64 }, ptr %a1823 - %t1828 = load { ptr, i64, i64 }, ptr %a8 - %t1829 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1828) - store { ptr, i64, i64 } %t1827, ptr %a1831 - store { ptr, i64, i64 } %t1829, ptr %a1832 - call void @finch_str_concat(ptr %a1830, ptr %a1831, ptr %a1832) - store { ptr, i64, i64 } %t1827, ptr %a1833 - call void @finch_str_drop(ptr %a1833) - store { ptr, i64, i64 } %t1829, ptr %a1834 - call void @finch_str_drop(ptr %a1834) - %t1835 = load { ptr, i64, i64 }, ptr %a1830 - call void @finch.gen.fail(ptr %t1816, %S.ast.Node %t1817, { ptr, i64, i64 } %t1835) - store { ptr, i64, i64 } %t1835, ptr %a1836 - call void @finch_str_drop(ptr %a1836) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca i64, align 16 - %a70 = alloca i64, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca %S.gen.Val, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a166 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca %S.gen.Val, align 16 - %a204 = alloca %S.gen.Val, align 16 - %a220 = alloca %S.gen.Val, align 16 - %a221 = alloca i64, align 16 - %a229 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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 %panic8411, label %ok8412 -panic8411: - call void @finch_panic(ptr @.str.5460, i64 5090, ptr @.str.5461) - unreachable -ok8412: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 15 - %t11 = load i64, ptr %a2 - %t12 = load { ptr, i64, i64 }, ptr %t10 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range8413, label %inrange8414 -range8413: - call void @finch_panic_index(ptr @.str.5462, i64 5090, i64 %t11, i64 %t13) - unreachable -inrange8414: - %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.from8415 -logic.from8415: - br i1 %t25, label %logic.rhs8416, label %logic.end8417 -logic.rhs8416: - %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.5463, 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.rend8418 -logic.rend8418: - br label %logic.end8417 -logic.end8417: - %t32 = phi i1 [ false, %logic.from8415 ], [ %t31, %logic.rend8418 ] - br i1 %t32, label %then8419, label %endif8421 -then8419: - %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.5464, i64 52, i64 0 }) - br label %endif8421 -endif8421: - %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 %then8422, label %endif8424 -then8422: - %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.5465, 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 %endif8424 -endif8424: - store { ptr, i64, i64 } zeroinitializer, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic8425, label %ok8426 -panic8425: - call void @finch_panic(ptr @.str.5466, i64 5101, ptr @.str.5467) - unreachable -ok8426: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load i64, ptr %t64 - store i64 %t65, ptr %a66 - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load i64, ptr %t68 - store i64 0, ptr %a70 - br label %for.cond8427 -for.cond8427: - %t71 = load i64, ptr %a70 - %t72 = icmp slt i64 %t71, %t69 - br i1 %t72, label %for.body8428, label %for.end8430 -for.body8428: - %t73 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t74 = load i64, ptr %a4 - %t75 = load i64, ptr %a70 - %t76 = add i64 %t74, %t75 - %t77 = load { ptr, i64, i64 }, ptr %t73 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range8431, label %inrange8432 -range8431: - call void @finch_panic_index(ptr @.str.5468, i64 5103, i64 %t76, i64 %t78) - unreachable -inrange8432: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds %S.ast.Node, ptr %t80, i64 %t76 - %t82 = load %S.ast.Node, ptr %t81 - store %S.ast.Node %t82, ptr %a83 - call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) - %t85 = load %S.ast.Node, ptr %a84 - store %S.ast.Node %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load ptr, ptr %a1 - %t89 = load %S.ast.Node, ptr %a86 - %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t91 = load i64, ptr %a70 - %t92 = load { ptr, i64, i64 }, ptr %t90 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 %t91, %t93 - br i1 %t94, label %range8433, label %inrange8434 -range8433: - call void @finch_panic_index(ptr @.str.5469, i64 5104, i64 %t91, i64 %t93) - unreachable -inrange8434: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Type, ptr %t95, i64 %t91 - %t97 = load %S.ast.Type, ptr %t96 - %t98 = call %S.gen.Val @finch.gen.exprWant(ptr %t88, %S.ast.Node %t89, %S.ast.Type %t97) - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t100 = load i64, ptr %a70 - %t101 = load { ptr, i64, i64 }, ptr %t99 - %t102 = extractvalue { ptr, i64, i64 } %t101, 1 - %t103 = icmp uge i64 %t100, %t102 - br i1 %t103, label %range8435, label %inrange8436 -range8435: - call void @finch_panic_index(ptr @.str.5470, i64 5104, i64 %t100, i64 %t102) - unreachable -inrange8436: - %t104 = extractvalue { ptr, i64, i64 } %t101, 0 - %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t100 - %t106 = load %S.ast.Type, ptr %t105 - %t107 = load %S.ast.Node, ptr %a86 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 - %t109 = load i64, ptr %a70 - %t110 = load { ptr, i64, i64 }, ptr %t108 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range8437, label %inrange8438 -range8437: - call void @finch_panic_index(ptr @.str.5472, i64 5104, i64 %t109, i64 %t111) - unreachable -inrange8438: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i64 %t109 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.5471, i64 10, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.5473, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = call %S.gen.Val @finch.gen.coerce(ptr %t87, %S.gen.Val %t98, %S.ast.Type %t106, %S.ast.Node %t107, { ptr, i64, i64 } %t124) - store %S.gen.Val %t98, ptr %a126 - call void @finch.drop.S_gen_Val(ptr %a126) - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_drop(ptr %a127) - store %S.gen.Val %t125, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t131 = load i64, ptr %a70 - %t132 = load { ptr, i64, i64 }, ptr %t130 - %t133 = extractvalue { ptr, i64, i64 } %t132, 1 - %t134 = icmp uge i64 %t131, %t133 - br i1 %t134, label %range8439, label %inrange8440 -range8439: - call void @finch_panic_index(ptr @.str.5474, i64 5106, i64 %t131, i64 %t133) - unreachable -inrange8440: - %t135 = extractvalue { ptr, i64, i64 } %t132, 0 - %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t131 - %t137 = load %S.ast.Type, ptr %t136 - %t138 = call i1 @finch.gen.owning(ptr %t129, %S.ast.Type %t137) - br label %logic.from8441 -logic.from8441: - br i1 %t138, label %logic.rhs8442, label %logic.end8443 -logic.rhs8442: - %t139 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t140 = load i1, ptr %t139 - %t141 = xor i1 %t140, true - br label %logic.rend8444 -logic.rend8444: - br label %logic.end8443 -logic.end8443: - %t142 = phi i1 [ false, %logic.from8441 ], [ %t141, %logic.rend8444 ] - br label %logic.from8445 -logic.from8445: - br i1 %t142, label %logic.rhs8446, label %logic.end8447 -logic.rhs8446: - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t144 = load i64, ptr %t143 - %t145 = icmp sgt i64 %t144, 0 - br label %logic.rend8448 -logic.rend8448: - br label %logic.end8447 -logic.end8447: - %t146 = phi i1 [ false, %logic.from8445 ], [ %t145, %logic.rend8448 ] - br label %logic.from8449 -logic.from8449: - br i1 %t146, label %logic.rhs8450, label %logic.end8451 -logic.rhs8450: - %t147 = load %S.ast.Node, ptr %a86 - %t148 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t147) - %t149 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - store { ptr, i64, i64 } %t148, ptr %a154 - call void @finch_str_drop(ptr %a154) - br label %logic.rend8452 -logic.rend8452: - br label %logic.end8451 -logic.end8451: - %t155 = phi i1 [ false, %logic.from8449 ], [ %t153, %logic.rend8452 ] - br i1 %t155, label %then8453, label %endif8455 -then8453: - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - %t161 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t156, { ptr, i64, i64 } %t158, %S.ast.Type %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t164 = load %S.ast.Type, ptr %t163 - store %S.ast.Type %t164, ptr %a165 - call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) - %t167 = load %S.ast.Type, ptr %a166 - %t168 = insertvalue %S.gen.Val %t162, %S.ast.Type %t167, 1 - %t169 = insertvalue %S.gen.Val %t168, i1 true, 2 - %t170 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t169, ptr %a128 - store %S.gen.Val %t170, ptr %a171 - call void @finch.drop.S_gen_Val(ptr %a171) - br label %endif8455 -endif8455: - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t175 = load i64, ptr %a70 - %t176 = load { ptr, i64, i64 }, ptr %t174 - %t177 = extractvalue { ptr, i64, i64 } %t176, 1 - %t178 = icmp uge i64 %t175, %t177 - br i1 %t178, label %range8456, label %inrange8457 -range8456: - call void @finch_panic_index(ptr @.str.5475, i64 5109, i64 %t175, i64 %t177) - unreachable -inrange8457: - %t179 = extractvalue { ptr, i64, i64 } %t176, 0 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i64 %t175 - %t181 = load %S.ast.Type, ptr %t180 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t181) - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5476, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t187, ptr %a191 - store { ptr, i64, i64 } %t189, ptr %a192 - call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192) - store { ptr, i64, i64 } %t187, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a190 - %t195 = load i64, ptr %t172 - %t196 = add i64 %t195, 1 - call void @finch_arr_reserve(ptr %a45, i64 %t196, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t197 = load ptr, ptr %a45 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i64 %t195 - store { ptr, i64, i64 } %t194, ptr %t198 - store i64 %t196, ptr %t172 - %t199 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t200 = load i1, ptr %t199 - br i1 %t200, label %then8458, label %endif8460 -then8458: - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t202 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t202, ptr %a203 - call void @finch.copy.S_gen_Val(ptr %a204, ptr %a203) - %t205 = load %S.gen.Val, ptr %a204 - %t206 = load i64, ptr %t201 - %t207 = add i64 %t206, 1 - call void @finch_arr_reserve(ptr %a60, i64 %t207, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t208 = load ptr, ptr %a60 - %t209 = getelementptr inbounds %S.gen.Val, ptr %t208, i64 %t206 - store %S.gen.Val %t205, ptr %t209 - store i64 %t207, ptr %t201 - br label %endif8460 -endif8460: - %t210 = load ptr, ptr %a1 - %t211 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t210, %S.gen.Val %t211) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Node(ptr %a86) - br label %for.step8429 -for.step8429: - %t212 = load i64, ptr %a70 - %t213 = add i64 %t212, 1 - store i64 %t213, ptr %a70 - br label %for.cond8427 -for.end8430: - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.FnSig, ptr %a21 - %t216 = load %S.ast.Node, ptr %a3 - %t217 = load { ptr, i64, i64 }, ptr %a45 - %t218 = load { ptr, i64, i64 }, ptr %a5 - %t219 = call %S.gen.Val @finch.gen.emitCall(ptr %t214, %S.gen.FnSig %t215, %S.ast.Node %t216, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t218) - store %S.gen.Val %t219, ptr %a220 - store i64 0, ptr %a221 - br label %each.cond8461 -each.cond8461: - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = load i64, ptr %a221 - %t225 = icmp slt i64 %t224, %t223 - br i1 %t225, label %each.body8462, label %each.end8464 -each.body8462: - %t226 = load ptr, ptr %a60 - %t227 = getelementptr inbounds %S.gen.Val, ptr %t226, i64 %t224 - %t228 = load %S.gen.Val, ptr %t227 - store %S.gen.Val %t228, ptr %a229 - %t230 = load ptr, ptr %a1 - %t231 = load %S.gen.Val, ptr %a229 - call void @finch.gen.release(ptr %t230, %S.gen.Val %t231) - br label %each.step8463 -each.step8463: - %t232 = load i64, ptr %a221 - %t233 = add i64 %t232, 1 - store i64 %t233, ptr %a221 - br label %each.cond8461 -each.end8464: - %t234 = load ptr, ptr %a1 - %t235 = load i64, ptr %a66 - call void @finch.gen.heldEnd(ptr %t234, i64 %t235) - %t236 = load %S.gen.Val, ptr %a220 - call void @finch.drop.arr_S_gen_Val(ptr %a60) - call void @finch.drop.arr_str(ptr %a45) - call void @finch.drop.S_gen_FnSig(ptr %a21) - ret %S.gen.Val %t236 -} - -define internal %S.gen.Val @finch.gen.emitCall(ptr %p0, %S.gen.FnSig %p1, %S.ast.Node %p2, { ptr, i64, i64 } %p3, { ptr, i64, i64 } %p4) { -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 - %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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %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 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = 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 - %a200 = alloca %S.ast.Type, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca %S.ast.Type, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a264 = alloca %S.ast.Type, align 16 - %a265 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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.from8465 -logic.from8465: - br i1 %t7, label %logic.rhs8466, label %logic.end8467 -logic.rhs8466: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic8468, label %ok8469 -panic8468: - call void @finch_panic(ptr @.str.5477, i64 5125, ptr @.str.5478) - unreachable -ok8469: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 41 - %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 - store { ptr, i64, i64 } %t13, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend8470 -logic.rend8470: - br label %logic.end8467 -logic.end8467: - %t19 = phi i1 [ false, %logic.from8465 ], [ %t17, %logic.rend8470 ] - br i1 %t19, label %then8471, label %endif8473 -then8471: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Node, ptr %a3 - %t22 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.5479, i64 1, i64 0 }, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.5480, i64 39, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.5481, i64 19, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t42, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5482, i64 27, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5483, i64 5, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } %t64) - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif8473 -endif8473: - %t66 = load ptr, ptr %a1 - %t67 = load %S.gen.FnSig, ptr %a2 - %t68 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t66, %S.gen.FnSig %t67) - store { ptr, i64, i64 } { ptr @.str.5484, i64 5, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5485, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.5486, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5487, i64 2, i64 0 }, ptr %a92 - call void @finch_str_join(ptr %a93, ptr %a4, ptr %a92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t90, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t90, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.5488, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then8474, label %endif8476 -then8474: - %t109 = load ptr, ptr %a1 - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t109, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = load %S.gen.FnSig, ptr %a2 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t114, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.5489, i64 13, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.5490, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.5491, i64 3, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a139 - call void @finch_str_drop(ptr %a139) - store { ptr, i64, i64 } %t138, ptr %a140 - %t141 = load ptr, ptr %a1 - %t142 = load { ptr, i64, i64 }, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5492, i64 7, i64 0 }, ptr %a144 - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5493, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = call { ptr, i64, i64 } @finch.gen.op(ptr %t141, { ptr, i64, i64 } %t151) - store { ptr, i64, i64 } %t151, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic8477, label %ok8478 -panic8477: - call void @finch_panic(ptr @.str.5494, i64 5132, ptr @.str.5495) - unreachable -ok8478: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 42 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t152, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a1 - %t161 = load %S.gen.FnSig, ptr %a2 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t160, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.5496, i64 13, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.5497, i64 1, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5498, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t159, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic8479, label %ok8480 -panic8479: - call void @finch_panic(ptr @.str.5499, i64 5133, ptr @.str.5500) - unreachable -ok8480: - %t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 43 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t184, ptr %t188 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t192 = getelementptr inbounds %S.ast.Type, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5501, i64 4, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then8481, label %endif8483 -then8481: - %t198 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t199 = load %S.ast.Type, ptr %t198 - store %S.ast.Type %t199, ptr %a200 - call void @finch.copy.S_ast_Type(ptr %a201, ptr %a200) - %t202 = load %S.ast.Type, ptr %a201 - %t203 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t202, 1 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t203 -endif8483: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.gen.FnSig, ptr %a2 - %t207 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t205, %S.gen.FnSig %t206) - store { ptr, i64, i64 } { ptr @.str.5502, i64 13, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t212, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.5503, i64 1, i64 0 }, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t217, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.5504, i64 3, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t232 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t233 = load %S.ast.Type, ptr %t232 - store %S.ast.Type %t233, ptr %a234 - call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) - %t236 = load %S.ast.Type, ptr %a235 - %t237 = insertvalue %S.gen.Val %t231, %S.ast.Type %t236, 1 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t240 = load %S.ast.Type, ptr %t239 - %t241 = call i1 @finch.gen.owning(ptr %t238, %S.ast.Type %t240) - %t242 = insertvalue %S.gen.Val %t237, i1 %t241, 2 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t242 -endif8476: - %t243 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i32 0, i32 0 - %t245 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t245, ptr %a246 - store { ptr, i64, i64 } { ptr @.str.5505, i64 4, i64 0 }, ptr %a247 - %t248 = call i32 @finch_str_eq(ptr %a246, ptr %a247) - %t249 = icmp ne i32 %t248, 0 - br i1 %t249, label %then8484, label %endif8486 -then8484: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t253 = load %S.ast.Type, ptr %t252 - store %S.ast.Type %t253, ptr %a254 - call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) - %t256 = load %S.ast.Type, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t256, 1 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t257 -endif8486: - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a106 - %t260 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t259) - %t261 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t260, 0 - %t262 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t263 = load %S.ast.Type, ptr %t262 - store %S.ast.Type %t263, ptr %a264 - call void @finch.copy.S_ast_Type(ptr %a265, ptr %a264) - %t266 = load %S.ast.Type, ptr %a265 - %t267 = insertvalue %S.gen.Val %t261, %S.ast.Type %t266, 1 - %t268 = load ptr, ptr %a1 - %t269 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t268, %S.ast.Type %t270) - %t272 = insertvalue %S.gen.Val %t267, i1 %t271, 2 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t272 -} - -define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { -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 - %a47 = alloca %S.ast.Node, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca i1, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca i64, align 16 - %a95 = alloca i64, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca i64, align 16 - %a196 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca i64, align 16 - %a294 = alloca i64, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a306 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.gen.Val, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca %S.gen.Val, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca %S.gen.Val, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca %S.gen.Val, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca %S.gen.Val, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a522 = 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 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca %S.ast.Type, align 16 - %a562 = alloca %S.ast.Type, align 16 - %a566 = alloca %S.gen.Val, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.ast.Type, align 16 - %a645 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic8487, label %ok8488 -panic8487: - call void @finch_panic(ptr @.str.5506, i64 5147, ptr @.str.5507) - unreachable -ok8488: - %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 %range8489, label %inrange8490 -range8489: - call void @finch_panic_index(ptr @.str.5508, i64 5147, i64 %t9, i64 %t11) - unreachable -inrange8490: - %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 %then8491, label %endif8493 -then8491: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic8494, label %ok8495 -panic8494: - call void @finch_panic(ptr @.str.5509, i64 5150, ptr @.str.5510) - unreachable -ok8495: - %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 %range8496, label %inrange8497 -range8496: - call void @finch_panic_index(ptr @.str.5511, i64 5150, i64 %t28, i64 %t30) - unreachable -inrange8497: - %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 %range8498, label %inrange8499 -range8498: - call void @finch_panic_index(ptr @.str.5512, i64 5150, i64 %t36, i64 %t38) - unreachable -inrange8499: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 - %t42 = load %S.ast.Node, ptr %t41 - store %S.ast.Node %t42, ptr %a43 - call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43) - %t45 = load %S.ast.Node, ptr %a44 - %t46 = load %S.ast.Node, ptr %a20 - store %S.ast.Node %t45, ptr %a20 - store %S.ast.Node %t46, ptr %a47 - call void @finch.drop.S_ast_Node(ptr %a47) - br label %endif8493 -endif8493: - %t48 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5513, i64 6, i64 0 }, 0 - %t49 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_copy(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = insertvalue %S.ast.Type %t48, { ptr, i64, i64 } %t53, 2 - %t55 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - %t60 = insertvalue %S.ast.Type %t54, { ptr, i64, i64 } %t59, 3 - store %S.ast.Type %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load %S.ast.Type, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t62, %S.ast.Type %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t67 = load i64, ptr %t66 - %t68 = icmp sgt i64 %t67, 0 - br label %logic.from8500 -logic.from8500: - br i1 %t68, label %logic.rhs8501, label %logic.end8502 -logic.rhs8501: - %t69 = load { ptr, i64, i64 }, ptr %a4 - %t70 = extractvalue { ptr, i64, i64 } %t69, 1 - %t71 = icmp uge i64 0, %t70 - br i1 %t71, label %range8503, label %inrange8504 -range8503: - call void @finch_panic_index(ptr @.str.5514, i64 5154, i64 0, i64 %t70) - unreachable -inrange8504: - %t72 = extractvalue { ptr, i64, i64 } %t69, 0 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i64 0 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 - %t75 = load i64, ptr %t74 - %t76 = icmp sgt i64 %t75, 0 - br label %logic.rend8505 -logic.rend8505: - br label %logic.end8502 -logic.end8502: - %t77 = phi i1 [ false, %logic.from8500 ], [ %t76, %logic.rend8505 ] - store i1 %t77, ptr %a78 - store { ptr, i64, i64 } zeroinitializer, ptr %a79 - %t80 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1 - %t82 = load i64, ptr %t81 - store i64 0, ptr %a83 - br label %for.cond8506 -for.cond8506: - %t84 = load i64, ptr %a83 - %t85 = icmp slt i64 %t84, %t82 - br i1 %t85, label %for.body8507, label %for.end8509 -for.body8507: - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %a79, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %a79, i64 %t88, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %a79 - %t90 = getelementptr inbounds i64, ptr %t89, i64 %t87 - store i64 -1, ptr %t90 - store i64 %t88, ptr %t86 - br label %for.step8508 -for.step8508: - %t91 = load i64, ptr %a83 - %t92 = add i64 %t91, 1 - store i64 %t92, ptr %a83 - br label %for.cond8506 -for.end8509: - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t94 = load i64, ptr %t93 - store i64 0, ptr %a95 - br label %for.cond8510 -for.cond8510: - %t96 = load i64, ptr %a95 - %t97 = icmp slt i64 %t96, %t94 - br i1 %t97, label %for.body8511, label %for.end8513 -for.body8511: - %t98 = load i64, ptr %a95 - %t99 = load { ptr, i64, i64 }, ptr %a4 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range8514, label %inrange8515 -range8514: - call void @finch_panic_index(ptr @.str.5515, i64 5160, i64 %t98, i64 %t100) - unreachable -inrange8515: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp sgt i64 %t105, 0 - %t107 = load i1, ptr %a78 - %t108 = icmp ne i1 %t106, %t107 - br i1 %t108, label %then8516, label %endif8518 -then8516: - %t109 = load ptr, ptr %a1 - %t110 = load i64, ptr %a95 - %t111 = load { ptr, i64, i64 }, ptr %a3 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range8519, label %inrange8520 -range8519: - call void @finch_panic_index(ptr @.str.5516, i64 5161, i64 %t110, i64 %t112) - unreachable -inrange8520: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 %t110 - %t116 = load %S.ast.Node, ptr %t115 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t116, { ptr, i64, i64 } { ptr @.str.5517, i64 69, i64 0 }) - br label %endif8518 -endif8518: - %t117 = load i1, ptr %a78 - %t118 = xor i1 %t117, true - br i1 %t118, label %then8521, label %endif8523 -then8521: - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t120 = load i64, ptr %t119 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = icmp ne i64 %t120, %t123 - br i1 %t124, label %then8524, label %endif8526 -then8524: - %t125 = load ptr, ptr %a1 - %t126 = load %S.ast.Node, ptr %a5 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5518, i64 5, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a129 - %t133 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - call void @finch_str_from_int(ptr %a136, i64 %t135) - %t137 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t132, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t132, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5519, i64 17, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t150 = load i64, ptr %t149 - call void @finch_str_from_int(ptr %a151, i64 %t150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t148, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t148, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t152, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.5520, i64 23, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t163, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t163, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5521, i64 15, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch.gen.fail(ptr %t125, %S.ast.Node %t126, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif8526 -endif8526: - %t177 = load i64, ptr %a95 - %t178 = load i64, ptr %a95 - %t179 = load { ptr, i64, i64 }, ptr %a79 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range8527, label %inrange8528 -range8527: - call void @finch_panic_index(ptr @.str.5522, i64 5167, i64 %t178, i64 %t180) - unreachable -inrange8528: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 - store i64 %t177, ptr %t183 - br label %for.step8512 -endif8523: - %t184 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i32 0, i32 1 - %t186 = load i64, ptr %a95 - %t187 = load { ptr, i64, i64 }, ptr %a4 - %t188 = extractvalue { ptr, i64, i64 } %t187, 1 - %t189 = icmp uge i64 %t186, %t188 - br i1 %t189, label %range8529, label %inrange8530 -range8529: - call void @finch_panic_index(ptr @.str.5523, i64 5170, i64 %t186, i64 %t188) - unreachable -inrange8530: - %t190 = extractvalue { ptr, i64, i64 } %t187, 0 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t186 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store i64 -1, ptr %a193 - %t194 = load i64, ptr %t185 - %t195 = load ptr, ptr %t184 - store i64 0, ptr %a196 - br label %find.cond8531 -find.cond8531: - %t197 = load i64, ptr %a196 - %t198 = icmp slt i64 %t197, %t194 - br i1 %t198, label %find.body8532, label %find.end8535 -find.body8532: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i64 %t197 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - store { ptr, i64, i64 } %t192, ptr %a202 - %t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202) - %t204 = icmp ne i32 %t203, 0 - br i1 %t204, label %find.hit8533, label %find.next8534 -find.hit8533: - store i64 %t197, ptr %a193 - br label %find.end8535 -find.next8534: - %t205 = add i64 %t197, 1 - store i64 %t205, ptr %a196 - br label %find.cond8531 -find.end8535: - %t206 = load i64, ptr %a193 - store i64 %t206, ptr %a207 - %t208 = load i64, ptr %a207 - %t209 = icmp slt i64 %t208, 0 - br i1 %t209, label %then8536, label %endif8538 -then8536: - %t210 = load ptr, ptr %a1 - %t211 = load i64, ptr %a95 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range8539, label %inrange8540 -range8539: - call void @finch_panic_index(ptr @.str.5524, i64 5172, i64 %t211, i64 %t213) - unreachable -inrange8540: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.5525, i64 15, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load i64, ptr %a95 - %t225 = load { ptr, i64, i64 }, ptr %a4 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range8541, label %inrange8542 -range8541: - call void @finch_panic_index(ptr @.str.5526, i64 5172, i64 %t224, i64 %t226) - unreachable -inrange8542: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i64 %t224 - %t230 = load { ptr, i64, i64 }, ptr %t229 - store { ptr, i64, i64 } %t223, ptr %a232 - store { ptr, i64, i64 } %t230, ptr %a233 - call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) - store { ptr, i64, i64 } %t223, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.5527, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_drop(ptr %a241) - br label %endif8538 -endif8538: - %t242 = load i64, ptr %a207 - %t243 = load { ptr, i64, i64 }, ptr %a79 - %t244 = extractvalue { ptr, i64, i64 } %t243, 1 - %t245 = icmp uge i64 %t242, %t244 - br i1 %t245, label %range8543, label %inrange8544 -range8543: - call void @finch_panic_index(ptr @.str.5528, i64 5174, i64 %t242, i64 %t244) - unreachable -inrange8544: - %t246 = extractvalue { ptr, i64, i64 } %t243, 0 - %t247 = getelementptr inbounds i64, ptr %t246, i64 %t242 - %t248 = load i64, ptr %t247 - %t249 = icmp sge i64 %t248, 0 - br i1 %t249, label %then8545, label %endif8547 -then8545: - %t250 = load ptr, ptr %a1 - %t251 = load i64, ptr %a95 - %t252 = load { ptr, i64, i64 }, ptr %a3 - %t253 = extractvalue { ptr, i64, i64 } %t252, 1 - %t254 = icmp uge i64 %t251, %t253 - br i1 %t254, label %range8548, label %inrange8549 -range8548: - call void @finch_panic_index(ptr @.str.5529, i64 5175, i64 %t251, i64 %t253) - unreachable -inrange8549: - %t255 = extractvalue { ptr, i64, i64 } %t252, 0 - %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 - %t257 = load %S.ast.Node, ptr %t256 - %t258 = load i64, ptr %a95 - %t259 = load { ptr, i64, i64 }, ptr %a4 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range8550, label %inrange8551 -range8550: - call void @finch_panic_index(ptr @.str.5531, i64 5175, i64 %t258, i64 %t260) - unreachable -inrange8551: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 %t258 - %t264 = load { ptr, i64, i64 }, ptr %t263 - store { ptr, i64, i64 } { ptr @.str.5530, i64 11, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.5532, i64 16, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.fail(ptr %t250, %S.ast.Node %t257, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif8547 -endif8547: - %t275 = load i64, ptr %a95 - %t276 = load i64, ptr %a207 - %t277 = load { ptr, i64, i64 }, ptr %a79 - %t278 = extractvalue { ptr, i64, i64 } %t277, 1 - %t279 = icmp uge i64 %t276, %t278 - br i1 %t279, label %range8552, label %inrange8553 -range8552: - call void @finch_panic_index(ptr @.str.5533, i64 5177, i64 %t276, i64 %t278) - unreachable -inrange8553: - %t280 = extractvalue { ptr, i64, i64 } %t277, 0 - %t281 = getelementptr inbounds i64, ptr %t280, i64 %t276 - store i64 %t275, ptr %t281 - br label %for.step8512 -for.step8512: - %t282 = load i64, ptr %a95 - %t283 = add i64 %t282, 1 - store i64 %t283, ptr %a95 - br label %for.cond8510 -for.end8513: - store { ptr, i64, i64 } { ptr @.str.5534, i64 15, i64 0 }, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = icmp eq ptr %t285, null - br i1 %t286, label %panic8554, label %ok8555 -panic8554: - call void @finch_panic(ptr @.str.5535, i64 5180, ptr @.str.5536) - unreachable -ok8555: - %t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 11 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 - %t289 = load i64, ptr %t288 - store i64 %t289, ptr %a290 - %t291 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i32 0, i32 1 - %t293 = load i64, ptr %t292 - store i64 0, ptr %a294 - br label %for.cond8556 -for.cond8556: - %t295 = load i64, ptr %a294 - %t296 = icmp slt i64 %t295, %t293 - br i1 %t296, label %for.body8557, label %for.end8559 -for.body8557: - %t297 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 - %t298 = load i64, ptr %a294 - %t299 = load { ptr, i64, i64 }, ptr %t297 - %t300 = extractvalue { ptr, i64, i64 } %t299, 1 - %t301 = icmp uge i64 %t298, %t300 - br i1 %t301, label %range8560, label %inrange8561 -range8560: - call void @finch_panic_index(ptr @.str.5537, i64 5182, i64 %t298, i64 %t300) - unreachable -inrange8561: - %t302 = extractvalue { ptr, i64, i64 } %t299, 0 - %t303 = getelementptr inbounds %S.ast.Type, ptr %t302, i64 %t298 - %t304 = load %S.ast.Type, ptr %t303 - store %S.ast.Type %t304, ptr %a305 - call void @finch.copy.S_ast_Type(ptr %a306, ptr %a305) - %t307 = load %S.ast.Type, ptr %a306 - store %S.ast.Type %t307, ptr %a308 - store %S.gen.Val zeroinitializer, ptr %a309 - %t310 = load i64, ptr %a294 - %t311 = load { ptr, i64, i64 }, ptr %a79 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range8562, label %inrange8563 -range8562: - call void @finch_panic_index(ptr @.str.5538, i64 5184, i64 %t310, i64 %t312) - unreachable -inrange8563: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds i64, ptr %t314, i64 %t310 - %t316 = load i64, ptr %t315 - %t317 = icmp sge i64 %t316, 0 - br i1 %t317, label %then8564, label %else8565 -then8564: - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load i64, ptr %a294 - %t321 = load { ptr, i64, i64 }, ptr %a79 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range8567, label %inrange8568 -range8567: - call void @finch_panic_index(ptr @.str.5539, i64 5185, i64 %t320, i64 %t322) - unreachable -inrange8568: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds i64, ptr %t324, i64 %t320 - %t326 = load i64, ptr %t325 - %t327 = load { ptr, i64, i64 }, ptr %a3 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range8569, label %inrange8570 -range8569: - call void @finch_panic_index(ptr @.str.5540, i64 5185, i64 %t326, i64 %t328) - unreachable -inrange8570: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - %t333 = load %S.ast.Type, ptr %a308 - %t334 = call %S.gen.Val @finch.gen.exprWant(ptr %t319, %S.ast.Node %t332, %S.ast.Type %t333) - %t335 = load %S.ast.Type, ptr %a308 - %t336 = load i64, ptr %a294 - %t337 = load { ptr, i64, i64 }, ptr %a79 - %t338 = extractvalue { ptr, i64, i64 } %t337, 1 - %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range8571, label %inrange8572 -range8571: - call void @finch_panic_index(ptr @.str.5541, i64 5185, i64 %t336, i64 %t338) - unreachable -inrange8572: - %t340 = extractvalue { ptr, i64, i64 } %t337, 0 - %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 - %t342 = load i64, ptr %t341 - %t343 = load { ptr, i64, i64 }, ptr %a3 - %t344 = extractvalue { ptr, i64, i64 } %t343, 1 - %t345 = icmp uge i64 %t342, %t344 - br i1 %t345, label %range8573, label %inrange8574 -range8573: - call void @finch_panic_index(ptr @.str.5542, i64 5185, i64 %t342, i64 %t344) - unreachable -inrange8574: - %t346 = extractvalue { ptr, i64, i64 } %t343, 0 - %t347 = getelementptr inbounds %S.ast.Node, ptr %t346, i64 %t342 - %t348 = load %S.ast.Node, ptr %t347 - %t349 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t350 = load i64, ptr %a294 - %t351 = load { ptr, i64, i64 }, ptr %t349 - %t352 = extractvalue { ptr, i64, i64 } %t351, 1 - %t353 = icmp uge i64 %t350, %t352 - br i1 %t353, label %range8575, label %inrange8576 -range8575: - call void @finch_panic_index(ptr @.str.5544, i64 5185, i64 %t350, i64 %t352) - unreachable -inrange8576: - %t354 = extractvalue { ptr, i64, i64 } %t351, 0 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i64 %t350 - %t356 = load { ptr, i64, i64 }, ptr %t355 - store { ptr, i64, i64 } { ptr @.str.5543, i64 11, i64 0 }, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t360, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.5545, i64 1, i64 0 }, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t360, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - %t366 = call %S.gen.Val @finch.gen.coerce(ptr %t318, %S.gen.Val %t334, %S.ast.Type %t335, %S.ast.Node %t348, { ptr, i64, i64 } %t365) - store %S.gen.Val %t334, ptr %a367 - call void @finch.drop.S_gen_Val(ptr %a367) - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t366, ptr %a309 - store %S.gen.Val %t369, ptr %a370 - call void @finch.drop.S_gen_Val(ptr %a370) - br label %endif8566 -else8565: - %t371 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 - %t372 = load i1, ptr %t371 - %t373 = xor i1 %t372, true - br label %logic.from8577 -logic.from8577: - br i1 %t373, label %logic.rhs8578, label %logic.end8579 -logic.rhs8578: - %t374 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t375 = load i64, ptr %a294 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range8580, label %inrange8581 -range8580: - call void @finch_panic_index(ptr @.str.5546, i64 5186, i64 %t375, i64 %t377) - unreachable -inrange8581: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.ast.Node, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.ast.Node, ptr %t380, i32 0, i32 9 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t381, i32 0, i32 1 - %t383 = load i64, ptr %t382 - %t384 = icmp sgt i64 %t383, 0 - br label %logic.rend8582 -logic.rend8582: - br label %logic.end8579 -logic.end8579: - %t385 = phi i1 [ false, %logic.from8577 ], [ %t384, %logic.rend8582 ] - br i1 %t385, label %then8583, label %else8584 -then8583: - %t386 = load ptr, ptr %a1 - %t387 = icmp eq ptr %t386, null - br i1 %t387, label %panic8586, label %ok8587 -panic8586: - call void @finch_panic(ptr @.str.5547, i64 5188, ptr @.str.5548) - unreachable -ok8587: - %t388 = getelementptr inbounds %S.gen.Gen, ptr %t386, i32 0, i32 10 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch.copy.arr_S_gen_Scope(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = icmp eq ptr %t394, null - br i1 %t395, label %panic8588, label %ok8589 -panic8588: - call void @finch_panic(ptr @.str.5549, i64 5189, ptr @.str.5550) - unreachable -ok8589: - %t396 = getelementptr inbounds %S.gen.Gen, ptr %t394, i32 0, i32 14 - %t397 = load { ptr, i64, i64 }, ptr %t396 - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_copy(ptr %a399, ptr %a398) - %t400 = load { ptr, i64, i64 }, ptr %a399 - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load ptr, ptr %a1 - %t403 = icmp eq ptr %t402, null - br i1 %t403, label %panic8590, label %ok8591 -panic8590: - call void @finch_panic(ptr @.str.5551, i64 5190, ptr @.str.5552) - unreachable -ok8591: - %t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 18 - %t405 = load { ptr, i64, i64 }, ptr %t404 - store { ptr, i64, i64 } %t405, ptr %a406 - call void @finch.copy.arr_str(ptr %a407, ptr %a406) - %t408 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t408, ptr %a409 - %t410 = load ptr, ptr %a1 - %t411 = icmp eq ptr %t410, null - br i1 %t411, label %panic8592, label %ok8593 -panic8592: - call void @finch_panic(ptr @.str.5553, i64 5191, ptr @.str.5554) - unreachable -ok8593: - %t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 19 - %t413 = load { ptr, i64, i64 }, ptr %t412 - store { ptr, i64, i64 } %t413, ptr %a414 - call void @finch.copy.arr_S_ast_Type(ptr %a415, ptr %a414) - %t416 = load { ptr, i64, i64 }, ptr %a415 - store { ptr, i64, i64 } %t416, ptr %a417 - %t418 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 - %t419 = load { ptr, i64, i64 }, ptr %t418 - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic8594, label %ok8595 -panic8594: - call void @finch_panic(ptr @.str.5555, i64 5192, ptr @.str.5556) - unreachable -ok8595: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 18 - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch.copy.arr_str(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t425, ptr %t422 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch.drop.arr_str(ptr %a427) - %t428 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 - %t429 = load { ptr, i64, i64 }, ptr %t428 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic8596, label %ok8597 -panic8596: - call void @finch_panic(ptr @.str.5557, i64 5193, ptr @.str.5558) - unreachable -ok8597: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 19 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch.copy.arr_S_ast_Type(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch.drop.arr_S_ast_Type(ptr %a437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - %t439 = load { ptr, i64, i64 }, ptr %a438 - %t440 = load ptr, ptr %a1 - %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic8598, label %ok8599 -panic8598: - call void @finch_panic(ptr @.str.5559, i64 5195, ptr @.str.5560) - unreachable -ok8599: - %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 10 - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch.copy.arr_S_gen_Scope(ptr %a444, ptr %a443) - %t445 = load { ptr, i64, i64 }, ptr %a444 - %t446 = load { ptr, i64, i64 }, ptr %t442 - store { ptr, i64, i64 } %t445, ptr %t442 - store { ptr, i64, i64 } %t446, ptr %a447 - call void @finch.drop.arr_S_gen_Scope(ptr %a447) - %t448 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t448) - %t449 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t450 = load { ptr, i64, i64 }, ptr %t449 - %t451 = load ptr, ptr %a1 - %t452 = icmp eq ptr %t451, null - br i1 %t452, label %panic8600, label %ok8601 -panic8600: - call void @finch_panic(ptr @.str.5561, i64 5197, ptr @.str.5562) - unreachable -ok8601: - %t453 = getelementptr inbounds %S.gen.Gen, ptr %t451, i32 0, i32 14 - store { ptr, i64, i64 } %t450, ptr %a454 - call void @finch_str_copy(ptr %a455, ptr %a454) - %t456 = load { ptr, i64, i64 }, ptr %a455 - %t457 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t456, ptr %t453 - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - %t459 = load ptr, ptr %a1 - %t460 = load ptr, ptr %a1 - %t461 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t462 = load i64, ptr %a294 - %t463 = load { ptr, i64, i64 }, ptr %t461 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = icmp uge i64 %t462, %t464 - br i1 %t465, label %range8602, label %inrange8603 -range8602: - call void @finch_panic_index(ptr @.str.5563, i64 5198, i64 %t462, i64 %t464) - unreachable -inrange8603: - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = getelementptr inbounds %S.ast.Node, ptr %t466, i64 %t462 - %t468 = getelementptr inbounds %S.ast.Node, ptr %t467, i32 0, i32 9 - %t469 = load { ptr, i64, i64 }, ptr %t468 - %t470 = extractvalue { ptr, i64, i64 } %t469, 1 - %t471 = icmp uge i64 0, %t470 - br i1 %t471, label %range8604, label %inrange8605 -range8604: - call void @finch_panic_index(ptr @.str.5564, i64 5198, i64 0, i64 %t470) - unreachable -inrange8605: - %t472 = extractvalue { ptr, i64, i64 } %t469, 0 - %t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 0 - %t474 = load %S.ast.Node, ptr %t473 - %t475 = load %S.ast.Type, ptr %a308 - %t476 = call %S.gen.Val @finch.gen.exprWant(ptr %t460, %S.ast.Node %t474, %S.ast.Type %t475) - %t477 = load %S.ast.Type, ptr %a308 - %t478 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t479 = load i64, ptr %a294 - %t480 = load { ptr, i64, i64 }, ptr %t478 - %t481 = extractvalue { ptr, i64, i64 } %t480, 1 - %t482 = icmp uge i64 %t479, %t481 - br i1 %t482, label %range8606, label %inrange8607 -range8606: - call void @finch_panic_index(ptr @.str.5565, i64 5198, i64 %t479, i64 %t481) - unreachable -inrange8607: - %t483 = extractvalue { ptr, i64, i64 } %t480, 0 - %t484 = getelementptr inbounds %S.ast.Node, ptr %t483, i64 %t479 - %t485 = getelementptr inbounds %S.ast.Node, ptr %t484, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range8608, label %inrange8609 -range8608: - call void @finch_panic_index(ptr @.str.5566, i64 5198, i64 0, i64 %t487) - unreachable -inrange8609: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t493 = load i64, ptr %a294 - %t494 = load { ptr, i64, i64 }, ptr %t492 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 %t493, %t495 - br i1 %t496, label %range8610, label %inrange8611 -range8610: - call void @finch_panic_index(ptr @.str.5568, i64 5198, i64 %t493, i64 %t495) - unreachable -inrange8611: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t493 - %t499 = load { ptr, i64, i64 }, ptr %t498 - store { ptr, i64, i64 } { ptr @.str.5567, i64 16, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5569, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call %S.gen.Val @finch.gen.coerce(ptr %t459, %S.gen.Val %t476, %S.ast.Type %t477, %S.ast.Node %t491, { ptr, i64, i64 } %t508) - store %S.gen.Val %t476, ptr %a510 - call void @finch.drop.S_gen_Val(ptr %a510) - store { ptr, i64, i64 } %t508, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t509, ptr %a309 - store %S.gen.Val %t512, ptr %a513 - call void @finch.drop.S_gen_Val(ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a401 - %t515 = load ptr, ptr %a1 - %t516 = icmp eq ptr %t515, null - br i1 %t516, label %panic8612, label %ok8613 -panic8612: - call void @finch_panic(ptr @.str.5570, i64 5199, ptr @.str.5571) - unreachable -ok8613: - %t517 = getelementptr inbounds %S.gen.Gen, ptr %t515, i32 0, i32 14 - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_copy(ptr %a519, ptr %a518) - %t520 = load { ptr, i64, i64 }, ptr %a519 - %t521 = load { ptr, i64, i64 }, ptr %t517 - store { ptr, i64, i64 } %t520, ptr %t517 - store { ptr, i64, i64 } %t521, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a409 - %t524 = load ptr, ptr %a1 - %t525 = icmp eq ptr %t524, null - br i1 %t525, label %panic8614, label %ok8615 -panic8614: - call void @finch_panic(ptr @.str.5572, i64 5200, ptr @.str.5573) - unreachable -ok8615: - %t526 = getelementptr inbounds %S.gen.Gen, ptr %t524, i32 0, i32 18 - store { ptr, i64, i64 } %t523, ptr %a527 - call void @finch.copy.arr_str(ptr %a528, ptr %a527) - %t529 = load { ptr, i64, i64 }, ptr %a528 - %t530 = load { ptr, i64, i64 }, ptr %t526 - store { ptr, i64, i64 } %t529, ptr %t526 - store { ptr, i64, i64 } %t530, ptr %a531 - call void @finch.drop.arr_str(ptr %a531) - %t532 = load { ptr, i64, i64 }, ptr %a417 - %t533 = load ptr, ptr %a1 - %t534 = icmp eq ptr %t533, null - br i1 %t534, label %panic8616, label %ok8617 -panic8616: - call void @finch_panic(ptr @.str.5574, i64 5201, ptr @.str.5575) - unreachable -ok8617: - %t535 = getelementptr inbounds %S.gen.Gen, ptr %t533, i32 0, i32 19 - store { ptr, i64, i64 } %t532, ptr %a536 - call void @finch.copy.arr_S_ast_Type(ptr %a537, ptr %a536) - %t538 = load { ptr, i64, i64 }, ptr %a537 - %t539 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t538, ptr %t535 - store { ptr, i64, i64 } %t539, ptr %a540 - call void @finch.drop.arr_S_ast_Type(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a393 - %t542 = load ptr, ptr %a1 - %t543 = icmp eq ptr %t542, null - br i1 %t543, label %panic8618, label %ok8619 -panic8618: - call void @finch_panic(ptr @.str.5576, i64 5202, ptr @.str.5577) - unreachable -ok8619: - %t544 = getelementptr inbounds %S.gen.Gen, ptr %t542, i32 0, i32 10 - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch.copy.arr_S_gen_Scope(ptr %a546, ptr %a545) - %t547 = load { ptr, i64, i64 }, ptr %a546 - %t548 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t547, ptr %t544 - store { ptr, i64, i64 } %t548, ptr %a549 - call void @finch.drop.arr_S_gen_Scope(ptr %a549) - call void @finch.drop.arr_S_gen_Scope(ptr %a438) - call void @finch.drop.arr_S_ast_Type(ptr %a417) - call void @finch.drop.arr_str(ptr %a409) - call void @finch_str_drop(ptr %a401) - call void @finch.drop.arr_S_gen_Scope(ptr %a393) - br label %endif8585 -else8584: - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -endif8585: - br label %endif8566 -endif8566: - %t550 = load ptr, ptr %a1 - %t551 = load %S.gen.Val, ptr %a309 - %t552 = call { ptr, i64, i64 } @finch.gen.own(ptr %t550, %S.gen.Val %t551) - store { ptr, i64, i64 } %t552, ptr %a553 - %t554 = load ptr, ptr %a1 - %t555 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t555, ptr %a556 - call void @finch_str_copy(ptr %a557, ptr %a556) - %t558 = load { ptr, i64, i64 }, ptr %a557 - %t559 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t558, 0 - %t560 = load %S.ast.Type, ptr %a308 - store %S.ast.Type %t560, ptr %a561 - call void @finch.copy.S_ast_Type(ptr %a562, ptr %a561) - %t563 = load %S.ast.Type, ptr %a562 - %t564 = insertvalue %S.gen.Val %t559, %S.ast.Type %t563, 1 - %t565 = insertvalue %S.gen.Val %t564, i1 true, 2 - call void @finch.gen.hold(ptr %t554, %S.gen.Val %t565) - store %S.gen.Val %t565, ptr %a566 - call void @finch.drop.S_gen_Val(ptr %a566) - %t567 = load ptr, ptr %a1 - %t568 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.5578, i64 12, i64 0 }, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - %t572 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t572, ptr %a574 - store { ptr, i64, i64 } { ptr @.str.5579, i64 1, i64 0 }, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - %t578 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t577, ptr %a580 - store { ptr, i64, i64 } %t578, ptr %a581 - call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581) - store { ptr, i64, i64 } %t577, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a579 - store { ptr, i64, i64 } %t583, ptr %a585 - store { ptr, i64, i64 } { ptr @.str.5580, i64 2, i64 0 }, ptr %a586 - call void @finch_str_concat(ptr %a584, ptr %a585, ptr %a586) - store { ptr, i64, i64 } %t583, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a584 - %t589 = load ptr, ptr %a1 - %t590 = load %S.ast.Type, ptr %a308 - %t591 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t589, %S.ast.Type %t590) - store { ptr, i64, i64 } %t588, ptr %a593 - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594) - store { ptr, i64, i64 } %t588, ptr %a595 - call void @finch_str_drop(ptr %a595) - store { ptr, i64, i64 } %t591, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t597, ptr %a599 - store { ptr, i64, i64 } { ptr @.str.5581, i64 1, i64 0 }, ptr %a600 - call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600) - store { ptr, i64, i64 } %t597, ptr %a601 - call void @finch_str_drop(ptr %a601) - %t602 = load { ptr, i64, i64 }, ptr %a598 - %t603 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t602, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - store { ptr, i64, i64 } %t602, ptr %a607 - call void @finch_str_drop(ptr %a607) - %t608 = load { ptr, i64, i64 }, ptr %a604 - store { ptr, i64, i64 } %t608, ptr %a610 - store { ptr, i64, i64 } { ptr @.str.5582, i64 2, i64 0 }, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t608, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3 - %t615 = load i64, ptr %a294 - %t616 = load { ptr, i64, i64 }, ptr %t614 - %t617 = extractvalue { ptr, i64, i64 } %t616, 1 - %t618 = icmp uge i64 %t615, %t617 - br i1 %t618, label %range8620, label %inrange8621 -range8620: - call void @finch_panic_index(ptr @.str.5583, i64 5208, i64 %t615, i64 %t617) - unreachable -inrange8621: - %t619 = extractvalue { ptr, i64, i64 } %t616, 0 - %t620 = getelementptr inbounds i64, ptr %t619, i64 %t615 - %t621 = load i64, ptr %t620 - call void @finch_str_from_int(ptr %a622, i64 %t621) - %t623 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t613, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t613, ptr %a627 - call void @finch_str_drop(ptr %a627) - store { ptr, i64, i64 } %t623, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a624 - %t630 = call { ptr, i64, i64 } @finch.gen.op(ptr %t567, { ptr, i64, i64 } %t629) - store { ptr, i64, i64 } %t629, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t630, ptr %a284 - store { ptr, i64, i64 } %t632, ptr %a633 - call void @finch_str_drop(ptr %a633) - call void @finch_str_drop(ptr %a553) - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -for.step8558: - %t634 = load i64, ptr %a294 - %t635 = add i64 %t634, 1 - store i64 %t635, ptr %a294 - br label %for.cond8556 -for.end8559: - %t636 = load ptr, ptr %a1 - %t637 = load i64, ptr %a290 - call void @finch.gen.heldEnd(ptr %t636, i64 %t637) - %t638 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t638, ptr %a639 - call void @finch_str_copy(ptr %a640, ptr %a639) - %t641 = load { ptr, i64, i64 }, ptr %a640 - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t641, 0 - %t643 = load %S.ast.Type, ptr %a61 - store %S.ast.Type %t643, ptr %a644 - call void @finch.copy.S_ast_Type(ptr %a645, ptr %a644) - %t646 = load %S.ast.Type, ptr %a645 - %t647 = insertvalue %S.gen.Val %t642, %S.ast.Type %t646, 1 - %t648 = load ptr, ptr %a1 - %t649 = load %S.ast.Type, ptr %a61 - %t650 = call i1 @finch.gen.owning(ptr %t648, %S.ast.Type %t649) - %t651 = insertvalue %S.gen.Val %t647, i1 %t650, 2 - call void @finch_str_drop(ptr %a284) - call void @finch.drop.arr_int(ptr %a79) - call void @finch_str_drop(ptr %a65) - call void @finch.drop.S_ast_Type(ptr %a61) - call void @finch.drop.S_ast_Node(ptr %a20) - call void @finch.drop.S_gen_StructDef(ptr %a19) - ret %S.gen.Val %t651 -} - -define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic8622, label %ok8623 -panic8622: - call void @finch_panic(ptr @.str.5584, i64 5218, ptr @.str.5585) - unreachable -ok8623: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then8624, label %endif8626 -then8624: - ret void -endif8626: - %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 %then8627, label %endif8629 -then8627: - %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.5586, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif8629 -endif8629: - call void @finch.drop.S_docs_Doc(ptr %a13) - 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 - %a17 = alloca i64, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca i64, align 16 - %a36 = alloca %S.ast.Node, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca i64, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca i64, align 16 - %a165 = alloca i64, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca i64, align 16 - %a184 = alloca %S.ast.Node, align 16 - %a185 = alloca %S.ast.Node, 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 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a238 = 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 - %a260 = alloca %S.gen.Ref, align 16 - %a266 = alloca i64, align 16 - %a270 = alloca %S.ast.Type, align 16 - %a271 = alloca %S.ast.Type, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca i64, align 16 - %a307 = alloca i64, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = 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 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca %S.gen.Val, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca %S.gen.Val, align 16 - %a372 = alloca %S.gen.Val, align 16 - %a374 = alloca %S.gen.Val, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a389 = alloca %S.gen.Val, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = 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 - %a435 = alloca i64, align 16 - %a438 = alloca i64, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = 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 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca %S.gen.Val, align 16 - %a497 = alloca %S.ast.Type, align 16 - %a498 = alloca %S.ast.Type, align 16 - %a500 = alloca %S.ast.Type, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca i1, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca %S.ast.Type, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a582 = alloca %S.ast.Type, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca i64, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca i64, align 16 - %a686 = alloca i64, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca i64, align 16 - %a719 = alloca %S.gen.FnSig, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a792 = 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 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a802 = 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 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = 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 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a903 = alloca { ptr, i64, i64 }, align 16 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca i64, align 16 - %a923 = alloca %S.gen.Var, 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 - %a935 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a969 = alloca %S.gen.Val, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - 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 %range8630, label %inrange8631 -range8630: - call void @finch_panic_index(ptr @.str.5587, i64 5228, i64 0, i64 %t5) - unreachable -inrange8631: - %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 ptr, ptr %a1 - %t15 = load %S.ast.Node, ptr %a13 - %t16 = call i64 @finch.gen.sumNamed(ptr %t14, %S.ast.Node %t15) - store i64 %t16, ptr %a17 - %t18 = load i64, ptr %a17 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then8632, label %endif8634 -then8632: - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - store i64 1, ptr %a24 - br label %for.cond8635 -for.cond8635: - %t25 = load i64, ptr %a24 - %t26 = icmp slt i64 %t25, %t23 - br i1 %t26, label %for.body8636, label %for.end8638 -for.body8636: - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t29 = load i64, ptr %a24 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range8639, label %inrange8640 -range8639: - call void @finch_panic_index(ptr @.str.5588, i64 5233, i64 %t29, i64 %t31) - unreachable -inrange8640: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t29 - %t35 = load %S.ast.Node, ptr %t34 - store %S.ast.Node %t35, ptr %a36 - call void @finch.copy.S_ast_Node(ptr %a37, ptr %a36) - %t38 = load %S.ast.Node, ptr %a37 - %t39 = load i64, ptr %t27 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t40, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %a20 - %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39 - store %S.ast.Node %t38, ptr %t42 - store i64 %t40, ptr %t27 - br label %for.step8637 -for.step8637: - %t43 = load i64, ptr %a24 - %t44 = add i64 %t43, 1 - store i64 %t44, ptr %a24 - br label %for.cond8635 -for.end8638: - %t45 = load ptr, ptr %a1 - %t46 = load i64, ptr %a17 - %t47 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = load { ptr, i64, i64 }, ptr %a20 - %t50 = load %S.ast.Node, ptr %a2 - %t51 = call %S.gen.Val @finch.gen.sumMake(ptr %t45, i64 %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t49, %S.ast.Node %t50) - call void @finch.drop.arr_S_ast_Node(ptr %a20) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t51 -endif8634: - %t52 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.5589, i64 3, i64 0 }, ptr %a55 - %t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55) - %t57 = icmp ne i32 %t56, 0 - br label %logic.from8641 -logic.from8641: - br i1 %t57, label %logic.rhs8642, label %logic.end8643 -logic.rhs8642: - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = call i64 @finch.gen.lookup(ptr %t58, { ptr, i64, i64 } %t60) - %t62 = icmp slt i64 %t61, 0 - br label %logic.rend8644 -logic.rend8644: - br label %logic.end8643 -logic.end8643: - %t63 = phi i1 [ false, %logic.from8641 ], [ %t62, %logic.rend8644 ] - br i1 %t63, label %then8645, label %endif8647 -then8645: - %t64 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %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 - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a69 - %t72 = call i1 @finch.gen.imports(ptr %t70, { ptr, i64, i64 } %t71) - %t73 = xor i1 %t72, true - br i1 %t73, label %then8648, label %endif8650 -then8648: - %t74 = load ptr, ptr %a1 - %t75 = load %S.ast.Node, ptr %a13 - %t76 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5590, i64 38, 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.5591, i64 32, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.5592, i64 13, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif8650 -endif8650: - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - %t102 = call i64 @finch.gen.findFn(ptr %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t101) - store i64 %t102, ptr %a103 - %t104 = load i64, ptr %a103 - %t105 = icmp sge i64 %t104, 0 - br i1 %t105, label %then8651, label %endif8653 -then8651: - %t106 = load ptr, ptr %a1 - %t107 = load i64, ptr %a103 - %t108 = load %S.ast.Node, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.5593, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t113, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t113, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = call %S.gen.Val @finch.gen.callFn(ptr %t106, i64 %t107, %S.ast.Node %t108, i64 1, { ptr, i64, i64 } %t120, { ptr, i64, i64 } { ptr @.str.5594, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5595, i64 0, i64 0 }) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t121 -endif8653: - %t123 = load ptr, ptr %a1 - %t124 = load { ptr, i64, i64 }, ptr %a69 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = call i64 @finch.gen.findTemplate(ptr %t123, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } { ptr @.str.5596, i64 0, i64 0 }, i1 false) - store i64 %t127, ptr %a128 - %t129 = load i64, ptr %a128 - %t130 = icmp sge i64 %t129, 0 - br i1 %t130, label %then8654, label %endif8656 -then8654: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = load i64, ptr %a128 - %t134 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5597, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t138, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t138, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = call %S.gen.Val @finch.gen.genericCall(ptr %t131, %S.ast.Node %t132, i64 %t133, i64 1, { ptr, i64, i64 } %t145) - store { ptr, i64, i64 } %t145, ptr %a147 - call void @finch_str_drop(ptr %a147) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t146 -endif8656: - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a69 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %t150 - %t152 = call i64 @finch.gen.findEnum(ptr %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t151) - store i64 %t152, ptr %a153 - %t154 = load i64, ptr %a153 - %t155 = icmp sge i64 %t154, 0 - br i1 %t155, label %then8657, label %endif8659 -then8657: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a2 - %t158 = load i64, ptr %a153 - %t159 = call %S.gen.Val @finch.gen.enumFrom(ptr %t156, %S.ast.Node %t157, i64 %t158) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t159 -endif8659: - %t160 = load ptr, ptr %a1 - %t161 = load { ptr, i64, i64 }, ptr %a69 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = call i64 @finch.gen.findStruct(ptr %t160, { ptr, i64, i64 } %t161, { ptr, i64, i64 } %t163) - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a165 - %t167 = icmp sge i64 %t166, 0 - br i1 %t167, label %then8660, label %endif8662 -then8660: - store { ptr, i64, i64 } zeroinitializer, ptr %a168 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - store i64 1, ptr %a172 - br label %for.cond8663 -for.cond8663: - %t173 = load i64, ptr %a172 - %t174 = icmp slt i64 %t173, %t171 - br i1 %t174, label %for.body8664, label %for.end8666 -for.body8664: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t176 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t177 = load i64, ptr %a172 - %t178 = load { ptr, i64, i64 }, ptr %t176 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range8667, label %inrange8668 -range8667: - call void @finch_panic_index(ptr @.str.5598, i64 5258, i64 %t177, i64 %t179) - unreachable -inrange8668: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds %S.ast.Node, ptr %t181, i64 %t177 - %t183 = load %S.ast.Node, ptr %t182 - store %S.ast.Node %t183, ptr %a184 - call void @finch.copy.S_ast_Node(ptr %a185, ptr %a184) - %t186 = load %S.ast.Node, ptr %a185 - %t187 = load i64, ptr %t175 - %t188 = add i64 %t187, 1 - call void @finch_arr_reserve(ptr %a168, i64 %t188, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t189 = load ptr, ptr %a168 - %t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187 - store %S.ast.Node %t186, ptr %t190 - store i64 %t188, ptr %t175 - br label %for.step8665 -for.step8665: - %t191 = load i64, ptr %a172 - %t192 = add i64 %t191, 1 - store i64 %t192, ptr %a172 - br label %for.cond8663 -for.end8666: - %t193 = load ptr, ptr %a1 - %t194 = load i64, ptr %a165 - %t195 = load { ptr, i64, i64 }, ptr %a168 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load %S.ast.Node, ptr %a2 - %t199 = call %S.gen.Val @finch.gen.construct(ptr %t193, i64 %t194, { ptr, i64, i64 } %t195, { ptr, i64, i64 } %t197, %S.ast.Node %t198) - call void @finch.drop.arr_S_ast_Node(ptr %a168) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t199 -endif8662: - %t200 = load ptr, ptr %a1 - %t201 = load %S.ast.Node, ptr %a2 - %t202 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5599, i64 12, 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.5600, i64 35, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t211, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t211, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.5601, i64 1, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t200, %S.ast.Node %t201, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - call void @finch_str_drop(ptr %a69) - br label %endif8647 -endif8647: - %t225 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t226 = call ptr @finch_alloc(i64 %t225) - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 0 - store { ptr, i64, i64 } { ptr @.str.5602, i64 4, i64 0 }, ptr %t227 - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 1 - store { ptr, i64, i64 } { ptr @.str.5603, i64 3, i64 0 }, ptr %t228 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 2 - store { ptr, i64, i64 } { ptr @.str.5604, i64 6, i64 0 }, ptr %t229 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 3 - store { ptr, i64, i64 } { ptr @.str.5605, i64 6, i64 0 }, ptr %t230 - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 4 - store { ptr, i64, i64 } { ptr @.str.5606, i64 5, i64 0 }, ptr %t231 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 5 - store { ptr, i64, i64 } { ptr @.str.5607, i64 6, i64 0 }, ptr %t232 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 6 - store { ptr, i64, i64 } { ptr @.str.5608, i64 4, i64 0 }, ptr %t233 - %t234 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 7 - store { ptr, i64, i64 } { ptr @.str.5609, i64 7, i64 0 }, ptr %t234 - %t235 = insertvalue { ptr, i64, i64 } undef, ptr %t226, 0 - %t236 = insertvalue { ptr, i64, i64 } %t235, i64 8, 1 - %t237 = insertvalue { ptr, i64, i64 } %t236, i64 8, 2 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = load %S.ast.Node, ptr %a13 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, 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 %a238 - store i64 0, ptr %a247 - br label %find.cond8669 -find.cond8669: - %t248 = load i64, ptr %a247 - %t249 = icmp slt i64 %t248, %t245 - br i1 %t249, label %find.body8670, label %find.end8673 -find.body8670: - %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.hit8671, label %find.next8672 -find.hit8671: - store i64 %t248, ptr %a244 - br label %find.end8673 -find.next8672: - %t256 = add i64 %t248, 1 - store i64 %t256, ptr %a247 - br label %find.cond8669 -find.end8673: - %t257 = load i64, ptr %a244 - %t258 = icmp sge i64 %t257, 0 - %t259 = call %S.gen.Ref @finch.gen.ref(ptr %t239, %S.ast.Node %t240, i1 %t258) - store %S.gen.Ref %t259, ptr %a260 - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic8674, label %ok8675 -panic8674: - call void @finch_panic(ptr @.str.5610, i64 5266, ptr @.str.5611) - unreachable -ok8675: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - store i64 %t265, ptr %a266 - %t267 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t268 = getelementptr inbounds %S.gen.Val, ptr %t267, i32 0, i32 1 - %t269 = load %S.ast.Type, ptr %t268 - store %S.ast.Type %t269, ptr %a270 - call void @finch.copy.S_ast_Type(ptr %a271, ptr %a270) - %t272 = load %S.ast.Type, ptr %a271 - store %S.ast.Type %t272, ptr %a273 - %t274 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t275 = load i1, ptr %t274 - br i1 %t275, label %then8676, label %endif8678 -then8676: - %t276 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t277 = getelementptr inbounds %S.gen.Place, ptr %t276, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t281, ptr %a273 - store %S.ast.Type %t282, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - br label %endif8678 -endif8678: - %t284 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - store { ptr, i64, i64 } { ptr @.str.5612, i64 5, i64 0 }, ptr %a287 - %t288 = call i32 @finch_str_eq(ptr %a286, ptr %a287) - %t289 = icmp ne i32 %t288, 0 - br i1 %t289, label %then8679, label %endif8681 -then8679: - store { ptr, i64, i64 } { ptr @.str.5613, i64 0, i64 0 }, ptr %a290 - %t291 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t292 = load i1, ptr %t291 - br i1 %t292, label %then8682, label %else8683 -then8682: - %t293 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t294 = getelementptr inbounds %S.gen.Place, ptr %t293, 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 - %t299 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t298, ptr %a290 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_drop(ptr %a300) - br label %endif8684 -else8683: - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t302 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store i64 -1, ptr %a304 - %t305 = load i64, ptr %t301 - %t306 = load ptr, ptr %a238 - store i64 0, ptr %a307 - br label %find.cond8685 -find.cond8685: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t305 - br i1 %t309, label %find.body8686, label %find.end8689 -find.body8686: - %t310 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 %t308 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } %t303, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br i1 %t315, label %find.hit8687, label %find.next8688 -find.hit8687: - store i64 %t308, ptr %a304 - br label %find.end8689 -find.next8688: - %t316 = add i64 %t308, 1 - store i64 %t316, ptr %a307 - br label %find.cond8685 -find.end8689: - %t317 = load i64, ptr %a304 - %t318 = icmp sge i64 %t317, 0 - br i1 %t318, label %then8690, label %endif8692 -then8690: - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Node, ptr %a2 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.5614, i64 63, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a323 - call void @finch.gen.fail(ptr %t319, %S.ast.Node %t320, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif8692 -endif8692: - %t328 = load ptr, ptr %a1 - %t329 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t330 = load %S.gen.Val, ptr %t329 - %t331 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t328, %S.gen.Val %t330) - %t332 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t331, ptr %a290 - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t335 = getelementptr inbounds %S.gen.Val, ptr %t334, i32 0, i32 2 - %t336 = load i1, ptr %t335 - br i1 %t336, label %then8693, label %endif8695 -then8693: - %t337 = load ptr, ptr %a1 - %t338 = load { ptr, i64, i64 }, ptr %a290 - %t339 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t337, { ptr, i64, i64 } %t338, %S.ast.Type %t339) - br label %endif8695 -endif8695: - br label %endif8684 -endif8684: - %t340 = load ptr, ptr %a1 - %t341 = load %S.ast.Node, ptr %a2 - %t342 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.gen.noteMethod(ptr %t340, %S.ast.Node %t341, { ptr, i64, i64 } %t342) - store { ptr, i64, i64 } %t342, ptr %a343 - call void @finch.drop.arr_S_docs_Doc(ptr %a343) - %t344 = load ptr, ptr %a1 - %t345 = load %S.ast.Node, ptr %a2 - %t346 = load { ptr, i64, i64 }, ptr %a290 - %t347 = load %S.ast.Type, ptr %a273 - %t348 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t344, %S.ast.Node %t345, { ptr, i64, i64 } %t346, %S.ast.Type %t347) - store %S.gen.Val %t348, ptr %a349 - %t350 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t351 = load i1, ptr %t350 - %t352 = xor i1 %t351, true - br label %logic.from8696 -logic.from8696: - br i1 %t352, label %logic.rhs8697, label %logic.end8698 -logic.rhs8697: - %t353 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t354 = getelementptr inbounds %S.gen.Val, ptr %t353, i32 0, i32 2 - %t355 = load i1, ptr %t354 - br label %logic.rend8699 -logic.rend8699: - br label %logic.end8698 -logic.end8698: - %t356 = phi i1 [ false, %logic.from8696 ], [ %t355, %logic.rend8699 ] - br i1 %t356, label %then8700, label %endif8702 -then8700: - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a290 - %t359 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359) - br label %endif8702 -endif8702: - %t360 = load ptr, ptr %a1 - %t361 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t360, i64 %t361) - %t362 = load %S.gen.Val, ptr %a349 - call void @finch_str_drop(ptr %a290) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t362 -endif8681: - %t363 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5615, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then8703, label %endif8705 -then8703: - %t369 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t370 = load %S.gen.Val, ptr %t369 - store %S.gen.Val %t370, ptr %a371 - call void @finch.copy.S_gen_Val(ptr %a372, ptr %a371) - %t373 = load %S.gen.Val, ptr %a372 - store %S.gen.Val %t373, ptr %a374 - %t375 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t376 = load i1, ptr %t375 - br i1 %t376, label %then8706, label %endif8708 -then8706: - %t377 = load ptr, ptr %a1 - %t378 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t379 = getelementptr inbounds %S.gen.Place, ptr %t378, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call { ptr, i64, i64 } @finch.gen.load(ptr %t377, { ptr, i64, i64 } { ptr @.str.5616, i64 17, i64 0 }, { ptr, i64, i64 } %t380) - %t382 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t381, 0 - %t383 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t383, ptr %a384 - call void @finch.copy.S_ast_Type(ptr %a385, ptr %a384) - %t386 = load %S.ast.Type, ptr %a385 - %t387 = insertvalue %S.gen.Val %t382, %S.ast.Type %t386, 1 - %t388 = load %S.gen.Val, ptr %a374 - store %S.gen.Val %t387, ptr %a374 - store %S.gen.Val %t388, ptr %a389 - call void @finch.drop.S_gen_Val(ptr %a389) - br label %endif8708 -endif8708: - %t390 = load ptr, ptr %a1 - %t391 = load %S.ast.Node, ptr %a2 - %t392 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.gen.noteMethod(ptr %t390, %S.ast.Node %t391, { ptr, i64, i64 } %t392) - store { ptr, i64, i64 } %t392, ptr %a393 - call void @finch.drop.arr_S_docs_Doc(ptr %a393) - %t394 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t395 = load i1, ptr %t394 - %t396 = xor i1 %t395, true - br i1 %t396, label %then8709, label %endif8711 -then8709: - %t397 = load ptr, ptr %a1 - %t398 = load %S.gen.Val, ptr %a374 - call void @finch.gen.hold(ptr %t397, %S.gen.Val %t398) - br label %endif8711 -endif8711: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a2 - %t401 = load ptr, ptr %a1 - %t402 = load %S.gen.Val, ptr %a374 - %t403 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t401, %S.gen.Val %t402) - %t404 = call %S.gen.Val @finch.gen.strMethod(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t403) - store { ptr, i64, i64 } %t403, ptr %a405 - call void @finch_str_drop(ptr %a405) - store %S.gen.Val %t404, ptr %a406 - %t407 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t408 = load i1, ptr %t407 - %t409 = xor i1 %t408, true - br i1 %t409, label %then8712, label %endif8714 -then8712: - %t410 = load ptr, ptr %a1 - %t411 = load %S.gen.Val, ptr %a374 - call void @finch.gen.release(ptr %t410, %S.gen.Val %t411) - br label %endif8714 -endif8714: - %t412 = load ptr, ptr %a1 - %t413 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t412, i64 %t413) - %t414 = load %S.gen.Val, ptr %a406 - call void @finch.drop.S_gen_Val(ptr %a374) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t414 -endif8705: - %t415 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5617, i64 3, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then8715, label %endif8717 -then8715: - store { ptr, i64, i64 } { ptr @.str.5618, i64 0, i64 0 }, ptr %a421 - %t422 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t423 = load i1, ptr %t422 - br i1 %t423, label %then8718, label %else8719 -then8718: - %t424 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t425 = getelementptr inbounds %S.gen.Place, ptr %t424, i32 0, i32 0 - %t426 = load { ptr, i64, i64 }, ptr %t425 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch_str_copy(ptr %a428, ptr %a427) - %t429 = load { ptr, i64, i64 }, ptr %a428 - %t430 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t429, ptr %a421 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - br label %endif8720 -else8719: - %t432 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t433 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t434 = load { ptr, i64, i64 }, ptr %t433 - store i64 -1, ptr %a435 - %t436 = load i64, ptr %t432 - %t437 = load ptr, ptr %a238 - store i64 0, ptr %a438 - br label %find.cond8721 -find.cond8721: - %t439 = load i64, ptr %a438 - %t440 = icmp slt i64 %t439, %t436 - br i1 %t440, label %find.body8722, label %find.end8725 -find.body8722: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t437, i64 %t439 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br i1 %t446, label %find.hit8723, label %find.next8724 -find.hit8723: - store i64 %t439, ptr %a435 - br label %find.end8725 -find.next8724: - %t447 = add i64 %t439, 1 - store i64 %t447, ptr %a438 - br label %find.cond8721 -find.end8725: - %t448 = load i64, ptr %a435 - %t449 = icmp sge i64 %t448, 0 - br i1 %t449, label %then8726, label %endif8728 -then8726: - %t450 = load ptr, ptr %a1 - %t451 = load %S.ast.Node, ptr %a2 - %t452 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t453 = load { ptr, i64, i64 }, ptr %t452 - store { ptr, i64, i64 } %t453, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.5619, i64 61, i64 0 }, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a454 - call void @finch.gen.fail(ptr %t450, %S.ast.Node %t451, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - br label %endif8728 -endif8728: - %t459 = load ptr, ptr %a1 - %t460 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t461 = load %S.gen.Val, ptr %t460 - %t462 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t459, %S.gen.Val %t461) - %t463 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t462, ptr %a421 - store { ptr, i64, i64 } %t463, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t466 = getelementptr inbounds %S.gen.Val, ptr %t465, i32 0, i32 2 - %t467 = load i1, ptr %t466 - br i1 %t467, label %then8729, label %endif8731 -then8729: - %t468 = load ptr, ptr %a1 - %t469 = load { ptr, i64, i64 }, ptr %a421 - %t470 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t468, { ptr, i64, i64 } %t469, %S.ast.Type %t470) - br label %endif8731 -endif8731: - br label %endif8720 -endif8720: - %t471 = load ptr, ptr %a1 - %t472 = load %S.ast.Node, ptr %a2 - %t473 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.gen.noteMethod(ptr %t471, %S.ast.Node %t472, { ptr, i64, i64 } %t473) - store { ptr, i64, i64 } %t473, ptr %a474 - call void @finch.drop.arr_S_docs_Doc(ptr %a474) - %t475 = load ptr, ptr %a1 - %t476 = load %S.ast.Node, ptr %a2 - %t477 = load { ptr, i64, i64 }, ptr %a421 - %t478 = load %S.ast.Type, ptr %a273 - %t479 = call %S.gen.Val @finch.gen.mapMethod(ptr %t475, %S.ast.Node %t476, { ptr, i64, i64 } %t477, %S.ast.Type %t478) - store %S.gen.Val %t479, ptr %a480 - %t481 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t482 = load i1, ptr %t481 - %t483 = xor i1 %t482, true - br label %logic.from8732 -logic.from8732: - br i1 %t483, label %logic.rhs8733, label %logic.end8734 -logic.rhs8733: - %t484 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t485 = getelementptr inbounds %S.gen.Val, ptr %t484, i32 0, i32 2 - %t486 = load i1, ptr %t485 - br label %logic.rend8735 -logic.rend8735: - br label %logic.end8734 -logic.end8734: - %t487 = phi i1 [ false, %logic.from8732 ], [ %t486, %logic.rend8735 ] - br i1 %t487, label %then8736, label %endif8738 -then8736: - %t488 = load ptr, ptr %a1 - %t489 = load { ptr, i64, i64 }, ptr %a421 - %t490 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t488, { ptr, i64, i64 } %t489, %S.ast.Type %t490) - br label %endif8738 -endif8738: - %t491 = load ptr, ptr %a1 - %t492 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t491, i64 %t492) - %t493 = load %S.gen.Val, ptr %a480 - call void @finch_str_drop(ptr %a421) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t493 -endif8717: - %t494 = load ptr, ptr %a1 - %t495 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t494, i64 %t495) - %t496 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t496, ptr %a497 - call void @finch.copy.S_ast_Type(ptr %a498, ptr %a497) - %t499 = load %S.ast.Type, ptr %a498 - store %S.ast.Type %t499, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.5620, i64 0, i64 0 }, ptr %a501 - store i1 false, ptr %a502 - %t503 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t504 = load { ptr, i64, i64 }, ptr %t503 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5621, i64 3, i64 0 }, ptr %a506 - %t507 = call i32 @finch_str_eq(ptr %a505, ptr %a506) - %t508 = icmp ne i32 %t507, 0 - br label %logic.from8739 -logic.from8739: - br i1 %t508, label %logic.rhs8740, label %logic.end8741 -logic.rhs8740: - %t509 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i32 0, i32 1 - %t511 = load i64, ptr %t510 - %t512 = icmp sgt i64 %t511, 0 - br label %logic.rend8742 -logic.rend8742: - br label %logic.end8741 -logic.end8741: - %t513 = phi i1 [ false, %logic.from8739 ], [ %t512, %logic.rend8742 ] - br label %logic.from8743 -logic.from8743: - br i1 %t513, label %logic.rhs8744, label %logic.end8745 -logic.rhs8744: - %t514 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range8746, label %inrange8747 -range8746: - call void @finch_panic_index(ptr @.str.5622, i64 5333, i64 0, i64 %t516) - unreachable -inrange8747: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = getelementptr inbounds %S.ast.Type, ptr %t519, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5623, i64 6, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8748 -logic.rend8748: - br label %logic.end8745 -logic.end8745: - %t526 = phi i1 [ false, %logic.from8743 ], [ %t525, %logic.rend8748 ] - br i1 %t526, label %then8749, label %else8750 -then8749: - %t527 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t528 = getelementptr inbounds %S.gen.Val, ptr %t527, i32 0, i32 0 - %t529 = load { ptr, i64, i64 }, ptr %t528 - store { ptr, i64, i64 } %t529, ptr %a530 - call void @finch_str_copy(ptr %a531, ptr %a530) - %t532 = load { ptr, i64, i64 }, ptr %a531 - store { ptr, i64, i64 } %t532, ptr %a533 - %t534 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t535 = load i1, ptr %t534 - br i1 %t535, label %then8752, label %endif8754 -then8752: - %t536 = load ptr, ptr %a1 - %t537 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t538 = getelementptr inbounds %S.gen.Place, ptr %t537, i32 0, i32 0 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = call { ptr, i64, i64 } @finch.gen.load(ptr %t536, { ptr, i64, i64 } { ptr @.str.5624, i64 3, i64 0 }, { ptr, i64, i64 } %t539) - %t541 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t540, ptr %a533 - store { ptr, i64, i64 } %t541, ptr %a542 - call void @finch_str_drop(ptr %a542) - br label %endif8754 -endif8754: - %t543 = load ptr, ptr %a1 - %t544 = load ptr, ptr %a1 - %t545 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } { ptr @.str.5625, i64 12, i64 0 }, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a546 - store { ptr, i64, i64 } %t549, ptr %a551 - store { ptr, i64, i64 } { ptr @.str.5626, i64 6, i64 0 }, ptr %a552 - call void @finch_str_concat(ptr %a550, ptr %a551, ptr %a552) - store { ptr, i64, i64 } %t549, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a550 - %t555 = call { ptr, i64, i64 } @finch.gen.op(ptr %t544, { ptr, i64, i64 } %t554) - store { ptr, i64, i64 } %t554, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t558 = load { ptr, i64, i64 }, ptr %t557 - store { ptr, i64, i64 } { ptr @.str.5627, i64 8, i64 0 }, 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.5628, i64 20, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t543, { ptr, i64, i64 } %t555, { ptr, i64, i64 } %t567, %S.ast.Node %t568) - store { ptr, i64, i64 } %t555, ptr %a569 - call void @finch_str_drop(ptr %a569) - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t572 = load { ptr, i64, i64 }, ptr %t571 - %t573 = extractvalue { ptr, i64, i64 } %t572, 1 - %t574 = icmp uge i64 0, %t573 - br i1 %t574, label %range8755, label %inrange8756 -range8755: - call void @finch_panic_index(ptr @.str.5629, i64 5339, i64 0, i64 %t573) - unreachable -inrange8756: - %t575 = extractvalue { ptr, i64, i64 } %t572, 0 - %t576 = getelementptr inbounds %S.ast.Type, ptr %t575, i64 0 - %t577 = load %S.ast.Type, ptr %t576 - store %S.ast.Type %t577, ptr %a578 - call void @finch.copy.S_ast_Type(ptr %a579, ptr %a578) - %t580 = load %S.ast.Type, ptr %a579 - %t581 = load %S.ast.Type, ptr %a500 - store %S.ast.Type %t580, ptr %a500 - store %S.ast.Type %t581, ptr %a582 - call void @finch.drop.S_ast_Type(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t583, ptr %a584 - call void @finch_str_copy(ptr %a585, ptr %a584) - %t586 = load { ptr, i64, i64 }, ptr %a585 - %t587 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t586, ptr %a501 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_drop(ptr %a588) - call void @finch_str_drop(ptr %a533) - br label %endif8751 -else8750: - %t589 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t590 = load { ptr, i64, i64 }, ptr %t589 - store { ptr, i64, i64 } %t590, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.5630, i64 6, i64 0 }, ptr %a592 - %t593 = call i32 @finch_str_eq(ptr %a591, ptr %a592) - %t594 = icmp ne i32 %t593, 0 - br label %logic.from8757 -logic.from8757: - br i1 %t594, label %logic.end8759, label %logic.rhs8758 -logic.rhs8758: - %t595 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t596 = load { ptr, i64, i64 }, ptr %t595 - store { ptr, i64, i64 } %t596, ptr %a597 - store { ptr, i64, i64 } { ptr @.str.5631, i64 4, i64 0 }, ptr %a598 - %t599 = call i32 @finch_str_eq(ptr %a597, ptr %a598) - %t600 = icmp ne i32 %t599, 0 - br label %logic.rend8760 -logic.rend8760: - br label %logic.end8759 -logic.end8759: - %t601 = phi i1 [ true, %logic.from8757 ], [ %t600, %logic.rend8760 ] - br i1 %t601, label %then8761, label %endif8763 -then8761: - %t602 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t603 = load i1, ptr %t602 - br i1 %t603, label %then8764, label %else8765 -then8764: - %t604 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t605 = getelementptr inbounds %S.gen.Place, ptr %t604, i32 0, i32 0 - %t606 = load { ptr, i64, i64 }, ptr %t605 - store { ptr, i64, i64 } %t606, ptr %a607 - call void @finch_str_copy(ptr %a608, ptr %a607) - %t609 = load { ptr, i64, i64 }, ptr %a608 - %t610 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t609, ptr %a501 - store { ptr, i64, i64 } %t610, ptr %a611 - call void @finch_str_drop(ptr %a611) - br label %endif8766 -else8765: - %t612 = load ptr, ptr %a1 - %t613 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t614 = load %S.gen.Val, ptr %t613 - %t615 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t612, %S.gen.Val %t614) - %t616 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t615, ptr %a501 - store { ptr, i64, i64 } %t616, ptr %a617 - call void @finch_str_drop(ptr %a617) - store i1 true, ptr %a502 - br label %endif8766 -endif8766: - br label %endif8763 -endif8763: - br label %endif8751 -endif8751: - %t618 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - store { ptr, i64, i64 } %t619, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5632, i64 6, i64 0 }, ptr %a621 - %t622 = call i32 @finch_str_eq(ptr %a620, ptr %a621) - %t623 = icmp ne i32 %t622, 0 - br label %logic.from8767 -logic.from8767: - br i1 %t623, label %logic.end8769, label %logic.rhs8768 -logic.rhs8768: - %t624 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t625 = load { ptr, i64, i64 }, ptr %t624 - store { ptr, i64, i64 } %t625, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5633, i64 4, i64 0 }, ptr %a627 - %t628 = call i32 @finch_str_eq(ptr %a626, ptr %a627) - %t629 = icmp ne i32 %t628, 0 - br label %logic.rend8770 -logic.rend8770: - br label %logic.end8769 -logic.end8769: - %t630 = phi i1 [ true, %logic.from8767 ], [ %t629, %logic.rend8770 ] - br i1 %t630, label %then8771, label %endif8773 -then8771: - %t631 = load ptr, ptr %a1 - %t632 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t633 = load { ptr, i64, i64 }, ptr %t632 - %t634 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t635 = load { ptr, i64, i64 }, ptr %t634 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = call i64 @finch.gen.findMethod(ptr %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635, { ptr, i64, i64 } %t637) - store i64 %t638, ptr %a639 - %t640 = load i64, ptr %a639 - %t641 = icmp slt i64 %t640, 0 - br label %logic.from8774 -logic.from8774: - br i1 %t641, label %logic.rhs8775, label %logic.end8776 -logic.rhs8775: - %t642 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t643 = load { ptr, i64, i64 }, ptr %t642 - store { ptr, i64, i64 } %t643, ptr %a644 - store { ptr, i64, i64 } { ptr @.str.5634, i64 6, i64 0 }, ptr %a645 - %t646 = call i32 @finch_str_eq(ptr %a644, ptr %a645) - %t647 = icmp ne i32 %t646, 0 - br label %logic.rend8777 -logic.rend8777: - br label %logic.end8776 -logic.end8776: - %t648 = phi i1 [ false, %logic.from8774 ], [ %t647, %logic.rend8777 ] - br i1 %t648, label %then8778, label %endif8780 -then8778: - %t649 = load ptr, ptr %a1 - %t650 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t653 = load { ptr, i64, i64 }, ptr %t652 - %t654 = call i64 @finch.gen.findStruct(ptr %t649, { ptr, i64, i64 } %t651, { ptr, i64, i64 } %t653) - store i64 %t654, ptr %a655 - %t656 = load ptr, ptr %a1 - %t657 = icmp eq ptr %t656, null - br i1 %t657, label %panic8781, label %ok8782 -panic8781: - call void @finch_panic(ptr @.str.5635, i64 5353, ptr @.str.5636) - unreachable -ok8782: - %t658 = getelementptr inbounds %S.gen.Gen, ptr %t656, i32 0, i32 16 - %t659 = load i64, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %t658 - %t661 = extractvalue { ptr, i64, i64 } %t660, 1 - %t662 = icmp uge i64 %t659, %t661 - br i1 %t662, label %range8783, label %inrange8784 -range8783: - call void @finch_panic_index(ptr @.str.5637, i64 5353, i64 %t659, i64 %t661) - unreachable -inrange8784: - %t663 = extractvalue { ptr, i64, i64 } %t660, 0 - %t664 = getelementptr inbounds %S.gen.StructDef, ptr %t663, i64 %t659 - %t665 = getelementptr inbounds %S.gen.StructDef, ptr %t664, i32 0, i32 5 - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t667 = load i64, ptr %t666 - %t668 = icmp sgt i64 %t667, 0 - br i1 %t668, label %then8785, label %endif8787 -then8785: - %t669 = load ptr, ptr %a1 - %t670 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t671 = load { ptr, i64, i64 }, ptr %t670 - %t672 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t673 = load { ptr, i64, i64 }, ptr %t672 - %t674 = load ptr, ptr %a1 - %t675 = icmp eq ptr %t674, null - br i1 %t675, label %panic8788, label %ok8789 -panic8788: - call void @finch_panic(ptr @.str.5638, i64 5354, ptr @.str.5639) - unreachable -ok8789: - %t676 = getelementptr inbounds %S.gen.Gen, ptr %t674, i32 0, i32 16 - %t677 = load i64, ptr %a655 - %t678 = load { ptr, i64, i64 }, ptr %t676 - %t679 = extractvalue { ptr, i64, i64 } %t678, 1 - %t680 = icmp uge i64 %t677, %t679 - br i1 %t680, label %range8790, label %inrange8791 -range8790: - call void @finch_panic_index(ptr @.str.5640, i64 5354, i64 %t677, i64 %t679) - unreachable -inrange8791: - %t681 = extractvalue { ptr, i64, i64 } %t678, 0 - %t682 = getelementptr inbounds %S.gen.StructDef, ptr %t681, i64 %t677 - %t683 = getelementptr inbounds %S.gen.StructDef, ptr %t682, i32 0, i32 5 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findTemplate(ptr %t669, { ptr, i64, i64 } %t671, { ptr, i64, i64 } %t673, { ptr, i64, i64 } %t684, i1 false) - store i64 %t685, ptr %a686 - %t687 = load i64, ptr %a686 - %t688 = icmp sge i64 %t687, 0 - br i1 %t688, label %then8792, label %endif8794 -then8792: - %t689 = load ptr, ptr %a1 - %t690 = load i64, ptr %a686 - %t691 = load ptr, ptr %a1 - %t692 = icmp eq ptr %t691, null - br i1 %t692, label %panic8795, label %ok8796 -panic8795: - call void @finch_panic(ptr @.str.5641, i64 5356, ptr @.str.5642) - unreachable -ok8796: - %t693 = getelementptr inbounds %S.gen.Gen, ptr %t691, i32 0, i32 16 - %t694 = load i64, ptr %a655 - %t695 = load { ptr, i64, i64 }, ptr %t693 - %t696 = extractvalue { ptr, i64, i64 } %t695, 1 - %t697 = icmp uge i64 %t694, %t696 - br i1 %t697, label %range8797, label %inrange8798 -range8797: - call void @finch_panic_index(ptr @.str.5643, i64 5356, i64 %t694, i64 %t696) - unreachable -inrange8798: - %t698 = extractvalue { ptr, i64, i64 } %t695, 0 - %t699 = getelementptr inbounds %S.gen.StructDef, ptr %t698, i64 %t694 - %t700 = getelementptr inbounds %S.gen.StructDef, ptr %t699, i32 0, i32 7 - %t701 = load { ptr, i64, i64 }, ptr %t700 - %t702 = load %S.ast.Type, ptr %a500 - %t703 = load %S.ast.Node, ptr %a2 - %t704 = call i64 @finch.gen.instFn(ptr %t689, i64 %t690, { ptr, i64, i64 } %t701, %S.ast.Type %t702, %S.ast.Node %t703) - store i64 %t704, ptr %a639 - br label %endif8794 -endif8794: - br label %endif8787 -endif8787: - br label %endif8780 -endif8780: - %t705 = load i64, ptr %a639 - %t706 = icmp slt i64 %t705, 0 - br i1 %t706, label %then8799, label %endif8801 -then8799: - store { ptr, i64, i64 } zeroinitializer, ptr %a707 - %t708 = load ptr, ptr %a1 - %t709 = icmp eq ptr %t708, null - br i1 %t709, label %panic8802, label %ok8803 -panic8802: - call void @finch_panic(ptr @.str.5644, i64 5362, ptr @.str.5645) - unreachable -ok8803: - %t710 = getelementptr inbounds %S.gen.Gen, ptr %t708, i32 0, i32 15 - store i64 0, ptr %a711 - br label %each.cond8804 -each.cond8804: - %t712 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i32 0, i32 1 - %t713 = load i64, ptr %t712 - %t714 = load i64, ptr %a711 - %t715 = icmp slt i64 %t714, %t713 - br i1 %t715, label %each.body8805, label %each.end8807 -each.body8805: - %t716 = load ptr, ptr %t710 - %t717 = getelementptr inbounds %S.gen.FnSig, ptr %t716, i64 %t714 - %t718 = load %S.gen.FnSig, ptr %t717 - store %S.gen.FnSig %t718, ptr %a719 - %t720 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 2 - %t721 = load { ptr, i64, i64 }, ptr %t720 - %t722 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t723 = load { ptr, i64, i64 }, ptr %t722 - store { ptr, i64, i64 } %t721, ptr %a724 - store { ptr, i64, i64 } %t723, ptr %a725 - %t726 = call i32 @finch_str_eq(ptr %a724, ptr %a725) - %t727 = icmp ne i32 %t726, 0 - br label %logic.from8808 -logic.from8808: - br i1 %t727, label %logic.rhs8809, label %logic.end8810 -logic.rhs8809: - %t728 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 3 - %t729 = load { ptr, i64, i64 }, ptr %t728 - %t730 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t731 = load { ptr, i64, i64 }, ptr %t730 - store { ptr, i64, i64 } %t729, ptr %a732 - store { ptr, i64, i64 } %t731, ptr %a733 - %t734 = call i32 @finch_str_eq(ptr %a732, ptr %a733) - %t735 = icmp ne i32 %t734, 0 - br label %logic.rend8811 -logic.rend8811: - br label %logic.end8810 -logic.end8810: - %t736 = phi i1 [ false, %logic.from8808 ], [ %t735, %logic.rend8811 ] - br i1 %t736, label %then8812, label %endif8814 -then8812: - %t737 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t738 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 1 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_copy(ptr %a741, ptr %a740) - %t742 = load { ptr, i64, i64 }, ptr %a741 - %t743 = load i64, ptr %t737 - %t744 = add i64 %t743, 1 - call void @finch_arr_reserve(ptr %a707, i64 %t744, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t745 = load ptr, ptr %a707 - %t746 = getelementptr inbounds { ptr, i64, i64 }, ptr %t745, i64 %t743 - store { ptr, i64, i64 } %t742, ptr %t746 - store i64 %t744, ptr %t737 - br label %endif8814 -endif8814: - br label %each.step8806 -each.step8806: - %t747 = load i64, ptr %a711 - %t748 = add i64 %t747, 1 - store i64 %t748, ptr %a711 - br label %each.cond8804 -each.end8807: - %t749 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t750 = load i64, ptr %t749 - %t751 = icmp eq i64 %t750, 0 - br i1 %t751, label %then8815, label %endif8817 -then8815: - %t752 = load ptr, ptr %a1 - %t753 = load %S.ast.Node, ptr %a2 - %t754 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t755 = load { ptr, i64, i64 }, ptr %t754 - store { ptr, i64, i64 } { ptr @.str.5646, i64 4, i64 0 }, ptr %a757 - store { ptr, i64, i64 } %t755, ptr %a758 - call void @finch_str_concat(ptr %a756, ptr %a757, ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.5647, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = load %S.ast.Type, ptr %a500 - %t766 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t765) - store { ptr, i64, i64 } %t764, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t764, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.5648, i64 34, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t779 = load { ptr, i64, i64 }, ptr %t778 - store { ptr, i64, i64 } %t777, ptr %a781 - store { ptr, i64, i64 } %t779, ptr %a782 - call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) - store { ptr, i64, i64 } %t777, ptr %a783 - call void @finch_str_drop(ptr %a783) - %t784 = load { ptr, i64, i64 }, ptr %a780 - store { ptr, i64, i64 } %t784, ptr %a786 - store { ptr, i64, i64 } { ptr @.str.5649, i64 1, i64 0 }, ptr %a787 - call void @finch_str_concat(ptr %a785, ptr %a786, ptr %a787) - store { ptr, i64, i64 } %t784, ptr %a788 - call void @finch_str_drop(ptr %a788) - %t789 = load { ptr, i64, i64 }, ptr %a785 - %t790 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t791 = load { ptr, i64, i64 }, ptr %t790 - store { ptr, i64, i64 } %t789, ptr %a793 - store { ptr, i64, i64 } %t791, ptr %a794 - call void @finch_str_concat(ptr %a792, ptr %a793, ptr %a794) - store { ptr, i64, i64 } %t789, ptr %a795 - call void @finch_str_drop(ptr %a795) - %t796 = load { ptr, i64, i64 }, ptr %a792 - store { ptr, i64, i64 } %t796, ptr %a798 - store { ptr, i64, i64 } { ptr @.str.5650, i64 13, i64 0 }, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - store { ptr, i64, i64 } %t796, ptr %a800 - call void @finch_str_drop(ptr %a800) - %t801 = load { ptr, i64, i64 }, ptr %a797 - call void @finch.gen.fail(ptr %t752, %S.ast.Node %t753, { ptr, i64, i64 } %t801) - store { ptr, i64, i64 } %t801, ptr %a802 - call void @finch_str_drop(ptr %a802) - br label %endif8817 -endif8817: - %t803 = load ptr, ptr %a1 - %t804 = load %S.ast.Node, ptr %a2 - %t805 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t806 = load { ptr, i64, i64 }, ptr %t805 - store { ptr, i64, i64 } { ptr @.str.5651, i64 4, 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.5652, i64 1, i64 0 }, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - %t816 = load %S.ast.Type, ptr %a500 - %t817 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t816) - store { ptr, i64, i64 } %t815, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t815, ptr %a821 - call void @finch_str_drop(ptr %a821) - store { ptr, i64, i64 } %t817, ptr %a822 - call void @finch_str_drop(ptr %a822) - %t823 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t823, ptr %a825 - store { ptr, i64, i64 } { ptr @.str.5653, i64 16, i64 0 }, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t823, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - %t829 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t830 = load { ptr, i64, i64 }, ptr %t829 - store { ptr, i64, i64 } %t828, ptr %a832 - store { ptr, i64, i64 } %t830, ptr %a833 - call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) - store { ptr, i64, i64 } %t828, ptr %a834 - call void @finch_str_drop(ptr %a834) - %t835 = load { ptr, i64, i64 }, ptr %a831 - store { ptr, i64, i64 } %t835, ptr %a837 - store { ptr, i64, i64 } { ptr @.str.5654, i64 11, i64 0 }, ptr %a838 - call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838) - store { ptr, i64, i64 } %t835, ptr %a839 - call void @finch_str_drop(ptr %a839) - %t840 = load { ptr, i64, i64 }, ptr %a836 - %t841 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5655, i64 2, i64 0 }, ptr %a842 - call void @finch_str_join(ptr %a843, ptr %a707, ptr %a842) - %t844 = load { ptr, i64, i64 }, ptr %a843 - store { ptr, i64, i64 } %t840, ptr %a846 - store { ptr, i64, i64 } %t844, ptr %a847 - call void @finch_str_concat(ptr %a845, ptr %a846, ptr %a847) - store { ptr, i64, i64 } %t840, ptr %a848 - call void @finch_str_drop(ptr %a848) - store { ptr, i64, i64 } %t844, ptr %a849 - call void @finch_str_drop(ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5656, i64 1, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - call void @finch.gen.fail(ptr %t803, %S.ast.Node %t804, { ptr, i64, i64 } %t855) - store { ptr, i64, i64 } %t855, ptr %a856 - call void @finch_str_drop(ptr %a856) - call void @finch.drop.arr_str(ptr %a707) - br label %endif8801 -endif8801: - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic8818, label %ok8819 -panic8818: - call void @finch_panic(ptr @.str.5657, i64 5373, ptr @.str.5658) - unreachable -ok8819: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 15 - %t860 = load i64, ptr %a639 - %t861 = load { ptr, i64, i64 }, ptr %t859 - %t862 = extractvalue { ptr, i64, i64 } %t861, 1 - %t863 = icmp uge i64 %t860, %t862 - br i1 %t863, label %range8820, label %inrange8821 -range8820: - call void @finch_panic_index(ptr @.str.5659, i64 5373, i64 %t860, i64 %t862) - unreachable -inrange8821: - %t864 = extractvalue { ptr, i64, i64 } %t861, 0 - %t865 = getelementptr inbounds %S.gen.FnSig, ptr %t864, i64 %t860 - %t866 = getelementptr inbounds %S.gen.FnSig, ptr %t865, i32 0, i32 10 - %t867 = load i1, ptr %t866 - br label %logic.from8822 -logic.from8822: - br i1 %t867, label %logic.rhs8823, label %logic.end8824 -logic.rhs8823: - %t868 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t869 = load { ptr, i64, i64 }, ptr %t868 - store { ptr, i64, i64 } %t869, ptr %a870 - store { ptr, i64, i64 } { ptr @.str.5660, i64 6, i64 0 }, ptr %a871 - %t872 = call i32 @finch_str_eq(ptr %a870, ptr %a871) - %t873 = icmp ne i32 %t872, 0 - br label %logic.from8825 -logic.from8825: - br i1 %t873, label %logic.end8827, label %logic.rhs8826 -logic.rhs8826: - %t874 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t875 = load { ptr, i64, i64 }, ptr %t874 - store { ptr, i64, i64 } %t875, ptr %a876 - store { ptr, i64, i64 } { ptr @.str.5661, i64 4, i64 0 }, ptr %a877 - %t878 = call i32 @finch_str_eq(ptr %a876, ptr %a877) - %t879 = icmp ne i32 %t878, 0 - br label %logic.rend8828 -logic.rend8828: - br label %logic.end8827 -logic.end8827: - %t880 = phi i1 [ true, %logic.from8825 ], [ %t879, %logic.rend8828 ] - br label %logic.rend8829 -logic.rend8829: - br label %logic.end8824 -logic.end8824: - %t881 = phi i1 [ false, %logic.from8822 ], [ %t880, %logic.rend8829 ] - br i1 %t881, label %then8830, label %endif8832 -then8830: - %t882 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t883 = load i1, ptr %t882 - %t884 = xor i1 %t883, true - br i1 %t884, label %then8833, label %endif8835 -then8833: - %t885 = load ptr, ptr %a1 - %t886 = load %S.ast.Node, ptr %a2 - %t887 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t888 = load { ptr, i64, i64 }, ptr %t887 - store { ptr, i64, i64 } %t888, ptr %a890 - store { ptr, i64, i64 } { ptr @.str.5662, i64 28, i64 0 }, ptr %a891 - call void @finch_str_concat(ptr %a889, ptr %a890, ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a889 - %t893 = load %S.ast.Type, ptr %a500 - %t894 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t893) - store { ptr, i64, i64 } %t892, ptr %a896 - store { ptr, i64, i64 } %t894, ptr %a897 - call void @finch_str_concat(ptr %a895, ptr %a896, ptr %a897) - store { ptr, i64, i64 } %t892, ptr %a898 - call void @finch_str_drop(ptr %a898) - store { ptr, i64, i64 } %t894, ptr %a899 - call void @finch_str_drop(ptr %a899) - %t900 = load { ptr, i64, i64 }, ptr %a895 - store { ptr, i64, i64 } %t900, ptr %a902 - store { ptr, i64, i64 } { ptr @.str.5663, i64 30, i64 0 }, ptr %a903 - call void @finch_str_concat(ptr %a901, ptr %a902, ptr %a903) - store { ptr, i64, i64 } %t900, ptr %a904 - call void @finch_str_drop(ptr %a904) - %t905 = load { ptr, i64, i64 }, ptr %a901 - call void @finch.gen.fail(ptr %t885, %S.ast.Node %t886, { ptr, i64, i64 } %t905) - store { ptr, i64, i64 } %t905, ptr %a906 - call void @finch_str_drop(ptr %a906) - br label %endif8835 -endif8835: - %t907 = load %S.ast.Node, ptr %a13 - %t908 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t907) - store { ptr, i64, i64 } %t908, ptr %a909 - %t910 = getelementptr inbounds { ptr, i64, i64 }, ptr %a909, i32 0, i32 1 - %t911 = load i64, ptr %t910 - %t912 = icmp sgt i64 %t911, 0 - br i1 %t912, label %then8836, label %endif8838 -then8836: - %t913 = load ptr, ptr %a1 - %t914 = load { ptr, i64, i64 }, ptr %a909 - %t915 = call i64 @finch.gen.lookup(ptr %t913, { ptr, i64, i64 } %t914) - store i64 %t915, ptr %a916 - %t917 = load i64, ptr %a916 - %t918 = icmp sge i64 %t917, 0 - br label %logic.from8839 -logic.from8839: - br i1 %t918, label %logic.rhs8840, label %logic.end8841 -logic.rhs8840: - %t919 = load ptr, ptr %a1 - %t920 = load i64, ptr %a916 - %t921 = call %S.gen.Var @finch.gen.varAt(ptr %t919, i64 %t920) - %t922 = extractvalue %S.gen.Var %t921, 3 - store %S.gen.Var %t921, ptr %a923 - call void @finch.drop.S_gen_Var(ptr %a923) - br label %logic.rend8842 -logic.rend8842: - br label %logic.end8841 -logic.end8841: - %t924 = phi i1 [ false, %logic.from8839 ], [ %t922, %logic.rend8842 ] - br i1 %t924, label %then8843, label %endif8845 -then8843: - %t925 = load ptr, ptr %a1 - %t926 = load %S.ast.Node, ptr %a2 - %t927 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } { ptr @.str.5664, i64 19, i64 0 }, 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.5665, i64 18, i64 0 }, ptr %a934 - call void @finch_str_concat(ptr %a932, ptr %a933, ptr %a934) - store { ptr, i64, i64 } %t931, ptr %a935 - call void @finch_str_drop(ptr %a935) - %t936 = load { ptr, i64, i64 }, ptr %a932 - call void @finch.gen.fail(ptr %t925, %S.ast.Node %t926, { ptr, i64, i64 } %t936) - store { ptr, i64, i64 } %t936, ptr %a937 - call void @finch_str_drop(ptr %a937) - br label %endif8845 -endif8845: - br label %endif8838 -endif8838: - call void @finch_str_drop(ptr %a909) - br label %endif8832 -endif8832: - %t938 = load i1, ptr %a502 - br label %logic.from8846 -logic.from8846: - br i1 %t938, label %logic.rhs8847, label %logic.end8848 -logic.rhs8847: - %t939 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t940 = getelementptr inbounds %S.gen.Val, ptr %t939, i32 0, i32 2 - %t941 = load i1, ptr %t940 - br label %logic.rend8849 -logic.rend8849: - br label %logic.end8848 -logic.end8848: - %t942 = phi i1 [ false, %logic.from8846 ], [ %t941, %logic.rend8849 ] - br i1 %t942, label %then8850, label %endif8852 -then8850: - %t943 = load ptr, ptr %a1 - %t944 = load { ptr, i64, i64 }, ptr %a501 - %t945 = load %S.ast.Type, ptr %a500 - call void @finch.gen.holdAddr(ptr %t943, { ptr, i64, i64 } %t944, %S.ast.Type %t945) - br label %endif8852 -endif8852: - %t946 = load ptr, ptr %a1 - %t947 = load i64, ptr %a639 - %t948 = load %S.ast.Node, ptr %a2 - %t949 = load %S.ast.Type, ptr %a500 - %t950 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t949) - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5666, i64 1, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t957 = load { ptr, i64, i64 }, ptr %t956 - store { ptr, i64, i64 } %t955, ptr %a959 - store { ptr, i64, i64 } %t957, ptr %a960 - call void @finch_str_concat(ptr %a958, ptr %a959, ptr %a960) - store { ptr, i64, i64 } %t955, ptr %a961 - call void @finch_str_drop(ptr %a961) - %t962 = load { ptr, i64, i64 }, ptr %a958 - %t963 = load { ptr, i64, i64 }, ptr %a501 - %t964 = load %S.ast.Node, ptr %a13 - %t965 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t964) - %t966 = call %S.gen.Val @finch.gen.callFn(ptr %t946, i64 %t947, %S.ast.Node %t948, i64 1, { ptr, i64, i64 } %t962, { ptr, i64, i64 } %t963, { ptr, i64, i64 } %t965) - store { ptr, i64, i64 } %t962, ptr %a967 - call void @finch_str_drop(ptr %a967) - store { ptr, i64, i64 } %t965, ptr %a968 - call void @finch_str_drop(ptr %a968) - store %S.gen.Val %t966, ptr %a969 - %t970 = load i1, ptr %a502 - br label %logic.from8853 -logic.from8853: - br i1 %t970, label %logic.rhs8854, label %logic.end8855 -logic.rhs8854: - %t971 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t972 = getelementptr inbounds %S.gen.Val, ptr %t971, i32 0, i32 2 - %t973 = load i1, ptr %t972 - br label %logic.rend8856 -logic.rend8856: - br label %logic.end8855 -logic.end8855: - %t974 = phi i1 [ false, %logic.from8853 ], [ %t973, %logic.rend8856 ] - br label %logic.from8857 -logic.from8857: - br i1 %t974, label %logic.rhs8858, label %logic.end8859 -logic.rhs8858: - %t975 = load ptr, ptr %a1 - %t976 = load %S.ast.Type, ptr %a500 - %t977 = call i1 @finch.gen.owning(ptr %t975, %S.ast.Type %t976) - br label %logic.rend8860 -logic.rend8860: - br label %logic.end8859 -logic.end8859: - %t978 = phi i1 [ false, %logic.from8857 ], [ %t977, %logic.rend8860 ] - br i1 %t978, label %then8861, label %endif8863 -then8861: - %t979 = load ptr, ptr %a1 - %t980 = load { ptr, i64, i64 }, ptr %a501 - %t981 = load %S.ast.Type, ptr %a500 - call void @finch.gen.dropAt(ptr %t979, { ptr, i64, i64 } %t980, %S.ast.Type %t981) - br label %endif8863 -endif8863: - %t982 = load ptr, ptr %a1 - %t983 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t982, i64 %t983) - %t984 = load %S.gen.Val, ptr %a969 - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t984 -endif8773: - %t985 = load ptr, ptr %a1 - %t986 = load %S.ast.Node, ptr %a2 - %t987 = load %S.ast.Type, ptr %a273 - %t988 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t987) - store { ptr, i64, i64 } %t988, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.5667, i64 15, i64 0 }, ptr %a991 - call void @finch_str_concat(ptr %a989, ptr %a990, ptr %a991) - store { ptr, i64, i64 } %t988, ptr %a992 - call void @finch_str_drop(ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a989 - call void @finch.gen.fail(ptr %t985, %S.ast.Node %t986, { ptr, i64, i64 } %t993) - store { ptr, i64, i64 } %t993, ptr %a994 - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - 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 - %a35 = 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 - %a68 = alloca %S.gen.Val, align 16 - %a70 = alloca %S.gen.Val, align 16 - %a71 = 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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = 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 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.ast.Type, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.gen.Val, align 16 - %a315 = alloca %S.gen.Val, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %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 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca %S.ast.Type, align 16 - %a420 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.gen.Val, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca %S.ast.Type, align 16 - %a435 = alloca %S.ast.Type, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.gen.Val, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca %S.gen.Val, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.gen.Val, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca %S.gen.Val, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.gen.Val, align 16 - %a646 = alloca %S.gen.Val, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca %S.gen.Val, align 16 - %a792 = alloca %S.ast.Type, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca %S.gen.Val, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca %S.ast.Type, align 16 - %a889 = alloca %S.ast.Type, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca %S.gen.Val, align 16 - %a923 = alloca %S.ast.Type, align 16 - %a925 = alloca { ptr, i64, i64 }, align 16 - %a926 = alloca { ptr, i64, i64 }, align 16 - %a928 = alloca %S.gen.Val, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a936 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a995 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1034 = alloca { ptr, i64, i64 }, align 16 - %a1035 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca { ptr, i64, i64 }, align 16 - %a1046 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1052 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1057 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1082 = alloca { ptr, i64, i64 }, align 16 - %a1083 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca { ptr, i64, i64 }, align 16 - %a1087 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1092 = alloca { ptr, i64, i64 }, align 16 - %a1093 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1098 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1104 = alloca { ptr, i64, i64 }, align 16 - %a1105 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1160 = alloca %S.ast.Type, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca %S.gen.Val, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca %S.gen.Val, align 16 - %a1187 = alloca %S.ast.Type, align 16 - %a1189 = alloca { ptr, i64, i64 }, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca %S.gen.Val, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1200 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca { ptr, i64, i64 }, align 16 - %a1207 = alloca { ptr, i64, i64 }, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1214 = alloca { ptr, i64, i64 }, align 16 - %a1215 = alloca { ptr, i64, i64 }, align 16 - %a1216 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1219 = alloca { ptr, i64, i64 }, align 16 - %a1220 = alloca { ptr, i64, i64 }, align 16 - %a1221 = alloca { ptr, i64, i64 }, align 16 - %a1224 = alloca { ptr, i64, i64 }, align 16 - %a1225 = alloca { ptr, i64, i64 }, align 16 - %a1226 = alloca { ptr, i64, i64 }, align 16 - %a1227 = alloca { ptr, i64, i64 }, align 16 - %a1230 = alloca { ptr, i64, i64 }, align 16 - %a1231 = alloca { ptr, i64, i64 }, align 16 - %a1234 = alloca { ptr, i64, i64 }, align 16 - %a1235 = alloca { ptr, i64, i64 }, align 16 - %a1236 = alloca { ptr, i64, i64 }, align 16 - %a1238 = alloca { ptr, i64, i64 }, align 16 - %a1239 = alloca { ptr, i64, i64 }, align 16 - %a1240 = alloca { ptr, i64, i64 }, align 16 - %a1241 = alloca { ptr, i64, i64 }, align 16 - %a1244 = alloca { ptr, i64, i64 }, align 16 - %a1245 = alloca { ptr, i64, i64 }, align 16 - %a1246 = alloca { ptr, i64, i64 }, align 16 - %a1247 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1257 = alloca { ptr, i64, i64 }, align 16 - %a1258 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1261 = alloca { ptr, i64, i64 }, align 16 - %a1262 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1269 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1274 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1276 = alloca { ptr, i64, i64 }, align 16 - %a1278 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1281 = alloca { ptr, i64, i64 }, align 16 - %a1284 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca { ptr, i64, i64 }, align 16 - %a1286 = alloca { ptr, i64, i64 }, align 16 - %a1287 = alloca { ptr, i64, i64 }, align 16 - %a1290 = alloca { ptr, i64, i64 }, align 16 - %a1292 = alloca { ptr, i64, i64 }, align 16 - %a1295 = alloca { ptr, i64, i64 }, align 16 - %a1296 = alloca { ptr, i64, i64 }, align 16 - %a1297 = alloca { ptr, i64, i64 }, align 16 - %a1299 = alloca { ptr, i64, i64 }, align 16 - %a1300 = alloca { ptr, i64, i64 }, align 16 - %a1301 = alloca { ptr, i64, i64 }, align 16 - %a1302 = alloca { ptr, i64, i64 }, align 16 - %a1305 = alloca { ptr, i64, i64 }, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1307 = alloca { ptr, i64, i64 }, align 16 - %a1308 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1312 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1318 = alloca { ptr, i64, i64 }, align 16 - %a1319 = alloca { ptr, i64, i64 }, align 16 - %a1320 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1331 = alloca { ptr, i64, i64 }, align 16 - %a1333 = alloca { ptr, i64, i64 }, align 16 - %a1334 = alloca { ptr, i64, i64 }, align 16 - %a1335 = alloca { ptr, i64, i64 }, align 16 - %a1336 = alloca { ptr, i64, i64 }, align 16 - %a1341 = alloca { ptr, i64, i64 }, align 16 - %a1342 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1345 = alloca { ptr, i64, i64 }, align 16 - %a1347 = alloca { ptr, i64, i64 }, align 16 - %a1348 = alloca { ptr, i64, i64 }, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1352 = alloca { ptr, i64, i64 }, align 16 - %a1356 = alloca { ptr, i64, i64 }, align 16 - %a1360 = alloca { ptr, i64, i64 }, align 16 - %a1364 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1369 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1374 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1378 = alloca { ptr, i64, i64 }, align 16 - %a1379 = alloca { ptr, i64, i64 }, align 16 - %a1380 = alloca { ptr, i64, i64 }, align 16 - %a1382 = alloca { ptr, i64, i64 }, align 16 - %a1383 = alloca { ptr, i64, i64 }, align 16 - %a1384 = alloca { ptr, i64, i64 }, align 16 - %a1385 = alloca { ptr, i64, i64 }, align 16 - %a1393 = alloca { ptr, i64, i64 }, align 16 - %a1394 = alloca { ptr, i64, i64 }, align 16 - %a1395 = alloca { ptr, i64, i64 }, align 16 - %a1396 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1403 = alloca { ptr, i64, i64 }, align 16 - %a1404 = alloca { ptr, i64, i64 }, align 16 - %a1405 = alloca { ptr, i64, i64 }, align 16 - %a1407 = alloca { ptr, i64, i64 }, align 16 - %a1408 = alloca { ptr, i64, i64 }, align 16 - %a1409 = alloca { ptr, i64, i64 }, align 16 - %a1410 = alloca { ptr, i64, i64 }, align 16 - %a1413 = alloca { ptr, i64, i64 }, align 16 - %a1414 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca { ptr, i64, i64 }, align 16 - %a1416 = alloca { ptr, i64, i64 }, align 16 - %a1418 = alloca { ptr, i64, i64 }, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1421 = alloca { ptr, i64, i64 }, align 16 - %a1425 = alloca { ptr, i64, i64 }, align 16 - %a1426 = alloca { ptr, i64, i64 }, align 16 - %a1427 = alloca { ptr, i64, i64 }, align 16 - %a1429 = alloca { ptr, i64, i64 }, align 16 - %a1430 = alloca { ptr, i64, i64 }, align 16 - %a1431 = alloca { ptr, i64, i64 }, align 16 - %a1432 = alloca { ptr, i64, i64 }, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1442 = alloca { ptr, i64, i64 }, align 16 - %a1443 = alloca { ptr, i64, i64 }, align 16 - %a1446 = alloca { ptr, i64, i64 }, align 16 - %a1447 = alloca { ptr, i64, i64 }, align 16 - %a1448 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1450 = alloca { ptr, i64, i64 }, align 16 - %a1451 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca { ptr, i64, i64 }, align 16 - %a1455 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca %S.ast.Type, align 16 - %a1468 = alloca %S.ast.Type, align 16 - %a1473 = alloca { ptr, i64, i64 }, align 16 - %a1474 = alloca { ptr, i64, i64 }, align 16 - %a1481 = alloca { ptr, i64, i64 }, align 16 - %a1482 = alloca { ptr, i64, i64 }, align 16 - %a1484 = alloca { ptr, i64, i64 }, align 16 - %a1489 = alloca { ptr, i64, i64 }, align 16 - %a1490 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1505 = alloca { ptr, i64, i64 }, align 16 - %a1509 = alloca { ptr, i64, i64 }, align 16 - %a1513 = alloca { ptr, i64, i64 }, align 16 - %a1516 = alloca { ptr, i64, i64 }, align 16 - %a1517 = alloca { ptr, i64, i64 }, align 16 - %a1518 = alloca { ptr, i64, i64 }, align 16 - %a1520 = alloca { ptr, i64, i64 }, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1529 = alloca { ptr, i64, i64 }, align 16 - %a1531 = alloca { ptr, i64, i64 }, align 16 - %a1532 = alloca { ptr, i64, i64 }, align 16 - %a1533 = alloca { ptr, i64, i64 }, align 16 - %a1534 = alloca { ptr, i64, i64 }, align 16 - %a1539 = alloca { ptr, i64, i64 }, align 16 - %a1540 = alloca { ptr, i64, i64 }, align 16 - %a1541 = alloca { ptr, i64, i64 }, align 16 - %a1542 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca { ptr, i64, i64 }, align 16 - %a1545 = alloca { ptr, i64, i64 }, align 16 - %a1546 = alloca { ptr, i64, i64 }, align 16 - %a1547 = alloca { ptr, i64, i64 }, align 16 - %a1548 = alloca { ptr, i64, i64 }, align 16 - %a1551 = alloca { ptr, i64, i64 }, align 16 - %a1552 = alloca { ptr, i64, i64 }, align 16 - %a1553 = alloca { ptr, i64, i64 }, align 16 - %a1554 = alloca { ptr, i64, i64 }, align 16 - %a1556 = alloca { ptr, i64, i64 }, align 16 - %a1557 = alloca { ptr, i64, i64 }, align 16 - %a1558 = alloca { ptr, i64, i64 }, align 16 - %a1559 = alloca { ptr, i64, i64 }, align 16 - %a1561 = alloca { ptr, i64, i64 }, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1576 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range8864, label %inrange8865 -range8864: - call void @finch_panic_index(ptr @.str.5668, i64 5404, i64 0, i64 %t7) - unreachable -inrange8865: - %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.5669, 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.5670, i64 14, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t37, ptr %a39 - %t40 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.5671, 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 %then8866, label %endif8868 -then8866: - %t45 = load ptr, ptr %a1 - %t46 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t45, %S.ast.Node %t46, i64 1) - %t47 = load ptr, ptr %a1 - %t48 = load ptr, ptr %a1 - %t49 = load ptr, ptr %a1 - %t50 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 1, %t52 - br i1 %t53, label %range8869, label %inrange8870 -range8869: - call void @finch_panic_index(ptr @.str.5672, i64 5410, i64 1, i64 %t52) - unreachable -inrange8870: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 1 - %t56 = load %S.ast.Node, ptr %t55 - %t57 = load %S.ast.Type, ptr %a15 - %t58 = call %S.gen.Val @finch.gen.exprWant(ptr %t49, %S.ast.Node %t56, %S.ast.Type %t57) - %t59 = load %S.ast.Type, ptr %a15 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 1, %t62 - br i1 %t63, label %range8871, label %inrange8872 -range8871: - call void @finch_panic_index(ptr @.str.5673, i64 5410, i64 1, i64 %t62) - unreachable -inrange8872: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 1 - %t66 = load %S.ast.Node, ptr %t65 - %t67 = call %S.gen.Val @finch.gen.coerce(ptr %t48, %S.gen.Val %t58, %S.ast.Type %t59, %S.ast.Node %t66, { ptr, i64, i64 } { ptr @.str.5674, i64 11, i64 0 }) - store %S.gen.Val %t58, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - %t69 = call { ptr, i64, i64 } @finch.gen.own(ptr %t47, %S.gen.Val %t67) - store %S.gen.Val %t67, ptr %a70 - call void @finch.drop.S_gen_Val(ptr %a70) - store { ptr, i64, i64 } %t69, ptr %a71 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a39 - %t74 = call { ptr, i64, i64 } @finch.gen.load(ptr %t72, { ptr, i64, i64 } { ptr @.str.5675, i64 3, i64 0 }, { ptr, i64, i64 } %t73) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5676, i64 8, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.5677, i64 3, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.op(ptr %t76, { ptr, i64, i64 } %t86) - store { ptr, i64, i64 } %t86, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5678, i64 33, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5679, i64 6, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5680, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load ptr, ptr %a1 - %t113 = load %S.ast.Type, ptr %a15 - %t114 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t112, %S.ast.Type %t113) - store { ptr, i64, i64 } %t111, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t111, ptr %a118 - call void @finch_str_drop(ptr %a118) - store { ptr, i64, i64 } %t114, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t120, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.5681, i64 1, i64 0 }, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - call void @finch.gen.emit(ptr %t90, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load ptr, ptr %a1 - %t128 = load { ptr, i64, i64 }, ptr %a3 - %t129 = call { ptr, i64, i64 } @finch.gen.load(ptr %t127, { ptr, i64, i64 } { ptr @.str.5682, i64 3, i64 0 }, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a19 - %t133 = load { ptr, i64, i64 }, ptr %a71 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5683, i64 23, i64 0 }, ptr %a137 - store { ptr, i64, i64 } %t135, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t139, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.5684, i64 6, i64 0 }, ptr %a142 - call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = load { ptr, i64, i64 }, ptr %a140 - %t145 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t144, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.5685, i64 6, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t155, ptr %a158 - store { ptr, i64, i64 } %t156, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a163 - call void @finch_str_drop(ptr %a163) - call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t162) - store { ptr, i64, i64 } %t162, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load ptr, ptr %a1 - %t166 = load { ptr, i64, i64 }, ptr %a89 - %t167 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t165, { ptr, i64, i64 } { ptr @.str.5686, i64 3, i64 0 }, { ptr, i64, i64 } %t166, { ptr, i64, i64 } %t167) - %t168 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5687, i64 4, i64 0 }) - %t169 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t168, 1 - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a89) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t169 -endif8868: - %t170 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.5688, i64 3, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then8873, label %endif8875 -then8873: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t175, %S.ast.Node %t176, i64 0) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a39 - %t179 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.5689, i64 3, i64 0 }, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t179, ptr %a180 - %t181 = load ptr, ptr %a1 - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5690, i64 12, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5691, i64 3, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t181, { ptr, i64, i64 } %t193, { ptr, i64, i64 } { ptr @.str.5692, i64 23, i64 0 }, %S.ast.Node %t195) - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5693, i64 8, i64 0 }, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.5694, i64 3, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_drop(ptr %a209) - store { ptr, i64, i64 } %t208, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = call { ptr, i64, i64 } @finch.gen.load(ptr %t211, { ptr, i64, i64 } { ptr @.str.5695, i64 3, i64 0 }, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t213, ptr %a214 - %t215 = load ptr, ptr %a1 - %t216 = load { ptr, i64, i64 }, ptr %a19 - %t217 = load ptr, ptr %a1 - %t218 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5696, i64 23, i64 0 }, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.5697, i64 6, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5698, i64 6, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t238, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t238, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t244) - store { ptr, i64, i64 } %t244, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = call { ptr, i64, i64 } @finch.gen.load(ptr %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_drop(ptr %a248) - store { ptr, i64, i64 } %t247, ptr %a249 - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a210 - %t252 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.5699, i64 3, i64 0 }, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t256, 0 - %t258 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t258, ptr %a259 - call void @finch.copy.S_ast_Type(ptr %a260, ptr %a259) - %t261 = load %S.ast.Type, ptr %a260 - %t262 = insertvalue %S.gen.Val %t257, %S.ast.Type %t261, 1 - %t263 = load ptr, ptr %a1 - %t264 = load %S.ast.Type, ptr %a15 - %t265 = call i1 @finch.gen.owning(ptr %t263, %S.ast.Type %t264) - %t266 = insertvalue %S.gen.Val %t262, i1 %t265, 2 - call void @finch_str_drop(ptr %a249) - call void @finch_str_drop(ptr %a214) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a180) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t266 -endif8875: - %t267 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t267, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5700, i64 5, i64 0 }, ptr %a269 - %t270 = call i32 @finch_str_eq(ptr %a268, ptr %a269) - %t271 = icmp ne i32 %t270, 0 - br i1 %t271, label %then8876, label %endif8878 -then8876: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t272, %S.ast.Node %t273, i64 0) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a3 - %t276 = load %S.ast.Type, ptr %a4 - call void @finch.gen.dropFrom(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276, { ptr, i64, i64 } { ptr @.str.5701, i64 1, i64 0 }) - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t277, { ptr, i64, i64 } { ptr @.str.5702, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5703, i64 1, i64 0 }, { ptr, i64, i64 } %t278) - %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5704, i64 4, i64 0 }) - %t280 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t279, 1 - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t280 -endif8878: - %t281 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.5705, i64 4, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br label %logic.from8879 -logic.from8879: - br i1 %t285, label %logic.end8881, label %logic.rhs8880 -logic.rhs8880: - %t286 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t286, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5706, i64 8, i64 0 }, ptr %a288 - %t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288) - %t290 = icmp ne i32 %t289, 0 - br label %logic.rend8882 -logic.rend8882: - br label %logic.end8881 -logic.end8881: - %t291 = phi i1 [ true, %logic.from8879 ], [ %t290, %logic.rend8882 ] - br i1 %t291, label %then8883, label %endif8885 -then8883: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t292, %S.ast.Node %t293, i64 1) - %t294 = load ptr, ptr %a1 - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t297 = load { ptr, i64, i64 }, ptr %t296 - %t298 = extractvalue { ptr, i64, i64 } %t297, 1 - %t299 = icmp uge i64 1, %t298 - br i1 %t299, label %range8886, label %inrange8887 -range8886: - call void @finch_panic_index(ptr @.str.5707, i64 5437, i64 1, i64 %t298) - unreachable -inrange8887: - %t300 = extractvalue { ptr, i64, i64 } %t297, 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i64 1 - %t302 = load %S.ast.Node, ptr %t301 - %t303 = load %S.ast.Type, ptr %a15 - %t304 = call %S.gen.Val @finch.gen.exprWant(ptr %t295, %S.ast.Node %t302, %S.ast.Type %t303) - %t305 = load %S.ast.Type, ptr %a15 - %t306 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = extractvalue { ptr, i64, i64 } %t307, 1 - %t309 = icmp uge i64 1, %t308 - br i1 %t309, label %range8888, label %inrange8889 -range8888: - call void @finch_panic_index(ptr @.str.5708, i64 5437, i64 1, i64 %t308) - unreachable -inrange8889: - %t310 = extractvalue { ptr, i64, i64 } %t307, 0 - %t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i64 1 - %t312 = load %S.ast.Node, ptr %t311 - %t313 = call %S.gen.Val @finch.gen.coerce(ptr %t294, %S.gen.Val %t304, %S.ast.Type %t305, %S.ast.Node %t312, { ptr, i64, i64 } { ptr @.str.5709, i64 21, i64 0 }) - store %S.gen.Val %t304, ptr %a314 - call void @finch.drop.S_gen_Val(ptr %a314) - store %S.gen.Val %t313, ptr %a315 - %t316 = load ptr, ptr %a1 - %t317 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t316, { ptr, i64, i64 } { ptr @.str.5710, i64 3, i64 0 }) - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t319, { ptr, i64, i64 } { ptr @.str.5711, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5712, i64 2, i64 0 }, { ptr, i64, i64 } %t320) - %t321 = load ptr, ptr %a1 - %t322 = load { ptr, i64, i64 }, ptr %a39 - %t323 = call { ptr, i64, i64 } @finch.gen.load(ptr %t321, { ptr, i64, i64 } { ptr @.str.5713, i64 3, i64 0 }, { ptr, i64, i64 } %t322) - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = load ptr, ptr %a1 - %t326 = load { ptr, i64, i64 }, ptr %a3 - %t327 = call { ptr, i64, i64 } @finch.gen.load(ptr %t325, { ptr, i64, i64 } { ptr @.str.5714, i64 3, i64 0 }, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.5715, i64 3, i64 0 }) - store { ptr, i64, i64 } %t330, ptr %a331 - %t332 = load ptr, ptr %a1 - %t333 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t332, { ptr, i64, i64 } { ptr @.str.5716, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5717, i64 1, i64 0 }, { ptr, i64, i64 } %t333) - %t334 = load ptr, ptr %a1 - %t335 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t334, { ptr, i64, i64 } { ptr @.str.5718, i64 9, i64 0 }) - store { ptr, i64, i64 } %t335, ptr %a336 - %t337 = load ptr, ptr %a1 - %t338 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t337, { ptr, i64, i64 } { ptr @.str.5719, i64 9, i64 0 }) - store { ptr, i64, i64 } %t338, ptr %a339 - %t340 = load ptr, ptr %a1 - %t341 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t340, { ptr, i64, i64 } { ptr @.str.5720, i64 8, i64 0 }) - store { ptr, i64, i64 } %t341, ptr %a342 - %t343 = load ptr, ptr %a1 - %t344 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t343, { ptr, i64, i64 } { ptr @.str.5721, i64 9, i64 0 }) - store { ptr, i64, i64 } %t344, ptr %a345 - %t346 = load ptr, ptr %a1 - %t347 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t346, { ptr, i64, i64 } { ptr @.str.5722, i64 8, i64 0 }) - store { ptr, i64, i64 } %t347, ptr %a348 - %t349 = load ptr, ptr %a1 - %t350 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t349, { ptr, i64, i64 } %t350) - %t351 = load ptr, ptr %a1 - %t352 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.label(ptr %t351, { ptr, i64, i64 } %t352) - %t353 = load ptr, ptr %a1 - %t354 = load { ptr, i64, i64 }, ptr %a331 - %t355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t353, { ptr, i64, i64 } { ptr @.str.5723, i64 3, i64 0 }, { ptr, i64, i64 } %t354) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5724, i64 13, i64 0 }, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a359 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.5725, i64 2, i64 0 }, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - store { ptr, i64, i64 } %t362, ptr %a366 - call void @finch_str_drop(ptr %a366) - %t367 = load { ptr, i64, i64 }, ptr %a363 - %t368 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t367, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a371 - call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) - store { ptr, i64, i64 } %t367, ptr %a372 - call void @finch_str_drop(ptr %a372) - %t373 = load { ptr, i64, i64 }, ptr %a369 - %t374 = call { ptr, i64, i64 } @finch.gen.op(ptr %t357, { ptr, i64, i64 } %t373) - store { ptr, i64, i64 } %t373, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t374, ptr %a376 - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a376 - %t379 = load { ptr, i64, i64 }, ptr %a339 - %t380 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.condBr(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t379, { ptr, i64, i64 } %t380) - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a339 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a19 - %t385 = load ptr, ptr %a1 - %t386 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5726, i64 23, i64 0 }, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.5727, i64 6, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t395, ptr %a398 - store { ptr, i64, i64 } %t396, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.5728, i64 6, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - %t413 = call { ptr, i64, i64 } @finch.gen.op(ptr %t385, { ptr, i64, i64 } %t412) - store { ptr, i64, i64 } %t412, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = call { ptr, i64, i64 } @finch.gen.load(ptr %t383, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t413) - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t415, 0 - %t418 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t418, ptr %a419 - call void @finch.copy.S_ast_Type(ptr %a420, ptr %a419) - %t421 = load %S.ast.Type, ptr %a420 - %t422 = insertvalue %S.gen.Val %t417, %S.ast.Type %t421, 1 - store %S.gen.Val %t422, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load %S.gen.Val, ptr %a423 - %t426 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 0 - %t427 = load { ptr, i64, i64 }, ptr %t426 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_copy(ptr %a429, ptr %a428) - %t430 = load { ptr, i64, i64 }, ptr %a429 - %t431 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t430, 0 - %t432 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 1 - %t433 = load %S.ast.Type, ptr %t432 - store %S.ast.Type %t433, ptr %a434 - call void @finch.copy.S_ast_Type(ptr %a435, ptr %a434) - %t436 = load %S.ast.Type, ptr %a435 - %t437 = insertvalue %S.gen.Val %t431, %S.ast.Type %t436, 1 - %t438 = load %S.ast.Node, ptr %a2 - %t439 = call %S.gen.Val @finch.gen.compare(ptr %t424, { ptr, i64, i64 } { ptr @.str.5729, i64 2, i64 0 }, %S.gen.Val %t425, %S.gen.Val %t437, %S.ast.Node %t438) - store %S.gen.Val %t437, ptr %a440 - call void @finch.drop.S_gen_Val(ptr %a440) - %t441 = extractvalue %S.gen.Val %t439, 0 - store { ptr, i64, i64 } %t441, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store %S.gen.Val %t439, ptr %a445 - call void @finch.drop.S_gen_Val(ptr %a445) - store { ptr, i64, i64 } %t444, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load { ptr, i64, i64 }, ptr %a446 - %t449 = load { ptr, i64, i64 }, ptr %a342 - %t450 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.condBr(ptr %t447, { ptr, i64, i64 } %t448, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load { ptr, i64, i64 }, ptr %a342 - call void @finch.gen.label(ptr %t451, { ptr, i64, i64 } %t452) - %t453 = load ptr, ptr %a1 - %t454 = load { ptr, i64, i64 }, ptr %a356 - %t455 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t453, { ptr, i64, i64 } { ptr @.str.5730, i64 3, i64 0 }, { ptr, i64, i64 } %t454, { ptr, i64, i64 } %t455) - %t456 = load ptr, ptr %a1 - %t457 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.br(ptr %t456, { ptr, i64, i64 } %t457) - %t458 = load ptr, ptr %a1 - %t459 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.label(ptr %t458, { ptr, i64, i64 } %t459) - %t460 = load ptr, ptr %a1 - %t461 = load ptr, ptr %a1 - %t462 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5732, i64 8, i64 0 }, ptr %a464 - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a463 - store { ptr, i64, i64 } %t466, ptr %a468 - store { ptr, i64, i64 } { ptr @.str.5733, i64 3, i64 0 }, ptr %a469 - call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469) - store { ptr, i64, i64 } %t466, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a467 - %t472 = call { ptr, i64, i64 } @finch.gen.op(ptr %t461, { ptr, i64, i64 } %t471) - store { ptr, i64, i64 } %t471, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t460, { ptr, i64, i64 } { ptr @.str.5731, i64 3, i64 0 }, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_drop(ptr %a475) - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t476, { ptr, i64, i64 } %t477) - %t478 = load ptr, ptr %a1 - %t479 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.label(ptr %t478, { ptr, i64, i64 } %t479) - %t480 = load ptr, ptr %a1 - %t481 = load %S.gen.Val, ptr %a315 - call void @finch.gen.release(ptr %t480, %S.gen.Val %t481) - %t482 = load ptr, ptr %a1 - %t483 = load { ptr, i64, i64 }, ptr %a318 - %t484 = call { ptr, i64, i64 } @finch.gen.load(ptr %t482, { ptr, i64, i64 } { ptr @.str.5734, i64 3, i64 0 }, { ptr, i64, i64 } %t483) - store { ptr, i64, i64 } %t484, ptr %a485 - %t486 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5735, i64 4, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then8890, label %endif8892 -then8890: - %t491 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t491, ptr %a492 - call void @finch_str_copy(ptr %a493, ptr %a492) - %t494 = load { ptr, i64, i64 }, ptr %a493 - %t495 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t494, 0 - %t496 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5736, i64 3, i64 0 }) - %t497 = insertvalue %S.gen.Val %t495, %S.ast.Type %t496, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t497 -endif8892: - %t498 = load ptr, ptr %a1 - %t499 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5737, i64 13, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5738, i64 3, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call { ptr, i64, i64 } @finch.gen.op(ptr %t498, { ptr, i64, i64 } %t508) - store { ptr, i64, i64 } %t508, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t509, 0 - %t512 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5739, i64 4, i64 0 }) - %t513 = insertvalue %S.gen.Val %t511, %S.ast.Type %t512, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t513 -endif8885: - %t514 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t514, ptr %a515 - store { ptr, i64, i64 } { ptr @.str.5740, i64 4, i64 0 }, ptr %a516 - %t517 = call i32 @finch_str_eq(ptr %a515, ptr %a516) - %t518 = icmp ne i32 %t517, 0 - br i1 %t518, label %then8893, label %endif8895 -then8893: - %t519 = load ptr, ptr %a1 - %t520 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t519, %S.ast.Node %t520, i64 1) - %t521 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5741, i64 3, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp eq i32 %t525, 0 - br i1 %t526, label %then8896, label %endif8898 -then8896: - %t527 = load ptr, ptr %a1 - %t528 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t527, %S.ast.Node %t528, { ptr, i64, i64 } { ptr @.str.5742, i64 31, i64 0 }) - br label %endif8898 -endif8898: - %t529 = load ptr, ptr %a1 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t531 = load { ptr, i64, i64 }, ptr %t530 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 1, %t532 - br i1 %t533, label %range8899, label %inrange8900 -range8899: - call void @finch_panic_index(ptr @.str.5743, i64 5477, i64 1, i64 %t532) - unreachable -inrange8900: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.ast.Node, ptr %t534, i64 1 - %t536 = load %S.ast.Node, ptr %t535 - %t537 = call %S.gen.Val @finch.gen.strArg(ptr %t529, %S.ast.Node %t536, { ptr, i64, i64 } { ptr @.str.5744, i64 13, i64 0 }) - store %S.gen.Val %t537, ptr %a538 - %t539 = load ptr, ptr %a1 - %t540 = load %S.gen.Val, ptr %a538 - %t541 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t539, %S.gen.Val %t540) - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = load ptr, ptr %a1 - %t544 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } { ptr @.str.5745, i64 30, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a553 - store { ptr, i64, i64 } { ptr @.str.5746, i64 6, i64 0 }, ptr %a554 - call void @finch_str_concat(ptr %a552, ptr %a553, ptr %a554) - store { ptr, i64, i64 } %t551, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load { ptr, i64, i64 }, ptr %a552 - %t557 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t556, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t556, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.5747, i64 6, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t567, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t573, ptr %a575 - store { ptr, i64, i64 } { ptr @.str.5748, i64 1, i64 0 }, ptr %a576 - call void @finch_str_concat(ptr %a574, ptr %a575, ptr %a576) - store { ptr, i64, i64 } %t573, ptr %a577 - call void @finch_str_drop(ptr %a577) - %t578 = load { ptr, i64, i64 }, ptr %a574 - call void @finch.gen.emit(ptr %t546, { ptr, i64, i64 } %t578) - store { ptr, i64, i64 } %t578, ptr %a579 - call void @finch_str_drop(ptr %a579) - %t580 = load ptr, ptr %a1 - %t581 = load %S.gen.Val, ptr %a538 - call void @finch.gen.release(ptr %t580, %S.gen.Val %t581) - %t582 = load ptr, ptr %a1 - %t583 = load { ptr, i64, i64 }, ptr %a545 - %t584 = call { ptr, i64, i64 } @finch.gen.load(ptr %t582, { ptr, i64, i64 } { ptr @.str.5749, i64 17, i64 0 }, { ptr, i64, i64 } %t583) - %t585 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t584, 0 - %t586 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5750, i64 3, i64 0 }) - %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 - %t588 = insertvalue %S.gen.Val %t587, i1 true, 2 - call void @finch_str_drop(ptr %a545) - call void @finch_str_drop(ptr %a542) - call void @finch.drop.S_gen_Val(ptr %a538) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t588 -endif8895: - %t589 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.5751, 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 %then8901, label %endif8903 -then8901: - %t594 = load ptr, ptr %a1 - %t595 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t594, %S.ast.Node %t595, i64 2) - %t596 = load ptr, ptr %a1 - %t597 = load ptr, ptr %a1 - %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t599 = load { ptr, i64, i64 }, ptr %t598 - %t600 = extractvalue { ptr, i64, i64 } %t599, 1 - %t601 = icmp uge i64 1, %t600 - br i1 %t601, label %range8904, label %inrange8905 -range8904: - call void @finch_panic_index(ptr @.str.5752, i64 5486, i64 1, i64 %t600) - unreachable -inrange8905: - %t602 = extractvalue { ptr, i64, i64 } %t599, 0 - %t603 = getelementptr inbounds %S.ast.Node, ptr %t602, i64 1 - %t604 = load %S.ast.Node, ptr %t603 - %t605 = call %S.gen.Val @finch.gen.expr(ptr %t597, %S.ast.Node %t604) - %t606 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5753, i64 3, i64 0 }) - %t607 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t608 = load { ptr, i64, i64 }, ptr %t607 - %t609 = extractvalue { ptr, i64, i64 } %t608, 1 - %t610 = icmp uge i64 1, %t609 - br i1 %t610, label %range8906, label %inrange8907 -range8906: - call void @finch_panic_index(ptr @.str.5754, i64 5486, i64 1, i64 %t609) - unreachable -inrange8907: - %t611 = extractvalue { ptr, i64, i64 } %t608, 0 - %t612 = getelementptr inbounds %S.ast.Node, ptr %t611, i64 1 - %t613 = load %S.ast.Node, ptr %t612 - %t614 = call %S.gen.Val @finch.gen.coerce(ptr %t596, %S.gen.Val %t605, %S.ast.Type %t606, %S.ast.Node %t613, { ptr, i64, i64 } { ptr @.str.5755, i64 12, i64 0 }) - store %S.gen.Val %t605, ptr %a615 - call void @finch.drop.S_gen_Val(ptr %a615) - store %S.ast.Type %t606, ptr %a616 - call void @finch.drop.S_ast_Type(ptr %a616) - %t617 = extractvalue %S.gen.Val %t614, 0 - store { ptr, i64, i64 } %t617, ptr %a618 - call void @finch_str_copy(ptr %a619, ptr %a618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store %S.gen.Val %t614, ptr %a621 - call void @finch.drop.S_gen_Val(ptr %a621) - store { ptr, i64, i64 } %t620, ptr %a622 - %t623 = load ptr, ptr %a1 - %t624 = load ptr, ptr %a1 - %t625 = load ptr, ptr %a1 - %t626 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t627 = load { ptr, i64, i64 }, ptr %t626 - %t628 = extractvalue { ptr, i64, i64 } %t627, 1 - %t629 = icmp uge i64 2, %t628 - br i1 %t629, label %range8908, label %inrange8909 -range8908: - call void @finch_panic_index(ptr @.str.5756, i64 5487, i64 2, i64 %t628) - unreachable -inrange8909: - %t630 = extractvalue { ptr, i64, i64 } %t627, 0 - %t631 = getelementptr inbounds %S.ast.Node, ptr %t630, i64 2 - %t632 = load %S.ast.Node, ptr %t631 - %t633 = load %S.ast.Type, ptr %a15 - %t634 = call %S.gen.Val @finch.gen.exprWant(ptr %t625, %S.ast.Node %t632, %S.ast.Type %t633) - %t635 = load %S.ast.Type, ptr %a15 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = extractvalue { ptr, i64, i64 } %t637, 1 - %t639 = icmp uge i64 2, %t638 - br i1 %t639, label %range8910, label %inrange8911 -range8910: - call void @finch_panic_index(ptr @.str.5757, i64 5487, i64 2, i64 %t638) - unreachable -inrange8911: - %t640 = extractvalue { ptr, i64, i64 } %t637, 0 - %t641 = getelementptr inbounds %S.ast.Node, ptr %t640, i64 2 - %t642 = load %S.ast.Node, ptr %t641 - %t643 = call %S.gen.Val @finch.gen.coerce(ptr %t624, %S.gen.Val %t634, %S.ast.Type %t635, %S.ast.Node %t642, { ptr, i64, i64 } { ptr @.str.5758, i64 11, i64 0 }) - store %S.gen.Val %t634, ptr %a644 - call void @finch.drop.S_gen_Val(ptr %a644) - %t645 = call { ptr, i64, i64 } @finch.gen.own(ptr %t623, %S.gen.Val %t643) - store %S.gen.Val %t643, ptr %a646 - call void @finch.drop.S_gen_Val(ptr %a646) - store { ptr, i64, i64 } %t645, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = load ptr, ptr %a1 - %t650 = icmp eq ptr %t649, null - br i1 %t650, label %panic8912, label %ok8913 -panic8912: - call void @finch_panic(ptr @.str.5759, i64 5488, ptr @.str.5760) - unreachable -ok8913: - %t651 = getelementptr inbounds %S.gen.Gen, ptr %t649, i32 0, i32 1 - %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t653 = load i64, ptr %t652 - %t654 = load { ptr, i64, i64 }, ptr %t651 - %t655 = extractvalue { ptr, i64, i64 } %t654, 1 - %t656 = icmp uge i64 %t653, %t655 - br i1 %t656, label %range8914, label %inrange8915 -range8914: - call void @finch_panic_index(ptr @.str.5761, i64 5488, i64 %t653, i64 %t655) - unreachable -inrange8915: - %t657 = extractvalue { ptr, i64, i64 } %t654, 0 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i64 %t653 - %t659 = load { ptr, i64, i64 }, ptr %t658 - %t660 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t648, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5762, i64 36, i64 0 }, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - %t667 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t667, ptr %a669 - store { ptr, i64, i64 } { ptr @.str.5763, i64 6, i64 0 }, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - store { ptr, i64, i64 } %t667, ptr %a671 - call void @finch_str_drop(ptr %a671) - %t672 = load { ptr, i64, i64 }, ptr %a668 - %t673 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t672, ptr %a675 - store { ptr, i64, i64 } %t673, ptr %a676 - call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a674 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.5764, i64 6, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a15 - %t686 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t684, %S.ast.Type %t685) - store { ptr, i64, i64 } %t683, ptr %a688 - store { ptr, i64, i64 } %t686, ptr %a689 - call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689) - store { ptr, i64, i64 } %t683, ptr %a690 - call void @finch_str_drop(ptr %a690) - store { ptr, i64, i64 } %t686, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a687 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.5765, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5766, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t710 = load i64, ptr %t709 - call void @finch_str_from_int(ptr %a711, i64 %t710) - %t712 = load { ptr, i64, i64 }, ptr %a711 - store { ptr, i64, i64 } %t708, ptr %a714 - store { ptr, i64, i64 } %t712, ptr %a715 - call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715) - store { ptr, i64, i64 } %t708, ptr %a716 - call void @finch_str_drop(ptr %a716) - store { ptr, i64, i64 } %t712, ptr %a717 - call void @finch_str_drop(ptr %a717) - %t718 = load { ptr, i64, i64 }, ptr %a713 - store { ptr, i64, i64 } %t718, ptr %a720 - store { ptr, i64, i64 } { ptr @.str.5767, i64 1, i64 0 }, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t718, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.emit(ptr %t662, { ptr, i64, i64 } %t723) - store { ptr, i64, i64 } %t723, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a3 - %t727 = call { ptr, i64, i64 } @finch.gen.load(ptr %t725, { ptr, i64, i64 } { ptr @.str.5768, i64 3, i64 0 }, { ptr, i64, i64 } %t726) - store { ptr, i64, i64 } %t727, ptr %a728 - %t729 = load ptr, ptr %a1 - %t730 = load { ptr, i64, i64 }, ptr %a19 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = load ptr, ptr %a1 - %t733 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5769, i64 23, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.5770, i64 6, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t742, ptr %a745 - store { ptr, i64, i64 } %t743, ptr %a746 - call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746) - store { ptr, i64, i64 } %t742, ptr %a747 - call void @finch_str_drop(ptr %a747) - %t748 = load { ptr, i64, i64 }, ptr %a744 - store { ptr, i64, i64 } %t748, ptr %a750 - store { ptr, i64, i64 } { ptr @.str.5771, i64 6, i64 0 }, ptr %a751 - call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751) - store { ptr, i64, i64 } %t748, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a749 - %t754 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t753, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a755 - %t760 = call { ptr, i64, i64 } @finch.gen.op(ptr %t732, { ptr, i64, i64 } %t759) - store { ptr, i64, i64 } %t759, ptr %a761 - call void @finch_str_drop(ptr %a761) - call void @finch.gen.store(ptr %t729, { ptr, i64, i64 } %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t760) - store { ptr, i64, i64 } %t760, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5772, i64 4, i64 0 }) - %t764 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t763, 1 - call void @finch_str_drop(ptr %a728) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a622) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t764 -endif8903: - %t765 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t765, ptr %a766 - store { ptr, i64, i64 } { ptr @.str.5773, i64 6, i64 0 }, ptr %a767 - %t768 = call i32 @finch_str_eq(ptr %a766, ptr %a767) - %t769 = icmp ne i32 %t768, 0 - br i1 %t769, label %then8916, label %endif8918 -then8916: - %t770 = load ptr, ptr %a1 - %t771 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t770, %S.ast.Node %t771, i64 1) - %t772 = load ptr, ptr %a1 - %t773 = load ptr, ptr %a1 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t775 = load { ptr, i64, i64 }, ptr %t774 - %t776 = extractvalue { ptr, i64, i64 } %t775, 1 - %t777 = icmp uge i64 1, %t776 - br i1 %t777, label %range8919, label %inrange8920 -range8919: - call void @finch_panic_index(ptr @.str.5774, i64 5496, i64 1, i64 %t776) - unreachable -inrange8920: - %t778 = extractvalue { ptr, i64, i64 } %t775, 0 - %t779 = getelementptr inbounds %S.ast.Node, ptr %t778, i64 1 - %t780 = load %S.ast.Node, ptr %t779 - %t781 = call %S.gen.Val @finch.gen.expr(ptr %t773, %S.ast.Node %t780) - %t782 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5775, i64 3, i64 0 }) - %t783 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t784 = load { ptr, i64, i64 }, ptr %t783 - %t785 = extractvalue { ptr, i64, i64 } %t784, 1 - %t786 = icmp uge i64 1, %t785 - br i1 %t786, label %range8921, label %inrange8922 -range8921: - call void @finch_panic_index(ptr @.str.5776, i64 5496, i64 1, i64 %t785) - unreachable -inrange8922: - %t787 = extractvalue { ptr, i64, i64 } %t784, 0 - %t788 = getelementptr inbounds %S.ast.Node, ptr %t787, i64 1 - %t789 = load %S.ast.Node, ptr %t788 - %t790 = call %S.gen.Val @finch.gen.coerce(ptr %t772, %S.gen.Val %t781, %S.ast.Type %t782, %S.ast.Node %t789, { ptr, i64, i64 } { ptr @.str.5777, i64 12, i64 0 }) - store %S.gen.Val %t781, ptr %a791 - call void @finch.drop.S_gen_Val(ptr %a791) - store %S.ast.Type %t782, ptr %a792 - call void @finch.drop.S_ast_Type(ptr %a792) - %t793 = extractvalue %S.gen.Val %t790, 0 - store { ptr, i64, i64 } %t793, ptr %a794 - call void @finch_str_copy(ptr %a795, ptr %a794) - %t796 = load { ptr, i64, i64 }, ptr %a795 - store %S.gen.Val %t790, ptr %a797 - call void @finch.drop.S_gen_Val(ptr %a797) - store { ptr, i64, i64 } %t796, ptr %a798 - %t799 = load ptr, ptr %a1 - %t800 = load { ptr, i64, i64 }, ptr %a798 - %t801 = load ptr, ptr %a1 - %t802 = load { ptr, i64, i64 }, ptr %a39 - %t803 = call { ptr, i64, i64 } @finch.gen.load(ptr %t801, { ptr, i64, i64 } { ptr @.str.5778, i64 3, i64 0 }, { ptr, i64, i64 } %t802) - %t804 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t799, { ptr, i64, i64 } %t800, { ptr, i64, i64 } %t803, %S.ast.Node %t804) - store { ptr, i64, i64 } %t803, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load ptr, ptr %a1 - %t807 = load { ptr, i64, i64 }, ptr %a3 - %t808 = call { ptr, i64, i64 } @finch.gen.load(ptr %t806, { ptr, i64, i64 } { ptr @.str.5779, i64 3, i64 0 }, { ptr, i64, i64 } %t807) - store { ptr, i64, i64 } %t808, ptr %a809 - %t810 = load ptr, ptr %a1 - %t811 = load { ptr, i64, i64 }, ptr %a19 - %t812 = load ptr, ptr %a1 - %t813 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5780, i64 23, i64 0 }, ptr %a815 - store { ptr, i64, i64 } %t813, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.5781, i64 6, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = load { ptr, i64, i64 }, ptr %a809 - store { ptr, i64, i64 } %t822, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t822, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.5782, i64 6, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t833, ptr %a836 - store { ptr, i64, i64 } %t834, ptr %a837 - call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) - store { ptr, i64, i64 } %t833, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a835 - %t840 = call { ptr, i64, i64 } @finch.gen.op(ptr %t812, { ptr, i64, i64 } %t839) - store { ptr, i64, i64 } %t839, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = call { ptr, i64, i64 } @finch.gen.load(ptr %t810, { ptr, i64, i64 } %t811, { ptr, i64, i64 } %t840) - store { ptr, i64, i64 } %t840, ptr %a843 - call void @finch_str_drop(ptr %a843) - store { ptr, i64, i64 } %t842, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5783, i64 36, i64 0 }, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a847 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5784, i64 6, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - %t856 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t855, ptr %a858 - store { ptr, i64, i64 } %t856, ptr %a859 - call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) - store { ptr, i64, i64 } %t855, ptr %a860 - call void @finch_str_drop(ptr %a860) - %t861 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } %t861, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5785, i64 6, i64 0 }, ptr %a864 - call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864) - store { ptr, i64, i64 } %t861, ptr %a865 - call void @finch_str_drop(ptr %a865) - %t866 = load { ptr, i64, i64 }, ptr %a862 - %t867 = load ptr, ptr %a1 - %t868 = load %S.ast.Type, ptr %a15 - %t869 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t867, %S.ast.Type %t868) - store { ptr, i64, i64 } %t866, ptr %a871 - store { ptr, i64, i64 } %t869, ptr %a872 - call void @finch_str_concat(ptr %a870, ptr %a871, ptr %a872) - store { ptr, i64, i64 } %t866, ptr %a873 - call void @finch_str_drop(ptr %a873) - store { ptr, i64, i64 } %t869, ptr %a874 - call void @finch_str_drop(ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a870 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5786, i64 1, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.emit(ptr %t845, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = load { ptr, i64, i64 }, ptr %a844 - store { ptr, i64, i64 } %t882, ptr %a883 - call void @finch_str_copy(ptr %a884, ptr %a883) - %t885 = load { ptr, i64, i64 }, ptr %a884 - %t886 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t885, 0 - %t887 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t887, ptr %a888 - call void @finch.copy.S_ast_Type(ptr %a889, ptr %a888) - %t890 = load %S.ast.Type, ptr %a889 - %t891 = insertvalue %S.gen.Val %t886, %S.ast.Type %t890, 1 - %t892 = load ptr, ptr %a1 - %t893 = load %S.ast.Type, ptr %a15 - %t894 = call i1 @finch.gen.owning(ptr %t892, %S.ast.Type %t893) - %t895 = insertvalue %S.gen.Val %t891, i1 %t894, 2 - call void @finch_str_drop(ptr %a844) - call void @finch_str_drop(ptr %a809) - call void @finch_str_drop(ptr %a798) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t895 -endif8918: - %t896 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t896, ptr %a897 - store { ptr, i64, i64 } { ptr @.str.5787, i64 6, i64 0 }, ptr %a898 - %t899 = call i32 @finch_str_eq(ptr %a897, ptr %a898) - %t900 = icmp ne i32 %t899, 0 - br i1 %t900, label %then8923, label %endif8925 -then8923: - %t901 = load ptr, ptr %a1 - %t902 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t901, %S.ast.Node %t902, i64 1) - %t903 = load ptr, ptr %a1 - %t904 = load ptr, ptr %a1 - %t905 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t906 = load { ptr, i64, i64 }, ptr %t905 - %t907 = extractvalue { ptr, i64, i64 } %t906, 1 - %t908 = icmp uge i64 1, %t907 - br i1 %t908, label %range8926, label %inrange8927 -range8926: - call void @finch_panic_index(ptr @.str.5788, i64 5505, i64 1, i64 %t907) - unreachable -inrange8927: - %t909 = extractvalue { ptr, i64, i64 } %t906, 0 - %t910 = getelementptr inbounds %S.ast.Node, ptr %t909, i64 1 - %t911 = load %S.ast.Node, ptr %t910 - %t912 = call %S.gen.Val @finch.gen.expr(ptr %t904, %S.ast.Node %t911) - %t913 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5789, i64 3, i64 0 }) - %t914 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t915 = load { ptr, i64, i64 }, ptr %t914 - %t916 = extractvalue { ptr, i64, i64 } %t915, 1 - %t917 = icmp uge i64 1, %t916 - br i1 %t917, label %range8928, label %inrange8929 -range8928: - call void @finch_panic_index(ptr @.str.5790, i64 5505, i64 1, i64 %t916) - unreachable -inrange8929: - %t918 = extractvalue { ptr, i64, i64 } %t915, 0 - %t919 = getelementptr inbounds %S.ast.Node, ptr %t918, i64 1 - %t920 = load %S.ast.Node, ptr %t919 - %t921 = call %S.gen.Val @finch.gen.coerce(ptr %t903, %S.gen.Val %t912, %S.ast.Type %t913, %S.ast.Node %t920, { ptr, i64, i64 } { ptr @.str.5791, i64 14, i64 0 }) - store %S.gen.Val %t912, ptr %a922 - call void @finch.drop.S_gen_Val(ptr %a922) - store %S.ast.Type %t913, ptr %a923 - call void @finch.drop.S_ast_Type(ptr %a923) - %t924 = extractvalue %S.gen.Val %t921, 0 - store { ptr, i64, i64 } %t924, ptr %a925 - call void @finch_str_copy(ptr %a926, ptr %a925) - %t927 = load { ptr, i64, i64 }, ptr %a926 - store %S.gen.Val %t921, ptr %a928 - call void @finch.drop.S_gen_Val(ptr %a928) - store { ptr, i64, i64 } %t927, ptr %a929 - %t930 = load ptr, ptr %a1 - %t931 = load { ptr, i64, i64 }, ptr %a3 - %t932 = load %S.ast.Type, ptr %a4 - %t933 = load { ptr, i64, i64 }, ptr %a929 - call void @finch.gen.dropFrom(ptr %t930, { ptr, i64, i64 } %t931, %S.ast.Type %t932, { ptr, i64, i64 } %t933) - %t934 = load ptr, ptr %a1 - %t935 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5792, i64 32, i64 0 }, ptr %a937 - store { ptr, i64, i64 } %t935, ptr %a938 - call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938) - %t939 = load { ptr, i64, i64 }, ptr %a936 - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.5793, i64 6, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a929 - store { ptr, i64, i64 } %t944, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - store { ptr, i64, i64 } %t944, ptr %a949 - call void @finch_str_drop(ptr %a949) - %t950 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5794, i64 6, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = load ptr, ptr %a1 - %t957 = load %S.ast.Type, ptr %a15 - %t958 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t956, %S.ast.Type %t957) - store { ptr, i64, i64 } %t955, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t955, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t958, ptr %a963 - call void @finch_str_drop(ptr %a963) - %t964 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t964, ptr %a966 - store { ptr, i64, i64 } { ptr @.str.5795, i64 1, i64 0 }, ptr %a967 - call void @finch_str_concat(ptr %a965, ptr %a966, ptr %a967) - store { ptr, i64, i64 } %t964, ptr %a968 - call void @finch_str_drop(ptr %a968) - %t969 = load { ptr, i64, i64 }, ptr %a965 - call void @finch.gen.emit(ptr %t934, { ptr, i64, i64 } %t969) - store { ptr, i64, i64 } %t969, ptr %a970 - call void @finch_str_drop(ptr %a970) - %t971 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5796, i64 4, i64 0 }) - %t972 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t971, 1 - call void @finch_str_drop(ptr %a929) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t972 -endif8925: - %t973 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t973, ptr %a974 - store { ptr, i64, i64 } { ptr @.str.5797, i64 7, i64 0 }, ptr %a975 - %t976 = call i32 @finch_str_eq(ptr %a974, ptr %a975) - %t977 = icmp ne i32 %t976, 0 - br i1 %t977, label %then8930, label %endif8932 -then8930: - %t978 = load ptr, ptr %a1 - %t979 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t978, %S.ast.Node %t979, i64 0) - %t980 = load ptr, ptr %a1 - %t981 = load { ptr, i64, i64 }, ptr %a39 - %t982 = call { ptr, i64, i64 } @finch.gen.load(ptr %t980, { ptr, i64, i64 } { ptr @.str.5798, i64 3, i64 0 }, { ptr, i64, i64 } %t981) - store { ptr, i64, i64 } %t982, ptr %a983 - %t984 = load ptr, ptr %a1 - %t985 = load { ptr, i64, i64 }, ptr %a3 - %t986 = call { ptr, i64, i64 } @finch.gen.load(ptr %t984, { ptr, i64, i64 } { ptr @.str.5799, i64 3, i64 0 }, { ptr, i64, i64 } %t985) - store { ptr, i64, i64 } %t986, ptr %a987 - %t988 = load ptr, ptr %a1 - %t989 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5800, i64 9, i64 0 }, ptr %a991 - store { ptr, i64, i64 } %t989, ptr %a992 - call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t993, ptr %a995 - store { ptr, i64, i64 } { ptr @.str.5801, i64 3, i64 0 }, ptr %a996 - call void @finch_str_concat(ptr %a994, ptr %a995, ptr %a996) - store { ptr, i64, i64 } %t993, ptr %a997 - call void @finch_str_drop(ptr %a997) - %t998 = load { ptr, i64, i64 }, ptr %a994 - %t999 = call { ptr, i64, i64 } @finch.gen.op(ptr %t988, { ptr, i64, i64 } %t998) - store { ptr, i64, i64 } %t998, ptr %a1000 - call void @finch_str_drop(ptr %a1000) - store { ptr, i64, i64 } %t999, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = load { ptr, i64, i64 }, ptr %a1001 - %t1004 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1002, { ptr, i64, i64 } %t1003) - store { ptr, i64, i64 } %t1004, ptr %a1005 - %t1006 = load ptr, ptr %a1 - %t1007 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5802, i64 23, i64 0 }, ptr %a1009 - store { ptr, i64, i64 } %t1007, ptr %a1010 - call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1008 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5803, i64 6, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1016, ptr %a1019 - store { ptr, i64, i64 } %t1017, ptr %a1020 - call void @finch_str_concat(ptr %a1018, ptr %a1019, ptr %a1020) - store { ptr, i64, i64 } %t1016, ptr %a1021 - call void @finch_str_drop(ptr %a1021) - %t1022 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } %t1022, ptr %a1024 - store { ptr, i64, i64 } { ptr @.str.5804, i64 6, i64 0 }, ptr %a1025 - call void @finch_str_concat(ptr %a1023, ptr %a1024, ptr %a1025) - store { ptr, i64, i64 } %t1022, ptr %a1026 - call void @finch_str_drop(ptr %a1026) - %t1027 = load { ptr, i64, i64 }, ptr %a1023 - %t1028 = load { ptr, i64, i64 }, ptr %a1005 - %t1029 = extractvalue { ptr, i64, i64 } %t1028, 1 - %t1030 = icmp uge i64 3, %t1029 - br i1 %t1030, label %range8933, label %inrange8934 -range8933: - call void @finch_panic_index(ptr @.str.5805, i64 5516, i64 3, i64 %t1029) - unreachable -inrange8934: - %t1031 = extractvalue { ptr, i64, i64 } %t1028, 0 - %t1032 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1031, i64 3 - %t1033 = load { ptr, i64, i64 }, ptr %t1032 - store { ptr, i64, i64 } %t1027, ptr %a1035 - store { ptr, i64, i64 } %t1033, ptr %a1036 - call void @finch_str_concat(ptr %a1034, ptr %a1035, ptr %a1036) - store { ptr, i64, i64 } %t1027, ptr %a1037 - call void @finch_str_drop(ptr %a1037) - %t1038 = load { ptr, i64, i64 }, ptr %a1034 - %t1039 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1006, { ptr, i64, i64 } %t1038) - store { ptr, i64, i64 } %t1038, ptr %a1040 - call void @finch_str_drop(ptr %a1040) - store { ptr, i64, i64 } %t1039, ptr %a1041 - %t1042 = load ptr, ptr %a1 - %t1043 = load ptr, ptr %a1 - %t1044 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5807, i64 8, i64 0 }, ptr %a1046 - store { ptr, i64, i64 } %t1044, ptr %a1047 - call void @finch_str_concat(ptr %a1045, ptr %a1046, ptr %a1047) - %t1048 = load { ptr, i64, i64 }, ptr %a1045 - store { ptr, i64, i64 } %t1048, ptr %a1050 - store { ptr, i64, i64 } { ptr @.str.5808, i64 3, i64 0 }, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - store { ptr, i64, i64 } %t1048, ptr %a1052 - call void @finch_str_drop(ptr %a1052) - %t1053 = load { ptr, i64, i64 }, ptr %a1049 - %t1054 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1043, { ptr, i64, i64 } %t1053) - store { ptr, i64, i64 } %t1053, ptr %a1055 - call void @finch_str_drop(ptr %a1055) - store { ptr, i64, i64 } { ptr @.str.5806, i64 8, i64 0 }, ptr %a1057 - store { ptr, i64, i64 } %t1054, ptr %a1058 - call void @finch_str_concat(ptr %a1056, ptr %a1057, ptr %a1058) - store { ptr, i64, i64 } %t1054, ptr %a1059 - call void @finch_str_drop(ptr %a1059) - %t1060 = load { ptr, i64, i64 }, ptr %a1056 - store { ptr, i64, i64 } %t1060, ptr %a1062 - store { ptr, i64, i64 } { ptr @.str.5809, i64 2, i64 0 }, ptr %a1063 - call void @finch_str_concat(ptr %a1061, ptr %a1062, ptr %a1063) - store { ptr, i64, i64 } %t1060, ptr %a1064 - call void @finch_str_drop(ptr %a1064) - %t1065 = load { ptr, i64, i64 }, ptr %a1061 - %t1066 = load { ptr, i64, i64 }, ptr %a1005 - %t1067 = extractvalue { ptr, i64, i64 } %t1066, 1 - %t1068 = icmp uge i64 3, %t1067 - br i1 %t1068, label %range8935, label %inrange8936 -range8935: - call void @finch_panic_index(ptr @.str.5810, i64 5517, i64 3, i64 %t1067) - unreachable -inrange8936: - %t1069 = extractvalue { ptr, i64, i64 } %t1066, 0 - %t1070 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1069, i64 3 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1065, ptr %a1073 - store { ptr, i64, i64 } %t1071, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1065, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1042, { ptr, i64, i64 } %t1076) - store { ptr, i64, i64 } %t1076, ptr %a1078 - call void @finch_str_drop(ptr %a1078) - store { ptr, i64, i64 } %t1077, ptr %a1079 - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5811, i64 23, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - %t1085 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1085, ptr %a1087 - store { ptr, i64, i64 } { ptr @.str.5812, i64 6, i64 0 }, ptr %a1088 - call void @finch_str_concat(ptr %a1086, ptr %a1087, ptr %a1088) - store { ptr, i64, i64 } %t1085, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load { ptr, i64, i64 }, ptr %a1086 - %t1091 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1090, ptr %a1093 - store { ptr, i64, i64 } %t1091, ptr %a1094 - call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) - store { ptr, i64, i64 } %t1090, ptr %a1095 - call void @finch_str_drop(ptr %a1095) - %t1096 = load { ptr, i64, i64 }, ptr %a1092 - store { ptr, i64, i64 } %t1096, ptr %a1098 - store { ptr, i64, i64 } { ptr @.str.5813, i64 6, i64 0 }, ptr %a1099 - call void @finch_str_concat(ptr %a1097, ptr %a1098, ptr %a1099) - store { ptr, i64, i64 } %t1096, ptr %a1100 - call void @finch_str_drop(ptr %a1100) - %t1101 = load { ptr, i64, i64 }, ptr %a1097 - %t1102 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1101, ptr %a1104 - store { ptr, i64, i64 } %t1102, ptr %a1105 - call void @finch_str_concat(ptr %a1103, ptr %a1104, ptr %a1105) - store { ptr, i64, i64 } %t1101, ptr %a1106 - call void @finch_str_drop(ptr %a1106) - %t1107 = load { ptr, i64, i64 }, ptr %a1103 - %t1108 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1080, { ptr, i64, i64 } %t1107) - store { ptr, i64, i64 } %t1107, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - store { ptr, i64, i64 } %t1108, ptr %a1110 - %t1111 = load ptr, ptr %a1 - %t1112 = load { ptr, i64, i64 }, ptr %a19 - %t1113 = load { ptr, i64, i64 }, ptr %a1041 - %t1114 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1111, { ptr, i64, i64 } %t1112, { ptr, i64, i64 } %t1113) - store { ptr, i64, i64 } %t1114, ptr %a1115 - %t1116 = load ptr, ptr %a1 - %t1117 = load { ptr, i64, i64 }, ptr %a19 - %t1118 = load { ptr, i64, i64 }, ptr %a1110 - %t1119 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1116, { ptr, i64, i64 } %t1117, { ptr, i64, i64 } %t1118) - store { ptr, i64, i64 } %t1119, ptr %a1120 - %t1121 = load ptr, ptr %a1 - %t1122 = load { ptr, i64, i64 }, ptr %a19 - %t1123 = load { ptr, i64, i64 }, ptr %a1120 - %t1124 = load { ptr, i64, i64 }, ptr %a1041 - call void @finch.gen.store(ptr %t1121, { ptr, i64, i64 } %t1122, { ptr, i64, i64 } %t1123, { ptr, i64, i64 } %t1124) - %t1125 = load ptr, ptr %a1 - %t1126 = load { ptr, i64, i64 }, ptr %a19 - %t1127 = load { ptr, i64, i64 }, ptr %a1115 - %t1128 = load { ptr, i64, i64 }, ptr %a1110 - call void @finch.gen.store(ptr %t1125, { ptr, i64, i64 } %t1126, { ptr, i64, i64 } %t1127, { ptr, i64, i64 } %t1128) - %t1129 = load ptr, ptr %a1 - %t1130 = load { ptr, i64, i64 }, ptr %a1005 - call void @finch.gen.loopEnd(ptr %t1129, { ptr, i64, i64 } %t1130) - %t1131 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5814, i64 4, i64 0 }) - %t1132 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1131, 1 - call void @finch_str_drop(ptr %a1120) - call void @finch_str_drop(ptr %a1115) - call void @finch_str_drop(ptr %a1110) - call void @finch_str_drop(ptr %a1079) - call void @finch_str_drop(ptr %a1041) - call void @finch.drop.arr_str(ptr %a1005) - call void @finch_str_drop(ptr %a1001) - call void @finch_str_drop(ptr %a987) - call void @finch_str_drop(ptr %a983) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1132 -endif8932: - %t1133 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1133, ptr %a1134 - store { ptr, i64, i64 } { ptr @.str.5815, i64 5, i64 0 }, ptr %a1135 - %t1136 = call i32 @finch_str_eq(ptr %a1134, ptr %a1135) - %t1137 = icmp ne i32 %t1136, 0 - br i1 %t1137, label %then8937, label %endif8939 -then8937: - %t1138 = load ptr, ptr %a1 - %t1139 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1138, %S.ast.Node %t1139, i64 2) - %t1140 = load ptr, ptr %a1 - %t1141 = load ptr, ptr %a1 - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1143 = load { ptr, i64, i64 }, ptr %t1142 - %t1144 = extractvalue { ptr, i64, i64 } %t1143, 1 - %t1145 = icmp uge i64 1, %t1144 - br i1 %t1145, label %range8940, label %inrange8941 -range8940: - call void @finch_panic_index(ptr @.str.5816, i64 5528, i64 1, i64 %t1144) - unreachable -inrange8941: - %t1146 = extractvalue { ptr, i64, i64 } %t1143, 0 - %t1147 = getelementptr inbounds %S.ast.Node, ptr %t1146, i64 1 - %t1148 = load %S.ast.Node, ptr %t1147 - %t1149 = call %S.gen.Val @finch.gen.expr(ptr %t1141, %S.ast.Node %t1148) - %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5817, i64 3, i64 0 }) - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 1, %t1153 - br i1 %t1154, label %range8942, label %inrange8943 -range8942: - call void @finch_panic_index(ptr @.str.5818, i64 5528, i64 1, i64 %t1153) - unreachable -inrange8943: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 1 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.coerce(ptr %t1140, %S.gen.Val %t1149, %S.ast.Type %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5819, i64 9, i64 0 }) - store %S.gen.Val %t1149, ptr %a1159 - call void @finch.drop.S_gen_Val(ptr %a1159) - store %S.ast.Type %t1150, ptr %a1160 - call void @finch.drop.S_ast_Type(ptr %a1160) - %t1161 = extractvalue %S.gen.Val %t1158, 0 - store { ptr, i64, i64 } %t1161, ptr %a1162 - call void @finch_str_copy(ptr %a1163, ptr %a1162) - %t1164 = load { ptr, i64, i64 }, ptr %a1163 - store %S.gen.Val %t1158, ptr %a1165 - call void @finch.drop.S_gen_Val(ptr %a1165) - store { ptr, i64, i64 } %t1164, ptr %a1166 - %t1167 = load ptr, ptr %a1 - %t1168 = load ptr, ptr %a1 - %t1169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1170 = load { ptr, i64, i64 }, ptr %t1169 - %t1171 = extractvalue { ptr, i64, i64 } %t1170, 1 - %t1172 = icmp uge i64 2, %t1171 - br i1 %t1172, label %range8944, label %inrange8945 -range8944: - call void @finch_panic_index(ptr @.str.5820, i64 5529, i64 2, i64 %t1171) - unreachable -inrange8945: - %t1173 = extractvalue { ptr, i64, i64 } %t1170, 0 - %t1174 = getelementptr inbounds %S.ast.Node, ptr %t1173, i64 2 - %t1175 = load %S.ast.Node, ptr %t1174 - %t1176 = call %S.gen.Val @finch.gen.expr(ptr %t1168, %S.ast.Node %t1175) - %t1177 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5821, i64 3, i64 0 }) - %t1178 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1179 = load { ptr, i64, i64 }, ptr %t1178 - %t1180 = extractvalue { ptr, i64, i64 } %t1179, 1 - %t1181 = icmp uge i64 2, %t1180 - br i1 %t1181, label %range8946, label %inrange8947 -range8946: - call void @finch_panic_index(ptr @.str.5822, i64 5529, i64 2, i64 %t1180) - unreachable -inrange8947: - %t1182 = extractvalue { ptr, i64, i64 } %t1179, 0 - %t1183 = getelementptr inbounds %S.ast.Node, ptr %t1182, i64 2 - %t1184 = load %S.ast.Node, ptr %t1183 - %t1185 = call %S.gen.Val @finch.gen.coerce(ptr %t1167, %S.gen.Val %t1176, %S.ast.Type %t1177, %S.ast.Node %t1184, { ptr, i64, i64 } { ptr @.str.5823, i64 7, i64 0 }) - store %S.gen.Val %t1176, ptr %a1186 - call void @finch.drop.S_gen_Val(ptr %a1186) - store %S.ast.Type %t1177, ptr %a1187 - call void @finch.drop.S_ast_Type(ptr %a1187) - %t1188 = extractvalue %S.gen.Val %t1185, 0 - store { ptr, i64, i64 } %t1188, ptr %a1189 - call void @finch_str_copy(ptr %a1190, ptr %a1189) - %t1191 = load { ptr, i64, i64 }, ptr %a1190 - store %S.gen.Val %t1185, ptr %a1192 - call void @finch.drop.S_gen_Val(ptr %a1192) - store { ptr, i64, i64 } %t1191, ptr %a1193 - %t1194 = load ptr, ptr %a1 - %t1195 = load { ptr, i64, i64 }, ptr %a39 - %t1196 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1194, { ptr, i64, i64 } { ptr @.str.5824, i64 3, i64 0 }, { ptr, i64, i64 } %t1195) - store { ptr, i64, i64 } %t1196, ptr %a1197 - %t1198 = load ptr, ptr %a1 - %t1199 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5825, i64 13, i64 0 }, ptr %a1201 - store { ptr, i64, i64 } %t1199, ptr %a1202 - call void @finch_str_concat(ptr %a1200, ptr %a1201, ptr %a1202) - %t1203 = load { ptr, i64, i64 }, ptr %a1200 - store { ptr, i64, i64 } %t1203, ptr %a1205 - store { ptr, i64, i64 } { ptr @.str.5826, i64 3, i64 0 }, ptr %a1206 - call void @finch_str_concat(ptr %a1204, ptr %a1205, ptr %a1206) - store { ptr, i64, i64 } %t1203, ptr %a1207 - call void @finch_str_drop(ptr %a1207) - %t1208 = load { ptr, i64, i64 }, ptr %a1204 - %t1209 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1198, { ptr, i64, i64 } %t1208) - store { ptr, i64, i64 } %t1208, ptr %a1210 - call void @finch_str_drop(ptr %a1210) - store { ptr, i64, i64 } %t1209, ptr %a1211 - %t1212 = load ptr, ptr %a1 - %t1213 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5827, i64 13, i64 0 }, ptr %a1215 - store { ptr, i64, i64 } %t1213, ptr %a1216 - call void @finch_str_concat(ptr %a1214, ptr %a1215, ptr %a1216) - %t1217 = load { ptr, i64, i64 }, ptr %a1214 - store { ptr, i64, i64 } %t1217, ptr %a1219 - store { ptr, i64, i64 } { ptr @.str.5828, i64 2, i64 0 }, ptr %a1220 - call void @finch_str_concat(ptr %a1218, ptr %a1219, ptr %a1220) - store { ptr, i64, i64 } %t1217, ptr %a1221 - call void @finch_str_drop(ptr %a1221) - %t1222 = load { ptr, i64, i64 }, ptr %a1218 - %t1223 = load { ptr, i64, i64 }, ptr %a1197 - store { ptr, i64, i64 } %t1222, ptr %a1225 - store { ptr, i64, i64 } %t1223, ptr %a1226 - call void @finch_str_concat(ptr %a1224, ptr %a1225, ptr %a1226) - store { ptr, i64, i64 } %t1222, ptr %a1227 - call void @finch_str_drop(ptr %a1227) - %t1228 = load { ptr, i64, i64 }, ptr %a1224 - %t1229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1212, { ptr, i64, i64 } %t1228) - store { ptr, i64, i64 } %t1228, ptr %a1230 - call void @finch_str_drop(ptr %a1230) - store { ptr, i64, i64 } %t1229, ptr %a1231 - %t1232 = load ptr, ptr %a1 - %t1233 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5829, i64 13, i64 0 }, ptr %a1235 - store { ptr, i64, i64 } %t1233, ptr %a1236 - call void @finch_str_concat(ptr %a1234, ptr %a1235, ptr %a1236) - %t1237 = load { ptr, i64, i64 }, ptr %a1234 - store { ptr, i64, i64 } %t1237, ptr %a1239 - store { ptr, i64, i64 } { ptr @.str.5830, i64 2, i64 0 }, ptr %a1240 - call void @finch_str_concat(ptr %a1238, ptr %a1239, ptr %a1240) - store { ptr, i64, i64 } %t1237, ptr %a1241 - call void @finch_str_drop(ptr %a1241) - %t1242 = load { ptr, i64, i64 }, ptr %a1238 - %t1243 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } %t1242, ptr %a1245 - store { ptr, i64, i64 } %t1243, ptr %a1246 - call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246) - store { ptr, i64, i64 } %t1242, ptr %a1247 - call void @finch_str_drop(ptr %a1247) - %t1248 = load { ptr, i64, i64 }, ptr %a1244 - %t1249 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1232, { ptr, i64, i64 } %t1248) - store { ptr, i64, i64 } %t1248, ptr %a1250 - call void @finch_str_drop(ptr %a1250) - store { ptr, i64, i64 } %t1249, ptr %a1251 - %t1252 = load ptr, ptr %a1 - %t1253 = load ptr, ptr %a1 - %t1254 = load ptr, ptr %a1 - %t1255 = load { ptr, i64, i64 }, ptr %a1211 - store { ptr, i64, i64 } { ptr @.str.5832, i64 6, i64 0 }, ptr %a1257 - store { ptr, i64, i64 } %t1255, ptr %a1258 - call void @finch_str_concat(ptr %a1256, ptr %a1257, ptr %a1258) - %t1259 = load { ptr, i64, i64 }, ptr %a1256 - store { ptr, i64, i64 } %t1259, ptr %a1261 - store { ptr, i64, i64 } { ptr @.str.5833, i64 2, i64 0 }, ptr %a1262 - call void @finch_str_concat(ptr %a1260, ptr %a1261, ptr %a1262) - store { ptr, i64, i64 } %t1259, ptr %a1263 - call void @finch_str_drop(ptr %a1263) - %t1264 = load { ptr, i64, i64 }, ptr %a1260 - %t1265 = load { ptr, i64, i64 }, ptr %a1231 - store { ptr, i64, i64 } %t1264, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - store { ptr, i64, i64 } %t1264, ptr %a1269 - call void @finch_str_drop(ptr %a1269) - %t1270 = load { ptr, i64, i64 }, ptr %a1266 - %t1271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1254, { ptr, i64, i64 } %t1270) - store { ptr, i64, i64 } %t1270, ptr %a1272 - call void @finch_str_drop(ptr %a1272) - store { ptr, i64, i64 } { ptr @.str.5831, i64 6, i64 0 }, ptr %a1274 - store { ptr, i64, i64 } %t1271, ptr %a1275 - call void @finch_str_concat(ptr %a1273, ptr %a1274, ptr %a1275) - store { ptr, i64, i64 } %t1271, ptr %a1276 - call void @finch_str_drop(ptr %a1276) - %t1277 = load { ptr, i64, i64 }, ptr %a1273 - store { ptr, i64, i64 } %t1277, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5834, i64 2, i64 0 }, ptr %a1280 - call void @finch_str_concat(ptr %a1278, ptr %a1279, ptr %a1280) - store { ptr, i64, i64 } %t1277, ptr %a1281 - call void @finch_str_drop(ptr %a1281) - %t1282 = load { ptr, i64, i64 }, ptr %a1278 - %t1283 = load { ptr, i64, i64 }, ptr %a1251 - store { ptr, i64, i64 } %t1282, ptr %a1285 - store { ptr, i64, i64 } %t1283, ptr %a1286 - call void @finch_str_concat(ptr %a1284, ptr %a1285, ptr %a1286) - store { ptr, i64, i64 } %t1282, ptr %a1287 - call void @finch_str_drop(ptr %a1287) - %t1288 = load { ptr, i64, i64 }, ptr %a1284 - %t1289 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1253, { ptr, i64, i64 } %t1288) - store { ptr, i64, i64 } %t1288, ptr %a1290 - call void @finch_str_drop(ptr %a1290) - %t1291 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t1252, { ptr, i64, i64 } %t1289, { ptr, i64, i64 } { ptr @.str.5835, i64 33, i64 0 }, %S.ast.Node %t1291) - store { ptr, i64, i64 } %t1289, ptr %a1292 - call void @finch_str_drop(ptr %a1292) - %t1293 = load ptr, ptr %a1 - %t1294 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5836, i64 8, i64 0 }, ptr %a1296 - store { ptr, i64, i64 } %t1294, ptr %a1297 - call void @finch_str_concat(ptr %a1295, ptr %a1296, ptr %a1297) - %t1298 = load { ptr, i64, i64 }, ptr %a1295 - store { ptr, i64, i64 } %t1298, ptr %a1300 - store { ptr, i64, i64 } { ptr @.str.5837, i64 2, i64 0 }, ptr %a1301 - call void @finch_str_concat(ptr %a1299, ptr %a1300, ptr %a1301) - store { ptr, i64, i64 } %t1298, ptr %a1302 - call void @finch_str_drop(ptr %a1302) - %t1303 = load { ptr, i64, i64 }, ptr %a1299 - %t1304 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } %t1303, ptr %a1306 - store { ptr, i64, i64 } %t1304, ptr %a1307 - call void @finch_str_concat(ptr %a1305, ptr %a1306, ptr %a1307) - store { ptr, i64, i64 } %t1303, ptr %a1308 - call void @finch_str_drop(ptr %a1308) - %t1309 = load { ptr, i64, i64 }, ptr %a1305 - %t1310 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1293, { ptr, i64, i64 } %t1309) - store { ptr, i64, i64 } %t1309, ptr %a1311 - call void @finch_str_drop(ptr %a1311) - store { ptr, i64, i64 } %t1310, ptr %a1312 - %t1313 = load ptr, ptr %a1 - %t1314 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1313, { ptr, i64, i64 } { ptr @.str.5838, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1314, ptr %a1315 - %t1316 = load ptr, ptr %a1 - %t1317 = load { ptr, i64, i64 }, ptr %a1315 - store { ptr, i64, i64 } { ptr @.str.5839, i64 30, i64 0 }, ptr %a1319 - store { ptr, i64, i64 } %t1317, ptr %a1320 - call void @finch_str_concat(ptr %a1318, ptr %a1319, ptr %a1320) - %t1321 = load { ptr, i64, i64 }, ptr %a1318 - store { ptr, i64, i64 } %t1321, ptr %a1323 - store { ptr, i64, i64 } { ptr @.str.5840, i64 6, i64 0 }, ptr %a1324 - call void @finch_str_concat(ptr %a1322, ptr %a1323, ptr %a1324) - store { ptr, i64, i64 } %t1321, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1322 - %t1327 = load { ptr, i64, i64 }, ptr %a1312 - store { ptr, i64, i64 } %t1326, ptr %a1329 - store { ptr, i64, i64 } %t1327, ptr %a1330 - call void @finch_str_concat(ptr %a1328, ptr %a1329, ptr %a1330) - store { ptr, i64, i64 } %t1326, ptr %a1331 - call void @finch_str_drop(ptr %a1331) - %t1332 = load { ptr, i64, i64 }, ptr %a1328 - store { ptr, i64, i64 } %t1332, ptr %a1334 - store { ptr, i64, i64 } { ptr @.str.5841, i64 6, i64 0 }, ptr %a1335 - call void @finch_str_concat(ptr %a1333, ptr %a1334, ptr %a1335) - store { ptr, i64, i64 } %t1332, ptr %a1336 - call void @finch_str_drop(ptr %a1336) - %t1337 = load { ptr, i64, i64 }, ptr %a1333 - %t1338 = load ptr, ptr %a1 - %t1339 = load %S.ast.Type, ptr %a15 - %t1340 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1338, %S.ast.Type %t1339) - store { ptr, i64, i64 } %t1337, ptr %a1342 - store { ptr, i64, i64 } %t1340, ptr %a1343 - call void @finch_str_concat(ptr %a1341, ptr %a1342, ptr %a1343) - store { ptr, i64, i64 } %t1337, ptr %a1344 - call void @finch_str_drop(ptr %a1344) - store { ptr, i64, i64 } %t1340, ptr %a1345 - call void @finch_str_drop(ptr %a1345) - %t1346 = load { ptr, i64, i64 }, ptr %a1341 - store { ptr, i64, i64 } %t1346, ptr %a1348 - store { ptr, i64, i64 } { ptr @.str.5842, i64 1, i64 0 }, ptr %a1349 - call void @finch_str_concat(ptr %a1347, ptr %a1348, ptr %a1349) - store { ptr, i64, i64 } %t1346, ptr %a1350 - call void @finch_str_drop(ptr %a1350) - %t1351 = load { ptr, i64, i64 }, ptr %a1347 - call void @finch.gen.emit(ptr %t1316, { ptr, i64, i64 } %t1351) - store { ptr, i64, i64 } %t1351, ptr %a1352 - call void @finch_str_drop(ptr %a1352) - %t1353 = load ptr, ptr %a1 - %t1354 = load { ptr, i64, i64 }, ptr %a3 - %t1355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1353, { ptr, i64, i64 } { ptr @.str.5843, i64 3, i64 0 }, { ptr, i64, i64 } %t1354) - store { ptr, i64, i64 } %t1355, ptr %a1356 - %t1357 = load ptr, ptr %a1 - %t1358 = load { ptr, i64, i64 }, ptr %a1315 - %t1359 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1357, { ptr, i64, i64 } { ptr @.str.5844, i64 3, i64 0 }, { ptr, i64, i64 } %t1358) - store { ptr, i64, i64 } %t1359, ptr %a1360 - %t1361 = load ptr, ptr %a1 - %t1362 = load { ptr, i64, i64 }, ptr %a1312 - %t1363 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1361, { ptr, i64, i64 } %t1362) - store { ptr, i64, i64 } %t1363, ptr %a1364 - %t1365 = load ptr, ptr %a1 - %t1366 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5845, i64 23, i64 0 }, ptr %a1368 - store { ptr, i64, i64 } %t1366, ptr %a1369 - call void @finch_str_concat(ptr %a1367, ptr %a1368, ptr %a1369) - %t1370 = load { ptr, i64, i64 }, ptr %a1367 - store { ptr, i64, i64 } %t1370, ptr %a1372 - store { ptr, i64, i64 } { ptr @.str.5846, i64 6, i64 0 }, ptr %a1373 - call void @finch_str_concat(ptr %a1371, ptr %a1372, ptr %a1373) - store { ptr, i64, i64 } %t1370, ptr %a1374 - call void @finch_str_drop(ptr %a1374) - %t1375 = load { ptr, i64, i64 }, ptr %a1371 - %t1376 = load { ptr, i64, i64 }, ptr %a1360 - store { ptr, i64, i64 } %t1375, ptr %a1378 - store { ptr, i64, i64 } %t1376, ptr %a1379 - call void @finch_str_concat(ptr %a1377, ptr %a1378, ptr %a1379) - store { ptr, i64, i64 } %t1375, ptr %a1380 - call void @finch_str_drop(ptr %a1380) - %t1381 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1381, ptr %a1383 - store { ptr, i64, i64 } { ptr @.str.5847, i64 6, i64 0 }, ptr %a1384 - call void @finch_str_concat(ptr %a1382, ptr %a1383, ptr %a1384) - store { ptr, i64, i64 } %t1381, ptr %a1385 - call void @finch_str_drop(ptr %a1385) - %t1386 = load { ptr, i64, i64 }, ptr %a1382 - %t1387 = load { ptr, i64, i64 }, ptr %a1364 - %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 - %t1389 = icmp uge i64 3, %t1388 - br i1 %t1389, label %range8948, label %inrange8949 -range8948: - call void @finch_panic_index(ptr @.str.5848, i64 5541, i64 3, i64 %t1388) - unreachable -inrange8949: - %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 - %t1391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1390, i64 3 - %t1392 = load { ptr, i64, i64 }, ptr %t1391 - store { ptr, i64, i64 } %t1386, ptr %a1394 - store { ptr, i64, i64 } %t1392, ptr %a1395 - call void @finch_str_concat(ptr %a1393, ptr %a1394, ptr %a1395) - store { ptr, i64, i64 } %t1386, ptr %a1396 - call void @finch_str_drop(ptr %a1396) - %t1397 = load { ptr, i64, i64 }, ptr %a1393 - %t1398 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1365, { ptr, i64, i64 } %t1397) - store { ptr, i64, i64 } %t1397, ptr %a1399 - call void @finch_str_drop(ptr %a1399) - store { ptr, i64, i64 } %t1398, ptr %a1400 - %t1401 = load ptr, ptr %a1 - %t1402 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5849, i64 23, i64 0 }, ptr %a1404 - store { ptr, i64, i64 } %t1402, ptr %a1405 - call void @finch_str_concat(ptr %a1403, ptr %a1404, ptr %a1405) - %t1406 = load { ptr, i64, i64 }, ptr %a1403 - store { ptr, i64, i64 } %t1406, ptr %a1408 - store { ptr, i64, i64 } { ptr @.str.5850, i64 6, i64 0 }, ptr %a1409 - call void @finch_str_concat(ptr %a1407, ptr %a1408, ptr %a1409) - store { ptr, i64, i64 } %t1406, ptr %a1410 - call void @finch_str_drop(ptr %a1410) - %t1411 = load { ptr, i64, i64 }, ptr %a1407 - %t1412 = load { ptr, i64, i64 }, ptr %a1356 - store { ptr, i64, i64 } %t1411, ptr %a1414 - store { ptr, i64, i64 } %t1412, ptr %a1415 - call void @finch_str_concat(ptr %a1413, ptr %a1414, ptr %a1415) - store { ptr, i64, i64 } %t1411, ptr %a1416 - call void @finch_str_drop(ptr %a1416) - %t1417 = load { ptr, i64, i64 }, ptr %a1413 - store { ptr, i64, i64 } %t1417, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5851, i64 6, i64 0 }, ptr %a1420 - call void @finch_str_concat(ptr %a1418, ptr %a1419, ptr %a1420) - store { ptr, i64, i64 } %t1417, ptr %a1421 - call void @finch_str_drop(ptr %a1421) - %t1422 = load { ptr, i64, i64 }, ptr %a1418 - %t1423 = load ptr, ptr %a1 - %t1424 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5852, i64 8, i64 0 }, ptr %a1426 - store { ptr, i64, i64 } %t1424, ptr %a1427 - call void @finch_str_concat(ptr %a1425, ptr %a1426, ptr %a1427) - %t1428 = load { ptr, i64, i64 }, ptr %a1425 - store { ptr, i64, i64 } %t1428, ptr %a1430 - store { ptr, i64, i64 } { ptr @.str.5853, i64 2, i64 0 }, ptr %a1431 - call void @finch_str_concat(ptr %a1429, ptr %a1430, ptr %a1431) - store { ptr, i64, i64 } %t1428, ptr %a1432 - call void @finch_str_drop(ptr %a1432) - %t1433 = load { ptr, i64, i64 }, ptr %a1429 - %t1434 = load { ptr, i64, i64 }, ptr %a1364 - %t1435 = extractvalue { ptr, i64, i64 } %t1434, 1 - %t1436 = icmp uge i64 3, %t1435 - br i1 %t1436, label %range8950, label %inrange8951 -range8950: - call void @finch_panic_index(ptr @.str.5854, i64 5542, i64 3, i64 %t1435) - unreachable -inrange8951: - %t1437 = extractvalue { ptr, i64, i64 } %t1434, 0 - %t1438 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1437, i64 3 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1433, ptr %a1441 - store { ptr, i64, i64 } %t1439, ptr %a1442 - call void @finch_str_concat(ptr %a1440, ptr %a1441, ptr %a1442) - store { ptr, i64, i64 } %t1433, ptr %a1443 - call void @finch_str_drop(ptr %a1443) - %t1444 = load { ptr, i64, i64 }, ptr %a1440 - %t1445 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1423, { ptr, i64, i64 } %t1444) - store { ptr, i64, i64 } %t1444, ptr %a1446 - call void @finch_str_drop(ptr %a1446) - store { ptr, i64, i64 } %t1422, ptr %a1448 - store { ptr, i64, i64 } %t1445, ptr %a1449 - call void @finch_str_concat(ptr %a1447, ptr %a1448, ptr %a1449) - store { ptr, i64, i64 } %t1422, ptr %a1450 - call void @finch_str_drop(ptr %a1450) - store { ptr, i64, i64 } %t1445, ptr %a1451 - call void @finch_str_drop(ptr %a1451) - %t1452 = load { ptr, i64, i64 }, ptr %a1447 - %t1453 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1401, { ptr, i64, i64 } %t1452) - store { ptr, i64, i64 } %t1452, ptr %a1454 - call void @finch_str_drop(ptr %a1454) - store { ptr, i64, i64 } %t1453, ptr %a1455 - %t1456 = load ptr, ptr %a1 - %t1457 = load { ptr, i64, i64 }, ptr %a1400 - %t1458 = load { ptr, i64, i64 }, ptr %a1455 - %t1459 = load %S.ast.Type, ptr %a15 - call void @finch.gen.copyAt(ptr %t1456, { ptr, i64, i64 } %t1457, { ptr, i64, i64 } %t1458, %S.ast.Type %t1459) - %t1460 = load ptr, ptr %a1 - %t1461 = load { ptr, i64, i64 }, ptr %a1364 - call void @finch.gen.loopEnd(ptr %t1460, { ptr, i64, i64 } %t1461) - %t1462 = load ptr, ptr %a1 - %t1463 = load { ptr, i64, i64 }, ptr %a1315 - %t1464 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1462, { ptr, i64, i64 } { ptr @.str.5855, i64 17, i64 0 }, { ptr, i64, i64 } %t1463) - %t1465 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1464, 0 - %t1466 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t1466, ptr %a1467 - call void @finch.copy.S_ast_Type(ptr %a1468, ptr %a1467) - %t1469 = load %S.ast.Type, ptr %a1468 - %t1470 = insertvalue %S.gen.Val %t1465, %S.ast.Type %t1469, 1 - %t1471 = insertvalue %S.gen.Val %t1470, i1 true, 2 - call void @finch_str_drop(ptr %a1455) - call void @finch_str_drop(ptr %a1400) - call void @finch.drop.arr_str(ptr %a1364) - call void @finch_str_drop(ptr %a1360) - call void @finch_str_drop(ptr %a1356) - call void @finch_str_drop(ptr %a1315) - call void @finch_str_drop(ptr %a1312) - call void @finch_str_drop(ptr %a1251) - call void @finch_str_drop(ptr %a1231) - call void @finch_str_drop(ptr %a1211) - call void @finch_str_drop(ptr %a1197) - call void @finch_str_drop(ptr %a1193) - call void @finch_str_drop(ptr %a1166) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1471 -endif8939: - %t1472 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1472, ptr %a1473 - store { ptr, i64, i64 } { ptr @.str.5856, i64 4, i64 0 }, ptr %a1474 - %t1475 = call i32 @finch_str_eq(ptr %a1473, ptr %a1474) - %t1476 = icmp ne i32 %t1475, 0 - br i1 %t1476, label %then8952, label %endif8954 -then8952: - %t1477 = load ptr, ptr %a1 - %t1478 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1477, %S.ast.Node %t1478, i64 0) - %t1479 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t1480 = load { ptr, i64, i64 }, ptr %t1479 - store { ptr, i64, i64 } %t1480, ptr %a1481 - call void @finch_str_copy(ptr %a1482, ptr %a1481) - %t1483 = load { ptr, i64, i64 }, ptr %a1482 - store { ptr, i64, i64 } %t1483, ptr %a1484 - %t1485 = load %S.ast.Type, ptr %a15 - %t1486 = call i1 @finch.gen.isNumber(%S.ast.Type %t1485) - %t1487 = xor i1 %t1486, true - br label %logic.from8955 -logic.from8955: - br i1 %t1487, label %logic.rhs8956, label %logic.end8957 -logic.rhs8956: - %t1488 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1488, ptr %a1489 - store { ptr, i64, i64 } { ptr @.str.5857, i64 4, i64 0 }, ptr %a1490 - %t1491 = call i32 @finch_str_eq(ptr %a1489, ptr %a1490) - %t1492 = icmp eq i32 %t1491, 0 - br label %logic.rend8958 -logic.rend8958: - br label %logic.end8957 -logic.end8957: - %t1493 = phi i1 [ false, %logic.from8955 ], [ %t1492, %logic.rend8958 ] - br label %logic.from8959 -logic.from8959: - br i1 %t1493, label %logic.rhs8960, label %logic.end8961 -logic.rhs8960: - %t1494 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1494, ptr %a1495 - store { ptr, i64, i64 } { ptr @.str.5858, i64 3, i64 0 }, ptr %a1496 - %t1497 = call i32 @finch_str_eq(ptr %a1495, ptr %a1496) - %t1498 = icmp eq i32 %t1497, 0 - br label %logic.rend8962 -logic.rend8962: - br label %logic.end8961 -logic.end8961: - %t1499 = phi i1 [ false, %logic.from8959 ], [ %t1498, %logic.rend8962 ] - br i1 %t1499, label %then8963, label %endif8965 -then8963: - %t1500 = load ptr, ptr %a1 - %t1501 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t1500, %S.ast.Node %t1501, { ptr, i64, i64 } { ptr @.str.5859, i64 47, i64 0 }) - br label %endif8965 -endif8965: - %t1502 = load ptr, ptr %a1 - %t1503 = load %S.ast.Type, ptr %a15 - %t1504 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1502, %S.ast.Type %t1503) - store { ptr, i64, i64 } %t1504, ptr %a1505 - %t1506 = load ptr, ptr %a1 - %t1507 = load { ptr, i64, i64 }, ptr %a39 - %t1508 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1506, { ptr, i64, i64 } { ptr @.str.5860, i64 3, i64 0 }, { ptr, i64, i64 } %t1507) - store { ptr, i64, i64 } %t1508, ptr %a1509 - %t1510 = load ptr, ptr %a1 - %t1511 = load { ptr, i64, i64 }, ptr %a3 - %t1512 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1510, { ptr, i64, i64 } { ptr @.str.5861, i64 3, i64 0 }, { ptr, i64, i64 } %t1511) - store { ptr, i64, i64 } %t1512, ptr %a1513 - %t1514 = load ptr, ptr %a1 - %t1515 = load { ptr, i64, i64 }, ptr %a1513 - store { ptr, i64, i64 } { ptr @.str.5862, i64 21, i64 0 }, ptr %a1517 - store { ptr, i64, i64 } %t1515, ptr %a1518 - call void @finch_str_concat(ptr %a1516, ptr %a1517, ptr %a1518) - %t1519 = load { ptr, i64, i64 }, ptr %a1516 - store { ptr, i64, i64 } %t1519, ptr %a1521 - store { ptr, i64, i64 } { ptr @.str.5863, i64 6, i64 0 }, ptr %a1522 - call void @finch_str_concat(ptr %a1520, ptr %a1521, ptr %a1522) - store { ptr, i64, i64 } %t1519, ptr %a1523 - call void @finch_str_drop(ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1520 - %t1525 = load { ptr, i64, i64 }, ptr %a1509 - store { ptr, i64, i64 } %t1524, ptr %a1527 - store { ptr, i64, i64 } %t1525, ptr %a1528 - call void @finch_str_concat(ptr %a1526, ptr %a1527, ptr %a1528) - store { ptr, i64, i64 } %t1524, ptr %a1529 - call void @finch_str_drop(ptr %a1529) - %t1530 = load { ptr, i64, i64 }, ptr %a1526 - store { ptr, i64, i64 } %t1530, ptr %a1532 - store { ptr, i64, i64 } { ptr @.str.5864, i64 6, i64 0 }, ptr %a1533 - call void @finch_str_concat(ptr %a1531, ptr %a1532, ptr %a1533) - store { ptr, i64, i64 } %t1530, ptr %a1534 - call void @finch_str_drop(ptr %a1534) - %t1535 = load { ptr, i64, i64 }, ptr %a1531 - %t1536 = load ptr, ptr %a1 - %t1537 = load %S.ast.Type, ptr %a15 - %t1538 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1536, %S.ast.Type %t1537) - store { ptr, i64, i64 } %t1535, ptr %a1540 - store { ptr, i64, i64 } %t1538, ptr %a1541 - call void @finch_str_concat(ptr %a1539, ptr %a1540, ptr %a1541) - store { ptr, i64, i64 } %t1535, ptr %a1542 - call void @finch_str_drop(ptr %a1542) - store { ptr, i64, i64 } %t1538, ptr %a1543 - call void @finch_str_drop(ptr %a1543) - %t1544 = load { ptr, i64, i64 }, ptr %a1539 - store { ptr, i64, i64 } %t1544, ptr %a1546 - store { ptr, i64, i64 } { ptr @.str.5865, i64 6, i64 0 }, ptr %a1547 - call void @finch_str_concat(ptr %a1545, ptr %a1546, ptr %a1547) - store { ptr, i64, i64 } %t1544, ptr %a1548 - call void @finch_str_drop(ptr %a1548) - %t1549 = load { ptr, i64, i64 }, ptr %a1545 - %t1550 = load { ptr, i64, i64 }, ptr %a1505 - store { ptr, i64, i64 } %t1549, ptr %a1552 - store { ptr, i64, i64 } %t1550, ptr %a1553 - call void @finch_str_concat(ptr %a1551, ptr %a1552, ptr %a1553) - store { ptr, i64, i64 } %t1549, ptr %a1554 - call void @finch_str_drop(ptr %a1554) - %t1555 = load { ptr, i64, i64 }, ptr %a1551 - store { ptr, i64, i64 } %t1555, ptr %a1557 - store { ptr, i64, i64 } { ptr @.str.5866, i64 1, i64 0 }, ptr %a1558 - call void @finch_str_concat(ptr %a1556, ptr %a1557, ptr %a1558) - store { ptr, i64, i64 } %t1555, ptr %a1559 - call void @finch_str_drop(ptr %a1559) - %t1560 = load { ptr, i64, i64 }, ptr %a1556 - call void @finch.gen.emit(ptr %t1514, { ptr, i64, i64 } %t1560) - store { ptr, i64, i64 } %t1560, ptr %a1561 - call void @finch_str_drop(ptr %a1561) - %t1562 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5867, i64 4, i64 0 }) - %t1563 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1562, 1 - call void @finch_str_drop(ptr %a1513) - call void @finch_str_drop(ptr %a1509) - call void @finch_str_drop(ptr %a1505) - call void @finch_str_drop(ptr %a1484) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1563 -endif8954: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.5868, i64 24, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5869, i64 96, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1575) - store { ptr, i64, i64 } %t1575, ptr %a1576 - call void @finch_str_drop(ptr %a1576) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val zeroinitializer -} - -define internal void @finch.gen.dropFrom(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca %S.ast.Type, align 16 - %a13 = alloca %S.ast.Type, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t6 = load { ptr, i64, i64 }, ptr %t5 - %t7 = extractvalue { ptr, i64, i64 } %t6, 1 - %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range8966, label %inrange8967 -range8966: - call void @finch_panic_index(ptr @.str.5870, i64 5565, i64 0, i64 %t7) - unreachable -inrange8967: - %t9 = extractvalue { ptr, i64, i64 } %t6, 0 - %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 - %t11 = load %S.ast.Type, ptr %t10 - store %S.ast.Type %t11, ptr %a12 - call void @finch.copy.S_ast_Type(ptr %a13, ptr %a12) - %t14 = load %S.ast.Type, ptr %a13 - store %S.ast.Type %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = load %S.ast.Type, ptr %a15 - %t18 = call i1 @finch.gen.owning(ptr %t16, %S.ast.Type %t17) - %t19 = xor i1 %t18, true - br i1 %t19, label %then8968, label %endif8970 -then8968: - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -endif8970: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Type, ptr %a15 - %t22 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t21) - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = load ptr, ptr %a1 - %t26 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.5872, i64 46, i64 0 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5873, i64 14, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = call { ptr, i64, i64 } @finch.gen.load(ptr %t24, { ptr, i64, i64 } { ptr @.str.5871, i64 3, i64 0 }, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_drop(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load ptr, ptr %a1 - %t42 = load { ptr, i64, i64 }, ptr %a2 - %t43 = call { ptr, i64, i64 } @finch.gen.load(ptr %t41, { ptr, i64, i64 } { ptr @.str.5874, i64 3, i64 0 }, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5875, 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.5876, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - store { ptr, i64, i64 } %t62, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5877, i64 13, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.5878, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t75) - store { ptr, i64, i64 } %t75, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t76, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.5879, i64 10, i64 0 }, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.5880, i64 6, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.5881, i64 10, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5882, i64 13, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t89, ptr %a110 - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t89, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t107, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.5883, i64 6, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - %t126 = call { ptr, i64, i64 } @finch.gen.op(ptr %t79, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a127 - call void @finch_str_drop(ptr %a127) - store { ptr, i64, i64 } %t126, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = load ptr, ptr %a1 - %t131 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.5884, i64 8, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5885, i64 2, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t140, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t140, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t130, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t129, { ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.5886, i64 23, i64 0 }, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5887, i64 6, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5888, i64 6, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load ptr, ptr %a1 - %t175 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5889, i64 8, i64 0 }, ptr %a177 - store { ptr, i64, i64 } %t175, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.5890, i64 2, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = load { ptr, i64, i64 }, ptr %a151 - %t186 = extractvalue { ptr, i64, i64 } %t185, 1 - %t187 = icmp uge i64 3, %t186 - br i1 %t187, label %range8971, label %inrange8972 -range8971: - call void @finch_panic_index(ptr @.str.5891, i64 5576, i64 3, i64 %t186) - unreachable -inrange8972: - %t188 = extractvalue { ptr, i64, i64 } %t185, 0 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } %t184, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t184, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = call { ptr, i64, i64 } @finch.gen.op(ptr %t174, { ptr, i64, i64 } %t195) - store { ptr, i64, i64 } %t195, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t173, ptr %a199 - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t173, ptr %a201 - call void @finch_str_drop(ptr %a201) - store { ptr, i64, i64 } %t196, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a198 - %t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t152, { ptr, i64, i64 } %t203) - store { ptr, i64, i64 } %t203, ptr %a205 - call void @finch_str_drop(ptr %a205) - store { ptr, i64, i64 } %t204, ptr %a206 - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a206 - %t209 = load %S.ast.Type, ptr %a15 - call void @finch.gen.dropAt(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a151 - call void @finch.gen.loopEnd(ptr %t210, { ptr, i64, i64 } %t211) - call void @finch_str_drop(ptr %a206) - call void @finch.drop.arr_str(ptr %a151) - call void @finch_str_drop(ptr %a128) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a64) - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a40) - call void @finch_str_drop(ptr %a23) - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cmpFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = 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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.5892, i64 11, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic8973, label %ok8974 -panic8973: - call void @finch_panic(ptr @.str.5893, i64 5584, ptr @.str.5894) - unreachable -ok8974: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then8975, label %endif8977 -then8975: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif8977: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic8978, label %ok8979 -panic8978: - call void @finch_panic(ptr @.str.5895, i64 5587, ptr @.str.5896) - unreachable -ok8979: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5897, i64 0, i64 0 }, ptr %a33 - %t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.5898, 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 %then8980, label %else8981 -then8980: - %t40 = load ptr, ptr %a1 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t40, { ptr, i64, i64 } { ptr @.str.5899, i64 39, i64 0 }) - store { ptr, i64, i64 } %t41, ptr %a42 - %t43 = load ptr, ptr %a1 - %t44 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5900, i64 10, i64 0 }, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5901, i64 7, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } %t53, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t54, ptr %a33 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a42) - br label %endif8982 -else8981: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.load(ptr %t62, { ptr, i64, i64 } %t63, { ptr, i64, i64 } { ptr @.str.5902, i64 2, i64 0 }) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load { ptr, i64, i64 }, ptr %a61 - %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } { ptr @.str.5903, i64 2, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5904, i64 0, i64 0 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5905, i64 0, i64 0 }, ptr %a71 - %t72 = load %S.ast.Type, ptr %a2 - %t73 = call i1 @finch.gen.isFloat(%S.ast.Type %t72) - br i1 %t73, label %then8983, label %else8984 -then8983: - %t74 = load ptr, ptr %a1 - %t75 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5906, 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.5907, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t84, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.5908, i64 2, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - %t96 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t95, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t102, ptr %a70 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load ptr, ptr %a1 - %t107 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5909, i64 9, i64 0 }, ptr %a109 - store { ptr, i64, i64 } %t107, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.5910, i64 1, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.5911, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t127, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t127, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t133) - store { ptr, i64, i64 } %t133, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t134, ptr %a71 - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif8985 -else8984: - %t138 = load ptr, ptr %a1 - %t139 = load %S.ast.Type, ptr %a2 - %t140 = call i1 @finch.gen.isSigned(%S.ast.Type %t139) - %t141 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5913, i64 1, i64 0 }, i1 %t140) - store { ptr, i64, i64 } { ptr @.str.5912, i64 5, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5914, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t151, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t151, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5915, i64 1, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5916, i64 2, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t180, ptr %a70 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Type, ptr %a2 - %t186 = call i1 @finch.gen.isSigned(%S.ast.Type %t185) - %t187 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5918, i64 1, i64 0 }, i1 %t186) - store { ptr, i64, i64 } { ptr @.str.5917, i64 5, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5919, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.5920, i64 1, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t214, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.5921, i64 2, i64 0 }, ptr %a217 - call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) - store { ptr, i64, i64 } %t214, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a215 - %t220 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t219, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a221 - %t226 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t225) - store { ptr, i64, i64 } %t225, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t226, ptr %a71 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch_str_drop(ptr %a229) - br label %endif8985 -endif8985: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.5923, i64 8, i64 0 }, ptr %a234 - store { ptr, i64, i64 } %t232, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.5924, i64 7, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } { ptr @.str.5922, i64 8, i64 0 }, ptr %a245 - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.5925, i64 2, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5926, i64 8, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.5927, i64 7, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t264) - store { ptr, i64, i64 } %t264, ptr %a266 - call void @finch_str_drop(ptr %a266) - store { ptr, i64, i64 } %t253, ptr %a268 - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t253, ptr %a270 - call void @finch_str_drop(ptr %a270) - store { ptr, i64, i64 } %t265, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a267 - %t273 = call { ptr, i64, i64 } @finch.gen.op(ptr %t230, { ptr, i64, i64 } %t272) - store { ptr, i64, i64 } %t272, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t273, ptr %a33 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_drop(ptr %a276) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a65) - call void @finch_str_drop(ptr %a61) - br label %endif8982 -endif8982: - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.5928, i64 8, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.emit(ptr %t277, { ptr, i64, i64 } %t282) - store { ptr, i64, i64 } %t282, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load ptr, ptr %a1 - %t285 = load %S.gen.Saved, ptr %a32 - %t286 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.5929, i64 20, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.5930, i64 16, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - call void @finch.gen.endHelper(ptr %t284, %S.gen.Saved %t285, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a33) - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t297 -} - -define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca %S.gen.Val, align 16 - %a81 = alloca %S.ast.Type, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca %S.gen.Val, 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 - %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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.gen.Val, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a446 = alloca i64, align 16 - %a458 = alloca %S.gen.Val, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca %S.gen.Val, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca %S.ast.Type, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca %S.gen.Val, align 16 - %a621 = alloca %S.ast.Type, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca %S.gen.Val, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a698 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca %S.ast.Type, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %panic8986, label %ok8987 -panic8986: - call void @finch_panic(ptr @.str.5931, i64 5616, ptr @.str.5932) - unreachable -ok8987: - %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 %range8988, label %inrange8989 -range8988: - call void @finch_panic_index(ptr @.str.5933, i64 5616, i64 %t18, i64 %t20) - unreachable -inrange8989: - %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.5934, 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 %then8990, label %endif8992 -then8990: - %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 %range8993, label %inrange8994 -range8993: - call void @finch_panic_index(ptr @.str.5935, i64 5619, i64 1, i64 %t38) - unreachable -inrange8994: - %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.5936, 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 %range8995, label %inrange8996 -range8995: - call void @finch_panic_index(ptr @.str.5937, i64 5619, i64 1, i64 %t47) - unreachable -inrange8996: - %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.5938, i64 9, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = extractvalue { ptr, i64, i64 } %t64, 1 - %t66 = icmp uge i64 2, %t65 - br i1 %t66, label %range8997, label %inrange8998 -range8997: - call void @finch_panic_index(ptr @.str.5939, i64 5620, i64 2, i64 %t65) - unreachable -inrange8998: - %t67 = extractvalue { ptr, i64, i64 } %t64, 0 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 2 - %t69 = load %S.ast.Node, ptr %t68 - %t70 = call %S.gen.Val @finch.gen.expr(ptr %t62, %S.ast.Node %t69) - %t71 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5940, i64 3, i64 0 }) - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 2, %t74 - br i1 %t75, label %range8999, label %inrange9000 -range8999: - call void @finch_panic_index(ptr @.str.5941, i64 5620, i64 2, i64 %t74) - unreachable -inrange9000: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 2 - %t78 = load %S.ast.Node, ptr %t77 - %t79 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t70, %S.ast.Type %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5942, i64 7, i64 0 }) - store %S.gen.Val %t70, ptr %a80 - call void @finch.drop.S_gen_Val(ptr %a80) - store %S.ast.Type %t71, ptr %a81 - call void @finch.drop.S_ast_Type(ptr %a81) - %t82 = extractvalue %S.gen.Val %t79, 0 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_copy(ptr %a84, ptr %a83) - %t85 = load { ptr, i64, i64 }, ptr %a84 - store %S.gen.Val %t79, ptr %a86 - call void @finch.drop.S_gen_Val(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5943, i64 29, i64 0 }, ptr %a91 - store { ptr, i64, i64 } %t89, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5944, i64 6, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t98, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.5945, i64 6, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t109, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t109, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.5946, i64 6, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t120, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5947, i64 6, i64 0 }, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - %t132 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t131, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t131, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.5948, i64 6, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t144 = load i64, ptr %t143 - call void @finch_str_from_int(ptr %a145, i64 %t144) - %t146 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t142, ptr %a148 - store { ptr, i64, i64 } %t146, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t142, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.5949, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load { ptr, i64, i64 }, ptr %a12 - %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.5950, i64 17, i64 0 }, { ptr, i64, i64 } %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5951, i64 3, i64 0 }) - %t164 = insertvalue %S.gen.Val %t162, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 2 - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a60) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t165 -endif8992: - %t166 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.5952, i64 4, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from9001 -logic.from9001: - br i1 %t170, label %logic.end9003, label %logic.rhs9002 -logic.rhs9002: - %t171 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5953, i64 8, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend9004 -logic.rend9004: - br label %logic.end9003 -logic.end9003: - %t176 = phi i1 [ true, %logic.from9001 ], [ %t175, %logic.rend9004 ] - br label %logic.from9005 -logic.from9005: - br i1 %t176, label %logic.end9007, label %logic.rhs9006 -logic.rhs9006: - %t177 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.5954, i64 11, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend9008 -logic.rend9008: - br label %logic.end9007 -logic.end9007: - %t182 = phi i1 [ true, %logic.from9005 ], [ %t181, %logic.rend9008 ] - br label %logic.from9009 -logic.from9009: - br i1 %t182, label %logic.end9011, label %logic.rhs9010 -logic.rhs9010: - %t183 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5955, i64 9, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend9012 -logic.rend9012: - br label %logic.end9011 -logic.end9011: - %t188 = phi i1 [ true, %logic.from9009 ], [ %t187, %logic.rend9012 ] - br i1 %t188, label %then9013, label %endif9015 -then9013: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t189, %S.ast.Node %t190, i64 1) - %t191 = load ptr, ptr %a1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 1, %t194 - br i1 %t195, label %range9016, label %inrange9017 -range9016: - call void @finch_panic_index(ptr @.str.5956, i64 5626, i64 1, i64 %t194) - unreachable -inrange9017: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 1 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = call %S.gen.Val @finch.gen.strArg(ptr %t191, %S.ast.Node %t198, { ptr, i64, i64 } { ptr @.str.5957, i64 20, i64 0 }) - store %S.gen.Val %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load %S.gen.Val, ptr %a200 - %t203 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t201, %S.gen.Val %t202) - store { ptr, i64, i64 } %t203, ptr %a204 - %t205 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.5958, i64 4, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - br i1 %t209, label %then9018, label %endif9020 -then9018: - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5959, i64 29, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.5960, i64 6, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t220, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.5961, i64 1, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - %t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t232, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t235, %S.gen.Val %t236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_copy(ptr %a239, ptr %a238) - %t240 = load { ptr, i64, i64 }, ptr %a239 - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t240, 0 - %t242 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5962, i64 3, i64 0 }) - %t243 = insertvalue %S.gen.Val %t241, %S.ast.Type %t242, 1 - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t243 -endif9020: - %t244 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.5963, i64 8, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then9021, label %endif9023 -then9021: - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5964, i64 29, i64 0 }, ptr %a252 - store { ptr, i64, i64 } %t250, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a251 - store { ptr, i64, i64 } %t254, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.5965, i64 6, i64 0 }, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - store { ptr, i64, i64 } %t254, ptr %a258 - call void @finch_str_drop(ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t259, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a261 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.5966, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - store { ptr, i64, i64 } %t271, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.5967, i64 13, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.5968, i64 3, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t274, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - store { ptr, i64, i64 } %t285, ptr %a287 - %t288 = load ptr, ptr %a1 - %t289 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t288, %S.gen.Val %t289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5969, i64 4, i64 0 }) - %t296 = insertvalue %S.gen.Val %t294, %S.ast.Type %t295, 1 - call void @finch_str_drop(ptr %a287) - call void @finch_str_drop(ptr %a273) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t296 -endif9023: - store { ptr, i64, i64 } { ptr @.str.5970, i64 17, i64 0 }, ptr %a297 - %t298 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t298, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5971, i64 9, i64 0 }, ptr %a300 - %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) - %t302 = icmp ne i32 %t301, 0 - br i1 %t302, label %then9024, label %endif9026 -then9024: - %t303 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5972, i64 15, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif9026 -endif9026: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5973, i64 9, i64 0 }, ptr %a308 - store { ptr, i64, i64 } %t306, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a307 - store { ptr, i64, i64 } %t310, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.5974, i64 5, i64 0 }, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - %t316 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t315, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - store { ptr, i64, i64 } %t315, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t321, ptr %a323 - store { ptr, i64, i64 } { ptr @.str.5975, i64 6, i64 0 }, ptr %a324 - call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) - store { ptr, i64, i64 } %t321, ptr %a325 - call void @finch_str_drop(ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a322 - %t327 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t326, ptr %a329 - store { ptr, i64, i64 } %t327, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t326, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t332, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.5976, i64 1, i64 0 }, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - store { ptr, i64, i64 } %t332, ptr %a336 - call void @finch_str_drop(ptr %a336) - %t337 = load { ptr, i64, i64 }, ptr %a333 - %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t305, { ptr, i64, i64 } %t337) - store { ptr, i64, i64 } %t337, ptr %a339 - call void @finch_str_drop(ptr %a339) - store { ptr, i64, i64 } %t338, ptr %a340 - %t341 = load ptr, ptr %a1 - %t342 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.5977, i64 12, i64 0 }, ptr %a344 - store { ptr, i64, i64 } %t342, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.5978, i64 3, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load { ptr, i64, i64 }, ptr %a354 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_copy(ptr %a359, ptr %a358) - %t360 = load { ptr, i64, i64 }, ptr %a359 - %t361 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t360, 0 - %t362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5979, i64 4, i64 0 }) - %t363 = insertvalue %S.gen.Val %t361, %S.ast.Type %t362, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a340) - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t363 -endif9015: - %t364 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br label %logic.from9027 -logic.from9027: - br i1 %t368, label %logic.end9029, label %logic.rhs9028 -logic.rhs9028: - %t369 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t369, ptr %a370 - store { ptr, i64, i64 } { ptr @.str.5981, i64 5, i64 0 }, ptr %a371 - %t372 = call i32 @finch_str_eq(ptr %a370, ptr %a371) - %t373 = icmp ne i32 %t372, 0 - br label %logic.rend9030 -logic.rend9030: - br label %logic.end9029 -logic.end9029: - %t374 = phi i1 [ true, %logic.from9027 ], [ %t373, %logic.rend9030 ] - br label %logic.from9031 -logic.from9031: - br i1 %t374, label %logic.end9033, label %logic.rhs9032 -logic.rhs9032: - %t375 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t375, ptr %a376 - store { ptr, i64, i64 } { ptr @.str.5982, i64 5, i64 0 }, ptr %a377 - %t378 = call i32 @finch_str_eq(ptr %a376, ptr %a377) - %t379 = icmp ne i32 %t378, 0 - br label %logic.rend9034 -logic.rend9034: - br label %logic.end9033 -logic.end9033: - %t380 = phi i1 [ true, %logic.from9031 ], [ %t379, %logic.rend9034 ] - br i1 %t380, label %then9035, label %endif9037 -then9035: - %t381 = load ptr, ptr %a1 - %t382 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t381, %S.ast.Node %t382, i64 0) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5983, i64 21, i64 0 }, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.5984, i64 5, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t393, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t393, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.5985, i64 6, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t404, ptr %a407 - store { ptr, i64, i64 } %t405, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t404, ptr %a409 - call void @finch_str_drop(ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5986, i64 1, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - call void @finch.gen.emit(ptr %t383, { ptr, i64, i64 } %t415) - store { ptr, i64, i64 } %t415, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load ptr, ptr %a1 - %t418 = load { ptr, i64, i64 }, ptr %a12 - %t419 = call { ptr, i64, i64 } @finch.gen.load(ptr %t417, { ptr, i64, i64 } { ptr @.str.5987, i64 17, i64 0 }, { ptr, i64, i64 } %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5988, i64 3, i64 0 }) - %t422 = insertvalue %S.gen.Val %t420, %S.ast.Type %t421, 1 - %t423 = insertvalue %S.gen.Val %t422, i1 true, 2 - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t423 -endif9037: - %t424 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t424, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.5989, i64 7, i64 0 }, ptr %a426 - %t427 = call i32 @finch_str_eq(ptr %a425, ptr %a426) - %t428 = icmp ne i32 %t427, 0 - br i1 %t428, label %then9038, label %endif9040 -then9038: - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t429, %S.ast.Node %t430, i64 2) - %t431 = load ptr, ptr %a1 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = extractvalue { ptr, i64, i64 } %t433, 1 - %t435 = icmp uge i64 1, %t434 - br i1 %t435, label %range9041, label %inrange9042 -range9041: - call void @finch_panic_index(ptr @.str.5990, i64 5655, i64 1, i64 %t434) - unreachable -inrange9042: - %t436 = extractvalue { ptr, i64, i64 } %t433, 0 - %t437 = getelementptr inbounds %S.ast.Node, ptr %t436, i64 1 - %t438 = load %S.ast.Node, ptr %t437 - %t439 = call %S.gen.Val @finch.gen.strArg(ptr %t431, %S.ast.Node %t438, { ptr, i64, i64 } { ptr @.str.5991, i64 19, i64 0 }) - store %S.gen.Val %t439, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = icmp eq ptr %t441, null - br i1 %t442, label %panic9043, label %ok9044 -panic9043: - call void @finch_panic(ptr @.str.5992, i64 5656, ptr @.str.5993) - unreachable -ok9044: - %t443 = getelementptr inbounds %S.gen.Gen, ptr %t441, i32 0, i32 11 - %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i32 0, i32 1 - %t445 = load i64, ptr %t444 - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load %S.gen.Val, ptr %a440 - call void @finch.gen.hold(ptr %t447, %S.gen.Val %t448) - %t449 = load ptr, ptr %a1 - %t450 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t451 = load { ptr, i64, i64 }, ptr %t450 - %t452 = extractvalue { ptr, i64, i64 } %t451, 1 - %t453 = icmp uge i64 2, %t452 - br i1 %t453, label %range9045, label %inrange9046 -range9045: - call void @finch_panic_index(ptr @.str.5994, i64 5658, i64 2, i64 %t452) - unreachable -inrange9046: - %t454 = extractvalue { ptr, i64, i64 } %t451, 0 - %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 2 - %t456 = load %S.ast.Node, ptr %t455 - %t457 = call %S.gen.Val @finch.gen.strArg(ptr %t449, %S.ast.Node %t456, { ptr, i64, i64 } { ptr @.str.5995, i64 12, i64 0 }) - store %S.gen.Val %t457, ptr %a458 - %t459 = load ptr, ptr %a1 - %t460 = load i64, ptr %a446 - call void @finch.gen.heldEnd(ptr %t459, i64 %t460) - %t461 = load ptr, ptr %a1 - %t462 = load %S.gen.Val, ptr %a440 - %t463 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t461, %S.gen.Val %t462) - store { ptr, i64, i64 } %t463, ptr %a464 - %t465 = load ptr, ptr %a1 - %t466 = load %S.gen.Val, ptr %a458 - %t467 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t465, %S.gen.Val %t466) - store { ptr, i64, i64 } %t467, ptr %a468 - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5996, i64 33, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.5997, i64 6, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - %t480 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t479, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t479, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5998, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - %t491 = load { ptr, i64, i64 }, ptr %a464 - store { ptr, i64, i64 } %t490, ptr %a493 - store { ptr, i64, i64 } %t491, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t490, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5999, i64 6, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - store { ptr, i64, i64 } %t496, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load { ptr, i64, i64 }, ptr %a497 - %t502 = load { ptr, i64, i64 }, ptr %a468 - store { ptr, i64, i64 } %t501, ptr %a504 - store { ptr, i64, i64 } %t502, ptr %a505 - call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a503 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.6000, i64 1, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - call void @finch.gen.emit(ptr %t469, { ptr, i64, i64 } %t512) - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - %t514 = load ptr, ptr %a1 - %t515 = load %S.gen.Val, ptr %a440 - call void @finch.gen.release(ptr %t514, %S.gen.Val %t515) - %t516 = load ptr, ptr %a1 - %t517 = load %S.gen.Val, ptr %a458 - call void @finch.gen.release(ptr %t516, %S.gen.Val %t517) - %t518 = load ptr, ptr %a1 - %t519 = load { ptr, i64, i64 }, ptr %a12 - %t520 = call { ptr, i64, i64 } @finch.gen.load(ptr %t518, { ptr, i64, i64 } { ptr @.str.6001, i64 17, i64 0 }, { ptr, i64, i64 } %t519) - %t521 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t520, 0 - %t522 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6002, i64 3, i64 0 }) - %t523 = insertvalue %S.gen.Val %t521, %S.ast.Type %t522, 1 - %t524 = insertvalue %S.gen.Val %t523, i1 true, 2 - call void @finch_str_drop(ptr %a468) - call void @finch_str_drop(ptr %a464) - call void @finch.drop.S_gen_Val(ptr %a458) - call void @finch.drop.S_gen_Val(ptr %a440) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t524 -endif9040: - %t525 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.6003, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br i1 %t529, label %then9047, label %endif9049 -then9047: - %t530 = load ptr, ptr %a1 - %t531 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t530, %S.ast.Node %t531, i64 1) - %t532 = load ptr, ptr %a1 - %t533 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t534 = load { ptr, i64, i64 }, ptr %t533 - %t535 = extractvalue { ptr, i64, i64 } %t534, 1 - %t536 = icmp uge i64 1, %t535 - br i1 %t536, label %range9050, label %inrange9051 -range9050: - call void @finch_panic_index(ptr @.str.6004, i64 5669, i64 1, i64 %t535) - unreachable -inrange9051: - %t537 = extractvalue { ptr, i64, i64 } %t534, 0 - %t538 = getelementptr inbounds %S.ast.Node, ptr %t537, i64 1 - %t539 = load %S.ast.Node, ptr %t538 - %t540 = call %S.gen.Val @finch.gen.strArg(ptr %t532, %S.ast.Node %t539, { ptr, i64, i64 } { ptr @.str.6005, i64 13, i64 0 }) - store %S.gen.Val %t540, ptr %a541 - %t542 = load ptr, ptr %a1 - %t543 = load %S.gen.Val, ptr %a541 - %t544 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t542, %S.gen.Val %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t546) - store { ptr, i64, i64 } %t547, ptr %a548 - %t549 = load ptr, ptr %a1 - %t550 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.6006, i64 31, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t554, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.6007, i64 6, i64 0 }, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - store { ptr, i64, i64 } %t554, ptr %a558 - call void @finch_str_drop(ptr %a558) - %t559 = load { ptr, i64, i64 }, ptr %a555 - %t560 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t559, ptr %a562 - store { ptr, i64, i64 } %t560, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t559, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - store { ptr, i64, i64 } %t565, ptr %a567 - store { ptr, i64, i64 } { ptr @.str.6008, i64 6, i64 0 }, ptr %a568 - call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) - store { ptr, i64, i64 } %t565, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a566 - %t571 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } %t570, ptr %a573 - store { ptr, i64, i64 } %t571, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t570, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - store { ptr, i64, i64 } %t576, ptr %a578 - store { ptr, i64, i64 } { ptr @.str.6009, i64 1, i64 0 }, ptr %a579 - call void @finch_str_concat(ptr %a577, ptr %a578, ptr %a579) - store { ptr, i64, i64 } %t576, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a577 - call void @finch.gen.emit(ptr %t549, { ptr, i64, i64 } %t581) - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load ptr, ptr %a1 - %t584 = load %S.gen.Val, ptr %a541 - call void @finch.gen.release(ptr %t583, %S.gen.Val %t584) - %t585 = load ptr, ptr %a1 - %t586 = load { ptr, i64, i64 }, ptr %a548 - %t587 = call { ptr, i64, i64 } @finch.gen.load(ptr %t585, { ptr, i64, i64 } { ptr @.str.6010, i64 17, i64 0 }, { ptr, i64, i64 } %t586) - %t588 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t587, 0 - %t589 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6011, i64 3, i64 0 }) - %t590 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t589) - store %S.ast.Type %t589, ptr %a591 - call void @finch.drop.S_ast_Type(ptr %a591) - %t592 = insertvalue %S.gen.Val %t588, %S.ast.Type %t590, 1 - %t593 = insertvalue %S.gen.Val %t592, i1 true, 2 - call void @finch_str_drop(ptr %a548) - call void @finch_str_drop(ptr %a545) - call void @finch.drop.S_gen_Val(ptr %a541) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t593 -endif9049: - %t594 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t594, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.6012, i64 6, i64 0 }, ptr %a596 - %t597 = call i32 @finch_str_eq(ptr %a595, ptr %a596) - %t598 = icmp ne i32 %t597, 0 - br i1 %t598, label %then9052, label %endif9054 -then9052: - %t599 = load ptr, ptr %a1 - %t600 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t599, %S.ast.Node %t600, i64 1) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t604 = load { ptr, i64, i64 }, ptr %t603 - %t605 = extractvalue { ptr, i64, i64 } %t604, 1 - %t606 = icmp uge i64 1, %t605 - br i1 %t606, label %range9055, label %inrange9056 -range9055: - call void @finch_panic_index(ptr @.str.6013, i64 5678, i64 1, i64 %t605) - unreachable -inrange9056: - %t607 = extractvalue { ptr, i64, i64 } %t604, 0 - %t608 = getelementptr inbounds %S.ast.Node, ptr %t607, i64 1 - %t609 = load %S.ast.Node, ptr %t608 - %t610 = call %S.gen.Val @finch.gen.expr(ptr %t602, %S.ast.Node %t609) - %t611 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6014, i64 3, i64 0 }) - %t612 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t613 = load { ptr, i64, i64 }, ptr %t612 - %t614 = extractvalue { ptr, i64, i64 } %t613, 1 - %t615 = icmp uge i64 1, %t614 - br i1 %t615, label %range9057, label %inrange9058 -range9057: - call void @finch_panic_index(ptr @.str.6015, i64 5678, i64 1, i64 %t614) - unreachable -inrange9058: - %t616 = extractvalue { ptr, i64, i64 } %t613, 0 - %t617 = getelementptr inbounds %S.ast.Node, ptr %t616, i64 1 - %t618 = load %S.ast.Node, ptr %t617 - %t619 = call %S.gen.Val @finch.gen.coerce(ptr %t601, %S.gen.Val %t610, %S.ast.Type %t611, %S.ast.Node %t618, { ptr, i64, i64 } { ptr @.str.6016, i64 9, i64 0 }) - store %S.gen.Val %t610, ptr %a620 - call void @finch.drop.S_gen_Val(ptr %a620) - store %S.ast.Type %t611, ptr %a621 - call void @finch.drop.S_ast_Type(ptr %a621) - %t622 = extractvalue %S.gen.Val %t619, 0 - store { ptr, i64, i64 } %t622, ptr %a623 - call void @finch_str_copy(ptr %a624, ptr %a623) - %t625 = load { ptr, i64, i64 }, ptr %a624 - store %S.gen.Val %t619, ptr %a626 - call void @finch.drop.S_gen_Val(ptr %a626) - store { ptr, i64, i64 } %t625, ptr %a627 - %t628 = load ptr, ptr %a1 - %t629 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.6017, i64 32, i64 0 }, ptr %a631 - store { ptr, i64, i64 } %t629, ptr %a632 - call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a630 - store { ptr, i64, i64 } %t633, ptr %a635 - store { ptr, i64, i64 } { ptr @.str.6018, i64 6, i64 0 }, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t633, ptr %a637 - call void @finch_str_drop(ptr %a637) - %t638 = load { ptr, i64, i64 }, ptr %a634 - %t639 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t638, ptr %a641 - store { ptr, i64, i64 } %t639, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t638, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - store { ptr, i64, i64 } %t644, ptr %a646 - store { ptr, i64, i64 } { ptr @.str.6019, i64 6, i64 0 }, ptr %a647 - call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) - store { ptr, i64, i64 } %t644, ptr %a648 - call void @finch_str_drop(ptr %a648) - %t649 = load { ptr, i64, i64 }, ptr %a645 - %t650 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t649, ptr %a652 - store { ptr, i64, i64 } %t650, ptr %a653 - call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) - store { ptr, i64, i64 } %t649, ptr %a654 - call void @finch_str_drop(ptr %a654) - %t655 = load { ptr, i64, i64 }, ptr %a651 - store { ptr, i64, i64 } %t655, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.6020, i64 1, i64 0 }, ptr %a658 - call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) - store { ptr, i64, i64 } %t655, ptr %a659 - call void @finch_str_drop(ptr %a659) - %t660 = load { ptr, i64, i64 }, ptr %a656 - call void @finch.gen.emit(ptr %t628, { ptr, i64, i64 } %t660) - store { ptr, i64, i64 } %t660, ptr %a661 - call void @finch_str_drop(ptr %a661) - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a12 - %t664 = call { ptr, i64, i64 } @finch.gen.load(ptr %t662, { ptr, i64, i64 } { ptr @.str.6021, i64 17, i64 0 }, { ptr, i64, i64 } %t663) - %t665 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t664, 0 - %t666 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6022, i64 3, i64 0 }) - %t667 = insertvalue %S.gen.Val %t665, %S.ast.Type %t666, 1 - %t668 = insertvalue %S.gen.Val %t667, i1 true, 2 - call void @finch_str_drop(ptr %a627) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t668 -endif9054: - %t669 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t669, ptr %a670 - store { ptr, i64, i64 } { ptr @.str.6023, i64 5, i64 0 }, ptr %a671 - %t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671) - %t673 = icmp ne i32 %t672, 0 - br i1 %t673, label %then9059, label %endif9061 -then9059: - %t674 = load ptr, ptr %a1 - %t675 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 0) - %t676 = load ptr, ptr %a1 - %t677 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t676) - store { ptr, i64, i64 } %t677, ptr %a678 - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } { ptr @.str.6024, i64 36, i64 0 }, ptr %a682 - store { ptr, i64, i64 } %t680, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - %t684 = load { ptr, i64, i64 }, ptr %a681 - store { ptr, i64, i64 } %t684, ptr %a686 - store { ptr, i64, i64 } { ptr @.str.6025, i64 6, i64 0 }, ptr %a687 - call void @finch_str_concat(ptr %a685, ptr %a686, ptr %a687) - store { ptr, i64, i64 } %t684, ptr %a688 - call void @finch_str_drop(ptr %a688) - %t689 = load { ptr, i64, i64 }, ptr %a685 - %t690 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t689, ptr %a692 - store { ptr, i64, i64 } %t690, ptr %a693 - call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) - store { ptr, i64, i64 } %t689, ptr %a694 - call void @finch_str_drop(ptr %a694) - %t695 = load { ptr, i64, i64 }, ptr %a691 - store { ptr, i64, i64 } %t695, ptr %a697 - store { ptr, i64, i64 } { ptr @.str.6026, i64 1, i64 0 }, ptr %a698 - call void @finch_str_concat(ptr %a696, ptr %a697, ptr %a698) - store { ptr, i64, i64 } %t695, ptr %a699 - call void @finch_str_drop(ptr %a699) - %t700 = load { ptr, i64, i64 }, ptr %a696 - call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t700) - store { ptr, i64, i64 } %t700, ptr %a701 - call void @finch_str_drop(ptr %a701) - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a678 - %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.6027, i64 17, i64 0 }, { ptr, i64, i64 } %t703) - %t705 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t704, 0 - %t706 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6028, i64 2, i64 0 }) - %t707 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t706) - store %S.ast.Type %t706, ptr %a708 - call void @finch.drop.S_ast_Type(ptr %a708) - %t709 = insertvalue %S.gen.Val %t705, %S.ast.Type %t707, 1 - %t710 = insertvalue %S.gen.Val %t709, i1 true, 2 - call void @finch_str_drop(ptr %a678) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t710 -endif9061: - %t711 = load ptr, ptr %a1 - %t712 = load %S.ast.Node, ptr %a2 - %t713 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.6029, i64 21, i64 0 }, ptr %a715 - store { ptr, i64, i64 } %t713, ptr %a716 - call void @finch_str_concat(ptr %a714, ptr %a715, ptr %a716) - %t717 = load { ptr, i64, i64 }, ptr %a714 - store { ptr, i64, i64 } %t717, ptr %a719 - store { ptr, i64, i64 } { ptr @.str.6030, i64 106, i64 0 }, ptr %a720 - call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) - store { ptr, i64, i64 } %t717, ptr %a721 - call void @finch_str_drop(ptr %a721) - %t722 = load { ptr, i64, i64 }, ptr %a718 - call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t722) - store { ptr, i64, i64 } %t722, ptr %a723 - call void @finch_str_drop(ptr %a723) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val zeroinitializer -} - -define internal { ptr, i64, i64 } @finch.gen.runtimeDecls() { -entry: - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %t1 = mul i64 74, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t2 = call ptr @finch_alloc(i64 %t1) - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 - store { ptr, i64, i64 } { ptr @.str.6031, i64 54, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6032, i64 65, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6033, i64 29, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6034, i64 38, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6035, i64 33, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6036, i64 33, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6037, i64 33, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6038, i64 32, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6039, i64 45, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6040, i64 35, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6041, i64 36, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6042, i64 42, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6043, i64 37, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6044, i64 38, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6045, i64 42, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6046, i64 38, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6047, i64 37, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6048, i64 42, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6049, i64 42, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6050, i64 34, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6051, i64 42, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6052, i64 43, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 - store { ptr, i64, i64 } { ptr @.str.6053, i64 47, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 - store { ptr, i64, i64 } { ptr @.str.6054, i64 50, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24 - store { ptr, i64, i64 } { ptr @.str.6055, i64 43, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 - store { ptr, i64, i64 } { ptr @.str.6056, i64 44, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 - store { ptr, i64, i64 } { ptr @.str.6057, i64 49, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27 - store { ptr, i64, i64 } { ptr @.str.6058, i64 57, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 - store { ptr, i64, i64 } { ptr @.str.6059, i64 37, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 - store { ptr, i64, i64 } { ptr @.str.6060, i64 39, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30 - store { ptr, i64, i64 } { ptr @.str.6061, i64 37, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 - store { ptr, i64, i64 } { ptr @.str.6062, i64 38, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 - store { ptr, i64, i64 } { ptr @.str.6063, i64 39, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33 - store { ptr, i64, i64 } { ptr @.str.6064, i64 39, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 - store { ptr, i64, i64 } { ptr @.str.6065, i64 51, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 - store { ptr, i64, i64 } { ptr @.str.6066, i64 44, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36 - store { ptr, i64, i64 } { ptr @.str.6067, i64 43, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 - store { ptr, i64, i64 } { ptr @.str.6068, i64 45, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 - store { ptr, i64, i64 } { ptr @.str.6069, i64 44, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39 - store { ptr, i64, i64 } { ptr @.str.6070, i64 52, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 - store { ptr, i64, i64 } { ptr @.str.6071, i64 57, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 - store { ptr, i64, i64 } { ptr @.str.6072, i64 48, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42 - store { ptr, i64, i64 } { ptr @.str.6073, i64 34, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 - store { ptr, i64, i64 } { ptr @.str.6074, i64 48, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 - store { ptr, i64, i64 } { ptr @.str.6075, i64 60, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45 - store { ptr, i64, i64 } { ptr @.str.6076, i64 55, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 - store { ptr, i64, i64 } { ptr @.str.6077, i64 46, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 - store { ptr, i64, i64 } { ptr @.str.6078, i64 48, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48 - store { ptr, i64, i64 } { ptr @.str.6079, i64 43, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 - store { ptr, i64, i64 } { ptr @.str.6080, i64 45, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 - store { ptr, i64, i64 } { ptr @.str.6081, i64 59, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51 - store { ptr, i64, i64 } { ptr @.str.6082, i64 49, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 - store { ptr, i64, i64 } { ptr @.str.6083, i64 39, i64 0 }, ptr %t55 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 - store { ptr, i64, i64 } { ptr @.str.6084, i64 39, i64 0 }, ptr %t56 - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54 - store { ptr, i64, i64 } { ptr @.str.6085, i64 35, i64 0 }, ptr %t57 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 - store { ptr, i64, i64 } { ptr @.str.6086, i64 35, i64 0 }, ptr %t58 - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 - store { ptr, i64, i64 } { ptr @.str.6087, i64 45, i64 0 }, ptr %t59 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57 - store { ptr, i64, i64 } { ptr @.str.6088, i64 47, i64 0 }, ptr %t60 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 - store { ptr, i64, i64 } { ptr @.str.6089, i64 47, i64 0 }, ptr %t61 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 - store { ptr, i64, i64 } { ptr @.str.6090, i64 48, i64 0 }, ptr %t62 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60 - store { ptr, i64, i64 } { ptr @.str.6091, i64 44, i64 0 }, ptr %t63 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 - store { ptr, i64, i64 } { ptr @.str.6092, i64 37, i64 0 }, ptr %t64 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 - store { ptr, i64, i64 } { ptr @.str.6093, i64 49, i64 0 }, ptr %t65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63 - store { ptr, i64, i64 } { ptr @.str.6094, i64 39, i64 0 }, ptr %t66 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 - store { ptr, i64, i64 } { ptr @.str.6095, i64 29, i64 0 }, ptr %t67 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 - store { ptr, i64, i64 } { ptr @.str.6096, i64 35, i64 0 }, ptr %t68 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66 - store { ptr, i64, i64 } { ptr @.str.6097, i64 29, i64 0 }, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 - store { ptr, i64, i64 } { ptr @.str.6098, i64 24, i64 0 }, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 - store { ptr, i64, i64 } { ptr @.str.6099, i64 40, i64 0 }, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69 - store { ptr, i64, i64 } { ptr @.str.6100, i64 33, i64 0 }, ptr %t72 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70 - store { ptr, i64, i64 } { ptr @.str.6101, i64 34, i64 0 }, ptr %t73 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 71 - store { ptr, i64, i64 } { ptr @.str.6102, i64 44, i64 0 }, ptr %t74 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 72 - store { ptr, i64, i64 } { ptr @.str.6103, i64 32, i64 0 }, ptr %t75 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 73 - store { ptr, i64, i64 } { ptr @.str.6104, i64 23, i64 0 }, ptr %t76 - %t77 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t78 = insertvalue { ptr, i64, i64 } %t77, i64 74, 1 - %t79 = insertvalue { ptr, i64, i64 } %t78, i64 74, 2 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a80, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6105, i64 1, i64 0 }, ptr %a82 - call void @finch_str_join(ptr %a83, ptr %a80, ptr %a82) - %t84 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.6106, i64 1, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.drop.arr_str(ptr %a80) - ret { ptr, i64, i64 } %t89 -} - -define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6107, i64 52, i64 0 }, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic9062, label %ok9063 -panic9062: - call void @finch_panic(ptr @.str.6108, i64 5776, ptr @.str.6109) - unreachable -ok9063: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 - %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 - %t7 = load i1, ptr %t6 - br label %logic.from9064 -logic.from9064: - br i1 %t7, label %logic.end9066, label %logic.rhs9065 -logic.rhs9065: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic9067, label %ok9068 -panic9067: - call void @finch_panic(ptr @.str.6110, i64 5776, ptr @.str.6111) - unreachable -ok9068: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 31 - %t11 = getelementptr inbounds %S.platform.Target, ptr %t10, i32 0, i32 1 - %t12 = load i1, ptr %t11 - br label %logic.rend9069 -logic.rend9069: - br label %logic.end9066 -logic.end9066: - %t13 = phi i1 [ true, %logic.from9064 ], [ %t12, %logic.rend9069 ] - br i1 %t13, label %then9070, label %endif9072 -then9070: - %t14 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6112, i64 17, 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, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic9073, label %ok9074 -panic9073: - call void @finch_panic(ptr @.str.6113, i64 5777, ptr @.str.6114) - unreachable -ok9074: - %t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 31 - %t22 = getelementptr inbounds %S.platform.Target, ptr %t21, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t18, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t18, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6115, i64 3, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif9072 -endif9072: - %t36 = load { ptr, i64, i64 }, ptr %a2 - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic9075, label %ok9076 -panic9075: - call void @finch_panic(ptr @.str.6116, i64 5779, ptr @.str.6117) - unreachable -ok9076: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6118, i64 1, i64 0 }, ptr %a41 - call void @finch_str_join(ptr %a42, ptr %t39, ptr %a41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t36, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6119, i64 2, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - store { ptr, i64, i64 } %t54, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.6120, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t65, ptr %a2 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic9077, label %ok9078 -panic9077: - call void @finch_panic(ptr @.str.6121, i64 5780, ptr @.str.6122) - unreachable -ok9078: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 30 - %t71 = load i1, ptr %t70 - br i1 %t71, label %then9079, label %endif9081 -then9079: - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6123, i64 62, 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, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a2 - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif9081 -endif9081: - %t79 = load { ptr, i64, i64 }, ptr %a2 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9082, label %ok9083 -panic9082: - call void @finch_panic(ptr @.str.6124, i64 5783, ptr @.str.6125) - unreachable -ok9083: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 3 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6126, i64 1, 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 } %t79, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t91, ptr %a2 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic9084, label %ok9085 -panic9084: - call void @finch_panic(ptr @.str.6127, i64 5784, ptr @.str.6128) - unreachable -ok9085: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 30 - %t97 = load i1, ptr %t96 - br i1 %t97, label %then9086, label %endif9088 -then9086: - %t98 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6129, i64 1, 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 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - %t111 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t110, ptr %a2 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif9088 -endif9088: - %t113 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t113 -} - -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.cond9089 -n.cond9089: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9090, label %n.end9091 -n.body9090: - %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.cond9089 -n.end9091: - 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.cond9092 -n.cond9092: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9093, label %n.end9094 -n.body9093: - %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.live9095, label %entry.next9096 -entry.live9095: - %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.next9096 -entry.next9096: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9092 -n.end9094: - 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.cond9097 -n.cond9097: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9098, label %n.end9099 -n.body9098: - %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.live9100, label %entry.next9101 -entry.live9100: - %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.next9101 -entry.next9101: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9097 -n.end9099: - 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.cond9102 -n.cond9102: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9103, label %n.end9104 -n.body9103: - %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.live9105, label %entry.next9106 -entry.live9105: - %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.next9106 -entry.next9106: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9102 -n.end9104: - 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.cond9107 -n.cond9107: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9108, label %n.end9109 -n.body9108: - %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.live9110, label %entry.next9111 -entry.live9110: - %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.next9111 -entry.next9111: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9107 -n.end9109: - 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 void @finch.drop.arr_S_gen_Pending(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9180 -n.cond9180: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9181, label %n.end9182 -n.body9181: - %t7 = getelementptr inbounds %S.gen.Pending, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Pending(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9180 -n.end9182: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Loop(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9183 -n.cond9183: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9184, label %n.end9185 -n.body9184: - %t7 = getelementptr inbounds %S.gen.Loop, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Loop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9183 -n.end9185: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_FnSig(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9186 -n.cond9186: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9187, label %n.end9188 -n.body9187: - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_FnSig(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9186 -n.end9188: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_StructDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9189 -n.cond9189: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9190, label %n.end9191 -n.body9190: - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_StructDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9189 -n.end9191: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Template(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9192 -n.cond9192: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9193, label %n.end9194 -n.body9193: - %t7 = getelementptr inbounds %S.gen.Template, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Template(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9192 -n.end9194: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_EnumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9195 -n.cond9195: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9196, label %n.end9197 -n.body9196: - %t7 = getelementptr inbounds %S.gen.EnumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_EnumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9195 -n.end9197: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_SumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9198 -n.cond9198: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9199, label %n.end9200 -n.body9199: - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_SumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9198 -n.end9200: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_int(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9201 -n.cond9201: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9202, label %n.end9203 -n.body9202: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9204, label %entry.next9205 -entry.live9204: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 2 - br label %entry.next9205 -entry.next9205: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9201 -n.end9203: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Gen(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_S_gen_Scope(ptr %t7) - %t8 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_S_gen_Pending(ptr %t8) - %t9 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_gen_Loop(ptr %t9) - %t10 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 13 - call void @finch.drop.S_gen_FnSig(ptr %t10) - %t11 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 14 - call void @finch_str_drop(ptr %t11) - %t12 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_S_gen_FnSig(ptr %t12) - %t13 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 16 - call void @finch.drop.arr_S_gen_StructDef(ptr %t13) - %t14 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 17 - call void @finch.drop.arr_S_gen_Template(ptr %t14) - %t15 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 18 - call void @finch.drop.arr_str(ptr %t15) - %t16 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 19 - call void @finch.drop.arr_S_ast_Type(ptr %t16) - %t17 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 20 - call void @finch_str_drop(ptr %t17) - %t18 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 21 - call void @finch.drop.arr_S_gen_EnumDef(ptr %t18) - %t19 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 22 - call void @finch.drop.arr_S_gen_SumDef(ptr %t19) - %t20 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 23 - call void @finch.drop.arr_str(ptr %t20) - %t21 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 24 - call void @finch.drop.arr_str(ptr %t21) - %t22 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 26 - call void @finch.drop.S_cimport_CImports(ptr %t22) - %t23 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 29 - call void @finch.drop.arr_str(ptr %t23) - %t24 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 31 - call void @finch.drop.S_platform_Target(ptr %t24) - %t25 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 32 - call void @finch_str_drop(ptr %t25) - %t26 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 33 - call void @finch.drop.arr_str(ptr %t26) - %t27 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 34 - call void @finch.drop.map_str_int(ptr %t27) - %t28 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 35 - call void @finch.drop.arr_int(ptr %t28) - %t29 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 40 - call void @finch.drop.arr_str(ptr %t29) - %t30 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 41 - call void @finch_str_drop(ptr %t30) - %t31 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 42 - call void @finch_str_drop(ptr %t31) - %t32 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 43 - call void @finch_str_drop(ptr %t32) - 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 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca i64, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca i64, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca %S.gen.FnSig, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca %S.gen.FnSig, align 16 - %a318 = alloca %S.gen.FnSig, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %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 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.cimport.CImports %p2, ptr %a3 - 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, 26 - %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, 27 - %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, 28 - %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, 30 - %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, 31 - %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, 32 - %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 36 - 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 %panic9112, label %ok9113 -panic9112: - call void @finch_panic(ptr @.str.6130, i64 5794, ptr @.str.6131) - unreachable -ok9113: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 30 - %t50 = load i1, ptr %t49 - br i1 %t50, label %then9114, label %endif9116 -then9114: - %t51 = load ptr, ptr %a46 - %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic9117, label %ok9118 -panic9117: - call void @finch_panic(ptr @.str.6132, i64 5796, ptr @.str.6133) - unreachable -ok9118: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 33 - %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.6134, 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 %panic9119, label %ok9120 -panic9119: - call void @finch_panic(ptr @.str.6135, i64 5797, ptr @.str.6136) - unreachable -ok9120: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 33 - %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.6137, 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 %panic9121, label %ok9122 -panic9121: - call void @finch_panic(ptr @.str.6138, i64 5798, ptr @.str.6139) - unreachable -ok9122: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 33 - %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.6140, i64 38, i64 0 }, ptr %t74 - store i64 %t72, ptr %t70 - store i64 0, ptr %a75 - br label %each.cond9123 -each.cond9123: - %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.body9124, label %each.end9126 -each.body9124: - %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 %panic9127, label %ok9128 -panic9127: - call void @finch_panic(ptr @.str.6141, i64 5800, ptr @.str.6142) - unreachable -ok9128: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 35 - %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.6143, 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.6144, i64 15, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load ptr, ptr %a46 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic9129, label %ok9130 -panic9129: - call void @finch_panic(ptr @.str.6145, i64 5800, ptr @.str.6146) - unreachable -ok9130: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 32 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t98, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t98, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6147, i64 2, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t112) - store { ptr, i64, i64 } %t112, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load i64, ptr %t87 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t116, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t86 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t115 - store i64 %t113, ptr %t118 - store i64 %t116, ptr %t87 - br label %each.step9125 -each.step9125: - %t119 = load i64, ptr %a75 - %t120 = add i64 %t119, 1 - store i64 %t120, ptr %a75 - br label %each.cond9123 -each.end9126: - %t121 = load ptr, ptr %a46 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic9131, label %ok9132 -panic9131: - call void @finch_panic(ptr @.str.6149, i64 5802, ptr @.str.6150) - unreachable -ok9132: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 35 - %t124 = load { ptr, i64, i64 }, ptr %t123 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 0, %t125 - br i1 %t126, label %range9133, label %inrange9134 -range9133: - call void @finch_panic_index(ptr @.str.6151, i64 5802, i64 0, i64 %t125) - unreachable -inrange9134: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds i64, ptr %t127, i64 0 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6148, i64 52, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6152, i64 84, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load ptr, ptr %a46 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic9135, label %ok9136 -panic9135: - call void @finch_panic(ptr @.str.6153, i64 5802, ptr @.str.6154) - unreachable -ok9136: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 33 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 0, %t146 - br i1 %t147, label %range9137, label %inrange9138 -range9137: - call void @finch_panic_index(ptr @.str.6155, i64 5802, i64 0, i64 %t146) - unreachable -inrange9138: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t141, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif9116 -endif9116: - %t152 = load ptr, ptr %a46 - call void @finch.gen.declare(ptr %t152) - %t153 = load ptr, ptr %a46 - %t154 = call i64 @finch.gen.findFn(ptr %t153, { ptr, i64, i64 } { ptr @.str.6156, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6157, i64 4, i64 0 }) - store i64 %t154, ptr %a155 - %t156 = load i1, ptr %a7 - br i1 %t156, label %then9139, label %else9140 -then9139: - %t157 = load i64, ptr %a155 - %t158 = icmp sge i64 %t157, 0 - br i1 %t158, label %then9142, label %endif9144 -then9142: - %t159 = load ptr, ptr %a46 - %t160 = load ptr, ptr %a46 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic9145, label %ok9146 -panic9145: - call void @finch_panic(ptr @.str.6158, i64 5808, ptr @.str.6159) - unreachable -ok9146: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 0 - %t163 = load ptr, ptr %a46 - %t164 = icmp eq ptr %t163, null - br i1 %t164, label %panic9147, label %ok9148 -panic9147: - call void @finch_panic(ptr @.str.6160, i64 5808, ptr @.str.6161) - unreachable -ok9148: - %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 15 - %t166 = load i64, ptr %a155 - %t167 = load { ptr, i64, i64 }, ptr %t165 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range9149, label %inrange9150 -range9149: - call void @finch_panic_index(ptr @.str.6162, i64 5808, i64 %t166, i64 %t168) - unreachable -inrange9150: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.FnSig, ptr %t170, i64 %t166 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %t171, i32 0, i32 16 - %t173 = load i64, ptr %t172 - %t174 = load { ptr, i64, i64 }, ptr %t162 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range9151, label %inrange9152 -range9151: - call void @finch_panic_index(ptr @.str.6163, i64 5808, i64 %t173, i64 %t175) - unreachable -inrange9152: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Program, ptr %t178, i32 0, i32 8 - %t180 = load ptr, ptr %a46 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic9153, label %ok9154 -panic9153: - call void @finch_panic(ptr @.str.6164, i64 5808, ptr @.str.6165) - unreachable -ok9154: - %t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 15 - %t183 = load i64, ptr %a155 - %t184 = load { ptr, i64, i64 }, ptr %t182 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range9155, label %inrange9156 -range9155: - call void @finch_panic_index(ptr @.str.6166, i64 5808, i64 %t183, i64 %t185) - unreachable -inrange9156: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i64 %t183 - %t189 = getelementptr inbounds %S.gen.FnSig, ptr %t188, i32 0, i32 17 - %t190 = load i64, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %t179 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 %t190, %t192 - br i1 %t193, label %range9157, label %inrange9158 -range9157: - call void @finch_panic_index(ptr @.str.6167, i64 5808, i64 %t190, i64 %t192) - unreachable -inrange9158: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t190 - %t196 = load %S.ast.Node, ptr %t195 - call void @finch.gen.fail(ptr %t159, %S.ast.Node %t196, { ptr, i64, i64 } { ptr @.str.6168, i64 82, i64 0 }) - br label %endif9144 -endif9144: - br label %endif9141 -else9140: - %t197 = load i64, ptr %a155 - %t198 = icmp slt i64 %t197, 0 - br i1 %t198, label %then9159, label %endif9161 -then9159: - %t199 = load { ptr, i64, i64 }, ptr %a2 - %t200 = extractvalue { ptr, i64, i64 } %t199, 1 - %t201 = icmp uge i64 0, %t200 - br i1 %t201, label %range9162, label %inrange9163 -range9162: - call void @finch_panic_index(ptr @.str.6169, i64 5811, i64 0, i64 %t200) - unreachable -inrange9163: - %t202 = extractvalue { ptr, i64, i64 } %t199, 0 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 0 - %t204 = load { ptr, i64, i64 }, ptr %t203 - store { ptr, i64, i64 } %t204, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.6170, i64 64, i64 0 }, ptr %a207 - call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a205 - %t209 = extractvalue { ptr, i64, i64 } %t208, 1 - %t210 = trunc i64 %t209 to i32 - %t211 = extractvalue { ptr, i64, i64 } %t208, 0 - %t212 = icmp eq ptr %t211, null - %t213 = select i1 %t212, ptr @.str.6171, ptr %t211 - %t214 = call i32 (ptr, ...) @printf(ptr @.str.6172, i32 %t210, ptr %t213) - store { ptr, i64, i64 } %t208, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = call i32 (ptr, ...) @printf(ptr @.str.6173) - %t217 = trunc i64 1 to i32 - %t218 = call i32 @fflush(ptr null) - call void @exit(i32 %t217) - br label %endif9161 -endif9161: - br label %endif9141 -endif9141: - store i64 0, ptr %a219 - br label %while.cond9164 -while.cond9164: - %t220 = load i64, ptr %a219 - %t221 = load ptr, ptr %a46 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic9167, label %ok9168 -panic9167: - call void @finch_panic(ptr @.str.6174, i64 5816, ptr @.str.6175) - unreachable -ok9168: - %t223 = getelementptr inbounds %S.gen.Gen, ptr %t221, i32 0, i32 15 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp slt i64 %t220, %t225 - br i1 %t226, label %while.body9165, label %while.end9166 -while.body9165: - %t227 = load ptr, ptr %a46 - %t228 = load i64, ptr %a219 - call void @finch.gen.define(ptr %t227, i64 %t228) - %t229 = load i64, ptr %a219 - %t230 = add i64 %t229, 1 - store i64 %t230, ptr %a219 - br label %while.cond9164 -while.end9166: - %t231 = load ptr, ptr %a46 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic9169, label %ok9170 -panic9169: - call void @finch_panic(ptr @.str.6176, i64 5820, ptr @.str.6177) - unreachable -ok9170: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 28 - %t234 = load i1, ptr %t233 - br i1 %t234, label %then9171, label %endif9173 -then9171: - %t235 = load ptr, ptr %a46 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic9174, label %ok9175 -panic9174: - call void @finch_panic(ptr @.str.6178, i64 5821, ptr @.str.6179) - unreachable -ok9175: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range9176, label %inrange9177 -range9176: - call void @finch_panic_index(ptr @.str.6180, i64 5821, i64 0, i64 %t239) - unreachable -inrange9177: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.ast.Program, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.ast.Program, ptr %t242, i32 0, i32 2 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.copy.arr_str(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t247, ptr %a248 - %t249 = load ptr, ptr %a46 - %t250 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.indexAll(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a46 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic9178, label %ok9179 -panic9178: - call void @finch_panic(ptr @.str.6181, i64 5823, ptr @.str.6182) - unreachable -ok9179: - %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 29 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6183, i64 1, i64 0 }, ptr %a255 - call void @finch_str_join(ptr %a256, ptr %t253, ptr %a255) - %t257 = load { ptr, i64, i64 }, ptr %a256 - call void @finch.drop.arr_str(ptr %a248) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t257 -endif9173: - %t258 = load ptr, ptr %a46 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic9206, label %ok9207 -panic9206: - call void @finch_panic(ptr @.str.6184, i64 5825, ptr @.str.6185) - unreachable -ok9207: - %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 15 - store i64 0, ptr %a261 - br label %each.cond9208 -each.cond9208: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body9209, label %each.end9211 -each.body9209: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i64 %t264 - %t268 = load %S.gen.FnSig, ptr %t267 - store %S.gen.FnSig %t268, ptr %a269 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a269, i32 0, i32 5 - %t271 = load i1, ptr %t270 - br i1 %t271, label %then9212, label %endif9214 -then9212: - %t272 = load ptr, ptr %a46 - %t273 = load %S.gen.FnSig, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t272, %S.gen.FnSig %t273) - store { ptr, i64, i64 } %t274, ptr %a275 - call void @finch_str_drop(ptr %a275) - br label %endif9214 -endif9214: - br label %each.step9210 -each.step9210: - %t276 = load i64, ptr %a261 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a261 - br label %each.cond9208 -each.end9211: - %t278 = load i1, ptr %a7 - br i1 %t278, label %then9215, label %endif9217 -then9215: - store { ptr, i64, i64 } { ptr @.str.6186, i64 0, i64 0 }, ptr %a279 - %t280 = load ptr, ptr %a46 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic9218, label %ok9219 -panic9218: - call void @finch_panic(ptr @.str.6187, i64 5833, ptr @.str.6188) - unreachable -ok9219: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 31 - %t283 = getelementptr inbounds %S.platform.Target, ptr %t282, i32 0, i32 1 - %t284 = load i1, ptr %t283 - br i1 %t284, label %then9220, label %endif9222 -then9220: - %t285 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6189, i64 10, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif9222 -endif9222: - %t287 = load ptr, ptr %a46 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic9223, label %ok9224 -panic9223: - call void @finch_panic(ptr @.str.6190, i64 5836, ptr @.str.6191) - unreachable -ok9224: - %t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 3 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6192, i64 6, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.6193, i64 107, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = load i64, ptr %t290 - %t302 = add i64 %t301, 1 - call void @finch_arr_reserve(ptr %t289, i64 %t302, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t303 = load ptr, ptr %t289 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t303, i64 %t301 - store { ptr, i64, i64 } %t300, ptr %t304 - store i64 %t302, ptr %t290 - %t305 = load ptr, ptr %a46 - %t306 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t305) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t306 -endif9217: - %t307 = load ptr, ptr %a46 - %t308 = icmp eq ptr %t307, null - br i1 %t308, label %panic9225, label %ok9226 -panic9225: - call void @finch_panic(ptr @.str.6194, i64 5840, ptr @.str.6195) - unreachable -ok9226: - %t309 = getelementptr inbounds %S.gen.Gen, ptr %t307, i32 0, i32 15 - %t310 = load i64, ptr %a155 - %t311 = load { ptr, i64, i64 }, ptr %t309 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range9227, label %inrange9228 -range9227: - call void @finch_panic_index(ptr @.str.6196, i64 5840, i64 %t310, i64 %t312) - unreachable -inrange9228: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds %S.gen.FnSig, ptr %t314, i64 %t310 - %t316 = load %S.gen.FnSig, ptr %t315 - store %S.gen.FnSig %t316, ptr %a317 - call void @finch.copy.S_gen_FnSig(ptr %a318, ptr %a317) - %t319 = load %S.gen.FnSig, ptr %a318 - store %S.gen.FnSig %t319, ptr %a320 - %t321 = load ptr, ptr %a46 - %t322 = load %S.gen.FnSig, ptr %a320 - %t323 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t321, %S.gen.FnSig %t322) - store { ptr, i64, i64 } { ptr @.str.6197, i64 5, i64 0 }, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t323, ptr %a327 - call void @finch_str_drop(ptr %a327) - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6198, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - store { ptr, i64, i64 } %t328, ptr %a332 - call void @finch_str_drop(ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a329 - %t334 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 11 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t333, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t333, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.6199, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t345, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6200, i64 0, i64 0 }, ptr %a347 - %t348 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 13 - %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i32 0, i32 1 - %t350 = load i64, ptr %t349 - %t351 = icmp eq i64 %t350, 1 - br i1 %t351, label %then9229, label %endif9231 -then9229: - %t352 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6201, i64 133, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6202, i64 20, i64 0 }, ptr %a357 - call void @finch_str_concat(ptr %a355, ptr %a356, ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a355 - %t359 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t358, ptr %a346 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif9231 -endif9231: - %t361 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.6203, i64 1, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a362 - %t366 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t365, ptr %a346 - store { ptr, i64, i64 } %t366, ptr %a367 - call void @finch_str_drop(ptr %a367) - store { ptr, i64, i64 } { ptr @.str.6204, i64 12, i64 0 }, ptr %a368 - %t369 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 9 - %t370 = load i1, ptr %t369 - br i1 %t370, label %then9232, label %else9233 -then9232: - %t371 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6205, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a372 - %t376 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t375, ptr %a346 - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t378, ptr %a380 - store { ptr, i64, i64 } { ptr @.str.6206, i64 2, i64 0 }, ptr %a381 - call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a379 - %t383 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t382, ptr %a385 - store { ptr, i64, i64 } %t383, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t382, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.6207, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t393, ptr %a347 - store { ptr, i64, i64 } %t394, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6208, i64 0, i64 0 }, ptr %a346 - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a46 - %t399 = load %S.gen.FnSig, ptr %a320 - %t400 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t398, %S.gen.FnSig %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t402, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.6209, i64 21, i64 0 }, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - %t407 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.6210, i64 62, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t417, ptr %a347 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t420, ptr %a422 - store { ptr, i64, i64 } { ptr @.str.6211, i64 20, i64 0 }, ptr %a423 - call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) - %t424 = load { ptr, i64, i64 }, ptr %a421 - %t425 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t424, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t424, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.6212, i64 78, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - store { ptr, i64, i64 } %t430, ptr %a434 - call void @finch_str_drop(ptr %a434) - %t435 = load { ptr, i64, i64 }, ptr %a431 - %t436 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t435, ptr %a347 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.6213, i64 62, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a439 - %t443 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t442, ptr %a347 - store { ptr, i64, i64 } %t443, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t446 = getelementptr inbounds %S.ast.Type, ptr %t445, i32 0, i32 0 - %t447 = load { ptr, i64, i64 }, ptr %t446 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.6214, i64 3, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br i1 %t451, label %then9235, label %endif9237 -then9235: - %t452 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.6215, i64 20, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - %t456 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t456, ptr %a458 - store { ptr, i64, i64 } { ptr @.str.6216, i64 53, i64 0 }, ptr %a459 - call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) - store { ptr, i64, i64 } %t456, ptr %a460 - call void @finch_str_drop(ptr %a460) - %t461 = load { ptr, i64, i64 }, ptr %a457 - %t462 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t461, ptr %a368 - store { ptr, i64, i64 } %t462, ptr %a463 - call void @finch_str_drop(ptr %a463) - br label %endif9237 -endif9237: - call void @finch_str_drop(ptr %a401) - br label %endif9234 -else9233: - %t464 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t465 = getelementptr inbounds %S.ast.Type, ptr %t464, i32 0, i32 0 - %t466 = load { ptr, i64, i64 }, ptr %t465 - store { ptr, i64, i64 } %t466, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.6217, i64 3, i64 0 }, ptr %a468 - %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) - %t470 = icmp ne i32 %t469, 0 - br i1 %t470, label %then9238, label %endif9240 -then9238: - %t471 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6218, i64 5, i64 0 }, ptr %a473 - store { ptr, i64, i64 } %t471, ptr %a474 - call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474) - %t475 = load { ptr, i64, i64 }, ptr %a472 - %t476 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t475, ptr %a346 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.6219, i64 46, i64 0 }, ptr %a368 - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif9240 -endif9240: - br label %endif9234 -endif9234: - %t480 = load ptr, ptr %a46 - %t481 = icmp eq ptr %t480, null - br i1 %t481, label %panic9241, label %ok9242 -panic9241: - call void @finch_panic(ptr @.str.6220, i64 5865, ptr @.str.6221) - unreachable -ok9242: - %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 3 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6222, i64 48, i64 0 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a487 - call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t488, ptr %a490 - store { ptr, i64, i64 } { ptr @.str.6223, i64 2, i64 0 }, ptr %a491 - call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) - store { ptr, i64, i64 } %t488, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a489 - %t494 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t493, ptr %a496 - store { ptr, i64, i64 } %t494, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t493, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - store { ptr, i64, i64 } %t499, ptr %a501 - store { ptr, i64, i64 } { ptr @.str.6224, i64 1, i64 0 }, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - store { ptr, i64, i64 } %t499, ptr %a503 - call void @finch_str_drop(ptr %a503) - %t504 = load { ptr, i64, i64 }, ptr %a500 - %t505 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t504, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t504, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - store { ptr, i64, i64 } %t510, ptr %a512 - store { ptr, i64, i64 } { ptr @.str.6225, i64 2, i64 0 }, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - store { ptr, i64, i64 } %t510, ptr %a514 - call void @finch_str_drop(ptr %a514) - %t515 = load { ptr, i64, i64 }, ptr %a511 - %t516 = load i64, ptr %t483 - %t517 = add i64 %t516, 1 - call void @finch_arr_reserve(ptr %t482, i64 %t517, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t518 = load ptr, ptr %t482 - %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 %t516 - store { ptr, i64, i64 } %t515, ptr %t519 - store i64 %t517, ptr %t483 - %t520 = load ptr, ptr %a46 - %t521 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t520) - call void @finch_str_drop(ptr %a368) - call void @finch_str_drop(ptr %a347) - call void @finch_str_drop(ptr %a346) - call void @finch.drop.S_gen_FnSig(ptr %a320) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t521 -} - -define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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.6226, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6227, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6228, i64 78, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6229, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6230, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.6231, i64 77, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6232, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6233, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6234, i64 121, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6235, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6236, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.6237, i64 83, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6238, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6239, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6240, i64 29, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6241, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6242, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6243, i64 73, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6244, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6245, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6246, i64 98, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6247, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6248, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.6249, i64 66, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6250, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6251, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6252, i64 48, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6253, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6254, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6255, i64 77, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6256, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6257, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6258, i64 66, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6259, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6260, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6261, i64 73, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6262, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6263, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6264, i64 61, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6265, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6266, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6267, i64 130, i64 0 }) - %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6268, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6269, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6270, i64 75, i64 0 }) - %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6271, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6272, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6273, i64 29, i64 0 }) - %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6274, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6275, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6276, i64 26, i64 0 }) - %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6277, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6278, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6279, 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.6280, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6281, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6282, i64 23, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6283, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6284, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6285, i64 40, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6286, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6287, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6288, i64 18, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6289, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6290, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6291, i64 43, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6292, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6293, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6294, i64 38, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6295, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6296, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6297, i64 37, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6298, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6299, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6300, i64 19, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6301, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6302, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6303, i64 46, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6304, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6305, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6306, i64 22, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6307, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6308, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6309, i64 18, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6310, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6311, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6312, i64 37, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6313, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6314, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6315, i64 18, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6316, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6317, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6318, i64 45, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6319, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6321, 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.6322, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6323, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6324, i64 20, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6325, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6326, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6327, i64 59, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6328, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6329, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.6330, i64 29, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6331, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6332, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6333, i64 22, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6334, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6335, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6336, i64 24, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6337, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6338, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6339, i64 27, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6340, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6341, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6342, i64 25, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6343, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6344, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6345, i64 62, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6346, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6347, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6348, i64 41, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6349, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6350, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6351, i64 24, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6352, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6353, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6354, i64 24, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6355, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6356, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6357, i64 26, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6358, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6359, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6360, i64 17, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6361, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6362, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6363, 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.6364, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6365, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6366, i64 19, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6367, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6368, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6369, i64 22, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6370, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6371, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6372, i64 53, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6373, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6374, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6375, i64 52, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6376, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6377, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6378, i64 19, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6379, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6380, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6381, i64 39, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6382, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6383, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6384, 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.6385, i64 2, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6386, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6387, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6388, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6389, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6390, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6391, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6392, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6393, i64 8, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6394, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6395, i64 5, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6396, i64 4, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6397, i64 6, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6398, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6399, i64 6, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6400, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6401, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6402, i64 6, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6403, i64 5, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6404, i64 2, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6405, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6406, 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.6407, i64 3, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6408, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6409, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6410, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6411, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6412, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6413, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6414, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6415, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6416, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6417, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6418, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6419, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6420, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6421, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6422, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6423, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 17, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 17, 2 - ret { ptr, i64, i64 } %t22 -} - -define internal void @finch.copy.S_docs_Doc(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.docs.Doc, ptr %src - store %S.docs.Doc %t1, ptr %dst - %t2 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca %S.docs.Doc, align 16 - %a21 = alloca %S.docs.Doc, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond9243 -each.cond9243: - %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.body9244, label %each.end9246 -each.body9244: - %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 %then9247, label %endif9249 -then9247: - %t19 = load %S.docs.Doc, ptr %a11 - store %S.docs.Doc %t19, ptr %a20 - call void @finch.copy.S_docs_Doc(ptr %a21, ptr %a20) - %t22 = load %S.docs.Doc, ptr %a21 - ret %S.docs.Doc %t22 -endif9249: - br label %each.step9245 -each.step9245: - %t23 = load i64, ptr %a3 - %t24 = add i64 %t23, 1 - store i64 %t24, ptr %a3 - br label %each.cond9243 -each.end9246: - 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 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store %S.docs.Doc %p0, ptr %a1 - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } { ptr @.str.6424, 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.6425, i64 5, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } %t12, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t12, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { -entry: - %a1 = alloca %S.C.CXString, align 16 - %a3 = alloca [32 x i8], align 16 - %a9 = 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 - %a16 = alloca [32 x i8], 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 i64, ptr %t4 - %t6 = getelementptr inbounds i8, ptr %a3, i64 8 - %t7 = load i64, ptr %t6 - %t8 = call ptr @clang_getCString(i64 %t5, i64 %t7) - store { ptr, i64, i64 } zeroinitializer, ptr %a9 - call void @finch_str_from_c(ptr %a9, ptr %t8) - %t10 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t13, ptr %a14 - %t15 = load %S.C.CXString, ptr %a1 - store %S.C.CXString %t15, ptr %a16 - %t17 = getelementptr inbounds i8, ptr %a16, i64 0 - %t18 = load i64, ptr %t17 - %t19 = getelementptr inbounds i8, ptr %a16, i64 8 - %t20 = load i64, ptr %t19 - call void @clang_disposeString(i64 %t18, i64 %t20) - %t21 = load { ptr, i64, i64 }, ptr %a14 - ret { ptr, i64, i64 } %t21 -} - -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 - store %S.ast.Type %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6426, 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 - ret %S.ast.Type %t17 -} - -define internal { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca i1, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca i64, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6427, i64 15, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a10, i64 %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t8, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6428, i64 4, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6429, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.6430, i64 2, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6431, i64 0, i64 0 }, ptr %a47 - %t48 = call i32 @finch_write_file(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - %t50 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6432, i64 12, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - %t55 = load { ptr, i64, i64 }, ptr %a44 - %t56 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t54, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t54, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6433, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load { ptr, i64, i64 }, ptr %a23 - %t69 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t67, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t67, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.6434, i64 3, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - %t88 = call i64 @finch.host.run({ ptr, i64, i64 } %t87) - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a44 - call void @finch.host.remove({ ptr, i64, i64 } %t90) - %t91 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - %t95 = xor i1 %t94, true - br i1 %t95, label %then9250, label %endif9252 -then9250: - %t96 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t96 -endif9252: - store i1 false, ptr %a97 - %t98 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_read_file(ptr %a100, ptr %a99, ptr @.str.6435, i64 114) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.6437, i64 1, i64 0 }, ptr %a104 - call void @finch_str_split(ptr %a105, ptr %a102, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t101, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t106, ptr %a108 - store i64 0, ptr %a109 - br label %each.cond9253 -each.cond9253: - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a108, i32 0, i32 1 - %t111 = load i64, ptr %t110 - %t112 = load i64, ptr %a109 - %t113 = icmp slt i64 %t112, %t111 - br i1 %t113, label %each.body9254, label %each.end9256 -each.body9254: - %t114 = load ptr, ptr %a108 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_trim(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t121, ptr %a122 - %t123 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.6440, i64 34, i64 0 }, ptr %a126 - %t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126) - %t128 = icmp ne i32 %t127, 0 - br i1 %t128, label %then9257, label %endif9259 -then9257: - store i1 true, ptr %a97 - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9259: - %t129 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6442, i64 19, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br i1 %t134, label %then9260, label %endif9262 -then9260: - call void @finch_str_drop(ptr %a122) - br label %each.end9256 -endif9262: - %t135 = load i1, ptr %a97 - %t136 = xor i1 %t135, true - br label %logic.from9263 -logic.from9263: - br i1 %t136, label %logic.end9265, label %logic.rhs9264 -logic.rhs9264: - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br label %logic.rend9266 -logic.rend9266: - br label %logic.end9265 -logic.end9265: - %t140 = phi i1 [ true, %logic.from9263 ], [ %t139, %logic.rend9266 ] - br i1 %t140, label %then9267, label %endif9269 -then9267: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9269: - %t141 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6444, i64 22, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_ends(ptr %a142, ptr %a144) - %t146 = icmp ne i32 %t145, 0 - br i1 %t146, label %then9270, label %else9271 -then9270: - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t148, ptr %a149 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = sub i64 %t152, 22 - call void @finch_str_sub(ptr %a150, ptr %a149, i64 0, i64 %t153, ptr @.str.6446, i64 128) - %t154 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.6445, i64 11, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %t147 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t161, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %a2 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160 - store { ptr, i64, i64 } %t159, ptr %t163 - store i64 %t161, ptr %t147 - br label %endif9272 -else9271: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6447, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - %t170 = load i64, ptr %t164 - %t171 = add i64 %t170, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t172 = load ptr, ptr %a2 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 - store { ptr, i64, i64 } %t169, ptr %t173 - store i64 %t171, ptr %t164 - br label %endif9272 -endif9272: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -each.step9255: - %t174 = load i64, ptr %a109 - %t175 = add i64 %t174, 1 - store i64 %t175, ptr %a109 - br label %each.cond9253 -each.end9256: - call void @finch.drop.arr_str(ptr %a108) - %t176 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.host.remove({ ptr, i64, i64 } %t176) - %t177 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t177 -} - -define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) { -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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - %t4 = load %S.C.CXType, ptr %a2 - store %S.C.CXType %t4, ptr %a5 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a3, ptr byval(%S.C.CXType) align 8 %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 { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a9) - store { i64, 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 %panic9273, label %ok9274 -panic9273: - call void @finch_panic(ptr @.str.6448, i64 143, ptr @.str.6449) - unreachable -ok9274: - %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 %then9275, label %endif9277 -then9275: - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic9278, label %ok9279 -panic9278: - call void @finch_panic(ptr @.str.6450, i64 144, ptr @.str.6451) - unreachable -ok9279: - %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.missing9280, label %map.found9281 -map.missing9280: - 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.6452, i64 144, ptr %a29) - unreachable -map.found9281: - %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 - call void @finch_str_drop(ptr %a14) - ret { ptr, i64, i64 } %t38 -endif9277: - %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) - store { i64, 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.from9282 -logic.from9282: - br i1 %t48, label %logic.end9284, label %logic.rhs9283 -logic.rhs9283: - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6454, 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.rend9285 -logic.rend9285: - br label %logic.end9284 -logic.end9284: - %t55 = phi i1 [ true, %logic.from9282 ], [ %t54, %logic.rend9285 ] - br i1 %t55, label %then9286, label %endif9288 -then9286: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic9289, label %ok9290 -panic9289: - call void @finch_panic(ptr @.str.6455, i64 148, ptr @.str.6456) - unreachable -ok9290: - %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 %panic9291, label %ok9292 -panic9291: - call void @finch_panic(ptr @.str.6458, i64 149, ptr @.str.6459) - unreachable -ok9292: - %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.6457, i64 12, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t71, ptr %a45 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_drop(ptr %a73) - br label %endif9288 -endif9288: - %t74 = load { ptr, i64, i64 }, ptr %a45 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic9293, label %ok9294 -panic9293: - call void @finch_panic(ptr @.str.6460, i64 151, ptr @.str.6461) - unreachable -ok9294: - %t77 = getelementptr inbounds %S.cimport.Importer, ptr %t75, i32 0, i32 3 - %t78 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t78, ptr %a79 - store i32 0, ptr %a80 - %t81 = call i64 @finch_map_slot(ptr %t77, ptr %a79, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a80) - %t82 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t77, i32 0, i32 0 - %t83 = load ptr, ptr %t82 - %t84 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i64 %t81 - %t85 = load i32, ptr %a80 - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %map.new9295, label %map.have9296 -map.new9295: - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 1 - call void @finch_str_copy(ptr %t87, ptr %a79) - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t88 - br label %map.have9296 -map.have9296: - %t89 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 - store { ptr, i64, i64 } %t74, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } %t92, ptr %t89 - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a14) - ret { ptr, i64, i64 } %t95 -} - -define internal i32 @finch.c.cimport.visitField(ptr byval(%S.C.CXCursor) align 8 %c0, ptr %c1) { -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 - %a42 = alloca %S.C.CXType, align 16 - %a44 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i32, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca %S.C.CXType, align 16 - %a73 = alloca %S.cimport.CStruct, align 16 - %a75 = alloca %S.C.CXCursor, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.cimport.FieldCtx, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca i32, align 16 - %a117 = alloca %S.cimport.CStruct, align 16 - %a118 = alloca %S.cimport.CStruct, align 16 - %a121 = alloca %S.cimport.CStruct, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - %t4 = load %S.C.CXType, ptr %a2 - store %S.C.CXType %t4, ptr %a5 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a3, ptr byval(%S.C.CXType) align 8 %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 byval(%S.C.CXType) align 8 %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 { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a14) - store { i64, 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 %panic9297, label %ok9298 -panic9297: - call void @finch_panic(ptr @.str.6462, i64 161, ptr @.str.6463) - unreachable -ok9298: - %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.from9299 -logic.from9299: - br i1 %t31, label %logic.end9301, label %logic.rhs9300 -logic.rhs9300: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic9302, label %ok9303 -panic9302: - call void @finch_panic(ptr @.str.6464, i64 161, ptr @.str.6465) - unreachable -ok9303: - %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.rend9304 -logic.rend9304: - br label %logic.end9301 -logic.end9301: - %t39 = phi i1 [ true, %logic.from9299 ], [ %t38, %logic.rend9304 ] - br i1 %t39, label %then9305, label %endif9307 -then9305: - %t40 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t40 -endif9307: - %t41 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t41, ptr %a42 - %t43 = call i64 @clang_Type_getSizeOf(ptr byval(%S.C.CXType) align 8 %a42) - store i64 %t43, ptr %a44 - %t45 = load i64, ptr %a44 - %t46 = icmp slt i64 %t45, 0 - br i1 %t46, label %then9308, label %endif9310 -then9308: - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } { ptr @.str.6466, i64 0, i64 0 } -endif9310: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic9311, label %ok9312 -panic9311: - call void @finch_panic(ptr @.str.6467, i64 168, ptr @.str.6468) - unreachable -ok9312: - %t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 4 - %t50 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t50, ptr %a51 - store i32 0, ptr %a52 - %t53 = call i64 @finch_map_slot(ptr %t49, ptr %a51, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a52) - %t54 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t49, i32 0, i32 0 - %t55 = load ptr, ptr %t54 - %t56 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i64 %t53 - %t57 = load i32, ptr %a52 - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %map.new9313, label %map.have9314 -map.new9313: - %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 1 - call void @finch_str_copy(ptr %t59, ptr %a51) - %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 - store i1 false, ptr %t60 - br label %map.have9314 -map.have9314: - %t61 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 - store i1 true, ptr %t61 - %t62 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t65, 0 - %t67 = load i64, ptr %a44 - %t68 = insertvalue %S.cimport.CStruct %t66, i64 %t67, 2 - %t69 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t69, ptr %a70 - %t71 = call i64 @clang_Type_getAlignOf(ptr byval(%S.C.CXType) align 8 %a70) - %t72 = insertvalue %S.cimport.CStruct %t68, i64 %t71, 3 - store %S.cimport.CStruct %t72, ptr %a73 - %t74 = load %S.C.CXCursor, ptr %a12 - store %S.C.CXCursor %t74, ptr %a75 - %t76 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a75) - %t77 = icmp eq i32 %t76, 3 - br i1 %t77, label %then9315, label %endif9317 -then9315: - %t78 = getelementptr inbounds %S.cimport.CStruct, ptr %a73, i32 0, i32 4 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } { ptr @.str.6469, i64 12, i64 0 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif9317 -endif9317: - %t81 = load ptr, ptr %a1 - %t82 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t81, 0 - %t83 = insertvalue %S.cimport.FieldCtx %t82, ptr %a73, 1 - store %S.cimport.FieldCtx %t83, ptr %a84 - %t85 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t85, ptr %a86 - %t87 = call i32 @clang_Type_visitFields(ptr byval(%S.C.CXType) align 8 %a86, ptr @finch.c.cimport.visitField, ptr %a84) - %t88 = load ptr, ptr %a1 - %t89 = icmp eq ptr %t88, null - br i1 %t89, label %panic9318, label %ok9319 -panic9318: - call void @finch_panic(ptr @.str.6470, i64 176, ptr @.str.6471) - unreachable -ok9319: - %t90 = getelementptr inbounds %S.cimport.Importer, ptr %t88, i32 0, i32 4 - %t91 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i64 @finch_map_find(ptr %t90, ptr %a92, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t94 = icmp sge i64 %t93, 0 - br i1 %t94, label %remove.hit9320, label %remove.end9321 -remove.hit9320: - %t95 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t90, i32 0, i32 0 - %t96 = load ptr, ptr %t95 - %t97 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t96, i64 %t93 - %t98 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 1 - call void @finch_str_drop(ptr %t98) - %t99 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 2 - call void @finch_map_remove_at(ptr %t90, i64 %t93, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64)) - br label %remove.end9321 -remove.end9321: - %t100 = load %S.cimport.CStruct, ptr %a73 - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic9322, label %ok9323 -panic9322: - call void @finch_panic(ptr @.str.6472, i64 177, ptr @.str.6473) - unreachable -ok9323: - %t103 = getelementptr inbounds %S.cimport.Importer, ptr %t101, i32 0, i32 0 - %t104 = getelementptr inbounds %S.cimport.CImports, ptr %t103, i32 0, i32 3 - %t105 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t105, ptr %a106 - store i32 0, ptr %a107 - %t108 = call i64 @finch_map_slot(ptr %t104, ptr %a106, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a107) - %t109 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t104, i32 0, i32 0 - %t110 = load ptr, ptr %t109 - %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i64 %t108 - %t112 = load i32, ptr %a107 - %t113 = icmp ne i32 %t112, 0 - br i1 %t113, label %map.new9324, label %map.have9325 -map.new9324: - %t114 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 1 - call void @finch_str_copy(ptr %t114, ptr %a106) - %t115 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 - store %S.cimport.CStruct zeroinitializer, ptr %t115 - br label %map.have9325 -map.have9325: - %t116 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 - store %S.cimport.CStruct %t100, ptr %a117 - call void @finch.copy.S_cimport_CStruct(ptr %a118, ptr %a117) - %t119 = load %S.cimport.CStruct, ptr %a118 - %t120 = load %S.cimport.CStruct, ptr %t116 - store %S.cimport.CStruct %t119, ptr %t116 - store %S.cimport.CStruct %t120, ptr %a121 - call void @finch.drop.S_cimport_CStruct(ptr %a121) - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic9326, label %ok9327 -panic9326: - call void @finch_panic(ptr @.str.6474, i64 178, ptr @.str.6475) - unreachable -ok9327: - %t124 = getelementptr inbounds %S.cimport.Importer, ptr %t122, i32 0, i32 0 - %t125 = getelementptr inbounds %S.cimport.CImports, ptr %t124, i32 0, i32 4 - %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t125, i32 0, i32 1 - %t127 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = load i64, ptr %t126 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t125, i64 %t132, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t125 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i64 %t131 - store { ptr, i64, i64 } %t130, ptr %t134 - store i64 %t132, ptr %t126 - %t135 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.S_cimport_CStruct(ptr %a73) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t135 -} - -define internal void @finch.drop.S_cimport_Mapped(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 0 - call void @finch.drop.S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) { -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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca %S.C.CXCursor, align 16 - %a52 = alloca %S.C.CXType, align 16 - %a54 = alloca %S.C.CXCursor, align 16 - %a65 = alloca %S.cimport.Mapped, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a72 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a98 = alloca %S.cimport.CField, align 16 - %a99 = alloca %S.cimport.CField, align 16 - store %S.C.CXCursor %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a2 - store ptr %t3, ptr %a4 - %t5 = load %S.C.CXCursor, ptr %a1 - store %S.C.CXCursor %t5, ptr %a6 - %t7 = call { i64, i64 } @clang_getCursorSpelling(ptr byval(%S.C.CXCursor) align 8 %a6) - store { i64, 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 byval(%S.C.CXCursor) align 8 %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 byval(%S.C.CXType) align 8 %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 byval(%S.C.CXCursor) align 8 %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 byval(%S.C.CXType) align 8 %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 byval(%S.C.CXType) align 8 %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 byval(%S.C.CXCursor) align 8 %a35) - %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %then9328, label %else9329 -then9328: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic9331, label %ok9332 -panic9331: - call void @finch_panic(ptr @.str.6477, i64 195, ptr @.str.6478) - unreachable -ok9332: - %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 %panic9333, label %ok9334 -panic9333: - call void @finch_panic(ptr @.str.6479, i64 195, ptr @.str.6480) - unreachable -ok9334: - %t43 = getelementptr inbounds %S.cimport.CStruct, ptr %t41, i32 0, i32 4 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.6476, i64 14, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t46 - br label %endif9330 -else9329: - %t47 = getelementptr inbounds %S.C.CXType, ptr %a20, i32 0, i32 0 - %t48 = load i32, ptr %t47 - %t49 = icmp eq i32 %t48, 105 - br label %logic.from9335 -logic.from9335: - br i1 %t49, label %logic.rhs9336, label %logic.end9337 -logic.rhs9336: - %t51 = load %S.C.CXType, ptr %a20 - store %S.C.CXType %t51, ptr %a52 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a50, ptr byval(%S.C.CXType) align 8 %a52) - %t53 = load %S.C.CXCursor, ptr %a50 - store %S.C.CXCursor %t53, ptr %a54 - %t55 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a54) - %t56 = icmp eq i32 %t55, 3 - br label %logic.rend9338 -logic.rend9338: - br label %logic.end9337 -logic.end9337: - %t57 = phi i1 [ false, %logic.from9335 ], [ %t56, %logic.rend9338 ] - br i1 %t57, label %then9339, label %else9340 -then9339: - %t58 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t58 - br label %endif9341 -else9340: - %t59 = load ptr, ptr %a4 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic9342, label %ok9343 -panic9342: - call void @finch_panic(ptr @.str.6481, i64 200, ptr @.str.6482) - unreachable -ok9343: - %t61 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t59, i32 0, i32 0 - %t62 = load ptr, ptr %t61 - %t63 = load %S.C.CXType, ptr %a20 - %t64 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t62, %S.C.CXType %t63, i1 false, i1 false) - store %S.cimport.Mapped %t64, ptr %a65 - %t66 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 2 - %t67 = load i1, ptr %t66 - br i1 %t67, label %then9344, label %else9345 -then9344: - %t68 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 0 - %t69 = load %S.ast.Type, ptr %t68 - %t70 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 1 - store %S.ast.Type %t69, ptr %a71 - call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71) - %t73 = load %S.ast.Type, ptr %a72 - %t74 = load %S.ast.Type, ptr %t70 - store %S.ast.Type %t73, ptr %t70 - store %S.ast.Type %t74, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - br label %endif9346 -else9345: - %t76 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t76 - br label %endif9346 -endif9346: - call void @finch.drop.S_cimport_Mapped(ptr %a65) - br label %endif9341 -endif9341: - br label %endif9330 -endif9330: - %t77 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then9347, label %endif9349 -then9347: - %t79 = load ptr, ptr %a4 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic9350, label %ok9351 -panic9350: - call void @finch_panic(ptr @.str.6483, i64 208, ptr @.str.6484) - unreachable -ok9351: - %t81 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t79, i32 0, i32 1 - %t82 = load ptr, ptr %t81 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic9352, label %ok9353 -panic9352: - call void @finch_panic(ptr @.str.6485, i64 208, ptr @.str.6486) - unreachable -ok9353: - %t84 = getelementptr inbounds %S.cimport.CStruct, ptr %t82, i32 0, i32 5 - store i1 true, ptr %t84 - br label %endif9349 -endif9349: - %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = icmp eq i64 %t87, 0 - br i1 %t88, label %then9354, label %endif9356 -then9354: - %t89 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t89 - br label %endif9356 -endif9356: - %t90 = load ptr, ptr %a4 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic9357, label %ok9358 -panic9357: - call void @finch_panic(ptr @.str.6487, i64 213, ptr @.str.6488) - unreachable -ok9358: - %t92 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t90, i32 0, i32 1 - %t93 = load ptr, ptr %t92 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic9359, label %ok9360 -panic9359: - call void @finch_panic(ptr @.str.6489, i64 213, ptr @.str.6490) - unreachable -ok9360: - %t95 = getelementptr inbounds %S.cimport.CStruct, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load %S.cimport.CField, ptr %a12 - store %S.cimport.CField %t97, ptr %a98 - call void @finch.copy.S_cimport_CField(ptr %a99, ptr %a98) - %t100 = load %S.cimport.CField, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds %S.cimport.CField, ptr %t103, i64 %t101 - store %S.cimport.CField %t100, ptr %t104 - store i64 %t102, ptr %t96 - call void @finch.drop.S_cimport_CField(ptr %a12) - ret i32 1 -} - -define internal %S.cimport.Mapped @finch.cimport.sized(i64 %p0, i1 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a29 = alloca %S.ast.Type, align 16 - %a35 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load i64, ptr %a1 - %t4 = icmp eq i64 %t3, 1 - br i1 %t4, label %then9361, label %endif9363 -then9361: - %t5 = load i1, ptr %a2 - br i1 %t5, label %then9364, label %endif9366 -then9364: - %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6491, i64 2, i64 0 }) - %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) - store %S.ast.Type %t6, ptr %a8 - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.cimport.Mapped %t7 -endif9366: - %t9 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6492, i64 2, i64 0 }) - %t10 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t9) - store %S.ast.Type %t9, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.cimport.Mapped %t10 -endif9363: - %t12 = load i64, ptr %a1 - %t13 = icmp eq i64 %t12, 2 - br i1 %t13, label %then9367, label %endif9369 -then9367: - %t14 = load i1, ptr %a2 - br i1 %t14, label %then9370, label %endif9372 -then9370: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6493, i64 3, i64 0 }) - %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) - store %S.ast.Type %t15, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a17) - ret %S.cimport.Mapped %t16 -endif9372: - %t18 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6494, i64 3, i64 0 }) - %t19 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t18) - store %S.ast.Type %t18, ptr %a20 - call void @finch.drop.S_ast_Type(ptr %a20) - ret %S.cimport.Mapped %t19 -endif9369: - %t21 = load i64, ptr %a1 - %t22 = icmp eq i64 %t21, 4 - br i1 %t22, label %then9373, label %endif9375 -then9373: - %t23 = load i1, ptr %a2 - br i1 %t23, label %then9376, label %endif9378 -then9376: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6495, i64 3, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9378: - %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6496, i64 3, i64 0 }) - %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) - store %S.ast.Type %t27, ptr %a29 - call void @finch.drop.S_ast_Type(ptr %a29) - ret %S.cimport.Mapped %t28 -endif9375: - %t30 = load i64, ptr %a1 - %t31 = icmp eq i64 %t30, 8 - br i1 %t31, label %then9379, label %endif9381 -then9379: - %t32 = load i1, ptr %a2 - br i1 %t32, label %then9382, label %endif9384 -then9382: - %t33 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6497, i64 3, i64 0 }) - %t34 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t33) - store %S.ast.Type %t33, ptr %a35 - call void @finch.drop.S_ast_Type(ptr %a35) - ret %S.cimport.Mapped %t34 -endif9384: - %t36 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6498, i64 3, i64 0 }) - %t37 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t36) - store %S.ast.Type %t36, ptr %a38 - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.cimport.Mapped %t37 -endif9381: - %t39 = load i64, ptr %a1 - %t40 = mul i64 %t39, 8 - call void @finch_str_from_int(ptr %a41, i64 %t40) - %t42 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.6499, i64 7, i64 0 }, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.6500, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a54 - call void @finch_str_drop(ptr %a54) - ret %S.cimport.Mapped %t53 -} - -define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) { -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 - %a21 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.ast.Type, align 16 - %a83 = alloca %S.C.CXType, align 16 - %a84 = alloca %S.C.CXType, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a88 = alloca %S.C.CXType, align 16 - %a90 = alloca %S.C.CXType, align 16 - %a103 = alloca %S.C.CXType, align 16 - %a109 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.cimport.Mapped, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca %S.ast.Type, align 16 - %a154 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.C.CXCursor, align 16 - %a159 = alloca %S.C.CXType, align 16 - %a161 = alloca %S.C.CXCursor, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.C.CXType, align 16 - %a187 = alloca %S.C.CXType, align 16 - %a190 = alloca %S.cimport.Mapped, align 16 - %a198 = alloca %S.C.CXType, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a207 = alloca %S.C.CXType, align 16 - %a209 = alloca [32 x i8], align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - store i1 %p2, ptr %a3 - 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 byval(%S.C.CXType) align 8 %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 byval(%S.C.CXType) align 8 %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 %then9385, label %endif9387 -then9385: - %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6501, i64 4, i64 0 }) - %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.cimport.Mapped %t20 -endif9387: - %t22 = load i32, ptr %a16 - %t23 = icmp eq i32 %t22, 3 - br i1 %t23, label %then9388, label %endif9390 -then9388: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6502, i64 4, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9390: - %t27 = load i32, ptr %a16 - %t28 = icmp eq i32 %t27, 13 - br label %logic.from9391 -logic.from9391: - br i1 %t28, label %logic.end9393, label %logic.rhs9392 -logic.rhs9392: - %t29 = load i32, ptr %a16 - %t30 = icmp eq i32 %t29, 4 - br label %logic.rend9394 -logic.rend9394: - br label %logic.end9393 -logic.end9393: - %t31 = phi i1 [ true, %logic.from9391 ], [ %t30, %logic.rend9394 ] - br i1 %t31, label %then9395, label %endif9397 -then9395: - %t32 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6503, i64 4, i64 0 }) - %t33 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - ret %S.cimport.Mapped %t33 -endif9397: - %t35 = load i32, ptr %a16 - %t36 = icmp eq i32 %t35, 14 - br label %logic.from9398 -logic.from9398: - br i1 %t36, label %logic.end9400, label %logic.rhs9399 -logic.rhs9399: - %t37 = load i32, ptr %a16 - %t38 = icmp eq i32 %t37, 16 - br label %logic.rend9401 -logic.rend9401: - br label %logic.end9400 -logic.end9400: - %t39 = phi i1 [ true, %logic.from9398 ], [ %t38, %logic.rend9401 ] - br label %logic.from9402 -logic.from9402: - br i1 %t39, label %logic.end9404, label %logic.rhs9403 -logic.rhs9403: - %t40 = load i32, ptr %a16 - %t41 = icmp eq i32 %t40, 17 - br label %logic.rend9405 -logic.rend9405: - br label %logic.end9404 -logic.end9404: - %t42 = phi i1 [ true, %logic.from9402 ], [ %t41, %logic.rend9405 ] - br label %logic.from9406 -logic.from9406: - br i1 %t42, label %logic.end9408, label %logic.rhs9407 -logic.rhs9407: - %t43 = load i32, ptr %a16 - %t44 = icmp eq i32 %t43, 18 - br label %logic.rend9409 -logic.rend9409: - br label %logic.end9408 -logic.end9408: - %t45 = phi i1 [ true, %logic.from9406 ], [ %t44, %logic.rend9409 ] - br label %logic.from9410 -logic.from9410: - br i1 %t45, label %logic.end9412, label %logic.rhs9411 -logic.rhs9411: - %t46 = load i32, ptr %a16 - %t47 = icmp eq i32 %t46, 19 - br label %logic.rend9413 -logic.rend9413: - br label %logic.end9412 -logic.end9412: - %t48 = phi i1 [ true, %logic.from9410 ], [ %t47, %logic.rend9413 ] - br i1 %t48, label %then9414, label %endif9416 -then9414: - %t49 = load i64, ptr %a13 - %t50 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t49, i1 true) - ret %S.cimport.Mapped %t50 -endif9416: - %t51 = load i32, ptr %a16 - %t52 = icmp eq i32 %t51, 5 - br label %logic.from9417 -logic.from9417: - br i1 %t52, label %logic.end9419, label %logic.rhs9418 -logic.rhs9418: - %t53 = load i32, ptr %a16 - %t54 = icmp eq i32 %t53, 8 - br label %logic.rend9420 -logic.rend9420: - br label %logic.end9419 -logic.end9419: - %t55 = phi i1 [ true, %logic.from9417 ], [ %t54, %logic.rend9420 ] - br label %logic.from9421 -logic.from9421: - br i1 %t55, label %logic.end9423, label %logic.rhs9422 -logic.rhs9422: - %t56 = load i32, ptr %a16 - %t57 = icmp eq i32 %t56, 9 - br label %logic.rend9424 -logic.rend9424: - br label %logic.end9423 -logic.end9423: - %t58 = phi i1 [ true, %logic.from9421 ], [ %t57, %logic.rend9424 ] - br label %logic.from9425 -logic.from9425: - br i1 %t58, label %logic.end9427, label %logic.rhs9426 -logic.rhs9426: - %t59 = load i32, ptr %a16 - %t60 = icmp eq i32 %t59, 10 - br label %logic.rend9428 -logic.rend9428: - br label %logic.end9427 -logic.end9427: - %t61 = phi i1 [ true, %logic.from9425 ], [ %t60, %logic.rend9428 ] - br label %logic.from9429 -logic.from9429: - br i1 %t61, label %logic.end9431, label %logic.rhs9430 -logic.rhs9430: - %t62 = load i32, ptr %a16 - %t63 = icmp eq i32 %t62, 11 - br label %logic.rend9432 -logic.rend9432: - br label %logic.end9431 -logic.end9431: - %t64 = phi i1 [ true, %logic.from9429 ], [ %t63, %logic.rend9432 ] - br i1 %t64, label %then9433, label %endif9435 -then9433: - %t65 = load i64, ptr %a13 - %t66 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t65, i1 false) - ret %S.cimport.Mapped %t66 -endif9435: - %t67 = load i32, ptr %a16 - %t68 = icmp eq i32 %t67, 106 - br i1 %t68, label %then9436, label %endif9438 -then9436: - %t69 = load i64, ptr %a13 - %t70 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t69, i1 true) - ret %S.cimport.Mapped %t70 -endif9438: - %t71 = load i32, ptr %a16 - %t72 = icmp eq i32 %t71, 21 - br i1 %t72, label %then9439, label %endif9441 -then9439: - %t73 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6504, i64 3, i64 0 }) - %t74 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t73) - store %S.ast.Type %t73, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - ret %S.cimport.Mapped %t74 -endif9441: - %t76 = load i32, ptr %a16 - %t77 = icmp eq i32 %t76, 22 - br i1 %t77, label %then9442, label %endif9444 -then9442: - %t78 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6505, i64 5, i64 0 }) - %t79 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t78) - store %S.ast.Type %t78, ptr %a80 - call void @finch.drop.S_ast_Type(ptr %a80) - ret %S.cimport.Mapped %t79 -endif9444: - %t81 = load i32, ptr %a16 - %t82 = icmp eq i32 %t81, 101 - br i1 %t82, label %then9445, label %endif9447 -then9445: - %t85 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t85, ptr %a86 - call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a84, ptr byval(%S.C.CXType) align 8 %a86) - %t87 = load %S.C.CXType, ptr %a84 - store %S.C.CXType %t87, ptr %a88 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a83, ptr byval(%S.C.CXType) align 8 %a88) - %t89 = load %S.C.CXType, ptr %a83 - store %S.C.CXType %t89, ptr %a90 - %t91 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t92 = load i32, ptr %t91 - %t93 = icmp eq i32 %t92, 13 - br label %logic.from9448 -logic.from9448: - br i1 %t93, label %logic.end9450, label %logic.rhs9449 -logic.rhs9449: - %t94 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t95 = load i32, ptr %t94 - %t96 = icmp eq i32 %t95, 4 - br label %logic.rend9451 -logic.rend9451: - br label %logic.end9450 -logic.end9450: - %t97 = phi i1 [ true, %logic.from9448 ], [ %t96, %logic.rend9451 ] - br label %logic.from9452 -logic.from9452: - br i1 %t97, label %logic.rhs9453, label %logic.end9454 -logic.rhs9453: - %t98 = load i1, ptr %a3 - br label %logic.rend9455 -logic.rend9455: - br label %logic.end9454 -logic.end9454: - %t99 = phi i1 [ false, %logic.from9452 ], [ %t98, %logic.rend9455 ] - br i1 %t99, label %then9456, label %endif9458 -then9456: - %t100 = load i1, ptr %a4 - %t101 = xor i1 %t100, true - br label %logic.from9459 -logic.from9459: - br i1 %t101, label %logic.end9461, label %logic.rhs9460 -logic.rhs9460: - %t102 = load %S.C.CXType, ptr %a90 - store %S.C.CXType %t102, ptr %a103 - %t104 = call i32 @clang_isConstQualifiedType(ptr byval(%S.C.CXType) align 8 %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend9462 -logic.rend9462: - br label %logic.end9461 -logic.end9461: - %t106 = phi i1 [ true, %logic.from9459 ], [ %t105, %logic.rend9462 ] - br i1 %t106, label %then9463, label %endif9465 -then9463: - %t107 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6506, i64 3, i64 0 }) - %t108 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t107) - store %S.ast.Type %t107, ptr %a109 - call void @finch.drop.S_ast_Type(ptr %a109) - ret %S.cimport.Mapped %t108 -endif9465: - br label %endif9458 -endif9458: - %t110 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t111 = load i32, ptr %t110 - %t112 = icmp eq i32 %t111, 2 - br label %logic.from9466 -logic.from9466: - br i1 %t112, label %logic.end9468, label %logic.rhs9467 -logic.rhs9467: - %t113 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t114 = load i32, ptr %t113 - %t115 = icmp eq i32 %t114, 111 - br label %logic.rend9469 -logic.rend9469: - br label %logic.end9468 -logic.end9468: - %t116 = phi i1 [ true, %logic.from9466 ], [ %t115, %logic.rend9469 ] - br label %logic.from9470 -logic.from9470: - br i1 %t116, label %logic.end9472, label %logic.rhs9471 -logic.rhs9471: - %t117 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t118 = load i32, ptr %t117 - %t119 = icmp eq i32 %t118, 110 - br label %logic.rend9473 -logic.rend9473: - br label %logic.end9472 -logic.end9472: - %t120 = phi i1 [ true, %logic.from9470 ], [ %t119, %logic.rend9473 ] - br i1 %t120, label %then9474, label %endif9476 -then9474: - %t121 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6507, i64 3, i64 0 }) - %t122 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t121) - store %S.ast.Type %t121, ptr %a123 - call void @finch.drop.S_ast_Type(ptr %a123) - ret %S.cimport.Mapped %t122 -endif9476: - %t124 = load ptr, ptr %a1 - %t125 = load %S.C.CXType, ptr %a90 - %t126 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t124, %S.C.CXType %t125, i1 false, i1 false) - store %S.cimport.Mapped %t126, ptr %a127 - %t128 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 2 - %t129 = load i1, ptr %t128 - %t130 = xor i1 %t129, true - br label %logic.from9477 -logic.from9477: - br i1 %t130, label %logic.end9479, label %logic.rhs9478 -logic.rhs9478: - %t131 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.6508, 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.rend9480 -logic.rend9480: - br label %logic.end9479 -logic.end9479: - %t138 = phi i1 [ true, %logic.from9477 ], [ %t137, %logic.rend9480 ] - br label %logic.from9481 -logic.from9481: - br i1 %t138, label %logic.end9483, label %logic.rhs9482 -logic.rhs9482: - %t139 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t140 = getelementptr inbounds %S.ast.Type, ptr %t139, i32 0, i32 0 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6509, i64 5, i64 0 }, ptr %a143 - %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) - %t145 = icmp ne i32 %t144, 0 - br label %logic.rend9484 -logic.rend9484: - br label %logic.end9483 -logic.end9483: - %t146 = phi i1 [ true, %logic.from9481 ], [ %t145, %logic.rend9484 ] - br i1 %t146, label %then9485, label %endif9487 -then9485: - %t147 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6510, i64 3, i64 0 }) - %t148 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t147) - store %S.ast.Type %t147, ptr %a149 - call void @finch.drop.S_ast_Type(ptr %a149) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t148 -endif9487: - %t150 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t151) - %t153 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t152) - store %S.ast.Type %t152, ptr %a154 - call void @finch.drop.S_ast_Type(ptr %a154) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t153 -endif9447: - %t155 = load i32, ptr %a16 - %t156 = icmp eq i32 %t155, 105 - br i1 %t156, label %then9488, label %endif9490 -then9488: - %t158 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t158, ptr %a159 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a157, ptr byval(%S.C.CXType) align 8 %a159) - %t160 = load %S.C.CXCursor, ptr %a157 - store %S.C.CXCursor %t160, ptr %a161 - %t162 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a161) - %t163 = icmp eq i32 %t162, 3 - br i1 %t163, label %then9491, label %endif9493 -then9491: - %t164 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6511, i64 23, i64 0 }) - ret %S.cimport.Mapped %t164 -endif9493: - %t165 = load ptr, ptr %a1 - %t166 = load %S.C.CXType, ptr %a9 - %t167 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t165, %S.C.CXType %t166) - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = icmp eq i64 %t170, 0 - br i1 %t171, label %then9494, label %endif9496 -then9494: - %t172 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6512, i64 36, i64 0 }) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t172 -endif9496: - %t173 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6513, i64 5, i64 0 }, 0 - %t174 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t174, ptr %a175 - call void @finch_str_copy(ptr %a176, ptr %a175) - %t177 = load { ptr, i64, i64 }, ptr %a176 - %t178 = insertvalue %S.ast.Type %t173, { ptr, i64, i64 } %t177, 2 - %t179 = insertvalue %S.ast.Type %t178, { ptr, i64, i64 } { ptr @.str.6514, i64 1, i64 0 }, 3 - %t180 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t179) - store %S.ast.Type %t179, ptr %a181 - call void @finch.drop.S_ast_Type(ptr %a181) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t180 -endif9490: - %t182 = load i32, ptr %a16 - %t183 = icmp eq i32 %t182, 112 - br i1 %t183, label %then9497, label %endif9499 -then9497: - %t184 = load ptr, ptr %a1 - %t186 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t186, ptr %a187 - call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a185, ptr byval(%S.C.CXType) align 8 %a187) - %t188 = load %S.C.CXType, ptr %a185 - %t189 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t184, %S.C.CXType %t188, i1 false, i1 false) - store %S.cimport.Mapped %t189, ptr %a190 - %t191 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 2 - %t192 = load i1, ptr %t191 - %t193 = xor i1 %t192, true - br i1 %t193, label %then9500, label %endif9502 -then9500: - %t194 = load %S.cimport.Mapped, ptr %a190 - ret %S.cimport.Mapped %t194 -endif9502: - %t195 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t197, ptr %a198 - %t199 = call i64 @clang_getArraySize(ptr byval(%S.C.CXType) align 8 %a198) - %t200 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t196, i64 %t199) - %t201 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t200) - store %S.ast.Type %t200, ptr %a202 - call void @finch.drop.S_ast_Type(ptr %a202) - call void @finch.drop.S_cimport_Mapped(ptr %a190) - ret %S.cimport.Mapped %t201 -endif9499: - %t203 = load i32, ptr %a16 - %t204 = icmp eq i32 %t203, 23 - br i1 %t204, label %then9503, label %endif9505 -then9503: - %t205 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }) - ret %S.cimport.Mapped %t205 -endif9505: - %t206 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t206, ptr %a207 - %t208 = call { i64, i64 } @clang_getTypeSpelling(ptr byval(%S.C.CXType) align 8 %a207) - store { i64, i64 } %t208, ptr %a209 - %t210 = load %S.C.CXString, ptr %a209 - %t211 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t210) - store { ptr, i64, i64 } { ptr @.str.6516, i64 17, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.6517, i64 1, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t221) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - ret %S.cimport.Mapped %t222 -} - -define internal %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %p0) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a49 = alloca i1, align 16 - %a50 = alloca i64, align 16 - %a62 = alloca i8, align 16 - %a63 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6519, 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.from9506 -logic.from9506: - br i1 %t13, label %logic.end9508, label %logic.rhs9507 -logic.rhs9507: - %t14 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6521, 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.rend9509 -logic.rend9509: - br label %logic.end9508 -logic.end9508: - %t20 = phi i1 [ true, %logic.from9506 ], [ %t19, %logic.rend9509 ] - br i1 %t20, label %then9510, label %else9511 -then9510: - 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.6522, i64 331) - %t26 = load { ptr, i64, i64 }, ptr %a23 - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t26, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif9512 -else9511: - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = icmp sgt i64 %t30, 1 - br label %logic.from9513 -logic.from9513: - br i1 %t31, label %logic.rhs9514, label %logic.end9515 -logic.rhs9514: - %t32 = load { ptr, i64, i64 }, ptr %a6 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 0, %t33 - br i1 %t34, label %range9516, label %inrange9517 -range9516: - call void @finch_panic_index(ptr @.str.6523, i64 332, i64 0, i64 %t33) - unreachable -inrange9517: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds i8, ptr %t35, i64 0 - %t37 = load i8, ptr %t36 - %t38 = icmp eq i8 %t37, 48 - br label %logic.rend9518 -logic.rend9518: - br label %logic.end9515 -logic.end9515: - %t39 = phi i1 [ false, %logic.from9513 ], [ %t38, %logic.rend9518 ] - br i1 %t39, label %then9519, label %endif9521 -then9519: - store i64 8, ptr %a7 - %t40 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t40, ptr %a41 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t44 = load i64, ptr %t43 - call void @finch_str_sub(ptr %a42, ptr %a41, i64 1, i64 %t44, ptr @.str.6524, i64 334) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t45, ptr %a6 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif9521 -endif9521: - br label %endif9512 -endif9512: - store i64 0, ptr %a48 - store i1 false, ptr %a49 - store i64 0, ptr %a50 - br label %while.cond9522 -while.cond9522: - %t51 = load i64, ptr %a50 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t53 = load i64, ptr %t52 - %t54 = icmp slt i64 %t51, %t53 - br i1 %t54, label %while.body9523, label %while.end9524 -while.body9523: - %t55 = load i64, ptr %a50 - %t56 = load { ptr, i64, i64 }, ptr %a6 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range9525, label %inrange9526 -range9525: - call void @finch_panic_index(ptr @.str.6525, i64 340, i64 %t55, i64 %t57) - unreachable -inrange9526: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds i8, ptr %t59, i64 %t55 - %t61 = load i8, ptr %t60 - store i8 %t61, ptr %a62 - store i64 99, ptr %a63 - %t64 = load i8, ptr %a62 - %t65 = icmp uge i8 %t64, 48 - br label %logic.from9527 -logic.from9527: - br i1 %t65, label %logic.rhs9528, label %logic.end9529 -logic.rhs9528: - %t66 = load i8, ptr %a62 - %t67 = icmp ule i8 %t66, 57 - br label %logic.rend9530 -logic.rend9530: - br label %logic.end9529 -logic.end9529: - %t68 = phi i1 [ false, %logic.from9527 ], [ %t67, %logic.rend9530 ] - br i1 %t68, label %then9531, label %else9532 -then9531: - %t69 = load i8, ptr %a62 - %t70 = zext i8 %t69 to i64 - %t71 = zext i8 48 to i64 - %t72 = sub i64 %t70, %t71 - store i64 %t72, ptr %a63 - br label %endif9533 -else9532: - %t73 = load i8, ptr %a62 - %t74 = icmp uge i8 %t73, 97 - br label %logic.from9534 -logic.from9534: - br i1 %t74, label %logic.rhs9535, label %logic.end9536 -logic.rhs9535: - %t75 = load i8, ptr %a62 - %t76 = icmp ule i8 %t75, 102 - br label %logic.rend9537 -logic.rend9537: - br label %logic.end9536 -logic.end9536: - %t77 = phi i1 [ false, %logic.from9534 ], [ %t76, %logic.rend9537 ] - br i1 %t77, label %then9538, label %else9539 -then9538: - %t78 = load i8, ptr %a62 - %t79 = zext i8 %t78 to i64 - %t80 = zext i8 97 to i64 - %t81 = sub i64 %t79, %t80 - %t82 = add i64 %t81, 10 - store i64 %t82, ptr %a63 - br label %endif9540 -else9539: - %t83 = load i8, ptr %a62 - %t84 = icmp uge i8 %t83, 65 - br label %logic.from9541 -logic.from9541: - br i1 %t84, label %logic.rhs9542, label %logic.end9543 -logic.rhs9542: - %t85 = load i8, ptr %a62 - %t86 = icmp ule i8 %t85, 70 - br label %logic.rend9544 -logic.rend9544: - br label %logic.end9543 -logic.end9543: - %t87 = phi i1 [ false, %logic.from9541 ], [ %t86, %logic.rend9544 ] - br i1 %t87, label %then9545, label %endif9547 -then9545: - %t88 = load i8, ptr %a62 - %t89 = zext i8 %t88 to i64 - %t90 = zext i8 65 to i64 - %t91 = sub i64 %t89, %t90 - %t92 = add i64 %t91, 10 - store i64 %t92, ptr %a63 - br label %endif9547 -endif9547: - br label %endif9540 -endif9540: - br label %endif9533 -endif9533: - %t93 = load i64, ptr %a63 - %t94 = load i64, ptr %a7 - %t95 = icmp sge i64 %t93, %t94 - br i1 %t95, label %then9548, label %endif9550 -then9548: - br label %while.end9524 -endif9550: - %t96 = load i64, ptr %a48 - %t97 = load i64, ptr %a7 - %t98 = mul i64 %t96, %t97 - %t99 = load i64, ptr %a63 - %t100 = add i64 %t98, %t99 - store i64 %t100, ptr %a48 - store i1 true, ptr %a49 - %t101 = load i64, ptr %a50 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %a50 - br label %while.cond9522 -while.end9524: - br label %while.cond9551 -while.cond9551: - %t103 = load i64, ptr %a50 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp slt i64 %t103, %t105 - br i1 %t106, label %while.body9552, label %while.end9553 -while.body9552: - store { ptr, i64, i64 } { ptr @.str.6526, i64 4, i64 0 }, ptr %a107 - %t109 = load i64, ptr %a50 - %t110 = load { ptr, i64, i64 }, ptr %a6 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range9554, label %inrange9555 -range9554: - call void @finch_panic_index(ptr @.str.6528, i64 358, i64 %t109, i64 %t111) - unreachable -inrange9555: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds i8, ptr %t113, i64 %t109 - %t115 = load i8, ptr %t114 - call void @finch_str_from_char(ptr %a116, i8 signext %t115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t117, ptr %a118 - %t119 = call i64 @finch_str_find(ptr %a107, ptr %a118) - %t120 = icmp sge i64 %t119, 0 - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = xor i1 %t120, true - br i1 %t122, label %then9556, label %endif9558 -then9556: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9558: - %t123 = load i64, ptr %a50 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a50 - br label %while.cond9551 -while.end9553: - %t125 = load i1, ptr %a49 - %t126 = xor i1 %t125, true - br label %logic.from9559 -logic.from9559: - br i1 %t126, label %logic.rhs9560, label %logic.end9561 -logic.rhs9560: - %t127 = load i64, ptr %a7 - %t128 = icmp ne i64 %t127, 8 - br label %logic.rend9562 -logic.rend9562: - br label %logic.end9561 -logic.end9561: - %t129 = phi i1 [ false, %logic.from9559 ], [ %t128, %logic.rend9562 ] - br i1 %t129, label %then9563, label %endif9565 -then9563: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9565: - %t130 = load i64, ptr %a48 - %t131 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t130, 1 - %t132 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t131, 0 - %t133 = insertvalue %S.cimport.Number %t132, i1 true, 1 - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number %t133 -} - -define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) { -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 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca i1, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i1, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca double, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca double, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca %S.cimport.Number, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - store ptr null, ptr %a3 - store i32 0, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic9566, label %ok9567 -panic9566: - call void @finch_panic(ptr @.str.6529, i64 373, ptr @.str.6530) - unreachable -ok9567: - %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 byval(%S.C.CXCursor) align 8 %a11) - %t12 = load %S.C.CXSourceRange, ptr %a9 - store %S.C.CXSourceRange %t12, ptr %a13 - call void @clang_tokenize(ptr %t8, ptr byval(%S.C.CXSourceRange) align 8 %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.cond9568 -for.cond9568: - %t18 = load i64, ptr %a17 - %t19 = icmp slt i64 %t18, %t16 - br i1 %t19, label %for.body9569, label %for.end9571 -for.body9569: - %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 byval(%S.C.CXToken) align 8 %a24) - %t26 = icmp eq i32 %t25, 4 - br i1 %t26, label %then9572, label %endif9574 -then9572: - br label %for.step9570 -endif9574: - %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 %panic9575, label %ok9576 -panic9575: - call void @finch_panic(ptr @.str.6531, i64 379, ptr @.str.6532) - unreachable -ok9576: - %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 { i64, i64 } @clang_getTokenSpelling(ptr %t31, ptr byval(%S.C.CXToken) align 8 %a36) - store { i64, 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.step9570 -for.step9570: - %t45 = load i64, ptr %a17 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a17 - br label %for.cond9568 -for.end9571: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic9577, label %ok9578 -panic9577: - call void @finch_panic(ptr @.str.6533, i64 381, ptr @.str.6534) - unreachable -ok9578: - %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.cond9579 -while.cond9579: - %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.from9582 -logic.from9582: - br i1 %t55, label %logic.rhs9583, label %logic.end9584 -logic.rhs9583: - %t56 = load { ptr, i64, i64 }, ptr %a14 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 0, %t57 - br i1 %t58, label %range9585, label %inrange9586 -range9585: - call void @finch_panic_index(ptr @.str.6535, i64 383, i64 0, i64 %t57) - unreachable -inrange9586: - %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.6536, 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.rend9587 -logic.rend9587: - br label %logic.end9584 -logic.end9584: - %t66 = phi i1 [ false, %logic.from9582 ], [ %t65, %logic.rend9587 ] - br label %logic.from9588 -logic.from9588: - br i1 %t66, label %logic.rhs9589, label %logic.end9590 -logic.rhs9589: - %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 %range9591, label %inrange9592 -range9591: - call void @finch_panic_index(ptr @.str.6537, i64 383, i64 %t69, i64 %t71) - unreachable -inrange9592: - %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.6538, 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.rend9593 -logic.rend9593: - br label %logic.end9590 -logic.end9590: - %t80 = phi i1 [ false, %logic.from9588 ], [ %t79, %logic.rend9593 ] - br i1 %t80, label %while.body9580, label %while.end9581 -while.body9580: - %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 %range9594, label %inrange9595 -range9594: - call void @finch_panic_index(ptr @.str.6539, i64 384, i64 0, i64 %t82) - unreachable -inrange9595: - %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)) - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, 0 - br i1 %t90, label %panic9596, label %ok9597 -panic9596: - call void @finch_panic(ptr @.str.6540, i64 385, ptr @.str.6541) - unreachable -ok9597: - %t91 = sub i64 %t89, 1 - %t92 = load ptr, ptr %a14 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t91 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store i64 %t91, ptr %t88 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %while.cond9579 -while.end9581: - store i1 false, ptr %a96 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = icmp eq i64 %t98, 2 - br label %logic.from9598 -logic.from9598: - br i1 %t99, label %logic.rhs9599, label %logic.end9600 -logic.rhs9599: - %t100 = load { ptr, i64, i64 }, ptr %a14 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 0, %t101 - br i1 %t102, label %range9601, label %inrange9602 -range9601: - call void @finch_panic_index(ptr @.str.6542, i64 388, i64 0, i64 %t101) - unreachable -inrange9602: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 0 - %t105 = load { ptr, i64, i64 }, ptr %t104 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.6543, i64 1, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.rend9603 -logic.rend9603: - br label %logic.end9600 -logic.end9600: - %t110 = phi i1 [ false, %logic.from9598 ], [ %t109, %logic.rend9603 ] - br i1 %t110, label %then9604, label %endif9606 -then9604: - store i1 true, ptr %a96 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp uge i64 0, %t112 - br i1 %t113, label %range9607, label %inrange9608 -range9607: - call void @finch_panic_index(ptr @.str.6544, i64 390, i64 0, i64 %t112) - unreachable -inrange9608: - %t114 = load ptr, ptr %a14 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif9606 -endif9606: - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t119 = load i64, ptr %t118 - %t120 = icmp ne i64 %t119, 1 - br i1 %t120, label %then9609, label %endif9611 -then9609: - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9611: - %t121 = load { ptr, i64, i64 }, ptr %a14 - %t122 = extractvalue { ptr, i64, i64 } %t121, 1 - %t123 = icmp uge i64 0, %t122 - br i1 %t123, label %range9612, label %inrange9613 -range9612: - call void @finch_panic_index(ptr @.str.6545, i64 395, i64 0, i64 %t122) - unreachable -inrange9613: - %t124 = extractvalue { ptr, i64, i64 } %t121, 0 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - call void @finch_str_copy(ptr %a128, ptr %a127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t132 = load i64, ptr %t131 - %t133 = icmp eq i64 %t132, 0 - br label %logic.from9614 -logic.from9614: - br i1 %t133, label %logic.end9616, label %logic.rhs9615 -logic.rhs9615: - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = extractvalue { ptr, i64, i64 } %t134, 1 - %t136 = icmp uge i64 0, %t135 - br i1 %t136, label %range9617, label %inrange9618 -range9617: - call void @finch_panic_index(ptr @.str.6546, i64 396, i64 0, i64 %t135) - unreachable -inrange9618: - %t137 = extractvalue { ptr, i64, i64 } %t134, 0 - %t138 = getelementptr inbounds i8, ptr %t137, i64 0 - %t139 = load i8, ptr %t138 - %t140 = icmp uge i8 %t139, 48 - br label %logic.from9619 -logic.from9619: - br i1 %t140, label %logic.rhs9620, label %logic.end9621 -logic.rhs9620: - %t141 = load { ptr, i64, i64 }, ptr %a130 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range9622, label %inrange9623 -range9622: - call void @finch_panic_index(ptr @.str.6547, i64 396, i64 0, i64 %t142) - unreachable -inrange9623: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds i8, ptr %t144, i64 0 - %t146 = load i8, ptr %t145 - %t147 = icmp ule i8 %t146, 57 - br label %logic.rend9624 -logic.rend9624: - br label %logic.end9621 -logic.end9621: - %t148 = phi i1 [ false, %logic.from9619 ], [ %t147, %logic.rend9624 ] - br label %logic.from9625 -logic.from9625: - br i1 %t148, label %logic.end9627, label %logic.rhs9626 -logic.rhs9626: - %t149 = load { ptr, i64, i64 }, ptr %a130 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 0, %t150 - br i1 %t151, label %range9628, label %inrange9629 -range9628: - call void @finch_panic_index(ptr @.str.6548, i64 396, i64 0, i64 %t150) - unreachable -inrange9629: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds i8, ptr %t152, i64 0 - %t154 = load i8, ptr %t153 - %t155 = icmp eq i8 %t154, 46 - br label %logic.rend9630 -logic.rend9630: - br label %logic.end9627 -logic.end9627: - %t156 = phi i1 [ true, %logic.from9625 ], [ %t155, %logic.rend9630 ] - %t157 = xor i1 %t156, true - br label %logic.rend9631 -logic.rend9631: - br label %logic.end9616 -logic.end9616: - %t158 = phi i1 [ true, %logic.from9614 ], [ %t157, %logic.rend9631 ] - br i1 %t158, label %then9632, label %endif9634 -then9632: - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9634: - %t159 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.6550, i64 1, i64 0 }, ptr %a162 - %t163 = call i64 @finch_str_find(ptr %a160, ptr %a162) - %t164 = icmp sge i64 %t163, 0 - br label %logic.from9635 -logic.from9635: - br i1 %t164, label %logic.end9637, label %logic.rhs9636 -logic.rhs9636: - %t165 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.6552, i64 1, i64 0 }, ptr %a168 - %t169 = call i64 @finch_str_find(ptr %a166, ptr %a168) - %t170 = icmp sge i64 %t169, 0 - br label %logic.rend9638 -logic.rend9638: - br label %logic.end9637 -logic.end9637: - %t171 = phi i1 [ true, %logic.from9635 ], [ %t170, %logic.rend9638 ] - br label %logic.from9639 -logic.from9639: - br i1 %t171, label %logic.end9641, label %logic.rhs9640 -logic.rhs9640: - %t172 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6554, i64 1, i64 0 }, ptr %a175 - %t176 = call i64 @finch_str_find(ptr %a173, ptr %a175) - %t177 = icmp sge i64 %t176, 0 - br label %logic.rend9642 -logic.rend9642: - br label %logic.end9641 -logic.end9641: - %t178 = phi i1 [ true, %logic.from9639 ], [ %t177, %logic.rend9642 ] - br label %logic.from9643 -logic.from9643: - br i1 %t178, label %logic.rhs9644, label %logic.end9645 -logic.rhs9644: - %t179 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.6556, i64 2, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_starts(ptr %a180, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - %t185 = xor i1 %t184, true - br label %logic.rend9646 -logic.rend9646: - br label %logic.end9645 -logic.end9645: - %t186 = phi i1 [ false, %logic.from9643 ], [ %t185, %logic.rend9646 ] - store i1 %t186, ptr %a187 - %t188 = load i1, ptr %a187 - br i1 %t188, label %then9647, label %endif9649 -then9647: - %t189 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_copy(ptr %a191, ptr %a190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t192, ptr %a193 - br label %while.cond9650 -while.cond9650: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t195 = load i64, ptr %t194 - %t196 = icmp sgt i64 %t195, 0 - br label %logic.from9653 -logic.from9653: - br i1 %t196, label %logic.rhs9654, label %logic.end9655 -logic.rhs9654: - store { ptr, i64, i64 } { ptr @.str.6557, i64 4, i64 0 }, ptr %a197 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = sub i64 %t200, 1 - %t202 = load { ptr, i64, i64 }, ptr %a193 - %t203 = extractvalue { ptr, i64, i64 } %t202, 1 - %t204 = icmp uge i64 %t201, %t203 - br i1 %t204, label %range9656, label %inrange9657 -range9656: - call void @finch_panic_index(ptr @.str.6559, i64 402, i64 %t201, i64 %t203) - unreachable -inrange9657: - %t205 = extractvalue { ptr, i64, i64 } %t202, 0 - %t206 = getelementptr inbounds i8, ptr %t205, i64 %t201 - %t207 = load i8, ptr %t206 - call void @finch_str_from_char(ptr %a208, i8 signext %t207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = call i64 @finch_str_find(ptr %a197, ptr %a210) - %t212 = icmp sge i64 %t211, 0 - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %logic.rend9658 -logic.rend9658: - br label %logic.end9655 -logic.end9655: - %t214 = phi i1 [ false, %logic.from9653 ], [ %t212, %logic.rend9658 ] - br i1 %t214, label %while.body9651, label %while.end9652 -while.body9651: - %t215 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t215, ptr %a216 - %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t219 = load i64, ptr %t218 - %t220 = sub i64 %t219, 1 - call void @finch_str_sub(ptr %a217, ptr %a216, i64 0, i64 %t220, ptr @.str.6560, i64 403) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t221, ptr %a193 - store { ptr, i64, i64 } %t222, ptr %a223 - call void @finch_str_drop(ptr %a223) - br label %while.cond9650 -while.end9652: - %t224 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - store double 0.0, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - %t228 = call i32 @finch_str_try_float(ptr %a227, ptr %a226, ptr %a225) - %t229 = icmp eq i32 %t228, 0 - %t230 = load { ptr, i64, i64 }, ptr %a225 - %t231 = load double, ptr %a226 - br i1 %t229, label %or.failed9659, label %or.ok9660 -or.failed9659: - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a193) - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -or.ok9660: - store double %t231, ptr %a233 - %t234 = load i1, ptr %a96 - br i1 %t234, label %then9661, label %endif9663 -then9661: - %t235 = load double, ptr %a233 - %t236 = fsub double 0.0, %t235 - store double %t236, ptr %a233 - br label %endif9663 -endif9663: - %t237 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 - %t238 = load double, ptr %a233 - %t239 = insertvalue %S.cimport.CConst %t237, double %t238, 2 - %t240 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_copy(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = insertvalue %S.cimport.CConst %t239, { ptr, i64, i64 } %t243, 3 - %t245 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t244, 0 - %t246 = insertvalue %S.cimport.Number %t245, i1 true, 1 - call void @finch_str_drop(ptr %a193) - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t246 -endif9649: - %t247 = load { ptr, i64, i64 }, ptr %a130 - %t248 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t247) - store %S.cimport.Number %t248, ptr %a249 - %t250 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.from9664 -logic.from9664: - br i1 %t251, label %logic.rhs9665, label %logic.end9666 -logic.rhs9665: - %t252 = load i1, ptr %a96 - br label %logic.rend9667 -logic.rend9667: - br label %logic.end9666 -logic.end9666: - %t253 = phi i1 [ false, %logic.from9664 ], [ %t252, %logic.rend9667 ] - br i1 %t253, label %then9668, label %endif9670 -then9668: - %t254 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 - %t255 = getelementptr inbounds %S.cimport.CConst, ptr %t254, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = sub i64 0, %t256 - %t258 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 - %t259 = getelementptr inbounds %S.cimport.CConst, ptr %t258, i32 0, i32 1 - store i64 %t257, ptr %t259 - br label %endif9670 -endif9670: - %t260 = load %S.cimport.Number, ptr %a249 - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t260 -} - -define internal i32 @finch.cimport.visitTop(%S.C.CXCursor %p0, %S.C.CXCursor %p1, ptr %p2) { -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 byval(%S.C.CXCursor) align 8 %c0, ptr byval(%S.C.CXCursor) align 8 %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.drop.S_cimport_Number(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Number, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CConst(ptr %t1) - ret void -} - -define internal void @finch.cimport.visit(ptr %p0, %S.C.CXCursor %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca %S.cimport.CFunc, align 16 - %a125 = alloca %S.C.CXCursor, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i32, align 16 - %a148 = alloca %S.cimport.CFunc, align 16 - %a149 = alloca %S.cimport.CFunc, align 16 - %a152 = alloca %S.cimport.CFunc, align 16 - %a153 = alloca %S.C.CXType, align 16 - %a154 = alloca %S.C.CXType, align 16 - %a156 = alloca %S.C.CXCursor, align 16 - %a158 = alloca %S.C.CXType, align 16 - %a160 = alloca %S.C.CXType, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i32, align 16 - %a184 = alloca %S.cimport.CFunc, align 16 - %a185 = alloca %S.cimport.CFunc, align 16 - %a188 = alloca %S.cimport.CFunc, align 16 - %a190 = alloca %S.C.CXType, align 16 - %a192 = alloca %S.C.CXType, align 16 - %a195 = alloca %S.cimport.Mapped, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca %S.C.CXType, align 16 - %a218 = alloca i64, align 16 - %a220 = alloca i64, align 16 - %a228 = alloca %S.C.CXType, align 16 - %a230 = alloca %S.C.CXType, align 16 - %a235 = alloca %S.cimport.Mapped, align 16 - %a242 = alloca %S.ast.Type, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca %S.C.CXType, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca i32, align 16 - %a281 = alloca %S.cimport.CFunc, align 16 - %a282 = alloca %S.cimport.CFunc, align 16 - %a285 = alloca %S.cimport.CFunc, align 16 - %a289 = alloca %S.C.CXCursor, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca %S.C.CXType, align 16 - %a304 = alloca %S.C.CXCursor, align 16 - %a307 = alloca %S.cimport.Mapped, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca i32, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a332 = alloca %S.ast.Type, align 16 - %a336 = alloca %S.C.CXCursor, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca %S.C.CXCursor, align 16 - %a354 = alloca [32 x i8], align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca i32, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca %S.C.CXCursor, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca %S.C.CXCursor, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca i32, align 16 - %a425 = alloca %S.cimport.CConst, align 16 - %a429 = alloca %S.C.CXCursor, align 16 - %a433 = alloca %S.C.CXCursor, align 16 - %a440 = alloca %S.cimport.Number, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca i32, align 16 - %a471 = alloca %S.cimport.CConst, align 16 - %a472 = alloca %S.cimport.CConst, align 16 - %a475 = alloca %S.cimport.CConst, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - %t3 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t3, ptr %a4 - %t5 = call { i64, i64 } @clang_getCursorSpelling(ptr byval(%S.C.CXCursor) align 8 %a4) - store { i64, 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 byval(%S.C.CXCursor) align 8 %a11) - store i32 %t12, ptr %a13 - %t14 = load i32, ptr %a13 - %t15 = icmp eq i32 %t14, 20 - br i1 %t15, label %then9671, label %else9672 -then9671: - %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) - %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 byval(%S.C.CXType) align 8 %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 %then9674, label %endif9676 -then9674: - %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) - %t30 = load %S.C.CXCursor, ptr %a27 - store %S.C.CXCursor %t30, ptr %a31 - %t32 = call { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a31) - store { i64, 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 %panic9677, label %ok9678 -panic9677: - call void @finch_panic(ptr @.str.6561, i64 437, ptr @.str.6562) - unreachable -ok9678: - %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.from9679 -logic.from9679: - br i1 %t43, label %logic.rhs9680, label %logic.end9681 -logic.rhs9680: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic9682, label %ok9683 -panic9682: - call void @finch_panic(ptr @.str.6563, i64 437, ptr @.str.6564) - unreachable -ok9683: - %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 %panic9684, label %ok9685 -panic9684: - call void @finch_panic(ptr @.str.6565, i64 437, ptr @.str.6566) - unreachable -ok9685: - %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.missing9686, label %map.found9687 -map.missing9686: - 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.6567, i64 437, ptr %a55) - unreachable -map.found9687: - %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.rend9688 -logic.rend9688: - br label %logic.end9681 -logic.end9681: - %t65 = phi i1 [ false, %logic.from9679 ], [ %t64, %logic.rend9688 ] - store i1 %t65, ptr %a66 - %t67 = load i1, ptr %a66 - %t68 = xor i1 %t67, true - br label %logic.from9689 -logic.from9689: - br i1 %t68, label %logic.rhs9690, label %logic.end9691 -logic.rhs9690: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic9692, label %ok9693 -panic9692: - call void @finch_panic(ptr @.str.6568, i64 438, ptr @.str.6569) - unreachable -ok9693: - %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.rend9694 -logic.rend9694: - br label %logic.end9691 -logic.end9691: - %t78 = phi i1 [ false, %logic.from9689 ], [ %t77, %logic.rend9694 ] - br i1 %t78, label %then9695, label %endif9697 -then9695: - %t79 = load { ptr, i64, i64 }, ptr %a9 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9698, label %ok9699 -panic9698: - call void @finch_panic(ptr @.str.6570, i64 439, ptr @.str.6571) - unreachable -ok9699: - %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.new9700, label %map.have9701 -map.new9700: - %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.have9701 -map.have9701: - %t94 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2 - store { ptr, i64, i64 } %t79, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif9697 -endif9697: - call void @finch_str_drop(ptr %a36) - br label %endif9676 -endif9676: - br label %endif9673 -else9672: - %t100 = load i32, ptr %a13 - %t101 = icmp eq i32 %t100, 8 - br i1 %t101, label %then9702, label %else9703 -then9702: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic9705, label %ok9706 -panic9705: - call void @finch_panic(ptr @.str.6572, i64 443, ptr @.str.6573) - unreachable -ok9706: - %t104 = getelementptr inbounds %S.cimport.Importer, ptr %t102, i32 0, i32 0 - %t105 = getelementptr inbounds %S.cimport.CImports, ptr %t104, i32 0, i32 0 - %t106 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = call i64 @finch_map_find(ptr %t105, ptr %a107, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t109 = icmp sge i64 %t108, 0 - br i1 %t109, label %then9707, label %endif9709 -then9707: - call void @finch_str_drop(ptr %a9) - ret void -endif9709: - %t110 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = insertvalue %S.cimport.CFunc zeroinitializer, { ptr, i64, i64 } %t113, 0 - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic9710, label %ok9711 -panic9710: - call void @finch_panic(ptr @.str.6574, i64 446, ptr @.str.6575) - unreachable -ok9711: - %t117 = getelementptr inbounds %S.cimport.Importer, ptr %t115, i32 0, i32 2 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.cimport.CFunc %t114, { ptr, i64, i64 } %t121, 1 - store %S.cimport.CFunc %t122, ptr %a123 - %t124 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t124, ptr %a125 - %t126 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a125) - %t127 = icmp eq i32 %t126, 3 - br i1 %t127, label %then9712, label %endif9714 -then9712: - %t128 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } { ptr @.str.6576, i64 62, i64 0 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.cimport.CFunc, ptr %a123 - %t132 = load ptr, ptr %a1 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic9715, label %ok9716 -panic9715: - call void @finch_panic(ptr @.str.6577, i64 449, ptr @.str.6578) - unreachable -ok9716: - %t134 = getelementptr inbounds %S.cimport.Importer, ptr %t132, i32 0, i32 0 - %t135 = getelementptr inbounds %S.cimport.CImports, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t136, ptr %a137 - store i32 0, ptr %a138 - %t139 = call i64 @finch_map_slot(ptr %t135, ptr %a137, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a138) - %t140 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t135, i32 0, i32 0 - %t141 = load ptr, ptr %t140 - %t142 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t141, i64 %t139 - %t143 = load i32, ptr %a138 - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %map.new9717, label %map.have9718 -map.new9717: - %t145 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 1 - call void @finch_str_copy(ptr %t145, ptr %a137) - %t146 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t146 - br label %map.have9718 -map.have9718: - %t147 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 - store %S.cimport.CFunc %t131, ptr %a148 - call void @finch.copy.S_cimport_CFunc(ptr %a149, ptr %a148) - %t150 = load %S.cimport.CFunc, ptr %a149 - %t151 = load %S.cimport.CFunc, ptr %t147 - store %S.cimport.CFunc %t150, ptr %t147 - store %S.cimport.CFunc %t151, ptr %a152 - call void @finch.drop.S_cimport_CFunc(ptr %a152) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - call void @finch_str_drop(ptr %a9) - ret void -endif9714: - %t155 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t155, ptr %a156 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a154, ptr byval(%S.C.CXCursor) align 8 %a156) - %t157 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t157, ptr %a158 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a153, ptr byval(%S.C.CXType) align 8 %a158) - %t159 = load %S.C.CXType, ptr %a153 - store %S.C.CXType %t159, ptr %a160 - %t161 = getelementptr inbounds %S.C.CXType, ptr %a160, i32 0, i32 0 - %t162 = load i32, ptr %t161 - %t163 = icmp eq i32 %t162, 110 - br i1 %t163, label %then9719, label %endif9721 -then9719: - %t164 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } { ptr @.str.6579, i64 42, i64 0 }, ptr %t164 - store { ptr, i64, i64 } %t165, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load %S.cimport.CFunc, ptr %a123 - %t168 = load ptr, ptr %a1 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic9722, label %ok9723 -panic9722: - call void @finch_panic(ptr @.str.6580, i64 455, ptr @.str.6581) - unreachable -ok9723: - %t170 = getelementptr inbounds %S.cimport.Importer, ptr %t168, i32 0, i32 0 - %t171 = getelementptr inbounds %S.cimport.CImports, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t172, ptr %a173 - store i32 0, ptr %a174 - %t175 = call i64 @finch_map_slot(ptr %t171, ptr %a173, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a174) - %t176 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t171, i32 0, i32 0 - %t177 = load ptr, ptr %t176 - %t178 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t177, i64 %t175 - %t179 = load i32, ptr %a174 - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %map.new9724, label %map.have9725 -map.new9724: - %t181 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 1 - call void @finch_str_copy(ptr %t181, ptr %a173) - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t182 - br label %map.have9725 -map.have9725: - %t183 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 - store %S.cimport.CFunc %t167, ptr %a184 - call void @finch.copy.S_cimport_CFunc(ptr %a185, ptr %a184) - %t186 = load %S.cimport.CFunc, ptr %a185 - %t187 = load %S.cimport.CFunc, ptr %t183 - store %S.cimport.CFunc %t186, ptr %t183 - store %S.cimport.CFunc %t187, ptr %a188 - call void @finch.drop.S_cimport_CFunc(ptr %a188) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - call void @finch_str_drop(ptr %a9) - ret void -endif9721: - %t189 = load ptr, ptr %a1 - %t191 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t191, ptr %a192 - call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a190, ptr byval(%S.C.CXType) align 8 %a192) - %t193 = load %S.C.CXType, ptr %a190 - %t194 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t189, %S.C.CXType %t193, i1 true, i1 false) - store %S.cimport.Mapped %t194, ptr %a195 - %t196 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 2 - %t197 = load i1, ptr %t196 - br i1 %t197, label %then9726, label %else9727 -then9726: - %t198 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 0 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 2 - store %S.ast.Type %t199, ptr %a201 - call void @finch.copy.S_ast_Type(ptr %a202, ptr %a201) - %t203 = load %S.ast.Type, ptr %a202 - %t204 = load %S.ast.Type, ptr %t200 - store %S.ast.Type %t203, ptr %t200 - store %S.ast.Type %t204, ptr %a205 - call void @finch.drop.S_ast_Type(ptr %a205) - br label %endif9728 -else9727: - %t206 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 1 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_copy(ptr %a210, ptr %a209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - %t212 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t211, ptr %t208 - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif9728 -endif9728: - %t214 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t214, ptr %a215 - %t216 = call i32 @clang_getNumArgTypes(ptr byval(%S.C.CXType) align 8 %a215) - %t217 = sext i32 %t216 to i64 - store i64 %t217, ptr %a218 - %t219 = load i64, ptr %a218 - store i64 0, ptr %a220 - br label %for.cond9729 -for.cond9729: - %t221 = load i64, ptr %a220 - %t222 = icmp slt i64 %t221, %t219 - br i1 %t222, label %for.body9730, label %for.end9732 -for.body9730: - %t223 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp sgt i64 %t225, 0 - br i1 %t226, label %then9733, label %endif9735 -then9733: - br label %for.end9732 -endif9735: - %t227 = load ptr, ptr %a1 - %t229 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t229, ptr %a230 - %t231 = load i64, ptr %a220 - %t232 = trunc i64 %t231 to i32 - call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a228, ptr byval(%S.C.CXType) align 8 %a230, i32 %t232) - %t233 = load %S.C.CXType, ptr %a228 - %t234 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t227, %S.C.CXType %t233, i1 true, i1 true) - store %S.cimport.Mapped %t234, ptr %a235 - %t236 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 2 - %t237 = load i1, ptr %t236 - br i1 %t237, label %then9736, label %else9737 -then9736: - %t238 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 3 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 - %t240 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 0 - %t241 = load %S.ast.Type, ptr %t240 - store %S.ast.Type %t241, ptr %a242 - call void @finch.copy.S_ast_Type(ptr %a243, ptr %a242) - %t244 = load %S.ast.Type, ptr %a243 - %t245 = load i64, ptr %t239 - %t246 = add i64 %t245, 1 - call void @finch_arr_reserve(ptr %t238, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t247 = load ptr, ptr %t238 - %t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i64 %t245 - store %S.ast.Type %t244, ptr %t248 - store i64 %t246, ptr %t239 - br label %endif9738 -else9737: - %t249 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 1 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - store { ptr, i64, i64 } %t250, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - %t255 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } %t254, ptr %t251 - store { ptr, i64, i64 } %t255, ptr %a256 - call void @finch_str_drop(ptr %a256) - br label %endif9738 -endif9738: - call void @finch.drop.S_cimport_Mapped(ptr %a235) - br label %for.step9731 -for.step9731: - %t257 = load i64, ptr %a220 - %t258 = add i64 %t257, 1 - store i64 %t258, ptr %a220 - br label %for.cond9729 -for.end9732: - %t259 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t259, ptr %a260 - %t261 = call i32 @clang_isFunctionTypeVariadic(ptr byval(%S.C.CXType) align 8 %a260) - %t262 = icmp ne i32 %t261, 0 - %t263 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 4 - store i1 %t262, ptr %t263 - %t264 = load %S.cimport.CFunc, ptr %a123 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic9739, label %ok9740 -panic9739: - call void @finch_panic(ptr @.str.6582, i64 477, ptr @.str.6583) - unreachable -ok9740: - %t267 = getelementptr inbounds %S.cimport.Importer, ptr %t265, i32 0, i32 0 - %t268 = getelementptr inbounds %S.cimport.CImports, ptr %t267, i32 0, i32 0 - %t269 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t269, ptr %a270 - store i32 0, ptr %a271 - %t272 = call i64 @finch_map_slot(ptr %t268, ptr %a270, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a271) - %t273 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t268, i32 0, i32 0 - %t274 = load ptr, ptr %t273 - %t275 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t274, i64 %t272 - %t276 = load i32, ptr %a271 - %t277 = icmp ne i32 %t276, 0 - br i1 %t277, label %map.new9741, label %map.have9742 -map.new9741: - %t278 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 1 - call void @finch_str_copy(ptr %t278, ptr %a270) - %t279 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t279 - br label %map.have9742 -map.have9742: - %t280 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 - store %S.cimport.CFunc %t264, ptr %a281 - call void @finch.copy.S_cimport_CFunc(ptr %a282, ptr %a281) - %t283 = load %S.cimport.CFunc, ptr %a282 - %t284 = load %S.cimport.CFunc, ptr %t280 - store %S.cimport.CFunc %t283, ptr %t280 - store %S.cimport.CFunc %t284, ptr %a285 - call void @finch.drop.S_cimport_CFunc(ptr %a285) - call void @finch.drop.S_cimport_Mapped(ptr %a195) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - br label %endif9704 -else9703: - %t286 = load i32, ptr %a13 - %t287 = icmp eq i32 %t286, 9 - br i1 %t287, label %then9743, label %else9744 -then9743: - %t288 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t288, ptr %a289 - %t290 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a289) - %t291 = icmp ne i32 %t290, 2 - br label %logic.from9746 -logic.from9746: - br i1 %t291, label %logic.end9748, label %logic.rhs9747 -logic.rhs9747: - %t292 = load ptr, ptr %a1 - %t293 = icmp eq ptr %t292, null - br i1 %t293, label %panic9749, label %ok9750 -panic9749: - call void @finch_panic(ptr @.str.6584, i64 479, ptr @.str.6585) - unreachable -ok9750: - %t294 = getelementptr inbounds %S.cimport.Importer, ptr %t292, i32 0, i32 0 - %t295 = getelementptr inbounds %S.cimport.CImports, ptr %t294, i32 0, i32 2 - %t296 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t296, ptr %a297 - %t298 = call i64 @finch_map_find(ptr %t295, ptr %a297, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t299 = icmp sge i64 %t298, 0 - br label %logic.rend9751 -logic.rend9751: - br label %logic.end9748 -logic.end9748: - %t300 = phi i1 [ true, %logic.from9746 ], [ %t299, %logic.rend9751 ] - br i1 %t300, label %then9752, label %endif9754 -then9752: - call void @finch_str_drop(ptr %a9) - ret void -endif9754: - %t301 = load ptr, ptr %a1 - %t303 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t303, ptr %a304 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a302, ptr byval(%S.C.CXCursor) align 8 %a304) - %t305 = load %S.C.CXType, ptr %a302 - %t306 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t301, %S.C.CXType %t305, i1 false, i1 false) - store %S.cimport.Mapped %t306, ptr %a307 - %t308 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 2 - %t309 = load i1, ptr %t308 - br i1 %t309, label %then9755, label %endif9757 -then9755: - %t310 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 0 - %t311 = load %S.ast.Type, ptr %t310 - %t312 = load ptr, ptr %a1 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic9758, label %ok9759 -panic9758: - call void @finch_panic(ptr @.str.6586, i64 484, ptr @.str.6587) - unreachable -ok9759: - %t314 = getelementptr inbounds %S.cimport.Importer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds %S.cimport.CImports, ptr %t314, i32 0, i32 2 - %t316 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t316, ptr %a317 - store i32 0, ptr %a318 - %t319 = call i64 @finch_map_slot(ptr %t315, ptr %a317, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a318) - %t320 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t315, i32 0, i32 0 - %t321 = load ptr, ptr %t320 - %t322 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t321, i64 %t319 - %t323 = load i32, ptr %a318 - %t324 = icmp ne i32 %t323, 0 - br i1 %t324, label %map.new9760, label %map.have9761 -map.new9760: - %t325 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 1 - call void @finch_str_copy(ptr %t325, ptr %a317) - %t326 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 - store %S.ast.Type zeroinitializer, ptr %t326 - br label %map.have9761 -map.have9761: - %t327 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 - store %S.ast.Type %t311, ptr %a328 - call void @finch.copy.S_ast_Type(ptr %a329, ptr %a328) - %t330 = load %S.ast.Type, ptr %a329 - %t331 = load %S.ast.Type, ptr %t327 - store %S.ast.Type %t330, ptr %t327 - store %S.ast.Type %t331, ptr %a332 - call void @finch.drop.S_ast_Type(ptr %a332) - br label %endif9757 -endif9757: - call void @finch.drop.S_cimport_Mapped(ptr %a307) - br label %endif9745 -else9744: - %t333 = load i32, ptr %a13 - %t334 = icmp eq i32 %t333, 2 - br i1 %t334, label %then9762, label %else9763 -then9762: - %t335 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t335, ptr %a336 - %t337 = call i32 @clang_isCursorDefinition(ptr byval(%S.C.CXCursor) align 8 %a336) - %t338 = icmp ne i32 %t337, 0 - br label %logic.from9765 -logic.from9765: - br i1 %t338, label %logic.rhs9766, label %logic.end9767 -logic.rhs9766: - %t339 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t340 = load i64, ptr %t339 - %t341 = icmp sgt i64 %t340, 0 - br label %logic.rend9768 -logic.rend9768: - br label %logic.end9767 -logic.end9767: - %t342 = phi i1 [ false, %logic.from9765 ], [ %t341, %logic.rend9768 ] - br label %logic.from9769 -logic.from9769: - br i1 %t342, label %logic.rhs9770, label %logic.end9771 -logic.rhs9770: - %t343 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6589, i64 1, i64 0 }, ptr %a346 - %t347 = call i64 @finch_str_find(ptr %a344, ptr %a346) - %t348 = icmp sge i64 %t347, 0 - %t349 = xor i1 %t348, true - br label %logic.rend9772 -logic.rend9772: - br label %logic.end9771 -logic.end9771: - %t350 = phi i1 [ false, %logic.from9769 ], [ %t349, %logic.rend9772 ] - br i1 %t350, label %then9773, label %endif9775 -then9773: - %t351 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t351, ptr %a352 - %t353 = call { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a352) - store { i64, i64 } %t353, ptr %a354 - %t355 = load %S.C.CXString, ptr %a354 - %t356 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t355) - store { ptr, i64, i64 } %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = icmp eq ptr %t358, null - br i1 %t359, label %panic9776, label %ok9777 -panic9776: - call void @finch_panic(ptr @.str.6590, i64 489, ptr @.str.6591) - unreachable -ok9777: - %t360 = getelementptr inbounds %S.cimport.Importer, ptr %t358, i32 0, i32 3 - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a362 - %t363 = call i64 @finch_map_find(ptr %t360, ptr %a362, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t364 = icmp sge i64 %t363, 0 - %t365 = xor i1 %t364, true - br i1 %t365, label %then9778, label %endif9780 -then9778: - %t366 = load { ptr, i64, i64 }, ptr %a9 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic9781, label %ok9782 -panic9781: - call void @finch_panic(ptr @.str.6592, i64 490, ptr @.str.6593) - unreachable -ok9782: - %t369 = getelementptr inbounds %S.cimport.Importer, ptr %t367, i32 0, i32 3 - %t370 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t370, ptr %a371 - store i32 0, ptr %a372 - %t373 = call i64 @finch_map_slot(ptr %t369, ptr %a371, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a372) - %t374 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t369, i32 0, i32 0 - %t375 = load ptr, ptr %t374 - %t376 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t375, i64 %t373 - %t377 = load i32, ptr %a372 - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %map.new9783, label %map.have9784 -map.new9783: - %t379 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 1 - call void @finch_str_copy(ptr %t379, ptr %a371) - %t380 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t380 - br label %map.have9784 -map.have9784: - %t381 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 - store { ptr, i64, i64 } %t366, ptr %a382 - call void @finch_str_copy(ptr %a383, ptr %a382) - %t384 = load { ptr, i64, i64 }, ptr %a383 - %t385 = load { ptr, i64, i64 }, ptr %t381 - store { ptr, i64, i64 } %t384, ptr %t381 - store { ptr, i64, i64 } %t385, ptr %a386 - call void @finch_str_drop(ptr %a386) - br label %endif9780 -endif9780: - call void @finch_str_drop(ptr %a357) - br label %endif9775 -endif9775: - br label %endif9764 -else9763: - %t387 = load i32, ptr %a13 - %t388 = icmp eq i32 %t387, 5 - br i1 %t388, label %then9785, label %else9786 -then9785: - %t389 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t389, ptr %a390 - %t391 = load ptr, ptr %a1 - %t392 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a390, ptr @finch.c.cimport.visitTop, ptr %t391) - br label %endif9787 -else9786: - %t393 = load i32, ptr %a13 - %t394 = icmp eq i32 %t393, 7 - br i1 %t394, label %then9788, label %else9789 -then9788: - %t395 = load ptr, ptr %a1 - %t396 = icmp eq ptr %t395, null - br i1 %t396, label %panic9791, label %ok9792 -panic9791: - call void @finch_panic(ptr @.str.6594, i64 496, ptr @.str.6595) - unreachable -ok9792: - %t397 = getelementptr inbounds %S.cimport.Importer, ptr %t395, i32 0, i32 0 - %t398 = getelementptr inbounds %S.cimport.CImports, ptr %t397, i32 0, i32 1 - %t399 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t399, ptr %a400 - %t401 = call i64 @finch_map_find(ptr %t398, ptr %a400, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t402 = icmp sge i64 %t401, 0 - %t403 = xor i1 %t402, true - br i1 %t403, label %then9793, label %endif9795 -then9793: - %t404 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t404, ptr %a405 - %t406 = call i64 @clang_getEnumConstantDeclValue(ptr byval(%S.C.CXCursor) align 8 %a405) - %t407 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t406, 1 - %t408 = load ptr, ptr %a1 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic9796, label %ok9797 -panic9796: - call void @finch_panic(ptr @.str.6596, i64 497, ptr @.str.6597) - unreachable -ok9797: - %t410 = getelementptr inbounds %S.cimport.Importer, ptr %t408, i32 0, i32 0 - %t411 = getelementptr inbounds %S.cimport.CImports, ptr %t410, i32 0, i32 1 - %t412 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t412, ptr %a413 - store i32 0, ptr %a414 - %t415 = call i64 @finch_map_slot(ptr %t411, ptr %a413, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a414) - %t416 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t411, i32 0, i32 0 - %t417 = load ptr, ptr %t416 - %t418 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t417, i64 %t415 - %t419 = load i32, ptr %a414 - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %map.new9798, label %map.have9799 -map.new9798: - %t421 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 1 - call void @finch_str_copy(ptr %t421, ptr %a413) - %t422 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t422 - br label %map.have9799 -map.have9799: - %t423 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 - %t424 = load %S.cimport.CConst, ptr %t423 - store %S.cimport.CConst %t407, ptr %t423 - store %S.cimport.CConst %t424, ptr %a425 - call void @finch.drop.S_cimport_CConst(ptr %a425) - br label %endif9795 -endif9795: - br label %endif9790 -else9789: - %t426 = load i32, ptr %a13 - %t427 = icmp eq i32 %t426, 501 - br i1 %t427, label %then9800, label %endif9802 -then9800: - %t428 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t428, ptr %a429 - %t430 = call i32 @clang_Cursor_isMacroBuiltin(ptr byval(%S.C.CXCursor) align 8 %a429) - %t431 = icmp ne i32 %t430, 0 - br label %logic.from9803 -logic.from9803: - br i1 %t431, label %logic.end9805, label %logic.rhs9804 -logic.rhs9804: - %t432 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t432, ptr %a433 - %t434 = call i32 @clang_Cursor_isMacroFunctionLike(ptr byval(%S.C.CXCursor) align 8 %a433) - %t435 = icmp ne i32 %t434, 0 - br label %logic.rend9806 -logic.rend9806: - br label %logic.end9805 -logic.end9805: - %t436 = phi i1 [ true, %logic.from9803 ], [ %t435, %logic.rend9806 ] - br i1 %t436, label %then9807, label %endif9809 -then9807: - call void @finch_str_drop(ptr %a9) - ret void -endif9809: - %t437 = load ptr, ptr %a1 - %t438 = load %S.C.CXCursor, ptr %a2 - %t439 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t437, %S.C.CXCursor %t438) - store %S.cimport.Number %t439, ptr %a440 - %t441 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 1 - %t442 = load i1, ptr %t441 - br label %logic.from9810 -logic.from9810: - br i1 %t442, label %logic.rhs9811, label %logic.end9812 -logic.rhs9811: - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic9813, label %ok9814 -panic9813: - call void @finch_panic(ptr @.str.6598, i64 504, ptr @.str.6599) - unreachable -ok9814: - %t445 = getelementptr inbounds %S.cimport.Importer, ptr %t443, i32 0, i32 0 - %t446 = getelementptr inbounds %S.cimport.CImports, ptr %t445, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t447, ptr %a448 - %t449 = call i64 @finch_map_find(ptr %t446, ptr %a448, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t450 = icmp sge i64 %t449, 0 - %t451 = xor i1 %t450, true - br label %logic.rend9815 -logic.rend9815: - br label %logic.end9812 -logic.end9812: - %t452 = phi i1 [ false, %logic.from9810 ], [ %t451, %logic.rend9815 ] - br i1 %t452, label %then9816, label %endif9818 -then9816: - %t453 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 0 - %t454 = load %S.cimport.CConst, ptr %t453 - %t455 = load ptr, ptr %a1 - %t456 = icmp eq ptr %t455, null - br i1 %t456, label %panic9819, label %ok9820 -panic9819: - call void @finch_panic(ptr @.str.6600, i64 505, ptr @.str.6601) - unreachable -ok9820: - %t457 = getelementptr inbounds %S.cimport.Importer, ptr %t455, i32 0, i32 0 - %t458 = getelementptr inbounds %S.cimport.CImports, ptr %t457, i32 0, i32 1 - %t459 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t459, ptr %a460 - store i32 0, ptr %a461 - %t462 = call i64 @finch_map_slot(ptr %t458, ptr %a460, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a461) - %t463 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t458, i32 0, i32 0 - %t464 = load ptr, ptr %t463 - %t465 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t464, i64 %t462 - %t466 = load i32, ptr %a461 - %t467 = icmp ne i32 %t466, 0 - br i1 %t467, label %map.new9821, label %map.have9822 -map.new9821: - %t468 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 1 - call void @finch_str_copy(ptr %t468, ptr %a460) - %t469 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t469 - br label %map.have9822 -map.have9822: - %t470 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 - store %S.cimport.CConst %t454, ptr %a471 - call void @finch.copy.S_cimport_CConst(ptr %a472, ptr %a471) - %t473 = load %S.cimport.CConst, ptr %a472 - %t474 = load %S.cimport.CConst, ptr %t470 - store %S.cimport.CConst %t473, ptr %t470 - store %S.cimport.CConst %t474, ptr %a475 - call void @finch.drop.S_cimport_CConst(ptr %a475) - br label %endif9818 -endif9818: - call void @finch.drop.S_cimport_Number(ptr %a440) - br label %endif9802 -endif9802: - br label %endif9790 -endif9790: - br label %endif9787 -endif9787: - br label %endif9764 -endif9764: - br label %endif9745 -endif9745: - br label %endif9704 -endif9704: - br label %endif9673 -endif9673: - call void @finch_str_drop(ptr %a9) - ret void -} - -define internal void @finch.drop.map_str_str(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9826 -n.cond9826: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9827, label %n.end9828 -n.body9827: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9829, label %entry.next9830 -entry.live9829: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 2 - call void @finch_str_drop(ptr %t13) - br label %entry.next9830 -entry.next9830: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9826 -n.end9828: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_bool(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9831 -n.cond9831: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9832, label %n.end9833 -n.body9832: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9834, label %entry.next9835 -entry.live9834: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 2 - br label %entry.next9835 -entry.next9835: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9831 -n.end9833: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_Importer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CImports(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_bool(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_ptr(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.C.CXUnsavedFile, align 16 - %a138 = alloca ptr, align 16 - %a140 = alloca i64, align 16 - %a153 = alloca i32, 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 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca i64, align 16 - %a183 = alloca i64, align 16 - %a190 = alloca ptr, align 16 - %a196 = alloca [32 x i8], align 16 - %a199 = 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 - %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 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = 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 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca %S.C.CXCursor, align 16 - %a321 = alloca %S.C.CXCursor, align 16 - %a329 = alloca %S.cimport.CImports, align 16 - %a330 = 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 %then9823, label %endif9825 -then9823: - %t10 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t11 = load %S.cimport.CImports, ptr %t10 - store %S.cimport.CImports %t11, ptr %a12 - call void @finch.copy.S_cimport_CImports(ptr %a13, ptr %a12) - %t14 = load %S.cimport.CImports, ptr %a13 - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t15 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t16 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t15, %S.cimport.CImports %t14, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t16 -endif9825: - %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.6602, i64 2, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - store { ptr, i64, i64 } { ptr @.str.6603, i64 1, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 - store { ptr, i64, i64 } { ptr @.str.6604, 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 %then9836, label %endif9838 -then9836: - %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.6605, 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 %endif9838 -endif9838: - %t39 = load i1, ptr %a4 - br i1 %t39, label %then9839, label %endif9841 -then9839: - %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.6606, i64 19, i64 0 }, ptr %t44 - store i64 %t42, ptr %t40 - br label %endif9841 -endif9841: - store i64 0, ptr %a45 - br label %each.cond9842 -each.cond9842: - %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.body9843, label %each.end9845 -each.body9843: - %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.6607, 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.step9844 -each.step9844: - %t64 = load i64, ptr %a45 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a45 - br label %each.cond9842 -each.end9845: - %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.cond9846 -each.cond9846: - %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.body9847, label %each.end9849 -each.body9847: - %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.step9848 -each.step9848: - %t87 = load i64, ptr %a69 - %t88 = add i64 %t87, 1 - store i64 %t88, ptr %a69 - br label %each.cond9846 -each.end9849: - call void @finch.drop.arr_str(ptr %a68) - store { ptr, i64, i64 } zeroinitializer, ptr %a89 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 0, ptr %a92 - br label %for.cond9850 -for.cond9850: - %t93 = load i64, ptr %a92 - %t94 = icmp slt i64 %t93, %t91 - br i1 %t94, label %for.body9851, label %for.end9853 -for.body9851: - %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 %range9854, label %inrange9855 -range9854: - call void @finch_panic_index(ptr @.str.6608, i64 532, i64 %t96, i64 %t98) - unreachable -inrange9855: - %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.6609, 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.step9852 -for.step9852: - %t110 = load i64, ptr %a92 - %t111 = add i64 %t110, 1 - store i64 %t111, ptr %a92 - br label %for.cond9850 -for.end9853: - %t112 = call ptr @clang_createIndex(i32 0, i32 0) - store ptr %t112, ptr %a113 - store i64 0, ptr %a114 - br label %each.cond9856 -each.cond9856: - %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.body9857, label %each.end9859 -each.body9857: - %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.6610, 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.6611, i64 2, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t128, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a134 - %t135 = load { ptr, i64, i64 }, ptr %a134 - %t136 = call %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } { ptr @.str.6612, i64 14, i64 0 }, { ptr, i64, i64 } %t135) - store %S.C.CXUnsavedFile %t136, ptr %a137 - store ptr null, ptr %a138 - %t139 = or i64 1, 64 - store i64 %t139, ptr %a140 - %t141 = load ptr, ptr %a113 - %t142 = extractvalue { ptr, i64, i64 } { ptr @.str.6613, i64 14, i64 0 }, 0 - %t143 = icmp eq ptr %t142, null - %t144 = select i1 %t143, ptr @.str.6614, ptr %t142 - %t145 = load { ptr, i64, i64 }, ptr %a89 - %t146 = extractvalue { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 - %t148 = load i64, ptr %t147 - %t149 = trunc i64 %t148 to i32 - %t150 = load i64, ptr %a140 - %t151 = trunc i64 %t150 to i32 - %t152 = call i32 @clang_parseTranslationUnit2(ptr %t141, ptr %t144, ptr %t146, i32 %t149, ptr %a137, i32 1, i32 %t151, ptr %a138) - store i32 %t152, ptr %a153 - %t154 = load i32, ptr %a153 - %t155 = icmp ne i32 %t154, 0 - br label %logic.from9860 -logic.from9860: - br i1 %t155, label %logic.end9862, label %logic.rhs9861 -logic.rhs9861: - %t156 = load ptr, ptr %a138 - %t157 = icmp eq ptr %t156, null - br label %logic.rend9863 -logic.rend9863: - br label %logic.end9862 -logic.end9862: - %t158 = phi i1 [ true, %logic.from9860 ], [ %t157, %logic.rend9863 ] - br i1 %t158, label %then9864, label %endif9866 -then9864: - %t159 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6615, i64 33, 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.cimport.Header, ptr %a122, i32 0, i32 0 - %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) - store { ptr, i64, i64 } %t164, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6616, i64 1, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t177 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t176, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t177 -endif9866: - %t178 = load ptr, ptr %a138 - %t179 = call i32 @clang_getNumDiagnostics(ptr %t178) - %t180 = zext i32 %t179 to i64 - store i64 %t180, ptr %a181 - %t182 = load i64, ptr %a181 - store i64 0, ptr %a183 - br label %for.cond9867 -for.cond9867: - %t184 = load i64, ptr %a183 - %t185 = icmp slt i64 %t184, %t182 - br i1 %t185, label %for.body9868, label %for.end9870 -for.body9868: - %t186 = load ptr, ptr %a138 - %t187 = load i64, ptr %a183 - %t188 = trunc i64 %t187 to i32 - %t189 = call ptr @clang_getDiagnostic(ptr %t186, i32 %t188) - store ptr %t189, ptr %a190 - %t191 = load ptr, ptr %a190 - %t192 = call i32 @clang_getDiagnosticSeverity(ptr %t191) - %t193 = icmp sge i32 %t192, 3 - br i1 %t193, label %then9871, label %endif9873 -then9871: - %t194 = load ptr, ptr %a190 - %t195 = call { i64, i64 } @clang_getDiagnosticSpelling(ptr %t194) - store { i64, i64 } %t195, ptr %a196 - %t197 = load %S.C.CXString, ptr %a196 - %t198 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t200) - %t201 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.6618, i64 14, i64 0 }, ptr %a204 - %t205 = call i64 @finch_str_find(ptr %a202, ptr %a204) - %t206 = icmp sge i64 %t205, 0 - br i1 %t206, label %then9874, label %endif9876 -then9874: - %t207 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t207, ptr %a208 - %t210 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t210, ptr %a211 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %a199, i32 0, i32 1 - %t214 = load i64, ptr %t213 - call void @finch_str_sub(ptr %a212, ptr %a211, i64 1, i64 %t214, ptr @.str.6620, i64 552) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.6622, i64 1, i64 0 }, ptr %a218 - %t219 = call i64 @finch_str_find(ptr %a216, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = add i64 %t219, 1 - call void @finch_str_sub(ptr %a209, ptr %a208, i64 1, i64 %t221, ptr @.str.6619, i64 552) - %t222 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t222, ptr %a223 - %t224 = load { ptr, i64, i64 }, ptr %a223 - %t225 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } %t224, ptr %a227 - store { ptr, i64, i64 } %t226, ptr %a228 - %t229 = call i32 @finch_str_eq(ptr %a227, ptr %a228) - %t230 = icmp ne i32 %t229, 0 - br i1 %t230, label %then9877, label %endif9879 -then9877: - %t231 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.6623, i64 34, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - %t237 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t236, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.6624, i64 1, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - call void @finch_str_drop(ptr %a223) - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t249 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t248, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t249 -endif9879: - %t250 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t251 = load { ptr, i64, i64 }, ptr %t250 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.6625, i64 34, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a252 - %t256 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.6626, i64 10, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.6627, i64 60, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - call void @finch_str_drop(ptr %a223) - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t279 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t278, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t279 -endif9876: - %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.6628, 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) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.6629, i64 16, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - %t298 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t297, ptr %a300 - store { ptr, i64, i64 } %t298, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t297, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t304 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t303, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t304 -endif9873: - %t305 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t305) - br label %for.step9869 -for.step9869: - %t306 = load i64, ptr %a183 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a183 - br label %for.cond9867 -for.end9870: - %t308 = load ptr, ptr %a138 - %t309 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 - store ptr %t308, ptr %t309 - %t310 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - %t312 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 - store { ptr, i64, i64 } %t311, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - %t316 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t315, ptr %t312 - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t319 = load ptr, ptr %a138 - call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a318, ptr %t319) - %t320 = load %S.C.CXCursor, ptr %a318 - store %S.C.CXCursor %t320, ptr %a321 - %t322 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a321, ptr @finch.c.cimport.visitTop, ptr %a6) - %t323 = load ptr, ptr %a138 - call void @clang_disposeTranslationUnit(ptr %t323) - call void @finch_str_drop(ptr %a134) - br label %each.step9858 -each.step9858: - %t324 = load i64, ptr %a114 - %t325 = add i64 %t324, 1 - store i64 %t325, ptr %a114 - br label %each.cond9856 -each.end9859: - %t326 = load ptr, ptr %a113 - call void @clang_disposeIndex(ptr %t326) - %t327 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t328 = load %S.cimport.CImports, ptr %t327 - store %S.cimport.CImports %t328, ptr %a329 - call void @finch.copy.S_cimport_CImports(ptr %a330, ptr %a329) - %t331 = load %S.cimport.CImports, ptr %a330 - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t332 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t333 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t332, %S.cimport.CImports %t331, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t333 -} - -define internal %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = extractvalue { ptr, i64, i64 } %t3, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6630, ptr %t4 - %t7 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t6, 0 - %t8 = load { ptr, i64, i64 }, ptr %a2 - %t9 = extractvalue { ptr, i64, i64 } %t8, 0 - %t10 = icmp eq ptr %t9, null - %t11 = select i1 %t10, ptr @.str.6631, ptr %t9 - %t12 = insertvalue %S.C.CXUnsavedFile %t7, ptr %t11, 1 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = insertvalue %S.C.CXUnsavedFile %t12, i64 %t14, 2 - ret %S.C.CXUnsavedFile %t15 -} - -define internal { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6634, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6635, 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.6632, i64 1, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6636, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal i64 @finch.host.run({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i64 @finch_shell(ptr %a3) - call void @finch_str_drop(ptr %a3) - ret i64 %t5 -} - -define internal { ptr, i64, i64 } @finch.host.nullDevice() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6637, i64 9, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.tempDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6638, i64 6, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6639, 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 %then9880, label %endif9882 -then9880: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6641, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_ends(ptr %a15, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - br i1 %t19, label %then9883, label %endif9885 -then9883: - %t20 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t20, ptr %a21 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - %t24 = load i64, ptr %t23 - %t25 = sub i64 %t24, 1 - call void @finch_str_sub(ptr %a22, ptr %a21, i64 0, i64 %t25, ptr @.str.6642, i64 31) - %t26 = load { ptr, i64, i64 }, ptr %a22 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t26 -endif9885: - %t27 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t27 -endif9882: - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } { ptr @.str.6643, i64 4, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.pathSeparator() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6644, i64 1, i64 0 } -} - -define internal i64 @finch.host.pid() { -entry: - - %t1 = call i32 @getpid() - %t2 = sext i32 %t1 to i64 - ret i64 %t2 -} - -define internal { ptr, i64, i64 } @finch.host.cwd() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6645, i64 3, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6646, ptr %t1 - %t4 = call ptr @getenv(ptr %t3) - store { ptr, i64, i64 } zeroinitializer, ptr %a5 - call void @finch_str_from_c(ptr %a5, ptr %t4) - %t6 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t6, ptr %a7 - call void @finch_str_copy(ptr %a8, ptr %a7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - ret { ptr, i64, i64 } %t9 -} - -define internal { ptr, i64, i64 } @finch.host.cacheDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6647, i64 14, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6648, 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 %then9886, label %endif9888 -then9886: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6649, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t18 -endif9888: - %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6650, i64 4, i64 0 }, 0 - %t20 = icmp eq ptr %t19, null - %t21 = select i1 %t20, ptr @.str.6651, 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 %then9889, label %endif9891 -then9889: - %t32 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.6652, i64 13, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - call void @finch_str_drop(ptr %a28) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t36 -endif9891: - %t37 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.6653, i64 12, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a28) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.host.binaryStdio() { -entry: - - ret void -} - -define internal void @finch.host.makeDirs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - store { ptr, i64, i64 } { ptr @.str.6654, i64 9, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t3, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_copy(ptr %a9, ptr %a10) - %t11 = call i64 @finch_shell(ptr %a9) - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret void -} - -define internal void @finch.host.remove({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i32 @finch_delete_file(ptr %a3) - call void @finch_str_drop(ptr %a3) - %t6 = icmp ne i32 %t5, 0 - ret void -} - -define internal void @finch.host.removeTree({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - store { ptr, i64, i64 } { ptr @.str.6655, i64 7, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t3, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_copy(ptr %a9, ptr %a10) - %t11 = call i64 @finch_shell(ptr %a9) - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret void -} - -define internal void @finch.host.move({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.6656, i64 3, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.6657, i64 1, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load { ptr, i64, i64 }, ptr %a2 - %t16 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t14, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t14, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a24 - call void @finch_str_copy(ptr %a23, ptr %a24) - %t25 = call i64 @finch_shell(ptr %a23) - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - ret void -} - -define internal { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_trim(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.6660, 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 } %t5, ptr %a11 - call void @finch_str_drop(ptr %a11) - store { ptr, i64, i64 } %t10, ptr %a12 - %t13 = load { ptr, i64, i64 }, ptr %a12 - %t14 = extractvalue { ptr, i64, i64 } %t13, 1 - %t15 = icmp uge i64 0, %t14 - br i1 %t15, label %range9892, label %inrange9893 -range9892: - call void @finch_panic_index(ptr @.str.6661, i64 21, i64 0, i64 %t14) - unreachable -inrange9893: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 - %t18 = load { ptr, i64, i64 }, ptr %t17 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_trim(ptr %a20, ptr %a19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.drop.arr_str(ptr %a12) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.platform.hostTriple() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t1, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6663, i64 14, i64 0 }, ptr %a4 - call void @finch_str_concat(ptr %a2, ptr %a3, ptr %a4) - store { ptr, i64, i64 } %t1, ptr %a5 - call void @finch_str_drop(ptr %a5) - %t6 = load { ptr, i64, i64 }, ptr %a2 - %t7 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a8, i64 %t7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t6, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t9, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.6664, i64 4, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t20, ptr %a21 - %t22 = load { ptr, i64, i64 }, ptr %a21 - %t23 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t22) - store { ptr, i64, i64 } { ptr @.str.6665, i64 21, i64 0 }, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6666, i64 4, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call i64 @finch.host.run({ ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - store { ptr, i64, i64 } zeroinitializer, ptr %a46 - %t47 = call i32 @finch_try_read_file(ptr %a45, ptr %a44, ptr %a46) - %t48 = icmp eq i32 %t47, 0 - %t49 = load { ptr, i64, i64 }, ptr %a46 - %t50 = load { ptr, i64, i64 }, ptr %a45 - br i1 %t48, label %or.failed9894, label %or.ok9895 -or.failed9894: - store { ptr, i64, i64 } %t49, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %or.bend9896 -or.bend9896: - br label %or.end9897 -or.ok9895: - br label %or.end9897 -or.end9897: - %t52 = phi { ptr, i64, i64 } [ { ptr @.str.6667, i64 0, i64 0 }, %or.bend9896 ], [ %t50, %or.ok9895 ] - store { ptr, i64, i64 } %t52, ptr %a53 - %t54 = load { ptr, i64, i64 }, ptr %a21 - call void @finch.host.remove({ ptr, i64, i64 } %t54) - %t55 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_trim(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = icmp eq i64 %t59, 0 - br i1 %t61, label %then9898, label %endif9900 -then9898: - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } { ptr @.str.6669, i64 24, i64 0 } -endif9900: - %t62 = load { ptr, i64, i64 }, ptr %a53 - %t63 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t62) - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } %t63 -} - -define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = 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 - %a59 = 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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca %S.platform.Target, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = 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 - %a135 = 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 - %a145 = 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 - %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 - %a169 = alloca i1, 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 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca i1, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = 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 - %a204 = alloca i1, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a255 = 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 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = call { ptr, i64, i64 } @finch.platform.hostTriple() - store { ptr, i64, i64 } %t2, ptr %a3 - %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 %then9901, label %else9902 -then9901: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t15, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - br label %endif9903 -else9902: - %t18 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6670, i64 7, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br i1 %t22, label %then9904, label %else9905 -then9904: - %t23 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6671, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - br label %endif9906 -else9905: - %t25 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6672, i64 5, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br i1 %t29, label %then9907, label %else9908 -then9907: - %t30 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6673, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %endif9909 -else9908: - %t32 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.6674, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.from9910 -logic.from9910: - br i1 %t36, label %logic.end9912, label %logic.rhs9911 -logic.rhs9911: - %t37 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.6675, i64 7, i64 0 }, ptr %a39 - %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) - %t41 = icmp ne i32 %t40, 0 - br label %logic.rend9913 -logic.rend9913: - br label %logic.end9912 -logic.end9912: - %t42 = phi i1 [ true, %logic.from9910 ], [ %t41, %logic.rend9913 ] - br label %logic.from9914 -logic.from9914: - br i1 %t42, label %logic.end9916, label %logic.rhs9915 -logic.rhs9915: - %t43 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6676, i64 11, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp ne i32 %t46, 0 - br label %logic.rend9917 -logic.rend9917: - br label %logic.end9916 -logic.end9916: - %t48 = phi i1 [ true, %logic.from9914 ], [ %t47, %logic.rend9917 ] - br i1 %t48, label %then9918, label %else9919 -then9918: - %t49 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6677, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t49, ptr %a50 - call void @finch_str_drop(ptr %a50) - br label %endif9920 -else9919: - %t51 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6678, i64 5, i64 0 }, ptr %a53 - %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) - %t55 = icmp ne i32 %t54, 0 - br i1 %t55, label %then9921, label %endif9923 -then9921: - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.6680, i64 7, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_starts(ptr %a57, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br label %logic.from9924 -logic.from9924: - br i1 %t61, label %logic.end9926, label %logic.rhs9925 -logic.rhs9925: - %t62 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6682, i64 5, i64 0 }, ptr %a65 - %t66 = call i32 @finch_str_starts(ptr %a63, ptr %a65) - %t67 = icmp ne i32 %t66, 0 - br label %logic.rend9927 -logic.rend9927: - br label %logic.end9926 -logic.end9926: - %t68 = phi i1 [ true, %logic.from9924 ], [ %t67, %logic.rend9927 ] - br i1 %t68, label %then9928, label %else9929 -then9928: - %t69 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6683, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif9930 -else9929: - %t71 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6684, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif9930 -endif9930: - br label %endif9923 -endif9923: - br label %endif9920 -endif9920: - br label %endif9909 -endif9909: - br label %endif9906 -endif9906: - br label %endif9903 -endif9903: - %t73 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6685, i64 22, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then9931, label %endif9933 -then9931: - %t78 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6686, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif9933 -endif9933: - %t80 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t80, ptr %a81 - call void @finch_str_copy(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t83, 0 - store %S.platform.Target %t84, ptr %a85 - %t86 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.6688, i64 7, i64 0 }, ptr %a89 - %t90 = call i64 @finch_str_find(ptr %a87, ptr %a89) - %t91 = icmp sge i64 %t90, 0 - br label %logic.from9934 -logic.from9934: - br i1 %t91, label %logic.end9936, label %logic.rhs9935 -logic.rhs9935: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.6690, i64 5, i64 0 }, ptr %a95 - %t96 = call i64 @finch_str_find(ptr %a93, ptr %a95) - %t97 = icmp sge i64 %t96, 0 - br label %logic.rend9937 -logic.rend9937: - br label %logic.end9936 -logic.end9936: - %t98 = phi i1 [ true, %logic.from9934 ], [ %t97, %logic.rend9937 ] - br label %logic.from9938 -logic.from9938: - br i1 %t98, label %logic.end9940, label %logic.rhs9939 -logic.rhs9939: - %t99 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6692, i64 4, i64 0 }, ptr %a102 - %t103 = call i64 @finch_str_find(ptr %a100, ptr %a102) - %t104 = icmp sge i64 %t103, 0 - br label %logic.rend9941 -logic.rend9941: - br label %logic.end9940 -logic.end9940: - %t105 = phi i1 [ true, %logic.from9938 ], [ %t104, %logic.rend9941 ] - br label %logic.from9942 -logic.from9942: - br i1 %t105, label %logic.end9944, label %logic.rhs9943 -logic.rhs9943: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.6694, i64 5, i64 0 }, ptr %a109 - %t110 = call i64 @finch_str_find(ptr %a107, ptr %a109) - %t111 = icmp sge i64 %t110, 0 - br label %logic.rend9945 -logic.rend9945: - br label %logic.end9944 -logic.end9944: - %t112 = phi i1 [ true, %logic.from9942 ], [ %t111, %logic.rend9945 ] - %t113 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - store i1 %t112, ptr %t113 - %t114 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.6696, i64 4, i64 0 }, ptr %a117 - %t118 = call i64 @finch_str_find(ptr %a115, ptr %a117) - %t119 = icmp sge i64 %t118, 0 - %t120 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 2 - store i1 %t119, ptr %t120 - %t121 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6698, i64 5, i64 0 }, ptr %a124 - %t125 = call i64 @finch_str_find(ptr %a122, ptr %a124) - %t126 = icmp sge i64 %t125, 0 - br label %logic.from9946 -logic.from9946: - br i1 %t126, label %logic.end9948, label %logic.rhs9947 -logic.rhs9947: - %t127 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6700, i64 6, i64 0 }, ptr %a130 - %t131 = call i64 @finch_str_find(ptr %a128, ptr %a130) - %t132 = icmp sge i64 %t131, 0 - br label %logic.rend9949 -logic.rend9949: - br label %logic.end9948 -logic.end9948: - %t133 = phi i1 [ true, %logic.from9946 ], [ %t132, %logic.rend9949 ] - br label %logic.from9950 -logic.from9950: - br i1 %t133, label %logic.end9952, label %logic.rhs9951 -logic.rhs9951: - %t134 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t134, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.6702, i64 5, i64 0 }, ptr %a137 - %t138 = call i64 @finch_str_find(ptr %a135, ptr %a137) - %t139 = icmp sge i64 %t138, 0 - br label %logic.rend9953 -logic.rend9953: - br label %logic.end9952 -logic.end9952: - %t140 = phi i1 [ true, %logic.from9950 ], [ %t139, %logic.rend9953 ] - %t141 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - store i1 %t140, ptr %t141 - %t142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.6704, i64 7, i64 0 }, ptr %a145 - %t146 = call i32 @finch_str_starts(ptr %a143, ptr %a145) - %t147 = icmp ne i32 %t146, 0 - br label %logic.from9954 -logic.from9954: - br i1 %t147, label %logic.end9956, label %logic.rhs9955 -logic.rhs9955: - %t148 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.6706, i64 5, i64 0 }, ptr %a151 - %t152 = call i32 @finch_str_starts(ptr %a149, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.rend9957 -logic.rend9957: - br label %logic.end9956 -logic.end9956: - %t154 = phi i1 [ true, %logic.from9954 ], [ %t153, %logic.rend9957 ] - %t155 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - store i1 %t154, ptr %t155 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.6708, i64 7, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_starts(ptr %a157, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.from9958 -logic.from9958: - br i1 %t161, label %logic.end9960, label %logic.rhs9959 -logic.rhs9959: - %t162 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t162, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.6710, i64 5, i64 0 }, ptr %a165 - %t166 = call i32 @finch_str_starts(ptr %a163, ptr %a165) - %t167 = icmp ne i32 %t166, 0 - br label %logic.rend9961 -logic.rend9961: - br label %logic.end9960 -logic.end9960: - %t168 = phi i1 [ true, %logic.from9958 ], [ %t167, %logic.rend9961 ] - store i1 %t168, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.6712, i64 5, i64 0 }, ptr %a173 - %t174 = call i64 @finch_str_find(ptr %a171, ptr %a173) - %t175 = icmp sge i64 %t174, 0 - br label %logic.from9962 -logic.from9962: - br i1 %t175, label %logic.end9964, label %logic.rhs9963 -logic.rhs9963: - %t176 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.6714, i64 6, i64 0 }, ptr %a179 - %t180 = call i64 @finch_str_find(ptr %a177, ptr %a179) - %t181 = icmp sge i64 %t180, 0 - br label %logic.rend9965 -logic.rend9965: - br label %logic.end9964 -logic.end9964: - %t182 = phi i1 [ true, %logic.from9962 ], [ %t181, %logic.rend9965 ] - store i1 %t182, ptr %a183 - %t184 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.6716, i64 7, i64 0 }, ptr %a187 - %t188 = call i64 @finch_str_find(ptr %a185, ptr %a187) - %t189 = icmp sge i64 %t188, 0 - br label %logic.from9966 -logic.from9966: - br i1 %t189, label %logic.end9968, label %logic.rhs9967 -logic.rhs9967: - %t190 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t190, ptr %a191 - store { ptr, i64, i64 } { ptr @.str.6718, i64 5, i64 0 }, ptr %a193 - %t194 = call i64 @finch_str_find(ptr %a191, ptr %a193) - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend9969 -logic.rend9969: - br label %logic.end9968 -logic.end9968: - %t196 = phi i1 [ true, %logic.from9966 ], [ %t195, %logic.rend9969 ] - br label %logic.from9970 -logic.from9970: - br i1 %t196, label %logic.end9972, label %logic.rhs9971 -logic.rhs9971: - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t197, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.6720, i64 4, i64 0 }, ptr %a200 - %t201 = call i64 @finch_str_find(ptr %a198, ptr %a200) - %t202 = icmp sge i64 %t201, 0 - br label %logic.rend9973 -logic.rend9973: - br label %logic.end9972 -logic.end9972: - %t203 = phi i1 [ true, %logic.from9970 ], [ %t202, %logic.rend9973 ] - store i1 %t203, ptr %a204 - %t205 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t206 = load i1, ptr %t205 - %t207 = load i1, ptr %a204 - %t208 = icmp ne i1 %t206, %t207 - br label %logic.from9974 -logic.from9974: - br i1 %t208, label %logic.end9976, label %logic.rhs9975 -logic.rhs9975: - %t209 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t210 = load i1, ptr %t209 - %t211 = load i1, ptr %a183 - %t212 = icmp ne i1 %t210, %t211 - br label %logic.rend9977 -logic.rend9977: - br label %logic.end9976 -logic.end9976: - %t213 = phi i1 [ true, %logic.from9974 ], [ %t212, %logic.rend9977 ] - br label %logic.from9978 -logic.from9978: - br i1 %t213, label %logic.end9980, label %logic.rhs9979 -logic.rhs9979: - %t214 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t215 = load i1, ptr %t214 - %t216 = load i1, ptr %a169 - %t217 = icmp ne i1 %t215, %t216 - br label %logic.rend9981 -logic.rend9981: - br label %logic.end9980 -logic.end9980: - %t218 = phi i1 [ true, %logic.from9978 ], [ %t217, %logic.rend9981 ] - %t219 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - store i1 %t218, ptr %t219 - %t220 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t221 = load { ptr, i64, i64 }, ptr %t220 - store { ptr, i64, i64 } { ptr @.str.6721, i64 0, i64 0 }, ptr %t220 - store { ptr, i64, i64 } %t221, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t224 = load i1, ptr %t223 - br i1 %t224, label %then9982, label %endif9984 -then9982: - %t225 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } { ptr @.str.6722, i64 4, i64 0 }, ptr %t225 - store { ptr, i64, i64 } %t226, ptr %a227 - call void @finch_str_drop(ptr %a227) - br label %endif9984 -endif9984: - %t228 = extractvalue { ptr, i64, i64 } { ptr @.str.6723, i64 8, i64 0 }, 0 - %t229 = icmp eq ptr %t228, null - %t230 = select i1 %t229, ptr @.str.6724, ptr %t228 - %t231 = call ptr @getenv(ptr %t230) - store { ptr, i64, i64 } zeroinitializer, ptr %a232 - call void @finch_str_from_c(ptr %a232, ptr %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - 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 %a237 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %a237, i32 0, i32 1 - %t239 = load i64, ptr %t238 - %t240 = icmp sgt i64 %t239, 0 - br i1 %t240, label %then9985, label %else9986 -then9985: - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_copy(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - %t246 = load { ptr, i64, i64 }, ptr %t242 - store { ptr, i64, i64 } %t245, ptr %t242 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif9987 -else9986: - %t248 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t249 = load i1, ptr %t248 - br label %logic.from9988 -logic.from9988: - br i1 %t249, label %logic.rhs9989, label %logic.end9990 -logic.rhs9989: - %t250 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.rend9991 -logic.rend9991: - br label %logic.end9990 -logic.end9990: - %t252 = phi i1 [ false, %logic.from9988 ], [ %t251, %logic.rend9991 ] - br i1 %t252, label %then9992, label %else9993 -then9992: - %t253 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t254 = load { ptr, i64, i64 }, ptr %t253 - store { ptr, i64, i64 } { ptr @.str.6725, i64 22, i64 0 }, ptr %t253 - store { ptr, i64, i64 } %t254, ptr %a255 - call void @finch_str_drop(ptr %a255) - br label %endif9994 -else9993: - %t256 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t257 = load i1, ptr %t256 - br label %logic.from9995 -logic.from9995: - br i1 %t257, label %logic.rhs9996, label %logic.end9997 -logic.rhs9996: - %t258 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t259 = load i1, ptr %t258 - br label %logic.rend9998 -logic.rend9998: - br label %logic.end9997 -logic.end9997: - %t260 = phi i1 [ false, %logic.from9995 ], [ %t259, %logic.rend9998 ] - br label %logic.from9999 -logic.from9999: - br i1 %t260, label %logic.rhs10000, label %logic.end10001 -logic.rhs10000: - %t261 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t262 = load i1, ptr %t261 - %t263 = xor i1 %t262, true - br label %logic.rend10002 -logic.rend10002: - br label %logic.end10001 -logic.end10001: - %t264 = phi i1 [ false, %logic.from9999 ], [ %t263, %logic.rend10002 ] - br i1 %t264, label %then10003, label %else10004 -then10003: - %t265 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } { ptr @.str.6726, i64 21, i64 0 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_drop(ptr %a267) - br label %endif10005 -else10004: - %t268 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t269 = load i1, ptr %t268 - br i1 %t269, label %then10006, label %else10007 -then10006: - %t270 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6727, i64 15, i64 0 }, 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 - %t275 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } %t274, ptr %t275 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - br label %endif10008 -else10007: - %t278 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6728, i64 1, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - br i1 %t282, label %then10009, label %else10010 -then10009: - %t284 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.6729, i64 5, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif10011 -else10010: - %t287 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t288 = load { ptr, i64, i64 }, ptr %t287 - store { ptr, i64, i64 } { ptr @.str.6730, i64 2, i64 0 }, ptr %t287 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - br label %endif10011 -endif10011: - br label %endif10008 -endif10008: - br label %endif10005 -endif10005: - br label %endif9994 -endif9994: - br label %endif9987 -endif9987: - %t290 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t291 = load i1, ptr %t290 - br label %logic.from10012 -logic.from10012: - br i1 %t291, label %logic.rhs10013, label %logic.end10014 -logic.rhs10013: - %t292 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t293 = load i1, ptr %t292 - br label %logic.rend10015 -logic.rend10015: - br label %logic.end10014 -logic.end10014: - %t294 = phi i1 [ false, %logic.from10012 ], [ %t293, %logic.rend10015 ] - br i1 %t294, label %then10016, label %else10017 -then10016: - %t295 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } { ptr @.str.6731, i64 5, i64 0 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif10018 -else10017: - %t298 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t299 = load i1, ptr %t298 - br label %logic.from10019 -logic.from10019: - br i1 %t299, label %logic.rhs10020, label %logic.end10021 -logic.rhs10020: - %t300 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t301 = load i1, ptr %t300 - br label %logic.rend10022 -logic.rend10022: - br label %logic.end10021 -logic.end10021: - %t302 = phi i1 [ false, %logic.from10019 ], [ %t301, %logic.rend10022 ] - br label %logic.from10023 -logic.from10023: - br i1 %t302, label %logic.rhs10024, label %logic.end10025 -logic.rhs10024: - %t303 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t304 = load i1, ptr %t303 - %t305 = xor i1 %t304, true - br label %logic.rend10026 -logic.rend10026: - br label %logic.end10025 -logic.end10025: - %t306 = phi i1 [ false, %logic.from10023 ], [ %t305, %logic.rend10026 ] - br i1 %t306, label %then10027, label %endif10029 -then10027: - %t307 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } { ptr @.str.6732, i64 13, i64 0 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10029 -endif10029: - br label %endif10018 -endif10018: - %t310 = load %S.platform.Target, ptr %a85 - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a3) - ret %S.platform.Target %t310 -} - -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.from10030 -logic.from10030: - br i1 %t4, label %logic.end10032, label %logic.rhs10031 -logic.rhs10031: - %t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3 - %t6 = load i1, ptr %t5 - br label %logic.rend10033 -logic.rend10033: - br label %logic.end10032 -logic.end10032: - %t7 = phi i1 [ true, %logic.from10030 ], [ %t6, %logic.rend10033 ] - br label %logic.from10034 -logic.from10034: - br i1 %t7, label %logic.end10036, label %logic.rhs10035 -logic.rhs10035: - %t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1 - %t9 = load i1, ptr %t8 - br label %logic.rend10037 -logic.rend10037: - br label %logic.end10036 -logic.end10036: - %t10 = phi i1 [ true, %logic.from10034 ], [ %t9, %logic.rend10037 ] - 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.cond10038 -each.cond10038: - %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.body10039, label %each.end10041 -each.body10039: - %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.step10040 -each.step10040: - %t17 = load i64, ptr %a3 - %t18 = add i64 %t17, 1 - store i64 %t18, ptr %a3 - br label %each.cond10038 -each.end10041: - store { ptr, i64, i64 } { ptr @.str.6733, i64 16, i64 0 }, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %for.cond10042 -for.cond10042: - %t22 = load i64, ptr %a21 - %t23 = icmp slt i64 %t22, 8 - br i1 %t23, label %for.body10043, label %for.end10045 -for.body10043: - %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 %range10046, label %inrange10047 -range10046: - call void @finch_panic_index(ptr @.str.6734, i64 16, i64 %t32, i64 %t34) - unreachable -inrange10047: - %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.step10044 -for.step10044: - %t45 = load i64, ptr %a21 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a21 - br label %for.cond10042 -for.end10045: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6735, i64 0, i64 0 }, ptr %a48 - call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - call void @finch.drop.arr_str(ptr %a20) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t50 -} - -define internal { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - ret { ptr, i64, i64 } %t3 -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.platform.Target %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.6737, 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 %then10048, label %endif10050 -then10048: - %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.6739, i64 28) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - store { ptr, i64, i64 } { ptr @.str.6738, i64 11, i64 0 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - ret { ptr, i64, i64 } %t22 -endif10050: - %t23 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t24 = load i1, ptr %t23 - %t25 = xor i1 %t24, true - br i1 %t25, label %then10051, label %endif10053 -then10051: - %t26 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.6740, i64 17, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a33, i64 %t32) - %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.6741, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a46 - %t47 = load { ptr, i64, i64 }, ptr %a1 - %t48 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t47) - store { ptr, i64, i64 } { ptr @.str.6742, i64 18, i64 0 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t53, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6743, i64 3, i64 0 }, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - %t59 = load { ptr, i64, i64 }, ptr %a46 - %t60 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.6744, i64 4, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a73 - %t79 = call i64 @finch.host.run({ ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load i64, ptr %a81 - %t83 = icmp eq i64 %t82, 0 - br label %logic.from10054 -logic.from10054: - br i1 %t83, label %logic.rhs10055, label %logic.end10056 -logic.rhs10055: - %t84 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t84, ptr %a85 - %t86 = call i32 @finch_file_exists(ptr %a85) - %t87 = icmp ne i32 %t86, 0 - br label %logic.rend10057 -logic.rend10057: - br label %logic.end10056 -logic.end10056: - %t88 = phi i1 [ false, %logic.from10054 ], [ %t87, %logic.rend10057 ] - br i1 %t88, label %then10058, label %endif10060 -then10058: - %t89 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - store { ptr, i64, i64 } zeroinitializer, ptr %a92 - %t93 = call i32 @finch_try_read_file(ptr %a91, ptr %a90, ptr %a92) - %t94 = icmp eq i32 %t93, 0 - %t95 = load { ptr, i64, i64 }, ptr %a92 - %t96 = load { ptr, i64, i64 }, ptr %a91 - br i1 %t94, label %or.failed10061, label %or.ok10062 -or.failed10061: - store { ptr, i64, i64 } %t95, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %or.bend10063 -or.bend10063: - br label %or.end10064 -or.ok10062: - br label %or.end10064 -or.end10064: - %t98 = phi { ptr, i64, i64 } [ { ptr @.str.6745, i64 0, i64 0 }, %or.bend10063 ], [ %t96, %or.ok10062 ] - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_trim(ptr %a100, ptr %a99) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t101, ptr %a103 - %t104 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.host.remove({ ptr, i64, i64 } %t104) - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a103, i32 0, i32 1 - %t106 = load i64, ptr %t105 - %t107 = icmp sgt i64 %t106, 0 - br i1 %t107, label %then10065, label %endif10067 -then10065: - %t108 = load { ptr, i64, i64 }, ptr %a103 - call void @finch_str_drop(ptr %a46) - ret { ptr, i64, i64 } %t108 -endif10067: - call void @finch_str_drop(ptr %a103) - br label %endif10060 -endif10060: - call void @finch_str_drop(ptr %a46) - br label %endif10053 -endif10053: - %t109 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6747, i64 2, i64 0 }, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_drop(ptr %a115) - ret { ptr, i64, i64 } %t114 -} - -define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a35 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6749, i64 1, i64 0 }, ptr %a10 - %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) - store i64 %t11, ptr %a12 - br label %while.cond10068 -while.cond10068: - %t13 = load i64, ptr %a12 - %t14 = icmp sge i64 %t13, 0 - br i1 %t14, label %while.body10069, label %while.end10070 -while.body10069: - %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.6750, i64 49) - %t22 = load { ptr, i64, i64 }, ptr %a17 - %t23 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t22, ptr %a6 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6752, i64 1, i64 0 }, ptr %a28 - %t29 = call i64 @finch_str_find(ptr %a26, ptr %a28) - store i64 %t29, ptr %a12 - br label %while.cond10068 -while.end10070: - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t31 = load i64, ptr %t30 - store i64 %t31, ptr %a32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t34 = load i64, ptr %t33 - store i64 0, ptr %a35 - br label %for.cond10071 -for.cond10071: - %t36 = load i64, ptr %a35 - %t37 = icmp slt i64 %t36, %t34 - br i1 %t37, label %for.body10072, label %for.end10074 -for.body10072: - %t38 = load i64, ptr %a35 - %t39 = load { ptr, i64, i64 }, ptr %a6 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range10075, label %inrange10076 -range10075: - call void @finch_panic_index(ptr @.str.6753, i64 54, i64 %t38, i64 %t40) - unreachable -inrange10076: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 - %t44 = load i8, ptr %t43 - %t45 = icmp eq i8 %t44, 46 - br i1 %t45, label %then10077, label %endif10079 -then10077: - %t46 = load i64, ptr %a35 - store i64 %t46, ptr %a32 - br label %endif10079 -endif10079: - br label %for.step10073 -for.step10073: - %t47 = load i64, ptr %a35 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a35 - br label %for.cond10071 -for.end10074: - %t49 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6754, i64 58) - %t53 = load { ptr, i64, i64 }, ptr %a51 - %t54 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t53, ptr %a6 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %while.cond10080 -while.cond10080: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t57 = load i64, ptr %t56 - %t58 = icmp sgt i64 %t57, 0 - br label %logic.from10083 -logic.from10083: - br i1 %t58, label %logic.rhs10084, label %logic.end10085 -logic.rhs10084: - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t60 = load i64, ptr %t59 - %t61 = sub i64 %t60, 1 - %t62 = load { ptr, i64, i64 }, ptr %a6 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 %t61, %t63 - br i1 %t64, label %range10086, label %inrange10087 -range10086: - call void @finch_panic_index(ptr @.str.6755, i64 59, i64 %t61, i64 %t63) - unreachable -inrange10087: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds i8, ptr %t65, i64 %t61 - %t67 = load i8, ptr %t66 - %t68 = icmp uge i8 %t67, 48 - br label %logic.rend10088 -logic.rend10088: - br label %logic.end10085 -logic.end10085: - %t69 = phi i1 [ false, %logic.from10083 ], [ %t68, %logic.rend10088 ] - br label %logic.from10089 -logic.from10089: - br i1 %t69, label %logic.rhs10090, label %logic.end10091 -logic.rhs10090: - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t71 = load i64, ptr %t70 - %t72 = sub i64 %t71, 1 - %t73 = load { ptr, i64, i64 }, ptr %a6 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range10092, label %inrange10093 -range10092: - call void @finch_panic_index(ptr @.str.6756, i64 59, i64 %t72, i64 %t74) - unreachable -inrange10093: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds i8, ptr %t76, i64 %t72 - %t78 = load i8, ptr %t77 - %t79 = icmp ule i8 %t78, 57 - br label %logic.rend10094 -logic.rend10094: - br label %logic.end10091 -logic.end10091: - %t80 = phi i1 [ false, %logic.from10089 ], [ %t79, %logic.rend10094 ] - br i1 %t80, label %while.body10081, label %while.end10082 -while.body10081: - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t81, ptr %a82 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - call void @finch_str_sub(ptr %a83, ptr %a82, i64 0, i64 %t86, ptr @.str.6757, i64 60) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t87, ptr %a6 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %while.cond10080 -while.end10082: - %t90 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_lower(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t93 -} - -define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.from10095 -logic.from10095: - br i1 %t4, label %logic.rhs10096, label %logic.end10097 -logic.rhs10096: - %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.cond10098 -find.cond10098: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body10099, label %find.end10102 -find.body10099: - %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.hit10100, label %find.next10101 -find.hit10100: - store i64 %t12, ptr %a8 - br label %find.end10102 -find.next10101: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond10098 -find.end10102: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - %t23 = xor i1 %t22, true - br label %logic.rend10103 -logic.rend10103: - br label %logic.end10097 -logic.end10097: - %t24 = phi i1 [ false, %logic.from10095 ], [ %t23, %logic.rend10103 ] - br i1 %t24, label %then10104, label %endif10106 -then10104: - %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 %endif10106 -endif10106: - 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then10107, label %endif10109 -then10107: - ret { ptr, i64, i64 } { ptr @.str.6760, i64 0, i64 0 } -endif10109: - %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.6761, i64 81) - %t22 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t22, ptr %a23 - store i64 0, ptr %a24 - br label %while.cond10110 -while.cond10110: - %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.from10113 -logic.from10113: - br i1 %t28, label %logic.rhs10114, label %logic.end10115 -logic.rhs10114: - %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 %range10116, label %inrange10117 -range10116: - call void @finch_panic_index(ptr @.str.6763, i64 83, i64 %t32, i64 %t34) - unreachable -inrange10117: - %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 - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = xor i1 %t43, true - br label %logic.rend10118 -logic.rend10118: - br label %logic.end10115 -logic.end10115: - %t46 = phi i1 [ false, %logic.from10113 ], [ %t45, %logic.rend10118 ] - br i1 %t46, label %while.body10111, label %while.end10112 -while.body10111: - %t47 = load i64, ptr %a24 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a24 - br label %while.cond10110 -while.end10112: - %t49 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a24 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6764, i64 86) - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t53 -} - -define internal void @finch.drop.S_linker_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal void @finch.drop.arr_S_linker_Names(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10222 -n.cond10222: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10223, label %n.end10224 -n.body10223: - %t7 = getelementptr inbounds %S.linker.Names, ptr %t1, i64 %t5 - call void @finch.drop.S_linker_Names(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10222 -n.end10224: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca i64, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a238 = alloca i64, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca i64, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.cimport.CImports %p1, ptr %a2 - store %S.platform.Target %p2, ptr %a3 - 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.6766, 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.cond10119 -each.cond10119: - %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.body10120, label %each.end10122 -each.body10120: - %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.6769, 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 %then10123, label %else10124 -then10123: - %t33 = load { ptr, i64, i64 }, ptr %a26 - %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6770, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6771, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif10125 -else10124: - %t36 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.6773, i64 18, i64 0 }, ptr %a39 - %t40 = call i64 @finch_str_find(ptr %a37, ptr %a39) - %t41 = icmp sge i64 %t40, 0 - br i1 %t41, label %then10126, label %else10127 -then10126: - %t42 = load { ptr, i64, i64 }, ptr %a26 - %t43 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t42, { ptr, i64, i64 } { ptr @.str.6774, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6775, i64 2, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - br label %endif10128 -else10127: - %t45 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6777, i64 27, i64 0 }, ptr %a48 - %t49 = call i64 @finch_str_find(ptr %a46, ptr %a48) - %t50 = icmp sge i64 %t49, 0 - br i1 %t50, label %then10129, label %else10130 -then10129: - %t51 = load { ptr, i64, i64 }, ptr %a26 - %t52 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t51, { ptr, i64, i64 } { ptr @.str.6778, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6779, i64 3, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - br label %endif10131 -else10130: - %t54 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6781, i64 14, i64 0 }, ptr %a57 - %t58 = call i64 @finch_str_find(ptr %a55, ptr %a57) - %t59 = icmp sge i64 %t58, 0 - br i1 %t59, label %then10132, label %else10133 -then10132: - %t60 = load { ptr, i64, i64 }, ptr %a26 - %t61 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t60, { ptr, i64, i64 } { ptr @.str.6782, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6783, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch_str_drop(ptr %a62) - br label %endif10134 -else10133: - %t63 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6785, i64 24, i64 0 }, ptr %a66 - %t67 = call i64 @finch_str_find(ptr %a64, ptr %a66) - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then10135, label %else10136 -then10135: - %t69 = load { ptr, i64, i64 }, ptr %a26 - %t70 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t69, { ptr, i64, i64 } { ptr @.str.6786, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6787, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif10137 -else10136: - %t72 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.6789, i64 13, i64 0 }, ptr %a75 - %t76 = call i64 @finch_str_find(ptr %a73, ptr %a75) - %t77 = icmp sge i64 %t76, 0 - br i1 %t77, label %then10138, label %else10139 -then10138: - %t78 = load { ptr, i64, i64 }, ptr %a26 - %t79 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.6790, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6791, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10140 -else10139: - %t81 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.6793, i64 11, i64 0 }, ptr %a84 - %t85 = call i64 @finch_str_find(ptr %a82, ptr %a84) - %t86 = icmp sge i64 %t85, 0 - br label %logic.from10141 -logic.from10141: - br i1 %t86, label %logic.rhs10142, label %logic.end10143 -logic.rhs10142: - %t87 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.6795, i64 9, i64 0 }, ptr %a90 - %t91 = call i64 @finch_str_find(ptr %a88, ptr %a90) - %t92 = icmp sge i64 %t91, 0 - br label %logic.rend10144 -logic.rend10144: - br label %logic.end10143 -logic.end10143: - %t93 = phi i1 [ false, %logic.from10141 ], [ %t92, %logic.rend10144 ] - br i1 %t93, label %then10145, label %else10146 -then10145: - %t94 = load { ptr, i64, i64 }, ptr %a26 - %t95 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t94, { ptr, i64, i64 } { ptr @.str.6796, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6797, i64 1, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.6798, i64 10, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t100) - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif10147 -else10146: - %t102 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.6800, i64 1, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_starts(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.from10148 -logic.from10148: - br i1 %t107, label %logic.rhs10149, label %logic.end10150 -logic.rhs10149: - %t108 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6802, i64 19, i64 0 }, ptr %a111 - %t112 = call i64 @finch_str_find(ptr %a109, ptr %a111) - %t113 = icmp sge i64 %t112, 0 - br label %logic.rend10151 -logic.rend10151: - br label %logic.end10150 -logic.end10150: - %t114 = phi i1 [ false, %logic.from10148 ], [ %t113, %logic.rend10151 ] - br i1 %t114, label %then10152, label %endif10154 -then10152: - %t115 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t115, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.6805, i64 19, i64 0 }, ptr %a121 - %t122 = call i64 @finch_str_find(ptr %a119, ptr %a121) - call void @finch_str_sub(ptr %a117, ptr %a116, i64 1, i64 %t122, ptr @.str.6803, i64 111) - %t123 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t123, ptr %a124 - %t125 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 - %t126 = load i1, ptr %t125 - br label %logic.from10155 -logic.from10155: - br i1 %t126, label %logic.rhs10156, label %logic.end10157 -logic.rhs10156: - %t127 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6807, i64 1, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_starts(ptr %a128, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend10158 -logic.rend10158: - br label %logic.end10157 -logic.end10157: - %t133 = phi i1 [ false, %logic.from10155 ], [ %t132, %logic.rend10158 ] - br i1 %t133, label %then10159, label %endif10161 -then10159: - %t134 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t134, ptr %a135 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a136, ptr %a135, i64 1, i64 %t138, ptr @.str.6808, i64 113) - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t139, ptr %a124 - store { ptr, i64, i64 } %t140, ptr %a141 - call void @finch_str_drop(ptr %a141) - br label %endif10161 -endif10161: - %t142 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t142) - call void @finch_str_drop(ptr %a124) - br label %endif10154 -endif10154: - br label %endif10147 -endif10147: - br label %endif10140 -endif10140: - br label %endif10137 -endif10137: - br label %endif10134 -endif10134: - br label %endif10131 -endif10131: - br label %endif10128 -endif10128: - br label %endif10125 -endif10125: - call void @finch_str_drop(ptr %a26) - br label %each.step10121 -each.step10121: - %t143 = load i64, ptr %a13 - %t144 = add i64 %t143, 1 - store i64 %t144, ptr %a13 - br label %each.cond10119 -each.end10122: - call void @finch.drop.arr_str(ptr %a12) - %t145 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = icmp eq i64 %t147, 0 - br label %logic.from10162 -logic.from10162: - br i1 %t148, label %logic.rhs10163, label %logic.end10164 -logic.rhs10163: - %t149 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1 - %t151 = load i64, ptr %t150 - %t152 = icmp eq i64 %t151, 0 - br label %logic.rend10165 -logic.rend10165: - br label %logic.end10164 -logic.end10164: - %t153 = phi i1 [ false, %logic.from10162 ], [ %t152, %logic.rend10165 ] - br i1 %t153, label %then10166, label %endif10168 -then10166: - %t154 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.6809, i64 21, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = trunc i64 %t159 to i32 - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = icmp eq ptr %t161, null - %t163 = select i1 %t162, ptr @.str.6810, ptr %t161 - %t164 = call i32 (ptr, ...) @printf(ptr @.str.6811, i32 %t160, ptr %t163) - store { ptr, i64, i64 } %t158, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = call i32 (ptr, ...) @printf(ptr @.str.6812) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -endif10168: - %t167 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - store i64 0, ptr %a168 - br label %each.cond10169 -each.cond10169: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10170, label %each.end10172 -each.body10170: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 %t171 - %t175 = load { ptr, i64, i64 }, ptr %t174 - store { ptr, i64, i64 } %t175, ptr %a176 - %t177 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.6813, i64 20, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t181, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.6814, i64 62, i64 0 }, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t181, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - %t187 = extractvalue { ptr, i64, i64 } %t186, 1 - %t188 = trunc i64 %t187 to i32 - %t189 = extractvalue { ptr, i64, i64 } %t186, 0 - %t190 = icmp eq ptr %t189, null - %t191 = select i1 %t190, ptr @.str.6815, ptr %t189 - %t192 = call i32 (ptr, ...) @printf(ptr @.str.6816, i32 %t188, ptr %t191) - store { ptr, i64, i64 } %t186, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call i32 (ptr, ...) @printf(ptr @.str.6817) - br label %each.step10171 -each.step10171: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10169 -each.end10172: - store { ptr, i64, i64 } zeroinitializer, ptr %a197 - store { ptr, i64, i64 } zeroinitializer, ptr %a198 - %t199 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - store i64 0, ptr %a200 - br label %each.cond10173 -each.cond10173: - %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.body10174, label %each.end10176 -each.body10174: - %t205 = load ptr, ptr %t199 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i64 %t203 - %t207 = load { ptr, i64, i64 }, ptr %t206 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.6818, i64 0, i64 0 }, ptr %a209 - %t210 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a212 - %t213 = call i64 @finch_map_find(ptr %t210, ptr %a212, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t214 = icmp sge i64 %t213, 0 - br i1 %t214, label %then10177, label %endif10179 -then10177: - %t215 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t216 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t216, ptr %a217 - %t218 = call i64 @finch_map_find(ptr %t215, ptr %a217, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t219 = icmp slt i64 %t218, 0 - br i1 %t219, label %map.missing10180, label %map.found10181 -map.missing10180: - store { ptr, i64, i64 } zeroinitializer, ptr %a220 - store { ptr, i64, i64 } %t216, ptr %a221 - call void @finch_buf_str(ptr %a220, ptr %a221, i32 1) - call void @finch_map_missing(ptr @.str.6819, i64 131, ptr %a220) - unreachable -map.found10181: - %t222 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t215, i32 0, i32 0 - %t223 = load ptr, ptr %t222 - %t224 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t223, i64 %t218 - %t225 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t224, i32 0, i32 2 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %t225, i32 0, i32 1 - %t227 = load { ptr, i64, i64 }, ptr %t226 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_copy(ptr %a229, ptr %a228) - %t230 = load { ptr, i64, i64 }, ptr %a229 - %t231 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t230, ptr %a209 - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif10179 -endif10179: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %a209 - store i64 -1, ptr %a235 - %t236 = load i64, ptr %t233 - %t237 = load ptr, ptr %a197 - store i64 0, ptr %a238 - br label %find.cond10182 -find.cond10182: - %t239 = load i64, ptr %a238 - %t240 = icmp slt i64 %t239, %t236 - br i1 %t240, label %find.body10183, label %find.end10186 -find.body10183: - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t239 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - store { ptr, i64, i64 } %t234, ptr %a244 - %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) - %t246 = icmp ne i32 %t245, 0 - br i1 %t246, label %find.hit10184, label %find.next10185 -find.hit10184: - store i64 %t239, ptr %a235 - br label %find.end10186 -find.next10185: - %t247 = add i64 %t239, 1 - store i64 %t247, ptr %a238 - br label %find.cond10182 -find.end10186: - %t248 = load i64, ptr %a235 - store i64 %t248, ptr %a249 - %t250 = load i64, ptr %a249 - %t251 = icmp slt i64 %t250, 0 - br i1 %t251, label %then10187, label %endif10189 -then10187: - %t252 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t253 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = load i64, ptr %t252 - %t258 = add i64 %t257, 1 - call void @finch_arr_reserve(ptr %a197, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t259 = load ptr, ptr %a197 - %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 - store { ptr, i64, i64 } %t256, ptr %t260 - store i64 %t258, ptr %t252 - %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 - %t262 = load i64, ptr %t261 - %t263 = add i64 %t262, 1 - call void @finch_arr_reserve(ptr %a198, i64 %t263, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) - %t264 = load ptr, ptr %a198 - %t265 = getelementptr inbounds %S.linker.Names, ptr %t264, i64 %t262 - store %S.linker.Names zeroinitializer, ptr %t265 - store i64 %t263, ptr %t261 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = sub i64 %t267, 1 - store i64 %t268, ptr %a249 - br label %endif10189 -endif10189: - %t269 = load i64, ptr %a249 - %t270 = load { ptr, i64, i64 }, ptr %a198 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 %t269, %t271 - br i1 %t272, label %range10190, label %inrange10191 -range10190: - call void @finch_panic_index(ptr @.str.6820, i64 139, i64 %t269, i64 %t271) - unreachable -inrange10191: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i64 %t269 - %t275 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.linker.Names.add(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a209) - br label %each.step10175 -each.step10175: - %t276 = load i64, ptr %a200 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a200 - br label %each.cond10173 -each.end10176: - %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t279 = load i64, ptr %t278 - store i64 0, ptr %a280 - br label %for.cond10192 -for.cond10192: - %t281 = load i64, ptr %a280 - %t282 = icmp slt i64 %t281, %t279 - br i1 %t282, label %for.body10193, label %for.end10195 -for.body10193: - %t283 = load i64, ptr %a280 - %t284 = load { ptr, i64, i64 }, ptr %a198 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range10196, label %inrange10197 -range10196: - call void @finch_panic_index(ptr @.str.6821, i64 142, i64 %t283, i64 %t285) - unreachable -inrange10197: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds %S.linker.Names, ptr %t287, i64 %t283 - %t289 = getelementptr inbounds %S.linker.Names, ptr %t288, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch.copy.arr_str(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t293, ptr %a294 - store { ptr, i64, i64 } zeroinitializer, ptr %a295 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t297 = load i64, ptr %t296 - store i64 0, ptr %a298 - br label %for.cond10198 -for.cond10198: - %t299 = load i64, ptr %a298 - %t300 = icmp slt i64 %t299, %t297 - br i1 %t300, label %for.body10199, label %for.end10201 -for.body10199: - %t301 = load i64, ptr %a298 - %t302 = icmp slt i64 %t301, 3 - br i1 %t302, label %then10202, label %endif10204 -then10202: - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - %t304 = load i64, ptr %a298 - %t305 = load { ptr, i64, i64 }, ptr %a294 - %t306 = extractvalue { ptr, i64, i64 } %t305, 1 - %t307 = icmp uge i64 %t304, %t306 - br i1 %t307, label %range10205, label %inrange10206 -range10205: - call void @finch_panic_index(ptr @.str.6822, i64 146, i64 %t304, i64 %t306) - unreachable -inrange10206: - %t308 = extractvalue { ptr, i64, i64 } %t305, 0 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t304 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_copy(ptr %a312, ptr %a311) - %t313 = load { ptr, i64, i64 }, ptr %a312 - %t314 = load i64, ptr %t303 - %t315 = add i64 %t314, 1 - call void @finch_arr_reserve(ptr %a295, i64 %t315, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t316 = load ptr, ptr %a295 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 %t314 - store { ptr, i64, i64 } %t313, ptr %t317 - store i64 %t315, ptr %t303 - br label %endif10204 -endif10204: - br label %for.step10200 -for.step10200: - %t318 = load i64, ptr %a298 - %t319 = add i64 %t318, 1 - store i64 %t319, ptr %a298 - br label %for.cond10198 -for.end10201: - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6823, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a295, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t326 = load i64, ptr %t325 - %t327 = icmp sgt i64 %t326, 3 - br i1 %t327, label %then10207, label %endif10209 -then10207: - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6824, i64 5, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t334 = load i64, ptr %t333 - %t335 = sub i64 %t334, 3 - call void @finch_str_from_int(ptr %a336, i64 %t335) - %t337 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t332, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) - store { ptr, i64, i64 } %t332, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t337, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a338 - store { ptr, i64, i64 } %t343, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.6825, i64 5, i64 0 }, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - %t349 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t348, ptr %a324 - store { ptr, i64, i64 } %t349, ptr %a350 - call void @finch_str_drop(ptr %a350) - br label %endif10209 -endif10209: - %t351 = load i64, ptr %a280 - %t352 = load { ptr, i64, i64 }, ptr %a197 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range10210, label %inrange10211 -range10210: - call void @finch_panic_index(ptr @.str.6826, i64 153, i64 %t351, i64 %t353) - unreachable -inrange10211: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds { ptr, i64, i64 }, ptr %t355, i64 %t351 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %then10212, label %endif10214 -then10212: - %t360 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6827, i64 25, i64 0 }, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a361 - %t365 = extractvalue { ptr, i64, i64 } %t364, 1 - %t366 = trunc i64 %t365 to i32 - %t367 = extractvalue { ptr, i64, i64 } %t364, 0 - %t368 = icmp eq ptr %t367, null - %t369 = select i1 %t368, ptr @.str.6828, ptr %t367 - %t370 = call i32 (ptr, ...) @printf(ptr @.str.6829, i32 %t366, ptr %t369) - store { ptr, i64, i64 } %t364, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = call i32 (ptr, ...) @printf(ptr @.str.6830) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10194 -endif10214: - store { ptr, i64, i64 } { ptr @.str.6831, i64 4, i64 0 }, ptr %a373 - %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t375 = load i64, ptr %t374 - %t376 = icmp eq i64 %t375, 1 - br i1 %t376, label %then10215, label %endif10217 -then10215: - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.6832, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a378 - call void @finch_str_drop(ptr %a378) - br label %endif10217 -endif10217: - %t379 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6833, i64 7, i64 0 }, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - %t383 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t383, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.6834, i64 1, i64 0 }, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t383, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - %t389 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t388, ptr %a391 - store { ptr, i64, i64 } %t389, ptr %a392 - call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) - store { ptr, i64, i64 } %t388, ptr %a393 - call void @finch_str_drop(ptr %a393) - %t394 = load { ptr, i64, i64 }, ptr %a390 - store { ptr, i64, i64 } %t394, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.6835, i64 7, i64 0 }, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t394, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = load i64, ptr %a280 - %t401 = load { ptr, i64, i64 }, ptr %a197 - %t402 = extractvalue { ptr, i64, i64 } %t401, 1 - %t403 = icmp uge i64 %t400, %t402 - br i1 %t403, label %range10218, label %inrange10219 -range10218: - call void @finch_panic_index(ptr @.str.6836, i64 161, i64 %t400, i64 %t402) - unreachable -inrange10219: - %t404 = extractvalue { ptr, i64, i64 } %t401, 0 - %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i64 %t400 - %t406 = load { ptr, i64, i64 }, ptr %t405 - store { ptr, i64, i64 } %t399, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t399, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t411, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.6837, i64 31, i64 0 }, ptr %a414 - call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch_str_drop(ptr %a415) - %t416 = load { ptr, i64, i64 }, ptr %a412 - %t417 = extractvalue { ptr, i64, i64 } %t416, 1 - %t418 = trunc i64 %t417 to i32 - %t419 = extractvalue { ptr, i64, i64 } %t416, 0 - %t420 = icmp eq ptr %t419, null - %t421 = select i1 %t420, ptr @.str.6838, ptr %t419 - %t422 = call i32 (ptr, ...) @printf(ptr @.str.6839, i32 %t418, ptr %t421) - store { ptr, i64, i64 } %t416, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = call i32 (ptr, ...) @printf(ptr @.str.6840) - %t425 = extractvalue { ptr, i64, i64 } { ptr @.str.6841, i64 74, i64 0 }, 1 - %t426 = trunc i64 %t425 to i32 - %t427 = extractvalue { ptr, i64, i64 } { ptr @.str.6841, i64 74, i64 0 }, 0 - %t428 = icmp eq ptr %t427, null - %t429 = select i1 %t428, ptr @.str.6842, ptr %t427 - %t430 = call i32 (ptr, ...) @printf(ptr @.str.6843, i32 %t426, ptr %t429) - %t431 = call i32 (ptr, ...) @printf(ptr @.str.6844) - %t432 = extractvalue { ptr, i64, i64 } { ptr @.str.6845, i64 66, i64 0 }, 1 - %t433 = trunc i64 %t432 to i32 - %t434 = extractvalue { ptr, i64, i64 } { ptr @.str.6845, i64 66, i64 0 }, 0 - %t435 = icmp eq ptr %t434, null - %t436 = select i1 %t435, ptr @.str.6846, ptr %t434 - %t437 = call i32 (ptr, ...) @printf(ptr @.str.6847, i32 %t433, ptr %t436) - %t438 = call i32 (ptr, ...) @printf(ptr @.str.6848) - %t439 = extractvalue { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, 1 - %t440 = trunc i64 %t439 to i32 - %t441 = extractvalue { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, 0 - %t442 = icmp eq ptr %t441, null - %t443 = select i1 %t442, ptr @.str.6850, ptr %t441 - %t444 = call i32 (ptr, ...) @printf(ptr @.str.6851, i32 %t440, ptr %t443) - %t445 = call i32 (ptr, ...) @printf(ptr @.str.6852) - %t446 = load i64, ptr %a280 - %t447 = load { ptr, i64, i64 }, ptr %a197 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range10220, label %inrange10221 -range10220: - call void @finch_panic_index(ptr @.str.6854, i64 165, i64 %t446, i64 %t448) - unreachable -inrange10221: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds { ptr, i64, i64 }, ptr %t450, i64 %t446 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t452) - store { ptr, i64, i64 } { ptr @.str.6853, i64 12, i64 0 }, ptr %a455 - store { ptr, i64, i64 } %t453, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - store { ptr, i64, i64 } %t453, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a454 - store { ptr, i64, i64 } %t458, ptr %a460 - store { ptr, i64, i64 } { ptr @.str.6855, i64 1, i64 0 }, ptr %a461 - call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) - store { ptr, i64, i64 } %t458, ptr %a462 - call void @finch_str_drop(ptr %a462) - %t463 = load { ptr, i64, i64 }, ptr %a459 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = trunc i64 %t464 to i32 - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = icmp eq ptr %t466, null - %t468 = select i1 %t467, ptr @.str.6856, ptr %t466 - %t469 = call i32 (ptr, ...) @printf(ptr @.str.6857, i32 %t465, ptr %t468) - store { ptr, i64, i64 } %t463, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = call i32 (ptr, ...) @printf(ptr @.str.6858) - %t472 = extractvalue { ptr, i64, i64 } { ptr @.str.6859, i64 0, i64 0 }, 1 - %t473 = trunc i64 %t472 to i32 - %t474 = extractvalue { ptr, i64, i64 } { ptr @.str.6859, i64 0, i64 0 }, 0 - %t475 = icmp eq ptr %t474, null - %t476 = select i1 %t475, ptr @.str.6860, ptr %t474 - %t477 = call i32 (ptr, ...) @printf(ptr @.str.6861, i32 %t473, ptr %t476) - %t478 = call i32 (ptr, ...) @printf(ptr @.str.6862) - call void @finch_str_drop(ptr %a373) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10194 -for.step10194: - %t479 = load i64, ptr %a280 - %t480 = add i64 %t479, 1 - store i64 %t480, ptr %a280 - br label %for.cond10192 -for.end10195: - call void @finch.drop.arr_S_linker_Names(ptr %a198) - call void @finch.drop.arr_str(ptr %a197) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -} - -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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca i64, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - 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.failed10225, label %try.ok10226 -try.failed10225: - %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.ok10226: - store { ptr, i64, i64 } %t11, ptr %a13 - %t14 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t14, ptr %a15 - %t16 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.6863, 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) - store { ptr, i64, i64 } %t26, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.6864, i64 3, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - %t39 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t20, ptr %a42 - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t20, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t39, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.6865, i64 2, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = call i32 @finch_file_exists(ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then10227, label %endif10229 -then10227: - %t57 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t58 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t59 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t58, { ptr, i64, i64 } %t57, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t59 -endif10229: - %t60 = load { ptr, i64, i64 }, ptr %a15 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t60) - %t61 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6866, i64 5, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t65, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.6867, i64 6, i64 0 }, ptr %a76 - %t77 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then10230, label %endif10232 -then10230: - %t79 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.6868, i64 0, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10232 -endif10232: - %t81 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.6869, i64 4, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.6870, i64 4, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - %t92 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t91, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.6871, i64 4, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load { ptr, i64, i64 }, ptr %a1 - %t104 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a106 - store { ptr, i64, i64 } %t104, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.6872, i64 4, i64 0 }, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - %t116 = load { ptr, i64, i64 }, ptr %a75 - %t117 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t115, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t115, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.6873, i64 3, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a86 - %t130 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6874, i64 5, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call i64 @finch.host.run({ ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - store i64 %t142, ptr %a144 - %t145 = load i64, ptr %a144 - %t146 = icmp ne i64 %t145, 0 - br i1 %t146, label %then10233, label %endif10235 -then10233: - %t147 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } zeroinitializer, ptr %a149 - store { ptr, i64, i64 } zeroinitializer, ptr %a150 - %t151 = call i32 @finch_try_read_file(ptr %a149, ptr %a148, ptr %a150) - %t152 = icmp eq i32 %t151, 0 - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = load { ptr, i64, i64 }, ptr %a149 - br i1 %t152, label %or.failed10236, label %or.ok10237 -or.failed10236: - store { ptr, i64, i64 } %t153, ptr %a155 - call void @finch_str_drop(ptr %a155) - br label %or.bend10238 -or.bend10238: - br label %or.end10239 -or.ok10237: - br label %or.end10239 -or.end10239: - %t156 = phi { ptr, i64, i64 } [ { ptr @.str.6875, i64 0, i64 0 }, %or.bend10238 ], [ %t154, %or.ok10237 ] - store { ptr, i64, i64 } %t156, ptr %a157 - %t158 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.host.remove({ ptr, i64, i64 } %t158) - %t159 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t159) - %t160 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6876, i64 46, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t164, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.6877, i64 30, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch_str_drop(ptr %a157) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a52) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t176 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t175, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t176 -endif10235: - %t177 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t177) - %t178 = load { ptr, i64, i64 }, ptr %a75 - %t179 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.host.move({ ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) - %t180 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t181 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t182 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t181, { ptr, i64, i64 } %t180, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t182 -} - -define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) { -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = 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 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a204 = 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 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = 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 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a270 = 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 - %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 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = 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 - %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 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca i64, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = 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 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = 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 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %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 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a513 = 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 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca i64, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca i64, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a580 = 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.6878, i64 11, i64 0 }, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6879, 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 %then10240, label %endif10242 -then10240: - %t17 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.6880, i64 5, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %endif10242 -endif10242: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_copy(ptr %a21, ptr %a20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t25 = load i1, ptr %t24 - br i1 %t25, label %then10243, label %else10244 -then10243: - %t26 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7 - %t27 = load { ptr, i64, i64 }, ptr %t26 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - %t31 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t30, ptr %a23 - store { ptr, i64, i64 } %t31, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif10245 -else10244: - %t33 = extractvalue { ptr, i64, i64 } { ptr @.str.6881, i64 8, i64 0 }, 0 - %t34 = icmp eq ptr %t33, null - %t35 = select i1 %t34, ptr @.str.6882, ptr %t33 - %t36 = call ptr @getenv(ptr %t35) - store { ptr, i64, i64 } zeroinitializer, ptr %a37 - call void @finch_str_from_c(ptr %a37, ptr %t36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = extractvalue { ptr, i64, i64 } %t38, 1 - %t40 = icmp sgt i64 %t39, 0 - br i1 %t40, label %then10246, label %endif10248 -then10246: - %t41 = extractvalue { ptr, i64, i64 } { ptr @.str.6883, i64 8, i64 0 }, 0 - %t42 = icmp eq ptr %t41, null - %t43 = select i1 %t42, ptr @.str.6884, ptr %t41 - %t44 = call ptr @getenv(ptr %t43) - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - call void @finch_str_from_c(ptr %a45, ptr %t44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a23 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif10248 -endif10248: - br label %endif10245 -endif10245: - %t52 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = load %S.platform.Target, ptr %a2 - %t55 = load { ptr, i64, i64 }, ptr %a23 - %t56 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t53, %S.platform.Target %t54, { ptr, i64, i64 } %t55) - %t57 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 0 - %t58 = xor i1 %t57, true - %t59 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 2 - %t60 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 1 - br i1 %t58, label %or.failed10249, label %or.ok10250 -or.failed10249: - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = trunc i64 %t63 to i32 - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = icmp eq ptr %t65, null - %t67 = select i1 %t66, ptr @.str.6885, ptr %t65 - %t68 = call i32 (ptr, ...) @printf(ptr @.str.6886, i32 %t64, ptr %t67) - %t69 = call i32 (ptr, ...) @printf(ptr @.str.6887) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -or.ok10250: - store { ptr, i64, i64 } %t60, ptr %a70 - %t71 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6888, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t76, ptr %a77 - %t78 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.6889, i64 2, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a77 - %t86 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = call i32 @finch_write_file(ptr %a88, ptr %a89) - %t91 = icmp ne i32 %t90, 0 - store { ptr, i64, i64 } { ptr @.str.6890, i64 0, i64 0 }, ptr %a92 - %t93 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t94 = load i1, ptr %t93 - br label %logic.from10251 -logic.from10251: - br i1 %t94, label %logic.end10253, label %logic.rhs10252 -logic.rhs10252: - %t95 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t96 = load i1, ptr %t95 - br label %logic.rend10254 -logic.rend10254: - br label %logic.end10253 -logic.end10253: - %t97 = phi i1 [ true, %logic.from10251 ], [ %t96, %logic.rend10254 ] - br i1 %t97, label %then10255, label %endif10257 -then10255: - %t98 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } { ptr @.str.6891, i64 10, i64 0 }, 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 - %t104 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t103, ptr %a92 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - br label %endif10257 -endif10257: - %t106 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6892, i64 4, i64 0 }, 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 %a112 - %t113 = load { ptr, i64, i64 }, ptr %a13 - %t114 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.6893, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3 - %t125 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t123, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t123, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t130, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.6894, i64 7, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = load { ptr, i64, i64 }, ptr %a77 - %t144 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t142, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t142, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.6895, i64 4, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a84 - %t157 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t155, ptr %a161 - call void @finch_str_drop(ptr %a161) - store { ptr, i64, i64 } %t157, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a158 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.6896, i64 3, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = load { ptr, i64, i64 }, ptr %a112 - %t170 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t169) - store { ptr, i64, i64 } %t168, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t168, ptr %a174 - call void @finch_str_drop(ptr %a174) - store { ptr, i64, i64 } %t170, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.6897, i64 5, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call i64 @finch.host.run({ ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - store i64 %t182, ptr %a184 - %t185 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.host.remove({ ptr, i64, i64 } %t185) - %t186 = load i64, ptr %a184 - %t187 = icmp ne i64 %t186, 0 - br i1 %t187, label %then10258, label %endif10260 -then10258: - %t188 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t188, ptr %a189 - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - store { ptr, i64, i64 } zeroinitializer, ptr %a191 - %t192 = call i32 @finch_try_read_file(ptr %a190, ptr %a189, ptr %a191) - %t193 = icmp eq i32 %t192, 0 - %t194 = load { ptr, i64, i64 }, ptr %a191 - %t195 = load { ptr, i64, i64 }, ptr %a190 - br i1 %t193, label %or.failed10261, label %or.ok10262 -or.failed10261: - store { ptr, i64, i64 } %t194, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %or.bend10263 -or.bend10263: - br label %or.end10264 -or.ok10262: - br label %or.end10264 -or.end10264: - %t197 = phi { ptr, i64, i64 } [ { ptr @.str.6898, i64 0, i64 0 }, %or.bend10263 ], [ %t195, %or.ok10262 ] - %t198 = extractvalue { ptr, i64, i64 } %t197, 1 - %t199 = trunc i64 %t198 to i32 - %t200 = extractvalue { ptr, i64, i64 } %t197, 0 - %t201 = icmp eq ptr %t200, null - %t202 = select i1 %t201, ptr @.str.6899, ptr %t200 - %t203 = call i32 (ptr, ...) @printf(ptr @.str.6900, i32 %t199, ptr %t202) - store { ptr, i64, i64 } %t197, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = call i32 (ptr, ...) @printf(ptr @.str.6901) - %t206 = extractvalue { ptr, i64, i64 } { ptr @.str.6902, i64 46, i64 0 }, 1 - %t207 = trunc i64 %t206 to i32 - %t208 = extractvalue { ptr, i64, i64 } { ptr @.str.6902, i64 46, i64 0 }, 0 - %t209 = icmp eq ptr %t208, null - %t210 = select i1 %t209, ptr @.str.6903, ptr %t208 - %t211 = call i32 (ptr, ...) @printf(ptr @.str.6904, i32 %t207, ptr %t210) - %t212 = call i32 (ptr, ...) @printf(ptr @.str.6905) - %t213 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t213) - %t214 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t214) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10260: - %t215 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.6906, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a216 - %t220 = load { ptr, i64, i64 }, ptr %a84 - %t221 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t220) - store { ptr, i64, i64 } %t219, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t219, ptr %a225 - call void @finch_str_drop(ptr %a225) - store { ptr, i64, i64 } %t221, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.6907, i64 1, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load { ptr, i64, i64 }, ptr %a70 - %t234 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t232, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t232, ptr %a238 - call void @finch_str_drop(ptr %a238) - store { ptr, i64, i64 } %t234, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.6908, i64 4, i64 0 }, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t247 = load { ptr, i64, i64 }, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t245, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t245, ptr %a252 - call void @finch_str_drop(ptr %a252) - store { ptr, i64, i64 } %t248, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2 - %t257 = load i1, ptr %t256 - %t258 = xor i1 %t257, true - br i1 %t258, label %then10265, label %endif10267 -then10265: - %t259 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.6909, i64 4, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - %t264 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t263, ptr %a255 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch_str_drop(ptr %a265) - br label %endif10267 -endif10267: - %t266 = extractvalue { ptr, i64, i64 } { ptr @.str.6910, i64 13, i64 0 }, 0 - %t267 = icmp eq ptr %t266, null - %t268 = select i1 %t267, ptr @.str.6911, ptr %t266 - %t269 = call ptr @getenv(ptr %t268) - store { ptr, i64, i64 } zeroinitializer, ptr %a270 - call void @finch_str_from_c(ptr %a270, ptr %t269) - %t271 = load { ptr, i64, i64 }, ptr %a270 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp sgt i64 %t272, 0 - br i1 %t273, label %then10268, label %endif10270 -then10268: - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.6912, i64 1, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - %t279 = extractvalue { ptr, i64, i64 } { ptr @.str.6913, i64 13, i64 0 }, 0 - %t280 = icmp eq ptr %t279, null - %t281 = select i1 %t280, ptr @.str.6914, ptr %t279 - %t282 = call ptr @getenv(ptr %t281) - store { ptr, i64, i64 } zeroinitializer, ptr %a283 - call void @finch_str_from_c(ptr %a283, ptr %t282) - %t284 = load { ptr, i64, i64 }, ptr %a283 - store { ptr, i64, i64 } %t278, ptr %a286 - store { ptr, i64, i64 } %t284, ptr %a287 - call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) - store { ptr, i64, i64 } %t278, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a285 - %t290 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t289, ptr %a255 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif10270 -endif10270: - %t292 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 - %t293 = load i1, ptr %t292 - br i1 %t293, label %then10271, label %endif10273 -then10271: - %t294 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 - %t295 = load i1, ptr %t294 - br i1 %t295, label %then10274, label %else10275 -then10274: - %t296 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.6915, i64 12, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t300, ptr %a255 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif10276 -else10275: - %t303 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.6916, i64 8, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t307, ptr %a255 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10276 -endif10276: - br label %endif10273 -endif10273: - store { ptr, i64, i64 } zeroinitializer, ptr %a310 - %t311 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6 - store i64 0, ptr %a312 - br label %each.cond10277 -each.cond10277: - %t313 = getelementptr inbounds { ptr, i64, i64 }, ptr %t311, i32 0, i32 1 - %t314 = load i64, ptr %t313 - %t315 = load i64, ptr %a312 - %t316 = icmp slt i64 %t315, %t314 - br i1 %t316, label %each.body10278, label %each.end10280 -each.body10278: - %t317 = load ptr, ptr %t311 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i64 %t315 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - %t321 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.6918, i64 2, i64 0 }, ptr %a324 - %t325 = call i32 @finch_str_ends(ptr %a322, ptr %a324) - %t326 = icmp ne i32 %t325, 0 - br i1 %t326, label %then10281, label %else10282 -then10281: - %t327 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t328 = load { ptr, i64, i64 }, ptr %t327 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6919, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t334 = load i64, ptr %t333 - call void @finch_str_from_int(ptr %a335, i64 %t334) - %t336 = load { ptr, i64, i64 }, ptr %a335 - store { ptr, i64, i64 } %t332, ptr %a338 - store { ptr, i64, i64 } %t336, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t332, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t336, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load { ptr, i64, i64 }, ptr %a337 - store { ptr, i64, i64 } %t342, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6920, i64 2, i64 0 }, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - store { ptr, i64, i64 } %t342, ptr %a346 - call void @finch_str_drop(ptr %a346) - %t347 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t347, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.6921, i64 6, i64 0 }, ptr %a349 - %t350 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t351 = load i1, ptr %t350 - br i1 %t351, label %then10284, label %endif10286 -then10284: - %t352 = load { ptr, i64, i64 }, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.6922, i64 0, i64 0 }, ptr %a349 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - br label %endif10286 -endif10286: - %t354 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6923, i64 4, 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 %a349 - 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) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t364, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.6924, i64 4, i64 0 }, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - %t370 = load { ptr, i64, i64 }, ptr %a320 - %t371 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t369, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t369, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.6925, i64 4, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = load { ptr, i64, i64 }, ptr %a348 - %t384 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t383) - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - store { ptr, i64, i64 } %t384, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.6926, i64 3, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a112 - %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) - store { ptr, i64, i64 } %t395, ptr %a401 - call void @finch_str_drop(ptr %a401) - store { ptr, i64, i64 } %t397, ptr %a402 - call void @finch_str_drop(ptr %a402) - %t403 = load { ptr, i64, i64 }, ptr %a398 - store { ptr, i64, i64 } %t403, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.6927, i64 5, i64 0 }, ptr %a406 - call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406) - store { ptr, i64, i64 } %t403, ptr %a407 - call void @finch_str_drop(ptr %a407) - %t408 = load { ptr, i64, i64 }, ptr %a404 - %t409 = call i64 @finch.host.run({ ptr, i64, i64 } %t408) - store { ptr, i64, i64 } %t408, ptr %a410 - call void @finch_str_drop(ptr %a410) - store i64 %t409, ptr %a411 - %t412 = load i64, ptr %a411 - %t413 = icmp ne i64 %t412, 0 - br i1 %t413, label %then10287, label %endif10289 -then10287: - %t414 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t414, ptr %a415 - store { ptr, i64, i64 } zeroinitializer, ptr %a416 - store { ptr, i64, i64 } zeroinitializer, ptr %a417 - %t418 = call i32 @finch_try_read_file(ptr %a416, ptr %a415, ptr %a417) - %t419 = icmp eq i32 %t418, 0 - %t420 = load { ptr, i64, i64 }, ptr %a417 - %t421 = load { ptr, i64, i64 }, ptr %a416 - br i1 %t419, label %or.failed10290, label %or.ok10291 -or.failed10290: - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - br label %or.bend10292 -or.bend10292: - br label %or.end10293 -or.ok10291: - br label %or.end10293 -or.end10293: - %t423 = phi { ptr, i64, i64 } [ { ptr @.str.6928, i64 0, i64 0 }, %or.bend10292 ], [ %t421, %or.ok10291 ] - store { ptr, i64, i64 } %t423, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.6929, i64 24, i64 0 }, ptr %a426 - call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) - store { ptr, i64, i64 } %t423, ptr %a427 - call void @finch_str_drop(ptr %a427) - %t428 = load { ptr, i64, i64 }, ptr %a424 - %t429 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t428, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t428, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = extractvalue { ptr, i64, i64 } %t434, 1 - %t436 = trunc i64 %t435 to i32 - %t437 = extractvalue { ptr, i64, i64 } %t434, 0 - %t438 = icmp eq ptr %t437, null - %t439 = select i1 %t438, ptr @.str.6930, ptr %t437 - %t440 = call i32 (ptr, ...) @printf(ptr @.str.6931, i32 %t436, ptr %t439) - store { ptr, i64, i64 } %t434, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = call i32 (ptr, ...) @printf(ptr @.str.6932) - %t443 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t443) - %t444 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t444) - %t445 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.host.remove({ ptr, i64, i64 } %t445) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10289: - %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t447, ptr %a448 - call void @finch_str_copy(ptr %a449, ptr %a448) - %t450 = load { ptr, i64, i64 }, ptr %a449 - %t451 = load i64, ptr %t446 - %t452 = add i64 %t451, 1 - call void @finch_arr_reserve(ptr %a310, i64 %t452, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t453 = load ptr, ptr %a310 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t451 - store { ptr, i64, i64 } %t450, ptr %t454 - store i64 %t452, ptr %t446 - %t455 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.6933, i64 1, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - %t459 = load { ptr, i64, i64 }, ptr %a456 - %t460 = load { ptr, i64, i64 }, ptr %a348 - %t461 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t460) - store { ptr, i64, i64 } %t459, ptr %a463 - store { ptr, i64, i64 } %t461, ptr %a464 - call void @finch_str_concat(ptr %a462, ptr %a463, ptr %a464) - store { ptr, i64, i64 } %t459, ptr %a465 - call void @finch_str_drop(ptr %a465) - store { ptr, i64, i64 } %t461, ptr %a466 - call void @finch_str_drop(ptr %a466) - %t467 = load { ptr, i64, i64 }, ptr %a462 - %t468 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t467, ptr %a255 - store { ptr, i64, i64 } %t468, ptr %a469 - call void @finch_str_drop(ptr %a469) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - br label %endif10283 -else10282: - %t470 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.6935, i64 2, i64 0 }, ptr %a473 - %t474 = call i32 @finch_str_ends(ptr %a471, ptr %a473) - %t475 = icmp ne i32 %t474, 0 - br label %logic.from10294 -logic.from10294: - br i1 %t475, label %logic.end10296, label %logic.rhs10295 -logic.rhs10295: - %t476 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t476, ptr %a477 - store { ptr, i64, i64 } { ptr @.str.6937, i64 2, i64 0 }, ptr %a479 - %t480 = call i32 @finch_str_ends(ptr %a477, ptr %a479) - %t481 = icmp ne i32 %t480, 0 - br label %logic.rend10297 -logic.rend10297: - br label %logic.end10296 -logic.end10296: - %t482 = phi i1 [ true, %logic.from10294 ], [ %t481, %logic.rend10297 ] - br i1 %t482, label %then10298, label %else10299 -then10298: - %t483 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.6938, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - %t487 = load { ptr, i64, i64 }, ptr %a484 - %t488 = load { ptr, i64, i64 }, ptr %a320 - %t489 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t487, ptr %a491 - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_concat(ptr %a490, ptr %a491, ptr %a492) - store { ptr, i64, i64 } %t487, ptr %a493 - call void @finch_str_drop(ptr %a493) - store { ptr, i64, i64 } %t489, ptr %a494 - call void @finch_str_drop(ptr %a494) - %t495 = load { ptr, i64, i64 }, ptr %a490 - %t496 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t495, ptr %a255 - store { ptr, i64, i64 } %t496, ptr %a497 - call void @finch_str_drop(ptr %a497) - br label %endif10300 -else10299: - %t498 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t498, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.6939, i64 1, i64 0 }, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - %t502 = load { ptr, i64, i64 }, ptr %a499 - %t503 = load { ptr, i64, i64 }, ptr %a320 - %t504 = load %S.platform.Target, ptr %a2 - %t505 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t503, %S.platform.Target %t504) - store { ptr, i64, i64 } %t502, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t502, ptr %a509 - call void @finch_str_drop(ptr %a509) - store { ptr, i64, i64 } %t505, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a506 - %t512 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t511, ptr %a255 - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - br label %endif10300 -endif10300: - br label %endif10283 -endif10283: - br label %each.step10279 -each.step10279: - %t514 = load i64, ptr %a312 - %t515 = add i64 %t514, 1 - store i64 %t515, ptr %a312 - br label %each.cond10277 -each.end10280: - %t516 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t516, ptr %a518 - store { ptr, i64, i64 } { ptr @.str.6940, i64 3, 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, i64, i64 }, ptr %a112 - %t522 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t520, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.6941, i64 5, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - %t534 = call i64 @finch.host.run({ ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a535 - call void @finch_str_drop(ptr %a535) - store i64 %t534, ptr %a536 - %t537 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t537, ptr %a538 - store { ptr, i64, i64 } zeroinitializer, ptr %a539 - store { ptr, i64, i64 } zeroinitializer, ptr %a540 - %t541 = call i32 @finch_try_read_file(ptr %a539, ptr %a538, ptr %a540) - %t542 = icmp eq i32 %t541, 0 - %t543 = load { ptr, i64, i64 }, ptr %a540 - %t544 = load { ptr, i64, i64 }, ptr %a539 - br i1 %t542, label %or.failed10301, label %or.ok10302 -or.failed10301: - store { ptr, i64, i64 } %t543, ptr %a545 - call void @finch_str_drop(ptr %a545) - br label %or.bend10303 -or.bend10303: - br label %or.end10304 -or.ok10302: - br label %or.end10304 -or.end10304: - %t546 = phi { ptr, i64, i64 } [ { ptr @.str.6942, i64 0, i64 0 }, %or.bend10303 ], [ %t544, %or.ok10302 ] - store { ptr, i64, i64 } %t546, ptr %a547 - %t548 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t548) - %t549 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t549) - store i64 0, ptr %a550 - br label %each.cond10305 -each.cond10305: - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t552 = load i64, ptr %t551 - %t553 = load i64, ptr %a550 - %t554 = icmp slt i64 %t553, %t552 - br i1 %t554, label %each.body10306, label %each.end10308 -each.body10306: - %t555 = load ptr, ptr %a310 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t555, i64 %t553 - %t557 = load { ptr, i64, i64 }, ptr %t556 - store { ptr, i64, i64 } %t557, ptr %a558 - %t559 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.host.remove({ ptr, i64, i64 } %t559) - br label %each.step10307 -each.step10307: - %t560 = load i64, ptr %a550 - %t561 = add i64 %t560, 1 - store i64 %t561, ptr %a550 - br label %each.cond10305 -each.end10308: - %t562 = load i64, ptr %a536 - %t563 = icmp eq i64 %t562, 127 - br i1 %t563, label %then10309, label %endif10311 -then10309: - %t564 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.6943, i64 42, i64 0 }, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t568, ptr %a570 - store { ptr, i64, i64 } { ptr @.str.6944, i64 32, i64 0 }, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t568, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - %t574 = extractvalue { ptr, i64, i64 } %t573, 1 - %t575 = trunc i64 %t574 to i32 - %t576 = extractvalue { ptr, i64, i64 } %t573, 0 - %t577 = icmp eq ptr %t576, null - %t578 = select i1 %t577, ptr @.str.6945, ptr %t576 - %t579 = call i32 (ptr, ...) @printf(ptr @.str.6946, i32 %t575, ptr %t578) - store { ptr, i64, i64 } %t573, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = call i32 (ptr, ...) @printf(ptr @.str.6947) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10311: - %t582 = load i64, ptr %a536 - %t583 = icmp ne i64 %t582, 0 - br i1 %t583, label %then10312, label %endif10314 -then10312: - %t584 = load { ptr, i64, i64 }, ptr %a547 - %t585 = load %S.cimport.CImports, ptr %a3 - %t586 = load %S.platform.Target, ptr %a2 - %t587 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t584, %S.cimport.CImports %t585, %S.platform.Target %t586) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 %t587 -endif10314: - %t588 = getelementptr inbounds { ptr, i64, i64 }, ptr %a547, i32 0, i32 1 - %t589 = load i64, ptr %t588 - %t590 = icmp sgt i64 %t589, 0 - br i1 %t590, label %then10315, label %endif10317 -then10315: - %t591 = load { ptr, i64, i64 }, ptr %a547 - %t592 = extractvalue { ptr, i64, i64 } %t591, 1 - %t593 = trunc i64 %t592 to i32 - %t594 = extractvalue { ptr, i64, i64 } %t591, 0 - %t595 = icmp eq ptr %t594, null - %t596 = select i1 %t595, ptr @.str.6948, ptr %t594 - %t597 = call i32 (ptr, ...) @printf(ptr @.str.6949, i32 %t593, ptr %t596) - %t598 = call i32 (ptr, ...) @printf(ptr @.str.6950) - br label %endif10317 -endif10317: - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 0 -} - -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.from10318 -logic.from10318: - br i1 %t3, label %logic.rhs10319, label %logic.end10320 -logic.rhs10319: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend10321 -logic.rend10321: - br label %logic.end10320 -logic.end10320: - %t6 = phi i1 [ false, %logic.from10318 ], [ %t5, %logic.rend10321 ] - br i1 %t6, label %then10322, label %endif10324 -then10322: - %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 -endif10324: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from10325 -logic.from10325: - br i1 %t12, label %logic.rhs10326, label %logic.end10327 -logic.rhs10326: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend10328 -logic.rend10328: - br label %logic.end10327 -logic.end10327: - %t15 = phi i1 [ false, %logic.from10325 ], [ %t14, %logic.rend10328 ] - br i1 %t15, label %then10329, label %endif10331 -then10329: - %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 -endif10331: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from10332 -logic.from10332: - br i1 %t22, label %logic.rhs10333, label %logic.end10334 -logic.rhs10333: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend10335 -logic.rend10335: - br label %logic.end10334 -logic.end10334: - %t25 = phi i1 [ false, %logic.from10332 ], [ %t24, %logic.rend10335 ] - br i1 %t25, label %then10336, label %endif10338 -then10336: - %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 -endif10338: - ret i64 -1 -} - -define internal void @finch.drop.arr_u8(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6952, 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 %then10339, label %endif10341 -then10339: - %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.6953, i64 114) - %t18 = load { ptr, i64, i64 }, ptr %a15 - %t19 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %endif10341 -endif10341: - store { ptr, i64, i64 } zeroinitializer, ptr %a21 - store i64 0, ptr %a22 - br label %while.cond10342 -while.cond10342: - %t23 = load i64, ptr %a22 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = icmp slt i64 %t23, %t25 - br i1 %t26, label %while.body10343, label %while.end10344 -while.body10343: - %t27 = load i64, ptr %a22 - %t28 = load { ptr, i64, i64 }, ptr %a6 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 %t27, %t29 - br i1 %t30, label %range10345, label %inrange10346 -range10345: - call void @finch_panic_index(ptr @.str.6954, i64 119, i64 %t27, i64 %t29) - unreachable -inrange10346: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds i8, ptr %t31, i64 %t27 - %t33 = load i8, ptr %t32 - %t34 = icmp eq i8 %t33, 37 - br label %logic.from10347 -logic.from10347: - br i1 %t34, label %logic.rhs10348, label %logic.end10349 -logic.rhs10348: - %t35 = load i64, ptr %a22 - %t36 = add i64 %t35, 2 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 0 - %t40 = icmp slt i64 %t36, %t39 - br label %logic.rend10350 -logic.rend10350: - br label %logic.end10349 -logic.end10349: - %t41 = phi i1 [ false, %logic.from10347 ], [ %t40, %logic.rend10350 ] - br label %logic.from10351 -logic.from10351: - br i1 %t41, label %logic.rhs10352, label %logic.end10353 -logic.rhs10352: - %t42 = load i64, ptr %a22 - %t43 = add i64 %t42, 1 - %t44 = load { ptr, i64, i64 }, ptr %a6 - %t45 = extractvalue { ptr, i64, i64 } %t44, 1 - %t46 = icmp uge i64 %t43, %t45 - br i1 %t46, label %range10354, label %inrange10355 -range10354: - call void @finch_panic_index(ptr @.str.6955, i64 119, i64 %t43, i64 %t45) - unreachable -inrange10355: - %t47 = extractvalue { ptr, i64, i64 } %t44, 0 - %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 - %t49 = load i8, ptr %t48 - %t50 = call i64 @finch.lsp.hexval(i8 %t49) - %t51 = icmp sge i64 %t50, 0 - br label %logic.rend10356 -logic.rend10356: - br label %logic.end10353 -logic.end10353: - %t52 = phi i1 [ false, %logic.from10351 ], [ %t51, %logic.rend10356 ] - br label %logic.from10357 -logic.from10357: - br i1 %t52, label %logic.rhs10358, label %logic.end10359 -logic.rhs10358: - %t53 = load i64, ptr %a22 - %t54 = add i64 %t53, 2 - %t55 = load { ptr, i64, i64 }, ptr %a6 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range10360, label %inrange10361 -range10360: - call void @finch_panic_index(ptr @.str.6956, i64 119, i64 %t54, i64 %t56) - unreachable -inrange10361: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 - %t60 = load i8, ptr %t59 - %t61 = call i64 @finch.lsp.hexval(i8 %t60) - %t62 = icmp sge i64 %t61, 0 - br label %logic.rend10362 -logic.rend10362: - br label %logic.end10359 -logic.end10359: - %t63 = phi i1 [ false, %logic.from10357 ], [ %t62, %logic.rend10362 ] - br i1 %t63, label %then10363, label %else10364 -then10363: - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t65 = load i64, ptr %a22 - %t66 = add i64 %t65, 1 - %t67 = load { ptr, i64, i64 }, ptr %a6 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range10366, label %inrange10367 -range10366: - call void @finch_panic_index(ptr @.str.6957, i64 120, i64 %t66, i64 %t68) - unreachable -inrange10367: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds i8, ptr %t70, i64 %t66 - %t72 = load i8, ptr %t71 - %t73 = call i64 @finch.lsp.hexval(i8 %t72) - %t74 = mul i64 %t73, 16 - %t75 = load i64, ptr %a22 - %t76 = add i64 %t75, 2 - %t77 = load { ptr, i64, i64 }, ptr %a6 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range10368, label %inrange10369 -range10368: - call void @finch_panic_index(ptr @.str.6958, i64 120, i64 %t76, i64 %t78) - unreachable -inrange10369: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds i8, ptr %t80, i64 %t76 - %t82 = load i8, ptr %t81 - %t83 = call i64 @finch.lsp.hexval(i8 %t82) - %t84 = add i64 %t74, %t83 - %t85 = trunc i64 %t84 to i8 - %t86 = load i64, ptr %t64 - %t87 = add i64 %t86, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t87, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t88 = load ptr, ptr %a21 - %t89 = getelementptr inbounds i8, ptr %t88, i64 %t86 - store i8 %t85, ptr %t89 - store i64 %t87, ptr %t64 - %t90 = load i64, ptr %a22 - %t91 = add i64 %t90, 3 - store i64 %t91, ptr %a22 - br label %endif10365 -else10364: - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t93 = load i64, ptr %a22 - %t94 = load { ptr, i64, i64 }, ptr %a6 - %t95 = extractvalue { ptr, i64, i64 } %t94, 1 - %t96 = icmp uge i64 %t93, %t95 - br i1 %t96, label %range10370, label %inrange10371 -range10370: - call void @finch_panic_index(ptr @.str.6959, i64 123, i64 %t93, i64 %t95) - unreachable -inrange10371: - %t97 = extractvalue { ptr, i64, i64 } %t94, 0 - %t98 = getelementptr inbounds i8, ptr %t97, i64 %t93 - %t99 = load i8, ptr %t98 - %t100 = load i64, ptr %t92 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t101, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %a21 - %t103 = getelementptr inbounds i8, ptr %t102, i64 %t100 - store i8 %t99, ptr %t103 - store i64 %t101, ptr %t92 - %t104 = load i64, ptr %a22 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a22 - br label %endif10365 -endif10365: - br label %while.cond10342 -while.end10344: - %t106 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } zeroinitializer, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_from_bytes(ptr %a107, ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.drop.arr_u8(ptr %a21) - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t109 -} - -define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { -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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6960, 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.6961, 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.cond10372 -each.cond10372: - %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.body10373, label %each.end10375 -each.body10373: - %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.from10376 -logic.from10376: - br i1 %t23, label %logic.rhs10377, label %logic.end10378 -logic.rhs10377: - %t24 = load i8, ptr %a18 - %t25 = icmp ule i8 %t24, 122 - br label %logic.rend10379 -logic.rend10379: - br label %logic.end10378 -logic.end10378: - %t26 = phi i1 [ false, %logic.from10376 ], [ %t25, %logic.rend10379 ] - br label %logic.from10380 -logic.from10380: - br i1 %t26, label %logic.end10382, label %logic.rhs10381 -logic.rhs10381: - %t27 = load i8, ptr %a18 - %t28 = icmp uge i8 %t27, 65 - br label %logic.from10383 -logic.from10383: - br i1 %t28, label %logic.rhs10384, label %logic.end10385 -logic.rhs10384: - %t29 = load i8, ptr %a18 - %t30 = icmp ule i8 %t29, 90 - br label %logic.rend10386 -logic.rend10386: - br label %logic.end10385 -logic.end10385: - %t31 = phi i1 [ false, %logic.from10383 ], [ %t30, %logic.rend10386 ] - br label %logic.rend10387 -logic.rend10387: - br label %logic.end10382 -logic.end10382: - %t32 = phi i1 [ true, %logic.from10380 ], [ %t31, %logic.rend10387 ] - br label %logic.from10388 -logic.from10388: - br i1 %t32, label %logic.end10390, label %logic.rhs10389 -logic.rhs10389: - %t33 = load i8, ptr %a18 - %t34 = icmp uge i8 %t33, 48 - br label %logic.from10391 -logic.from10391: - br i1 %t34, label %logic.rhs10392, label %logic.end10393 -logic.rhs10392: - %t35 = load i8, ptr %a18 - %t36 = icmp ule i8 %t35, 57 - br label %logic.rend10394 -logic.rend10394: - br label %logic.end10393 -logic.end10393: - %t37 = phi i1 [ false, %logic.from10391 ], [ %t36, %logic.rend10394 ] - br label %logic.rend10395 -logic.rend10395: - br label %logic.end10390 -logic.end10390: - %t38 = phi i1 [ true, %logic.from10388 ], [ %t37, %logic.rend10395 ] - br label %logic.from10396 -logic.from10396: - br i1 %t38, label %logic.end10398, label %logic.rhs10397 -logic.rhs10397: - store { ptr, i64, i64 } { ptr @.str.6962, 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 - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend10399 -logic.rend10399: - br label %logic.end10398 -logic.end10398: - %t48 = phi i1 [ true, %logic.from10396 ], [ %t46, %logic.rend10399 ] - br i1 %t48, label %then10400, label %else10401 -then10400: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t50 = load i8, ptr %a18 - call void @finch_str_from_char(ptr %a51, i8 signext %t50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - %t53 = load i64, ptr %t49 - %t54 = add i64 %t53, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t55 = load ptr, ptr %a9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53 - store { ptr, i64, i64 } %t52, ptr %t56 - store i64 %t54, ptr %t49 - br label %endif10402 -else10401: - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t58 = load i64, ptr %a21 - %t59 = sdiv i64 %t58, 16 - %t60 = srem i64 %t59, 16 - %t61 = load { ptr, i64, i64 }, ptr %a2 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 %t60, %t62 - br i1 %t63, label %range10403, label %inrange10404 -range10403: - call void @finch_panic_index(ptr @.str.6965, i64 138, i64 %t60, i64 %t62) - unreachable -inrange10404: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 - %t66 = load i8, ptr %t65 - call void @finch_str_from_char(ptr %a67, i8 signext %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.6964, i64 1, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load i64, ptr %a21 - %t75 = srem i64 %t74, 16 - %t76 = load { ptr, i64, i64 }, ptr %a2 - %t77 = extractvalue { ptr, i64, i64 } %t76, 1 - %t78 = icmp uge i64 %t75, %t77 - br i1 %t78, label %range10405, label %inrange10406 -range10405: - call void @finch_panic_index(ptr @.str.6966, i64 138, i64 %t75, i64 %t77) - unreachable -inrange10406: - %t79 = extractvalue { ptr, i64, i64 } %t76, 0 - %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 - %t81 = load i8, ptr %t80 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t73, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t73, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - %t90 = load i64, ptr %t57 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t91, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %a9 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t90 - store { ptr, i64, i64 } %t89, ptr %t93 - store i64 %t91, ptr %t57 - br label %endif10402 -endif10402: - br label %each.step10374 -each.step10374: - %t94 = load i64, ptr %a10 - %t95 = add i64 %t94, 1 - store i64 %t95, ptr %a10 - br label %each.cond10372 -each.end10375: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6967, i64 0, i64 0 }, ptr %a97 - call void @finch_str_join(ptr %a98, ptr %a9, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.drop.arr_str(ptr %a9) - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t99 -} - -define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { -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.cond10407 -while.cond10407: - %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.body10408, label %while.end10409 -while.body10408: - %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 %range10410, label %inrange10411 -range10410: - call void @finch_panic_index(ptr @.str.6968, i64 149, i64 %t8, i64 %t10) - unreachable -inrange10411: - %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.from10412 -logic.from10412: - br i1 %t15, label %logic.rhs10413, label %logic.end10414 -logic.rhs10413: - %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.rend10415 -logic.rend10415: - br label %logic.end10414 -logic.end10414: - %t21 = phi i1 [ false, %logic.from10412 ], [ %t20, %logic.rend10415 ] - br i1 %t21, label %then10416, label %else10417 -then10416: - %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 %range10419, label %inrange10420 -range10419: - call void @finch_panic_index(ptr @.str.6969, i64 150, i64 %t23, i64 %t25) - unreachable -inrange10420: - %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 %then10421, label %else10422 -then10421: - %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.6970, i64 1, i64 0 }, ptr %t35 - store i64 %t33, ptr %t31 - br label %endif10423 -else10422: - %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 %range10424, label %inrange10425 -range10424: - call void @finch_panic_index(ptr @.str.6971, i64 153, i64 %t38, i64 %t40) - unreachable -inrange10425: - %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 %endif10423 -endif10423: - %t51 = load i64, ptr %a3 - %t52 = add i64 %t51, 2 - store i64 %t52, ptr %a3 - br label %endif10418 -else10417: - %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 %range10426, label %inrange10427 -range10426: - call void @finch_panic_index(ptr @.str.6972, i64 157, i64 %t54, i64 %t56) - unreachable -inrange10427: - %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 %endif10418 -endif10418: - br label %while.cond10407 -while.end10409: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6973, i64 0, i64 0 }, ptr %a70 - call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t72 -} - -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.6975, 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.from10428 -logic.from10428: - br i1 %t11, label %logic.rhs10429, label %logic.end10430 -logic.rhs10429: - %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.rend10431 -logic.rend10431: - br label %logic.end10430 -logic.end10430: - %t16 = phi i1 [ false, %logic.from10428 ], [ %t15, %logic.rend10431 ] - br i1 %t16, label %then10432, label %endif10434 -then10432: - %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 %range10435, label %inrange10436 -range10435: - call void @finch_panic_index(ptr @.str.6976, i64 167, i64 %t18, i64 %t20) - unreachable -inrange10436: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 - %t24 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t27 -endif10434: - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } { ptr @.str.6977, 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 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - br label %while.cond10437 -while.cond10437: - br label %while.body10438 -while.body10438: - %t2 = call i32 @getchar() - store i32 %t2, ptr %a3 - %t4 = load i32, ptr %a3 - %t5 = icmp slt i32 %t4, 0 - br i1 %t5, label %then10440, label %endif10442 -then10440: - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } { ptr @.str.6978, i64 0, i64 0 } -endif10442: - %t6 = load i32, ptr %a3 - %t7 = icmp eq i32 %t6, 10 - br i1 %t7, label %then10443, label %endif10445 -then10443: - br label %while.end10439 -endif10445: - %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.cond10437 -while.end10439: - %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.6980, 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 %then10446, label %endif10448 -then10446: - %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.6981, i64 188) - %t32 = load { ptr, i64, i64 }, ptr %a28 - %t33 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t32, ptr %a19 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif10448 -endif10448: - %t35 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } %t35 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { -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 { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a45 = alloca i32, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - store i64 0, ptr %a1 - br label %while.cond10449 -while.cond10449: - br label %while.body10450 -while.body10450: - %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 %then10452, label %endif10454 -then10452: - %t7 = load i64, ptr %a1 - %t8 = icmp sgt i64 %t7, 0 - br i1 %t8, label %then10455, label %endif10457 -then10455: - call void @finch_str_drop(ptr %a3) - br label %while.end10451 -endif10457: - %t9 = load ptr, ptr @stdin - %t10 = call i32 @feof(ptr %t9) - %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then10458, label %endif10460 -then10458: - call void @finch_str_drop(ptr %a3) - %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6982, i64 32, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 -endif10460: - call void @finch_str_drop(ptr %a3) - br label %while.cond10449 -endif10454: - %t13 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6984, 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 %then10461, label %endif10463 -then10461: - %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.6985, 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 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } zeroinitializer, ptr %a29 - store i64 0, ptr %a30 - store { ptr, i64, i64 } %t27, ptr %a31 - %t32 = call i32 @finch_str_try_int(ptr %a31, ptr %a30, ptr %a29) - %t33 = icmp eq i32 %t32, 0 - %t34 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load i64, ptr %a30 - br i1 %t33, label %or.failed10464, label %or.ok10465 -or.failed10464: - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %or.bend10466 -or.bend10466: - br label %or.end10467 -or.ok10465: - br label %or.end10467 -or.end10467: - %t38 = phi i64 [ 0, %or.bend10466 ], [ %t36, %or.ok10465 ] - store i64 %t38, ptr %a1 - br label %endif10463 -endif10463: - call void @finch_str_drop(ptr %a3) - br label %while.cond10449 -while.end10451: - store { ptr, i64, i64 } zeroinitializer, ptr %a39 - %t40 = load i64, ptr %a1 - store i64 0, ptr %a41 - br label %for.cond10468 -for.cond10468: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body10469, label %for.end10471 -for.body10469: - %t44 = call i32 @getchar() - store i32 %t44, ptr %a45 - %t46 = load i32, ptr %a45 - %t47 = icmp slt i32 %t46, 0 - br i1 %t47, label %then10472, label %endif10474 -then10472: - call void @finch.drop.arr_u8(ptr %a39) - %t48 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6987, i64 25, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t48 -endif10474: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a39, i32 0, i32 1 - %t50 = load i32, ptr %a45 - %t51 = trunc i32 %t50 to i8 - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a39, i64 %t53, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a39 - %t55 = getelementptr inbounds i8, ptr %t54, i64 %t52 - store i8 %t51, ptr %t55 - store i64 %t53, ptr %t49 - br label %for.step10470 -for.step10470: - %t56 = load i64, ptr %a41 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a41 - br label %for.cond10468 -for.end10471: - %t58 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } zeroinitializer, ptr %a59 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_from_bytes(ptr %a59, ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a59 - %t62 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t61) - %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 0 - %t64 = xor i1 %t63, true - %t65 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 2 - %t66 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 1 - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - br i1 %t64, label %try.failed10475, label %try.ok10476 -try.failed10475: - call void @finch.drop.arr_u8(ptr %a39) - %t68 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t65, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t68 -try.ok10476: - call void @finch.drop.arr_u8(ptr %a39) - %t69 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t70 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t69, %S.json.Json %t66, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t70 -} - -define internal void @finch.lsp.send(%S.json.Json %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = load %S.json.Json, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %t2) - 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.6988, i64 16, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6989, i64 4, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load { ptr, i64, i64 }, ptr %a19 - %t21 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t25, ptr %a26 - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = extractvalue { ptr, i64, i64 } %t27, 0 - %t29 = icmp eq ptr %t28, null - %t30 = select i1 %t29, ptr @.str.6990, ptr %t28 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 - %t32 = load i64, ptr %t31 - %t33 = load ptr, ptr @stdout - %t34 = call i64 @fwrite(ptr %t30, i64 1, i64 %t32, ptr %t33) - %t35 = load ptr, ptr @stdout - %t36 = call i32 @fflush(ptr %t35) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a19) - call void @finch_str_drop(ptr %a4) - ret void -} - -define internal void @finch.drop.arr_S_json_Json(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10477 -n.cond10477: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10478, label %n.end10479 -n.body10478: - %t7 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t5 - call void @finch.drop.S_json_Json(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10477 -n.end10479: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_json_Json(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_json_Json(ptr %t2) - %t3 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t3) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6992, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6991, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6993, i64 2, i64 0 }, %S.json.Json %t7) - %t8 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6994, i64 6, i64 0 }, %S.json.Json %t8) - %t9 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t9) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6996, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6995, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load { ptr, i64, i64 }, ptr %a1 - %t8 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t7) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6997, i64 6, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6998, i64 6, i64 0 }, %S.json.Json %t10) - %t11 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t11) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 %S.json.Json @finch.lsp.position(i64 %p0, i64 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a4 = alloca %S.json.Json, align 16 - %a7 = alloca %S.json.Json, align 16 - %a10 = alloca %S.json.Json, align 16 - 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.6999, i64 4, i64 0 }, %S.json.Json %t6) - store %S.json.Json %t6, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a7) - %t8 = load i64, ptr %a2 - %t9 = call %S.json.Json @finch.lsp.num(i64 %t8) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7000, i64 9, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t11 -} - -define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca i64, align 16 - %a5 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - 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.7001, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a1 - %t11 = load i64, ptr %a3 - %t12 = call %S.json.Json @finch.lsp.position(i64 %t10, i64 %t11) - call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.7002, i64 3, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = load %S.json.Json, ptr %a5 - ret %S.json.Json %t14 -} - -define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { -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.7004, 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.failed10480, label %or.ok10481 -or.failed10480: - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_drop(ptr %a10) - br label %or.bend10482 -or.bend10482: - br label %or.end10483 -or.ok10481: - br label %or.end10483 -or.end10483: - %t11 = phi i64 [ 0, %or.bend10482 ], [ %t9, %or.ok10481 ] - 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.7006, 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 %then10484, label %endif10486 -then10484: - ret %S.lsp.Diag zeroinitializer -endif10486: - %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.7007, 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.7008, 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.7010, 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 %then10487, label %endif10489 -then10487: - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag zeroinitializer -endif10489: - %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 %range10490, label %inrange10491 -range10490: - call void @finch_panic_index(ptr @.str.7011, i64 287, i64 %t37, i64 %t39) - unreachable -inrange10491: - %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 %range10492, label %inrange10493 -range10492: - call void @finch_panic_index(ptr @.str.7012, i64 288, i64 %t48, i64 %t50) - unreachable -inrange10493: - %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.cond10494 -for.cond10494: - %t62 = load i64, ptr %a61 - %t63 = icmp slt i64 %t62, %t60 - br i1 %t63, label %for.body10495, label %for.end10497 -for.body10495: - %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 %range10498, label %inrange10499 -range10498: - call void @finch_panic_index(ptr @.str.7013, i64 291, i64 %t65, i64 %t67) - unreachable -inrange10499: - %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.step10496 -for.step10496: - %t79 = load i64, ptr %a61 - %t80 = add i64 %t79, 1 - store i64 %t80, ptr %a61 - br label %for.cond10494 -for.end10497: - %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.7014, 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 - call void @finch.drop.arr_str(ptr %a57) - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag %t95 -} - -define internal void @finch.drop.S_lsp_Diag(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a536 = alloca %S.lsp.Diag, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis zeroinitializer, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7016, 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.cond10500 -each.cond10500: - %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.body10501, label %each.end10503 -each.body10501: - %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.7018, 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 %then10504, label %else10505 -then10504: - %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 %range10507, label %inrange10508 -range10507: - call void @finch_panic_index(ptr @.str.7019, i64 301, i64 0, i64 %t29) - unreachable -inrange10508: - %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.7020, 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.from10509 -logic.from10509: - br i1 %t42, label %logic.rhs10510, label %logic.end10511 -logic.rhs10510: - %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.rend10512 -logic.rend10512: - br label %logic.end10511 -logic.end10511: - %t46 = phi i1 [ false, %logic.from10509 ], [ %t45, %logic.rend10512 ] - br i1 %t46, label %then10513, label %else10514 -then10513: - %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 %range10516, label %inrange10517 -range10516: - call void @finch_panic_index(ptr @.str.7021, i64 303, i64 1, i64 %t50) - unreachable -inrange10517: - %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 %range10518, label %inrange10519 -range10518: - call void @finch_panic_index(ptr @.str.7022, i64 303, i64 2, i64 %t60) - unreachable -inrange10519: - %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 %range10520, label %inrange10521 -range10520: - call void @finch_panic_index(ptr @.str.7023, i64 303, i64 3, i64 %t68) - unreachable -inrange10521: - %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 %range10522, label %inrange10523 -range10522: - call void @finch_panic_index(ptr @.str.7024, i64 303, i64 4, i64 %t76) - unreachable -inrange10523: - %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 %range10524, label %inrange10525 -range10524: - call void @finch_panic_index(ptr @.str.7025, i64 303, i64 5, i64 %t84) - unreachable -inrange10525: - %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 %range10526, label %inrange10527 -range10526: - call void @finch_panic_index(ptr @.str.7026, i64 303, i64 6, i64 %t94) - unreachable -inrange10527: - %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 %range10528, label %inrange10529 -range10528: - call void @finch_panic_index(ptr @.str.7027, i64 303, i64 7, i64 %t102) - unreachable -inrange10529: - %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 %range10530, label %inrange10531 -range10530: - call void @finch_panic_index(ptr @.str.7028, i64 303, i64 8, i64 %t110) - unreachable -inrange10531: - %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 %endif10515 -else10514: - %t121 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.7029, 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.from10532 -logic.from10532: - br i1 %t125, label %logic.rhs10533, label %logic.end10534 -logic.rhs10533: - %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.rend10535 -logic.rend10535: - br label %logic.end10534 -logic.end10534: - %t129 = phi i1 [ false, %logic.from10532 ], [ %t128, %logic.rend10535 ] - br i1 %t129, label %then10536, label %else10537 -then10536: - %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 %range10539, label %inrange10540 -range10539: - call void @finch_panic_index(ptr @.str.7030, i64 305, i64 1, i64 %t133) - unreachable -inrange10540: - %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 %range10541, label %inrange10542 -range10541: - call void @finch_panic_index(ptr @.str.7031, i64 305, i64 2, i64 %t143) - unreachable -inrange10542: - %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 %range10543, label %inrange10544 -range10543: - call void @finch_panic_index(ptr @.str.7032, i64 305, i64 3, i64 %t153) - unreachable -inrange10544: - %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 %range10545, label %inrange10546 -range10545: - call void @finch_panic_index(ptr @.str.7033, i64 305, i64 4, i64 %t163) - unreachable -inrange10546: - %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 %range10547, label %inrange10548 -range10547: - call void @finch_panic_index(ptr @.str.7034, i64 305, i64 5, i64 %t171) - unreachable -inrange10548: - %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 %range10549, label %inrange10550 -range10549: - call void @finch_panic_index(ptr @.str.7035, i64 305, i64 6, i64 %t179) - unreachable -inrange10550: - %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 %range10551, label %inrange10552 -range10551: - call void @finch_panic_index(ptr @.str.7036, i64 305, i64 7, i64 %t189) - unreachable -inrange10552: - %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 %range10553, label %inrange10554 -range10553: - call void @finch_panic_index(ptr @.str.7037, i64 305, i64 8, i64 %t197) - unreachable -inrange10554: - %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 %endif10538 -else10537: - %t208 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.7038, 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.from10555 -logic.from10555: - br i1 %t212, label %logic.rhs10556, label %logic.end10557 -logic.rhs10556: - %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.rend10558 -logic.rend10558: - br label %logic.end10557 -logic.end10557: - %t216 = phi i1 [ false, %logic.from10555 ], [ %t215, %logic.rend10558 ] - br i1 %t216, label %then10559, label %else10560 -then10559: - %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 %range10562, label %inrange10563 -range10562: - call void @finch_panic_index(ptr @.str.7039, i64 307, i64 1, i64 %t220) - unreachable -inrange10563: - %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 %range10564, label %inrange10565 -range10564: - call void @finch_panic_index(ptr @.str.7040, i64 307, i64 2, i64 %t230) - unreachable -inrange10565: - %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 %range10566, label %inrange10567 -range10566: - call void @finch_panic_index(ptr @.str.7041, i64 307, i64 3, i64 %t240) - unreachable -inrange10567: - %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 %range10568, label %inrange10569 -range10568: - call void @finch_panic_index(ptr @.str.7042, i64 307, i64 4, i64 %t250) - unreachable -inrange10569: - %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 %range10570, label %inrange10571 -range10570: - call void @finch_panic_index(ptr @.str.7043, i64 307, i64 5, i64 %t260) - unreachable -inrange10571: - %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 %range10572, label %inrange10573 -range10572: - call void @finch_panic_index(ptr @.str.7044, i64 307, i64 6, i64 %t268) - unreachable -inrange10573: - %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 %range10574, label %inrange10575 -range10574: - call void @finch_panic_index(ptr @.str.7045, i64 307, i64 7, i64 %t276) - unreachable -inrange10575: - %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 %range10576, label %inrange10577 -range10576: - call void @finch_panic_index(ptr @.str.7046, i64 307, i64 8, i64 %t284) - unreachable -inrange10577: - %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 %range10578, label %inrange10579 -range10578: - call void @finch_panic_index(ptr @.str.7047, i64 307, i64 9, i64 %t292) - unreachable -inrange10579: - %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.7049, 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 %endif10561 -else10560: - %t307 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t307, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.7050, 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.from10580 -logic.from10580: - br i1 %t311, label %logic.rhs10581, label %logic.end10582 -logic.rhs10581: - %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.rend10583 -logic.rend10583: - br label %logic.end10582 -logic.end10582: - %t315 = phi i1 [ false, %logic.from10580 ], [ %t314, %logic.rend10583 ] - br i1 %t315, label %then10584, label %else10585 -then10584: - %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 %range10587, label %inrange10588 -range10587: - call void @finch_panic_index(ptr @.str.7051, i64 309, i64 1, i64 %t319) - unreachable -inrange10588: - %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 %range10589, label %inrange10590 -range10589: - call void @finch_panic_index(ptr @.str.7052, i64 309, i64 2, i64 %t329) - unreachable -inrange10590: - %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 %range10591, label %inrange10592 -range10591: - call void @finch_panic_index(ptr @.str.7053, i64 309, i64 3, i64 %t339) - unreachable -inrange10592: - %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 %range10593, label %inrange10594 -range10593: - call void @finch_panic_index(ptr @.str.7054, i64 309, i64 4, i64 %t349) - unreachable -inrange10594: - %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 %range10595, label %inrange10596 -range10595: - call void @finch_panic_index(ptr @.str.7055, i64 309, i64 5, i64 %t357) - unreachable -inrange10596: - %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 %endif10586 -else10585: - %t368 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t368, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.7056, 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.from10597 -logic.from10597: - br i1 %t372, label %logic.rhs10598, label %logic.end10599 -logic.rhs10598: - %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.rend10600 -logic.rend10600: - br label %logic.end10599 -logic.end10599: - %t376 = phi i1 [ false, %logic.from10597 ], [ %t375, %logic.rend10600 ] - br label %logic.from10601 -logic.from10601: - br i1 %t376, label %logic.rhs10602, label %logic.end10603 -logic.rhs10602: - %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.rend10604 -logic.rend10604: - br label %logic.end10603 -logic.end10603: - %t381 = phi i1 [ false, %logic.from10601 ], [ %t380, %logic.rend10604 ] - br i1 %t381, label %then10605, label %else10606 -then10605: - %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 %range10608, label %inrange10609 -range10608: - call void @finch_panic_index(ptr @.str.7057, i64 312, i64 %t388, i64 %t390) - unreachable -inrange10609: - %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 %range10610, label %inrange10611 -range10610: - call void @finch_panic_index(ptr @.str.7058, i64 312, i64 3, i64 %t397) - unreachable -inrange10611: - %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 %range10612, label %inrange10613 -range10612: - call void @finch_panic_index(ptr @.str.7059, i64 313, i64 %t410, i64 %t412) - unreachable -inrange10613: - %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 %range10614, label %inrange10615 -range10614: - call void @finch_panic_index(ptr @.str.7060, i64 313, i64 4, i64 %t419) - unreachable -inrange10615: - %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 %endif10607 -else10606: - %t431 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t431, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.7061, 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.from10616 -logic.from10616: - br i1 %t435, label %logic.rhs10617, label %logic.end10618 -logic.rhs10617: - %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.rend10619 -logic.rend10619: - br label %logic.end10618 -logic.end10618: - %t439 = phi i1 [ false, %logic.from10616 ], [ %t438, %logic.rend10619 ] - br i1 %t439, label %then10620, label %else10621 -then10620: - %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 %range10623, label %inrange10624 -range10623: - call void @finch_panic_index(ptr @.str.7062, i64 315, i64 1, i64 %t443) - unreachable -inrange10624: - %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 %range10625, label %inrange10626 -range10625: - call void @finch_panic_index(ptr @.str.7063, i64 315, i64 2, i64 %t453) - unreachable -inrange10626: - %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 %range10627, label %inrange10628 -range10627: - call void @finch_panic_index(ptr @.str.7064, i64 315, i64 3, i64 %t463) - unreachable -inrange10628: - %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 %range10629, label %inrange10630 -range10629: - call void @finch_panic_index(ptr @.str.7065, i64 315, i64 4, i64 %t473) - unreachable -inrange10630: - %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 %range10631, label %inrange10632 -range10631: - call void @finch_panic_index(ptr @.str.7066, i64 315, i64 5, i64 %t481) - unreachable -inrange10632: - %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 %range10633, label %inrange10634 -range10633: - call void @finch_panic_index(ptr @.str.7067, i64 315, i64 6, i64 %t489) - unreachable -inrange10634: - %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.7069, 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 %endif10622 -else10621: - %t504 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.7070, 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.from10635 -logic.from10635: - br i1 %t508, label %logic.rhs10636, label %logic.end10637 -logic.rhs10636: - %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.rend10638 -logic.rend10638: - br label %logic.end10637 -logic.end10637: - %t512 = phi i1 [ false, %logic.from10635 ], [ %t511, %logic.rend10638 ] - br i1 %t512, label %then10639, label %endif10641 -then10639: - %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 %range10642, label %inrange10643 -range10642: - call void @finch_panic_index(ptr @.str.7071, i64 317, i64 1, i64 %t516) - unreachable -inrange10643: - %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 %endif10641 -endif10641: - br label %endif10622 -endif10622: - br label %endif10607 -endif10607: - br label %endif10586 -endif10586: - br label %endif10561 -endif10561: - br label %endif10538 -endif10538: - br label %endif10515 -endif10515: - call void @finch_str_drop(ptr %a37) - call void @finch.drop.arr_str(ptr %a27) - br label %endif10506 -else10505: - %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 %then10644, label %endif10646 -then10644: - %t532 = load { ptr, i64, i64 }, ptr %a18 - %t533 = call %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %t532) - %t534 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t535 = load %S.lsp.Diag, ptr %t534 - store %S.lsp.Diag %t533, ptr %t534 - store %S.lsp.Diag %t535, ptr %a536 - call void @finch.drop.S_lsp_Diag(ptr %a536) - br label %endif10646 -endif10646: - br label %endif10506 -endif10506: - br label %each.step10502 -each.step10502: - %t537 = load i64, ptr %a10 - %t538 = add i64 %t537, 1 - store i64 %t538, ptr %a10 - br label %each.cond10500 -each.end10503: - call void @finch.drop.arr_str(ptr %a9) - %t539 = load %S.lsp.Analysis, ptr %a2 - ret %S.lsp.Analysis %t539 -} - -define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Ref, ptr %src - store %S.lsp.Ref %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 7 - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 7 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal void @finch.copy.arr_S_lsp_Ref(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond10667 -n.cond10667: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10668, label %n.end10669 -n.body10668: - %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.cond10667 -n.end10669: - 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.cond10670 -n.cond10670: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10671, label %n.end10672 -n.body10671: - %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.cond10670 -n.end10672: - 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.cond10673 -n.cond10673: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10674, label %n.end10675 -n.body10674: - %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.cond10673 -n.end10675: - 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.cond10676 -n.cond10676: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10677, label %n.end10678 -n.body10677: - %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.cond10676 -n.end10678: - 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.cond10679 -n.cond10679: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10680, label %n.end10681 -n.body10680: - %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.cond10679 -n.end10681: - ret void -} - -define internal void @finch.copy.S_lsp_Diag(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Diag, ptr %src - store %S.lsp.Diag %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 1 - %t3 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.copy.S_lsp_Analysis(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Analysis, ptr %src - store %S.lsp.Analysis %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_lsp_Ref(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_lsp_VarRec(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_S_lsp_FnRec(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_lsp_StructRec(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t12, ptr %t13) - %t14 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 6 - %t15 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 6 - call void @finch.copy.S_lsp_Diag(ptr %t14, ptr %t15) - ret void -} - -define internal void @finch.drop.S_lsp_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_lsp_Ref(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10682 -n.cond10682: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10683, label %n.end10684 -n.body10683: - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_Ref(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10682 -n.end10684: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_VarRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_VarRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10685 -n.cond10685: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10686, label %n.end10687 -n.body10686: - %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_VarRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10685 -n.end10687: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_FnRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal void @finch.drop.arr_S_lsp_FnRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10688 -n.cond10688: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10689, label %n.end10690 -n.body10689: - %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_FnRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10688 -n.end10690: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_StructRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.arr_S_lsp_StructRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10691 -n.cond10691: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10692, label %n.end10693 -n.body10692: - %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_StructRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10691 -n.end10693: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_EnumRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_EnumRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10694 -n.cond10694: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10695, label %n.end10696 -n.body10695: - %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_EnumRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10694 -n.end10696: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Analysis(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lsp_Ref(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_lsp_VarRec(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_S_lsp_FnRec(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_lsp_StructRec(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 6 - call void @finch.drop.S_lsp_Diag(ptr %t7) - ret void -} - -define internal void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca i64, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca i64, align 16 - %a14 = alloca i64, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca i64, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lsp.Analysis, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca i32, align 16 - %a188 = alloca %S.lsp.Analysis, align 16 - %a189 = alloca %S.lsp.Analysis, align 16 - %a192 = alloca %S.lsp.Analysis, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %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 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca i32, align 16 - %a272 = alloca %S.lsp.Analysis, align 16 - %a273 = alloca %S.lsp.Analysis, align 16 - %a276 = alloca %S.lsp.Analysis, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.7072, i64 0, i64 0 }, ptr %a4 - store i64 0, ptr %a5 - %t6 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %a7 - %t8 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t9 = load i64, ptr %t8 - call void @finch_arr_make(ptr %a7, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a7 - store i64 0, ptr %a11 - %t12 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 2 - %t13 = load i64, ptr %t12 - store i64 0, ptr %a14 - br label %n.cond10647 -n.cond10647: - %t15 = load i64, ptr %a14 - %t16 = icmp slt i64 %t15, %t13 - br i1 %t16, label %n.body10648, label %n.end10649 -n.body10648: - %t17 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 - %t18 = load ptr, ptr %t17 - %t19 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t18, i64 %t15 - %t20 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 0 - %t21 = load i64, ptr %t20 - %t22 = icmp ne i64 %t21, 0 - br i1 %t22, label %entry.live10650, label %entry.next10651 -entry.live10650: - %t23 = load i64, ptr %a11 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t23 - %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 1 - call void @finch_str_copy(ptr %t24, ptr %t25) - %t26 = add i64 %t23, 1 - store i64 %t26, ptr %a11 - br label %entry.next10651 -entry.next10651: - %t27 = load i64, ptr %a14 - %t28 = add i64 %t27, 1 - store i64 %t28, ptr %a14 - br label %n.cond10647 -n.end10649: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store i64 0, ptr %a31 - br label %each.cond10652 -each.cond10652: - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = load i64, ptr %a31 - %t35 = icmp slt i64 %t34, %t33 - br i1 %t35, label %each.body10653, label %each.end10655 -each.body10653: - %t36 = load ptr, ptr %a30 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i64 %t34 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.7073, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.7074, i64 4, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a60 - %t61 = load { ptr, i64, i64 }, ptr %a60 - %t62 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t63 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = call i64 @finch_map_find(ptr %t62, ptr %a64, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t66 = icmp slt i64 %t65, 0 - br i1 %t66, label %map.missing10656, label %map.found10657 -map.missing10656: - store { ptr, i64, i64 } zeroinitializer, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_buf_str(ptr %a67, ptr %a68, i32 1) - call void @finch_map_missing(ptr @.str.7075, i64 333, ptr %a67) - unreachable -map.found10657: - %t69 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t62, i32 0, i32 0 - %t70 = load ptr, ptr %t69 - %t71 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t70, i64 %t65 - %t72 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t71, i32 0, i32 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t61, ptr %a74 - store { ptr, i64, i64 } %t73, ptr %a75 - %t76 = call i32 @finch_write_file(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - %t78 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.7076, i64 11, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a79 - %t83 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.7077, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a84 - %t88 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t82, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t94, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - %t102 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t101, ptr %a4 - store { ptr, i64, i64 } %t102, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load i64, ptr %a5 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a5 - call void @finch_str_drop(ptr %a60) - br label %each.step10654 -each.step10654: - %t106 = load i64, ptr %a31 - %t107 = add i64 %t106, 1 - store i64 %t107, ptr %a31 - br label %each.cond10652 -each.end10655: - call void @finch.drop.arr_str(ptr %a30) - %t108 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.7078, i64 8, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t113, ptr %a114 - %t115 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.7079, i64 7, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a1 - %t124 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - %t131 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.7080, i64 3, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load { ptr, i64, i64 }, ptr %a114 - %t143 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t141, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t141, ptr %a147 - call void @finch_str_drop(ptr %a147) - store { ptr, i64, i64 } %t143, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.7081, i64 5, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call i64 @finch.host.run({ ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - store { ptr, i64, i64 } zeroinitializer, ptr %a160 - %t161 = call i32 @finch_try_read_file(ptr %a159, ptr %a158, ptr %a160) - %t162 = icmp eq i32 %t161, 0 - %t163 = load { ptr, i64, i64 }, ptr %a160 - %t164 = load { ptr, i64, i64 }, ptr %a159 - br i1 %t162, label %or.failed10658, label %or.ok10659 -or.failed10658: - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_drop(ptr %a165) - br label %or.bend10660 -or.bend10660: - br label %or.end10661 -or.ok10659: - br label %or.end10661 -or.end10661: - %t166 = phi { ptr, i64, i64 } [ { ptr @.str.7082, i64 0, i64 0 }, %or.bend10660 ], [ %t164, %or.ok10659 ] - %t167 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a168 - call void @finch_str_drop(ptr %a168) - store %S.lsp.Analysis %t167, ptr %a169 - %t170 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 6 - %t171 = getelementptr inbounds %S.lsp.Diag, ptr %t170, i32 0, i32 0 - %t172 = load i1, ptr %t171 - %t173 = xor i1 %t172, true - br i1 %t173, label %then10662, label %else10663 -then10662: - %t174 = load %S.lsp.Analysis, ptr %a169 - %t175 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t176 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t176, ptr %a177 - store i32 0, ptr %a178 - %t179 = call i64 @finch_map_slot(ptr %t175, ptr %a177, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a178) - %t180 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t175, i32 0, i32 0 - %t181 = load ptr, ptr %t180 - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t181, i64 %t179 - %t183 = load i32, ptr %a178 - %t184 = icmp ne i32 %t183, 0 - br i1 %t184, label %map.new10665, label %map.have10666 -map.new10665: - %t185 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 1 - call void @finch_str_copy(ptr %t185, ptr %a177) - %t186 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t186 - br label %map.have10666 -map.have10666: - %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis %t174, ptr %a188 - call void @finch.copy.S_lsp_Analysis(ptr %a189, ptr %a188) - %t190 = load %S.lsp.Analysis, ptr %a189 - %t191 = load %S.lsp.Analysis, ptr %t187 - store %S.lsp.Analysis %t190, ptr %t187 - store %S.lsp.Analysis %t191, ptr %a192 - call void @finch.drop.S_lsp_Analysis(ptr %a192) - br label %endif10664 -else10663: - %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 %then10697, label %endif10699 -then10697: - %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.missing10700, label %map.found10701 -map.missing10700: - 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.7083, i64 344, ptr %a203) - unreachable -map.found10701: - %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 %a169, i32 0, i32 2 - store { ptr, i64, i64 } %t215, ptr %a217 - call void @finch.copy.arr_S_lsp_FnRec(ptr %a218, ptr %a217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - %t220 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t219, ptr %t216 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch.drop.arr_S_lsp_FnRec(ptr %a221) - %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 3 - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch.copy.arr_S_lsp_StructRec(ptr %a226, ptr %a225) - %t227 = load { ptr, i64, i64 }, ptr %a226 - %t228 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t227, ptr %t224 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch.drop.arr_S_lsp_StructRec(ptr %a229) - %t230 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 - %t231 = load { ptr, i64, i64 }, ptr %t230 - %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 4 - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load { ptr, i64, i64 }, ptr %t232 - store { ptr, i64, i64 } %t235, ptr %t232 - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %a237) - %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t239, ptr %a241 - call void @finch.copy.arr_S_lsp_VarRec(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = load { ptr, i64, i64 }, ptr %t240 - store { ptr, i64, i64 } %t243, ptr %t240 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.drop.arr_S_lsp_VarRec(ptr %a245) - %t246 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1 - %t248 = load i64, ptr %t247 - %t249 = icmp eq i64 %t248, 0 - br i1 %t249, label %then10702, label %endif10704 -then10702: - %t250 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 - %t251 = load { ptr, i64, i64 }, ptr %t250 - %t252 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - store { ptr, i64, i64 } %t251, ptr %a253 - call void @finch.copy.arr_str(ptr %a254, ptr %a253) - %t255 = load { ptr, i64, i64 }, ptr %a254 - %t256 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t255, ptr %t252 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.drop.arr_str(ptr %a257) - br label %endif10704 -endif10704: - call void @finch.drop.S_lsp_Analysis(ptr %a213) - br label %endif10699 -endif10699: - br label %endif10664 -endif10664: - %t258 = load %S.lsp.Analysis, ptr %a169 - %t259 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t260 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t260, ptr %a261 - store i32 0, ptr %a262 - %t263 = call i64 @finch_map_slot(ptr %t259, ptr %a261, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a262) - %t264 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t259, i32 0, i32 0 - %t265 = load ptr, ptr %t264 - %t266 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t265, i64 %t263 - %t267 = load i32, ptr %a262 - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %map.new10705, label %map.have10706 -map.new10705: - %t269 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 1 - call void @finch_str_copy(ptr %t269, ptr %a261) - %t270 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t270 - br label %map.have10706 -map.have10706: - %t271 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis %t258, ptr %a272 - call void @finch.copy.S_lsp_Analysis(ptr %a273, ptr %a272) - %t274 = load %S.lsp.Analysis, ptr %a273 - %t275 = load %S.lsp.Analysis, ptr %t271 - store %S.lsp.Analysis %t274, ptr %t271 - store %S.lsp.Analysis %t275, ptr %a276 - call void @finch.drop.S_lsp_Analysis(ptr %a276) - %t277 = load { ptr, i64, i64 }, ptr %a1 - %t278 = load %S.lsp.Analysis, ptr %a169 - call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t277, %S.lsp.Analysis %t278) - call void @finch.drop.S_lsp_Analysis(ptr %a169) - call void @finch_str_drop(ptr %a114) - call void @finch_str_drop(ptr %a4) - ret void -} - -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 - %a98 = alloca %S.json.Json, align 16 - %a100 = alloca %S.json.Json, align 16 - %a102 = alloca %S.json.Json, align 16 - %a107 = alloca %S.json.Json, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.json.Json, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond10707 -each.cond10707: - %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.body10708, label %each.end10710 -each.body10708: - %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.cond10711 -find.cond10711: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body10712, label %find.end10715 -find.body10712: - %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.hit10713, label %find.next10714 -find.hit10713: - store i64 %t30, ptr %a26 - br label %find.end10715 -find.next10714: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond10711 -find.end10715: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - %t41 = xor i1 %t40, true - br i1 %t41, label %then10716, label %endif10718 -then10716: - %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 %endif10718 -endif10718: - br label %each.step10709 -each.step10709: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %each.cond10707 -each.end10710: - store { ptr, i64, i64 } zeroinitializer, ptr %a53 - store i64 0, ptr %a54 - br label %each.cond10719 -each.cond10719: - %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.body10720, label %each.end10722 -each.body10720: - %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.from10723 -logic.from10723: - br i1 %t67, label %logic.rhs10724, label %logic.end10725 -logic.rhs10724: - %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.rend10726 -logic.rend10726: - br label %logic.end10725 -logic.end10725: - %t76 = phi i1 [ false, %logic.from10723 ], [ %t75, %logic.rend10726 ] - br i1 %t76, label %then10727, label %endif10729 -then10727: - %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 %then10730, label %endif10732 -then10730: - store i64 0, ptr %a81 - br label %endif10732 -endif10732: - %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 %then10733, label %endif10735 -then10733: - store i64 0, ptr %a88 - br label %endif10735 -endif10735: - %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.7084, i64 5, i64 0 }, %S.json.Json %t97) - store %S.json.Json %t97, ptr %a98 - call void @finch.drop.S_json_Json(ptr %a98) - %t99 = call %S.json.Json @finch.lsp.num(i64 1) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7085, i64 8, i64 0 }, %S.json.Json %t99) - store %S.json.Json %t99, ptr %a100 - call void @finch.drop.S_json_Json(ptr %a100) - %t101 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7087, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7086, i64 6, i64 0 }, %S.json.Json %t101) - store %S.json.Json %t101, ptr %a102 - call void @finch.drop.S_json_Json(ptr %a102) - %t103 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t104 = getelementptr inbounds %S.lsp.Diag, ptr %t103, i32 0, i32 4 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t105) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7088, i64 7, i64 0 }, %S.json.Json %t106) - store %S.json.Json %t106, ptr %a107 - call void @finch.drop.S_json_Json(ptr %a107) - %t108 = load %S.json.Json, ptr %a92 - call void @finch.json.Json.push(ptr %a64, %S.json.Json %t108) - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = load i64, ptr %t109 - %t115 = add i64 %t114, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t115, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t116 = load ptr, ptr %a53 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i64 %t114 - store { ptr, i64, i64 } %t113, ptr %t117 - store i64 %t115, ptr %t109 - call void @finch.drop.S_json_Json(ptr %a92) - br label %endif10729 -endif10729: - %t118 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t118, ptr %a119 - %t120 = load { ptr, i64, i64 }, ptr %a62 - %t121 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t120) - %t122 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t121) - store { ptr, i64, i64 } %t121, ptr %a123 - call void @finch_str_drop(ptr %a123) - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7089, i64 3, i64 0 }, %S.json.Json %t122) - store %S.json.Json %t122, ptr %a124 - call void @finch.drop.S_json_Json(ptr %a124) - %t125 = load %S.json.Json, ptr %a64 - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7090, i64 11, i64 0 }, %S.json.Json %t125) - %t126 = load %S.json.Json, ptr %a119 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7091, i64 31, i64 0 }, %S.json.Json %t126) - call void @finch.drop.S_json_Json(ptr %a119) - call void @finch.drop.S_json_Json(ptr %a64) - br label %each.step10721 -each.step10721: - %t127 = load i64, ptr %a54 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a54 - br label %each.cond10719 -each.end10722: - %t129 = load { ptr, i64, i64 }, ptr %a53 - %t130 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch.copy.arr_str(ptr %a132, ptr %a131) - %t133 = load { ptr, i64, i64 }, ptr %a132 - %t134 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t133, ptr %t130 - store { ptr, i64, i64 } %t134, ptr %a135 - call void @finch.drop.arr_str(ptr %a135) - call void @finch.drop.arr_str(ptr %a53) - call void @finch.drop.arr_str(ptr %a13) - ret void -} - -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.cond10736 -for.cond10736: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body10737, label %for.end10739 -for.body10737: - %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 %range10740, label %inrange10741 -range10740: - call void @finch_panic_index(ptr @.str.7092, i64 397, i64 %t12, i64 %t14) - unreachable -inrange10741: - %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.from10742 -logic.from10742: - br i1 %t26, label %logic.rhs10743, label %logic.end10744 -logic.rhs10743: - %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.rend10745 -logic.rend10745: - br label %logic.end10744 -logic.end10744: - %t31 = phi i1 [ false, %logic.from10742 ], [ %t30, %logic.rend10745 ] - br label %logic.from10746 -logic.from10746: - br i1 %t31, label %logic.rhs10747, label %logic.end10748 -logic.rhs10747: - %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.rend10749 -logic.rend10749: - br label %logic.end10748 -logic.end10748: - %t39 = phi i1 [ false, %logic.from10746 ], [ %t38, %logic.rend10749 ] - br label %logic.from10750 -logic.from10750: - br i1 %t39, label %logic.rhs10751, label %logic.end10752 -logic.rhs10751: - %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.rend10753 -logic.rend10753: - br label %logic.end10752 -logic.end10752: - %t47 = phi i1 [ false, %logic.from10750 ], [ %t46, %logic.rend10753 ] - br i1 %t47, label %then10754, label %endif10756 -then10754: - %t48 = load i64, ptr %a8 - call void @finch.drop.S_lsp_Ref(ptr %a22) - ret i64 %t48 -endif10756: - call void @finch.drop.S_lsp_Ref(ptr %a22) - br label %for.step10738 -for.step10738: - %t49 = load i64, ptr %a8 - %t50 = add i64 %t49, 1 - store i64 %t50, ptr %a8 - br label %for.cond10736 -for.end10739: - 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 - %a17 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %then10757, label %endif10759 -then10757: - %t13 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t13 -endif10759: - %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.7094, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7093, i64 4, i64 0 }, %S.json.Json %t16) - store %S.json.Json %t16, ptr %a17 - call void @finch.drop.S_json_Json(ptr %a17) - %t18 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 - %t19 = load i64, ptr %a10 - %t20 = load { ptr, i64, i64 }, ptr %t18 - %t21 = extractvalue { ptr, i64, i64 } %t20, 1 - %t22 = icmp uge i64 %t19, %t21 - br i1 %t22, label %range10760, label %inrange10761 -range10760: - call void @finch_panic_index(ptr @.str.7096, i64 412, i64 %t19, i64 %t21) - unreachable -inrange10761: - %t23 = extractvalue { ptr, i64, i64 } %t20, 0 - %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i64 %t19 - %t25 = getelementptr inbounds %S.lsp.Ref, ptr %t24, i32 0, i32 7 - %t26 = load { ptr, i64, i64 }, ptr %t25 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7095, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t29, ptr %a30 - %t31 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a30, { ptr, i64, i64 } { ptr @.str.7097, i64 8, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.json.Json, align 16 - %a56 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - 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.from10762 -logic.from10762: - br i1 %t12, label %logic.end10764, label %logic.rhs10763 -logic.rhs10763: - %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 %range10765, label %inrange10766 -range10765: - call void @finch_panic_index(ptr @.str.7098, i64 420, i64 %t14, i64 %t16) - unreachable -inrange10766: - %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.rend10767 -logic.rend10767: - br label %logic.end10764 -logic.end10764: - %t24 = phi i1 [ true, %logic.from10762 ], [ %t23, %logic.rend10767 ] - br i1 %t24, label %then10768, label %endif10770 -then10768: - %t25 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t25 -endif10770: - %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 %range10771, label %inrange10772 -range10771: - call void @finch_panic_index(ptr @.str.7099, i64 423, i64 %t27, i64 %t29) - unreachable -inrange10772: - %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) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7100, i64 3, i64 0 }, %S.json.Json %t43) - store %S.json.Json %t43, ptr %a45 - call void @finch.drop.S_json_Json(ptr %a45) - %t46 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 - %t47 = load i64, ptr %t46 - %t48 = sub i64 %t47, 1 - %t49 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t50 = load i64, ptr %t49 - %t51 = sub i64 %t50, 1 - %t52 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t53 = load i64, ptr %t52 - %t54 = sub i64 %t53, 1 - %t55 = call %S.json.Json @finch.lsp.range(i64 %t48, i64 %t51, i64 %t54) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7101, i64 5, i64 0 }, %S.json.Json %t55) - store %S.json.Json %t55, ptr %a56 - call void @finch.drop.S_json_Json(ptr %a56) - %t57 = load %S.json.Json, ptr %a39 - call void @finch.drop.S_lsp_Ref(ptr %a37) - ret %S.json.Json %t57 -} - -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.json.Json, align 16 - %a61 = alloca i64, align 16 - %a69 = alloca %S.lsp.StructRec, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca %S.json.Json, align 16 - %a95 = alloca i64, align 16 - %a103 = alloca %S.lsp.EnumRec, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t3, ptr %a4 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a6 - br label %each.cond10773 -each.cond10773: - %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.body10774, label %each.end10776 -each.body10774: - %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 %then10777, label %endif10779 -then10777: - br label %each.step10775 -endif10779: - 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 %then10780, label %endif10782 -then10780: - 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.7102, 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) - store { ptr, i64, i64 } %t38, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t45, ptr %a28 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif10782 -endif10782: - %t48 = load { ptr, i64, i64 }, ptr %a28 - %t49 = load i64, ptr %a22 - %t50 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 - %t51 = load i64, ptr %t50 - %t52 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 - %t53 = load i64, ptr %t52 - %t54 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 - %t55 = load i64, ptr %t54 - %t56 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t48, i64 %t49, i64 %t51, i64 %t53, i64 %t55) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t56) - store %S.json.Json %t56, ptr %a57 - call void @finch.drop.S_json_Json(ptr %a57) - call void @finch_str_drop(ptr %a28) - br label %each.step10775 -each.step10775: - %t58 = load i64, ptr %a6 - %t59 = add i64 %t58, 1 - store i64 %t59, ptr %a6 - br label %each.cond10773 -each.end10776: - %t60 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a61 - br label %each.cond10783 -each.cond10783: - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - %t64 = load i64, ptr %a61 - %t65 = icmp slt i64 %t64, %t63 - br i1 %t65, label %each.body10784, label %each.end10786 -each.body10784: - %t66 = load ptr, ptr %t60 - %t67 = getelementptr inbounds %S.lsp.StructRec, ptr %t66, i64 %t64 - %t68 = load %S.lsp.StructRec, ptr %t67 - store %S.lsp.StructRec %t68, ptr %a69 - %t70 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 2 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) - %t76 = icmp ne i32 %t75, 0 - br i1 %t76, label %then10787, label %endif10789 -then10787: - %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t80 = load i64, ptr %t79 - %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 4 - %t82 = load i64, ptr %t81 - %t83 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t84 = load i64, ptr %t83 - %t85 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 5 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t84, %t87 - %t89 = add i64 %t88, 1 - %t90 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t78, i64 23, i64 %t80, i64 %t82, i64 %t89) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t90) - store %S.json.Json %t90, ptr %a91 - call void @finch.drop.S_json_Json(ptr %a91) - br label %endif10789 -endif10789: - br label %each.step10785 -each.step10785: - %t92 = load i64, ptr %a61 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a61 - br label %each.cond10783 -each.end10786: - %t94 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a95 - br label %each.cond10790 -each.cond10790: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = load i64, ptr %a95 - %t99 = icmp slt i64 %t98, %t97 - br i1 %t99, label %each.body10791, label %each.end10793 -each.body10791: - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.lsp.EnumRec, ptr %t100, i64 %t98 - %t102 = load %S.lsp.EnumRec, ptr %t101 - store %S.lsp.EnumRec %t102, ptr %a103 - %t104 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - br i1 %t110, label %then10794, label %endif10796 -then10794: - %t111 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - %t113 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t114 = load i64, ptr %t113 - %t115 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 4 - %t116 = load i64, ptr %t115 - %t117 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t118 = load i64, ptr %t117 - %t119 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load i64, ptr %t120 - %t122 = add i64 %t118, %t121 - %t123 = add i64 %t122, 1 - %t124 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t112, i64 10, i64 %t114, i64 %t116, i64 %t123) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t124) - store %S.json.Json %t124, ptr %a125 - call void @finch.drop.S_json_Json(ptr %a125) - br label %endif10796 -endif10796: - br label %each.step10792 -each.step10792: - %t126 = load i64, ptr %a95 - %t127 = add i64 %t126, 1 - store i64 %t127, ptr %a95 - br label %each.cond10790 -each.end10793: - %t128 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t128 -} - -define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { -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 - %a10 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - %a15 = alloca %S.json.Json, align 16 - %a19 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a31 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.7103, i64 4, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load i64, ptr %a2 - %t12 = call %S.json.Json @finch.lsp.num(i64 %t11) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7104, i64 4, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t14, ptr %a15 - %t16 = load i64, ptr %a3 - %t17 = sub i64 %t16, 1 - %t18 = call %S.json.Json @finch.lsp.position(i64 %t17, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7105, i64 5, i64 0 }, %S.json.Json %t18) - store %S.json.Json %t18, ptr %a19 - call void @finch.drop.S_json_Json(ptr %a19) - %t20 = load i64, ptr %a5 - %t21 = call %S.json.Json @finch.lsp.position(i64 %t20, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7106, i64 3, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7107, i64 5, i64 0 }, %S.json.Json %t23) - %t24 = load i64, ptr %a3 - %t25 = sub i64 %t24, 1 - %t26 = load i64, ptr %a4 - %t27 = sub i64 %t26, 1 - %t28 = load i64, ptr %a4 - %t29 = sub i64 %t28, 1 - %t30 = call %S.json.Json @finch.lsp.range(i64 %t25, i64 %t27, i64 %t29) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7108, i64 14, i64 0 }, %S.json.Json %t30) - store %S.json.Json %t30, ptr %a31 - call void @finch.drop.S_json_Json(ptr %a31) - %t32 = load %S.json.Json, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a9 = alloca %S.json.Json, align 16 - %a12 = alloca %S.json.Json, align 16 - %a18 = alloca %S.json.Json, align 16 - %a23 = alloca %S.json.Json, align 16 - %a25 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.7109, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a2 - %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7110, i64 4, i64 0 }, %S.json.Json %t11) - store %S.json.Json %t11, ptr %a12 - call void @finch.drop.S_json_Json(ptr %a12) - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp sgt i64 %t14, 0 - br i1 %t15, label %then10797, label %endif10799 -then10797: - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t16) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7111, i64 6, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - br label %endif10799 -endif10799: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t20 = load i64, ptr %t19 - %t21 = icmp sgt i64 %t20, 0 - br i1 %t21, label %then10800, label %endif10802 -then10800: - %t22 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t22, ptr %a23 - %t24 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7113, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7112, i64 4, i64 0 }, %S.json.Json %t24) - store %S.json.Json %t24, ptr %a25 - call void @finch.drop.S_json_Json(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a4 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7114, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = load %S.json.Json, ptr %a23 - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7115, i64 13, i64 0 }, %S.json.Json %t29) - call void @finch.drop.S_json_Json(ptr %a23) - br label %endif10802 -endif10802: - %t30 = load %S.json.Json, ptr %a6 - ret %S.json.Json %t30 -} - -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.from10803 -logic.from10803: - br i1 %t3, label %logic.rhs10804, label %logic.end10805 -logic.rhs10804: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend10806 -logic.rend10806: - br label %logic.end10805 -logic.end10805: - %t6 = phi i1 [ false, %logic.from10803 ], [ %t5, %logic.rend10806 ] - br label %logic.from10807 -logic.from10807: - br i1 %t6, label %logic.end10809, label %logic.rhs10808 -logic.rhs10808: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from10810 -logic.from10810: - br i1 %t8, label %logic.rhs10811, label %logic.end10812 -logic.rhs10811: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend10813 -logic.rend10813: - br label %logic.end10812 -logic.end10812: - %t11 = phi i1 [ false, %logic.from10810 ], [ %t10, %logic.rend10813 ] - br label %logic.rend10814 -logic.rend10814: - br label %logic.end10809 -logic.end10809: - %t12 = phi i1 [ true, %logic.from10807 ], [ %t11, %logic.rend10814 ] - br label %logic.from10815 -logic.from10815: - br i1 %t12, label %logic.end10817, label %logic.rhs10816 -logic.rhs10816: - %t13 = load i8, ptr %a1 - %t14 = icmp uge i8 %t13, 48 - br label %logic.from10818 -logic.from10818: - br i1 %t14, label %logic.rhs10819, label %logic.end10820 -logic.rhs10819: - %t15 = load i8, ptr %a1 - %t16 = icmp ule i8 %t15, 57 - br label %logic.rend10821 -logic.rend10821: - br label %logic.end10820 -logic.end10820: - %t17 = phi i1 [ false, %logic.from10818 ], [ %t16, %logic.rend10821 ] - br label %logic.rend10822 -logic.rend10822: - br label %logic.end10817 -logic.end10817: - %t18 = phi i1 [ true, %logic.from10815 ], [ %t17, %logic.rend10822 ] - br label %logic.from10823 -logic.from10823: - br i1 %t18, label %logic.end10825, label %logic.rhs10824 -logic.rhs10824: - %t19 = load i8, ptr %a1 - %t20 = icmp eq i8 %t19, 95 - br label %logic.rend10826 -logic.rend10826: - br label %logic.end10825 -logic.end10825: - %t21 = phi i1 [ true, %logic.from10823 ], [ %t20, %logic.rend10826 ] - 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 - %a30 = alloca %S.json.Json, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond10827 -each.cond10827: - %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.body10828, label %each.end10830 -each.body10828: - %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.7117, 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 %then10831, label %endif10833 -then10831: - store i64 5, ptr %a12 - br label %endif10833 -endif10833: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic10834, label %ok10835 -panic10834: - call void @finch_panic(ptr @.str.7118, i64 497, ptr @.str.7119) - unreachable -ok10835: - %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) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - br label %each.step10829 -each.step10829: - %t31 = load i64, ptr %a3 - %t32 = add i64 %t31, 1 - store i64 %t32, ptr %a3 - br label %each.cond10827 -each.end10830: - 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 - %a47 = alloca %S.lsp.VarRec, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.cond10836 -each.cond10836: - %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.body10837, label %each.end10839 -each.body10837: - %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.from10840 -logic.from10840: - br i1 %t22, label %logic.rhs10841, label %logic.end10842 -logic.rhs10841: - %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.rend10843 -logic.rend10843: - br label %logic.end10842 -logic.end10842: - %t27 = phi i1 [ false, %logic.from10840 ], [ %t26, %logic.rend10843 ] - br label %logic.from10844 -logic.from10844: - br i1 %t27, label %logic.rhs10845, label %logic.end10846 -logic.rhs10845: - %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.rend10847 -logic.rend10847: - br label %logic.end10846 -logic.end10846: - %t33 = phi i1 [ false, %logic.from10844 ], [ %t32, %logic.rend10847 ] - br label %logic.from10848 -logic.from10848: - br i1 %t33, label %logic.rhs10849, label %logic.end10850 -logic.rhs10849: - %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.rend10851 -logic.rend10851: - br label %logic.end10850 -logic.end10850: - %t41 = phi i1 [ false, %logic.from10848 ], [ %t40, %logic.rend10851 ] - br i1 %t41, label %then10852, label %endif10854 -then10852: - %t42 = load %S.lsp.VarRec, ptr %a15 - store %S.lsp.VarRec %t42, ptr %a43 - call void @finch.copy.S_lsp_VarRec(ptr %a44, ptr %a43) - %t45 = load %S.lsp.VarRec, ptr %a44 - %t46 = load %S.lsp.VarRec, ptr %a5 - store %S.lsp.VarRec %t45, ptr %a5 - store %S.lsp.VarRec %t46, ptr %a47 - call void @finch.drop.S_lsp_VarRec(ptr %a47) - br label %endif10854 -endif10854: - br label %each.step10838 -each.step10838: - %t48 = load i64, ptr %a7 - %t49 = add i64 %t48, 1 - store i64 %t49, ptr %a7 - br label %each.cond10836 -each.end10839: - %t50 = load %S.lsp.VarRec, ptr %a5 - ret %S.lsp.VarRec %t50 -} - -define internal void @finch.drop.S_lsp_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a125 = alloca i64, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i64, align 16 - %a146 = alloca %S.lsp.FnRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.json.Json, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca %S.lsp.StructRec, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca %S.json.Json, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca %S.lsp.EnumRec, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.json.Json, align 16 - %a230 = alloca i64, align 16 - %a238 = alloca %S.lsp.EnumRec, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.lsp.VarRec, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca %S.json.Json, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca %S.lsp.VarRec, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca i64, align 16 - %a387 = alloca %S.lsp.StructRec, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca i64, align 16 - %a418 = alloca %S.json.Json, align 16 - %a424 = alloca i64, align 16 - %a432 = alloca %S.lsp.FnRec, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.json.Json, align 16 - %a450 = alloca %S.lsp.Names, align 16 - %a452 = alloca i64, align 16 - %a460 = alloca %S.lsp.VarRec, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca %S.json.Json, align 16 - %a492 = alloca i64, align 16 - %a500 = alloca %S.lsp.FnRec, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca %S.json.Json, align 16 - %a525 = alloca i64, align 16 - %a533 = alloca %S.lsp.StructRec, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca %S.json.Json, align 16 - %a558 = alloca i64, align 16 - %a566 = alloca %S.lsp.EnumRec, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca %S.json.Json, align 16 - %a591 = alloca i64, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca %S.json.Json, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca i64, align 16 - %a617 = alloca %S.docs.Doc, align 16 - %a628 = alloca %S.json.Json, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca i64, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca %S.json.Json, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then10855, label %endif10857 -then10855: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 - %t20 = load i64, ptr %t19 - store i64 %t20, ptr %a14 - br label %endif10857 -endif10857: - %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.7120, 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.cond10858 -while.cond10858: - %t30 = load i64, ptr %a29 - %t31 = icmp sgt i64 %t30, 0 - br label %logic.from10861 -logic.from10861: - br i1 %t31, label %logic.rhs10862, label %logic.end10863 -logic.rhs10862: - %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 %range10864, label %inrange10865 -range10864: - call void @finch_panic_index(ptr @.str.7121, i64 522, i64 %t33, i64 %t35) - unreachable -inrange10865: - %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.rend10866 -logic.rend10866: - br label %logic.end10863 -logic.end10863: - %t41 = phi i1 [ false, %logic.from10861 ], [ %t40, %logic.rend10866 ] - br i1 %t41, label %while.body10859, label %while.end10860 -while.body10859: - %t42 = load i64, ptr %a29 - %t43 = sub i64 %t42, 1 - store i64 %t43, ptr %a29 - br label %while.cond10858 -while.end10860: - %t44 = load i64, ptr %a29 - %t45 = icmp sgt i64 %t44, 0 - br label %logic.from10867 -logic.from10867: - br i1 %t45, label %logic.rhs10868, label %logic.end10869 -logic.rhs10868: - %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 %range10870, label %inrange10871 -range10870: - call void @finch_panic_index(ptr @.str.7122, i64 525, i64 %t47, i64 %t49) - unreachable -inrange10871: - %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.rend10872 -logic.rend10872: - br label %logic.end10869 -logic.end10869: - %t55 = phi i1 [ false, %logic.from10867 ], [ %t54, %logic.rend10872 ] - store i1 %t55, ptr %a56 - %t57 = load i1, ptr %a56 - br i1 %t57, label %then10873, label %endif10875 -then10873: - %t58 = load i64, ptr %a29 - %t59 = sub i64 %t58, 1 - store i64 %t59, ptr %a60 - br label %while.cond10876 -while.cond10876: - %t61 = load i64, ptr %a60 - %t62 = icmp sgt i64 %t61, 0 - br label %logic.from10879 -logic.from10879: - br i1 %t62, label %logic.rhs10880, label %logic.end10881 -logic.rhs10880: - %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 %range10882, label %inrange10883 -range10882: - call void @finch_panic_index(ptr @.str.7123, i64 528, i64 %t64, i64 %t66) - unreachable -inrange10883: - %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.from10884 -logic.from10884: - br i1 %t71, label %logic.end10886, label %logic.rhs10885 -logic.rhs10885: - %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 %range10887, label %inrange10888 -range10887: - call void @finch_panic_index(ptr @.str.7124, i64 528, i64 %t73, i64 %t75) - unreachable -inrange10888: - %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.rend10889 -logic.rend10889: - br label %logic.end10886 -logic.end10886: - %t81 = phi i1 [ true, %logic.from10884 ], [ %t80, %logic.rend10889 ] - br label %logic.from10890 -logic.from10890: - br i1 %t81, label %logic.end10892, label %logic.rhs10891 -logic.rhs10891: - %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 %range10893, label %inrange10894 -range10893: - call void @finch_panic_index(ptr @.str.7125, i64 528, i64 %t83, i64 %t85) - unreachable -inrange10894: - %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.rend10895 -logic.rend10895: - br label %logic.end10892 -logic.end10892: - %t91 = phi i1 [ true, %logic.from10890 ], [ %t90, %logic.rend10895 ] - br label %logic.rend10896 -logic.rend10896: - br label %logic.end10881 -logic.end10881: - %t92 = phi i1 [ false, %logic.from10879 ], [ %t91, %logic.rend10896 ] - br i1 %t92, label %while.body10877, label %while.end10878 -while.body10877: - %t93 = load i64, ptr %a60 - %t94 = sub i64 %t93, 1 - store i64 %t94, ptr %a60 - br label %while.cond10876 -while.end10878: - %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.7126, 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.7128, 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 %then10897, label %endif10899 -then10897: - %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.7129, i64 535) - %t116 = load { ptr, i64, i64 }, ptr %a114 - %t117 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t116, ptr %a102 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - store i1 true, ptr %a103 - br label %endif10899 -endif10899: - %t119 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a102 - store i64 -1, ptr %a122 - %t123 = load i64, ptr %t120 - %t124 = load ptr, ptr %t119 - store i64 0, ptr %a125 - br label %find.cond10900 -find.cond10900: - %t126 = load i64, ptr %a125 - %t127 = icmp slt i64 %t126, %t123 - br i1 %t127, label %find.body10901, label %find.end10904 -find.body10901: - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 %t126 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } %t121, ptr %a131 - %t132 = call i32 @finch_str_eq(ptr %a130, ptr %a131) - %t133 = icmp ne i32 %t132, 0 - br i1 %t133, label %find.hit10902, label %find.next10903 -find.hit10902: - store i64 %t126, ptr %a122 - br label %find.end10904 -find.next10903: - %t134 = add i64 %t126, 1 - store i64 %t134, ptr %a125 - br label %find.cond10900 -find.end10904: - %t135 = load i64, ptr %a122 - %t136 = icmp sge i64 %t135, 0 - br i1 %t136, label %then10905, label %endif10907 -then10905: - %t137 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a138 - br label %each.cond10908 -each.cond10908: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t140 = load i64, ptr %t139 - %t141 = load i64, ptr %a138 - %t142 = icmp slt i64 %t141, %t140 - br i1 %t142, label %each.body10909, label %each.end10911 -each.body10909: - %t143 = load ptr, ptr %t137 - %t144 = getelementptr inbounds %S.lsp.FnRec, ptr %t143, i64 %t141 - %t145 = load %S.lsp.FnRec, ptr %t144 - store %S.lsp.FnRec %t145, ptr %a146 - %t147 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.from10912 -logic.from10912: - br i1 %t153, label %logic.rhs10913, label %logic.end10914 -logic.rhs10913: - %t154 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 2 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp eq i64 %t156, 0 - br label %logic.rend10915 -logic.rend10915: - br label %logic.end10914 -logic.end10914: - %t158 = phi i1 [ false, %logic.from10912 ], [ %t157, %logic.rend10915 ] - br i1 %t158, label %then10916, label %endif10918 -then10916: - %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 7 - %t162 = load { ptr, i64, i64 }, ptr %t161 - %t163 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t160, i64 3, { ptr, i64, i64 } %t162, { ptr, i64, i64 } { ptr @.str.7130, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t163) - store %S.json.Json %t163, ptr %a164 - call void @finch.drop.S_json_Json(ptr %a164) - br label %endif10918 -endif10918: - br label %each.step10910 -each.step10910: - %t165 = load i64, ptr %a138 - %t166 = add i64 %t165, 1 - store i64 %t166, ptr %a138 - br label %each.cond10908 -each.end10911: - %t167 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a168 - br label %each.cond10919 -each.cond10919: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10920, label %each.end10922 -each.body10920: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %t173, i64 %t171 - %t175 = load %S.lsp.StructRec, ptr %t174 - store %S.lsp.StructRec %t175, ptr %a176 - %t177 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } %t179, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then10923, label %endif10925 -then10923: - %t184 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - %t186 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } { ptr @.str.7131, i64 7, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a188 - %t192 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t185, i64 22, { ptr, i64, i64 } %t191, { ptr, i64, i64 } { ptr @.str.7132, i64 0, i64 0 }) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t192) - store %S.json.Json %t192, ptr %a194 - call void @finch.drop.S_json_Json(ptr %a194) - br label %endif10925 -endif10925: - br label %each.step10921 -each.step10921: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10919 -each.end10922: - %t197 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a198 - br label %each.cond10926 -each.cond10926: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = load i64, ptr %a198 - %t202 = icmp slt i64 %t201, %t200 - br i1 %t202, label %each.body10927, label %each.end10929 -each.body10927: - %t203 = load ptr, ptr %t197 - %t204 = getelementptr inbounds %S.lsp.EnumRec, ptr %t203, i64 %t201 - %t205 = load %S.lsp.EnumRec, ptr %t204 - store %S.lsp.EnumRec %t205, ptr %a206 - %t207 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } %t209, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br i1 %t213, label %then10930, label %endif10932 -then10930: - %t214 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t215 = load { ptr, i64, i64 }, ptr %t214 - %t216 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } { ptr @.str.7133, i64 5, i64 0 }, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a218 - %t222 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t215, i64 13, { ptr, i64, i64 } %t221, { ptr, i64, i64 } { ptr @.str.7134, i64 0, i64 0 }) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t222) - store %S.json.Json %t222, ptr %a224 - call void @finch.drop.S_json_Json(ptr %a224) - br label %endif10932 -endif10932: - br label %each.step10928 -each.step10928: - %t225 = load i64, ptr %a198 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a198 - br label %each.cond10926 -each.end10929: - %t227 = load %S.json.Json, ptr %a7 - %t228 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t227) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t228 -endif10907: - %t229 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a230 - br label %each.cond10933 -each.cond10933: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t232 = load i64, ptr %t231 - %t233 = load i64, ptr %a230 - %t234 = icmp slt i64 %t233, %t232 - br i1 %t234, label %each.body10934, label %each.end10936 -each.body10934: - %t235 = load ptr, ptr %t229 - %t236 = getelementptr inbounds %S.lsp.EnumRec, ptr %t235, i64 %t233 - %t237 = load %S.lsp.EnumRec, ptr %t236 - store %S.lsp.EnumRec %t237, ptr %a238 - %t239 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from10937 -logic.from10937: - br i1 %t245, label %logic.rhs10938, label %logic.end10939 -logic.rhs10938: - %t246 = load %S.lsp.Analysis, ptr %a1 - %t247 = load { ptr, i64, i64 }, ptr %a3 - %t248 = load { ptr, i64, i64 }, ptr %a102 - %t249 = load i64, ptr %a4 - %t250 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t246, { ptr, i64, i64 } %t247, { ptr, i64, i64 } %t248, i64 %t249) - %t251 = extractvalue %S.lsp.VarRec %t250, 0 - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - store %S.lsp.VarRec %t250, ptr %a255 - call void @finch.drop.S_lsp_VarRec(ptr %a255) - %t256 = extractvalue { ptr, i64, i64 } %t254, 1 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = icmp eq i64 %t256, 0 - br label %logic.rend10940 -logic.rend10940: - br label %logic.end10939 -logic.end10939: - %t259 = phi i1 [ false, %logic.from10937 ], [ %t258, %logic.rend10940 ] - br i1 %t259, label %then10941, label %endif10943 -then10941: - %t260 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 5 - store i64 0, ptr %a261 - br label %each.cond10944 -each.cond10944: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body10945, label %each.end10947 -each.body10945: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t264 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.7135, i64 1, i64 0 }, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - %t277 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t276, ptr %a279 - store { ptr, i64, i64 } %t277, ptr %a280 - call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a278 - %t283 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t270, i64 20, { ptr, i64, i64 } %t282, { ptr, i64, i64 } { ptr @.str.7136, i64 0, i64 0 }) - store { ptr, i64, i64 } %t282, ptr %a284 - call void @finch_str_drop(ptr %a284) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t283) - store %S.json.Json %t283, ptr %a285 - call void @finch.drop.S_json_Json(ptr %a285) - br label %each.step10946 -each.step10946: - %t286 = load i64, ptr %a261 - %t287 = add i64 %t286, 1 - store i64 %t287, ptr %a261 - br label %each.cond10944 -each.end10947: - %t288 = load %S.json.Json, ptr %a7 - %t289 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t288) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t289 -endif10943: - br label %each.step10935 -each.step10935: - %t290 = load i64, ptr %a230 - %t291 = add i64 %t290, 1 - store i64 %t291, ptr %a230 - br label %each.cond10933 -each.end10936: - %t292 = load %S.lsp.Analysis, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a3 - %t294 = load { ptr, i64, i64 }, ptr %a102 - %t295 = load i64, ptr %a4 - %t296 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t292, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294, i64 %t295) - %t297 = extractvalue %S.lsp.VarRec %t296, 1 - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_copy(ptr %a299, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store %S.lsp.VarRec %t296, ptr %a301 - call void @finch.drop.S_lsp_VarRec(ptr %a301) - store { ptr, i64, i64 } %t300, ptr %a302 - %t303 = load i1, ptr %a103 - br label %logic.from10948 -logic.from10948: - br i1 %t303, label %logic.rhs10949, label %logic.end10950 -logic.rhs10949: - %t304 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t304, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.7138, i64 2, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_starts(ptr %a305, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br label %logic.rend10951 -logic.rend10951: - br label %logic.end10950 -logic.end10950: - %t310 = phi i1 [ false, %logic.from10948 ], [ %t309, %logic.rend10951 ] - br i1 %t310, label %then10952, label %else10953 -then10952: - %t311 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t311, ptr %a312 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t315 = load i64, ptr %t314 - call void @finch_str_sub(ptr %a313, ptr %a312, i64 2, i64 %t315, ptr @.str.7139, i64 569) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t316, ptr %a302 - store { ptr, i64, i64 } %t317, ptr %a318 - call void @finch_str_drop(ptr %a318) - br label %endif10954 -else10953: - %t319 = load i1, ptr %a103 - br label %logic.from10955 -logic.from10955: - br i1 %t319, label %logic.rhs10956, label %logic.end10957 -logic.rhs10956: - %t320 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t320, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.7140, i64 3, i64 0 }, ptr %a322 - %t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322) - %t324 = icmp ne i32 %t323, 0 - br label %logic.rend10958 -logic.rend10958: - br label %logic.end10957 -logic.end10957: - %t325 = phi i1 [ false, %logic.from10955 ], [ %t324, %logic.rend10958 ] - br i1 %t325, label %then10959, label %endif10961 -then10959: - %t326 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.7141, i64 4, i64 0 }, ptr %a302 - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif10961 -endif10961: - br label %endif10954 -endif10954: - %t328 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t328, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.7143, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_starts(ptr %a329, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.from10962 -logic.from10962: - br i1 %t333, label %logic.rhs10963, label %logic.end10964 -logic.rhs10963: - %t334 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.7145, i64 1, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_ends(ptr %a335, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br label %logic.rend10965 -logic.rend10965: - br label %logic.end10964 -logic.end10964: - %t340 = phi i1 [ false, %logic.from10962 ], [ %t339, %logic.rend10965 ] - br i1 %t340, label %then10966, label %endif10968 -then10966: - %t341 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t341, ptr %a342 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = sub i64 %t345, 1 - call void @finch_str_sub(ptr %a343, ptr %a342, i64 4, i64 %t346, ptr @.str.7146, i64 574) - %t347 = load { ptr, i64, i64 }, ptr %a343 - %t348 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t347, ptr %a302 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_drop(ptr %a349) - br label %endif10968 -endif10968: - %t350 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t350, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.7148, i64 2, i64 0 }, ptr %a353 - %t354 = call i32 @finch_str_starts(ptr %a351, ptr %a353) - %t355 = icmp ne i32 %t354, 0 - br i1 %t355, label %then10969, label %else10970 -then10969: - %t356 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t356) - store { ptr, i64, i64 } %t356, ptr %a357 - call void @finch.drop.arr_S_docs_Doc(ptr %a357) - br label %endif10971 -else10970: - %t358 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.7149, i64 3, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then10972, label %else10973 -then10972: - %t363 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t363, ptr %a364 - call void @finch.drop.arr_S_docs_Doc(ptr %a364) - br label %endif10974 -else10973: - %t365 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t365, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.7151, i64 4, i64 0 }, ptr %a368 - %t369 = call i32 @finch_str_starts(ptr %a366, ptr %a368) - %t370 = icmp ne i32 %t369, 0 - br i1 %t370, label %then10975, label %else10976 -then10975: - %t371 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a372 - call void @finch.drop.arr_S_docs_Doc(ptr %a372) - br label %endif10977 -else10976: - %t373 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t373, ptr %a374 - call void @finch_str_copy(ptr %a375, ptr %a374) - %t376 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t376, ptr %a377 - %t378 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a379 - br label %each.cond10978 -each.cond10978: - %t380 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t381 = load i64, ptr %t380 - %t382 = load i64, ptr %a379 - %t383 = icmp slt i64 %t382, %t381 - br i1 %t383, label %each.body10979, label %each.end10981 -each.body10979: - %t384 = load ptr, ptr %t378 - %t385 = getelementptr inbounds %S.lsp.StructRec, ptr %t384, i64 %t382 - %t386 = load %S.lsp.StructRec, ptr %t385 - store %S.lsp.StructRec %t386, ptr %a387 - %t388 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 1 - %t389 = load { ptr, i64, i64 }, ptr %t388 - %t390 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t389, ptr %a391 - store { ptr, i64, i64 } %t390, ptr %a392 - %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) - %t394 = icmp ne i32 %t393, 0 - br i1 %t394, label %then10982, label %endif10984 -then10982: - %t395 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %t395, i32 0, i32 1 - %t397 = load i64, ptr %t396 - store i64 0, ptr %a398 - br label %for.cond10985 -for.cond10985: - %t399 = load i64, ptr %a398 - %t400 = icmp slt i64 %t399, %t397 - br i1 %t400, label %for.body10986, label %for.end10988 -for.body10986: - %t401 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t402 = load i64, ptr %a398 - %t403 = load { ptr, i64, i64 }, ptr %t401 - %t404 = extractvalue { ptr, i64, i64 } %t403, 1 - %t405 = icmp uge i64 %t402, %t404 - br i1 %t405, label %range10989, label %inrange10990 -range10989: - call void @finch_panic_index(ptr @.str.7152, i64 587, i64 %t402, i64 %t404) - unreachable -inrange10990: - %t406 = extractvalue { ptr, i64, i64 } %t403, 0 - %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t402 - %t408 = load { ptr, i64, i64 }, ptr %t407 - %t409 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 6 - %t410 = load i64, ptr %a398 - %t411 = load { ptr, i64, i64 }, ptr %t409 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 %t410, %t412 - br i1 %t413, label %range10991, label %inrange10992 -range10991: - call void @finch_panic_index(ptr @.str.7153, i64 587, i64 %t410, i64 %t412) - unreachable -inrange10992: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t410 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t408, i64 5, { ptr, i64, i64 } %t416, { ptr, i64, i64 } { ptr @.str.7154, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t417) - store %S.json.Json %t417, ptr %a418 - call void @finch.drop.S_json_Json(ptr %a418) - br label %for.step10987 -for.step10987: - %t419 = load i64, ptr %a398 - %t420 = add i64 %t419, 1 - store i64 %t420, ptr %a398 - br label %for.cond10985 -for.end10988: - br label %endif10984 -endif10984: - br label %each.step10980 -each.step10980: - %t421 = load i64, ptr %a379 - %t422 = add i64 %t421, 1 - store i64 %t422, ptr %a379 - br label %each.cond10978 -each.end10981: - %t423 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a424 - br label %each.cond10993 -each.cond10993: - %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t423, i32 0, i32 1 - %t426 = load i64, ptr %t425 - %t427 = load i64, ptr %a424 - %t428 = icmp slt i64 %t427, %t426 - br i1 %t428, label %each.body10994, label %each.end10996 -each.body10994: - %t429 = load ptr, ptr %t423 - %t430 = getelementptr inbounds %S.lsp.FnRec, ptr %t429, i64 %t427 - %t431 = load %S.lsp.FnRec, ptr %t430 - store %S.lsp.FnRec %t431, ptr %a432 - %t433 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 2 - %t434 = load { ptr, i64, i64 }, ptr %t433 - %t435 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t434, ptr %a436 - store { ptr, i64, i64 } %t435, ptr %a437 - %t438 = call i32 @finch_str_eq(ptr %a436, ptr %a437) - %t439 = icmp ne i32 %t438, 0 - br i1 %t439, label %then10997, label %endif10999 -then10997: - %t440 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 1 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 7 - %t443 = load { ptr, i64, i64 }, ptr %t442 - %t444 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t441, i64 2, { ptr, i64, i64 } %t443, { ptr, i64, i64 } { ptr @.str.7155, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t444) - store %S.json.Json %t444, ptr %a445 - call void @finch.drop.S_json_Json(ptr %a445) - br label %endif10999 -endif10999: - br label %each.step10995 -each.step10995: - %t446 = load i64, ptr %a424 - %t447 = add i64 %t446, 1 - store i64 %t447, ptr %a424 - br label %each.cond10993 -each.end10996: - call void @finch_str_drop(ptr %a377) - br label %endif10977 -endif10977: - br label %endif10974 -endif10974: - br label %endif10971 -endif10971: - %t448 = load %S.json.Json, ptr %a7 - %t449 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t448) - call void @finch_str_drop(ptr %a302) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t449 -endif10875: - store %S.lsp.Names zeroinitializer, ptr %a450 - %t451 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 - store i64 0, ptr %a452 - br label %each.cond11000 -each.cond11000: - %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t451, i32 0, i32 1 - %t454 = load i64, ptr %t453 - %t455 = load i64, ptr %a452 - %t456 = icmp slt i64 %t455, %t454 - br i1 %t456, label %each.body11001, label %each.end11003 -each.body11001: - %t457 = load ptr, ptr %t451 - %t458 = getelementptr inbounds %S.lsp.VarRec, ptr %t457, i64 %t455 - %t459 = load %S.lsp.VarRec, ptr %t458 - store %S.lsp.VarRec %t459, ptr %a460 - %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 3 - %t462 = load i64, ptr %t461 - %t463 = load i64, ptr %a4 - %t464 = icmp sle i64 %t462, %t463 - br label %logic.from11004 -logic.from11004: - br i1 %t464, label %logic.rhs11005, label %logic.end11006 -logic.rhs11005: - %t465 = load i64, ptr %a4 - %t466 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 7 - %t467 = load i64, ptr %t466 - %t468 = add i64 %t467, 1 - %t469 = icmp sle i64 %t465, %t468 - br label %logic.rend11007 -logic.rend11007: - br label %logic.end11006 -logic.end11006: - %t470 = phi i1 [ false, %logic.from11004 ], [ %t469, %logic.rend11007 ] - br label %logic.from11008 -logic.from11008: - br i1 %t470, label %logic.rhs11009, label %logic.end11010 -logic.rhs11009: - %t471 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 5 - %t472 = load { ptr, i64, i64 }, ptr %t471 - %t473 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t472, ptr %a474 - store { ptr, i64, i64 } %t473, ptr %a475 - %t476 = call i32 @finch_str_eq(ptr %a474, ptr %a475) - %t477 = icmp ne i32 %t476, 0 - br label %logic.rend11011 -logic.rend11011: - br label %logic.end11010 -logic.end11010: - %t478 = phi i1 [ false, %logic.from11008 ], [ %t477, %logic.rend11011 ] - br label %logic.from11012 -logic.from11012: - br i1 %t478, label %logic.rhs11013, label %logic.end11014 -logic.rhs11013: - %t479 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t480 = load { ptr, i64, i64 }, ptr %t479 - %t481 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t480) - br label %logic.rend11015 -logic.rend11015: - br label %logic.end11014 -logic.end11014: - %t482 = phi i1 [ false, %logic.from11012 ], [ %t481, %logic.rend11015 ] - br i1 %t482, label %then11016, label %endif11018 -then11016: - %t483 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - %t485 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 1 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t484, i64 6, { ptr, i64, i64 } %t486, { ptr, i64, i64 } { ptr @.str.7156, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t487) - store %S.json.Json %t487, ptr %a488 - call void @finch.drop.S_json_Json(ptr %a488) - br label %endif11018 -endif11018: - br label %each.step11002 -each.step11002: - %t489 = load i64, ptr %a452 - %t490 = add i64 %t489, 1 - store i64 %t490, ptr %a452 - br label %each.cond11000 -each.end11003: - %t491 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a492 - br label %each.cond11019 -each.cond11019: - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i32 0, i32 1 - %t494 = load i64, ptr %t493 - %t495 = load i64, ptr %a492 - %t496 = icmp slt i64 %t495, %t494 - br i1 %t496, label %each.body11020, label %each.end11022 -each.body11020: - %t497 = load ptr, ptr %t491 - %t498 = getelementptr inbounds %S.lsp.FnRec, ptr %t497, i64 %t495 - %t499 = load %S.lsp.FnRec, ptr %t498 - store %S.lsp.FnRec %t499, ptr %a500 - %t501 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 2 - %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 - %t503 = load i64, ptr %t502 - %t504 = icmp eq i64 %t503, 0 - br label %logic.from11023 -logic.from11023: - br i1 %t504, label %logic.rhs11024, label %logic.end11025 -logic.rhs11024: - %t505 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 0 - %t506 = load { ptr, i64, i64 }, ptr %t505 - store { ptr, i64, i64 } %t506, ptr %a507 - store { ptr, i64, i64 } { ptr @.str.7157, i64 0, i64 0 }, ptr %a508 - %t509 = call i32 @finch_str_eq(ptr %a507, ptr %a508) - %t510 = icmp ne i32 %t509, 0 - br label %logic.rend11026 -logic.rend11026: - br label %logic.end11025 -logic.end11025: - %t511 = phi i1 [ false, %logic.from11023 ], [ %t510, %logic.rend11026 ] - br label %logic.from11027 -logic.from11027: - br i1 %t511, label %logic.rhs11028, label %logic.end11029 -logic.rhs11028: - %t512 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t513 = load { ptr, i64, i64 }, ptr %t512 - %t514 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t513) - br label %logic.rend11030 -logic.rend11030: - br label %logic.end11029 -logic.end11029: - %t515 = phi i1 [ false, %logic.from11027 ], [ %t514, %logic.rend11030 ] - br i1 %t515, label %then11031, label %endif11033 -then11031: - %t516 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 7 - %t519 = load { ptr, i64, i64 }, ptr %t518 - %t520 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t517, i64 3, { ptr, i64, i64 } %t519, { ptr, i64, i64 } { ptr @.str.7158, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t520) - store %S.json.Json %t520, ptr %a521 - call void @finch.drop.S_json_Json(ptr %a521) - br label %endif11033 -endif11033: - br label %each.step11021 -each.step11021: - %t522 = load i64, ptr %a492 - %t523 = add i64 %t522, 1 - store i64 %t523, ptr %a492 - br label %each.cond11019 -each.end11022: - %t524 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a525 - br label %each.cond11034 -each.cond11034: - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 - %t527 = load i64, ptr %t526 - %t528 = load i64, ptr %a525 - %t529 = icmp slt i64 %t528, %t527 - br i1 %t529, label %each.body11035, label %each.end11037 -each.body11035: - %t530 = load ptr, ptr %t524 - %t531 = getelementptr inbounds %S.lsp.StructRec, ptr %t530, i64 %t528 - %t532 = load %S.lsp.StructRec, ptr %t531 - store %S.lsp.StructRec %t532, ptr %a533 - %t534 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - store { ptr, i64, i64 } %t535, ptr %a536 - store { ptr, i64, i64 } { ptr @.str.7159, i64 0, i64 0 }, ptr %a537 - %t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537) - %t539 = icmp ne i32 %t538, 0 - br label %logic.from11038 -logic.from11038: - br i1 %t539, label %logic.rhs11039, label %logic.end11040 -logic.rhs11039: - %t540 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t541 = load { ptr, i64, i64 }, ptr %t540 - %t542 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t541) - br label %logic.rend11041 -logic.rend11041: - br label %logic.end11040 -logic.end11040: - %t543 = phi i1 [ false, %logic.from11038 ], [ %t542, %logic.rend11041 ] - br i1 %t543, label %then11042, label %endif11044 -then11042: - %t544 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - %t546 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } { ptr @.str.7160, i64 7, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - %t552 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t545, i64 22, { ptr, i64, i64 } %t551, { ptr, i64, i64 } { ptr @.str.7161, i64 0, i64 0 }) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t552) - store %S.json.Json %t552, ptr %a554 - call void @finch.drop.S_json_Json(ptr %a554) - br label %endif11044 -endif11044: - br label %each.step11036 -each.step11036: - %t555 = load i64, ptr %a525 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a525 - br label %each.cond11034 -each.end11037: - %t557 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a558 - br label %each.cond11045 -each.cond11045: - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i32 0, i32 1 - %t560 = load i64, ptr %t559 - %t561 = load i64, ptr %a558 - %t562 = icmp slt i64 %t561, %t560 - br i1 %t562, label %each.body11046, label %each.end11048 -each.body11046: - %t563 = load ptr, ptr %t557 - %t564 = getelementptr inbounds %S.lsp.EnumRec, ptr %t563, i64 %t561 - %t565 = load %S.lsp.EnumRec, ptr %t564 - store %S.lsp.EnumRec %t565, ptr %a566 - %t567 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 0 - %t568 = load { ptr, i64, i64 }, ptr %t567 - store { ptr, i64, i64 } %t568, ptr %a569 - store { ptr, i64, i64 } { ptr @.str.7162, i64 0, i64 0 }, ptr %a570 - %t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570) - %t572 = icmp ne i32 %t571, 0 - br label %logic.from11049 -logic.from11049: - br i1 %t572, label %logic.rhs11050, label %logic.end11051 -logic.rhs11050: - %t573 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t574 = load { ptr, i64, i64 }, ptr %t573 - %t575 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t574) - br label %logic.rend11052 -logic.rend11052: - br label %logic.end11051 -logic.end11051: - %t576 = phi i1 [ false, %logic.from11049 ], [ %t575, %logic.rend11052 ] - br i1 %t576, label %then11053, label %endif11055 -then11053: - %t577 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t578 = load { ptr, i64, i64 }, ptr %t577 - %t579 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t580 = load { ptr, i64, i64 }, ptr %t579 - store { ptr, i64, i64 } { ptr @.str.7163, i64 5, i64 0 }, ptr %a582 - store { ptr, i64, i64 } %t580, ptr %a583 - call void @finch_str_concat(ptr %a581, ptr %a582, ptr %a583) - %t584 = load { ptr, i64, i64 }, ptr %a581 - %t585 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t578, i64 13, { ptr, i64, i64 } %t584, { ptr, i64, i64 } { ptr @.str.7164, i64 0, i64 0 }) - store { ptr, i64, i64 } %t584, ptr %a586 - call void @finch_str_drop(ptr %a586) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t585) - store %S.json.Json %t585, ptr %a587 - call void @finch.drop.S_json_Json(ptr %a587) - br label %endif11055 -endif11055: - br label %each.step11047 -each.step11047: - %t588 = load i64, ptr %a558 - %t589 = add i64 %t588, 1 - store i64 %t589, ptr %a558 - br label %each.cond11045 -each.end11048: - %t590 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - store i64 0, ptr %a591 - br label %each.cond11056 -each.cond11056: - %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i32 0, i32 1 - %t593 = load i64, ptr %t592 - %t594 = load i64, ptr %a591 - %t595 = icmp slt i64 %t594, %t593 - br i1 %t595, label %each.body11057, label %each.end11059 -each.body11057: - %t596 = load ptr, ptr %t590 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - %t598 = load { ptr, i64, i64 }, ptr %t597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t600) - br i1 %t601, label %then11060, label %endif11062 -then11060: - %t602 = load { ptr, i64, i64 }, ptr %a599 - %t603 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t602, i64 9, { ptr, i64, i64 } { ptr @.str.7165, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.7166, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t603) - store %S.json.Json %t603, ptr %a604 - call void @finch.drop.S_json_Json(ptr %a604) - br label %endif11062 -endif11062: - br label %each.step11058 -each.step11058: - %t605 = load i64, ptr %a591 - %t606 = add i64 %t605, 1 - store i64 %t606, ptr %a591 - br label %each.cond11056 -each.end11059: - %t607 = call { ptr, i64, i64 } @finch.docs.builtins() - store { ptr, i64, i64 } %t607, ptr %a608 - store i64 0, ptr %a609 - br label %each.cond11063 -each.cond11063: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a608, i32 0, i32 1 - %t611 = load i64, ptr %t610 - %t612 = load i64, ptr %a609 - %t613 = icmp slt i64 %t612, %t611 - br i1 %t613, label %each.body11064, label %each.end11066 -each.body11064: - %t614 = load ptr, ptr %a608 - %t615 = getelementptr inbounds %S.docs.Doc, ptr %t614, i64 %t612 - %t616 = load %S.docs.Doc, ptr %t615 - store %S.docs.Doc %t616, ptr %a617 - %t618 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - %t620 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t619) - br i1 %t620, label %then11067, label %endif11069 -then11067: - %t621 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t622 = load { ptr, i64, i64 }, ptr %t621 - %t623 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 1 - %t624 = load { ptr, i64, i64 }, ptr %t623 - %t625 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 2 - %t626 = load { ptr, i64, i64 }, ptr %t625 - %t627 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t622, i64 3, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t627) - store %S.json.Json %t627, ptr %a628 - call void @finch.drop.S_json_Json(ptr %a628) - br label %endif11069 -endif11069: - br label %each.step11065 -each.step11065: - %t629 = load i64, ptr %a609 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a609 - br label %each.cond11063 -each.end11066: - call void @finch.drop.arr_S_docs_Doc(ptr %a608) - %t631 = call { ptr, i64, i64 } @finch.docs.keywords() - store { ptr, i64, i64 } %t631, ptr %a632 - store i64 0, ptr %a633 - br label %each.cond11070 -each.cond11070: - %t634 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t635 = load i64, ptr %t634 - %t636 = load i64, ptr %a633 - %t637 = icmp slt i64 %t636, %t635 - br i1 %t637, label %each.body11071, label %each.end11073 -each.body11071: - %t638 = load ptr, ptr %a632 - %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t636 - %t640 = load { ptr, i64, i64 }, ptr %t639 - store { ptr, i64, i64 } %t640, ptr %a641 - %t642 = load { ptr, i64, i64 }, ptr %a641 - %t643 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t642) - br i1 %t643, label %then11074, label %endif11076 -then11074: - %t644 = load { ptr, i64, i64 }, ptr %a641 - %t645 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t644, i64 14, { ptr, i64, i64 } { ptr @.str.7167, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7168, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t645) - store %S.json.Json %t645, ptr %a646 - call void @finch.drop.S_json_Json(ptr %a646) - br label %endif11076 -endif11076: - br label %each.step11072 -each.step11072: - %t647 = load i64, ptr %a633 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a633 - br label %each.cond11070 -each.end11073: - call void @finch.drop.arr_str(ptr %a632) - %t649 = call { ptr, i64, i64 } @finch.docs.typeNames() - store { ptr, i64, i64 } %t649, ptr %a650 - store i64 0, ptr %a651 - br label %each.cond11077 -each.cond11077: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %a650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body11078, label %each.end11080 -each.body11078: - %t656 = load ptr, ptr %a650 - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %t656, i64 %t654 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t658, ptr %a659 - %t660 = load { ptr, i64, i64 }, ptr %a659 - %t661 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t660) - br i1 %t661, label %then11081, label %endif11083 -then11081: - %t662 = load { ptr, i64, i64 }, ptr %a659 - %t663 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t662, i64 25, { ptr, i64, i64 } { ptr @.str.7169, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7170, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t663) - store %S.json.Json %t663, ptr %a664 - call void @finch.drop.S_json_Json(ptr %a664) - br label %endif11083 -endif11083: - br label %each.step11079 -each.step11079: - %t665 = load i64, ptr %a651 - %t666 = add i64 %t665, 1 - store i64 %t666, ptr %a651 - br label %each.cond11077 -each.end11080: - call void @finch.drop.arr_str(ptr %a650) - %t667 = load %S.json.Json, ptr %a7 - %t668 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t667) - call void @finch.drop.S_lsp_Names(ptr %a450) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t668 -} - -define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.cond11084 -find.cond11084: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body11085, label %find.end11088 -find.body11085: - %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.hit11086, label %find.next11087 -find.hit11086: - store i64 %t9, ptr %a5 - br label %find.end11088 -find.next11087: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond11084 -find.end11088: - %t18 = load i64, ptr %a5 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then11089, label %endif11091 -then11089: - ret i1 false -endif11091: - %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 - %a5 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t2, ptr %a3 - %t4 = call %S.json.Json @finch.json.new_bool(i1 false) - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7171, i64 12, i64 0 }, %S.json.Json %t4) - store %S.json.Json %t4, ptr %a5 - call void @finch.drop.S_json_Json(ptr %a5) - %t6 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7172, i64 5, i64 0 }, %S.json.Json %t6) - %t7 = load %S.json.Json, ptr %a3 - ret %S.json.Json %t7 -} - -define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 %S.lsp.VarRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca i64, align 16 - %a188 = alloca %S.lsp.FnRec, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca %S.json.Json, align 16 - %a209 = alloca %S.json.Json, align 16 - %a211 = alloca %S.json.Json, align 16 - %a213 = alloca i64, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.json.Json, align 16 - %a229 = alloca %S.json.Json, align 16 - %a235 = alloca %S.json.Json, align 16 - %a238 = alloca %S.json.Json, align 16 - %a241 = alloca %S.json.Json, align 16 - %a244 = alloca %S.json.Json, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca %S.docs.Doc, align 16 - %a258 = alloca %S.json.Json, align 16 - %a262 = alloca %S.json.Json, align 16 - %a266 = alloca %S.json.Json, align 16 - %a268 = alloca %S.json.Json, align 16 - %a271 = alloca %S.json.Json, align 16 - %a274 = alloca %S.json.Json, align 16 - %a277 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then11092, label %endif11094 -then11092: - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t18 = load i64, ptr %t17 - store i64 %t18, ptr %a12 - br label %endif11094 -endif11094: - %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.7173, 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.cond11095 -while.cond11095: - %t32 = load i64, ptr %a31 - %t33 = icmp sge i64 %t32, 0 - br i1 %t33, label %while.body11096, label %while.end11097 -while.body11096: - %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 %range11098, label %inrange11099 -range11098: - call void @finch_panic_index(ptr @.str.7174, i64 678, i64 %t34, i64 %t36) - unreachable -inrange11099: - %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.from11100 -logic.from11100: - br i1 %t43, label %logic.end11102, label %logic.rhs11101 -logic.rhs11101: - %t44 = load i8, ptr %a41 - %t45 = icmp eq i8 %t44, 93 - br label %logic.rend11103 -logic.rend11103: - br label %logic.end11102 -logic.end11102: - %t46 = phi i1 [ true, %logic.from11100 ], [ %t45, %logic.rend11103 ] - br i1 %t46, label %then11104, label %else11105 -then11104: - %t47 = load i64, ptr %a25 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a25 - br label %endif11106 -else11105: - %t49 = load i8, ptr %a41 - %t50 = icmp eq i8 %t49, 40 - br label %logic.from11107 -logic.from11107: - br i1 %t50, label %logic.end11109, label %logic.rhs11108 -logic.rhs11108: - %t51 = load i8, ptr %a41 - %t52 = icmp eq i8 %t51, 91 - br label %logic.rend11110 -logic.rend11110: - br label %logic.end11109 -logic.end11109: - %t53 = phi i1 [ true, %logic.from11107 ], [ %t52, %logic.rend11110 ] - br i1 %t53, label %then11111, label %else11112 -then11111: - %t54 = load i64, ptr %a25 - %t55 = icmp eq i64 %t54, 0 - br i1 %t55, label %then11114, label %else11115 -then11114: - %t56 = load i8, ptr %a41 - %t57 = icmp eq i8 %t56, 40 - br i1 %t57, label %then11117, label %endif11119 -then11117: - %t58 = load i64, ptr %a31 - store i64 %t58, ptr %a27 - br label %while.end11097 -endif11119: - br label %endif11116 -else11115: - %t59 = load i64, ptr %a25 - %t60 = sub i64 %t59, 1 - store i64 %t60, ptr %a25 - br label %endif11116 -endif11116: - br label %endif11113 -else11112: - %t61 = load i8, ptr %a41 - %t62 = icmp eq i8 %t61, 44 - br label %logic.from11120 -logic.from11120: - br i1 %t62, label %logic.rhs11121, label %logic.end11122 -logic.rhs11121: - %t63 = load i64, ptr %a25 - %t64 = icmp eq i64 %t63, 0 - br label %logic.rend11123 -logic.rend11123: - br label %logic.end11122 -logic.end11122: - %t65 = phi i1 [ false, %logic.from11120 ], [ %t64, %logic.rend11123 ] - br i1 %t65, label %then11124, label %endif11126 -then11124: - %t66 = load i64, ptr %a26 - %t67 = add i64 %t66, 1 - store i64 %t67, ptr %a26 - br label %endif11126 -endif11126: - br label %endif11113 -endif11113: - br label %endif11106 -endif11106: - %t68 = load i64, ptr %a31 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %a31 - br label %while.cond11095 -while.end11097: - %t70 = load i64, ptr %a27 - %t71 = icmp slt i64 %t70, 0 - br i1 %t71, label %then11127, label %endif11129 -then11127: - %t72 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t72 -endif11129: - %t73 = load i64, ptr %a27 - store i64 %t73, ptr %a74 - %t75 = load i64, ptr %a74 - store i64 %t75, ptr %a76 - br label %while.cond11130 -while.cond11130: - %t77 = load i64, ptr %a76 - %t78 = icmp sgt i64 %t77, 0 - br label %logic.from11133 -logic.from11133: - br i1 %t78, label %logic.rhs11134, label %logic.end11135 -logic.rhs11134: - %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 %range11136, label %inrange11137 -range11136: - call void @finch_panic_index(ptr @.str.7175, i64 700, i64 %t80, i64 %t82) - unreachable -inrange11137: - %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.rend11138 -logic.rend11138: - br label %logic.end11135 -logic.end11135: - %t88 = phi i1 [ false, %logic.from11133 ], [ %t87, %logic.rend11138 ] - br i1 %t88, label %while.body11131, label %while.end11132 -while.body11131: - %t89 = load i64, ptr %a76 - %t90 = sub i64 %t89, 1 - store i64 %t90, ptr %a76 - br label %while.cond11130 -while.end11132: - %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.7176, 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 %then11139, label %endif11141 -then11139: - %t101 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t101 -endif11141: - store { ptr, i64, i64 } { ptr @.str.7177, i64 0, i64 0 }, ptr %a102 - %t103 = load i64, ptr %a76 - %t104 = icmp sgt i64 %t103, 0 - br label %logic.from11142 -logic.from11142: - br i1 %t104, label %logic.rhs11143, label %logic.end11144 -logic.rhs11143: - %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 %range11145, label %inrange11146 -range11145: - call void @finch_panic_index(ptr @.str.7178, i64 708, i64 %t106, i64 %t108) - unreachable -inrange11146: - %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.rend11147 -logic.rend11147: - br label %logic.end11144 -logic.end11144: - %t114 = phi i1 [ false, %logic.from11142 ], [ %t113, %logic.rend11147 ] - br i1 %t114, label %then11148, label %endif11150 -then11148: - %t115 = load i64, ptr %a76 - %t116 = sub i64 %t115, 1 - store i64 %t116, ptr %a117 - br label %while.cond11151 -while.cond11151: - %t118 = load i64, ptr %a117 - %t119 = icmp sgt i64 %t118, 0 - br label %logic.from11154 -logic.from11154: - br i1 %t119, label %logic.rhs11155, label %logic.end11156 -logic.rhs11155: - %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 %range11157, label %inrange11158 -range11157: - call void @finch_panic_index(ptr @.str.7179, i64 711, i64 %t121, i64 %t123) - unreachable -inrange11158: - %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.rend11159 -logic.rend11159: - br label %logic.end11156 -logic.end11156: - %t129 = phi i1 [ false, %logic.from11154 ], [ %t128, %logic.rend11159 ] - br i1 %t129, label %while.body11152, label %while.end11153 -while.body11152: - %t130 = load i64, ptr %a117 - %t131 = sub i64 %t130, 1 - store i64 %t131, ptr %a117 - br label %while.cond11151 -while.end11153: - %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.7180, 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 %S.lsp.VarRec %t144, ptr %a149 - call void @finch.drop.S_lsp_VarRec(ptr %a149) - store { ptr, i64, i64 } %t148, ptr %a150 - %t151 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.7182, i64 4, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_starts(ptr %a152, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from11160 -logic.from11160: - br i1 %t156, label %logic.rhs11161, label %logic.end11162 -logic.rhs11161: - %t157 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.7184, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_ends(ptr %a158, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - br label %logic.rend11163 -logic.rend11163: - br label %logic.end11162 -logic.end11162: - %t163 = phi i1 [ false, %logic.from11160 ], [ %t162, %logic.rend11163 ] - br i1 %t163, label %then11164, label %endif11166 -then11164: - %t164 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t164, ptr %a165 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %a150, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = sub i64 %t168, 1 - call void @finch_str_sub(ptr %a166, ptr %a165, i64 4, i64 %t169, ptr @.str.7185, i64 717) - %t170 = load { ptr, i64, i64 }, ptr %a166 - %t171 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t170, ptr %a150 - store { ptr, i64, i64 } %t171, ptr %a172 - call void @finch_str_drop(ptr %a172) - br label %endif11166 -endif11166: - %t173 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t173, ptr %a174 - call void @finch_str_copy(ptr %a175, ptr %a174) - %t176 = load { ptr, i64, i64 }, ptr %a175 - %t177 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t176, ptr %a102 - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - call void @finch_str_drop(ptr %a150) - call void @finch_str_drop(ptr %a139) - br label %endif11150 -endif11150: - %t179 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a180 - br label %each.cond11167 -each.cond11167: - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t182 = load i64, ptr %t181 - %t183 = load i64, ptr %a180 - %t184 = icmp slt i64 %t183, %t182 - br i1 %t184, label %each.body11168, label %each.end11170 -each.body11168: - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.lsp.FnRec, ptr %t185, i64 %t183 - %t187 = load %S.lsp.FnRec, ptr %t186 - store %S.lsp.FnRec %t187, ptr %a188 - %t189 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } %t191, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br label %logic.from11171 -logic.from11171: - br i1 %t195, label %logic.rhs11172, label %logic.end11173 -logic.rhs11172: - %t196 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 2 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t197, ptr %a199 - store { ptr, i64, i64 } %t198, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.rend11174 -logic.rend11174: - br label %logic.end11173 -logic.end11173: - %t203 = phi i1 [ false, %logic.from11171 ], [ %t202, %logic.rend11174 ] - br i1 %t203, label %then11175, label %endif11177 -then11175: - %t204 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t204, ptr %a205 - %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 7 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t207) - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7186, i64 5, i64 0 }, %S.json.Json %t208) - store %S.json.Json %t208, ptr %a209 - call void @finch.drop.S_json_Json(ptr %a209) - %t210 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t210, ptr %a211 - %t212 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 8 - store i64 0, ptr %a213 - br label %each.cond11178 -each.cond11178: - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t215 = load i64, ptr %t214 - %t216 = load i64, ptr %a213 - %t217 = icmp slt i64 %t216, %t215 - br i1 %t217, label %each.body11179, label %each.end11181 -each.body11179: - %t218 = load ptr, ptr %t212 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a221, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = icmp sgt i64 %t223, 0 - br i1 %t224, label %then11182, label %endif11184 -then11182: - %t225 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t225, ptr %a226 - %t227 = load { ptr, i64, i64 }, ptr %a221 - %t228 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t227) - call void @finch.json.Json.set(ptr %a226, { ptr, i64, i64 } { ptr @.str.7187, i64 5, i64 0 }, %S.json.Json %t228) - store %S.json.Json %t228, ptr %a229 - call void @finch.drop.S_json_Json(ptr %a229) - %t230 = load %S.json.Json, ptr %a226 - call void @finch.json.Json.push(ptr %a211, %S.json.Json %t230) - call void @finch.drop.S_json_Json(ptr %a226) - br label %endif11184 -endif11184: - br label %each.step11180 -each.step11180: - %t231 = load i64, ptr %a213 - %t232 = add i64 %t231, 1 - store i64 %t232, ptr %a213 - br label %each.cond11178 -each.end11181: - %t233 = load %S.json.Json, ptr %a211 - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7188, i64 10, i64 0 }, %S.json.Json %t233) - %t234 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t234, ptr %a235 - %t236 = load %S.json.Json, ptr %a205 - call void @finch.json.Json.push(ptr %a235, %S.json.Json %t236) - %t237 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t237, ptr %a238 - %t239 = load %S.json.Json, ptr %a235 - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7189, i64 10, i64 0 }, %S.json.Json %t239) - %t240 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7190, i64 15, i64 0 }, %S.json.Json %t240) - store %S.json.Json %t240, ptr %a241 - call void @finch.drop.S_json_Json(ptr %a241) - %t242 = load i64, ptr %a26 - %t243 = call %S.json.Json @finch.lsp.num(i64 %t242) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7191, i64 15, i64 0 }, %S.json.Json %t243) - store %S.json.Json %t243, ptr %a244 - call void @finch.drop.S_json_Json(ptr %a244) - %t245 = load %S.json.Json, ptr %a238 - call void @finch.drop.S_json_Json(ptr %a235) - call void @finch.drop.S_json_Json(ptr %a211) - call void @finch.drop.S_json_Json(ptr %a205) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t245 -endif11177: - br label %each.step11169 -each.step11169: - %t246 = load i64, ptr %a180 - %t247 = add i64 %t246, 1 - store i64 %t247, ptr %a180 - br label %each.cond11167 -each.end11170: - %t248 = call { ptr, i64, i64 } @finch.docs.builtins() - %t249 = load { ptr, i64, i64 }, ptr %a97 - %t250 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t248, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch.drop.arr_S_docs_Doc(ptr %a251) - store %S.docs.Doc %t250, ptr %a252 - %t253 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 0 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - %t255 = load i64, ptr %t254 - %t256 = icmp sgt i64 %t255, 0 - br i1 %t256, label %then11185, label %endif11187 -then11185: - %t257 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t257, ptr %a258 - %t259 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %t259 - %t261 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t260) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7192, i64 5, i64 0 }, %S.json.Json %t261) - store %S.json.Json %t261, ptr %a262 - call void @finch.drop.S_json_Json(ptr %a262) - %t263 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 2 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t264) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7193, i64 13, i64 0 }, %S.json.Json %t265) - store %S.json.Json %t265, ptr %a266 - call void @finch.drop.S_json_Json(ptr %a266) - %t267 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t267, ptr %a268 - %t269 = load %S.json.Json, ptr %a258 - call void @finch.json.Json.push(ptr %a268, %S.json.Json %t269) - %t270 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t270, ptr %a271 - %t272 = load %S.json.Json, ptr %a268 - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7194, i64 10, i64 0 }, %S.json.Json %t272) - %t273 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7195, i64 15, i64 0 }, %S.json.Json %t273) - store %S.json.Json %t273, ptr %a274 - call void @finch.drop.S_json_Json(ptr %a274) - %t275 = load i64, ptr %a26 - %t276 = call %S.json.Json @finch.lsp.num(i64 %t275) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7196, i64 15, i64 0 }, %S.json.Json %t276) - store %S.json.Json %t276, ptr %a277 - call void @finch.drop.S_json_Json(ptr %a277) - %t278 = load %S.json.Json, ptr %a271 - call void @finch.drop.S_json_Json(ptr %a268) - call void @finch.drop.S_json_Json(ptr %a258) - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t278 -endif11187: - %t279 = call %S.json.Json @finch.json.new_null() - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t279 -} - -define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { -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.7197, 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.7198, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7199, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7200, 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.7201, i64 3, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7202, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t7 -} - -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 - %a18 = alloca %S.json.Json, align 16 - %a20 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a24 = alloca %S.json.Json, align 16 - %a26 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - %a34 = alloca %S.json.Json, align 16 - %a36 = alloca %S.json.Json, align 16 - %a38 = alloca %S.json.Json, align 16 - %a40 = alloca %S.json.Json, align 16 - %a44 = alloca %S.json.Json, align 16 - %a47 = alloca %S.json.Json, align 16 - %a49 = alloca %S.json.Json, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.json.Json, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.json.Json, align 16 - %a106 = alloca %S.json.Json, align 16 - %a108 = alloca %S.json.Json, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca i32, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca %S.json.Json, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca %S.json.Json, align 16 - %a184 = alloca %S.json.Json, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca %S.json.Json, align 16 - %a212 = alloca %S.json.Json, align 16 - %a215 = alloca i64, align 16 - %a217 = alloca %S.json.Json, align 16 - %a219 = alloca %S.json.Json, align 16 - %a222 = alloca i64, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.json.Json, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.lsp.Analysis, align 16 - %a245 = alloca %S.lsp.Analysis, align 16 - %a247 = alloca %S.lsp.Analysis, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca %S.json.Json, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.json.Json, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.json.Json, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.json.Json, align 16 - %a322 = alloca %S.json.Json, align 16 - %a328 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7203, 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.7204, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store { ptr, i64, i64 } %t4, ptr %a5 - %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7205, 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.7206, 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.7207, 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.arm11189, label %match.next11190 -match.arm11189: - %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.7208, i64 16, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - %t19 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7209, i64 13, i64 0 }, %S.json.Json %t19) - store %S.json.Json %t19, ptr %a20 - call void @finch.drop.S_json_Json(ptr %a20) - %t21 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7210, i64 18, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7211, i64 22, i64 0 }, %S.json.Json %t23) - store %S.json.Json %t23, ptr %a24 - call void @finch.drop.S_json_Json(ptr %a24) - %t25 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t25, ptr %a26 - %t27 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t27, ptr %a28 - %t29 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7212, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a28, %S.json.Json %t29) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - %t31 = load %S.json.Json, ptr %a28 - call void @finch.json.Json.set(ptr %a26, { ptr, i64, i64 } { ptr @.str.7213, i64 17, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a26 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7214, i64 18, i64 0 }, %S.json.Json %t32) - %t33 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t33, ptr %a34 - %t35 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t35, ptr %a36 - %t37 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7215, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t37) - store %S.json.Json %t37, ptr %a38 - call void @finch.drop.S_json_Json(ptr %a38) - %t39 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7216, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t39) - store %S.json.Json %t39, ptr %a40 - call void @finch.drop.S_json_Json(ptr %a40) - %t41 = load %S.json.Json, ptr %a36 - call void @finch.json.Json.set(ptr %a34, { ptr, i64, i64 } { ptr @.str.7217, i64 17, i64 0 }, %S.json.Json %t41) - %t42 = load %S.json.Json, ptr %a34 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7218, i64 21, i64 0 }, %S.json.Json %t42) - %t43 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t43, ptr %a44 - %t45 = load %S.json.Json, ptr %a16 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7219, i64 12, i64 0 }, %S.json.Json %t45) - %t46 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t46, ptr %a47 - %t48 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7221, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a47, { ptr, i64, i64 } { ptr @.str.7220, i64 4, i64 0 }, %S.json.Json %t48) - store %S.json.Json %t48, ptr %a49 - call void @finch.drop.S_json_Json(ptr %a49) - %t50 = load %S.json.Json, ptr %a47 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7222, i64 10, i64 0 }, %S.json.Json %t50) - %t51 = load %S.json.Json, ptr %a9 - %t52 = load %S.json.Json, ptr %a44 - call void @finch.lsp.reply(%S.json.Json %t51, %S.json.Json %t52) - call void @finch.drop.S_json_Json(ptr %a47) - call void @finch.drop.S_json_Json(ptr %a44) - call void @finch.drop.S_json_Json(ptr %a36) - call void @finch.drop.S_json_Json(ptr %a34) - call void @finch.drop.S_json_Json(ptr %a28) - call void @finch.drop.S_json_Json(ptr %a26) - call void @finch.drop.S_json_Json(ptr %a16) - br label %match.end11188 -match.next11190: - store { ptr, i64, i64 } %t10, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.7223, i64 8, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %match.arm11191, label %match.next11192 -match.arm11191: - %t57 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 - store i1 true, ptr %t57 - %t58 = load %S.json.Json, ptr %a9 - %t59 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t58, %S.json.Json %t59) - store %S.json.Json %t59, ptr %a60 - call void @finch.drop.S_json_Json(ptr %a60) - br label %match.end11188 -match.next11192: - store { ptr, i64, i64 } %t10, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.7224, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %match.arm11193, label %match.next11194 -match.arm11193: - %t65 = trunc i64 0 to i32 - %t66 = call i32 @fflush(ptr null) - call void @exit(i32 %t65) - br label %match.end11188 -match.next11194: - store { ptr, i64, i64 } %t10, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.7225, i64 20, i64 0 }, ptr %a68 - %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) - %t70 = icmp ne i32 %t69, 0 - br i1 %t70, label %match.arm11195, label %match.next11196 -match.arm11195: - %t71 = load %S.json.Json, ptr %a7 - %t72 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t71) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load %S.json.Json, ptr %a7 - %t75 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t74) - %t76 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a78 - store i32 0, ptr %a79 - %t80 = call i64 @finch_map_slot(ptr %t76, ptr %a78, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a79) - %t81 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t76, i32 0, i32 0 - %t82 = load ptr, ptr %t81 - %t83 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i64 %t80 - %t84 = load i32, ptr %a79 - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %map.new11197, label %map.have11198 -map.new11197: - %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 1 - call void @finch_str_copy(ptr %t86, ptr %a78) - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t87 - br label %map.have11198 -map.have11198: - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t75, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t91) - call void @finch_str_drop(ptr %a73) - br label %match.end11188 -match.next11196: - store { ptr, i64, i64 } %t10, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.7226, i64 22, i64 0 }, ptr %a93 - %t94 = call i32 @finch_str_eq(ptr %a92, ptr %a93) - %t95 = icmp ne i32 %t94, 0 - br i1 %t95, label %match.arm11199, label %match.next11200 -match.arm11199: - %t96 = load %S.json.Json, ptr %a7 - %t97 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t96) - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7227, i64 14, i64 0 }) - store %S.json.Json %t99, ptr %a100 - %t101 = call i64 @finch.json.Json.len(ptr %a100) - %t102 = icmp sgt i64 %t101, 0 - br i1 %t102, label %then11201, label %endif11203 -then11201: - %t103 = call i64 @finch.json.Json.len(ptr %a100) - %t104 = sub i64 %t103, 1 - %t105 = call %S.json.Json @finch.json.Json.at(ptr %a100, i64 %t104) - store %S.json.Json %t105, ptr %a106 - %t107 = call %S.json.Json @finch.json.Json.get(ptr %a106, { ptr, i64, i64 } { ptr @.str.7228, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a106) - store %S.json.Json %t107, ptr %a108 - %t109 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a108, { ptr, i64, i64 } { ptr @.str.7229, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a108) - %t110 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t111 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t111, ptr %a112 - store i32 0, ptr %a113 - %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a113) - %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 - %t116 = load ptr, ptr %t115 - %t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t116, i64 %t114 - %t118 = load i32, ptr %a113 - %t119 = icmp ne i32 %t118, 0 - br i1 %t119, label %map.new11204, label %map.have11205 -map.new11204: - %t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 1 - call void @finch_str_copy(ptr %t120, ptr %a112) - %t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t121 - br label %map.have11205 -map.have11205: - %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - %t123 = load { ptr, i64, i64 }, ptr %t122 - store { ptr, i64, i64 } %t109, ptr %t122 - store { ptr, i64, i64 } %t123, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) - br label %endif11203 -endif11203: - call void @finch.drop.S_json_Json(ptr %a100) - call void @finch_str_drop(ptr %a98) - br label %match.end11188 -match.next11200: - store { ptr, i64, i64 } %t10, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.7230, i64 20, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br i1 %t129, label %match.arm11206, label %match.next11207 -match.arm11206: - %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 %then11208, label %endif11210 -then11208: - %t138 = load { ptr, i64, i64 }, ptr %a132 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t138) - br label %endif11210 -endif11210: - call void @finch_str_drop(ptr %a132) - br label %match.end11188 -match.next11207: - store { ptr, i64, i64 } %t10, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.7231, i64 21, i64 0 }, ptr %a140 - %t141 = call i32 @finch_str_eq(ptr %a139, ptr %a140) - %t142 = icmp ne i32 %t141, 0 - br i1 %t142, label %match.arm11211, label %match.next11212 -match.arm11211: - %t143 = load %S.json.Json, ptr %a7 - %t144 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t143) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t147 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t147, ptr %a148 - %t149 = call i64 @finch_map_find(ptr %t146, ptr %a148, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t150 = icmp sge i64 %t149, 0 - br i1 %t150, label %remove.hit11213, label %remove.end11214 -remove.hit11213: - %t151 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t146, i32 0, i32 0 - %t152 = load ptr, ptr %t151 - %t153 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t152, i64 %t149 - %t154 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 1 - call void @finch_str_drop(ptr %t154) - %t155 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 2 - call void @finch_str_drop(ptr %t155) - call void @finch_map_remove_at(ptr %t146, i64 %t149, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) - br label %remove.end11214 -remove.end11214: - %t156 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t157 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t157, ptr %a158 - %t159 = call i64 @finch_map_find(ptr %t156, ptr %a158, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t160 = icmp sge i64 %t159, 0 - br i1 %t160, label %remove.hit11215, label %remove.end11216 -remove.hit11215: - %t161 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t156, i32 0, i32 0 - %t162 = load ptr, ptr %t161 - %t163 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t162, i64 %t159 - %t164 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 1 - call void @finch_str_drop(ptr %t164) - %t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t165) - call void @finch_map_remove_at(ptr %t156, i64 %t159, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11216 -remove.end11216: - %t166 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t167 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = call i64 @finch_map_find(ptr %t166, ptr %a168, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t170 = icmp sge i64 %t169, 0 - br i1 %t170, label %remove.hit11217, label %remove.end11218 -remove.hit11217: - %t171 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t166, i32 0, i32 0 - %t172 = load ptr, ptr %t171 - %t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t172, i64 %t169 - %t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 1 - call void @finch_str_drop(ptr %t174) - %t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t175) - call void @finch_map_remove_at(ptr %t166, i64 %t169, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11218 -remove.end11218: - %t176 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t176, ptr %a177 - %t178 = load { ptr, i64, i64 }, ptr %a145 - %t179 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t178) - %t180 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7232, i64 3, i64 0 }, %S.json.Json %t180) - store %S.json.Json %t180, ptr %a182 - call void @finch.drop.S_json_Json(ptr %a182) - %t183 = call %S.json.Json @finch.json.new_list() - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7233, i64 11, i64 0 }, %S.json.Json %t183) - store %S.json.Json %t183, ptr %a184 - call void @finch.drop.S_json_Json(ptr %a184) - %t185 = load %S.json.Json, ptr %a177 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7234, i64 31, i64 0 }, %S.json.Json %t185) - call void @finch.drop.S_json_Json(ptr %a177) - call void @finch_str_drop(ptr %a145) - br label %match.end11188 -match.next11212: - store { ptr, i64, i64 } %t10, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.7235, i64 18, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br i1 %t189, label %match.arm11219, label %match.or11221 -match.or11221: - store { ptr, i64, i64 } %t10, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.7236, i64 23, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br i1 %t193, label %match.arm11219, label %match.or11222 -match.or11222: - store { ptr, i64, i64 } %t10, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.7237, i64 23, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %match.arm11219, label %match.or11223 -match.or11223: - store { ptr, i64, i64 } %t10, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.7238, i64 27, i64 0 }, ptr %a199 - %t200 = call i32 @finch_str_eq(ptr %a198, ptr %a199) - %t201 = icmp ne i32 %t200, 0 - br i1 %t201, label %match.arm11219, label %match.or11224 -match.or11224: - store { ptr, i64, i64 } %t10, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.7239, i64 26, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %match.arm11219, label %match.next11220 -match.arm11219: - %t206 = load %S.json.Json, ptr %a7 - %t207 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t206) - store { ptr, i64, i64 } %t207, ptr %a208 - %t209 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7240, i64 8, i64 0 }) - store %S.json.Json %t209, ptr %a210 - %t211 = call %S.json.Json @finch.json.Json.get(ptr %a210, { ptr, i64, i64 } { ptr @.str.7241, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a210) - store %S.json.Json %t211, ptr %a212 - %t213 = call i64 @finch.json.Json.int_or(ptr %a212, i64 0) - call void @finch.drop.S_json_Json(ptr %a212) - %t214 = add i64 %t213, 1 - store i64 %t214, ptr %a215 - %t216 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7242, i64 8, i64 0 }) - store %S.json.Json %t216, ptr %a217 - %t218 = call %S.json.Json @finch.json.Json.get(ptr %a217, { ptr, i64, i64 } { ptr @.str.7243, i64 9, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a217) - store %S.json.Json %t218, ptr %a219 - %t220 = call i64 @finch.json.Json.int_or(ptr %a219, i64 0) - call void @finch.drop.S_json_Json(ptr %a219) - %t221 = add i64 %t220, 1 - store i64 %t221, ptr %a222 - %t223 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t224 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t224, ptr %a225 - %t226 = call i64 @finch_map_find(ptr %t223, ptr %a225, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t227 = icmp sge i64 %t226, 0 - %t228 = xor i1 %t227, true - br i1 %t228, label %then11225, label %endif11227 -then11225: - %t229 = load %S.json.Json, ptr %a9 - %t230 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t229, %S.json.Json %t230) - store %S.json.Json %t230, ptr %a231 - call void @finch.drop.S_json_Json(ptr %a231) - call void @finch_str_drop(ptr %a208) - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -endif11227: - %t232 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t233 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = call i64 @finch_map_find(ptr %t232, ptr %a234, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t236 = icmp slt i64 %t235, 0 - br i1 %t236, label %map.missing11228, label %map.found11229 -map.missing11228: - store { ptr, i64, i64 } zeroinitializer, ptr %a237 - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_buf_str(ptr %a237, ptr %a238, i32 1) - call void @finch_map_missing(ptr @.str.7244, i64 842, ptr %a237) - unreachable -map.found11229: - %t239 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t232, i32 0, i32 0 - %t240 = load ptr, ptr %t239 - %t241 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t240, i64 %t235 - %t242 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t241, i32 0, i32 2 - %t243 = load %S.lsp.Analysis, ptr %t242 - store %S.lsp.Analysis %t243, ptr %a244 - call void @finch.copy.S_lsp_Analysis(ptr %a245, ptr %a244) - %t246 = load %S.lsp.Analysis, ptr %a245 - store %S.lsp.Analysis %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.7245, i64 0, i64 0 }, ptr %a248 - %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t250 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = call i64 @finch_map_find(ptr %t249, ptr %a251, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t253 = icmp sge i64 %t252, 0 - br i1 %t253, label %then11230, label %endif11232 -then11230: - %t254 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t255 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t255, ptr %a256 - %t257 = call i64 @finch_map_find(ptr %t254, ptr %a256, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t258 = icmp slt i64 %t257, 0 - br i1 %t258, label %map.missing11233, label %map.found11234 -map.missing11233: - store { ptr, i64, i64 } zeroinitializer, ptr %a259 - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_buf_str(ptr %a259, ptr %a260, i32 1) - call void @finch_map_missing(ptr @.str.7246, i64 845, ptr %a259) - unreachable -map.found11234: - %t261 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t254, i32 0, i32 0 - %t262 = load ptr, ptr %t261 - %t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t262, i64 %t257 - %t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t263, i32 0, i32 2 - %t265 = load { ptr, i64, i64 }, ptr %t264 - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_copy(ptr %a267, ptr %a266) - %t268 = load { ptr, i64, i64 }, ptr %a267 - %t269 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t268, ptr %a248 - store { ptr, i64, i64 } %t269, ptr %a270 - call void @finch_str_drop(ptr %a270) - br label %endif11232 -endif11232: - %t271 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t271, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.7247, i64 18, i64 0 }, ptr %a273 - %t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273) - %t275 = icmp ne i32 %t274, 0 - br i1 %t275, label %match.arm11236, label %match.next11237 -match.arm11236: - %t276 = load %S.json.Json, ptr %a9 - %t277 = load %S.lsp.Analysis, ptr %a247 - %t278 = load { ptr, i64, i64 }, ptr %a208 - %t279 = load i64, ptr %a215 - %t280 = load i64, ptr %a222 - %t281 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t277, { ptr, i64, i64 } %t278, i64 %t279, i64 %t280) - call void @finch.lsp.reply(%S.json.Json %t276, %S.json.Json %t281) - store %S.json.Json %t281, ptr %a282 - call void @finch.drop.S_json_Json(ptr %a282) - br label %match.end11235 -match.next11237: - store { ptr, i64, i64 } %t271, ptr %a283 - store { ptr, i64, i64 } { ptr @.str.7248, i64 23, i64 0 }, ptr %a284 - %t285 = call i32 @finch_str_eq(ptr %a283, ptr %a284) - %t286 = icmp ne i32 %t285, 0 - br i1 %t286, label %match.arm11238, label %match.next11239 -match.arm11238: - %t287 = load %S.json.Json, ptr %a9 - %t288 = load %S.lsp.Analysis, ptr %a247 - %t289 = load { ptr, i64, i64 }, ptr %a208 - %t290 = load i64, ptr %a215 - %t291 = load i64, ptr %a222 - %t292 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t288, { ptr, i64, i64 } %t289, i64 %t290, i64 %t291) - call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t292) - store %S.json.Json %t292, ptr %a293 - call void @finch.drop.S_json_Json(ptr %a293) - br label %match.end11235 -match.next11239: - store { ptr, i64, i64 } %t271, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.7249, i64 23, i64 0 }, ptr %a295 - %t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295) - %t297 = icmp ne i32 %t296, 0 - br i1 %t297, label %match.arm11240, label %match.next11241 -match.arm11240: - %t298 = load %S.json.Json, ptr %a9 - %t299 = load %S.lsp.Analysis, ptr %a247 - %t300 = load { ptr, i64, i64 }, ptr %a248 - %t301 = load { ptr, i64, i64 }, ptr %a208 - %t302 = load i64, ptr %a215 - %t303 = load i64, ptr %a222 - %t304 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t299, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t301, i64 %t302, i64 %t303) - call void @finch.lsp.reply(%S.json.Json %t298, %S.json.Json %t304) - store %S.json.Json %t304, ptr %a305 - call void @finch.drop.S_json_Json(ptr %a305) - br label %match.end11235 -match.next11241: - store { ptr, i64, i64 } %t271, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.7250, i64 27, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br i1 %t309, label %match.arm11242, label %match.next11243 -match.arm11242: - %t310 = load %S.json.Json, ptr %a9 - %t311 = load %S.lsp.Analysis, ptr %a247 - %t312 = load { ptr, i64, i64 }, ptr %a208 - %t313 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t311, { ptr, i64, i64 } %t312) - call void @finch.lsp.reply(%S.json.Json %t310, %S.json.Json %t313) - store %S.json.Json %t313, ptr %a314 - call void @finch.drop.S_json_Json(ptr %a314) - br label %match.end11235 -match.next11243: - br label %match.arm11244 -match.arm11244: - %t315 = load %S.json.Json, ptr %a9 - %t316 = load %S.lsp.Analysis, ptr %a247 - %t317 = load { ptr, i64, i64 }, ptr %a248 - %t318 = load { ptr, i64, i64 }, ptr %a208 - %t319 = load i64, ptr %a215 - %t320 = load i64, ptr %a222 - %t321 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t316, { ptr, i64, i64 } %t317, { ptr, i64, i64 } %t318, i64 %t319, i64 %t320) - call void @finch.lsp.reply(%S.json.Json %t315, %S.json.Json %t321) - store %S.json.Json %t321, ptr %a322 - call void @finch.drop.S_json_Json(ptr %a322) - br label %match.end11235 -match.end11235: - call void @finch_str_drop(ptr %a248) - call void @finch.drop.S_lsp_Analysis(ptr %a247) - call void @finch_str_drop(ptr %a208) - br label %match.end11188 -match.next11220: - br label %match.arm11246 -match.arm11246: - %t323 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 - %t324 = load i32, ptr %t323 - %t325 = icmp ne i32 %t324, 0 - br i1 %t325, label %then11248, label %endif11250 -then11248: - %t326 = load %S.json.Json, ptr %a9 - %t327 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t326, %S.json.Json %t327) - store %S.json.Json %t327, ptr %a328 - call void @finch.drop.S_json_Json(ptr %a328) - br label %endif11250 -endif11250: - br label %match.end11188 -match.end11188: - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.map_str_S_lsp_Analysis(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond11256 -n.cond11256: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body11257, label %n.end11258 -n.body11257: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live11259, label %entry.next11260 -entry.live11259: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t13) - br label %entry.next11260 -entry.next11260: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond11256 -n.end11258: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Server(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -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 - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lsp.Server, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - call void @finch.host.binaryStdio() - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_copy(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - %t6 = insertvalue %S.lsp.Server zeroinitializer, { ptr, i64, i64 } %t5, 0 - %t7 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.7251, i64 11, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - %t22 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t21, 1 - store %S.lsp.Server %t22, ptr %a23 - br label %while.cond11251 -while.cond11251: - br label %while.body11252 -while.body11252: - %t24 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() - %t25 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 0 - %t26 = xor i1 %t25, true - %t27 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 2 - %t28 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 1 - br i1 %t26, label %or.failed11254, label %or.ok11255 -or.failed11254: - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %while.end11253 -or.ok11255: - store %S.json.Json %t28, ptr %a30 - %t31 = load %S.json.Json, ptr %a30 - call void @finch.lsp.Server.answer(ptr %a23, %S.json.Json %t31) - call void @finch.drop.S_json_Json(ptr %a30) - br label %while.cond11251 -while.end11253: - %t32 = getelementptr inbounds %S.lsp.Server, ptr %a23, i32 0, i32 1 - %t33 = load { ptr, i64, i64 }, ptr %t32 - call void @finch.host.removeTree({ ptr, i64, i64 } %t33) - call void @finch.drop.S_lsp_Server(ptr %a23) - ret i64 0 -} - -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.arm11262, label %match.or11264 -match.or11264: - %t4 = icmp eq i32 %t2, 5 - br i1 %t4, label %match.arm11262, label %match.next11263 -match.arm11262: - %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.from11265 -match.from11265: - br label %match.end11261 -match.next11263: - %t8 = icmp eq i32 %t2, 3 - br i1 %t8, label %match.arm11266, label %match.next11267 -match.arm11266: - %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.from11268 -match.from11268: - br label %match.end11261 -match.next11267: - br label %match.arm11269 -match.arm11269: - br label %match.from11271 -match.from11271: - br label %match.end11261 -match.end11261: - %t12 = phi i64 [ %t7, %match.from11265 ], [ %t11, %match.from11268 ], [ 0, %match.from11271 ] - 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.from11272 -logic.from11272: - br i1 %t4, label %logic.rhs11273, label %logic.end11274 -logic.rhs11273: - %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.cond11275 -find.cond11275: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body11276, label %find.end11279 -find.body11276: - %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.hit11277, label %find.next11278 -find.hit11277: - store i64 %t12, ptr %a8 - br label %find.end11279 -find.next11278: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond11275 -find.end11279: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - br label %logic.rend11280 -logic.rend11280: - br label %logic.end11274 -logic.end11274: - %t23 = phi i1 [ false, %logic.from11272 ], [ %t22, %logic.rend11280 ] - ret i1 %t23 -} - -define internal void @finch.copy.arr_S_json_Json(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond11294 -n.cond11294: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body11295, label %n.end11296 -n.body11295: - %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.cond11294 -n.end11296: - ret void -} - -define internal void @finch.copy.S_json_Json(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.json.Json, ptr %src - store %S.json.Json %t1, ptr %dst - %t2 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 3 - %t3 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 3 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_json_Json(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 5 - %t7 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - ret void -} - -define internal %S.json.Json @finch.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 %then11281, label %endif11283 -then11281: - %t5 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t5 -endif11283: - %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.cond11284 -find.cond11284: - %t13 = load i64, ptr %a12 - %t14 = icmp slt i64 %t13, %t10 - br i1 %t14, label %find.body11285, label %find.end11288 -find.body11285: - %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.hit11286, label %find.next11287 -find.hit11286: - store i64 %t13, ptr %a9 - br label %find.end11288 -find.next11287: - %t21 = add i64 %t13, 1 - store i64 %t21, ptr %a12 - br label %find.cond11284 -find.end11288: - %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 %then11289, label %endif11291 -then11289: - %t26 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t26 -endif11291: - %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 %range11292, label %inrange11293 -range11292: - call void @finch_panic_index(ptr @.str.7252, i64 84, i64 %t28, i64 %t30) - unreachable -inrange11293: - %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.from11297 -logic.from11297: - br i1 %t4, label %logic.end11299, label %logic.rhs11298 -logic.rhs11298: - %t5 = load i64, ptr %a1 - %t6 = icmp slt i64 %t5, 0 - br label %logic.rend11300 -logic.rend11300: - br label %logic.end11299 -logic.end11299: - %t7 = phi i1 [ true, %logic.from11297 ], [ %t6, %logic.rend11300 ] - br label %logic.from11301 -logic.from11301: - br i1 %t7, label %logic.end11303, label %logic.rhs11302 -logic.rhs11302: - %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.rend11304 -logic.rend11304: - br label %logic.end11303 -logic.end11303: - %t13 = phi i1 [ true, %logic.from11301 ], [ %t12, %logic.rend11304 ] - br i1 %t13, label %then11305, label %endif11307 -then11305: - %t14 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t14 -endif11307: - %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 %range11308, label %inrange11309 -range11308: - call void @finch_panic_index(ptr @.str.7253, i64 92, i64 %t16, i64 %t18) - unreachable -inrange11309: - %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 %then11310, label %endif11312 -then11310: - %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 -endif11312: - %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 %then11313, label %endif11315 -then11313: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 - %t6 = load double, ptr %t5 - ret double %t6 -endif11315: - %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 %then11316, label %endif11318 -then11316: - %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 -endif11318: - %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 %then11319, label %endif11321 -then11319: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 - %t6 = load i1, ptr %t5 - ret i1 %t6 -endif11321: - %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 - %a35 = alloca %S.json.Json, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.json.Json, align 16 - %a50 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %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.cond11322 -find.cond11322: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t7 - br i1 %t11, label %find.body11323, label %find.end11326 -find.body11323: - %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.hit11324, label %find.next11325 -find.hit11324: - store i64 %t10, ptr %a6 - br label %find.end11326 -find.next11325: - %t18 = add i64 %t10, 1 - store i64 %t18, ptr %a9 - br label %find.cond11322 -find.end11326: - %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 %then11327, label %endif11329 -then11327: - %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 %range11330, label %inrange11331 -range11330: - call void @finch_panic_index(ptr @.str.7254, i64 140, i64 %t25, i64 %t27) - unreachable -inrange11331: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds %S.json.Json, ptr %t29, i64 %t25 - store %S.json.Json %t23, ptr %a31 - call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) - %t33 = load %S.json.Json, ptr %a32 - %t34 = load %S.json.Json, ptr %t30 - store %S.json.Json %t33, ptr %t30 - store %S.json.Json %t34, ptr %a35 - call void @finch.drop.S_json_Json(ptr %a35) - ret void -endif11329: - %t36 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_copy(ptr %a40, ptr %a39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - %t42 = load i64, ptr %t37 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t36 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } %t41, ptr %t45 - store i64 %t43, ptr %t37 - %t46 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load %S.json.Json, ptr %a2 - store %S.json.Json %t48, ptr %a49 - call void @finch.copy.S_json_Json(ptr %a50, ptr %a49) - %t51 = load %S.json.Json, ptr %a50 - %t52 = load i64, ptr %t47 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t46, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t46 - %t55 = getelementptr inbounds %S.json.Json, ptr %t54, i64 %t52 - store %S.json.Json %t51, ptr %t55 - store i64 %t53, ptr %t47 - ret void -} - -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.7255, 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.cond11332 -each.cond11332: - %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.body11333, label %each.end11335 -each.body11333: - %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 %then11336, label %else11337 -then11336: - %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.7256, i64 2, i64 0 }, ptr %t27 - store i64 %t25, ptr %t23 - br label %endif11338 -else11337: - %t28 = load i8, ptr %a17 - %t29 = icmp eq i8 %t28, 92 - br i1 %t29, label %then11339, label %else11340 -then11339: - %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.7257, i64 2, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif11341 -else11340: - %t35 = load i8, ptr %a17 - %t36 = icmp eq i8 %t35, 10 - br i1 %t36, label %then11342, label %else11343 -then11342: - %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.7258, i64 2, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - br label %endif11344 -else11343: - %t42 = load i8, ptr %a17 - %t43 = icmp eq i8 %t42, 13 - br i1 %t43, label %then11345, label %else11346 -then11345: - %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.7259, i64 2, i64 0 }, ptr %t48 - store i64 %t46, ptr %t44 - br label %endif11347 -else11346: - %t49 = load i8, ptr %a17 - %t50 = icmp eq i8 %t49, 9 - br i1 %t50, label %then11348, label %else11349 -then11348: - %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.7260, i64 2, i64 0 }, ptr %t55 - store i64 %t53, ptr %t51 - br label %endif11350 -else11349: - %t56 = load i64, ptr %a20 - %t57 = icmp slt i64 %t56, 32 - br i1 %t57, label %then11351, label %else11352 -then11351: - %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.7261, i64 4, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a20 - %t68 = srem i64 %t67, 16 - %t69 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t68) - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - %t76 = load i64, ptr %t58 - %t77 = add i64 %t76, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t77, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t78 = load ptr, ptr %a8 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 %t76 - store { ptr, i64, i64 } %t75, ptr %t79 - store i64 %t77, ptr %t58 - br label %endif11353 -else11352: - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t81 = load i8, ptr %a17 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load i64, ptr %t80 - %t85 = add i64 %t84, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t85, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t86 = load ptr, ptr %a8 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 %t84 - store { ptr, i64, i64 } %t83, ptr %t87 - store i64 %t85, ptr %t80 - br label %endif11353 -endif11353: - br label %endif11350 -endif11350: - br label %endif11347 -endif11347: - br label %endif11344 -endif11344: - br label %endif11341 -endif11341: - br label %endif11338 -endif11338: - br label %each.step11334 -each.step11334: - %t88 = load i64, ptr %a9 - %t89 = add i64 %t88, 1 - store i64 %t89, ptr %a9 - br label %each.cond11332 -each.end11335: - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t91 = load i64, ptr %t90 - %t92 = add i64 %t91, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t93 = load ptr, ptr %a8 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 - store { ptr, i64, i64 } { ptr @.str.7262, i64 1, i64 0 }, ptr %t94 - store i64 %t92, ptr %t90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7263, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a8, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - call void @finch.drop.arr_str(ptr %a8) - ret { ptr, i64, i64 } %t98 -} - -define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { -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.7264, 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 %range11354, label %inrange11355 -range11354: - call void @finch_panic_index(ptr @.str.7265, i64 175, i64 %t3, i64 %t5) - unreachable -inrange11355: - %t7 = extractvalue { ptr, i64, i64 } %t4, 0 - %t8 = getelementptr inbounds i8, ptr %t7, i64 %t3 - %t9 = load i8, ptr %t8 - call void @finch_str_from_char(ptr %a10, i8 signext %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t11 -} - -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.from11356 -logic.from11356: - br i1 %t6, label %logic.rhs11357, label %logic.end11358 -logic.rhs11357: - %t7 = load double, ptr %a1 - %t8 = fneg double 1000000000000000.0 - %t9 = fcmp ogt double %t7, %t8 - br label %logic.rend11359 -logic.rend11359: - br label %logic.end11358 -logic.end11358: - %t10 = phi i1 [ false, %logic.from11356 ], [ %t9, %logic.rend11359 ] - br label %logic.from11360 -logic.from11360: - br i1 %t10, label %logic.rhs11361, label %logic.end11362 -logic.rhs11361: - %t11 = load double, ptr %a1 - %t12 = fcmp olt double %t11, 1000000000000000.0 - br label %logic.rend11363 -logic.rend11363: - br label %logic.end11362 -logic.end11362: - %t13 = phi i1 [ false, %logic.from11360 ], [ %t12, %logic.rend11363 ] - br i1 %t13, label %then11364, label %endif11366 -then11364: - %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 -endif11366: - %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 - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca i64, align 16 - %a114 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a203 = alloca i64, align 16 - %a204 = alloca %S.json.Json, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store ptr %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7266, i64 0, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7267, i64 0, i64 0 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.7268, i64 1, i64 0 }, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.7269, 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 %then11367, label %endif11369 -then11367: - %t12 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7270, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a3 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.7271, i64 2, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif11369 -endif11369: - %t24 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 - %t25 = load i32, ptr %t24 - %t26 = icmp eq i32 %t25, 0 - br i1 %t26, label %match.arm11371, label %match.next11372 -match.arm11371: - %t27 = load ptr, ptr %a4 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic11373, label %ok11374 -panic11373: - call void @finch_panic(ptr @.str.7272, i64 200, ptr @.str.7273) - unreachable -ok11374: - %t29 = getelementptr inbounds %S.json.Writer, ptr %t27, i32 0, i32 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 - %t31 = load i64, ptr %t30 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t29, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t29 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 - store { ptr, i64, i64 } { ptr @.str.7274, i64 4, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %match.end11370 -match.next11372: - %t35 = icmp eq i32 %t25, 1 - br i1 %t35, label %match.arm11375, label %match.next11376 -match.arm11375: - %t36 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 - %t37 = load i1, ptr %t36 - br i1 %t37, label %then11377, label %else11378 -then11377: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic11380, label %ok11381 -panic11380: - call void @finch_panic(ptr @.str.7275, i64 203, ptr @.str.7276) - unreachable -ok11381: - %t40 = getelementptr inbounds %S.json.Writer, ptr %t38, i32 0, i32 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t40 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } { ptr @.str.7277, i64 4, i64 0 }, ptr %t45 - store i64 %t43, ptr %t41 - br label %endif11379 -else11378: - %t46 = load ptr, ptr %a4 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic11382, label %ok11383 -panic11382: - call void @finch_panic(ptr @.str.7278, i64 205, ptr @.str.7279) - unreachable -ok11383: - %t48 = getelementptr inbounds %S.json.Writer, ptr %t46, i32 0, i32 0 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load i64, ptr %t49 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t51, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t48 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t50 - store { ptr, i64, i64 } { ptr @.str.7280, i64 5, i64 0 }, ptr %t53 - store i64 %t51, ptr %t49 - br label %endif11379 -endif11379: - br label %match.end11370 -match.next11376: - %t54 = icmp eq i32 %t25, 2 - br i1 %t54, label %match.arm11384, label %match.next11385 -match.arm11384: - %t55 = load ptr, ptr %a4 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic11386, label %ok11387 -panic11386: - call void @finch_panic(ptr @.str.7281, i64 208, ptr @.str.7282) - unreachable -ok11387: - %t57 = getelementptr inbounds %S.json.Writer, ptr %t55, i32 0, i32 0 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 - %t60 = load double, ptr %t59 - %t61 = call { ptr, i64, i64 } @finch.json.number_text(double %t60) - %t62 = load i64, ptr %t58 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t57 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t58 - br label %match.end11370 -match.next11385: - %t66 = icmp eq i32 %t25, 3 - br i1 %t66, label %match.arm11388, label %match.next11389 -match.arm11388: - %t67 = load ptr, ptr %a4 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic11390, label %ok11391 -panic11390: - call void @finch_panic(ptr @.str.7283, i64 209, ptr @.str.7284) - unreachable -ok11391: - %t69 = getelementptr inbounds %S.json.Writer, ptr %t67, i32 0, i32 0 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 - %t71 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 - %t72 = load { ptr, i64, i64 }, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t72) - %t74 = load i64, ptr %t70 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t69, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t69 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t70 - br label %match.end11370 -match.next11389: - %t78 = icmp eq i32 %t25, 4 - br i1 %t78, label %match.arm11392, label %match.next11393 -match.arm11392: - %t79 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load i64, ptr %t80 - %t82 = icmp eq i64 %t81, 0 - br i1 %t82, label %then11394, label %endif11396 -then11394: - %t83 = load ptr, ptr %a4 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic11397, label %ok11398 -panic11397: - call void @finch_panic(ptr @.str.7285, i64 212, ptr @.str.7286) - unreachable -ok11398: - %t85 = getelementptr inbounds %S.json.Writer, ptr %t83, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t85, i64 %t88, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t85 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i64 %t87 - store { ptr, i64, i64 } { ptr @.str.7287, i64 2, i64 0 }, ptr %t90 - store i64 %t88, ptr %t86 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11396: - %t91 = load ptr, ptr %a4 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic11399, label %ok11400 -panic11399: - call void @finch_panic(ptr @.str.7288, i64 215, ptr @.str.7289) - unreachable -ok11400: - %t93 = getelementptr inbounds %S.json.Writer, ptr %t91, i32 0, i32 0 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7290, i64 1, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - %t100 = load i64, ptr %t94 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %t93 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100 - store { ptr, i64, i64 } %t99, ptr %t103 - store i64 %t101, ptr %t94 - %t104 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a105 - br label %each.cond11401 -each.cond11401: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body11402, label %each.end11404 -each.body11402: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.json.Json, ptr %t110, i64 %t108 - %t112 = load %S.json.Json, ptr %t111 - store i64 %t108, ptr %a113 - store %S.json.Json %t112, ptr %a114 - %t115 = load i64, ptr %a113 - %t116 = icmp sgt i64 %t115, 0 - br i1 %t116, label %then11405, label %endif11407 -then11405: - %t117 = load ptr, ptr %a4 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic11408, label %ok11409 -panic11408: - call void @finch_panic(ptr @.str.7291, i64 218, ptr @.str.7292) - unreachable -ok11409: - %t119 = getelementptr inbounds %S.json.Writer, ptr %t117, i32 0, i32 0 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a7 - %t122 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t121, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a123 - %t127 = load i64, ptr %t120 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %t119, i64 %t128, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %t119 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t127 - store { ptr, i64, i64 } %t126, ptr %t130 - store i64 %t128, ptr %t120 - br label %endif11407 -endif11407: - %t131 = load ptr, ptr %a4 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic11410, label %ok11411 -panic11410: - call void @finch_panic(ptr @.str.7293, i64 220, ptr @.str.7294) - unreachable -ok11411: - %t133 = getelementptr inbounds %S.json.Writer, ptr %t131, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load i64, ptr %t134 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t133 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 - store { ptr, i64, i64 } %t138, ptr %t142 - store i64 %t140, ptr %t134 - %t143 = load %S.json.Json, ptr %a114 - %t144 = load { ptr, i64, i64 }, ptr %a2 - %t145 = load { ptr, i64, i64 }, ptr %a6 - %t146 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t143, { ptr, i64, i64 } %t144, { ptr, i64, i64 } %t145, ptr %t146) - br label %each.step11403 -each.step11403: - %t147 = load i64, ptr %a105 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a105 - br label %each.cond11401 -each.end11404: - %t149 = load ptr, ptr %a4 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic11412, label %ok11413 -panic11412: - call void @finch_panic(ptr @.str.7295, i64 223, ptr @.str.7296) - unreachable -ok11413: - %t151 = getelementptr inbounds %S.json.Writer, ptr %t149, i32 0, i32 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load { ptr, i64, i64 }, ptr %a5 - %t154 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t153, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.7297, i64 1, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load i64, ptr %t152 - %t165 = add i64 %t164, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t165, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t166 = load ptr, ptr %t151 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i64 %t164 - store { ptr, i64, i64 } %t163, ptr %t167 - store i64 %t165, ptr %t152 - br label %match.end11370 -match.next11393: - %t168 = icmp eq i32 %t25, 5 - br i1 %t168, label %match.arm11414, label %match.next11415 -match.arm11414: - %t169 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 0 - br i1 %t172, label %then11416, label %endif11418 -then11416: - %t173 = load ptr, ptr %a4 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic11419, label %ok11420 -panic11419: - call void @finch_panic(ptr @.str.7298, i64 227, ptr @.str.7299) - unreachable -ok11420: - %t175 = getelementptr inbounds %S.json.Writer, ptr %t173, i32 0, i32 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1 - %t177 = load i64, ptr %t176 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t175, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t175 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177 - store { ptr, i64, i64 } { ptr @.str.7300, i64 2, i64 0 }, ptr %t180 - store i64 %t178, ptr %t176 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11418: - %t181 = load ptr, ptr %a4 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic11421, label %ok11422 -panic11421: - call void @finch_panic(ptr @.str.7301, i64 230, ptr @.str.7302) - unreachable -ok11422: - %t183 = getelementptr inbounds %S.json.Writer, ptr %t181, i32 0, i32 0 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7303, i64 1, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a186 - %t190 = load i64, ptr %t184 - %t191 = add i64 %t190, 1 - call void @finch_arr_reserve(ptr %t183, i64 %t191, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t192 = load ptr, ptr %t183 - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190 - store { ptr, i64, i64 } %t189, ptr %t193 - store i64 %t191, ptr %t184 - %t194 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a195 - br label %each.cond11423 -each.cond11423: - %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t197 = load i64, ptr %t196 - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, %t197 - br i1 %t199, label %each.body11424, label %each.end11426 -each.body11424: - %t200 = load ptr, ptr %t194 - %t201 = getelementptr inbounds %S.json.Json, ptr %t200, i64 %t198 - %t202 = load %S.json.Json, ptr %t201 - store i64 %t198, ptr %a203 - store %S.json.Json %t202, ptr %a204 - %t205 = load i64, ptr %a203 - %t206 = icmp sgt i64 %t205, 0 - br i1 %t206, label %then11427, label %endif11429 -then11427: - %t207 = load ptr, ptr %a4 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic11430, label %ok11431 -panic11430: - call void @finch_panic(ptr @.str.7304, i64 233, ptr @.str.7305) - unreachable -ok11431: - %t209 = getelementptr inbounds %S.json.Writer, ptr %t207, i32 0, i32 0 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - %t211 = load { ptr, i64, i64 }, ptr %a7 - %t212 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a213 - %t217 = load i64, ptr %t210 - %t218 = add i64 %t217, 1 - call void @finch_arr_reserve(ptr %t209, i64 %t218, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t219 = load ptr, ptr %t209 - %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %t219, i64 %t217 - store { ptr, i64, i64 } %t216, ptr %t220 - store i64 %t218, ptr %t210 - br label %endif11429 -endif11429: - %t221 = load ptr, ptr %a4 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic11432, label %ok11433 -panic11432: - call void @finch_panic(ptr @.str.7306, i64 235, ptr @.str.7307) - unreachable -ok11433: - %t223 = getelementptr inbounds %S.json.Writer, ptr %t221, i32 0, i32 0 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load { ptr, i64, i64 }, ptr %a6 - %t226 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 - %t227 = load i64, ptr %a203 - %t228 = load { ptr, i64, i64 }, ptr %t226 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 %t227, %t229 - br i1 %t230, label %range11434, label %inrange11435 -range11434: - call void @finch_panic_index(ptr @.str.7308, i64 235, i64 %t227, i64 %t229) - unreachable -inrange11435: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t227 - %t233 = load { ptr, i64, i64 }, ptr %t232 - %t234 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t225, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t239, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = load i64, ptr %t224 - %t247 = add i64 %t246, 1 - call void @finch_arr_reserve(ptr %t223, i64 %t247, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t248 = load ptr, ptr %t223 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t246 - store { ptr, i64, i64 } %t245, ptr %t249 - store i64 %t247, ptr %t224 - %t250 = load %S.json.Json, ptr %a204 - %t251 = load { ptr, i64, i64 }, ptr %a2 - %t252 = load { ptr, i64, i64 }, ptr %a6 - %t253 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t250, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252, ptr %t253) - br label %each.step11425 -each.step11425: - %t254 = load i64, ptr %a195 - %t255 = add i64 %t254, 1 - store i64 %t255, ptr %a195 - br label %each.cond11423 -each.end11426: - %t256 = load ptr, ptr %a4 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic11436, label %ok11437 -panic11436: - call void @finch_panic(ptr @.str.7309, i64 238, ptr @.str.7310) - unreachable -ok11437: - %t258 = getelementptr inbounds %S.json.Writer, ptr %t256, i32 0, i32 0 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %a5 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.7311, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %t258, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %t258 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - br label %match.end11370 -match.next11415: - br i1 true, label %panic11438, label %ok11439 -panic11438: - call void @finch_panic(ptr @.str.7312, i64 199, ptr @.str.7313) - unreachable -ok11439: - unreachable -match.end11370: - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.S_json_Writer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Writer, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -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.7314, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7315, 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.7316, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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.7317, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.7318, 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.7319, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 1, ptr %a2 - store i64 1, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic11440, label %ok11441 -panic11440: - call void @finch_panic(ptr @.str.7320, i64 268, ptr @.str.7321) - unreachable -ok11441: - %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.cond11442 -for.cond11442: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body11443, label %for.end11445 -for.body11443: - %t11 = load i64, ptr %a8 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11446, label %ok11447 -panic11446: - call void @finch_panic(ptr @.str.7322, i64 269, ptr @.str.7323) - unreachable -ok11447: - %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.from11448 -logic.from11448: - br i1 %t17, label %logic.rhs11449, label %logic.end11450 -logic.rhs11449: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic11451, label %ok11452 -panic11451: - call void @finch_panic(ptr @.str.7324, i64 269, ptr @.str.7325) - unreachable -ok11452: - %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 %range11453, label %inrange11454 -range11453: - call void @finch_panic_index(ptr @.str.7326, i64 269, i64 %t21, i64 %t23) - unreachable -inrange11454: - %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.rend11455 -logic.rend11455: - br label %logic.end11450 -logic.end11450: - %t29 = phi i1 [ false, %logic.from11448 ], [ %t28, %logic.rend11455 ] - br i1 %t29, label %then11456, label %else11457 -then11456: - %t30 = load i64, ptr %a2 - %t31 = add i64 %t30, 1 - store i64 %t31, ptr %a2 - store i64 1, ptr %a3 - br label %endif11458 -else11457: - %t32 = load i64, ptr %a3 - %t33 = add i64 %t32, 1 - store i64 %t33, ptr %a3 - br label %endif11458 -endif11458: - br label %for.step11444 -for.step11444: - %t34 = load i64, ptr %a8 - %t35 = add i64 %t34, 1 - store i64 %t35, ptr %a8 - br label %for.cond11442 -for.end11445: - %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.7327, i64 5, i64 0 }, ptr %a40 - store { ptr, i64, i64 } %t38, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.7328, i64 9, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a50, i64 %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t48, ptr %a55 - call void @finch_str_drop(ptr %a55) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a52 - ret { ptr, i64, i64 } %t57 -} - -define internal i8 @finch.json.peek(ptr %p0) { -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 %panic11459, label %ok11460 -panic11459: - call void @finch_panic(ptr @.str.7329, i64 280, ptr @.str.7330) - unreachable -ok11460: - %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 %panic11461, label %ok11462 -panic11461: - call void @finch_panic(ptr @.str.7331, i64 280, ptr @.str.7332) - unreachable -ok11462: - %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 %then11463, label %endif11465 -then11463: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11466, label %ok11467 -panic11466: - call void @finch_panic(ptr @.str.7333, i64 281, ptr @.str.7334) - unreachable -ok11467: - %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 %panic11468, label %ok11469 -panic11468: - call void @finch_panic(ptr @.str.7335, i64 281, ptr @.str.7336) - unreachable -ok11469: - %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 %range11470, label %inrange11471 -range11470: - call void @finch_panic_index(ptr @.str.7337, i64 281, i64 %t18, i64 %t20) - unreachable -inrange11471: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 - %t24 = load i8, ptr %t23 - ret i8 %t24 -endif11465: - %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.cond11472 -while.cond11472: - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11475, label %ok11476 -panic11475: - call void @finch_panic(ptr @.str.7338, i64 287, ptr @.str.7339) - unreachable -ok11476: - %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 %panic11477, label %ok11478 -panic11477: - call void @finch_panic(ptr @.str.7340, i64 287, ptr @.str.7341) - unreachable -ok11478: - %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.from11479 -logic.from11479: - br i1 %t11, label %logic.rhs11480, label %logic.end11481 -logic.rhs11480: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11482, label %ok11483 -panic11482: - call void @finch_panic(ptr @.str.7342, i64 287, ptr @.str.7343) - unreachable -ok11483: - %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 %panic11484, label %ok11485 -panic11484: - call void @finch_panic(ptr @.str.7344, i64 287, ptr @.str.7345) - unreachable -ok11485: - %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 %range11486, label %inrange11487 -range11486: - call void @finch_panic_index(ptr @.str.7346, i64 287, i64 %t18, i64 %t20) - unreachable -inrange11487: - %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.from11488 -logic.from11488: - br i1 %t25, label %logic.end11490, label %logic.rhs11489 -logic.rhs11489: - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic11491, label %ok11492 -panic11491: - call void @finch_panic(ptr @.str.7347, i64 287, ptr @.str.7348) - unreachable -ok11492: - %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 %panic11493, label %ok11494 -panic11493: - call void @finch_panic(ptr @.str.7349, i64 287, ptr @.str.7350) - unreachable -ok11494: - %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 %range11495, label %inrange11496 -range11495: - call void @finch_panic_index(ptr @.str.7351, i64 287, i64 %t32, i64 %t34) - unreachable -inrange11496: - %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.rend11497 -logic.rend11497: - br label %logic.end11490 -logic.end11490: - %t40 = phi i1 [ true, %logic.from11488 ], [ %t39, %logic.rend11497 ] - br label %logic.from11498 -logic.from11498: - br i1 %t40, label %logic.end11500, label %logic.rhs11499 -logic.rhs11499: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic11501, label %ok11502 -panic11501: - call void @finch_panic(ptr @.str.7352, i64 287, ptr @.str.7353) - unreachable -ok11502: - %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 %panic11503, label %ok11504 -panic11503: - call void @finch_panic(ptr @.str.7354, i64 287, ptr @.str.7355) - unreachable -ok11504: - %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 %range11505, label %inrange11506 -range11505: - call void @finch_panic_index(ptr @.str.7356, i64 287, i64 %t47, i64 %t49) - unreachable -inrange11506: - %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.rend11507 -logic.rend11507: - br label %logic.end11500 -logic.end11500: - %t55 = phi i1 [ true, %logic.from11498 ], [ %t54, %logic.rend11507 ] - br label %logic.from11508 -logic.from11508: - br i1 %t55, label %logic.end11510, label %logic.rhs11509 -logic.rhs11509: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic11511, label %ok11512 -panic11511: - call void @finch_panic(ptr @.str.7357, i64 287, ptr @.str.7358) - unreachable -ok11512: - %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 %panic11513, label %ok11514 -panic11513: - call void @finch_panic(ptr @.str.7359, i64 287, ptr @.str.7360) - unreachable -ok11514: - %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 %range11515, label %inrange11516 -range11515: - call void @finch_panic_index(ptr @.str.7361, i64 287, i64 %t62, i64 %t64) - unreachable -inrange11516: - %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.rend11517 -logic.rend11517: - br label %logic.end11510 -logic.end11510: - %t70 = phi i1 [ true, %logic.from11508 ], [ %t69, %logic.rend11517 ] - br label %logic.rend11518 -logic.rend11518: - br label %logic.end11481 -logic.end11481: - %t71 = phi i1 [ false, %logic.from11479 ], [ %t70, %logic.rend11518 ] - br i1 %t71, label %while.body11473, label %while.end11474 -while.body11473: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic11519, label %ok11520 -panic11519: - call void @finch_panic(ptr @.str.7362, i64 288, ptr @.str.7363) - unreachable -ok11520: - %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.cond11472 -while.end11474: - 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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11521, label %ok11522 -panic11521: - call void @finch_panic(ptr @.str.7364, i64 293, ptr @.str.7365) - unreachable -ok11522: - %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 %panic11523, label %ok11524 -panic11523: - call void @finch_panic(ptr @.str.7366, i64 293, ptr @.str.7367) - unreachable -ok11524: - %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 %then11525, label %endif11527 -then11525: - %t13 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7368, 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.7369, i64 12, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } %t22, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t22, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.7370, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - ret { ptr, i64, i64 } %t35 -endif11527: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11528, label %ok11529 -panic11528: - call void @finch_panic(ptr @.str.7372, i64 296, ptr @.str.7373) - unreachable -ok11529: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11530, label %ok11531 -panic11530: - call void @finch_panic(ptr @.str.7374, i64 296, ptr @.str.7375) - unreachable -ok11531: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11532, label %inrange11533 -range11532: - call void @finch_panic_index(ptr @.str.7376, i64 296, i64 %t42, i64 %t44) - unreachable -inrange11533: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - call void @finch_str_from_char(ptr %a49, i8 signext %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.7371, i64 13, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.7377, i64 8, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.7378, i64 12, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load ptr, ptr %a1 - %t73 = call { ptr, i64, i64 } @finch.json.where(ptr %t72) - store { ptr, i64, i64 } %t71, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t71, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.7379, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -} - -define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11534, label %ok11535 -panic11534: - call void @finch_panic(ptr @.str.7380, i64 301, ptr @.str.7381) - unreachable -ok11535: - %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 %panic11536, label %ok11537 -panic11536: - call void @finch_panic(ptr @.str.7382, i64 301, ptr @.str.7383) - unreachable -ok11537: - %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.from11538 -logic.from11538: - br i1 %t15, label %logic.rhs11539, label %logic.end11540 -logic.rhs11539: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11541, label %ok11542 -panic11541: - call void @finch_panic(ptr @.str.7384, i64 301, ptr @.str.7385) - unreachable -ok11542: - %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 %panic11543, label %ok11544 -panic11543: - call void @finch_panic(ptr @.str.7387, i64 301, ptr @.str.7388) - unreachable -ok11544: - %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 %panic11545, label %ok11546 -panic11545: - call void @finch_panic(ptr @.str.7389, i64 301, ptr @.str.7390) - unreachable -ok11546: - %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.7386, 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 - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %logic.rend11547 -logic.rend11547: - br label %logic.end11540 -logic.end11540: - %t40 = phi i1 [ false, %logic.from11538 ], [ %t38, %logic.rend11547 ] - ret i1 %t40 -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = call i1 @finch.json.comes(ptr %t3, { ptr, i64, i64 } %t4) - %t6 = xor i1 %t5, true - br i1 %t6, label %then11548, label %endif11550 -then11548: - %t7 = load ptr, ptr %a1 - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7391, 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.7392, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t18, 2 - ret { i1, i8, { ptr, i64, i64 } } %t20 -endif11550: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t22 = load i64, ptr %t21 - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic11551, label %ok11552 -panic11551: - call void @finch_panic(ptr @.str.7393, i64 308, ptr @.str.7394) - unreachable -ok11552: - %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = add i64 %t26, %t22 - store i64 %t27, ptr %t25 - ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } -} - -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.from11553 -logic.from11553: - br i1 %t3, label %logic.rhs11554, label %logic.end11555 -logic.rhs11554: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend11556 -logic.rend11556: - br label %logic.end11555 -logic.end11555: - %t6 = phi i1 [ false, %logic.from11553 ], [ %t5, %logic.rend11556 ] - br i1 %t6, label %then11557, label %endif11559 -then11557: - %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 -endif11559: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from11560 -logic.from11560: - br i1 %t12, label %logic.rhs11561, label %logic.end11562 -logic.rhs11561: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend11563 -logic.rend11563: - br label %logic.end11562 -logic.end11562: - %t15 = phi i1 [ false, %logic.from11560 ], [ %t14, %logic.rend11563 ] - br i1 %t15, label %then11564, label %endif11566 -then11564: - %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 -endif11566: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from11567 -logic.from11567: - br i1 %t22, label %logic.rhs11568, label %logic.end11569 -logic.rhs11568: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend11570 -logic.rend11570: - br label %logic.end11569 -logic.end11569: - %t25 = phi i1 [ false, %logic.from11567 ], [ %t24, %logic.rend11570 ] - br i1 %t25, label %then11571, label %endif11573 -then11571: - %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 -endif11573: - 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 %then11574, label %else11575 -then11574: - %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 %endif11576 -else11575: - %t12 = load i64, ptr %a1 - %t13 = icmp slt i64 %t12, 2048 - br i1 %t13, label %then11577, label %else11578 -then11577: - %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 %endif11579 -else11578: - %t32 = load i64, ptr %a1 - %t33 = icmp slt i64 %t32, 65536 - br i1 %t33, label %then11580, label %else11581 -then11580: - %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 %endif11582 -else11581: - %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 %endif11582 -endif11582: - br label %endif11579 -endif11579: - br label %endif11576 -endif11576: - %t100 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a101 - store { ptr, i64, i64 } %t100, ptr %a102 - call void @finch_str_from_bytes(ptr %a101, ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a101 - call void @finch.drop.arr_u8(ptr %a2) - ret { ptr, i64, i64 } %t103 -} - -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.cond11583 -for.cond11583: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, 4 - br i1 %t5, label %for.body11584, label %for.end11586 -for.body11584: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic11587, label %ok11588 -panic11587: - call void @finch_panic(ptr @.str.7395, i64 348, ptr @.str.7396) - unreachable -ok11588: - %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 %panic11589, label %ok11590 -panic11589: - call void @finch_panic(ptr @.str.7397, i64 348, ptr @.str.7398) - unreachable -ok11590: - %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.from11591 -logic.from11591: - br i1 %t15, label %logic.end11593, label %logic.rhs11592 -logic.rhs11592: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11594, label %ok11595 -panic11594: - call void @finch_panic(ptr @.str.7399, i64 348, ptr @.str.7400) - unreachable -ok11595: - %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 %panic11596, label %ok11597 -panic11596: - call void @finch_panic(ptr @.str.7401, i64 348, ptr @.str.7402) - unreachable -ok11597: - %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 %range11598, label %inrange11599 -range11598: - call void @finch_panic_index(ptr @.str.7403, i64 348, i64 %t22, i64 %t24) - unreachable -inrange11599: - %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.rend11600 -logic.rend11600: - br label %logic.end11593 -logic.end11593: - %t31 = phi i1 [ true, %logic.from11591 ], [ %t30, %logic.rend11600 ] - br i1 %t31, label %then11601, label %endif11603 -then11601: - %t32 = load ptr, ptr %a1 - %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.7404, i64 19, i64 0 }) - %t34 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t33, 2 - ret { i1, i64, { ptr, i64, i64 } } %t34 -endif11603: - %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 %panic11604, label %ok11605 -panic11604: - call void @finch_panic(ptr @.str.7405, i64 351, ptr @.str.7406) - unreachable -ok11605: - %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 %panic11606, label %ok11607 -panic11606: - call void @finch_panic(ptr @.str.7407, i64 351, ptr @.str.7408) - unreachable -ok11607: - %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 %range11608, label %inrange11609 -range11608: - call void @finch_panic_index(ptr @.str.7409, i64 351, i64 %t43, i64 %t45) - unreachable -inrange11609: - %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 %panic11610, label %ok11611 -panic11610: - call void @finch_panic(ptr @.str.7410, i64 352, ptr @.str.7411) - unreachable -ok11611: - %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.step11585 -for.step11585: - %t57 = load i64, ptr %a3 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a3 - br label %for.cond11583 -for.end11586: - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i8, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i8, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a216 = alloca i64, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11612, label %ok11613 -panic11612: - call void @finch_panic(ptr @.str.7412, i64 358, ptr @.str.7413) - unreachable -ok11613: - %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 %panic11614, label %ok11615 -panic11614: - call void @finch_panic(ptr @.str.7414, i64 360, ptr @.str.7415) - unreachable -ok11615: - %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.cond11616 -while.cond11616: - br label %while.body11617 -while.body11617: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic11619, label %ok11620 -panic11619: - call void @finch_panic(ptr @.str.7416, i64 362, ptr @.str.7417) - unreachable -ok11620: - %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 %panic11621, label %ok11622 -panic11621: - call void @finch_panic(ptr @.str.7418, i64 362, ptr @.str.7419) - unreachable -ok11622: - %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 %then11623, label %endif11625 -then11623: - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } { ptr @.str.7420, i64 30, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.7421, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - call void @finch.drop.arr_str(ptr %a7) - %t35 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t34, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t35 -endif11625: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11626, label %ok11627 -panic11626: - call void @finch_panic(ptr @.str.7422, i64 365, ptr @.str.7423) - unreachable -ok11627: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11628, label %ok11629 -panic11628: - call void @finch_panic(ptr @.str.7424, i64 365, ptr @.str.7425) - unreachable -ok11629: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11630, label %inrange11631 -range11630: - call void @finch_panic_index(ptr @.str.7426, i64 365, i64 %t42, i64 %t44) - unreachable -inrange11631: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - store i8 %t48, ptr %a49 - %t50 = load i8, ptr %a49 - %t51 = icmp eq i8 %t50, 34 - br i1 %t51, label %then11632, label %endif11634 -then11632: - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic11635, label %ok11636 -panic11635: - call void @finch_panic(ptr @.str.7427, i64 367, ptr @.str.7428) - unreachable -ok11636: - %t55 = getelementptr inbounds %S.json.Reader, ptr %t53, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - %t59 = load i64, ptr %a12 - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic11637, label %ok11638 -panic11637: - call void @finch_panic(ptr @.str.7430, i64 367, ptr @.str.7431) - unreachable -ok11638: - %t62 = getelementptr inbounds %S.json.Reader, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - call void @finch_str_sub(ptr %a58, ptr %a57, i64 %t59, i64 %t63, ptr @.str.7429, i64 367) - %t64 = load { ptr, i64, i64 }, ptr %a58 - %t65 = load i64, ptr %t52 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t66, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %a7 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i64 %t65 - store { ptr, i64, i64 } %t64, ptr %t68 - store i64 %t66, ptr %t52 - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11639, label %ok11640 -panic11639: - call void @finch_panic(ptr @.str.7432, i64 368, ptr @.str.7433) - unreachable -ok11640: - %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %t71 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7434, i64 0, i64 0 }, ptr %a75 - call void @finch_str_join(ptr %a76, ptr %a7, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.drop.arr_str(ptr %a7) - %t78 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t79 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t78, { ptr, i64, i64 } %t77, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t79 -endif11634: - %t80 = load i8, ptr %a49 - %t81 = zext i8 %t80 to i64 - %t82 = icmp slt i64 %t81, 32 - br i1 %t82, label %then11641, label %endif11643 -then11641: - %t83 = load ptr, ptr %a1 - %t84 = call { ptr, i64, i64 } @finch.json.where(ptr %t83) - store { ptr, i64, i64 } { ptr @.str.7435, i64 55, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.7436, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a7) - %t95 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t94, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t95 -endif11643: - %t96 = load i8, ptr %a49 - %t97 = icmp ne i8 %t96, 92 - br i1 %t97, label %then11644, label %endif11646 -then11644: - %t98 = load ptr, ptr %a1 - %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic11647, label %ok11648 -panic11647: - call void @finch_panic(ptr @.str.7437, i64 375, ptr @.str.7438) - unreachable -ok11648: - %t100 = getelementptr inbounds %S.json.Reader, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %t100 - br label %while.cond11616 -endif11646: - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic11649, label %ok11650 -panic11649: - call void @finch_panic(ptr @.str.7439, i64 378, ptr @.str.7440) - unreachable -ok11650: - %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - %t110 = load i64, ptr %a12 - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic11651, label %ok11652 -panic11651: - call void @finch_panic(ptr @.str.7442, i64 378, ptr @.str.7443) - unreachable -ok11652: - %t113 = getelementptr inbounds %S.json.Reader, ptr %t111, i32 0, i32 1 - %t114 = load i64, ptr %t113 - call void @finch_str_sub(ptr %a109, ptr %a108, i64 %t110, i64 %t114, ptr @.str.7441, i64 378) - %t115 = load { ptr, i64, i64 }, ptr %a109 - %t116 = load i64, ptr %t103 - %t117 = add i64 %t116, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t117, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t118 = load ptr, ptr %a7 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116 - store { ptr, i64, i64 } %t115, ptr %t119 - store i64 %t117, ptr %t103 - %t120 = load ptr, ptr %a1 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic11653, label %ok11654 -panic11653: - call void @finch_panic(ptr @.str.7444, i64 379, ptr @.str.7445) - unreachable -ok11654: - %t122 = getelementptr inbounds %S.json.Reader, ptr %t120, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %t122 - %t125 = load ptr, ptr %a1 - %t126 = call i8 @finch.json.peek(ptr %t125) - store i8 %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic11655, label %ok11656 -panic11655: - call void @finch_panic(ptr @.str.7446, i64 381, ptr @.str.7447) - unreachable -ok11656: - %t130 = getelementptr inbounds %S.json.Reader, ptr %t128, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %t130 - %t133 = load i8, ptr %a127 - %t134 = icmp eq i8 %t133, 110 - br i1 %t134, label %then11657, label %else11658 -then11657: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = add i64 %t136, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t137, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t138 = load ptr, ptr %a7 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i64 %t136 - store { ptr, i64, i64 } { ptr @.str.7448, i64 1, i64 0 }, ptr %t139 - store i64 %t137, ptr %t135 - br label %endif11659 -else11658: - %t140 = load i8, ptr %a127 - %t141 = icmp eq i8 %t140, 116 - br i1 %t141, label %then11660, label %else11661 -then11660: - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = add i64 %t143, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t144, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t145 = load ptr, ptr %a7 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t143 - store { ptr, i64, i64 } { ptr @.str.7449, i64 1, i64 0 }, ptr %t146 - store i64 %t144, ptr %t142 - br label %endif11662 -else11661: - %t147 = load i8, ptr %a127 - %t148 = icmp eq i8 %t147, 114 - br i1 %t148, label %then11663, label %else11664 -then11663: - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = add i64 %t150, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t151, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t152 = load ptr, ptr %a7 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i64 %t150 - store { ptr, i64, i64 } { ptr @.str.7450, i64 1, i64 0 }, ptr %t153 - store i64 %t151, ptr %t149 - br label %endif11665 -else11664: - %t154 = load i8, ptr %a127 - %t155 = icmp eq i8 %t154, 98 - br i1 %t155, label %then11666, label %else11667 -then11666: - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t157 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) - %t158 = load i64, ptr %t156 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t159, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %a7 - %t161 = getelementptr inbounds { ptr, i64, i64 }, ptr %t160, i64 %t158 - store { ptr, i64, i64 } %t157, ptr %t161 - store i64 %t159, ptr %t156 - br label %endif11668 -else11667: - %t162 = load i8, ptr %a127 - %t163 = icmp eq i8 %t162, 102 - br i1 %t163, label %then11669, label %else11670 -then11669: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t165 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) - %t166 = load i64, ptr %t164 - %t167 = add i64 %t166, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t167, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t168 = load ptr, ptr %a7 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i64 %t166 - store { ptr, i64, i64 } %t165, ptr %t169 - store i64 %t167, ptr %t164 - br label %endif11671 -else11670: - %t170 = load i8, ptr %a127 - %t171 = icmp eq i8 %t170, 34 - br label %logic.from11672 -logic.from11672: - br i1 %t171, label %logic.end11674, label %logic.rhs11673 -logic.rhs11673: - %t172 = load i8, ptr %a127 - %t173 = icmp eq i8 %t172, 92 - br label %logic.rend11675 -logic.rend11675: - br label %logic.end11674 -logic.end11674: - %t174 = phi i1 [ true, %logic.from11672 ], [ %t173, %logic.rend11675 ] - br label %logic.from11676 -logic.from11676: - br i1 %t174, label %logic.end11678, label %logic.rhs11677 -logic.rhs11677: - %t175 = load i8, ptr %a127 - %t176 = icmp eq i8 %t175, 47 - br label %logic.rend11679 -logic.rend11679: - br label %logic.end11678 -logic.end11678: - %t177 = phi i1 [ true, %logic.from11676 ], [ %t176, %logic.rend11679 ] - br i1 %t177, label %then11680, label %else11681 -then11680: - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t179 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a180, i8 signext %t179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - %t182 = load i64, ptr %t178 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a7 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t178 - br label %endif11682 -else11681: - %t186 = load i8, ptr %a127 - %t187 = icmp eq i8 %t186, 117 - br i1 %t187, label %then11683, label %else11684 -then11683: - %t188 = load ptr, ptr %a1 - %t189 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t188) - %t190 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 0 - %t191 = xor i1 %t190, true - %t192 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 2 - %t193 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 1 - br i1 %t191, label %try.failed11686, label %try.ok11687 -try.failed11686: - call void @finch.drop.arr_str(ptr %a7) - %t194 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t192, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t194 -try.ok11687: - store i64 %t193, ptr %a195 - %t196 = load i64, ptr %a195 - %t197 = icmp sge i64 %t196, 55296 - br label %logic.from11688 -logic.from11688: - br i1 %t197, label %logic.rhs11689, label %logic.end11690 -logic.rhs11689: - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, 56320 - br label %logic.rend11691 -logic.rend11691: - br label %logic.end11690 -logic.end11690: - %t200 = phi i1 [ false, %logic.from11688 ], [ %t199, %logic.rend11691 ] - br label %logic.from11692 -logic.from11692: - br i1 %t200, label %logic.rhs11693, label %logic.end11694 -logic.rhs11693: - %t201 = load ptr, ptr %a1 - %t202 = call i1 @finch.json.comes(ptr %t201, { ptr, i64, i64 } { ptr @.str.7451, i64 2, i64 0 }) - br label %logic.rend11695 -logic.rend11695: - br label %logic.end11694 -logic.end11694: - %t203 = phi i1 [ false, %logic.from11692 ], [ %t202, %logic.rend11695 ] - br i1 %t203, label %then11696, label %endif11698 -then11696: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic11699, label %ok11700 -panic11699: - call void @finch_panic(ptr @.str.7452, i64 398, ptr @.str.7453) - unreachable -ok11700: - %t206 = getelementptr inbounds %S.json.Reader, ptr %t204, i32 0, i32 1 - %t207 = load i64, ptr %t206 - %t208 = add i64 %t207, 2 - store i64 %t208, ptr %t206 - %t209 = load ptr, ptr %a1 - %t210 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t209) - %t211 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 0 - %t212 = xor i1 %t211, true - %t213 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 2 - %t214 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 1 - br i1 %t212, label %try.failed11701, label %try.ok11702 -try.failed11701: - call void @finch.drop.arr_str(ptr %a7) - %t215 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t213, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t215 -try.ok11702: - store i64 %t214, ptr %a216 - %t217 = load i64, ptr %a195 - %t218 = sub i64 %t217, 55296 - %t219 = mul i64 %t218, 1024 - %t220 = add i64 65536, %t219 - %t221 = load i64, ptr %a216 - %t222 = sub i64 %t221, 56320 - %t223 = add i64 %t220, %t222 - store i64 %t223, ptr %a195 - br label %endif11698 -endif11698: - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t225 = load i64, ptr %a195 - %t226 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t225) - %t227 = load i64, ptr %t224 - %t228 = add i64 %t227, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t229 = load ptr, ptr %a7 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227 - store { ptr, i64, i64 } %t226, ptr %t230 - store i64 %t228, ptr %t224 - br label %endif11685 -else11684: - %t231 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a232, i8 signext %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.7454, i64 22, i64 0 }, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.7455, i64 12, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load ptr, ptr %a1 - %t245 = call { ptr, i64, i64 } @finch.json.where(ptr %t244) - store { ptr, i64, i64 } %t243, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t243, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t245, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.7456, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.drop.arr_str(ptr %a7) - %t257 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t256, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t257 -endif11685: - br label %endif11682 -endif11682: - br label %endif11671 -endif11671: - br label %endif11668 -endif11668: - br label %endif11665 -endif11665: - br label %endif11662 -endif11662: - br label %endif11659 -endif11659: - %t258 = load ptr, ptr %a1 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic11703, label %ok11704 -panic11703: - call void @finch_panic(ptr @.str.7457, i64 406, ptr @.str.7458) - unreachable -ok11704: - %t260 = getelementptr inbounds %S.json.Reader, ptr %t258, i32 0, i32 1 - %t261 = load i64, ptr %t260 - store i64 %t261, ptr %a12 - br label %while.cond11616 -} - -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 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca double, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11705, label %ok11706 -panic11705: - call void @finch_panic(ptr @.str.7459, i64 411, ptr @.str.7460) - unreachable -ok11706: - %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 %then11707, label %endif11709 -then11707: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic11710, label %ok11711 -panic11710: - call void @finch_panic(ptr @.str.7461, i64 413, ptr @.str.7462) - unreachable -ok11711: - %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 %endif11709 -endif11709: - br label %while.cond11712 -while.cond11712: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic11715, label %ok11716 -panic11715: - call void @finch_panic(ptr @.str.7463, i64 415, ptr @.str.7464) - unreachable -ok11716: - %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 %panic11717, label %ok11718 -panic11717: - call void @finch_panic(ptr @.str.7465, i64 415, ptr @.str.7466) - unreachable -ok11718: - %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.from11719 -logic.from11719: - br i1 %t24, label %logic.rhs11720, label %logic.end11721 -logic.rhs11720: - %t25 = load ptr, ptr %a1 - %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic11722, label %ok11723 -panic11722: - call void @finch_panic(ptr @.str.7467, i64 415, ptr @.str.7468) - unreachable -ok11723: - %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 %panic11724, label %ok11725 -panic11724: - call void @finch_panic(ptr @.str.7469, i64 415, ptr @.str.7470) - unreachable -ok11725: - %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 %range11726, label %inrange11727 -range11726: - call void @finch_panic_index(ptr @.str.7471, i64 415, i64 %t31, i64 %t33) - unreachable -inrange11727: - %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.from11728 -logic.from11728: - br i1 %t38, label %logic.rhs11729, label %logic.end11730 -logic.rhs11729: - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11731, label %ok11732 -panic11731: - call void @finch_panic(ptr @.str.7472, i64 415, ptr @.str.7473) - unreachable -ok11732: - %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 %panic11733, label %ok11734 -panic11733: - call void @finch_panic(ptr @.str.7474, i64 415, ptr @.str.7475) - unreachable -ok11734: - %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 %range11735, label %inrange11736 -range11735: - call void @finch_panic_index(ptr @.str.7476, i64 415, i64 %t45, i64 %t47) - unreachable -inrange11736: - %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.rend11737 -logic.rend11737: - br label %logic.end11730 -logic.end11730: - %t53 = phi i1 [ false, %logic.from11728 ], [ %t52, %logic.rend11737 ] - br label %logic.from11738 -logic.from11738: - br i1 %t53, label %logic.end11740, label %logic.rhs11739 -logic.rhs11739: - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic11741, label %ok11742 -panic11741: - call void @finch_panic(ptr @.str.7477, i64 415, ptr @.str.7478) - unreachable -ok11742: - %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 %panic11743, label %ok11744 -panic11743: - call void @finch_panic(ptr @.str.7479, i64 415, ptr @.str.7480) - unreachable -ok11744: - %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 %range11745, label %inrange11746 -range11745: - call void @finch_panic_index(ptr @.str.7481, i64 415, i64 %t60, i64 %t62) - unreachable -inrange11746: - %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.rend11747 -logic.rend11747: - br label %logic.end11740 -logic.end11740: - %t68 = phi i1 [ true, %logic.from11738 ], [ %t67, %logic.rend11747 ] - br label %logic.from11748 -logic.from11748: - br i1 %t68, label %logic.end11750, label %logic.rhs11749 -logic.rhs11749: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11751, label %ok11752 -panic11751: - call void @finch_panic(ptr @.str.7482, i64 415, ptr @.str.7483) - unreachable -ok11752: - %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 %panic11753, label %ok11754 -panic11753: - call void @finch_panic(ptr @.str.7484, i64 415, ptr @.str.7485) - unreachable -ok11754: - %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 %range11755, label %inrange11756 -range11755: - call void @finch_panic_index(ptr @.str.7486, i64 415, i64 %t75, i64 %t77) - unreachable -inrange11756: - %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.rend11757 -logic.rend11757: - br label %logic.end11750 -logic.end11750: - %t83 = phi i1 [ true, %logic.from11748 ], [ %t82, %logic.rend11757 ] - br label %logic.from11758 -logic.from11758: - br i1 %t83, label %logic.end11760, label %logic.rhs11759 -logic.rhs11759: - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic11761, label %ok11762 -panic11761: - call void @finch_panic(ptr @.str.7487, i64 415, ptr @.str.7488) - unreachable -ok11762: - %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 %panic11763, label %ok11764 -panic11763: - call void @finch_panic(ptr @.str.7489, i64 415, ptr @.str.7490) - unreachable -ok11764: - %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 %range11765, label %inrange11766 -range11765: - call void @finch_panic_index(ptr @.str.7491, i64 415, i64 %t90, i64 %t92) - unreachable -inrange11766: - %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.rend11767 -logic.rend11767: - br label %logic.end11760 -logic.end11760: - %t98 = phi i1 [ true, %logic.from11758 ], [ %t97, %logic.rend11767 ] - br label %logic.from11768 -logic.from11768: - br i1 %t98, label %logic.end11770, label %logic.rhs11769 -logic.rhs11769: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic11771, label %ok11772 -panic11771: - call void @finch_panic(ptr @.str.7492, i64 415, ptr @.str.7493) - unreachable -ok11772: - %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 %panic11773, label %ok11774 -panic11773: - call void @finch_panic(ptr @.str.7494, i64 415, ptr @.str.7495) - unreachable -ok11774: - %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 %range11775, label %inrange11776 -range11775: - call void @finch_panic_index(ptr @.str.7496, i64 415, i64 %t105, i64 %t107) - unreachable -inrange11776: - %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.rend11777 -logic.rend11777: - br label %logic.end11770 -logic.end11770: - %t113 = phi i1 [ true, %logic.from11768 ], [ %t112, %logic.rend11777 ] - br label %logic.from11778 -logic.from11778: - br i1 %t113, label %logic.end11780, label %logic.rhs11779 -logic.rhs11779: - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic11781, label %ok11782 -panic11781: - call void @finch_panic(ptr @.str.7497, i64 415, ptr @.str.7498) - unreachable -ok11782: - %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 %panic11783, label %ok11784 -panic11783: - call void @finch_panic(ptr @.str.7499, i64 415, ptr @.str.7500) - unreachable -ok11784: - %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 %range11785, label %inrange11786 -range11785: - call void @finch_panic_index(ptr @.str.7501, i64 415, i64 %t120, i64 %t122) - unreachable -inrange11786: - %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.rend11787 -logic.rend11787: - br label %logic.end11780 -logic.end11780: - %t128 = phi i1 [ true, %logic.from11778 ], [ %t127, %logic.rend11787 ] - br label %logic.rend11788 -logic.rend11788: - br label %logic.end11721 -logic.end11721: - %t129 = phi i1 [ false, %logic.from11719 ], [ %t128, %logic.rend11788 ] - br i1 %t129, label %while.body11713, label %while.end11714 -while.body11713: - %t130 = load ptr, ptr %a1 - %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic11789, label %ok11790 -panic11789: - call void @finch_panic(ptr @.str.7502, i64 416, ptr @.str.7503) - unreachable -ok11790: - %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.cond11712 -while.end11714: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic11791, label %ok11792 -panic11791: - call void @finch_panic(ptr @.str.7504, i64 418, ptr @.str.7505) - unreachable -ok11792: - %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 %panic11793, label %ok11794 -panic11793: - call void @finch_panic(ptr @.str.7507, i64 418, ptr @.str.7508) - unreachable -ok11794: - %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.7506, 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 - store { ptr, i64, i64 } %t146, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load double, ptr %a148 - br i1 %t151, label %or.failed11795, label %or.ok11796 -or.failed11795: - store { ptr, i64, i64 } %t152, ptr %a155 - %t156 = load i64, ptr %a6 - %t157 = load ptr, ptr %a1 - %t158 = icmp eq ptr %t157, null - br i1 %t158, label %panic11797, label %ok11798 -panic11797: - call void @finch_panic(ptr @.str.7509, i64 419, ptr @.str.7510) - unreachable -ok11798: - %t159 = getelementptr inbounds %S.json.Reader, ptr %t157, i32 0, i32 1 - store i64 %t156, ptr %t159 - %t160 = load ptr, ptr %a1 - %t161 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t160, { ptr, i64, i64 } { ptr @.str.7511, i64 8, i64 0 }) - call void @finch_str_drop(ptr %a155) - %t162 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t161, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t162 -or.ok11796: - store double %t154, ptr %a163 - %t164 = load double, ptr %a163 - %t165 = call %S.json.Json @finch.json.new_number(double %t164) - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t167 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t166, %S.json.Json %t165, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t167 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { -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 %panic11799, label %ok11800 -panic11799: - call void @finch_panic(ptr @.str.7512, i64 428, ptr @.str.7513) - unreachable -ok11800: - %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 %panic11801, label %ok11802 -panic11801: - call void @finch_panic(ptr @.str.7514, i64 428, ptr @.str.7515) - unreachable -ok11802: - %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 %then11803, label %endif11805 -then11803: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7516, 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 -endif11805: - %t19 = load i8, ptr %a5 - %t20 = icmp eq i8 %t19, 123 - br i1 %t20, label %then11806, label %endif11808 -then11806: - %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 %panic11809, label %ok11810 -panic11809: - call void @finch_panic(ptr @.str.7517, i64 433, ptr @.str.7518) - unreachable -ok11810: - %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 %then11811, label %endif11813 -then11811: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic11814, label %ok11815 -panic11814: - call void @finch_panic(ptr @.str.7519, i64 436, ptr @.str.7520) - unreachable -ok11815: - %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 -endif11813: - br label %while.cond11816 -while.cond11816: - br label %while.body11817 -while.body11817: - %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 %then11819, label %endif11821 -then11819: - %t44 = load ptr, ptr %a1 - %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7521, i64 15, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a22) - %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 -endif11821: - %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.failed11822, label %try.ok11823 -try.failed11822: - call void @finch.drop.S_json_Json(ptr %a22) - %t53 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t51, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t53 -try.ok11823: - 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 %then11824, label %endif11826 -then11824: - %t59 = load ptr, ptr %a1 - %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7522, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 -endif11826: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic11827, label %ok11828 -panic11827: - call void @finch_panic(ptr @.str.7523, i64 449, ptr @.str.7524) - unreachable -ok11828: - %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.failed11829, label %try.ok11830 -try.failed11829: - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t73 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t71, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t73 -try.ok11830: - 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 %then11831, label %endif11833 -then11831: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic11834, label %ok11835 -panic11834: - call void @finch_panic(ptr @.str.7525, i64 454, ptr @.str.7526) - unreachable -ok11835: - %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 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - br label %while.cond11816 -endif11833: - %t86 = load ptr, ptr %a1 - %t87 = call i8 @finch.json.peek(ptr %t86) - %t88 = icmp eq i8 %t87, 125 - br i1 %t88, label %then11836, label %endif11838 -then11836: - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic11839, label %ok11840 -panic11839: - call void @finch_panic(ptr @.str.7527, i64 458, ptr @.str.7528) - unreachable -ok11840: - %t91 = getelementptr inbounds %S.json.Reader, ptr %t89, i32 0, i32 1 - %t92 = load i64, ptr %t91 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %t91 - %t94 = load %S.json.Json, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - %t95 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t96 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t95, %S.json.Json %t94, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t96 -endif11838: - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7529, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 -endif11808: - %t100 = load i8, ptr %a5 - %t101 = icmp eq i8 %t100, 91 - br i1 %t101, label %then11841, label %endif11843 -then11841: - %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 %panic11844, label %ok11845 -panic11844: - call void @finch_panic(ptr @.str.7530, i64 466, ptr @.str.7531) - unreachable -ok11845: - %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 %then11846, label %endif11848 -then11846: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic11849, label %ok11850 -panic11849: - call void @finch_panic(ptr @.str.7532, i64 469, ptr @.str.7533) - unreachable -ok11850: - %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 -endif11848: - br label %while.cond11851 -while.cond11851: - br label %while.body11852 -while.body11852: - %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.failed11854, label %try.ok11855 -try.failed11854: - call void @finch.drop.S_json_Json(ptr %a103) - %t127 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t125, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t127 -try.ok11855: - 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 %then11856, label %endif11858 -then11856: - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic11859, label %ok11860 -panic11859: - call void @finch_panic(ptr @.str.7534, i64 477, ptr @.str.7535) - unreachable -ok11860: - %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 - call void @finch.drop.S_json_Json(ptr %a128) - br label %while.cond11851 -endif11858: - %t139 = load ptr, ptr %a1 - %t140 = call i8 @finch.json.peek(ptr %t139) - %t141 = icmp eq i8 %t140, 93 - br i1 %t141, label %then11861, label %endif11863 -then11861: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic11864, label %ok11865 -panic11864: - call void @finch_panic(ptr @.str.7536, i64 481, ptr @.str.7537) - unreachable -ok11865: - %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - store i64 %t146, ptr %t144 - %t147 = load %S.json.Json, ptr %a103 - call void @finch.drop.S_json_Json(ptr %a128) - %t148 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t149 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t148, %S.json.Json %t147, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t149 -endif11863: - %t150 = load ptr, ptr %a1 - %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7538, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a128) - call void @finch.drop.S_json_Json(ptr %a103) - %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 -endif11843: - %t153 = load i8, ptr %a5 - %t154 = icmp eq i8 %t153, 34 - br i1 %t154, label %then11866, label %endif11868 -then11866: - %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.failed11869, label %try.ok11870 -try.failed11869: - %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.ok11870: - store { ptr, i64, i64 } %t160, ptr %a162 - %t163 = load { ptr, i64, i64 }, ptr %a162 - %t164 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t163) - call void @finch_str_drop(ptr %a162) - %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 -endif11868: - %t167 = load i8, ptr %a5 - %t168 = icmp eq i8 %t167, 116 - br i1 %t168, label %then11871, label %endif11873 -then11871: - %t169 = load ptr, ptr %a1 - %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7539, 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.failed11874, label %try.ok11875 -try.failed11874: - %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.ok11875: - %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 -endif11873: - %t178 = load i8, ptr %a5 - %t179 = icmp eq i8 %t178, 102 - br i1 %t179, label %then11876, label %endif11878 -then11876: - %t180 = load ptr, ptr %a1 - %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7540, 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.failed11879, label %try.ok11880 -try.failed11879: - %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.ok11880: - %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 -endif11878: - %t189 = load i8, ptr %a5 - %t190 = icmp eq i8 %t189, 110 - br i1 %t190, label %then11881, label %endif11883 -then11881: - %t191 = load ptr, ptr %a1 - %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7541, 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.failed11884, label %try.ok11885 -try.failed11884: - %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.ok11885: - %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 -endif11883: - %t200 = load i8, ptr %a5 - %t201 = icmp eq i8 %t200, 45 - br label %logic.from11886 -logic.from11886: - br i1 %t201, label %logic.end11888, label %logic.rhs11887 -logic.rhs11887: - %t202 = load i8, ptr %a5 - %t203 = icmp uge i8 %t202, 48 - br label %logic.from11889 -logic.from11889: - br i1 %t203, label %logic.rhs11890, label %logic.end11891 -logic.rhs11890: - %t204 = load i8, ptr %a5 - %t205 = icmp ule i8 %t204, 57 - br label %logic.rend11892 -logic.rend11892: - br label %logic.end11891 -logic.end11891: - %t206 = phi i1 [ false, %logic.from11889 ], [ %t205, %logic.rend11892 ] - br label %logic.rend11893 -logic.rend11893: - br label %logic.end11888 -logic.end11888: - %t207 = phi i1 [ true, %logic.from11886 ], [ %t206, %logic.rend11893 ] - br i1 %t207, label %then11894, label %endif11896 -then11894: - %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.failed11897, label %try.ok11898 -try.failed11897: - %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.ok11898: - %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 -endif11896: - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7542, i64 7, i64 0 }) - %t219 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t218, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t219 -} - -define internal void @finch.drop.S_json_Reader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Reader, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - 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.failed11899, label %try.ok11900 -try.failed11899: - call void @finch.drop.S_json_Reader(ptr %a7) - %t13 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t11, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t13 -try.ok11900: - 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 %then11901, label %endif11903 -then11901: - %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7543, i64 19, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a14) - call void @finch.drop.S_json_Reader(ptr %a7) - %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 -endif11903: - %t23 = load %S.json.Json, ptr %a14 - call void @finch.drop.S_json_Reader(ptr %a7) - %t24 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t25 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, %S.json.Json %t23, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t25 -} - -define internal { ptr, i64, i64 } @finch.embedded.names() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7544, i64 18, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7545, i64 12, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7546, i64 12, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7547, i64 12, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7548, i64 20, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7549, i64 12, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7550, i64 20, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7551, i64 15, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define internal { ptr, i64, i64 } @finch.embedded.texts() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7552, i64 24981, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7553, i64 12884, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7554, i64 2846, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7555, i64 1406, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7556, i64 995, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7557, i64 2539, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7558, i64 1792, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7559, i64 365, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define i32 @main(i32 %argc, ptr %argv) { -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/macos-arm64.ll b/bootstrap/macos-arm64.ll deleted file mode 100644 index f3ca512..0000000 --- a/bootstrap/macos-arm64.ll +++ /dev/null @@ -1,117504 +0,0 @@ -; generated by the Finch compiler written in Finch - -target triple = "arm64-apple-macosx11.0.0" - -%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, i1, i1, { ptr, i64, i64 }, i64, i64 } -%S.platform.Target = type { { ptr, i64, i64 }, i1, i1, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Options = type { i1, i1, i1, { ptr, i64, i64 }, %S.platform.Target } -%S.gen.Template = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1, i1 } -%S.gen.Binds = type { { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.EnumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Cleanup = type { i1, i64 } -%S.gen.SumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.SumPat = type { i64, { ptr, i64, i64 } } -%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Pending = type { { ptr, i64, i64 }, %S.ast.Type, i1 } -%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.FnSig = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.StructDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } -%S.gen.Val = type { { ptr, i64, i64 }, %S.ast.Type, i1, i1 } -%S.gen.Place = type { { ptr, i64, i64 }, %S.ast.Type } -%S.gen.Ref = type { i1, %S.gen.Place, %S.gen.Val } -%S.cimport.CImports = type { { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Gen = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { 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 }, { 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.rlimit = type { i64, i64 } -%S.C.timeval = type { i64, i32, [4 x i8] } -%S.C.rusage = type { %S.C.timeval, %S.C.timeval, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 } -%S.C.siginfo_t = type { i32, i32, i32, i32, i32, i32, ptr, [8 x i8], i64, [7 x 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.timespec = type { i64, i64 } -%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.fd_set = type { [32 x i32] } -%S.C.accessx_descriptor = type { i32, i32, [2 x i32] } -%S.C.__sbuf = type { ptr, i32, [4 x i8] } -%S.C.FILE = type { ptr, i32, i32, i16, i16, [4 x i8], %S.C.__sbuf, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, %S.C.__sbuf, ptr, i32, [3 x i8], [1 x i8], %S.C.__sbuf, i32, [4 x i8], i64 } -@.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 [8 x i8] c"/files-\00" -@.str.146 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.147 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.148 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.149 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.150 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.151 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.153 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.155 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.156 = private unnamed_addr constant [8 x i8] c"version\00" -@.str.157 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.158 = private unnamed_addr constant [10 x i8] c"--version\00" -@.str.159 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" -@.str.160 = private unnamed_addr constant [1 x i8] c"\00" -@.str.161 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.162 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.164 = private unnamed_addr constant [4 x i8] c"lsp\00" -@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.166 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.168 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.169 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.170 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.171 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.172 = private unnamed_addr constant [1 x i8] c"\00" -@.str.173 = private unnamed_addr constant [4 x i8] c"-O2\00" -@.str.174 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.175 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.176 = private unnamed_addr constant [3 x i8] c"-o\00" -@.str.177 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.178 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.179 = private unnamed_addr constant [9 x i8] c"--shared\00" -@.str.180 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.181 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.182 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.183 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.185 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.186 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.187 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.188 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.189 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.190 = private unnamed_addr constant [10 x i8] c"--overlay\00" -@.str.191 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.192 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.193 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.194 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.195 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.196 = private unnamed_addr constant [3 x i8] c"-g\00" -@.str.197 = private unnamed_addr constant [9 x i8] c"--target\00" -@.str.198 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.199 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.200 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.201 = private unnamed_addr constant [12 x i8] c"/finch_run_\00" -@.str.202 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.203 = private unnamed_addr constant [5 x i8] c".dll\00" -@.str.204 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.205 = private unnamed_addr constant [7 x i8] c".dylib\00" -@.str.206 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.207 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.208 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.209 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.210 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.212 = private unnamed_addr constant [8 x i8] c"/../std\00" -@.str.213 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.214 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.216 = private unnamed_addr constant [20 x i8] c"/../share/finch/std\00" -@.str.217 = private unnamed_addr constant [4 x i8] c"std\00" -@.str.218 = private unnamed_addr constant [10 x i8] c"/path.fch\00" -@.str.219 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.220 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" -@.str.221 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @getenv(ptr) -@.str.222 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.223 = private unnamed_addr constant [1 x i8] c"\00" -@.str.224 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.225 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.226 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.227 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.228 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.229 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.230 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.231 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.232 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.233 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.234 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.235 = private unnamed_addr constant [1 x i8] c"\00" -@.str.236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.239 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.240 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.241 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.243 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.244 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.245 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" -@.str.246 = private unnamed_addr constant [1 x i8] c"\00" -@.str.247 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.248 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" -@.str.249 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.250 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.251 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.252 = private unnamed_addr constant [35 x i8] c"/../share/finch/runtime/finch_rt.c\00" -@.str.253 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.254 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.255 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.256 = private unnamed_addr constant [1 x i8] c"\00" -@.str.257 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.258 = private unnamed_addr constant [4 x i8] c" -g\00" -@.str.259 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.260 = private unnamed_addr constant [2 x i8] c" \00" -@.str.261 = private unnamed_addr constant [2 x i8] c" \00" -@.str.262 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.263 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.264 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.265 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.266 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.267 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.268 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.269 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.270 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.271 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.272 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.273 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.274 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.275 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.276 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.277 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.278 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.279 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.280 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.281 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.282 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.283 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.284 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.285 = private unnamed_addr constant [2 x i8] c":\00" -@.str.286 = private unnamed_addr constant [2 x i8] c":\00" -@.str.287 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.288 = private unnamed_addr constant [1 x i8] c"\00" -@.str.289 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.290 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.291 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.292 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.293 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.294 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.295 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.296 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.297 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.298 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.299 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.300 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.301 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.302 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.303 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.304 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.305 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.306 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.307 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.308 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.310 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.311 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.312 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.313 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.315 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.316 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.317 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.318 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.319 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.322 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.323 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.324 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.325 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.326 = private unnamed_addr constant [3 x i8] c"+=\00" -@.str.327 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str.328 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str.329 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str.330 = private unnamed_addr constant [3 x i8] c"%=\00" -@.str.331 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.332 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.333 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.335 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.336 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.338 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.340 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.341 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.342 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" -@.str.343 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.344 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.345 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.347 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.349 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.350 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.351 = private unnamed_addr constant [1 x i8] c"\00" -@.str.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.353 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.354 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.355 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.356 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00" -@.str.357 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.358 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.359 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.360 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.361 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.362 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.369 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.370 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.371 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.372 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.373 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.374 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.375 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.376 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.377 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.378 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.379 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.381 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.382 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.383 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.384 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.385 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.386 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.387 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.388 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.389 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.390 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.391 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.392 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" -@.str.393 = private unnamed_addr constant [1 x i8] c"\00" -@.str.394 = private unnamed_addr constant [1 x i8] c"\00" -@.str.395 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.396 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.398 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.399 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.400 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.401 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.402 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.403 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.404 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.406 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.407 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.408 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.409 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.410 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.411 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.415 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.416 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.418 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.420 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.421 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.422 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.423 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.424 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.425 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.426 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.427 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.428 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.429 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.430 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.431 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.432 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.434 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.435 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.436 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.442 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.443 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.444 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.445 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.446 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.448 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.449 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.450 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.451 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.452 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.453 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.454 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.455 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.456 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.457 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.458 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.459 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.460 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.461 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.465 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.466 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.467 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.468 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.469 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.470 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.471 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.472 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.473 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.474 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.475 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.476 = private unnamed_addr constant [1 x i8] c"\00" -@.str.477 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.478 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.479 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" -@.str.480 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" -@.str.481 = private unnamed_addr constant [1 x i8] c"\00" -@.str.482 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" -@.str.483 = private unnamed_addr constant [1 x i8] c"\00" -@.str.484 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00" -@.str.485 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" -@.str.486 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.487 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.488 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.489 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.491 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.492 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.493 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.494 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.495 = private unnamed_addr constant [1 x i8] c"\00" -@.str.496 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.497 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.498 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.499 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.500 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.501 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.502 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.503 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.504 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.506 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.507 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.508 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.509 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.510 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.511 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.512 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.513 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.514 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.516 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.517 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.518 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.519 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.520 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.521 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.522 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.523 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.524 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.525 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.527 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.528 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.529 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.530 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.531 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.532 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.533 = private unnamed_addr constant [2 x i8] c".\00" -@.str.534 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.535 = private unnamed_addr constant [8 x i8] c"nothing\00" -@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.537 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.538 = private unnamed_addr constant [2 x i8] c":\00" -@.str.539 = private unnamed_addr constant [2 x i8] c":\00" -@.str.540 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.541 = private unnamed_addr constant [1 x i8] c"\00" -@.str.542 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.545 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.546 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.547 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.548 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.549 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.550 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.553 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.554 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.555 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.556 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.557 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.558 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.559 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.560 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.561 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.562 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.563 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.564 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.565 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.566 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.567 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.568 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.569 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.570 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.571 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.572 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.573 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.574 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.575 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.576 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.577 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.578 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.579 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.580 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.581 = private unnamed_addr constant [12 x i8] c"end of file\00" -@.str.582 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.583 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.584 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.585 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.586 = private unnamed_addr constant [9 x i8] c"a string\00" -@.str.587 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.588 = private unnamed_addr constant [7 x i8] c"a char\00" -@.str.589 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.590 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.591 = private unnamed_addr constant [10 x i8] c"expected \00" -@.str.592 = private unnamed_addr constant [9 x i8] c", found \00" -@.str.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.594 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.595 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.596 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.597 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.598 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.599 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.600 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.601 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.602 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.603 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.604 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.605 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.606 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.607 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.608 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.609 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.610 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.611 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.612 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.613 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.614 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.615 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.616 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.617 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.618 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.619 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.620 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.621 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.622 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.623 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.624 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.625 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" -@.str.626 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.627 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.628 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" -@.str.629 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.630 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.631 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.632 = private unnamed_addr constant [40 x i8] c"']' (a map type looks like map[str]int)\00" -@.str.633 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.634 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.635 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.636 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.637 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.638 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.639 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.640 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.641 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.642 = private unnamed_addr constant [2 x i8] c".\00" -@.str.643 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.644 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.645 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.646 = private unnamed_addr constant [2 x i8] c",\00" -@.str.647 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.648 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.649 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.650 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.651 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.652 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.653 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.654 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.655 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.656 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.657 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.658 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.659 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.660 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.661 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.662 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.663 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.664 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.666 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.667 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.668 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.669 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.670 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.671 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.672 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.673 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.674 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.675 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.676 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.677 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.678 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.679 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.680 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.681 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.682 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.683 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.684 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.685 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.686 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.687 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.688 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.689 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.690 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.691 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.692 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.693 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.694 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.695 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.696 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.697 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.698 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.699 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.700 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.701 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.703 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.705 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.706 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.707 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.708 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.709 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.710 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.711 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.712 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.714 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.715 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.716 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.717 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.718 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.719 = private unnamed_addr constant [2 x i8] c".\00" -@.str.720 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.721 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.723 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.725 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.726 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.727 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.728 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.729 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.730 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" -@.str.731 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.732 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.733 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.735 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.736 = private unnamed_addr constant [2 x i8] c":\00" -@.str.737 = private unnamed_addr constant [2 x i8] c":\00" -@.str.738 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.739 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" -@.str.740 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.741 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.742 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" -@.str.743 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.744 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.745 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.746 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.747 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.748 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.749 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.750 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.751 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.752 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.753 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.754 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.755 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" -@.str.756 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.757 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.758 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.759 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.760 = private unnamed_addr constant [7 x i8] c"'enum'\00" -@.str.761 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.762 = private unnamed_addr constant [13 x i8] c"an enum name\00" -@.str.763 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.764 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.765 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.766 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.767 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" -@.str.768 = private unnamed_addr constant [8 x i8] c"variant\00" -@.str.769 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.770 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" -@.str.771 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.772 = private unnamed_addr constant [2 x i8] c")\00" -@.str.773 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.774 = private unnamed_addr constant [2 x i8] c",\00" -@.str.775 = private unnamed_addr constant [2 x i8] c")\00" -@.str.776 = private unnamed_addr constant [36 x i8] c"')' after the values of the variant\00" -@.str.777 = private unnamed_addr constant [13 x i8] c"the variant \00" -@.str.778 = private unnamed_addr constant [28 x i8] c" has empty () : write just \00" -@.str.779 = private unnamed_addr constant [21 x i8] c" if it holds nothing\00" -@.str.780 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.781 = private unnamed_addr constant [53 x i8] c"a variant can't have both values inside and a number\00" -@.str.782 = private unnamed_addr constant [1 x i8] c"\00" -@.str.783 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.784 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.785 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.786 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" -@.str.787 = private unnamed_addr constant [2 x i8] c",\00" -@.str.788 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.789 = private unnamed_addr constant [17 x i8] c" has no variants\00" -@.str.790 = private unnamed_addr constant [55 x i8] c"an enum whose variants hold values can't number them (\00" -@.str.791 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.793 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.794 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.795 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.796 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.797 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.798 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.799 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.800 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.801 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.802 = private unnamed_addr constant [8 x i8] c"'match'\00" -@.str.803 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.804 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.805 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.806 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.807 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.808 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\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 [38 x i8] c"a match is never closed (missing '}')\00" -@.str.812 = private unnamed_addr constant [4 x i8] c"arm\00" -@.str.813 = private unnamed_addr constant [9 x i8] c"patterns\00" -@.str.814 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.815 = private unnamed_addr constant [2 x i8] c",\00" -@.str.816 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.817 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00" -@.str.818 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.819 = private unnamed_addr constant [2 x i8] c",\00" -@.str.820 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.821 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.822 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" -@.str.823 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.824 = private unnamed_addr constant [4 x i8] c"'['\00" -@.str.825 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.826 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" -@.str.827 = private unnamed_addr constant [2 x i8] c",\00" -@.str.828 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.829 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" -@.str.830 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.831 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.832 = private unnamed_addr constant [9 x i8] c"'struct'\00" -@.str.833 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.834 = private unnamed_addr constant [14 x i8] c"a struct name\00" -@.str.835 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.836 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.837 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.838 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.839 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.840 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" -@.str.841 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.842 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.843 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" -@.str.844 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.845 = private unnamed_addr constant [13 x i8] c"a field name\00" -@.str.846 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.847 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.848 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.849 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.850 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" -@.str.851 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.852 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" -@.str.853 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.854 = private unnamed_addr constant [16 x i8] c"a function name\00" -@.str.855 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.856 = private unnamed_addr constant [2 x i8] c".\00" -@.str.857 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.858 = private unnamed_addr constant [14 x i8] c"a method name\00" -@.str.859 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.860 = private unnamed_addr constant [4 x i8] c"'('\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 [2 x i8] c")\00" -@.str.864 = private unnamed_addr constant [6 x i8] c"param\00" -@.str.865 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.866 = private unnamed_addr constant [17 x i8] c"a parameter name\00" -@.str.867 = private unnamed_addr constant [2 x i8] c",\00" -@.str.868 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.869 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.870 = private unnamed_addr constant [2 x i8] c")\00" -@.str.871 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.872 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.873 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.874 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.875 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.876 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.877 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.878 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" -@.str.879 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.880 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.881 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.882 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.883 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.884 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.885 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.886 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.887 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.888 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.889 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" -@.str.890 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.891 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.892 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.893 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.894 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.895 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.896 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.897 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.898 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" -@.str.899 = private unnamed_addr constant [2 x i8] c",\00" -@.str.900 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.901 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" -@.str.902 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.903 = private unnamed_addr constant [5 x i8] c"'in'\00" -@.str.904 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.905 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" -@.str.906 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.907 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.908 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.909 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.910 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.911 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.912 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.913 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.914 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.915 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.916 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.917 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.918 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.919 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.920 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.921 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.922 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.923 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" -@.str.924 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.925 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.926 = private unnamed_addr constant [16 x i8] c"a variable name\00" -@.str.927 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.928 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.929 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.930 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.931 = private unnamed_addr constant [2 x i8] c"=\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 [3 x i8] c"%=\00" -@.str.937 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.938 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.939 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.940 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" -@.str.941 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.942 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.943 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.944 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.945 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.946 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.947 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.948 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" -@.str.949 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.950 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.951 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.952 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.953 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.954 = private unnamed_addr constant [5 x i8] c"'if'\00" -@.str.955 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.956 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.957 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.958 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.959 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.960 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.961 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.962 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.963 = private unnamed_addr constant [2 x i8] c">\00" -@.str.964 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.965 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.966 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.967 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.968 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.969 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.970 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.971 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.972 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.973 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.974 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.975 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.976 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.977 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.978 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.979 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.980 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.981 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.982 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.983 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.984 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.986 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.987 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.988 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.989 = private unnamed_addr constant [2 x i8] c")\00" -@.str.990 = private unnamed_addr constant [2 x i8] c")\00" -@.str.991 = private unnamed_addr constant [1 x i8] c"\00" -@.str.992 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.993 = private unnamed_addr constant [2 x i8] c":\00" -@.str.994 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.995 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" -@.str.996 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.997 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" -@.str.998 = private unnamed_addr constant [2 x i8] c",\00" -@.str.999 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1000 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1001 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1002 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1003 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1004 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.1005 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1006 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" -@.str.1007 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1008 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1009 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1010 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.1011 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1012 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1013 = private unnamed_addr constant [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"']'\00" -@.str.1017 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1018 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1019 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1021 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.1022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1023 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1024 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1025 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1026 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1027 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1028 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1029 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1030 = private unnamed_addr constant [30 x i8] c"used .depth 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 [30 x i8] c"used .depth on a null pointer\00" -@.str.1033 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1034 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1035 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.1036 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1037 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1038 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1039 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1040 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1041 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1042 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1043 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1044 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1045 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1046 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1047 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1048 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" -@.str.1049 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1050 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1051 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1052 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1053 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.1054 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1055 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1056 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1057 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.1058 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1059 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.1060 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1061 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1062 = private unnamed_addr constant [6 x i8] c"targs\00" -@.str.1063 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1064 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1065 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.1066 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1067 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1068 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1069 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.1070 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.1071 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" -@.str.1072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1073 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1074 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.1075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1076 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1077 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.1078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1079 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1080 = private unnamed_addr constant [2 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 [12 x i8] c"src/gen.fch\00" -@.str.1084 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1085 = private unnamed_addr constant [4 x i8] c"@R\09\00" -@.str.1086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1087 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1089 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1090 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1091 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1092 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1093 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1094 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1095 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1097 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1099 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1100 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1101 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1102 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1103 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1104 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1105 = private unnamed_addr constant [6 x i8] c" -> !\00" -@.str.1106 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1107 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.1108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1109 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1111 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1112 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1114 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1117 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.1118 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.1119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1120 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1123 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1124 = private unnamed_addr constant [4 x i8] c"@I\09\00" -@.str.1125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1126 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1128 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1132 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1135 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1136 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1141 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1143 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1146 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1147 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1148 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.1149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1150 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1152 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.1156 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1157 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1162 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1164 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1165 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1166 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1167 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1168 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1169 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1170 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1171 = private unnamed_addr constant [7 x i8] c"](...)\00" -@.str.1172 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1174 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1176 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"@S\09\00" -@.str.1182 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1183 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1185 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [28 x i8] c"used .idx on a null pointer\00" -@.str.1191 = private unnamed_addr constant [5 x i8] c"@SF\09\00" -@.str.1192 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1193 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1195 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1198 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 .progs 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 [1 x i8] c"\00" -@.str.1203 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1204 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1205 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1206 = private unnamed_addr constant [4 x i8] c"@E\09\00" -@.str.1207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1208 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1210 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1211 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1213 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1215 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1216 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1217 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1219 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1221 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1223 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1225 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1226 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1227 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1229 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c":\00" -@.str.1232 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1233 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.1234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1235 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.1236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1240 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1242 = private unnamed_addr constant [6 x i8] c"call \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 .body on a null pointer\00" -@.str.1245 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1246 = private unnamed_addr constant [9 x i8] c", !dbg !\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 .body on a null pointer\00" -@.str.1249 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1251 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1252 = private unnamed_addr constant [3 x i8] c"%t\00" -@.str.1253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1254 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1256 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1258 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1260 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1261 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1263 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1265 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1266 = private unnamed_addr constant [11 x i8] c"br label %\00" -@.str.1267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1268 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1269 = private unnamed_addr constant [7 x i8] c"br i1 \00" -@.str.1270 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1271 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1273 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1275 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1276 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1278 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1280 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1281 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1282 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str.1283 = private unnamed_addr constant [11 x i8] c", align 16\00" -@.str.1284 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str.1285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1286 = private unnamed_addr constant [7 x i8] c"store \00" -@.str.1287 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1288 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1289 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.1290 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1291 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1292 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1293 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1294 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1295 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1296 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1297 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1298 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1299 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1300 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1301 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1302 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1303 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1304 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1305 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1306 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1307 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1308 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1311 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1313 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1316 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1319 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1321 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1324 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1327 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1329 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1332 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.1335 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1337 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1340 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1344 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1346 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1347 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1348 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1349 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1350 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1351 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1352 = 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.1353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1354 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1355 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" -@.str.1356 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1357 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1359 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1361 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.1362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1363 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1365 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.1366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1367 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1370 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1371 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1372 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1373 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1374 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1375 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1376 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" -@.str.1377 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1378 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1379 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1381 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1382 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1383 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1385 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1386 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1387 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1388 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1389 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" -@.str.1390 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1391 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1393 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1394 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1396 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1397 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.1402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1403 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1404 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.1405 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1406 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1407 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1408 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.1409 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1410 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.1411 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1412 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1413 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1414 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1415 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1416 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1417 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" -@.str.1418 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1419 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1420 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.1421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1422 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1423 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1424 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1425 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1426 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1427 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1428 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1429 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1430 = private unnamed_addr constant [4 x i8] c"%S.\00" -@.str.1431 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1432 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1434 = private unnamed_addr constant [7 x i8] c"{ i1, \00" -@.str.1435 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" -@.str.1436 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1437 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1438 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1439 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1440 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1441 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1442 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1443 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1444 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.1445 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1446 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1447 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1448 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1449 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.1450 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.1451 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1452 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1453 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1454 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1455 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1456 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1458 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1459 = private unnamed_addr constant [5 x i8] c"arr_\00" -@.str.1460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1461 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1462 = private unnamed_addr constant [5 x i8] c"map_\00" -@.str.1463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1464 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1466 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1467 = private unnamed_addr constant [3 x i8] c"E_\00" -@.str.1468 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1469 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1470 = private unnamed_addr constant [3 x i8] c"S_\00" -@.str.1471 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1472 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.1473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1476 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1477 = private unnamed_addr constant [7 x i8] c"@.str.\00" -@.str.1478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1479 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1480 = private unnamed_addr constant [2 x i8] c"\5C\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 .head on a null pointer\00" -@.str.1483 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str.1484 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str.1485 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1486 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" -@.str.1487 = private unnamed_addr constant [7 x i8] c"{ ptr \00" -@.str.1488 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1489 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" -@.str.1490 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1491 = private unnamed_addr constant [6 x i8] c"panic\00" -@.str.1492 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str.1493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1494 = private unnamed_addr constant [30 x i8] c"used .files 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 [28 x i8] c"call void @finch_panic(ptr \00" -@.str.1497 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1498 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1499 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1500 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1502 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1503 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.1504 = private unnamed_addr constant [8 x i8] c"inrange\00" -@.str.1505 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" -@.str.1506 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1508 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1510 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" -@.str.1511 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1512 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1513 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1514 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1515 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1517 = private unnamed_addr constant [29 x i8] c"used .term 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 .body 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 [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.1526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1527 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1529 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1531 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1533 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1535 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1537 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1539 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.1540 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.1541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1542 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1544 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1546 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1547 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1548 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.1549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1550 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1552 = private unnamed_addr constant [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp on a null pointer\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 .term 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 [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1559 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1560 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1561 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1562 = private unnamed_addr constant [7 x i8] c"n.cond\00" -@.str.1563 = private unnamed_addr constant [7 x i8] c"n.body\00" -@.str.1564 = private unnamed_addr constant [6 x i8] c"n.end\00" -@.str.1565 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1566 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.1567 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1568 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1570 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1571 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.1572 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1576 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1577 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.1578 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1579 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1580 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1581 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1582 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1583 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1584 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1585 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1586 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1587 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" -@.str.1588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1589 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1591 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1592 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1594 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1595 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1596 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1597 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1598 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1599 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1600 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1601 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" -@.str.1602 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1603 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1604 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1606 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1607 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1608 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1610 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1611 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1615 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1616 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1617 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" -@.str.1618 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1620 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1622 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1623 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1624 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1625 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1626 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1627 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1628 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.1629 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1633 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1635 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1636 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1638 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1639 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" -@.str.1640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1642 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" -@.str.1643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1645 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1646 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1647 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" -@.str.1648 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1649 = private unnamed_addr constant [31 x i8] c"call void @finch_str_drop(ptr \00" -@.str.1650 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1651 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1652 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1653 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1655 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.1656 = private unnamed_addr constant [13 x i8] c"@finch.drop.\00" -@.str.1657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1658 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1660 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1661 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1663 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1664 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1665 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1666 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1667 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1668 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1670 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1671 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_free(ptr %a)\00" -@.str.1672 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1676 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1677 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1678 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1680 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1681 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1682 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1683 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1685 = private unnamed_addr constant [34 x i8] c"call void @finch_map_free(ptr %a)\00" -@.str.1686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1690 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1691 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1694 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1695 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1696 = private unnamed_addr constant [9 x i8] c"(ptr %a)\00" -@.str.1697 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1698 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1699 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1700 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1702 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1704 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1707 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1709 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1710 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1711 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.1712 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1713 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1714 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" -@.str.1715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1716 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1717 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1718 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1719 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1720 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1721 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1722 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1723 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1724 = private unnamed_addr constant [5 x i8] c"%lld\00" -@.str.1725 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1726 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1727 = private unnamed_addr constant [5 x i8] c"%llu\00" -@.str.1728 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1729 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1730 = private unnamed_addr constant [3 x i8] c"%g\00" -@.str.1731 = private unnamed_addr constant [8 x i8] c"double \00" -@.str.1732 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1733 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1734 = private unnamed_addr constant [9 x i8] c"sext i8 \00" -@.str.1735 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1736 = private unnamed_addr constant [5 x i8] c"'%c'\00" -@.str.1737 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1738 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.1739 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1740 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1741 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1742 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1743 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1744 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1745 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1746 = private unnamed_addr constant [3 x i8] c"%s\00" -@.str.1747 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.1748 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1749 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1750 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1751 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.1752 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1753 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" -@.str.1754 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1755 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1756 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1757 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1758 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1759 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1760 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1761 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1762 = private unnamed_addr constant [9 x i8] c"ptr.null\00" -@.str.1763 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" -@.str.1764 = private unnamed_addr constant [9 x i8] c"ptr.done\00" -@.str.1765 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1766 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1767 = private unnamed_addr constant [7 x i8] c"0x%llx\00" -@.str.1768 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1769 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.1770 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1771 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1772 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1773 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1774 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1775 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1776 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1777 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" -@.str.1778 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1779 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" -@.str.1780 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1781 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1782 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1783 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1784 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.1785 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" -@.str.1786 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1787 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1788 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1789 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" -@.str.1790 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1791 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1793 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" -@.str.1794 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.1795 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1796 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1797 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1798 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" -@.str.1799 = private unnamed_addr constant [6 x i8] c", i8 \00" -@.str.1800 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1801 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1802 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1803 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" -@.str.1804 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1805 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.1806 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1807 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1808 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1809 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" -@.str.1810 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1811 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1812 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1813 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1814 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1815 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" -@.str.1816 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1817 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1818 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1819 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1820 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1821 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1822 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" -@.str.1823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1824 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1826 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1827 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1830 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1831 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1832 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1833 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1834 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1835 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1836 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1837 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.1838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1839 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1840 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1841 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1842 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1843 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1844 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1846 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1847 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1848 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1849 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1851 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1853 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1854 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1855 = private unnamed_addr constant [11 x i8] c"enum.other\00" -@.str.1856 = private unnamed_addr constant [10 x i8] c"enum.done\00" -@.str.1857 = private unnamed_addr constant [7 x i8] c"enum.v\00" -@.str.1858 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1860 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1862 = private unnamed_addr constant [12 x i8] c"switch i32 \00" -@.str.1863 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1864 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1865 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1866 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1868 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1870 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1872 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1873 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1874 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" -@.str.1875 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str.1876 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1877 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1878 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1879 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1880 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1881 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1882 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1883 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1884 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1885 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.1886 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1887 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1888 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1889 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1891 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1892 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1893 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1894 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1895 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1896 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1897 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1898 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1899 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1900 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1901 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1902 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1903 = private unnamed_addr constant [5 x i8] c"%buf\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 [5 x i8] c"%buf\00" -@.str.1907 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1908 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1911 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1912 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.1913 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1915 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1918 = private unnamed_addr constant [32 x i8] c"used .structs 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 [4 x i8] c"i64\00" -@.str.1921 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1922 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1924 = private unnamed_addr constant [10 x i8] c"sum.other\00" -@.str.1925 = private unnamed_addr constant [9 x i8] c"sum.done\00" -@.str.1926 = private unnamed_addr constant [6 x i8] c"sum.v\00" -@.str.1927 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1928 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1930 = private unnamed_addr constant [12 x i8] c"switch i64 \00" -@.str.1931 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1932 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1934 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1936 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1938 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1940 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1941 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1942 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1944 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1945 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1947 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1948 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1950 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1953 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1954 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1955 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1956 = private unnamed_addr constant [4 x i8] c"(?)\00" -@.str.1957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1958 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1960 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1961 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1962 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1963 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1964 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1966 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1967 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1968 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1970 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1973 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1974 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1976 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1977 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" -@.str.1978 = private unnamed_addr constant [7 x i8] c"trunc \00" -@.str.1979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1980 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1981 = private unnamed_addr constant [6 x i8] c"sext \00" -@.str.1982 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1983 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1984 = private unnamed_addr constant [6 x i8] c"zext \00" -@.str.1985 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1986 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1987 = private unnamed_addr constant [7 x i8] c"fpext \00" -@.str.1988 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1989 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1990 = private unnamed_addr constant [9 x i8] c"fptrunc \00" -@.str.1991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1992 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1993 = private unnamed_addr constant [8 x i8] c"sitofp \00" -@.str.1994 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1995 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1996 = private unnamed_addr constant [8 x i8] c"uitofp \00" -@.str.1997 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1998 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1999 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2000 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2001 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2002 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2003 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2004 = private unnamed_addr constant [12 x i8] c"the number \00" -@.str.2005 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" -@.str.2006 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2007 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.2008 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2009 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2010 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2011 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2012 = private unnamed_addr constant [10 x i8] c" must be \00" -@.str.2013 = private unnamed_addr constant [15 x i8] c", but this is \00" -@.str.2014 = private unnamed_addr constant [7 x i8] c" (use \00" -@.str.2015 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" -@.str.2016 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" -@.str.2017 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2018 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2019 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2021 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" -@.str.2022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2023 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2034 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [12 x i8] c"src/gen.fch\00" -@.str.2039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2040 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 [12 x i8] c"src/gen.fch\00" -@.str.2045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2046 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2048 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2051 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2054 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2057 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2059 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2062 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2065 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2067 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.2068 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.2069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2070 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2071 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2072 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2073 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2074 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.2075 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.2076 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.2077 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.2078 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.2079 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.2080 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.2081 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.2082 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2083 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.2084 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2085 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2086 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2087 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2088 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2089 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2090 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2091 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.2092 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2093 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.2094 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.2095 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2096 = private unnamed_addr constant [19 x i8] c"a variable named '\00" -@.str.2097 = private unnamed_addr constant [22 x i8] c"' already exists here\00" -@.str.2098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2099 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2100 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2101 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" -@.str.2102 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2103 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" -@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2105 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2107 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2110 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2116 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2118 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2121 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2123 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.2124 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2126 = private unnamed_addr constant [2 x i8] c"$\00" -@.str.2127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2128 = private unnamed_addr constant [30 x i8] c"used .progs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.2131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2133 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .idx on a null pointer\00" -@.str.2137 = private unnamed_addr constant [4 x i8] c"@V\09\00" -@.str.2138 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2139 = private unnamed_addr constant [2 x i8] c"\09\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 .files 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 [2 x i8] c"\09\00" -@.str.2144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2147 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2149 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2150 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2151 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.2152 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2153 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.2154 = private unnamed_addr constant [1 x i8] c"\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 .scopes on a null pointer\00" -@.str.2157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2158 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2160 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2162 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2164 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2166 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2169 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2173 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2177 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2179 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2181 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2182 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2183 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2187 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2191 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2195 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2197 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2199 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2201 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2202 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.2203 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.2204 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2206 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2207 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.2208 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.2209 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.2210 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.2211 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.2212 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.2213 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.2214 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.2215 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.2216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2217 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.2218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2219 = private unnamed_addr constant [27 x i8] c"used .mm 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 [5 x i8] c"call\00" -@.str.2222 = private unnamed_addr constant [5 x i8] c"addr\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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2227 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2230 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2232 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2235 = private unnamed_addr constant [30 x i8] c"used .progs 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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2243 = private unnamed_addr constant [13 x i8] c"the struct '\00" -@.str.2244 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2246 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2248 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2250 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2252 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2254 = private unnamed_addr constant [30 x i8] c"used .progs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2259 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2261 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2264 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2271 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2272 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2274 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2275 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2276 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2277 = private unnamed_addr constant [7 x i8] c" twice\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 .sums 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2283 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2284 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2285 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2287 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2289 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2290 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2291 = private unnamed_addr constant [7 x i8] c" twice\00" -@.str.2292 = private unnamed_addr constant [17 x i8] c"two variants of \00" -@.str.2293 = private unnamed_addr constant [18 x i8] c" have the number \00" -@.str.2294 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" -@.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2296 = private unnamed_addr constant [30 x i8] c"used .enums 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.2299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2300 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2301 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2303 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2306 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2308 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2310 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2313 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2315 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2318 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2322 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2323 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2324 = private unnamed_addr constant [19 x i8] c"' is defined twice\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 [1 x i8] c"\00" -@.str.2328 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2329 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" -@.str.2330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2331 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2333 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2335 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2337 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2338 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2339 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2340 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2343 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2344 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2345 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2346 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" -@.str.2347 = 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.2348 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2349 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2350 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2352 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2354 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2355 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" -@.str.2356 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2358 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2359 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2360 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2361 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2362 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" -@.str.2363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2364 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2365 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2367 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2368 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2369 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2371 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2372 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2373 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2375 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2377 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" -@.str.2378 = private unnamed_addr constant [25 x i8] c" the method is called on\00" -@.str.2379 = 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 [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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2385 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2390 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2393 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2395 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2399 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"self\00" -@.str.2403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2405 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2408 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.2409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2410 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2413 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2415 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2418 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [5 x i8] c"self\00" -@.str.2422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2424 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2427 = private unnamed_addr constant [27 x i8] c"used .mm 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 [29 x i8] c"used .sigs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2433 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2437 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.2442 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2445 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2449 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2452 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [34 x i8] c"used .templates 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 [34 x i8] c"used .templates on a null pointer\00" -@.str.2459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2460 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2461 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2462 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2463 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" -@.str.2464 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" -@.str.2465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2466 = private unnamed_addr constant [34 x i8] c"used .templates 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 [8 x i8] c" takes \00" -@.str.2469 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" -@.str.2470 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2471 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2472 = private unnamed_addr constant [12 x i8] c"], but got \00" -@.str.2473 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2474 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2476 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [7 x i8] c"struct\00" -@.str.2480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2481 = private unnamed_addr constant [34 x i8] c"used .templates 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 [2 x i8] c"[\00" -@.str.2484 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2486 = private unnamed_addr constant [30 x i8] c"used .progs 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 [8 x i8] c"@finch.\00" -@.str.2490 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2491 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2492 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2493 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2494 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2496 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.2500 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2502 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2504 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2506 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2508 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2509 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2510 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2512 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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 [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .tnames 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 [30 x i8] c"used .targs on a null pointer\00" -@.str.2522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2523 = private unnamed_addr constant [31 x i8] c"used .module 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2527 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2529 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2530 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2532 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2535 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" -@.str.2536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2538 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2540 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2541 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2542 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2545 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2546 = private unnamed_addr constant [4 x i8] c"map\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 [12 x i8] c"src/gen.fch\00" -@.str.2550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2551 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2552 = private unnamed_addr constant [7 x i8] c"struct\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 [12 x i8] c"src/gen.fch\00" -@.str.2558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2559 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2562 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2565 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2566 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" -@.str.2567 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2568 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2569 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2570 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2572 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.2573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2574 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2575 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2577 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" -@.str.2578 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2579 = private unnamed_addr constant [6 x i8] c" from\00" -@.str.2580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2582 = private unnamed_addr constant [17 x i8] c"can't tell what \00" -@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2584 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" -@.str.2585 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.2586 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2588 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2593 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.2594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2595 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2596 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2597 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2599 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2601 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2605 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2607 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2608 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2609 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2611 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2614 = private unnamed_addr constant [32 x i8] c"used .structs 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 .structs on a null pointer\00" -@.str.2618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2620 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2622 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2623 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2624 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2625 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2627 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" -@.str.2628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2629 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2632 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2635 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2638 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2641 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2642 = private unnamed_addr constant [6 x i8] c"%S.C.\00" -@.str.2643 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2644 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2645 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2647 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2650 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2653 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2656 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2658 = private unnamed_addr constant [30 x i8] c"used .targs 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2662 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2665 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2667 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2670 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2671 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2673 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2675 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2676 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2677 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2679 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2681 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2683 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2685 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2691 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2695 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2697 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2698 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" -@.str.2699 = private unnamed_addr constant [8 x i8] c"] or []\00" -@.str.2700 = private unnamed_addr constant [16 x i8] c" for that field\00" -@.str.2701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2702 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2705 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2707 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2710 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2711 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2712 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2713 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2716 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2717 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2718 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2719 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2722 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2726 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2728 = private unnamed_addr constant [31 x i8] c"used .module 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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2733 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2734 = private unnamed_addr constant [4 x i8] c"%S.\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 .structs on a null pointer\00" -@.str.2737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2738 = private unnamed_addr constant [2 x i8] c".\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 .structs on a null pointer\00" -@.str.2741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2742 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2743 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2744 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2746 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2747 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2748 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2749 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2750 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2752 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.2753 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2754 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2755 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2756 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2757 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2758 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2759 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2760 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2761 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2762 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2763 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2764 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2765 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2766 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2768 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2770 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2772 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" -@.str.2773 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2774 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2775 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2776 = private unnamed_addr constant [13 x i8] c", baseType: \00" -@.str.2777 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2778 = private unnamed_addr constant [11 x i8] c", offset: \00" -@.str.2779 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2780 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2781 = private unnamed_addr constant [10 x i8] c"\22, size: \00" -@.str.2782 = private unnamed_addr constant [13 x i8] c", encoding: \00" -@.str.2783 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2784 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2785 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2786 = private unnamed_addr constant [3 x i8] c"T:\00" -@.str.2787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2788 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2790 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2792 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2793 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2795 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2796 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2797 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" -@.str.2798 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2799 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2800 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" -@.str.2801 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2802 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2803 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2804 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2805 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2806 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2807 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2808 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2809 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2810 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" -@.str.2811 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2812 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2814 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.2815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2816 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" -@.str.2817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2818 = private unnamed_addr constant [11 x i8] c"\22, value: \00" -@.str.2819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2820 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2821 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" -@.str.2822 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2823 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" -@.str.2824 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2825 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2826 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2828 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2831 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2832 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2834 = private unnamed_addr constant [27 x i8] c"used .md 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 [6 x i8] c"fixed\00" -@.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2838 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" -@.str.2839 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2840 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" -@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2842 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2843 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" -@.str.2844 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2846 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2848 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2849 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2850 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2851 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2853 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2854 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2855 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2856 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2857 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2858 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2859 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2860 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2861 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" -@.str.2862 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2863 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2864 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2866 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2868 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2869 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2870 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" -@.str.2871 = private unnamed_addr constant [8 x i8] c"entries\00" -@.str.2872 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2873 = private unnamed_addr constant [5 x i8] c"used\00" -@.str.2874 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2875 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2876 = private unnamed_addr constant [5 x i8] c"icap\00" -@.str.2877 = private unnamed_addr constant [5 x i8] c"adds\00" -@.str.2878 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2880 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2881 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2882 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" -@.str.2883 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2884 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2886 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2888 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2890 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2897 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2898 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2899 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2900 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" -@.str.2901 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2902 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2904 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2906 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2907 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" -@.str.2908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2909 = private unnamed_addr constant [27 x i8] c"used .md 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 [12 x i8] c"src/gen.fch\00" -@.str.2912 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2913 = private unnamed_addr constant [3 x i8] c"L:\00" -@.str.2914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2915 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2916 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2918 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2919 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2921 = private unnamed_addr constant [33 x i8] c"used .dbgScope 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 [32 x i8] c"used .mdcache 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 [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2926 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2927 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" -@.str.2928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2929 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2930 = private unnamed_addr constant [11 x i8] c", column: \00" -@.str.2931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2932 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2933 = private unnamed_addr constant [11 x i8] c", scope: !\00" -@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2935 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2936 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2938 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2940 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2941 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2942 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2943 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2945 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" -@.str.2946 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2947 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2948 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" -@.str.2949 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" -@.str.2950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2951 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2952 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2953 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2954 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2955 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" -@.str.2956 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" -@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2958 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2960 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2961 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2962 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2963 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2964 = private unnamed_addr constant [8 x i8] c", arg: \00" -@.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2966 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2967 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" -@.str.2968 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2970 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2971 = private unnamed_addr constant [10 x i8] c", file: !\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 .mdfiles 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 [9 x i8] c", line: \00" -@.str.2976 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2977 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2979 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2981 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2982 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" -@.str.2983 = private unnamed_addr constant [13 x i8] c", metadata !\00" -@.str.2984 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" -@.str.2985 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" -@.str.2986 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" -@.str.2987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2988 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2989 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2990 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.2991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2992 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2994 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2995 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2997 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3002 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3004 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.3005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3006 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3008 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3010 = private unnamed_addr constant [28 x i8] c"used .cur 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 .targs on a null pointer\00" -@.str.3013 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3015 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3017 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3018 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.3019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3020 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3021 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3023 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3025 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3027 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3030 = private unnamed_addr constant [28 x i8] c"used .cur 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 [29 x i8] c"used .body 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 [32 x i8] c"used .allocas on a null pointer\00" -@.str.3036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3037 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.3040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3041 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3043 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3045 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3047 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3049 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3051 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3053 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3055 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3057 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3059 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3060 = private unnamed_addr constant [10 x i8] c"ptr %self\00" -@.str.3061 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3063 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3064 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3066 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3068 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3070 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3072 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3073 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3075 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3076 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3077 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3079 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3081 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3083 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str.3084 = private unnamed_addr constant [3 x i8] c"%p\00" -@.str.3085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3086 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3089 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3091 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3093 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3096 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3099 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3102 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3105 = private unnamed_addr constant [29 x i8] c"used .term 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3109 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.3110 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" -@.str.3111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3112 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3115 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3117 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3118 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3119 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3120 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3121 = private unnamed_addr constant [8 x i8] c" !dbg !\00" -@.str.3122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3123 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.3126 = private unnamed_addr constant [17 x i8] c"define internal \00" -@.str.3127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3128 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3129 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3131 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3132 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.3133 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3134 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3135 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.3136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3137 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.3138 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3139 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3141 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.3142 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3143 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.3144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3145 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3146 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00" -@.str.3147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3148 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3150 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3151 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3152 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.3153 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.3154 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.3155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3156 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3159 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3160 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.3161 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3162 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3163 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3164 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.3165 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3167 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3168 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.3169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3170 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3172 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3175 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3178 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3182 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3185 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3186 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3187 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.3188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3190 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" -@.str.3191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3192 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3193 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" -@.str.3194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3195 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3197 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3199 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3200 = private unnamed_addr constant [19 x i8] c"unknown statement \00" -@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3202 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3204 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" -@.str.3205 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3207 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" -@.str.3208 = private unnamed_addr constant [8 x i8] c" = null\00" -@.str.3209 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3212 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3213 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3215 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.3216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3218 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3222 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3223 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.3224 = private unnamed_addr constant [19 x i8] c"' (create it with \00" -@.str.3225 = private unnamed_addr constant [9 x i8] c" := ...)\00" -@.str.3226 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.3227 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.3228 = private unnamed_addr constant [10 x i8] c"the value\00" -@.str.3229 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3230 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3231 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3232 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.3233 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3234 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3236 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3238 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3242 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3244 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3245 = private unnamed_addr constant [12 x i8] c"a condition\00" -@.str.3246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3247 = private unnamed_addr constant [5 x i8] c"then\00" -@.str.3248 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.3249 = private unnamed_addr constant [6 x i8] c"endif\00" -@.str.3250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3252 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3255 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3256 = private unnamed_addr constant [11 x i8] c"while.cond\00" -@.str.3257 = private unnamed_addr constant [11 x i8] c"while.body\00" -@.str.3258 = private unnamed_addr constant [10 x i8] c"while.end\00" -@.str.3259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3260 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3262 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3265 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3267 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3269 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3271 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3273 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3275 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3276 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3277 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3278 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3279 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3281 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3283 = private unnamed_addr constant [21 x i8] c"the start of a range\00" -@.str.3284 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3285 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3287 = private unnamed_addr constant [19 x i8] c"the end of a range\00" -@.str.3288 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3289 = private unnamed_addr constant [9 x i8] c"for.cond\00" -@.str.3290 = private unnamed_addr constant [9 x i8] c"for.body\00" -@.str.3291 = private unnamed_addr constant [9 x i8] c"for.step\00" -@.str.3292 = private unnamed_addr constant [8 x i8] c"for.end\00" -@.str.3293 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3294 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3295 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3297 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3299 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3301 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3304 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3306 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3307 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3308 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3309 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3310 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3315 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3316 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3317 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3319 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3320 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3321 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3322 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.3323 = private unnamed_addr constant [9 x i8] c"map.cond\00" -@.str.3324 = private unnamed_addr constant [10 x i8] c"map.check\00" -@.str.3325 = private unnamed_addr constant [9 x i8] c"map.body\00" -@.str.3326 = private unnamed_addr constant [9 x i8] c"map.step\00" -@.str.3327 = private unnamed_addr constant [8 x i8] c"map.end\00" -@.str.3328 = private unnamed_addr constant [12 x i8] c"map.changed\00" -@.str.3329 = private unnamed_addr constant [9 x i8] c"map.same\00" -@.str.3330 = private unnamed_addr constant [4 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 [15 x i8] c", i32 0, i32 6\00" -@.str.3334 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3335 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3336 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" -@.str.3337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3338 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3340 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3342 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3344 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3345 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3346 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3347 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3349 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3350 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3351 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3352 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3353 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3354 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3356 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3358 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3360 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3363 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3365 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3366 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3367 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3368 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3369 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3371 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3372 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3373 = private unnamed_addr constant [6 x i8] c"$list\00" -@.str.3374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3375 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3376 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3377 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3378 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3380 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" -@.str.3381 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" -@.str.3382 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3383 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3387 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3388 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3389 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3390 = private unnamed_addr constant [10 x i8] c"each.cond\00" -@.str.3391 = private unnamed_addr constant [10 x i8] c"each.body\00" -@.str.3392 = private unnamed_addr constant [10 x i8] c"each.step\00" -@.str.3393 = private unnamed_addr constant [9 x i8] c"each.end\00" -@.str.3394 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3395 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.3396 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3397 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3398 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3399 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3400 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3401 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3402 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3403 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3405 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3407 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3408 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3409 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3410 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3413 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3415 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3416 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3418 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3419 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3421 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3422 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" -@.str.3423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3424 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3426 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3429 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3430 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3432 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3435 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3436 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3437 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3439 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3440 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" -@.str.3441 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3442 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3444 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3446 = private unnamed_addr constant [18 x i8] c"the error message\00" -@.str.3447 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3449 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3450 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3451 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3453 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3454 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3455 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3457 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3459 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3460 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3462 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3464 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3465 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" -@.str.3466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3467 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3468 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3470 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3471 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3472 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3474 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3475 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3477 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3478 = private unnamed_addr constant [15 x i8] c"' must return \00" -@.str.3479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3480 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3482 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3484 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3485 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3487 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3490 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3494 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3496 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3500 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.3501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3502 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3506 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3508 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3512 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.3516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3517 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3519 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3521 = private unnamed_addr constant [19 x i8] c"the returned value\00" -@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3523 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3524 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3526 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3527 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" -@.str.3528 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3530 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3531 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3532 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3534 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3535 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3536 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3537 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3539 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3540 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3541 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3543 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3544 = private unnamed_addr constant [2 x i8] c" \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 [8 x i8] c"{ i64, \00" -@.str.3548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3549 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3551 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.3552 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.3553 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.3554 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3555 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3556 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3557 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.3558 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3559 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3560 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3561 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3562 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3563 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.3564 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3567 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.3568 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.3569 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3570 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3571 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3573 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.3574 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" -@.str.3575 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3576 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3577 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3578 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3579 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3580 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" -@.str.3581 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3582 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3583 = private unnamed_addr constant [8 x i8] c"map.new\00" -@.str.3584 = private unnamed_addr constant [9 x i8] c"map.have\00" -@.str.3585 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.3586 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3587 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3596 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3597 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" -@.str.3598 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3599 = private unnamed_addr constant [12 x i8] c"map.missing\00" -@.str.3600 = private unnamed_addr constant [10 x i8] c"map.found\00" -@.str.3601 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3602 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3603 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3604 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3605 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3606 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" -@.str.3607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3608 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3610 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3611 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3613 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3615 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3616 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3617 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" -@.str.3618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3619 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3620 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3622 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3623 = private unnamed_addr constant [4 x i8] c"int\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 [5 x i8] c"void\00" -@.str.3627 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3629 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" -@.str.3630 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3631 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3633 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" -@.str.3634 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3635 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3637 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3639 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [22 x i8] c"every key of this map\00" -@.str.3645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3649 = private unnamed_addr constant [24 x i8] c"every value of this map\00" -@.str.3650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3653 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3654 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3655 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3656 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3657 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3660 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3661 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.3662 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3663 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3664 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3665 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3666 = private unnamed_addr constant [11 x i8] c"remove.hit\00" -@.str.3667 = private unnamed_addr constant [11 x i8] c"remove.end\00" -@.str.3668 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" -@.str.3669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3670 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3671 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3672 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3673 = private unnamed_addr constant [10 x i8] c"get.found\00" -@.str.3674 = private unnamed_addr constant [12 x i8] c"get.missing\00" -@.str.3675 = private unnamed_addr constant [9 x i8] c"get.fend\00" -@.str.3676 = private unnamed_addr constant [9 x i8] c"get.mend\00" -@.str.3677 = private unnamed_addr constant [8 x i8] c"get.end\00" -@.str.3678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3680 = private unnamed_addr constant [12 x i8] c"the default\00" -@.str.3681 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3682 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3683 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3684 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3685 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3686 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3687 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.3688 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3689 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3690 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3691 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3693 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3694 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3695 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3696 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3697 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3698 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" -@.str.3699 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3700 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3701 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.3702 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3703 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3704 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3705 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3706 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3707 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3708 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3709 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3710 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3711 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.3712 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3713 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3714 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3715 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3717 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3718 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3719 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3720 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3721 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3722 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3724 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3725 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3726 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3727 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3728 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3729 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3730 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3731 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3732 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3733 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3734 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3735 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3736 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3737 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" -@.str.3738 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" -@.str.3739 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3740 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3742 = private unnamed_addr constant [30 x i8] c"used .enums 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 [2 x i8] c"'\00" -@.str.3745 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" -@.str.3746 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.3747 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3749 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3750 = private unnamed_addr constant [13 x i8] c"this pattern\00" -@.str.3751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3752 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3753 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3755 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" -@.str.3756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3757 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3758 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3759 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3760 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3761 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3762 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3764 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3767 = private unnamed_addr constant [10 x i8] c"match.end\00" -@.str.3768 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3770 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" -@.str.3771 = private unnamed_addr constant [10 x i8] c"match.arm\00" -@.str.3772 = private unnamed_addr constant [11 x i8] c"match.next\00" -@.str.3773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3774 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3775 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3777 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3779 = private unnamed_addr constant [53 x i8] c"an arm with several variants can't name their values\00" -@.str.3780 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3781 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3783 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3785 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3786 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3788 = private unnamed_addr constant [9 x i8] c"match.or\00" -@.str.3789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3790 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3793 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.3794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3795 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3799 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3800 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3801 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3806 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3807 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3808 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3809 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" -@.str.3810 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" -@.str.3811 = private unnamed_addr constant [11 x i8] c"match.from\00" -@.str.3812 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3814 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3816 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3819 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.3822 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3824 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3825 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3826 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3827 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3829 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3831 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3832 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3833 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3834 = private unnamed_addr constant [12 x i8] c"a match on \00" -@.str.3835 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" -@.str.3836 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3837 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.3838 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3840 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3841 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3843 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3844 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3845 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3846 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3847 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3848 = private unnamed_addr constant [3 x i8] c"[ \00" -@.str.3849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3850 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3851 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3852 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3854 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3855 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3856 = 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.3857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3858 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3860 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3862 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3864 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3865 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3867 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3870 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3872 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3874 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3876 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3878 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3880 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3881 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" -@.str.3882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3883 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3884 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" -@.str.3885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3886 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3887 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3889 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3890 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3892 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3894 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" -@.str.3895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3896 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3897 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" -@.str.3898 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" -@.str.3899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3900 = private unnamed_addr constant [11 x i8] c"try.failed\00" -@.str.3901 = private unnamed_addr constant [7 x i8] c"try.ok\00" -@.str.3902 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3904 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3905 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3906 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3908 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3909 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3910 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3912 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3914 = private unnamed_addr constant [10 x i8] c"or.failed\00" -@.str.3915 = private unnamed_addr constant [6 x i8] c"or.ok\00" -@.str.3916 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3917 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3920 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3921 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3923 = 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.3924 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3925 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3926 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3927 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3929 = 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.3930 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3931 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3934 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" -@.str.3935 = private unnamed_addr constant [8 x i8] c"or.bend\00" -@.str.3936 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3937 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3938 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3939 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3940 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3941 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3942 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3943 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3944 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3945 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3947 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.3948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3949 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.3950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3951 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3953 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3954 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3955 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3956 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3957 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3958 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3960 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3961 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3962 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3963 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3964 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3965 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3966 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3967 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3968 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3969 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.3970 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3971 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3972 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.3973 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3974 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3975 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3976 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3977 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3978 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3979 = private unnamed_addr constant [20 x i8] c"unknown expression \00" -@.str.3980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3981 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3982 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3984 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" -@.str.3985 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.3986 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.3987 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3988 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.3989 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" -@.str.3990 = private unnamed_addr constant [5 x i8] c"xor \00" -@.str.3991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3992 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str.3993 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" -@.str.3994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3995 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3997 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3998 = private unnamed_addr constant [5 x i8] c"sub \00" -@.str.3999 = private unnamed_addr constant [5 x i8] c" 0, \00" -@.str.4000 = private unnamed_addr constant [6 x i8] c"fneg \00" -@.str.4001 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4002 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" -@.str.4003 = private unnamed_addr constant [12 x i8] c"can't use '\00" -@.str.4004 = private unnamed_addr constant [6 x i8] c"' on \00" -@.str.4005 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.4006 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4007 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4008 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4009 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" -@.str.4010 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4011 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4012 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4013 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4014 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" -@.str.4015 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" -@.str.4016 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4017 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4018 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4019 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4020 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4021 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" -@.str.4022 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4023 = private unnamed_addr constant [6 x i8] c"array\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 [32 x i8] c" (compare the parts one by one)\00" -@.str.4027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4028 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4030 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4032 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4034 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4036 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4038 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4040 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4042 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4044 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4046 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4048 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4050 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4052 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4054 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4056 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4058 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4060 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4062 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4064 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4066 = private unnamed_addr constant [30 x i8] c"used .value 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 .ty on a null pointer\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 .ty 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 [26 x i8] c"used .v on a null pointer\00" -@.str.4073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4074 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4076 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4078 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4080 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\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 .ty 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 .ty 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 [26 x i8] c"used .v 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 .ty 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 [27 x i8] c"used .ty on a null pointer\00" -@.str.4091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4092 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\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 .value on a null pointer\00" -@.str.4095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4096 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4098 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4100 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4102 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4103 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4105 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4107 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4109 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4111 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4113 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4114 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4116 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4118 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4120 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4122 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4123 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4125 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4127 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4128 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4129 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4131 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4133 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4134 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4136 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4137 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4138 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4139 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4140 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4142 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4143 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4144 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4145 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4146 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4147 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" -@.str.4148 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4149 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4150 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4151 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4152 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4153 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4154 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4155 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4156 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4157 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4158 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4159 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4160 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4161 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4162 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4163 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4164 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4165 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4166 = private unnamed_addr constant [5 x i8] c"sdiv\00" -@.str.4167 = private unnamed_addr constant [5 x i8] c"srem\00" -@.str.4168 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4169 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4170 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4171 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4172 = private unnamed_addr constant [5 x i8] c"ashr\00" -@.str.4173 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4174 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4175 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4176 = private unnamed_addr constant [5 x i8] c"udiv\00" -@.str.4177 = private unnamed_addr constant [5 x i8] c"urem\00" -@.str.4178 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4179 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4180 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4181 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4182 = private unnamed_addr constant [5 x i8] c"lshr\00" -@.str.4183 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4184 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4185 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4186 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4187 = private unnamed_addr constant [9 x i8] c"icmp eq \00" -@.str.4188 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4189 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4190 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4192 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4193 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4194 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4195 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4196 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4197 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4198 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4199 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4200 = private unnamed_addr constant [5 x i8] c"fadd\00" -@.str.4201 = private unnamed_addr constant [5 x i8] c"fsub\00" -@.str.4202 = private unnamed_addr constant [5 x i8] c"fmul\00" -@.str.4203 = private unnamed_addr constant [5 x i8] c"fdiv\00" -@.str.4204 = private unnamed_addr constant [5 x i8] c"frem\00" -@.str.4205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4206 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4207 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4208 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4209 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4210 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4211 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4212 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4213 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4214 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4215 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4216 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4217 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" -@.str.4218 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4219 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4220 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4221 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4222 = private unnamed_addr constant [6 x i8] c" ptr \00" -@.str.4223 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4224 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4225 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4226 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4227 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" -@.str.4228 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4229 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4230 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4231 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4232 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4233 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4234 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4235 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4236 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4237 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" -@.str.4238 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4239 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4240 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4241 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str.4242 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4243 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4244 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4245 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4246 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4247 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4248 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4249 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4250 = private unnamed_addr constant [4 x i8] c"oeq\00" -@.str.4251 = private unnamed_addr constant [4 x i8] c"une\00" -@.str.4252 = private unnamed_addr constant [4 x i8] c"olt\00" -@.str.4253 = private unnamed_addr constant [4 x i8] c"ole\00" -@.str.4254 = private unnamed_addr constant [4 x i8] c"ogt\00" -@.str.4255 = private unnamed_addr constant [4 x i8] c"oge\00" -@.str.4256 = private unnamed_addr constant [6 x i8] c"fcmp \00" -@.str.4257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4258 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4259 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4260 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4261 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4262 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4263 = 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.4264 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4265 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4266 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4267 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4268 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4269 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4270 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4271 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4272 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4273 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4274 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4275 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4276 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4277 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4278 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4279 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4280 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4281 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4282 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4283 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4284 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4285 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4286 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4287 = private unnamed_addr constant [4 x i8] c"ult\00" -@.str.4288 = private unnamed_addr constant [4 x i8] c"ule\00" -@.str.4289 = private unnamed_addr constant [4 x i8] c"ugt\00" -@.str.4290 = private unnamed_addr constant [4 x i8] c"uge\00" -@.str.4291 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4292 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4293 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str.4294 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str.4295 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str.4296 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str.4297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4298 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4299 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.4300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4301 = private unnamed_addr constant [11 x i8] c"logic.from\00" -@.str.4302 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" -@.str.4303 = private unnamed_addr constant [10 x i8] c"logic.end\00" -@.str.4304 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4306 = private unnamed_addr constant [11 x i8] c"logic.rend\00" -@.str.4307 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.4308 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4309 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.4310 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" -@.str.4311 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4312 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.4313 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4314 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.4315 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4318 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4322 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4323 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4324 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4325 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4326 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4327 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4329 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" -@.str.4330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4331 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4332 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4333 = private unnamed_addr constant [28 x i8] c"every element of this array\00" -@.str.4334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4335 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4336 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str.4337 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4338 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.4339 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4340 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4341 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4342 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4344 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" -@.str.4345 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4346 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4347 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4348 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4349 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4350 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4351 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.4352 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4353 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4354 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4355 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" -@.str.4356 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4358 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4360 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4362 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4363 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4365 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4367 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4368 = private unnamed_addr constant [8 x i8] c"fprintf\00" -@.str.4369 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4370 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4371 = private unnamed_addr constant [7 x i8] c"stderr\00" -@.str.4372 = private unnamed_addr constant [2 x i8] c"2\00" -@.str.4373 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4374 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4375 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4376 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.4377 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" -@.str.4378 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4379 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4381 = private unnamed_addr constant [27 x i8] c"used .ci 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.4384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4386 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4387 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4389 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4390 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4392 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.4393 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4394 = private unnamed_addr constant [20 x i8] c" = external global \00" -@.str.4395 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4396 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4397 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" -@.str.4398 = private unnamed_addr constant [11 x i8] c".name(...)\00" -@.str.4399 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4400 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4401 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4403 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4404 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4405 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.4406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4407 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4408 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4410 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4412 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.4413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4414 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.4415 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4417 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4419 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4421 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4422 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4424 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4428 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4430 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4431 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4433 = private unnamed_addr constant [4 x i8] c"var\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 [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 [29 x i8] c"used .sums on a null pointer\00" -@.str.4439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4440 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4441 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4442 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4444 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4446 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4450 = private unnamed_addr constant [23 x i8] c" holds nothing: write \00" -@.str.4451 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4452 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4454 = private unnamed_addr constant [20 x i8] c" value(s), but got \00" -@.str.4455 = private unnamed_addr constant [3 x i8] c": \00" -@.str.4456 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4457 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4458 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4459 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.4460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4461 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.4462 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4463 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4464 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4465 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4467 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4469 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4470 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4471 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.4472 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4474 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.4475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4477 = private unnamed_addr constant [34 x i8] c"this pattern is not a variant of \00" -@.str.4478 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.4479 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4480 = private unnamed_addr constant [2 x i8] c")\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 [28 x i8] c" holds nothing: write just \00" -@.str.4484 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4486 = private unnamed_addr constant [28 x i8] c" value(s): name them, like \00" -@.str.4487 = private unnamed_addr constant [28 x i8] c"(x), or use _ to ignore one\00" -@.str.4488 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4489 = private unnamed_addr constant [51 x i8] c"write a name to hold the value (or _ to ignore it)\00" -@.str.4490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4491 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4493 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4494 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4495 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4496 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4497 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4498 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4499 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4500 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.4501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4502 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4503 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4507 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4509 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4512 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4514 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4517 = private unnamed_addr constant [12 x i8] c" value(s): \00" -@.str.4518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4519 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4521 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4522 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4524 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4527 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4528 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4529 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.4530 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.4531 = private unnamed_addr constant [7 x i8] c"used .\00" -@.str.4532 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" -@.str.4533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4534 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4536 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4538 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4539 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4540 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4541 = private unnamed_addr constant [3 x i8] c"a \00" -@.str.4542 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" -@.str.4543 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4544 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4545 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" -@.str.4546 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4547 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4548 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4549 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" -@.str.4550 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4551 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" -@.str.4552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4553 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4554 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4555 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4556 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" -@.str.4557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4558 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4559 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" -@.str.4560 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4561 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4562 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4563 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4565 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4567 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4568 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4569 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" -@.str.4570 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4571 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" -@.str.4572 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4573 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4574 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.4575 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4576 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4577 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4578 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4579 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4580 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4581 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4582 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" -@.str.4583 = private unnamed_addr constant [3 x i8] c"')\00" -@.str.4584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4585 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4587 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.4588 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.4589 = private unnamed_addr constant [12 x i8] c"' (it has: \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 [12 x i8] c"src/gen.fch\00" -@.str.4593 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4594 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4595 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4597 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4598 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4599 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.4600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4601 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4602 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4603 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4607 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4608 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4610 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4612 = private unnamed_addr constant [9 x i8] c"an index\00" -@.str.4613 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4614 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4615 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4616 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4617 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.4618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4619 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4620 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4623 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4624 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4625 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4626 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4627 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4628 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" -@.str.4629 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4630 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4632 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4633 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" -@.str.4634 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" -@.str.4635 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4636 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4637 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4638 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4639 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4640 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4642 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4643 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4644 = private unnamed_addr constant [18 x i8] c"named arguments (\00" -@.str.4645 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" -@.str.4646 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4647 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4648 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4649 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4650 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4651 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4652 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4653 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.4654 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4655 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4656 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4657 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4658 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4659 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4660 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.4661 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4662 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4663 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.4664 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.4665 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4666 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4667 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4668 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4670 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4672 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4674 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4675 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4676 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4677 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4678 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4679 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" -@.str.4680 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4681 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4682 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4683 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4686 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4687 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4689 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4690 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4691 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4692 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4693 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4694 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.4695 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" -@.str.4696 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4698 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4699 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4700 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4702 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4703 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4705 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4706 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4707 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4708 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4710 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.4711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4712 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" -@.str.4713 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4714 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4716 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4717 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" -@.str.4718 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4719 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4720 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4721 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4722 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4723 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4724 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4725 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4726 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4727 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4728 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4729 = private unnamed_addr constant [7 x i8] c"fptoui\00" -@.str.4730 = private unnamed_addr constant [7 x i8] c"fptosi\00" -@.str.4731 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4732 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4733 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4734 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4735 = private unnamed_addr constant [9 x i8] c"icmp ne \00" -@.str.4736 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4737 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4738 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4739 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4740 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4741 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4742 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" -@.str.4743 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4744 = private unnamed_addr constant [8 x i8] c" to ptr\00" -@.str.4745 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4746 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.4747 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4748 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4749 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4751 = 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.4752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4753 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4754 = private unnamed_addr constant [7 x i8] c" into \00" -@.str.4755 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4757 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4758 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4759 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4761 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4762 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4763 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4764 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4765 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4766 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4768 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4772 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4775 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4777 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4779 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4780 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4781 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.4782 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.4783 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.4784 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4785 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4786 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4787 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4788 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4789 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4790 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4791 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4792 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4793 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4794 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4795 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4796 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4798 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4801 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4803 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4804 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4805 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4807 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4808 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4810 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4811 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4816 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4819 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4820 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" -@.str.4821 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4822 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4824 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4825 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4826 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4827 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4828 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4829 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4830 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4831 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4832 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4833 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4834 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4836 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4838 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4840 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4841 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4842 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4843 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4845 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4847 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4848 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4849 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" -@.str.4850 = private unnamed_addr constant [21 x i8] c", which C can't take\00" -@.str.4851 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4852 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4853 = private unnamed_addr constant [13 x i8] c" the struct \00" -@.str.4854 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" -@.str.4855 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4856 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4857 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4858 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" -@.str.4859 = 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.4860 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" -@.str.4861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4863 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" -@.str.4864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4865 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" -@.str.4866 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4867 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" -@.str.4868 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4870 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4871 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4872 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" -@.str.4873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4874 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4875 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" -@.str.4876 = private unnamed_addr constant [4 x i8] c"i1 \00" -@.str.4877 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" -@.str.4878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4879 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4880 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4881 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4882 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4883 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4884 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4885 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4886 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4887 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4888 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4889 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4890 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4891 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4892 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4893 = private unnamed_addr constant [8 x i8] c"ret i8 \00" -@.str.4894 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4895 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str.4896 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4897 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4900 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4901 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.4902 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.4903 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4904 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4905 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4906 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4907 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4909 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4911 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" -@.str.4912 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4914 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4915 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4917 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4918 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4919 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4920 = 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.4921 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4922 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4923 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4924 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4926 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4928 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4929 = 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.4930 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4931 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4932 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4933 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4934 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4936 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4938 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4939 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" -@.str.4940 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4941 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4942 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" -@.str.4943 = private unnamed_addr constant [4 x i8] c"%c0\00" -@.str.4944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4946 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4947 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4948 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4949 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4950 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4951 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4952 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4953 = private unnamed_addr constant [7 x i8] c"ptr %c\00" -@.str.4954 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4955 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4956 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4957 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4958 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4959 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4960 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4961 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4962 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4963 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4964 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4965 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4966 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4967 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4968 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4969 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4970 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4971 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4972 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4973 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4974 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4976 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4977 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4978 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4980 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4981 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4982 = private unnamed_addr constant [16 x i8] c"define internal\00" -@.str.4983 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4984 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4986 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4987 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4989 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4993 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" -@.str.4994 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4997 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" -@.str.4998 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4999 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5000 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5001 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5003 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5004 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5005 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5006 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5007 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" -@.str.5008 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5009 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5010 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5011 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5012 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5014 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5015 = private unnamed_addr constant [9 x i8] c" signext\00" -@.str.5016 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5017 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5018 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5019 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5020 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5022 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5023 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5024 = private unnamed_addr constant [18 x i8] c"C function from `\00" -@.str.5025 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" -@.str.5026 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5027 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5028 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5029 = private unnamed_addr constant [6 x i8] c")\0A```\00" -@.str.5030 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5031 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.5032 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" -@.str.5033 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5034 = private unnamed_addr constant [18 x i8] c"' takes at least \00" -@.str.5035 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5036 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5037 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.5038 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5039 = private unnamed_addr constant [8 x i8] c"returns\00" -@.str.5040 = private unnamed_addr constant [6 x i8] c"takes\00" -@.str.5041 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5042 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5043 = private unnamed_addr constant [11 x i8] c") align 16\00" -@.str.5044 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5045 = private unnamed_addr constant [12 x i8] c") align 16 \00" -@.str.5046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5047 = private unnamed_addr constant [32 x i8] c"used .pending 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 [12 x i8] c"src/gen.fch\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 [10 x i8] c"argument \00" -@.str.5053 = private unnamed_addr constant [5 x i8] c" of \00" -@.str.5054 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.5055 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.5056 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.5057 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5058 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.5059 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5060 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5061 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5062 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5064 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.5065 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5068 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5070 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5071 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5073 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5075 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" -@.str.5076 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5077 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5079 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" -@.str.5080 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.5081 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5082 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5083 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5084 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5085 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5086 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5087 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5088 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5089 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5090 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5091 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5092 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5093 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5094 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.5095 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5096 = private unnamed_addr constant [6 x i8] c", ...\00" -@.str.5097 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5099 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5100 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.5101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5102 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5103 = private unnamed_addr constant [3 x i8] c"f:\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 .head on a null pointer\00" -@.str.5106 = private unnamed_addr constant [8 x i8] c"declare\00" -@.str.5107 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5108 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5109 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5110 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5111 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5112 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5113 = private unnamed_addr constant [3 x i8] c" (\00" -@.str.5114 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5115 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5116 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.5117 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5118 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5119 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5120 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5121 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5122 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5123 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5124 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5125 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5126 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5127 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5128 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5129 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5130 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5131 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5132 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5133 = private unnamed_addr constant [7 x i8] c"fflush\00" -@.str.5134 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5135 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5136 = private unnamed_addr constant [6 x i8] c"qsort\00" -@.str.5137 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5138 = private unnamed_addr constant [5 x i8] c"puts\00" -@.str.5139 = private unnamed_addr constant [8 x i8] c"putchar\00" -@.str.5140 = private unnamed_addr constant [6 x i8] c"scanf\00" -@.str.5141 = private unnamed_addr constant [6 x i8] c"fopen\00" -@.str.5142 = private unnamed_addr constant [8 x i8] c"getchar\00" -@.str.5143 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str.5144 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str.5145 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str.5146 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str.5147 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str.5148 = private unnamed_addr constant [5 x i8] c"fabs\00" -@.str.5149 = private unnamed_addr constant [7 x i8] c"malloc\00" -@.str.5150 = private unnamed_addr constant [5 x i8] c"rand\00" -@.str.5151 = private unnamed_addr constant [6 x i8] c"srand\00" -@.str.5152 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str.5153 = private unnamed_addr constant [5 x i8] c"atoi\00" -@.str.5154 = private unnamed_addr constant [7 x i8] c"strlen\00" -@.str.5155 = private unnamed_addr constant [7 x i8] c"strcpy\00" -@.str.5156 = private unnamed_addr constant [7 x i8] c"memcpy\00" -@.str.5157 = private unnamed_addr constant [5 x i8] c"time\00" -@.str.5158 = private unnamed_addr constant [6 x i8] c"sleep\00" -@.str.5159 = private unnamed_addr constant [7 x i8] c"usleep\00" -@.str.5160 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5161 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5162 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5163 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5164 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5165 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5166 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5167 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5168 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5169 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5170 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5171 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5172 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5173 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5174 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5175 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5176 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5177 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5178 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5179 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5180 = private unnamed_addr constant [7 x i8] c"time.h\00" -@.str.5181 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5182 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5183 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5184 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" -@.str.5185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5186 = private unnamed_addr constant [15 x i8] c"\22 at the top)\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 [6 x i8] c"error\00" -@.str.5191 = 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.5192 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.5193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5194 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5196 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" -@.str.5197 = private unnamed_addr constant [2 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"\0A\00" -@.str.5200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5201 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5202 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.5203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5204 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5206 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5207 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5208 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5209 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.5210 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.5211 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" -@.str.5212 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5214 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5215 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" -@.str.5216 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5218 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5219 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" -@.str.5220 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5221 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.5222 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5223 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" -@.str.5224 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.5225 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5226 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5227 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5228 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" -@.str.5229 = private unnamed_addr constant [14 x i8] c", i8 signext \00" -@.str.5230 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5231 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5232 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5233 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5234 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" -@.str.5235 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.5236 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5237 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5238 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5239 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5240 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5241 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5242 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5243 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5245 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5247 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5248 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5249 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5250 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" -@.str.5251 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5252 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5253 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5254 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5255 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5256 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5257 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5258 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5259 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5260 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5262 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.5263 = private unnamed_addr constant [10 x i8] c" into str\00" -@.str.5264 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5265 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5266 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.5267 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5269 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5270 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5271 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" -@.str.5272 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5273 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5274 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5275 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5277 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5278 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5279 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5280 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5281 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5282 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5283 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" -@.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5286 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5287 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5288 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5290 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5291 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5293 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5294 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5295 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5297 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5299 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" -@.str.5300 = private unnamed_addr constant [7 x i8] c", ptr \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 [2 x i8] c")\00" -@.str.5304 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5305 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5306 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5308 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5310 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5312 = private unnamed_addr constant [9 x i8] c"the text\00" -@.str.5313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5314 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5315 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5316 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5317 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5318 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" -@.str.5319 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5320 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5321 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5322 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5323 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5325 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5326 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5328 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5329 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5330 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" -@.str.5331 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5332 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5333 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5334 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5335 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5336 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.5337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5338 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5339 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5340 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5343 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5344 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5345 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5346 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5347 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" -@.str.5348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5349 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5350 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5351 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5353 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5354 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5356 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5357 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5358 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5359 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" -@.str.5360 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5361 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5362 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5363 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5364 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5365 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.5366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5367 = private unnamed_addr constant [12 x i8] c"the command\00" -@.str.5368 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5369 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5371 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" -@.str.5372 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5373 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5374 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5375 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5377 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5379 = private unnamed_addr constant [14 x i8] c"the exit code\00" -@.str.5380 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5381 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5382 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" -@.str.5383 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" -@.str.5384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5385 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5386 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.5387 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5389 = private unnamed_addr constant [13 x i8] c"the question\00" -@.str.5390 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" -@.str.5391 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5392 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5393 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5394 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5395 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.5396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5397 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.5398 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5399 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5401 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5403 = 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.5404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5405 = private unnamed_addr constant [10 x i8] c"free.drop\00" -@.str.5406 = private unnamed_addr constant [10 x i8] c"free.done\00" -@.str.5407 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5408 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5410 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" -@.str.5411 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5412 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5414 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5415 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5416 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" -@.str.5417 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5418 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5420 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5421 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5423 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5424 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5425 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5426 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" -@.str.5427 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.5428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5429 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5431 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5433 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5436 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5438 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5441 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" -@.str.5442 = private unnamed_addr constant [4 x i8] c" { \00" -@.str.5443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5444 = private unnamed_addr constant [7 x i8] c" }\0A```\00" -@.str.5445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5446 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5449 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5451 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5453 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5455 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.5456 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5457 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" -@.str.5458 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" -@.str.5459 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5461 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5463 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.5464 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" -@.str.5465 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5467 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5471 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.5472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5473 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5476 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5477 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5478 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5479 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5480 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" -@.str.5481 = private unnamed_addr constant [20 x i8] c"(...) or , \00" -@.str.5482 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" -@.str.5483 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.5484 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5485 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5486 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5487 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5488 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5489 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5490 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5491 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5492 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5493 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5495 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5496 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5497 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5498 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5500 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5502 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5503 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5504 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5505 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5507 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5510 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5513 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5517 = 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.5518 = private unnamed_addr constant [6 x i8] c" has \00" -@.str.5519 = private unnamed_addr constant [18 x i8] c" fields, but got \00" -@.str.5520 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" -@.str.5521 = private unnamed_addr constant [16 x i8] c"(field: value))\00" -@.str.5522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5525 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.5526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5527 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5530 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5532 = private unnamed_addr constant [17 x i8] c"' is given twice\00" -@.str.5533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5534 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5536 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5543 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5545 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5548 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5550 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5552 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5554 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5556 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5558 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5560 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5562 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5567 = private unnamed_addr constant [17 x i8] c"the default of '\00" -@.str.5568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5569 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5571 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5573 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5575 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5577 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5578 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.5579 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5580 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5581 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5582 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5585 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5586 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"var\00" -@.str.5590 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" -@.str.5591 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" -@.str.5592 = private unnamed_addr constant [14 x i8] c" at the top)\00" -@.str.5593 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5594 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5595 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5597 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5599 = private unnamed_addr constant [13 x i8] c"the module '\00" -@.str.5600 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" -@.str.5601 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5602 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5603 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5604 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5605 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5606 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5607 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5608 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5609 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5611 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5612 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5613 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5614 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" -@.str.5615 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5616 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5617 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5618 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5619 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" -@.str.5620 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5623 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5624 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5625 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5626 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5627 = private unnamed_addr constant [9 x i8] c"called .\00" -@.str.5628 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" -@.str.5629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5630 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5631 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5632 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5633 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5634 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5636 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5639 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5642 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5645 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5646 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5647 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5648 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" -@.str.5649 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5650 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" -@.str.5651 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5652 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5653 = private unnamed_addr constant [17 x i8] c" has no method '\00" -@.str.5654 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.5655 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5656 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5658 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5660 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5661 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5662 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" -@.str.5663 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" -@.str.5664 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.5665 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.5666 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5667 = private unnamed_addr constant [16 x i8] c" has no methods\00" -@.str.5668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5669 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5670 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5671 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5674 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5676 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5677 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5678 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" -@.str.5679 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5680 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5681 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5682 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5683 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5684 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5685 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5686 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5687 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5688 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5689 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5690 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5691 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5692 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5693 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5694 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5695 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5696 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5698 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5699 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5700 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5701 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5702 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5703 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5704 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5705 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5706 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5709 = private unnamed_addr constant [22 x i8] c"the value to look for\00" -@.str.5710 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5711 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5712 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str.5713 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5714 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5715 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5717 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5718 = private unnamed_addr constant [10 x i8] c"find.cond\00" -@.str.5719 = private unnamed_addr constant [10 x i8] c"find.body\00" -@.str.5720 = private unnamed_addr constant [9 x i8] c"find.hit\00" -@.str.5721 = private unnamed_addr constant [10 x i8] c"find.next\00" -@.str.5722 = private unnamed_addr constant [9 x i8] c"find.end\00" -@.str.5723 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5724 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5725 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5726 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5727 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5728 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5729 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.5730 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5731 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5732 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5733 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5734 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5735 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5736 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5737 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5738 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5739 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5740 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5741 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5742 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" -@.str.5743 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5744 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5745 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" -@.str.5746 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5747 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5749 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5750 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5751 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5753 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5755 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5758 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5759 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5760 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5762 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" -@.str.5763 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5764 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5765 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5766 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5767 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5768 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5769 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5770 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5771 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5772 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5773 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5775 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5777 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5778 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5779 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5780 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5781 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5782 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5783 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" -@.str.5784 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5785 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5786 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5787 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5788 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5789 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5791 = private unnamed_addr constant [15 x i8] c"the new length\00" -@.str.5792 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" -@.str.5793 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5794 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5795 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5796 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5797 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5798 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5799 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5800 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str.5801 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5802 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5803 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5804 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5806 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5807 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5808 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5809 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5811 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5812 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5813 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5814 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5815 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.5816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5817 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5819 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5821 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5823 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5824 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5825 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5826 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5827 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5828 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5829 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5830 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5831 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5832 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5833 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5834 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5835 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" -@.str.5836 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5837 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5838 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5839 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.5840 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5841 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5842 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5843 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5844 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5845 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5846 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5847 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5848 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5849 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5850 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5851 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5852 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5855 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5856 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5857 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5858 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5859 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" -@.str.5860 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5861 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5862 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" -@.str.5863 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5864 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5865 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5866 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5867 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5868 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" -@.str.5869 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" -@.str.5870 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5871 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5872 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5873 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5874 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5875 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5876 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5877 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5879 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5880 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5881 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5882 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.5883 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5884 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5885 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5886 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5887 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5888 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5889 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5890 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5892 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" -@.str.5893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5894 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5896 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5897 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5898 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5899 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" -@.str.5900 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5901 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5902 = private unnamed_addr constant [3 x i8] c"%x\00" -@.str.5903 = private unnamed_addr constant [3 x i8] c"%y\00" -@.str.5904 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5905 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5906 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" -@.str.5907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5908 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5909 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" -@.str.5910 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5911 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5912 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5913 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.5914 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5915 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5916 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5917 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5918 = private unnamed_addr constant [2 x i8] c">\00" -@.str.5919 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5920 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5921 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5922 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str.5923 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5924 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5925 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5926 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5927 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5928 = private unnamed_addr constant [9 x i8] c"ret i32 \00" -@.str.5929 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" -@.str.5930 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" -@.str.5931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5932 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5934 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.5935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5936 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5938 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5940 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5942 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5943 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" -@.str.5944 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5945 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5946 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5947 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5948 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5949 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5950 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5951 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5952 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5953 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5954 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5955 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5957 = private unnamed_addr constant [21 x i8] c"the text to look for\00" -@.str.5958 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5959 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5960 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5961 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5962 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5963 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5964 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5965 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5966 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5967 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5968 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5969 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5970 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" -@.str.5971 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5972 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" -@.str.5973 = private unnamed_addr constant [10 x i8] c"call i32 \00" -@.str.5974 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5975 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5976 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5977 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5978 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5979 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5980 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5981 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5982 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5983 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" -@.str.5984 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5985 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5986 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5987 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5988 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5989 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5991 = private unnamed_addr constant [20 x i8] c"the text to replace\00" -@.str.5992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5993 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5995 = private unnamed_addr constant [13 x i8] c"the new text\00" -@.str.5996 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" -@.str.5997 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5998 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5999 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6000 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6001 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6002 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6003 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6005 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.6006 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" -@.str.6007 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6008 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6009 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6010 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6011 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6012 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6014 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6016 = private unnamed_addr constant [10 x i8] c"the count\00" -@.str.6017 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" -@.str.6018 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6019 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.6020 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6021 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6023 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6024 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" -@.str.6025 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6026 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6027 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6028 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6029 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" -@.str.6030 = 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.6031 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" -@.str.6032 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" -@.str.6033 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" -@.str.6034 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" -@.str.6035 = private unnamed_addr constant [34 x i8] c"declare void @finch_str_drop(ptr)\00" -@.str.6036 = private unnamed_addr constant [34 x i8] c"declare void @finch_arr_free(ptr)\00" -@.str.6037 = private unnamed_addr constant [34 x i8] c"declare void @finch_map_free(ptr)\00" -@.str.6038 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" -@.str.6039 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" -@.str.6040 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" -@.str.6041 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" -@.str.6042 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" -@.str.6043 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" -@.str.6044 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" -@.str.6045 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" -@.str.6046 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" -@.str.6047 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" -@.str.6048 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" -@.str.6049 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" -@.str.6050 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" -@.str.6051 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" -@.str.6052 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" -@.str.6053 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" -@.str.6054 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" -@.str.6055 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" -@.str.6056 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" -@.str.6057 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" -@.str.6058 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" -@.str.6059 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" -@.str.6060 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" -@.str.6061 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" -@.str.6062 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" -@.str.6063 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" -@.str.6064 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" -@.str.6065 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" -@.str.6066 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" -@.str.6067 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" -@.str.6068 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" -@.str.6069 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" -@.str.6070 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" -@.str.6071 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" -@.str.6072 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" -@.str.6073 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" -@.str.6074 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" -@.str.6075 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" -@.str.6076 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" -@.str.6077 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" -@.str.6078 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" -@.str.6079 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" -@.str.6080 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" -@.str.6081 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" -@.str.6082 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" -@.str.6083 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" -@.str.6084 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" -@.str.6085 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" -@.str.6086 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" -@.str.6087 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" -@.str.6088 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" -@.str.6089 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" -@.str.6090 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" -@.str.6091 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" -@.str.6092 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" -@.str.6093 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" -@.str.6094 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" -@.str.6095 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" -@.str.6096 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" -@.str.6097 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" -@.str.6098 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" -@.str.6099 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" -@.str.6100 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" -@.str.6101 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" -@.str.6102 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" -@.str.6103 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" -@.str.6104 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" -@.str.6105 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6106 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6107 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" -@.str.6108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6109 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6111 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6112 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" -@.str.6113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6114 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6115 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" -@.str.6116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6117 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.6118 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6119 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" -@.str.6120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6122 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6123 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" -@.str.6124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6126 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6128 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6129 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6131 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6133 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6136 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6137 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" -@.str.6138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6139 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6140 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" -@.str.6141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6142 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6143 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" -@.str.6144 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" -@.str.6145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6146 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" -@.str.6147 = private unnamed_addr constant [3 x i8] c"\22)\00" -@.str.6148 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" -@.str.6149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6150 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6152 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" -@.str.6153 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6154 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6157 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.6158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6159 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6161 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6165 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6168 = 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.6169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6170 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" -@.str.6171 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6172 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6173 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6175 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6177 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.6178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6179 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6182 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.6183 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6185 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6186 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6188 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6189 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.6190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6191 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6192 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.6193 = 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.6194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6195 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6197 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.6198 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6199 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6201 = 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.6202 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" -@.str.6203 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6204 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str.6205 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6206 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6207 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6208 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6209 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" -@.str.6210 = 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.6211 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" -@.str.6212 = 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.6213 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" -@.str.6214 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6215 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" -@.str.6216 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" -@.str.6217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6218 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6219 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" -@.str.6220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6221 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6222 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str.6223 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6225 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str.6226 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.6227 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" -@.str.6228 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" -@.str.6229 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.6230 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" -@.str.6231 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" -@.str.6232 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.6233 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" -@.str.6234 = 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.6235 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.6236 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" -@.str.6237 = 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.6238 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.6239 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" -@.str.6240 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" -@.str.6241 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.6242 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" -@.str.6243 = 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.6244 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.6245 = private unnamed_addr constant [19 x i8] c"error(str message)\00" -@.str.6246 = 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.6247 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.6248 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" -@.str.6249 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" -@.str.6250 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.6251 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" -@.str.6252 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" -@.str.6253 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.6254 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" -@.str.6255 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" -@.str.6256 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.6257 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" -@.str.6258 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" -@.str.6259 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.6260 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" -@.str.6261 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" -@.str.6262 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6263 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" -@.str.6264 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" -@.str.6265 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6266 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" -@.str.6267 = 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.6268 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6269 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" -@.str.6270 = 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.6271 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6272 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" -@.str.6273 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" -@.str.6274 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6275 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" -@.str.6276 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" -@.str.6277 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6278 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" -@.str.6279 = 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.6280 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6281 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6282 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" -@.str.6283 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6284 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" -@.str.6285 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" -@.str.6286 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.6287 = private unnamed_addr constant [10 x i8] c"push(T x)\00" -@.str.6288 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" -@.str.6289 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.6290 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" -@.str.6291 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" -@.str.6292 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.6293 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" -@.str.6294 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" -@.str.6295 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6296 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" -@.str.6297 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" -@.str.6298 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6299 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6300 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6301 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.6302 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" -@.str.6303 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" -@.str.6304 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6305 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" -@.str.6306 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" -@.str.6307 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6308 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" -@.str.6309 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" -@.str.6310 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.6311 = private unnamed_addr constant [7 x i8] c"sort()\00" -@.str.6312 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" -@.str.6313 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.6314 = private unnamed_addr constant [10 x i8] c"reverse()\00" -@.str.6315 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" -@.str.6316 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.6317 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" -@.str.6318 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" -@.str.6319 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.6320 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" -@.str.6321 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" -@.str.6322 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6323 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6324 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" -@.str.6325 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6326 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" -@.str.6327 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" -@.str.6328 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.6329 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" -@.str.6330 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" -@.str.6331 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6332 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" -@.str.6333 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" -@.str.6334 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6335 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" -@.str.6336 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" -@.str.6337 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.6338 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" -@.str.6339 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" -@.str.6340 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.6341 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" -@.str.6342 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" -@.str.6343 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6344 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" -@.str.6345 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" -@.str.6346 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.6347 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" -@.str.6348 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" -@.str.6349 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.6350 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" -@.str.6351 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" -@.str.6352 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.6353 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" -@.str.6354 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" -@.str.6355 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.6356 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" -@.str.6357 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" -@.str.6358 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6359 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" -@.str.6360 = private unnamed_addr constant [18 x i8] c"The text n times.\00" -@.str.6361 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6362 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" -@.str.6363 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" -@.str.6364 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6365 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6366 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" -@.str.6367 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.6368 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" -@.str.6369 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" -@.str.6370 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.6371 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" -@.str.6372 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" -@.str.6373 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6374 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" -@.str.6375 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" -@.str.6376 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6377 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6378 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6379 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.6380 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" -@.str.6381 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" -@.str.6382 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.6383 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" -@.str.6384 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" -@.str.6385 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.6386 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.6387 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.6388 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.6389 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.6390 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.6391 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.6392 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.6393 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.6394 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.6395 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.6396 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.6397 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.6398 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.6399 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.6400 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.6401 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.6402 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.6403 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.6404 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.6405 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.6406 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.6407 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6408 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6409 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6410 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6411 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6412 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6413 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.6414 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6415 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6416 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.6418 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6419 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6420 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6421 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6422 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6423 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.6424 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.6425 = 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.6426 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6427 = private unnamed_addr constant [16 x i8] c"/finch_cc_dirs_\00" -@.str.6428 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6429 = private unnamed_addr constant [14 x i8] c"/finch_empty_\00" -@.str.6430 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6431 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6432 = private unnamed_addr constant [13 x i8] c" -E -v -x c \00" -@.str.6433 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6434 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6435 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6436 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6437 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6438 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6439 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6440 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" -@.str.6441 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6442 = private unnamed_addr constant [20 x i8] c"End of search list.\00" -@.str.6443 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6444 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" -@.str.6445 = private unnamed_addr constant [12 x i8] c"-iframework\00" -@.str.6446 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6447 = private unnamed_addr constant [9 x i8] c"-isystem\00" -declare void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16, ptr) -declare [2 x i64] @clang_getCursorUSR(ptr) -@.str.6448 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6449 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6450 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6451 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6452 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -declare [2 x i64] @clang_getCursorSpelling(ptr) -@.str.6453 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6454 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6455 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6456 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6457 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" -@.str.6458 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6459 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6460 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6461 = 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.6462 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6463 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6464 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6465 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -declare i64 @clang_Type_getSizeOf(ptr) -@.str.6466 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6467 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6468 = 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.6469 = private unnamed_addr constant [13 x i8] c"is a C union\00" -declare i32 @clang_Type_visitFields(ptr, ptr, ptr) -@.str.6470 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6471 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -@.str.6472 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6473 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6474 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6475 = 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.6476 = private unnamed_addr constant [15 x i8] c"has bit fields\00" -@.str.6477 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6478 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6479 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6480 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" -@.str.6481 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6482 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" -@.str.6483 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6484 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6485 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6486 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" -@.str.6487 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6488 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6489 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6490 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" -@.str.6491 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6492 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6493 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6494 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6495 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6496 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6497 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6498 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6499 = private unnamed_addr constant [8 x i8] c"uses a \00" -@.str.6500 = private unnamed_addr constant [12 x i8] c"-bit number\00" -@.str.6501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6502 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6503 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6504 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6505 = 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.6506 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6507 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6508 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6509 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6510 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6511 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" -@.str.6512 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" -@.str.6513 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.6514 = 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.6515 = private unnamed_addr constant [17 x i8] c"uses long double\00" -@.str.6516 = private unnamed_addr constant [18 x i8] c"uses the C type '\00" -declare [2 x i64] @clang_getTypeSpelling(ptr) -@.str.6517 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6518 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6519 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6520 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6521 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.6522 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6523 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6524 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6525 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6526 = private unnamed_addr constant [5 x i8] c"uUlL\00" -@.str.6527 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6528 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6529 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6530 = 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.6531 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6532 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare [2 x i64] @clang_getTokenSpelling(ptr, ptr) -@.str.6533 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6534 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare void @clang_disposeTokens(ptr, ptr, i32) -@.str.6535 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6536 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6537 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6538 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6539 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6540 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6541 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.6542 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6543 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.6544 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6545 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6546 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6547 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6548 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6549 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6550 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6551 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6552 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.6553 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6554 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.6555 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6556 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6557 = private unnamed_addr constant [5 x i8] c"fFlL\00" -@.str.6558 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6559 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6560 = 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.6561 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6562 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6563 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6564 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6565 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6566 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6567 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6568 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6569 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6570 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6571 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6572 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6573 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6574 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6575 = private unnamed_addr constant [31 x i8] c"used .header on a null pointer\00" -declare i32 @clang_Cursor_getStorageClass(ptr) -@.str.6576 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" -@.str.6577 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6578 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6579 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" -@.str.6580 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6581 = 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.6582 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6583 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6584 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6585 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6586 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6587 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -declare i32 @clang_isCursorDefinition(ptr) -@.str.6588 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6589 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6590 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6591 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6592 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6593 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -declare i32 @clang_visitChildren(ptr, ptr, ptr) -@.str.6594 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6595 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -declare i64 @clang_getEnumConstantDeclValue(ptr) -@.str.6596 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6597 = 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.6598 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6599 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6600 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6601 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6602 = private unnamed_addr constant [3 x i8] c"-x\00" -@.str.6603 = private unnamed_addr constant [2 x i8] c"c\00" -@.str.6604 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" -@.str.6605 = private unnamed_addr constant [10 x i8] c"--target=\00" -@.str.6606 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" -@.str.6607 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.6608 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6609 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @clang_createIndex(i32, i32) -@.str.6610 = private unnamed_addr constant [11 x i8] c"#include \22\00" -@.str.6611 = private unnamed_addr constant [3 x i8] c"\22\0A\00" -@.str.6612 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6613 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6614 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr) -@.str.6615 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" -@.str.6616 = 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.6617 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6618 = private unnamed_addr constant [15 x i8] c"file not found\00" -@.str.6619 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6620 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6621 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6622 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6623 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6624 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6625 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6626 = private unnamed_addr constant [11 x i8] c"', which '\00" -@.str.6627 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" -@.str.6628 = private unnamed_addr constant [20 x i8] c": error: C header '\00" -@.str.6629 = 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.6630 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6631 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6632 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6633 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6634 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6635 = private unnamed_addr constant [5 x i8] c"'\5C''\00" -@.str.6636 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6637 = private unnamed_addr constant [10 x i8] c"/dev/null\00" -@.str.6638 = private unnamed_addr constant [7 x i8] c"TMPDIR\00" -@.str.6639 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6640 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6641 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6642 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6643 = private unnamed_addr constant [5 x i8] c"/tmp\00" -@.str.6644 = private unnamed_addr constant [2 x i8] c":\00" -declare i32 @getpid() -@.str.6645 = private unnamed_addr constant [4 x i8] c"PWD\00" -@.str.6646 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6647 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" -@.str.6648 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6649 = private unnamed_addr constant [7 x i8] c"/finch\00" -@.str.6650 = private unnamed_addr constant [5 x i8] c"HOME\00" -@.str.6651 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6652 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" -@.str.6653 = private unnamed_addr constant [13 x i8] c"/finch-cache\00" -@.str.6654 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" -@.str.6655 = private unnamed_addr constant [8 x i8] c"rm -rf \00" -@.str.6656 = private unnamed_addr constant [4 x i8] c"mv \00" -@.str.6657 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6658 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6659 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6660 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6661 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6662 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6663 = private unnamed_addr constant [15 x i8] c"/finch_triple_\00" -@.str.6664 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6665 = private unnamed_addr constant [22 x i8] c"clang -dumpmachine > \00" -@.str.6666 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6667 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6668 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6669 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6670 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6671 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6672 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.6673 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6674 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6675 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6676 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" -@.str.6677 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" -@.str.6678 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6679 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6680 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6681 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6682 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6683 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" -@.str.6684 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" -@.str.6685 = private unnamed_addr constant [23 x i8] c"x86_64-w64-windows-gnu\00" -@.str.6686 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6687 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6688 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6689 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6690 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6691 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6692 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6693 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6694 = private unnamed_addr constant [6 x i8] c"win32\00" -@.str.6695 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6696 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6697 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6698 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6699 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6700 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6701 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6702 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6703 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6704 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6705 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6706 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6707 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6708 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6709 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6710 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6711 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6712 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6713 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6714 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6715 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6716 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6717 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6718 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6719 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6720 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6721 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6722 = private unnamed_addr constant [5 x i8] c".exe\00" -@.str.6723 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6724 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6725 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" -@.str.6726 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" -@.str.6727 = private unnamed_addr constant [16 x i8] c"clang --target=\00" -@.str.6728 = private unnamed_addr constant [2 x i8] c";\00" -@.str.6729 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6730 = private unnamed_addr constant [3 x i8] c"cc\00" -@.str.6731 = private unnamed_addr constant [6 x i8] c"wine \00" -@.str.6732 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" -@.str.6733 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.6734 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6735 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6736 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6737 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6738 = private unnamed_addr constant [12 x i8] c"-framework \00" -@.str.6739 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6740 = private unnamed_addr constant [18 x i8] c"/finch_pkg_flags_\00" -@.str.6741 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6742 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" -@.str.6743 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6744 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6745 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6746 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6747 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.6748 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6749 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6750 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6751 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6752 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6753 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6754 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6755 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6756 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6757 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6758 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6759 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6760 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6761 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6762 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6763 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6764 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6765 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6766 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6767 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6768 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6769 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6770 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6771 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6772 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6773 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6774 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6775 = private unnamed_addr constant [3 x i8] c" \0A\00" -@.str.6776 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6777 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6778 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6779 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" -@.str.6780 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6781 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6782 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6783 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6784 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6785 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6786 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6787 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6788 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6789 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6790 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6791 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6792 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6793 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6794 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6795 = private unnamed_addr constant [10 x i8] c"not found\00" -@.str.6796 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6797 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6798 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6799 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6800 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6801 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6802 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6803 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6804 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6805 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6806 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6807 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.6808 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6809 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" -@.str.6810 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6811 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6812 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6813 = private unnamed_addr constant [21 x i8] c"error: the library '\00" -@.str.6814 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" -@.str.6815 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6816 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6817 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6818 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6819 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6820 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6821 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6822 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.6824 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.6825 = private unnamed_addr constant [6 x i8] c" more\00" -@.str.6826 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6827 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" -@.str.6828 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6829 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6830 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6831 = private unnamed_addr constant [5 x i8] c"come\00" -@.str.6832 = private unnamed_addr constant [6 x i8] c"comes\00" -@.str.6833 = private unnamed_addr constant [8 x i8] c"error: \00" -@.str.6834 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6835 = private unnamed_addr constant [8 x i8] c" from \22\00" -@.str.6836 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6837 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" -@.str.6838 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6839 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6840 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6841 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" -@.str.6842 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6843 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6844 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6845 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" -@.str.6846 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6847 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6848 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6849 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6850 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6851 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6852 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6853 = private unnamed_addr constant [13 x i8] c" link \22\00" -@.str.6854 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6855 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6856 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6857 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6858 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6859 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6860 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6861 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6862 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6863 = private unnamed_addr constant [5 x i8] c"/rt-\00" -@.str.6864 = private unnamed_addr constant [4 x i8] c"2.5\00" -@.str.6865 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6866 = private unnamed_addr constant [6 x i8] c".part\00" -@.str.6867 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6869 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6870 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6871 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6872 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6873 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6874 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6875 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6876 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" -@.str.6877 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" -@.str.6878 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" -@.str.6879 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6880 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6881 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6882 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6883 = private unnamed_addr constant [9 x i8] c"FINCH_CC\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 [5 x i8] c"%.*s\00" -@.str.6887 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6888 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str.6889 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6890 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6891 = private unnamed_addr constant [11 x i8] c" --target=\00" -@.str.6892 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6893 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6894 = private unnamed_addr constant [8 x i8] c" -w -c \00" -@.str.6895 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6896 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6897 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6899 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6900 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6901 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6902 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" -@.str.6903 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6904 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6905 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6906 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6908 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6909 = private unnamed_addr constant [5 x i8] c" -lm\00" -@.str.6910 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6911 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6912 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6913 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6914 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6915 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" -@.str.6916 = private unnamed_addr constant [9 x i8] c" -shared\00" -@.str.6917 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6918 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6919 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6920 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6921 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6922 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6923 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6924 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6925 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6926 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6927 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6928 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6929 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" -@.str.6930 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6931 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6932 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6934 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6935 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6936 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6937 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.6938 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6939 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6940 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6941 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6942 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6943 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" -@.str.6944 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" -@.str.6945 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6946 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6947 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6948 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6949 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6950 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6951 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6952 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6953 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6954 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6955 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6956 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6957 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6958 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6959 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6960 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.6961 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6962 = private unnamed_addr constant [6 x i8] c"/-_.~\00" -@.str.6963 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6964 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.6965 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6966 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6967 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6968 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6969 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6970 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6971 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6972 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6973 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6974 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6975 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6976 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6977 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @getchar() -@.str.6978 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6979 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6980 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.6981 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -declare i32 @feof(ptr) -@.str.6982 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" -@.str.6983 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6984 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" -@.str.6985 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6986 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6987 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" -@.str.6988 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" -@.str.6989 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" -@.str.6990 = private unnamed_addr constant [1 x i8] c"\00" -declare i64 @fwrite(ptr, i64, i64, ptr) -@.str.6991 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6992 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6993 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.6994 = private unnamed_addr constant [7 x i8] c"result\00" -@.str.6995 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6996 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6997 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.6998 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.6999 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7000 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7001 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7002 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7003 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7004 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7005 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7006 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.7007 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7008 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7009 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7010 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7011 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7012 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7013 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7014 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7015 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7016 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7017 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7018 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.7019 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7020 = private unnamed_addr constant [3 x i8] c"@R\00" -@.str.7021 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7022 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7023 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7024 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7025 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7026 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7027 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7028 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7029 = private unnamed_addr constant [3 x i8] c"@V\00" -@.str.7030 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7031 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7032 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7033 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7034 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7035 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7036 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7037 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7038 = private unnamed_addr constant [3 x i8] c"@F\00" -@.str.7039 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7040 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7041 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7042 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7043 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7044 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7045 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7046 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7047 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7048 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7049 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.7050 = private unnamed_addr constant [3 x i8] c"@S\00" -@.str.7051 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7052 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7053 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7054 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7055 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7056 = private unnamed_addr constant [4 x i8] c"@SF\00" -@.str.7057 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7058 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7059 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7060 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7061 = private unnamed_addr constant [3 x i8] c"@E\00" -@.str.7062 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7063 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7064 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7065 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7066 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7067 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7068 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7069 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7070 = private unnamed_addr constant [3 x i8] c"@I\00" -@.str.7071 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7072 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7073 = private unnamed_addr constant [5 x i8] c"/doc\00" -@.str.7074 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.7075 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7076 = private unnamed_addr constant [12 x i8] c" --overlay \00" -@.str.7077 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.7078 = private unnamed_addr constant [9 x i8] c"/out.txt\00" -@.str.7079 = private unnamed_addr constant [8 x i8] c" index \00" -@.str.7080 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.7081 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.7082 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7083 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7084 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7085 = private unnamed_addr constant [9 x i8] c"severity\00" -@.str.7086 = private unnamed_addr constant [7 x i8] c"source\00" -@.str.7087 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7088 = private unnamed_addr constant [8 x i8] c"message\00" -@.str.7089 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7090 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7091 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7092 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7093 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7094 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7095 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7096 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7097 = private unnamed_addr constant [9 x i8] c"contents\00" -@.str.7098 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7099 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7100 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7101 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7102 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7103 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7104 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7105 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7106 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7107 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7108 = private unnamed_addr constant [15 x i8] c"selectionRange\00" -@.str.7109 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7110 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7111 = private unnamed_addr constant [7 x i8] c"detail\00" -@.str.7112 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7113 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7114 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7115 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7116 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7117 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7118 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7119 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" -@.str.7120 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7121 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7122 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7123 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7124 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7125 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7126 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7127 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7128 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7129 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7130 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7131 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7132 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7133 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7135 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7136 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7137 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7138 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7139 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7140 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7141 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.7142 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7143 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7144 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7145 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7146 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7147 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7148 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7149 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7150 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7151 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.7152 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7153 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7155 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7157 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7158 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7159 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7160 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7161 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7162 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7163 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7164 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7165 = private unnamed_addr constant [7 x i8] c"module\00" -@.str.7166 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7167 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7168 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7169 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7170 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7171 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" -@.str.7172 = private unnamed_addr constant [6 x i8] c"items\00" -@.str.7173 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7174 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7175 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7176 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7177 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7178 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7179 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7180 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7181 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7182 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7183 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7184 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7185 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7186 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7187 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7188 = private unnamed_addr constant [11 x i8] c"parameters\00" -@.str.7189 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7190 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7191 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7192 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7193 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7194 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7195 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7196 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7197 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7198 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7199 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7200 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7201 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7202 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7203 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.7204 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7205 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.7206 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.7207 = private unnamed_addr constant [11 x i8] c"initialize\00" -@.str.7208 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" -@.str.7209 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" -@.str.7210 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" -@.str.7211 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" -@.str.7212 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7213 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7214 = private unnamed_addr constant [19 x i8] c"completionProvider\00" -@.str.7215 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.7216 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7217 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7218 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" -@.str.7219 = private unnamed_addr constant [13 x i8] c"capabilities\00" -@.str.7220 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7221 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7222 = private unnamed_addr constant [11 x i8] c"serverInfo\00" -@.str.7223 = private unnamed_addr constant [9 x i8] c"shutdown\00" -@.str.7224 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.7225 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" -@.str.7226 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" -@.str.7227 = private unnamed_addr constant [15 x i8] c"contentChanges\00" -@.str.7228 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7229 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7230 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" -@.str.7231 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" -@.str.7232 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7233 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7234 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7235 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7236 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7237 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7238 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7239 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" -@.str.7240 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7241 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7242 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7243 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7244 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7245 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7246 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7247 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7248 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7249 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7250 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7251 = private unnamed_addr constant [12 x i8] c"/finch_lsp_\00" -@.str.7252 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7253 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7254 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7255 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7256 = private unnamed_addr constant [3 x i8] c"\5C\22\00" -@.str.7257 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.7258 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.7259 = private unnamed_addr constant [3 x i8] c"\5Cr\00" -@.str.7260 = private unnamed_addr constant [3 x i8] c"\5Ct\00" -@.str.7261 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" -@.str.7262 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7263 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7264 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.7265 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7266 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7267 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7268 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7269 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7270 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7271 = private unnamed_addr constant [3 x i8] c": \00" -@.str.7272 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7273 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7274 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7275 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7276 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7277 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7278 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7279 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7280 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7281 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7282 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7283 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7284 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7285 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7286 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7287 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7288 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7289 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7290 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7291 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7292 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7293 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7294 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7295 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7296 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7297 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7298 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7299 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7300 = private unnamed_addr constant [3 x i8] c"{}\00" -@.str.7301 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7302 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7303 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.7304 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7305 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7306 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7307 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7308 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7309 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7310 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7311 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.7312 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7313 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.7314 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7315 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7316 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7317 = private unnamed_addr constant [3 x i8] c" \00" -@.str.7318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7319 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7320 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7321 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7322 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7323 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7324 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7325 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7326 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7327 = private unnamed_addr constant [6 x i8] c"line \00" -@.str.7328 = private unnamed_addr constant [10 x i8] c", column \00" -@.str.7329 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7330 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7331 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7332 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7333 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7335 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7336 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7337 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7338 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7340 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7341 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7342 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7343 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7344 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7345 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7346 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7347 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7348 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7349 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7350 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7351 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7352 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7353 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7354 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7355 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7356 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7357 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7358 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7359 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7360 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7361 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7362 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7363 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7364 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7365 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7366 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7367 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7368 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" -@.str.7369 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7371 = private unnamed_addr constant [14 x i8] c"json: found '\00" -@.str.7372 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7373 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7374 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7375 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7376 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7377 = private unnamed_addr constant [9 x i8] c"' where \00" -@.str.7378 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7379 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7380 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7381 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7382 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7383 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7384 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7385 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7386 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7387 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7388 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7389 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7390 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7391 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7392 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7393 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7394 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7395 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7396 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7397 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7398 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7399 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7400 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7401 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7402 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7403 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7404 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" -@.str.7405 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7406 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7407 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7408 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7409 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7410 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7411 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7412 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7413 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7414 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7415 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7416 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7418 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7419 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7420 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" -@.str.7421 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7422 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7423 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7424 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7425 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7426 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7427 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7428 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7429 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7430 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7431 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7432 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7434 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7435 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" -@.str.7436 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7437 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7438 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7439 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7440 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7441 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7442 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7443 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7444 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7445 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7446 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7448 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7449 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7450 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.7451 = private unnamed_addr constant [3 x i8] c"\5Cu\00" -@.str.7452 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7453 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7454 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" -@.str.7455 = private unnamed_addr constant [13 x i8] c" in a text (\00" -@.str.7456 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7457 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7458 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7459 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7460 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7461 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7462 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7463 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7464 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7465 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7466 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7467 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7468 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7469 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7470 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7471 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7472 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7473 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7474 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7475 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7476 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7477 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7478 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7479 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7480 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7481 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7482 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7483 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7484 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7485 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7486 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7487 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7488 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7489 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7491 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7492 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7493 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7494 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7495 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7496 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7497 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7498 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7499 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7500 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7501 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7502 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7503 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7504 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7505 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7506 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7507 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7508 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7509 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7510 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7511 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.7512 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7513 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7514 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7515 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7516 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7517 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7518 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7519 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7520 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7521 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" -@.str.7522 = private unnamed_addr constant [4 x i8] c"':'\00" -@.str.7523 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7524 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7525 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7526 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7527 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7528 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7529 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" -@.str.7530 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7531 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7532 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7533 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7534 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7535 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7536 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7537 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7538 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" -@.str.7539 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7540 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7541 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7542 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7543 = private unnamed_addr constant [20 x i8] c"the end of the text\00" -@.str.7544 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.7545 = private unnamed_addr constant [13 x i8] c"std/json.fch\00" -@.str.7546 = private unnamed_addr constant [13 x i8] c"std/path.fch\00" -@.str.7547 = private unnamed_addr constant [13 x i8] c"std/proc.fch\00" -@.str.7548 = private unnamed_addr constant [21 x i8] c"std/proc_windows.fch\00" -@.str.7549 = private unnamed_addr constant [13 x i8] c"std/time.fch\00" -@.str.7550 = private unnamed_addr constant [21 x i8] c"std/time_windows.fch\00" -@.str.7551 = private unnamed_addr constant [16 x i8] c"std/finch_win.h\00" -@.str.7552 = private unnamed_addr constant [24982 x i8] c"// The Finch runtime: string and array helpers, input, files and runtime errors.\0A// It is embedded in the compiler, compiled once into a cache folder, and linked\0A// statically into every Finch program. Everything here is plain C with no state.\0A//\0A// Layout shared with the compiler (src/codegen.cpp):\0A// str = { char *ptr; int64 len; int64 cap } ptr is always NUL-terminated\0A// cap > 0 : heap memory owned by the value (cap bytes allocated)\0A// cap == 0 : a string literal, valid forever, never written to\0A// cap == -1: borrowed from C, must be copied before it is kept\0A// []T = { T *ptr; int64 len; int64 cap } owns ptr when cap > 0\0A// map[K]V: see \22maps\22 below\0A\0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#ifndef _WIN32\0A#include \0A#endif\0A\0Atypedef struct {\0A char *ptr;\0A int64_t len;\0A int64_t cap;\0A} FStr;\0A\0Atypedef struct {\0A void *ptr;\0A int64_t len;\0A int64_t cap;\0A} FArr;\0A\0Astatic char empty[1] = \22\22;\0A\0A// ---------- runtime errors ----------\0A\0A// A program that loads Finch libraries (finch build --shared) can take runtime errors over\0A// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler\0A// gets the message and must not return (longjmp out, or exit itself).\0Astatic void (*fatal_hook)(const char *msg);\0Avoid finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; }\0A\0Astatic __attribute__((noreturn)) void fatal(const char *msg) {\0A if (fatal_hook) fatal_hook(msg);\0A fflush(stdout);\0A fprintf(stderr, \22%s\5Cn\22, msg);\0A exit(1);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) {\0A char full[1024];\0A snprintf(full, sizeof full, \22%s:%lld: runtime error: %s\22, file, (long long)line, msg);\0A fflush(stdout);\0A fatal(full);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) {\0A char msg[128];\0A snprintf(msg, sizeof msg, \22index %lld is out of range (the length is %lld)\22, (long long)i, (long long)len);\0A finch_panic(file, line, msg);\0A}\0A\0Astatic void *must(void *p) {\0A if (!p) {\0A fflush(stdout);\0A fatal(\22runtime error: out of memory\22);\0A }\0A return p;\0A}\0A\0Avoid *finch_alloc(int64_t n) { return must(malloc(n ? (size_t)n : 1)); }\0Avoid *finch_zalloc(int64_t n) { return must(calloc(1, n ? (size_t)n : 1)); }\0A\0A// ---------- strings ----------\0A\0Astatic void str_heap(FStr *out, const char *p, int64_t len) {\0A char *m = finch_alloc(len + 1);\0A if (len) memcpy(m, p, (size_t)len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void str_static(FStr *out, const char *lit) {\0A out->ptr = (char *)lit;\0A out->len = (int64_t)strlen(lit);\0A out->cap = 0;\0A}\0A\0A// A copy that can be kept: literals are shared, everything else is duplicated.\0Avoid finch_str_copy(FStr *out, const FStr *s) {\0A if (s->cap == 0) *out = *s;\0A else str_heap(out, s->ptr, s->len);\0A}\0A\0A// Make `s` writable (before s[i] = c).\0Avoid finch_str_own(FStr *s) {\0A if (s->cap > 0) return;\0A FStr t;\0A str_heap(&t, s->ptr, s->len);\0A *s = t;\0A}\0A\0Avoid finch_str_drop(FStr *s) {\0A if (s->cap > 0) free(s->ptr);\0A}\0A\0Avoid finch_str_from_c(FStr *out, const char *p) {\0A if (!p) {\0A str_static(out, empty);\0A return;\0A }\0A out->ptr = (char *)p;\0A out->len = (int64_t)strlen(p);\0A out->cap = -1;\0A}\0A\0Avoid finch_str_concat(FStr *out, const FStr *a, const FStr *b) {\0A int64_t len = a->len + b->len;\0A char *m = finch_alloc(len + 1);\0A memcpy(m, a->ptr, (size_t)a->len);\0A memcpy(m + a->len, b->ptr, (size_t)b->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Aint finch_str_eq(const FStr *a, const FStr *b) {\0A return a->len == b->len && memcmp(a->ptr, b->ptr, (size_t)a->len) == 0;\0A}\0A\0Aint64_t finch_str_cmp(const FStr *a, const FStr *b) {\0A int64_t n = a->len < b->len ? a->len : b->len;\0A int c = memcmp(a->ptr, b->ptr, (size_t)n);\0A if (c) return c < 0 ? -1 : 1;\0A return a->len < b->len ? -1 : a->len > b->len;\0A}\0A\0Avoid finch_str_from_int(FStr *out, int64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%lld\22, (long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_uint(FStr *out, uint64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%llu\22, (unsigned long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_float(FStr *out, double v) {\0A char buf[64];\0A int n = snprintf(buf, sizeof buf, \22%g\22, v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_char(FStr *out, char c) { str_heap(out, &c, 1); }\0A\0Avoid finch_str_from_bool(FStr *out, int b) { str_static(out, b ? \22true\22 : \22false\22); }\0A\0Astatic void number_error(char *msg, size_t size, const FStr *s, const char *kind) {\0A snprintf(msg, size, \22can't turn \5C\22%.*s\5C\22 into %s\22, (int)(s->len > 100 ? 100 : s->len), s->ptr ? s->ptr : \22\22, kind);\0A}\0A\0Astatic int parse_int(const FStr *s, int64_t *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A errno = 0;\0A long long v = strtoll(p, &end, 10);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end || errno == ERANGE);\0A}\0A\0Astatic int parse_float(const FStr *s, double *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A double v = strtod(p, &end);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end);\0A}\0A\0Aint64_t finch_str_to_int(const FStr *s, const char *file, int64_t line) {\0A int64_t v;\0A if (!parse_int(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0Adouble finch_str_to_float(const FStr *s, const char *file, int64_t line) {\0A double v;\0A if (!parse_float(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0A// ---------- errors as values: int(s) or 0, try read_file(p) ... ----------\0A// Each gives back 1 on success; on failure 0, with the message in *err.\0A\0Astatic void set_error(FStr *err, const char *msg) { str_heap(err, msg, (int64_t)strlen(msg)); }\0A\0Aint finch_str_try_int(const FStr *s, int64_t *out, FStr *err) {\0A if (parse_int(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Aint finch_str_try_float(const FStr *s, double *out, FStr *err) {\0A if (parse_float(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Astatic void file_error(FStr *err, const char *what, const FStr *path) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't %s the file \5C\22%.*s\5C\22: %s\22, what, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr ? path->ptr : \22\22, strerror(errno));\0A set_error(err, msg);\0A}\0A\0A// when `fn main() -> !` fails\0Avoid finch_report_error(const FStr *msg) {\0A fflush(stdout);\0A fprintf(stderr, \22error: %.*s\5Cn\22, (int)msg->len, msg->ptr ? msg->ptr : \22\22);\0A}\0A\0Avoid finch_str_sub(FStr *out, const FStr *s, int64_t start, int64_t end, const char *file, int64_t line) {\0A if (start < 0 || end > s->len || start > end) {\0A char msg[160];\0A snprintf(msg, sizeof msg, \22sub(%lld, %lld) is out of range (the length is %lld)\22, (long long)start,\0A (long long)end, (long long)s->len);\0A finch_panic(file, line, msg);\0A }\0A str_heap(out, s->ptr + start, end - start);\0A}\0A\0Aint64_t finch_str_find(const FStr *s, const FStr *t) {\0A if (t->len == 0) return 0;\0A for (int64_t i = 0; i + t->len <= s->len; i++)\0A if (s->ptr[i] == t->ptr[0] && memcmp(s->ptr + i, t->ptr, (size_t)t->len) == 0) return i;\0A return -1;\0A}\0A\0Aint finch_str_starts(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Aint finch_str_ends(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr + s->len - t->len, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Avoid finch_str_trim(FStr *out, const FStr *s) {\0A int64_t a = 0, b = s->len;\0A while (a < b && isspace((unsigned char)s->ptr[a])) a++;\0A while (b > a && isspace((unsigned char)s->ptr[b - 1])) b--;\0A str_heap(out, s->ptr + a, b - a);\0A}\0A\0Avoid finch_str_upper(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)toupper((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_lower(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)tolower((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_replace(FStr *out, const FStr *s, const FStr *from, const FStr *to) {\0A if (from->len == 0) {\0A str_heap(out, s->ptr, s->len);\0A return;\0A }\0A int64_t count = 0;\0A for (int64_t i = 0; i + from->len <= s->len;) {\0A if (memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A count++;\0A i += from->len;\0A } else {\0A i++;\0A }\0A }\0A int64_t len = s->len + count * (to->len - from->len);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < s->len;) {\0A if (i + from->len <= s->len && memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A memcpy(w, to->ptr, (size_t)to->len);\0A w += to->len;\0A i += from->len;\0A } else {\0A *w++ = s->ptr[i++];\0A }\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len);\0A\0A// \22a,b,,c\22.split(\22,\22) -> [\22a\22, \22b\22, \22\22, \22c\22]; split(\22\22) gives single characters.\0Avoid finch_str_split(FArr *out, const FStr *s, const FStr *sep) {\0A out->ptr = NULL;\0A out->len = out->cap = 0;\0A if (sep->len == 0) {\0A for (int64_t i = 0; i < s->len; i++) arr_push_str(out, s->ptr + i, 1);\0A return;\0A }\0A int64_t start = 0;\0A for (int64_t i = 0; i + sep->len <= s->len;) {\0A if (memcmp(s->ptr + i, sep->ptr, (size_t)sep->len) == 0) {\0A arr_push_str(out, s->ptr + start, i - start);\0A i += sep->len;\0A start = i;\0A } else {\0A i++;\0A }\0A }\0A arr_push_str(out, s->ptr + start, s->len - start);\0A}\0A\0Avoid finch_str_join(FStr *out, const FArr *parts, const FStr *sep) {\0A const FStr *p = parts->ptr;\0A int64_t len = 0;\0A for (int64_t i = 0; i < parts->len; i++) len += p[i].len + (i ? sep->len : 0);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < parts->len; i++) {\0A if (i) {\0A memcpy(w, sep->ptr, (size_t)sep->len);\0A w += sep->len;\0A }\0A memcpy(w, p[i].ptr, (size_t)p[i].len);\0A w += p[i].len;\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_repeat(FStr *out, const FStr *s, int64_t n) {\0A if (n < 0) n = 0;\0A int64_t len = s->len * n;\0A char *m = finch_alloc(len + 1);\0A for (int64_t i = 0; i < n; i++) memcpy(m + i * s->len, s->ptr, (size_t)s->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_from_bytes(FStr *out, const FArr *bytes) { str_heap(out, bytes->ptr, bytes->len); }\0A\0A// ---------- building text: print(x) and str(x) of arrays, maps and structs ----------\0A// A buffer starts as an empty str and grows on the heap.\0A\0Avoid finch_buf_add(FStr *b, const char *p, int64_t n) {\0A if (b->len + n + 1 > b->cap) {\0A int64_t cap = b->cap > 0 ? b->cap * 2 : 32;\0A while (cap < b->len + n + 1) cap *= 2;\0A b->ptr = must(realloc(b->cap > 0 ? b->ptr : NULL, (size_t)cap));\0A b->cap = cap;\0A }\0A if (n) memcpy(b->ptr + b->len, p, (size_t)n);\0A b->len += n;\0A b->ptr[b->len] = 0;\0A}\0A\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) {\0A char t[64];\0A va_list ap;\0A va_start(ap, fmt);\0A int n = vsnprintf(t, sizeof t, fmt, ap);\0A va_end(ap);\0A finch_buf_add(b, t, n);\0A}\0A\0Avoid finch_buf_int(FStr *b, int64_t v) { buf_fmt(b, \22%lld\22, (long long)v); }\0Avoid finch_buf_uint(FStr *b, uint64_t v) { buf_fmt(b, \22%llu\22, (unsigned long long)v); }\0Avoid finch_buf_float(FStr *b, double v) { buf_fmt(b, \22%g\22, v); }\0Avoid finch_buf_bool(FStr *b, int v) { finch_buf_add(b, v ? \22true\22 : \22false\22, v ? 4 : 5); }\0Avoid finch_buf_ptr(FStr *b, const void *p) {\0A if (p) buf_fmt(b, \220x%llx\22, (unsigned long long)(uintptr_t)p);\0A else finch_buf_add(b, \22null\22, 4);\0A}\0A\0Avoid finch_buf_char(FStr *b, char c, int quoted) {\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A finch_buf_add(b, &c, 1);\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A}\0A\0Avoid finch_buf_str(FStr *b, const FStr *s, int quoted) {\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A finch_buf_add(b, s->ptr, s->len);\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A}\0A\0A// print the buffer and free it\0Avoid finch_buf_print(FStr *b) {\0A if (b->len) fwrite(b->ptr, 1, (size_t)b->len, stdout);\0A if (b->cap > 0) free(b->ptr);\0A}\0A\0A// ---------- arrays ----------\0A\0Avoid finch_arr_reserve(FArr *a, int64_t need, int64_t es) {\0A if (need <= a->cap) return;\0A int64_t cap = a->cap * 2;\0A if (cap < 4) cap = 4;\0A if (cap < need) cap = need;\0A a->ptr = must(realloc(a->cap > 0 ? a->ptr : NULL, (size_t)(cap * es)));\0A a->cap = cap;\0A}\0A\0Avoid finch_arr_make(FArr *out, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A out->ptr = len ? finch_zalloc(len * es) : NULL;\0A out->len = len;\0A out->cap = len;\0A}\0A\0A// grow or shrink to `len`; new elements are zero\0Avoid finch_arr_resize(FArr *a, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A finch_arr_reserve(a, len, es);\0A if (len > a->len) memset((char *)a->ptr + a->len * es, 0, (size_t)((len - a->len) * es));\0A a->len = len;\0A}\0A\0A// a byte-for-byte copy of the elements (the compiler deep-copies owning elements afterwards)\0Avoid finch_arr_clone_raw(FArr *out, const FArr *a, int64_t es) {\0A out->len = a->len;\0A out->cap = a->len;\0A out->ptr = a->len ? finch_alloc(a->len * es) : NULL;\0A if (a->len) memcpy(out->ptr, a->ptr, (size_t)(a->len * es));\0A}\0A\0Avoid finch_arr_free(FArr *a) {\0A if (a->cap > 0) free(a->ptr);\0A}\0A\0A// open a hole at i (0 <= i <= len), len grows by one\0Avoid finch_arr_insert_gap(FArr *a, int64_t i, int64_t es, const char *file, int64_t line) {\0A if (i < 0 || i > a->len) finch_panic_index(file, line, i, a->len);\0A finch_arr_reserve(a, a->len + 1, es);\0A char *p = a->ptr;\0A memmove(p + (i + 1) * es, p + i * es, (size_t)((a->len - i) * es));\0A a->len++;\0A}\0A\0A// close the hole at i (the element was already moved out), len shrinks by one\0Avoid finch_arr_remove_gap(FArr *a, int64_t i, int64_t es) {\0A char *p = a->ptr;\0A memmove(p + i * es, p + (i + 1) * es, (size_t)((a->len - i - 1) * es));\0A a->len--;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len) {\0A finch_arr_reserve(a, a->len + 1, (int64_t)sizeof(FStr));\0A str_heap((FStr *)a->ptr + a->len, p, len);\0A a->len++;\0A}\0A\0Avoid finch_bytes_from_str(FArr *out, const FStr *s) {\0A out->len = out->cap = s->len;\0A out->ptr = s->len ? finch_alloc(s->len) : NULL;\0A if (s->len) memcpy(out->ptr, s->ptr, (size_t)s->len);\0A}\0A\0A// ---------- program arguments, input and files ----------\0A\0Avoid finch_args(FArr *out, int argc, char **argv) {\0A out->len = out->cap = argc;\0A out->ptr = finch_alloc((int64_t)sizeof(FStr) * (argc ? argc : 1));\0A for (int i = 0; i < argc; i++) str_heap((FStr *)out->ptr + i, argv[i], (int64_t)strlen(argv[i]));\0A}\0A\0A// input(\22Name? \22) prints the prompt and reads one line, without the newline.\0Avoid finch_input(FStr *out, const FStr *prompt) {\0A if (prompt->len) fwrite(prompt->ptr, 1, (size_t)prompt->len, stdout);\0A fflush(stdout);\0A // read one line of any length (getline isn't available everywhere)\0A size_t size = 128, n = 0;\0A char *line = finch_alloc((int64_t)size);\0A int c, got = 0;\0A while ((c = fgetc(stdin)) != EOF) {\0A got = 1;\0A if (c == '\5Cn') break;\0A if (n + 1 >= size) line = must(realloc(line, size *= 2));\0A line[n++] = (char)c;\0A }\0A if (!got) {\0A free(line);\0A str_static(out, empty);\0A return;\0A }\0A while (n > 0 && line[n - 1] == '\5Cr') n--;\0A line[n] = 0;\0A out->ptr = line;\0A out->len = (int64_t)n;\0A out->cap = (int64_t)size;\0A}\0A\0Aint finch_file_exists(const FStr *path) {\0A FILE *f = fopen(path->ptr, \22rb\22);\0A if (f) fclose(f);\0A return f != NULL;\0A}\0A\0Aint finch_try_read_file(FStr *out, const FStr *path, FStr *err) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A file_error(err, \22read\22, path);\0A return 0;\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A return 1;\0A}\0A\0Avoid finch_read_file(FStr *out, const FStr *path, const char *file, int64_t line) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't read the file \5C\22%.*s\5C\22: %s\22, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr, strerror(errno));\0A finch_panic(file, line, msg);\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A}\0A\0A// shell(\22ls -l\22): run a command, give back its exit code\0Aint64_t finch_shell(const FStr *cmd) {\0A fflush(stdout);\0A int status = system(cmd->ptr ? cmd->ptr : \22\22);\0A#ifdef _WIN32\0A return status; // Windows gives the exit code directly\0A#else\0A if (status == -1) return -1;\0A if (WIFEXITED(status)) return WEXITSTATUS(status);\0A return 128 + (WIFSIGNALED(status) ? WTERMSIG(status) : 0);\0A#endif\0A}\0A\0Aint finch_delete_file(const FStr *path) { return remove(path->ptr ? path->ptr : \22\22) == 0; }\0A\0Aint finch_try_delete_file(const FStr *path, FStr *err) {\0A if (remove(path->ptr ? path->ptr : \22\22) == 0) return 1;\0A file_error(err, \22delete\22, path);\0A return 0;\0A}\0A\0A// stdin/stdout/stderr are macros on some systems (Windows), so Finch asks for them here\0Avoid *finch_std_stream(int i) { return i == 0 ? (void *)stdin : i == 1 ? (void *)stdout : (void *)stderr; }\0A\0Aint finch_write_file(const FStr *path, const FStr *text) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22wb\22);\0A if (!f) return 0;\0A size_t put = text->len ? fwrite(text->ptr, 1, (size_t)text->len, f) : 0;\0A return fclose(f) == 0 && put == (size_t)text->len;\0A}\0A\0Aint finch_try_write_file(const FStr *path, const FStr *text, FStr *err) {\0A errno = 0;\0A if (finch_write_file(path, text)) return 1;\0A if (!errno) errno = EIO;\0A file_error(err, \22write\22, path);\0A return 0;\0A}\0A\0A// ---------- maps ----------\0A// map[K]V = { entries; len; used; cap; index; icap; adds }\0A// entries: `used` slots of es bytes, each { uint64 hash; K key; V value }, in insertion order.\0A// A removed entry keeps its slot (hash 0) until the next resize packs the slots.\0A// index: icap slots (a power of two, at least 2 * cap): -1 empty, -2 removed, else an entry number.\0A// adds: how many keys were ever added; a `for` over the map stops with an error if it changes.\0A// The compiler stores, copies and drops keys and values; the runtime only finds and places entries.\0A// Keys are compared byte for byte (numbers, chars, bools) or as text (kstr).\0A\0Atypedef struct {\0A char *entries;\0A int64_t len, used, cap;\0A int64_t *index;\0A int64_t icap;\0A int64_t adds;\0A} FMap;\0A\0Astatic uint64_t map_hash(const void *key, int64_t ks, int kstr) {\0A const unsigned char *p;\0A size_t n;\0A if (kstr) {\0A const FStr *s = key;\0A p = (const unsigned char *)s->ptr;\0A n = (size_t)s->len;\0A } else {\0A p = key;\0A n = (size_t)ks;\0A }\0A uint64_t h = 1469598103934665603ULL; // FNV-1a, then mixed so the low bits spread well\0A for (size_t i = 0; i < n; i++) {\0A h ^= p[i];\0A h *= 1099511628211ULL;\0A }\0A h ^= h >> 31;\0A h *= 0xbf58476d1ce4e5b9ULL;\0A h ^= h >> 29;\0A return h | 1; // 0 marks a removed entry\0A}\0A\0Astatic int map_key_eq(const char *a, const void *b, int64_t ks, int kstr) {\0A if (!kstr) return memcmp(a, b, (size_t)ks) == 0;\0A const FStr *x = (const FStr *)a, *y = b;\0A return x->len == y->len && (x->len == 0 || memcmp(x->ptr, y->ptr, (size_t)x->len) == 0);\0A}\0A\0Astatic void map_reindex(FMap *m, int64_t es) {\0A if (m->len != m->used) { // pack the slots of removed entries away\0A int64_t j = 0;\0A for (int64_t i = 0; i < m->used; i++) {\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == 0) continue;\0A if (i != j) memmove(m->entries + j * es, e, (size_t)es);\0A j++;\0A }\0A m->used = j;\0A }\0A int64_t icap = 16;\0A while (icap < m->cap * 2) icap *= 2;\0A free(m->index);\0A m->index = finch_alloc(icap * (int64_t)sizeof(int64_t));\0A memset(m->index, 0xff, (size_t)icap * sizeof(int64_t));\0A m->icap = icap;\0A for (int64_t i = 0; i < m->used; i++) {\0A uint64_t h = *(uint64_t *)(m->entries + i * es);\0A int64_t s = (int64_t)(h & (uint64_t)(icap - 1));\0A while (m->index[s] != -1) s = (s + 1) & (icap - 1);\0A m->index[s] = i;\0A }\0A}\0A\0A// the entry number of `key`, or -1\0Aint64_t finch_map_find(const FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr) {\0A if (m->len == 0) return -1;\0A uint64_t h = map_hash(key, ks, kstr);\0A for (int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));; s = (s + 1) & (m->icap - 1)) {\0A int64_t i = m->index[s];\0A if (i == -1) return -1;\0A if (i < 0) continue;\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == h && map_key_eq(e + 8, key, ks, kstr)) return i;\0A }\0A}\0A\0A// The entry for `key`. A new one is zeroed except its hash (*added = 1); the compiler then stores the key.\0Aint64_t finch_map_slot(FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr, int32_t *added) {\0A int64_t i = finch_map_find(m, key, es, ks, kstr);\0A *added = i < 0;\0A if (i >= 0) return i;\0A if (m->used == m->cap) {\0A if (m->len * 4 < m->cap * 3) { // many removed slots: pack them instead of growing\0A map_reindex(m, es);\0A } else {\0A m->cap = m->cap ? m->cap * 2 : 8;\0A m->entries = must(realloc(m->entries, (size_t)(m->cap * es)));\0A map_reindex(m, es);\0A }\0A }\0A uint64_t h = map_hash(key, ks, kstr);\0A i = m->used++;\0A char *e = m->entries + i * es;\0A memset(e, 0, (size_t)es);\0A *(uint64_t *)e = h;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] >= 0) s = (s + 1) & (m->icap - 1);\0A m->index[s] = i;\0A m->len++;\0A m->adds++;\0A return i;\0A}\0A\0A// Forget entry i (its key and value were already dropped by the compiler).\0Avoid finch_map_remove_at(FMap *m, int64_t i, int64_t es) {\0A char *e = m->entries + i * es;\0A uint64_t h = *(uint64_t *)e;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] != i) s = (s + 1) & (m->icap - 1);\0A m->index[s] = -2;\0A *(uint64_t *)e = 0;\0A if (--m->len == 0) {\0A m->used = 0;\0A memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A }\0A}\0A\0Avoid finch_map_clear(FMap *m) {\0A m->len = m->used = 0;\0A if (m->index) memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0Avoid finch_map_free(FMap *m) {\0A free(m->entries);\0A free(m->index);\0A}\0A\0A// A copy of the slots and the index; the compiler then copies the keys and values that own memory.\0Avoid finch_map_clone_raw(FMap *out, const FMap *m, int64_t es) {\0A *out = *m;\0A if (!m->cap) return;\0A out->entries = finch_alloc(m->cap * es);\0A memcpy(out->entries, m->entries, (size_t)(m->used * es));\0A out->index = finch_alloc(m->icap * (int64_t)sizeof(int64_t));\0A memcpy(out->index, m->index, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_changed(const char *file, int64_t line) {\0A finch_panic(file, line, \22a key was added to the map while looping over it (collect the new keys, and add them after the loop)\22);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_missing(const char *file, int64_t line, const FStr *key) {\0A char msg[200];\0A snprintf(msg, sizeof msg, \22the key %.*s is not in the map (check with .has(key), or use .get(key, default))\22,\0A (int)(key->len > 100 ? 100 : key->len), key->ptr ? key->ptr : \22\22);\0A finch_panic(file, line, msg);\0A}\0A\00" -@.str.7553 = private unnamed_addr constant [12885 x i8] c"// JSON: read it, build it, write it.\0A//\0A// import json\0A//\0A// doc := try json.parse(\22{\5C\22name\5C\22: \5C\22Finch\5C\22, \5C\22tags\5C\22: [\5C\22fast\5C\22, \5C\22small\5C\22], \5C\22stars\5C\22: 5}\22)\0A// print(doc.get(\22name\22).str_or(\22\22)) Finch\0A// print(doc.get(\22tags\22).at(1).str_or(\22\22)) small\0A// print(doc.get(\22stars\22).int_or(0)) 5\0A// print(doc.get(\22missing\22).is_null()) true (a missing key is null, so chains never fail)\0A//\0A// out := json.new_object()\0A// out.set(\22ok\22, json.new_bool(true))\0A// list := json.new_list()\0A// list.push(json.new_number(1.5))\0A// out.set(\22values\22, list)\0A// print(json.stringify(out)) {\22ok\22:true,\22values\22:[1.5]}\0A// print(json.pretty(out)) the same, over several lines\0A\0Aenum Kind { Null, Bool, Number, Text, List, Object }\0A\0A// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number,\0A// text for Text, items for List, and items with keys (the same length, in the same order) for Object.\0Astruct Json {\0A Kind kind\0A bool flag\0A float num\0A str text\0A []Json items\0A []str keys\0A}\0A\0Afn new_null() -> Json {\0A return Json(kind: Kind.Null)\0A}\0A\0Afn new_bool(bool b) -> Json {\0A return Json(kind: Kind.Bool, flag: b)\0A}\0A\0Afn new_number(float n) -> Json {\0A return Json(kind: Kind.Number, num: n)\0A}\0A\0Afn new_text(str s) -> Json {\0A return Json(kind: Kind.Text, text: s)\0A}\0A\0Afn new_list() -> Json {\0A return Json(kind: Kind.List)\0A}\0A\0Afn new_object() -> Json {\0A return Json(kind: Kind.Object)\0A}\0A\0A// ---------- looking inside ----------\0A\0Afn Json.is_null() -> bool {\0A return self.kind == Kind.Null\0A}\0A\0A// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest\0Afn Json.len() -> int {\0A return match self.kind {\0A List, Object -> self.items.len\0A Text -> self.text.len\0A else -> 0\0A }\0A}\0A\0Afn Json.has(str key) -> bool {\0A return self.kind == Kind.Object && self.keys.contains(key)\0A}\0A\0A// the value of a key of an object; null if there is none (or this is not an object)\0Afn Json.get(str key) -> Json {\0A if self.kind != Kind.Object {\0A return new_null()\0A }\0A i := self.keys.find(key)\0A if i < 0 {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the element of a list; null if there is none\0Afn Json.at(int i) -> Json {\0A if self.kind != Kind.List || i < 0 || i >= self.items.len {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the value if it is of that kind, else what was given\0Afn Json.str_or(str fallback) -> str {\0A if self.kind == Kind.Text {\0A return self.text\0A }\0A return fallback\0A}\0A\0Afn Json.float_or(float fallback) -> float {\0A if self.kind == Kind.Number {\0A return self.num\0A }\0A return fallback\0A}\0A\0Afn Json.int_or(int fallback) -> int {\0A if self.kind == Kind.Number {\0A return int(self.num)\0A }\0A return fallback\0A}\0A\0Afn Json.bool_or(bool fallback) -> bool {\0A if self.kind == Kind.Bool {\0A return self.flag\0A }\0A return fallback\0A}\0A\0A// the keys of an object, in the order they were written\0Afn Json.names() -> []str {\0A return self.keys\0A}\0A\0A// ---------- building ----------\0A\0A// add to the end of a list\0Afn Json.push(Json v) {\0A self.items.push(v)\0A}\0A\0A// give a key a value in an object; a key that is already there is replaced\0Afn Json.set(str key, Json v) {\0A i := self.keys.find(key)\0A if i >= 0 {\0A self.items[i] = v\0A return\0A }\0A self.keys.push(key)\0A self.items.push(v)\0A}\0A\0A// ---------- writing ----------\0A\0Afn quote(str s) -> str {\0A []str parts = [\22\5C\22\22]\0A for c in s {\0A n := int(c)\0A if c == '\22' {\0A parts.push(\22\5C\5C\5C\22\22)\0A } else if c == '\5C\5C' {\0A parts.push(\22\5C\5C\5C\5C\22)\0A } else if c == '\5Cn' {\0A parts.push(\22\5C\5Cn\22)\0A } else if c == '\5Cr' {\0A parts.push(\22\5C\5Cr\22)\0A } else if c == '\5Ct' {\0A parts.push(\22\5C\5Ct\22)\0A } else if n < 32 {\0A parts.push(\22\5C\5Cu00\22 + hexdigit(n / 16) + hexdigit(n % 16))\0A } else {\0A parts.push(str(c))\0A }\0A }\0A parts.push(\22\5C\22\22)\0A return parts.join(\22\22)\0A}\0A\0Afn hexdigit(int n) -> str {\0A digits := \220123456789abcdef\22\0A return str(digits[n])\0A}\0A\0Afn number_text(float n) -> str {\0A if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 {\0A return str(int(n))\0A }\0A return str(n)\0A}\0A\0Astruct Writer {\0A []str out\0A}\0A\0Afn write(Json j, str indent, str pad, ptr[Writer] w) {\0A nl := \22\22\0A inner := \22\22\0A sep := \22,\22\0A colon := \22:\22\0A if indent.len > 0 {\0A nl = \22\5Cn\22\0A inner = pad + indent\0A colon = \22: \22\0A }\0A match j.kind {\0A Null -> w.out.push(\22null\22)\0A Bool -> {\0A if j.flag {\0A w.out.push(\22true\22)\0A } else {\0A w.out.push(\22false\22)\0A }\0A }\0A Number -> w.out.push(number_text(j.num))\0A Text -> w.out.push(quote(j.text))\0A List -> {\0A if j.items.len == 0 {\0A w.out.push(\22[]\22)\0A return\0A }\0A w.out.push(\22[\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22]\22)\0A }\0A Object -> {\0A if j.items.len == 0 {\0A w.out.push(\22{}\22)\0A return\0A }\0A w.out.push(\22{\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner + quote(j.keys[i]) + colon)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22}\22)\0A }\0A }\0A}\0A\0A// the value as text on one line\0Afn stringify(Json j) -> str {\0A w := Writer()\0A write(j, \22\22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// the value as text over several lines, indented by two spaces\0Afn pretty(Json j) -> str {\0A w := Writer()\0A write(j, \22 \22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// ---------- reading ----------\0A\0Astruct Reader {\0A str src\0A int i\0A}\0A\0A// the line and column of a position, for a message\0Afn where(ptr[Reader] r) -> str {\0A line := 1\0A col := 1\0A for k in 0..r.i {\0A if k < r.src.len && r.src[k] == '\5Cn' {\0A line += 1\0A col = 1\0A } else {\0A col += 1\0A }\0A }\0A return \22line \22 + str(line) + \22, column \22 + str(col)\0A}\0A\0Afn peek(ptr[Reader] r) -> char {\0A if r.i < r.src.len {\0A return r.src[r.i]\0A }\0A return char(0)\0A}\0A\0Afn skip_space(ptr[Reader] r) {\0A while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\5Cn' || r.src[r.i] == '\5Ct' || r.src[r.i] == '\5Cr') {\0A r.i += 1\0A }\0A}\0A\0Afn unexpected(ptr[Reader] r, str wanted) -> str {\0A if r.i >= r.src.len {\0A return \22json: the text ends where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A }\0A return \22json: found '\22 + str(r.src[r.i]) + \22' where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A}\0A\0A// does `word` come next?\0Afn comes(ptr[Reader] r, str word) -> bool {\0A return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word\0A}\0A\0Afn expect_word(ptr[Reader] r, str word) -> ! {\0A if !comes(r, word) {\0A return error(unexpected(r, \22'\22 + word + \22'\22))\0A }\0A r.i += word.len\0A}\0A\0Afn hex_value(char c) -> int {\0A if c >= '0' && c <= '9' {\0A return int(c) - int('0')\0A }\0A if c >= 'a' && c <= 'f' {\0A return int(c) - int('a') + 10\0A }\0A if c >= 'A' && c <= 'F' {\0A return int(c) - int('A') + 10\0A }\0A return -1\0A}\0A\0A// a code point as UTF-8\0Afn utf8(int cp) -> str {\0A []u8 b\0A if cp < 128 {\0A b.push(u8(cp))\0A } else if cp < 2048 {\0A b.push(u8(192 + cp / 64))\0A b.push(u8(128 + cp % 64))\0A } else if cp < 65536 {\0A b.push(u8(224 + cp / 4096))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A } else {\0A b.push(u8(240 + cp / 262144))\0A b.push(u8(128 + (cp / 4096) % 64))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A }\0A return str(b)\0A}\0A\0Afn read_hex4(ptr[Reader] r) -> int! {\0A n := 0\0A for k in 0..4 {\0A if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 {\0A return error(unexpected(r, \22a hexadecimal digit\22))\0A }\0A n = n * 16 + hex_value(r.src[r.i])\0A r.i += 1\0A }\0A return n\0A}\0A\0Afn read_string(ptr[Reader] r) -> str! {\0A r.i += 1 // the opening quote\0A []str parts\0A start := r.i\0A while true {\0A if r.i >= r.src.len {\0A return error(\22json: a text is never closed (\22 + where(r) + \22)\22)\0A }\0A c := r.src[r.i]\0A if c == '\22' {\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A return parts.join(\22\22)\0A }\0A if int(c) < 32 {\0A return error(\22json: a line break or control character inside a text (\22 + where(r) + \22)\22)\0A }\0A if c != '\5C\5C' {\0A r.i += 1\0A continue\0A }\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A e := peek(r)\0A r.i += 1\0A if e == 'n' {\0A parts.push(\22\5Cn\22)\0A } else if e == 't' {\0A parts.push(\22\5Ct\22)\0A } else if e == 'r' {\0A parts.push(\22\5Cr\22)\0A } else if e == 'b' {\0A parts.push(utf8(8))\0A } else if e == 'f' {\0A parts.push(utf8(12))\0A } else if e == '\22' || e == '\5C\5C' || e == '/' {\0A parts.push(str(e))\0A } else if e == 'u' {\0A cp := try read_hex4(r)\0A // a pair of \F0\9F\98\80 stands for one character above U+FFFF\0A if cp >= 55296 && cp < 56320 && comes(r, \22\5C\5Cu\22) {\0A r.i += 2\0A low := try read_hex4(r)\0A cp = 65536 + (cp - 55296) * 1024 + (low - 56320)\0A }\0A parts.push(utf8(cp))\0A } else {\0A return error(\22json: unknown escape \5C\5C\22 + str(e) + \22 in a text (\22 + where(r) + \22)\22)\0A }\0A start = r.i\0A }\0A}\0A\0Afn read_number(ptr[Reader] r) -> Json! {\0A start := r.i\0A if peek(r) == '-' {\0A r.i += 1\0A }\0A while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') {\0A r.i += 1\0A }\0A n := float(r.src.sub(start, r.i)) or {\0A r.i = start\0A return error(unexpected(r, \22a number\22))\0A }\0A return new_number(n)\0A}\0A\0Afn read_value(ptr[Reader] r) -> Json! {\0A skip_space(r)\0A c := peek(r)\0A if r.i >= r.src.len {\0A return error(unexpected(r, \22a value\22))\0A }\0A if c == '{' {\0A obj := new_object()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A while true {\0A skip_space(r)\0A if peek(r) != '\22' {\0A return error(unexpected(r, \22a key in quotes\22))\0A }\0A key := try read_string(r)\0A skip_space(r)\0A if peek(r) != ':' {\0A return error(unexpected(r, \22':'\22))\0A }\0A r.i += 1\0A v := try read_value(r)\0A obj.set(key, v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A return error(unexpected(r, \22',' or '}'\22))\0A }\0A }\0A if c == '[' {\0A list := new_list()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A while true {\0A v := try read_value(r)\0A list.push(v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A return error(unexpected(r, \22',' or ']'\22))\0A }\0A }\0A if c == '\22' {\0A s := try read_string(r)\0A return new_text(s)\0A }\0A if c == 't' {\0A try expect_word(r, \22true\22)\0A return new_bool(true)\0A }\0A if c == 'f' {\0A try expect_word(r, \22false\22)\0A return new_bool(false)\0A }\0A if c == 'n' {\0A try expect_word(r, \22null\22)\0A return new_null()\0A }\0A if c == '-' || (c >= '0' && c <= '9') {\0A return try read_number(r)\0A }\0A return error(unexpected(r, \22a value\22))\0A}\0A\0A// the JSON in `text`; an error with the line and column where it went wrong\0Afn parse(str text) -> Json! {\0A r := Reader(src: text)\0A v := try read_value(addr(r))\0A skip_space(addr(r))\0A if r.i < r.src.len {\0A return error(unexpected(addr(r), \22the end of the text\22))\0A }\0A return v\0A}\0A\00" -@.str.7554 = private unnamed_addr constant [2847 x i8] c"// Paths, as text. Elements are separated by \22/\22.\0A//\0A// import path\0A// path.join(\22a\22, \22b.txt\22) a/b.txt\0A// path.base(\22/tmp/x/a.tar.gz\22) a.tar.gz path.stem(...) a.tar path.ext(...) .gz\0A// path.dir(\22/tmp/x/a.txt\22) /tmp/x\0A// path.clean(\22a//b/../c/./d\22) a/c/d\0A\0A// a and b with one separator between; an absolute b replaces a\0Afn join(str a, str b) -> str {\0A if a.len == 0 {\0A return b\0A }\0A if b.len == 0 {\0A return a\0A }\0A if b[0] == '/' {\0A return b\0A }\0A if a[a.len - 1] == '/' {\0A return a + b\0A }\0A return a + \22/\22 + b\0A}\0A\0Afn is_abs(str p) -> bool {\0A return p.len > 0 && p[0] == '/'\0A}\0A\0A// the last element: \22a/b.txt\22 -> \22b.txt\22, \22a/b/\22 -> \22b\22, \22\22 -> \22.\22, \22/\22 -> \22/\22\0Afn base(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A if end == 1 && p[0] == '/' {\0A return \22/\22\0A }\0A start := end\0A while start > 0 && p[start - 1] != '/' {\0A start -= 1\0A }\0A return p.sub(start, end)\0A}\0A\0A// everything before the last element: \22a/b.txt\22 -> \22a\22, \22b.txt\22 -> \22.\22, \22/b\22 -> \22/\22\0Afn dir(str p) -> str {\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A i := end\0A while i > 0 && p[i - 1] != '/' {\0A i -= 1\0A }\0A if i == 0 {\0A return \22.\22\0A }\0A while i > 1 && p[i - 1] == '/' {\0A i -= 1\0A }\0A return p.sub(0, i)\0A}\0A\0A// the part of the last element from its last dot: \22a.tar.gz\22 -> \22.gz\22; \22\22 when there is none\0Afn ext(str p) -> str {\0A b := base(p)\0A i := b.len\0A while i > 0 && b[i - 1] != '.' {\0A i -= 1\0A }\0A if i <= 1 { // no dot, or a name that only starts with one (.bashrc)\0A return \22\22\0A }\0A return b.sub(i - 1, b.len)\0A}\0A\0A// the last element without its extension\0Afn stem(str p) -> str {\0A b := base(p)\0A e := ext(p)\0A return b.sub(0, b.len - e.len)\0A}\0A\0A// the elements of a path: \22/a/b/c\22 -> [\22a\22, \22b\22, \22c\22]\0Afn parts(str p) -> []str {\0A []str out\0A for piece in p.split(\22/\22) {\0A if piece.len > 0 {\0A out.push(piece)\0A }\0A }\0A return out\0A}\0A\0A// the shortest path with the same meaning: no \22//\22, no \22.\22, and \22..\22 resolved where it can be\0Afn clean(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A abs := is_abs(p)\0A []str out\0A for piece in parts(p) {\0A if piece == \22.\22 {\0A continue\0A }\0A if piece == \22..\22 {\0A if out.len > 0 && out[out.len - 1] != \22..\22 {\0A out.pop()\0A } else if !abs {\0A out.push(\22..\22)\0A }\0A continue\0A }\0A out.push(piece)\0A }\0A joined := out.join(\22/\22)\0A if abs {\0A return \22/\22 + joined\0A }\0A if joined.len == 0 {\0A return \22.\22\0A }\0A return joined\0A}\0A\00" -@.str.7555 = private unnamed_addr constant [1407 x i8] c"// Programs: run a command, read what it printed, look at the environment.\0A//\0A// import proc\0A// code := proc.run(\22make\22) the exit code; what the command prints goes to the screen\0A// text := try proc.output(\22git describe\22) what the command printed; an error if it failed\0A// proc.env(\22HOME\22, \22/\22) an environment variable, or the second value if it is not set\0Aimport \22stdlib.h\22\0Aimport \22unistd.h\22\0Aimport \22time.h\22\0A\0A// run a command; its output goes to the screen. Gives its exit code.\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0A// run a command and give what it printed. Fails, with its output as the message, if it exits with an error.\0Afn output(str command) -> str! {\0A tmp := \22/tmp/finch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(\22(\22 + command + \22) > '\22 + tmp + \22' 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0A// the folder the program is running in\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7556 = private unnamed_addr constant [996 x i8] c"// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS).\0Aimport \22stdlib.h\22\0Aimport \22process.h\22\0Aimport \22direct.h\22\0Aimport \22time.h\22\0A\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0Afn output(str command) -> str! {\0A tmp := proc_env(\22TEMP\22, \22.\22) + \22\5C\5Cfinch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(command + \22 > \5C\22\22 + tmp + \22\5C\22 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn proc_env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn env(str name, str fallback) -> str {\0A return proc_env(name, fallback)\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7557 = private unnamed_addr constant [2540 x i8] c"// Time: the clock, sleeping, and dates.\0A//\0A// import time\0A// start := time.millis() milliseconds from a clock that only goes forward (to measure with)\0A// time.sleep(250) wait a quarter of a second\0A// time.now() seconds since 1970-01-01 00:00 UTC\0A// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second\0A// time.format(time.now(), \22%Y-%m-%d %H:%M\22) as text, in the computer's time zone\0Aimport \22time.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0A// seconds since 1970-01-01 00:00 UTC\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward: for measuring how long something took\0Afn millis() -> int {\0A timespec ts\0A clock_gettime(CLOCK_MONOTONIC, addr(ts))\0A return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000\0A}\0A\0Afn sleep(int ms) {\0A timespec ts\0A ts.tv_sec = ms / 1000\0A ts.tv_nsec = (ms % 1000) * 1000000\0A nanosleep(addr(ts), null)\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0A// the date and time of a moment, in UTC\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A gmtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// the date and time of a moment, in the computer's time zone\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second\0A// (the rest of C's strftime works too: %A weekday name, %B month name, ...)\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0A// the number of days in a month (month is 1 to 12)\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7558 = private unnamed_addr constant [1793 x i8] c"// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS).\0Aimport \22time.h\22\0Aimport \22finch_win.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms)\0Afn millis() -> int {\0A i64 count = 0\0A i64 freq = 1\0A QueryPerformanceFrequency(addr(freq))\0A QueryPerformanceCounter(addr(count))\0A return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq)\0A}\0A\0Afn sleep(int ms) {\0A Sleep(u32(ms))\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _gmtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7559 = private unnamed_addr constant [366 x i8] c"/* The Windows functions std/time_windows.fch needs. Declared here, not by including :\0A libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */\0Aunsigned long long GetTickCount64(void);\0Avoid Sleep(unsigned long milliseconds);\0Aint QueryPerformanceCounter(long long *count);\0Aint QueryPerformanceFrequency(long long *frequency);\0A\00" - -declare void @finch_panic(ptr, i64, ptr) noreturn cold -declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold -declare ptr @finch_alloc(i64) -declare void @finch_str_copy(ptr, ptr) -declare void @finch_str_drop(ptr) -declare void @finch_arr_free(ptr) -declare void @finch_map_free(ptr) -declare void @finch_str_own(ptr) -declare void @finch_str_concat(ptr, ptr, ptr) -declare i32 @finch_str_eq(ptr, ptr) -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 22, 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 28) - %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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca i64, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - 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 - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = add i64 %t7, 1 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t11 = load i64, ptr %t10 - call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t9, i64 %t11, ptr @.str.4, i64 32) - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - %t14 = load { ptr, i64, i64 }, ptr %a1 - %t15 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %logic.from13 -logic.from13: - br i1 %t19, label %logic.rhs14, label %logic.end15 -logic.rhs14: - %t21 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_starts(ptr %a22, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - %t27 = xor i1 %t26, true - br label %logic.rend16 -logic.rend16: - br label %logic.end15 -logic.end15: - %t28 = phi i1 [ false, %logic.from13 ], [ %t27, %logic.rend16 ] - br i1 %t28, label %then17, label %endif19 -then17: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - %t33 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t32, ptr %a13 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif19 -endif19: - %t35 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a40 - %t41 = load i64, ptr %a40 - %t42 = icmp sgt i64 %t41, 0 - br i1 %t42, label %then20, label %endif22 -then20: - %t43 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t43, ptr %a44 - %t46 = load i64, ptr %a40 - call void @finch_str_sub(ptr %a45, ptr %a44, i64 0, i64 %t46, ptr @.str.10, i64 38) - %t47 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a13) - ret { ptr, i64, i64 } %t47 -endif22: - %t48 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t48 -} - -define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { -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 55, 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 57, 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 57, i64 %t28, i64 %t30) - unreachable -inrange36: - %t32 = extractvalue { ptr, i64, i64 } %t29, 0 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 %t28 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 57) - %t37 = load { ptr, i64, i64 }, ptr %a36 - ret { ptr, i64, i64 } %t37 -endif32: - %t38 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 59) - %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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %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 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = 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 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - %t11 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t10, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t10, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.19, i64 4, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a22 - %t23 = load { ptr, i64, i64 }, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.20, i64 1, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.21, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic37, label %ok38 -panic37: - call void @finch_panic(ptr @.str.22, i64 67, ptr @.str.23) - unreachable -ok38: - %t43 = getelementptr inbounds %S.main.Loader, ptr %t41, i32 0, i32 3 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t40, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t40, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.24, i64 4, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = call i32 @finch_file_exists(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = icmp ne i32 %t56, 0 - br i1 %t58, label %then39, label %endif41 -then39: - %t59 = load { ptr, i64, i64 }, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.25, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t65, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load ptr, ptr %a1 - %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic42, label %ok43 -panic42: - call void @finch_panic(ptr @.str.27, i64 68, ptr @.str.28) - unreachable -ok43: - %t79 = getelementptr inbounds %S.main.Loader, ptr %t77, i32 0, i32 3 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t76, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t76, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t90 -endif41: - %t91 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - br i1 %t94, label %then44, label %endif46 -then44: - %t95 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t95 -endif46: - %t96 = load ptr, ptr %a1 - %t97 = icmp eq ptr %t96, null - br i1 %t97, label %panic47, label %ok48 -panic47: - call void @finch_panic(ptr @.str.30, i64 73, ptr @.str.31) - unreachable -ok48: - %t98 = getelementptr inbounds %S.main.Loader, ptr %t96, i32 0, i32 5 - store i64 0, ptr %a99 - br label %each.cond49 -each.cond49: - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = load i64, ptr %a99 - %t103 = icmp slt i64 %t102, %t101 - br i1 %t103, label %each.body50, label %each.end52 -each.body50: - %t104 = load ptr, ptr %t98 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.32, i64 1, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a109 - %t113 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t112, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t112, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.33, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic53, label %ok54 -panic53: - call void @finch_panic(ptr @.str.34, i64 74, ptr @.str.35) - unreachable -ok54: - %t126 = getelementptr inbounds %S.main.Loader, ptr %t124, i32 0, i32 3 - %t127 = load { ptr, i64, i64 }, ptr %t126 - store { ptr, i64, i64 } %t123, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t123, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a138 - %t139 = call i32 @finch_file_exists(ptr %a138) - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = icmp ne i32 %t139, 0 - br i1 %t141, label %then55, label %endif57 -then55: - %t142 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - %t147 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t146, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.38, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic58, label %ok59 -panic58: - call void @finch_panic(ptr @.str.39, i64 75, ptr @.str.40) - unreachable -ok59: - %t160 = getelementptr inbounds %S.main.Loader, ptr %t158, i32 0, i32 3 - %t161 = load { ptr, i64, i64 }, ptr %t160 - store { ptr, i64, i64 } %t157, ptr %a163 - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t157, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.41, i64 4, i64 0 }, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t171 -endif57: - %t172 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t172, ptr %a174 - store { ptr, i64, i64 } { ptr @.str.42, i64 1, i64 0 }, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - %t177 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t176, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.43, i64 4, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t187, ptr %a188 - %t189 = call i32 @finch_file_exists(ptr %a188) - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = icmp ne i32 %t189, 0 - br i1 %t191, label %then60, label %endif62 -then60: - %t192 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.44, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - %t196 = load { ptr, i64, i64 }, ptr %a193 - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t196, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t196, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.45, i64 4, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t207 -endif62: - br label %each.step51 -each.step51: - %t208 = load i64, ptr %a99 - %t209 = add i64 %t208, 1 - store i64 %t209, ptr %a99 - br label %each.cond49 -each.end52: - %t210 = load ptr, ptr %a1 - %t211 = icmp eq ptr %t210, null - br i1 %t211, label %panic63, label %ok64 -panic63: - call void @finch_panic(ptr @.str.46, i64 81, ptr @.str.47) - unreachable -ok64: - %t212 = getelementptr inbounds %S.main.Loader, ptr %t210, i32 0, i32 4 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t214 = load i64, ptr %t213 - %t215 = icmp sgt i64 %t214, 0 - br i1 %t215, label %then65, label %endif67 -then65: - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic68, label %ok69 -panic68: - call void @finch_panic(ptr @.str.48, i64 82, ptr @.str.49) - unreachable -ok69: - %t218 = getelementptr inbounds %S.main.Loader, ptr %t216, i32 0, i32 4 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t223, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t223, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - store { ptr, i64, i64 } %t229, ptr %a231 - store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t229, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic70, label %ok71 -panic70: - call void @finch_panic(ptr @.str.52, i64 82, ptr @.str.53) - unreachable -ok71: - %t237 = getelementptr inbounds %S.main.Loader, ptr %t235, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - store { ptr, i64, i64 } %t234, ptr %a240 - store { ptr, i64, i64 } %t238, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t234, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a249 - %t250 = call i32 @finch_file_exists(ptr %a249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - %t252 = icmp ne i32 %t250, 0 - br i1 %t252, label %then72, label %endif74 -then72: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic75, label %ok76 -panic75: - call void @finch_panic(ptr @.str.55, i64 83, ptr @.str.56) - unreachable -ok76: - %t255 = getelementptr inbounds %S.main.Loader, ptr %t253, i32 0, i32 4 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.57, i64 1, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - %t260 = load { ptr, i64, i64 }, ptr %a257 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t260, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.58, i64 1, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic77, label %ok78 -panic77: - call void @finch_panic(ptr @.str.59, i64 83, ptr @.str.60) - unreachable -ok78: - %t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } %t271, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t271, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.61, i64 4, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t285 -endif74: - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic79, label %ok80 -panic79: - call void @finch_panic(ptr @.str.62, i64 85, ptr @.str.63) - unreachable -ok80: - %t288 = getelementptr inbounds %S.main.Loader, ptr %t286, i32 0, i32 4 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.64, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a290 - %t294 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t293, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.65, i64 4, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t304, ptr %a305 - %t306 = call i32 @finch_file_exists(ptr %a305) - store { ptr, i64, i64 } %t304, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = icmp ne i32 %t306, 0 - br i1 %t308, label %then81, label %endif83 -then81: - %t309 = load ptr, ptr %a1 - %t310 = icmp eq ptr %t309, null - br i1 %t310, label %panic84, label %ok85 -panic84: - call void @finch_panic(ptr @.str.66, i64 86, ptr @.str.67) - unreachable -ok85: - %t311 = getelementptr inbounds %S.main.Loader, ptr %t309, i32 0, i32 4 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.68, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t316, ptr %a319 - store { ptr, i64, i64 } %t317, ptr %a320 - call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) - store { ptr, i64, i64 } %t316, ptr %a321 - call void @finch_str_drop(ptr %a321) - %t322 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.69, i64 4, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - store { ptr, i64, i64 } %t322, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t327 -endif83: - br label %endif67 -endif67: - %t328 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t328 -} - -define internal void @finch.drop.S_lexer_Token(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_lexer_Token(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond107 -n.cond107: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body108, label %n.end109 -n.body108: - %t7 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t5 - call void @finch.drop.S_lexer_Token(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond107 -n.end109: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.copy.arr_str(ptr %dst, ptr %src) { -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.cond110 -n.cond110: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body111, label %n.end112 -n.body111: - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 %t6 - call void @finch_str_copy(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond110 -n.end112: - 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.cond118 -n.cond118: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body119, label %n.end120 -n.body119: - %t8 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds %S.ast.Type, ptr %t2, i64 %t6 - call void @finch.copy.S_ast_Type(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond118 -n.end120: - 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.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.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.cond115 -n.end117: - 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.drop.arr_str(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond137 -n.cond137: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body138, label %n.end139 -n.body138: - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t5 - call void @finch_str_drop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond137 -n.end139: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Type(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond143 -n.cond143: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body144, label %n.end145 -n.body144: - %t7 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Type(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond143 -n.end145: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Type(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.S_ast_Node(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 5 - call void @finch.drop.S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 9 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.arr_S_ast_Node(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond140 -n.cond140: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body141, label %n.end142 -n.body141: - %t7 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Node(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond140 -n.end142: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Program(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Node(ptr %t8) - %t9 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_S_ast_Node(ptr %t9) - ret void -} - -define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Program, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.ast.Program, align 16 - %a139 = alloca %S.ast.Program, align 16 - %a145 = alloca i64, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca i64, align 16 - %a162 = alloca i64, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 93, 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) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t43, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = extractvalue { ptr, i64, i64 } %t54, 1 - %t56 = trunc i64 %t55 to i32 - %t57 = extractvalue { ptr, i64, i64 } %t54, 0 - %t58 = icmp eq ptr %t57, null - %t59 = select i1 %t58, ptr @.str.75, ptr %t57 - %t60 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t56, ptr %t59) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = call i32 (ptr, ...) @printf(ptr @.str.77) - br label %endif102 -else101: - %t63 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.78, i64 19, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = extractvalue { ptr, i64, i64 } %t72, 1 - %t74 = trunc i64 %t73 to i32 - %t75 = extractvalue { ptr, i64, i64 } %t72, 0 - %t76 = icmp eq ptr %t75, null - %t77 = select i1 %t76, ptr @.str.80, ptr %t75 - %t78 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t74, ptr %t77) - store { ptr, i64, i64 } %t72, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = call i32 (ptr, ...) @printf(ptr @.str.82) - br label %endif102 -endif102: - %t81 = trunc i64 1 to i32 - %t82 = call i32 @fflush(ptr null) - call void @exit(i32 %t81) - br label %endif99 -endif99: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a2 - %t85 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t83, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic103, label %ok104 -panic103: - call void @finch_panic(ptr @.str.83, i64 102, ptr @.str.84) - unreachable -ok104: - %t89 = getelementptr inbounds %S.main.Loader, ptr %t87, i32 0, i32 1 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 %t91, ptr %a92 - %t93 = load ptr, ptr %a1 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic105, label %ok106 -panic105: - call void @finch_panic(ptr @.str.85, i64 103, ptr @.str.86) - unreachable -ok106: - %t95 = getelementptr inbounds %S.main.Loader, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 - store { ptr, i64, i64 } %t100, ptr %t104 - store i64 %t102, ptr %t96 - %t105 = load { ptr, i64, i64 }, ptr %a86 - %t106 = load { ptr, i64, i64 }, ptr %a2 - %t107 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t105, { ptr, i64, i64 } %t106) - %t108 = load i64, ptr %a92 - %t109 = load { ptr, i64, i64 }, ptr %a2 - %t110 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t107, i64 %t108, { ptr, i64, i64 } %t109) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch.drop.arr_S_lexer_Token(ptr %a111) - store %S.ast.Program %t110, ptr %a112 - %t113 = load { ptr, i64, i64 }, ptr %a3 - %t114 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 0 - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t117, ptr %t114 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a2 - %t121 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 1 - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t124, ptr %t121 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.copy.arr_str(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t131, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic113, label %ok114 -panic113: - call void @finch_panic(ptr @.str.87, i64 108, ptr @.str.88) - unreachable -ok114: - %t135 = getelementptr inbounds %S.main.Loader, ptr %t133, i32 0, i32 0 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load %S.ast.Program, ptr %a112 - store %S.ast.Program %t137, ptr %a138 - call void @finch.copy.S_ast_Program(ptr %a139, ptr %a138) - %t140 = load %S.ast.Program, ptr %a139 - %t141 = load i64, ptr %t136 - %t142 = add i64 %t141, 1 - call void @finch_arr_reserve(ptr %t135, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) - %t143 = load ptr, ptr %t135 - %t144 = getelementptr inbounds %S.ast.Program, ptr %t143, i64 %t141 - store %S.ast.Program %t140, ptr %t144 - store i64 %t142, ptr %t136 - store i64 0, ptr %a145 - br label %each.cond121 -each.cond121: - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = load i64, ptr %a145 - %t149 = icmp slt i64 %t148, %t147 - br i1 %t149, label %each.body122, label %each.end124 -each.body122: - %t150 = load ptr, ptr %a132 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic125, label %ok126 -panic125: - call void @finch_panic(ptr @.str.89, i64 110, ptr @.str.90) - unreachable -ok126: - %t156 = getelementptr inbounds %S.main.Loader, ptr %t154, i32 0, i32 2 - %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 - %t158 = load { ptr, i64, i64 }, ptr %a153 - store i64 -1, ptr %a159 - %t160 = load i64, ptr %t157 - %t161 = load ptr, ptr %t156 - store i64 0, ptr %a162 - br label %find.cond127 -find.cond127: - %t163 = load i64, ptr %a162 - %t164 = icmp slt i64 %t163, %t160 - br i1 %t164, label %find.body128, label %find.end131 -find.body128: - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t163 - %t166 = load { ptr, i64, i64 }, ptr %t165 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } %t158, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br i1 %t170, label %find.hit129, label %find.next130 -find.hit129: - store i64 %t163, ptr %a159 - br label %find.end131 -find.next130: - %t171 = add i64 %t163, 1 - store i64 %t171, ptr %a162 - br label %find.cond127 -find.end131: - %t172 = load i64, ptr %a159 - %t173 = icmp sge i64 %t172, 0 - %t174 = xor i1 %t173, true - br i1 %t174, label %then132, label %endif134 -then132: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic135, label %ok136 -panic135: - call void @finch_panic(ptr @.str.91, i64 111, ptr @.str.92) - unreachable -ok136: - %t177 = getelementptr inbounds %S.main.Loader, ptr %t175, i32 0, i32 2 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_copy(ptr %a181, ptr %a180) - %t182 = load { ptr, i64, i64 }, ptr %a181 - %t183 = load i64, ptr %t178 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t177, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t177 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 - store { ptr, i64, i64 } %t182, ptr %t186 - store i64 %t184, ptr %t178 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a2 - %t190 = load { ptr, i64, i64 }, ptr %a153 - %t191 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) - %t192 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.main.load(ptr %t187, { ptr, i64, i64 } %t191, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - br label %endif134 -endif134: - br label %each.step123 -each.step123: - %t194 = load i64, ptr %a145 - %t195 = add i64 %t194, 1 - store i64 %t195, ptr %a145 - br label %each.cond121 -each.end124: - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_ast_Program(ptr %a112) - call void @finch_str_drop(ptr %a86) - ret void -} - -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 { ptr, i64, i64 } @finch.main.unpack() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca i64, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.embedded.names() - store { ptr, i64, i64 } %t1, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.145, i64 7, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.146, i64 1, i64 0 }, ptr %a12 - call void @finch_str_join(ptr %a13, ptr %a10, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.drop.arr_str(ptr %a10) - %t15 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t14, ptr %a16 - call void @finch_str_drop(ptr %a16) - store { ptr, i64, i64 } %t8, ptr %a18 - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t8, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t15, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a29 - %t30 = call i32 @finch_file_exists(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = icmp ne i32 %t30, 0 - br i1 %t32, label %then146, label %endif148 -then146: - %t33 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t33 -endif148: - %t34 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t34, ptr %a35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t37 = load i64, ptr %t36 - store i64 0, ptr %a38 - br label %for.cond149 -for.cond149: - %t39 = load i64, ptr %a38 - %t40 = icmp slt i64 %t39, %t37 - br i1 %t40, label %for.body150, label %for.end152 -for.body150: - %t41 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.148, i64 1, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a38 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = icmp uge i64 %t46, %t48 - br i1 %t49, label %range153, label %inrange154 -range153: - call void @finch_panic_index(ptr @.str.149, i64 144, i64 %t46, i64 %t48) - unreachable -inrange154: - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t46 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t45, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t45, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - %t58 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t57) - store { ptr, i64, i64 } %t57, ptr %a59 - call void @finch_str_drop(ptr %a59) - call void @finch.host.makeDirs({ ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.150, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = load i64, ptr %a38 - %t67 = load { ptr, i64, i64 }, ptr %a2 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range155, label %inrange156 -range155: - call void @finch_panic_index(ptr @.str.151, i64 145, i64 %t66, i64 %t68) - unreachable -inrange156: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t66 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t65, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t65, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load i64, ptr %a38 - %t79 = load { ptr, i64, i64 }, ptr %a35 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range157, label %inrange158 -range157: - call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t78, i64 %t80) - unreachable -inrange158: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i64 %t78 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t77, ptr %a85 - store { ptr, i64, i64 } %t84, ptr %a86 - %t87 = call i32 @finch_write_file(ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t77, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = icmp ne i32 %t87, 0 - br label %for.step151 -for.step151: - %t90 = load i64, ptr %a38 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a38 - br label %for.cond149 -for.end152: - %t92 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.153, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.154, i64 0, i64 0 }, ptr %a98 - %t99 = call i32 @finch_write_file(ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = icmp ne i32 %t99, 0 - %t102 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a35) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t102 -} - -define internal void @finch.drop.S_cimport_Header(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_Header(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond403 -n.cond403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body404, label %n.end405 -n.body404: - %t7 = getelementptr inbounds %S.cimport.Header, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_Header(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond403 -n.end405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Program(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond406 -n.cond406: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body407, label %n.end408 -n.body407: - %t7 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Program(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond406 -n.end408: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_main_Loader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t7) - %t8 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.S_platform_Target(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 6 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) { -entry: - - %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 void @finch.drop.S_gen_Options(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 4 - call void @finch.drop.S_platform_Target(ptr %t2) - ret void -} - -define internal void @finch.drop.S_cimport_CFunc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_ast_Type(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CFunc(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond416 -n.cond416: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body417, label %n.end418 -n.body417: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live419, label %entry.next420 -entry.live419: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CFunc(ptr %t13) - br label %entry.next420 -entry.next420: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond416 -n.end418: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CConst(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CConst, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CConst(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond421 -n.cond421: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body422, label %n.end423 -n.body422: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live424, label %entry.next425 -entry.live424: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CConst(ptr %t13) - br label %entry.next425 -entry.next425: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond421 -n.end423: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_S_ast_Type(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond426 -n.cond426: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body427, label %n.end428 -n.body427: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live429, label %entry.next430 -entry.live429: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t13) - br label %entry.next430 -entry.next430: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond426 -n.end428: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CField(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_CField(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond436 -n.cond436: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body437, label %n.end438 -n.body437: - %t7 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_CField(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond436 -n.end438: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CStruct(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_cimport_CField(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CStruct(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond431 -n.cond431: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body432, label %n.end433 -n.body432: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live434, label %entry.next435 -entry.live434: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CStruct(ptr %t13) - br label %entry.next435 -entry.next435: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond431 -n.end433: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CImports(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 0 - call void @finch.drop.map_str_S_cimport_CFunc(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 1 - call void @finch.drop.map_str_S_cimport_CConst(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_cimport_CStruct(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.S_linker_Build(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.platform.Target, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = 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 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca %S.main.Loader, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca i64, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca i64, align 16 - %a653 = alloca %S.ast.Program, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a663 = alloca i64, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca i64, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca %S.cimport.CImports, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a866 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca %S.platform.Target, align 16 - %a876 = alloca %S.platform.Target, align 16 - %a880 = alloca %S.gen.Options, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a921 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca { ptr, i64, i64 }, align 16 - %a923 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a927 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a978 = 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 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a993 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca %S.linker.Build, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca i64, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1081 = 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 - %a1085 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca i64, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = icmp eq i64 %t3, 2 - br label %logic.from159 -logic.from159: - br i1 %t4, label %logic.rhs160, label %logic.end161 -logic.rhs160: - %t5 = load { ptr, i64, i64 }, ptr %a1 - %t6 = extractvalue { ptr, i64, i64 } %t5, 1 - %t7 = icmp uge i64 1, %t6 - br i1 %t7, label %range162, label %inrange163 -range162: - call void @finch_panic_index(ptr @.str.155, i64 152, i64 1, i64 %t6) - unreachable -inrange163: - %t8 = extractvalue { ptr, i64, i64 } %t5, 0 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 1 - %t10 = load { ptr, i64, i64 }, ptr %t9 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.156, i64 7, i64 0 }, ptr %a12 - %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) - %t14 = icmp ne i32 %t13, 0 - br label %logic.from164 -logic.from164: - br i1 %t14, label %logic.end166, label %logic.rhs165 -logic.rhs165: - %t15 = load { ptr, i64, i64 }, ptr %a1 - %t16 = extractvalue { ptr, i64, i64 } %t15, 1 - %t17 = icmp uge i64 1, %t16 - br i1 %t17, label %range167, label %inrange168 -range167: - call void @finch_panic_index(ptr @.str.157, i64 152, i64 1, i64 %t16) - unreachable -inrange168: - %t18 = extractvalue { ptr, i64, i64 } %t15, 0 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.158, i64 9, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br label %logic.rend169 -logic.rend169: - br label %logic.end166 -logic.end166: - %t25 = phi i1 [ true, %logic.from164 ], [ %t24, %logic.rend169 ] - br label %logic.rend170 -logic.rend170: - br label %logic.end161 -logic.end161: - %t26 = phi i1 [ false, %logic.from159 ], [ %t25, %logic.rend170 ] - br i1 %t26, label %then171, label %endif173 -then171: - %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 1 - %t28 = trunc i64 %t27 to i32 - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 0 - %t30 = icmp eq ptr %t29, null - %t31 = select i1 %t30, ptr @.str.160, ptr %t29 - %t32 = call i32 (ptr, ...) @printf(ptr @.str.161, i32 %t28, ptr %t31) - %t33 = call i32 (ptr, ...) @printf(ptr @.str.162) - ret i64 0 -endif173: - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t35 = load i64, ptr %t34 - %t36 = icmp eq i64 %t35, 2 - br label %logic.from174 -logic.from174: - br i1 %t36, label %logic.rhs175, label %logic.end176 -logic.rhs175: - %t37 = load { ptr, i64, i64 }, ptr %a1 - %t38 = extractvalue { ptr, i64, i64 } %t37, 1 - %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range177, label %inrange178 -range177: - call void @finch_panic_index(ptr @.str.163, i64 156, i64 1, i64 %t38) - unreachable -inrange178: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.164, i64 3, i64 0 }, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - br label %logic.rend179 -logic.rend179: - br label %logic.end176 -logic.end176: - %t47 = phi i1 [ false, %logic.from174 ], [ %t46, %logic.rend179 ] - br i1 %t47, label %then180, label %endif182 -then180: - %t48 = load { ptr, i64, i64 }, ptr %a1 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 0, %t49 - br i1 %t50, label %range183, label %inrange184 -range183: - call void @finch_panic_index(ptr @.str.165, i64 157, i64 0, i64 %t49) - unreachable -inrange184: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = call i64 @finch.lsp.run({ ptr, i64, i64 } %t53) - ret i64 %t54 -endif182: - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t56 = load i64, ptr %t55 - %t57 = icmp slt i64 %t56, 3 - br i1 %t57, label %then185, label %endif187 -then185: - call void @finch.main.usage() - br label %endif187 -endif187: - %t58 = load { ptr, i64, i64 }, ptr %a1 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - %t60 = icmp uge i64 1, %t59 - br i1 %t60, label %range188, label %inrange189 -range188: - call void @finch_panic_index(ptr @.str.166, i64 162, i64 1, i64 %t59) - unreachable -inrange189: - %t61 = extractvalue { ptr, i64, i64 } %t58, 0 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - 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 %range190, label %inrange191 -range190: - call void @finch_panic_index(ptr @.str.167, i64 163, i64 2, i64 %t69) - unreachable -inrange191: - %t71 = extractvalue { ptr, i64, i64 } %t68, 0 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - 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.168, i64 5, i64 0 }, ptr %a80 - %t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80) - %t82 = icmp eq i32 %t81, 0 - br label %logic.from192 -logic.from192: - br i1 %t82, label %logic.rhs193, label %logic.end194 -logic.rhs193: - %t83 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t83, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.169, i64 3, i64 0 }, ptr %a85 - %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) - %t87 = icmp eq i32 %t86, 0 - br label %logic.rend195 -logic.rend195: - br label %logic.end194 -logic.end194: - %t88 = phi i1 [ false, %logic.from192 ], [ %t87, %logic.rend195 ] - br label %logic.from196 -logic.from196: - br i1 %t88, label %logic.rhs197, label %logic.end198 -logic.rhs197: - %t89 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.170, i64 2, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp eq i32 %t92, 0 - br label %logic.rend199 -logic.rend199: - br label %logic.end198 -logic.end198: - %t94 = phi i1 [ false, %logic.from196 ], [ %t93, %logic.rend199 ] - br label %logic.from200 -logic.from200: - br i1 %t94, label %logic.rhs201, label %logic.end202 -logic.rhs201: - %t95 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.171, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp eq i32 %t98, 0 - br label %logic.rend203 -logic.rend203: - br label %logic.end202 -logic.end202: - %t100 = phi i1 [ false, %logic.from200 ], [ %t99, %logic.rend203 ] - br i1 %t100, label %then204, label %endif206 -then204: - call void @finch.main.usage() - br label %endif206 -endif206: - %t101 = load { ptr, i64, i64 }, ptr %a77 - %t102 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t102, ptr %a103 - store i1 false, ptr %a104 - store i1 false, ptr %a105 - store i1 false, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.172, i64 0, i64 0 }, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.173, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } zeroinitializer, ptr %a109 - store { ptr, i64, i64 } zeroinitializer, ptr %a110 - store { ptr, i64, i64 } zeroinitializer, ptr %a111 - store { ptr, i64, i64 } zeroinitializer, ptr %a112 - store { ptr, i64, i64 } zeroinitializer, ptr %a113 - store i64 3, ptr %a114 - br label %while.cond207 -while.cond207: - %t115 = load i64, ptr %a114 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t117 = load i64, ptr %t116 - %t118 = icmp slt i64 %t115, %t117 - br i1 %t118, label %while.body208, label %while.end209 -while.body208: - %t119 = load i64, ptr %a114 - %t120 = load { ptr, i64, i64 }, ptr %a1 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 %t119, %t121 - br i1 %t122, label %range210, label %inrange211 -range210: - call void @finch_panic_index(ptr @.str.174, i64 180, i64 %t119, i64 %t121) - unreachable -inrange211: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 - %t125 = load { ptr, i64, i64 }, ptr %t124 - 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.175, i64 3, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br label %logic.from212 -logic.from212: - br i1 %t134, label %logic.rhs213, label %logic.end214 -logic.rhs213: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = icmp sgt i64 %t136, 0 - br label %logic.rend215 -logic.rend215: - br label %logic.end214 -logic.end214: - %t138 = phi i1 [ false, %logic.from212 ], [ %t137, %logic.rend215 ] - br i1 %t138, label %then216, label %else217 -then216: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t140, ptr %a141 - 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 %endif218 -else217: - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.176, i64 2, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br label %logic.from219 -logic.from219: - br i1 %t152, label %logic.rhs220, label %logic.end221 -logic.rhs220: - %t153 = load i64, ptr %a114 - %t154 = add i64 %t153, 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp slt i64 %t154, %t156 - br label %logic.rend222 -logic.rend222: - br label %logic.end221 -logic.end221: - %t158 = phi i1 [ false, %logic.from219 ], [ %t157, %logic.rend222 ] - br label %logic.from223 -logic.from223: - br i1 %t158, label %logic.rhs224, label %logic.end225 -logic.rhs224: - %t159 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.177, i64 5, i64 0 }, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br label %logic.rend226 -logic.rend226: - br label %logic.end225 -logic.end225: - %t164 = phi i1 [ false, %logic.from223 ], [ %t163, %logic.rend226 ] - br i1 %t164, label %then227, label %else228 -then227: - %t165 = load i64, ptr %a114 - %t166 = add i64 %t165, 1 - %t167 = load { ptr, i64, i64 }, ptr %a1 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range230, label %inrange231 -range230: - call void @finch_panic_index(ptr @.str.178, i64 184, i64 %t166, i64 %t168) - unreachable -inrange231: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i64 %t166 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t175, ptr %a103 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - store i1 true, ptr %a104 - %t178 = load i64, ptr %a114 - %t179 = add i64 %t178, 1 - store i64 %t179, ptr %a114 - br label %endif229 -else228: - %t180 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t180, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.179, i64 8, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - br label %logic.from232 -logic.from232: - br i1 %t184, label %logic.rhs233, label %logic.end234 -logic.rhs233: - %t185 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.180, i64 5, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.rend235 -logic.rend235: - br label %logic.end234 -logic.end234: - %t190 = phi i1 [ false, %logic.from232 ], [ %t189, %logic.rend235 ] - br i1 %t190, label %then236, label %else237 -then236: - store i1 true, ptr %a105 - br label %endif238 -else237: - %t191 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t191, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.181, i64 3, i64 0 }, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br i1 %t195, label %then239, label %else240 -then239: - %t196 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.182, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } %t196, ptr %a197 - call void @finch_str_drop(ptr %a197) - br label %endif241 -else240: - %t198 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.183, i64 2, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from242 -logic.from242: - br i1 %t202, label %logic.rhs243, label %logic.end244 -logic.rhs243: - %t203 = load i64, ptr %a114 - %t204 = add i64 %t203, 1 - %t205 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t206 = load i64, ptr %t205 - %t207 = icmp slt i64 %t204, %t206 - br label %logic.rend245 -logic.rend245: - br label %logic.end244 -logic.end244: - %t208 = phi i1 [ false, %logic.from242 ], [ %t207, %logic.rend245 ] - br i1 %t208, label %then246, label %else247 -then246: - %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t210 = load i64, ptr %a114 - %t211 = add i64 %t210, 1 - %t212 = load { ptr, i64, i64 }, ptr %a1 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range249, label %inrange250 -range249: - call void @finch_panic_index(ptr @.str.184, i64 192, i64 %t211, i64 %t213) - unreachable -inrange250: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t217, ptr %a218 - call void @finch_str_copy(ptr %a219, ptr %a218) - %t220 = load { ptr, i64, i64 }, ptr %a219 - %t221 = load i64, ptr %t209 - %t222 = add i64 %t221, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t222, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t223 = load ptr, ptr %a109 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t221 - store { ptr, i64, i64 } %t220, ptr %t224 - store i64 %t222, ptr %t209 - %t225 = load i64, ptr %a114 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a114 - br label %endif248 -else247: - %t227 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t227, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a230 - %t231 = call i32 @finch_str_starts(ptr %a228, ptr %a230) - %t232 = icmp ne i32 %t231, 0 - br label %logic.from251 -logic.from251: - br i1 %t232, label %logic.rhs252, label %logic.end253 -logic.rhs252: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t234 = load i64, ptr %t233 - %t235 = icmp sgt i64 %t234, 2 - br label %logic.rend254 -logic.rend254: - br label %logic.end253 -logic.end253: - %t236 = phi i1 [ false, %logic.from251 ], [ %t235, %logic.rend254 ] - br i1 %t236, label %then255, label %else256 -then255: - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t238 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t238, ptr %a239 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t242 = load i64, ptr %t241 - call void @finch_str_sub(ptr %a240, ptr %a239, i64 2, i64 %t242, ptr @.str.187, i64 195) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load i64, ptr %t237 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %a109 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } %t243, ptr %t247 - store i64 %t245, ptr %t237 - br label %endif257 -else256: - %t248 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.188, i64 2, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br label %logic.from258 -logic.from258: - br i1 %t252, label %logic.rhs259, label %logic.end260 -logic.rhs259: - %t253 = load i64, ptr %a114 - %t254 = add i64 %t253, 1 - %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = icmp slt i64 %t254, %t256 - br label %logic.rend261 -logic.rend261: - br label %logic.end260 -logic.end260: - %t258 = phi i1 [ false, %logic.from258 ], [ %t257, %logic.rend261 ] - br i1 %t258, label %then262, label %else263 -then262: - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %a110, i32 0, i32 1 - %t260 = load i64, ptr %a114 - %t261 = add i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %a1 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range265, label %inrange266 -range265: - call void @finch_panic_index(ptr @.str.189, i64 197, i64 %t261, i64 %t263) - unreachable -inrange266: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 %t261 - %t267 = load { ptr, i64, i64 }, ptr %t266 - store { ptr, i64, i64 } %t267, ptr %a268 - call void @finch_str_copy(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %a110, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %a110 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - %t275 = load i64, ptr %a114 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a114 - br label %endif264 -else263: - %t277 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t277, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.190, i64 9, i64 0 }, ptr %a279 - %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) - %t281 = icmp ne i32 %t280, 0 - br label %logic.from267 -logic.from267: - br i1 %t281, label %logic.rhs268, label %logic.end269 -logic.rhs268: - %t282 = load i64, ptr %a114 - %t283 = add i64 %t282, 1 - %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t285 = load i64, ptr %t284 - %t286 = icmp slt i64 %t283, %t285 - br label %logic.rend270 -logic.rend270: - br label %logic.end269 -logic.end269: - %t287 = phi i1 [ false, %logic.from267 ], [ %t286, %logic.rend270 ] - br i1 %t287, label %then271, label %else272 -then271: - %t288 = load i64, ptr %a114 - %t289 = add i64 %t288, 1 - %t290 = load { ptr, i64, i64 }, ptr %a1 - %t291 = extractvalue { ptr, i64, i64 } %t290, 1 - %t292 = icmp uge i64 %t289, %t291 - br i1 %t292, label %range274, label %inrange275 -range274: - call void @finch_panic_index(ptr @.str.191, i64 200, i64 %t289, i64 %t291) - unreachable -inrange275: - %t293 = extractvalue { ptr, i64, i64 } %t290, 0 - %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } %t295, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.193, i64 1, i64 0 }, ptr %a298 - call void @finch_str_split(ptr %a299, ptr %a296, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t300, ptr %a301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %a301 - %t304 = extractvalue { ptr, i64, i64 } %t303, 1 - %t305 = icmp uge i64 0, %t304 - br i1 %t305, label %range276, label %inrange277 -range276: - call void @finch_panic_index(ptr @.str.194, i64 201, i64 0, i64 %t304) - unreachable -inrange277: - %t306 = extractvalue { ptr, i64, i64 } %t303, 0 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_copy(ptr %a310, ptr %a309) - %t311 = load { ptr, i64, i64 }, ptr %a310 - %t312 = load i64, ptr %t302 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %a111, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %a111 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t302 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %a301 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 1, %t318 - br i1 %t319, label %range278, label %inrange279 -range278: - call void @finch_panic_index(ptr @.str.195, i64 202, i64 1, i64 %t318) - unreachable -inrange279: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i64 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a323 - call void @finch_str_copy(ptr %a324, ptr %a323) - %t325 = load { ptr, i64, i64 }, ptr %a324 - %t326 = load i64, ptr %t316 - %t327 = add i64 %t326, 1 - call void @finch_arr_reserve(ptr %a112, i64 %t327, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t328 = load ptr, ptr %a112 - %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i64 %t326 - store { ptr, i64, i64 } %t325, ptr %t329 - store i64 %t327, ptr %t316 - %t330 = load i64, ptr %a114 - %t331 = add i64 %t330, 1 - store i64 %t331, ptr %a114 - call void @finch.drop.arr_str(ptr %a301) - br label %endif273 -else272: - %t332 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t332, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.196, i64 2, i64 0 }, ptr %a334 - %t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334) - %t336 = icmp ne i32 %t335, 0 - br i1 %t336, label %then280, label %else281 -then280: - store i1 true, ptr %a106 - br label %endif282 -else281: - %t337 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t337, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.197, i64 8, i64 0 }, ptr %a339 - %t340 = call i32 @finch_str_eq(ptr %a338, ptr %a339) - %t341 = icmp ne i32 %t340, 0 - br label %logic.from283 -logic.from283: - br i1 %t341, label %logic.rhs284, label %logic.end285 -logic.rhs284: - %t342 = load i64, ptr %a114 - %t343 = add i64 %t342, 1 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = icmp slt i64 %t343, %t345 - br label %logic.rend286 -logic.rend286: - br label %logic.end285 -logic.end285: - %t347 = phi i1 [ false, %logic.from283 ], [ %t346, %logic.rend286 ] - br i1 %t347, label %then287, label %else288 -then287: - %t348 = load i64, ptr %a114 - %t349 = add i64 %t348, 1 - %t350 = load { ptr, i64, i64 }, ptr %a1 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range290, label %inrange291 -range290: - call void @finch_panic_index(ptr @.str.198, i64 207, i64 %t349, i64 %t351) - unreachable -inrange291: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349 - %t355 = load { ptr, i64, i64 }, ptr %t354 - store { ptr, i64, i64 } %t355, ptr %a356 - call void @finch_str_copy(ptr %a357, ptr %a356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - %t359 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t358, ptr %a107 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load i64, ptr %a114 - %t362 = add i64 %t361, 1 - store i64 %t362, ptr %a114 - br label %endif289 -else288: - %t363 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t363, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.199, i64 3, i64 0 }, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br i1 %t367, label %then292, label %else293 -then292: - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t369 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t368 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %a113, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %a113 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t368 - br label %endif294 -else293: - call void @finch.main.usage() - br label %endif294 -endif294: - br label %endif289 -endif289: - br label %endif282 -endif282: - br label %endif273 -endif273: - br label %endif264 -endif264: - br label %endif257 -endif257: - br label %endif248 -endif248: - br label %endif241 -endif241: - br label %endif238 -endif238: - br label %endif229 -endif229: - br label %endif218 -endif218: - %t377 = load i64, ptr %a114 - %t378 = add i64 %t377, 1 - store i64 %t378, ptr %a114 - call void @finch_str_drop(ptr %a129) - br label %while.cond207 -while.end209: - %t379 = load { ptr, i64, i64 }, ptr %a107 - %t380 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t379) - store %S.platform.Target %t380, ptr %a381 - %t382 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t382, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.200, i64 3, i64 0 }, ptr %a384 - %t385 = call i32 @finch_str_eq(ptr %a383, ptr %a384) - %t386 = icmp ne i32 %t385, 0 - br i1 %t386, label %then295, label %else296 -then295: - %t387 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.201, i64 11, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a394, i64 %t393) - %t395 = load { ptr, i64, i64 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t392, ptr %a399 - call void @finch_str_drop(ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.202, i64 1, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a77 - %t408 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t407) - store { ptr, i64, i64 } %t406, ptr %a410 - store { ptr, i64, i64 } %t408, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t406, ptr %a412 - call void @finch_str_drop(ptr %a412) - store { ptr, i64, i64 } %t408, ptr %a413 - call void @finch_str_drop(ptr %a413) - %t414 = load { ptr, i64, i64 }, ptr %a409 - %t415 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t414, ptr %a418 - store { ptr, i64, i64 } %t416, ptr %a419 - call void @finch_str_concat(ptr %a417, ptr %a418, ptr %a419) - store { ptr, i64, i64 } %t414, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a417 - %t422 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t421, ptr %a103 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_drop(ptr %a423) - br label %endif297 -else296: - %t424 = load i1, ptr %a105 - br label %logic.from298 -logic.from298: - br i1 %t424, label %logic.rhs299, label %logic.end300 -logic.rhs299: - %t425 = load i1, ptr %a104 - %t426 = xor i1 %t425, true - br label %logic.rend301 -logic.rend301: - br label %logic.end300 -logic.end300: - %t427 = phi i1 [ false, %logic.from298 ], [ %t426, %logic.rend301 ] - br i1 %t427, label %then302, label %else303 -then302: - %t428 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t429 = load i1, ptr %t428 - br i1 %t429, label %then305, label %else306 -then305: - %t430 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.203, i64 4, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a431 - %t435 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t434, ptr %a103 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif307 -else306: - %t437 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t438 = load i1, ptr %t437 - br i1 %t438, label %then308, label %else309 -then308: - %t439 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.204, i64 3, i64 0 }, ptr %a441 - store { ptr, i64, i64 } %t439, ptr %a442 - call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a440 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.205, i64 6, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t448, ptr %a103 - store { ptr, i64, i64 } %t449, ptr %a450 - call void @finch_str_drop(ptr %a450) - br label %endif310 -else309: - %t451 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.206, i64 3, i64 0 }, ptr %a453 - store { ptr, i64, i64 } %t451, ptr %a454 - call void @finch_str_concat(ptr %a452, ptr %a453, ptr %a454) - %t455 = load { ptr, i64, i64 }, ptr %a452 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.207, i64 3, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - store { ptr, i64, i64 } %t455, ptr %a459 - call void @finch_str_drop(ptr %a459) - %t460 = load { ptr, i64, i64 }, ptr %a456 - %t461 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t460, ptr %a103 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_drop(ptr %a462) - br label %endif310 -endif310: - br label %endif307 -endif307: - br label %endif304 -else303: - %t463 = load i1, ptr %a104 - %t464 = xor i1 %t463, true - br i1 %t464, label %then311, label %endif313 -then311: - %t465 = load { ptr, i64, i64 }, ptr %a103 - %t466 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t467 = load { ptr, i64, i64 }, ptr %t466 - store { ptr, i64, i64 } %t465, ptr %a469 - store { ptr, i64, i64 } %t467, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t471, ptr %a103 - store { ptr, i64, i64 } %t472, ptr %a473 - call void @finch_str_drop(ptr %a473) - br label %endif313 -endif313: - br label %endif304 -endif304: - br label %endif297 -endif297: - store %S.main.Loader zeroinitializer, ptr %a474 - %t475 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t476 = load { ptr, i64, i64 }, ptr %t475 - store { ptr, i64, i64 } { ptr @.str.208, i64 5, i64 0 }, ptr %t475 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t479 = load i1, ptr %t478 - br i1 %t479, label %then314, label %else315 -then314: - %t480 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t481 = load { ptr, i64, i64 }, ptr %t480 - store { ptr, i64, i64 } { ptr @.str.209, i64 7, i64 0 }, ptr %t480 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif316 -else315: - %t483 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t484 = load i1, ptr %t483 - br i1 %t484, label %then317, label %endif319 -then317: - %t485 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } { ptr @.str.210, i64 5, i64 0 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - call void @finch_str_drop(ptr %a487) - br label %endif319 -endif319: - br label %endif316 -endif316: - %t488 = load { ptr, i64, i64 }, ptr %a1 - %t489 = extractvalue { ptr, i64, i64 } %t488, 1 - %t490 = icmp uge i64 0, %t489 - br i1 %t490, label %range320, label %inrange321 -range320: - call void @finch_panic_index(ptr @.str.211, i64 238, i64 0, i64 %t489) - unreachable -inrange321: - %t491 = extractvalue { ptr, i64, i64 } %t488, 0 - %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 0 - %t493 = load { ptr, i64, i64 }, ptr %t492 - %t494 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t493) - store { ptr, i64, i64 } %t494, ptr %a496 - store { ptr, i64, i64 } { ptr @.str.212, i64 7, i64 0 }, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t494, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - %t500 = load { ptr, i64, i64 }, ptr %a1 - %t501 = extractvalue { ptr, i64, i64 } %t500, 1 - %t502 = icmp uge i64 0, %t501 - br i1 %t502, label %range322, label %inrange323 -range322: - call void @finch_panic_index(ptr @.str.213, i64 238, i64 0, i64 %t501) - unreachable -inrange323: - %t503 = extractvalue { ptr, i64, i64 } %t500, 0 - %t504 = getelementptr inbounds { ptr, i64, i64 }, ptr %t503, i64 0 - %t505 = load { ptr, i64, i64 }, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t505) - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.214, i64 4, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = load { ptr, i64, i64 }, ptr %a1 - %t513 = extractvalue { ptr, i64, i64 } %t512, 1 - %t514 = icmp uge i64 0, %t513 - br i1 %t514, label %range324, label %inrange325 -range324: - call void @finch_panic_index(ptr @.str.215, i64 238, i64 0, i64 %t513) - unreachable -inrange325: - %t515 = extractvalue { ptr, i64, i64 } %t512, 0 - %t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %t515, i64 0 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t517) - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.216, i64 19, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t525 = call ptr @finch_alloc(i64 %t524) - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 0 - store { ptr, i64, i64 } %t499, ptr %t526 - %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 1 - store { ptr, i64, i64 } %t511, ptr %t527 - %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 2 - store { ptr, i64, i64 } %t523, ptr %t528 - %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 3 - store { ptr, i64, i64 } { ptr @.str.217, i64 3, i64 0 }, ptr %t529 - %t530 = insertvalue { ptr, i64, i64 } undef, ptr %t525, 0 - %t531 = insertvalue { ptr, i64, i64 } %t530, i64 4, 1 - %t532 = insertvalue { ptr, i64, i64 } %t531, i64 4, 2 - store { ptr, i64, i64 } %t532, ptr %a533 - store i64 0, ptr %a534 - br label %each.cond326 -each.cond326: - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %a533, i32 0, i32 1 - %t536 = load i64, ptr %t535 - %t537 = load i64, ptr %a534 - %t538 = icmp slt i64 %t537, %t536 - br i1 %t538, label %each.body327, label %each.end329 -each.body327: - %t539 = load ptr, ptr %a533 - %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i64 %t537 - %t541 = load { ptr, i64, i64 }, ptr %t540 - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1 - %t545 = load i64, ptr %t544 - %t546 = icmp eq i64 %t545, 0 - br label %logic.from330 -logic.from330: - br i1 %t546, label %logic.rhs331, label %logic.end332 -logic.rhs331: - %t547 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t547, ptr %a549 - store { ptr, i64, i64 } { ptr @.str.218, i64 9, i64 0 }, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a552 - %t553 = call i32 @finch_file_exists(ptr %a552) - store { ptr, i64, i64 } %t551, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = icmp ne i32 %t553, 0 - br label %logic.rend333 -logic.rend333: - br label %logic.end332 -logic.end332: - %t556 = phi i1 [ false, %logic.from330 ], [ %t555, %logic.rend333 ] - br i1 %t556, label %then334, label %endif336 -then334: - %t557 = load { ptr, i64, i64 }, ptr %a542 - %t558 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - store { ptr, i64, i64 } %t557, ptr %a559 - call void @finch_str_copy(ptr %a560, ptr %a559) - %t561 = load { ptr, i64, i64 }, ptr %a560 - %t562 = load { ptr, i64, i64 }, ptr %t558 - store { ptr, i64, i64 } %t561, ptr %t558 - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif336 -endif336: - br label %each.step328 -each.step328: - %t564 = load i64, ptr %a534 - %t565 = add i64 %t564, 1 - store i64 %t565, ptr %a534 - br label %each.cond326 -each.end329: - call void @finch.drop.arr_str(ptr %a533) - %t566 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i32 0, i32 1 - %t568 = load i64, ptr %t567 - %t569 = icmp eq i64 %t568, 0 - br i1 %t569, label %then337, label %endif339 -then337: - %t570 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.219, i64 4, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t577 = load { ptr, i64, i64 }, ptr %t576 - store { ptr, i64, i64 } %t575, ptr %t576 - store { ptr, i64, i64 } %t577, ptr %a578 - call void @finch_str_drop(ptr %a578) - br label %endif339 -endif339: - %t579 = load { ptr, i64, i64 }, ptr %a111 - %t580 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 6 - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch.copy.arr_str(ptr %a582, ptr %a581) - %t583 = load { ptr, i64, i64 }, ptr %a582 - %t584 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t583, ptr %t580 - store { ptr, i64, i64 } %t584, ptr %a585 - call void @finch.drop.arr_str(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a112 - %t587 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 7 - store { ptr, i64, i64 } %t586, ptr %a588 - call void @finch.copy.arr_str(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load { ptr, i64, i64 }, ptr %t587 - store { ptr, i64, i64 } %t590, ptr %t587 - store { ptr, i64, i64 } %t591, ptr %a592 - call void @finch.drop.arr_str(ptr %a592) - %t593 = extractvalue { ptr, i64, i64 } { ptr @.str.220, i64 10, i64 0 }, 0 - %t594 = icmp eq ptr %t593, null - %t595 = select i1 %t594, ptr @.str.221, ptr %t593 - %t596 = call ptr @getenv(ptr %t595) - store { ptr, i64, i64 } zeroinitializer, ptr %a597 - call void @finch_str_from_c(ptr %a597, ptr %t596) - %t598 = load { ptr, i64, i64 }, ptr %a597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t601 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t601, ptr %a602 - call void @finch_str_split(ptr %a603, ptr %a599, ptr %a602) - store { ptr, i64, i64 } %t601, ptr %a604 - call void @finch_str_drop(ptr %a604) - %t605 = load { ptr, i64, i64 }, ptr %a603 - store { ptr, i64, i64 } %t605, ptr %a606 - store i64 0, ptr %a607 - br label %each.cond340 -each.cond340: - %t608 = getelementptr inbounds { ptr, i64, i64 }, ptr %a606, i32 0, i32 1 - %t609 = load i64, ptr %t608 - %t610 = load i64, ptr %a607 - %t611 = icmp slt i64 %t610, %t609 - br i1 %t611, label %each.body341, label %each.end343 -each.body341: - %t612 = load ptr, ptr %a606 - %t613 = getelementptr inbounds { ptr, i64, i64 }, ptr %t612, i64 %t610 - %t614 = load { ptr, i64, i64 }, ptr %t613 - store { ptr, i64, i64 } %t614, ptr %a615 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %a615, i32 0, i32 1 - %t617 = load i64, ptr %t616 - %t618 = icmp sgt i64 %t617, 0 - br i1 %t618, label %then344, label %endif346 -then344: - %t619 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 5 - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %t619, i32 0, i32 1 - %t621 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t621, ptr %a622 - call void @finch_str_copy(ptr %a623, ptr %a622) - %t624 = load { ptr, i64, i64 }, ptr %a623 - %t625 = load i64, ptr %t620 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t619, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t619 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t620 - br label %endif346 -endif346: - br label %each.step342 -each.step342: - %t629 = load i64, ptr %a607 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a607 - br label %each.cond340 -each.end343: - call void @finch.drop.arr_str(ptr %a606) - %t631 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.main.load(ptr %a474, { ptr, i64, i64 } %t631, { ptr, i64, i64 } { ptr @.str.223, i64 0, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a632 - store { ptr, i64, i64 } zeroinitializer, ptr %a633 - %t634 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t634, ptr %a635 - call void @finch.copy.arr_str(ptr %a636, ptr %a635) - %t637 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t637, ptr %a638 - %t639 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t639, ptr %a640 - call void @finch.copy.arr_str(ptr %a641, ptr %a640) - %t642 = load { ptr, i64, i64 }, ptr %a641 - store { ptr, i64, i64 } %t642, ptr %a643 - %t644 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - store i64 0, ptr %a645 - br label %each.cond347 -each.cond347: - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t644, i32 0, i32 1 - %t647 = load i64, ptr %t646 - %t648 = load i64, ptr %a645 - %t649 = icmp slt i64 %t648, %t647 - br i1 %t649, label %each.body348, label %each.end350 -each.body348: - %t650 = load ptr, ptr %t644 - %t651 = getelementptr inbounds %S.ast.Program, ptr %t650, i64 %t648 - %t652 = load %S.ast.Program, ptr %t651 - store %S.ast.Program %t652, ptr %a653 - %t654 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 1 - %t655 = load { ptr, i64, i64 }, ptr %t654 - %t656 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t655) - store { ptr, i64, i64 } %t656, ptr %a657 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t659 = load { ptr, i64, i64 }, ptr %a657 - store i64 -1, ptr %a660 - %t661 = load i64, ptr %t658 - %t662 = load ptr, ptr %a638 - store i64 0, ptr %a663 - br label %find.cond351 -find.cond351: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t661 - br i1 %t665, label %find.body352, label %find.end355 -find.body352: - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t662, i64 %t664 - %t667 = load { ptr, i64, i64 }, ptr %t666 - store { ptr, i64, i64 } %t667, ptr %a668 - store { ptr, i64, i64 } %t659, ptr %a669 - %t670 = call i32 @finch_str_eq(ptr %a668, ptr %a669) - %t671 = icmp ne i32 %t670, 0 - br i1 %t671, label %find.hit353, label %find.next354 -find.hit353: - store i64 %t664, ptr %a660 - br label %find.end355 -find.next354: - %t672 = add i64 %t664, 1 - store i64 %t672, ptr %a663 - br label %find.cond351 -find.end355: - %t673 = load i64, ptr %a660 - %t674 = icmp sge i64 %t673, 0 - %t675 = xor i1 %t674, true - br i1 %t675, label %then356, label %endif358 -then356: - %t676 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t676 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a638, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a638 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t676 - br label %endif358 -endif358: - %t685 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i32 0, i32 1 - %t687 = load i64, ptr %t686 - store i64 0, ptr %a688 - br label %for.cond359 -for.cond359: - %t689 = load i64, ptr %a688 - %t690 = icmp slt i64 %t689, %t687 - br i1 %t690, label %for.body360, label %for.end362 -for.body360: - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t692 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t693 = load i64, ptr %a688 - %t694 = load { ptr, i64, i64 }, ptr %t692 - %t695 = extractvalue { ptr, i64, i64 } %t694, 1 - %t696 = icmp uge i64 %t693, %t695 - br i1 %t696, label %range363, label %inrange364 -range363: - call void @finch_panic_index(ptr @.str.224, i64 266, i64 %t693, i64 %t695) - unreachable -inrange364: - %t697 = extractvalue { ptr, i64, i64 } %t694, 0 - %t698 = getelementptr inbounds { ptr, i64, i64 }, ptr %t697, i64 %t693 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t691 - %t702 = load ptr, ptr %a633 - store i64 0, ptr %a703 - br label %find.cond365 -find.cond365: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body366, label %find.end369 -find.body366: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit367, label %find.next368 -find.hit367: - store i64 %t704, ptr %a700 - br label %find.end369 -find.next368: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond365 -find.end369: - %t713 = load i64, ptr %a700 - %t714 = icmp sge i64 %t713, 0 - %t715 = xor i1 %t714, true - br i1 %t715, label %then370, label %endif372 -then370: - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t717 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t718 = load i64, ptr %a688 - %t719 = load { ptr, i64, i64 }, ptr %t717 - %t720 = extractvalue { ptr, i64, i64 } %t719, 1 - %t721 = icmp uge i64 %t718, %t720 - br i1 %t721, label %range373, label %inrange374 -range373: - call void @finch_panic_index(ptr @.str.225, i64 267, i64 %t718, i64 %t720) - unreachable -inrange374: - %t722 = extractvalue { ptr, i64, i64 } %t719, 0 - %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t718 - %t724 = load { ptr, i64, i64 }, ptr %t723 - store { ptr, i64, i64 } %t724, ptr %a725 - call void @finch_str_copy(ptr %a726, ptr %a725) - %t727 = load { ptr, i64, i64 }, ptr %a726 - %t728 = load i64, ptr %t716 - %t729 = add i64 %t728, 1 - call void @finch_arr_reserve(ptr %a633, i64 %t729, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t730 = load ptr, ptr %a633 - %t731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t730, i64 %t728 - store { ptr, i64, i64 } %t727, ptr %t731 - store i64 %t729, ptr %t716 - %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t733 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t734 = load i64, ptr %a688 - %t735 = load { ptr, i64, i64 }, ptr %t733 - %t736 = extractvalue { ptr, i64, i64 } %t735, 1 - %t737 = icmp uge i64 %t734, %t736 - br i1 %t737, label %range375, label %inrange376 -range375: - call void @finch_panic_index(ptr @.str.226, i64 268, i64 %t734, i64 %t736) - unreachable -inrange376: - %t738 = extractvalue { ptr, i64, i64 } %t735, 0 - %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734 - %t740 = load { ptr, i64, i64 }, ptr %t739 - store { ptr, i64, i64 } %t740, ptr %a741 - call void @finch_str_copy(ptr %a742, ptr %a741) - %t743 = load { ptr, i64, i64 }, ptr %a742 - %t744 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t743, 0 - %t745 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 4 - %t746 = load i64, ptr %a688 - %t747 = load { ptr, i64, i64 }, ptr %t745 - %t748 = extractvalue { ptr, i64, i64 } %t747, 1 - %t749 = icmp uge i64 %t746, %t748 - br i1 %t749, label %range377, label %inrange378 -range377: - call void @finch_panic_index(ptr @.str.227, i64 268, i64 %t746, i64 %t748) - unreachable -inrange378: - %t750 = extractvalue { ptr, i64, i64 } %t747, 0 - %t751 = getelementptr inbounds { ptr, i64, i64 }, ptr %t750, i64 %t746 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - %t756 = insertvalue %S.cimport.Header %t744, { ptr, i64, i64 } %t755, 1 - %t757 = load i64, ptr %t732 - %t758 = add i64 %t757, 1 - call void @finch_arr_reserve(ptr %a632, i64 %t758, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) - %t759 = load ptr, ptr %a632 - %t760 = getelementptr inbounds %S.cimport.Header, ptr %t759, i64 %t757 - store %S.cimport.Header %t756, ptr %t760 - store i64 %t758, ptr %t732 - br label %endif372 -endif372: - br label %for.step361 -for.step361: - %t761 = load i64, ptr %a688 - %t762 = add i64 %t761, 1 - store i64 %t762, ptr %a688 - br label %for.cond359 -for.end362: - %t763 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 5 - store i64 0, ptr %a764 - br label %each.cond379 -each.cond379: - %t765 = getelementptr inbounds { ptr, i64, i64 }, ptr %t763, i32 0, i32 1 - %t766 = load i64, ptr %t765 - %t767 = load i64, ptr %a764 - %t768 = icmp slt i64 %t767, %t766 - br i1 %t768, label %each.body380, label %each.end382 -each.body380: - %t769 = load ptr, ptr %t763 - %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i64 %t767 - %t771 = load { ptr, i64, i64 }, ptr %t770 - store { ptr, i64, i64 } %t771, ptr %a772 - %t773 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t773, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a776 - %t777 = call i32 @finch_str_ends(ptr %a774, ptr %a776) - %t778 = icmp ne i32 %t777, 0 - br label %logic.from383 -logic.from383: - br i1 %t778, label %logic.end385, label %logic.rhs384 -logic.rhs384: - %t779 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t779, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.231, i64 2, i64 0 }, ptr %a782 - %t783 = call i32 @finch_str_ends(ptr %a780, ptr %a782) - %t784 = icmp ne i32 %t783, 0 - br label %logic.rend386 -logic.rend386: - br label %logic.end385 -logic.end385: - %t785 = phi i1 [ true, %logic.from383 ], [ %t784, %logic.rend386 ] - br label %logic.from387 -logic.from387: - br i1 %t785, label %logic.end389, label %logic.rhs388 -logic.rhs388: - %t786 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t786, ptr %a787 - store { ptr, i64, i64 } { ptr @.str.233, i64 2, i64 0 }, ptr %a789 - %t790 = call i32 @finch_str_ends(ptr %a787, ptr %a789) - %t791 = icmp ne i32 %t790, 0 - br label %logic.rend390 -logic.rend390: - br label %logic.end389 -logic.end389: - %t792 = phi i1 [ true, %logic.from387 ], [ %t791, %logic.rend390 ] - br i1 %t792, label %then391, label %else392 -then391: - %t793 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t794 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.234, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a795 - %t799 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t798, ptr %a801 - store { ptr, i64, i64 } %t799, ptr %a802 - call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) - store { ptr, i64, i64 } %t798, ptr %a803 - call void @finch_str_drop(ptr %a803) - %t804 = load { ptr, i64, i64 }, ptr %a800 - %t805 = load i64, ptr %t793 - %t806 = add i64 %t805, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t806, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t807 = load ptr, ptr %a643 - %t808 = getelementptr inbounds { ptr, i64, i64 }, ptr %t807, i64 %t805 - store { ptr, i64, i64 } %t804, ptr %t808 - store i64 %t806, ptr %t793 - br label %endif393 -else392: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t810, ptr %a811 - call void @finch_str_copy(ptr %a812, ptr %a811) - %t813 = load { ptr, i64, i64 }, ptr %a812 - %t814 = load i64, ptr %t809 - %t815 = add i64 %t814, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t815, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t816 = load ptr, ptr %a643 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t814 - store { ptr, i64, i64 } %t813, ptr %t817 - store i64 %t815, ptr %t809 - br label %endif393 -endif393: - br label %each.step381 -each.step381: - %t818 = load i64, ptr %a764 - %t819 = add i64 %t818, 1 - store i64 %t819, ptr %a764 - br label %each.cond379 -each.end382: - call void @finch_str_drop(ptr %a657) - br label %each.step349 -each.step349: - %t820 = load i64, ptr %a645 - %t821 = add i64 %t820, 1 - store i64 %t821, ptr %a645 - br label %each.cond347 -each.end350: - store { ptr, i64, i64 } { ptr @.str.235, i64 0, i64 0 }, ptr %a822 - %t823 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 5 - %t824 = load i1, ptr %t823 - br label %logic.from394 -logic.from394: - br i1 %t824, label %logic.end396, label %logic.rhs395 -logic.rhs395: - %t825 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t826 = load i1, ptr %t825 - br label %logic.rend397 -logic.rend397: - br label %logic.end396 -logic.end396: - %t827 = phi i1 [ true, %logic.from394 ], [ %t826, %logic.rend397 ] - br i1 %t827, label %then398, label %endif400 -then398: - %t828 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 0 - %t829 = load { ptr, i64, i64 }, ptr %t828 - store { ptr, i64, i64 } %t829, ptr %a830 - call void @finch_str_copy(ptr %a831, ptr %a830) - %t832 = load { ptr, i64, i64 }, ptr %a831 - %t833 = load { ptr, i64, i64 }, ptr %a822 - store { ptr, i64, i64 } %t832, ptr %a822 - store { ptr, i64, i64 } %t833, ptr %a834 - call void @finch_str_drop(ptr %a834) - br label %endif400 -endif400: - %t835 = load { ptr, i64, i64 }, ptr %a632 - %t836 = load { ptr, i64, i64 }, ptr %a638 - %t837 = load { ptr, i64, i64 }, ptr %a822 - %t838 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t839 = load i1, ptr %t838 - %t840 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 7 - %t841 = load { ptr, i64, i64 }, ptr %t840 - %t842 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t835, { ptr, i64, i64 } %t836, { ptr, i64, i64 } %t837, i1 %t839, { ptr, i64, i64 } %t841) - %t843 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 0 - %t844 = xor i1 %t843, true - %t845 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 2 - %t846 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 1 - br i1 %t844, label %or.failed401, label %or.ok402 -or.failed401: - store { ptr, i64, i64 } %t845, ptr %a847 - %t848 = load { ptr, i64, i64 }, ptr %a847 - %t849 = extractvalue { ptr, i64, i64 } %t848, 1 - %t850 = trunc i64 %t849 to i32 - %t851 = extractvalue { ptr, i64, i64 } %t848, 0 - %t852 = icmp eq ptr %t851, null - %t853 = select i1 %t852, ptr @.str.236, ptr %t851 - %t854 = call i32 (ptr, ...) @printf(ptr @.str.237, i32 %t850, ptr %t853) - %t855 = call i32 (ptr, ...) @printf(ptr @.str.238) - call void @finch_str_drop(ptr %a847) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -or.ok402: - store %S.cimport.CImports %t846, ptr %a856 - %t857 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 1 - %t860 = load { ptr, i64, i64 }, ptr %t859 - %t861 = load %S.cimport.CImports, ptr %a856 - %t862 = load i1, ptr %a105 - %t863 = insertvalue %S.gen.Options zeroinitializer, i1 %t862, 0 - %t864 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t864, ptr %a865 - store { ptr, i64, i64 } { ptr @.str.239, i64 5, i64 0 }, ptr %a866 - %t867 = call i32 @finch_str_eq(ptr %a865, ptr %a866) - %t868 = icmp ne i32 %t867, 0 - %t869 = insertvalue %S.gen.Options %t863, i1 %t868, 1 - %t870 = load i1, ptr %a106 - %t871 = insertvalue %S.gen.Options %t869, i1 %t870, 2 - %t872 = call { ptr, i64, i64 } @finch.host.cwd() - %t873 = insertvalue %S.gen.Options %t871, { ptr, i64, i64 } %t872, 3 - %t874 = load %S.platform.Target, ptr %a381 - store %S.platform.Target %t874, ptr %a875 - call void @finch.copy.S_platform_Target(ptr %a876, ptr %a875) - %t877 = load %S.platform.Target, ptr %a876 - %t878 = insertvalue %S.gen.Options %t873, %S.platform.Target %t877, 4 - %t879 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t858, { ptr, i64, i64 } %t860, %S.cimport.CImports %t861, %S.gen.Options %t878) - store %S.gen.Options %t878, ptr %a880 - call void @finch.drop.S_gen_Options(ptr %a880) - store { ptr, i64, i64 } %t879, ptr %a881 - %t882 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t882, ptr %a883 - store { ptr, i64, i64 } { ptr @.str.240, i64 2, i64 0 }, ptr %a884 - %t885 = call i32 @finch_str_eq(ptr %a883, ptr %a884) - %t886 = icmp ne i32 %t885, 0 - br label %logic.from409 -logic.from409: - br i1 %t886, label %logic.end411, label %logic.rhs410 -logic.rhs410: - %t887 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t887, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.241, i64 5, i64 0 }, ptr %a889 - %t890 = call i32 @finch_str_eq(ptr %a888, ptr %a889) - %t891 = icmp ne i32 %t890, 0 - br label %logic.rend412 -logic.rend412: - br label %logic.end411 -logic.end411: - %t892 = phi i1 [ true, %logic.from409 ], [ %t891, %logic.rend412 ] - br i1 %t892, label %then413, label %endif415 -then413: - %t893 = load { ptr, i64, i64 }, ptr %a881 - %t894 = extractvalue { ptr, i64, i64 } %t893, 1 - %t895 = trunc i64 %t894 to i32 - %t896 = extractvalue { ptr, i64, i64 } %t893, 0 - %t897 = icmp eq ptr %t896, null - %t898 = select i1 %t897, ptr @.str.242, ptr %t896 - %t899 = call i32 (ptr, ...) @printf(ptr @.str.243, i32 %t895, ptr %t898) - %t900 = call i32 (ptr, ...) @printf(ptr @.str.244) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -endif415: - %t901 = extractvalue { ptr, i64, i64 } { ptr @.str.245, i64 8, i64 0 }, 0 - %t902 = icmp eq ptr %t901, null - %t903 = select i1 %t902, ptr @.str.246, ptr %t901 - %t904 = call ptr @getenv(ptr %t903) - store { ptr, i64, i64 } zeroinitializer, ptr %a905 - call void @finch_str_from_c(ptr %a905, ptr %t904) - %t906 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t906, ptr %a907 - call void @finch_str_copy(ptr %a908, ptr %a907) - %t909 = load { ptr, i64, i64 }, ptr %a908 - store { ptr, i64, i64 } %t909, ptr %a910 - %t911 = getelementptr inbounds { ptr, i64, i64 }, ptr %a910, i32 0, i32 1 - %t912 = load i64, ptr %t911 - %t913 = icmp eq i64 %t912, 0 - br i1 %t913, label %then439, label %endif441 -then439: - %t914 = load { ptr, i64, i64 }, ptr %a1 - %t915 = extractvalue { ptr, i64, i64 } %t914, 1 - %t916 = icmp uge i64 0, %t915 - br i1 %t916, label %range442, label %inrange443 -range442: - call void @finch_panic_index(ptr @.str.247, i64 296, i64 0, i64 %t915) - unreachable -inrange443: - %t917 = extractvalue { ptr, i64, i64 } %t914, 0 - %t918 = getelementptr inbounds { ptr, i64, i64 }, ptr %t917, i64 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - %t920 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t919) - store { ptr, i64, i64 } %t920, ptr %a922 - store { ptr, i64, i64 } { ptr @.str.248, i64 22, i64 0 }, ptr %a923 - call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923) - store { ptr, i64, i64 } %t920, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load { ptr, i64, i64 }, ptr %a921 - %t926 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t925, ptr %a910 - store { ptr, i64, i64 } %t926, ptr %a927 - call void @finch_str_drop(ptr %a927) - br label %endif441 -endif441: - %t928 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t928, ptr %a929 - %t930 = call i32 @finch_file_exists(ptr %a929) - %t931 = icmp ne i32 %t930, 0 - %t932 = xor i1 %t931, true - br i1 %t932, label %then444, label %endif446 -then444: - %t933 = load { ptr, i64, i64 }, ptr %a1 - %t934 = extractvalue { ptr, i64, i64 } %t933, 1 - %t935 = icmp uge i64 0, %t934 - br i1 %t935, label %range447, label %inrange448 -range447: - call void @finch_panic_index(ptr @.str.249, i64 299, i64 0, i64 %t934) - unreachable -inrange448: - %t936 = extractvalue { ptr, i64, i64 } %t933, 0 - %t937 = getelementptr inbounds { ptr, i64, i64 }, ptr %t936, i64 0 - %t938 = load { ptr, i64, i64 }, ptr %t937 - %t939 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t938) - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.250, i64 19, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t944, ptr %a910 - store { ptr, i64, i64 } %t945, ptr %a946 - call void @finch_str_drop(ptr %a946) - br label %endif446 -endif446: - %t947 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t947, ptr %a948 - %t949 = call i32 @finch_file_exists(ptr %a948) - %t950 = icmp ne i32 %t949, 0 - %t951 = xor i1 %t950, true - br i1 %t951, label %then449, label %endif451 -then449: - %t952 = load { ptr, i64, i64 }, ptr %a1 - %t953 = extractvalue { ptr, i64, i64 } %t952, 1 - %t954 = icmp uge i64 0, %t953 - br i1 %t954, label %range452, label %inrange453 -range452: - call void @finch_panic_index(ptr @.str.251, i64 302, i64 0, i64 %t953) - unreachable -inrange453: - %t955 = extractvalue { ptr, i64, i64 } %t952, 0 - %t956 = getelementptr inbounds { ptr, i64, i64 }, ptr %t955, i64 0 - %t957 = load { ptr, i64, i64 }, ptr %t956 - %t958 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t957) - store { ptr, i64, i64 } %t958, ptr %a960 - store { ptr, i64, i64 } { ptr @.str.252, i64 34, i64 0 }, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t958, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - %t964 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t963, ptr %a910 - store { ptr, i64, i64 } %t964, ptr %a965 - call void @finch_str_drop(ptr %a965) - br label %endif451 -endif451: - %t966 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t966, ptr %a967 - %t968 = call i32 @finch_file_exists(ptr %a967) - %t969 = icmp ne i32 %t968, 0 - %t970 = xor i1 %t969, true - br label %logic.from454 -logic.from454: - br i1 %t970, label %logic.rhs455, label %logic.end456 -logic.rhs455: - store { ptr, i64, i64 } { ptr @.str.253, i64 18, i64 0 }, ptr %a971 - %t972 = call i32 @finch_file_exists(ptr %a971) - %t973 = icmp ne i32 %t972, 0 - br label %logic.rend457 -logic.rend457: - br label %logic.end456 -logic.end456: - %t974 = phi i1 [ false, %logic.from454 ], [ %t973, %logic.rend457 ] - br i1 %t974, label %then458, label %endif460 -then458: - %t975 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } { ptr @.str.254, i64 18, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t975, ptr %a976 - call void @finch_str_drop(ptr %a976) - br label %endif460 -endif460: - %t977 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t977, ptr %a978 - %t979 = call i32 @finch_file_exists(ptr %a978) - %t980 = icmp ne i32 %t979, 0 - %t981 = xor i1 %t980, true - br i1 %t981, label %then461, label %endif463 -then461: - %t982 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t982, ptr %a984 - store { ptr, i64, i64 } { ptr @.str.255, i64 19, i64 0 }, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - store { ptr, i64, i64 } %t982, ptr %a986 - call void @finch_str_drop(ptr %a986) - %t987 = load { ptr, i64, i64 }, ptr %a983 - %t988 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t987, ptr %a910 - store { ptr, i64, i64 } %t988, ptr %a989 - call void @finch_str_drop(ptr %a989) - br label %endif463 -endif463: - store { ptr, i64, i64 } { ptr @.str.256, i64 0, i64 0 }, ptr %a990 - %t991 = load i1, ptr %a105 - br i1 %t991, label %then464, label %endif466 -then464: - %t992 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.257, i64 6, i64 0 }, ptr %a990 - store { ptr, i64, i64 } %t992, ptr %a993 - call void @finch_str_drop(ptr %a993) - br label %endif466 -endif466: - %t994 = load i1, ptr %a106 - br i1 %t994, label %then467, label %endif469 -then467: - %t995 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t995, ptr %a997 - store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %a998 - call void @finch_str_concat(ptr %a996, ptr %a997, ptr %a998) - %t999 = load { ptr, i64, i64 }, ptr %a996 - %t1000 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t999, ptr %a990 - store { ptr, i64, i64 } %t1000, ptr %a1001 - call void @finch_str_drop(ptr %a1001) - br label %endif469 -endif469: - %t1002 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t1002, ptr %a1003 - call void @finch_str_copy(ptr %a1004, ptr %a1003) - %t1005 = load { ptr, i64, i64 }, ptr %a1004 - %t1006 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t1005, 0 - %t1007 = load { ptr, i64, i64 }, ptr %a881 - store { ptr, i64, i64 } %t1007, ptr %a1008 - call void @finch_str_copy(ptr %a1009, ptr %a1008) - %t1010 = load { ptr, i64, i64 }, ptr %a1009 - %t1011 = insertvalue %S.linker.Build %t1006, { ptr, i64, i64 } %t1010, 1 - %t1012 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t1012, ptr %a1013 - call void @finch_str_copy(ptr %a1014, ptr %a1013) - %t1015 = load { ptr, i64, i64 }, ptr %a1014 - %t1016 = insertvalue %S.linker.Build %t1011, { ptr, i64, i64 } %t1015, 2 - %t1017 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_copy(ptr %a1019, ptr %a1018) - %t1020 = load { ptr, i64, i64 }, ptr %a1019 - %t1021 = insertvalue %S.linker.Build %t1016, { ptr, i64, i64 } %t1020, 3 - %t1022 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t1022, ptr %a1023 - call void @finch_str_copy(ptr %a1024, ptr %a1023) - %t1025 = load { ptr, i64, i64 }, ptr %a1024 - %t1026 = insertvalue %S.linker.Build %t1021, { ptr, i64, i64 } %t1025, 4 - %t1027 = load i1, ptr %a105 - %t1028 = insertvalue %S.linker.Build %t1026, i1 %t1027, 5 - %t1029 = load { ptr, i64, i64 }, ptr %a643 - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch.copy.arr_str(ptr %a1031, ptr %a1030) - %t1032 = load { ptr, i64, i64 }, ptr %a1031 - %t1033 = insertvalue %S.linker.Build %t1028, { ptr, i64, i64 } %t1032, 6 - %t1034 = load %S.platform.Target, ptr %a381 - %t1035 = load %S.cimport.CImports, ptr %a856 - %t1036 = call i64 @finch.linker.build(%S.linker.Build %t1033, %S.platform.Target %t1034, %S.cimport.CImports %t1035) - store %S.linker.Build %t1033, ptr %a1037 - call void @finch.drop.S_linker_Build(ptr %a1037) - %t1038 = icmp ne i64 %t1036, 0 - br i1 %t1038, label %then470, label %endif472 -then470: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -endif472: - %t1039 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t1039, ptr %a1040 - store { ptr, i64, i64 } { ptr @.str.259, i64 3, i64 0 }, ptr %a1041 - %t1042 = call i32 @finch_str_eq(ptr %a1040, ptr %a1041) - %t1043 = icmp ne i32 %t1042, 0 - br i1 %t1043, label %then473, label %endif475 -then473: - store { ptr, i64, i64 } zeroinitializer, ptr %a1044 - store i64 0, ptr %a1045 - br label %each.cond476 -each.cond476: - %t1046 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t1047 = load i64, ptr %t1046 - %t1048 = load i64, ptr %a1045 - %t1049 = icmp slt i64 %t1048, %t1047 - br i1 %t1049, label %each.body477, label %each.end479 -each.body477: - %t1050 = load ptr, ptr %a113 - %t1051 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1050, i64 %t1048 - %t1052 = load { ptr, i64, i64 }, ptr %t1051 - store { ptr, i64, i64 } %t1052, ptr %a1053 - %t1054 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - %t1055 = load { ptr, i64, i64 }, ptr %a1053 - %t1056 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1055) - %t1057 = load i64, ptr %t1054 - %t1058 = add i64 %t1057, 1 - call void @finch_arr_reserve(ptr %a1044, i64 %t1058, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1059 = load ptr, ptr %a1044 - %t1060 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1059, i64 %t1057 - store { ptr, i64, i64 } %t1056, ptr %t1060 - store i64 %t1058, ptr %t1054 - br label %each.step478 -each.step478: - %t1061 = load i64, ptr %a1045 - %t1062 = add i64 %t1061, 1 - store i64 %t1062, ptr %a1045 - br label %each.cond476 -each.end479: - %t1063 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 8 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - %t1065 = load { ptr, i64, i64 }, ptr %a103 - %t1066 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1065) - store { ptr, i64, i64 } %t1064, ptr %a1068 - store { ptr, i64, i64 } %t1066, ptr %a1069 - call void @finch_str_concat(ptr %a1067, ptr %a1068, ptr %a1069) - store { ptr, i64, i64 } %t1066, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - %t1071 = load { ptr, i64, i64 }, ptr %a1067 - store { ptr, i64, i64 } %t1071, ptr %a1073 - store { ptr, i64, i64 } { ptr @.str.260, i64 1, i64 0 }, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1071, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.261, i64 1, i64 0 }, ptr %a1078 - call void @finch_str_join(ptr %a1079, ptr %a1044, ptr %a1078) - %t1080 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1076, ptr %a1082 - store { ptr, i64, i64 } %t1080, ptr %a1083 - call void @finch_str_concat(ptr %a1081, ptr %a1082, ptr %a1083) - store { ptr, i64, i64 } %t1076, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - store { ptr, i64, i64 } %t1080, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1081 - %t1087 = call i64 @finch.host.run({ ptr, i64, i64 } %t1086) - store { ptr, i64, i64 } %t1086, ptr %a1088 - call void @finch_str_drop(ptr %a1088) - store i64 %t1087, ptr %a1089 - %t1090 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.host.remove({ ptr, i64, i64 } %t1090) - %t1091 = load i64, ptr %a1089 - call void @finch.drop.arr_str(ptr %a1044) - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 %t1091 -endif475: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -} - -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.from480 -logic.from480: - br i1 %t3, label %logic.rhs481, label %logic.end482 -logic.rhs481: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend483 -logic.rend483: - br label %logic.end482 -logic.end482: - %t6 = phi i1 [ false, %logic.from480 ], [ %t5, %logic.rend483 ] - br label %logic.from484 -logic.from484: - br i1 %t6, label %logic.end486, label %logic.rhs485 -logic.rhs485: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from487 -logic.from487: - br i1 %t8, label %logic.rhs488, label %logic.end489 -logic.rhs488: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend490 -logic.rend490: - br label %logic.end489 -logic.end489: - %t11 = phi i1 [ false, %logic.from487 ], [ %t10, %logic.rend490 ] - br label %logic.rend491 -logic.rend491: - br label %logic.end486 -logic.end486: - %t12 = phi i1 [ true, %logic.from484 ], [ %t11, %logic.rend491 ] - br label %logic.from492 -logic.from492: - br i1 %t12, label %logic.end494, label %logic.rhs493 -logic.rhs493: - %t13 = load i8, ptr %a1 - %t14 = icmp eq i8 %t13, 95 - br label %logic.rend495 -logic.rend495: - br label %logic.end494 -logic.end494: - %t15 = phi i1 [ true, %logic.from492 ], [ %t14, %logic.rend495 ] - 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.from496 -logic.from496: - br i1 %t3, label %logic.rhs497, label %logic.end498 -logic.rhs497: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend499 -logic.rend499: - br label %logic.end498 -logic.end498: - %t6 = phi i1 [ false, %logic.from496 ], [ %t5, %logic.rend499 ] - 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.from500 -logic.from500: - br i1 %t3, label %logic.end502, label %logic.rhs501 -logic.rhs501: - %t4 = load i8, ptr %a1 - %t5 = icmp uge i8 %t4, 97 - br label %logic.from503 -logic.from503: - br i1 %t5, label %logic.rhs504, label %logic.end505 -logic.rhs504: - %t6 = load i8, ptr %a1 - %t7 = icmp ule i8 %t6, 102 - br label %logic.rend506 -logic.rend506: - br label %logic.end505 -logic.end505: - %t8 = phi i1 [ false, %logic.from503 ], [ %t7, %logic.rend506 ] - br label %logic.rend507 -logic.rend507: - br label %logic.end502 -logic.end502: - %t9 = phi i1 [ true, %logic.from500 ], [ %t8, %logic.rend507 ] - br label %logic.from508 -logic.from508: - br i1 %t9, label %logic.end510, label %logic.rhs509 -logic.rhs509: - %t10 = load i8, ptr %a1 - %t11 = icmp uge i8 %t10, 65 - br label %logic.from511 -logic.from511: - br i1 %t11, label %logic.rhs512, label %logic.end513 -logic.rhs512: - %t12 = load i8, ptr %a1 - %t13 = icmp ule i8 %t12, 70 - br label %logic.rend514 -logic.rend514: - br label %logic.end513 -logic.end513: - %t14 = phi i1 [ false, %logic.from511 ], [ %t13, %logic.rend514 ] - br label %logic.rend515 -logic.rend515: - br label %logic.end510 -logic.end510: - %t15 = phi i1 [ true, %logic.from508 ], [ %t14, %logic.rend515 ] - 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.262, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.263, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.264, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.265, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.266, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.267, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.268, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.269, i64 5, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.270, i64 8, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.273, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.274, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.275, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.276, i64 6, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.277, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.278, i64 2, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.279, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.280, i64 4, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.281, i64 5, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.282, i64 6, i64 0 }, ptr %t24 - %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t26 = insertvalue { ptr, i64, i64 } %t25, i64 21, 1 - %t27 = insertvalue { ptr, i64, i64 } %t26, i64 21, 2 - 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.cond516 -find.cond516: - %t35 = load i64, ptr %a34 - %t36 = icmp slt i64 %t35, %t32 - br i1 %t36, label %find.body517, label %find.end520 -find.body517: - %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.hit518, label %find.next519 -find.hit518: - store i64 %t35, ptr %a31 - br label %find.end520 -find.next519: - %t43 = add i64 %t35, 1 - store i64 %t43, ptr %a34 - br label %find.cond516 -find.end520: - %t44 = load i64, ptr %a31 - %t45 = icmp sge i64 %t44, 0 - call void @finch.drop.arr_str(ptr %a28) - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic521, label %ok522 -panic521: - call void @finch_panic(ptr @.str.283, i64 41, ptr @.str.284) - unreachable -ok522: - %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.285, i64 1, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a9 - %t13 = load i64, ptr %a2 - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.286, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a28, i64 %t27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t26, ptr %a33 - call void @finch_str_drop(ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.287, i64 9, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = trunc i64 %t47 to i32 - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = icmp eq ptr %t49, null - %t51 = select i1 %t50, ptr @.str.288, ptr %t49 - %t52 = call i32 (ptr, ...) @printf(ptr @.str.289, i32 %t48, ptr %t51) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = call i32 (ptr, ...) @printf(ptr @.str.290) - %t55 = trunc i64 1 to i32 - %t56 = call i32 @fflush(ptr null) - call void @exit(i32 %t55) - ret void -} - -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 %panic523, label %ok524 -panic523: - call void @finch_panic(ptr @.str.291, i64 46, ptr @.str.292) - unreachable -ok524: - %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 %panic525, label %ok526 -panic525: - call void @finch_panic(ptr @.str.293, i64 46, ptr @.str.294) - unreachable -ok526: - %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 %then527, label %endif529 -then527: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic530, label %ok531 -panic530: - call void @finch_panic(ptr @.str.295, i64 47, ptr @.str.296) - unreachable -ok531: - %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 %panic532, label %ok533 -panic532: - call void @finch_panic(ptr @.str.297, i64 47, ptr @.str.298) - unreachable -ok533: - %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 %range534, label %inrange535 -range534: - call void @finch_panic_index(ptr @.str.299, i64 47, i64 %t23, i64 %t25) - unreachable -inrange535: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 - %t29 = load i8, ptr %t28 - ret i8 %t29 -endif529: - %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 %panic536, label %ok537 -panic536: - call void @finch_panic(ptr @.str.300, i64 53, ptr @.str.301) - unreachable -ok537: - %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 %panic538, label %ok539 -panic538: - call void @finch_panic(ptr @.str.302, i64 53, ptr @.str.303) - unreachable -ok539: - %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 %range540, label %inrange541 -range540: - call void @finch_panic_index(ptr @.str.304, i64 53, i64 %t8, i64 %t10) - unreachable -inrange541: - %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 %then542, label %else543 -then542: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic545, label %ok546 -panic545: - call void @finch_panic(ptr @.str.305, i64 55, ptr @.str.306) - unreachable -ok546: - %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 %panic547, label %ok548 -panic547: - call void @finch_panic(ptr @.str.307, i64 56, ptr @.str.308) - unreachable -ok548: - %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 %panic549, label %ok550 -panic549: - call void @finch_panic(ptr @.str.309, i64 57, ptr @.str.310) - unreachable -ok550: - %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 - store i1 true, ptr %t28 - br label %endif544 -else543: - %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 %then551, label %endif553 -then551: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic554, label %ok555 -panic554: - call void @finch_panic(ptr @.str.311, i64 59, ptr @.str.312) - unreachable -ok555: - %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 %endif553 -endif553: - br label %endif544 -endif544: - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic556, label %ok557 -panic556: - call void @finch_panic(ptr @.str.313, i64 61, ptr @.str.314) - unreachable -ok557: - %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 - 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.315, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.322, i64 2, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.323, i64 2, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.324, i64 2, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.325, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.326, i64 2, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.327, i64 2, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.328, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.329, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.330, i64 2, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic558, label %ok559 -panic558: - call void @finch_panic(ptr @.str.331, i64 67, ptr @.str.332) - unreachable -ok559: - %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 %panic560, label %ok561 -panic560: - call void @finch_panic(ptr @.str.333, i64 67, ptr @.str.334) - unreachable -ok561: - %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 %then562, label %endif564 -then562: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic565, label %ok566 -panic565: - call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) - unreachable -ok566: - %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 %panic567, label %ok568 -panic567: - call void @finch_panic(ptr @.str.338, i64 68, ptr @.str.339) - unreachable -ok568: - %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 %panic569, label %ok570 -panic569: - call void @finch_panic(ptr @.str.340, i64 68, ptr @.str.341) - unreachable -ok570: - %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.337, i64 68) - %t50 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 - %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.cond571 -find.cond571: - %t58 = load i64, ptr %a57 - %t59 = icmp slt i64 %t58, %t55 - br i1 %t59, label %find.body572, label %find.end575 -find.body572: - %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.hit573, label %find.next574 -find.hit573: - store i64 %t58, ptr %a54 - br label %find.end575 -find.next574: - %t66 = add i64 %t58, 1 - store i64 %t66, ptr %a57 - br label %find.cond571 -find.end575: - %t67 = load i64, ptr %a54 - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then576, label %endif578 -then576: - %t69 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t69 -endif578: - call void @finch_str_drop(ptr %a51) - br label %endif564 -endif564: - store { ptr, i64, i64 } { ptr @.str.342, i64 22, i64 0 }, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic579, label %ok580 -panic579: - call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) - unreachable -ok580: - %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 %panic581, label %ok582 -panic581: - call void @finch_panic(ptr @.str.346, i64 74, ptr @.str.347) - unreachable -ok582: - %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 %panic583, label %ok584 -panic583: - call void @finch_panic(ptr @.str.348, i64 74, ptr @.str.349) - unreachable -ok584: - %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.345, 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 %then585, label %endif587 -then585: - %t95 = load { ptr, i64, i64 }, ptr %a87 - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t95 -endif587: - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } { ptr @.str.351, i64 0, i64 0 } -} - -define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { -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 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i8 %p1, ptr %a2 - %t3 = load i8, ptr %a2 - %t4 = icmp eq i8 %t3, 110 - br i1 %t4, label %then588, label %endif590 -then588: - ret i8 10 -endif590: - %t5 = load i8, ptr %a2 - %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then591, label %endif593 -then591: - ret i8 9 -endif593: - %t7 = load i8, ptr %a2 - %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then594, label %endif596 -then594: - ret i8 13 -endif596: - %t9 = load i8, ptr %a2 - %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then597, label %endif599 -then597: - %t11 = trunc i64 0 to i8 - ret i8 %t11 -endif599: - %t12 = load i8, ptr %a2 - %t13 = icmp eq i8 %t12, 92 - br label %logic.from600 -logic.from600: - br i1 %t13, label %logic.end602, label %logic.rhs601 -logic.rhs601: - %t14 = load i8, ptr %a2 - %t15 = icmp eq i8 %t14, 34 - br label %logic.rend603 -logic.rend603: - br label %logic.end602 -logic.end602: - %t16 = phi i1 [ true, %logic.from600 ], [ %t15, %logic.rend603 ] - br label %logic.from604 -logic.from604: - br i1 %t16, label %logic.end606, label %logic.rhs605 -logic.rhs605: - %t17 = load i8, ptr %a2 - %t18 = icmp eq i8 %t17, 39 - br label %logic.rend607 -logic.rend607: - br label %logic.end606 -logic.end606: - %t19 = phi i1 [ true, %logic.from604 ], [ %t18, %logic.rend607 ] - br i1 %t19, label %then608, label %endif610 -then608: - %t20 = load i8, ptr %a2 - ret i8 %t20 -endif610: - %t21 = load ptr, ptr %a1 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic611, label %ok612 -panic611: - call void @finch_panic(ptr @.str.352, i64 97, ptr @.str.353) - unreachable -ok612: - %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 %panic613, label %ok614 -panic613: - call void @finch_panic(ptr @.str.354, i64 97, ptr @.str.355) - unreachable -ok614: - %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.356, i64 16, i64 0 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load i8, ptr %a2 - ret i8 %t40 -} - -define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) { -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.drop.S_lexer_Lexer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca i8, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca i8, align 16 - %a471 = alloca i8, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca i64, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca i64, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca %S.lexer.Token, align 16 - %a593 = alloca %S.lexer.Token, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond615 -while.cond615: - %t20 = load ptr, ptr %a18 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic618, label %ok619 -panic618: - call void @finch_panic(ptr @.str.357, i64 105, ptr @.str.358) - unreachable -ok619: - %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 %panic620, label %ok621 -panic620: - call void @finch_panic(ptr @.str.359, i64 105, ptr @.str.360) - unreachable -ok621: - %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.body616, label %while.end617 -while.body616: - %t30 = load ptr, ptr %a18 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic622, label %ok623 -panic622: - call void @finch_panic(ptr @.str.361, i64 106, ptr @.str.362) - unreachable -ok623: - %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 %panic624, label %ok625 -panic624: - call void @finch_panic(ptr @.str.363, i64 106, ptr @.str.364) - unreachable -ok625: - %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 %range626, label %inrange627 -range626: - call void @finch_panic_index(ptr @.str.365, i64 106, i64 %t36, i64 %t38) - unreachable -inrange627: - %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.from628 -logic.from628: - br i1 %t45, label %logic.end630, label %logic.rhs629 -logic.rhs629: - %t46 = load i8, ptr %a43 - %t47 = icmp eq i8 %t46, 9 - br label %logic.rend631 -logic.rend631: - br label %logic.end630 -logic.end630: - %t48 = phi i1 [ true, %logic.from628 ], [ %t47, %logic.rend631 ] - br label %logic.from632 -logic.from632: - br i1 %t48, label %logic.end634, label %logic.rhs633 -logic.rhs633: - %t49 = load i8, ptr %a43 - %t50 = icmp eq i8 %t49, 10 - br label %logic.rend635 -logic.rend635: - br label %logic.end634 -logic.end634: - %t51 = phi i1 [ true, %logic.from632 ], [ %t50, %logic.rend635 ] - br label %logic.from636 -logic.from636: - br i1 %t51, label %logic.end638, label %logic.rhs637 -logic.rhs637: - %t52 = load i8, ptr %a43 - %t53 = icmp eq i8 %t52, 13 - br label %logic.rend639 -logic.rend639: - br label %logic.end638 -logic.end638: - %t54 = phi i1 [ true, %logic.from636 ], [ %t53, %logic.rend639 ] - br i1 %t54, label %then640, label %endif642 -then640: - %t55 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t55) - br label %while.cond615 -endif642: - %t56 = load i8, ptr %a43 - %t57 = icmp eq i8 %t56, 47 - br label %logic.from643 -logic.from643: - br i1 %t57, label %logic.rhs644, label %logic.end645 -logic.rhs644: - %t58 = load ptr, ptr %a18 - %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) - %t60 = icmp eq i8 %t59, 47 - br label %logic.rend646 -logic.rend646: - br label %logic.end645 -logic.end645: - %t61 = phi i1 [ false, %logic.from643 ], [ %t60, %logic.rend646 ] - br i1 %t61, label %then647, label %endif649 -then647: - br label %while.cond650 -while.cond650: - %t62 = load ptr, ptr %a18 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic653, label %ok654 -panic653: - call void @finch_panic(ptr @.str.366, i64 112, ptr @.str.367) - unreachable -ok654: - %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 %panic655, label %ok656 -panic655: - call void @finch_panic(ptr @.str.368, i64 112, ptr @.str.369) - unreachable -ok656: - %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.from657 -logic.from657: - br i1 %t71, label %logic.rhs658, label %logic.end659 -logic.rhs658: - %t72 = load ptr, ptr %a18 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic660, label %ok661 -panic660: - call void @finch_panic(ptr @.str.370, i64 112, ptr @.str.371) - unreachable -ok661: - %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 %panic662, label %ok663 -panic662: - call void @finch_panic(ptr @.str.372, i64 112, ptr @.str.373) - unreachable -ok663: - %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 %range664, label %inrange665 -range664: - call void @finch_panic_index(ptr @.str.374, i64 112, i64 %t78, i64 %t80) - unreachable -inrange665: - %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.rend666 -logic.rend666: - br label %logic.end659 -logic.end659: - %t86 = phi i1 [ false, %logic.from657 ], [ %t85, %logic.rend666 ] - br i1 %t86, label %while.body651, label %while.end652 -while.body651: - %t87 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t87) - br label %while.cond650 -while.end652: - br label %while.cond615 -endif649: - %t88 = load i8, ptr %a43 - %t89 = icmp eq i8 %t88, 47 - br label %logic.from667 -logic.from667: - br i1 %t89, label %logic.rhs668, label %logic.end669 -logic.rhs668: - %t90 = load ptr, ptr %a18 - %t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1) - %t92 = icmp eq i8 %t91, 42 - br label %logic.rend670 -logic.rend670: - br label %logic.end669 -logic.end669: - %t93 = phi i1 [ false, %logic.from667 ], [ %t92, %logic.rend670 ] - br i1 %t93, label %then671, label %endif673 -then671: - %t94 = load ptr, ptr %a18 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic674, label %ok675 -panic674: - call void @finch_panic(ptr @.str.375, i64 118, ptr @.str.376) - unreachable -ok675: - %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 %panic676, label %ok677 -panic676: - call void @finch_panic(ptr @.str.377, i64 119, ptr @.str.378) - unreachable -ok677: - %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.cond678 -while.cond678: - %t106 = load ptr, ptr %a18 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic681, label %ok682 -panic681: - call void @finch_panic(ptr @.str.379, i64 122, ptr @.str.380) - unreachable -ok682: - %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 %panic683, label %ok684 -panic683: - call void @finch_panic(ptr @.str.381, i64 122, ptr @.str.382) - unreachable -ok684: - %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.from685 -logic.from685: - br i1 %t115, label %logic.rhs686, label %logic.end687 -logic.rhs686: - %t116 = load ptr, ptr %a18 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic688, label %ok689 -panic688: - call void @finch_panic(ptr @.str.383, i64 122, ptr @.str.384) - unreachable -ok689: - %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 %panic690, label %ok691 -panic690: - call void @finch_panic(ptr @.str.385, i64 122, ptr @.str.386) - unreachable -ok691: - %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 %range692, label %inrange693 -range692: - call void @finch_panic_index(ptr @.str.387, i64 122, i64 %t122, i64 %t124) - unreachable -inrange693: - %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.from694 -logic.from694: - br i1 %t129, label %logic.rhs695, label %logic.end696 -logic.rhs695: - %t130 = load ptr, ptr %a18 - %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) - %t132 = icmp eq i8 %t131, 47 - br label %logic.rend697 -logic.rend697: - br label %logic.end696 -logic.end696: - %t133 = phi i1 [ false, %logic.from694 ], [ %t132, %logic.rend697 ] - %t134 = xor i1 %t133, true - br label %logic.rend698 -logic.rend698: - br label %logic.end687 -logic.end687: - %t135 = phi i1 [ false, %logic.from685 ], [ %t134, %logic.rend698 ] - br i1 %t135, label %while.body679, label %while.end680 -while.body679: - %t136 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t136) - br label %while.cond678 -while.end680: - %t137 = load ptr, ptr %a18 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic699, label %ok700 -panic699: - call void @finch_panic(ptr @.str.388, i64 125, ptr @.str.389) - unreachable -ok700: - %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 %panic701, label %ok702 -panic701: - call void @finch_panic(ptr @.str.390, i64 125, ptr @.str.391) - unreachable -ok702: - %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 %then703, label %endif705 -then703: - %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.392, i64 36, i64 0 }) - br label %endif705 -endif705: - %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.cond615 -endif673: - %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.393, i64 0, i64 0 }, 0 - %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.394, i64 0, i64 0 }, 1 - %t154 = load ptr, ptr %a18 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic706, label %ok707 -panic706: - call void @finch_panic(ptr @.str.395, i64 133, ptr @.str.396) - unreachable -ok707: - %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 %panic708, label %ok709 -panic708: - call void @finch_panic(ptr @.str.397, i64 133, ptr @.str.398) - unreachable -ok709: - %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 %panic710, label %ok711 -panic710: - call void @finch_panic(ptr @.str.399, i64 133, ptr @.str.400) - unreachable -ok711: - %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 %panic712, label %ok713 -panic712: - call void @finch_panic(ptr @.str.401, i64 134, ptr @.str.402) - unreachable -ok713: - %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 %panic714, label %ok715 -panic714: - call void @finch_panic(ptr @.str.403, i64 135, ptr @.str.404) - unreachable -ok715: - %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 %then716, label %else717 -then716: - br label %while.cond719 -while.cond719: - %t180 = load ptr, ptr %a18 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic722, label %ok723 -panic722: - call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) - unreachable -ok723: - %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 %panic724, label %ok725 -panic724: - call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) - unreachable -ok725: - %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.from726 -logic.from726: - br i1 %t189, label %logic.rhs727, label %logic.end728 -logic.rhs727: - %t190 = load ptr, ptr %a18 - %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic729, label %ok730 -panic729: - call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) - unreachable -ok730: - %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 %panic731, label %ok732 -panic731: - call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) - unreachable -ok732: - %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 %range733, label %inrange734 -range733: - call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t196, i64 %t198) - unreachable -inrange734: - %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.from735 -logic.from735: - br i1 %t203, label %logic.end737, label %logic.rhs736 -logic.rhs736: - %t204 = load ptr, ptr %a18 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic738, label %ok739 -panic738: - call void @finch_panic(ptr @.str.414, i64 137, ptr @.str.415) - unreachable -ok739: - %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 %panic740, label %ok741 -panic740: - call void @finch_panic(ptr @.str.416, i64 137, ptr @.str.417) - unreachable -ok741: - %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 %range742, label %inrange743 -range742: - call void @finch_panic_index(ptr @.str.418, i64 137, i64 %t210, i64 %t212) - unreachable -inrange743: - %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.rend744 -logic.rend744: - br label %logic.end737 -logic.end737: - %t218 = phi i1 [ true, %logic.from735 ], [ %t217, %logic.rend744 ] - br label %logic.rend745 -logic.rend745: - br label %logic.end728 -logic.end728: - %t219 = phi i1 [ false, %logic.from726 ], [ %t218, %logic.rend745 ] - br i1 %t219, label %while.body720, label %while.end721 -while.body720: - %t220 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t220) - br label %while.cond719 -while.end721: - %t221 = load ptr, ptr %a18 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic746, label %ok747 -panic746: - call void @finch_panic(ptr @.str.419, i64 140, ptr @.str.420) - unreachable -ok747: - %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 %panic748, label %ok749 -panic748: - call void @finch_panic(ptr @.str.422, i64 140, ptr @.str.423) - unreachable -ok749: - %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.421, i64 140) - %t232 = load { ptr, i64, i64 }, ptr %a226 - %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t232, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } { ptr @.str.424, i64 5, i64 0 }, ptr %t236 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t240) - br i1 %t241, label %then750, label %endif752 -then750: - %t242 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t243, ptr %a245 - call void @finch_str_copy(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - %t248 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t247, ptr %t244 - store { ptr, i64, i64 } %t248, ptr %a249 - call void @finch_str_drop(ptr %a249) - br label %endif752 -endif752: - br label %endif718 -else717: - %t250 = load i8, ptr %a43 - %t251 = call i1 @finch.lexer.isDigit(i8 %t250) - br i1 %t251, label %then753, label %else754 -then753: - %t252 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } { ptr @.str.425, i64 3, i64 0 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load i8, ptr %a43 - %t256 = icmp eq i8 %t255, 48 - br label %logic.from756 -logic.from756: - br i1 %t256, label %logic.rhs757, label %logic.end758 -logic.rhs757: - %t257 = load ptr, ptr %a18 - %t258 = call i8 @finch.lexer.peek(ptr %t257, i64 1) - %t259 = icmp eq i8 %t258, 120 - br label %logic.from759 -logic.from759: - br i1 %t259, label %logic.end761, label %logic.rhs760 -logic.rhs760: - %t260 = load ptr, ptr %a18 - %t261 = call i8 @finch.lexer.peek(ptr %t260, i64 1) - %t262 = icmp eq i8 %t261, 88 - br label %logic.rend762 -logic.rend762: - br label %logic.end761 -logic.end761: - %t263 = phi i1 [ true, %logic.from759 ], [ %t262, %logic.rend762 ] - br label %logic.rend763 -logic.rend763: - br label %logic.end758 -logic.end758: - %t264 = phi i1 [ false, %logic.from756 ], [ %t263, %logic.rend763 ] - br i1 %t264, label %then764, label %else765 -then764: - %t265 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t265) - %t266 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t266) - br label %while.cond767 -while.cond767: - %t267 = load ptr, ptr %a18 - %t268 = icmp eq ptr %t267, null - br i1 %t268, label %panic770, label %ok771 -panic770: - call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) - unreachable -ok771: - %t269 = getelementptr inbounds %S.lexer.Lexer, ptr %t267, i32 0, i32 2 - %t270 = load i64, ptr %t269 - %t271 = load ptr, ptr %a18 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic772, label %ok773 -panic772: - call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) - unreachable -ok773: - %t273 = getelementptr inbounds %S.lexer.Lexer, ptr %t271, i32 0, i32 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load i64, ptr %t274 - %t276 = icmp slt i64 %t270, %t275 - br label %logic.from774 -logic.from774: - br i1 %t276, label %logic.rhs775, label %logic.end776 -logic.rhs775: - %t277 = load ptr, ptr %a18 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic777, label %ok778 -panic777: - call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) - unreachable -ok778: - %t279 = getelementptr inbounds %S.lexer.Lexer, ptr %t277, i32 0, i32 0 - %t280 = load ptr, ptr %a18 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic779, label %ok780 -panic779: - call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) - unreachable -ok780: - %t282 = getelementptr inbounds %S.lexer.Lexer, ptr %t280, i32 0, i32 2 - %t283 = load i64, ptr %t282 - %t284 = load { ptr, i64, i64 }, ptr %t279 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range781, label %inrange782 -range781: - call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t283, i64 %t285) - unreachable -inrange782: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds i8, ptr %t287, i64 %t283 - %t289 = load i8, ptr %t288 - %t290 = call i1 @finch.lexer.isHex(i8 %t289) - br label %logic.from783 -logic.from783: - br i1 %t290, label %logic.end785, label %logic.rhs784 -logic.rhs784: - %t291 = load ptr, ptr %a18 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic786, label %ok787 -panic786: - call void @finch_panic(ptr @.str.435, i64 150, ptr @.str.436) - unreachable -ok787: - %t293 = getelementptr inbounds %S.lexer.Lexer, ptr %t291, i32 0, i32 0 - %t294 = load ptr, ptr %a18 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic788, label %ok789 -panic788: - call void @finch_panic(ptr @.str.437, i64 150, ptr @.str.438) - unreachable -ok789: - %t296 = getelementptr inbounds %S.lexer.Lexer, ptr %t294, i32 0, i32 2 - %t297 = load i64, ptr %t296 - %t298 = load { ptr, i64, i64 }, ptr %t293 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range790, label %inrange791 -range790: - call void @finch_panic_index(ptr @.str.439, i64 150, i64 %t297, i64 %t299) - unreachable -inrange791: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds i8, ptr %t301, i64 %t297 - %t303 = load i8, ptr %t302 - %t304 = icmp eq i8 %t303, 95 - br label %logic.rend792 -logic.rend792: - br label %logic.end785 -logic.end785: - %t305 = phi i1 [ true, %logic.from783 ], [ %t304, %logic.rend792 ] - br label %logic.rend793 -logic.rend793: - br label %logic.end776 -logic.end776: - %t306 = phi i1 [ false, %logic.from774 ], [ %t305, %logic.rend793 ] - br i1 %t306, label %while.body768, label %while.end769 -while.body768: - %t307 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t307) - br label %while.cond767 -while.end769: - br label %endif766 -else765: - br label %while.cond794 -while.cond794: - %t308 = load ptr, ptr %a18 - %t309 = icmp eq ptr %t308, null - br i1 %t309, label %panic797, label %ok798 -panic797: - call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) - unreachable -ok798: - %t310 = getelementptr inbounds %S.lexer.Lexer, ptr %t308, i32 0, i32 2 - %t311 = load i64, ptr %t310 - %t312 = load ptr, ptr %a18 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic799, label %ok800 -panic799: - call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) - unreachable -ok800: - %t314 = getelementptr inbounds %S.lexer.Lexer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = icmp slt i64 %t311, %t316 - br label %logic.from801 -logic.from801: - br i1 %t317, label %logic.rhs802, label %logic.end803 -logic.rhs802: - %t318 = load ptr, ptr %a18 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic804, label %ok805 -panic804: - call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) - unreachable -ok805: - %t320 = getelementptr inbounds %S.lexer.Lexer, ptr %t318, i32 0, i32 0 - %t321 = load ptr, ptr %a18 - %t322 = icmp eq ptr %t321, null - br i1 %t322, label %panic806, label %ok807 -panic806: - call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) - unreachable -ok807: - %t323 = getelementptr inbounds %S.lexer.Lexer, ptr %t321, i32 0, i32 2 - %t324 = load i64, ptr %t323 - %t325 = load { ptr, i64, i64 }, ptr %t320 - %t326 = extractvalue { ptr, i64, i64 } %t325, 1 - %t327 = icmp uge i64 %t324, %t326 - br i1 %t327, label %range808, label %inrange809 -range808: - call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t324, i64 %t326) - unreachable -inrange809: - %t328 = extractvalue { ptr, i64, i64 } %t325, 0 - %t329 = getelementptr inbounds i8, ptr %t328, i64 %t324 - %t330 = load i8, ptr %t329 - %t331 = call i1 @finch.lexer.isDigit(i8 %t330) - br label %logic.from810 -logic.from810: - br i1 %t331, label %logic.end812, label %logic.rhs811 -logic.rhs811: - %t332 = load ptr, ptr %a18 - %t333 = icmp eq ptr %t332, null - br i1 %t333, label %panic813, label %ok814 -panic813: - call void @finch_panic(ptr @.str.449, i64 154, ptr @.str.450) - unreachable -ok814: - %t334 = getelementptr inbounds %S.lexer.Lexer, ptr %t332, i32 0, i32 0 - %t335 = load ptr, ptr %a18 - %t336 = icmp eq ptr %t335, null - br i1 %t336, label %panic815, label %ok816 -panic815: - call void @finch_panic(ptr @.str.451, i64 154, ptr @.str.452) - unreachable -ok816: - %t337 = getelementptr inbounds %S.lexer.Lexer, ptr %t335, i32 0, i32 2 - %t338 = load i64, ptr %t337 - %t339 = load { ptr, i64, i64 }, ptr %t334 - %t340 = extractvalue { ptr, i64, i64 } %t339, 1 - %t341 = icmp uge i64 %t338, %t340 - br i1 %t341, label %range817, label %inrange818 -range817: - call void @finch_panic_index(ptr @.str.453, i64 154, i64 %t338, i64 %t340) - unreachable -inrange818: - %t342 = extractvalue { ptr, i64, i64 } %t339, 0 - %t343 = getelementptr inbounds i8, ptr %t342, i64 %t338 - %t344 = load i8, ptr %t343 - %t345 = icmp eq i8 %t344, 95 - br label %logic.rend819 -logic.rend819: - br label %logic.end812 -logic.end812: - %t346 = phi i1 [ true, %logic.from810 ], [ %t345, %logic.rend819 ] - br label %logic.rend820 -logic.rend820: - br label %logic.end803 -logic.end803: - %t347 = phi i1 [ false, %logic.from801 ], [ %t346, %logic.rend820 ] - br i1 %t347, label %while.body795, label %while.end796 -while.body795: - %t348 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t348) - br label %while.cond794 -while.end796: - %t349 = load ptr, ptr %a18 - %t350 = call i8 @finch.lexer.peek(ptr %t349, i64 0) - %t351 = icmp eq i8 %t350, 46 - br label %logic.from821 -logic.from821: - br i1 %t351, label %logic.rhs822, label %logic.end823 -logic.rhs822: - %t352 = load ptr, ptr %a18 - %t353 = call i8 @finch.lexer.peek(ptr %t352, i64 1) - %t354 = call i1 @finch.lexer.isDigit(i8 %t353) - br label %logic.rend824 -logic.rend824: - br label %logic.end823 -logic.end823: - %t355 = phi i1 [ false, %logic.from821 ], [ %t354, %logic.rend824 ] - br i1 %t355, label %then825, label %endif827 -then825: - %t356 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t357 = load { ptr, i64, i64 }, ptr %t356 - store { ptr, i64, i64 } { ptr @.str.454, i64 5, i64 0 }, ptr %t356 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_drop(ptr %a358) - %t359 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t359) - br label %while.cond828 -while.cond828: - %t360 = load ptr, ptr %a18 - %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic831, label %ok832 -panic831: - call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) - unreachable -ok832: - %t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 2 - %t363 = load i64, ptr %t362 - %t364 = load ptr, ptr %a18 - %t365 = icmp eq ptr %t364, null - br i1 %t365, label %panic833, label %ok834 -panic833: - call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) - unreachable -ok834: - %t366 = getelementptr inbounds %S.lexer.Lexer, ptr %t364, i32 0, i32 0 - %t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1 - %t368 = load i64, ptr %t367 - %t369 = icmp slt i64 %t363, %t368 - br label %logic.from835 -logic.from835: - br i1 %t369, label %logic.rhs836, label %logic.end837 -logic.rhs836: - %t370 = load ptr, ptr %a18 - %t371 = icmp eq ptr %t370, null - br i1 %t371, label %panic838, label %ok839 -panic838: - call void @finch_panic(ptr @.str.459, i64 160, ptr @.str.460) - unreachable -ok839: - %t372 = getelementptr inbounds %S.lexer.Lexer, ptr %t370, i32 0, i32 0 - %t373 = load ptr, ptr %a18 - %t374 = icmp eq ptr %t373, null - br i1 %t374, label %panic840, label %ok841 -panic840: - call void @finch_panic(ptr @.str.461, i64 160, ptr @.str.462) - unreachable -ok841: - %t375 = getelementptr inbounds %S.lexer.Lexer, ptr %t373, i32 0, i32 2 - %t376 = load i64, ptr %t375 - %t377 = load { ptr, i64, i64 }, ptr %t372 - %t378 = extractvalue { ptr, i64, i64 } %t377, 1 - %t379 = icmp uge i64 %t376, %t378 - br i1 %t379, label %range842, label %inrange843 -range842: - call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t376, i64 %t378) - unreachable -inrange843: - %t380 = extractvalue { ptr, i64, i64 } %t377, 0 - %t381 = getelementptr inbounds i8, ptr %t380, i64 %t376 - %t382 = load i8, ptr %t381 - %t383 = call i1 @finch.lexer.isDigit(i8 %t382) - br label %logic.from844 -logic.from844: - br i1 %t383, label %logic.end846, label %logic.rhs845 -logic.rhs845: - %t384 = load ptr, ptr %a18 - %t385 = icmp eq ptr %t384, null - br i1 %t385, label %panic847, label %ok848 -panic847: - call void @finch_panic(ptr @.str.464, i64 160, ptr @.str.465) - unreachable -ok848: - %t386 = getelementptr inbounds %S.lexer.Lexer, ptr %t384, i32 0, i32 0 - %t387 = load ptr, ptr %a18 - %t388 = icmp eq ptr %t387, null - br i1 %t388, label %panic849, label %ok850 -panic849: - call void @finch_panic(ptr @.str.466, i64 160, ptr @.str.467) - unreachable -ok850: - %t389 = getelementptr inbounds %S.lexer.Lexer, ptr %t387, i32 0, i32 2 - %t390 = load i64, ptr %t389 - %t391 = load { ptr, i64, i64 }, ptr %t386 - %t392 = extractvalue { ptr, i64, i64 } %t391, 1 - %t393 = icmp uge i64 %t390, %t392 - br i1 %t393, label %range851, label %inrange852 -range851: - call void @finch_panic_index(ptr @.str.468, i64 160, i64 %t390, i64 %t392) - unreachable -inrange852: - %t394 = extractvalue { ptr, i64, i64 } %t391, 0 - %t395 = getelementptr inbounds i8, ptr %t394, i64 %t390 - %t396 = load i8, ptr %t395 - %t397 = icmp eq i8 %t396, 95 - br label %logic.rend853 -logic.rend853: - br label %logic.end846 -logic.end846: - %t398 = phi i1 [ true, %logic.from844 ], [ %t397, %logic.rend853 ] - br label %logic.rend854 -logic.rend854: - br label %logic.end837 -logic.end837: - %t399 = phi i1 [ false, %logic.from835 ], [ %t398, %logic.rend854 ] - br i1 %t399, label %while.body829, label %while.end830 -while.body829: - %t400 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t400) - br label %while.cond828 -while.end830: - br label %endif827 -endif827: - br label %endif766 -endif766: - %t401 = load ptr, ptr %a18 - %t402 = icmp eq ptr %t401, null - br i1 %t402, label %panic855, label %ok856 -panic855: - call void @finch_panic(ptr @.str.469, i64 165, ptr @.str.470) - unreachable -ok856: - %t403 = getelementptr inbounds %S.lexer.Lexer, ptr %t401, i32 0, i32 0 - %t404 = load { ptr, i64, i64 }, ptr %t403 - store { ptr, i64, i64 } %t404, ptr %a405 - %t407 = load i64, ptr %a177 - %t408 = load ptr, ptr %a18 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic857, label %ok858 -panic857: - call void @finch_panic(ptr @.str.472, i64 165, ptr @.str.473) - unreachable -ok858: - %t410 = getelementptr inbounds %S.lexer.Lexer, ptr %t408, i32 0, i32 2 - %t411 = load i64, ptr %t410 - call void @finch_str_sub(ptr %a406, ptr %a405, i64 %t407, i64 %t411, ptr @.str.471, i64 165) - %t412 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.475, i64 1, i64 0 }, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.476, i64 0, i64 0 }, ptr %a416 - call void @finch_str_replace(ptr %a414, ptr %a413, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t412, ptr %a418 - call void @finch_str_drop(ptr %a418) - %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t417, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - call void @finch_str_drop(ptr %a421) - br label %endif755 -else754: - %t422 = load i8, ptr %a43 - %t423 = icmp eq i8 %t422, 34 - br label %logic.from859 -logic.from859: - br i1 %t423, label %logic.end861, label %logic.rhs860 -logic.rhs860: - %t424 = load i8, ptr %a43 - %t425 = icmp eq i8 %t424, 39 - br label %logic.rend862 -logic.rend862: - br label %logic.end861 -logic.end861: - %t426 = phi i1 [ true, %logic.from859 ], [ %t425, %logic.rend862 ] - br i1 %t426, label %then863, label %else864 -then863: - %t427 = load i8, ptr %a43 - store i8 %t427, ptr %a428 - %t429 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t430 = load { ptr, i64, i64 }, ptr %t429 - store { ptr, i64, i64 } { ptr @.str.477, i64 6, i64 0 }, ptr %t429 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load i8, ptr %a428 - %t433 = icmp eq i8 %t432, 39 - br i1 %t433, label %then866, label %endif868 -then866: - %t434 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t435 = load { ptr, i64, i64 }, ptr %t434 - store { ptr, i64, i64 } { ptr @.str.478, i64 4, i64 0 }, ptr %t434 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif868 -endif868: - %t437 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - br label %while.cond869 -while.cond869: - %t439 = load ptr, ptr %a18 - %t440 = call i8 @finch.lexer.peek(ptr %t439, i64 0) - %t441 = load i8, ptr %a428 - %t442 = icmp ne i8 %t440, %t441 - br i1 %t442, label %while.body870, label %while.end871 -while.body870: - %t443 = load ptr, ptr %a18 - %t444 = call i8 @finch.lexer.peek(ptr %t443, i64 0) - %t445 = trunc i64 0 to i8 - %t446 = icmp eq i8 %t444, %t445 - br label %logic.from872 -logic.from872: - br i1 %t446, label %logic.end874, label %logic.rhs873 -logic.rhs873: - %t447 = load ptr, ptr %a18 - %t448 = call i8 @finch.lexer.peek(ptr %t447, i64 0) - %t449 = icmp eq i8 %t448, 10 - br label %logic.rend875 -logic.rend875: - br label %logic.end874 -logic.end874: - %t450 = phi i1 [ true, %logic.from872 ], [ %t449, %logic.rend875 ] - br i1 %t450, label %then876, label %endif878 -then876: - %t451 = load i8, ptr %a428 - %t452 = icmp eq i8 %t451, 34 - br i1 %t452, label %then879, label %endif881 -then879: - %t453 = load ptr, ptr %a18 - %t454 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t455 = load i64, ptr %t454 - %t456 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t457 = load i64, ptr %t456 - call void @finch.lexer.fail(ptr %t453, i64 %t455, i64 %t457, { ptr, i64, i64 } { ptr @.str.479, i64 34, i64 0 }) - br label %endif881 -endif881: - %t458 = load ptr, ptr %a18 - %t459 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t460 = load i64, ptr %t459 - %t461 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t462 = load i64, ptr %t461 - call void @finch.lexer.fail(ptr %t458, i64 %t460, i64 %t462, { ptr, i64, i64 } { ptr @.str.480, i64 32, i64 0 }) - br label %endif878 -endif878: - %t463 = load ptr, ptr %a18 - %t464 = call i8 @finch.lexer.peek(ptr %t463, i64 0) - store i8 %t464, ptr %a465 - %t466 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t466) - %t467 = load i8, ptr %a465 - %t468 = icmp eq i8 %t467, 92 - br i1 %t468, label %then882, label %endif884 -then882: - %t469 = load ptr, ptr %a18 - %t470 = call i8 @finch.lexer.peek(ptr %t469, i64 0) - store i8 %t470, ptr %a471 - %t472 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t472) - %t473 = load ptr, ptr %a18 - %t474 = load i8, ptr %a471 - %t475 = call i8 @finch.lexer.escape(ptr %t473, i8 %t474) - store i8 %t475, ptr %a465 - br label %endif884 -endif884: - %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - %t477 = load i8, ptr %a465 - call void @finch_str_from_char(ptr %a478, i8 signext %t477) - %t479 = load { ptr, i64, i64 }, ptr %a478 - %t480 = load i64, ptr %t476 - %t481 = add i64 %t480, 1 - call void @finch_arr_reserve(ptr %a438, i64 %t481, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t482 = load ptr, ptr %a438 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i64 %t480 - store { ptr, i64, i64 } %t479, ptr %t483 - store i64 %t481, ptr %t476 - br label %while.cond869 -while.end871: - %t484 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t484) - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.481, i64 0, i64 0 }, ptr %a486 - call void @finch_str_join(ptr %a487, ptr %a438, ptr %a486) - %t488 = load { ptr, i64, i64 }, ptr %a487 - %t489 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t490 = load { ptr, i64, i64 }, ptr %t489 - store { ptr, i64, i64 } %t488, ptr %t489 - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load i8, ptr %a428 - %t493 = icmp eq i8 %t492, 39 - br label %logic.from885 -logic.from885: - br i1 %t493, label %logic.rhs886, label %logic.end887 -logic.rhs886: - %t494 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i32 0, i32 1 - %t496 = load i64, ptr %t495 - %t497 = icmp ne i64 %t496, 1 - br label %logic.rend888 -logic.rend888: - br label %logic.end887 -logic.end887: - %t498 = phi i1 [ false, %logic.from885 ], [ %t497, %logic.rend888 ] - br i1 %t498, label %then889, label %endif891 -then889: - %t499 = load ptr, ptr %a18 - %t500 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t501 = load i64, ptr %t500 - %t502 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t503 = load i64, ptr %t502 - call void @finch.lexer.fail(ptr %t499, i64 %t501, i64 %t503, { ptr, i64, i64 } { ptr @.str.482, i64 44, i64 0 }) - br label %endif891 -endif891: - call void @finch.drop.arr_str(ptr %a438) - br label %endif865 -else864: - %t504 = load ptr, ptr %a18 - %t505 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t504) - store { ptr, i64, i64 } %t505, ptr %a506 - %t507 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t508 = load i64, ptr %t507 - %t509 = icmp eq i64 %t508, 0 - br i1 %t509, label %then892, label %endif894 -then892: - store i64 1, ptr %a510 - %t511 = load i8, ptr %a43 - %t512 = zext i8 %t511 to i64 - %t513 = and i64 %t512, 224 - %t514 = icmp eq i64 %t513, 192 - br i1 %t514, label %then895, label %else896 -then895: - store i64 2, ptr %a510 - br label %endif897 -else896: - %t515 = load i8, ptr %a43 - %t516 = zext i8 %t515 to i64 - %t517 = and i64 %t516, 240 - %t518 = icmp eq i64 %t517, 224 - br i1 %t518, label %then898, label %else899 -then898: - store i64 3, ptr %a510 - br label %endif900 -else899: - %t519 = load i8, ptr %a43 - %t520 = zext i8 %t519 to i64 - %t521 = and i64 %t520, 248 - %t522 = icmp eq i64 %t521, 240 - br i1 %t522, label %then901, label %endif903 -then901: - store i64 4, ptr %a510 - br label %endif903 -endif903: - br label %endif900 -endif900: - br label %endif897 -endif897: - store { ptr, i64, i64 } { ptr @.str.483, i64 0, i64 0 }, ptr %a523 - %t524 = load i8, ptr %a43 - %t525 = zext i8 %t524 to i64 - %t526 = icmp sge i64 %t525, 128 - br i1 %t526, label %then904, label %endif906 -then904: - %t527 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.484, i64 74, i64 0 }, ptr %a523 - store { ptr, i64, i64 } %t527, ptr %a528 - call void @finch_str_drop(ptr %a528) - br label %endif906 -endif906: - %t529 = load ptr, ptr %a18 - %t530 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t531 = load i64, ptr %t530 - %t532 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t533 = load i64, ptr %t532 - %t534 = load ptr, ptr %a18 - %t535 = icmp eq ptr %t534, null - br i1 %t535, label %panic907, label %ok908 -panic907: - call void @finch_panic(ptr @.str.486, i64 211, ptr @.str.487) - unreachable -ok908: - %t536 = getelementptr inbounds %S.lexer.Lexer, ptr %t534, i32 0, i32 0 - %t537 = load { ptr, i64, i64 }, ptr %t536 - store { ptr, i64, i64 } %t537, ptr %a538 - %t540 = load ptr, ptr %a18 - %t541 = icmp eq ptr %t540, null - br i1 %t541, label %panic909, label %ok910 -panic909: - call void @finch_panic(ptr @.str.489, i64 211, ptr @.str.490) - unreachable -ok910: - %t542 = getelementptr inbounds %S.lexer.Lexer, ptr %t540, i32 0, i32 2 - %t543 = load i64, ptr %t542 - %t544 = load ptr, ptr %a18 - %t545 = icmp eq ptr %t544, null - br i1 %t545, label %panic911, label %ok912 -panic911: - call void @finch_panic(ptr @.str.491, i64 211, ptr @.str.492) - unreachable -ok912: - %t546 = getelementptr inbounds %S.lexer.Lexer, ptr %t544, i32 0, i32 2 - %t547 = load i64, ptr %t546 - %t548 = load i64, ptr %a510 - %t549 = add i64 %t547, %t548 - call void @finch_str_sub(ptr %a539, ptr %a538, i64 %t543, i64 %t549, ptr @.str.488, i64 211) - %t550 = load { ptr, i64, i64 }, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.485, i64 22, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - store { ptr, i64, i64 } %t550, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t555, ptr %a557 - store { ptr, i64, i64 } { ptr @.str.493, i64 1, i64 0 }, ptr %a558 - call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) - store { ptr, i64, i64 } %t555, ptr %a559 - call void @finch_str_drop(ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a556 - %t561 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t560, ptr %a563 - store { ptr, i64, i64 } %t561, ptr %a564 - call void @finch_str_concat(ptr %a562, ptr %a563, ptr %a564) - store { ptr, i64, i64 } %t560, ptr %a565 - call void @finch_str_drop(ptr %a565) - %t566 = load { ptr, i64, i64 }, ptr %a562 - call void @finch.lexer.fail(ptr %t529, i64 %t531, i64 %t533, { ptr, i64, i64 } %t566) - store { ptr, i64, i64 } %t566, ptr %a567 - call void @finch_str_drop(ptr %a567) - call void @finch_str_drop(ptr %a523) - br label %endif894 -endif894: - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t569 = load i64, ptr %t568 - store i64 0, ptr %a570 - br label %for.cond913 -for.cond913: - %t571 = load i64, ptr %a570 - %t572 = icmp slt i64 %t571, %t569 - br i1 %t572, label %for.body914, label %for.end916 -for.body914: - %t573 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t573) - br label %for.step915 -for.step915: - %t574 = load i64, ptr %a570 - %t575 = add i64 %t574, 1 - store i64 %t575, ptr %a570 - br label %for.cond913 -for.end916: - %t576 = load { ptr, i64, i64 }, ptr %a506 - %t577 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t576, ptr %a578 - call void @finch_str_copy(ptr %a579, ptr %a578) - %t580 = load { ptr, i64, i64 }, ptr %a579 - %t581 = load { ptr, i64, i64 }, ptr %t577 - store { ptr, i64, i64 } %t580, ptr %t577 - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a506 - %t584 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t583, ptr %a585 - call void @finch_str_copy(ptr %a586, ptr %a585) - %t587 = load { ptr, i64, i64 }, ptr %a586 - %t588 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t587, ptr %t584 - store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch_str_drop(ptr %a589) - call void @finch_str_drop(ptr %a506) - br label %endif865 -endif865: - br label %endif755 -endif755: - br label %endif718 -endif718: - %t590 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t591 = load %S.lexer.Token, ptr %a169 - store %S.lexer.Token %t591, ptr %a592 - call void @finch.copy.S_lexer_Token(ptr %a593, ptr %a592) - %t594 = load %S.lexer.Token, ptr %a593 - %t595 = load i64, ptr %t590 - %t596 = add i64 %t595, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t596, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t597 = load ptr, ptr %a19 - %t598 = getelementptr inbounds %S.lexer.Token, ptr %t597, i64 %t595 - store %S.lexer.Token %t594, ptr %t598 - store i64 %t596, ptr %t590 - call void @finch.drop.S_lexer_Token(ptr %a169) - br label %while.cond615 -while.end617: - %t599 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t600 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.494, i64 3, i64 0 }, 0 - %t601 = insertvalue %S.lexer.Token %t600, { ptr, i64, i64 } { ptr @.str.495, i64 0, i64 0 }, 1 - %t602 = load ptr, ptr %a18 - %t603 = icmp eq ptr %t602, null - br i1 %t603, label %panic917, label %ok918 -panic917: - call void @finch_panic(ptr @.str.496, i64 221, ptr @.str.497) - unreachable -ok918: - %t604 = getelementptr inbounds %S.lexer.Lexer, ptr %t602, i32 0, i32 3 - %t605 = load i64, ptr %t604 - %t606 = insertvalue %S.lexer.Token %t601, i64 %t605, 2 - %t607 = load ptr, ptr %a18 - %t608 = icmp eq ptr %t607, null - br i1 %t608, label %panic919, label %ok920 -panic919: - call void @finch_panic(ptr @.str.498, i64 221, ptr @.str.499) - unreachable -ok920: - %t609 = getelementptr inbounds %S.lexer.Lexer, ptr %t607, i32 0, i32 4 - %t610 = load i64, ptr %t609 - %t611 = insertvalue %S.lexer.Token %t606, i64 %t610, 3 - %t612 = insertvalue %S.lexer.Token %t611, i1 true, 4 - %t613 = load i64, ptr %t599 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t614, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a19 - %t616 = getelementptr inbounds %S.lexer.Token, ptr %t615, i64 %t613 - store %S.lexer.Token %t612, ptr %t616 - store i64 %t614, ptr %t599 - %t617 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.S_lexer_Lexer(ptr %a17) - ret { ptr, i64, i64 } %t617 -} - -define internal %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %p0) { -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.500, i64 5, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 - 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.501, i64 3, i64 0 }, 0 - store %S.ast.Type %t3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %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 - ret %S.ast.Type %t25 -} - -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.502, i64 3, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 %then921, label %endif923 -then921: - ret i1 false -endif923: - %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.503, i64 6, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp ne i32 %t15, 0 - br label %logic.from924 -logic.from924: - br i1 %t16, label %logic.end926, label %logic.rhs925 -logic.rhs925: - %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.504, i64 5, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br label %logic.rend927 -logic.rend927: - br label %logic.end926 -logic.end926: - %t23 = phi i1 [ true, %logic.from924 ], [ %t22, %logic.rend927 ] - br label %logic.from928 -logic.from928: - br i1 %t23, label %logic.end930, label %logic.rhs929 -logic.rhs929: - %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.505, i64 4, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br label %logic.rend931 -logic.rend931: - br label %logic.end930 -logic.end930: - %t30 = phi i1 [ true, %logic.from928 ], [ %t29, %logic.rend931 ] - br i1 %t30, label %then932, label %endif934 -then932: - %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.from935 -logic.from935: - br i1 %t38, label %logic.rhs936, label %logic.end937 -logic.rhs936: - %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.rend938 -logic.rend938: - br label %logic.end937 -logic.end937: - %t47 = phi i1 [ false, %logic.from935 ], [ %t46, %logic.rend938 ] - ret i1 %t47 -endif934: - %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.506, i64 5, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br label %logic.from939 -logic.from939: - br i1 %t53, label %logic.rhs940, label %logic.end941 -logic.rhs940: - %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.rend942 -logic.rend942: - br label %logic.end941 -logic.end941: - %t59 = phi i1 [ false, %logic.from939 ], [ %t58, %logic.rend942 ] - br i1 %t59, label %then943, label %endif945 -then943: - ret i1 false -endif945: - %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.507, i64 5, i64 0 }, ptr %a63 - %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) - %t65 = icmp ne i32 %t64, 0 - br label %logic.from946 -logic.from946: - br i1 %t65, label %logic.end948, label %logic.rhs947 -logic.rhs947: - %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.508, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br label %logic.rend949 -logic.rend949: - br label %logic.end948 -logic.end948: - %t72 = phi i1 [ true, %logic.from946 ], [ %t71, %logic.rend949 ] - br label %logic.from950 -logic.from950: - br i1 %t72, label %logic.end952, label %logic.rhs951 -logic.rhs951: - %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.509, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br label %logic.rend953 -logic.rend953: - br label %logic.end952 -logic.end952: - %t79 = phi i1 [ true, %logic.from950 ], [ %t78, %logic.rend953 ] - br label %logic.from954 -logic.from954: - br i1 %t79, label %logic.end956, label %logic.rhs955 -logic.rhs955: - %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.510, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.rend957 -logic.rend957: - br label %logic.end956 -logic.end956: - %t86 = phi i1 [ true, %logic.from954 ], [ %t85, %logic.rend957 ] - br i1 %t86, label %then958, label %endif960 -then958: - %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 %then961, label %endif963 -then961: - ret i1 false -endif963: - %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.cond964 -for.cond964: - %t98 = load i64, ptr %a97 - %t99 = icmp slt i64 %t98, %t96 - br i1 %t99, label %for.body965, label %for.end967 -for.body965: - %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 %range968, label %inrange969 -range968: - call void @finch_panic_index(ptr @.str.511, i64 54, i64 %t101, i64 %t103) - unreachable -inrange969: - %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 %range970, label %inrange971 -range970: - call void @finch_panic_index(ptr @.str.512, i64 54, i64 %t109, i64 %t111) - unreachable -inrange971: - %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 %then972, label %endif974 -then972: - ret i1 false -endif974: - br label %for.step966 -for.step966: - %t118 = load i64, ptr %a97 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %a97 - br label %for.cond964 -for.end967: - ret i1 true -endif960: - 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 - %a19 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.513, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then975, label %endif977 -then975: - %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 %range978, label %inrange979 -range978: - call void @finch_panic_index(ptr @.str.515, i64 65, i64 0, i64 %t10) - unreachable -inrange979: - %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.514, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif977: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.516, i64 5, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %then980, label %endif982 -then980: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.517, i64 1, i64 0 }, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.518, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 0, %t43 - br i1 %t44, label %range983, label %inrange984 -range983: - call void @finch_panic_index(ptr @.str.519, i64 68, i64 0, i64 %t43) - unreachable -inrange984: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 - %t47 = load %S.ast.Type, ptr %t46 - %t48 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t47) - store { ptr, i64, i64 } %t40, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t40, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - ret { ptr, i64, i64 } %t54 -endif982: - %t55 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.520, i64 3, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then985, label %endif987 -then985: - %t61 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 0, %t63 - br i1 %t64, label %range988, label %inrange989 -range988: - call void @finch_panic_index(ptr @.str.522, i64 71, i64 0, i64 %t63) - unreachable -inrange989: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds %S.ast.Type, ptr %t65, i64 0 - %t67 = load %S.ast.Type, ptr %t66 - %t68 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.521, i64 4, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.523, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = extractvalue { ptr, i64, i64 } %t80, 1 - %t82 = icmp uge i64 1, %t81 - br i1 %t82, label %range990, label %inrange991 -range990: - call void @finch_panic_index(ptr @.str.524, i64 71, i64 1, i64 %t81) - unreachable -inrange991: - %t83 = extractvalue { ptr, i64, i64 } %t80, 0 - %t84 = getelementptr inbounds %S.ast.Type, ptr %t83, i64 1 - %t85 = load %S.ast.Type, ptr %t84 - %t86 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t85) - store { ptr, i64, i64 } %t78, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t78, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - ret { ptr, i64, i64 } %t92 -endif987: - %t93 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.525, i64 3, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then992, label %endif994 -then992: - %t99 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = icmp eq i64 %t101, 0 - br i1 %t102, label %then995, label %endif997 -then995: - ret { ptr, i64, i64 } { ptr @.str.526, i64 3, i64 0 } -endif997: - %t103 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %t103 - %t105 = extractvalue { ptr, i64, i64 } %t104, 1 - %t106 = icmp uge i64 0, %t105 - br i1 %t106, label %range998, label %inrange999 -range998: - call void @finch_panic_index(ptr @.str.528, i64 77, i64 0, i64 %t105) - unreachable -inrange999: - %t107 = extractvalue { ptr, i64, i64 } %t104, 0 - %t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i64 0 - %t109 = load %S.ast.Type, ptr %t108 - %t110 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t109) - store { ptr, i64, i64 } { ptr @.str.527, i64 4, i64 0 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t120 -endif994: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t122, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.530, i64 6, i64 0 }, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.from1000 -logic.from1000: - br i1 %t126, label %logic.end1002, label %logic.rhs1001 -logic.rhs1001: - %t127 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.531, i64 5, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend1003 -logic.rend1003: - br label %logic.end1002 -logic.end1002: - %t133 = phi i1 [ true, %logic.from1000 ], [ %t132, %logic.rend1003 ] - br label %logic.from1004 -logic.from1004: - br i1 %t133, label %logic.end1006, label %logic.rhs1005 -logic.rhs1005: - %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.532, i64 4, i64 0 }, ptr %a137 - %t138 = call i32 @finch_str_eq(ptr %a136, ptr %a137) - %t139 = icmp ne i32 %t138, 0 - br label %logic.rend1007 -logic.rend1007: - br label %logic.end1006 -logic.end1006: - %t140 = phi i1 [ true, %logic.from1004 ], [ %t139, %logic.rend1007 ] - br i1 %t140, label %then1008, label %endif1010 -then1008: - %t141 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = icmp sgt i64 %t143, 0 - br i1 %t144, label %then1011, label %endif1013 -then1011: - %t145 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t146 = load { ptr, i64, i64 }, ptr %t145 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.533, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a147 - %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t150, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t150, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - ret { ptr, i64, i64 } %t157 -endif1013: - %t158 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - call void @finch_str_copy(ptr %a161, ptr %a160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - ret { ptr, i64, i64 } %t162 -endif1010: - %t163 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t164 = load { ptr, i64, i64 }, ptr %t163 - store { ptr, i64, i64 } %t164, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.534, i64 4, i64 0 }, ptr %a166 - %t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166) - %t168 = icmp ne i32 %t167, 0 - br i1 %t168, label %then1014, label %endif1016 -then1014: - ret { ptr, i64, i64 } { ptr @.str.535, i64 7, i64 0 } -endif1016: - %t169 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - ret { ptr, i64, i64 } %t173 -} - -define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.lexer.Token %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1017, label %ok1018 -panic1017: - call void @finch_panic(ptr @.str.536, i64 14, ptr @.str.537) - unreachable -ok1018: - %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.538, i64 1, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a8 - %t12 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 2 - %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) - store { ptr, i64, i64 } %t11, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.539, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t26, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t26, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.540, i64 9, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t41, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = trunc i64 %t48 to i32 - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = icmp eq ptr %t50, null - %t52 = select i1 %t51, ptr @.str.541, ptr %t50 - %t53 = call i32 (ptr, ...) @printf(ptr @.str.542, i32 %t49, ptr %t52) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = call i32 (ptr, ...) @printf(ptr @.str.543) - %t56 = trunc i64 1 to i32 - %t57 = call i32 @fflush(ptr null) - call void @exit(i32 %t56) - ret void -} - -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 %panic1019, label %ok1020 -panic1019: - call void @finch_panic(ptr @.str.544, i64 19, ptr @.str.545) - unreachable -ok1020: - %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 %panic1021, label %ok1022 -panic1021: - call void @finch_panic(ptr @.str.546, i64 19, ptr @.str.547) - unreachable -ok1022: - %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 %range1023, label %inrange1024 -range1023: - call void @finch_panic_index(ptr @.str.548, i64 19, i64 %t8, i64 %t10) - unreachable -inrange1024: - %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 %panic1025, label %ok1026 -panic1025: - call void @finch_panic(ptr @.str.549, i64 23, ptr @.str.550) - unreachable -ok1026: - %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 %panic1027, label %ok1028 -panic1027: - call void @finch_panic(ptr @.str.551, i64 23, ptr @.str.552) - unreachable -ok1028: - %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 %range1029, label %inrange1030 -range1029: - call void @finch_panic_index(ptr @.str.553, i64 23, i64 %t8, i64 %t10) - unreachable -inrange1030: - %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 %panic1031, label %ok1032 -panic1031: - call void @finch_panic(ptr @.str.554, i64 27, ptr @.str.555) - unreachable -ok1032: - %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 %panic1033, label %ok1034 -panic1033: - call void @finch_panic(ptr @.str.556, i64 28, ptr @.str.557) - unreachable -ok1034: - %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 %then1035, label %endif1037 -then1035: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic1038, label %ok1039 -panic1038: - call void @finch_panic(ptr @.str.558, i64 29, ptr @.str.559) - unreachable -ok1039: - %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 %endif1037 -endif1037: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic1040, label %ok1041 -panic1040: - call void @finch_panic(ptr @.str.560, i64 31, ptr @.str.561) - unreachable -ok1041: - %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 %range1042, label %inrange1043 -range1042: - call void @finch_panic_index(ptr @.str.562, i64 31, i64 %t26, i64 %t28) - unreachable -inrange1043: - %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 %panic1044, label %ok1045 -panic1044: - call void @finch_panic(ptr @.str.563, i64 35, ptr @.str.564) - unreachable -ok1045: - %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 %panic1046, label %ok1047 -panic1046: - call void @finch_panic(ptr @.str.565, i64 35, ptr @.str.566) - unreachable -ok1047: - %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 %range1048, label %inrange1049 -range1048: - call void @finch_panic_index(ptr @.str.567, i64 35, i64 %t9, i64 %t11) - unreachable -inrange1049: - %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 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1050, label %ok1051 -panic1050: - call void @finch_panic(ptr @.str.568, i64 39, ptr @.str.569) - unreachable -ok1051: - %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 %panic1052, label %ok1053 -panic1052: - call void @finch_panic(ptr @.str.570, i64 39, ptr @.str.571) - unreachable -ok1053: - %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 %range1054, label %inrange1055 -range1054: - call void @finch_panic_index(ptr @.str.572, i64 39, i64 %t8, i64 %t10) - unreachable -inrange1055: - %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 %panic1056, label %ok1057 -panic1056: - call void @finch_panic(ptr @.str.573, i64 40, ptr @.str.574) - unreachable -ok1057: - %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 - ret %S.lexer.Token %t24 -} - -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 %then1058, label %endif1060 -then1058: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1061, label %ok1062 -panic1061: - call void @finch_panic(ptr @.str.575, i64 46, ptr @.str.576) - unreachable -ok1062: - %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 -endif1060: - 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 - %a17 = 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 - %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 - %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 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - store %S.lexer.Token %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.577, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then1063, label %endif1065 -then1063: - %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.578, i64 1, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.579, i64 1, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - ret { ptr, i64, i64 } %t18 -endif1065: - %t19 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.580, i64 3, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br i1 %t24, label %then1066, label %endif1068 -then1066: - ret { ptr, i64, i64 } { ptr @.str.581, i64 11, i64 0 } -endif1068: - %t25 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.582, i64 3, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - br label %logic.from1069 -logic.from1069: - br i1 %t30, label %logic.end1071, label %logic.rhs1070 -logic.rhs1070: - %t31 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.583, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.rend1072 -logic.rend1072: - br label %logic.end1071 -logic.end1071: - %t37 = phi i1 [ true, %logic.from1069 ], [ %t36, %logic.rend1072 ] - br i1 %t37, label %then1073, label %endif1075 -then1073: - ret { ptr, i64, i64 } { ptr @.str.584, i64 8, i64 0 } -endif1075: - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t39 = load { ptr, i64, i64 }, ptr %t38 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.585, i64 6, i64 0 }, ptr %a41 - %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) - %t43 = icmp ne i32 %t42, 0 - br i1 %t43, label %then1076, label %endif1078 -then1076: - ret { ptr, i64, i64 } { ptr @.str.586, i64 8, i64 0 } -endif1078: - %t44 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.587, i64 4, i64 0 }, ptr %a47 - %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - br i1 %t49, label %then1079, label %endif1081 -then1079: - ret { ptr, i64, i64 } { ptr @.str.588, i64 6, i64 0 } -endif1081: - %t50 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t51 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } { ptr @.str.589, i64 1, i64 0 }, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.590, i64 1, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - ret { ptr, i64, i64 } %t60 -} - -define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then1082, label %endif1084 -then1082: - %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.591, i64 9, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.592, i64 8, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21) - %t23 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t22) - store %S.lexer.Token %t22, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a26 - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t20, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t23, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t10, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1084 -endif1084: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - ret %S.lexer.Token %t34 -} - -define internal i1 @finch.parser.sameLine(ptr %p0) { -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 %panic1085, label %ok1086 -panic1085: - call void @finch_panic(ptr @.str.593, i64 79, ptr @.str.594) - unreachable -ok1086: - %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.from1087 -logic.from1087: - br i1 %t6, label %logic.end1089, label %logic.rhs1088 -logic.rhs1088: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1090, label %ok1091 -panic1090: - call void @finch_panic(ptr @.str.595, i64 79, ptr @.str.596) - unreachable -ok1091: - %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 %panic1092, label %ok1093 -panic1092: - call void @finch_panic(ptr @.str.597, i64 79, ptr @.str.598) - unreachable -ok1093: - %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 %range1094, label %inrange1095 -range1094: - call void @finch_panic_index(ptr @.str.599, i64 79, i64 %t13, i64 %t15) - unreachable -inrange1095: - %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.rend1096 -logic.rend1096: - br label %logic.end1089 -logic.end1089: - %t22 = phi i1 [ true, %logic.from1087 ], [ %t21, %logic.rend1096 ] - 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 %panic1097, label %ok1098 -panic1097: - call void @finch_panic(ptr @.str.600, i64 83, ptr @.str.601) - unreachable -ok1098: - %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 %panic1099, label %ok1100 -panic1099: - call void @finch_panic(ptr @.str.602, i64 83, ptr @.str.603) - unreachable -ok1100: - %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 %range1101, label %inrange1102 -range1101: - call void @finch_panic_index(ptr @.str.604, i64 83, i64 %t9, i64 %t11) - unreachable -inrange1102: - %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 %panic1103, label %ok1104 -panic1103: - call void @finch_panic(ptr @.str.605, i64 84, ptr @.str.606) - unreachable -ok1104: - %t33 = getelementptr inbounds %S.parser.Parser, ptr %t31, i32 0, i32 3 - %t34 = load i64, ptr %t33 - %t35 = insertvalue %S.ast.Node %t30, i64 %t34, 13 - call void @finch.drop.S_lexer_Token(ptr %a19) - ret %S.ast.Node %t35 -} - -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.607, i64 3, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.608, i64 5, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.609, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.610, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.613, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.614, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.615, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.616, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.617, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.618, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.619, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.620, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.621, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.622, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - 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.cond1105 -find.cond1105: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body1106, label %find.end1109 -find.body1106: - %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.hit1107, label %find.next1108 -find.hit1107: - store i64 %t30, ptr %a26 - br label %find.end1109 -find.next1108: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond1105 -find.end1109: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - call void @finch.drop.arr_str(ptr %a23) - ret i1 %t40 -} - -define internal %S.ast.Type @finch.parser.parseType(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.lexer.Token, align 16 - %a10 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.lexer.Token, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a77 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.lexer.Token, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca %S.lexer.Token, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca %S.lexer.Token, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca %S.lexer.Token, align 16 - %a165 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.623, i64 1, i64 0 }) - br i1 %t3, label %then1110, label %endif1112 -then1110: - %t4 = load ptr, ptr %a1 - %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.624, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.625, i64 36, i64 0 }) - store %S.lexer.Token %t5, ptr %a6 - call void @finch.drop.S_lexer_Token(ptr %a6) - %t7 = load ptr, ptr %a1 - %t8 = call %S.ast.Type @finch.parser.parseType(ptr %t7) - %t9 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t8) - store %S.ast.Type %t8, ptr %a10 - call void @finch.drop.S_ast_Type(ptr %a10) - ret %S.ast.Type %t9 -endif1112: - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.626, i64 5, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1113, label %endif1115 -then1113: - %t14 = load ptr, ptr %a1 - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.cur(ptr %t15) - %t17 = load ptr, ptr %a1 - %t18 = call %S.lexer.Token @finch.parser.cur(ptr %t17) - %t19 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t18) - store %S.lexer.Token %t18, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - store { ptr, i64, i64 } { ptr @.str.627, i64 11, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.628, i64 56, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.parser.fail(ptr %t14, %S.lexer.Token %t16, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t16, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1115 -endif1115: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.629, i64 3, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br label %logic.from1116 -logic.from1116: - br i1 %t45, label %logic.rhs1117, label %logic.end1118 -logic.rhs1117: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }) - br label %logic.rend1119 -logic.rend1119: - br label %logic.end1118 -logic.end1118: - %t48 = phi i1 [ false, %logic.from1116 ], [ %t47, %logic.rend1119 ] - br i1 %t48, label %then1120, label %endif1122 -then1120: - %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) - store %S.lexer.Token %t50, ptr %a51 - call void @finch.drop.S_lexer_Token(ptr %a51) - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - store %S.ast.Type %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.expect(ptr %t55, { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.632, i64 39, i64 0 }) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = load %S.ast.Type, ptr %a54 - %t59 = load ptr, ptr %a1 - %t60 = call %S.ast.Type @finch.parser.parseType(ptr %t59) - %t61 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t58, %S.ast.Type %t60) - store %S.ast.Type %t60, ptr %a62 - call void @finch.drop.S_ast_Type(ptr %a62) - call void @finch.drop.S_ast_Type(ptr %a54) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t61 -endif1122: - %t63 = load { ptr, i64, i64 }, ptr %a40 - %t64 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t63) - br i1 %t64, label %then1123, label %endif1125 -then1123: - %t65 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.633, i64 3, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.from1126 -logic.from1126: - br i1 %t69, label %logic.rhs1127, label %logic.end1128 -logic.rhs1127: - %t70 = load ptr, ptr %a1 - %t71 = call i1 @finch.parser.accept(ptr %t70, { ptr, i64, i64 } { ptr @.str.634, i64 1, i64 0 }) - br label %logic.rend1129 -logic.rend1129: - br label %logic.end1128 -logic.end1128: - %t72 = phi i1 [ false, %logic.from1126 ], [ %t71, %logic.rend1129 ] - br i1 %t72, label %then1130, label %endif1132 -then1130: - %t73 = load ptr, ptr %a1 - %t74 = call %S.ast.Type @finch.parser.parseType(ptr %t73) - %t75 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t74) - store %S.ast.Type %t74, ptr %a76 - call void @finch.drop.S_ast_Type(ptr %a76) - store %S.ast.Type %t75, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.expect(ptr %t78, { ptr, i64, i64 } { ptr @.str.635, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.636, i64 3, i64 0 }) - store %S.lexer.Token %t79, ptr %a80 - call void @finch.drop.S_lexer_Token(ptr %a80) - %t81 = load %S.ast.Type, ptr %a77 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t81 -endif1132: - %t82 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.637, i64 3, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then1133, label %endif1135 -then1133: - %t87 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.638, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t87 -endif1135: - %t88 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.639, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then1136, label %endif1138 -then1136: - %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t93 -endif1138: - %t94 = load { ptr, i64, i64 }, ptr %a40 - %t95 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t94) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t95 -endif1125: - %t96 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.641, i64 5, i64 0 }, 0 - %t97 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = insertvalue %S.ast.Type %t96, { ptr, i64, i64 } %t100, 2 - store %S.ast.Type %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.at(ptr %t103, { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }) - br label %logic.from1139 -logic.from1139: - br i1 %t104, label %logic.rhs1140, label %logic.end1141 -logic.rhs1140: - %t105 = load ptr, ptr %a1 - %t106 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t105, i64 1) - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.643, i64 5, i64 0 }, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - br label %logic.rend1142 -logic.rend1142: - br label %logic.end1141 -logic.end1141: - %t112 = phi i1 [ false, %logic.from1139 ], [ %t110, %logic.rend1142 ] - br i1 %t112, label %then1143, label %endif1145 -then1143: - %t113 = load ptr, ptr %a1 - %t114 = call %S.lexer.Token @finch.parser.next(ptr %t113) - store %S.lexer.Token %t114, ptr %a115 - call void @finch.drop.S_lexer_Token(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a40 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 3 - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t120, ptr %t117 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load ptr, ptr %a1 - %t124 = call %S.lexer.Token @finch.parser.next(ptr %t123) - %t125 = extractvalue %S.lexer.Token %t124, 1 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - store %S.lexer.Token %t124, ptr %a129 - call void @finch.drop.S_lexer_Token(ptr %a129) - %t130 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t128, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %endif1145 -endif1145: - %t133 = load ptr, ptr %a1 - %t134 = call i1 @finch.parser.at(ptr %t133, { ptr, i64, i64 } { ptr @.str.644, i64 1, i64 0 }) - br label %logic.from1146 -logic.from1146: - br i1 %t134, label %logic.rhs1147, label %logic.end1148 -logic.rhs1147: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1149 -logic.rend1149: - br label %logic.end1148 -logic.end1148: - %t140 = phi i1 [ false, %logic.from1146 ], [ %t139, %logic.rend1149 ] - br label %logic.from1150 -logic.from1150: - br i1 %t140, label %logic.rhs1151, label %logic.end1152 -logic.rhs1151: - %t141 = load ptr, ptr %a1 - %t142 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t141, i64 1) - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.645, i64 1, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) - %t146 = icmp eq i32 %t145, 0 - store { ptr, i64, i64 } %t142, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %logic.rend1153 -logic.rend1153: - br label %logic.end1152 -logic.end1152: - %t148 = phi i1 [ false, %logic.from1150 ], [ %t146, %logic.rend1153 ] - br i1 %t148, label %then1154, label %endif1156 -then1154: - %t149 = load ptr, ptr %a1 - %t150 = call %S.lexer.Token @finch.parser.next(ptr %t149) - store %S.lexer.Token %t150, ptr %a151 - call void @finch.drop.S_lexer_Token(ptr %a151) - br label %while.cond1157 -while.cond1157: - br label %while.body1158 -while.body1158: - %t152 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 1 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 - %t154 = load ptr, ptr %a1 - %t155 = call %S.ast.Type @finch.parser.parseType(ptr %t154) - %t156 = load i64, ptr %t153 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t152, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t152 - %t159 = getelementptr inbounds %S.ast.Type, ptr %t158, i64 %t156 - store %S.ast.Type %t155, ptr %t159 - store i64 %t157, ptr %t153 - %t160 = load ptr, ptr %a1 - %t161 = call i1 @finch.parser.accept(ptr %t160, { ptr, i64, i64 } { ptr @.str.646, i64 1, i64 0 }) - %t162 = xor i1 %t161, true - br i1 %t162, label %then1160, label %endif1162 -then1160: - br label %while.end1159 -endif1162: - br label %while.cond1157 -while.end1159: - %t163 = load ptr, ptr %a1 - %t164 = call %S.lexer.Token @finch.parser.expect(ptr %t163, { ptr, i64, i64 } { ptr @.str.647, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.648, i64 28, i64 0 }) - store %S.lexer.Token %t164, ptr %a165 - call void @finch.drop.S_lexer_Token(ptr %a165) - br label %endif1156 -endif1156: - %t166 = load %S.ast.Type, ptr %a102 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t166 -} - -define internal i1 @finch.parser.genericDeclAhead(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a27 = alloca i64, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.649, i64 5, i64 0 }) - %t4 = xor i1 %t3, true - br label %logic.from1163 -logic.from1163: - br i1 %t4, label %logic.end1165, label %logic.rhs1164 -logic.rhs1164: - %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.650, i64 1, i64 0 }, ptr %a8 - %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) - %t10 = icmp eq i32 %t9, 0 - store { ptr, i64, i64 } %t6, ptr %a11 - call void @finch_str_drop(ptr %a11) - br label %logic.rend1166 -logic.rend1166: - br label %logic.end1165 -logic.end1165: - %t12 = phi i1 [ true, %logic.from1163 ], [ %t10, %logic.rend1166 ] - br label %logic.from1167 -logic.from1167: - br i1 %t12, label %logic.end1169, label %logic.rhs1168 -logic.rhs1168: - %t13 = load ptr, ptr %a1 - %t14 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t13, i64 2) - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.651, i64 1, i64 0 }, ptr %a16 - %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) - %t18 = icmp ne i32 %t17, 0 - store { ptr, i64, i64 } %t14, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %logic.rend1170 -logic.rend1170: - br label %logic.end1169 -logic.end1169: - %t20 = phi i1 [ true, %logic.from1167 ], [ %t18, %logic.rend1170 ] - br i1 %t20, label %then1171, label %endif1173 -then1171: - ret i1 false -endif1173: - store i64 0, ptr %a21 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1174, label %ok1175 -panic1174: - call void @finch_panic(ptr @.str.652, i64 148, ptr @.str.653) - unreachable -ok1175: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a27 - br label %while.cond1176 -while.cond1176: - %t28 = load i64, ptr %a27 - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic1179, label %ok1180 -panic1179: - call void @finch_panic(ptr @.str.654, i64 149, ptr @.str.655) - unreachable -ok1180: - %t31 = getelementptr inbounds %S.parser.Parser, ptr %t29, i32 0, i32 0 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = icmp slt i64 %t28, %t33 - br i1 %t34, label %while.body1177, label %while.end1178 -while.body1177: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1181, label %ok1182 -panic1181: - call void @finch_panic(ptr @.str.656, i64 150, ptr @.str.657) - unreachable -ok1182: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 0 - %t38 = load i64, ptr %a27 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range1183, label %inrange1184 -range1183: - call void @finch_panic_index(ptr @.str.658, i64 150, i64 %t38, i64 %t40) - unreachable -inrange1184: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds %S.lexer.Token, ptr %t42, i64 %t38 - %t44 = getelementptr inbounds %S.lexer.Token, ptr %t43, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_copy(ptr %a47, ptr %a46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t48, ptr %a49 - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.659, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1185, label %else1186 -then1185: - %t55 = load i64, ptr %a21 - %t56 = add i64 %t55, 1 - store i64 %t56, ptr %a21 - br label %endif1187 -else1186: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.660, i64 1, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br i1 %t61, label %then1188, label %else1189 -then1188: - %t62 = load i64, ptr %a21 - %t63 = sub i64 %t62, 1 - store i64 %t63, ptr %a21 - %t64 = load i64, ptr %a21 - %t65 = icmp eq i64 %t64, 0 - br i1 %t65, label %then1191, label %endif1193 -then1191: - %t66 = load i64, ptr %a27 - %t67 = add i64 %t66, 1 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic1194, label %ok1195 -panic1194: - call void @finch_panic(ptr @.str.661, i64 156, ptr @.str.662) - unreachable -ok1195: - %t70 = getelementptr inbounds %S.parser.Parser, ptr %t68, i32 0, i32 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = icmp slt i64 %t67, %t72 - br label %logic.from1196 -logic.from1196: - br i1 %t73, label %logic.rhs1197, label %logic.end1198 -logic.rhs1197: - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic1199, label %ok1200 -panic1199: - call void @finch_panic(ptr @.str.663, i64 156, ptr @.str.664) - unreachable -ok1200: - %t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 0 - %t77 = load i64, ptr %a27 - %t78 = add i64 %t77, 1 - %t79 = load { ptr, i64, i64 }, ptr %t76 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range1201, label %inrange1202 -range1201: - call void @finch_panic_index(ptr @.str.665, i64 156, i64 %t78, i64 %t80) - unreachable -inrange1202: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds %S.lexer.Token, ptr %t82, i64 %t78 - %t84 = getelementptr inbounds %S.lexer.Token, ptr %t83, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.666, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.rend1203 -logic.rend1203: - br label %logic.end1198 -logic.end1198: - %t90 = phi i1 [ false, %logic.from1196 ], [ %t89, %logic.rend1203 ] - br label %logic.from1204 -logic.from1204: - br i1 %t90, label %logic.rhs1205, label %logic.end1206 -logic.rhs1205: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic1207, label %ok1208 -panic1207: - call void @finch_panic(ptr @.str.667, i64 156, ptr @.str.668) - unreachable -ok1208: - %t93 = getelementptr inbounds %S.parser.Parser, ptr %t91, i32 0, i32 0 - %t94 = load i64, ptr %a27 - %t95 = add i64 %t94, 1 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range1209, label %inrange1210 -range1209: - call void @finch_panic_index(ptr @.str.669, i64 156, i64 %t95, i64 %t97) - unreachable -inrange1210: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds %S.lexer.Token, ptr %t99, i64 %t95 - %t101 = getelementptr inbounds %S.lexer.Token, ptr %t100, i32 0, i32 4 - %t102 = load i1, ptr %t101 - %t103 = xor i1 %t102, true - br label %logic.rend1211 -logic.rend1211: - br label %logic.end1206 -logic.end1206: - %t104 = phi i1 [ false, %logic.from1204 ], [ %t103, %logic.rend1211 ] - call void @finch_str_drop(ptr %a49) - ret i1 %t104 -endif1193: - br label %endif1190 -else1189: - %t105 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.670, i64 3, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.from1212 -logic.from1212: - br i1 %t109, label %logic.end1214, label %logic.rhs1213 -logic.rhs1213: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic1215, label %ok1216 -panic1215: - call void @finch_panic(ptr @.str.671, i64 158, ptr @.str.672) - unreachable -ok1216: - %t112 = getelementptr inbounds %S.parser.Parser, ptr %t110, i32 0, i32 0 - %t113 = load i64, ptr %a27 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range1217, label %inrange1218 -range1217: - call void @finch_panic_index(ptr @.str.673, i64 158, i64 %t113, i64 %t115) - unreachable -inrange1218: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.lexer.Token, ptr %t117, i64 %t113 - %t119 = getelementptr inbounds %S.lexer.Token, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.from1219 -logic.from1219: - br i1 %t120, label %logic.rhs1220, label %logic.end1221 -logic.rhs1220: - %t121 = load i64, ptr %a21 - %t122 = icmp eq i64 %t121, 0 - br label %logic.rend1222 -logic.rend1222: - br label %logic.end1221 -logic.end1221: - %t123 = phi i1 [ false, %logic.from1219 ], [ %t122, %logic.rend1222 ] - br label %logic.rend1223 -logic.rend1223: - br label %logic.end1214 -logic.end1214: - %t124 = phi i1 [ true, %logic.from1212 ], [ %t123, %logic.rend1223 ] - br i1 %t124, label %then1224, label %endif1226 -then1224: - call void @finch_str_drop(ptr %a49) - ret i1 false -endif1226: - br label %endif1190 -endif1190: - br label %endif1187 -endif1187: - %t125 = load i64, ptr %a27 - %t126 = add i64 %t125, 1 - store i64 %t126, ptr %a27 - call void @finch_str_drop(ptr %a49) - br label %while.cond1176 -while.end1178: - 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 %panic1227, label %ok1228 -panic1227: - call void @finch_panic(ptr @.str.674, i64 168, ptr @.str.675) - unreachable -ok1228: - %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 %panic1229, label %ok1230 -panic1229: - call void @finch_panic(ptr @.str.676, i64 170, ptr @.str.677) - unreachable -ok1230: - %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 - %a8 = 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 i64, align 16 - %a39 = alloca i64, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t2, i64 1) - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.678, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp eq i32 %t6, 0 - store { ptr, i64, i64 } %t3, ptr %a8 - call void @finch_str_drop(ptr %a8) - br label %logic.from1231 -logic.from1231: - br i1 %t7, label %logic.end1233, label %logic.rhs1232 -logic.rhs1232: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic1234, label %ok1235 -panic1234: - call void @finch_panic(ptr @.str.679, i64 176, ptr @.str.680) - unreachable -ok1235: - %t11 = getelementptr inbounds %S.parser.Parser, ptr %t9, i32 0, i32 0 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic1236, label %ok1237 -panic1236: - call void @finch_panic(ptr @.str.681, i64 176, ptr @.str.682) - unreachable -ok1237: - %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 1 - %t15 = load i64, ptr %t14 - %t16 = add i64 %t15, 1 - %t17 = load { ptr, i64, i64 }, ptr %t11 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range1238, label %inrange1239 -range1238: - call void @finch_panic_index(ptr @.str.683, i64 176, i64 %t16, i64 %t18) - unreachable -inrange1239: - %t20 = extractvalue { ptr, i64, i64 } %t17, 0 - %t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i64 %t16 - %t22 = getelementptr inbounds %S.lexer.Token, ptr %t21, i32 0, i32 4 - %t23 = load i1, ptr %t22 - br label %logic.rend1240 -logic.rend1240: - br label %logic.end1233 -logic.end1233: - %t24 = phi i1 [ true, %logic.from1231 ], [ %t23, %logic.rend1240 ] - br label %logic.from1241 -logic.from1241: - br i1 %t24, label %logic.end1243, label %logic.rhs1242 -logic.rhs1242: - %t25 = load ptr, ptr %a1 - %t26 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t25, i64 2) - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.684, i64 1, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %logic.rend1244 -logic.rend1244: - br label %logic.end1243 -logic.end1243: - %t32 = phi i1 [ true, %logic.from1241 ], [ %t30, %logic.rend1244 ] - br i1 %t32, label %then1245, label %endif1247 -then1245: - ret i1 false -endif1247: - store i64 0, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic1248, label %ok1249 -panic1248: - call void @finch_panic(ptr @.str.685, i64 180, ptr @.str.686) - unreachable -ok1249: - %t36 = getelementptr inbounds %S.parser.Parser, ptr %t34, i32 0, i32 1 - %t37 = load i64, ptr %t36 - %t38 = add i64 %t37, 1 - store i64 %t38, ptr %a39 - br label %while.cond1250 -while.cond1250: - %t40 = load i64, ptr %a39 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic1253, label %ok1254 -panic1253: - call void @finch_panic(ptr @.str.687, i64 181, ptr @.str.688) - unreachable -ok1254: - %t43 = getelementptr inbounds %S.parser.Parser, ptr %t41, i32 0, i32 0 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - %t46 = icmp slt i64 %t40, %t45 - br i1 %t46, label %while.body1251, label %while.end1252 -while.body1251: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic1255, label %ok1256 -panic1255: - call void @finch_panic(ptr @.str.689, i64 182, ptr @.str.690) - unreachable -ok1256: - %t49 = getelementptr inbounds %S.parser.Parser, ptr %t47, i32 0, i32 0 - %t50 = load i64, ptr %a39 - %t51 = load { ptr, i64, i64 }, ptr %t49 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 %t50, %t52 - br i1 %t53, label %range1257, label %inrange1258 -range1257: - call void @finch_panic_index(ptr @.str.691, i64 182, i64 %t50, i64 %t52) - unreachable -inrange1258: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.lexer.Token, ptr %t54, i64 %t50 - %t56 = getelementptr inbounds %S.lexer.Token, ptr %t55, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_copy(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.692, i64 1, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then1259, label %else1260 -then1259: - %t67 = load i64, ptr %a33 - %t68 = add i64 %t67, 1 - store i64 %t68, ptr %a33 - br label %endif1261 -else1260: - %t69 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.693, i64 1, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp ne i32 %t72, 0 - br i1 %t73, label %then1262, label %else1263 -then1262: - %t74 = load i64, ptr %a33 - %t75 = sub i64 %t74, 1 - store i64 %t75, ptr %a33 - %t76 = load i64, ptr %a33 - %t77 = icmp eq i64 %t76, 0 - br i1 %t77, label %then1265, label %endif1267 -then1265: - %t78 = load i64, ptr %a39 - %t79 = add i64 %t78, 1 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic1268, label %ok1269 -panic1268: - call void @finch_panic(ptr @.str.694, i64 188, ptr @.str.695) - unreachable -ok1269: - %t82 = getelementptr inbounds %S.parser.Parser, ptr %t80, i32 0, i32 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - %t84 = load i64, ptr %t83 - %t85 = icmp slt i64 %t79, %t84 - br label %logic.from1270 -logic.from1270: - br i1 %t85, label %logic.rhs1271, label %logic.end1272 -logic.rhs1271: - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic1273, label %ok1274 -panic1273: - call void @finch_panic(ptr @.str.696, i64 188, ptr @.str.697) - unreachable -ok1274: - %t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 0 - %t89 = load i64, ptr %a39 - %t90 = add i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %t88 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range1275, label %inrange1276 -range1275: - call void @finch_panic_index(ptr @.str.698, i64 188, i64 %t90, i64 %t92) - unreachable -inrange1276: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds %S.lexer.Token, ptr %t94, i64 %t90 - %t96 = getelementptr inbounds %S.lexer.Token, ptr %t95, i32 0, i32 0 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.699, i64 1, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.rend1277 -logic.rend1277: - br label %logic.end1272 -logic.end1272: - %t102 = phi i1 [ false, %logic.from1270 ], [ %t101, %logic.rend1277 ] - br label %logic.from1278 -logic.from1278: - br i1 %t102, label %logic.rhs1279, label %logic.end1280 -logic.rhs1279: - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic1281, label %ok1282 -panic1281: - call void @finch_panic(ptr @.str.700, i64 188, ptr @.str.701) - unreachable -ok1282: - %t105 = getelementptr inbounds %S.parser.Parser, ptr %t103, i32 0, i32 0 - %t106 = load i64, ptr %a39 - %t107 = add i64 %t106, 1 - %t108 = load { ptr, i64, i64 }, ptr %t105 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 %t107, %t109 - br i1 %t110, label %range1283, label %inrange1284 -range1283: - call void @finch_panic_index(ptr @.str.702, i64 188, i64 %t107, i64 %t109) - unreachable -inrange1284: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.lexer.Token, ptr %t111, i64 %t107 - %t113 = getelementptr inbounds %S.lexer.Token, ptr %t112, i32 0, i32 4 - %t114 = load i1, ptr %t113 - %t115 = xor i1 %t114, true - br label %logic.rend1285 -logic.rend1285: - br label %logic.end1280 -logic.end1280: - %t116 = phi i1 [ false, %logic.from1278 ], [ %t115, %logic.rend1285 ] - call void @finch_str_drop(ptr %a61) - ret i1 %t116 -endif1267: - br label %endif1264 -else1263: - %t117 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.703, i64 3, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.from1286 -logic.from1286: - br i1 %t121, label %logic.end1288, label %logic.rhs1287 -logic.rhs1287: - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic1289, label %ok1290 -panic1289: - call void @finch_panic(ptr @.str.704, i64 190, ptr @.str.705) - unreachable -ok1290: - %t124 = getelementptr inbounds %S.parser.Parser, ptr %t122, i32 0, i32 0 - %t125 = load i64, ptr %a39 - %t126 = load { ptr, i64, i64 }, ptr %t124 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 %t125, %t127 - br i1 %t128, label %range1291, label %inrange1292 -range1291: - call void @finch_panic_index(ptr @.str.706, i64 190, i64 %t125, i64 %t127) - unreachable -inrange1292: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.lexer.Token, ptr %t129, i64 %t125 - %t131 = getelementptr inbounds %S.lexer.Token, ptr %t130, i32 0, i32 4 - %t132 = load i1, ptr %t131 - br label %logic.rend1293 -logic.rend1293: - br label %logic.end1288 -logic.end1288: - %t133 = phi i1 [ true, %logic.from1286 ], [ %t132, %logic.rend1293 ] - br i1 %t133, label %then1294, label %endif1296 -then1294: - call void @finch_str_drop(ptr %a61) - ret i1 false -endif1296: - br label %endif1264 -endif1264: - br label %endif1261 -endif1261: - %t134 = load i64, ptr %a39 - %t135 = add i64 %t134, 1 - store i64 %t135, ptr %a39 - call void @finch_str_drop(ptr %a61) - br label %while.cond1250 -while.end1252: - 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 - %a12 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.lexer.Token, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.lexer.Token, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2) - br i1 %t3, label %then1297, label %endif1299 -then1297: - ret i1 true -endif1299: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }) - br i1 %t5, label %then1300, label %endif1302 -then1300: - %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.708, i64 1, i64 0 }, ptr %a9 - %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) - %t11 = icmp ne i32 %t10, 0 - store { ptr, i64, i64 } %t7, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret i1 %t11 -endif1302: - %t13 = load ptr, ptr %a1 - %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 }) - %t15 = xor i1 %t14, true - br i1 %t15, label %then1303, label %endif1305 -then1303: - ret i1 false -endif1305: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t16, i64 1) - store { ptr, i64, i64 } %t17, ptr %a18 - %t19 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.710, i64 5, i64 0 }, ptr %a21 - %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) - %t23 = icmp ne i32 %t22, 0 - br i1 %t23, label %then1306, label %endif1308 -then1306: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic1309, label %ok1310 -panic1309: - call void @finch_panic(ptr @.str.711, i64 210, ptr @.str.712) - unreachable -ok1310: - %t26 = getelementptr inbounds %S.parser.Parser, ptr %t24, i32 0, i32 0 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1311, label %ok1312 -panic1311: - call void @finch_panic(ptr @.str.713, i64 210, ptr @.str.714) - unreachable -ok1312: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = add i64 %t30, 1 - %t32 = load { ptr, i64, i64 }, ptr %t26 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range1313, label %inrange1314 -range1313: - call void @finch_panic_index(ptr @.str.715, i64 210, i64 %t31, i64 %t33) - unreachable -inrange1314: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.lexer.Token, ptr %t36, i32 0, i32 4 - %t38 = load i1, ptr %t37 - %t39 = xor i1 %t38, true - call void @finch_str_drop(ptr %a18) - ret i1 %t39 -endif1308: - %t40 = load ptr, ptr %a1 - %t41 = call %S.lexer.Token @finch.parser.cur(ptr %t40) - %t42 = extractvalue %S.lexer.Token %t41, 1 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch_str_copy(ptr %a44, ptr %a43) - %t45 = load { ptr, i64, i64 }, ptr %a44 - store %S.lexer.Token %t41, ptr %a46 - call void @finch.drop.S_lexer_Token(ptr %a46) - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.716, i64 3, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - store { ptr, i64, i64 } %t45, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %logic.from1315 -logic.from1315: - br i1 %t50, label %logic.end1317, label %logic.rhs1316 -logic.rhs1316: - %t52 = load ptr, ptr %a1 - %t53 = call %S.lexer.Token @finch.parser.cur(ptr %t52) - %t54 = extractvalue %S.lexer.Token %t53, 1 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_copy(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store %S.lexer.Token %t53, ptr %a58 - call void @finch.drop.S_lexer_Token(ptr %a58) - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.717, i64 3, i64 0 }, ptr %a60 - %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) - %t62 = icmp ne i32 %t61, 0 - store { ptr, i64, i64 } %t57, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %logic.rend1318 -logic.rend1318: - br label %logic.end1317 -logic.end1317: - %t64 = phi i1 [ true, %logic.from1315 ], [ %t62, %logic.rend1318 ] - br label %logic.from1319 -logic.from1319: - br i1 %t64, label %logic.rhs1320, label %logic.end1321 -logic.rhs1320: - %t65 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.718, i64 1, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.rend1322 -logic.rend1322: - br label %logic.end1321 -logic.end1321: - %t70 = phi i1 [ false, %logic.from1319 ], [ %t69, %logic.rend1322 ] - br i1 %t70, label %then1323, label %endif1325 -then1323: - call void @finch_str_drop(ptr %a18) - ret i1 true -endif1325: - %t71 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t71, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.719, i64 1, i64 0 }, ptr %a73 - %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) - %t75 = icmp ne i32 %t74, 0 - br label %logic.from1326 -logic.from1326: - br i1 %t75, label %logic.rhs1327, label %logic.end1328 -logic.rhs1327: - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t76, i64 2) - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.720, i64 5, i64 0 }, ptr %a79 - %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) - %t81 = icmp ne i32 %t80, 0 - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %logic.rend1329 -logic.rend1329: - br label %logic.end1328 -logic.end1328: - %t83 = phi i1 [ false, %logic.from1326 ], [ %t81, %logic.rend1329 ] - br label %logic.from1330 -logic.from1330: - br i1 %t83, label %logic.rhs1331, label %logic.end1332 -logic.rhs1331: - %t84 = load ptr, ptr %a1 - %t85 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t84, i64 3) - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.721, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %logic.rend1333 -logic.rend1333: - br label %logic.end1332 -logic.end1332: - %t91 = phi i1 [ false, %logic.from1330 ], [ %t89, %logic.rend1333 ] - br label %logic.from1334 -logic.from1334: - br i1 %t91, label %logic.rhs1335, label %logic.end1336 -logic.rhs1335: - %t92 = load ptr, ptr %a1 - %t93 = icmp eq ptr %t92, null - br i1 %t93, label %panic1337, label %ok1338 -panic1337: - call void @finch_panic(ptr @.str.722, i64 215, ptr @.str.723) - unreachable -ok1338: - %t94 = getelementptr inbounds %S.parser.Parser, ptr %t92, i32 0, i32 0 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic1339, label %ok1340 -panic1339: - call void @finch_panic(ptr @.str.724, i64 215, ptr @.str.725) - unreachable -ok1340: - %t97 = getelementptr inbounds %S.parser.Parser, ptr %t95, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = add i64 %t98, 3 - %t100 = load { ptr, i64, i64 }, ptr %t94 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range1341, label %inrange1342 -range1341: - call void @finch_panic_index(ptr @.str.726, i64 215, i64 %t99, i64 %t101) - unreachable -inrange1342: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.lexer.Token, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.lexer.Token, ptr %t104, i32 0, i32 4 - %t106 = load i1, ptr %t105 - %t107 = xor i1 %t106, true - br label %logic.rend1343 -logic.rend1343: - br label %logic.end1336 -logic.end1336: - %t108 = phi i1 [ false, %logic.from1334 ], [ %t107, %logic.rend1343 ] - call void @finch_str_drop(ptr %a18) - ret i1 %t108 -} - -define internal void @finch.parser.endOfStatement(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a10 = alloca %S.lexer.Token, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }) - br label %logic.from1344 -logic.from1344: - br i1 %t3, label %logic.end1346, label %logic.rhs1345 -logic.rhs1345: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.728, i64 3, i64 0 }) - br label %logic.rend1347 -logic.rend1347: - br label %logic.end1346 -logic.end1346: - %t6 = phi i1 [ true, %logic.from1344 ], [ %t5, %logic.rend1347 ] - br label %logic.from1348 -logic.from1348: - br i1 %t6, label %logic.end1350, label %logic.rhs1349 -logic.rhs1349: - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.cur(ptr %t7) - %t9 = extractvalue %S.lexer.Token %t8, 4 - store %S.lexer.Token %t8, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %logic.rend1351 -logic.rend1351: - br label %logic.end1350 -logic.end1350: - %t11 = phi i1 [ true, %logic.from1348 ], [ %t9, %logic.rend1351 ] - br i1 %t11, label %then1352, label %endif1354 -then1352: - ret void -endif1354: - %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 %S.lexer.Token %t16, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - store { ptr, i64, i64 } { ptr @.str.729, i64 11, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.730, i64 37, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t28) - store %S.lexer.Token %t14, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - call void @finch_str_drop(ptr %a30) - ret void -} - -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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca %S.lexer.Token, align 16 - %a87 = alloca %S.lexer.Token, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca %S.lexer.Token, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca i1, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca %S.ast.Node, align 16 - %a170 = alloca %S.ast.Node, align 16 - %a171 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1355 -while.cond1355: - %t3 = load ptr, ptr %a1 - %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.731, i64 3, i64 0 }) - %t5 = xor i1 %t4, true - br i1 %t5, label %while.body1356, label %while.end1357 -while.body1356: - %t6 = load ptr, ptr %a1 - %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.732, i64 6, i64 0 }) - br i1 %t7, label %then1358, label %else1359 -then1358: - %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.733, i64 6, i64 0 }) - br i1 %t12, label %then1361, label %else1362 -then1361: - %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 %panic1364, label %ok1365 -panic1364: - call void @finch_panic(ptr @.str.734, i64 233, ptr @.str.735) - unreachable -ok1365: - %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.736, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - %t23 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 2 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.737, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - %t48 = load i64, ptr %t14 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t13, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t13 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t14 - %t52 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.next(ptr %t54) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load i64, ptr %t53 - %t62 = add i64 %t61, 1 - call void @finch_arr_reserve(ptr %t52, i64 %t62, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t63 = load ptr, ptr %t52 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i64 %t61 - store { ptr, i64, i64 } %t59, ptr %t64 - store i64 %t62, ptr %t53 - br label %endif1363 -else1362: - %t65 = load ptr, ptr %a1 - %t66 = call i1 @finch.parser.at(ptr %t65, { ptr, i64, i64 } { ptr @.str.738, i64 5, i64 0 }) - %t67 = xor i1 %t66, true - br i1 %t67, label %then1366, label %endif1368 -then1366: - %t68 = load ptr, ptr %a1 - %t69 = load %S.lexer.Token, ptr %a10 - call void @finch.parser.fail(ptr %t68, %S.lexer.Token %t69, { ptr, i64, i64 } { ptr @.str.739, i64 51, i64 0 }) - br label %endif1368 -endif1368: - %t70 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = call %S.lexer.Token @finch.parser.next(ptr %t72) - %t74 = extractvalue %S.lexer.Token %t73, 1 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_copy(ptr %a76, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store %S.lexer.Token %t73, ptr %a78 - call void @finch.drop.S_lexer_Token(ptr %a78) - %t79 = load i64, ptr %t71 - %t80 = add i64 %t79, 1 - call void @finch_arr_reserve(ptr %t70, i64 %t80, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t81 = load ptr, ptr %t70 - %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i64 %t79 - store { ptr, i64, i64 } %t77, ptr %t82 - store i64 %t80, ptr %t71 - br label %endif1363 -endif1363: - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %endif1360 -else1359: - %t83 = load ptr, ptr %a1 - %t84 = call i1 @finch.parser.at(ptr %t83, { ptr, i64, i64 } { ptr @.str.740, i64 4, i64 0 }) - br i1 %t84, label %then1369, label %else1370 -then1369: - %t85 = load ptr, ptr %a1 - %t86 = call %S.lexer.Token @finch.parser.next(ptr %t85) - store %S.lexer.Token %t86, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = call %S.lexer.Token @finch.parser.expect(ptr %t88, { ptr, i64, i64 } { ptr @.str.741, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.742, i64 42, i64 0 }) - %t90 = extractvalue %S.lexer.Token %t89, 1 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_copy(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - store %S.lexer.Token %t89, ptr %a94 - call void @finch.drop.S_lexer_Token(ptr %a94) - store { ptr, i64, i64 } %t93, ptr %a95 - %t96 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.744, i64 2, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_ends(ptr %a97, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.from1372 -logic.from1372: - br i1 %t101, label %logic.end1374, label %logic.rhs1373 -logic.rhs1373: - %t102 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.746, i64 2, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_ends(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.rend1375 -logic.rend1375: - br label %logic.end1374 -logic.end1374: - %t108 = phi i1 [ true, %logic.from1372 ], [ %t107, %logic.rend1375 ] - br label %logic.from1376 -logic.from1376: - br i1 %t108, label %logic.end1378, label %logic.rhs1377 -logic.rhs1377: - %t109 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.748, i64 2, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_ends(ptr %a110, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.rend1379 -logic.rend1379: - br label %logic.end1378 -logic.end1378: - %t115 = phi i1 [ true, %logic.from1376 ], [ %t114, %logic.rend1379 ] - store i1 %t115, ptr %a116 - %t117 = load i1, ptr %a116 - %t118 = xor i1 %t117, true - br label %logic.from1380 -logic.from1380: - br i1 %t118, label %logic.rhs1381, label %logic.end1382 -logic.rhs1381: - %t119 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.750, i64 3, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br label %logic.from1383 -logic.from1383: - br i1 %t124, label %logic.end1385, label %logic.rhs1384 -logic.rhs1384: - %t125 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.752, i64 3, i64 0 }, ptr %a128 - %t129 = call i64 @finch_str_find(ptr %a126, ptr %a128) - %t130 = icmp sge i64 %t129, 0 - br label %logic.rend1386 -logic.rend1386: - br label %logic.end1385 -logic.end1385: - %t131 = phi i1 [ true, %logic.from1383 ], [ %t130, %logic.rend1386 ] - br label %logic.from1387 -logic.from1387: - br i1 %t131, label %logic.end1389, label %logic.rhs1388 -logic.rhs1388: - %t132 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, ptr %a135 - %t136 = call i64 @finch_str_find(ptr %a133, ptr %a135) - %t137 = icmp sge i64 %t136, 0 - br label %logic.rend1390 -logic.rend1390: - br label %logic.end1389 -logic.end1389: - %t138 = phi i1 [ true, %logic.from1387 ], [ %t137, %logic.rend1390 ] - br label %logic.rend1391 -logic.rend1391: - br label %logic.end1382 -logic.end1382: - %t139 = phi i1 [ false, %logic.from1380 ], [ %t138, %logic.rend1391 ] - br i1 %t139, label %then1392, label %endif1394 -then1392: - %t140 = load ptr, ptr %a1 - %t141 = load %S.lexer.Token, ptr %a87 - call void @finch.parser.fail(ptr %t140, %S.lexer.Token %t141, { ptr, i64, i64 } { ptr @.str.755, i64 65, i64 0 }) - br label %endif1394 -endif1394: - %t142 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1 - %t144 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch_str_copy(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load i64, ptr %t143 - %t149 = add i64 %t148, 1 - call void @finch_arr_reserve(ptr %t142, i64 %t149, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t150 = load ptr, ptr %t142 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - store { ptr, i64, i64 } %t147, ptr %t151 - store i64 %t149, ptr %t143 - call void @finch_str_drop(ptr %a95) - call void @finch.drop.S_lexer_Token(ptr %a87) - br label %endif1371 -else1370: - %t152 = load ptr, ptr %a1 - %t153 = call i1 @finch.parser.at(ptr %t152, { ptr, i64, i64 } { ptr @.str.756, i64 6, i64 0 }) - br i1 %t153, label %then1395, label %else1396 -then1395: - %t154 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.ast.Node @finch.parser.parseStruct(ptr %t156) - %t158 = load i64, ptr %t155 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %t154 - %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 - store %S.ast.Node %t157, ptr %t161 - store i64 %t159, ptr %t155 - br label %endif1397 -else1396: - %t162 = load ptr, ptr %a1 - %t163 = call i1 @finch.parser.at(ptr %t162, { ptr, i64, i64 } { ptr @.str.757, i64 4, i64 0 }) - br i1 %t163, label %then1398, label %else1399 -then1398: - %t164 = load ptr, ptr %a1 - %t165 = call %S.ast.Node @finch.parser.parseEnum(ptr %t164) - store %S.ast.Node %t165, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Node, ptr %a166 - store %S.ast.Node %t169, ptr %a170 - call void @finch.copy.S_ast_Node(ptr %a171, ptr %a170) - %t172 = load %S.ast.Node, ptr %a171 - %t173 = load i64, ptr %t168 - %t174 = add i64 %t173, 1 - call void @finch_arr_reserve(ptr %t167, i64 %t174, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t175 = load ptr, ptr %t167 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t173 - store %S.ast.Node %t172, ptr %t176 - store i64 %t174, ptr %t168 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a166, i32 0, i32 6 - %t178 = load i1, ptr %t177 - br i1 %t178, label %then1401, label %endif1403 -then1401: - %t179 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = load %S.ast.Node, ptr %a166 - %t182 = call %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %t181) - %t183 = load i64, ptr %t180 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t179, i64 %t184, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.ast.Node, ptr %t185, i64 %t183 - store %S.ast.Node %t182, ptr %t186 - store i64 %t184, ptr %t180 - br label %endif1403 -endif1403: - call void @finch.drop.S_ast_Node(ptr %a166) - br label %endif1400 -else1399: - %t187 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load ptr, ptr %a1 - %t190 = call %S.ast.Node @finch.parser.parseFn(ptr %t189) - %t191 = load i64, ptr %t188 - %t192 = add i64 %t191, 1 - call void @finch_arr_reserve(ptr %t187, i64 %t192, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t193 = load ptr, ptr %t187 - %t194 = getelementptr inbounds %S.ast.Node, ptr %t193, i64 %t191 - store %S.ast.Node %t190, ptr %t194 - store i64 %t192, ptr %t188 - br label %endif1400 -endif1400: - br label %endif1397 -endif1397: - br label %endif1371 -endif1371: - br label %endif1360 -endif1360: - br label %while.cond1355 -while.end1357: - %t195 = load %S.ast.Program, ptr %a2 - ret %S.ast.Program %t195 -} - -define internal %S.ast.Node @finch.parser.parseEnum(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a32 = alloca %S.ast.Node, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Type, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a72 = alloca %S.lexer.Token, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.lexer.Token, align 16 - %a113 = 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 - %a125 = alloca %S.lexer.Token, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.ast.Node, align 16 - %a138 = alloca %S.ast.Node, align 16 - %a150 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i64, align 16 - %a182 = alloca %S.ast.Node, 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 - %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 - %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 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.lexer.Token, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.758, i64 4, i64 0 }) - store %S.ast.Node %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.759, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.760, i64 6, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.761, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.762, i64 12, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.763, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.764, i64 3, i64 0 }) - store %S.lexer.Token %t19, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - br label %while.cond1404 -while.cond1404: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.765, i64 1, i64 0 }) - %t23 = xor i1 %t22, true - br i1 %t23, label %while.body1405, label %while.end1406 -while.body1405: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.766, i64 3, i64 0 }) - br i1 %t25, label %then1407, label %endif1409 -then1407: - %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.767, i64 37, i64 0 }) - store %S.lexer.Token %t28, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - br label %endif1409 -endif1409: - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.node(ptr %t30, { ptr, i64, i64 } { ptr @.str.768, i64 7, i64 0 }) - store %S.ast.Node %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.expect(ptr %t33, { ptr, i64, i64 } { ptr @.str.769, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.770, i64 24, i64 0 }) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t38, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = call i1 @finch.parser.accept(ptr %t43, { ptr, i64, i64 } { ptr @.str.771, i64 1, i64 0 }) - br i1 %t44, label %then1410, label %endif1412 -then1410: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - store i1 true, ptr %t45 - br label %while.cond1413 -while.cond1413: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.772, i64 1, i64 0 }) - %t48 = xor i1 %t47, true - br i1 %t48, label %while.body1414, label %while.end1415 -while.body1414: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.node(ptr %t49, { ptr, i64, i64 } { ptr @.str.773, i64 5, i64 0 }) - store %S.ast.Node %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - %t54 = getelementptr inbounds %S.ast.Node, ptr %a51, i32 0, i32 5 - %t55 = load %S.ast.Type, ptr %t54 - store %S.ast.Type %t53, ptr %t54 - store %S.ast.Type %t55, ptr %a56 - call void @finch.drop.S_ast_Type(ptr %a56) - %t57 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = load %S.ast.Node, ptr %a51 - store %S.ast.Node %t59, ptr %a60 - call void @finch.copy.S_ast_Node(ptr %a61, ptr %a60) - %t62 = load %S.ast.Node, ptr %a61 - %t63 = load i64, ptr %t58 - %t64 = add i64 %t63, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t64, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t65 = load ptr, ptr %t57 - %t66 = getelementptr inbounds %S.ast.Node, ptr %t65, i64 %t63 - store %S.ast.Node %t62, ptr %t66 - store i64 %t64, ptr %t58 - %t67 = load ptr, ptr %a1 - %t68 = call i1 @finch.parser.accept(ptr %t67, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }) - %t69 = xor i1 %t68, true - br i1 %t69, label %then1416, label %endif1418 -then1416: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.end1415 -endif1418: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.cond1413 -while.end1415: - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.775, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.776, i64 35, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - %t73 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %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 %then1419, label %endif1421 -then1419: - %t77 = load ptr, ptr %a1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.cur(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } { ptr @.str.777, i64 12, 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.778, i64 27, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t90, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t90, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.779, i64 20, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.parser.fail(ptr %t77, %S.lexer.Token %t79, { ptr, i64, i64 } %t102) - store %S.lexer.Token %t79, ptr %a103 - call void @finch.drop.S_lexer_Token(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1421 -endif1421: - br label %endif1412 -endif1412: - %t105 = load ptr, ptr %a1 - %t106 = call i1 @finch.parser.accept(ptr %t105, { ptr, i64, i64 } { ptr @.str.780, i64 1, i64 0 }) - br i1 %t106, label %then1422, label %endif1424 -then1422: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then1425, label %endif1427 -then1425: - %t109 = load ptr, ptr %a1 - %t110 = load ptr, ptr %a1 - %t111 = call %S.lexer.Token @finch.parser.cur(ptr %t110) - call void @finch.parser.fail(ptr %t109, %S.lexer.Token %t111, { ptr, i64, i64 } { ptr @.str.781, i64 52, i64 0 }) - store %S.lexer.Token %t111, ptr %a112 - call void @finch.drop.S_lexer_Token(ptr %a112) - br label %endif1427 -endif1427: - store { ptr, i64, i64 } { ptr @.str.782, i64 0, i64 0 }, ptr %a113 - %t114 = load ptr, ptr %a1 - %t115 = call i1 @finch.parser.accept(ptr %t114, { ptr, i64, i64 } { ptr @.str.783, i64 1, i64 0 }) - br i1 %t115, label %then1428, label %endif1430 -then1428: - %t116 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.784, i64 1, i64 0 }, ptr %a113 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif1430 -endif1430: - %t118 = load { ptr, i64, i64 }, ptr %a113 - %t119 = load ptr, ptr %a1 - %t120 = call %S.lexer.Token @finch.parser.expect(ptr %t119, { ptr, i64, i64 } { ptr @.str.785, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.786, i64 30, i64 0 }) - %t121 = extractvalue %S.lexer.Token %t120, 1 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - store %S.lexer.Token %t120, ptr %a125 - call void @finch.drop.S_lexer_Token(ptr %a125) - store { ptr, i64, i64 } %t118, ptr %a127 - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %t131 - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a113) - br label %endif1424 -endif1424: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load %S.ast.Node, ptr %a32 - store %S.ast.Node %t136, ptr %a137 - call void @finch.copy.S_ast_Node(ptr %a138, ptr %a137) - %t139 = load %S.ast.Node, 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 (%S.ast.Node, ptr null, i32 1) to i64)) - %t142 = load ptr, ptr %t134 - %t143 = getelementptr inbounds %S.ast.Node, ptr %t142, i64 %t140 - store %S.ast.Node %t139, ptr %t143 - store i64 %t141, ptr %t135 - %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.accept(ptr %t144, { ptr, i64, i64 } { ptr @.str.787, i64 1, i64 0 }) - %t146 = xor i1 %t145, true - br i1 %t146, label %then1431, label %endif1433 -then1431: - %t147 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t147) - br label %endif1433 -endif1433: - call void @finch.drop.S_ast_Node(ptr %a32) - br label %while.cond1404 -while.end1406: - %t148 = load ptr, ptr %a1 - %t149 = call %S.lexer.Token @finch.parser.next(ptr %t148) - store %S.lexer.Token %t149, ptr %a150 - call void @finch.drop.S_lexer_Token(ptr %a150) - %t151 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = icmp eq i64 %t153, 0 - br i1 %t154, label %then1434, label %endif1436 -then1434: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.lexer.Token @finch.parser.cur(ptr %t156) - %t158 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } { ptr @.str.788, i64 9, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.789, i64 16, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.parser.fail(ptr %t155, %S.lexer.Token %t157, { ptr, i64, i64 } %t168) - store %S.lexer.Token %t157, ptr %a169 - call void @finch.drop.S_lexer_Token(ptr %a169) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1436 -endif1436: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t172 = load i1, ptr %t171 - br i1 %t172, label %then1437, label %endif1439 -then1437: - %t173 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - store i64 0, ptr %a174 - br label %each.cond1440 -each.cond1440: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %a174 - %t178 = icmp slt i64 %t177, %t176 - br i1 %t178, label %each.body1441, label %each.end1443 -each.body1441: - %t179 = load ptr, ptr %t173 - %t180 = getelementptr inbounds %S.ast.Node, ptr %t179, i64 %t177 - %t181 = load %S.ast.Node, ptr %t180 - store %S.ast.Node %t181, ptr %a182 - %t183 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load i64, ptr %t184 - %t186 = icmp sgt i64 %t185, 0 - br i1 %t186, label %then1444, label %endif1446 -then1444: - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = call %S.lexer.Token @finch.parser.cur(ptr %t188) - %t190 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - store { ptr, i64, i64 } { ptr @.str.790, i64 54, i64 0 }, 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.791, i64 3, i64 0 }, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - %t201 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %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) - store { ptr, i64, i64 } %t200, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.792, i64 1, i64 0 }, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.parser.fail(ptr %t187, %S.lexer.Token %t189, { ptr, i64, i64 } %t212) - store %S.lexer.Token %t189, ptr %a213 - call void @finch.drop.S_lexer_Token(ptr %a213) - store { ptr, i64, i64 } %t212, ptr %a214 - call void @finch_str_drop(ptr %a214) - br label %endif1446 -endif1446: - br label %each.step1442 -each.step1442: - %t215 = load i64, ptr %a174 - %t216 = add i64 %t215, 1 - store i64 %t216, ptr %a174 - br label %each.cond1440 -each.end1443: - br label %endif1439 -endif1439: - %t217 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t217 -} - -define internal %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %p0) { -entry: - %a1 = alloca %S.ast.Node, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca %S.ast.Node, align 16 - %a30 = alloca %S.ast.Node, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a46 = alloca i64, align 16 - %a54 = alloca %S.ast.Node, align 16 - %a58 = alloca 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a98 = alloca %S.ast.Type, align 16 - %a99 = alloca %S.ast.Type, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a107 = alloca %S.ast.Node, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.793, i64 6, i64 0 }, 0 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a1, 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 - %t8 = insertvalue %S.ast.Node %t2, { ptr, i64, i64 } %t7, 1 - %t9 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t10 = load i64, ptr %t9 - %t11 = insertvalue %S.ast.Node %t8, i64 %t10, 11 - %t12 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t13 = load i64, ptr %t12 - %t14 = insertvalue %S.ast.Node %t11, i64 %t13, 12 - %t15 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t16 = load i64, ptr %t15 - %t17 = insertvalue %S.ast.Node %t14, i64 %t16, 13 - store %S.ast.Node %t17, ptr %a18 - %t19 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.794, i64 5, i64 0 }, 0 - %t20 = insertvalue %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.795, i64 3, i64 0 }, 1 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t22 = load i64, ptr %t21 - %t23 = insertvalue %S.ast.Node %t20, i64 %t22, 11 - %t24 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t25 = load i64, ptr %t24 - %t26 = insertvalue %S.ast.Node %t23, i64 %t25, 12 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t28 = load i64, ptr %t27 - %t29 = insertvalue %S.ast.Node %t26, i64 %t28, 13 - store %S.ast.Node %t29, ptr %a30 - %t31 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.796, i64 3, i64 0 }) - %t32 = getelementptr inbounds %S.ast.Node, ptr %a30, i32 0, i32 5 - %t33 = load %S.ast.Type, ptr %t32 - store %S.ast.Type %t31, ptr %t32 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - %t35 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Node, ptr %a30 - store %S.ast.Node %t37, ptr %a38 - call void @finch.copy.S_ast_Node(ptr %a39, ptr %a38) - %t40 = load %S.ast.Node, ptr %a39 - %t41 = load i64, ptr %t36 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %t35, i64 %t42, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - store %S.ast.Node %t40, ptr %t44 - store i64 %t42, ptr %t36 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a46 - br label %each.cond1447 -each.cond1447: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t48 = load i64, ptr %t47 - %t49 = load i64, ptr %a46 - %t50 = icmp slt i64 %t49, %t48 - br i1 %t50, label %each.body1448, label %each.end1450 -each.body1448: - %t51 = load ptr, ptr %t45 - %t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t49 - %t53 = load %S.ast.Node, ptr %t52 - store %S.ast.Node %t53, ptr %a54 - %t55 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i32 0, i32 1 - %t57 = load i64, ptr %t56 - store i64 0, ptr %a58 - br label %for.cond1451 -for.cond1451: - %t59 = load i64, ptr %a58 - %t60 = icmp slt i64 %t59, %t57 - br i1 %t60, label %for.body1452, label %for.end1454 -for.body1452: - %t61 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.797, i64 5, i64 0 }, 0 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.798, 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 = load i64, ptr %a58 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = insertvalue %S.ast.Node %t61, { ptr, i64, i64 } %t76, 1 - %t78 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 11 - %t79 = load i64, ptr %t78 - %t80 = insertvalue %S.ast.Node %t77, i64 %t79, 11 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 12 - %t82 = load i64, ptr %t81 - %t83 = insertvalue %S.ast.Node %t80, i64 %t82, 12 - %t84 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 13 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.ast.Node %t83, i64 %t85, 13 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t89 = load i64, ptr %a58 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range1455, label %inrange1456 -range1455: - call void @finch_panic_index(ptr @.str.799, i64 333, i64 %t89, i64 %t91) - unreachable -inrange1456: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.ast.Node, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.ast.Node, ptr %t94, i32 0, i32 5 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - store %S.ast.Type %t96, ptr %a98 - call void @finch.copy.S_ast_Type(ptr %a99, ptr %a98) - %t100 = load %S.ast.Type, ptr %a99 - %t101 = load %S.ast.Type, ptr %t97 - store %S.ast.Type %t100, ptr %t97 - store %S.ast.Type %t101, ptr %a102 - call void @finch.drop.S_ast_Type(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load %S.ast.Node, ptr %a87 - store %S.ast.Node %t105, ptr %a106 - call void @finch.copy.S_ast_Node(ptr %a107, ptr %a106) - %t108 = load %S.ast.Node, ptr %a107 - %t109 = load i64, ptr %t104 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t103, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t103 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t104 - call void @finch.drop.S_ast_Node(ptr %a87) - br label %for.step1453 -for.step1453: - %t113 = load i64, ptr %a58 - %t114 = add i64 %t113, 1 - store i64 %t114, ptr %a58 - br label %for.cond1451 -for.end1454: - br label %each.step1449 -each.step1449: - %t115 = load i64, ptr %a46 - %t116 = add i64 %t115, 1 - store i64 %t116, ptr %a46 - br label %each.cond1447 -each.end1450: - %t117 = load %S.ast.Node, ptr %a18 - call void @finch.drop.S_ast_Node(ptr %a30) - ret %S.ast.Node %t117 -} - -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 - %a10 = alloca %S.lexer.Token, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a26 = alloca i64, align 16 - %a38 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a63 = alloca %S.ast.Node, align 16 - %a71 = alloca %S.lexer.Token, align 16 - %a105 = alloca %S.ast.Node, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a122 = alloca %S.lexer.Token, align 16 - %a130 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.800, 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.801, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.802, i64 7, i64 0 }) - store %S.lexer.Token %t9, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - %t11 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.parseExpr(ptr %t13) - %t15 = load i64, ptr %t12 - %t16 = add i64 %t15, 1 - call void @finch_arr_reserve(ptr %t11, i64 %t16, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t17 = load ptr, ptr %t11 - %t18 = getelementptr inbounds %S.ast.Node, ptr %t17, i64 %t15 - store %S.ast.Node %t14, ptr %t18 - store i64 %t16, ptr %t12 - %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.803, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.804, i64 3, i64 0 }) - store %S.lexer.Token %t20, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1457, label %ok1458 -panic1457: - call void @finch_panic(ptr @.str.805, i64 348, ptr @.str.806) - unreachable -ok1458: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 2 - %t25 = load i64, ptr %t24 - store i64 %t25, ptr %a26 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1459, label %ok1460 -panic1459: - call void @finch_panic(ptr @.str.807, i64 349, ptr @.str.808) - unreachable -ok1460: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 2 - store i64 0, ptr %t29 - br label %while.cond1461 -while.cond1461: - %t30 = load ptr, ptr %a1 - %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.809, i64 1, i64 0 }) - %t32 = xor i1 %t31, true - br i1 %t32, label %while.body1462, label %while.end1463 -while.body1462: - %t33 = load ptr, ptr %a1 - %t34 = call i1 @finch.parser.at(ptr %t33, { ptr, i64, i64 } { ptr @.str.810, i64 3, i64 0 }) - br i1 %t34, label %then1464, label %endif1466 -then1464: - %t35 = load ptr, ptr %a1 - %t36 = load ptr, ptr %a1 - %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) - call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } { ptr @.str.811, i64 37, i64 0 }) - store %S.lexer.Token %t37, ptr %a38 - call void @finch.drop.S_lexer_Token(ptr %a38) - br label %endif1466 -endif1466: - %t39 = load ptr, ptr %a1 - %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.812, i64 3, i64 0 }) - store %S.ast.Node %t40, ptr %a41 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.node(ptr %t42, { ptr, i64, i64 } { ptr @.str.813, i64 8, i64 0 }) - store %S.ast.Node %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = call i1 @finch.parser.accept(ptr %t45, { ptr, i64, i64 } { ptr @.str.814, i64 4, i64 0 }) - br i1 %t46, label %then1467, label %else1468 -then1467: - %t47 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 6 - store i1 true, ptr %t47 - br label %endif1469 -else1468: - br label %while.cond1470 -while.cond1470: - br label %while.body1471 -while.body1471: - %t48 = getelementptr inbounds %S.ast.Node, ptr %a44, i32 0, i32 9 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load ptr, ptr %a1 - %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t48 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 - store %S.ast.Node %t51, ptr %t55 - store i64 %t53, ptr %t49 - %t56 = load ptr, ptr %a1 - %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.815, i64 1, i64 0 }) - %t58 = xor i1 %t57, true - br i1 %t58, label %then1473, label %endif1475 -then1473: - br label %while.end1472 -endif1475: - br label %while.cond1470 -while.end1472: - br label %endif1469 -endif1469: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 - %t61 = load %S.ast.Node, ptr %a44 - store %S.ast.Node %t61, ptr %a62 - call void @finch.copy.S_ast_Node(ptr %a63, ptr %a62) - %t64 = load %S.ast.Node, ptr %a63 - %t65 = load i64, ptr %t60 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %t59, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %t59 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 - store %S.ast.Node %t64, ptr %t68 - store i64 %t66, ptr %t60 - %t69 = load ptr, ptr %a1 - %t70 = call %S.lexer.Token @finch.parser.expect(ptr %t69, { ptr, i64, i64 } { ptr @.str.816, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 57, i64 0 }) - store %S.lexer.Token %t70, ptr %a71 - call void @finch.drop.S_lexer_Token(ptr %a71) - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 }) - br label %logic.from1476 -logic.from1476: - br i1 %t73, label %logic.rhs1477, label %logic.end1478 -logic.rhs1477: - %t74 = load i1, ptr %a2 - %t75 = xor i1 %t74, true - br label %logic.rend1479 -logic.rend1479: - br label %logic.end1478 -logic.end1478: - %t76 = phi i1 [ false, %logic.from1476 ], [ %t75, %logic.rend1479 ] - br i1 %t76, label %then1480, label %else1481 -then1480: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 - %t79 = load ptr, ptr %a1 - %t80 = call %S.ast.Node @finch.parser.parseBlock(ptr %t79) - %t81 = load i64, ptr %t78 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t77, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t77 - %t84 = getelementptr inbounds %S.ast.Node, ptr %t83, i64 %t81 - store %S.ast.Node %t80, ptr %t84 - store i64 %t82, ptr %t78 - br label %endif1482 -else1481: - %t85 = load i1, ptr %a2 - br i1 %t85, label %then1483, label %else1484 -then1483: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load ptr, ptr %a1 - %t89 = call %S.ast.Node @finch.parser.parseExpr(ptr %t88) - %t90 = load i64, ptr %t87 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t91, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %t86 - %t93 = getelementptr inbounds %S.ast.Node, ptr %t92, i64 %t90 - store %S.ast.Node %t89, ptr %t93 - store i64 %t91, ptr %t87 - br label %endif1485 -else1484: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseStatement(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1485 -endif1485: - br label %endif1482 -endif1482: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i32 0, i32 1 - %t104 = load %S.ast.Node, ptr %a41 - store %S.ast.Node %t104, ptr %a105 - call void @finch.copy.S_ast_Node(ptr %a106, ptr %a105) - %t107 = load %S.ast.Node, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %t102, i64 %t109, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %t102 - %t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 %t108 - store %S.ast.Node %t107, ptr %t111 - store i64 %t109, ptr %t103 - %t112 = load ptr, ptr %a1 - %t113 = call i1 @finch.parser.accept(ptr %t112, { ptr, i64, i64 } { ptr @.str.819, i64 1, i64 0 }) - %t114 = xor i1 %t113, true - br i1 %t114, label %then1486, label %endif1488 -then1486: - %t115 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t115) - br label %endif1488 -endif1488: - call void @finch.drop.S_ast_Node(ptr %a44) - call void @finch.drop.S_ast_Node(ptr %a41) - br label %while.cond1461 -while.end1463: - %t116 = load i64, ptr %a26 - %t117 = load ptr, ptr %a1 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic1489, label %ok1490 -panic1489: - call void @finch_panic(ptr @.str.820, i64 380, ptr @.str.821) - unreachable -ok1490: - %t119 = getelementptr inbounds %S.parser.Parser, ptr %t117, i32 0, i32 2 - store i64 %t116, ptr %t119 - %t120 = load ptr, ptr %a1 - %t121 = call %S.lexer.Token @finch.parser.next(ptr %t120) - store %S.lexer.Token %t121, ptr %a122 - call void @finch.drop.S_lexer_Token(ptr %a122) - %t123 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1 - %t125 = load i64, ptr %t124 - %t126 = icmp eq i64 %t125, 1 - br i1 %t126, label %then1491, label %endif1493 -then1491: - %t127 = load ptr, ptr %a1 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.cur(ptr %t128) - call void @finch.parser.fail(ptr %t127, %S.lexer.Token %t129, { ptr, i64, i64 } { ptr @.str.822, i64 30, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - br label %endif1493 -endif1493: - %t131 = load %S.ast.Node, ptr %a5 - ret %S.ast.Node %t131 -} - -define internal { ptr, i64, i64 } @finch.parser.parseTParams(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca %S.lexer.Token, align 16 - %a23 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.823, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.824, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - br label %while.cond1494 -while.cond1494: - br label %while.body1495 -while.body1495: - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.825, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.826, i64 29, i64 0 }) - %t9 = extractvalue %S.lexer.Token %t8, 1 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - store %S.lexer.Token %t8, ptr %a13 - call void @finch.drop.S_lexer_Token(ptr %a13) - %t14 = load i64, ptr %t6 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t15, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %a2 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t14 - store { ptr, i64, i64 } %t12, ptr %t17 - store i64 %t15, ptr %t6 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.accept(ptr %t18, { ptr, i64, i64 } { ptr @.str.827, i64 1, i64 0 }) - %t20 = xor i1 %t19, true - br i1 %t20, label %then1497, label %endif1499 -then1497: - br label %while.end1496 -endif1499: - br label %while.cond1494 -while.end1496: - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.828, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.829, i64 29, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t24 -} - -define internal %S.ast.Node @finch.parser.parseStruct(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca %S.lexer.Token, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.lexer.Token, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.ast.Type, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.lexer.Token, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.ast.Node, align 16 - %a100 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.830, 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.831, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 8, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.833, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.834, i64 13, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.835, i64 1, i64 0 }) - br i1 %t19, label %then1500, label %endif1502 -then1500: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t20) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t21, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch.drop.arr_str(ptr %a24) - br label %endif1502 -endif1502: - %t25 = load ptr, ptr %a1 - %t26 = call %S.lexer.Token @finch.parser.expect(ptr %t25, { ptr, i64, i64 } { ptr @.str.836, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.837, i64 3, i64 0 }) - store %S.lexer.Token %t26, ptr %a27 - call void @finch.drop.S_lexer_Token(ptr %a27) - br label %while.cond1503 -while.cond1503: - %t28 = load ptr, ptr %a1 - %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.838, i64 1, i64 0 }) - %t30 = xor i1 %t29, true - br i1 %t30, label %while.body1504, label %while.end1505 -while.body1504: - %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.839, i64 3, i64 0 }) - br i1 %t32, label %then1506, label %endif1508 -then1506: - %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.840, i64 38, i64 0 }) - store %S.lexer.Token %t35, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - br label %endif1508 -endif1508: - %t37 = load ptr, ptr %a1 - %t38 = call %S.ast.Node @finch.parser.node(ptr %t37, { ptr, i64, i64 } { ptr @.str.841, i64 5, i64 0 }) - store %S.ast.Node %t38, ptr %a39 - %t40 = load ptr, ptr %a1 - %t41 = call i1 @finch.parser.atDeclaration(ptr %t40) - %t42 = xor i1 %t41, true - br i1 %t42, label %then1509, label %endif1511 -then1509: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = call %S.lexer.Token @finch.parser.cur(ptr %t44) - %t46 = load ptr, ptr %a1 - %t47 = call %S.lexer.Token @finch.parser.cur(ptr %t46) - %t48 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t47) - store %S.lexer.Token %t47, ptr %a49 - call void @finch.drop.S_lexer_Token(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.842, i64 11, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.843, i64 28, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - call void @finch.parser.fail(ptr %t43, %S.lexer.Token %t45, { ptr, i64, i64 } %t59) - store %S.lexer.Token %t45, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - br label %endif1511 -endif1511: - %t62 = load ptr, ptr %a1 - %t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62) - %t64 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 5 - %t65 = load %S.ast.Type, ptr %t64 - store %S.ast.Type %t63, ptr %t64 - store %S.ast.Type %t65, ptr %a66 - call void @finch.drop.S_ast_Type(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = call %S.lexer.Token @finch.parser.expect(ptr %t67, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.845, i64 12, i64 0 }) - %t69 = extractvalue %S.lexer.Token %t68, 1 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_copy(ptr %a71, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - store %S.lexer.Token %t68, ptr %a73 - call void @finch.drop.S_lexer_Token(ptr %a73) - %t74 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 1 - %t75 = load { ptr, i64, i64 }, ptr %t74 - store { ptr, i64, i64 } %t72, ptr %t74 - store { ptr, i64, i64 } %t75, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load ptr, ptr %a1 - %t78 = call i1 @finch.parser.accept(ptr %t77, { ptr, i64, i64 } { ptr @.str.846, i64 1, i64 0 }) - br i1 %t78, label %then1512, label %endif1514 -then1512: - %t79 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 9 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load ptr, ptr %a1 - %t82 = call %S.ast.Node @finch.parser.parseExpr(ptr %t81) - %t83 = load i64, ptr %t80 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t79, i64 %t84, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t79 - %t86 = getelementptr inbounds %S.ast.Node, ptr %t85, i64 %t83 - store %S.ast.Node %t82, ptr %t86 - store i64 %t84, ptr %t80 - br label %endif1514 -endif1514: - %t87 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 - %t89 = load %S.ast.Node, ptr %a39 - store %S.ast.Node %t89, ptr %a90 - call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90) - %t92 = load %S.ast.Node, ptr %a91 - %t93 = load i64, ptr %t88 - %t94 = add i64 %t93, 1 - call void @finch_arr_reserve(ptr %t87, i64 %t94, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t95 = load ptr, ptr %t87 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 %t93 - store %S.ast.Node %t92, ptr %t96 - store i64 %t94, ptr %t88 - %t97 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t97) - call void @finch.drop.S_ast_Node(ptr %a39) - br label %while.cond1503 -while.end1505: - %t98 = load ptr, ptr %a1 - %t99 = call %S.lexer.Token @finch.parser.next(ptr %t98) - store %S.lexer.Token %t99, ptr %a100 - call void @finch.drop.S_lexer_Token(ptr %a100) - %t101 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t101 -} - -define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) { -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 - %a16 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lexer.Token, align 16 - %a26 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.lexer.Token, align 16 - %a77 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Type, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca %S.lexer.Token, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - %a113 = alloca %S.lexer.Token, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.847, 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.848, 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.849, i64 5, i64 0 }) - br label %logic.from1515 -logic.from1515: - br i1 %t9, label %logic.rhs1516, label %logic.end1517 -logic.rhs1516: - %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 - store %S.lexer.Token %t11, ptr %a16 - call void @finch.drop.S_lexer_Token(ptr %a16) - %t17 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend1518 -logic.rend1518: - br label %logic.end1517 -logic.end1517: - %t19 = phi i1 [ false, %logic.from1515 ], [ %t17, %logic.rend1518 ] - br i1 %t19, label %then1519, label %endif1521 -then1519: - %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.850, i64 68, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - br label %endif1521 -endif1521: - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.expect(ptr %t24, { ptr, i64, i64 } { ptr @.str.851, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.852, i64 26, i64 0 }) - store %S.lexer.Token %t25, ptr %a26 - call void @finch.drop.S_lexer_Token(ptr %a26) - %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.853, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.854, i64 15, i64 0 }) - %t29 = extractvalue %S.lexer.Token %t28, 1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store %S.lexer.Token %t28, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t32, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call i1 @finch.parser.at(ptr %t37, { ptr, i64, i64 } { ptr @.str.855, i64 1, i64 0 }) - br i1 %t38, label %then1522, label %endif1524 -then1522: - %t39 = load ptr, ptr %a1 - %t40 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t39) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t40, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch.drop.arr_str(ptr %a43) - br label %endif1524 -endif1524: - %t44 = load ptr, ptr %a1 - %t45 = call i1 @finch.parser.accept(ptr %t44, { ptr, i64, i64 } { ptr @.str.856, i64 1, i64 0 }) - br i1 %t45, label %then1525, label %endif1527 -then1525: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - %t48 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t47, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t51, ptr %t48 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.expect(ptr %t54, { ptr, i64, i64 } { ptr @.str.857, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.858, i64 13, i64 0 }) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t59, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %endif1527 -endif1527: - %t64 = load ptr, ptr %a1 - %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.859, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.860, i64 3, i64 0 }) - store %S.lexer.Token %t65, ptr %a66 - call void @finch.drop.S_lexer_Token(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic1528, label %ok1529 -panic1528: - call void @finch_panic(ptr @.str.861, i64 446, ptr @.str.862) - unreachable -ok1529: - %t69 = getelementptr inbounds %S.parser.Parser, ptr %t67, i32 0, i32 2 - %t70 = load i64, ptr %t69 - %t71 = add i64 %t70, 1 - store i64 %t71, ptr %t69 - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.863, i64 1, i64 0 }) - %t74 = xor i1 %t73, true - br i1 %t74, label %then1530, label %endif1532 -then1530: - br label %while.cond1533 -while.cond1533: - br label %while.body1534 -while.body1534: - %t75 = load ptr, ptr %a1 - %t76 = call %S.ast.Node @finch.parser.node(ptr %t75, { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }) - store %S.ast.Node %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Type @finch.parser.parseType(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 5 - %t81 = load %S.ast.Type, ptr %t80 - store %S.ast.Type %t79, ptr %t80 - store %S.ast.Type %t81, ptr %a82 - call void @finch.drop.S_ast_Type(ptr %a82) - %t83 = load ptr, ptr %a1 - %t84 = call %S.lexer.Token @finch.parser.expect(ptr %t83, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.866, i64 16, i64 0 }) - %t85 = extractvalue %S.lexer.Token %t84, 1 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_copy(ptr %a87, ptr %a86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store %S.lexer.Token %t84, ptr %a89 - call void @finch.drop.S_lexer_Token(ptr %a89) - %t90 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 1 - %t91 = load { ptr, i64, i64 }, ptr %t90 - store { ptr, i64, i64 } %t88, ptr %t90 - store { ptr, i64, i64 } %t91, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load %S.ast.Node, ptr %a77 - store %S.ast.Node %t95, ptr %a96 - call void @finch.copy.S_ast_Node(ptr %a97, ptr %a96) - %t98 = load %S.ast.Node, ptr %a97 - %t99 = load i64, ptr %t94 - %t100 = add i64 %t99, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t100, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t101 = load ptr, ptr %t93 - %t102 = getelementptr inbounds %S.ast.Node, ptr %t101, i64 %t99 - store %S.ast.Node %t98, ptr %t102 - store i64 %t100, ptr %t94 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.867, i64 1, i64 0 }) - %t105 = xor i1 %t104, true - br i1 %t105, label %then1536, label %endif1538 -then1536: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.end1535 -endif1538: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.cond1533 -while.end1535: - br label %endif1532 -endif1532: - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic1539, label %ok1540 -panic1539: - call void @finch_panic(ptr @.str.868, i64 458, ptr @.str.869) - unreachable -ok1540: - %t108 = getelementptr inbounds %S.parser.Parser, ptr %t106, i32 0, i32 2 - %t109 = load i64, ptr %t108 - %t110 = sub i64 %t109, 1 - store i64 %t110, ptr %t108 - %t111 = load ptr, ptr %a1 - %t112 = call %S.lexer.Token @finch.parser.expect(ptr %t111, { ptr, i64, i64 } { ptr @.str.870, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.871, i64 3, i64 0 }) - store %S.lexer.Token %t112, ptr %a113 - call void @finch.drop.S_lexer_Token(ptr %a113) - %t114 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.872, i64 4, i64 0 }) - %t115 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t116 = load %S.ast.Type, ptr %t115 - store %S.ast.Type %t114, ptr %t115 - store %S.ast.Type %t116, ptr %a117 - call void @finch.drop.S_ast_Type(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = call i1 @finch.parser.accept(ptr %t118, { ptr, i64, i64 } { ptr @.str.873, i64 2, i64 0 }) - br i1 %t119, label %then1541, label %endif1543 -then1541: - %t120 = load ptr, ptr %a1 - %t121 = call i1 @finch.parser.at(ptr %t120, { ptr, i64, i64 } { ptr @.str.874, i64 1, i64 0 }) - %t122 = xor i1 %t121, true - br i1 %t122, label %then1544, label %endif1546 -then1544: - %t123 = load ptr, ptr %a1 - %t124 = call %S.ast.Type @finch.parser.parseType(ptr %t123) - %t125 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t126 = load %S.ast.Type, ptr %t125 - store %S.ast.Type %t124, ptr %t125 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif1546 -endif1546: - %t128 = load ptr, ptr %a1 - %t129 = call i1 @finch.parser.accept(ptr %t128, { ptr, i64, i64 } { ptr @.str.875, i64 1, i64 0 }) - %t130 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - store i1 %t129, ptr %t130 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - %t132 = load i1, ptr %t131 - %t133 = xor i1 %t132, true - br label %logic.from1547 -logic.from1547: - br i1 %t133, label %logic.rhs1548, label %logic.end1549 -logic.rhs1548: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t136, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.876, i64 4, i64 0 }, ptr %a138 - %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) - %t140 = icmp ne i32 %t139, 0 - br label %logic.rend1550 -logic.rend1550: - br label %logic.end1549 -logic.end1549: - %t141 = phi i1 [ false, %logic.from1547 ], [ %t140, %logic.rend1550 ] - br i1 %t141, label %then1551, label %endif1553 -then1551: - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.lexer.Token @finch.parser.cur(ptr %t143) - %t145 = load ptr, ptr %a1 - %t146 = call %S.lexer.Token @finch.parser.cur(ptr %t145) - %t147 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t146) - store %S.lexer.Token %t146, ptr %a148 - call void @finch.drop.S_lexer_Token(ptr %a148) - store { ptr, i64, i64 } { ptr @.str.877, i64 11, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t147, ptr %a152 - call void @finch_str_drop(ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.878, i64 61, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - call void @finch.parser.fail(ptr %t142, %S.lexer.Token %t144, { ptr, i64, i64 } %t158) - store %S.lexer.Token %t144, ptr %a159 - call void @finch.drop.S_lexer_Token(ptr %a159) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - br label %endif1553 -endif1553: - br label %endif1543 -endif1543: - %t161 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i32 0, i32 1 - %t163 = load ptr, ptr %a1 - %t164 = call %S.ast.Node @finch.parser.parseBlock(ptr %t163) - %t165 = load i64, ptr %t162 - %t166 = add i64 %t165, 1 - call void @finch_arr_reserve(ptr %t161, i64 %t166, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t167 = load ptr, ptr %t161 - %t168 = getelementptr inbounds %S.ast.Node, ptr %t167, i64 %t165 - store %S.ast.Node %t164, ptr %t168 - store i64 %t166, ptr %t162 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = sub i64 %t172, 1 - %t174 = load { ptr, i64, i64 }, ptr %t169 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range1554, label %inrange1555 -range1554: - call void @finch_panic_index(ptr @.str.879, i64 471, i64 %t173, i64 %t175) - unreachable -inrange1555: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Node, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i32 0, i32 14 - %t180 = load i64, ptr %t179 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t180, ptr %t181 - %t182 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t182 -} - -define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a12 = alloca i64, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.lexer.Token, align 16 - %a45 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.880, 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.881, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.882, i64 3, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic1556, label %ok1557 -panic1556: - call void @finch_panic(ptr @.str.883, i64 480, ptr @.str.884) - unreachable -ok1557: - %t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 2 - %t11 = load i64, ptr %t10 - store i64 %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic1558, label %ok1559 -panic1558: - call void @finch_panic(ptr @.str.885, i64 481, ptr @.str.886) - unreachable -ok1559: - %t15 = getelementptr inbounds %S.parser.Parser, ptr %t13, i32 0, i32 2 - store i64 0, ptr %t15 - br label %while.cond1560 -while.cond1560: - %t16 = load ptr, ptr %a1 - %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.887, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - br i1 %t18, label %while.body1561, label %while.end1562 -while.body1561: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.888, i64 3, i64 0 }) - br i1 %t20, label %then1563, label %endif1565 -then1563: - %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.889, i64 35, i64 0 }) - store %S.lexer.Token %t23, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - br label %endif1565 -endif1565: - %t25 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.parseStatement(ptr %t27) - %t29 = load i64, ptr %t26 - %t30 = add i64 %t29, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t30, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t31 = load ptr, ptr %t25 - %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 %t29 - store %S.ast.Node %t28, ptr %t32 - store i64 %t30, ptr %t26 - %t33 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t33) - br label %while.cond1560 -while.end1562: - %t34 = load i64, ptr %a12 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1566, label %ok1567 -panic1566: - call void @finch_panic(ptr @.str.890, i64 489, ptr @.str.891) - unreachable -ok1567: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 2 - store i64 %t34, ptr %t37 - %t38 = load ptr, ptr %a1 - %t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38) - %t40 = extractvalue %S.lexer.Token %t39, 2 - store %S.lexer.Token %t39, ptr %a41 - call void @finch.drop.S_lexer_Token(ptr %a41) - %t42 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t40, ptr %t42 - %t43 = load ptr, ptr %a1 - %t44 = call %S.lexer.Token @finch.parser.next(ptr %t43) - store %S.lexer.Token %t44, ptr %a45 - call void @finch.drop.S_lexer_Token(ptr %a45) - %t46 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t46 -} - -define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { -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 - %a22 = alloca %S.lexer.Token, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.ast.Node, align 16 - %a50 = alloca %S.lexer.Token, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca %S.lexer.Token, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Node, align 16 - %a131 = alloca %S.lexer.Token, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.ast.Node, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca %S.ast.Node, align 16 - %a186 = alloca %S.lexer.Token, align 16 - %a192 = alloca %S.lexer.Token, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.lexer.Token, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Node, align 16 - %a250 = alloca %S.ast.Type, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca %S.lexer.Token, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca %S.ast.Node, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca %S.lexer.Token, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.lexer.Token, align 16 - %a309 = alloca %S.lexer.Token, align 16 - %a312 = alloca %S.ast.Node, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca i64, align 16 - %a331 = alloca i64, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.ast.Node, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca %S.lexer.Token, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca %S.ast.Node, align 16 - %a396 = alloca %S.ast.Node, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Node, align 16 - %a456 = alloca %S.ast.Node, align 16 - %a457 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t2) - store { ptr, i64, i64 } %t3, ptr %a4 - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.892, 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 %then1568, label %endif1570 -then1568: - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t11 -endif1570: - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.893, 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 %then1571, label %endif1573 -then1571: - %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.894, 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) - store %S.lexer.Token %t21, ptr %a22 - call void @finch.drop.S_lexer_Token(ptr %a22) - %t23 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 - %t25 = load ptr, ptr %a1 - %t26 = call %S.ast.Node @finch.parser.parseExpr(ptr %t25) - %t27 = load i64, ptr %t24 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - store %S.ast.Node %t26, ptr %t30 - store i64 %t28, ptr %t24 - %t31 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load ptr, ptr %a1 - %t34 = call %S.ast.Node @finch.parser.parseBlock(ptr %t33) - %t35 = load i64, ptr %t32 - %t36 = add i64 %t35, 1 - call void @finch_arr_reserve(ptr %t31, i64 %t36, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t37 = load ptr, ptr %t31 - %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t35 - store %S.ast.Node %t34, ptr %t38 - store i64 %t36, ptr %t32 - %t39 = load %S.ast.Node, ptr %a19 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t39 -endif1573: - %t40 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.895, i64 3, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br i1 %t44, label %then1574, label %endif1576 -then1574: - %t45 = load ptr, ptr %a1 - %t46 = call %S.ast.Node @finch.parser.node(ptr %t45, { ptr, i64, i64 } { ptr @.str.896, i64 3, i64 0 }) - store %S.ast.Node %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = call %S.lexer.Token @finch.parser.next(ptr %t48) - store %S.lexer.Token %t49, ptr %a50 - call void @finch.drop.S_lexer_Token(ptr %a50) - %t51 = load ptr, ptr %a1 - %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.897, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.898, i64 20, i64 0 }) - %t53 = extractvalue %S.lexer.Token %t52, 1 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch_str_copy(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store %S.lexer.Token %t52, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 1 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } %t56, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.899, i64 1, i64 0 }) - br i1 %t62, label %then1577, label %endif1579 -then1577: - %t63 = load ptr, ptr %a1 - %t64 = call %S.lexer.Token @finch.parser.expect(ptr %t63, { ptr, i64, i64 } { ptr @.str.900, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.901, i64 27, i64 0 }) - %t65 = extractvalue %S.lexer.Token %t64, 1 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store %S.lexer.Token %t64, ptr %a69 - call void @finch.drop.S_lexer_Token(ptr %a69) - %t70 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t68, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif1579 -endif1579: - %t73 = load ptr, ptr %a1 - %t74 = call %S.lexer.Token @finch.parser.expect(ptr %t73, { ptr, i64, i64 } { ptr @.str.902, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.903, i64 4, i64 0 }) - store %S.lexer.Token %t74, ptr %a75 - call void @finch.drop.S_lexer_Token(ptr %a75) - %t76 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = call i1 @finch.parser.accept(ptr %t84, { ptr, i64, i64 } { ptr @.str.904, i64 2, i64 0 }) - br i1 %t85, label %then1580, label %else1581 -then1580: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = icmp sgt i64 %t88, 0 - br i1 %t89, label %then1583, label %endif1585 -then1583: - %t90 = load ptr, ptr %a1 - %t91 = load ptr, ptr %a1 - %t92 = call %S.lexer.Token @finch.parser.cur(ptr %t91) - call void @finch.parser.fail(ptr %t90, %S.lexer.Token %t92, { ptr, i64, i64 } { ptr @.str.905, i64 55, i64 0 }) - store %S.lexer.Token %t92, ptr %a93 - call void @finch.drop.S_lexer_Token(ptr %a93) - br label %endif1585 -endif1585: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseExpr(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1582 -else1581: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } { ptr @.str.906, i64 4, i64 0 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1582 -endif1582: - %t105 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1 - %t107 = load ptr, ptr %a1 - %t108 = call %S.ast.Node @finch.parser.parseBlock(ptr %t107) - %t109 = load i64, ptr %t106 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t105, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t105 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t106 - %t113 = load %S.ast.Node, ptr %a47 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t113 -endif1576: - %t114 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.907, i64 5, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br i1 %t118, label %then1586, label %endif1588 -then1586: - %t119 = load ptr, ptr %a1 - %t120 = call %S.ast.Node @finch.parser.parseMatch(ptr %t119, i1 false) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t120 -endif1588: - %t121 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.908, i64 6, i64 0 }, ptr %a123 - %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) - %t125 = icmp ne i32 %t124, 0 - br i1 %t125, label %then1589, label %endif1591 -then1589: - %t126 = load ptr, ptr %a1 - %t127 = call %S.ast.Node @finch.parser.node(ptr %t126, { ptr, i64, i64 } { ptr @.str.909, i64 6, i64 0 }) - store %S.ast.Node %t127, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = call %S.lexer.Token @finch.parser.next(ptr %t129) - store %S.lexer.Token %t130, ptr %a131 - call void @finch.drop.S_lexer_Token(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = call i1 @finch.parser.at(ptr %t132, { ptr, i64, i64 } { ptr @.str.910, i64 1, i64 0 }) - %t134 = xor i1 %t133, true - br label %logic.from1592 -logic.from1592: - br i1 %t134, label %logic.rhs1593, label %logic.end1594 -logic.rhs1593: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1595 -logic.rend1595: - br label %logic.end1594 -logic.end1594: - %t140 = phi i1 [ false, %logic.from1592 ], [ %t139, %logic.rend1595 ] - br i1 %t140, label %then1596, label %endif1598 -then1596: - %t141 = getelementptr inbounds %S.ast.Node, ptr %a128, i32 0, i32 9 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.ast.Node @finch.parser.parseExpr(ptr %t143) - %t145 = load i64, ptr %t142 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t141, i64 %t146, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t141 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t145 - store %S.ast.Node %t144, ptr %t148 - store i64 %t146, ptr %t142 - br label %endif1598 -endif1598: - %t149 = load %S.ast.Node, ptr %a128 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t149 -endif1591: - %t150 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.911, 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.from1599 -logic.from1599: - br i1 %t154, label %logic.end1601, label %logic.rhs1600 -logic.rhs1600: - %t155 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.912, i64 8, i64 0 }, ptr %a157 - %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) - %t159 = icmp ne i32 %t158, 0 - br label %logic.rend1602 -logic.rend1602: - br label %logic.end1601 -logic.end1601: - %t160 = phi i1 [ true, %logic.from1599 ], [ %t159, %logic.rend1602 ] - br i1 %t160, label %then1603, label %endif1605 -then1603: - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a4 - %t163 = call %S.ast.Node @finch.parser.node(ptr %t161, { ptr, i64, i64 } %t162) - store %S.ast.Node %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = load %S.ast.Node, ptr %a164 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t168 -endif1605: - %t169 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.913, i64 1, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then1606, label %endif1608 -then1606: - %t174 = load ptr, ptr %a1 - %t175 = call %S.ast.Node @finch.parser.parseBlock(ptr %t174) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t175 -endif1608: - %t176 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.914, i64 5, i64 0 }, ptr %a178 - %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %then1609, label %endif1611 -then1609: - %t181 = load ptr, ptr %a1 - %t182 = call %S.ast.Node @finch.parser.node(ptr %t181, { ptr, i64, i64 } { ptr @.str.915, i64 5, i64 0 }) - store %S.ast.Node %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = call %S.lexer.Token @finch.parser.next(ptr %t184) - store %S.lexer.Token %t185, ptr %a186 - call void @finch.drop.S_lexer_Token(ptr %a186) - %t187 = load ptr, ptr %a1 - %t188 = call i1 @finch.parser.at(ptr %t187, { ptr, i64, i64 } { ptr @.str.916, i64 5, i64 0 }) - br i1 %t188, label %then1612, label %endif1614 -then1612: - %t189 = load ptr, ptr %a1 - %t190 = load ptr, ptr %a1 - %t191 = call %S.lexer.Token @finch.parser.cur(ptr %t190) - call void @finch.parser.fail(ptr %t189, %S.lexer.Token %t191, { ptr, i64, i64 } { ptr @.str.917, i64 33, i64 0 }) - store %S.lexer.Token %t191, ptr %a192 - call void @finch.drop.S_lexer_Token(ptr %a192) - br label %endif1614 -endif1614: - %t193 = getelementptr inbounds %S.ast.Node, ptr %a183, i32 0, i32 9 - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t193, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call %S.ast.Node @finch.parser.parseStatement(ptr %t195) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %t193, i64 %t198, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %t193 - %t200 = getelementptr inbounds %S.ast.Node, ptr %t199, i64 %t197 - store %S.ast.Node %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = load %S.ast.Node, ptr %a183 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t201 -endif1611: - %t202 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.918, i64 2, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.from1615 -logic.from1615: - br i1 %t206, label %logic.end1617, label %logic.rhs1616 -logic.rhs1616: - %t207 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.919, 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.rend1618 -logic.rend1618: - br label %logic.end1617 -logic.end1617: - %t212 = phi i1 [ true, %logic.from1615 ], [ %t211, %logic.rend1618 ] - br label %logic.from1619 -logic.from1619: - br i1 %t212, label %logic.end1621, label %logic.rhs1620 -logic.rhs1620: - %t213 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.920, i64 6, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br label %logic.rend1622 -logic.rend1622: - br label %logic.end1621 -logic.end1621: - %t218 = phi i1 [ true, %logic.from1619 ], [ %t217, %logic.rend1622 ] - br label %logic.from1623 -logic.from1623: - br i1 %t218, label %logic.end1625, label %logic.rhs1624 -logic.rhs1624: - %t219 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t219, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.921, i64 4, i64 0 }, ptr %a221 - %t222 = call i32 @finch_str_eq(ptr %a220, ptr %a221) - %t223 = icmp ne i32 %t222, 0 - br label %logic.rend1626 -logic.rend1626: - br label %logic.end1625 -logic.end1625: - %t224 = phi i1 [ true, %logic.from1623 ], [ %t223, %logic.rend1626 ] - br i1 %t224, label %then1627, label %endif1629 -then1627: - %t225 = load ptr, ptr %a1 - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.cur(ptr %t226) - %t228 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.922, i64 1, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.923, i64 48, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - call void @finch.parser.fail(ptr %t225, %S.lexer.Token %t227, { ptr, i64, i64 } %t237) - store %S.lexer.Token %t227, ptr %a238 - call void @finch.drop.S_lexer_Token(ptr %a238) - store { ptr, i64, i64 } %t237, ptr %a239 - call void @finch_str_drop(ptr %a239) - br label %endif1629 -endif1629: - %t240 = load ptr, ptr %a1 - %t241 = call i1 @finch.parser.atDeclaration(ptr %t240) - br i1 %t241, label %then1630, label %endif1632 -then1630: - %t242 = load ptr, ptr %a1 - %t243 = call %S.ast.Node @finch.parser.node(ptr %t242, { ptr, i64, i64 } { ptr @.str.924, i64 4, i64 0 }) - store %S.ast.Node %t243, ptr %a244 - %t245 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 6 - store i1 true, ptr %t245 - %t246 = load ptr, ptr %a1 - %t247 = call %S.ast.Type @finch.parser.parseType(ptr %t246) - %t248 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 5 - %t249 = load %S.ast.Type, ptr %t248 - store %S.ast.Type %t247, ptr %t248 - store %S.ast.Type %t249, ptr %a250 - call void @finch.drop.S_ast_Type(ptr %a250) - %t251 = load ptr, ptr %a1 - %t252 = call %S.lexer.Token @finch.parser.expect(ptr %t251, { ptr, i64, i64 } { ptr @.str.925, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.926, i64 15, i64 0 }) - %t253 = extractvalue %S.lexer.Token %t252, 1 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - store %S.lexer.Token %t252, ptr %a257 - call void @finch.drop.S_lexer_Token(ptr %a257) - %t258 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 1 - %t259 = load { ptr, i64, i64 }, ptr %t258 - store { ptr, i64, i64 } %t256, ptr %t258 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = call i1 @finch.parser.accept(ptr %t261, { ptr, i64, i64 } { ptr @.str.927, i64 1, i64 0 }) - br i1 %t262, label %then1633, label %endif1635 -then1633: - %t263 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 9 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load ptr, ptr %a1 - %t266 = call %S.ast.Node @finch.parser.parseExpr(ptr %t265) - %t267 = load i64, ptr %t264 - %t268 = add i64 %t267, 1 - call void @finch_arr_reserve(ptr %t263, i64 %t268, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t269 = load ptr, ptr %t263 - %t270 = getelementptr inbounds %S.ast.Node, ptr %t269, i64 %t267 - store %S.ast.Node %t266, ptr %t270 - store i64 %t268, ptr %t264 - br label %endif1635 -endif1635: - %t271 = load %S.ast.Node, ptr %a244 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t271 -endif1632: - %t272 = load ptr, ptr %a1 - %t273 = call i1 @finch.parser.at(ptr %t272, { ptr, i64, i64 } { ptr @.str.928, i64 5, i64 0 }) - br label %logic.from1636 -logic.from1636: - br i1 %t273, label %logic.rhs1637, label %logic.end1638 -logic.rhs1637: - %t274 = load ptr, ptr %a1 - %t275 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t274, i64 1) - store { ptr, i64, i64 } %t275, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.929, i64 2, i64 0 }, ptr %a277 - %t278 = call i32 @finch_str_eq(ptr %a276, ptr %a277) - %t279 = icmp ne i32 %t278, 0 - store { ptr, i64, i64 } %t275, ptr %a280 - call void @finch_str_drop(ptr %a280) - br label %logic.rend1639 -logic.rend1639: - br label %logic.end1638 -logic.end1638: - %t281 = phi i1 [ false, %logic.from1636 ], [ %t279, %logic.rend1639 ] - br i1 %t281, label %then1640, label %endif1642 -then1640: - %t282 = load ptr, ptr %a1 - %t283 = call %S.ast.Node @finch.parser.node(ptr %t282, { ptr, i64, i64 } { ptr @.str.930, i64 4, i64 0 }) - store %S.ast.Node %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = call %S.lexer.Token @finch.parser.next(ptr %t285) - %t287 = extractvalue %S.lexer.Token %t286, 1 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_copy(ptr %a289, ptr %a288) - %t290 = load { ptr, i64, i64 }, ptr %a289 - store %S.lexer.Token %t286, ptr %a291 - call void @finch.drop.S_lexer_Token(ptr %a291) - %t292 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 1 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } %t290, ptr %t292 - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load ptr, ptr %a1 - %t296 = call %S.lexer.Token @finch.parser.next(ptr %t295) - store %S.lexer.Token %t296, ptr %a297 - call void @finch.drop.S_lexer_Token(ptr %a297) - %t298 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 9 - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 - %t300 = load ptr, ptr %a1 - %t301 = call %S.ast.Node @finch.parser.parseExpr(ptr %t300) - %t302 = load i64, ptr %t299 - %t303 = add i64 %t302, 1 - call void @finch_arr_reserve(ptr %t298, i64 %t303, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t304 = load ptr, ptr %t298 - %t305 = getelementptr inbounds %S.ast.Node, ptr %t304, i64 %t302 - store %S.ast.Node %t301, ptr %t305 - store i64 %t303, ptr %t299 - %t306 = load %S.ast.Node, ptr %a284 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t306 -endif1642: - %t307 = load ptr, ptr %a1 - %t308 = call %S.lexer.Token @finch.parser.cur(ptr %t307) - store %S.lexer.Token %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = call %S.ast.Node @finch.parser.parseExpr(ptr %t310) - store %S.ast.Node %t311, ptr %a312 - %t313 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t314 = call ptr @finch_alloc(i64 %t313) - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 0 - store { ptr, i64, i64 } { ptr @.str.931, i64 1, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 1 - store { ptr, i64, i64 } { ptr @.str.932, i64 2, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 2 - store { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 3 - store { ptr, i64, i64 } { ptr @.str.934, i64 2, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 4 - store { ptr, i64, i64 } { ptr @.str.935, i64 2, i64 0 }, ptr %t319 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 5 - store { ptr, i64, i64 } { ptr @.str.936, i64 2, i64 0 }, ptr %t320 - %t321 = insertvalue { ptr, i64, i64 } undef, ptr %t314, 0 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 1 - %t323 = insertvalue { ptr, i64, i64 } %t322, i64 6, 2 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a324, i32 0, i32 1 - %t326 = load ptr, ptr %a1 - %t327 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t326) - store i64 -1, ptr %a328 - %t329 = load i64, ptr %t325 - %t330 = load ptr, ptr %a324 - store i64 0, ptr %a331 - br label %find.cond1643 -find.cond1643: - %t332 = load i64, ptr %a331 - %t333 = icmp slt i64 %t332, %t329 - br i1 %t333, label %find.body1644, label %find.end1647 -find.body1644: - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t330, i64 %t332 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } %t327, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %find.hit1645, label %find.next1646 -find.hit1645: - store i64 %t332, ptr %a328 - br label %find.end1647 -find.next1646: - %t340 = add i64 %t332, 1 - store i64 %t340, ptr %a331 - br label %find.cond1643 -find.end1647: - store { ptr, i64, i64 } %t327, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load i64, ptr %a328 - %t343 = icmp sge i64 %t342, 0 - br label %logic.from1648 -logic.from1648: - br i1 %t343, label %logic.rhs1649, label %logic.end1650 -logic.rhs1649: - %t344 = load ptr, ptr %a1 - %t345 = call i1 @finch.parser.sameLine(ptr %t344) - br label %logic.rend1651 -logic.rend1651: - br label %logic.end1650 -logic.end1650: - %t346 = phi i1 [ false, %logic.from1648 ], [ %t345, %logic.rend1651 ] - br i1 %t346, label %then1652, label %endif1654 -then1652: - %t347 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.937, i64 3, i64 0 }, ptr %a350 - %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) - %t352 = icmp eq i32 %t351, 0 - br label %logic.from1655 -logic.from1655: - br i1 %t352, label %logic.rhs1656, label %logic.end1657 -logic.rhs1656: - %t353 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t354 = load { ptr, i64, i64 }, ptr %t353 - store { ptr, i64, i64 } %t354, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.938, i64 6, i64 0 }, ptr %a356 - %t357 = call i32 @finch_str_eq(ptr %a355, ptr %a356) - %t358 = icmp eq i32 %t357, 0 - br label %logic.rend1658 -logic.rend1658: - br label %logic.end1657 -logic.end1657: - %t359 = phi i1 [ false, %logic.from1655 ], [ %t358, %logic.rend1658 ] - br label %logic.from1659 -logic.from1659: - br i1 %t359, label %logic.rhs1660, label %logic.end1661 -logic.rhs1660: - %t360 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t361 = load { ptr, i64, i64 }, ptr %t360 - store { ptr, i64, i64 } %t361, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.939, i64 5, i64 0 }, ptr %a363 - %t364 = call i32 @finch_str_eq(ptr %a362, ptr %a363) - %t365 = icmp eq i32 %t364, 0 - br label %logic.rend1662 -logic.rend1662: - br label %logic.end1661 -logic.end1661: - %t366 = phi i1 [ false, %logic.from1659 ], [ %t365, %logic.rend1662 ] - br i1 %t366, label %then1663, label %endif1665 -then1663: - %t367 = load ptr, ptr %a1 - %t368 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t367, %S.lexer.Token %t368, { ptr, i64, i64 } { ptr @.str.940, i64 66, i64 0 }) - br label %endif1665 -endif1665: - %t369 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.941, i64 6, i64 0 }, 0 - %t370 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t371 = load i64, ptr %t370 - %t372 = insertvalue %S.ast.Node %t369, i64 %t371, 11 - %t373 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t374 = load i64, ptr %t373 - %t375 = insertvalue %S.ast.Node %t372, i64 %t374, 12 - %t376 = load ptr, ptr %a1 - %t377 = icmp eq ptr %t376, null - br i1 %t377, label %panic1666, label %ok1667 -panic1666: - call void @finch_panic(ptr @.str.942, i64 584, ptr @.str.943) - unreachable -ok1667: - %t378 = getelementptr inbounds %S.parser.Parser, ptr %t376, i32 0, i32 3 - %t379 = load i64, ptr %t378 - %t380 = insertvalue %S.ast.Node %t375, i64 %t379, 13 - store %S.ast.Node %t380, ptr %a381 - %t382 = load ptr, ptr %a1 - %t383 = call %S.lexer.Token @finch.parser.next(ptr %t382) - %t384 = extractvalue %S.lexer.Token %t383, 0 - store { ptr, i64, i64 } %t384, ptr %a385 - call void @finch_str_copy(ptr %a386, ptr %a385) - %t387 = load { ptr, i64, i64 }, ptr %a386 - store %S.lexer.Token %t383, ptr %a388 - call void @finch.drop.S_lexer_Token(ptr %a388) - %t389 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 1 - %t390 = load { ptr, i64, i64 }, ptr %t389 - store { ptr, i64, i64 } %t387, ptr %t389 - store { ptr, i64, i64 } %t390, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i32 0, i32 1 - %t394 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t394, ptr %a395 - call void @finch.copy.S_ast_Node(ptr %a396, ptr %a395) - %t397 = load %S.ast.Node, ptr %a396 - %t398 = load i64, ptr %t393 - %t399 = add i64 %t398, 1 - call void @finch_arr_reserve(ptr %t392, i64 %t399, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t400 = load ptr, ptr %t392 - %t401 = getelementptr inbounds %S.ast.Node, ptr %t400, i64 %t398 - store %S.ast.Node %t397, ptr %t401 - store i64 %t399, ptr %t393 - %t402 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - %t404 = load ptr, ptr %a1 - %t405 = call %S.ast.Node @finch.parser.parseExpr(ptr %t404) - %t406 = load i64, ptr %t403 - %t407 = add i64 %t406, 1 - call void @finch_arr_reserve(ptr %t402, i64 %t407, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t408 = load ptr, ptr %t402 - %t409 = getelementptr inbounds %S.ast.Node, ptr %t408, i64 %t406 - store %S.ast.Node %t405, ptr %t409 - store i64 %t407, ptr %t403 - %t410 = load %S.ast.Node, ptr %a381 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t410 -endif1654: - %t411 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t412 = load { ptr, i64, i64 }, ptr %t411 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.944, i64 4, i64 0 }, ptr %a414 - %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) - %t416 = icmp eq i32 %t415, 0 - br label %logic.from1668 -logic.from1668: - br i1 %t416, label %logic.rhs1669, label %logic.end1670 -logic.rhs1669: - %t417 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t418 = load { ptr, i64, i64 }, ptr %t417 - store { ptr, i64, i64 } %t418, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.945, i64 6, i64 0 }, ptr %a420 - %t421 = call i32 @finch_str_eq(ptr %a419, ptr %a420) - %t422 = icmp eq i32 %t421, 0 - br label %logic.rend1671 -logic.rend1671: - br label %logic.end1670 -logic.end1670: - %t423 = phi i1 [ false, %logic.from1668 ], [ %t422, %logic.rend1671 ] - br label %logic.from1672 -logic.from1672: - br i1 %t423, label %logic.rhs1673, label %logic.end1674 -logic.rhs1673: - %t424 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.946, i64 3, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br label %logic.rend1675 -logic.rend1675: - br label %logic.end1674 -logic.end1674: - %t430 = phi i1 [ false, %logic.from1672 ], [ %t429, %logic.rend1675 ] - br label %logic.from1676 -logic.from1676: - br i1 %t430, label %logic.rhs1677, label %logic.end1678 -logic.rhs1677: - %t431 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t432 = load { ptr, i64, i64 }, ptr %t431 - store { ptr, i64, i64 } %t432, ptr %a433 - store { ptr, i64, i64 } { ptr @.str.947, i64 2, i64 0 }, ptr %a434 - %t435 = call i32 @finch_str_eq(ptr %a433, ptr %a434) - %t436 = icmp eq i32 %t435, 0 - br label %logic.rend1679 -logic.rend1679: - br label %logic.end1678 -logic.end1678: - %t437 = phi i1 [ false, %logic.from1676 ], [ %t436, %logic.rend1679 ] - br i1 %t437, label %then1680, label %endif1682 -then1680: - %t438 = load ptr, ptr %a1 - %t439 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t438, %S.lexer.Token %t439, { ptr, i64, i64 } { ptr @.str.948, i64 37, i64 0 }) - br label %endif1682 -endif1682: - %t440 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.949, i64 4, i64 0 }, 0 - %t441 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t442 = load i64, ptr %t441 - %t443 = insertvalue %S.ast.Node %t440, i64 %t442, 11 - %t444 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t445 = load i64, ptr %t444 - %t446 = insertvalue %S.ast.Node %t443, i64 %t445, 12 - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic1683, label %ok1684 -panic1683: - call void @finch_panic(ptr @.str.950, i64 593, ptr @.str.951) - unreachable -ok1684: - %t449 = getelementptr inbounds %S.parser.Parser, ptr %t447, i32 0, i32 3 - %t450 = load i64, ptr %t449 - %t451 = insertvalue %S.ast.Node %t446, i64 %t450, 13 - store %S.ast.Node %t451, ptr %a452 - %t453 = getelementptr inbounds %S.ast.Node, ptr %a452, i32 0, i32 9 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i32 0, i32 1 - %t455 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t455, ptr %a456 - call void @finch.copy.S_ast_Node(ptr %a457, ptr %a456) - %t458 = load %S.ast.Node, ptr %a457 - %t459 = load i64, ptr %t454 - %t460 = add i64 %t459, 1 - call void @finch_arr_reserve(ptr %t453, i64 %t460, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t461 = load ptr, ptr %t453 - %t462 = getelementptr inbounds %S.ast.Node, ptr %t461, i64 %t459 - store %S.ast.Node %t458, ptr %t462 - store i64 %t460, ptr %t454 - %t463 = load %S.ast.Node, ptr %a452 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t463 -} - -define internal %S.ast.Node @finch.parser.parseIf(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.952, 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.953, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.954, i64 4, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseExpr(ptr %t10) - %t12 = load i64, ptr %t9 - %t13 = add i64 %t12, 1 - call void @finch_arr_reserve(ptr %t8, i64 %t13, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t14 = load ptr, ptr %t8 - %t15 = getelementptr inbounds %S.ast.Node, ptr %t14, i64 %t12 - store %S.ast.Node %t11, ptr %t15 - store i64 %t13, ptr %t9 - %t16 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 - %t18 = load ptr, ptr %a1 - %t19 = call %S.ast.Node @finch.parser.parseBlock(ptr %t18) - %t20 = load i64, ptr %t17 - %t21 = add i64 %t20, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t21, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t22 = load ptr, ptr %t16 - %t23 = getelementptr inbounds %S.ast.Node, ptr %t22, i64 %t20 - store %S.ast.Node %t19, ptr %t23 - store i64 %t21, ptr %t17 - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.accept(ptr %t24, { ptr, i64, i64 } { ptr @.str.955, i64 4, i64 0 }) - br i1 %t25, label %then1685, label %endif1687 -then1685: - %t26 = load ptr, ptr %a1 - %t27 = call i1 @finch.parser.at(ptr %t26, { ptr, i64, i64 } { ptr @.str.956, i64 2, i64 0 }) - br i1 %t27, label %then1688, label %else1689 -then1688: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.parseIf(ptr %t30) - %t32 = load i64, ptr %t29 - %t33 = add i64 %t32, 1 - call void @finch_arr_reserve(ptr %t28, i64 %t33, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t34 = load ptr, ptr %t28 - %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 - store %S.ast.Node %t31, ptr %t35 - store i64 %t33, ptr %t29 - br label %endif1690 -else1689: - %t36 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load ptr, ptr %a1 - %t39 = call %S.ast.Node @finch.parser.parseBlock(ptr %t38) - %t40 = load i64, ptr %t37 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t36 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t37 - br label %endif1690 -endif1690: - br label %endif1687 -endif1687: - %t44 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t44 -} - -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.957, 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 %then1691, label %endif1693 -then1691: - ret i64 1 -endif1693: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.958, 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 %then1694, label %endif1696 -then1694: - ret i64 2 -endif1696: - %t12 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.959, 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.from1697 -logic.from1697: - br i1 %t16, label %logic.end1699, label %logic.rhs1698 -logic.rhs1698: - %t17 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.960, 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.rend1700 -logic.rend1700: - br label %logic.end1699 -logic.end1699: - %t22 = phi i1 [ true, %logic.from1697 ], [ %t21, %logic.rend1700 ] - br label %logic.from1701 -logic.from1701: - br i1 %t22, label %logic.end1703, label %logic.rhs1702 -logic.rhs1702: - %t23 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.961, 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.rend1704 -logic.rend1704: - br label %logic.end1703 -logic.end1703: - %t28 = phi i1 [ true, %logic.from1701 ], [ %t27, %logic.rend1704 ] - br label %logic.from1705 -logic.from1705: - br i1 %t28, label %logic.end1707, label %logic.rhs1706 -logic.rhs1706: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.962, 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.rend1708 -logic.rend1708: - br label %logic.end1707 -logic.end1707: - %t34 = phi i1 [ true, %logic.from1705 ], [ %t33, %logic.rend1708 ] - br label %logic.from1709 -logic.from1709: - br i1 %t34, label %logic.end1711, label %logic.rhs1710 -logic.rhs1710: - %t35 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.963, 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.rend1712 -logic.rend1712: - br label %logic.end1711 -logic.end1711: - %t40 = phi i1 [ true, %logic.from1709 ], [ %t39, %logic.rend1712 ] - br label %logic.from1713 -logic.from1713: - br i1 %t40, label %logic.end1715, label %logic.rhs1714 -logic.rhs1714: - %t41 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.964, 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.rend1716 -logic.rend1716: - br label %logic.end1715 -logic.end1715: - %t46 = phi i1 [ true, %logic.from1713 ], [ %t45, %logic.rend1716 ] - br i1 %t46, label %then1717, label %endif1719 -then1717: - ret i64 3 -endif1719: - %t47 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.965, 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.from1720 -logic.from1720: - br i1 %t51, label %logic.end1722, label %logic.rhs1721 -logic.rhs1721: - %t52 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.966, 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.rend1723 -logic.rend1723: - br label %logic.end1722 -logic.end1722: - %t57 = phi i1 [ true, %logic.from1720 ], [ %t56, %logic.rend1723 ] - br label %logic.from1724 -logic.from1724: - br i1 %t57, label %logic.end1726, label %logic.rhs1725 -logic.rhs1725: - %t58 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.967, 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.rend1727 -logic.rend1727: - br label %logic.end1726 -logic.end1726: - %t63 = phi i1 [ true, %logic.from1724 ], [ %t62, %logic.rend1727 ] - br label %logic.from1728 -logic.from1728: - br i1 %t63, label %logic.end1730, label %logic.rhs1729 -logic.rhs1729: - %t64 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.968, 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.rend1731 -logic.rend1731: - br label %logic.end1730 -logic.end1730: - %t69 = phi i1 [ true, %logic.from1728 ], [ %t68, %logic.rend1731 ] - br i1 %t69, label %then1732, label %endif1734 -then1732: - ret i64 4 -endif1734: - %t70 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.969, 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.from1735 -logic.from1735: - br i1 %t74, label %logic.end1737, label %logic.rhs1736 -logic.rhs1736: - %t75 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.970, 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.rend1738 -logic.rend1738: - br label %logic.end1737 -logic.end1737: - %t80 = phi i1 [ true, %logic.from1735 ], [ %t79, %logic.rend1738 ] - br label %logic.from1739 -logic.from1739: - br i1 %t80, label %logic.end1741, label %logic.rhs1740 -logic.rhs1740: - %t81 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.971, 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.rend1742 -logic.rend1742: - br label %logic.end1741 -logic.end1741: - %t86 = phi i1 [ true, %logic.from1739 ], [ %t85, %logic.rend1742 ] - br label %logic.from1743 -logic.from1743: - br i1 %t86, label %logic.end1745, label %logic.rhs1744 -logic.rhs1744: - %t87 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.972, 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.rend1746 -logic.rend1746: - br label %logic.end1745 -logic.end1745: - %t92 = phi i1 [ true, %logic.from1743 ], [ %t91, %logic.rend1746 ] - br label %logic.from1747 -logic.from1747: - br i1 %t92, label %logic.end1749, label %logic.rhs1748 -logic.rhs1748: - %t93 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.973, 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.rend1750 -logic.rend1750: - br label %logic.end1749 -logic.end1749: - %t98 = phi i1 [ true, %logic.from1747 ], [ %t97, %logic.rend1750 ] - br label %logic.from1751 -logic.from1751: - br i1 %t98, label %logic.end1753, label %logic.rhs1752 -logic.rhs1752: - %t99 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.974, 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.rend1754 -logic.rend1754: - br label %logic.end1753 -logic.end1753: - %t104 = phi i1 [ true, %logic.from1751 ], [ %t103, %logic.rend1754 ] - br i1 %t104, label %then1755, label %endif1757 -then1755: - ret i64 5 -endif1757: - 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 - %a15 = alloca %S.ast.Node, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a22 = alloca %S.ast.Node, align 16 - %a23 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1) - 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.from1758 -logic.from1758: - br i1 %t7, label %logic.end1760, label %logic.rhs1759 -logic.rhs1759: - %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.975, i64 2, i64 0 }) - %t10 = xor i1 %t9, true - br label %logic.rend1761 -logic.rend1761: - br label %logic.end1760 -logic.end1760: - %t11 = phi i1 [ true, %logic.from1758 ], [ %t10, %logic.rend1761 ] - br i1 %t11, label %then1762, label %endif1764 -then1762: - %t12 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t12 -endif1764: - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.node(ptr %t13, { ptr, i64, i64 } { ptr @.str.976, i64 2, i64 0 }) - store %S.ast.Node %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = call %S.lexer.Token @finch.parser.next(ptr %t16) - store %S.lexer.Token %t17, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - %t19 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t21, ptr %a22 - call void @finch.copy.S_ast_Node(ptr %a23, ptr %a22) - %t24 = load %S.ast.Node, ptr %a23 - %t25 = load i64, ptr %t20 - %t26 = add i64 %t25, 1 - call void @finch_arr_reserve(ptr %t19, i64 %t26, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t27 = load ptr, ptr %t19 - %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 %t25 - store %S.ast.Node %t24, ptr %t28 - store i64 %t26, ptr %t20 - %t29 = load ptr, ptr %a1 - %t30 = call i1 @finch.parser.at(ptr %t29, { ptr, i64, i64 } { ptr @.str.977, i64 1, i64 0 }) - br i1 %t30, label %then1765, label %else1766 -then1765: - %t31 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 6 - store i1 true, ptr %t31 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i32 0, i32 1 - %t34 = load ptr, ptr %a1 - %t35 = call %S.ast.Node @finch.parser.parseBlock(ptr %t34) - %t36 = load i64, ptr %t33 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t32, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t32 - %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 - store %S.ast.Node %t35, ptr %t39 - store i64 %t37, ptr %t33 - br label %endif1767 -else1766: - %t40 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseExpr(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - br label %endif1767 -endif1767: - %t48 = load %S.ast.Node, ptr %a15 - call void @finch.drop.S_ast_Node(ptr %a4) - ret %S.ast.Node %t48 -} - -define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a11 = alloca %S.ast.Node, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.ast.Node, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.lexer.Token, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a55 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load i64, ptr %a2 - %t4 = icmp sgt i64 %t3, 5 - br i1 %t4, label %then1768, label %endif1770 -then1768: - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) - ret %S.ast.Node %t6 -endif1770: - %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.cond1771 -while.cond1771: - %t12 = load ptr, ptr %a1 - %t13 = call i1 @finch.parser.sameLine(ptr %t12) - br label %logic.from1774 -logic.from1774: - br i1 %t13, label %logic.rhs1775, label %logic.end1776 -logic.rhs1775: - %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) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load i64, ptr %a2 - %t19 = icmp eq i64 %t16, %t18 - br label %logic.rend1777 -logic.rend1777: - br label %logic.end1776 -logic.end1776: - %t20 = phi i1 [ false, %logic.from1774 ], [ %t19, %logic.rend1777 ] - br i1 %t20, label %while.body1772, label %while.end1773 -while.body1772: - %t21 = load ptr, ptr %a1 - %t22 = call %S.ast.Node @finch.parser.node(ptr %t21, { ptr, i64, i64 } { ptr @.str.978, i64 6, i64 0 }) - store %S.ast.Node %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.next(ptr %t24) - %t26 = extractvalue %S.lexer.Token %t25, 0 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_copy(ptr %a28, ptr %a27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store %S.lexer.Token %t25, ptr %a30 - call void @finch.drop.S_lexer_Token(ptr %a30) - %t31 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t29, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 - %t36 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t36, ptr %a37 - call void @finch.copy.S_ast_Node(ptr %a38, ptr %a37) - %t39 = load %S.ast.Node, ptr %a38 - %t40 = load i64, ptr %t35 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t34, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t34 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a2 - %t48 = add i64 %t47, 1 - %t49 = call %S.ast.Node @finch.parser.parseBinary(ptr %t46, i64 %t48) - %t50 = load i64, ptr %t45 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t44 - %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 %t50 - store %S.ast.Node %t49, ptr %t53 - store i64 %t51, ptr %t45 - %t54 = load %S.ast.Node, ptr %a23 - store %S.ast.Node %t54, ptr %a55 - call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) - %t57 = load %S.ast.Node, ptr %a56 - %t58 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t57, ptr %a11 - store %S.ast.Node %t58, ptr %a59 - call void @finch.drop.S_ast_Node(ptr %a59) - call void @finch.drop.S_ast_Node(ptr %a23) - br label %while.cond1771 -while.end1773: - %t60 = load %S.ast.Node, ptr %a11 - ret %S.ast.Node %t60 -} - -define internal %S.ast.Node @finch.parser.parseUnary(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.ast.Node, align 16 - %a9 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.979, i64 3, i64 0 }) - br i1 %t3, label %then1778, label %endif1780 -then1778: - %t4 = load ptr, ptr %a1 - %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.980, 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) - store %S.lexer.Token %t8, ptr %a9 - call void @finch.drop.S_lexer_Token(ptr %a9) - %t10 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load ptr, ptr %a1 - %t13 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t12) - %t14 = load i64, ptr %t11 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %t10 - %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 - store %S.ast.Node %t13, ptr %t17 - store i64 %t15, ptr %t11 - %t18 = load %S.ast.Node, ptr %a6 - ret %S.ast.Node %t18 -endif1780: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.981, i64 1, i64 0 }) - br label %logic.from1781 -logic.from1781: - br i1 %t20, label %logic.end1783, label %logic.rhs1782 -logic.rhs1782: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.982, i64 1, i64 0 }) - br label %logic.rend1784 -logic.rend1784: - br label %logic.end1783 -logic.end1783: - %t23 = phi i1 [ true, %logic.from1781 ], [ %t22, %logic.rend1784 ] - br label %logic.from1785 -logic.from1785: - br i1 %t23, label %logic.end1787, label %logic.rhs1786 -logic.rhs1786: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }) - br label %logic.rend1788 -logic.rend1788: - br label %logic.end1787 -logic.end1787: - %t26 = phi i1 [ true, %logic.from1785 ], [ %t25, %logic.rend1788 ] - br i1 %t26, label %then1789, label %endif1791 -then1789: - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.node(ptr %t27, { ptr, i64, i64 } { ptr @.str.984, i64 5, i64 0 }) - store %S.ast.Node %t28, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = call %S.lexer.Token @finch.parser.next(ptr %t30) - %t32 = extractvalue %S.lexer.Token %t31, 0 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_copy(ptr %a34, ptr %a33) - %t35 = load { ptr, i64, i64 }, ptr %a34 - store %S.lexer.Token %t31, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - %t37 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t35, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseUnary(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - %t48 = load %S.ast.Node, ptr %a29 - ret %S.ast.Node %t48 -endif1791: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t49) - ret %S.ast.Node %t50 -} - -define internal void @finch.parser.parseArgs(ptr %p0, ptr %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca ptr, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a17 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.985, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.986, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1792, label %ok1793 -panic1792: - call void @finch_panic(ptr @.str.987, i64 686, ptr @.str.988) - unreachable -ok1793: - %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 2 - %t9 = load i64, ptr %t8 - %t10 = add i64 %t9, 1 - store i64 %t10, ptr %t8 - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.989, i64 1, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1794, label %endif1796 -then1794: - br label %while.cond1797 -while.cond1797: - %t14 = load ptr, ptr %a1 - %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.990, i64 1, i64 0 }) - %t16 = xor i1 %t15, true - br i1 %t16, label %while.body1798, label %while.end1799 -while.body1798: - store { ptr, i64, i64 } { ptr @.str.991, i64 0, i64 0 }, ptr %a17 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.992, i64 5, i64 0 }) - br label %logic.from1800 -logic.from1800: - br i1 %t19, label %logic.rhs1801, label %logic.end1802 -logic.rhs1801: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t20, i64 1) - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.993, i64 1, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - br label %logic.rend1803 -logic.rend1803: - br label %logic.end1802 -logic.end1802: - %t27 = phi i1 [ false, %logic.from1800 ], [ %t25, %logic.rend1803 ] - br i1 %t27, label %then1804, label %endif1806 -then1804: - %t28 = load ptr, ptr %a1 - %t29 = call %S.lexer.Token @finch.parser.next(ptr %t28) - %t30 = extractvalue %S.lexer.Token %t29, 1 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_copy(ptr %a32, ptr %a31) - %t33 = load { ptr, i64, i64 }, ptr %a32 - store %S.lexer.Token %t29, ptr %a34 - call void @finch.drop.S_lexer_Token(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t33, ptr %a17 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.next(ptr %t37) - store %S.lexer.Token %t38, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - br label %endif1806 -endif1806: - %t40 = load ptr, ptr %a2 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic1807, label %ok1808 -panic1807: - call void @finch_panic(ptr @.str.994, i64 694, ptr @.str.995) - unreachable -ok1808: - %t42 = getelementptr inbounds %S.ast.Node, ptr %t40, i32 0, i32 10 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - %t48 = load i64, ptr %t43 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t42 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t43 - %t52 = load ptr, ptr %a2 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic1809, label %ok1810 -panic1809: - call void @finch_panic(ptr @.str.996, i64 695, ptr @.str.997) - unreachable -ok1810: - %t54 = getelementptr inbounds %S.ast.Node, ptr %t52, i32 0, i32 9 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 - %t56 = load ptr, ptr %a1 - %t57 = call %S.ast.Node @finch.parser.parseExpr(ptr %t56) - %t58 = load i64, ptr %t55 - %t59 = add i64 %t58, 1 - call void @finch_arr_reserve(ptr %t54, i64 %t59, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t60 = load ptr, ptr %t54 - %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i64 %t58 - store %S.ast.Node %t57, ptr %t61 - store i64 %t59, ptr %t55 - %t62 = load ptr, ptr %a1 - %t63 = call i1 @finch.parser.accept(ptr %t62, { ptr, i64, i64 } { ptr @.str.998, i64 1, i64 0 }) - %t64 = xor i1 %t63, true - br i1 %t64, label %then1811, label %endif1813 -then1811: - call void @finch_str_drop(ptr %a17) - br label %while.end1799 -endif1813: - call void @finch_str_drop(ptr %a17) - br label %while.cond1797 -while.end1799: - br label %endif1796 -endif1796: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic1814, label %ok1815 -panic1814: - call void @finch_panic(ptr @.str.999, i64 701, ptr @.str.1000) - unreachable -ok1815: - %t67 = getelementptr inbounds %S.parser.Parser, ptr %t65, i32 0, i32 2 - %t68 = load i64, ptr %t67 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %t67 - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.1001, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1002, i64 3, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - 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 - %a14 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.ast.Node, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a40 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 - %a57 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a69 = alloca %S.ast.Node, align 16 - %a70 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.ast.Node, align 16 - %a94 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parsePrimary(ptr %t2) - store %S.ast.Node %t3, ptr %a4 - br label %while.cond1816 -while.cond1816: - %t5 = load ptr, ptr %a1 - %t6 = call i1 @finch.parser.sameLine(ptr %t5) - br i1 %t6, label %while.body1817, label %while.end1818 -while.body1817: - %t7 = load ptr, ptr %a1 - %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.1003, i64 1, i64 0 }) - br i1 %t8, label %then1819, label %else1820 -then1819: - %t9 = load ptr, ptr %a1 - %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.1004, 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) - store %S.lexer.Token %t13, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.expect(ptr %t15, { ptr, i64, i64 } { ptr @.str.1005, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.1006, i64 16, i64 0 }) - %t17 = extractvalue %S.lexer.Token %t16, 1 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store %S.lexer.Token %t16, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t20, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t27, ptr %a28 - call void @finch.copy.S_ast_Node(ptr %a29, ptr %a28) - %t30 = load %S.ast.Node, ptr %a29 - %t31 = load i64, ptr %t26 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t25 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 - store %S.ast.Node %t30, ptr %t34 - store i64 %t32, ptr %t26 - %t35 = load ptr, ptr %a1 - %t36 = call i1 @finch.parser.at(ptr %t35, { ptr, i64, i64 } { ptr @.str.1007, i64 1, i64 0 }) - br label %logic.from1822 -logic.from1822: - br i1 %t36, label %logic.rhs1823, label %logic.end1824 -logic.rhs1823: - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.cur(ptr %t37) - %t39 = extractvalue %S.lexer.Token %t38, 4 - store %S.lexer.Token %t38, ptr %a40 - call void @finch.drop.S_lexer_Token(ptr %a40) - %t41 = xor i1 %t39, true - br label %logic.rend1825 -logic.rend1825: - br label %logic.end1824 -logic.end1824: - %t42 = phi i1 [ false, %logic.from1822 ], [ %t41, %logic.rend1825 ] - br i1 %t42, label %then1826, label %endif1828 -then1826: - %t43 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.1008, i64 6, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t46, ptr %a11) - br label %endif1828 -endif1828: - %t47 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t47, ptr %a48 - call void @finch.copy.S_ast_Node(ptr %a49, ptr %a48) - %t50 = load %S.ast.Node, ptr %a49 - %t51 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t50, ptr %a4 - store %S.ast.Node %t51, ptr %a52 - call void @finch.drop.S_ast_Node(ptr %a52) - call void @finch.drop.S_ast_Node(ptr %a11) - br label %endif1821 -else1820: - %t53 = load ptr, ptr %a1 - %t54 = call i1 @finch.parser.at(ptr %t53, { ptr, i64, i64 } { ptr @.str.1009, i64 1, i64 0 }) - br i1 %t54, label %then1829, label %else1830 -then1829: - %t55 = load ptr, ptr %a1 - %t56 = call %S.ast.Node @finch.parser.node(ptr %t55, { ptr, i64, i64 } { ptr @.str.1010, i64 5, i64 0 }) - store %S.ast.Node %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = call %S.lexer.Token @finch.parser.next(ptr %t58) - store %S.lexer.Token %t59, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic1832, label %ok1833 -panic1832: - call void @finch_panic(ptr @.str.1011, i64 721, ptr @.str.1012) - unreachable -ok1833: - %t63 = getelementptr inbounds %S.parser.Parser, ptr %t61, i32 0, i32 2 - %t64 = load i64, ptr %t63 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %t63 - %t66 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 - %t68 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t68, ptr %a69 - call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) - %t71 = load %S.ast.Node, ptr %a70 - %t72 = load i64, ptr %t67 - %t73 = add i64 %t72, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t74 = load ptr, ptr %t66 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 - store %S.ast.Node %t71, ptr %t75 - store i64 %t73, ptr %t67 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic1834, label %ok1835 -panic1834: - call void @finch_panic(ptr @.str.1013, i64 724, ptr @.str.1014) - unreachable -ok1835: - %t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 2 - %t87 = load i64, ptr %t86 - %t88 = sub i64 %t87, 1 - store i64 %t88, ptr %t86 - %t89 = load ptr, ptr %a1 - %t90 = call %S.lexer.Token @finch.parser.expect(ptr %t89, { ptr, i64, i64 } { ptr @.str.1015, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1016, i64 3, i64 0 }) - store %S.lexer.Token %t90, ptr %a91 - call void @finch.drop.S_lexer_Token(ptr %a91) - %t92 = load %S.ast.Node, ptr %a57 - store %S.ast.Node %t92, ptr %a93 - call void @finch.copy.S_ast_Node(ptr %a94, ptr %a93) - %t95 = load %S.ast.Node, ptr %a94 - %t96 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t95, ptr %a4 - store %S.ast.Node %t96, ptr %a97 - call void @finch.drop.S_ast_Node(ptr %a97) - call void @finch.drop.S_ast_Node(ptr %a57) - br label %endif1831 -else1830: - %t98 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t98 -endif1831: - br label %endif1821 -endif1821: - br label %while.cond1816 -while.end1818: - %t99 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t99 -} - -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 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca %S.lexer.Token, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.lexer.Token, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.lexer.Token, align 16 - %a122 = alloca %S.ast.Node, align 16 - %a130 = alloca %S.lexer.Token, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.lexer.Token, align 16 - %a219 = alloca %S.lexer.Token, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.lexer.Token, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca %S.lexer.Token, align 16 - %a268 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.lexer.Token, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca %S.lexer.Token, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.lexer.Token @finch.parser.cur(ptr %t2) - store %S.lexer.Token %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.1017, 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.1018, 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.from1836 -logic.from1836: - br i1 %t18, label %logic.end1838, label %logic.rhs1837 -logic.rhs1837: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1019, 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.rend1839 -logic.rend1839: - br label %logic.end1838 -logic.end1838: - %t24 = phi i1 [ true, %logic.from1836 ], [ %t23, %logic.rend1839 ] - br label %logic.from1840 -logic.from1840: - br i1 %t24, label %logic.end1842, label %logic.rhs1841 -logic.rhs1841: - %t25 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1020, 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.rend1843 -logic.rend1843: - br label %logic.end1842 -logic.end1842: - %t30 = phi i1 [ true, %logic.from1840 ], [ %t29, %logic.rend1843 ] - br i1 %t30, label %then1844, label %endif1846 -then1844: - %t31 = load ptr, ptr %a1 - %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) - store %S.lexer.Token %t32, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a13 - %t35 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } %t34, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = load { ptr, i64, i64 }, ptr %t35 - store { ptr, i64, i64 } %t38, ptr %t35 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_copy(ptr %a45, ptr %a44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - %t47 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t46, ptr %t43 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t49 -endif1846: - %t50 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1021, i64 6, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1847, label %endif1849 -then1847: - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.next(ptr %t55) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } { ptr @.str.1022, i64 3, i64 0 }, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t62, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t66, ptr %t63 - store { ptr, i64, i64 } %t67, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t69 -endif1849: - %t70 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1023, i64 4, i64 0 }, ptr %a72 - %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) - %t74 = icmp ne i32 %t73, 0 - br label %logic.from1850 -logic.from1850: - br i1 %t74, label %logic.end1852, label %logic.rhs1851 -logic.rhs1851: - %t75 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1024, i64 5, i64 0 }, ptr %a77 - %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) - %t79 = icmp ne i32 %t78, 0 - br label %logic.rend1853 -logic.rend1853: - br label %logic.end1852 -logic.end1852: - %t80 = phi i1 [ true, %logic.from1850 ], [ %t79, %logic.rend1853 ] - br i1 %t80, label %then1854, label %endif1856 -then1854: - %t81 = load ptr, ptr %a1 - %t82 = call %S.lexer.Token @finch.parser.next(ptr %t81) - store %S.lexer.Token %t82, ptr %a83 - call void @finch.drop.S_lexer_Token(ptr %a83) - %t84 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } { ptr @.str.1025, i64 4, i64 0 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a13 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t94 -endif1856: - %t95 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.1026, i64 4, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then1857, label %endif1859 -then1857: - %t100 = load ptr, ptr %a1 - %t101 = call %S.lexer.Token @finch.parser.next(ptr %t100) - store %S.lexer.Token %t101, ptr %a102 - call void @finch.drop.S_lexer_Token(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } { ptr @.str.1027, i64 4, i64 0 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t106 -endif1859: - %t107 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1028, i64 1, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then1860, label %endif1862 -then1860: - %t112 = load ptr, ptr %a1 - %t113 = call %S.lexer.Token @finch.parser.next(ptr %t112) - store %S.lexer.Token %t113, ptr %a114 - call void @finch.drop.S_lexer_Token(ptr %a114) - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic1863, label %ok1864 -panic1863: - call void @finch_panic(ptr @.str.1029, i64 763, ptr @.str.1030) - unreachable -ok1864: - %t117 = getelementptr inbounds %S.parser.Parser, ptr %t115, i32 0, i32 2 - %t118 = load i64, ptr %t117 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %t117 - %t120 = load ptr, ptr %a1 - %t121 = call %S.ast.Node @finch.parser.parseExpr(ptr %t120) - store %S.ast.Node %t121, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic1865, label %ok1866 -panic1865: - call void @finch_panic(ptr @.str.1031, i64 765, ptr @.str.1032) - unreachable -ok1866: - %t125 = getelementptr inbounds %S.parser.Parser, ptr %t123, i32 0, i32 2 - %t126 = load i64, ptr %t125 - %t127 = sub i64 %t126, 1 - store i64 %t127, ptr %t125 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.expect(ptr %t128, { ptr, i64, i64 } { ptr @.str.1033, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1034, i64 3, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - %t131 = load %S.ast.Node, ptr %a122 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t131 -endif1862: - %t132 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1035, i64 5, i64 0 }, ptr %a134 - %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) - %t136 = icmp ne i32 %t135, 0 - br i1 %t136, label %then1867, label %endif1869 -then1867: - %t137 = load ptr, ptr %a1 - %t138 = call %S.ast.Node @finch.parser.parseMatch(ptr %t137, i1 true) - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t138 -endif1869: - %t139 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1036, i64 1, i64 0 }, ptr %a141 - %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) - %t143 = icmp ne i32 %t142, 0 - br i1 %t143, label %then1870, label %endif1872 -then1870: - %t144 = load ptr, ptr %a1 - %t145 = call %S.lexer.Token @finch.parser.next(ptr %t144) - store %S.lexer.Token %t145, ptr %a146 - call void @finch.drop.S_lexer_Token(ptr %a146) - %t147 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.1037, i64 5, i64 0 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic1873, label %ok1874 -panic1873: - call void @finch_panic(ptr @.str.1038, i64 775, ptr @.str.1039) - unreachable -ok1874: - %t152 = getelementptr inbounds %S.parser.Parser, ptr %t150, i32 0, i32 2 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - store i64 %t154, ptr %t152 - %t155 = load ptr, ptr %a1 - %t156 = call i1 @finch.parser.at(ptr %t155, { ptr, i64, i64 } { ptr @.str.1040, i64 1, i64 0 }) - br label %logic.from1875 -logic.from1875: - br i1 %t156, label %logic.rhs1876, label %logic.end1877 -logic.rhs1876: - %t157 = load ptr, ptr %a1 - %t158 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t157, i64 1) - store { ptr, i64, i64 } %t158, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.1041, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - br label %logic.rend1878 -logic.rend1878: - br label %logic.end1877 -logic.end1877: - %t164 = phi i1 [ false, %logic.from1875 ], [ %t162, %logic.rend1878 ] - br i1 %t164, label %then1879, label %endif1881 -then1879: - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } { ptr @.str.1042, i64 3, i64 0 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1881 -endif1881: - br label %while.cond1882 -while.cond1882: - %t171 = load ptr, ptr %a1 - %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1043, i64 1, i64 0 }) - %t173 = xor i1 %t172, true - br i1 %t173, label %while.body1883, label %while.end1884 -while.body1883: - %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 - %t176 = load ptr, ptr %a1 - %t177 = call %S.ast.Node @finch.parser.parseExpr(ptr %t176) - %t178 = load i64, ptr %t175 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t174, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t174 - %t181 = getelementptr inbounds %S.ast.Node, ptr %t180, i64 %t178 - store %S.ast.Node %t177, ptr %t181 - store i64 %t179, ptr %t175 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = icmp eq i64 %t184, 1 - br label %logic.from1885 -logic.from1885: - br i1 %t185, label %logic.rhs1886, label %logic.end1887 -logic.rhs1886: - %t186 = load ptr, ptr %a1 - %t187 = call i1 @finch.parser.at(ptr %t186, { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }) - br label %logic.rend1888 -logic.rend1888: - br label %logic.end1887 -logic.end1887: - %t188 = phi i1 [ false, %logic.from1885 ], [ %t187, %logic.rend1888 ] - br i1 %t188, label %then1889, label %endif1891 -then1889: - %t189 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.1045, i64 3, i64 0 }, ptr %t189 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - br label %endif1891 -endif1891: - %t192 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.1046, i64 3, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then1892, label %endif1894 -then1892: - %t198 = load ptr, ptr %a1 - %t199 = call %S.lexer.Token @finch.parser.expect(ptr %t198, { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1048, i64 41, i64 0 }) - store %S.lexer.Token %t199, ptr %a200 - call void @finch.drop.S_lexer_Token(ptr %a200) - %t201 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load ptr, ptr %a1 - %t204 = call %S.ast.Node @finch.parser.parseExpr(ptr %t203) - %t205 = load i64, ptr %t202 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t201, i64 %t206, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t201 - %t208 = getelementptr inbounds %S.ast.Node, ptr %t207, i64 %t205 - store %S.ast.Node %t204, ptr %t208 - store i64 %t206, ptr %t202 - br label %endif1894 -endif1894: - %t209 = load ptr, ptr %a1 - %t210 = call i1 @finch.parser.accept(ptr %t209, { ptr, i64, i64 } { ptr @.str.1049, i64 1, i64 0 }) - %t211 = xor i1 %t210, true - br i1 %t211, label %then1895, label %endif1897 -then1895: - br label %while.end1884 -endif1897: - br label %while.cond1882 -while.end1884: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic1898, label %ok1899 -panic1898: - call void @finch_panic(ptr @.str.1050, i64 793, ptr @.str.1051) - unreachable -ok1899: - %t214 = getelementptr inbounds %S.parser.Parser, ptr %t212, i32 0, i32 2 - %t215 = load i64, ptr %t214 - %t216 = sub i64 %t215, 1 - store i64 %t216, ptr %t214 - %t217 = load ptr, ptr %a1 - %t218 = call %S.lexer.Token @finch.parser.expect(ptr %t217, { ptr, i64, i64 } { ptr @.str.1052, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1053, i64 3, i64 0 }) - store %S.lexer.Token %t218, ptr %a219 - call void @finch.drop.S_lexer_Token(ptr %a219) - %t220 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t220 -endif1872: - %t221 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t221, ptr %a222 - store { ptr, i64, i64 } { ptr @.str.1054, i64 5, i64 0 }, ptr %a223 - %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) - %t225 = icmp ne i32 %t224, 0 - br i1 %t225, label %then1900, label %endif1902 -then1900: - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.next(ptr %t226) - store %S.lexer.Token %t227, ptr %a228 - call void @finch.drop.S_lexer_Token(ptr %a228) - %t229 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t230 = load { ptr, i64, i64 }, ptr %t229 - %t231 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_copy(ptr %a233, ptr %a232) - %t234 = load { ptr, i64, i64 }, ptr %a233 - %t235 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t234, ptr %t231 - store { ptr, i64, i64 } %t235, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load ptr, ptr %a1 - %t238 = call i1 @finch.parser.at(ptr %t237, { ptr, i64, i64 } { ptr @.str.1055, i64 1, i64 0 }) - br label %logic.from1903 -logic.from1903: - br i1 %t238, label %logic.rhs1904, label %logic.end1905 -logic.rhs1904: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic1906, label %ok1907 -panic1906: - call void @finch_panic(ptr @.str.1056, i64 800, ptr @.str.1057) - unreachable -ok1907: - %t241 = getelementptr inbounds %S.parser.Parser, ptr %t239, i32 0, i32 0 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic1908, label %ok1909 -panic1908: - call void @finch_panic(ptr @.str.1058, i64 800, ptr @.str.1059) - unreachable -ok1909: - %t244 = getelementptr inbounds %S.parser.Parser, ptr %t242, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = sub i64 %t245, 1 - %t247 = load { ptr, i64, i64 }, ptr %t241 - %t248 = extractvalue { ptr, i64, i64 } %t247, 1 - %t249 = icmp uge i64 %t246, %t248 - br i1 %t249, label %range1910, label %inrange1911 -range1910: - call void @finch_panic_index(ptr @.str.1060, i64 800, i64 %t246, i64 %t248) - unreachable -inrange1911: - %t250 = extractvalue { ptr, i64, i64 } %t247, 0 - %t251 = getelementptr inbounds %S.lexer.Token, ptr %t250, i64 %t246 - %t252 = getelementptr inbounds %S.lexer.Token, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.1061, i64 5, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br label %logic.rend1912 -logic.rend1912: - br label %logic.end1905 -logic.end1905: - %t258 = phi i1 [ false, %logic.from1903 ], [ %t257, %logic.rend1912 ] - br label %logic.from1913 -logic.from1913: - br i1 %t258, label %logic.rhs1914, label %logic.end1915 -logic.rhs1914: - %t259 = load ptr, ptr %a1 - %t260 = call i1 @finch.parser.genericCallAheadFrom(ptr %t259) - br label %logic.rend1916 -logic.rend1916: - br label %logic.end1915 -logic.end1915: - %t261 = phi i1 [ false, %logic.from1913 ], [ %t260, %logic.rend1916 ] - br i1 %t261, label %then1917, label %endif1919 -then1917: - %t262 = load ptr, ptr %a1 - %t263 = call %S.lexer.Token @finch.parser.next(ptr %t262) - store %S.lexer.Token %t263, ptr %a264 - call void @finch.drop.S_lexer_Token(ptr %a264) - %t265 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1062, i64 5, i64 0 }, 0 - %t266 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t267 = load %S.ast.Type, ptr %t266 - store %S.ast.Type %t265, ptr %t266 - store %S.ast.Type %t267, ptr %a268 - call void @finch.drop.S_ast_Type(ptr %a268) - br label %while.cond1920 -while.cond1920: - br label %while.body1921 -while.body1921: - %t269 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t270 = getelementptr inbounds %S.ast.Type, ptr %t269, i32 0, i32 1 - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i32 0, i32 1 - %t272 = load ptr, ptr %a1 - %t273 = call %S.ast.Type @finch.parser.parseType(ptr %t272) - %t274 = load i64, ptr %t271 - %t275 = add i64 %t274, 1 - call void @finch_arr_reserve(ptr %t270, i64 %t275, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t276 = load ptr, ptr %t270 - %t277 = getelementptr inbounds %S.ast.Type, ptr %t276, i64 %t274 - store %S.ast.Type %t273, ptr %t277 - store i64 %t275, ptr %t271 - %t278 = load ptr, ptr %a1 - %t279 = call i1 @finch.parser.accept(ptr %t278, { ptr, i64, i64 } { ptr @.str.1063, i64 1, i64 0 }) - %t280 = xor i1 %t279, true - br i1 %t280, label %then1923, label %endif1925 -then1923: - br label %while.end1922 -endif1925: - br label %while.cond1920 -while.end1922: - %t281 = load ptr, ptr %a1 - %t282 = call %S.lexer.Token @finch.parser.expect(ptr %t281, { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1065, i64 28, i64 0 }) - store %S.lexer.Token %t282, ptr %a283 - call void @finch.drop.S_lexer_Token(ptr %a283) - %t284 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.1066, i64 4, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t287, ptr %a7) - %t288 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t288 -endif1919: - %t289 = load ptr, ptr %a1 - %t290 = call i1 @finch.parser.at(ptr %t289, { ptr, i64, i64 } { ptr @.str.1067, i64 1, i64 0 }) - br label %logic.from1926 -logic.from1926: - br i1 %t290, label %logic.rhs1927, label %logic.end1928 -logic.rhs1927: - %t291 = load ptr, ptr %a1 - %t292 = call %S.lexer.Token @finch.parser.cur(ptr %t291) - %t293 = extractvalue %S.lexer.Token %t292, 4 - store %S.lexer.Token %t292, ptr %a294 - call void @finch.drop.S_lexer_Token(ptr %a294) - %t295 = xor i1 %t293, true - br label %logic.rend1929 -logic.rend1929: - br label %logic.end1928 -logic.end1928: - %t296 = phi i1 [ false, %logic.from1926 ], [ %t295, %logic.rend1929 ] - br i1 %t296, label %then1930, label %endif1932 -then1930: - %t297 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } { ptr @.str.1068, i64 4, i64 0 }, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t300, ptr %a7) - %t301 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t301 -endif1932: - %t302 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store { ptr, i64, i64 } { ptr @.str.1069, i64 3, i64 0 }, ptr %t302 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t305 -endif1902: - %t306 = load ptr, ptr %a1 - %t307 = load %S.lexer.Token, ptr %a4 - %t308 = load %S.lexer.Token, ptr %a4 - %t309 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t308) - store { ptr, i64, i64 } { ptr @.str.1070, i64 11, i64 0 }, ptr %a311 - store { ptr, i64, i64 } %t309, ptr %a312 - call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) - store { ptr, i64, i64 } %t309, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a310 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.1071, i64 19, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - call void @finch.parser.fail(ptr %t306, %S.lexer.Token %t307, { ptr, i64, i64 } %t319) - store { ptr, i64, i64 } %t319, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t321 -} - -define internal void @finch.copy.arr_S_lexer_Token(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond1933 -n.cond1933: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body1934, label %n.end1935 -n.body1934: - %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.cond1933 -n.end1935: - ret void -} - -define internal void @finch.drop.S_parser_Parser(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lexer_Token(ptr %t1) - %t2 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) { -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) - call void @finch.drop.S_parser_Parser(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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1073, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1074, 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.1076, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1077, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1079, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1080, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t18 -} - -define internal void @finch.gen.noteRef(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4, { ptr, i64, i64 } %p5, i64 %p6, i64 %p7) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic1936, label %ok1937 -panic1936: - call void @finch_panic(ptr @.str.1081, i64 232, ptr @.str.1082) - unreachable -ok1937: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - %t13 = xor i1 %t12, true - br i1 %t13, label %then1938, label %endif1940 -then1938: - ret void -endif1940: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic1941, label %ok1942 -panic1941: - call void @finch_panic(ptr @.str.1083, i64 235, ptr @.str.1084) - unreachable -ok1942: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 29 - %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 %panic1943, label %ok1944 -panic1943: - call void @finch_panic(ptr @.str.1086, i64 235, ptr @.str.1087) - unreachable -ok1944: - %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 %range1945, label %inrange1946 -range1945: - call void @finch_panic_index(ptr @.str.1088, i64 235, i64 %t22, i64 %t24) - unreachable -inrange1946: - %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.1085, 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.1089, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1090, i64 1, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a54, i64 %t53) - %t55 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1091, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a68, i64 %t67) - %t69 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.1092, i64 1, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.1093, i64 1, i64 0 }, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a93, i64 %t92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t91, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1094, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t105, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1095, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a5 - %t121 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t120) - store { ptr, i64, i64 } %t119, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t119, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - %t128 = load i64, ptr %t17 - %t129 = add i64 %t128, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t129, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t130 = load ptr, ptr %t16 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i64 %t128 - store { ptr, i64, i64 } %t127, ptr %t131 - store i64 %t129, ptr %t17 - ret void -} - -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %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 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - store %S.gen.FnSig %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond1947 -for.cond1947: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body1948, label %for.end1950 -for.body1948: - %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 %range1951, label %inrange1952 -range1951: - call void @finch_panic_index(ptr @.str.1096, i64 242, i64 %t11, i64 %t13) - unreachable -inrange1952: - %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.1097, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 - %t25 = load i64, ptr %a6 - %t26 = load { ptr, i64, i64 }, ptr %t24 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 %t25, %t27 - br i1 %t28, label %range1953, label %inrange1954 -range1953: - call void @finch_panic_index(ptr @.str.1098, i64 242, i64 %t25, i64 %t27) - unreachable -inrange1954: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 - %t31 = load { ptr, i64, i64 }, ptr %t30 - store { ptr, i64, i64 } %t23, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t23, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = load i64, ptr %t9 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t38, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %a2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t37 - store { ptr, i64, i64 } %t36, ptr %t40 - store i64 %t38, ptr %t9 - br label %for.step1949 -for.step1949: - %t41 = load i64, ptr %a6 - %t42 = add i64 %t41, 1 - store i64 %t42, ptr %a6 - br label %for.cond1947 -for.end1950: - %t43 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t47, ptr %a48 - %t49 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 - %t51 = load i64, ptr %t50 - %t52 = icmp sgt i64 %t51, 0 - br i1 %t52, label %then1955, label %endif1957 -then1955: - %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1099, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a55 - %t59 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t65, ptr %a48 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif1957 -endif1957: - %t68 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.1100, i64 3, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1101, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1102, i64 2, i64 0 }, ptr %a79 - call void @finch_str_join(ptr %a80, ptr %a2, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t77, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t77, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.1103, i64 1, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 - %t95 = load i1, ptr %t94 - br i1 %t95, label %then1958, label %else1959 -then1958: - %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t97 = getelementptr inbounds %S.ast.Type, ptr %t96, i32 0, i32 0 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.1104, i64 4, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then1961, label %else1962 -then1961: - %t103 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1105, i64 5, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a104 - %t108 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t107, ptr %a93 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_drop(ptr %a109) - br label %endif1963 -else1962: - %t110 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.1106, i64 4, 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.FnSig, ptr %a1, i32 0, i32 12 - %t116 = load %S.ast.Type, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t116) - store { ptr, i64, i64 } %t114, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t114, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.1107, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t128, ptr %a93 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - br label %endif1963 -endif1963: - br label %endif1960 -else1959: - %t131 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.1108, i64 4, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp eq i32 %t136, 0 - br i1 %t137, label %then1964, label %endif1966 -then1964: - %t138 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1109, i64 4, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a139 - %t143 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t144 = load %S.ast.Type, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t144) - store { ptr, i64, i64 } %t142, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t142, ptr %a149 - call void @finch_str_drop(ptr %a149) - store { ptr, i64, i64 } %t145, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a146 - %t152 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t151, ptr %a93 - store { ptr, i64, i64 } %t152, ptr %a153 - call void @finch_str_drop(ptr %a153) - br label %endif1966 -endif1966: - br label %endif1960 -endif1960: - %t154 = load { ptr, i64, i64 }, ptr %a93 - call void @finch_str_drop(ptr %a48) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t154 -} - -define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1967, label %ok1968 -panic1967: - call void @finch_panic(ptr @.str.1110, i64 263, ptr @.str.1111) - unreachable -ok1968: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then1969, label %endif1971 -then1969: - ret void -endif1971: - %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.1112, 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 %then1972, label %endif1974 -then1972: - %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 %endif1974 -endif1974: - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic1975, label %ok1976 -panic1975: - call void @finch_panic(ptr @.str.1113, i64 270, ptr @.str.1114) - unreachable -ok1976: - %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 %range1977, label %inrange1978 -range1977: - call void @finch_panic_index(ptr @.str.1115, i64 270, i64 %t25, i64 %t27) - unreachable -inrange1978: - %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 %range1979, label %inrange1980 -range1979: - call void @finch_panic_index(ptr @.str.1116, i64 270, i64 %t33, i64 %t35) - unreachable -inrange1980: - %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.from1981 -logic.from1981: - br i1 %t53, label %logic.rhs1982, label %logic.end1983 -logic.rhs1982: - %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.rend1984 -logic.rend1984: - br label %logic.end1983 -logic.end1983: - %t58 = phi i1 [ false, %logic.from1981 ], [ %t57, %logic.rend1984 ] - br i1 %t58, label %then1985, label %endif1987 -then1985: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_copy(ptr %a62, ptr %a61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - %t64 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t63, ptr %a49 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif1987 -endif1987: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a2 - %t68 = load i64, ptr %a11 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load %S.gen.FnSig, ptr %a3 - %t72 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t71) - store { ptr, i64, i64 } { ptr @.str.1117, i64 9, i64 0 }, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1118, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic1988, label %ok1989 -panic1988: - call void @finch_panic(ptr @.str.1119, i64 275, ptr @.str.1120) - unreachable -ok1989: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 - %t87 = load i64, ptr %t86 - %t88 = load { ptr, i64, i64 }, ptr %t85 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range1990, label %inrange1991 -range1990: - call void @finch_panic_index(ptr @.str.1121, i64 275, i64 %t87, i64 %t89) - unreachable -inrange1991: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t87 - %t93 = load { ptr, i64, i64 }, ptr %t92 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 - %t95 = load i64, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 - %t97 = load i64, ptr %t96 - %t98 = add i64 %t97, 3 - call void @finch.gen.noteRef(ptr %t66, %S.ast.Node %t67, i64 %t68, i64 %t70, { ptr, i64, i64 } %t82, { ptr, i64, i64 } %t93, i64 %t95, i64 %t98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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.drop.arr_bool(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_FnSig(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t7) - %t8 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 11 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 12 - call void @finch.drop.S_ast_Type(ptr %t9) - %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 13 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - %t11 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 14 - call void @finch.drop.arr_str(ptr %t11) - %t12 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_bool(ptr %t12) - ret void -} - -define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { -entry: - - %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.drop.S_gen_Template(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { -entry: - - 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.drop.arr_int(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_StructDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t7) - %t8 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_str(ptr %t9) - %t10 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - ret void -} - -define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a257 = alloca %S.gen.Template, align 16 - %a258 = alloca %S.gen.Template, align 16 - %a260 = alloca %S.gen.Template, align 16 - %a282 = alloca %S.ast.Node, align 16 - %a283 = alloca %S.ast.Node, align 16 - %a285 = alloca %S.ast.Node, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca i64, align 16 - %a448 = alloca %S.gen.StructDef, align 16 - %a449 = alloca %S.gen.StructDef, align 16 - %a451 = alloca %S.gen.StructDef, align 16 - %a478 = alloca %S.ast.Node, align 16 - %a479 = alloca %S.ast.Node, align 16 - %a481 = alloca %S.ast.Node, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca i64, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca i64, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca %S.ast.Node, align 16 - %a660 = alloca %S.ast.Node, align 16 - %a662 = alloca %S.ast.Node, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca i64, align 16 - %a674 = alloca %S.ast.Node, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a778 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond1992 -each.cond1992: - %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.body1993, label %each.end1995 -each.body1993: - %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 %panic1996, label %ok1997 -panic1996: - call void @finch_panic(ptr @.str.1122, i64 281, ptr @.str.1123) - unreachable -ok1997: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 29 - %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.1124, 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.step1994 -each.step1994: - %t25 = load i64, ptr %a3 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a3 - br label %each.cond1992 -each.end1995: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1998, label %ok1999 -panic1998: - call void @finch_panic(ptr @.str.1125, i64 283, ptr @.str.1126) - unreachable -ok1999: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 15 - store i64 0, ptr %a30 - br label %each.cond2000 -each.cond2000: - %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.body2001, label %each.end2003 -each.body2001: - %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 %panic2004, label %ok2005 -panic2004: - call void @finch_panic(ptr @.str.1127, i64 284, ptr @.str.1128) - unreachable -ok2005: - %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 %range2006, label %inrange2007 -range2006: - call void @finch_panic_index(ptr @.str.1129, i64 284, i64 %t46, i64 %t48) - unreachable -inrange2007: - %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 %range2008, label %inrange2009 -range2008: - call void @finch_panic_index(ptr @.str.1130, i64 284, i64 %t54, i64 %t56) - unreachable -inrange2009: - %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 %then2010, label %endif2012 -then2010: - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -endif2012: - 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.cond2013 -for.cond2013: - %t74 = load i64, ptr %a73 - %t75 = icmp slt i64 %t74, %t72 - br i1 %t75, label %for.body2014, label %for.end2016 -for.body2014: - %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 %range2017, label %inrange2018 -range2017: - call void @finch_panic_index(ptr @.str.1131, i64 290, i64 %t78, i64 %t80) - unreachable -inrange2018: - %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.1132, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 - %t92 = load i64, ptr %a73 - %t93 = load { ptr, i64, i64 }, ptr %t91 - %t94 = extractvalue { ptr, i64, i64 } %t93, 1 - %t95 = icmp uge i64 %t92, %t94 - br i1 %t95, label %range2019, label %inrange2020 -range2019: - call void @finch_panic_index(ptr @.str.1133, i64 290, i64 %t92, i64 %t94) - unreachable -inrange2020: - %t96 = extractvalue { ptr, i64, i64 } %t93, 0 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t92 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t90, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t90, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = load i64, ptr %t76 - %t105 = add i64 %t104, 1 - call void @finch_arr_reserve(ptr %a69, i64 %t105, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t106 = load ptr, ptr %a69 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 %t104 - store { ptr, i64, i64 } %t103, ptr %t107 - store i64 %t105, ptr %t76 - br label %for.step2015 -for.step2015: - %t108 = load i64, ptr %a73 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a73 - br label %for.cond2013 -for.end2016: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic2021, label %ok2022 -panic2021: - call void @finch_panic(ptr @.str.1134, i64 292, ptr @.str.1135) - unreachable -ok2022: - %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 29 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.1136, i64 3, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1137, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t124, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t124, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1138, i64 1, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 - %t138 = load { ptr, i64, i64 }, ptr %t137 - store { ptr, i64, i64 } %t136, ptr %a140 - store { ptr, i64, i64 } %t138, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t136, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.1139, i64 1, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = load ptr, ptr %a1 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic2023, label %ok2024 -panic2023: - call void @finch_panic(ptr @.str.1140, i64 292, ptr @.str.1141) - unreachable -ok2024: - %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 1 - %t152 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 - %t153 = load i64, ptr %t152 - %t154 = load { ptr, i64, i64 }, ptr %t151 - %t155 = extractvalue { ptr, i64, i64 } %t154, 1 - %t156 = icmp uge i64 %t153, %t155 - br i1 %t156, label %range2025, label %inrange2026 -range2025: - call void @finch_panic_index(ptr @.str.1142, i64 292, i64 %t153, i64 %t155) - unreachable -inrange2026: - %t157 = extractvalue { ptr, i64, i64 } %t154, 0 - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i64 %t153 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t148, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t148, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.1143, i64 1, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.1144, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 - %t186 = load i64, ptr %t185 - call void @finch_str_from_int(ptr %a187, i64 %t186) - %t188 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t184, ptr %a192 - call void @finch_str_drop(ptr %a192) - store { ptr, i64, i64 } %t188, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.1145, i64 1, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 - %t201 = load i64, ptr %t200 - call void @finch_str_from_int(ptr %a202, i64 %t201) - %t203 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t199, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t199, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } %t203, ptr %a208 - call void @finch_str_drop(ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t209, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.1146, i64 1, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = load %S.gen.FnSig, ptr %a41 - %t216 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t215) - %t217 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - store { ptr, i64, i64 } %t214, ptr %a220 - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t214, ptr %a222 - call void @finch_str_drop(ptr %a222) - store { ptr, i64, i64 } %t217, ptr %a223 - call void @finch_str_drop(ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.1147, i64 1, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1148, i64 1, i64 0 }, ptr %a231 - call void @finch_str_join(ptr %a232, ptr %a69, ptr %a231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t229, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t229, ptr %a237 - call void @finch_str_drop(ptr %a237) - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a234 - %t240 = load i64, ptr %t113 - %t241 = add i64 %t240, 1 - call void @finch_arr_reserve(ptr %t112, i64 %t241, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t242 = load ptr, ptr %t112 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 %t240 - store { ptr, i64, i64 } %t239, ptr %t243 - store i64 %t241, ptr %t113 - call void @finch.drop.arr_str(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -each.step2002: - %t244 = load i64, ptr %a30 - %t245 = add i64 %t244, 1 - store i64 %t245, ptr %a30 - br label %each.cond2000 -each.end2003: - %t246 = load ptr, ptr %a1 - %t247 = icmp eq ptr %t246, null - br i1 %t247, label %panic2027, label %ok2028 -panic2027: - call void @finch_panic(ptr @.str.1149, i64 294, ptr @.str.1150) - unreachable -ok2028: - %t248 = getelementptr inbounds %S.gen.Gen, ptr %t246, i32 0, i32 17 - store i64 0, ptr %a249 - br label %each.cond2029 -each.cond2029: - %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t251 = load i64, ptr %t250 - %t252 = load i64, ptr %a249 - %t253 = icmp slt i64 %t252, %t251 - br i1 %t253, label %each.body2030, label %each.end2032 -each.body2030: - %t254 = load ptr, ptr %t248 - %t255 = getelementptr inbounds %S.gen.Template, ptr %t254, i64 %t252 - %t256 = load %S.gen.Template, ptr %t255 - store %S.gen.Template %t256, ptr %a257 - call void @finch.copy.S_gen_Template(ptr %a258, ptr %a257) - %t259 = load %S.gen.Template, ptr %a258 - store %S.gen.Template %t259, ptr %a260 - %t261 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 6 - %t262 = load i1, ptr %t261 - br i1 %t262, label %then2033, label %endif2035 -then2033: - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -endif2035: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic2036, label %ok2037 -panic2036: - call void @finch_panic(ptr @.str.1151, i64 298, ptr @.str.1152) - unreachable -ok2037: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 0 - %t266 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 4 - %t267 = load i64, ptr %t266 - %t268 = load { ptr, i64, i64 }, ptr %t265 - %t269 = extractvalue { ptr, i64, i64 } %t268, 1 - %t270 = icmp uge i64 %t267, %t269 - br i1 %t270, label %range2038, label %inrange2039 -range2038: - call void @finch_panic_index(ptr @.str.1153, i64 298, i64 %t267, i64 %t269) - unreachable -inrange2039: - %t271 = extractvalue { ptr, i64, i64 } %t268, 0 - %t272 = getelementptr inbounds %S.ast.Program, ptr %t271, i64 %t267 - %t273 = getelementptr inbounds %S.ast.Program, ptr %t272, i32 0, i32 8 - %t274 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 5 - %t275 = load i64, ptr %t274 - %t276 = load { ptr, i64, i64 }, ptr %t273 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range2040, label %inrange2041 -range2040: - call void @finch_panic_index(ptr @.str.1154, i64 298, i64 %t275, i64 %t277) - unreachable -inrange2041: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.ast.Node, ptr %t279, i64 %t275 - %t281 = load %S.ast.Node, ptr %t280 - store %S.ast.Node %t281, ptr %a282 - call void @finch.copy.S_ast_Node(ptr %a283, ptr %a282) - %t284 = load %S.ast.Node, ptr %a283 - store %S.ast.Node %t284, ptr %a285 - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic2042, label %ok2043 -panic2042: - call void @finch_panic(ptr @.str.1155, i64 299, ptr @.str.1156) - unreachable -ok2043: - %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 29 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1 - %t290 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 0 - %t291 = load { ptr, i64, i64 }, ptr %t290 - store { ptr, i64, i64 } { ptr @.str.1157, i64 3, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.1158, i64 1, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t300, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t300, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 2 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t312, ptr %a316 - store { ptr, i64, i64 } %t314, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.1160, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic2044, label %ok2045 -panic2044: - call void @finch_panic(ptr @.str.1161, i64 299, ptr @.str.1162) - unreachable -ok2045: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 13 - %t329 = load i64, ptr %t328 - %t330 = load { ptr, i64, i64 }, ptr %t327 - %t331 = extractvalue { ptr, i64, i64 } %t330, 1 - %t332 = icmp uge i64 %t329, %t331 - br i1 %t332, label %range2046, label %inrange2047 -range2046: - call void @finch_panic_index(ptr @.str.1163, i64 299, i64 %t329, i64 %t331) - unreachable -inrange2047: - %t333 = extractvalue { ptr, i64, i64 } %t330, 0 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i64 %t329 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t324, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t324, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.1164, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 11 - %t347 = load i64, ptr %t346 - call void @finch_str_from_int(ptr %a348, i64 %t347) - %t349 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t345, ptr %a351 - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t345, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t349, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t355, ptr %a357 - store { ptr, i64, i64 } { ptr @.str.1165, i64 1, i64 0 }, ptr %a358 - call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) - store { ptr, i64, i64 } %t355, ptr %a359 - call void @finch_str_drop(ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a356 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 12 - %t362 = load i64, ptr %t361 - call void @finch_str_from_int(ptr %a363, i64 %t362) - %t364 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t360, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t360, ptr %a368 - call void @finch_str_drop(ptr %a368) - store { ptr, i64, i64 } %t364, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t370, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.1166, i64 1, i64 0 }, ptr %a373 - call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) - store { ptr, i64, i64 } %t370, ptr %a374 - call void @finch_str_drop(ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 14 - %t377 = load i64, ptr %t376 - call void @finch_str_from_int(ptr %a378, i64 %t377) - %t379 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t375, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t375, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t379, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.1167, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t392 = load { ptr, i64, i64 }, ptr %t391 - store { ptr, i64, i64 } { ptr @.str.1168, i64 3, i64 0 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a393 - store { ptr, i64, i64 } %t396, ptr %a398 - store { ptr, i64, i64 } { ptr @.str.1169, i64 1, i64 0 }, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t396, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - %t402 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 3 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1170, i64 2, i64 0 }, ptr %a404 - call void @finch_str_join(ptr %a405, ptr %t402, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - store { ptr, i64, i64 } %t401, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t401, ptr %a410 - call void @finch_str_drop(ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.1171, i64 6, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t417) - store { ptr, i64, i64 } %t417, ptr %a419 - call void @finch_str_drop(ptr %a419) - store { ptr, i64, i64 } %t390, ptr %a421 - store { ptr, i64, i64 } %t418, ptr %a422 - call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) - store { ptr, i64, i64 } %t390, ptr %a423 - call void @finch_str_drop(ptr %a423) - store { ptr, i64, i64 } %t418, ptr %a424 - call void @finch_str_drop(ptr %a424) - %t425 = load { ptr, i64, i64 }, ptr %a420 - store { ptr, i64, i64 } %t425, ptr %a427 - store { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t425, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - %t431 = load i64, ptr %t289 - %t432 = add i64 %t431, 1 - call void @finch_arr_reserve(ptr %t288, i64 %t432, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t433 = load ptr, ptr %t288 - %t434 = getelementptr inbounds { ptr, i64, i64 }, ptr %t433, i64 %t431 - store { ptr, i64, i64 } %t430, ptr %t434 - store i64 %t432, ptr %t289 - call void @finch.drop.S_ast_Node(ptr %a285) - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -each.step2031: - %t435 = load i64, ptr %a249 - %t436 = add i64 %t435, 1 - store i64 %t436, ptr %a249 - br label %each.cond2029 -each.end2032: - %t437 = load ptr, ptr %a1 - %t438 = icmp eq ptr %t437, null - br i1 %t438, label %panic2048, label %ok2049 -panic2048: - call void @finch_panic(ptr @.str.1173, i64 301, ptr @.str.1174) - unreachable -ok2049: - %t439 = getelementptr inbounds %S.gen.Gen, ptr %t437, i32 0, i32 16 - store i64 0, ptr %a440 - br label %each.cond2050 -each.cond2050: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t442 = load i64, ptr %t441 - %t443 = load i64, ptr %a440 - %t444 = icmp slt i64 %t443, %t442 - br i1 %t444, label %each.body2051, label %each.end2053 -each.body2051: - %t445 = load ptr, ptr %t439 - %t446 = getelementptr inbounds %S.gen.StructDef, ptr %t445, i64 %t443 - %t447 = load %S.gen.StructDef, ptr %t446 - store %S.gen.StructDef %t447, ptr %a448 - call void @finch.copy.S_gen_StructDef(ptr %a449, ptr %a448) - %t450 = load %S.gen.StructDef, ptr %a449 - store %S.gen.StructDef %t450, ptr %a451 - %t452 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 2 - %t453 = load i1, ptr %t452 - br label %logic.from2054 -logic.from2054: - br i1 %t453, label %logic.end2056, label %logic.rhs2055 -logic.rhs2055: - %t454 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 5 - %t455 = getelementptr inbounds { ptr, i64, i64 }, ptr %t454, i32 0, i32 1 - %t456 = load i64, ptr %t455 - %t457 = icmp sgt i64 %t456, 0 - br label %logic.rend2057 -logic.rend2057: - br label %logic.end2056 -logic.end2056: - %t458 = phi i1 [ true, %logic.from2054 ], [ %t457, %logic.rend2057 ] - br i1 %t458, label %then2058, label %endif2060 -then2058: - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -endif2060: - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic2061, label %ok2062 -panic2061: - call void @finch_panic(ptr @.str.1175, i64 305, ptr @.str.1176) - unreachable -ok2062: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 0 - %t462 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 13 - %t463 = load i64, ptr %t462 - %t464 = load { ptr, i64, i64 }, ptr %t461 - %t465 = extractvalue { ptr, i64, i64 } %t464, 1 - %t466 = icmp uge i64 %t463, %t465 - br i1 %t466, label %range2063, label %inrange2064 -range2063: - call void @finch_panic_index(ptr @.str.1177, i64 305, i64 %t463, i64 %t465) - unreachable -inrange2064: - %t467 = extractvalue { ptr, i64, i64 } %t464, 0 - %t468 = getelementptr inbounds %S.ast.Program, ptr %t467, i64 %t463 - %t469 = getelementptr inbounds %S.ast.Program, ptr %t468, i32 0, i32 6 - %t470 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 14 - %t471 = load i64, ptr %t470 - %t472 = load { ptr, i64, i64 }, ptr %t469 - %t473 = extractvalue { ptr, i64, i64 } %t472, 1 - %t474 = icmp uge i64 %t471, %t473 - br i1 %t474, label %range2065, label %inrange2066 -range2065: - call void @finch_panic_index(ptr @.str.1178, i64 305, i64 %t471, i64 %t473) - unreachable -inrange2066: - %t475 = extractvalue { ptr, i64, i64 } %t472, 0 - %t476 = getelementptr inbounds %S.ast.Node, ptr %t475, i64 %t471 - %t477 = load %S.ast.Node, ptr %t476 - store %S.ast.Node %t477, ptr %a478 - call void @finch.copy.S_ast_Node(ptr %a479, ptr %a478) - %t480 = load %S.ast.Node, ptr %a479 - store %S.ast.Node %t480, ptr %a481 - %t482 = load ptr, ptr %a1 - %t483 = icmp eq ptr %t482, null - br i1 %t483, label %panic2067, label %ok2068 -panic2067: - call void @finch_panic(ptr @.str.1179, i64 306, ptr @.str.1180) - unreachable -ok2068: - %t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 29 - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i32 0, i32 1 - %t486 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } { ptr @.str.1181, i64 3, i64 0 }, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t498 = load { ptr, i64, i64 }, ptr %t497 - store { ptr, i64, i64 } %t496, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - store { ptr, i64, i64 } %t496, ptr %a502 - call void @finch_str_drop(ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a499 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.1183, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = load ptr, ptr %a1 - %t510 = icmp eq ptr %t509, null - br i1 %t510, label %panic2069, label %ok2070 -panic2069: - call void @finch_panic(ptr @.str.1184, i64 306, ptr @.str.1185) - unreachable -ok2070: - %t511 = getelementptr inbounds %S.gen.Gen, ptr %t509, i32 0, i32 1 - %t512 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 13 - %t513 = load i64, ptr %t512 - %t514 = load { ptr, i64, i64 }, ptr %t511 - %t515 = extractvalue { ptr, i64, i64 } %t514, 1 - %t516 = icmp uge i64 %t513, %t515 - br i1 %t516, label %range2071, label %inrange2072 -range2071: - call void @finch_panic_index(ptr @.str.1186, i64 306, i64 %t513, i64 %t515) - unreachable -inrange2072: - %t517 = extractvalue { ptr, i64, i64 } %t514, 0 - %t518 = getelementptr inbounds { ptr, i64, i64 }, ptr %t517, i64 %t513 - %t519 = load { ptr, i64, i64 }, ptr %t518 - store { ptr, i64, i64 } %t508, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a522 - call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) - store { ptr, i64, i64 } %t508, ptr %a523 - call void @finch_str_drop(ptr %a523) - %t524 = load { ptr, i64, i64 }, ptr %a520 - store { ptr, i64, i64 } %t524, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.1187, i64 1, i64 0 }, ptr %a527 - call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) - store { ptr, i64, i64 } %t524, ptr %a528 - call void @finch_str_drop(ptr %a528) - %t529 = load { ptr, i64, i64 }, ptr %a525 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 11 - %t531 = load i64, ptr %t530 - call void @finch_str_from_int(ptr %a532, i64 %t531) - %t533 = load { ptr, i64, i64 }, ptr %a532 - store { ptr, i64, i64 } %t529, ptr %a535 - store { ptr, i64, i64 } %t533, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t529, ptr %a537 - call void @finch_str_drop(ptr %a537) - store { ptr, i64, i64 } %t533, ptr %a538 - call void @finch_str_drop(ptr %a538) - %t539 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t539, ptr %a541 - store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t539, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - %t545 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 12 - %t546 = load i64, ptr %t545 - call void @finch_str_from_int(ptr %a547, i64 %t546) - %t548 = load { ptr, i64, i64 }, ptr %a547 - store { ptr, i64, i64 } %t544, ptr %a550 - store { ptr, i64, i64 } %t548, ptr %a551 - call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) - store { ptr, i64, i64 } %t544, ptr %a552 - call void @finch_str_drop(ptr %a552) - store { ptr, i64, i64 } %t548, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a549 - %t555 = load i64, ptr %t485 - %t556 = add i64 %t555, 1 - call void @finch_arr_reserve(ptr %t484, i64 %t556, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t557 = load ptr, ptr %t484 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t555 - store { ptr, i64, i64 } %t554, ptr %t558 - store i64 %t556, ptr %t485 - %t559 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load i64, ptr %t560 - store i64 0, ptr %a562 - br label %for.cond2073 -for.cond2073: - %t563 = load i64, ptr %a562 - %t564 = icmp slt i64 %t563, %t561 - br i1 %t564, label %for.body2074, label %for.end2076 -for.body2074: - %t565 = load ptr, ptr %a1 - %t566 = icmp eq ptr %t565, null - br i1 %t566, label %panic2077, label %ok2078 -panic2077: - call void @finch_panic(ptr @.str.1189, i64 308, ptr @.str.1190) - unreachable -ok2078: - %t567 = getelementptr inbounds %S.gen.Gen, ptr %t565, i32 0, i32 29 - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1 - %t569 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t570 = load { ptr, i64, i64 }, ptr %t569 - store { ptr, i64, i64 } { ptr @.str.1191, i64 4, i64 0 }, ptr %a572 - store { ptr, i64, i64 } %t570, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a571 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.1192, i64 1, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t581 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t579, ptr %a583 - store { ptr, i64, i64 } %t581, ptr %a584 - call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) - store { ptr, i64, i64 } %t579, ptr %a585 - call void @finch_str_drop(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a582 - store { ptr, i64, i64 } %t586, ptr %a588 - store { ptr, i64, i64 } { ptr @.str.1193, i64 1, i64 0 }, ptr %a589 - call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) - store { ptr, i64, i64 } %t586, ptr %a590 - call void @finch_str_drop(ptr %a590) - %t591 = load { ptr, i64, i64 }, ptr %a587 - %t592 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t593 = load i64, ptr %a562 - %t594 = load { ptr, i64, i64 }, ptr %t592 - %t595 = extractvalue { ptr, i64, i64 } %t594, 1 - %t596 = icmp uge i64 %t593, %t595 - br i1 %t596, label %range2079, label %inrange2080 -range2079: - call void @finch_panic_index(ptr @.str.1194, i64 308, i64 %t593, i64 %t595) - unreachable -inrange2080: - %t597 = extractvalue { ptr, i64, i64 } %t594, 0 - %t598 = getelementptr inbounds { ptr, i64, i64 }, ptr %t597, i64 %t593 - %t599 = load { ptr, i64, i64 }, ptr %t598 - store { ptr, i64, i64 } %t591, ptr %a601 - store { ptr, i64, i64 } %t599, ptr %a602 - call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602) - store { ptr, i64, i64 } %t591, ptr %a603 - call void @finch_str_drop(ptr %a603) - %t604 = load { ptr, i64, i64 }, ptr %a600 - store { ptr, i64, i64 } %t604, ptr %a606 - store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a607 - call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) - store { ptr, i64, i64 } %t604, ptr %a608 - call void @finch_str_drop(ptr %a608) - %t609 = load { ptr, i64, i64 }, ptr %a605 - %t610 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 12 - %t611 = load i64, ptr %a562 - %t612 = load { ptr, i64, i64 }, ptr %t610 - %t613 = extractvalue { ptr, i64, i64 } %t612, 1 - %t614 = icmp uge i64 %t611, %t613 - br i1 %t614, label %range2081, label %inrange2082 -range2081: - call void @finch_panic_index(ptr @.str.1196, i64 308, i64 %t611, i64 %t613) - unreachable -inrange2082: - %t615 = extractvalue { ptr, i64, i64 } %t612, 0 - %t616 = getelementptr inbounds %S.ast.Type, ptr %t615, i64 %t611 - %t617 = load %S.ast.Type, ptr %t616 - %t618 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t617) - store { ptr, i64, i64 } %t609, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t609, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - %t625 = load i64, ptr %t568 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t567, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t567 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t568 - br label %for.step2075 -for.step2075: - %t629 = load i64, ptr %a562 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a562 - br label %for.cond2073 -for.end2076: - call void @finch.drop.S_ast_Node(ptr %a481) - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -each.step2052: - %t631 = load i64, ptr %a440 - %t632 = add i64 %t631, 1 - store i64 %t632, ptr %a440 - br label %each.cond2050 -each.end2053: - %t633 = load ptr, ptr %a1 - %t634 = icmp eq ptr %t633, null - br i1 %t634, label %panic2083, label %ok2084 -panic2083: - call void @finch_panic(ptr @.str.1197, i64 311, ptr @.str.1198) - unreachable -ok2084: - %t635 = getelementptr inbounds %S.gen.Gen, ptr %t633, i32 0, i32 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i32 0, i32 1 - %t637 = load i64, ptr %t636 - store i64 0, ptr %a638 - br label %for.cond2085 -for.cond2085: - %t639 = load i64, ptr %a638 - %t640 = icmp slt i64 %t639, %t637 - br i1 %t640, label %for.body2086, label %for.end2088 -for.body2086: - %t641 = load ptr, ptr %a1 - %t642 = icmp eq ptr %t641, null - br i1 %t642, label %panic2089, label %ok2090 -panic2089: - call void @finch_panic(ptr @.str.1199, i64 312, ptr @.str.1200) - unreachable -ok2090: - %t643 = getelementptr inbounds %S.gen.Gen, ptr %t641, i32 0, i32 0 - %t644 = load i64, ptr %a638 - %t645 = load { ptr, i64, i64 }, ptr %t643 - %t646 = extractvalue { ptr, i64, i64 } %t645, 1 - %t647 = icmp uge i64 %t644, %t646 - br i1 %t647, label %range2091, label %inrange2092 -range2091: - call void @finch_panic_index(ptr @.str.1201, i64 312, i64 %t644, i64 %t646) - unreachable -inrange2092: - %t648 = extractvalue { ptr, i64, i64 } %t645, 0 - %t649 = getelementptr inbounds %S.ast.Program, ptr %t648, i64 %t644 - %t650 = getelementptr inbounds %S.ast.Program, ptr %t649, i32 0, i32 7 - store i64 0, ptr %a651 - br label %each.cond2093 -each.cond2093: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body2094, label %each.end2096 -each.body2094: - %t656 = load ptr, ptr %t650 - %t657 = getelementptr inbounds %S.ast.Node, ptr %t656, i64 %t654 - %t658 = load %S.ast.Node, ptr %t657 - store %S.ast.Node %t658, ptr %a659 - call void @finch.copy.S_ast_Node(ptr %a660, ptr %a659) - %t661 = load %S.ast.Node, ptr %a660 - store %S.ast.Node %t661, ptr %a662 - store { ptr, i64, i64 } { ptr @.str.1202, i64 0, i64 0 }, ptr %a663 - store { ptr, i64, i64 } zeroinitializer, ptr %a664 - %t665 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 9 - store i64 0, ptr %a666 - br label %each.cond2097 -each.cond2097: - %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t668 = load i64, ptr %t667 - %t669 = load i64, ptr %a666 - %t670 = icmp slt i64 %t669, %t668 - br i1 %t670, label %each.body2098, label %each.end2100 -each.body2098: - %t671 = load ptr, ptr %t665 - %t672 = getelementptr inbounds %S.ast.Node, ptr %t671, i64 %t669 - %t673 = load %S.ast.Node, ptr %t672 - store %S.ast.Node %t673, ptr %a674 - %t675 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - %t676 = getelementptr inbounds %S.ast.Node, ptr %a674, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %t676 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t675 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a664, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a664 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t675 - br label %each.step2099 -each.step2099: - %t685 = load i64, ptr %a666 - %t686 = add i64 %t685, 1 - store i64 %t686, ptr %a666 - br label %each.cond2097 -each.end2100: - %t687 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1203, i64 1, i64 0 }, ptr %a688 - call void @finch_str_join(ptr %a689, ptr %a664, ptr %a688) - %t690 = load { ptr, i64, i64 }, ptr %a689 - %t691 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t690, ptr %a663 - store { ptr, i64, i64 } %t691, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load ptr, ptr %a1 - %t694 = icmp eq ptr %t693, null - br i1 %t694, label %panic2101, label %ok2102 -panic2101: - call void @finch_panic(ptr @.str.1204, i64 319, ptr @.str.1205) - unreachable -ok2102: - %t695 = getelementptr inbounds %S.gen.Gen, ptr %t693, i32 0, i32 29 - %t696 = getelementptr inbounds { ptr, i64, i64 }, ptr %t695, i32 0, i32 1 - %t697 = load ptr, ptr %a1 - %t698 = icmp eq ptr %t697, null - br i1 %t698, label %panic2103, label %ok2104 -panic2103: - call void @finch_panic(ptr @.str.1207, i64 319, ptr @.str.1208) - unreachable -ok2104: - %t699 = getelementptr inbounds %S.gen.Gen, ptr %t697, i32 0, i32 0 - %t700 = load i64, ptr %a638 - %t701 = load { ptr, i64, i64 }, ptr %t699 - %t702 = extractvalue { ptr, i64, i64 } %t701, 1 - %t703 = icmp uge i64 %t700, %t702 - br i1 %t703, label %range2105, label %inrange2106 -range2105: - call void @finch_panic_index(ptr @.str.1209, i64 319, i64 %t700, i64 %t702) - unreachable -inrange2106: - %t704 = extractvalue { ptr, i64, i64 } %t701, 0 - %t705 = getelementptr inbounds %S.ast.Program, ptr %t704, i64 %t700 - %t706 = getelementptr inbounds %S.ast.Program, ptr %t705, i32 0, i32 0 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } { ptr @.str.1206, i64 3, i64 0 }, ptr %a709 - store { ptr, i64, i64 } %t707, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - %t711 = load { ptr, i64, i64 }, ptr %a708 - store { ptr, i64, i64 } %t711, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.1210, i64 1, i64 0 }, ptr %a714 - call void @finch_str_concat(ptr %a712, ptr %a713, ptr %a714) - store { ptr, i64, i64 } %t711, ptr %a715 - call void @finch_str_drop(ptr %a715) - %t716 = load { ptr, i64, i64 }, ptr %a712 - %t717 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 1 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t716, ptr %a720 - store { ptr, i64, i64 } %t718, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t716, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - store { ptr, i64, i64 } %t723, ptr %a725 - store { ptr, i64, i64 } { ptr @.str.1211, i64 1, i64 0 }, ptr %a726 - call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) - store { ptr, i64, i64 } %t723, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load { ptr, i64, i64 }, ptr %a724 - %t729 = load ptr, ptr %a1 - %t730 = icmp eq ptr %t729, null - br i1 %t730, label %panic2107, label %ok2108 -panic2107: - call void @finch_panic(ptr @.str.1212, i64 319, ptr @.str.1213) - unreachable -ok2108: - %t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 1 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 13 - %t733 = load i64, ptr %t732 - %t734 = load { ptr, i64, i64 }, ptr %t731 - %t735 = extractvalue { ptr, i64, i64 } %t734, 1 - %t736 = icmp uge i64 %t733, %t735 - br i1 %t736, label %range2109, label %inrange2110 -range2109: - call void @finch_panic_index(ptr @.str.1214, i64 319, i64 %t733, i64 %t735) - unreachable -inrange2110: - %t737 = extractvalue { ptr, i64, i64 } %t734, 0 - %t738 = getelementptr inbounds { ptr, i64, i64 }, ptr %t737, i64 %t733 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t728, ptr %a741 - store { ptr, i64, i64 } %t739, ptr %a742 - call void @finch_str_concat(ptr %a740, ptr %a741, ptr %a742) - store { ptr, i64, i64 } %t728, ptr %a743 - call void @finch_str_drop(ptr %a743) - %t744 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } %t744, ptr %a746 - store { ptr, i64, i64 } { ptr @.str.1215, i64 1, i64 0 }, ptr %a747 - call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) - store { ptr, i64, i64 } %t744, ptr %a748 - call void @finch_str_drop(ptr %a748) - %t749 = load { ptr, i64, i64 }, ptr %a745 - %t750 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 11 - %t751 = load i64, ptr %t750 - call void @finch_str_from_int(ptr %a752, i64 %t751) - %t753 = load { ptr, i64, i64 }, ptr %a752 - store { ptr, i64, i64 } %t749, ptr %a755 - store { ptr, i64, i64 } %t753, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t749, ptr %a757 - call void @finch_str_drop(ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.1216, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 12 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t764, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t764, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - store { ptr, i64, i64 } %t774, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.1217, i64 1, i64 0 }, ptr %a777 - call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) - store { ptr, i64, i64 } %t774, ptr %a778 - call void @finch_str_drop(ptr %a778) - %t779 = load { ptr, i64, i64 }, ptr %a775 - %t780 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t779, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t779, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = load { ptr, i64, i64 }, ptr %a781 - %t786 = load i64, ptr %t696 - %t787 = add i64 %t786, 1 - call void @finch_arr_reserve(ptr %t695, i64 %t787, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t788 = load ptr, ptr %t695 - %t789 = getelementptr inbounds { ptr, i64, i64 }, ptr %t788, i64 %t786 - store { ptr, i64, i64 } %t785, ptr %t789 - store i64 %t787, ptr %t696 - call void @finch.drop.arr_str(ptr %a664) - call void @finch_str_drop(ptr %a663) - call void @finch.drop.S_ast_Node(ptr %a662) - br label %each.step2095 -each.step2095: - %t790 = load i64, ptr %a651 - %t791 = add i64 %t790, 1 - store i64 %t791, ptr %a651 - br label %each.cond2093 -each.end2096: - br label %for.step2087 -for.step2087: - %t792 = load i64, ptr %a638 - %t793 = add i64 %t792, 1 - store i64 %t793, ptr %a638 - br label %for.cond2085 -for.end2088: - 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 - %a28 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2111, label %ok2112 -panic2111: - call void @finch_panic(ptr @.str.1218, i64 325, ptr @.str.1219) - unreachable -ok2112: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br label %logic.from2113 -logic.from2113: - br i1 %t7, label %logic.rhs2114, label %logic.end2115 -logic.rhs2114: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic2116, label %ok2117 -panic2116: - call void @finch_panic(ptr @.str.1220, i64 325, ptr @.str.1221) - unreachable -ok2117: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 29 - %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.rend2118 -logic.rend2118: - br label %logic.end2115 -logic.end2115: - %t14 = phi i1 [ false, %logic.from2113 ], [ %t13, %logic.rend2118 ] - br i1 %t14, label %then2119, label %endif2121 -then2119: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2122, label %ok2123 -panic2122: - call void @finch_panic(ptr @.str.1222, i64 326, ptr @.str.1223) - unreachable -ok2123: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 29 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1224, 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.1225, ptr %t24 - %t27 = call i32 (ptr, ...) @printf(ptr @.str.1226, i32 %t23, ptr %t26) - store { ptr, i64, i64 } %t21, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = call i32 (ptr, ...) @printf(ptr @.str.1227) - br label %endif2121 -endif2121: - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic2124, label %ok2125 -panic2124: - call void @finch_panic(ptr @.str.1228, i64 328, ptr @.str.1229) - unreachable -ok2125: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 1 - %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t34 = load i64, ptr %t33 - %t35 = load { ptr, i64, i64 }, ptr %t32 - %t36 = extractvalue { ptr, i64, i64 } %t35, 1 - %t37 = icmp uge i64 %t34, %t36 - br i1 %t37, label %range2126, label %inrange2127 -range2126: - call void @finch_panic_index(ptr @.str.1230, i64 328, i64 %t34, i64 %t36) - unreachable -inrange2127: - %t38 = extractvalue { ptr, i64, i64 } %t35, 0 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t34 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1231, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a41 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t46 = load i64, ptr %t45 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t44, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t44, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1232, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t61 = load i64, ptr %t60 - call void @finch_str_from_int(ptr %a62, i64 %t61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t59, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t59, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1233, i64 9, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic2128, label %ok2129 -panic2128: - call void @finch_panic(ptr @.str.1234, i64 328, ptr @.str.1235) - unreachable -ok2129: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 20 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t80, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t80, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = trunc i64 %t90 to i32 - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = icmp eq ptr %t92, null - %t94 = select i1 %t93, ptr @.str.1236, ptr %t92 - %t95 = call i32 (ptr, ...) @printf(ptr @.str.1237, i32 %t91, ptr %t94) - store { ptr, i64, i64 } %t89, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = call i32 (ptr, ...) @printf(ptr @.str.1238) - %t98 = trunc i64 1 to i32 - %t99 = call i32 @fflush(ptr null) - call void @exit(i32 %t98) - 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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2130, label %ok2131 -panic2130: - call void @finch_panic(ptr @.str.1239, i64 334, ptr @.str.1240) - unreachable -ok2131: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 36 - %t6 = load i64, ptr %t5 - %t7 = icmp sge i64 %t6, 0 - br label %logic.from2132 -logic.from2132: - br i1 %t7, label %logic.rhs2133, label %logic.end2134 -logic.rhs2133: - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1242, 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.rend2135 -logic.rend2135: - br label %logic.end2134 -logic.end2134: - %t14 = phi i1 [ false, %logic.from2132 ], [ %t13, %logic.rend2135 ] - br i1 %t14, label %then2136, label %endif2138 -then2136: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2139, label %ok2140 -panic2139: - call void @finch_panic(ptr @.str.1243, i64 335, ptr @.str.1244) - unreachable -ok2140: - %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.1245, 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.1246, i64 8, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = call i64 @finch.gen.dbgLocation(ptr %t29) - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = load i64, ptr %t18 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %t17, i64 %t40, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %t17 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t39 - store { ptr, i64, i64 } %t38, ptr %t42 - store i64 %t40, ptr %t18 - ret void -endif2138: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic2141, label %ok2142 -panic2141: - call void @finch_panic(ptr @.str.1247, i64 338, ptr @.str.1248) - unreachable -ok2142: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 4 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1249, i64 2, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a48 - %t52 = load i64, ptr %t46 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t45, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t45 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t46 - ret void -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2143, label %ok2144 -panic2143: - call void @finch_panic(ptr @.str.1250, i64 342, ptr @.str.1251) - unreachable -ok2144: - %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 %panic2145, label %ok2146 -panic2145: - call void @finch_panic(ptr @.str.1253, i64 343, ptr @.str.1254) - unreachable -ok2146: - %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.1252, i64 2, i64 0 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal { 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 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2147, label %ok2148 -panic2147: - call void @finch_panic(ptr @.str.1255, i64 347, ptr @.str.1256) - unreachable -ok2148: - %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 %panic2149, label %ok2150 -panic2149: - call void @finch_panic(ptr @.str.1257, i64 348, ptr @.str.1258) - unreachable -ok2150: - %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) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic2151, label %ok2152 -panic2151: - call void @finch_panic(ptr @.str.1259, i64 352, ptr @.str.1260) - unreachable -ok2152: - %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.1261, 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 %panic2153, label %ok2154 -panic2153: - call void @finch_panic(ptr @.str.1262, i64 353, ptr @.str.1263) - unreachable -ok2154: - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2155, label %ok2156 -panic2155: - call void @finch_panic(ptr @.str.1264, i64 357, ptr @.str.1265) - unreachable -ok2156: - %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 %then2157, label %endif2159 -then2157: - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1266, 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) - store { ptr, i64, i64 } %t13, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2160, label %ok2161 -panic2160: - call void @finch_panic(ptr @.str.1267, i64 359, ptr @.str.1268) - unreachable -ok2161: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 9 - store i1 true, ptr %t17 - br label %endif2159 -endif2159: - 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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1269, 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.1270, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1271, i64 9, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic2162, label %ok2163 -panic2162: - call void @finch_panic(ptr @.str.1272, i64 365, ptr @.str.1273) - unreachable -ok2163: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 9 - store i1 true, ptr %t36 - 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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2164, label %ok2165 -panic2164: - call void @finch_panic(ptr @.str.1274, i64 369, ptr @.str.1275) - unreachable -ok2165: - %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 %panic2166, label %ok2167 -panic2166: - call void @finch_panic(ptr @.str.1277, i64 370, ptr @.str.1278) - unreachable -ok2167: - %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.1276, i64 2, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2168, label %ok2169 -panic2168: - call void @finch_panic(ptr @.str.1279, i64 371, ptr @.str.1280) - unreachable -ok2169: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 5 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1281, i64 2, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1282, i64 10, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1283, i64 10, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load i64, ptr %t23 - %t46 = add i64 %t45, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t47 = load ptr, ptr %t22 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 - store { ptr, i64, i64 } %t44, ptr %t48 - store i64 %t46, ptr %t23 - %t49 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t49 -} - -define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { 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.1284, 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) - store { ptr, i64, i64 } %t12, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1285, i64 6, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t23, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t31 -} - -define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1286, 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.1287, i64 1, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1288, i64 6, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - ret void -} - -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 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a19 = 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 } %t7, ptr %a9 - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t14 = load %S.ast.Type, ptr %t13 - %t15 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t12, %S.ast.Type %t14) - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.store(ptr %t11, { ptr, i64, i64 } %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t20 -} - -define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = 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.1289, 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) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a5 - ret { ptr, i64, i64 } %t19 -} - -define internal i1 @finch.gen.has({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -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.cond2170 -find.cond2170: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body2171, label %find.end2174 -find.body2171: - %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.hit2172, label %find.next2173 -find.hit2172: - store i64 %t9, ptr %a5 - br label %find.end2174 -find.next2173: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond2170 -find.end2174: - %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.1290, 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.from2175 -logic.from2175: - br i1 %t12, label %logic.end2177, label %logic.rhs2176 -logic.rhs2176: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1291, 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.rend2178 -logic.rend2178: - br label %logic.end2177 -logic.end2177: - %t18 = phi i1 [ true, %logic.from2175 ], [ %t17, %logic.rend2178 ] - br label %logic.from2179 -logic.from2179: - br i1 %t18, label %logic.end2181, label %logic.rhs2180 -logic.rhs2180: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1292, 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.rend2182 -logic.rend2182: - br label %logic.end2181 -logic.end2181: - %t24 = phi i1 [ true, %logic.from2179 ], [ %t23, %logic.rend2182 ] - br label %logic.from2183 -logic.from2183: - br i1 %t24, label %logic.end2185, label %logic.rhs2184 -logic.rhs2184: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1293, 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.rend2186 -logic.rend2186: - br label %logic.end2185 -logic.end2185: - %t30 = phi i1 [ true, %logic.from2183 ], [ %t29, %logic.rend2186 ] - call void @finch_str_drop(ptr %a7) - 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.1294, 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.from2187 -logic.from2187: - br i1 %t12, label %logic.end2189, label %logic.rhs2188 -logic.rhs2188: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1295, 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.rend2190 -logic.rend2190: - br label %logic.end2189 -logic.end2189: - %t18 = phi i1 [ true, %logic.from2187 ], [ %t17, %logic.rend2190 ] - br label %logic.from2191 -logic.from2191: - br i1 %t18, label %logic.end2193, label %logic.rhs2192 -logic.rhs2192: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1296, 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.rend2194 -logic.rend2194: - br label %logic.end2193 -logic.end2193: - %t24 = phi i1 [ true, %logic.from2191 ], [ %t23, %logic.rend2194 ] - br label %logic.from2195 -logic.from2195: - br i1 %t24, label %logic.end2197, label %logic.rhs2196 -logic.rhs2196: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1297, 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.rend2198 -logic.rend2198: - br label %logic.end2197 -logic.end2197: - %t30 = phi i1 [ true, %logic.from2195 ], [ %t29, %logic.rend2198 ] - call void @finch_str_drop(ptr %a7) - 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.from2199 -logic.from2199: - br i1 %t3, label %logic.end2201, label %logic.rhs2200 -logic.rhs2200: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4) - br label %logic.rend2202 -logic.rend2202: - br label %logic.end2201 -logic.end2201: - %t6 = phi i1 [ true, %logic.from2199 ], [ %t5, %logic.rend2202 ] - 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.1298, 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.from2203 -logic.from2203: - br i1 %t7, label %logic.end2205, label %logic.rhs2204 -logic.rhs2204: - %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.1299, 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.rend2206 -logic.rend2206: - br label %logic.end2205 -logic.end2205: - %t14 = phi i1 [ true, %logic.from2203 ], [ %t13, %logic.rend2206 ] - 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.from2207 -logic.from2207: - br i1 %t3, label %logic.end2209, label %logic.rhs2208 -logic.rhs2208: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4) - br label %logic.rend2210 -logic.rend2210: - br label %logic.end2209 -logic.end2209: - %t6 = phi i1 [ true, %logic.from2207 ], [ %t5, %logic.rend2210 ] - 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.1300, 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 %then2211, label %endif2213 -then2211: - call void @finch_str_drop(ptr %a7) - ret i64 1 -endif2213: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1301, 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.from2214 -logic.from2214: - br i1 %t17, label %logic.end2216, label %logic.rhs2215 -logic.rhs2215: - %t18 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1302, 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.rend2217 -logic.rend2217: - br label %logic.end2216 -logic.end2216: - %t23 = phi i1 [ true, %logic.from2214 ], [ %t22, %logic.rend2217 ] - br label %logic.from2218 -logic.from2218: - br i1 %t23, label %logic.end2220, label %logic.rhs2219 -logic.rhs2219: - %t24 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1303, 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.rend2221 -logic.rend2221: - br label %logic.end2220 -logic.end2220: - %t29 = phi i1 [ true, %logic.from2218 ], [ %t28, %logic.rend2221 ] - br i1 %t29, label %then2222, label %endif2224 -then2222: - call void @finch_str_drop(ptr %a7) - ret i64 8 -endif2224: - %t30 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1304, 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.from2225 -logic.from2225: - br i1 %t34, label %logic.end2227, label %logic.rhs2226 -logic.rhs2226: - %t35 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1305, 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.rend2228 -logic.rend2228: - br label %logic.end2227 -logic.end2227: - %t40 = phi i1 [ true, %logic.from2225 ], [ %t39, %logic.rend2228 ] - br i1 %t40, label %then2229, label %endif2231 -then2229: - call void @finch_str_drop(ptr %a7) - ret i64 16 -endif2231: - %t41 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1306, 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.from2232 -logic.from2232: - br i1 %t45, label %logic.end2234, label %logic.rhs2233 -logic.rhs2233: - %t46 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1307, 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.rend2235 -logic.rend2235: - br label %logic.end2234 -logic.end2234: - %t51 = phi i1 [ true, %logic.from2232 ], [ %t50, %logic.rend2235 ] - br label %logic.from2236 -logic.from2236: - br i1 %t51, label %logic.end2238, label %logic.rhs2237 -logic.rhs2237: - %t52 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1308, 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.rend2239 -logic.rend2239: - br label %logic.end2238 -logic.end2238: - %t57 = phi i1 [ true, %logic.from2236 ], [ %t56, %logic.rend2239 ] - br i1 %t57, label %then2240, label %endif2242 -then2240: - call void @finch_str_drop(ptr %a7) - ret i64 32 -endif2242: - call void @finch_str_drop(ptr %a7) - 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.from2243 -logic.from2243: - br i1 %t5, label %logic.end2245, label %logic.rhs2244 -logic.rhs2244: - %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.rend2246 -logic.rend2246: - br label %logic.end2245 -logic.end2245: - %t9 = phi i1 [ true, %logic.from2243 ], [ %t8, %logic.rend2246 ] - br i1 %t9, label %then2247, label %endif2249 -then2247: - ret i1 false -endif2249: - %t10 = load %S.ast.Type, ptr %a1 - %t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10) - br label %logic.from2250 -logic.from2250: - br i1 %t11, label %logic.rhs2251, label %logic.end2252 -logic.rhs2251: - %t12 = load %S.ast.Type, ptr %a2 - %t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12) - br label %logic.rend2253 -logic.rend2253: - br label %logic.end2252 -logic.end2252: - %t14 = phi i1 [ false, %logic.from2250 ], [ %t13, %logic.rend2253 ] - br i1 %t14, label %then2254, label %endif2256 -then2254: - ret i1 false -endif2256: - %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 %then2257, label %endif2259 -then2257: - ret i1 false -endif2259: - %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.1309, i64 464) - 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 %then2260, label %endif2262 -then2260: - %t16 = load %S.ast.Type, ptr %a3 - %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) - br i1 %t17, label %then2263, label %endif2265 -then2263: - ret i1 false -endif2265: - %t18 = load i64, ptr %a13 - %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then2266, label %endif2268 -then2266: - ret i1 true -endif2268: - %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 -endif2262: - %t26 = load i64, ptr %a13 - %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then2269, label %endif2271 -then2269: - ret i1 true -endif2271: - %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 %then2272, label %endif2274 -then2272: - %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 %endif2274 -endif2274: - %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 %panic2275, label %ok2276 -panic2275: - call void @finch_panic(ptr @.str.1310, i64 486, ptr @.str.1311) - unreachable -ok2276: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 16 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2277 -for.cond2277: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2278, label %for.end2280 -for.body2278: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2281, label %ok2282 -panic2281: - call void @finch_panic(ptr @.str.1312, i64 487, ptr @.str.1313) - unreachable -ok2282: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2283, label %inrange2284 -range2283: - call void @finch_panic_index(ptr @.str.1314, i64 487, i64 %t15, i64 %t17) - unreachable -inrange2284: - %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.from2285 -logic.from2285: - br i1 %t27, label %logic.rhs2286, label %logic.end2287 -logic.rhs2286: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2288, label %ok2289 -panic2288: - call void @finch_panic(ptr @.str.1315, i64 487, ptr @.str.1316) - unreachable -ok2289: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2290, label %inrange2291 -range2290: - call void @finch_panic_index(ptr @.str.1317, i64 487, i64 %t31, i64 %t33) - unreachable -inrange2291: - %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.rend2292 -logic.rend2292: - br label %logic.end2287 -logic.end2287: - %t44 = phi i1 [ false, %logic.from2285 ], [ %t43, %logic.rend2292 ] - br i1 %t44, label %then2293, label %endif2295 -then2293: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2295: - br label %for.step2279 -for.step2279: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2277 -for.end2280: - 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 %panic2296, label %ok2297 -panic2296: - call void @finch_panic(ptr @.str.1318, i64 495, ptr @.str.1319) - unreachable -ok2297: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2298 -for.cond2298: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2299, label %for.end2301 -for.body2299: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2302, label %ok2303 -panic2302: - call void @finch_panic(ptr @.str.1320, i64 496, ptr @.str.1321) - unreachable -ok2303: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 21 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2304, label %inrange2305 -range2304: - call void @finch_panic_index(ptr @.str.1322, i64 496, i64 %t15, i64 %t17) - unreachable -inrange2305: - %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.from2306 -logic.from2306: - br i1 %t27, label %logic.rhs2307, label %logic.end2308 -logic.rhs2307: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2309, label %ok2310 -panic2309: - call void @finch_panic(ptr @.str.1323, i64 496, ptr @.str.1324) - unreachable -ok2310: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 21 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2311, label %inrange2312 -range2311: - call void @finch_panic_index(ptr @.str.1325, i64 496, i64 %t31, i64 %t33) - unreachable -inrange2312: - %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.rend2313 -logic.rend2313: - br label %logic.end2308 -logic.end2308: - %t44 = phi i1 [ false, %logic.from2306 ], [ %t43, %logic.rend2313 ] - br i1 %t44, label %then2314, label %endif2316 -then2314: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2316: - br label %for.step2300 -for.step2300: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2298 -for.end2301: - ret i64 -1 -} - -define internal i64 @finch.gen.findSum(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 %panic2317, label %ok2318 -panic2317: - call void @finch_panic(ptr @.str.1326, i64 504, ptr @.str.1327) - unreachable -ok2318: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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.cond2319 -for.cond2319: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2320, label %for.end2322 -for.body2320: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2323, label %ok2324 -panic2323: - call void @finch_panic(ptr @.str.1328, i64 505, ptr @.str.1329) - unreachable -ok2324: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 22 - %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 %range2325, label %inrange2326 -range2325: - call void @finch_panic_index(ptr @.str.1330, i64 505, i64 %t15, i64 %t17) - unreachable -inrange2326: - %t19 = extractvalue { ptr, i64, i64 } %t16, 0 - %t20 = getelementptr inbounds %S.gen.SumDef, ptr %t19, i64 %t15 - %t21 = getelementptr inbounds %S.gen.SumDef, 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.from2327 -logic.from2327: - br i1 %t27, label %logic.rhs2328, label %logic.end2329 -logic.rhs2328: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2330, label %ok2331 -panic2330: - call void @finch_panic(ptr @.str.1331, i64 505, ptr @.str.1332) - unreachable -ok2331: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 22 - %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 %range2332, label %inrange2333 -range2332: - call void @finch_panic_index(ptr @.str.1333, i64 505, i64 %t31, i64 %t33) - unreachable -inrange2333: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.gen.SumDef, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.gen.SumDef, 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.rend2334 -logic.rend2334: - br label %logic.end2329 -logic.end2329: - %t44 = phi i1 [ false, %logic.from2327 ], [ %t43, %logic.rend2334 ] - br i1 %t44, label %then2335, label %endif2337 -then2335: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2337: - br label %for.step2321 -for.step2321: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2319 -for.end2322: - 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 %panic2338, label %ok2339 -panic2338: - call void @finch_panic(ptr @.str.1334, i64 513, ptr @.str.1335) - unreachable -ok2339: - %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.cond2340 -for.cond2340: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2341, label %for.end2343 -for.body2341: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2344, label %ok2345 -panic2344: - call void @finch_panic(ptr @.str.1336, i64 514, ptr @.str.1337) - unreachable -ok2345: - %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 %range2346, label %inrange2347 -range2346: - call void @finch_panic_index(ptr @.str.1338, i64 514, i64 %t14, i64 %t16) - unreachable -inrange2347: - %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 %then2348, label %endif2350 -then2348: - %t27 = load i64, ptr %a8 - ret i64 %t27 -endif2350: - br label %for.step2342 -for.step2342: - %t28 = load i64, ptr %a8 - %t29 = add i64 %t28, 1 - store i64 %t29, ptr %a8 - br label %for.cond2340 -for.end2343: - 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 %panic2351, label %ok2352 -panic2351: - call void @finch_panic(ptr @.str.1339, i64 522, ptr @.str.1340) - unreachable -ok2352: - %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 %panic2353, label %ok2354 -panic2353: - call void @finch_panic(ptr @.str.1341, i64 522, ptr @.str.1342) - unreachable -ok2354: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 14 - %t10 = load { ptr, i64, i64 }, ptr %t9 - %t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10) - %t12 = load { ptr, i64, i64 }, ptr %t5 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range2355, label %inrange2356 -range2355: - call void @finch_panic_index(ptr @.str.1343, i64 522, i64 %t11, i64 %t13) - unreachable -inrange2356: - %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.cond2357 -find.cond2357: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t21 - br i1 %t25, label %find.body2358, label %find.end2361 -find.body2358: - %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.hit2359, label %find.next2360 -find.hit2359: - store i64 %t24, ptr %a20 - br label %find.end2361 -find.next2360: - %t32 = add i64 %t24, 1 - store i64 %t32, ptr %a23 - br label %find.cond2357 -find.end2361: - %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 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Type, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Type, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a155 = alloca %S.ast.Type, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a181 = alloca i64, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca i64, align 16 - %a209 = alloca i64, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1344, 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 %then2362, label %endif2364 -then2362: - %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 %range2365, label %inrange2366 -range2365: - call void @finch_panic_index(ptr @.str.1345, i64 527, i64 0, i64 %t13) - unreachable -inrange2366: - %t15 = extractvalue { ptr, i64, i64 } %t12, 0 - %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = load %S.ast.Node, ptr %a3 - %t19 = call %S.ast.Type @finch.gen.resolve(ptr %t10, %S.ast.Type %t17, %S.ast.Node %t18) - %t20 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.ast.Type %t20 -endif2364: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1346, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then2367, label %endif2369 -then2367: - %t28 = load ptr, ptr %a1 - %t29 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t30 = load { ptr, i64, i64 }, ptr %t29 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 0, %t31 - br i1 %t32, label %range2370, label %inrange2371 -range2370: - call void @finch_panic_index(ptr @.str.1347, i64 530, i64 0, i64 %t31) - unreachable -inrange2371: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Type, ptr %t33, i64 0 - %t35 = load %S.ast.Type, ptr %t34 - %t36 = load %S.ast.Node, ptr %a3 - %t37 = call %S.ast.Type @finch.gen.resolve(ptr %t28, %S.ast.Type %t35, %S.ast.Node %t36) - store %S.ast.Type %t37, ptr %a38 - %t39 = load %S.ast.Type, ptr %a38 - %t40 = call i1 @finch.gen.isInt(%S.ast.Type %t39) - %t41 = xor i1 %t40, true - br label %logic.from2372 -logic.from2372: - br i1 %t41, label %logic.rhs2373, label %logic.end2374 -logic.rhs2373: - %t42 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.1348, i64 4, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp eq i32 %t46, 0 - br label %logic.rend2375 -logic.rend2375: - br label %logic.end2374 -logic.end2374: - %t48 = phi i1 [ false, %logic.from2372 ], [ %t47, %logic.rend2375 ] - br label %logic.from2376 -logic.from2376: - br i1 %t48, label %logic.rhs2377, label %logic.end2378 -logic.rhs2377: - %t49 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1349, i64 4, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp eq i32 %t53, 0 - br label %logic.rend2379 -logic.rend2379: - br label %logic.end2378 -logic.end2378: - %t55 = phi i1 [ false, %logic.from2376 ], [ %t54, %logic.rend2379 ] - br label %logic.from2380 -logic.from2380: - br i1 %t55, label %logic.rhs2381, label %logic.end2382 -logic.rhs2381: - %t56 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1350, i64 3, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp eq i32 %t60, 0 - br label %logic.rend2383 -logic.rend2383: - br label %logic.end2382 -logic.end2382: - %t62 = phi i1 [ false, %logic.from2380 ], [ %t61, %logic.rend2383 ] - br label %logic.from2384 -logic.from2384: - br i1 %t62, label %logic.rhs2385, label %logic.end2386 -logic.rhs2385: - %t63 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t64 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.1351, i64 4, i64 0 }, ptr %a66 - %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) - %t68 = icmp eq i32 %t67, 0 - br label %logic.rend2387 -logic.rend2387: - br label %logic.end2386 -logic.end2386: - %t69 = phi i1 [ false, %logic.from2384 ], [ %t68, %logic.rend2387 ] - br i1 %t69, label %then2388, label %endif2390 -then2388: - %t70 = load ptr, ptr %a1 - %t71 = load %S.ast.Node, ptr %a3 - %t72 = load %S.ast.Type, ptr %a38 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } { ptr @.str.1352, i64 63, i64 0 }, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif2390 -endif2390: - %t80 = load ptr, ptr %a1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = extractvalue { ptr, i64, i64 } %t82, 1 - %t84 = icmp uge i64 1, %t83 - br i1 %t84, label %range2391, label %inrange2392 -range2391: - call void @finch_panic_index(ptr @.str.1353, i64 534, i64 1, i64 %t83) - unreachable -inrange2392: - %t85 = extractvalue { ptr, i64, i64 } %t82, 0 - %t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 1 - %t87 = load %S.ast.Type, ptr %t86 - %t88 = load %S.ast.Node, ptr %a3 - %t89 = call %S.ast.Type @finch.gen.resolve(ptr %t80, %S.ast.Type %t87, %S.ast.Node %t88) - store %S.ast.Type %t89, ptr %a90 - %t91 = getelementptr inbounds %S.ast.Type, ptr %a90, i32 0, i32 0 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.1354, i64 4, i64 0 }, ptr %a94 - %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) - %t96 = icmp ne i32 %t95, 0 - br i1 %t96, label %then2393, label %endif2395 -then2393: - %t97 = load ptr, ptr %a1 - %t98 = load %S.ast.Node, ptr %a3 - call void @finch.gen.fail(ptr %t97, %S.ast.Node %t98, { ptr, i64, i64 } { ptr @.str.1355, i64 41, i64 0 }) - br label %endif2395 -endif2395: - %t99 = load %S.ast.Type, ptr %a38 - %t100 = load %S.ast.Type, ptr %a90 - %t101 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t99, %S.ast.Type %t100) - call void @finch.drop.S_ast_Type(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.ast.Type %t101 -endif2369: - %t102 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1356, i64 5, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br i1 %t107, label %then2396, label %endif2398 -then2396: - %t108 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1357, i64 5, i64 0 }, 0 - %t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t110 = load i64, ptr %t109 - %t111 = insertvalue %S.ast.Type %t108, i64 %t110, 4 - store %S.ast.Type %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Type, ptr %a112, i32 0, i32 1 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 0, %t118 - br i1 %t119, label %range2399, label %inrange2400 -range2399: - call void @finch_panic_index(ptr @.str.1358, i64 542, i64 0, i64 %t118) - unreachable -inrange2400: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Type, ptr %t120, i64 0 - %t122 = load %S.ast.Type, ptr %t121 - %t123 = load %S.ast.Node, ptr %a3 - %t124 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t122, %S.ast.Node %t123) - %t125 = load i64, ptr %t114 - %t126 = add i64 %t125, 1 - call void @finch_arr_reserve(ptr %t113, i64 %t126, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t127 = load ptr, ptr %t113 - %t128 = getelementptr inbounds %S.ast.Type, ptr %t127, i64 %t125 - store %S.ast.Type %t124, ptr %t128 - store i64 %t126, ptr %t114 - %t129 = load %S.ast.Type, ptr %a112 - ret %S.ast.Type %t129 -endif2398: - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1359, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %then2401, label %endif2403 -then2401: - %t136 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br i1 %t139, label %then2404, label %endif2406 -then2404: - %t140 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - ret %S.ast.Type %t143 -endif2406: - %t144 = load ptr, ptr %a1 - %t145 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %t145 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 0, %t147 - br i1 %t148, label %range2407, label %inrange2408 -range2407: - call void @finch_panic_index(ptr @.str.1360, i64 549, i64 0, i64 %t147) - unreachable -inrange2408: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = load %S.ast.Node, ptr %a3 - %t153 = call %S.ast.Type @finch.gen.resolve(ptr %t144, %S.ast.Type %t151, %S.ast.Node %t152) - %t154 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t153) - store %S.ast.Type %t153, ptr %a155 - call void @finch.drop.S_ast_Type(ptr %a155) - ret %S.ast.Type %t154 -endif2403: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.1361, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br i1 %t161, label %then2409, label %endif2411 -then2409: - %t162 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t162, ptr %a163 - call void @finch.copy.S_ast_Type(ptr %a164, ptr %a163) - %t165 = load %S.ast.Type, ptr %a164 - ret %S.ast.Type %t165 -endif2411: - %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = icmp eq i64 %t168, 0 - br label %logic.from2412 -logic.from2412: - br i1 %t169, label %logic.rhs2413, label %logic.end2414 -logic.rhs2413: - %t170 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = icmp eq i64 %t172, 0 - br label %logic.rend2415 -logic.rend2415: - br label %logic.end2414 -logic.end2414: - %t174 = phi i1 [ false, %logic.from2412 ], [ %t173, %logic.rend2415 ] - br label %logic.from2416 -logic.from2416: - br i1 %t174, label %logic.rhs2417, label %logic.end2418 -logic.rhs2417: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic2419, label %ok2420 -panic2419: - call void @finch_panic(ptr @.str.1362, i64 555, ptr @.str.1363) - unreachable -ok2420: - %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 18 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t180 = load { ptr, i64, i64 }, ptr %t179 - store i64 -1, ptr %a181 - %t182 = load i64, ptr %t178 - %t183 = load ptr, ptr %t177 - store i64 0, ptr %a184 - br label %find.cond2421 -find.cond2421: - %t185 = load i64, ptr %a184 - %t186 = icmp slt i64 %t185, %t182 - br i1 %t186, label %find.body2422, label %find.end2425 -find.body2422: - %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.hit2423, label %find.next2424 -find.hit2423: - store i64 %t185, ptr %a181 - br label %find.end2425 -find.next2424: - %t193 = add i64 %t185, 1 - store i64 %t193, ptr %a184 - br label %find.cond2421 -find.end2425: - %t194 = load i64, ptr %a181 - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend2426 -logic.rend2426: - br label %logic.end2418 -logic.end2418: - %t196 = phi i1 [ false, %logic.from2416 ], [ %t195, %logic.rend2426 ] - br i1 %t196, label %then2427, label %endif2429 -then2427: - %t197 = load ptr, ptr %a1 - %t198 = icmp eq ptr %t197, null - br i1 %t198, label %panic2430, label %ok2431 -panic2430: - call void @finch_panic(ptr @.str.1364, i64 556, ptr @.str.1365) - unreachable -ok2431: - %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 19 - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic2432, label %ok2433 -panic2432: - call void @finch_panic(ptr @.str.1366, i64 556, ptr @.str.1367) - unreachable -ok2433: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 18 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 - %t204 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t205 = load { ptr, i64, i64 }, ptr %t204 - store i64 -1, ptr %a206 - %t207 = load i64, ptr %t203 - %t208 = load ptr, ptr %t202 - store i64 0, ptr %a209 - br label %find.cond2434 -find.cond2434: - %t210 = load i64, ptr %a209 - %t211 = icmp slt i64 %t210, %t207 - br i1 %t211, label %find.body2435, label %find.end2438 -find.body2435: - %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } %t205, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %find.hit2436, label %find.next2437 -find.hit2436: - store i64 %t210, ptr %a206 - br label %find.end2438 -find.next2437: - %t218 = add i64 %t210, 1 - store i64 %t218, ptr %a209 - br label %find.cond2434 -find.end2438: - %t219 = load i64, ptr %a206 - %t220 = load { ptr, i64, i64 }, ptr %t199 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range2439, label %inrange2440 -range2439: - call void @finch_panic_index(ptr @.str.1368, i64 556, i64 %t219, i64 %t221) - unreachable -inrange2440: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i64 %t219 - %t225 = load %S.ast.Type, ptr %t224 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - ret %S.ast.Type %t228 -endif2429: - %t229 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t231 = load i64, ptr %t230 - %t232 = icmp sgt i64 %t231, 0 - br i1 %t232, label %then2441, label %endif2443 -then2441: - store { ptr, i64, i64 } zeroinitializer, ptr %a233 - %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - store i64 0, ptr %a235 - br label %each.cond2444 -each.cond2444: - %t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t237 = load i64, ptr %t236 - %t238 = load i64, ptr %a235 - %t239 = icmp slt i64 %t238, %t237 - br i1 %t239, label %each.body2445, label %each.end2447 -each.body2445: - %t240 = load ptr, ptr %t234 - %t241 = getelementptr inbounds %S.ast.Type, ptr %t240, i64 %t238 - %t242 = load %S.ast.Type, ptr %t241 - store %S.ast.Type %t242, ptr %a243 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a233, i32 0, i32 1 - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Type, ptr %a243 - %t247 = load %S.ast.Node, ptr %a3 - %t248 = call %S.ast.Type @finch.gen.resolve(ptr %t245, %S.ast.Type %t246, %S.ast.Node %t247) - %t249 = load i64, ptr %t244 - %t250 = add i64 %t249, 1 - call void @finch_arr_reserve(ptr %a233, i64 %t250, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t251 = load ptr, ptr %a233 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i64 %t249 - store %S.ast.Type %t248, ptr %t252 - store i64 %t250, ptr %t244 - br label %each.step2446 -each.step2446: - %t253 = load i64, ptr %a235 - %t254 = add i64 %t253, 1 - store i64 %t254, ptr %a235 - br label %each.cond2444 -each.end2447: - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic2448, label %ok2449 -panic2448: - call void @finch_panic(ptr @.str.1369, i64 564, ptr @.str.1370) - unreachable -ok2449: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 14 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - %t266 = icmp sgt i64 %t265, 0 - br i1 %t266, label %then2450, label %endif2452 -then2450: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = call i1 @finch.gen.imports(ptr %t267, { ptr, i64, i64 } %t269) - %t271 = xor i1 %t270, true - br i1 %t271, label %then2453, label %endif2455 -then2453: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a3 - %t274 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.1372, i64 36, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t286 = load { ptr, i64, i64 }, ptr %t285 - store { ptr, i64, i64 } %t284, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t284, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.1373, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t272, %S.ast.Node %t273, { ptr, i64, i64 } %t296) - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif2455 -endif2455: - %t298 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t299 = load { ptr, i64, i64 }, ptr %t298 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_copy(ptr %a301, ptr %a300) - %t302 = load { ptr, i64, i64 }, ptr %a301 - %t303 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t302, ptr %a262 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif2452 -endif2452: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a262 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = load { ptr, i64, i64 }, ptr %a233 - %t310 = load %S.ast.Node, ptr %a3 - %t311 = call %S.ast.Type @finch.gen.instStruct(ptr %t305, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t308, { ptr, i64, i64 } %t309, %S.ast.Node %t310) - call void @finch_str_drop(ptr %a262) - call void @finch.drop.arr_S_ast_Type(ptr %a233) - ret %S.ast.Type %t311 -endif2443: - %t312 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1374, i64 1, i64 0 }, ptr %a315 - %t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315) - %t317 = icmp ne i32 %t316, 0 - br i1 %t317, label %then2456, label %endif2458 -then2456: - %t318 = load ptr, ptr %a1 - %t319 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t320 = load { ptr, i64, i64 }, ptr %t319 - %t321 = call i64 @finch.gen.findStruct(ptr %t318, { ptr, i64, i64 } { ptr @.str.1375, i64 1, i64 0 }, { ptr, i64, i64 } %t320) - %t322 = icmp slt i64 %t321, 0 - br i1 %t322, label %then2459, label %endif2461 -then2459: - %t323 = load ptr, ptr %a1 - %t324 = load %S.ast.Node, ptr %a3 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t326 = load { ptr, i64, i64 }, ptr %t325 - store { ptr, i64, i64 } { ptr @.str.1376, i64 28, i64 0 }, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - %t330 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t330, ptr %a332 - store { ptr, i64, i64 } { ptr @.str.1377, i64 1, i64 0 }, ptr %a333 - call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_drop(ptr %a334) - %t335 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t335) - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif2461 -endif2461: - %t337 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1378, i64 6, i64 0 }, 0 - %t338 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_copy(ptr %a341, ptr %a340) - %t342 = load { ptr, i64, i64 }, ptr %a341 - %t343 = insertvalue %S.ast.Type %t337, { ptr, i64, i64 } %t342, 2 - %t344 = insertvalue %S.ast.Type %t343, { ptr, i64, i64 } { ptr @.str.1379, i64 1, i64 0 }, 3 - ret %S.ast.Type %t344 -endif2458: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic2462, label %ok2463 -panic2462: - call void @finch_panic(ptr @.str.1380, i64 579, ptr @.str.1381) - unreachable -ok2463: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 14 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_copy(ptr %a350, ptr %a349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t351, ptr %a352 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i32 0, i32 1 - %t355 = load i64, ptr %t354 - %t356 = icmp sgt i64 %t355, 0 - br i1 %t356, label %then2464, label %endif2466 -then2464: - %t357 = load ptr, ptr %a1 - %t358 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t359 = load { ptr, i64, i64 }, ptr %t358 - %t360 = call i1 @finch.gen.imports(ptr %t357, { ptr, i64, i64 } %t359) - %t361 = xor i1 %t360, true - br i1 %t361, label %then2467, label %endif2469 -then2467: - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Node, ptr %a3 - %t364 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.1382, i64 1, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1383, i64 36, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t376 = load { ptr, i64, i64 }, ptr %t375 - store { ptr, i64, i64 } %t374, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t374, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.1384, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - call void @finch.gen.fail(ptr %t362, %S.ast.Node %t363, { ptr, i64, i64 } %t386) - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif2469 -endif2469: - %t388 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch_str_copy(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - %t393 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t392, ptr %a352 - store { ptr, i64, i64 } %t393, ptr %a394 - call void @finch_str_drop(ptr %a394) - br label %endif2466 -endif2466: - %t395 = load ptr, ptr %a1 - %t396 = load { ptr, i64, i64 }, ptr %a352 - %t397 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t398 = load { ptr, i64, i64 }, ptr %t397 - %t399 = call i64 @finch.gen.findEnum(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398) - %t400 = icmp sge i64 %t399, 0 - br i1 %t400, label %then2470, label %endif2472 -then2470: - %t401 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1385, i64 4, i64 0 }, 0 - %t402 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - call void @finch_str_copy(ptr %a405, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - %t407 = insertvalue %S.ast.Type %t401, { ptr, i64, i64 } %t406, 2 - %t408 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t408, ptr %a409 - call void @finch_str_copy(ptr %a410, ptr %a409) - %t411 = load { ptr, i64, i64 }, ptr %a410 - %t412 = insertvalue %S.ast.Type %t407, { ptr, i64, i64 } %t411, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t412 -endif2472: - %t413 = load ptr, ptr %a1 - %t414 = load { ptr, i64, i64 }, ptr %a352 - %t415 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call i64 @finch.gen.findStruct(ptr %t413, { ptr, i64, i64 } %t414, { ptr, i64, i64 } %t416) - %t418 = icmp slt i64 %t417, 0 - br i1 %t418, label %then2473, label %endif2475 -then2473: - %t419 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 - %t421 = load i64, ptr %t420 - %t422 = icmp eq i64 %t421, 0 - br label %logic.from2476 -logic.from2476: - br i1 %t422, label %logic.rhs2477, label %logic.end2478 -logic.rhs2477: - %t423 = load ptr, ptr %a1 - %t424 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t425 = load { ptr, i64, i64 }, ptr %t424 - %t426 = call i64 @finch.gen.findStruct(ptr %t423, { ptr, i64, i64 } { ptr @.str.1386, i64 1, i64 0 }, { ptr, i64, i64 } %t425) - %t427 = icmp sge i64 %t426, 0 - br label %logic.rend2479 -logic.rend2479: - br label %logic.end2478 -logic.end2478: - %t428 = phi i1 [ false, %logic.from2476 ], [ %t427, %logic.rend2479 ] - br i1 %t428, label %then2480, label %endif2482 -then2480: - %t429 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1387, i64 6, i64 0 }, 0 - %t430 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t431 = load { ptr, i64, i64 }, ptr %t430 - store { ptr, i64, i64 } %t431, ptr %a432 - call void @finch_str_copy(ptr %a433, ptr %a432) - %t434 = load { ptr, i64, i64 }, ptr %a433 - %t435 = insertvalue %S.ast.Type %t429, { ptr, i64, i64 } %t434, 2 - %t436 = insertvalue %S.ast.Type %t435, { ptr, i64, i64 } { ptr @.str.1388, i64 1, i64 0 }, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t436 -endif2482: - %t437 = load ptr, ptr %a1 - %t438 = load %S.ast.Node, ptr %a3 - %t439 = load %S.ast.Type, ptr %a2 - %t440 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t439) - store { ptr, i64, i64 } { ptr @.str.1389, i64 24, i64 0 }, ptr %a442 - store { ptr, i64, i64 } %t440, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - store { ptr, i64, i64 } %t445, ptr %a447 - store { ptr, i64, i64 } { ptr @.str.1390, i64 1, i64 0 }, ptr %a448 - call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) - store { ptr, i64, i64 } %t445, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a446 - call void @finch.gen.fail(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a451 - call void @finch_str_drop(ptr %a451) - br label %endif2475 -endif2475: - %t452 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1391, i64 6, i64 0 }, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_copy(ptr %a456, ptr %a455) - %t457 = load { ptr, i64, i64 }, ptr %a456 - %t458 = insertvalue %S.ast.Type %t452, { ptr, i64, i64 } %t457, 2 - %t459 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t459, ptr %a460 - call void @finch_str_copy(ptr %a461, ptr %a460) - %t462 = load { ptr, i64, i64 }, ptr %a461 - %t463 = insertvalue %S.ast.Type %t458, { ptr, i64, i64 } %t462, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t463 -} - -define internal { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %p0) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1393, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1394, 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.1396, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1397, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1399, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1400, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1402, i64 1, i64 0 }, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1403, i64 0, i64 0 }, ptr %a23 - call void @finch_str_replace(ptr %a21, ptr %a20, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a25 - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t24 -} - -define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) { -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 %then2483, label %endif2485 -then2483: - ret { ptr, i64, i64 } { ptr @.str.1404, i64 4, i64 0 } -endif2485: - %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 - %a29 = 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 - %a38 = 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.1405, 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 %then2486, label %endif2488 -then2486: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1406, i64 2, i64 0 } -endif2488: - %t14 = load %S.ast.Type, ptr %a2 - %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) - br label %logic.from2489 -logic.from2489: - br i1 %t15, label %logic.end2491, label %logic.rhs2490 -logic.rhs2490: - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - 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.rend2492 -logic.rend2492: - br label %logic.end2491 -logic.end2491: - %t21 = phi i1 [ true, %logic.from2489 ], [ %t20, %logic.rend2492 ] - br i1 %t21, label %then2493, label %endif2495 -then2493: - %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.1408, i64 1, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t30 -endif2495: - %t31 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1409, i64 5, i64 0 }, ptr %a33 - %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) - %t35 = icmp ne i32 %t34, 0 - br i1 %t35, label %then2496, label %endif2498 -then2496: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1410, i64 6, i64 0 } -endif2498: - %t36 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 }, ptr %a38 - %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) - %t40 = icmp ne i32 %t39, 0 - br i1 %t40, label %then2499, label %endif2501 -then2499: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1412, i64 5, i64 0 } -endif2501: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1413, 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.from2502 -logic.from2502: - br i1 %t45, label %logic.end2504, label %logic.rhs2503 -logic.rhs2503: - %t46 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1414, i64 5, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - br label %logic.rend2505 -logic.rend2505: - br label %logic.end2504 -logic.end2504: - %t51 = phi i1 [ true, %logic.from2502 ], [ %t50, %logic.rend2505 ] - br i1 %t51, label %then2506, label %endif2508 -then2506: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1415, i64 17, i64 0 } -endif2508: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1416, 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 %then2509, label %endif2511 -then2509: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1417, i64 37, i64 0 } -endif2511: - %t57 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1418, 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 %then2512, label %endif2514 -then2512: - %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1419, i64 1, i64 0 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.1420, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = load ptr, ptr %a1 - %t77 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range2515, label %inrange2516 -range2515: - call void @finch_panic_index(ptr @.str.1421, i64 632, i64 0, i64 %t79) - unreachable -inrange2516: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0 - %t83 = load %S.ast.Type, ptr %t82 - %t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t76, %S.ast.Type %t83) - store { ptr, i64, i64 } %t75, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t75, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.1422, i64 1, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t95 -endif2514: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.1423, i64 4, i64 0 }, ptr %a98 - %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) - %t100 = icmp ne i32 %t99, 0 - br i1 %t100, label %then2517, label %endif2519 -then2517: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1424, i64 3, i64 0 } -endif2519: - %t101 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1425, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.from2520 -logic.from2520: - br i1 %t105, label %logic.end2522, label %logic.rhs2521 -logic.rhs2521: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1426, 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.rend2523 -logic.rend2523: - br label %logic.end2522 -logic.end2522: - %t111 = phi i1 [ true, %logic.from2520 ], [ %t110, %logic.rend2523 ] - br i1 %t111, label %then2524, label %endif2526 -then2524: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1427, i64 3, i64 0 } -endif2526: - %t112 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1428, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2527, label %endif2529 -then2527: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1429, i64 4, i64 0 } -endif2529: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t118) - store { ptr, i64, i64 } { ptr @.str.1430, i64 3, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.1431, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t131) - store { ptr, i64, i64 } %t129, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t132, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a133 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t138 -} - -define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) { -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 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then2530, label %endif2532 -then2530: - %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 -endif2532: - store { ptr, i64, i64 } { ptr @.str.1432, 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.1433, 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 %then2533, label %endif2535 -then2533: - %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) - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t21, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif2535 -endif2535: - %t24 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1434, 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.1435, i64 21, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) { -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 - %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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1436, 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) - store { ptr, i64, i64 } %t7, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1437, i64 1, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.1438, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - ret { ptr, i64, i64 } %t47 -} - -define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) { -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.from2536 -logic.from2536: - br i1 %t9, label %logic.end2538, label %logic.rhs2537 -logic.rhs2537: - %t10 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1439, 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.rend2539 -logic.rend2539: - br label %logic.end2538 -logic.end2538: - %t15 = phi i1 [ true, %logic.from2536 ], [ %t14, %logic.rend2539 ] - br label %logic.from2540 -logic.from2540: - br i1 %t15, label %logic.end2542, label %logic.rhs2541 -logic.rhs2541: - %t16 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1440, 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.rend2543 -logic.rend2543: - br label %logic.end2542 -logic.end2542: - %t21 = phi i1 [ true, %logic.from2540 ], [ %t20, %logic.rend2543 ] - br i1 %t21, label %then2544, label %endif2546 -then2544: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1441, i64 1, i64 0 } -endif2546: - %t22 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1442, 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 %then2547, label %endif2549 -then2547: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1443, i64 5, i64 0 } -endif2549: - %t27 = load %S.ast.Type, ptr %a1 - %t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27) - br i1 %t28, label %then2550, label %endif2552 -then2550: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1444, i64 3, i64 0 } -endif2552: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1445, 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.from2553 -logic.from2553: - br i1 %t33, label %logic.end2555, label %logic.rhs2554 -logic.rhs2554: - %t34 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1446, 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.rend2556 -logic.rend2556: - br label %logic.end2555 -logic.end2555: - %t39 = phi i1 [ true, %logic.from2553 ], [ %t38, %logic.rend2556 ] - br i1 %t39, label %then2557, label %endif2559 -then2557: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1447, i64 4, i64 0 } -endif2559: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1448, 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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.1449, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1450, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal i1 @finch.gen.owning(ptr %p0, %S.ast.Type %p1) { -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.1451, 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.from2560 -logic.from2560: - br i1 %t8, label %logic.end2562, label %logic.rhs2561 -logic.rhs2561: - %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.1452, 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.rend2563 -logic.rend2563: - br label %logic.end2562 -logic.end2562: - %t15 = phi i1 [ true, %logic.from2560 ], [ %t14, %logic.rend2563 ] - br label %logic.from2564 -logic.from2564: - br i1 %t15, label %logic.end2566, label %logic.rhs2565 -logic.rhs2565: - %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.1453, 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.rend2567 -logic.rend2567: - br label %logic.end2566 -logic.end2566: - %t22 = phi i1 [ true, %logic.from2564 ], [ %t21, %logic.rend2567 ] - br i1 %t22, label %then2568, label %endif2570 -then2568: - ret i1 true -endif2570: - %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.1454, 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 %then2571, label %endif2573 -then2571: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2574, label %ok2575 -panic2574: - call void @finch_panic(ptr @.str.1455, i64 690, ptr @.str.1456) - unreachable -ok2575: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 16 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t34 = load { ptr, i64, i64 }, ptr %t33 - %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 %range2576, label %inrange2577 -range2576: - call void @finch_panic_index(ptr @.str.1457, i64 690, i64 %t37, i64 %t39) - unreachable -inrange2577: - %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 -endif2573: - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1458, 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 %then2578, label %endif2580 -then2578: - %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 %range2581, label %inrange2582 -range2581: - call void @finch_panic_index(ptr @.str.1460, i64 697, i64 0, i64 %t10) - unreachable -inrange2582: - %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.1459, i64 4, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif2580: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1461, 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 %then2583, label %endif2585 -then2583: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 0, %t29 - br i1 %t30, label %range2586, label %inrange2587 -range2586: - call void @finch_panic_index(ptr @.str.1463, i64 700, i64 0, i64 %t29) - unreachable -inrange2587: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 0 - %t33 = load %S.ast.Type, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t33) - store { ptr, i64, i64 } { ptr @.str.1462, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1464, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range2588, label %inrange2589 -range2588: - call void @finch_panic_index(ptr @.str.1465, i64 700, i64 1, i64 %t47) - unreachable -inrange2589: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Type, ptr %t49, i64 1 - %t51 = load %S.ast.Type, ptr %t50 - %t52 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t51) - store { ptr, i64, i64 } %t44, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t44, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - ret { ptr, i64, i64 } %t58 -endif2585: - %t59 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.1466, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then2590, label %endif2592 -then2590: - %t65 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t66 = load { ptr, i64, i64 }, ptr %t65 - %t67 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t66) - store { ptr, i64, i64 } { ptr @.str.1467, i64 2, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1468, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, ptr %a81 - store { ptr, i64, i64 } %t79, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t77, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -endif2592: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1469, i64 6, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp ne i32 %t89, 0 - br i1 %t90, label %then2593, label %endif2595 -then2593: - %t91 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t92) - store { ptr, i64, i64 } { ptr @.str.1470, i64 2, i64 0 }, ptr %a95 - store { ptr, i64, i64 } %t93, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.1471, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t105) - store { ptr, i64, i64 } %t103, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t103, ptr %a110 - call void @finch_str_drop(ptr %a110) - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a107 - ret { ptr, i64, i64 } %t112 -endif2595: - %t113 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t117 -} - -define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1472, 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 %range2596, label %inrange2597 -range2596: - call void @finch_panic_index(ptr @.str.1473, i64 715, i64 %t4, i64 %t6) - unreachable -inrange2597: - %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 %range2598, label %inrange2599 -range2598: - call void @finch_panic_index(ptr @.str.1474, i64 715, i64 %t14, i64 %t16) - unreachable -inrange2599: - %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) - store { ptr, i64, i64 } %t12, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t28 -} - -define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a29 = alloca i8, align 16 - %a32 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = 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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2600, label %ok2601 -panic2600: - call void @finch_panic(ptr @.str.1475, i64 719, ptr @.str.1476) - unreachable -ok2601: - %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 %panic2602, label %ok2603 -panic2602: - call void @finch_panic(ptr @.str.1478, i64 720, ptr @.str.1479) - unreachable -ok2603: - %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.1477, i64 6, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %each.cond2604 -each.cond2604: - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = load i64, ptr %a21 - %t25 = icmp slt i64 %t24, %t23 - br i1 %t25, label %each.body2605, label %each.end2607 -each.body2605: - %t26 = load ptr, ptr %a2 - %t27 = getelementptr inbounds i8, ptr %t26, i64 %t24 - %t28 = load i8, ptr %t27 - store i8 %t28, ptr %a29 - %t30 = load i8, ptr %a29 - %t31 = zext i8 %t30 to i64 - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then2608, label %endif2610 -then2608: - %t35 = load i64, ptr %a32 - %t36 = add i64 %t35, 256 - store i64 %t36, ptr %a32 - br label %endif2610 -endif2610: - %t37 = load i64, ptr %a32 - %t38 = icmp sge i64 %t37, 32 - br label %logic.from2611 -logic.from2611: - br i1 %t38, label %logic.rhs2612, label %logic.end2613 -logic.rhs2612: - %t39 = load i64, ptr %a32 - %t40 = icmp slt i64 %t39, 127 - br label %logic.rend2614 -logic.rend2614: - br label %logic.end2613 -logic.end2613: - %t41 = phi i1 [ false, %logic.from2611 ], [ %t40, %logic.rend2614 ] - br label %logic.from2615 -logic.from2615: - br i1 %t41, label %logic.rhs2616, label %logic.end2617 -logic.rhs2616: - %t42 = load i8, ptr %a29 - %t43 = icmp ne i8 %t42, 34 - br label %logic.rend2618 -logic.rend2618: - br label %logic.end2617 -logic.end2617: - %t44 = phi i1 [ false, %logic.from2615 ], [ %t43, %logic.rend2618 ] - br label %logic.from2619 -logic.from2619: - br i1 %t44, label %logic.rhs2620, label %logic.end2621 -logic.rhs2620: - %t45 = load i8, ptr %a29 - %t46 = icmp ne i8 %t45, 92 - br label %logic.rend2622 -logic.rend2622: - br label %logic.end2621 -logic.end2621: - %t47 = phi i1 [ false, %logic.from2619 ], [ %t46, %logic.rend2622 ] - br i1 %t47, label %then2623, label %else2624 -then2623: - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t49 = load i8, ptr %a29 - call void @finch_str_from_char(ptr %a50, i8 signext %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load i64, ptr %t48 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a20 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t48 - br label %endif2625 -else2624: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t57 = load i64, ptr %a32 - %t58 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t57) - store { ptr, i64, i64 } { ptr @.str.1480, i64 1, i64 0 }, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = load i64, ptr %t56 - %t65 = add i64 %t64, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t65, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t66 = load ptr, ptr %a20 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i64 %t64 - store { ptr, i64, i64 } %t63, ptr %t67 - store i64 %t65, ptr %t56 - br label %endif2625 -endif2625: - br label %each.step2606 -each.step2606: - %t68 = load i64, ptr %a21 - %t69 = add i64 %t68, 1 - store i64 %t69, ptr %a21 - br label %each.cond2604 -each.end2607: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic2626, label %ok2627 -panic2626: - call void @finch_panic(ptr @.str.1481, i64 733, ptr @.str.1482) - unreachable -ok2627: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 2 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1483, i64 34, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = add i64 %t80, 1 - call void @finch_str_from_int(ptr %a82, i64 %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t78, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t78, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1484, i64 9, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1485, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a20, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t94, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.1486, i64 4, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load i64, ptr %t73 - %t111 = add i64 %t110, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t112 = load ptr, ptr %t72 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 - store { ptr, i64, i64 } %t109, ptr %t113 - store i64 %t111, ptr %t73 - %t114 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_str(ptr %a20) - ret { ptr, i64, i64 } %t114 -} - -define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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.1487, 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.1488, i64 6, i64 0 }, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t18 = load i64, ptr %t17 - call void @finch_str_from_int(ptr %a19, i64 %t18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t16, ptr %a24 - call void @finch_str_drop(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1489, i64 9, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t31, 0 - %t33 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1490, i64 3, i64 0 }) - %t34 = insertvalue %S.gen.Val %t32, %S.ast.Type %t33, 1 - %t35 = insertvalue %S.gen.Val %t34, i1 true, 2 - call void @finch_str_drop(ptr %a6) - ret %S.gen.Val %t35 -} - -define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1491, 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.1492, 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 %panic2628, label %ok2629 -panic2628: - call void @finch_panic(ptr @.str.1493, i64 749, ptr @.str.1494) - unreachable -ok2629: - %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 %range2630, label %inrange2631 -range2630: - call void @finch_panic_index(ptr @.str.1495, i64 749, i64 %t22, i64 %t24) - unreachable -inrange2631: - %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.1496, 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.1497, i64 6, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t47 = load i64, ptr %t46 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t45, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t45, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1498, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1499, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t73, { ptr, i64, i64 } { ptr @.str.1500, i64 11, i64 0 }) - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic2632, label %ok2633 -panic2632: - call void @finch_panic(ptr @.str.1501, i64 753, ptr @.str.1502) - unreachable -ok2633: - %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 9 - store i1 true, ptr %t76 - %t77 = load ptr, ptr %a1 - %t78 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t77, { ptr, i64, i64 } %t78) - call void @finch_str_drop(ptr %a34) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1503, 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.1504, 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.1505, 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.1506, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = load { ptr, i64, i64 }, ptr %a30 - %t33 = load { ptr, i64, i64 }, ptr %a7 - %t34 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.condBr(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, { ptr, i64, i64 } %t34) - %t35 = load ptr, ptr %a1 - %t36 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.gen.label(ptr %t35, { ptr, i64, i64 } %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic2634, label %ok2635 -panic2634: - call void @finch_panic(ptr @.str.1507, i64 763, ptr @.str.1508) - unreachable -ok2635: - %t40 = getelementptr inbounds %S.gen.Gen, ptr %t38, i32 0, i32 1 - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t40 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range2636, label %inrange2637 -range2636: - call void @finch_panic_index(ptr @.str.1509, i64 763, i64 %t42, i64 %t44) - unreachable -inrange2637: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t42 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t37, { ptr, i64, i64 } %t48) - store { ptr, i64, i64 } %t49, ptr %a50 - %t51 = load ptr, ptr %a1 - %t52 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.1510, i64 33, i64 0 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1511, i64 6, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t61, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t61, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1512, i64 6, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t76, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.1513, i64 6, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.1514, i64 1, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - call void @finch.gen.emit(ptr %t51, { ptr, i64, i64 } %t98) - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t100, { ptr, i64, i64 } { ptr @.str.1515, i64 11, i64 0 }) - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic2638, label %ok2639 -panic2638: - call void @finch_panic(ptr @.str.1516, i64 766, ptr @.str.1517) - unreachable -ok2639: - %t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 9 - store i1 true, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t104, { ptr, i64, i64 } %t105) - call void @finch_str_drop(ptr %a50) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2640, label %ok2641 -panic2640: - call void @finch_panic(ptr @.str.1518, i64 781, ptr @.str.1519) - unreachable -ok2641: - %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 %panic2642, label %ok2643 -panic2642: - call void @finch_panic(ptr @.str.1520, i64 781, ptr @.str.1521) - unreachable -ok2643: - %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 %panic2644, label %ok2645 -panic2644: - call void @finch_panic(ptr @.str.1522, i64 781, ptr @.str.1523) - unreachable -ok2645: - %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 %panic2646, label %ok2647 -panic2646: - call void @finch_panic(ptr @.str.1524, i64 781, ptr @.str.1525) - unreachable -ok2647: - %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 %panic2648, label %ok2649 -panic2648: - call void @finch_panic(ptr @.str.1526, i64 781, ptr @.str.1527) - unreachable -ok2649: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 36 - %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 %panic2650, label %ok2651 -panic2650: - call void @finch_panic(ptr @.str.1528, i64 782, ptr @.str.1529) - unreachable -ok2651: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 36 - 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 %panic2652, label %ok2653 -panic2652: - call void @finch_panic(ptr @.str.1530, i64 784, ptr @.str.1531) - unreachable -ok2653: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 4 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a37 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic2654, label %ok2655 -panic2654: - call void @finch_panic(ptr @.str.1532, i64 785, ptr @.str.1533) - unreachable -ok2655: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 5 - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch.copy.arr_str(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } %t53, ptr %t50 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.drop.arr_str(ptr %a55) - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic2656, label %ok2657 -panic2656: - call void @finch_panic(ptr @.str.1534, i64 786, ptr @.str.1535) - unreachable -ok2657: - %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 6 - store i64 0, ptr %t58 - %t59 = load ptr, ptr %a1 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic2658, label %ok2659 -panic2658: - call void @finch_panic(ptr @.str.1536, i64 787, ptr @.str.1537) - unreachable -ok2659: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 9 - store i1 false, ptr %t61 - %t62 = load %S.gen.Saved, ptr %a33 - call void @finch.drop.arr_str(ptr %a37) - ret %S.gen.Saved %t62 -} - -define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) { -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Saved %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2660, label %ok2661 -panic2660: - call void @finch_panic(ptr @.str.1538, i64 792, ptr @.str.1539) - unreachable -ok2661: - %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.1540, 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 %panic2662, label %ok2663 -panic2662: - call void @finch_panic(ptr @.str.1541, i64 792, ptr @.str.1542) - unreachable -ok2663: - %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.1543, 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) - store { ptr, i64, i64 } %t12, ptr %a23 - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.1544, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic2664, label %ok2665 -panic2664: - call void @finch_panic(ptr @.str.1545, i64 792, ptr @.str.1546) - unreachable -ok2665: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 4 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1547, i64 1, i64 0 }, ptr %a35 - call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) - %t37 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t30, ptr %a39 - store { ptr, i64, i64 } %t37, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t30, ptr %a41 - call void @finch_str_drop(ptr %a41) - store { ptr, i64, i64 } %t37, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.1548, i64 3, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %t7 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t6, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t6 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 - store { ptr, i64, i64 } %t48, ptr %t52 - store i64 %t50, ptr %t7 - %t53 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic2666, label %ok2667 -panic2666: - call void @finch_panic(ptr @.str.1549, i64 793, ptr @.str.1550) - unreachable -ok2667: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 4 - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch.copy.arr_str(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - %t61 = load { ptr, i64, i64 }, ptr %t57 - store { ptr, i64, i64 } %t60, ptr %t57 - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch.drop.arr_str(ptr %a62) - %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2668, label %ok2669 -panic2668: - call void @finch_panic(ptr @.str.1551, i64 794, ptr @.str.1552) - unreachable -ok2669: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 5 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch.copy.arr_str(ptr %a69, ptr %a68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - %t71 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t70, ptr %t67 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch.drop.arr_str(ptr %a72) - %t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 - %t74 = load i64, ptr %t73 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2670, label %ok2671 -panic2670: - call void @finch_panic(ptr @.str.1553, i64 795, ptr @.str.1554) - unreachable -ok2671: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 6 - store i64 %t74, ptr %t77 - %t78 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3 - %t79 = load i1, ptr %t78 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic2672, label %ok2673 -panic2672: - call void @finch_panic(ptr @.str.1555, i64 796, ptr @.str.1556) - unreachable -ok2673: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 9 - store i1 %t79, ptr %t82 - %t83 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4 - %t84 = load i64, ptr %t83 - %t85 = load ptr, ptr %a1 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic2674, label %ok2675 -panic2674: - call void @finch_panic(ptr @.str.1557, i64 797, ptr @.str.1558) - unreachable -ok2675: - %t87 = getelementptr inbounds %S.gen.Gen, ptr %t85, i32 0, i32 36 - store i64 %t84, ptr %t87 - 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - 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.1559, 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.1560, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1561, 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.1562, 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.1563, 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.1564, 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.1565, 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.1566, 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.1567, i64 2, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a44 - %t47 = load { ptr, i64, i64 }, ptr %a13 - %t48 = load { ptr, i64, i64 }, ptr %a16 - call void @finch.gen.condBr(ptr %t45, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t47, { ptr, i64, i64 } %t48) - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.label(ptr %t49, { ptr, i64, i64 } %t50) - %t51 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %t55 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t68 = call ptr @finch_alloc(i64 %t67) - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 0 - store { ptr, i64, i64 } %t54, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 1 - store { ptr, i64, i64 } %t58, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 2 - store { ptr, i64, i64 } %t62, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 3 - store { ptr, i64, i64 } %t66, ptr %t72 - %t73 = insertvalue { ptr, i64, i64 } undef, ptr %t68, 0 - %t74 = insertvalue { ptr, i64, i64 } %t73, i64 4, 1 - %t75 = insertvalue { ptr, i64, i64 } %t74, i64 4, 2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a16) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t75 -} - -define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2676, label %inrange2677 -range2676: - call void @finch_panic_index(ptr @.str.1569, i64 817, i64 0, i64 %t5) - unreachable -inrange2677: - %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.1568, 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.1571, 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.1572, i64 3, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t23, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a2 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 0, %t27 - br i1 %t28, label %range2678, label %inrange2679 -range2678: - call void @finch_panic_index(ptr @.str.1573, i64 818, i64 0, i64 %t27) - unreachable -inrange2679: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 - %t31 = load { ptr, i64, i64 }, ptr %t30 - call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1570, i64 3, i64 0 }, { ptr, i64, i64 } %t24, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t24, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a2 - %t35 = extractvalue { ptr, i64, i64 } %t34, 1 - %t36 = icmp uge i64 1, %t35 - br i1 %t36, label %range2680, label %inrange2681 -range2680: - call void @finch_panic_index(ptr @.str.1574, i64 819, i64 1, i64 %t35) - unreachable -inrange2681: - %t37 = extractvalue { ptr, i64, i64 } %t34, 0 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 1 - %t39 = load { ptr, i64, i64 }, ptr %t38 - call void @finch.gen.br(ptr %t33, { ptr, i64, i64 } %t39) - %t40 = load ptr, ptr %a1 - %t41 = load { ptr, i64, i64 }, ptr %a2 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 2, %t42 - br i1 %t43, label %range2682, label %inrange2683 -range2682: - call void @finch_panic_index(ptr @.str.1575, i64 820, i64 2, i64 %t42) - unreachable -inrange2683: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 2 - %t46 = load { ptr, i64, i64 }, ptr %t45 - call void @finch.gen.label(ptr %t40, { ptr, i64, i64 } %t46) - call void @finch_str_drop(ptr %a11) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1576, 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 %then2684, label %else2685 -then2684: - %t11 = load ptr, ptr %a1 - %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1577, 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.1578, i64 6, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t27, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.1579, i64 1, i64 0 }, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t27, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif2686 -else2685: - %t34 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1580, i64 5, i64 0 }, ptr %a37 - %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) - %t39 = icmp ne i32 %t38, 0 - br label %logic.from2687 -logic.from2687: - br i1 %t39, label %logic.end2689, label %logic.rhs2688 -logic.rhs2688: - %t40 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1581, 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.rend2690 -logic.rend2690: - br label %logic.end2689 -logic.end2689: - %t46 = phi i1 [ true, %logic.from2687 ], [ %t45, %logic.rend2690 ] - br label %logic.from2691 -logic.from2691: - br i1 %t46, label %logic.end2693, label %logic.rhs2692 -logic.rhs2692: - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1582, i64 6, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from2694 -logic.from2694: - br i1 %t52, label %logic.rhs2695, label %logic.end2696 -logic.rhs2695: - %t53 = load ptr, ptr %a1 - %t54 = load %S.ast.Type, ptr %a4 - %t55 = call i1 @finch.gen.owning(ptr %t53, %S.ast.Type %t54) - br label %logic.rend2697 -logic.rend2697: - br label %logic.end2696 -logic.end2696: - %t56 = phi i1 [ false, %logic.from2694 ], [ %t55, %logic.rend2697 ] - br label %logic.rend2698 -logic.rend2698: - br label %logic.end2693 -logic.end2693: - %t57 = phi i1 [ true, %logic.from2691 ], [ %t56, %logic.rend2698 ] - br i1 %t57, label %then2699, label %else2700 -then2699: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1583, i64 10, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1584, i64 5, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1585, i64 6, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t82, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1586, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.emit(ptr %t58, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif2701 -else2700: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a4 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - %t99 = load ptr, ptr %a1 - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Type, ptr %a4 - %t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101) - %t103 = load { ptr, i64, i64 }, ptr %a3 - %t104 = call { ptr, i64, i64 } @finch.gen.load(ptr %t99, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a2 - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t98, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2701 -endif2701: - br label %endif2686 -endif2686: - ret void -} - -define internal void @finch.drop.S_gen_Saved(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - ret void -} - -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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.StructDef, align 16 - %a365 = alloca %S.gen.StructDef, align 16 - %a367 = alloca %S.gen.StructDef, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca i64, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1587, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2702, label %ok2703 -panic2702: - call void @finch_panic(ptr @.str.1588, i64 835, ptr @.str.1589) - unreachable -ok2703: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2704, label %endif2706 -then2704: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2706: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2707, label %ok2708 -panic2707: - call void @finch_panic(ptr @.str.1590, i64 838, ptr @.str.1591) - unreachable -ok2708: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1592, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2709, label %else2710 -then2709: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2712, label %inrange2713 -range2712: - call void @finch_panic_index(ptr @.str.1593, i64 841, i64 0, i64 %t41) - unreachable -inrange2713: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load ptr, ptr %a1 - %t52 = load %S.ast.Type, ptr %a49 - %t53 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t51, %S.ast.Type %t52) - store { ptr, i64, i64 } { ptr @.str.1594, i64 55, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.1595, i64 1, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.emit(ptr %t50, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Type, ptr %a49 - %t67 = call i1 @finch.gen.owning(ptr %t65, %S.ast.Type %t66) - br i1 %t67, label %then2714, label %endif2716 -then2714: - %t68 = load ptr, ptr %a1 - %t69 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.1596, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1597, i64 4, i64 0 }) - store { ptr, i64, i64 } %t69, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t71, { ptr, i64, i64 } { ptr @.str.1598, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1599, i64 4, i64 0 }) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t75, { ptr, i64, i64 } { ptr @.str.1601, i64 64, i64 0 }) - %t77 = call { ptr, i64, i64 } @finch.gen.load(ptr %t74, { ptr, i64, i64 } { ptr @.str.1600, i64 3, i64 0 }, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - store { ptr, i64, i64 } %t77, ptr %a79 - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a79 - %t82 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t80, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Type, ptr %a49 - %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) - store { ptr, i64, i64 } { ptr @.str.1602, i64 23, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.1603, i64 6, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1604, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a83 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 3, %t110 - br i1 %t111, label %range2717, label %inrange2718 -range2717: - call void @finch_panic_index(ptr @.str.1605, i64 848, i64 3, i64 %t110) - unreachable -inrange2718: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 3 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t108, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t108, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t84, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Type, ptr %a49 - %t126 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t124, %S.ast.Type %t125) - store { ptr, i64, i64 } { ptr @.str.1606, i64 23, i64 0 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1607, i64 6, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t136, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t136, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.1608, i64 6, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - store { ptr, i64, i64 } %t142, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a143 - %t148 = load { ptr, i64, i64 }, ptr %a83 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 3, %t149 - br i1 %t150, label %range2719, label %inrange2720 -range2719: - call void @finch_panic_index(ptr @.str.1609, i64 849, i64 3, i64 %t149) - unreachable -inrange2720: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 3 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t147, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t147, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = call { ptr, i64, i64 } @finch.gen.op(ptr %t123, { ptr, i64, i64 } %t158) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - store { ptr, i64, i64 } %t159, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a122 - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load %S.ast.Type, ptr %a49 - call void @finch.gen.copyAt(ptr %t162, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t164, %S.ast.Type %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.loopEnd(ptr %t166, { ptr, i64, i64 } %t167) - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a122) - call void @finch.drop.arr_str(ptr %a83) - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a73) - call void @finch_str_drop(ptr %a70) - br label %endif2716 -endif2716: - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2711 -else2710: - %t168 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.1610, i64 3, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then2721, label %else2722 -then2721: - %t174 = load ptr, ptr %a1 - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Type, ptr %a2 - %t177 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t175, %S.ast.Type %t176) - store { ptr, i64, i64 } { ptr @.str.1611, i64 55, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t177, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1612, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 0, %t192 - br i1 %t193, label %range2724, label %inrange2725 -range2724: - call void @finch_panic_index(ptr @.str.1613, i64 855, i64 0, i64 %t192) - unreachable -inrange2725: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Type, ptr %t194, i64 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = call i1 @finch.gen.owning(ptr %t189, %S.ast.Type %t196) - br label %logic.from2726 -logic.from2726: - br i1 %t197, label %logic.end2728, label %logic.rhs2727 -logic.rhs2727: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t200 = load { ptr, i64, i64 }, ptr %t199 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 1, %t201 - br i1 %t202, label %range2729, label %inrange2730 -range2729: - call void @finch_panic_index(ptr @.str.1614, i64 855, i64 1, i64 %t201) - unreachable -inrange2730: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.ast.Type, ptr %t203, i64 1 - %t205 = load %S.ast.Type, ptr %t204 - %t206 = call i1 @finch.gen.owning(ptr %t198, %S.ast.Type %t205) - br label %logic.rend2731 -logic.rend2731: - br label %logic.end2728 -logic.end2728: - %t207 = phi i1 [ true, %logic.from2726 ], [ %t206, %logic.rend2731 ] - br i1 %t207, label %then2732, label %endif2734 -then2732: - %t208 = load ptr, ptr %a1 - %t209 = load ptr, ptr %a1 - %t210 = load ptr, ptr %a1 - %t211 = load %S.ast.Type, ptr %a2 - %t212 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t210, %S.ast.Type %t211) - store { ptr, i64, i64 } { ptr @.str.1616, i64 23, i64 0 }, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.1617, i64 24, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t209, { ptr, i64, i64 } %t222) - store { ptr, i64, i64 } %t222, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = call { ptr, i64, i64 } @finch.gen.load(ptr %t208, { ptr, i64, i64 } { ptr @.str.1615, i64 3, i64 0 }, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t225, ptr %a227 - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a227 - %t230 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t228, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a2 - %t234 = load { ptr, i64, i64 }, ptr %a231 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 3, %t235 - br i1 %t236, label %range2735, label %inrange2736 -range2735: - call void @finch_panic_index(ptr @.str.1619, i64 859, i64 3, i64 %t235) - unreachable -inrange2736: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 3 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } { ptr @.str.1618, i64 4, i64 0 }, %S.ast.Type %t233, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t240, ptr %a241 - %t242 = load ptr, ptr %a1 - %t243 = load %S.ast.Type, ptr %a2 - %t244 = load { ptr, i64, i64 }, ptr %a231 - %t245 = extractvalue { ptr, i64, i64 } %t244, 1 - %t246 = icmp uge i64 3, %t245 - br i1 %t246, label %range2737, label %inrange2738 -range2737: - call void @finch_panic_index(ptr @.str.1621, i64 860, i64 3, i64 %t245) - unreachable -inrange2738: - %t247 = extractvalue { ptr, i64, i64 } %t244, 0 - %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i64 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - %t250 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t242, { ptr, i64, i64 } { ptr @.str.1620, i64 4, i64 0 }, %S.ast.Type %t243, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t252, { ptr, i64, i64 } { ptr @.str.1622, i64 10, i64 0 }) - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t255, { ptr, i64, i64 } { ptr @.str.1623, i64 10, i64 0 }) - store { ptr, i64, i64 } %t256, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a1 - %t260 = load ptr, ptr %a1 - %t261 = load ptr, ptr %a1 - %t262 = load ptr, ptr %a1 - %t263 = load %S.ast.Type, ptr %a2 - %t264 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t262, %S.ast.Type %t263) - store { ptr, i64, i64 } { ptr @.str.1626, i64 23, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_drop(ptr %a268) - %t269 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t269, ptr %a271 - store { ptr, i64, i64 } { ptr @.str.1627, i64 6, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = load { ptr, i64, i64 }, ptr %a241 - store { ptr, i64, i64 } %t274, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t274, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.1628, i64 14, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t261, { ptr, i64, i64 } %t285) - store { ptr, i64, i64 } %t285, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = call { ptr, i64, i64 } @finch.gen.load(ptr %t260, { ptr, i64, i64 } { ptr @.str.1625, i64 3, i64 0 }, { ptr, i64, i64 } %t286) - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_drop(ptr %a289) - store { ptr, i64, i64 } { ptr @.str.1624, i64 12, i64 0 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1629, i64 3, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t259, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a254 - %t303 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.condBr(ptr %t258, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a254 - call void @finch.gen.label(ptr %t305, { ptr, i64, i64 } %t306) - %t307 = load ptr, ptr %a1 - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a251 - %t310 = load %S.ast.Type, ptr %a2 - %t311 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310, i64 1) - %t312 = load ptr, ptr %a1 - %t313 = load { ptr, i64, i64 }, ptr %a241 - %t314 = load %S.ast.Type, ptr %a2 - %t315 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t312, { ptr, i64, i64 } %t313, %S.ast.Type %t314, i64 1) - %t316 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %t316 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 0, %t318 - br i1 %t319, label %range2739, label %inrange2740 -range2739: - call void @finch_panic_index(ptr @.str.1630, i64 865, i64 0, i64 %t318) - unreachable -inrange2740: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds %S.ast.Type, ptr %t320, i64 0 - %t322 = load %S.ast.Type, ptr %t321 - call void @finch.gen.copyAt(ptr %t307, { ptr, i64, i64 } %t311, { ptr, i64, i64 } %t315, %S.ast.Type %t322) - store { ptr, i64, i64 } %t311, ptr %a323 - call void @finch_str_drop(ptr %a323) - store { ptr, i64, i64 } %t315, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load ptr, ptr %a1 - %t326 = load ptr, ptr %a1 - %t327 = load { ptr, i64, i64 }, ptr %a251 - %t328 = load %S.ast.Type, ptr %a2 - %t329 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t326, { ptr, i64, i64 } %t327, %S.ast.Type %t328, i64 2) - %t330 = load ptr, ptr %a1 - %t331 = load { ptr, i64, i64 }, ptr %a241 - %t332 = load %S.ast.Type, ptr %a2 - %t333 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t330, { ptr, i64, i64 } %t331, %S.ast.Type %t332, i64 2) - %t334 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t335 = load { ptr, i64, i64 }, ptr %t334 - %t336 = extractvalue { ptr, i64, i64 } %t335, 1 - %t337 = icmp uge i64 1, %t336 - br i1 %t337, label %range2741, label %inrange2742 -range2741: - call void @finch_panic_index(ptr @.str.1631, i64 866, i64 1, i64 %t336) - unreachable -inrange2742: - %t338 = extractvalue { ptr, i64, i64 } %t335, 0 - %t339 = getelementptr inbounds %S.ast.Type, ptr %t338, i64 1 - %t340 = load %S.ast.Type, ptr %t339 - call void @finch.gen.copyAt(ptr %t325, { ptr, i64, i64 } %t329, { ptr, i64, i64 } %t333, %S.ast.Type %t340) - store { ptr, i64, i64 } %t329, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t333, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - %t344 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.br(ptr %t343, { ptr, i64, i64 } %t344) - %t345 = load ptr, ptr %a1 - %t346 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.label(ptr %t345, { ptr, i64, i64 } %t346) - %t347 = load ptr, ptr %a1 - %t348 = load { ptr, i64, i64 }, ptr %a231 - call void @finch.gen.loopEnd(ptr %t347, { ptr, i64, i64 } %t348) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a254) - call void @finch_str_drop(ptr %a251) - call void @finch_str_drop(ptr %a241) - call void @finch.drop.arr_str(ptr %a231) - call void @finch_str_drop(ptr %a227) - br label %endif2734 -endif2734: - br label %endif2723 -else2722: - %t349 = load ptr, ptr %a1 - %t350 = icmp eq ptr %t349, null - br i1 %t350, label %panic2743, label %ok2744 -panic2743: - call void @finch_panic(ptr @.str.1632, i64 872, ptr @.str.1633) - unreachable -ok2744: - %t351 = getelementptr inbounds %S.gen.Gen, ptr %t349, i32 0, i32 16 - %t352 = load ptr, ptr %a1 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = load { ptr, i64, i64 }, ptr %t353 - %t355 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t356 = load { ptr, i64, i64 }, ptr %t355 - %t357 = call i64 @finch.gen.findStruct(ptr %t352, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356) - %t358 = load { ptr, i64, i64 }, ptr %t351 - %t359 = extractvalue { ptr, i64, i64 } %t358, 1 - %t360 = icmp uge i64 %t357, %t359 - br i1 %t360, label %range2745, label %inrange2746 -range2745: - call void @finch_panic_index(ptr @.str.1634, i64 872, i64 %t357, i64 %t359) - unreachable -inrange2746: - %t361 = extractvalue { ptr, i64, i64 } %t358, 0 - %t362 = getelementptr inbounds %S.gen.StructDef, ptr %t361, i64 %t357 - %t363 = load %S.gen.StructDef, ptr %t362 - store %S.gen.StructDef %t363, ptr %a364 - call void @finch.copy.S_gen_StructDef(ptr %a365, ptr %a364) - %t366 = load %S.gen.StructDef, ptr %a365 - store %S.gen.StructDef %t366, ptr %a367 - %t368 = load ptr, ptr %a1 - %t369 = load %S.ast.Type, ptr %a2 - %t370 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t368, %S.ast.Type %t369) - store { ptr, i64, i64 } %t370, ptr %a371 - %t372 = load ptr, ptr %a1 - %t373 = load { ptr, i64, i64 }, ptr %a371 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } { ptr @.str.1635, i64 4, i64 0 }) - call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } %t373, { ptr, i64, i64 } %t376, { ptr, i64, i64 } { ptr @.str.1636, i64 4, i64 0 }) - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t380 = load i64, ptr %t379 - store i64 0, ptr %a381 - br label %for.cond2747 -for.cond2747: - %t382 = load i64, ptr %a381 - %t383 = icmp slt i64 %t382, %t380 - br i1 %t383, label %for.body2748, label %for.end2750 -for.body2748: - %t384 = load ptr, ptr %a1 - %t385 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t386 = load i64, ptr %a381 - %t387 = load { ptr, i64, i64 }, ptr %t385 - %t388 = extractvalue { ptr, i64, i64 } %t387, 1 - %t389 = icmp uge i64 %t386, %t388 - br i1 %t389, label %range2751, label %inrange2752 -range2751: - call void @finch_panic_index(ptr @.str.1637, i64 876, i64 %t386, i64 %t388) - unreachable -inrange2752: - %t390 = extractvalue { ptr, i64, i64 } %t387, 0 - %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i64 %t386 - %t392 = load %S.ast.Type, ptr %t391 - %t393 = call i1 @finch.gen.owning(ptr %t384, %S.ast.Type %t392) - br i1 %t393, label %then2753, label %endif2755 -then2753: - %t394 = load ptr, ptr %a1 - %t395 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1638, i64 23, i64 0 }, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.1639, i64 23, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t406 = load i64, ptr %a381 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range2756, label %inrange2757 -range2756: - call void @finch_panic_index(ptr @.str.1640, i64 877, i64 %t406, i64 %t408) - unreachable -inrange2757: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds i64, ptr %t410, i64 %t406 - %t412 = load i64, ptr %t411 - call void @finch_str_from_int(ptr %a413, i64 %t412) - %t414 = load { ptr, i64, i64 }, ptr %a413 - store { ptr, i64, i64 } %t404, ptr %a416 - store { ptr, i64, i64 } %t414, ptr %a417 - call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) - store { ptr, i64, i64 } %t404, ptr %a418 - call void @finch_str_drop(ptr %a418) - store { ptr, i64, i64 } %t414, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a415 - %t421 = call { ptr, i64, i64 } @finch.gen.op(ptr %t394, { ptr, i64, i64 } %t420) - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - store { ptr, i64, i64 } %t421, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1641, i64 23, i64 0 }, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.1642, i64 23, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t436 = load i64, ptr %a381 - %t437 = load { ptr, i64, i64 }, ptr %t435 - %t438 = extractvalue { ptr, i64, i64 } %t437, 1 - %t439 = icmp uge i64 %t436, %t438 - br i1 %t439, label %range2758, label %inrange2759 -range2758: - call void @finch_panic_index(ptr @.str.1643, i64 878, i64 %t436, i64 %t438) - unreachable -inrange2759: - %t440 = extractvalue { ptr, i64, i64 } %t437, 0 - %t441 = getelementptr inbounds i64, ptr %t440, i64 %t436 - %t442 = load i64, ptr %t441 - call void @finch_str_from_int(ptr %a443, i64 %t442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a446 - store { ptr, i64, i64 } %t444, ptr %a447 - call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447) - store { ptr, i64, i64 } %t434, ptr %a448 - call void @finch_str_drop(ptr %a448) - store { ptr, i64, i64 } %t444, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a445 - %t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t424, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t451, ptr %a453 - %t454 = load ptr, ptr %a1 - %t455 = load { ptr, i64, i64 }, ptr %a423 - %t456 = load { ptr, i64, i64 }, ptr %a453 - %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t458 = load i64, ptr %a381 - %t459 = load { ptr, i64, i64 }, ptr %t457 - %t460 = extractvalue { ptr, i64, i64 } %t459, 1 - %t461 = icmp uge i64 %t458, %t460 - br i1 %t461, label %range2760, label %inrange2761 -range2760: - call void @finch_panic_index(ptr @.str.1644, i64 879, i64 %t458, i64 %t460) - unreachable -inrange2761: - %t462 = extractvalue { ptr, i64, i64 } %t459, 0 - %t463 = getelementptr inbounds %S.ast.Type, ptr %t462, i64 %t458 - %t464 = load %S.ast.Type, ptr %t463 - call void @finch.gen.copyAt(ptr %t454, { ptr, i64, i64 } %t455, { ptr, i64, i64 } %t456, %S.ast.Type %t464) - call void @finch_str_drop(ptr %a453) - call void @finch_str_drop(ptr %a423) - br label %endif2755 -endif2755: - br label %for.step2749 -for.step2749: - %t465 = load i64, ptr %a381 - %t466 = add i64 %t465, 1 - store i64 %t466, ptr %a381 - br label %for.cond2747 -for.end2750: - call void @finch_str_drop(ptr %a371) - call void @finch.drop.S_gen_StructDef(ptr %a367) - br label %endif2723 -endif2723: - br label %endif2711 -endif2711: - %t467 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t467, { ptr, i64, i64 } { ptr @.str.1645, i64 8, i64 0 }) - %t468 = load ptr, ptr %a1 - %t469 = load %S.gen.Saved, ptr %a32 - %t470 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1646, i64 21, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.1647, i64 20, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - call void @finch.gen.endHelper(ptr %t468, %S.gen.Saved %t469, { ptr, i64, i64 } %t479) - store { ptr, i64, i64 } %t479, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t481 -} - -define internal void @finch.drop.S_gen_Val(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.copyValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -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 %S.gen.Val, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %then2762, label %endif2764 -then2762: - %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 -endif2764: - %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 %S.gen.Val %t22, ptr %a24 - call void @finch.drop.S_gen_Val(ptr %a24) - store { ptr, i64, i64 } %t23, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t27, %S.ast.Type %t28) - %t30 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t26, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a32 - %t35 = load { ptr, i64, i64 }, ptr %a25 - %t36 = load %S.ast.Type, ptr %a3 - call void @finch.gen.copyAt(ptr %t33, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t35, %S.ast.Type %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Type, ptr %a3 - %t40 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t38, %S.ast.Type %t39) - %t41 = load { ptr, i64, i64 }, ptr %a32 - %t42 = call { ptr, i64, i64 } @finch.gen.load(ptr %t37, { ptr, i64, i64 } %t40, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_drop(ptr %a43) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.gen.dropAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - %t7 = xor i1 %t6, true - br i1 %t7, label %then2765, label %endif2767 -then2765: - ret void -endif2767: - %t8 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t9 = load { ptr, i64, i64 }, ptr %t8 - store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1648, 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 %then2768, label %else2769 -then2768: - %t14 = load ptr, ptr %a1 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1649, i64 30, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1650, i64 1, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.emit(ptr %t14, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2770 -else2769: - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.dropFn(ptr %t27, %S.ast.Type %t28) - store { ptr, i64, i64 } { ptr @.str.1651, i64 10, i64 0 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1652, i64 5, i64 0 }, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t39, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1653, i64 1, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.emit(ptr %t26, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif2770 -endif2770: - ret void -} - -define internal void @finch.gen.dropValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a16 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.gen.Val, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2771, label %endif2773 -then2771: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %t13 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t12, 0 - %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - %t18 = insertvalue %S.gen.Val %t13, %S.ast.Type %t17, 1 - %t19 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t8, %S.gen.Val %t18) - store %S.gen.Val %t18, ptr %a20 - call void @finch.drop.S_gen_Val(ptr %a20) - %t21 = load %S.ast.Type, ptr %a3 - call void @finch.gen.dropAt(ptr %t7, { ptr, i64, i64 } %t19, %S.ast.Type %t21) - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_drop(ptr %a22) - br label %endif2773 -endif2773: - ret void -} - -define internal void @finch.gen.release(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2774 -logic.from2774: - br i1 %t4, label %logic.rhs2775, label %logic.end2776 -logic.rhs2775: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2777 -logic.rend2777: - br label %logic.end2776 -logic.end2776: - %t9 = phi i1 [ false, %logic.from2774 ], [ %t8, %logic.rend2777 ] - br label %logic.from2778 -logic.from2778: - br i1 %t9, label %logic.rhs2779, label %logic.end2780 -logic.rhs2779: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2781 -logic.rend2781: - br label %logic.end2780 -logic.end2780: - %t14 = phi i1 [ false, %logic.from2778 ], [ %t13, %logic.rend2781 ] - br label %logic.from2782 -logic.from2782: - br i1 %t14, label %logic.rhs2783, label %logic.end2784 -logic.rhs2783: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2785 -logic.rend2785: - br label %logic.end2784 -logic.end2784: - %t19 = phi i1 [ false, %logic.from2782 ], [ %t18, %logic.rend2785 ] - br i1 %t19, label %then2786, label %endif2788 -then2786: - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t24 = load %S.ast.Type, ptr %t23 - call void @finch.gen.dropValue(ptr %t20, { ptr, i64, i64 } %t22, %S.ast.Type %t24) - br label %endif2788 -endif2788: - ret void -} - -define internal i1 @finch.gen.isConstant({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1655, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_starts(ptr %a3, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - %t8 = xor i1 %t7, true - ret i1 %t8 -} - -define internal { ptr, i64, i64 } @finch.gen.dropFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.gen.StructDef, align 16 - %a249 = alloca %S.gen.StructDef, align 16 - %a251 = alloca %S.gen.StructDef, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca i64, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1656, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2789, label %ok2790 -panic2789: - call void @finch_panic(ptr @.str.1657, i64 930, ptr @.str.1658) - unreachable -ok2790: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2791, label %endif2793 -then2791: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2793: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2794, label %ok2795 -panic2794: - call void @finch_panic(ptr @.str.1659, i64 933, ptr @.str.1660) - unreachable -ok2795: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1661, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2796, label %else2797 -then2796: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2799, label %inrange2800 -range2799: - call void @finch_panic_index(ptr @.str.1662, i64 936, i64 0, i64 %t41) - unreachable -inrange2800: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load %S.ast.Type, ptr %a49 - %t52 = call i1 @finch.gen.owning(ptr %t50, %S.ast.Type %t51) - br i1 %t52, label %then2801, label %endif2803 -then2801: - %t53 = load ptr, ptr %a1 - %t54 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1663, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1664, i64 2, i64 0 }) - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } { ptr @.str.1666, i64 62, i64 0 }) - %t59 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.1665, i64 3, i64 0 }, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t62, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load ptr, ptr %a1 - %t68 = load %S.ast.Type, ptr %a49 - %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) - store { ptr, i64, i64 } { ptr @.str.1667, i64 23, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1668, i64 6, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1669, i64 6, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load { ptr, i64, i64 }, ptr %a65 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 3, %t92 - br i1 %t93, label %range2804, label %inrange2805 -range2804: - call void @finch_panic_index(ptr @.str.1670, i64 941, i64 3, i64 %t92) - unreachable -inrange2805: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t66, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a104 - %t107 = load %S.ast.Type, ptr %a49 - call void @finch.gen.dropAt(ptr %t105, { ptr, i64, i64 } %t106, %S.ast.Type %t107) - %t108 = load ptr, ptr %a1 - %t109 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.loopEnd(ptr %t108, { ptr, i64, i64 } %t109) - call void @finch_str_drop(ptr %a104) - call void @finch.drop.arr_str(ptr %a65) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a55) - br label %endif2803 -endif2803: - %t110 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t110, { ptr, i64, i64 } { ptr @.str.1671, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2798 -else2797: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1672, i64 3, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2806, label %else2807 -then2806: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 0, %t119 - br i1 %t120, label %range2809, label %inrange2810 -range2809: - call void @finch_panic_index(ptr @.str.1673, i64 947, i64 0, i64 %t119) - unreachable -inrange2810: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 0 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - store %S.ast.Type %t126, ptr %a127 - %t128 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 1, %t130 - br i1 %t131, label %range2811, label %inrange2812 -range2811: - call void @finch_panic_index(ptr @.str.1674, i64 948, i64 1, i64 %t130) - unreachable -inrange2812: - %t132 = extractvalue { ptr, i64, i64 } %t129, 0 - %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i64 1 - %t134 = load %S.ast.Type, ptr %t133 - store %S.ast.Type %t134, ptr %a135 - call void @finch.copy.S_ast_Type(ptr %a136, ptr %a135) - %t137 = load %S.ast.Type, ptr %a136 - store %S.ast.Type %t137, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Type, ptr %a127 - %t141 = call i1 @finch.gen.owning(ptr %t139, %S.ast.Type %t140) - br label %logic.from2813 -logic.from2813: - br i1 %t141, label %logic.end2815, label %logic.rhs2814 -logic.rhs2814: - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Type, ptr %a138 - %t144 = call i1 @finch.gen.owning(ptr %t142, %S.ast.Type %t143) - br label %logic.rend2816 -logic.rend2816: - br label %logic.end2815 -logic.end2815: - %t145 = phi i1 [ true, %logic.from2813 ], [ %t144, %logic.rend2816 ] - br i1 %t145, label %then2817, label %endif2819 -then2817: - %t146 = load ptr, ptr %a1 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load %S.ast.Type, ptr %a2 - %t150 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t148, %S.ast.Type %t149) - store { ptr, i64, i64 } { ptr @.str.1676, i64 23, i64 0 }, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t155, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1677, i64 22, i64 0 }, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t155, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a156 - %t161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t160) - store { ptr, i64, i64 } %t160, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t146, { ptr, i64, i64 } { ptr @.str.1675, i64 3, i64 0 }, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_drop(ptr %a164) - store { ptr, i64, i64 } %t163, ptr %a165 - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a165 - %t168 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t166, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load %S.ast.Type, ptr %a2 - %t172 = load { ptr, i64, i64 }, ptr %a169 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 3, %t173 - br i1 %t174, label %range2820, label %inrange2821 -range2820: - call void @finch_panic_index(ptr @.str.1679, i64 952, i64 3, i64 %t173) - unreachable -inrange2821: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i64 3 - %t177 = load { ptr, i64, i64 }, ptr %t176 - %t178 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t170, { ptr, i64, i64 } { ptr @.str.1678, i64 2, i64 0 }, %S.ast.Type %t171, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1680, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1681, i64 10, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - %t186 = load ptr, ptr %a1 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a179 - %t191 = load %S.ast.Type, ptr %a2 - %t192 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t189, { ptr, i64, i64 } %t190, %S.ast.Type %t191, i64 0) - %t193 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } { ptr @.str.1683, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - store { ptr, i64, i64 } { ptr @.str.1682, i64 12, i64 0 }, ptr %a196 - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1684, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t204, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a182 - %t208 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.condBr(ptr %t186, { ptr, i64, i64 } %t205, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t210, { ptr, i64, i64 } %t211) - %t212 = load ptr, ptr %a1 - %t213 = load ptr, ptr %a1 - %t214 = load { ptr, i64, i64 }, ptr %a179 - %t215 = load %S.ast.Type, ptr %a2 - %t216 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t213, { ptr, i64, i64 } %t214, %S.ast.Type %t215, i64 1) - %t217 = load %S.ast.Type, ptr %a127 - call void @finch.gen.dropAt(ptr %t212, { ptr, i64, i64 } %t216, %S.ast.Type %t217) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load ptr, ptr %a1 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a179 - %t222 = load %S.ast.Type, ptr %a2 - %t223 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t220, { ptr, i64, i64 } %t221, %S.ast.Type %t222, i64 2) - %t224 = load %S.ast.Type, ptr %a138 - call void @finch.gen.dropAt(ptr %t219, { ptr, i64, i64 } %t223, %S.ast.Type %t224) - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t226, { ptr, i64, i64 } %t227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t228, { ptr, i64, i64 } %t229) - %t230 = load ptr, ptr %a1 - %t231 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.loopEnd(ptr %t230, { ptr, i64, i64 } %t231) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.arr_str(ptr %a169) - call void @finch_str_drop(ptr %a165) - br label %endif2819 -endif2819: - %t232 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.1685, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a138) - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif2808 -else2807: - %t233 = load ptr, ptr %a1 - %t234 = icmp eq ptr %t233, null - br i1 %t234, label %panic2822, label %ok2823 -panic2822: - call void @finch_panic(ptr @.str.1686, i64 965, ptr @.str.1687) - unreachable -ok2823: - %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 16 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %t235 - %t243 = extractvalue { ptr, i64, i64 } %t242, 1 - %t244 = icmp uge i64 %t241, %t243 - br i1 %t244, label %range2824, label %inrange2825 -range2824: - call void @finch_panic_index(ptr @.str.1688, i64 965, i64 %t241, i64 %t243) - unreachable -inrange2825: - %t245 = extractvalue { ptr, i64, i64 } %t242, 0 - %t246 = getelementptr inbounds %S.gen.StructDef, ptr %t245, i64 %t241 - %t247 = load %S.gen.StructDef, ptr %t246 - store %S.gen.StructDef %t247, ptr %a248 - call void @finch.copy.S_gen_StructDef(ptr %a249, ptr %a248) - %t250 = load %S.gen.StructDef, ptr %a249 - store %S.gen.StructDef %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = load %S.ast.Type, ptr %a2 - %t254 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t252, %S.ast.Type %t253) - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i32 0, i32 1 - %t258 = load i64, ptr %t257 - store i64 0, ptr %a259 - br label %for.cond2826 -for.cond2826: - %t260 = load i64, ptr %a259 - %t261 = icmp slt i64 %t260, %t258 - br i1 %t261, label %for.body2827, label %for.end2829 -for.body2827: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t264 = load i64, ptr %a259 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range2830, label %inrange2831 -range2830: - call void @finch_panic_index(ptr @.str.1689, i64 968, i64 %t264, i64 %t266) - unreachable -inrange2831: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.ast.Type, ptr %t268, i64 %t264 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t262, %S.ast.Type %t270) - br i1 %t271, label %then2832, label %endif2834 -then2832: - %t272 = load ptr, ptr %a1 - %t273 = load ptr, ptr %a1 - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } { ptr @.str.1690, i64 23, i64 0 }, ptr %a276 - store { ptr, i64, i64 } %t274, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.1691, i64 21, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 3 - %t285 = load i64, ptr %a259 - %t286 = load { ptr, i64, i64 }, ptr %t284 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 %t285, %t287 - br i1 %t288, label %range2835, label %inrange2836 -range2835: - call void @finch_panic_index(ptr @.str.1692, i64 969, i64 %t285, i64 %t287) - unreachable -inrange2836: - %t289 = extractvalue { ptr, i64, i64 } %t286, 0 - %t290 = getelementptr inbounds i64, ptr %t289, i64 %t285 - %t291 = load i64, ptr %t290 - call void @finch_str_from_int(ptr %a292, i64 %t291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t283, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - store { ptr, i64, i64 } %t283, ptr %a297 - call void @finch_str_drop(ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a294 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t273, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t303 = load i64, ptr %a259 - %t304 = load { ptr, i64, i64 }, ptr %t302 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range2837, label %inrange2838 -range2837: - call void @finch_panic_index(ptr @.str.1693, i64 969, i64 %t303, i64 %t305) - unreachable -inrange2838: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Type, ptr %t307, i64 %t303 - %t309 = load %S.ast.Type, ptr %t308 - call void @finch.gen.dropAt(ptr %t272, { ptr, i64, i64 } %t300, %S.ast.Type %t309) - store { ptr, i64, i64 } %t300, ptr %a310 - call void @finch_str_drop(ptr %a310) - br label %endif2834 -endif2834: - br label %for.step2828 -for.step2828: - %t311 = load i64, ptr %a259 - %t312 = add i64 %t311, 1 - store i64 %t312, ptr %a259 - br label %for.cond2826 -for.end2829: - call void @finch_str_drop(ptr %a255) - call void @finch.drop.S_gen_StructDef(ptr %a251) - br label %endif2808 -endif2808: - br label %endif2798 -endif2798: - %t313 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t313, { ptr, i64, i64 } { ptr @.str.1694, i64 8, i64 0 }) - %t314 = load ptr, ptr %a1 - %t315 = load %S.gen.Saved, ptr %a32 - %t316 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1695, i64 21, i64 0 }, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.1696, i64 8, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - call void @finch.gen.endHelper(ptr %t314, %S.gen.Saved %t315, { ptr, i64, i64 } %t325) - store { ptr, i64, i64 } %t325, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t327 -} - -define internal void @finch.gen.hold(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.ast.Type, align 16 - %a33 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2839 -logic.from2839: - br i1 %t4, label %logic.rhs2840, label %logic.end2841 -logic.rhs2840: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2842 -logic.rend2842: - br label %logic.end2841 -logic.end2841: - %t9 = phi i1 [ false, %logic.from2839 ], [ %t8, %logic.rend2842 ] - br label %logic.from2843 -logic.from2843: - br i1 %t9, label %logic.rhs2844, label %logic.end2845 -logic.rhs2844: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2846 -logic.rend2846: - br label %logic.end2845 -logic.end2845: - %t14 = phi i1 [ false, %logic.from2843 ], [ %t13, %logic.rend2846 ] - br label %logic.from2847 -logic.from2847: - br i1 %t14, label %logic.rhs2848, label %logic.end2849 -logic.rhs2848: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2850 -logic.rend2850: - br label %logic.end2849 -logic.end2849: - %t19 = phi i1 [ false, %logic.from2847 ], [ %t18, %logic.rend2850 ] - br i1 %t19, label %then2851, label %endif2853 -then2851: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2854, label %ok2855 -panic2854: - call void @finch_panic(ptr @.str.1697, i64 982, ptr @.str.1698) - unreachable -ok2855: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 11 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_copy(ptr %a27, ptr %a26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %t29 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t28, 0 - %t30 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t31 = load %S.ast.Type, ptr %t30 - store %S.ast.Type %t31, ptr %a32 - call void @finch.copy.S_ast_Type(ptr %a33, ptr %a32) - %t34 = load %S.ast.Type, ptr %a33 - %t35 = insertvalue %S.gen.Pending %t29, %S.ast.Type %t34, 1 - %t36 = insertvalue %S.gen.Pending %t35, i1 false, 2 - %t37 = load i64, ptr %t23 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t38, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %t22 - %t40 = getelementptr inbounds %S.gen.Pending, ptr %t39, i64 %t37 - store %S.gen.Pending %t36, ptr %t40 - store i64 %t38, ptr %t23 - br label %endif2853 -endif2853: - ret void -} - -define internal void @finch.gen.holdAddr(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2856, label %endif2858 -then2856: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic2859, label %ok2860 -panic2859: - call void @finch_panic(ptr @.str.1699, i64 988, ptr @.str.1700) - unreachable -ok2860: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 11 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 - %t11 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t11, ptr %a12 - call void @finch_str_copy(ptr %a13, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - %t15 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t14, 0 - %t16 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = insertvalue %S.gen.Pending %t15, %S.ast.Type %t19, 1 - %t21 = insertvalue %S.gen.Pending %t20, i1 true, 2 - %t22 = load i64, ptr %t10 - %t23 = add i64 %t22, 1 - call void @finch_arr_reserve(ptr %t9, i64 %t23, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t24 = load ptr, ptr %t9 - %t25 = getelementptr inbounds %S.gen.Pending, ptr %t24, i64 %t22 - store %S.gen.Pending %t21, ptr %t25 - store i64 %t23, ptr %t10 - br label %endif2858 -endif2858: - ret void -} - -define internal void @finch.copy.S_gen_Pending(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Pending, ptr %src - store %S.gen.Pending %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 1 - call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.drop.S_gen_Pending(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.dropPending(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a8 = alloca i64, align 16 - %a24 = alloca %S.gen.Pending, align 16 - %a25 = alloca %S.gen.Pending, align 16 - %a27 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2861, label %ok2862 -panic2861: - call void @finch_panic(ptr @.str.1701, i64 994, ptr @.str.1702) - unreachable -ok2862: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - store i64 %t7, ptr %a8 - br label %while.cond2863 -while.cond2863: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body2864, label %while.end2865 -while.body2864: - %t12 = load i64, ptr %a8 - %t13 = sub i64 %t12, 1 - store i64 %t13, ptr %a8 - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic2866, label %ok2867 -panic2866: - call void @finch_panic(ptr @.str.1703, i64 997, ptr @.str.1704) - unreachable -ok2867: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 11 - %t17 = load i64, ptr %a8 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range2868, label %inrange2869 -range2868: - call void @finch_panic_index(ptr @.str.1705, i64 997, i64 %t17, i64 %t19) - unreachable -inrange2869: - %t21 = extractvalue { ptr, i64, i64 } %t18, 0 - %t22 = getelementptr inbounds %S.gen.Pending, ptr %t21, i64 %t17 - %t23 = load %S.gen.Pending, ptr %t22 - store %S.gen.Pending %t23, ptr %a24 - call void @finch.copy.S_gen_Pending(ptr %a25, ptr %a24) - %t26 = load %S.gen.Pending, ptr %a25 - store %S.gen.Pending %t26, ptr %a27 - %t28 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 2 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then2870, label %else2871 -then2870: - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - %t33 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t34 = load %S.ast.Type, ptr %t33 - call void @finch.gen.dropAt(ptr %t30, { ptr, i64, i64 } %t32, %S.ast.Type %t34) - br label %endif2872 -else2871: - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - %t38 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t39 = load %S.ast.Type, ptr %t38 - call void @finch.gen.dropValue(ptr %t35, { ptr, i64, i64 } %t37, %S.ast.Type %t39) - br label %endif2872 -endif2872: - call void @finch.drop.S_gen_Pending(ptr %a27) - br label %while.cond2863 -while.end2865: - ret void -} - -define internal void @finch.gen.heldEnd(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a20 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - br label %while.cond2873 -while.cond2873: - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2876, label %ok2877 -panic2876: - call void @finch_panic(ptr @.str.1706, i64 1008, ptr @.str.1707) - unreachable -ok2877: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = load i64, ptr %a2 - %t9 = icmp sgt i64 %t7, %t8 - br i1 %t9, label %while.body2874, label %while.end2875 -while.body2874: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2878, label %ok2879 -panic2878: - call void @finch_panic(ptr @.str.1708, i64 1009, ptr @.str.1709) - unreachable -ok2879: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 11 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp eq i64 %t14, 0 - br i1 %t15, label %panic2880, label %ok2881 -panic2880: - call void @finch_panic(ptr @.str.1710, i64 1009, ptr @.str.1711) - unreachable -ok2881: - %t16 = sub i64 %t14, 1 - %t17 = load ptr, ptr %t12 - %t18 = getelementptr inbounds %S.gen.Pending, ptr %t17, i64 %t16 - %t19 = load %S.gen.Pending, ptr %t18 - store i64 %t16, ptr %t13 - store %S.gen.Pending %t19, ptr %a20 - call void @finch.drop.S_gen_Pending(ptr %a20) - br label %while.cond2873 -while.end2875: - ret void -} - -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.from2882 -logic.from2882: - br i1 %t7, label %logic.end2884, label %logic.rhs2883 -logic.rhs2883: - %t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t9 = load i1, ptr %t8 - br label %logic.rend2885 -logic.rend2885: - br label %logic.end2884 -logic.end2884: - %t10 = phi i1 [ true, %logic.from2882 ], [ %t9, %logic.rend2885 ] - br i1 %t10, label %then2886, label %endif2888 -then2886: - %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 -endif2888: - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.1712, 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 %then2889, label %endif2891 -then2889: - %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1713, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t19, ptr %a11 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - br label %endif2891 -endif2891: - %t22 = load ptr, ptr %a1 - %t23 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1714, i64 35, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a24 - %t28 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t27, ptr %a30 - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1715, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - call void @finch.gen.emit(ptr %t22, { ptr, i64, i64 } %t44) - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1716, 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.1717, i64 3, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - %t14 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t13) - store { ptr, i64, i64 } %t13, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t14, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1718, i64 12, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t22, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1719, i64 6, i64 0 }, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t17, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t31, { ptr, i64, i64 } { ptr @.str.1720, i64 0, i64 0 }) - store { ptr, i64, i64 } %t32, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1721, i64 10, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1722, i64 6, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.1723, i64 6, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t34, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a16) - ret { ptr, i64, i64 } %t62 -} - -define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) { -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 %S.ast.Type, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a153 = 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 - %a167 = 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 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then2892, label %else2893 -then2892: - %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.1726, 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 %S.ast.Type %t17, ptr %a19 - call void @finch.drop.S_ast_Type(ptr %a19) - store { ptr, i64, i64 } { ptr @.str.1725, i64 4, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1724, i64 4, i64 0 }, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2894 -else2893: - %t26 = load %S.ast.Type, ptr %a3 - %t27 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t26) - br i1 %t27, label %then2895, label %else2896 -then2895: - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a2 - %t31 = load %S.ast.Type, ptr %a3 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1729, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } { ptr @.str.1728, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - call void @finch.gen.printf(ptr %t28, { ptr, i64, i64 } { ptr @.str.1727, i64 4, i64 0 }, { ptr, i64, i64 } %t39) - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - br label %endif2897 -else2896: - %t41 = load %S.ast.Type, ptr %a3 - %t42 = call i1 @finch.gen.isFloat(%S.ast.Type %t41) - br i1 %t42, label %then2898, label %else2899 -then2898: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load { ptr, i64, i64 }, ptr %a2 - %t46 = load %S.ast.Type, ptr %a3 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1732, i64 5, i64 0 }) - %t48 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t44, { ptr, i64, i64 } %t45, %S.ast.Type %t46, %S.ast.Type %t47) - store %S.ast.Type %t47, ptr %a49 - call void @finch.drop.S_ast_Type(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.1731, i64 7, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.gen.printf(ptr %t43, { ptr, i64, i64 } { ptr @.str.1730, i64 2, i64 0 }, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %endif2900 -else2899: - %t56 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1733, i64 4, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then2901, label %else2902 -then2901: - %t61 = load ptr, ptr %a1 - %t62 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1734, i64 8, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1735, i64 7, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = load i1, ptr %a4 - br i1 %t75, label %then2904, label %else2905 -then2904: - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1737, i64 4, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.printf(ptr %t76, { ptr, i64, i64 } { ptr @.str.1736, i64 4, i64 0 }, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %endif2906 -else2905: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1739, i64 4, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.gen.printf(ptr %t83, { ptr, i64, i64 } { ptr @.str.1738, i64 2, i64 0 }, { ptr, i64, i64 } %t88) - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif2906 -endif2906: - call void @finch_str_drop(ptr %a74) - br label %endif2903 -else2902: - %t90 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1740, 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 %then2907, label %else2908 -then2907: - %t95 = load ptr, ptr %a1 - %t96 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t95, { ptr, i64, i64 } { ptr @.str.1741, i64 4, i64 0 }) - store { ptr, i64, i64 } %t96, ptr %a97 - %t98 = load ptr, ptr %a1 - %t99 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t98, { ptr, i64, i64 } { ptr @.str.1742, i64 5, i64 0 }) - store { ptr, i64, i64 } %t99, ptr %a100 - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1743, i64 10, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1744, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t111, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.1745, i64 6, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t122, ptr %a125 - store { ptr, i64, i64 } %t123, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t101, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - %t132 = load ptr, ptr %a1 - %t133 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.1747, i64 4, i64 0 }, ptr %a135 - store { ptr, i64, i64 } %t133, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a134 - call void @finch.gen.printf(ptr %t132, { ptr, i64, i64 } { ptr @.str.1746, i64 2, i64 0 }, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a131) - call void @finch_str_drop(ptr %a100) - call void @finch_str_drop(ptr %a97) - br label %endif2909 -else2908: - %t139 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1748, 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 %then2910, label %else2911 -then2910: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1749, i64 31, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.1750, i64 3, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t155, ptr %a157 - %t158 = load ptr, ptr %a1 - %t159 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1751, i64 10, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.1752, i64 7, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - store { ptr, i64, i64 } %t169, ptr %a171 - %t172 = load ptr, ptr %a1 - %t173 = load { ptr, i64, i64 }, ptr %a2 - %t174 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t172, { ptr, i64, i64 } %t173) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load i1, ptr %a4 - br i1 %t176, label %then2913, label %else2914 -then2913: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1754, i64 4, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1755, i64 6, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - call void @finch.gen.printf(ptr %t177, { ptr, i64, i64 } { ptr @.str.1753, i64 6, i64 0 }, { ptr, i64, i64 } %t193) - store { ptr, i64, i64 } %t193, ptr %a194 - call void @finch_str_drop(ptr %a194) - br label %endif2915 -else2914: - %t195 = load ptr, ptr %a1 - %t196 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1757, i64 4, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.1758, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t205, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t205, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.printf(ptr %t195, { ptr, i64, i64 } { ptr @.str.1756, i64 4, i64 0 }, { ptr, i64, i64 } %t211) - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - br label %endif2915 -endif2915: - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a171) - call void @finch_str_drop(ptr %a157) - br label %endif2912 -else2911: - %t213 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.1759, i64 3, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %then2916, label %else2917 -then2916: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1760, i64 12, i64 0 }, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1761, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t218, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t232, { ptr, i64, i64 } { ptr @.str.1762, i64 8, i64 0 }) - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t235, { ptr, i64, i64 } { ptr @.str.1763, i64 8, i64 0 }) - store { ptr, i64, i64 } %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t238, { ptr, i64, i64 } { ptr @.str.1764, i64 8, i64 0 }) - store { ptr, i64, i64 } %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load { ptr, i64, i64 }, ptr %a231 - %t243 = load { ptr, i64, i64 }, ptr %a234 - %t244 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.condBr(ptr %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t244) - %t245 = load ptr, ptr %a1 - %t246 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.label(ptr %t245, { ptr, i64, i64 } %t246) - %t247 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t247, { ptr, i64, i64 } { ptr @.str.1765, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1766, i64 0, i64 0 }) - %t248 = load ptr, ptr %a1 - %t249 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t248, { ptr, i64, i64 } %t249) - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.label(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = load ptr, ptr %a1 - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1769, i64 13, i64 0 }, ptr %a256 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t258, ptr %a260 - store { ptr, i64, i64 } { ptr @.str.1770, i64 7, i64 0 }, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - %t264 = call { ptr, i64, i64 } @finch.gen.op(ptr %t253, { ptr, i64, i64 } %t263) - store { ptr, i64, i64 } %t263, ptr %a265 - call void @finch_str_drop(ptr %a265) - store { ptr, i64, i64 } { ptr @.str.1768, i64 4, i64 0 }, ptr %a267 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - call void @finch.gen.printf(ptr %t252, { ptr, i64, i64 } { ptr @.str.1767, i64 6, i64 0 }, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load ptr, ptr %a1 - %t273 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t272, { ptr, i64, i64 } %t273) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a240) - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a231) - br label %endif2918 -else2917: - %t276 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t276, ptr %a277 - store { ptr, i64, i64 } { ptr @.str.1771, i64 4, i64 0 }, ptr %a278 - %t279 = call i32 @finch_str_eq(ptr %a277, ptr %a278) - %t280 = icmp ne i32 %t279, 0 - br i1 %t280, label %then2919, label %else2920 -then2919: - %t281 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t281, { ptr, i64, i64 } { ptr @.str.1772, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1773, i64 0, i64 0 }) - br label %endif2921 -else2920: - %t282 = load ptr, ptr %a1 - %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.1774, i64 17, i64 0 }) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a284 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } { ptr @.str.1775, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1776, i64 15, i64 0 }, { ptr, i64, i64 } %t286) - %t287 = load ptr, ptr %a1 - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - %t290 = load %S.ast.Type, ptr %a3 - %t291 = load i1, ptr %a4 - call void @finch.gen.emitFormat(ptr %t287, { ptr, i64, i64 } %t288, { ptr, i64, i64 } %t289, %S.ast.Type %t290, i1 %t291) - %t292 = load ptr, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1777, i64 31, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.1778, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - call void @finch.gen.emit(ptr %t292, { ptr, i64, i64 } %t302) - store { ptr, i64, i64 } %t302, ptr %a303 - call void @finch_str_drop(ptr %a303) - call void @finch_str_drop(ptr %a284) - br label %endif2921 -endif2921: - br label %endif2918 -endif2918: - br label %endif2912 -endif2912: - br label %endif2909 -endif2909: - br label %endif2903 -endif2903: - br label %endif2900 -endif2900: - br label %endif2897 -endif2897: - br label %endif2894 -endif2894: - call void @finch_str_drop(ptr %a10) - 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 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1779, 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.1780, i64 6, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load ptr, ptr %a1 - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t15, { ptr, i64, i64 } %t16) - store { ptr, i64, i64 } %t14, ptr %a19 - store { ptr, i64, i64 } %t17, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t14, ptr %a21 - call void @finch_str_drop(ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1781, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t30 = load i64, ptr %t29 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1782, i64 1, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - ret void -} - -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Type, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { 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 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca %S.ast.Type, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.gen.Val, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %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 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1783, i64 1, i64 0 }, ptr %a12 - %t13 = load i1, ptr %a5 - br i1 %t13, label %then2922, label %endif2924 -then2922: - %t14 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - br label %endif2924 -endif2924: - %t16 = load %S.ast.Type, ptr %a4 - %t17 = call i1 @finch.gen.isSigned(%S.ast.Type %t16) - br i1 %t17, label %then2925, label %else2926 -then2925: - %t18 = load ptr, ptr %a1 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1785, i64 29, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1786, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a3 - %t31 = load %S.ast.Type, ptr %a4 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1787, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } %t28, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t28, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1788, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - call void @finch.gen.emit(ptr %t18, { ptr, i64, i64 } %t45) - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %endif2927 -else2926: - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t47) - br i1 %t48, label %then2928, label %else2929 -then2928: - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1789, i64 30, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1790, i64 6, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a3 - %t62 = load %S.ast.Type, ptr %a4 - %t63 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1791, i64 3, i64 0 }) - %t64 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t60, { ptr, i64, i64 } %t61, %S.ast.Type %t62, %S.ast.Type %t63) - store %S.ast.Type %t63, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t59, ptr %a67 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t59, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t64, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1792, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.emit(ptr %t49, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif2930 -else2929: - %t78 = load %S.ast.Type, ptr %a4 - %t79 = call i1 @finch.gen.isFloat(%S.ast.Type %t78) - br i1 %t79, label %then2931, label %else2932 -then2931: - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1793, i64 31, i64 0 }, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1794, i64 9, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a3 - %t93 = load %S.ast.Type, ptr %a4 - %t94 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1795, i64 5, i64 0 }) - %t95 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t91, { ptr, i64, i64 } %t92, %S.ast.Type %t93, %S.ast.Type %t94) - store %S.ast.Type %t94, ptr %a96 - call void @finch.drop.S_ast_Type(ptr %a96) - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - store { ptr, i64, i64 } %t95, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1796, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.emit(ptr %t80, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2933 -else2932: - %t109 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1797, 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 %then2934, label %else2935 -then2934: - %t114 = load ptr, ptr %a1 - %t115 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1798, i64 30, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1799, i64 5, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t124, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1800, i64 6, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t135, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t135, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.1801, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - call void @finch.gen.emit(ptr %t114, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %endif2936 -else2935: - %t148 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.1802, i64 4, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br i1 %t152, label %then2937, label %else2938 -then2937: - %t153 = load ptr, ptr %a1 - %t154 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1803, i64 30, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.1804, i64 6, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1805, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1806, i64 7, i64 0 }, ptr %a172 - call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) - store { ptr, i64, i64 } %t169, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a170 - %t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t174) - store { ptr, i64, i64 } %t174, ptr %a176 - call void @finch_str_drop(ptr %a176) - store { ptr, i64, i64 } %t163, ptr %a178 - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t163, ptr %a180 - call void @finch_str_drop(ptr %a180) - store { ptr, i64, i64 } %t175, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a177 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1807, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - br label %endif2939 -else2938: - %t189 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.1808, 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 %then2940, label %else2941 -then2940: - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1809, i64 29, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1810, i64 6, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t211, ptr %a212 - call void @finch.copy.S_ast_Type(ptr %a213, ptr %a212) - %t214 = load %S.ast.Type, ptr %a213 - %t215 = insertvalue %S.gen.Val %t210, %S.ast.Type %t214, 1 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t205, %S.gen.Val %t215) - store %S.gen.Val %t215, ptr %a217 - call void @finch.drop.S_gen_Val(ptr %a217) - store { ptr, i64, i64 } %t204, ptr %a219 - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t204, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t216, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1811, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t228, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t228, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t234, ptr %a236 - store { ptr, i64, i64 } { ptr @.str.1812, i64 1, i64 0 }, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - call void @finch.gen.emit(ptr %t194, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t239, ptr %a240 - call void @finch_str_drop(ptr %a240) - br label %endif2942 -else2941: - %t241 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t241, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.1813, i64 3, i64 0 }, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from2943 -logic.from2943: - br i1 %t245, label %logic.end2945, label %logic.rhs2944 -logic.rhs2944: - %t246 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1814, i64 4, i64 0 }, ptr %a248 - %t249 = call i32 @finch_str_eq(ptr %a247, ptr %a248) - %t250 = icmp ne i32 %t249, 0 - br label %logic.rend2946 -logic.rend2946: - br label %logic.end2945 -logic.end2945: - %t251 = phi i1 [ true, %logic.from2943 ], [ %t250, %logic.rend2946 ] - br i1 %t251, label %then2947, label %else2948 -then2947: - %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1815, i64 29, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - %t257 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t257, ptr %a259 - store { ptr, i64, i64 } { ptr @.str.1816, i64 6, i64 0 }, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t257, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - %t263 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t262, ptr %a265 - store { ptr, i64, i64 } %t263, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t262, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.1817, i64 1, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.emit(ptr %t252, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif2949 -else2948: - %t275 = load ptr, ptr %a1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a4 - %t278 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.1818, i64 10, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.1819, i64 5, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t288, ptr %a291 - store { ptr, i64, i64 } %t289, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1820, i64 6, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_copy(ptr %a303, ptr %a302) - %t304 = load { ptr, i64, i64 }, ptr %a303 - %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t306 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t306, ptr %a307 - call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) - %t309 = load %S.ast.Type, ptr %a308 - %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 - %t311 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t300, %S.gen.Val %t310) - store %S.gen.Val %t310, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - store { ptr, i64, i64 } %t299, ptr %a314 - store { ptr, i64, i64 } %t311, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t299, ptr %a316 - call void @finch_str_drop(ptr %a316) - store { ptr, i64, i64 } %t311, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.1821, i64 1, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - call void @finch.gen.emit(ptr %t275, { ptr, i64, i64 } %t323) - store { ptr, i64, i64 } %t323, ptr %a324 - call void @finch_str_drop(ptr %a324) - br label %endif2949 -endif2949: - br label %endif2942 -endif2942: - br label %endif2939 -endif2939: - br label %endif2936 -endif2936: - br label %endif2933 -endif2933: - br label %endif2930 -endif2930: - br label %endif2927 -endif2927: - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a11) - 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 void @finch.drop.S_gen_EnumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - ret void -} - -define internal void @finch.copy.S_gen_SumDef(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.SumDef, ptr %src - store %S.gen.SumDef %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_int(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_int(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_S_ast_Node(ptr %t12, ptr %t13) - ret void -} - -define internal void @finch.drop.S_gen_SumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_S_ast_Node(ptr %t6) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.gen.EnumDef, align 16 - %a174 = alloca %S.gen.EnumDef, align 16 - %a176 = alloca %S.gen.EnumDef, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca i64, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca i64, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a342 = 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 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca %S.gen.SumDef, align 16 - %a538 = alloca %S.gen.SumDef, align 16 - %a540 = alloca %S.gen.SumDef, align 16 - %a556 = alloca %S.gen.StructDef, align 16 - %a557 = alloca %S.gen.StructDef, align 16 - %a559 = alloca %S.gen.StructDef, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = 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 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca i64, align 16 - %a731 = alloca i64, align 16 - %a747 = alloca i64, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca %S.gen.StructDef, align 16 - %a839 = alloca %S.gen.StructDef, align 16 - %a841 = alloca %S.gen.StructDef, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca i64, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a879 = 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 - %a884 = 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 - %a891 = 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 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a938 = 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 - %a950 = 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 - 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.1822, i64 14, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2950, label %ok2951 -panic2950: - call void @finch_panic(ptr @.str.1823, i64 1126, ptr @.str.1824) - unreachable -ok2951: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2952, label %endif2954 -then2952: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2954: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2955, label %ok2956 -panic2955: - call void @finch_panic(ptr @.str.1825, i64 1129, ptr @.str.1826) - unreachable -ok2956: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1827, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2957, label %else2958 -then2957: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2960, label %inrange2961 -range2960: - call void @finch_panic_index(ptr @.str.1828, i64 1132, i64 0, i64 %t41) - unreachable -inrange2961: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = call { ptr, i64, i64 } @finch.gen.load(ptr %t50, { ptr, i64, i64 } { ptr @.str.1829, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1830, i64 2, i64 0 }) - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load ptr, ptr %a1 - %t54 = load ptr, ptr %a1 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } { ptr @.str.1832, i64 62, i64 0 }) - %t56 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1831, i64 3, i64 0 }, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - store { ptr, i64, i64 } %t56, ptr %a58 - %t59 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t59, { ptr, i64, i64 } { ptr @.str.1833, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1834, i64 1, i64 0 }) - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a58 - %t62 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t60, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %t64 = load ptr, ptr %a1 - %t65 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t64, { ptr, i64, i64 } { ptr @.str.1835, i64 3, i64 0 }) - store { ptr, i64, i64 } %t65, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.1836, i64 4, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a63 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 3, %t72 - br i1 %t73, label %range2962, label %inrange2963 -range2962: - call void @finch_panic_index(ptr @.str.1838, i64 1139, i64 3, i64 %t72) - unreachable -inrange2963: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 3 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.1837, i64 13, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.1839, i64 3, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t85) - store { ptr, i64, i64 } %t85, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t86, ptr %a88 - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a88 - %t91 = load { ptr, i64, i64 }, ptr %a66 - %t92 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.condBr(ptr %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t95, { ptr, i64, i64 } { ptr @.str.1840, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1841, i64 2, i64 0 }) - %t96 = load ptr, ptr %a1 - %t97 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t96, { ptr, i64, i64 } %t97) - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t98, { ptr, i64, i64 } %t99) - %t100 = load ptr, ptr %a1 - %t101 = load ptr, ptr %a1 - %t102 = load %S.ast.Type, ptr %a49 - %t103 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t101, %S.ast.Type %t102) - store { ptr, i64, i64 } { ptr @.str.1842, i64 23, i64 0 }, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1843, i64 6, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t108, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a109 - %t114 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1844, i64 6, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a63 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 3, %t126 - br i1 %t127, label %range2964, label %inrange2965 -range2964: - call void @finch_panic_index(ptr @.str.1845, i64 1145, i64 3, i64 %t126) - unreachable -inrange2965: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i64 3 - %t130 = load { ptr, i64, i64 }, ptr %t129 - store { ptr, i64, i64 } %t124, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t124, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a137 - call void @finch_str_drop(ptr %a137) - store { ptr, i64, i64 } %t136, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = load %S.ast.Type, ptr %a49 - %t143 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t141, %S.ast.Type %t142) - %t144 = load { ptr, i64, i64 }, ptr %a138 - %t145 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t144) - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load %S.ast.Type, ptr %a49 - call void @finch.gen.emitFormat(ptr %t139, { ptr, i64, i64 } { ptr @.str.1846, i64 4, i64 0 }, { ptr, i64, i64 } %t145, %S.ast.Type %t147, i1 true) - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load ptr, ptr %a1 - %t150 = load { ptr, i64, i64 }, ptr %a63 - call void @finch.gen.loopEnd(ptr %t149, { ptr, i64, i64 } %t150) - %t151 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t151, { ptr, i64, i64 } { ptr @.str.1847, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1848, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a88) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_str(ptr %a63) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a52) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2959 -else2958: - %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.1849, i64 4, i64 0 }, ptr %a155 - %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) - %t157 = icmp ne i32 %t156, 0 - br i1 %t157, label %then2966, label %else2967 -then2966: - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic2969, label %ok2970 -panic2969: - call void @finch_panic(ptr @.str.1850, i64 1151, ptr @.str.1851) - unreachable -ok2970: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 21 - %t161 = load ptr, ptr %a1 - %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = call i64 @finch.gen.findEnum(ptr %t161, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t165) - %t167 = load { ptr, i64, i64 }, ptr %t160 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range2971, label %inrange2972 -range2971: - call void @finch_panic_index(ptr @.str.1852, i64 1151, i64 %t166, i64 %t168) - unreachable -inrange2972: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.EnumDef, ptr %t170, i64 %t166 - %t172 = load %S.gen.EnumDef, ptr %t171 - store %S.gen.EnumDef %t172, ptr %a173 - call void @finch.copy.S_gen_EnumDef(ptr %a174, ptr %a173) - %t175 = load %S.gen.EnumDef, ptr %a174 - store %S.gen.EnumDef %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.1853, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1854, i64 2, i64 0 }) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1855, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1856, i64 9, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } zeroinitializer, ptr %a186 - store { ptr, i64, i64 } zeroinitializer, ptr %a187 - %t188 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - store i64 0, ptr %a191 - br label %for.cond2973 -for.cond2973: - %t192 = load i64, ptr %a191 - %t193 = icmp slt i64 %t192, %t190 - br i1 %t193, label %for.body2974, label %for.end2976 -for.body2974: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a187, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t195, { ptr, i64, i64 } { ptr @.str.1857, i64 6, i64 0 }) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %a187, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %a187 - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 - store { ptr, i64, i64 } %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 3 - %t203 = load i64, ptr %a191 - %t204 = load { ptr, i64, i64 }, ptr %t202 - %t205 = extractvalue { ptr, i64, i64 } %t204, 1 - %t206 = icmp uge i64 %t203, %t205 - br i1 %t206, label %range2977, label %inrange2978 -range2977: - call void @finch_panic_index(ptr @.str.1859, i64 1159, i64 %t203, i64 %t205) - unreachable -inrange2978: - %t207 = extractvalue { ptr, i64, i64 } %t204, 0 - %t208 = getelementptr inbounds i64, ptr %t207, i64 %t203 - %t209 = load i64, ptr %t208 - call void @finch_str_from_int(ptr %a210, i64 %t209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.1858, i64 4, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.1860, i64 9, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load i64, ptr %a191 - %t223 = load { ptr, i64, i64 }, ptr %a187 - %t224 = extractvalue { ptr, i64, i64 } %t223, 1 - %t225 = icmp uge i64 %t222, %t224 - br i1 %t225, label %range2979, label %inrange2980 -range2979: - call void @finch_panic_index(ptr @.str.1861, i64 1159, i64 %t222, i64 %t224) - unreachable -inrange2980: - %t226 = extractvalue { ptr, i64, i64 } %t223, 0 - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 %t222 - %t228 = load { ptr, i64, i64 }, ptr %t227 - store { ptr, i64, i64 } %t221, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t221, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - %t234 = load i64, ptr %t201 - %t235 = add i64 %t234, 1 - call void @finch_arr_reserve(ptr %a186, i64 %t235, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t236 = load ptr, ptr %a186 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i64 %t234 - store { ptr, i64, i64 } %t233, ptr %t237 - store i64 %t235, ptr %t201 - br label %for.step2975 -for.step2975: - %t238 = load i64, ptr %a191 - %t239 = add i64 %t238, 1 - store i64 %t239, ptr %a191 - br label %for.cond2973 -for.end2976: - %t240 = load ptr, ptr %a1 - %t241 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1862, i64 11, i64 0 }, ptr %a243 - store { ptr, i64, i64 } %t241, ptr %a244 - call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a242 - store { ptr, i64, i64 } %t245, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1863, i64 9, i64 0 }, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t245, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - %t251 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t250, ptr %a253 - store { ptr, i64, i64 } %t251, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t250, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.1864, i64 3, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1865, i64 1, i64 0 }, ptr %a263 - call void @finch_str_join(ptr %a264, ptr %a186, ptr %a263) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t261, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t261, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t265, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a266 - store { ptr, i64, i64 } %t271, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.1866, i64 2, i64 0 }, ptr %a274 - call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a272 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t276) - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load ptr, ptr %a1 - %t279 = icmp eq ptr %t278, null - br i1 %t279, label %panic2981, label %ok2982 -panic2981: - call void @finch_panic(ptr @.str.1867, i64 1162, ptr @.str.1868) - unreachable -ok2982: - %t280 = getelementptr inbounds %S.gen.Gen, ptr %t278, i32 0, i32 9 - store i1 true, ptr %t280 - %t281 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i32 0, i32 1 - %t283 = load i64, ptr %t282 - store i64 0, ptr %a284 - br label %for.cond2983 -for.cond2983: - %t285 = load i64, ptr %a284 - %t286 = icmp slt i64 %t285, %t283 - br i1 %t286, label %for.body2984, label %for.end2986 -for.body2984: - %t287 = load ptr, ptr %a1 - %t288 = load i64, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a187 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range2987, label %inrange2988 -range2987: - call void @finch_panic_index(ptr @.str.1869, i64 1164, i64 %t288, i64 %t290) - unreachable -inrange2988: - %t292 = extractvalue { ptr, i64, i64 } %t289, 0 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %t292, i64 %t288 - %t294 = load { ptr, i64, i64 }, ptr %t293 - call void @finch.gen.label(ptr %t287, { ptr, i64, i64 } %t294) - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t297 = load i64, ptr %a284 - %t298 = load { ptr, i64, i64 }, ptr %t296 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range2989, label %inrange2990 -range2989: - call void @finch_panic_index(ptr @.str.1871, i64 1165, i64 %t297, i64 %t299) - unreachable -inrange2990: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t297 - %t303 = load { ptr, i64, i64 }, ptr %t302 - call void @finch.gen.bufText(ptr %t295, { ptr, i64, i64 } { ptr @.str.1870, i64 4, i64 0 }, { ptr, i64, i64 } %t303) - %t304 = load ptr, ptr %a1 - %t305 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t304, { ptr, i64, i64 } %t305) - br label %for.step2985 -for.step2985: - %t306 = load i64, ptr %a284 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a284 - br label %for.cond2983 -for.end2986: - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) - %t310 = load ptr, ptr %a1 - %t311 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1873, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - call void @finch.gen.bufText(ptr %t310, { ptr, i64, i64 } { ptr @.str.1872, i64 4, i64 0 }, { ptr, i64, i64 } %t316) - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1875, i64 9, i64 0 }, ptr %a322 - store { ptr, i64, i64 } %t320, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a321 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.1876, i64 7, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = call { ptr, i64, i64 } @finch.gen.op(ptr %t319, { ptr, i64, i64 } %t329) - store { ptr, i64, i64 } %t329, ptr %a331 - call void @finch_str_drop(ptr %a331) - store { ptr, i64, i64 } { ptr @.str.1874, i64 39, i64 0 }, ptr %a333 - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t330, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.1877, i64 1, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - call void @finch.gen.emit(ptr %t318, { ptr, i64, i64 } %t341) - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t343, { ptr, i64, i64 } { ptr @.str.1878, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1879, i64 1, i64 0 }) - %t344 = load ptr, ptr %a1 - %t345 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t344, { ptr, i64, i64 } %t345) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t346, { ptr, i64, i64 } %t347) - call void @finch.drop.arr_str(ptr %a187) - call void @finch.drop.arr_str(ptr %a186) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.S_gen_EnumDef(ptr %a176) - br label %endif2968 -else2967: - %t348 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t349 = load { ptr, i64, i64 }, ptr %t348 - store { ptr, i64, i64 } %t349, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.1880, i64 3, i64 0 }, ptr %a351 - %t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351) - %t353 = icmp ne i32 %t352, 0 - br i1 %t353, label %then2991, label %else2992 -then2991: - %t354 = load ptr, ptr %a1 - %t355 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t354, { ptr, i64, i64 } { ptr @.str.1881, i64 2, i64 0 }) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t357, { ptr, i64, i64 } { ptr @.str.1882, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1883, i64 4, i64 0 }, { ptr, i64, i64 } %t358) - %t359 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t359, { ptr, i64, i64 } { ptr @.str.1884, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1885, i64 1, i64 0 }) - %t360 = load ptr, ptr %a1 - %t361 = load ptr, ptr %a1 - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Type, ptr %a2 - %t364 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t362, %S.ast.Type %t363) - store { ptr, i64, i64 } { ptr @.str.1887, i64 23, i64 0 }, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1888, i64 22, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t361, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = call { ptr, i64, i64 } @finch.gen.load(ptr %t360, { ptr, i64, i64 } { ptr @.str.1886, i64 3, i64 0 }, { ptr, i64, i64 } %t375) - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_drop(ptr %a378) - store { ptr, i64, i64 } %t377, ptr %a379 - %t380 = load ptr, ptr %a1 - %t381 = load { ptr, i64, i64 }, ptr %a379 - %t382 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t380, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t382, ptr %a383 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Type, ptr %a2 - %t386 = load { ptr, i64, i64 }, ptr %a383 - %t387 = extractvalue { ptr, i64, i64 } %t386, 1 - %t388 = icmp uge i64 3, %t387 - br i1 %t388, label %range2994, label %inrange2995 -range2994: - call void @finch_panic_index(ptr @.str.1890, i64 1181, i64 3, i64 %t387) - unreachable -inrange2995: - %t389 = extractvalue { ptr, i64, i64 } %t386, 0 - %t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i64 3 - %t391 = load { ptr, i64, i64 }, ptr %t390 - %t392 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t384, { ptr, i64, i64 } { ptr @.str.1889, i64 2, i64 0 }, %S.ast.Type %t385, { ptr, i64, i64 } %t391) - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t394, { ptr, i64, i64 } { ptr @.str.1891, i64 10, i64 0 }) - store { ptr, i64, i64 } %t395, ptr %a396 - %t397 = load ptr, ptr %a1 - %t398 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t397, { ptr, i64, i64 } { ptr @.str.1892, i64 10, i64 0 }) - store { ptr, i64, i64 } %t398, ptr %a399 - %t400 = load ptr, ptr %a1 - %t401 = load ptr, ptr %a1 - %t402 = load ptr, ptr %a1 - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a393 - %t405 = load %S.ast.Type, ptr %a2 - %t406 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t403, { ptr, i64, i64 } %t404, %S.ast.Type %t405, i64 0) - %t407 = call { ptr, i64, i64 } @finch.gen.load(ptr %t402, { ptr, i64, i64 } { ptr @.str.1894, i64 3, i64 0 }, { ptr, i64, i64 } %t406) - store { ptr, i64, i64 } %t406, ptr %a408 - call void @finch_str_drop(ptr %a408) - store { ptr, i64, i64 } { ptr @.str.1893, i64 12, i64 0 }, ptr %a410 - store { ptr, i64, i64 } %t407, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t407, ptr %a412 - call void @finch_str_drop(ptr %a412) - %t413 = load { ptr, i64, i64 }, ptr %a409 - store { ptr, i64, i64 } %t413, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.1895, i64 3, i64 0 }, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - store { ptr, i64, i64 } %t413, ptr %a417 - call void @finch_str_drop(ptr %a417) - %t418 = load { ptr, i64, i64 }, ptr %a414 - %t419 = call { ptr, i64, i64 } @finch.gen.op(ptr %t401, { ptr, i64, i64 } %t418) - store { ptr, i64, i64 } %t418, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a396 - %t422 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.condBr(ptr %t400, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t421, { ptr, i64, i64 } %t422) - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a396 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t426, { ptr, i64, i64 } { ptr @.str.1896, i64 3, i64 0 }) - store { ptr, i64, i64 } %t427, ptr %a428 - %t429 = load ptr, ptr %a1 - %t430 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t429, { ptr, i64, i64 } { ptr @.str.1897, i64 4, i64 0 }) - store { ptr, i64, i64 } %t430, ptr %a431 - %t432 = load ptr, ptr %a1 - %t433 = load ptr, ptr %a1 - %t434 = load { ptr, i64, i64 }, ptr %a356 - %t435 = call { ptr, i64, i64 } @finch.gen.load(ptr %t433, { ptr, i64, i64 } { ptr @.str.1898, i64 2, i64 0 }, { ptr, i64, i64 } %t434) - %t436 = load { ptr, i64, i64 }, ptr %a431 - %t437 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.condBr(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t436, { ptr, i64, i64 } %t437) - store { ptr, i64, i64 } %t435, ptr %a438 - call void @finch_str_drop(ptr %a438) - %t439 = load ptr, ptr %a1 - %t440 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.label(ptr %t439, { ptr, i64, i64 } %t440) - %t441 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t441, { ptr, i64, i64 } { ptr @.str.1899, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1900, i64 2, i64 0 }) - %t442 = load ptr, ptr %a1 - %t443 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.br(ptr %t442, { ptr, i64, i64 } %t443) - %t444 = load ptr, ptr %a1 - %t445 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.label(ptr %t444, { ptr, i64, i64 } %t445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t446, { ptr, i64, i64 } { ptr @.str.1901, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1902, i64 5, i64 0 }, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load ptr, ptr %a1 - %t450 = load ptr, ptr %a1 - %t451 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = extractvalue { ptr, i64, i64 } %t452, 1 - %t454 = icmp uge i64 0, %t453 - br i1 %t454, label %range2996, label %inrange2997 -range2996: - call void @finch_panic_index(ptr @.str.1904, i64 1194, i64 0, i64 %t453) - unreachable -inrange2997: - %t455 = extractvalue { ptr, i64, i64 } %t452, 0 - %t456 = getelementptr inbounds %S.ast.Type, ptr %t455, i64 0 - %t457 = load %S.ast.Type, ptr %t456 - %t458 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t450, %S.ast.Type %t457) - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a393 - %t461 = load %S.ast.Type, ptr %a2 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 1) - %t463 = call { ptr, i64, i64 } @finch.gen.load(ptr %t449, { ptr, i64, i64 } %t458, { ptr, i64, i64 } %t462) - store { ptr, i64, i64 } %t458, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t467 = load { ptr, i64, i64 }, ptr %t466 - %t468 = extractvalue { ptr, i64, i64 } %t467, 1 - %t469 = icmp uge i64 0, %t468 - br i1 %t469, label %range2998, label %inrange2999 -range2998: - call void @finch_panic_index(ptr @.str.1905, i64 1194, i64 0, i64 %t468) - unreachable -inrange2999: - %t470 = extractvalue { ptr, i64, i64 } %t467, 0 - %t471 = getelementptr inbounds %S.ast.Type, ptr %t470, i64 0 - %t472 = load %S.ast.Type, ptr %t471 - call void @finch.gen.emitFormat(ptr %t448, { ptr, i64, i64 } { ptr @.str.1903, i64 4, i64 0 }, { ptr, i64, i64 } %t463, %S.ast.Type %t472, i1 true) - store { ptr, i64, i64 } %t463, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t474, { ptr, i64, i64 } { ptr @.str.1906, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1907, i64 2, i64 0 }) - %t475 = load ptr, ptr %a1 - %t476 = load ptr, ptr %a1 - %t477 = load ptr, ptr %a1 - %t478 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t479 = load { ptr, i64, i64 }, ptr %t478 - %t480 = extractvalue { ptr, i64, i64 } %t479, 1 - %t481 = icmp uge i64 1, %t480 - br i1 %t481, label %range3000, label %inrange3001 -range3000: - call void @finch_panic_index(ptr @.str.1909, i64 1196, i64 1, i64 %t480) - unreachable -inrange3001: - %t482 = extractvalue { ptr, i64, i64 } %t479, 0 - %t483 = getelementptr inbounds %S.ast.Type, ptr %t482, i64 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t477, %S.ast.Type %t484) - %t486 = load ptr, ptr %a1 - %t487 = load { ptr, i64, i64 }, ptr %a393 - %t488 = load %S.ast.Type, ptr %a2 - %t489 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t486, { ptr, i64, i64 } %t487, %S.ast.Type %t488, i64 2) - %t490 = call { ptr, i64, i64 } @finch.gen.load(ptr %t476, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t489) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t494 = load { ptr, i64, i64 }, ptr %t493 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 1, %t495 - br i1 %t496, label %range3002, label %inrange3003 -range3002: - call void @finch_panic_index(ptr @.str.1910, i64 1196, i64 1, i64 %t495) - unreachable -inrange3003: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds %S.ast.Type, ptr %t497, i64 1 - %t499 = load %S.ast.Type, ptr %t498 - call void @finch.gen.emitFormat(ptr %t475, { ptr, i64, i64 } { ptr @.str.1908, i64 4, i64 0 }, { ptr, i64, i64 } %t490, %S.ast.Type %t499, i1 true) - store { ptr, i64, i64 } %t490, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load ptr, ptr %a1 - %t502 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.br(ptr %t501, { ptr, i64, i64 } %t502) - %t503 = load ptr, ptr %a1 - %t504 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.label(ptr %t503, { ptr, i64, i64 } %t504) - %t505 = load ptr, ptr %a1 - %t506 = load { ptr, i64, i64 }, ptr %a383 - call void @finch.gen.loopEnd(ptr %t505, { ptr, i64, i64 } %t506) - %t507 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t507, { ptr, i64, i64 } { ptr @.str.1911, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1912, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a431) - call void @finch_str_drop(ptr %a428) - call void @finch_str_drop(ptr %a399) - call void @finch_str_drop(ptr %a396) - call void @finch_str_drop(ptr %a393) - call void @finch.drop.arr_str(ptr %a383) - call void @finch_str_drop(ptr %a379) - call void @finch_str_drop(ptr %a356) - br label %endif2993 -else2992: - %t508 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t509 = load { ptr, i64, i64 }, ptr %t508 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.1913, i64 6, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.from3004 -logic.from3004: - br i1 %t513, label %logic.rhs3005, label %logic.end3006 -logic.rhs3005: - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t516 = load { ptr, i64, i64 }, ptr %t515 - %t517 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t518 = load { ptr, i64, i64 }, ptr %t517 - %t519 = call i64 @finch.gen.findSum(ptr %t514, { ptr, i64, i64 } %t516, { ptr, i64, i64 } %t518) - %t520 = icmp sge i64 %t519, 0 - br label %logic.rend3007 -logic.rend3007: - br label %logic.end3006 -logic.end3006: - %t521 = phi i1 [ false, %logic.from3004 ], [ %t520, %logic.rend3007 ] - br i1 %t521, label %then3008, label %else3009 -then3008: - %t522 = load ptr, ptr %a1 - %t523 = icmp eq ptr %t522, null - br i1 %t523, label %panic3011, label %ok3012 -panic3011: - call void @finch_panic(ptr @.str.1914, i64 1203, ptr @.str.1915) - unreachable -ok3012: - %t524 = getelementptr inbounds %S.gen.Gen, ptr %t522, i32 0, i32 22 - %t525 = load ptr, ptr %a1 - %t526 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t527 = load { ptr, i64, i64 }, ptr %t526 - %t528 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = call i64 @finch.gen.findSum(ptr %t525, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t529) - %t531 = load { ptr, i64, i64 }, ptr %t524 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range3013, label %inrange3014 -range3013: - call void @finch_panic_index(ptr @.str.1916, i64 1203, i64 %t530, i64 %t532) - unreachable -inrange3014: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.gen.SumDef, ptr %t534, i64 %t530 - %t536 = load %S.gen.SumDef, ptr %t535 - store %S.gen.SumDef %t536, ptr %a537 - call void @finch.copy.S_gen_SumDef(ptr %a538, ptr %a537) - %t539 = load %S.gen.SumDef, ptr %a538 - store %S.gen.SumDef %t539, ptr %a540 - %t541 = load ptr, ptr %a1 - %t542 = icmp eq ptr %t541, null - br i1 %t542, label %panic3015, label %ok3016 -panic3015: - call void @finch_panic(ptr @.str.1917, i64 1204, ptr @.str.1918) - unreachable -ok3016: - %t543 = getelementptr inbounds %S.gen.Gen, ptr %t541, i32 0, i32 16 - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t546 = load { ptr, i64, i64 }, ptr %t545 - %t547 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t548 = load { ptr, i64, i64 }, ptr %t547 - %t549 = call i64 @finch.gen.findStruct(ptr %t544, { ptr, i64, i64 } %t546, { ptr, i64, i64 } %t548) - %t550 = load { ptr, i64, i64 }, ptr %t543 - %t551 = extractvalue { ptr, i64, i64 } %t550, 1 - %t552 = icmp uge i64 %t549, %t551 - br i1 %t552, label %range3017, label %inrange3018 -range3017: - call void @finch_panic_index(ptr @.str.1919, i64 1204, i64 %t549, i64 %t551) - unreachable -inrange3018: - %t553 = extractvalue { ptr, i64, i64 } %t550, 0 - %t554 = getelementptr inbounds %S.gen.StructDef, ptr %t553, i64 %t549 - %t555 = load %S.gen.StructDef, ptr %t554 - store %S.gen.StructDef %t555, ptr %a556 - call void @finch.copy.S_gen_StructDef(ptr %a557, ptr %a556) - %t558 = load %S.gen.StructDef, ptr %a557 - store %S.gen.StructDef %t558, ptr %a559 - %t560 = load ptr, ptr %a1 - %t561 = load %S.ast.Type, ptr %a2 - %t562 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t560, %S.ast.Type %t561) - store { ptr, i64, i64 } %t562, ptr %a563 - %t564 = load ptr, ptr %a1 - %t565 = load ptr, ptr %a1 - %t566 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1921, i64 23, 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.1922, i64 21, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t577 = load { ptr, i64, i64 }, ptr %t576 - %t578 = extractvalue { ptr, i64, i64 } %t577, 1 - %t579 = icmp uge i64 0, %t578 - br i1 %t579, label %range3019, label %inrange3020 -range3019: - call void @finch_panic_index(ptr @.str.1923, i64 1206, i64 0, i64 %t578) - unreachable -inrange3020: - %t580 = extractvalue { ptr, i64, i64 } %t577, 0 - %t581 = getelementptr inbounds i64, ptr %t580, i64 0 - %t582 = load i64, ptr %t581 - call void @finch_str_from_int(ptr %a583, i64 %t582) - %t584 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t575, ptr %a586 - store { ptr, i64, i64 } %t584, ptr %a587 - call void @finch_str_concat(ptr %a585, ptr %a586, ptr %a587) - store { ptr, i64, i64 } %t575, ptr %a588 - call void @finch_str_drop(ptr %a588) - store { ptr, i64, i64 } %t584, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a585 - %t591 = call { ptr, i64, i64 } @finch.gen.op(ptr %t565, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = call { ptr, i64, i64 } @finch.gen.load(ptr %t564, { ptr, i64, i64 } { ptr @.str.1920, i64 3, i64 0 }, { ptr, i64, i64 } %t591) - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_drop(ptr %a594) - store { ptr, i64, i64 } %t593, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t596, { ptr, i64, i64 } { ptr @.str.1924, i64 9, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t599, { ptr, i64, i64 } { ptr @.str.1925, i64 8, i64 0 }) - store { ptr, i64, i64 } %t600, ptr %a601 - store { ptr, i64, i64 } zeroinitializer, ptr %a602 - store { ptr, i64, i64 } zeroinitializer, ptr %a603 - %t604 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i32 0, i32 1 - %t606 = load i64, ptr %t605 - store i64 0, ptr %a607 - br label %for.cond3021 -for.cond3021: - %t608 = load i64, ptr %a607 - %t609 = icmp slt i64 %t608, %t606 - br i1 %t609, label %for.body3022, label %for.end3024 -for.body3022: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a603, i32 0, i32 1 - %t611 = load ptr, ptr %a1 - %t612 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t611, { ptr, i64, i64 } { ptr @.str.1926, i64 5, i64 0 }) - %t613 = load i64, ptr %t610 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a603, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a603 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t610 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - %t618 = load i64, ptr %a607 - call void @finch_str_from_int(ptr %a619, i64 %t618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.1927, i64 4, i64 0 }, ptr %a622 - store { ptr, i64, i64 } %t620, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - store { ptr, i64, i64 } %t625, ptr %a627 - store { ptr, i64, i64 } { ptr @.str.1928, i64 9, i64 0 }, ptr %a628 - call void @finch_str_concat(ptr %a626, ptr %a627, ptr %a628) - store { ptr, i64, i64 } %t625, ptr %a629 - call void @finch_str_drop(ptr %a629) - %t630 = load { ptr, i64, i64 }, ptr %a626 - %t631 = load i64, ptr %a607 - %t632 = load { ptr, i64, i64 }, ptr %a603 - %t633 = extractvalue { ptr, i64, i64 } %t632, 1 - %t634 = icmp uge i64 %t631, %t633 - br i1 %t634, label %range3025, label %inrange3026 -range3025: - call void @finch_panic_index(ptr @.str.1929, i64 1213, i64 %t631, i64 %t633) - unreachable -inrange3026: - %t635 = extractvalue { ptr, i64, i64 } %t632, 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t631 - %t637 = load { ptr, i64, i64 }, ptr %t636 - store { ptr, i64, i64 } %t630, ptr %a639 - store { ptr, i64, i64 } %t637, ptr %a640 - call void @finch_str_concat(ptr %a638, ptr %a639, ptr %a640) - store { ptr, i64, i64 } %t630, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = load { ptr, i64, i64 }, ptr %a638 - %t643 = load i64, ptr %t617 - %t644 = add i64 %t643, 1 - call void @finch_arr_reserve(ptr %a602, i64 %t644, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t645 = load ptr, ptr %a602 - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t645, i64 %t643 - store { ptr, i64, i64 } %t642, ptr %t646 - store i64 %t644, ptr %t617 - br label %for.step3023 -for.step3023: - %t647 = load i64, ptr %a607 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a607 - br label %for.cond3021 -for.end3024: - %t649 = load ptr, ptr %a1 - %t650 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.1930, i64 11, i64 0 }, 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.1931, i64 9, i64 0 }, ptr %a657 - call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) - store { ptr, i64, i64 } %t654, ptr %a658 - call void @finch_str_drop(ptr %a658) - %t659 = load { ptr, i64, i64 }, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %a598 - store { ptr, i64, i64 } %t659, ptr %a662 - store { ptr, i64, i64 } %t660, ptr %a663 - call void @finch_str_concat(ptr %a661, ptr %a662, ptr %a663) - store { ptr, i64, i64 } %t659, ptr %a664 - call void @finch_str_drop(ptr %a664) - %t665 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t665, ptr %a667 - store { ptr, i64, i64 } { ptr @.str.1932, i64 3, i64 0 }, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t665, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - %t671 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1933, i64 1, i64 0 }, ptr %a672 - call void @finch_str_join(ptr %a673, ptr %a602, ptr %a672) - %t674 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t670, ptr %a676 - store { ptr, i64, i64 } %t674, ptr %a677 - call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677) - store { ptr, i64, i64 } %t670, ptr %a678 - call void @finch_str_drop(ptr %a678) - store { ptr, i64, i64 } %t674, ptr %a679 - call void @finch_str_drop(ptr %a679) - %t680 = load { ptr, i64, i64 }, ptr %a675 - store { ptr, i64, i64 } %t680, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.1934, i64 2, i64 0 }, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - store { ptr, i64, i64 } %t680, ptr %a684 - call void @finch_str_drop(ptr %a684) - %t685 = load { ptr, i64, i64 }, ptr %a681 - call void @finch.gen.emit(ptr %t649, { ptr, i64, i64 } %t685) - store { ptr, i64, i64 } %t685, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load ptr, ptr %a1 - %t688 = icmp eq ptr %t687, null - br i1 %t688, label %panic3027, label %ok3028 -panic3027: - call void @finch_panic(ptr @.str.1935, i64 1216, ptr @.str.1936) - unreachable -ok3028: - %t689 = getelementptr inbounds %S.gen.Gen, ptr %t687, i32 0, i32 9 - store i1 true, ptr %t689 - %t690 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %t690, i32 0, i32 1 - %t692 = load i64, ptr %t691 - store i64 0, ptr %a693 - br label %for.cond3029 -for.cond3029: - %t694 = load i64, ptr %a693 - %t695 = icmp slt i64 %t694, %t692 - br i1 %t695, label %for.body3030, label %for.end3032 -for.body3030: - %t696 = load ptr, ptr %a1 - %t697 = load i64, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a603 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range3033, label %inrange3034 -range3033: - call void @finch_panic_index(ptr @.str.1937, i64 1218, i64 %t697, i64 %t699) - unreachable -inrange3034: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds { ptr, i64, i64 }, ptr %t701, i64 %t697 - %t703 = load { ptr, i64, i64 }, ptr %t702 - call void @finch.gen.label(ptr %t696, { ptr, i64, i64 } %t703) - %t704 = load ptr, ptr %a1 - %t705 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t706 = load i64, ptr %a693 - %t707 = load { ptr, i64, i64 }, ptr %t705 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 %t706, %t708 - br i1 %t709, label %range3035, label %inrange3036 -range3035: - call void @finch_panic_index(ptr @.str.1939, i64 1219, i64 %t706, i64 %t708) - unreachable -inrange3036: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i64 %t706 - %t712 = load { ptr, i64, i64 }, ptr %t711 - call void @finch.gen.bufText(ptr %t704, { ptr, i64, i64 } { ptr @.str.1938, i64 4, i64 0 }, { ptr, i64, i64 } %t712) - %t713 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t714 = load i64, ptr %a693 - %t715 = load { ptr, i64, i64 }, ptr %t713 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 %t714, %t716 - br i1 %t717, label %range3037, label %inrange3038 -range3037: - call void @finch_panic_index(ptr @.str.1940, i64 1220, i64 %t714, i64 %t716) - unreachable -inrange3038: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds i64, ptr %t718, i64 %t714 - %t720 = load i64, ptr %t719 - %t721 = icmp sgt i64 %t720, 0 - br i1 %t721, label %then3039, label %endif3041 -then3039: - %t722 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t722, { ptr, i64, i64 } { ptr @.str.1941, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1942, i64 1, i64 0 }) - %t723 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t724 = load i64, ptr %a693 - %t725 = load { ptr, i64, i64 }, ptr %t723 - %t726 = extractvalue { ptr, i64, i64 } %t725, 1 - %t727 = icmp uge i64 %t724, %t726 - br i1 %t727, label %range3042, label %inrange3043 -range3042: - call void @finch_panic_index(ptr @.str.1943, i64 1222, i64 %t724, i64 %t726) - unreachable -inrange3043: - %t728 = extractvalue { ptr, i64, i64 } %t725, 0 - %t729 = getelementptr inbounds i64, ptr %t728, i64 %t724 - %t730 = load i64, ptr %t729 - store i64 0, ptr %a731 - br label %for.cond3044 -for.cond3044: - %t732 = load i64, ptr %a731 - %t733 = icmp slt i64 %t732, %t730 - br i1 %t733, label %for.body3045, label %for.end3047 -for.body3045: - %t734 = load i64, ptr %a731 - %t735 = icmp sgt i64 %t734, 0 - br i1 %t735, label %then3048, label %endif3050 -then3048: - %t736 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t736, { ptr, i64, i64 } { ptr @.str.1944, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1945, i64 2, i64 0 }) - br label %endif3050 -endif3050: - %t737 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 4 - %t738 = load i64, ptr %a693 - %t739 = load { ptr, i64, i64 }, ptr %t737 - %t740 = extractvalue { ptr, i64, i64 } %t739, 1 - %t741 = icmp uge i64 %t738, %t740 - br i1 %t741, label %range3051, label %inrange3052 -range3051: - call void @finch_panic_index(ptr @.str.1946, i64 1226, i64 %t738, i64 %t740) - unreachable -inrange3052: - %t742 = extractvalue { ptr, i64, i64 } %t739, 0 - %t743 = getelementptr inbounds i64, ptr %t742, i64 %t738 - %t744 = load i64, ptr %t743 - %t745 = load i64, ptr %a731 - %t746 = add i64 %t744, %t745 - store i64 %t746, ptr %a747 - %t748 = load ptr, ptr %a1 - %t749 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1947, i64 23, i64 0 }, 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.1948, i64 21, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - %t759 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t760 = load i64, ptr %a747 - %t761 = load { ptr, i64, i64 }, ptr %t759 - %t762 = extractvalue { ptr, i64, i64 } %t761, 1 - %t763 = icmp uge i64 %t760, %t762 - br i1 %t763, label %range3053, label %inrange3054 -range3053: - call void @finch_panic_index(ptr @.str.1949, i64 1227, i64 %t760, i64 %t762) - unreachable -inrange3054: - %t764 = extractvalue { ptr, i64, i64 } %t761, 0 - %t765 = getelementptr inbounds i64, ptr %t764, i64 %t760 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t758, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t758, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - %t775 = call { ptr, i64, i64 } @finch.gen.op(ptr %t748, { ptr, i64, i64 } %t774) - store { ptr, i64, i64 } %t774, ptr %a776 - call void @finch_str_drop(ptr %a776) - store { ptr, i64, i64 } %t775, ptr %a777 - %t778 = load ptr, ptr %a1 - %t779 = load ptr, ptr %a1 - %t780 = load ptr, ptr %a1 - %t781 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t782 = load i64, ptr %a747 - %t783 = load { ptr, i64, i64 }, ptr %t781 - %t784 = extractvalue { ptr, i64, i64 } %t783, 1 - %t785 = icmp uge i64 %t782, %t784 - br i1 %t785, label %range3055, label %inrange3056 -range3055: - call void @finch_panic_index(ptr @.str.1951, i64 1228, i64 %t782, i64 %t784) - unreachable -inrange3056: - %t786 = extractvalue { ptr, i64, i64 } %t783, 0 - %t787 = getelementptr inbounds %S.ast.Type, ptr %t786, i64 %t782 - %t788 = load %S.ast.Type, ptr %t787 - %t789 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t780, %S.ast.Type %t788) - %t790 = load { ptr, i64, i64 }, ptr %a777 - %t791 = call { ptr, i64, i64 } @finch.gen.load(ptr %t779, { ptr, i64, i64 } %t789, { ptr, i64, i64 } %t790) - store { ptr, i64, i64 } %t789, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t794 = load i64, ptr %a747 - %t795 = load { ptr, i64, i64 }, ptr %t793 - %t796 = extractvalue { ptr, i64, i64 } %t795, 1 - %t797 = icmp uge i64 %t794, %t796 - br i1 %t797, label %range3057, label %inrange3058 -range3057: - call void @finch_panic_index(ptr @.str.1952, i64 1228, i64 %t794, i64 %t796) - unreachable -inrange3058: - %t798 = extractvalue { ptr, i64, i64 } %t795, 0 - %t799 = getelementptr inbounds %S.ast.Type, ptr %t798, i64 %t794 - %t800 = load %S.ast.Type, ptr %t799 - call void @finch.gen.emitFormat(ptr %t778, { ptr, i64, i64 } { ptr @.str.1950, i64 4, i64 0 }, { ptr, i64, i64 } %t791, %S.ast.Type %t800, i1 true) - store { ptr, i64, i64 } %t791, ptr %a801 - call void @finch_str_drop(ptr %a801) - call void @finch_str_drop(ptr %a777) - br label %for.step3046 -for.step3046: - %t802 = load i64, ptr %a731 - %t803 = add i64 %t802, 1 - store i64 %t803, ptr %a731 - br label %for.cond3044 -for.end3047: - %t804 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t804, { ptr, i64, i64 } { ptr @.str.1953, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1954, i64 1, i64 0 }) - br label %endif3041 -endif3041: - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t805, { ptr, i64, i64 } %t806) - br label %for.step3031 -for.step3031: - %t807 = load i64, ptr %a693 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a693 - br label %for.cond3029 -for.end3032: - %t809 = load ptr, ptr %a1 - %t810 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.label(ptr %t809, { ptr, i64, i64 } %t810) - %t811 = load ptr, ptr %a1 - %t812 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 1 - %t813 = load { ptr, i64, i64 }, ptr %t812 - store { ptr, i64, i64 } %t813, ptr %a815 - store { ptr, i64, i64 } { ptr @.str.1956, i64 3, i64 0 }, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - call void @finch.gen.bufText(ptr %t811, { ptr, i64, i64 } { ptr @.str.1955, i64 4, i64 0 }, { ptr, i64, i64 } %t817) - store { ptr, i64, i64 } %t817, ptr %a818 - call void @finch_str_drop(ptr %a818) - %t819 = load ptr, ptr %a1 - %t820 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t819, { ptr, i64, i64 } %t820) - %t821 = load ptr, ptr %a1 - %t822 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.label(ptr %t821, { ptr, i64, i64 } %t822) - call void @finch.drop.arr_str(ptr %a603) - call void @finch.drop.arr_str(ptr %a602) - call void @finch_str_drop(ptr %a601) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a563) - call void @finch.drop.S_gen_StructDef(ptr %a559) - call void @finch.drop.S_gen_SumDef(ptr %a540) - br label %endif3010 -else3009: - %t823 = load ptr, ptr %a1 - %t824 = icmp eq ptr %t823, null - br i1 %t824, label %panic3059, label %ok3060 -panic3059: - call void @finch_panic(ptr @.str.1957, i64 1239, ptr @.str.1958) - unreachable -ok3060: - %t825 = getelementptr inbounds %S.gen.Gen, ptr %t823, i32 0, i32 16 - %t826 = load ptr, ptr %a1 - %t827 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t828 = load { ptr, i64, i64 }, ptr %t827 - %t829 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t830 = load { ptr, i64, i64 }, ptr %t829 - %t831 = call i64 @finch.gen.findStruct(ptr %t826, { ptr, i64, i64 } %t828, { ptr, i64, i64 } %t830) - %t832 = load { ptr, i64, i64 }, ptr %t825 - %t833 = extractvalue { ptr, i64, i64 } %t832, 1 - %t834 = icmp uge i64 %t831, %t833 - br i1 %t834, label %range3061, label %inrange3062 -range3061: - call void @finch_panic_index(ptr @.str.1959, i64 1239, i64 %t831, i64 %t833) - unreachable -inrange3062: - %t835 = extractvalue { ptr, i64, i64 } %t832, 0 - %t836 = getelementptr inbounds %S.gen.StructDef, ptr %t835, i64 %t831 - %t837 = load %S.gen.StructDef, ptr %t836 - store %S.gen.StructDef %t837, ptr %a838 - call void @finch.copy.S_gen_StructDef(ptr %a839, ptr %a838) - %t840 = load %S.gen.StructDef, ptr %a839 - store %S.gen.StructDef %t840, ptr %a841 - %t842 = load ptr, ptr %a1 - %t843 = load %S.ast.Type, ptr %a2 - %t844 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t842, %S.ast.Type %t843) - store { ptr, i64, i64 } %t844, ptr %a845 - %t846 = load ptr, ptr %a1 - %t847 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 1 - %t848 = load { ptr, i64, i64 }, ptr %t847 - store { ptr, i64, i64 } %t848, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.1961, i64 1, i64 0 }, ptr %a851 - call void @finch_str_concat(ptr %a849, ptr %a850, ptr %a851) - %t852 = load { ptr, i64, i64 }, ptr %a849 - call void @finch.gen.bufText(ptr %t846, { ptr, i64, i64 } { ptr @.str.1960, i64 4, i64 0 }, { ptr, i64, i64 } %t852) - store { ptr, i64, i64 } %t852, ptr %a853 - call void @finch_str_drop(ptr %a853) - %t854 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i32 0, i32 1 - %t856 = load i64, ptr %t855 - store i64 0, ptr %a857 - br label %for.cond3063 -for.cond3063: - %t858 = load i64, ptr %a857 - %t859 = icmp slt i64 %t858, %t856 - br i1 %t859, label %for.body3064, label %for.end3066 -for.body3064: - store { ptr, i64, i64 } { ptr @.str.1962, i64 2, i64 0 }, ptr %a860 - %t861 = load i64, ptr %a857 - %t862 = icmp eq i64 %t861, 0 - br i1 %t862, label %then3067, label %endif3069 -then3067: - %t863 = load { ptr, i64, i64 }, ptr %a860 - store { ptr, i64, i64 } { ptr @.str.1963, i64 0, i64 0 }, ptr %a860 - store { ptr, i64, i64 } %t863, ptr %a864 - call void @finch_str_drop(ptr %a864) - br label %endif3069 -endif3069: - %t865 = load ptr, ptr %a1 - %t866 = load { ptr, i64, i64 }, ptr %a860 - %t867 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 11 - %t868 = load i64, ptr %a857 - %t869 = load { ptr, i64, i64 }, ptr %t867 - %t870 = extractvalue { ptr, i64, i64 } %t869, 1 - %t871 = icmp uge i64 %t868, %t870 - br i1 %t871, label %range3070, label %inrange3071 -range3070: - call void @finch_panic_index(ptr @.str.1965, i64 1247, i64 %t868, i64 %t870) - unreachable -inrange3071: - %t872 = extractvalue { ptr, i64, i64 } %t869, 0 - %t873 = getelementptr inbounds { ptr, i64, i64 }, ptr %t872, i64 %t868 - %t874 = load { ptr, i64, i64 }, ptr %t873 - store { ptr, i64, i64 } %t866, ptr %a876 - store { ptr, i64, i64 } %t874, ptr %a877 - call void @finch_str_concat(ptr %a875, ptr %a876, ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a875 - store { ptr, i64, i64 } %t878, ptr %a880 - store { ptr, i64, i64 } { ptr @.str.1966, i64 2, i64 0 }, ptr %a881 - call void @finch_str_concat(ptr %a879, ptr %a880, ptr %a881) - store { ptr, i64, i64 } %t878, ptr %a882 - call void @finch_str_drop(ptr %a882) - %t883 = load { ptr, i64, i64 }, ptr %a879 - call void @finch.gen.bufText(ptr %t865, { ptr, i64, i64 } { ptr @.str.1964, i64 4, i64 0 }, { ptr, i64, i64 } %t883) - store { ptr, i64, i64 } %t883, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load ptr, ptr %a1 - %t886 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } { ptr @.str.1967, i64 23, i64 0 }, ptr %a888 - store { ptr, i64, i64 } %t886, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - %t890 = load { ptr, i64, i64 }, ptr %a887 - store { ptr, i64, i64 } %t890, ptr %a892 - store { ptr, i64, i64 } { ptr @.str.1968, i64 21, i64 0 }, ptr %a893 - call void @finch_str_concat(ptr %a891, ptr %a892, ptr %a893) - store { ptr, i64, i64 } %t890, ptr %a894 - call void @finch_str_drop(ptr %a894) - %t895 = load { ptr, i64, i64 }, ptr %a891 - %t896 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 3 - %t897 = load i64, ptr %a857 - %t898 = load { ptr, i64, i64 }, ptr %t896 - %t899 = extractvalue { ptr, i64, i64 } %t898, 1 - %t900 = icmp uge i64 %t897, %t899 - br i1 %t900, label %range3072, label %inrange3073 -range3072: - call void @finch_panic_index(ptr @.str.1969, i64 1248, i64 %t897, i64 %t899) - unreachable -inrange3073: - %t901 = extractvalue { ptr, i64, i64 } %t898, 0 - %t902 = getelementptr inbounds i64, ptr %t901, i64 %t897 - %t903 = load i64, ptr %t902 - call void @finch_str_from_int(ptr %a904, i64 %t903) - %t905 = load { ptr, i64, i64 }, ptr %a904 - store { ptr, i64, i64 } %t895, ptr %a907 - store { ptr, i64, i64 } %t905, ptr %a908 - call void @finch_str_concat(ptr %a906, ptr %a907, ptr %a908) - store { ptr, i64, i64 } %t895, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t905, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load { ptr, i64, i64 }, ptr %a906 - %t912 = call { ptr, i64, i64 } @finch.gen.op(ptr %t885, { ptr, i64, i64 } %t911) - store { ptr, i64, i64 } %t911, ptr %a913 - call void @finch_str_drop(ptr %a913) - store { ptr, i64, i64 } %t912, ptr %a914 - %t915 = load ptr, ptr %a1 - %t916 = load ptr, ptr %a1 - %t917 = load ptr, ptr %a1 - %t918 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t919 = load i64, ptr %a857 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3074, label %inrange3075 -range3074: - call void @finch_panic_index(ptr @.str.1971, i64 1249, i64 %t919, i64 %t921) - unreachable -inrange3075: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.ast.Type, ptr %t923, i64 %t919 - %t925 = load %S.ast.Type, ptr %t924 - %t926 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t917, %S.ast.Type %t925) - %t927 = load { ptr, i64, i64 }, ptr %a914 - %t928 = call { ptr, i64, i64 } @finch.gen.load(ptr %t916, { ptr, i64, i64 } %t926, { ptr, i64, i64 } %t927) - store { ptr, i64, i64 } %t926, ptr %a929 - call void @finch_str_drop(ptr %a929) - %t930 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t931 = load i64, ptr %a857 - %t932 = load { ptr, i64, i64 }, ptr %t930 - %t933 = extractvalue { ptr, i64, i64 } %t932, 1 - %t934 = icmp uge i64 %t931, %t933 - br i1 %t934, label %range3076, label %inrange3077 -range3076: - call void @finch_panic_index(ptr @.str.1972, i64 1249, i64 %t931, i64 %t933) - unreachable -inrange3077: - %t935 = extractvalue { ptr, i64, i64 } %t932, 0 - %t936 = getelementptr inbounds %S.ast.Type, ptr %t935, i64 %t931 - %t937 = load %S.ast.Type, ptr %t936 - call void @finch.gen.emitFormat(ptr %t915, { ptr, i64, i64 } { ptr @.str.1970, i64 4, i64 0 }, { ptr, i64, i64 } %t928, %S.ast.Type %t937, i1 true) - store { ptr, i64, i64 } %t928, ptr %a938 - call void @finch_str_drop(ptr %a938) - call void @finch_str_drop(ptr %a914) - call void @finch_str_drop(ptr %a860) - br label %for.step3065 -for.step3065: - %t939 = load i64, ptr %a857 - %t940 = add i64 %t939, 1 - store i64 %t940, ptr %a857 - br label %for.cond3063 -for.end3066: - %t941 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t941, { ptr, i64, i64 } { ptr @.str.1973, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1974, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a845) - call void @finch.drop.S_gen_StructDef(ptr %a841) - br label %endif3010 -endif3010: - br label %endif2993 -endif2993: - br label %endif2968 -endif2968: - br label %endif2959 -endif2959: - %t942 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t942, { ptr, i64, i64 } { ptr @.str.1975, i64 8, i64 0 }) - %t943 = load ptr, ptr %a1 - %t944 = load %S.gen.Saved, ptr %a32 - %t945 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1976, i64 21, i64 0 }, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t949, ptr %a951 - store { ptr, i64, i64 } { ptr @.str.1977, i64 18, i64 0 }, ptr %a952 - call void @finch_str_concat(ptr %a950, ptr %a951, ptr %a952) - store { ptr, i64, i64 } %t949, ptr %a953 - call void @finch_str_drop(ptr %a953) - %t954 = load { ptr, i64, i64 }, ptr %a950 - call void @finch.gen.endHelper(ptr %t943, %S.gen.Saved %t944, { ptr, i64, i64 } %t954) - store { ptr, i64, i64 } %t954, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t956 -} - -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3078, label %endif3080 -then3078: - %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 -endif3080: - %t18 = load i64, ptr %a10 - %t19 = load i64, ptr %a7 - %t20 = icmp slt i64 %t18, %t19 - br i1 %t20, label %then3081, label %endif3083 -then3081: - %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.1978, i64 6, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1979, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1980, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t46, %S.ast.Type %t47) - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a56 - call void @finch_str_drop(ptr %a56) - ret { ptr, i64, i64 } %t55 -endif3083: - %t57 = load %S.ast.Type, ptr %a3 - %t58 = call i1 @finch.gen.isSigned(%S.ast.Type %t57) - br i1 %t58, label %then3084, label %endif3086 -then3084: - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load %S.ast.Type, ptr %a3 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) - store { ptr, i64, i64 } { ptr @.str.1981, i64 5, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.1982, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.1983, i64 4, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t78, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Type, ptr %a4 - %t86 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t84, %S.ast.Type %t85) - store { ptr, i64, i64 } %t83, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t83, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a94 - call void @finch_str_drop(ptr %a94) - ret { ptr, i64, i64 } %t93 -endif3086: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a3 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - store { ptr, i64, i64 } { ptr @.str.1984, i64 5, i64 0 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1985, i64 1, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1986, i64 4, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load ptr, ptr %a1 - %t121 = load %S.ast.Type, ptr %a4 - %t122 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t120, %S.ast.Type %t121) - store { ptr, i64, i64 } %t119, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t119, ptr %a126 - call void @finch_str_drop(ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a123 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - ret { ptr, i64, i64 } %t129 -} - -define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3087, label %endif3089 -then3087: - %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 -endif3089: - %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 %then3090, label %endif3092 -then3090: - %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.1987, i64 6, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1988, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.1989, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.ast.Type, ptr %a4 - %t49 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t47, %S.ast.Type %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - %t56 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - ret { ptr, i64, i64 } %t56 -endif3092: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a3 - %t61 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1990, i64 8, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1991, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1992, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = load %S.ast.Type, ptr %a4 - %t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84) - store { ptr, i64, i64 } %t82, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t82, ptr %a89 - call void @finch_str_drop(ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a86 - %t92 = call { ptr, i64, i64 } @finch.gen.op(ptr %t58, { ptr, i64, i64 } %t91) - store { ptr, i64, i64 } %t91, ptr %a93 - call void @finch_str_drop(ptr %a93) - ret { ptr, i64, i64 } %t92 -} - -define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.isSigned(%S.ast.Type %t5) - br i1 %t6, label %then3093, label %endif3095 -then3093: - %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.1993, i64 7, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1994, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1995, i64 4, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = load %S.ast.Type, ptr %a4 - %t34 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t32, %S.ast.Type %t33) - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret { ptr, i64, i64 } %t41 -endif3095: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Type, ptr %a3 - %t46 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t44, %S.ast.Type %t45) - store { ptr, i64, i64 } { ptr @.str.1996, i64 7, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1997, i64 1, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t56, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1998, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - ret { ptr, i64, i64 } %t77 -} - -define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) { -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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a175 = alloca %S.ast.Type, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a203 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.ast.Type, align 16 - %a233 = alloca %S.ast.Type, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca %S.gen.Val, align 16 - %a348 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3096, label %endif3098 -then3096: - %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 -endif3098: - %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.1999, 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.from3099 -logic.from3099: - br i1 %t20, label %logic.rhs3100, label %logic.end3101 -logic.rhs3100: - %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.2000, 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.rend3102 -logic.rend3102: - br label %logic.end3101 -logic.end3101: - %t27 = phi i1 [ false, %logic.from3099 ], [ %t26, %logic.rend3102 ] - br i1 %t27, label %then3103, label %endif3105 -then3103: - %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.2001, 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 -endif3105: - %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.2002, 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.from3106 -logic.from3106: - br i1 %t40, label %logic.rhs3107, label %logic.end3108 -logic.rhs3107: - %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.2003, 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.rend3109 -logic.rend3109: - br label %logic.end3108 -logic.end3108: - %t47 = phi i1 [ false, %logic.from3106 ], [ %t46, %logic.rend3109 ] - br label %logic.from3110 -logic.from3110: - br i1 %t47, label %logic.rhs3111, label %logic.end3112 -logic.rhs3111: - %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.from3113 -logic.from3113: - br i1 %t52, label %logic.end3115, label %logic.rhs3114 -logic.rhs3114: - %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.rend3116 -logic.rend3116: - br label %logic.end3115 -logic.end3115: - %t57 = phi i1 [ true, %logic.from3113 ], [ %t56, %logic.rend3116 ] - br label %logic.rend3117 -logic.rend3117: - br label %logic.end3112 -logic.end3112: - %t58 = phi i1 [ false, %logic.from3110 ], [ %t57, %logic.rend3117 ] - br i1 %t58, label %then3118, label %endif3120 -then3118: - %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 -endif3120: - %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.from3121 -logic.from3121: - br i1 %t72, label %logic.rhs3122, label %logic.end3123 -logic.rhs3122: - %t73 = load %S.ast.Type, ptr %a3 - %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) - br label %logic.rend3124 -logic.rend3124: - br label %logic.end3123 -logic.end3123: - %t75 = phi i1 [ false, %logic.from3121 ], [ %t74, %logic.rend3124 ] - br i1 %t75, label %then3125, label %endif3127 -then3125: - %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t77 = load i1, ptr %t76 - br label %logic.from3128 -logic.from3128: - br i1 %t77, label %logic.rhs3129, label %logic.end3130 -logic.rhs3129: - %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.rend3131 -logic.rend3131: - br label %logic.end3130 -logic.end3130: - %t84 = phi i1 [ false, %logic.from3128 ], [ %t83, %logic.rend3131 ] - br i1 %t84, label %then3132, label %endif3134 -then3132: - %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 -endif3134: - %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 %then3135, label %endif3137 -then3135: - %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 -endif3137: - %t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t115 = load i1, ptr %t114 - br i1 %t115, label %then3138, label %endif3140 -then3138: - %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.2004, 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.2005, i64 16, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load %S.ast.Type, ptr %a3 - %t130 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t136) - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif3140 -endif3140: - br label %endif3127 -endif3127: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t139 = load %S.ast.Type, ptr %t138 - %t140 = call i1 @finch.gen.isInt(%S.ast.Type %t139) - br label %logic.from3141 -logic.from3141: - br i1 %t140, label %logic.rhs3142, label %logic.end3143 -logic.rhs3142: - %t141 = load %S.ast.Type, ptr %a3 - %t142 = call i1 @finch.gen.isFloat(%S.ast.Type %t141) - br label %logic.rend3144 -logic.rend3144: - br label %logic.end3143 -logic.end3143: - %t143 = phi i1 [ false, %logic.from3141 ], [ %t142, %logic.rend3144 ] - br i1 %t143, label %then3145, label %endif3147 -then3145: - %t144 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t145 = load i1, ptr %t144 - br label %logic.from3148 -logic.from3148: - br i1 %t145, label %logic.rhs3149, label %logic.end3150 -logic.rhs3149: - %t146 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.2006, i64 5, i64 0 }, ptr %a149 - %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) - %t151 = icmp ne i32 %t150, 0 - br label %logic.rend3151 -logic.rend3151: - br label %logic.end3150 -logic.end3150: - %t152 = phi i1 [ false, %logic.from3148 ], [ %t151, %logic.rend3151 ] - br i1 %t152, label %then3152, label %endif3154 -then3152: - %t153 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t154 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.2007, i64 2, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t158, 0 - %t160 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - %t164 = insertvalue %S.gen.Val %t159, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 3 - ret %S.gen.Val %t165 -endif3154: - %t166 = load ptr, ptr %a1 - %t167 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = load %S.ast.Type, ptr %a3 - %t172 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t166, { ptr, i64, i64 } %t168, %S.ast.Type %t170, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t174, ptr %a175 - call void @finch.copy.S_ast_Type(ptr %a176, ptr %a175) - %t177 = load %S.ast.Type, ptr %a176 - %t178 = insertvalue %S.gen.Val %t173, %S.ast.Type %t177, 1 - ret %S.gen.Val %t178 -endif3147: - %t179 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i32 0, i32 0 - %t181 = load { ptr, i64, i64 }, ptr %t180 - store { ptr, i64, i64 } %t181, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.2008, i64 3, i64 0 }, ptr %a183 - %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) - %t185 = icmp ne i32 %t184, 0 - br label %logic.from3155 -logic.from3155: - br i1 %t185, label %logic.rhs3156, label %logic.end3157 -logic.rhs3156: - %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t187, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.2009, i64 5, i64 0 }, ptr %a189 - %t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189) - %t191 = icmp ne i32 %t190, 0 - br label %logic.rend3158 -logic.rend3158: - br label %logic.end3157 -logic.end3157: - %t192 = phi i1 [ false, %logic.from3155 ], [ %t191, %logic.rend3158 ] - br i1 %t192, label %then3159, label %endif3161 -then3159: - %t193 = load ptr, ptr %a1 - %t194 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t197 = load %S.ast.Type, ptr %t196 - %t198 = load %S.ast.Type, ptr %a3 - %t199 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t193, { ptr, i64, i64 } %t195, %S.ast.Type %t197, %S.ast.Type %t198) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 - %t201 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t201, ptr %a202 - call void @finch.copy.S_ast_Type(ptr %a203, ptr %a202) - %t204 = load %S.ast.Type, ptr %a203 - %t205 = insertvalue %S.gen.Val %t200, %S.ast.Type %t204, 1 - ret %S.gen.Val %t205 -endif3161: - %t206 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t207 = getelementptr inbounds %S.ast.Type, ptr %t206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.2010, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br label %logic.from3162 -logic.from3162: - br i1 %t212, label %logic.rhs3163, label %logic.end3164 -logic.rhs3163: - %t213 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } { ptr @.str.2011, i64 3, i64 0 }, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br label %logic.rend3165 -logic.rend3165: - br label %logic.end3164 -logic.end3164: - %t219 = phi i1 [ false, %logic.from3162 ], [ %t218, %logic.rend3165 ] - br label %logic.from3166 -logic.from3166: - br i1 %t219, label %logic.rhs3167, label %logic.end3168 -logic.rhs3167: - %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t221 = load i1, ptr %t220 - br label %logic.rend3169 -logic.rend3169: - br label %logic.end3168 -logic.end3168: - %t222 = phi i1 [ false, %logic.from3166 ], [ %t221, %logic.rend3169 ] - br i1 %t222, label %then3170, label %endif3172 -then3170: - %t223 = load ptr, ptr %a1 - %t224 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t227 = load %S.ast.Type, ptr %t226 - %t228 = load %S.ast.Type, ptr %a3 - %t229 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t223, { ptr, i64, i64 } %t225, %S.ast.Type %t227, %S.ast.Type %t228) - %t230 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t231 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t231, ptr %a232 - call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) - %t234 = load %S.ast.Type, ptr %a233 - %t235 = insertvalue %S.gen.Val %t230, %S.ast.Type %t234, 1 - ret %S.gen.Val %t235 -endif3172: - %t236 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.2012, i64 9, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a237 - %t241 = load %S.ast.Type, ptr %a3 - %t242 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t241) - store { ptr, i64, i64 } %t240, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t240, ptr %a246 - call void @finch_str_drop(ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2013, i64 14, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t253, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t253, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a263 - %t264 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t265 = load %S.ast.Type, ptr %t264 - %t266 = call i1 @finch.gen.isNumber(%S.ast.Type %t265) - br label %logic.from3173 -logic.from3173: - br i1 %t266, label %logic.rhs3174, label %logic.end3175 -logic.rhs3174: - %t267 = load %S.ast.Type, ptr %a3 - %t268 = call i1 @finch.gen.isNumber(%S.ast.Type %t267) - br label %logic.rend3176 -logic.rend3176: - br label %logic.end3175 -logic.end3175: - %t269 = phi i1 [ false, %logic.from3173 ], [ %t268, %logic.rend3176 ] - br i1 %t269, label %then3177, label %endif3179 -then3177: - %t270 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t270, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.2014, i64 6, i64 0 }, ptr %a273 - call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a271 - %t275 = load %S.ast.Type, ptr %a3 - %t276 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t275) - store { ptr, i64, i64 } %t274, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t274, ptr %a280 - call void @finch_str_drop(ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.2015, i64 16, i64 0 }, ptr %a285 - call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) - store { ptr, i64, i64 } %t282, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a283 - %t288 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t287, ptr %a263 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t291 = load %S.ast.Type, ptr %t290 - %t292 = call i1 @finch.gen.isFloat(%S.ast.Type %t291) - br label %logic.from3180 -logic.from3180: - br i1 %t292, label %logic.rhs3181, label %logic.end3182 -logic.rhs3181: - %t293 = load %S.ast.Type, ptr %a3 - %t294 = call i1 @finch.gen.isInt(%S.ast.Type %t293) - br label %logic.rend3183 -logic.rend3183: - br label %logic.end3182 -logic.end3182: - %t295 = phi i1 [ false, %logic.from3180 ], [ %t294, %logic.rend3183 ] - br i1 %t295, label %then3184, label %endif3186 -then3184: - %t296 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.2016, i64 26, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t300, ptr %a263 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif3186 -endif3186: - %t303 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.2017, i64 1, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t307, ptr %a263 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif3179 -endif3179: - %t310 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.2018, i64 3, i64 0 }, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br label %logic.from3187 -logic.from3187: - br i1 %t315, label %logic.rhs3188, label %logic.end3189 -logic.rhs3188: - %t316 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t317 = load %S.ast.Type, ptr %t316 - %t318 = call i1 @finch.gen.isNumber(%S.ast.Type %t317) - br label %logic.from3190 -logic.from3190: - br i1 %t318, label %logic.end3192, label %logic.rhs3191 -logic.rhs3191: - %t319 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i32 0, i32 0 - %t321 = load { ptr, i64, i64 }, ptr %t320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.2019, i64 4, i64 0 }, ptr %a323 - %t324 = call i32 @finch_str_eq(ptr %a322, ptr %a323) - %t325 = icmp ne i32 %t324, 0 - br label %logic.rend3193 -logic.rend3193: - br label %logic.end3192 -logic.end3192: - %t326 = phi i1 [ true, %logic.from3190 ], [ %t325, %logic.rend3193 ] - br label %logic.from3194 -logic.from3194: - br i1 %t326, label %logic.end3196, label %logic.rhs3195 -logic.rhs3195: - %t327 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Type, ptr %t327, i32 0, i32 0 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t329, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.2020, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_eq(ptr %a330, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.rend3197 -logic.rend3197: - br label %logic.end3196 -logic.end3196: - %t334 = phi i1 [ true, %logic.from3194 ], [ %t333, %logic.rend3197 ] - br label %logic.rend3198 -logic.rend3198: - br label %logic.end3189 -logic.end3189: - %t335 = phi i1 [ false, %logic.from3187 ], [ %t334, %logic.rend3198 ] - br i1 %t335, label %then3199, label %endif3201 -then3199: - %t336 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.2021, i64 34, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a337 - %t341 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t340, ptr %a263 - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - br label %endif3201 -endif3201: - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Node, ptr %a4 - %t345 = load { ptr, i64, i64 }, ptr %a263 - call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t345) - %t346 = load %S.gen.Val, ptr %a2 - store %S.gen.Val %t346, ptr %a347 - call void @finch.copy.S_gen_Val(ptr %a348, ptr %a347) - %t349 = load %S.gen.Val, ptr %a348 - call void @finch_str_drop(ptr %a263) - ret %S.gen.Val %t349 -} - -define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic3202, label %ok3203 -panic3202: - call void @finch_panic(ptr @.str.2022, i64 1346, ptr @.str.2023) - unreachable -ok3203: - %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.cond3204 -for.cond3204: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body3205, label %for.end3207 -for.body3205: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic3208, label %ok3209 -panic3208: - call void @finch_panic(ptr @.str.2024, i64 1347, ptr @.str.2025) - unreachable -ok3209: - %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 %panic3210, label %ok3211 -panic3210: - call void @finch_panic(ptr @.str.2026, i64 1348, ptr @.str.2027) - unreachable -ok3211: - %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 %range3212, label %inrange3213 -range3212: - call void @finch_panic_index(ptr @.str.2028, i64 1348, i64 %t23, i64 %t25) - unreachable -inrange3213: - %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.cond3214 -for.cond3214: - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, %t31 - br i1 %t34, label %for.body3215, label %for.end3217 -for.body3215: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic3218, label %ok3219 -panic3218: - call void @finch_panic(ptr @.str.2029, i64 1349, ptr @.str.2030) - unreachable -ok3219: - %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 %range3220, label %inrange3221 -range3220: - call void @finch_panic_index(ptr @.str.2031, i64 1349, i64 %t38, i64 %t40) - unreachable -inrange3221: - %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 %range3222, label %inrange3223 -range3222: - call void @finch_panic_index(ptr @.str.2032, i64 1349, i64 %t45, i64 %t47) - unreachable -inrange3223: - %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 %then3224, label %endif3226 -then3224: - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic3227, label %ok3228 -panic3227: - call void @finch_panic(ptr @.str.2033, i64 1350, ptr @.str.2034) - unreachable -ok3228: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 44 - %t61 = load i1, ptr %t60 - br label %logic.from3229 -logic.from3229: - br i1 %t61, label %logic.rhs3230, label %logic.end3231 -logic.rhs3230: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3232, label %ok3233 -panic3232: - call void @finch_panic(ptr @.str.2035, i64 1350, ptr @.str.2036) - unreachable -ok3233: - %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 %range3234, label %inrange3235 -range3234: - call void @finch_panic_index(ptr @.str.2037, i64 1350, i64 %t65, i64 %t67) - unreachable -inrange3235: - %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 %range3236, label %inrange3237 -range3236: - call void @finch_panic_index(ptr @.str.2038, i64 1350, i64 %t72, i64 %t74) - unreachable -inrange3237: - %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 %panic3238, label %ok3239 -panic3238: - call void @finch_panic(ptr @.str.2039, i64 1350, ptr @.str.2040) - unreachable -ok3239: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 45 - %t83 = load i64, ptr %t82 - %t84 = icmp sge i64 %t79, %t83 - br label %logic.rend3240 -logic.rend3240: - br label %logic.end3231 -logic.end3231: - %t85 = phi i1 [ false, %logic.from3229 ], [ %t84, %logic.rend3240 ] - br i1 %t85, label %then3241, label %endif3243 -then3241: - br label %for.step3216 -endif3243: - %t86 = load i64, ptr %a19 - %t87 = mul i64 %t86, 100000 - %t88 = load i64, ptr %a32 - %t89 = add i64 %t87, %t88 - ret i64 %t89 -endif3226: - br label %for.step3216 -for.step3216: - %t90 = load i64, ptr %a32 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a32 - br label %for.cond3214 -for.end3217: - br label %for.step3206 -for.step3206: - %t92 = load i64, ptr %a8 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a8 - br label %for.cond3204 -for.end3207: - 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 7 - %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 7 - 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 %panic3244, label %ok3245 -panic3244: - call void @finch_panic(ptr @.str.2041, i64 1361, ptr @.str.2042) - unreachable -ok3245: - %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 %range3246, label %inrange3247 -range3246: - call void @finch_panic_index(ptr @.str.2043, i64 1361, i64 %t7, i64 %t9) - unreachable -inrange3247: - %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 %range3248, label %inrange3249 -range3248: - call void @finch_panic_index(ptr @.str.2044, i64 1361, i64 %t15, i64 %t17) - unreachable -inrange3249: - %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 %panic3250, label %ok3251 -panic3250: - call void @finch_panic(ptr @.str.2045, i64 1365, ptr @.str.2046) - unreachable -ok3251: - %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.cond3252 -for.cond3252: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body3253, label %for.end3255 -for.body3253: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic3256, label %ok3257 -panic3256: - call void @finch_panic(ptr @.str.2047, i64 1366, ptr @.str.2048) - unreachable -ok3257: - %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 %range3258, label %inrange3259 -range3258: - call void @finch_panic_index(ptr @.str.2049, i64 1366, i64 %t15, i64 %t17) - unreachable -inrange3259: - %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.from3260 -logic.from3260: - br i1 %t27, label %logic.rhs3261, label %logic.end3262 -logic.rhs3261: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic3263, label %ok3264 -panic3263: - call void @finch_panic(ptr @.str.2050, i64 1366, ptr @.str.2051) - unreachable -ok3264: - %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 %range3265, label %inrange3266 -range3265: - call void @finch_panic_index(ptr @.str.2052, i64 1366, i64 %t31, i64 %t33) - unreachable -inrange3266: - %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.rend3267 -logic.rend3267: - br label %logic.end3262 -logic.end3262: - %t44 = phi i1 [ false, %logic.from3260 ], [ %t43, %logic.rend3267 ] - br label %logic.from3268 -logic.from3268: - br i1 %t44, label %logic.rhs3269, label %logic.end3270 -logic.rhs3269: - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic3271, label %ok3272 -panic3271: - call void @finch_panic(ptr @.str.2053, i64 1366, ptr @.str.2054) - unreachable -ok3272: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 15 - %t48 = load i64, ptr %a9 - %t49 = load { ptr, i64, i64 }, ptr %t47 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range3273, label %inrange3274 -range3273: - call void @finch_panic_index(ptr @.str.2055, i64 1366, i64 %t48, i64 %t50) - unreachable -inrange3274: - %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.rend3275 -logic.rend3275: - br label %logic.end3270 -logic.end3270: - %t58 = phi i1 [ false, %logic.from3268 ], [ %t57, %logic.rend3275 ] - br i1 %t58, label %then3276, label %endif3278 -then3276: - %t59 = load i64, ptr %a9 - ret i64 %t59 -endif3278: - br label %for.step3254 -for.step3254: - %t60 = load i64, ptr %a9 - %t61 = add i64 %t60, 1 - store i64 %t61, ptr %a9 - br label %for.cond3252 -for.end3255: - 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 %panic3279, label %ok3280 -panic3279: - call void @finch_panic(ptr @.str.2056, i64 1374, ptr @.str.2057) - unreachable -ok3280: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 15 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 - %t9 = load i64, ptr %t8 - store i64 0, ptr %a10 - br label %for.cond3281 -for.cond3281: - %t11 = load i64, ptr %a10 - %t12 = icmp slt i64 %t11, %t9 - br i1 %t12, label %for.body3282, label %for.end3284 -for.body3282: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic3285, label %ok3286 -panic3285: - call void @finch_panic(ptr @.str.2058, i64 1375, ptr @.str.2059) - unreachable -ok3286: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 15 - %t16 = load i64, ptr %a10 - %t17 = load { ptr, i64, i64 }, ptr %t15 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range3287, label %inrange3288 -range3287: - call void @finch_panic_index(ptr @.str.2060, i64 1375, i64 %t16, i64 %t18) - unreachable -inrange3288: - %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.from3289 -logic.from3289: - br i1 %t28, label %logic.rhs3290, label %logic.end3291 -logic.rhs3290: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3292, label %ok3293 -panic3292: - call void @finch_panic(ptr @.str.2061, i64 1375, ptr @.str.2062) - unreachable -ok3293: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 - %t32 = load i64, ptr %a10 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3294, label %inrange3295 -range3294: - call void @finch_panic_index(ptr @.str.2063, i64 1375, i64 %t32, i64 %t34) - unreachable -inrange3295: - %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.rend3296 -logic.rend3296: - br label %logic.end3291 -logic.end3291: - %t45 = phi i1 [ false, %logic.from3289 ], [ %t44, %logic.rend3296 ] - br label %logic.from3297 -logic.from3297: - br i1 %t45, label %logic.rhs3298, label %logic.end3299 -logic.rhs3298: - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic3300, label %ok3301 -panic3300: - call void @finch_panic(ptr @.str.2064, i64 1375, ptr @.str.2065) - unreachable -ok3301: - %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 15 - %t49 = load i64, ptr %a10 - %t50 = load { ptr, i64, i64 }, ptr %t48 - %t51 = extractvalue { ptr, i64, i64 } %t50, 1 - %t52 = icmp uge i64 %t49, %t51 - br i1 %t52, label %range3302, label %inrange3303 -range3302: - call void @finch_panic_index(ptr @.str.2066, i64 1375, i64 %t49, i64 %t51) - unreachable -inrange3303: - %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.rend3304 -logic.rend3304: - br label %logic.end3299 -logic.end3299: - %t62 = phi i1 [ false, %logic.from3297 ], [ %t61, %logic.rend3304 ] - br i1 %t62, label %then3305, label %endif3307 -then3305: - %t63 = load i64, ptr %a10 - ret i64 %t63 -endif3307: - br label %for.step3283 -for.step3283: - %t64 = load i64, ptr %a10 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a10 - br label %for.cond3281 -for.end3284: - 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.2067, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2068, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.2069, i64 3, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.2070, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.2071, i64 4, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.2072, i64 5, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.2073, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.2074, i64 9, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.2075, i64 10, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.2076, i64 11, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.2077, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.2078, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.2079, i64 5, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.2080, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.2081, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.2082, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.2083, i64 11, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.2084, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.2085, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.2086, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.2087, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.2088, i64 2, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.2089, i64 3, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 - store { ptr, i64, i64 } { ptr @.str.2090, i64 3, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24 - store { ptr, i64, i64 } { ptr @.str.2091, i64 3, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 - store { ptr, i64, i64 } { ptr @.str.2092, i64 3, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 - store { ptr, i64, i64 } { ptr @.str.2093, i64 3, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27 - store { ptr, i64, i64 } { ptr @.str.2094, 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.cond3308 -find.cond3308: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t39 - br i1 %t43, label %find.body3309, label %find.end3312 -find.body3309: - %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.hit3310, label %find.next3311 -find.hit3310: - store i64 %t42, ptr %a38 - br label %find.end3312 -find.next3311: - %t50 = add i64 %t42, 1 - store i64 %t50, ptr %a41 - br label %find.cond3308 -find.end3312: - %t51 = load i64, ptr %a38 - %t52 = icmp sge i64 %t51, 0 - call void @finch.drop.arr_str(ptr %a35) - ret i1 %t52 -} - -define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5, i1 %p6) { -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 - %a7 = alloca i1, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a93 = alloca i1, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca %S.ast.Node, align 16 - %a238 = alloca %S.ast.Node, align 16 - %a240 = alloca %S.ast.Node, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %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 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } %p4, ptr %a5 - store i1 %p5, ptr %a6 - store i1 %p6, ptr %a7 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a3 - %t10 = call i64 @finch.gen.lookup(ptr %t8, { ptr, i64, i64 } %t9) - %t11 = icmp sge i64 %t10, 0 - br label %logic.from3313 -logic.from3313: - br i1 %t11, label %logic.rhs3314, label %logic.end3315 -logic.rhs3314: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.2095, i64 3, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp eq i32 %t15, 0 - br label %logic.rend3316 -logic.rend3316: - br label %logic.end3315 -logic.end3315: - %t17 = phi i1 [ false, %logic.from3313 ], [ %t16, %logic.rend3316 ] - br i1 %t17, label %then3317, label %endif3319 -then3317: - %t18 = load ptr, ptr %a1 - %t19 = load %S.ast.Node, ptr %a2 - %t20 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2096, i64 18, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2097, i64 21, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - br label %endif3319 -endif3319: - %t31 = load ptr, ptr %a1 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic3320, label %ok3321 -panic3320: - call void @finch_panic(ptr @.str.2098, i64 1393, ptr @.str.2099) - unreachable -ok3321: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 14 - %t35 = load { ptr, i64, i64 }, ptr %t34 - %t36 = load { ptr, i64, i64 }, ptr %a3 - %t37 = call i64 @finch.gen.findFn(ptr %t31, { ptr, i64, i64 } %t35, { ptr, i64, i64 } %t36) - %t38 = icmp sge i64 %t37, 0 - br i1 %t38, label %then3322, label %endif3324 -then3322: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - %t41 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2100, i64 1, i64 0 }, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.2101, i64 35, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif3324 -endif3324: - %t52 = load { ptr, i64, i64 }, ptr %a3 - %t53 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t52) - br i1 %t53, label %then3325, label %endif3327 -then3325: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2102, i64 1, i64 0 }, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.2103, i64 38, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } %t65) - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_drop(ptr %a66) - br label %endif3327 -endif3327: - %t67 = load ptr, ptr %a1 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - %t71 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t67, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t71, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a4 - %t77 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t75, %S.ast.Type %t76) - %t78 = load { ptr, i64, i64 }, ptr %a5 - %t79 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.store(ptr %t74, { ptr, i64, i64 } %t77, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3328, label %ok3329 -panic3328: - call void @finch_panic(ptr @.str.2104, i64 1401, ptr @.str.2105) - unreachable -ok3329: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 10 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - store i64 %t86, ptr %a87 - %t88 = load i1, ptr %a7 - br label %logic.from3330 -logic.from3330: - br i1 %t88, label %logic.rhs3331, label %logic.end3332 -logic.rhs3331: - %t89 = load ptr, ptr %a1 - %t90 = load %S.ast.Type, ptr %a4 - %t91 = call i1 @finch.gen.owning(ptr %t89, %S.ast.Type %t90) - br label %logic.rend3333 -logic.rend3333: - br label %logic.end3332 -logic.end3332: - %t92 = phi i1 [ false, %logic.from3330 ], [ %t91, %logic.rend3333 ] - store i1 %t92, ptr %a93 - %t94 = load i1, ptr %a93 - br i1 %t94, label %then3334, label %endif3336 -then3334: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic3337, label %ok3338 -panic3337: - call void @finch_panic(ptr @.str.2106, i64 1404, ptr @.str.2107) - unreachable -ok3338: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 10 - %t98 = load i64, ptr %a87 - %t99 = load { ptr, i64, i64 }, ptr %t97 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range3339, label %inrange3340 -range3339: - call void @finch_panic_index(ptr @.str.2108, i64 1404, i64 %t98, i64 %t100) - unreachable -inrange3340: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.gen.Scope, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.gen.Scope, ptr %t103, i32 0, i32 3 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = insertvalue %S.gen.Cleanup zeroinitializer, i1 false, 0 - %t107 = load ptr, ptr %a1 - %t108 = icmp eq ptr %t107, null - br i1 %t108, label %panic3341, label %ok3342 -panic3341: - call void @finch_panic(ptr @.str.2109, i64 1404, ptr @.str.2110) - unreachable -ok3342: - %t109 = getelementptr inbounds %S.gen.Gen, ptr %t107, i32 0, i32 10 - %t110 = load i64, ptr %a87 - %t111 = load { ptr, i64, i64 }, ptr %t109 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range3343, label %inrange3344 -range3343: - call void @finch_panic_index(ptr @.str.2111, i64 1404, i64 %t110, i64 %t112) - unreachable -inrange3344: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.gen.Scope, ptr %t114, i64 %t110 - %t116 = getelementptr inbounds %S.gen.Scope, ptr %t115, i32 0, i32 0 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i32 0, i32 1 - %t118 = load i64, ptr %t117 - %t119 = insertvalue %S.gen.Cleanup %t106, i64 %t118, 1 - %t120 = load i64, ptr %t105 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t121, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %t104 - %t123 = getelementptr inbounds %S.gen.Cleanup, ptr %t122, i64 %t120 - store %S.gen.Cleanup %t119, ptr %t123 - store i64 %t121, ptr %t105 - br label %endif3336 -endif3336: - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic3345, label %ok3346 -panic3345: - call void @finch_panic(ptr @.str.2112, i64 1406, ptr @.str.2113) - unreachable -ok3346: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 10 - %t127 = load i64, ptr %a87 - %t128 = load { ptr, i64, i64 }, ptr %t126 - %t129 = extractvalue { ptr, i64, i64 } %t128, 1 - %t130 = icmp uge i64 %t127, %t129 - br i1 %t130, label %range3347, label %inrange3348 -range3347: - call void @finch_panic_index(ptr @.str.2114, i64 1406, i64 %t127, i64 %t129) - unreachable -inrange3348: - %t131 = extractvalue { ptr, i64, i64 } %t128, 0 - %t132 = getelementptr inbounds %S.gen.Scope, ptr %t131, i64 %t127 - %t133 = getelementptr inbounds %S.gen.Scope, ptr %t132, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } %t138, 0 - %t140 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - %t144 = insertvalue %S.gen.Var %t139, %S.ast.Type %t143, 1 - %t145 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t145, ptr %a146 - call void @finch_str_copy(ptr %a147, ptr %a146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - %t149 = insertvalue %S.gen.Var %t144, { ptr, i64, i64 } %t148, 2 - %t150 = load i1, ptr %a6 - %t151 = insertvalue %S.gen.Var %t149, i1 %t150, 3 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic3349, label %ok3350 -panic3349: - call void @finch_panic(ptr @.str.2115, i64 1406, ptr @.str.2116) - unreachable -ok3350: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 25 - %t155 = load i64, ptr %t154 - %t156 = insertvalue %S.gen.Var %t151, i64 %t155, 4 - %t157 = load i1, ptr %a93 - %t158 = insertvalue %S.gen.Var %t156, i1 %t157, 5 - %t159 = load ptr, ptr %a1 - %t160 = icmp eq ptr %t159, null - br i1 %t160, label %panic3351, label %ok3352 -panic3351: - call void @finch_panic(ptr @.str.2117, i64 1406, ptr @.str.2118) - unreachable -ok3352: - %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 1 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t163 = load i64, ptr %t162 - %t164 = load { ptr, i64, i64 }, ptr %t161 - %t165 = extractvalue { ptr, i64, i64 } %t164, 1 - %t166 = icmp uge i64 %t163, %t165 - br i1 %t166, label %range3353, label %inrange3354 -range3353: - call void @finch_panic_index(ptr @.str.2119, i64 1406, i64 %t163, i64 %t165) - unreachable -inrange3354: - %t167 = extractvalue { ptr, i64, i64 } %t164, 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i64 %t163 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_copy(ptr %a171, ptr %a170) - %t172 = load { ptr, i64, i64 }, ptr %a171 - %t173 = insertvalue %S.gen.Var %t158, { ptr, i64, i64 } %t172, 7 - %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t175 = load i64, ptr %t174 - %t176 = insertvalue %S.gen.Var %t173, i64 %t175, 8 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t178 = load i64, ptr %t177 - %t179 = insertvalue %S.gen.Var %t176, i64 %t178, 9 - %t180 = load i64, ptr %t134 - %t181 = add i64 %t180, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t182 = load ptr, ptr %t133 - %t183 = getelementptr inbounds %S.gen.Var, ptr %t182, i64 %t180 - store %S.gen.Var %t179, ptr %t183 - store i64 %t181, ptr %t134 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3355, label %ok3356 -panic3355: - call void @finch_panic(ptr @.str.2120, i64 1407, ptr @.str.2121) - unreachable -ok3356: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 25 - %t187 = load i64, ptr %t186 - %t188 = add i64 %t187, 1 - store i64 %t188, ptr %t186 - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a3 - %t192 = load %S.ast.Type, ptr %a4 - %t193 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.dbgVariable(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t191, %S.ast.Type %t192, { ptr, i64, i64 } %t193) - %t194 = load ptr, ptr %a1 - %t195 = icmp eq ptr %t194, null - br i1 %t195, label %panic3357, label %ok3358 -panic3357: - call void @finch_panic(ptr @.str.2122, i64 1409, ptr @.str.2123) - unreachable -ok3358: - %t196 = getelementptr inbounds %S.gen.Gen, ptr %t194, i32 0, i32 28 - %t197 = load i1, ptr %t196 - br label %logic.from3359 -logic.from3359: - br i1 %t197, label %logic.rhs3360, label %logic.end3361 -logic.rhs3360: - %t198 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2124, i64 3, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp eq i32 %t201, 0 - br label %logic.rend3362 -logic.rend3362: - br label %logic.end3361 -logic.end3361: - %t203 = phi i1 [ false, %logic.from3359 ], [ %t202, %logic.rend3362 ] - br label %logic.from3363 -logic.from3363: - br i1 %t203, label %logic.rhs3364, label %logic.end3365 -logic.rhs3364: - %t204 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t204, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.2126, i64 1, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_starts(ptr %a205, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - %t210 = xor i1 %t209, true - br label %logic.rend3366 -logic.rend3366: - br label %logic.end3365 -logic.end3365: - %t211 = phi i1 [ false, %logic.from3363 ], [ %t210, %logic.rend3366 ] - br i1 %t211, label %then3367, label %endif3369 -then3367: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic3370, label %ok3371 -panic3370: - call void @finch_panic(ptr @.str.2127, i64 1410, ptr @.str.2128) - unreachable -ok3371: - %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 0 - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3372, label %ok3373 -panic3372: - call void @finch_panic(ptr @.str.2129, i64 1410, ptr @.str.2130) - unreachable -ok3373: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 13 - %t218 = getelementptr inbounds %S.gen.FnSig, ptr %t217, i32 0, i32 16 - %t219 = load i64, ptr %t218 - %t220 = load { ptr, i64, i64 }, ptr %t214 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range3374, label %inrange3375 -range3374: - call void @finch_panic_index(ptr @.str.2131, i64 1410, i64 %t219, i64 %t221) - unreachable -inrange3375: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Program, ptr %t223, i64 %t219 - %t225 = getelementptr inbounds %S.ast.Program, ptr %t224, i32 0, i32 8 - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic3376, label %ok3377 -panic3376: - call void @finch_panic(ptr @.str.2132, i64 1410, ptr @.str.2133) - unreachable -ok3377: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 13 - %t229 = getelementptr inbounds %S.gen.FnSig, ptr %t228, i32 0, i32 17 - %t230 = load i64, ptr %t229 - %t231 = load { ptr, i64, i64 }, ptr %t225 - %t232 = extractvalue { ptr, i64, i64 } %t231, 1 - %t233 = icmp uge i64 %t230, %t232 - br i1 %t233, label %range3378, label %inrange3379 -range3378: - call void @finch_panic_index(ptr @.str.2134, i64 1410, i64 %t230, i64 %t232) - unreachable -inrange3379: - %t234 = extractvalue { ptr, i64, i64 } %t231, 0 - %t235 = getelementptr inbounds %S.ast.Node, ptr %t234, i64 %t230 - %t236 = load %S.ast.Node, ptr %t235 - store %S.ast.Node %t236, ptr %a237 - call void @finch.copy.S_ast_Node(ptr %a238, ptr %a237) - %t239 = load %S.ast.Node, ptr %a238 - store %S.ast.Node %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = icmp eq ptr %t241, null - br i1 %t242, label %panic3380, label %ok3381 -panic3380: - call void @finch_panic(ptr @.str.2135, i64 1411, ptr @.str.2136) - unreachable -ok3381: - %t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 29 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2137, i64 3, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.2138, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = load %S.ast.Type, ptr %a4 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.2139, i64 1, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic3382, label %ok3383 -panic3382: - call void @finch_panic(ptr @.str.2140, i64 1411, ptr @.str.2141) - unreachable -ok3383: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t272 = load i64, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %t270 - %t274 = extractvalue { ptr, i64, i64 } %t273, 1 - %t275 = icmp uge i64 %t272, %t274 - br i1 %t275, label %range3384, label %inrange3385 -range3384: - call void @finch_panic_index(ptr @.str.2142, i64 1411, i64 %t272, i64 %t274) - unreachable -inrange3385: - %t276 = extractvalue { ptr, i64, i64 } %t273, 0 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i64 %t272 - %t278 = load { ptr, i64, i64 }, ptr %t277 - store { ptr, i64, i64 } %t267, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t267, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.2143, i64 1, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t290 = load i64, ptr %t289 - call void @finch_str_from_int(ptr %a291, i64 %t290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a294 - store { ptr, i64, i64 } %t292, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t288, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t292, ptr %a297 - call void @finch_str_drop(ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a293 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.2144, i64 1, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t305 = load i64, ptr %t304 - call void @finch_str_from_int(ptr %a306, i64 %t305) - %t307 = load { ptr, i64, i64 }, ptr %a306 - store { ptr, i64, i64 } %t303, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t303, ptr %a311 - call void @finch_str_drop(ptr %a311) - store { ptr, i64, i64 } %t307, ptr %a312 - call void @finch_str_drop(ptr %a312) - %t313 = load { ptr, i64, i64 }, ptr %a308 - store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.2145, i64 1, i64 0 }, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t313, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic3386, label %ok3387 -panic3386: - call void @finch_panic(ptr @.str.2146, i64 1411, ptr @.str.2147) - unreachable -ok3387: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 1 - %t322 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 13 - %t323 = load i64, ptr %t322 - %t324 = load { ptr, i64, i64 }, ptr %t321 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range3388, label %inrange3389 -range3388: - call void @finch_panic_index(ptr @.str.2148, i64 1411, i64 %t323, i64 %t325) - unreachable -inrange3389: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t323 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t318, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t318, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t334, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.2149, i64 1, i64 0 }, ptr %a337 - call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) - store { ptr, i64, i64 } %t334, ptr %a338 - call void @finch_str_drop(ptr %a338) - %t339 = load { ptr, i64, i64 }, ptr %a335 - %t340 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 11 - %t341 = load i64, ptr %t340 - call void @finch_str_from_int(ptr %a342, i64 %t341) - %t343 = load { ptr, i64, i64 }, ptr %a342 - store { ptr, i64, i64 } %t339, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t339, ptr %a347 - call void @finch_str_drop(ptr %a347) - store { ptr, i64, i64 } %t343, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t349, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.2150, i64 1, i64 0 }, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t349, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a350 - %t355 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 14 - %t356 = load i64, ptr %t355 - call void @finch_str_from_int(ptr %a357, i64 %t356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t354, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - store { ptr, i64, i64 } %t354, ptr %a362 - call void @finch_str_drop(ptr %a362) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a359 - %t365 = load i64, ptr %t244 - %t366 = add i64 %t365, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t366, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t367 = load ptr, ptr %t243 - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t365 - store { ptr, i64, i64 } %t364, ptr %t368 - store i64 %t366, ptr %t244 - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t372 = load i64, ptr %t371 - %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t374 = load i64, ptr %t373 - %t375 = load %S.ast.Type, ptr %a4 - %t376 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t375) - store { ptr, i64, i64 } { ptr @.str.2151, i64 9, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t376, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.2152, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - %t387 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t386, ptr %a389 - store { ptr, i64, i64 } %t387, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t386, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t392, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2153, i64 4, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.noteRef(ptr %t369, %S.ast.Node %t370, i64 %t372, i64 %t374, { ptr, i64, i64 } %t397, { ptr, i64, i64 } { ptr @.str.2154, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - call void @finch.drop.S_ast_Node(ptr %a240) - br label %endif3369 -endif3369: - %t399 = load { ptr, i64, i64 }, ptr %a73 - ret { ptr, i64, i64 } %t399 -} - -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 %panic3390, label %ok3391 -panic3390: - call void @finch_panic(ptr @.str.2155, i64 1418, ptr @.str.2156) - unreachable -ok3391: - %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.drop.S_gen_Var(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_gen_Var(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond3403 -n.cond3403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body3404, label %n.end3405 -n.body3404: - %t7 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Var(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond3403 -n.end3405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Cleanup(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Scope(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_gen_Var(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_gen_Cleanup(ptr %t4) - ret void -} - -define internal void @finch.gen.popScope(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a24 = alloca %S.gen.Scope, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3392, label %ok3393 -panic3392: - call void @finch_panic(ptr @.str.2157, i64 1424, ptr @.str.2158) - unreachable -ok3393: - %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 %then3394, label %endif3396 -then3394: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic3397, label %ok3398 -panic3397: - call void @finch_panic(ptr @.str.2159, i64 1425, ptr @.str.2160) - unreachable -ok3398: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load i64, ptr %t11 - %t13 = sub i64 %t12, 1 - call void @finch.gen.runCleanups(ptr %t7, i64 %t13) - br label %endif3396 -endif3396: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3399, label %ok3400 -panic3399: - call void @finch_panic(ptr @.str.2161, i64 1427, ptr @.str.2162) - unreachable -ok3400: - %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 %panic3401, label %ok3402 -panic3401: - call void @finch_panic(ptr @.str.2163, i64 1427, ptr @.str.2164) - unreachable -ok3402: - %t20 = sub i64 %t18, 1 - %t21 = load ptr, ptr %t16 - %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 - %t23 = load %S.gen.Scope, ptr %t22 - store i64 %t20, ptr %t17 - store %S.gen.Scope %t23, ptr %a24 - call void @finch.drop.S_gen_Scope(ptr %a24) - ret void -} - -define internal void @finch.gen.runCleanups(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a15 = alloca i64, align 16 - %a37 = alloca %S.gen.Cleanup, align 16 - %a59 = alloca %S.gen.Var, align 16 - %a60 = alloca %S.gen.Var, align 16 - %a62 = alloca %S.gen.Var, align 16 - %a75 = alloca i1, align 16 - %a80 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3406, label %ok3407 -panic3406: - call void @finch_panic(ptr @.str.2165, i64 1432, ptr @.str.2166) - unreachable -ok3407: - %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 %range3408, label %inrange3409 -range3408: - call void @finch_panic_index(ptr @.str.2167, i64 1432, i64 %t6, i64 %t8) - unreachable -inrange3409: - %t10 = extractvalue { ptr, i64, i64 } %t7, 0 - %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 - %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i32 0, i32 3 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - store i64 %t14, ptr %a15 - br label %while.cond3410 -while.cond3410: - %t16 = load i64, ptr %a15 - %t17 = icmp sgt i64 %t16, 0 - br i1 %t17, label %while.body3411, label %while.end3412 -while.body3411: - %t18 = load i64, ptr %a15 - %t19 = sub i64 %t18, 1 - store i64 %t19, ptr %a15 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic3413, label %ok3414 -panic3413: - call void @finch_panic(ptr @.str.2168, i64 1435, ptr @.str.2169) - unreachable -ok3414: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 - %t23 = load i64, ptr %a2 - %t24 = load { ptr, i64, i64 }, ptr %t22 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range3415, label %inrange3416 -range3415: - call void @finch_panic_index(ptr @.str.2170, i64 1435, i64 %t23, i64 %t25) - unreachable -inrange3416: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.gen.Scope, ptr %t27, i64 %t23 - %t29 = getelementptr inbounds %S.gen.Scope, ptr %t28, i32 0, i32 3 - %t30 = load i64, ptr %a15 - %t31 = load { ptr, i64, i64 }, ptr %t29 - %t32 = extractvalue { ptr, i64, i64 } %t31, 1 - %t33 = icmp uge i64 %t30, %t32 - br i1 %t33, label %range3417, label %inrange3418 -range3417: - call void @finch_panic_index(ptr @.str.2171, i64 1435, i64 %t30, i64 %t32) - unreachable -inrange3418: - %t34 = extractvalue { ptr, i64, i64 } %t31, 0 - %t35 = getelementptr inbounds %S.gen.Cleanup, ptr %t34, i64 %t30 - %t36 = load %S.gen.Cleanup, ptr %t35 - store %S.gen.Cleanup %t36, ptr %a37 - %t38 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 0 - %t39 = load i1, ptr %t38 - %t40 = xor i1 %t39, true - br i1 %t40, label %then3419, label %endif3421 -then3419: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic3422, label %ok3423 -panic3422: - call void @finch_panic(ptr @.str.2172, i64 1437, ptr @.str.2173) - unreachable -ok3423: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 10 - %t44 = load i64, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %t43 - %t46 = extractvalue { ptr, i64, i64 } %t45, 1 - %t47 = icmp uge i64 %t44, %t46 - br i1 %t47, label %range3424, label %inrange3425 -range3424: - call void @finch_panic_index(ptr @.str.2174, i64 1437, i64 %t44, i64 %t46) - unreachable -inrange3425: - %t48 = extractvalue { ptr, i64, i64 } %t45, 0 - %t49 = getelementptr inbounds %S.gen.Scope, ptr %t48, i64 %t44 - %t50 = getelementptr inbounds %S.gen.Scope, ptr %t49, i32 0, i32 0 - %t51 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = load { ptr, i64, i64 }, ptr %t50 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 %t52, %t54 - br i1 %t55, label %range3426, label %inrange3427 -range3426: - call void @finch_panic_index(ptr @.str.2175, i64 1437, i64 %t52, i64 %t54) - unreachable -inrange3427: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds %S.gen.Var, ptr %t56, i64 %t52 - %t58 = load %S.gen.Var, ptr %t57 - store %S.gen.Var %t58, ptr %a59 - call void @finch.copy.S_gen_Var(ptr %a60, ptr %a59) - %t61 = load %S.gen.Var, ptr %a60 - store %S.gen.Var %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 6 - %t64 = load i1, ptr %t63 - %t65 = xor i1 %t64, true - br i1 %t65, label %then3428, label %endif3430 -then3428: - %t66 = load ptr, ptr %a1 - %t67 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 2 - %t68 = load { ptr, i64, i64 }, ptr %t67 - %t69 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 1 - %t70 = load %S.ast.Type, ptr %t69 - call void @finch.gen.dropAt(ptr %t66, { ptr, i64, i64 } %t68, %S.ast.Type %t70) - br label %endif3430 -endif3430: - call void @finch.drop.S_gen_Var(ptr %a62) - br label %while.cond3410 -endif3421: - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3431, label %ok3432 -panic3431: - call void @finch_panic(ptr @.str.2176, i64 1443, ptr @.str.2177) - unreachable -ok3432: - %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 44 - %t74 = load i1, ptr %t73 - store i1 %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic3433, label %ok3434 -panic3433: - call void @finch_panic(ptr @.str.2178, i64 1444, ptr @.str.2179) - unreachable -ok3434: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 45 - %t79 = load i64, ptr %t78 - store i64 %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3435, label %ok3436 -panic3435: - call void @finch_panic(ptr @.str.2180, i64 1445, ptr @.str.2181) - unreachable -ok3436: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 44 - store i1 true, ptr %t83 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic3437, label %ok3438 -panic3437: - call void @finch_panic(ptr @.str.2182, i64 1446, ptr @.str.2183) - unreachable -ok3438: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 10 - %t87 = load i64, ptr %a2 - %t88 = load { ptr, i64, i64 }, ptr %t86 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range3439, label %inrange3440 -range3439: - call void @finch_panic_index(ptr @.str.2184, i64 1446, i64 %t87, i64 %t89) - unreachable -inrange3440: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.gen.Scope, ptr %t91, i64 %t87 - %t93 = getelementptr inbounds %S.gen.Scope, ptr %t92, i32 0, i32 2 - %t94 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t95 = load i64, ptr %t94 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range3441, label %inrange3442 -range3441: - call void @finch_panic_index(ptr @.str.2185, i64 1446, i64 %t95, i64 %t97) - unreachable -inrange3442: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds i64, ptr %t99, i64 %t95 - %t101 = load i64, ptr %t100 - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3443, label %ok3444 -panic3443: - call void @finch_panic(ptr @.str.2186, i64 1446, ptr @.str.2187) - unreachable -ok3444: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 45 - store i64 %t101, ptr %t104 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic3445, label %ok3446 -panic3445: - call void @finch_panic(ptr @.str.2188, i64 1447, ptr @.str.2189) - unreachable -ok3446: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 46 - %t108 = load i64, ptr %t107 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %t107 - %t110 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t110) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic3447, label %ok3448 -panic3447: - call void @finch_panic(ptr @.str.2190, i64 1449, ptr @.str.2191) - unreachable -ok3448: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 10 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range3449, label %inrange3450 -range3449: - call void @finch_panic_index(ptr @.str.2192, i64 1449, i64 %t115, i64 %t117) - unreachable -inrange3450: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.Scope, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.Scope, ptr %t120, i32 0, i32 1 - %t122 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = load { ptr, i64, i64 }, ptr %t121 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 %t123, %t125 - br i1 %t126, label %range3451, label %inrange3452 -range3451: - call void @finch_panic_index(ptr @.str.2193, i64 1449, i64 %t123, i64 %t125) - unreachable -inrange3452: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds %S.ast.Node, ptr %t127, i64 %t123 - %t129 = load %S.ast.Node, ptr %t128 - call void @finch.gen.stmt(ptr %t111, %S.ast.Node %t129) - %t130 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t130) - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic3453, label %ok3454 -panic3453: - call void @finch_panic(ptr @.str.2194, i64 1451, ptr @.str.2195) - unreachable -ok3454: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 46 - %t134 = load i64, ptr %t133 - %t135 = sub i64 %t134, 1 - store i64 %t135, ptr %t133 - %t136 = load i1, ptr %a75 - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic3455, label %ok3456 -panic3455: - call void @finch_panic(ptr @.str.2196, i64 1452, ptr @.str.2197) - unreachable -ok3456: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 44 - store i1 %t136, ptr %t139 - %t140 = load i64, ptr %a80 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic3457, label %ok3458 -panic3457: - call void @finch_panic(ptr @.str.2198, i64 1453, ptr @.str.2199) - unreachable -ok3458: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 45 - store i64 %t140, ptr %t143 - br label %while.cond3410 -while.end3412: - 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 %panic3459, label %ok3460 -panic3459: - call void @finch_panic(ptr @.str.2200, i64 1459, ptr @.str.2201) - unreachable -ok3460: - %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.cond3461 -while.cond3461: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body3462, label %while.end3463 -while.body3462: - %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.runCleanups(ptr %t14, i64 %t15) - br label %while.cond3461 -while.end3463: - 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 - call void @finch.gen.popScope(ptr %t2) - 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.2202, 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 %then3464, label %endif3466 -then3464: - %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 -endif3466: - %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.2203, 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.from3467 -logic.from3467: - br i1 %t18, label %logic.end3469, label %logic.rhs3468 -logic.rhs3468: - %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.2204, 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.rend3470 -logic.rend3470: - br label %logic.end3469 -logic.end3469: - %t25 = phi i1 [ true, %logic.from3467 ], [ %t24, %logic.rend3470 ] - br i1 %t25, label %then3471, label %endif3473 -then3471: - %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 %range3474, label %inrange3475 -range3474: - call void @finch_panic_index(ptr @.str.2205, i64 1477, i64 0, i64 %t28) - unreachable -inrange3475: - %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 -endif3473: - ret { ptr, i64, i64 } { ptr @.str.2206, 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 - %a37 = 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 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca i64, align 16 - %a72 = alloca i64, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a143 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t5 = call ptr @finch_alloc(i64 %t4) - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 0 - store { ptr, i64, i64 } { ptr @.str.2207, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 - store { ptr, i64, i64 } { ptr @.str.2208, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 - store { ptr, i64, i64 } { ptr @.str.2209, i64 6, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3 - store { ptr, i64, i64 } { ptr @.str.2210, i64 6, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 - store { ptr, i64, i64 } { ptr @.str.2211, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 - store { ptr, i64, i64 } { ptr @.str.2212, i64 6, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6 - store { ptr, i64, i64 } { ptr @.str.2213, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 - store { ptr, i64, i64 } { ptr @.str.2214, 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.2215, 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.from3476 -logic.from3476: - br i1 %t23, label %logic.rhs3477, label %logic.end3478 -logic.rhs3477: - %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 %range3479, label %inrange3480 -range3479: - call void @finch_panic_index(ptr @.str.2216, i64 1484, i64 0, i64 %t26) - unreachable -inrange3480: - %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 - store { ptr, i64, i64 } %t31, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %logic.rend3481 -logic.rend3481: - br label %logic.end3478 -logic.end3478: - %t38 = phi i1 [ false, %logic.from3476 ], [ %t36, %logic.rend3481 ] - br i1 %t38, label %then3482, label %endif3484 -then3482: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3484: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2217, i64 6, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br label %logic.from3485 -logic.from3485: - br i1 %t44, label %logic.rhs3486, label %logic.end3487 -logic.rhs3486: - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t45 - %t50 = load ptr, ptr %a17 - store i64 0, ptr %a51 - br label %find.cond3488 -find.cond3488: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body3489, label %find.end3492 -find.body3489: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit3490, label %find.next3491 -find.hit3490: - store i64 %t52, ptr %a48 - br label %find.end3492 -find.next3491: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond3488 -find.end3492: - %t61 = load i64, ptr %a48 - %t62 = icmp sge i64 %t61, 0 - br label %logic.from3493 -logic.from3493: - br i1 %t62, label %logic.end3495, label %logic.rhs3494 -logic.rhs3494: - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic3496, label %ok3497 -panic3496: - call void @finch_panic(ptr @.str.2218, i64 1490, ptr @.str.2219) - unreachable -ok3497: - %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 24 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 - %t67 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store i64 -1, ptr %a69 - %t70 = load i64, ptr %t66 - %t71 = load ptr, ptr %t65 - store i64 0, ptr %a72 - br label %find.cond3498 -find.cond3498: - %t73 = load i64, ptr %a72 - %t74 = icmp slt i64 %t73, %t70 - br i1 %t74, label %find.body3499, label %find.end3502 -find.body3499: - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 %t73 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } %t68, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br i1 %t80, label %find.hit3500, label %find.next3501 -find.hit3500: - store i64 %t73, ptr %a69 - br label %find.end3502 -find.next3501: - %t81 = add i64 %t73, 1 - store i64 %t81, ptr %a72 - br label %find.cond3498 -find.end3502: - %t82 = load i64, ptr %a69 - %t83 = icmp sge i64 %t82, 0 - br label %logic.rend3503 -logic.rend3503: - br label %logic.end3495 -logic.end3495: - %t84 = phi i1 [ true, %logic.from3493 ], [ %t83, %logic.rend3503 ] - br label %logic.rend3504 -logic.rend3504: - br label %logic.end3487 -logic.end3487: - %t85 = phi i1 [ false, %logic.from3485 ], [ %t84, %logic.rend3504 ] - br label %logic.from3505 -logic.from3505: - br i1 %t85, label %logic.rhs3506, label %logic.end3507 -logic.rhs3506: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range3508, label %inrange3509 -range3508: - call void @finch_panic_index(ptr @.str.2220, i64 1490, i64 0, i64 %t88) - unreachable -inrange3509: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0 - %t92 = load %S.ast.Node, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t92) - %t94 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } %t94, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - store { ptr, i64, i64 } %t93, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %logic.rend3510 -logic.rend3510: - br label %logic.end3507 -logic.end3507: - %t100 = phi i1 [ false, %logic.from3505 ], [ %t98, %logic.rend3510 ] - br i1 %t100, label %then3511, label %endif3513 -then3511: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3513: - %t101 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2221, i64 4, i64 0 }, ptr %a104 - %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) - %t106 = icmp ne i32 %t105, 0 - br label %logic.from3514 -logic.from3514: - br i1 %t106, label %logic.rhs3515, label %logic.end3516 -logic.rhs3515: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2222, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend3517 -logic.rend3517: - br label %logic.end3516 -logic.end3516: - %t113 = phi i1 [ false, %logic.from3514 ], [ %t112, %logic.rend3517 ] - br label %logic.from3518 -logic.from3518: - br i1 %t113, label %logic.rhs3519, label %logic.end3520 -logic.rhs3519: - %t114 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp eq i64 %t116, 1 - br label %logic.rend3521 -logic.rend3521: - br label %logic.end3520 -logic.end3520: - %t118 = phi i1 [ false, %logic.from3518 ], [ %t117, %logic.rend3521 ] - br label %logic.from3522 -logic.from3522: - br i1 %t118, label %logic.rhs3523, label %logic.end3524 -logic.rhs3523: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 0, %t121 - br i1 %t122, label %range3525, label %inrange3526 -range3525: - call void @finch_panic_index(ptr @.str.2223, i64 1493, i64 0, i64 %t121) - unreachable -inrange3526: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds %S.ast.Node, ptr %t123, i64 0 - %t125 = load %S.ast.Node, ptr %t124 - %t126 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t125) - %t127 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } %t127, ptr %a129 - %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %logic.rend3527 -logic.rend3527: - br label %logic.end3524 -logic.end3524: - %t133 = phi i1 [ false, %logic.from3522 ], [ %t131, %logic.rend3527 ] - br i1 %t133, label %then3528, label %endif3530 -then3528: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3530: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - store i64 0, ptr %a135 - br label %each.cond3531 -each.cond3531: - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = load i64, ptr %a135 - %t139 = icmp slt i64 %t138, %t137 - br i1 %t139, label %each.body3532, label %each.end3534 -each.body3532: - %t140 = load ptr, ptr %t134 - %t141 = getelementptr inbounds %S.ast.Node, ptr %t140, i64 %t138 - %t142 = load %S.ast.Node, ptr %t141 - store %S.ast.Node %t142, ptr %a143 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - %t146 = load %S.ast.Node, ptr %a143 - %t147 = call i1 @finch.gen.mutates(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Node %t146) - br i1 %t147, label %then3535, label %endif3537 -then3535: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3537: - br label %each.step3533 -each.step3533: - %t148 = load i64, ptr %a135 - %t149 = add i64 %t148, 1 - store i64 %t149, ptr %a135 - br label %each.cond3531 -each.end3534: - call void @finch.drop.arr_str(ptr %a17) - 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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a64 = alloca %S.ast.Node, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca i64, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca i64, align 16 - %a224 = alloca %S.ast.Node, align 16 - %a225 = alloca %S.ast.Node, align 16 - %a227 = alloca %S.ast.Node, align 16 - %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 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca %S.gen.SumDef, align 16 - %a278 = alloca i64, align 16 - %a280 = alloca i64, align 16 - %a288 = alloca %S.ast.Node, align 16 - %a293 = alloca i64, align 16 - %a296 = alloca i64, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca %S.gen.SumDef, align 16 - %a374 = alloca %S.gen.SumDef, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = 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 - %a427 = alloca %S.gen.EnumDef, align 16 - %a428 = alloca i64, align 16 - %a430 = alloca i64, align 16 - %a438 = alloca %S.ast.Node, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca i64, align 16 - %a454 = alloca i64, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca i64, align 16 - %a498 = alloca i64, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca %S.gen.EnumDef, align 16 - %a563 = alloca %S.gen.EnumDef, align 16 - %a579 = alloca i64, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca i64, align 16 - %a629 = alloca i64, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca i64, align 16 - %a683 = alloca %S.ast.Node, align 16 - %a684 = alloca %S.ast.Node, align 16 - %a686 = alloca %S.ast.Node, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = 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 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca i1, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca i64, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = 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 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a929 = alloca i64, align 16 - %a932 = alloca i64, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a969 = 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 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1009 = 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 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca %S.gen.FnSig, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1072 = 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 - %a1085 = 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 - %a1090 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1096 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca { ptr, i64, i64 }, align 16 - %a1102 = 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 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca %S.ast.Type, align 16 - %a1126 = alloca i64, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1158 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1223 = alloca %S.gen.FnSig, align 16 - %a1224 = alloca %S.gen.FnSig, align 16 - %a1234 = alloca i1, align 16 - %a1241 = alloca i64, align 16 - %a1307 = alloca %S.ast.Node, align 16 - %a1308 = alloca %S.ast.Node, align 16 - %a1310 = alloca %S.ast.Node, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1363 = alloca i64, align 16 - %a1376 = alloca %S.gen.Template, align 16 - %a1377 = alloca %S.gen.Template, align 16 - %a1379 = alloca %S.gen.Template, align 16 - %a1407 = alloca %S.ast.Node, align 16 - %a1408 = alloca %S.ast.Node, align 16 - %a1410 = alloca %S.ast.Node, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca i64, align 16 - %a1494 = alloca %S.ast.Node, align 16 - %a1495 = alloca %S.ast.Node, align 16 - %a1497 = alloca %S.ast.Node, align 16 - %a1509 = alloca %S.ast.Node, align 16 - %a1510 = alloca %S.ast.Node, align 16 - %a1512 = alloca %S.ast.Node, align 16 - %a1525 = alloca i64, align 16 - %a1545 = alloca %S.ast.Type, align 16 - %a1546 = alloca %S.ast.Type, align 16 - %a1548 = 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 %panic3538, label %ok3539 -panic3538: - call void @finch_panic(ptr @.str.2224, i64 1507, ptr @.str.2225) - unreachable -ok3539: - %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.cond3540 -for.cond3540: - %t8 = load i64, ptr %a7 - %t9 = icmp slt i64 %t8, %t6 - br i1 %t9, label %for.body3541, label %for.end3543 -for.body3541: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic3544, label %ok3545 -panic3544: - call void @finch_panic(ptr @.str.2226, i64 1508, ptr @.str.2227) - unreachable -ok3545: - %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 %range3546, label %inrange3547 -range3546: - call void @finch_panic_index(ptr @.str.2228, i64 1508, i64 %t13, i64 %t15) - unreachable -inrange3547: - %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 %panic3548, label %ok3549 -panic3548: - call void @finch_panic(ptr @.str.2229, i64 1508, ptr @.str.2230) - unreachable -ok3549: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 14 - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_copy(ptr %a25, ptr %a24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - %t27 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t26, ptr %t23 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3550, label %ok3551 -panic3550: - call void @finch_panic(ptr @.str.2231, i64 1509, ptr @.str.2232) - unreachable -ok3551: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 0 - %t32 = load i64, ptr %a7 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3552, label %inrange3553 -range3552: - call void @finch_panic_index(ptr @.str.2233, i64 1509, i64 %t32, i64 %t34) - unreachable -inrange3553: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Program, ptr %t36, i64 %t32 - %t38 = getelementptr inbounds %S.ast.Program, ptr %t37, i32 0, i32 6 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 - %t40 = load i64, ptr %t39 - store i64 0, ptr %a41 - br label %for.cond3554 -for.cond3554: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body3555, label %for.end3557 -for.body3555: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic3558, label %ok3559 -panic3558: - call void @finch_panic(ptr @.str.2234, i64 1510, ptr @.str.2235) - unreachable -ok3559: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 0 - %t47 = load i64, ptr %a7 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range3560, label %inrange3561 -range3560: - call void @finch_panic_index(ptr @.str.2236, i64 1510, i64 %t47, i64 %t49) - unreachable -inrange3561: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i64 %t47 - %t53 = getelementptr inbounds %S.ast.Program, ptr %t52, i32 0, i32 6 - %t54 = load i64, ptr %a41 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range3562, label %inrange3563 -range3562: - call void @finch_panic_index(ptr @.str.2237, i64 1510, i64 %t54, i64 %t56) - unreachable -inrange3563: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - store %S.ast.Node %t60, ptr %a61 - call void @finch.copy.S_ast_Node(ptr %a62, ptr %a61) - %t63 = load %S.ast.Node, ptr %a62 - store %S.ast.Node %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic3564, label %ok3565 -panic3564: - call void @finch_panic(ptr @.str.2238, i64 1511, ptr @.str.2239) - unreachable -ok3565: - %t68 = getelementptr inbounds %S.gen.Gen, ptr %t66, i32 0, i32 14 - %t69 = load { ptr, i64, i64 }, ptr %t68 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = call i64 @finch.gen.findStruct(ptr %t65, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t71) - %t73 = icmp sge i64 %t72, 0 - br label %logic.from3566 -logic.from3566: - br i1 %t73, label %logic.end3568, label %logic.rhs3567 -logic.rhs3567: - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic3569, label %ok3570 -panic3569: - call void @finch_panic(ptr @.str.2240, i64 1511, ptr @.str.2241) - unreachable -ok3570: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 14 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = call i64 @finch.gen.findTemplate(ptr %t74, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t80, { ptr, i64, i64 } { ptr @.str.2242, i64 0, i64 0 }, i1 true) - %t82 = icmp sge i64 %t81, 0 - br label %logic.rend3571 -logic.rend3571: - br label %logic.end3568 -logic.end3568: - %t83 = phi i1 [ true, %logic.from3566 ], [ %t82, %logic.rend3571 ] - br i1 %t83, label %then3572, label %endif3574 -then3572: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a64 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.2243, i64 12, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2244, i64 18, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif3574 -endif3574: - %t98 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = icmp sgt i64 %t100, 0 - br i1 %t101, label %then3575, label %endif3577 -then3575: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3578, label %ok3579 -panic3578: - call void @finch_panic(ptr @.str.2245, i64 1516, ptr @.str.2246) - unreachable -ok3579: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 17 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic3580, label %ok3581 -panic3580: - call void @finch_panic(ptr @.str.2247, i64 1516, ptr @.str.2248) - unreachable -ok3581: - %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 14 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a110 - call void @finch_str_copy(ptr %a111, ptr %a110) - %t112 = load { ptr, i64, i64 }, ptr %a111 - %t113 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t112, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_copy(ptr %a117, ptr %a116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - %t119 = insertvalue %S.gen.Template %t113, { ptr, i64, i64 } %t118, 1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch.copy.arr_str(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = insertvalue %S.gen.Template %t119, { ptr, i64, i64 } %t124, 3 - %t126 = load i64, ptr %a7 - %t127 = insertvalue %S.gen.Template %t125, i64 %t126, 4 - %t128 = load i64, ptr %a41 - %t129 = insertvalue %S.gen.Template %t127, i64 %t128, 5 - %t130 = insertvalue %S.gen.Template %t129, i1 true, 6 - %t131 = load i64, ptr %t105 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t104 - %t134 = getelementptr inbounds %S.gen.Template, ptr %t133, i64 %t131 - store %S.gen.Template %t130, ptr %t134 - store i64 %t132, ptr %t105 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -endif3577: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic3582, label %ok3583 -panic3582: - call void @finch_panic(ptr @.str.2249, i64 1519, ptr @.str.2250) - unreachable -ok3583: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 16 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic3584, label %ok3585 -panic3584: - call void @finch_panic(ptr @.str.2251, i64 1519, ptr @.str.2252) - unreachable -ok3585: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 14 - %t142 = load { ptr, i64, i64 }, ptr %t141 - store { ptr, i64, i64 } %t142, ptr %a143 - call void @finch_str_copy(ptr %a144, ptr %a143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_copy(ptr %a150, ptr %a149) - %t151 = load { ptr, i64, i64 }, ptr %a150 - %t152 = insertvalue %S.gen.StructDef %t146, { ptr, i64, i64 } %t151, 1 - %t153 = load i64, ptr %a7 - %t154 = insertvalue %S.gen.StructDef %t152, i64 %t153, 13 - %t155 = load i64, ptr %a41 - %t156 = insertvalue %S.gen.StructDef %t154, i64 %t155, 14 - %t157 = load i64, ptr %t138 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t137, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t137 - %t160 = getelementptr inbounds %S.gen.StructDef, ptr %t159, i64 %t157 - store %S.gen.StructDef %t156, ptr %t160 - store i64 %t158, ptr %t138 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -for.step3556: - %t161 = load i64, ptr %a41 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a41 - br label %for.cond3554 -for.end3557: - br label %for.step3542 -for.step3542: - %t163 = load i64, ptr %a7 - %t164 = add i64 %t163, 1 - store i64 %t164, ptr %a7 - br label %for.cond3540 -for.end3543: - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3586, label %ok3587 -panic3586: - call void @finch_panic(ptr @.str.2253, i64 1522, ptr @.str.2254) - unreachable -ok3587: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load i64, ptr %t168 - store i64 0, ptr %a170 - br label %for.cond3588 -for.cond3588: - %t171 = load i64, ptr %a170 - %t172 = icmp slt i64 %t171, %t169 - br i1 %t172, label %for.body3589, label %for.end3591 -for.body3589: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic3592, label %ok3593 -panic3592: - call void @finch_panic(ptr @.str.2255, i64 1523, ptr @.str.2256) - unreachable -ok3593: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 0 - %t176 = load i64, ptr %a170 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range3594, label %inrange3595 -range3594: - call void @finch_panic_index(ptr @.str.2257, i64 1523, i64 %t176, i64 %t178) - unreachable -inrange3595: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.ast.Program, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.ast.Program, ptr %t181, i32 0, i32 0 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3596, label %ok3597 -panic3596: - call void @finch_panic(ptr @.str.2258, i64 1523, ptr @.str.2259) - unreachable -ok3597: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 14 - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_copy(ptr %a188, ptr %a187) - %t189 = load { ptr, i64, i64 }, ptr %a188 - %t190 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t189, ptr %t186 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - %t193 = icmp eq ptr %t192, null - br i1 %t193, label %panic3598, label %ok3599 -panic3598: - call void @finch_panic(ptr @.str.2260, i64 1524, ptr @.str.2261) - unreachable -ok3599: - %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 0 - %t195 = load i64, ptr %a170 - %t196 = load { ptr, i64, i64 }, ptr %t194 - %t197 = extractvalue { ptr, i64, i64 } %t196, 1 - %t198 = icmp uge i64 %t195, %t197 - br i1 %t198, label %range3600, label %inrange3601 -range3600: - call void @finch_panic_index(ptr @.str.2262, i64 1524, i64 %t195, i64 %t197) - unreachable -inrange3601: - %t199 = extractvalue { ptr, i64, i64 } %t196, 0 - %t200 = getelementptr inbounds %S.ast.Program, ptr %t199, i64 %t195 - %t201 = getelementptr inbounds %S.ast.Program, ptr %t200, i32 0, i32 7 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load i64, ptr %t202 - store i64 0, ptr %a204 - br label %for.cond3602 -for.cond3602: - %t205 = load i64, ptr %a204 - %t206 = icmp slt i64 %t205, %t203 - br i1 %t206, label %for.body3603, label %for.end3605 -for.body3603: - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic3606, label %ok3607 -panic3606: - call void @finch_panic(ptr @.str.2263, i64 1525, ptr @.str.2264) - unreachable -ok3607: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 0 - %t210 = load i64, ptr %a170 - %t211 = load { ptr, i64, i64 }, ptr %t209 - %t212 = extractvalue { ptr, i64, i64 } %t211, 1 - %t213 = icmp uge i64 %t210, %t212 - br i1 %t213, label %range3608, label %inrange3609 -range3608: - call void @finch_panic_index(ptr @.str.2265, i64 1525, i64 %t210, i64 %t212) - unreachable -inrange3609: - %t214 = extractvalue { ptr, i64, i64 } %t211, 0 - %t215 = getelementptr inbounds %S.ast.Program, ptr %t214, i64 %t210 - %t216 = getelementptr inbounds %S.ast.Program, ptr %t215, i32 0, i32 7 - %t217 = load i64, ptr %a204 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range3610, label %inrange3611 -range3610: - call void @finch_panic_index(ptr @.str.2266, i64 1525, i64 %t217, i64 %t219) - unreachable -inrange3611: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 - %t223 = load %S.ast.Node, ptr %t222 - store %S.ast.Node %t223, ptr %a224 - call void @finch.copy.S_ast_Node(ptr %a225, ptr %a224) - %t226 = load %S.ast.Node, ptr %a225 - store %S.ast.Node %t226, ptr %a227 - %t228 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 6 - %t229 = load i1, ptr %t228 - br i1 %t229, label %then3612, label %endif3614 -then3612: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic3615, label %ok3616 -panic3615: - call void @finch_panic(ptr @.str.2267, i64 1527, ptr @.str.2268) - unreachable -ok3616: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 14 - %t234 = load { ptr, i64, i64 }, ptr %t233 - %t235 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t236 = load { ptr, i64, i64 }, ptr %t235 - %t237 = call i64 @finch.gen.findEnum(ptr %t230, { ptr, i64, i64 } %t234, { ptr, i64, i64 } %t236) - %t238 = icmp sge i64 %t237, 0 - br label %logic.from3617 -logic.from3617: - br i1 %t238, label %logic.end3619, label %logic.rhs3618 -logic.rhs3618: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic3620, label %ok3621 -panic3620: - call void @finch_panic(ptr @.str.2269, i64 1527, ptr @.str.2270) - unreachable -ok3621: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 14 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %t244 - %t246 = call i64 @finch.gen.findSum(ptr %t239, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t245) - %t247 = icmp sge i64 %t246, 0 - br label %logic.rend3622 -logic.rend3622: - br label %logic.end3619 -logic.end3619: - %t248 = phi i1 [ true, %logic.from3617 ], [ %t247, %logic.rend3622 ] - br i1 %t248, label %then3623, label %endif3625 -then3623: - %t249 = load ptr, ptr %a1 - %t250 = load %S.ast.Node, ptr %a227 - %t251 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t252 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } { ptr @.str.2271, 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 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.2272, i64 18, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.fail(ptr %t249, %S.ast.Node %t250, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a262 - call void @finch_str_drop(ptr %a262) - br label %endif3625 -endif3625: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic3626, label %ok3627 -panic3626: - call void @finch_panic(ptr @.str.2273, i64 1530, ptr @.str.2274) - unreachable -ok3627: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 14 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_copy(ptr %a268, ptr %a267) - %t269 = load { ptr, i64, i64 }, ptr %a268 - %t270 = insertvalue %S.gen.SumDef zeroinitializer, { ptr, i64, i64 } %t269, 0 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - call void @finch_str_copy(ptr %a274, ptr %a273) - %t275 = load { ptr, i64, i64 }, ptr %a274 - %t276 = insertvalue %S.gen.SumDef %t270, { ptr, i64, i64 } %t275, 1 - store %S.gen.SumDef %t276, ptr %a277 - store i64 1, ptr %a278 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a280 - br label %each.cond3628 -each.cond3628: - %t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %t279, i32 0, i32 1 - %t282 = load i64, ptr %t281 - %t283 = load i64, ptr %a280 - %t284 = icmp slt i64 %t283, %t282 - br i1 %t284, label %each.body3629, label %each.end3631 -each.body3629: - %t285 = load ptr, ptr %t279 - %t286 = getelementptr inbounds %S.ast.Node, ptr %t285, i64 %t283 - %t287 = load %S.ast.Node, ptr %t286 - store %S.ast.Node %t287, ptr %a288 - %t289 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store i64 -1, ptr %a293 - %t294 = load i64, ptr %t290 - %t295 = load ptr, ptr %t289 - store i64 0, ptr %a296 - br label %find.cond3632 -find.cond3632: - %t297 = load i64, ptr %a296 - %t298 = icmp slt i64 %t297, %t294 - br i1 %t298, label %find.body3633, label %find.end3636 -find.body3633: - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t295, i64 %t297 - %t300 = load { ptr, i64, i64 }, ptr %t299 - store { ptr, i64, i64 } %t300, ptr %a301 - store { ptr, i64, i64 } %t292, ptr %a302 - %t303 = call i32 @finch_str_eq(ptr %a301, ptr %a302) - %t304 = icmp ne i32 %t303, 0 - br i1 %t304, label %find.hit3634, label %find.next3635 -find.hit3634: - store i64 %t297, ptr %a293 - br label %find.end3636 -find.next3635: - %t305 = add i64 %t297, 1 - store i64 %t305, ptr %a296 - br label %find.cond3632 -find.end3636: - %t306 = load i64, ptr %a293 - %t307 = icmp sge i64 %t306, 0 - br i1 %t307, label %then3637, label %endif3639 -then3637: - %t308 = load ptr, ptr %a1 - %t309 = load %S.ast.Node, ptr %a288 - %t310 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } { ptr @.str.2275, i64 9, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2276, i64 17, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t320, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - store { ptr, i64, i64 } %t327, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.2277, i64 6, i64 0 }, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t327, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.fail(ptr %t308, %S.ast.Node %t309, { ptr, i64, i64 } %t332) - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - br label %endif3639 -endif3639: - %t334 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t335 = getelementptr inbounds { ptr, i64, i64 }, ptr %t334, i32 0, i32 1 - %t336 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t337 = load { ptr, i64, i64 }, ptr %t336 - store { ptr, i64, i64 } %t337, ptr %a338 - call void @finch_str_copy(ptr %a339, ptr %a338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - %t341 = load i64, ptr %t335 - %t342 = add i64 %t341, 1 - call void @finch_arr_reserve(ptr %t334, i64 %t342, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t343 = load ptr, ptr %t334 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %t343, i64 %t341 - store { ptr, i64, i64 } %t340, ptr %t344 - store i64 %t342, ptr %t335 - %t345 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 3 - %t346 = getelementptr inbounds { ptr, i64, i64 }, ptr %t345, i32 0, i32 1 - %t347 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t348 = getelementptr inbounds { ptr, i64, i64 }, ptr %t347, i32 0, i32 1 - %t349 = load i64, ptr %t348 - %t350 = load i64, ptr %t346 - %t351 = add i64 %t350, 1 - call void @finch_arr_reserve(ptr %t345, i64 %t351, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t352 = load ptr, ptr %t345 - %t353 = getelementptr inbounds i64, ptr %t352, i64 %t350 - store i64 %t349, ptr %t353 - store i64 %t351, ptr %t346 - %t354 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 4 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i32 0, i32 1 - %t356 = load i64, ptr %a278 - %t357 = load i64, ptr %t355 - %t358 = add i64 %t357, 1 - call void @finch_arr_reserve(ptr %t354, i64 %t358, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t359 = load ptr, ptr %t354 - %t360 = getelementptr inbounds i64, ptr %t359, i64 %t357 - store i64 %t356, ptr %t360 - store i64 %t358, ptr %t355 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = load i64, ptr %a278 - %t365 = add i64 %t364, %t363 - store i64 %t365, ptr %a278 - br label %each.step3630 -each.step3630: - %t366 = load i64, ptr %a280 - %t367 = add i64 %t366, 1 - store i64 %t367, ptr %a280 - br label %each.cond3628 -each.end3631: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic3640, label %ok3641 -panic3640: - call void @finch_panic(ptr @.str.2278, i64 1541, ptr @.str.2279) - unreachable -ok3641: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 22 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load %S.gen.SumDef, ptr %a277 - store %S.gen.SumDef %t372, ptr %a373 - call void @finch.copy.S_gen_SumDef(ptr %a374, ptr %a373) - %t375 = load %S.gen.SumDef, ptr %a374 - %t376 = load i64, ptr %t371 - %t377 = add i64 %t376, 1 - call void @finch_arr_reserve(ptr %t370, i64 %t377, i64 ptrtoint (ptr getelementptr (%S.gen.SumDef, ptr null, i32 1) to i64)) - %t378 = load ptr, ptr %t370 - %t379 = getelementptr inbounds %S.gen.SumDef, ptr %t378, i64 %t376 - store %S.gen.SumDef %t375, ptr %t379 - store i64 %t377, ptr %t371 - call void @finch.drop.S_gen_SumDef(ptr %a277) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -endif3614: - %t380 = load ptr, ptr %a1 - %t381 = load ptr, ptr %a1 - %t382 = icmp eq ptr %t381, null - br i1 %t382, label %panic3642, label %ok3643 -panic3642: - call void @finch_panic(ptr @.str.2280, i64 1544, ptr @.str.2281) - unreachable -ok3643: - %t383 = getelementptr inbounds %S.gen.Gen, ptr %t381, i32 0, i32 14 - %t384 = load { ptr, i64, i64 }, ptr %t383 - %t385 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t386 = load { ptr, i64, i64 }, ptr %t385 - %t387 = call i64 @finch.gen.findEnum(ptr %t380, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t386) - %t388 = icmp sge i64 %t387, 0 - br label %logic.from3644 -logic.from3644: - br i1 %t388, label %logic.end3646, label %logic.rhs3645 -logic.rhs3645: - %t389 = load ptr, ptr %a1 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic3647, label %ok3648 -panic3647: - call void @finch_panic(ptr @.str.2282, i64 1544, ptr @.str.2283) - unreachable -ok3648: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 14 - %t393 = load { ptr, i64, i64 }, ptr %t392 - %t394 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t395 = load { ptr, i64, i64 }, ptr %t394 - %t396 = call i64 @finch.gen.findStruct(ptr %t389, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t395) - %t397 = icmp sge i64 %t396, 0 - br label %logic.rend3649 -logic.rend3649: - br label %logic.end3646 -logic.end3646: - %t398 = phi i1 [ true, %logic.from3644 ], [ %t397, %logic.rend3649 ] - br i1 %t398, label %then3650, label %endif3652 -then3650: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a227 - %t401 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t402 = load { ptr, i64, i64 }, ptr %t401 - store { ptr, i64, i64 } { ptr @.str.2284, i64 1, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - store { ptr, i64, i64 } %t406, ptr %a408 - store { ptr, i64, i64 } { ptr @.str.2285, i64 18, i64 0 }, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t406, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.fail(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t411) - store { ptr, i64, i64 } %t411, ptr %a412 - call void @finch_str_drop(ptr %a412) - br label %endif3652 -endif3652: - %t413 = load ptr, ptr %a1 - %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic3653, label %ok3654 -panic3653: - call void @finch_panic(ptr @.str.2286, i64 1547, ptr @.str.2287) - unreachable -ok3654: - %t415 = getelementptr inbounds %S.gen.Gen, ptr %t413, i32 0, i32 14 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - call void @finch_str_copy(ptr %a418, ptr %a417) - %t419 = load { ptr, i64, i64 }, ptr %a418 - %t420 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_copy(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = insertvalue %S.gen.EnumDef %t420, { ptr, i64, i64 } %t425, 1 - store %S.gen.EnumDef %t426, ptr %a427 - store i64 0, ptr %a428 - %t429 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a430 - br label %each.cond3655 -each.cond3655: - %t431 = getelementptr inbounds { ptr, i64, i64 }, ptr %t429, i32 0, i32 1 - %t432 = load i64, ptr %t431 - %t433 = load i64, ptr %a430 - %t434 = icmp slt i64 %t433, %t432 - br i1 %t434, label %each.body3656, label %each.end3658 -each.body3656: - %t435 = load ptr, ptr %t429 - %t436 = getelementptr inbounds %S.ast.Node, ptr %t435, i64 %t433 - %t437 = load %S.ast.Node, ptr %t436 - store %S.ast.Node %t437, ptr %a438 - %t439 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t440 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t441 = load i64, ptr %t440 - %t442 = icmp sgt i64 %t441, 0 - br i1 %t442, label %then3659, label %endif3661 -then3659: - %t443 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t444 = load { ptr, i64, i64 }, ptr %t443 - store { ptr, i64, i64 } %t444, ptr %a445 - %t446 = call i64 @finch_str_to_int(ptr %a445, ptr @.str.2288, i64 1551) - store i64 %t446, ptr %a428 - br label %endif3661 -endif3661: - %t447 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i32 0, i32 1 - %t449 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t450 = load { ptr, i64, i64 }, ptr %t449 - store i64 -1, ptr %a451 - %t452 = load i64, ptr %t448 - %t453 = load ptr, ptr %t447 - store i64 0, ptr %a454 - br label %find.cond3662 -find.cond3662: - %t455 = load i64, ptr %a454 - %t456 = icmp slt i64 %t455, %t452 - br i1 %t456, label %find.body3663, label %find.end3666 -find.body3663: - %t457 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t455 - %t458 = load { ptr, i64, i64 }, ptr %t457 - store { ptr, i64, i64 } %t458, ptr %a459 - store { ptr, i64, i64 } %t450, ptr %a460 - %t461 = call i32 @finch_str_eq(ptr %a459, ptr %a460) - %t462 = icmp ne i32 %t461, 0 - br i1 %t462, label %find.hit3664, label %find.next3665 -find.hit3664: - store i64 %t455, ptr %a451 - br label %find.end3666 -find.next3665: - %t463 = add i64 %t455, 1 - store i64 %t463, ptr %a454 - br label %find.cond3662 -find.end3666: - %t464 = load i64, ptr %a451 - %t465 = icmp sge i64 %t464, 0 - br i1 %t465, label %then3667, label %endif3669 -then3667: - %t466 = load ptr, ptr %a1 - %t467 = load %S.ast.Node, ptr %a438 - %t468 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t469 = load { ptr, i64, i64 }, ptr %t468 - store { ptr, i64, i64 } { ptr @.str.2289, i64 9, i64 0 }, ptr %a471 - store { ptr, i64, i64 } %t469, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a470 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.2290, i64 17, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - %t479 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t480 = load { ptr, i64, i64 }, ptr %t479 - store { ptr, i64, i64 } %t478, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t478, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.2291, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - call void @finch.gen.fail(ptr %t466, %S.ast.Node %t467, { ptr, i64, i64 } %t490) - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - br label %endif3669 -endif3669: - %t492 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t492, i32 0, i32 1 - %t494 = load i64, ptr %a428 - store i64 -1, ptr %a495 - %t496 = load i64, ptr %t493 - %t497 = load ptr, ptr %t492 - store i64 0, ptr %a498 - br label %find.cond3670 -find.cond3670: - %t499 = load i64, ptr %a498 - %t500 = icmp slt i64 %t499, %t496 - br i1 %t500, label %find.body3671, label %find.end3674 -find.body3671: - %t501 = getelementptr inbounds i64, ptr %t497, i64 %t499 - %t502 = load i64, ptr %t501 - %t503 = icmp eq i64 %t502, %t494 - br i1 %t503, label %find.hit3672, label %find.next3673 -find.hit3672: - store i64 %t499, ptr %a495 - br label %find.end3674 -find.next3673: - %t504 = add i64 %t499, 1 - store i64 %t504, ptr %a498 - br label %find.cond3670 -find.end3674: - %t505 = load i64, ptr %a495 - %t506 = icmp sge i64 %t505, 0 - br i1 %t506, label %then3675, label %endif3677 -then3675: - %t507 = load ptr, ptr %a1 - %t508 = load %S.ast.Node, ptr %a438 - %t509 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t510 = load { ptr, i64, i64 }, ptr %t509 - store { ptr, i64, i64 } { ptr @.str.2292, i64 16, i64 0 }, ptr %a512 - store { ptr, i64, i64 } %t510, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a511 - store { ptr, i64, i64 } %t514, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.2293, i64 17, i64 0 }, ptr %a517 - call void @finch_str_concat(ptr %a515, ptr %a516, ptr %a517) - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_drop(ptr %a518) - %t519 = load { ptr, i64, i64 }, ptr %a515 - %t520 = load i64, ptr %a428 - call void @finch_str_from_int(ptr %a521, i64 %t520) - %t522 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a524 - store { ptr, i64, i64 } %t522, ptr %a525 - call void @finch_str_concat(ptr %a523, ptr %a524, ptr %a525) - store { ptr, i64, i64 } %t519, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.2294, i64 20, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.fail(ptr %t507, %S.ast.Node %t508, { ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a534 - call void @finch_str_drop(ptr %a534) - br label %endif3677 -endif3677: - %t535 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 - %t537 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - call void @finch_str_copy(ptr %a540, ptr %a539) - %t541 = load { ptr, i64, i64 }, ptr %a540 - %t542 = load i64, ptr %t536 - %t543 = add i64 %t542, 1 - call void @finch_arr_reserve(ptr %t535, i64 %t543, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t544 = load ptr, ptr %t535 - %t545 = getelementptr inbounds { ptr, i64, i64 }, ptr %t544, i64 %t542 - store { ptr, i64, i64 } %t541, ptr %t545 - store i64 %t543, ptr %t536 - %t546 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t547 = getelementptr inbounds { ptr, i64, i64 }, ptr %t546, i32 0, i32 1 - %t548 = load i64, ptr %a428 - %t549 = load i64, ptr %t547 - %t550 = add i64 %t549, 1 - call void @finch_arr_reserve(ptr %t546, i64 %t550, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t551 = load ptr, ptr %t546 - %t552 = getelementptr inbounds i64, ptr %t551, i64 %t549 - store i64 %t548, ptr %t552 - store i64 %t550, ptr %t547 - %t553 = load i64, ptr %a428 - %t554 = add i64 %t553, 1 - store i64 %t554, ptr %a428 - br label %each.step3657 -each.step3657: - %t555 = load i64, ptr %a430 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a430 - br label %each.cond3655 -each.end3658: - %t557 = load ptr, ptr %a1 - %t558 = icmp eq ptr %t557, null - br i1 %t558, label %panic3678, label %ok3679 -panic3678: - call void @finch_panic(ptr @.str.2295, i64 1563, ptr @.str.2296) - unreachable -ok3679: - %t559 = getelementptr inbounds %S.gen.Gen, ptr %t557, i32 0, i32 21 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load %S.gen.EnumDef, ptr %a427 - store %S.gen.EnumDef %t561, ptr %a562 - call void @finch.copy.S_gen_EnumDef(ptr %a563, ptr %a562) - %t564 = load %S.gen.EnumDef, ptr %a563 - %t565 = load i64, ptr %t560 - %t566 = add i64 %t565, 1 - call void @finch_arr_reserve(ptr %t559, i64 %t566, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) - %t567 = load ptr, ptr %t559 - %t568 = getelementptr inbounds %S.gen.EnumDef, ptr %t567, i64 %t565 - store %S.gen.EnumDef %t564, ptr %t568 - store i64 %t566, ptr %t560 - call void @finch.drop.S_gen_EnumDef(ptr %a427) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -for.step3604: - %t569 = load i64, ptr %a204 - %t570 = add i64 %t569, 1 - store i64 %t570, ptr %a204 - br label %for.cond3602 -for.end3605: - br label %for.step3590 -for.step3590: - %t571 = load i64, ptr %a170 - %t572 = add i64 %t571, 1 - store i64 %t572, ptr %a170 - br label %for.cond3588 -for.end3591: - %t573 = load ptr, ptr %a1 - %t574 = icmp eq ptr %t573, null - br i1 %t574, label %panic3680, label %ok3681 -panic3680: - call void @finch_panic(ptr @.str.2297, i64 1566, ptr @.str.2298) - unreachable -ok3681: - %t575 = getelementptr inbounds %S.gen.Gen, ptr %t573, i32 0, i32 26 - %t576 = getelementptr inbounds %S.cimport.CImports, ptr %t575, i32 0, i32 4 - %t577 = getelementptr inbounds { ptr, i64, i64 }, ptr %t576, i32 0, i32 1 - %t578 = load i64, ptr %t577 - store i64 0, ptr %a579 - br label %for.cond3682 -for.cond3682: - %t580 = load i64, ptr %a579 - %t581 = icmp slt i64 %t580, %t578 - br i1 %t581, label %for.body3683, label %for.end3685 -for.body3683: - %t582 = load ptr, ptr %a1 - %t583 = icmp eq ptr %t582, null - br i1 %t583, label %panic3686, label %ok3687 -panic3686: - call void @finch_panic(ptr @.str.2299, i64 1567, ptr @.str.2300) - unreachable -ok3687: - %t584 = getelementptr inbounds %S.gen.Gen, ptr %t582, i32 0, i32 16 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i32 0, i32 1 - %t586 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.2301, i64 1, i64 0 }, 0 - %t587 = load ptr, ptr %a1 - %t588 = icmp eq ptr %t587, null - br i1 %t588, label %panic3688, label %ok3689 -panic3688: - call void @finch_panic(ptr @.str.2302, i64 1567, ptr @.str.2303) - unreachable -ok3689: - %t589 = getelementptr inbounds %S.gen.Gen, ptr %t587, i32 0, i32 26 - %t590 = getelementptr inbounds %S.cimport.CImports, ptr %t589, i32 0, i32 4 - %t591 = load i64, ptr %a579 - %t592 = load { ptr, i64, i64 }, ptr %t590 - %t593 = extractvalue { ptr, i64, i64 } %t592, 1 - %t594 = icmp uge i64 %t591, %t593 - br i1 %t594, label %range3690, label %inrange3691 -range3690: - call void @finch_panic_index(ptr @.str.2304, i64 1567, i64 %t591, i64 %t593) - unreachable -inrange3691: - %t595 = extractvalue { ptr, i64, i64 } %t592, 0 - %t596 = getelementptr inbounds { ptr, i64, i64 }, ptr %t595, i64 %t591 - %t597 = load { ptr, i64, i64 }, ptr %t596 - store { ptr, i64, i64 } %t597, ptr %a598 - call void @finch_str_copy(ptr %a599, ptr %a598) - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = insertvalue %S.gen.StructDef %t586, { ptr, i64, i64 } %t600, 1 - %t602 = insertvalue %S.gen.StructDef %t601, i1 true, 2 - %t603 = insertvalue %S.gen.StructDef %t602, i64 -1, 13 - %t604 = load i64, ptr %a579 - %t605 = insertvalue %S.gen.StructDef %t603, i64 %t604, 14 - %t606 = load i64, ptr %t585 - %t607 = add i64 %t606, 1 - call void @finch_arr_reserve(ptr %t584, i64 %t607, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t608 = load ptr, ptr %t584 - %t609 = getelementptr inbounds %S.gen.StructDef, ptr %t608, i64 %t606 - store %S.gen.StructDef %t605, ptr %t609 - store i64 %t607, ptr %t585 - br label %for.step3684 -for.step3684: - %t610 = load i64, ptr %a579 - %t611 = add i64 %t610, 1 - store i64 %t611, ptr %a579 - br label %for.cond3682 -for.end3685: - %t612 = load ptr, ptr %a1 - %t613 = icmp eq ptr %t612, null - br i1 %t613, label %panic3692, label %ok3693 -panic3692: - call void @finch_panic(ptr @.str.2305, i64 1569, ptr @.str.2306) - unreachable -ok3693: - %t614 = getelementptr inbounds %S.gen.Gen, ptr %t612, i32 0, i32 16 - %t615 = getelementptr inbounds { ptr, i64, i64 }, ptr %t614, i32 0, i32 1 - %t616 = load i64, ptr %t615 - store i64 0, ptr %a617 - br label %for.cond3694 -for.cond3694: - %t618 = load i64, ptr %a617 - %t619 = icmp slt i64 %t618, %t616 - br i1 %t619, label %for.body3695, label %for.end3697 -for.body3695: - %t620 = load ptr, ptr %a1 - %t621 = load i64, ptr %a617 - call void @finch.gen.resolveStruct(ptr %t620, i64 %t621) - br label %for.step3696 -for.step3696: - %t622 = load i64, ptr %a617 - %t623 = add i64 %t622, 1 - store i64 %t623, ptr %a617 - br label %for.cond3694 -for.end3697: - %t624 = load ptr, ptr %a1 - %t625 = icmp eq ptr %t624, null - br i1 %t625, label %panic3698, label %ok3699 -panic3698: - call void @finch_panic(ptr @.str.2307, i64 1572, ptr @.str.2308) - unreachable -ok3699: - %t626 = getelementptr inbounds %S.gen.Gen, ptr %t624, i32 0, i32 0 - %t627 = getelementptr inbounds { ptr, i64, i64 }, ptr %t626, i32 0, i32 1 - %t628 = load i64, ptr %t627 - store i64 0, ptr %a629 - br label %for.cond3700 -for.cond3700: - %t630 = load i64, ptr %a629 - %t631 = icmp slt i64 %t630, %t628 - br i1 %t631, label %for.body3701, label %for.end3703 -for.body3701: - %t632 = load ptr, ptr %a1 - %t633 = icmp eq ptr %t632, null - br i1 %t633, label %panic3704, label %ok3705 -panic3704: - call void @finch_panic(ptr @.str.2309, i64 1573, ptr @.str.2310) - unreachable -ok3705: - %t634 = getelementptr inbounds %S.gen.Gen, ptr %t632, i32 0, i32 0 - %t635 = load i64, ptr %a629 - %t636 = load { ptr, i64, i64 }, ptr %t634 - %t637 = extractvalue { ptr, i64, i64 } %t636, 1 - %t638 = icmp uge i64 %t635, %t637 - br i1 %t638, label %range3706, label %inrange3707 -range3706: - call void @finch_panic_index(ptr @.str.2311, i64 1573, i64 %t635, i64 %t637) - unreachable -inrange3707: - %t639 = extractvalue { ptr, i64, i64 } %t636, 0 - %t640 = getelementptr inbounds %S.ast.Program, ptr %t639, i64 %t635 - %t641 = getelementptr inbounds %S.ast.Program, ptr %t640, i32 0, i32 0 - %t642 = load { ptr, i64, i64 }, ptr %t641 - %t643 = load ptr, ptr %a1 - %t644 = icmp eq ptr %t643, null - br i1 %t644, label %panic3708, label %ok3709 -panic3708: - call void @finch_panic(ptr @.str.2312, i64 1573, ptr @.str.2313) - unreachable -ok3709: - %t645 = getelementptr inbounds %S.gen.Gen, ptr %t643, i32 0, i32 14 - store { ptr, i64, i64 } %t642, ptr %a646 - call void @finch_str_copy(ptr %a647, ptr %a646) - %t648 = load { ptr, i64, i64 }, ptr %a647 - %t649 = load { ptr, i64, i64 }, ptr %t645 - store { ptr, i64, i64 } %t648, ptr %t645 - store { ptr, i64, i64 } %t649, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load ptr, ptr %a1 - %t652 = icmp eq ptr %t651, null - br i1 %t652, label %panic3710, label %ok3711 -panic3710: - call void @finch_panic(ptr @.str.2314, i64 1574, ptr @.str.2315) - unreachable -ok3711: - %t653 = getelementptr inbounds %S.gen.Gen, ptr %t651, i32 0, i32 0 - %t654 = load i64, ptr %a629 - %t655 = load { ptr, i64, i64 }, ptr %t653 - %t656 = extractvalue { ptr, i64, i64 } %t655, 1 - %t657 = icmp uge i64 %t654, %t656 - br i1 %t657, label %range3712, label %inrange3713 -range3712: - call void @finch_panic_index(ptr @.str.2316, i64 1574, i64 %t654, i64 %t656) - unreachable -inrange3713: - %t658 = extractvalue { ptr, i64, i64 } %t655, 0 - %t659 = getelementptr inbounds %S.ast.Program, ptr %t658, i64 %t654 - %t660 = getelementptr inbounds %S.ast.Program, ptr %t659, i32 0, i32 8 - %t661 = getelementptr inbounds { ptr, i64, i64 }, ptr %t660, i32 0, i32 1 - %t662 = load i64, ptr %t661 - store i64 0, ptr %a663 - br label %for.cond3714 -for.cond3714: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t662 - br i1 %t665, label %for.body3715, label %for.end3717 -for.body3715: - %t666 = load ptr, ptr %a1 - %t667 = icmp eq ptr %t666, null - br i1 %t667, label %panic3718, label %ok3719 -panic3718: - call void @finch_panic(ptr @.str.2317, i64 1575, ptr @.str.2318) - unreachable -ok3719: - %t668 = getelementptr inbounds %S.gen.Gen, ptr %t666, i32 0, i32 0 - %t669 = load i64, ptr %a629 - %t670 = load { ptr, i64, i64 }, ptr %t668 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range3720, label %inrange3721 -range3720: - call void @finch_panic_index(ptr @.str.2319, i64 1575, i64 %t669, i64 %t671) - unreachable -inrange3721: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.ast.Program, ptr %t673, i64 %t669 - %t675 = getelementptr inbounds %S.ast.Program, ptr %t674, i32 0, i32 8 - %t676 = load i64, ptr %a663 - %t677 = load { ptr, i64, i64 }, ptr %t675 - %t678 = extractvalue { ptr, i64, i64 } %t677, 1 - %t679 = icmp uge i64 %t676, %t678 - br i1 %t679, label %range3722, label %inrange3723 -range3722: - call void @finch_panic_index(ptr @.str.2320, i64 1575, i64 %t676, i64 %t678) - unreachable -inrange3723: - %t680 = extractvalue { ptr, i64, i64 } %t677, 0 - %t681 = getelementptr inbounds %S.ast.Node, ptr %t680, i64 %t676 - %t682 = load %S.ast.Node, ptr %t681 - store %S.ast.Node %t682, ptr %a683 - call void @finch.copy.S_ast_Node(ptr %a684, ptr %a683) - %t685 = load %S.ast.Node, ptr %a684 - store %S.ast.Node %t685, ptr %a686 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t688 = getelementptr inbounds { ptr, i64, i64 }, ptr %t687, i32 0, i32 1 - %t689 = load i64, ptr %t688 - %t690 = icmp sgt i64 %t689, 0 - br i1 %t690, label %then3724, label %endif3726 -then3724: - %t691 = load ptr, ptr %a1 - %t692 = load ptr, ptr %a1 - %t693 = icmp eq ptr %t692, null - br i1 %t693, label %panic3727, label %ok3728 -panic3727: - call void @finch_panic(ptr @.str.2321, i64 1578, ptr @.str.2322) - unreachable -ok3728: - %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 - %t695 = load { ptr, i64, i64 }, ptr %t694 - %t696 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t697 = load { ptr, i64, i64 }, ptr %t696 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t699 = load { ptr, i64, i64 }, ptr %t698 - %t700 = call i64 @finch.gen.findTemplate(ptr %t691, { ptr, i64, i64 } %t695, { ptr, i64, i64 } %t697, { ptr, i64, i64 } %t699, i1 false) - %t701 = icmp sge i64 %t700, 0 - br i1 %t701, label %then3729, label %endif3731 -then3729: - %t702 = load ptr, ptr %a1 - %t703 = load %S.ast.Node, ptr %a686 - %t704 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t705 = load { ptr, i64, i64 }, ptr %t704 - store { ptr, i64, i64 } { ptr @.str.2323, i64 10, i64 0 }, 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 - store { ptr, i64, i64 } %t709, ptr %a711 - store { ptr, i64, i64 } { ptr @.str.2324, i64 18, i64 0 }, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t709, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - call void @finch.gen.fail(ptr %t702, %S.ast.Node %t703, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a715 - call void @finch_str_drop(ptr %a715) - br label %endif3731 -endif3731: - %t716 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t717 = getelementptr inbounds { ptr, i64, i64 }, ptr %t716, i32 0, i32 1 - %t718 = load i64, ptr %t717 - %t719 = icmp sgt i64 %t718, 0 - br label %logic.from3732 -logic.from3732: - br i1 %t719, label %logic.rhs3733, label %logic.end3734 -logic.rhs3733: - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = icmp eq ptr %t721, null - br i1 %t722, label %panic3735, label %ok3736 -panic3735: - call void @finch_panic(ptr @.str.2325, i64 1581, ptr @.str.2326) - unreachable -ok3736: - %t723 = getelementptr inbounds %S.gen.Gen, ptr %t721, i32 0, i32 14 - %t724 = load { ptr, i64, i64 }, ptr %t723 - %t725 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t726 = load { ptr, i64, i64 }, ptr %t725 - %t727 = call i64 @finch.gen.findTemplate(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t726, { ptr, i64, i64 } { ptr @.str.2327, i64 0, i64 0 }, i1 true) - %t728 = icmp slt i64 %t727, 0 - br label %logic.rend3737 -logic.rend3737: - br label %logic.end3734 -logic.end3734: - %t729 = phi i1 [ false, %logic.from3732 ], [ %t728, %logic.rend3737 ] - br i1 %t729, label %then3738, label %endif3740 -then3738: - %t730 = load ptr, ptr %a1 - %t731 = load %S.ast.Node, ptr %a686 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t733 = load { ptr, i64, i64 }, ptr %t732 - store { ptr, i64, i64 } { ptr @.str.2328, i64 34, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.2329, i64 53, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - call void @finch.gen.fail(ptr %t730, %S.ast.Node %t731, { ptr, i64, i64 } %t742) - store { ptr, i64, i64 } %t742, ptr %a743 - call void @finch_str_drop(ptr %a743) - br label %endif3740 -endif3740: - %t744 = load ptr, ptr %a1 - %t745 = icmp eq ptr %t744, null - br i1 %t745, label %panic3741, label %ok3742 -panic3741: - call void @finch_panic(ptr @.str.2330, i64 1584, ptr @.str.2331) - unreachable -ok3742: - %t746 = getelementptr inbounds %S.gen.Gen, ptr %t744, i32 0, i32 17 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i32 0, i32 1 - %t748 = load ptr, ptr %a1 - %t749 = icmp eq ptr %t748, null - br i1 %t749, label %panic3743, label %ok3744 -panic3743: - call void @finch_panic(ptr @.str.2332, i64 1584, ptr @.str.2333) - unreachable -ok3744: - %t750 = getelementptr inbounds %S.gen.Gen, ptr %t748, i32 0, i32 14 - %t751 = load { ptr, i64, i64 }, ptr %t750 - store { ptr, i64, i64 } %t751, ptr %a752 - call void @finch_str_copy(ptr %a753, ptr %a752) - %t754 = load { ptr, i64, i64 }, ptr %a753 - %t755 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t754, 0 - %t756 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t757 = load { ptr, i64, i64 }, ptr %t756 - store { ptr, i64, i64 } %t757, ptr %a758 - call void @finch_str_copy(ptr %a759, ptr %a758) - %t760 = load { ptr, i64, i64 }, ptr %a759 - %t761 = insertvalue %S.gen.Template %t755, { ptr, i64, i64 } %t760, 1 - %t762 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t763 = load { ptr, i64, i64 }, ptr %t762 - store { ptr, i64, i64 } %t763, ptr %a764 - call void @finch_str_copy(ptr %a765, ptr %a764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - %t767 = insertvalue %S.gen.Template %t761, { ptr, i64, i64 } %t766, 2 - %t768 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t769 = load { ptr, i64, i64 }, ptr %t768 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch.copy.arr_str(ptr %a771, ptr %a770) - %t772 = load { ptr, i64, i64 }, ptr %a771 - %t773 = insertvalue %S.gen.Template %t767, { ptr, i64, i64 } %t772, 3 - %t774 = load i64, ptr %a629 - %t775 = insertvalue %S.gen.Template %t773, i64 %t774, 4 - %t776 = load i64, ptr %a663 - %t777 = insertvalue %S.gen.Template %t775, i64 %t776, 5 - %t778 = load i64, ptr %t747 - %t779 = add i64 %t778, 1 - call void @finch_arr_reserve(ptr %t746, i64 %t779, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t780 = load ptr, ptr %t746 - %t781 = getelementptr inbounds %S.gen.Template, ptr %t780, i64 %t778 - store %S.gen.Template %t777, ptr %t781 - store i64 %t779, ptr %t747 - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -endif3726: - %t782 = load ptr, ptr %a1 - %t783 = icmp eq ptr %t782, null - br i1 %t783, label %panic3745, label %ok3746 -panic3745: - call void @finch_panic(ptr @.str.2334, i64 1587, ptr @.str.2335) - unreachable -ok3746: - %t784 = getelementptr inbounds %S.gen.Gen, ptr %t782, i32 0, i32 14 - %t785 = load { ptr, i64, i64 }, ptr %t784 - store { ptr, i64, i64 } %t785, ptr %a786 - call void @finch_str_copy(ptr %a787, ptr %a786) - %t788 = load { ptr, i64, i64 }, ptr %a787 - store { ptr, i64, i64 } %t788, ptr %a789 - store i1 false, ptr %a790 - %t791 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t792 = getelementptr inbounds { ptr, i64, i64 }, ptr %t791, i32 0, i32 1 - %t793 = load i64, ptr %t792 - %t794 = icmp sgt i64 %t793, 0 - br label %logic.from3747 -logic.from3747: - br i1 %t794, label %logic.rhs3748, label %logic.end3749 -logic.rhs3748: - %t795 = load ptr, ptr %a1 - %t796 = load ptr, ptr %a1 - %t797 = icmp eq ptr %t796, null - br i1 %t797, label %panic3750, label %ok3751 -panic3750: - call void @finch_panic(ptr @.str.2336, i64 1589, ptr @.str.2337) - unreachable -ok3751: - %t798 = getelementptr inbounds %S.gen.Gen, ptr %t796, i32 0, i32 14 - %t799 = load { ptr, i64, i64 }, ptr %t798 - %t800 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - %t802 = call i64 @finch.gen.findEnum(ptr %t795, { ptr, i64, i64 } %t799, { ptr, i64, i64 } %t801) - %t803 = icmp sge i64 %t802, 0 - br label %logic.rend3752 -logic.rend3752: - br label %logic.end3749 -logic.end3749: - %t804 = phi i1 [ false, %logic.from3747 ], [ %t803, %logic.rend3752 ] - br i1 %t804, label %then3753, label %else3754 -then3753: - store i1 true, ptr %a790 - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a789 - %t807 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t808 = load { ptr, i64, i64 }, ptr %t807 - %t809 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %t809 - %t811 = call i64 @finch.gen.findMethod(ptr %t805, { ptr, i64, i64 } %t806, { ptr, i64, i64 } %t808, { ptr, i64, i64 } %t810) - %t812 = icmp sge i64 %t811, 0 - br i1 %t812, label %then3756, label %endif3758 -then3756: - %t813 = load ptr, ptr %a1 - %t814 = load %S.ast.Node, ptr %a686 - %t815 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } { ptr @.str.2338, i64 11, i64 0 }, ptr %a818 - store { ptr, i64, i64 } %t816, ptr %a819 - call void @finch_str_concat(ptr %a817, ptr %a818, ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a817 - store { ptr, i64, i64 } %t820, ptr %a822 - store { ptr, i64, i64 } { ptr @.str.2339, i64 1, i64 0 }, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - store { ptr, i64, i64 } %t820, ptr %a824 - call void @finch_str_drop(ptr %a824) - %t825 = load { ptr, i64, i64 }, ptr %a821 - %t826 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t827 = load { ptr, i64, i64 }, ptr %t826 - store { ptr, i64, i64 } %t825, ptr %a829 - store { ptr, i64, i64 } %t827, ptr %a830 - call void @finch_str_concat(ptr %a828, ptr %a829, ptr %a830) - store { ptr, i64, i64 } %t825, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a828 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.2340, i64 17, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.fail(ptr %t813, %S.ast.Node %t814, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - br label %endif3758 -endif3758: - br label %endif3755 -else3754: - %t839 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t840 = getelementptr inbounds { ptr, i64, i64 }, ptr %t839, i32 0, i32 1 - %t841 = load i64, ptr %t840 - %t842 = icmp sgt i64 %t841, 0 - br i1 %t842, label %then3759, label %else3760 -then3759: - %t843 = load ptr, ptr %a1 - %t844 = load ptr, ptr %a1 - %t845 = icmp eq ptr %t844, null - br i1 %t845, label %panic3762, label %ok3763 -panic3762: - call void @finch_panic(ptr @.str.2341, i64 1595, ptr @.str.2342) - unreachable -ok3763: - %t846 = getelementptr inbounds %S.gen.Gen, ptr %t844, i32 0, i32 14 - %t847 = load { ptr, i64, i64 }, ptr %t846 - %t848 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t849 = load { ptr, i64, i64 }, ptr %t848 - %t850 = call i64 @finch.gen.findStruct(ptr %t843, { ptr, i64, i64 } %t847, { ptr, i64, i64 } %t849) - store i64 %t850, ptr %a851 - %t852 = load i64, ptr %a851 - %t853 = icmp slt i64 %t852, 0 - br label %logic.from3764 -logic.from3764: - br i1 %t853, label %logic.rhs3765, label %logic.end3766 -logic.rhs3765: - %t854 = load ptr, ptr %a1 - %t855 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t856 = load { ptr, i64, i64 }, ptr %t855 - %t857 = call i64 @finch.gen.findStruct(ptr %t854, { ptr, i64, i64 } { ptr @.str.2343, i64 1, i64 0 }, { ptr, i64, i64 } %t856) - %t858 = icmp sge i64 %t857, 0 - br label %logic.rend3767 -logic.rend3767: - br label %logic.end3766 -logic.end3766: - %t859 = phi i1 [ false, %logic.from3764 ], [ %t858, %logic.rend3767 ] - br i1 %t859, label %then3768, label %endif3770 -then3768: - %t860 = load ptr, ptr %a1 - %t861 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t862 = load { ptr, i64, i64 }, ptr %t861 - %t863 = call i64 @finch.gen.findStruct(ptr %t860, { ptr, i64, i64 } { ptr @.str.2344, i64 1, i64 0 }, { ptr, i64, i64 } %t862) - store i64 %t863, ptr %a851 - %t864 = load { ptr, i64, i64 }, ptr %a789 - store { ptr, i64, i64 } { ptr @.str.2345, i64 1, i64 0 }, ptr %a789 - store { ptr, i64, i64 } %t864, ptr %a865 - call void @finch_str_drop(ptr %a865) - br label %endif3770 -endif3770: - %t866 = load i64, ptr %a851 - %t867 = icmp slt i64 %t866, 0 - br i1 %t867, label %then3771, label %endif3773 -then3771: - %t868 = load ptr, ptr %a1 - %t869 = load %S.ast.Node, ptr %a686 - %t870 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t871 = load { ptr, i64, i64 }, ptr %t870 - store { ptr, i64, i64 } { ptr @.str.2346, i64 26, i64 0 }, ptr %a873 - store { ptr, i64, i64 } %t871, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a872 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.2347, i64 76, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.fail(ptr %t868, %S.ast.Node %t869, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - br label %endif3773 -endif3773: - %t882 = load ptr, ptr %a1 - %t883 = load { ptr, i64, i64 }, ptr %a789 - %t884 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t885 = load { ptr, i64, i64 }, ptr %t884 - %t886 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t887 = load { ptr, i64, i64 }, ptr %t886 - %t888 = call i64 @finch.gen.findMethod(ptr %t882, { ptr, i64, i64 } %t883, { ptr, i64, i64 } %t885, { ptr, i64, i64 } %t887) - %t889 = icmp sge i64 %t888, 0 - br i1 %t889, label %then3774, label %endif3776 -then3774: - %t890 = load ptr, ptr %a1 - %t891 = load %S.ast.Node, ptr %a686 - %t892 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t893 = load { ptr, i64, i64 }, ptr %t892 - store { ptr, i64, i64 } { ptr @.str.2348, i64 11, i64 0 }, 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.2349, i64 1, i64 0 }, ptr %a900 - call void @finch_str_concat(ptr %a898, ptr %a899, ptr %a900) - store { ptr, i64, i64 } %t897, ptr %a901 - call void @finch_str_drop(ptr %a901) - %t902 = load { ptr, i64, i64 }, ptr %a898 - %t903 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t902, ptr %a906 - store { ptr, i64, i64 } %t904, ptr %a907 - call void @finch_str_concat(ptr %a905, ptr %a906, ptr %a907) - store { ptr, i64, i64 } %t902, ptr %a908 - call void @finch_str_drop(ptr %a908) - %t909 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t909, ptr %a911 - store { ptr, i64, i64 } { ptr @.str.2350, i64 17, i64 0 }, ptr %a912 - call void @finch_str_concat(ptr %a910, ptr %a911, ptr %a912) - store { ptr, i64, i64 } %t909, ptr %a913 - call void @finch_str_drop(ptr %a913) - %t914 = load { ptr, i64, i64 }, ptr %a910 - call void @finch.gen.fail(ptr %t890, %S.ast.Node %t891, { ptr, i64, i64 } %t914) - store { ptr, i64, i64 } %t914, ptr %a915 - call void @finch_str_drop(ptr %a915) - br label %endif3776 -endif3776: - %t916 = load ptr, ptr %a1 - %t917 = icmp eq ptr %t916, null - br i1 %t917, label %panic3777, label %ok3778 -panic3777: - call void @finch_panic(ptr @.str.2351, i64 1606, ptr @.str.2352) - unreachable -ok3778: - %t918 = getelementptr inbounds %S.gen.Gen, ptr %t916, i32 0, i32 16 - %t919 = load i64, ptr %a851 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3779, label %inrange3780 -range3779: - call void @finch_panic_index(ptr @.str.2353, i64 1606, i64 %t919, i64 %t921) - unreachable -inrange3780: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.gen.StructDef, ptr %t923, i64 %t919 - %t925 = getelementptr inbounds %S.gen.StructDef, ptr %t924, i32 0, i32 11 - %t926 = getelementptr inbounds { ptr, i64, i64 }, ptr %t925, i32 0, i32 1 - %t927 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t928 = load { ptr, i64, i64 }, ptr %t927 - store i64 -1, ptr %a929 - %t930 = load i64, ptr %t926 - %t931 = load ptr, ptr %t925 - store i64 0, ptr %a932 - br label %find.cond3781 -find.cond3781: - %t933 = load i64, ptr %a932 - %t934 = icmp slt i64 %t933, %t930 - br i1 %t934, label %find.body3782, label %find.end3785 -find.body3782: - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t931, i64 %t933 - %t936 = load { ptr, i64, i64 }, ptr %t935 - store { ptr, i64, i64 } %t936, ptr %a937 - store { ptr, i64, i64 } %t928, ptr %a938 - %t939 = call i32 @finch_str_eq(ptr %a937, ptr %a938) - %t940 = icmp ne i32 %t939, 0 - br i1 %t940, label %find.hit3783, label %find.next3784 -find.hit3783: - store i64 %t933, ptr %a929 - br label %find.end3785 -find.next3784: - %t941 = add i64 %t933, 1 - store i64 %t941, ptr %a932 - br label %find.cond3781 -find.end3785: - %t942 = load i64, ptr %a929 - %t943 = icmp sge i64 %t942, 0 - br i1 %t943, label %then3786, label %endif3788 -then3786: - %t944 = load ptr, ptr %a1 - %t945 = load %S.ast.Node, ptr %a686 - %t946 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t947 = load { ptr, i64, i64 }, ptr %t946 - store { ptr, i64, i64 } { ptr @.str.2354, i64 11, i64 0 }, ptr %a949 - store { ptr, i64, i64 } %t947, ptr %a950 - call void @finch_str_concat(ptr %a948, ptr %a949, ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a948 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.2355, i64 28, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.2356, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - call void @finch.gen.fail(ptr %t944, %S.ast.Node %t945, { ptr, i64, i64 } %t968) - store { ptr, i64, i64 } %t968, ptr %a969 - call void @finch_str_drop(ptr %a969) - br label %endif3788 -endif3788: - br label %endif3761 -else3760: - %t970 = load ptr, ptr %a1 - %t971 = load ptr, ptr %a1 - %t972 = icmp eq ptr %t971, null - br i1 %t972, label %panic3789, label %ok3790 -panic3789: - call void @finch_panic(ptr @.str.2357, i64 1610, ptr @.str.2358) - unreachable -ok3790: - %t973 = getelementptr inbounds %S.gen.Gen, ptr %t971, i32 0, i32 14 - %t974 = load { ptr, i64, i64 }, ptr %t973 - %t975 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t976 = load { ptr, i64, i64 }, ptr %t975 - %t977 = call i64 @finch.gen.findFn(ptr %t970, { ptr, i64, i64 } %t974, { ptr, i64, i64 } %t976) - %t978 = icmp sge i64 %t977, 0 - br i1 %t978, label %then3791, label %endif3793 -then3791: - %t979 = load ptr, ptr %a1 - %t980 = load %S.ast.Node, ptr %a686 - %t981 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t982 = load { ptr, i64, i64 }, ptr %t981 - store { ptr, i64, i64 } { ptr @.str.2359, i64 10, i64 0 }, ptr %a984 - store { ptr, i64, i64 } %t982, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - %t986 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } %t986, ptr %a988 - store { ptr, i64, i64 } { ptr @.str.2360, i64 18, i64 0 }, ptr %a989 - call void @finch_str_concat(ptr %a987, ptr %a988, ptr %a989) - store { ptr, i64, i64 } %t986, ptr %a990 - call void @finch_str_drop(ptr %a990) - %t991 = load { ptr, i64, i64 }, ptr %a987 - call void @finch.gen.fail(ptr %t979, %S.ast.Node %t980, { ptr, i64, i64 } %t991) - store { ptr, i64, i64 } %t991, ptr %a992 - call void @finch_str_drop(ptr %a992) - br label %endif3793 -endif3793: - %t993 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t994) - br i1 %t995, label %then3794, label %endif3796 -then3794: - %t996 = load ptr, ptr %a1 - %t997 = load %S.ast.Node, ptr %a686 - %t998 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t999 = load { ptr, i64, i64 }, ptr %t998 - store { ptr, i64, i64 } { ptr @.str.2361, i64 1, i64 0 }, ptr %a1001 - store { ptr, i64, i64 } %t999, ptr %a1002 - call void @finch_str_concat(ptr %a1000, ptr %a1001, ptr %a1002) - %t1003 = load { ptr, i64, i64 }, ptr %a1000 - store { ptr, i64, i64 } %t1003, ptr %a1005 - store { ptr, i64, i64 } { ptr @.str.2362, i64 43, i64 0 }, ptr %a1006 - call void @finch_str_concat(ptr %a1004, ptr %a1005, ptr %a1006) - store { ptr, i64, i64 } %t1003, ptr %a1007 - call void @finch_str_drop(ptr %a1007) - %t1008 = load { ptr, i64, i64 }, ptr %a1004 - call void @finch.gen.fail(ptr %t996, %S.ast.Node %t997, { ptr, i64, i64 } %t1008) - store { ptr, i64, i64 } %t1008, ptr %a1009 - call void @finch_str_drop(ptr %a1009) - br label %endif3796 -endif3796: - br label %endif3761 -endif3761: - br label %endif3755 -endif3755: - %t1010 = load ptr, ptr %a1 - %t1011 = icmp eq ptr %t1010, null - br i1 %t1011, label %panic3797, label %ok3798 -panic3797: - call void @finch_panic(ptr @.str.2363, i64 1617, ptr @.str.2364) - unreachable -ok3798: - %t1012 = getelementptr inbounds %S.gen.Gen, ptr %t1010, i32 0, i32 14 - %t1013 = load { ptr, i64, i64 }, ptr %t1012 - store { ptr, i64, i64 } %t1013, ptr %a1014 - call void @finch_str_copy(ptr %a1015, ptr %a1014) - %t1016 = load { ptr, i64, i64 }, ptr %a1015 - %t1017 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t1016, 0 - %t1018 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1019 = load { ptr, i64, i64 }, ptr %t1018 - store { ptr, i64, i64 } %t1019, ptr %a1020 - call void @finch_str_copy(ptr %a1021, ptr %a1020) - %t1022 = load { ptr, i64, i64 }, ptr %a1021 - %t1023 = insertvalue %S.gen.FnSig %t1017, { ptr, i64, i64 } %t1022, 1 - %t1024 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1025 = load { ptr, i64, i64 }, ptr %t1024 - store { ptr, i64, i64 } %t1025, ptr %a1026 - call void @finch_str_copy(ptr %a1027, ptr %a1026) - %t1028 = load { ptr, i64, i64 }, ptr %a1027 - %t1029 = insertvalue %S.gen.FnSig %t1023, { ptr, i64, i64 } %t1028, 2 - %t1030 = load { ptr, i64, i64 }, ptr %a789 - 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.FnSig %t1029, { ptr, i64, i64 } %t1033, 3 - %t1035 = load i1, ptr %a790 - %t1036 = insertvalue %S.gen.FnSig %t1034, i1 %t1035, 4 - %t1037 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1038 = load i1, ptr %t1037 - %t1039 = insertvalue %S.gen.FnSig %t1036, i1 %t1038, 5 - %t1040 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 7 - %t1041 = load i1, ptr %t1040 - %t1042 = insertvalue %S.gen.FnSig %t1039, i1 %t1041, 9 - %t1043 = load i64, ptr %a629 - %t1044 = insertvalue %S.gen.FnSig %t1042, i64 %t1043, 16 - %t1045 = load i64, ptr %a663 - %t1046 = insertvalue %S.gen.FnSig %t1044, i64 %t1045, 17 - store %S.gen.FnSig %t1046, ptr %a1047 - %t1048 = load ptr, ptr %a1 - %t1049 = icmp eq ptr %t1048, null - br i1 %t1049, label %panic3799, label %ok3800 -panic3799: - call void @finch_panic(ptr @.str.2366, i64 1618, ptr @.str.2367) - unreachable -ok3800: - %t1050 = getelementptr inbounds %S.gen.Gen, ptr %t1048, i32 0, i32 14 - %t1051 = load { ptr, i64, i64 }, ptr %t1050 - %t1052 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1051) - store { ptr, i64, i64 } { ptr @.str.2365, i64 7, i64 0 }, ptr %a1054 - store { ptr, i64, i64 } %t1052, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - store { ptr, i64, i64 } %t1057, ptr %a1059 - store { ptr, i64, i64 } { ptr @.str.2368, i64 1, i64 0 }, ptr %a1060 - call void @finch_str_concat(ptr %a1058, ptr %a1059, ptr %a1060) - store { ptr, i64, i64 } %t1057, ptr %a1061 - call void @finch_str_drop(ptr %a1061) - %t1062 = load { ptr, i64, i64 }, ptr %a1058 - %t1063 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - store { ptr, i64, i64 } %t1062, ptr %a1066 - store { ptr, i64, i64 } %t1064, ptr %a1067 - call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067) - store { ptr, i64, i64 } %t1062, ptr %a1068 - call void @finch_str_drop(ptr %a1068) - %t1069 = load { ptr, i64, i64 }, ptr %a1065 - %t1070 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1069, ptr %t1070 - store { ptr, i64, i64 } %t1071, ptr %a1072 - call void @finch_str_drop(ptr %a1072) - %t1073 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1074 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1073, i32 0, i32 1 - %t1075 = load i64, ptr %t1074 - %t1076 = icmp sgt i64 %t1075, 0 - br i1 %t1076, label %then3801, label %endif3803 -then3801: - %t1077 = load ptr, ptr %a1 - %t1078 = icmp eq ptr %t1077, null - br i1 %t1078, label %panic3804, label %ok3805 -panic3804: - call void @finch_panic(ptr @.str.2370, i64 1620, ptr @.str.2371) - unreachable -ok3805: - %t1079 = getelementptr inbounds %S.gen.Gen, ptr %t1077, i32 0, i32 14 - %t1080 = load { ptr, i64, i64 }, ptr %t1079 - %t1081 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1080) - store { ptr, i64, i64 } { ptr @.str.2369, i64 7, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - store { ptr, i64, i64 } %t1081, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1086, ptr %a1088 - store { ptr, i64, i64 } { ptr @.str.2372, i64 1, i64 0 }, ptr %a1089 - call void @finch_str_concat(ptr %a1087, ptr %a1088, ptr %a1089) - store { ptr, i64, i64 } %t1086, ptr %a1090 - call void @finch_str_drop(ptr %a1090) - %t1091 = load { ptr, i64, i64 }, ptr %a1087 - %t1092 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1093 = load { ptr, i64, i64 }, ptr %t1092 - store { ptr, i64, i64 } %t1091, ptr %a1095 - store { ptr, i64, i64 } %t1093, ptr %a1096 - call void @finch_str_concat(ptr %a1094, ptr %a1095, ptr %a1096) - store { ptr, i64, i64 } %t1091, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load { ptr, i64, i64 }, ptr %a1094 - store { ptr, i64, i64 } %t1098, ptr %a1100 - store { ptr, i64, i64 } { ptr @.str.2373, i64 1, i64 0 }, ptr %a1101 - call void @finch_str_concat(ptr %a1099, ptr %a1100, ptr %a1101) - store { ptr, i64, i64 } %t1098, ptr %a1102 - call void @finch_str_drop(ptr %a1102) - %t1103 = load { ptr, i64, i64 }, ptr %a1099 - %t1104 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1105 = load { ptr, i64, i64 }, ptr %t1104 - store { ptr, i64, i64 } %t1103, ptr %a1107 - store { ptr, i64, i64 } %t1105, ptr %a1108 - call void @finch_str_concat(ptr %a1106, ptr %a1107, ptr %a1108) - store { ptr, i64, i64 } %t1103, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - %t1110 = load { ptr, i64, i64 }, ptr %a1106 - %t1111 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1112 = load { ptr, i64, i64 }, ptr %t1111 - store { ptr, i64, i64 } %t1110, ptr %t1111 - store { ptr, i64, i64 } %t1112, ptr %a1113 - call void @finch_str_drop(ptr %a1113) - br label %endif3803 -endif3803: - %t1114 = load ptr, ptr %a1 - %t1115 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 5 - %t1116 = load %S.ast.Type, ptr %t1115 - %t1117 = load %S.ast.Node, ptr %a686 - %t1118 = call %S.ast.Type @finch.gen.resolve(ptr %t1114, %S.ast.Type %t1116, %S.ast.Node %t1117) - %t1119 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 12 - %t1120 = load %S.ast.Type, ptr %t1119 - store %S.ast.Type %t1118, ptr %t1119 - store %S.ast.Type %t1120, ptr %a1121 - call void @finch.drop.S_ast_Type(ptr %a1121) - %t1122 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1122, i32 0, i32 1 - %t1124 = load i64, ptr %t1123 - %t1125 = sub i64 %t1124, 1 - store i64 0, ptr %a1126 - br label %for.cond3806 -for.cond3806: - %t1127 = load i64, ptr %a1126 - %t1128 = icmp slt i64 %t1127, %t1125 - br i1 %t1128, label %for.body3807, label %for.end3809 -for.body3807: - %t1129 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1130 = load i64, ptr %a1126 - %t1131 = load { ptr, i64, i64 }, ptr %t1129 - %t1132 = extractvalue { ptr, i64, i64 } %t1131, 1 - %t1133 = icmp uge i64 %t1130, %t1132 - br i1 %t1133, label %range3810, label %inrange3811 -range3810: - call void @finch_panic_index(ptr @.str.2374, i64 1624, i64 %t1130, i64 %t1132) - unreachable -inrange3811: - %t1134 = extractvalue { ptr, i64, i64 } %t1131, 0 - %t1135 = getelementptr inbounds %S.ast.Node, ptr %t1134, i64 %t1130 - %t1136 = getelementptr inbounds %S.ast.Node, ptr %t1135, i32 0, i32 1 - %t1137 = load { ptr, i64, i64 }, ptr %t1136 - store { ptr, i64, i64 } %t1137, ptr %a1138 - store { ptr, i64, i64 } { ptr @.str.2375, i64 4, i64 0 }, ptr %a1139 - %t1140 = call i32 @finch_str_eq(ptr %a1138, ptr %a1139) - %t1141 = icmp ne i32 %t1140, 0 - br label %logic.from3812 -logic.from3812: - br i1 %t1141, label %logic.rhs3813, label %logic.end3814 -logic.rhs3813: - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1142, i32 0, i32 1 - %t1144 = load i64, ptr %t1143 - %t1145 = icmp sgt i64 %t1144, 0 - br label %logic.rend3815 -logic.rend3815: - br label %logic.end3814 -logic.end3814: - %t1146 = phi i1 [ false, %logic.from3812 ], [ %t1145, %logic.rend3815 ] - br i1 %t1146, label %then3816, label %endif3818 -then3816: - %t1147 = load ptr, ptr %a1 - %t1148 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1149 = load i64, ptr %a1126 - %t1150 = load { ptr, i64, i64 }, ptr %t1148 - %t1151 = extractvalue { ptr, i64, i64 } %t1150, 1 - %t1152 = icmp uge i64 %t1149, %t1151 - br i1 %t1152, label %range3819, label %inrange3820 -range3819: - call void @finch_panic_index(ptr @.str.2376, i64 1625, i64 %t1149, i64 %t1151) - unreachable -inrange3820: - %t1153 = extractvalue { ptr, i64, i64 } %t1150, 0 - %t1154 = getelementptr inbounds %S.ast.Node, ptr %t1153, i64 %t1149 - %t1155 = load %S.ast.Node, ptr %t1154 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1157 = load { ptr, i64, i64 }, ptr %t1156 - store { ptr, i64, i64 } { ptr @.str.2377, i64 22, i64 0 }, ptr %a1159 - store { ptr, i64, i64 } %t1157, ptr %a1160 - call void @finch_str_concat(ptr %a1158, ptr %a1159, ptr %a1160) - %t1161 = load { ptr, i64, i64 }, ptr %a1158 - store { ptr, i64, i64 } %t1161, ptr %a1163 - store { ptr, i64, i64 } { ptr @.str.2378, i64 24, i64 0 }, ptr %a1164 - call void @finch_str_concat(ptr %a1162, ptr %a1163, ptr %a1164) - store { ptr, i64, i64 } %t1161, ptr %a1165 - call void @finch_str_drop(ptr %a1165) - %t1166 = load { ptr, i64, i64 }, ptr %a1162 - call void @finch.gen.fail(ptr %t1147, %S.ast.Node %t1155, { ptr, i64, i64 } %t1166) - store { ptr, i64, i64 } %t1166, ptr %a1167 - call void @finch_str_drop(ptr %a1167) - br label %endif3818 -endif3818: - %t1168 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 13 - %t1169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1168, i32 0, i32 1 - %t1170 = load ptr, ptr %a1 - %t1171 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1172 = load i64, ptr %a1126 - %t1173 = load { ptr, i64, i64 }, ptr %t1171 - %t1174 = extractvalue { ptr, i64, i64 } %t1173, 1 - %t1175 = icmp uge i64 %t1172, %t1174 - br i1 %t1175, label %range3821, label %inrange3822 -range3821: - call void @finch_panic_index(ptr @.str.2379, i64 1627, i64 %t1172, i64 %t1174) - unreachable -inrange3822: - %t1176 = extractvalue { ptr, i64, i64 } %t1173, 0 - %t1177 = getelementptr inbounds %S.ast.Node, ptr %t1176, i64 %t1172 - %t1178 = getelementptr inbounds %S.ast.Node, ptr %t1177, i32 0, i32 5 - %t1179 = load %S.ast.Type, ptr %t1178 - %t1180 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1181 = load i64, ptr %a1126 - %t1182 = load { ptr, i64, i64 }, ptr %t1180 - %t1183 = extractvalue { ptr, i64, i64 } %t1182, 1 - %t1184 = icmp uge i64 %t1181, %t1183 - br i1 %t1184, label %range3823, label %inrange3824 -range3823: - call void @finch_panic_index(ptr @.str.2380, i64 1627, i64 %t1181, i64 %t1183) - unreachable -inrange3824: - %t1185 = extractvalue { ptr, i64, i64 } %t1182, 0 - %t1186 = getelementptr inbounds %S.ast.Node, ptr %t1185, i64 %t1181 - %t1187 = load %S.ast.Node, ptr %t1186 - %t1188 = call %S.ast.Type @finch.gen.resolve(ptr %t1170, %S.ast.Type %t1179, %S.ast.Node %t1187) - %t1189 = load i64, ptr %t1169 - %t1190 = add i64 %t1189, 1 - call void @finch_arr_reserve(ptr %t1168, i64 %t1190, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1191 = load ptr, ptr %t1168 - %t1192 = getelementptr inbounds %S.ast.Type, ptr %t1191, i64 %t1189 - store %S.ast.Type %t1188, ptr %t1192 - store i64 %t1190, ptr %t1169 - %t1193 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 14 - %t1194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1193, i32 0, i32 1 - %t1195 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1196 = load i64, ptr %a1126 - %t1197 = load { ptr, i64, i64 }, ptr %t1195 - %t1198 = extractvalue { ptr, i64, i64 } %t1197, 1 - %t1199 = icmp uge i64 %t1196, %t1198 - br i1 %t1199, label %range3825, label %inrange3826 -range3825: - call void @finch_panic_index(ptr @.str.2381, i64 1628, i64 %t1196, i64 %t1198) - unreachable -inrange3826: - %t1200 = extractvalue { ptr, i64, i64 } %t1197, 0 - %t1201 = getelementptr inbounds %S.ast.Node, ptr %t1200, i64 %t1196 - %t1202 = getelementptr inbounds %S.ast.Node, ptr %t1201, i32 0, i32 1 - %t1203 = load { ptr, i64, i64 }, ptr %t1202 - store { ptr, i64, i64 } %t1203, ptr %a1204 - call void @finch_str_copy(ptr %a1205, ptr %a1204) - %t1206 = load { ptr, i64, i64 }, ptr %a1205 - %t1207 = load i64, ptr %t1194 - %t1208 = add i64 %t1207, 1 - call void @finch_arr_reserve(ptr %t1193, i64 %t1208, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1209 = load ptr, ptr %t1193 - %t1210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1209, i64 %t1207 - store { ptr, i64, i64 } %t1206, ptr %t1210 - store i64 %t1208, ptr %t1194 - br label %for.step3808 -for.step3808: - %t1211 = load i64, ptr %a1126 - %t1212 = add i64 %t1211, 1 - store i64 %t1212, ptr %a1126 - br label %for.cond3806 -for.end3809: - %t1213 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1214 = load i1, ptr %t1213 - br i1 %t1214, label %then3827, label %endif3829 -then3827: - %t1215 = load ptr, ptr %a1 - %t1216 = load %S.ast.Node, ptr %a686 - %t1217 = load %S.gen.FnSig, ptr %a1047 - call void @finch.gen.checkExport(ptr %t1215, %S.ast.Node %t1216, %S.gen.FnSig %t1217) - br label %endif3829 -endif3829: - %t1218 = load ptr, ptr %a1 - %t1219 = icmp eq ptr %t1218, null - br i1 %t1219, label %panic3830, label %ok3831 -panic3830: - call void @finch_panic(ptr @.str.2382, i64 1633, ptr @.str.2383) - unreachable -ok3831: - %t1220 = getelementptr inbounds %S.gen.Gen, ptr %t1218, i32 0, i32 15 - %t1221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1220, i32 0, i32 1 - %t1222 = load %S.gen.FnSig, ptr %a1047 - store %S.gen.FnSig %t1222, ptr %a1223 - call void @finch.copy.S_gen_FnSig(ptr %a1224, ptr %a1223) - %t1225 = load %S.gen.FnSig, ptr %a1224 - %t1226 = load i64, ptr %t1221 - %t1227 = add i64 %t1226, 1 - call void @finch_arr_reserve(ptr %t1220, i64 %t1227, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t1228 = load ptr, ptr %t1220 - %t1229 = getelementptr inbounds %S.gen.FnSig, ptr %t1228, i64 %t1226 - store %S.gen.FnSig %t1225, ptr %t1229 - store i64 %t1227, ptr %t1221 - call void @finch.drop.S_gen_FnSig(ptr %a1047) - call void @finch_str_drop(ptr %a789) - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -for.step3716: - %t1230 = load i64, ptr %a663 - %t1231 = add i64 %t1230, 1 - store i64 %t1231, ptr %a663 - br label %for.cond3714 -for.end3717: - br label %for.step3702 -for.step3702: - %t1232 = load i64, ptr %a629 - %t1233 = add i64 %t1232, 1 - store i64 %t1233, ptr %a629 - br label %for.cond3700 -for.end3703: - store i1 true, ptr %a1234 - br label %while.cond3832 -while.cond3832: - %t1235 = load i1, ptr %a1234 - br i1 %t1235, label %while.body3833, label %while.end3834 -while.body3833: - store i1 false, ptr %a1234 - %t1236 = load ptr, ptr %a1 - %t1237 = icmp eq ptr %t1236, null - br i1 %t1237, label %panic3835, label %ok3836 -panic3835: - call void @finch_panic(ptr @.str.2384, i64 1641, ptr @.str.2385) - unreachable -ok3836: - %t1238 = getelementptr inbounds %S.gen.Gen, ptr %t1236, i32 0, i32 15 - %t1239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1238, i32 0, i32 1 - %t1240 = load i64, ptr %t1239 - store i64 0, ptr %a1241 - br label %for.cond3837 -for.cond3837: - %t1242 = load i64, ptr %a1241 - %t1243 = icmp slt i64 %t1242, %t1240 - br i1 %t1243, label %for.body3838, label %for.end3840 -for.body3838: - %t1244 = load ptr, ptr %a1 - %t1245 = icmp eq ptr %t1244, null - br i1 %t1245, label %panic3841, label %ok3842 -panic3841: - call void @finch_panic(ptr @.str.2386, i64 1642, ptr @.str.2387) - unreachable -ok3842: - %t1246 = getelementptr inbounds %S.gen.Gen, ptr %t1244, i32 0, i32 15 - %t1247 = load i64, ptr %a1241 - %t1248 = load { ptr, i64, i64 }, ptr %t1246 - %t1249 = extractvalue { ptr, i64, i64 } %t1248, 1 - %t1250 = icmp uge i64 %t1247, %t1249 - br i1 %t1250, label %range3843, label %inrange3844 -range3843: - call void @finch_panic_index(ptr @.str.2388, i64 1642, i64 %t1247, i64 %t1249) - unreachable -inrange3844: - %t1251 = extractvalue { ptr, i64, i64 } %t1248, 0 - %t1252 = getelementptr inbounds %S.gen.FnSig, ptr %t1251, i64 %t1247 - %t1253 = getelementptr inbounds %S.gen.FnSig, ptr %t1252, i32 0, i32 2 - %t1254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1253, i32 0, i32 1 - %t1255 = load i64, ptr %t1254 - %t1256 = icmp sgt i64 %t1255, 0 - br label %logic.from3845 -logic.from3845: - br i1 %t1256, label %logic.rhs3846, label %logic.end3847 -logic.rhs3846: - %t1257 = load ptr, ptr %a1 - %t1258 = icmp eq ptr %t1257, null - br i1 %t1258, label %panic3848, label %ok3849 -panic3848: - call void @finch_panic(ptr @.str.2389, i64 1642, ptr @.str.2390) - unreachable -ok3849: - %t1259 = getelementptr inbounds %S.gen.Gen, ptr %t1257, i32 0, i32 15 - %t1260 = load i64, ptr %a1241 - %t1261 = load { ptr, i64, i64 }, ptr %t1259 - %t1262 = extractvalue { ptr, i64, i64 } %t1261, 1 - %t1263 = icmp uge i64 %t1260, %t1262 - br i1 %t1263, label %range3850, label %inrange3851 -range3850: - call void @finch_panic_index(ptr @.str.2391, i64 1642, i64 %t1260, i64 %t1262) - unreachable -inrange3851: - %t1264 = extractvalue { ptr, i64, i64 } %t1261, 0 - %t1265 = getelementptr inbounds %S.gen.FnSig, ptr %t1264, i64 %t1260 - %t1266 = getelementptr inbounds %S.gen.FnSig, ptr %t1265, i32 0, i32 10 - %t1267 = load i1, ptr %t1266 - %t1268 = xor i1 %t1267, true - br label %logic.rend3852 -logic.rend3852: - br label %logic.end3847 -logic.end3847: - %t1269 = phi i1 [ false, %logic.from3845 ], [ %t1268, %logic.rend3852 ] - br i1 %t1269, label %then3853, label %endif3855 -then3853: - %t1270 = load ptr, ptr %a1 - %t1271 = icmp eq ptr %t1270, null - br i1 %t1271, label %panic3856, label %ok3857 -panic3856: - call void @finch_panic(ptr @.str.2392, i64 1643, ptr @.str.2393) - unreachable -ok3857: - %t1272 = getelementptr inbounds %S.gen.Gen, ptr %t1270, i32 0, i32 0 - %t1273 = load ptr, ptr %a1 - %t1274 = icmp eq ptr %t1273, null - br i1 %t1274, label %panic3858, label %ok3859 -panic3858: - call void @finch_panic(ptr @.str.2394, i64 1643, ptr @.str.2395) - unreachable -ok3859: - %t1275 = getelementptr inbounds %S.gen.Gen, ptr %t1273, i32 0, i32 15 - %t1276 = load i64, ptr %a1241 - %t1277 = load { ptr, i64, i64 }, ptr %t1275 - %t1278 = extractvalue { ptr, i64, i64 } %t1277, 1 - %t1279 = icmp uge i64 %t1276, %t1278 - br i1 %t1279, label %range3860, label %inrange3861 -range3860: - call void @finch_panic_index(ptr @.str.2396, i64 1643, i64 %t1276, i64 %t1278) - unreachable -inrange3861: - %t1280 = extractvalue { ptr, i64, i64 } %t1277, 0 - %t1281 = getelementptr inbounds %S.gen.FnSig, ptr %t1280, i64 %t1276 - %t1282 = getelementptr inbounds %S.gen.FnSig, ptr %t1281, i32 0, i32 16 - %t1283 = load i64, ptr %t1282 - %t1284 = load { ptr, i64, i64 }, ptr %t1272 - %t1285 = extractvalue { ptr, i64, i64 } %t1284, 1 - %t1286 = icmp uge i64 %t1283, %t1285 - br i1 %t1286, label %range3862, label %inrange3863 -range3862: - call void @finch_panic_index(ptr @.str.2397, i64 1643, i64 %t1283, i64 %t1285) - unreachable -inrange3863: - %t1287 = extractvalue { ptr, i64, i64 } %t1284, 0 - %t1288 = getelementptr inbounds %S.ast.Program, ptr %t1287, i64 %t1283 - %t1289 = getelementptr inbounds %S.ast.Program, ptr %t1288, i32 0, i32 8 - %t1290 = load ptr, ptr %a1 - %t1291 = icmp eq ptr %t1290, null - br i1 %t1291, label %panic3864, label %ok3865 -panic3864: - call void @finch_panic(ptr @.str.2398, i64 1643, ptr @.str.2399) - unreachable -ok3865: - %t1292 = getelementptr inbounds %S.gen.Gen, ptr %t1290, i32 0, i32 15 - %t1293 = load i64, ptr %a1241 - %t1294 = load { ptr, i64, i64 }, ptr %t1292 - %t1295 = extractvalue { ptr, i64, i64 } %t1294, 1 - %t1296 = icmp uge i64 %t1293, %t1295 - br i1 %t1296, label %range3866, label %inrange3867 -range3866: - call void @finch_panic_index(ptr @.str.2400, i64 1643, i64 %t1293, i64 %t1295) - unreachable -inrange3867: - %t1297 = extractvalue { ptr, i64, i64 } %t1294, 0 - %t1298 = getelementptr inbounds %S.gen.FnSig, ptr %t1297, i64 %t1293 - %t1299 = getelementptr inbounds %S.gen.FnSig, ptr %t1298, i32 0, i32 17 - %t1300 = load i64, ptr %t1299 - %t1301 = load { ptr, i64, i64 }, ptr %t1289 - %t1302 = extractvalue { ptr, i64, i64 } %t1301, 1 - %t1303 = icmp uge i64 %t1300, %t1302 - br i1 %t1303, label %range3868, label %inrange3869 -range3868: - call void @finch_panic_index(ptr @.str.2401, i64 1643, i64 %t1300, i64 %t1302) - unreachable -inrange3869: - %t1304 = extractvalue { ptr, i64, i64 } %t1301, 0 - %t1305 = getelementptr inbounds %S.ast.Node, ptr %t1304, i64 %t1300 - %t1306 = load %S.ast.Node, ptr %t1305 - store %S.ast.Node %t1306, ptr %a1307 - call void @finch.copy.S_ast_Node(ptr %a1308, ptr %a1307) - %t1309 = load %S.ast.Node, ptr %a1308 - store %S.ast.Node %t1309, ptr %a1310 - %t1311 = load ptr, ptr %a1 - %t1312 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1313 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1313, i32 0, i32 1 - %t1315 = load i64, ptr %t1314 - %t1316 = sub i64 %t1315, 1 - %t1317 = load { ptr, i64, i64 }, ptr %t1312 - %t1318 = extractvalue { ptr, i64, i64 } %t1317, 1 - %t1319 = icmp uge i64 %t1316, %t1318 - br i1 %t1319, label %range3870, label %inrange3871 -range3870: - call void @finch_panic_index(ptr @.str.2403, i64 1644, i64 %t1316, i64 %t1318) - unreachable -inrange3871: - %t1320 = extractvalue { ptr, i64, i64 } %t1317, 0 - %t1321 = getelementptr inbounds %S.ast.Node, ptr %t1320, i64 %t1316 - %t1322 = load %S.ast.Node, ptr %t1321 - %t1323 = call i1 @finch.gen.mutates(ptr %t1311, { ptr, i64, i64 } { ptr @.str.2402, i64 4, i64 0 }, %S.ast.Node %t1322) - br i1 %t1323, label %then3872, label %endif3874 -then3872: - %t1324 = load ptr, ptr %a1 - %t1325 = icmp eq ptr %t1324, null - br i1 %t1325, label %panic3875, label %ok3876 -panic3875: - call void @finch_panic(ptr @.str.2404, i64 1645, ptr @.str.2405) - unreachable -ok3876: - %t1326 = getelementptr inbounds %S.gen.Gen, ptr %t1324, i32 0, i32 15 - %t1327 = load i64, ptr %a1241 - %t1328 = load { ptr, i64, i64 }, ptr %t1326 - %t1329 = extractvalue { ptr, i64, i64 } %t1328, 1 - %t1330 = icmp uge i64 %t1327, %t1329 - br i1 %t1330, label %range3877, label %inrange3878 -range3877: - call void @finch_panic_index(ptr @.str.2406, i64 1645, i64 %t1327, i64 %t1329) - unreachable -inrange3878: - %t1331 = extractvalue { ptr, i64, i64 } %t1328, 0 - %t1332 = getelementptr inbounds %S.gen.FnSig, ptr %t1331, i64 %t1327 - %t1333 = getelementptr inbounds %S.gen.FnSig, ptr %t1332, i32 0, i32 10 - store i1 true, ptr %t1333 - %t1334 = load ptr, ptr %a1 - %t1335 = icmp eq ptr %t1334, null - br i1 %t1335, label %panic3879, label %ok3880 -panic3879: - call void @finch_panic(ptr @.str.2407, i64 1646, ptr @.str.2408) - unreachable -ok3880: - %t1336 = getelementptr inbounds %S.gen.Gen, ptr %t1334, i32 0, i32 24 - %t1337 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1336, i32 0, i32 1 - %t1338 = load ptr, ptr %a1 - %t1339 = icmp eq ptr %t1338, null - br i1 %t1339, label %panic3881, label %ok3882 -panic3881: - call void @finch_panic(ptr @.str.2409, i64 1646, ptr @.str.2410) - unreachable -ok3882: - %t1340 = getelementptr inbounds %S.gen.Gen, ptr %t1338, i32 0, i32 15 - %t1341 = load i64, ptr %a1241 - %t1342 = load { ptr, i64, i64 }, ptr %t1340 - %t1343 = extractvalue { ptr, i64, i64 } %t1342, 1 - %t1344 = icmp uge i64 %t1341, %t1343 - br i1 %t1344, label %range3883, label %inrange3884 -range3883: - call void @finch_panic_index(ptr @.str.2411, i64 1646, i64 %t1341, i64 %t1343) - unreachable -inrange3884: - %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 1 - %t1348 = load { ptr, i64, i64 }, ptr %t1347 - store { ptr, i64, i64 } %t1348, ptr %a1349 - call void @finch_str_copy(ptr %a1350, ptr %a1349) - %t1351 = load { ptr, i64, i64 }, ptr %a1350 - %t1352 = load i64, ptr %t1337 - %t1353 = add i64 %t1352, 1 - call void @finch_arr_reserve(ptr %t1336, i64 %t1353, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1354 = load ptr, ptr %t1336 - %t1355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1354, i64 %t1352 - store { ptr, i64, i64 } %t1351, ptr %t1355 - store i64 %t1353, ptr %t1337 - store i1 true, ptr %a1234 - br label %endif3874 -endif3874: - call void @finch.drop.S_ast_Node(ptr %a1310) - br label %endif3855 -endif3855: - br label %for.step3839 -for.step3839: - %t1356 = load i64, ptr %a1241 - %t1357 = add i64 %t1356, 1 - store i64 %t1357, ptr %a1241 - br label %for.cond3837 -for.end3840: - %t1358 = load ptr, ptr %a1 - %t1359 = icmp eq ptr %t1358, null - br i1 %t1359, label %panic3885, label %ok3886 -panic3885: - call void @finch_panic(ptr @.str.2412, i64 1651, ptr @.str.2413) - unreachable -ok3886: - %t1360 = getelementptr inbounds %S.gen.Gen, ptr %t1358, i32 0, i32 17 - %t1361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1360, i32 0, i32 1 - %t1362 = load i64, ptr %t1361 - store i64 0, ptr %a1363 - br label %for.cond3887 -for.cond3887: - %t1364 = load i64, ptr %a1363 - %t1365 = icmp slt i64 %t1364, %t1362 - br i1 %t1365, label %for.body3888, label %for.end3890 -for.body3888: - %t1366 = load ptr, ptr %a1 - %t1367 = icmp eq ptr %t1366, null - br i1 %t1367, label %panic3891, label %ok3892 -panic3891: - call void @finch_panic(ptr @.str.2414, i64 1652, ptr @.str.2415) - unreachable -ok3892: - %t1368 = getelementptr inbounds %S.gen.Gen, ptr %t1366, i32 0, i32 17 - %t1369 = load i64, ptr %a1363 - %t1370 = load { ptr, i64, i64 }, ptr %t1368 - %t1371 = extractvalue { ptr, i64, i64 } %t1370, 1 - %t1372 = icmp uge i64 %t1369, %t1371 - br i1 %t1372, label %range3893, label %inrange3894 -range3893: - call void @finch_panic_index(ptr @.str.2416, i64 1652, i64 %t1369, i64 %t1371) - unreachable -inrange3894: - %t1373 = extractvalue { ptr, i64, i64 } %t1370, 0 - %t1374 = getelementptr inbounds %S.gen.Template, ptr %t1373, i64 %t1369 - %t1375 = load %S.gen.Template, ptr %t1374 - store %S.gen.Template %t1375, ptr %a1376 - call void @finch.copy.S_gen_Template(ptr %a1377, ptr %a1376) - %t1378 = load %S.gen.Template, ptr %a1377 - store %S.gen.Template %t1378, ptr %a1379 - %t1380 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 2 - %t1381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1380, i32 0, i32 1 - %t1382 = load i64, ptr %t1381 - %t1383 = icmp sgt i64 %t1382, 0 - br label %logic.from3895 -logic.from3895: - br i1 %t1383, label %logic.rhs3896, label %logic.end3897 -logic.rhs3896: - %t1384 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 7 - %t1385 = load i1, ptr %t1384 - %t1386 = xor i1 %t1385, true - br label %logic.rend3898 -logic.rend3898: - br label %logic.end3897 -logic.end3897: - %t1387 = phi i1 [ false, %logic.from3895 ], [ %t1386, %logic.rend3898 ] - br i1 %t1387, label %then3899, label %endif3901 -then3899: - %t1388 = load ptr, ptr %a1 - %t1389 = icmp eq ptr %t1388, null - br i1 %t1389, label %panic3902, label %ok3903 -panic3902: - call void @finch_panic(ptr @.str.2417, i64 1654, ptr @.str.2418) - unreachable -ok3903: - %t1390 = getelementptr inbounds %S.gen.Gen, ptr %t1388, i32 0, i32 0 - %t1391 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 4 - %t1392 = load i64, ptr %t1391 - %t1393 = load { ptr, i64, i64 }, ptr %t1390 - %t1394 = extractvalue { ptr, i64, i64 } %t1393, 1 - %t1395 = icmp uge i64 %t1392, %t1394 - br i1 %t1395, label %range3904, label %inrange3905 -range3904: - call void @finch_panic_index(ptr @.str.2419, i64 1654, i64 %t1392, i64 %t1394) - unreachable -inrange3905: - %t1396 = extractvalue { ptr, i64, i64 } %t1393, 0 - %t1397 = getelementptr inbounds %S.ast.Program, ptr %t1396, i64 %t1392 - %t1398 = getelementptr inbounds %S.ast.Program, ptr %t1397, i32 0, i32 8 - %t1399 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 5 - %t1400 = load i64, ptr %t1399 - %t1401 = load { ptr, i64, i64 }, ptr %t1398 - %t1402 = extractvalue { ptr, i64, i64 } %t1401, 1 - %t1403 = icmp uge i64 %t1400, %t1402 - br i1 %t1403, label %range3906, label %inrange3907 -range3906: - call void @finch_panic_index(ptr @.str.2420, i64 1654, i64 %t1400, i64 %t1402) - unreachable -inrange3907: - %t1404 = extractvalue { ptr, i64, i64 } %t1401, 0 - %t1405 = getelementptr inbounds %S.ast.Node, ptr %t1404, i64 %t1400 - %t1406 = load %S.ast.Node, ptr %t1405 - store %S.ast.Node %t1406, ptr %a1407 - call void @finch.copy.S_ast_Node(ptr %a1408, ptr %a1407) - %t1409 = load %S.ast.Node, ptr %a1408 - store %S.ast.Node %t1409, ptr %a1410 - %t1411 = load ptr, ptr %a1 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1413 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1413, i32 0, i32 1 - %t1415 = load i64, ptr %t1414 - %t1416 = sub i64 %t1415, 1 - %t1417 = load { ptr, i64, i64 }, ptr %t1412 - %t1418 = extractvalue { ptr, i64, i64 } %t1417, 1 - %t1419 = icmp uge i64 %t1416, %t1418 - br i1 %t1419, label %range3908, label %inrange3909 -range3908: - call void @finch_panic_index(ptr @.str.2422, i64 1655, i64 %t1416, i64 %t1418) - unreachable -inrange3909: - %t1420 = extractvalue { ptr, i64, i64 } %t1417, 0 - %t1421 = getelementptr inbounds %S.ast.Node, ptr %t1420, i64 %t1416 - %t1422 = load %S.ast.Node, ptr %t1421 - %t1423 = call i1 @finch.gen.mutates(ptr %t1411, { ptr, i64, i64 } { ptr @.str.2421, i64 4, i64 0 }, %S.ast.Node %t1422) - br i1 %t1423, label %then3910, label %endif3912 -then3910: - %t1424 = load ptr, ptr %a1 - %t1425 = icmp eq ptr %t1424, null - br i1 %t1425, label %panic3913, label %ok3914 -panic3913: - call void @finch_panic(ptr @.str.2423, i64 1656, ptr @.str.2424) - unreachable -ok3914: - %t1426 = getelementptr inbounds %S.gen.Gen, ptr %t1424, i32 0, i32 17 - %t1427 = load i64, ptr %a1363 - %t1428 = load { ptr, i64, i64 }, ptr %t1426 - %t1429 = extractvalue { ptr, i64, i64 } %t1428, 1 - %t1430 = icmp uge i64 %t1427, %t1429 - br i1 %t1430, label %range3915, label %inrange3916 -range3915: - call void @finch_panic_index(ptr @.str.2425, i64 1656, i64 %t1427, i64 %t1429) - unreachable -inrange3916: - %t1431 = extractvalue { ptr, i64, i64 } %t1428, 0 - %t1432 = getelementptr inbounds %S.gen.Template, ptr %t1431, i64 %t1427 - %t1433 = getelementptr inbounds %S.gen.Template, ptr %t1432, i32 0, i32 7 - store i1 true, ptr %t1433 - %t1434 = load ptr, ptr %a1 - %t1435 = icmp eq ptr %t1434, null - br i1 %t1435, label %panic3917, label %ok3918 -panic3917: - call void @finch_panic(ptr @.str.2426, i64 1657, ptr @.str.2427) - unreachable -ok3918: - %t1436 = getelementptr inbounds %S.gen.Gen, ptr %t1434, i32 0, i32 24 - %t1437 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1436, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1439, ptr %a1440 - call void @finch_str_copy(ptr %a1441, ptr %a1440) - %t1442 = load { ptr, i64, i64 }, ptr %a1441 - %t1443 = load i64, ptr %t1437 - %t1444 = add i64 %t1443, 1 - call void @finch_arr_reserve(ptr %t1436, i64 %t1444, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1445 = load ptr, ptr %t1436 - %t1446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1445, i64 %t1443 - store { ptr, i64, i64 } %t1442, ptr %t1446 - store i64 %t1444, ptr %t1437 - store i1 true, ptr %a1234 - br label %endif3912 -endif3912: - call void @finch.drop.S_ast_Node(ptr %a1410) - br label %endif3901 -endif3901: - call void @finch.drop.S_gen_Template(ptr %a1379) - br label %for.step3889 -for.step3889: - %t1447 = load i64, ptr %a1363 - %t1448 = add i64 %t1447, 1 - store i64 %t1448, ptr %a1363 - br label %for.cond3887 -for.end3890: - br label %while.cond3832 -while.end3834: - %t1449 = load ptr, ptr %a1 - %t1450 = icmp eq ptr %t1449, null - br i1 %t1450, label %panic3919, label %ok3920 -panic3919: - call void @finch_panic(ptr @.str.2428, i64 1664, ptr @.str.2429) - unreachable -ok3920: - %t1451 = getelementptr inbounds %S.gen.Gen, ptr %t1449, i32 0, i32 15 - %t1452 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1451, i32 0, i32 1 - %t1453 = load i64, ptr %t1452 - store i64 0, ptr %a1454 - br label %for.cond3921 -for.cond3921: - %t1455 = load i64, ptr %a1454 - %t1456 = icmp slt i64 %t1455, %t1453 - br i1 %t1456, label %for.body3922, label %for.end3924 -for.body3922: - %t1457 = load ptr, ptr %a1 - %t1458 = icmp eq ptr %t1457, null - br i1 %t1458, label %panic3925, label %ok3926 -panic3925: - call void @finch_panic(ptr @.str.2430, i64 1665, ptr @.str.2431) - unreachable -ok3926: - %t1459 = getelementptr inbounds %S.gen.Gen, ptr %t1457, i32 0, i32 0 - %t1460 = load ptr, ptr %a1 - %t1461 = icmp eq ptr %t1460, null - br i1 %t1461, label %panic3927, label %ok3928 -panic3927: - call void @finch_panic(ptr @.str.2432, i64 1665, ptr @.str.2433) - unreachable -ok3928: - %t1462 = getelementptr inbounds %S.gen.Gen, ptr %t1460, i32 0, i32 15 - %t1463 = load i64, ptr %a1454 - %t1464 = load { ptr, i64, i64 }, ptr %t1462 - %t1465 = extractvalue { ptr, i64, i64 } %t1464, 1 - %t1466 = icmp uge i64 %t1463, %t1465 - br i1 %t1466, label %range3929, label %inrange3930 -range3929: - call void @finch_panic_index(ptr @.str.2434, i64 1665, i64 %t1463, i64 %t1465) - unreachable -inrange3930: - %t1467 = extractvalue { ptr, i64, i64 } %t1464, 0 - %t1468 = getelementptr inbounds %S.gen.FnSig, ptr %t1467, i64 %t1463 - %t1469 = getelementptr inbounds %S.gen.FnSig, ptr %t1468, i32 0, i32 16 - %t1470 = load i64, ptr %t1469 - %t1471 = load { ptr, i64, i64 }, ptr %t1459 - %t1472 = extractvalue { ptr, i64, i64 } %t1471, 1 - %t1473 = icmp uge i64 %t1470, %t1472 - br i1 %t1473, label %range3931, label %inrange3932 -range3931: - call void @finch_panic_index(ptr @.str.2435, i64 1665, i64 %t1470, i64 %t1472) - unreachable -inrange3932: - %t1474 = extractvalue { ptr, i64, i64 } %t1471, 0 - %t1475 = getelementptr inbounds %S.ast.Program, ptr %t1474, i64 %t1470 - %t1476 = getelementptr inbounds %S.ast.Program, ptr %t1475, i32 0, i32 8 - %t1477 = load ptr, ptr %a1 - %t1478 = icmp eq ptr %t1477, null - br i1 %t1478, label %panic3933, label %ok3934 -panic3933: - call void @finch_panic(ptr @.str.2436, i64 1665, ptr @.str.2437) - unreachable -ok3934: - %t1479 = getelementptr inbounds %S.gen.Gen, ptr %t1477, i32 0, i32 15 - %t1480 = load i64, ptr %a1454 - %t1481 = load { ptr, i64, i64 }, ptr %t1479 - %t1482 = extractvalue { ptr, i64, i64 } %t1481, 1 - %t1483 = icmp uge i64 %t1480, %t1482 - br i1 %t1483, label %range3935, label %inrange3936 -range3935: - call void @finch_panic_index(ptr @.str.2438, i64 1665, i64 %t1480, i64 %t1482) - unreachable -inrange3936: - %t1484 = extractvalue { ptr, i64, i64 } %t1481, 0 - %t1485 = getelementptr inbounds %S.gen.FnSig, ptr %t1484, i64 %t1480 - %t1486 = getelementptr inbounds %S.gen.FnSig, ptr %t1485, i32 0, i32 17 - %t1487 = load i64, ptr %t1486 - %t1488 = load { ptr, i64, i64 }, ptr %t1476 - %t1489 = extractvalue { ptr, i64, i64 } %t1488, 1 - %t1490 = icmp uge i64 %t1487, %t1489 - br i1 %t1490, label %range3937, label %inrange3938 -range3937: - call void @finch_panic_index(ptr @.str.2439, i64 1665, i64 %t1487, i64 %t1489) - unreachable -inrange3938: - %t1491 = extractvalue { ptr, i64, i64 } %t1488, 0 - %t1492 = getelementptr inbounds %S.ast.Node, ptr %t1491, i64 %t1487 - %t1493 = load %S.ast.Node, ptr %t1492 - store %S.ast.Node %t1493, ptr %a1494 - call void @finch.copy.S_ast_Node(ptr %a1495, ptr %a1494) - %t1496 = load %S.ast.Node, ptr %a1495 - store %S.ast.Node %t1496, ptr %a1497 - %t1498 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1499 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1499, i32 0, i32 1 - %t1501 = load i64, ptr %t1500 - %t1502 = sub i64 %t1501, 1 - %t1503 = load { ptr, i64, i64 }, ptr %t1498 - %t1504 = extractvalue { ptr, i64, i64 } %t1503, 1 - %t1505 = icmp uge i64 %t1502, %t1504 - br i1 %t1505, label %range3939, label %inrange3940 -range3939: - call void @finch_panic_index(ptr @.str.2440, i64 1666, i64 %t1502, i64 %t1504) - unreachable -inrange3940: - %t1506 = extractvalue { ptr, i64, i64 } %t1503, 0 - %t1507 = getelementptr inbounds %S.ast.Node, ptr %t1506, i64 %t1502 - %t1508 = load %S.ast.Node, ptr %t1507 - store %S.ast.Node %t1508, ptr %a1509 - call void @finch.copy.S_ast_Node(ptr %a1510, ptr %a1509) - %t1511 = load %S.ast.Node, ptr %a1510 - store %S.ast.Node %t1511, ptr %a1512 - %t1513 = load ptr, ptr %a1 - %t1514 = icmp eq ptr %t1513, null - br i1 %t1514, label %panic3941, label %ok3942 -panic3941: - call void @finch_panic(ptr @.str.2441, i64 1667, ptr @.str.2442) - unreachable -ok3942: - %t1515 = getelementptr inbounds %S.gen.Gen, ptr %t1513, i32 0, i32 15 - %t1516 = load i64, ptr %a1454 - %t1517 = load { ptr, i64, i64 }, ptr %t1515 - %t1518 = extractvalue { ptr, i64, i64 } %t1517, 1 - %t1519 = icmp uge i64 %t1516, %t1518 - br i1 %t1519, label %range3943, label %inrange3944 -range3943: - call void @finch_panic_index(ptr @.str.2443, i64 1667, i64 %t1516, i64 %t1518) - unreachable -inrange3944: - %t1520 = extractvalue { ptr, i64, i64 } %t1517, 0 - %t1521 = getelementptr inbounds %S.gen.FnSig, ptr %t1520, i64 %t1516 - %t1522 = getelementptr inbounds %S.gen.FnSig, ptr %t1521, i32 0, i32 13 - %t1523 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1522, i32 0, i32 1 - %t1524 = load i64, ptr %t1523 - store i64 0, ptr %a1525 - br label %for.cond3945 -for.cond3945: - %t1526 = load i64, ptr %a1525 - %t1527 = icmp slt i64 %t1526, %t1524 - br i1 %t1527, label %for.body3946, label %for.end3948 -for.body3946: - %t1528 = load ptr, ptr %a1 - %t1529 = icmp eq ptr %t1528, null - br i1 %t1529, label %panic3949, label %ok3950 -panic3949: - call void @finch_panic(ptr @.str.2444, i64 1668, ptr @.str.2445) - unreachable -ok3950: - %t1530 = getelementptr inbounds %S.gen.Gen, ptr %t1528, i32 0, i32 15 - %t1531 = load i64, ptr %a1454 - %t1532 = load { ptr, i64, i64 }, ptr %t1530 - %t1533 = extractvalue { ptr, i64, i64 } %t1532, 1 - %t1534 = icmp uge i64 %t1531, %t1533 - br i1 %t1534, label %range3951, label %inrange3952 -range3951: - call void @finch_panic_index(ptr @.str.2446, i64 1668, i64 %t1531, i64 %t1533) - unreachable -inrange3952: - %t1535 = extractvalue { ptr, i64, i64 } %t1532, 0 - %t1536 = getelementptr inbounds %S.gen.FnSig, ptr %t1535, i64 %t1531 - %t1537 = getelementptr inbounds %S.gen.FnSig, ptr %t1536, i32 0, i32 13 - %t1538 = load i64, ptr %a1525 - %t1539 = load { ptr, i64, i64 }, ptr %t1537 - %t1540 = extractvalue { ptr, i64, i64 } %t1539, 1 - %t1541 = icmp uge i64 %t1538, %t1540 - br i1 %t1541, label %range3953, label %inrange3954 -range3953: - call void @finch_panic_index(ptr @.str.2447, i64 1668, i64 %t1538, i64 %t1540) - unreachable -inrange3954: - %t1542 = extractvalue { ptr, i64, i64 } %t1539, 0 - %t1543 = getelementptr inbounds %S.ast.Type, ptr %t1542, i64 %t1538 - %t1544 = load %S.ast.Type, ptr %t1543 - store %S.ast.Type %t1544, ptr %a1545 - call void @finch.copy.S_ast_Type(ptr %a1546, ptr %a1545) - %t1547 = load %S.ast.Type, ptr %a1546 - store %S.ast.Type %t1547, ptr %a1548 - %t1549 = load ptr, ptr %a1 - %t1550 = icmp eq ptr %t1549, null - br i1 %t1550, label %panic3955, label %ok3956 -panic3955: - call void @finch_panic(ptr @.str.2448, i64 1669, ptr @.str.2449) - unreachable -ok3956: - %t1551 = getelementptr inbounds %S.gen.Gen, ptr %t1549, i32 0, i32 15 - %t1552 = load i64, ptr %a1454 - %t1553 = load { ptr, i64, i64 }, ptr %t1551 - %t1554 = extractvalue { ptr, i64, i64 } %t1553, 1 - %t1555 = icmp uge i64 %t1552, %t1554 - br i1 %t1555, label %range3957, label %inrange3958 -range3957: - call void @finch_panic_index(ptr @.str.2450, i64 1669, i64 %t1552, i64 %t1554) - unreachable -inrange3958: - %t1556 = extractvalue { ptr, i64, i64 } %t1553, 0 - %t1557 = getelementptr inbounds %S.gen.FnSig, ptr %t1556, i64 %t1552 - %t1558 = getelementptr inbounds %S.gen.FnSig, ptr %t1557, i32 0, i32 15 - %t1559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1558, i32 0, i32 1 - %t1560 = load ptr, ptr %a1 - %t1561 = load %S.ast.Type, ptr %a1548 - %t1562 = call i1 @finch.gen.owning(ptr %t1560, %S.ast.Type %t1561) - br label %logic.from3959 -logic.from3959: - br i1 %t1562, label %logic.rhs3960, label %logic.end3961 -logic.rhs3960: - %t1563 = load ptr, ptr %a1 - %t1564 = load ptr, ptr %a1 - %t1565 = icmp eq ptr %t1564, null - br i1 %t1565, label %panic3962, label %ok3963 -panic3962: - call void @finch_panic(ptr @.str.2451, i64 1669, ptr @.str.2452) - unreachable -ok3963: - %t1566 = getelementptr inbounds %S.gen.Gen, ptr %t1564, i32 0, i32 15 - %t1567 = load i64, ptr %a1454 - %t1568 = load { ptr, i64, i64 }, ptr %t1566 - %t1569 = extractvalue { ptr, i64, i64 } %t1568, 1 - %t1570 = icmp uge i64 %t1567, %t1569 - br i1 %t1570, label %range3964, label %inrange3965 -range3964: - call void @finch_panic_index(ptr @.str.2453, i64 1669, i64 %t1567, i64 %t1569) - unreachable -inrange3965: - %t1571 = extractvalue { ptr, i64, i64 } %t1568, 0 - %t1572 = getelementptr inbounds %S.gen.FnSig, ptr %t1571, i64 %t1567 - %t1573 = getelementptr inbounds %S.gen.FnSig, ptr %t1572, i32 0, i32 14 - %t1574 = load i64, ptr %a1525 - %t1575 = load { ptr, i64, i64 }, ptr %t1573 - %t1576 = extractvalue { ptr, i64, i64 } %t1575, 1 - %t1577 = icmp uge i64 %t1574, %t1576 - br i1 %t1577, label %range3966, label %inrange3967 -range3966: - call void @finch_panic_index(ptr @.str.2454, i64 1669, i64 %t1574, i64 %t1576) - unreachable -inrange3967: - %t1578 = extractvalue { ptr, i64, i64 } %t1575, 0 - %t1579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1578, i64 %t1574 - %t1580 = load { ptr, i64, i64 }, ptr %t1579 - %t1581 = load %S.ast.Node, ptr %a1512 - %t1582 = call i1 @finch.gen.mutates(ptr %t1563, { ptr, i64, i64 } %t1580, %S.ast.Node %t1581) - %t1583 = xor i1 %t1582, true - br label %logic.rend3968 -logic.rend3968: - br label %logic.end3961 -logic.end3961: - %t1584 = phi i1 [ false, %logic.from3959 ], [ %t1583, %logic.rend3968 ] - %t1585 = load i64, ptr %t1559 - %t1586 = add i64 %t1585, 1 - call void @finch_arr_reserve(ptr %t1558, i64 %t1586, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t1587 = load ptr, ptr %t1558 - %t1588 = getelementptr inbounds i1, ptr %t1587, i64 %t1585 - store i1 %t1584, ptr %t1588 - store i64 %t1586, ptr %t1559 - call void @finch.drop.S_ast_Type(ptr %a1548) - br label %for.step3947 -for.step3947: - %t1589 = load i64, ptr %a1525 - %t1590 = add i64 %t1589, 1 - store i64 %t1590, ptr %a1525 - br label %for.cond3945 -for.end3948: - call void @finch.drop.S_ast_Node(ptr %a1512) - call void @finch.drop.S_ast_Node(ptr %a1497) - br label %for.step3923 -for.step3923: - %t1591 = load i64, ptr %a1454 - %t1592 = add i64 %t1591, 1 - store i64 %t1592, ptr %a1454 - br label %for.cond3921 -for.end3924: - 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 %panic3969, label %ok3970 -panic3969: - call void @finch_panic(ptr @.str.2455, i64 1675, ptr @.str.2456) - unreachable -ok3970: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load i64, ptr %t9 - store i64 0, ptr %a11 - br label %for.cond3971 -for.cond3971: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body3972, label %for.end3974 -for.body3972: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3975, label %ok3976 -panic3975: - call void @finch_panic(ptr @.str.2457, i64 1676, ptr @.str.2458) - unreachable -ok3976: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 17 - %t17 = load i64, ptr %a11 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range3977, label %inrange3978 -range3977: - call void @finch_panic_index(ptr @.str.2459, i64 1676, i64 %t17, i64 %t19) - unreachable -inrange3978: - %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.from3979 -logic.from3979: - br i1 %t34, label %logic.rhs3980, label %logic.end3981 -logic.rhs3980: - %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.rend3982 -logic.rend3982: - br label %logic.end3981 -logic.end3981: - %t42 = phi i1 [ false, %logic.from3979 ], [ %t41, %logic.rend3982 ] - br label %logic.from3983 -logic.from3983: - br i1 %t42, label %logic.rhs3984, label %logic.end3985 -logic.rhs3984: - %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.rend3986 -logic.rend3986: - br label %logic.end3985 -logic.end3985: - %t50 = phi i1 [ false, %logic.from3983 ], [ %t49, %logic.rend3986 ] - br label %logic.from3987 -logic.from3987: - br i1 %t50, label %logic.rhs3988, label %logic.end3989 -logic.rhs3988: - %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.rend3990 -logic.rend3990: - br label %logic.end3989 -logic.end3989: - %t55 = phi i1 [ false, %logic.from3987 ], [ %t54, %logic.rend3990 ] - br i1 %t55, label %then3991, label %endif3993 -then3991: - %t56 = load i64, ptr %a11 - call void @finch.drop.S_gen_Template(ptr %a27) - ret i64 %t56 -endif3993: - call void @finch.drop.S_gen_Template(ptr %a27) - br label %for.step3973 -for.step3973: - %t57 = load i64, ptr %a11 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a11 - br label %for.cond3971 -for.end3974: - 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.cond3994 -each.cond3994: - %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.body3995, label %each.end3997 -each.body3995: - %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.step3996 -each.step3996: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %each.cond3994 -each.end3997: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2460, i64 2, i64 0 }, ptr %a22 - call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t24 -} - -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.gen.Template, align 16 - %a48 = alloca %S.gen.Template, align 16 - %a50 = alloca %S.gen.Template, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.2461, 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 %then3998, label %endif4000 -then3998: - %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.2462, 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.2463, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t24, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.2464, i64 34, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - br label %endif4000 -endif4000: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic4001, label %ok4002 -panic4001: - call void @finch_panic(ptr @.str.2465, i64 1698, ptr @.str.2466) - unreachable -ok4002: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 17 - %t40 = load i64, ptr %a10 - %t41 = load { ptr, i64, i64 }, ptr %t39 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 %t40, %t42 - br i1 %t43, label %range4003, label %inrange4004 -range4003: - call void @finch_panic_index(ptr @.str.2467, i64 1698, i64 %t40, i64 %t42) - unreachable -inrange4004: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds %S.gen.Template, ptr %t44, i64 %t40 - %t46 = load %S.gen.Template, ptr %t45 - store %S.gen.Template %t46, ptr %a47 - call void @finch.copy.S_gen_Template(ptr %a48, ptr %a47) - %t49 = load %S.gen.Template, ptr %a48 - store %S.gen.Template %t49, ptr %a50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 - %t55 = load i64, ptr %t54 - %t56 = icmp ne i64 %t52, %t55 - br i1 %t56, label %then4005, label %endif4007 -then4005: - %t57 = load ptr, ptr %a1 - %t58 = load %S.ast.Node, ptr %a5 - %t59 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2468, i64 7, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a60 - %t64 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - %t66 = load i64, ptr %t65 - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.2469, i64 24, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.2470, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2471, i64 2, i64 0 }, ptr %a93 - call void @finch_str_join(ptr %a94, ptr %t91, ptr %a93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t90, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t90, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t101, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2472, i64 11, i64 0 }, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t108 = load i64, ptr %t107 - call void @finch_str_from_int(ptr %a109, i64 %t108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t106, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t106, ptr %a114 - call void @finch_str_drop(ptr %a114) - store { ptr, i64, i64 } %t110, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t57, %S.ast.Node %t58, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif4007 -endif4007: - %t118 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.2473, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a119 - %t123 = load { ptr, i64, i64 }, ptr %a4 - %t124 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.2474, i64 1, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a2 - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = call i64 @finch.gen.findStruct(ptr %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139) - %t141 = icmp slt i64 %t140, 0 - br i1 %t141, label %then4008, label %endif4010 -then4008: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4011, label %ok4012 -panic4011: - call void @finch_panic(ptr @.str.2475, i64 1704, ptr @.str.2476) - unreachable -ok4012: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 16 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_copy(ptr %a148, ptr %a147) - %t149 = load { ptr, i64, i64 }, ptr %a148 - %t150 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t149, 0 - %t151 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t151, ptr %a152 - call void @finch_str_copy(ptr %a153, ptr %a152) - %t154 = load { ptr, i64, i64 }, ptr %a153 - %t155 = insertvalue %S.gen.StructDef %t150, { ptr, i64, i64 } %t154, 1 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_copy(ptr %a158, ptr %a157) - %t159 = load { ptr, i64, i64 }, ptr %a158 - %t160 = insertvalue %S.gen.StructDef %t155, { ptr, i64, i64 } %t159, 5 - %t161 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t162 = load { ptr, i64, i64 }, ptr %t161 - store { ptr, i64, i64 } %t162, ptr %a163 - call void @finch.copy.arr_str(ptr %a164, ptr %a163) - %t165 = load { ptr, i64, i64 }, ptr %a164 - %t166 = insertvalue %S.gen.StructDef %t160, { ptr, i64, i64 } %t165, 6 - %t167 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t167, ptr %a168 - call void @finch.copy.arr_S_ast_Type(ptr %a169, ptr %a168) - %t170 = load { ptr, i64, i64 }, ptr %a169 - %t171 = insertvalue %S.gen.StructDef %t166, { ptr, i64, i64 } %t170, 7 - %t172 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 4 - %t173 = load i64, ptr %t172 - %t174 = insertvalue %S.gen.StructDef %t171, i64 %t173, 13 - %t175 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 5 - %t176 = load i64, ptr %t175 - %t177 = insertvalue %S.gen.StructDef %t174, i64 %t176, 14 - %t178 = load i64, ptr %t145 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t144 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t178 - store %S.gen.StructDef %t177, ptr %t181 - store i64 %t179, ptr %t145 - %t182 = load ptr, ptr %a1 - %t183 = load ptr, ptr %a1 - %t184 = icmp eq ptr %t183, null - br i1 %t184, label %panic4013, label %ok4014 -panic4013: - call void @finch_panic(ptr @.str.2477, i64 1705, ptr @.str.2478) - unreachable -ok4014: - %t185 = getelementptr inbounds %S.gen.Gen, ptr %t183, i32 0, i32 16 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i32 0, i32 1 - %t187 = load i64, ptr %t186 - %t188 = sub i64 %t187, 1 - call void @finch.gen.resolveStruct(ptr %t182, i64 %t188) - br label %endif4010 -endif4010: - %t189 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2479, i64 6, i64 0 }, 0 - %t190 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_copy(ptr %a192, ptr %a191) - %t193 = load { ptr, i64, i64 }, ptr %a192 - %t194 = insertvalue %S.ast.Type %t189, { ptr, i64, i64 } %t193, 2 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_copy(ptr %a197, ptr %a196) - %t198 = load { ptr, i64, i64 }, ptr %a197 - %t199 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t198, 3 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Template(ptr %a50) - ret %S.ast.Type %t199 -} - -define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) { -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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i64, align 16 - %a61 = alloca i64, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a85 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca %S.gen.FnSig, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %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 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca %S.ast.Type, align 16 - %a327 = alloca %S.ast.Node, align 16 - %a328 = alloca %S.ast.Node, align 16 - %a330 = alloca %S.ast.Node, align 16 - %a335 = alloca i64, align 16 - %a357 = alloca %S.ast.Type, align 16 - %a361 = alloca %S.ast.Type, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.gen.FnSig, align 16 - %a453 = alloca %S.gen.FnSig, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4015, label %ok4016 -panic4015: - call void @finch_panic(ptr @.str.2480, i64 1712, ptr @.str.2481) - unreachable -ok4016: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4017, label %inrange4018 -range4017: - call void @finch_panic_index(ptr @.str.2482, i64 1712, i64 %t9, i64 %t11) - unreachable -inrange4018: - %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.2483, 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) - store { ptr, i64, i64 } %t25, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2484, i64 1, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then4019, label %else4020 -then4019: - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - %t51 = call i64 @finch.gen.findMethod(ptr %t44, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t50) - store i64 %t51, ptr %a52 - %t53 = load i64, ptr %a52 - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4022, label %endif4024 -then4022: - %t55 = load i64, ptr %a52 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t55 -endif4024: - br label %endif4021 -else4020: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t58 = load { ptr, i64, i64 }, ptr %t57 - %t59 = load { ptr, i64, i64 }, ptr %a39 - %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t58, { ptr, i64, i64 } %t59) - store i64 %t60, ptr %a61 - %t62 = load i64, ptr %a61 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then4025, label %endif4027 -then4025: - %t64 = load i64, ptr %a61 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t64 -endif4027: - br label %endif4021 -endif4021: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4028, label %ok4029 -panic4028: - call void @finch_panic(ptr @.str.2485, i64 1725, ptr @.str.2486) - unreachable -ok4029: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 0 - %t68 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t69 = load i64, ptr %t68 - %t70 = load { ptr, i64, i64 }, ptr %t67 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 %t69, %t71 - br i1 %t72, label %range4030, label %inrange4031 -range4030: - call void @finch_panic_index(ptr @.str.2487, i64 1725, i64 %t69, i64 %t71) - unreachable -inrange4031: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Program, ptr %t73, i64 %t69 - %t75 = getelementptr inbounds %S.ast.Program, ptr %t74, i32 0, i32 8 - %t76 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t77 = load i64, ptr %t76 - %t78 = load { ptr, i64, i64 }, ptr %t75 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 %t77, %t79 - br i1 %t80, label %range4032, label %inrange4033 -range4032: - call void @finch_panic_index(ptr @.str.2488, i64 1725, i64 %t77, i64 %t79) - unreachable -inrange4033: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t77 - %t83 = load %S.ast.Node, ptr %t82 - store %S.ast.Node %t83, ptr %a84 - call void @finch.copy.S_ast_Node(ptr %a85, ptr %a84) - %t86 = load %S.ast.Node, ptr %a85 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t92, 0 - %t94 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = insertvalue %S.gen.FnSig %t93, { ptr, i64, i64 } %t97, 1 - %t99 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t100 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_copy(ptr %a102, ptr %a101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - %t104 = insertvalue %S.gen.FnSig %t98, { ptr, i64, i64 } %t103, 3 - %t105 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - call void @finch.copy.arr_str(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = insertvalue %S.gen.FnSig %t104, { ptr, i64, i64 } %t109, 6 - %t111 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch.copy.arr_S_ast_Type(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.FnSig %t110, { ptr, i64, i64 } %t114, 7 - %t116 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_copy(ptr %a118, ptr %a117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - %t120 = insertvalue %S.gen.FnSig %t115, { ptr, i64, i64 } %t119, 8 - %t121 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 7 - %t122 = load i1, ptr %t121 - %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 9 - %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 - %t125 = load i1, ptr %t124 - %t126 = insertvalue %S.gen.FnSig %t123, i1 %t125, 10 - %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t128 = load i64, ptr %t127 - %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 16 - %t130 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.FnSig %t129, i64 %t131, 17 - store %S.gen.FnSig %t132, ptr %a133 - %t134 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t135) - store { ptr, i64, i64 } { ptr @.str.2489, i64 7, i64 0 }, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.2490, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = load { ptr, i64, i64 }, ptr %a39 - %t148 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t146, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t146, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - %t155 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t156 = load { ptr, i64, i64 }, ptr %t155 - store { ptr, i64, i64 } %t154, ptr %t155 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i32 0, i32 1 - %t160 = load i64, ptr %t159 - %t161 = icmp sgt i64 %t160, 0 - br i1 %t161, label %then4034, label %endif4036 -then4034: - %t162 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 1 - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_copy(ptr %a166, ptr %a165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - %t168 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t167, ptr %t164 - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t171 = load { ptr, i64, i64 }, ptr %t170 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 2 - store { ptr, i64, i64 } %t171, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %t172 - store { ptr, i64, i64 } %t175, ptr %t172 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2491, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a180 - %t184 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t183, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t183, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t190, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t195) - store { ptr, i64, i64 } { ptr @.str.2492, i64 7, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t201, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.2493, i64 1, i64 0 }, ptr %a204 - call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) - store { ptr, i64, i64 } %t201, ptr %a205 - call void @finch_str_drop(ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a202 - %t207 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t206, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t206, ptr %a213 - call void @finch_str_drop(ptr %a213) - store { ptr, i64, i64 } %t209, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.2494, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } %t220, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t220, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t227, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_drop(ptr %a230) - br label %endif4036 -endif4036: - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic4037, label %ok4038 -panic4037: - call void @finch_panic(ptr @.str.2495, i64 1734, ptr @.str.2496) - unreachable -ok4038: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 18 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch.copy.arr_str(ptr %a236, ptr %a235) - %t237 = load { ptr, i64, i64 }, ptr %a236 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic4039, label %ok4040 -panic4039: - call void @finch_panic(ptr @.str.2497, i64 1735, ptr @.str.2498) - unreachable -ok4040: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 19 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - call void @finch.copy.arr_S_ast_Type(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t245, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = icmp eq ptr %t247, null - br i1 %t248, label %panic4041, label %ok4042 -panic4041: - call void @finch_panic(ptr @.str.2499, i64 1736, ptr @.str.2500) - unreachable -ok4042: - %t249 = getelementptr inbounds %S.gen.Gen, ptr %t247, i32 0, i32 14 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - call void @finch_str_copy(ptr %a252, ptr %a251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic4043, label %ok4044 -panic4043: - call void @finch_panic(ptr @.str.2501, i64 1737, ptr @.str.2502) - unreachable -ok4044: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 20 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic4045, label %ok4046 -panic4045: - call void @finch_panic(ptr @.str.2503, i64 1738, ptr @.str.2504) - unreachable -ok4046: - %t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 18 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch.copy.arr_str(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t270, ptr %t267 - store { ptr, i64, i64 } %t271, ptr %a272 - call void @finch.drop.arr_str(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a3 - %t274 = load ptr, ptr %a1 - %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic4047, label %ok4048 -panic4047: - call void @finch_panic(ptr @.str.2505, i64 1739, ptr @.str.2506) - unreachable -ok4048: - %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 19 - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch.copy.arr_S_ast_Type(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch.drop.arr_S_ast_Type(ptr %a281) - %t282 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - %t284 = load ptr, ptr %a1 - %t285 = icmp eq ptr %t284, null - br i1 %t285, label %panic4049, label %ok4050 -panic4049: - call void @finch_panic(ptr @.str.2507, i64 1740, ptr @.str.2508) - unreachable -ok4050: - %t286 = getelementptr inbounds %S.gen.Gen, ptr %t284, i32 0, i32 14 - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_copy(ptr %a288, ptr %a287) - %t289 = load { ptr, i64, i64 }, ptr %a288 - %t290 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t289, ptr %t286 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } { ptr @.str.2509, i64 17, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.2510, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - %t303 = load ptr, ptr %a1 - %t304 = icmp eq ptr %t303, null - br i1 %t304, label %panic4051, label %ok4052 -panic4051: - call void @finch_panic(ptr @.str.2511, i64 1741, ptr @.str.2512) - unreachable -ok4052: - %t305 = getelementptr inbounds %S.gen.Gen, ptr %t303, i32 0, i32 20 - %t306 = load { ptr, i64, i64 }, ptr %t305 - store { ptr, i64, i64 } %t302, ptr %t305 - store { ptr, i64, i64 } %t306, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = load ptr, ptr %a1 - %t309 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = load %S.ast.Node, ptr %a87 - %t312 = call %S.ast.Type @finch.gen.resolve(ptr %t308, %S.ast.Type %t310, %S.ast.Node %t311) - %t313 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 12 - %t314 = load %S.ast.Type, ptr %t313 - store %S.ast.Type %t312, ptr %t313 - store %S.ast.Type %t314, ptr %a315 - call void @finch.drop.S_ast_Type(ptr %a315) - %t316 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = sub i64 %t319, 1 - %t321 = load { ptr, i64, i64 }, ptr %t316 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range4053, label %inrange4054 -range4053: - call void @finch_panic_index(ptr @.str.2513, i64 1743, i64 %t320, i64 %t322) - unreachable -inrange4054: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 - %t326 = load %S.ast.Node, ptr %t325 - store %S.ast.Node %t326, ptr %a327 - call void @finch.copy.S_ast_Node(ptr %a328, ptr %a327) - %t329 = load %S.ast.Node, ptr %a328 - store %S.ast.Node %t329, ptr %a330 - %t331 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = sub i64 %t333, 1 - store i64 0, ptr %a335 - br label %for.cond4055 -for.cond4055: - %t336 = load i64, ptr %a335 - %t337 = icmp slt i64 %t336, %t334 - br i1 %t337, label %for.body4056, label %for.end4058 -for.body4056: - %t338 = load ptr, ptr %a1 - %t339 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t340 = load i64, ptr %a335 - %t341 = load { ptr, i64, i64 }, ptr %t339 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range4059, label %inrange4060 -range4059: - call void @finch_panic_index(ptr @.str.2514, i64 1745, i64 %t340, i64 %t342) - unreachable -inrange4060: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Node, ptr %t344, i64 %t340 - %t346 = getelementptr inbounds %S.ast.Node, ptr %t345, i32 0, i32 5 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t349 = load i64, ptr %a335 - %t350 = load { ptr, i64, i64 }, ptr %t348 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range4061, label %inrange4062 -range4061: - call void @finch_panic_index(ptr @.str.2515, i64 1745, i64 %t349, i64 %t351) - unreachable -inrange4062: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i64 %t349 - %t355 = load %S.ast.Node, ptr %t354 - %t356 = call %S.ast.Type @finch.gen.resolve(ptr %t338, %S.ast.Type %t347, %S.ast.Node %t355) - store %S.ast.Type %t356, ptr %a357 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 13 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 - %t360 = load %S.ast.Type, ptr %a357 - store %S.ast.Type %t360, ptr %a361 - call void @finch.copy.S_ast_Type(ptr %a362, ptr %a361) - %t363 = load %S.ast.Type, ptr %a362 - %t364 = load i64, ptr %t359 - %t365 = add i64 %t364, 1 - call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t366 = load ptr, ptr %t358 - %t367 = getelementptr inbounds %S.ast.Type, ptr %t366, i64 %t364 - store %S.ast.Type %t363, ptr %t367 - store i64 %t365, ptr %t359 - %t368 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 14 - %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 - %t370 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t371 = load i64, ptr %a335 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4063, label %inrange4064 -range4063: - call void @finch_panic_index(ptr @.str.2516, i64 1747, i64 %t371, i64 %t373) - unreachable -inrange4064: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds %S.ast.Node, ptr %t375, i64 %t371 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i32 0, i32 1 - %t378 = load { ptr, i64, i64 }, ptr %t377 - store { ptr, i64, i64 } %t378, ptr %a379 - call void @finch_str_copy(ptr %a380, ptr %a379) - %t381 = load { ptr, i64, i64 }, ptr %a380 - %t382 = load i64, ptr %t369 - %t383 = add i64 %t382, 1 - call void @finch_arr_reserve(ptr %t368, i64 %t383, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t384 = load ptr, ptr %t368 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t382 - store { ptr, i64, i64 } %t381, ptr %t385 - store i64 %t383, ptr %t369 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 15 - %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i32 0, i32 1 - %t388 = load ptr, ptr %a1 - %t389 = load %S.ast.Type, ptr %a357 - %t390 = call i1 @finch.gen.owning(ptr %t388, %S.ast.Type %t389) - br label %logic.from4065 -logic.from4065: - br i1 %t390, label %logic.rhs4066, label %logic.end4067 -logic.rhs4066: - %t391 = load ptr, ptr %a1 - %t392 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t393 = load i64, ptr %a335 - %t394 = load { ptr, i64, i64 }, ptr %t392 - %t395 = extractvalue { ptr, i64, i64 } %t394, 1 - %t396 = icmp uge i64 %t393, %t395 - br i1 %t396, label %range4068, label %inrange4069 -range4068: - call void @finch_panic_index(ptr @.str.2517, i64 1748, i64 %t393, i64 %t395) - unreachable -inrange4069: - %t397 = extractvalue { ptr, i64, i64 } %t394, 0 - %t398 = getelementptr inbounds %S.ast.Node, ptr %t397, i64 %t393 - %t399 = getelementptr inbounds %S.ast.Node, ptr %t398, i32 0, i32 1 - %t400 = load { ptr, i64, i64 }, ptr %t399 - %t401 = load %S.ast.Node, ptr %a330 - %t402 = call i1 @finch.gen.mutates(ptr %t391, { ptr, i64, i64 } %t400, %S.ast.Node %t401) - %t403 = xor i1 %t402, true - br label %logic.rend4070 -logic.rend4070: - br label %logic.end4067 -logic.end4067: - %t404 = phi i1 [ false, %logic.from4065 ], [ %t403, %logic.rend4070 ] - %t405 = load i64, ptr %t387 - %t406 = add i64 %t405, 1 - call void @finch_arr_reserve(ptr %t386, i64 %t406, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t407 = load ptr, ptr %t386 - %t408 = getelementptr inbounds i1, ptr %t407, i64 %t405 - store i1 %t404, ptr %t408 - store i64 %t406, ptr %t387 - call void @finch.drop.S_ast_Type(ptr %a357) - br label %for.step4057 -for.step4057: - %t409 = load i64, ptr %a335 - %t410 = add i64 %t409, 1 - store i64 %t410, ptr %a335 - br label %for.cond4055 -for.end4058: - %t411 = load { ptr, i64, i64 }, ptr %a238 - %t412 = load ptr, ptr %a1 - %t413 = icmp eq ptr %t412, null - br i1 %t413, label %panic4071, label %ok4072 -panic4071: - call void @finch_panic(ptr @.str.2518, i64 1750, ptr @.str.2519) - unreachable -ok4072: - %t414 = getelementptr inbounds %S.gen.Gen, ptr %t412, i32 0, i32 18 - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch.copy.arr_str(ptr %a416, ptr %a415) - %t417 = load { ptr, i64, i64 }, ptr %a416 - %t418 = load { ptr, i64, i64 }, ptr %t414 - store { ptr, i64, i64 } %t417, ptr %t414 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch.drop.arr_str(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a246 - %t421 = load ptr, ptr %a1 - %t422 = icmp eq ptr %t421, null - br i1 %t422, label %panic4073, label %ok4074 -panic4073: - call void @finch_panic(ptr @.str.2520, i64 1751, ptr @.str.2521) - unreachable -ok4074: - %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 19 - store { ptr, i64, i64 } %t420, ptr %a424 - call void @finch.copy.arr_S_ast_Type(ptr %a425, ptr %a424) - %t426 = load { ptr, i64, i64 }, ptr %a425 - %t427 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t426, ptr %t423 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch.drop.arr_S_ast_Type(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a254 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic4075, label %ok4076 -panic4075: - call void @finch_panic(ptr @.str.2522, i64 1752, ptr @.str.2523) - unreachable -ok4076: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 14 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_copy(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a262 - %t439 = load ptr, ptr %a1 - %t440 = icmp eq ptr %t439, null - br i1 %t440, label %panic4077, label %ok4078 -panic4077: - call void @finch_panic(ptr @.str.2524, i64 1753, ptr @.str.2525) - unreachable -ok4078: - %t441 = getelementptr inbounds %S.gen.Gen, ptr %t439, i32 0, i32 20 - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - %t445 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t444, ptr %t441 - store { ptr, i64, i64 } %t445, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic4079, label %ok4080 -panic4079: - call void @finch_panic(ptr @.str.2526, i64 1754, ptr @.str.2527) - unreachable -ok4080: - %t449 = getelementptr inbounds %S.gen.Gen, ptr %t447, i32 0, i32 15 - %t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i32 0, i32 1 - %t451 = load %S.gen.FnSig, ptr %a133 - store %S.gen.FnSig %t451, ptr %a452 - call void @finch.copy.S_gen_FnSig(ptr %a453, ptr %a452) - %t454 = load %S.gen.FnSig, ptr %a453 - %t455 = load i64, ptr %t450 - %t456 = add i64 %t455, 1 - call void @finch_arr_reserve(ptr %t449, i64 %t456, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t457 = load ptr, ptr %t449 - %t458 = getelementptr inbounds %S.gen.FnSig, ptr %t457, i64 %t455 - store %S.gen.FnSig %t454, ptr %t458 - store i64 %t456, ptr %t450 - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic4081, label %ok4082 -panic4081: - call void @finch_panic(ptr @.str.2528, i64 1755, ptr @.str.2529) - unreachable -ok4082: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 15 - %t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i32 0, i32 1 - %t463 = load i64, ptr %t462 - %t464 = sub i64 %t463, 1 - call void @finch.drop.S_ast_Node(ptr %a330) - call void @finch_str_drop(ptr %a262) - call void @finch_str_drop(ptr %a254) - call void @finch.drop.arr_S_ast_Type(ptr %a246) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_gen_FnSig(ptr %a133) - call void @finch.drop.S_ast_Node(ptr %a87) - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t464 -} - -define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) { -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 - %a84 = alloca %S.ast.Type, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca %S.gen.StructDef, align 16 - %a231 = alloca %S.gen.StructDef, align 16 - %a233 = alloca %S.gen.StructDef, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.2530, 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.from4083 -logic.from4083: - br i1 %t11, label %logic.rhs4084, label %logic.end4085 -logic.rhs4084: - %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.rend4086 -logic.rend4086: - br label %logic.end4085 -logic.end4085: - %t16 = phi i1 [ false, %logic.from4083 ], [ %t15, %logic.rend4086 ] - br label %logic.from4087 -logic.from4087: - br i1 %t16, label %logic.rhs4088, label %logic.end4089 -logic.rhs4088: - %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.rend4090 -logic.rend4090: - br label %logic.end4089 -logic.end4089: - %t21 = phi i1 [ false, %logic.from4087 ], [ %t20, %logic.rend4090 ] - br label %logic.from4091 -logic.from4091: - br i1 %t21, label %logic.rhs4092, label %logic.end4093 -logic.rhs4092: - %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.cond4094 -find.cond4094: - %t29 = load i64, ptr %a28 - %t30 = icmp slt i64 %t29, %t26 - br i1 %t30, label %find.body4095, label %find.end4098 -find.body4095: - %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.hit4096, label %find.next4097 -find.hit4096: - store i64 %t29, ptr %a25 - br label %find.end4098 -find.next4097: - %t37 = add i64 %t29, 1 - store i64 %t37, ptr %a28 - br label %find.cond4094 -find.end4098: - %t38 = load i64, ptr %a25 - %t39 = icmp sge i64 %t38, 0 - br label %logic.rend4099 -logic.rend4099: - br label %logic.end4093 -logic.end4093: - %t40 = phi i1 [ false, %logic.from4091 ], [ %t39, %logic.rend4099 ] - br i1 %t40, label %then4100, label %endif4102 -then4100: - %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.cond4103 -find.cond4103: - %t48 = load i64, ptr %a47 - %t49 = icmp slt i64 %t48, %t45 - br i1 %t49, label %find.body4104, label %find.end4107 -find.body4104: - %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.hit4105, label %find.next4106 -find.hit4105: - store i64 %t48, ptr %a44 - br label %find.end4107 -find.next4106: - %t56 = add i64 %t48, 1 - store i64 %t56, ptr %a47 - br label %find.cond4103 -find.end4107: - %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 %panic4108, label %ok4109 -panic4108: - call void @finch_panic(ptr @.str.2531, i64 1762, ptr @.str.2532) - unreachable -ok4109: - %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 %range4110, label %inrange4111 -range4110: - call void @finch_panic_index(ptr @.str.2533, i64 1762, i64 %t62, i64 %t64) - unreachable -inrange4111: - %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 %then4112, label %endif4114 -then4112: - %t70 = load %S.ast.Type, ptr %a3 - %t71 = load ptr, ptr %a5 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic4115, label %ok4116 -panic4115: - call void @finch_panic(ptr @.str.2534, i64 1763, ptr @.str.2535) - unreachable -ok4116: - %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 %range4117, label %inrange4118 -range4117: - call void @finch_panic_index(ptr @.str.2536, i64 1763, i64 %t74, i64 %t76) - unreachable -inrange4118: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 - store %S.ast.Type %t70, ptr %a80 - call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80) - %t82 = load %S.ast.Type, ptr %a81 - %t83 = load %S.ast.Type, ptr %t79 - store %S.ast.Type %t82, ptr %t79 - store %S.ast.Type %t83, ptr %a84 - call void @finch.drop.S_ast_Type(ptr %a84) - %t85 = load ptr, ptr %a5 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic4119, label %ok4120 -panic4119: - call void @finch_panic(ptr @.str.2537, i64 1764, ptr @.str.2538) - unreachable -ok4120: - %t87 = getelementptr inbounds %S.gen.Binds, ptr %t85, i32 0, i32 1 - %t88 = load i64, ptr %a58 - %t89 = load { ptr, i64, i64 }, ptr %t87 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = icmp uge i64 %t88, %t90 - br i1 %t91, label %range4121, label %inrange4122 -range4121: - call void @finch_panic_index(ptr @.str.2539, i64 1764, i64 %t88, i64 %t90) - unreachable -inrange4122: - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = getelementptr inbounds i1, ptr %t92, i64 %t88 - store i1 true, ptr %t93 - br label %endif4114 -endif4114: - ret void -endif4102: - %t94 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.2540, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br label %logic.from4123 -logic.from4123: - br i1 %t99, label %logic.end4125, label %logic.rhs4124 -logic.rhs4124: - %t100 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.2541, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend4126 -logic.rend4126: - br label %logic.end4125 -logic.end4125: - %t106 = phi i1 [ true, %logic.from4123 ], [ %t105, %logic.rend4126 ] - br label %logic.from4127 -logic.from4127: - br i1 %t106, label %logic.end4129, label %logic.rhs4128 -logic.rhs4128: - %t107 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2542, i64 5, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend4130 -logic.rend4130: - br label %logic.end4129 -logic.end4129: - %t113 = phi i1 [ true, %logic.from4127 ], [ %t112, %logic.rend4130 ] - br label %logic.from4131 -logic.from4131: - br i1 %t113, label %logic.rhs4132, label %logic.end4133 -logic.rhs4132: - %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp sgt i64 %t116, 0 - br label %logic.rend4134 -logic.rend4134: - br label %logic.end4133 -logic.end4133: - %t118 = phi i1 [ false, %logic.from4131 ], [ %t117, %logic.rend4134 ] - br label %logic.from4135 -logic.from4135: - br i1 %t118, label %logic.rhs4136, label %logic.end4137 -logic.rhs4136: - %t119 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t122, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.rend4138 -logic.rend4138: - br label %logic.end4137 -logic.end4137: - %t127 = phi i1 [ false, %logic.from4135 ], [ %t126, %logic.rend4138 ] - br label %logic.from4139 -logic.from4139: - br i1 %t127, label %logic.rhs4140, label %logic.end4141 -logic.rhs4140: - %t128 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load i64, ptr %t129 - %t131 = icmp sgt i64 %t130, 0 - br label %logic.rend4142 -logic.rend4142: - br label %logic.end4141 -logic.end4141: - %t132 = phi i1 [ false, %logic.from4139 ], [ %t131, %logic.rend4142 ] - br i1 %t132, label %then4143, label %endif4145 -then4143: - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 0, %t136 - br i1 %t137, label %range4146, label %inrange4147 -range4146: - call void @finch_panic_index(ptr @.str.2543, i64 1769, i64 0, i64 %t136) - unreachable -inrange4147: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i64 0 - %t140 = load %S.ast.Type, ptr %t139 - %t141 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t142 = load { ptr, i64, i64 }, ptr %t141 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 0, %t143 - br i1 %t144, label %range4148, label %inrange4149 -range4148: - call void @finch_panic_index(ptr @.str.2544, i64 1769, i64 0, i64 %t143) - unreachable -inrange4149: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 0 - %t147 = load %S.ast.Type, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %a4 - %t149 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t133, %S.ast.Type %t140, %S.ast.Type %t147, { ptr, i64, i64 } %t148, ptr %t149) - ret void -endif4145: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t151 = load { ptr, i64, i64 }, ptr %t150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2545, i64 3, i64 0 }, ptr %a153 - %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) - %t155 = icmp ne i32 %t154, 0 - br label %logic.from4150 -logic.from4150: - br i1 %t155, label %logic.rhs4151, label %logic.end4152 -logic.rhs4151: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.2546, i64 3, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.rend4153 -logic.rend4153: - br label %logic.end4152 -logic.end4152: - %t162 = phi i1 [ false, %logic.from4150 ], [ %t161, %logic.rend4153 ] - br i1 %t162, label %then4154, label %endif4156 -then4154: - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = extractvalue { ptr, i64, i64 } %t165, 1 - %t167 = icmp uge i64 0, %t166 - br i1 %t167, label %range4157, label %inrange4158 -range4157: - call void @finch_panic_index(ptr @.str.2547, i64 1773, i64 0, i64 %t166) - unreachable -inrange4158: - %t168 = extractvalue { ptr, i64, i64 } %t165, 0 - %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range4159, label %inrange4160 -range4159: - call void @finch_panic_index(ptr @.str.2548, i64 1773, i64 0, i64 %t173) - unreachable -inrange4160: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i64 0 - %t177 = load %S.ast.Type, ptr %t176 - %t178 = load { ptr, i64, i64 }, ptr %a4 - %t179 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t163, %S.ast.Type %t170, %S.ast.Type %t177, { ptr, i64, i64 } %t178, ptr %t179) - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 1, %t183 - br i1 %t184, label %range4161, label %inrange4162 -range4161: - call void @finch_panic_index(ptr @.str.2549, i64 1774, i64 1, i64 %t183) - unreachable -inrange4162: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i64 1 - %t187 = load %S.ast.Type, ptr %t186 - %t188 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 1, %t190 - br i1 %t191, label %range4163, label %inrange4164 -range4163: - call void @finch_panic_index(ptr @.str.2550, i64 1774, i64 1, i64 %t190) - unreachable -inrange4164: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i64 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = load { ptr, i64, i64 }, ptr %a4 - %t196 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t180, %S.ast.Type %t187, %S.ast.Type %t194, { ptr, i64, i64 } %t195, ptr %t196) - ret void -endif4156: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t198 = load { ptr, i64, i64 }, ptr %t197 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2551, i64 5, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from4165 -logic.from4165: - br i1 %t202, label %logic.rhs4166, label %logic.end4167 -logic.rhs4166: - %t203 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - %t206 = icmp sgt i64 %t205, 0 - br label %logic.rend4168 -logic.rend4168: - br label %logic.end4167 -logic.end4167: - %t207 = phi i1 [ false, %logic.from4165 ], [ %t206, %logic.rend4168 ] - br label %logic.from4169 -logic.from4169: - br i1 %t207, label %logic.rhs4170, label %logic.end4171 -logic.rhs4170: - %t208 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t209, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2552, i64 6, i64 0 }, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br label %logic.rend4172 -logic.rend4172: - br label %logic.end4171 -logic.end4171: - %t214 = phi i1 [ false, %logic.from4169 ], [ %t213, %logic.rend4172 ] - br i1 %t214, label %then4173, label %endif4175 -then4173: - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic4176, label %ok4177 -panic4176: - call void @finch_panic(ptr @.str.2553, i64 1778, ptr @.str.2554) - unreachable -ok4177: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 16 - %t218 = load ptr, ptr %a1 - %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t220 = load { ptr, i64, i64 }, ptr %t219 - %t221 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = call i64 @finch.gen.findStruct(ptr %t218, { ptr, i64, i64 } %t220, { ptr, i64, i64 } %t222) - %t224 = load { ptr, i64, i64 }, ptr %t217 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 %t223, %t225 - br i1 %t226, label %range4178, label %inrange4179 -range4178: - call void @finch_panic_index(ptr @.str.2555, i64 1778, i64 %t223, i64 %t225) - unreachable -inrange4179: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.gen.StructDef, ptr %t227, i64 %t223 - %t229 = load %S.gen.StructDef, ptr %t228 - store %S.gen.StructDef %t229, ptr %a230 - call void @finch.copy.S_gen_StructDef(ptr %a231, ptr %a230) - %t232 = load %S.gen.StructDef, ptr %a231 - store %S.gen.StructDef %t232, ptr %a233 - %t234 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 5 - %t235 = load { ptr, i64, i64 }, ptr %t234 - %t236 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } %t235, ptr %a238 - store { ptr, i64, i64 } %t237, ptr %a239 - %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) - %t241 = icmp ne i32 %t240, 0 - br label %logic.from4180 -logic.from4180: - br i1 %t241, label %logic.rhs4181, label %logic.end4182 -logic.rhs4181: - %t242 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i32 0, i32 1 - %t247 = load i64, ptr %t246 - %t248 = icmp eq i64 %t244, %t247 - br label %logic.rend4183 -logic.rend4183: - br label %logic.end4182 -logic.end4182: - %t249 = phi i1 [ false, %logic.from4180 ], [ %t248, %logic.rend4183 ] - br i1 %t249, label %then4184, label %endif4186 -then4184: - %t250 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1 - %t252 = load i64, ptr %t251 - store i64 0, ptr %a253 - br label %for.cond4187 -for.cond4187: - %t254 = load i64, ptr %a253 - %t255 = icmp slt i64 %t254, %t252 - br i1 %t255, label %for.body4188, label %for.end4190 -for.body4188: - %t256 = load ptr, ptr %a1 - %t257 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t258 = load i64, ptr %a253 - %t259 = load { ptr, i64, i64 }, ptr %t257 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range4191, label %inrange4192 -range4191: - call void @finch_panic_index(ptr @.str.2556, i64 1781, i64 %t258, i64 %t260) - unreachable -inrange4192: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i64 %t258 - %t264 = load %S.ast.Type, ptr %t263 - %t265 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t266 = load i64, ptr %a253 - %t267 = load { ptr, i64, i64 }, ptr %t265 - %t268 = extractvalue { ptr, i64, i64 } %t267, 1 - %t269 = icmp uge i64 %t266, %t268 - br i1 %t269, label %range4193, label %inrange4194 -range4193: - call void @finch_panic_index(ptr @.str.2557, i64 1781, i64 %t266, i64 %t268) - unreachable -inrange4194: - %t270 = extractvalue { ptr, i64, i64 } %t267, 0 - %t271 = getelementptr inbounds %S.ast.Type, ptr %t270, i64 %t266 - %t272 = load %S.ast.Type, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %a4 - %t274 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t256, %S.ast.Type %t264, %S.ast.Type %t272, { ptr, i64, i64 } %t273, ptr %t274) - br label %for.step4189 -for.step4189: - %t275 = load i64, ptr %a253 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a253 - br label %for.cond4187 -for.end4190: - br label %endif4186 -endif4186: - call void @finch.drop.S_gen_StructDef(ptr %a233) - br label %endif4175 -endif4175: - ret void -} - -define internal void @finch.drop.arr_S_gen_Val(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4271 -n.cond4271: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4272, label %n.end4273 -n.body4272: - %t7 = getelementptr inbounds %S.gen.Val, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Val(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4271 -n.end4273: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Binds(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_bool(ptr %t2) - ret void -} - -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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a137 = alloca %S.gen.Binds, align 16 - %a141 = alloca i64, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca i64, align 16 - %a167 = alloca i64, align 16 - %a182 = alloca %S.gen.Val, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca %S.gen.Val, align 16 - %a228 = alloca %S.gen.Val, align 16 - %a255 = alloca i64, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca i64, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a321 = alloca %S.gen.FnSig, align 16 - %a323 = alloca %S.gen.FnSig, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca i64, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca %S.gen.Val, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.gen.Val, align 16 - %a414 = alloca i64, align 16 - %a422 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic4195, label %ok4196 -panic4195: - call void @finch_panic(ptr @.str.2558, i64 1789, ptr @.str.2559) - unreachable -ok4196: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a3 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4197, label %inrange4198 -range4197: - call void @finch_panic_index(ptr @.str.2560, i64 1789, i64 %t9, i64 %t11) - unreachable -inrange4198: - %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 %panic4199, label %ok4200 -panic4199: - call void @finch_panic(ptr @.str.2561, i64 1790, ptr @.str.2562) - unreachable -ok4200: - %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 %range4201, label %inrange4202 -range4201: - call void @finch_panic_index(ptr @.str.2563, i64 1790, i64 %t24, i64 %t26) - unreachable -inrange4202: - %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 %range4203, label %inrange4204 -range4203: - call void @finch_panic_index(ptr @.str.2564, i64 1790, i64 %t32, i64 %t34) - unreachable -inrange4204: - %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 %then4205, label %endif4207 -then4205: - %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 %then4208, label %endif4210 -then4208: - %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.2565, 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) - store { ptr, i64, i64 } %t73, ptr %a82 - call void @finch_str_drop(ptr %a82) - store { ptr, i64, i64 } %t78, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2566, i64 27, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i32 0, i32 1 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - %t93 = load i64, ptr %t92 - call void @finch_str_from_int(ptr %a94, i64 %t93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t89, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t89, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif4210 -endif4210: - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t104 = getelementptr inbounds %S.ast.Type, ptr %t103, i32 0, i32 1 - store i64 0, ptr %a105 - br label %each.cond4211 -each.cond4211: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body4212, label %each.end4214 -each.body4212: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.ast.Type, ptr %t110, i64 %t108 - %t112 = load %S.ast.Type, ptr %t111 - store %S.ast.Type %t112, ptr %a113 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = load %S.ast.Type, ptr %a113 - %t117 = load %S.ast.Node, ptr %a2 - %t118 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t116, %S.ast.Node %t117) - %t119 = load i64, ptr %t114 - %t120 = add i64 %t119, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t120, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t121 = load ptr, ptr %a53 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 %t119 - store %S.ast.Type %t118, ptr %t122 - store i64 %t120, ptr %t114 - br label %each.step4213 -each.step4213: - %t123 = load i64, ptr %a105 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a105 - br label %each.cond4211 -each.end4214: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = load i64, ptr %a3 - %t128 = load { ptr, i64, i64 }, ptr %a53 - %t129 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2567, i64 4, i64 0 }) - %t130 = load %S.ast.Node, ptr %a2 - %t131 = call i64 @finch.gen.instFn(ptr %t126, i64 %t127, { ptr, i64, i64 } %t128, %S.ast.Type %t129, %S.ast.Node %t130) - store %S.ast.Type %t129, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - %t133 = load %S.ast.Node, ptr %a2 - %t134 = load i64, ptr %a4 - %t135 = load { ptr, i64, i64 }, ptr %a5 - %t136 = call %S.gen.Val @finch.gen.callFn(ptr %t125, i64 %t131, %S.ast.Node %t133, i64 %t134, { ptr, i64, i64 } %t135, { ptr, i64, i64 } { ptr @.str.2568, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2569, i64 0, i64 0 }) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t136 -endif4207: - store %S.gen.Binds zeroinitializer, ptr %a137 - %t138 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond4215 -for.cond4215: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body4216, label %for.end4218 -for.body4216: - %t144 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2570, i64 4, i64 0 }) - %t147 = load i64, ptr %t145 - %t148 = add i64 %t147, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t148, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t149 = load ptr, ptr %t144 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 %t147 - store %S.ast.Type %t146, ptr %t150 - store i64 %t148, ptr %t145 - %t151 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t154, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %t151 - %t156 = getelementptr inbounds i1, ptr %t155, i64 %t153 - store i1 false, ptr %t156 - store i64 %t154, ptr %t152 - br label %for.step4217 -for.step4217: - %t157 = load i64, ptr %a141 - %t158 = add i64 %t157, 1 - store i64 %t158, ptr %a141 - br label %for.cond4215 -for.end4218: - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4219, label %ok4220 -panic4219: - call void @finch_panic(ptr @.str.2571, i64 1809, ptr @.str.2572) - unreachable -ok4220: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 11 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 - %t164 = load i64, ptr %t163 - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a47 - store i64 0, ptr %a167 - br label %for.cond4221 -for.cond4221: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body4222, label %for.end4224 -for.body4222: - %t170 = load ptr, ptr %a1 - %t171 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t172 = load i64, ptr %a4 - %t173 = load i64, ptr %a167 - %t174 = add i64 %t172, %t173 - %t175 = load { ptr, i64, i64 }, ptr %t171 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range4225, label %inrange4226 -range4225: - call void @finch_panic_index(ptr @.str.2573, i64 1811, i64 %t174, i64 %t176) - unreachable -inrange4226: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t174 - %t180 = load %S.ast.Node, ptr %t179 - %t181 = call %S.gen.Val @finch.gen.expr(ptr %t170, %S.ast.Node %t180) - store %S.gen.Val %t181, ptr %a182 - %t183 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i32 0, i32 0 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.2574, i64 4, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.from4227 -logic.from4227: - br i1 %t189, label %logic.end4229, label %logic.rhs4228 -logic.rhs4228: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i32 0, i32 0 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.2575, i64 4, i64 0 }, ptr %a194 - %t195 = call i32 @finch_str_eq(ptr %a193, ptr %a194) - %t196 = icmp ne i32 %t195, 0 - br label %logic.rend4230 -logic.rend4230: - br label %logic.end4229 -logic.end4229: - %t197 = phi i1 [ true, %logic.from4227 ], [ %t196, %logic.rend4230 ] - br i1 %t197, label %then4231, label %endif4233 -then4231: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t200 = load i64, ptr %a4 - %t201 = load i64, ptr %a167 - %t202 = add i64 %t200, %t201 - %t203 = load { ptr, i64, i64 }, ptr %t199 - %t204 = extractvalue { ptr, i64, i64 } %t203, 1 - %t205 = icmp uge i64 %t202, %t204 - br i1 %t205, label %range4234, label %inrange4235 -range4234: - call void @finch_panic_index(ptr @.str.2576, i64 1813, i64 %t202, i64 %t204) - unreachable -inrange4235: - %t206 = extractvalue { ptr, i64, i64 } %t203, 0 - %t207 = getelementptr inbounds %S.ast.Node, ptr %t206, i64 %t202 - %t208 = load %S.ast.Node, ptr %t207 - %t209 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2578, i64 2, i64 0 }, ptr %a211 - call void @finch_str_join(ptr %a212, ptr %t209, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.2577, i64 29, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t213, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.2579, i64 5, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t198, %S.ast.Node %t208, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - br label %endif4233 -endif4233: - %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t226 = load %S.gen.Val, ptr %a182 - store %S.gen.Val %t226, ptr %a227 - call void @finch.copy.S_gen_Val(ptr %a228, ptr %a227) - %t229 = load %S.gen.Val, ptr %a228 - %t230 = load i64, ptr %t225 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %a159, i64 %t231, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %a159 - %t233 = getelementptr inbounds %S.gen.Val, ptr %t232, i64 %t230 - store %S.gen.Val %t229, ptr %t233 - store i64 %t231, ptr %t225 - %t234 = load ptr, ptr %a1 - %t235 = load %S.gen.Val, ptr %a182 - call void @finch.gen.hold(ptr %t234, %S.gen.Val %t235) - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 - %t238 = load i64, ptr %a167 - %t239 = load { ptr, i64, i64 }, ptr %t237 - %t240 = extractvalue { ptr, i64, i64 } %t239, 1 - %t241 = icmp uge i64 %t238, %t240 - br i1 %t241, label %range4236, label %inrange4237 -range4236: - call void @finch_panic_index(ptr @.str.2580, i64 1817, i64 %t238, i64 %t240) - unreachable -inrange4237: - %t242 = extractvalue { ptr, i64, i64 } %t239, 0 - %t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238 - %t244 = getelementptr inbounds %S.ast.Node, ptr %t243, i32 0, i32 5 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - call void @finch.gen.bindType(ptr %t236, %S.ast.Type %t245, %S.ast.Type %t247, { ptr, i64, i64 } %t249, ptr %a137) - call void @finch.drop.S_gen_Val(ptr %a182) - br label %for.step4223 -for.step4223: - %t250 = load i64, ptr %a167 - %t251 = add i64 %t250, 1 - store i64 %t251, ptr %a167 - br label %for.cond4221 -for.end4224: - %t252 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i32 0, i32 1 - %t254 = load i64, ptr %t253 - store i64 0, ptr %a255 - br label %for.cond4238 -for.cond4238: - %t256 = load i64, ptr %a255 - %t257 = icmp slt i64 %t256, %t254 - br i1 %t257, label %for.body4239, label %for.end4241 -for.body4239: - %t258 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t259 = load i64, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %t258 - %t261 = extractvalue { ptr, i64, i64 } %t260, 1 - %t262 = icmp uge i64 %t259, %t261 - br i1 %t262, label %range4242, label %inrange4243 -range4242: - call void @finch_panic_index(ptr @.str.2581, i64 1820, i64 %t259, i64 %t261) - unreachable -inrange4243: - %t263 = extractvalue { ptr, i64, i64 } %t260, 0 - %t264 = getelementptr inbounds i1, ptr %t263, i64 %t259 - %t265 = load i1, ptr %t264 - %t266 = xor i1 %t265, true - br i1 %t266, label %then4244, label %endif4246 -then4244: - %t267 = load ptr, ptr %a1 - %t268 = load %S.ast.Node, ptr %a2 - %t269 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t270 = load i64, ptr %a255 - %t271 = load { ptr, i64, i64 }, ptr %t269 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp uge i64 %t270, %t272 - br i1 %t273, label %range4247, label %inrange4248 -range4247: - call void @finch_panic_index(ptr @.str.2583, i64 1821, i64 %t270, i64 %t272) - unreachable -inrange4248: - %t274 = extractvalue { ptr, i64, i64 } %t271, 0 - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i64 %t270 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } { ptr @.str.2582, i64 16, i64 0 }, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.2584, i64 24, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t285, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.2585, i64 10, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - call void @finch.gen.fail(ptr %t267, %S.ast.Node %t268, { ptr, i64, i64 } %t297) - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_drop(ptr %a298) - br label %endif4246 -endif4246: - br label %for.step4240 -for.step4240: - %t299 = load i64, ptr %a255 - %t300 = add i64 %t299, 1 - store i64 %t300, ptr %a255 - br label %for.cond4238 -for.end4241: - %t301 = load ptr, ptr %a1 - %t302 = load i64, ptr %a3 - %t303 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t304 = load { ptr, i64, i64 }, ptr %t303 - %t305 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2586, i64 4, i64 0 }) - %t306 = load %S.ast.Node, ptr %a2 - %t307 = call i64 @finch.gen.instFn(ptr %t301, i64 %t302, { ptr, i64, i64 } %t304, %S.ast.Type %t305, %S.ast.Node %t306) - store %S.ast.Type %t305, ptr %a308 - call void @finch.drop.S_ast_Type(ptr %a308) - store i64 %t307, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = icmp eq ptr %t310, null - br i1 %t311, label %panic4249, label %ok4250 -panic4249: - call void @finch_panic(ptr @.str.2587, i64 1825, ptr @.str.2588) - unreachable -ok4250: - %t312 = getelementptr inbounds %S.gen.Gen, ptr %t310, i32 0, i32 15 - %t313 = load i64, ptr %a309 - %t314 = load { ptr, i64, i64 }, ptr %t312 - %t315 = extractvalue { ptr, i64, i64 } %t314, 1 - %t316 = icmp uge i64 %t313, %t315 - br i1 %t316, label %range4251, label %inrange4252 -range4251: - call void @finch_panic_index(ptr @.str.2589, i64 1825, i64 %t313, i64 %t315) - unreachable -inrange4252: - %t317 = extractvalue { ptr, i64, i64 } %t314, 0 - %t318 = getelementptr inbounds %S.gen.FnSig, ptr %t317, i64 %t313 - %t319 = load %S.gen.FnSig, ptr %t318 - store %S.gen.FnSig %t319, ptr %a320 - call void @finch.copy.S_gen_FnSig(ptr %a321, ptr %a320) - %t322 = load %S.gen.FnSig, ptr %a321 - store %S.gen.FnSig %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load %S.ast.Node, ptr %a2 - %t326 = load %S.gen.FnSig, ptr %a323 - call void @finch.gen.noteCall(ptr %t324, %S.ast.Node %t325, %S.gen.FnSig %t326) - store { ptr, i64, i64 } zeroinitializer, ptr %a327 - %t328 = load i64, ptr %a47 - store i64 0, ptr %a329 - br label %for.cond4253 -for.cond4253: - %t330 = load i64, ptr %a329 - %t331 = icmp slt i64 %t330, %t328 - br i1 %t331, label %for.body4254, label %for.end4256 -for.body4254: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a329 - %t334 = load { ptr, i64, i64 }, ptr %a159 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range4257, label %inrange4258 -range4257: - call void @finch_panic_index(ptr @.str.2590, i64 1829, i64 %t333, i64 %t335) - unreachable -inrange4258: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Val, ptr %t337, i64 %t333 - %t339 = load %S.gen.Val, ptr %t338 - %t340 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t341 = load i64, ptr %a329 - %t342 = load { ptr, i64, i64 }, ptr %t340 - %t343 = extractvalue { ptr, i64, i64 } %t342, 1 - %t344 = icmp uge i64 %t341, %t343 - br i1 %t344, label %range4259, label %inrange4260 -range4259: - call void @finch_panic_index(ptr @.str.2591, i64 1829, i64 %t341, i64 %t343) - unreachable -inrange4260: - %t345 = extractvalue { ptr, i64, i64 } %t342, 0 - %t346 = getelementptr inbounds %S.ast.Type, ptr %t345, i64 %t341 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t349 = load i64, ptr %a4 - %t350 = load i64, ptr %a329 - %t351 = add i64 %t349, %t350 - %t352 = load { ptr, i64, i64 }, ptr %t348 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range4261, label %inrange4262 -range4261: - call void @finch_panic_index(ptr @.str.2592, i64 1829, i64 %t351, i64 %t353) - unreachable -inrange4262: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds %S.ast.Node, ptr %t355, i64 %t351 - %t357 = load %S.ast.Node, ptr %t356 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 14 - %t359 = load i64, ptr %a329 - %t360 = load { ptr, i64, i64 }, ptr %t358 - %t361 = extractvalue { ptr, i64, i64 } %t360, 1 - %t362 = icmp uge i64 %t359, %t361 - br i1 %t362, label %range4263, label %inrange4264 -range4263: - call void @finch_panic_index(ptr @.str.2594, i64 1829, i64 %t359, i64 %t361) - unreachable -inrange4264: - %t363 = extractvalue { ptr, i64, i64 } %t360, 0 - %t364 = getelementptr inbounds { ptr, i64, i64 }, ptr %t363, i64 %t359 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.2593, i64 10, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.2595, i64 1, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call %S.gen.Val @finch.gen.coerce(ptr %t332, %S.gen.Val %t339, %S.ast.Type %t347, %S.ast.Node %t357, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - store %S.gen.Val %t375, ptr %a377 - %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 - %t379 = load ptr, ptr %a1 - %t380 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t381 = load i64, ptr %a329 - %t382 = load { ptr, i64, i64 }, ptr %t380 - %t383 = extractvalue { ptr, i64, i64 } %t382, 1 - %t384 = icmp uge i64 %t381, %t383 - br i1 %t384, label %range4265, label %inrange4266 -range4265: - call void @finch_panic_index(ptr @.str.2596, i64 1830, i64 %t381, i64 %t383) - unreachable -inrange4266: - %t385 = extractvalue { ptr, i64, i64 } %t382, 0 - %t386 = getelementptr inbounds %S.ast.Type, ptr %t385, i64 %t381 - %t387 = load %S.ast.Type, ptr %t386 - %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t379, %S.ast.Type %t387) - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.2597, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = getelementptr inbounds %S.gen.Val, ptr %a377, i32 0, i32 0 - %t395 = load { ptr, i64, i64 }, ptr %t394 - store { ptr, i64, i64 } %t393, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t393, ptr %a399 - call void @finch_str_drop(ptr %a399) - %t400 = load { ptr, i64, i64 }, ptr %a396 - %t401 = load i64, ptr %t378 - %t402 = add i64 %t401, 1 - call void @finch_arr_reserve(ptr %a327, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t403 = load ptr, ptr %a327 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 - store { ptr, i64, i64 } %t400, ptr %t404 - store i64 %t402, ptr %t378 - call void @finch.drop.S_gen_Val(ptr %a377) - br label %for.step4255 -for.step4255: - %t405 = load i64, ptr %a329 - %t406 = add i64 %t405, 1 - store i64 %t406, ptr %a329 - br label %for.cond4253 -for.end4256: - %t407 = load ptr, ptr %a1 - %t408 = load %S.gen.FnSig, ptr %a323 - %t409 = load %S.ast.Node, ptr %a2 - %t410 = load { ptr, i64, i64 }, ptr %a327 - %t411 = load { ptr, i64, i64 }, ptr %a5 - %t412 = call %S.gen.Val @finch.gen.emitCall(ptr %t407, %S.gen.FnSig %t408, %S.ast.Node %t409, { ptr, i64, i64 } %t410, { ptr, i64, i64 } %t411) - store %S.gen.Val %t412, ptr %a413 - store i64 0, ptr %a414 - br label %each.cond4267 -each.cond4267: - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t416 = load i64, ptr %t415 - %t417 = load i64, ptr %a414 - %t418 = icmp slt i64 %t417, %t416 - br i1 %t418, label %each.body4268, label %each.end4270 -each.body4268: - %t419 = load ptr, ptr %a159 - %t420 = getelementptr inbounds %S.gen.Val, ptr %t419, i64 %t417 - %t421 = load %S.gen.Val, ptr %t420 - store %S.gen.Val %t421, ptr %a422 - %t423 = load ptr, ptr %a1 - %t424 = load %S.gen.Val, ptr %a422 - call void @finch.gen.release(ptr %t423, %S.gen.Val %t424) - br label %each.step4269 -each.step4269: - %t425 = load i64, ptr %a414 - %t426 = add i64 %t425, 1 - store i64 %t426, ptr %a414 - br label %each.cond4267 -each.end4270: - %t427 = load ptr, ptr %a1 - %t428 = load i64, ptr %a165 - call void @finch.gen.heldEnd(ptr %t427, i64 %t428) - %t429 = load %S.gen.Val, ptr %a413 - call void @finch.drop.arr_str(ptr %a327) - call void @finch.drop.S_gen_FnSig(ptr %a323) - call void @finch.drop.arr_S_gen_Val(ptr %a159) - call void @finch.drop.S_gen_Binds(ptr %a137) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t429 -} - -define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { -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.cond4282 -n.cond4282: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4283, label %n.end4284 -n.body4283: - %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.cond4282 -n.end4284: - 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 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4274, label %ok4275 -panic4274: - call void @finch_panic(ptr @.str.2598, i64 1843, ptr @.str.2599) - unreachable -ok4275: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 26 - %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 %panic4276, label %ok4277 -panic4276: - call void @finch_panic(ptr @.str.2600, i64 1843, ptr @.str.2601) - unreachable -ok4277: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 16 - %t10 = load i64, ptr %a2 - %t11 = load { ptr, i64, i64 }, ptr %t9 - %t12 = extractvalue { ptr, i64, i64 } %t11, 1 - %t13 = icmp uge i64 %t10, %t12 - br i1 %t13, label %range4278, label %inrange4279 -range4278: - call void @finch_panic_index(ptr @.str.2602, i64 1843, i64 %t10, i64 %t12) - unreachable -inrange4279: - %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.missing4280, label %map.found4281 -map.missing4280: - 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.2603, i64 1843, ptr %a21) - unreachable -map.found4281: - %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 %panic4285, label %ok4286 -panic4285: - call void @finch_panic(ptr @.str.2604, i64 1844, ptr @.str.2605) - unreachable -ok4286: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 16 - %t35 = load i64, ptr %a2 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4287, label %inrange4288 -range4287: - call void @finch_panic_index(ptr @.str.2606, i64 1844, i64 %t35, i64 %t37) - unreachable -inrange4288: - %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.cond4289 -each.cond4289: - %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.body4290, label %each.end4292 -each.body4290: - %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 %then4293, label %endif4295 -then4293: - br label %each.step4291 -endif4295: - %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.2607, 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 %then4296, label %endif4298 -then4296: - %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 %endif4298 -endif4298: - %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 %then4299, label %endif4301 -then4299: - %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.2608, i64 1, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.2609, i64 6, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load i64, ptr %t78 - %t96 = add i64 %t95, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t96, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t97 = load ptr, ptr %a43 - %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i64 %t95 - store { ptr, i64, i64 } %t94, ptr %t98 - store i64 %t96, ptr %t78 - br label %endif4301 -endif4301: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic4302, label %ok4303 -panic4302: - call void @finch_panic(ptr @.str.2610, i64 1858, ptr @.str.2611) - unreachable -ok4303: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 16 - %t102 = load i64, ptr %a2 - %t103 = load { ptr, i64, i64 }, ptr %t101 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 %t102, %t104 - br i1 %t105, label %range4304, label %inrange4305 -range4304: - call void @finch_panic_index(ptr @.str.2612, i64 1858, i64 %t102, i64 %t104) - unreachable -inrange4305: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.gen.StructDef, ptr %t106, i64 %t102 - %t108 = getelementptr inbounds %S.gen.StructDef, ptr %t107, i32 0, i32 11 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t108, i32 0, i32 1 - %t110 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_copy(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = load i64, ptr %t109 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t108, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t108 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115 - store { ptr, i64, i64 } %t114, ptr %t118 - store i64 %t116, ptr %t109 - %t119 = load ptr, ptr %a1 - %t120 = icmp eq ptr %t119, null - br i1 %t120, label %panic4306, label %ok4307 -panic4306: - call void @finch_panic(ptr @.str.2613, i64 1859, ptr @.str.2614) - unreachable -ok4307: - %t121 = getelementptr inbounds %S.gen.Gen, ptr %t119, i32 0, i32 16 - %t122 = load i64, ptr %a2 - %t123 = load { ptr, i64, i64 }, ptr %t121 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 %t122, %t124 - br i1 %t125, label %range4308, label %inrange4309 -range4308: - call void @finch_panic_index(ptr @.str.2615, i64 1859, i64 %t122, i64 %t124) - unreachable -inrange4309: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %t126, i64 %t122 - %t128 = getelementptr inbounds %S.gen.StructDef, ptr %t127, i32 0, i32 12 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load %S.ast.Type, ptr %a60 - store %S.ast.Type %t130, ptr %a131 - call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) - %t133 = load %S.ast.Type, ptr %a132 - %t134 = load i64, ptr %t129 - %t135 = add i64 %t134, 1 - call void @finch_arr_reserve(ptr %t128, i64 %t135, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t136 = load ptr, ptr %t128 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 %t134 - store %S.ast.Type %t133, ptr %t137 - store i64 %t135, ptr %t129 - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic4310, label %ok4311 -panic4310: - call void @finch_panic(ptr @.str.2616, i64 1860, ptr @.str.2617) - unreachable -ok4311: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load i64, ptr %a2 - %t142 = load { ptr, i64, i64 }, ptr %t140 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 %t141, %t143 - br i1 %t144, label %range4312, label %inrange4313 -range4312: - call void @finch_panic_index(ptr @.str.2618, i64 1860, i64 %t141, i64 %t143) - unreachable -inrange4313: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.gen.StructDef, ptr %t145, i64 %t141 - %t147 = getelementptr inbounds %S.gen.StructDef, ptr %t146, i32 0, i32 3 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i32 0, i32 1 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = load i64, ptr %t148 - %t152 = add i64 %t151, 1 - call void @finch_arr_reserve(ptr %t147, i64 %t152, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t153 = load ptr, ptr %t147 - %t154 = getelementptr inbounds i64, ptr %t153, i64 %t151 - store i64 %t150, ptr %t154 - store i64 %t152, ptr %t148 - %t155 = load ptr, ptr %a1 - %t156 = icmp eq ptr %t155, null - br i1 %t156, label %panic4314, label %ok4315 -panic4314: - call void @finch_panic(ptr @.str.2619, i64 1861, ptr @.str.2620) - unreachable -ok4315: - %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 16 - %t158 = load i64, ptr %a2 - %t159 = load { ptr, i64, i64 }, ptr %t157 - %t160 = extractvalue { ptr, i64, i64 } %t159, 1 - %t161 = icmp uge i64 %t158, %t160 - br i1 %t161, label %range4316, label %inrange4317 -range4316: - call void @finch_panic_index(ptr @.str.2621, i64 1861, i64 %t158, i64 %t160) - unreachable -inrange4317: - %t162 = extractvalue { ptr, i64, i64 } %t159, 0 - %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t158 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %t163, i32 0, i32 4 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 - %t166 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t167 = load i64, ptr %t166 - %t168 = load i64, ptr %t165 - %t169 = add i64 %t168, 1 - call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t170 = load ptr, ptr %t164 - %t171 = getelementptr inbounds i64, ptr %t170, i64 %t168 - store i64 %t167, ptr %t171 - store i64 %t169, ptr %t165 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a60 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = load i64, ptr %t172 - %t177 = add i64 %t176, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t178 = load ptr, ptr %a43 - %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176 - store { ptr, i64, i64 } %t175, ptr %t179 - store i64 %t177, ptr %t172 - %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t181 = load i64, ptr %t180 - %t182 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 - %t183 = load i64, ptr %t182 - %t184 = add i64 %t181, %t183 - store i64 %t184, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a60) - br label %each.step4291 -each.step4291: - %t185 = load i64, ptr %a45 - %t186 = add i64 %t185, 1 - store i64 %t186, ptr %a45 - br label %each.cond4289 -each.end4292: - %t187 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t188 = load i64, ptr %t187 - %t189 = load i64, ptr %a42 - %t190 = icmp sgt i64 %t188, %t189 - br i1 %t190, label %then4318, label %endif4320 -then4318: - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t192 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t193 = load i64, ptr %t192 - %t194 = load i64, ptr %a42 - %t195 = sub i64 %t193, %t194 - call void @finch_str_from_int(ptr %a196, i64 %t195) - %t197 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2622, i64 1, i64 0 }, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t197, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.2623, i64 6, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = load i64, ptr %t191 - %t209 = add i64 %t208, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t209, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t210 = load ptr, ptr %a43 - %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i64 %t208 - store { ptr, i64, i64 } %t207, ptr %t211 - store i64 %t209, ptr %t191 - br label %endif4320 -endif4320: - %t212 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t213 = load { ptr, i64, i64 }, ptr %t212 - %t214 = load ptr, ptr %a1 - %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic4321, label %ok4322 -panic4321: - call void @finch_panic(ptr @.str.2624, i64 1868, ptr @.str.2625) - unreachable -ok4322: - %t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 16 - %t217 = load i64, ptr %a2 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range4323, label %inrange4324 -range4323: - call void @finch_panic_index(ptr @.str.2626, i64 1868, i64 %t217, i64 %t219) - unreachable -inrange4324: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.gen.StructDef, ptr %t221, i64 %t217 - %t223 = getelementptr inbounds %S.gen.StructDef, ptr %t222, i32 0, i32 8 - store { ptr, i64, i64 } %t213, ptr %a224 - call void @finch_str_copy(ptr %a225, ptr %a224) - %t226 = load { ptr, i64, i64 }, ptr %a225 - %t227 = load { ptr, i64, i64 }, ptr %t223 - store { ptr, i64, i64 } %t226, ptr %t223 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5 - %t230 = load i1, ptr %t229 - br label %logic.from4325 -logic.from4325: - br i1 %t230, label %logic.rhs4326, label %logic.end4327 -logic.rhs4326: - %t231 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i32 0, i32 1 - %t233 = load i64, ptr %t232 - %t234 = icmp eq i64 %t233, 0 - br label %logic.rend4328 -logic.rend4328: - br label %logic.end4327 -logic.end4327: - %t235 = phi i1 [ false, %logic.from4325 ], [ %t234, %logic.rend4328 ] - br i1 %t235, label %then4329, label %endif4331 -then4329: - %t236 = load ptr, ptr %a1 - %t237 = icmp eq ptr %t236, null - br i1 %t237, label %panic4332, label %ok4333 -panic4332: - call void @finch_panic(ptr @.str.2628, i64 1870, ptr @.str.2629) - unreachable -ok4333: - %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 16 - %t239 = load i64, ptr %a2 - %t240 = load { ptr, i64, i64 }, ptr %t238 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 %t239, %t241 - br i1 %t242, label %range4334, label %inrange4335 -range4334: - call void @finch_panic_index(ptr @.str.2630, i64 1870, i64 %t239, i64 %t241) - unreachable -inrange4335: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.gen.StructDef, ptr %t243, i64 %t239 - %t245 = getelementptr inbounds %S.gen.StructDef, ptr %t244, i32 0, i32 8 - %t246 = load { ptr, i64, i64 }, ptr %t245 - store { ptr, i64, i64 } { ptr @.str.2627, i64 49, i64 0 }, ptr %t245 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif4331 -endif4331: - %t248 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t249 = load i64, ptr %t248 - %t250 = load ptr, ptr %a1 - %t251 = icmp eq ptr %t250, null - br i1 %t251, label %panic4336, label %ok4337 -panic4336: - call void @finch_panic(ptr @.str.2631, i64 1872, ptr @.str.2632) - unreachable -ok4337: - %t252 = getelementptr inbounds %S.gen.Gen, ptr %t250, i32 0, i32 16 - %t253 = load i64, ptr %a2 - %t254 = load { ptr, i64, i64 }, ptr %t252 - %t255 = extractvalue { ptr, i64, i64 } %t254, 1 - %t256 = icmp uge i64 %t253, %t255 - br i1 %t256, label %range4338, label %inrange4339 -range4338: - call void @finch_panic_index(ptr @.str.2633, i64 1872, i64 %t253, i64 %t255) - unreachable -inrange4339: - %t257 = extractvalue { ptr, i64, i64 } %t254, 0 - %t258 = getelementptr inbounds %S.gen.StructDef, ptr %t257, i64 %t253 - %t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i32 0, i32 9 - store i64 %t249, ptr %t259 - %t260 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 - %t261 = load i64, ptr %t260 - %t262 = load ptr, ptr %a1 - %t263 = icmp eq ptr %t262, null - br i1 %t263, label %panic4340, label %ok4341 -panic4340: - call void @finch_panic(ptr @.str.2634, i64 1873, ptr @.str.2635) - unreachable -ok4341: - %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 16 - %t265 = load i64, ptr %a2 - %t266 = load { ptr, i64, i64 }, ptr %t264 - %t267 = extractvalue { ptr, i64, i64 } %t266, 1 - %t268 = icmp uge i64 %t265, %t267 - br i1 %t268, label %range4342, label %inrange4343 -range4342: - call void @finch_panic_index(ptr @.str.2636, i64 1873, i64 %t265, i64 %t267) - unreachable -inrange4343: - %t269 = extractvalue { ptr, i64, i64 } %t266, 0 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i64 %t265 - %t271 = getelementptr inbounds %S.gen.StructDef, ptr %t270, i32 0, i32 10 - store i64 %t261, ptr %t271 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic4344, label %ok4345 -panic4344: - call void @finch_panic(ptr @.str.2637, i64 1874, ptr @.str.2638) - unreachable -ok4345: - %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 16 - %t275 = load i64, ptr %a2 - %t276 = load { ptr, i64, i64 }, ptr %t274 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range4346, label %inrange4347 -range4346: - call void @finch_panic_index(ptr @.str.2639, i64 1874, i64 %t275, i64 %t277) - unreachable -inrange4347: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.gen.StructDef, ptr %t279, i64 %t275 - %t281 = getelementptr inbounds %S.gen.StructDef, ptr %t280, i32 0, i32 15 - store i64 2, ptr %t281 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic4348, label %ok4349 -panic4348: - call void @finch_panic(ptr @.str.2640, i64 1875, ptr @.str.2641) - unreachable -ok4349: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 2 - %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i32 0, i32 1 - %t286 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } { ptr @.str.2642, i64 5, i64 0 }, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2643, i64 10, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2644, i64 2, i64 0 }, ptr %a298 - call void @finch_str_join(ptr %a299, ptr %a43, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t296, ptr %a302 - store { ptr, i64, i64 } %t300, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t296, ptr %a304 - call void @finch_str_drop(ptr %a304) - store { ptr, i64, i64 } %t300, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a301 - store { ptr, i64, i64 } %t306, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.2645, i64 2, i64 0 }, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - store { ptr, i64, i64 } %t306, ptr %a310 - call void @finch_str_drop(ptr %a310) - %t311 = load { ptr, i64, i64 }, ptr %a307 - %t312 = load i64, ptr %t285 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %t284, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %t284 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t285 - call void @finch.drop.arr_str(ptr %a43) - call void @finch.drop.S_cimport_CStruct(ptr %a31) - ret void -} - -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 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4350, label %ok4351 -panic4350: - call void @finch_panic(ptr @.str.2646, i64 1879, ptr @.str.2647) - unreachable -ok4351: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load i64, ptr %a2 - %t7 = load { ptr, i64, i64 }, ptr %t5 - %t8 = extractvalue { ptr, i64, i64 } %t7, 1 - %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range4352, label %inrange4353 -range4352: - call void @finch_panic_index(ptr @.str.2648, i64 1879, i64 %t6, i64 %t8) - unreachable -inrange4353: - %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 %then4354, label %endif4356 -then4354: - ret void -endif4356: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic4357, label %ok4358 -panic4357: - call void @finch_panic(ptr @.str.2649, i64 1882, ptr @.str.2650) - unreachable -ok4358: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 16 - %t18 = load i64, ptr %a2 - %t19 = load { ptr, i64, i64 }, ptr %t17 - %t20 = extractvalue { ptr, i64, i64 } %t19, 1 - %t21 = icmp uge i64 %t18, %t20 - br i1 %t21, label %range4359, label %inrange4360 -range4359: - call void @finch_panic_index(ptr @.str.2651, i64 1882, i64 %t18, i64 %t20) - unreachable -inrange4360: - %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 %then4361, label %endif4363 -then4361: - %t26 = load ptr, ptr %a1 - %t27 = load i64, ptr %a2 - call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) - ret void -endif4363: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4364, label %ok4365 -panic4364: - call void @finch_panic(ptr @.str.2652, i64 1886, ptr @.str.2653) - unreachable -ok4365: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a2 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range4366, label %inrange4367 -range4366: - call void @finch_panic_index(ptr @.str.2654, i64 1886, i64 %t31, i64 %t33) - unreachable -inrange4367: - %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 %then4368, label %endif4370 -then4368: - %t41 = load ptr, ptr %a1 - %t42 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) - ret void -endif4370: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic4371, label %ok4372 -panic4371: - call void @finch_panic(ptr @.str.2655, i64 1891, ptr @.str.2656) - unreachable -ok4372: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 18 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch.copy.arr_str(ptr %a48, ptr %a47) - %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 %panic4373, label %ok4374 -panic4373: - call void @finch_panic(ptr @.str.2657, i64 1892, ptr @.str.2658) - unreachable -ok4374: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 19 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %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 %panic4375, label %ok4376 -panic4375: - call void @finch_panic(ptr @.str.2659, i64 1893, ptr @.str.2660) - unreachable -ok4376: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 20 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %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 %panic4377, label %ok4378 -panic4377: - call void @finch_panic(ptr @.str.2661, i64 1894, ptr @.str.2662) - unreachable -ok4378: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 16 - %t70 = load i64, ptr %a2 - %t71 = load { ptr, i64, i64 }, ptr %t69 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 %t70, %t72 - br i1 %t73, label %range4379, label %inrange4380 -range4379: - call void @finch_panic_index(ptr @.str.2663, i64 1894, i64 %t70, i64 %t72) - unreachable -inrange4380: - %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 %panic4381, label %ok4382 -panic4381: - call void @finch_panic(ptr @.str.2664, i64 1894, ptr @.str.2665) - unreachable -ok4382: - %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 18 - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch.copy.arr_str(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t83, ptr %t80 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch.drop.arr_str(ptr %a85) - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4383, label %ok4384 -panic4383: - call void @finch_panic(ptr @.str.2666, i64 1895, ptr @.str.2667) - unreachable -ok4384: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 16 - %t89 = load i64, ptr %a2 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range4385, label %inrange4386 -range4385: - call void @finch_panic_index(ptr @.str.2668, i64 1895, i64 %t89, i64 %t91) - unreachable -inrange4386: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.gen.StructDef, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.gen.StructDef, ptr %t94, i32 0, i32 7 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = load ptr, ptr %a1 - %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic4387, label %ok4388 -panic4387: - call void @finch_panic(ptr @.str.2669, i64 1895, ptr @.str.2670) - unreachable -ok4388: - %t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 19 - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch.copy.arr_S_ast_Type(ptr %a101, ptr %a100) - %t102 = load { ptr, i64, i64 }, ptr %a101 - %t103 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t102, ptr %t99 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch.drop.arr_S_ast_Type(ptr %a104) - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4389, label %ok4390 -panic4389: - call void @finch_panic(ptr @.str.2672, i64 1896, ptr @.str.2673) - unreachable -ok4390: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 16 - %t108 = load i64, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %t107 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 %t108, %t110 - br i1 %t111, label %range4391, label %inrange4392 -range4391: - call void @finch_panic_index(ptr @.str.2674, i64 1896, i64 %t108, i64 %t110) - unreachable -inrange4392: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds %S.gen.StructDef, ptr %t112, i64 %t108 - %t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.2671, i64 17, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.2675, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load ptr, ptr %a1 - %t126 = icmp eq ptr %t125, null - br i1 %t126, label %panic4393, label %ok4394 -panic4393: - call void @finch_panic(ptr @.str.2676, i64 1896, ptr @.str.2677) - unreachable -ok4394: - %t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 20 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t124, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load ptr, ptr %a1 - %t131 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t130, i64 %t131) - %t132 = load { ptr, i64, i64 }, ptr %a50 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic4395, label %ok4396 -panic4395: - call void @finch_panic(ptr @.str.2678, i64 1898, ptr @.str.2679) - unreachable -ok4396: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 18 - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch.copy.arr_str(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t138, ptr %t135 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch.drop.arr_str(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a58 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4397, label %ok4398 -panic4397: - call void @finch_panic(ptr @.str.2680, i64 1899, ptr @.str.2681) - unreachable -ok4398: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 19 - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch.copy.arr_S_ast_Type(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t147, ptr %t144 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_S_ast_Type(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a66 - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic4399, label %ok4400 -panic4399: - call void @finch_panic(ptr @.str.2682, i64 1900, ptr @.str.2683) - unreachable -ok4400: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 20 - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t156, ptr %t153 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_S_ast_Type(ptr %a58) - call void @finch.drop.arr_str(ptr %a50) - ret void -} - -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 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i1, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a142 = alloca %S.ast.Node, align 16 - %a148 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca %S.ast.Type, align 16 - %a222 = alloca %S.ast.Type, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4401, label %ok4402 -panic4401: - call void @finch_panic(ptr @.str.2684, i64 1904, ptr @.str.2685) - unreachable -ok4402: - %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 %panic4403, label %ok4404 -panic4403: - call void @finch_panic(ptr @.str.2686, i64 1904, ptr @.str.2687) - unreachable -ok4404: - %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 %range4405, label %inrange4406 -range4405: - call void @finch_panic_index(ptr @.str.2688, i64 1904, i64 %t9, i64 %t11) - unreachable -inrange4406: - %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 %range4407, label %inrange4408 -range4407: - call void @finch_panic_index(ptr @.str.2689, i64 1904, i64 %t16, i64 %t18) - unreachable -inrange4408: - %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 %panic4409, label %ok4410 -panic4409: - call void @finch_panic(ptr @.str.2690, i64 1904, ptr @.str.2691) - unreachable -ok4410: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 16 - %t26 = load i64, ptr %a2 - %t27 = load { ptr, i64, i64 }, ptr %t25 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range4411, label %inrange4412 -range4411: - call void @finch_panic_index(ptr @.str.2692, i64 1904, i64 %t26, i64 %t28) - unreachable -inrange4412: - %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 %range4413, label %inrange4414 -range4413: - call void @finch_panic_index(ptr @.str.2693, i64 1904, i64 %t33, i64 %t35) - unreachable -inrange4414: - %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 %panic4415, label %ok4416 -panic4415: - call void @finch_panic(ptr @.str.2694, i64 1905, ptr @.str.2695) - unreachable -ok4416: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 16 - %t47 = load i64, ptr %a2 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range4417, label %inrange4418 -range4417: - call void @finch_panic_index(ptr @.str.2696, i64 1905, i64 %t47, i64 %t49) - unreachable -inrange4418: - %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 %then4419, label %endif4421 -then4419: - %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.2697, 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.2698, i64 26, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } %t68, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t68, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.2699, i64 7, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t80, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t80, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2700, i64 15, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - br label %endif4421 -endif4421: - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4422, label %ok4423 -panic4422: - call void @finch_panic(ptr @.str.2701, i64 1908, ptr @.str.2702) - unreachable -ok4423: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 16 - %t97 = load i64, ptr %a2 - %t98 = load { ptr, i64, i64 }, ptr %t96 - %t99 = extractvalue { ptr, i64, i64 } %t98, 1 - %t100 = icmp uge i64 %t97, %t99 - br i1 %t100, label %range4424, label %inrange4425 -range4424: - call void @finch_panic_index(ptr @.str.2703, i64 1908, i64 %t97, i64 %t99) - unreachable -inrange4425: - %t101 = extractvalue { ptr, i64, i64 } %t98, 0 - %t102 = getelementptr inbounds %S.gen.StructDef, ptr %t101, i64 %t97 - %t103 = getelementptr inbounds %S.gen.StructDef, ptr %t102, i32 0, i32 15 - store i64 1, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic4426, label %ok4427 -panic4426: - call void @finch_panic(ptr @.str.2704, i64 1909, ptr @.str.2705) - unreachable -ok4427: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 14 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_copy(ptr %a109, ptr %a108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic4428, label %ok4429 -panic4428: - call void @finch_panic(ptr @.str.2706, i64 1910, ptr @.str.2707) - unreachable -ok4429: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 16 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range4430, label %inrange4431 -range4430: - call void @finch_panic_index(ptr @.str.2708, i64 1910, i64 %t115, i64 %t117) - unreachable -inrange4431: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.StructDef, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %t120, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic4432, label %ok4433 -panic4432: - call void @finch_panic(ptr @.str.2709, i64 1910, ptr @.str.2710) - unreachable -ok4433: - %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 14 - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - %t129 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t128, ptr %t125 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i1 false, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9 - store i64 0, ptr %a134 - br label %each.cond4434 -each.cond4434: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = load i64, ptr %a134 - %t138 = icmp slt i64 %t137, %t136 - br i1 %t138, label %each.body4435, label %each.end4437 -each.body4435: - %t139 = load ptr, ptr %t133 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 %t137 - %t141 = load %S.ast.Node, ptr %t140 - store %S.ast.Node %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 5 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = load %S.ast.Node, ptr %a142 - %t147 = call %S.ast.Type @finch.gen.resolve(ptr %t143, %S.ast.Type %t145, %S.ast.Node %t146) - store %S.ast.Type %t147, ptr %a148 - %t149 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.2711, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp ne i32 %t153, 0 - br i1 %t154, label %then4438, label %endif4440 -then4438: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 3 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 2 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = call i64 @finch.gen.findStruct(ptr %t156, { ptr, i64, i64 } %t158, { ptr, i64, i64 } %t160) - call void @finch.gen.resolveStruct(ptr %t155, i64 %t161) - br label %endif4440 -endif4440: - %t162 = load ptr, ptr %a1 - %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic4441, label %ok4442 -panic4441: - call void @finch_panic(ptr @.str.2712, i64 1918, ptr @.str.2713) - unreachable -ok4442: - %t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 16 - %t165 = load i64, ptr %a2 - %t166 = load { ptr, i64, i64 }, ptr %t164 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range4443, label %inrange4444 -range4443: - call void @finch_panic_index(ptr @.str.2714, i64 1918, i64 %t165, i64 %t167) - unreachable -inrange4444: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds %S.gen.StructDef, ptr %t169, i64 %t165 - %t171 = getelementptr inbounds %S.gen.StructDef, ptr %t170, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4445, label %ok4446 -panic4445: - call void @finch_panic(ptr @.str.2715, i64 1918, ptr @.str.2716) - unreachable -ok4446: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 16 - %t176 = load i64, ptr %a2 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range4447, label %inrange4448 -range4447: - call void @finch_panic_index(ptr @.str.2717, i64 1918, i64 %t176, i64 %t178) - unreachable -inrange4448: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.gen.StructDef, ptr %t181, i32 0, i32 11 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = load i64, ptr %t172 - %t186 = add i64 %t185, 1 - call void @finch_arr_reserve(ptr %t171, i64 %t186, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t187 = load ptr, ptr %t171 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t185 - store i64 %t184, ptr %t188 - store i64 %t186, ptr %t172 - %t189 = load ptr, ptr %a1 - %t190 = icmp eq ptr %t189, null - br i1 %t190, label %panic4449, label %ok4450 -panic4449: - call void @finch_panic(ptr @.str.2718, i64 1919, ptr @.str.2719) - unreachable -ok4450: - %t191 = getelementptr inbounds %S.gen.Gen, ptr %t189, i32 0, i32 16 - %t192 = load i64, ptr %a2 - %t193 = load { ptr, i64, i64 }, ptr %t191 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range4451, label %inrange4452 -range4451: - call void @finch_panic_index(ptr @.str.2720, i64 1919, i64 %t192, i64 %t194) - unreachable -inrange4452: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.gen.StructDef, ptr %t196, i64 %t192 - %t198 = getelementptr inbounds %S.gen.StructDef, ptr %t197, i32 0, i32 11 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 1 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_copy(ptr %a203, ptr %a202) - %t204 = load { ptr, i64, i64 }, ptr %a203 - %t205 = load i64, ptr %t199 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t198, i64 %t206, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t198 - %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t207, i64 %t205 - store { ptr, i64, i64 } %t204, ptr %t208 - store i64 %t206, ptr %t199 - %t209 = load ptr, ptr %a1 - %t210 = icmp eq ptr %t209, null - br i1 %t210, label %panic4453, label %ok4454 -panic4453: - call void @finch_panic(ptr @.str.2721, i64 1920, ptr @.str.2722) - unreachable -ok4454: - %t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 16 - %t212 = load i64, ptr %a2 - %t213 = load { ptr, i64, i64 }, ptr %t211 - %t214 = extractvalue { ptr, i64, i64 } %t213, 1 - %t215 = icmp uge i64 %t212, %t214 - br i1 %t215, label %range4455, label %inrange4456 -range4455: - call void @finch_panic_index(ptr @.str.2723, i64 1920, i64 %t212, i64 %t214) - unreachable -inrange4456: - %t216 = extractvalue { ptr, i64, i64 } %t213, 0 - %t217 = getelementptr inbounds %S.gen.StructDef, ptr %t216, i64 %t212 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i32 0, i32 12 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %a148 - store %S.ast.Type %t220, ptr %a221 - call void @finch.copy.S_ast_Type(ptr %a222, ptr %a221) - %t223 = load %S.ast.Type, ptr %a222 - %t224 = load i64, ptr %t219 - %t225 = add i64 %t224, 1 - call void @finch_arr_reserve(ptr %t218, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t226 = load ptr, ptr %t218 - %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 - store %S.ast.Type %t223, ptr %t227 - store i64 %t225, ptr %t219 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a148 - %t230 = call i1 @finch.gen.owning(ptr %t228, %S.ast.Type %t229) - br i1 %t230, label %then4457, label %endif4459 -then4457: - store i1 true, ptr %a131 - br label %endif4459 -endif4459: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a148 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - %t235 = load i64, ptr %t231 - %t236 = add i64 %t235, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t236, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t237 = load ptr, ptr %a132 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t235 - store { ptr, i64, i64 } %t234, ptr %t238 - store i64 %t236, ptr %t231 - call void @finch.drop.S_ast_Type(ptr %a148) - br label %each.step4436 -each.step4436: - %t239 = load i64, ptr %a134 - %t240 = add i64 %t239, 1 - store i64 %t240, ptr %a134 - br label %each.cond4434 -each.end4437: - %t241 = load i1, ptr %a131 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic4460, label %ok4461 -panic4460: - call void @finch_panic(ptr @.str.2724, i64 1926, ptr @.str.2725) - unreachable -ok4461: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 16 - %t245 = load i64, ptr %a2 - %t246 = load { ptr, i64, i64 }, ptr %t244 - %t247 = extractvalue { ptr, i64, i64 } %t246, 1 - %t248 = icmp uge i64 %t245, %t247 - br i1 %t248, label %range4462, label %inrange4463 -range4462: - call void @finch_panic_index(ptr @.str.2726, i64 1926, i64 %t245, i64 %t247) - unreachable -inrange4463: - %t249 = extractvalue { ptr, i64, i64 } %t246, 0 - %t250 = getelementptr inbounds %S.gen.StructDef, ptr %t249, i64 %t245 - %t251 = getelementptr inbounds %S.gen.StructDef, ptr %t250, i32 0, i32 16 - store i1 %t241, ptr %t251 - %t252 = load { ptr, i64, i64 }, ptr %a111 - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic4464, label %ok4465 -panic4464: - call void @finch_panic(ptr @.str.2727, i64 1927, ptr @.str.2728) - unreachable -ok4465: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 14 - store { ptr, i64, i64 } %t252, ptr %a256 - call void @finch_str_copy(ptr %a257, ptr %a256) - %t258 = load { ptr, i64, i64 }, ptr %a257 - %t259 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t258, ptr %t255 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic4466, label %ok4467 -panic4466: - call void @finch_panic(ptr @.str.2729, i64 1928, ptr @.str.2730) - unreachable -ok4467: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 16 - %t264 = load i64, ptr %a2 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range4468, label %inrange4469 -range4468: - call void @finch_panic_index(ptr @.str.2731, i64 1928, i64 %t264, i64 %t266) - unreachable -inrange4469: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.gen.StructDef, ptr %t268, i64 %t264 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i32 0, i32 15 - store i64 2, ptr %t270 - %t271 = load ptr, ptr %a1 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic4470, label %ok4471 -panic4470: - call void @finch_panic(ptr @.str.2732, i64 1929, ptr @.str.2733) - unreachable -ok4471: - %t273 = getelementptr inbounds %S.gen.Gen, ptr %t271, i32 0, i32 2 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load ptr, ptr %a1 - %t276 = icmp eq ptr %t275, null - br i1 %t276, label %panic4472, label %ok4473 -panic4472: - call void @finch_panic(ptr @.str.2735, i64 1929, ptr @.str.2736) - unreachable -ok4473: - %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 16 - %t278 = load i64, ptr %a2 - %t279 = load { ptr, i64, i64 }, ptr %t277 - %t280 = extractvalue { ptr, i64, i64 } %t279, 1 - %t281 = icmp uge i64 %t278, %t280 - br i1 %t281, label %range4474, label %inrange4475 -range4474: - call void @finch_panic_index(ptr @.str.2737, i64 1929, i64 %t278, i64 %t280) - unreachable -inrange4475: - %t282 = extractvalue { ptr, i64, i64 } %t279, 0 - %t283 = getelementptr inbounds %S.gen.StructDef, ptr %t282, i64 %t278 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %t283, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t285) - store { ptr, i64, i64 } { ptr @.str.2734, i64 3, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2738, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load ptr, ptr %a1 - %t298 = icmp eq ptr %t297, null - br i1 %t298, label %panic4476, label %ok4477 -panic4476: - call void @finch_panic(ptr @.str.2739, i64 1929, ptr @.str.2740) - unreachable -ok4477: - %t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 16 - %t300 = load i64, ptr %a2 - %t301 = load { ptr, i64, i64 }, ptr %t299 - %t302 = extractvalue { ptr, i64, i64 } %t301, 1 - %t303 = icmp uge i64 %t300, %t302 - br i1 %t303, label %range4478, label %inrange4479 -range4478: - call void @finch_panic_index(ptr @.str.2741, i64 1929, i64 %t300, i64 %t302) - unreachable -inrange4479: - %t304 = extractvalue { ptr, i64, i64 } %t301, 0 - %t305 = getelementptr inbounds %S.gen.StructDef, ptr %t304, i64 %t300 - %t306 = getelementptr inbounds %S.gen.StructDef, ptr %t305, i32 0, i32 1 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t296, ptr %a310 - store { ptr, i64, i64 } %t308, ptr %a311 - call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) - store { ptr, i64, i64 } %t296, ptr %a312 - call void @finch_str_drop(ptr %a312) - store { ptr, i64, i64 } %t308, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.2742, i64 10, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2743, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a132, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t319, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t319, ptr %a327 - call void @finch_str_drop(ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.2744, i64 2, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load i64, ptr %t274 - %t336 = add i64 %t335, 1 - call void @finch_arr_reserve(ptr %t273, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t337 = load ptr, ptr %t273 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335 - store { ptr, i64, i64 } %t334, ptr %t338 - store i64 %t336, ptr %t274 - call void @finch.drop.arr_str(ptr %a132) - call void @finch_str_drop(ptr %a111) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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 %panic4480, label %ok4481 -panic4480: - call void @finch_panic(ptr @.str.2745, i64 1938, ptr @.str.2746) - unreachable -ok4481: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 33 - %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 %panic4482, label %ok4483 -panic4482: - call void @finch_panic(ptr @.str.2747, i64 1939, ptr @.str.2748) - unreachable -ok4483: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 33 - %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 - %a10 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - %t2 = load i64, ptr %a1 - %t3 = icmp slt i64 %t2, 0 - br i1 %t3, label %then4484, label %endif4486 -then4484: - ret { ptr, i64, i64 } { ptr @.str.2749, i64 4, i64 0 } -endif4486: - %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.2750, i64 1, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a9 - call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) - store { ptr, i64, i64 } %t6, ptr %a10 - call void @finch_str_drop(ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a7 - ret { ptr, i64, i64 } %t11 -} - -define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) { -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 %then4487, label %endif4489 -then4487: - %t5 = load i64, ptr %a1 - ret i64 %t5 -endif4489: - %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 %panic4490, label %ok4491 -panic4490: - call void @finch_panic(ptr @.str.2751, i64 1958, ptr @.str.2752) - unreachable -ok4491: - %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.2753, 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.from4492 -logic.from4492: - br i1 %t13, label %logic.end4494, label %logic.rhs4493 -logic.rhs4493: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2754, 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.rend4495 -logic.rend4495: - br label %logic.end4494 -logic.end4494: - %t19 = phi i1 [ true, %logic.from4492 ], [ %t18, %logic.rend4495 ] - br label %logic.from4496 -logic.from4496: - br i1 %t19, label %logic.end4498, label %logic.rhs4497 -logic.rhs4497: - %t20 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2755, 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.rend4499 -logic.rend4499: - br label %logic.end4498 -logic.end4498: - %t25 = phi i1 [ true, %logic.from4496 ], [ %t24, %logic.rend4499 ] - br label %logic.from4500 -logic.from4500: - br i1 %t25, label %logic.end4502, label %logic.rhs4501 -logic.rhs4501: - %t26 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2756, 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.rend4503 -logic.rend4503: - br label %logic.end4502 -logic.end4502: - %t31 = phi i1 [ true, %logic.from4500 ], [ %t30, %logic.rend4503 ] - br i1 %t31, label %then4504, label %endif4506 -then4504: - %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 - %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t33 -endif4506: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2757, 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.from4507 -logic.from4507: - br i1 %t38, label %logic.end4509, label %logic.rhs4508 -logic.rhs4508: - %t39 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2758, 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.rend4510 -logic.rend4510: - br label %logic.end4509 -logic.end4509: - %t44 = phi i1 [ true, %logic.from4507 ], [ %t43, %logic.rend4510 ] - br i1 %t44, label %then4511, label %endif4513 -then4511: - %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 - %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t46 -endif4513: - %t47 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.2759, 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.from4514 -logic.from4514: - br i1 %t51, label %logic.end4516, label %logic.rhs4515 -logic.rhs4515: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2760, 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.rend4517 -logic.rend4517: - br label %logic.end4516 -logic.end4516: - %t57 = phi i1 [ true, %logic.from4514 ], [ %t56, %logic.rend4517 ] - br label %logic.from4518 -logic.from4518: - br i1 %t57, label %logic.end4520, label %logic.rhs4519 -logic.rhs4519: - %t58 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2761, 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.rend4521 -logic.rend4521: - br label %logic.end4520 -logic.end4520: - %t63 = phi i1 [ true, %logic.from4518 ], [ %t62, %logic.rend4521 ] - br label %logic.from4522 -logic.from4522: - br i1 %t63, label %logic.end4524, label %logic.rhs4523 -logic.rhs4523: - %t64 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2762, 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.rend4525 -logic.rend4525: - br label %logic.end4524 -logic.end4524: - %t69 = phi i1 [ true, %logic.from4522 ], [ %t68, %logic.rend4525 ] - br i1 %t69, label %then4526, label %endif4528 -then4526: - %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 - %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t71 -endif4528: - %t72 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.2763, 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.from4529 -logic.from4529: - br i1 %t76, label %logic.end4531, label %logic.rhs4530 -logic.rhs4530: - %t77 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2764, 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.rend4532 -logic.rend4532: - br label %logic.end4531 -logic.end4531: - %t82 = phi i1 [ true, %logic.from4529 ], [ %t81, %logic.rend4532 ] - br i1 %t82, label %then4533, label %endif4535 -then4533: - %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 - %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t84 -endif4535: - %t85 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2765, 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 %then4536, label %endif4538 -then4536: - %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 - %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t91 -endif4538: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2766, 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 %then4539, label %endif4541 -then4539: - %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 %range4542, label %inrange4543 -range4542: - call void @finch_panic_index(ptr @.str.2767, i64 1980, i64 0, i64 %t100) - unreachable -inrange4543: - %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 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t115 -endif4541: - %t116 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2768, 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 %then4544, label %endif4546 -then4544: - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic4547, label %ok4548 -panic4547: - call void @finch_panic(ptr @.str.2769, i64 1984, ptr @.str.2770) - unreachable -ok4548: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 16 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %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 %range4549, label %inrange4550 -range4549: - call void @finch_panic_index(ptr @.str.2771, i64 1984, i64 %t129, i64 %t131) - unreachable -inrange4550: - %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 %then4551, label %endif4553 -then4551: - %t142 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 9 - %t143 = load i64, ptr %t142 - %t144 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t143, 0 - %t145 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 10 - %t146 = load i64, ptr %t145 - %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t147 -endif4553: - 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.cond4554 -each.cond4554: - %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.body4555, label %each.end4557 -each.body4555: - %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 %then4558, label %endif4560 -then4558: - %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 - %t176 = load i64, ptr %t175 - store i64 %t176, ptr %a149 - br label %endif4560 -endif4560: - br label %each.step4556 -each.step4556: - %t177 = load i64, ptr %a151 - %t178 = add i64 %t177, 1 - store i64 %t178, ptr %a151 - br label %each.cond4554 -each.end4557: - %t179 = load i64, ptr %a148 - %t180 = load i64, ptr %a149 - %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) - %t182 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t181, 0 - %t183 = load i64, ptr %a149 - %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t184 -endif4546: - %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 - %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t186 -} - -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 - 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 %then4561, label %endif4563 -then4561: - %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 -endif4563: - 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.cond4564 -each.cond4564: - %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.body4565, label %each.end4567 -each.body4565: - %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.step4566 -each.step4566: - %t40 = load i64, ptr %a13 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a13 - br label %each.cond4564 -each.end4567: - %t42 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t42 -} - -define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) { -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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.2772, 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.2773, i64 11, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a21, i64 %t20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t19, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.2774, i64 9, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a35, i64 %t34) - %t36 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t33, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t36, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.2775, i64 8, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - store { ptr, i64, i64 } %t50, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2776, i64 12, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = load i64, ptr %a6 - %t63 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t62) - store { ptr, i64, i64 } %t61, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.2777, i64 8, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.2778, i64 10, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2779, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t102) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - ret i64 %t103 -} - -define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2780, 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.2781, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a17, i64 %t16) - %t18 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2782, i64 12, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.2783, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret i64 %t41 -} - -define internal i64 @finch.gen.diType(ptr %p0, %S.ast.Type %p1) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a59 = alloca 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 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.EnumDef, align 16 - %a129 = alloca %S.gen.EnumDef, align 16 - %a131 = alloca %S.gen.EnumDef, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca i32, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca i64, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.gen.SizeAlign, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca %S.ast.Type, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.ast.Type, align 16 - %a414 = alloca %S.ast.Type, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca i64, align 16 - %a439 = alloca %S.ast.Type, align 16 - %a440 = alloca i64, align 16 - %a446 = alloca i64, align 16 - %a452 = alloca i64, align 16 - %a458 = alloca i64, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca %S.ast.Type, align 16 - %a547 = alloca i64, align 16 - %a550 = alloca i64, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca i64, align 16 - %a569 = alloca i64, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca %S.gen.StructDef, align 16 - %a677 = alloca %S.gen.StructDef, align 16 - %a679 = alloca %S.gen.StructDef, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca %S.gen.SizeAlign, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca i64, align 16 - %a705 = alloca %S.gen.SizeAlign, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a806 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca i32, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.2784, 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.from4568 -logic.from4568: - br i1 %t13, label %logic.end4570, label %logic.rhs4569 -logic.rhs4569: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2785, 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.rend4571 -logic.rend4571: - br label %logic.end4570 -logic.end4570: - %t19 = phi i1 [ true, %logic.from4568 ], [ %t18, %logic.rend4571 ] - br i1 %t19, label %then4572, label %endif4574 -then4572: - call void @finch_str_drop(ptr %a8) - ret i64 -1 -endif4574: - %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.2786, i64 2, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4575, label %ok4576 -panic4575: - call void @finch_panic(ptr @.str.2787, i64 2033, ptr @.str.2788) - unreachable -ok4576: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 - %t31 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t31, ptr %a32 - %t33 = call i64 @finch_map_find(ptr %t30, ptr %a32, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t34 = icmp sge i64 %t33, 0 - br i1 %t34, label %then4577, label %endif4579 -then4577: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4580, label %ok4581 -panic4580: - call void @finch_panic(ptr @.str.2789, i64 2034, ptr @.str.2790) - unreachable -ok4581: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 34 - %t38 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = call i64 @finch_map_find(ptr %t37, ptr %a39, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %map.missing4582, label %map.found4583 -map.missing4582: - store { ptr, i64, i64 } zeroinitializer, ptr %a42 - store { ptr, i64, i64 } %t38, ptr %a43 - call void @finch_buf_str(ptr %a42, ptr %a43, i32 1) - call void @finch_map_missing(ptr @.str.2791, i64 2034, ptr %a42) - unreachable -map.found4583: - %t44 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t37, i32 0, i32 0 - %t45 = load ptr, ptr %t44 - %t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i64 %t40 - %t47 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t46, i32 0, i32 2 - %t48 = load i64, ptr %t47 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t48 -endif4579: - store i64 -1, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic4584, label %ok4585 -panic4584: - call void @finch_panic(ptr @.str.2792, i64 2037, ptr @.str.2793) - unreachable -ok4585: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 35 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 0, %t54 - br i1 %t55, label %range4586, label %inrange4587 -range4586: - call void @finch_panic_index(ptr @.str.2794, i64 2037, i64 0, i64 %t54) - unreachable -inrange4587: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds i64, ptr %t56, i64 0 - %t58 = load i64, ptr %t57 - store i64 %t58, ptr %a59 - %t60 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2795, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then4588, label %else4589 -then4588: - %t65 = load ptr, ptr %a1 - %t66 = call i64 @finch.gen.basicType(ptr %t65, { ptr, i64, i64 } { ptr @.str.2796, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2797, i64 14, i64 0 }) - store i64 %t66, ptr %a49 - br label %endif4590 -else4589: - %t67 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.2798, i64 4, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then4591, label %else4592 -then4591: - %t72 = load ptr, ptr %a1 - %t73 = call i64 @finch.gen.basicType(ptr %t72, { ptr, i64, i64 } { ptr @.str.2799, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2800, i64 18, i64 0 }) - store i64 %t73, ptr %a49 - br label %endif4593 -else4592: - %t74 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2801, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br i1 %t78, label %then4594, label %else4595 -then4594: - %t79 = load ptr, ptr %a1 - %t80 = call i64 @finch.gen.basicType(ptr %t79, { ptr, i64, i64 } { ptr @.str.2802, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2803, i64 13, i64 0 }) - store i64 %t80, ptr %a49 - br label %endif4596 -else4595: - %t81 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2804, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %then4597, label %else4598 -then4597: - %t86 = load ptr, ptr %a1 - %t87 = call i64 @finch.gen.basicType(ptr %t86, { ptr, i64, i64 } { ptr @.str.2805, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2806, i64 12, i64 0 }) - store i64 %t87, ptr %a49 - br label %endif4599 -else4598: - %t88 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2807, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then4600, label %else4601 -then4600: - %t93 = load ptr, ptr %a1 - %t94 = call i64 @finch.gen.basicType(ptr %t93, { ptr, i64, i64 } { ptr @.str.2808, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2809, i64 12, i64 0 }) - store i64 %t94, ptr %a49 - br label %endif4602 -else4601: - %t95 = load %S.ast.Type, ptr %a2 - %t96 = call i1 @finch.gen.isInt(%S.ast.Type %t95) - br i1 %t96, label %then4603, label %else4604 -then4603: - store { ptr, i64, i64 } { ptr @.str.2810, i64 15, i64 0 }, ptr %a97 - %t98 = load %S.ast.Type, ptr %a2 - %t99 = call i1 @finch.gen.isSigned(%S.ast.Type %t98) - br i1 %t99, label %then4606, label %endif4608 -then4606: - %t100 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.2811, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif4608 -endif4608: - %t102 = load ptr, ptr %a1 - %t103 = load { ptr, i64, i64 }, ptr %a8 - %t104 = load %S.ast.Type, ptr %a2 - %t105 = call i64 @finch.gen.bitsOf(%S.ast.Type %t104) - %t106 = load { ptr, i64, i64 }, ptr %a97 - %t107 = call i64 @finch.gen.basicType(ptr %t102, { ptr, i64, i64 } %t103, i64 %t105, { ptr, i64, i64 } %t106) - store i64 %t107, ptr %a49 - call void @finch_str_drop(ptr %a97) - br label %endif4605 -else4604: - %t108 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2812, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then4609, label %else4610 -then4609: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic4612, label %ok4613 -panic4612: - call void @finch_panic(ptr @.str.2813, i64 2055, ptr @.str.2814) - unreachable -ok4613: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 21 - %t116 = load ptr, ptr %a1 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = call i64 @finch.gen.findEnum(ptr %t116, { ptr, i64, i64 } %t118, { ptr, i64, i64 } %t120) - %t122 = load { ptr, i64, i64 }, ptr %t115 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 %t121, %t123 - br i1 %t124, label %range4614, label %inrange4615 -range4614: - call void @finch_panic_index(ptr @.str.2815, i64 2055, i64 %t121, i64 %t123) - unreachable -inrange4615: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.gen.EnumDef, ptr %t125, i64 %t121 - %t127 = load %S.gen.EnumDef, ptr %t126 - store %S.gen.EnumDef %t127, ptr %a128 - call void @finch.copy.S_gen_EnumDef(ptr %a129, ptr %a128) - %t130 = load %S.gen.EnumDef, ptr %a129 - store %S.gen.EnumDef %t130, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - store i64 0, ptr %a136 - br label %for.cond4616 -for.cond4616: - %t137 = load i64, ptr %a136 - %t138 = icmp slt i64 %t137, %t135 - br i1 %t138, label %for.body4617, label %for.end4619 -for.body4617: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t140 = load ptr, ptr %a1 - %t141 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t142 = load i64, ptr %a136 - %t143 = load { ptr, i64, i64 }, ptr %t141 - %t144 = extractvalue { ptr, i64, i64 } %t143, 1 - %t145 = icmp uge i64 %t142, %t144 - br i1 %t145, label %range4620, label %inrange4621 -range4620: - call void @finch_panic_index(ptr @.str.2817, i64 2058, i64 %t142, i64 %t144) - unreachable -inrange4621: - %t146 = extractvalue { ptr, i64, i64 } %t143, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t142 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.2816, i64 21, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.2818, i64 10, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 3 - %t159 = load i64, ptr %a136 - %t160 = load { ptr, i64, i64 }, ptr %t158 - %t161 = extractvalue { ptr, i64, i64 } %t160, 1 - %t162 = icmp uge i64 %t159, %t161 - br i1 %t162, label %range4622, label %inrange4623 -range4622: - call void @finch_panic_index(ptr @.str.2819, i64 2058, i64 %t159, i64 %t161) - unreachable -inrange4623: - %t163 = extractvalue { ptr, i64, i64 } %t160, 0 - %t164 = getelementptr inbounds i64, ptr %t163, i64 %t159 - %t165 = load i64, ptr %t164 - call void @finch_str_from_int(ptr %a166, i64 %t165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t157, ptr %a169 - store { ptr, i64, i64 } %t167, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t157, ptr %a171 - call void @finch_str_drop(ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.2820, i64 1, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = call i64 @finch.gen.md(ptr %t140, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t178, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t179) - %t182 = load i64, ptr %t139 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a132 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t139 - br label %for.step4618 -for.step4618: - %t186 = load i64, ptr %a136 - %t187 = add i64 %t186, 1 - store i64 %t187, ptr %a136 - br label %for.cond4616 -for.end4619: - %t188 = load ptr, ptr %a1 - %t189 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.2821, i64 54, i64 0 }, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2822, i64 10, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a201, i64 %t200) - %t202 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t199, ptr %a206 - call void @finch_str_drop(ptr %a206) - store { ptr, i64, i64 } %t202, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2823, i64 24, i64 0 }, ptr %a211 - call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) - store { ptr, i64, i64 } %t208, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a209 - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2824, i64 2, i64 0 }, ptr %a215 - call void @finch_str_join(ptr %a216, ptr %a132, ptr %a215) - %t217 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t213, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t213, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.2825, i64 2, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call i64 @finch.gen.md(ptr %t188, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store i64 %t229, ptr %a49 - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_gen_EnumDef(ptr %a131) - br label %endif4611 -else4610: - %t231 = load ptr, ptr %a1 - %t232 = call i64 @finch.gen.md(ptr %t231, { ptr, i64, i64 } { ptr @.str.2826, i64 0, i64 0 }) - store i64 %t232, ptr %a49 - %t233 = load i64, ptr %a49 - %t234 = load ptr, ptr %a1 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4624, label %ok4625 -panic4624: - call void @finch_panic(ptr @.str.2827, i64 2064, ptr @.str.2828) - unreachable -ok4625: - %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 34 - %t237 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t237, ptr %a238 - store i32 0, ptr %a239 - %t240 = call i64 @finch_map_slot(ptr %t236, ptr %a238, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a239) - %t241 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t236, i32 0, i32 0 - %t242 = load ptr, ptr %t241 - %t243 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t242, i64 %t240 - %t244 = load i32, ptr %a239 - %t245 = icmp ne i32 %t244, 0 - br i1 %t245, label %map.new4626, label %map.have4627 -map.new4626: - %t246 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 1 - call void @finch_str_copy(ptr %t246, ptr %a238) - %t247 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 0, ptr %t247 - br label %map.have4627 -map.have4627: - %t248 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 %t233, ptr %t248 - %t249 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t249, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2829, i64 3, i64 0 }, ptr %a251 - %t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251) - %t253 = icmp ne i32 %t252, 0 - br i1 %t253, label %then4628, label %else4629 -then4628: - store i64 -1, ptr %a254 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t255, i32 0, i32 1 - %t257 = load i64, ptr %t256 - %t258 = icmp sgt i64 %t257, 0 - br i1 %t258, label %then4631, label %endif4633 -then4631: - %t259 = load ptr, ptr %a1 - %t260 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t261 = load { ptr, i64, i64 }, ptr %t260 - %t262 = extractvalue { ptr, i64, i64 } %t261, 1 - %t263 = icmp uge i64 0, %t262 - br i1 %t263, label %range4634, label %inrange4635 -range4634: - call void @finch_panic_index(ptr @.str.2830, i64 2068, i64 0, i64 %t262) - unreachable -inrange4635: - %t264 = extractvalue { ptr, i64, i64 } %t261, 0 - %t265 = getelementptr inbounds %S.ast.Type, ptr %t264, i64 0 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call i64 @finch.gen.diType(ptr %t259, %S.ast.Type %t266) - store i64 %t267, ptr %a254 - br label %endif4633 -endif4633: - %t268 = load i64, ptr %a254 - %t269 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t268) - store { ptr, i64, i64 } { ptr @.str.2831, i64 51, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.2832, i64 11, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic4636, label %ok4637 -panic4636: - call void @finch_panic(ptr @.str.2833, i64 2070, ptr @.str.2834) - unreachable -ok4637: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 33 - %t283 = load i64, ptr %a49 - %t284 = load { ptr, i64, i64 }, ptr %t282 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range4638, label %inrange4639 -range4638: - call void @finch_panic_index(ptr @.str.2835, i64 2070, i64 %t283, i64 %t285) - unreachable -inrange4639: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t283 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t279, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_drop(ptr %a290) - br label %endif4630 -else4629: - %t291 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t291, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.2836, i64 5, i64 0 }, ptr %a293 - %t294 = call i32 @finch_str_eq(ptr %a292, ptr %a293) - %t295 = icmp ne i32 %t294, 0 - br i1 %t295, label %then4640, label %else4641 -then4640: - %t296 = load ptr, ptr %a1 - %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t298 = load { ptr, i64, i64 }, ptr %t297 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 0, %t299 - br i1 %t300, label %range4643, label %inrange4644 -range4643: - call void @finch_panic_index(ptr @.str.2837, i64 2072, i64 0, i64 %t299) - unreachable -inrange4644: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i64 0 - %t303 = load %S.ast.Type, ptr %t302 - %t304 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t296, %S.ast.Type %t303) - store %S.gen.SizeAlign %t304, ptr %a305 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t308 = load i64, ptr %t307 - call void @finch_str_from_int(ptr %a309, i64 %t308) - %t310 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.2838, i64 19, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2839, i64 1, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call i64 @finch.gen.md(ptr %t306, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store i64 %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %t325 - %t327 = extractvalue { ptr, i64, i64 } %t326, 1 - %t328 = icmp uge i64 0, %t327 - br i1 %t328, label %range4645, label %inrange4646 -range4645: - call void @finch_panic_index(ptr @.str.2841, i64 2074, i64 0, i64 %t327) - unreachable -inrange4646: - %t329 = extractvalue { ptr, i64, i64 } %t326, 0 - %t330 = getelementptr inbounds %S.ast.Type, ptr %t329, i64 0 - %t331 = load %S.ast.Type, ptr %t330 - %t332 = call i64 @finch.gen.diType(ptr %t324, %S.ast.Type %t331) - %t333 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t332) - store { ptr, i64, i64 } { ptr @.str.2840, i64 51, i64 0 }, ptr %a335 - store { ptr, i64, i64 } %t333, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - store { ptr, i64, i64 } %t338, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.2842, i64 8, i64 0 }, ptr %a341 - call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) - store { ptr, i64, i64 } %t338, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a339 - %t344 = getelementptr inbounds %S.gen.SizeAlign, ptr %a305, i32 0, i32 0 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t347 = load i64, ptr %t346 - %t348 = mul i64 %t345, %t347 - %t349 = mul i64 %t348, 8 - call void @finch_str_from_int(ptr %a350, i64 %t349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t343, ptr %a353 - store { ptr, i64, i64 } %t351, ptr %a354 - call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) - store { ptr, i64, i64 } %t343, ptr %a355 - call void @finch_str_drop(ptr %a355) - store { ptr, i64, i64 } %t351, ptr %a356 - call void @finch_str_drop(ptr %a356) - %t357 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t357, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.2843, i64 15, i64 0 }, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t357, ptr %a361 - call void @finch_str_drop(ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a358 - %t363 = load i64, ptr %a323 - call void @finch_str_from_int(ptr %a364, i64 %t363) - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t362, ptr %a369 - call void @finch_str_drop(ptr %a369) - store { ptr, i64, i64 } %t365, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t371, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.2844, i64 2, i64 0 }, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t371, ptr %a375 - call void @finch_str_drop(ptr %a375) - %t376 = load { ptr, i64, i64 }, ptr %a372 - %t377 = load ptr, ptr %a1 - %t378 = icmp eq ptr %t377, null - br i1 %t378, label %panic4647, label %ok4648 -panic4647: - call void @finch_panic(ptr @.str.2845, i64 2074, ptr @.str.2846) - unreachable -ok4648: - %t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 33 - %t380 = load i64, ptr %a49 - %t381 = load { ptr, i64, i64 }, ptr %t379 - %t382 = extractvalue { ptr, i64, i64 } %t381, 1 - %t383 = icmp uge i64 %t380, %t382 - br i1 %t383, label %range4649, label %inrange4650 -range4649: - call void @finch_panic_index(ptr @.str.2847, i64 2074, i64 %t380, i64 %t382) - unreachable -inrange4650: - %t384 = extractvalue { ptr, i64, i64 } %t381, 0 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 - %t386 = load { ptr, i64, i64 }, ptr %t385 - store { ptr, i64, i64 } %t376, ptr %t385 - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif4642 -else4641: - %t388 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t388, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.2848, i64 3, i64 0 }, ptr %a390 - %t391 = call i32 @finch_str_eq(ptr %a389, ptr %a390) - %t392 = icmp ne i32 %t391, 0 - br label %logic.from4651 -logic.from4651: - br i1 %t392, label %logic.end4653, label %logic.rhs4652 -logic.rhs4652: - %t393 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t393, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2849, i64 5, i64 0 }, ptr %a395 - %t396 = call i32 @finch_str_eq(ptr %a394, ptr %a395) - %t397 = icmp ne i32 %t396, 0 - br label %logic.rend4654 -logic.rend4654: - br label %logic.end4653 -logic.end4653: - %t398 = phi i1 [ true, %logic.from4651 ], [ %t397, %logic.rend4654 ] - br i1 %t398, label %then4655, label %else4656 -then4655: - %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2850, i64 4, i64 0 }) - store %S.ast.Type %t399, ptr %a400 - %t401 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t401, ptr %a402 - store { ptr, i64, i64 } { ptr @.str.2851, i64 5, i64 0 }, ptr %a403 - %t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403) - %t405 = icmp ne i32 %t404, 0 - br i1 %t405, label %then4658, label %endif4660 -then4658: - %t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t407 = load { ptr, i64, i64 }, ptr %t406 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 0, %t408 - br i1 %t409, label %range4661, label %inrange4662 -range4661: - call void @finch_panic_index(ptr @.str.2852, i64 2078, i64 0, i64 %t408) - unreachable -inrange4662: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.ast.Type, ptr %t410, i64 0 - %t412 = load %S.ast.Type, ptr %t411 - store %S.ast.Type %t412, ptr %a413 - call void @finch.copy.S_ast_Type(ptr %a414, ptr %a413) - %t415 = load %S.ast.Type, ptr %a414 - %t416 = load %S.ast.Type, ptr %a400 - store %S.ast.Type %t415, ptr %a400 - store %S.ast.Type %t416, ptr %a417 - call void @finch.drop.S_ast_Type(ptr %a417) - br label %endif4660 -endif4660: - %t418 = load ptr, ptr %a1 - %t419 = load ptr, ptr %a1 - %t420 = load %S.ast.Type, ptr %a400 - %t421 = call i64 @finch.gen.diType(ptr %t419, %S.ast.Type %t420) - %t422 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t421) - store { ptr, i64, i64 } { ptr @.str.2853, i64 51, i64 0 }, ptr %a424 - store { ptr, i64, i64 } %t422, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - store { ptr, i64, i64 } %t427, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.2854, i64 11, i64 0 }, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = call i64 @finch.gen.md(ptr %t418, { ptr, i64, i64 } %t432) - store { ptr, i64, i64 } %t432, ptr %a434 - call void @finch_str_drop(ptr %a434) - store i64 %t433, ptr %a435 - %t436 = load ptr, ptr %a1 - %t437 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2855, i64 3, i64 0 }) - %t438 = call i64 @finch.gen.diType(ptr %t436, %S.ast.Type %t437) - store %S.ast.Type %t437, ptr %a439 - call void @finch.drop.S_ast_Type(ptr %a439) - store i64 %t438, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = load i64, ptr %a49 - %t443 = load i64, ptr %a59 - %t444 = load i64, ptr %a435 - %t445 = call i64 @finch.gen.dbgMember(ptr %t441, { ptr, i64, i64 } { ptr @.str.2856, i64 3, i64 0 }, i64 %t442, i64 %t443, i64 0, i64 %t444, i64 64, i64 0) - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load i64, ptr %a49 - %t449 = load i64, ptr %a59 - %t450 = load i64, ptr %a440 - %t451 = call i64 @finch.gen.dbgMember(ptr %t447, { ptr, i64, i64 } { ptr @.str.2857, i64 3, i64 0 }, i64 %t448, i64 %t449, i64 0, i64 %t450, i64 64, i64 64) - store i64 %t451, ptr %a452 - %t453 = load ptr, ptr %a1 - %t454 = load i64, ptr %a49 - %t455 = load i64, ptr %a59 - %t456 = load i64, ptr %a440 - %t457 = call i64 @finch.gen.dbgMember(ptr %t453, { ptr, i64, i64 } { ptr @.str.2858, i64 3, i64 0 }, i64 %t454, i64 %t455, i64 0, i64 %t456, i64 64, i64 128) - store i64 %t457, ptr %a458 - %t459 = load %S.ast.Type, ptr %a2 - %t460 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.2859, i64 52, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.2860, i64 10, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a472, i64 %t471) - %t473 = load { ptr, i64, i64 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a475 - store { ptr, i64, i64 } %t473, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t470, ptr %a477 - call void @finch_str_drop(ptr %a477) - store { ptr, i64, i64 } %t473, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a474 - store { ptr, i64, i64 } %t479, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.2861, i64 37, i64 0 }, ptr %a482 - call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482) - store { ptr, i64, i64 } %t479, ptr %a483 - call void @finch_str_drop(ptr %a483) - %t484 = load { ptr, i64, i64 }, ptr %a480 - %t485 = load i64, ptr %a446 - call void @finch_str_from_int(ptr %a486, i64 %t485) - %t487 = load { ptr, i64, i64 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t484, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t487, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t493, ptr %a495 - store { ptr, i64, i64 } { ptr @.str.2862, i64 3, i64 0 }, ptr %a496 - call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) - store { ptr, i64, i64 } %t493, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a494 - %t499 = load i64, ptr %a452 - call void @finch_str_from_int(ptr %a500, i64 %t499) - %t501 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a503 - store { ptr, i64, i64 } %t501, ptr %a504 - call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) - store { ptr, i64, i64 } %t498, ptr %a505 - call void @finch_str_drop(ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.2863, i64 3, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - %t513 = load i64, ptr %a458 - call void @finch_str_from_int(ptr %a514, i64 %t513) - %t515 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a517 - store { ptr, i64, i64 } %t515, ptr %a518 - call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) - store { ptr, i64, i64 } %t512, ptr %a519 - call void @finch_str_drop(ptr %a519) - store { ptr, i64, i64 } %t515, ptr %a520 - call void @finch_str_drop(ptr %a520) - %t521 = load { ptr, i64, i64 }, ptr %a516 - store { ptr, i64, i64 } %t521, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.2864, i64 2, i64 0 }, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t521, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - %t527 = load ptr, ptr %a1 - %t528 = icmp eq ptr %t527, null - br i1 %t528, label %panic4663, label %ok4664 -panic4663: - call void @finch_panic(ptr @.str.2865, i64 2085, ptr @.str.2866) - unreachable -ok4664: - %t529 = getelementptr inbounds %S.gen.Gen, ptr %t527, i32 0, i32 33 - %t530 = load i64, ptr %a49 - %t531 = load { ptr, i64, i64 }, ptr %t529 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range4665, label %inrange4666 -range4665: - call void @finch_panic_index(ptr @.str.2867, i64 2085, i64 %t530, i64 %t532) - unreachable -inrange4666: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %t534, i64 %t530 - %t536 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t526, ptr %t535 - store { ptr, i64, i64 } %t536, ptr %a537 - call void @finch_str_drop(ptr %a537) - call void @finch.drop.S_ast_Type(ptr %a400) - br label %endif4657 -else4656: - %t538 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.2868, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br i1 %t542, label %then4667, label %else4668 -then4667: - %t543 = load ptr, ptr %a1 - %t544 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2869, i64 3, i64 0 }) - %t545 = call i64 @finch.gen.diType(ptr %t543, %S.ast.Type %t544) - store %S.ast.Type %t544, ptr %a546 - call void @finch.drop.S_ast_Type(ptr %a546) - store i64 %t545, ptr %a547 - %t548 = load ptr, ptr %a1 - %t549 = call i64 @finch.gen.md(ptr %t548, { ptr, i64, i64 } { ptr @.str.2870, i64 66, i64 0 }) - store i64 %t549, ptr %a550 - %t551 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t552 = call ptr @finch_alloc(i64 %t551) - %t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 0 - store { ptr, i64, i64 } { ptr @.str.2871, i64 7, i64 0 }, ptr %t553 - %t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 1 - store { ptr, i64, i64 } { ptr @.str.2872, i64 3, i64 0 }, ptr %t554 - %t555 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 2 - store { ptr, i64, i64 } { ptr @.str.2873, i64 4, i64 0 }, ptr %t555 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 3 - store { ptr, i64, i64 } { ptr @.str.2874, i64 3, i64 0 }, ptr %t556 - %t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 4 - store { ptr, i64, i64 } { ptr @.str.2875, i64 5, i64 0 }, ptr %t557 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 5 - store { ptr, i64, i64 } { ptr @.str.2876, i64 4, i64 0 }, ptr %t558 - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 6 - store { ptr, i64, i64 } { ptr @.str.2877, i64 4, i64 0 }, ptr %t559 - %t560 = insertvalue { ptr, i64, i64 } undef, ptr %t552, 0 - %t561 = insertvalue { ptr, i64, i64 } %t560, i64 7, 1 - %t562 = insertvalue { ptr, i64, i64 } %t561, i64 7, 2 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } zeroinitializer, ptr %a564 - store i64 0, ptr %a565 - br label %for.cond4670 -for.cond4670: - %t566 = load i64, ptr %a565 - %t567 = icmp slt i64 %t566, 7 - br i1 %t567, label %for.body4671, label %for.end4673 -for.body4671: - %t568 = load i64, ptr %a547 - store i64 %t568, ptr %a569 - %t570 = load i64, ptr %a565 - %t571 = icmp eq i64 %t570, 0 - br label %logic.from4674 -logic.from4674: - br i1 %t571, label %logic.end4676, label %logic.rhs4675 -logic.rhs4675: - %t572 = load i64, ptr %a565 - %t573 = icmp eq i64 %t572, 4 - br label %logic.rend4677 -logic.rend4677: - br label %logic.end4676 -logic.end4676: - %t574 = phi i1 [ true, %logic.from4674 ], [ %t573, %logic.rend4677 ] - br i1 %t574, label %then4678, label %endif4680 -then4678: - %t575 = load i64, ptr %a550 - store i64 %t575, ptr %a569 - br label %endif4680 -endif4680: - %t576 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - %t577 = load ptr, ptr %a1 - %t578 = load i64, ptr %a565 - %t579 = load { ptr, i64, i64 }, ptr %a563 - %t580 = extractvalue { ptr, i64, i64 } %t579, 1 - %t581 = icmp uge i64 %t578, %t580 - br i1 %t581, label %range4681, label %inrange4682 -range4681: - call void @finch_panic_index(ptr @.str.2879, i64 2096, i64 %t578, i64 %t580) - unreachable -inrange4682: - %t582 = extractvalue { ptr, i64, i64 } %t579, 0 - %t583 = getelementptr inbounds { ptr, i64, i64 }, ptr %t582, i64 %t578 - %t584 = load { ptr, i64, i64 }, ptr %t583 - %t585 = load i64, ptr %a49 - %t586 = load i64, ptr %a59 - %t587 = load i64, ptr %a569 - %t588 = load i64, ptr %a565 - %t589 = mul i64 64, %t588 - %t590 = call i64 @finch.gen.dbgMember(ptr %t577, { ptr, i64, i64 } %t584, i64 %t585, i64 %t586, i64 0, i64 %t587, i64 64, i64 %t589) - call void @finch_str_from_int(ptr %a591, i64 %t590) - %t592 = load { ptr, i64, i64 }, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.2878, i64 1, i64 0 }, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t592, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a593 - %t598 = load i64, ptr %t576 - %t599 = add i64 %t598, 1 - call void @finch_arr_reserve(ptr %a564, i64 %t599, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t600 = load ptr, ptr %a564 - %t601 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i64 %t598 - store { ptr, i64, i64 } %t597, ptr %t601 - store i64 %t599, ptr %t576 - br label %for.step4672 -for.step4672: - %t602 = load i64, ptr %a565 - %t603 = add i64 %t602, 1 - store i64 %t603, ptr %a565 - br label %for.cond4670 -for.end4673: - %t604 = load %S.ast.Type, ptr %a2 - %t605 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.2880, i64 52, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.2881, i64 10, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a617, i64 %t616) - %t618 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t615, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t615, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } %t624, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.2882, i64 36, i64 0 }, ptr %a627 - call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627) - store { ptr, i64, i64 } %t624, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a625 - %t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2883, i64 2, i64 0 }, ptr %a631 - call void @finch_str_join(ptr %a632, ptr %a564, ptr %a631) - %t633 = load { ptr, i64, i64 }, ptr %a632 - store { ptr, i64, i64 } %t629, ptr %a635 - store { ptr, i64, i64 } %t633, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t629, ptr %a637 - call void @finch_str_drop(ptr %a637) - store { ptr, i64, i64 } %t633, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a634 - store { ptr, i64, i64 } %t639, ptr %a641 - store { ptr, i64, i64 } { ptr @.str.2884, i64 2, i64 0 }, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t639, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - %t645 = load ptr, ptr %a1 - %t646 = icmp eq ptr %t645, null - br i1 %t646, label %panic4683, label %ok4684 -panic4683: - call void @finch_panic(ptr @.str.2885, i64 2098, ptr @.str.2886) - unreachable -ok4684: - %t647 = getelementptr inbounds %S.gen.Gen, ptr %t645, i32 0, i32 33 - %t648 = load i64, ptr %a49 - %t649 = load { ptr, i64, i64 }, ptr %t647 - %t650 = extractvalue { ptr, i64, i64 } %t649, 1 - %t651 = icmp uge i64 %t648, %t650 - br i1 %t651, label %range4685, label %inrange4686 -range4685: - call void @finch_panic_index(ptr @.str.2887, i64 2098, i64 %t648, i64 %t650) - unreachable -inrange4686: - %t652 = extractvalue { ptr, i64, i64 } %t649, 0 - %t653 = getelementptr inbounds { ptr, i64, i64 }, ptr %t652, i64 %t648 - %t654 = load { ptr, i64, i64 }, ptr %t653 - store { ptr, i64, i64 } %t644, ptr %t653 - store { ptr, i64, i64 } %t654, ptr %a655 - call void @finch_str_drop(ptr %a655) - call void @finch.drop.arr_str(ptr %a564) - call void @finch.drop.arr_str(ptr %a563) - br label %endif4669 -else4668: - %t656 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t656, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.2888, i64 6, i64 0 }, ptr %a658 - %t659 = call i32 @finch_str_eq(ptr %a657, ptr %a658) - %t660 = icmp ne i32 %t659, 0 - br i1 %t660, label %then4687, label %else4688 -then4687: - %t661 = load ptr, ptr %a1 - %t662 = icmp eq ptr %t661, null - br i1 %t662, label %panic4690, label %ok4691 -panic4690: - call void @finch_panic(ptr @.str.2889, i64 2100, ptr @.str.2890) - unreachable -ok4691: - %t663 = getelementptr inbounds %S.gen.Gen, ptr %t661, i32 0, i32 16 - %t664 = load ptr, ptr %a1 - %t665 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t666 = load { ptr, i64, i64 }, ptr %t665 - %t667 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t668 = load { ptr, i64, i64 }, ptr %t667 - %t669 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t666, { ptr, i64, i64 } %t668) - %t670 = load { ptr, i64, i64 }, ptr %t663 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range4692, label %inrange4693 -range4692: - call void @finch_panic_index(ptr @.str.2891, i64 2100, i64 %t669, i64 %t671) - unreachable -inrange4693: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.gen.StructDef, ptr %t673, i64 %t669 - %t675 = load %S.gen.StructDef, ptr %t674 - store %S.gen.StructDef %t675, ptr %a676 - call void @finch.copy.S_gen_StructDef(ptr %a677, ptr %a676) - %t678 = load %S.gen.StructDef, ptr %a677 - store %S.gen.StructDef %t678, ptr %a679 - %t680 = load ptr, ptr %a1 - %t681 = load %S.gen.StructDef, ptr %a679 - %t682 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t680, %S.gen.StructDef %t681) - store { ptr, i64, i64 } %t682, ptr %a683 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a2 - %t686 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t684, %S.ast.Type %t685) - store %S.gen.SizeAlign %t686, ptr %a687 - store { ptr, i64, i64 } zeroinitializer, ptr %a688 - %t689 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t690 = getelementptr inbounds { ptr, i64, i64 }, ptr %t689, i32 0, i32 1 - %t691 = load i64, ptr %t690 - store i64 0, ptr %a692 - br label %for.cond4694 -for.cond4694: - %t693 = load i64, ptr %a692 - %t694 = icmp slt i64 %t693, %t691 - br i1 %t694, label %for.body4695, label %for.end4697 -for.body4695: - %t695 = load ptr, ptr %a1 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t697 = load i64, ptr %a692 - %t698 = load { ptr, i64, i64 }, ptr %t696 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range4698, label %inrange4699 -range4698: - call void @finch_panic_index(ptr @.str.2892, i64 2105, i64 %t697, i64 %t699) - unreachable -inrange4699: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds %S.ast.Type, ptr %t701, i64 %t697 - %t703 = load %S.ast.Type, ptr %t702 - %t704 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t695, %S.ast.Type %t703) - store %S.gen.SizeAlign %t704, ptr %a705 - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - %t707 = load ptr, ptr %a1 - %t708 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 11 - %t709 = load i64, ptr %a692 - %t710 = load { ptr, i64, i64 }, ptr %t708 - %t711 = extractvalue { ptr, i64, i64 } %t710, 1 - %t712 = icmp uge i64 %t709, %t711 - br i1 %t712, label %range4700, label %inrange4701 -range4700: - call void @finch_panic_index(ptr @.str.2894, i64 2106, i64 %t709, i64 %t711) - unreachable -inrange4701: - %t713 = extractvalue { ptr, i64, i64 } %t710, 0 - %t714 = getelementptr inbounds { ptr, i64, i64 }, ptr %t713, i64 %t709 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = load i64, ptr %a49 - %t717 = load i64, ptr %a59 - %t718 = load ptr, ptr %a1 - %t719 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t720 = load i64, ptr %a692 - %t721 = load { ptr, i64, i64 }, ptr %t719 - %t722 = extractvalue { ptr, i64, i64 } %t721, 1 - %t723 = icmp uge i64 %t720, %t722 - br i1 %t723, label %range4702, label %inrange4703 -range4702: - call void @finch_panic_index(ptr @.str.2895, i64 2106, i64 %t720, i64 %t722) - unreachable -inrange4703: - %t724 = extractvalue { ptr, i64, i64 } %t721, 0 - %t725 = getelementptr inbounds %S.ast.Type, ptr %t724, i64 %t720 - %t726 = load %S.ast.Type, ptr %t725 - %t727 = call i64 @finch.gen.diType(ptr %t718, %S.ast.Type %t726) - %t728 = getelementptr inbounds %S.gen.SizeAlign, ptr %a705, i32 0, i32 0 - %t729 = load i64, ptr %t728 - %t730 = mul i64 %t729, 8 - %t731 = load i64, ptr %a692 - %t732 = load { ptr, i64, i64 }, ptr %a683 - %t733 = extractvalue { ptr, i64, i64 } %t732, 1 - %t734 = icmp uge i64 %t731, %t733 - br i1 %t734, label %range4704, label %inrange4705 -range4704: - call void @finch_panic_index(ptr @.str.2896, i64 2106, i64 %t731, i64 %t733) - unreachable -inrange4705: - %t735 = extractvalue { ptr, i64, i64 } %t732, 0 - %t736 = getelementptr inbounds i64, ptr %t735, i64 %t731 - %t737 = load i64, ptr %t736 - %t738 = mul i64 %t737, 8 - %t739 = call i64 @finch.gen.dbgMember(ptr %t707, { ptr, i64, i64 } %t715, i64 %t716, i64 %t717, i64 0, i64 %t727, i64 %t730, i64 %t738) - call void @finch_str_from_int(ptr %a740, i64 %t739) - %t741 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.2893, i64 1, i64 0 }, ptr %a743 - store { ptr, i64, i64 } %t741, ptr %a744 - call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) - store { ptr, i64, i64 } %t741, ptr %a745 - call void @finch_str_drop(ptr %a745) - %t746 = load { ptr, i64, i64 }, ptr %a742 - %t747 = load i64, ptr %t706 - %t748 = add i64 %t747, 1 - call void @finch_arr_reserve(ptr %a688, i64 %t748, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t749 = load ptr, ptr %a688 - %t750 = getelementptr inbounds { ptr, i64, i64 }, ptr %t749, i64 %t747 - store { ptr, i64, i64 } %t746, ptr %t750 - store i64 %t748, ptr %t706 - br label %for.step4696 -for.step4696: - %t751 = load i64, ptr %a692 - %t752 = add i64 %t751, 1 - store i64 %t752, ptr %a692 - br label %for.cond4694 -for.end4697: - %t753 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 1 - %t754 = load { ptr, i64, i64 }, ptr %t753 - store { ptr, i64, i64 } { ptr @.str.2897, i64 52, i64 0 }, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a755 - store { ptr, i64, i64 } %t758, ptr %a760 - store { ptr, i64, i64 } { ptr @.str.2898, i64 10, i64 0 }, ptr %a761 - call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) - store { ptr, i64, i64 } %t758, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a759 - %t764 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a765, i64 %t764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - store { ptr, i64, i64 } %t763, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t763, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.2899, i64 8, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.gen.SizeAlign, ptr %a687, i32 0, i32 0 - %t779 = load i64, ptr %t778 - %t780 = mul i64 %t779, 8 - call void @finch_str_from_int(ptr %a781, i64 %t780) - %t782 = load { ptr, i64, i64 }, ptr %a781 - store { ptr, i64, i64 } %t777, ptr %a784 - store { ptr, i64, i64 } %t782, ptr %a785 - call void @finch_str_concat(ptr %a783, ptr %a784, ptr %a785) - store { ptr, i64, i64 } %t777, ptr %a786 - call void @finch_str_drop(ptr %a786) - store { ptr, i64, i64 } %t782, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load { ptr, i64, i64 }, ptr %a783 - store { ptr, i64, i64 } %t788, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.2900, i64 24, i64 0 }, ptr %a791 - call void @finch_str_concat(ptr %a789, ptr %a790, ptr %a791) - store { ptr, i64, i64 } %t788, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a789 - %t794 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2901, i64 2, i64 0 }, ptr %a795 - call void @finch_str_join(ptr %a796, ptr %a688, ptr %a795) - %t797 = load { ptr, i64, i64 }, ptr %a796 - store { ptr, i64, i64 } %t793, ptr %a799 - store { ptr, i64, i64 } %t797, ptr %a800 - call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) - store { ptr, i64, i64 } %t793, ptr %a801 - call void @finch_str_drop(ptr %a801) - store { ptr, i64, i64 } %t797, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t803, ptr %a805 - store { ptr, i64, i64 } { ptr @.str.2902, i64 2, i64 0 }, ptr %a806 - call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) - store { ptr, i64, i64 } %t803, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a804 - %t809 = load ptr, ptr %a1 - %t810 = icmp eq ptr %t809, null - br i1 %t810, label %panic4706, label %ok4707 -panic4706: - call void @finch_panic(ptr @.str.2903, i64 2108, ptr @.str.2904) - unreachable -ok4707: - %t811 = getelementptr inbounds %S.gen.Gen, ptr %t809, i32 0, i32 33 - %t812 = load i64, ptr %a49 - %t813 = load { ptr, i64, i64 }, ptr %t811 - %t814 = extractvalue { ptr, i64, i64 } %t813, 1 - %t815 = icmp uge i64 %t812, %t814 - br i1 %t815, label %range4708, label %inrange4709 -range4708: - call void @finch_panic_index(ptr @.str.2905, i64 2108, i64 %t812, i64 %t814) - unreachable -inrange4709: - %t816 = extractvalue { ptr, i64, i64 } %t813, 0 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t812 - %t818 = load { ptr, i64, i64 }, ptr %t817 - store { ptr, i64, i64 } %t808, ptr %t817 - store { ptr, i64, i64 } %t818, ptr %a819 - call void @finch_str_drop(ptr %a819) - call void @finch.drop.arr_str(ptr %a688) - call void @finch.drop.arr_int(ptr %a683) - call void @finch.drop.S_gen_StructDef(ptr %a679) - br label %endif4689 -else4688: - %t820 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2906, i64 20, i64 0 }, ptr %a822 - store { ptr, i64, i64 } %t820, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - %t824 = load { ptr, i64, i64 }, ptr %a821 - store { ptr, i64, i64 } %t824, ptr %a826 - store { ptr, i64, i64 } { ptr @.str.2907, i64 39, i64 0 }, ptr %a827 - call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) - store { ptr, i64, i64 } %t824, ptr %a828 - call void @finch_str_drop(ptr %a828) - %t829 = load { ptr, i64, i64 }, ptr %a825 - %t830 = load ptr, ptr %a1 - %t831 = icmp eq ptr %t830, null - br i1 %t831, label %panic4710, label %ok4711 -panic4710: - call void @finch_panic(ptr @.str.2908, i64 2110, ptr @.str.2909) - unreachable -ok4711: - %t832 = getelementptr inbounds %S.gen.Gen, ptr %t830, i32 0, i32 33 - %t833 = load i64, ptr %a49 - %t834 = load { ptr, i64, i64 }, ptr %t832 - %t835 = extractvalue { ptr, i64, i64 } %t834, 1 - %t836 = icmp uge i64 %t833, %t835 - br i1 %t836, label %range4712, label %inrange4713 -range4712: - call void @finch_panic_index(ptr @.str.2910, i64 2110, i64 %t833, i64 %t835) - unreachable -inrange4713: - %t837 = extractvalue { ptr, i64, i64 } %t834, 0 - %t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t833 - %t839 = load { ptr, i64, i64 }, ptr %t838 - store { ptr, i64, i64 } %t829, ptr %t838 - store { ptr, i64, i64 } %t839, ptr %a840 - call void @finch_str_drop(ptr %a840) - br label %endif4689 -endif4689: - br label %endif4669 -endif4669: - br label %endif4657 -endif4657: - br label %endif4642 -endif4642: - br label %endif4630 -endif4630: - %t841 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t841 -endif4611: - br label %endif4605 -endif4605: - br label %endif4602 -endif4602: - br label %endif4599 -endif4599: - br label %endif4596 -endif4596: - br label %endif4593 -endif4593: - br label %endif4590 -endif4590: - %t842 = load i64, ptr %a49 - %t843 = load ptr, ptr %a1 - %t844 = icmp eq ptr %t843, null - br i1 %t844, label %panic4714, label %ok4715 -panic4714: - call void @finch_panic(ptr @.str.2911, i64 2114, ptr @.str.2912) - unreachable -ok4715: - %t845 = getelementptr inbounds %S.gen.Gen, ptr %t843, i32 0, i32 34 - %t846 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t846, ptr %a847 - store i32 0, ptr %a848 - %t849 = call i64 @finch_map_slot(ptr %t845, ptr %a847, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a848) - %t850 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t845, i32 0, i32 0 - %t851 = load ptr, ptr %t850 - %t852 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t851, i64 %t849 - %t853 = load i32, ptr %a848 - %t854 = icmp ne i32 %t853, 0 - br i1 %t854, label %map.new4716, label %map.have4717 -map.new4716: - %t855 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 1 - call void @finch_str_copy(ptr %t855, ptr %a847) - %t856 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 0, ptr %t856 - br label %map.have4717 -map.have4717: - %t857 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 %t842, ptr %t857 - %t858 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t858 -} - -define internal i64 @finch.gen.dbgLocation(ptr %p0) { -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 - %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 - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca i32, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic4718, label %ok4719 -panic4718: - call void @finch_panic(ptr @.str.2914, i64 2119, ptr @.str.2915) - unreachable -ok4719: - %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 37 - %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.2913, i64 2, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.2916, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic4720, label %ok4721 -panic4720: - call void @finch_panic(ptr @.str.2917, i64 2119, ptr @.str.2918) - unreachable -ok4721: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 38 - %t21 = load i64, ptr %t20 - call void @finch_str_from_int(ptr %a22, i64 %t21) - %t23 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t17, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t17, ptr %a27 - call void @finch_str_drop(ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.2919, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4722, label %ok4723 -panic4722: - call void @finch_panic(ptr @.str.2920, i64 2119, ptr @.str.2921) - unreachable -ok4723: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 36 - %t38 = load i64, ptr %t37 - call void @finch_str_from_int(ptr %a39, i64 %t38) - %t40 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t34, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t34, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic4724, label %ok4725 -panic4724: - call void @finch_panic(ptr @.str.2922, i64 2120, ptr @.str.2923) - unreachable -ok4725: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 34 - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4726, label %endif4728 -then4726: - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic4729, label %ok4730 -panic4729: - call void @finch_panic(ptr @.str.2924, i64 2121, ptr @.str.2925) - unreachable -ok4730: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 34 - %t58 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t58, ptr %a59 - %t60 = call i64 @finch_map_find(ptr %t57, ptr %a59, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t61 = icmp slt i64 %t60, 0 - br i1 %t61, label %map.missing4731, label %map.found4732 -map.missing4731: - store { ptr, i64, i64 } zeroinitializer, ptr %a62 - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_buf_str(ptr %a62, ptr %a63, i32 1) - call void @finch_map_missing(ptr @.str.2926, i64 2121, ptr %a62) - unreachable -map.found4732: - %t64 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t57, i32 0, i32 0 - %t65 = load ptr, ptr %t64 - %t66 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t65, i64 %t60 - %t67 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t66, i32 0, i32 2 - %t68 = load i64, ptr %t67 - call void @finch_str_drop(ptr %a47) - ret i64 %t68 -endif4728: - %t69 = load ptr, ptr %a1 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4733, label %ok4734 -panic4733: - call void @finch_panic(ptr @.str.2928, i64 2123, ptr @.str.2929) - unreachable -ok4734: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 37 - %t73 = load i64, ptr %t72 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2927, i64 18, i64 0 }, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2930, i64 10, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4735, label %ok4736 -panic4735: - call void @finch_panic(ptr @.str.2931, i64 2123, ptr @.str.2932) - unreachable -ok4736: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 38 - %t89 = load i64, ptr %t88 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t85, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t85, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2933, i64 10, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic4737, label %ok4738 -panic4737: - call void @finch_panic(ptr @.str.2934, i64 2123, ptr @.str.2935) - unreachable -ok4738: - %t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 36 - %t106 = load i64, ptr %t105 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t102, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t102, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.2936, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call i64 @finch.gen.md(ptr %t69, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store i64 %t120, ptr %a122 - %t123 = load i64, ptr %a122 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic4739, label %ok4740 -panic4739: - call void @finch_panic(ptr @.str.2937, i64 2124, ptr @.str.2938) - unreachable -ok4740: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 34 - %t127 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t127, ptr %a128 - store i32 0, ptr %a129 - %t130 = call i64 @finch_map_slot(ptr %t126, ptr %a128, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a129) - %t131 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t126, i32 0, i32 0 - %t132 = load ptr, ptr %t131 - %t133 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t132, i64 %t130 - %t134 = load i32, ptr %a129 - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %map.new4741, label %map.have4742 -map.new4741: - %t136 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 1 - call void @finch_str_copy(ptr %t136, ptr %a128) - %t137 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 0, ptr %t137 - br label %map.have4742 -map.have4742: - %t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 %t123, ptr %t138 - %t139 = load i64, ptr %a122 - call void @finch_str_drop(ptr %a47) - ret i64 %t139 -} - -define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) { -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 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %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 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %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 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4743, label %ok4744 -panic4743: - call void @finch_panic(ptr @.str.2939, i64 2129, ptr @.str.2940) - unreachable -ok4744: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = load %S.gen.FnSig, ptr %t5 - store %S.gen.FnSig %t6, ptr %a7 - call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7) - %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 %then4745, label %endif4747 -then4745: - %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.2941, i64 4, i64 0 }, ptr %t30 - store i64 %t28, ptr %t26 - br label %endif4747 -endif4747: - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 - store i64 0, ptr %a32 - br label %each.cond4748 -each.cond4748: - %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.body4749, label %each.end4751 -each.body4749: - %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.step4750 -each.step4750: - %t50 = load i64, ptr %a32 - %t51 = add i64 %t50, 1 - store i64 %t51, ptr %a32 - br label %each.cond4748 -each.end4751: - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4752, label %ok4753 -panic4752: - call void @finch_panic(ptr @.str.2942, i64 2138, ptr @.str.2943) - unreachable -ok4753: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 35 - %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 %range4754, label %inrange4755 -range4754: - call void @finch_panic_index(ptr @.str.2944, i64 2138, i64 %t56, i64 %t58) - unreachable -inrange4755: - %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.2946, 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.2945, i64 27, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2947, i64 2, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } { ptr @.str.2948, i64 30, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2949, i64 17, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - %t98 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - call void @finch_str_sub(ptr %a97, ptr %a96, i64 1, i64 %t100, ptr @.str.2950, i64 2140) - %t101 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t93, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t93, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t101, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2951, i64 11, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a114, i64 %t113) - %t115 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t112, ptr %a119 - call void @finch_str_drop(ptr %a119) - store { ptr, i64, i64 } %t115, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.2952, i64 9, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a128, i64 %t127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t126, ptr %a133 - call void @finch_str_drop(ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.2953, i64 8, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t142 = load i64, ptr %t141 - call void @finch_str_from_int(ptr %a143, i64 %t142) - %t144 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t140, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t140, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2954, i64 9, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load i64, ptr %a81 - call void @finch_str_from_int(ptr %a157, i64 %t156) - %t158 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t155, ptr %a162 - call void @finch_str_drop(ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.2955, i64 13, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2956, i64 87, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = call i64 @finch.gen.md(ptr %t82, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t184, ptr %a186 - call void @finch_str_drop(ptr %a186) - call void @finch.drop.arr_str(ptr %a11) - call void @finch.drop.S_gen_FnSig(ptr %a10) - ret i64 %t185 -} - -define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a38 = 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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i64, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4756, label %ok4757 -panic4756: - call void @finch_panic(ptr @.str.2957, i64 2144, ptr @.str.2958) - unreachable -ok4757: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 30 - %t9 = load i1, ptr %t8 - %t10 = xor i1 %t9, true - br label %logic.from4758 -logic.from4758: - br i1 %t10, label %logic.end4760, label %logic.rhs4759 -logic.rhs4759: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic4761, label %ok4762 -panic4761: - call void @finch_panic(ptr @.str.2959, i64 2144, ptr @.str.2960) - unreachable -ok4762: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 36 - %t14 = load i64, ptr %t13 - %t15 = icmp slt i64 %t14, 0 - br label %logic.rend4763 -logic.rend4763: - br label %logic.end4760 -logic.end4760: - %t16 = phi i1 [ true, %logic.from4758 ], [ %t15, %logic.rend4763 ] - br i1 %t16, label %then4764, label %endif4766 -then4764: - ret void -endif4766: - %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 %then4767, label %endif4769 -then4767: - ret void -endif4769: - store { ptr, i64, i64 } { ptr @.str.2961, i64 0, i64 0 }, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4770, label %ok4771 -panic4770: - call void @finch_panic(ptr @.str.2962, i64 2152, ptr @.str.2963) - unreachable -ok4771: - %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 39 - %t27 = load i64, ptr %t26 - %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4772, label %endif4774 -then4772: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic4775, label %ok4776 -panic4775: - call void @finch_panic(ptr @.str.2965, i64 2153, ptr @.str.2966) - unreachable -ok4776: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 39 - %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.2964, i64 7, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t39, ptr %a23 - store { ptr, i64, i64 } %t40, ptr %a41 - call void @finch_str_drop(ptr %a41) - br label %endif4774 -endif4774: - %t42 = load ptr, ptr %a1 - %t43 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2967, i64 24, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.2968, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic4777, label %ok4778 -panic4777: - call void @finch_panic(ptr @.str.2969, i64 2155, ptr @.str.2970) - unreachable -ok4778: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 36 - %t56 = load i64, ptr %t55 - call void @finch_str_from_int(ptr %a57, i64 %t56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t52, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t52, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.2971, i64 9, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4779, label %ok4780 -panic4779: - call void @finch_panic(ptr @.str.2972, i64 2155, ptr @.str.2973) - unreachable -ok4780: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 35 - %t73 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t74 = load i64, ptr %t73 - %t75 = load { ptr, i64, i64 }, ptr %t72 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range4781, label %inrange4782 -range4781: - call void @finch_panic_index(ptr @.str.2974, i64 2155, i64 %t74, i64 %t76) - unreachable -inrange4782: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds i64, ptr %t78, i64 %t74 - %t80 = load i64, ptr %t79 - call void @finch_str_from_int(ptr %a81, i64 %t80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t69, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t69, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2975, i64 8, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t95 = load i64, ptr %t94 - call void @finch_str_from_int(ptr %a96, i64 %t95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t93, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t93, ptr %a101 - call void @finch_str_drop(ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2976, i64 9, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load i64, ptr %a20 - call void @finch_str_from_int(ptr %a110, i64 %t109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t108, ptr %a115 - call void @finch_str_drop(ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t117, ptr %a120 - store { ptr, i64, i64 } %t118, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.2977, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call i64 @finch.gen.md(ptr %t42, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i64 %t129, ptr %a131 - %t132 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t133 = load i64, ptr %t132 - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic4783, label %ok4784 -panic4783: - call void @finch_panic(ptr @.str.2978, i64 2156, ptr @.str.2979) - unreachable -ok4784: - %t136 = getelementptr inbounds %S.gen.Gen, ptr %t134, i32 0, i32 37 - store i64 %t133, ptr %t136 - %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t138 = load i64, ptr %t137 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4785, label %ok4786 -panic4785: - call void @finch_panic(ptr @.str.2980, i64 2157, ptr @.str.2981) - unreachable -ok4786: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 38 - store i64 %t138, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.2982, i64 41, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.2983, i64 12, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = load i64, ptr %a131 - call void @finch_str_from_int(ptr %a154, i64 %t153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t152, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.2984, i64 27, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - call void @finch.gen.emit(ptr %t142, { ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch_str_drop(ptr %a23) - ret void -} - -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = mul i64 2, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.2985, i64 20, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2986, 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 %panic4787, label %ok4788 -panic4787: - call void @finch_panic(ptr @.str.2987, i64 2164, ptr @.str.2988) - unreachable -ok4788: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 33 - %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.cond4789 -for.cond4789: - %t16 = load i64, ptr %a15 - %t17 = icmp slt i64 %t16, %t14 - br i1 %t17, label %for.body4790, label %for.end4792 -for.body4790: - %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.2989, i64 1, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.2990, i64 3, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic4793, label %ok4794 -panic4793: - call void @finch_panic(ptr @.str.2991, i64 2165, ptr @.str.2992) - unreachable -ok4794: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 33 - %t35 = load i64, ptr %a15 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4795, label %inrange4796 -range4795: - call void @finch_panic_index(ptr @.str.2993, i64 2165, i64 %t35, i64 %t37) - unreachable -inrange4796: - %t39 = extractvalue { ptr, i64, i64 } %t36, 0 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t35 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t31, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t31, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load i64, ptr %t18 - %t48 = add i64 %t47, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t49 = load ptr, ptr %a9 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 - store { ptr, i64, i64 } %t46, ptr %t50 - store i64 %t48, ptr %t18 - br label %for.step4791 -for.step4791: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %for.cond4789 -for.end4792: - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2994, i64 1, i64 0 }, ptr %a54 - call void @finch_str_join(ptr %a55, ptr %a9, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2995, i64 1, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t61 -} - -define internal void @finch.copy.arr_S_gen_Var(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond4868 -n.cond4868: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4869, label %n.end4870 -n.body4869: - %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.cond4868 -n.end4870: - ret void -} - -define internal void @finch.copy.arr_S_gen_Cleanup(ptr %dst, ptr %src) { -entry: - - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - ret void -} - -define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Scope, ptr %src - store %S.gen.Scope %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_int(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_gen_Cleanup(ptr %t8, ptr %t9) - ret void -} - -define internal void @finch.copy.arr_S_gen_Scope(ptr %dst, ptr %src) { -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.cond4865 -n.cond4865: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4866, label %n.end4867 -n.body4866: - %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.cond4865 -n.end4867: - ret void -} - -define internal void @finch.drop.arr_S_gen_Scope(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4871 -n.cond4871: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4872, label %n.end4873 -n.body4872: - %t7 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Scope(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4871 -n.end4873: - call void @finch_arr_free(ptr %a) - 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 - %a20 = alloca %S.gen.FnSig, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca %S.ast.Node, align 16 - %a117 = alloca %S.ast.Node, align 16 - %a119 = alloca %S.ast.Node, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a247 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a270 = alloca i64, align 16 - %a284 = alloca %S.ast.Type, align 16 - %a285 = alloca %S.ast.Type, align 16 - %a287 = alloca %S.ast.Type, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %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 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4797, label %ok4798 -panic4797: - call void @finch_panic(ptr @.str.2996, i64 2171, ptr @.str.2997) - unreachable -ok4798: - %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 %range4799, label %inrange4800 -range4799: - call void @finch_panic_index(ptr @.str.2998, i64 2171, i64 %t6, i64 %t8) - unreachable -inrange4800: - %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 %panic4801, label %ok4802 -panic4801: - call void @finch_panic(ptr @.str.2999, i64 2171, ptr @.str.3000) - unreachable -ok4802: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 13 - store %S.gen.FnSig %t12, ptr %a16 - call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) - %t18 = load %S.gen.FnSig, ptr %a17 - %t19 = load %S.gen.FnSig, ptr %t15 - store %S.gen.FnSig %t18, ptr %t15 - store %S.gen.FnSig %t19, ptr %a20 - call void @finch.drop.S_gen_FnSig(ptr %a20) - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic4803, label %ok4804 -panic4803: - call void @finch_panic(ptr @.str.3001, i64 2172, ptr @.str.3002) - unreachable -ok4804: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %t23, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic4805, label %ok4806 -panic4805: - call void @finch_panic(ptr @.str.3003, i64 2172, ptr @.str.3004) - unreachable -ok4806: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 14 - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - %t32 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t31, ptr %t28 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic4807, label %ok4808 -panic4807: - call void @finch_panic(ptr @.str.3005, i64 2173, ptr @.str.3006) - unreachable -ok4808: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 13 - %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 6 - %t38 = load { ptr, i64, i64 }, ptr %t37 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic4809, label %ok4810 -panic4809: - call void @finch_panic(ptr @.str.3007, i64 2173, ptr @.str.3008) - unreachable -ok4810: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 18 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic4811, label %ok4812 -panic4811: - call void @finch_panic(ptr @.str.3009, i64 2174, ptr @.str.3010) - unreachable -ok4812: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 13 - %t50 = getelementptr inbounds %S.gen.FnSig, ptr %t49, i32 0, i32 7 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4813, label %ok4814 -panic4813: - call void @finch_panic(ptr @.str.3011, i64 2174, ptr @.str.3012) - unreachable -ok4814: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19 - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - %t58 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t57, ptr %t54 - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch.drop.arr_S_ast_Type(ptr %a59) - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic4815, label %ok4816 -panic4815: - call void @finch_panic(ptr @.str.3014, i64 2175, ptr @.str.3015) - unreachable -ok4816: - %t62 = getelementptr inbounds %S.gen.Gen, ptr %t60, i32 0, i32 20 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } { ptr @.str.3013, i64 0, i64 0 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4817, label %ok4818 -panic4817: - call void @finch_panic(ptr @.str.3016, i64 2176, ptr @.str.3017) - unreachable -ok4818: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 13 - %t68 = getelementptr inbounds %S.gen.FnSig, ptr %t67, i32 0, i32 7 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = icmp sgt i64 %t70, 0 - br i1 %t71, label %then4819, label %endif4821 -then4819: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic4822, label %ok4823 -panic4822: - call void @finch_panic(ptr @.str.3019, i64 2177, ptr @.str.3020) - unreachable -ok4823: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 13 - %t75 = getelementptr inbounds %S.gen.FnSig, ptr %t74, i32 0, i32 8 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.3018, i64 17, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3021, i64 1, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4824, label %ok4825 -panic4824: - call void @finch_panic(ptr @.str.3022, i64 2177, ptr @.str.3023) - unreachable -ok4825: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 20 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t85, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %endif4821 -endif4821: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic4826, label %ok4827 -panic4826: - call void @finch_panic(ptr @.str.3024, i64 2179, ptr @.str.3025) - unreachable -ok4827: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 0 - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4828, label %ok4829 -panic4828: - call void @finch_panic(ptr @.str.3026, i64 2179, ptr @.str.3027) - unreachable -ok4829: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 13 - %t97 = getelementptr inbounds %S.gen.FnSig, ptr %t96, i32 0, i32 16 - %t98 = load i64, ptr %t97 - %t99 = load { ptr, i64, i64 }, ptr %t93 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range4830, label %inrange4831 -range4830: - call void @finch_panic_index(ptr @.str.3028, i64 2179, i64 %t98, i64 %t100) - unreachable -inrange4831: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Program, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.ast.Program, ptr %t103, i32 0, i32 8 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4832, label %ok4833 -panic4832: - call void @finch_panic(ptr @.str.3029, i64 2179, ptr @.str.3030) - unreachable -ok4833: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 13 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %t107, i32 0, i32 17 - %t109 = load i64, ptr %t108 - %t110 = load { ptr, i64, i64 }, ptr %t104 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range4834, label %inrange4835 -range4834: - call void @finch_panic_index(ptr @.str.3031, i64 2179, i64 %t109, i64 %t111) - unreachable -inrange4835: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %t113, i64 %t109 - %t115 = load %S.ast.Node, ptr %t114 - store %S.ast.Node %t115, ptr %a116 - call void @finch.copy.S_ast_Node(ptr %a117, ptr %a116) - %t118 = load %S.ast.Node, ptr %a117 - store %S.ast.Node %t118, ptr %a119 - store { ptr, i64, i64 } zeroinitializer, ptr %a120 - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic4836, label %ok4837 -panic4836: - call void @finch_panic(ptr @.str.3032, i64 2181, ptr @.str.3033) - unreachable -ok4837: - %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 4 - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch.copy.arr_str(ptr %a126, ptr %a125) - %t127 = load { ptr, i64, i64 }, ptr %a126 - %t128 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t127, ptr %t124 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.drop.arr_str(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a120 - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4838, label %ok4839 -panic4838: - call void @finch_panic(ptr @.str.3034, i64 2182, ptr @.str.3035) - unreachable -ok4839: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 5 - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch.copy.arr_str(ptr %a135, ptr %a134) - %t136 = load { ptr, i64, i64 }, ptr %a135 - %t137 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } %t136, ptr %t133 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch.drop.arr_str(ptr %a138) - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4840, label %ok4841 -panic4840: - call void @finch_panic(ptr @.str.3036, i64 2183, ptr @.str.3037) - unreachable -ok4841: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 6 - store i64 0, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4842, label %ok4843 -panic4842: - call void @finch_panic(ptr @.str.3038, i64 2184, ptr @.str.3039) - unreachable -ok4843: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 9 - store i1 false, ptr %t144 - %t145 = load ptr, ptr %a1 - %t146 = icmp eq ptr %t145, null - br i1 %t146, label %panic4844, label %ok4845 -panic4844: - call void @finch_panic(ptr @.str.3040, i64 2185, ptr @.str.3041) - unreachable -ok4845: - %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 25 - store i64 0, ptr %t147 - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic4846, label %ok4847 -panic4846: - call void @finch_panic(ptr @.str.3042, i64 2186, ptr @.str.3043) - unreachable -ok4847: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 36 - store i64 -1, ptr %t150 - store i64 -1, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic4848, label %ok4849 -panic4848: - call void @finch_panic(ptr @.str.3044, i64 2188, ptr @.str.3045) - unreachable -ok4849: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 30 - %t155 = load i1, ptr %t154 - br i1 %t155, label %then4850, label %endif4852 -then4850: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a119 - %t158 = call i64 @finch.gen.dbgSubprogram(ptr %t156, %S.ast.Node %t157) - store i64 %t158, ptr %a151 - %t159 = load i64, ptr %a151 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4853, label %ok4854 -panic4853: - call void @finch_panic(ptr @.str.3046, i64 2190, ptr @.str.3047) - unreachable -ok4854: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 36 - store i64 %t159, ptr %t162 - %t163 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 11 - %t164 = load i64, ptr %t163 - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic4855, label %ok4856 -panic4855: - call void @finch_panic(ptr @.str.3048, i64 2191, ptr @.str.3049) - unreachable -ok4856: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 37 - store i64 %t164, ptr %t167 - %t168 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 12 - %t169 = load i64, ptr %t168 - %t170 = load ptr, ptr %a1 - %t171 = icmp eq ptr %t170, null - br i1 %t171, label %panic4857, label %ok4858 -panic4857: - call void @finch_panic(ptr @.str.3050, i64 2192, ptr @.str.3051) - unreachable -ok4858: - %t172 = getelementptr inbounds %S.gen.Gen, ptr %t170, i32 0, i32 38 - store i64 %t169, ptr %t172 - br label %endif4852 -endif4852: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4859, label %ok4860 -panic4859: - call void @finch_panic(ptr @.str.3052, i64 2194, ptr @.str.3053) - unreachable -ok4860: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 44 - store i1 false, ptr %t175 - %t176 = load ptr, ptr %a1 - %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic4861, label %ok4862 -panic4861: - call void @finch_panic(ptr @.str.3054, i64 2195, ptr @.str.3055) - unreachable -ok4862: - %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 46 - store i64 0, ptr %t178 - store { ptr, i64, i64 } zeroinitializer, ptr %a179 - %t180 = load { ptr, i64, i64 }, ptr %a179 - %t181 = load ptr, ptr %a1 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic4863, label %ok4864 -panic4863: - call void @finch_panic(ptr @.str.3056, i64 2197, ptr @.str.3057) - unreachable -ok4864: - %t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 10 - store { ptr, i64, i64 } %t180, ptr %a184 - call void @finch.copy.arr_S_gen_Scope(ptr %a185, ptr %a184) - %t186 = load { ptr, i64, i64 }, ptr %a185 - %t187 = load { ptr, i64, i64 }, ptr %t183 - store { ptr, i64, i64 } %t186, ptr %t183 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch.drop.arr_S_gen_Scope(ptr %a188) - %t189 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t189) - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic4874, label %ok4875 -panic4874: - call void @finch_panic(ptr @.str.3058, i64 2200, ptr @.str.3059) - unreachable -ok4875: - %t193 = getelementptr inbounds %S.gen.Gen, ptr %t191, i32 0, i32 13 - %t194 = getelementptr inbounds %S.gen.FnSig, ptr %t193, i32 0, i32 2 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = icmp sgt i64 %t196, 0 - br i1 %t197, label %then4876, label %endif4878 -then4876: - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = add i64 %t199, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t200, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t201 = load ptr, ptr %a190 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i64 %t199 - store { ptr, i64, i64 } { ptr @.str.3060, i64 9, i64 0 }, ptr %t202 - store i64 %t200, ptr %t198 - store { ptr, i64, i64 } { ptr @.str.3061, i64 6, i64 0 }, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4879, label %ok4880 -panic4879: - call void @finch_panic(ptr @.str.3062, i64 2204, ptr @.str.3063) - unreachable -ok4880: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 13 - %t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 4 - %t208 = load i1, ptr %t207 - br i1 %t208, label %then4881, label %endif4883 -then4881: - %t209 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.3064, i64 4, i64 0 }, ptr %a203 - store { ptr, i64, i64 } %t209, ptr %a210 - call void @finch_str_drop(ptr %a210) - br label %endif4883 -endif4883: - %t211 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_copy(ptr %a213, ptr %a212) - %t214 = load { ptr, i64, i64 }, ptr %a213 - %t215 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t214, 0 - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic4884, label %ok4885 -panic4884: - call void @finch_panic(ptr @.str.3065, i64 2207, ptr @.str.3066) - unreachable -ok4885: - %t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 13 - %t219 = getelementptr inbounds %S.gen.FnSig, ptr %t218, i32 0, i32 2 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch_str_copy(ptr %a222, ptr %a221) - %t223 = load { ptr, i64, i64 }, ptr %a222 - %t224 = insertvalue %S.ast.Type %t215, { ptr, i64, i64 } %t223, 2 - %t225 = load ptr, ptr %a1 - %t226 = icmp eq ptr %t225, null - br i1 %t226, label %panic4886, label %ok4887 -panic4886: - call void @finch_panic(ptr @.str.3067, i64 2207, ptr @.str.3068) - unreachable -ok4887: - %t227 = getelementptr inbounds %S.gen.Gen, ptr %t225, i32 0, i32 13 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_copy(ptr %a231, ptr %a230) - %t232 = load { ptr, i64, i64 }, ptr %a231 - %t233 = insertvalue %S.ast.Type %t224, { ptr, i64, i64 } %t232, 3 - store %S.ast.Type %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic4888, label %ok4889 -panic4888: - call void @finch_panic(ptr @.str.3069, i64 2208, ptr @.str.3070) - unreachable -ok4889: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 10 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range4890, label %inrange4891 -range4890: - call void @finch_panic_index(ptr @.str.3071, i64 2208, i64 0, i64 %t239) - unreachable -inrange4891: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.gen.Scope, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.gen.Scope, ptr %t242, i32 0, i32 0 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.3072, i64 4, i64 0 }, 0 - %t246 = load %S.ast.Type, ptr %a234 - store %S.ast.Type %t246, ptr %a247 - call void @finch.copy.S_ast_Type(ptr %a248, ptr %a247) - %t249 = load %S.ast.Type, ptr %a248 - %t250 = insertvalue %S.gen.Var %t245, %S.ast.Type %t249, 1 - %t251 = insertvalue %S.gen.Var %t250, { ptr, i64, i64 } { ptr @.str.3073, i64 5, i64 0 }, 2 - %t252 = insertvalue %S.gen.Var %t251, i1 false, 3 - %t253 = load i64, ptr %t244 - %t254 = add i64 %t253, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t254, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t255 = load ptr, ptr %t243 - %t256 = getelementptr inbounds %S.gen.Var, ptr %t255, i64 %t253 - store %S.gen.Var %t252, ptr %t256 - store i64 %t254, ptr %t244 - %t257 = load ptr, ptr %a1 - %t258 = icmp eq ptr %t257, null - br i1 %t258, label %panic4892, label %ok4893 -panic4892: - call void @finch_panic(ptr @.str.3074, i64 2209, ptr @.str.3075) - unreachable -ok4893: - %t259 = getelementptr inbounds %S.gen.Gen, ptr %t257, i32 0, i32 30 - %t260 = load i1, ptr %t259 - br i1 %t260, label %then4894, label %endif4896 -then4894: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a119 - %t263 = load %S.ast.Type, ptr %a234 - call void @finch.gen.dbgVariable(ptr %t261, %S.ast.Node %t262, { ptr, i64, i64 } { ptr @.str.3076, i64 4, i64 0 }, %S.ast.Type %t263, { ptr, i64, i64 } { ptr @.str.3077, i64 5, i64 0 }) - br label %endif4896 -endif4896: - call void @finch.drop.S_ast_Type(ptr %a234) - call void @finch_str_drop(ptr %a203) - br label %endif4878 -endif4878: - %t264 = load ptr, ptr %a1 - %t265 = icmp eq ptr %t264, null - br i1 %t265, label %panic4897, label %ok4898 -panic4897: - call void @finch_panic(ptr @.str.3078, i64 2214, ptr @.str.3079) - unreachable -ok4898: - %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 13 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i32 0, i32 13 - %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i32 0, i32 1 - %t269 = load i64, ptr %t268 - store i64 0, ptr %a270 - br label %for.cond4899 -for.cond4899: - %t271 = load i64, ptr %a270 - %t272 = icmp slt i64 %t271, %t269 - br i1 %t272, label %for.body4900, label %for.end4902 -for.body4900: - %t273 = load ptr, ptr %a1 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic4903, label %ok4904 -panic4903: - call void @finch_panic(ptr @.str.3080, i64 2215, ptr @.str.3081) - unreachable -ok4904: - %t275 = getelementptr inbounds %S.gen.Gen, ptr %t273, i32 0, i32 13 - %t276 = getelementptr inbounds %S.gen.FnSig, ptr %t275, i32 0, i32 13 - %t277 = load i64, ptr %a270 - %t278 = load { ptr, i64, i64 }, ptr %t276 - %t279 = extractvalue { ptr, i64, i64 } %t278, 1 - %t280 = icmp uge i64 %t277, %t279 - br i1 %t280, label %range4905, label %inrange4906 -range4905: - call void @finch_panic_index(ptr @.str.3082, i64 2215, i64 %t277, i64 %t279) - unreachable -inrange4906: - %t281 = extractvalue { ptr, i64, i64 } %t278, 0 - %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 %t277 - %t283 = load %S.ast.Type, ptr %t282 - store %S.ast.Type %t283, ptr %a284 - call void @finch.copy.S_ast_Type(ptr %a285, ptr %a284) - %t286 = load %S.ast.Type, ptr %a285 - store %S.ast.Type %t286, ptr %a287 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a287 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.3083, i64 3, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a298, i64 %t297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t296, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - %t306 = load i64, ptr %t288 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t307, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %a190 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t306 - store { ptr, i64, i64 } %t305, ptr %t309 - store i64 %t307, ptr %t288 - %t310 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a311, i64 %t310) - %t312 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } { ptr @.str.3084, i64 2, i64 0 }, ptr %a314 - store { ptr, i64, i64 } %t312, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_drop(ptr %a316) - %t317 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Type, ptr %a287 - %t321 = call i1 @finch.gen.owning(ptr %t319, %S.ast.Type %t320) - br label %logic.from4907 -logic.from4907: - br i1 %t321, label %logic.rhs4908, label %logic.end4909 -logic.rhs4908: - %t322 = load ptr, ptr %a1 - %t323 = icmp eq ptr %t322, null - br i1 %t323, label %panic4910, label %ok4911 -panic4910: - call void @finch_panic(ptr @.str.3085, i64 2218, ptr @.str.3086) - unreachable -ok4911: - %t324 = getelementptr inbounds %S.gen.Gen, ptr %t322, i32 0, i32 13 - %t325 = getelementptr inbounds %S.gen.FnSig, ptr %t324, i32 0, i32 15 - %t326 = load i64, ptr %a270 - %t327 = load { ptr, i64, i64 }, ptr %t325 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range4912, label %inrange4913 -range4912: - call void @finch_panic_index(ptr @.str.3087, i64 2218, i64 %t326, i64 %t328) - unreachable -inrange4913: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds i1, ptr %t330, i64 %t326 - %t332 = load i1, ptr %t331 - %t333 = xor i1 %t332, true - br label %logic.rend4914 -logic.rend4914: - br label %logic.end4909 -logic.end4909: - %t334 = phi i1 [ false, %logic.from4907 ], [ %t333, %logic.rend4914 ] - br i1 %t334, label %then4915, label %endif4917 -then4915: - %t335 = load ptr, ptr %a1 - %t336 = load { ptr, i64, i64 }, ptr %a318 - %t337 = load %S.ast.Type, ptr %a287 - %t338 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t335, { ptr, i64, i64 } %t336, %S.ast.Type %t337) - %t339 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t338, ptr %a318 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_drop(ptr %a340) - br label %endif4917 -endif4917: - %t341 = load i64, ptr %a270 - %t342 = add i64 %t341, 1 - %t343 = load ptr, ptr %a1 - %t344 = icmp eq ptr %t343, null - br i1 %t344, label %panic4918, label %ok4919 -panic4918: - call void @finch_panic(ptr @.str.3088, i64 2221, ptr @.str.3089) - unreachable -ok4919: - %t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 39 - store i64 %t342, ptr %t345 - %t346 = load ptr, ptr %a1 - %t347 = icmp eq ptr %t346, null - br i1 %t347, label %panic4920, label %ok4921 -panic4920: - call void @finch_panic(ptr @.str.3090, i64 2222, ptr @.str.3091) - unreachable -ok4921: - %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 13 - %t349 = getelementptr inbounds %S.gen.FnSig, ptr %t348, i32 0, i32 2 - %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i32 0, i32 1 - %t351 = load i64, ptr %t350 - %t352 = icmp sgt i64 %t351, 0 - br i1 %t352, label %then4922, label %endif4924 -then4922: - %t353 = load i64, ptr %a270 - %t354 = add i64 %t353, 2 - %t355 = load ptr, ptr %a1 - %t356 = icmp eq ptr %t355, null - br i1 %t356, label %panic4925, label %ok4926 -panic4925: - call void @finch_panic(ptr @.str.3092, i64 2223, ptr @.str.3093) - unreachable -ok4926: - %t357 = getelementptr inbounds %S.gen.Gen, ptr %t355, i32 0, i32 39 - store i64 %t354, ptr %t357 - br label %endif4924 -endif4924: - %t358 = load ptr, ptr %a1 - %t359 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t360 = load i64, ptr %a270 - %t361 = load { ptr, i64, i64 }, ptr %t359 - %t362 = extractvalue { ptr, i64, i64 } %t361, 1 - %t363 = icmp uge i64 %t360, %t362 - br i1 %t363, label %range4927, label %inrange4928 -range4927: - call void @finch_panic_index(ptr @.str.3094, i64 2225, i64 %t360, i64 %t362) - unreachable -inrange4928: - %t364 = extractvalue { ptr, i64, i64 } %t361, 0 - %t365 = getelementptr inbounds %S.ast.Node, ptr %t364, i64 %t360 - %t366 = load %S.ast.Node, ptr %t365 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic4929, label %ok4930 -panic4929: - call void @finch_panic(ptr @.str.3095, i64 2225, ptr @.str.3096) - unreachable -ok4930: - %t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13 - %t370 = getelementptr inbounds %S.gen.FnSig, ptr %t369, i32 0, i32 14 - %t371 = load i64, ptr %a270 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4931, label %inrange4932 -range4931: - call void @finch_panic_index(ptr @.str.3097, i64 2225, i64 %t371, i64 %t373) - unreachable -inrange4932: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t371 - %t377 = load { ptr, i64, i64 }, ptr %t376 - %t378 = load %S.ast.Type, ptr %a287 - %t379 = load { ptr, i64, i64 }, ptr %a318 - %t380 = load ptr, ptr %a1 - %t381 = load %S.ast.Type, ptr %a287 - %t382 = call i1 @finch.gen.owning(ptr %t380, %S.ast.Type %t381) - br label %logic.from4933 -logic.from4933: - br i1 %t382, label %logic.rhs4934, label %logic.end4935 -logic.rhs4934: - %t383 = load ptr, ptr %a1 - %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic4936, label %ok4937 -panic4936: - call void @finch_panic(ptr @.str.3098, i64 2225, ptr @.str.3099) - unreachable -ok4937: - %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 13 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 15 - %t387 = load i64, ptr %a270 - %t388 = load { ptr, i64, i64 }, ptr %t386 - %t389 = extractvalue { ptr, i64, i64 } %t388, 1 - %t390 = icmp uge i64 %t387, %t389 - br i1 %t390, label %range4938, label %inrange4939 -range4938: - call void @finch_panic_index(ptr @.str.3100, i64 2225, i64 %t387, i64 %t389) - unreachable -inrange4939: - %t391 = extractvalue { ptr, i64, i64 } %t388, 0 - %t392 = getelementptr inbounds i1, ptr %t391, i64 %t387 - %t393 = load i1, ptr %t392 - %t394 = xor i1 %t393, true - br label %logic.rend4940 -logic.rend4940: - br label %logic.end4935 -logic.end4935: - %t395 = phi i1 [ false, %logic.from4933 ], [ %t394, %logic.rend4940 ] - %t396 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t358, %S.ast.Node %t366, { ptr, i64, i64 } %t377, %S.ast.Type %t378, { ptr, i64, i64 } %t379, i1 false, i1 %t395) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a1 - %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic4941, label %ok4942 -panic4941: - call void @finch_panic(ptr @.str.3101, i64 2226, ptr @.str.3102) - unreachable -ok4942: - %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 39 - store i64 0, ptr %t400 - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_ast_Type(ptr %a287) - br label %for.step4901 -for.step4901: - %t401 = load i64, ptr %a270 - %t402 = add i64 %t401, 1 - store i64 %t402, ptr %a270 - br label %for.cond4899 -for.end4902: - %t403 = load ptr, ptr %a1 - %t404 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t405 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t406 = getelementptr inbounds { ptr, i64, i64 }, ptr %t405, i32 0, i32 1 - %t407 = load i64, ptr %t406 - %t408 = sub i64 %t407, 1 - %t409 = load { ptr, i64, i64 }, ptr %t404 - %t410 = extractvalue { ptr, i64, i64 } %t409, 1 - %t411 = icmp uge i64 %t408, %t410 - br i1 %t411, label %range4943, label %inrange4944 -range4943: - call void @finch_panic_index(ptr @.str.3103, i64 2228, i64 %t408, i64 %t410) - unreachable -inrange4944: - %t412 = extractvalue { ptr, i64, i64 } %t409, 0 - %t413 = getelementptr inbounds %S.ast.Node, ptr %t412, i64 %t408 - %t414 = load %S.ast.Node, ptr %t413 - call void @finch.gen.block(ptr %t403, %S.ast.Node %t414, i1 false) - %t415 = load ptr, ptr %a1 - %t416 = icmp eq ptr %t415, null - br i1 %t416, label %panic4945, label %ok4946 -panic4945: - call void @finch_panic(ptr @.str.3104, i64 2229, ptr @.str.3105) - unreachable -ok4946: - %t417 = getelementptr inbounds %S.gen.Gen, ptr %t415, i32 0, i32 9 - %t418 = load i1, ptr %t417 - %t419 = xor i1 %t418, true - br i1 %t419, label %then4947, label %endif4949 -then4947: - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic4950, label %ok4951 -panic4950: - call void @finch_panic(ptr @.str.3106, i64 2230, ptr @.str.3107) - unreachable -ok4951: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 13 - %t423 = getelementptr inbounds %S.gen.FnSig, ptr %t422, i32 0, i32 12 - %t424 = getelementptr inbounds %S.ast.Type, ptr %t423, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.3108, i64 4, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br i1 %t429, label %then4952, label %endif4954 -then4952: - %t430 = load ptr, ptr %a1 - %t431 = load %S.ast.Node, ptr %a119 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 1 - %t433 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } { ptr @.str.3109, i64 10, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t433, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - %t437 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t437, ptr %a439 - store { ptr, i64, i64 } { ptr @.str.3110, i64 38, i64 0 }, ptr %a440 - call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) - store { ptr, i64, i64 } %t437, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a438 - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4955, label %ok4956 -panic4955: - call void @finch_panic(ptr @.str.3111, i64 2231, ptr @.str.3112) - unreachable -ok4956: - %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 13 - %t446 = getelementptr inbounds %S.gen.FnSig, ptr %t445, i32 0, i32 12 - %t447 = load %S.ast.Type, ptr %t446 - %t448 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t447) - store { ptr, i64, i64 } %t442, ptr %a450 - store { ptr, i64, i64 } %t448, ptr %a451 - call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451) - store { ptr, i64, i64 } %t442, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t448, ptr %a453 - call void @finch_str_drop(ptr %a453) - %t454 = load { ptr, i64, i64 }, ptr %a449 - call void @finch.gen.fail(ptr %t430, %S.ast.Node %t431, { ptr, i64, i64 } %t454) - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_drop(ptr %a455) - br label %endif4954 -endif4954: - %t456 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t456, i64 0) - %t457 = load ptr, ptr %a1 - %t458 = icmp eq ptr %t457, null - br i1 %t458, label %panic4957, label %ok4958 -panic4957: - call void @finch_panic(ptr @.str.3113, i64 2234, ptr @.str.3114) - unreachable -ok4958: - %t459 = getelementptr inbounds %S.gen.Gen, ptr %t457, i32 0, i32 13 - %t460 = getelementptr inbounds %S.gen.FnSig, ptr %t459, i32 0, i32 9 - %t461 = load i1, ptr %t460 - br i1 %t461, label %then4959, label %else4960 -then4959: - %t462 = load ptr, ptr %a1 - %t463 = load ptr, ptr %a1 - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic4962, label %ok4963 -panic4962: - call void @finch_panic(ptr @.str.3116, i64 2235, ptr @.str.3117) - unreachable -ok4963: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 13 - %t467 = load %S.gen.FnSig, ptr %t466 - %t468 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t463, %S.gen.FnSig %t467) - store { ptr, i64, i64 } { ptr @.str.3115, i64 4, i64 0 }, ptr %a470 - store { ptr, i64, i64 } %t468, ptr %a471 - call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) - store { ptr, i64, i64 } %t468, ptr %a472 - call void @finch_str_drop(ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.3118, i64 53, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.emit(ptr %t462, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif4961 -else4960: - %t480 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t480, { ptr, i64, i64 } { ptr @.str.3119, i64 8, i64 0 }) - br label %endif4961 -endif4961: - br label %endif4949 -endif4949: - store { ptr, i64, i64 } { ptr @.str.3120, i64 0, i64 0 }, ptr %a481 - %t482 = load i64, ptr %a151 - %t483 = icmp sge i64 %t482, 0 - br i1 %t483, label %then4964, label %endif4966 -then4964: - %t484 = load i64, ptr %a151 - call void @finch_str_from_int(ptr %a485, i64 %t484) - %t486 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.3121, i64 7, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - %t492 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t491, ptr %a481 - store { ptr, i64, i64 } %t492, ptr %a493 - call void @finch_str_drop(ptr %a493) - br label %endif4966 -endif4966: - %t494 = load ptr, ptr %a1 - %t495 = icmp eq ptr %t494, null - br i1 %t495, label %panic4967, label %ok4968 -panic4967: - call void @finch_panic(ptr @.str.3122, i64 2244, ptr @.str.3123) - unreachable -ok4968: - %t496 = getelementptr inbounds %S.gen.Gen, ptr %t494, i32 0, i32 36 - store i64 -1, ptr %t496 - %t497 = load ptr, ptr %a1 - %t498 = icmp eq ptr %t497, null - br i1 %t498, label %panic4969, label %ok4970 -panic4969: - call void @finch_panic(ptr @.str.3124, i64 2245, ptr @.str.3125) - unreachable -ok4970: - %t499 = getelementptr inbounds %S.gen.Gen, ptr %t497, i32 0, i32 3 - %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i32 0, i32 1 - %t501 = load ptr, ptr %a1 - %t502 = load ptr, ptr %a1 - %t503 = icmp eq ptr %t502, null - br i1 %t503, label %panic4971, label %ok4972 -panic4971: - call void @finch_panic(ptr @.str.3127, i64 2245, ptr @.str.3128) - unreachable -ok4972: - %t504 = getelementptr inbounds %S.gen.Gen, ptr %t502, i32 0, i32 13 - %t505 = load %S.gen.FnSig, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t501, %S.gen.FnSig %t505) - store { ptr, i64, i64 } { ptr @.str.3126, i64 16, i64 0 }, ptr %a508 - store { ptr, i64, i64 } %t506, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - store { ptr, i64, i64 } %t511, ptr %a513 - store { ptr, i64, i64 } { ptr @.str.3129, i64 1, i64 0 }, ptr %a514 - call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) - store { ptr, i64, i64 } %t511, ptr %a515 - call void @finch_str_drop(ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a512 - %t517 = load ptr, ptr %a1 - %t518 = icmp eq ptr %t517, null - br i1 %t518, label %panic4973, label %ok4974 -panic4973: - call void @finch_panic(ptr @.str.3130, i64 2245, ptr @.str.3131) - unreachable -ok4974: - %t519 = getelementptr inbounds %S.gen.Gen, ptr %t517, i32 0, i32 13 - %t520 = getelementptr inbounds %S.gen.FnSig, ptr %t519, i32 0, i32 11 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t516, ptr %a523 - store { ptr, i64, i64 } %t521, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t516, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - store { ptr, i64, i64 } %t526, ptr %a528 - store { ptr, i64, i64 } { ptr @.str.3132, i64 1, i64 0 }, ptr %a529 - call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) - store { ptr, i64, i64 } %t526, ptr %a530 - call void @finch_str_drop(ptr %a530) - %t531 = load { ptr, i64, i64 }, ptr %a527 - %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3133, i64 2, i64 0 }, ptr %a533 - call void @finch_str_join(ptr %a534, ptr %a190, ptr %a533) - %t535 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t531, ptr %a537 - store { ptr, i64, i64 } %t535, ptr %a538 - call void @finch_str_concat(ptr %a536, ptr %a537, ptr %a538) - store { ptr, i64, i64 } %t531, ptr %a539 - call void @finch_str_drop(ptr %a539) - store { ptr, i64, i64 } %t535, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a536 - store { ptr, i64, i64 } %t541, ptr %a543 - store { ptr, i64, i64 } { ptr @.str.3134, i64 1, i64 0 }, ptr %a544 - call void @finch_str_concat(ptr %a542, ptr %a543, ptr %a544) - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch_str_drop(ptr %a545) - %t546 = load { ptr, i64, i64 }, ptr %a542 - %t547 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t546, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t546, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.3135, i64 10, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - %t558 = load ptr, ptr %a1 - %t559 = icmp eq ptr %t558, null - br i1 %t559, label %panic4975, label %ok4976 -panic4975: - call void @finch_panic(ptr @.str.3136, i64 2246, ptr @.str.3137) - unreachable -ok4976: - %t560 = getelementptr inbounds %S.gen.Gen, ptr %t558, i32 0, i32 5 - %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3138, i64 1, i64 0 }, ptr %a562 - call void @finch_str_join(ptr %a563, ptr %t560, ptr %a562) - %t564 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } %t557, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - store { ptr, i64, i64 } %t557, ptr %a568 - call void @finch_str_drop(ptr %a568) - store { ptr, i64, i64 } %t564, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.3139, i64 1, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = load ptr, ptr %a1 - %t577 = icmp eq ptr %t576, null - br i1 %t577, label %panic4977, label %ok4978 -panic4977: - call void @finch_panic(ptr @.str.3140, i64 2246, ptr @.str.3141) - unreachable -ok4978: - %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 4 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3142, i64 1, i64 0 }, ptr %a580 - call void @finch_str_join(ptr %a581, ptr %t578, ptr %a580) - %t582 = load { ptr, i64, i64 }, ptr %a581 - store { ptr, i64, i64 } %t575, ptr %a584 - store { ptr, i64, i64 } %t582, ptr %a585 - call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585) - store { ptr, i64, i64 } %t575, ptr %a586 - call void @finch_str_drop(ptr %a586) - store { ptr, i64, i64 } %t582, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t588, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.3143, i64 3, i64 0 }, ptr %a591 - call void @finch_str_concat(ptr %a589, ptr %a590, ptr %a591) - store { ptr, i64, i64 } %t588, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = load { ptr, i64, i64 }, ptr %a589 - %t594 = load i64, ptr %t500 - %t595 = add i64 %t594, 1 - call void @finch_arr_reserve(ptr %t499, i64 %t595, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t596 = load ptr, ptr %t499 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - store { ptr, i64, i64 } %t593, ptr %t597 - store i64 %t595, ptr %t500 - call void @finch_str_drop(ptr %a481) - call void @finch.drop.arr_str(ptr %a190) - call void @finch.drop.arr_S_gen_Scope(ptr %a179) - call void @finch.drop.arr_str(ptr %a120) - call void @finch.drop.S_ast_Node(ptr %a119) - ret void -} - -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 %then4979, label %endif4981 -then4979: - %t5 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t5) - br label %endif4981 -endif4981: - %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a7 - br label %each.cond4982 -each.cond4982: - %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.body4983, label %each.end4985 -each.body4983: - %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 %panic4986, label %ok4987 -panic4986: - call void @finch_panic(ptr @.str.3144, i64 2256, ptr @.str.3145) - unreachable -ok4987: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 - %t19 = load i1, ptr %t18 - br i1 %t19, label %then4988, label %endif4990 -then4988: - %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.3146, i64 66, i64 0 }) - br label %endif4990 -endif4990: - %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.step4984 -each.step4984: - %t24 = load i64, ptr %a7 - %t25 = add i64 %t24, 1 - store i64 %t25, ptr %a7 - br label %each.cond4982 -each.end4985: - %t26 = load i1, ptr %a3 - br i1 %t26, label %then4991, label %endif4993 -then4991: - %t27 = load ptr, ptr %a1 - call void @finch.gen.endScope(ptr %t27) - br label %endif4993 -endif4993: - 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.drop.S_gen_Loop(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a67 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.gen.Val, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a189 = alloca %S.ast.Node, align 16 - %a190 = alloca %S.ast.Node, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca %S.gen.Loop, align 16 - %a269 = alloca %S.gen.Loop, align 16 - %a271 = alloca %S.gen.Loop, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t4 = load i64, ptr %t3 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic4994, label %ok4995 -panic4994: - call void @finch_panic(ptr @.str.3147, i64 2267, ptr @.str.3148) - unreachable -ok4995: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 37 - 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 %panic4996, label %ok4997 -panic4996: - call void @finch_panic(ptr @.str.3149, i64 2268, ptr @.str.3150) - unreachable -ok4997: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 38 - 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.3151, 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 %then4998, label %else4999 -then4998: - %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 %endif5000 -else4999: - %t26 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3152, 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 %then5001, label %else5002 -then5001: - %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 %endif5003 -else5002: - %t33 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3153, 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 %then5004, label %else5005 -then5004: - %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 %endif5006 -else5005: - %t40 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3154, 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 %then5007, label %else5008 -then5007: - %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 %range5010, label %inrange5011 -range5010: - call void @finch_panic_index(ptr @.str.3155, i64 2277, i64 0, i64 %t47) - unreachable -inrange5011: - %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.3156, 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 %then5012, label %else5013 -then5012: - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = extractvalue { ptr, i64, i64 } %t60, 1 - %t62 = icmp uge i64 0, %t61 - br i1 %t62, label %range5015, label %inrange5016 -range5015: - call void @finch_panic_index(ptr @.str.3157, i64 2278, i64 0, i64 %t61) - unreachable -inrange5016: - %t63 = extractvalue { ptr, i64, i64 } %t60, 0 - %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 0 - %t65 = load %S.ast.Node, ptr %t64 - %t66 = call %S.gen.Val @finch.gen.orElse(ptr %t58, %S.ast.Node %t65, i1 true) - call void @finch.gen.release(ptr %t57, %S.gen.Val %t66) - store %S.gen.Val %t66, ptr %a67 - call void @finch.drop.S_gen_Val(ptr %a67) - br label %endif5014 -else5013: - %t68 = load ptr, ptr %a1 - %t69 = load ptr, ptr %a1 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 0, %t72 - br i1 %t73, label %range5017, label %inrange5018 -range5017: - call void @finch_panic_index(ptr @.str.3158, i64 2280, i64 0, i64 %t72) - unreachable -inrange5018: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 0 - %t76 = load %S.ast.Node, ptr %t75 - %t77 = call %S.gen.Val @finch.gen.expr(ptr %t69, %S.ast.Node %t76) - call void @finch.gen.release(ptr %t68, %S.gen.Val %t77) - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - br label %endif5014 -endif5014: - br label %endif5009 -else5008: - %t79 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3159, i64 5, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp ne i32 %t82, 0 - br i1 %t83, label %then5019, label %else5020 -then5019: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a2 - %t86 = call %S.gen.Val @finch.gen.matchGen(ptr %t84, %S.ast.Node %t85, i1 false) - store %S.gen.Val %t86, ptr %a87 - call void @finch.drop.S_gen_Val(ptr %a87) - br label %endif5021 -else5020: - %t88 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.3160, i64 2, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then5022, label %else5023 -then5022: - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Node, ptr %a2 - call void @finch.gen.ifStmt(ptr %t93, %S.ast.Node %t94) - br label %endif5024 -else5023: - %t95 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.3161, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then5025, label %else5026 -then5025: - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Node, ptr %a2 - call void @finch.gen.whileStmt(ptr %t100, %S.ast.Node %t101) - br label %endif5027 -else5026: - %t102 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.3162, 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 %then5028, label %else5029 -then5028: - %t107 = load ptr, ptr %a1 - %t108 = load %S.ast.Node, ptr %a2 - call void @finch.gen.forStmt(ptr %t107, %S.ast.Node %t108) - br label %endif5030 -else5029: - %t109 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.3163, 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 %then5031, label %else5032 -then5031: - %t114 = load ptr, ptr %a1 - %t115 = load %S.ast.Node, ptr %a2 - call void @finch.gen.eachStmt(ptr %t114, %S.ast.Node %t115) - br label %endif5033 -else5032: - %t116 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3164, 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 %then5034, label %else5035 -then5034: - %t121 = load ptr, ptr %a1 - %t122 = load %S.ast.Node, ptr %a2 - call void @finch.gen.returnStmt(ptr %t121, %S.ast.Node %t122) - br label %endif5036 -else5035: - %t123 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3165, i64 5, i64 0 }, ptr %a125 - %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) - %t127 = icmp ne i32 %t126, 0 - br i1 %t127, label %then5037, label %else5038 -then5037: - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic5040, label %ok5041 -panic5040: - call void @finch_panic(ptr @.str.3166, i64 2295, ptr @.str.3167) - unreachable -ok5041: - %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 46 - %t131 = load i64, ptr %t130 - %t132 = icmp sgt i64 %t131, 0 - br i1 %t132, label %then5042, label %endif5044 -then5042: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } { ptr @.str.3168, i64 33, i64 0 }) - br label %endif5044 -endif5044: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic5045, label %ok5046 -panic5045: - call void @finch_panic(ptr @.str.3169, i64 2298, ptr @.str.3170) - unreachable -ok5046: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 10 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load i64, ptr %t138 - %t140 = sub i64 %t139, 1 - store i64 %t140, ptr %a141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic5047, label %ok5048 -panic5047: - call void @finch_panic(ptr @.str.3171, i64 2299, ptr @.str.3172) - unreachable -ok5048: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 10 - %t145 = load i64, ptr %a141 - %t146 = load { ptr, i64, i64 }, ptr %t144 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5049, label %inrange5050 -range5049: - call void @finch_panic_index(ptr @.str.3173, i64 2299, i64 %t145, i64 %t147) - unreachable -inrange5050: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.gen.Scope, ptr %t149, i64 %t145 - %t151 = getelementptr inbounds %S.gen.Scope, ptr %t150, i32 0, i32 3 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = insertvalue %S.gen.Cleanup zeroinitializer, i1 true, 0 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic5051, label %ok5052 -panic5051: - call void @finch_panic(ptr @.str.3174, i64 2299, ptr @.str.3175) - unreachable -ok5052: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 10 - %t157 = load i64, ptr %a141 - %t158 = load { ptr, i64, i64 }, ptr %t156 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range5053, label %inrange5054 -range5053: - call void @finch_panic_index(ptr @.str.3176, i64 2299, i64 %t157, i64 %t159) - unreachable -inrange5054: - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = getelementptr inbounds %S.gen.Scope, ptr %t161, i64 %t157 - %t163 = getelementptr inbounds %S.gen.Scope, ptr %t162, i32 0, i32 1 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 - %t165 = load i64, ptr %t164 - %t166 = insertvalue %S.gen.Cleanup %t153, i64 %t165, 1 - %t167 = load i64, ptr %t152 - %t168 = add i64 %t167, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t168, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t169 = load ptr, ptr %t151 - %t170 = getelementptr inbounds %S.gen.Cleanup, ptr %t169, i64 %t167 - store %S.gen.Cleanup %t166, ptr %t170 - store i64 %t168, ptr %t152 - %t171 = load ptr, ptr %a1 - %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic5055, label %ok5056 -panic5055: - call void @finch_panic(ptr @.str.3177, i64 2300, ptr @.str.3178) - unreachable -ok5056: - %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 10 - %t174 = load i64, ptr %a141 - %t175 = load { ptr, i64, i64 }, ptr %t173 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range5057, label %inrange5058 -range5057: - call void @finch_panic_index(ptr @.str.3179, i64 2300, i64 %t174, i64 %t176) - unreachable -inrange5058: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.gen.Scope, ptr %t178, i64 %t174 - %t180 = getelementptr inbounds %S.gen.Scope, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i32 0, i32 1 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = extractvalue { ptr, i64, i64 } %t183, 1 - %t185 = icmp uge i64 0, %t184 - br i1 %t185, label %range5059, label %inrange5060 -range5059: - call void @finch_panic_index(ptr @.str.3180, i64 2300, i64 0, i64 %t184) - unreachable -inrange5060: - %t186 = extractvalue { ptr, i64, i64 } %t183, 0 - %t187 = getelementptr inbounds %S.ast.Node, ptr %t186, i64 0 - %t188 = load %S.ast.Node, ptr %t187 - store %S.ast.Node %t188, ptr %a189 - call void @finch.copy.S_ast_Node(ptr %a190, ptr %a189) - %t191 = load %S.ast.Node, ptr %a190 - %t192 = load i64, ptr %t181 - %t193 = add i64 %t192, 1 - call void @finch_arr_reserve(ptr %t180, i64 %t193, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t194 = load ptr, ptr %t180 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t192 - store %S.ast.Node %t191, ptr %t195 - store i64 %t193, ptr %t181 - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5061, label %ok5062 -panic5061: - call void @finch_panic(ptr @.str.3181, i64 2301, ptr @.str.3182) - unreachable -ok5062: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 10 - %t199 = load i64, ptr %a141 - %t200 = load { ptr, i64, i64 }, ptr %t198 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 %t199, %t201 - br i1 %t202, label %range5063, label %inrange5064 -range5063: - call void @finch_panic_index(ptr @.str.3183, i64 2301, i64 %t199, i64 %t201) - unreachable -inrange5064: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.gen.Scope, ptr %t203, i64 %t199 - %t205 = getelementptr inbounds %S.gen.Scope, ptr %t204, i32 0, i32 2 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i32 0, i32 1 - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic5065, label %ok5066 -panic5065: - call void @finch_panic(ptr @.str.3184, i64 2301, ptr @.str.3185) - unreachable -ok5066: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 25 - %t210 = load i64, ptr %t209 - %t211 = load i64, ptr %t206 - %t212 = add i64 %t211, 1 - call void @finch_arr_reserve(ptr %t205, i64 %t212, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t213 = load ptr, ptr %t205 - %t214 = getelementptr inbounds i64, ptr %t213, i64 %t211 - store i64 %t210, ptr %t214 - store i64 %t212, ptr %t206 - br label %endif5039 -else5038: - %t215 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.3186, i64 5, i64 0 }, ptr %a217 - %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) - %t219 = icmp ne i32 %t218, 0 - br label %logic.from5067 -logic.from5067: - br i1 %t219, label %logic.end5069, label %logic.rhs5068 -logic.rhs5068: - %t220 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3187, i64 8, i64 0 }, ptr %a222 - %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) - %t224 = icmp ne i32 %t223, 0 - br label %logic.rend5070 -logic.rend5070: - br label %logic.end5069 -logic.end5069: - %t225 = phi i1 [ true, %logic.from5067 ], [ %t224, %logic.rend5070 ] - br i1 %t225, label %then5071, label %else5072 -then5071: - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic5074, label %ok5075 -panic5074: - call void @finch_panic(ptr @.str.3188, i64 2303, ptr @.str.3189) - unreachable -ok5075: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 46 - %t229 = load i64, ptr %t228 - %t230 = icmp sgt i64 %t229, 0 - br i1 %t230, label %then5076, label %endif5078 -then5076: - %t231 = load ptr, ptr %a1 - %t232 = load %S.ast.Node, ptr %a2 - %t233 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3190, i64 27, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.fail(ptr %t231, %S.ast.Node %t232, { ptr, i64, i64 } %t237) - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - br label %endif5078 -endif5078: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic5079, label %ok5080 -panic5079: - call void @finch_panic(ptr @.str.3191, i64 2306, ptr @.str.3192) - unreachable -ok5080: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 12 - %t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1 - %t243 = load i64, ptr %t242 - %t244 = icmp eq i64 %t243, 0 - br i1 %t244, label %then5081, label %endif5083 -then5081: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t247, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3193, i64 31, i64 0 }, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t251) - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_drop(ptr %a252) - br label %endif5083 -endif5083: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic5084, label %ok5085 -panic5084: - call void @finch_panic(ptr @.str.3194, i64 2309, ptr @.str.3195) - unreachable -ok5085: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 12 - %t256 = load ptr, ptr %a1 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic5086, label %ok5087 -panic5086: - call void @finch_panic(ptr @.str.3196, i64 2309, ptr @.str.3197) - unreachable -ok5087: - %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 12 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load i64, ptr %t259 - %t261 = sub i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %t255 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range5088, label %inrange5089 -range5088: - call void @finch_panic_index(ptr @.str.3198, i64 2309, i64 %t261, i64 %t263) - unreachable -inrange5089: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds %S.gen.Loop, ptr %t265, i64 %t261 - %t267 = load %S.gen.Loop, ptr %t266 - store %S.gen.Loop %t267, ptr %a268 - call void @finch.copy.S_gen_Loop(ptr %a269, ptr %a268) - %t270 = load %S.gen.Loop, ptr %a269 - store %S.gen.Loop %t270, ptr %a271 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 3 - %t274 = load i64, ptr %t273 - call void @finch.gen.dropPending(ptr %t272, i64 %t274) - %t275 = load ptr, ptr %a1 - %t276 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 2 - %t277 = load i64, ptr %t276 - call void @finch.gen.unwind(ptr %t275, i64 %t277) - %t278 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.3199, i64 5, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - br i1 %t282, label %then5090, label %else5091 -then5090: - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - call void @finch.gen.br(ptr %t283, { ptr, i64, i64 } %t285) - br label %endif5092 -else5091: - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 0 - %t288 = load { ptr, i64, i64 }, ptr %t287 - call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t288) - br label %endif5092 -endif5092: - call void @finch.drop.S_gen_Loop(ptr %a271) - br label %endif5073 -else5072: - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Node, ptr %a2 - %t291 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3200, i64 18, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t289, %S.ast.Node %t290, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - br label %endif5073 -endif5073: - br label %endif5039 -endif5039: - br label %endif5036 -endif5036: - br label %endif5033 -endif5033: - br label %endif5030 -endif5030: - br label %endif5027 -endif5027: - br label %endif5024 -endif5024: - br label %endif5021 -endif5021: - br label %endif5009 -endif5009: - br label %endif5006 -endif5006: - br label %endif5003 -endif5003: - br label %endif5000 -endif5000: - call void @finch_str_drop(ptr %a18) - 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.gen.Val, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.gen.Val, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then5093, label %endif5095 -then5093: - %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 %range5096, label %inrange5097 -range5096: - call void @finch_panic_index(ptr @.str.3201, i64 2324, i64 0, i64 %t9) - unreachable -inrange5097: - %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.3202, 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 %then5098, label %endif5100 -then5098: - %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 %range5101, label %inrange5102 -range5101: - call void @finch_panic_index(ptr @.str.3203, i64 2326, i64 0, i64 %t26) - unreachable -inrange5102: - %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.3204, i64 46, i64 0 }) - br label %endif5100 -endif5100: - %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.3205, 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 %then5103, label %endif5105 -then5103: - %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 %range5106, label %inrange5107 -range5106: - call void @finch_panic_index(ptr @.str.3206, i64 2329, i64 0, i64 %t41) - unreachable -inrange5107: - %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.3207, 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.3208, i64 7, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t56) - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - br label %endif5105 -endif5105: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 - %t63 = load %S.ast.Type, ptr %t62 - %t64 = load ptr, ptr %a1 - %t65 = load %S.gen.Val, ptr %a15 - %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) - %t67 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t63, { ptr, i64, i64 } %t66, i1 false, i1 true) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - store { ptr, i64, i64 } %t67, ptr %a69 - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_gen_Val(ptr %a15) - ret void -endif5095: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = call %S.ast.Type @finch.gen.resolve(ptr %t70, %S.ast.Type %t72, %S.ast.Node %t73) - store %S.ast.Type %t74, ptr %a75 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load i64, ptr %t77 - %t79 = icmp eq i64 %t78, 0 - br i1 %t79, label %then5108, label %endif5110 -then5108: - %t80 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 0 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3209, i64 6, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.from5111 -logic.from5111: - br i1 %t85, label %logic.rhs5112, label %logic.end5113 -logic.rhs5112: - %t86 = load ptr, ptr %a1 - %t87 = load %S.ast.Type, ptr %a75 - %t88 = call i1 @finch.gen.hasDefaults(ptr %t86, %S.ast.Type %t87) - br label %logic.rend5114 -logic.rend5114: - br label %logic.end5113 -logic.end5113: - %t89 = phi i1 [ false, %logic.from5111 ], [ %t88, %logic.rend5114 ] - br i1 %t89, label %then5115, label %endif5117 -then5115: - store { ptr, i64, i64 } zeroinitializer, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 3 - %t95 = load { ptr, i64, i64 }, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 2 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = call i64 @finch.gen.findStruct(ptr %t93, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t97) - %t99 = load { ptr, i64, i64 }, ptr %a90 - %t100 = load { ptr, i64, i64 }, ptr %a91 - %t101 = load %S.ast.Node, ptr %a2 - %t102 = call %S.gen.Val @finch.gen.construct(ptr %t92, i64 %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100, %S.ast.Node %t101) - store %S.gen.Val %t102, ptr %a103 - %t104 = load ptr, ptr %a1 - %t105 = load %S.ast.Node, ptr %a2 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t107 = load { ptr, i64, i64 }, ptr %t106 - %t108 = load %S.ast.Type, ptr %a75 - %t109 = getelementptr inbounds %S.gen.Val, ptr %a103, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } %t107, %S.ast.Type %t108, { ptr, i64, i64 } %t110, i1 false, i1 true) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - call void @finch.drop.S_gen_Val(ptr %a103) - call void @finch.drop.arr_str(ptr %a91) - call void @finch.drop.arr_S_ast_Node(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5117: - %t113 = load ptr, ptr %a1 - %t114 = load %S.ast.Node, ptr %a2 - %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = load %S.ast.Type, ptr %a75 - %t118 = load %S.ast.Type, ptr %a75 - %t119 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t118) - %t120 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t113, %S.ast.Node %t114, { ptr, i64, i64 } %t116, %S.ast.Type %t117, { ptr, i64, i64 } %t119, i1 false, i1 true) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5110: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 0, %t127 - br i1 %t128, label %range5118, label %inrange5119 -range5118: - call void @finch_panic_index(ptr @.str.3210, i64 2346, i64 0, i64 %t127) - unreachable -inrange5119: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 0 - %t131 = load %S.ast.Node, ptr %t130 - %t132 = load %S.ast.Type, ptr %a75 - %t133 = call %S.gen.Val @finch.gen.exprWant(ptr %t124, %S.ast.Node %t131, %S.ast.Type %t132) - %t134 = load %S.ast.Type, ptr %a75 - %t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t136 = load { ptr, i64, i64 }, ptr %t135 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 0, %t137 - br i1 %t138, label %range5120, label %inrange5121 -range5120: - call void @finch_panic_index(ptr @.str.3211, i64 2346, i64 0, i64 %t137) - unreachable -inrange5121: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 0 - %t141 = load %S.ast.Node, ptr %t140 - %t142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t143 = load { ptr, i64, i64 }, ptr %t142 - store { ptr, i64, i64 } { ptr @.str.3212, i64 1, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.3213, i64 1, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t123, %S.gen.Val %t133, %S.ast.Type %t134, %S.ast.Node %t141, { ptr, i64, i64 } %t152) - store %S.gen.Val %t133, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_drop(ptr %a155) - store %S.gen.Val %t153, ptr %a156 - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a2 - %t159 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = load %S.ast.Type, ptr %a75 - %t162 = load ptr, ptr %a1 - %t163 = load %S.gen.Val, ptr %a156 - %t164 = call { ptr, i64, i64 } @finch.gen.own(ptr %t162, %S.gen.Val %t163) - %t165 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t160, %S.ast.Type %t161, { ptr, i64, i64 } %t164, i1 false, i1 true) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Val(ptr %a156) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -} - -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 %panic5122, label %ok5123 -panic5122: - call void @finch_panic(ptr @.str.3214, i64 2351, ptr @.str.3215) - unreachable -ok5123: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load ptr, ptr %a1 - %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t8 = load { ptr, i64, i64 }, ptr %t7 - %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 %range5124, label %inrange5125 -range5124: - call void @finch_panic_index(ptr @.str.3216, i64 2351, i64 %t11, i64 %t13) - unreachable -inrange5125: - %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 %then5126, label %endif5128 -then5126: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -endif5128: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic5129, label %ok5130 -panic5129: - call void @finch_panic(ptr @.str.3217, i64 2355, ptr @.str.3218) - unreachable -ok5130: - %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 %range5131, label %inrange5132 -range5131: - call void @finch_panic_index(ptr @.str.3219, i64 2355, i64 %t28, i64 %t30) - unreachable -inrange5132: - %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 %range5133, label %inrange5134 -range5133: - call void @finch_panic_index(ptr @.str.3220, i64 2355, i64 %t36, i64 %t38) - unreachable -inrange5134: - %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.cond5135 -each.cond5135: - %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.body5136, label %each.end5138 -each.body5136: - %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 %then5139, label %endif5141 -then5139: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 true -endif5141: - br label %each.step5137 -each.step5137: - %t56 = load i64, ptr %a43 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a43 - br label %each.cond5135 -each.end5138: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -} - -define internal void @finch.drop.S_gen_Place(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca %S.gen.Var, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca %S.ast.Type, align 16 - %a105 = alloca i1, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca i64, align 16 - %a122 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.gen.Var, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a141 = alloca %S.gen.Val, align 16 - %a152 = alloca %S.gen.Val, align 16 - %a158 = alloca i64, align 16 - %a164 = alloca %S.gen.Place, align 16 - %a179 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.gen.Val, align 16 - %a237 = alloca i64, align 16 - %a243 = alloca %S.gen.Place, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.gen.Val, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.gen.Val, align 16 - %a280 = alloca %S.gen.Val, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t4 = load { ptr, i64, i64 }, ptr %t3 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range5142, label %inrange5143 -range5142: - call void @finch_panic_index(ptr @.str.3221, i64 2364, i64 0, i64 %t5) - unreachable -inrange5143: - %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 %then5144, label %endif5146 -then5144: - %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.from5147 -logic.from5147: - br i1 %t25, label %logic.rhs5148, label %logic.end5149 -logic.rhs5148: - %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.3222, 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.rend5150 -logic.rend5150: - br label %logic.end5149 -logic.end5149: - %t32 = phi i1 [ false, %logic.from5147 ], [ %t31, %logic.rend5150 ] - br i1 %t32, label %then5151, label %endif5153 -then5151: - %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.3223, 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.3224, i64 18, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3225, i64 8, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_drop(ptr %a56) - br label %endif5153 -endif5153: - %t57 = load i64, ptr %a23 - %t58 = icmp sge i64 %t57, 0 - br label %logic.from5154 -logic.from5154: - br i1 %t58, label %logic.rhs5155, label %logic.end5156 -logic.rhs5155: - %t59 = load ptr, ptr %a1 - %t60 = load i64, ptr %a23 - %t61 = call %S.gen.Var @finch.gen.varAt(ptr %t59, i64 %t60) - %t62 = extractvalue %S.gen.Var %t61, 3 - store %S.gen.Var %t61, ptr %a63 - call void @finch.drop.S_gen_Var(ptr %a63) - br label %logic.rend5157 -logic.rend5157: - br label %logic.end5156 -logic.end5156: - %t64 = phi i1 [ false, %logic.from5154 ], [ %t62, %logic.rend5157 ] - br i1 %t64, label %then5158, label %endif5160 -then5158: - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Node, ptr %a2 - %t67 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3226, i64 19, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.3227, i64 18, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t65, %S.ast.Node %t66, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif5160 -endif5160: - br label %endif5146 -endif5146: - store { ptr, i64, i64 } { ptr @.str.3228, i64 9, i64 0 }, ptr %a78 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3229, i64 3, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %then5161, label %endif5163 -then5161: - %t85 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3230, i64 1, i64 0 }, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3231, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t94, ptr %a78 - store { ptr, i64, i64 } %t95, ptr %a96 - call void @finch_str_drop(ptr %a96) - br label %endif5163 -endif5163: - %t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.3232, i64 1, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then5164, label %endif5166 -then5164: - %t103 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3233, i64 4, i64 0 }) - store %S.ast.Type %t103, ptr %a104 - store i1 false, ptr %a105 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3234, i64 3, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then5167, label %endif5169 -then5167: - %t112 = load ptr, ptr %a1 - %t113 = load { ptr, i64, i64 }, ptr %a16 - %t114 = call i64 @finch.gen.lookup(ptr %t112, { ptr, i64, i64 } %t113) - store i64 %t114, ptr %a115 - %t116 = load i64, ptr %a115 - %t117 = icmp sge i64 %t116, 0 - br i1 %t117, label %then5170, label %endif5172 -then5170: - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a115 - %t120 = call %S.gen.Var @finch.gen.varAt(ptr %t118, i64 %t119) - %t121 = extractvalue %S.gen.Var %t120, 1 - store %S.ast.Type %t121, ptr %a122 - call void @finch.copy.S_ast_Type(ptr %a123, ptr %a122) - %t124 = load %S.ast.Type, ptr %a123 - store %S.gen.Var %t120, ptr %a125 - call void @finch.drop.S_gen_Var(ptr %a125) - %t126 = load %S.ast.Type, ptr %a104 - store %S.ast.Type %t124, ptr %a104 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - store i1 true, ptr %a105 - br label %endif5172 -endif5172: - br label %endif5169 -endif5169: - store %S.gen.Val zeroinitializer, ptr %a128 - %t129 = load i1, ptr %a105 - br i1 %t129, label %then5173, label %else5174 -then5173: - %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 %range5176, label %inrange5177 -range5176: - call void @finch_panic_index(ptr @.str.3235, i64 2392, i64 1, i64 %t133) - unreachable -inrange5177: - %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 = load %S.ast.Type, ptr %a104 - %t139 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t138) - %t140 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t139, ptr %a128 - store %S.gen.Val %t140, ptr %a141 - call void @finch.drop.S_gen_Val(ptr %a141) - br label %endif5175 -else5174: - %t142 = load ptr, ptr %a1 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load { ptr, i64, i64 }, ptr %t143 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 1, %t145 - br i1 %t146, label %range5178, label %inrange5179 -range5178: - call void @finch_panic_index(ptr @.str.3236, i64 2394, i64 1, i64 %t145) - unreachable -inrange5179: - %t147 = extractvalue { ptr, i64, i64 } %t144, 0 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 1 - %t149 = load %S.ast.Node, ptr %t148 - %t150 = call %S.gen.Val @finch.gen.expr(ptr %t142, %S.ast.Node %t149) - %t151 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t150, ptr %a128 - store %S.gen.Val %t151, ptr %a152 - call void @finch.drop.S_gen_Val(ptr %a152) - br label %endif5175 -endif5175: - %t153 = load ptr, ptr %a1 - %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic5180, label %ok5181 -panic5180: - call void @finch_panic(ptr @.str.3237, i64 2396, ptr @.str.3238) - unreachable -ok5181: - %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 11 - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i32 0, i32 1 - %t157 = load i64, ptr %t156 - store i64 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t159, %S.gen.Val %t160) - %t161 = load ptr, ptr %a1 - %t162 = load %S.ast.Node, ptr %a13 - %t163 = call %S.gen.Place @finch.gen.place(ptr %t161, %S.ast.Node %t162, i1 true) - store %S.gen.Place %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = load %S.gen.Val, ptr %a128 - %t167 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t168 = load %S.ast.Type, ptr %t167 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = load { ptr, i64, i64 }, ptr %t169 - %t171 = extractvalue { ptr, i64, i64 } %t170, 1 - %t172 = icmp uge i64 1, %t171 - br i1 %t172, label %range5182, label %inrange5183 -range5182: - call void @finch_panic_index(ptr @.str.3239, i64 2399, i64 1, i64 %t171) - unreachable -inrange5183: - %t173 = extractvalue { ptr, i64, i64 } %t170, 0 - %t174 = getelementptr inbounds %S.ast.Node, ptr %t173, i64 1 - %t175 = load %S.ast.Node, ptr %t174 - %t176 = load { ptr, i64, i64 }, ptr %a78 - %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t165, %S.gen.Val %t166, %S.ast.Type %t168, %S.ast.Node %t175, { ptr, i64, i64 } %t176) - %t178 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t177, ptr %a128 - store %S.gen.Val %t178, ptr %a179 - call void @finch.drop.S_gen_Val(ptr %a179) - %t180 = load ptr, ptr %a1 - %t181 = load %S.gen.Val, ptr %a128 - %t182 = call { ptr, i64, i64 } @finch.gen.own(ptr %t180, %S.gen.Val %t181) - store { ptr, i64, i64 } %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t186 = load %S.ast.Type, ptr %t185 - %t187 = call i1 @finch.gen.owning(ptr %t184, %S.ast.Type %t186) - br i1 %t187, label %then5184, label %else5185 -then5184: - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t191 = load %S.ast.Type, ptr %t190 - %t192 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t189, %S.ast.Type %t191) - %t193 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t195, ptr %a197 - %t198 = load ptr, ptr %a1 - %t199 = load ptr, ptr %a1 - %t200 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t201 = load %S.ast.Type, ptr %t200 - %t202 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t201) - %t203 = load { ptr, i64, i64 }, ptr %a183 - %t204 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t205 = load { ptr, i64, i64 }, ptr %t204 - call void @finch.gen.store(ptr %t198, { ptr, i64, i64 } %t202, { ptr, i64, i64 } %t203, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a197 - %t209 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t210 = load %S.ast.Type, ptr %t209 - call void @finch.gen.dropValue(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t210) - call void @finch_str_drop(ptr %a197) - br label %endif5186 -else5185: - %t211 = load ptr, ptr %a1 - %t212 = load ptr, ptr %a1 - %t213 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t214 = load %S.ast.Type, ptr %t213 - %t215 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t212, %S.ast.Type %t214) - %t216 = load { ptr, i64, i64 }, ptr %a183 - %t217 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - call void @finch.gen.store(ptr %t211, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - br label %endif5186 -endif5186: - %t220 = load ptr, ptr %a1 - %t221 = load i64, ptr %a158 - call void @finch.gen.heldEnd(ptr %t220, i64 %t221) - call void @finch_str_drop(ptr %a183) - call void @finch.drop.S_gen_Place(ptr %a164) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Type(ptr %a104) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -endif5166: - %t222 = load ptr, ptr %a1 - %t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t224 = load { ptr, i64, i64 }, ptr %t223 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 1, %t225 - br i1 %t226, label %range5187, label %inrange5188 -range5187: - call void @finch_panic_index(ptr @.str.3240, i64 2411, i64 1, i64 %t225) - unreachable -inrange5188: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.ast.Node, ptr %t227, i64 1 - %t229 = load %S.ast.Node, ptr %t228 - %t230 = call %S.gen.Val @finch.gen.expr(ptr %t222, %S.ast.Node %t229) - store %S.gen.Val %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = icmp eq ptr %t232, null - br i1 %t233, label %panic5189, label %ok5190 -panic5189: - call void @finch_panic(ptr @.str.3241, i64 2412, ptr @.str.3242) - unreachable -ok5190: - %t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 11 - %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t236 = load i64, ptr %t235 - store i64 %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = load %S.gen.Val, ptr %a231 - call void @finch.gen.hold(ptr %t238, %S.gen.Val %t239) - %t240 = load ptr, ptr %a1 - %t241 = load %S.ast.Node, ptr %a13 - %t242 = call %S.gen.Place @finch.gen.place(ptr %t240, %S.ast.Node %t241, i1 true) - store %S.gen.Place %t242, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load ptr, ptr %a1 - %t246 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t245, %S.ast.Type %t247) - %t249 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.load(ptr %t244, { ptr, i64, i64 } %t248, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 - %t254 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t253, %S.ast.Type %t258, 1 - store %S.gen.Val %t259, ptr %a260 - %t261 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t262 = load { ptr, i64, i64 }, ptr %t261 - store { ptr, i64, i64 } %t262, ptr %a263 - call void @finch_str_sub(ptr %a264, ptr %a263, i64 0, i64 1, ptr @.str.3243, i64 2416) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t265, ptr %a266 - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load { ptr, i64, i64 }, ptr %a266 - %t270 = load %S.gen.Val, ptr %a260 - %t271 = load %S.gen.Val, ptr %a231 - %t272 = load %S.ast.Node, ptr %a2 - %t273 = call %S.gen.Val @finch.gen.arith(ptr %t268, { ptr, i64, i64 } %t269, %S.gen.Val %t270, %S.gen.Val %t271, %S.ast.Node %t272) - %t274 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t275 = load %S.ast.Type, ptr %t274 - %t276 = load %S.ast.Node, ptr %a2 - %t277 = load { ptr, i64, i64 }, ptr %a78 - %t278 = call %S.gen.Val @finch.gen.coerce(ptr %t267, %S.gen.Val %t273, %S.ast.Type %t275, %S.ast.Node %t276, { ptr, i64, i64 } %t277) - store %S.gen.Val %t273, ptr %a279 - call void @finch.drop.S_gen_Val(ptr %a279) - store %S.gen.Val %t278, ptr %a280 - %t281 = load ptr, ptr %a1 - %t282 = load %S.gen.Val, ptr %a280 - %t283 = call { ptr, i64, i64 } @finch.gen.own(ptr %t281, %S.gen.Val %t282) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t288 = load %S.ast.Type, ptr %t287 - %t289 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t286, %S.ast.Type %t288) - %t290 = load { ptr, i64, i64 }, ptr %a284 - %t291 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } %t289, { ptr, i64, i64 } %t290, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load ptr, ptr %a1 - %t295 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t296 = load %S.ast.Type, ptr %t295 - %t297 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t296) - br i1 %t297, label %then5191, label %endif5193 -then5191: - %t298 = load ptr, ptr %a1 - %t299 = getelementptr inbounds %S.gen.Val, ptr %a260, i32 0, i32 0 - %t300 = load { ptr, i64, i64 }, ptr %t299 - %t301 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t302 = load %S.ast.Type, ptr %t301 - call void @finch.gen.dropValue(ptr %t298, { ptr, i64, i64 } %t300, %S.ast.Type %t302) - br label %endif5193 -endif5193: - %t303 = load ptr, ptr %a1 - %t304 = load i64, ptr %a237 - call void @finch.gen.heldEnd(ptr %t303, i64 %t304) - call void @finch_str_drop(ptr %a284) - call void @finch.drop.S_gen_Val(ptr %a280) - call void @finch_str_drop(ptr %a266) - call void @finch.drop.S_gen_Val(ptr %a260) - call void @finch.drop.S_gen_Place(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a231) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -} - -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 - %a10 = alloca %S.gen.Val, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Node, ptr %a2 - %t6 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t5) - %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3244, 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.3245, i64 11, i64 0 }) - store %S.gen.Val %t6, ptr %a10 - call void @finch.drop.S_gen_Val(ptr %a10) - store %S.ast.Type %t7, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - %t12 = extractvalue %S.gen.Val %t9, 0 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store %S.gen.Val %t9, ptr %a16 - call void @finch.drop.S_gen_Val(ptr %a16) - ret { ptr, i64, i64 } %t15 -} - -define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) { -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 %range5194, label %inrange5195 -range5194: - call void @finch_panic_index(ptr @.str.3246, i64 2431, i64 0, i64 %t6) - unreachable -inrange5195: - %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.3247, 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.3248, 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.3249, 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 %then5196, label %else5197 -then5196: - %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 %endif5198 -else5197: - %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 %endif5198 -endif5198: - %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 %range5199, label %inrange5200 -range5199: - call void @finch_panic_index(ptr @.str.3250, i64 2441, i64 1, i64 %t39) - unreachable -inrange5200: - %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 %panic5201, label %ok5202 -panic5201: - call void @finch_panic(ptr @.str.3251, i64 2442, ptr @.str.3252) - unreachable -ok5202: - %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 %then5203, label %else5204 -then5203: - %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 %range5206, label %inrange5207 -range5206: - call void @finch_panic_index(ptr @.str.3253, i64 2446, i64 2, i64 %t61) - unreachable -inrange5207: - %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.from5208 -logic.from5208: - br i1 %t66, label %logic.end5210, label %logic.rhs5209 -logic.rhs5209: - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic5211, label %ok5212 -panic5211: - call void @finch_panic(ptr @.str.3254, i64 2447, ptr @.str.3255) - unreachable -ok5212: - %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.rend5213 -logic.rend5213: - br label %logic.end5210 -logic.end5210: - %t72 = phi i1 [ true, %logic.from5208 ], [ %t71, %logic.rend5213 ] - 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 %endif5205 -else5204: - store i1 true, ptr %a49 - br label %endif5205 -endif5205: - %t75 = load i1, ptr %a49 - br i1 %t75, label %then5214, label %endif5216 -then5214: - %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 %endif5216 -endif5216: - call void @finch_str_drop(ptr %a21) - call void @finch_str_drop(ptr %a18) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a12) - ret void -} - -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 - %a99 = alloca i1, align 16 - %a118 = alloca %S.gen.Loop, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3256, 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.3257, 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.3258, 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 %range5217, label %inrange5218 -range5217: - call void @finch_panic_index(ptr @.str.3259, i64 2463, i64 0, i64 %t18) - unreachable -inrange5218: - %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.3260, 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.from5219 -logic.from5219: - br i1 %t27, label %logic.rhs5220, label %logic.end5221 -logic.rhs5220: - %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 %range5222, label %inrange5223 -range5222: - call void @finch_panic_index(ptr @.str.3261, i64 2463, i64 0, i64 %t30) - unreachable -inrange5223: - %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.3262, 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.rend5224 -logic.rend5224: - br label %logic.end5221 -logic.end5221: - %t40 = phi i1 [ false, %logic.from5219 ], [ %t39, %logic.rend5224 ] - 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 %range5225, label %inrange5226 -range5225: - call void @finch_panic_index(ptr @.str.3263, i64 2464, i64 0, i64 %t45) - unreachable -inrange5226: - %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 %then5227, label %else5228 -then5227: - %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 %endif5229 -else5228: - %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 %endif5229 -endif5229: - %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 %panic5230, label %ok5231 -panic5230: - call void @finch_panic(ptr @.str.3264, i64 2471, ptr @.str.3265) - unreachable -ok5231: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 12 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t65, ptr %a66 - 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 %panic5232, label %ok5233 -panic5232: - call void @finch_panic(ptr @.str.3266, i64 2471, ptr @.str.3267) - unreachable -ok5233: - %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 ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic5234, label %ok5235 -panic5234: - call void @finch_panic(ptr @.str.3268, i64 2471, ptr @.str.3269) - unreachable -ok5235: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 11 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.gen.Loop %t80, i64 %t85, 3 - %t87 = load i64, ptr %t64 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t63, i64 %t88, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t63 - %t90 = getelementptr inbounds %S.gen.Loop, ptr %t89, i64 %t87 - store %S.gen.Loop %t86, ptr %t90 - store i64 %t88, ptr %t64 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 1, %t93 - br i1 %t94, label %range5236, label %inrange5237 -range5236: - call void @finch_panic_index(ptr @.str.3270, i64 2472, i64 1, i64 %t93) - unreachable -inrange5237: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 1 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i1 @finch.gen.countBreaks(%S.ast.Node %t97) - store i1 %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t102 = load { ptr, i64, i64 }, ptr %t101 - %t103 = extractvalue { ptr, i64, i64 } %t102, 1 - %t104 = icmp uge i64 1, %t103 - br i1 %t104, label %range5238, label %inrange5239 -range5238: - call void @finch_panic_index(ptr @.str.3271, i64 2473, i64 1, i64 %t103) - unreachable -inrange5239: - %t105 = extractvalue { ptr, i64, i64 } %t102, 0 - %t106 = getelementptr inbounds %S.ast.Node, ptr %t105, i64 1 - %t107 = load %S.ast.Node, ptr %t106 - call void @finch.gen.block(ptr %t100, %S.ast.Node %t107, i1 true) - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic5240, label %ok5241 -panic5240: - call void @finch_panic(ptr @.str.3272, i64 2474, ptr @.str.3273) - unreachable -ok5241: - %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 12 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp eq i64 %t112, 0 - br i1 %t113, label %panic5242, label %ok5243 -panic5242: - call void @finch_panic(ptr @.str.3274, i64 2474, ptr @.str.3275) - unreachable -ok5243: - %t114 = sub i64 %t112, 1 - %t115 = load ptr, ptr %t110 - %t116 = getelementptr inbounds %S.gen.Loop, ptr %t115, i64 %t114 - %t117 = load %S.gen.Loop, ptr %t116 - store i64 %t114, ptr %t111 - store %S.gen.Loop %t117, ptr %a118 - call void @finch.drop.S_gen_Loop(ptr %a118) - %t119 = load ptr, ptr %a1 - %t120 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.br(ptr %t119, { ptr, i64, i64 } %t120) - %t121 = load i1, ptr %a41 - %t122 = xor i1 %t121, true - br label %logic.from5244 -logic.from5244: - br i1 %t122, label %logic.end5246, label %logic.rhs5245 -logic.rhs5245: - %t123 = load i1, ptr %a99 - br label %logic.rend5247 -logic.rend5247: - br label %logic.end5246 -logic.end5246: - %t124 = phi i1 [ true, %logic.from5244 ], [ %t123, %logic.rend5247 ] - br i1 %t124, label %then5248, label %endif5250 -then5248: - %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a11 - call void @finch.gen.label(ptr %t125, { ptr, i64, i64 } %t126) - br label %endif5250 -endif5250: - call void @finch_str_drop(ptr %a51) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a5) - ret void -} - -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.3276, 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 %then5251, label %endif5253 -then5251: - ret i1 true -endif5253: - %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.3277, 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.from5254 -logic.from5254: - br i1 %t13, label %logic.end5256, label %logic.rhs5255 -logic.rhs5255: - %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.3278, 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.rend5257 -logic.rend5257: - br label %logic.end5256 -logic.end5256: - %t20 = phi i1 [ true, %logic.from5254 ], [ %t19, %logic.rend5257 ] - br label %logic.from5258 -logic.from5258: - br i1 %t20, label %logic.end5260, label %logic.rhs5259 -logic.rhs5259: - %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.3279, 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.rend5261 -logic.rend5261: - br label %logic.end5260 -logic.end5260: - %t27 = phi i1 [ true, %logic.from5258 ], [ %t26, %logic.rend5261 ] - br i1 %t27, label %then5262, label %endif5264 -then5262: - ret i1 false -endif5264: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a29 - br label %each.cond5265 -each.cond5265: - %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.body5266, label %each.end5268 -each.body5266: - %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 %then5269, label %endif5271 -then5269: - ret i1 true -endif5271: - br label %each.step5267 -each.step5267: - %t40 = load i64, ptr %a29 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a29 - br label %each.cond5265 -each.end5268: - 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 - %a22 = alloca %S.gen.Val, align 16 - %a23 = alloca %S.ast.Type, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.gen.Val, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.gen.Val, align 16 - %a50 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca %S.gen.Val, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.gen.Loop, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5272, label %inrange5273 -range5272: - call void @finch_panic_index(ptr @.str.3280, i64 2498, i64 0, i64 %t7) - unreachable -inrange5273: - %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.3281, 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 %range5274, label %inrange5275 -range5274: - call void @finch_panic_index(ptr @.str.3282, i64 2498, i64 0, i64 %t16) - unreachable -inrange5275: - %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.3283, i64 20, i64 0 }) - store %S.gen.Val %t12, ptr %a22 - call void @finch.drop.S_gen_Val(ptr %a22) - store %S.ast.Type %t13, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - %t24 = extractvalue %S.gen.Val %t21, 0 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - store %S.gen.Val %t21, ptr %a28 - call void @finch.drop.S_gen_Val(ptr %a28) - store { ptr, i64, i64 } %t27, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = load ptr, ptr %a1 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t33 = load { ptr, i64, i64 }, ptr %t32 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 1, %t34 - br i1 %t35, label %range5276, label %inrange5277 -range5276: - call void @finch_panic_index(ptr @.str.3284, i64 2499, i64 1, i64 %t34) - unreachable -inrange5277: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 1 - %t38 = load %S.ast.Node, ptr %t37 - %t39 = call %S.gen.Val @finch.gen.expr(ptr %t31, %S.ast.Node %t38) - %t40 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3285, i64 3, i64 0 }) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 1, %t43 - br i1 %t44, label %range5278, label %inrange5279 -range5278: - call void @finch_panic_index(ptr @.str.3286, i64 2499, i64 1, i64 %t43) - unreachable -inrange5279: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Node, ptr %t45, i64 1 - %t47 = load %S.ast.Node, ptr %t46 - %t48 = call %S.gen.Val @finch.gen.coerce(ptr %t30, %S.gen.Val %t39, %S.ast.Type %t40, %S.ast.Node %t47, { ptr, i64, i64 } { ptr @.str.3287, i64 18, i64 0 }) - store %S.gen.Val %t39, ptr %a49 - call void @finch.drop.S_gen_Val(ptr %a49) - store %S.ast.Type %t40, ptr %a50 - call void @finch.drop.S_ast_Type(ptr %a50) - %t51 = extractvalue %S.gen.Val %t48, 0 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - store %S.gen.Val %t48, ptr %a55 - call void @finch.drop.S_gen_Val(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t57) - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3288, i64 3, i64 0 }) - %t63 = load { ptr, i64, i64 }, ptr %a29 - %t64 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t62, { ptr, i64, i64 } %t63, i1 true, i1 false) - store %S.ast.Type %t62, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t64, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.3289, i64 8, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t70, { ptr, i64, i64 } { ptr @.str.3290, i64 8, i64 0 }) - store { ptr, i64, i64 } %t71, ptr %a72 - %t73 = load ptr, ptr %a1 - %t74 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t73, { ptr, i64, i64 } { ptr @.str.3291, i64 8, i64 0 }) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3292, i64 7, i64 0 }) - store { ptr, i64, i64 } %t77, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t79, { ptr, i64, i64 } %t80) - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t81, { ptr, i64, i64 } %t82) - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a66 - %t85 = call { ptr, i64, i64 } @finch.gen.load(ptr %t83, { ptr, i64, i64 } { ptr @.str.3293, i64 3, i64 0 }, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.3294, i64 13, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.3295, i64 2, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t104, ptr %a106 - %t107 = load ptr, ptr %a1 - %t108 = load { ptr, i64, i64 }, ptr %a106 - %t109 = load { ptr, i64, i64 }, ptr %a72 - %t110 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.condBr(ptr %t107, { ptr, i64, i64 } %t108, { ptr, i64, i64 } %t109, { ptr, i64, i64 } %t110) - %t111 = load ptr, ptr %a1 - %t112 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.label(ptr %t111, { ptr, i64, i64 } %t112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic5280, label %ok5281 -panic5280: - call void @finch_panic(ptr @.str.3296, i64 2512, ptr @.str.3297) - unreachable -ok5281: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 12 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t120, 0 - %t122 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_copy(ptr %a124, ptr %a123) - %t125 = load { ptr, i64, i64 }, ptr %a124 - %t126 = insertvalue %S.gen.Loop %t121, { ptr, i64, i64 } %t125, 1 - %t127 = load ptr, ptr %a1 - %t128 = icmp eq ptr %t127, null - br i1 %t128, label %panic5282, label %ok5283 -panic5282: - call void @finch_panic(ptr @.str.3298, i64 2512, ptr @.str.3299) - unreachable -ok5283: - %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 10 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.Loop %t126, i64 %t131, 2 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic5284, label %ok5285 -panic5284: - call void @finch_panic(ptr @.str.3300, i64 2512, ptr @.str.3301) - unreachable -ok5285: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 11 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = insertvalue %S.gen.Loop %t132, i64 %t137, 3 - %t139 = load i64, ptr %t116 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t115, i64 %t140, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t115 - %t142 = getelementptr inbounds %S.gen.Loop, ptr %t141, i64 %t139 - store %S.gen.Loop %t138, ptr %t142 - store i64 %t140, ptr %t116 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 2, %t146 - br i1 %t147, label %range5286, label %inrange5287 -range5286: - call void @finch_panic_index(ptr @.str.3302, i64 2513, i64 2, i64 %t146) - unreachable -inrange5287: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i64 2 - %t150 = load %S.ast.Node, ptr %t149 - call void @finch.gen.block(ptr %t143, %S.ast.Node %t150, i1 true) - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic5288, label %ok5289 -panic5288: - call void @finch_panic(ptr @.str.3303, i64 2514, ptr @.str.3304) - unreachable -ok5289: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 12 - %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i32 0, i32 1 - %t155 = load i64, ptr %t154 - %t156 = icmp eq i64 %t155, 0 - br i1 %t156, label %panic5290, label %ok5291 -panic5290: - call void @finch_panic(ptr @.str.3305, i64 2514, ptr @.str.3306) - unreachable -ok5291: - %t157 = sub i64 %t155, 1 - %t158 = load ptr, ptr %t153 - %t159 = getelementptr inbounds %S.gen.Loop, ptr %t158, i64 %t157 - %t160 = load %S.gen.Loop, ptr %t159 - store i64 %t157, ptr %t154 - store %S.gen.Loop %t160, ptr %a161 - call void @finch.drop.S_gen_Loop(ptr %a161) - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.br(ptr %t162, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.label(ptr %t164, { ptr, i64, i64 } %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a66 - %t168 = call { ptr, i64, i64 } @finch.gen.load(ptr %t166, { ptr, i64, i64 } { ptr @.str.3307, i64 3, i64 0 }, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3309, i64 8, i64 0 }, ptr %a174 - store { ptr, i64, i64 } %t172, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.3310, i64 3, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t171, { ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.store(ptr %t170, { ptr, i64, i64 } { ptr @.str.3308, i64 3, i64 0 }, { ptr, i64, i64 } %t182, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t186, { ptr, i64, i64 } %t187) - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189) - %t190 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t190) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a106) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a72) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch_str_drop(ptr %a56) - call void @finch_str_drop(ptr %a29) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i1, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca %S.gen.Loop, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5292, label %inrange5293 -range5292: - call void @finch_panic_index(ptr @.str.3311, i64 2526, i64 0, i64 %t8) - unreachable -inrange5293: - %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 %range5294, label %inrange5295 -range5294: - call void @finch_panic_index(ptr @.str.3312, i64 2527, i64 1, i64 %t19) - unreachable -inrange5295: - %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.from5296 -logic.from5296: - br i1 %t28, label %logic.rhs5297, label %logic.end5298 -logic.rhs5297: - %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 %range5299, label %inrange5300 -range5299: - call void @finch_panic_index(ptr @.str.3313, i64 2528, i64 0, i64 %t32) - unreachable -inrange5300: - %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 %range5301, label %inrange5302 -range5301: - call void @finch_panic_index(ptr @.str.3314, i64 2528, i64 1, i64 %t40) - unreachable -inrange5302: - %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) - store { ptr, i64, i64 } %t37, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %logic.rend5303 -logic.rend5303: - br label %logic.end5298 -logic.end5298: - %t47 = phi i1 [ false, %logic.from5296 ], [ %t45, %logic.rend5303 ] - store i1 %t47, ptr %a48 - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.3315, i64 3, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.3316, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3317, i64 1, i64 0 }, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } { ptr @.str.3318, i64 0, i64 0 }, ptr %a54 - %t55 = load i1, ptr %a5 - br i1 %t55, label %then5304, label %endif5306 -then5304: - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a4 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } { ptr @.str.3320, i64 23, i64 0 }, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t65, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.3321, i64 6, i64 0 }, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - %t71 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t70, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.3322, i64 14, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.3319, i64 3, i64 0 }, { ptr, i64, i64 } %t82) - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t84, ptr %a54 - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - br label %endif5306 -endif5306: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3323, 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.3324, i64 9, i64 0 }) - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = load ptr, ptr %a1 - %t95 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t94, { ptr, i64, i64 } { ptr @.str.3325, i64 8, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t97, { ptr, i64, i64 } { ptr @.str.3326, i64 8, i64 0 }) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t100, { ptr, i64, i64 } { ptr @.str.3327, i64 7, i64 0 }) - store { ptr, i64, i64 } %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load i1, ptr %a5 - br label %logic.from5307 -logic.from5307: - br i1 %t107, label %logic.rhs5308, label %logic.end5309 -logic.rhs5308: - %t108 = load i1, ptr %a48 - br label %logic.rend5310 -logic.rend5310: - br label %logic.end5309 -logic.end5309: - %t109 = phi i1 [ false, %logic.from5307 ], [ %t108, %logic.rend5310 ] - br i1 %t109, label %then5311, label %endif5313 -then5311: - %t110 = load ptr, ptr %a1 - %t111 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t110, { ptr, i64, i64 } { ptr @.str.3328, i64 11, i64 0 }) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t113, { ptr, i64, i64 } { ptr @.str.3329, i64 8, i64 0 }) - store { ptr, i64, i64 } %t114, ptr %a115 - %t116 = load ptr, ptr %a1 - %t117 = load ptr, ptr %a1 - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Type, ptr %a4 - %t120 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t118, %S.ast.Type %t119) - store { ptr, i64, i64 } { ptr @.str.3331, i64 23, i64 0 }, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3332, i64 6, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3333, i64 14, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call { ptr, i64, i64 } @finch.gen.op(ptr %t117, { ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.3330, i64 3, i64 0 }, { ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.3334, i64 12, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.3335, i64 2, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t158, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t164) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a112 - %t168 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.condBr(ptr %t147, { ptr, i64, i64 } %t165, { ptr, i64, i64 } %t167, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t165, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load ptr, ptr %a1 - %t171 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.gen.label(ptr %t170, { ptr, i64, i64 } %t171) - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load ptr, ptr %a1 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic5314, label %ok5315 -panic5314: - call void @finch_panic(ptr @.str.3337, i64 2549, ptr @.str.3338) - unreachable -ok5315: - %t176 = getelementptr inbounds %S.gen.Gen, ptr %t174, i32 0, i32 1 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t178 = load i64, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %t176 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range5316, label %inrange5317 -range5316: - call void @finch_panic_index(ptr @.str.3339, i64 2549, i64 %t178, i64 %t180) - unreachable -inrange5317: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178 - %t184 = load { ptr, i64, i64 }, ptr %t183 - %t185 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t173, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } { ptr @.str.3336, i64 33, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.3340, i64 6, i64 0 }, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t190, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t197 = load i64, ptr %t196 - call void @finch_str_from_int(ptr %a198, i64 %t197) - %t199 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t195, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t195, ptr %a203 - call void @finch_str_drop(ptr %a203) - store { ptr, i64, i64 } %t199, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.3341, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.emit(ptr %t172, { ptr, i64, i64 } %t210) - store { ptr, i64, i64 } %t210, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t212, { ptr, i64, i64 } { ptr @.str.3342, i64 11, i64 0 }) - %t213 = load ptr, ptr %a1 - %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic5318, label %ok5319 -panic5318: - call void @finch_panic(ptr @.str.3343, i64 2551, ptr @.str.3344) - unreachable -ok5319: - %t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 9 - store i1 true, ptr %t215 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) - call void @finch_str_drop(ptr %a146) - call void @finch_str_drop(ptr %a115) - call void @finch_str_drop(ptr %a112) - br label %endif5313 -endif5313: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a51 - %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t218, { ptr, i64, i64 } { ptr @.str.3345, 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, ptr %a1 - %t225 = load %S.ast.Type, ptr %a4 - %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) - store { ptr, i64, i64 } { ptr @.str.3347, i64 23, i64 0 }, ptr %a228 - store { ptr, i64, i64 } %t226, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3348, i64 6, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t236, ptr %a239 - store { ptr, i64, i64 } %t237, ptr %a240 - call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) - store { ptr, i64, i64 } %t236, ptr %a241 - call void @finch_str_drop(ptr %a241) - %t242 = load { ptr, i64, i64 }, ptr %a238 - store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.3349, i64 14, i64 0 }, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = load { ptr, i64, i64 }, ptr %a243 - %t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t247, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } { ptr @.str.3346, i64 3, i64 0 }, { ptr, i64, i64 } %t248) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - store { ptr, i64, i64 } %t250, ptr %a252 - %t253 = load ptr, ptr %a1 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3350, i64 13, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.3351, i64 2, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t264, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a93 - %t274 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.condBr(ptr %t253, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t273, { ptr, i64, i64 } %t274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load ptr, ptr %a1 - %t277 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.label(ptr %t276, { ptr, i64, i64 } %t277) - %t278 = load ptr, ptr %a1 - %t279 = load { ptr, i64, i64 }, ptr %a3 - %t280 = load %S.ast.Type, ptr %a4 - %t281 = load { ptr, i64, i64 }, ptr %a221 - %t282 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t278, { ptr, i64, i64 } %t279, %S.ast.Type %t280, { ptr, i64, i64 } %t281) - store { ptr, i64, i64 } %t282, ptr %a283 - %t284 = load ptr, ptr %a1 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a283 - %t287 = load %S.ast.Type, ptr %a4 - %t288 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t285, { ptr, i64, i64 } %t286, %S.ast.Type %t287, i64 0) - %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t284, { ptr, i64, i64 } { ptr @.str.3352, i64 3, i64 0 }, { ptr, i64, i64 } %t288) - store { ptr, i64, i64 } %t288, ptr %a290 - call void @finch_str_drop(ptr %a290) - store { ptr, i64, i64 } %t289, ptr %a291 - %t292 = load ptr, ptr %a1 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.3353, i64 12, i64 0 }, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.3354, i64 3, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = call { ptr, i64, i64 } @finch.gen.op(ptr %t293, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t303, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a99 - %t307 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.condBr(ptr %t292, { ptr, i64, i64 } %t304, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t304, ptr %a308 - call void @finch_str_drop(ptr %a308) - %t309 = load ptr, ptr %a1 - %t310 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.label(ptr %t309, { ptr, i64, i64 } %t310) - %t311 = load ptr, ptr %a1 - %t312 = icmp eq ptr %t311, null - br i1 %t312, label %panic5320, label %ok5321 -panic5320: - call void @finch_panic(ptr @.str.3355, i64 2562, ptr @.str.3356) - unreachable -ok5321: - %t313 = getelementptr inbounds %S.gen.Gen, ptr %t311, i32 0, i32 12 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i32 0, i32 1 - %t315 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t315, ptr %a316 - call void @finch_str_copy(ptr %a317, ptr %a316) - %t318 = load { ptr, i64, i64 }, ptr %a317 - %t319 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t318, 0 - %t320 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_copy(ptr %a322, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - %t324 = insertvalue %S.gen.Loop %t319, { ptr, i64, i64 } %t323, 1 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic5322, label %ok5323 -panic5322: - call void @finch_panic(ptr @.str.3357, i64 2562, ptr @.str.3358) - unreachable -ok5323: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 10 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i32 0, i32 1 - %t329 = load i64, ptr %t328 - %t330 = insertvalue %S.gen.Loop %t324, i64 %t329, 2 - %t331 = load ptr, ptr %a1 - %t332 = icmp eq ptr %t331, null - br i1 %t332, label %panic5324, label %ok5325 -panic5324: - call void @finch_panic(ptr @.str.3359, i64 2562, ptr @.str.3360) - unreachable -ok5325: - %t333 = getelementptr inbounds %S.gen.Gen, ptr %t331, i32 0, i32 11 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 - %t335 = load i64, ptr %t334 - %t336 = insertvalue %S.gen.Loop %t330, i64 %t335, 3 - %t337 = load i64, ptr %t314 - %t338 = add i64 %t337, 1 - call void @finch_arr_reserve(ptr %t313, i64 %t338, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t339 = load ptr, ptr %t313 - %t340 = getelementptr inbounds %S.gen.Loop, ptr %t339, i64 %t337 - store %S.gen.Loop %t336, ptr %t340 - store i64 %t338, ptr %t314 - %t341 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t341) - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a16 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a283 - %t348 = load %S.ast.Type, ptr %a4 - %t349 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t346, { ptr, i64, i64 } %t347, %S.ast.Type %t348, i64 1) - %t350 = call { ptr, i64, i64 } @finch.gen.load(ptr %t342, { ptr, i64, i64 } %t345, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t345, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_drop(ptr %a352) - store { ptr, i64, i64 } %t350, ptr %a353 - %t354 = load i1, ptr %a48 - br i1 %t354, label %then5326, label %endif5328 -then5326: - %t355 = load ptr, ptr %a1 - %t356 = load { ptr, i64, i64 }, ptr %a353 - %t357 = load %S.ast.Type, ptr %a16 - %t358 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t355, { ptr, i64, i64 } %t356, %S.ast.Type %t357) - %t359 = load { ptr, i64, i64 }, ptr %a353 - store { ptr, i64, i64 } %t358, ptr %a353 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif5328 -endif5328: - %t361 = load ptr, ptr %a1 - %t362 = load %S.ast.Node, ptr %a2 - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - %t365 = load %S.ast.Type, ptr %a16 - %t366 = load { ptr, i64, i64 }, ptr %a353 - %t367 = load i1, ptr %a48 - %t368 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t364, %S.ast.Type %t365, { ptr, i64, i64 } %t366, i1 true, i1 %t367) - store { ptr, i64, i64 } %t368, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load i64, ptr %t371 - %t373 = icmp sgt i64 %t372, 0 - br i1 %t373, label %then5329, label %endif5331 -then5329: - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a27 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - %t378 = load ptr, ptr %a1 - %t379 = load { ptr, i64, i64 }, ptr %a283 - %t380 = load %S.ast.Type, ptr %a4 - %t381 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t378, { ptr, i64, i64 } %t379, %S.ast.Type %t380, i64 2) - %t382 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t377, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t377, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t381, ptr %a384 - call void @finch_str_drop(ptr %a384) - store { ptr, i64, i64 } %t382, ptr %a385 - %t386 = load i1, ptr %a48 - br i1 %t386, label %then5332, label %endif5334 -then5332: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a385 - %t389 = load %S.ast.Type, ptr %a27 - %t390 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t387, { ptr, i64, i64 } %t388, %S.ast.Type %t389) - %t391 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a385 - store { ptr, i64, i64 } %t391, ptr %a392 - call void @finch_str_drop(ptr %a392) - br label %endif5334 -endif5334: - %t393 = load ptr, ptr %a1 - %t394 = load %S.ast.Node, ptr %a2 - %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = load %S.ast.Type, ptr %a27 - %t398 = load { ptr, i64, i64 }, ptr %a385 - %t399 = load i1, ptr %a48 - %t400 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t393, %S.ast.Node %t394, { ptr, i64, i64 } %t396, %S.ast.Type %t397, { ptr, i64, i64 } %t398, i1 true, i1 %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - call void @finch_str_drop(ptr %a401) - call void @finch_str_drop(ptr %a385) - br label %endif5331 -endif5331: - %t402 = load ptr, ptr %a1 - %t403 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t404 = load { ptr, i64, i64 }, ptr %t403 - %t405 = extractvalue { ptr, i64, i64 } %t404, 1 - %t406 = icmp uge i64 1, %t405 - br i1 %t406, label %range5335, label %inrange5336 -range5335: - call void @finch_panic_index(ptr @.str.3361, i64 2576, i64 1, i64 %t405) - unreachable -inrange5336: - %t407 = extractvalue { ptr, i64, i64 } %t404, 0 - %t408 = getelementptr inbounds %S.ast.Node, ptr %t407, i64 1 - %t409 = load %S.ast.Node, ptr %t408 - call void @finch.gen.block(ptr %t402, %S.ast.Node %t409, i1 true) - %t410 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t410) - %t411 = load ptr, ptr %a1 - %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic5337, label %ok5338 -panic5337: - call void @finch_panic(ptr @.str.3362, i64 2578, ptr @.str.3363) - unreachable -ok5338: - %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 12 - %t414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t413, i32 0, i32 1 - %t415 = load i64, ptr %t414 - %t416 = icmp eq i64 %t415, 0 - br i1 %t416, label %panic5339, label %ok5340 -panic5339: - call void @finch_panic(ptr @.str.3364, i64 2578, ptr @.str.3365) - unreachable -ok5340: - %t417 = sub i64 %t415, 1 - %t418 = load ptr, ptr %t413 - %t419 = getelementptr inbounds %S.gen.Loop, ptr %t418, i64 %t417 - %t420 = load %S.gen.Loop, ptr %t419 - store i64 %t417, ptr %t414 - store %S.gen.Loop %t420, ptr %a421 - call void @finch.drop.S_gen_Loop(ptr %a421) - %t422 = load ptr, ptr %a1 - %t423 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.br(ptr %t422, { ptr, i64, i64 } %t423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = load { ptr, i64, i64 }, ptr %a51 - %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t426, { ptr, i64, i64 } { ptr @.str.3366, i64 3, i64 0 }, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t428, ptr %a429 - %t430 = load ptr, ptr %a1 - %t431 = load ptr, ptr %a1 - %t432 = load { ptr, i64, i64 }, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.3368, i64 8, i64 0 }, ptr %a434 - store { ptr, i64, i64 } %t432, ptr %a435 - call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) - %t436 = load { ptr, i64, i64 }, ptr %a433 - store { ptr, i64, i64 } %t436, ptr %a438 - store { ptr, i64, i64 } { ptr @.str.3369, i64 3, i64 0 }, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t436, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t431, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t430, { ptr, i64, i64 } { ptr @.str.3367, i64 3, i64 0 }, { ptr, i64, i64 } %t442, { ptr, i64, i64 } %t444) - store { ptr, i64, i64 } %t442, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t446, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.label(ptr %t448, { ptr, i64, i64 } %t449) - call void @finch_str_drop(ptr %a429) - call void @finch_str_drop(ptr %a353) - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a283) - call void @finch_str_drop(ptr %a252) - call void @finch_str_drop(ptr %a221) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a96) - call void @finch_str_drop(ptr %a93) - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret void -} - -define internal void @finch.drop.S_gen_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 1 - call void @finch.drop.S_gen_Place(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 2 - call void @finch.drop.S_gen_Val(ptr %t2) - ret void -} - -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.ast.Type, align 16 - %a31 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a39 = alloca %S.ast.Type, align 16 - %a42 = alloca %S.ast.Type, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca i1, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.Loop, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - 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 %range5341, label %inrange5342 -range5341: - call void @finch_panic_index(ptr @.str.3370, i64 2589, i64 0, i64 %t7) - unreachable -inrange5342: - %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.3371, i64 0, i64 0 }, ptr %a14 - %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3372, 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 %then5343, label %else5344 -then5343: - %t19 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t20 = getelementptr inbounds %S.gen.Place, ptr %t19, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - call void @finch_str_copy(ptr %a23, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - %t25 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t24, ptr %a14 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t28 = getelementptr inbounds %S.gen.Place, ptr %t27, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - store %S.ast.Type %t29, ptr %a30 - call void @finch.copy.S_ast_Type(ptr %a31, ptr %a30) - %t32 = load %S.ast.Type, ptr %a31 - %t33 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t32, ptr %a16 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - br label %endif5345 -else5344: - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t36 = getelementptr inbounds %S.gen.Val, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Type, ptr %t36 - store %S.ast.Type %t37, ptr %a38 - call void @finch.copy.S_ast_Type(ptr %a39, ptr %a38) - %t40 = load %S.ast.Type, ptr %a39 - %t41 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t40, ptr %a16 - store %S.ast.Type %t41, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic5346, label %ok5347 -panic5346: - call void @finch_panic(ptr @.str.3374, i64 2597, ptr @.str.3375) - unreachable -ok5347: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 25 - %t48 = load i64, ptr %t47 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3373, i64 5, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load %S.ast.Type, ptr %a16 - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t59 = load %S.gen.Val, ptr %t58 - %t60 = call { ptr, i64, i64 } @finch.gen.own(ptr %t57, %S.gen.Val %t59) - %t61 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t60, i1 false, i1 true) - store { ptr, i64, i64 } %t55, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t61, ptr %a14 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif5345 -endif5345: - %t66 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t67 = load { ptr, i64, i64 }, ptr %t66 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.3376, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then5348, label %endif5350 -then5348: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = load { ptr, i64, i64 }, ptr %a14 - %t75 = load %S.ast.Type, ptr %a16 - %t76 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t77 = load i1, ptr %t76 - call void @finch.gen.eachMap(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t74, %S.ast.Type %t75, i1 %t77) - %t78 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t78) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -endif5350: - %t79 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3377, i64 5, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp eq i32 %t83, 0 - br label %logic.from5351 -logic.from5351: - br i1 %t84, label %logic.rhs5352, label %logic.end5353 -logic.rhs5352: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3378, i64 3, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp eq i32 %t89, 0 - br label %logic.rend5354 -logic.rend5354: - br label %logic.end5353 -logic.end5353: - %t91 = phi i1 [ false, %logic.from5351 ], [ %t90, %logic.rend5354 ] - br i1 %t91, label %then5355, label %endif5357 -then5355: - %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 %range5358, label %inrange5359 -range5358: - call void @finch_panic_index(ptr @.str.3379, i64 2605, i64 0, i64 %t95) - unreachable -inrange5359: - %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 = load %S.ast.Type, ptr %a16 - %t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100) - store { ptr, i64, i64 } { ptr @.str.3380, i64 55, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3381, i64 36, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif5357 -endif5357: - %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3382, i64 4, i64 0 }) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3383, i64 5, i64 0 }, ptr %a118 - %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) - %t120 = icmp ne i32 %t119, 0 - br i1 %t120, label %then5360, label %endif5362 -then5360: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 0, %t123 - br i1 %t124, label %range5363, label %inrange5364 -range5363: - call void @finch_panic_index(ptr @.str.3384, i64 2609, i64 0, i64 %t123) - unreachable -inrange5364: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i64 0 - %t127 = load %S.ast.Type, ptr %t126 - store %S.ast.Type %t127, ptr %a128 - call void @finch.copy.S_ast_Type(ptr %a129, ptr %a128) - %t130 = load %S.ast.Type, ptr %a129 - %t131 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t130, ptr %a114 - store %S.ast.Type %t131, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - br label %endif5362 -endif5362: - %t133 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t134 = load i1, ptr %t133 - br label %logic.from5365 -logic.from5365: - br i1 %t134, label %logic.rhs5366, label %logic.end5367 -logic.rhs5366: - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a114 - %t137 = call i1 @finch.gen.owning(ptr %t135, %S.ast.Type %t136) - br label %logic.rend5368 -logic.rend5368: - br label %logic.end5367 -logic.end5367: - %t138 = phi i1 [ false, %logic.from5365 ], [ %t137, %logic.rend5368 ] - br label %logic.from5369 -logic.from5369: - br i1 %t138, label %logic.rhs5370, label %logic.end5371 -logic.rhs5370: - %t139 = load ptr, ptr %a1 - %t140 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t141 = load { ptr, i64, i64 }, ptr %t140 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range5372, label %inrange5373 -range5372: - call void @finch_panic_index(ptr @.str.3385, i64 2611, i64 0, i64 %t142) - unreachable -inrange5373: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 0 - %t146 = load %S.ast.Node, ptr %t145 - %t147 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t146) - %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t149 = load { ptr, i64, i64 }, ptr %t148 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 1, %t150 - br i1 %t151, label %range5374, label %inrange5375 -range5374: - call void @finch_panic_index(ptr @.str.3386, i64 2611, i64 1, i64 %t150) - unreachable -inrange5375: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 1 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = call i1 @finch.gen.mutates(ptr %t139, { ptr, i64, i64 } %t147, %S.ast.Node %t154) - store { ptr, i64, i64 } %t147, ptr %a156 - call void @finch_str_drop(ptr %a156) - br label %logic.rend5376 -logic.rend5376: - br label %logic.end5371 -logic.end5371: - %t157 = phi i1 [ false, %logic.from5369 ], [ %t155, %logic.rend5376 ] - store i1 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } { ptr @.str.3387, i64 3, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t162, { ptr, i64, i64 } { ptr @.str.3388, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3389, i64 1, i64 0 }, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3390, i64 9, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t167, { ptr, i64, i64 } { ptr @.str.3391, i64 9, i64 0 }) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t170, { ptr, i64, i64 } { ptr @.str.3392, i64 9, i64 0 }) - store { ptr, i64, i64 } %t171, ptr %a172 - %t173 = load ptr, ptr %a1 - %t174 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t173, { ptr, i64, i64 } { ptr @.str.3393, i64 8, i64 0 }) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load ptr, ptr %a1 - %t177 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t176, { ptr, i64, i64 } %t177) - %t178 = load ptr, ptr %a1 - %t179 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) - %t180 = load ptr, ptr %a1 - %t181 = load ptr, ptr %a1 - %t182 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3395, i64 46, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.3396, i64 14, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = call { ptr, i64, i64 } @finch.gen.op(ptr %t181, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t180, { ptr, i64, i64 } { ptr @.str.3394, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_drop(ptr %a195) - store { ptr, i64, i64 } %t194, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a161 - %t199 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.3397, i64 3, i64 0 }, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.3398, i64 13, i64 0 }, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t206, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3399, i64 2, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t211, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t201, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - store { ptr, i64, i64 } %t218, ptr %a220 - %t221 = load ptr, ptr %a1 - %t222 = load { ptr, i64, i64 }, ptr %a220 - %t223 = load { ptr, i64, i64 }, ptr %a169 - %t224 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.condBr(ptr %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223, { ptr, i64, i64 } %t224) - %t225 = load ptr, ptr %a1 - %t226 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.label(ptr %t225, { ptr, i64, i64 } %t226) - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a14 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } { ptr @.str.3400, i64 3, i64 0 }, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t229, ptr %a230 - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a114 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - store { ptr, i64, i64 } { ptr @.str.3401, i64 23, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3402, i64 6, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t239, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t244, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t244, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.3403, i64 6, i64 0 }, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - store { ptr, i64, i64 } %t250, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a251 - %t256 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t262, ptr %a264 - %t265 = load ptr, ptr %a1 - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Type, ptr %a114 - %t268 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t266, %S.ast.Type %t267) - %t269 = load { ptr, i64, i64 }, ptr %a264 - %t270 = call { ptr, i64, i64 } @finch.gen.load(ptr %t265, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_drop(ptr %a271) - store { ptr, i64, i64 } %t270, ptr %a272 - %t273 = load i1, ptr %a158 - br i1 %t273, label %then5377, label %endif5379 -then5377: - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a272 - %t276 = load %S.ast.Type, ptr %a114 - %t277 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276) - %t278 = load { ptr, i64, i64 }, ptr %a272 - store { ptr, i64, i64 } %t277, ptr %a272 - store { ptr, i64, i64 } %t278, ptr %a279 - call void @finch_str_drop(ptr %a279) - br label %endif5379 -endif5379: - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic5380, label %ok5381 -panic5380: - call void @finch_panic(ptr @.str.3404, i64 2631, ptr @.str.3405) - unreachable -ok5381: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - %t284 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t284, ptr %a285 - call void @finch_str_copy(ptr %a286, ptr %a285) - %t287 = load { ptr, i64, i64 }, ptr %a286 - %t288 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t287, 0 - %t289 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_copy(ptr %a291, ptr %a290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - %t293 = insertvalue %S.gen.Loop %t288, { ptr, i64, i64 } %t292, 1 - %t294 = load ptr, ptr %a1 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic5382, label %ok5383 -panic5382: - call void @finch_panic(ptr @.str.3406, i64 2631, ptr @.str.3407) - unreachable -ok5383: - %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 10 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 - %t298 = load i64, ptr %t297 - %t299 = insertvalue %S.gen.Loop %t293, i64 %t298, 2 - %t300 = load ptr, ptr %a1 - %t301 = icmp eq ptr %t300, null - br i1 %t301, label %panic5384, label %ok5385 -panic5384: - call void @finch_panic(ptr @.str.3408, i64 2631, ptr @.str.3409) - unreachable -ok5385: - %t302 = getelementptr inbounds %S.gen.Gen, ptr %t300, i32 0, i32 11 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i32 0, i32 1 - %t304 = load i64, ptr %t303 - %t305 = insertvalue %S.gen.Loop %t299, i64 %t304, 3 - %t306 = load i64, ptr %t283 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %t282, i64 %t307, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %t282 - %t309 = getelementptr inbounds %S.gen.Loop, ptr %t308, i64 %t306 - store %S.gen.Loop %t305, ptr %t309 - store i64 %t307, ptr %t283 - %t310 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t310) - %t311 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = icmp sgt i64 %t319, 0 - br i1 %t320, label %then5386, label %endif5388 -then5386: - %t321 = load ptr, ptr %a1 - %t322 = load %S.ast.Node, ptr %a2 - %t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t324 = load { ptr, i64, i64 }, ptr %t323 - %t325 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3410, i64 3, i64 0 }) - %t326 = load { ptr, i64, i64 }, ptr %a200 - %t327 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } %t324, %S.ast.Type %t325, { ptr, i64, i64 } %t326, i1 true, i1 false) - store %S.ast.Type %t325, ptr %a328 - call void @finch.drop.S_ast_Type(ptr %a328) - store { ptr, i64, i64 } %t327, ptr %a329 - call void @finch_str_drop(ptr %a329) - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t331, ptr %a332 - call void @finch_str_copy(ptr %a333, ptr %a332) - %t334 = load { ptr, i64, i64 }, ptr %a333 - %t335 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t334, ptr %a316 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif5388 -endif5388: - %t337 = load ptr, ptr %a1 - %t338 = load %S.ast.Node, ptr %a2 - %t339 = load { ptr, i64, i64 }, ptr %a316 - %t340 = load %S.ast.Type, ptr %a114 - %t341 = load { ptr, i64, i64 }, ptr %a272 - %t342 = load i1, ptr %a158 - %t343 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t337, %S.ast.Node %t338, { ptr, i64, i64 } %t339, %S.ast.Type %t340, { ptr, i64, i64 } %t341, i1 true, i1 %t342) - store { ptr, i64, i64 } %t343, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load ptr, ptr %a1 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t347 = load { ptr, i64, i64 }, ptr %t346 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 1, %t348 - br i1 %t349, label %range5389, label %inrange5390 -range5389: - call void @finch_panic_index(ptr @.str.3411, i64 2639, i64 1, i64 %t348) - unreachable -inrange5390: - %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 %panic5391, label %ok5392 -panic5391: - call void @finch_panic(ptr @.str.3412, i64 2641, ptr @.str.3413) - unreachable -ok5392: - %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 12 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %panic5393, label %ok5394 -panic5393: - call void @finch_panic(ptr @.str.3414, i64 2641, ptr @.str.3415) - unreachable -ok5394: - %t360 = sub i64 %t358, 1 - %t361 = load ptr, ptr %t356 - %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 - %t363 = load %S.gen.Loop, ptr %t362 - store i64 %t360, ptr %t357 - store %S.gen.Loop %t363, ptr %a364 - call void @finch.drop.S_gen_Loop(ptr %a364) - %t365 = load ptr, ptr %a1 - %t366 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.br(ptr %t365, { ptr, i64, i64 } %t366) - %t367 = load ptr, ptr %a1 - %t368 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.label(ptr %t367, { ptr, i64, i64 } %t368) - %t369 = load ptr, ptr %a1 - %t370 = load { ptr, i64, i64 }, ptr %a161 - %t371 = call { ptr, i64, i64 } @finch.gen.load(ptr %t369, { ptr, i64, i64 } { ptr @.str.3416, i64 3, i64 0 }, { ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.3418, i64 8, i64 0 }, ptr %a377 - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) - %t379 = load { ptr, i64, i64 }, ptr %a376 - store { ptr, i64, i64 } %t379, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.3419, i64 3, i64 0 }, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t379, ptr %a383 - call void @finch_str_drop(ptr %a383) - %t384 = load { ptr, i64, i64 }, ptr %a380 - %t385 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t384) - store { ptr, i64, i64 } %t384, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.3417, i64 3, i64 0 }, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387) - store { ptr, i64, i64 } %t385, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load ptr, ptr %a1 - %t390 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t389, { ptr, i64, i64 } %t390) - %t391 = load ptr, ptr %a1 - %t392 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.label(ptr %t391, { ptr, i64, i64 } %t392) - %t393 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t393) - call void @finch_str_drop(ptr %a372) - call void @finch_str_drop(ptr %a316) - call void @finch_str_drop(ptr %a272) - call void @finch_str_drop(ptr %a264) - call void @finch_str_drop(ptr %a230) - call void @finch_str_drop(ptr %a220) - call void @finch_str_drop(ptr %a200) - call void @finch_str_drop(ptr %a196) - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a172) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -} - -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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.gen.Val, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a329 = alloca i64, align 16 - %a342 = alloca i64, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca %S.gen.Var, align 16 - %a421 = alloca %S.gen.Var, align 16 - %a423 = alloca %S.gen.Var, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.gen.Val, align 16 - %a512 = alloca %S.gen.Val, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5395, label %ok5396 -panic5395: - call void @finch_panic(ptr @.str.3420, i64 2652, ptr @.str.3421) - unreachable -ok5396: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5397, label %endif5399 -then5397: - %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.3422, i64 33, i64 0 }) - br label %endif5399 -endif5399: - %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.from5400 -logic.from5400: - br i1 %t13, label %logic.rhs5401, label %logic.end5402 -logic.rhs5401: - %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 %range5403, label %inrange5404 -range5403: - call void @finch_panic_index(ptr @.str.3423, i64 2656, i64 0, i64 %t16) - unreachable -inrange5404: - %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.3424, 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.rend5405 -logic.rend5405: - br label %logic.end5402 -logic.end5402: - %t26 = phi i1 [ false, %logic.from5400 ], [ %t25, %logic.rend5405 ] - br label %logic.from5406 -logic.from5406: - br i1 %t26, label %logic.rhs5407, label %logic.end5408 -logic.rhs5407: - %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 %range5409, label %inrange5410 -range5409: - call void @finch_panic_index(ptr @.str.3425, i64 2656, i64 0, i64 %t29) - unreachable -inrange5410: - %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.3426, 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.rend5411 -logic.rend5411: - br label %logic.end5408 -logic.end5408: - %t39 = phi i1 [ false, %logic.from5406 ], [ %t38, %logic.rend5411 ] - br i1 %t39, label %then5412, label %endif5414 -then5412: - %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 %range5415, label %inrange5416 -range5415: - call void @finch_panic_index(ptr @.str.3427, i64 2657, i64 0, i64 %t42) - unreachable -inrange5416: - %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 %panic5417, label %ok5418 -panic5417: - call void @finch_panic(ptr @.str.3428, i64 2658, ptr @.str.3429) - unreachable -ok5418: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 13 - %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9 - %t55 = load i1, ptr %t54 - %t56 = xor i1 %t55, true - br i1 %t56, label %then5419, label %endif5421 -then5419: - store { ptr, i64, i64 } { ptr @.str.3430, i64 1, i64 0 }, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic5422, label %ok5423 -panic5422: - call void @finch_panic(ptr @.str.3431, i64 2660, ptr @.str.3432) - unreachable -ok5423: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 13 - %t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12 - %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3433, 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 %then5424, label %endif5426 -then5424: - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic5427, label %ok5428 -panic5427: - call void @finch_panic(ptr @.str.3434, i64 2661, ptr @.str.3435) - unreachable -ok5428: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 13 - %t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3436, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t78, ptr %a57 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif5426 -endif5426: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a50 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic5429, label %ok5430 -panic5429: - call void @finch_panic(ptr @.str.3438, i64 2663, ptr @.str.3439) - unreachable -ok5430: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 13 - %t86 = getelementptr inbounds %S.gen.FnSig, ptr %t85, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.3437, i64 1, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3440, i64 64, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t96, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t96, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.3441, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.fail(ptr %t81, %S.ast.Node %t82, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a57) - br label %endif5421 -endif5421: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a50 - call void @finch.gen.checkArgs(ptr %t109, %S.ast.Node %t110, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3442, i64 5, i64 0 }) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t114 = load { ptr, i64, i64 }, ptr %t113 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 0, %t115 - br i1 %t116, label %range5431, label %inrange5432 -range5431: - call void @finch_panic_index(ptr @.str.3443, i64 2666, i64 0, i64 %t115) - unreachable -inrange5432: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.ast.Node, ptr %t117, i64 0 - %t119 = load %S.ast.Node, ptr %t118 - %t120 = call %S.gen.Val @finch.gen.expr(ptr %t112, %S.ast.Node %t119) - %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3444, i64 3, i64 0 }) - %t122 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 0, %t124 - br i1 %t125, label %range5433, label %inrange5434 -range5433: - call void @finch_panic_index(ptr @.str.3445, i64 2666, i64 0, i64 %t124) - unreachable -inrange5434: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.ast.Node, ptr %t126, i64 0 - %t128 = load %S.ast.Node, ptr %t127 - %t129 = call %S.gen.Val @finch.gen.coerce(ptr %t111, %S.gen.Val %t120, %S.ast.Type %t121, %S.ast.Node %t128, { ptr, i64, i64 } { ptr @.str.3446, i64 17, i64 0 }) - store %S.gen.Val %t120, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - store %S.ast.Type %t121, ptr %a131 - call void @finch.drop.S_ast_Type(ptr %a131) - store %S.gen.Val %t129, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = load %S.gen.Val, ptr %a132 - %t135 = call { ptr, i64, i64 } @finch.gen.own(ptr %t133, %S.gen.Val %t134) - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t137, i64 0) - %t138 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t138, i64 0) - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic5435, label %ok5436 -panic5435: - call void @finch_panic(ptr @.str.3448, i64 2670, ptr @.str.3449) - unreachable -ok5436: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 13 - %t144 = load %S.gen.FnSig, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t140, %S.gen.FnSig %t144) - store { ptr, i64, i64 } { ptr @.str.3447, i64 4, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t145, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.3450, i64 1, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load ptr, ptr %a1 - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic5437, label %ok5438 -panic5437: - call void @finch_panic(ptr @.str.3452, i64 2670, ptr @.str.3453) - unreachable -ok5438: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 13 - %t161 = load %S.gen.FnSig, ptr %t160 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t157, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.3451, i64 12, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3454, i64 36, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3455, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t156, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t155, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t155, ptr %a189 - call void @finch_str_drop(ptr %a189) - store { ptr, i64, i64 } %t184, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t139, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5439, label %ok5440 -panic5439: - call void @finch_panic(ptr @.str.3456, i64 2671, ptr @.str.3457) - unreachable -ok5440: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Val(ptr %a132) - call void @finch.drop.S_ast_Node(ptr %a50) - ret void -endif5414: - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5441, label %ok5442 -panic5441: - call void @finch_panic(ptr @.str.3458, i64 2674, ptr @.str.3459) - unreachable -ok5442: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 13 - %t199 = getelementptr inbounds %S.gen.FnSig, ptr %t198, i32 0, i32 12 - %t200 = getelementptr inbounds %S.ast.Type, ptr %t199, i32 0, i32 0 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.3460, i64 4, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %then5443, label %endif5445 -then5443: - %t206 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = load i64, ptr %t207 - %t209 = icmp sgt i64 %t208, 0 - br i1 %t209, label %then5446, label %endif5448 -then5446: - %t210 = load ptr, ptr %a1 - %t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t212 = load { ptr, i64, i64 }, ptr %t211 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 0, %t213 - br i1 %t214, label %range5449, label %inrange5450 -range5449: - call void @finch_panic_index(ptr @.str.3461, i64 2676, i64 0, i64 %t213) - unreachable -inrange5450: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 0 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic5451, label %ok5452 -panic5451: - call void @finch_panic(ptr @.str.3463, i64 2676, ptr @.str.3464) - unreachable -ok5452: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 13 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %t220, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } { ptr @.str.3462, i64 1, i64 0 }, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.3465, i64 46, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif5448 -endif5448: - %t233 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t233, i64 0) - %t234 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t234, i64 0) - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic5453, label %ok5454 -panic5453: - call void @finch_panic(ptr @.str.3466, i64 2680, ptr @.str.3467) - unreachable -ok5454: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 13 - %t238 = getelementptr inbounds %S.gen.FnSig, ptr %t237, i32 0, i32 9 - %t239 = load i1, ptr %t238 - br i1 %t239, label %then5455, label %else5456 -then5455: - %t240 = load ptr, ptr %a1 - %t241 = load ptr, ptr %a1 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic5458, label %ok5459 -panic5458: - call void @finch_panic(ptr @.str.3469, i64 2681, ptr @.str.3470) - unreachable -ok5459: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 13 - %t245 = load %S.gen.FnSig, ptr %t244 - %t246 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t241, %S.gen.FnSig %t245) - store { ptr, i64, i64 } { ptr @.str.3468, i64 4, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.3471, i64 53, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif5457 -else5456: - %t258 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } { ptr @.str.3472, i64 8, i64 0 }) - br label %endif5457 -endif5457: - %t259 = load ptr, ptr %a1 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic5460, label %ok5461 -panic5460: - call void @finch_panic(ptr @.str.3473, i64 2685, ptr @.str.3474) - unreachable -ok5461: - %t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9 - store i1 true, ptr %t261 - ret void -endif5445: - %t262 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1 - %t264 = load i64, ptr %t263 - %t265 = icmp eq i64 %t264, 0 - br i1 %t265, label %then5462, label %endif5464 -then5462: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic5465, label %ok5466 -panic5465: - call void @finch_panic(ptr @.str.3476, i64 2689, ptr @.str.3477) - unreachable -ok5466: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 13 - %t271 = getelementptr inbounds %S.gen.FnSig, ptr %t270, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } { ptr @.str.3475, i64 1, i64 0 }, ptr %a274 - store { ptr, i64, i64 } %t272, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } %t276, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.3478, i64 14, i64 0 }, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t276, ptr %a280 - call void @finch_str_drop(ptr %a280) - %t281 = load { ptr, i64, i64 }, ptr %a277 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic5467, label %ok5468 -panic5467: - call void @finch_panic(ptr @.str.3479, i64 2689, ptr @.str.3480) - unreachable -ok5468: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 13 - %t285 = getelementptr inbounds %S.gen.FnSig, ptr %t284, i32 0, i32 12 - %t286 = load %S.ast.Type, ptr %t285 - %t287 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t286) - store { ptr, i64, i64 } %t281, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t281, ptr %a291 - call void @finch_str_drop(ptr %a291) - store { ptr, i64, i64 } %t287, ptr %a292 - call void @finch_str_drop(ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t293) - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - br label %endif5464 -endif5464: - %t295 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t296 = load { ptr, i64, i64 }, ptr %t295 - %t297 = extractvalue { ptr, i64, i64 } %t296, 1 - %t298 = icmp uge i64 0, %t297 - br i1 %t298, label %range5469, label %inrange5470 -range5469: - call void @finch_panic_index(ptr @.str.3481, i64 2692, i64 0, i64 %t297) - unreachable -inrange5470: - %t299 = extractvalue { ptr, i64, i64 } %t296, 0 - %t300 = getelementptr inbounds %S.ast.Node, ptr %t299, i64 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.3482, i64 3, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp ne i32 %t305, 0 - br i1 %t306, label %then5471, label %endif5473 -then5471: - %t307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = extractvalue { ptr, i64, i64 } %t308, 1 - %t310 = icmp uge i64 0, %t309 - br i1 %t310, label %range5474, label %inrange5475 -range5474: - call void @finch_panic_index(ptr @.str.3483, i64 2693, i64 0, i64 %t309) - unreachable -inrange5475: - %t311 = extractvalue { ptr, i64, i64 } %t308, 0 - %t312 = getelementptr inbounds %S.ast.Node, ptr %t311, i64 0 - %t313 = getelementptr inbounds %S.ast.Node, ptr %t312, i32 0, i32 1 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t314, ptr %a315 - call void @finch_str_copy(ptr %a316, ptr %a315) - %t317 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic5476, label %ok5477 -panic5476: - call void @finch_panic(ptr @.str.3484, i64 2694, ptr @.str.3485) - unreachable -ok5477: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 10 - %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i32 0, i32 1 - %t323 = load i64, ptr %t322 - store i64 %t323, ptr %a324 - br label %while.cond5478 -while.cond5478: - %t325 = load i64, ptr %a324 - %t326 = icmp sgt i64 %t325, 0 - br i1 %t326, label %while.body5479, label %while.end5480 -while.body5479: - %t327 = load i64, ptr %a324 - %t328 = sub i64 %t327, 1 - store i64 %t328, ptr %a324 - store i64 -1, ptr %a329 - %t330 = load ptr, ptr %a1 - %t331 = icmp eq ptr %t330, null - br i1 %t331, label %panic5481, label %ok5482 -panic5481: - call void @finch_panic(ptr @.str.3486, i64 2698, ptr @.str.3487) - unreachable -ok5482: - %t332 = getelementptr inbounds %S.gen.Gen, ptr %t330, i32 0, i32 10 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %t332 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range5483, label %inrange5484 -range5483: - call void @finch_panic_index(ptr @.str.3488, i64 2698, i64 %t333, i64 %t335) - unreachable -inrange5484: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Scope, ptr %t337, i64 %t333 - %t339 = getelementptr inbounds %S.gen.Scope, ptr %t338, i32 0, i32 0 - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %t339, i32 0, i32 1 - %t341 = load i64, ptr %t340 - store i64 0, ptr %a342 - br label %for.cond5485 -for.cond5485: - %t343 = load i64, ptr %a342 - %t344 = icmp slt i64 %t343, %t341 - br i1 %t344, label %for.body5486, label %for.end5488 -for.body5486: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic5489, label %ok5490 -panic5489: - call void @finch_panic(ptr @.str.3489, i64 2699, ptr @.str.3490) - unreachable -ok5490: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 10 - %t348 = load i64, ptr %a324 - %t349 = load { ptr, i64, i64 }, ptr %t347 - %t350 = extractvalue { ptr, i64, i64 } %t349, 1 - %t351 = icmp uge i64 %t348, %t350 - br i1 %t351, label %range5491, label %inrange5492 -range5491: - call void @finch_panic_index(ptr @.str.3491, i64 2699, i64 %t348, i64 %t350) - unreachable -inrange5492: - %t352 = extractvalue { ptr, i64, i64 } %t349, 0 - %t353 = getelementptr inbounds %S.gen.Scope, ptr %t352, i64 %t348 - %t354 = getelementptr inbounds %S.gen.Scope, ptr %t353, i32 0, i32 0 - %t355 = load i64, ptr %a342 - %t356 = load { ptr, i64, i64 }, ptr %t354 - %t357 = extractvalue { ptr, i64, i64 } %t356, 1 - %t358 = icmp uge i64 %t355, %t357 - br i1 %t358, label %range5493, label %inrange5494 -range5493: - call void @finch_panic_index(ptr @.str.3492, i64 2699, i64 %t355, i64 %t357) - unreachable -inrange5494: - %t359 = extractvalue { ptr, i64, i64 } %t356, 0 - %t360 = getelementptr inbounds %S.gen.Var, ptr %t359, i64 %t355 - %t361 = getelementptr inbounds %S.gen.Var, ptr %t360, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - %t363 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } %t363, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br label %logic.from5495 -logic.from5495: - br i1 %t367, label %logic.rhs5496, label %logic.end5497 -logic.rhs5496: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic5498, label %ok5499 -panic5498: - call void @finch_panic(ptr @.str.3493, i64 2699, ptr @.str.3494) - unreachable -ok5499: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 44 - %t371 = load i1, ptr %t370 - br label %logic.from5500 -logic.from5500: - br i1 %t371, label %logic.rhs5501, label %logic.end5502 -logic.rhs5501: - %t372 = load ptr, ptr %a1 - %t373 = icmp eq ptr %t372, null - br i1 %t373, label %panic5503, label %ok5504 -panic5503: - call void @finch_panic(ptr @.str.3495, i64 2699, ptr @.str.3496) - unreachable -ok5504: - %t374 = getelementptr inbounds %S.gen.Gen, ptr %t372, i32 0, i32 10 - %t375 = load i64, ptr %a324 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range5505, label %inrange5506 -range5505: - call void @finch_panic_index(ptr @.str.3497, i64 2699, i64 %t375, i64 %t377) - unreachable -inrange5506: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.gen.Scope, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.gen.Scope, ptr %t380, i32 0, i32 0 - %t382 = load i64, ptr %a342 - %t383 = load { ptr, i64, i64 }, ptr %t381 - %t384 = extractvalue { ptr, i64, i64 } %t383, 1 - %t385 = icmp uge i64 %t382, %t384 - br i1 %t385, label %range5507, label %inrange5508 -range5507: - call void @finch_panic_index(ptr @.str.3498, i64 2699, i64 %t382, i64 %t384) - unreachable -inrange5508: - %t386 = extractvalue { ptr, i64, i64 } %t383, 0 - %t387 = getelementptr inbounds %S.gen.Var, ptr %t386, i64 %t382 - %t388 = getelementptr inbounds %S.gen.Var, ptr %t387, i32 0, i32 4 - %t389 = load i64, ptr %t388 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic5509, label %ok5510 -panic5509: - call void @finch_panic(ptr @.str.3499, i64 2699, ptr @.str.3500) - unreachable -ok5510: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 45 - %t393 = load i64, ptr %t392 - %t394 = icmp sge i64 %t389, %t393 - br label %logic.rend5511 -logic.rend5511: - br label %logic.end5502 -logic.end5502: - %t395 = phi i1 [ false, %logic.from5500 ], [ %t394, %logic.rend5511 ] - %t396 = xor i1 %t395, true - br label %logic.rend5512 -logic.rend5512: - br label %logic.end5497 -logic.end5497: - %t397 = phi i1 [ false, %logic.from5495 ], [ %t396, %logic.rend5512 ] - br i1 %t397, label %then5513, label %endif5515 -then5513: - %t398 = load i64, ptr %a342 - store i64 %t398, ptr %a329 - br label %endif5515 -endif5515: - br label %for.step5487 -for.step5487: - %t399 = load i64, ptr %a342 - %t400 = add i64 %t399, 1 - store i64 %t400, ptr %a342 - br label %for.cond5485 -for.end5488: - %t401 = load i64, ptr %a329 - %t402 = icmp slt i64 %t401, 0 - br i1 %t402, label %then5516, label %endif5518 -then5516: - br label %while.cond5478 -endif5518: - %t403 = load ptr, ptr %a1 - %t404 = icmp eq ptr %t403, null - br i1 %t404, label %panic5519, label %ok5520 -panic5519: - call void @finch_panic(ptr @.str.3501, i64 2706, ptr @.str.3502) - unreachable -ok5520: - %t405 = getelementptr inbounds %S.gen.Gen, ptr %t403, i32 0, i32 10 - %t406 = load i64, ptr %a324 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range5521, label %inrange5522 -range5521: - call void @finch_panic_index(ptr @.str.3503, i64 2706, i64 %t406, i64 %t408) - unreachable -inrange5522: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.gen.Scope, ptr %t410, i64 %t406 - %t412 = getelementptr inbounds %S.gen.Scope, ptr %t411, i32 0, i32 0 - %t413 = load i64, ptr %a329 - %t414 = load { ptr, i64, i64 }, ptr %t412 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5523, label %inrange5524 -range5523: - call void @finch_panic_index(ptr @.str.3504, i64 2706, i64 %t413, i64 %t415) - unreachable -inrange5524: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.gen.Var, ptr %t417, i64 %t413 - %t419 = load %S.gen.Var, ptr %t418 - store %S.gen.Var %t419, ptr %a420 - call void @finch.copy.S_gen_Var(ptr %a421, ptr %a420) - %t422 = load %S.gen.Var, ptr %a421 - store %S.gen.Var %t422, ptr %a423 - %t424 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 5 - %t425 = load i1, ptr %t424 - br label %logic.from5525 -logic.from5525: - br i1 %t425, label %logic.rhs5526, label %logic.end5527 -logic.rhs5526: - %t426 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t427 = load %S.ast.Type, ptr %t426 - %t428 = load ptr, ptr %a1 - %t429 = icmp eq ptr %t428, null - br i1 %t429, label %panic5528, label %ok5529 -panic5528: - call void @finch_panic(ptr @.str.3505, i64 2707, ptr @.str.3506) - unreachable -ok5529: - %t430 = getelementptr inbounds %S.gen.Gen, ptr %t428, i32 0, i32 13 - %t431 = getelementptr inbounds %S.gen.FnSig, ptr %t430, i32 0, i32 12 - %t432 = load %S.ast.Type, ptr %t431 - %t433 = call i1 @finch.ast.same(%S.ast.Type %t427, %S.ast.Type %t432) - br label %logic.rend5530 -logic.rend5530: - br label %logic.end5527 -logic.end5527: - %t434 = phi i1 [ false, %logic.from5525 ], [ %t433, %logic.rend5530 ] - br i1 %t434, label %then5531, label %endif5533 -then5531: - %t435 = load ptr, ptr %a1 - %t436 = load ptr, ptr %a1 - %t437 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t438 = load %S.ast.Type, ptr %t437 - %t439 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t438) - %t440 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 2 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = call { ptr, i64, i64 } @finch.gen.load(ptr %t435, { ptr, i64, i64 } %t439, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch_str_drop(ptr %a443) - store { ptr, i64, i64 } %t442, ptr %a444 - %t445 = load ptr, ptr %a1 - %t446 = icmp eq ptr %t445, null - br i1 %t446, label %panic5534, label %ok5535 -panic5534: - call void @finch_panic(ptr @.str.3507, i64 2709, ptr @.str.3508) - unreachable -ok5535: - %t447 = getelementptr inbounds %S.gen.Gen, ptr %t445, i32 0, i32 10 - %t448 = load i64, ptr %a324 - %t449 = load { ptr, i64, i64 }, ptr %t447 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 %t448, %t450 - br i1 %t451, label %range5536, label %inrange5537 -range5536: - call void @finch_panic_index(ptr @.str.3509, i64 2709, i64 %t448, i64 %t450) - unreachable -inrange5537: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.gen.Scope, ptr %t452, i64 %t448 - %t454 = getelementptr inbounds %S.gen.Scope, ptr %t453, i32 0, i32 0 - %t455 = load i64, ptr %a329 - %t456 = load { ptr, i64, i64 }, ptr %t454 - %t457 = extractvalue { ptr, i64, i64 } %t456, 1 - %t458 = icmp uge i64 %t455, %t457 - br i1 %t458, label %range5538, label %inrange5539 -range5538: - call void @finch_panic_index(ptr @.str.3510, i64 2709, i64 %t455, i64 %t457) - unreachable -inrange5539: - %t459 = extractvalue { ptr, i64, i64 } %t456, 0 - %t460 = getelementptr inbounds %S.gen.Var, ptr %t459, i64 %t455 - %t461 = getelementptr inbounds %S.gen.Var, ptr %t460, i32 0, i32 6 - store i1 true, ptr %t461 - %t462 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t462, i64 0) - %t463 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t463, i64 0) - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic5540, label %ok5541 -panic5540: - call void @finch_panic(ptr @.str.3511, i64 2712, ptr @.str.3512) - unreachable -ok5541: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 10 - %t467 = load i64, ptr %a324 - %t468 = load { ptr, i64, i64 }, ptr %t466 - %t469 = extractvalue { ptr, i64, i64 } %t468, 1 - %t470 = icmp uge i64 %t467, %t469 - br i1 %t470, label %range5542, label %inrange5543 -range5542: - call void @finch_panic_index(ptr @.str.3513, i64 2712, i64 %t467, i64 %t469) - unreachable -inrange5543: - %t471 = extractvalue { ptr, i64, i64 } %t468, 0 - %t472 = getelementptr inbounds %S.gen.Scope, ptr %t471, i64 %t467 - %t473 = getelementptr inbounds %S.gen.Scope, ptr %t472, i32 0, i32 0 - %t474 = load i64, ptr %a329 - %t475 = load { ptr, i64, i64 }, ptr %t473 - %t476 = extractvalue { ptr, i64, i64 } %t475, 1 - %t477 = icmp uge i64 %t474, %t476 - br i1 %t477, label %range5544, label %inrange5545 -range5544: - call void @finch_panic_index(ptr @.str.3514, i64 2712, i64 %t474, i64 %t476) - unreachable -inrange5545: - %t478 = extractvalue { ptr, i64, i64 } %t475, 0 - %t479 = getelementptr inbounds %S.gen.Var, ptr %t478, i64 %t474 - %t480 = getelementptr inbounds %S.gen.Var, ptr %t479, i32 0, i32 6 - store i1 false, ptr %t480 - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a444 - call void @finch.gen.finishReturn(ptr %t481, { ptr, i64, i64 } %t482) - call void @finch_str_drop(ptr %a444) - call void @finch.drop.S_gen_Var(ptr %a423) - call void @finch_str_drop(ptr %a318) - ret void -endif5533: - call void @finch.drop.S_gen_Var(ptr %a423) - br label %while.end5480 -while.end5480: - call void @finch_str_drop(ptr %a318) - br label %endif5473 -endif5473: - %t483 = load ptr, ptr %a1 - %t484 = load ptr, ptr %a1 - %t485 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range5546, label %inrange5547 -range5546: - call void @finch_panic_index(ptr @.str.3515, i64 2719, i64 0, i64 %t487) - unreachable -inrange5547: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = load ptr, ptr %a1 - %t493 = icmp eq ptr %t492, null - br i1 %t493, label %panic5548, label %ok5549 -panic5548: - call void @finch_panic(ptr @.str.3516, i64 2719, ptr @.str.3517) - unreachable -ok5549: - %t494 = getelementptr inbounds %S.gen.Gen, ptr %t492, i32 0, i32 13 - %t495 = getelementptr inbounds %S.gen.FnSig, ptr %t494, i32 0, i32 12 - %t496 = load %S.ast.Type, ptr %t495 - %t497 = call %S.gen.Val @finch.gen.exprWant(ptr %t484, %S.ast.Node %t491, %S.ast.Type %t496) - %t498 = load ptr, ptr %a1 - %t499 = icmp eq ptr %t498, null - br i1 %t499, label %panic5550, label %ok5551 -panic5550: - call void @finch_panic(ptr @.str.3518, i64 2719, ptr @.str.3519) - unreachable -ok5551: - %t500 = getelementptr inbounds %S.gen.Gen, ptr %t498, i32 0, i32 13 - %t501 = getelementptr inbounds %S.gen.FnSig, ptr %t500, i32 0, i32 12 - %t502 = load %S.ast.Type, ptr %t501 - %t503 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t504 = load { ptr, i64, i64 }, ptr %t503 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 0, %t505 - br i1 %t506, label %range5552, label %inrange5553 -range5552: - call void @finch_panic_index(ptr @.str.3520, i64 2719, i64 0, i64 %t505) - unreachable -inrange5553: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 0 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = call %S.gen.Val @finch.gen.coerce(ptr %t483, %S.gen.Val %t497, %S.ast.Type %t502, %S.ast.Node %t509, { ptr, i64, i64 } { ptr @.str.3521, i64 18, i64 0 }) - store %S.gen.Val %t497, ptr %a511 - call void @finch.drop.S_gen_Val(ptr %a511) - store %S.gen.Val %t510, ptr %a512 - %t513 = load ptr, ptr %a1 - %t514 = load %S.gen.Val, ptr %a512 - %t515 = call { ptr, i64, i64 } @finch.gen.own(ptr %t513, %S.gen.Val %t514) - store { ptr, i64, i64 } %t515, ptr %a516 - %t517 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t517, i64 0) - %t518 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t518, i64 0) - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a516 - call void @finch.gen.finishReturn(ptr %t519, { ptr, i64, i64 } %t520) - call void @finch_str_drop(ptr %a516) - call void @finch.drop.S_gen_Val(ptr %a512) - ret void -} - -define internal void @finch.gen.finishReturn(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5554, label %ok5555 -panic5554: - call void @finch_panic(ptr @.str.3522, i64 2727, ptr @.str.3523) - unreachable -ok5555: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %t5, i32 0, i32 9 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then5556, label %else5557 -then5556: - %t8 = load ptr, ptr %a1 - %t9 = load ptr, ptr %a1 - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic5559, label %ok5560 -panic5559: - call void @finch_panic(ptr @.str.3525, i64 2728, ptr @.str.3526) - unreachable -ok5560: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = load %S.gen.FnSig, ptr %t12 - %t14 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t9, %S.gen.FnSig %t13) - store { ptr, i64, i64 } { ptr @.str.3524, i64 12, i64 0 }, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.3527, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t8, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t25, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic5561, label %ok5562 -panic5561: - call void @finch_panic(ptr @.str.3529, i64 2729, ptr @.str.3530) - unreachable -ok5562: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 13 - %t33 = load %S.gen.FnSig, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t29, %S.gen.FnSig %t33) - store { ptr, i64, i64 } { ptr @.str.3528, i64 12, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3531, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3532, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic5563, label %ok5564 -panic5563: - call void @finch_panic(ptr @.str.3533, i64 2729, ptr @.str.3534) - unreachable -ok5564: - %t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 13 - %t60 = getelementptr inbounds %S.gen.FnSig, ptr %t59, i32 0, i32 12 - %t61 = load %S.ast.Type, ptr %t60 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t61) - store { ptr, i64, i64 } %t55, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t55, ptr %a66 - call void @finch_str_drop(ptr %a66) - store { ptr, i64, i64 } %t62, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.3535, i64 1, i64 0 }, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t73, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3536, i64 3, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = call { ptr, i64, i64 } @finch.gen.op(ptr %t28, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t84, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load ptr, ptr %a1 - %t90 = load ptr, ptr %a1 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic5565, label %ok5566 -panic5565: - call void @finch_panic(ptr @.str.3538, i64 2730, ptr @.str.3539) - unreachable -ok5566: - %t92 = getelementptr inbounds %S.gen.Gen, ptr %t90, i32 0, i32 13 - %t93 = load %S.gen.FnSig, ptr %t92 - %t94 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t89, %S.gen.FnSig %t93) - store { ptr, i64, i64 } { ptr @.str.3537, i64 4, i64 0 }, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3540, i64 1, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t104, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a27) - br label %endif5558 -else5557: - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic5567, label %ok5568 -panic5567: - call void @finch_panic(ptr @.str.3542, i64 2732, ptr @.str.3543) - unreachable -ok5568: - %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 13 - %t117 = getelementptr inbounds %S.gen.FnSig, ptr %t116, i32 0, i32 12 - %t118 = load %S.ast.Type, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t118) - store { ptr, i64, i64 } { ptr @.str.3541, i64 4, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.3544, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t129, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.emit(ptr %t112, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - br label %endif5558 -endif5558: - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic5569, label %ok5570 -panic5569: - call void @finch_panic(ptr @.str.3545, i64 2734, ptr @.str.3546) - unreachable -ok5570: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 9 - store i1 true, ptr %t139 - 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 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5571, label %inrange5572 -range5571: - call void @finch_panic_index(ptr @.str.3548, i64 2746, i64 0, i64 %t6) - unreachable -inrange5572: - %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.3547, i64 7, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3549, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load ptr, ptr %a1 - %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %t23 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 1, %t25 - br i1 %t26, label %range5573, label %inrange5574 -range5573: - call void @finch_panic_index(ptr @.str.3550, i64 2746, i64 1, i64 %t25) - unreachable -inrange5574: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.ast.Type, ptr %t27, i64 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t29) - store { ptr, i64, i64 } %t21, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t21, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.3551, i64 2, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - ret { ptr, i64, i64 } %t41 -} - -define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) { -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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.3552, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.3553, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal { ptr, i64, i64 } @finch.gen.entryAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -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 - %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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3555, i64 23, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3556, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t19, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3557, i64 14, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t30) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3554, i64 3, i64 0 }, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t33, ptr %a35 - %t36 = load ptr, ptr %a1 - %t37 = load ptr, ptr %a1 - %t38 = load %S.ast.Type, ptr %a3 - %t39 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t37, %S.ast.Type %t38) - store { ptr, i64, i64 } { ptr @.str.3558, i64 23, i64 0 }, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.3559, i64 6, i64 0 }, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t44, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t49, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.3560, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - call void @finch_str_drop(ptr %a35) - ret { ptr, i64, i64 } %t67 -} - -define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3561, i64 23, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.3562, i64 6, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t18, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3563, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - ret { ptr, i64, i64 } %t39 -} - -define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %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 - %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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3564, 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 %range5575, label %inrange5576 -range5575: - call void @finch_panic_index(ptr @.str.3565, i64 2766, i64 0, i64 %t8) - unreachable -inrange5576: - %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.3566, 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 %then5577, label %endif5579 -then5577: - %t18 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3567, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif5579 -endif5579: - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3568, i64 4, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3569, i64 6, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.3570, i64 6, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = load %S.ast.Type, ptr %a4 - %t43 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t41, %S.ast.Type %t42) - store { ptr, i64, i64 } %t40, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t40, ptr %a47 - call void @finch_str_drop(ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3571, i64 6, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load ptr, ptr %a1 - %t56 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t57 = load { ptr, i64, i64 }, ptr %t56 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 0, %t58 - br i1 %t59, label %range5580, label %inrange5581 -range5580: - call void @finch_panic_index(ptr @.str.3572, i64 2769, i64 0, i64 %t58) - unreachable -inrange5581: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i64 0 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t55, %S.ast.Type %t62) - store { ptr, i64, i64 } %t54, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t54, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.3573, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t80 -} - -define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.3574, i64 25, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.3575, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t20) - store { ptr, i64, i64 } %t20, ptr %a22 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { -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 - %a31 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3576, 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.from5582 -logic.from5582: - br i1 %t9, label %logic.rhs5583, label %logic.end5584 -logic.rhs5583: - %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.rend5585 -logic.rend5585: - br label %logic.end5584 -logic.end5584: - %t13 = phi i1 [ false, %logic.from5582 ], [ %t12, %logic.rend5585 ] - br i1 %t13, label %then5586, label %endif5588 -then5586: - 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 - store %S.gen.Val %t26, ptr %a31 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.arr_str(ptr %a15) - call void @finch.drop.arr_S_ast_Node(ptr %a14) - ret { ptr, i64, i64 } %t30 -endif5588: - %t32 = load %S.ast.Type, ptr %a2 - %t33 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t32) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.mapSlot(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.gen.Val %p3, i1 %p4, %S.ast.Node %p5) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3577, 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.3578, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3579, 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.3580, i64 25, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.3581, i64 6, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3582, i64 1, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t43, ptr %a45 - %t46 = load ptr, ptr %a1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = load %S.ast.Type, ptr %a3 - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t46, { ptr, i64, i64 } %t47, %S.ast.Type %t48, { ptr, i64, i64 } %t49) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t52, { ptr, i64, i64 } { ptr @.str.3583, i64 7, i64 0 }) - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t55, { ptr, i64, i64 } { ptr @.str.3584, i64 8, i64 0 }) - store { ptr, i64, i64 } %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a13 - %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } { ptr @.str.3586, i64 3, i64 0 }, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } { ptr @.str.3585, i64 12, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.3587, i64 3, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t72) - store { ptr, i64, i64 } %t72, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a54 - %t76 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.condBr(ptr %t58, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load ptr, ptr %a1 - %t79 = load { ptr, i64, i64 }, ptr %a54 - call void @finch.gen.label(ptr %t78, { ptr, i64, i64 } %t79) - %t80 = load ptr, ptr %a1 - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a51 - %t83 = load %S.ast.Type, ptr %a3 - %t84 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t81, { ptr, i64, i64 } %t82, %S.ast.Type %t83, i64 1) - %t85 = load { ptr, i64, i64 }, ptr %a10 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range5589, label %inrange5590 -range5589: - call void @finch_panic_index(ptr @.str.3588, i64 2797, i64 0, i64 %t88) - unreachable -inrange5590: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i64 0 - %t92 = load %S.ast.Type, ptr %t91 - call void @finch.gen.copyAt(ptr %t80, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t85, %S.ast.Type %t92) - store { ptr, i64, i64 } %t84, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load i1, ptr %a5 - br i1 %t94, label %then5591, label %endif5593 -then5591: - %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 %range5594, label %inrange5595 -range5594: - call void @finch_panic_index(ptr @.str.3589, i64 2799, i64 1, i64 %t99) - unreachable -inrange5595: - %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 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t103) - %t105 = load ptr, ptr %a1 - %t106 = load ptr, ptr %a1 - %t107 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 1, %t109 - br i1 %t110, label %range5596, label %inrange5597 -range5596: - call void @finch_panic_index(ptr @.str.3590, i64 2799, i64 1, i64 %t109) - unreachable -inrange5597: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 - %t113 = load %S.ast.Type, ptr %t112 - %t114 = load %S.ast.Node, ptr %a6 - %t115 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t106, %S.ast.Type %t113, %S.ast.Node %t114) - %t116 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t115, 0 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 1, %t119 - br i1 %t120, label %range5598, label %inrange5599 -range5598: - call void @finch_panic_index(ptr @.str.3591, i64 2799, i64 1, i64 %t119) - unreachable -inrange5599: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 1 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t116, %S.ast.Type %t126, 1 - %t128 = insertvalue %S.gen.Val %t127, i1 true, 2 - %t129 = call { ptr, i64, i64 } @finch.gen.own(ptr %t105, %S.gen.Val %t128) - store %S.gen.Val %t128, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a51 - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t131, { ptr, i64, i64 } %t132, %S.ast.Type %t133, i64 2) - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t134) - store { ptr, i64, i64 } %t104, ptr %a135 - call void @finch_str_drop(ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif5593 -endif5593: - %t138 = load ptr, ptr %a1 - %t139 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.br(ptr %t138, { ptr, i64, i64 } %t139) - %t140 = load ptr, ptr %a1 - %t141 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.label(ptr %t140, { ptr, i64, i64 } %t141) - %t142 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t142 -} - -define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) { -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 - %a49 = alloca %S.gen.Val, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a242 = alloca %S.gen.Val, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a268 = alloca %S.gen.Val, align 16 - %a269 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - 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 %range5600, label %inrange5601 -range5600: - call void @finch_panic_index(ptr @.str.3592, i64 2808, i64 0, i64 %t8) - unreachable -inrange5601: - %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 %range5602, label %inrange5603 -range5602: - call void @finch_panic_index(ptr @.str.3593, i64 2809, i64 1, i64 %t19) - unreachable -inrange5603: - %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 %range5604, label %inrange5605 -range5604: - call void @finch_panic_index(ptr @.str.3594, i64 2810, i64 1, i64 %t32) - unreachable -inrange5605: - %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 %range5606, label %inrange5607 -range5606: - call void @finch_panic_index(ptr @.str.3595, i64 2810, i64 1, i64 %t42) - unreachable -inrange5607: - %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.3596, i64 7, i64 0 }) - store %S.gen.Val %t38, ptr %a48 - call void @finch.drop.S_gen_Val(ptr %a48) - store %S.gen.Val %t47, ptr %a49 - %t50 = load i1, ptr %a5 - br i1 %t50, label %then5608, label %endif5610 -then5608: - %t51 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t52 = load i1, ptr %t51 - %t53 = xor i1 %t52, true - br i1 %t53, label %then5611, label %endif5613 -then5611: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } { ptr @.str.3597, i64 44, i64 0 }) - br label %endif5613 -endif5613: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t58 = getelementptr inbounds %S.gen.Place, ptr %t57, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = load %S.gen.Val, ptr %a49 - %t62 = load %S.ast.Node, ptr %a2 - %t63 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t56, { ptr, i64, i64 } %t59, %S.ast.Type %t60, %S.gen.Val %t61, i1 true, %S.ast.Node %t62) - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t65, %S.gen.Val %t66) - %t67 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t68 = load ptr, ptr %a1 - %t69 = load { ptr, i64, i64 }, ptr %a64 - %t70 = load %S.ast.Type, ptr %a4 - %t71 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t68, { ptr, i64, i64 } %t69, %S.ast.Type %t70, i64 2) - %t72 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t71, 0 - %t73 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t73, ptr %a74 - call void @finch.copy.S_ast_Type(ptr %a75, ptr %a74) - %t76 = load %S.ast.Type, ptr %a75 - %t77 = insertvalue %S.gen.Place %t72, %S.ast.Type %t76, 1 - %t78 = insertvalue %S.gen.Ref %t67, %S.gen.Place %t77, 1 - call void @finch_str_drop(ptr %a64) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t78 -endif5610: - store { ptr, i64, i64 } { ptr @.str.3598, i64 0, i64 0 }, ptr %a79 - %t80 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t81 = load i1, ptr %t80 - br i1 %t81, label %then5614, label %else5615 -then5614: - %t82 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t83 = getelementptr inbounds %S.gen.Place, ptr %t82, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch_str_copy(ptr %a86, ptr %a85) - %t87 = load { ptr, i64, i64 }, ptr %a86 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t87, ptr %a79 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif5616 -else5615: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t92 = load %S.gen.Val, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t90, %S.gen.Val %t92) - %t94 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t93, ptr %a79 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %endif5616 -endif5616: - %t96 = load ptr, ptr %a1 - %t97 = load %S.gen.Val, ptr %a49 - %t98 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t96, %S.gen.Val %t97) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a79 - %t102 = load { ptr, i64, i64 }, ptr %a99 - %t103 = load %S.ast.Type, ptr %a4 - %t104 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t100, { ptr, i64, i64 } %t101, { ptr, i64, i64 } %t102, %S.ast.Type %t103) - store { ptr, i64, i64 } %t104, ptr %a105 - %t106 = load ptr, ptr %a1 - %t107 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t106, { ptr, i64, i64 } { ptr @.str.3599, i64 11, i64 0 }) - store { ptr, i64, i64 } %t107, ptr %a108 - %t109 = load ptr, ptr %a1 - %t110 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t109, { ptr, i64, i64 } { ptr @.str.3600, i64 9, i64 0 }) - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.3601, i64 13, i64 0 }, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.3602, i64 3, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t123, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a108 - %t127 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.condBr(ptr %t112, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a108 - call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) - %t131 = load ptr, ptr %a1 - %t132 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t131, { ptr, i64, i64 } { ptr @.str.3603, i64 17, i64 0 }) - store { ptr, i64, i64 } %t132, ptr %a133 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.store(ptr %t134, { ptr, i64, i64 } { ptr @.str.3604, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3605, i64 15, i64 0 }, { ptr, i64, i64 } %t135) - %t136 = load ptr, ptr %a1 - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = getelementptr inbounds %S.gen.Val, ptr %a49, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - %t140 = load %S.ast.Type, ptr %a16 - call void @finch.gen.emitFormat(ptr %t136, { ptr, i64, i64 } %t137, { ptr, i64, i64 } %t139, %S.ast.Type %t140, i1 true) - %t141 = load ptr, ptr %a1 - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic5617, label %ok5618 -panic5617: - call void @finch_panic(ptr @.str.3607, i64 2834, ptr @.str.3608) - unreachable -ok5618: - %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 1 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t147 = load i64, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %t145 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 %t147, %t149 - br i1 %t150, label %range5619, label %inrange5620 -range5619: - call void @finch_panic_index(ptr @.str.3609, i64 2834, i64 %t147, i64 %t149) - unreachable -inrange5620: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 %t147 - %t153 = load { ptr, i64, i64 }, ptr %t152 - %t154 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t142, { ptr, i64, i64 } %t153) - store { ptr, i64, i64 } { ptr @.str.3606, i64 33, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t159, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3610, i64 6, i64 0 }, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t159, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t166 = load i64, ptr %t165 - call void @finch_str_from_int(ptr %a167, i64 %t166) - %t168 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t164, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t164, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t168, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t174, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.3611, i64 6, i64 0 }, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t174, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t179, ptr %a182 - store { ptr, i64, i64 } %t180, ptr %a183 - call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) - store { ptr, i64, i64 } %t179, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load { ptr, i64, i64 }, ptr %a181 - store { ptr, i64, i64 } %t185, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.3612, i64 1, i64 0 }, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t141, { ptr, i64, i64 } %t190) - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t192, { ptr, i64, i64 } { ptr @.str.3613, i64 11, i64 0 }) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5621, label %ok5622 -panic5621: - call void @finch_panic(ptr @.str.3614, i64 2836, ptr @.str.3615) - unreachable -ok5622: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load ptr, ptr %a1 - %t199 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t198, %S.gen.Val %t199) - %t200 = load ptr, ptr %a1 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a79 - %t203 = load %S.ast.Type, ptr %a4 - %t204 = load { ptr, i64, i64 }, ptr %a105 - %t205 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t201, { ptr, i64, i64 } %t202, %S.ast.Type %t203, { ptr, i64, i64 } %t204) - %t206 = load %S.ast.Type, ptr %a4 - %t207 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t200, { ptr, i64, i64 } %t205, %S.ast.Type %t206, i64 2) - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_drop(ptr %a208) - store { ptr, i64, i64 } %t207, ptr %a209 - %t210 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t211 = load i1, ptr %t210 - br i1 %t211, label %then5623, label %endif5625 -then5623: - %t212 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t213 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t213, ptr %a214 - call void @finch_str_copy(ptr %a215, ptr %a214) - %t216 = load { ptr, i64, i64 }, ptr %a215 - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t216, 0 - %t218 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t212, %S.gen.Place %t222, 1 - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t223 -endif5625: - %t224 = load ptr, ptr %a1 - %t225 = load ptr, ptr %a1 - %t226 = load %S.ast.Type, ptr %a27 - %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) - %t228 = load { ptr, i64, i64 }, ptr %a209 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t224, { ptr, i64, i64 } %t227, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t232, ptr %a233 - call void @finch_str_copy(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t235, 0 - %t237 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - %t241 = insertvalue %S.gen.Val %t236, %S.ast.Type %t240, 1 - store %S.gen.Val %t241, ptr %a242 - %t243 = load ptr, ptr %a1 - %t244 = load %S.ast.Type, ptr %a27 - %t245 = call i1 @finch.gen.owning(ptr %t243, %S.ast.Type %t244) - br label %logic.from5626 -logic.from5626: - br i1 %t245, label %logic.rhs5627, label %logic.end5628 -logic.rhs5627: - %t246 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t247 = getelementptr inbounds %S.gen.Val, ptr %t246, i32 0, i32 2 - %t248 = load i1, ptr %t247 - br label %logic.rend5629 -logic.rend5629: - br label %logic.end5628 -logic.end5628: - %t249 = phi i1 [ false, %logic.from5626 ], [ %t248, %logic.rend5629 ] - br i1 %t249, label %then5630, label %endif5632 -then5630: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a231 - %t252 = load %S.ast.Type, ptr %a27 - %t253 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252) - %t254 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t253, 0 - %t255 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t254, %S.ast.Type %t258, 1 - %t260 = insertvalue %S.gen.Val %t259, i1 true, 2 - %t261 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t260, ptr %a242 - store %S.gen.Val %t261, ptr %a262 - call void @finch.drop.S_gen_Val(ptr %a262) - br label %endif5632 -endif5632: - %t263 = load ptr, ptr %a1 - %t264 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t265 = load %S.gen.Val, ptr %t264 - call void @finch.gen.release(ptr %t263, %S.gen.Val %t265) - %t266 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t267 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t267, ptr %a268 - call void @finch.copy.S_gen_Val(ptr %a269, ptr %a268) - %t270 = load %S.gen.Val, ptr %a269 - %t271 = insertvalue %S.gen.Ref %t266, %S.gen.Val %t270, 2 - call void @finch.drop.S_gen_Val(ptr %a242) - call void @finch_str_drop(ptr %a231) - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t271 -} - -define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a71 = alloca %S.ast.Node, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.gen.Val, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a159 = alloca %S.ast.Type, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca i64, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca i64, align 16 - %a208 = alloca %S.gen.Val, align 16 - %a209 = alloca %S.gen.Val, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a236 = alloca %S.gen.Val, align 16 - %a257 = alloca %S.gen.Val, align 16 - %a261 = alloca %S.gen.Val, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a264 = alloca %S.gen.Val, align 16 - %a290 = alloca %S.gen.Val, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca %S.ast.Type, align 16 - %a369 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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.3616, 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 %then5633, label %endif5635 -then5633: - %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 %then5636, label %endif5638 -then5636: - %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.3617, i64 52, i64 0 }) - br label %endif5638 -endif5638: - 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.cond5639 -for.cond5639: - %t31 = load i64, ptr %a30 - %t32 = icmp slt i64 %t31, %t29 - br i1 %t32, label %for.body5640, label %for.end5642 -for.body5640: - %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 %range5643, label %inrange5644 -range5643: - call void @finch_panic_index(ptr @.str.3618, i64 2866, i64 %t36, i64 %t38) - unreachable -inrange5644: - %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.3619, 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.from5645 -logic.from5645: - br i1 %t52, label %logic.rhs5646, label %logic.end5647 -logic.rhs5646: - %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.3620, 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.rend5648 -logic.rend5648: - br label %logic.end5647 -logic.end5647: - %t59 = phi i1 [ false, %logic.from5645 ], [ %t58, %logic.rend5648 ] - br i1 %t59, label %then5649, label %endif5651 -then5649: - %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 %range5652, label %inrange5653 -range5652: - call void @finch_panic_index(ptr @.str.3621, i64 2868, i64 0, i64 %t62) - unreachable -inrange5653: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 - %t66 = load %S.ast.Node, ptr %t65 - store %S.ast.Node %t66, ptr %a67 - call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) - %t69 = load %S.ast.Node, ptr %a68 - %t70 = load %S.ast.Node, ptr %a46 - store %S.ast.Node %t69, ptr %a46 - store %S.ast.Node %t70, ptr %a71 - call void @finch.drop.S_ast_Node(ptr %a71) - br label %endif5651 -endif5651: - %t72 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.3622, i64 5, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then5654, label %else5655 -then5654: - store i1 true, ptr %a25 - br label %endif5656 -else5655: - %t78 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3623, i64 3, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp eq i32 %t82, 0 - br i1 %t83, label %then5657, label %endif5659 -then5657: - store i1 false, ptr %a24 - br label %endif5659 -endif5659: - br label %endif5656 -endif5656: - call void @finch.drop.S_ast_Node(ptr %a46) - br label %for.step5641 -for.step5641: - %t84 = load i64, ptr %a30 - %t85 = add i64 %t84, 1 - store i64 %t85, ptr %a30 - br label %for.cond5639 -for.end5642: - %t86 = load ptr, ptr %a1 - %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range5660, label %inrange5661 -range5660: - call void @finch_panic_index(ptr @.str.3624, i64 2876, i64 0, i64 %t89) - unreachable -inrange5661: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i64 0 - %t93 = load %S.ast.Node, ptr %t92 - %t94 = call %S.gen.Val @finch.gen.expr(ptr %t86, %S.ast.Node %t93) - %t95 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t94, ptr %a10 - store %S.gen.Val %t95, ptr %a96 - call void @finch.drop.S_gen_Val(ptr %a96) - %t97 = load ptr, ptr %a1 - %t98 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t99 = load { ptr, i64, i64 }, ptr %t98 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 1, %t100 - br i1 %t101, label %range5662, label %inrange5663 -range5662: - call void @finch_panic_index(ptr @.str.3625, i64 2877, i64 1, i64 %t100) - unreachable -inrange5663: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Node, ptr %t102, i64 1 - %t104 = load %S.ast.Node, ptr %t103 - %t105 = call %S.gen.Val @finch.gen.expr(ptr %t97, %S.ast.Node %t104) - %t106 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t105, ptr %a11 - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - %t108 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3626, i64 4, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.from5664 -logic.from5664: - br i1 %t114, label %logic.end5666, label %logic.rhs5665 -logic.rhs5665: - %t115 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0 - %t117 = load { ptr, i64, i64 }, ptr %t116 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.3627, i64 4, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.rend5667 -logic.rend5667: - br label %logic.end5666 -logic.end5666: - %t122 = phi i1 [ true, %logic.from5664 ], [ %t121, %logic.rend5667 ] - br i1 %t122, label %then5668, label %endif5670 -then5668: - %t123 = load ptr, ptr %a1 - %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t125 = load { ptr, i64, i64 }, ptr %t124 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 0, %t126 - br i1 %t127, label %range5671, label %inrange5672 -range5671: - call void @finch_panic_index(ptr @.str.3628, i64 2879, i64 0, i64 %t126) - unreachable -inrange5672: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds %S.ast.Node, ptr %t128, i64 0 - %t130 = load %S.ast.Node, ptr %t129 - call void @finch.gen.fail(ptr %t123, %S.ast.Node %t130, { ptr, i64, i64 } { ptr @.str.3629, i64 35, i64 0 }) - br label %endif5670 -endif5670: - %t131 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.3630, 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.from5673 -logic.from5673: - br i1 %t137, label %logic.end5675, label %logic.rhs5674 -logic.rhs5674: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.3631, i64 4, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br label %logic.rend5676 -logic.rend5676: - br label %logic.end5675 -logic.end5675: - %t145 = phi i1 [ true, %logic.from5673 ], [ %t144, %logic.rend5676 ] - br i1 %t145, label %then5677, label %endif5679 -then5677: - %t146 = load ptr, ptr %a1 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 1, %t149 - br i1 %t150, label %range5680, label %inrange5681 -range5680: - call void @finch_panic_index(ptr @.str.3632, i64 2882, i64 1, i64 %t149) - unreachable -inrange5681: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 1 - %t153 = load %S.ast.Node, ptr %t152 - call void @finch.gen.fail(ptr %t146, %S.ast.Node %t153, { ptr, i64, i64 } { ptr @.str.3633, i64 37, i64 0 }) - br label %endif5679 -endif5679: - %t154 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t155 = load %S.ast.Type, ptr %t154 - store %S.ast.Type %t155, ptr %a156 - call void @finch.copy.S_ast_Type(ptr %a157, ptr %a156) - %t158 = load %S.ast.Type, ptr %a157 - store %S.ast.Type %t158, ptr %a159 - %t160 = load i1, ptr %a24 - br label %logic.from5682 -logic.from5682: - br i1 %t160, label %logic.rhs5683, label %logic.end5684 -logic.rhs5683: - %t161 = load i1, ptr %a25 - br label %logic.rend5685 -logic.rend5685: - br label %logic.end5684 -logic.end5684: - %t162 = phi i1 [ false, %logic.from5682 ], [ %t161, %logic.rend5685 ] - br i1 %t162, label %then5686, label %endif5688 -then5686: - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3634, i64 5, i64 0 }) - %t164 = load %S.ast.Type, ptr %a159 - store %S.ast.Type %t163, ptr %a159 - store %S.ast.Type %t164, ptr %a165 - call void @finch.drop.S_ast_Type(ptr %a165) - br label %endif5688 -endif5688: - %t166 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load %S.ast.Type, ptr %a159 - %t169 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t167, %S.ast.Type %t168) - %t170 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t169, ptr %a8 - store %S.ast.Type %t170, ptr %a171 - call void @finch.drop.S_ast_Type(ptr %a171) - store i1 true, ptr %a9 - call void @finch.drop.S_ast_Type(ptr %a159) - br label %endif5635 -endif5635: - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a8 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t172, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t176, ptr %a178 - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = load %S.ast.Type, ptr %a8 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t181) - %t183 = load { ptr, i64, i64 }, ptr %a178 - call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t182, { ptr, i64, i64 } { ptr @.str.3635, i64 15, i64 0 }, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t182, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load ptr, ptr %a1 - %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic5689, label %ok5690 -panic5689: - call void @finch_panic(ptr @.str.3636, i64 2893, ptr @.str.3637) - unreachable -ok5690: - %t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 11 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load i64, ptr %t188 - store i64 %t189, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a178 - %t193 = load %S.ast.Type, ptr %a8 - call void @finch.gen.holdAddr(ptr %t191, { ptr, i64, i64 } %t192, %S.ast.Type %t193) - %t194 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = sdiv i64 %t196, 2 - store i64 0, ptr %a198 - br label %for.cond5691 -for.cond5691: - %t199 = load i64, ptr %a198 - %t200 = icmp slt i64 %t199, %t197 - br i1 %t200, label %for.body5692, label %for.end5694 -for.body5692: - %t201 = load ptr, ptr %a1 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic5695, label %ok5696 -panic5695: - call void @finch_panic(ptr @.str.3638, i64 2896, ptr @.str.3639) - unreachable -ok5696: - %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 11 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - store i64 %t205, ptr %a206 - %t207 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t207, ptr %a208 - call void @finch.copy.S_gen_Val(ptr %a209, ptr %a208) - %t210 = load %S.gen.Val, ptr %a209 - store %S.gen.Val %t210, ptr %a211 - %t212 = load i64, ptr %a198 - %t213 = icmp eq i64 %t212, 0 - br label %logic.from5697 -logic.from5697: - br i1 %t213, label %logic.rhs5698, label %logic.end5699 -logic.rhs5698: - %t214 = load i1, ptr %a9 - br label %logic.rend5700 -logic.rend5700: - br label %logic.end5699 -logic.end5699: - %t215 = phi i1 [ false, %logic.from5697 ], [ %t214, %logic.rend5700 ] - %t216 = xor i1 %t215, true - br i1 %t216, label %then5701, label %endif5703 -then5701: - %t217 = load ptr, ptr %a1 - %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t219 = load i64, ptr %a198 - %t220 = mul i64 2, %t219 - %t221 = load { ptr, i64, i64 }, ptr %t218 - %t222 = extractvalue { ptr, i64, i64 } %t221, 1 - %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range5704, label %inrange5705 -range5704: - call void @finch_panic_index(ptr @.str.3640, i64 2899, i64 %t220, i64 %t222) - unreachable -inrange5705: - %t224 = extractvalue { ptr, i64, i64 } %t221, 0 - %t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220 - %t226 = load %S.ast.Node, ptr %t225 - %t227 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t228 = load { ptr, i64, i64 }, ptr %t227 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 0, %t229 - br i1 %t230, label %range5706, label %inrange5707 -range5706: - call void @finch_panic_index(ptr @.str.3641, i64 2899, i64 0, i64 %t229) - unreachable -inrange5707: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds %S.ast.Type, ptr %t231, i64 0 - %t233 = load %S.ast.Type, ptr %t232 - %t234 = call %S.gen.Val @finch.gen.exprWant(ptr %t217, %S.ast.Node %t226, %S.ast.Type %t233) - %t235 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t234, ptr %a211 - store %S.gen.Val %t235, ptr %a236 - call void @finch.drop.S_gen_Val(ptr %a236) - br label %endif5703 -endif5703: - %t237 = load ptr, ptr %a1 - %t238 = load %S.gen.Val, ptr %a211 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 0, %t241 - br i1 %t242, label %range5708, label %inrange5709 -range5708: - call void @finch_panic_index(ptr @.str.3642, i64 2901, i64 0, i64 %t241) - unreachable -inrange5709: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t247 = load i64, ptr %a198 - %t248 = mul i64 2, %t247 - %t249 = load { ptr, i64, i64 }, ptr %t246 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5710, label %inrange5711 -range5710: - call void @finch_panic_index(ptr @.str.3643, i64 2901, i64 %t248, i64 %t250) - unreachable -inrange5711: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - %t255 = call %S.gen.Val @finch.gen.coerce(ptr %t237, %S.gen.Val %t238, %S.ast.Type %t245, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3644, i64 21, i64 0 }) - %t256 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t255, ptr %a211 - store %S.gen.Val %t256, ptr %a257 - call void @finch.drop.S_gen_Val(ptr %a257) - %t258 = load ptr, ptr %a1 - %t259 = load %S.gen.Val, ptr %a211 - call void @finch.gen.hold(ptr %t258, %S.gen.Val %t259) - %t260 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t260, ptr %a261 - call void @finch.copy.S_gen_Val(ptr %a262, ptr %a261) - %t263 = load %S.gen.Val, ptr %a262 - store %S.gen.Val %t263, ptr %a264 - %t265 = load i64, ptr %a198 - %t266 = icmp eq i64 %t265, 0 - br label %logic.from5712 -logic.from5712: - br i1 %t266, label %logic.rhs5713, label %logic.end5714 -logic.rhs5713: - %t267 = load i1, ptr %a9 - br label %logic.rend5715 -logic.rend5715: - br label %logic.end5714 -logic.end5714: - %t268 = phi i1 [ false, %logic.from5712 ], [ %t267, %logic.rend5715 ] - %t269 = xor i1 %t268, true - br i1 %t269, label %then5716, label %endif5718 -then5716: - %t270 = load ptr, ptr %a1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t272 = load i64, ptr %a198 - %t273 = mul i64 2, %t272 - %t274 = add i64 %t273, 1 - %t275 = load { ptr, i64, i64 }, ptr %t271 - %t276 = extractvalue { ptr, i64, i64 } %t275, 1 - %t277 = icmp uge i64 %t274, %t276 - br i1 %t277, label %range5719, label %inrange5720 -range5719: - call void @finch_panic_index(ptr @.str.3645, i64 2905, i64 %t274, i64 %t276) - unreachable -inrange5720: - %t278 = extractvalue { ptr, i64, i64 } %t275, 0 - %t279 = getelementptr inbounds %S.ast.Node, ptr %t278, i64 %t274 - %t280 = load %S.ast.Node, ptr %t279 - %t281 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t282 = load { ptr, i64, i64 }, ptr %t281 - %t283 = extractvalue { ptr, i64, i64 } %t282, 1 - %t284 = icmp uge i64 1, %t283 - br i1 %t284, label %range5721, label %inrange5722 -range5721: - call void @finch_panic_index(ptr @.str.3646, i64 2905, i64 1, i64 %t283) - unreachable -inrange5722: - %t285 = extractvalue { ptr, i64, i64 } %t282, 0 - %t286 = getelementptr inbounds %S.ast.Type, ptr %t285, i64 1 - %t287 = load %S.ast.Type, ptr %t286 - %t288 = call %S.gen.Val @finch.gen.exprWant(ptr %t270, %S.ast.Node %t280, %S.ast.Type %t287) - %t289 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t288, ptr %a264 - store %S.gen.Val %t289, ptr %a290 - call void @finch.drop.S_gen_Val(ptr %a290) - br label %endif5718 -endif5718: - %t291 = load ptr, ptr %a1 - %t292 = load %S.gen.Val, ptr %a264 - %t293 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t294 = load { ptr, i64, i64 }, ptr %t293 - %t295 = extractvalue { ptr, i64, i64 } %t294, 1 - %t296 = icmp uge i64 1, %t295 - br i1 %t296, label %range5723, label %inrange5724 -range5723: - call void @finch_panic_index(ptr @.str.3647, i64 2907, i64 1, i64 %t295) - unreachable -inrange5724: - %t297 = extractvalue { ptr, i64, i64 } %t294, 0 - %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 1 - %t299 = load %S.ast.Type, ptr %t298 - %t300 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t301 = load i64, ptr %a198 - %t302 = mul i64 2, %t301 - %t303 = add i64 %t302, 1 - %t304 = load { ptr, i64, i64 }, ptr %t300 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range5725, label %inrange5726 -range5725: - call void @finch_panic_index(ptr @.str.3648, i64 2907, i64 %t303, i64 %t305) - unreachable -inrange5726: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Node, ptr %t307, i64 %t303 - %t309 = load %S.ast.Node, ptr %t308 - %t310 = call %S.gen.Val @finch.gen.coerce(ptr %t291, %S.gen.Val %t292, %S.ast.Type %t299, %S.ast.Node %t309, { ptr, i64, i64 } { ptr @.str.3649, i64 23, i64 0 }) - %t311 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t310, ptr %a264 - store %S.gen.Val %t311, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a264 - %t315 = call { ptr, i64, i64 } @finch.gen.own(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = load ptr, ptr %a1 - %t318 = load { ptr, i64, i64 }, ptr %a178 - %t319 = load %S.ast.Type, ptr %a8 - %t320 = load %S.gen.Val, ptr %a211 - %t321 = load %S.ast.Node, ptr %a2 - %t322 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t317, { ptr, i64, i64 } %t318, %S.ast.Type %t319, %S.gen.Val %t320, i1 false, %S.ast.Node %t321) - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a323 - %t326 = load %S.ast.Type, ptr %a8 - %t327 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t324, { ptr, i64, i64 } %t325, %S.ast.Type %t326, i64 2) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = load { ptr, i64, i64 }, ptr %a328 - %t331 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t332 = load { ptr, i64, i64 }, ptr %t331 - %t333 = extractvalue { ptr, i64, i64 } %t332, 1 - %t334 = icmp uge i64 1, %t333 - br i1 %t334, label %range5727, label %inrange5728 -range5727: - call void @finch_panic_index(ptr @.str.3650, i64 2911, i64 1, i64 %t333) - unreachable -inrange5728: - %t335 = extractvalue { ptr, i64, i64 } %t332, 0 - %t336 = getelementptr inbounds %S.ast.Type, ptr %t335, i64 1 - %t337 = load %S.ast.Type, ptr %t336 - call void @finch.gen.dropAt(ptr %t329, { ptr, i64, i64 } %t330, %S.ast.Type %t337) - %t338 = load ptr, ptr %a1 - %t339 = load ptr, ptr %a1 - %t340 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t341 = load { ptr, i64, i64 }, ptr %t340 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 1, %t342 - br i1 %t343, label %range5729, label %inrange5730 -range5729: - call void @finch_panic_index(ptr @.str.3651, i64 2912, i64 1, i64 %t342) - unreachable -inrange5730: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Type, ptr %t344, i64 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t339, %S.ast.Type %t346) - %t348 = load { ptr, i64, i64 }, ptr %a316 - %t349 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.store(ptr %t338, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t348, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load ptr, ptr %a1 - %t352 = load %S.gen.Val, ptr %a211 - call void @finch.gen.release(ptr %t351, %S.gen.Val %t352) - %t353 = load ptr, ptr %a1 - %t354 = load i64, ptr %a206 - call void @finch.gen.heldEnd(ptr %t353, i64 %t354) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a316) - call void @finch.drop.S_gen_Val(ptr %a264) - call void @finch.drop.S_gen_Val(ptr %a211) - br label %for.step5693 -for.step5693: - %t355 = load i64, ptr %a198 - %t356 = add i64 %t355, 1 - store i64 %t356, ptr %a198 - br label %for.cond5691 -for.end5694: - %t357 = load ptr, ptr %a1 - %t358 = load i64, ptr %a190 - call void @finch.gen.heldEnd(ptr %t357, i64 %t358) - %t359 = load ptr, ptr %a1 - %t360 = load ptr, ptr %a1 - %t361 = load %S.ast.Type, ptr %a8 - %t362 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t360, %S.ast.Type %t361) - %t363 = load { ptr, i64, i64 }, ptr %a178 - %t364 = call { ptr, i64, i64 } @finch.gen.load(ptr %t359, { ptr, i64, i64 } %t362, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 - %t367 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t367, ptr %a368 - call void @finch.copy.S_ast_Type(ptr %a369, ptr %a368) - %t370 = load %S.ast.Type, ptr %a369 - %t371 = insertvalue %S.gen.Val %t366, %S.ast.Type %t370, 1 - %t372 = insertvalue %S.gen.Val %t371, i1 true, 2 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.S_gen_Val(ptr %a11) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.gen.Val %t372 -} - -define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a82 = alloca %S.gen.Val, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a278 = alloca %S.gen.Val, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca %S.ast.Type, align 16 - %a351 = alloca %S.ast.Type, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca i64, align 16 - %a501 = alloca %S.ast.Type, align 16 - %a502 = alloca %S.ast.Type, align 16 - %a504 = alloca %S.ast.Type, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a515 = alloca %S.ast.Type, align 16 - %a518 = alloca %S.ast.Type, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.ast.Type, align 16 - %a753 = alloca %S.ast.Type, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5731, label %inrange5732 -range5731: - call void @finch_panic_index(ptr @.str.3652, i64 2922, i64 0, i64 %t13) - unreachable -inrange5732: - %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 %range5733, label %inrange5734 -range5733: - call void @finch_panic_index(ptr @.str.3653, i64 2923, i64 1, i64 %t24) - unreachable -inrange5734: - %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.3654, 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.from5735 -logic.from5735: - br i1 %t37, label %logic.end5737, label %logic.rhs5736 -logic.rhs5736: - %t38 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3655, 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.rend5738 -logic.rend5738: - br label %logic.end5737 -logic.end5737: - %t43 = phi i1 [ true, %logic.from5735 ], [ %t42, %logic.rend5738 ] - br label %logic.from5739 -logic.from5739: - br i1 %t43, label %logic.end5741, label %logic.rhs5740 -logic.rhs5740: - %t44 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.3656, 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.rend5742 -logic.rend5742: - br label %logic.end5741 -logic.end5741: - %t49 = phi i1 [ true, %logic.from5739 ], [ %t48, %logic.rend5742 ] - br i1 %t49, label %then5743, label %endif5745 -then5743: - %t50 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3657, 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 %then5746, label %else5747 -then5746: - %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 %endif5748 -else5747: - %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 %endif5748 -endif5748: - %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 %range5749, label %inrange5750 -range5749: - call void @finch_panic_index(ptr @.str.3658, i64 2930, i64 1, i64 %t65) - unreachable -inrange5750: - %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 %range5751, label %inrange5752 -range5751: - call void @finch_panic_index(ptr @.str.3659, i64 2930, i64 1, i64 %t75) - unreachable -inrange5752: - %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.3660, i64 7, i64 0 }) - store %S.gen.Val %t71, ptr %a81 - call void @finch.drop.S_gen_Val(ptr %a81) - store %S.gen.Val %t80, ptr %a82 - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a3 - %t85 = load ptr, ptr %a1 - %t86 = load %S.gen.Val, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t86) - %t88 = load %S.ast.Type, ptr %a4 - %t89 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t83, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t87, %S.ast.Type %t88) - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t89, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load %S.gen.Val, ptr %a82 - call void @finch.gen.release(ptr %t92, %S.gen.Val %t93) - %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3661, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3662, i64 3, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t94, { ptr, i64, i64 } %t104) - store { ptr, i64, i64 } %t104, ptr %a106 - call void @finch_str_drop(ptr %a106) - store { ptr, i64, i64 } %t105, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.3663, i64 3, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then5753, label %endif5755 -then5753: - %t113 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t113, ptr %a114 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 - %t118 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3664, i64 4, i64 0 }) - %t119 = insertvalue %S.gen.Val %t117, %S.ast.Type %t118, 1 - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t119 -endif5755: - %t120 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.3665, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then5756, label %endif5758 -then5756: - %t125 = load ptr, ptr %a1 - %t126 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t125, { ptr, i64, i64 } { ptr @.str.3666, i64 10, i64 0 }) - store { ptr, i64, i64 } %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t128, { ptr, i64, i64 } { ptr @.str.3667, i64 10, i64 0 }) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a107 - %t133 = load { ptr, i64, i64 }, ptr %a127 - %t134 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.condBr(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t134) - %t135 = load ptr, ptr %a1 - %t136 = load { ptr, i64, i64 }, ptr %a127 - call void @finch.gen.label(ptr %t135, { ptr, i64, i64 } %t136) - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a3 - %t139 = load %S.ast.Type, ptr %a4 - %t140 = load { ptr, i64, i64 }, ptr %a91 - %t141 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t137, { ptr, i64, i64 } %t138, %S.ast.Type %t139, { ptr, i64, i64 } %t140) - store { ptr, i64, i64 } %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a142 - %t146 = load %S.ast.Type, ptr %a4 - %t147 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Type %t146, i64 1) - %t148 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t143, { ptr, i64, i64 } %t147, %S.ast.Type %t148) - store { ptr, i64, i64 } %t147, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a142 - %t153 = load %S.ast.Type, ptr %a4 - %t154 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t151, { ptr, i64, i64 } %t152, %S.ast.Type %t153, i64 2) - %t155 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t150, { ptr, i64, i64 } %t154, %S.ast.Type %t155) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load ptr, ptr %a1 - %t158 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3668, i64 35, i64 0 }, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t162, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3669, i64 6, i64 0 }, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - %t168 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t167, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.3670, i64 6, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = load ptr, ptr %a1 - %t180 = load %S.ast.Type, ptr %a4 - %t181 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t179, %S.ast.Type %t180) - store { ptr, i64, i64 } %t178, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t178, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t181, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.3671, i64 1, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.br(ptr %t194, { ptr, i64, i64 } %t195) - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t198, ptr %a199 - call void @finch_str_copy(ptr %a200, ptr %a199) - %t201 = load { ptr, i64, i64 }, ptr %a200 - %t202 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t201, 0 - %t203 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3672, i64 4, i64 0 }) - %t204 = insertvalue %S.gen.Val %t202, %S.ast.Type %t203, 1 - call void @finch_str_drop(ptr %a142) - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a127) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t204 -endif5758: - %t205 = load ptr, ptr %a1 - %t206 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t205, { ptr, i64, i64 } { ptr @.str.3673, i64 9, i64 0 }) - store { ptr, i64, i64 } %t206, ptr %a207 - %t208 = load ptr, ptr %a1 - %t209 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t208, { ptr, i64, i64 } { ptr @.str.3674, i64 11, i64 0 }) - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t211, { ptr, i64, i64 } { ptr @.str.3675, i64 8, i64 0 }) - store { ptr, i64, i64 } %t212, ptr %a213 - %t214 = load ptr, ptr %a1 - %t215 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t214, { ptr, i64, i64 } { ptr @.str.3676, i64 8, i64 0 }) - store { ptr, i64, i64 } %t215, ptr %a216 - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t217, { ptr, i64, i64 } { ptr @.str.3677, i64 7, i64 0 }) - store { ptr, i64, i64 } %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a107 - %t222 = load { ptr, i64, i64 }, ptr %a207 - %t223 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.condBr(ptr %t220, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223) - %t224 = load ptr, ptr %a1 - %t225 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.label(ptr %t224, { ptr, i64, i64 } %t225) - %t226 = load ptr, ptr %a1 - %t227 = load ptr, ptr %a1 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a32 - %t230 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t228, %S.ast.Type %t229) - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load { ptr, i64, i64 }, ptr %a3 - %t234 = load %S.ast.Type, ptr %a4 - %t235 = load { ptr, i64, i64 }, ptr %a91 - %t236 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } %t233, %S.ast.Type %t234, { ptr, i64, i64 } %t235) - %t237 = load %S.ast.Type, ptr %a4 - %t238 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t231, { ptr, i64, i64 } %t236, %S.ast.Type %t237, i64 2) - store { ptr, i64, i64 } %t236, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } %t230, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t230, ptr %a241 - call void @finch_str_drop(ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load %S.ast.Type, ptr %a32 - %t244 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t226, { ptr, i64, i64 } %t240, %S.ast.Type %t243) - store { ptr, i64, i64 } %t240, ptr %a245 - call void @finch_str_drop(ptr %a245) - store { ptr, i64, i64 } %t244, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t248) - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.label(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a1 - %t252 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t251, { ptr, i64, i64 } %t252) - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.label(ptr %t253, { ptr, i64, i64 } %t254) - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load ptr, ptr %a1 - %t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t259 = load { ptr, i64, i64 }, ptr %t258 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 2, %t260 - br i1 %t261, label %range5759, label %inrange5760 -range5759: - call void @finch_panic_index(ptr @.str.3678, i64 2963, i64 2, i64 %t260) - unreachable -inrange5760: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Node, ptr %t262, i64 2 - %t264 = load %S.ast.Node, ptr %t263 - %t265 = load %S.ast.Type, ptr %a32 - %t266 = call %S.gen.Val @finch.gen.exprWant(ptr %t257, %S.ast.Node %t264, %S.ast.Type %t265) - %t267 = load %S.ast.Type, ptr %a32 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = extractvalue { ptr, i64, i64 } %t269, 1 - %t271 = icmp uge i64 2, %t270 - br i1 %t271, label %range5761, label %inrange5762 -range5761: - call void @finch_panic_index(ptr @.str.3679, i64 2963, i64 2, i64 %t270) - unreachable -inrange5762: - %t272 = extractvalue { ptr, i64, i64 } %t269, 0 - %t273 = getelementptr inbounds %S.ast.Node, ptr %t272, i64 2 - %t274 = load %S.ast.Node, ptr %t273 - %t275 = call %S.gen.Val @finch.gen.coerce(ptr %t256, %S.gen.Val %t266, %S.ast.Type %t267, %S.ast.Node %t274, { ptr, i64, i64 } { ptr @.str.3680, i64 11, i64 0 }) - store %S.gen.Val %t266, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - %t277 = call { ptr, i64, i64 } @finch.gen.own(ptr %t255, %S.gen.Val %t275) - store %S.gen.Val %t275, ptr %a278 - call void @finch.drop.S_gen_Val(ptr %a278) - store { ptr, i64, i64 } %t277, ptr %a279 - %t280 = load ptr, ptr %a1 - %t281 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.br(ptr %t280, { ptr, i64, i64 } %t281) - %t282 = load ptr, ptr %a1 - %t283 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.label(ptr %t282, { ptr, i64, i64 } %t283) - %t284 = load ptr, ptr %a1 - %t285 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t284, { ptr, i64, i64 } %t285) - %t286 = load ptr, ptr %a1 - %t287 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.label(ptr %t286, { ptr, i64, i64 } %t287) - %t288 = load ptr, ptr %a1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a32 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } { ptr @.str.3681, i64 4, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.3682, i64 3, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t301, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t301, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3683, i64 3, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t312, ptr %a315 - store { ptr, i64, i64 } %t313, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t312, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3684, i64 6, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - %t324 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t323, ptr %a326 - store { ptr, i64, i64 } %t324, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.3685, i64 3, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t334, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t334, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.3686, i64 2, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t345) - store { ptr, i64, i64 } %t345, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t346, 0 - %t349 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t349, ptr %a350 - call void @finch.copy.S_ast_Type(ptr %a351, ptr %a350) - %t352 = load %S.ast.Type, ptr %a351 - %t353 = insertvalue %S.gen.Val %t348, %S.ast.Type %t352, 1 - %t354 = load ptr, ptr %a1 - %t355 = load %S.ast.Type, ptr %a32 - %t356 = call i1 @finch.gen.owning(ptr %t354, %S.ast.Type %t355) - %t357 = insertvalue %S.gen.Val %t353, i1 %t356, 2 - call void @finch_str_drop(ptr %a279) - call void @finch_str_drop(ptr %a246) - call void @finch_str_drop(ptr %a219) - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a213) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a207) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t357 -endif5745: - %t358 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.3687, i64 5, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then5763, label %endif5765 -then5763: - %t363 = load ptr, ptr %a1 - %t364 = load %S.ast.Node, ptr %a2 - %t365 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t363, %S.ast.Node %t364, i64 1, i64 0, { ptr, i64, i64 } %t365) - %t366 = load ptr, ptr %a1 - %t367 = load %S.ast.Type, ptr %a21 - %t368 = call i1 @finch.gen.owning(ptr %t366, %S.ast.Type %t367) - br label %logic.from5766 -logic.from5766: - br i1 %t368, label %logic.end5768, label %logic.rhs5767 -logic.rhs5767: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Type, ptr %a32 - %t371 = call i1 @finch.gen.owning(ptr %t369, %S.ast.Type %t370) - br label %logic.rend5769 -logic.rend5769: - br label %logic.end5768 -logic.end5768: - %t372 = phi i1 [ true, %logic.from5766 ], [ %t371, %logic.rend5769 ] - br i1 %t372, label %then5770, label %endif5772 -then5770: - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a4 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - store { ptr, i64, i64 } { ptr @.str.3689, i64 23, i64 0 }, ptr %a379 - store { ptr, i64, i64 } %t377, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t382, ptr %a384 - store { ptr, i64, i64 } { ptr @.str.3690, i64 6, i64 0 }, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - %t388 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t387, ptr %a390 - store { ptr, i64, i64 } %t388, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t387, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - store { ptr, i64, i64 } %t393, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.3691, i64 14, i64 0 }, ptr %a396 - call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) - store { ptr, i64, i64 } %t393, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load { ptr, i64, i64 }, ptr %a394 - %t399 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t398) - store { ptr, i64, i64 } %t398, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.3688, i64 3, i64 0 }, { ptr, i64, i64 } %t399) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store { ptr, i64, i64 } %t401, ptr %a403 - %t404 = load ptr, ptr %a1 - %t405 = load { ptr, i64, i64 }, ptr %a403 - %t406 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t404, { ptr, i64, i64 } %t405) - store { ptr, i64, i64 } %t406, ptr %a407 - %t408 = load ptr, ptr %a1 - %t409 = load { ptr, i64, i64 }, ptr %a3 - %t410 = load %S.ast.Type, ptr %a4 - %t411 = load { ptr, i64, i64 }, ptr %a407 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 3, %t412 - br i1 %t413, label %range5773, label %inrange5774 -range5773: - call void @finch_panic_index(ptr @.str.3692, i64 2975, i64 3, i64 %t412) - unreachable -inrange5774: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 3 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t408, { ptr, i64, i64 } %t409, %S.ast.Type %t410, { ptr, i64, i64 } %t416) - store { ptr, i64, i64 } %t417, ptr %a418 - %t419 = load ptr, ptr %a1 - %t420 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t419, { ptr, i64, i64 } { ptr @.str.3693, i64 10, i64 0 }) - store { ptr, i64, i64 } %t420, ptr %a421 - %t422 = load ptr, ptr %a1 - %t423 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t422, { ptr, i64, i64 } { ptr @.str.3694, i64 10, i64 0 }) - store { ptr, i64, i64 } %t423, ptr %a424 - %t425 = load ptr, ptr %a1 - %t426 = load ptr, ptr %a1 - %t427 = load ptr, ptr %a1 - %t428 = load ptr, ptr %a1 - %t429 = load { ptr, i64, i64 }, ptr %a418 - %t430 = load %S.ast.Type, ptr %a4 - %t431 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t428, { ptr, i64, i64 } %t429, %S.ast.Type %t430, i64 0) - %t432 = call { ptr, i64, i64 } @finch.gen.load(ptr %t427, { ptr, i64, i64 } { ptr @.str.3696, i64 3, i64 0 }, { ptr, i64, i64 } %t431) - store { ptr, i64, i64 } %t431, ptr %a433 - call void @finch_str_drop(ptr %a433) - store { ptr, i64, i64 } { ptr @.str.3695, i64 12, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t432, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t432, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.3697, i64 3, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t426, { ptr, i64, i64 } %t443) - store { ptr, i64, i64 } %t443, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load { ptr, i64, i64 }, ptr %a421 - %t447 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.condBr(ptr %t425, { ptr, i64, i64 } %t444, { ptr, i64, i64 } %t446, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t444, ptr %a448 - call void @finch_str_drop(ptr %a448) - %t449 = load ptr, ptr %a1 - %t450 = load { ptr, i64, i64 }, ptr %a421 - call void @finch.gen.label(ptr %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load ptr, ptr %a1 - %t453 = load { ptr, i64, i64 }, ptr %a418 - %t454 = load %S.ast.Type, ptr %a4 - %t455 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t452, { ptr, i64, i64 } %t453, %S.ast.Type %t454, i64 1) - %t456 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t451, { ptr, i64, i64 } %t455, %S.ast.Type %t456) - store { ptr, i64, i64 } %t455, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load ptr, ptr %a1 - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a418 - %t461 = load %S.ast.Type, ptr %a4 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 2) - %t463 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t458, { ptr, i64, i64 } %t462, %S.ast.Type %t463) - store { ptr, i64, i64 } %t462, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load ptr, ptr %a1 - %t466 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.br(ptr %t465, { ptr, i64, i64 } %t466) - %t467 = load ptr, ptr %a1 - %t468 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.label(ptr %t467, { ptr, i64, i64 } %t468) - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.loopEnd(ptr %t469, { ptr, i64, i64 } %t470) - call void @finch_str_drop(ptr %a424) - call void @finch_str_drop(ptr %a421) - call void @finch_str_drop(ptr %a418) - call void @finch.drop.arr_str(ptr %a407) - call void @finch_str_drop(ptr %a403) - br label %endif5772 -endif5772: - %t471 = load ptr, ptr %a1 - %t472 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3698, i64 31, i64 0 }, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - %t476 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t476, ptr %a478 - store { ptr, i64, i64 } { ptr @.str.3699, i64 1, i64 0 }, ptr %a479 - call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) - store { ptr, i64, i64 } %t476, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a477 - call void @finch.gen.emit(ptr %t471, { ptr, i64, i64 } %t481) - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3700, i64 4, i64 0 }) - %t484 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t483, 1 - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t484 -endif5765: - %t485 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t485, ptr %a486 - store { ptr, i64, i64 } { ptr @.str.3701, i64 4, i64 0 }, ptr %a487 - %t488 = call i32 @finch_str_eq(ptr %a486, ptr %a487) - %t489 = icmp ne i32 %t488, 0 - br label %logic.from5775 -logic.from5775: - br i1 %t489, label %logic.end5777, label %logic.rhs5776 -logic.rhs5776: - %t490 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t490, ptr %a491 - store { ptr, i64, i64 } { ptr @.str.3702, i64 6, i64 0 }, ptr %a492 - %t493 = call i32 @finch_str_eq(ptr %a491, ptr %a492) - %t494 = icmp ne i32 %t493, 0 - br label %logic.rend5778 -logic.rend5778: - br label %logic.end5777 -logic.end5777: - %t495 = phi i1 [ true, %logic.from5775 ], [ %t494, %logic.rend5778 ] - br i1 %t495, label %then5779, label %endif5781 -then5779: - %t496 = load ptr, ptr %a1 - %t497 = load %S.ast.Node, ptr %a2 - %t498 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t496, %S.ast.Node %t497, i64 1, i64 0, { ptr, i64, i64 } %t498) - store i64 1, ptr %a499 - %t500 = load %S.ast.Type, ptr %a21 - store %S.ast.Type %t500, ptr %a501 - call void @finch.copy.S_ast_Type(ptr %a502, ptr %a501) - %t503 = load %S.ast.Type, ptr %a502 - store %S.ast.Type %t503, ptr %a504 - %t505 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t505, ptr %a506 - store { ptr, i64, i64 } { ptr @.str.3703, i64 6, i64 0 }, ptr %a507 - %t508 = call i32 @finch_str_eq(ptr %a506, ptr %a507) - %t509 = icmp ne i32 %t508, 0 - br i1 %t509, label %then5782, label %endif5784 -then5782: - store i64 2, ptr %a499 - %t510 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = load %S.ast.Type, ptr %a504 - store %S.ast.Type %t513, ptr %a504 - store %S.ast.Type %t514, ptr %a515 - call void @finch.drop.S_ast_Type(ptr %a515) - br label %endif5784 -endif5784: - %t516 = load %S.ast.Type, ptr %a504 - %t517 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t516) - store %S.ast.Type %t517, ptr %a518 - %t519 = load ptr, ptr %a1 - %t520 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t519, { ptr, i64, i64 } { ptr @.str.3704, i64 17, i64 0 }) - store { ptr, i64, i64 } %t520, ptr %a521 - %t522 = load ptr, ptr %a1 - %t523 = load { ptr, i64, i64 }, ptr %a521 - call void @finch.gen.store(ptr %t522, { ptr, i64, i64 } { ptr @.str.3705, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3706, i64 15, i64 0 }, { ptr, i64, i64 } %t523) - %t524 = load ptr, ptr %a1 - %t525 = load ptr, ptr %a1 - %t526 = load ptr, ptr %a1 - %t527 = load %S.ast.Type, ptr %a4 - %t528 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t526, %S.ast.Type %t527) - store { ptr, i64, i64 } { ptr @.str.3708, i64 23, i64 0 }, ptr %a530 - store { ptr, i64, i64 } %t528, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } %t533, ptr %a535 - store { ptr, i64, i64 } { ptr @.str.3709, i64 6, i64 0 }, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = load { ptr, i64, i64 }, ptr %a534 - %t539 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t538, ptr %a541 - store { ptr, i64, i64 } %t539, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t538, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - store { ptr, i64, i64 } %t544, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.3710, i64 14, i64 0 }, ptr %a547 - call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) - store { ptr, i64, i64 } %t544, ptr %a548 - call void @finch_str_drop(ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a545 - %t550 = call { ptr, i64, i64 } @finch.gen.op(ptr %t525, { ptr, i64, i64 } %t549) - store { ptr, i64, i64 } %t549, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } { ptr @.str.3707, i64 3, i64 0 }, { ptr, i64, i64 } %t550) - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_drop(ptr %a553) - store { ptr, i64, i64 } %t552, ptr %a554 - %t555 = load ptr, ptr %a1 - %t556 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } { ptr @.str.3711, i64 30, i64 0 }, ptr %a558 - store { ptr, i64, i64 } %t556, ptr %a559 - call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a557 - store { ptr, i64, i64 } %t560, ptr %a562 - store { ptr, i64, i64 } { ptr @.str.3712, i64 6, i64 0 }, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t560, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - %t566 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t565, ptr %a568 - store { ptr, i64, i64 } %t566, ptr %a569 - call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569) - store { ptr, i64, i64 } %t565, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = load { ptr, i64, i64 }, ptr %a567 - store { ptr, i64, i64 } %t571, ptr %a573 - store { ptr, i64, i64 } { ptr @.str.3713, i64 6, i64 0 }, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t571, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - %t577 = load ptr, ptr %a1 - %t578 = load %S.ast.Type, ptr %a504 - %t579 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t577, %S.ast.Type %t578) - store { ptr, i64, i64 } %t576, ptr %a581 - store { ptr, i64, i64 } %t579, ptr %a582 - call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) - store { ptr, i64, i64 } %t576, ptr %a583 - call void @finch_str_drop(ptr %a583) - store { ptr, i64, i64 } %t579, ptr %a584 - call void @finch_str_drop(ptr %a584) - %t585 = load { ptr, i64, i64 }, ptr %a580 - store { ptr, i64, i64 } %t585, ptr %a587 - store { ptr, i64, i64 } { ptr @.str.3714, i64 1, i64 0 }, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t585, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - call void @finch.gen.emit(ptr %t555, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a591 - call void @finch_str_drop(ptr %a591) - %t592 = load ptr, ptr %a1 - %t593 = load { ptr, i64, i64 }, ptr %a521 - %t594 = call { ptr, i64, i64 } @finch.gen.load(ptr %t592, { ptr, i64, i64 } { ptr @.str.3715, i64 3, i64 0 }, { ptr, i64, i64 } %t593) - store { ptr, i64, i64 } %t594, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t596, { ptr, i64, i64 } { ptr @.str.3716, i64 3, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t599, { ptr, i64, i64 } { ptr @.str.3717, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3718, i64 1, i64 0 }, { ptr, i64, i64 } %t600) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = load ptr, ptr %a1 - %t604 = load %S.ast.Type, ptr %a4 - %t605 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t603, %S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.3720, i64 23, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.3721, i64 6, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t615, ptr %a618 - store { ptr, i64, i64 } %t616, ptr %a619 - call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) - store { ptr, i64, i64 } %t615, ptr %a620 - call void @finch_str_drop(ptr %a620) - %t621 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t621, ptr %a623 - store { ptr, i64, i64 } { ptr @.str.3722, i64 14, i64 0 }, ptr %a624 - call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624) - store { ptr, i64, i64 } %t621, ptr %a625 - call void @finch_str_drop(ptr %a625) - %t626 = load { ptr, i64, i64 }, ptr %a622 - %t627 = call { ptr, i64, i64 } @finch.gen.op(ptr %t602, { ptr, i64, i64 } %t626) - store { ptr, i64, i64 } %t626, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } { ptr @.str.3719, i64 3, i64 0 }, { ptr, i64, i64 } %t627) - store { ptr, i64, i64 } %t627, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t629, ptr %a631 - %t632 = load ptr, ptr %a1 - %t633 = load { ptr, i64, i64 }, ptr %a631 - %t634 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t632, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t634, ptr %a635 - %t636 = load ptr, ptr %a1 - %t637 = load { ptr, i64, i64 }, ptr %a3 - %t638 = load %S.ast.Type, ptr %a4 - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = extractvalue { ptr, i64, i64 } %t639, 1 - %t641 = icmp uge i64 3, %t640 - br i1 %t641, label %range5785, label %inrange5786 -range5785: - call void @finch_panic_index(ptr @.str.3723, i64 3007, i64 3, i64 %t640) - unreachable -inrange5786: - %t642 = extractvalue { ptr, i64, i64 } %t639, 0 - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %t642, i64 3 - %t644 = load { ptr, i64, i64 }, ptr %t643 - %t645 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t636, { ptr, i64, i64 } %t637, %S.ast.Type %t638, { ptr, i64, i64 } %t644) - store { ptr, i64, i64 } %t645, ptr %a646 - %t647 = load ptr, ptr %a1 - %t648 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t647, { ptr, i64, i64 } { ptr @.str.3724, i64 10, i64 0 }) - store { ptr, i64, i64 } %t648, ptr %a649 - %t650 = load ptr, ptr %a1 - %t651 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t650, { ptr, i64, i64 } { ptr @.str.3725, i64 10, i64 0 }) - store { ptr, i64, i64 } %t651, ptr %a652 - %t653 = load ptr, ptr %a1 - %t654 = load ptr, ptr %a1 - %t655 = load ptr, ptr %a1 - %t656 = load ptr, ptr %a1 - %t657 = load { ptr, i64, i64 }, ptr %a646 - %t658 = load %S.ast.Type, ptr %a4 - %t659 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t656, { ptr, i64, i64 } %t657, %S.ast.Type %t658, i64 0) - %t660 = call { ptr, i64, i64 } @finch.gen.load(ptr %t655, { ptr, i64, i64 } { ptr @.str.3727, i64 3, i64 0 }, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t659, ptr %a661 - call void @finch_str_drop(ptr %a661) - store { ptr, i64, i64 } { ptr @.str.3726, i64 12, i64 0 }, ptr %a663 - store { ptr, i64, i64 } %t660, ptr %a664 - call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) - store { ptr, i64, i64 } %t660, ptr %a665 - call void @finch_str_drop(ptr %a665) - %t666 = load { ptr, i64, i64 }, ptr %a662 - store { ptr, i64, i64 } %t666, ptr %a668 - store { ptr, i64, i64 } { ptr @.str.3728, i64 3, i64 0 }, ptr %a669 - call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) - store { ptr, i64, i64 } %t666, ptr %a670 - call void @finch_str_drop(ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a667 - %t672 = call { ptr, i64, i64 } @finch.gen.op(ptr %t654, { ptr, i64, i64 } %t671) - store { ptr, i64, i64 } %t671, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a649 - %t675 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.condBr(ptr %t653, { ptr, i64, i64 } %t672, { ptr, i64, i64 } %t674, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t672, ptr %a676 - call void @finch_str_drop(ptr %a676) - %t677 = load ptr, ptr %a1 - %t678 = load { ptr, i64, i64 }, ptr %a649 - call void @finch.gen.label(ptr %t677, { ptr, i64, i64 } %t678) - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a598 - %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t679, { ptr, i64, i64 } { ptr @.str.3729, i64 3, i64 0 }, { ptr, i64, i64 } %t680) - store { ptr, i64, i64 } %t681, ptr %a682 - %t683 = load ptr, ptr %a1 - %t684 = load ptr, ptr %a1 - %t685 = load ptr, ptr %a1 - %t686 = load %S.ast.Type, ptr %a504 - %t687 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t685, %S.ast.Type %t686) - store { ptr, i64, i64 } { ptr @.str.3730, i64 23, i64 0 }, ptr %a689 - store { ptr, i64, i64 } %t687, ptr %a690 - call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) - store { ptr, i64, i64 } %t687, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a688 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.3731, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.3732, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } %t708, ptr %a711 - store { ptr, i64, i64 } %t709, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t708, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - %t715 = call { ptr, i64, i64 } @finch.gen.op(ptr %t684, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a716 - call void @finch_str_drop(ptr %a716) - %t717 = load ptr, ptr %a1 - %t718 = load { ptr, i64, i64 }, ptr %a646 - %t719 = load %S.ast.Type, ptr %a4 - %t720 = load i64, ptr %a499 - %t721 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t717, { ptr, i64, i64 } %t718, %S.ast.Type %t719, i64 %t720) - %t722 = load %S.ast.Type, ptr %a504 - call void @finch.gen.copyAt(ptr %t683, { ptr, i64, i64 } %t715, { ptr, i64, i64 } %t721, %S.ast.Type %t722) - store { ptr, i64, i64 } %t715, ptr %a723 - call void @finch_str_drop(ptr %a723) - store { ptr, i64, i64 } %t721, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load ptr, ptr %a1 - %t727 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.3734, i64 8, i64 0 }, ptr %a729 - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - %t731 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t731, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3735, i64 3, i64 0 }, ptr %a734 - call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) - store { ptr, i64, i64 } %t731, ptr %a735 - call void @finch_str_drop(ptr %a735) - %t736 = load { ptr, i64, i64 }, ptr %a732 - %t737 = call { ptr, i64, i64 } @finch.gen.op(ptr %t726, { ptr, i64, i64 } %t736) - store { ptr, i64, i64 } %t736, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t725, { ptr, i64, i64 } { ptr @.str.3733, i64 3, i64 0 }, { ptr, i64, i64 } %t737, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t737, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load ptr, ptr %a1 - %t742 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.br(ptr %t741, { ptr, i64, i64 } %t742) - %t743 = load ptr, ptr %a1 - %t744 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.label(ptr %t743, { ptr, i64, i64 } %t744) - %t745 = load ptr, ptr %a1 - %t746 = load { ptr, i64, i64 }, ptr %a635 - call void @finch.gen.loopEnd(ptr %t745, { ptr, i64, i64 } %t746) - %t747 = load ptr, ptr %a1 - %t748 = load { ptr, i64, i64 }, ptr %a521 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t747, { ptr, i64, i64 } { ptr @.str.3736, i64 17, i64 0 }, { ptr, i64, i64 } %t748) - %t750 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t749, 0 - %t751 = load %S.ast.Type, ptr %a518 - store %S.ast.Type %t751, ptr %a752 - call void @finch.copy.S_ast_Type(ptr %a753, ptr %a752) - %t754 = load %S.ast.Type, ptr %a753 - %t755 = insertvalue %S.gen.Val %t750, %S.ast.Type %t754, 1 - %t756 = insertvalue %S.gen.Val %t755, i1 true, 2 - call void @finch_str_drop(ptr %a682) - call void @finch_str_drop(ptr %a652) - call void @finch_str_drop(ptr %a649) - call void @finch_str_drop(ptr %a646) - call void @finch.drop.arr_str(ptr %a635) - call void @finch_str_drop(ptr %a631) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a554) - call void @finch_str_drop(ptr %a521) - call void @finch.drop.S_ast_Type(ptr %a518) - call void @finch.drop.S_ast_Type(ptr %a504) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t756 -endif5781: - %t757 = load ptr, ptr %a1 - %t758 = load %S.ast.Node, ptr %a2 - %t759 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.3737, i64 21, i64 0 }, ptr %a761 - store { ptr, i64, i64 } %t759, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a760 - store { ptr, i64, i64 } %t763, ptr %a765 - store { ptr, i64, i64 } { ptr @.str.3738, i64 49, i64 0 }, ptr %a766 - call void @finch_str_concat(ptr %a764, ptr %a765, ptr %a766) - store { ptr, i64, i64 } %t763, ptr %a767 - call void @finch_str_drop(ptr %a767) - %t768 = load { ptr, i64, i64 }, ptr %a764 - call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t768) - store { ptr, i64, i64 } %t768, ptr %a769 - call void @finch_str_drop(ptr %a769) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val zeroinitializer -} - -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 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a118 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3739, 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.from5787 -logic.from5787: - br i1 %t9, label %logic.rhs5788, label %logic.end5789 -logic.rhs5788: - %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.3740, 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.rend5790 -logic.rend5790: - br label %logic.end5789 -logic.end5789: - %t16 = phi i1 [ false, %logic.from5787 ], [ %t15, %logic.rend5790 ] - br label %logic.from5791 -logic.from5791: - br i1 %t16, label %logic.rhs5792, label %logic.end5793 -logic.rhs5792: - %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.rend5794 -logic.rend5794: - br label %logic.end5793 -logic.end5793: - %t22 = phi i1 [ false, %logic.from5791 ], [ %t21, %logic.rend5794 ] - br i1 %t22, label %then5795, label %endif5797 -then5795: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic5798, label %ok5799 -panic5798: - call void @finch_panic(ptr @.str.3741, i64 3029, ptr @.str.3742) - unreachable -ok5799: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 21 - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %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 %range5800, label %inrange5801 -range5800: - call void @finch_panic_index(ptr @.str.3743, i64 3029, i64 %t31, i64 %t33) - unreachable -inrange5801: - %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.cond5802 -find.cond5802: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t47 - br i1 %t51, label %find.body5803, label %find.end5806 -find.body5803: - %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.hit5804, label %find.next5805 -find.hit5804: - store i64 %t50, ptr %a46 - br label %find.end5806 -find.next5805: - %t58 = add i64 %t50, 1 - store i64 %t58, ptr %a49 - br label %find.cond5802 -find.end5806: - %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 %then5807, label %endif5809 -then5807: - %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.3744, 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.3745, i64 22, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 - %t77 = load { ptr, i64, i64 }, ptr %t76 - store { ptr, i64, i64 } %t75, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t75, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.3746, i64 10, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3747, i64 2, i64 0 }, ptr %a90 - call void @finch_str_join(ptr %a91, ptr %t88, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t87, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t87, ptr %a96 - call void @finch_str_drop(ptr %a96) - store { ptr, i64, i64 } %t92, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.3748, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif5809 -endif5809: - %t105 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3 - %t106 = load i64, ptr %a60 - %t107 = load { ptr, i64, i64 }, ptr %t105 - %t108 = extractvalue { ptr, i64, i64 } %t107, 1 - %t109 = icmp uge i64 %t106, %t108 - br i1 %t109, label %range5810, label %inrange5811 -range5810: - call void @finch_panic_index(ptr @.str.3749, i64 3034, i64 %t106, i64 %t108) - unreachable -inrange5811: - %t110 = extractvalue { ptr, i64, i64 } %t107, 0 - %t111 = getelementptr inbounds i64, ptr %t110, i64 %t106 - %t112 = load i64, ptr %t111 - call void @finch_str_from_int(ptr %a113, i64 %t112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t114, 0 - %t116 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t116, ptr %a117 - call void @finch.copy.S_ast_Type(ptr %a118, ptr %a117) - %t119 = load %S.ast.Type, ptr %a118 - %t120 = insertvalue %S.gen.Val %t115, %S.ast.Type %t119, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a41) - ret %S.gen.Val %t120 -endif5797: - %t121 = load ptr, ptr %a1 - %t122 = load ptr, ptr %a1 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = load %S.ast.Type, ptr %a3 - %t125 = call %S.gen.Val @finch.gen.exprWant(ptr %t122, %S.ast.Node %t123, %S.ast.Type %t124) - %t126 = load %S.ast.Type, ptr %a3 - %t127 = load %S.ast.Node, ptr %a2 - %t128 = call %S.gen.Val @finch.gen.coerce(ptr %t121, %S.gen.Val %t125, %S.ast.Type %t126, %S.ast.Node %t127, { ptr, i64, i64 } { ptr @.str.3750, i64 12, i64 0 }) - store %S.gen.Val %t125, ptr %a129 - call void @finch.drop.S_gen_Val(ptr %a129) - ret %S.gen.Val %t128 -} - -define internal void @finch.drop.S_gen_SumPat(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumPat, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t1) - ret void -} - -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 - %a46 = alloca i64, align 16 - %a49 = 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 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i1, align 16 - %a128 = alloca i1, 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 %S.ast.Type, align 16 - %a138 = alloca i64, align 16 - %a140 = alloca i64, align 16 - %a152 = alloca %S.ast.Node, align 16 - %a153 = alloca %S.ast.Node, align 16 - %a155 = alloca %S.ast.Node, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca i64, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca %S.gen.SumPat, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %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 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca %S.gen.Val, align 16 - %a303 = alloca i64, align 16 - %a306 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.gen.Val, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca i1, align 16 - %a404 = alloca %S.gen.StructDef, align 16 - %a405 = alloca %S.gen.StructDef, align 16 - %a407 = alloca %S.gen.StructDef, align 16 - %a410 = alloca i64, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca i64, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a454 = alloca %S.ast.Type, align 16 - %a456 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %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 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca %S.ast.Node, align 16 - %a536 = alloca %S.ast.Node, align 16 - %a538 = alloca %S.ast.Node, align 16 - %a543 = alloca %S.gen.Val, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca %S.ast.Type, align 16 - %a573 = alloca %S.ast.Type, align 16 - %a576 = alloca %S.ast.Type, align 16 - %a583 = alloca %S.gen.Val, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca i64, align 16 - %a670 = alloca i64, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.gen.EnumDef, align 16 - %a753 = alloca %S.gen.EnumDef, align 16 - %a755 = alloca %S.gen.EnumDef, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca i64, align 16 - %a777 = alloca i64, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a882 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a887 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca %S.ast.Type, align 16 - %a891 = alloca %S.ast.Type, align 16 - %a898 = 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 %range5812, label %inrange5813 -range5812: - call void @finch_panic_index(ptr @.str.3751, i64 3042, i64 0, i64 %t7) - unreachable -inrange5813: - %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.3752, 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.from5814 -logic.from5814: - br i1 %t25, label %logic.end5816, label %logic.rhs5815 -logic.rhs5815: - %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.3753, 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.rend5817 -logic.rend5817: - br label %logic.end5816 -logic.end5816: - %t32 = phi i1 [ true, %logic.from5814 ], [ %t31, %logic.rend5817 ] - br i1 %t32, label %then5818, label %endif5820 -then5818: - %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 %range5821, label %inrange5822 -range5821: - call void @finch_panic_index(ptr @.str.3754, i64 3045, i64 0, i64 %t36) - unreachable -inrange5822: - %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.3755, i64 30, i64 0 }) - br label %endif5820 -endif5820: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic5823, label %ok5824 -panic5823: - call void @finch_panic(ptr @.str.3756, i64 3047, ptr @.str.3757) - unreachable -ok5824: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 11 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - store i64 %t45, ptr %a46 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a13 - call void @finch.gen.hold(ptr %t47, %S.gen.Val %t48) - store i64 -1, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3758, i64 0, i64 0 }, ptr %a50 - %t51 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.3759, i64 6, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then5825, label %endif5827 -then5825: - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call i64 @finch.gen.findSum(ptr %t57, { ptr, i64, i64 } %t59, { ptr, i64, i64 } %t61) - store i64 %t62, ptr %a49 - %t63 = load i64, ptr %a49 - %t64 = icmp sge i64 %t63, 0 - br i1 %t64, label %then5828, label %endif5830 -then5828: - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Type, ptr %a19 - %t68 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t66, %S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.3760, i64 13, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3761, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3762, i64 2, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic5831, label %ok5832 -panic5831: - call void @finch_panic(ptr @.str.3763, i64 3054, ptr @.str.3764) - unreachable -ok5832: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 16 - %t94 = load ptr, ptr %a1 - %t95 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t98 = load { ptr, i64, i64 }, ptr %t97 - %t99 = call i64 @finch.gen.findStruct(ptr %t94, { ptr, i64, i64 } %t96, { ptr, i64, i64 } %t98) - %t100 = load { ptr, i64, i64 }, ptr %t93 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range5833, label %inrange5834 -range5833: - call void @finch_panic_index(ptr @.str.3765, i64 3054, i64 %t99, i64 %t101) - unreachable -inrange5834: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.gen.StructDef, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.gen.StructDef, ptr %t104, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - %t107 = extractvalue { ptr, i64, i64 } %t106, 1 - %t108 = icmp uge i64 0, %t107 - br i1 %t108, label %range5835, label %inrange5836 -range5835: - call void @finch_panic_index(ptr @.str.3766, i64 3054, i64 0, i64 %t107) - unreachable -inrange5836: - %t109 = extractvalue { ptr, i64, i64 } %t106, 0 - %t110 = getelementptr inbounds i64, ptr %t109, i64 0 - %t111 = load i64, ptr %t110 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t90, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t90, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t120, ptr %a50 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_drop(ptr %a123) - br label %endif5830 -endif5830: - br label %endif5827 -endif5827: - %t124 = load ptr, ptr %a1 - %t125 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t124, { ptr, i64, i64 } { ptr @.str.3767, i64 9, i64 0 }) - store { ptr, i64, i64 } %t125, ptr %a126 - store i1 false, ptr %a127 - store i1 false, ptr %a128 - store { ptr, i64, i64 } zeroinitializer, ptr %a129 - store { ptr, i64, i64 } zeroinitializer, ptr %a130 - store { ptr, i64, i64 } zeroinitializer, ptr %a131 - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3768, i64 4, i64 0 }) - store %S.ast.Type %t132, ptr %a133 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = sub i64 %t136, 1 - store i64 %t137, ptr %a138 - %t139 = load i64, ptr %a138 - store i64 0, ptr %a140 - br label %for.cond5837 -for.cond5837: - %t141 = load i64, ptr %a140 - %t142 = icmp slt i64 %t141, %t139 - br i1 %t142, label %for.body5838, label %for.end5840 -for.body5838: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load i64, ptr %a140 - %t145 = add i64 1, %t144 - %t146 = load { ptr, i64, i64 }, ptr %t143 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5841, label %inrange5842 -range5841: - call void @finch_panic_index(ptr @.str.3769, i64 3066, i64 %t145, i64 %t147) - unreachable -inrange5842: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Node, ptr %t149, i64 %t145 - %t151 = load %S.ast.Node, ptr %t150 - store %S.ast.Node %t151, ptr %a152 - call void @finch.copy.S_ast_Node(ptr %a153, ptr %a152) - %t154 = load %S.ast.Node, ptr %a153 - store %S.ast.Node %t154, ptr %a155 - %t156 = load i1, ptr %a127 - br i1 %t156, label %then5843, label %endif5845 -then5843: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a155 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } { ptr @.str.3770, i64 72, i64 0 }) - br label %endif5845 -endif5845: - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t159, { ptr, i64, i64 } { ptr @.str.3771, i64 9, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t162, { ptr, i64, i64 } { ptr @.str.3772, i64 10, i64 0 }) - store { ptr, i64, i64 } %t163, ptr %a164 - store { ptr, i64, i64 } zeroinitializer, ptr %a165 - store i64 -1, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t168 = load i1, ptr %t167 - br i1 %t168, label %then5846, label %else5847 -then5846: - store i1 true, ptr %a127 - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.br(ptr %t169, { ptr, i64, i64 } %t170) - br label %endif5848 -else5847: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range5849, label %inrange5850 -range5849: - call void @finch_panic_index(ptr @.str.3773, i64 3078, i64 0, i64 %t173) - unreachable -inrange5850: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 0 - %t177 = getelementptr inbounds %S.ast.Node, ptr %t176, i32 0, i32 9 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t178, ptr %a179 - call void @finch.copy.arr_S_ast_Node(ptr %a180, ptr %a179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - store i64 0, ptr %a185 - br label %for.cond5851 -for.cond5851: - %t186 = load i64, ptr %a185 - %t187 = icmp slt i64 %t186, %t184 - br i1 %t187, label %for.body5852, label %for.end5854 -for.body5852: - store { ptr, i64, i64 } { ptr @.str.3774, i64 0, i64 0 }, ptr %a188 - %t189 = load i64, ptr %a49 - %t190 = icmp sge i64 %t189, 0 - br i1 %t190, label %then5855, label %else5856 -then5855: - %t191 = load ptr, ptr %a1 - %t192 = load i64, ptr %a185 - %t193 = load { ptr, i64, i64 }, ptr %a182 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range5858, label %inrange5859 -range5858: - call void @finch_panic_index(ptr @.str.3775, i64 3082, i64 %t192, i64 %t194) - unreachable -inrange5859: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 %t192 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = load i64, ptr %a49 - %t200 = call %S.gen.SumPat @finch.gen.sumPattern(ptr %t191, %S.ast.Node %t198, i64 %t199) - store %S.gen.SumPat %t200, ptr %a201 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t203 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t204 = load i64, ptr %t203 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store i64 -1, ptr %a207 - %t208 = load i64, ptr %t202 - %t209 = load ptr, ptr %a129 - store i64 0, ptr %a210 - br label %find.cond5860 -find.cond5860: - %t211 = load i64, ptr %a210 - %t212 = icmp slt i64 %t211, %t208 - br i1 %t212, label %find.body5861, label %find.end5864 -find.body5861: - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i64 %t211 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } %t206, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br i1 %t218, label %find.hit5862, label %find.next5863 -find.hit5862: - store i64 %t211, ptr %a207 - br label %find.end5864 -find.next5863: - %t219 = add i64 %t211, 1 - store i64 %t219, ptr %a210 - br label %find.cond5860 -find.end5864: - store { ptr, i64, i64 } %t206, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load i64, ptr %a207 - %t222 = icmp sge i64 %t221, 0 - br i1 %t222, label %then5865, label %endif5867 -then5865: - %t223 = load ptr, ptr %a1 - %t224 = load i64, ptr %a185 - %t225 = load { ptr, i64, i64 }, ptr %a182 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range5868, label %inrange5869 -range5868: - call void @finch_panic_index(ptr @.str.3776, i64 3084, i64 %t224, i64 %t226) - unreachable -inrange5869: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds %S.ast.Node, ptr %t228, i64 %t224 - %t230 = load %S.ast.Node, ptr %t229 - call void @finch.gen.fail(ptr %t223, %S.ast.Node %t230, { ptr, i64, i64 } { ptr @.str.3777, i64 49, i64 0 }) - br label %endif5867 -endif5867: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t232 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t233 = load i64, ptr %t232 - call void @finch_str_from_int(ptr %a234, i64 %t233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load i64, ptr %t231 - %t237 = add i64 %t236, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t237, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t238 = load ptr, ptr %a129 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i64 %t236 - store { ptr, i64, i64 } %t235, ptr %t239 - store i64 %t237, ptr %t231 - %t240 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i32 0, i32 1 - %t242 = load i64, ptr %t241 - %t243 = icmp sgt i64 %t242, 0 - br i1 %t243, label %then5870, label %endif5872 -then5870: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = icmp sgt i64 %t245, 1 - br i1 %t246, label %then5873, label %endif5875 -then5873: - %t247 = load ptr, ptr %a1 - %t248 = load i64, ptr %a185 - %t249 = load { ptr, i64, i64 }, ptr %a182 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5876, label %inrange5877 -range5876: - call void @finch_panic_index(ptr @.str.3778, i64 3089, i64 %t248, i64 %t250) - unreachable -inrange5877: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - call void @finch.gen.fail(ptr %t247, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3779, i64 52, i64 0 }) - br label %endif5875 -endif5875: - %t255 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.copy.arr_S_ast_Node(ptr %a258, ptr %a257) - %t259 = load { ptr, i64, i64 }, ptr %a258 - %t260 = load { ptr, i64, i64 }, ptr %a165 - store { ptr, i64, i64 } %t259, ptr %a165 - store { ptr, i64, i64 } %t260, ptr %a261 - call void @finch.drop.arr_S_ast_Node(ptr %a261) - %t262 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t263 = load i64, ptr %t262 - store i64 %t263, ptr %a166 - br label %endif5872 -endif5872: - %t264 = load ptr, ptr %a1 - %t265 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.3780, i64 12, 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.3781, i64 2, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t276 = load i64, ptr %t275 - call void @finch_str_from_int(ptr %a277, i64 %t276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t274, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t274, ptr %a282 - call void @finch_str_drop(ptr %a282) - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a279 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t264, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t285, ptr %a188 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_drop(ptr %a288) - call void @finch.drop.S_gen_SumPat(ptr %a201) - br label %endif5857 -else5856: - %t289 = load ptr, ptr %a1 - %t290 = load i64, ptr %a185 - %t291 = load { ptr, i64, i64 }, ptr %a182 - %t292 = extractvalue { ptr, i64, i64 } %t291, 1 - %t293 = icmp uge i64 %t290, %t292 - br i1 %t293, label %range5878, label %inrange5879 -range5878: - call void @finch_panic_index(ptr @.str.3782, i64 3096, i64 %t290, i64 %t292) - unreachable -inrange5879: - %t294 = extractvalue { ptr, i64, i64 } %t291, 0 - %t295 = getelementptr inbounds %S.ast.Node, ptr %t294, i64 %t290 - %t296 = load %S.ast.Node, ptr %t295 - %t297 = load %S.ast.Type, ptr %a19 - %t298 = call %S.gen.Val @finch.gen.patternValue(ptr %t289, %S.ast.Node %t296, %S.ast.Type %t297) - store %S.gen.Val %t298, ptr %a299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t301 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store i64 -1, ptr %a303 - %t304 = load i64, ptr %t300 - %t305 = load ptr, ptr %a129 - store i64 0, ptr %a306 - br label %find.cond5880 -find.cond5880: - %t307 = load i64, ptr %a306 - %t308 = icmp slt i64 %t307, %t304 - br i1 %t308, label %find.body5881, label %find.end5884 -find.body5881: - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t305, i64 %t307 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - store { ptr, i64, i64 } %t302, ptr %a312 - %t313 = call i32 @finch_str_eq(ptr %a311, ptr %a312) - %t314 = icmp ne i32 %t313, 0 - br i1 %t314, label %find.hit5882, label %find.next5883 -find.hit5882: - store i64 %t307, ptr %a303 - br label %find.end5884 -find.next5883: - %t315 = add i64 %t307, 1 - store i64 %t315, ptr %a306 - br label %find.cond5880 -find.end5884: - %t316 = load i64, ptr %a303 - %t317 = icmp sge i64 %t316, 0 - br label %logic.from5885 -logic.from5885: - br i1 %t317, label %logic.rhs5886, label %logic.end5887 -logic.rhs5886: - %t318 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3783, i64 4, i64 0 }, ptr %a321 - %t322 = call i32 @finch_str_eq(ptr %a320, ptr %a321) - %t323 = icmp ne i32 %t322, 0 - br label %logic.rend5888 -logic.rend5888: - br label %logic.end5887 -logic.end5887: - %t324 = phi i1 [ false, %logic.from5885 ], [ %t323, %logic.rend5888 ] - br i1 %t324, label %then5889, label %endif5891 -then5889: - %t325 = load ptr, ptr %a1 - %t326 = load i64, ptr %a185 - %t327 = load { ptr, i64, i64 }, ptr %a182 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range5892, label %inrange5893 -range5892: - call void @finch_panic_index(ptr @.str.3784, i64 3098, i64 %t326, i64 %t328) - unreachable -inrange5893: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - call void @finch.gen.fail(ptr %t325, %S.ast.Node %t332, { ptr, i64, i64 } { ptr @.str.3785, i64 49, i64 0 }) - br label %endif5891 -endif5891: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t334 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_copy(ptr %a337, ptr %a336) - %t338 = load { ptr, i64, i64 }, ptr %a337 - %t339 = load i64, ptr %t333 - %t340 = add i64 %t339, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t340, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t341 = load ptr, ptr %a129 - %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 %t339 - store { ptr, i64, i64 } %t338, ptr %t342 - store i64 %t340, ptr %t333 - %t343 = load ptr, ptr %a1 - %t344 = load %S.gen.Val, ptr %a13 - %t345 = load %S.gen.Val, ptr %a299 - %t346 = load i64, ptr %a185 - %t347 = load { ptr, i64, i64 }, ptr %a182 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 %t346, %t348 - br i1 %t349, label %range5894, label %inrange5895 -range5894: - call void @finch_panic_index(ptr @.str.3787, i64 3101, i64 %t346, i64 %t348) - unreachable -inrange5895: - %t350 = extractvalue { ptr, i64, i64 } %t347, 0 - %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 %t346 - %t352 = load %S.ast.Node, ptr %t351 - %t353 = call %S.gen.Val @finch.gen.compare(ptr %t343, { ptr, i64, i64 } { ptr @.str.3786, i64 2, i64 0 }, %S.gen.Val %t344, %S.gen.Val %t345, %S.ast.Node %t352) - %t354 = extractvalue %S.gen.Val %t353, 0 - store { ptr, i64, i64 } %t354, ptr %a355 - call void @finch_str_copy(ptr %a356, ptr %a355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store %S.gen.Val %t353, ptr %a358 - call void @finch.drop.S_gen_Val(ptr %a358) - %t359 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t357, ptr %a188 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - call void @finch.drop.S_gen_Val(ptr %a299) - br label %endif5857 -endif5857: - %t361 = load i64, ptr %a185 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = sub i64 %t363, 1 - %t365 = icmp eq i64 %t361, %t364 - br i1 %t365, label %then5896, label %else5897 -then5896: - %t366 = load ptr, ptr %a1 - %t367 = load { ptr, i64, i64 }, ptr %a188 - %t368 = load { ptr, i64, i64 }, ptr %a161 - %t369 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.condBr(ptr %t366, { ptr, i64, i64 } %t367, { ptr, i64, i64 } %t368, { ptr, i64, i64 } %t369) - br label %endif5898 -else5897: - %t370 = load ptr, ptr %a1 - %t371 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t370, { ptr, i64, i64 } { ptr @.str.3788, i64 8, i64 0 }) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load { ptr, i64, i64 }, ptr %a188 - %t375 = load { ptr, i64, i64 }, ptr %a161 - %t376 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.condBr(ptr %t373, { ptr, i64, i64 } %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } %t376) - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.label(ptr %t377, { ptr, i64, i64 } %t378) - call void @finch_str_drop(ptr %a372) - br label %endif5898 -endif5898: - call void @finch_str_drop(ptr %a188) - br label %for.step5853 -for.step5853: - %t379 = load i64, ptr %a185 - %t380 = add i64 %t379, 1 - store i64 %t380, ptr %a185 - br label %for.cond5851 -for.end5854: - call void @finch.drop.arr_S_ast_Node(ptr %a182) - br label %endif5848 -endif5848: - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t384 = load i64, ptr %t383 - %t385 = icmp sgt i64 %t384, 0 - store i1 %t385, ptr %a386 - %t387 = load i1, ptr %a386 - br i1 %t387, label %then5899, label %endif5901 -then5899: - %t388 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t388) - %t389 = load ptr, ptr %a1 - %t390 = icmp eq ptr %t389, null - br i1 %t390, label %panic5902, label %ok5903 -panic5902: - call void @finch_panic(ptr @.str.3789, i64 3116, ptr @.str.3790) - unreachable -ok5903: - %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 16 - %t392 = load ptr, ptr %a1 - %t393 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t394 = load { ptr, i64, i64 }, ptr %t393 - %t395 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = call i64 @finch.gen.findStruct(ptr %t392, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t396) - %t398 = load { ptr, i64, i64 }, ptr %t391 - %t399 = extractvalue { ptr, i64, i64 } %t398, 1 - %t400 = icmp uge i64 %t397, %t399 - br i1 %t400, label %range5904, label %inrange5905 -range5904: - call void @finch_panic_index(ptr @.str.3791, i64 3116, i64 %t397, i64 %t399) - unreachable -inrange5905: - %t401 = extractvalue { ptr, i64, i64 } %t398, 0 - %t402 = getelementptr inbounds %S.gen.StructDef, ptr %t401, i64 %t397 - %t403 = load %S.gen.StructDef, ptr %t402 - store %S.gen.StructDef %t403, ptr %a404 - call void @finch.copy.S_gen_StructDef(ptr %a405, ptr %a404) - %t406 = load %S.gen.StructDef, ptr %a405 - store %S.gen.StructDef %t406, ptr %a407 - %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t409 = load i64, ptr %t408 - store i64 0, ptr %a410 - br label %for.cond5906 -for.cond5906: - %t411 = load i64, ptr %a410 - %t412 = icmp slt i64 %t411, %t409 - br i1 %t412, label %for.body5907, label %for.end5909 -for.body5907: - %t413 = load i64, ptr %a410 - %t414 = load { ptr, i64, i64 }, ptr %a165 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5910, label %inrange5911 -range5910: - call void @finch_panic_index(ptr @.str.3792, i64 3118, i64 %t413, i64 %t415) - unreachable -inrange5911: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.ast.Node, ptr %t417, i64 %t413 - %t419 = getelementptr inbounds %S.ast.Node, ptr %t418, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - store { ptr, i64, i64 } { ptr @.str.3793, i64 1, i64 0 }, ptr %a422 - %t423 = call i32 @finch_str_eq(ptr %a421, ptr %a422) - %t424 = icmp ne i32 %t423, 0 - br i1 %t424, label %then5912, label %endif5914 -then5912: - br label %for.step5908 -endif5914: - %t425 = load ptr, ptr %a1 - %t426 = icmp eq ptr %t425, null - br i1 %t426, label %panic5915, label %ok5916 -panic5915: - call void @finch_panic(ptr @.str.3794, i64 3121, ptr @.str.3795) - unreachable -ok5916: - %t427 = getelementptr inbounds %S.gen.Gen, ptr %t425, i32 0, i32 22 - %t428 = load i64, ptr %a49 - %t429 = load { ptr, i64, i64 }, ptr %t427 - %t430 = extractvalue { ptr, i64, i64 } %t429, 1 - %t431 = icmp uge i64 %t428, %t430 - br i1 %t431, label %range5917, label %inrange5918 -range5917: - call void @finch_panic_index(ptr @.str.3796, i64 3121, i64 %t428, i64 %t430) - unreachable -inrange5918: - %t432 = extractvalue { ptr, i64, i64 } %t429, 0 - %t433 = getelementptr inbounds %S.gen.SumDef, ptr %t432, i64 %t428 - %t434 = getelementptr inbounds %S.gen.SumDef, ptr %t433, i32 0, i32 4 - %t435 = load i64, ptr %a166 - %t436 = load { ptr, i64, i64 }, ptr %t434 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 %t435, %t437 - br i1 %t438, label %range5919, label %inrange5920 -range5919: - call void @finch_panic_index(ptr @.str.3797, i64 3121, i64 %t435, i64 %t437) - unreachable -inrange5920: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds i64, ptr %t439, i64 %t435 - %t441 = load i64, ptr %t440 - %t442 = load i64, ptr %a410 - %t443 = add i64 %t441, %t442 - store i64 %t443, ptr %a444 - %t445 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 12 - %t446 = load i64, ptr %a444 - %t447 = load { ptr, i64, i64 }, ptr %t445 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range5921, label %inrange5922 -range5921: - call void @finch_panic_index(ptr @.str.3798, i64 3122, i64 %t446, i64 %t448) - unreachable -inrange5922: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds %S.ast.Type, ptr %t450, i64 %t446 - %t452 = load %S.ast.Type, ptr %t451 - store %S.ast.Type %t452, ptr %a453 - call void @finch.copy.S_ast_Type(ptr %a454, ptr %a453) - %t455 = load %S.ast.Type, ptr %a454 - store %S.ast.Type %t455, ptr %a456 - %t457 = load ptr, ptr %a1 - %t458 = load ptr, ptr %a1 - %t459 = load %S.ast.Type, ptr %a19 - %t460 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t458, %S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.3799, i64 13, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.3800, i64 1, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t472 = load { ptr, i64, i64 }, ptr %t471 - store { ptr, i64, i64 } %t470, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - store { ptr, i64, i64 } %t470, ptr %a476 - call void @finch_str_drop(ptr %a476) - %t477 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t477, ptr %a479 - store { ptr, i64, i64 } { ptr @.str.3801, i64 2, i64 0 }, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t477, ptr %a481 - call void @finch_str_drop(ptr %a481) - %t482 = load { ptr, i64, i64 }, ptr %a478 - %t483 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 3 - %t484 = load i64, ptr %a444 - %t485 = load { ptr, i64, i64 }, ptr %t483 - %t486 = extractvalue { ptr, i64, i64 } %t485, 1 - %t487 = icmp uge i64 %t484, %t486 - br i1 %t487, label %range5923, label %inrange5924 -range5923: - call void @finch_panic_index(ptr @.str.3802, i64 3123, i64 %t484, i64 %t486) - unreachable -inrange5924: - %t488 = extractvalue { ptr, i64, i64 } %t485, 0 - %t489 = getelementptr inbounds i64, ptr %t488, i64 %t484 - %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 } %t482, ptr %a494 - store { ptr, i64, i64 } %t492, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t482, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t492, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a493 - %t499 = call { ptr, i64, i64 } @finch.gen.op(ptr %t457, { ptr, i64, i64 } %t498) - store { ptr, i64, i64 } %t498, ptr %a500 - call void @finch_str_drop(ptr %a500) - store { ptr, i64, i64 } %t499, ptr %a501 - %t502 = load ptr, ptr %a1 - %t503 = load i64, ptr %a410 - %t504 = load { ptr, i64, i64 }, ptr %a165 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 %t503, %t505 - br i1 %t506, label %range5925, label %inrange5926 -range5925: - call void @finch_panic_index(ptr @.str.3803, i64 3124, i64 %t503, i64 %t505) - unreachable -inrange5926: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 %t503 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = load i64, ptr %a410 - %t511 = load { ptr, i64, i64 }, ptr %a165 - %t512 = extractvalue { ptr, i64, i64 } %t511, 1 - %t513 = icmp uge i64 %t510, %t512 - br i1 %t513, label %range5927, label %inrange5928 -range5927: - call void @finch_panic_index(ptr @.str.3804, i64 3124, i64 %t510, i64 %t512) - unreachable -inrange5928: - %t514 = extractvalue { ptr, i64, i64 } %t511, 0 - %t515 = getelementptr inbounds %S.ast.Node, ptr %t514, i64 %t510 - %t516 = getelementptr inbounds %S.ast.Node, ptr %t515, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = load %S.ast.Type, ptr %a456 - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a501 - %t521 = load %S.ast.Type, ptr %a456 - %t522 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t519, { ptr, i64, i64 } %t520, %S.ast.Type %t521) - %t523 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t502, %S.ast.Node %t509, { ptr, i64, i64 } %t517, %S.ast.Type %t518, { ptr, i64, i64 } %t522, i1 true, i1 true) - store { ptr, i64, i64 } %t522, ptr %a524 - call void @finch_str_drop(ptr %a524) - store { ptr, i64, i64 } %t523, ptr %a525 - call void @finch_str_drop(ptr %a525) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a456) - br label %for.step5908 -for.step5908: - %t526 = load i64, ptr %a410 - %t527 = add i64 %t526, 1 - store i64 %t527, ptr %a410 - br label %for.cond5906 -for.end5909: - call void @finch.drop.S_gen_StructDef(ptr %a407) - br label %endif5901 -endif5901: - %t528 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = extractvalue { ptr, i64, i64 } %t529, 1 - %t531 = icmp uge i64 1, %t530 - br i1 %t531, label %range5929, label %inrange5930 -range5929: - call void @finch_panic_index(ptr @.str.3805, i64 3127, i64 1, i64 %t530) - unreachable -inrange5930: - %t532 = extractvalue { ptr, i64, i64 } %t529, 0 - %t533 = getelementptr inbounds %S.ast.Node, ptr %t532, i64 1 - %t534 = load %S.ast.Node, ptr %t533 - store %S.ast.Node %t534, ptr %a535 - call void @finch.copy.S_ast_Node(ptr %a536, ptr %a535) - %t537 = load %S.ast.Node, ptr %a536 - store %S.ast.Node %t537, ptr %a538 - %t539 = load i1, ptr %a3 - br i1 %t539, label %then5931, label %else5932 -then5931: - %t540 = load ptr, ptr %a1 - %t541 = load %S.ast.Node, ptr %a538 - %t542 = call %S.gen.Val @finch.gen.expr(ptr %t540, %S.ast.Node %t541) - store %S.gen.Val %t542, ptr %a543 - %t544 = load i64, ptr %a140 - %t545 = icmp eq i64 %t544, 0 - br label %logic.from5934 -logic.from5934: - br i1 %t545, label %logic.end5936, label %logic.rhs5935 -logic.rhs5935: - %t546 = getelementptr inbounds %S.ast.Type, ptr %a133, i32 0, i32 0 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } %t547, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.3806, i64 4, i64 0 }, ptr %a549 - %t550 = call i32 @finch_str_eq(ptr %a548, ptr %a549) - %t551 = icmp ne i32 %t550, 0 - br label %logic.rend5937 -logic.rend5937: - br label %logic.end5936 -logic.end5936: - %t552 = phi i1 [ true, %logic.from5934 ], [ %t551, %logic.rend5937 ] - br i1 %t552, label %then5938, label %endif5940 -then5938: - %t553 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t554 = getelementptr inbounds %S.ast.Type, ptr %t553, i32 0, i32 0 - %t555 = load { ptr, i64, i64 }, ptr %t554 - store { ptr, i64, i64 } %t555, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.3807, i64 4, i64 0 }, ptr %a557 - %t558 = call i32 @finch_str_eq(ptr %a556, ptr %a557) - %t559 = icmp ne i32 %t558, 0 - br label %logic.from5941 -logic.from5941: - br i1 %t559, label %logic.end5943, label %logic.rhs5942 -logic.rhs5942: - %t560 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t561 = getelementptr inbounds %S.ast.Type, ptr %t560, i32 0, i32 0 - %t562 = load { ptr, i64, i64 }, ptr %t561 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.3808, i64 4, i64 0 }, ptr %a564 - %t565 = call i32 @finch_str_eq(ptr %a563, ptr %a564) - %t566 = icmp ne i32 %t565, 0 - br label %logic.rend5944 -logic.rend5944: - br label %logic.end5943 -logic.end5943: - %t567 = phi i1 [ true, %logic.from5941 ], [ %t566, %logic.rend5944 ] - br i1 %t567, label %then5945, label %endif5947 -then5945: - %t568 = load ptr, ptr %a1 - %t569 = load %S.ast.Node, ptr %a538 - call void @finch.gen.fail(ptr %t568, %S.ast.Node %t569, { ptr, i64, i64 } { ptr @.str.3809, i64 52, i64 0 }) - br label %endif5947 -endif5947: - %t570 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t571 = load %S.ast.Type, ptr %t570 - 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 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t574, ptr %a133 - store %S.ast.Type %t575, ptr %a576 - call void @finch.drop.S_ast_Type(ptr %a576) - br label %endif5940 -endif5940: - %t577 = load ptr, ptr %a1 - %t578 = load %S.gen.Val, ptr %a543 - %t579 = load %S.ast.Type, ptr %a133 - %t580 = load %S.ast.Node, ptr %a538 - %t581 = call %S.gen.Val @finch.gen.coerce(ptr %t577, %S.gen.Val %t578, %S.ast.Type %t579, %S.ast.Node %t580, { ptr, i64, i64 } { ptr @.str.3810, i64 57, i64 0 }) - %t582 = load %S.gen.Val, ptr %a543 - store %S.gen.Val %t581, ptr %a543 - store %S.gen.Val %t582, ptr %a583 - call void @finch.drop.S_gen_Val(ptr %a583) - %t584 = load ptr, ptr %a1 - %t585 = load %S.gen.Val, ptr %a543 - %t586 = call { ptr, i64, i64 } @finch.gen.own(ptr %t584, %S.gen.Val %t585) - store { ptr, i64, i64 } %t586, ptr %a587 - %t588 = load i1, ptr %a386 - br i1 %t588, label %then5948, label %endif5950 -then5948: - %t589 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t589) - br label %endif5950 -endif5950: - %t590 = load ptr, ptr %a1 - %t591 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t590, { ptr, i64, i64 } { ptr @.str.3811, i64 10, i64 0 }) - store { ptr, i64, i64 } %t591, ptr %a592 - %t593 = load ptr, ptr %a1 - %t594 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.br(ptr %t593, { ptr, i64, i64 } %t594) - %t595 = load ptr, ptr %a1 - %t596 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.label(ptr %t595, { ptr, i64, i64 } %t596) - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t598 = load { ptr, i64, i64 }, ptr %a587 - store { ptr, i64, i64 } %t598, ptr %a599 - call void @finch_str_copy(ptr %a600, ptr %a599) - %t601 = load { ptr, i64, i64 }, ptr %a600 - %t602 = load i64, ptr %t597 - %t603 = add i64 %t602, 1 - call void @finch_arr_reserve(ptr %a130, i64 %t603, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t604 = load ptr, ptr %a130 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i64 %t602 - store { ptr, i64, i64 } %t601, ptr %t605 - store i64 %t603, ptr %t597 - %t606 = getelementptr inbounds { ptr, i64, i64 }, ptr %a131, i32 0, i32 1 - %t607 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t607, ptr %a608 - call void @finch_str_copy(ptr %a609, ptr %a608) - %t610 = load { ptr, i64, i64 }, ptr %a609 - %t611 = load i64, ptr %t606 - %t612 = add i64 %t611, 1 - call void @finch_arr_reserve(ptr %a131, i64 %t612, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t613 = load ptr, ptr %a131 - %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i64 %t611 - store { ptr, i64, i64 } %t610, ptr %t614 - store i64 %t612, ptr %t606 - %t615 = load ptr, ptr %a1 - %t616 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t615, { ptr, i64, i64 } %t616) - store i1 true, ptr %a128 - call void @finch_str_drop(ptr %a592) - call void @finch_str_drop(ptr %a587) - call void @finch.drop.S_gen_Val(ptr %a543) - br label %endif5933 -else5932: - %t617 = getelementptr inbounds %S.ast.Node, ptr %a538, i32 0, i32 0 - %t618 = load { ptr, i64, i64 }, ptr %t617 - store { ptr, i64, i64 } %t618, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.3812, i64 5, i64 0 }, ptr %a620 - %t621 = call i32 @finch_str_eq(ptr %a619, ptr %a620) - %t622 = icmp ne i32 %t621, 0 - br i1 %t622, label %then5951, label %else5952 -then5951: - %t623 = load ptr, ptr %a1 - %t624 = load %S.ast.Node, ptr %a538 - call void @finch.gen.block(ptr %t623, %S.ast.Node %t624, i1 true) - br label %endif5953 -else5952: - %t625 = load ptr, ptr %a1 - %t626 = load %S.ast.Node, ptr %a538 - call void @finch.gen.stmt(ptr %t625, %S.ast.Node %t626) - br label %endif5953 -endif5953: - %t627 = load ptr, ptr %a1 - %t628 = icmp eq ptr %t627, null - br i1 %t628, label %panic5954, label %ok5955 -panic5954: - call void @finch_panic(ptr @.str.3813, i64 3154, ptr @.str.3814) - unreachable -ok5955: - %t629 = getelementptr inbounds %S.gen.Gen, ptr %t627, i32 0, i32 9 - %t630 = load i1, ptr %t629 - %t631 = xor i1 %t630, true - br i1 %t631, label %then5956, label %endif5958 -then5956: - store i1 true, ptr %a128 - br label %endif5958 -endif5958: - %t632 = load i1, ptr %a386 - br i1 %t632, label %then5959, label %endif5961 -then5959: - %t633 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t633) - br label %endif5961 -endif5961: - %t634 = load ptr, ptr %a1 - %t635 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t634, { ptr, i64, i64 } %t635) - br label %endif5933 -endif5933: - %t636 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t637 = load i1, ptr %t636 - %t638 = xor i1 %t637, true - br i1 %t638, label %then5962, label %endif5964 -then5962: - %t639 = load ptr, ptr %a1 - %t640 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.label(ptr %t639, { ptr, i64, i64 } %t640) - br label %endif5964 -endif5964: - call void @finch.drop.S_ast_Node(ptr %a538) - call void @finch.drop.arr_S_ast_Node(ptr %a165) - call void @finch_str_drop(ptr %a164) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Node(ptr %a155) - br label %for.step5839 -for.step5839: - %t641 = load i64, ptr %a140 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a140 - br label %for.cond5837 -for.end5840: - %t643 = load i1, ptr %a127 - %t644 = xor i1 %t643, true - br i1 %t644, label %then5965, label %endif5967 -then5965: - %t645 = load i64, ptr %a49 - %t646 = icmp sge i64 %t645, 0 - br i1 %t646, label %then5968, label %else5969 -then5968: - store { ptr, i64, i64 } zeroinitializer, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic5971, label %ok5972 -panic5971: - call void @finch_panic(ptr @.str.3815, i64 3169, ptr @.str.3816) - unreachable -ok5972: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 22 - %t651 = load i64, ptr %a49 - %t652 = load { ptr, i64, i64 }, ptr %t650 - %t653 = extractvalue { ptr, i64, i64 } %t652, 1 - %t654 = icmp uge i64 %t651, %t653 - br i1 %t654, label %range5973, label %inrange5974 -range5973: - call void @finch_panic_index(ptr @.str.3817, i64 3169, i64 %t651, i64 %t653) - unreachable -inrange5974: - %t655 = extractvalue { ptr, i64, i64 } %t652, 0 - %t656 = getelementptr inbounds %S.gen.SumDef, ptr %t655, i64 %t651 - %t657 = getelementptr inbounds %S.gen.SumDef, ptr %t656, i32 0, i32 2 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i32 0, i32 1 - %t659 = load i64, ptr %t658 - store i64 0, ptr %a660 - br label %for.cond5975 -for.cond5975: - %t661 = load i64, ptr %a660 - %t662 = icmp slt i64 %t661, %t659 - br i1 %t662, label %for.body5976, label %for.end5978 -for.body5976: - %t663 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t664 = load i64, ptr %a660 - call void @finch_str_from_int(ptr %a665, i64 %t664) - %t666 = load { ptr, i64, i64 }, ptr %a665 - store i64 -1, ptr %a667 - %t668 = load i64, ptr %t663 - %t669 = load ptr, ptr %a129 - store i64 0, ptr %a670 - br label %find.cond5979 -find.cond5979: - %t671 = load i64, ptr %a670 - %t672 = icmp slt i64 %t671, %t668 - br i1 %t672, label %find.body5980, label %find.end5983 -find.body5980: - %t673 = getelementptr inbounds { ptr, i64, i64 }, ptr %t669, i64 %t671 - %t674 = load { ptr, i64, i64 }, ptr %t673 - store { ptr, i64, i64 } %t674, ptr %a675 - store { ptr, i64, i64 } %t666, ptr %a676 - %t677 = call i32 @finch_str_eq(ptr %a675, ptr %a676) - %t678 = icmp ne i32 %t677, 0 - br i1 %t678, label %find.hit5981, label %find.next5982 -find.hit5981: - store i64 %t671, ptr %a667 - br label %find.end5983 -find.next5982: - %t679 = add i64 %t671, 1 - store i64 %t679, ptr %a670 - br label %find.cond5979 -find.end5983: - store { ptr, i64, i64 } %t666, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load i64, ptr %a667 - %t682 = icmp sge i64 %t681, 0 - %t683 = xor i1 %t682, true - br i1 %t683, label %then5984, label %endif5986 -then5984: - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t685 = load ptr, ptr %a1 - %t686 = icmp eq ptr %t685, null - br i1 %t686, label %panic5987, label %ok5988 -panic5987: - call void @finch_panic(ptr @.str.3818, i64 3171, ptr @.str.3819) - unreachable -ok5988: - %t687 = getelementptr inbounds %S.gen.Gen, ptr %t685, i32 0, i32 22 - %t688 = load i64, ptr %a49 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range5989, label %inrange5990 -range5989: - call void @finch_panic_index(ptr @.str.3820, i64 3171, i64 %t688, i64 %t690) - unreachable -inrange5990: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.gen.SumDef, ptr %t692, i64 %t688 - %t694 = getelementptr inbounds %S.gen.SumDef, ptr %t693, i32 0, i32 2 - %t695 = load i64, ptr %a660 - %t696 = load { ptr, i64, i64 }, ptr %t694 - %t697 = extractvalue { ptr, i64, i64 } %t696, 1 - %t698 = icmp uge i64 %t695, %t697 - br i1 %t698, label %range5991, label %inrange5992 -range5991: - call void @finch_panic_index(ptr @.str.3821, i64 3171, i64 %t695, i64 %t697) - unreachable -inrange5992: - %t699 = extractvalue { ptr, i64, i64 } %t696, 0 - %t700 = getelementptr inbounds { ptr, i64, i64 }, ptr %t699, i64 %t695 - %t701 = load { ptr, i64, i64 }, ptr %t700 - store { ptr, i64, i64 } %t701, ptr %a702 - call void @finch_str_copy(ptr %a703, ptr %a702) - %t704 = load { ptr, i64, i64 }, ptr %a703 - %t705 = load i64, ptr %t684 - %t706 = add i64 %t705, 1 - call void @finch_arr_reserve(ptr %a647, i64 %t706, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t707 = load ptr, ptr %a647 - %t708 = getelementptr inbounds { ptr, i64, i64 }, ptr %t707, i64 %t705 - store { ptr, i64, i64 } %t704, ptr %t708 - store i64 %t706, ptr %t684 - br label %endif5986 -endif5986: - br label %for.step5977 -for.step5977: - %t709 = load i64, ptr %a660 - %t710 = add i64 %t709, 1 - store i64 %t710, ptr %a660 - br label %for.cond5975 -for.end5978: - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t712 = load i64, ptr %t711 - %t713 = icmp sgt i64 %t712, 0 - br i1 %t713, label %then5993, label %endif5995 -then5993: - %t714 = load ptr, ptr %a1 - %t715 = load %S.ast.Node, ptr %a2 - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3823, i64 2, i64 0 }, ptr %a717 - call void @finch_str_join(ptr %a718, ptr %a647, ptr %a717) - %t719 = load { ptr, i64, i64 }, ptr %a718 - store { ptr, i64, i64 } { ptr @.str.3822, i64 26, i64 0 }, ptr %a721 - store { ptr, i64, i64 } %t719, ptr %a722 - call void @finch_str_concat(ptr %a720, ptr %a721, ptr %a722) - store { ptr, i64, i64 } %t719, ptr %a723 - call void @finch_str_drop(ptr %a723) - %t724 = load { ptr, i64, i64 }, ptr %a720 - store { ptr, i64, i64 } %t724, ptr %a726 - store { ptr, i64, i64 } { ptr @.str.3824, i64 29, i64 0 }, ptr %a727 - call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727) - store { ptr, i64, i64 } %t724, ptr %a728 - call void @finch_str_drop(ptr %a728) - %t729 = load { ptr, i64, i64 }, ptr %a725 - call void @finch.gen.fail(ptr %t714, %S.ast.Node %t715, { ptr, i64, i64 } %t729) - store { ptr, i64, i64 } %t729, ptr %a730 - call void @finch_str_drop(ptr %a730) - br label %endif5995 -endif5995: - call void @finch.drop.arr_str(ptr %a647) - br label %endif5970 -else5969: - %t731 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t732, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3825, i64 4, i64 0 }, ptr %a734 - %t735 = call i32 @finch_str_eq(ptr %a733, ptr %a734) - %t736 = icmp ne i32 %t735, 0 - br i1 %t736, label %then5996, label %else5997 -then5996: - %t737 = load ptr, ptr %a1 - %t738 = icmp eq ptr %t737, null - br i1 %t738, label %panic5999, label %ok6000 -panic5999: - call void @finch_panic(ptr @.str.3826, i64 3178, ptr @.str.3827) - unreachable -ok6000: - %t739 = getelementptr inbounds %S.gen.Gen, ptr %t737, i32 0, i32 21 - %t740 = load ptr, ptr %a1 - %t741 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t742 = load { ptr, i64, i64 }, ptr %t741 - %t743 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t744 = load { ptr, i64, i64 }, ptr %t743 - %t745 = call i64 @finch.gen.findEnum(ptr %t740, { ptr, i64, i64 } %t742, { ptr, i64, i64 } %t744) - %t746 = load { ptr, i64, i64 }, ptr %t739 - %t747 = extractvalue { ptr, i64, i64 } %t746, 1 - %t748 = icmp uge i64 %t745, %t747 - br i1 %t748, label %range6001, label %inrange6002 -range6001: - call void @finch_panic_index(ptr @.str.3828, i64 3178, i64 %t745, i64 %t747) - unreachable -inrange6002: - %t749 = extractvalue { ptr, i64, i64 } %t746, 0 - %t750 = getelementptr inbounds %S.gen.EnumDef, ptr %t749, i64 %t745 - %t751 = load %S.gen.EnumDef, ptr %t750 - store %S.gen.EnumDef %t751, ptr %a752 - call void @finch.copy.S_gen_EnumDef(ptr %a753, ptr %a752) - %t754 = load %S.gen.EnumDef, ptr %a753 - store %S.gen.EnumDef %t754, ptr %a755 - store { ptr, i64, i64 } zeroinitializer, ptr %a756 - %t757 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t758 = getelementptr inbounds { ptr, i64, i64 }, ptr %t757, i32 0, i32 1 - %t759 = load i64, ptr %t758 - store i64 0, ptr %a760 - br label %for.cond6003 -for.cond6003: - %t761 = load i64, ptr %a760 - %t762 = icmp slt i64 %t761, %t759 - br i1 %t762, label %for.body6004, label %for.end6006 -for.body6004: - %t763 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t764 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 3 - %t765 = load i64, ptr %a760 - %t766 = load { ptr, i64, i64 }, ptr %t764 - %t767 = extractvalue { ptr, i64, i64 } %t766, 1 - %t768 = icmp uge i64 %t765, %t767 - br i1 %t768, label %range6007, label %inrange6008 -range6007: - call void @finch_panic_index(ptr @.str.3829, i64 3181, i64 %t765, i64 %t767) - unreachable -inrange6008: - %t769 = extractvalue { ptr, i64, i64 } %t766, 0 - %t770 = getelementptr inbounds i64, ptr %t769, i64 %t765 - %t771 = load i64, ptr %t770 - call void @finch_str_from_int(ptr %a772, i64 %t771) - %t773 = load { ptr, i64, i64 }, ptr %a772 - store i64 -1, ptr %a774 - %t775 = load i64, ptr %t763 - %t776 = load ptr, ptr %a129 - store i64 0, ptr %a777 - br label %find.cond6009 -find.cond6009: - %t778 = load i64, ptr %a777 - %t779 = icmp slt i64 %t778, %t775 - br i1 %t779, label %find.body6010, label %find.end6013 -find.body6010: - %t780 = getelementptr inbounds { ptr, i64, i64 }, ptr %t776, i64 %t778 - %t781 = load { ptr, i64, i64 }, ptr %t780 - store { ptr, i64, i64 } %t781, ptr %a782 - store { ptr, i64, i64 } %t773, ptr %a783 - %t784 = call i32 @finch_str_eq(ptr %a782, ptr %a783) - %t785 = icmp ne i32 %t784, 0 - br i1 %t785, label %find.hit6011, label %find.next6012 -find.hit6011: - store i64 %t778, ptr %a774 - br label %find.end6013 -find.next6012: - %t786 = add i64 %t778, 1 - store i64 %t786, ptr %a777 - br label %find.cond6009 -find.end6013: - store { ptr, i64, i64 } %t773, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load i64, ptr %a774 - %t789 = icmp sge i64 %t788, 0 - %t790 = xor i1 %t789, true - br i1 %t790, label %then6014, label %endif6016 -then6014: - %t791 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t792 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t793 = load i64, ptr %a760 - %t794 = load { ptr, i64, i64 }, ptr %t792 - %t795 = extractvalue { ptr, i64, i64 } %t794, 1 - %t796 = icmp uge i64 %t793, %t795 - br i1 %t796, label %range6017, label %inrange6018 -range6017: - call void @finch_panic_index(ptr @.str.3830, i64 3182, i64 %t793, i64 %t795) - unreachable -inrange6018: - %t797 = extractvalue { ptr, i64, i64 } %t794, 0 - %t798 = getelementptr inbounds { ptr, i64, i64 }, ptr %t797, i64 %t793 - %t799 = load { ptr, i64, i64 }, ptr %t798 - store { ptr, i64, i64 } %t799, ptr %a800 - call void @finch_str_copy(ptr %a801, ptr %a800) - %t802 = load { ptr, i64, i64 }, ptr %a801 - %t803 = load i64, ptr %t791 - %t804 = add i64 %t803, 1 - call void @finch_arr_reserve(ptr %a756, i64 %t804, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t805 = load ptr, ptr %a756 - %t806 = getelementptr inbounds { ptr, i64, i64 }, ptr %t805, i64 %t803 - store { ptr, i64, i64 } %t802, ptr %t806 - store i64 %t804, ptr %t791 - br label %endif6016 -endif6016: - br label %for.step6005 -for.step6005: - %t807 = load i64, ptr %a760 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a760 - br label %for.cond6003 -for.end6006: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t810 = load i64, ptr %t809 - %t811 = icmp sgt i64 %t810, 0 - br i1 %t811, label %then6019, label %endif6021 -then6019: - %t812 = load ptr, ptr %a1 - %t813 = load %S.ast.Node, ptr %a2 - %t814 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3832, i64 2, i64 0 }, ptr %a815 - call void @finch_str_join(ptr %a816, ptr %a756, ptr %a815) - %t817 = load { ptr, i64, i64 }, ptr %a816 - store { ptr, i64, i64 } { ptr @.str.3831, i64 26, i64 0 }, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t822, ptr %a824 - store { ptr, i64, i64 } { ptr @.str.3833, i64 29, i64 0 }, ptr %a825 - call void @finch_str_concat(ptr %a823, ptr %a824, ptr %a825) - store { ptr, i64, i64 } %t822, ptr %a826 - call void @finch_str_drop(ptr %a826) - %t827 = load { ptr, i64, i64 }, ptr %a823 - call void @finch.gen.fail(ptr %t812, %S.ast.Node %t813, { ptr, i64, i64 } %t827) - store { ptr, i64, i64 } %t827, ptr %a828 - call void @finch_str_drop(ptr %a828) - br label %endif6021 -endif6021: - call void @finch.drop.arr_str(ptr %a756) - call void @finch.drop.S_gen_EnumDef(ptr %a755) - br label %endif5998 -else5997: - %t829 = load ptr, ptr %a1 - %t830 = load %S.ast.Node, ptr %a2 - %t831 = load %S.ast.Type, ptr %a19 - %t832 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t831) - store { ptr, i64, i64 } { ptr @.str.3834, i64 11, i64 0 }, ptr %a834 - store { ptr, i64, i64 } %t832, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - store { ptr, i64, i64 } %t837, ptr %a839 - store { ptr, i64, i64 } { ptr @.str.3835, i64 54, i64 0 }, ptr %a840 - call void @finch_str_concat(ptr %a838, ptr %a839, ptr %a840) - store { ptr, i64, i64 } %t837, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = load { ptr, i64, i64 }, ptr %a838 - call void @finch.gen.fail(ptr %t829, %S.ast.Node %t830, { ptr, i64, i64 } %t842) - store { ptr, i64, i64 } %t842, ptr %a843 - call void @finch_str_drop(ptr %a843) - br label %endif5998 -endif5998: - br label %endif5970 -endif5970: - %t844 = load ptr, ptr %a1 - %t845 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t844, { ptr, i64, i64 } { ptr @.str.3836, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3837, i64 35, i64 0 }, %S.ast.Node %t845) - %t846 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t846, { ptr, i64, i64 } { ptr @.str.3838, i64 11, i64 0 }) - %t847 = load ptr, ptr %a1 - %t848 = icmp eq ptr %t847, null - br i1 %t848, label %panic6022, label %ok6023 -panic6022: - call void @finch_panic(ptr @.str.3839, i64 3194, ptr @.str.3840) - unreachable -ok6023: - %t849 = getelementptr inbounds %S.gen.Gen, ptr %t847, i32 0, i32 9 - store i1 true, ptr %t849 - br label %endif5967 -endif5967: - %t850 = load ptr, ptr %a1 - %t851 = load i64, ptr %a46 - call void @finch.gen.heldEnd(ptr %t850, i64 %t851) - %t852 = load ptr, ptr %a1 - %t853 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.label(ptr %t852, { ptr, i64, i64 } %t853) - %t854 = load i1, ptr %a128 - %t855 = xor i1 %t854, true - br i1 %t855, label %then6024, label %endif6026 -then6024: - %t856 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t856, { ptr, i64, i64 } { ptr @.str.3841, i64 11, i64 0 }) - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic6027, label %ok6028 -panic6027: - call void @finch_panic(ptr @.str.3842, i64 3200, ptr @.str.3843) - unreachable -ok6028: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 9 - store i1 true, ptr %t859 - %t860 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3844, i64 4, i64 0 }) - %t861 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t860, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t861 -endif6026: - %t862 = load i1, ptr %a3 - br i1 %t862, label %then6029, label %endif6031 -then6029: - %t863 = load ptr, ptr %a1 - %t864 = load ptr, ptr %a1 - %t865 = load %S.ast.Type, ptr %a133 - %t866 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t864, %S.ast.Type %t865) - store { ptr, i64, i64 } { ptr @.str.3845, i64 4, i64 0 }, ptr %a868 - store { ptr, i64, i64 } %t866, ptr %a869 - call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869) - store { ptr, i64, i64 } %t866, ptr %a870 - call void @finch_str_drop(ptr %a870) - %t871 = load { ptr, i64, i64 }, ptr %a867 - store { ptr, i64, i64 } %t871, ptr %a873 - store { ptr, i64, i64 } { ptr @.str.3846, i64 1, i64 0 }, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - store { ptr, i64, i64 } %t871, ptr %a875 - call void @finch_str_drop(ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a872 - %t877 = load { ptr, i64, i64 }, ptr %a130 - %t878 = load { ptr, i64, i64 }, ptr %a131 - %t879 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t877, { ptr, i64, i64 } %t878) - store { ptr, i64, i64 } %t876, ptr %a881 - store { ptr, i64, i64 } %t879, ptr %a882 - call void @finch_str_concat(ptr %a880, ptr %a881, ptr %a882) - store { ptr, i64, i64 } %t876, ptr %a883 - call void @finch_str_drop(ptr %a883) - store { ptr, i64, i64 } %t879, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load { ptr, i64, i64 }, ptr %a880 - %t886 = call { ptr, i64, i64 } @finch.gen.op(ptr %t863, { ptr, i64, i64 } %t885) - store { ptr, i64, i64 } %t885, ptr %a887 - call void @finch_str_drop(ptr %a887) - %t888 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t886, 0 - %t889 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t889, ptr %a890 - call void @finch.copy.S_ast_Type(ptr %a891, ptr %a890) - %t892 = load %S.ast.Type, ptr %a891 - %t893 = insertvalue %S.gen.Val %t888, %S.ast.Type %t892, 1 - %t894 = load ptr, ptr %a1 - %t895 = load %S.ast.Type, ptr %a133 - %t896 = call i1 @finch.gen.owning(ptr %t894, %S.ast.Type %t895) - %t897 = insertvalue %S.gen.Val %t893, i1 %t896, 2 - store %S.gen.Val %t897, ptr %a898 - %t899 = load ptr, ptr %a1 - %t900 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t899, %S.gen.Val %t900) - %t901 = load %S.gen.Val, ptr %a898 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t901 -endif6031: - %t902 = load ptr, ptr %a1 - %t903 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t902, %S.gen.Val %t903) - %t904 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3847, i64 4, i64 0 }) - %t905 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t904, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t905 -} - -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 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond6032 -for.cond6032: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body6033, label %for.end6035 -for.body6033: - %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 %range6036, label %inrange6037 -range6036: - call void @finch_panic_index(ptr @.str.3849, i64 3215, i64 %t10, i64 %t12) - unreachable -inrange6037: - %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.3848, 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.3850, i64 3, i64 0 }, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - %t26 = load i64, ptr %a6 - %t27 = load { ptr, i64, i64 }, ptr %a2 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range6038, label %inrange6039 -range6038: - call void @finch_panic_index(ptr @.str.3851, i64 3215, i64 %t26, i64 %t28) - unreachable -inrange6039: - %t30 = extractvalue { ptr, i64, i64 } %t27, 0 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t26 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t25, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t25, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3852, i64 2, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load i64, ptr %t9 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %a3 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t9 - br label %for.step6034 -for.step6034: - %t47 = load i64, ptr %a6 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a6 - br label %for.cond6032 -for.end6035: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3853, i64 2, i64 0 }, ptr %a50 - call void @finch_str_join(ptr %a51, ptr %a3, ptr %a50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t52 -} - -define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) { -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 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a64 = alloca %S.gen.Val, align 16 - %a65 = alloca %S.gen.Val, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.gen.Fallible, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t4 = load { ptr, i64, i64 }, ptr %t3 - store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3854, 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.from6040 -logic.from6040: - br i1 %t8, label %logic.rhs6041, label %logic.end6042 -logic.rhs6041: - %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.3855, 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.rend6043 -logic.rend6043: - br label %logic.end6042 -logic.end6042: - %t15 = phi i1 [ false, %logic.from6040 ], [ %t14, %logic.rend6043 ] - br i1 %t15, label %then6044, label %endif6046 -then6044: - %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.3856, i64 80, i64 0 }) - br label %endif6046 -endif6046: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6047, label %ok6048 -panic6047: - call void @finch_panic(ptr @.str.3857, i64 3233, ptr @.str.3858) - unreachable -ok6048: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 41 - %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 %panic6049, label %ok6050 -panic6049: - call void @finch_panic(ptr @.str.3859, i64 3234, ptr @.str.3860) - unreachable -ok6050: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 42 - %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 %panic6051, label %ok6052 -panic6051: - call void @finch_panic(ptr @.str.3861, i64 3235, ptr @.str.3862) - unreachable -ok6052: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 43 - %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 %panic6053, label %ok6054 -panic6053: - call void @finch_panic(ptr @.str.3863, i64 3236, ptr @.str.3864) - unreachable -ok6054: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 41 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store { ptr, i64, i64 } %t43, ptr %t46 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic6055, label %ok6056 -panic6055: - call void @finch_panic(ptr @.str.3866, i64 3237, ptr @.str.3867) - unreachable -ok6056: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 42 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } { ptr @.str.3865, i64 0, i64 0 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic6057, label %ok6058 -panic6057: - call void @finch_panic(ptr @.str.3869, i64 3238, ptr @.str.3870) - unreachable -ok6058: - %t56 = getelementptr inbounds %S.gen.Gen, ptr %t54, i32 0, i32 43 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } { ptr @.str.3868, i64 0, i64 0 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = load %S.gen.Val, ptr %a62 - store %S.gen.Val %t63, ptr %a64 - call void @finch.copy.S_gen_Val(ptr %a65, ptr %a64) - %t66 = load %S.gen.Val, ptr %a65 - %t67 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t66, 0 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic6059, label %ok6060 -panic6059: - call void @finch_panic(ptr @.str.3871, i64 3240, ptr @.str.3872) - unreachable -ok6060: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 42 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_copy(ptr %a73, ptr %a72) - %t74 = load { ptr, i64, i64 }, ptr %a73 - %t75 = insertvalue %S.gen.Fallible %t67, { ptr, i64, i64 } %t74, 1 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic6061, label %ok6062 -panic6061: - call void @finch_panic(ptr @.str.3873, i64 3240, ptr @.str.3874) - unreachable -ok6062: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 43 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_copy(ptr %a81, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - %t83 = insertvalue %S.gen.Fallible %t75, { ptr, i64, i64 } %t82, 2 - store %S.gen.Fallible %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a25 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic6063, label %ok6064 -panic6063: - call void @finch_panic(ptr @.str.3875, i64 3241, ptr @.str.3876) - unreachable -ok6064: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 41 - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a33 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6065, label %ok6066 -panic6065: - call void @finch_panic(ptr @.str.3877, i64 3242, ptr @.str.3878) - unreachable -ok6066: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 42 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t100, ptr %t97 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a41 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic6067, label %ok6068 -panic6067: - call void @finch_panic(ptr @.str.3879, i64 3243, ptr @.str.3880) - unreachable -ok6068: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 43 - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_copy(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t109, ptr %t106 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = getelementptr inbounds %S.gen.Fallible, ptr %a84, i32 0, i32 1 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = load i64, ptr %t113 - %t115 = icmp eq i64 %t114, 0 - br i1 %t115, label %then6069, label %endif6071 -then6069: - %t116 = load ptr, ptr %a1 - %t117 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } { ptr @.str.3881, i64 50, i64 0 }) - br label %endif6071 -endif6071: - %t118 = load %S.gen.Fallible, ptr %a84 - call void @finch.drop.S_gen_Val(ptr %a62) - call void @finch_str_drop(ptr %a41) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a25) - ret %S.gen.Fallible %t118 -} - -define internal void @finch.drop.S_gen_Fallible(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Val(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca %S.gen.Fallible, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a156 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic6072, label %ok6073 -panic6072: - call void @finch_panic(ptr @.str.3882, i64 3252, ptr @.str.3883) - unreachable -ok6073: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then6074, label %endif6076 -then6074: - %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.3884, i64 30, i64 0 }) - br label %endif6076 -endif6076: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic6077, label %ok6078 -panic6077: - call void @finch_panic(ptr @.str.3885, i64 3255, ptr @.str.3886) - unreachable -ok6078: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9 - %t14 = load i1, ptr %t13 - %t15 = xor i1 %t14, true - br i1 %t15, label %then6079, label %endif6081 -then6079: - store { ptr, i64, i64 } { ptr @.str.3887, i64 1, i64 0 }, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6082, label %ok6083 -panic6082: - call void @finch_panic(ptr @.str.3888, i64 3257, ptr @.str.3889) - unreachable -ok6083: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 13 - %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12 - %t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3890, 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 %then6084, label %endif6086 -then6084: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6087, label %ok6088 -panic6087: - call void @finch_panic(ptr @.str.3891, i64 3258, ptr @.str.3892) - unreachable -ok6088: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 13 - %t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12 - %t31 = load %S.ast.Type, ptr %t30 - %t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31) - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3893, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t37, ptr %a16 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %endif6086 -endif6086: - %t40 = load ptr, ptr %a1 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = load ptr, ptr %a1 - %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic6089, label %ok6090 -panic6089: - call void @finch_panic(ptr @.str.3895, i64 3260, ptr @.str.3896) - unreachable -ok6090: - %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 13 - %t45 = getelementptr inbounds %S.gen.FnSig, ptr %t44, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } { ptr @.str.3894, i64 29, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3897, i64 31, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3898, i64 55, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.fail(ptr %t40, %S.ast.Node %t41, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a16) - br label %endif6081 -endif6081: - %t68 = load ptr, ptr %a1 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t70 = load { ptr, i64, i64 }, ptr %t69 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 0, %t71 - br i1 %t72, label %range6091, label %inrange6092 -range6091: - call void @finch_panic_index(ptr @.str.3899, i64 3262, i64 0, i64 %t71) - unreachable -inrange6092: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 0 - %t75 = load %S.ast.Node, ptr %t74 - %t76 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t68, %S.ast.Node %t75) - store %S.gen.Fallible %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t78, { ptr, i64, i64 } { ptr @.str.3900, i64 10, i64 0 }) - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t81, { ptr, i64, i64 } { ptr @.str.3901, i64 6, i64 0 }) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 1 - %t86 = load { ptr, i64, i64 }, ptr %t85 - %t87 = load { ptr, i64, i64 }, ptr %a80 - %t88 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.condBr(ptr %t84, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t88) - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a80 - call void @finch.gen.label(ptr %t89, { ptr, i64, i64 } %t90) - %t91 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t91, i64 0) - %t92 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t92, i64 0) - %t93 = load ptr, ptr %a1 - %t94 = load ptr, ptr %a1 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6093, label %ok6094 -panic6093: - call void @finch_panic(ptr @.str.3903, i64 3269, ptr @.str.3904) - unreachable -ok6094: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 13 - %t98 = load %S.gen.FnSig, ptr %t97 - %t99 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t94, %S.gen.FnSig %t98) - store { ptr, i64, i64 } { ptr @.str.3902, i64 4, i64 0 }, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.3905, i64 1, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load ptr, ptr %a1 - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic6095, label %ok6096 -panic6095: - call void @finch_panic(ptr @.str.3907, i64 3269, ptr @.str.3908) - unreachable -ok6096: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 13 - %t115 = load %S.gen.FnSig, ptr %t114 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t111, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.3906, i64 12, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.3909, i64 36, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t126, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.3910, i64 3, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t110, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - store { ptr, i64, i64 } %t109, ptr %a142 - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t109, ptr %a144 - call void @finch_str_drop(ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.emit(ptr %t93, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic6097, label %ok6098 -panic6097: - call void @finch_panic(ptr @.str.3911, i64 3270, ptr @.str.3912) - unreachable -ok6098: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 9 - store i1 true, ptr %t150 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) - %t153 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 0 - %t154 = load %S.gen.Val, ptr %t153 - store %S.gen.Val %t154, ptr %a155 - call void @finch.copy.S_gen_Val(ptr %a156, ptr %a155) - %t157 = load %S.gen.Val, ptr %a156 - call void @finch_str_drop(ptr %a83) - call void @finch_str_drop(ptr %a80) - call void @finch.drop.S_gen_Fallible(ptr %a77) - ret %S.gen.Val %t157 -} - -define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) { -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 - %a42 = alloca %S.ast.Type, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca i1, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.ast.Type, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Type, align 16 - %a245 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range6099, label %inrange6100 -range6099: - call void @finch_panic_index(ptr @.str.3913, i64 3277, i64 0, i64 %t7) - unreachable -inrange6100: - %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.3914, 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.3915, 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 %then6101, label %endif6103 -then6101: - %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.3917, 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.3916, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true, i1 true) - store %S.ast.Type %t38, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range6104, label %inrange6105 -range6104: - call void @finch_panic_index(ptr @.str.3918, i64 3286, i64 1, i64 %t47) - unreachable -inrange6105: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 - %t51 = load %S.ast.Node, ptr %t50 - call void @finch.gen.block(ptr %t44, %S.ast.Node %t51, i1 true) - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic6106, label %ok6107 -panic6106: - call void @finch_panic(ptr @.str.3919, i64 3287, ptr @.str.3920) - unreachable -ok6107: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 9 - %t55 = load i1, ptr %t54 - store i1 %t55, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t57) - %t58 = load i1, ptr %a56 - %t59 = xor i1 %t58, true - br label %logic.from6108 -logic.from6108: - br i1 %t59, label %logic.rhs6109, label %logic.end6110 -logic.rhs6109: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3921, i64 4, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp eq i32 %t65, 0 - br label %logic.rend6111 -logic.rend6111: - br label %logic.end6110 -logic.end6110: - %t67 = phi i1 [ false, %logic.from6108 ], [ %t66, %logic.rend6111 ] - br label %logic.from6112 -logic.from6112: - br i1 %t67, label %logic.rhs6113, label %logic.end6114 -logic.rhs6113: - %t68 = load i1, ptr %a3 - %t69 = xor i1 %t68, true - br label %logic.rend6115 -logic.rend6115: - br label %logic.end6114 -logic.end6114: - %t70 = phi i1 [ false, %logic.from6112 ], [ %t69, %logic.rend6115 ] - br i1 %t70, label %then6116, label %endif6118 -then6116: - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 1, %t74 - br i1 %t75, label %range6119, label %inrange6120 -range6119: - call void @finch_panic_index(ptr @.str.3922, i64 3290, i64 1, i64 %t74) - unreachable -inrange6120: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 1 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.3923, i64 142, i64 0 }) - br label %endif6118 -endif6118: - %t79 = load i1, ptr %a3 - br label %logic.from6121 -logic.from6121: - br i1 %t79, label %logic.rhs6122, label %logic.end6123 -logic.rhs6122: - %t80 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %t80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.3924, i64 4, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp eq i32 %t85, 0 - br label %logic.rend6124 -logic.rend6124: - br label %logic.end6123 -logic.end6123: - %t87 = phi i1 [ false, %logic.from6121 ], [ %t86, %logic.rend6124 ] - br i1 %t87, label %then6125, label %endif6127 -then6125: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3925, i64 6, i64 0 }) - store { ptr, i64, i64 } %t89, ptr %a90 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - %t96 = load %S.gen.Val, ptr %a19 - call void @finch.gen.release(ptr %t95, %S.gen.Val %t96) - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t97, { ptr, i64, i64 } %t98) - %t99 = load ptr, ptr %a1 - %t100 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t99, { ptr, i64, i64 } %t100) - %t101 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3926, i64 4, i64 0 }) - %t102 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t101, 1 - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t102 -endif6127: - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load %S.gen.Val, ptr %a19 - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t107 -endif6103: - %t108 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3927, 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 %then6128, label %endif6130 -then6128: - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 1, %t118 - br i1 %t119, label %range6131, label %inrange6132 -range6131: - call void @finch_panic_index(ptr @.str.3928, i64 3306, i64 1, i64 %t118) - unreachable -inrange6132: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Node, ptr %t120, i64 1 - %t122 = load %S.ast.Node, ptr %t121 - call void @finch.gen.fail(ptr %t115, %S.ast.Node %t122, { ptr, i64, i64 } { ptr @.str.3929, i64 98, i64 0 }) - br label %endif6130 -endif6130: - %t123 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t123) - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Node, ptr %a2 - %t126 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3931, i64 3, i64 0 }) - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t124, %S.ast.Node %t125, { ptr, i64, i64 } { ptr @.str.3930, i64 3, i64 0 }, %S.ast.Type %t126, { ptr, i64, i64 } %t128, i1 true, i1 true) - store %S.ast.Type %t126, ptr %a130 - call void @finch.drop.S_ast_Type(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 1, %t136 - br i1 %t137, label %range6133, label %inrange6134 -range6133: - call void @finch_panic_index(ptr @.str.3932, i64 3310, i64 1, i64 %t136) - unreachable -inrange6134: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Node, ptr %t138, i64 1 - %t140 = load %S.ast.Node, ptr %t139 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - %t143 = call %S.gen.Val @finch.gen.exprWant(ptr %t133, %S.ast.Node %t140, %S.ast.Type %t142) - %t144 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t147 = load { ptr, i64, i64 }, ptr %t146 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 1, %t148 - br i1 %t149, label %range6135, label %inrange6136 -range6135: - call void @finch_panic_index(ptr @.str.3933, i64 3310, i64 1, i64 %t148) - unreachable -inrange6136: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.ast.Node, ptr %t150, i64 1 - %t152 = load %S.ast.Node, ptr %t151 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t132, %S.gen.Val %t143, %S.ast.Type %t145, %S.ast.Node %t152, { ptr, i64, i64 } { ptr @.str.3934, i64 20, i64 0 }) - store %S.gen.Val %t143, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store %S.gen.Val %t153, ptr %a155 - %t156 = load ptr, ptr %a1 - %t157 = load %S.gen.Val, ptr %a155 - %t158 = call { ptr, i64, i64 } @finch.gen.own(ptr %t156, %S.gen.Val %t157) - store { ptr, i64, i64 } %t158, ptr %a159 - %t160 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t160) - %t161 = load ptr, ptr %a1 - %t162 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t161, { ptr, i64, i64 } { ptr @.str.3935, i64 7, i64 0 }) - store { ptr, i64, i64 } %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3936, i64 6, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168) - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170) - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172) - %t173 = load ptr, ptr %a1 - %t174 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t173, { ptr, i64, i64 } %t174) - %t175 = load ptr, ptr %a1 - %t176 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t175, { ptr, i64, i64 } %t176) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) - store { ptr, i64, i64 } { ptr @.str.3937, i64 4, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_drop(ptr %a187) - %t188 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t188, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.3938, i64 3, i64 0 }, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t188, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - %t194 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t193, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.3939, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t204, ptr %a207 - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t204, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.3940, i64 6, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.3941, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3942, i64 2, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t179, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t243 = load %S.ast.Type, ptr %t242 - store %S.ast.Type %t243, ptr %a244 - call void @finch.copy.S_ast_Type(ptr %a245, ptr %a244) - %t246 = load %S.ast.Type, ptr %a245 - %t247 = insertvalue %S.gen.Val %t241, %S.ast.Type %t246, 1 - %t248 = load ptr, ptr %a1 - %t249 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t250 = load %S.ast.Type, ptr %t249 - %t251 = call i1 @finch.gen.owning(ptr %t248, %S.ast.Type %t250) - %t252 = insertvalue %S.gen.Val %t247, i1 %t251, 2 - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a163) - call void @finch_str_drop(ptr %a159) - call void @finch.drop.S_gen_Val(ptr %a155) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t252 -} - -define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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.3943, 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 %then6137, label %endif6139 -then6137: - %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 -endif6139: - %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.3944, 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 %then6140, label %endif6142 -then6140: - %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 -endif6142: - %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 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %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.3945, 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 %then6143, label %endif6145 -then6143: - %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.3947, 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.from6146 -logic.from6146: - br i1 %t20, label %logic.end6148, label %logic.rhs6147 -logic.rhs6147: - %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.3949, 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.rend6149 -logic.rend6149: - br label %logic.end6148 -logic.end6148: - %t28 = phi i1 [ true, %logic.from6146 ], [ %t27, %logic.rend6149 ] - br i1 %t28, label %then6150, label %endif6152 -then6150: - 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.3950, i64 3339) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - store i64 0, ptr %a39 - br label %each.cond6153 -each.cond6153: - %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.body6154, label %each.end6156 -each.body6154: - %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.from6157 -logic.from6157: - br i1 %t54, label %logic.rhs6158, label %logic.end6159 -logic.rhs6158: - %t55 = load i8, ptr %a47 - %t56 = icmp ule i8 %t55, 102 - br label %logic.rend6160 -logic.rend6160: - br label %logic.end6159 -logic.end6159: - %t57 = phi i1 [ false, %logic.from6157 ], [ %t56, %logic.rend6160 ] - br i1 %t57, label %then6161, label %endif6163 -then6161: - %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 %endif6163 -endif6163: - %t63 = load i8, ptr %a47 - %t64 = icmp uge i8 %t63, 65 - br label %logic.from6164 -logic.from6164: - br i1 %t64, label %logic.rhs6165, label %logic.end6166 -logic.rhs6165: - %t65 = load i8, ptr %a47 - %t66 = icmp ule i8 %t65, 70 - br label %logic.rend6167 -logic.rend6167: - br label %logic.end6166 -logic.end6166: - %t67 = phi i1 [ false, %logic.from6164 ], [ %t66, %logic.rend6167 ] - br i1 %t67, label %then6168, label %endif6170 -then6168: - %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 %endif6170 -endif6170: - %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.step6155 -each.step6155: - %t77 = load i64, ptr %a39 - %t78 = add i64 %t77, 1 - store i64 %t78, ptr %a39 - br label %each.cond6153 -each.end6156: - call void @finch_str_drop(ptr %a38) - %t79 = load i64, ptr %a29 - call void @finch_str_from_int(ptr %a80, i64 %t79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t81, 0 - %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3951, i64 3, i64 0 }) - %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 - %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t85 -endif6152: - %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.3952, i64 3351) - 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.3953, i64 3, i64 0 }) - %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 - %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t95 -endif6145: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3954, 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 %then6171, label %endif6173 -then6171: - %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.3955, i64 5, i64 0 }) - %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t109 -endif6173: - %t110 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3956, 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 %then6174, label %endif6176 -then6174: - %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.3957, i64 4, i64 0 }) - %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t122 -endif6176: - %t123 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3958, 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 %then6177, label %endif6179 -then6177: - %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 %range6180, label %inrange6181 -range6180: - call void @finch_panic_index(ptr @.str.3959, i64 3360, i64 0, i64 %t130) - unreachable -inrange6181: - %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.3960, i64 4, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif6179: - %t143 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.3961, 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 %then6182, label %endif6184 -then6182: - %t148 = load ptr, ptr %a1 - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t151 -endif6184: - %t152 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.3962, 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 %then6185, label %endif6187 -then6185: - %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3963, i64 4, i64 0 }, 0 - %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3964, i64 4, i64 0 }) - %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t159 -endif6187: - %t160 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3965, 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.from6188 -logic.from6188: - br i1 %t164, label %logic.end6190, label %logic.rhs6189 -logic.rhs6189: - %t165 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3966, 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.rend6191 -logic.rend6191: - br label %logic.end6190 -logic.end6190: - %t170 = phi i1 [ true, %logic.from6188 ], [ %t169, %logic.rend6191 ] - br label %logic.from6192 -logic.from6192: - br i1 %t170, label %logic.end6194, label %logic.rhs6193 -logic.rhs6193: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3967, 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.rend6195 -logic.rend6195: - br label %logic.end6194 -logic.end6194: - %t176 = phi i1 [ true, %logic.from6192 ], [ %t175, %logic.rend6195 ] - br i1 %t176, label %then6196, label %endif6198 -then6196: - %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 %then6199, label %endif6201 -then6199: - %t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2 - %t185 = load %S.gen.Val, ptr %t184 - store %S.gen.Val %t185, ptr %a186 - call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186) - %t188 = load %S.gen.Val, ptr %a187 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t188 -endif6201: - %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) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 - %t201 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.Place, ptr %t201, i32 0, i32 1 - %t203 = load %S.ast.Type, ptr %t202 - store %S.ast.Type %t203, ptr %a204 - call void @finch.copy.S_ast_Type(ptr %a205, ptr %a204) - %t206 = load %S.ast.Type, ptr %a205 - %t207 = insertvalue %S.gen.Val %t200, %S.ast.Type %t206, 1 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t207 -endif6198: - %t208 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.3968, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then6202, label %endif6204 -then6202: - %t213 = load ptr, ptr %a1 - %t214 = load %S.ast.Node, ptr %a2 - %t215 = call %S.gen.Val @finch.gen.matchGen(ptr %t213, %S.ast.Node %t214, i1 true) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t215 -endif6204: - %t216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t216, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.3969, i64 3, i64 0 }, ptr %a218 - %t219 = call i32 @finch_str_eq(ptr %a217, ptr %a218) - %t220 = icmp ne i32 %t219, 0 - br i1 %t220, label %then6205, label %endif6207 -then6205: - %t221 = load ptr, ptr %a1 - %t222 = load %S.ast.Node, ptr %a2 - %t223 = call %S.gen.Val @finch.gen.tryExpr(ptr %t221, %S.ast.Node %t222) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -endif6207: - %t224 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t224, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.3970, i64 2, i64 0 }, ptr %a226 - %t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226) - %t228 = icmp ne i32 %t227, 0 - br i1 %t228, label %then6208, label %endif6210 -then6208: - %t229 = load ptr, ptr %a1 - %t230 = load %S.ast.Node, ptr %a2 - %t231 = call %S.gen.Val @finch.gen.orElse(ptr %t229, %S.ast.Node %t230, i1 false) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t231 -endif6210: - %t232 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t232, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3971, i64 5, i64 0 }, ptr %a234 - %t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234) - %t236 = icmp ne i32 %t235, 0 - br i1 %t236, label %then6211, label %endif6213 -then6211: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.gen.Val @finch.gen.unary(ptr %t237, %S.ast.Node %t238) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t239 -endif6213: - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t240, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3972, i64 6, i64 0 }, ptr %a242 - %t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242) - %t244 = icmp ne i32 %t243, 0 - br i1 %t244, label %then6214, label %endif6216 -then6214: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = call %S.gen.Val @finch.gen.binary(ptr %t245, %S.ast.Node %t246) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t247 -endif6216: - %t248 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3973, i64 4, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br i1 %t252, label %then6217, label %endif6219 -then6217: - %t253 = load ptr, ptr %a1 - %t254 = load %S.ast.Node, ptr %a2 - %t255 = call %S.gen.Val @finch.gen.call(ptr %t253, %S.ast.Node %t254) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t255 -endif6219: - %t256 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t256, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.3974, i64 6, i64 0 }, ptr %a258 - %t259 = call i32 @finch_str_eq(ptr %a257, ptr %a258) - %t260 = icmp ne i32 %t259, 0 - br i1 %t260, label %then6220, label %endif6222 -then6220: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a2 - %t263 = call %S.gen.Val @finch.gen.method(ptr %t261, %S.ast.Node %t262) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t263 -endif6222: - %t264 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t264, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.3975, i64 5, i64 0 }, ptr %a266 - %t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266) - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %then6223, label %endif6225 -then6223: - %t269 = load ptr, ptr %a1 - %t270 = load %S.ast.Node, ptr %a2 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3976, i64 4, i64 0 }) - %t272 = call %S.gen.Val @finch.gen.arrayLit(ptr %t269, %S.ast.Node %t270, %S.ast.Type %t271) - store %S.ast.Type %t271, ptr %a273 - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t272 -endif6225: - %t274 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t274, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.3977, i64 3, i64 0 }, ptr %a276 - %t277 = call i32 @finch_str_eq(ptr %a275, ptr %a276) - %t278 = icmp ne i32 %t277, 0 - br i1 %t278, label %then6226, label %endif6228 -then6226: - %t279 = load ptr, ptr %a1 - %t280 = load %S.ast.Node, ptr %a2 - %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3978, i64 4, i64 0 }) - %t282 = call %S.gen.Val @finch.gen.mapLit(ptr %t279, %S.ast.Node %t280, %S.ast.Type %t281) - store %S.ast.Type %t281, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t282 -endif6228: - %t284 = load ptr, ptr %a1 - %t285 = load %S.ast.Node, ptr %a2 - %t286 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.3979, i64 19, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - call void @finch.gen.fail(ptr %t284, %S.ast.Node %t285, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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.ast.Type, align 16 - %a31 = alloca %S.gen.Val, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a144 = alloca %S.ast.Type, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a158 = alloca %S.ast.Type, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca %S.ast.Type, align 16 - %a190 = alloca %S.ast.Type, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range6229, label %inrange6230 -range6229: - call void @finch_panic_index(ptr @.str.3980, i64 3408, i64 0, i64 %t6) - unreachable -inrange6230: - %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.3981, 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 %then6231, label %endif6233 -then6231: - %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.3982, 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 %range6234, label %inrange6235 -range6234: - call void @finch_panic_index(ptr @.str.3983, i64 3410, i64 0, i64 %t24) - unreachable -inrange6235: - %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.3984, i64 19, i64 0 }) - store %S.ast.Type %t21, ptr %a30 - call void @finch.drop.S_ast_Type(ptr %a30) - store %S.gen.Val %t29, ptr %a31 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } { ptr @.str.3985, 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.3986, i64 6, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = call { ptr, i64, i64 } @finch.gen.op(ptr %t32, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t44, 0 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3987, i64 4, i64 0 }) - %t48 = insertvalue %S.gen.Val %t46, %S.ast.Type %t47, 1 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t48 -endif6233: - %t49 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3988, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then6236, label %endif6238 -then6236: - %t55 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t56 = load %S.ast.Type, ptr %t55 - %t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56) - %t58 = xor i1 %t57, true - br i1 %t58, label %then6239, label %endif6241 -then6239: - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t62) - store { ptr, i64, i64 } { ptr @.str.3989, i64 45, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.gen.fail(ptr %t59, %S.ast.Node %t60, { ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_drop(ptr %a69) - br label %endif6241 -endif6241: - %t70 = load ptr, ptr %a1 - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t73 = load %S.ast.Type, ptr %t72 - %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t71, %S.ast.Type %t73) - store { ptr, i64, i64 } { ptr @.str.3990, i64 4, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3991, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t84, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t84, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3992, i64 4, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0 - %t100 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t101 = load %S.ast.Type, ptr %t100 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t99, %S.ast.Type %t104, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t105 -endif6238: - %t106 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t107 = load %S.ast.Type, ptr %t106 - %t108 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t107) - br i1 %t108, label %then6242, label %endif6244 -then6242: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a2 - %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t112 = load %S.ast.Type, ptr %t111 - %t113 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t112) - store { ptr, i64, i64 } %t113, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.3993, i64 34, i64 0 }, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t113, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t110, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif6244 -endif6244: - %t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.isSigned(%S.ast.Type %t121) - br i1 %t122, label %then6245, label %endif6247 -then6245: - %t123 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 - %t124 = load i1, ptr %t123 - br i1 %t124, label %then6248, label %endif6250 -then6248: - %t125 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3995, i64 1, i64 0 }, ptr %a129 - %t130 = call i32 @finch_str_starts(ptr %a127, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - br i1 %t131, label %then6251, label %endif6253 -then6251: - %t132 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - %t136 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a135, ptr %a134, i64 1, i64 %t138, ptr @.str.3996, i64 3425) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - store %S.ast.Type %t142, ptr %a143 - call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143) - %t145 = load %S.ast.Type, ptr %a144 - %t146 = insertvalue %S.gen.Val %t140, %S.ast.Type %t145, 1 - %t147 = insertvalue %S.gen.Val %t146, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t147 -endif6253: - %t148 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t149 = load { ptr, i64, i64 }, ptr %t148 - store { ptr, i64, i64 } { ptr @.str.3997, i64 1, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t153, 0 - %t155 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t156 = load %S.ast.Type, ptr %t155 - store %S.ast.Type %t156, ptr %a157 - call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) - %t159 = load %S.ast.Type, ptr %a158 - %t160 = insertvalue %S.gen.Val %t154, %S.ast.Type %t159, 1 - %t161 = insertvalue %S.gen.Val %t160, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t161 -endif6250: - %t162 = load ptr, ptr %a1 - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t165 = load %S.ast.Type, ptr %t164 - %t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t165) - store { ptr, i64, i64 } { ptr @.str.3998, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t166, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.3999, i64 4, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - %t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t176, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t176, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t184, 0 - %t187 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t188 = load %S.ast.Type, ptr %t187 - store %S.ast.Type %t188, ptr %a189 - call void @finch.copy.S_ast_Type(ptr %a190, ptr %a189) - %t191 = load %S.ast.Type, ptr %a190 - %t192 = insertvalue %S.gen.Val %t186, %S.ast.Type %t191, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t192 -endif6247: - %t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br i1 %t195, label %then6254, label %endif6256 -then6254: - %t196 = load ptr, ptr %a1 - %t197 = load ptr, ptr %a1 - %t198 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t197, %S.ast.Type %t199) - store { ptr, i64, i64 } { ptr @.str.4000, i64 5, i64 0 }, ptr %a202 - store { ptr, i64, i64 } %t200, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4001, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - %t211 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t212 = load { ptr, i64, i64 }, ptr %t211 - store { ptr, i64, i64 } %t210, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t210, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t196, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t218, 0 - %t221 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t222 = load %S.ast.Type, ptr %t221 - store %S.ast.Type %t222, ptr %a223 - call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223) - %t225 = load %S.ast.Type, ptr %a224 - %t226 = insertvalue %S.gen.Val %t220, %S.ast.Type %t225, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t226 -endif6256: - %t227 = load ptr, ptr %a1 - %t228 = load %S.ast.Node, ptr %a2 - %t229 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t230) - store { ptr, i64, i64 } { ptr @.str.4002, i64 26, i64 0 }, ptr %a233 - store { ptr, i64, i64 } %t231, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t236) - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load %S.gen.Val, ptr %a12 - ret %S.gen.Val %t238 -} - -define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - store %S.gen.Val %p3, ptr %a4 - store %S.ast.Node %p4, ptr %a5 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.4003, 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.4004, i64 5, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a25 - %t26 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t27 = load %S.ast.Type, ptr %t26 - %t28 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call i1 @finch.ast.same(%S.ast.Type %t27, %S.ast.Type %t29) - %t31 = xor i1 %t30, true - br i1 %t31, label %then6257, label %endif6259 -then6257: - %t32 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.4005, i64 5, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - %t37 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t38 = load %S.ast.Type, ptr %t37 - %t39 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t38) - store { ptr, i64, i64 } %t36, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t36, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a40 - %t46 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t45, ptr %a25 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif6259 -endif6259: - %t48 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4006, i64 1, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from6260 -logic.from6260: - br i1 %t52, label %logic.rhs6261, label %logic.end6262 -logic.rhs6261: - %t53 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t54 = getelementptr inbounds %S.ast.Type, ptr %t53, i32 0, i32 0 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4007, 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.from6263 -logic.from6263: - br i1 %t59, label %logic.end6265, label %logic.rhs6264 -logic.rhs6264: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4008, i64 3, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br label %logic.rend6266 -logic.rend6266: - br label %logic.end6265 -logic.end6265: - %t67 = phi i1 [ true, %logic.from6263 ], [ %t66, %logic.rend6266 ] - br label %logic.rend6267 -logic.rend6267: - br label %logic.end6262 -logic.end6262: - %t68 = phi i1 [ false, %logic.from6260 ], [ %t67, %logic.rend6267 ] - br i1 %t68, label %then6268, label %endif6270 -then6268: - %t69 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4009, i64 48, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t73, ptr %a25 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - br label %endif6270 -endif6270: - %t76 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.4010, i64 1, i64 0 }, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br label %logic.from6271 -logic.from6271: - br i1 %t80, label %logic.end6273, label %logic.rhs6272 -logic.rhs6272: - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4011, 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.rend6274 -logic.rend6274: - br label %logic.end6273 -logic.end6273: - %t86 = phi i1 [ true, %logic.from6271 ], [ %t85, %logic.rend6274 ] - br label %logic.from6275 -logic.from6275: - br i1 %t86, label %logic.rhs6276, label %logic.end6277 -logic.rhs6276: - %t87 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4012, i64 4, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp ne i32 %t92, 0 - br label %logic.rend6278 -logic.rend6278: - br label %logic.end6277 -logic.end6277: - %t94 = phi i1 [ false, %logic.from6275 ], [ %t93, %logic.rend6278 ] - br i1 %t94, label %then6279, label %else6280 -then6279: - %t95 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4013, i64 1, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then6282, label %else6283 -then6282: - %t100 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4014, i64 26, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a101 - %t105 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t104, ptr %a25 - store { ptr, i64, i64 } %t105, ptr %a106 - call void @finch_str_drop(ptr %a106) - br label %endif6284 -else6283: - %t107 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.4015, i64 26, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - %t112 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t111, ptr %a25 - store { ptr, i64, i64 } %t112, ptr %a113 - call void @finch_str_drop(ptr %a113) - br label %endif6284 -endif6284: - br label %endif6281 -else6280: - %t114 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.4016, i64 1, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from6285 -logic.from6285: - br i1 %t118, label %logic.end6287, label %logic.rhs6286 -logic.rhs6286: - %t119 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4017, i64 1, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend6288 -logic.rend6288: - br label %logic.end6287 -logic.end6287: - %t124 = phi i1 [ true, %logic.from6285 ], [ %t123, %logic.rend6288 ] - br label %logic.from6289 -logic.from6289: - br i1 %t124, label %logic.end6291, label %logic.rhs6290 -logic.rhs6290: - %t125 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.4018, i64 1, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br label %logic.rend6292 -logic.rend6292: - br label %logic.end6291 -logic.end6291: - %t130 = phi i1 [ true, %logic.from6289 ], [ %t129, %logic.rend6292 ] - br label %logic.from6293 -logic.from6293: - br i1 %t130, label %logic.end6295, label %logic.rhs6294 -logic.rhs6294: - %t131 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4019, i64 2, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6296 -logic.rend6296: - br label %logic.end6295 -logic.end6295: - %t136 = phi i1 [ true, %logic.from6293 ], [ %t135, %logic.rend6296 ] - br label %logic.from6297 -logic.from6297: - br i1 %t136, label %logic.end6299, label %logic.rhs6298 -logic.rhs6298: - %t137 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.4020, i64 2, i64 0 }, ptr %a139 - %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) - %t141 = icmp ne i32 %t140, 0 - br label %logic.rend6300 -logic.rend6300: - br label %logic.end6299 -logic.end6299: - %t142 = phi i1 [ true, %logic.from6297 ], [ %t141, %logic.rend6300 ] - br i1 %t142, label %then6301, label %endif6303 -then6301: - %t143 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.4021, i64 43, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t147, ptr %a25 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - br label %endif6303 -endif6303: - br label %endif6281 -endif6281: - %t150 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t151 = getelementptr inbounds %S.ast.Type, ptr %t150, i32 0, i32 0 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.4022, i64 6, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from6304 -logic.from6304: - br i1 %t156, label %logic.end6306, label %logic.rhs6305 -logic.rhs6305: - %t157 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t158 = getelementptr inbounds %S.ast.Type, ptr %t157, i32 0, i32 0 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.4023, 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.rend6307 -logic.rend6307: - br label %logic.end6306 -logic.end6306: - %t164 = phi i1 [ true, %logic.from6304 ], [ %t163, %logic.rend6307 ] - br label %logic.from6308 -logic.from6308: - br i1 %t164, label %logic.rhs6309, label %logic.end6310 -logic.rhs6309: - %t165 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4024, i64 2, i64 0 }, ptr %a167 - %t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167) - %t169 = icmp ne i32 %t168, 0 - br label %logic.from6311 -logic.from6311: - br i1 %t169, label %logic.end6313, label %logic.rhs6312 -logic.rhs6312: - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4025, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br label %logic.rend6314 -logic.rend6314: - br label %logic.end6313 -logic.end6313: - %t175 = phi i1 [ true, %logic.from6311 ], [ %t174, %logic.rend6314 ] - br label %logic.rend6315 -logic.rend6315: - br label %logic.end6310 -logic.end6310: - %t176 = phi i1 [ false, %logic.from6308 ], [ %t175, %logic.rend6315 ] - br i1 %t176, label %then6316, label %endif6318 -then6316: - %t177 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t177, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.4026, i64 31, i64 0 }, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - %t182 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t181, ptr %a25 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - br label %endif6318 -endif6318: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a5 - %t186 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186) - call void @finch_str_drop(ptr %a25) - ret void -} - -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 - %a68 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Type, align 16 - %a113 = alloca %S.gen.Val, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a149 = alloca %S.gen.Val, align 16 - %a178 = alloca %S.ast.Type, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.gen.Val, align 16 - %a207 = alloca %S.ast.Node, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a233 = alloca %S.ast.Node, align 16 - %a237 = alloca %S.gen.Val, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca %S.ast.Type, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a304 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - store ptr %p2, ptr %a3 - %t4 = load ptr, ptr %a2 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6319, label %ok6320 -panic6319: - call void @finch_panic(ptr @.str.4027, i64 3462, ptr @.str.4028) - unreachable -ok6320: - %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 %panic6321, label %ok6322 -panic6321: - call void @finch_panic(ptr @.str.4029, i64 3462, ptr @.str.4030) - unreachable -ok6322: - %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 %then6323, label %endif6325 -then6323: - ret i1 true -endif6325: - %t13 = load ptr, ptr %a2 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic6326, label %ok6327 -panic6326: - call void @finch_panic(ptr @.str.4031, i64 3465, ptr @.str.4032) - unreachable -ok6327: - %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.from6328 -logic.from6328: - br i1 %t17, label %logic.rhs6329, label %logic.end6330 -logic.rhs6329: - %t18 = load ptr, ptr %a3 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6331, label %ok6332 -panic6331: - call void @finch_panic(ptr @.str.4033, i64 3465, ptr @.str.4034) - unreachable -ok6332: - %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.rend6333 -logic.rend6333: - br label %logic.end6330 -logic.end6330: - %t23 = phi i1 [ false, %logic.from6328 ], [ %t22, %logic.rend6333 ] - br i1 %t23, label %then6334, label %endif6336 -then6334: - %t24 = load ptr, ptr %a2 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic6337, label %ok6338 -panic6337: - call void @finch_panic(ptr @.str.4035, i64 3468, ptr @.str.4036) - unreachable -ok6338: - %t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3 - %t27 = load i1, ptr %t26 - br label %logic.from6339 -logic.from6339: - br i1 %t27, label %logic.rhs6340, label %logic.end6341 -logic.rhs6340: - %t28 = load ptr, ptr %a3 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic6342, label %ok6343 -panic6342: - call void @finch_panic(ptr @.str.4037, i64 3468, ptr @.str.4038) - unreachable -ok6343: - %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.rend6344 -logic.rend6344: - br label %logic.end6341 -logic.end6341: - %t33 = phi i1 [ false, %logic.from6339 ], [ %t32, %logic.rend6344 ] - br label %logic.from6345 -logic.from6345: - br i1 %t33, label %logic.rhs6346, label %logic.end6347 -logic.rhs6346: - %t34 = load ptr, ptr %a2 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic6348, label %ok6349 -panic6348: - call void @finch_panic(ptr @.str.4039, i64 3468, ptr @.str.4040) - unreachable -ok6349: - %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 %panic6350, label %ok6351 -panic6350: - call void @finch_panic(ptr @.str.4041, i64 3468, ptr @.str.4042) - unreachable -ok6351: - %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 %panic6352, label %ok6353 -panic6352: - call void @finch_panic(ptr @.str.4043, i64 3468, ptr @.str.4044) - unreachable -ok6353: - %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.rend6354 -logic.rend6354: - br label %logic.end6347 -logic.end6347: - %t47 = phi i1 [ false, %logic.from6345 ], [ %t46, %logic.rend6354 ] - br i1 %t47, label %then6355, label %endif6357 -then6355: - %t48 = load ptr, ptr %a2 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic6358, label %ok6359 -panic6358: - call void @finch_panic(ptr @.str.4045, i64 3469, ptr @.str.4046) - unreachable -ok6359: - %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 %panic6360, label %ok6361 -panic6360: - call void @finch_panic(ptr @.str.4047, i64 3469, ptr @.str.4048) - unreachable -ok6361: - %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 %panic6362, label %ok6363 -panic6362: - call void @finch_panic(ptr @.str.4049, i64 3469, ptr @.str.4050) - unreachable -ok6363: - %t67 = load %S.gen.Val, ptr %t65 - store %S.gen.Val %t64, ptr %t65 - store %S.gen.Val %t67, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - ret i1 true -endif6357: - %t69 = load ptr, ptr %a3 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic6364, label %ok6365 -panic6364: - call void @finch_panic(ptr @.str.4051, i64 3472, ptr @.str.4052) - unreachable -ok6365: - %t71 = getelementptr inbounds %S.gen.Val, ptr %t69, i32 0, i32 3 - %t72 = load i1, ptr %t71 - br label %logic.from6366 -logic.from6366: - br i1 %t72, label %logic.rhs6367, label %logic.end6368 -logic.rhs6367: - %t73 = load ptr, ptr %a2 - %t74 = icmp eq ptr %t73, null - br i1 %t74, label %panic6369, label %ok6370 -panic6369: - call void @finch_panic(ptr @.str.4053, i64 3472, ptr @.str.4054) - unreachable -ok6370: - %t75 = getelementptr inbounds %S.gen.Val, ptr %t73, i32 0, i32 3 - %t76 = load i1, ptr %t75 - %t77 = xor i1 %t76, true - br label %logic.rend6371 -logic.rend6371: - br label %logic.end6368 -logic.end6368: - %t78 = phi i1 [ false, %logic.from6366 ], [ %t77, %logic.rend6371 ] - br label %logic.from6372 -logic.from6372: - br i1 %t78, label %logic.rhs6373, label %logic.end6374 -logic.rhs6373: - %t79 = load ptr, ptr %a3 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic6375, label %ok6376 -panic6375: - call void @finch_panic(ptr @.str.4055, i64 3472, ptr @.str.4056) - unreachable -ok6376: - %t81 = getelementptr inbounds %S.gen.Val, ptr %t79, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = load ptr, ptr %a3 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic6377, label %ok6378 -panic6377: - call void @finch_panic(ptr @.str.4057, i64 3472, ptr @.str.4058) - unreachable -ok6378: - %t85 = getelementptr inbounds %S.gen.Val, ptr %t83, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - %t87 = load ptr, ptr %a2 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic6379, label %ok6380 -panic6379: - call void @finch_panic(ptr @.str.4059, i64 3472, ptr @.str.4060) - unreachable -ok6380: - %t89 = getelementptr inbounds %S.gen.Val, ptr %t87, i32 0, i32 1 - %t90 = load %S.ast.Type, ptr %t89 - %t91 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t82, %S.ast.Type %t86, %S.ast.Type %t90) - br label %logic.rend6381 -logic.rend6381: - br label %logic.end6374 -logic.end6374: - %t92 = phi i1 [ false, %logic.from6372 ], [ %t91, %logic.rend6381 ] - br i1 %t92, label %then6382, label %endif6384 -then6382: - %t93 = load ptr, ptr %a3 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic6385, label %ok6386 -panic6385: - call void @finch_panic(ptr @.str.4061, i64 3473, ptr @.str.4062) - unreachable -ok6386: - %t95 = getelementptr inbounds %S.gen.Val, ptr %t93, i32 0, i32 0 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load ptr, ptr %a2 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic6387, label %ok6388 -panic6387: - call void @finch_panic(ptr @.str.4063, i64 3473, ptr @.str.4064) - unreachable -ok6388: - %t103 = getelementptr inbounds %S.gen.Val, ptr %t101, i32 0, i32 1 - %t104 = load %S.ast.Type, ptr %t103 - store %S.ast.Type %t104, ptr %a105 - call void @finch.copy.S_ast_Type(ptr %a106, ptr %a105) - %t107 = load %S.ast.Type, ptr %a106 - %t108 = insertvalue %S.gen.Val %t100, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - %t110 = load ptr, ptr %a3 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic6389, label %ok6390 -panic6389: - call void @finch_panic(ptr @.str.4065, i64 3473, ptr @.str.4066) - unreachable -ok6390: - %t112 = load %S.gen.Val, ptr %t110 - store %S.gen.Val %t109, ptr %t110 - store %S.gen.Val %t112, ptr %a113 - call void @finch.drop.S_gen_Val(ptr %a113) - ret i1 true -endif6384: - %t114 = load ptr, ptr %a2 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic6391, label %ok6392 -panic6391: - call void @finch_panic(ptr @.str.4067, i64 3476, ptr @.str.4068) - unreachable -ok6392: - %t116 = getelementptr inbounds %S.gen.Val, ptr %t114, i32 0, i32 1 - %t117 = load %S.ast.Type, ptr %t116 - %t118 = load ptr, ptr %a3 - %t119 = icmp eq ptr %t118, null - br i1 %t119, label %panic6393, label %ok6394 -panic6393: - call void @finch_panic(ptr @.str.4069, i64 3476, ptr @.str.4070) - unreachable -ok6394: - %t120 = getelementptr inbounds %S.gen.Val, ptr %t118, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.widens(%S.ast.Type %t117, %S.ast.Type %t121) - br i1 %t122, label %then6395, label %endif6397 -then6395: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a2 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic6398, label %ok6399 -panic6398: - call void @finch_panic(ptr @.str.4071, i64 3477, ptr @.str.4072) - unreachable -ok6399: - %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 0 - %t127 = load { ptr, i64, i64 }, ptr %t126 - %t128 = load ptr, ptr %a2 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic6400, label %ok6401 -panic6400: - call void @finch_panic(ptr @.str.4073, i64 3477, ptr @.str.4074) - unreachable -ok6401: - %t130 = getelementptr inbounds %S.gen.Val, ptr %t128, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = load ptr, ptr %a3 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic6402, label %ok6403 -panic6402: - call void @finch_panic(ptr @.str.4075, i64 3477, ptr @.str.4076) - unreachable -ok6403: - %t134 = getelementptr inbounds %S.gen.Val, ptr %t132, i32 0, i32 1 - %t135 = load %S.ast.Type, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t127, %S.ast.Type %t131, %S.ast.Type %t135) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t136, 0 - %t138 = load ptr, ptr %a3 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic6404, label %ok6405 -panic6404: - call void @finch_panic(ptr @.str.4077, i64 3477, ptr @.str.4078) - unreachable -ok6405: - %t140 = getelementptr inbounds %S.gen.Val, ptr %t138, i32 0, i32 1 - %t141 = load %S.ast.Type, ptr %t140 - store %S.ast.Type %t141, ptr %a142 - call void @finch.copy.S_ast_Type(ptr %a143, ptr %a142) - %t144 = load %S.ast.Type, ptr %a143 - %t145 = insertvalue %S.gen.Val %t137, %S.ast.Type %t144, 1 - %t146 = load ptr, ptr %a2 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6406, label %ok6407 -panic6406: - call void @finch_panic(ptr @.str.4079, i64 3477, ptr @.str.4080) - unreachable -ok6407: - %t148 = load %S.gen.Val, ptr %t146 - store %S.gen.Val %t145, ptr %t146 - store %S.gen.Val %t148, ptr %a149 - call void @finch.drop.S_gen_Val(ptr %a149) - ret i1 true -endif6397: - %t150 = load ptr, ptr %a3 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic6408, label %ok6409 -panic6408: - call void @finch_panic(ptr @.str.4081, i64 3480, ptr @.str.4082) - unreachable -ok6409: - %t152 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 1 - %t153 = load %S.ast.Type, ptr %t152 - %t154 = load ptr, ptr %a2 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic6410, label %ok6411 -panic6410: - call void @finch_panic(ptr @.str.4083, i64 3480, ptr @.str.4084) - unreachable -ok6411: - %t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 1 - %t157 = load %S.ast.Type, ptr %t156 - %t158 = call i1 @finch.gen.widens(%S.ast.Type %t153, %S.ast.Type %t157) - br i1 %t158, label %then6412, label %endif6414 -then6412: - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a3 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic6415, label %ok6416 -panic6415: - call void @finch_panic(ptr @.str.4085, i64 3481, ptr @.str.4086) - unreachable -ok6416: - %t162 = getelementptr inbounds %S.gen.Val, ptr %t160, i32 0, i32 0 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = load ptr, ptr %a3 - %t165 = icmp eq ptr %t164, null - br i1 %t165, label %panic6417, label %ok6418 -panic6417: - call void @finch_panic(ptr @.str.4087, i64 3481, ptr @.str.4088) - unreachable -ok6418: - %t166 = getelementptr inbounds %S.gen.Val, ptr %t164, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load ptr, ptr %a2 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic6419, label %ok6420 -panic6419: - call void @finch_panic(ptr @.str.4089, i64 3481, ptr @.str.4090) - unreachable -ok6420: - %t170 = getelementptr inbounds %S.gen.Val, ptr %t168, i32 0, i32 1 - %t171 = load %S.ast.Type, ptr %t170 - %t172 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t159, { ptr, i64, i64 } %t163, %S.ast.Type %t167, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load ptr, ptr %a2 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic6421, label %ok6422 -panic6421: - call void @finch_panic(ptr @.str.4091, i64 3481, ptr @.str.4092) - unreachable -ok6422: - %t176 = getelementptr inbounds %S.gen.Val, ptr %t174, i32 0, i32 1 - %t177 = load %S.ast.Type, ptr %t176 - store %S.ast.Type %t177, ptr %a178 - call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) - %t180 = load %S.ast.Type, ptr %a179 - %t181 = insertvalue %S.gen.Val %t173, %S.ast.Type %t180, 1 - %t182 = load ptr, ptr %a3 - %t183 = icmp eq ptr %t182, null - br i1 %t183, label %panic6423, label %ok6424 -panic6423: - call void @finch_panic(ptr @.str.4093, i64 3481, ptr @.str.4094) - unreachable -ok6424: - %t184 = load %S.gen.Val, ptr %t182 - store %S.gen.Val %t181, ptr %t182 - store %S.gen.Val %t184, ptr %a185 - call void @finch.drop.S_gen_Val(ptr %a185) - ret i1 true -endif6414: - ret i1 false -endif6336: - %t186 = load ptr, ptr %a2 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic6425, label %ok6426 -panic6425: - call void @finch_panic(ptr @.str.4095, i64 3486, ptr @.str.4096) - unreachable -ok6426: - %t188 = getelementptr inbounds %S.gen.Val, ptr %t186, i32 0, i32 1 - %t189 = load %S.ast.Type, ptr %t188 - %t190 = call i1 @finch.gen.isInt(%S.ast.Type %t189) - br label %logic.from6427 -logic.from6427: - br i1 %t190, label %logic.rhs6428, label %logic.end6429 -logic.rhs6428: - %t191 = load ptr, ptr %a3 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic6430, label %ok6431 -panic6430: - call void @finch_panic(ptr @.str.4097, i64 3486, ptr @.str.4098) - unreachable -ok6431: - %t193 = getelementptr inbounds %S.gen.Val, ptr %t191, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br label %logic.rend6432 -logic.rend6432: - br label %logic.end6429 -logic.end6429: - %t196 = phi i1 [ false, %logic.from6427 ], [ %t195, %logic.rend6432 ] - br i1 %t196, label %then6433, label %endif6435 -then6433: - %t197 = load ptr, ptr %a1 - %t198 = load ptr, ptr %a2 - %t199 = icmp eq ptr %t198, null - br i1 %t199, label %panic6436, label %ok6437 -panic6436: - call void @finch_panic(ptr @.str.4099, i64 3487, ptr @.str.4100) - unreachable -ok6437: - %t200 = load %S.gen.Val, ptr %t198 - %t201 = load ptr, ptr %a3 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic6438, label %ok6439 -panic6438: - call void @finch_panic(ptr @.str.4101, i64 3487, ptr @.str.4102) - unreachable -ok6439: - %t203 = getelementptr inbounds %S.gen.Val, ptr %t201, i32 0, i32 1 - %t204 = load %S.ast.Type, ptr %t203 - %t205 = call %S.ast.Node @finch.gen.Node0() - %t206 = call %S.gen.Val @finch.gen.coerce(ptr %t197, %S.gen.Val %t200, %S.ast.Type %t204, %S.ast.Node %t205, { ptr, i64, i64 } { ptr @.str.4103, i64 0, i64 0 }) - store %S.ast.Node %t205, ptr %a207 - call void @finch.drop.S_ast_Node(ptr %a207) - %t208 = load ptr, ptr %a2 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic6440, label %ok6441 -panic6440: - call void @finch_panic(ptr @.str.4104, i64 3487, ptr @.str.4105) - unreachable -ok6441: - %t210 = load %S.gen.Val, ptr %t208 - store %S.gen.Val %t206, ptr %t208 - store %S.gen.Val %t210, ptr %a211 - call void @finch.drop.S_gen_Val(ptr %a211) - ret i1 true -endif6435: - %t212 = load ptr, ptr %a2 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic6442, label %ok6443 -panic6442: - call void @finch_panic(ptr @.str.4106, i64 3490, ptr @.str.4107) - unreachable -ok6443: - %t214 = getelementptr inbounds %S.gen.Val, ptr %t212, i32 0, i32 1 - %t215 = load %S.ast.Type, ptr %t214 - %t216 = call i1 @finch.gen.isFloat(%S.ast.Type %t215) - br label %logic.from6444 -logic.from6444: - br i1 %t216, label %logic.rhs6445, label %logic.end6446 -logic.rhs6445: - %t217 = load ptr, ptr %a3 - %t218 = icmp eq ptr %t217, null - br i1 %t218, label %panic6447, label %ok6448 -panic6447: - call void @finch_panic(ptr @.str.4108, i64 3490, ptr @.str.4109) - unreachable -ok6448: - %t219 = getelementptr inbounds %S.gen.Val, ptr %t217, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %t219 - %t221 = call i1 @finch.gen.isInt(%S.ast.Type %t220) - br label %logic.rend6449 -logic.rend6449: - br label %logic.end6446 -logic.end6446: - %t222 = phi i1 [ false, %logic.from6444 ], [ %t221, %logic.rend6449 ] - br i1 %t222, label %then6450, label %endif6452 -then6450: - %t223 = load ptr, ptr %a1 - %t224 = load ptr, ptr %a3 - %t225 = icmp eq ptr %t224, null - br i1 %t225, label %panic6453, label %ok6454 -panic6453: - call void @finch_panic(ptr @.str.4110, i64 3491, ptr @.str.4111) - unreachable -ok6454: - %t226 = load %S.gen.Val, ptr %t224 - %t227 = load ptr, ptr %a2 - %t228 = icmp eq ptr %t227, null - br i1 %t228, label %panic6455, label %ok6456 -panic6455: - call void @finch_panic(ptr @.str.4112, i64 3491, ptr @.str.4113) - unreachable -ok6456: - %t229 = getelementptr inbounds %S.gen.Val, ptr %t227, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call %S.ast.Node @finch.gen.Node0() - %t232 = call %S.gen.Val @finch.gen.coerce(ptr %t223, %S.gen.Val %t226, %S.ast.Type %t230, %S.ast.Node %t231, { ptr, i64, i64 } { ptr @.str.4114, i64 0, i64 0 }) - store %S.ast.Node %t231, ptr %a233 - call void @finch.drop.S_ast_Node(ptr %a233) - %t234 = load ptr, ptr %a3 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic6457, label %ok6458 -panic6457: - call void @finch_panic(ptr @.str.4115, i64 3491, ptr @.str.4116) - unreachable -ok6458: - %t236 = load %S.gen.Val, ptr %t234 - store %S.gen.Val %t232, ptr %t234 - store %S.gen.Val %t236, ptr %a237 - call void @finch.drop.S_gen_Val(ptr %a237) - ret i1 true -endif6452: - %t238 = load ptr, ptr %a2 - %t239 = icmp eq ptr %t238, null - br i1 %t239, label %panic6459, label %ok6460 -panic6459: - call void @finch_panic(ptr @.str.4117, i64 3494, ptr @.str.4118) - unreachable -ok6460: - %t240 = getelementptr inbounds %S.gen.Val, ptr %t238, i32 0, i32 1 - %t241 = load %S.ast.Type, ptr %t240 - %t242 = call i1 @finch.gen.isFloat(%S.ast.Type %t241) - br label %logic.from6461 -logic.from6461: - br i1 %t242, label %logic.rhs6462, label %logic.end6463 -logic.rhs6462: - %t243 = load ptr, ptr %a3 - %t244 = icmp eq ptr %t243, null - br i1 %t244, label %panic6464, label %ok6465 -panic6464: - call void @finch_panic(ptr @.str.4119, i64 3494, ptr @.str.4120) - unreachable -ok6465: - %t245 = getelementptr inbounds %S.gen.Val, ptr %t243, i32 0, i32 1 - %t246 = load %S.ast.Type, ptr %t245 - %t247 = call i1 @finch.gen.isFloat(%S.ast.Type %t246) - br label %logic.rend6466 -logic.rend6466: - br label %logic.end6463 -logic.end6463: - %t248 = phi i1 [ false, %logic.from6461 ], [ %t247, %logic.rend6466 ] - br i1 %t248, label %then6467, label %endif6469 -then6467: - %t249 = load ptr, ptr %a2 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic6470, label %ok6471 -panic6470: - call void @finch_panic(ptr @.str.4121, i64 3495, ptr @.str.4122) - unreachable -ok6471: - %t251 = getelementptr inbounds %S.gen.Val, ptr %t249, i32 0, i32 1 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4123, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br i1 %t257, label %then6472, label %endif6474 -then6472: - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a2 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic6475, label %ok6476 -panic6475: - call void @finch_panic(ptr @.str.4124, i64 3496, ptr @.str.4125) - unreachable -ok6476: - %t261 = getelementptr inbounds %S.gen.Val, ptr %t259, i32 0, i32 0 - %t262 = load { ptr, i64, i64 }, ptr %t261 - %t263 = load ptr, ptr %a2 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic6477, label %ok6478 -panic6477: - call void @finch_panic(ptr @.str.4126, i64 3496, ptr @.str.4127) - unreachable -ok6478: - %t265 = getelementptr inbounds %S.gen.Val, ptr %t263, i32 0, i32 1 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4128, i64 5, i64 0 }) - %t268 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t258, { ptr, i64, i64 } %t262, %S.ast.Type %t266, %S.ast.Type %t267) - store %S.ast.Type %t267, ptr %a269 - call void @finch.drop.S_ast_Type(ptr %a269) - %t270 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4129, i64 5, i64 0 }) - %t272 = insertvalue %S.gen.Val %t270, %S.ast.Type %t271, 1 - %t273 = load ptr, ptr %a2 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic6479, label %ok6480 -panic6479: - call void @finch_panic(ptr @.str.4130, i64 3496, ptr @.str.4131) - unreachable -ok6480: - %t275 = load %S.gen.Val, ptr %t273 - store %S.gen.Val %t272, ptr %t273 - store %S.gen.Val %t275, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - br label %endif6474 -endif6474: - %t277 = load ptr, ptr %a3 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic6481, label %ok6482 -panic6481: - call void @finch_panic(ptr @.str.4132, i64 3498, ptr @.str.4133) - unreachable -ok6482: - %t279 = getelementptr inbounds %S.gen.Val, ptr %t277, i32 0, i32 1 - %t280 = getelementptr inbounds %S.ast.Type, ptr %t279, i32 0, i32 0 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4134, i64 3, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br i1 %t285, label %then6483, label %endif6485 -then6483: - %t286 = load ptr, ptr %a1 - %t287 = load ptr, ptr %a3 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic6486, label %ok6487 -panic6486: - call void @finch_panic(ptr @.str.4135, i64 3499, ptr @.str.4136) - unreachable -ok6487: - %t289 = getelementptr inbounds %S.gen.Val, ptr %t287, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - %t291 = load ptr, ptr %a3 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic6488, label %ok6489 -panic6488: - call void @finch_panic(ptr @.str.4137, i64 3499, ptr @.str.4138) - unreachable -ok6489: - %t293 = getelementptr inbounds %S.gen.Val, ptr %t291, i32 0, i32 1 - %t294 = load %S.ast.Type, ptr %t293 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4139, i64 5, i64 0 }) - %t296 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t286, { ptr, i64, i64 } %t290, %S.ast.Type %t294, %S.ast.Type %t295) - store %S.ast.Type %t295, ptr %a297 - call void @finch.drop.S_ast_Type(ptr %a297) - %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t296, 0 - %t299 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4140, i64 5, i64 0 }) - %t300 = insertvalue %S.gen.Val %t298, %S.ast.Type %t299, 1 - %t301 = load ptr, ptr %a3 - %t302 = icmp eq ptr %t301, null - br i1 %t302, label %panic6490, label %ok6491 -panic6490: - call void @finch_panic(ptr @.str.4141, i64 3499, ptr @.str.4142) - unreachable -ok6491: - %t303 = load %S.gen.Val, ptr %t301 - store %S.gen.Val %t300, ptr %t301 - store %S.gen.Val %t303, ptr %a304 - call void @finch.drop.S_gen_Val(ptr %a304) - br label %endif6485 -endif6485: - ret i1 true -endif6469: - 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca i64, align 16 - %a155 = alloca i64, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca i64, align 16 - %a313 = alloca i64, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca %S.ast.Type, align 16 - %a384 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4143, 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.from6492 -logic.from6492: - br i1 %t16, label %logic.rhs6493, label %logic.end6494 -logic.rhs6493: - %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.4144, 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.rend6495 -logic.rend6495: - br label %logic.end6494 -logic.end6494: - %t24 = phi i1 [ false, %logic.from6492 ], [ %t23, %logic.rend6495 ] - br label %logic.from6496 -logic.from6496: - br i1 %t24, label %logic.rhs6497, label %logic.end6498 -logic.rhs6497: - %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.4145, 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.rend6499 -logic.rend6499: - br label %logic.end6498 -logic.end6498: - %t32 = phi i1 [ false, %logic.from6496 ], [ %t31, %logic.rend6499 ] - br i1 %t32, label %then6500, label %endif6502 -then6500: - %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.4146, 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.4147, 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.4148, i64 6, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a6 - %t49 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t47, %S.gen.Val %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.4149, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load ptr, ptr %a1 - %t62 = load %S.gen.Val, ptr %a10 - %t63 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t61, %S.gen.Val %t62) - store { ptr, i64, i64 } %t60, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t60, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4150, i64 1, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t74) - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load ptr, ptr %a1 - %t77 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t76, %S.gen.Val %t77) - %t78 = load ptr, ptr %a1 - %t79 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t78, %S.gen.Val %t79) - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a35 - %t82 = call { ptr, i64, i64 } @finch.gen.load(ptr %t80, { ptr, i64, i64 } { ptr @.str.4151, i64 17, i64 0 }, { ptr, i64, i64 } %t81) - %t83 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t82, 0 - %t84 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4152, i64 3, i64 0 }) - %t85 = insertvalue %S.gen.Val %t83, %S.ast.Type %t84, 1 - %t86 = insertvalue %S.gen.Val %t85, i1 true, 2 - call void @finch_str_drop(ptr %a35) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t86 -endif6502: - %t87 = load ptr, ptr %a1 - %t88 = call i1 @finch.gen.unify(ptr %t87, ptr %a6, ptr %a10) - %t89 = xor i1 %t88, true - br i1 %t89, label %then6503, label %endif6505 -then6503: - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a2 - %t92 = load %S.gen.Val, ptr %a6 - %t93 = load %S.gen.Val, ptr %a10 - %t94 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t90, { ptr, i64, i64 } %t91, %S.gen.Val %t92, %S.gen.Val %t93, %S.ast.Node %t94) - br label %endif6505 -endif6505: - %t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = call i1 @finch.gen.isInt(%S.ast.Type %t96) - br i1 %t97, label %then6506, label %endif6508 -then6506: - %t98 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t99 = call ptr @finch_alloc(i64 %t98) - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 0 - store { ptr, i64, i64 } { ptr @.str.4153, i64 1, i64 0 }, ptr %t100 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 1 - store { ptr, i64, i64 } { ptr @.str.4154, i64 1, i64 0 }, ptr %t101 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 2 - store { ptr, i64, i64 } { ptr @.str.4155, i64 1, i64 0 }, ptr %t102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 3 - store { ptr, i64, i64 } { ptr @.str.4156, i64 1, i64 0 }, ptr %t103 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 4 - store { ptr, i64, i64 } { ptr @.str.4157, i64 1, i64 0 }, ptr %t104 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 5 - store { ptr, i64, i64 } { ptr @.str.4158, i64 1, i64 0 }, ptr %t105 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 6 - store { ptr, i64, i64 } { ptr @.str.4159, i64 1, i64 0 }, ptr %t106 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 7 - store { ptr, i64, i64 } { ptr @.str.4160, i64 1, i64 0 }, ptr %t107 - %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 8 - store { ptr, i64, i64 } { ptr @.str.4161, i64 2, i64 0 }, ptr %t108 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 9 - store { ptr, i64, i64 } { ptr @.str.4162, i64 2, i64 0 }, ptr %t109 - %t110 = insertvalue { ptr, i64, i64 } undef, ptr %t99, 0 - %t111 = insertvalue { ptr, i64, i64 } %t110, i64 10, 1 - %t112 = insertvalue { ptr, i64, i64 } %t111, i64 10, 2 - store { ptr, i64, i64 } %t112, ptr %a113 - %t114 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t115 = call ptr @finch_alloc(i64 %t114) - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 0 - store { ptr, i64, i64 } { ptr @.str.4163, i64 3, i64 0 }, ptr %t116 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 1 - store { ptr, i64, i64 } { ptr @.str.4164, i64 3, i64 0 }, ptr %t117 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 2 - store { ptr, i64, i64 } { ptr @.str.4165, i64 3, i64 0 }, ptr %t118 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 3 - store { ptr, i64, i64 } { ptr @.str.4166, i64 4, i64 0 }, ptr %t119 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 4 - store { ptr, i64, i64 } { ptr @.str.4167, i64 4, i64 0 }, ptr %t120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 5 - store { ptr, i64, i64 } { ptr @.str.4168, i64 3, i64 0 }, ptr %t121 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 6 - store { ptr, i64, i64 } { ptr @.str.4169, i64 2, i64 0 }, ptr %t122 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 7 - store { ptr, i64, i64 } { ptr @.str.4170, i64 3, i64 0 }, ptr %t123 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 8 - store { ptr, i64, i64 } { ptr @.str.4171, i64 3, i64 0 }, ptr %t124 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 9 - store { ptr, i64, i64 } { ptr @.str.4172, i64 4, i64 0 }, ptr %t125 - %t126 = insertvalue { ptr, i64, i64 } undef, ptr %t115, 0 - %t127 = insertvalue { ptr, i64, i64 } %t126, i64 10, 1 - %t128 = insertvalue { ptr, i64, i64 } %t127, i64 10, 2 - store { ptr, i64, i64 } %t128, ptr %a129 - %t130 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t131) - br i1 %t132, label %then6509, label %endif6511 -then6509: - %t133 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t134 = call ptr @finch_alloc(i64 %t133) - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 0 - store { ptr, i64, i64 } { ptr @.str.4173, i64 3, i64 0 }, ptr %t135 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 1 - store { ptr, i64, i64 } { ptr @.str.4174, i64 3, i64 0 }, ptr %t136 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 2 - store { ptr, i64, i64 } { ptr @.str.4175, i64 3, i64 0 }, ptr %t137 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 3 - store { ptr, i64, i64 } { ptr @.str.4176, i64 4, i64 0 }, ptr %t138 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 4 - store { ptr, i64, i64 } { ptr @.str.4177, i64 4, i64 0 }, ptr %t139 - %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 5 - store { ptr, i64, i64 } { ptr @.str.4178, i64 3, i64 0 }, ptr %t140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 6 - store { ptr, i64, i64 } { ptr @.str.4179, i64 2, i64 0 }, ptr %t141 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 7 - store { ptr, i64, i64 } { ptr @.str.4180, i64 3, i64 0 }, ptr %t142 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 8 - store { ptr, i64, i64 } { ptr @.str.4181, i64 3, i64 0 }, ptr %t143 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 9 - store { ptr, i64, i64 } { ptr @.str.4182, i64 4, i64 0 }, ptr %t144 - %t145 = insertvalue { ptr, i64, i64 } undef, ptr %t134, 0 - %t146 = insertvalue { ptr, i64, i64 } %t145, i64 10, 1 - %t147 = insertvalue { ptr, i64, i64 } %t146, i64 10, 2 - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t147, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_str(ptr %a149) - br label %endif6511 -endif6511: - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a152 - %t153 = load i64, ptr %t150 - %t154 = load ptr, ptr %a113 - store i64 0, ptr %a155 - br label %find.cond6512 -find.cond6512: - %t156 = load i64, ptr %a155 - %t157 = icmp slt i64 %t156, %t153 - br i1 %t157, label %find.body6513, label %find.end6516 -find.body6513: - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i64 %t156 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } %t151, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br i1 %t163, label %find.hit6514, label %find.next6515 -find.hit6514: - store i64 %t156, ptr %a152 - br label %find.end6516 -find.next6515: - %t164 = add i64 %t156, 1 - store i64 %t164, ptr %a155 - br label %find.cond6512 -find.end6516: - %t165 = load i64, ptr %a152 - store i64 %t165, ptr %a166 - %t167 = load i64, ptr %a166 - %t168 = icmp slt i64 %t167, 0 - br i1 %t168, label %then6517, label %endif6519 -then6517: - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a2 - %t171 = load %S.gen.Val, ptr %a6 - %t172 = load %S.gen.Val, ptr %a10 - %t173 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t169, { ptr, i64, i64 } %t170, %S.gen.Val %t171, %S.gen.Val %t172, %S.ast.Node %t173) - br label %endif6519 -endif6519: - %t174 = load ptr, ptr %a1 - %t175 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t174, %S.ast.Type %t176) - store { ptr, i64, i64 } %t177, ptr %a178 - %t179 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4183, 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.from6520 -logic.from6520: - br i1 %t183, label %logic.end6522, label %logic.rhs6521 -logic.rhs6521: - %t184 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.4184, i64 1, i64 0 }, ptr %a186 - %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) - %t188 = icmp ne i32 %t187, 0 - br label %logic.rend6523 -logic.rend6523: - br label %logic.end6522 -logic.end6522: - %t189 = phi i1 [ true, %logic.from6520 ], [ %t188, %logic.rend6523 ] - br i1 %t189, label %then6524, label %endif6526 -then6524: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t191 = load i1, ptr %t190 - br label %logic.from6527 -logic.from6527: - br i1 %t191, label %logic.rhs6528, label %logic.end6529 -logic.rhs6528: - %t192 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4185, i64 1, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br label %logic.rend6530 -logic.rend6530: - br label %logic.end6529 -logic.end6529: - %t198 = phi i1 [ false, %logic.from6527 ], [ %t197, %logic.rend6530 ] - br i1 %t198, label %then6531, label %endif6533 -then6531: - %t199 = load ptr, ptr %a1 - %t200 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t199, %S.ast.Node %t200, { ptr, i64, i64 } { ptr @.str.4186, i64 16, i64 0 }) - br label %endif6533 -endif6533: - %t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t202 = load i1, ptr %t201 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6534, label %endif6536 -then6534: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4187, i64 8, i64 0 }, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a207 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.4188, i64 1, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4189, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = call { ptr, i64, i64 } @finch.gen.op(ptr %t205, { ptr, i64, i64 } %t227) - store { ptr, i64, i64 } %t227, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load %S.ast.Node, ptr %a11 - call void @finch.gen.panicIf(ptr %t204, { ptr, i64, i64 } %t228, { ptr, i64, i64 } { ptr @.str.4190, i64 16, i64 0 }, %S.ast.Node %t230) - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_drop(ptr %a231) - br label %endif6536 -endif6536: - br label %endif6526 -endif6526: - %t232 = load ptr, ptr %a1 - %t233 = load i64, ptr %a166 - %t234 = load { ptr, i64, i64 }, ptr %a129 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range6537, label %inrange6538 -range6537: - call void @finch_panic_index(ptr @.str.4191, i64 3540, i64 %t233, i64 %t235) - unreachable -inrange6538: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t233 - %t239 = load { ptr, i64, i64 }, ptr %t238 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.4192, i64 1, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4193, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.4194, i64 2, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.op(ptr %t232, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t274, 0 - %t277 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = insertvalue %S.gen.Val %t276, %S.ast.Type %t281, 1 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.arr_str(ptr %a129) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t282 -endif6508: - %t283 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t284 = load %S.ast.Type, ptr %t283 - %t285 = call i1 @finch.gen.isFloat(%S.ast.Type %t284) - br i1 %t285, label %then6539, label %endif6541 -then6539: - %t286 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t287 = call ptr @finch_alloc(i64 %t286) - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 0 - store { ptr, i64, i64 } { ptr @.str.4195, i64 1, i64 0 }, ptr %t288 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 1 - store { ptr, i64, i64 } { ptr @.str.4196, i64 1, i64 0 }, ptr %t289 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 2 - store { ptr, i64, i64 } { ptr @.str.4197, i64 1, i64 0 }, ptr %t290 - %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 3 - store { ptr, i64, i64 } { ptr @.str.4198, i64 1, i64 0 }, ptr %t291 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 4 - store { ptr, i64, i64 } { ptr @.str.4199, i64 1, i64 0 }, ptr %t292 - %t293 = insertvalue { ptr, i64, i64 } undef, ptr %t287, 0 - %t294 = insertvalue { ptr, i64, i64 } %t293, i64 5, 1 - %t295 = insertvalue { ptr, i64, i64 } %t294, i64 5, 2 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t298 = call ptr @finch_alloc(i64 %t297) - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 0 - store { ptr, i64, i64 } { ptr @.str.4200, i64 4, i64 0 }, ptr %t299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 1 - store { ptr, i64, i64 } { ptr @.str.4201, i64 4, i64 0 }, ptr %t300 - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 2 - store { ptr, i64, i64 } { ptr @.str.4202, i64 4, i64 0 }, ptr %t301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 3 - store { ptr, i64, i64 } { ptr @.str.4203, i64 4, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 4 - store { ptr, i64, i64 } { ptr @.str.4204, i64 4, i64 0 }, ptr %t303 - %t304 = insertvalue { ptr, i64, i64 } undef, ptr %t298, 0 - %t305 = insertvalue { ptr, i64, i64 } %t304, i64 5, 1 - %t306 = insertvalue { ptr, i64, i64 } %t305, i64 5, 2 - store { ptr, i64, i64 } %t306, ptr %a307 - %t308 = getelementptr inbounds { ptr, i64, i64 }, ptr %a296, i32 0, i32 1 - %t309 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a310 - %t311 = load i64, ptr %t308 - %t312 = load ptr, ptr %a296 - store i64 0, ptr %a313 - br label %find.cond6542 -find.cond6542: - %t314 = load i64, ptr %a313 - %t315 = icmp slt i64 %t314, %t311 - br i1 %t315, label %find.body6543, label %find.end6546 -find.body6543: - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t314 - %t317 = load { ptr, i64, i64 }, ptr %t316 - store { ptr, i64, i64 } %t317, ptr %a318 - store { ptr, i64, i64 } %t309, ptr %a319 - %t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319) - %t321 = icmp ne i32 %t320, 0 - br i1 %t321, label %find.hit6544, label %find.next6545 -find.hit6544: - store i64 %t314, ptr %a310 - br label %find.end6546 -find.next6545: - %t322 = add i64 %t314, 1 - store i64 %t322, ptr %a313 - br label %find.cond6542 -find.end6546: - %t323 = load i64, ptr %a310 - store i64 %t323, ptr %a324 - %t325 = load i64, ptr %a324 - %t326 = icmp slt i64 %t325, 0 - br i1 %t326, label %then6547, label %endif6549 -then6547: - %t327 = load ptr, ptr %a1 - %t328 = load { ptr, i64, i64 }, ptr %a2 - %t329 = load %S.gen.Val, ptr %a6 - %t330 = load %S.gen.Val, ptr %a10 - %t331 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t327, { ptr, i64, i64 } %t328, %S.gen.Val %t329, %S.gen.Val %t330, %S.ast.Node %t331) - br label %endif6549 -endif6549: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %a307 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range6550, label %inrange6551 -range6550: - call void @finch_panic_index(ptr @.str.4205, i64 3549, i64 %t333, i64 %t335) - unreachable -inrange6551: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t333 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a341 - store { ptr, i64, i64 } { ptr @.str.4206, i64 1, i64 0 }, ptr %a342 - call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a340 - %t344 = load ptr, ptr %a1 - %t345 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t344, %S.ast.Type %t346) - store { ptr, i64, i64 } %t343, ptr %a349 - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350) - store { ptr, i64, i64 } %t343, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t347, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t353, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.4207, i64 1, i64 0 }, ptr %a356 - call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) - store { ptr, i64, i64 } %t353, ptr %a357 - call void @finch_str_drop(ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t360 = load { ptr, i64, i64 }, ptr %t359 - store { ptr, i64, i64 } %t358, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t358, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4208, i64 2, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - %t378 = call { ptr, i64, i64 } @finch.gen.op(ptr %t332, { ptr, i64, i64 } %t377) - store { ptr, i64, i64 } %t377, ptr %a379 - call void @finch_str_drop(ptr %a379) - %t380 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t378, 0 - %t381 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t382 = load %S.ast.Type, ptr %t381 - store %S.ast.Type %t382, ptr %a383 - call void @finch.copy.S_ast_Type(ptr %a384, ptr %a383) - %t385 = load %S.ast.Type, ptr %a384 - %t386 = insertvalue %S.gen.Val %t380, %S.ast.Type %t385, 1 - call void @finch.drop.arr_str(ptr %a307) - call void @finch.drop.arr_str(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t386 -endif6541: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a2 - %t389 = load %S.gen.Val, ptr %a6 - %t390 = load %S.gen.Val, ptr %a10 - %t391 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t387, { ptr, i64, i64 } %t388, %S.gen.Val %t389, %S.gen.Val %t390, %S.ast.Node %t391) - %t392 = load %S.gen.Val, ptr %a6 - call void @finch.drop.S_gen_Val(ptr %a10) - ret %S.gen.Val %t392 -} - -define internal %S.gen.Val @finch.gen.compare(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %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 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca i64, align 16 - %a330 = alloca i64, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4209, 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.from6552 -logic.from6552: - br i1 %t16, label %logic.end6554, label %logic.rhs6553 -logic.rhs6553: - %t17 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4210, 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.rend6555 -logic.rend6555: - br label %logic.end6554 -logic.end6554: - %t22 = phi i1 [ true, %logic.from6552 ], [ %t21, %logic.rend6555 ] - 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.4211, 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.from6556 -logic.from6556: - br i1 %t30, label %logic.end6558, label %logic.rhs6557 -logic.rhs6557: - %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.4212, 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.rend6559 -logic.rend6559: - br label %logic.end6558 -logic.end6558: - %t38 = phi i1 [ true, %logic.from6556 ], [ %t37, %logic.rend6559 ] - br label %logic.from6560 -logic.from6560: - br i1 %t38, label %logic.end6562, label %logic.rhs6561 -logic.rhs6561: - %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.4213, 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.rend6563 -logic.rend6563: - br label %logic.end6562 -logic.end6562: - %t46 = phi i1 [ true, %logic.from6560 ], [ %t45, %logic.rend6563 ] - br label %logic.from6564 -logic.from6564: - br i1 %t46, label %logic.end6566, label %logic.rhs6565 -logic.rhs6565: - %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.4214, 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.rend6567 -logic.rend6567: - br label %logic.end6566 -logic.end6566: - %t54 = phi i1 [ true, %logic.from6564 ], [ %t53, %logic.rend6567 ] - br i1 %t54, label %then6568, label %endif6570 -then6568: - %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.4215, 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.from6571 -logic.from6571: - br i1 %t61, label %logic.end6573, label %logic.rhs6572 -logic.rhs6572: - %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.4216, 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.rend6574 -logic.rend6574: - br label %logic.end6573 -logic.end6573: - %t69 = phi i1 [ true, %logic.from6571 ], [ %t68, %logic.rend6574 ] - br i1 %t69, label %then6575, label %endif6577 -then6575: - %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.4217, i64 59, i64 0 }) - br label %endif6577 -endif6577: - %t72 = load i1, ptr %a23 - %t73 = xor i1 %t72, true - br i1 %t73, label %then6578, label %endif6580 -then6578: - %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 %endif6580 -endif6580: - store { ptr, i64, i64 } { ptr @.str.4218, 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.4219, 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 %then6581, label %endif6583 -then6581: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4220, i64 2, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6583 -endif6583: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4221, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4222, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4223, i64 2, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t109, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t109, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t117, 0 - %t120 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4224, i64 4, i64 0 }) - %t121 = insertvalue %S.gen.Val %t119, %S.ast.Type %t120, 1 - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t121 -endif6570: - %t122 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i32 0, i32 0 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.4225, 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.from6584 -logic.from6584: - br i1 %t128, label %logic.rhs6585, label %logic.end6586 -logic.rhs6585: - %t129 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t130 = getelementptr inbounds %S.ast.Type, ptr %t129, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4226, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6587 -logic.rend6587: - br label %logic.end6586 -logic.end6586: - %t136 = phi i1 [ false, %logic.from6584 ], [ %t135, %logic.rend6587 ] - br i1 %t136, label %then6588, label %endif6590 -then6588: - %t137 = load i1, ptr %a23 - br i1 %t137, label %then6591, label %endif6593 -then6591: - %t138 = load ptr, ptr %a1 - %t139 = load ptr, ptr %a1 - %t140 = load %S.gen.Val, ptr %a6 - %t141 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t139, %S.gen.Val %t140) - store { ptr, i64, i64 } { ptr @.str.4227, i64 27, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4228, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a10 - %t154 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t152, %S.gen.Val %t153) - store { ptr, i64, i64 } %t151, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t151, ptr %a158 - call void @finch_str_drop(ptr %a158) - store { ptr, i64, i64 } %t154, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4229, i64 1, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - store { ptr, i64, i64 } %t160, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load { ptr, i64, i64 }, ptr %a161 - %t166 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t165) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4230, i64 2, i64 0 }, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4231, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then6594, label %endif6596 -then6594: - %t175 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4232, i64 2, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif6596 -endif6596: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4233, i64 5, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4234, i64 5, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t193, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4235, i64 3, i64 0 }, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t177, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - store { ptr, i64, i64 } %t199, ptr %a201 - %t202 = load ptr, ptr %a1 - %t203 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t202, %S.gen.Val %t203) - %t204 = load ptr, ptr %a1 - %t205 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t204, %S.gen.Val %t205) - %t206 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4236, i64 4, i64 0 }) - %t212 = insertvalue %S.gen.Val %t210, %S.ast.Type %t211, 1 - call void @finch_str_drop(ptr %a201) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t212 -endif6593: - %t213 = load ptr, ptr %a1 - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.Val, ptr %a6 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t214, %S.gen.Val %t215) - store { ptr, i64, i64 } { ptr @.str.4237, i64 28, i64 0 }, ptr %a218 - store { ptr, i64, i64 } %t216, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - store { ptr, i64, i64 } %t221, ptr %a223 - store { ptr, i64, i64 } { ptr @.str.4238, i64 6, i64 0 }, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t221, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - %t227 = load ptr, ptr %a1 - %t228 = load %S.gen.Val, ptr %a10 - %t229 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t227, %S.gen.Val %t228) - store { ptr, i64, i64 } %t226, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t226, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t229, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.4239, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - %t241 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a242 - call void @finch_str_drop(ptr %a242) - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load { ptr, i64, i64 }, ptr %a2 - %t246 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t245, i1 true) - store { ptr, i64, i64 } { ptr @.str.4240, i64 5, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4241, i64 5, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t256, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.4242, i64 3, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = call { ptr, i64, i64 } @finch.gen.op(ptr %t244, { ptr, i64, i64 } %t267) - store { ptr, i64, i64 } %t267, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t268, ptr %a270 - %t271 = load ptr, ptr %a1 - %t272 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t271, %S.gen.Val %t272) - %t273 = load ptr, ptr %a1 - %t274 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t273, %S.gen.Val %t274) - %t275 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_copy(ptr %a277, ptr %a276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - %t279 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t278, 0 - %t280 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4243, i64 4, i64 0 }) - %t281 = insertvalue %S.gen.Val %t279, %S.ast.Type %t280, 1 - call void @finch_str_drop(ptr %a270) - call void @finch_str_drop(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t281 -endif6590: - %t282 = load ptr, ptr %a1 - %t283 = call i1 @finch.gen.unify(ptr %t282, ptr %a6, ptr %a10) - %t284 = xor i1 %t283, true - br i1 %t284, label %then6597, label %endif6599 -then6597: - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a2 - %t287 = load %S.gen.Val, ptr %a6 - %t288 = load %S.gen.Val, ptr %a10 - %t289 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t285, { ptr, i64, i64 } %t286, %S.gen.Val %t287, %S.gen.Val %t288, %S.ast.Node %t289) - br label %endif6599 -endif6599: - %t290 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Type, ptr %t290, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_copy(ptr %a294, ptr %a293) - %t295 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t298 = load %S.ast.Type, ptr %t297 - %t299 = call i1 @finch.gen.isFloat(%S.ast.Type %t298) - br i1 %t299, label %then6600, label %endif6602 -then6600: - %t300 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t301 = call ptr @finch_alloc(i64 %t300) - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 0 - store { ptr, i64, i64 } { ptr @.str.4244, i64 2, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 1 - store { ptr, i64, i64 } { ptr @.str.4245, i64 2, i64 0 }, ptr %t303 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 2 - store { ptr, i64, i64 } { ptr @.str.4246, i64 1, i64 0 }, ptr %t304 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 3 - store { ptr, i64, i64 } { ptr @.str.4247, i64 2, i64 0 }, ptr %t305 - %t306 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 4 - store { ptr, i64, i64 } { ptr @.str.4248, i64 1, i64 0 }, ptr %t306 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 5 - store { ptr, i64, i64 } { ptr @.str.4249, i64 2, i64 0 }, ptr %t307 - %t308 = insertvalue { ptr, i64, i64 } undef, ptr %t301, 0 - %t309 = insertvalue { ptr, i64, i64 } %t308, i64 6, 1 - %t310 = insertvalue { ptr, i64, i64 } %t309, i64 6, 2 - store { ptr, i64, i64 } %t310, ptr %a311 - %t312 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t313 = call ptr @finch_alloc(i64 %t312) - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 0 - store { ptr, i64, i64 } { ptr @.str.4250, i64 3, i64 0 }, ptr %t314 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 1 - store { ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 2 - store { ptr, i64, i64 } { ptr @.str.4252, i64 3, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 3 - store { ptr, i64, i64 } { ptr @.str.4253, i64 3, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 4 - store { ptr, i64, i64 } { ptr @.str.4254, i64 3, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 5 - store { ptr, i64, i64 } { ptr @.str.4255, i64 3, i64 0 }, ptr %t319 - %t320 = insertvalue { ptr, i64, i64 } undef, ptr %t313, 0 - %t321 = insertvalue { ptr, i64, i64 } %t320, i64 6, 1 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 2 - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a311, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a327 - %t328 = load i64, ptr %t325 - %t329 = load ptr, ptr %a311 - store i64 0, ptr %a330 - br label %find.cond6603 -find.cond6603: - %t331 = load i64, ptr %a330 - %t332 = icmp slt i64 %t331, %t328 - br i1 %t332, label %find.body6604, label %find.end6607 -find.body6604: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t329, i64 %t331 - %t334 = load { ptr, i64, i64 }, ptr %t333 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } %t326, ptr %a336 - %t337 = call i32 @finch_str_eq(ptr %a335, ptr %a336) - %t338 = icmp ne i32 %t337, 0 - br i1 %t338, label %find.hit6605, label %find.next6606 -find.hit6605: - store i64 %t331, ptr %a327 - br label %find.end6607 -find.next6606: - %t339 = add i64 %t331, 1 - store i64 %t339, ptr %a330 - br label %find.cond6603 -find.end6607: - %t340 = load i64, ptr %a327 - %t341 = load { ptr, i64, i64 }, ptr %a323 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range6608, label %inrange6609 -range6608: - call void @finch_panic_index(ptr @.str.4257, i64 3595, i64 %t340, i64 %t342) - unreachable -inrange6609: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds { ptr, i64, i64 }, ptr %t344, i64 %t340 - %t346 = load { ptr, i64, i64 }, ptr %t345 - store { ptr, i64, i64 } { ptr @.str.4256, i64 5, i64 0 }, ptr %a348 - store { ptr, i64, i64 } %t346, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4258, i64 1, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load ptr, ptr %a1 - %t357 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t358 = load %S.ast.Type, ptr %t357 - %t359 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t356, %S.ast.Type %t358) - store { ptr, i64, i64 } %t355, ptr %a361 - store { ptr, i64, i64 } %t359, ptr %a362 - call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) - store { ptr, i64, i64 } %t355, ptr %a363 - call void @finch_str_drop(ptr %a363) - store { ptr, i64, i64 } %t359, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4259, i64 1, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.4260, i64 2, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t384 = load { ptr, i64, i64 }, ptr %t383 - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load { ptr, i64, i64 }, ptr %a385 - %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t324, { ptr, i64, i64 } %t389) - store { ptr, i64, i64 } %t389, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 - %t393 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4261, i64 4, i64 0 }) - %t394 = insertvalue %S.gen.Val %t392, %S.ast.Type %t393, 1 - call void @finch.drop.arr_str(ptr %a323) - call void @finch.drop.arr_str(ptr %a311) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t394 -endif6602: - %t395 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t395, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4262, i64 4, i64 0 }, ptr %a397 - %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) - %t399 = icmp ne i32 %t398, 0 - br i1 %t399, label %then6610, label %endif6612 -then6610: - %t400 = load i1, ptr %a23 - %t401 = xor i1 %t400, true - br i1 %t401, label %then6613, label %endif6615 -then6613: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4263, i64 115, i64 0 }) - br label %endif6615 -endif6615: - store { ptr, i64, i64 } { ptr @.str.4264, i64 2, i64 0 }, ptr %a404 - %t405 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t405, ptr %a406 - store { ptr, i64, i64 } { ptr @.str.4265, i64 2, i64 0 }, ptr %a407 - %t408 = call i32 @finch_str_eq(ptr %a406, ptr %a407) - %t409 = icmp ne i32 %t408, 0 - br i1 %t409, label %then6616, label %endif6618 -then6616: - %t410 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4266, i64 2, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t410, ptr %a411 - call void @finch_str_drop(ptr %a411) - br label %endif6618 -endif6618: - %t412 = load ptr, ptr %a1 - %t413 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4267, i64 5, i64 0 }, ptr %a415 - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t417, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.4268, i64 5, i64 0 }, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t417, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - %t423 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t424 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t422, ptr %a426 - store { ptr, i64, i64 } %t424, ptr %a427 - call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) - store { ptr, i64, i64 } %t422, ptr %a428 - call void @finch_str_drop(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a425 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.4269, i64 2, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t434, ptr %a438 - store { ptr, i64, i64 } %t436, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t434, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t412, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t442, 0 - %t445 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4270, i64 4, i64 0 }) - %t446 = insertvalue %S.gen.Val %t444, %S.ast.Type %t445, 1 - call void @finch_str_drop(ptr %a404) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t446 -endif6612: - %t447 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.4271, i64 4, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br label %logic.from6619 -logic.from6619: - br i1 %t451, label %logic.rhs6620, label %logic.end6621 -logic.rhs6620: - %t452 = load i1, ptr %a23 - %t453 = xor i1 %t452, true - br label %logic.rend6622 -logic.rend6622: - br label %logic.end6621 -logic.end6621: - %t454 = phi i1 [ false, %logic.from6619 ], [ %t453, %logic.rend6622 ] - br i1 %t454, label %then6623, label %endif6625 -then6623: - %t455 = load ptr, ptr %a1 - %t456 = load { ptr, i64, i64 }, ptr %a2 - %t457 = load %S.gen.Val, ptr %a6 - %t458 = load %S.gen.Val, ptr %a10 - %t459 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t455, { ptr, i64, i64 } %t456, %S.gen.Val %t457, %S.gen.Val %t458, %S.ast.Node %t459) - br label %endif6625 -endif6625: - %t460 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t461 = load %S.ast.Type, ptr %t460 - %t462 = call i1 @finch.gen.isInt(%S.ast.Type %t461) - %t463 = xor i1 %t462, true - br label %logic.from6626 -logic.from6626: - br i1 %t463, label %logic.rhs6627, label %logic.end6628 -logic.rhs6627: - %t464 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t464, ptr %a465 - store { ptr, i64, i64 } { ptr @.str.4272, i64 4, i64 0 }, ptr %a466 - %t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466) - %t468 = icmp eq i32 %t467, 0 - br label %logic.rend6629 -logic.rend6629: - br label %logic.end6628 -logic.end6628: - %t469 = phi i1 [ false, %logic.from6626 ], [ %t468, %logic.rend6629 ] - br label %logic.from6630 -logic.from6630: - br i1 %t469, label %logic.rhs6631, label %logic.end6632 -logic.rhs6631: - %t470 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.4273, i64 4, i64 0 }, ptr %a472 - %t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472) - %t474 = icmp eq i32 %t473, 0 - br label %logic.rend6633 -logic.rend6633: - br label %logic.end6632 -logic.end6632: - %t475 = phi i1 [ false, %logic.from6630 ], [ %t474, %logic.rend6633 ] - br i1 %t475, label %then6634, label %endif6636 -then6634: - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a2 - %t478 = load %S.gen.Val, ptr %a6 - %t479 = load %S.gen.Val, ptr %a10 - %t480 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t476, { ptr, i64, i64 } %t477, %S.gen.Val %t478, %S.gen.Val %t479, %S.ast.Node %t480) - br label %endif6636 -endif6636: - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a2 - %t483 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call i1 @finch.gen.isSigned(%S.ast.Type %t484) - %t486 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t482, i1 %t485) - store { ptr, i64, i64 } { ptr @.str.4274, i64 5, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.4275, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = load ptr, ptr %a1 - %t498 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t499 = load %S.ast.Type, ptr %t498 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t497, %S.ast.Type %t499) - store { ptr, i64, i64 } %t496, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t496, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.4276, i64 1, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t513 = load { ptr, i64, i64 }, ptr %t512 - store { ptr, i64, i64 } %t511, ptr %a515 - store { ptr, i64, i64 } %t513, ptr %a516 - call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516) - store { ptr, i64, i64 } %t511, ptr %a517 - call void @finch_str_drop(ptr %a517) - %t518 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.4277, i64 2, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t523, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t523, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = call { ptr, i64, i64 } @finch.gen.op(ptr %t481, { ptr, i64, i64 } %t530) - store { ptr, i64, i64 } %t530, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t531, 0 - %t534 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4278, i64 4, i64 0 }) - %t535 = insertvalue %S.gen.Val %t533, %S.ast.Type %t534, 1 - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t535 -} - -define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) { -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 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca i64, align 16 - %a46 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t4 = call ptr @finch_alloc(i64 %t3) - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 - store { ptr, i64, i64 } { ptr @.str.4279, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 - store { ptr, i64, i64 } { ptr @.str.4280, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 - store { ptr, i64, i64 } { ptr @.str.4281, i64 1, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3 - store { ptr, i64, i64 } { ptr @.str.4282, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 - store { ptr, i64, i64 } { ptr @.str.4283, i64 1, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 - store { ptr, i64, i64 } { ptr @.str.4284, 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.4285, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 - store { ptr, i64, i64 } { ptr @.str.4286, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 - store { ptr, i64, i64 } { ptr @.str.4287, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3 - store { ptr, i64, i64 } { ptr @.str.4288, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 - store { ptr, i64, i64 } { ptr @.str.4289, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 - store { ptr, i64, i64 } { ptr @.str.4290, 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 %then6637, label %endif6639 -then6637: - %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.4291, i64 2, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1 - store { ptr, i64, i64 } { ptr @.str.4292, i64 2, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 - store { ptr, i64, i64 } { ptr @.str.4293, i64 3, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 - store { ptr, i64, i64 } { ptr @.str.4294, i64 3, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4 - store { ptr, i64, i64 } { ptr @.str.4295, i64 3, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 - store { ptr, i64, i64 } { ptr @.str.4296, i64 3, i64 0 }, ptr %t35 - %t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0 - %t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1 - %t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2 - %t39 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t38, ptr %a26 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch.drop.arr_str(ptr %a40) - br label %endif6639 -endif6639: - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %a1 - store i64 -1, ptr %a43 - %t44 = load i64, ptr %t41 - %t45 = load ptr, ptr %a14 - store i64 0, ptr %a46 - br label %find.cond6640 -find.cond6640: - %t47 = load i64, ptr %a46 - %t48 = icmp slt i64 %t47, %t44 - br i1 %t48, label %find.body6641, label %find.end6644 -find.body6641: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t47 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } %t42, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %find.hit6642, label %find.next6643 -find.hit6642: - store i64 %t47, ptr %a43 - br label %find.end6644 -find.next6643: - %t55 = add i64 %t47, 1 - store i64 %t55, ptr %a46 - br label %find.cond6640 -find.end6644: - %t56 = load i64, ptr %a43 - %t57 = load { ptr, i64, i64 }, ptr %a26 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 %t56, %t58 - br i1 %t59, label %range6645, label %inrange6646 -range6645: - call void @finch_panic_index(ptr @.str.4297, i64 3622, i64 %t56, i64 %t58) - unreachable -inrange6646: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i64 %t56 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.drop.arr_str(ptr %a26) - call void @finch.drop.arr_str(ptr %a14) - ret { ptr, i64, i64 } %t65 -} - -define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca %S.gen.Val, align 16 - %a151 = alloca i64, align 16 - %a163 = alloca %S.gen.Val, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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.4298, 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.from6647 -logic.from6647: - br i1 %t13, label %logic.end6649, label %logic.rhs6648 -logic.rhs6648: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.4299, 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.rend6650 -logic.rend6650: - br label %logic.end6649 -logic.end6649: - %t19 = phi i1 [ true, %logic.from6647 ], [ %t18, %logic.rend6650 ] - br i1 %t19, label %then6651, label %endif6653 -then6651: - %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 %range6654, label %inrange6655 -range6654: - call void @finch_panic_index(ptr @.str.4300, i64 3628, i64 0, i64 %t23) - unreachable -inrange6655: - %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.4301, 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.4302, 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.4303, 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.4304, 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 %then6656, label %else6657 -then6656: - %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 %endif6658 -else6657: - %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 %endif6658 -endif6658: - %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 %range6659, label %inrange6660 -range6659: - call void @finch_panic_index(ptr @.str.4305, i64 3640, i64 1, i64 %t61) - unreachable -inrange6660: - %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.4306, 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.4307, 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.4308, 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 %then6661, label %endif6663 -then6661: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4309, i64 5, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6663 -endif6663: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4310, i64 9, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4311, i64 3, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.4312, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4313, i64 3, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4314, i64 2, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t131, 0 - %t134 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }) - %t135 = insertvalue %S.gen.Val %t133, %S.ast.Type %t134, 1 - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a38) - call void @finch_str_drop(ptr %a35) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a29) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t135 -endif6653: - %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 0, %t139 - br i1 %t140, label %range6664, label %inrange6665 -range6664: - call void @finch_panic_index(ptr @.str.4316, i64 3652, i64 0, i64 %t139) - unreachable -inrange6665: - %t141 = extractvalue { ptr, i64, i64 } %t138, 0 - %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 0 - %t143 = load %S.ast.Node, ptr %t142 - %t144 = call %S.gen.Val @finch.gen.expr(ptr %t136, %S.ast.Node %t143) - store %S.gen.Val %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6666, label %ok6667 -panic6666: - call void @finch_panic(ptr @.str.4317, i64 3653, ptr @.str.4318) - unreachable -ok6667: - %t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 11 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i32 0, i32 1 - %t150 = load i64, ptr %t149 - store i64 %t150, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a145 - call void @finch.gen.hold(ptr %t152, %S.gen.Val %t153) - %t154 = load ptr, ptr %a1 - %t155 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t156 = load { ptr, i64, i64 }, ptr %t155 - %t157 = extractvalue { ptr, i64, i64 } %t156, 1 - %t158 = icmp uge i64 1, %t157 - br i1 %t158, label %range6668, label %inrange6669 -range6668: - call void @finch_panic_index(ptr @.str.4319, i64 3655, i64 1, i64 %t157) - unreachable -inrange6669: - %t159 = extractvalue { ptr, i64, i64 } %t156, 0 - %t160 = getelementptr inbounds %S.ast.Node, ptr %t159, i64 1 - %t161 = load %S.ast.Node, ptr %t160 - %t162 = call %S.gen.Val @finch.gen.expr(ptr %t154, %S.ast.Node %t161) - store %S.gen.Val %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = load i64, ptr %a151 - call void @finch.gen.heldEnd(ptr %t164, i64 %t165) - %t166 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4320, i64 2, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from6670 -logic.from6670: - br i1 %t170, label %logic.end6672, label %logic.rhs6671 -logic.rhs6671: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4321, i64 2, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend6673 -logic.rend6673: - br label %logic.end6672 -logic.end6672: - %t176 = phi i1 [ true, %logic.from6670 ], [ %t175, %logic.rend6673 ] - br label %logic.from6674 -logic.from6674: - br i1 %t176, label %logic.end6676, label %logic.rhs6675 -logic.rhs6675: - %t177 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4322, i64 1, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend6677 -logic.rend6677: - br label %logic.end6676 -logic.end6676: - %t182 = phi i1 [ true, %logic.from6674 ], [ %t181, %logic.rend6677 ] - br label %logic.from6678 -logic.from6678: - br i1 %t182, label %logic.end6680, label %logic.rhs6679 -logic.rhs6679: - %t183 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4323, i64 2, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend6681 -logic.rend6681: - br label %logic.end6680 -logic.end6680: - %t188 = phi i1 [ true, %logic.from6678 ], [ %t187, %logic.rend6681 ] - br label %logic.from6682 -logic.from6682: - br i1 %t188, label %logic.end6684, label %logic.rhs6683 -logic.rhs6683: - %t189 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.4324, i64 1, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br label %logic.rend6685 -logic.rend6685: - br label %logic.end6684 -logic.end6684: - %t194 = phi i1 [ true, %logic.from6682 ], [ %t193, %logic.rend6685 ] - br label %logic.from6686 -logic.from6686: - br i1 %t194, label %logic.end6688, label %logic.rhs6687 -logic.rhs6687: - %t195 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t195, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.4325, i64 2, i64 0 }, ptr %a197 - %t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197) - %t199 = icmp ne i32 %t198, 0 - br label %logic.rend6689 -logic.rend6689: - br label %logic.end6688 -logic.end6688: - %t200 = phi i1 [ true, %logic.from6686 ], [ %t199, %logic.rend6689 ] - br i1 %t200, label %then6690, label %endif6692 -then6690: - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a8 - %t203 = load %S.gen.Val, ptr %a145 - %t204 = load %S.gen.Val, ptr %a163 - %t205 = load %S.ast.Node, ptr %a2 - %t206 = call %S.gen.Val @finch.gen.compare(ptr %t201, { ptr, i64, i64 } %t202, %S.gen.Val %t203, %S.gen.Val %t204, %S.ast.Node %t205) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t206 -endif6692: - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a8 - %t209 = load %S.gen.Val, ptr %a145 - %t210 = load %S.gen.Val, ptr %a163 - %t211 = load %S.ast.Node, ptr %a2 - %t212 = call %S.gen.Val @finch.gen.arith(ptr %t207, { ptr, i64, i64 } %t208, %S.gen.Val %t209, %S.gen.Val %t210, %S.ast.Node %t211) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t212 -} - -define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a23 = alloca %S.ast.Type, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca i64, align 16 - %a38 = alloca i64, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a47 = alloca %S.gen.Val, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.gen.Val, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a71 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %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 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca %S.ast.Type, align 16 - %a290 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4326, 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.4327, 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 %then6693, label %else6694 -then6693: - %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 %range6696, label %inrange6697 -range6696: - call void @finch_panic_index(ptr @.str.4328, i64 3666, i64 0, i64 %t14) - unreachable -inrange6697: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 - %t18 = load %S.ast.Type, ptr %t17 - store %S.ast.Type %t18, ptr %a19 - call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) - %t21 = load %S.ast.Type, ptr %a20 - %t22 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t21, ptr %a5 - store %S.ast.Type %t22, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - br label %endif6695 -else6694: - %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = icmp eq i64 %t26, 0 - br i1 %t27, label %then6698, label %endif6700 -then6698: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t28, %S.ast.Node %t29, { ptr, i64, i64 } { ptr @.str.4329, i64 47, i64 0 }) - br label %endif6700 -endif6700: - br label %endif6695 -endif6695: - store { ptr, i64, i64 } zeroinitializer, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic6701, label %ok6702 -panic6701: - call void @finch_panic(ptr @.str.4330, i64 3671, ptr @.str.4331) - unreachable -ok6702: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 11 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - %t35 = load i64, ptr %t34 - store i64 %t35, ptr %a36 - %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a38 - br label %each.cond6703 -each.cond6703: - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 - %t40 = load i64, ptr %t39 - %t41 = load i64, ptr %a38 - %t42 = icmp slt i64 %t41, %t40 - br i1 %t42, label %each.body6704, label %each.end6706 -each.body6704: - %t43 = load ptr, ptr %t37 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - %t45 = load %S.ast.Node, ptr %t44 - store %S.ast.Node %t45, ptr %a46 - store %S.gen.Val zeroinitializer, ptr %a47 - %t48 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0 - %t49 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4332, i64 4, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br i1 %t53, label %then6707, label %else6708 -then6707: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a46 - %t56 = call %S.gen.Val @finch.gen.expr(ptr %t54, %S.ast.Node %t55) - %t57 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t56, ptr %a47 - store %S.gen.Val %t57, ptr %a58 - call void @finch.drop.S_gen_Val(ptr %a58) - %t59 = getelementptr inbounds %S.gen.Val, ptr %a47, i32 0, i32 1 - %t60 = load %S.ast.Type, ptr %t59 - store %S.ast.Type %t60, ptr %a61 - call void @finch.copy.S_ast_Type(ptr %a62, ptr %a61) - %t63 = load %S.ast.Type, ptr %a62 - %t64 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t63, ptr %a5 - store %S.ast.Type %t64, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - br label %endif6709 -else6708: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a46 - %t68 = load %S.ast.Type, ptr %a5 - %t69 = call %S.gen.Val @finch.gen.exprWant(ptr %t66, %S.ast.Node %t67, %S.ast.Type %t68) - %t70 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t69, ptr %a47 - store %S.gen.Val %t70, ptr %a71 - call void @finch.drop.S_gen_Val(ptr %a71) - br label %endif6709 -endif6709: - %t72 = load ptr, ptr %a1 - %t73 = load %S.gen.Val, ptr %a47 - %t74 = load %S.ast.Type, ptr %a5 - %t75 = load %S.ast.Node, ptr %a46 - %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t72, %S.gen.Val %t73, %S.ast.Type %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.4333, i64 27, i64 0 }) - %t77 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t76, ptr %a47 - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t80 = load ptr, ptr %a1 - %t81 = load %S.gen.Val, ptr %a47 - %t82 = call { ptr, i64, i64 } @finch.gen.own(ptr %t80, %S.gen.Val %t81) - %t83 = load i64, ptr %t79 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %a30, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %a30 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t79 - %t87 = load ptr, ptr %a1 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = sub i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %a30 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range6710, label %inrange6711 -range6710: - call void @finch_panic_index(ptr @.str.4334, i64 3682, i64 %t90, i64 %t92) - unreachable -inrange6711: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 %t90 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t100, %S.ast.Type %t104, 1 - %t106 = insertvalue %S.gen.Val %t105, i1 true, 2 - call void @finch.gen.hold(ptr %t87, %S.gen.Val %t106) - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - call void @finch.drop.S_gen_Val(ptr %a47) - br label %each.step6705 -each.step6705: - %t108 = load i64, ptr %a38 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a38 - br label %each.cond6703 -each.end6706: - %t110 = load ptr, ptr %a1 - %t111 = load i64, ptr %a36 - call void @finch.gen.heldEnd(ptr %t110, i64 %t111) - %t112 = load %S.ast.Type, ptr %a5 - %t113 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t112) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t116 = load i64, ptr %t115 - call void @finch_str_from_int(ptr %a117, i64 %t116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4335, i64 4, i64 0 }, ptr %a120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t122 = load i64, ptr %t121 - %t123 = icmp sgt i64 %t122, 0 - br i1 %t123, label %then6712, label %endif6714 -then6712: - %t124 = load ptr, ptr %a1 - %t125 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4336, i64 8, i64 0 }, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t129, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4337, i64 2, i64 0 }, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a5 - %t137 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t135, %S.ast.Type %t136) - store { ptr, i64, i64 } %t134, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t134, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - %t144 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t143, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4338, i64 26, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.4339, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t158, ptr %a120 - store { ptr, i64, i64 } %t160, ptr %a161 - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a146) - br label %endif6714 -endif6714: - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t163 = load i64, ptr %t162 - store i64 0, ptr %a164 - br label %for.cond6715 -for.cond6715: - %t165 = load i64, ptr %a164 - %t166 = icmp slt i64 %t165, %t163 - br i1 %t166, label %for.body6716, label %for.end6718 -for.body6716: - %t167 = load ptr, ptr %a1 - %t168 = load ptr, ptr %a1 - %t169 = load %S.ast.Type, ptr %a5 - %t170 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t168, %S.ast.Type %t169) - store { ptr, i64, i64 } { ptr @.str.4340, i64 23, i64 0 }, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t175, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4341, i64 6, i64 0 }, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_drop(ptr %a179) - %t180 = load { ptr, i64, i64 }, ptr %a176 - %t181 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t180, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t180, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4342, i64 6, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = load i64, ptr %a164 - call void @finch_str_from_int(ptr %a193, i64 %t192) - %t194 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t191, ptr %a198 - call void @finch_str_drop(ptr %a198) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a195 - %t201 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t200) - store { ptr, i64, i64 } %t200, ptr %a202 - call void @finch_str_drop(ptr %a202) - store { ptr, i64, i64 } %t201, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.ast.Type, ptr %a5 - %t207 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t205, %S.ast.Type %t206) - %t208 = load i64, ptr %a164 - %t209 = load { ptr, i64, i64 }, ptr %a30 - %t210 = extractvalue { ptr, i64, i64 } %t209, 1 - %t211 = icmp uge i64 %t208, %t210 - br i1 %t211, label %range6719, label %inrange6720 -range6719: - call void @finch_panic_index(ptr @.str.4343, i64 3694, i64 %t208, i64 %t210) - unreachable -inrange6720: - %t212 = extractvalue { ptr, i64, i64 } %t209, 0 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t208 - %t214 = load { ptr, i64, i64 }, ptr %t213 - %t215 = load { ptr, i64, i64 }, ptr %a203 - call void @finch.gen.store(ptr %t204, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t214, { ptr, i64, i64 } %t215) - store { ptr, i64, i64 } %t207, ptr %a216 - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a203) - br label %for.step6717 -for.step6717: - %t217 = load i64, ptr %a164 - %t218 = add i64 %t217, 1 - store i64 %t218, ptr %a164 - br label %for.cond6715 -for.end6718: - %t219 = load ptr, ptr %a1 - %t220 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4344, i64 41, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4345, i64 3, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t219, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t229, ptr %a231 - call void @finch_str_drop(ptr %a231) - store { ptr, i64, i64 } %t230, ptr %a232 - %t233 = load ptr, ptr %a1 - %t234 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4346, i64 30, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.4347, i64 6, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4348, i64 3, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = call { ptr, i64, i64 } @finch.gen.op(ptr %t233, { ptr, i64, i64 } %t254) - store { ptr, i64, i64 } %t254, ptr %a256 - call void @finch_str_drop(ptr %a256) - store { ptr, i64, i64 } %t255, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.4349, i64 30, i64 0 }, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4351, i64 3, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t279) - store { ptr, i64, i64 } %t279, ptr %a281 - call void @finch_str_drop(ptr %a281) - store { ptr, i64, i64 } %t280, ptr %a282 - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t283, ptr %a284 - call void @finch_str_copy(ptr %a285, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - %t287 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t286, 0 - %t288 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t288, ptr %a289 - call void @finch.copy.S_ast_Type(ptr %a290, ptr %a289) - %t291 = load %S.ast.Type, ptr %a290 - %t292 = insertvalue %S.gen.Val %t287, %S.ast.Type %t291, 1 - %t293 = insertvalue %S.gen.Val %t292, i1 true, 2 - call void @finch_str_drop(ptr %a282) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a120) - call void @finch_str_drop(ptr %a119) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.arr_str(ptr %a30) - call void @finch.drop.S_ast_Type(ptr %a5) - ret %S.gen.Val %t293 -} - -define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) { -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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Ref, align 16 - %a42 = alloca %S.gen.Place, align 16 - %a43 = alloca %S.gen.Place, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4352, 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.from6721 -logic.from6721: - br i1 %t9, label %logic.rhs6722, label %logic.end6723 -logic.rhs6722: - %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.rend6724 -logic.rend6724: - br label %logic.end6723 -logic.end6723: - %t15 = phi i1 [ false, %logic.from6721 ], [ %t14, %logic.rend6724 ] - br i1 %t15, label %then6725, label %endif6727 -then6725: - %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.4353, 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.4354, i64 1, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t28) - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %endif6727 -endif6727: - %t30 = load ptr, ptr %a1 - %t31 = load %S.ast.Node, ptr %a2 - %t32 = load i1, ptr %a3 - %t33 = call %S.gen.Ref @finch.gen.ref(ptr %t30, %S.ast.Node %t31, i1 %t32) - store %S.gen.Ref %t33, ptr %a34 - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 0 - %t36 = load i1, ptr %t35 - %t37 = xor i1 %t36, true - br i1 %t37, label %then6728, label %endif6730 -then6728: - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t39, { ptr, i64, i64 } { ptr @.str.4355, i64 60, i64 0 }) - br label %endif6730 -endif6730: - %t40 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 1 - %t41 = load %S.gen.Place, ptr %t40 - store %S.gen.Place %t41, ptr %a42 - call void @finch.copy.S_gen_Place(ptr %a43, ptr %a42) - %t44 = load %S.gen.Place, ptr %a43 - call void @finch.drop.S_gen_Ref(ptr %a34) - ret %S.gen.Place %t44 -} - -define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i64, align 16 - %a190 = alloca i64, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca %S.gen.Var, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.ast.Type, align 16 - %a359 = alloca %S.ast.Type, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4356, 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 %then6731, label %endif6733 -then6731: - %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.from6734 -logic.from6734: - br i1 %t16, label %logic.rhs6735, label %logic.end6736 -logic.rhs6735: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6737, label %ok6738 -panic6737: - call void @finch_panic(ptr @.str.4357, i64 3718, ptr @.str.4358) - unreachable -ok6738: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 26 - %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.rend6739 -logic.rend6739: - br label %logic.end6736 -logic.end6736: - %t26 = phi i1 [ false, %logic.from6734 ], [ %t25, %logic.rend6739 ] - br i1 %t26, label %then6740, label %endif6742 -then6740: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6743, label %ok6744 -panic6743: - call void @finch_panic(ptr @.str.4359, i64 3719, ptr @.str.4360) - unreachable -ok6744: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 26 - %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.missing6745, label %map.found6746 -map.missing6745: - 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.4361, i64 3719, ptr %a36) - unreachable -map.found6746: - %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 %then6747, label %endif6749 -then6747: - %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.4362, i64 5, i64 0 }) - %t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1 - %t56 = insertvalue %S.gen.Val %t55, i1 true, 3 - %t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t57 -endif6749: - %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.4363, i64 3, i64 0 }) - %t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1 - %t66 = insertvalue %S.gen.Val %t65, i1 true, 3 - %t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t67 -endif6742: - %t68 = load i64, ptr %a14 - %t69 = icmp slt i64 %t68, 0 - br label %logic.from6750 -logic.from6750: - br i1 %t69, label %logic.rhs6751, label %logic.end6752 -logic.rhs6751: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic6753, label %ok6754 -panic6753: - call void @finch_panic(ptr @.str.4364, i64 3726, ptr @.str.4365) - unreachable -ok6754: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 26 - %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.rend6755 -logic.rend6755: - br label %logic.end6752 -logic.end6752: - %t80 = phi i1 [ false, %logic.from6750 ], [ %t79, %logic.rend6755 ] - br label %logic.from6756 -logic.from6756: - br i1 %t80, label %logic.rhs6757, label %logic.end6758 -logic.rhs6757: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic6759, label %ok6760 -panic6759: - call void @finch_panic(ptr @.str.4366, i64 3726, ptr @.str.4367) - unreachable -ok6760: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 26 - %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4368, 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.rend6761 -logic.rend6761: - br label %logic.end6758 -logic.end6758: - %t88 = phi i1 [ false, %logic.from6756 ], [ %t87, %logic.rend6761 ] - br label %logic.from6762 -logic.from6762: - br i1 %t88, label %logic.rhs6763, label %logic.end6764 -logic.rhs6763: - %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.4369, 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.from6765 -logic.from6765: - br i1 %t94, label %logic.end6767, label %logic.rhs6766 -logic.rhs6766: - %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.4370, 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.rend6768 -logic.rend6768: - br label %logic.end6767 -logic.end6767: - %t101 = phi i1 [ true, %logic.from6765 ], [ %t100, %logic.rend6768 ] - br label %logic.from6769 -logic.from6769: - br i1 %t101, label %logic.end6771, label %logic.rhs6770 -logic.rhs6770: - %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.4371, 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.rend6772 -logic.rend6772: - br label %logic.end6771 -logic.end6771: - %t108 = phi i1 [ true, %logic.from6769 ], [ %t107, %logic.rend6772 ] - br label %logic.rend6773 -logic.rend6773: - br label %logic.end6764 -logic.end6764: - %t109 = phi i1 [ false, %logic.from6762 ], [ %t108, %logic.rend6773 ] - br i1 %t109, label %then6774, label %endif6776 -then6774: - store { ptr, i64, i64 } { ptr @.str.4372, 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.4373, 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 %then6777, label %else6778 -then6777: - %t117 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4374, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif6779 -else6778: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t120 = load { ptr, i64, i64 }, ptr %t119 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.4375, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then6780, label %endif6782 -then6780: - %t125 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4376, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - br label %endif6782 -endif6782: - br label %endif6779 -endif6779: - %t127 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t128 = load ptr, ptr %a1 - %t129 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4377, i64 31, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.4378, i64 1, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t128, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t142 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4379, i64 3, i64 0 }) - %t143 = insertvalue %S.gen.Val %t141, %S.ast.Type %t142, 1 - %t144 = insertvalue %S.gen.Ref %t127, %S.gen.Val %t143, 2 - call void @finch_str_drop(ptr %a110) - ret %S.gen.Ref %t144 -endif6776: - %t145 = load i64, ptr %a14 - %t146 = icmp slt i64 %t145, 0 - br label %logic.from6783 -logic.from6783: - br i1 %t146, label %logic.rhs6784, label %logic.end6785 -logic.rhs6784: - %t147 = load ptr, ptr %a1 - %t148 = icmp eq ptr %t147, null - br i1 %t148, label %panic6786, label %ok6787 -panic6786: - call void @finch_panic(ptr @.str.4380, i64 3735, ptr @.str.4381) - unreachable -ok6787: - %t149 = getelementptr inbounds %S.gen.Gen, ptr %t147, i32 0, i32 26 - %t150 = getelementptr inbounds %S.cimport.CImports, ptr %t149, i32 0, i32 2 - %t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = call i64 @finch_map_find(ptr %t150, ptr %a153, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t155 = icmp sge i64 %t154, 0 - br label %logic.rend6788 -logic.rend6788: - br label %logic.end6785 -logic.end6785: - %t156 = phi i1 [ false, %logic.from6783 ], [ %t155, %logic.rend6788 ] - br i1 %t156, label %then6789, label %endif6791 -then6789: - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic6792, label %ok6793 -panic6792: - call void @finch_panic(ptr @.str.4382, i64 3736, ptr @.str.4383) - unreachable -ok6793: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 26 - %t161 = getelementptr inbounds %S.cimport.CImports, ptr %t160, i32 0, i32 2 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - store { ptr, i64, i64 } %t163, ptr %a164 - %t165 = call i64 @finch_map_find(ptr %t161, ptr %a164, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t166 = icmp slt i64 %t165, 0 - br i1 %t166, label %map.missing6794, label %map.found6795 -map.missing6794: - store { ptr, i64, i64 } zeroinitializer, ptr %a167 - store { ptr, i64, i64 } %t163, ptr %a168 - call void @finch_buf_str(ptr %a167, ptr %a168, i32 1) - call void @finch_map_missing(ptr @.str.4384, i64 3736, ptr %a167) - unreachable -map.found6795: - %t169 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t161, i32 0, i32 0 - %t170 = load ptr, ptr %t169 - %t171 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t170, i64 %t165 - %t172 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t171, i32 0, i32 2 - %t173 = load %S.ast.Type, ptr %t172 - %t174 = load %S.ast.Node, ptr %a2 - %t175 = call %S.ast.Type @finch.gen.resolve(ptr %t157, %S.ast.Type %t173, %S.ast.Node %t174) - store %S.ast.Type %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = icmp eq ptr %t177, null - br i1 %t178, label %panic6796, label %ok6797 -panic6796: - call void @finch_panic(ptr @.str.4385, i64 3737, ptr @.str.4386) - unreachable -ok6797: - %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 40 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } { ptr @.str.4387, i64 2, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store i64 -1, ptr %a187 - %t188 = load i64, ptr %t180 - %t189 = load ptr, ptr %t179 - store i64 0, ptr %a190 - br label %find.cond6798 -find.cond6798: - %t191 = load i64, ptr %a190 - %t192 = icmp slt i64 %t191, %t188 - br i1 %t192, label %find.body6799, label %find.end6802 -find.body6799: - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t189, i64 %t191 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } %t186, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br i1 %t198, label %find.hit6800, label %find.next6801 -find.hit6800: - store i64 %t191, ptr %a187 - br label %find.end6802 -find.next6801: - %t199 = add i64 %t191, 1 - store i64 %t199, ptr %a190 - br label %find.cond6798 -find.end6802: - store { ptr, i64, i64 } %t186, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load i64, ptr %a187 - %t202 = icmp sge i64 %t201, 0 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6803, label %endif6805 -then6803: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic6806, label %ok6807 -panic6806: - call void @finch_panic(ptr @.str.4388, i64 3738, ptr @.str.4389) - unreachable -ok6807: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 40 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } { ptr @.str.4390, i64 2, i64 0 }, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a210 - %t214 = load i64, ptr %t207 - %t215 = add i64 %t214, 1 - call void @finch_arr_reserve(ptr %t206, i64 %t215, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t216 = load ptr, ptr %t206 - %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t214 - store { ptr, i64, i64 } %t213, ptr %t217 - store i64 %t215, ptr %t207 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic6808, label %ok6809 -panic6808: - call void @finch_panic(ptr @.str.4391, i64 3739, ptr @.str.4392) - unreachable -ok6809: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 2 - %t221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t220, i32 0, i32 1 - %t222 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t223 = load { ptr, i64, i64 }, ptr %t222 - store { ptr, i64, i64 } { ptr @.str.4393, i64 1, i64 0 }, ptr %a225 - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.4394, i64 19, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load ptr, ptr %a1 - %t234 = load %S.ast.Type, ptr %a176 - %t235 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t233, %S.ast.Type %t234) - store { ptr, i64, i64 } %t232, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t232, ptr %a239 - call void @finch_str_drop(ptr %a239) - store { ptr, i64, i64 } %t235, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a236 - %t242 = load i64, ptr %t221 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %t220, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %t220 - %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 - store { ptr, i64, i64 } %t241, ptr %t245 - store i64 %t243, ptr %t221 - br label %endif6805 -endif6805: - %t246 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t247 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t248 = load { ptr, i64, i64 }, ptr %t247 - store { ptr, i64, i64 } { ptr @.str.4395, i64 1, i64 0 }, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - %t252 = load { ptr, i64, i64 }, ptr %a249 - %t253 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t252, 0 - %t254 = load %S.ast.Type, ptr %a176 - store %S.ast.Type %t254, ptr %a255 - call void @finch.copy.S_ast_Type(ptr %a256, ptr %a255) - %t257 = load %S.ast.Type, ptr %a256 - %t258 = insertvalue %S.gen.Place %t253, %S.ast.Type %t257, 1 - %t259 = insertvalue %S.gen.Ref %t246, %S.gen.Place %t258, 1 - call void @finch.drop.S_ast_Type(ptr %a176) - ret %S.gen.Ref %t259 -endif6791: - %t260 = load i64, ptr %a14 - %t261 = icmp slt i64 %t260, 0 - br i1 %t261, label %then6810, label %endif6812 -then6810: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call i1 @finch.gen.imports(ptr %t262, { ptr, i64, i64 } %t264) - br i1 %t265, label %then6813, label %endif6815 -then6813: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t269 = load { ptr, i64, i64 }, ptr %t268 - store { ptr, i64, i64 } { ptr @.str.4396, i64 1, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.4397, i64 43, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t280 = load { ptr, i64, i64 }, ptr %t279 - store { ptr, i64, i64 } %t278, ptr %a282 - store { ptr, i64, i64 } %t280, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4398, i64 10, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif6815 -endif6815: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - %t294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } { ptr @.str.4399, i64 28, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t295, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.4400, i64 1, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - call void @finch.gen.fail(ptr %t292, %S.ast.Node %t293, { ptr, i64, i64 } %t304) - store { ptr, i64, i64 } %t304, ptr %a305 - call void @finch_str_drop(ptr %a305) - br label %endif6812 -endif6812: - %t306 = load ptr, ptr %a1 - %t307 = load i64, ptr %a14 - %t308 = call %S.gen.Var @finch.gen.varAt(ptr %t306, i64 %t307) - store %S.gen.Var %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = load %S.ast.Node, ptr %a2 - %t312 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t313 = load i64, ptr %t312 - %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t318 = load %S.ast.Type, ptr %t317 - %t319 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t318) - store { ptr, i64, i64 } { ptr @.str.4401, i64 9, i64 0 }, ptr %a321 - store { ptr, i64, i64 } %t319, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.4402, i64 1, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t329, ptr %a333 - store { ptr, i64, i64 } %t331, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t329, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.4403, i64 4, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 7 - %t343 = load { ptr, i64, i64 }, ptr %t342 - %t344 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 8 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 9 - %t347 = load i64, ptr %t346 - call void @finch.gen.noteRef(ptr %t310, %S.ast.Node %t311, i64 %t313, i64 %t316, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t343, i64 %t345, i64 %t347) - store { ptr, i64, i64 } %t341, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t350 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 2 - %t351 = load { ptr, i64, i64 }, ptr %t350 - store { ptr, i64, i64 } %t351, ptr %a352 - call void @finch_str_copy(ptr %a353, ptr %a352) - %t354 = load { ptr, i64, i64 }, ptr %a353 - %t355 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t354, 0 - %t356 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t357 = load %S.ast.Type, ptr %t356 - store %S.ast.Type %t357, ptr %a358 - call void @finch.copy.S_ast_Type(ptr %a359, ptr %a358) - %t360 = load %S.ast.Type, ptr %a359 - %t361 = insertvalue %S.gen.Place %t355, %S.ast.Type %t360, 1 - %t362 = insertvalue %S.gen.Ref %t349, %S.gen.Place %t361, 1 - call void @finch.drop.S_gen_Var(ptr %a309) - ret %S.gen.Ref %t362 -endif6733: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4404, i64 6, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then6816, label %endif6818 -then6816: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = load i1, ptr %a3 - %t372 = call %S.gen.Ref @finch.gen.member(ptr %t369, %S.ast.Node %t370, i1 %t371) - ret %S.gen.Ref %t372 -endif6818: - %t373 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t374 = load { ptr, i64, i64 }, ptr %t373 - store { ptr, i64, i64 } %t374, ptr %a375 - store { ptr, i64, i64 } { ptr @.str.4405, i64 5, i64 0 }, ptr %a376 - %t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376) - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %then6819, label %endif6821 -then6819: - %t379 = load ptr, ptr %a1 - %t380 = load %S.ast.Node, ptr %a2 - %t381 = load i1, ptr %a3 - %t382 = call %S.gen.Ref @finch.gen.index(ptr %t379, %S.ast.Node %t380, i1 %t381) - ret %S.gen.Ref %t382 -endif6821: - %t383 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Node, ptr %a2 - %t386 = call %S.gen.Val @finch.gen.expr(ptr %t384, %S.ast.Node %t385) - %t387 = insertvalue %S.gen.Ref %t383, %S.gen.Val %t386, 2 - ret %S.gen.Ref %t387 -} - -define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { -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 - %a21 = 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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.4407, 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 %then6822, label %endif6824 -then6822: - %t13 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4408, 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 - %t18 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t17, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif6824 -endif6824: - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.4410, i64 1, i64 0 }, ptr %a23 - %t24 = call i64 @finch_str_find(ptr %a21, ptr %a23) - %t25 = icmp sge i64 %t24, 0 - %t26 = xor i1 %t25, true - br i1 %t26, label %then6825, label %endif6827 -then6825: - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.4412, i64 1, i64 0 }, ptr %a30 - %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then6828, label %endif6830 -then6828: - %t35 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.4414, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a32 - br label %endif6830 -endif6830: - %t40 = load i64, ptr %a32 - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %then6831, label %endif6833 -then6831: - %t42 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.4415, i64 2, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a43 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t46 -endif6833: - %t47 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t47, ptr %a48 - %t50 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.4416, i64 3776) - %t51 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4417, i64 2, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t57, ptr %a58 - %t60 = load i64, ptr %a32 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t62 = load i64, ptr %t61 - call void @finch_str_sub(ptr %a59, ptr %a58, i64 %t60, i64 %t62, ptr @.str.4418, i64 3776) - %t63 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t56, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t56, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t69 -endif6827: - %t70 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t70 -} - -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.4419, 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.from6834 -logic.from6834: - br i1 %t8, label %logic.rhs6835, label %logic.end6836 -logic.rhs6835: - %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.rend6837 -logic.rend6837: - br label %logic.end6836 -logic.end6836: - %t14 = phi i1 [ false, %logic.from6834 ], [ %t13, %logic.rend6837 ] - br i1 %t14, label %then6838, label %endif6840 -then6838: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6841, label %ok6842 -panic6841: - call void @finch_panic(ptr @.str.4420, i64 3784, ptr @.str.4421) - unreachable -ok6842: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6840: - %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.4422, 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.from6843 -logic.from6843: - br i1 %t28, label %logic.rhs6844, label %logic.end6845 -logic.rhs6844: - %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 %range6846, label %inrange6847 -range6846: - call void @finch_panic_index(ptr @.str.4423, i64 3786, i64 0, i64 %t31) - unreachable -inrange6847: - %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.4424, 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.rend6848 -logic.rend6848: - br label %logic.end6845 -logic.end6845: - %t41 = phi i1 [ false, %logic.from6843 ], [ %t40, %logic.rend6848 ] - br label %logic.from6849 -logic.from6849: - br i1 %t41, label %logic.rhs6850, label %logic.end6851 -logic.rhs6850: - %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 %range6852, label %inrange6853 -range6852: - call void @finch_panic_index(ptr @.str.4425, i64 3786, i64 0, i64 %t45) - unreachable -inrange6853: - %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.rend6854 -logic.rend6854: - br label %logic.end6851 -logic.end6851: - %t53 = phi i1 [ false, %logic.from6849 ], [ %t52, %logic.rend6854 ] - br label %logic.from6855 -logic.from6855: - br i1 %t53, label %logic.rhs6856, label %logic.end6857 -logic.rhs6856: - %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 %range6858, label %inrange6859 -range6858: - call void @finch_panic_index(ptr @.str.4426, i64 3786, i64 0, i64 %t57) - unreachable -inrange6859: - %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.rend6860 -logic.rend6860: - br label %logic.end6857 -logic.end6857: - %t64 = phi i1 [ false, %logic.from6855 ], [ %t63, %logic.rend6860 ] - br i1 %t64, label %then6861, label %endif6863 -then6861: - %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 %range6864, label %inrange6865 -range6864: - call void @finch_panic_index(ptr @.str.4427, i64 3787, i64 0, i64 %t68) - unreachable -inrange6865: - %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 -endif6863: - ret i64 -1 -} - -define internal i64 @finch.gen.sumNamed(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.4428, 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.from6866 -logic.from6866: - br i1 %t8, label %logic.rhs6867, label %logic.end6868 -logic.rhs6867: - %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.rend6869 -logic.rend6869: - br label %logic.end6868 -logic.end6868: - %t14 = phi i1 [ false, %logic.from6866 ], [ %t13, %logic.rend6869 ] - br i1 %t14, label %then6870, label %endif6872 -then6870: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6873, label %ok6874 -panic6873: - call void @finch_panic(ptr @.str.4429, i64 3795, ptr @.str.4430) - unreachable -ok6874: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findSum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6872: - %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.4431, 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.from6875 -logic.from6875: - br i1 %t28, label %logic.rhs6876, label %logic.end6877 -logic.rhs6876: - %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 %range6878, label %inrange6879 -range6878: - call void @finch_panic_index(ptr @.str.4432, i64 3797, i64 0, i64 %t31) - unreachable -inrange6879: - %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.4433, 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.rend6880 -logic.rend6880: - br label %logic.end6877 -logic.end6877: - %t41 = phi i1 [ false, %logic.from6875 ], [ %t40, %logic.rend6880 ] - br label %logic.from6881 -logic.from6881: - br i1 %t41, label %logic.rhs6882, label %logic.end6883 -logic.rhs6882: - %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 %range6884, label %inrange6885 -range6884: - call void @finch_panic_index(ptr @.str.4434, i64 3797, i64 0, i64 %t45) - unreachable -inrange6885: - %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.rend6886 -logic.rend6886: - br label %logic.end6883 -logic.end6883: - %t53 = phi i1 [ false, %logic.from6881 ], [ %t52, %logic.rend6886 ] - br label %logic.from6887 -logic.from6887: - br i1 %t53, label %logic.rhs6888, label %logic.end6889 -logic.rhs6888: - %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 %range6890, label %inrange6891 -range6890: - call void @finch_panic_index(ptr @.str.4435, i64 3797, i64 0, i64 %t57) - unreachable -inrange6891: - %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.rend6892 -logic.rend6892: - br label %logic.end6889 -logic.end6889: - %t64 = phi i1 [ false, %logic.from6887 ], [ %t63, %logic.rend6892 ] - br i1 %t64, label %then6893, label %endif6895 -then6893: - %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 %range6896, label %inrange6897 -range6896: - call void @finch_panic_index(ptr @.str.4436, i64 3798, i64 0, i64 %t68) - unreachable -inrange6897: - %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.findSum(ptr %t65, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75) - ret i64 %t76 -endif6895: - ret i64 -1 -} - -define internal i64 @finch.gen.sumVariant(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a16 = alloca %S.gen.SumDef, align 16 - %a18 = alloca %S.gen.SumDef, 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 - %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 - %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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic6898, label %ok6899 -panic6898: - call void @finch_panic(ptr @.str.4437, i64 3804, ptr @.str.4438) - unreachable -ok6899: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 22 - %t8 = load i64, ptr %a2 - %t9 = load { ptr, i64, i64 }, ptr %t7 - %t10 = extractvalue { ptr, i64, i64 } %t9, 1 - %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range6900, label %inrange6901 -range6900: - call void @finch_panic_index(ptr @.str.4439, i64 3804, i64 %t8, i64 %t10) - unreachable -inrange6901: - %t12 = extractvalue { ptr, i64, i64 } %t9, 0 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %t12, i64 %t8 - %t14 = load %S.gen.SumDef, ptr %t13 - store %S.gen.SumDef %t14, ptr %a15 - call void @finch.copy.S_gen_SumDef(ptr %a16, ptr %a15) - %t17 = load %S.gen.SumDef, ptr %a16 - store %S.gen.SumDef %t17, ptr %a18 - %t19 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %a3 - store i64 -1, ptr %a22 - %t23 = load i64, ptr %t20 - %t24 = load ptr, ptr %t19 - store i64 0, ptr %a25 - br label %find.cond6902 -find.cond6902: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6903, label %find.end6906 -find.body6903: - %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.hit6904, label %find.next6905 -find.hit6904: - store i64 %t26, ptr %a22 - br label %find.end6906 -find.next6905: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6902 -find.end6906: - %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 %then6907, label %endif6909 -then6907: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a4 - %t41 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } { ptr @.str.4440, 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.4441, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.4442, i64 11, i64 0 }, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t57, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - %t63 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4443, i64 2, 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 } %t62, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t62, ptr %a71 - call void @finch_str_drop(ptr %a71) - store { ptr, i64, i64 } %t67, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.4444, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif6909 -endif6909: - %t80 = load i64, ptr %a36 - call void @finch.drop.S_gen_SumDef(ptr %a18) - ret i64 %t80 -} - -define internal %S.gen.Val @finch.gen.sumMake(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.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, align 16 - %a19 = alloca %S.gen.SumDef, align 16 - %a25 = alloca 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca i64, align 16 - %a178 = alloca %S.ast.Node, align 16 - %a179 = alloca %S.ast.Node, 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 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, 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 %panic6910, label %ok6911 -panic6910: - call void @finch_panic(ptr @.str.4445, i64 3814, ptr @.str.4446) - unreachable -ok6911: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 22 - %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 %range6912, label %inrange6913 -range6912: - call void @finch_panic_index(ptr @.str.4447, i64 3814, i64 %t9, i64 %t11) - unreachable -inrange6913: - %t13 = extractvalue { ptr, i64, i64 } %t10, 0 - %t14 = getelementptr inbounds %S.gen.SumDef, ptr %t13, i64 %t9 - %t15 = load %S.gen.SumDef, ptr %t14 - store %S.gen.SumDef %t15, ptr %a16 - call void @finch.copy.S_gen_SumDef(ptr %a17, ptr %a16) - %t18 = load %S.gen.SumDef, ptr %a17 - store %S.gen.SumDef %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = load i64, ptr %a2 - %t22 = load { ptr, i64, i64 }, ptr %a3 - %t23 = load %S.ast.Node, ptr %a5 - %t24 = call i64 @finch.gen.sumVariant(ptr %t20, i64 %t21, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t27 = load i64, ptr %t26 - %t28 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t29 = load i64, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range6914, label %inrange6915 -range6914: - call void @finch_panic_index(ptr @.str.4448, i64 3816, i64 %t29, i64 %t31) - unreachable -inrange6915: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds i64, ptr %t33, i64 %t29 - %t35 = load i64, ptr %t34 - %t36 = icmp ne i64 %t27, %t35 - br i1 %t36, label %then6916, label %endif6918 -then6916: - %t37 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t38 = load i64, ptr %a25 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range6919, label %inrange6920 -range6919: - call void @finch_panic_index(ptr @.str.4449, i64 3817, i64 %t38, i64 %t40) - unreachable -inrange6920: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i64, ptr %t42, i64 %t38 - %t44 = load i64, ptr %t43 - %t45 = icmp eq i64 %t44, 0 - br i1 %t45, label %then6921, label %endif6923 -then6921: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Node, ptr %a5 - %t48 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4450, i64 22, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a49 - %t53 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t52, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t52, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4451, i64 1, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - %t65 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t64, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t64, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.fail(ptr %t46, %S.ast.Node %t47, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif6923 -endif6923: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a5 - %t74 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4452, i64 7, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t80 = load i64, ptr %a25 - %t81 = load { ptr, i64, i64 }, ptr %t79 - %t82 = extractvalue { ptr, i64, i64 } %t81, 1 - %t83 = icmp uge i64 %t80, %t82 - br i1 %t83, label %range6924, label %inrange6925 -range6924: - call void @finch_panic_index(ptr @.str.4453, i64 3820, i64 %t80, i64 %t82) - unreachable -inrange6925: - %t84 = extractvalue { ptr, i64, i64 } %t81, 0 - %t85 = getelementptr inbounds i64, ptr %t84, i64 %t80 - %t86 = load i64, ptr %t85 - call void @finch_str_from_int(ptr %a87, i64 %t86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t78, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t78, ptr %a92 - call void @finch_str_drop(ptr %a92) - store { ptr, i64, i64 } %t88, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4454, i64 19, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t101 = load i64, ptr %t100 - call void @finch_str_from_int(ptr %a102, i64 %t101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t99, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t99, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t103, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4455, i64 2, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - %t115 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t114, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.4456, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4457, i64 5, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.fail(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif6918 -endif6918: - store { ptr, i64, i64 } zeroinitializer, ptr %a139 - store { ptr, i64, i64 } zeroinitializer, ptr %a140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t142 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.4458, i64 3, i64 0 }, 0 - %t143 = load i64, ptr %a25 - call void @finch_str_from_int(ptr %a144, i64 %t143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.ast.Node %t142, { ptr, i64, i64 } %t145, 4 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 11 - %t148 = load i64, ptr %t147 - %t149 = insertvalue %S.ast.Node %t146, i64 %t148, 11 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t151 = load i64, ptr %t150 - %t152 = insertvalue %S.ast.Node %t149, i64 %t151, 12 - %t153 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 13 - %t154 = load i64, ptr %t153 - %t155 = insertvalue %S.ast.Node %t152, i64 %t154, 13 - %t156 = load i64, ptr %t141 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %a139 - %t159 = getelementptr inbounds %S.ast.Node, ptr %t158, i64 %t156 - store %S.ast.Node %t155, ptr %t159 - store i64 %t157, ptr %t141 - %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t161 = load i64, ptr %t160 - %t162 = add i64 %t161, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t162, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t163 = load ptr, ptr %a140 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t161 - store { ptr, i64, i64 } { ptr @.str.4459, i64 3, i64 0 }, ptr %t164 - store i64 %t162, ptr %t160 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t166 = load i64, ptr %t165 - store i64 0, ptr %a167 - br label %for.cond6926 -for.cond6926: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body6927, label %for.end6929 -for.body6927: - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t171 = load i64, ptr %a167 - %t172 = load { ptr, i64, i64 }, ptr %a4 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 %t171, %t173 - br i1 %t174, label %range6930, label %inrange6931 -range6930: - call void @finch_panic_index(ptr @.str.4460, i64 3827, i64 %t171, i64 %t173) - unreachable -inrange6931: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t171 - %t177 = load %S.ast.Node, ptr %t176 - store %S.ast.Node %t177, ptr %a178 - call void @finch.copy.S_ast_Node(ptr %a179, ptr %a178) - %t180 = load %S.ast.Node, ptr %a179 - %t181 = load i64, ptr %t170 - %t182 = add i64 %t181, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t182, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t183 = load ptr, ptr %a139 - %t184 = getelementptr inbounds %S.ast.Node, ptr %t183, i64 %t181 - store %S.ast.Node %t180, ptr %t184 - store i64 %t182, ptr %t170 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t186 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4461, i64 1, 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 %a167 - 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) - store { ptr, i64, i64 } %t190, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a194 - %t200 = load i64, ptr %t185 - %t201 = add i64 %t200, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t201, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t202 = load ptr, ptr %a140 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 %t200 - store { ptr, i64, i64 } %t199, ptr %t203 - store i64 %t201, ptr %t185 - br label %for.step6928 -for.step6928: - %t204 = load i64, ptr %a167 - %t205 = add i64 %t204, 1 - store i64 %t205, ptr %a167 - br label %for.cond6926 -for.end6929: - %t206 = load ptr, ptr %a1 - %t207 = load %S.ast.Node, ptr %a5 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t209 = load i64, ptr %t208 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t211 = load i64, ptr %t210 - %t212 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } { ptr @.str.4462, i64 9, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4463, i64 1, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t222, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t228, ptr %a230 - store { ptr, i64, i64 } { ptr @.str.4464, i64 4, i64 0 }, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t228, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - call void @finch.gen.noteRef(ptr %t206, %S.ast.Node %t207, i64 %t209, i64 %t211, { ptr, i64, i64 } %t233, { ptr, i64, i64 } { ptr @.str.4465, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t233, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load ptr, ptr %a1 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %a139 - %t243 = load { ptr, i64, i64 }, ptr %a140 - %t244 = load %S.ast.Node, ptr %a5 - %t245 = call %S.gen.Val @finch.gen.construct(ptr %t235, i64 %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, %S.ast.Node %t244) - call void @finch.drop.arr_str(ptr %a140) - call void @finch.drop.arr_S_ast_Node(ptr %a139) - call void @finch.drop.S_gen_SumDef(ptr %a19) - ret %S.gen.Val %t245 -} - -define internal %S.gen.SumPat @finch.gen.sumPattern(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.SumDef, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca i64, align 16 - %a124 = alloca %S.ast.Node, align 16 - %a125 = alloca %S.ast.Node, 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 - %a144 = 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 - %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 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %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 i64, align 16 - %a251 = alloca %S.ast.Node, 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 - 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 %panic6932, label %ok6933 -panic6932: - call void @finch_panic(ptr @.str.4466, i64 3836, ptr @.str.4467) - unreachable -ok6933: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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 %range6934, label %inrange6935 -range6934: - call void @finch_panic_index(ptr @.str.4468, i64 3836, i64 %t7, i64 %t9) - unreachable -inrange6935: - %t11 = extractvalue { ptr, i64, i64 } %t8, 0 - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %t11, i64 %t7 - %t13 = load %S.gen.SumDef, ptr %t12 - store %S.gen.SumDef %t13, ptr %a14 - call void @finch.copy.S_gen_SumDef(ptr %a15, ptr %a14) - %t16 = load %S.gen.SumDef, ptr %a15 - store %S.gen.SumDef %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.4469, i64 0, i64 0 }, ptr %a18 - store { ptr, i64, i64 } zeroinitializer, ptr %a19 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - br label %logic.from6936 -logic.from6936: - br i1 %t25, label %logic.rhs6937, label %logic.end6938 -logic.rhs6937: - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = call i64 @finch.gen.lookup(ptr %t26, { ptr, i64, i64 } %t28) - %t30 = icmp slt i64 %t29, 0 - br label %logic.rend6939 -logic.rend6939: - br label %logic.end6938 -logic.end6938: - %t31 = phi i1 [ false, %logic.from6936 ], [ %t30, %logic.rend6939 ] - br i1 %t31, label %then6940, label %else6941 -then6940: - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 - %t37 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t36, ptr %a18 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif6942 -else6941: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.4471, 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 %then6943, label %else6944 -then6943: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t49, ptr %a18 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch.copy.arr_S_ast_Node(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - %t57 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t56, ptr %a19 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch.drop.arr_S_ast_Node(ptr %a58) - br label %endif6945 -else6944: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4472, i64 6, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br label %logic.from6946 -logic.from6946: - br i1 %t64, label %logic.rhs6947, label %logic.end6948 -logic.rhs6947: - %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 %range6949, label %inrange6950 -range6949: - call void @finch_panic_index(ptr @.str.4473, i64 3844, i64 0, i64 %t68) - unreachable -inrange6950: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 0 - %t72 = load %S.ast.Node, ptr %t71 - %t73 = call i64 @finch.gen.sumNamed(ptr %t65, %S.ast.Node %t72) - %t74 = load i64, ptr %a3 - %t75 = icmp eq i64 %t73, %t74 - br label %logic.rend6951 -logic.rend6951: - br label %logic.end6948 -logic.end6948: - %t76 = phi i1 [ false, %logic.from6946 ], [ %t75, %logic.rend6951 ] - br i1 %t76, label %then6952, label %else6953 -then6952: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_copy(ptr %a80, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t81, ptr %a18 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif6954 -else6953: - %t84 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.4474, i64 6, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.from6955 -logic.from6955: - br i1 %t89, label %logic.rhs6956, label %logic.end6957 -logic.rhs6956: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 0, %t93 - br i1 %t94, label %range6958, label %inrange6959 -range6958: - call void @finch_panic_index(ptr @.str.4475, i64 3846, i64 0, i64 %t93) - unreachable -inrange6959: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 0 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i64 @finch.gen.sumNamed(ptr %t90, %S.ast.Node %t97) - %t99 = load i64, ptr %a3 - %t100 = icmp eq i64 %t98, %t99 - br label %logic.rend6960 -logic.rend6960: - br label %logic.end6957 -logic.end6957: - %t101 = phi i1 [ false, %logic.from6955 ], [ %t100, %logic.rend6960 ] - br i1 %t101, label %then6961, label %else6962 -then6961: - %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 - call void @finch_str_copy(ptr %a105, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - %t107 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t106, ptr %a18 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i32 0, i32 1 - %t111 = load i64, ptr %t110 - store i64 1, ptr %a112 - br label %for.cond6964 -for.cond6964: - %t113 = load i64, ptr %a112 - %t114 = icmp slt i64 %t113, %t111 - br i1 %t114, label %for.body6965, label %for.end6967 -for.body6965: - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load i64, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %t116 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 %t117, %t119 - br i1 %t120, label %range6968, label %inrange6969 -range6968: - call void @finch_panic_index(ptr @.str.4476, i64 3849, i64 %t117, i64 %t119) - unreachable -inrange6969: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Node, ptr %t121, i64 %t117 - %t123 = load %S.ast.Node, ptr %t122 - store %S.ast.Node %t123, ptr %a124 - call void @finch.copy.S_ast_Node(ptr %a125, ptr %a124) - %t126 = load %S.ast.Node, ptr %a125 - %t127 = load i64, ptr %t115 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t128, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %a19 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 %t127 - store %S.ast.Node %t126, ptr %t130 - store i64 %t128, ptr %t115 - br label %for.step6966 -for.step6966: - %t131 = load i64, ptr %a112 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %a112 - br label %for.cond6964 -for.end6967: - br label %endif6963 -else6962: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - %t135 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 1 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } { ptr @.str.4477, i64 33, 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.4478, i64 10, i64 0 }, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t140, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 2 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4479, i64 2, i64 0 }, ptr %a148 - call void @finch_str_join(ptr %a149, ptr %t146, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t145, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t145, ptr %a154 - call void @finch_str_drop(ptr %a154) - store { ptr, i64, i64 } %t150, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4480, i64 1, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a162 - call void @finch_str_drop(ptr %a162) - br label %endif6963 -endif6963: - br label %endif6954 -endif6954: - br label %endif6945 -endif6945: - br label %endif6942 -endif6942: - %t163 = load ptr, ptr %a1 - %t164 = load i64, ptr %a3 - %t165 = load { ptr, i64, i64 }, ptr %a18 - %t166 = load %S.ast.Node, ptr %a2 - %t167 = call i64 @finch.gen.sumVariant(ptr %t163, i64 %t164, { ptr, i64, i64 } %t165, %S.ast.Node %t166) - store i64 %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t172 = load i64, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %t171 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 %t172, %t174 - br i1 %t175, label %range6970, label %inrange6971 -range6970: - call void @finch_panic_index(ptr @.str.4481, i64 3855, i64 %t172, i64 %t174) - unreachable -inrange6971: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds i64, ptr %t176, i64 %t172 - %t178 = load i64, ptr %t177 - %t179 = icmp ne i64 %t170, %t178 - br i1 %t179, label %then6972, label %endif6974 -then6972: - %t180 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t181 = load i64, ptr %a168 - %t182 = load { ptr, i64, i64 }, ptr %t180 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 %t181, %t183 - br i1 %t184, label %range6975, label %inrange6976 -range6975: - call void @finch_panic_index(ptr @.str.4482, i64 3856, i64 %t181, i64 %t183) - unreachable -inrange6976: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds i64, ptr %t185, i64 %t181 - %t187 = load i64, ptr %t186 - %t188 = icmp eq i64 %t187, 0 - br i1 %t188, label %then6977, label %endif6979 -then6977: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t191, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.4483, i64 27, i64 0 }, ptr %a194 - call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a192 - %t196 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t195, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t195, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - call void @finch.gen.fail(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t201) - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif6979 -endif6979: - %t203 = load ptr, ptr %a1 - %t204 = load %S.ast.Node, ptr %a2 - %t205 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4484, i64 7, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a206 - %t210 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t211 = load i64, ptr %a168 - %t212 = load { ptr, i64, i64 }, ptr %t210 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range6980, label %inrange6981 -range6980: - call void @finch_panic_index(ptr @.str.4485, i64 3859, i64 %t211, i64 %t213) - unreachable -inrange6981: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds i64, ptr %t215, i64 %t211 - %t217 = load i64, ptr %t216 - call void @finch_str_from_int(ptr %a218, i64 %t217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t209, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - store { ptr, i64, i64 } %t209, ptr %a223 - call void @finch_str_drop(ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t225, ptr %a227 - store { ptr, i64, i64 } { ptr @.str.4486, i64 27, i64 0 }, ptr %a228 - call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) - store { ptr, i64, i64 } %t225, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load { ptr, i64, i64 }, ptr %a226 - %t231 = load { ptr, i64, i64 }, ptr %a18 - 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) - store { ptr, i64, i64 } %t230, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.4487, i64 27, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.fail(ptr %t203, %S.ast.Node %t204, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a242 - call void @finch_str_drop(ptr %a242) - br label %endif6974 -endif6974: - store i64 0, ptr %a243 - br label %each.cond6982 -each.cond6982: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = load i64, ptr %a243 - %t247 = icmp slt i64 %t246, %t245 - br i1 %t247, label %each.body6983, label %each.end6985 -each.body6983: - %t248 = load ptr, ptr %a19 - %t249 = getelementptr inbounds %S.ast.Node, ptr %t248, i64 %t246 - %t250 = load %S.ast.Node, ptr %t249 - store %S.ast.Node %t250, ptr %a251 - %t252 = getelementptr inbounds %S.ast.Node, ptr %a251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4488, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp eq i32 %t256, 0 - br i1 %t257, label %then6986, label %endif6988 -then6986: - %t258 = load ptr, ptr %a1 - %t259 = load %S.ast.Node, ptr %a251 - call void @finch.gen.fail(ptr %t258, %S.ast.Node %t259, { ptr, i64, i64 } { ptr @.str.4489, i64 50, i64 0 }) - br label %endif6988 -endif6988: - br label %each.step6984 -each.step6984: - %t260 = load i64, ptr %a243 - %t261 = add i64 %t260, 1 - store i64 %t261, ptr %a243 - br label %each.cond6982 -each.end6985: - %t262 = load i64, ptr %a168 - %t263 = insertvalue %S.gen.SumPat zeroinitializer, i64 %t262, 0 - %t264 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch.copy.arr_S_ast_Node(ptr %a266, ptr %a265) - %t267 = load { ptr, i64, i64 }, ptr %a266 - %t268 = insertvalue %S.gen.SumPat %t263, { ptr, i64, i64 } %t267, 1 - call void @finch.drop.arr_S_ast_Node(ptr %a19) - call void @finch_str_drop(ptr %a18) - call void @finch.drop.S_gen_SumDef(ptr %a17) - ret %S.gen.SumPat %t268 -} - -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 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6989, label %ok6990 -panic6989: - call void @finch_panic(ptr @.str.4490, i64 3871, ptr @.str.4491) - unreachable -ok6990: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6991, label %inrange6992 -range6991: - call void @finch_panic_index(ptr @.str.4492, i64 3871, i64 %t7, i64 %t9) - unreachable -inrange6992: - %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.cond6993 -find.cond6993: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6994, label %find.end6997 -find.body6994: - %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.hit6995, label %find.next6996 -find.hit6995: - store i64 %t26, ptr %a22 - br label %find.end6997 -find.next6996: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6993 -find.end6997: - %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 %then6998, label %endif7000 -then6998: - %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.4493, 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.4494, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t51, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t51, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4495, i64 11, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4496, i64 2, i64 0 }, ptr %a66 - call void @finch_str_join(ptr %a67, ptr %t64, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4497, i64 1, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif7000 -endif7000: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a2 - %t83 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t84 = load i64, ptr %t83 - %t85 = add i64 %t84, 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t90 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } { ptr @.str.4498, i64 9, i64 0 }, ptr %a92 - store { ptr, i64, i64 } %t90, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4499, i64 1, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t99, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t99, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.4500, i64 3, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t113 = load i64, ptr %a36 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range7001, label %inrange7002 -range7001: - call void @finch_panic_index(ptr @.str.4501, i64 3876, i64 %t113, i64 %t115) - unreachable -inrange7002: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t113 - %t119 = load i64, ptr %t118 - call void @finch_str_from_int(ptr %a120, i64 %t119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t111, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t111, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t127, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.4502, i64 4, i64 0 }, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t127, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - call void @finch.gen.noteRef(ptr %t81, %S.ast.Node %t82, i64 %t85, i64 %t88, { ptr, i64, i64 } %t132, { ptr, i64, i64 } { ptr @.str.4503, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t135 = load i64, ptr %a36 - %t136 = load { ptr, i64, i64 }, ptr %t134 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 %t135, %t137 - br i1 %t138, label %range7003, label %inrange7004 -range7003: - call void @finch_panic_index(ptr @.str.4504, i64 3877, i64 %t135, i64 %t137) - unreachable -inrange7004: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds i64, ptr %t139, i64 %t135 - %t141 = load i64, ptr %t140 - call void @finch_str_from_int(ptr %a142, i64 %t141) - %t143 = load { ptr, i64, i64 }, ptr %a142 - %t144 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t143, 0 - %t145 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4505, i64 4, i64 0 }, 0 - %t146 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - call void @finch_str_copy(ptr %a149, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - %t151 = insertvalue %S.ast.Type %t145, { ptr, i64, i64 } %t150, 2 - %t152 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t153, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = insertvalue %S.ast.Type %t151, { ptr, i64, i64 } %t156, 3 - %t158 = insertvalue %S.gen.Val %t144, %S.ast.Type %t157, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t158 -} - -define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca i1, align 16 - %a13 = alloca i64, align 16 - %a25 = alloca i64, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a157 = alloca %S.gen.Ref, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a170 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a241 = alloca %S.ast.Type, align 16 - %a242 = alloca i1, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca i64, align 16 - %a268 = alloca i64, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca %S.ast.Type, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.ast.Type, align 16 - %a335 = alloca %S.gen.Ref, align 16 - %a337 = alloca %S.ast.Type, align 16 - %a338 = alloca %S.ast.Type, align 16 - %a341 = alloca %S.ast.Type, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = 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 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = 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 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %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 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca %S.ast.Type, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a616 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a671 = 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 - %a692 = alloca %S.gen.StructDef, align 16 - %a693 = alloca %S.gen.StructDef, align 16 - %a695 = alloca %S.gen.StructDef, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca i64, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a726 = 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 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a769 = alloca %S.ast.Type, align 16 - %a771 = alloca %S.ast.Type, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a855 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca %S.ast.Type, align 16 - %a861 = alloca %S.ast.Type, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %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 - %a887 = 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 - %a900 = 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 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a917 = alloca %S.ast.Type, align 16 - %a918 = alloca %S.ast.Type, align 16 - %a921 = alloca %S.gen.Val, align 16 - %a935 = alloca %S.ast.Type, align 16 - %a936 = alloca %S.ast.Type, align 16 - %a941 = alloca %S.gen.Val, align 16 - %a947 = alloca %S.gen.Val, align 16 - %a948 = 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 %range7005, label %inrange7006 -range7005: - call void @finch_panic_index(ptr @.str.4506, i64 3881, i64 0, i64 %t7) - unreachable -inrange7006: - %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.sumNamed(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 %then7007, label %endif7009 -then7007: - %t16 = load i1, ptr %a3 - br i1 %t16, label %then7010, label %endif7012 -then7010: - %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.4507, i64 37, i64 0 }) - br label %endif7012 -endif7012: - %t19 = load ptr, ptr %a1 - %t20 = load i64, ptr %a13 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = load %S.ast.Node, ptr %a2 - %t24 = call i64 @finch.gen.sumVariant(ptr %t19, i64 %t20, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic7013, label %ok7014 -panic7013: - call void @finch_panic(ptr @.str.4508, i64 3887, ptr @.str.4509) - unreachable -ok7014: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 22 - %t29 = load i64, ptr %a13 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range7015, label %inrange7016 -range7015: - call void @finch_panic_index(ptr @.str.4510, i64 3887, i64 %t29, i64 %t31) - unreachable -inrange7016: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.gen.SumDef, ptr %t33, i64 %t29 - %t35 = getelementptr inbounds %S.gen.SumDef, ptr %t34, i32 0, i32 3 - %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 %range7017, label %inrange7018 -range7017: - call void @finch_panic_index(ptr @.str.4511, i64 3887, i64 %t36, i64 %t38) - unreachable -inrange7018: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds i64, ptr %t40, i64 %t36 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then7019, label %endif7021 -then7019: - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Node, ptr %a2 - %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 %a49 - store { ptr, i64, i64 } { ptr @.str.4512, 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 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic7022, label %ok7023 -panic7022: - call void @finch_panic(ptr @.str.4513, i64 3888, ptr @.str.4514) - unreachable -ok7023: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 22 - %t55 = load i64, ptr %a13 - %t56 = load { ptr, i64, i64 }, ptr %t54 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range7024, label %inrange7025 -range7024: - call void @finch_panic_index(ptr @.str.4515, i64 3888, i64 %t55, i64 %t57) - unreachable -inrange7025: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds %S.gen.SumDef, ptr %t59, i64 %t55 - %t61 = getelementptr inbounds %S.gen.SumDef, ptr %t60, i32 0, i32 3 - %t62 = load i64, ptr %a25 - %t63 = load { ptr, i64, i64 }, ptr %t61 - %t64 = extractvalue { ptr, i64, i64 } %t63, 1 - %t65 = icmp uge i64 %t62, %t64 - br i1 %t65, label %range7026, label %inrange7027 -range7026: - call void @finch_panic_index(ptr @.str.4516, i64 3888, i64 %t62, i64 %t64) - unreachable -inrange7027: - %t66 = extractvalue { ptr, i64, i64 } %t63, 0 - %t67 = getelementptr inbounds i64, ptr %t66, i64 %t62 - %t68 = load i64, ptr %t67 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t51, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t51, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4517, i64 11, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = load ptr, ptr %a1 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic7028, label %ok7029 -panic7028: - call void @finch_panic(ptr @.str.4518, i64 3888, ptr @.str.4519) - unreachable -ok7029: - %t84 = getelementptr inbounds %S.gen.Gen, ptr %t82, i32 0, i32 22 - %t85 = load i64, ptr %a13 - %t86 = load { ptr, i64, i64 }, ptr %t84 - %t87 = extractvalue { ptr, i64, i64 } %t86, 1 - %t88 = icmp uge i64 %t85, %t87 - br i1 %t88, label %range7030, label %inrange7031 -range7030: - call void @finch_panic_index(ptr @.str.4520, i64 3888, i64 %t85, i64 %t87) - unreachable -inrange7031: - %t89 = extractvalue { ptr, i64, i64 } %t86, 0 - %t90 = getelementptr inbounds %S.gen.SumDef, ptr %t89, i64 %t85 - %t91 = getelementptr inbounds %S.gen.SumDef, ptr %t90, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t81, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t81, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4521, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4522, i64 5, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - call void @finch.gen.fail(ptr %t44, %S.ast.Node %t45, { ptr, i64, i64 } %t114) - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_drop(ptr %a115) - br label %endif7021 -endif7021: - store { ptr, i64, i64 } zeroinitializer, ptr %a116 - %t117 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a13 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = load { ptr, i64, i64 }, ptr %a116 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = call %S.gen.Val @finch.gen.sumMake(ptr %t118, i64 %t119, { ptr, i64, i64 } %t121, { ptr, i64, i64 } %t122, %S.ast.Node %t123) - %t125 = insertvalue %S.gen.Ref %t117, %S.gen.Val %t124, 2 - call void @finch.drop.arr_S_ast_Node(ptr %a116) - ret %S.gen.Ref %t125 -endif7009: - %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 %range7032, label %inrange7033 -range7032: - call void @finch_panic_index(ptr @.str.4523, i64 3893, i64 0, i64 %t129) - unreachable -inrange7033: - %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 i64 @finch.gen.enumNamed(ptr %t126, %S.ast.Node %t133) - store i64 %t134, ptr %a135 - %t136 = load i64, ptr %a135 - %t137 = icmp sge i64 %t136, 0 - br i1 %t137, label %then7034, label %endif7036 -then7034: - %t138 = load i1, ptr %a3 - br i1 %t138, label %then7037, label %endif7039 -then7037: - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t139, %S.ast.Node %t140, { ptr, i64, i64 } { ptr @.str.4524, i64 37, i64 0 }) - br label %endif7039 -endif7039: - %t141 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Node, ptr %a2 - %t144 = load i64, ptr %a135 - %t145 = call %S.gen.Val @finch.gen.enumValue(ptr %t142, %S.ast.Node %t143, i64 %t144) - %t146 = insertvalue %S.gen.Ref %t141, %S.gen.Val %t145, 2 - ret %S.gen.Ref %t146 -endif7036: - %t147 = load ptr, ptr %a1 - %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 %range7040, label %inrange7041 -range7040: - call void @finch_panic_index(ptr @.str.4525, i64 3900, i64 0, i64 %t150) - unreachable -inrange7041: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 0 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = load i1, ptr %a3 - %t156 = call %S.gen.Ref @finch.gen.ref(ptr %t147, %S.ast.Node %t154, i1 %t155) - store %S.gen.Ref %t156, ptr %a157 - %t158 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t159 = getelementptr inbounds %S.gen.Val, ptr %t158, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - store %S.ast.Type %t163, ptr %a164 - %t165 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t166 = load i1, ptr %t165 - br i1 %t166, label %then7042, label %endif7044 -then7042: - %t167 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t168 = getelementptr inbounds %S.gen.Place, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Type, ptr %t168 - store %S.ast.Type %t169, ptr %a170 - call void @finch.copy.S_ast_Type(ptr %a171, ptr %a170) - %t172 = load %S.ast.Type, ptr %a171 - %t173 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t172, ptr %a164 - store %S.ast.Type %t173, ptr %a174 - call void @finch.drop.S_ast_Type(ptr %a174) - br label %endif7044 -endif7044: - %t175 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t176 = load { ptr, i64, i64 }, ptr %t175 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4526, 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 %then7045, label %endif7047 -then7045: - %t181 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t182 = getelementptr inbounds %S.gen.Val, ptr %t181, i32 0, i32 0 - %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 - store { ptr, i64, i64 } %t186, ptr %a187 - %t188 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t189 = load i1, ptr %t188 - br i1 %t189, label %then7048, label %endif7050 -then7048: - %t190 = load ptr, ptr %a1 - %t191 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t192 = getelementptr inbounds %S.gen.Place, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t190, { ptr, i64, i64 } { ptr @.str.4527, i64 3, i64 0 }, { ptr, i64, i64 } %t193) - %t195 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t194, ptr %a187 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %endif7050 -endif7050: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = icmp eq i64 %t199, 0 - br i1 %t200, label %then7051, label %endif7053 -then7051: - %t201 = load ptr, ptr %a1 - %t202 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t201, %S.ast.Node %t202, { ptr, i64, i64 } { ptr @.str.4528, i64 57, i64 0 }) - br label %endif7053 -endif7053: - %t203 = load ptr, ptr %a1 - %t204 = load ptr, ptr %a1 - %t205 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4529, i64 12, 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.4530, i64 6, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } { ptr @.str.4531, 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 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4532, i64 18, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t203, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t227, %S.ast.Node %t228) - store { ptr, i64, i64 } %t215, ptr %a229 - call void @finch_str_drop(ptr %a229) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = extractvalue { ptr, i64, i64 } %t232, 1 - %t234 = icmp uge i64 0, %t233 - br i1 %t234, label %range7054, label %inrange7055 -range7054: - call void @finch_panic_index(ptr @.str.4533, i64 3914, i64 0, i64 %t233) - unreachable -inrange7055: - %t235 = extractvalue { ptr, i64, i64 } %t232, 0 - %t236 = getelementptr inbounds %S.ast.Type, ptr %t235, i64 0 - %t237 = load %S.ast.Type, ptr %t236 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - store %S.ast.Type %t240, ptr %a241 - store i1 false, ptr %a242 - %t243 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.4534, i64 6, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then7056, label %endif7058 -then7056: - %t249 = load ptr, ptr %a1 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic7059, label %ok7060 -panic7059: - call void @finch_panic(ptr @.str.4535, i64 3917, ptr @.str.4536) - unreachable -ok7060: - %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 16 - %t252 = load ptr, ptr %a1 - %t253 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 3 - %t254 = load { ptr, i64, i64 }, ptr %t253 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 2 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = call i64 @finch.gen.findStruct(ptr %t252, { ptr, i64, i64 } %t254, { ptr, i64, i64 } %t256) - %t258 = load { ptr, i64, i64 }, ptr %t251 - %t259 = extractvalue { ptr, i64, i64 } %t258, 1 - %t260 = icmp uge i64 %t257, %t259 - br i1 %t260, label %range7061, label %inrange7062 -range7061: - call void @finch_panic_index(ptr @.str.4537, i64 3917, i64 %t257, i64 %t259) - unreachable -inrange7062: - %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 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - store i64 -1, ptr %a265 - %t266 = load i64, ptr %t264 - %t267 = load ptr, ptr %t263 - store i64 0, ptr %a268 - br label %find.cond7063 -find.cond7063: - %t269 = load i64, ptr %a268 - %t270 = icmp slt i64 %t269, %t266 - br i1 %t270, label %find.body7064, label %find.end7067 -find.body7064: - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i64 %t269 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.4538, i64 5, i64 0 }, ptr %a274 - %t275 = call i32 @finch_str_eq(ptr %a273, ptr %a274) - %t276 = icmp ne i32 %t275, 0 - br i1 %t276, label %find.hit7065, label %find.next7066 -find.hit7065: - store i64 %t269, ptr %a265 - br label %find.end7067 -find.next7066: - %t277 = add i64 %t269, 1 - store i64 %t277, ptr %a268 - br label %find.cond7063 -find.end7067: - %t278 = load i64, ptr %a265 - %t279 = icmp sge i64 %t278, 0 - store i1 %t279, ptr %a242 - br label %endif7058 -endif7058: - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4539, 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.from7068 -logic.from7068: - br i1 %t285, label %logic.rhs7069, label %logic.end7070 -logic.rhs7069: - %t286 = load i1, ptr %a242 - %t287 = xor i1 %t286, true - br label %logic.rend7071 -logic.rend7071: - br label %logic.end7070 -logic.end7070: - %t288 = phi i1 [ false, %logic.from7068 ], [ %t287, %logic.rend7071 ] - br i1 %t288, label %then7072, label %endif7074 -then7072: - %t289 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t290 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t295, ptr %a296 - call void @finch.copy.S_ast_Type(ptr %a297, ptr %a296) - %t298 = load %S.ast.Type, ptr %a297 - %t299 = insertvalue %S.gen.Place %t294, %S.ast.Type %t298, 1 - %t300 = insertvalue %S.gen.Ref %t289, %S.gen.Place %t299, 1 - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t300 -endif7074: - %t301 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.4540, i64 6, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp eq i32 %t305, 0 - br i1 %t306, label %then7075, label %endif7077 -then7075: - %t307 = load ptr, ptr %a1 - %t308 = load %S.ast.Node, ptr %a2 - %t309 = load %S.ast.Type, ptr %a164 - %t310 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t309) - store { ptr, i64, i64 } { ptr @.str.4541, i64 2, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4542, i64 43, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - call void @finch.gen.fail(ptr %t307, %S.ast.Node %t308, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_drop(ptr %a321) - br label %endif7077 -endif7077: - %t322 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t323 = load { ptr, i64, i64 }, ptr %a187 - 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.gen.Place zeroinitializer, { ptr, i64, i64 } %t326, 0 - %t328 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t328, ptr %a329 - call void @finch.copy.S_ast_Type(ptr %a330, ptr %a329) - %t331 = load %S.ast.Type, ptr %a330 - %t332 = insertvalue %S.gen.Place %t327, %S.ast.Type %t331, 1 - %t333 = insertvalue %S.gen.Ref %t322, %S.gen.Place %t332, 1 - %t334 = load %S.gen.Ref, ptr %a157 - store %S.gen.Ref %t333, ptr %a157 - store %S.gen.Ref %t334, ptr %a335 - call void @finch.drop.S_gen_Ref(ptr %a335) - %t336 = load %S.ast.Type, ptr %a241 - 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 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t339, ptr %a164 - store %S.ast.Type %t340, ptr %a341 - call void @finch.drop.S_ast_Type(ptr %a341) - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - br label %endif7047 -endif7047: - %t342 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.4543, i64 5, i64 0 }, ptr %a345 - %t346 = call i32 @finch_str_eq(ptr %a344, ptr %a345) - %t347 = icmp ne i32 %t346, 0 - br i1 %t347, label %then7078, label %endif7080 -then7078: - %t348 = load i1, ptr %a3 - br i1 %t348, label %then7081, label %endif7083 -then7081: - %t349 = load ptr, ptr %a1 - %t350 = load %S.ast.Node, ptr %a2 - %t351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t352 = load { ptr, i64, i64 }, ptr %t351 - store { ptr, i64, i64 } { ptr @.str.4544, i64 1, 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.4545, i64 26, i64 0 }, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t356, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - call void @finch.gen.fail(ptr %t349, %S.ast.Node %t350, { ptr, i64, i64 } %t361) - store { ptr, i64, i64 } %t361, ptr %a362 - call void @finch_str_drop(ptr %a362) - br label %endif7083 -endif7083: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4546, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then7084, label %endif7086 -then7084: - %t369 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t370 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 4 - %t371 = load i64, ptr %t370 - call void @finch_str_from_int(ptr %a372, i64 %t371) - %t373 = load { ptr, i64, i64 }, ptr %a372 - %t374 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t373, 0 - %t375 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4547, i64 3, i64 0 }) - %t376 = insertvalue %S.gen.Val %t374, %S.ast.Type %t375, 1 - %t377 = insertvalue %S.gen.Val %t376, i1 true, 3 - %t378 = insertvalue %S.gen.Ref %t369, %S.gen.Val %t377, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t378 -endif7086: - %t379 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t380 = load { ptr, i64, i64 }, ptr %t379 - store { ptr, i64, i64 } %t380, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.4548, i64 3, i64 0 }, ptr %a382 - %t383 = call i32 @finch_str_eq(ptr %a381, ptr %a382) - %t384 = icmp eq i32 %t383, 0 - br i1 %t384, label %then7087, label %endif7089 -then7087: - %t385 = load ptr, ptr %a1 - %t386 = load %S.ast.Node, ptr %a2 - %t387 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t388 = load { ptr, i64, i64 }, ptr %t387 - store { ptr, i64, i64 } { ptr @.str.4549, i64 34, 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.4550, i64 1, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.fail(ptr %t385, %S.ast.Node %t386, { ptr, i64, i64 } %t397) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - br label %endif7089 -endif7089: - %t399 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t400 = load i1, ptr %t399 - %t401 = xor i1 %t400, true - br i1 %t401, label %then7090, label %endif7092 -then7090: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4551, i64 48, i64 0 }) - br label %endif7092 -endif7092: - %t404 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t405 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t406 = getelementptr inbounds %S.gen.Place, ptr %t405, i32 0, i32 0 - %t407 = load { ptr, i64, i64 }, ptr %t406 - store { ptr, i64, i64 } %t407, ptr %a408 - call void @finch_str_copy(ptr %a409, ptr %a408) - %t410 = load { ptr, i64, i64 }, ptr %a409 - %t411 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t410, 0 - %t412 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t413 = load { ptr, i64, i64 }, ptr %t412 - %t414 = extractvalue { ptr, i64, i64 } %t413, 1 - %t415 = icmp uge i64 0, %t414 - br i1 %t415, label %range7093, label %inrange7094 -range7093: - call void @finch_panic_index(ptr @.str.4552, i64 3941, i64 0, i64 %t414) - unreachable -inrange7094: - %t416 = extractvalue { ptr, i64, i64 } %t413, 0 - %t417 = getelementptr inbounds %S.ast.Type, ptr %t416, i64 0 - %t418 = load %S.ast.Type, ptr %t417 - %t419 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val %t411, %S.ast.Type %t419, 1 - %t421 = insertvalue %S.gen.Ref %t404, %S.gen.Val %t420, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t421 -endif7080: - %t422 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t423 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t423, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.4553, i64 5, i64 0 }, ptr %a425 - %t426 = call i32 @finch_str_eq(ptr %a424, ptr %a425) - %t427 = icmp ne i32 %t426, 0 - br label %logic.from7095 -logic.from7095: - br i1 %t427, label %logic.end7097, label %logic.rhs7096 -logic.rhs7096: - %t428 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.4554, i64 3, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.rend7098 -logic.rend7098: - br label %logic.end7097 -logic.end7097: - %t434 = phi i1 [ true, %logic.from7095 ], [ %t433, %logic.rend7098 ] - br label %logic.from7099 -logic.from7099: - br i1 %t434, label %logic.rhs7100, label %logic.end7101 -logic.rhs7100: - %t435 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t436, ptr %a437 - store { ptr, i64, i64 } { ptr @.str.4555, i64 3, i64 0 }, ptr %a438 - %t439 = call i32 @finch_str_eq(ptr %a437, ptr %a438) - %t440 = icmp ne i32 %t439, 0 - br label %logic.rend7102 -logic.rend7102: - br label %logic.end7101 -logic.end7101: - %t441 = phi i1 [ false, %logic.from7099 ], [ %t440, %logic.rend7102 ] - br i1 %t441, label %then7103, label %endif7105 -then7103: - %t442 = load i1, ptr %a3 - br i1 %t442, label %then7106, label %endif7108 -then7106: - %t443 = load ptr, ptr %a1 - %t444 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t443, %S.ast.Node %t444, { ptr, i64, i64 } { ptr @.str.4556, i64 30, i64 0 }) - br label %endif7108 -endif7108: - %t445 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t446 = load i1, ptr %t445 - %t447 = xor i1 %t446, true - br label %logic.from7109 -logic.from7109: - br i1 %t447, label %logic.rhs7110, label %logic.end7111 -logic.rhs7110: - %t448 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t449 = getelementptr inbounds %S.gen.Val, ptr %t448, i32 0, i32 2 - %t450 = load i1, ptr %t449 - br label %logic.rend7112 -logic.rend7112: - br label %logic.end7111 -logic.end7111: - %t451 = phi i1 [ false, %logic.from7109 ], [ %t450, %logic.rend7112 ] - br label %logic.from7113 -logic.from7113: - br i1 %t451, label %logic.rhs7114, label %logic.end7115 -logic.rhs7114: - %t452 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t453 = getelementptr inbounds %S.gen.Val, ptr %t452, i32 0, i32 0 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.4558, i64 1, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_starts(ptr %a455, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend7116 -logic.rend7116: - br label %logic.end7115 -logic.end7115: - %t460 = phi i1 [ false, %logic.from7113 ], [ %t459, %logic.rend7116 ] - br i1 %t460, label %then7117, label %endif7119 -then7117: - %t461 = load ptr, ptr %a1 - %t462 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t461, %S.ast.Node %t462, { ptr, i64, i64 } { ptr @.str.4559, i64 53, i64 0 }) - br label %endif7119 -endif7119: - %t463 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t464 = getelementptr inbounds %S.gen.Val, ptr %t463, i32 0, i32 0 - %t465 = load { ptr, i64, i64 }, ptr %t464 - store { ptr, i64, i64 } %t465, ptr %a466 - call void @finch_str_copy(ptr %a467, ptr %a466) - %t468 = load { ptr, i64, i64 }, ptr %a467 - store { ptr, i64, i64 } %t468, ptr %a469 - %t470 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t471 = load i1, ptr %t470 - br i1 %t471, label %then7120, label %endif7122 -then7120: - %t472 = load ptr, ptr %a1 - %t473 = load ptr, ptr %a1 - %t474 = load %S.ast.Type, ptr %a164 - %t475 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t473, %S.ast.Type %t474) - %t476 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t477 = getelementptr inbounds %S.gen.Place, ptr %t476, i32 0, i32 0 - %t478 = load { ptr, i64, i64 }, ptr %t477 - %t479 = call { ptr, i64, i64 } @finch.gen.load(ptr %t472, { ptr, i64, i64 } %t475, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t475, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t479, ptr %a469 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif7122 -endif7122: - %t483 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - store { ptr, i64, i64 } %t484, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.4560, i64 3, i64 0 }, ptr %a486 - %t487 = call i32 @finch_str_eq(ptr %a485, ptr %a486) - %t488 = icmp ne i32 %t487, 0 - br i1 %t488, label %then7123, label %endif7125 -then7123: - %t489 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t490 = load ptr, ptr %a1 - %t491 = load { ptr, i64, i64 }, ptr %a469 - %t492 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t490, { ptr, i64, i64 } %t491) - %t493 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t492, 0 - %t494 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4561, i64 4, i64 0 }) - %t495 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t494) - store %S.ast.Type %t494, ptr %a496 - call void @finch.drop.S_ast_Type(ptr %a496) - %t497 = insertvalue %S.gen.Val %t493, %S.ast.Type %t495, 1 - %t498 = insertvalue %S.gen.Ref %t489, %S.gen.Val %t497, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t498 -endif7125: - %t499 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t500 = load ptr, ptr %a1 - %t501 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4562, i64 31, i64 0 }, 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.4563, i64 3, i64 0 }, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t505, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - %t511 = call { ptr, i64, i64 } @finch.gen.op(ptr %t500, { ptr, i64, i64 } %t510) - store { ptr, i64, i64 } %t510, ptr %a512 - call void @finch_str_drop(ptr %a512) - %t513 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t511, 0 - %t514 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range7126, label %inrange7127 -range7126: - call void @finch_panic_index(ptr @.str.4564, i64 3959, i64 0, i64 %t516) - unreachable -inrange7127: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = load %S.ast.Type, ptr %t519 - %t521 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t520) - %t522 = insertvalue %S.gen.Val %t513, %S.ast.Type %t521, 1 - %t523 = insertvalue %S.gen.Ref %t499, %S.gen.Val %t522, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t523 -endif7105: - %t524 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.4565, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br label %logic.from7128 -logic.from7128: - br i1 %t529, label %logic.end7130, label %logic.rhs7129 -logic.rhs7129: - %t530 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t531 = load { ptr, i64, i64 }, ptr %t530 - store { ptr, i64, i64 } %t531, ptr %a532 - store { ptr, i64, i64 } { ptr @.str.4566, i64 3, i64 0 }, ptr %a533 - %t534 = call i32 @finch_str_eq(ptr %a532, ptr %a533) - %t535 = icmp ne i32 %t534, 0 - br label %logic.rend7131 -logic.rend7131: - br label %logic.end7130 -logic.end7130: - %t536 = phi i1 [ true, %logic.from7128 ], [ %t535, %logic.rend7131 ] - br label %logic.from7132 -logic.from7132: - br i1 %t536, label %logic.end7134, label %logic.rhs7133 -logic.rhs7133: - %t537 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.4567, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br label %logic.rend7135 -logic.rend7135: - br label %logic.end7134 -logic.end7134: - %t543 = phi i1 [ true, %logic.from7132 ], [ %t542, %logic.rend7135 ] - br i1 %t543, label %then7136, label %endif7138 -then7136: - %t544 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t545, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.4568, i64 3, i64 0 }, ptr %a547 - %t548 = call i32 @finch_str_eq(ptr %a546, ptr %a547) - %t549 = icmp eq i32 %t548, 0 - br i1 %t549, label %then7139, label %endif7141 -then7139: - %t550 = load ptr, ptr %a1 - %t551 = load %S.ast.Node, ptr %a2 - %t552 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t553 = load { ptr, i64, i64 }, ptr %t552 - store { ptr, i64, i64 } { ptr @.str.4569, i64 37, i64 0 }, ptr %a555 - store { ptr, i64, i64 } %t553, ptr %a556 - call void @finch_str_concat(ptr %a554, ptr %a555, ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t557, ptr %a559 - store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.gen.fail(ptr %t550, %S.ast.Node %t551, { ptr, i64, i64 } %t562) - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif7141 -endif7141: - %t564 = load i1, ptr %a3 - br i1 %t564, label %then7142, label %endif7144 -then7142: - %t565 = load ptr, ptr %a1 - %t566 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t565, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.4571, i64 48, i64 0 }) - br label %endif7144 -endif7144: - %t567 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t568 = load i1, ptr %t567 - br i1 %t568, label %then7145, label %endif7147 -then7145: - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a164 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - store { ptr, i64, i64 } { ptr @.str.4572, i64 23, i64 0 }, ptr %a574 - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - store { ptr, i64, i64 } %t577, ptr %a579 - store { ptr, i64, i64 } { ptr @.str.4573, i64 6, i64 0 }, ptr %a580 - call void @finch_str_concat(ptr %a578, ptr %a579, ptr %a580) - store { ptr, i64, i64 } %t577, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = load { ptr, i64, i64 }, ptr %a578 - %t583 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t584 = getelementptr inbounds %S.gen.Place, ptr %t583, i32 0, i32 0 - %t585 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t582, ptr %a587 - store { ptr, i64, i64 } %t585, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t582, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - store { ptr, i64, i64 } %t590, ptr %a592 - store { ptr, i64, i64 } { ptr @.str.4574, i64 14, i64 0 }, ptr %a593 - call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) - store { ptr, i64, i64 } %t590, ptr %a594 - call void @finch_str_drop(ptr %a594) - %t595 = load { ptr, i64, i64 }, ptr %a591 - %t596 = call { ptr, i64, i64 } @finch.gen.op(ptr %t569, { ptr, i64, i64 } %t595) - store { ptr, i64, i64 } %t595, ptr %a597 - call void @finch_str_drop(ptr %a597) - store { ptr, i64, i64 } %t596, ptr %a598 - %t599 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t600 = load ptr, ptr %a1 - %t601 = load { ptr, i64, i64 }, ptr %a598 - %t602 = call { ptr, i64, i64 } @finch.gen.load(ptr %t600, { ptr, i64, i64 } { ptr @.str.4575, i64 3, i64 0 }, { ptr, i64, i64 } %t601) - %t603 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t602, 0 - %t604 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4576, i64 3, i64 0 }) - %t605 = insertvalue %S.gen.Val %t603, %S.ast.Type %t604, 1 - %t606 = insertvalue %S.gen.Ref %t599, %S.gen.Val %t605, 2 - call void @finch_str_drop(ptr %a598) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t606 -endif7147: - %t607 = load ptr, ptr %a1 - %t608 = load ptr, ptr %a1 - %t609 = load %S.ast.Type, ptr %a164 - %t610 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t608, %S.ast.Type %t609) - store { ptr, i64, i64 } { ptr @.str.4577, i64 13, i64 0 }, ptr %a612 - store { ptr, i64, i64 } %t610, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - store { ptr, i64, i64 } %t615, ptr %a617 - store { ptr, i64, i64 } { ptr @.str.4578, i64 1, i64 0 }, ptr %a618 - call void @finch_str_concat(ptr %a616, ptr %a617, ptr %a618) - store { ptr, i64, i64 } %t615, ptr %a619 - call void @finch_str_drop(ptr %a619) - %t620 = load { ptr, i64, i64 }, ptr %a616 - %t621 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t622 = getelementptr inbounds %S.gen.Val, ptr %t621, i32 0, i32 0 - %t623 = load { ptr, i64, i64 }, ptr %t622 - store { ptr, i64, i64 } %t620, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t620, ptr %a627 - call void @finch_str_drop(ptr %a627) - %t628 = load { ptr, i64, i64 }, ptr %a624 - store { ptr, i64, i64 } %t628, ptr %a630 - store { ptr, i64, i64 } { ptr @.str.4579, i64 3, i64 0 }, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t628, ptr %a632 - call void @finch_str_drop(ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a629 - %t634 = call { ptr, i64, i64 } @finch.gen.op(ptr %t607, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t633, ptr %a635 - call void @finch_str_drop(ptr %a635) - store { ptr, i64, i64 } %t634, ptr %a636 - %t637 = load ptr, ptr %a1 - %t638 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t639 = load %S.gen.Val, ptr %t638 - call void @finch.gen.release(ptr %t637, %S.gen.Val %t639) - %t640 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t641 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t641, ptr %a642 - call void @finch_str_copy(ptr %a643, ptr %a642) - %t644 = load { ptr, i64, i64 }, ptr %a643 - %t645 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t644, 0 - %t646 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4580, i64 3, i64 0 }) - %t647 = insertvalue %S.gen.Val %t645, %S.ast.Type %t646, 1 - %t648 = insertvalue %S.gen.Ref %t640, %S.gen.Val %t647, 2 - call void @finch_str_drop(ptr %a636) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t648 -endif7138: - %t649 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t650 = load { ptr, i64, i64 }, ptr %t649 - store { ptr, i64, i64 } %t650, ptr %a651 - store { ptr, i64, i64 } { ptr @.str.4581, i64 6, i64 0 }, ptr %a652 - %t653 = call i32 @finch_str_eq(ptr %a651, ptr %a652) - %t654 = icmp eq i32 %t653, 0 - br i1 %t654, label %then7148, label %endif7150 -then7148: - %t655 = load ptr, ptr %a1 - %t656 = load %S.ast.Node, ptr %a2 - %t657 = load %S.ast.Type, ptr %a164 - %t658 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t657) - store { ptr, i64, i64 } %t658, ptr %a660 - store { ptr, i64, i64 } { ptr @.str.4582, i64 21, i64 0 }, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t658, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - %t664 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } %t663, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t663, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t670, ptr %a672 - store { ptr, i64, i64 } { ptr @.str.4583, i64 2, i64 0 }, ptr %a673 - call void @finch_str_concat(ptr %a671, ptr %a672, ptr %a673) - store { ptr, i64, i64 } %t670, ptr %a674 - call void @finch_str_drop(ptr %a674) - %t675 = load { ptr, i64, i64 }, ptr %a671 - call void @finch.gen.fail(ptr %t655, %S.ast.Node %t656, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t675, ptr %a676 - call void @finch_str_drop(ptr %a676) - br label %endif7150 -endif7150: - %t677 = load ptr, ptr %a1 - %t678 = icmp eq ptr %t677, null - br i1 %t678, label %panic7151, label %ok7152 -panic7151: - call void @finch_panic(ptr @.str.4584, i64 3979, ptr @.str.4585) - unreachable -ok7152: - %t679 = getelementptr inbounds %S.gen.Gen, ptr %t677, i32 0, i32 16 - %t680 = load ptr, ptr %a1 - %t681 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 3 - %t682 = load { ptr, i64, i64 }, ptr %t681 - %t683 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 2 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findStruct(ptr %t680, { ptr, i64, i64 } %t682, { ptr, i64, i64 } %t684) - %t686 = load { ptr, i64, i64 }, ptr %t679 - %t687 = extractvalue { ptr, i64, i64 } %t686, 1 - %t688 = icmp uge i64 %t685, %t687 - br i1 %t688, label %range7153, label %inrange7154 -range7153: - call void @finch_panic_index(ptr @.str.4586, i64 3979, i64 %t685, i64 %t687) - unreachable -inrange7154: - %t689 = extractvalue { ptr, i64, i64 } %t686, 0 - %t690 = getelementptr inbounds %S.gen.StructDef, ptr %t689, i64 %t685 - %t691 = load %S.gen.StructDef, ptr %t690 - store %S.gen.StructDef %t691, ptr %a692 - call void @finch.copy.S_gen_StructDef(ptr %a693, ptr %a692) - %t694 = load %S.gen.StructDef, ptr %a693 - store %S.gen.StructDef %t694, ptr %a695 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t697 = getelementptr inbounds { ptr, i64, i64 }, ptr %t696, i32 0, i32 1 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t697 - %t702 = load ptr, ptr %t696 - store i64 0, ptr %a703 - br label %find.cond7155 -find.cond7155: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body7156, label %find.end7159 -find.body7156: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit7157, label %find.next7158 -find.hit7157: - store i64 %t704, ptr %a700 - br label %find.end7159 -find.next7158: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond7155 -find.end7159: - %t713 = load i64, ptr %a700 - store i64 %t713, ptr %a714 - %t715 = load i64, ptr %a714 - %t716 = icmp slt i64 %t715, 0 - br i1 %t716, label %then7160, label %endif7162 -then7160: - %t717 = load ptr, ptr %a1 - %t718 = load %S.ast.Node, ptr %a2 - %t719 = load %S.ast.Type, ptr %a164 - %t720 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t719) - store { ptr, i64, i64 } { ptr @.str.4587, i64 11, i64 0 }, ptr %a722 - store { ptr, i64, i64 } %t720, ptr %a723 - call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723) - store { ptr, i64, i64 } %t720, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t725, ptr %a727 - store { ptr, i64, i64 } { ptr @.str.4588, i64 15, i64 0 }, ptr %a728 - call void @finch_str_concat(ptr %a726, ptr %a727, ptr %a728) - store { ptr, i64, i64 } %t725, ptr %a729 - call void @finch_str_drop(ptr %a729) - %t730 = load { ptr, i64, i64 }, ptr %a726 - %t731 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t730, ptr %a734 - store { ptr, i64, i64 } %t732, ptr %a735 - call void @finch_str_concat(ptr %a733, ptr %a734, ptr %a735) - store { ptr, i64, i64 } %t730, ptr %a736 - call void @finch_str_drop(ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a733 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.4589, i64 11, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t744 = getelementptr inbounds { ptr, i64, i64 }, ptr %t743, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4590, i64 2, i64 0 }, ptr %a745 - call void @finch_str_join(ptr %a746, ptr %t743, ptr %a745) - %t747 = load { ptr, i64, i64 }, ptr %a746 - store { ptr, i64, i64 } %t742, ptr %a749 - store { ptr, i64, i64 } %t747, ptr %a750 - call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750) - store { ptr, i64, i64 } %t742, ptr %a751 - call void @finch_str_drop(ptr %a751) - store { ptr, i64, i64 } %t747, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a748 - store { ptr, i64, i64 } %t753, ptr %a755 - store { ptr, i64, i64 } { ptr @.str.4591, i64 1, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - call void @finch.gen.fail(ptr %t717, %S.ast.Node %t718, { ptr, i64, i64 } %t758) - store { ptr, i64, i64 } %t758, ptr %a759 - call void @finch_str_drop(ptr %a759) - br label %endif7162 -endif7162: - %t760 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 12 - %t761 = load i64, ptr %a714 - %t762 = load { ptr, i64, i64 }, ptr %t760 - %t763 = extractvalue { ptr, i64, i64 } %t762, 1 - %t764 = icmp uge i64 %t761, %t763 - br i1 %t764, label %range7163, label %inrange7164 -range7163: - call void @finch_panic_index(ptr @.str.4592, i64 3984, i64 %t761, i64 %t763) - unreachable -inrange7164: - %t765 = extractvalue { ptr, i64, i64 } %t762, 0 - %t766 = getelementptr inbounds %S.ast.Type, ptr %t765, i64 %t761 - %t767 = load %S.ast.Type, ptr %t766 - store %S.ast.Type %t767, ptr %a768 - call void @finch.copy.S_ast_Type(ptr %a769, ptr %a768) - %t770 = load %S.ast.Type, ptr %a769 - store %S.ast.Type %t770, ptr %a771 - %t772 = load ptr, ptr %a1 - %t773 = load %S.ast.Node, ptr %a2 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t775 = load i64, ptr %t774 - %t776 = add i64 %t775, 1 - %t777 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t778 = getelementptr inbounds { ptr, i64, i64 }, ptr %t777, i32 0, i32 1 - %t779 = load i64, ptr %t778 - %t780 = load %S.ast.Type, ptr %a771 - %t781 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t780) - store { ptr, i64, i64 } { ptr @.str.4593, i64 9, i64 0 }, ptr %a783 - store { ptr, i64, i64 } %t781, ptr %a784 - call void @finch_str_concat(ptr %a782, ptr %a783, ptr %a784) - store { ptr, i64, i64 } %t781, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a782 - store { ptr, i64, i64 } %t786, ptr %a788 - store { ptr, i64, i64 } { ptr @.str.4594, i64 1, i64 0 }, ptr %a789 - call void @finch_str_concat(ptr %a787, ptr %a788, ptr %a789) - store { ptr, i64, i64 } %t786, ptr %a790 - call void @finch_str_drop(ptr %a790) - %t791 = load { ptr, i64, i64 }, ptr %a787 - %t792 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t793 = load { ptr, i64, i64 }, ptr %t792 - store { ptr, i64, i64 } %t791, ptr %a795 - store { ptr, i64, i64 } %t793, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t791, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - store { ptr, i64, i64 } %t798, ptr %a800 - store { ptr, i64, i64 } { ptr @.str.4595, i64 4, i64 0 }, ptr %a801 - call void @finch_str_concat(ptr %a799, ptr %a800, ptr %a801) - store { ptr, i64, i64 } %t798, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a799 - call void @finch.gen.noteRef(ptr %t772, %S.ast.Node %t773, i64 %t776, i64 %t779, { ptr, i64, i64 } %t803, { ptr, i64, i64 } { ptr @.str.4596, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t803, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t806 = load i1, ptr %t805 - br i1 %t806, label %then7165, label %endif7167 -then7165: - %t807 = load ptr, ptr %a1 - %t808 = load ptr, ptr %a1 - %t809 = load %S.ast.Type, ptr %a164 - %t810 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t808, %S.ast.Type %t809) - store { ptr, i64, i64 } { ptr @.str.4597, i64 23, i64 0 }, ptr %a812 - store { ptr, i64, i64 } %t810, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - store { ptr, i64, i64 } %t815, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.4598, i64 6, i64 0 }, ptr %a818 - call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818) - store { ptr, i64, i64 } %t815, ptr %a819 - call void @finch_str_drop(ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a816 - %t821 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t822 = getelementptr inbounds %S.gen.Place, ptr %t821, i32 0, i32 0 - %t823 = load { ptr, i64, i64 }, ptr %t822 - store { ptr, i64, i64 } %t820, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t820, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.4599, i64 13, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t835 = load i64, ptr %a714 - %t836 = load { ptr, i64, i64 }, ptr %t834 - %t837 = extractvalue { ptr, i64, i64 } %t836, 1 - %t838 = icmp uge i64 %t835, %t837 - br i1 %t838, label %range7168, label %inrange7169 -range7168: - call void @finch_panic_index(ptr @.str.4600, i64 3987, i64 %t835, i64 %t837) - unreachable -inrange7169: - %t839 = extractvalue { ptr, i64, i64 } %t836, 0 - %t840 = getelementptr inbounds i64, ptr %t839, i64 %t835 - %t841 = load i64, ptr %t840 - call void @finch_str_from_int(ptr %a842, i64 %t841) - %t843 = load { ptr, i64, i64 }, ptr %a842 - store { ptr, i64, i64 } %t833, ptr %a845 - store { ptr, i64, i64 } %t843, ptr %a846 - call void @finch_str_concat(ptr %a844, ptr %a845, ptr %a846) - store { ptr, i64, i64 } %t833, ptr %a847 - call void @finch_str_drop(ptr %a847) - store { ptr, i64, i64 } %t843, ptr %a848 - call void @finch_str_drop(ptr %a848) - %t849 = load { ptr, i64, i64 }, ptr %a844 - %t850 = call { ptr, i64, i64 } @finch.gen.op(ptr %t807, { ptr, i64, i64 } %t849) - store { ptr, i64, i64 } %t849, ptr %a851 - call void @finch_str_drop(ptr %a851) - store { ptr, i64, i64 } %t850, ptr %a852 - %t853 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t854 = load { ptr, i64, i64 }, ptr %a852 - store { ptr, i64, i64 } %t854, ptr %a855 - call void @finch_str_copy(ptr %a856, ptr %a855) - %t857 = load { ptr, i64, i64 }, ptr %a856 - %t858 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t857, 0 - %t859 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t859, ptr %a860 - call void @finch.copy.S_ast_Type(ptr %a861, ptr %a860) - %t862 = load %S.ast.Type, ptr %a861 - %t863 = insertvalue %S.gen.Place %t858, %S.ast.Type %t862, 1 - %t864 = insertvalue %S.gen.Ref %t853, %S.gen.Place %t863, 1 - call void @finch_str_drop(ptr %a852) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t864 -endif7167: - %t865 = load ptr, ptr %a1 - %t866 = load ptr, ptr %a1 - %t867 = load %S.ast.Type, ptr %a164 - %t868 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t866, %S.ast.Type %t867) - store { ptr, i64, i64 } { ptr @.str.4601, i64 13, i64 0 }, ptr %a870 - store { ptr, i64, i64 } %t868, ptr %a871 - call void @finch_str_concat(ptr %a869, ptr %a870, ptr %a871) - store { ptr, i64, i64 } %t868, ptr %a872 - call void @finch_str_drop(ptr %a872) - %t873 = load { ptr, i64, i64 }, ptr %a869 - store { ptr, i64, i64 } %t873, ptr %a875 - store { ptr, i64, i64 } { ptr @.str.4602, i64 1, i64 0 }, ptr %a876 - call void @finch_str_concat(ptr %a874, ptr %a875, ptr %a876) - store { ptr, i64, i64 } %t873, ptr %a877 - call void @finch_str_drop(ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a874 - %t879 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t880 = getelementptr inbounds %S.gen.Val, ptr %t879, i32 0, i32 0 - %t881 = load { ptr, i64, i64 }, ptr %t880 - store { ptr, i64, i64 } %t878, ptr %a883 - store { ptr, i64, i64 } %t881, ptr %a884 - call void @finch_str_concat(ptr %a882, ptr %a883, ptr %a884) - store { ptr, i64, i64 } %t878, ptr %a885 - call void @finch_str_drop(ptr %a885) - %t886 = load { ptr, i64, i64 }, ptr %a882 - store { ptr, i64, i64 } %t886, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.4603, i64 2, i64 0 }, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - store { ptr, i64, i64 } %t886, ptr %a890 - call void @finch_str_drop(ptr %a890) - %t891 = load { ptr, i64, i64 }, ptr %a887 - %t892 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t893 = load i64, ptr %a714 - %t894 = load { ptr, i64, i64 }, ptr %t892 - %t895 = extractvalue { ptr, i64, i64 } %t894, 1 - %t896 = icmp uge i64 %t893, %t895 - br i1 %t896, label %range7170, label %inrange7171 -range7170: - call void @finch_panic_index(ptr @.str.4604, i64 3990, i64 %t893, i64 %t895) - unreachable -inrange7171: - %t897 = extractvalue { ptr, i64, i64 } %t894, 0 - %t898 = getelementptr inbounds i64, ptr %t897, i64 %t893 - %t899 = load i64, ptr %t898 - call void @finch_str_from_int(ptr %a900, i64 %t899) - %t901 = load { ptr, i64, i64 }, ptr %a900 - store { ptr, i64, i64 } %t891, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - store { ptr, i64, i64 } %t891, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t901, ptr %a906 - call void @finch_str_drop(ptr %a906) - %t907 = load { ptr, i64, i64 }, ptr %a902 - %t908 = call { ptr, i64, i64 } @finch.gen.op(ptr %t865, { ptr, i64, i64 } %t907) - store { ptr, i64, i64 } %t907, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t908, ptr %a910 - %t911 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t911, ptr %a912 - call void @finch_str_copy(ptr %a913, ptr %a912) - %t914 = load { ptr, i64, i64 }, ptr %a913 - %t915 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t914, 0 - %t916 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t916, ptr %a917 - call void @finch.copy.S_ast_Type(ptr %a918, ptr %a917) - %t919 = load %S.ast.Type, ptr %a918 - %t920 = insertvalue %S.gen.Val %t915, %S.ast.Type %t919, 1 - store %S.gen.Val %t920, ptr %a921 - %t922 = load ptr, ptr %a1 - %t923 = load %S.ast.Type, ptr %a771 - %t924 = call i1 @finch.gen.owning(ptr %t922, %S.ast.Type %t923) - br label %logic.from7172 -logic.from7172: - br i1 %t924, label %logic.rhs7173, label %logic.end7174 -logic.rhs7173: - %t925 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t926 = getelementptr inbounds %S.gen.Val, ptr %t925, i32 0, i32 2 - %t927 = load i1, ptr %t926 - br label %logic.rend7175 -logic.rend7175: - br label %logic.end7174 -logic.end7174: - %t928 = phi i1 [ false, %logic.from7172 ], [ %t927, %logic.rend7175 ] - br i1 %t928, label %then7176, label %endif7178 -then7176: - %t929 = load ptr, ptr %a1 - %t930 = load { ptr, i64, i64 }, ptr %a910 - %t931 = load %S.ast.Type, ptr %a771 - %t932 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t929, { ptr, i64, i64 } %t930, %S.ast.Type %t931) - %t933 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t932, 0 - %t934 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t934, ptr %a935 - call void @finch.copy.S_ast_Type(ptr %a936, ptr %a935) - %t937 = load %S.ast.Type, ptr %a936 - %t938 = insertvalue %S.gen.Val %t933, %S.ast.Type %t937, 1 - %t939 = insertvalue %S.gen.Val %t938, i1 true, 2 - %t940 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t939, ptr %a921 - store %S.gen.Val %t940, ptr %a941 - call void @finch.drop.S_gen_Val(ptr %a941) - br label %endif7178 -endif7178: - %t942 = load ptr, ptr %a1 - %t943 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t944 = load %S.gen.Val, ptr %t943 - call void @finch.gen.release(ptr %t942, %S.gen.Val %t944) - %t945 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t946 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t946, ptr %a947 - call void @finch.copy.S_gen_Val(ptr %a948, ptr %a947) - %t949 = load %S.gen.Val, ptr %a948 - %t950 = insertvalue %S.gen.Ref %t945, %S.gen.Val %t949, 2 - call void @finch.drop.S_gen_Val(ptr %a921) - call void @finch_str_drop(ptr %a910) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t950 -} - -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 - %a20 = alloca i64, align 16 - %a32 = alloca %S.gen.Ref, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range7179, label %inrange7180 -range7179: - call void @finch_panic_index(ptr @.str.4605, i64 4000, i64 0, i64 %t7) - unreachable -inrange7180: - %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 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic7181, label %ok7182 -panic7181: - call void @finch_panic(ptr @.str.4606, i64 4001, ptr @.str.4607) - unreachable -ok7182: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 11 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - %t19 = load i64, ptr %t18 - store i64 %t19, ptr %a20 - %t21 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 - %t22 = load i1, ptr %t21 - %t23 = xor i1 %t22, true - br i1 %t23, label %then7183, label %endif7185 -then7183: - %t24 = load ptr, ptr %a1 - %t25 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 - %t26 = load %S.gen.Val, ptr %t25 - call void @finch.gen.hold(ptr %t24, %S.gen.Val %t26) - br label %endif7185 -endif7185: - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Node, ptr %a2 - %t29 = load %S.gen.Ref, ptr %a14 - %t30 = load i1, ptr %a3 - %t31 = call %S.gen.Ref @finch.gen.indexOf(ptr %t27, %S.ast.Node %t28, %S.gen.Ref %t29, i1 %t30) - store %S.gen.Ref %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load i64, ptr %a20 - call void @finch.gen.heldEnd(ptr %t33, i64 %t34) - %t35 = load %S.gen.Ref, ptr %a32 - call void @finch.drop.S_gen_Ref(ptr %a14) - ret %S.gen.Ref %t35 -} - -define internal %S.gen.Ref @finch.gen.indexOf(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, i1 %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca %S.gen.Ref, align 16 - %a4 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a9 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a180 = alloca %S.ast.Type, align 16 - %a182 = alloca %S.ast.Type, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca %S.ast.Type, align 16 - %a263 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a386 = alloca %S.ast.Type, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca %S.ast.Type, align 16 - %a405 = alloca %S.ast.Type, align 16 - %a408 = alloca %S.gen.Val, align 16 - %a422 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.ast.Type, align 16 - %a428 = alloca %S.gen.Val, align 16 - %a434 = alloca %S.gen.Val, align 16 - %a435 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - store i1 %p3, ptr %a4 - %t5 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t6 = getelementptr inbounds %S.gen.Val, ptr %t5, i32 0, i32 1 - %t7 = load %S.ast.Type, ptr %t6 - store %S.ast.Type %t7, ptr %a8 - call void @finch.copy.S_ast_Type(ptr %a9, ptr %a8) - %t10 = load %S.ast.Type, ptr %a9 - store %S.ast.Type %t10, ptr %a11 - %t12 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t13 = load i1, ptr %t12 - br i1 %t13, label %then7186, label %endif7188 -then7186: - %t14 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t15 = getelementptr inbounds %S.gen.Place, ptr %t14, i32 0, i32 1 - %t16 = load %S.ast.Type, ptr %t15 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = load %S.ast.Type, ptr %a11 - store %S.ast.Type %t19, ptr %a11 - store %S.ast.Type %t20, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - br label %endif7188 -endif7188: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.4608, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then7189, label %endif7191 -then7189: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - %t30 = load %S.gen.Ref, ptr %a3 - %t31 = load %S.ast.Type, ptr %a11 - %t32 = load i1, ptr %a4 - %t33 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t28, %S.ast.Node %t29, %S.gen.Ref %t30, %S.ast.Type %t31, i1 %t32) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t33 -endif7191: - %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 %range7192, label %inrange7193 -range7192: - call void @finch_panic_index(ptr @.str.4609, i64 4018, i64 1, i64 %t38) - unreachable -inrange7193: - %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.4610, 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 %range7194, label %inrange7195 -range7194: - call void @finch_panic_index(ptr @.str.4611, i64 4018, i64 1, i64 %t47) - unreachable -inrange7195: - %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.4612, i64 8, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4613, i64 5, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then7196, label %endif7198 -then7196: - store { ptr, i64, i64 } { ptr @.str.4614, i64 0, i64 0 }, ptr %a67 - %t68 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t69 = load i1, ptr %t68 - br i1 %t69, label %then7199, label %else7200 -then7199: - %t70 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t71 = getelementptr inbounds %S.gen.Place, ptr %t70, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_copy(ptr %a74, ptr %a73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - %t76 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t75, ptr %a67 - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif7201 -else7200: - %t78 = load ptr, ptr %a1 - %t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t80 = load %S.gen.Val, ptr %t79 - %t81 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t78, %S.gen.Val %t80) - %t82 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t81, ptr %a67 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif7201 -endif7201: - %t84 = load ptr, ptr %a1 - %t85 = load { ptr, i64, i64 }, ptr %a60 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 4 - %t87 = load i64, ptr %t86 - call void @finch_str_from_int(ptr %a88, i64 %t87) - %t89 = load { ptr, i64, i64 }, ptr %a88 - %t90 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t84, { ptr, i64, i64 } %t85, { ptr, i64, i64 } %t89, %S.ast.Node %t90) - store { ptr, i64, i64 } %t89, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Type, ptr %a11 - %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4615, i64 23, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4616, i64 6, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t105, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t105, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4617, i64 13, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t122) - store { ptr, i64, i64 } %t122, ptr %a124 - call void @finch_str_drop(ptr %a124) - store { ptr, i64, i64 } %t123, ptr %a125 - %t126 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t127 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t130, 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t133 = load { ptr, i64, i64 }, ptr %t132 - %t134 = extractvalue { ptr, i64, i64 } %t133, 1 - %t135 = icmp uge i64 0, %t134 - br i1 %t135, label %range7202, label %inrange7203 -range7202: - call void @finch_panic_index(ptr @.str.4618, i64 4028, i64 0, i64 %t134) - unreachable -inrange7203: - %t136 = extractvalue { ptr, i64, i64 } %t133, 0 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 - %t138 = load %S.ast.Type, ptr %t137 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Place %t131, %S.ast.Type %t141, 1 - %t143 = insertvalue %S.gen.Ref %t126, %S.gen.Place %t142, 1 - call void @finch_str_drop(ptr %a125) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t143 -endif7198: - %t144 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t145 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t145, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4619, i64 3, i64 0 }, ptr %a147 - %t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147) - %t149 = icmp ne i32 %t148, 0 - br i1 %t149, label %then7204, label %endif7206 -then7204: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = icmp eq i64 %t152, 0 - br i1 %t153, label %then7207, label %endif7209 -then7207: - %t154 = load ptr, ptr %a1 - %t155 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } { ptr @.str.4620, i64 57, i64 0 }) - br label %endif7209 -endif7209: - %t156 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t157 = getelementptr inbounds %S.gen.Val, ptr %t156, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_copy(ptr %a160, ptr %a159) - %t161 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t161, ptr %a162 - %t163 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t164 = load i1, ptr %t163 - br i1 %t164, label %then7210, label %endif7212 -then7210: - %t165 = load ptr, ptr %a1 - %t166 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t167 = getelementptr inbounds %S.gen.Place, ptr %t166, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t165, { ptr, i64, i64 } { ptr @.str.4621, i64 3, i64 0 }, { ptr, i64, i64 } %t168) - %t170 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t169, ptr %a162 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7212 -endif7212: - %t172 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t173 = load { ptr, i64, i64 }, ptr %t172 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 0, %t174 - br i1 %t175, label %range7213, label %inrange7214 -range7213: - call void @finch_panic_index(ptr @.str.4622, i64 4038, i64 0, i64 %t174) - unreachable -inrange7214: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds %S.ast.Type, ptr %t176, i64 0 - %t178 = load %S.ast.Type, ptr %t177 - store %S.ast.Type %t178, ptr %a179 - call void @finch.copy.S_ast_Type(ptr %a180, ptr %a179) - %t181 = load %S.ast.Type, ptr %a180 - store %S.ast.Type %t181, ptr %a182 - %t183 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t184 = load ptr, ptr %a1 - %t185 = load ptr, ptr %a1 - %t186 = load %S.ast.Type, ptr %a182 - %t187 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t186) - store { ptr, i64, i64 } { ptr @.str.4623, i64 23, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4624, i64 6, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.4625, i64 6, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t218 = load %S.ast.Type, ptr %a182 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t183, %S.gen.Place %t222, 1 - call void @finch.drop.S_ast_Type(ptr %a182) - call void @finch_str_drop(ptr %a162) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t223 -endif7206: - %t224 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t225, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4626, i64 5, i64 0 }, ptr %a227 - %t228 = call i32 @finch_str_eq(ptr %a226, ptr %a227) - %t229 = icmp eq i32 %t228, 0 - br label %logic.from7215 -logic.from7215: - br i1 %t229, label %logic.rhs7216, label %logic.end7217 -logic.rhs7216: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4627, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp eq i32 %t234, 0 - br label %logic.rend7218 -logic.rend7218: - br label %logic.end7217 -logic.end7217: - %t236 = phi i1 [ false, %logic.from7215 ], [ %t235, %logic.rend7218 ] - br i1 %t236, label %then7219, label %endif7221 -then7219: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = load %S.ast.Type, ptr %a11 - %t240 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t239) - store { ptr, i64, i64 } { ptr @.str.4628, i64 46, i64 0 }, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7221 -endif7221: - %t247 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4629, i64 4, i64 0 }) - store %S.ast.Type %t247, ptr %a248 - %t249 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4630, i64 5, i64 0 }, ptr %a252 - %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) - %t254 = icmp ne i32 %t253, 0 - br i1 %t254, label %then7222, label %endif7224 -then7222: - %t255 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = extractvalue { ptr, i64, i64 } %t256, 1 - %t258 = icmp uge i64 0, %t257 - br i1 %t258, label %range7225, label %inrange7226 -range7225: - call void @finch_panic_index(ptr @.str.4631, i64 4046, i64 0, i64 %t257) - unreachable -inrange7226: - %t259 = extractvalue { ptr, i64, i64 } %t256, 0 - %t260 = getelementptr inbounds %S.ast.Type, ptr %t259, i64 0 - %t261 = load %S.ast.Type, ptr %t260 - store %S.ast.Type %t261, ptr %a262 - call void @finch.copy.S_ast_Type(ptr %a263, ptr %a262) - %t264 = load %S.ast.Type, ptr %a263 - %t265 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t264, ptr %a248 - store %S.ast.Type %t265, ptr %a266 - call void @finch.drop.S_ast_Type(ptr %a266) - br label %endif7224 -endif7224: - %t267 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4632, i64 3, i64 0 }, ptr %a270 - %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) - %t272 = icmp ne i32 %t271, 0 - br label %logic.from7227 -logic.from7227: - br i1 %t272, label %logic.rhs7228, label %logic.end7229 -logic.rhs7228: - %t273 = load i1, ptr %a4 - br label %logic.rend7230 -logic.rend7230: - br label %logic.end7229 -logic.end7229: - %t274 = phi i1 [ false, %logic.from7227 ], [ %t273, %logic.rend7230 ] - br i1 %t274, label %then7231, label %endif7233 -then7231: - %t275 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t276 = load i1, ptr %t275 - %t277 = xor i1 %t276, true - br i1 %t277, label %then7234, label %endif7236 -then7234: - %t278 = load ptr, ptr %a1 - %t279 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.4633, i64 44, i64 0 }) - br label %endif7236 -endif7236: - %t280 = load ptr, ptr %a1 - %t281 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t282 = getelementptr inbounds %S.gen.Place, ptr %t281, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - store { ptr, i64, i64 } { ptr @.str.4634, i64 29, i64 0 }, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t287, ptr %a289 - store { ptr, i64, i64 } { ptr @.str.4635, i64 1, i64 0 }, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t287, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.emit(ptr %t280, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_drop(ptr %a293) - br label %endif7233 -endif7233: - %t294 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t295 = getelementptr inbounds %S.gen.Val, ptr %t294, i32 0, i32 0 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_copy(ptr %a298, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t299, ptr %a300 - %t301 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t302 = load i1, ptr %t301 - br i1 %t302, label %then7237, label %endif7239 -then7237: - %t303 = load ptr, ptr %a1 - %t304 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t305 = getelementptr inbounds %S.gen.Place, ptr %t304, i32 0, i32 0 - %t306 = load { ptr, i64, i64 }, ptr %t305 - %t307 = call { ptr, i64, i64 } @finch.gen.load(ptr %t303, { ptr, i64, i64 } { ptr @.str.4636, i64 17, i64 0 }, { ptr, i64, i64 } %t306) - %t308 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t307, ptr %a300 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif7239 -endif7239: - %t310 = load ptr, ptr %a1 - %t311 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4637, i64 31, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4638, i64 3, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call { ptr, i64, i64 } @finch.gen.op(ptr %t310, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store { ptr, i64, i64 } %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a60 - %t326 = load { ptr, i64, i64 }, ptr %a323 - %t327 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t324, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326, %S.ast.Node %t327) - %t328 = load ptr, ptr %a1 - %t329 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4639, i64 31, i64 0 }, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t333, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.4640, i64 3, i64 0 }, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - %t339 = call { ptr, i64, i64 } @finch.gen.op(ptr %t328, { ptr, i64, i64 } %t338) - store { ptr, i64, i64 } %t338, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t339, ptr %a341 - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a248 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - store { ptr, i64, i64 } { ptr @.str.4641, i64 23, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t345, ptr %a348 - call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348) - store { ptr, i64, i64 } %t345, ptr %a349 - call void @finch_str_drop(ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4642, i64 6, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t355, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t355, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.4643, i64 6, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - store { ptr, i64, i64 } %t361, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a362 - %t367 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t366, ptr %a369 - store { ptr, i64, i64 } %t367, ptr %a370 - call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) - store { ptr, i64, i64 } %t366, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = load { ptr, i64, i64 }, ptr %a368 - %t373 = call { ptr, i64, i64 } @finch.gen.op(ptr %t342, { ptr, i64, i64 } %t372) - store { ptr, i64, i64 } %t372, ptr %a374 - call void @finch_str_drop(ptr %a374) - store { ptr, i64, i64 } %t373, ptr %a375 - %t376 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t377 = load i1, ptr %t376 - br i1 %t377, label %then7240, label %endif7242 -then7240: - %t378 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t379 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t379, ptr %a380 - call void @finch_str_copy(ptr %a381, ptr %a380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - %t383 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t382, 0 - %t384 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t384, ptr %a385 - call void @finch.copy.S_ast_Type(ptr %a386, ptr %a385) - %t387 = load %S.ast.Type, ptr %a386 - %t388 = insertvalue %S.gen.Place %t383, %S.ast.Type %t387, 1 - %t389 = insertvalue %S.gen.Ref %t378, %S.gen.Place %t388, 1 - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t389 -endif7242: - %t390 = load ptr, ptr %a1 - %t391 = load ptr, ptr %a1 - %t392 = load %S.ast.Type, ptr %a248 - %t393 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t391, %S.ast.Type %t392) - %t394 = load { ptr, i64, i64 }, ptr %a375 - %t395 = call { ptr, i64, i64 } @finch.gen.load(ptr %t390, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) - store { ptr, i64, i64 } %t393, ptr %a396 - call void @finch_str_drop(ptr %a396) - store { ptr, i64, i64 } %t395, ptr %a397 - %t398 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t398, ptr %a399 - call void @finch_str_copy(ptr %a400, ptr %a399) - %t401 = load { ptr, i64, i64 }, ptr %a400 - %t402 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t401, 0 - %t403 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t403, ptr %a404 - call void @finch.copy.S_ast_Type(ptr %a405, ptr %a404) - %t406 = load %S.ast.Type, ptr %a405 - %t407 = insertvalue %S.gen.Val %t402, %S.ast.Type %t406, 1 - store %S.gen.Val %t407, ptr %a408 - %t409 = load ptr, ptr %a1 - %t410 = load %S.ast.Type, ptr %a248 - %t411 = call i1 @finch.gen.owning(ptr %t409, %S.ast.Type %t410) - br label %logic.from7243 -logic.from7243: - br i1 %t411, label %logic.rhs7244, label %logic.end7245 -logic.rhs7244: - %t412 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t413 = getelementptr inbounds %S.gen.Val, ptr %t412, i32 0, i32 2 - %t414 = load i1, ptr %t413 - br label %logic.rend7246 -logic.rend7246: - br label %logic.end7245 -logic.end7245: - %t415 = phi i1 [ false, %logic.from7243 ], [ %t414, %logic.rend7246 ] - br i1 %t415, label %then7247, label %endif7249 -then7247: - %t416 = load ptr, ptr %a1 - %t417 = load { ptr, i64, i64 }, ptr %a397 - %t418 = load %S.ast.Type, ptr %a248 - %t419 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t416, { ptr, i64, i64 } %t417, %S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t421, ptr %a422 - call void @finch.copy.S_ast_Type(ptr %a423, ptr %a422) - %t424 = load %S.ast.Type, ptr %a423 - %t425 = insertvalue %S.gen.Val %t420, %S.ast.Type %t424, 1 - %t426 = insertvalue %S.gen.Val %t425, i1 true, 2 - %t427 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t426, ptr %a408 - store %S.gen.Val %t427, ptr %a428 - call void @finch.drop.S_gen_Val(ptr %a428) - br label %endif7249 -endif7249: - %t429 = load ptr, ptr %a1 - %t430 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t431 = load %S.gen.Val, ptr %t430 - call void @finch.gen.release(ptr %t429, %S.gen.Val %t431) - %t432 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t433 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t433, ptr %a434 - call void @finch.copy.S_gen_Val(ptr %a435, ptr %a434) - %t436 = load %S.gen.Val, ptr %a435 - %t437 = insertvalue %S.gen.Ref %t432, %S.gen.Val %t436, 2 - call void @finch.drop.S_gen_Val(ptr %a408) - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t437 -} - -define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.cond7250 -each.cond7250: - %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.body7251, label %each.end7253 -each.body7251: - %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 %then7254, label %endif7256 -then7254: - %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.4644, 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.4645, i64 36, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %endif7256 -endif7256: - br label %each.step7252 -each.step7252: - %t38 = load i64, ptr %a13 - %t39 = add i64 %t38, 1 - store i64 %t39, ptr %a13 - br label %each.cond7250 -each.end7253: - %t40 = load i64, ptr %a11 - %t41 = load i64, ptr %a4 - %t42 = icmp ne i64 %t40, %t41 - br i1 %t42, label %then7257, label %endif7259 -then7257: - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4646, i64 1, i64 0 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.4647, i64 8, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a56, i64 %t55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } %t57, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.4648, i64 22, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a70, i64 %t69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t68, ptr %a75 - call void @finch_str_drop(ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t77) - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif7259 -endif7259: - 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 - %a12 = alloca %S.gen.Val, align 16 - %a13 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.4649, i64 3, i64 0 }) - %t9 = load %S.ast.Node, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %a3 - %t11 = call %S.gen.Val @finch.gen.coerce(ptr %t4, %S.gen.Val %t7, %S.ast.Type %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t10) - store %S.gen.Val %t7, ptr %a12 - call void @finch.drop.S_gen_Val(ptr %a12) - store %S.ast.Type %t8, ptr %a13 - call void @finch.drop.S_ast_Type(ptr %a13) - ret %S.gen.Val %t11 -} - -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.4650, 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.4651, 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 %then7260, label %endif7262 -then7260: - ret { ptr, i64, i64 } { ptr @.str.4652, i64 3, i64 0 } -endif7262: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4653, 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 %then7263, label %endif7265 -then7263: - ret { ptr, i64, i64 } { ptr @.str.4654, i64 5, i64 0 } -endif7265: - %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.4655, i64 3, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 - store { ptr, i64, i64 } { ptr @.str.4656, i64 5, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 - store { ptr, i64, i64 } { ptr @.str.4657, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3 - store { ptr, i64, i64 } { ptr @.str.4658, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 - store { ptr, i64, i64 } { ptr @.str.4659, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 - store { ptr, i64, i64 } { ptr @.str.4660, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6 - store { ptr, i64, i64 } { ptr @.str.4661, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 - store { ptr, i64, i64 } { ptr @.str.4662, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 - store { ptr, i64, i64 } { ptr @.str.4663, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9 - store { ptr, i64, i64 } { ptr @.str.4664, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 - store { ptr, i64, i64 } { ptr @.str.4665, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 - store { ptr, i64, i64 } { ptr @.str.4666, i64 3, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12 - store { ptr, i64, i64 } { ptr @.str.4667, 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.cond7266 -find.cond7266: - %t37 = load i64, ptr %a36 - %t38 = icmp slt i64 %t37, %t34 - br i1 %t38, label %find.body7267, label %find.end7270 -find.body7267: - %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.hit7268, label %find.next7269 -find.hit7268: - store i64 %t37, ptr %a33 - br label %find.end7270 -find.next7269: - %t45 = add i64 %t37, 1 - store i64 %t45, ptr %a36 - br label %find.cond7266 -find.end7270: - %t46 = load i64, ptr %a33 - %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then7271, label %endif7273 -then7271: - %t48 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t51 -endif7273: - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.4668, 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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.ast.Type, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a365 = alloca %S.ast.Type, align 16 - %a366 = alloca %S.ast.Type, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a387 = alloca %S.ast.Type, align 16 - %a388 = alloca %S.ast.Type, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a418 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Type, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a527 = alloca %S.ast.Type, align 16 - %a528 = alloca %S.ast.Type, align 16 - %a541 = alloca %S.ast.Type, align 16 - %a542 = alloca %S.ast.Type, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca %S.ast.Type, align 16 - %a585 = alloca %S.ast.Type, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.ast.Type, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca %S.ast.Type, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca %S.ast.Type, align 16 - %a651 = alloca %S.ast.Type, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca %S.ast.Type, align 16 - %a689 = alloca %S.ast.Type, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %range7274, label %inrange7275 -range7274: - call void @finch_panic_index(ptr @.str.4669, i64 4116, i64 0, i64 %t11) - unreachable -inrange7275: - %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 %then7276, label %endif7278 -then7276: - %t27 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t27 -endif7278: - %t28 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t29 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.4670, 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.from7279 -logic.from7279: - br i1 %t33, label %logic.rhs7280, label %logic.end7281 -logic.rhs7280: - %t34 = load %S.ast.Type, ptr %a3 - %t35 = call i1 @finch.gen.isNumber(%S.ast.Type %t34) - br label %logic.rend7282 -logic.rend7282: - br label %logic.end7281 -logic.end7281: - %t36 = phi i1 [ false, %logic.from7279 ], [ %t35, %logic.rend7282 ] - br label %logic.from7283 -logic.from7283: - br i1 %t36, label %logic.rhs7284, label %logic.end7285 -logic.rhs7284: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic7286, label %ok7287 -panic7286: - call void @finch_panic(ptr @.str.4671, i64 4121, ptr @.str.4672) - unreachable -ok7287: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 41 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend7288 -logic.rend7288: - br label %logic.end7285 -logic.end7285: - %t48 = phi i1 [ false, %logic.from7283 ], [ %t46, %logic.rend7288 ] - br i1 %t48, label %then7289, label %endif7291 -then7289: - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.4673, i64 17, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.4674, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4675, i64 15, i64 0 }, { ptr, i64, i64 } %t53) - %t54 = load %S.ast.Type, ptr %a3 - %t55 = call i1 @finch.gen.isInt(%S.ast.Type %t54) - br i1 %t55, label %then7292, label %endif7294 -then7292: - %t56 = load ptr, ptr %a1 - %t57 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t56, { ptr, i64, i64 } { ptr @.str.4676, i64 3, i64 0 }) - store { ptr, i64, i64 } %t57, ptr %a58 - %t59 = load ptr, ptr %a1 - %t60 = load { ptr, i64, i64 }, ptr %a58 - call void @finch.gen.store(ptr %t59, { ptr, i64, i64 } { ptr @.str.4677, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4678, i64 1, i64 0 }, { ptr, i64, i64 } %t60) - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = load %S.gen.Val, ptr %a17 - %t64 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t62, %S.gen.Val %t63) - store { ptr, i64, i64 } { ptr @.str.4679, i64 32, i64 0 }, ptr %a66 - store { ptr, i64, i64 } %t64, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4680, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4681, i64 6, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.4682, i64 1, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t97, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4683, i64 12, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4684, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic7295, label %ok7296 -panic7295: - call void @finch_panic(ptr @.str.4685, i64 4129, ptr @.str.4686) - unreachable -ok7296: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 42 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t111, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = load { ptr, i64, i64 }, ptr %a51 - %t120 = call { ptr, i64, i64 } @finch.gen.load(ptr %t118, { ptr, i64, i64 } { ptr @.str.4687, i64 17, i64 0 }, { ptr, i64, i64 } %t119) - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic7297, label %ok7298 -panic7297: - call void @finch_panic(ptr @.str.4688, i64 4130, ptr @.str.4689) - unreachable -ok7298: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 43 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t120, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load ptr, ptr %a1 - %t127 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t126, %S.gen.Val %t127) - %t128 = load ptr, ptr %a1 - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a58 - %t131 = call { ptr, i64, i64 } @finch.gen.load(ptr %t129, { ptr, i64, i64 } { ptr @.str.4690, i64 3, i64 0 }, { ptr, i64, i64 } %t130) - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4691, i64 3, i64 0 }) - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t131, %S.ast.Type %t132, %S.ast.Type %t133) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - store %S.ast.Type %t132, ptr %a136 - call void @finch.drop.S_ast_Type(ptr %a136) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 - %t138 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Val %t137, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t142 -endif7294: - %t143 = load ptr, ptr %a1 - %t144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t143, { ptr, i64, i64 } { ptr @.str.4692, i64 6, i64 0 }) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = load { ptr, i64, i64 }, ptr %a145 - call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.4693, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4694, i64 3, i64 0 }, { ptr, i64, i64 } %t147) - %t148 = load ptr, ptr %a1 - %t149 = load ptr, ptr %a1 - %t150 = load %S.gen.Val, ptr %a17 - %t151 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t149, %S.gen.Val %t150) - store { ptr, i64, i64 } { ptr @.str.4695, i64 34, i64 0 }, ptr %a153 - store { ptr, i64, i64 } %t151, ptr %a154 - call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) - store { ptr, i64, i64 } %t151, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a152 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4696, i64 6, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t161, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t161, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4697, i64 6, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t184, ptr %a186 - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.4699, i64 12, i64 0 }, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4700, i64 3, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t197) - store { ptr, i64, i64 } %t197, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic7299, label %ok7300 -panic7299: - call void @finch_panic(ptr @.str.4701, i64 4137, ptr @.str.4702) - unreachable -ok7300: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 42 - %t203 = load { ptr, i64, i64 }, ptr %t202 - store { ptr, i64, i64 } %t198, ptr %t202 - store { ptr, i64, i64 } %t203, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a51 - %t207 = call { ptr, i64, i64 } @finch.gen.load(ptr %t205, { ptr, i64, i64 } { ptr @.str.4703, i64 17, i64 0 }, { ptr, i64, i64 } %t206) - %t208 = load ptr, ptr %a1 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic7301, label %ok7302 -panic7301: - call void @finch_panic(ptr @.str.4704, i64 4138, ptr @.str.4705) - unreachable -ok7302: - %t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 43 - %t211 = load { ptr, i64, i64 }, ptr %t210 - store { ptr, i64, i64 } %t207, ptr %t210 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t213, %S.gen.Val %t214) - %t215 = load ptr, ptr %a1 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a145 - %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t216, { ptr, i64, i64 } { ptr @.str.4706, i64 6, i64 0 }, { ptr, i64, i64 } %t217) - %t219 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4707, i64 5, i64 0 }) - %t220 = load %S.ast.Type, ptr %a3 - %t221 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t215, { ptr, i64, i64 } %t218, %S.ast.Type %t219, %S.ast.Type %t220) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - store %S.ast.Type %t219, ptr %a223 - call void @finch.drop.S_ast_Type(ptr %a223) - %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 - %t225 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - %t229 = insertvalue %S.gen.Val %t224, %S.ast.Type %t228, 1 - call void @finch_str_drop(ptr %a186) - call void @finch_str_drop(ptr %a145) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t229 -endif7291: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4708, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp ne i32 %t234, 0 - br label %logic.from7303 -logic.from7303: - br i1 %t235, label %logic.rhs7304, label %logic.end7305 -logic.rhs7304: - %t236 = load %S.ast.Type, ptr %a3 - %t237 = call i1 @finch.gen.isNumber(%S.ast.Type %t236) - br label %logic.rend7306 -logic.rend7306: - br label %logic.end7305 -logic.end7305: - %t238 = phi i1 [ false, %logic.from7303 ], [ %t237, %logic.rend7306 ] - br i1 %t238, label %then7307, label %endif7309 -then7307: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic7310, label %ok7311 -panic7310: - call void @finch_panic(ptr @.str.4709, i64 4143, ptr @.str.4710) - unreachable -ok7311: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 1 - %t243 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t244 = load i64, ptr %t243 - %t245 = load { ptr, i64, i64 }, ptr %t242 - %t246 = extractvalue { ptr, i64, i64 } %t245, 1 - %t247 = icmp uge i64 %t244, %t246 - br i1 %t247, label %range7312, label %inrange7313 -range7312: - call void @finch_panic_index(ptr @.str.4711, i64 4143, i64 %t244, i64 %t246) - unreachable -inrange7313: - %t248 = extractvalue { ptr, i64, i64 } %t245, 0 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t239, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t251, ptr %a252 - %t253 = load %S.ast.Type, ptr %a3 - %t254 = call i1 @finch.gen.isInt(%S.ast.Type %t253) - br i1 %t254, label %then7314, label %endif7316 -then7314: - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load %S.gen.Val, ptr %a17 - %t258 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t256, %S.gen.Val %t257) - store { ptr, i64, i64 } { ptr @.str.4712, i64 31, i64 0 }, ptr %a260 - store { ptr, i64, i64 } %t258, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4713, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4714, i64 6, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t281 = load i64, ptr %t280 - call void @finch_str_from_int(ptr %a282, i64 %t281) - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t279, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t279, ptr %a287 - call void @finch_str_drop(ptr %a287) - store { ptr, i64, i64 } %t283, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.4715, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - %t295 = call { ptr, i64, i64 } @finch.gen.op(ptr %t255, { ptr, i64, i64 } %t294) - store { ptr, i64, i64 } %t294, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t295, ptr %a297 - %t298 = load ptr, ptr %a1 - %t299 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t298, %S.gen.Val %t299) - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4716, i64 3, i64 0 }) - %t303 = load %S.ast.Type, ptr %a3 - %t304 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t300, { ptr, i64, i64 } %t301, %S.ast.Type %t302, %S.ast.Type %t303) - store %S.ast.Type %t302, ptr %a305 - call void @finch.drop.S_ast_Type(ptr %a305) - %t306 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t307 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t307, ptr %a308 - call void @finch.copy.S_ast_Type(ptr %a309, ptr %a308) - %t310 = load %S.ast.Type, ptr %a309 - %t311 = insertvalue %S.gen.Val %t306, %S.ast.Type %t310, 1 - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t311 -endif7316: - %t312 = load ptr, ptr %a1 - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a17 - %t315 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } { ptr @.str.4717, i64 36, i64 0 }, ptr %a317 - store { ptr, i64, i64 } %t315, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.4718, i64 6, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - %t326 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t325, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - store { ptr, i64, i64 } %t325, ptr %a330 - call void @finch_str_drop(ptr %a330) - %t331 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t331, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.4719, i64 6, i64 0 }, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t331, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - %t337 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t338 = load i64, ptr %t337 - call void @finch_str_from_int(ptr %a339, i64 %t338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - store { ptr, i64, i64 } %t336, ptr %a342 - store { ptr, i64, i64 } %t340, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t336, ptr %a344 - call void @finch_str_drop(ptr %a344) - store { ptr, i64, i64 } %t340, ptr %a345 - call void @finch_str_drop(ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.4720, i64 1, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t312, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4721, i64 5, i64 0 }) - %t360 = load %S.ast.Type, ptr %a3 - %t361 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359, %S.ast.Type %t360) - store %S.ast.Type %t359, ptr %a362 - call void @finch.drop.S_ast_Type(ptr %a362) - %t363 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t361, 0 - %t364 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t364, ptr %a365 - call void @finch.copy.S_ast_Type(ptr %a366, ptr %a365) - %t367 = load %S.ast.Type, ptr %a366 - %t368 = insertvalue %S.gen.Val %t363, %S.ast.Type %t367, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t368 -endif7309: - %t369 = load %S.ast.Type, ptr %a3 - %t370 = call i1 @finch.gen.isInt(%S.ast.Type %t369) - br label %logic.from7317 -logic.from7317: - br i1 %t370, label %logic.rhs7318, label %logic.end7319 -logic.rhs7318: - %t371 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t372, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.4722, i64 4, i64 0 }, ptr %a374 - %t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374) - %t376 = icmp ne i32 %t375, 0 - br label %logic.rend7320 -logic.rend7320: - br label %logic.end7319 -logic.end7319: - %t377 = phi i1 [ false, %logic.from7317 ], [ %t376, %logic.rend7320 ] - br i1 %t377, label %then7321, label %endif7323 -then7321: - %t378 = load ptr, ptr %a1 - %t379 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4723, i64 3, i64 0 }) - %t382 = load %S.ast.Type, ptr %a3 - %t383 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t378, { ptr, i64, i64 } %t380, %S.ast.Type %t381, %S.ast.Type %t382) - store %S.ast.Type %t381, ptr %a384 - call void @finch.drop.S_ast_Type(ptr %a384) - %t385 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t383, 0 - %t386 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t386, ptr %a387 - call void @finch.copy.S_ast_Type(ptr %a388, ptr %a387) - %t389 = load %S.ast.Type, ptr %a388 - %t390 = insertvalue %S.gen.Val %t385, %S.ast.Type %t389, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t390 -endif7323: - %t391 = load %S.ast.Type, ptr %a3 - %t392 = call i1 @finch.gen.isInt(%S.ast.Type %t391) - br label %logic.from7324 -logic.from7324: - br i1 %t392, label %logic.end7326, label %logic.rhs7325 -logic.rhs7325: - %t393 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t394, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.4724, i64 4, i64 0 }, ptr %a396 - %t397 = call i32 @finch_str_eq(ptr %a395, ptr %a396) - %t398 = icmp ne i32 %t397, 0 - br label %logic.rend7327 -logic.rend7327: - br label %logic.end7326 -logic.end7326: - %t399 = phi i1 [ true, %logic.from7324 ], [ %t398, %logic.rend7327 ] - br i1 %t399, label %then7328, label %endif7330 -then7328: - %t400 = load %S.ast.Type, ptr %a23 - %t401 = call i1 @finch.gen.isInt(%S.ast.Type %t400) - br label %logic.from7331 -logic.from7331: - br i1 %t401, label %logic.end7333, label %logic.rhs7332 -logic.rhs7332: - %t402 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4725, i64 4, i64 0 }, ptr %a405 - %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) - %t407 = icmp ne i32 %t406, 0 - br label %logic.rend7334 -logic.rend7334: - br label %logic.end7333 -logic.end7333: - %t408 = phi i1 [ true, %logic.from7331 ], [ %t407, %logic.rend7334 ] - br i1 %t408, label %then7335, label %endif7337 -then7335: - %t409 = load ptr, ptr %a1 - %t410 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t411 = load { ptr, i64, i64 }, ptr %t410 - %t412 = load %S.ast.Type, ptr %a23 - %t413 = load %S.ast.Type, ptr %a3 - %t414 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t409, { ptr, i64, i64 } %t411, %S.ast.Type %t412, %S.ast.Type %t413) - %t415 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t414, 0 - %t416 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t416, ptr %a417 - call void @finch.copy.S_ast_Type(ptr %a418, ptr %a417) - %t419 = load %S.ast.Type, ptr %a418 - %t420 = insertvalue %S.gen.Val %t415, %S.ast.Type %t419, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t420 -endif7337: - %t421 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - store { ptr, i64, i64 } { ptr @.str.4726, i64 4, i64 0 }, ptr %a424 - %t425 = call i32 @finch_str_eq(ptr %a423, ptr %a424) - %t426 = icmp ne i32 %t425, 0 - br i1 %t426, label %then7338, label %endif7340 -then7338: - %t427 = load ptr, ptr %a1 - %t428 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } { ptr @.str.4727, i64 8, i64 0 }, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - %t433 = load { ptr, i64, i64 }, ptr %a430 - store { ptr, i64, i64 } %t433, ptr %a435 - store { ptr, i64, i64 } { ptr @.str.4728, i64 4, i64 0 }, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t433, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - %t439 = load ptr, ptr %a1 - %t440 = load %S.ast.Type, ptr %a3 - %t441 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t440) - store { ptr, i64, i64 } %t438, ptr %a443 - store { ptr, i64, i64 } %t441, ptr %a444 - call void @finch_str_concat(ptr %a442, ptr %a443, ptr %a444) - store { ptr, i64, i64 } %t438, ptr %a445 - call void @finch_str_drop(ptr %a445) - store { ptr, i64, i64 } %t441, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load { ptr, i64, i64 }, ptr %a442 - %t448 = call { ptr, i64, i64 } @finch.gen.op(ptr %t427, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t447, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t448, 0 - %t451 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t451, ptr %a452 - call void @finch.copy.S_ast_Type(ptr %a453, ptr %a452) - %t454 = load %S.ast.Type, ptr %a453 - %t455 = insertvalue %S.gen.Val %t450, %S.ast.Type %t454, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t455 -endif7340: - %t456 = load %S.ast.Type, ptr %a23 - %t457 = call i1 @finch.gen.isFloat(%S.ast.Type %t456) - br label %logic.from7341 -logic.from7341: - br i1 %t457, label %logic.rhs7342, label %logic.end7343 -logic.rhs7342: - %t458 = load %S.ast.Type, ptr %a3 - %t459 = call i1 @finch.gen.isInt(%S.ast.Type %t458) - br label %logic.rend7344 -logic.rend7344: - br label %logic.end7343 -logic.end7343: - %t460 = phi i1 [ false, %logic.from7341 ], [ %t459, %logic.rend7344 ] - br i1 %t460, label %then7345, label %endif7347 -then7345: - store { ptr, i64, i64 } { ptr @.str.4729, i64 6, i64 0 }, ptr %a461 - %t462 = load %S.ast.Type, ptr %a3 - %t463 = call i1 @finch.gen.isSigned(%S.ast.Type %t462) - br i1 %t463, label %then7348, label %endif7350 -then7348: - %t464 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } { ptr @.str.4730, i64 6, i64 0 }, ptr %a461 - store { ptr, i64, i64 } %t464, ptr %a465 - call void @finch_str_drop(ptr %a465) - br label %endif7350 -endif7350: - %t466 = load ptr, ptr %a1 - %t467 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t467, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4731, i64 1, i64 0 }, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load ptr, ptr %a1 - %t473 = load %S.ast.Type, ptr %a23 - %t474 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t472, %S.ast.Type %t473) - store { ptr, i64, i64 } %t471, ptr %a476 - store { ptr, i64, i64 } %t474, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t471, ptr %a478 - call void @finch_str_drop(ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a475 - store { ptr, i64, i64 } %t480, ptr %a482 - store { ptr, i64, i64 } { ptr @.str.4732, i64 1, i64 0 }, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t480, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - %t486 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } %t485, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.4733, i64 4, i64 0 }, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t492, ptr %a496 - call void @finch_str_drop(ptr %a496) - %t497 = load { ptr, i64, i64 }, ptr %a493 - %t498 = load ptr, ptr %a1 - %t499 = load %S.ast.Type, ptr %a3 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t498, %S.ast.Type %t499) - store { ptr, i64, i64 } %t497, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t497, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - %t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t466, { ptr, i64, i64 } %t506) - store { ptr, i64, i64 } %t506, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 - %t510 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = insertvalue %S.gen.Val %t509, %S.ast.Type %t513, 1 - call void @finch_str_drop(ptr %a461) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t514 -endif7347: - br label %endif7330 -endif7330: - %t515 = load %S.ast.Type, ptr %a3 - %t516 = call i1 @finch.gen.isFloat(%S.ast.Type %t515) - br i1 %t516, label %then7351, label %endif7353 -then7351: - %t517 = load %S.ast.Type, ptr %a23 - %t518 = call i1 @finch.gen.isInt(%S.ast.Type %t517) - br i1 %t518, label %then7354, label %endif7356 -then7354: - %t519 = load ptr, ptr %a1 - %t520 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - %t522 = load %S.ast.Type, ptr %a23 - %t523 = load %S.ast.Type, ptr %a3 - %t524 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t519, { ptr, i64, i64 } %t521, %S.ast.Type %t522, %S.ast.Type %t523) - %t525 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t524, 0 - %t526 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t526, ptr %a527 - call void @finch.copy.S_ast_Type(ptr %a528, ptr %a527) - %t529 = load %S.ast.Type, ptr %a528 - %t530 = insertvalue %S.gen.Val %t525, %S.ast.Type %t529, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t530 -endif7356: - %t531 = load %S.ast.Type, ptr %a23 - %t532 = call i1 @finch.gen.isFloat(%S.ast.Type %t531) - br i1 %t532, label %then7357, label %endif7359 -then7357: - %t533 = load ptr, ptr %a1 - %t534 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load %S.ast.Type, ptr %a23 - %t537 = load %S.ast.Type, ptr %a3 - %t538 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t533, { ptr, i64, i64 } %t535, %S.ast.Type %t536, %S.ast.Type %t537) - %t539 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t538, 0 - %t540 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t540, ptr %a541 - call void @finch.copy.S_ast_Type(ptr %a542, ptr %a541) - %t543 = load %S.ast.Type, ptr %a542 - %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t544 -endif7359: - br label %endif7353 -endif7353: - %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.4734, i64 4, i64 0 }, ptr %a548 - %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) - %t550 = icmp ne i32 %t549, 0 - br label %logic.from7360 -logic.from7360: - br i1 %t550, label %logic.rhs7361, label %logic.end7362 -logic.rhs7361: - %t551 = load %S.ast.Type, ptr %a23 - %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) - br label %logic.rend7363 -logic.rend7363: - br label %logic.end7362 -logic.end7362: - %t553 = phi i1 [ false, %logic.from7360 ], [ %t552, %logic.rend7363 ] - br i1 %t553, label %then7364, label %endif7366 -then7364: - %t554 = load ptr, ptr %a1 - %t555 = load ptr, ptr %a1 - %t556 = load %S.ast.Type, ptr %a23 - %t557 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t555, %S.ast.Type %t556) - store { ptr, i64, i64 } { ptr @.str.4735, i64 8, i64 0 }, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.4736, i64 1, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t569 = load { ptr, i64, i64 }, ptr %t568 - store { ptr, i64, i64 } %t567, ptr %a571 - store { ptr, i64, i64 } %t569, ptr %a572 - call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572) - store { ptr, i64, i64 } %t567, ptr %a573 - call void @finch_str_drop(ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a570 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.4737, i64 3, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t579) - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t580, 0 - %t583 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t583, ptr %a584 - call void @finch.copy.S_ast_Type(ptr %a585, ptr %a584) - %t586 = load %S.ast.Type, ptr %a585 - %t587 = insertvalue %S.gen.Val %t582, %S.ast.Type %t586, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t587 -endif7366: - %t588 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t589 = load { ptr, i64, i64 }, ptr %t588 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.4738, i64 3, i64 0 }, ptr %a591 - %t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591) - %t593 = icmp ne i32 %t592, 0 - br label %logic.from7367 -logic.from7367: - br i1 %t593, label %logic.rhs7368, label %logic.end7369 -logic.rhs7368: - %t594 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t595 = load { ptr, i64, i64 }, ptr %t594 - store { ptr, i64, i64 } %t595, ptr %a596 - store { ptr, i64, i64 } { ptr @.str.4739, i64 3, i64 0 }, ptr %a597 - %t598 = call i32 @finch_str_eq(ptr %a596, ptr %a597) - %t599 = icmp ne i32 %t598, 0 - br label %logic.from7370 -logic.from7370: - br i1 %t599, label %logic.end7372, label %logic.rhs7371 -logic.rhs7371: - %t600 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t601 = load { ptr, i64, i64 }, ptr %t600 - store { ptr, i64, i64 } %t601, ptr %a602 - store { ptr, i64, i64 } { ptr @.str.4740, i64 4, i64 0 }, ptr %a603 - %t604 = call i32 @finch_str_eq(ptr %a602, ptr %a603) - %t605 = icmp ne i32 %t604, 0 - br label %logic.rend7373 -logic.rend7373: - br label %logic.end7372 -logic.end7372: - %t606 = phi i1 [ true, %logic.from7370 ], [ %t605, %logic.rend7373 ] - br label %logic.rend7374 -logic.rend7374: - br label %logic.end7369 -logic.end7369: - %t607 = phi i1 [ false, %logic.from7367 ], [ %t606, %logic.rend7374 ] - br i1 %t607, label %then7375, label %endif7377 -then7375: - %t608 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t609 = load { ptr, i64, i64 }, ptr %t608 - store { ptr, i64, i64 } %t609, ptr %a610 - call void @finch_str_copy(ptr %a611, ptr %a610) - %t612 = load { ptr, i64, i64 }, ptr %a611 - %t613 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t612, 0 - %t614 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t614, ptr %a615 - call void @finch.copy.S_ast_Type(ptr %a616, ptr %a615) - %t617 = load %S.ast.Type, ptr %a616 - %t618 = insertvalue %S.gen.Val %t613, %S.ast.Type %t617, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t618 -endif7377: - %t619 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t620 = load { ptr, i64, i64 }, ptr %t619 - store { ptr, i64, i64 } %t620, ptr %a621 - store { ptr, i64, i64 } { ptr @.str.4741, i64 3, i64 0 }, ptr %a622 - %t623 = call i32 @finch_str_eq(ptr %a621, ptr %a622) - %t624 = icmp ne i32 %t623, 0 - br label %logic.from7378 -logic.from7378: - br i1 %t624, label %logic.rhs7379, label %logic.end7380 -logic.rhs7379: - %t625 = load %S.ast.Type, ptr %a23 - %t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625) - br label %logic.rend7381 -logic.rend7381: - br label %logic.end7380 -logic.end7380: - %t627 = phi i1 [ false, %logic.from7378 ], [ %t626, %logic.rend7381 ] - br i1 %t627, label %then7382, label %endif7384 -then7382: - %t628 = load ptr, ptr %a1 - %t629 = load ptr, ptr %a1 - %t630 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t631 = load { ptr, i64, i64 }, ptr %t630 - %t632 = load %S.ast.Type, ptr %a23 - %t633 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4743, i64 3, i64 0 }) - %t634 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t629, { ptr, i64, i64 } %t631, %S.ast.Type %t632, %S.ast.Type %t633) - store %S.ast.Type %t633, ptr %a635 - call void @finch.drop.S_ast_Type(ptr %a635) - store { ptr, i64, i64 } { ptr @.str.4742, i64 13, i64 0 }, ptr %a637 - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_concat(ptr %a636, ptr %a637, ptr %a638) - store { ptr, i64, i64 } %t634, ptr %a639 - call void @finch_str_drop(ptr %a639) - %t640 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t640, ptr %a642 - store { ptr, i64, i64 } { ptr @.str.4744, i64 7, i64 0 }, ptr %a643 - call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) - store { ptr, i64, i64 } %t640, ptr %a644 - call void @finch_str_drop(ptr %a644) - %t645 = load { ptr, i64, i64 }, ptr %a641 - %t646 = call { ptr, i64, i64 } @finch.gen.op(ptr %t628, { ptr, i64, i64 } %t645) - store { ptr, i64, i64 } %t645, ptr %a647 - call void @finch_str_drop(ptr %a647) - %t648 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t646, 0 - %t649 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t649, ptr %a650 - call void @finch.copy.S_ast_Type(ptr %a651, ptr %a650) - %t652 = load %S.ast.Type, ptr %a651 - %t653 = insertvalue %S.gen.Val %t648, %S.ast.Type %t652, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t653 -endif7384: - %t654 = load %S.ast.Type, ptr %a3 - %t655 = call i1 @finch.gen.isInt(%S.ast.Type %t654) - br label %logic.from7385 -logic.from7385: - br i1 %t655, label %logic.rhs7386, label %logic.end7387 -logic.rhs7386: - %t656 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t657 = load { ptr, i64, i64 }, ptr %t656 - store { ptr, i64, i64 } %t657, ptr %a658 - store { ptr, i64, i64 } { ptr @.str.4745, i64 3, i64 0 }, ptr %a659 - %t660 = call i32 @finch_str_eq(ptr %a658, ptr %a659) - %t661 = icmp ne i32 %t660, 0 - br label %logic.rend7388 -logic.rend7388: - br label %logic.end7387 -logic.end7387: - %t662 = phi i1 [ false, %logic.from7385 ], [ %t661, %logic.rend7388 ] - br i1 %t662, label %then7389, label %endif7391 -then7389: - %t663 = load ptr, ptr %a1 - %t664 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } { ptr @.str.4746, i64 13, i64 0 }, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.4747, i64 4, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = load ptr, ptr %a1 - %t676 = load %S.ast.Type, ptr %a3 - %t677 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t675, %S.ast.Type %t676) - store { ptr, i64, i64 } %t674, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t674, ptr %a681 - call void @finch_str_drop(ptr %a681) - store { ptr, i64, i64 } %t677, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a678 - %t684 = call { ptr, i64, i64 } @finch.gen.op(ptr %t663, { ptr, i64, i64 } %t683) - store { ptr, i64, i64 } %t683, ptr %a685 - call void @finch_str_drop(ptr %a685) - %t686 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t684, 0 - %t687 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t687, ptr %a688 - call void @finch.copy.S_ast_Type(ptr %a689, ptr %a688) - %t690 = load %S.ast.Type, ptr %a689 - %t691 = insertvalue %S.gen.Val %t686, %S.ast.Type %t690, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t691 -endif7391: - %t692 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t693 = load { ptr, i64, i64 }, ptr %t692 - store { ptr, i64, i64 } %t693, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.4748, i64 3, i64 0 }, ptr %a695 - %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) - %t697 = icmp ne i32 %t696, 0 - br label %logic.from7392 -logic.from7392: - br i1 %t697, label %logic.rhs7393, label %logic.end7394 -logic.rhs7393: - %t698 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store { ptr, i64, i64 } %t699, ptr %a700 - store { ptr, i64, i64 } { ptr @.str.4749, i64 3, i64 0 }, ptr %a701 - %t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701) - %t703 = icmp ne i32 %t702, 0 - br label %logic.rend7395 -logic.rend7395: - br label %logic.end7394 -logic.end7394: - %t704 = phi i1 [ false, %logic.from7392 ], [ %t703, %logic.rend7395 ] - br i1 %t704, label %then7396, label %endif7398 -then7396: - %t705 = load ptr, ptr %a1 - %t706 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t707 = load { ptr, i64, i64 }, ptr %t706 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 0, %t708 - br i1 %t709, label %range7399, label %inrange7400 -range7399: - call void @finch_panic_index(ptr @.str.4750, i64 4192, i64 0, i64 %t708) - unreachable -inrange7400: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds %S.ast.Node, ptr %t710, i64 0 - %t712 = load %S.ast.Node, ptr %t711 - call void @finch.gen.fail(ptr %t705, %S.ast.Node %t712, { ptr, i64, i64 } { ptr @.str.4751, i64 70, i64 0 }) - br label %endif7398 -endif7398: - %t713 = load ptr, ptr %a1 - %t714 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 0, %t716 - br i1 %t717, label %range7401, label %inrange7402 -range7401: - call void @finch_panic_index(ptr @.str.4752, i64 4194, i64 0, i64 %t716) - unreachable -inrange7402: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds %S.ast.Node, ptr %t718, i64 0 - %t720 = load %S.ast.Node, ptr %t719 - %t721 = load %S.ast.Type, ptr %a23 - %t722 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t721) - store { ptr, i64, i64 } { ptr @.str.4753, i64 11, i64 0 }, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) - store { ptr, i64, i64 } %t722, ptr %a726 - call void @finch_str_drop(ptr %a726) - %t727 = load { ptr, i64, i64 }, ptr %a723 - store { ptr, i64, i64 } %t727, ptr %a729 - store { ptr, i64, i64 } { ptr @.str.4754, i64 6, i64 0 }, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - store { ptr, i64, i64 } %t727, ptr %a731 - call void @finch_str_drop(ptr %a731) - %t732 = load { ptr, i64, i64 }, ptr %a728 - %t733 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } %t732, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - store { ptr, i64, i64 } %t732, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a735 - call void @finch.gen.fail(ptr %t713, %S.ast.Node %t720, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t741 -} - -define internal i64 @finch.gen.sizeBytes(ptr %p0, %S.ast.Type %p1) { -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.4755, 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 %then7403, label %endif7405 -then7403: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic7406, label %ok7407 -panic7406: - call void @finch_panic(ptr @.str.4756, i64 4227, ptr @.str.4757) - unreachable -ok7407: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 16 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %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 %range7408, label %inrange7409 -range7408: - call void @finch_panic_index(ptr @.str.4758, i64 4227, i64 %t17, i64 %t19) - unreachable -inrange7409: - %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 -endif7405: - %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.4759, 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 %then7410, label %endif7412 -then7410: - %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 %range7413, label %inrange7414 -range7413: - call void @finch_panic_index(ptr @.str.4760, i64 4230, i64 0, i64 %t36) - unreachable -inrange7414: - %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 -endif7412: - %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.4761, 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.from7415 -logic.from7415: - br i1 %t48, label %logic.end7417, label %logic.rhs7416 -logic.rhs7416: - %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.4762, 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.rend7418 -logic.rend7418: - br label %logic.end7417 -logic.end7417: - %t55 = phi i1 [ true, %logic.from7415 ], [ %t54, %logic.rend7418 ] - br i1 %t55, label %then7419, label %endif7421 -then7419: - ret i64 8 -endif7421: - %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.4763, 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 %then7422, label %endif7424 -then7422: - ret i64 8 -endif7424: - %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.4764, 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 %then7425, label %endif7427 -then7425: - ret i64 4 -endif7427: - %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.4765, 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 %then7428, label %endif7430 -then7428: - ret i64 1 -endif7430: - %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.drop.arr_S_gen_Leaf(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - 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 - 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.4766, 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 %then7431, label %else7432 -then7431: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic7434, label %ok7435 -panic7434: - call void @finch_panic(ptr @.str.4767, i64 4251, ptr @.str.4768) - unreachable -ok7435: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 16 - %t14 = load ptr, ptr %a1 - %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t16 = load { ptr, i64, i64 }, ptr %t15 - %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 %range7436, label %inrange7437 -range7436: - call void @finch_panic_index(ptr @.str.4769, i64 4251, i64 %t19, i64 %t21) - unreachable -inrange7437: - %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.cond7438 -for.cond7438: - %t34 = load i64, ptr %a33 - %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body7439, label %for.end7441 -for.body7439: - %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 %range7442, label %inrange7443 -range7442: - call void @finch_panic_index(ptr @.str.4770, i64 4253, i64 %t38, i64 %t40) - unreachable -inrange7443: - %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 %range7444, label %inrange7445 -range7444: - call void @finch_panic_index(ptr @.str.4771, i64 4253, i64 %t47, i64 %t49) - unreachable -inrange7445: - %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.cond7446 -each.cond7446: - %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.body7447, label %each.end7449 -each.body7447: - %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.step7448 -each.step7448: - %t72 = load i64, ptr %a57 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %a57 - br label %each.cond7446 -each.end7449: - call void @finch.drop.arr_S_gen_Leaf(ptr %a56) - br label %for.step7440 -for.step7440: - %t74 = load i64, ptr %a33 - %t75 = add i64 %t74, 1 - store i64 %t75, ptr %a33 - br label %for.cond7438 -for.end7441: - call void @finch.drop.S_gen_StructDef(ptr %a29) - br label %endif7433 -else7432: - %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.4772, 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 %then7450, label %else7451 -then7450: - %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 %range7453, label %inrange7454 -range7453: - call void @finch_panic_index(ptr @.str.4773, i64 4258, i64 0, i64 %t85) - unreachable -inrange7454: - %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.cond7455 -for.cond7455: - %t95 = load i64, ptr %a94 - %t96 = icmp slt i64 %t95, %t93 - br i1 %t96, label %for.body7456, label %for.end7458 -for.body7456: - %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 %range7459, label %inrange7460 -range7459: - call void @finch_panic_index(ptr @.str.4774, i64 4260, i64 0, i64 %t100) - unreachable -inrange7460: - %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.cond7461 -each.cond7461: - %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.body7462, label %each.end7464 -each.body7462: - %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.step7463 -each.step7463: - %t127 = load i64, ptr %a112 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a112 - br label %each.cond7461 -each.end7464: - call void @finch.drop.arr_S_gen_Leaf(ptr %a111) - br label %for.step7457 -for.step7457: - %t129 = load i64, ptr %a94 - %t130 = add i64 %t129, 1 - store i64 %t130, ptr %a94 - br label %for.cond7455 -for.end7458: - br label %endif7452 -else7451: - %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.4775, 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 %endif7452 -endif7452: - br label %endif7433 -endif7433: - %t152 = load { ptr, i64, i64 }, ptr %a4 - ret { ptr, i64, i64 } %t152 -} - -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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca i64, align 16 - %a102 = alloca %S.gen.Leaf, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.gen.Abi %p2, ptr %a3 - 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.from7465 -logic.from7465: - br i1 %t17, label %logic.rhs7466, label %logic.end7467 -logic.rhs7466: - %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.rend7468 -logic.rend7468: - br label %logic.end7467 -logic.end7467: - %t21 = phi i1 [ false, %logic.from7465 ], [ %t20, %logic.rend7468 ] - store i1 %t21, ptr %a22 - store i64 0, ptr %a23 - br label %each.cond7469 -each.cond7469: - %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.body7470, label %each.end7472 -each.body7470: - %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.from7473 -logic.from7473: - br i1 %t34, label %logic.end7475, label %logic.rhs7474 -logic.rhs7474: - %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 %range7476, label %inrange7477 -range7476: - call void @finch_panic_index(ptr @.str.4776, i64 4277, i64 0, i64 %t38) - unreachable -inrange7477: - %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.rend7478 -logic.rend7478: - br label %logic.end7475 -logic.end7475: - %t45 = phi i1 [ true, %logic.from7473 ], [ %t44, %logic.rend7478 ] - br i1 %t45, label %then7479, label %endif7481 -then7479: - store i1 false, ptr %a22 - br label %endif7481 -endif7481: - br label %each.step7471 -each.step7471: - %t46 = load i64, ptr %a23 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a23 - br label %each.cond7469 -each.end7472: - %t48 = load i1, ptr %a22 - br i1 %t48, label %then7482, label %endif7484 -then7482: - store { ptr, i64, i64 } { ptr @.str.4777, 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 %range7485, label %inrange7486 -range7485: - call void @finch_panic_index(ptr @.str.4778, i64 4283, i64 0, i64 %t51) - unreachable -inrange7486: - %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 %then7487, label %endif7489 -then7487: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4779, i64 6, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - br label %endif7489 -endif7489: - %t59 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } { ptr @.str.4780, i64 6, i64 0 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t65 = load i64, ptr %t64 - call void @finch_str_from_int(ptr %a66, i64 %t65) - %t67 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4781, i64 1, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.4782, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t77, ptr %a80 - store { ptr, i64, i64 } %t78, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4783, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %t63 - %t90 = add i64 %t89, 1 - call void @finch_arr_reserve(ptr %t62, i64 %t90, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t91 = load ptr, ptr %t62 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t89 - store { ptr, i64, i64 } %t88, ptr %t92 - store i64 %t90, ptr %t63 - store { ptr, i64, i64 } zeroinitializer, ptr %a93 - store i64 0, ptr %a94 - br label %each.cond7490 -each.cond7490: - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t96 = load i64, ptr %t95 - %t97 = load i64, ptr %a94 - %t98 = icmp slt i64 %t97, %t96 - br i1 %t98, label %each.body7491, label %each.end7493 -each.body7491: - %t99 = load ptr, ptr %a14 - %t100 = getelementptr inbounds %S.gen.Leaf, ptr %t99, i64 %t97 - %t101 = load %S.gen.Leaf, ptr %t100 - store %S.gen.Leaf %t101, ptr %a102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_copy(ptr %a106, ptr %a105) - %t107 = load { ptr, i64, i64 }, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %a93, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %a93 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 - store { ptr, i64, i64 } %t107, ptr %t111 - store i64 %t109, ptr %t103 - br label %each.step7492 -each.step7492: - %t112 = load i64, ptr %a94 - %t113 = add i64 %t112, 1 - store i64 %t113, ptr %a94 - br label %each.cond7490 -each.end7493: - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4785, i64 2, i64 0 }, ptr %a115 - call void @finch_str_join(ptr %a116, ptr %a93, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4784, i64 2, i64 0 }, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.4786, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t127, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_str(ptr %a93) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t131 -endif7484: - %t132 = load i64, ptr %a4 - %t133 = icmp sgt i64 %t132, 16 - br i1 %t133, label %then7494, label %endif7496 -then7494: - %t134 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } { ptr @.str.4787, i64 8, i64 0 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t137 -endif7496: - %t138 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t138 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load i64, ptr %a5 - %t142 = icmp sge i64 %t141, 16 - br i1 %t142, label %then7497, label %else7498 -then7497: - %t143 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t143 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i64 %t145 - store { ptr, i64, i64 } { ptr @.str.4789, i64 4, i64 0 }, ptr %t148 - store i64 %t146, ptr %t144 - %t149 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } { ptr @.str.4790, i64 4, i64 0 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif7499 -else7498: - %t152 = load i64, ptr %a4 - %t153 = icmp sle i64 %t152, 8 - br i1 %t153, label %then7500, label %else7501 -then7500: - %t154 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t157, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t154 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t156 - store { ptr, i64, i64 } { ptr @.str.4791, i64 3, i64 0 }, ptr %t159 - store i64 %t157, ptr %t155 - %t160 = load i64, ptr %a4 - %t161 = mul i64 %t160, 8 - call void @finch_str_from_int(ptr %a162, i64 %t161) - %t163 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4792, i64 1, i64 0 }, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t168, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7502 -else7501: - %t172 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 - %t174 = load i64, ptr %t173 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %t172, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %t172 - %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 - store { ptr, i64, i64 } { ptr @.str.4793, i64 9, i64 0 }, ptr %t177 - store i64 %t175, ptr %t173 - %t178 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } { ptr @.str.4794, i64 9, i64 0 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_drop(ptr %a180) - br label %endif7502 -endif7502: - br label %endif7499 -endif7499: - %t181 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t181 -} - -define internal void @finch.drop.S_gen_Abi(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) { -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 - %a27 = alloca %S.gen.StructDef, align 16 - %a28 = alloca %S.gen.StructDef, align 16 - %a30 = alloca %S.gen.StructDef, align 16 - %a33 = alloca i64, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %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 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4795, 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.4796, 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 %then7503, label %endif7505 -then7503: - %t11 = load %S.gen.Abi, ptr %a4 - ret %S.gen.Abi %t11 -endif7505: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7506, label %ok7507 -panic7506: - call void @finch_panic(ptr @.str.4797, i64 4318, ptr @.str.4798) - unreachable -ok7507: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = call i64 @finch.gen.findStruct(ptr %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t19) - %t21 = load { ptr, i64, i64 }, ptr %t14 - %t22 = extractvalue { ptr, i64, i64 } %t21, 1 - %t23 = icmp uge i64 %t20, %t22 - br i1 %t23, label %range7508, label %inrange7509 -range7508: - call void @finch_panic_index(ptr @.str.4799, i64 4318, i64 %t20, i64 %t22) - unreachable -inrange7509: - %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 9 - %t32 = load i64, ptr %t31 - store i64 %t32, ptr %a33 - %t34 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 8, ptr %t34 - %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t36 = load i64, ptr %t35 - %t37 = icmp sgt i64 %t36, 8 - br i1 %t37, label %then7510, label %endif7512 -then7510: - %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t39 = load i64, ptr %t38 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 %t39, ptr %t40 - br label %endif7512 -endif7512: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic7513, label %ok7514 -panic7513: - call void @finch_panic(ptr @.str.4800, i64 4324, ptr @.str.4801) - unreachable -ok7514: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 31 - %t44 = getelementptr inbounds %S.platform.Target, ptr %t43, i32 0, i32 4 - %t45 = load i1, ptr %t44 - br i1 %t45, label %then7515, label %endif7517 -then7515: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a2 - %t48 = load %S.gen.Abi, ptr %a4 - %t49 = load i64, ptr %a33 - %t50 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t51 = load i64, ptr %t50 - %t52 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t46, %S.ast.Type %t47, %S.gen.Abi %t48, i64 %t49, i64 %t51) - call void @finch.drop.S_gen_StructDef(ptr %a30) - call void @finch.drop.S_gen_Abi(ptr %a4) - ret %S.gen.Abi %t52 -endif7517: - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic7518, label %ok7519 -panic7518: - call void @finch_panic(ptr @.str.4802, i64 4327, ptr @.str.4803) - unreachable -ok7519: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 31 - %t56 = getelementptr inbounds %S.platform.Target, ptr %t55, i32 0, i32 1 - %t57 = load i1, ptr %t56 - br i1 %t57, label %then7520, label %endif7522 -then7520: - %t58 = load i64, ptr %a33 - %t59 = icmp eq i64 %t58, 1 - br label %logic.from7523 -logic.from7523: - br i1 %t59, label %logic.end7525, label %logic.rhs7524 -logic.rhs7524: - %t60 = load i64, ptr %a33 - %t61 = icmp eq i64 %t60, 2 - br label %logic.rend7526 -logic.rend7526: - br label %logic.end7525 -logic.end7525: - %t62 = phi i1 [ true, %logic.from7523 ], [ %t61, %logic.rend7526 ] - br label %logic.from7527 -logic.from7527: - br i1 %t62, label %logic.end7529, label %logic.rhs7528 -logic.rhs7528: - %t63 = load i64, ptr %a33 - %t64 = icmp eq i64 %t63, 4 - br label %logic.rend7530 -logic.rend7530: - br label %logic.end7529 -logic.end7529: - %t65 = phi i1 [ true, %logic.from7527 ], [ %t64, %logic.rend7530 ] - br label %logic.from7531 -logic.from7531: - br i1 %t65, label %logic.end7533, label %logic.rhs7532 -logic.rhs7532: - %t66 = load i64, ptr %a33 - %t67 = icmp eq i64 %t66, 8 - br label %logic.rend7534 -logic.rend7534: - br label %logic.end7533 -logic.end7533: - %t68 = phi i1 [ true, %logic.from7531 ], [ %t67, %logic.rend7534 ] - br i1 %t68, label %then7535, label %else7536 -then7535: - %t69 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } { ptr @.str.4804, i64 6, i64 0 }, ptr %t69 - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load i64, ptr %a33 - %t75 = mul i64 %t74, 8 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4805, i64 1, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load i64, ptr %t73 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t72 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t73 - %t87 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range7538, label %inrange7539 -range7538: - call void @finch_panic_index(ptr @.str.4806, i64 4333, i64 0, i64 %t89) - unreachable -inrange7539: - %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 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif7537 -else7536: - %t100 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } { ptr @.str.4807, i64 8, i64 0 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif7537 -endif7537: - %t103 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t103 -endif7522: - %t104 = load i64, ptr %a33 - %t105 = icmp sgt i64 %t104, 16 - br label %logic.from7540 -logic.from7540: - br i1 %t105, label %logic.end7542, label %logic.rhs7541 -logic.rhs7541: - %t106 = load i64, ptr %a33 - %t107 = icmp eq i64 %t106, 0 - br label %logic.rend7543 -logic.rend7543: - br label %logic.end7542 -logic.end7542: - %t108 = phi i1 [ true, %logic.from7540 ], [ %t107, %logic.rend7543 ] - br i1 %t108, label %then7544, label %endif7546 -then7544: - %t109 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } { ptr @.str.4808, i64 6, i64 0 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t112 -endif7546: - %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 %a33 - %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.cond7547 -each.cond7547: - %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.body7548, label %each.end7550 -each.body7548: - %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 %then7551, label %endif7553 -then7551: - store i64 8, ptr %a148 - br label %endif7553 -endif7553: - %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 %panic7554, label %ok7555 -panic7554: - call void @finch_panic(ptr @.str.4809, i64 4352, ptr @.str.4810) - unreachable -ok7555: - %t155 = srem i64 %t152, %t153 - %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then7556, label %endif7558 -then7556: - %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } { ptr @.str.4811, i64 6, i64 0 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t160 -endif7558: - %t161 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 - %t162 = load i64, ptr %t161 - %t163 = sdiv i64 %t162, 8 - store i64 %t163, ptr %a164 - %t165 = load i64, ptr %a164 - %t166 = load { ptr, i64, i64 }, ptr %a128 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range7559, label %inrange7560 -range7559: - call void @finch_panic_index(ptr @.str.4812, i64 4357, i64 %t165, i64 %t167) - unreachable -inrange7560: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds i64, ptr %t169, i64 %t165 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 1 - br label %logic.from7561 -logic.from7561: - br i1 %t172, label %logic.end7563, label %logic.rhs7562 -logic.rhs7562: - %t173 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2 - %t174 = load i1, ptr %t173 - %t175 = xor i1 %t174, true - br label %logic.rend7564 -logic.rend7564: - br label %logic.end7563 -logic.end7563: - %t176 = phi i1 [ true, %logic.from7561 ], [ %t175, %logic.rend7564 ] - br i1 %t176, label %then7565, label %else7566 -then7565: - %t177 = load i64, ptr %a164 - %t178 = load { ptr, i64, i64 }, ptr %a128 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range7568, label %inrange7569 -range7568: - call void @finch_panic_index(ptr @.str.4813, i64 4358, i64 %t177, i64 %t179) - unreachable -inrange7569: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds i64, ptr %t181, i64 %t177 - store i64 1, ptr %t182 - br label %endif7567 -else7566: - %t183 = load i64, ptr %a164 - %t184 = load { ptr, i64, i64 }, ptr %a128 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range7570, label %inrange7571 -range7570: - call void @finch_panic_index(ptr @.str.4814, i64 4360, i64 %t183, i64 %t185) - unreachable -inrange7571: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t183 - store i64 2, ptr %t188 - br label %endif7567 -endif7567: - %t189 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 - %t190 = load i1, ptr %t189 - br i1 %t190, label %then7572, label %endif7574 -then7572: - %t191 = load i64, ptr %a164 - %t192 = load { ptr, i64, i64 }, ptr %a136 - %t193 = extractvalue { ptr, i64, i64 } %t192, 1 - %t194 = icmp uge i64 %t191, %t193 - br i1 %t194, label %range7575, label %inrange7576 -range7575: - call void @finch_panic_index(ptr @.str.4815, i64 4363, i64 %t191, i64 %t193) - unreachable -inrange7576: - %t195 = extractvalue { ptr, i64, i64 } %t192, 0 - %t196 = getelementptr inbounds i1, ptr %t195, i64 %t191 - store i1 true, ptr %t196 - br label %endif7574 -endif7574: - br label %each.step7549 -each.step7549: - %t197 = load i64, ptr %a137 - %t198 = add i64 %t197, 1 - store i64 %t198, ptr %a137 - br label %each.cond7547 -each.end7550: - %t199 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } { ptr @.str.4816, i64 6, i64 0 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load i64, ptr %a120 - store i64 0, ptr %a203 - br label %for.cond7577 -for.cond7577: - %t204 = load i64, ptr %a203 - %t205 = icmp slt i64 %t204, %t202 - br i1 %t205, label %for.body7578, label %for.end7580 -for.body7578: - %t206 = load i64, ptr %a33 - %t207 = load i64, ptr %a203 - %t208 = mul i64 8, %t207 - %t209 = sub i64 %t206, %t208 - store i64 %t209, ptr %a210 - %t211 = load i64, ptr %a210 - %t212 = icmp sgt i64 %t211, 8 - br i1 %t212, label %then7581, label %endif7583 -then7581: - store i64 8, ptr %a210 - br label %endif7583 -endif7583: - %t213 = load i64, ptr %a203 - %t214 = load { ptr, i64, i64 }, ptr %a128 - %t215 = extractvalue { ptr, i64, i64 } %t214, 1 - %t216 = icmp uge i64 %t213, %t215 - br i1 %t216, label %range7584, label %inrange7585 -range7584: - call void @finch_panic_index(ptr @.str.4817, i64 4372, i64 %t213, i64 %t215) - unreachable -inrange7585: - %t217 = extractvalue { ptr, i64, i64 } %t214, 0 - %t218 = getelementptr inbounds i64, ptr %t217, i64 %t213 - %t219 = load i64, ptr %t218 - %t220 = icmp eq i64 %t219, 2 - br i1 %t220, label %then7586, label %else7587 -then7586: - %t221 = load i64, ptr %a203 - %t222 = load { ptr, i64, i64 }, ptr %a136 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 %t221, %t223 - br i1 %t224, label %range7589, label %inrange7590 -range7589: - call void @finch_panic_index(ptr @.str.4818, i64 4373, i64 %t221, i64 %t223) - unreachable -inrange7590: - %t225 = extractvalue { ptr, i64, i64 } %t222, 0 - %t226 = getelementptr inbounds i1, ptr %t225, i64 %t221 - %t227 = load i1, ptr %t226 - br i1 %t227, label %then7591, label %else7592 -then7591: - %t228 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i32 0, i32 1 - %t230 = load i64, ptr %t229 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %t228, i64 %t231, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %t228 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t230 - store { ptr, i64, i64 } { ptr @.str.4819, i64 6, i64 0 }, ptr %t233 - store i64 %t231, ptr %t229 - br label %endif7593 -else7592: - %t234 = load i64, ptr %a210 - %t235 = icmp sgt i64 %t234, 4 - br i1 %t235, label %then7594, label %else7595 -then7594: - %t236 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 - %t238 = load i64, ptr %t237 - %t239 = add i64 %t238, 1 - call void @finch_arr_reserve(ptr %t236, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t240 = load ptr, ptr %t236 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238 - store { ptr, i64, i64 } { ptr @.str.4820, i64 11, i64 0 }, ptr %t241 - store i64 %t239, ptr %t237 - br label %endif7596 -else7595: - %t242 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %t242, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %t242 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } { ptr @.str.4821, i64 5, i64 0 }, ptr %t247 - store i64 %t245, ptr %t243 - br label %endif7596 -endif7596: - br label %endif7593 -endif7593: - br label %endif7588 -else7587: - %t248 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t250 = load i64, ptr %a210 - %t251 = mul i64 %t250, 8 - call void @finch_str_from_int(ptr %a252, i64 %t251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.4822, i64 1, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - store { ptr, i64, i64 } %t253, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a254 - %t259 = load i64, ptr %t249 - %t260 = add i64 %t259, 1 - call void @finch_arr_reserve(ptr %t248, i64 %t260, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t261 = load ptr, ptr %t248 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t261, i64 %t259 - store { ptr, i64, i64 } %t258, ptr %t262 - store i64 %t260, ptr %t249 - br label %endif7588 -endif7588: - br label %for.step7579 -for.step7579: - %t263 = load i64, ptr %a203 - %t264 = add i64 %t263, 1 - store i64 %t264, ptr %a203 - br label %for.cond7577 -for.end7580: - %t265 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = icmp eq i64 %t267, 1 - br i1 %t268, label %then7597, label %else7598 -then7597: - %t269 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t270 = load { ptr, i64, i64 }, ptr %t269 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 0, %t271 - br i1 %t272, label %range7600, label %inrange7601 -range7600: - call void @finch_panic_index(ptr @.str.4823, i64 4385, i64 0, i64 %t271) - unreachable -inrange7601: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0 - %t275 = load { ptr, i64, i64 }, ptr %t274 - %t276 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t275, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch_str_drop(ptr %a281) - br label %endif7599 -else7598: - %t282 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4825, i64 2, i64 0 }, ptr %a284 - call void @finch_str_join(ptr %a285, ptr %t282, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.4824, i64 2, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4826, i64 2, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } %t296, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - br label %endif7599 -endif7599: - %t300 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t300 -} - -define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) { -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 - %a12 = alloca %S.gen.Abi, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca i64, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.gen.Abi, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a88 = alloca i64, align 16 - %a90 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Abi, align 16 - %a155 = alloca %S.gen.Abi, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 - %t11 = load %S.gen.Abi, ptr %t10 - store %S.gen.Abi %t9, ptr %t10 - store %S.gen.Abi %t11, ptr %a12 - call void @finch.drop.S_gen_Abi(ptr %a12) - %t13 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } { ptr @.str.4827, i64 4, i64 0 }, ptr %t13 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4828, i64 4, i64 0 }, ptr %a19 - %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) - %t21 = icmp eq i32 %t20, 0 - br i1 %t21, label %then7602, label %endif7604 -then7602: - %t22 = load ptr, ptr %a1 - %t23 = load %S.ast.Type, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t22, %S.ast.Type %t23) - %t25 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t24, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_drop(ptr %a27) - br label %endif7604 -endif7604: - %t28 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t29 = getelementptr inbounds %S.gen.Abi, ptr %t28, i32 0, i32 0 - %t30 = load { ptr, i64, i64 }, ptr %t29 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.4829, i64 8, i64 0 }, ptr %a32 - %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) - %t34 = icmp ne i32 %t33, 0 - br i1 %t34, label %then7605, label %endif7607 -then7605: - %t35 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t36 = getelementptr inbounds %S.gen.Abi, ptr %t35, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - store { ptr, i64, i64 } { ptr @.str.4830, i64 6, i64 0 }, ptr %t36 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif7607 -endif7607: - %t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %t39, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.4831, i64 6, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then7608, label %else7609 -then7608: - %t46 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3 - store i1 true, ptr %t46 - %t47 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } { ptr @.str.4832, i64 4, i64 0 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load i64, ptr %a5 - %t51 = sub i64 %t50, 1 - store i64 %t51, ptr %a5 - br label %endif7610 -else7609: - %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t53 = getelementptr inbounds %S.gen.Abi, ptr %t52, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.4833, i64 6, i64 0 }, ptr %a56 - %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %then7611, label %endif7613 -then7611: - %t59 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t60 = getelementptr inbounds %S.gen.Abi, ptr %t59, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t65, ptr %t62 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif7613 -endif7613: - br label %endif7610 -endif7610: - store i64 0, ptr %a68 - br label %each.cond7614 -each.cond7614: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load i64, ptr %a68 - %t72 = icmp slt i64 %t71, %t70 - br i1 %t72, label %each.body7615, label %each.end7617 -each.body7615: - %t73 = load ptr, ptr %a3 - %t74 = getelementptr inbounds %S.ast.Type, ptr %t73, i64 %t71 - %t75 = load %S.ast.Type, ptr %t74 - store %S.ast.Type %t75, ptr %a76 - %t77 = load ptr, ptr %a1 - %t78 = load %S.ast.Type, ptr %a76 - %t79 = call %S.gen.Abi @finch.gen.classify(ptr %t77, %S.ast.Type %t78) - store %S.gen.Abi %t79, ptr %a80 - %t81 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4834, i64 6, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then7618, label %else7619 -then7618: - store i64 0, ptr %a87 - store i64 0, ptr %a88 - %t89 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 1 - store i64 0, ptr %a90 - br label %each.cond7621 -each.cond7621: - %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.body7622, label %each.end7624 -each.body7622: - %t95 = load ptr, ptr %t89 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a102 - %t103 = call i32 @finch_str_starts(ptr %a100, ptr %a102) - %t104 = icmp ne i32 %t103, 0 - br i1 %t104, label %then7625, label %else7626 -then7625: - %t105 = load i64, ptr %a87 - %t106 = add i64 %t105, 1 - store i64 %t106, ptr %a87 - br label %endif7627 -else7626: - %t107 = load i64, ptr %a88 - %t108 = add i64 %t107, 1 - store i64 %t108, ptr %a88 - br label %endif7627 -endif7627: - br label %each.step7623 -each.step7623: - %t109 = load i64, ptr %a90 - %t110 = add i64 %t109, 1 - store i64 %t110, ptr %a90 - br label %each.cond7621 -each.end7624: - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic7628, label %ok7629 -panic7628: - call void @finch_panic(ptr @.str.4837, i64 4425, ptr @.str.4838) - unreachable -ok7629: - %t113 = getelementptr inbounds %S.gen.Gen, ptr %t111, i32 0, i32 31 - %t114 = getelementptr inbounds %S.platform.Target, ptr %t113, i32 0, i32 1 - %t115 = load i1, ptr %t114 - br label %logic.from7630 -logic.from7630: - br i1 %t115, label %logic.end7632, label %logic.rhs7631 -logic.rhs7631: - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic7633, label %ok7634 -panic7633: - call void @finch_panic(ptr @.str.4839, i64 4425, ptr @.str.4840) - unreachable -ok7634: - %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 31 - %t119 = getelementptr inbounds %S.platform.Target, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.rend7635 -logic.rend7635: - br label %logic.end7632 -logic.end7632: - %t121 = phi i1 [ true, %logic.from7630 ], [ %t120, %logic.rend7635 ] - br label %logic.from7636 -logic.from7636: - br i1 %t121, label %logic.end7638, label %logic.rhs7637 -logic.rhs7637: - %t122 = load i64, ptr %a87 - %t123 = load i64, ptr %a5 - %t124 = icmp sle i64 %t122, %t123 - br label %logic.from7639 -logic.from7639: - br i1 %t124, label %logic.rhs7640, label %logic.end7641 -logic.rhs7640: - %t125 = load i64, ptr %a88 - %t126 = load i64, ptr %a6 - %t127 = icmp sle i64 %t125, %t126 - br label %logic.rend7642 -logic.rend7642: - br label %logic.end7641 -logic.end7641: - %t128 = phi i1 [ false, %logic.from7639 ], [ %t127, %logic.rend7642 ] - br label %logic.rend7643 -logic.rend7643: - br label %logic.end7638 -logic.end7638: - %t129 = phi i1 [ true, %logic.from7636 ], [ %t128, %logic.rend7643 ] - br i1 %t129, label %then7644, label %else7645 -then7644: - %t130 = load i64, ptr %a87 - %t131 = load i64, ptr %a5 - %t132 = sub i64 %t131, %t130 - store i64 %t132, ptr %a5 - %t133 = load i64, ptr %a88 - %t134 = load i64, ptr %a6 - %t135 = sub i64 %t134, %t133 - store i64 %t135, ptr %a6 - br label %endif7646 -else7645: - %t136 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t137 = load { ptr, i64, i64 }, ptr %t136 - store { ptr, i64, i64 } { ptr @.str.4841, i64 6, i64 0 }, ptr %t136 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif7646 -endif7646: - br label %endif7620 -else7619: - %t139 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.4842, i64 6, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %then7647, label %endif7649 -then7647: - %t145 = load %S.ast.Type, ptr %a76 - %t146 = call i1 @finch.gen.isFloat(%S.ast.Type %t145) - br i1 %t146, label %then7650, label %else7651 -then7650: - %t147 = load i64, ptr %a6 - %t148 = sub i64 %t147, 1 - store i64 %t148, ptr %a6 - br label %endif7652 -else7651: - %t149 = load i64, ptr %a5 - %t150 = sub i64 %t149, 1 - store i64 %t150, ptr %a5 - br label %endif7652 -endif7652: - br label %endif7649 -endif7649: - br label %endif7620 -endif7620: - %t151 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load %S.gen.Abi, ptr %a80 - store %S.gen.Abi %t153, ptr %a154 - call void @finch.copy.S_gen_Abi(ptr %a155, ptr %a154) - %t156 = load %S.gen.Abi, ptr %a155 - %t157 = load i64, ptr %t152 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t151 - %t160 = getelementptr inbounds %S.gen.Abi, ptr %t159, i64 %t157 - store %S.gen.Abi %t156, ptr %t160 - store i64 %t158, ptr %t152 - call void @finch.drop.S_gen_Abi(ptr %a80) - br label %each.step7616 -each.step7616: - %t161 = load i64, ptr %a68 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a68 - br label %each.cond7614 -each.end7617: - %t163 = load %S.gen.Plan, ptr %a4 - ret %S.gen.Plan %t163 -} - -define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.4843, 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 %then7653, label %endif7655 -then7653: - ret void -endif7655: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7656, label %ok7657 -panic7656: - call void @finch_panic(ptr @.str.4844, i64 4447, ptr @.str.4845) - unreachable -ok7657: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %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 %range7658, label %inrange7659 -range7658: - call void @finch_panic_index(ptr @.str.4846, i64 4447, i64 %t20, i64 %t22) - unreachable -inrange7659: - %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 %then7660, label %endif7662 -then7660: - %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.4847, 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.4848, i64 2, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t45, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t45, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4849, i64 18, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load %S.ast.Type, ptr %a4 - %t58 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t57) - store { ptr, i64, i64 } %t56, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t56, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4850, i64 20, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif7662 -endif7662: - %t71 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 - %t73 = load i64, ptr %t72 - %t74 = icmp sgt i64 %t73, 0 - br i1 %t74, label %then7663, label %endif7665 -then7663: - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Node, ptr %a2 - %t77 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.4851, i64 16, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4852, i64 2, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t86, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4853, i64 12, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load %S.ast.Type, ptr %a4 - %t99 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t98) - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t99, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4854, i64 40, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t110, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } %t117) - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif7665 -endif7665: - call void @finch.drop.S_gen_StructDef(ptr %a30) - 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.from7666 -logic.from7666: - br i1 %t3, label %logic.end7668, label %logic.rhs7667 -logic.rhs7667: - %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.4855, 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.rend7669 -logic.rend7669: - br label %logic.end7668 -logic.end7668: - %t10 = phi i1 [ true, %logic.from7666 ], [ %t9, %logic.rend7669 ] - br label %logic.from7670 -logic.from7670: - br i1 %t10, label %logic.end7672, label %logic.rhs7671 -logic.rhs7671: - %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.4856, 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.rend7673 -logic.rend7673: - br label %logic.end7672 -logic.end7672: - %t17 = phi i1 [ true, %logic.from7670 ], [ %t16, %logic.rend7673 ] - br label %logic.from7674 -logic.from7674: - br i1 %t17, label %logic.end7676, label %logic.rhs7675 -logic.rhs7675: - %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.4857, 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.rend7677 -logic.rend7677: - br label %logic.end7676 -logic.end7676: - %t24 = phi i1 [ true, %logic.from7674 ], [ %t23, %logic.rend7677 ] - 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 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca i64, align 16 - %a106 = alloca %S.gen.FnSig, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %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 %then7678, label %endif7680 -then7678: - %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.4858, i64 59, i64 0 }) - br label %endif7680 -endif7680: - %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7 - %t11 = load i1, ptr %t10 - br i1 %t11, label %then7681, label %endif7683 -then7681: - %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.4859, i64 74, i64 0 }) - br label %endif7683 -endif7683: - %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 %then7684, label %endif7686 -then7684: - %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.4860, i64 29, i64 0 }) - br label %endif7686 -endif7686: - %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.cond7687 -for.cond7687: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t22 - br i1 %t25, label %for.body7688, label %for.end7690 -for.body7688: - %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 %range7691, label %inrange7692 -range7691: - call void @finch_panic_index(ptr @.str.4861, i64 4472, i64 %t27, i64 %t29) - unreachable -inrange7692: - %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 %then7693, label %endif7695 -then7693: - %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 %range7696, label %inrange7697 -range7696: - call void @finch_panic_index(ptr @.str.4862, i64 4473, i64 %t38, i64 %t40) - unreachable -inrange7697: - %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 %range7698, label %inrange7699 -range7698: - call void @finch_panic_index(ptr @.str.4864, i64 4473, i64 %t46, i64 %t48) - unreachable -inrange7699: - %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.4863, i64 66, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4865, i64 50, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - br label %endif7695 -endif7695: - br label %for.step7689 -for.step7689: - %t65 = load i64, ptr %a23 - %t66 = add i64 %t65, 1 - store i64 %t66, ptr %a23 - br label %for.cond7687 -for.end7690: - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t68 = getelementptr inbounds %S.ast.Type, ptr %t67, i32 0, i32 0 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.4866, i64 4, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp eq i32 %t72, 0 - br label %logic.from7700 -logic.from7700: - br i1 %t73, label %logic.rhs7701, label %logic.end7702 -logic.rhs7701: - %t74 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t75 = load %S.ast.Type, ptr %t74 - %t76 = call i1 @finch.gen.cPlain(%S.ast.Type %t75) - %t77 = xor i1 %t76, true - br label %logic.rend7703 -logic.rend7703: - br label %logic.end7702 -logic.end7702: - %t78 = phi i1 [ false, %logic.from7700 ], [ %t77, %logic.rend7703 ] - br i1 %t78, label %then7704, label %endif7706 -then7704: - %t79 = load ptr, ptr %a1 - %t80 = load %S.ast.Node, ptr %a2 - %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t82 = load %S.ast.Type, ptr %t81 - %t83 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t82) - store { ptr, i64, i64 } { ptr @.str.4867, i64 69, i64 0 }, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4868, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif7706 -endif7706: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic7707, label %ok7708 -panic7707: - call void @finch_panic(ptr @.str.4869, i64 4479, ptr @.str.4870) - unreachable -ok7708: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 15 - store i64 0, ptr %a98 - br label %each.cond7709 -each.cond7709: - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = load i64, ptr %a98 - %t102 = icmp slt i64 %t101, %t100 - br i1 %t102, label %each.body7710, label %each.end7712 -each.body7710: - %t103 = load ptr, ptr %t97 - %t104 = getelementptr inbounds %S.gen.FnSig, ptr %t103, i64 %t101 - %t105 = load %S.gen.FnSig, ptr %t104 - store %S.gen.FnSig %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 5 - %t108 = load i1, ptr %t107 - br label %logic.from7713 -logic.from7713: - br i1 %t108, label %logic.rhs7714, label %logic.end7715 -logic.rhs7714: - %t109 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a113 - store { ptr, i64, i64 } %t112, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7716 -logic.rend7716: - br label %logic.end7715 -logic.end7715: - %t117 = phi i1 [ false, %logic.from7713 ], [ %t116, %logic.rend7716 ] - br i1 %t117, label %then7717, label %endif7719 -then7717: - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Node, ptr %a2 - %t120 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } { ptr @.str.4871, 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.4872, i64 38, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a131 - call void @finch_str_drop(ptr %a131) - br label %endif7719 -endif7719: - br label %each.step7711 -each.step7711: - %t132 = load i64, ptr %a98 - %t133 = add i64 %t132, 1 - store i64 %t133, ptr %a98 - br label %each.cond7709 -each.end7712: - 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 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - 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.cond7720 -for.cond7720: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body7721, label %for.end7723 -for.body7721: - %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 %range7724, label %inrange7725 -range7724: - call void @finch_panic_index(ptr @.str.4873, i64 4492, i64 %t15, i64 %t17) - unreachable -inrange7725: - %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.4874, 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 %then7726, label %else7727 -then7726: - %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.4875, i64 13, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load i64, ptr %t32 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %a3 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 - store { ptr, i64, i64 } %t40, ptr %t44 - store i64 %t42, ptr %t32 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.4877, i64 13, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4878, i64 3, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = call { ptr, i64, i64 } @finch.gen.op(ptr %t46, { ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } { ptr @.str.4876, i64 3, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %t45 - %t68 = add i64 %t67, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t69 = load ptr, ptr %a4 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67 - store { ptr, i64, i64 } %t66, ptr %t70 - store i64 %t68, ptr %t45 - br label %endif7728 -else7727: - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Type, ptr %a25 - %t74 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t72, %S.ast.Type %t73) - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a25 - %t77 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t75, %S.ast.Type %t76) - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4879, i64 3, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - %t98 = load i64, ptr %t71 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t99, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %a3 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t98 - store { ptr, i64, i64 } %t97, ptr %t101 - store i64 %t99, ptr %t71 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t103 = load ptr, ptr %a1 - %t104 = load %S.ast.Type, ptr %a25 - %t105 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t103, %S.ast.Type %t104) - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4880, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t110, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = load i64, ptr %t102 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t121, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %a4 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t120 - store { ptr, i64, i64 } %t119, ptr %t123 - store i64 %t121, ptr %t102 - br label %endif7728 -endif7728: - call void @finch.drop.S_ast_Type(ptr %a25) - br label %for.step7722 -for.step7722: - %t124 = load i64, ptr %a11 - %t125 = add i64 %t124, 1 - store i64 %t125, ptr %a11 - br label %for.cond7720 -for.end7723: - %t126 = load ptr, ptr %a1 - %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t128 = load %S.ast.Type, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t126, %S.ast.Type %t128) - store { ptr, i64, i64 } { ptr @.str.4881, i64 5, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4882, i64 1, i64 0 }, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - store { ptr, i64, i64 } %t134, ptr %a138 - call void @finch_str_drop(ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t139, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4883, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4884, i64 2, i64 0 }, ptr %a153 - call void @finch_str_join(ptr %a154, ptr %a4, ptr %a153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t151, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t151, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.4885, i64 1, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4886, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4887, i64 0, i64 0 }, ptr %a169 - %t170 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t171 = getelementptr inbounds %S.ast.Type, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.4888, i64 4, i64 0 }, ptr %a174 - %t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174) - %t176 = icmp ne i32 %t175, 0 - br i1 %t176, label %then7729, label %else7730 -then7729: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a167 - call void @finch.gen.emit(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t179, { ptr, i64, i64 } { ptr @.str.4889, i64 8, i64 0 }) - br label %endif7731 -else7730: - %t180 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t181 = getelementptr inbounds %S.ast.Type, ptr %t180, i32 0, i32 0 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } %t182, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.4890, i64 4, i64 0 }, ptr %a184 - %t185 = call i32 @finch_str_eq(ptr %a183, ptr %a184) - %t186 = icmp ne i32 %t185, 0 - br i1 %t186, label %then7732, label %else7733 -then7732: - %t187 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4891, i64 2, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4892, i64 8, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load ptr, ptr %a1 - %t192 = load ptr, ptr %a1 - %t193 = load ptr, ptr %a1 - %t194 = load { ptr, i64, i64 }, ptr %a167 - %t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } { ptr @.str.4894, i64 8, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.4895, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t205, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } { ptr @.str.4893, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.gen.emit(ptr %t191, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7734 -else7733: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t214, %S.ast.Type %t216) - %t218 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t217, ptr %a168 - store { ptr, i64, i64 } %t218, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load ptr, ptr %a1 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t222 = load %S.ast.Type, ptr %t221 - %t223 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t220, %S.ast.Type %t222) - %t224 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t223, ptr %a169 - store { ptr, i64, i64 } %t224, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4896, i64 4, i64 0 }, ptr %a229 - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a228 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.4897, i64 1, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load ptr, ptr %a1 - %t238 = load { ptr, i64, i64 }, ptr %a167 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t237, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t236, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t236, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.emit(ptr %t226, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7734 -endif7734: - br label %endif7731 -endif7731: - store { ptr, i64, i64 } { ptr @.str.4898, i64 0, i64 0 }, ptr %a247 - %t248 = load ptr, ptr %a1 - %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic7735, label %ok7736 -panic7735: - call void @finch_panic(ptr @.str.4899, i64 4517, ptr @.str.4900) - unreachable -ok7736: - %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 31 - %t251 = getelementptr inbounds %S.platform.Target, ptr %t250, i32 0, i32 1 - %t252 = load i1, ptr %t251 - br i1 %t252, label %then7737, label %endif7739 -then7737: - %t253 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4901, i64 10, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - br label %endif7739 -endif7739: - %t255 = load ptr, ptr %a1 - %t256 = load %S.gen.Saved, ptr %a7 - %t257 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4902, i64 6, i64 0 }, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a258 - %t262 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t261, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t261, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t267, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4903, i64 1, i64 0 }, ptr %a270 - call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) - store { ptr, i64, i64 } %t267, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a268 - %t273 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t272, ptr %a275 - store { ptr, i64, i64 } %t273, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t272, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4904, i64 2, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t283, ptr %a287 - store { ptr, i64, i64 } %t285, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t283, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.4905, i64 1, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4906, i64 2, i64 0 }, ptr %a297 - call void @finch_str_join(ptr %a298, ptr %a3, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t295, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t295, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t305, ptr %a307 - store { ptr, i64, i64 } { ptr @.str.4907, i64 1, i64 0 }, ptr %a308 - call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) - store { ptr, i64, i64 } %t305, ptr %a309 - call void @finch_str_drop(ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a306 - call void @finch.gen.endHelper(ptr %t255, %S.gen.Saved %t256, { ptr, i64, i64 } %t310) - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - call void @finch_str_copy(ptr %a315, ptr %a314) - %t316 = load { ptr, i64, i64 }, ptr %a315 - call void @finch_str_drop(ptr %a247) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Saved(ptr %a7) - call void @finch.drop.arr_str(ptr %a4) - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t316 -} - -define internal void @finch.drop.arr_S_gen_Abi(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond7862 -n.cond7862: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body7863, label %n.end7864 -n.body7863: - %t7 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Abi(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond7862 -n.end7864: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Plan(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Abi(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_gen_Abi(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) { -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca i64, align 16 - %a108 = alloca %S.ast.Type, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.gen.Plan, align 16 - %a276 = alloca %S.gen.Saved, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca i64, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca i64, align 16 - %a318 = alloca %S.ast.Type, align 16 - %a319 = alloca %S.ast.Type, align 16 - %a321 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.gen.Abi, align 16 - %a331 = alloca %S.gen.Abi, align 16 - %a333 = alloca %S.gen.Abi, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca i64, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a793 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a808 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7740, label %ok7741 -panic7740: - call void @finch_panic(ptr @.str.4908, i64 4526, ptr @.str.4909) - unreachable -ok7741: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 - %t7 = load i64, ptr %a2 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.4910, i64 4526, i64 %t7, i64 %t9) - unreachable -inrange7743: - %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.4911, i64 9, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.4912, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t30, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t30, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic7744, label %ok7745 -panic7744: - call void @finch_panic(ptr @.str.4913, i64 4528, ptr @.str.4914) - unreachable -ok7745: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 40 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4915, i64 2, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t42 - %t50 = load ptr, ptr %t41 - store i64 0, ptr %a51 - br label %find.cond7746 -find.cond7746: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body7747, label %find.end7750 -find.body7747: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit7748, label %find.next7749 -find.hit7748: - store i64 %t52, ptr %a48 - br label %find.end7750 -find.next7749: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond7746 -find.end7750: - store { ptr, i64, i64 } %t47, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load i64, ptr %a48 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then7751, label %endif7753 -then7751: - %t64 = load { ptr, i64, i64 }, ptr %a38 - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t64 -endif7753: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic7754, label %ok7755 -panic7754: - call void @finch_panic(ptr @.str.4916, i64 4531, ptr @.str.4917) - unreachable -ok7755: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 40 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4918, i64 2, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load i64, ptr %t68 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t67, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t67 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t68 - %t78 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = icmp sgt i64 %t80, 0 - br label %logic.from7756 -logic.from7756: - br i1 %t81, label %logic.end7758, label %logic.rhs7757 -logic.rhs7757: - %t82 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 - %t83 = load i1, ptr %t82 - br label %logic.rend7759 -logic.rend7759: - br label %logic.end7758 -logic.end7758: - %t84 = phi i1 [ true, %logic.from7756 ], [ %t83, %logic.rend7759 ] - br i1 %t84, label %then7760, label %endif7762 -then7760: - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Node, ptr %a3 - %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - store { ptr, i64, i64 } { ptr @.str.4919, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4920, i64 81, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.fail(ptr %t85, %S.ast.Node %t86, { ptr, i64, i64 } %t97) - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_drop(ptr %a98) - br label %endif7762 -endif7762: - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - store i64 0, ptr %a100 - br label %each.cond7763 -each.cond7763: - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t102 = load i64, ptr %t101 - %t103 = load i64, ptr %a100 - %t104 = icmp slt i64 %t103, %t102 - br i1 %t104, label %each.body7764, label %each.end7766 -each.body7764: - %t105 = load ptr, ptr %t99 - %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t103 - %t107 = load %S.ast.Type, ptr %t106 - store %S.ast.Type %t107, ptr %a108 - %t109 = load %S.ast.Type, ptr %a108 - %t110 = call i1 @finch.gen.isNumber(%S.ast.Type %t109) - br label %logic.from7767 -logic.from7767: - br i1 %t110, label %logic.end7769, label %logic.rhs7768 -logic.rhs7768: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4921, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7770 -logic.rend7770: - br label %logic.end7769 -logic.end7769: - %t117 = phi i1 [ true, %logic.from7767 ], [ %t116, %logic.rend7770 ] - br label %logic.from7771 -logic.from7771: - br i1 %t117, label %logic.end7773, label %logic.rhs7772 -logic.rhs7772: - %t118 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t119 = load { ptr, i64, i64 }, ptr %t118 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4922, i64 4, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend7774 -logic.rend7774: - br label %logic.end7773 -logic.end7773: - %t124 = phi i1 [ true, %logic.from7771 ], [ %t123, %logic.rend7774 ] - br label %logic.from7775 -logic.from7775: - br i1 %t124, label %logic.end7777, label %logic.rhs7776 -logic.rhs7776: - %t125 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4923, i64 3, i64 0 }, ptr %a128 - %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) - %t130 = icmp ne i32 %t129, 0 - br label %logic.rend7778 -logic.rend7778: - br label %logic.end7777 -logic.end7777: - %t131 = phi i1 [ true, %logic.from7775 ], [ %t130, %logic.rend7778 ] - br label %logic.from7779 -logic.from7779: - br i1 %t131, label %logic.end7781, label %logic.rhs7780 -logic.rhs7780: - %t132 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4924, i64 6, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp ne i32 %t136, 0 - br label %logic.from7782 -logic.from7782: - br i1 %t137, label %logic.rhs7783, label %logic.end7784 -logic.rhs7783: - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic7785, label %ok7786 -panic7785: - call void @finch_panic(ptr @.str.4925, i64 4536, ptr @.str.4926) - unreachable -ok7786: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load ptr, ptr %a1 - %t142 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 3 - %t143 = load { ptr, i64, i64 }, ptr %t142 - %t144 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 2 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = call i64 @finch.gen.findStruct(ptr %t141, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t145) - %t147 = load { ptr, i64, i64 }, ptr %t140 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 %t146, %t148 - br i1 %t149, label %range7787, label %inrange7788 -range7787: - call void @finch_panic_index(ptr @.str.4927, i64 4536, i64 %t146, i64 %t148) - unreachable -inrange7788: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.gen.StructDef, ptr %t150, i64 %t146 - %t152 = getelementptr inbounds %S.gen.StructDef, ptr %t151, i32 0, i32 2 - %t153 = load i1, ptr %t152 - br label %logic.rend7789 -logic.rend7789: - br label %logic.end7784 -logic.end7784: - %t154 = phi i1 [ false, %logic.from7782 ], [ %t153, %logic.rend7789 ] - br label %logic.rend7790 -logic.rend7790: - br label %logic.end7781 -logic.end7781: - %t155 = phi i1 [ true, %logic.from7779 ], [ %t154, %logic.rend7790 ] - %t156 = xor i1 %t155, true - br i1 %t156, label %then7791, label %endif7793 -then7791: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a3 - %t159 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } { ptr @.str.4928, i64 5, i64 0 }, ptr %a162 - store { ptr, i64, i64 } %t160, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4929, i64 95, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = load %S.ast.Type, ptr %a108 - %t171 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t170) - store { ptr, i64, i64 } %t169, ptr %a173 - store { ptr, i64, i64 } %t171, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t169, ptr %a175 - call void @finch_str_drop(ptr %a175) - store { ptr, i64, i64 } %t171, ptr %a176 - call void @finch_str_drop(ptr %a176) - %t177 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - br label %endif7793 -endif7793: - br label %each.step7765 -each.step7765: - %t179 = load i64, ptr %a100 - %t180 = add i64 %t179, 1 - store i64 %t180, ptr %a100 - br label %each.cond7763 -each.end7766: - %t181 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call i1 @finch.gen.isNumber(%S.ast.Type %t182) - br label %logic.from7794 -logic.from7794: - br i1 %t183, label %logic.end7796, label %logic.rhs7795 -logic.rhs7795: - %t184 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t185 = getelementptr inbounds %S.ast.Type, ptr %t184, i32 0, i32 0 - %t186 = load { ptr, i64, i64 }, ptr %t185 - store { ptr, i64, i64 } %t186, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4930, i64 4, i64 0 }, ptr %a188 - %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) - %t190 = icmp ne i32 %t189, 0 - br label %logic.rend7797 -logic.rend7797: - br label %logic.end7796 -logic.end7796: - %t191 = phi i1 [ true, %logic.from7794 ], [ %t190, %logic.rend7797 ] - br label %logic.from7798 -logic.from7798: - br i1 %t191, label %logic.end7800, label %logic.rhs7799 -logic.rhs7799: - %t192 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4931, i64 4, i64 0 }, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br label %logic.rend7801 -logic.rend7801: - br label %logic.end7800 -logic.end7800: - %t199 = phi i1 [ true, %logic.from7798 ], [ %t198, %logic.rend7801 ] - br label %logic.from7802 -logic.from7802: - br i1 %t199, label %logic.end7804, label %logic.rhs7803 -logic.rhs7803: - %t200 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.4932, i64 3, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.rend7805 -logic.rend7805: - br label %logic.end7804 -logic.end7804: - %t207 = phi i1 [ true, %logic.from7802 ], [ %t206, %logic.rend7805 ] - br label %logic.from7806 -logic.from7806: - br i1 %t207, label %logic.end7808, label %logic.rhs7807 -logic.rhs7807: - %t208 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t209 = getelementptr inbounds %S.ast.Type, ptr %t208, i32 0, i32 0 - %t210 = load { ptr, i64, i64 }, ptr %t209 - store { ptr, i64, i64 } %t210, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.4933, i64 4, i64 0 }, ptr %a212 - %t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212) - %t214 = icmp ne i32 %t213, 0 - br label %logic.rend7809 -logic.rend7809: - br label %logic.end7808 -logic.end7808: - %t215 = phi i1 [ true, %logic.from7806 ], [ %t214, %logic.rend7809 ] - br label %logic.from7810 -logic.from7810: - br i1 %t215, label %logic.end7812, label %logic.rhs7811 -logic.rhs7811: - %t216 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } %t218, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4934, i64 6, i64 0 }, ptr %a220 - %t221 = call i32 @finch_str_eq(ptr %a219, ptr %a220) - %t222 = icmp ne i32 %t221, 0 - br label %logic.from7813 -logic.from7813: - br i1 %t222, label %logic.rhs7814, label %logic.end7815 -logic.rhs7814: - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic7816, label %ok7817 -panic7816: - call void @finch_panic(ptr @.str.4935, i64 4540, ptr @.str.4936) - unreachable -ok7817: - %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 16 - %t226 = load ptr, ptr %a1 - %t227 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t228 = getelementptr inbounds %S.ast.Type, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - %t230 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t231 = getelementptr inbounds %S.ast.Type, ptr %t230, i32 0, i32 2 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = call i64 @finch.gen.findStruct(ptr %t226, { ptr, i64, i64 } %t229, { ptr, i64, i64 } %t232) - %t234 = load { ptr, i64, i64 }, ptr %t225 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range7818, label %inrange7819 -range7818: - call void @finch_panic_index(ptr @.str.4937, i64 4540, i64 %t233, i64 %t235) - unreachable -inrange7819: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds %S.gen.StructDef, ptr %t237, i64 %t233 - %t239 = getelementptr inbounds %S.gen.StructDef, ptr %t238, i32 0, i32 2 - %t240 = load i1, ptr %t239 - br label %logic.rend7820 -logic.rend7820: - br label %logic.end7815 -logic.end7815: - %t241 = phi i1 [ false, %logic.from7813 ], [ %t240, %logic.rend7820 ] - br label %logic.rend7821 -logic.rend7821: - br label %logic.end7812 -logic.end7812: - %t242 = phi i1 [ true, %logic.from7810 ], [ %t241, %logic.rend7821 ] - %t243 = xor i1 %t242, true - br i1 %t243, label %then7822, label %endif7824 -then7822: - %t244 = load ptr, ptr %a1 - %t245 = load %S.ast.Node, ptr %a3 - %t246 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t247 = load { ptr, i64, i64 }, ptr %t246 - store { ptr, i64, i64 } { ptr @.str.4938, i64 5, i64 0 }, ptr %a249 - store { ptr, i64, i64 } %t247, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4939, i64 38, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t258 = load %S.ast.Type, ptr %t257 - %t259 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t258) - store { ptr, i64, i64 } %t256, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t256, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a260 - call void @finch.gen.fail(ptr %t244, %S.ast.Node %t245, { ptr, i64, i64 } %t265) - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_drop(ptr %a266) - br label %endif7824 -endif7824: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t269 = load %S.ast.Type, ptr %t268 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t271 = load { ptr, i64, i64 }, ptr %t270 - %t272 = call %S.gen.Plan @finch.gen.makePlan(ptr %t267, %S.ast.Type %t269, { ptr, i64, i64 } %t271) - store %S.gen.Plan %t272, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t274) - store %S.gen.Saved %t275, ptr %a276 - store { ptr, i64, i64 } zeroinitializer, ptr %a277 - store i64 0, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.4940, i64 0, i64 0 }, ptr %a279 - %t280 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t281 = load i1, ptr %t280 - br i1 %t281, label %then7825, label %endif7827 -then7825: - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t285 = load %S.ast.Type, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t285) - store { ptr, i64, i64 } { ptr @.str.4941, i64 9, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4942, i64 14, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %t282 - %t298 = add i64 %t297, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t299 = load ptr, ptr %a277 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 - store { ptr, i64, i64 } %t296, ptr %t300 - store i64 %t298, ptr %t282 - %t301 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.4943, i64 3, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - store i64 1, ptr %a278 - br label %endif7827 -endif7827: - store { ptr, i64, i64 } zeroinitializer, ptr %a303 - %t304 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i32 0, i32 1 - %t306 = load i64, ptr %t305 - store i64 0, ptr %a307 - br label %for.cond7828 -for.cond7828: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t306 - br i1 %t309, label %for.body7829, label %for.end7831 -for.body7829: - %t310 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t311 = load i64, ptr %a307 - %t312 = load { ptr, i64, i64 }, ptr %t310 - %t313 = extractvalue { ptr, i64, i64 } %t312, 1 - %t314 = icmp uge i64 %t311, %t313 - br i1 %t314, label %range7832, label %inrange7833 -range7832: - call void @finch_panic_index(ptr @.str.4944, i64 4555, i64 %t311, i64 %t313) - unreachable -inrange7833: - %t315 = extractvalue { ptr, i64, i64 } %t312, 0 - %t316 = getelementptr inbounds %S.ast.Type, ptr %t315, i64 %t311 - %t317 = load %S.ast.Type, ptr %t316 - store %S.ast.Type %t317, ptr %a318 - call void @finch.copy.S_ast_Type(ptr %a319, ptr %a318) - %t320 = load %S.ast.Type, ptr %a319 - store %S.ast.Type %t320, ptr %a321 - %t322 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 1 - %t323 = load i64, ptr %a307 - %t324 = load { ptr, i64, i64 }, ptr %t322 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range7834, label %inrange7835 -range7834: - call void @finch_panic_index(ptr @.str.4945, i64 4556, i64 %t323, i64 %t325) - unreachable -inrange7835: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds %S.gen.Abi, ptr %t327, i64 %t323 - %t329 = load %S.gen.Abi, ptr %t328 - store %S.gen.Abi %t329, ptr %a330 - call void @finch.copy.S_gen_Abi(ptr %a331, ptr %a330) - %t332 = load %S.gen.Abi, ptr %a331 - store %S.gen.Abi %t332, ptr %a333 - %t334 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.4946, i64 6, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %then7836, label %else7837 -then7836: - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t341 = load ptr, ptr %a1 - %t342 = load %S.ast.Type, ptr %a321 - %t343 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t341, %S.ast.Type %t342) - store { ptr, i64, i64 } { ptr @.str.4947, i64 10, i64 0 }, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.4948, i64 8, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - %t354 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 3 - %t355 = load i64, ptr %t354 - call void @finch_str_from_int(ptr %a356, i64 %t355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t353, ptr %a359 - store { ptr, i64, i64 } %t357, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t353, ptr %a361 - call void @finch_str_drop(ptr %a361) - store { ptr, i64, i64 } %t357, ptr %a362 - call void @finch_str_drop(ptr %a362) - %t363 = load { ptr, i64, i64 }, ptr %a358 - store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4949, i64 3, i64 0 }, ptr %a366 - call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) - store { ptr, i64, i64 } %t363, ptr %a367 - call void @finch_str_drop(ptr %a367) - %t368 = load { ptr, i64, i64 }, ptr %a364 - %t369 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a370, i64 %t369) - %t371 = load { ptr, i64, i64 }, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t368, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - %t378 = load i64, ptr %t340 - %t379 = add i64 %t378, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t379, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t380 = load ptr, ptr %a277 - %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t378 - store { ptr, i64, i64 } %t377, ptr %t381 - store i64 %t379, ptr %t340 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t383 = load ptr, ptr %a1 - %t384 = load %S.ast.Type, ptr %a321 - %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.4950, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = load ptr, ptr %a1 - %t392 = load ptr, ptr %a1 - %t393 = load %S.ast.Type, ptr %a321 - %t394 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t392, %S.ast.Type %t393) - %t395 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a396, i64 %t395) - %t397 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4951, i64 2, i64 0 }, ptr %a399 - store { ptr, i64, i64 } %t397, ptr %a400 - call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) - store { ptr, i64, i64 } %t397, ptr %a401 - call void @finch_str_drop(ptr %a401) - %t402 = load { ptr, i64, i64 }, ptr %a398 - %t403 = call { ptr, i64, i64 } @finch.gen.load(ptr %t391, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t402) - store { ptr, i64, i64 } %t394, ptr %a404 - call void @finch_str_drop(ptr %a404) - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_drop(ptr %a405) - store { ptr, i64, i64 } %t390, ptr %a407 - store { ptr, i64, i64 } %t403, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t390, ptr %a409 - call void @finch_str_drop(ptr %a409) - store { ptr, i64, i64 } %t403, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a406 - %t412 = load i64, ptr %t382 - %t413 = add i64 %t412, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t413, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t414 = load ptr, ptr %a303 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t412 - store { ptr, i64, i64 } %t411, ptr %t415 - store i64 %t413, ptr %t382 - %t416 = load i64, ptr %a278 - %t417 = add i64 %t416, 1 - store i64 %t417, ptr %a278 - br label %endif7838 -else7837: - %t418 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t419 = load { ptr, i64, i64 }, ptr %t418 - store { ptr, i64, i64 } %t419, ptr %a420 - store { ptr, i64, i64 } { ptr @.str.4952, i64 8, i64 0 }, ptr %a421 - %t422 = call i32 @finch_str_eq(ptr %a420, ptr %a421) - %t423 = icmp ne i32 %t422, 0 - br i1 %t423, label %then7839, label %else7840 -then7839: - %t424 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t425 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a426, i64 %t425) - %t427 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.4953, i64 6, i64 0 }, ptr %a429 - store { ptr, i64, i64 } %t427, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = load i64, ptr %t424 - %t434 = add i64 %t433, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t435 = load ptr, ptr %a277 - %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433 - store { ptr, i64, i64 } %t432, ptr %t436 - store i64 %t434, ptr %t424 - %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t438 = load ptr, ptr %a1 - %t439 = load %S.ast.Type, ptr %a321 - %t440 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t438, %S.ast.Type %t439) - store { ptr, i64, i64 } %t440, ptr %a442 - store { ptr, i64, i64 } { ptr @.str.4954, i64 1, i64 0 }, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - %t446 = load ptr, ptr %a1 - %t447 = load ptr, ptr %a1 - %t448 = load %S.ast.Type, ptr %a321 - %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) - %t450 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } { ptr @.str.4955, i64 2, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t452, ptr %a456 - call void @finch_str_drop(ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a453 - %t458 = call { ptr, i64, i64 } @finch.gen.load(ptr %t446, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t449, ptr %a459 - call void @finch_str_drop(ptr %a459) - store { ptr, i64, i64 } %t457, ptr %a460 - call void @finch_str_drop(ptr %a460) - store { ptr, i64, i64 } %t445, ptr %a462 - store { ptr, i64, i64 } %t458, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t445, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t458, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a461 - %t467 = load i64, ptr %t437 - %t468 = add i64 %t467, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t468, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t469 = load ptr, ptr %a303 - %t470 = getelementptr inbounds { ptr, i64, i64 }, ptr %t469, i64 %t467 - store { ptr, i64, i64 } %t466, ptr %t470 - store i64 %t468, ptr %t437 - %t471 = load i64, ptr %a278 - %t472 = add i64 %t471, 1 - store i64 %t472, ptr %a278 - br label %endif7841 -else7840: - %t473 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t474 = load { ptr, i64, i64 }, ptr %t473 - store { ptr, i64, i64 } %t474, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.4956, i64 6, i64 0 }, ptr %a476 - %t477 = call i32 @finch_str_eq(ptr %a475, ptr %a476) - %t478 = icmp ne i32 %t477, 0 - br i1 %t478, label %then7842, label %else7843 -then7842: - %t479 = load ptr, ptr %a1 - %t480 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t479, { ptr, i64, i64 } { ptr @.str.4957, i64 9, i64 0 }) - store { ptr, i64, i64 } %t480, ptr %a481 - %t482 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load i64, ptr %t483 - store i64 0, ptr %a485 - br label %for.cond7845 -for.cond7845: - %t486 = load i64, ptr %a485 - %t487 = icmp slt i64 %t486, %t484 - br i1 %t487, label %for.body7846, label %for.end7848 -for.body7846: - %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t489 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t490 = load i64, ptr %a485 - %t491 = load { ptr, i64, i64 }, ptr %t489 - %t492 = extractvalue { ptr, i64, i64 } %t491, 1 - %t493 = icmp uge i64 %t490, %t492 - br i1 %t493, label %range7849, label %inrange7850 -range7849: - call void @finch_panic_index(ptr @.str.4958, i64 4568, i64 %t490, i64 %t492) - unreachable -inrange7850: - %t494 = extractvalue { ptr, i64, i64 } %t491, 0 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i64 %t490 - %t496 = load { ptr, i64, i64 }, ptr %t495 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.4959, i64 3, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - %t500 = load { ptr, i64, i64 }, ptr %a497 - %t501 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a502, i64 %t501) - %t503 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a505 - store { ptr, i64, i64 } %t503, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t500, ptr %a507 - call void @finch_str_drop(ptr %a507) - store { ptr, i64, i64 } %t503, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = load { ptr, i64, i64 }, ptr %a504 - %t510 = load i64, ptr %t488 - %t511 = add i64 %t510, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t511, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t512 = load ptr, ptr %a277 - %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i64 %t510 - store { ptr, i64, i64 } %t509, ptr %t513 - store i64 %t511, ptr %t488 - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t516 = load i64, ptr %a485 - %t517 = load { ptr, i64, i64 }, ptr %t515 - %t518 = extractvalue { ptr, i64, i64 } %t517, 1 - %t519 = icmp uge i64 %t516, %t518 - br i1 %t519, label %range7851, label %inrange7852 -range7851: - call void @finch_panic_index(ptr @.str.4960, i64 4569, i64 %t516, i64 %t518) - unreachable -inrange7852: - %t520 = extractvalue { ptr, i64, i64 } %t517, 0 - %t521 = getelementptr inbounds { ptr, i64, i64 }, ptr %t520, i64 %t516 - %t522 = load { ptr, i64, i64 }, ptr %t521 - %t523 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a524, i64 %t523) - %t525 = load { ptr, i64, i64 }, ptr %a524 - store { ptr, i64, i64 } { ptr @.str.4961, i64 2, i64 0 }, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t525, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = load ptr, ptr %a1 - %t532 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.4962, i64 31, i64 0 }, ptr %a534 - store { ptr, i64, i64 } %t532, ptr %a535 - call void @finch_str_concat(ptr %a533, ptr %a534, ptr %a535) - %t536 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t536, ptr %a538 - store { ptr, i64, i64 } { ptr @.str.4963, i64 6, i64 0 }, ptr %a539 - call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) - store { ptr, i64, i64 } %t536, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a537 - %t542 = load i64, ptr %a485 - %t543 = mul i64 8, %t542 - call void @finch_str_from_int(ptr %a544, i64 %t543) - %t545 = load { ptr, i64, i64 }, ptr %a544 - store { ptr, i64, i64 } %t541, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - store { ptr, i64, i64 } %t541, ptr %a549 - call void @finch_str_drop(ptr %a549) - store { ptr, i64, i64 } %t545, ptr %a550 - call void @finch_str_drop(ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a546 - %t552 = call { ptr, i64, i64 } @finch.gen.op(ptr %t531, { ptr, i64, i64 } %t551) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.gen.store(ptr %t514, { ptr, i64, i64 } %t522, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t552) - store { ptr, i64, i64 } %t530, ptr %a554 - call void @finch_str_drop(ptr %a554) - store { ptr, i64, i64 } %t552, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load i64, ptr %a278 - %t557 = add i64 %t556, 1 - store i64 %t557, ptr %a278 - br label %for.step7847 -for.step7847: - %t558 = load i64, ptr %a485 - %t559 = add i64 %t558, 1 - store i64 %t559, ptr %a485 - br label %for.cond7845 -for.end7848: - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t561 = load ptr, ptr %a1 - %t562 = load %S.ast.Type, ptr %a321 - %t563 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t561, %S.ast.Type %t562) - store { ptr, i64, i64 } %t563, ptr %a565 - store { ptr, i64, i64 } { ptr @.str.4964, i64 1, i64 0 }, ptr %a566 - call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) - store { ptr, i64, i64 } %t563, ptr %a567 - call void @finch_str_drop(ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a564 - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a321 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - %t573 = load { ptr, i64, i64 }, ptr %a481 - %t574 = call { ptr, i64, i64 } @finch.gen.load(ptr %t569, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_drop(ptr %a575) - store { ptr, i64, i64 } %t568, ptr %a577 - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) - store { ptr, i64, i64 } %t568, ptr %a579 - call void @finch_str_drop(ptr %a579) - store { ptr, i64, i64 } %t574, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a576 - %t582 = load i64, ptr %t560 - %t583 = add i64 %t582, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t583, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t584 = load ptr, ptr %a303 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i64 %t582 - store { ptr, i64, i64 } %t581, ptr %t585 - store i64 %t583, ptr %t560 - call void @finch_str_drop(ptr %a481) - br label %endif7844 -else7843: - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t587 = load ptr, ptr %a1 - %t588 = load %S.ast.Type, ptr %a321 - %t589 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t587, %S.ast.Type %t588) - %t590 = load ptr, ptr %a1 - %t591 = load %S.ast.Type, ptr %a321 - %t592 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t590, %S.ast.Type %t591) - store { ptr, i64, i64 } %t589, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t589, ptr %a596 - call void @finch_str_drop(ptr %a596) - store { ptr, i64, i64 } %t592, ptr %a597 - call void @finch_str_drop(ptr %a597) - %t598 = load { ptr, i64, i64 }, ptr %a593 - store { ptr, i64, i64 } %t598, ptr %a600 - store { ptr, i64, i64 } { ptr @.str.4965, i64 3, i64 0 }, ptr %a601 - call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) - store { ptr, i64, i64 } %t598, ptr %a602 - call void @finch_str_drop(ptr %a602) - %t603 = load { ptr, i64, i64 }, ptr %a599 - %t604 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a605, i64 %t604) - %t606 = load { ptr, i64, i64 }, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a608 - store { ptr, i64, i64 } %t606, ptr %a609 - call void @finch_str_concat(ptr %a607, ptr %a608, ptr %a609) - store { ptr, i64, i64 } %t603, ptr %a610 - call void @finch_str_drop(ptr %a610) - store { ptr, i64, i64 } %t606, ptr %a611 - call void @finch_str_drop(ptr %a611) - %t612 = load { ptr, i64, i64 }, ptr %a607 - %t613 = load i64, ptr %t586 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a277 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t586 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t618 = load ptr, ptr %a1 - %t619 = load %S.ast.Type, ptr %a321 - %t620 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t618, %S.ast.Type %t619) - store { ptr, i64, i64 } %t620, ptr %a622 - store { ptr, i64, i64 } { ptr @.str.4966, i64 3, i64 0 }, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - %t626 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a627, i64 %t626) - %t628 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t625, ptr %a630 - store { ptr, i64, i64 } %t628, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t625, ptr %a632 - call void @finch_str_drop(ptr %a632) - store { ptr, i64, i64 } %t628, ptr %a633 - call void @finch_str_drop(ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a629 - %t635 = load i64, ptr %t617 - %t636 = add i64 %t635, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t637 = load ptr, ptr %a303 - %t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635 - store { ptr, i64, i64 } %t634, ptr %t638 - store i64 %t636, ptr %t617 - %t639 = load i64, ptr %a278 - %t640 = add i64 %t639, 1 - store i64 %t640, ptr %a278 - br label %endif7844 -endif7844: - br label %endif7841 -endif7841: - br label %endif7838 -endif7838: - call void @finch.drop.S_gen_Abi(ptr %a333) - call void @finch.drop.S_ast_Type(ptr %a321) - br label %for.step7830 -for.step7830: - %t641 = load i64, ptr %a307 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a307 - br label %for.cond7828 -for.end7831: - %t643 = load ptr, ptr %a1 - %t644 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t645 = load %S.ast.Type, ptr %t644 - %t646 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t643, %S.ast.Type %t645) - store { ptr, i64, i64 } { ptr @.str.4967, i64 5, i64 0 }, ptr %a648 - store { ptr, i64, i64 } %t646, ptr %a649 - call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649) - store { ptr, i64, i64 } %t646, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } %t651, ptr %a653 - store { ptr, i64, i64 } { ptr @.str.4968, i64 1, i64 0 }, ptr %a654 - call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) - store { ptr, i64, i64 } %t651, ptr %a655 - call void @finch_str_drop(ptr %a655) - %t656 = load { ptr, i64, i64 }, ptr %a652 - %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t656, ptr %a660 - store { ptr, i64, i64 } %t658, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t656, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - store { ptr, i64, i64 } %t663, ptr %a665 - store { ptr, i64, i64 } { ptr @.str.4969, i64 1, i64 0 }, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t663, ptr %a667 - call void @finch_str_drop(ptr %a667) - %t668 = load { ptr, i64, i64 }, ptr %a664 - %t669 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4970, i64 2, i64 0 }, ptr %a670 - call void @finch_str_join(ptr %a671, ptr %a303, ptr %a670) - %t672 = load { ptr, i64, i64 }, ptr %a671 - store { ptr, i64, i64 } %t668, ptr %a674 - store { ptr, i64, i64 } %t672, ptr %a675 - call void @finch_str_concat(ptr %a673, ptr %a674, ptr %a675) - store { ptr, i64, i64 } %t668, ptr %a676 - call void @finch_str_drop(ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.4971, i64 1, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - store { ptr, i64, i64 } %t683, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.4972, i64 0, i64 0 }, ptr %a685 - %t686 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t687 = getelementptr inbounds %S.ast.Type, ptr %t686, i32 0, i32 0 - %t688 = load { ptr, i64, i64 }, ptr %t687 - store { ptr, i64, i64 } %t688, ptr %a689 - store { ptr, i64, i64 } { ptr @.str.4973, 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 %then7853, label %else7854 -then7853: - %t693 = load ptr, ptr %a1 - %t694 = load { ptr, i64, i64 }, ptr %a684 - call void @finch.gen.emit(ptr %t693, { ptr, i64, i64 } %t694) - %t695 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t695, { ptr, i64, i64 } { ptr @.str.4974, i64 8, i64 0 }) - br label %endif7855 -else7854: - %t696 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t697 = load i1, ptr %t696 - br i1 %t697, label %then7856, label %else7857 -then7856: - %t698 = load ptr, ptr %a1 - %t699 = load ptr, ptr %a1 - %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t701 = load %S.ast.Type, ptr %t700 - %t702 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t699, %S.ast.Type %t701) - %t703 = load ptr, ptr %a1 - %t704 = load { ptr, i64, i64 }, ptr %a684 - %t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704) - %t706 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.store(ptr %t698, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t705, { ptr, i64, i64 } %t706) - store { ptr, i64, i64 } %t702, ptr %a707 - call void @finch_str_drop(ptr %a707) - store { ptr, i64, i64 } %t705, ptr %a708 - call void @finch_str_drop(ptr %a708) - %t709 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t709, { ptr, i64, i64 } { ptr @.str.4975, i64 8, i64 0 }) - br label %endif7858 -else7857: - %t710 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t711 = getelementptr inbounds %S.gen.Abi, ptr %t710, i32 0, i32 0 - %t712 = load { ptr, i64, i64 }, ptr %t711 - store { ptr, i64, i64 } %t712, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.4976, i64 6, i64 0 }, ptr %a714 - %t715 = call i32 @finch_str_eq(ptr %a713, ptr %a714) - %t716 = icmp ne i32 %t715, 0 - br i1 %t716, label %then7859, label %else7860 -then7859: - %t717 = load ptr, ptr %a1 - %t718 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t717, { ptr, i64, i64 } { ptr @.str.4977, i64 9, i64 0 }) - store { ptr, i64, i64 } %t718, ptr %a719 - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t723 = load %S.ast.Type, ptr %t722 - %t724 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t721, %S.ast.Type %t723) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a684 - %t727 = call { ptr, i64, i64 } @finch.gen.op(ptr %t725, { ptr, i64, i64 } %t726) - %t728 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.store(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t727, { ptr, i64, i64 } %t728) - store { ptr, i64, i64 } %t724, ptr %a729 - call void @finch_str_drop(ptr %a729) - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_drop(ptr %a730) - %t731 = load ptr, ptr %a1 - %t732 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t733 = getelementptr inbounds %S.gen.Abi, ptr %t732, i32 0, i32 2 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } { ptr @.str.4978, i64 4, i64 0 }, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - %t738 = load { ptr, i64, i64 }, ptr %a735 - store { ptr, i64, i64 } %t738, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.4979, i64 1, i64 0 }, ptr %a741 - call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741) - store { ptr, i64, i64 } %t738, ptr %a742 - call void @finch_str_drop(ptr %a742) - %t743 = load { ptr, i64, i64 }, ptr %a739 - %t744 = load ptr, ptr %a1 - %t745 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t746 = getelementptr inbounds %S.gen.Abi, ptr %t745, i32 0, i32 2 - %t747 = load { ptr, i64, i64 }, ptr %t746 - %t748 = load { ptr, i64, i64 }, ptr %a719 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t744, { ptr, i64, i64 } %t747, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t743, ptr %a751 - store { ptr, i64, i64 } %t749, ptr %a752 - call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752) - store { ptr, i64, i64 } %t743, ptr %a753 - call void @finch_str_drop(ptr %a753) - store { ptr, i64, i64 } %t749, ptr %a754 - call void @finch_str_drop(ptr %a754) - %t755 = load { ptr, i64, i64 }, ptr %a750 - call void @finch.gen.emit(ptr %t731, { ptr, i64, i64 } %t755) - store { ptr, i64, i64 } %t755, ptr %a756 - call void @finch_str_drop(ptr %a756) - call void @finch_str_drop(ptr %a719) - br label %endif7861 -else7860: - %t757 = load ptr, ptr %a1 - %t758 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t759 = load %S.ast.Type, ptr %t758 - %t760 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t757, %S.ast.Type %t759) - %t761 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } %t760, ptr %a685 - store { ptr, i64, i64 } %t761, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load ptr, ptr %a1 - %t764 = load ptr, ptr %a1 - %t765 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t766 = load %S.ast.Type, ptr %t765 - %t767 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t764, %S.ast.Type %t766) - store { ptr, i64, i64 } { ptr @.str.4980, i64 4, i64 0 }, ptr %a769 - store { ptr, i64, i64 } %t767, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.4981, i64 1, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = load ptr, ptr %a1 - %t779 = load { ptr, i64, i64 }, ptr %a684 - %t780 = call { ptr, i64, i64 } @finch.gen.op(ptr %t778, { ptr, i64, i64 } %t779) - store { ptr, i64, i64 } %t777, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t777, ptr %a784 - call void @finch_str_drop(ptr %a784) - store { ptr, i64, i64 } %t780, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a781 - call void @finch.gen.emit(ptr %t763, { ptr, i64, i64 } %t786) - store { ptr, i64, i64 } %t786, ptr %a787 - call void @finch_str_drop(ptr %a787) - br label %endif7861 -endif7861: - br label %endif7858 -endif7858: - br label %endif7855 -endif7855: - %t788 = load ptr, ptr %a1 - %t789 = load %S.gen.Saved, ptr %a276 - %t790 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } { ptr @.str.4982, i64 15, i64 0 }, ptr %a792 - store { ptr, i64, i64 } %t790, ptr %a793 - call void @finch_str_concat(ptr %a791, ptr %a792, ptr %a793) - %t794 = load { ptr, i64, i64 }, ptr %a791 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.4983, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - store { ptr, i64, i64 } %t794, ptr %a798 - call void @finch_str_drop(ptr %a798) - %t799 = load { ptr, i64, i64 }, ptr %a795 - %t800 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - store { ptr, i64, i64 } %t799, ptr %a803 - store { ptr, i64, i64 } %t801, ptr %a804 - call void @finch_str_concat(ptr %a802, ptr %a803, ptr %a804) - store { ptr, i64, i64 } %t799, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load { ptr, i64, i64 }, ptr %a802 - store { ptr, i64, i64 } %t806, ptr %a808 - store { ptr, i64, i64 } { ptr @.str.4984, i64 1, i64 0 }, ptr %a809 - call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) - store { ptr, i64, i64 } %t806, ptr %a810 - call void @finch_str_drop(ptr %a810) - %t811 = load { ptr, i64, i64 }, ptr %a807 - %t812 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t811, ptr %a814 - store { ptr, i64, i64 } %t812, ptr %a815 - call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) - store { ptr, i64, i64 } %t811, ptr %a816 - call void @finch_str_drop(ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a813 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.4985, i64 1, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4986, i64 2, i64 0 }, ptr %a824 - call void @finch_str_join(ptr %a825, ptr %a277, ptr %a824) - %t826 = load { ptr, i64, i64 }, ptr %a825 - store { ptr, i64, i64 } %t822, ptr %a828 - store { ptr, i64, i64 } %t826, ptr %a829 - call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) - store { ptr, i64, i64 } %t822, ptr %a830 - call void @finch_str_drop(ptr %a830) - store { ptr, i64, i64 } %t826, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a827 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.4987, i64 1, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.endHelper(ptr %t788, %S.gen.Saved %t789, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a685) - call void @finch_str_drop(ptr %a684) - call void @finch.drop.arr_str(ptr %a303) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.arr_str(ptr %a277) - call void @finch.drop.S_gen_Saved(ptr %a276) - call void @finch.drop.S_gen_Plan(ptr %a273) - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t839 -} - -define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) { -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 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.ast.Type, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca i64, align 16 - %a85 = alloca i64, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %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 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a244 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7865, label %ok7866 -panic7865: - call void @finch_panic(ptr @.str.4988, i64 4601, ptr @.str.4989) - unreachable -ok7866: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7867, label %inrange7868 -range7867: - call void @finch_panic_index(ptr @.str.4990, i64 4601, i64 %t7, i64 %t9) - unreachable -inrange7868: - %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 %range7869, label %inrange7870 -range7869: - call void @finch_panic_index(ptr @.str.4991, i64 4603, i64 0, i64 %t25) - unreachable -inrange7870: - %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 %then7871, label %endif7873 -then7871: - %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 %range7874, label %inrange7875 -range7874: - call void @finch_panic_index(ptr @.str.4992, i64 4605, i64 0, i64 %t39) - unreachable -inrange7875: - %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.4993, 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) - store { ptr, i64, i64 } %t49, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch_str_drop(ptr %a59) - br label %endif7873 -endif7873: - %t60 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4994, i64 4, i64 0 }, 0 - %t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.ast.Type %t60, { ptr, i64, i64 } %t65, 2 - %t67 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_copy(ptr %a70, ptr %a69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = insertvalue %S.ast.Type %t66, { ptr, i64, i64 } %t71, 3 - store %S.ast.Type %t72, ptr %a73 - %t74 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3 - %t75 = load i1, ptr %t74 - br i1 %t75, label %then7876, label %endif7878 -then7876: - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = call i64 @finch_str_to_int(ptr %a80, ptr @.str.4995, i64 4609) - store i64 -1, ptr %a82 - %t83 = load i64, ptr %t77 - %t84 = load ptr, ptr %t76 - store i64 0, ptr %a85 - br label %find.cond7879 -find.cond7879: - %t86 = load i64, ptr %a85 - %t87 = icmp slt i64 %t86, %t83 - br i1 %t87, label %find.body7880, label %find.end7883 -find.body7880: - %t88 = getelementptr inbounds i64, ptr %t84, i64 %t86 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, %t81 - br i1 %t90, label %find.hit7881, label %find.next7882 -find.hit7881: - store i64 %t86, ptr %a82 - br label %find.end7883 -find.next7882: - %t91 = add i64 %t86, 1 - store i64 %t91, ptr %a85 - br label %find.cond7879 -find.end7883: - %t92 = load i64, ptr %a82 - %t93 = icmp sge i64 %t92, 0 - %t94 = xor i1 %t93, true - br i1 %t94, label %then7884, label %endif7886 -then7884: - %t95 = load ptr, ptr %a1 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = extractvalue { ptr, i64, i64 } %t97, 1 - %t99 = icmp uge i64 0, %t98 - br i1 %t99, label %range7887, label %inrange7888 -range7887: - call void @finch_panic_index(ptr @.str.4996, i64 4610, i64 0, i64 %t98) - unreachable -inrange7888: - %t100 = extractvalue { ptr, i64, i64 } %t97, 0 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 0 - %t102 = load %S.ast.Node, ptr %t101 - %t103 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4997, i64 37, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a105 - %t109 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t108, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t108, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t95, %S.ast.Node %t102, { ptr, i64, i64 } %t115) - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_drop(ptr %a116) - br label %endif7886 -endif7886: - %t117 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0 - %t123 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t127 -endif7878: - %t128 = load ptr, ptr %a1 - %t129 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t130 = load { ptr, i64, i64 }, ptr %t129 - %t131 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 - %t132 = load %S.ast.Type, ptr %t131 - %t133 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4998, i64 3, i64 0 }) - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t130, %S.ast.Type %t132, %S.ast.Type %t133) - store %S.ast.Type %t133, ptr %a135 - call void @finch.drop.S_ast_Type(ptr %a135) - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4999, i64 0, i64 0 }, ptr %a137 - %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond7889 -for.cond7889: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body7890, label %for.end7892 -for.body7890: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5000, i64 12, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5001, i64 2, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t156 = load i64, ptr %a141 - %t157 = load { ptr, i64, i64 }, ptr %t155 - %t158 = extractvalue { ptr, i64, i64 } %t157, 1 - %t159 = icmp uge i64 %t156, %t158 - br i1 %t159, label %range7893, label %inrange7894 -range7893: - call void @finch_panic_index(ptr @.str.5002, i64 4617, i64 %t156, i64 %t158) - unreachable -inrange7894: - %t160 = extractvalue { ptr, i64, i64 } %t157, 0 - %t161 = getelementptr inbounds i64, ptr %t160, i64 %t156 - %t162 = load i64, ptr %t161 - call void @finch_str_from_int(ptr %a163, i64 %t162) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t154, ptr %a166 - store { ptr, i64, i64 } %t164, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t154, ptr %a168 - call void @finch_str_drop(ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a165 - %t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t170) - store { ptr, i64, i64 } %t170, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t171, ptr %a173 - %t174 = load i64, ptr %a141 - %t175 = icmp eq i64 %t174, 0 - br i1 %t175, label %then7895, label %else7896 -then7895: - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_copy(ptr %a178, ptr %a177) - %t179 = load { ptr, i64, i64 }, ptr %a178 - %t180 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t179, ptr %a137 - store { ptr, i64, i64 } %t180, ptr %a181 - call void @finch_str_drop(ptr %a181) - br label %endif7897 -else7896: - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5003, i64 6, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5004, i64 2, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t192, ptr %a195 - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t199, ptr %a137 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif7897 -endif7897: - call void @finch_str_drop(ptr %a173) - br label %for.step7891 -for.step7891: - %t203 = load i64, ptr %a141 - %t204 = add i64 %t203, 1 - store i64 %t204, ptr %a141 - br label %for.cond7889 -for.end7892: - %t205 = load ptr, ptr %a1 - %t206 = load ptr, ptr %a1 - %t207 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5005, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.5006, i64 6, i64 0 }, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - %t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t206, { ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } { ptr @.str.5007, i64 32, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - %t225 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t205, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t224, %S.ast.Node %t225) - store { ptr, i64, i64 } %t217, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5008, i64 10, i64 0 }, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5009, i64 7, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t228, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t242, ptr %a243 - call void @finch.copy.S_ast_Type(ptr %a244, ptr %a243) - %t245 = load %S.ast.Type, ptr %a244 - %t246 = insertvalue %S.gen.Val %t241, %S.ast.Type %t245, 1 - call void @finch_str_drop(ptr %a137) - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t246 -} - -define internal { ptr, i64, i64 } @finch.gen.cExt(ptr %p0, %S.ast.Type %p1) { -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.5010, 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.from7898 -logic.from7898: - br i1 %t8, label %logic.end7900, label %logic.rhs7899 -logic.rhs7899: - %t9 = load %S.ast.Type, ptr %a2 - %t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9) - br label %logic.rend7901 -logic.rend7901: - br label %logic.end7900 -logic.end7900: - %t11 = phi i1 [ true, %logic.from7898 ], [ %t10, %logic.rend7901 ] - br i1 %t11, label %then7902, label %endif7904 -then7902: - %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 %then7905, label %endif7907 -then7905: - ret { ptr, i64, i64 } { ptr @.str.5011, i64 8, i64 0 } -endif7907: - br label %endif7904 -endif7904: - %t15 = load %S.ast.Type, ptr %a2 - %t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15) - br label %logic.from7908 -logic.from7908: - br i1 %t16, label %logic.end7910, label %logic.rhs7909 -logic.rhs7909: - %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.5012, 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.from7911 -logic.from7911: - br i1 %t22, label %logic.rhs7912, label %logic.end7913 -logic.rhs7912: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic7914, label %ok7915 -panic7914: - call void @finch_panic(ptr @.str.5013, i64 4637, ptr @.str.5014) - unreachable -ok7915: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 31 - %t26 = load %S.platform.Target, ptr %t25 - %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - br label %logic.rend7916 -logic.rend7916: - br label %logic.end7913 -logic.end7913: - %t28 = phi i1 [ false, %logic.from7911 ], [ %t27, %logic.rend7916 ] - br label %logic.rend7917 -logic.rend7917: - br label %logic.end7910 -logic.end7910: - %t29 = phi i1 [ true, %logic.from7908 ], [ %t28, %logic.rend7917 ] - br label %logic.from7918 -logic.from7918: - br i1 %t29, label %logic.rhs7919, label %logic.end7920 -logic.rhs7919: - %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.rend7921 -logic.rend7921: - br label %logic.end7920 -logic.end7920: - %t33 = phi i1 [ false, %logic.from7918 ], [ %t32, %logic.rend7921 ] - br i1 %t33, label %then7922, label %endif7924 -then7922: - ret { ptr, i64, i64 } { ptr @.str.5015, i64 8, i64 0 } -endif7924: - %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.5016, 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.from7925 -logic.from7925: - br i1 %t39, label %logic.rhs7926, label %logic.end7927 -logic.rhs7926: - %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.rend7928 -logic.rend7928: - br label %logic.end7927 -logic.end7927: - %t43 = phi i1 [ false, %logic.from7925 ], [ %t42, %logic.rend7928 ] - br i1 %t43, label %then7929, label %endif7931 -then7929: - ret { ptr, i64, i64 } { ptr @.str.5017, i64 8, i64 0 } -endif7931: - ret { ptr, i64, i64 } { ptr @.str.5018, 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.5019, 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 %then7932, label %endif7934 -then7932: - ret { ptr, i64, i64 } { ptr @.str.5020, i64 3, i64 0 } -endif7934: - %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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca i64, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a240 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a249 = alloca %S.ast.Type, align 16 - %a261 = alloca %S.gen.Plan, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a327 = alloca i64, align 16 - %a342 = alloca %S.ast.Type, align 16 - %a343 = alloca %S.ast.Type, align 16 - %a345 = alloca %S.ast.Type, align 16 - %a354 = alloca %S.gen.Abi, align 16 - %a355 = alloca %S.gen.Abi, align 16 - %a357 = alloca %S.gen.Abi, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca %S.gen.Val, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca %S.gen.Val, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a407 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca i64, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca %S.gen.Val, align 16 - %a699 = alloca %S.ast.Type, align 16 - %a700 = alloca %S.ast.Type, align 16 - %a702 = alloca %S.ast.Type, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca %S.gen.Val, align 16 - %a721 = alloca %S.gen.Val, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca %S.ast.Type, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca %S.ast.Type, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca %S.ast.Type, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca %S.ast.Type, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca %S.ast.Type, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = 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 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca i64, align 16 - %a900 = alloca i64, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a939 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a973 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a981 = alloca { ptr, i64, i64 }, align 16 - %a982 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a999 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = 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 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1033 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1039 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1042 = alloca { ptr, i64, i64 }, align 16 - %a1043 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1048 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1077 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca %S.ast.Type, align 16 - %a1087 = alloca %S.ast.Type, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca %S.ast.Type, align 16 - %a1107 = alloca %S.ast.Type, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca { ptr, i64, i64 }, align 16 - %a1126 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1142 = alloca %S.ast.Type, align 16 - %a1143 = alloca %S.ast.Type, align 16 - %a1148 = alloca { ptr, i64, i64 }, align 16 - %a1149 = alloca { ptr, i64, i64 }, align 16 - %a1154 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1161 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1174 = alloca { ptr, i64, i64 }, align 16 - %a1175 = alloca { ptr, i64, i64 }, align 16 - %a1176 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca %S.ast.Type, align 16 - %a1186 = alloca %S.ast.Type, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca %S.ast.Type, align 16 - %a1196 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.cimport.CFunc %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7935, label %ok7936 -panic7935: - call void @finch_panic(ptr @.str.5021, i64 4654, ptr @.str.5022) - unreachable -ok7936: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then7937, label %endif7939 -then7937: - 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.cond7940 -each.cond7940: - %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.body7941, label %each.end7943 -each.body7941: - %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.step7942 -each.step7942: - %t26 = load i64, ptr %a10 - %t27 = add i64 %t26, 1 - store i64 %t27, ptr %a10 - br label %each.cond7940 -each.end7943: - %t28 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then7944, label %endif7946 -then7944: - %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.5023, i64 3, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif7946 -endif7946: - %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.5024, 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.5025, i64 7, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t54 = load %S.ast.Type, ptr %t53 - %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.5026, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t66, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t66, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5027, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5028, i64 2, i64 0 }, ptr %a80 - call void @finch_str_join(ptr %a81, ptr %a8, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t78, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t78, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.5029, i64 5, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t93, { ptr, i64, i64 } { ptr @.str.5030, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - call void @finch.drop.arr_str(ptr %a8) - br label %endif7939 -endif7939: - %t95 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = icmp sgt i64 %t97, 0 - br i1 %t98, label %then7947, label %endif7949 -then7947: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } { ptr @.str.5031, i64 16, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5032, i64 35, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t113 = load { ptr, i64, i64 }, ptr %t112 - store { ptr, i64, i64 } %t111, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t111, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif7949 -endif7949: - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t120, i32 0, i32 1 - %t122 = load i64, ptr %t121 - store i64 %t122, ptr %a123 - %t124 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t125 = load i1, ptr %t124 - br i1 %t125, label %then7950, label %else7951 -then7950: - %t126 = load i64, ptr %a123 - %t127 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 - %t129 = load i64, ptr %t128 - %t130 = icmp slt i64 %t126, %t129 - br i1 %t130, label %then7953, label %endif7955 -then7953: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t134 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } { ptr @.str.5033, i64 1, i64 0 }, ptr %a136 - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a135 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5034, i64 17, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t138, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - %t144 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load i64, ptr %t145 - call void @finch_str_from_int(ptr %a147, i64 %t146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t143, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t143, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.5035, i64 22, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a161, i64 %t160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t159, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.fail(ptr %t131, %S.ast.Node %t132, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - br label %endif7955 -endif7955: - br label %endif7952 -else7951: - %t170 = load i64, ptr %a123 - %t171 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load i64, ptr %t172 - %t174 = icmp ne i64 %t170, %t173 - br i1 %t174, label %then7956, label %endif7958 -then7956: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - %t177 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } { ptr @.str.5036, i64 1, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5037, i64 8, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - call void @finch_str_from_int(ptr %a191, i64 %t190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t187, ptr %a194 - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t187, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t198, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.5038, i64 22, i64 0 }, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t198, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - %t204 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t203, ptr %a210 - call void @finch_str_drop(ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.fail(ptr %t175, %S.ast.Node %t176, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7958 -endif7958: - br label %endif7952 -endif7952: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = load %S.ast.Node, ptr %a2 - %t218 = call %S.ast.Type @finch.gen.resolve(ptr %t214, %S.ast.Type %t216, %S.ast.Node %t217) - store %S.ast.Type %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load %S.ast.Node, ptr %a2 - %t222 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = load %S.ast.Type, ptr %a219 - call void @finch.gen.checkByValue(ptr %t220, %S.ast.Node %t221, { ptr, i64, i64 } %t223, %S.ast.Type %t224, { ptr, i64, i64 } { ptr @.str.5039, i64 7, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - store i64 0, ptr %a227 - br label %each.cond7959 -each.cond7959: - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i32 0, i32 1 - %t229 = load i64, ptr %t228 - %t230 = load i64, ptr %a227 - %t231 = icmp slt i64 %t230, %t229 - br i1 %t231, label %each.body7960, label %each.end7962 -each.body7960: - %t232 = load ptr, ptr %t226 - %t233 = getelementptr inbounds %S.ast.Type, ptr %t232, i64 %t230 - %t234 = load %S.ast.Type, ptr %t233 - store %S.ast.Type %t234, ptr %a235 - %t236 = load ptr, ptr %a1 - %t237 = load %S.ast.Type, ptr %a235 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.ast.Type @finch.gen.resolve(ptr %t236, %S.ast.Type %t237, %S.ast.Node %t238) - store %S.ast.Type %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load %S.ast.Node, ptr %a2 - %t243 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - %t245 = load %S.ast.Type, ptr %a240 - call void @finch.gen.checkByValue(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } { ptr @.str.5040, i64 5, i64 0 }) - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a225, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %a240 - store %S.ast.Type %t247, ptr %a248 - call void @finch.copy.S_ast_Type(ptr %a249, ptr %a248) - %t250 = load %S.ast.Type, ptr %a249 - %t251 = load i64, ptr %t246 - %t252 = add i64 %t251, 1 - call void @finch_arr_reserve(ptr %a225, i64 %t252, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t253 = load ptr, ptr %a225 - %t254 = getelementptr inbounds %S.ast.Type, ptr %t253, i64 %t251 - store %S.ast.Type %t250, ptr %t254 - store i64 %t252, ptr %t246 - call void @finch.drop.S_ast_Type(ptr %a240) - br label %each.step7961 -each.step7961: - %t255 = load i64, ptr %a227 - %t256 = add i64 %t255, 1 - store i64 %t256, ptr %a227 - br label %each.cond7959 -each.end7962: - %t257 = load ptr, ptr %a1 - %t258 = load %S.ast.Type, ptr %a219 - %t259 = load { ptr, i64, i64 }, ptr %a225 - %t260 = call %S.gen.Plan @finch.gen.makePlan(ptr %t257, %S.ast.Type %t258, { ptr, i64, i64 } %t259) - store %S.gen.Plan %t260, ptr %a261 - store { ptr, i64, i64 } zeroinitializer, ptr %a262 - store { ptr, i64, i64 } zeroinitializer, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.5041, i64 0, i64 0 }, ptr %a264 - %t265 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t266 = load i1, ptr %t265 - br i1 %t266, label %then7963, label %endif7965 -then7963: - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load %S.ast.Type, ptr %a219 - %t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269) - %t271 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t267, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t271, ptr %a264 - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a219 - %t278 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.5042, i64 9, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.5043, i64 10, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load i64, ptr %t275 - %t290 = add i64 %t289, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t290, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t291 = load ptr, ptr %a262 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i64 %t289 - store { ptr, i64, i64 } %t288, ptr %t292 - store i64 %t290, ptr %t275 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t294 = load ptr, ptr %a1 - %t295 = load %S.ast.Type, ptr %a219 - %t296 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t294, %S.ast.Type %t295) - store { ptr, i64, i64 } { ptr @.str.5044, i64 9, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t301, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.5045, i64 11, i64 0 }, ptr %a304 - call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) - store { ptr, i64, i64 } %t301, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a302 - %t307 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t306, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t306, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load i64, ptr %t293 - %t314 = add i64 %t313, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t314, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t315 = load ptr, ptr %a263 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t315, i64 %t313 - store { ptr, i64, i64 } %t312, ptr %t316 - store i64 %t314, ptr %t293 - br label %endif7965 -endif7965: - store { ptr, i64, i64 } zeroinitializer, ptr %a317 - %t318 = load ptr, ptr %a1 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic7966, label %ok7967 -panic7966: - call void @finch_panic(ptr @.str.5046, i64 4693, ptr @.str.5047) - unreachable -ok7967: - %t320 = getelementptr inbounds %S.gen.Gen, ptr %t318, i32 0, i32 11 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i32 0, i32 1 - %t322 = load i64, ptr %t321 - store i64 %t322, ptr %a323 - %t324 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i32 0, i32 1 - %t326 = load i64, ptr %t325 - store i64 0, ptr %a327 - br label %for.cond7968 -for.cond7968: - %t328 = load i64, ptr %a327 - %t329 = icmp slt i64 %t328, %t326 - br i1 %t329, label %for.body7969, label %for.end7971 -for.body7969: - %t330 = load i64, ptr %a327 - %t331 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = icmp slt i64 %t330, %t333 - br i1 %t334, label %then7972, label %endif7974 -then7972: - %t335 = load i64, ptr %a327 - %t336 = load { ptr, i64, i64 }, ptr %a225 - %t337 = extractvalue { ptr, i64, i64 } %t336, 1 - %t338 = icmp uge i64 %t335, %t337 - br i1 %t338, label %range7975, label %inrange7976 -range7975: - call void @finch_panic_index(ptr @.str.5048, i64 4696, i64 %t335, i64 %t337) - unreachable -inrange7976: - %t339 = extractvalue { ptr, i64, i64 } %t336, 0 - %t340 = getelementptr inbounds %S.ast.Type, ptr %t339, i64 %t335 - %t341 = load %S.ast.Type, ptr %t340 - store %S.ast.Type %t341, ptr %a342 - call void @finch.copy.S_ast_Type(ptr %a343, ptr %a342) - %t344 = load %S.ast.Type, ptr %a343 - store %S.ast.Type %t344, ptr %a345 - %t346 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 1 - %t347 = load i64, ptr %a327 - %t348 = load { ptr, i64, i64 }, ptr %t346 - %t349 = extractvalue { ptr, i64, i64 } %t348, 1 - %t350 = icmp uge i64 %t347, %t349 - br i1 %t350, label %range7977, label %inrange7978 -range7977: - call void @finch_panic_index(ptr @.str.5049, i64 4697, i64 %t347, i64 %t349) - unreachable -inrange7978: - %t351 = extractvalue { ptr, i64, i64 } %t348, 0 - %t352 = getelementptr inbounds %S.gen.Abi, ptr %t351, i64 %t347 - %t353 = load %S.gen.Abi, ptr %t352 - store %S.gen.Abi %t353, ptr %a354 - call void @finch.copy.S_gen_Abi(ptr %a355, ptr %a354) - %t356 = load %S.gen.Abi, ptr %a355 - store %S.gen.Abi %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t361 = load i64, ptr %a327 - %t362 = load { ptr, i64, i64 }, ptr %t360 - %t363 = extractvalue { ptr, i64, i64 } %t362, 1 - %t364 = icmp uge i64 %t361, %t363 - br i1 %t364, label %range7979, label %inrange7980 -range7979: - call void @finch_panic_index(ptr @.str.5050, i64 4698, i64 %t361, i64 %t363) - unreachable -inrange7980: - %t365 = extractvalue { ptr, i64, i64 } %t362, 0 - %t366 = getelementptr inbounds %S.ast.Node, ptr %t365, i64 %t361 - %t367 = load %S.ast.Node, ptr %t366 - %t368 = load %S.ast.Type, ptr %a345 - %t369 = call %S.gen.Val @finch.gen.exprWant(ptr %t359, %S.ast.Node %t367, %S.ast.Type %t368) - %t370 = load %S.ast.Type, ptr %a345 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t372 = load i64, ptr %a327 - %t373 = load { ptr, i64, i64 }, ptr %t371 - %t374 = extractvalue { ptr, i64, i64 } %t373, 1 - %t375 = icmp uge i64 %t372, %t374 - br i1 %t375, label %range7981, label %inrange7982 -range7981: - call void @finch_panic_index(ptr @.str.5051, i64 4698, i64 %t372, i64 %t374) - unreachable -inrange7982: - %t376 = extractvalue { ptr, i64, i64 } %t373, 0 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i64 %t372 - %t378 = load %S.ast.Node, ptr %t377 - %t379 = load i64, ptr %a327 - %t380 = add i64 %t379, 1 - call void @finch_str_from_int(ptr %a381, i64 %t380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.5052, i64 9, i64 0 }, ptr %a384 - store { ptr, i64, i64 } %t382, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.5053, i64 4, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t392, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t392, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = call %S.gen.Val @finch.gen.coerce(ptr %t358, %S.gen.Val %t369, %S.ast.Type %t370, %S.ast.Node %t378, { ptr, i64, i64 } %t399) - store %S.gen.Val %t369, ptr %a401 - call void @finch.drop.S_gen_Val(ptr %a401) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store %S.gen.Val %t400, ptr %a403 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t405 = load %S.gen.Val, ptr %a403 - store %S.gen.Val %t405, ptr %a406 - call void @finch.copy.S_gen_Val(ptr %a407, ptr %a406) - %t408 = load %S.gen.Val, ptr %a407 - %t409 = load i64, ptr %t404 - %t410 = add i64 %t409, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t410, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t411 = load ptr, ptr %a317 - %t412 = getelementptr inbounds %S.gen.Val, ptr %t411, i64 %t409 - store %S.gen.Val %t408, ptr %t412 - store i64 %t410, ptr %t404 - %t413 = load ptr, ptr %a1 - %t414 = load %S.gen.Val, ptr %a403 - call void @finch.gen.hold(ptr %t413, %S.gen.Val %t414) - %t415 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5054, i64 6, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then7983, label %else7984 -then7983: - %t421 = load ptr, ptr %a1 - %t422 = load ptr, ptr %a1 - %t423 = load %S.ast.Type, ptr %a345 - %t424 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t422, %S.ast.Type %t423) - %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t421, { ptr, i64, i64 } %t424) - store { ptr, i64, i64 } %t424, ptr %a426 - call void @finch_str_drop(ptr %a426) - store { ptr, i64, i64 } %t425, ptr %a427 - %t428 = load ptr, ptr %a1 - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Type, ptr %a345 - %t431 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t430) - %t432 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = load { ptr, i64, i64 }, ptr %a427 - call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } %t431, { ptr, i64, i64 } %t433, { ptr, i64, i64 } %t434) - store { ptr, i64, i64 } %t431, ptr %a435 - call void @finch_str_drop(ptr %a435) - %t436 = load ptr, ptr %a1 - %t437 = load %S.ast.Type, ptr %a345 - %t438 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t437) - store { ptr, i64, i64 } { ptr @.str.5055, i64 10, i64 0 }, ptr %a440 - store { ptr, i64, i64 } %t438, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.5056, i64 8, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 3 - %t450 = load i64, ptr %t449 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } %t448, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t448, ptr %a456 - call void @finch_str_drop(ptr %a456) - store { ptr, i64, i64 } %t452, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t458, ptr %a459 - %t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t461 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_copy(ptr %a463, ptr %a462) - %t464 = load { ptr, i64, i64 }, ptr %a463 - %t465 = load i64, ptr %t460 - %t466 = add i64 %t465, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t466, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t467 = load ptr, ptr %a262 - %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t467, i64 %t465 - store { ptr, i64, i64 } %t464, ptr %t468 - store i64 %t466, ptr %t460 - %t469 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t470 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t470, ptr %a472 - store { ptr, i64, i64 } { ptr @.str.5057, i64 1, i64 0 }, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - %t475 = load { ptr, i64, i64 }, ptr %a427 - store { ptr, i64, i64 } %t474, ptr %a477 - store { ptr, i64, i64 } %t475, ptr %a478 - call void @finch_str_concat(ptr %a476, ptr %a477, ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a476 - %t481 = load i64, ptr %t469 - %t482 = add i64 %t481, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t482, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t483 = load ptr, ptr %a263 - %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t481 - store { ptr, i64, i64 } %t480, ptr %t484 - store i64 %t482, ptr %t469 - call void @finch_str_drop(ptr %a459) - call void @finch_str_drop(ptr %a427) - br label %endif7985 -else7984: - %t485 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5058, i64 8, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then7986, label %else7987 -then7986: - %t491 = load ptr, ptr %a1 - %t492 = load ptr, ptr %a1 - %t493 = load %S.ast.Type, ptr %a345 - %t494 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t492, %S.ast.Type %t493) - %t495 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t491, { ptr, i64, i64 } %t494) - store { ptr, i64, i64 } %t494, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t495, ptr %a497 - %t498 = load ptr, ptr %a1 - %t499 = load ptr, ptr %a1 - %t500 = load %S.ast.Type, ptr %a345 - %t501 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t499, %S.ast.Type %t500) - %t502 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t503 = load { ptr, i64, i64 }, ptr %t502 - %t504 = load { ptr, i64, i64 }, ptr %a497 - call void @finch.gen.store(ptr %t498, { ptr, i64, i64 } %t501, { ptr, i64, i64 } %t503, { ptr, i64, i64 } %t504) - store { ptr, i64, i64 } %t501, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t507 = load i64, ptr %t506 - %t508 = add i64 %t507, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t508, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t509 = load ptr, ptr %a262 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i64 %t507 - store { ptr, i64, i64 } { ptr @.str.5059, i64 3, i64 0 }, ptr %t510 - store i64 %t508, ptr %t506 - %t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t512 = load { ptr, i64, i64 }, ptr %a497 - store { ptr, i64, i64 } { ptr @.str.5060, i64 4, i64 0 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a515 - call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a513 - %t517 = load i64, ptr %t511 - %t518 = add i64 %t517, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t518, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t519 = load ptr, ptr %a263 - %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t517 - store { ptr, i64, i64 } %t516, ptr %t520 - store i64 %t518, ptr %t511 - call void @finch_str_drop(ptr %a497) - br label %endif7988 -else7987: - %t521 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5061, i64 6, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp ne i32 %t525, 0 - br i1 %t526, label %then7989, label %else7990 -then7989: - %t527 = load ptr, ptr %a1 - %t528 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t527, { ptr, i64, i64 } { ptr @.str.5062, i64 9, i64 0 }) - store { ptr, i64, i64 } %t528, ptr %a529 - %t530 = load ptr, ptr %a1 - %t531 = load ptr, ptr %a1 - %t532 = load %S.ast.Type, ptr %a345 - %t533 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t531, %S.ast.Type %t532) - %t534 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.store(ptr %t530, { ptr, i64, i64 } %t533, { ptr, i64, i64 } %t535, { ptr, i64, i64 } %t536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t539 = getelementptr inbounds { ptr, i64, i64 }, ptr %t538, i32 0, i32 1 - %t540 = load i64, ptr %t539 - store i64 0, ptr %a541 - br label %for.cond7992 -for.cond7992: - %t542 = load i64, ptr %a541 - %t543 = icmp slt i64 %t542, %t540 - br i1 %t543, label %for.body7993, label %for.end7995 -for.body7993: - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t546 = load i64, ptr %a541 - %t547 = load { ptr, i64, i64 }, ptr %t545 - %t548 = extractvalue { ptr, i64, i64 } %t547, 1 - %t549 = icmp uge i64 %t546, %t548 - br i1 %t549, label %range7996, label %inrange7997 -range7996: - call void @finch_panic_index(ptr @.str.5063, i64 4716, i64 %t546, i64 %t548) - unreachable -inrange7997: - %t550 = extractvalue { ptr, i64, i64 } %t547, 0 - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %t550, i64 %t546 - %t552 = load { ptr, i64, i64 }, ptr %t551 - %t553 = load ptr, ptr %a1 - %t554 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } { ptr @.str.5064, i64 31, i64 0 }, ptr %a556 - store { ptr, i64, i64 } %t554, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - %t558 = load { ptr, i64, i64 }, ptr %a555 - store { ptr, i64, i64 } %t558, ptr %a560 - store { ptr, i64, i64 } { ptr @.str.5065, i64 6, i64 0 }, ptr %a561 - call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561) - store { ptr, i64, i64 } %t558, ptr %a562 - call void @finch_str_drop(ptr %a562) - %t563 = load { ptr, i64, i64 }, ptr %a559 - %t564 = load i64, ptr %a541 - %t565 = mul i64 8, %t564 - call void @finch_str_from_int(ptr %a566, i64 %t565) - %t567 = load { ptr, i64, i64 }, ptr %a566 - store { ptr, i64, i64 } %t563, ptr %a569 - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) - store { ptr, i64, i64 } %t563, ptr %a571 - call void @finch_str_drop(ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a568 - %t574 = call { ptr, i64, i64 } @finch.gen.op(ptr %t553, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t573, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = call { ptr, i64, i64 } @finch.gen.load(ptr %t544, { ptr, i64, i64 } %t552, { ptr, i64, i64 } %t574) - store { ptr, i64, i64 } %t574, ptr %a577 - call void @finch_str_drop(ptr %a577) - store { ptr, i64, i64 } %t576, ptr %a578 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t580 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t581 = load i64, ptr %a541 - %t582 = load { ptr, i64, i64 }, ptr %t580 - %t583 = extractvalue { ptr, i64, i64 } %t582, 1 - %t584 = icmp uge i64 %t581, %t583 - br i1 %t584, label %range7998, label %inrange7999 -range7998: - call void @finch_panic_index(ptr @.str.5066, i64 4717, i64 %t581, i64 %t583) - unreachable -inrange7999: - %t585 = extractvalue { ptr, i64, i64 } %t582, 0 - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i64 %t581 - %t587 = load { ptr, i64, i64 }, ptr %t586 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_copy(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load i64, ptr %t579 - %t592 = add i64 %t591, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t592, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t593 = load ptr, ptr %a262 - %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %t593, i64 %t591 - store { ptr, i64, i64 } %t590, ptr %t594 - store i64 %t592, ptr %t579 - %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t596 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t597 = load i64, ptr %a541 - %t598 = load { ptr, i64, i64 }, ptr %t596 - %t599 = extractvalue { ptr, i64, i64 } %t598, 1 - %t600 = icmp uge i64 %t597, %t599 - br i1 %t600, label %range8000, label %inrange8001 -range8000: - call void @finch_panic_index(ptr @.str.5067, i64 4718, i64 %t597, i64 %t599) - unreachable -inrange8001: - %t601 = extractvalue { ptr, i64, i64 } %t598, 0 - %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i64 %t597 - %t603 = load { ptr, i64, i64 }, ptr %t602 - store { ptr, i64, i64 } %t603, ptr %a605 - store { ptr, i64, i64 } { ptr @.str.5068, i64 1, i64 0 }, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - %t607 = load { ptr, i64, i64 }, ptr %a604 - %t608 = load { ptr, i64, i64 }, ptr %a578 - store { ptr, i64, i64 } %t607, ptr %a610 - store { ptr, i64, i64 } %t608, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t607, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = load i64, ptr %t595 - %t615 = add i64 %t614, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t615, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t616 = load ptr, ptr %a263 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i64 %t614 - store { ptr, i64, i64 } %t613, ptr %t617 - store i64 %t615, ptr %t595 - call void @finch_str_drop(ptr %a578) - br label %for.step7994 -for.step7994: - %t618 = load i64, ptr %a541 - %t619 = add i64 %t618, 1 - store i64 %t619, ptr %a541 - br label %for.cond7992 -for.end7995: - call void @finch_str_drop(ptr %a529) - br label %endif7991 -else7990: - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t621 = load ptr, ptr %a1 - %t622 = load %S.ast.Type, ptr %a345 - %t623 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t621, %S.ast.Type %t622) - %t624 = load ptr, ptr %a1 - %t625 = load %S.ast.Type, ptr %a345 - %t626 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t624, %S.ast.Type %t625) - store { ptr, i64, i64 } %t623, ptr %a628 - store { ptr, i64, i64 } %t626, ptr %a629 - call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) - store { ptr, i64, i64 } %t623, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t626, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a627 - %t633 = load i64, ptr %t620 - %t634 = add i64 %t633, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t634, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t635 = load ptr, ptr %a262 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t633 - store { ptr, i64, i64 } %t632, ptr %t636 - store i64 %t634, ptr %t620 - %t637 = getelementptr inbounds %S.ast.Type, ptr %a345, i32 0, i32 0 - %t638 = load { ptr, i64, i64 }, ptr %t637 - store { ptr, i64, i64 } %t638, ptr %a639 - store { ptr, i64, i64 } { ptr @.str.5069, i64 3, i64 0 }, ptr %a640 - %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) - %t642 = icmp ne i32 %t641, 0 - br i1 %t642, label %then8002, label %else8003 -then8002: - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t644 = load ptr, ptr %a1 - %t645 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t646 = load { ptr, i64, i64 }, ptr %t645 - %t647 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t644, { ptr, i64, i64 } %t646) - store { ptr, i64, i64 } { ptr @.str.5070, i64 4, i64 0 }, ptr %a649 - store { ptr, i64, i64 } %t647, ptr %a650 - call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) - store { ptr, i64, i64 } %t647, ptr %a651 - call void @finch_str_drop(ptr %a651) - %t652 = load { ptr, i64, i64 }, ptr %a648 - %t653 = load i64, ptr %t643 - %t654 = add i64 %t653, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t654, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t655 = load ptr, ptr %a263 - %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i64 %t653 - store { ptr, i64, i64 } %t652, ptr %t656 - store i64 %t654, ptr %t643 - br label %endif8004 -else8003: - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t658 = load ptr, ptr %a1 - %t659 = load %S.ast.Type, ptr %a345 - %t660 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t658, %S.ast.Type %t659) - %t661 = load ptr, ptr %a1 - %t662 = load %S.ast.Type, ptr %a345 - %t663 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t661, %S.ast.Type %t662) - store { ptr, i64, i64 } %t660, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t660, ptr %a667 - call void @finch_str_drop(ptr %a667) - store { ptr, i64, i64 } %t663, ptr %a668 - call void @finch_str_drop(ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.5071, i64 1, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t676 = load { ptr, i64, i64 }, ptr %t675 - store { ptr, i64, i64 } %t674, ptr %a678 - store { ptr, i64, i64 } %t676, ptr %a679 - call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) - store { ptr, i64, i64 } %t674, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load { ptr, i64, i64 }, ptr %a677 - %t682 = load i64, ptr %t657 - %t683 = add i64 %t682, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t683, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t684 = load ptr, ptr %a263 - %t685 = getelementptr inbounds { ptr, i64, i64 }, ptr %t684, i64 %t682 - store { ptr, i64, i64 } %t681, ptr %t685 - store i64 %t683, ptr %t657 - br label %endif8004 -endif8004: - br label %endif7991 -endif7991: - br label %endif7988 -endif7988: - br label %endif7985 -endif7985: - call void @finch.drop.S_gen_Val(ptr %a403) - call void @finch.drop.S_gen_Abi(ptr %a357) - call void @finch.drop.S_ast_Type(ptr %a345) - br label %for.step7970 -endif7974: - %t686 = load ptr, ptr %a1 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t688 = load i64, ptr %a327 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range8005, label %inrange8006 -range8005: - call void @finch_panic_index(ptr @.str.5072, i64 4731, i64 %t688, i64 %t690) - unreachable -inrange8006: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.ast.Node, ptr %t692, i64 %t688 - %t694 = load %S.ast.Node, ptr %t693 - %t695 = call %S.gen.Val @finch.gen.expr(ptr %t686, %S.ast.Node %t694) - store %S.gen.Val %t695, ptr %a696 - %t697 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 1 - %t698 = load %S.ast.Type, ptr %t697 - store %S.ast.Type %t698, ptr %a699 - call void @finch.copy.S_ast_Type(ptr %a700, ptr %a699) - %t701 = load %S.ast.Type, ptr %a700 - store %S.ast.Type %t701, ptr %a702 - %t703 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t704 = load { ptr, i64, i64 }, ptr %t703 - store { ptr, i64, i64 } %t704, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5073, i64 4, i64 0 }, ptr %a706 - %t707 = call i32 @finch_str_eq(ptr %a705, ptr %a706) - %t708 = icmp ne i32 %t707, 0 - br i1 %t708, label %then8007, label %endif8009 -then8007: - %t709 = load ptr, ptr %a1 - %t710 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t711 = load i64, ptr %a327 - %t712 = load { ptr, i64, i64 }, ptr %t710 - %t713 = extractvalue { ptr, i64, i64 } %t712, 1 - %t714 = icmp uge i64 %t711, %t713 - br i1 %t714, label %range8010, label %inrange8011 -range8010: - call void @finch_panic_index(ptr @.str.5074, i64 4734, i64 %t711, i64 %t713) - unreachable -inrange8011: - %t715 = extractvalue { ptr, i64, i64 } %t712, 0 - %t716 = getelementptr inbounds %S.ast.Node, ptr %t715, i64 %t711 - %t717 = load %S.ast.Node, ptr %t716 - call void @finch.gen.fail(ptr %t709, %S.ast.Node %t717, { ptr, i64, i64 } { ptr @.str.5075, i64 23, i64 0 }) - br label %endif8009 -endif8009: - %t718 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t719 = load %S.gen.Val, ptr %a696 - store %S.gen.Val %t719, ptr %a720 - call void @finch.copy.S_gen_Val(ptr %a721, ptr %a720) - %t722 = load %S.gen.Val, ptr %a721 - %t723 = load i64, ptr %t718 - %t724 = add i64 %t723, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t724, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t725 = load ptr, ptr %a317 - %t726 = getelementptr inbounds %S.gen.Val, ptr %t725, i64 %t723 - store %S.gen.Val %t722, ptr %t726 - store i64 %t724, ptr %t718 - %t727 = load ptr, ptr %a1 - %t728 = load %S.gen.Val, ptr %a696 - call void @finch.gen.hold(ptr %t727, %S.gen.Val %t728) - %t729 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t730 = load { ptr, i64, i64 }, ptr %t729 - store { ptr, i64, i64 } %t730, ptr %a731 - store { ptr, i64, i64 } { ptr @.str.5076, i64 6, i64 0 }, ptr %a732 - %t733 = call i32 @finch_str_eq(ptr %a731, ptr %a732) - %t734 = icmp ne i32 %t733, 0 - br label %logic.from8012 -logic.from8012: - br i1 %t734, label %logic.end8014, label %logic.rhs8013 -logic.rhs8013: - %t735 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t736 = load { ptr, i64, i64 }, ptr %t735 - store { ptr, i64, i64 } %t736, ptr %a737 - store { ptr, i64, i64 } { ptr @.str.5077, i64 5, i64 0 }, ptr %a738 - %t739 = call i32 @finch_str_eq(ptr %a737, ptr %a738) - %t740 = icmp ne i32 %t739, 0 - br label %logic.rend8015 -logic.rend8015: - br label %logic.end8014 -logic.end8014: - %t741 = phi i1 [ true, %logic.from8012 ], [ %t740, %logic.rend8015 ] - br i1 %t741, label %then8016, label %endif8018 -then8016: - %t742 = load ptr, ptr %a1 - %t743 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t744 = load i64, ptr %a327 - %t745 = load { ptr, i64, i64 }, ptr %t743 - %t746 = extractvalue { ptr, i64, i64 } %t745, 1 - %t747 = icmp uge i64 %t744, %t746 - br i1 %t747, label %range8019, label %inrange8020 -range8019: - call void @finch_panic_index(ptr @.str.5078, i64 4739, i64 %t744, i64 %t746) - unreachable -inrange8020: - %t748 = extractvalue { ptr, i64, i64 } %t745, 0 - %t749 = getelementptr inbounds %S.ast.Node, ptr %t748, i64 %t744 - %t750 = load %S.ast.Node, ptr %t749 - call void @finch.gen.fail(ptr %t742, %S.ast.Node %t750, { ptr, i64, i64 } { ptr @.str.5079, i64 68, i64 0 }) - br label %endif8018 -endif8018: - %t751 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t755, ptr %a756 - %t757 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t758 = load { ptr, i64, i64 }, ptr %t757 - store { ptr, i64, i64 } %t758, ptr %a759 - store { ptr, i64, i64 } { ptr @.str.5080, i64 3, i64 0 }, ptr %a760 - %t761 = call i32 @finch_str_eq(ptr %a759, ptr %a760) - %t762 = icmp ne i32 %t761, 0 - br i1 %t762, label %then8021, label %else8022 -then8021: - %t763 = load ptr, ptr %a1 - %t764 = load { ptr, i64, i64 }, ptr %a756 - %t765 = load %S.ast.Type, ptr %a702 - %t766 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5081, i64 5, i64 0 }) - %t767 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t763, { ptr, i64, i64 } %t764, %S.ast.Type %t765, %S.ast.Type %t766) - store %S.ast.Type %t766, ptr %a768 - call void @finch.drop.S_ast_Type(ptr %a768) - %t769 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t767, ptr %a756 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch_str_drop(ptr %a770) - %t771 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5082, i64 5, i64 0 }) - %t772 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t771, ptr %a702 - store %S.ast.Type %t772, ptr %a773 - call void @finch.drop.S_ast_Type(ptr %a773) - br label %endif8023 -else8022: - %t774 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t775 = load { ptr, i64, i64 }, ptr %t774 - store { ptr, i64, i64 } %t775, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.5083, i64 3, i64 0 }, ptr %a777 - %t778 = call i32 @finch_str_eq(ptr %a776, ptr %a777) - %t779 = icmp ne i32 %t778, 0 - br i1 %t779, label %then8024, label %else8025 -then8024: - %t780 = load ptr, ptr %a1 - %t781 = load { ptr, i64, i64 }, ptr %a756 - %t782 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t780, { ptr, i64, i64 } %t781) - %t783 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t782, ptr %a756 - store { ptr, i64, i64 } %t783, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5084, i64 3, i64 0 }) - %t786 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t785, ptr %a702 - store %S.ast.Type %t786, ptr %a787 - call void @finch.drop.S_ast_Type(ptr %a787) - br label %endif8026 -else8025: - %t788 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t789 = load { ptr, i64, i64 }, ptr %t788 - store { ptr, i64, i64 } %t789, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.5085, i64 4, i64 0 }, ptr %a791 - %t792 = call i32 @finch_str_eq(ptr %a790, ptr %a791) - %t793 = icmp ne i32 %t792, 0 - br i1 %t793, label %then8027, label %else8028 -then8027: - %t794 = load ptr, ptr %a1 - %t795 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t796 = load { ptr, i64, i64 }, ptr %t795 - store { ptr, i64, i64 } { ptr @.str.5086, i64 8, i64 0 }, ptr %a798 - store { ptr, i64, i64 } %t796, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - %t800 = load { ptr, i64, i64 }, ptr %a797 - store { ptr, i64, i64 } %t800, ptr %a802 - store { ptr, i64, i64 } { ptr @.str.5087, i64 7, i64 0 }, ptr %a803 - call void @finch_str_concat(ptr %a801, ptr %a802, ptr %a803) - store { ptr, i64, i64 } %t800, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = load { ptr, i64, i64 }, ptr %a801 - %t806 = call { ptr, i64, i64 } @finch.gen.op(ptr %t794, { ptr, i64, i64 } %t805) - store { ptr, i64, i64 } %t805, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t806, ptr %a756 - store { ptr, i64, i64 } %t808, ptr %a809 - call void @finch_str_drop(ptr %a809) - %t810 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5088, i64 3, i64 0 }) - %t811 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t810, ptr %a702 - store %S.ast.Type %t811, ptr %a812 - call void @finch.drop.S_ast_Type(ptr %a812) - br label %endif8029 -else8028: - %t813 = load %S.ast.Type, ptr %a702 - %t814 = call i1 @finch.gen.isInt(%S.ast.Type %t813) - br label %logic.from8030 -logic.from8030: - br i1 %t814, label %logic.end8032, label %logic.rhs8031 -logic.rhs8031: - %t815 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } %t816, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.5089, i64 4, i64 0 }, ptr %a818 - %t819 = call i32 @finch_str_eq(ptr %a817, ptr %a818) - %t820 = icmp ne i32 %t819, 0 - br label %logic.rend8033 -logic.rend8033: - br label %logic.end8032 -logic.end8032: - %t821 = phi i1 [ true, %logic.from8030 ], [ %t820, %logic.rend8033 ] - br label %logic.from8034 -logic.from8034: - br i1 %t821, label %logic.rhs8035, label %logic.end8036 -logic.rhs8035: - %t822 = load %S.ast.Type, ptr %a702 - %t823 = call i64 @finch.gen.bitsOf(%S.ast.Type %t822) - %t824 = icmp slt i64 %t823, 32 - br label %logic.rend8037 -logic.rend8037: - br label %logic.end8036 -logic.end8036: - %t825 = phi i1 [ false, %logic.from8034 ], [ %t824, %logic.rend8037 ] - br i1 %t825, label %then8038, label %endif8040 -then8038: - %t826 = load ptr, ptr %a1 - %t827 = load { ptr, i64, i64 }, ptr %a756 - %t828 = load %S.ast.Type, ptr %a702 - %t829 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5090, i64 3, i64 0 }) - %t830 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t826, { ptr, i64, i64 } %t827, %S.ast.Type %t828, %S.ast.Type %t829) - store %S.ast.Type %t829, ptr %a831 - call void @finch.drop.S_ast_Type(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t830, ptr %a756 - store { ptr, i64, i64 } %t832, ptr %a833 - call void @finch_str_drop(ptr %a833) - %t834 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5091, i64 3, i64 0 }) - %t835 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t834, ptr %a702 - store %S.ast.Type %t835, ptr %a836 - call void @finch.drop.S_ast_Type(ptr %a836) - br label %endif8040 -endif8040: - br label %endif8029 -endif8029: - br label %endif8026 -endif8026: - br label %endif8023 -endif8023: - %t837 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t838 = load ptr, ptr %a1 - %t839 = load %S.ast.Type, ptr %a702 - %t840 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t838, %S.ast.Type %t839) - store { ptr, i64, i64 } %t840, ptr %a842 - store { ptr, i64, i64 } { ptr @.str.5092, i64 1, i64 0 }, ptr %a843 - call void @finch_str_concat(ptr %a841, ptr %a842, ptr %a843) - store { ptr, i64, i64 } %t840, ptr %a844 - call void @finch_str_drop(ptr %a844) - %t845 = load { ptr, i64, i64 }, ptr %a841 - %t846 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t845, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - store { ptr, i64, i64 } %t845, ptr %a850 - call void @finch_str_drop(ptr %a850) - %t851 = load { ptr, i64, i64 }, ptr %a847 - %t852 = load i64, ptr %t837 - %t853 = add i64 %t852, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t853, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t854 = load ptr, ptr %a263 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i64 %t852 - store { ptr, i64, i64 } %t851, ptr %t855 - store i64 %t853, ptr %t837 - call void @finch_str_drop(ptr %a756) - call void @finch.drop.S_ast_Type(ptr %a702) - call void @finch.drop.S_gen_Val(ptr %a696) - br label %for.step7970 -for.step7970: - %t856 = load i64, ptr %a327 - %t857 = add i64 %t856, 1 - store i64 %t857, ptr %a327 - br label %for.cond7968 -for.end7971: - %t858 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 2 - %t859 = load { ptr, i64, i64 }, ptr %t858 - store { ptr, i64, i64 } %t859, ptr %a860 - call void @finch_str_copy(ptr %a861, ptr %a860) - %t862 = load { ptr, i64, i64 }, ptr %a861 - store { ptr, i64, i64 } %t862, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5093, i64 0, i64 0 }, ptr %a864 - %t865 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t866 = getelementptr inbounds %S.gen.Abi, ptr %t865, i32 0, i32 0 - %t867 = load { ptr, i64, i64 }, ptr %t866 - store { ptr, i64, i64 } %t867, ptr %a868 - store { ptr, i64, i64 } { ptr @.str.5094, i64 6, i64 0 }, ptr %a869 - %t870 = call i32 @finch_str_eq(ptr %a868, ptr %a869) - %t871 = icmp ne i32 %t870, 0 - br i1 %t871, label %then8041, label %endif8043 -then8041: - %t872 = load ptr, ptr %a1 - %t873 = load %S.ast.Type, ptr %a219 - %t874 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t872, %S.ast.Type %t873) - %t875 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } %t874, ptr %a864 - store { ptr, i64, i64 } %t875, ptr %a876 - call void @finch_str_drop(ptr %a876) - br label %endif8043 -endif8043: - store { ptr, i64, i64 } { ptr @.str.5095, i64 0, i64 0 }, ptr %a877 - %t878 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t879 = load i1, ptr %t878 - br i1 %t879, label %then8044, label %endif8046 -then8044: - %t880 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5096, i64 5, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t883 = load i64, ptr %t882 - %t884 = icmp eq i64 %t883, 0 - br i1 %t884, label %then8047, label %endif8049 -then8047: - %t885 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5097, i64 3, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t885, ptr %a886 - call void @finch_str_drop(ptr %a886) - br label %endif8049 -endif8049: - br label %endif8046 -endif8046: - %t887 = load ptr, ptr %a1 - %t888 = icmp eq ptr %t887, null - br i1 %t888, label %panic8050, label %ok8051 -panic8050: - call void @finch_panic(ptr @.str.5098, i64 4770, ptr @.str.5099) - unreachable -ok8051: - %t889 = getelementptr inbounds %S.gen.Gen, ptr %t887, i32 0, i32 40 - %t890 = getelementptr inbounds { ptr, i64, i64 }, ptr %t889, i32 0, i32 1 - %t891 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t892 = load { ptr, i64, i64 }, ptr %t891 - store { ptr, i64, i64 } { ptr @.str.5100, i64 2, i64 0 }, ptr %a894 - store { ptr, i64, i64 } %t892, ptr %a895 - call void @finch_str_concat(ptr %a893, ptr %a894, ptr %a895) - %t896 = load { ptr, i64, i64 }, ptr %a893 - store i64 -1, ptr %a897 - %t898 = load i64, ptr %t890 - %t899 = load ptr, ptr %t889 - store i64 0, ptr %a900 - br label %find.cond8052 -find.cond8052: - %t901 = load i64, ptr %a900 - %t902 = icmp slt i64 %t901, %t898 - br i1 %t902, label %find.body8053, label %find.end8056 -find.body8053: - %t903 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 %t901 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t904, ptr %a905 - store { ptr, i64, i64 } %t896, ptr %a906 - %t907 = call i32 @finch_str_eq(ptr %a905, ptr %a906) - %t908 = icmp ne i32 %t907, 0 - br i1 %t908, label %find.hit8054, label %find.next8055 -find.hit8054: - store i64 %t901, ptr %a897 - br label %find.end8056 -find.next8055: - %t909 = add i64 %t901, 1 - store i64 %t909, ptr %a900 - br label %find.cond8052 -find.end8056: - store { ptr, i64, i64 } %t896, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load i64, ptr %a897 - %t912 = icmp sge i64 %t911, 0 - %t913 = xor i1 %t912, true - br i1 %t913, label %then8057, label %endif8059 -then8057: - %t914 = load ptr, ptr %a1 - %t915 = icmp eq ptr %t914, null - br i1 %t915, label %panic8060, label %ok8061 -panic8060: - call void @finch_panic(ptr @.str.5101, i64 4771, ptr @.str.5102) - unreachable -ok8061: - %t916 = getelementptr inbounds %S.gen.Gen, ptr %t914, i32 0, i32 40 - %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %t916, i32 0, i32 1 - %t918 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - store { ptr, i64, i64 } { ptr @.str.5103, i64 2, i64 0 }, ptr %a921 - store { ptr, i64, i64 } %t919, ptr %a922 - call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922) - %t923 = load { ptr, i64, i64 }, ptr %a920 - %t924 = load i64, ptr %t917 - %t925 = add i64 %t924, 1 - call void @finch_arr_reserve(ptr %t916, i64 %t925, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t926 = load ptr, ptr %t916 - %t927 = getelementptr inbounds { ptr, i64, i64 }, ptr %t926, i64 %t924 - store { ptr, i64, i64 } %t923, ptr %t927 - store i64 %t925, ptr %t917 - %t928 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t929 = load { ptr, i64, i64 }, ptr %t928 - %t930 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t929) - %t931 = xor i1 %t930, true - br i1 %t931, label %then8062, label %endif8064 -then8062: - %t932 = load ptr, ptr %a1 - %t933 = icmp eq ptr %t932, null - br i1 %t933, label %panic8065, label %ok8066 -panic8065: - call void @finch_panic(ptr @.str.5104, i64 4773, ptr @.str.5105) - unreachable -ok8066: - %t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 2 - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i32 0, i32 1 - %t936 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5106, i64 7, i64 0 }, ptr %a938 - store { ptr, i64, i64 } %t936, ptr %a939 - call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) - %t940 = load { ptr, i64, i64 }, ptr %a937 - store { ptr, i64, i64 } %t940, ptr %a942 - store { ptr, i64, i64 } { ptr @.str.5107, i64 1, i64 0 }, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - store { ptr, i64, i64 } %t940, ptr %a944 - call void @finch_str_drop(ptr %a944) - %t945 = load { ptr, i64, i64 }, ptr %a941 - %t946 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t945, ptr %a948 - store { ptr, i64, i64 } %t946, ptr %a949 - call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) - store { ptr, i64, i64 } %t945, ptr %a950 - call void @finch_str_drop(ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a947 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.5108, i64 2, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.5109, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - %t969 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5110, i64 2, i64 0 }, ptr %a970 - call void @finch_str_join(ptr %a971, ptr %a262, ptr %a970) - %t972 = load { ptr, i64, i64 }, ptr %a971 - store { ptr, i64, i64 } %t968, ptr %a974 - store { ptr, i64, i64 } %t972, ptr %a975 - call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) - store { ptr, i64, i64 } %t968, ptr %a976 - call void @finch_str_drop(ptr %a976) - store { ptr, i64, i64 } %t972, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a973 - %t979 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t978, ptr %a981 - store { ptr, i64, i64 } %t979, ptr %a982 - call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) - store { ptr, i64, i64 } %t978, ptr %a983 - call void @finch_str_drop(ptr %a983) - %t984 = load { ptr, i64, i64 }, ptr %a980 - store { ptr, i64, i64 } %t984, ptr %a986 - store { ptr, i64, i64 } { ptr @.str.5111, i64 1, i64 0 }, ptr %a987 - call void @finch_str_concat(ptr %a985, ptr %a986, ptr %a987) - store { ptr, i64, i64 } %t984, ptr %a988 - call void @finch_str_drop(ptr %a988) - %t989 = load { ptr, i64, i64 }, ptr %a985 - %t990 = load i64, ptr %t935 - %t991 = add i64 %t990, 1 - call void @finch_arr_reserve(ptr %t934, i64 %t991, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t992 = load ptr, ptr %t934 - %t993 = getelementptr inbounds { ptr, i64, i64 }, ptr %t992, i64 %t990 - store { ptr, i64, i64 } %t989, ptr %t993 - store i64 %t991, ptr %t935 - br label %endif8064 -endif8064: - br label %endif8059 -endif8059: - store { ptr, i64, i64 } { ptr @.str.5112, i64 0, i64 0 }, ptr %a994 - %t995 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t996 = load i1, ptr %t995 - br i1 %t996, label %then8067, label %endif8069 -then8067: - %t997 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5114, i64 2, i64 0 }, ptr %a998 - call void @finch_str_join(ptr %a999, ptr %a262, ptr %a998) - %t1000 = load { ptr, i64, i64 }, ptr %a999 - store { ptr, i64, i64 } { ptr @.str.5113, i64 2, i64 0 }, ptr %a1002 - store { ptr, i64, i64 } %t1000, ptr %a1003 - call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) - store { ptr, i64, i64 } %t1000, ptr %a1004 - call void @finch_str_drop(ptr %a1004) - %t1005 = load { ptr, i64, i64 }, ptr %a1001 - %t1006 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t1005, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - store { ptr, i64, i64 } %t1005, ptr %a1010 - call void @finch_str_drop(ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5115, i64 1, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1016, ptr %a994 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_drop(ptr %a1018) - br label %endif8069 -endif8069: - %t1019 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5116, i64 4, i64 0 }, ptr %a1021 - store { ptr, i64, i64 } %t1019, ptr %a1022 - call void @finch_str_concat(ptr %a1020, ptr %a1021, ptr %a1022) - %t1023 = load { ptr, i64, i64 }, ptr %a1020 - store { ptr, i64, i64 } %t1023, ptr %a1025 - store { ptr, i64, i64 } { ptr @.str.5117, i64 1, i64 0 }, ptr %a1026 - call void @finch_str_concat(ptr %a1024, ptr %a1025, ptr %a1026) - store { ptr, i64, i64 } %t1023, ptr %a1027 - call void @finch_str_drop(ptr %a1027) - %t1028 = load { ptr, i64, i64 }, ptr %a1024 - %t1029 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t1028, ptr %a1031 - store { ptr, i64, i64 } %t1029, ptr %a1032 - call void @finch_str_concat(ptr %a1030, ptr %a1031, ptr %a1032) - store { ptr, i64, i64 } %t1028, ptr %a1033 - call void @finch_str_drop(ptr %a1033) - %t1034 = load { ptr, i64, i64 }, ptr %a1030 - %t1035 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1035, ptr %a1038 - call void @finch_str_concat(ptr %a1036, ptr %a1037, ptr %a1038) - store { ptr, i64, i64 } %t1034, ptr %a1039 - call void @finch_str_drop(ptr %a1039) - %t1040 = load { ptr, i64, i64 }, ptr %a1036 - store { ptr, i64, i64 } %t1040, ptr %a1042 - store { ptr, i64, i64 } { ptr @.str.5118, i64 2, i64 0 }, ptr %a1043 - call void @finch_str_concat(ptr %a1041, ptr %a1042, ptr %a1043) - store { ptr, i64, i64 } %t1040, ptr %a1044 - call void @finch_str_drop(ptr %a1044) - %t1045 = load { ptr, i64, i64 }, ptr %a1041 - %t1046 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t1047 = load { ptr, i64, i64 }, ptr %t1046 - store { ptr, i64, i64 } %t1045, ptr %a1049 - store { ptr, i64, i64 } %t1047, ptr %a1050 - call void @finch_str_concat(ptr %a1048, ptr %a1049, ptr %a1050) - store { ptr, i64, i64 } %t1045, ptr %a1051 - call void @finch_str_drop(ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1048 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5119, i64 1, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5120, i64 2, i64 0 }, ptr %a1059 - call void @finch_str_join(ptr %a1060, ptr %a263, ptr %a1059) - %t1061 = load { ptr, i64, i64 }, ptr %a1060 - store { ptr, i64, i64 } %t1057, ptr %a1063 - store { ptr, i64, i64 } %t1061, ptr %a1064 - call void @finch_str_concat(ptr %a1062, ptr %a1063, ptr %a1064) - store { ptr, i64, i64 } %t1057, ptr %a1065 - call void @finch_str_drop(ptr %a1065) - store { ptr, i64, i64 } %t1061, ptr %a1066 - call void @finch_str_drop(ptr %a1066) - %t1067 = load { ptr, i64, i64 }, ptr %a1062 - store { ptr, i64, i64 } %t1067, ptr %a1069 - store { ptr, i64, i64 } { ptr @.str.5121, i64 1, i64 0 }, ptr %a1070 - call void @finch_str_concat(ptr %a1068, ptr %a1069, ptr %a1070) - store { ptr, i64, i64 } %t1067, ptr %a1071 - call void @finch_str_drop(ptr %a1071) - %t1072 = load { ptr, i64, i64 }, ptr %a1068 - store { ptr, i64, i64 } %t1072, ptr %a1073 - %t1074 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1075 = load { ptr, i64, i64 }, ptr %t1074 - store { ptr, i64, i64 } %t1075, ptr %a1076 - store { ptr, i64, i64 } { ptr @.str.5122, i64 4, i64 0 }, ptr %a1077 - %t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077) - %t1079 = icmp ne i32 %t1078, 0 - br i1 %t1079, label %then8070, label %endif8072 -then8070: - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1080, { ptr, i64, i64 } %t1081) - %t1082 = load ptr, ptr %a1 - %t1083 = load { ptr, i64, i64 }, ptr %a317 - %t1084 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1082, { ptr, i64, i64 } %t1083, i64 %t1084) - %t1085 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1085, ptr %a1086 - call void @finch.copy.S_ast_Type(ptr %a1087, ptr %a1086) - %t1088 = load %S.ast.Type, ptr %a1087 - %t1089 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1088, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1089 -endif8072: - %t1090 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t1091 = load i1, ptr %t1090 - br i1 %t1091, label %then8073, label %endif8075 -then8073: - %t1092 = load ptr, ptr %a1 - %t1093 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1092, { ptr, i64, i64 } %t1093) - %t1094 = load ptr, ptr %a1 - %t1095 = load { ptr, i64, i64 }, ptr %a317 - %t1096 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1094, { ptr, i64, i64 } %t1095, i64 %t1096) - %t1097 = load ptr, ptr %a1 - %t1098 = load ptr, ptr %a1 - %t1099 = load %S.ast.Type, ptr %a219 - %t1100 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1098, %S.ast.Type %t1099) - %t1101 = load { ptr, i64, i64 }, ptr %a264 - %t1102 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1097, { ptr, i64, i64 } %t1100, { ptr, i64, i64 } %t1101) - store { ptr, i64, i64 } %t1100, ptr %a1103 - call void @finch_str_drop(ptr %a1103) - %t1104 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1102, 0 - %t1105 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1105, ptr %a1106 - call void @finch.copy.S_ast_Type(ptr %a1107, ptr %a1106) - %t1108 = load %S.ast.Type, ptr %a1107 - %t1109 = insertvalue %S.gen.Val %t1104, %S.ast.Type %t1108, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1109 -endif8075: - %t1110 = load ptr, ptr %a1 - %t1111 = load { ptr, i64, i64 }, ptr %a1073 - %t1112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1110, { ptr, i64, i64 } %t1111) - store { ptr, i64, i64 } %t1112, ptr %a1113 - %t1114 = load ptr, ptr %a1 - %t1115 = load { ptr, i64, i64 }, ptr %a317 - %t1116 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1114, { ptr, i64, i64 } %t1115, i64 %t1116) - %t1117 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1118 = getelementptr inbounds %S.gen.Abi, ptr %t1117, i32 0, i32 0 - %t1119 = load { ptr, i64, i64 }, ptr %t1118 - store { ptr, i64, i64 } %t1119, ptr %a1120 - store { ptr, i64, i64 } { ptr @.str.5123, i64 6, i64 0 }, ptr %a1121 - %t1122 = call i32 @finch_str_eq(ptr %a1120, ptr %a1121) - %t1123 = icmp ne i32 %t1122, 0 - br i1 %t1123, label %then8076, label %endif8078 -then8076: - %t1124 = load ptr, ptr %a1 - %t1125 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1124, { ptr, i64, i64 } { ptr @.str.5124, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1125, ptr %a1126 - %t1127 = load ptr, ptr %a1 - %t1128 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1129 = getelementptr inbounds %S.gen.Abi, ptr %t1128, i32 0, i32 2 - %t1130 = load { ptr, i64, i64 }, ptr %t1129 - %t1131 = load { ptr, i64, i64 }, ptr %a1113 - %t1132 = load { ptr, i64, i64 }, ptr %a1126 - call void @finch.gen.store(ptr %t1127, { ptr, i64, i64 } %t1130, { ptr, i64, i64 } %t1131, { ptr, i64, i64 } %t1132) - %t1133 = load ptr, ptr %a1 - %t1134 = load ptr, ptr %a1 - %t1135 = load %S.ast.Type, ptr %a219 - %t1136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1134, %S.ast.Type %t1135) - %t1137 = load { ptr, i64, i64 }, ptr %a1126 - %t1138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1133, { ptr, i64, i64 } %t1136, { ptr, i64, i64 } %t1137) - store { ptr, i64, i64 } %t1136, ptr %a1139 - call void @finch_str_drop(ptr %a1139) - %t1140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1138, 0 - %t1141 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1141, ptr %a1142 - call void @finch.copy.S_ast_Type(ptr %a1143, ptr %a1142) - %t1144 = load %S.ast.Type, ptr %a1143 - %t1145 = insertvalue %S.gen.Val %t1140, %S.ast.Type %t1144, 1 - call void @finch_str_drop(ptr %a1126) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1145 -endif8078: - %t1146 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1147 = load { ptr, i64, i64 }, ptr %t1146 - store { ptr, i64, i64 } %t1147, ptr %a1148 - store { ptr, i64, i64 } { ptr @.str.5125, i64 3, i64 0 }, ptr %a1149 - %t1150 = call i32 @finch_str_eq(ptr %a1148, ptr %a1149) - %t1151 = icmp ne i32 %t1150, 0 - br i1 %t1151, label %then8079, label %endif8081 -then8079: - %t1152 = load ptr, ptr %a1 - %t1153 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1152) - store { ptr, i64, i64 } %t1153, ptr %a1154 - %t1155 = load ptr, ptr %a1 - %t1156 = load { ptr, i64, i64 }, ptr %a1154 - call void @finch.gen.store(ptr %t1155, { ptr, i64, i64 } { ptr @.str.5126, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5127, i64 15, i64 0 }, { ptr, i64, i64 } %t1156) - %t1157 = load ptr, ptr %a1 - %t1158 = load { ptr, i64, i64 }, ptr %a1154 - store { ptr, i64, i64 } { ptr @.str.5128, i64 32, i64 0 }, ptr %a1160 - store { ptr, i64, i64 } %t1158, ptr %a1161 - call void @finch_str_concat(ptr %a1159, ptr %a1160, ptr %a1161) - %t1162 = load { ptr, i64, i64 }, ptr %a1159 - store { ptr, i64, i64 } %t1162, ptr %a1164 - store { ptr, i64, i64 } { ptr @.str.5129, i64 6, i64 0 }, ptr %a1165 - call void @finch_str_concat(ptr %a1163, ptr %a1164, ptr %a1165) - store { ptr, i64, i64 } %t1162, ptr %a1166 - call void @finch_str_drop(ptr %a1166) - %t1167 = load { ptr, i64, i64 }, ptr %a1163 - %t1168 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1167, ptr %a1170 - store { ptr, i64, i64 } %t1168, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1167, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - store { ptr, i64, i64 } %t1173, ptr %a1175 - store { ptr, i64, i64 } { ptr @.str.5130, i64 1, i64 0 }, ptr %a1176 - call void @finch_str_concat(ptr %a1174, ptr %a1175, ptr %a1176) - store { ptr, i64, i64 } %t1173, ptr %a1177 - call void @finch_str_drop(ptr %a1177) - %t1178 = load { ptr, i64, i64 }, ptr %a1174 - call void @finch.gen.emit(ptr %t1157, { ptr, i64, i64 } %t1178) - store { ptr, i64, i64 } %t1178, ptr %a1179 - call void @finch_str_drop(ptr %a1179) - %t1180 = load ptr, ptr %a1 - %t1181 = load { ptr, i64, i64 }, ptr %a1154 - %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.5131, i64 17, i64 0 }, { ptr, i64, i64 } %t1181) - %t1183 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1182, 0 - %t1184 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1184, ptr %a1185 - call void @finch.copy.S_ast_Type(ptr %a1186, ptr %a1185) - %t1187 = load %S.ast.Type, ptr %a1186 - %t1188 = insertvalue %S.gen.Val %t1183, %S.ast.Type %t1187, 1 - call void @finch_str_drop(ptr %a1154) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1188 -endif8081: - %t1189 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1189, ptr %a1190 - call void @finch_str_copy(ptr %a1191, ptr %a1190) - %t1192 = load { ptr, i64, i64 }, ptr %a1191 - %t1193 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1192, 0 - %t1194 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1194, ptr %a1195 - call void @finch.copy.S_ast_Type(ptr %a1196, ptr %a1195) - %t1197 = load %S.ast.Type, ptr %a1196 - %t1198 = insertvalue %S.gen.Val %t1193, %S.ast.Type %t1197, 1 - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1198 -} - -define internal void @finch.gen.releaseAll(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca i64, align 16 - %a4 = alloca i64, align 16 - %a12 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store i64 0, ptr %a4 - br label %each.cond8082 -each.cond8082: - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t6 = load i64, ptr %t5 - %t7 = load i64, ptr %a4 - %t8 = icmp slt i64 %t7, %t6 - br i1 %t8, label %each.body8083, label %each.end8085 -each.body8083: - %t9 = load ptr, ptr %a2 - %t10 = getelementptr inbounds %S.gen.Val, ptr %t9, i64 %t7 - %t11 = load %S.gen.Val, ptr %t10 - store %S.gen.Val %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = load %S.gen.Val, ptr %a12 - call void @finch.gen.release(ptr %t13, %S.gen.Val %t14) - br label %each.step8084 -each.step8084: - %t15 = load i64, ptr %a4 - %t16 = add i64 %t15, 1 - store i64 %t16, ptr %a4 - br label %each.cond8082 -each.end8085: - %t17 = load ptr, ptr %a1 - %t18 = load i64, ptr %a3 - call void @finch.gen.heldEnd(ptr %t17, i64 %t18) - ret void -} - -define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { -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.5132, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5133, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5134, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5135, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5136, 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.cond8086 -find.cond8086: - %t19 = load i64, ptr %a18 - %t20 = icmp slt i64 %t19, %t16 - br i1 %t20, label %find.body8087, label %find.end8090 -find.body8087: - %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.hit8088, label %find.next8089 -find.hit8088: - store i64 %t19, ptr %a15 - br label %find.end8090 -find.next8089: - %t27 = add i64 %t19, 1 - store i64 %t27, ptr %a18 - br label %find.cond8086 -find.end8090: - %t28 = load i64, ptr %a15 - %t29 = icmp sge i64 %t28, 0 - call void @finch.drop.arr_str(ptr %a12) - 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 - %a93 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.5137, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5138, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5139, i64 7, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5140, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5141, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.5142, i64 7, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.5143, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.5144, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.5145, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.5146, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.5147, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.5148, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.5149, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.5150, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.5151, i64 5, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.5152, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.5153, i64 4, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.5154, i64 6, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.5155, i64 6, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.5156, i64 6, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.5157, i64 4, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.5158, i64 5, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.5159, 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.5160, i64 7, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 - store { ptr, i64, i64 } { ptr @.str.5161, i64 7, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 - store { ptr, i64, i64 } { ptr @.str.5162, i64 7, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3 - store { ptr, i64, i64 } { ptr @.str.5163, i64 7, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 - store { ptr, i64, i64 } { ptr @.str.5164, i64 7, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 - store { ptr, i64, i64 } { ptr @.str.5165, i64 7, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6 - store { ptr, i64, i64 } { ptr @.str.5166, i64 6, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 - store { ptr, i64, i64 } { ptr @.str.5167, i64 6, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 - store { ptr, i64, i64 } { ptr @.str.5168, i64 6, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9 - store { ptr, i64, i64 } { ptr @.str.5169, i64 6, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 - store { ptr, i64, i64 } { ptr @.str.5170, i64 6, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 - store { ptr, i64, i64 } { ptr @.str.5171, i64 6, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12 - store { ptr, i64, i64 } { ptr @.str.5172, i64 8, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 - store { ptr, i64, i64 } { ptr @.str.5173, i64 8, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 - store { ptr, i64, i64 } { ptr @.str.5174, i64 8, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15 - store { ptr, i64, i64 } { ptr @.str.5175, i64 8, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 - store { ptr, i64, i64 } { ptr @.str.5176, i64 8, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 - store { ptr, i64, i64 } { ptr @.str.5177, i64 8, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18 - store { ptr, i64, i64 } { ptr @.str.5178, i64 8, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 - store { ptr, i64, i64 } { ptr @.str.5179, i64 8, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 - store { ptr, i64, i64 } { ptr @.str.5180, i64 6, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21 - store { ptr, i64, i64 } { ptr @.str.5181, i64 8, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 - store { ptr, i64, i64 } { ptr @.str.5182, 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.cond8091 -find.cond8091: - %t66 = load i64, ptr %a65 - %t67 = icmp slt i64 %t66, %t63 - br i1 %t67, label %find.body8092, label %find.end8095 -find.body8092: - %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.hit8093, label %find.next8094 -find.hit8093: - store i64 %t66, ptr %a62 - br label %find.end8095 -find.next8094: - %t74 = add i64 %t66, 1 - store i64 %t74, ptr %a65 - br label %find.cond8091 -find.end8095: - %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 %then8096, label %endif8098 -then8096: - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.5183, i64 0, i64 0 } -endif8098: - %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 %range8099, label %inrange8100 -range8099: - call void @finch_panic_index(ptr @.str.5185, i64 4830, i64 %t79, i64 %t81) - unreachable -inrange8100: - %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.5184, 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.5186, i64 14, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t94 -} - -define internal void @finch.drop.S_docs_Doc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_docs_Doc(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond8110 -n.cond8110: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body8111, label %n.end8112 -n.body8111: - %t7 = getelementptr inbounds %S.docs.Doc, ptr %t1, i64 %t5 - call void @finch.drop.S_docs_Doc(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond8110 -n.end8112: - call void @finch_arr_free(ptr %a) - ret void -} - -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 { ptr, i64, i64 }, align 16 - %a20 = alloca %S.docs.Doc, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca %S.ast.Node, align 16 - %a110 = alloca %S.ast.Node, align 16 - %a112 = alloca %S.ast.Node, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca i64, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.gen.Place, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca %S.gen.Val, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i1, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca %S.ast.Type, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca %S.gen.Val, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %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 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a779 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca %S.gen.Val, align 16 - %a832 = alloca i64, align 16 - %a844 = alloca %S.gen.Val, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a885 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca { ptr, i64, i64 }, align 16 - %a891 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a900 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a915 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca { ptr, i64, i64 }, align 16 - %a919 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a932 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a945 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a956 = alloca { ptr, i64, i64 }, align 16 - %a957 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a972 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca %S.gen.Val, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1011 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1022 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1028 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1080 = alloca { ptr, i64, i64 }, align 16 - %a1081 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca %S.ast.Type, align 16 - %a1108 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1112 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1114 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1118 = alloca { ptr, i64, i64 }, align 16 - %a1119 = alloca { ptr, i64, i64 }, align 16 - %a1123 = alloca %S.ast.Type, align 16 - %a1128 = alloca { ptr, i64, i64 }, align 16 - %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1130 = alloca { ptr, i64, i64 }, align 16 - %a1132 = alloca { ptr, i64, i64 }, align 16 - %a1133 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1143 = alloca { ptr, i64, i64 }, align 16 - %a1144 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1178 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1180 = alloca { ptr, i64, i64 }, align 16 - %a1181 = alloca { ptr, i64, i64 }, align 16 - %a1183 = alloca { ptr, i64, i64 }, align 16 - %a1184 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca { ptr, i64, i64 }, align 16 - %a1188 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca { ptr, i64, i64 }, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca { ptr, i64, i64 }, align 16 - %a1196 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1198 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca %S.ast.Type, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1217 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1243 = alloca %S.gen.Val, align 16 - %a1244 = alloca %S.ast.Type, align 16 - %a1245 = alloca %S.gen.Val, align 16 - %a1249 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1253 = alloca { ptr, i64, i64 }, align 16 - %a1254 = alloca { ptr, i64, i64 }, align 16 - %a1255 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1259 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1270 = alloca { ptr, i64, i64 }, align 16 - %a1271 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca %S.gen.Val, align 16 - %a1303 = alloca %S.gen.Val, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1309 = alloca { ptr, i64, i64 }, align 16 - %a1310 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1313 = alloca { ptr, i64, i64 }, align 16 - %a1314 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1316 = alloca { ptr, i64, i64 }, align 16 - %a1321 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1327 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1332 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1359 = alloca %S.gen.Val, align 16 - %a1365 = alloca { ptr, i64, i64 }, align 16 - %a1366 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1370 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1376 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1387 = alloca { ptr, i64, i64 }, align 16 - %a1388 = alloca { ptr, i64, i64 }, align 16 - %a1390 = alloca { ptr, i64, i64 }, align 16 - %a1391 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca %S.gen.Val, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1452 = alloca { ptr, i64, i64 }, align 16 - %a1457 = alloca { ptr, i64, i64 }, align 16 - %a1458 = alloca { ptr, i64, i64 }, align 16 - %a1459 = alloca { ptr, i64, i64 }, align 16 - %a1461 = alloca { ptr, i64, i64 }, align 16 - %a1462 = alloca { ptr, i64, i64 }, align 16 - %a1463 = alloca { ptr, i64, i64 }, align 16 - %a1464 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca { ptr, i64, i64 }, align 16 - %a1470 = alloca { ptr, i64, i64 }, align 16 - %a1491 = alloca { ptr, i64, i64 }, align 16 - %a1492 = alloca { ptr, i64, i64 }, align 16 - %a1493 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1497 = alloca { ptr, i64, i64 }, align 16 - %a1498 = alloca { ptr, i64, i64 }, align 16 - %a1500 = alloca { ptr, i64, i64 }, align 16 - %a1510 = alloca i64, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1525 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1530 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca i64, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1577 = alloca { ptr, i64, i64 }, align 16 - %a1578 = alloca { ptr, i64, i64 }, align 16 - %a1579 = alloca { ptr, i64, i64 }, align 16 - %a1580 = alloca { ptr, i64, i64 }, align 16 - %a1582 = alloca { ptr, i64, i64 }, align 16 - %a1583 = alloca { ptr, i64, i64 }, align 16 - %a1584 = alloca { ptr, i64, i64 }, align 16 - %a1585 = alloca { ptr, i64, i64 }, align 16 - %a1587 = alloca { ptr, i64, i64 }, align 16 - %a1588 = alloca { ptr, i64, i64 }, align 16 - %a1591 = alloca i64, align 16 - %a1599 = alloca %S.ast.Type, align 16 - %a1620 = alloca %S.ast.Type, align 16 - %a1641 = alloca i64, align 16 - %a1654 = alloca %S.gen.StructDef, align 16 - %a1655 = alloca %S.gen.StructDef, align 16 - %a1657 = alloca %S.gen.StructDef, align 16 - %a1685 = alloca %S.ast.Node, align 16 - %a1686 = alloca %S.ast.Node, align 16 - %a1688 = alloca %S.ast.Node, align 16 - %a1697 = alloca { ptr, i64, i64 }, align 16 - %a1698 = alloca { ptr, i64, i64 }, align 16 - %a1699 = alloca { ptr, i64, i64 }, align 16 - %a1701 = alloca { ptr, i64, i64 }, align 16 - %a1702 = alloca { ptr, i64, i64 }, align 16 - %a1703 = alloca { ptr, i64, i64 }, align 16 - %a1704 = alloca { ptr, i64, i64 }, align 16 - %a1708 = alloca { ptr, i64, i64 }, align 16 - %a1709 = alloca { ptr, i64, i64 }, align 16 - %a1711 = alloca { ptr, i64, i64 }, align 16 - %a1712 = alloca { ptr, i64, i64 }, align 16 - %a1713 = alloca { ptr, i64, i64 }, align 16 - %a1714 = alloca { ptr, i64, i64 }, align 16 - %a1715 = alloca { ptr, i64, i64 }, align 16 - %a1717 = alloca { ptr, i64, i64 }, align 16 - %a1718 = alloca { ptr, i64, i64 }, align 16 - %a1719 = alloca { ptr, i64, i64 }, align 16 - %a1720 = alloca { ptr, i64, i64 }, align 16 - %a1737 = alloca { ptr, i64, i64 }, align 16 - %a1753 = alloca i64, align 16 - %a1765 = alloca { ptr, i64, i64 }, align 16 - %a1775 = alloca { ptr, i64, i64 }, align 16 - %a1778 = alloca { ptr, i64, i64 }, align 16 - %a1779 = alloca { ptr, i64, i64 }, align 16 - %a1806 = alloca { ptr, i64, i64 }, align 16 - %a1807 = alloca { ptr, i64, i64 }, align 16 - %a1808 = alloca { ptr, i64, i64 }, align 16 - %a1810 = alloca { ptr, i64, i64 }, align 16 - %a1811 = alloca { ptr, i64, i64 }, align 16 - %a1812 = alloca { ptr, i64, i64 }, align 16 - %a1813 = alloca { ptr, i64, i64 }, align 16 - %a1815 = alloca { ptr, i64, i64 }, align 16 - %a1819 = alloca { ptr, i64, i64 }, align 16 - %a1820 = alloca { ptr, i64, i64 }, align 16 - %a1821 = alloca { ptr, i64, i64 }, align 16 - %a1823 = alloca { ptr, i64, i64 }, align 16 - %a1824 = alloca { ptr, i64, i64 }, align 16 - %a1825 = alloca { ptr, i64, i64 }, align 16 - %a1826 = alloca { ptr, i64, i64 }, align 16 - %a1830 = alloca { ptr, i64, i64 }, align 16 - %a1831 = alloca { ptr, i64, i64 }, align 16 - %a1832 = alloca { ptr, i64, i64 }, align 16 - %a1833 = alloca { ptr, i64, i64 }, align 16 - %a1834 = alloca { ptr, i64, i64 }, align 16 - %a1836 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 %panic8101, label %ok8102 -panic8101: - call void @finch_panic(ptr @.str.5187, i64 4835, ptr @.str.5188) - unreachable -ok8102: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - br label %logic.from8103 -logic.from8103: - br i1 %t12, label %logic.rhs8104, label %logic.end8105 -logic.rhs8104: - %t13 = load { ptr, i64, i64 }, ptr %a8 - %t14 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t13) - br label %logic.rend8106 -logic.rend8106: - br label %logic.end8105 -logic.end8105: - %t15 = phi i1 [ false, %logic.from8103 ], [ %t14, %logic.rend8106 ] - br i1 %t15, label %then8107, label %endif8109 -then8107: - %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 { ptr, i64, i64 } %t16, ptr %a19 - call void @finch.drop.arr_S_docs_Doc(ptr %a19) - store %S.docs.Doc %t18, ptr %a20 - %t21 = getelementptr inbounds %S.docs.Doc, ptr %a20, i32 0, i32 0 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = icmp sgt i64 %t23, 0 - br i1 %t24, label %then8113, label %endif8115 -then8113: - %t25 = load ptr, ptr %a1 - %t26 = load %S.ast.Node, ptr %a2 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t28 = load i64, ptr %t27 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = load %S.docs.Doc, ptr %a20 - %t32 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t31) - call void @finch.gen.noteRef(ptr %t25, %S.ast.Node %t26, i64 %t28, i64 %t30, { ptr, i64, i64 } %t32, { ptr, i64, i64 } { ptr @.str.5189, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif8115 -endif8115: - call void @finch.drop.S_docs_Doc(ptr %a20) - br label %endif8109 -endif8109: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.5190, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then8116, label %endif8118 -then8116: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.5191, i64 86, i64 0 }) - br label %endif8118 -endif8118: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5192, i64 5, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then8119, label %endif8121 -then8119: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load i64, ptr %t47 - store i64 0, ptr %a49 - br label %for.cond8122 -for.cond8122: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t48 - br i1 %t51, label %for.body8123, label %for.end8125 -for.body8123: - %t52 = load ptr, ptr %a1 - %t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t54 = load i64, ptr %a49 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range8126, label %inrange8127 -range8126: - call void @finch_panic_index(ptr @.str.5193, i64 4846, i64 %t54, i64 %t56) - unreachable -inrange8127: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t52, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t64 = getelementptr inbounds %S.ast.Type, ptr %t63, i32 0, i32 0 - %t65 = load { ptr, i64, i64 }, ptr %t64 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.5194, i64 4, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br i1 %t69, label %then8128, label %endif8130 -then8128: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t72 = load i64, ptr %a49 - %t73 = load { ptr, i64, i64 }, ptr %t71 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range8131, label %inrange8132 -range8131: - call void @finch_panic_index(ptr @.str.5195, i64 4848, i64 %t72, i64 %t74) - unreachable -inrange8132: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 %t72 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5196, i64 53, i64 0 }) - br label %endif8130 -endif8130: - %t79 = load i64, ptr %a49 - %t80 = icmp sgt i64 %t79, 0 - br i1 %t80, label %then8133, label %endif8135 -then8133: - %t81 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t81, { ptr, i64, i64 } { ptr @.str.5197, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5198, i64 0, i64 0 }) - br label %endif8135 -endif8135: - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - call void @finch.gen.emitPrint(ptr %t82, { ptr, i64, i64 } %t84, %S.ast.Type %t86, i1 false) - %t87 = load ptr, ptr %a1 - %t88 = load %S.gen.Val, ptr %a62 - call void @finch.gen.release(ptr %t87, %S.gen.Val %t88) - call void @finch.drop.S_gen_Val(ptr %a62) - br label %for.step8124 -for.step8124: - %t89 = load i64, ptr %a49 - %t90 = add i64 %t89, 1 - store i64 %t90, ptr %a49 - br label %for.cond8122 -for.end8125: - %t91 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t91, { ptr, i64, i64 } { ptr @.str.5199, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5200, i64 0, i64 0 }) - %t92 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5201, i64 4, i64 0 }) - %t93 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t92, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t93 -endif8121: - %t94 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5202, i64 4, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then8136, label %endif8138 -then8136: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t99, %S.ast.Node %t100, i64 0, i64 1, { ptr, i64, i64 } %t101) - %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t103 = load { ptr, i64, i64 }, ptr %t102 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 0, %t104 - br i1 %t105, label %range8139, label %inrange8140 -range8139: - call void @finch_panic_index(ptr @.str.5203, i64 4861, i64 0, i64 %t104) - unreachable -inrange8140: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 0 - %t108 = load %S.ast.Node, ptr %t107 - store %S.ast.Node %t108, ptr %a109 - call void @finch.copy.S_ast_Node(ptr %a110, ptr %a109) - %t111 = load %S.ast.Node, ptr %a110 - store %S.ast.Node %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.5204, i64 3, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from8141 -logic.from8141: - br i1 %t118, label %logic.rhs8142, label %logic.end8143 -logic.rhs8142: - %t119 = load ptr, ptr %a1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = call i64 @finch.gen.lookup(ptr %t119, { ptr, i64, i64 } %t121) - %t123 = icmp slt i64 %t122, 0 - br label %logic.rend8144 -logic.rend8144: - br label %logic.end8143 -logic.end8143: - %t124 = phi i1 [ false, %logic.from8141 ], [ %t123, %logic.rend8144 ] - br i1 %t124, label %then8145, label %endif8147 -then8145: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = icmp eq ptr %t126, null - br i1 %t127, label %panic8148, label %ok8149 -panic8148: - call void @finch_panic(ptr @.str.5205, i64 4863, ptr @.str.5206) - unreachable -ok8149: - %t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 14 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call i64 @finch.gen.findFn(ptr %t125, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t131) - store i64 %t132, ptr %a133 - %t134 = load i64, ptr %a133 - %t135 = icmp sge i64 %t134, 0 - br i1 %t135, label %then8150, label %endif8152 -then8150: - %t136 = load ptr, ptr %a1 - %t137 = load i64, ptr %a133 - %t138 = load %S.ast.Node, ptr %a112 - %t139 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t136, i64 %t137, %S.ast.Node %t138) - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5207, i64 3, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif8152: - br label %endif8147 -endif8147: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5208, i64 3, i64 0 }, ptr %a146 - %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) - %t148 = icmp eq i32 %t147, 0 - br label %logic.from8153 -logic.from8153: - br i1 %t148, label %logic.rhs8154, label %logic.end8155 -logic.rhs8154: - %t149 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5209, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp eq i32 %t153, 0 - br label %logic.rend8156 -logic.rend8156: - br label %logic.end8155 -logic.end8155: - %t155 = phi i1 [ false, %logic.from8153 ], [ %t154, %logic.rend8156 ] - br label %logic.from8157 -logic.from8157: - br i1 %t155, label %logic.rhs8158, label %logic.end8159 -logic.rhs8158: - %t156 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.5210, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br label %logic.rend8160 -logic.rend8160: - br label %logic.end8159 -logic.end8159: - %t162 = phi i1 [ false, %logic.from8157 ], [ %t161, %logic.rend8160 ] - br i1 %t162, label %then8161, label %endif8163 -then8161: - %t163 = load ptr, ptr %a1 - %t164 = load %S.ast.Node, ptr %a112 - call void @finch.gen.fail(ptr %t163, %S.ast.Node %t164, { ptr, i64, i64 } { ptr @.str.5211, i64 63, i64 0 }) - br label %endif8163 -endif8163: - %t165 = load ptr, ptr %a1 - %t166 = load %S.ast.Node, ptr %a112 - %t167 = call %S.gen.Place @finch.gen.place(ptr %t165, %S.ast.Node %t166, i1 true) - store %S.gen.Place %t167, ptr %a168 - %t169 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - %t174 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t173, 0 - %t175 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t176) - %t178 = insertvalue %S.gen.Val %t174, %S.ast.Type %t177, 1 - call void @finch.drop.S_gen_Place(ptr %a168) - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t178 -endif8138: - %t179 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5212, i64 3, i64 0 }, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then8164, label %endif8166 -then8164: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a2 - %t186 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t184, %S.ast.Node %t185, i64 0, i64 1, { ptr, i64, i64 } %t186) - %t187 = load ptr, ptr %a1 - %t188 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 0, %t190 - br i1 %t191, label %range8167, label %inrange8168 -range8167: - call void @finch_panic_index(ptr @.str.5213, i64 4876, i64 0, i64 %t190) - unreachable -inrange8168: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Node, ptr %t192, i64 0 - %t194 = load %S.ast.Node, ptr %t193 - %t195 = call %S.gen.Val @finch.gen.expr(ptr %t187, %S.ast.Node %t194) - store %S.gen.Val %t195, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - call void @finch_str_copy(ptr %a204, ptr %a203) - %t205 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t205, ptr %a206 - store i1 false, ptr %a207 - %t208 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5214, i64 3, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then8169, label %else8170 -then8169: - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a196 - %t215 = call { ptr, i64, i64 } @finch.gen.own(ptr %t213, %S.gen.Val %t214) - %t216 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t217 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t218 = load %S.ast.Type, ptr %t217 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Val %t216, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Val %t222, i1 true, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -else8170: - %t224 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t225 = load %S.ast.Type, ptr %t224 - %t226 = call i1 @finch.gen.isSigned(%S.ast.Type %t225) - br i1 %t226, label %then8172, label %else8173 -then8172: - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5215, i64 34, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.5216, i64 6, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t242 = load %S.ast.Type, ptr %t241 - %t243 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5217, i64 3, i64 0 }) - %t244 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t238, { ptr, i64, i64 } %t240, %S.ast.Type %t242, %S.ast.Type %t243) - store %S.ast.Type %t243, ptr %a245 - call void @finch.drop.S_ast_Type(ptr %a245) - store { ptr, i64, i64 } %t237, ptr %a247 - store { ptr, i64, i64 } %t244, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t237, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t244, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.5218, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t227, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif8174 -else8173: - %t258 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t259 = load %S.ast.Type, ptr %t258 - %t260 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t259) - br i1 %t260, label %then8175, label %else8176 -then8175: - %t261 = load ptr, ptr %a1 - %t262 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5219, i64 35, i64 0 }, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5220, i64 6, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t274 = load { ptr, i64, i64 }, ptr %t273 - %t275 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t276 = load %S.ast.Type, ptr %t275 - %t277 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5221, i64 3, i64 0 }) - %t278 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t272, { ptr, i64, i64 } %t274, %S.ast.Type %t276, %S.ast.Type %t277) - store %S.ast.Type %t277, ptr %a279 - call void @finch.drop.S_ast_Type(ptr %a279) - store { ptr, i64, i64 } %t271, ptr %a281 - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t271, ptr %a283 - call void @finch_str_drop(ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a280 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5222, i64 1, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.emit(ptr %t261, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif8177 -else8176: - %t292 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t293 = load %S.ast.Type, ptr %t292 - %t294 = call i1 @finch.gen.isFloat(%S.ast.Type %t293) - br i1 %t294, label %then8178, label %else8179 -then8178: - %t295 = load ptr, ptr %a1 - %t296 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5223, i64 36, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t300, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.5224, i64 9, i64 0 }, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a301 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5225, i64 5, i64 0 }) - %t312 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t306, { ptr, i64, i64 } %t308, %S.ast.Type %t310, %S.ast.Type %t311) - store %S.ast.Type %t311, ptr %a313 - call void @finch.drop.S_ast_Type(ptr %a313) - store { ptr, i64, i64 } %t305, ptr %a315 - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t305, ptr %a317 - call void @finch_str_drop(ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.5226, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - call void @finch.gen.emit(ptr %t295, { ptr, i64, i64 } %t324) - store { ptr, i64, i64 } %t324, ptr %a325 - call void @finch_str_drop(ptr %a325) - br label %endif8180 -else8179: - %t326 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t326, ptr %a327 - store { ptr, i64, i64 } { ptr @.str.5227, i64 4, i64 0 }, ptr %a328 - %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) - %t330 = icmp ne i32 %t329, 0 - br i1 %t330, label %then8181, label %else8182 -then8181: - %t331 = load ptr, ptr %a1 - %t332 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5228, i64 35, i64 0 }, ptr %a334 - store { ptr, i64, i64 } %t332, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a333 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.5229, i64 13, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t341, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t341, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.5230, i64 1, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - call void @finch.gen.emit(ptr %t331, { ptr, i64, i64 } %t353) - store { ptr, i64, i64 } %t353, ptr %a354 - call void @finch_str_drop(ptr %a354) - br label %endif8183 -else8182: - %t355 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t355, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5231, i64 4, i64 0 }, ptr %a357 - %t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357) - %t359 = icmp ne i32 %t358, 0 - br i1 %t359, label %then8184, label %else8185 -then8184: - %t360 = load ptr, ptr %a1 - %t361 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - store { ptr, i64, i64 } { ptr @.str.5232, i64 8, i64 0 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t366, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.5233, i64 7, i64 0 }, ptr %a369 - call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369) - store { ptr, i64, i64 } %t366, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a367 - %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t360, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a373 - call void @finch_str_drop(ptr %a373) - store { ptr, i64, i64 } %t372, ptr %a374 - %t375 = load ptr, ptr %a1 - %t376 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5234, i64 35, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - %t380 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t380, ptr %a382 - store { ptr, i64, i64 } { ptr @.str.5235, i64 6, i64 0 }, ptr %a383 - call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) - store { ptr, i64, i64 } %t380, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a381 - %t386 = load { ptr, i64, i64 }, ptr %a374 - store { ptr, i64, i64 } %t385, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - store { ptr, i64, i64 } %t385, ptr %a390 - call void @finch_str_drop(ptr %a390) - %t391 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.5236, i64 1, i64 0 }, ptr %a394 - call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) - store { ptr, i64, i64 } %t391, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a392 - call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t396) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a374) - br label %endif8186 -else8185: - %t398 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t398, ptr %a399 - store { ptr, i64, i64 } { ptr @.str.5237, i64 3, i64 0 }, ptr %a400 - %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) - %t402 = icmp ne i32 %t401, 0 - br i1 %t402, label %then8187, label %else8188 -then8187: - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t403, { ptr, i64, i64 } { ptr @.str.5238, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5239, i64 15, i64 0 }, { ptr, i64, i64 } %t404) - %t405 = load ptr, ptr %a1 - %t406 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5240, i64 32, i64 0 }, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5241, i64 6, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - %t416 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t417 = load { ptr, i64, i64 }, ptr %t416 - store { ptr, i64, i64 } %t415, ptr %a419 - store { ptr, i64, i64 } %t417, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t415, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - store { ptr, i64, i64 } %t422, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.5242, i64 1, i64 0 }, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - call void @finch.gen.emit(ptr %t405, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_drop(ptr %a428) - store i1 true, ptr %a207 - br label %endif8189 -else8188: - %t429 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.5243, i64 5, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.from8190 -logic.from8190: - br i1 %t433, label %logic.rhs8191, label %logic.end8192 -logic.rhs8191: - %t434 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t435 = getelementptr inbounds %S.ast.Type, ptr %t434, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 0, %t437 - br i1 %t438, label %range8193, label %inrange8194 -range8193: - call void @finch_panic_index(ptr @.str.5244, i64 4898, i64 0, i64 %t437) - unreachable -inrange8194: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds %S.ast.Type, ptr %t439, i64 0 - %t441 = getelementptr inbounds %S.ast.Type, ptr %t440, i32 0, i32 0 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } { ptr @.str.5245, i64 2, i64 0 }, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br label %logic.from8195 -logic.from8195: - br i1 %t446, label %logic.end8197, label %logic.rhs8196 -logic.rhs8196: - %t447 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t448 = getelementptr inbounds %S.ast.Type, ptr %t447, i32 0, i32 1 - %t449 = load { ptr, i64, i64 }, ptr %t448 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 0, %t450 - br i1 %t451, label %range8198, label %inrange8199 -range8198: - call void @finch_panic_index(ptr @.str.5246, i64 4898, i64 0, i64 %t450) - unreachable -inrange8199: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %t452, i64 0 - %t454 = getelementptr inbounds %S.ast.Type, ptr %t453, i32 0, i32 0 - %t455 = load { ptr, i64, i64 }, ptr %t454 - store { ptr, i64, i64 } %t455, ptr %a456 - store { ptr, i64, i64 } { ptr @.str.5247, i64 4, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend8200 -logic.rend8200: - br label %logic.end8197 -logic.end8197: - %t460 = phi i1 [ true, %logic.from8195 ], [ %t459, %logic.rend8200 ] - br label %logic.rend8201 -logic.rend8201: - br label %logic.end8192 -logic.end8192: - %t461 = phi i1 [ false, %logic.from8190 ], [ %t460, %logic.rend8201 ] - br i1 %t461, label %then8202, label %else8203 -then8202: - %t462 = load ptr, ptr %a1 - %t463 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t462, { ptr, i64, i64 } { ptr @.str.5248, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5249, i64 15, i64 0 }, { ptr, i64, i64 } %t463) - %t464 = load ptr, ptr %a1 - %t465 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5250, i64 36, i64 0 }, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - %t469 = load { ptr, i64, i64 }, ptr %a466 - store { ptr, i64, i64 } %t469, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.5251, i64 6, i64 0 }, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - store { ptr, i64, i64 } %t469, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a470 - %t475 = load ptr, ptr %a1 - %t476 = load %S.gen.Val, ptr %a196 - %t477 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t475, %S.gen.Val %t476) - store { ptr, i64, i64 } %t474, ptr %a479 - store { ptr, i64, i64 } %t477, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t474, ptr %a481 - call void @finch_str_drop(ptr %a481) - store { ptr, i64, i64 } %t477, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = load { ptr, i64, i64 }, ptr %a478 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - store { ptr, i64, i64 } %t483, ptr %a487 - call void @finch_str_drop(ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a484 - call void @finch.gen.emit(ptr %t464, { ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t488, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load ptr, ptr %a1 - %t491 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t490, %S.gen.Val %t491) - br label %endif8204 -else8203: - %t492 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t492, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.5253, i64 4, i64 0 }, ptr %a494 - %t495 = call i32 @finch_str_eq(ptr %a493, ptr %a494) - %t496 = icmp ne i32 %t495, 0 - br label %logic.from8205 -logic.from8205: - br i1 %t496, label %logic.end8207, label %logic.rhs8206 -logic.rhs8206: - %t497 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t497, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5254, i64 4, i64 0 }, ptr %a499 - %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) - %t501 = icmp ne i32 %t500, 0 - br label %logic.rend8208 -logic.rend8208: - br label %logic.end8207 -logic.end8207: - %t502 = phi i1 [ true, %logic.from8205 ], [ %t501, %logic.rend8208 ] - br label %logic.from8209 -logic.from8209: - br i1 %t502, label %logic.end8211, label %logic.rhs8210 -logic.rhs8210: - %t503 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t503, ptr %a504 - store { ptr, i64, i64 } { ptr @.str.5255, i64 5, i64 0 }, ptr %a505 - %t506 = call i32 @finch_str_eq(ptr %a504, ptr %a505) - %t507 = icmp ne i32 %t506, 0 - br label %logic.rend8212 -logic.rend8212: - br label %logic.end8211 -logic.end8211: - %t508 = phi i1 [ true, %logic.from8209 ], [ %t507, %logic.rend8212 ] - br label %logic.from8213 -logic.from8213: - br i1 %t508, label %logic.end8215, label %logic.rhs8214 -logic.rhs8214: - %t509 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.5256, i64 3, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.rend8216 -logic.rend8216: - br label %logic.end8215 -logic.end8215: - %t514 = phi i1 [ true, %logic.from8213 ], [ %t513, %logic.rend8216 ] - br label %logic.from8217 -logic.from8217: - br i1 %t514, label %logic.end8219, label %logic.rhs8218 -logic.rhs8218: - %t515 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t515, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.5257, i64 6, i64 0 }, ptr %a517 - %t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517) - %t519 = icmp ne i32 %t518, 0 - br label %logic.rend8220 -logic.rend8220: - br label %logic.end8219 -logic.end8219: - %t520 = phi i1 [ true, %logic.from8217 ], [ %t519, %logic.rend8220 ] - br label %logic.from8221 -logic.from8221: - br i1 %t520, label %logic.end8223, label %logic.rhs8222 -logic.rhs8222: - %t521 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5258, i64 4, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8224 -logic.rend8224: - br label %logic.end8223 -logic.end8223: - %t526 = phi i1 [ true, %logic.from8221 ], [ %t525, %logic.rend8224 ] - br i1 %t526, label %then8225, label %else8226 -then8225: - %t527 = load ptr, ptr %a1 - %t528 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t527, { ptr, i64, i64 } { ptr @.str.5259, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5260, i64 15, i64 0 }, { ptr, i64, i64 } %t528) - %t529 = load ptr, ptr %a1 - %t530 = load { ptr, i64, i64 }, ptr %a199 - %t531 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t532 = load { ptr, i64, i64 }, ptr %t531 - %t533 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t534 = load %S.ast.Type, ptr %t533 - call void @finch.gen.emitFormat(ptr %t529, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t532, %S.ast.Type %t534, i1 false) - %t535 = load ptr, ptr %a1 - %t536 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t535, %S.gen.Val %t536) - br label %endif8227 -else8226: - %t537 = load ptr, ptr %a1 - %t538 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = extractvalue { ptr, i64, i64 } %t539, 1 - %t541 = icmp uge i64 0, %t540 - br i1 %t541, label %range8228, label %inrange8229 -range8228: - call void @finch_panic_index(ptr @.str.5261, i64 4908, i64 0, i64 %t540) - unreachable -inrange8229: - %t542 = extractvalue { ptr, i64, i64 } %t539, 0 - %t543 = getelementptr inbounds %S.ast.Node, ptr %t542, i64 0 - %t544 = load %S.ast.Node, ptr %t543 - %t545 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t546 = load %S.ast.Type, ptr %t545 - %t547 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t546) - store { ptr, i64, i64 } { ptr @.str.5262, i64 11, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t547, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.5263, i64 9, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - call void @finch.gen.fail(ptr %t537, %S.ast.Node %t544, { ptr, i64, i64 } %t557) - store { ptr, i64, i64 } %t557, ptr %a558 - call void @finch_str_drop(ptr %a558) - br label %endif8227 -endif8227: - br label %endif8204 -endif8204: - br label %endif8189 -endif8189: - br label %endif8186 -endif8186: - br label %endif8183 -endif8183: - br label %endif8180 -endif8180: - br label %endif8177 -endif8177: - br label %endif8174 -endif8174: - br label %endif8171 -endif8171: - %t559 = load ptr, ptr %a1 - %t560 = load { ptr, i64, i64 }, ptr %a199 - %t561 = call { ptr, i64, i64 } @finch.gen.load(ptr %t559, { ptr, i64, i64 } { ptr @.str.5264, i64 17, i64 0 }, { ptr, i64, i64 } %t560) - %t562 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t561, 0 - %t563 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5265, i64 3, i64 0 }) - %t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1 - %t565 = load i1, ptr %a207 - %t566 = xor i1 %t565, true - %t567 = insertvalue %S.gen.Val %t564, i1 %t566, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t567 -endif8166: - %t568 = load { ptr, i64, i64 }, ptr %a8 - %t569 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t568) - store { ptr, i64, i64 } %t569, ptr %a570 - %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %a570, i32 0, i32 1 - %t572 = load i64, ptr %t571 - %t573 = icmp sgt i64 %t572, 0 - br i1 %t573, label %then8230, label %endif8232 -then8230: - %t574 = load ptr, ptr %a1 - %t575 = load %S.ast.Node, ptr %a2 - %t576 = load { ptr, i64, i64 }, ptr %a570 - %t577 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t576) - %t578 = call %S.gen.Val @finch.gen.convert(ptr %t574, %S.ast.Node %t575, %S.ast.Type %t577) - store %S.ast.Type %t577, ptr %a579 - call void @finch.drop.S_ast_Type(ptr %a579) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t578 -endif8232: - %t580 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t580, ptr %a581 - store { ptr, i64, i64 } { ptr @.str.5266, i64 9, i64 0 }, ptr %a582 - %t583 = call i32 @finch_str_eq(ptr %a581, ptr %a582) - %t584 = icmp ne i32 %t583, 0 - br label %logic.from8233 -logic.from8233: - br i1 %t584, label %logic.end8235, label %logic.rhs8234 -logic.rhs8234: - %t585 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t585, ptr %a586 - store { ptr, i64, i64 } { ptr @.str.5267, i64 11, i64 0 }, ptr %a587 - %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) - %t589 = icmp ne i32 %t588, 0 - br label %logic.rend8236 -logic.rend8236: - br label %logic.end8235 -logic.end8235: - %t590 = phi i1 [ true, %logic.from8233 ], [ %t589, %logic.rend8236 ] - br i1 %t590, label %then8237, label %endif8239 -then8237: - %t591 = load ptr, ptr %a1 - %t592 = load %S.ast.Node, ptr %a2 - %t593 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t591, %S.ast.Node %t592, i64 0, i64 1, { ptr, i64, i64 } %t593) - %t594 = load ptr, ptr %a1 - %t595 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t596 = load { ptr, i64, i64 }, ptr %t595 - %t597 = extractvalue { ptr, i64, i64 } %t596, 1 - %t598 = icmp uge i64 0, %t597 - br i1 %t598, label %range8240, label %inrange8241 -range8240: - call void @finch_panic_index(ptr @.str.5268, i64 4918, i64 0, i64 %t597) - unreachable -inrange8241: - %t599 = extractvalue { ptr, i64, i64 } %t596, 0 - %t600 = getelementptr inbounds %S.ast.Node, ptr %t599, i64 0 - %t601 = load %S.ast.Node, ptr %t600 - %t602 = call %S.gen.Val @finch.gen.strArg(ptr %t594, %S.ast.Node %t601, { ptr, i64, i64 } { ptr @.str.5269, i64 13, i64 0 }) - store %S.gen.Val %t602, ptr %a603 - %t604 = load ptr, ptr %a1 - %t605 = load %S.gen.Val, ptr %a603 - %t606 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t604, %S.gen.Val %t605) - store { ptr, i64, i64 } %t606, ptr %a607 - %t608 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t608, ptr %a609 - store { ptr, i64, i64 } { ptr @.str.5270, i64 11, i64 0 }, ptr %a610 - %t611 = call i32 @finch_str_eq(ptr %a609, ptr %a610) - %t612 = icmp ne i32 %t611, 0 - br i1 %t612, label %then8242, label %endif8244 -then8242: - %t613 = load ptr, ptr %a1 - %t614 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } { ptr @.str.5271, i64 32, i64 0 }, ptr %a616 - store { ptr, i64, i64 } %t614, ptr %a617 - call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617) - %t618 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t618, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5272, i64 1, i64 0 }, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t618, ptr %a622 - call void @finch_str_drop(ptr %a622) - %t623 = load { ptr, i64, i64 }, ptr %a619 - %t624 = call { ptr, i64, i64 } @finch.gen.op(ptr %t613, { ptr, i64, i64 } %t623) - store { ptr, i64, i64 } %t623, ptr %a625 - call void @finch_str_drop(ptr %a625) - store { ptr, i64, i64 } %t624, ptr %a626 - %t627 = load ptr, ptr %a1 - %t628 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t627, %S.gen.Val %t628) - %t629 = load ptr, ptr %a1 - %t630 = load { ptr, i64, i64 }, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5273, i64 12, i64 0 }, ptr %a632 - store { ptr, i64, i64 } %t630, ptr %a633 - call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a631 - store { ptr, i64, i64 } %t634, ptr %a636 - store { ptr, i64, i64 } { ptr @.str.5274, i64 3, i64 0 }, ptr %a637 - call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = call { ptr, i64, i64 } @finch.gen.op(ptr %t629, { ptr, i64, i64 } %t639) - store { ptr, i64, i64 } %t639, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t640, 0 - %t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5275, i64 4, i64 0 }) - %t644 = insertvalue %S.gen.Val %t642, %S.ast.Type %t643, 1 - call void @finch_str_drop(ptr %a626) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t644 -endif8244: - %t645 = load ptr, ptr %a1 - %t646 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t645) - store { ptr, i64, i64 } %t646, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic8245, label %ok8246 -panic8245: - call void @finch_panic(ptr @.str.5276, i64 4926, ptr @.str.5277) - unreachable -ok8246: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 41 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = load %S.ast.Node, ptr %a2 - %t653 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t652) - store { ptr, i64, i64 } %t651, ptr %a654 - store { ptr, i64, i64 } %t653, ptr %a655 - %t656 = call i32 @finch_str_eq(ptr %a654, ptr %a655) - %t657 = icmp ne i32 %t656, 0 - store { ptr, i64, i64 } %t653, ptr %a658 - call void @finch_str_drop(ptr %a658) - br i1 %t657, label %then8247, label %endif8249 -then8247: - %t659 = load ptr, ptr %a1 - %t660 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t659, { ptr, i64, i64 } { ptr @.str.5278, i64 17, i64 0 }) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a647 - call void @finch.gen.store(ptr %t662, { ptr, i64, i64 } { ptr @.str.5279, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5280, i64 15, i64 0 }, { ptr, i64, i64 } %t663) - %t664 = load ptr, ptr %a1 - %t665 = load { ptr, i64, i64 }, ptr %a661 - call void @finch.gen.store(ptr %t664, { ptr, i64, i64 } { ptr @.str.5281, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5282, i64 15, i64 0 }, { ptr, i64, i64 } %t665) - %t666 = load ptr, ptr %a1 - %t667 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5283, i64 34, i64 0 }, ptr %a669 - store { ptr, i64, i64 } %t667, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a668 - store { ptr, i64, i64 } %t671, ptr %a673 - store { ptr, i64, i64 } { ptr @.str.5284, i64 6, i64 0 }, ptr %a674 - call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) - store { ptr, i64, i64 } %t671, ptr %a675 - call void @finch_str_drop(ptr %a675) - %t676 = load { ptr, i64, i64 }, ptr %a672 - %t677 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t676, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t676, ptr %a681 - call void @finch_str_drop(ptr %a681) - %t682 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } %t682, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.5285, i64 6, i64 0 }, ptr %a685 - call void @finch_str_concat(ptr %a683, ptr %a684, ptr %a685) - store { ptr, i64, i64 } %t682, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load { ptr, i64, i64 }, ptr %a683 - %t688 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t687, ptr %a690 - store { ptr, i64, i64 } %t688, ptr %a691 - call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) - store { ptr, i64, i64 } %t687, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load { ptr, i64, i64 }, ptr %a689 - store { ptr, i64, i64 } %t693, ptr %a695 - store { ptr, i64, i64 } { ptr @.str.5286, i64 1, i64 0 }, ptr %a696 - call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) - store { ptr, i64, i64 } %t693, ptr %a697 - call void @finch_str_drop(ptr %a697) - %t698 = load { ptr, i64, i64 }, ptr %a694 - %t699 = call { ptr, i64, i64 } @finch.gen.op(ptr %t666, { ptr, i64, i64 } %t698) - store { ptr, i64, i64 } %t698, ptr %a700 - call void @finch_str_drop(ptr %a700) - store { ptr, i64, i64 } %t699, ptr %a701 - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a701 - store { ptr, i64, i64 } { ptr @.str.5287, i64 12, i64 0 }, ptr %a705 - store { ptr, i64, i64 } %t703, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - %t707 = load { ptr, i64, i64 }, ptr %a704 - store { ptr, i64, i64 } %t707, ptr %a709 - store { ptr, i64, i64 } { ptr @.str.5288, i64 3, i64 0 }, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - store { ptr, i64, i64 } %t707, ptr %a711 - call void @finch_str_drop(ptr %a711) - %t712 = load { ptr, i64, i64 }, ptr %a708 - %t713 = call { ptr, i64, i64 } @finch.gen.op(ptr %t702, { ptr, i64, i64 } %t712) - store { ptr, i64, i64 } %t712, ptr %a714 - call void @finch_str_drop(ptr %a714) - %t715 = load ptr, ptr %a1 - %t716 = icmp eq ptr %t715, null - br i1 %t716, label %panic8250, label %ok8251 -panic8250: - call void @finch_panic(ptr @.str.5289, i64 4931, ptr @.str.5290) - unreachable -ok8251: - %t717 = getelementptr inbounds %S.gen.Gen, ptr %t715, i32 0, i32 42 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t713, ptr %t717 - store { ptr, i64, i64 } %t718, ptr %a719 - call void @finch_str_drop(ptr %a719) - %t720 = load ptr, ptr %a1 - %t721 = load { ptr, i64, i64 }, ptr %a661 - %t722 = call { ptr, i64, i64 } @finch.gen.load(ptr %t720, { ptr, i64, i64 } { ptr @.str.5291, i64 17, i64 0 }, { ptr, i64, i64 } %t721) - %t723 = load ptr, ptr %a1 - %t724 = icmp eq ptr %t723, null - br i1 %t724, label %panic8252, label %ok8253 -panic8252: - call void @finch_panic(ptr @.str.5292, i64 4932, ptr @.str.5293) - unreachable -ok8253: - %t725 = getelementptr inbounds %S.gen.Gen, ptr %t723, i32 0, i32 43 - %t726 = load { ptr, i64, i64 }, ptr %t725 - store { ptr, i64, i64 } %t722, ptr %t725 - store { ptr, i64, i64 } %t726, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load ptr, ptr %a1 - %t729 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t728, %S.gen.Val %t729) - %t730 = load ptr, ptr %a1 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = call { ptr, i64, i64 } @finch.gen.load(ptr %t730, { ptr, i64, i64 } { ptr @.str.5294, i64 17, i64 0 }, { ptr, i64, i64 } %t731) - %t733 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t732, 0 - %t734 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5295, i64 3, i64 0 }) - %t735 = insertvalue %S.gen.Val %t733, %S.ast.Type %t734, 1 - %t736 = insertvalue %S.gen.Val %t735, i1 true, 2 - call void @finch_str_drop(ptr %a701) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t736 -endif8249: - %t737 = load ptr, ptr %a1 - %t738 = load ptr, ptr %a1 - %t739 = icmp eq ptr %t738, null - br i1 %t739, label %panic8254, label %ok8255 -panic8254: - call void @finch_panic(ptr @.str.5296, i64 4936, ptr @.str.5297) - unreachable -ok8255: - %t740 = getelementptr inbounds %S.gen.Gen, ptr %t738, i32 0, i32 1 - %t741 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t742 = load i64, ptr %t741 - %t743 = load { ptr, i64, i64 }, ptr %t740 - %t744 = extractvalue { ptr, i64, i64 } %t743, 1 - %t745 = icmp uge i64 %t742, %t744 - br i1 %t745, label %range8256, label %inrange8257 -range8256: - call void @finch_panic_index(ptr @.str.5298, i64 4936, i64 %t742, i64 %t744) - unreachable -inrange8257: - %t746 = extractvalue { ptr, i64, i64 } %t743, 0 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i64 %t742 - %t748 = load { ptr, i64, i64 }, ptr %t747 - %t749 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t737, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t749, ptr %a750 - %t751 = load ptr, ptr %a1 - %t752 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5299, i64 31, i64 0 }, ptr %a754 - store { ptr, i64, i64 } %t752, ptr %a755 - call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) - %t756 = load { ptr, i64, i64 }, ptr %a753 - store { ptr, i64, i64 } %t756, ptr %a758 - store { ptr, i64, i64 } { ptr @.str.5300, i64 6, i64 0 }, ptr %a759 - call void @finch_str_concat(ptr %a757, ptr %a758, ptr %a759) - store { ptr, i64, i64 } %t756, ptr %a760 - call void @finch_str_drop(ptr %a760) - %t761 = load { ptr, i64, i64 }, ptr %a757 - %t762 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t761, ptr %a764 - store { ptr, i64, i64 } %t762, ptr %a765 - call void @finch_str_concat(ptr %a763, ptr %a764, ptr %a765) - store { ptr, i64, i64 } %t761, ptr %a766 - call void @finch_str_drop(ptr %a766) - %t767 = load { ptr, i64, i64 }, ptr %a763 - store { ptr, i64, i64 } %t767, ptr %a769 - store { ptr, i64, i64 } { ptr @.str.5301, i64 6, i64 0 }, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - %t773 = load { ptr, i64, i64 }, ptr %a750 - store { ptr, i64, i64 } %t772, ptr %a775 - store { ptr, i64, i64 } %t773, ptr %a776 - call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776) - store { ptr, i64, i64 } %t772, ptr %a777 - call void @finch_str_drop(ptr %a777) - %t778 = load { ptr, i64, i64 }, ptr %a774 - store { ptr, i64, i64 } %t778, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.5302, i64 6, i64 0 }, ptr %a781 - call void @finch_str_concat(ptr %a779, ptr %a780, ptr %a781) - store { ptr, i64, i64 } %t778, ptr %a782 - call void @finch_str_drop(ptr %a782) - %t783 = load { ptr, i64, i64 }, ptr %a779 - %t784 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t785 = load i64, ptr %t784 - call void @finch_str_from_int(ptr %a786, i64 %t785) - %t787 = load { ptr, i64, i64 }, ptr %a786 - store { ptr, i64, i64 } %t783, ptr %a789 - store { ptr, i64, i64 } %t787, ptr %a790 - call void @finch_str_concat(ptr %a788, ptr %a789, ptr %a790) - store { ptr, i64, i64 } %t783, ptr %a791 - call void @finch_str_drop(ptr %a791) - store { ptr, i64, i64 } %t787, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a788 - store { ptr, i64, i64 } %t793, ptr %a795 - store { ptr, i64, i64 } { ptr @.str.5303, i64 1, i64 0 }, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t793, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - call void @finch.gen.emit(ptr %t751, { ptr, i64, i64 } %t798) - store { ptr, i64, i64 } %t798, ptr %a799 - call void @finch_str_drop(ptr %a799) - %t800 = load ptr, ptr %a1 - %t801 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t800, %S.gen.Val %t801) - %t802 = load ptr, ptr %a1 - %t803 = load { ptr, i64, i64 }, ptr %a647 - %t804 = call { ptr, i64, i64 } @finch.gen.load(ptr %t802, { ptr, i64, i64 } { ptr @.str.5304, i64 17, i64 0 }, { ptr, i64, i64 } %t803) - %t805 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t804, 0 - %t806 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5305, i64 3, i64 0 }) - %t807 = insertvalue %S.gen.Val %t805, %S.ast.Type %t806, 1 - %t808 = insertvalue %S.gen.Val %t807, i1 true, 2 - call void @finch_str_drop(ptr %a750) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t808 -endif8239: - %t809 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t809, ptr %a810 - store { ptr, i64, i64 } { ptr @.str.5306, i64 10, i64 0 }, ptr %a811 - %t812 = call i32 @finch_str_eq(ptr %a810, ptr %a811) - %t813 = icmp ne i32 %t812, 0 - br i1 %t813, label %then8258, label %endif8260 -then8258: - %t814 = load ptr, ptr %a1 - %t815 = load %S.ast.Node, ptr %a2 - %t816 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t814, %S.ast.Node %t815, i64 0, i64 2, { ptr, i64, i64 } %t816) - %t817 = load ptr, ptr %a1 - %t818 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t819 = load { ptr, i64, i64 }, ptr %t818 - %t820 = extractvalue { ptr, i64, i64 } %t819, 1 - %t821 = icmp uge i64 0, %t820 - br i1 %t821, label %range8261, label %inrange8262 -range8261: - call void @finch_panic_index(ptr @.str.5307, i64 4943, i64 0, i64 %t820) - unreachable -inrange8262: - %t822 = extractvalue { ptr, i64, i64 } %t819, 0 - %t823 = getelementptr inbounds %S.ast.Node, ptr %t822, i64 0 - %t824 = load %S.ast.Node, ptr %t823 - %t825 = call %S.gen.Val @finch.gen.strArg(ptr %t817, %S.ast.Node %t824, { ptr, i64, i64 } { ptr @.str.5308, i64 13, i64 0 }) - store %S.gen.Val %t825, ptr %a826 - %t827 = load ptr, ptr %a1 - %t828 = icmp eq ptr %t827, null - br i1 %t828, label %panic8263, label %ok8264 -panic8263: - call void @finch_panic(ptr @.str.5309, i64 4944, ptr @.str.5310) - unreachable -ok8264: - %t829 = getelementptr inbounds %S.gen.Gen, ptr %t827, i32 0, i32 11 - %t830 = getelementptr inbounds { ptr, i64, i64 }, ptr %t829, i32 0, i32 1 - %t831 = load i64, ptr %t830 - store i64 %t831, ptr %a832 - %t833 = load ptr, ptr %a1 - %t834 = load %S.gen.Val, ptr %a826 - call void @finch.gen.hold(ptr %t833, %S.gen.Val %t834) - %t835 = load ptr, ptr %a1 - %t836 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t837 = load { ptr, i64, i64 }, ptr %t836 - %t838 = extractvalue { ptr, i64, i64 } %t837, 1 - %t839 = icmp uge i64 1, %t838 - br i1 %t839, label %range8265, label %inrange8266 -range8265: - call void @finch_panic_index(ptr @.str.5311, i64 4946, i64 1, i64 %t838) - unreachable -inrange8266: - %t840 = extractvalue { ptr, i64, i64 } %t837, 0 - %t841 = getelementptr inbounds %S.ast.Node, ptr %t840, i64 1 - %t842 = load %S.ast.Node, ptr %t841 - %t843 = call %S.gen.Val @finch.gen.strArg(ptr %t835, %S.ast.Node %t842, { ptr, i64, i64 } { ptr @.str.5312, i64 8, i64 0 }) - store %S.gen.Val %t843, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load i64, ptr %a832 - call void @finch.gen.heldEnd(ptr %t845, i64 %t846) - %t847 = load ptr, ptr %a1 - %t848 = load %S.gen.Val, ptr %a826 - %t849 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t847, %S.gen.Val %t848) - store { ptr, i64, i64 } %t849, ptr %a850 - %t851 = load ptr, ptr %a1 - %t852 = load %S.gen.Val, ptr %a844 - %t853 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t851, %S.gen.Val %t852) - store { ptr, i64, i64 } %t853, ptr %a854 - %t855 = load ptr, ptr %a1 - %t856 = icmp eq ptr %t855, null - br i1 %t856, label %panic8267, label %ok8268 -panic8267: - call void @finch_panic(ptr @.str.5313, i64 4950, ptr @.str.5314) - unreachable -ok8268: - %t857 = getelementptr inbounds %S.gen.Gen, ptr %t855, i32 0, i32 41 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = load %S.ast.Node, ptr %a2 - %t860 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t859) - store { ptr, i64, i64 } %t858, ptr %a861 - store { ptr, i64, i64 } %t860, ptr %a862 - %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) - %t864 = icmp ne i32 %t863, 0 - store { ptr, i64, i64 } %t860, ptr %a865 - call void @finch_str_drop(ptr %a865) - br i1 %t864, label %then8269, label %endif8271 -then8269: - %t866 = load ptr, ptr %a1 - %t867 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t866, { ptr, i64, i64 } { ptr @.str.5315, i64 17, i64 0 }) - store { ptr, i64, i64 } %t867, ptr %a868 - %t869 = load ptr, ptr %a1 - %t870 = load { ptr, i64, i64 }, ptr %a868 - call void @finch.gen.store(ptr %t869, { ptr, i64, i64 } { ptr @.str.5316, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5317, i64 15, i64 0 }, { ptr, i64, i64 } %t870) - %t871 = load ptr, ptr %a1 - %t872 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5318, i64 35, i64 0 }, ptr %a874 - store { ptr, i64, i64 } %t872, ptr %a875 - call void @finch_str_concat(ptr %a873, ptr %a874, ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a873 - store { ptr, i64, i64 } %t876, ptr %a878 - store { ptr, i64, i64 } { ptr @.str.5319, i64 6, i64 0 }, ptr %a879 - call void @finch_str_concat(ptr %a877, ptr %a878, ptr %a879) - store { ptr, i64, i64 } %t876, ptr %a880 - call void @finch_str_drop(ptr %a880) - %t881 = load { ptr, i64, i64 }, ptr %a877 - %t882 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t881, ptr %a884 - store { ptr, i64, i64 } %t882, ptr %a885 - call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) - store { ptr, i64, i64 } %t881, ptr %a886 - call void @finch_str_drop(ptr %a886) - %t887 = load { ptr, i64, i64 }, ptr %a883 - store { ptr, i64, i64 } %t887, ptr %a889 - store { ptr, i64, i64 } { ptr @.str.5320, i64 6, i64 0 }, ptr %a890 - call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890) - store { ptr, i64, i64 } %t887, ptr %a891 - call void @finch_str_drop(ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a888 - %t893 = load { ptr, i64, i64 }, ptr %a868 - store { ptr, i64, i64 } %t892, ptr %a895 - store { ptr, i64, i64 } %t893, ptr %a896 - call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) - store { ptr, i64, i64 } %t892, ptr %a897 - call void @finch_str_drop(ptr %a897) - %t898 = load { ptr, i64, i64 }, ptr %a894 - store { ptr, i64, i64 } %t898, ptr %a900 - store { ptr, i64, i64 } { ptr @.str.5321, i64 1, i64 0 }, ptr %a901 - call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) - store { ptr, i64, i64 } %t898, ptr %a902 - call void @finch_str_drop(ptr %a902) - %t903 = load { ptr, i64, i64 }, ptr %a899 - %t904 = call { ptr, i64, i64 } @finch.gen.op(ptr %t871, { ptr, i64, i64 } %t903) - store { ptr, i64, i64 } %t903, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t904, ptr %a906 - %t907 = load ptr, ptr %a1 - %t908 = load { ptr, i64, i64 }, ptr %a906 - store { ptr, i64, i64 } { ptr @.str.5322, i64 12, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t908, ptr %a911 - call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911) - %t912 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } %t912, ptr %a914 - store { ptr, i64, i64 } { ptr @.str.5323, i64 3, i64 0 }, ptr %a915 - call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) - store { ptr, i64, i64 } %t912, ptr %a916 - call void @finch_str_drop(ptr %a916) - %t917 = load { ptr, i64, i64 }, ptr %a913 - %t918 = call { ptr, i64, i64 } @finch.gen.op(ptr %t907, { ptr, i64, i64 } %t917) - store { ptr, i64, i64 } %t917, ptr %a919 - call void @finch_str_drop(ptr %a919) - %t920 = load ptr, ptr %a1 - %t921 = icmp eq ptr %t920, null - br i1 %t921, label %panic8272, label %ok8273 -panic8272: - call void @finch_panic(ptr @.str.5324, i64 4954, ptr @.str.5325) - unreachable -ok8273: - %t922 = getelementptr inbounds %S.gen.Gen, ptr %t920, i32 0, i32 42 - %t923 = load { ptr, i64, i64 }, ptr %t922 - store { ptr, i64, i64 } %t918, ptr %t922 - store { ptr, i64, i64 } %t923, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load ptr, ptr %a1 - %t926 = load { ptr, i64, i64 }, ptr %a868 - %t927 = call { ptr, i64, i64 } @finch.gen.load(ptr %t925, { ptr, i64, i64 } { ptr @.str.5326, i64 17, i64 0 }, { ptr, i64, i64 } %t926) - %t928 = load ptr, ptr %a1 - %t929 = icmp eq ptr %t928, null - br i1 %t929, label %panic8274, label %ok8275 -panic8274: - call void @finch_panic(ptr @.str.5327, i64 4955, ptr @.str.5328) - unreachable -ok8275: - %t930 = getelementptr inbounds %S.gen.Gen, ptr %t928, i32 0, i32 43 - %t931 = load { ptr, i64, i64 }, ptr %t930 - store { ptr, i64, i64 } %t927, ptr %t930 - store { ptr, i64, i64 } %t931, ptr %a932 - call void @finch_str_drop(ptr %a932) - %t933 = load ptr, ptr %a1 - %t934 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t933, %S.gen.Val %t934) - %t935 = load ptr, ptr %a1 - %t936 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t935, %S.gen.Val %t936) - %t937 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5329, i64 4, i64 0 }) - %t938 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t937, 1 - call void @finch_str_drop(ptr %a906) - call void @finch_str_drop(ptr %a868) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t938 -endif8271: - %t939 = load ptr, ptr %a1 - %t940 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5330, i64 31, i64 0 }, ptr %a942 - store { ptr, i64, i64 } %t940, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a941 - store { ptr, i64, i64 } %t944, ptr %a946 - store { ptr, i64, i64 } { ptr @.str.5331, i64 6, i64 0 }, ptr %a947 - call void @finch_str_concat(ptr %a945, ptr %a946, ptr %a947) - store { ptr, i64, i64 } %t944, ptr %a948 - call void @finch_str_drop(ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a945 - %t950 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t949, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t949, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - store { ptr, i64, i64 } %t955, ptr %a957 - store { ptr, i64, i64 } { ptr @.str.5332, i64 1, i64 0 }, ptr %a958 - call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) - store { ptr, i64, i64 } %t955, ptr %a959 - call void @finch_str_drop(ptr %a959) - %t960 = load { ptr, i64, i64 }, ptr %a956 - %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t939, { ptr, i64, i64 } %t960) - store { ptr, i64, i64 } %t960, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t961, ptr %a963 - %t964 = load ptr, ptr %a1 - %t965 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t964, %S.gen.Val %t965) - %t966 = load ptr, ptr %a1 - %t967 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t966, %S.gen.Val %t967) - %t968 = load ptr, ptr %a1 - %t969 = load { ptr, i64, i64 }, ptr %a963 - store { ptr, i64, i64 } { ptr @.str.5333, i64 12, i64 0 }, ptr %a971 - store { ptr, i64, i64 } %t969, ptr %a972 - call void @finch_str_concat(ptr %a970, ptr %a971, ptr %a972) - %t973 = load { ptr, i64, i64 }, ptr %a970 - store { ptr, i64, i64 } %t973, ptr %a975 - store { ptr, i64, i64 } { ptr @.str.5334, i64 3, i64 0 }, ptr %a976 - call void @finch_str_concat(ptr %a974, ptr %a975, ptr %a976) - store { ptr, i64, i64 } %t973, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a974 - %t979 = call { ptr, i64, i64 } @finch.gen.op(ptr %t968, { ptr, i64, i64 } %t978) - store { ptr, i64, i64 } %t978, ptr %a980 - call void @finch_str_drop(ptr %a980) - %t981 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t979, 0 - %t982 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5335, i64 4, i64 0 }) - %t983 = insertvalue %S.gen.Val %t981, %S.ast.Type %t982, 1 - call void @finch_str_drop(ptr %a963) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t983 -endif8260: - %t984 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t984, ptr %a985 - store { ptr, i64, i64 } { ptr @.str.5336, i64 11, i64 0 }, ptr %a986 - %t987 = call i32 @finch_str_eq(ptr %a985, ptr %a986) - %t988 = icmp ne i32 %t987, 0 - br i1 %t988, label %then8276, label %endif8278 -then8276: - %t989 = load ptr, ptr %a1 - %t990 = load %S.ast.Node, ptr %a2 - %t991 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t989, %S.ast.Node %t990, i64 0, i64 1, { ptr, i64, i64 } %t991) - %t992 = load ptr, ptr %a1 - %t993 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = extractvalue { ptr, i64, i64 } %t994, 1 - %t996 = icmp uge i64 0, %t995 - br i1 %t996, label %range8279, label %inrange8280 -range8279: - call void @finch_panic_index(ptr @.str.5337, i64 4967, i64 0, i64 %t995) - unreachable -inrange8280: - %t997 = extractvalue { ptr, i64, i64 } %t994, 0 - %t998 = getelementptr inbounds %S.ast.Node, ptr %t997, i64 0 - %t999 = load %S.ast.Node, ptr %t998 - %t1000 = call %S.gen.Val @finch.gen.strArg(ptr %t992, %S.ast.Node %t999, { ptr, i64, i64 } { ptr @.str.5338, i64 13, i64 0 }) - store %S.gen.Val %t1000, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1002) - store { ptr, i64, i64 } %t1003, ptr %a1004 - %t1005 = load ptr, ptr %a1 - %t1006 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5339, i64 30, i64 0 }, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - %t1010 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1010, ptr %a1012 - store { ptr, i64, i64 } { ptr @.str.5340, i64 6, i64 0 }, ptr %a1013 - call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013) - store { ptr, i64, i64 } %t1010, ptr %a1014 - call void @finch_str_drop(ptr %a1014) - %t1015 = load { ptr, i64, i64 }, ptr %a1011 - %t1016 = load ptr, ptr %a1 - %t1017 = load %S.gen.Val, ptr %a1001 - %t1018 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1016, %S.gen.Val %t1017) - store { ptr, i64, i64 } %t1015, ptr %a1020 - store { ptr, i64, i64 } %t1018, ptr %a1021 - call void @finch_str_concat(ptr %a1019, ptr %a1020, ptr %a1021) - store { ptr, i64, i64 } %t1015, ptr %a1022 - call void @finch_str_drop(ptr %a1022) - store { ptr, i64, i64 } %t1018, ptr %a1023 - call void @finch_str_drop(ptr %a1023) - %t1024 = load { ptr, i64, i64 }, ptr %a1019 - store { ptr, i64, i64 } %t1024, ptr %a1026 - store { ptr, i64, i64 } { ptr @.str.5341, i64 1, i64 0 }, ptr %a1027 - call void @finch_str_concat(ptr %a1025, ptr %a1026, ptr %a1027) - store { ptr, i64, i64 } %t1024, ptr %a1028 - call void @finch_str_drop(ptr %a1028) - %t1029 = load { ptr, i64, i64 }, ptr %a1025 - call void @finch.gen.emit(ptr %t1005, { ptr, i64, i64 } %t1029) - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch_str_drop(ptr %a1030) - %t1031 = load ptr, ptr %a1 - %t1032 = icmp eq ptr %t1031, null - br i1 %t1032, label %panic8281, label %ok8282 -panic8281: - call void @finch_panic(ptr @.str.5342, i64 4970, ptr @.str.5343) - unreachable -ok8282: - %t1033 = getelementptr inbounds %S.gen.Gen, ptr %t1031, i32 0, i32 41 - %t1034 = load { ptr, i64, i64 }, ptr %t1033 - %t1035 = load %S.ast.Node, ptr %a2 - %t1036 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t1035) - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1036, ptr %a1038 - %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) - %t1040 = icmp ne i32 %t1039, 0 - store { ptr, i64, i64 } %t1036, ptr %a1041 - call void @finch_str_drop(ptr %a1041) - br i1 %t1040, label %then8283, label %endif8285 -then8283: - %t1042 = load ptr, ptr %a1 - %t1043 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1042, { ptr, i64, i64 } { ptr @.str.5344, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1043, ptr %a1044 - %t1045 = load ptr, ptr %a1 - %t1046 = load { ptr, i64, i64 }, ptr %a1044 - call void @finch.gen.store(ptr %t1045, { ptr, i64, i64 } { ptr @.str.5345, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5346, i64 15, i64 0 }, { ptr, i64, i64 } %t1046) - %t1047 = load ptr, ptr %a1 - %t1048 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5347, i64 36, i64 0 }, ptr %a1050 - store { ptr, i64, i64 } %t1048, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1049 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5348, i64 6, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = load { ptr, i64, i64 }, ptr %a1044 - store { ptr, i64, i64 } %t1057, ptr %a1060 - store { ptr, i64, i64 } %t1058, ptr %a1061 - call void @finch_str_concat(ptr %a1059, ptr %a1060, ptr %a1061) - store { ptr, i64, i64 } %t1057, ptr %a1062 - call void @finch_str_drop(ptr %a1062) - %t1063 = load { ptr, i64, i64 }, ptr %a1059 - store { ptr, i64, i64 } %t1063, ptr %a1065 - store { ptr, i64, i64 } { ptr @.str.5349, i64 1, i64 0 }, ptr %a1066 - call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) - store { ptr, i64, i64 } %t1063, ptr %a1067 - call void @finch_str_drop(ptr %a1067) - %t1068 = load { ptr, i64, i64 }, ptr %a1064 - %t1069 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1068) - store { ptr, i64, i64 } %t1068, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - store { ptr, i64, i64 } %t1069, ptr %a1071 - %t1072 = load ptr, ptr %a1 - %t1073 = load { ptr, i64, i64 }, ptr %a1071 - store { ptr, i64, i64 } { ptr @.str.5350, i64 12, i64 0 }, ptr %a1075 - store { ptr, i64, i64 } %t1073, ptr %a1076 - call void @finch_str_concat(ptr %a1074, ptr %a1075, ptr %a1076) - %t1077 = load { ptr, i64, i64 }, ptr %a1074 - store { ptr, i64, i64 } %t1077, ptr %a1079 - store { ptr, i64, i64 } { ptr @.str.5351, i64 3, i64 0 }, ptr %a1080 - call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) - store { ptr, i64, i64 } %t1077, ptr %a1081 - call void @finch_str_drop(ptr %a1081) - %t1082 = load { ptr, i64, i64 }, ptr %a1078 - %t1083 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1072, { ptr, i64, i64 } %t1082) - store { ptr, i64, i64 } %t1082, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - %t1085 = load ptr, ptr %a1 - %t1086 = icmp eq ptr %t1085, null - br i1 %t1086, label %panic8286, label %ok8287 -panic8286: - call void @finch_panic(ptr @.str.5352, i64 4974, ptr @.str.5353) - unreachable -ok8287: - %t1087 = getelementptr inbounds %S.gen.Gen, ptr %t1085, i32 0, i32 42 - %t1088 = load { ptr, i64, i64 }, ptr %t1087 - store { ptr, i64, i64 } %t1083, ptr %t1087 - store { ptr, i64, i64 } %t1088, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load ptr, ptr %a1 - %t1091 = load { ptr, i64, i64 }, ptr %a1044 - %t1092 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1090, { ptr, i64, i64 } { ptr @.str.5354, i64 17, i64 0 }, { ptr, i64, i64 } %t1091) - %t1093 = load ptr, ptr %a1 - %t1094 = icmp eq ptr %t1093, null - br i1 %t1094, label %panic8288, label %ok8289 -panic8288: - call void @finch_panic(ptr @.str.5355, i64 4975, ptr @.str.5356) - unreachable -ok8289: - %t1095 = getelementptr inbounds %S.gen.Gen, ptr %t1093, i32 0, i32 43 - %t1096 = load { ptr, i64, i64 }, ptr %t1095 - store { ptr, i64, i64 } %t1092, ptr %t1095 - store { ptr, i64, i64 } %t1096, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load ptr, ptr %a1 - %t1099 = load { ptr, i64, i64 }, ptr %a1004 - %t1100 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5357, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1098, { ptr, i64, i64 } %t1099, %S.ast.Type %t1100) - store %S.ast.Type %t1100, ptr %a1101 - call void @finch.drop.S_ast_Type(ptr %a1101) - %t1102 = load ptr, ptr %a1 - %t1103 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1102, %S.gen.Val %t1103) - %t1104 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5358, i64 4, i64 0 }) - %t1105 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1104, 1 - call void @finch_str_drop(ptr %a1071) - call void @finch_str_drop(ptr %a1044) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1105 -endif8285: - %t1106 = load ptr, ptr %a1 - %t1107 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5359, i64 32, i64 0 }, ptr %a1109 - store { ptr, i64, i64 } %t1107, ptr %a1110 - call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110) - %t1111 = load { ptr, i64, i64 }, ptr %a1108 - store { ptr, i64, i64 } %t1111, ptr %a1113 - store { ptr, i64, i64 } { ptr @.str.5360, i64 1, i64 0 }, ptr %a1114 - call void @finch_str_concat(ptr %a1112, ptr %a1113, ptr %a1114) - store { ptr, i64, i64 } %t1111, ptr %a1115 - call void @finch_str_drop(ptr %a1115) - %t1116 = load { ptr, i64, i64 }, ptr %a1112 - %t1117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1106, { ptr, i64, i64 } %t1116) - store { ptr, i64, i64 } %t1116, ptr %a1118 - call void @finch_str_drop(ptr %a1118) - store { ptr, i64, i64 } %t1117, ptr %a1119 - %t1120 = load ptr, ptr %a1 - %t1121 = load { ptr, i64, i64 }, ptr %a1004 - %t1122 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5361, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1120, { ptr, i64, i64 } %t1121, %S.ast.Type %t1122) - store %S.ast.Type %t1122, ptr %a1123 - call void @finch.drop.S_ast_Type(ptr %a1123) - %t1124 = load ptr, ptr %a1 - %t1125 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1124, %S.gen.Val %t1125) - %t1126 = load ptr, ptr %a1 - %t1127 = load { ptr, i64, i64 }, ptr %a1119 - store { ptr, i64, i64 } { ptr @.str.5362, i64 12, i64 0 }, ptr %a1129 - store { ptr, i64, i64 } %t1127, ptr %a1130 - call void @finch_str_concat(ptr %a1128, ptr %a1129, ptr %a1130) - %t1131 = load { ptr, i64, i64 }, ptr %a1128 - store { ptr, i64, i64 } %t1131, ptr %a1133 - store { ptr, i64, i64 } { ptr @.str.5363, i64 3, i64 0 }, ptr %a1134 - call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134) - store { ptr, i64, i64 } %t1131, ptr %a1135 - call void @finch_str_drop(ptr %a1135) - %t1136 = load { ptr, i64, i64 }, ptr %a1132 - %t1137 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1136) - store { ptr, i64, i64 } %t1136, ptr %a1138 - call void @finch_str_drop(ptr %a1138) - %t1139 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1137, 0 - %t1140 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5364, i64 4, i64 0 }) - %t1141 = insertvalue %S.gen.Val %t1139, %S.ast.Type %t1140, 1 - call void @finch_str_drop(ptr %a1119) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1141 -endif8278: - %t1142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1142, ptr %a1143 - store { ptr, i64, i64 } { ptr @.str.5365, i64 5, i64 0 }, ptr %a1144 - %t1145 = call i32 @finch_str_eq(ptr %a1143, ptr %a1144) - %t1146 = icmp ne i32 %t1145, 0 - br i1 %t1146, label %then8290, label %endif8292 -then8290: - %t1147 = load ptr, ptr %a1 - %t1148 = load %S.ast.Node, ptr %a2 - %t1149 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1147, %S.ast.Node %t1148, i64 0, i64 1, { ptr, i64, i64 } %t1149) - %t1150 = load ptr, ptr %a1 - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 0, %t1153 - br i1 %t1154, label %range8293, label %inrange8294 -range8293: - call void @finch_panic_index(ptr @.str.5366, i64 4987, i64 0, i64 %t1153) - unreachable -inrange8294: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 0 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.strArg(ptr %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5367, i64 11, i64 0 }) - store %S.gen.Val %t1158, ptr %a1159 - %t1160 = load ptr, ptr %a1 - %t1161 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1160) - store { ptr, i64, i64 } %t1161, ptr %a1162 - %t1163 = load ptr, ptr %a1 - %t1164 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5368, i64 30, i64 0 }, ptr %a1166 - store { ptr, i64, i64 } %t1164, ptr %a1167 - call void @finch_str_concat(ptr %a1165, ptr %a1166, ptr %a1167) - %t1168 = load { ptr, i64, i64 }, ptr %a1165 - store { ptr, i64, i64 } %t1168, ptr %a1170 - store { ptr, i64, i64 } { ptr @.str.5369, i64 6, i64 0 }, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1168, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - %t1174 = load ptr, ptr %a1 - %t1175 = load %S.gen.Val, ptr %a1159 - %t1176 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1174, %S.gen.Val %t1175) - store { ptr, i64, i64 } %t1173, ptr %a1178 - store { ptr, i64, i64 } %t1176, ptr %a1179 - call void @finch_str_concat(ptr %a1177, ptr %a1178, ptr %a1179) - store { ptr, i64, i64 } %t1173, ptr %a1180 - call void @finch_str_drop(ptr %a1180) - store { ptr, i64, i64 } %t1176, ptr %a1181 - call void @finch_str_drop(ptr %a1181) - %t1182 = load { ptr, i64, i64 }, ptr %a1177 - store { ptr, i64, i64 } %t1182, ptr %a1184 - store { ptr, i64, i64 } { ptr @.str.5370, i64 1, i64 0 }, ptr %a1185 - call void @finch_str_concat(ptr %a1183, ptr %a1184, ptr %a1185) - store { ptr, i64, i64 } %t1182, ptr %a1186 - call void @finch_str_drop(ptr %a1186) - %t1187 = load { ptr, i64, i64 }, ptr %a1183 - call void @finch.gen.emit(ptr %t1163, { ptr, i64, i64 } %t1187) - store { ptr, i64, i64 } %t1187, ptr %a1188 - call void @finch_str_drop(ptr %a1188) - %t1189 = load ptr, ptr %a1 - %t1190 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5371, i64 26, i64 0 }, ptr %a1192 - store { ptr, i64, i64 } %t1190, ptr %a1193 - call void @finch_str_concat(ptr %a1191, ptr %a1192, ptr %a1193) - %t1194 = load { ptr, i64, i64 }, ptr %a1191 - store { ptr, i64, i64 } %t1194, ptr %a1196 - store { ptr, i64, i64 } { ptr @.str.5372, i64 1, i64 0 }, ptr %a1197 - call void @finch_str_concat(ptr %a1195, ptr %a1196, ptr %a1197) - store { ptr, i64, i64 } %t1194, ptr %a1198 - call void @finch_str_drop(ptr %a1198) - %t1199 = load { ptr, i64, i64 }, ptr %a1195 - %t1200 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1189, { ptr, i64, i64 } %t1199) - store { ptr, i64, i64 } %t1199, ptr %a1201 - call void @finch_str_drop(ptr %a1201) - store { ptr, i64, i64 } %t1200, ptr %a1202 - %t1203 = load ptr, ptr %a1 - %t1204 = load { ptr, i64, i64 }, ptr %a1162 - %t1205 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5373, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1203, { ptr, i64, i64 } %t1204, %S.ast.Type %t1205) - store %S.ast.Type %t1205, ptr %a1206 - call void @finch.drop.S_ast_Type(ptr %a1206) - %t1207 = load ptr, ptr %a1 - %t1208 = load %S.gen.Val, ptr %a1159 - call void @finch.gen.release(ptr %t1207, %S.gen.Val %t1208) - %t1209 = load { ptr, i64, i64 }, ptr %a1202 - store { ptr, i64, i64 } %t1209, ptr %a1210 - call void @finch_str_copy(ptr %a1211, ptr %a1210) - %t1212 = load { ptr, i64, i64 }, ptr %a1211 - %t1213 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1212, 0 - %t1214 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5374, i64 3, i64 0 }) - %t1215 = insertvalue %S.gen.Val %t1213, %S.ast.Type %t1214, 1 - call void @finch_str_drop(ptr %a1202) - call void @finch_str_drop(ptr %a1162) - call void @finch.drop.S_gen_Val(ptr %a1159) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1215 -endif8292: - %t1216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1216, ptr %a1217 - store { ptr, i64, i64 } { ptr @.str.5375, i64 4, i64 0 }, ptr %a1218 - %t1219 = call i32 @finch_str_eq(ptr %a1217, ptr %a1218) - %t1220 = icmp ne i32 %t1219, 0 - br i1 %t1220, label %then8295, label %endif8297 -then8295: - %t1221 = load ptr, ptr %a1 - %t1222 = load %S.ast.Node, ptr %a2 - %t1223 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1221, %S.ast.Node %t1222, i64 0, i64 1, { ptr, i64, i64 } %t1223) - %t1224 = load ptr, ptr %a1 - %t1225 = load ptr, ptr %a1 - %t1226 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1227 = load { ptr, i64, i64 }, ptr %t1226 - %t1228 = extractvalue { ptr, i64, i64 } %t1227, 1 - %t1229 = icmp uge i64 0, %t1228 - br i1 %t1229, label %range8298, label %inrange8299 -range8298: - call void @finch_panic_index(ptr @.str.5376, i64 4997, i64 0, i64 %t1228) - unreachable -inrange8299: - %t1230 = extractvalue { ptr, i64, i64 } %t1227, 0 - %t1231 = getelementptr inbounds %S.ast.Node, ptr %t1230, i64 0 - %t1232 = load %S.ast.Node, ptr %t1231 - %t1233 = call %S.gen.Val @finch.gen.expr(ptr %t1225, %S.ast.Node %t1232) - %t1234 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5377, i64 3, i64 0 }) - %t1235 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1236 = load { ptr, i64, i64 }, ptr %t1235 - %t1237 = extractvalue { ptr, i64, i64 } %t1236, 1 - %t1238 = icmp uge i64 0, %t1237 - br i1 %t1238, label %range8300, label %inrange8301 -range8300: - call void @finch_panic_index(ptr @.str.5378, i64 4997, i64 0, i64 %t1237) - unreachable -inrange8301: - %t1239 = extractvalue { ptr, i64, i64 } %t1236, 0 - %t1240 = getelementptr inbounds %S.ast.Node, ptr %t1239, i64 0 - %t1241 = load %S.ast.Node, ptr %t1240 - %t1242 = call %S.gen.Val @finch.gen.coerce(ptr %t1224, %S.gen.Val %t1233, %S.ast.Type %t1234, %S.ast.Node %t1241, { ptr, i64, i64 } { ptr @.str.5379, i64 13, i64 0 }) - store %S.gen.Val %t1233, ptr %a1243 - call void @finch.drop.S_gen_Val(ptr %a1243) - store %S.ast.Type %t1234, ptr %a1244 - call void @finch.drop.S_ast_Type(ptr %a1244) - store %S.gen.Val %t1242, ptr %a1245 - %t1246 = load ptr, ptr %a1 - %t1247 = getelementptr inbounds %S.gen.Val, ptr %a1245, i32 0, i32 0 - %t1248 = load { ptr, i64, i64 }, ptr %t1247 - store { ptr, i64, i64 } { ptr @.str.5380, i64 10, i64 0 }, ptr %a1250 - store { ptr, i64, i64 } %t1248, ptr %a1251 - call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251) - %t1252 = load { ptr, i64, i64 }, ptr %a1249 - store { ptr, i64, i64 } %t1252, ptr %a1254 - store { ptr, i64, i64 } { ptr @.str.5381, i64 7, i64 0 }, ptr %a1255 - call void @finch_str_concat(ptr %a1253, ptr %a1254, ptr %a1255) - store { ptr, i64, i64 } %t1252, ptr %a1256 - call void @finch_str_drop(ptr %a1256) - %t1257 = load { ptr, i64, i64 }, ptr %a1253 - %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1246, { ptr, i64, i64 } %t1257) - store { ptr, i64, i64 } %t1257, ptr %a1259 - call void @finch_str_drop(ptr %a1259) - store { ptr, i64, i64 } %t1258, ptr %a1260 - %t1261 = load ptr, ptr %a1 - %t1262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1261, { ptr, i64, i64 } { ptr @.str.5382, i64 26, i64 0 }) - store { ptr, i64, i64 } %t1262, ptr %a1263 - %t1264 = load ptr, ptr %a1 - %t1265 = load { ptr, i64, i64 }, ptr %a1260 - store { ptr, i64, i64 } { ptr @.str.5383, i64 20, i64 0 }, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - %t1269 = load { ptr, i64, i64 }, ptr %a1266 - store { ptr, i64, i64 } %t1269, ptr %a1271 - store { ptr, i64, i64 } { ptr @.str.5384, i64 1, i64 0 }, ptr %a1272 - call void @finch_str_concat(ptr %a1270, ptr %a1271, ptr %a1272) - store { ptr, i64, i64 } %t1269, ptr %a1273 - call void @finch_str_drop(ptr %a1273) - %t1274 = load { ptr, i64, i64 }, ptr %a1270 - call void @finch.gen.emit(ptr %t1264, { ptr, i64, i64 } %t1274) - store { ptr, i64, i64 } %t1274, ptr %a1275 - call void @finch_str_drop(ptr %a1275) - %t1276 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5385, i64 4, i64 0 }) - %t1277 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1276, 1 - call void @finch_str_drop(ptr %a1263) - call void @finch_str_drop(ptr %a1260) - call void @finch.drop.S_gen_Val(ptr %a1245) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1277 -endif8297: - %t1278 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1278, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5386, i64 5, i64 0 }, ptr %a1280 - %t1281 = call i32 @finch_str_eq(ptr %a1279, ptr %a1280) - %t1282 = icmp ne i32 %t1281, 0 - br i1 %t1282, label %then8302, label %endif8304 -then8302: - %t1283 = load ptr, ptr %a1 - %t1284 = call %S.gen.Val @finch.gen.strConst(ptr %t1283, { ptr, i64, i64 } { ptr @.str.5387, i64 0, i64 0 }) - store %S.gen.Val %t1284, ptr %a1285 - %t1286 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1286, i32 0, i32 1 - %t1288 = load i64, ptr %t1287 - %t1289 = icmp sgt i64 %t1288, 0 - br i1 %t1289, label %then8305, label %endif8307 -then8305: - %t1290 = load ptr, ptr %a1 - %t1291 = load %S.ast.Node, ptr %a2 - %t1292 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1290, %S.ast.Node %t1291, i64 0, i64 1, { ptr, i64, i64 } %t1292) - %t1293 = load ptr, ptr %a1 - %t1294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1295 = load { ptr, i64, i64 }, ptr %t1294 - %t1296 = extractvalue { ptr, i64, i64 } %t1295, 1 - %t1297 = icmp uge i64 0, %t1296 - br i1 %t1297, label %range8308, label %inrange8309 -range8308: - call void @finch_panic_index(ptr @.str.5388, i64 5007, i64 0, i64 %t1296) - unreachable -inrange8309: - %t1298 = extractvalue { ptr, i64, i64 } %t1295, 0 - %t1299 = getelementptr inbounds %S.ast.Node, ptr %t1298, i64 0 - %t1300 = load %S.ast.Node, ptr %t1299 - %t1301 = call %S.gen.Val @finch.gen.strArg(ptr %t1293, %S.ast.Node %t1300, { ptr, i64, i64 } { ptr @.str.5389, i64 12, i64 0 }) - %t1302 = load %S.gen.Val, ptr %a1285 - store %S.gen.Val %t1301, ptr %a1285 - store %S.gen.Val %t1302, ptr %a1303 - call void @finch.drop.S_gen_Val(ptr %a1303) - br label %endif8307 -endif8307: - %t1304 = load ptr, ptr %a1 - %t1305 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1304) - store { ptr, i64, i64 } %t1305, ptr %a1306 - %t1307 = load ptr, ptr %a1 - %t1308 = load { ptr, i64, i64 }, ptr %a1306 - store { ptr, i64, i64 } { ptr @.str.5390, i64 27, i64 0 }, ptr %a1310 - store { ptr, i64, i64 } %t1308, ptr %a1311 - call void @finch_str_concat(ptr %a1309, ptr %a1310, ptr %a1311) - %t1312 = load { ptr, i64, i64 }, ptr %a1309 - store { ptr, i64, i64 } %t1312, ptr %a1314 - store { ptr, i64, i64 } { ptr @.str.5391, i64 6, i64 0 }, ptr %a1315 - call void @finch_str_concat(ptr %a1313, ptr %a1314, ptr %a1315) - store { ptr, i64, i64 } %t1312, ptr %a1316 - call void @finch_str_drop(ptr %a1316) - %t1317 = load { ptr, i64, i64 }, ptr %a1313 - %t1318 = load ptr, ptr %a1 - %t1319 = load %S.gen.Val, ptr %a1285 - %t1320 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1318, %S.gen.Val %t1319) - store { ptr, i64, i64 } %t1317, ptr %a1322 - store { ptr, i64, i64 } %t1320, ptr %a1323 - call void @finch_str_concat(ptr %a1321, ptr %a1322, ptr %a1323) - store { ptr, i64, i64 } %t1317, ptr %a1324 - call void @finch_str_drop(ptr %a1324) - store { ptr, i64, i64 } %t1320, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1321 - store { ptr, i64, i64 } %t1326, ptr %a1328 - store { ptr, i64, i64 } { ptr @.str.5392, i64 1, i64 0 }, ptr %a1329 - call void @finch_str_concat(ptr %a1327, ptr %a1328, ptr %a1329) - store { ptr, i64, i64 } %t1326, ptr %a1330 - call void @finch_str_drop(ptr %a1330) - %t1331 = load { ptr, i64, i64 }, ptr %a1327 - call void @finch.gen.emit(ptr %t1307, { ptr, i64, i64 } %t1331) - store { ptr, i64, i64 } %t1331, ptr %a1332 - call void @finch_str_drop(ptr %a1332) - %t1333 = load ptr, ptr %a1 - %t1334 = load %S.gen.Val, ptr %a1285 - call void @finch.gen.release(ptr %t1333, %S.gen.Val %t1334) - %t1335 = load ptr, ptr %a1 - %t1336 = load { ptr, i64, i64 }, ptr %a1306 - %t1337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1335, { ptr, i64, i64 } { ptr @.str.5393, i64 17, i64 0 }, { ptr, i64, i64 } %t1336) - %t1338 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1337, 0 - %t1339 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5394, i64 3, i64 0 }) - %t1340 = insertvalue %S.gen.Val %t1338, %S.ast.Type %t1339, 1 - %t1341 = insertvalue %S.gen.Val %t1340, i1 true, 2 - call void @finch_str_drop(ptr %a1306) - call void @finch.drop.S_gen_Val(ptr %a1285) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1341 -endif8304: - %t1342 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1342, ptr %a1343 - store { ptr, i64, i64 } { ptr @.str.5395, i64 3, i64 0 }, ptr %a1344 - %t1345 = call i32 @finch_str_eq(ptr %a1343, ptr %a1344) - %t1346 = icmp ne i32 %t1345, 0 - br i1 %t1346, label %then8310, label %endif8312 -then8310: - %t1347 = load ptr, ptr %a1 - %t1348 = load %S.ast.Node, ptr %a2 - %t1349 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1347, %S.ast.Node %t1348, i64 0, i64 1, { ptr, i64, i64 } %t1349) - %t1350 = load ptr, ptr %a1 - %t1351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1352 = load { ptr, i64, i64 }, ptr %t1351 - %t1353 = extractvalue { ptr, i64, i64 } %t1352, 1 - %t1354 = icmp uge i64 0, %t1353 - br i1 %t1354, label %range8313, label %inrange8314 -range8313: - call void @finch_panic_index(ptr @.str.5396, i64 5016, i64 0, i64 %t1353) - unreachable -inrange8314: - %t1355 = extractvalue { ptr, i64, i64 } %t1352, 0 - %t1356 = getelementptr inbounds %S.ast.Node, ptr %t1355, i64 0 - %t1357 = load %S.ast.Node, ptr %t1356 - %t1358 = call %S.gen.Val @finch.gen.expr(ptr %t1350, %S.ast.Node %t1357) - store %S.gen.Val %t1358, ptr %a1359 - %t1360 = load ptr, ptr %a1 - %t1361 = load ptr, ptr %a1 - %t1362 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1363 = load %S.ast.Type, ptr %t1362 - %t1364 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1361, %S.ast.Type %t1363) - store { ptr, i64, i64 } { ptr @.str.5397, i64 26, i64 0 }, ptr %a1366 - store { ptr, i64, i64 } %t1364, ptr %a1367 - call void @finch_str_concat(ptr %a1365, ptr %a1366, ptr %a1367) - store { ptr, i64, i64 } %t1364, ptr %a1368 - call void @finch_str_drop(ptr %a1368) - %t1369 = load { ptr, i64, i64 }, ptr %a1365 - store { ptr, i64, i64 } %t1369, ptr %a1371 - store { ptr, i64, i64 } { ptr @.str.5398, i64 1, i64 0 }, ptr %a1372 - call void @finch_str_concat(ptr %a1370, ptr %a1371, ptr %a1372) - store { ptr, i64, i64 } %t1369, ptr %a1373 - call void @finch_str_drop(ptr %a1373) - %t1374 = load { ptr, i64, i64 }, ptr %a1370 - %t1375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1360, { ptr, i64, i64 } %t1374) - store { ptr, i64, i64 } %t1374, ptr %a1376 - call void @finch_str_drop(ptr %a1376) - store { ptr, i64, i64 } %t1375, ptr %a1377 - %t1378 = load ptr, ptr %a1 - %t1379 = load ptr, ptr %a1 - %t1380 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1381 = load %S.ast.Type, ptr %t1380 - %t1382 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1379, %S.ast.Type %t1381) - %t1383 = load ptr, ptr %a1 - %t1384 = load %S.gen.Val, ptr %a1359 - %t1385 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1383, %S.gen.Val %t1384) - %t1386 = load { ptr, i64, i64 }, ptr %a1377 - call void @finch.gen.store(ptr %t1378, { ptr, i64, i64 } %t1382, { ptr, i64, i64 } %t1385, { ptr, i64, i64 } %t1386) - store { ptr, i64, i64 } %t1382, ptr %a1387 - call void @finch_str_drop(ptr %a1387) - store { ptr, i64, i64 } %t1385, ptr %a1388 - call void @finch_str_drop(ptr %a1388) - %t1389 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1389, ptr %a1390 - call void @finch_str_copy(ptr %a1391, ptr %a1390) - %t1392 = load { ptr, i64, i64 }, ptr %a1391 - %t1393 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1392, 0 - %t1394 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1395 = load %S.ast.Type, ptr %t1394 - %t1396 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1395) - %t1397 = insertvalue %S.gen.Val %t1393, %S.ast.Type %t1396, 1 - call void @finch_str_drop(ptr %a1377) - call void @finch.drop.S_gen_Val(ptr %a1359) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1397 -endif8312: - %t1398 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1398, ptr %a1399 - store { ptr, i64, i64 } { ptr @.str.5399, i64 4, i64 0 }, ptr %a1400 - %t1401 = call i32 @finch_str_eq(ptr %a1399, ptr %a1400) - %t1402 = icmp ne i32 %t1401, 0 - br i1 %t1402, label %then8315, label %endif8317 -then8315: - %t1403 = load ptr, ptr %a1 - %t1404 = load %S.ast.Node, ptr %a2 - %t1405 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1403, %S.ast.Node %t1404, i64 0, i64 1, { ptr, i64, i64 } %t1405) - %t1406 = load ptr, ptr %a1 - %t1407 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1408 = load { ptr, i64, i64 }, ptr %t1407 - %t1409 = extractvalue { ptr, i64, i64 } %t1408, 1 - %t1410 = icmp uge i64 0, %t1409 - br i1 %t1410, label %range8318, label %inrange8319 -range8318: - call void @finch_panic_index(ptr @.str.5400, i64 5023, i64 0, i64 %t1409) - unreachable -inrange8319: - %t1411 = extractvalue { ptr, i64, i64 } %t1408, 0 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %t1411, i64 0 - %t1413 = load %S.ast.Node, ptr %t1412 - %t1414 = call %S.gen.Val @finch.gen.expr(ptr %t1406, %S.ast.Node %t1413) - store %S.gen.Val %t1414, ptr %a1415 - %t1416 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1417 = getelementptr inbounds %S.ast.Type, ptr %t1416, i32 0, i32 0 - %t1418 = load { ptr, i64, i64 }, ptr %t1417 - store { ptr, i64, i64 } %t1418, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5401, i64 3, i64 0 }, ptr %a1420 - %t1421 = call i32 @finch_str_eq(ptr %a1419, ptr %a1420) - %t1422 = icmp eq i32 %t1421, 0 - br i1 %t1422, label %then8320, label %endif8322 -then8320: - %t1423 = load ptr, ptr %a1 - %t1424 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1425 = load { ptr, i64, i64 }, ptr %t1424 - %t1426 = extractvalue { ptr, i64, i64 } %t1425, 1 - %t1427 = icmp uge i64 0, %t1426 - br i1 %t1427, label %range8323, label %inrange8324 -range8323: - call void @finch_panic_index(ptr @.str.5402, i64 5025, i64 0, i64 %t1426) - unreachable -inrange8324: - %t1428 = extractvalue { ptr, i64, i64 } %t1425, 0 - %t1429 = getelementptr inbounds %S.ast.Node, ptr %t1428, i64 0 - %t1430 = load %S.ast.Node, ptr %t1429 - call void @finch.gen.fail(ptr %t1423, %S.ast.Node %t1430, { ptr, i64, i64 } { ptr @.str.5403, i64 119, i64 0 }) - br label %endif8322 -endif8322: - %t1431 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1432 = getelementptr inbounds %S.ast.Type, ptr %t1431, i32 0, i32 1 - %t1433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1432, i32 0, i32 1 - %t1434 = load i64, ptr %t1433 - %t1435 = icmp sgt i64 %t1434, 0 - br label %logic.from8325 -logic.from8325: - br i1 %t1435, label %logic.rhs8326, label %logic.end8327 -logic.rhs8326: - %t1436 = load ptr, ptr %a1 - %t1437 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.ast.Type, ptr %t1437, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - %t1440 = extractvalue { ptr, i64, i64 } %t1439, 1 - %t1441 = icmp uge i64 0, %t1440 - br i1 %t1441, label %range8328, label %inrange8329 -range8328: - call void @finch_panic_index(ptr @.str.5404, i64 5027, i64 0, i64 %t1440) - unreachable -inrange8329: - %t1442 = extractvalue { ptr, i64, i64 } %t1439, 0 - %t1443 = getelementptr inbounds %S.ast.Type, ptr %t1442, i64 0 - %t1444 = load %S.ast.Type, ptr %t1443 - %t1445 = call i1 @finch.gen.owning(ptr %t1436, %S.ast.Type %t1444) - br label %logic.rend8330 -logic.rend8330: - br label %logic.end8327 -logic.end8327: - %t1446 = phi i1 [ false, %logic.from8325 ], [ %t1445, %logic.rend8330 ] - br i1 %t1446, label %then8331, label %endif8333 -then8331: - %t1447 = load ptr, ptr %a1 - %t1448 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1447, { ptr, i64, i64 } { ptr @.str.5405, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1448, ptr %a1449 - %t1450 = load ptr, ptr %a1 - %t1451 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1450, { ptr, i64, i64 } { ptr @.str.5406, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1451, ptr %a1452 - %t1453 = load ptr, ptr %a1 - %t1454 = load ptr, ptr %a1 - %t1455 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1456 = load { ptr, i64, i64 }, ptr %t1455 - store { ptr, i64, i64 } { ptr @.str.5407, i64 12, i64 0 }, ptr %a1458 - store { ptr, i64, i64 } %t1456, ptr %a1459 - call void @finch_str_concat(ptr %a1457, ptr %a1458, ptr %a1459) - %t1460 = load { ptr, i64, i64 }, ptr %a1457 - store { ptr, i64, i64 } %t1460, ptr %a1462 - store { ptr, i64, i64 } { ptr @.str.5408, i64 6, i64 0 }, ptr %a1463 - call void @finch_str_concat(ptr %a1461, ptr %a1462, ptr %a1463) - store { ptr, i64, i64 } %t1460, ptr %a1464 - call void @finch_str_drop(ptr %a1464) - %t1465 = load { ptr, i64, i64 }, ptr %a1461 - %t1466 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1454, { ptr, i64, i64 } %t1465) - store { ptr, i64, i64 } %t1465, ptr %a1467 - call void @finch_str_drop(ptr %a1467) - %t1468 = load { ptr, i64, i64 }, ptr %a1452 - %t1469 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.condBr(ptr %t1453, { ptr, i64, i64 } %t1466, { ptr, i64, i64 } %t1468, { ptr, i64, i64 } %t1469) - store { ptr, i64, i64 } %t1466, ptr %a1470 - call void @finch_str_drop(ptr %a1470) - %t1471 = load ptr, ptr %a1 - %t1472 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.label(ptr %t1471, { ptr, i64, i64 } %t1472) - %t1473 = load ptr, ptr %a1 - %t1474 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1475 = load { ptr, i64, i64 }, ptr %t1474 - %t1476 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1477 = getelementptr inbounds %S.ast.Type, ptr %t1476, i32 0, i32 1 - %t1478 = load { ptr, i64, i64 }, ptr %t1477 - %t1479 = extractvalue { ptr, i64, i64 } %t1478, 1 - %t1480 = icmp uge i64 0, %t1479 - br i1 %t1480, label %range8334, label %inrange8335 -range8334: - call void @finch_panic_index(ptr @.str.5409, i64 5032, i64 0, i64 %t1479) - unreachable -inrange8335: - %t1481 = extractvalue { ptr, i64, i64 } %t1478, 0 - %t1482 = getelementptr inbounds %S.ast.Type, ptr %t1481, i64 0 - %t1483 = load %S.ast.Type, ptr %t1482 - call void @finch.gen.dropAt(ptr %t1473, { ptr, i64, i64 } %t1475, %S.ast.Type %t1483) - %t1484 = load ptr, ptr %a1 - %t1485 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.br(ptr %t1484, { ptr, i64, i64 } %t1485) - %t1486 = load ptr, ptr %a1 - %t1487 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.label(ptr %t1486, { ptr, i64, i64 } %t1487) - call void @finch_str_drop(ptr %a1452) - call void @finch_str_drop(ptr %a1449) - br label %endif8333 -endif8333: - %t1488 = load ptr, ptr %a1 - %t1489 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1490 = load { ptr, i64, i64 }, ptr %t1489 - store { ptr, i64, i64 } { ptr @.str.5410, i64 20, i64 0 }, ptr %a1492 - store { ptr, i64, i64 } %t1490, ptr %a1493 - call void @finch_str_concat(ptr %a1491, ptr %a1492, ptr %a1493) - %t1494 = load { ptr, i64, i64 }, ptr %a1491 - store { ptr, i64, i64 } %t1494, ptr %a1496 - store { ptr, i64, i64 } { ptr @.str.5411, i64 1, i64 0 }, ptr %a1497 - call void @finch_str_concat(ptr %a1495, ptr %a1496, ptr %a1497) - store { ptr, i64, i64 } %t1494, ptr %a1498 - call void @finch_str_drop(ptr %a1498) - %t1499 = load { ptr, i64, i64 }, ptr %a1495 - call void @finch.gen.emit(ptr %t1488, { ptr, i64, i64 } %t1499) - store { ptr, i64, i64 } %t1499, ptr %a1500 - call void @finch_str_drop(ptr %a1500) - %t1501 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5412, i64 4, i64 0 }) - %t1502 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1501, 1 - call void @finch.drop.S_gen_Val(ptr %a1415) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1502 -endif8317: - %t1503 = load ptr, ptr %a1 - %t1504 = load ptr, ptr %a1 - %t1505 = icmp eq ptr %t1504, null - br i1 %t1505, label %panic8336, label %ok8337 -panic8336: - call void @finch_panic(ptr @.str.5413, i64 5039, ptr @.str.5414) - unreachable -ok8337: - %t1506 = getelementptr inbounds %S.gen.Gen, ptr %t1504, i32 0, i32 14 - %t1507 = load { ptr, i64, i64 }, ptr %t1506 - %t1508 = load { ptr, i64, i64 }, ptr %a8 - %t1509 = call i64 @finch.gen.findFn(ptr %t1503, { ptr, i64, i64 } %t1507, { ptr, i64, i64 } %t1508) - store i64 %t1509, ptr %a1510 - %t1511 = load i64, ptr %a1510 - %t1512 = icmp sge i64 %t1511, 0 - br i1 %t1512, label %then8338, label %endif8340 -then8338: - %t1513 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1514 = getelementptr inbounds %S.ast.Type, ptr %t1513, i32 0, i32 1 - %t1515 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1514, i32 0, i32 1 - %t1516 = load i64, ptr %t1515 - %t1517 = icmp sgt i64 %t1516, 0 - br i1 %t1517, label %then8341, label %endif8343 -then8341: - %t1518 = load ptr, ptr %a1 - %t1519 = load %S.ast.Node, ptr %a2 - %t1520 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5415, i64 1, i64 0 }, ptr %a1522 - store { ptr, i64, i64 } %t1520, ptr %a1523 - call void @finch_str_concat(ptr %a1521, ptr %a1522, ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1521 - store { ptr, i64, i64 } %t1524, ptr %a1526 - store { ptr, i64, i64 } { ptr @.str.5416, i64 47, i64 0 }, ptr %a1527 - call void @finch_str_concat(ptr %a1525, ptr %a1526, ptr %a1527) - store { ptr, i64, i64 } %t1524, ptr %a1528 - call void @finch_str_drop(ptr %a1528) - %t1529 = load { ptr, i64, i64 }, ptr %a1525 - call void @finch.gen.fail(ptr %t1518, %S.ast.Node %t1519, { ptr, i64, i64 } %t1529) - store { ptr, i64, i64 } %t1529, ptr %a1530 - call void @finch_str_drop(ptr %a1530) - br label %endif8343 -endif8343: - %t1531 = load ptr, ptr %a1 - %t1532 = load i64, ptr %a1510 - %t1533 = load %S.ast.Node, ptr %a2 - %t1534 = load { ptr, i64, i64 }, ptr %a8 - %t1535 = call %S.gen.Val @finch.gen.callFn(ptr %t1531, i64 %t1532, %S.ast.Node %t1533, i64 0, { ptr, i64, i64 } %t1534, { ptr, i64, i64 } { ptr @.str.5417, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5418, i64 0, i64 0 }) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1535 -endif8340: - %t1536 = load ptr, ptr %a1 - %t1537 = load ptr, ptr %a1 - %t1538 = icmp eq ptr %t1537, null - br i1 %t1538, label %panic8344, label %ok8345 -panic8344: - call void @finch_panic(ptr @.str.5419, i64 5046, ptr @.str.5420) - unreachable -ok8345: - %t1539 = getelementptr inbounds %S.gen.Gen, ptr %t1537, i32 0, i32 14 - %t1540 = load { ptr, i64, i64 }, ptr %t1539 - %t1541 = load { ptr, i64, i64 }, ptr %a8 - %t1542 = call i64 @finch.gen.findTemplate(ptr %t1536, { ptr, i64, i64 } %t1540, { ptr, i64, i64 } %t1541, { ptr, i64, i64 } { ptr @.str.5421, i64 0, i64 0 }, i1 false) - store i64 %t1542, ptr %a1543 - %t1544 = load i64, ptr %a1543 - %t1545 = icmp sge i64 %t1544, 0 - br i1 %t1545, label %then8346, label %endif8348 -then8346: - %t1546 = load ptr, ptr %a1 - %t1547 = load %S.ast.Node, ptr %a2 - %t1548 = load i64, ptr %a1543 - %t1549 = load { ptr, i64, i64 }, ptr %a8 - %t1550 = call %S.gen.Val @finch.gen.genericCall(ptr %t1546, %S.ast.Node %t1547, i64 %t1548, i64 0, { ptr, i64, i64 } %t1549) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1550 -endif8348: - %t1551 = load ptr, ptr %a1 - %t1552 = load ptr, ptr %a1 - %t1553 = icmp eq ptr %t1552, null - br i1 %t1553, label %panic8349, label %ok8350 -panic8349: - call void @finch_panic(ptr @.str.5422, i64 5050, ptr @.str.5423) - unreachable -ok8350: - %t1554 = getelementptr inbounds %S.gen.Gen, ptr %t1552, i32 0, i32 14 - %t1555 = load { ptr, i64, i64 }, ptr %t1554 - %t1556 = load { ptr, i64, i64 }, ptr %a8 - %t1557 = call i64 @finch.gen.findTemplate(ptr %t1551, { ptr, i64, i64 } %t1555, { ptr, i64, i64 } %t1556, { ptr, i64, i64 } { ptr @.str.5424, i64 0, i64 0 }, i1 true) - %t1558 = icmp sge i64 %t1557, 0 - br i1 %t1558, label %then8351, label %endif8353 -then8351: - %t1559 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1560 = getelementptr inbounds %S.ast.Type, ptr %t1559, i32 0, i32 1 - %t1561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1560, i32 0, i32 1 - %t1562 = load i64, ptr %t1561 - %t1563 = icmp eq i64 %t1562, 0 - br i1 %t1563, label %then8354, label %endif8356 -then8354: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5425, i64 1, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5426, i64 42, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - %t1576 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1575, ptr %a1578 - store { ptr, i64, i64 } %t1576, ptr %a1579 - call void @finch_str_concat(ptr %a1577, ptr %a1578, ptr %a1579) - store { ptr, i64, i64 } %t1575, ptr %a1580 - call void @finch_str_drop(ptr %a1580) - %t1581 = load { ptr, i64, i64 }, ptr %a1577 - store { ptr, i64, i64 } %t1581, ptr %a1583 - store { ptr, i64, i64 } { ptr @.str.5427, i64 10, i64 0 }, ptr %a1584 - call void @finch_str_concat(ptr %a1582, ptr %a1583, ptr %a1584) - store { ptr, i64, i64 } %t1581, ptr %a1585 - call void @finch_str_drop(ptr %a1585) - %t1586 = load { ptr, i64, i64 }, ptr %a1582 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1586) - store { ptr, i64, i64 } %t1586, ptr %a1587 - call void @finch_str_drop(ptr %a1587) - br label %endif8356 -endif8356: - store { ptr, i64, i64 } zeroinitializer, ptr %a1588 - %t1589 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1590 = getelementptr inbounds %S.ast.Type, ptr %t1589, i32 0, i32 1 - store i64 0, ptr %a1591 - br label %each.cond8357 -each.cond8357: - %t1592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1590, i32 0, i32 1 - %t1593 = load i64, ptr %t1592 - %t1594 = load i64, ptr %a1591 - %t1595 = icmp slt i64 %t1594, %t1593 - br i1 %t1595, label %each.body8358, label %each.end8360 -each.body8358: - %t1596 = load ptr, ptr %t1590 - %t1597 = getelementptr inbounds %S.ast.Type, ptr %t1596, i64 %t1594 - %t1598 = load %S.ast.Type, ptr %t1597 - store %S.ast.Type %t1598, ptr %a1599 - %t1600 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1588, i32 0, i32 1 - %t1601 = load ptr, ptr %a1 - %t1602 = load %S.ast.Type, ptr %a1599 - %t1603 = load %S.ast.Node, ptr %a2 - %t1604 = call %S.ast.Type @finch.gen.resolve(ptr %t1601, %S.ast.Type %t1602, %S.ast.Node %t1603) - %t1605 = load i64, ptr %t1600 - %t1606 = add i64 %t1605, 1 - call void @finch_arr_reserve(ptr %a1588, i64 %t1606, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1607 = load ptr, ptr %a1588 - %t1608 = getelementptr inbounds %S.ast.Type, ptr %t1607, i64 %t1605 - store %S.ast.Type %t1604, ptr %t1608 - store i64 %t1606, ptr %t1600 - br label %each.step8359 -each.step8359: - %t1609 = load i64, ptr %a1591 - %t1610 = add i64 %t1609, 1 - store i64 %t1610, ptr %a1591 - br label %each.cond8357 -each.end8360: - %t1611 = load ptr, ptr %a1 - %t1612 = load ptr, ptr %a1 - %t1613 = icmp eq ptr %t1612, null - br i1 %t1613, label %panic8361, label %ok8362 -panic8361: - call void @finch_panic(ptr @.str.5428, i64 5059, ptr @.str.5429) - unreachable -ok8362: - %t1614 = getelementptr inbounds %S.gen.Gen, ptr %t1612, i32 0, i32 14 - %t1615 = load { ptr, i64, i64 }, ptr %t1614 - %t1616 = load { ptr, i64, i64 }, ptr %a8 - %t1617 = load { ptr, i64, i64 }, ptr %a1588 - %t1618 = load %S.ast.Node, ptr %a2 - %t1619 = call %S.ast.Type @finch.gen.instStruct(ptr %t1611, { ptr, i64, i64 } %t1615, { ptr, i64, i64 } %t1616, { ptr, i64, i64 } %t1617, %S.ast.Node %t1618) - store %S.ast.Type %t1619, ptr %a1620 - %t1621 = load ptr, ptr %a1 - %t1622 = load ptr, ptr %a1 - %t1623 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 3 - %t1624 = load { ptr, i64, i64 }, ptr %t1623 - %t1625 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 2 - %t1626 = load { ptr, i64, i64 }, ptr %t1625 - %t1627 = call i64 @finch.gen.findStruct(ptr %t1622, { ptr, i64, i64 } %t1624, { ptr, i64, i64 } %t1626) - %t1628 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1629 = load { ptr, i64, i64 }, ptr %t1628 - %t1630 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1631 = load { ptr, i64, i64 }, ptr %t1630 - %t1632 = load %S.ast.Node, ptr %a2 - %t1633 = call %S.gen.Val @finch.gen.construct(ptr %t1621, i64 %t1627, { ptr, i64, i64 } %t1629, { ptr, i64, i64 } %t1631, %S.ast.Node %t1632) - call void @finch.drop.S_ast_Type(ptr %a1620) - call void @finch.drop.arr_S_ast_Type(ptr %a1588) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1633 -endif8353: - %t1634 = load ptr, ptr %a1 - %t1635 = load ptr, ptr %a1 - %t1636 = icmp eq ptr %t1635, null - br i1 %t1636, label %panic8363, label %ok8364 -panic8363: - call void @finch_panic(ptr @.str.5430, i64 5062, ptr @.str.5431) - unreachable -ok8364: - %t1637 = getelementptr inbounds %S.gen.Gen, ptr %t1635, i32 0, i32 14 - %t1638 = load { ptr, i64, i64 }, ptr %t1637 - %t1639 = load { ptr, i64, i64 }, ptr %a8 - %t1640 = call i64 @finch.gen.findStruct(ptr %t1634, { ptr, i64, i64 } %t1638, { ptr, i64, i64 } %t1639) - store i64 %t1640, ptr %a1641 - %t1642 = load i64, ptr %a1641 - %t1643 = icmp sge i64 %t1642, 0 - br i1 %t1643, label %then8365, label %endif8367 -then8365: - %t1644 = load ptr, ptr %a1 - %t1645 = icmp eq ptr %t1644, null - br i1 %t1645, label %panic8368, label %ok8369 -panic8368: - call void @finch_panic(ptr @.str.5432, i64 5064, ptr @.str.5433) - unreachable -ok8369: - %t1646 = getelementptr inbounds %S.gen.Gen, ptr %t1644, i32 0, i32 16 - %t1647 = load i64, ptr %a1641 - %t1648 = load { ptr, i64, i64 }, ptr %t1646 - %t1649 = extractvalue { ptr, i64, i64 } %t1648, 1 - %t1650 = icmp uge i64 %t1647, %t1649 - br i1 %t1650, label %range8370, label %inrange8371 -range8370: - call void @finch_panic_index(ptr @.str.5434, i64 5064, i64 %t1647, i64 %t1649) - unreachable -inrange8371: - %t1651 = extractvalue { ptr, i64, i64 } %t1648, 0 - %t1652 = getelementptr inbounds %S.gen.StructDef, ptr %t1651, i64 %t1647 - %t1653 = load %S.gen.StructDef, ptr %t1652 - store %S.gen.StructDef %t1653, ptr %a1654 - call void @finch.copy.S_gen_StructDef(ptr %a1655, ptr %a1654) - %t1656 = load %S.gen.StructDef, ptr %a1655 - store %S.gen.StructDef %t1656, ptr %a1657 - %t1658 = load ptr, ptr %a1 - %t1659 = icmp eq ptr %t1658, null - br i1 %t1659, label %panic8372, label %ok8373 -panic8372: - call void @finch_panic(ptr @.str.5435, i64 5065, ptr @.str.5436) - unreachable -ok8373: - %t1660 = getelementptr inbounds %S.gen.Gen, ptr %t1658, i32 0, i32 28 - %t1661 = load i1, ptr %t1660 - br label %logic.from8374 -logic.from8374: - br i1 %t1661, label %logic.rhs8375, label %logic.end8376 -logic.rhs8375: - %t1662 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 2 - %t1663 = load i1, ptr %t1662 - %t1664 = xor i1 %t1663, true - br label %logic.rend8377 -logic.rend8377: - br label %logic.end8376 -logic.end8376: - %t1665 = phi i1 [ false, %logic.from8374 ], [ %t1664, %logic.rend8377 ] - br i1 %t1665, label %then8378, label %endif8380 -then8378: - %t1666 = load ptr, ptr %a1 - %t1667 = icmp eq ptr %t1666, null - br i1 %t1667, label %panic8381, label %ok8382 -panic8381: - call void @finch_panic(ptr @.str.5437, i64 5066, ptr @.str.5438) - unreachable -ok8382: - %t1668 = getelementptr inbounds %S.gen.Gen, ptr %t1666, i32 0, i32 0 - %t1669 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 13 - %t1670 = load i64, ptr %t1669 - %t1671 = load { ptr, i64, i64 }, ptr %t1668 - %t1672 = extractvalue { ptr, i64, i64 } %t1671, 1 - %t1673 = icmp uge i64 %t1670, %t1672 - br i1 %t1673, label %range8383, label %inrange8384 -range8383: - call void @finch_panic_index(ptr @.str.5439, i64 5066, i64 %t1670, i64 %t1672) - unreachable -inrange8384: - %t1674 = extractvalue { ptr, i64, i64 } %t1671, 0 - %t1675 = getelementptr inbounds %S.ast.Program, ptr %t1674, i64 %t1670 - %t1676 = getelementptr inbounds %S.ast.Program, ptr %t1675, i32 0, i32 6 - %t1677 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 14 - %t1678 = load i64, ptr %t1677 - %t1679 = load { ptr, i64, i64 }, ptr %t1676 - %t1680 = extractvalue { ptr, i64, i64 } %t1679, 1 - %t1681 = icmp uge i64 %t1678, %t1680 - br i1 %t1681, label %range8385, label %inrange8386 -range8385: - call void @finch_panic_index(ptr @.str.5440, i64 5066, i64 %t1678, i64 %t1680) - unreachable -inrange8386: - %t1682 = extractvalue { ptr, i64, i64 } %t1679, 0 - %t1683 = getelementptr inbounds %S.ast.Node, ptr %t1682, i64 %t1678 - %t1684 = load %S.ast.Node, ptr %t1683 - store %S.ast.Node %t1684, ptr %a1685 - call void @finch.copy.S_ast_Node(ptr %a1686, ptr %a1685) - %t1687 = load %S.ast.Node, ptr %a1686 - store %S.ast.Node %t1687, ptr %a1688 - %t1689 = load ptr, ptr %a1 - %t1690 = load %S.ast.Node, ptr %a2 - %t1691 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t1692 = load i64, ptr %t1691 - %t1693 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t1694 = load i64, ptr %t1693 - %t1695 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 1 - %t1696 = load { ptr, i64, i64 }, ptr %t1695 - store { ptr, i64, i64 } { ptr @.str.5441, i64 16, i64 0 }, ptr %a1698 - store { ptr, i64, i64 } %t1696, ptr %a1699 - call void @finch_str_concat(ptr %a1697, ptr %a1698, ptr %a1699) - %t1700 = load { ptr, i64, i64 }, ptr %a1697 - store { ptr, i64, i64 } %t1700, ptr %a1702 - store { ptr, i64, i64 } { ptr @.str.5442, i64 3, i64 0 }, ptr %a1703 - call void @finch_str_concat(ptr %a1701, ptr %a1702, ptr %a1703) - store { ptr, i64, i64 } %t1700, ptr %a1704 - call void @finch_str_drop(ptr %a1704) - %t1705 = load { ptr, i64, i64 }, ptr %a1701 - %t1706 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 11 - %t1707 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1706, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5443, i64 2, i64 0 }, ptr %a1708 - call void @finch_str_join(ptr %a1709, ptr %t1706, ptr %a1708) - %t1710 = load { ptr, i64, i64 }, ptr %a1709 - store { ptr, i64, i64 } %t1705, ptr %a1712 - store { ptr, i64, i64 } %t1710, ptr %a1713 - call void @finch_str_concat(ptr %a1711, ptr %a1712, ptr %a1713) - store { ptr, i64, i64 } %t1705, ptr %a1714 - call void @finch_str_drop(ptr %a1714) - store { ptr, i64, i64 } %t1710, ptr %a1715 - call void @finch_str_drop(ptr %a1715) - %t1716 = load { ptr, i64, i64 }, ptr %a1711 - store { ptr, i64, i64 } %t1716, ptr %a1718 - store { ptr, i64, i64 } { ptr @.str.5444, i64 6, i64 0 }, ptr %a1719 - call void @finch_str_concat(ptr %a1717, ptr %a1718, ptr %a1719) - store { ptr, i64, i64 } %t1716, ptr %a1720 - call void @finch_str_drop(ptr %a1720) - %t1721 = load { ptr, i64, i64 }, ptr %a1717 - %t1722 = load ptr, ptr %a1 - %t1723 = icmp eq ptr %t1722, null - br i1 %t1723, label %panic8387, label %ok8388 -panic8387: - call void @finch_panic(ptr @.str.5445, i64 5067, ptr @.str.5446) - unreachable -ok8388: - %t1724 = getelementptr inbounds %S.gen.Gen, ptr %t1722, i32 0, i32 1 - %t1725 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 13 - %t1726 = load i64, ptr %t1725 - %t1727 = load { ptr, i64, i64 }, ptr %t1724 - %t1728 = extractvalue { ptr, i64, i64 } %t1727, 1 - %t1729 = icmp uge i64 %t1726, %t1728 - br i1 %t1729, label %range8389, label %inrange8390 -range8389: - call void @finch_panic_index(ptr @.str.5447, i64 5067, i64 %t1726, i64 %t1728) - unreachable -inrange8390: - %t1730 = extractvalue { ptr, i64, i64 } %t1727, 0 - %t1731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1730, i64 %t1726 - %t1732 = load { ptr, i64, i64 }, ptr %t1731 - %t1733 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 11 - %t1734 = load i64, ptr %t1733 - %t1735 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 12 - %t1736 = load i64, ptr %t1735 - call void @finch.gen.noteRef(ptr %t1689, %S.ast.Node %t1690, i64 %t1692, i64 %t1694, { ptr, i64, i64 } %t1721, { ptr, i64, i64 } %t1732, i64 %t1734, i64 %t1736) - store { ptr, i64, i64 } %t1721, ptr %a1737 - call void @finch_str_drop(ptr %a1737) - call void @finch.drop.S_ast_Node(ptr %a1688) - br label %endif8380 -endif8380: - %t1738 = load ptr, ptr %a1 - %t1739 = load i64, ptr %a1641 - %t1740 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1741 = load { ptr, i64, i64 }, ptr %t1740 - %t1742 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1743 = load { ptr, i64, i64 }, ptr %t1742 - %t1744 = load %S.ast.Node, ptr %a2 - %t1745 = call %S.gen.Val @finch.gen.construct(ptr %t1738, i64 %t1739, { ptr, i64, i64 } %t1741, { ptr, i64, i64 } %t1743, %S.ast.Node %t1744) - call void @finch.drop.S_gen_StructDef(ptr %a1657) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1745 -endif8367: - %t1746 = load ptr, ptr %a1 - %t1747 = load ptr, ptr %a1 - %t1748 = icmp eq ptr %t1747, null - br i1 %t1748, label %panic8391, label %ok8392 -panic8391: - call void @finch_panic(ptr @.str.5448, i64 5071, ptr @.str.5449) - unreachable -ok8392: - %t1749 = getelementptr inbounds %S.gen.Gen, ptr %t1747, i32 0, i32 14 - %t1750 = load { ptr, i64, i64 }, ptr %t1749 - %t1751 = load { ptr, i64, i64 }, ptr %a8 - %t1752 = call i64 @finch.gen.findEnum(ptr %t1746, { ptr, i64, i64 } %t1750, { ptr, i64, i64 } %t1751) - store i64 %t1752, ptr %a1753 - %t1754 = load i64, ptr %a1753 - %t1755 = icmp sge i64 %t1754, 0 - br i1 %t1755, label %then8393, label %endif8395 -then8393: - %t1756 = load ptr, ptr %a1 - %t1757 = load %S.ast.Node, ptr %a2 - %t1758 = load i64, ptr %a1753 - %t1759 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1756, %S.ast.Node %t1757, i64 %t1758) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1759 -endif8395: - %t1760 = load ptr, ptr %a1 - %t1761 = icmp eq ptr %t1760, null - br i1 %t1761, label %panic8396, label %ok8397 -panic8396: - call void @finch_panic(ptr @.str.5450, i64 5075, ptr @.str.5451) - unreachable -ok8397: - %t1762 = getelementptr inbounds %S.gen.Gen, ptr %t1760, i32 0, i32 26 - %t1763 = getelementptr inbounds %S.cimport.CImports, ptr %t1762, i32 0, i32 0 - %t1764 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1764, ptr %a1765 - %t1766 = call i64 @finch_map_find(ptr %t1763, ptr %a1765, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1767 = icmp sge i64 %t1766, 0 - br i1 %t1767, label %then8398, label %endif8400 -then8398: - %t1768 = load ptr, ptr %a1 - %t1769 = load %S.ast.Node, ptr %a2 - %t1770 = load ptr, ptr %a1 - %t1771 = icmp eq ptr %t1770, null - br i1 %t1771, label %panic8401, label %ok8402 -panic8401: - call void @finch_panic(ptr @.str.5452, i64 5076, ptr @.str.5453) - unreachable -ok8402: - %t1772 = getelementptr inbounds %S.gen.Gen, ptr %t1770, i32 0, i32 26 - %t1773 = getelementptr inbounds %S.cimport.CImports, ptr %t1772, i32 0, i32 0 - %t1774 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1774, ptr %a1775 - %t1776 = call i64 @finch_map_find(ptr %t1773, ptr %a1775, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1777 = icmp slt i64 %t1776, 0 - br i1 %t1777, label %map.missing8403, label %map.found8404 -map.missing8403: - store { ptr, i64, i64 } zeroinitializer, ptr %a1778 - store { ptr, i64, i64 } %t1774, ptr %a1779 - call void @finch_buf_str(ptr %a1778, ptr %a1779, i32 1) - call void @finch_map_missing(ptr @.str.5454, i64 5076, ptr %a1778) - unreachable -map.found8404: - %t1780 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1773, i32 0, i32 0 - %t1781 = load ptr, ptr %t1780 - %t1782 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1781, i64 %t1776 - %t1783 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1782, i32 0, i32 2 - %t1784 = load %S.cimport.CFunc, ptr %t1783 - %t1785 = call %S.gen.Val @finch.gen.callC(ptr %t1768, %S.ast.Node %t1769, %S.cimport.CFunc %t1784) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1785 -endif8400: - %t1786 = load ptr, ptr %a1 - %t1787 = load { ptr, i64, i64 }, ptr %a8 - %t1788 = call i64 @finch.gen.findStruct(ptr %t1786, { ptr, i64, i64 } { ptr @.str.5455, i64 1, i64 0 }, { ptr, i64, i64 } %t1787) - store i64 %t1788, ptr %a1641 - %t1789 = load i64, ptr %a1641 - %t1790 = icmp sge i64 %t1789, 0 - br i1 %t1790, label %then8405, label %endif8407 -then8405: - %t1791 = load ptr, ptr %a1 - %t1792 = load i64, ptr %a1641 - %t1793 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1794 = load { ptr, i64, i64 }, ptr %t1793 - %t1795 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1796 = load { ptr, i64, i64 }, ptr %t1795 - %t1797 = load %S.ast.Node, ptr %a2 - %t1798 = call %S.gen.Val @finch.gen.construct(ptr %t1791, i64 %t1792, { ptr, i64, i64 } %t1794, { ptr, i64, i64 } %t1796, %S.ast.Node %t1797) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1798 -endif8407: - %t1799 = load ptr, ptr %a1 - %t1800 = load { ptr, i64, i64 }, ptr %a8 - %t1801 = call i64 @finch.gen.lookup(ptr %t1799, { ptr, i64, i64 } %t1800) - %t1802 = icmp sge i64 %t1801, 0 - br i1 %t1802, label %then8408, label %endif8410 -then8408: - %t1803 = load ptr, ptr %a1 - %t1804 = load %S.ast.Node, ptr %a2 - %t1805 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5456, i64 1, i64 0 }, ptr %a1807 - store { ptr, i64, i64 } %t1805, ptr %a1808 - call void @finch_str_concat(ptr %a1806, ptr %a1807, ptr %a1808) - %t1809 = load { ptr, i64, i64 }, ptr %a1806 - store { ptr, i64, i64 } %t1809, ptr %a1811 - store { ptr, i64, i64 } { ptr @.str.5457, i64 31, i64 0 }, ptr %a1812 - call void @finch_str_concat(ptr %a1810, ptr %a1811, ptr %a1812) - store { ptr, i64, i64 } %t1809, ptr %a1813 - call void @finch_str_drop(ptr %a1813) - %t1814 = load { ptr, i64, i64 }, ptr %a1810 - call void @finch.gen.fail(ptr %t1803, %S.ast.Node %t1804, { ptr, i64, i64 } %t1814) - store { ptr, i64, i64 } %t1814, ptr %a1815 - call void @finch_str_drop(ptr %a1815) - br label %endif8410 -endif8410: - %t1816 = load ptr, ptr %a1 - %t1817 = load %S.ast.Node, ptr %a2 - %t1818 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5458, i64 28, i64 0 }, ptr %a1820 - store { ptr, i64, i64 } %t1818, ptr %a1821 - call void @finch_str_concat(ptr %a1819, ptr %a1820, ptr %a1821) - %t1822 = load { ptr, i64, i64 }, ptr %a1819 - store { ptr, i64, i64 } %t1822, ptr %a1824 - store { ptr, i64, i64 } { ptr @.str.5459, i64 1, i64 0 }, ptr %a1825 - call void @finch_str_concat(ptr %a1823, ptr %a1824, ptr %a1825) - store { ptr, i64, i64 } %t1822, ptr %a1826 - call void @finch_str_drop(ptr %a1826) - %t1827 = load { ptr, i64, i64 }, ptr %a1823 - %t1828 = load { ptr, i64, i64 }, ptr %a8 - %t1829 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1828) - store { ptr, i64, i64 } %t1827, ptr %a1831 - store { ptr, i64, i64 } %t1829, ptr %a1832 - call void @finch_str_concat(ptr %a1830, ptr %a1831, ptr %a1832) - store { ptr, i64, i64 } %t1827, ptr %a1833 - call void @finch_str_drop(ptr %a1833) - store { ptr, i64, i64 } %t1829, ptr %a1834 - call void @finch_str_drop(ptr %a1834) - %t1835 = load { ptr, i64, i64 }, ptr %a1830 - call void @finch.gen.fail(ptr %t1816, %S.ast.Node %t1817, { ptr, i64, i64 } %t1835) - store { ptr, i64, i64 } %t1835, ptr %a1836 - call void @finch_str_drop(ptr %a1836) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca i64, align 16 - %a70 = alloca i64, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca %S.gen.Val, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a166 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca %S.gen.Val, align 16 - %a204 = alloca %S.gen.Val, align 16 - %a220 = alloca %S.gen.Val, align 16 - %a221 = alloca i64, align 16 - %a229 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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 %panic8411, label %ok8412 -panic8411: - call void @finch_panic(ptr @.str.5460, i64 5090, ptr @.str.5461) - unreachable -ok8412: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 15 - %t11 = load i64, ptr %a2 - %t12 = load { ptr, i64, i64 }, ptr %t10 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range8413, label %inrange8414 -range8413: - call void @finch_panic_index(ptr @.str.5462, i64 5090, i64 %t11, i64 %t13) - unreachable -inrange8414: - %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.from8415 -logic.from8415: - br i1 %t25, label %logic.rhs8416, label %logic.end8417 -logic.rhs8416: - %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.5463, 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.rend8418 -logic.rend8418: - br label %logic.end8417 -logic.end8417: - %t32 = phi i1 [ false, %logic.from8415 ], [ %t31, %logic.rend8418 ] - br i1 %t32, label %then8419, label %endif8421 -then8419: - %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.5464, i64 52, i64 0 }) - br label %endif8421 -endif8421: - %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 %then8422, label %endif8424 -then8422: - %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.5465, 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 %endif8424 -endif8424: - store { ptr, i64, i64 } zeroinitializer, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic8425, label %ok8426 -panic8425: - call void @finch_panic(ptr @.str.5466, i64 5101, ptr @.str.5467) - unreachable -ok8426: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load i64, ptr %t64 - store i64 %t65, ptr %a66 - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load i64, ptr %t68 - store i64 0, ptr %a70 - br label %for.cond8427 -for.cond8427: - %t71 = load i64, ptr %a70 - %t72 = icmp slt i64 %t71, %t69 - br i1 %t72, label %for.body8428, label %for.end8430 -for.body8428: - %t73 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t74 = load i64, ptr %a4 - %t75 = load i64, ptr %a70 - %t76 = add i64 %t74, %t75 - %t77 = load { ptr, i64, i64 }, ptr %t73 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range8431, label %inrange8432 -range8431: - call void @finch_panic_index(ptr @.str.5468, i64 5103, i64 %t76, i64 %t78) - unreachable -inrange8432: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds %S.ast.Node, ptr %t80, i64 %t76 - %t82 = load %S.ast.Node, ptr %t81 - store %S.ast.Node %t82, ptr %a83 - call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) - %t85 = load %S.ast.Node, ptr %a84 - store %S.ast.Node %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load ptr, ptr %a1 - %t89 = load %S.ast.Node, ptr %a86 - %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t91 = load i64, ptr %a70 - %t92 = load { ptr, i64, i64 }, ptr %t90 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 %t91, %t93 - br i1 %t94, label %range8433, label %inrange8434 -range8433: - call void @finch_panic_index(ptr @.str.5469, i64 5104, i64 %t91, i64 %t93) - unreachable -inrange8434: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Type, ptr %t95, i64 %t91 - %t97 = load %S.ast.Type, ptr %t96 - %t98 = call %S.gen.Val @finch.gen.exprWant(ptr %t88, %S.ast.Node %t89, %S.ast.Type %t97) - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t100 = load i64, ptr %a70 - %t101 = load { ptr, i64, i64 }, ptr %t99 - %t102 = extractvalue { ptr, i64, i64 } %t101, 1 - %t103 = icmp uge i64 %t100, %t102 - br i1 %t103, label %range8435, label %inrange8436 -range8435: - call void @finch_panic_index(ptr @.str.5470, i64 5104, i64 %t100, i64 %t102) - unreachable -inrange8436: - %t104 = extractvalue { ptr, i64, i64 } %t101, 0 - %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t100 - %t106 = load %S.ast.Type, ptr %t105 - %t107 = load %S.ast.Node, ptr %a86 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 - %t109 = load i64, ptr %a70 - %t110 = load { ptr, i64, i64 }, ptr %t108 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range8437, label %inrange8438 -range8437: - call void @finch_panic_index(ptr @.str.5472, i64 5104, i64 %t109, i64 %t111) - unreachable -inrange8438: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i64 %t109 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.5471, i64 10, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.5473, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = call %S.gen.Val @finch.gen.coerce(ptr %t87, %S.gen.Val %t98, %S.ast.Type %t106, %S.ast.Node %t107, { ptr, i64, i64 } %t124) - store %S.gen.Val %t98, ptr %a126 - call void @finch.drop.S_gen_Val(ptr %a126) - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_drop(ptr %a127) - store %S.gen.Val %t125, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t131 = load i64, ptr %a70 - %t132 = load { ptr, i64, i64 }, ptr %t130 - %t133 = extractvalue { ptr, i64, i64 } %t132, 1 - %t134 = icmp uge i64 %t131, %t133 - br i1 %t134, label %range8439, label %inrange8440 -range8439: - call void @finch_panic_index(ptr @.str.5474, i64 5106, i64 %t131, i64 %t133) - unreachable -inrange8440: - %t135 = extractvalue { ptr, i64, i64 } %t132, 0 - %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t131 - %t137 = load %S.ast.Type, ptr %t136 - %t138 = call i1 @finch.gen.owning(ptr %t129, %S.ast.Type %t137) - br label %logic.from8441 -logic.from8441: - br i1 %t138, label %logic.rhs8442, label %logic.end8443 -logic.rhs8442: - %t139 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t140 = load i1, ptr %t139 - %t141 = xor i1 %t140, true - br label %logic.rend8444 -logic.rend8444: - br label %logic.end8443 -logic.end8443: - %t142 = phi i1 [ false, %logic.from8441 ], [ %t141, %logic.rend8444 ] - br label %logic.from8445 -logic.from8445: - br i1 %t142, label %logic.rhs8446, label %logic.end8447 -logic.rhs8446: - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t144 = load i64, ptr %t143 - %t145 = icmp sgt i64 %t144, 0 - br label %logic.rend8448 -logic.rend8448: - br label %logic.end8447 -logic.end8447: - %t146 = phi i1 [ false, %logic.from8445 ], [ %t145, %logic.rend8448 ] - br label %logic.from8449 -logic.from8449: - br i1 %t146, label %logic.rhs8450, label %logic.end8451 -logic.rhs8450: - %t147 = load %S.ast.Node, ptr %a86 - %t148 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t147) - %t149 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - store { ptr, i64, i64 } %t148, ptr %a154 - call void @finch_str_drop(ptr %a154) - br label %logic.rend8452 -logic.rend8452: - br label %logic.end8451 -logic.end8451: - %t155 = phi i1 [ false, %logic.from8449 ], [ %t153, %logic.rend8452 ] - br i1 %t155, label %then8453, label %endif8455 -then8453: - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - %t161 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t156, { ptr, i64, i64 } %t158, %S.ast.Type %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t164 = load %S.ast.Type, ptr %t163 - store %S.ast.Type %t164, ptr %a165 - call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) - %t167 = load %S.ast.Type, ptr %a166 - %t168 = insertvalue %S.gen.Val %t162, %S.ast.Type %t167, 1 - %t169 = insertvalue %S.gen.Val %t168, i1 true, 2 - %t170 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t169, ptr %a128 - store %S.gen.Val %t170, ptr %a171 - call void @finch.drop.S_gen_Val(ptr %a171) - br label %endif8455 -endif8455: - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t175 = load i64, ptr %a70 - %t176 = load { ptr, i64, i64 }, ptr %t174 - %t177 = extractvalue { ptr, i64, i64 } %t176, 1 - %t178 = icmp uge i64 %t175, %t177 - br i1 %t178, label %range8456, label %inrange8457 -range8456: - call void @finch_panic_index(ptr @.str.5475, i64 5109, i64 %t175, i64 %t177) - unreachable -inrange8457: - %t179 = extractvalue { ptr, i64, i64 } %t176, 0 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i64 %t175 - %t181 = load %S.ast.Type, ptr %t180 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t181) - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5476, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t187, ptr %a191 - store { ptr, i64, i64 } %t189, ptr %a192 - call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192) - store { ptr, i64, i64 } %t187, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a190 - %t195 = load i64, ptr %t172 - %t196 = add i64 %t195, 1 - call void @finch_arr_reserve(ptr %a45, i64 %t196, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t197 = load ptr, ptr %a45 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i64 %t195 - store { ptr, i64, i64 } %t194, ptr %t198 - store i64 %t196, ptr %t172 - %t199 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t200 = load i1, ptr %t199 - br i1 %t200, label %then8458, label %endif8460 -then8458: - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t202 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t202, ptr %a203 - call void @finch.copy.S_gen_Val(ptr %a204, ptr %a203) - %t205 = load %S.gen.Val, ptr %a204 - %t206 = load i64, ptr %t201 - %t207 = add i64 %t206, 1 - call void @finch_arr_reserve(ptr %a60, i64 %t207, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t208 = load ptr, ptr %a60 - %t209 = getelementptr inbounds %S.gen.Val, ptr %t208, i64 %t206 - store %S.gen.Val %t205, ptr %t209 - store i64 %t207, ptr %t201 - br label %endif8460 -endif8460: - %t210 = load ptr, ptr %a1 - %t211 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t210, %S.gen.Val %t211) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Node(ptr %a86) - br label %for.step8429 -for.step8429: - %t212 = load i64, ptr %a70 - %t213 = add i64 %t212, 1 - store i64 %t213, ptr %a70 - br label %for.cond8427 -for.end8430: - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.FnSig, ptr %a21 - %t216 = load %S.ast.Node, ptr %a3 - %t217 = load { ptr, i64, i64 }, ptr %a45 - %t218 = load { ptr, i64, i64 }, ptr %a5 - %t219 = call %S.gen.Val @finch.gen.emitCall(ptr %t214, %S.gen.FnSig %t215, %S.ast.Node %t216, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t218) - store %S.gen.Val %t219, ptr %a220 - store i64 0, ptr %a221 - br label %each.cond8461 -each.cond8461: - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = load i64, ptr %a221 - %t225 = icmp slt i64 %t224, %t223 - br i1 %t225, label %each.body8462, label %each.end8464 -each.body8462: - %t226 = load ptr, ptr %a60 - %t227 = getelementptr inbounds %S.gen.Val, ptr %t226, i64 %t224 - %t228 = load %S.gen.Val, ptr %t227 - store %S.gen.Val %t228, ptr %a229 - %t230 = load ptr, ptr %a1 - %t231 = load %S.gen.Val, ptr %a229 - call void @finch.gen.release(ptr %t230, %S.gen.Val %t231) - br label %each.step8463 -each.step8463: - %t232 = load i64, ptr %a221 - %t233 = add i64 %t232, 1 - store i64 %t233, ptr %a221 - br label %each.cond8461 -each.end8464: - %t234 = load ptr, ptr %a1 - %t235 = load i64, ptr %a66 - call void @finch.gen.heldEnd(ptr %t234, i64 %t235) - %t236 = load %S.gen.Val, ptr %a220 - call void @finch.drop.arr_S_gen_Val(ptr %a60) - call void @finch.drop.arr_str(ptr %a45) - call void @finch.drop.S_gen_FnSig(ptr %a21) - ret %S.gen.Val %t236 -} - -define internal %S.gen.Val @finch.gen.emitCall(ptr %p0, %S.gen.FnSig %p1, %S.ast.Node %p2, { ptr, i64, i64 } %p3, { ptr, i64, i64 } %p4) { -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 - %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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %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 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = 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 - %a200 = alloca %S.ast.Type, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca %S.ast.Type, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a264 = alloca %S.ast.Type, align 16 - %a265 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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.from8465 -logic.from8465: - br i1 %t7, label %logic.rhs8466, label %logic.end8467 -logic.rhs8466: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic8468, label %ok8469 -panic8468: - call void @finch_panic(ptr @.str.5477, i64 5125, ptr @.str.5478) - unreachable -ok8469: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 41 - %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 - store { ptr, i64, i64 } %t13, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend8470 -logic.rend8470: - br label %logic.end8467 -logic.end8467: - %t19 = phi i1 [ false, %logic.from8465 ], [ %t17, %logic.rend8470 ] - br i1 %t19, label %then8471, label %endif8473 -then8471: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Node, ptr %a3 - %t22 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.5479, i64 1, i64 0 }, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.5480, i64 39, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.5481, i64 19, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t42, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5482, i64 27, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5483, i64 5, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } %t64) - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif8473 -endif8473: - %t66 = load ptr, ptr %a1 - %t67 = load %S.gen.FnSig, ptr %a2 - %t68 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t66, %S.gen.FnSig %t67) - store { ptr, i64, i64 } { ptr @.str.5484, i64 5, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5485, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.5486, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5487, i64 2, i64 0 }, ptr %a92 - call void @finch_str_join(ptr %a93, ptr %a4, ptr %a92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t90, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t90, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.5488, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then8474, label %endif8476 -then8474: - %t109 = load ptr, ptr %a1 - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t109, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = load %S.gen.FnSig, ptr %a2 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t114, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.5489, i64 13, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.5490, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.5491, i64 3, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a139 - call void @finch_str_drop(ptr %a139) - store { ptr, i64, i64 } %t138, ptr %a140 - %t141 = load ptr, ptr %a1 - %t142 = load { ptr, i64, i64 }, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5492, i64 7, i64 0 }, ptr %a144 - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5493, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = call { ptr, i64, i64 } @finch.gen.op(ptr %t141, { ptr, i64, i64 } %t151) - store { ptr, i64, i64 } %t151, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic8477, label %ok8478 -panic8477: - call void @finch_panic(ptr @.str.5494, i64 5132, ptr @.str.5495) - unreachable -ok8478: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 42 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t152, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a1 - %t161 = load %S.gen.FnSig, ptr %a2 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t160, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.5496, i64 13, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.5497, i64 1, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5498, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t159, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic8479, label %ok8480 -panic8479: - call void @finch_panic(ptr @.str.5499, i64 5133, ptr @.str.5500) - unreachable -ok8480: - %t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 43 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t184, ptr %t188 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t192 = getelementptr inbounds %S.ast.Type, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5501, i64 4, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then8481, label %endif8483 -then8481: - %t198 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t199 = load %S.ast.Type, ptr %t198 - store %S.ast.Type %t199, ptr %a200 - call void @finch.copy.S_ast_Type(ptr %a201, ptr %a200) - %t202 = load %S.ast.Type, ptr %a201 - %t203 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t202, 1 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t203 -endif8483: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.gen.FnSig, ptr %a2 - %t207 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t205, %S.gen.FnSig %t206) - store { ptr, i64, i64 } { ptr @.str.5502, i64 13, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t212, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.5503, i64 1, i64 0 }, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t217, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.5504, i64 3, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t232 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t233 = load %S.ast.Type, ptr %t232 - store %S.ast.Type %t233, ptr %a234 - call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) - %t236 = load %S.ast.Type, ptr %a235 - %t237 = insertvalue %S.gen.Val %t231, %S.ast.Type %t236, 1 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t240 = load %S.ast.Type, ptr %t239 - %t241 = call i1 @finch.gen.owning(ptr %t238, %S.ast.Type %t240) - %t242 = insertvalue %S.gen.Val %t237, i1 %t241, 2 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t242 -endif8476: - %t243 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i32 0, i32 0 - %t245 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t245, ptr %a246 - store { ptr, i64, i64 } { ptr @.str.5505, i64 4, i64 0 }, ptr %a247 - %t248 = call i32 @finch_str_eq(ptr %a246, ptr %a247) - %t249 = icmp ne i32 %t248, 0 - br i1 %t249, label %then8484, label %endif8486 -then8484: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t253 = load %S.ast.Type, ptr %t252 - store %S.ast.Type %t253, ptr %a254 - call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) - %t256 = load %S.ast.Type, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t256, 1 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t257 -endif8486: - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a106 - %t260 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t259) - %t261 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t260, 0 - %t262 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t263 = load %S.ast.Type, ptr %t262 - store %S.ast.Type %t263, ptr %a264 - call void @finch.copy.S_ast_Type(ptr %a265, ptr %a264) - %t266 = load %S.ast.Type, ptr %a265 - %t267 = insertvalue %S.gen.Val %t261, %S.ast.Type %t266, 1 - %t268 = load ptr, ptr %a1 - %t269 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t268, %S.ast.Type %t270) - %t272 = insertvalue %S.gen.Val %t267, i1 %t271, 2 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t272 -} - -define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { -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 - %a47 = alloca %S.ast.Node, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca i1, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca i64, align 16 - %a95 = alloca i64, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca i64, align 16 - %a196 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca i64, align 16 - %a294 = alloca i64, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a306 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.gen.Val, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca %S.gen.Val, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca %S.gen.Val, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca %S.gen.Val, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca %S.gen.Val, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a522 = 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 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca %S.ast.Type, align 16 - %a562 = alloca %S.ast.Type, align 16 - %a566 = alloca %S.gen.Val, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.ast.Type, align 16 - %a645 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic8487, label %ok8488 -panic8487: - call void @finch_panic(ptr @.str.5506, i64 5147, ptr @.str.5507) - unreachable -ok8488: - %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 %range8489, label %inrange8490 -range8489: - call void @finch_panic_index(ptr @.str.5508, i64 5147, i64 %t9, i64 %t11) - unreachable -inrange8490: - %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 %then8491, label %endif8493 -then8491: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic8494, label %ok8495 -panic8494: - call void @finch_panic(ptr @.str.5509, i64 5150, ptr @.str.5510) - unreachable -ok8495: - %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 %range8496, label %inrange8497 -range8496: - call void @finch_panic_index(ptr @.str.5511, i64 5150, i64 %t28, i64 %t30) - unreachable -inrange8497: - %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 %range8498, label %inrange8499 -range8498: - call void @finch_panic_index(ptr @.str.5512, i64 5150, i64 %t36, i64 %t38) - unreachable -inrange8499: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 - %t42 = load %S.ast.Node, ptr %t41 - store %S.ast.Node %t42, ptr %a43 - call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43) - %t45 = load %S.ast.Node, ptr %a44 - %t46 = load %S.ast.Node, ptr %a20 - store %S.ast.Node %t45, ptr %a20 - store %S.ast.Node %t46, ptr %a47 - call void @finch.drop.S_ast_Node(ptr %a47) - br label %endif8493 -endif8493: - %t48 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5513, i64 6, i64 0 }, 0 - %t49 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_copy(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = insertvalue %S.ast.Type %t48, { ptr, i64, i64 } %t53, 2 - %t55 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - %t60 = insertvalue %S.ast.Type %t54, { ptr, i64, i64 } %t59, 3 - store %S.ast.Type %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load %S.ast.Type, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t62, %S.ast.Type %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t67 = load i64, ptr %t66 - %t68 = icmp sgt i64 %t67, 0 - br label %logic.from8500 -logic.from8500: - br i1 %t68, label %logic.rhs8501, label %logic.end8502 -logic.rhs8501: - %t69 = load { ptr, i64, i64 }, ptr %a4 - %t70 = extractvalue { ptr, i64, i64 } %t69, 1 - %t71 = icmp uge i64 0, %t70 - br i1 %t71, label %range8503, label %inrange8504 -range8503: - call void @finch_panic_index(ptr @.str.5514, i64 5154, i64 0, i64 %t70) - unreachable -inrange8504: - %t72 = extractvalue { ptr, i64, i64 } %t69, 0 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i64 0 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 - %t75 = load i64, ptr %t74 - %t76 = icmp sgt i64 %t75, 0 - br label %logic.rend8505 -logic.rend8505: - br label %logic.end8502 -logic.end8502: - %t77 = phi i1 [ false, %logic.from8500 ], [ %t76, %logic.rend8505 ] - store i1 %t77, ptr %a78 - store { ptr, i64, i64 } zeroinitializer, ptr %a79 - %t80 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1 - %t82 = load i64, ptr %t81 - store i64 0, ptr %a83 - br label %for.cond8506 -for.cond8506: - %t84 = load i64, ptr %a83 - %t85 = icmp slt i64 %t84, %t82 - br i1 %t85, label %for.body8507, label %for.end8509 -for.body8507: - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %a79, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %a79, i64 %t88, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %a79 - %t90 = getelementptr inbounds i64, ptr %t89, i64 %t87 - store i64 -1, ptr %t90 - store i64 %t88, ptr %t86 - br label %for.step8508 -for.step8508: - %t91 = load i64, ptr %a83 - %t92 = add i64 %t91, 1 - store i64 %t92, ptr %a83 - br label %for.cond8506 -for.end8509: - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t94 = load i64, ptr %t93 - store i64 0, ptr %a95 - br label %for.cond8510 -for.cond8510: - %t96 = load i64, ptr %a95 - %t97 = icmp slt i64 %t96, %t94 - br i1 %t97, label %for.body8511, label %for.end8513 -for.body8511: - %t98 = load i64, ptr %a95 - %t99 = load { ptr, i64, i64 }, ptr %a4 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range8514, label %inrange8515 -range8514: - call void @finch_panic_index(ptr @.str.5515, i64 5160, i64 %t98, i64 %t100) - unreachable -inrange8515: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp sgt i64 %t105, 0 - %t107 = load i1, ptr %a78 - %t108 = icmp ne i1 %t106, %t107 - br i1 %t108, label %then8516, label %endif8518 -then8516: - %t109 = load ptr, ptr %a1 - %t110 = load i64, ptr %a95 - %t111 = load { ptr, i64, i64 }, ptr %a3 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range8519, label %inrange8520 -range8519: - call void @finch_panic_index(ptr @.str.5516, i64 5161, i64 %t110, i64 %t112) - unreachable -inrange8520: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 %t110 - %t116 = load %S.ast.Node, ptr %t115 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t116, { ptr, i64, i64 } { ptr @.str.5517, i64 69, i64 0 }) - br label %endif8518 -endif8518: - %t117 = load i1, ptr %a78 - %t118 = xor i1 %t117, true - br i1 %t118, label %then8521, label %endif8523 -then8521: - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t120 = load i64, ptr %t119 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = icmp ne i64 %t120, %t123 - br i1 %t124, label %then8524, label %endif8526 -then8524: - %t125 = load ptr, ptr %a1 - %t126 = load %S.ast.Node, ptr %a5 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5518, i64 5, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a129 - %t133 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - call void @finch_str_from_int(ptr %a136, i64 %t135) - %t137 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t132, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t132, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5519, i64 17, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t150 = load i64, ptr %t149 - call void @finch_str_from_int(ptr %a151, i64 %t150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t148, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t148, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t152, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.5520, i64 23, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t163, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t163, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5521, i64 15, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch.gen.fail(ptr %t125, %S.ast.Node %t126, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif8526 -endif8526: - %t177 = load i64, ptr %a95 - %t178 = load i64, ptr %a95 - %t179 = load { ptr, i64, i64 }, ptr %a79 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range8527, label %inrange8528 -range8527: - call void @finch_panic_index(ptr @.str.5522, i64 5167, i64 %t178, i64 %t180) - unreachable -inrange8528: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 - store i64 %t177, ptr %t183 - br label %for.step8512 -endif8523: - %t184 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i32 0, i32 1 - %t186 = load i64, ptr %a95 - %t187 = load { ptr, i64, i64 }, ptr %a4 - %t188 = extractvalue { ptr, i64, i64 } %t187, 1 - %t189 = icmp uge i64 %t186, %t188 - br i1 %t189, label %range8529, label %inrange8530 -range8529: - call void @finch_panic_index(ptr @.str.5523, i64 5170, i64 %t186, i64 %t188) - unreachable -inrange8530: - %t190 = extractvalue { ptr, i64, i64 } %t187, 0 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t186 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store i64 -1, ptr %a193 - %t194 = load i64, ptr %t185 - %t195 = load ptr, ptr %t184 - store i64 0, ptr %a196 - br label %find.cond8531 -find.cond8531: - %t197 = load i64, ptr %a196 - %t198 = icmp slt i64 %t197, %t194 - br i1 %t198, label %find.body8532, label %find.end8535 -find.body8532: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i64 %t197 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - store { ptr, i64, i64 } %t192, ptr %a202 - %t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202) - %t204 = icmp ne i32 %t203, 0 - br i1 %t204, label %find.hit8533, label %find.next8534 -find.hit8533: - store i64 %t197, ptr %a193 - br label %find.end8535 -find.next8534: - %t205 = add i64 %t197, 1 - store i64 %t205, ptr %a196 - br label %find.cond8531 -find.end8535: - %t206 = load i64, ptr %a193 - store i64 %t206, ptr %a207 - %t208 = load i64, ptr %a207 - %t209 = icmp slt i64 %t208, 0 - br i1 %t209, label %then8536, label %endif8538 -then8536: - %t210 = load ptr, ptr %a1 - %t211 = load i64, ptr %a95 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range8539, label %inrange8540 -range8539: - call void @finch_panic_index(ptr @.str.5524, i64 5172, i64 %t211, i64 %t213) - unreachable -inrange8540: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.5525, i64 15, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load i64, ptr %a95 - %t225 = load { ptr, i64, i64 }, ptr %a4 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range8541, label %inrange8542 -range8541: - call void @finch_panic_index(ptr @.str.5526, i64 5172, i64 %t224, i64 %t226) - unreachable -inrange8542: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i64 %t224 - %t230 = load { ptr, i64, i64 }, ptr %t229 - store { ptr, i64, i64 } %t223, ptr %a232 - store { ptr, i64, i64 } %t230, ptr %a233 - call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) - store { ptr, i64, i64 } %t223, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.5527, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_drop(ptr %a241) - br label %endif8538 -endif8538: - %t242 = load i64, ptr %a207 - %t243 = load { ptr, i64, i64 }, ptr %a79 - %t244 = extractvalue { ptr, i64, i64 } %t243, 1 - %t245 = icmp uge i64 %t242, %t244 - br i1 %t245, label %range8543, label %inrange8544 -range8543: - call void @finch_panic_index(ptr @.str.5528, i64 5174, i64 %t242, i64 %t244) - unreachable -inrange8544: - %t246 = extractvalue { ptr, i64, i64 } %t243, 0 - %t247 = getelementptr inbounds i64, ptr %t246, i64 %t242 - %t248 = load i64, ptr %t247 - %t249 = icmp sge i64 %t248, 0 - br i1 %t249, label %then8545, label %endif8547 -then8545: - %t250 = load ptr, ptr %a1 - %t251 = load i64, ptr %a95 - %t252 = load { ptr, i64, i64 }, ptr %a3 - %t253 = extractvalue { ptr, i64, i64 } %t252, 1 - %t254 = icmp uge i64 %t251, %t253 - br i1 %t254, label %range8548, label %inrange8549 -range8548: - call void @finch_panic_index(ptr @.str.5529, i64 5175, i64 %t251, i64 %t253) - unreachable -inrange8549: - %t255 = extractvalue { ptr, i64, i64 } %t252, 0 - %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 - %t257 = load %S.ast.Node, ptr %t256 - %t258 = load i64, ptr %a95 - %t259 = load { ptr, i64, i64 }, ptr %a4 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range8550, label %inrange8551 -range8550: - call void @finch_panic_index(ptr @.str.5531, i64 5175, i64 %t258, i64 %t260) - unreachable -inrange8551: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 %t258 - %t264 = load { ptr, i64, i64 }, ptr %t263 - store { ptr, i64, i64 } { ptr @.str.5530, i64 11, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.5532, i64 16, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.fail(ptr %t250, %S.ast.Node %t257, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif8547 -endif8547: - %t275 = load i64, ptr %a95 - %t276 = load i64, ptr %a207 - %t277 = load { ptr, i64, i64 }, ptr %a79 - %t278 = extractvalue { ptr, i64, i64 } %t277, 1 - %t279 = icmp uge i64 %t276, %t278 - br i1 %t279, label %range8552, label %inrange8553 -range8552: - call void @finch_panic_index(ptr @.str.5533, i64 5177, i64 %t276, i64 %t278) - unreachable -inrange8553: - %t280 = extractvalue { ptr, i64, i64 } %t277, 0 - %t281 = getelementptr inbounds i64, ptr %t280, i64 %t276 - store i64 %t275, ptr %t281 - br label %for.step8512 -for.step8512: - %t282 = load i64, ptr %a95 - %t283 = add i64 %t282, 1 - store i64 %t283, ptr %a95 - br label %for.cond8510 -for.end8513: - store { ptr, i64, i64 } { ptr @.str.5534, i64 15, i64 0 }, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = icmp eq ptr %t285, null - br i1 %t286, label %panic8554, label %ok8555 -panic8554: - call void @finch_panic(ptr @.str.5535, i64 5180, ptr @.str.5536) - unreachable -ok8555: - %t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 11 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 - %t289 = load i64, ptr %t288 - store i64 %t289, ptr %a290 - %t291 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i32 0, i32 1 - %t293 = load i64, ptr %t292 - store i64 0, ptr %a294 - br label %for.cond8556 -for.cond8556: - %t295 = load i64, ptr %a294 - %t296 = icmp slt i64 %t295, %t293 - br i1 %t296, label %for.body8557, label %for.end8559 -for.body8557: - %t297 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 - %t298 = load i64, ptr %a294 - %t299 = load { ptr, i64, i64 }, ptr %t297 - %t300 = extractvalue { ptr, i64, i64 } %t299, 1 - %t301 = icmp uge i64 %t298, %t300 - br i1 %t301, label %range8560, label %inrange8561 -range8560: - call void @finch_panic_index(ptr @.str.5537, i64 5182, i64 %t298, i64 %t300) - unreachable -inrange8561: - %t302 = extractvalue { ptr, i64, i64 } %t299, 0 - %t303 = getelementptr inbounds %S.ast.Type, ptr %t302, i64 %t298 - %t304 = load %S.ast.Type, ptr %t303 - store %S.ast.Type %t304, ptr %a305 - call void @finch.copy.S_ast_Type(ptr %a306, ptr %a305) - %t307 = load %S.ast.Type, ptr %a306 - store %S.ast.Type %t307, ptr %a308 - store %S.gen.Val zeroinitializer, ptr %a309 - %t310 = load i64, ptr %a294 - %t311 = load { ptr, i64, i64 }, ptr %a79 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range8562, label %inrange8563 -range8562: - call void @finch_panic_index(ptr @.str.5538, i64 5184, i64 %t310, i64 %t312) - unreachable -inrange8563: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds i64, ptr %t314, i64 %t310 - %t316 = load i64, ptr %t315 - %t317 = icmp sge i64 %t316, 0 - br i1 %t317, label %then8564, label %else8565 -then8564: - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load i64, ptr %a294 - %t321 = load { ptr, i64, i64 }, ptr %a79 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range8567, label %inrange8568 -range8567: - call void @finch_panic_index(ptr @.str.5539, i64 5185, i64 %t320, i64 %t322) - unreachable -inrange8568: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds i64, ptr %t324, i64 %t320 - %t326 = load i64, ptr %t325 - %t327 = load { ptr, i64, i64 }, ptr %a3 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range8569, label %inrange8570 -range8569: - call void @finch_panic_index(ptr @.str.5540, i64 5185, i64 %t326, i64 %t328) - unreachable -inrange8570: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - %t333 = load %S.ast.Type, ptr %a308 - %t334 = call %S.gen.Val @finch.gen.exprWant(ptr %t319, %S.ast.Node %t332, %S.ast.Type %t333) - %t335 = load %S.ast.Type, ptr %a308 - %t336 = load i64, ptr %a294 - %t337 = load { ptr, i64, i64 }, ptr %a79 - %t338 = extractvalue { ptr, i64, i64 } %t337, 1 - %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range8571, label %inrange8572 -range8571: - call void @finch_panic_index(ptr @.str.5541, i64 5185, i64 %t336, i64 %t338) - unreachable -inrange8572: - %t340 = extractvalue { ptr, i64, i64 } %t337, 0 - %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 - %t342 = load i64, ptr %t341 - %t343 = load { ptr, i64, i64 }, ptr %a3 - %t344 = extractvalue { ptr, i64, i64 } %t343, 1 - %t345 = icmp uge i64 %t342, %t344 - br i1 %t345, label %range8573, label %inrange8574 -range8573: - call void @finch_panic_index(ptr @.str.5542, i64 5185, i64 %t342, i64 %t344) - unreachable -inrange8574: - %t346 = extractvalue { ptr, i64, i64 } %t343, 0 - %t347 = getelementptr inbounds %S.ast.Node, ptr %t346, i64 %t342 - %t348 = load %S.ast.Node, ptr %t347 - %t349 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t350 = load i64, ptr %a294 - %t351 = load { ptr, i64, i64 }, ptr %t349 - %t352 = extractvalue { ptr, i64, i64 } %t351, 1 - %t353 = icmp uge i64 %t350, %t352 - br i1 %t353, label %range8575, label %inrange8576 -range8575: - call void @finch_panic_index(ptr @.str.5544, i64 5185, i64 %t350, i64 %t352) - unreachable -inrange8576: - %t354 = extractvalue { ptr, i64, i64 } %t351, 0 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i64 %t350 - %t356 = load { ptr, i64, i64 }, ptr %t355 - store { ptr, i64, i64 } { ptr @.str.5543, i64 11, i64 0 }, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t360, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.5545, i64 1, i64 0 }, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t360, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - %t366 = call %S.gen.Val @finch.gen.coerce(ptr %t318, %S.gen.Val %t334, %S.ast.Type %t335, %S.ast.Node %t348, { ptr, i64, i64 } %t365) - store %S.gen.Val %t334, ptr %a367 - call void @finch.drop.S_gen_Val(ptr %a367) - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t366, ptr %a309 - store %S.gen.Val %t369, ptr %a370 - call void @finch.drop.S_gen_Val(ptr %a370) - br label %endif8566 -else8565: - %t371 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 - %t372 = load i1, ptr %t371 - %t373 = xor i1 %t372, true - br label %logic.from8577 -logic.from8577: - br i1 %t373, label %logic.rhs8578, label %logic.end8579 -logic.rhs8578: - %t374 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t375 = load i64, ptr %a294 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range8580, label %inrange8581 -range8580: - call void @finch_panic_index(ptr @.str.5546, i64 5186, i64 %t375, i64 %t377) - unreachable -inrange8581: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.ast.Node, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.ast.Node, ptr %t380, i32 0, i32 9 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t381, i32 0, i32 1 - %t383 = load i64, ptr %t382 - %t384 = icmp sgt i64 %t383, 0 - br label %logic.rend8582 -logic.rend8582: - br label %logic.end8579 -logic.end8579: - %t385 = phi i1 [ false, %logic.from8577 ], [ %t384, %logic.rend8582 ] - br i1 %t385, label %then8583, label %else8584 -then8583: - %t386 = load ptr, ptr %a1 - %t387 = icmp eq ptr %t386, null - br i1 %t387, label %panic8586, label %ok8587 -panic8586: - call void @finch_panic(ptr @.str.5547, i64 5188, ptr @.str.5548) - unreachable -ok8587: - %t388 = getelementptr inbounds %S.gen.Gen, ptr %t386, i32 0, i32 10 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch.copy.arr_S_gen_Scope(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = icmp eq ptr %t394, null - br i1 %t395, label %panic8588, label %ok8589 -panic8588: - call void @finch_panic(ptr @.str.5549, i64 5189, ptr @.str.5550) - unreachable -ok8589: - %t396 = getelementptr inbounds %S.gen.Gen, ptr %t394, i32 0, i32 14 - %t397 = load { ptr, i64, i64 }, ptr %t396 - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_copy(ptr %a399, ptr %a398) - %t400 = load { ptr, i64, i64 }, ptr %a399 - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load ptr, ptr %a1 - %t403 = icmp eq ptr %t402, null - br i1 %t403, label %panic8590, label %ok8591 -panic8590: - call void @finch_panic(ptr @.str.5551, i64 5190, ptr @.str.5552) - unreachable -ok8591: - %t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 18 - %t405 = load { ptr, i64, i64 }, ptr %t404 - store { ptr, i64, i64 } %t405, ptr %a406 - call void @finch.copy.arr_str(ptr %a407, ptr %a406) - %t408 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t408, ptr %a409 - %t410 = load ptr, ptr %a1 - %t411 = icmp eq ptr %t410, null - br i1 %t411, label %panic8592, label %ok8593 -panic8592: - call void @finch_panic(ptr @.str.5553, i64 5191, ptr @.str.5554) - unreachable -ok8593: - %t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 19 - %t413 = load { ptr, i64, i64 }, ptr %t412 - store { ptr, i64, i64 } %t413, ptr %a414 - call void @finch.copy.arr_S_ast_Type(ptr %a415, ptr %a414) - %t416 = load { ptr, i64, i64 }, ptr %a415 - store { ptr, i64, i64 } %t416, ptr %a417 - %t418 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 - %t419 = load { ptr, i64, i64 }, ptr %t418 - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic8594, label %ok8595 -panic8594: - call void @finch_panic(ptr @.str.5555, i64 5192, ptr @.str.5556) - unreachable -ok8595: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 18 - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch.copy.arr_str(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t425, ptr %t422 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch.drop.arr_str(ptr %a427) - %t428 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 - %t429 = load { ptr, i64, i64 }, ptr %t428 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic8596, label %ok8597 -panic8596: - call void @finch_panic(ptr @.str.5557, i64 5193, ptr @.str.5558) - unreachable -ok8597: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 19 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch.copy.arr_S_ast_Type(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch.drop.arr_S_ast_Type(ptr %a437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - %t439 = load { ptr, i64, i64 }, ptr %a438 - %t440 = load ptr, ptr %a1 - %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic8598, label %ok8599 -panic8598: - call void @finch_panic(ptr @.str.5559, i64 5195, ptr @.str.5560) - unreachable -ok8599: - %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 10 - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch.copy.arr_S_gen_Scope(ptr %a444, ptr %a443) - %t445 = load { ptr, i64, i64 }, ptr %a444 - %t446 = load { ptr, i64, i64 }, ptr %t442 - store { ptr, i64, i64 } %t445, ptr %t442 - store { ptr, i64, i64 } %t446, ptr %a447 - call void @finch.drop.arr_S_gen_Scope(ptr %a447) - %t448 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t448) - %t449 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t450 = load { ptr, i64, i64 }, ptr %t449 - %t451 = load ptr, ptr %a1 - %t452 = icmp eq ptr %t451, null - br i1 %t452, label %panic8600, label %ok8601 -panic8600: - call void @finch_panic(ptr @.str.5561, i64 5197, ptr @.str.5562) - unreachable -ok8601: - %t453 = getelementptr inbounds %S.gen.Gen, ptr %t451, i32 0, i32 14 - store { ptr, i64, i64 } %t450, ptr %a454 - call void @finch_str_copy(ptr %a455, ptr %a454) - %t456 = load { ptr, i64, i64 }, ptr %a455 - %t457 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t456, ptr %t453 - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - %t459 = load ptr, ptr %a1 - %t460 = load ptr, ptr %a1 - %t461 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t462 = load i64, ptr %a294 - %t463 = load { ptr, i64, i64 }, ptr %t461 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = icmp uge i64 %t462, %t464 - br i1 %t465, label %range8602, label %inrange8603 -range8602: - call void @finch_panic_index(ptr @.str.5563, i64 5198, i64 %t462, i64 %t464) - unreachable -inrange8603: - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = getelementptr inbounds %S.ast.Node, ptr %t466, i64 %t462 - %t468 = getelementptr inbounds %S.ast.Node, ptr %t467, i32 0, i32 9 - %t469 = load { ptr, i64, i64 }, ptr %t468 - %t470 = extractvalue { ptr, i64, i64 } %t469, 1 - %t471 = icmp uge i64 0, %t470 - br i1 %t471, label %range8604, label %inrange8605 -range8604: - call void @finch_panic_index(ptr @.str.5564, i64 5198, i64 0, i64 %t470) - unreachable -inrange8605: - %t472 = extractvalue { ptr, i64, i64 } %t469, 0 - %t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 0 - %t474 = load %S.ast.Node, ptr %t473 - %t475 = load %S.ast.Type, ptr %a308 - %t476 = call %S.gen.Val @finch.gen.exprWant(ptr %t460, %S.ast.Node %t474, %S.ast.Type %t475) - %t477 = load %S.ast.Type, ptr %a308 - %t478 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t479 = load i64, ptr %a294 - %t480 = load { ptr, i64, i64 }, ptr %t478 - %t481 = extractvalue { ptr, i64, i64 } %t480, 1 - %t482 = icmp uge i64 %t479, %t481 - br i1 %t482, label %range8606, label %inrange8607 -range8606: - call void @finch_panic_index(ptr @.str.5565, i64 5198, i64 %t479, i64 %t481) - unreachable -inrange8607: - %t483 = extractvalue { ptr, i64, i64 } %t480, 0 - %t484 = getelementptr inbounds %S.ast.Node, ptr %t483, i64 %t479 - %t485 = getelementptr inbounds %S.ast.Node, ptr %t484, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range8608, label %inrange8609 -range8608: - call void @finch_panic_index(ptr @.str.5566, i64 5198, i64 0, i64 %t487) - unreachable -inrange8609: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t493 = load i64, ptr %a294 - %t494 = load { ptr, i64, i64 }, ptr %t492 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 %t493, %t495 - br i1 %t496, label %range8610, label %inrange8611 -range8610: - call void @finch_panic_index(ptr @.str.5568, i64 5198, i64 %t493, i64 %t495) - unreachable -inrange8611: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t493 - %t499 = load { ptr, i64, i64 }, ptr %t498 - store { ptr, i64, i64 } { ptr @.str.5567, i64 16, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5569, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call %S.gen.Val @finch.gen.coerce(ptr %t459, %S.gen.Val %t476, %S.ast.Type %t477, %S.ast.Node %t491, { ptr, i64, i64 } %t508) - store %S.gen.Val %t476, ptr %a510 - call void @finch.drop.S_gen_Val(ptr %a510) - store { ptr, i64, i64 } %t508, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t509, ptr %a309 - store %S.gen.Val %t512, ptr %a513 - call void @finch.drop.S_gen_Val(ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a401 - %t515 = load ptr, ptr %a1 - %t516 = icmp eq ptr %t515, null - br i1 %t516, label %panic8612, label %ok8613 -panic8612: - call void @finch_panic(ptr @.str.5570, i64 5199, ptr @.str.5571) - unreachable -ok8613: - %t517 = getelementptr inbounds %S.gen.Gen, ptr %t515, i32 0, i32 14 - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_copy(ptr %a519, ptr %a518) - %t520 = load { ptr, i64, i64 }, ptr %a519 - %t521 = load { ptr, i64, i64 }, ptr %t517 - store { ptr, i64, i64 } %t520, ptr %t517 - store { ptr, i64, i64 } %t521, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a409 - %t524 = load ptr, ptr %a1 - %t525 = icmp eq ptr %t524, null - br i1 %t525, label %panic8614, label %ok8615 -panic8614: - call void @finch_panic(ptr @.str.5572, i64 5200, ptr @.str.5573) - unreachable -ok8615: - %t526 = getelementptr inbounds %S.gen.Gen, ptr %t524, i32 0, i32 18 - store { ptr, i64, i64 } %t523, ptr %a527 - call void @finch.copy.arr_str(ptr %a528, ptr %a527) - %t529 = load { ptr, i64, i64 }, ptr %a528 - %t530 = load { ptr, i64, i64 }, ptr %t526 - store { ptr, i64, i64 } %t529, ptr %t526 - store { ptr, i64, i64 } %t530, ptr %a531 - call void @finch.drop.arr_str(ptr %a531) - %t532 = load { ptr, i64, i64 }, ptr %a417 - %t533 = load ptr, ptr %a1 - %t534 = icmp eq ptr %t533, null - br i1 %t534, label %panic8616, label %ok8617 -panic8616: - call void @finch_panic(ptr @.str.5574, i64 5201, ptr @.str.5575) - unreachable -ok8617: - %t535 = getelementptr inbounds %S.gen.Gen, ptr %t533, i32 0, i32 19 - store { ptr, i64, i64 } %t532, ptr %a536 - call void @finch.copy.arr_S_ast_Type(ptr %a537, ptr %a536) - %t538 = load { ptr, i64, i64 }, ptr %a537 - %t539 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t538, ptr %t535 - store { ptr, i64, i64 } %t539, ptr %a540 - call void @finch.drop.arr_S_ast_Type(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a393 - %t542 = load ptr, ptr %a1 - %t543 = icmp eq ptr %t542, null - br i1 %t543, label %panic8618, label %ok8619 -panic8618: - call void @finch_panic(ptr @.str.5576, i64 5202, ptr @.str.5577) - unreachable -ok8619: - %t544 = getelementptr inbounds %S.gen.Gen, ptr %t542, i32 0, i32 10 - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch.copy.arr_S_gen_Scope(ptr %a546, ptr %a545) - %t547 = load { ptr, i64, i64 }, ptr %a546 - %t548 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t547, ptr %t544 - store { ptr, i64, i64 } %t548, ptr %a549 - call void @finch.drop.arr_S_gen_Scope(ptr %a549) - call void @finch.drop.arr_S_gen_Scope(ptr %a438) - call void @finch.drop.arr_S_ast_Type(ptr %a417) - call void @finch.drop.arr_str(ptr %a409) - call void @finch_str_drop(ptr %a401) - call void @finch.drop.arr_S_gen_Scope(ptr %a393) - br label %endif8585 -else8584: - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -endif8585: - br label %endif8566 -endif8566: - %t550 = load ptr, ptr %a1 - %t551 = load %S.gen.Val, ptr %a309 - %t552 = call { ptr, i64, i64 } @finch.gen.own(ptr %t550, %S.gen.Val %t551) - store { ptr, i64, i64 } %t552, ptr %a553 - %t554 = load ptr, ptr %a1 - %t555 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t555, ptr %a556 - call void @finch_str_copy(ptr %a557, ptr %a556) - %t558 = load { ptr, i64, i64 }, ptr %a557 - %t559 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t558, 0 - %t560 = load %S.ast.Type, ptr %a308 - store %S.ast.Type %t560, ptr %a561 - call void @finch.copy.S_ast_Type(ptr %a562, ptr %a561) - %t563 = load %S.ast.Type, ptr %a562 - %t564 = insertvalue %S.gen.Val %t559, %S.ast.Type %t563, 1 - %t565 = insertvalue %S.gen.Val %t564, i1 true, 2 - call void @finch.gen.hold(ptr %t554, %S.gen.Val %t565) - store %S.gen.Val %t565, ptr %a566 - call void @finch.drop.S_gen_Val(ptr %a566) - %t567 = load ptr, ptr %a1 - %t568 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.5578, i64 12, i64 0 }, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - %t572 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t572, ptr %a574 - store { ptr, i64, i64 } { ptr @.str.5579, i64 1, i64 0 }, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - %t578 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t577, ptr %a580 - store { ptr, i64, i64 } %t578, ptr %a581 - call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581) - store { ptr, i64, i64 } %t577, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a579 - store { ptr, i64, i64 } %t583, ptr %a585 - store { ptr, i64, i64 } { ptr @.str.5580, i64 2, i64 0 }, ptr %a586 - call void @finch_str_concat(ptr %a584, ptr %a585, ptr %a586) - store { ptr, i64, i64 } %t583, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a584 - %t589 = load ptr, ptr %a1 - %t590 = load %S.ast.Type, ptr %a308 - %t591 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t589, %S.ast.Type %t590) - store { ptr, i64, i64 } %t588, ptr %a593 - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594) - store { ptr, i64, i64 } %t588, ptr %a595 - call void @finch_str_drop(ptr %a595) - store { ptr, i64, i64 } %t591, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t597, ptr %a599 - store { ptr, i64, i64 } { ptr @.str.5581, i64 1, i64 0 }, ptr %a600 - call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600) - store { ptr, i64, i64 } %t597, ptr %a601 - call void @finch_str_drop(ptr %a601) - %t602 = load { ptr, i64, i64 }, ptr %a598 - %t603 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t602, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - store { ptr, i64, i64 } %t602, ptr %a607 - call void @finch_str_drop(ptr %a607) - %t608 = load { ptr, i64, i64 }, ptr %a604 - store { ptr, i64, i64 } %t608, ptr %a610 - store { ptr, i64, i64 } { ptr @.str.5582, i64 2, i64 0 }, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t608, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3 - %t615 = load i64, ptr %a294 - %t616 = load { ptr, i64, i64 }, ptr %t614 - %t617 = extractvalue { ptr, i64, i64 } %t616, 1 - %t618 = icmp uge i64 %t615, %t617 - br i1 %t618, label %range8620, label %inrange8621 -range8620: - call void @finch_panic_index(ptr @.str.5583, i64 5208, i64 %t615, i64 %t617) - unreachable -inrange8621: - %t619 = extractvalue { ptr, i64, i64 } %t616, 0 - %t620 = getelementptr inbounds i64, ptr %t619, i64 %t615 - %t621 = load i64, ptr %t620 - call void @finch_str_from_int(ptr %a622, i64 %t621) - %t623 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t613, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t613, ptr %a627 - call void @finch_str_drop(ptr %a627) - store { ptr, i64, i64 } %t623, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a624 - %t630 = call { ptr, i64, i64 } @finch.gen.op(ptr %t567, { ptr, i64, i64 } %t629) - store { ptr, i64, i64 } %t629, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t630, ptr %a284 - store { ptr, i64, i64 } %t632, ptr %a633 - call void @finch_str_drop(ptr %a633) - call void @finch_str_drop(ptr %a553) - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -for.step8558: - %t634 = load i64, ptr %a294 - %t635 = add i64 %t634, 1 - store i64 %t635, ptr %a294 - br label %for.cond8556 -for.end8559: - %t636 = load ptr, ptr %a1 - %t637 = load i64, ptr %a290 - call void @finch.gen.heldEnd(ptr %t636, i64 %t637) - %t638 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t638, ptr %a639 - call void @finch_str_copy(ptr %a640, ptr %a639) - %t641 = load { ptr, i64, i64 }, ptr %a640 - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t641, 0 - %t643 = load %S.ast.Type, ptr %a61 - store %S.ast.Type %t643, ptr %a644 - call void @finch.copy.S_ast_Type(ptr %a645, ptr %a644) - %t646 = load %S.ast.Type, ptr %a645 - %t647 = insertvalue %S.gen.Val %t642, %S.ast.Type %t646, 1 - %t648 = load ptr, ptr %a1 - %t649 = load %S.ast.Type, ptr %a61 - %t650 = call i1 @finch.gen.owning(ptr %t648, %S.ast.Type %t649) - %t651 = insertvalue %S.gen.Val %t647, i1 %t650, 2 - call void @finch_str_drop(ptr %a284) - call void @finch.drop.arr_int(ptr %a79) - call void @finch_str_drop(ptr %a65) - call void @finch.drop.S_ast_Type(ptr %a61) - call void @finch.drop.S_ast_Node(ptr %a20) - call void @finch.drop.S_gen_StructDef(ptr %a19) - ret %S.gen.Val %t651 -} - -define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic8622, label %ok8623 -panic8622: - call void @finch_panic(ptr @.str.5584, i64 5218, ptr @.str.5585) - unreachable -ok8623: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then8624, label %endif8626 -then8624: - ret void -endif8626: - %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 %then8627, label %endif8629 -then8627: - %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.5586, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif8629 -endif8629: - call void @finch.drop.S_docs_Doc(ptr %a13) - 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 - %a17 = alloca i64, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca i64, align 16 - %a36 = alloca %S.ast.Node, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca i64, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca i64, align 16 - %a165 = alloca i64, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca i64, align 16 - %a184 = alloca %S.ast.Node, align 16 - %a185 = alloca %S.ast.Node, 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 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a238 = 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 - %a260 = alloca %S.gen.Ref, align 16 - %a266 = alloca i64, align 16 - %a270 = alloca %S.ast.Type, align 16 - %a271 = alloca %S.ast.Type, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca i64, align 16 - %a307 = alloca i64, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = 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 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca %S.gen.Val, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca %S.gen.Val, align 16 - %a372 = alloca %S.gen.Val, align 16 - %a374 = alloca %S.gen.Val, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a389 = alloca %S.gen.Val, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = 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 - %a435 = alloca i64, align 16 - %a438 = alloca i64, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = 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 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca %S.gen.Val, align 16 - %a497 = alloca %S.ast.Type, align 16 - %a498 = alloca %S.ast.Type, align 16 - %a500 = alloca %S.ast.Type, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca i1, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca %S.ast.Type, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a582 = alloca %S.ast.Type, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca i64, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca i64, align 16 - %a686 = alloca i64, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca i64, align 16 - %a719 = alloca %S.gen.FnSig, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a792 = 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 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a802 = 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 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = 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 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a903 = alloca { ptr, i64, i64 }, align 16 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca i64, align 16 - %a923 = alloca %S.gen.Var, 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 - %a935 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a969 = alloca %S.gen.Val, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - 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 %range8630, label %inrange8631 -range8630: - call void @finch_panic_index(ptr @.str.5587, i64 5228, i64 0, i64 %t5) - unreachable -inrange8631: - %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 ptr, ptr %a1 - %t15 = load %S.ast.Node, ptr %a13 - %t16 = call i64 @finch.gen.sumNamed(ptr %t14, %S.ast.Node %t15) - store i64 %t16, ptr %a17 - %t18 = load i64, ptr %a17 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then8632, label %endif8634 -then8632: - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - store i64 1, ptr %a24 - br label %for.cond8635 -for.cond8635: - %t25 = load i64, ptr %a24 - %t26 = icmp slt i64 %t25, %t23 - br i1 %t26, label %for.body8636, label %for.end8638 -for.body8636: - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t29 = load i64, ptr %a24 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range8639, label %inrange8640 -range8639: - call void @finch_panic_index(ptr @.str.5588, i64 5233, i64 %t29, i64 %t31) - unreachable -inrange8640: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t29 - %t35 = load %S.ast.Node, ptr %t34 - store %S.ast.Node %t35, ptr %a36 - call void @finch.copy.S_ast_Node(ptr %a37, ptr %a36) - %t38 = load %S.ast.Node, ptr %a37 - %t39 = load i64, ptr %t27 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t40, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %a20 - %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39 - store %S.ast.Node %t38, ptr %t42 - store i64 %t40, ptr %t27 - br label %for.step8637 -for.step8637: - %t43 = load i64, ptr %a24 - %t44 = add i64 %t43, 1 - store i64 %t44, ptr %a24 - br label %for.cond8635 -for.end8638: - %t45 = load ptr, ptr %a1 - %t46 = load i64, ptr %a17 - %t47 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = load { ptr, i64, i64 }, ptr %a20 - %t50 = load %S.ast.Node, ptr %a2 - %t51 = call %S.gen.Val @finch.gen.sumMake(ptr %t45, i64 %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t49, %S.ast.Node %t50) - call void @finch.drop.arr_S_ast_Node(ptr %a20) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t51 -endif8634: - %t52 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.5589, i64 3, i64 0 }, ptr %a55 - %t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55) - %t57 = icmp ne i32 %t56, 0 - br label %logic.from8641 -logic.from8641: - br i1 %t57, label %logic.rhs8642, label %logic.end8643 -logic.rhs8642: - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = call i64 @finch.gen.lookup(ptr %t58, { ptr, i64, i64 } %t60) - %t62 = icmp slt i64 %t61, 0 - br label %logic.rend8644 -logic.rend8644: - br label %logic.end8643 -logic.end8643: - %t63 = phi i1 [ false, %logic.from8641 ], [ %t62, %logic.rend8644 ] - br i1 %t63, label %then8645, label %endif8647 -then8645: - %t64 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %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 - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a69 - %t72 = call i1 @finch.gen.imports(ptr %t70, { ptr, i64, i64 } %t71) - %t73 = xor i1 %t72, true - br i1 %t73, label %then8648, label %endif8650 -then8648: - %t74 = load ptr, ptr %a1 - %t75 = load %S.ast.Node, ptr %a13 - %t76 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5590, i64 38, 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.5591, i64 32, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.5592, i64 13, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif8650 -endif8650: - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - %t102 = call i64 @finch.gen.findFn(ptr %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t101) - store i64 %t102, ptr %a103 - %t104 = load i64, ptr %a103 - %t105 = icmp sge i64 %t104, 0 - br i1 %t105, label %then8651, label %endif8653 -then8651: - %t106 = load ptr, ptr %a1 - %t107 = load i64, ptr %a103 - %t108 = load %S.ast.Node, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.5593, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t113, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t113, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = call %S.gen.Val @finch.gen.callFn(ptr %t106, i64 %t107, %S.ast.Node %t108, i64 1, { ptr, i64, i64 } %t120, { ptr, i64, i64 } { ptr @.str.5594, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5595, i64 0, i64 0 }) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t121 -endif8653: - %t123 = load ptr, ptr %a1 - %t124 = load { ptr, i64, i64 }, ptr %a69 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = call i64 @finch.gen.findTemplate(ptr %t123, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } { ptr @.str.5596, i64 0, i64 0 }, i1 false) - store i64 %t127, ptr %a128 - %t129 = load i64, ptr %a128 - %t130 = icmp sge i64 %t129, 0 - br i1 %t130, label %then8654, label %endif8656 -then8654: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = load i64, ptr %a128 - %t134 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5597, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t138, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t138, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = call %S.gen.Val @finch.gen.genericCall(ptr %t131, %S.ast.Node %t132, i64 %t133, i64 1, { ptr, i64, i64 } %t145) - store { ptr, i64, i64 } %t145, ptr %a147 - call void @finch_str_drop(ptr %a147) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t146 -endif8656: - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a69 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %t150 - %t152 = call i64 @finch.gen.findEnum(ptr %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t151) - store i64 %t152, ptr %a153 - %t154 = load i64, ptr %a153 - %t155 = icmp sge i64 %t154, 0 - br i1 %t155, label %then8657, label %endif8659 -then8657: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a2 - %t158 = load i64, ptr %a153 - %t159 = call %S.gen.Val @finch.gen.enumFrom(ptr %t156, %S.ast.Node %t157, i64 %t158) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t159 -endif8659: - %t160 = load ptr, ptr %a1 - %t161 = load { ptr, i64, i64 }, ptr %a69 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = call i64 @finch.gen.findStruct(ptr %t160, { ptr, i64, i64 } %t161, { ptr, i64, i64 } %t163) - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a165 - %t167 = icmp sge i64 %t166, 0 - br i1 %t167, label %then8660, label %endif8662 -then8660: - store { ptr, i64, i64 } zeroinitializer, ptr %a168 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - store i64 1, ptr %a172 - br label %for.cond8663 -for.cond8663: - %t173 = load i64, ptr %a172 - %t174 = icmp slt i64 %t173, %t171 - br i1 %t174, label %for.body8664, label %for.end8666 -for.body8664: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t176 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t177 = load i64, ptr %a172 - %t178 = load { ptr, i64, i64 }, ptr %t176 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range8667, label %inrange8668 -range8667: - call void @finch_panic_index(ptr @.str.5598, i64 5258, i64 %t177, i64 %t179) - unreachable -inrange8668: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds %S.ast.Node, ptr %t181, i64 %t177 - %t183 = load %S.ast.Node, ptr %t182 - store %S.ast.Node %t183, ptr %a184 - call void @finch.copy.S_ast_Node(ptr %a185, ptr %a184) - %t186 = load %S.ast.Node, ptr %a185 - %t187 = load i64, ptr %t175 - %t188 = add i64 %t187, 1 - call void @finch_arr_reserve(ptr %a168, i64 %t188, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t189 = load ptr, ptr %a168 - %t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187 - store %S.ast.Node %t186, ptr %t190 - store i64 %t188, ptr %t175 - br label %for.step8665 -for.step8665: - %t191 = load i64, ptr %a172 - %t192 = add i64 %t191, 1 - store i64 %t192, ptr %a172 - br label %for.cond8663 -for.end8666: - %t193 = load ptr, ptr %a1 - %t194 = load i64, ptr %a165 - %t195 = load { ptr, i64, i64 }, ptr %a168 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load %S.ast.Node, ptr %a2 - %t199 = call %S.gen.Val @finch.gen.construct(ptr %t193, i64 %t194, { ptr, i64, i64 } %t195, { ptr, i64, i64 } %t197, %S.ast.Node %t198) - call void @finch.drop.arr_S_ast_Node(ptr %a168) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t199 -endif8662: - %t200 = load ptr, ptr %a1 - %t201 = load %S.ast.Node, ptr %a2 - %t202 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5599, i64 12, 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.5600, i64 35, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t211, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t211, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.5601, i64 1, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t200, %S.ast.Node %t201, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - call void @finch_str_drop(ptr %a69) - br label %endif8647 -endif8647: - %t225 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t226 = call ptr @finch_alloc(i64 %t225) - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 0 - store { ptr, i64, i64 } { ptr @.str.5602, i64 4, i64 0 }, ptr %t227 - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 1 - store { ptr, i64, i64 } { ptr @.str.5603, i64 3, i64 0 }, ptr %t228 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 2 - store { ptr, i64, i64 } { ptr @.str.5604, i64 6, i64 0 }, ptr %t229 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 3 - store { ptr, i64, i64 } { ptr @.str.5605, i64 6, i64 0 }, ptr %t230 - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 4 - store { ptr, i64, i64 } { ptr @.str.5606, i64 5, i64 0 }, ptr %t231 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 5 - store { ptr, i64, i64 } { ptr @.str.5607, i64 6, i64 0 }, ptr %t232 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 6 - store { ptr, i64, i64 } { ptr @.str.5608, i64 4, i64 0 }, ptr %t233 - %t234 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 7 - store { ptr, i64, i64 } { ptr @.str.5609, i64 7, i64 0 }, ptr %t234 - %t235 = insertvalue { ptr, i64, i64 } undef, ptr %t226, 0 - %t236 = insertvalue { ptr, i64, i64 } %t235, i64 8, 1 - %t237 = insertvalue { ptr, i64, i64 } %t236, i64 8, 2 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = load %S.ast.Node, ptr %a13 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, 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 %a238 - store i64 0, ptr %a247 - br label %find.cond8669 -find.cond8669: - %t248 = load i64, ptr %a247 - %t249 = icmp slt i64 %t248, %t245 - br i1 %t249, label %find.body8670, label %find.end8673 -find.body8670: - %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.hit8671, label %find.next8672 -find.hit8671: - store i64 %t248, ptr %a244 - br label %find.end8673 -find.next8672: - %t256 = add i64 %t248, 1 - store i64 %t256, ptr %a247 - br label %find.cond8669 -find.end8673: - %t257 = load i64, ptr %a244 - %t258 = icmp sge i64 %t257, 0 - %t259 = call %S.gen.Ref @finch.gen.ref(ptr %t239, %S.ast.Node %t240, i1 %t258) - store %S.gen.Ref %t259, ptr %a260 - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic8674, label %ok8675 -panic8674: - call void @finch_panic(ptr @.str.5610, i64 5266, ptr @.str.5611) - unreachable -ok8675: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - store i64 %t265, ptr %a266 - %t267 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t268 = getelementptr inbounds %S.gen.Val, ptr %t267, i32 0, i32 1 - %t269 = load %S.ast.Type, ptr %t268 - store %S.ast.Type %t269, ptr %a270 - call void @finch.copy.S_ast_Type(ptr %a271, ptr %a270) - %t272 = load %S.ast.Type, ptr %a271 - store %S.ast.Type %t272, ptr %a273 - %t274 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t275 = load i1, ptr %t274 - br i1 %t275, label %then8676, label %endif8678 -then8676: - %t276 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t277 = getelementptr inbounds %S.gen.Place, ptr %t276, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t281, ptr %a273 - store %S.ast.Type %t282, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - br label %endif8678 -endif8678: - %t284 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - store { ptr, i64, i64 } { ptr @.str.5612, i64 5, i64 0 }, ptr %a287 - %t288 = call i32 @finch_str_eq(ptr %a286, ptr %a287) - %t289 = icmp ne i32 %t288, 0 - br i1 %t289, label %then8679, label %endif8681 -then8679: - store { ptr, i64, i64 } { ptr @.str.5613, i64 0, i64 0 }, ptr %a290 - %t291 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t292 = load i1, ptr %t291 - br i1 %t292, label %then8682, label %else8683 -then8682: - %t293 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t294 = getelementptr inbounds %S.gen.Place, ptr %t293, 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 - %t299 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t298, ptr %a290 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_drop(ptr %a300) - br label %endif8684 -else8683: - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t302 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store i64 -1, ptr %a304 - %t305 = load i64, ptr %t301 - %t306 = load ptr, ptr %a238 - store i64 0, ptr %a307 - br label %find.cond8685 -find.cond8685: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t305 - br i1 %t309, label %find.body8686, label %find.end8689 -find.body8686: - %t310 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 %t308 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } %t303, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br i1 %t315, label %find.hit8687, label %find.next8688 -find.hit8687: - store i64 %t308, ptr %a304 - br label %find.end8689 -find.next8688: - %t316 = add i64 %t308, 1 - store i64 %t316, ptr %a307 - br label %find.cond8685 -find.end8689: - %t317 = load i64, ptr %a304 - %t318 = icmp sge i64 %t317, 0 - br i1 %t318, label %then8690, label %endif8692 -then8690: - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Node, ptr %a2 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.5614, i64 63, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a323 - call void @finch.gen.fail(ptr %t319, %S.ast.Node %t320, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif8692 -endif8692: - %t328 = load ptr, ptr %a1 - %t329 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t330 = load %S.gen.Val, ptr %t329 - %t331 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t328, %S.gen.Val %t330) - %t332 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t331, ptr %a290 - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t335 = getelementptr inbounds %S.gen.Val, ptr %t334, i32 0, i32 2 - %t336 = load i1, ptr %t335 - br i1 %t336, label %then8693, label %endif8695 -then8693: - %t337 = load ptr, ptr %a1 - %t338 = load { ptr, i64, i64 }, ptr %a290 - %t339 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t337, { ptr, i64, i64 } %t338, %S.ast.Type %t339) - br label %endif8695 -endif8695: - br label %endif8684 -endif8684: - %t340 = load ptr, ptr %a1 - %t341 = load %S.ast.Node, ptr %a2 - %t342 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.gen.noteMethod(ptr %t340, %S.ast.Node %t341, { ptr, i64, i64 } %t342) - store { ptr, i64, i64 } %t342, ptr %a343 - call void @finch.drop.arr_S_docs_Doc(ptr %a343) - %t344 = load ptr, ptr %a1 - %t345 = load %S.ast.Node, ptr %a2 - %t346 = load { ptr, i64, i64 }, ptr %a290 - %t347 = load %S.ast.Type, ptr %a273 - %t348 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t344, %S.ast.Node %t345, { ptr, i64, i64 } %t346, %S.ast.Type %t347) - store %S.gen.Val %t348, ptr %a349 - %t350 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t351 = load i1, ptr %t350 - %t352 = xor i1 %t351, true - br label %logic.from8696 -logic.from8696: - br i1 %t352, label %logic.rhs8697, label %logic.end8698 -logic.rhs8697: - %t353 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t354 = getelementptr inbounds %S.gen.Val, ptr %t353, i32 0, i32 2 - %t355 = load i1, ptr %t354 - br label %logic.rend8699 -logic.rend8699: - br label %logic.end8698 -logic.end8698: - %t356 = phi i1 [ false, %logic.from8696 ], [ %t355, %logic.rend8699 ] - br i1 %t356, label %then8700, label %endif8702 -then8700: - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a290 - %t359 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359) - br label %endif8702 -endif8702: - %t360 = load ptr, ptr %a1 - %t361 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t360, i64 %t361) - %t362 = load %S.gen.Val, ptr %a349 - call void @finch_str_drop(ptr %a290) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t362 -endif8681: - %t363 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5615, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then8703, label %endif8705 -then8703: - %t369 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t370 = load %S.gen.Val, ptr %t369 - store %S.gen.Val %t370, ptr %a371 - call void @finch.copy.S_gen_Val(ptr %a372, ptr %a371) - %t373 = load %S.gen.Val, ptr %a372 - store %S.gen.Val %t373, ptr %a374 - %t375 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t376 = load i1, ptr %t375 - br i1 %t376, label %then8706, label %endif8708 -then8706: - %t377 = load ptr, ptr %a1 - %t378 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t379 = getelementptr inbounds %S.gen.Place, ptr %t378, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call { ptr, i64, i64 } @finch.gen.load(ptr %t377, { ptr, i64, i64 } { ptr @.str.5616, i64 17, i64 0 }, { ptr, i64, i64 } %t380) - %t382 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t381, 0 - %t383 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t383, ptr %a384 - call void @finch.copy.S_ast_Type(ptr %a385, ptr %a384) - %t386 = load %S.ast.Type, ptr %a385 - %t387 = insertvalue %S.gen.Val %t382, %S.ast.Type %t386, 1 - %t388 = load %S.gen.Val, ptr %a374 - store %S.gen.Val %t387, ptr %a374 - store %S.gen.Val %t388, ptr %a389 - call void @finch.drop.S_gen_Val(ptr %a389) - br label %endif8708 -endif8708: - %t390 = load ptr, ptr %a1 - %t391 = load %S.ast.Node, ptr %a2 - %t392 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.gen.noteMethod(ptr %t390, %S.ast.Node %t391, { ptr, i64, i64 } %t392) - store { ptr, i64, i64 } %t392, ptr %a393 - call void @finch.drop.arr_S_docs_Doc(ptr %a393) - %t394 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t395 = load i1, ptr %t394 - %t396 = xor i1 %t395, true - br i1 %t396, label %then8709, label %endif8711 -then8709: - %t397 = load ptr, ptr %a1 - %t398 = load %S.gen.Val, ptr %a374 - call void @finch.gen.hold(ptr %t397, %S.gen.Val %t398) - br label %endif8711 -endif8711: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a2 - %t401 = load ptr, ptr %a1 - %t402 = load %S.gen.Val, ptr %a374 - %t403 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t401, %S.gen.Val %t402) - %t404 = call %S.gen.Val @finch.gen.strMethod(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t403) - store { ptr, i64, i64 } %t403, ptr %a405 - call void @finch_str_drop(ptr %a405) - store %S.gen.Val %t404, ptr %a406 - %t407 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t408 = load i1, ptr %t407 - %t409 = xor i1 %t408, true - br i1 %t409, label %then8712, label %endif8714 -then8712: - %t410 = load ptr, ptr %a1 - %t411 = load %S.gen.Val, ptr %a374 - call void @finch.gen.release(ptr %t410, %S.gen.Val %t411) - br label %endif8714 -endif8714: - %t412 = load ptr, ptr %a1 - %t413 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t412, i64 %t413) - %t414 = load %S.gen.Val, ptr %a406 - call void @finch.drop.S_gen_Val(ptr %a374) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t414 -endif8705: - %t415 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5617, i64 3, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then8715, label %endif8717 -then8715: - store { ptr, i64, i64 } { ptr @.str.5618, i64 0, i64 0 }, ptr %a421 - %t422 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t423 = load i1, ptr %t422 - br i1 %t423, label %then8718, label %else8719 -then8718: - %t424 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t425 = getelementptr inbounds %S.gen.Place, ptr %t424, i32 0, i32 0 - %t426 = load { ptr, i64, i64 }, ptr %t425 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch_str_copy(ptr %a428, ptr %a427) - %t429 = load { ptr, i64, i64 }, ptr %a428 - %t430 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t429, ptr %a421 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - br label %endif8720 -else8719: - %t432 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t433 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t434 = load { ptr, i64, i64 }, ptr %t433 - store i64 -1, ptr %a435 - %t436 = load i64, ptr %t432 - %t437 = load ptr, ptr %a238 - store i64 0, ptr %a438 - br label %find.cond8721 -find.cond8721: - %t439 = load i64, ptr %a438 - %t440 = icmp slt i64 %t439, %t436 - br i1 %t440, label %find.body8722, label %find.end8725 -find.body8722: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t437, i64 %t439 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br i1 %t446, label %find.hit8723, label %find.next8724 -find.hit8723: - store i64 %t439, ptr %a435 - br label %find.end8725 -find.next8724: - %t447 = add i64 %t439, 1 - store i64 %t447, ptr %a438 - br label %find.cond8721 -find.end8725: - %t448 = load i64, ptr %a435 - %t449 = icmp sge i64 %t448, 0 - br i1 %t449, label %then8726, label %endif8728 -then8726: - %t450 = load ptr, ptr %a1 - %t451 = load %S.ast.Node, ptr %a2 - %t452 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t453 = load { ptr, i64, i64 }, ptr %t452 - store { ptr, i64, i64 } %t453, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.5619, i64 61, i64 0 }, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a454 - call void @finch.gen.fail(ptr %t450, %S.ast.Node %t451, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - br label %endif8728 -endif8728: - %t459 = load ptr, ptr %a1 - %t460 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t461 = load %S.gen.Val, ptr %t460 - %t462 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t459, %S.gen.Val %t461) - %t463 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t462, ptr %a421 - store { ptr, i64, i64 } %t463, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t466 = getelementptr inbounds %S.gen.Val, ptr %t465, i32 0, i32 2 - %t467 = load i1, ptr %t466 - br i1 %t467, label %then8729, label %endif8731 -then8729: - %t468 = load ptr, ptr %a1 - %t469 = load { ptr, i64, i64 }, ptr %a421 - %t470 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t468, { ptr, i64, i64 } %t469, %S.ast.Type %t470) - br label %endif8731 -endif8731: - br label %endif8720 -endif8720: - %t471 = load ptr, ptr %a1 - %t472 = load %S.ast.Node, ptr %a2 - %t473 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.gen.noteMethod(ptr %t471, %S.ast.Node %t472, { ptr, i64, i64 } %t473) - store { ptr, i64, i64 } %t473, ptr %a474 - call void @finch.drop.arr_S_docs_Doc(ptr %a474) - %t475 = load ptr, ptr %a1 - %t476 = load %S.ast.Node, ptr %a2 - %t477 = load { ptr, i64, i64 }, ptr %a421 - %t478 = load %S.ast.Type, ptr %a273 - %t479 = call %S.gen.Val @finch.gen.mapMethod(ptr %t475, %S.ast.Node %t476, { ptr, i64, i64 } %t477, %S.ast.Type %t478) - store %S.gen.Val %t479, ptr %a480 - %t481 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t482 = load i1, ptr %t481 - %t483 = xor i1 %t482, true - br label %logic.from8732 -logic.from8732: - br i1 %t483, label %logic.rhs8733, label %logic.end8734 -logic.rhs8733: - %t484 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t485 = getelementptr inbounds %S.gen.Val, ptr %t484, i32 0, i32 2 - %t486 = load i1, ptr %t485 - br label %logic.rend8735 -logic.rend8735: - br label %logic.end8734 -logic.end8734: - %t487 = phi i1 [ false, %logic.from8732 ], [ %t486, %logic.rend8735 ] - br i1 %t487, label %then8736, label %endif8738 -then8736: - %t488 = load ptr, ptr %a1 - %t489 = load { ptr, i64, i64 }, ptr %a421 - %t490 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t488, { ptr, i64, i64 } %t489, %S.ast.Type %t490) - br label %endif8738 -endif8738: - %t491 = load ptr, ptr %a1 - %t492 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t491, i64 %t492) - %t493 = load %S.gen.Val, ptr %a480 - call void @finch_str_drop(ptr %a421) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t493 -endif8717: - %t494 = load ptr, ptr %a1 - %t495 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t494, i64 %t495) - %t496 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t496, ptr %a497 - call void @finch.copy.S_ast_Type(ptr %a498, ptr %a497) - %t499 = load %S.ast.Type, ptr %a498 - store %S.ast.Type %t499, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.5620, i64 0, i64 0 }, ptr %a501 - store i1 false, ptr %a502 - %t503 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t504 = load { ptr, i64, i64 }, ptr %t503 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5621, i64 3, i64 0 }, ptr %a506 - %t507 = call i32 @finch_str_eq(ptr %a505, ptr %a506) - %t508 = icmp ne i32 %t507, 0 - br label %logic.from8739 -logic.from8739: - br i1 %t508, label %logic.rhs8740, label %logic.end8741 -logic.rhs8740: - %t509 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i32 0, i32 1 - %t511 = load i64, ptr %t510 - %t512 = icmp sgt i64 %t511, 0 - br label %logic.rend8742 -logic.rend8742: - br label %logic.end8741 -logic.end8741: - %t513 = phi i1 [ false, %logic.from8739 ], [ %t512, %logic.rend8742 ] - br label %logic.from8743 -logic.from8743: - br i1 %t513, label %logic.rhs8744, label %logic.end8745 -logic.rhs8744: - %t514 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range8746, label %inrange8747 -range8746: - call void @finch_panic_index(ptr @.str.5622, i64 5333, i64 0, i64 %t516) - unreachable -inrange8747: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = getelementptr inbounds %S.ast.Type, ptr %t519, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5623, i64 6, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8748 -logic.rend8748: - br label %logic.end8745 -logic.end8745: - %t526 = phi i1 [ false, %logic.from8743 ], [ %t525, %logic.rend8748 ] - br i1 %t526, label %then8749, label %else8750 -then8749: - %t527 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t528 = getelementptr inbounds %S.gen.Val, ptr %t527, i32 0, i32 0 - %t529 = load { ptr, i64, i64 }, ptr %t528 - store { ptr, i64, i64 } %t529, ptr %a530 - call void @finch_str_copy(ptr %a531, ptr %a530) - %t532 = load { ptr, i64, i64 }, ptr %a531 - store { ptr, i64, i64 } %t532, ptr %a533 - %t534 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t535 = load i1, ptr %t534 - br i1 %t535, label %then8752, label %endif8754 -then8752: - %t536 = load ptr, ptr %a1 - %t537 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t538 = getelementptr inbounds %S.gen.Place, ptr %t537, i32 0, i32 0 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = call { ptr, i64, i64 } @finch.gen.load(ptr %t536, { ptr, i64, i64 } { ptr @.str.5624, i64 3, i64 0 }, { ptr, i64, i64 } %t539) - %t541 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t540, ptr %a533 - store { ptr, i64, i64 } %t541, ptr %a542 - call void @finch_str_drop(ptr %a542) - br label %endif8754 -endif8754: - %t543 = load ptr, ptr %a1 - %t544 = load ptr, ptr %a1 - %t545 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } { ptr @.str.5625, i64 12, i64 0 }, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a546 - store { ptr, i64, i64 } %t549, ptr %a551 - store { ptr, i64, i64 } { ptr @.str.5626, i64 6, i64 0 }, ptr %a552 - call void @finch_str_concat(ptr %a550, ptr %a551, ptr %a552) - store { ptr, i64, i64 } %t549, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a550 - %t555 = call { ptr, i64, i64 } @finch.gen.op(ptr %t544, { ptr, i64, i64 } %t554) - store { ptr, i64, i64 } %t554, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t558 = load { ptr, i64, i64 }, ptr %t557 - store { ptr, i64, i64 } { ptr @.str.5627, i64 8, i64 0 }, 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.5628, i64 20, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t543, { ptr, i64, i64 } %t555, { ptr, i64, i64 } %t567, %S.ast.Node %t568) - store { ptr, i64, i64 } %t555, ptr %a569 - call void @finch_str_drop(ptr %a569) - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t572 = load { ptr, i64, i64 }, ptr %t571 - %t573 = extractvalue { ptr, i64, i64 } %t572, 1 - %t574 = icmp uge i64 0, %t573 - br i1 %t574, label %range8755, label %inrange8756 -range8755: - call void @finch_panic_index(ptr @.str.5629, i64 5339, i64 0, i64 %t573) - unreachable -inrange8756: - %t575 = extractvalue { ptr, i64, i64 } %t572, 0 - %t576 = getelementptr inbounds %S.ast.Type, ptr %t575, i64 0 - %t577 = load %S.ast.Type, ptr %t576 - store %S.ast.Type %t577, ptr %a578 - call void @finch.copy.S_ast_Type(ptr %a579, ptr %a578) - %t580 = load %S.ast.Type, ptr %a579 - %t581 = load %S.ast.Type, ptr %a500 - store %S.ast.Type %t580, ptr %a500 - store %S.ast.Type %t581, ptr %a582 - call void @finch.drop.S_ast_Type(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t583, ptr %a584 - call void @finch_str_copy(ptr %a585, ptr %a584) - %t586 = load { ptr, i64, i64 }, ptr %a585 - %t587 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t586, ptr %a501 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_drop(ptr %a588) - call void @finch_str_drop(ptr %a533) - br label %endif8751 -else8750: - %t589 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t590 = load { ptr, i64, i64 }, ptr %t589 - store { ptr, i64, i64 } %t590, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.5630, i64 6, i64 0 }, ptr %a592 - %t593 = call i32 @finch_str_eq(ptr %a591, ptr %a592) - %t594 = icmp ne i32 %t593, 0 - br label %logic.from8757 -logic.from8757: - br i1 %t594, label %logic.end8759, label %logic.rhs8758 -logic.rhs8758: - %t595 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t596 = load { ptr, i64, i64 }, ptr %t595 - store { ptr, i64, i64 } %t596, ptr %a597 - store { ptr, i64, i64 } { ptr @.str.5631, i64 4, i64 0 }, ptr %a598 - %t599 = call i32 @finch_str_eq(ptr %a597, ptr %a598) - %t600 = icmp ne i32 %t599, 0 - br label %logic.rend8760 -logic.rend8760: - br label %logic.end8759 -logic.end8759: - %t601 = phi i1 [ true, %logic.from8757 ], [ %t600, %logic.rend8760 ] - br i1 %t601, label %then8761, label %endif8763 -then8761: - %t602 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t603 = load i1, ptr %t602 - br i1 %t603, label %then8764, label %else8765 -then8764: - %t604 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t605 = getelementptr inbounds %S.gen.Place, ptr %t604, i32 0, i32 0 - %t606 = load { ptr, i64, i64 }, ptr %t605 - store { ptr, i64, i64 } %t606, ptr %a607 - call void @finch_str_copy(ptr %a608, ptr %a607) - %t609 = load { ptr, i64, i64 }, ptr %a608 - %t610 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t609, ptr %a501 - store { ptr, i64, i64 } %t610, ptr %a611 - call void @finch_str_drop(ptr %a611) - br label %endif8766 -else8765: - %t612 = load ptr, ptr %a1 - %t613 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t614 = load %S.gen.Val, ptr %t613 - %t615 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t612, %S.gen.Val %t614) - %t616 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t615, ptr %a501 - store { ptr, i64, i64 } %t616, ptr %a617 - call void @finch_str_drop(ptr %a617) - store i1 true, ptr %a502 - br label %endif8766 -endif8766: - br label %endif8763 -endif8763: - br label %endif8751 -endif8751: - %t618 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - store { ptr, i64, i64 } %t619, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5632, i64 6, i64 0 }, ptr %a621 - %t622 = call i32 @finch_str_eq(ptr %a620, ptr %a621) - %t623 = icmp ne i32 %t622, 0 - br label %logic.from8767 -logic.from8767: - br i1 %t623, label %logic.end8769, label %logic.rhs8768 -logic.rhs8768: - %t624 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t625 = load { ptr, i64, i64 }, ptr %t624 - store { ptr, i64, i64 } %t625, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5633, i64 4, i64 0 }, ptr %a627 - %t628 = call i32 @finch_str_eq(ptr %a626, ptr %a627) - %t629 = icmp ne i32 %t628, 0 - br label %logic.rend8770 -logic.rend8770: - br label %logic.end8769 -logic.end8769: - %t630 = phi i1 [ true, %logic.from8767 ], [ %t629, %logic.rend8770 ] - br i1 %t630, label %then8771, label %endif8773 -then8771: - %t631 = load ptr, ptr %a1 - %t632 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t633 = load { ptr, i64, i64 }, ptr %t632 - %t634 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t635 = load { ptr, i64, i64 }, ptr %t634 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = call i64 @finch.gen.findMethod(ptr %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635, { ptr, i64, i64 } %t637) - store i64 %t638, ptr %a639 - %t640 = load i64, ptr %a639 - %t641 = icmp slt i64 %t640, 0 - br label %logic.from8774 -logic.from8774: - br i1 %t641, label %logic.rhs8775, label %logic.end8776 -logic.rhs8775: - %t642 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t643 = load { ptr, i64, i64 }, ptr %t642 - store { ptr, i64, i64 } %t643, ptr %a644 - store { ptr, i64, i64 } { ptr @.str.5634, i64 6, i64 0 }, ptr %a645 - %t646 = call i32 @finch_str_eq(ptr %a644, ptr %a645) - %t647 = icmp ne i32 %t646, 0 - br label %logic.rend8777 -logic.rend8777: - br label %logic.end8776 -logic.end8776: - %t648 = phi i1 [ false, %logic.from8774 ], [ %t647, %logic.rend8777 ] - br i1 %t648, label %then8778, label %endif8780 -then8778: - %t649 = load ptr, ptr %a1 - %t650 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t653 = load { ptr, i64, i64 }, ptr %t652 - %t654 = call i64 @finch.gen.findStruct(ptr %t649, { ptr, i64, i64 } %t651, { ptr, i64, i64 } %t653) - store i64 %t654, ptr %a655 - %t656 = load ptr, ptr %a1 - %t657 = icmp eq ptr %t656, null - br i1 %t657, label %panic8781, label %ok8782 -panic8781: - call void @finch_panic(ptr @.str.5635, i64 5353, ptr @.str.5636) - unreachable -ok8782: - %t658 = getelementptr inbounds %S.gen.Gen, ptr %t656, i32 0, i32 16 - %t659 = load i64, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %t658 - %t661 = extractvalue { ptr, i64, i64 } %t660, 1 - %t662 = icmp uge i64 %t659, %t661 - br i1 %t662, label %range8783, label %inrange8784 -range8783: - call void @finch_panic_index(ptr @.str.5637, i64 5353, i64 %t659, i64 %t661) - unreachable -inrange8784: - %t663 = extractvalue { ptr, i64, i64 } %t660, 0 - %t664 = getelementptr inbounds %S.gen.StructDef, ptr %t663, i64 %t659 - %t665 = getelementptr inbounds %S.gen.StructDef, ptr %t664, i32 0, i32 5 - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t667 = load i64, ptr %t666 - %t668 = icmp sgt i64 %t667, 0 - br i1 %t668, label %then8785, label %endif8787 -then8785: - %t669 = load ptr, ptr %a1 - %t670 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t671 = load { ptr, i64, i64 }, ptr %t670 - %t672 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t673 = load { ptr, i64, i64 }, ptr %t672 - %t674 = load ptr, ptr %a1 - %t675 = icmp eq ptr %t674, null - br i1 %t675, label %panic8788, label %ok8789 -panic8788: - call void @finch_panic(ptr @.str.5638, i64 5354, ptr @.str.5639) - unreachable -ok8789: - %t676 = getelementptr inbounds %S.gen.Gen, ptr %t674, i32 0, i32 16 - %t677 = load i64, ptr %a655 - %t678 = load { ptr, i64, i64 }, ptr %t676 - %t679 = extractvalue { ptr, i64, i64 } %t678, 1 - %t680 = icmp uge i64 %t677, %t679 - br i1 %t680, label %range8790, label %inrange8791 -range8790: - call void @finch_panic_index(ptr @.str.5640, i64 5354, i64 %t677, i64 %t679) - unreachable -inrange8791: - %t681 = extractvalue { ptr, i64, i64 } %t678, 0 - %t682 = getelementptr inbounds %S.gen.StructDef, ptr %t681, i64 %t677 - %t683 = getelementptr inbounds %S.gen.StructDef, ptr %t682, i32 0, i32 5 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findTemplate(ptr %t669, { ptr, i64, i64 } %t671, { ptr, i64, i64 } %t673, { ptr, i64, i64 } %t684, i1 false) - store i64 %t685, ptr %a686 - %t687 = load i64, ptr %a686 - %t688 = icmp sge i64 %t687, 0 - br i1 %t688, label %then8792, label %endif8794 -then8792: - %t689 = load ptr, ptr %a1 - %t690 = load i64, ptr %a686 - %t691 = load ptr, ptr %a1 - %t692 = icmp eq ptr %t691, null - br i1 %t692, label %panic8795, label %ok8796 -panic8795: - call void @finch_panic(ptr @.str.5641, i64 5356, ptr @.str.5642) - unreachable -ok8796: - %t693 = getelementptr inbounds %S.gen.Gen, ptr %t691, i32 0, i32 16 - %t694 = load i64, ptr %a655 - %t695 = load { ptr, i64, i64 }, ptr %t693 - %t696 = extractvalue { ptr, i64, i64 } %t695, 1 - %t697 = icmp uge i64 %t694, %t696 - br i1 %t697, label %range8797, label %inrange8798 -range8797: - call void @finch_panic_index(ptr @.str.5643, i64 5356, i64 %t694, i64 %t696) - unreachable -inrange8798: - %t698 = extractvalue { ptr, i64, i64 } %t695, 0 - %t699 = getelementptr inbounds %S.gen.StructDef, ptr %t698, i64 %t694 - %t700 = getelementptr inbounds %S.gen.StructDef, ptr %t699, i32 0, i32 7 - %t701 = load { ptr, i64, i64 }, ptr %t700 - %t702 = load %S.ast.Type, ptr %a500 - %t703 = load %S.ast.Node, ptr %a2 - %t704 = call i64 @finch.gen.instFn(ptr %t689, i64 %t690, { ptr, i64, i64 } %t701, %S.ast.Type %t702, %S.ast.Node %t703) - store i64 %t704, ptr %a639 - br label %endif8794 -endif8794: - br label %endif8787 -endif8787: - br label %endif8780 -endif8780: - %t705 = load i64, ptr %a639 - %t706 = icmp slt i64 %t705, 0 - br i1 %t706, label %then8799, label %endif8801 -then8799: - store { ptr, i64, i64 } zeroinitializer, ptr %a707 - %t708 = load ptr, ptr %a1 - %t709 = icmp eq ptr %t708, null - br i1 %t709, label %panic8802, label %ok8803 -panic8802: - call void @finch_panic(ptr @.str.5644, i64 5362, ptr @.str.5645) - unreachable -ok8803: - %t710 = getelementptr inbounds %S.gen.Gen, ptr %t708, i32 0, i32 15 - store i64 0, ptr %a711 - br label %each.cond8804 -each.cond8804: - %t712 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i32 0, i32 1 - %t713 = load i64, ptr %t712 - %t714 = load i64, ptr %a711 - %t715 = icmp slt i64 %t714, %t713 - br i1 %t715, label %each.body8805, label %each.end8807 -each.body8805: - %t716 = load ptr, ptr %t710 - %t717 = getelementptr inbounds %S.gen.FnSig, ptr %t716, i64 %t714 - %t718 = load %S.gen.FnSig, ptr %t717 - store %S.gen.FnSig %t718, ptr %a719 - %t720 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 2 - %t721 = load { ptr, i64, i64 }, ptr %t720 - %t722 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t723 = load { ptr, i64, i64 }, ptr %t722 - store { ptr, i64, i64 } %t721, ptr %a724 - store { ptr, i64, i64 } %t723, ptr %a725 - %t726 = call i32 @finch_str_eq(ptr %a724, ptr %a725) - %t727 = icmp ne i32 %t726, 0 - br label %logic.from8808 -logic.from8808: - br i1 %t727, label %logic.rhs8809, label %logic.end8810 -logic.rhs8809: - %t728 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 3 - %t729 = load { ptr, i64, i64 }, ptr %t728 - %t730 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t731 = load { ptr, i64, i64 }, ptr %t730 - store { ptr, i64, i64 } %t729, ptr %a732 - store { ptr, i64, i64 } %t731, ptr %a733 - %t734 = call i32 @finch_str_eq(ptr %a732, ptr %a733) - %t735 = icmp ne i32 %t734, 0 - br label %logic.rend8811 -logic.rend8811: - br label %logic.end8810 -logic.end8810: - %t736 = phi i1 [ false, %logic.from8808 ], [ %t735, %logic.rend8811 ] - br i1 %t736, label %then8812, label %endif8814 -then8812: - %t737 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t738 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 1 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_copy(ptr %a741, ptr %a740) - %t742 = load { ptr, i64, i64 }, ptr %a741 - %t743 = load i64, ptr %t737 - %t744 = add i64 %t743, 1 - call void @finch_arr_reserve(ptr %a707, i64 %t744, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t745 = load ptr, ptr %a707 - %t746 = getelementptr inbounds { ptr, i64, i64 }, ptr %t745, i64 %t743 - store { ptr, i64, i64 } %t742, ptr %t746 - store i64 %t744, ptr %t737 - br label %endif8814 -endif8814: - br label %each.step8806 -each.step8806: - %t747 = load i64, ptr %a711 - %t748 = add i64 %t747, 1 - store i64 %t748, ptr %a711 - br label %each.cond8804 -each.end8807: - %t749 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t750 = load i64, ptr %t749 - %t751 = icmp eq i64 %t750, 0 - br i1 %t751, label %then8815, label %endif8817 -then8815: - %t752 = load ptr, ptr %a1 - %t753 = load %S.ast.Node, ptr %a2 - %t754 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t755 = load { ptr, i64, i64 }, ptr %t754 - store { ptr, i64, i64 } { ptr @.str.5646, i64 4, i64 0 }, ptr %a757 - store { ptr, i64, i64 } %t755, ptr %a758 - call void @finch_str_concat(ptr %a756, ptr %a757, ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.5647, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = load %S.ast.Type, ptr %a500 - %t766 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t765) - store { ptr, i64, i64 } %t764, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t764, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.5648, i64 34, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t779 = load { ptr, i64, i64 }, ptr %t778 - store { ptr, i64, i64 } %t777, ptr %a781 - store { ptr, i64, i64 } %t779, ptr %a782 - call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) - store { ptr, i64, i64 } %t777, ptr %a783 - call void @finch_str_drop(ptr %a783) - %t784 = load { ptr, i64, i64 }, ptr %a780 - store { ptr, i64, i64 } %t784, ptr %a786 - store { ptr, i64, i64 } { ptr @.str.5649, i64 1, i64 0 }, ptr %a787 - call void @finch_str_concat(ptr %a785, ptr %a786, ptr %a787) - store { ptr, i64, i64 } %t784, ptr %a788 - call void @finch_str_drop(ptr %a788) - %t789 = load { ptr, i64, i64 }, ptr %a785 - %t790 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t791 = load { ptr, i64, i64 }, ptr %t790 - store { ptr, i64, i64 } %t789, ptr %a793 - store { ptr, i64, i64 } %t791, ptr %a794 - call void @finch_str_concat(ptr %a792, ptr %a793, ptr %a794) - store { ptr, i64, i64 } %t789, ptr %a795 - call void @finch_str_drop(ptr %a795) - %t796 = load { ptr, i64, i64 }, ptr %a792 - store { ptr, i64, i64 } %t796, ptr %a798 - store { ptr, i64, i64 } { ptr @.str.5650, i64 13, i64 0 }, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - store { ptr, i64, i64 } %t796, ptr %a800 - call void @finch_str_drop(ptr %a800) - %t801 = load { ptr, i64, i64 }, ptr %a797 - call void @finch.gen.fail(ptr %t752, %S.ast.Node %t753, { ptr, i64, i64 } %t801) - store { ptr, i64, i64 } %t801, ptr %a802 - call void @finch_str_drop(ptr %a802) - br label %endif8817 -endif8817: - %t803 = load ptr, ptr %a1 - %t804 = load %S.ast.Node, ptr %a2 - %t805 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t806 = load { ptr, i64, i64 }, ptr %t805 - store { ptr, i64, i64 } { ptr @.str.5651, i64 4, 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.5652, i64 1, i64 0 }, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - %t816 = load %S.ast.Type, ptr %a500 - %t817 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t816) - store { ptr, i64, i64 } %t815, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t815, ptr %a821 - call void @finch_str_drop(ptr %a821) - store { ptr, i64, i64 } %t817, ptr %a822 - call void @finch_str_drop(ptr %a822) - %t823 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t823, ptr %a825 - store { ptr, i64, i64 } { ptr @.str.5653, i64 16, i64 0 }, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t823, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - %t829 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t830 = load { ptr, i64, i64 }, ptr %t829 - store { ptr, i64, i64 } %t828, ptr %a832 - store { ptr, i64, i64 } %t830, ptr %a833 - call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) - store { ptr, i64, i64 } %t828, ptr %a834 - call void @finch_str_drop(ptr %a834) - %t835 = load { ptr, i64, i64 }, ptr %a831 - store { ptr, i64, i64 } %t835, ptr %a837 - store { ptr, i64, i64 } { ptr @.str.5654, i64 11, i64 0 }, ptr %a838 - call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838) - store { ptr, i64, i64 } %t835, ptr %a839 - call void @finch_str_drop(ptr %a839) - %t840 = load { ptr, i64, i64 }, ptr %a836 - %t841 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5655, i64 2, i64 0 }, ptr %a842 - call void @finch_str_join(ptr %a843, ptr %a707, ptr %a842) - %t844 = load { ptr, i64, i64 }, ptr %a843 - store { ptr, i64, i64 } %t840, ptr %a846 - store { ptr, i64, i64 } %t844, ptr %a847 - call void @finch_str_concat(ptr %a845, ptr %a846, ptr %a847) - store { ptr, i64, i64 } %t840, ptr %a848 - call void @finch_str_drop(ptr %a848) - store { ptr, i64, i64 } %t844, ptr %a849 - call void @finch_str_drop(ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5656, i64 1, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - call void @finch.gen.fail(ptr %t803, %S.ast.Node %t804, { ptr, i64, i64 } %t855) - store { ptr, i64, i64 } %t855, ptr %a856 - call void @finch_str_drop(ptr %a856) - call void @finch.drop.arr_str(ptr %a707) - br label %endif8801 -endif8801: - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic8818, label %ok8819 -panic8818: - call void @finch_panic(ptr @.str.5657, i64 5373, ptr @.str.5658) - unreachable -ok8819: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 15 - %t860 = load i64, ptr %a639 - %t861 = load { ptr, i64, i64 }, ptr %t859 - %t862 = extractvalue { ptr, i64, i64 } %t861, 1 - %t863 = icmp uge i64 %t860, %t862 - br i1 %t863, label %range8820, label %inrange8821 -range8820: - call void @finch_panic_index(ptr @.str.5659, i64 5373, i64 %t860, i64 %t862) - unreachable -inrange8821: - %t864 = extractvalue { ptr, i64, i64 } %t861, 0 - %t865 = getelementptr inbounds %S.gen.FnSig, ptr %t864, i64 %t860 - %t866 = getelementptr inbounds %S.gen.FnSig, ptr %t865, i32 0, i32 10 - %t867 = load i1, ptr %t866 - br label %logic.from8822 -logic.from8822: - br i1 %t867, label %logic.rhs8823, label %logic.end8824 -logic.rhs8823: - %t868 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t869 = load { ptr, i64, i64 }, ptr %t868 - store { ptr, i64, i64 } %t869, ptr %a870 - store { ptr, i64, i64 } { ptr @.str.5660, i64 6, i64 0 }, ptr %a871 - %t872 = call i32 @finch_str_eq(ptr %a870, ptr %a871) - %t873 = icmp ne i32 %t872, 0 - br label %logic.from8825 -logic.from8825: - br i1 %t873, label %logic.end8827, label %logic.rhs8826 -logic.rhs8826: - %t874 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t875 = load { ptr, i64, i64 }, ptr %t874 - store { ptr, i64, i64 } %t875, ptr %a876 - store { ptr, i64, i64 } { ptr @.str.5661, i64 4, i64 0 }, ptr %a877 - %t878 = call i32 @finch_str_eq(ptr %a876, ptr %a877) - %t879 = icmp ne i32 %t878, 0 - br label %logic.rend8828 -logic.rend8828: - br label %logic.end8827 -logic.end8827: - %t880 = phi i1 [ true, %logic.from8825 ], [ %t879, %logic.rend8828 ] - br label %logic.rend8829 -logic.rend8829: - br label %logic.end8824 -logic.end8824: - %t881 = phi i1 [ false, %logic.from8822 ], [ %t880, %logic.rend8829 ] - br i1 %t881, label %then8830, label %endif8832 -then8830: - %t882 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t883 = load i1, ptr %t882 - %t884 = xor i1 %t883, true - br i1 %t884, label %then8833, label %endif8835 -then8833: - %t885 = load ptr, ptr %a1 - %t886 = load %S.ast.Node, ptr %a2 - %t887 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t888 = load { ptr, i64, i64 }, ptr %t887 - store { ptr, i64, i64 } %t888, ptr %a890 - store { ptr, i64, i64 } { ptr @.str.5662, i64 28, i64 0 }, ptr %a891 - call void @finch_str_concat(ptr %a889, ptr %a890, ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a889 - %t893 = load %S.ast.Type, ptr %a500 - %t894 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t893) - store { ptr, i64, i64 } %t892, ptr %a896 - store { ptr, i64, i64 } %t894, ptr %a897 - call void @finch_str_concat(ptr %a895, ptr %a896, ptr %a897) - store { ptr, i64, i64 } %t892, ptr %a898 - call void @finch_str_drop(ptr %a898) - store { ptr, i64, i64 } %t894, ptr %a899 - call void @finch_str_drop(ptr %a899) - %t900 = load { ptr, i64, i64 }, ptr %a895 - store { ptr, i64, i64 } %t900, ptr %a902 - store { ptr, i64, i64 } { ptr @.str.5663, i64 30, i64 0 }, ptr %a903 - call void @finch_str_concat(ptr %a901, ptr %a902, ptr %a903) - store { ptr, i64, i64 } %t900, ptr %a904 - call void @finch_str_drop(ptr %a904) - %t905 = load { ptr, i64, i64 }, ptr %a901 - call void @finch.gen.fail(ptr %t885, %S.ast.Node %t886, { ptr, i64, i64 } %t905) - store { ptr, i64, i64 } %t905, ptr %a906 - call void @finch_str_drop(ptr %a906) - br label %endif8835 -endif8835: - %t907 = load %S.ast.Node, ptr %a13 - %t908 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t907) - store { ptr, i64, i64 } %t908, ptr %a909 - %t910 = getelementptr inbounds { ptr, i64, i64 }, ptr %a909, i32 0, i32 1 - %t911 = load i64, ptr %t910 - %t912 = icmp sgt i64 %t911, 0 - br i1 %t912, label %then8836, label %endif8838 -then8836: - %t913 = load ptr, ptr %a1 - %t914 = load { ptr, i64, i64 }, ptr %a909 - %t915 = call i64 @finch.gen.lookup(ptr %t913, { ptr, i64, i64 } %t914) - store i64 %t915, ptr %a916 - %t917 = load i64, ptr %a916 - %t918 = icmp sge i64 %t917, 0 - br label %logic.from8839 -logic.from8839: - br i1 %t918, label %logic.rhs8840, label %logic.end8841 -logic.rhs8840: - %t919 = load ptr, ptr %a1 - %t920 = load i64, ptr %a916 - %t921 = call %S.gen.Var @finch.gen.varAt(ptr %t919, i64 %t920) - %t922 = extractvalue %S.gen.Var %t921, 3 - store %S.gen.Var %t921, ptr %a923 - call void @finch.drop.S_gen_Var(ptr %a923) - br label %logic.rend8842 -logic.rend8842: - br label %logic.end8841 -logic.end8841: - %t924 = phi i1 [ false, %logic.from8839 ], [ %t922, %logic.rend8842 ] - br i1 %t924, label %then8843, label %endif8845 -then8843: - %t925 = load ptr, ptr %a1 - %t926 = load %S.ast.Node, ptr %a2 - %t927 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } { ptr @.str.5664, i64 19, i64 0 }, 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.5665, i64 18, i64 0 }, ptr %a934 - call void @finch_str_concat(ptr %a932, ptr %a933, ptr %a934) - store { ptr, i64, i64 } %t931, ptr %a935 - call void @finch_str_drop(ptr %a935) - %t936 = load { ptr, i64, i64 }, ptr %a932 - call void @finch.gen.fail(ptr %t925, %S.ast.Node %t926, { ptr, i64, i64 } %t936) - store { ptr, i64, i64 } %t936, ptr %a937 - call void @finch_str_drop(ptr %a937) - br label %endif8845 -endif8845: - br label %endif8838 -endif8838: - call void @finch_str_drop(ptr %a909) - br label %endif8832 -endif8832: - %t938 = load i1, ptr %a502 - br label %logic.from8846 -logic.from8846: - br i1 %t938, label %logic.rhs8847, label %logic.end8848 -logic.rhs8847: - %t939 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t940 = getelementptr inbounds %S.gen.Val, ptr %t939, i32 0, i32 2 - %t941 = load i1, ptr %t940 - br label %logic.rend8849 -logic.rend8849: - br label %logic.end8848 -logic.end8848: - %t942 = phi i1 [ false, %logic.from8846 ], [ %t941, %logic.rend8849 ] - br i1 %t942, label %then8850, label %endif8852 -then8850: - %t943 = load ptr, ptr %a1 - %t944 = load { ptr, i64, i64 }, ptr %a501 - %t945 = load %S.ast.Type, ptr %a500 - call void @finch.gen.holdAddr(ptr %t943, { ptr, i64, i64 } %t944, %S.ast.Type %t945) - br label %endif8852 -endif8852: - %t946 = load ptr, ptr %a1 - %t947 = load i64, ptr %a639 - %t948 = load %S.ast.Node, ptr %a2 - %t949 = load %S.ast.Type, ptr %a500 - %t950 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t949) - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5666, i64 1, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t957 = load { ptr, i64, i64 }, ptr %t956 - store { ptr, i64, i64 } %t955, ptr %a959 - store { ptr, i64, i64 } %t957, ptr %a960 - call void @finch_str_concat(ptr %a958, ptr %a959, ptr %a960) - store { ptr, i64, i64 } %t955, ptr %a961 - call void @finch_str_drop(ptr %a961) - %t962 = load { ptr, i64, i64 }, ptr %a958 - %t963 = load { ptr, i64, i64 }, ptr %a501 - %t964 = load %S.ast.Node, ptr %a13 - %t965 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t964) - %t966 = call %S.gen.Val @finch.gen.callFn(ptr %t946, i64 %t947, %S.ast.Node %t948, i64 1, { ptr, i64, i64 } %t962, { ptr, i64, i64 } %t963, { ptr, i64, i64 } %t965) - store { ptr, i64, i64 } %t962, ptr %a967 - call void @finch_str_drop(ptr %a967) - store { ptr, i64, i64 } %t965, ptr %a968 - call void @finch_str_drop(ptr %a968) - store %S.gen.Val %t966, ptr %a969 - %t970 = load i1, ptr %a502 - br label %logic.from8853 -logic.from8853: - br i1 %t970, label %logic.rhs8854, label %logic.end8855 -logic.rhs8854: - %t971 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t972 = getelementptr inbounds %S.gen.Val, ptr %t971, i32 0, i32 2 - %t973 = load i1, ptr %t972 - br label %logic.rend8856 -logic.rend8856: - br label %logic.end8855 -logic.end8855: - %t974 = phi i1 [ false, %logic.from8853 ], [ %t973, %logic.rend8856 ] - br label %logic.from8857 -logic.from8857: - br i1 %t974, label %logic.rhs8858, label %logic.end8859 -logic.rhs8858: - %t975 = load ptr, ptr %a1 - %t976 = load %S.ast.Type, ptr %a500 - %t977 = call i1 @finch.gen.owning(ptr %t975, %S.ast.Type %t976) - br label %logic.rend8860 -logic.rend8860: - br label %logic.end8859 -logic.end8859: - %t978 = phi i1 [ false, %logic.from8857 ], [ %t977, %logic.rend8860 ] - br i1 %t978, label %then8861, label %endif8863 -then8861: - %t979 = load ptr, ptr %a1 - %t980 = load { ptr, i64, i64 }, ptr %a501 - %t981 = load %S.ast.Type, ptr %a500 - call void @finch.gen.dropAt(ptr %t979, { ptr, i64, i64 } %t980, %S.ast.Type %t981) - br label %endif8863 -endif8863: - %t982 = load ptr, ptr %a1 - %t983 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t982, i64 %t983) - %t984 = load %S.gen.Val, ptr %a969 - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t984 -endif8773: - %t985 = load ptr, ptr %a1 - %t986 = load %S.ast.Node, ptr %a2 - %t987 = load %S.ast.Type, ptr %a273 - %t988 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t987) - store { ptr, i64, i64 } %t988, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.5667, i64 15, i64 0 }, ptr %a991 - call void @finch_str_concat(ptr %a989, ptr %a990, ptr %a991) - store { ptr, i64, i64 } %t988, ptr %a992 - call void @finch_str_drop(ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a989 - call void @finch.gen.fail(ptr %t985, %S.ast.Node %t986, { ptr, i64, i64 } %t993) - store { ptr, i64, i64 } %t993, ptr %a994 - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - 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 - %a35 = 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 - %a68 = alloca %S.gen.Val, align 16 - %a70 = alloca %S.gen.Val, align 16 - %a71 = 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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = 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 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.ast.Type, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.gen.Val, align 16 - %a315 = alloca %S.gen.Val, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %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 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca %S.ast.Type, align 16 - %a420 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.gen.Val, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca %S.ast.Type, align 16 - %a435 = alloca %S.ast.Type, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.gen.Val, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca %S.gen.Val, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.gen.Val, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca %S.gen.Val, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.gen.Val, align 16 - %a646 = alloca %S.gen.Val, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca %S.gen.Val, align 16 - %a792 = alloca %S.ast.Type, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca %S.gen.Val, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca %S.ast.Type, align 16 - %a889 = alloca %S.ast.Type, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca %S.gen.Val, align 16 - %a923 = alloca %S.ast.Type, align 16 - %a925 = alloca { ptr, i64, i64 }, align 16 - %a926 = alloca { ptr, i64, i64 }, align 16 - %a928 = alloca %S.gen.Val, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a936 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a995 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1034 = alloca { ptr, i64, i64 }, align 16 - %a1035 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca { ptr, i64, i64 }, align 16 - %a1046 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1052 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1057 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1082 = alloca { ptr, i64, i64 }, align 16 - %a1083 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca { ptr, i64, i64 }, align 16 - %a1087 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1092 = alloca { ptr, i64, i64 }, align 16 - %a1093 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1098 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1104 = alloca { ptr, i64, i64 }, align 16 - %a1105 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1160 = alloca %S.ast.Type, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca %S.gen.Val, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca %S.gen.Val, align 16 - %a1187 = alloca %S.ast.Type, align 16 - %a1189 = alloca { ptr, i64, i64 }, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca %S.gen.Val, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1200 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca { ptr, i64, i64 }, align 16 - %a1207 = alloca { ptr, i64, i64 }, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1214 = alloca { ptr, i64, i64 }, align 16 - %a1215 = alloca { ptr, i64, i64 }, align 16 - %a1216 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1219 = alloca { ptr, i64, i64 }, align 16 - %a1220 = alloca { ptr, i64, i64 }, align 16 - %a1221 = alloca { ptr, i64, i64 }, align 16 - %a1224 = alloca { ptr, i64, i64 }, align 16 - %a1225 = alloca { ptr, i64, i64 }, align 16 - %a1226 = alloca { ptr, i64, i64 }, align 16 - %a1227 = alloca { ptr, i64, i64 }, align 16 - %a1230 = alloca { ptr, i64, i64 }, align 16 - %a1231 = alloca { ptr, i64, i64 }, align 16 - %a1234 = alloca { ptr, i64, i64 }, align 16 - %a1235 = alloca { ptr, i64, i64 }, align 16 - %a1236 = alloca { ptr, i64, i64 }, align 16 - %a1238 = alloca { ptr, i64, i64 }, align 16 - %a1239 = alloca { ptr, i64, i64 }, align 16 - %a1240 = alloca { ptr, i64, i64 }, align 16 - %a1241 = alloca { ptr, i64, i64 }, align 16 - %a1244 = alloca { ptr, i64, i64 }, align 16 - %a1245 = alloca { ptr, i64, i64 }, align 16 - %a1246 = alloca { ptr, i64, i64 }, align 16 - %a1247 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1257 = alloca { ptr, i64, i64 }, align 16 - %a1258 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1261 = alloca { ptr, i64, i64 }, align 16 - %a1262 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1269 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1274 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1276 = alloca { ptr, i64, i64 }, align 16 - %a1278 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1281 = alloca { ptr, i64, i64 }, align 16 - %a1284 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca { ptr, i64, i64 }, align 16 - %a1286 = alloca { ptr, i64, i64 }, align 16 - %a1287 = alloca { ptr, i64, i64 }, align 16 - %a1290 = alloca { ptr, i64, i64 }, align 16 - %a1292 = alloca { ptr, i64, i64 }, align 16 - %a1295 = alloca { ptr, i64, i64 }, align 16 - %a1296 = alloca { ptr, i64, i64 }, align 16 - %a1297 = alloca { ptr, i64, i64 }, align 16 - %a1299 = alloca { ptr, i64, i64 }, align 16 - %a1300 = alloca { ptr, i64, i64 }, align 16 - %a1301 = alloca { ptr, i64, i64 }, align 16 - %a1302 = alloca { ptr, i64, i64 }, align 16 - %a1305 = alloca { ptr, i64, i64 }, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1307 = alloca { ptr, i64, i64 }, align 16 - %a1308 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1312 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1318 = alloca { ptr, i64, i64 }, align 16 - %a1319 = alloca { ptr, i64, i64 }, align 16 - %a1320 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1331 = alloca { ptr, i64, i64 }, align 16 - %a1333 = alloca { ptr, i64, i64 }, align 16 - %a1334 = alloca { ptr, i64, i64 }, align 16 - %a1335 = alloca { ptr, i64, i64 }, align 16 - %a1336 = alloca { ptr, i64, i64 }, align 16 - %a1341 = alloca { ptr, i64, i64 }, align 16 - %a1342 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1345 = alloca { ptr, i64, i64 }, align 16 - %a1347 = alloca { ptr, i64, i64 }, align 16 - %a1348 = alloca { ptr, i64, i64 }, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1352 = alloca { ptr, i64, i64 }, align 16 - %a1356 = alloca { ptr, i64, i64 }, align 16 - %a1360 = alloca { ptr, i64, i64 }, align 16 - %a1364 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1369 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1374 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1378 = alloca { ptr, i64, i64 }, align 16 - %a1379 = alloca { ptr, i64, i64 }, align 16 - %a1380 = alloca { ptr, i64, i64 }, align 16 - %a1382 = alloca { ptr, i64, i64 }, align 16 - %a1383 = alloca { ptr, i64, i64 }, align 16 - %a1384 = alloca { ptr, i64, i64 }, align 16 - %a1385 = alloca { ptr, i64, i64 }, align 16 - %a1393 = alloca { ptr, i64, i64 }, align 16 - %a1394 = alloca { ptr, i64, i64 }, align 16 - %a1395 = alloca { ptr, i64, i64 }, align 16 - %a1396 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1403 = alloca { ptr, i64, i64 }, align 16 - %a1404 = alloca { ptr, i64, i64 }, align 16 - %a1405 = alloca { ptr, i64, i64 }, align 16 - %a1407 = alloca { ptr, i64, i64 }, align 16 - %a1408 = alloca { ptr, i64, i64 }, align 16 - %a1409 = alloca { ptr, i64, i64 }, align 16 - %a1410 = alloca { ptr, i64, i64 }, align 16 - %a1413 = alloca { ptr, i64, i64 }, align 16 - %a1414 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca { ptr, i64, i64 }, align 16 - %a1416 = alloca { ptr, i64, i64 }, align 16 - %a1418 = alloca { ptr, i64, i64 }, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1421 = alloca { ptr, i64, i64 }, align 16 - %a1425 = alloca { ptr, i64, i64 }, align 16 - %a1426 = alloca { ptr, i64, i64 }, align 16 - %a1427 = alloca { ptr, i64, i64 }, align 16 - %a1429 = alloca { ptr, i64, i64 }, align 16 - %a1430 = alloca { ptr, i64, i64 }, align 16 - %a1431 = alloca { ptr, i64, i64 }, align 16 - %a1432 = alloca { ptr, i64, i64 }, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1442 = alloca { ptr, i64, i64 }, align 16 - %a1443 = alloca { ptr, i64, i64 }, align 16 - %a1446 = alloca { ptr, i64, i64 }, align 16 - %a1447 = alloca { ptr, i64, i64 }, align 16 - %a1448 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1450 = alloca { ptr, i64, i64 }, align 16 - %a1451 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca { ptr, i64, i64 }, align 16 - %a1455 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca %S.ast.Type, align 16 - %a1468 = alloca %S.ast.Type, align 16 - %a1473 = alloca { ptr, i64, i64 }, align 16 - %a1474 = alloca { ptr, i64, i64 }, align 16 - %a1481 = alloca { ptr, i64, i64 }, align 16 - %a1482 = alloca { ptr, i64, i64 }, align 16 - %a1484 = alloca { ptr, i64, i64 }, align 16 - %a1489 = alloca { ptr, i64, i64 }, align 16 - %a1490 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1505 = alloca { ptr, i64, i64 }, align 16 - %a1509 = alloca { ptr, i64, i64 }, align 16 - %a1513 = alloca { ptr, i64, i64 }, align 16 - %a1516 = alloca { ptr, i64, i64 }, align 16 - %a1517 = alloca { ptr, i64, i64 }, align 16 - %a1518 = alloca { ptr, i64, i64 }, align 16 - %a1520 = alloca { ptr, i64, i64 }, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1529 = alloca { ptr, i64, i64 }, align 16 - %a1531 = alloca { ptr, i64, i64 }, align 16 - %a1532 = alloca { ptr, i64, i64 }, align 16 - %a1533 = alloca { ptr, i64, i64 }, align 16 - %a1534 = alloca { ptr, i64, i64 }, align 16 - %a1539 = alloca { ptr, i64, i64 }, align 16 - %a1540 = alloca { ptr, i64, i64 }, align 16 - %a1541 = alloca { ptr, i64, i64 }, align 16 - %a1542 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca { ptr, i64, i64 }, align 16 - %a1545 = alloca { ptr, i64, i64 }, align 16 - %a1546 = alloca { ptr, i64, i64 }, align 16 - %a1547 = alloca { ptr, i64, i64 }, align 16 - %a1548 = alloca { ptr, i64, i64 }, align 16 - %a1551 = alloca { ptr, i64, i64 }, align 16 - %a1552 = alloca { ptr, i64, i64 }, align 16 - %a1553 = alloca { ptr, i64, i64 }, align 16 - %a1554 = alloca { ptr, i64, i64 }, align 16 - %a1556 = alloca { ptr, i64, i64 }, align 16 - %a1557 = alloca { ptr, i64, i64 }, align 16 - %a1558 = alloca { ptr, i64, i64 }, align 16 - %a1559 = alloca { ptr, i64, i64 }, align 16 - %a1561 = alloca { ptr, i64, i64 }, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1576 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range8864, label %inrange8865 -range8864: - call void @finch_panic_index(ptr @.str.5668, i64 5404, i64 0, i64 %t7) - unreachable -inrange8865: - %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.5669, 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.5670, i64 14, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t37, ptr %a39 - %t40 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.5671, 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 %then8866, label %endif8868 -then8866: - %t45 = load ptr, ptr %a1 - %t46 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t45, %S.ast.Node %t46, i64 1) - %t47 = load ptr, ptr %a1 - %t48 = load ptr, ptr %a1 - %t49 = load ptr, ptr %a1 - %t50 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 1, %t52 - br i1 %t53, label %range8869, label %inrange8870 -range8869: - call void @finch_panic_index(ptr @.str.5672, i64 5410, i64 1, i64 %t52) - unreachable -inrange8870: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 1 - %t56 = load %S.ast.Node, ptr %t55 - %t57 = load %S.ast.Type, ptr %a15 - %t58 = call %S.gen.Val @finch.gen.exprWant(ptr %t49, %S.ast.Node %t56, %S.ast.Type %t57) - %t59 = load %S.ast.Type, ptr %a15 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 1, %t62 - br i1 %t63, label %range8871, label %inrange8872 -range8871: - call void @finch_panic_index(ptr @.str.5673, i64 5410, i64 1, i64 %t62) - unreachable -inrange8872: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 1 - %t66 = load %S.ast.Node, ptr %t65 - %t67 = call %S.gen.Val @finch.gen.coerce(ptr %t48, %S.gen.Val %t58, %S.ast.Type %t59, %S.ast.Node %t66, { ptr, i64, i64 } { ptr @.str.5674, i64 11, i64 0 }) - store %S.gen.Val %t58, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - %t69 = call { ptr, i64, i64 } @finch.gen.own(ptr %t47, %S.gen.Val %t67) - store %S.gen.Val %t67, ptr %a70 - call void @finch.drop.S_gen_Val(ptr %a70) - store { ptr, i64, i64 } %t69, ptr %a71 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a39 - %t74 = call { ptr, i64, i64 } @finch.gen.load(ptr %t72, { ptr, i64, i64 } { ptr @.str.5675, i64 3, i64 0 }, { ptr, i64, i64 } %t73) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5676, i64 8, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.5677, i64 3, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.op(ptr %t76, { ptr, i64, i64 } %t86) - store { ptr, i64, i64 } %t86, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5678, i64 33, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5679, i64 6, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5680, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load ptr, ptr %a1 - %t113 = load %S.ast.Type, ptr %a15 - %t114 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t112, %S.ast.Type %t113) - store { ptr, i64, i64 } %t111, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t111, ptr %a118 - call void @finch_str_drop(ptr %a118) - store { ptr, i64, i64 } %t114, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t120, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.5681, i64 1, i64 0 }, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - call void @finch.gen.emit(ptr %t90, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load ptr, ptr %a1 - %t128 = load { ptr, i64, i64 }, ptr %a3 - %t129 = call { ptr, i64, i64 } @finch.gen.load(ptr %t127, { ptr, i64, i64 } { ptr @.str.5682, i64 3, i64 0 }, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a19 - %t133 = load { ptr, i64, i64 }, ptr %a71 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5683, i64 23, i64 0 }, ptr %a137 - store { ptr, i64, i64 } %t135, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t139, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.5684, i64 6, i64 0 }, ptr %a142 - call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = load { ptr, i64, i64 }, ptr %a140 - %t145 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t144, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.5685, i64 6, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t155, ptr %a158 - store { ptr, i64, i64 } %t156, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a163 - call void @finch_str_drop(ptr %a163) - call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t162) - store { ptr, i64, i64 } %t162, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load ptr, ptr %a1 - %t166 = load { ptr, i64, i64 }, ptr %a89 - %t167 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t165, { ptr, i64, i64 } { ptr @.str.5686, i64 3, i64 0 }, { ptr, i64, i64 } %t166, { ptr, i64, i64 } %t167) - %t168 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5687, i64 4, i64 0 }) - %t169 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t168, 1 - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a89) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t169 -endif8868: - %t170 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.5688, i64 3, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then8873, label %endif8875 -then8873: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t175, %S.ast.Node %t176, i64 0) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a39 - %t179 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.5689, i64 3, i64 0 }, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t179, ptr %a180 - %t181 = load ptr, ptr %a1 - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5690, i64 12, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5691, i64 3, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t181, { ptr, i64, i64 } %t193, { ptr, i64, i64 } { ptr @.str.5692, i64 23, i64 0 }, %S.ast.Node %t195) - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5693, i64 8, i64 0 }, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.5694, i64 3, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_drop(ptr %a209) - store { ptr, i64, i64 } %t208, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = call { ptr, i64, i64 } @finch.gen.load(ptr %t211, { ptr, i64, i64 } { ptr @.str.5695, i64 3, i64 0 }, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t213, ptr %a214 - %t215 = load ptr, ptr %a1 - %t216 = load { ptr, i64, i64 }, ptr %a19 - %t217 = load ptr, ptr %a1 - %t218 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5696, i64 23, i64 0 }, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.5697, i64 6, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5698, i64 6, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t238, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t238, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t244) - store { ptr, i64, i64 } %t244, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = call { ptr, i64, i64 } @finch.gen.load(ptr %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_drop(ptr %a248) - store { ptr, i64, i64 } %t247, ptr %a249 - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a210 - %t252 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.5699, i64 3, i64 0 }, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t256, 0 - %t258 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t258, ptr %a259 - call void @finch.copy.S_ast_Type(ptr %a260, ptr %a259) - %t261 = load %S.ast.Type, ptr %a260 - %t262 = insertvalue %S.gen.Val %t257, %S.ast.Type %t261, 1 - %t263 = load ptr, ptr %a1 - %t264 = load %S.ast.Type, ptr %a15 - %t265 = call i1 @finch.gen.owning(ptr %t263, %S.ast.Type %t264) - %t266 = insertvalue %S.gen.Val %t262, i1 %t265, 2 - call void @finch_str_drop(ptr %a249) - call void @finch_str_drop(ptr %a214) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a180) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t266 -endif8875: - %t267 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t267, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5700, i64 5, i64 0 }, ptr %a269 - %t270 = call i32 @finch_str_eq(ptr %a268, ptr %a269) - %t271 = icmp ne i32 %t270, 0 - br i1 %t271, label %then8876, label %endif8878 -then8876: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t272, %S.ast.Node %t273, i64 0) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a3 - %t276 = load %S.ast.Type, ptr %a4 - call void @finch.gen.dropFrom(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276, { ptr, i64, i64 } { ptr @.str.5701, i64 1, i64 0 }) - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t277, { ptr, i64, i64 } { ptr @.str.5702, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5703, i64 1, i64 0 }, { ptr, i64, i64 } %t278) - %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5704, i64 4, i64 0 }) - %t280 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t279, 1 - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t280 -endif8878: - %t281 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.5705, i64 4, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br label %logic.from8879 -logic.from8879: - br i1 %t285, label %logic.end8881, label %logic.rhs8880 -logic.rhs8880: - %t286 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t286, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5706, i64 8, i64 0 }, ptr %a288 - %t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288) - %t290 = icmp ne i32 %t289, 0 - br label %logic.rend8882 -logic.rend8882: - br label %logic.end8881 -logic.end8881: - %t291 = phi i1 [ true, %logic.from8879 ], [ %t290, %logic.rend8882 ] - br i1 %t291, label %then8883, label %endif8885 -then8883: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t292, %S.ast.Node %t293, i64 1) - %t294 = load ptr, ptr %a1 - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t297 = load { ptr, i64, i64 }, ptr %t296 - %t298 = extractvalue { ptr, i64, i64 } %t297, 1 - %t299 = icmp uge i64 1, %t298 - br i1 %t299, label %range8886, label %inrange8887 -range8886: - call void @finch_panic_index(ptr @.str.5707, i64 5437, i64 1, i64 %t298) - unreachable -inrange8887: - %t300 = extractvalue { ptr, i64, i64 } %t297, 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i64 1 - %t302 = load %S.ast.Node, ptr %t301 - %t303 = load %S.ast.Type, ptr %a15 - %t304 = call %S.gen.Val @finch.gen.exprWant(ptr %t295, %S.ast.Node %t302, %S.ast.Type %t303) - %t305 = load %S.ast.Type, ptr %a15 - %t306 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = extractvalue { ptr, i64, i64 } %t307, 1 - %t309 = icmp uge i64 1, %t308 - br i1 %t309, label %range8888, label %inrange8889 -range8888: - call void @finch_panic_index(ptr @.str.5708, i64 5437, i64 1, i64 %t308) - unreachable -inrange8889: - %t310 = extractvalue { ptr, i64, i64 } %t307, 0 - %t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i64 1 - %t312 = load %S.ast.Node, ptr %t311 - %t313 = call %S.gen.Val @finch.gen.coerce(ptr %t294, %S.gen.Val %t304, %S.ast.Type %t305, %S.ast.Node %t312, { ptr, i64, i64 } { ptr @.str.5709, i64 21, i64 0 }) - store %S.gen.Val %t304, ptr %a314 - call void @finch.drop.S_gen_Val(ptr %a314) - store %S.gen.Val %t313, ptr %a315 - %t316 = load ptr, ptr %a1 - %t317 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t316, { ptr, i64, i64 } { ptr @.str.5710, i64 3, i64 0 }) - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t319, { ptr, i64, i64 } { ptr @.str.5711, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5712, i64 2, i64 0 }, { ptr, i64, i64 } %t320) - %t321 = load ptr, ptr %a1 - %t322 = load { ptr, i64, i64 }, ptr %a39 - %t323 = call { ptr, i64, i64 } @finch.gen.load(ptr %t321, { ptr, i64, i64 } { ptr @.str.5713, i64 3, i64 0 }, { ptr, i64, i64 } %t322) - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = load ptr, ptr %a1 - %t326 = load { ptr, i64, i64 }, ptr %a3 - %t327 = call { ptr, i64, i64 } @finch.gen.load(ptr %t325, { ptr, i64, i64 } { ptr @.str.5714, i64 3, i64 0 }, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.5715, i64 3, i64 0 }) - store { ptr, i64, i64 } %t330, ptr %a331 - %t332 = load ptr, ptr %a1 - %t333 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t332, { ptr, i64, i64 } { ptr @.str.5716, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5717, i64 1, i64 0 }, { ptr, i64, i64 } %t333) - %t334 = load ptr, ptr %a1 - %t335 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t334, { ptr, i64, i64 } { ptr @.str.5718, i64 9, i64 0 }) - store { ptr, i64, i64 } %t335, ptr %a336 - %t337 = load ptr, ptr %a1 - %t338 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t337, { ptr, i64, i64 } { ptr @.str.5719, i64 9, i64 0 }) - store { ptr, i64, i64 } %t338, ptr %a339 - %t340 = load ptr, ptr %a1 - %t341 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t340, { ptr, i64, i64 } { ptr @.str.5720, i64 8, i64 0 }) - store { ptr, i64, i64 } %t341, ptr %a342 - %t343 = load ptr, ptr %a1 - %t344 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t343, { ptr, i64, i64 } { ptr @.str.5721, i64 9, i64 0 }) - store { ptr, i64, i64 } %t344, ptr %a345 - %t346 = load ptr, ptr %a1 - %t347 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t346, { ptr, i64, i64 } { ptr @.str.5722, i64 8, i64 0 }) - store { ptr, i64, i64 } %t347, ptr %a348 - %t349 = load ptr, ptr %a1 - %t350 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t349, { ptr, i64, i64 } %t350) - %t351 = load ptr, ptr %a1 - %t352 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.label(ptr %t351, { ptr, i64, i64 } %t352) - %t353 = load ptr, ptr %a1 - %t354 = load { ptr, i64, i64 }, ptr %a331 - %t355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t353, { ptr, i64, i64 } { ptr @.str.5723, i64 3, i64 0 }, { ptr, i64, i64 } %t354) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5724, i64 13, i64 0 }, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a359 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.5725, i64 2, i64 0 }, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - store { ptr, i64, i64 } %t362, ptr %a366 - call void @finch_str_drop(ptr %a366) - %t367 = load { ptr, i64, i64 }, ptr %a363 - %t368 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t367, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a371 - call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) - store { ptr, i64, i64 } %t367, ptr %a372 - call void @finch_str_drop(ptr %a372) - %t373 = load { ptr, i64, i64 }, ptr %a369 - %t374 = call { ptr, i64, i64 } @finch.gen.op(ptr %t357, { ptr, i64, i64 } %t373) - store { ptr, i64, i64 } %t373, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t374, ptr %a376 - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a376 - %t379 = load { ptr, i64, i64 }, ptr %a339 - %t380 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.condBr(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t379, { ptr, i64, i64 } %t380) - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a339 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a19 - %t385 = load ptr, ptr %a1 - %t386 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5726, i64 23, i64 0 }, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.5727, i64 6, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t395, ptr %a398 - store { ptr, i64, i64 } %t396, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.5728, i64 6, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - %t413 = call { ptr, i64, i64 } @finch.gen.op(ptr %t385, { ptr, i64, i64 } %t412) - store { ptr, i64, i64 } %t412, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = call { ptr, i64, i64 } @finch.gen.load(ptr %t383, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t413) - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t415, 0 - %t418 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t418, ptr %a419 - call void @finch.copy.S_ast_Type(ptr %a420, ptr %a419) - %t421 = load %S.ast.Type, ptr %a420 - %t422 = insertvalue %S.gen.Val %t417, %S.ast.Type %t421, 1 - store %S.gen.Val %t422, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load %S.gen.Val, ptr %a423 - %t426 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 0 - %t427 = load { ptr, i64, i64 }, ptr %t426 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_copy(ptr %a429, ptr %a428) - %t430 = load { ptr, i64, i64 }, ptr %a429 - %t431 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t430, 0 - %t432 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 1 - %t433 = load %S.ast.Type, ptr %t432 - store %S.ast.Type %t433, ptr %a434 - call void @finch.copy.S_ast_Type(ptr %a435, ptr %a434) - %t436 = load %S.ast.Type, ptr %a435 - %t437 = insertvalue %S.gen.Val %t431, %S.ast.Type %t436, 1 - %t438 = load %S.ast.Node, ptr %a2 - %t439 = call %S.gen.Val @finch.gen.compare(ptr %t424, { ptr, i64, i64 } { ptr @.str.5729, i64 2, i64 0 }, %S.gen.Val %t425, %S.gen.Val %t437, %S.ast.Node %t438) - store %S.gen.Val %t437, ptr %a440 - call void @finch.drop.S_gen_Val(ptr %a440) - %t441 = extractvalue %S.gen.Val %t439, 0 - store { ptr, i64, i64 } %t441, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store %S.gen.Val %t439, ptr %a445 - call void @finch.drop.S_gen_Val(ptr %a445) - store { ptr, i64, i64 } %t444, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load { ptr, i64, i64 }, ptr %a446 - %t449 = load { ptr, i64, i64 }, ptr %a342 - %t450 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.condBr(ptr %t447, { ptr, i64, i64 } %t448, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load { ptr, i64, i64 }, ptr %a342 - call void @finch.gen.label(ptr %t451, { ptr, i64, i64 } %t452) - %t453 = load ptr, ptr %a1 - %t454 = load { ptr, i64, i64 }, ptr %a356 - %t455 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t453, { ptr, i64, i64 } { ptr @.str.5730, i64 3, i64 0 }, { ptr, i64, i64 } %t454, { ptr, i64, i64 } %t455) - %t456 = load ptr, ptr %a1 - %t457 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.br(ptr %t456, { ptr, i64, i64 } %t457) - %t458 = load ptr, ptr %a1 - %t459 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.label(ptr %t458, { ptr, i64, i64 } %t459) - %t460 = load ptr, ptr %a1 - %t461 = load ptr, ptr %a1 - %t462 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5732, i64 8, i64 0 }, ptr %a464 - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a463 - store { ptr, i64, i64 } %t466, ptr %a468 - store { ptr, i64, i64 } { ptr @.str.5733, i64 3, i64 0 }, ptr %a469 - call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469) - store { ptr, i64, i64 } %t466, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a467 - %t472 = call { ptr, i64, i64 } @finch.gen.op(ptr %t461, { ptr, i64, i64 } %t471) - store { ptr, i64, i64 } %t471, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t460, { ptr, i64, i64 } { ptr @.str.5731, i64 3, i64 0 }, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_drop(ptr %a475) - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t476, { ptr, i64, i64 } %t477) - %t478 = load ptr, ptr %a1 - %t479 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.label(ptr %t478, { ptr, i64, i64 } %t479) - %t480 = load ptr, ptr %a1 - %t481 = load %S.gen.Val, ptr %a315 - call void @finch.gen.release(ptr %t480, %S.gen.Val %t481) - %t482 = load ptr, ptr %a1 - %t483 = load { ptr, i64, i64 }, ptr %a318 - %t484 = call { ptr, i64, i64 } @finch.gen.load(ptr %t482, { ptr, i64, i64 } { ptr @.str.5734, i64 3, i64 0 }, { ptr, i64, i64 } %t483) - store { ptr, i64, i64 } %t484, ptr %a485 - %t486 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5735, i64 4, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then8890, label %endif8892 -then8890: - %t491 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t491, ptr %a492 - call void @finch_str_copy(ptr %a493, ptr %a492) - %t494 = load { ptr, i64, i64 }, ptr %a493 - %t495 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t494, 0 - %t496 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5736, i64 3, i64 0 }) - %t497 = insertvalue %S.gen.Val %t495, %S.ast.Type %t496, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t497 -endif8892: - %t498 = load ptr, ptr %a1 - %t499 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5737, i64 13, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5738, i64 3, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call { ptr, i64, i64 } @finch.gen.op(ptr %t498, { ptr, i64, i64 } %t508) - store { ptr, i64, i64 } %t508, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t509, 0 - %t512 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5739, i64 4, i64 0 }) - %t513 = insertvalue %S.gen.Val %t511, %S.ast.Type %t512, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t513 -endif8885: - %t514 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t514, ptr %a515 - store { ptr, i64, i64 } { ptr @.str.5740, i64 4, i64 0 }, ptr %a516 - %t517 = call i32 @finch_str_eq(ptr %a515, ptr %a516) - %t518 = icmp ne i32 %t517, 0 - br i1 %t518, label %then8893, label %endif8895 -then8893: - %t519 = load ptr, ptr %a1 - %t520 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t519, %S.ast.Node %t520, i64 1) - %t521 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5741, i64 3, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp eq i32 %t525, 0 - br i1 %t526, label %then8896, label %endif8898 -then8896: - %t527 = load ptr, ptr %a1 - %t528 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t527, %S.ast.Node %t528, { ptr, i64, i64 } { ptr @.str.5742, i64 31, i64 0 }) - br label %endif8898 -endif8898: - %t529 = load ptr, ptr %a1 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t531 = load { ptr, i64, i64 }, ptr %t530 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 1, %t532 - br i1 %t533, label %range8899, label %inrange8900 -range8899: - call void @finch_panic_index(ptr @.str.5743, i64 5477, i64 1, i64 %t532) - unreachable -inrange8900: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.ast.Node, ptr %t534, i64 1 - %t536 = load %S.ast.Node, ptr %t535 - %t537 = call %S.gen.Val @finch.gen.strArg(ptr %t529, %S.ast.Node %t536, { ptr, i64, i64 } { ptr @.str.5744, i64 13, i64 0 }) - store %S.gen.Val %t537, ptr %a538 - %t539 = load ptr, ptr %a1 - %t540 = load %S.gen.Val, ptr %a538 - %t541 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t539, %S.gen.Val %t540) - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = load ptr, ptr %a1 - %t544 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } { ptr @.str.5745, i64 30, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a553 - store { ptr, i64, i64 } { ptr @.str.5746, i64 6, i64 0 }, ptr %a554 - call void @finch_str_concat(ptr %a552, ptr %a553, ptr %a554) - store { ptr, i64, i64 } %t551, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load { ptr, i64, i64 }, ptr %a552 - %t557 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t556, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t556, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.5747, i64 6, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t567, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t573, ptr %a575 - store { ptr, i64, i64 } { ptr @.str.5748, i64 1, i64 0 }, ptr %a576 - call void @finch_str_concat(ptr %a574, ptr %a575, ptr %a576) - store { ptr, i64, i64 } %t573, ptr %a577 - call void @finch_str_drop(ptr %a577) - %t578 = load { ptr, i64, i64 }, ptr %a574 - call void @finch.gen.emit(ptr %t546, { ptr, i64, i64 } %t578) - store { ptr, i64, i64 } %t578, ptr %a579 - call void @finch_str_drop(ptr %a579) - %t580 = load ptr, ptr %a1 - %t581 = load %S.gen.Val, ptr %a538 - call void @finch.gen.release(ptr %t580, %S.gen.Val %t581) - %t582 = load ptr, ptr %a1 - %t583 = load { ptr, i64, i64 }, ptr %a545 - %t584 = call { ptr, i64, i64 } @finch.gen.load(ptr %t582, { ptr, i64, i64 } { ptr @.str.5749, i64 17, i64 0 }, { ptr, i64, i64 } %t583) - %t585 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t584, 0 - %t586 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5750, i64 3, i64 0 }) - %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 - %t588 = insertvalue %S.gen.Val %t587, i1 true, 2 - call void @finch_str_drop(ptr %a545) - call void @finch_str_drop(ptr %a542) - call void @finch.drop.S_gen_Val(ptr %a538) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t588 -endif8895: - %t589 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.5751, 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 %then8901, label %endif8903 -then8901: - %t594 = load ptr, ptr %a1 - %t595 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t594, %S.ast.Node %t595, i64 2) - %t596 = load ptr, ptr %a1 - %t597 = load ptr, ptr %a1 - %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t599 = load { ptr, i64, i64 }, ptr %t598 - %t600 = extractvalue { ptr, i64, i64 } %t599, 1 - %t601 = icmp uge i64 1, %t600 - br i1 %t601, label %range8904, label %inrange8905 -range8904: - call void @finch_panic_index(ptr @.str.5752, i64 5486, i64 1, i64 %t600) - unreachable -inrange8905: - %t602 = extractvalue { ptr, i64, i64 } %t599, 0 - %t603 = getelementptr inbounds %S.ast.Node, ptr %t602, i64 1 - %t604 = load %S.ast.Node, ptr %t603 - %t605 = call %S.gen.Val @finch.gen.expr(ptr %t597, %S.ast.Node %t604) - %t606 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5753, i64 3, i64 0 }) - %t607 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t608 = load { ptr, i64, i64 }, ptr %t607 - %t609 = extractvalue { ptr, i64, i64 } %t608, 1 - %t610 = icmp uge i64 1, %t609 - br i1 %t610, label %range8906, label %inrange8907 -range8906: - call void @finch_panic_index(ptr @.str.5754, i64 5486, i64 1, i64 %t609) - unreachable -inrange8907: - %t611 = extractvalue { ptr, i64, i64 } %t608, 0 - %t612 = getelementptr inbounds %S.ast.Node, ptr %t611, i64 1 - %t613 = load %S.ast.Node, ptr %t612 - %t614 = call %S.gen.Val @finch.gen.coerce(ptr %t596, %S.gen.Val %t605, %S.ast.Type %t606, %S.ast.Node %t613, { ptr, i64, i64 } { ptr @.str.5755, i64 12, i64 0 }) - store %S.gen.Val %t605, ptr %a615 - call void @finch.drop.S_gen_Val(ptr %a615) - store %S.ast.Type %t606, ptr %a616 - call void @finch.drop.S_ast_Type(ptr %a616) - %t617 = extractvalue %S.gen.Val %t614, 0 - store { ptr, i64, i64 } %t617, ptr %a618 - call void @finch_str_copy(ptr %a619, ptr %a618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store %S.gen.Val %t614, ptr %a621 - call void @finch.drop.S_gen_Val(ptr %a621) - store { ptr, i64, i64 } %t620, ptr %a622 - %t623 = load ptr, ptr %a1 - %t624 = load ptr, ptr %a1 - %t625 = load ptr, ptr %a1 - %t626 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t627 = load { ptr, i64, i64 }, ptr %t626 - %t628 = extractvalue { ptr, i64, i64 } %t627, 1 - %t629 = icmp uge i64 2, %t628 - br i1 %t629, label %range8908, label %inrange8909 -range8908: - call void @finch_panic_index(ptr @.str.5756, i64 5487, i64 2, i64 %t628) - unreachable -inrange8909: - %t630 = extractvalue { ptr, i64, i64 } %t627, 0 - %t631 = getelementptr inbounds %S.ast.Node, ptr %t630, i64 2 - %t632 = load %S.ast.Node, ptr %t631 - %t633 = load %S.ast.Type, ptr %a15 - %t634 = call %S.gen.Val @finch.gen.exprWant(ptr %t625, %S.ast.Node %t632, %S.ast.Type %t633) - %t635 = load %S.ast.Type, ptr %a15 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = extractvalue { ptr, i64, i64 } %t637, 1 - %t639 = icmp uge i64 2, %t638 - br i1 %t639, label %range8910, label %inrange8911 -range8910: - call void @finch_panic_index(ptr @.str.5757, i64 5487, i64 2, i64 %t638) - unreachable -inrange8911: - %t640 = extractvalue { ptr, i64, i64 } %t637, 0 - %t641 = getelementptr inbounds %S.ast.Node, ptr %t640, i64 2 - %t642 = load %S.ast.Node, ptr %t641 - %t643 = call %S.gen.Val @finch.gen.coerce(ptr %t624, %S.gen.Val %t634, %S.ast.Type %t635, %S.ast.Node %t642, { ptr, i64, i64 } { ptr @.str.5758, i64 11, i64 0 }) - store %S.gen.Val %t634, ptr %a644 - call void @finch.drop.S_gen_Val(ptr %a644) - %t645 = call { ptr, i64, i64 } @finch.gen.own(ptr %t623, %S.gen.Val %t643) - store %S.gen.Val %t643, ptr %a646 - call void @finch.drop.S_gen_Val(ptr %a646) - store { ptr, i64, i64 } %t645, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = load ptr, ptr %a1 - %t650 = icmp eq ptr %t649, null - br i1 %t650, label %panic8912, label %ok8913 -panic8912: - call void @finch_panic(ptr @.str.5759, i64 5488, ptr @.str.5760) - unreachable -ok8913: - %t651 = getelementptr inbounds %S.gen.Gen, ptr %t649, i32 0, i32 1 - %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t653 = load i64, ptr %t652 - %t654 = load { ptr, i64, i64 }, ptr %t651 - %t655 = extractvalue { ptr, i64, i64 } %t654, 1 - %t656 = icmp uge i64 %t653, %t655 - br i1 %t656, label %range8914, label %inrange8915 -range8914: - call void @finch_panic_index(ptr @.str.5761, i64 5488, i64 %t653, i64 %t655) - unreachable -inrange8915: - %t657 = extractvalue { ptr, i64, i64 } %t654, 0 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i64 %t653 - %t659 = load { ptr, i64, i64 }, ptr %t658 - %t660 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t648, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5762, i64 36, i64 0 }, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - %t667 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t667, ptr %a669 - store { ptr, i64, i64 } { ptr @.str.5763, i64 6, i64 0 }, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - store { ptr, i64, i64 } %t667, ptr %a671 - call void @finch_str_drop(ptr %a671) - %t672 = load { ptr, i64, i64 }, ptr %a668 - %t673 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t672, ptr %a675 - store { ptr, i64, i64 } %t673, ptr %a676 - call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a674 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.5764, i64 6, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a15 - %t686 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t684, %S.ast.Type %t685) - store { ptr, i64, i64 } %t683, ptr %a688 - store { ptr, i64, i64 } %t686, ptr %a689 - call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689) - store { ptr, i64, i64 } %t683, ptr %a690 - call void @finch_str_drop(ptr %a690) - store { ptr, i64, i64 } %t686, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a687 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.5765, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5766, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t710 = load i64, ptr %t709 - call void @finch_str_from_int(ptr %a711, i64 %t710) - %t712 = load { ptr, i64, i64 }, ptr %a711 - store { ptr, i64, i64 } %t708, ptr %a714 - store { ptr, i64, i64 } %t712, ptr %a715 - call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715) - store { ptr, i64, i64 } %t708, ptr %a716 - call void @finch_str_drop(ptr %a716) - store { ptr, i64, i64 } %t712, ptr %a717 - call void @finch_str_drop(ptr %a717) - %t718 = load { ptr, i64, i64 }, ptr %a713 - store { ptr, i64, i64 } %t718, ptr %a720 - store { ptr, i64, i64 } { ptr @.str.5767, i64 1, i64 0 }, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t718, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.emit(ptr %t662, { ptr, i64, i64 } %t723) - store { ptr, i64, i64 } %t723, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a3 - %t727 = call { ptr, i64, i64 } @finch.gen.load(ptr %t725, { ptr, i64, i64 } { ptr @.str.5768, i64 3, i64 0 }, { ptr, i64, i64 } %t726) - store { ptr, i64, i64 } %t727, ptr %a728 - %t729 = load ptr, ptr %a1 - %t730 = load { ptr, i64, i64 }, ptr %a19 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = load ptr, ptr %a1 - %t733 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5769, i64 23, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.5770, i64 6, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t742, ptr %a745 - store { ptr, i64, i64 } %t743, ptr %a746 - call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746) - store { ptr, i64, i64 } %t742, ptr %a747 - call void @finch_str_drop(ptr %a747) - %t748 = load { ptr, i64, i64 }, ptr %a744 - store { ptr, i64, i64 } %t748, ptr %a750 - store { ptr, i64, i64 } { ptr @.str.5771, i64 6, i64 0 }, ptr %a751 - call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751) - store { ptr, i64, i64 } %t748, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a749 - %t754 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t753, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a755 - %t760 = call { ptr, i64, i64 } @finch.gen.op(ptr %t732, { ptr, i64, i64 } %t759) - store { ptr, i64, i64 } %t759, ptr %a761 - call void @finch_str_drop(ptr %a761) - call void @finch.gen.store(ptr %t729, { ptr, i64, i64 } %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t760) - store { ptr, i64, i64 } %t760, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5772, i64 4, i64 0 }) - %t764 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t763, 1 - call void @finch_str_drop(ptr %a728) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a622) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t764 -endif8903: - %t765 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t765, ptr %a766 - store { ptr, i64, i64 } { ptr @.str.5773, i64 6, i64 0 }, ptr %a767 - %t768 = call i32 @finch_str_eq(ptr %a766, ptr %a767) - %t769 = icmp ne i32 %t768, 0 - br i1 %t769, label %then8916, label %endif8918 -then8916: - %t770 = load ptr, ptr %a1 - %t771 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t770, %S.ast.Node %t771, i64 1) - %t772 = load ptr, ptr %a1 - %t773 = load ptr, ptr %a1 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t775 = load { ptr, i64, i64 }, ptr %t774 - %t776 = extractvalue { ptr, i64, i64 } %t775, 1 - %t777 = icmp uge i64 1, %t776 - br i1 %t777, label %range8919, label %inrange8920 -range8919: - call void @finch_panic_index(ptr @.str.5774, i64 5496, i64 1, i64 %t776) - unreachable -inrange8920: - %t778 = extractvalue { ptr, i64, i64 } %t775, 0 - %t779 = getelementptr inbounds %S.ast.Node, ptr %t778, i64 1 - %t780 = load %S.ast.Node, ptr %t779 - %t781 = call %S.gen.Val @finch.gen.expr(ptr %t773, %S.ast.Node %t780) - %t782 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5775, i64 3, i64 0 }) - %t783 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t784 = load { ptr, i64, i64 }, ptr %t783 - %t785 = extractvalue { ptr, i64, i64 } %t784, 1 - %t786 = icmp uge i64 1, %t785 - br i1 %t786, label %range8921, label %inrange8922 -range8921: - call void @finch_panic_index(ptr @.str.5776, i64 5496, i64 1, i64 %t785) - unreachable -inrange8922: - %t787 = extractvalue { ptr, i64, i64 } %t784, 0 - %t788 = getelementptr inbounds %S.ast.Node, ptr %t787, i64 1 - %t789 = load %S.ast.Node, ptr %t788 - %t790 = call %S.gen.Val @finch.gen.coerce(ptr %t772, %S.gen.Val %t781, %S.ast.Type %t782, %S.ast.Node %t789, { ptr, i64, i64 } { ptr @.str.5777, i64 12, i64 0 }) - store %S.gen.Val %t781, ptr %a791 - call void @finch.drop.S_gen_Val(ptr %a791) - store %S.ast.Type %t782, ptr %a792 - call void @finch.drop.S_ast_Type(ptr %a792) - %t793 = extractvalue %S.gen.Val %t790, 0 - store { ptr, i64, i64 } %t793, ptr %a794 - call void @finch_str_copy(ptr %a795, ptr %a794) - %t796 = load { ptr, i64, i64 }, ptr %a795 - store %S.gen.Val %t790, ptr %a797 - call void @finch.drop.S_gen_Val(ptr %a797) - store { ptr, i64, i64 } %t796, ptr %a798 - %t799 = load ptr, ptr %a1 - %t800 = load { ptr, i64, i64 }, ptr %a798 - %t801 = load ptr, ptr %a1 - %t802 = load { ptr, i64, i64 }, ptr %a39 - %t803 = call { ptr, i64, i64 } @finch.gen.load(ptr %t801, { ptr, i64, i64 } { ptr @.str.5778, i64 3, i64 0 }, { ptr, i64, i64 } %t802) - %t804 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t799, { ptr, i64, i64 } %t800, { ptr, i64, i64 } %t803, %S.ast.Node %t804) - store { ptr, i64, i64 } %t803, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load ptr, ptr %a1 - %t807 = load { ptr, i64, i64 }, ptr %a3 - %t808 = call { ptr, i64, i64 } @finch.gen.load(ptr %t806, { ptr, i64, i64 } { ptr @.str.5779, i64 3, i64 0 }, { ptr, i64, i64 } %t807) - store { ptr, i64, i64 } %t808, ptr %a809 - %t810 = load ptr, ptr %a1 - %t811 = load { ptr, i64, i64 }, ptr %a19 - %t812 = load ptr, ptr %a1 - %t813 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5780, i64 23, i64 0 }, ptr %a815 - store { ptr, i64, i64 } %t813, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.5781, i64 6, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = load { ptr, i64, i64 }, ptr %a809 - store { ptr, i64, i64 } %t822, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t822, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.5782, i64 6, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t833, ptr %a836 - store { ptr, i64, i64 } %t834, ptr %a837 - call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) - store { ptr, i64, i64 } %t833, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a835 - %t840 = call { ptr, i64, i64 } @finch.gen.op(ptr %t812, { ptr, i64, i64 } %t839) - store { ptr, i64, i64 } %t839, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = call { ptr, i64, i64 } @finch.gen.load(ptr %t810, { ptr, i64, i64 } %t811, { ptr, i64, i64 } %t840) - store { ptr, i64, i64 } %t840, ptr %a843 - call void @finch_str_drop(ptr %a843) - store { ptr, i64, i64 } %t842, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5783, i64 36, i64 0 }, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a847 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5784, i64 6, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - %t856 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t855, ptr %a858 - store { ptr, i64, i64 } %t856, ptr %a859 - call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) - store { ptr, i64, i64 } %t855, ptr %a860 - call void @finch_str_drop(ptr %a860) - %t861 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } %t861, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5785, i64 6, i64 0 }, ptr %a864 - call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864) - store { ptr, i64, i64 } %t861, ptr %a865 - call void @finch_str_drop(ptr %a865) - %t866 = load { ptr, i64, i64 }, ptr %a862 - %t867 = load ptr, ptr %a1 - %t868 = load %S.ast.Type, ptr %a15 - %t869 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t867, %S.ast.Type %t868) - store { ptr, i64, i64 } %t866, ptr %a871 - store { ptr, i64, i64 } %t869, ptr %a872 - call void @finch_str_concat(ptr %a870, ptr %a871, ptr %a872) - store { ptr, i64, i64 } %t866, ptr %a873 - call void @finch_str_drop(ptr %a873) - store { ptr, i64, i64 } %t869, ptr %a874 - call void @finch_str_drop(ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a870 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5786, i64 1, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.emit(ptr %t845, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = load { ptr, i64, i64 }, ptr %a844 - store { ptr, i64, i64 } %t882, ptr %a883 - call void @finch_str_copy(ptr %a884, ptr %a883) - %t885 = load { ptr, i64, i64 }, ptr %a884 - %t886 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t885, 0 - %t887 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t887, ptr %a888 - call void @finch.copy.S_ast_Type(ptr %a889, ptr %a888) - %t890 = load %S.ast.Type, ptr %a889 - %t891 = insertvalue %S.gen.Val %t886, %S.ast.Type %t890, 1 - %t892 = load ptr, ptr %a1 - %t893 = load %S.ast.Type, ptr %a15 - %t894 = call i1 @finch.gen.owning(ptr %t892, %S.ast.Type %t893) - %t895 = insertvalue %S.gen.Val %t891, i1 %t894, 2 - call void @finch_str_drop(ptr %a844) - call void @finch_str_drop(ptr %a809) - call void @finch_str_drop(ptr %a798) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t895 -endif8918: - %t896 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t896, ptr %a897 - store { ptr, i64, i64 } { ptr @.str.5787, i64 6, i64 0 }, ptr %a898 - %t899 = call i32 @finch_str_eq(ptr %a897, ptr %a898) - %t900 = icmp ne i32 %t899, 0 - br i1 %t900, label %then8923, label %endif8925 -then8923: - %t901 = load ptr, ptr %a1 - %t902 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t901, %S.ast.Node %t902, i64 1) - %t903 = load ptr, ptr %a1 - %t904 = load ptr, ptr %a1 - %t905 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t906 = load { ptr, i64, i64 }, ptr %t905 - %t907 = extractvalue { ptr, i64, i64 } %t906, 1 - %t908 = icmp uge i64 1, %t907 - br i1 %t908, label %range8926, label %inrange8927 -range8926: - call void @finch_panic_index(ptr @.str.5788, i64 5505, i64 1, i64 %t907) - unreachable -inrange8927: - %t909 = extractvalue { ptr, i64, i64 } %t906, 0 - %t910 = getelementptr inbounds %S.ast.Node, ptr %t909, i64 1 - %t911 = load %S.ast.Node, ptr %t910 - %t912 = call %S.gen.Val @finch.gen.expr(ptr %t904, %S.ast.Node %t911) - %t913 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5789, i64 3, i64 0 }) - %t914 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t915 = load { ptr, i64, i64 }, ptr %t914 - %t916 = extractvalue { ptr, i64, i64 } %t915, 1 - %t917 = icmp uge i64 1, %t916 - br i1 %t917, label %range8928, label %inrange8929 -range8928: - call void @finch_panic_index(ptr @.str.5790, i64 5505, i64 1, i64 %t916) - unreachable -inrange8929: - %t918 = extractvalue { ptr, i64, i64 } %t915, 0 - %t919 = getelementptr inbounds %S.ast.Node, ptr %t918, i64 1 - %t920 = load %S.ast.Node, ptr %t919 - %t921 = call %S.gen.Val @finch.gen.coerce(ptr %t903, %S.gen.Val %t912, %S.ast.Type %t913, %S.ast.Node %t920, { ptr, i64, i64 } { ptr @.str.5791, i64 14, i64 0 }) - store %S.gen.Val %t912, ptr %a922 - call void @finch.drop.S_gen_Val(ptr %a922) - store %S.ast.Type %t913, ptr %a923 - call void @finch.drop.S_ast_Type(ptr %a923) - %t924 = extractvalue %S.gen.Val %t921, 0 - store { ptr, i64, i64 } %t924, ptr %a925 - call void @finch_str_copy(ptr %a926, ptr %a925) - %t927 = load { ptr, i64, i64 }, ptr %a926 - store %S.gen.Val %t921, ptr %a928 - call void @finch.drop.S_gen_Val(ptr %a928) - store { ptr, i64, i64 } %t927, ptr %a929 - %t930 = load ptr, ptr %a1 - %t931 = load { ptr, i64, i64 }, ptr %a3 - %t932 = load %S.ast.Type, ptr %a4 - %t933 = load { ptr, i64, i64 }, ptr %a929 - call void @finch.gen.dropFrom(ptr %t930, { ptr, i64, i64 } %t931, %S.ast.Type %t932, { ptr, i64, i64 } %t933) - %t934 = load ptr, ptr %a1 - %t935 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5792, i64 32, i64 0 }, ptr %a937 - store { ptr, i64, i64 } %t935, ptr %a938 - call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938) - %t939 = load { ptr, i64, i64 }, ptr %a936 - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.5793, i64 6, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a929 - store { ptr, i64, i64 } %t944, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - store { ptr, i64, i64 } %t944, ptr %a949 - call void @finch_str_drop(ptr %a949) - %t950 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5794, i64 6, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = load ptr, ptr %a1 - %t957 = load %S.ast.Type, ptr %a15 - %t958 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t956, %S.ast.Type %t957) - store { ptr, i64, i64 } %t955, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t955, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t958, ptr %a963 - call void @finch_str_drop(ptr %a963) - %t964 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t964, ptr %a966 - store { ptr, i64, i64 } { ptr @.str.5795, i64 1, i64 0 }, ptr %a967 - call void @finch_str_concat(ptr %a965, ptr %a966, ptr %a967) - store { ptr, i64, i64 } %t964, ptr %a968 - call void @finch_str_drop(ptr %a968) - %t969 = load { ptr, i64, i64 }, ptr %a965 - call void @finch.gen.emit(ptr %t934, { ptr, i64, i64 } %t969) - store { ptr, i64, i64 } %t969, ptr %a970 - call void @finch_str_drop(ptr %a970) - %t971 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5796, i64 4, i64 0 }) - %t972 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t971, 1 - call void @finch_str_drop(ptr %a929) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t972 -endif8925: - %t973 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t973, ptr %a974 - store { ptr, i64, i64 } { ptr @.str.5797, i64 7, i64 0 }, ptr %a975 - %t976 = call i32 @finch_str_eq(ptr %a974, ptr %a975) - %t977 = icmp ne i32 %t976, 0 - br i1 %t977, label %then8930, label %endif8932 -then8930: - %t978 = load ptr, ptr %a1 - %t979 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t978, %S.ast.Node %t979, i64 0) - %t980 = load ptr, ptr %a1 - %t981 = load { ptr, i64, i64 }, ptr %a39 - %t982 = call { ptr, i64, i64 } @finch.gen.load(ptr %t980, { ptr, i64, i64 } { ptr @.str.5798, i64 3, i64 0 }, { ptr, i64, i64 } %t981) - store { ptr, i64, i64 } %t982, ptr %a983 - %t984 = load ptr, ptr %a1 - %t985 = load { ptr, i64, i64 }, ptr %a3 - %t986 = call { ptr, i64, i64 } @finch.gen.load(ptr %t984, { ptr, i64, i64 } { ptr @.str.5799, i64 3, i64 0 }, { ptr, i64, i64 } %t985) - store { ptr, i64, i64 } %t986, ptr %a987 - %t988 = load ptr, ptr %a1 - %t989 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5800, i64 9, i64 0 }, ptr %a991 - store { ptr, i64, i64 } %t989, ptr %a992 - call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t993, ptr %a995 - store { ptr, i64, i64 } { ptr @.str.5801, i64 3, i64 0 }, ptr %a996 - call void @finch_str_concat(ptr %a994, ptr %a995, ptr %a996) - store { ptr, i64, i64 } %t993, ptr %a997 - call void @finch_str_drop(ptr %a997) - %t998 = load { ptr, i64, i64 }, ptr %a994 - %t999 = call { ptr, i64, i64 } @finch.gen.op(ptr %t988, { ptr, i64, i64 } %t998) - store { ptr, i64, i64 } %t998, ptr %a1000 - call void @finch_str_drop(ptr %a1000) - store { ptr, i64, i64 } %t999, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = load { ptr, i64, i64 }, ptr %a1001 - %t1004 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1002, { ptr, i64, i64 } %t1003) - store { ptr, i64, i64 } %t1004, ptr %a1005 - %t1006 = load ptr, ptr %a1 - %t1007 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5802, i64 23, i64 0 }, ptr %a1009 - store { ptr, i64, i64 } %t1007, ptr %a1010 - call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1008 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5803, i64 6, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1016, ptr %a1019 - store { ptr, i64, i64 } %t1017, ptr %a1020 - call void @finch_str_concat(ptr %a1018, ptr %a1019, ptr %a1020) - store { ptr, i64, i64 } %t1016, ptr %a1021 - call void @finch_str_drop(ptr %a1021) - %t1022 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } %t1022, ptr %a1024 - store { ptr, i64, i64 } { ptr @.str.5804, i64 6, i64 0 }, ptr %a1025 - call void @finch_str_concat(ptr %a1023, ptr %a1024, ptr %a1025) - store { ptr, i64, i64 } %t1022, ptr %a1026 - call void @finch_str_drop(ptr %a1026) - %t1027 = load { ptr, i64, i64 }, ptr %a1023 - %t1028 = load { ptr, i64, i64 }, ptr %a1005 - %t1029 = extractvalue { ptr, i64, i64 } %t1028, 1 - %t1030 = icmp uge i64 3, %t1029 - br i1 %t1030, label %range8933, label %inrange8934 -range8933: - call void @finch_panic_index(ptr @.str.5805, i64 5516, i64 3, i64 %t1029) - unreachable -inrange8934: - %t1031 = extractvalue { ptr, i64, i64 } %t1028, 0 - %t1032 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1031, i64 3 - %t1033 = load { ptr, i64, i64 }, ptr %t1032 - store { ptr, i64, i64 } %t1027, ptr %a1035 - store { ptr, i64, i64 } %t1033, ptr %a1036 - call void @finch_str_concat(ptr %a1034, ptr %a1035, ptr %a1036) - store { ptr, i64, i64 } %t1027, ptr %a1037 - call void @finch_str_drop(ptr %a1037) - %t1038 = load { ptr, i64, i64 }, ptr %a1034 - %t1039 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1006, { ptr, i64, i64 } %t1038) - store { ptr, i64, i64 } %t1038, ptr %a1040 - call void @finch_str_drop(ptr %a1040) - store { ptr, i64, i64 } %t1039, ptr %a1041 - %t1042 = load ptr, ptr %a1 - %t1043 = load ptr, ptr %a1 - %t1044 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5807, i64 8, i64 0 }, ptr %a1046 - store { ptr, i64, i64 } %t1044, ptr %a1047 - call void @finch_str_concat(ptr %a1045, ptr %a1046, ptr %a1047) - %t1048 = load { ptr, i64, i64 }, ptr %a1045 - store { ptr, i64, i64 } %t1048, ptr %a1050 - store { ptr, i64, i64 } { ptr @.str.5808, i64 3, i64 0 }, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - store { ptr, i64, i64 } %t1048, ptr %a1052 - call void @finch_str_drop(ptr %a1052) - %t1053 = load { ptr, i64, i64 }, ptr %a1049 - %t1054 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1043, { ptr, i64, i64 } %t1053) - store { ptr, i64, i64 } %t1053, ptr %a1055 - call void @finch_str_drop(ptr %a1055) - store { ptr, i64, i64 } { ptr @.str.5806, i64 8, i64 0 }, ptr %a1057 - store { ptr, i64, i64 } %t1054, ptr %a1058 - call void @finch_str_concat(ptr %a1056, ptr %a1057, ptr %a1058) - store { ptr, i64, i64 } %t1054, ptr %a1059 - call void @finch_str_drop(ptr %a1059) - %t1060 = load { ptr, i64, i64 }, ptr %a1056 - store { ptr, i64, i64 } %t1060, ptr %a1062 - store { ptr, i64, i64 } { ptr @.str.5809, i64 2, i64 0 }, ptr %a1063 - call void @finch_str_concat(ptr %a1061, ptr %a1062, ptr %a1063) - store { ptr, i64, i64 } %t1060, ptr %a1064 - call void @finch_str_drop(ptr %a1064) - %t1065 = load { ptr, i64, i64 }, ptr %a1061 - %t1066 = load { ptr, i64, i64 }, ptr %a1005 - %t1067 = extractvalue { ptr, i64, i64 } %t1066, 1 - %t1068 = icmp uge i64 3, %t1067 - br i1 %t1068, label %range8935, label %inrange8936 -range8935: - call void @finch_panic_index(ptr @.str.5810, i64 5517, i64 3, i64 %t1067) - unreachable -inrange8936: - %t1069 = extractvalue { ptr, i64, i64 } %t1066, 0 - %t1070 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1069, i64 3 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1065, ptr %a1073 - store { ptr, i64, i64 } %t1071, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1065, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1042, { ptr, i64, i64 } %t1076) - store { ptr, i64, i64 } %t1076, ptr %a1078 - call void @finch_str_drop(ptr %a1078) - store { ptr, i64, i64 } %t1077, ptr %a1079 - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5811, i64 23, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - %t1085 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1085, ptr %a1087 - store { ptr, i64, i64 } { ptr @.str.5812, i64 6, i64 0 }, ptr %a1088 - call void @finch_str_concat(ptr %a1086, ptr %a1087, ptr %a1088) - store { ptr, i64, i64 } %t1085, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load { ptr, i64, i64 }, ptr %a1086 - %t1091 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1090, ptr %a1093 - store { ptr, i64, i64 } %t1091, ptr %a1094 - call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) - store { ptr, i64, i64 } %t1090, ptr %a1095 - call void @finch_str_drop(ptr %a1095) - %t1096 = load { ptr, i64, i64 }, ptr %a1092 - store { ptr, i64, i64 } %t1096, ptr %a1098 - store { ptr, i64, i64 } { ptr @.str.5813, i64 6, i64 0 }, ptr %a1099 - call void @finch_str_concat(ptr %a1097, ptr %a1098, ptr %a1099) - store { ptr, i64, i64 } %t1096, ptr %a1100 - call void @finch_str_drop(ptr %a1100) - %t1101 = load { ptr, i64, i64 }, ptr %a1097 - %t1102 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1101, ptr %a1104 - store { ptr, i64, i64 } %t1102, ptr %a1105 - call void @finch_str_concat(ptr %a1103, ptr %a1104, ptr %a1105) - store { ptr, i64, i64 } %t1101, ptr %a1106 - call void @finch_str_drop(ptr %a1106) - %t1107 = load { ptr, i64, i64 }, ptr %a1103 - %t1108 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1080, { ptr, i64, i64 } %t1107) - store { ptr, i64, i64 } %t1107, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - store { ptr, i64, i64 } %t1108, ptr %a1110 - %t1111 = load ptr, ptr %a1 - %t1112 = load { ptr, i64, i64 }, ptr %a19 - %t1113 = load { ptr, i64, i64 }, ptr %a1041 - %t1114 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1111, { ptr, i64, i64 } %t1112, { ptr, i64, i64 } %t1113) - store { ptr, i64, i64 } %t1114, ptr %a1115 - %t1116 = load ptr, ptr %a1 - %t1117 = load { ptr, i64, i64 }, ptr %a19 - %t1118 = load { ptr, i64, i64 }, ptr %a1110 - %t1119 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1116, { ptr, i64, i64 } %t1117, { ptr, i64, i64 } %t1118) - store { ptr, i64, i64 } %t1119, ptr %a1120 - %t1121 = load ptr, ptr %a1 - %t1122 = load { ptr, i64, i64 }, ptr %a19 - %t1123 = load { ptr, i64, i64 }, ptr %a1120 - %t1124 = load { ptr, i64, i64 }, ptr %a1041 - call void @finch.gen.store(ptr %t1121, { ptr, i64, i64 } %t1122, { ptr, i64, i64 } %t1123, { ptr, i64, i64 } %t1124) - %t1125 = load ptr, ptr %a1 - %t1126 = load { ptr, i64, i64 }, ptr %a19 - %t1127 = load { ptr, i64, i64 }, ptr %a1115 - %t1128 = load { ptr, i64, i64 }, ptr %a1110 - call void @finch.gen.store(ptr %t1125, { ptr, i64, i64 } %t1126, { ptr, i64, i64 } %t1127, { ptr, i64, i64 } %t1128) - %t1129 = load ptr, ptr %a1 - %t1130 = load { ptr, i64, i64 }, ptr %a1005 - call void @finch.gen.loopEnd(ptr %t1129, { ptr, i64, i64 } %t1130) - %t1131 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5814, i64 4, i64 0 }) - %t1132 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1131, 1 - call void @finch_str_drop(ptr %a1120) - call void @finch_str_drop(ptr %a1115) - call void @finch_str_drop(ptr %a1110) - call void @finch_str_drop(ptr %a1079) - call void @finch_str_drop(ptr %a1041) - call void @finch.drop.arr_str(ptr %a1005) - call void @finch_str_drop(ptr %a1001) - call void @finch_str_drop(ptr %a987) - call void @finch_str_drop(ptr %a983) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1132 -endif8932: - %t1133 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1133, ptr %a1134 - store { ptr, i64, i64 } { ptr @.str.5815, i64 5, i64 0 }, ptr %a1135 - %t1136 = call i32 @finch_str_eq(ptr %a1134, ptr %a1135) - %t1137 = icmp ne i32 %t1136, 0 - br i1 %t1137, label %then8937, label %endif8939 -then8937: - %t1138 = load ptr, ptr %a1 - %t1139 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1138, %S.ast.Node %t1139, i64 2) - %t1140 = load ptr, ptr %a1 - %t1141 = load ptr, ptr %a1 - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1143 = load { ptr, i64, i64 }, ptr %t1142 - %t1144 = extractvalue { ptr, i64, i64 } %t1143, 1 - %t1145 = icmp uge i64 1, %t1144 - br i1 %t1145, label %range8940, label %inrange8941 -range8940: - call void @finch_panic_index(ptr @.str.5816, i64 5528, i64 1, i64 %t1144) - unreachable -inrange8941: - %t1146 = extractvalue { ptr, i64, i64 } %t1143, 0 - %t1147 = getelementptr inbounds %S.ast.Node, ptr %t1146, i64 1 - %t1148 = load %S.ast.Node, ptr %t1147 - %t1149 = call %S.gen.Val @finch.gen.expr(ptr %t1141, %S.ast.Node %t1148) - %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5817, i64 3, i64 0 }) - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 1, %t1153 - br i1 %t1154, label %range8942, label %inrange8943 -range8942: - call void @finch_panic_index(ptr @.str.5818, i64 5528, i64 1, i64 %t1153) - unreachable -inrange8943: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 1 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.coerce(ptr %t1140, %S.gen.Val %t1149, %S.ast.Type %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5819, i64 9, i64 0 }) - store %S.gen.Val %t1149, ptr %a1159 - call void @finch.drop.S_gen_Val(ptr %a1159) - store %S.ast.Type %t1150, ptr %a1160 - call void @finch.drop.S_ast_Type(ptr %a1160) - %t1161 = extractvalue %S.gen.Val %t1158, 0 - store { ptr, i64, i64 } %t1161, ptr %a1162 - call void @finch_str_copy(ptr %a1163, ptr %a1162) - %t1164 = load { ptr, i64, i64 }, ptr %a1163 - store %S.gen.Val %t1158, ptr %a1165 - call void @finch.drop.S_gen_Val(ptr %a1165) - store { ptr, i64, i64 } %t1164, ptr %a1166 - %t1167 = load ptr, ptr %a1 - %t1168 = load ptr, ptr %a1 - %t1169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1170 = load { ptr, i64, i64 }, ptr %t1169 - %t1171 = extractvalue { ptr, i64, i64 } %t1170, 1 - %t1172 = icmp uge i64 2, %t1171 - br i1 %t1172, label %range8944, label %inrange8945 -range8944: - call void @finch_panic_index(ptr @.str.5820, i64 5529, i64 2, i64 %t1171) - unreachable -inrange8945: - %t1173 = extractvalue { ptr, i64, i64 } %t1170, 0 - %t1174 = getelementptr inbounds %S.ast.Node, ptr %t1173, i64 2 - %t1175 = load %S.ast.Node, ptr %t1174 - %t1176 = call %S.gen.Val @finch.gen.expr(ptr %t1168, %S.ast.Node %t1175) - %t1177 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5821, i64 3, i64 0 }) - %t1178 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1179 = load { ptr, i64, i64 }, ptr %t1178 - %t1180 = extractvalue { ptr, i64, i64 } %t1179, 1 - %t1181 = icmp uge i64 2, %t1180 - br i1 %t1181, label %range8946, label %inrange8947 -range8946: - call void @finch_panic_index(ptr @.str.5822, i64 5529, i64 2, i64 %t1180) - unreachable -inrange8947: - %t1182 = extractvalue { ptr, i64, i64 } %t1179, 0 - %t1183 = getelementptr inbounds %S.ast.Node, ptr %t1182, i64 2 - %t1184 = load %S.ast.Node, ptr %t1183 - %t1185 = call %S.gen.Val @finch.gen.coerce(ptr %t1167, %S.gen.Val %t1176, %S.ast.Type %t1177, %S.ast.Node %t1184, { ptr, i64, i64 } { ptr @.str.5823, i64 7, i64 0 }) - store %S.gen.Val %t1176, ptr %a1186 - call void @finch.drop.S_gen_Val(ptr %a1186) - store %S.ast.Type %t1177, ptr %a1187 - call void @finch.drop.S_ast_Type(ptr %a1187) - %t1188 = extractvalue %S.gen.Val %t1185, 0 - store { ptr, i64, i64 } %t1188, ptr %a1189 - call void @finch_str_copy(ptr %a1190, ptr %a1189) - %t1191 = load { ptr, i64, i64 }, ptr %a1190 - store %S.gen.Val %t1185, ptr %a1192 - call void @finch.drop.S_gen_Val(ptr %a1192) - store { ptr, i64, i64 } %t1191, ptr %a1193 - %t1194 = load ptr, ptr %a1 - %t1195 = load { ptr, i64, i64 }, ptr %a39 - %t1196 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1194, { ptr, i64, i64 } { ptr @.str.5824, i64 3, i64 0 }, { ptr, i64, i64 } %t1195) - store { ptr, i64, i64 } %t1196, ptr %a1197 - %t1198 = load ptr, ptr %a1 - %t1199 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5825, i64 13, i64 0 }, ptr %a1201 - store { ptr, i64, i64 } %t1199, ptr %a1202 - call void @finch_str_concat(ptr %a1200, ptr %a1201, ptr %a1202) - %t1203 = load { ptr, i64, i64 }, ptr %a1200 - store { ptr, i64, i64 } %t1203, ptr %a1205 - store { ptr, i64, i64 } { ptr @.str.5826, i64 3, i64 0 }, ptr %a1206 - call void @finch_str_concat(ptr %a1204, ptr %a1205, ptr %a1206) - store { ptr, i64, i64 } %t1203, ptr %a1207 - call void @finch_str_drop(ptr %a1207) - %t1208 = load { ptr, i64, i64 }, ptr %a1204 - %t1209 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1198, { ptr, i64, i64 } %t1208) - store { ptr, i64, i64 } %t1208, ptr %a1210 - call void @finch_str_drop(ptr %a1210) - store { ptr, i64, i64 } %t1209, ptr %a1211 - %t1212 = load ptr, ptr %a1 - %t1213 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5827, i64 13, i64 0 }, ptr %a1215 - store { ptr, i64, i64 } %t1213, ptr %a1216 - call void @finch_str_concat(ptr %a1214, ptr %a1215, ptr %a1216) - %t1217 = load { ptr, i64, i64 }, ptr %a1214 - store { ptr, i64, i64 } %t1217, ptr %a1219 - store { ptr, i64, i64 } { ptr @.str.5828, i64 2, i64 0 }, ptr %a1220 - call void @finch_str_concat(ptr %a1218, ptr %a1219, ptr %a1220) - store { ptr, i64, i64 } %t1217, ptr %a1221 - call void @finch_str_drop(ptr %a1221) - %t1222 = load { ptr, i64, i64 }, ptr %a1218 - %t1223 = load { ptr, i64, i64 }, ptr %a1197 - store { ptr, i64, i64 } %t1222, ptr %a1225 - store { ptr, i64, i64 } %t1223, ptr %a1226 - call void @finch_str_concat(ptr %a1224, ptr %a1225, ptr %a1226) - store { ptr, i64, i64 } %t1222, ptr %a1227 - call void @finch_str_drop(ptr %a1227) - %t1228 = load { ptr, i64, i64 }, ptr %a1224 - %t1229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1212, { ptr, i64, i64 } %t1228) - store { ptr, i64, i64 } %t1228, ptr %a1230 - call void @finch_str_drop(ptr %a1230) - store { ptr, i64, i64 } %t1229, ptr %a1231 - %t1232 = load ptr, ptr %a1 - %t1233 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5829, i64 13, i64 0 }, ptr %a1235 - store { ptr, i64, i64 } %t1233, ptr %a1236 - call void @finch_str_concat(ptr %a1234, ptr %a1235, ptr %a1236) - %t1237 = load { ptr, i64, i64 }, ptr %a1234 - store { ptr, i64, i64 } %t1237, ptr %a1239 - store { ptr, i64, i64 } { ptr @.str.5830, i64 2, i64 0 }, ptr %a1240 - call void @finch_str_concat(ptr %a1238, ptr %a1239, ptr %a1240) - store { ptr, i64, i64 } %t1237, ptr %a1241 - call void @finch_str_drop(ptr %a1241) - %t1242 = load { ptr, i64, i64 }, ptr %a1238 - %t1243 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } %t1242, ptr %a1245 - store { ptr, i64, i64 } %t1243, ptr %a1246 - call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246) - store { ptr, i64, i64 } %t1242, ptr %a1247 - call void @finch_str_drop(ptr %a1247) - %t1248 = load { ptr, i64, i64 }, ptr %a1244 - %t1249 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1232, { ptr, i64, i64 } %t1248) - store { ptr, i64, i64 } %t1248, ptr %a1250 - call void @finch_str_drop(ptr %a1250) - store { ptr, i64, i64 } %t1249, ptr %a1251 - %t1252 = load ptr, ptr %a1 - %t1253 = load ptr, ptr %a1 - %t1254 = load ptr, ptr %a1 - %t1255 = load { ptr, i64, i64 }, ptr %a1211 - store { ptr, i64, i64 } { ptr @.str.5832, i64 6, i64 0 }, ptr %a1257 - store { ptr, i64, i64 } %t1255, ptr %a1258 - call void @finch_str_concat(ptr %a1256, ptr %a1257, ptr %a1258) - %t1259 = load { ptr, i64, i64 }, ptr %a1256 - store { ptr, i64, i64 } %t1259, ptr %a1261 - store { ptr, i64, i64 } { ptr @.str.5833, i64 2, i64 0 }, ptr %a1262 - call void @finch_str_concat(ptr %a1260, ptr %a1261, ptr %a1262) - store { ptr, i64, i64 } %t1259, ptr %a1263 - call void @finch_str_drop(ptr %a1263) - %t1264 = load { ptr, i64, i64 }, ptr %a1260 - %t1265 = load { ptr, i64, i64 }, ptr %a1231 - store { ptr, i64, i64 } %t1264, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - store { ptr, i64, i64 } %t1264, ptr %a1269 - call void @finch_str_drop(ptr %a1269) - %t1270 = load { ptr, i64, i64 }, ptr %a1266 - %t1271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1254, { ptr, i64, i64 } %t1270) - store { ptr, i64, i64 } %t1270, ptr %a1272 - call void @finch_str_drop(ptr %a1272) - store { ptr, i64, i64 } { ptr @.str.5831, i64 6, i64 0 }, ptr %a1274 - store { ptr, i64, i64 } %t1271, ptr %a1275 - call void @finch_str_concat(ptr %a1273, ptr %a1274, ptr %a1275) - store { ptr, i64, i64 } %t1271, ptr %a1276 - call void @finch_str_drop(ptr %a1276) - %t1277 = load { ptr, i64, i64 }, ptr %a1273 - store { ptr, i64, i64 } %t1277, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5834, i64 2, i64 0 }, ptr %a1280 - call void @finch_str_concat(ptr %a1278, ptr %a1279, ptr %a1280) - store { ptr, i64, i64 } %t1277, ptr %a1281 - call void @finch_str_drop(ptr %a1281) - %t1282 = load { ptr, i64, i64 }, ptr %a1278 - %t1283 = load { ptr, i64, i64 }, ptr %a1251 - store { ptr, i64, i64 } %t1282, ptr %a1285 - store { ptr, i64, i64 } %t1283, ptr %a1286 - call void @finch_str_concat(ptr %a1284, ptr %a1285, ptr %a1286) - store { ptr, i64, i64 } %t1282, ptr %a1287 - call void @finch_str_drop(ptr %a1287) - %t1288 = load { ptr, i64, i64 }, ptr %a1284 - %t1289 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1253, { ptr, i64, i64 } %t1288) - store { ptr, i64, i64 } %t1288, ptr %a1290 - call void @finch_str_drop(ptr %a1290) - %t1291 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t1252, { ptr, i64, i64 } %t1289, { ptr, i64, i64 } { ptr @.str.5835, i64 33, i64 0 }, %S.ast.Node %t1291) - store { ptr, i64, i64 } %t1289, ptr %a1292 - call void @finch_str_drop(ptr %a1292) - %t1293 = load ptr, ptr %a1 - %t1294 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5836, i64 8, i64 0 }, ptr %a1296 - store { ptr, i64, i64 } %t1294, ptr %a1297 - call void @finch_str_concat(ptr %a1295, ptr %a1296, ptr %a1297) - %t1298 = load { ptr, i64, i64 }, ptr %a1295 - store { ptr, i64, i64 } %t1298, ptr %a1300 - store { ptr, i64, i64 } { ptr @.str.5837, i64 2, i64 0 }, ptr %a1301 - call void @finch_str_concat(ptr %a1299, ptr %a1300, ptr %a1301) - store { ptr, i64, i64 } %t1298, ptr %a1302 - call void @finch_str_drop(ptr %a1302) - %t1303 = load { ptr, i64, i64 }, ptr %a1299 - %t1304 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } %t1303, ptr %a1306 - store { ptr, i64, i64 } %t1304, ptr %a1307 - call void @finch_str_concat(ptr %a1305, ptr %a1306, ptr %a1307) - store { ptr, i64, i64 } %t1303, ptr %a1308 - call void @finch_str_drop(ptr %a1308) - %t1309 = load { ptr, i64, i64 }, ptr %a1305 - %t1310 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1293, { ptr, i64, i64 } %t1309) - store { ptr, i64, i64 } %t1309, ptr %a1311 - call void @finch_str_drop(ptr %a1311) - store { ptr, i64, i64 } %t1310, ptr %a1312 - %t1313 = load ptr, ptr %a1 - %t1314 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1313, { ptr, i64, i64 } { ptr @.str.5838, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1314, ptr %a1315 - %t1316 = load ptr, ptr %a1 - %t1317 = load { ptr, i64, i64 }, ptr %a1315 - store { ptr, i64, i64 } { ptr @.str.5839, i64 30, i64 0 }, ptr %a1319 - store { ptr, i64, i64 } %t1317, ptr %a1320 - call void @finch_str_concat(ptr %a1318, ptr %a1319, ptr %a1320) - %t1321 = load { ptr, i64, i64 }, ptr %a1318 - store { ptr, i64, i64 } %t1321, ptr %a1323 - store { ptr, i64, i64 } { ptr @.str.5840, i64 6, i64 0 }, ptr %a1324 - call void @finch_str_concat(ptr %a1322, ptr %a1323, ptr %a1324) - store { ptr, i64, i64 } %t1321, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1322 - %t1327 = load { ptr, i64, i64 }, ptr %a1312 - store { ptr, i64, i64 } %t1326, ptr %a1329 - store { ptr, i64, i64 } %t1327, ptr %a1330 - call void @finch_str_concat(ptr %a1328, ptr %a1329, ptr %a1330) - store { ptr, i64, i64 } %t1326, ptr %a1331 - call void @finch_str_drop(ptr %a1331) - %t1332 = load { ptr, i64, i64 }, ptr %a1328 - store { ptr, i64, i64 } %t1332, ptr %a1334 - store { ptr, i64, i64 } { ptr @.str.5841, i64 6, i64 0 }, ptr %a1335 - call void @finch_str_concat(ptr %a1333, ptr %a1334, ptr %a1335) - store { ptr, i64, i64 } %t1332, ptr %a1336 - call void @finch_str_drop(ptr %a1336) - %t1337 = load { ptr, i64, i64 }, ptr %a1333 - %t1338 = load ptr, ptr %a1 - %t1339 = load %S.ast.Type, ptr %a15 - %t1340 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1338, %S.ast.Type %t1339) - store { ptr, i64, i64 } %t1337, ptr %a1342 - store { ptr, i64, i64 } %t1340, ptr %a1343 - call void @finch_str_concat(ptr %a1341, ptr %a1342, ptr %a1343) - store { ptr, i64, i64 } %t1337, ptr %a1344 - call void @finch_str_drop(ptr %a1344) - store { ptr, i64, i64 } %t1340, ptr %a1345 - call void @finch_str_drop(ptr %a1345) - %t1346 = load { ptr, i64, i64 }, ptr %a1341 - store { ptr, i64, i64 } %t1346, ptr %a1348 - store { ptr, i64, i64 } { ptr @.str.5842, i64 1, i64 0 }, ptr %a1349 - call void @finch_str_concat(ptr %a1347, ptr %a1348, ptr %a1349) - store { ptr, i64, i64 } %t1346, ptr %a1350 - call void @finch_str_drop(ptr %a1350) - %t1351 = load { ptr, i64, i64 }, ptr %a1347 - call void @finch.gen.emit(ptr %t1316, { ptr, i64, i64 } %t1351) - store { ptr, i64, i64 } %t1351, ptr %a1352 - call void @finch_str_drop(ptr %a1352) - %t1353 = load ptr, ptr %a1 - %t1354 = load { ptr, i64, i64 }, ptr %a3 - %t1355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1353, { ptr, i64, i64 } { ptr @.str.5843, i64 3, i64 0 }, { ptr, i64, i64 } %t1354) - store { ptr, i64, i64 } %t1355, ptr %a1356 - %t1357 = load ptr, ptr %a1 - %t1358 = load { ptr, i64, i64 }, ptr %a1315 - %t1359 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1357, { ptr, i64, i64 } { ptr @.str.5844, i64 3, i64 0 }, { ptr, i64, i64 } %t1358) - store { ptr, i64, i64 } %t1359, ptr %a1360 - %t1361 = load ptr, ptr %a1 - %t1362 = load { ptr, i64, i64 }, ptr %a1312 - %t1363 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1361, { ptr, i64, i64 } %t1362) - store { ptr, i64, i64 } %t1363, ptr %a1364 - %t1365 = load ptr, ptr %a1 - %t1366 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5845, i64 23, i64 0 }, ptr %a1368 - store { ptr, i64, i64 } %t1366, ptr %a1369 - call void @finch_str_concat(ptr %a1367, ptr %a1368, ptr %a1369) - %t1370 = load { ptr, i64, i64 }, ptr %a1367 - store { ptr, i64, i64 } %t1370, ptr %a1372 - store { ptr, i64, i64 } { ptr @.str.5846, i64 6, i64 0 }, ptr %a1373 - call void @finch_str_concat(ptr %a1371, ptr %a1372, ptr %a1373) - store { ptr, i64, i64 } %t1370, ptr %a1374 - call void @finch_str_drop(ptr %a1374) - %t1375 = load { ptr, i64, i64 }, ptr %a1371 - %t1376 = load { ptr, i64, i64 }, ptr %a1360 - store { ptr, i64, i64 } %t1375, ptr %a1378 - store { ptr, i64, i64 } %t1376, ptr %a1379 - call void @finch_str_concat(ptr %a1377, ptr %a1378, ptr %a1379) - store { ptr, i64, i64 } %t1375, ptr %a1380 - call void @finch_str_drop(ptr %a1380) - %t1381 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1381, ptr %a1383 - store { ptr, i64, i64 } { ptr @.str.5847, i64 6, i64 0 }, ptr %a1384 - call void @finch_str_concat(ptr %a1382, ptr %a1383, ptr %a1384) - store { ptr, i64, i64 } %t1381, ptr %a1385 - call void @finch_str_drop(ptr %a1385) - %t1386 = load { ptr, i64, i64 }, ptr %a1382 - %t1387 = load { ptr, i64, i64 }, ptr %a1364 - %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 - %t1389 = icmp uge i64 3, %t1388 - br i1 %t1389, label %range8948, label %inrange8949 -range8948: - call void @finch_panic_index(ptr @.str.5848, i64 5541, i64 3, i64 %t1388) - unreachable -inrange8949: - %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 - %t1391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1390, i64 3 - %t1392 = load { ptr, i64, i64 }, ptr %t1391 - store { ptr, i64, i64 } %t1386, ptr %a1394 - store { ptr, i64, i64 } %t1392, ptr %a1395 - call void @finch_str_concat(ptr %a1393, ptr %a1394, ptr %a1395) - store { ptr, i64, i64 } %t1386, ptr %a1396 - call void @finch_str_drop(ptr %a1396) - %t1397 = load { ptr, i64, i64 }, ptr %a1393 - %t1398 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1365, { ptr, i64, i64 } %t1397) - store { ptr, i64, i64 } %t1397, ptr %a1399 - call void @finch_str_drop(ptr %a1399) - store { ptr, i64, i64 } %t1398, ptr %a1400 - %t1401 = load ptr, ptr %a1 - %t1402 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5849, i64 23, i64 0 }, ptr %a1404 - store { ptr, i64, i64 } %t1402, ptr %a1405 - call void @finch_str_concat(ptr %a1403, ptr %a1404, ptr %a1405) - %t1406 = load { ptr, i64, i64 }, ptr %a1403 - store { ptr, i64, i64 } %t1406, ptr %a1408 - store { ptr, i64, i64 } { ptr @.str.5850, i64 6, i64 0 }, ptr %a1409 - call void @finch_str_concat(ptr %a1407, ptr %a1408, ptr %a1409) - store { ptr, i64, i64 } %t1406, ptr %a1410 - call void @finch_str_drop(ptr %a1410) - %t1411 = load { ptr, i64, i64 }, ptr %a1407 - %t1412 = load { ptr, i64, i64 }, ptr %a1356 - store { ptr, i64, i64 } %t1411, ptr %a1414 - store { ptr, i64, i64 } %t1412, ptr %a1415 - call void @finch_str_concat(ptr %a1413, ptr %a1414, ptr %a1415) - store { ptr, i64, i64 } %t1411, ptr %a1416 - call void @finch_str_drop(ptr %a1416) - %t1417 = load { ptr, i64, i64 }, ptr %a1413 - store { ptr, i64, i64 } %t1417, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5851, i64 6, i64 0 }, ptr %a1420 - call void @finch_str_concat(ptr %a1418, ptr %a1419, ptr %a1420) - store { ptr, i64, i64 } %t1417, ptr %a1421 - call void @finch_str_drop(ptr %a1421) - %t1422 = load { ptr, i64, i64 }, ptr %a1418 - %t1423 = load ptr, ptr %a1 - %t1424 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5852, i64 8, i64 0 }, ptr %a1426 - store { ptr, i64, i64 } %t1424, ptr %a1427 - call void @finch_str_concat(ptr %a1425, ptr %a1426, ptr %a1427) - %t1428 = load { ptr, i64, i64 }, ptr %a1425 - store { ptr, i64, i64 } %t1428, ptr %a1430 - store { ptr, i64, i64 } { ptr @.str.5853, i64 2, i64 0 }, ptr %a1431 - call void @finch_str_concat(ptr %a1429, ptr %a1430, ptr %a1431) - store { ptr, i64, i64 } %t1428, ptr %a1432 - call void @finch_str_drop(ptr %a1432) - %t1433 = load { ptr, i64, i64 }, ptr %a1429 - %t1434 = load { ptr, i64, i64 }, ptr %a1364 - %t1435 = extractvalue { ptr, i64, i64 } %t1434, 1 - %t1436 = icmp uge i64 3, %t1435 - br i1 %t1436, label %range8950, label %inrange8951 -range8950: - call void @finch_panic_index(ptr @.str.5854, i64 5542, i64 3, i64 %t1435) - unreachable -inrange8951: - %t1437 = extractvalue { ptr, i64, i64 } %t1434, 0 - %t1438 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1437, i64 3 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1433, ptr %a1441 - store { ptr, i64, i64 } %t1439, ptr %a1442 - call void @finch_str_concat(ptr %a1440, ptr %a1441, ptr %a1442) - store { ptr, i64, i64 } %t1433, ptr %a1443 - call void @finch_str_drop(ptr %a1443) - %t1444 = load { ptr, i64, i64 }, ptr %a1440 - %t1445 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1423, { ptr, i64, i64 } %t1444) - store { ptr, i64, i64 } %t1444, ptr %a1446 - call void @finch_str_drop(ptr %a1446) - store { ptr, i64, i64 } %t1422, ptr %a1448 - store { ptr, i64, i64 } %t1445, ptr %a1449 - call void @finch_str_concat(ptr %a1447, ptr %a1448, ptr %a1449) - store { ptr, i64, i64 } %t1422, ptr %a1450 - call void @finch_str_drop(ptr %a1450) - store { ptr, i64, i64 } %t1445, ptr %a1451 - call void @finch_str_drop(ptr %a1451) - %t1452 = load { ptr, i64, i64 }, ptr %a1447 - %t1453 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1401, { ptr, i64, i64 } %t1452) - store { ptr, i64, i64 } %t1452, ptr %a1454 - call void @finch_str_drop(ptr %a1454) - store { ptr, i64, i64 } %t1453, ptr %a1455 - %t1456 = load ptr, ptr %a1 - %t1457 = load { ptr, i64, i64 }, ptr %a1400 - %t1458 = load { ptr, i64, i64 }, ptr %a1455 - %t1459 = load %S.ast.Type, ptr %a15 - call void @finch.gen.copyAt(ptr %t1456, { ptr, i64, i64 } %t1457, { ptr, i64, i64 } %t1458, %S.ast.Type %t1459) - %t1460 = load ptr, ptr %a1 - %t1461 = load { ptr, i64, i64 }, ptr %a1364 - call void @finch.gen.loopEnd(ptr %t1460, { ptr, i64, i64 } %t1461) - %t1462 = load ptr, ptr %a1 - %t1463 = load { ptr, i64, i64 }, ptr %a1315 - %t1464 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1462, { ptr, i64, i64 } { ptr @.str.5855, i64 17, i64 0 }, { ptr, i64, i64 } %t1463) - %t1465 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1464, 0 - %t1466 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t1466, ptr %a1467 - call void @finch.copy.S_ast_Type(ptr %a1468, ptr %a1467) - %t1469 = load %S.ast.Type, ptr %a1468 - %t1470 = insertvalue %S.gen.Val %t1465, %S.ast.Type %t1469, 1 - %t1471 = insertvalue %S.gen.Val %t1470, i1 true, 2 - call void @finch_str_drop(ptr %a1455) - call void @finch_str_drop(ptr %a1400) - call void @finch.drop.arr_str(ptr %a1364) - call void @finch_str_drop(ptr %a1360) - call void @finch_str_drop(ptr %a1356) - call void @finch_str_drop(ptr %a1315) - call void @finch_str_drop(ptr %a1312) - call void @finch_str_drop(ptr %a1251) - call void @finch_str_drop(ptr %a1231) - call void @finch_str_drop(ptr %a1211) - call void @finch_str_drop(ptr %a1197) - call void @finch_str_drop(ptr %a1193) - call void @finch_str_drop(ptr %a1166) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1471 -endif8939: - %t1472 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1472, ptr %a1473 - store { ptr, i64, i64 } { ptr @.str.5856, i64 4, i64 0 }, ptr %a1474 - %t1475 = call i32 @finch_str_eq(ptr %a1473, ptr %a1474) - %t1476 = icmp ne i32 %t1475, 0 - br i1 %t1476, label %then8952, label %endif8954 -then8952: - %t1477 = load ptr, ptr %a1 - %t1478 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1477, %S.ast.Node %t1478, i64 0) - %t1479 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t1480 = load { ptr, i64, i64 }, ptr %t1479 - store { ptr, i64, i64 } %t1480, ptr %a1481 - call void @finch_str_copy(ptr %a1482, ptr %a1481) - %t1483 = load { ptr, i64, i64 }, ptr %a1482 - store { ptr, i64, i64 } %t1483, ptr %a1484 - %t1485 = load %S.ast.Type, ptr %a15 - %t1486 = call i1 @finch.gen.isNumber(%S.ast.Type %t1485) - %t1487 = xor i1 %t1486, true - br label %logic.from8955 -logic.from8955: - br i1 %t1487, label %logic.rhs8956, label %logic.end8957 -logic.rhs8956: - %t1488 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1488, ptr %a1489 - store { ptr, i64, i64 } { ptr @.str.5857, i64 4, i64 0 }, ptr %a1490 - %t1491 = call i32 @finch_str_eq(ptr %a1489, ptr %a1490) - %t1492 = icmp eq i32 %t1491, 0 - br label %logic.rend8958 -logic.rend8958: - br label %logic.end8957 -logic.end8957: - %t1493 = phi i1 [ false, %logic.from8955 ], [ %t1492, %logic.rend8958 ] - br label %logic.from8959 -logic.from8959: - br i1 %t1493, label %logic.rhs8960, label %logic.end8961 -logic.rhs8960: - %t1494 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1494, ptr %a1495 - store { ptr, i64, i64 } { ptr @.str.5858, i64 3, i64 0 }, ptr %a1496 - %t1497 = call i32 @finch_str_eq(ptr %a1495, ptr %a1496) - %t1498 = icmp eq i32 %t1497, 0 - br label %logic.rend8962 -logic.rend8962: - br label %logic.end8961 -logic.end8961: - %t1499 = phi i1 [ false, %logic.from8959 ], [ %t1498, %logic.rend8962 ] - br i1 %t1499, label %then8963, label %endif8965 -then8963: - %t1500 = load ptr, ptr %a1 - %t1501 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t1500, %S.ast.Node %t1501, { ptr, i64, i64 } { ptr @.str.5859, i64 47, i64 0 }) - br label %endif8965 -endif8965: - %t1502 = load ptr, ptr %a1 - %t1503 = load %S.ast.Type, ptr %a15 - %t1504 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1502, %S.ast.Type %t1503) - store { ptr, i64, i64 } %t1504, ptr %a1505 - %t1506 = load ptr, ptr %a1 - %t1507 = load { ptr, i64, i64 }, ptr %a39 - %t1508 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1506, { ptr, i64, i64 } { ptr @.str.5860, i64 3, i64 0 }, { ptr, i64, i64 } %t1507) - store { ptr, i64, i64 } %t1508, ptr %a1509 - %t1510 = load ptr, ptr %a1 - %t1511 = load { ptr, i64, i64 }, ptr %a3 - %t1512 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1510, { ptr, i64, i64 } { ptr @.str.5861, i64 3, i64 0 }, { ptr, i64, i64 } %t1511) - store { ptr, i64, i64 } %t1512, ptr %a1513 - %t1514 = load ptr, ptr %a1 - %t1515 = load { ptr, i64, i64 }, ptr %a1513 - store { ptr, i64, i64 } { ptr @.str.5862, i64 21, i64 0 }, ptr %a1517 - store { ptr, i64, i64 } %t1515, ptr %a1518 - call void @finch_str_concat(ptr %a1516, ptr %a1517, ptr %a1518) - %t1519 = load { ptr, i64, i64 }, ptr %a1516 - store { ptr, i64, i64 } %t1519, ptr %a1521 - store { ptr, i64, i64 } { ptr @.str.5863, i64 6, i64 0 }, ptr %a1522 - call void @finch_str_concat(ptr %a1520, ptr %a1521, ptr %a1522) - store { ptr, i64, i64 } %t1519, ptr %a1523 - call void @finch_str_drop(ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1520 - %t1525 = load { ptr, i64, i64 }, ptr %a1509 - store { ptr, i64, i64 } %t1524, ptr %a1527 - store { ptr, i64, i64 } %t1525, ptr %a1528 - call void @finch_str_concat(ptr %a1526, ptr %a1527, ptr %a1528) - store { ptr, i64, i64 } %t1524, ptr %a1529 - call void @finch_str_drop(ptr %a1529) - %t1530 = load { ptr, i64, i64 }, ptr %a1526 - store { ptr, i64, i64 } %t1530, ptr %a1532 - store { ptr, i64, i64 } { ptr @.str.5864, i64 6, i64 0 }, ptr %a1533 - call void @finch_str_concat(ptr %a1531, ptr %a1532, ptr %a1533) - store { ptr, i64, i64 } %t1530, ptr %a1534 - call void @finch_str_drop(ptr %a1534) - %t1535 = load { ptr, i64, i64 }, ptr %a1531 - %t1536 = load ptr, ptr %a1 - %t1537 = load %S.ast.Type, ptr %a15 - %t1538 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1536, %S.ast.Type %t1537) - store { ptr, i64, i64 } %t1535, ptr %a1540 - store { ptr, i64, i64 } %t1538, ptr %a1541 - call void @finch_str_concat(ptr %a1539, ptr %a1540, ptr %a1541) - store { ptr, i64, i64 } %t1535, ptr %a1542 - call void @finch_str_drop(ptr %a1542) - store { ptr, i64, i64 } %t1538, ptr %a1543 - call void @finch_str_drop(ptr %a1543) - %t1544 = load { ptr, i64, i64 }, ptr %a1539 - store { ptr, i64, i64 } %t1544, ptr %a1546 - store { ptr, i64, i64 } { ptr @.str.5865, i64 6, i64 0 }, ptr %a1547 - call void @finch_str_concat(ptr %a1545, ptr %a1546, ptr %a1547) - store { ptr, i64, i64 } %t1544, ptr %a1548 - call void @finch_str_drop(ptr %a1548) - %t1549 = load { ptr, i64, i64 }, ptr %a1545 - %t1550 = load { ptr, i64, i64 }, ptr %a1505 - store { ptr, i64, i64 } %t1549, ptr %a1552 - store { ptr, i64, i64 } %t1550, ptr %a1553 - call void @finch_str_concat(ptr %a1551, ptr %a1552, ptr %a1553) - store { ptr, i64, i64 } %t1549, ptr %a1554 - call void @finch_str_drop(ptr %a1554) - %t1555 = load { ptr, i64, i64 }, ptr %a1551 - store { ptr, i64, i64 } %t1555, ptr %a1557 - store { ptr, i64, i64 } { ptr @.str.5866, i64 1, i64 0 }, ptr %a1558 - call void @finch_str_concat(ptr %a1556, ptr %a1557, ptr %a1558) - store { ptr, i64, i64 } %t1555, ptr %a1559 - call void @finch_str_drop(ptr %a1559) - %t1560 = load { ptr, i64, i64 }, ptr %a1556 - call void @finch.gen.emit(ptr %t1514, { ptr, i64, i64 } %t1560) - store { ptr, i64, i64 } %t1560, ptr %a1561 - call void @finch_str_drop(ptr %a1561) - %t1562 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5867, i64 4, i64 0 }) - %t1563 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1562, 1 - call void @finch_str_drop(ptr %a1513) - call void @finch_str_drop(ptr %a1509) - call void @finch_str_drop(ptr %a1505) - call void @finch_str_drop(ptr %a1484) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1563 -endif8954: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.5868, i64 24, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5869, i64 96, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1575) - store { ptr, i64, i64 } %t1575, ptr %a1576 - call void @finch_str_drop(ptr %a1576) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val zeroinitializer -} - -define internal void @finch.gen.dropFrom(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca %S.ast.Type, align 16 - %a13 = alloca %S.ast.Type, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t6 = load { ptr, i64, i64 }, ptr %t5 - %t7 = extractvalue { ptr, i64, i64 } %t6, 1 - %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range8966, label %inrange8967 -range8966: - call void @finch_panic_index(ptr @.str.5870, i64 5565, i64 0, i64 %t7) - unreachable -inrange8967: - %t9 = extractvalue { ptr, i64, i64 } %t6, 0 - %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 - %t11 = load %S.ast.Type, ptr %t10 - store %S.ast.Type %t11, ptr %a12 - call void @finch.copy.S_ast_Type(ptr %a13, ptr %a12) - %t14 = load %S.ast.Type, ptr %a13 - store %S.ast.Type %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = load %S.ast.Type, ptr %a15 - %t18 = call i1 @finch.gen.owning(ptr %t16, %S.ast.Type %t17) - %t19 = xor i1 %t18, true - br i1 %t19, label %then8968, label %endif8970 -then8968: - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -endif8970: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Type, ptr %a15 - %t22 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t21) - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = load ptr, ptr %a1 - %t26 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.5872, i64 46, i64 0 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5873, i64 14, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = call { ptr, i64, i64 } @finch.gen.load(ptr %t24, { ptr, i64, i64 } { ptr @.str.5871, i64 3, i64 0 }, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_drop(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load ptr, ptr %a1 - %t42 = load { ptr, i64, i64 }, ptr %a2 - %t43 = call { ptr, i64, i64 } @finch.gen.load(ptr %t41, { ptr, i64, i64 } { ptr @.str.5874, i64 3, i64 0 }, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5875, 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.5876, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - store { ptr, i64, i64 } %t62, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5877, i64 13, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.5878, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t75) - store { ptr, i64, i64 } %t75, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t76, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.5879, i64 10, i64 0 }, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.5880, i64 6, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.5881, i64 10, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5882, i64 13, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t89, ptr %a110 - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t89, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t107, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.5883, i64 6, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - %t126 = call { ptr, i64, i64 } @finch.gen.op(ptr %t79, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a127 - call void @finch_str_drop(ptr %a127) - store { ptr, i64, i64 } %t126, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = load ptr, ptr %a1 - %t131 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.5884, i64 8, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5885, i64 2, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t140, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t140, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t130, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t129, { ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.5886, i64 23, i64 0 }, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5887, i64 6, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5888, i64 6, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load ptr, ptr %a1 - %t175 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5889, i64 8, i64 0 }, ptr %a177 - store { ptr, i64, i64 } %t175, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.5890, i64 2, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = load { ptr, i64, i64 }, ptr %a151 - %t186 = extractvalue { ptr, i64, i64 } %t185, 1 - %t187 = icmp uge i64 3, %t186 - br i1 %t187, label %range8971, label %inrange8972 -range8971: - call void @finch_panic_index(ptr @.str.5891, i64 5576, i64 3, i64 %t186) - unreachable -inrange8972: - %t188 = extractvalue { ptr, i64, i64 } %t185, 0 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } %t184, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t184, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = call { ptr, i64, i64 } @finch.gen.op(ptr %t174, { ptr, i64, i64 } %t195) - store { ptr, i64, i64 } %t195, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t173, ptr %a199 - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t173, ptr %a201 - call void @finch_str_drop(ptr %a201) - store { ptr, i64, i64 } %t196, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a198 - %t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t152, { ptr, i64, i64 } %t203) - store { ptr, i64, i64 } %t203, ptr %a205 - call void @finch_str_drop(ptr %a205) - store { ptr, i64, i64 } %t204, ptr %a206 - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a206 - %t209 = load %S.ast.Type, ptr %a15 - call void @finch.gen.dropAt(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a151 - call void @finch.gen.loopEnd(ptr %t210, { ptr, i64, i64 } %t211) - call void @finch_str_drop(ptr %a206) - call void @finch.drop.arr_str(ptr %a151) - call void @finch_str_drop(ptr %a128) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a64) - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a40) - call void @finch_str_drop(ptr %a23) - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cmpFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = 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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.5892, i64 11, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic8973, label %ok8974 -panic8973: - call void @finch_panic(ptr @.str.5893, i64 5584, ptr @.str.5894) - unreachable -ok8974: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then8975, label %endif8977 -then8975: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif8977: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic8978, label %ok8979 -panic8978: - call void @finch_panic(ptr @.str.5895, i64 5587, ptr @.str.5896) - unreachable -ok8979: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5897, i64 0, i64 0 }, ptr %a33 - %t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.5898, 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 %then8980, label %else8981 -then8980: - %t40 = load ptr, ptr %a1 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t40, { ptr, i64, i64 } { ptr @.str.5899, i64 39, i64 0 }) - store { ptr, i64, i64 } %t41, ptr %a42 - %t43 = load ptr, ptr %a1 - %t44 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5900, i64 10, i64 0 }, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5901, i64 7, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } %t53, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t54, ptr %a33 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a42) - br label %endif8982 -else8981: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.load(ptr %t62, { ptr, i64, i64 } %t63, { ptr, i64, i64 } { ptr @.str.5902, i64 2, i64 0 }) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load { ptr, i64, i64 }, ptr %a61 - %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } { ptr @.str.5903, i64 2, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5904, i64 0, i64 0 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5905, i64 0, i64 0 }, ptr %a71 - %t72 = load %S.ast.Type, ptr %a2 - %t73 = call i1 @finch.gen.isFloat(%S.ast.Type %t72) - br i1 %t73, label %then8983, label %else8984 -then8983: - %t74 = load ptr, ptr %a1 - %t75 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5906, 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.5907, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t84, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.5908, i64 2, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - %t96 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t95, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t102, ptr %a70 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load ptr, ptr %a1 - %t107 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5909, i64 9, i64 0 }, ptr %a109 - store { ptr, i64, i64 } %t107, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.5910, i64 1, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.5911, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t127, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t127, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t133) - store { ptr, i64, i64 } %t133, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t134, ptr %a71 - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif8985 -else8984: - %t138 = load ptr, ptr %a1 - %t139 = load %S.ast.Type, ptr %a2 - %t140 = call i1 @finch.gen.isSigned(%S.ast.Type %t139) - %t141 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5913, i64 1, i64 0 }, i1 %t140) - store { ptr, i64, i64 } { ptr @.str.5912, i64 5, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5914, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t151, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t151, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5915, i64 1, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5916, i64 2, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t180, ptr %a70 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Type, ptr %a2 - %t186 = call i1 @finch.gen.isSigned(%S.ast.Type %t185) - %t187 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5918, i64 1, i64 0 }, i1 %t186) - store { ptr, i64, i64 } { ptr @.str.5917, i64 5, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5919, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.5920, i64 1, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t214, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.5921, i64 2, i64 0 }, ptr %a217 - call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) - store { ptr, i64, i64 } %t214, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a215 - %t220 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t219, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a221 - %t226 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t225) - store { ptr, i64, i64 } %t225, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t226, ptr %a71 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch_str_drop(ptr %a229) - br label %endif8985 -endif8985: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.5923, i64 8, i64 0 }, ptr %a234 - store { ptr, i64, i64 } %t232, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.5924, i64 7, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } { ptr @.str.5922, i64 8, i64 0 }, ptr %a245 - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.5925, i64 2, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5926, i64 8, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.5927, i64 7, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t264) - store { ptr, i64, i64 } %t264, ptr %a266 - call void @finch_str_drop(ptr %a266) - store { ptr, i64, i64 } %t253, ptr %a268 - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t253, ptr %a270 - call void @finch_str_drop(ptr %a270) - store { ptr, i64, i64 } %t265, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a267 - %t273 = call { ptr, i64, i64 } @finch.gen.op(ptr %t230, { ptr, i64, i64 } %t272) - store { ptr, i64, i64 } %t272, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t273, ptr %a33 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_drop(ptr %a276) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a65) - call void @finch_str_drop(ptr %a61) - br label %endif8982 -endif8982: - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.5928, i64 8, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.emit(ptr %t277, { ptr, i64, i64 } %t282) - store { ptr, i64, i64 } %t282, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load ptr, ptr %a1 - %t285 = load %S.gen.Saved, ptr %a32 - %t286 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.5929, i64 20, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.5930, i64 16, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - call void @finch.gen.endHelper(ptr %t284, %S.gen.Saved %t285, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a33) - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t297 -} - -define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca %S.gen.Val, align 16 - %a81 = alloca %S.ast.Type, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca %S.gen.Val, 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 - %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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.gen.Val, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a446 = alloca i64, align 16 - %a458 = alloca %S.gen.Val, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca %S.gen.Val, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca %S.ast.Type, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca %S.gen.Val, align 16 - %a621 = alloca %S.ast.Type, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca %S.gen.Val, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a698 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca %S.ast.Type, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %panic8986, label %ok8987 -panic8986: - call void @finch_panic(ptr @.str.5931, i64 5616, ptr @.str.5932) - unreachable -ok8987: - %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 %range8988, label %inrange8989 -range8988: - call void @finch_panic_index(ptr @.str.5933, i64 5616, i64 %t18, i64 %t20) - unreachable -inrange8989: - %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.5934, 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 %then8990, label %endif8992 -then8990: - %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 %range8993, label %inrange8994 -range8993: - call void @finch_panic_index(ptr @.str.5935, i64 5619, i64 1, i64 %t38) - unreachable -inrange8994: - %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.5936, 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 %range8995, label %inrange8996 -range8995: - call void @finch_panic_index(ptr @.str.5937, i64 5619, i64 1, i64 %t47) - unreachable -inrange8996: - %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.5938, i64 9, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = extractvalue { ptr, i64, i64 } %t64, 1 - %t66 = icmp uge i64 2, %t65 - br i1 %t66, label %range8997, label %inrange8998 -range8997: - call void @finch_panic_index(ptr @.str.5939, i64 5620, i64 2, i64 %t65) - unreachable -inrange8998: - %t67 = extractvalue { ptr, i64, i64 } %t64, 0 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 2 - %t69 = load %S.ast.Node, ptr %t68 - %t70 = call %S.gen.Val @finch.gen.expr(ptr %t62, %S.ast.Node %t69) - %t71 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5940, i64 3, i64 0 }) - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 2, %t74 - br i1 %t75, label %range8999, label %inrange9000 -range8999: - call void @finch_panic_index(ptr @.str.5941, i64 5620, i64 2, i64 %t74) - unreachable -inrange9000: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 2 - %t78 = load %S.ast.Node, ptr %t77 - %t79 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t70, %S.ast.Type %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5942, i64 7, i64 0 }) - store %S.gen.Val %t70, ptr %a80 - call void @finch.drop.S_gen_Val(ptr %a80) - store %S.ast.Type %t71, ptr %a81 - call void @finch.drop.S_ast_Type(ptr %a81) - %t82 = extractvalue %S.gen.Val %t79, 0 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_copy(ptr %a84, ptr %a83) - %t85 = load { ptr, i64, i64 }, ptr %a84 - store %S.gen.Val %t79, ptr %a86 - call void @finch.drop.S_gen_Val(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5943, i64 29, i64 0 }, ptr %a91 - store { ptr, i64, i64 } %t89, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5944, i64 6, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t98, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.5945, i64 6, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t109, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t109, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.5946, i64 6, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t120, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5947, i64 6, i64 0 }, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - %t132 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t131, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t131, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.5948, i64 6, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t144 = load i64, ptr %t143 - call void @finch_str_from_int(ptr %a145, i64 %t144) - %t146 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t142, ptr %a148 - store { ptr, i64, i64 } %t146, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t142, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.5949, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load { ptr, i64, i64 }, ptr %a12 - %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.5950, i64 17, i64 0 }, { ptr, i64, i64 } %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5951, i64 3, i64 0 }) - %t164 = insertvalue %S.gen.Val %t162, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 2 - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a60) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t165 -endif8992: - %t166 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.5952, i64 4, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from9001 -logic.from9001: - br i1 %t170, label %logic.end9003, label %logic.rhs9002 -logic.rhs9002: - %t171 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5953, i64 8, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend9004 -logic.rend9004: - br label %logic.end9003 -logic.end9003: - %t176 = phi i1 [ true, %logic.from9001 ], [ %t175, %logic.rend9004 ] - br label %logic.from9005 -logic.from9005: - br i1 %t176, label %logic.end9007, label %logic.rhs9006 -logic.rhs9006: - %t177 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.5954, i64 11, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend9008 -logic.rend9008: - br label %logic.end9007 -logic.end9007: - %t182 = phi i1 [ true, %logic.from9005 ], [ %t181, %logic.rend9008 ] - br label %logic.from9009 -logic.from9009: - br i1 %t182, label %logic.end9011, label %logic.rhs9010 -logic.rhs9010: - %t183 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5955, i64 9, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend9012 -logic.rend9012: - br label %logic.end9011 -logic.end9011: - %t188 = phi i1 [ true, %logic.from9009 ], [ %t187, %logic.rend9012 ] - br i1 %t188, label %then9013, label %endif9015 -then9013: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t189, %S.ast.Node %t190, i64 1) - %t191 = load ptr, ptr %a1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 1, %t194 - br i1 %t195, label %range9016, label %inrange9017 -range9016: - call void @finch_panic_index(ptr @.str.5956, i64 5626, i64 1, i64 %t194) - unreachable -inrange9017: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 1 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = call %S.gen.Val @finch.gen.strArg(ptr %t191, %S.ast.Node %t198, { ptr, i64, i64 } { ptr @.str.5957, i64 20, i64 0 }) - store %S.gen.Val %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load %S.gen.Val, ptr %a200 - %t203 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t201, %S.gen.Val %t202) - store { ptr, i64, i64 } %t203, ptr %a204 - %t205 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.5958, i64 4, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - br i1 %t209, label %then9018, label %endif9020 -then9018: - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5959, i64 29, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.5960, i64 6, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t220, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.5961, i64 1, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - %t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t232, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t235, %S.gen.Val %t236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_copy(ptr %a239, ptr %a238) - %t240 = load { ptr, i64, i64 }, ptr %a239 - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t240, 0 - %t242 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5962, i64 3, i64 0 }) - %t243 = insertvalue %S.gen.Val %t241, %S.ast.Type %t242, 1 - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t243 -endif9020: - %t244 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.5963, i64 8, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then9021, label %endif9023 -then9021: - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5964, i64 29, i64 0 }, ptr %a252 - store { ptr, i64, i64 } %t250, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a251 - store { ptr, i64, i64 } %t254, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.5965, i64 6, i64 0 }, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - store { ptr, i64, i64 } %t254, ptr %a258 - call void @finch_str_drop(ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t259, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a261 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.5966, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - store { ptr, i64, i64 } %t271, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.5967, i64 13, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.5968, i64 3, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t274, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - store { ptr, i64, i64 } %t285, ptr %a287 - %t288 = load ptr, ptr %a1 - %t289 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t288, %S.gen.Val %t289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5969, i64 4, i64 0 }) - %t296 = insertvalue %S.gen.Val %t294, %S.ast.Type %t295, 1 - call void @finch_str_drop(ptr %a287) - call void @finch_str_drop(ptr %a273) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t296 -endif9023: - store { ptr, i64, i64 } { ptr @.str.5970, i64 17, i64 0 }, ptr %a297 - %t298 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t298, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5971, i64 9, i64 0 }, ptr %a300 - %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) - %t302 = icmp ne i32 %t301, 0 - br i1 %t302, label %then9024, label %endif9026 -then9024: - %t303 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5972, i64 15, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif9026 -endif9026: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5973, i64 9, i64 0 }, ptr %a308 - store { ptr, i64, i64 } %t306, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a307 - store { ptr, i64, i64 } %t310, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.5974, i64 5, i64 0 }, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - %t316 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t315, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - store { ptr, i64, i64 } %t315, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t321, ptr %a323 - store { ptr, i64, i64 } { ptr @.str.5975, i64 6, i64 0 }, ptr %a324 - call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) - store { ptr, i64, i64 } %t321, ptr %a325 - call void @finch_str_drop(ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a322 - %t327 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t326, ptr %a329 - store { ptr, i64, i64 } %t327, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t326, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t332, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.5976, i64 1, i64 0 }, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - store { ptr, i64, i64 } %t332, ptr %a336 - call void @finch_str_drop(ptr %a336) - %t337 = load { ptr, i64, i64 }, ptr %a333 - %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t305, { ptr, i64, i64 } %t337) - store { ptr, i64, i64 } %t337, ptr %a339 - call void @finch_str_drop(ptr %a339) - store { ptr, i64, i64 } %t338, ptr %a340 - %t341 = load ptr, ptr %a1 - %t342 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.5977, i64 12, i64 0 }, ptr %a344 - store { ptr, i64, i64 } %t342, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.5978, i64 3, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load { ptr, i64, i64 }, ptr %a354 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_copy(ptr %a359, ptr %a358) - %t360 = load { ptr, i64, i64 }, ptr %a359 - %t361 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t360, 0 - %t362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5979, i64 4, i64 0 }) - %t363 = insertvalue %S.gen.Val %t361, %S.ast.Type %t362, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a340) - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t363 -endif9015: - %t364 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br label %logic.from9027 -logic.from9027: - br i1 %t368, label %logic.end9029, label %logic.rhs9028 -logic.rhs9028: - %t369 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t369, ptr %a370 - store { ptr, i64, i64 } { ptr @.str.5981, i64 5, i64 0 }, ptr %a371 - %t372 = call i32 @finch_str_eq(ptr %a370, ptr %a371) - %t373 = icmp ne i32 %t372, 0 - br label %logic.rend9030 -logic.rend9030: - br label %logic.end9029 -logic.end9029: - %t374 = phi i1 [ true, %logic.from9027 ], [ %t373, %logic.rend9030 ] - br label %logic.from9031 -logic.from9031: - br i1 %t374, label %logic.end9033, label %logic.rhs9032 -logic.rhs9032: - %t375 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t375, ptr %a376 - store { ptr, i64, i64 } { ptr @.str.5982, i64 5, i64 0 }, ptr %a377 - %t378 = call i32 @finch_str_eq(ptr %a376, ptr %a377) - %t379 = icmp ne i32 %t378, 0 - br label %logic.rend9034 -logic.rend9034: - br label %logic.end9033 -logic.end9033: - %t380 = phi i1 [ true, %logic.from9031 ], [ %t379, %logic.rend9034 ] - br i1 %t380, label %then9035, label %endif9037 -then9035: - %t381 = load ptr, ptr %a1 - %t382 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t381, %S.ast.Node %t382, i64 0) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5983, i64 21, i64 0 }, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.5984, i64 5, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t393, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t393, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.5985, i64 6, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t404, ptr %a407 - store { ptr, i64, i64 } %t405, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t404, ptr %a409 - call void @finch_str_drop(ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5986, i64 1, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - call void @finch.gen.emit(ptr %t383, { ptr, i64, i64 } %t415) - store { ptr, i64, i64 } %t415, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load ptr, ptr %a1 - %t418 = load { ptr, i64, i64 }, ptr %a12 - %t419 = call { ptr, i64, i64 } @finch.gen.load(ptr %t417, { ptr, i64, i64 } { ptr @.str.5987, i64 17, i64 0 }, { ptr, i64, i64 } %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5988, i64 3, i64 0 }) - %t422 = insertvalue %S.gen.Val %t420, %S.ast.Type %t421, 1 - %t423 = insertvalue %S.gen.Val %t422, i1 true, 2 - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t423 -endif9037: - %t424 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t424, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.5989, i64 7, i64 0 }, ptr %a426 - %t427 = call i32 @finch_str_eq(ptr %a425, ptr %a426) - %t428 = icmp ne i32 %t427, 0 - br i1 %t428, label %then9038, label %endif9040 -then9038: - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t429, %S.ast.Node %t430, i64 2) - %t431 = load ptr, ptr %a1 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = extractvalue { ptr, i64, i64 } %t433, 1 - %t435 = icmp uge i64 1, %t434 - br i1 %t435, label %range9041, label %inrange9042 -range9041: - call void @finch_panic_index(ptr @.str.5990, i64 5655, i64 1, i64 %t434) - unreachable -inrange9042: - %t436 = extractvalue { ptr, i64, i64 } %t433, 0 - %t437 = getelementptr inbounds %S.ast.Node, ptr %t436, i64 1 - %t438 = load %S.ast.Node, ptr %t437 - %t439 = call %S.gen.Val @finch.gen.strArg(ptr %t431, %S.ast.Node %t438, { ptr, i64, i64 } { ptr @.str.5991, i64 19, i64 0 }) - store %S.gen.Val %t439, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = icmp eq ptr %t441, null - br i1 %t442, label %panic9043, label %ok9044 -panic9043: - call void @finch_panic(ptr @.str.5992, i64 5656, ptr @.str.5993) - unreachable -ok9044: - %t443 = getelementptr inbounds %S.gen.Gen, ptr %t441, i32 0, i32 11 - %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i32 0, i32 1 - %t445 = load i64, ptr %t444 - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load %S.gen.Val, ptr %a440 - call void @finch.gen.hold(ptr %t447, %S.gen.Val %t448) - %t449 = load ptr, ptr %a1 - %t450 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t451 = load { ptr, i64, i64 }, ptr %t450 - %t452 = extractvalue { ptr, i64, i64 } %t451, 1 - %t453 = icmp uge i64 2, %t452 - br i1 %t453, label %range9045, label %inrange9046 -range9045: - call void @finch_panic_index(ptr @.str.5994, i64 5658, i64 2, i64 %t452) - unreachable -inrange9046: - %t454 = extractvalue { ptr, i64, i64 } %t451, 0 - %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 2 - %t456 = load %S.ast.Node, ptr %t455 - %t457 = call %S.gen.Val @finch.gen.strArg(ptr %t449, %S.ast.Node %t456, { ptr, i64, i64 } { ptr @.str.5995, i64 12, i64 0 }) - store %S.gen.Val %t457, ptr %a458 - %t459 = load ptr, ptr %a1 - %t460 = load i64, ptr %a446 - call void @finch.gen.heldEnd(ptr %t459, i64 %t460) - %t461 = load ptr, ptr %a1 - %t462 = load %S.gen.Val, ptr %a440 - %t463 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t461, %S.gen.Val %t462) - store { ptr, i64, i64 } %t463, ptr %a464 - %t465 = load ptr, ptr %a1 - %t466 = load %S.gen.Val, ptr %a458 - %t467 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t465, %S.gen.Val %t466) - store { ptr, i64, i64 } %t467, ptr %a468 - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5996, i64 33, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.5997, i64 6, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - %t480 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t479, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t479, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5998, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - %t491 = load { ptr, i64, i64 }, ptr %a464 - store { ptr, i64, i64 } %t490, ptr %a493 - store { ptr, i64, i64 } %t491, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t490, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5999, i64 6, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - store { ptr, i64, i64 } %t496, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load { ptr, i64, i64 }, ptr %a497 - %t502 = load { ptr, i64, i64 }, ptr %a468 - store { ptr, i64, i64 } %t501, ptr %a504 - store { ptr, i64, i64 } %t502, ptr %a505 - call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a503 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.6000, i64 1, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - call void @finch.gen.emit(ptr %t469, { ptr, i64, i64 } %t512) - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - %t514 = load ptr, ptr %a1 - %t515 = load %S.gen.Val, ptr %a440 - call void @finch.gen.release(ptr %t514, %S.gen.Val %t515) - %t516 = load ptr, ptr %a1 - %t517 = load %S.gen.Val, ptr %a458 - call void @finch.gen.release(ptr %t516, %S.gen.Val %t517) - %t518 = load ptr, ptr %a1 - %t519 = load { ptr, i64, i64 }, ptr %a12 - %t520 = call { ptr, i64, i64 } @finch.gen.load(ptr %t518, { ptr, i64, i64 } { ptr @.str.6001, i64 17, i64 0 }, { ptr, i64, i64 } %t519) - %t521 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t520, 0 - %t522 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6002, i64 3, i64 0 }) - %t523 = insertvalue %S.gen.Val %t521, %S.ast.Type %t522, 1 - %t524 = insertvalue %S.gen.Val %t523, i1 true, 2 - call void @finch_str_drop(ptr %a468) - call void @finch_str_drop(ptr %a464) - call void @finch.drop.S_gen_Val(ptr %a458) - call void @finch.drop.S_gen_Val(ptr %a440) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t524 -endif9040: - %t525 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.6003, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br i1 %t529, label %then9047, label %endif9049 -then9047: - %t530 = load ptr, ptr %a1 - %t531 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t530, %S.ast.Node %t531, i64 1) - %t532 = load ptr, ptr %a1 - %t533 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t534 = load { ptr, i64, i64 }, ptr %t533 - %t535 = extractvalue { ptr, i64, i64 } %t534, 1 - %t536 = icmp uge i64 1, %t535 - br i1 %t536, label %range9050, label %inrange9051 -range9050: - call void @finch_panic_index(ptr @.str.6004, i64 5669, i64 1, i64 %t535) - unreachable -inrange9051: - %t537 = extractvalue { ptr, i64, i64 } %t534, 0 - %t538 = getelementptr inbounds %S.ast.Node, ptr %t537, i64 1 - %t539 = load %S.ast.Node, ptr %t538 - %t540 = call %S.gen.Val @finch.gen.strArg(ptr %t532, %S.ast.Node %t539, { ptr, i64, i64 } { ptr @.str.6005, i64 13, i64 0 }) - store %S.gen.Val %t540, ptr %a541 - %t542 = load ptr, ptr %a1 - %t543 = load %S.gen.Val, ptr %a541 - %t544 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t542, %S.gen.Val %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t546) - store { ptr, i64, i64 } %t547, ptr %a548 - %t549 = load ptr, ptr %a1 - %t550 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.6006, i64 31, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t554, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.6007, i64 6, i64 0 }, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - store { ptr, i64, i64 } %t554, ptr %a558 - call void @finch_str_drop(ptr %a558) - %t559 = load { ptr, i64, i64 }, ptr %a555 - %t560 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t559, ptr %a562 - store { ptr, i64, i64 } %t560, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t559, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - store { ptr, i64, i64 } %t565, ptr %a567 - store { ptr, i64, i64 } { ptr @.str.6008, i64 6, i64 0 }, ptr %a568 - call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) - store { ptr, i64, i64 } %t565, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a566 - %t571 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } %t570, ptr %a573 - store { ptr, i64, i64 } %t571, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t570, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - store { ptr, i64, i64 } %t576, ptr %a578 - store { ptr, i64, i64 } { ptr @.str.6009, i64 1, i64 0 }, ptr %a579 - call void @finch_str_concat(ptr %a577, ptr %a578, ptr %a579) - store { ptr, i64, i64 } %t576, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a577 - call void @finch.gen.emit(ptr %t549, { ptr, i64, i64 } %t581) - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load ptr, ptr %a1 - %t584 = load %S.gen.Val, ptr %a541 - call void @finch.gen.release(ptr %t583, %S.gen.Val %t584) - %t585 = load ptr, ptr %a1 - %t586 = load { ptr, i64, i64 }, ptr %a548 - %t587 = call { ptr, i64, i64 } @finch.gen.load(ptr %t585, { ptr, i64, i64 } { ptr @.str.6010, i64 17, i64 0 }, { ptr, i64, i64 } %t586) - %t588 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t587, 0 - %t589 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6011, i64 3, i64 0 }) - %t590 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t589) - store %S.ast.Type %t589, ptr %a591 - call void @finch.drop.S_ast_Type(ptr %a591) - %t592 = insertvalue %S.gen.Val %t588, %S.ast.Type %t590, 1 - %t593 = insertvalue %S.gen.Val %t592, i1 true, 2 - call void @finch_str_drop(ptr %a548) - call void @finch_str_drop(ptr %a545) - call void @finch.drop.S_gen_Val(ptr %a541) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t593 -endif9049: - %t594 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t594, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.6012, i64 6, i64 0 }, ptr %a596 - %t597 = call i32 @finch_str_eq(ptr %a595, ptr %a596) - %t598 = icmp ne i32 %t597, 0 - br i1 %t598, label %then9052, label %endif9054 -then9052: - %t599 = load ptr, ptr %a1 - %t600 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t599, %S.ast.Node %t600, i64 1) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t604 = load { ptr, i64, i64 }, ptr %t603 - %t605 = extractvalue { ptr, i64, i64 } %t604, 1 - %t606 = icmp uge i64 1, %t605 - br i1 %t606, label %range9055, label %inrange9056 -range9055: - call void @finch_panic_index(ptr @.str.6013, i64 5678, i64 1, i64 %t605) - unreachable -inrange9056: - %t607 = extractvalue { ptr, i64, i64 } %t604, 0 - %t608 = getelementptr inbounds %S.ast.Node, ptr %t607, i64 1 - %t609 = load %S.ast.Node, ptr %t608 - %t610 = call %S.gen.Val @finch.gen.expr(ptr %t602, %S.ast.Node %t609) - %t611 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6014, i64 3, i64 0 }) - %t612 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t613 = load { ptr, i64, i64 }, ptr %t612 - %t614 = extractvalue { ptr, i64, i64 } %t613, 1 - %t615 = icmp uge i64 1, %t614 - br i1 %t615, label %range9057, label %inrange9058 -range9057: - call void @finch_panic_index(ptr @.str.6015, i64 5678, i64 1, i64 %t614) - unreachable -inrange9058: - %t616 = extractvalue { ptr, i64, i64 } %t613, 0 - %t617 = getelementptr inbounds %S.ast.Node, ptr %t616, i64 1 - %t618 = load %S.ast.Node, ptr %t617 - %t619 = call %S.gen.Val @finch.gen.coerce(ptr %t601, %S.gen.Val %t610, %S.ast.Type %t611, %S.ast.Node %t618, { ptr, i64, i64 } { ptr @.str.6016, i64 9, i64 0 }) - store %S.gen.Val %t610, ptr %a620 - call void @finch.drop.S_gen_Val(ptr %a620) - store %S.ast.Type %t611, ptr %a621 - call void @finch.drop.S_ast_Type(ptr %a621) - %t622 = extractvalue %S.gen.Val %t619, 0 - store { ptr, i64, i64 } %t622, ptr %a623 - call void @finch_str_copy(ptr %a624, ptr %a623) - %t625 = load { ptr, i64, i64 }, ptr %a624 - store %S.gen.Val %t619, ptr %a626 - call void @finch.drop.S_gen_Val(ptr %a626) - store { ptr, i64, i64 } %t625, ptr %a627 - %t628 = load ptr, ptr %a1 - %t629 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.6017, i64 32, i64 0 }, ptr %a631 - store { ptr, i64, i64 } %t629, ptr %a632 - call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a630 - store { ptr, i64, i64 } %t633, ptr %a635 - store { ptr, i64, i64 } { ptr @.str.6018, i64 6, i64 0 }, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t633, ptr %a637 - call void @finch_str_drop(ptr %a637) - %t638 = load { ptr, i64, i64 }, ptr %a634 - %t639 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t638, ptr %a641 - store { ptr, i64, i64 } %t639, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t638, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - store { ptr, i64, i64 } %t644, ptr %a646 - store { ptr, i64, i64 } { ptr @.str.6019, i64 6, i64 0 }, ptr %a647 - call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) - store { ptr, i64, i64 } %t644, ptr %a648 - call void @finch_str_drop(ptr %a648) - %t649 = load { ptr, i64, i64 }, ptr %a645 - %t650 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t649, ptr %a652 - store { ptr, i64, i64 } %t650, ptr %a653 - call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) - store { ptr, i64, i64 } %t649, ptr %a654 - call void @finch_str_drop(ptr %a654) - %t655 = load { ptr, i64, i64 }, ptr %a651 - store { ptr, i64, i64 } %t655, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.6020, i64 1, i64 0 }, ptr %a658 - call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) - store { ptr, i64, i64 } %t655, ptr %a659 - call void @finch_str_drop(ptr %a659) - %t660 = load { ptr, i64, i64 }, ptr %a656 - call void @finch.gen.emit(ptr %t628, { ptr, i64, i64 } %t660) - store { ptr, i64, i64 } %t660, ptr %a661 - call void @finch_str_drop(ptr %a661) - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a12 - %t664 = call { ptr, i64, i64 } @finch.gen.load(ptr %t662, { ptr, i64, i64 } { ptr @.str.6021, i64 17, i64 0 }, { ptr, i64, i64 } %t663) - %t665 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t664, 0 - %t666 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6022, i64 3, i64 0 }) - %t667 = insertvalue %S.gen.Val %t665, %S.ast.Type %t666, 1 - %t668 = insertvalue %S.gen.Val %t667, i1 true, 2 - call void @finch_str_drop(ptr %a627) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t668 -endif9054: - %t669 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t669, ptr %a670 - store { ptr, i64, i64 } { ptr @.str.6023, i64 5, i64 0 }, ptr %a671 - %t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671) - %t673 = icmp ne i32 %t672, 0 - br i1 %t673, label %then9059, label %endif9061 -then9059: - %t674 = load ptr, ptr %a1 - %t675 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 0) - %t676 = load ptr, ptr %a1 - %t677 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t676) - store { ptr, i64, i64 } %t677, ptr %a678 - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } { ptr @.str.6024, i64 36, i64 0 }, ptr %a682 - store { ptr, i64, i64 } %t680, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - %t684 = load { ptr, i64, i64 }, ptr %a681 - store { ptr, i64, i64 } %t684, ptr %a686 - store { ptr, i64, i64 } { ptr @.str.6025, i64 6, i64 0 }, ptr %a687 - call void @finch_str_concat(ptr %a685, ptr %a686, ptr %a687) - store { ptr, i64, i64 } %t684, ptr %a688 - call void @finch_str_drop(ptr %a688) - %t689 = load { ptr, i64, i64 }, ptr %a685 - %t690 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t689, ptr %a692 - store { ptr, i64, i64 } %t690, ptr %a693 - call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) - store { ptr, i64, i64 } %t689, ptr %a694 - call void @finch_str_drop(ptr %a694) - %t695 = load { ptr, i64, i64 }, ptr %a691 - store { ptr, i64, i64 } %t695, ptr %a697 - store { ptr, i64, i64 } { ptr @.str.6026, i64 1, i64 0 }, ptr %a698 - call void @finch_str_concat(ptr %a696, ptr %a697, ptr %a698) - store { ptr, i64, i64 } %t695, ptr %a699 - call void @finch_str_drop(ptr %a699) - %t700 = load { ptr, i64, i64 }, ptr %a696 - call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t700) - store { ptr, i64, i64 } %t700, ptr %a701 - call void @finch_str_drop(ptr %a701) - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a678 - %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.6027, i64 17, i64 0 }, { ptr, i64, i64 } %t703) - %t705 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t704, 0 - %t706 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6028, i64 2, i64 0 }) - %t707 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t706) - store %S.ast.Type %t706, ptr %a708 - call void @finch.drop.S_ast_Type(ptr %a708) - %t709 = insertvalue %S.gen.Val %t705, %S.ast.Type %t707, 1 - %t710 = insertvalue %S.gen.Val %t709, i1 true, 2 - call void @finch_str_drop(ptr %a678) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t710 -endif9061: - %t711 = load ptr, ptr %a1 - %t712 = load %S.ast.Node, ptr %a2 - %t713 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.6029, i64 21, i64 0 }, ptr %a715 - store { ptr, i64, i64 } %t713, ptr %a716 - call void @finch_str_concat(ptr %a714, ptr %a715, ptr %a716) - %t717 = load { ptr, i64, i64 }, ptr %a714 - store { ptr, i64, i64 } %t717, ptr %a719 - store { ptr, i64, i64 } { ptr @.str.6030, i64 106, i64 0 }, ptr %a720 - call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) - store { ptr, i64, i64 } %t717, ptr %a721 - call void @finch_str_drop(ptr %a721) - %t722 = load { ptr, i64, i64 }, ptr %a718 - call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t722) - store { ptr, i64, i64 } %t722, ptr %a723 - call void @finch_str_drop(ptr %a723) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val zeroinitializer -} - -define internal { ptr, i64, i64 } @finch.gen.runtimeDecls() { -entry: - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %t1 = mul i64 74, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t2 = call ptr @finch_alloc(i64 %t1) - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 - store { ptr, i64, i64 } { ptr @.str.6031, i64 54, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6032, i64 65, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6033, i64 29, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6034, i64 38, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6035, i64 33, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6036, i64 33, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6037, i64 33, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6038, i64 32, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6039, i64 45, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6040, i64 35, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6041, i64 36, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6042, i64 42, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6043, i64 37, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6044, i64 38, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6045, i64 42, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6046, i64 38, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6047, i64 37, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6048, i64 42, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6049, i64 42, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6050, i64 34, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6051, i64 42, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6052, i64 43, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 - store { ptr, i64, i64 } { ptr @.str.6053, i64 47, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 - store { ptr, i64, i64 } { ptr @.str.6054, i64 50, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24 - store { ptr, i64, i64 } { ptr @.str.6055, i64 43, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 - store { ptr, i64, i64 } { ptr @.str.6056, i64 44, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 - store { ptr, i64, i64 } { ptr @.str.6057, i64 49, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27 - store { ptr, i64, i64 } { ptr @.str.6058, i64 57, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 - store { ptr, i64, i64 } { ptr @.str.6059, i64 37, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 - store { ptr, i64, i64 } { ptr @.str.6060, i64 39, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30 - store { ptr, i64, i64 } { ptr @.str.6061, i64 37, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 - store { ptr, i64, i64 } { ptr @.str.6062, i64 38, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 - store { ptr, i64, i64 } { ptr @.str.6063, i64 39, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33 - store { ptr, i64, i64 } { ptr @.str.6064, i64 39, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 - store { ptr, i64, i64 } { ptr @.str.6065, i64 51, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 - store { ptr, i64, i64 } { ptr @.str.6066, i64 44, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36 - store { ptr, i64, i64 } { ptr @.str.6067, i64 43, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 - store { ptr, i64, i64 } { ptr @.str.6068, i64 45, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 - store { ptr, i64, i64 } { ptr @.str.6069, i64 44, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39 - store { ptr, i64, i64 } { ptr @.str.6070, i64 52, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 - store { ptr, i64, i64 } { ptr @.str.6071, i64 57, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 - store { ptr, i64, i64 } { ptr @.str.6072, i64 48, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42 - store { ptr, i64, i64 } { ptr @.str.6073, i64 34, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 - store { ptr, i64, i64 } { ptr @.str.6074, i64 48, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 - store { ptr, i64, i64 } { ptr @.str.6075, i64 60, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45 - store { ptr, i64, i64 } { ptr @.str.6076, i64 55, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 - store { ptr, i64, i64 } { ptr @.str.6077, i64 46, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 - store { ptr, i64, i64 } { ptr @.str.6078, i64 48, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48 - store { ptr, i64, i64 } { ptr @.str.6079, i64 43, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 - store { ptr, i64, i64 } { ptr @.str.6080, i64 45, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 - store { ptr, i64, i64 } { ptr @.str.6081, i64 59, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51 - store { ptr, i64, i64 } { ptr @.str.6082, i64 49, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 - store { ptr, i64, i64 } { ptr @.str.6083, i64 39, i64 0 }, ptr %t55 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 - store { ptr, i64, i64 } { ptr @.str.6084, i64 39, i64 0 }, ptr %t56 - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54 - store { ptr, i64, i64 } { ptr @.str.6085, i64 35, i64 0 }, ptr %t57 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 - store { ptr, i64, i64 } { ptr @.str.6086, i64 35, i64 0 }, ptr %t58 - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 - store { ptr, i64, i64 } { ptr @.str.6087, i64 45, i64 0 }, ptr %t59 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57 - store { ptr, i64, i64 } { ptr @.str.6088, i64 47, i64 0 }, ptr %t60 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 - store { ptr, i64, i64 } { ptr @.str.6089, i64 47, i64 0 }, ptr %t61 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 - store { ptr, i64, i64 } { ptr @.str.6090, i64 48, i64 0 }, ptr %t62 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60 - store { ptr, i64, i64 } { ptr @.str.6091, i64 44, i64 0 }, ptr %t63 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 - store { ptr, i64, i64 } { ptr @.str.6092, i64 37, i64 0 }, ptr %t64 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 - store { ptr, i64, i64 } { ptr @.str.6093, i64 49, i64 0 }, ptr %t65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63 - store { ptr, i64, i64 } { ptr @.str.6094, i64 39, i64 0 }, ptr %t66 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 - store { ptr, i64, i64 } { ptr @.str.6095, i64 29, i64 0 }, ptr %t67 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 - store { ptr, i64, i64 } { ptr @.str.6096, i64 35, i64 0 }, ptr %t68 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66 - store { ptr, i64, i64 } { ptr @.str.6097, i64 29, i64 0 }, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 - store { ptr, i64, i64 } { ptr @.str.6098, i64 24, i64 0 }, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 - store { ptr, i64, i64 } { ptr @.str.6099, i64 40, i64 0 }, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69 - store { ptr, i64, i64 } { ptr @.str.6100, i64 33, i64 0 }, ptr %t72 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70 - store { ptr, i64, i64 } { ptr @.str.6101, i64 34, i64 0 }, ptr %t73 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 71 - store { ptr, i64, i64 } { ptr @.str.6102, i64 44, i64 0 }, ptr %t74 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 72 - store { ptr, i64, i64 } { ptr @.str.6103, i64 32, i64 0 }, ptr %t75 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 73 - store { ptr, i64, i64 } { ptr @.str.6104, i64 23, i64 0 }, ptr %t76 - %t77 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t78 = insertvalue { ptr, i64, i64 } %t77, i64 74, 1 - %t79 = insertvalue { ptr, i64, i64 } %t78, i64 74, 2 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a80, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6105, i64 1, i64 0 }, ptr %a82 - call void @finch_str_join(ptr %a83, ptr %a80, ptr %a82) - %t84 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.6106, i64 1, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.drop.arr_str(ptr %a80) - ret { ptr, i64, i64 } %t89 -} - -define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6107, i64 52, i64 0 }, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic9062, label %ok9063 -panic9062: - call void @finch_panic(ptr @.str.6108, i64 5776, ptr @.str.6109) - unreachable -ok9063: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 - %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 - %t7 = load i1, ptr %t6 - br label %logic.from9064 -logic.from9064: - br i1 %t7, label %logic.end9066, label %logic.rhs9065 -logic.rhs9065: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic9067, label %ok9068 -panic9067: - call void @finch_panic(ptr @.str.6110, i64 5776, ptr @.str.6111) - unreachable -ok9068: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 31 - %t11 = getelementptr inbounds %S.platform.Target, ptr %t10, i32 0, i32 1 - %t12 = load i1, ptr %t11 - br label %logic.rend9069 -logic.rend9069: - br label %logic.end9066 -logic.end9066: - %t13 = phi i1 [ true, %logic.from9064 ], [ %t12, %logic.rend9069 ] - br i1 %t13, label %then9070, label %endif9072 -then9070: - %t14 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6112, i64 17, 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, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic9073, label %ok9074 -panic9073: - call void @finch_panic(ptr @.str.6113, i64 5777, ptr @.str.6114) - unreachable -ok9074: - %t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 31 - %t22 = getelementptr inbounds %S.platform.Target, ptr %t21, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t18, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t18, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6115, i64 3, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif9072 -endif9072: - %t36 = load { ptr, i64, i64 }, ptr %a2 - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic9075, label %ok9076 -panic9075: - call void @finch_panic(ptr @.str.6116, i64 5779, ptr @.str.6117) - unreachable -ok9076: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6118, i64 1, i64 0 }, ptr %a41 - call void @finch_str_join(ptr %a42, ptr %t39, ptr %a41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t36, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6119, i64 2, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - store { ptr, i64, i64 } %t54, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.6120, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t65, ptr %a2 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic9077, label %ok9078 -panic9077: - call void @finch_panic(ptr @.str.6121, i64 5780, ptr @.str.6122) - unreachable -ok9078: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 30 - %t71 = load i1, ptr %t70 - br i1 %t71, label %then9079, label %endif9081 -then9079: - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6123, i64 62, 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, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a2 - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif9081 -endif9081: - %t79 = load { ptr, i64, i64 }, ptr %a2 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9082, label %ok9083 -panic9082: - call void @finch_panic(ptr @.str.6124, i64 5783, ptr @.str.6125) - unreachable -ok9083: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 3 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6126, i64 1, 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 } %t79, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t91, ptr %a2 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic9084, label %ok9085 -panic9084: - call void @finch_panic(ptr @.str.6127, i64 5784, ptr @.str.6128) - unreachable -ok9085: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 30 - %t97 = load i1, ptr %t96 - br i1 %t97, label %then9086, label %endif9088 -then9086: - %t98 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6129, i64 1, 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 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - %t111 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t110, ptr %a2 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif9088 -endif9088: - %t113 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t113 -} - -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.cond9089 -n.cond9089: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9090, label %n.end9091 -n.body9090: - %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.cond9089 -n.end9091: - 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.cond9092 -n.cond9092: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9093, label %n.end9094 -n.body9093: - %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.live9095, label %entry.next9096 -entry.live9095: - %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.next9096 -entry.next9096: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9092 -n.end9094: - 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.cond9097 -n.cond9097: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9098, label %n.end9099 -n.body9098: - %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.live9100, label %entry.next9101 -entry.live9100: - %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.next9101 -entry.next9101: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9097 -n.end9099: - 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.cond9102 -n.cond9102: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9103, label %n.end9104 -n.body9103: - %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.live9105, label %entry.next9106 -entry.live9105: - %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.next9106 -entry.next9106: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9102 -n.end9104: - 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.cond9107 -n.cond9107: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9108, label %n.end9109 -n.body9108: - %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.live9110, label %entry.next9111 -entry.live9110: - %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.next9111 -entry.next9111: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9107 -n.end9109: - 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 void @finch.drop.arr_S_gen_Pending(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9180 -n.cond9180: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9181, label %n.end9182 -n.body9181: - %t7 = getelementptr inbounds %S.gen.Pending, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Pending(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9180 -n.end9182: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Loop(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9183 -n.cond9183: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9184, label %n.end9185 -n.body9184: - %t7 = getelementptr inbounds %S.gen.Loop, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Loop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9183 -n.end9185: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_FnSig(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9186 -n.cond9186: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9187, label %n.end9188 -n.body9187: - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_FnSig(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9186 -n.end9188: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_StructDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9189 -n.cond9189: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9190, label %n.end9191 -n.body9190: - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_StructDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9189 -n.end9191: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Template(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9192 -n.cond9192: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9193, label %n.end9194 -n.body9193: - %t7 = getelementptr inbounds %S.gen.Template, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Template(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9192 -n.end9194: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_EnumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9195 -n.cond9195: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9196, label %n.end9197 -n.body9196: - %t7 = getelementptr inbounds %S.gen.EnumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_EnumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9195 -n.end9197: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_SumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9198 -n.cond9198: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9199, label %n.end9200 -n.body9199: - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_SumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9198 -n.end9200: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_int(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9201 -n.cond9201: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9202, label %n.end9203 -n.body9202: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9204, label %entry.next9205 -entry.live9204: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 2 - br label %entry.next9205 -entry.next9205: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9201 -n.end9203: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Gen(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_S_gen_Scope(ptr %t7) - %t8 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_S_gen_Pending(ptr %t8) - %t9 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_gen_Loop(ptr %t9) - %t10 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 13 - call void @finch.drop.S_gen_FnSig(ptr %t10) - %t11 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 14 - call void @finch_str_drop(ptr %t11) - %t12 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_S_gen_FnSig(ptr %t12) - %t13 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 16 - call void @finch.drop.arr_S_gen_StructDef(ptr %t13) - %t14 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 17 - call void @finch.drop.arr_S_gen_Template(ptr %t14) - %t15 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 18 - call void @finch.drop.arr_str(ptr %t15) - %t16 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 19 - call void @finch.drop.arr_S_ast_Type(ptr %t16) - %t17 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 20 - call void @finch_str_drop(ptr %t17) - %t18 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 21 - call void @finch.drop.arr_S_gen_EnumDef(ptr %t18) - %t19 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 22 - call void @finch.drop.arr_S_gen_SumDef(ptr %t19) - %t20 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 23 - call void @finch.drop.arr_str(ptr %t20) - %t21 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 24 - call void @finch.drop.arr_str(ptr %t21) - %t22 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 26 - call void @finch.drop.S_cimport_CImports(ptr %t22) - %t23 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 29 - call void @finch.drop.arr_str(ptr %t23) - %t24 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 31 - call void @finch.drop.S_platform_Target(ptr %t24) - %t25 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 32 - call void @finch_str_drop(ptr %t25) - %t26 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 33 - call void @finch.drop.arr_str(ptr %t26) - %t27 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 34 - call void @finch.drop.map_str_int(ptr %t27) - %t28 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 35 - call void @finch.drop.arr_int(ptr %t28) - %t29 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 40 - call void @finch.drop.arr_str(ptr %t29) - %t30 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 41 - call void @finch_str_drop(ptr %t30) - %t31 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 42 - call void @finch_str_drop(ptr %t31) - %t32 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 43 - call void @finch_str_drop(ptr %t32) - 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 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca i64, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca i64, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca %S.gen.FnSig, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca %S.gen.FnSig, align 16 - %a318 = alloca %S.gen.FnSig, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %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 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.cimport.CImports %p2, ptr %a3 - 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, 26 - %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, 27 - %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, 28 - %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, 30 - %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, 31 - %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, 32 - %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 36 - 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 %panic9112, label %ok9113 -panic9112: - call void @finch_panic(ptr @.str.6130, i64 5794, ptr @.str.6131) - unreachable -ok9113: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 30 - %t50 = load i1, ptr %t49 - br i1 %t50, label %then9114, label %endif9116 -then9114: - %t51 = load ptr, ptr %a46 - %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic9117, label %ok9118 -panic9117: - call void @finch_panic(ptr @.str.6132, i64 5796, ptr @.str.6133) - unreachable -ok9118: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 33 - %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.6134, 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 %panic9119, label %ok9120 -panic9119: - call void @finch_panic(ptr @.str.6135, i64 5797, ptr @.str.6136) - unreachable -ok9120: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 33 - %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.6137, 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 %panic9121, label %ok9122 -panic9121: - call void @finch_panic(ptr @.str.6138, i64 5798, ptr @.str.6139) - unreachable -ok9122: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 33 - %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.6140, i64 38, i64 0 }, ptr %t74 - store i64 %t72, ptr %t70 - store i64 0, ptr %a75 - br label %each.cond9123 -each.cond9123: - %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.body9124, label %each.end9126 -each.body9124: - %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 %panic9127, label %ok9128 -panic9127: - call void @finch_panic(ptr @.str.6141, i64 5800, ptr @.str.6142) - unreachable -ok9128: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 35 - %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.6143, 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.6144, i64 15, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load ptr, ptr %a46 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic9129, label %ok9130 -panic9129: - call void @finch_panic(ptr @.str.6145, i64 5800, ptr @.str.6146) - unreachable -ok9130: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 32 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t98, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t98, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6147, i64 2, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t112) - store { ptr, i64, i64 } %t112, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load i64, ptr %t87 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t116, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t86 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t115 - store i64 %t113, ptr %t118 - store i64 %t116, ptr %t87 - br label %each.step9125 -each.step9125: - %t119 = load i64, ptr %a75 - %t120 = add i64 %t119, 1 - store i64 %t120, ptr %a75 - br label %each.cond9123 -each.end9126: - %t121 = load ptr, ptr %a46 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic9131, label %ok9132 -panic9131: - call void @finch_panic(ptr @.str.6149, i64 5802, ptr @.str.6150) - unreachable -ok9132: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 35 - %t124 = load { ptr, i64, i64 }, ptr %t123 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 0, %t125 - br i1 %t126, label %range9133, label %inrange9134 -range9133: - call void @finch_panic_index(ptr @.str.6151, i64 5802, i64 0, i64 %t125) - unreachable -inrange9134: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds i64, ptr %t127, i64 0 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6148, i64 52, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6152, i64 84, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load ptr, ptr %a46 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic9135, label %ok9136 -panic9135: - call void @finch_panic(ptr @.str.6153, i64 5802, ptr @.str.6154) - unreachable -ok9136: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 33 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 0, %t146 - br i1 %t147, label %range9137, label %inrange9138 -range9137: - call void @finch_panic_index(ptr @.str.6155, i64 5802, i64 0, i64 %t146) - unreachable -inrange9138: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t141, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif9116 -endif9116: - %t152 = load ptr, ptr %a46 - call void @finch.gen.declare(ptr %t152) - %t153 = load ptr, ptr %a46 - %t154 = call i64 @finch.gen.findFn(ptr %t153, { ptr, i64, i64 } { ptr @.str.6156, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6157, i64 4, i64 0 }) - store i64 %t154, ptr %a155 - %t156 = load i1, ptr %a7 - br i1 %t156, label %then9139, label %else9140 -then9139: - %t157 = load i64, ptr %a155 - %t158 = icmp sge i64 %t157, 0 - br i1 %t158, label %then9142, label %endif9144 -then9142: - %t159 = load ptr, ptr %a46 - %t160 = load ptr, ptr %a46 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic9145, label %ok9146 -panic9145: - call void @finch_panic(ptr @.str.6158, i64 5808, ptr @.str.6159) - unreachable -ok9146: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 0 - %t163 = load ptr, ptr %a46 - %t164 = icmp eq ptr %t163, null - br i1 %t164, label %panic9147, label %ok9148 -panic9147: - call void @finch_panic(ptr @.str.6160, i64 5808, ptr @.str.6161) - unreachable -ok9148: - %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 15 - %t166 = load i64, ptr %a155 - %t167 = load { ptr, i64, i64 }, ptr %t165 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range9149, label %inrange9150 -range9149: - call void @finch_panic_index(ptr @.str.6162, i64 5808, i64 %t166, i64 %t168) - unreachable -inrange9150: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.FnSig, ptr %t170, i64 %t166 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %t171, i32 0, i32 16 - %t173 = load i64, ptr %t172 - %t174 = load { ptr, i64, i64 }, ptr %t162 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range9151, label %inrange9152 -range9151: - call void @finch_panic_index(ptr @.str.6163, i64 5808, i64 %t173, i64 %t175) - unreachable -inrange9152: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Program, ptr %t178, i32 0, i32 8 - %t180 = load ptr, ptr %a46 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic9153, label %ok9154 -panic9153: - call void @finch_panic(ptr @.str.6164, i64 5808, ptr @.str.6165) - unreachable -ok9154: - %t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 15 - %t183 = load i64, ptr %a155 - %t184 = load { ptr, i64, i64 }, ptr %t182 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range9155, label %inrange9156 -range9155: - call void @finch_panic_index(ptr @.str.6166, i64 5808, i64 %t183, i64 %t185) - unreachable -inrange9156: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i64 %t183 - %t189 = getelementptr inbounds %S.gen.FnSig, ptr %t188, i32 0, i32 17 - %t190 = load i64, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %t179 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 %t190, %t192 - br i1 %t193, label %range9157, label %inrange9158 -range9157: - call void @finch_panic_index(ptr @.str.6167, i64 5808, i64 %t190, i64 %t192) - unreachable -inrange9158: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t190 - %t196 = load %S.ast.Node, ptr %t195 - call void @finch.gen.fail(ptr %t159, %S.ast.Node %t196, { ptr, i64, i64 } { ptr @.str.6168, i64 82, i64 0 }) - br label %endif9144 -endif9144: - br label %endif9141 -else9140: - %t197 = load i64, ptr %a155 - %t198 = icmp slt i64 %t197, 0 - br i1 %t198, label %then9159, label %endif9161 -then9159: - %t199 = load { ptr, i64, i64 }, ptr %a2 - %t200 = extractvalue { ptr, i64, i64 } %t199, 1 - %t201 = icmp uge i64 0, %t200 - br i1 %t201, label %range9162, label %inrange9163 -range9162: - call void @finch_panic_index(ptr @.str.6169, i64 5811, i64 0, i64 %t200) - unreachable -inrange9163: - %t202 = extractvalue { ptr, i64, i64 } %t199, 0 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 0 - %t204 = load { ptr, i64, i64 }, ptr %t203 - store { ptr, i64, i64 } %t204, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.6170, i64 64, i64 0 }, ptr %a207 - call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a205 - %t209 = extractvalue { ptr, i64, i64 } %t208, 1 - %t210 = trunc i64 %t209 to i32 - %t211 = extractvalue { ptr, i64, i64 } %t208, 0 - %t212 = icmp eq ptr %t211, null - %t213 = select i1 %t212, ptr @.str.6171, ptr %t211 - %t214 = call i32 (ptr, ...) @printf(ptr @.str.6172, i32 %t210, ptr %t213) - store { ptr, i64, i64 } %t208, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = call i32 (ptr, ...) @printf(ptr @.str.6173) - %t217 = trunc i64 1 to i32 - %t218 = call i32 @fflush(ptr null) - call void @exit(i32 %t217) - br label %endif9161 -endif9161: - br label %endif9141 -endif9141: - store i64 0, ptr %a219 - br label %while.cond9164 -while.cond9164: - %t220 = load i64, ptr %a219 - %t221 = load ptr, ptr %a46 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic9167, label %ok9168 -panic9167: - call void @finch_panic(ptr @.str.6174, i64 5816, ptr @.str.6175) - unreachable -ok9168: - %t223 = getelementptr inbounds %S.gen.Gen, ptr %t221, i32 0, i32 15 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp slt i64 %t220, %t225 - br i1 %t226, label %while.body9165, label %while.end9166 -while.body9165: - %t227 = load ptr, ptr %a46 - %t228 = load i64, ptr %a219 - call void @finch.gen.define(ptr %t227, i64 %t228) - %t229 = load i64, ptr %a219 - %t230 = add i64 %t229, 1 - store i64 %t230, ptr %a219 - br label %while.cond9164 -while.end9166: - %t231 = load ptr, ptr %a46 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic9169, label %ok9170 -panic9169: - call void @finch_panic(ptr @.str.6176, i64 5820, ptr @.str.6177) - unreachable -ok9170: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 28 - %t234 = load i1, ptr %t233 - br i1 %t234, label %then9171, label %endif9173 -then9171: - %t235 = load ptr, ptr %a46 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic9174, label %ok9175 -panic9174: - call void @finch_panic(ptr @.str.6178, i64 5821, ptr @.str.6179) - unreachable -ok9175: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range9176, label %inrange9177 -range9176: - call void @finch_panic_index(ptr @.str.6180, i64 5821, i64 0, i64 %t239) - unreachable -inrange9177: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.ast.Program, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.ast.Program, ptr %t242, i32 0, i32 2 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.copy.arr_str(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t247, ptr %a248 - %t249 = load ptr, ptr %a46 - %t250 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.indexAll(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a46 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic9178, label %ok9179 -panic9178: - call void @finch_panic(ptr @.str.6181, i64 5823, ptr @.str.6182) - unreachable -ok9179: - %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 29 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6183, i64 1, i64 0 }, ptr %a255 - call void @finch_str_join(ptr %a256, ptr %t253, ptr %a255) - %t257 = load { ptr, i64, i64 }, ptr %a256 - call void @finch.drop.arr_str(ptr %a248) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t257 -endif9173: - %t258 = load ptr, ptr %a46 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic9206, label %ok9207 -panic9206: - call void @finch_panic(ptr @.str.6184, i64 5825, ptr @.str.6185) - unreachable -ok9207: - %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 15 - store i64 0, ptr %a261 - br label %each.cond9208 -each.cond9208: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body9209, label %each.end9211 -each.body9209: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i64 %t264 - %t268 = load %S.gen.FnSig, ptr %t267 - store %S.gen.FnSig %t268, ptr %a269 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a269, i32 0, i32 5 - %t271 = load i1, ptr %t270 - br i1 %t271, label %then9212, label %endif9214 -then9212: - %t272 = load ptr, ptr %a46 - %t273 = load %S.gen.FnSig, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t272, %S.gen.FnSig %t273) - store { ptr, i64, i64 } %t274, ptr %a275 - call void @finch_str_drop(ptr %a275) - br label %endif9214 -endif9214: - br label %each.step9210 -each.step9210: - %t276 = load i64, ptr %a261 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a261 - br label %each.cond9208 -each.end9211: - %t278 = load i1, ptr %a7 - br i1 %t278, label %then9215, label %endif9217 -then9215: - store { ptr, i64, i64 } { ptr @.str.6186, i64 0, i64 0 }, ptr %a279 - %t280 = load ptr, ptr %a46 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic9218, label %ok9219 -panic9218: - call void @finch_panic(ptr @.str.6187, i64 5833, ptr @.str.6188) - unreachable -ok9219: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 31 - %t283 = getelementptr inbounds %S.platform.Target, ptr %t282, i32 0, i32 1 - %t284 = load i1, ptr %t283 - br i1 %t284, label %then9220, label %endif9222 -then9220: - %t285 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6189, i64 10, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif9222 -endif9222: - %t287 = load ptr, ptr %a46 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic9223, label %ok9224 -panic9223: - call void @finch_panic(ptr @.str.6190, i64 5836, ptr @.str.6191) - unreachable -ok9224: - %t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 3 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6192, i64 6, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.6193, i64 107, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = load i64, ptr %t290 - %t302 = add i64 %t301, 1 - call void @finch_arr_reserve(ptr %t289, i64 %t302, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t303 = load ptr, ptr %t289 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t303, i64 %t301 - store { ptr, i64, i64 } %t300, ptr %t304 - store i64 %t302, ptr %t290 - %t305 = load ptr, ptr %a46 - %t306 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t305) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t306 -endif9217: - %t307 = load ptr, ptr %a46 - %t308 = icmp eq ptr %t307, null - br i1 %t308, label %panic9225, label %ok9226 -panic9225: - call void @finch_panic(ptr @.str.6194, i64 5840, ptr @.str.6195) - unreachable -ok9226: - %t309 = getelementptr inbounds %S.gen.Gen, ptr %t307, i32 0, i32 15 - %t310 = load i64, ptr %a155 - %t311 = load { ptr, i64, i64 }, ptr %t309 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range9227, label %inrange9228 -range9227: - call void @finch_panic_index(ptr @.str.6196, i64 5840, i64 %t310, i64 %t312) - unreachable -inrange9228: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds %S.gen.FnSig, ptr %t314, i64 %t310 - %t316 = load %S.gen.FnSig, ptr %t315 - store %S.gen.FnSig %t316, ptr %a317 - call void @finch.copy.S_gen_FnSig(ptr %a318, ptr %a317) - %t319 = load %S.gen.FnSig, ptr %a318 - store %S.gen.FnSig %t319, ptr %a320 - %t321 = load ptr, ptr %a46 - %t322 = load %S.gen.FnSig, ptr %a320 - %t323 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t321, %S.gen.FnSig %t322) - store { ptr, i64, i64 } { ptr @.str.6197, i64 5, i64 0 }, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t323, ptr %a327 - call void @finch_str_drop(ptr %a327) - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6198, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - store { ptr, i64, i64 } %t328, ptr %a332 - call void @finch_str_drop(ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a329 - %t334 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 11 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t333, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t333, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.6199, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t345, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6200, i64 0, i64 0 }, ptr %a347 - %t348 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 13 - %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i32 0, i32 1 - %t350 = load i64, ptr %t349 - %t351 = icmp eq i64 %t350, 1 - br i1 %t351, label %then9229, label %endif9231 -then9229: - %t352 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6201, i64 133, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6202, i64 20, i64 0 }, ptr %a357 - call void @finch_str_concat(ptr %a355, ptr %a356, ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a355 - %t359 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t358, ptr %a346 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif9231 -endif9231: - %t361 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.6203, i64 1, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a362 - %t366 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t365, ptr %a346 - store { ptr, i64, i64 } %t366, ptr %a367 - call void @finch_str_drop(ptr %a367) - store { ptr, i64, i64 } { ptr @.str.6204, i64 12, i64 0 }, ptr %a368 - %t369 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 9 - %t370 = load i1, ptr %t369 - br i1 %t370, label %then9232, label %else9233 -then9232: - %t371 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6205, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a372 - %t376 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t375, ptr %a346 - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t378, ptr %a380 - store { ptr, i64, i64 } { ptr @.str.6206, i64 2, i64 0 }, ptr %a381 - call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a379 - %t383 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t382, ptr %a385 - store { ptr, i64, i64 } %t383, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t382, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.6207, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t393, ptr %a347 - store { ptr, i64, i64 } %t394, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6208, i64 0, i64 0 }, ptr %a346 - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a46 - %t399 = load %S.gen.FnSig, ptr %a320 - %t400 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t398, %S.gen.FnSig %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t402, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.6209, i64 21, i64 0 }, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - %t407 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.6210, i64 62, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t417, ptr %a347 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t420, ptr %a422 - store { ptr, i64, i64 } { ptr @.str.6211, i64 20, i64 0 }, ptr %a423 - call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) - %t424 = load { ptr, i64, i64 }, ptr %a421 - %t425 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t424, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t424, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.6212, i64 78, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - store { ptr, i64, i64 } %t430, ptr %a434 - call void @finch_str_drop(ptr %a434) - %t435 = load { ptr, i64, i64 }, ptr %a431 - %t436 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t435, ptr %a347 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.6213, i64 62, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a439 - %t443 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t442, ptr %a347 - store { ptr, i64, i64 } %t443, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t446 = getelementptr inbounds %S.ast.Type, ptr %t445, i32 0, i32 0 - %t447 = load { ptr, i64, i64 }, ptr %t446 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.6214, i64 3, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br i1 %t451, label %then9235, label %endif9237 -then9235: - %t452 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.6215, i64 20, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - %t456 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t456, ptr %a458 - store { ptr, i64, i64 } { ptr @.str.6216, i64 53, i64 0 }, ptr %a459 - call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) - store { ptr, i64, i64 } %t456, ptr %a460 - call void @finch_str_drop(ptr %a460) - %t461 = load { ptr, i64, i64 }, ptr %a457 - %t462 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t461, ptr %a368 - store { ptr, i64, i64 } %t462, ptr %a463 - call void @finch_str_drop(ptr %a463) - br label %endif9237 -endif9237: - call void @finch_str_drop(ptr %a401) - br label %endif9234 -else9233: - %t464 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t465 = getelementptr inbounds %S.ast.Type, ptr %t464, i32 0, i32 0 - %t466 = load { ptr, i64, i64 }, ptr %t465 - store { ptr, i64, i64 } %t466, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.6217, i64 3, i64 0 }, ptr %a468 - %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) - %t470 = icmp ne i32 %t469, 0 - br i1 %t470, label %then9238, label %endif9240 -then9238: - %t471 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6218, i64 5, i64 0 }, ptr %a473 - store { ptr, i64, i64 } %t471, ptr %a474 - call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474) - %t475 = load { ptr, i64, i64 }, ptr %a472 - %t476 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t475, ptr %a346 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.6219, i64 46, i64 0 }, ptr %a368 - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif9240 -endif9240: - br label %endif9234 -endif9234: - %t480 = load ptr, ptr %a46 - %t481 = icmp eq ptr %t480, null - br i1 %t481, label %panic9241, label %ok9242 -panic9241: - call void @finch_panic(ptr @.str.6220, i64 5865, ptr @.str.6221) - unreachable -ok9242: - %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 3 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6222, i64 48, i64 0 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a487 - call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t488, ptr %a490 - store { ptr, i64, i64 } { ptr @.str.6223, i64 2, i64 0 }, ptr %a491 - call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) - store { ptr, i64, i64 } %t488, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a489 - %t494 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t493, ptr %a496 - store { ptr, i64, i64 } %t494, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t493, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - store { ptr, i64, i64 } %t499, ptr %a501 - store { ptr, i64, i64 } { ptr @.str.6224, i64 1, i64 0 }, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - store { ptr, i64, i64 } %t499, ptr %a503 - call void @finch_str_drop(ptr %a503) - %t504 = load { ptr, i64, i64 }, ptr %a500 - %t505 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t504, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t504, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - store { ptr, i64, i64 } %t510, ptr %a512 - store { ptr, i64, i64 } { ptr @.str.6225, i64 2, i64 0 }, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - store { ptr, i64, i64 } %t510, ptr %a514 - call void @finch_str_drop(ptr %a514) - %t515 = load { ptr, i64, i64 }, ptr %a511 - %t516 = load i64, ptr %t483 - %t517 = add i64 %t516, 1 - call void @finch_arr_reserve(ptr %t482, i64 %t517, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t518 = load ptr, ptr %t482 - %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 %t516 - store { ptr, i64, i64 } %t515, ptr %t519 - store i64 %t517, ptr %t483 - %t520 = load ptr, ptr %a46 - %t521 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t520) - call void @finch_str_drop(ptr %a368) - call void @finch_str_drop(ptr %a347) - call void @finch_str_drop(ptr %a346) - call void @finch.drop.S_gen_FnSig(ptr %a320) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t521 -} - -define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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.6226, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6227, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6228, i64 78, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6229, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6230, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.6231, i64 77, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6232, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6233, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6234, i64 121, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6235, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6236, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.6237, i64 83, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6238, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6239, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6240, i64 29, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6241, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6242, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6243, i64 73, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6244, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6245, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6246, i64 98, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6247, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6248, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.6249, i64 66, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6250, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6251, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6252, i64 48, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6253, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6254, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6255, i64 77, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6256, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6257, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6258, i64 66, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6259, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6260, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6261, i64 73, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6262, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6263, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6264, i64 61, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6265, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6266, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6267, i64 130, i64 0 }) - %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6268, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6269, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6270, i64 75, i64 0 }) - %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6271, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6272, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6273, i64 29, i64 0 }) - %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6274, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6275, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6276, i64 26, i64 0 }) - %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6277, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6278, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6279, 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.6280, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6281, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6282, i64 23, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6283, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6284, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6285, i64 40, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6286, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6287, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6288, i64 18, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6289, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6290, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6291, i64 43, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6292, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6293, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6294, i64 38, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6295, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6296, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6297, i64 37, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6298, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6299, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6300, i64 19, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6301, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6302, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6303, i64 46, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6304, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6305, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6306, i64 22, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6307, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6308, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6309, i64 18, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6310, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6311, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6312, i64 37, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6313, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6314, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6315, i64 18, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6316, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6317, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6318, i64 45, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6319, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6321, 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.6322, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6323, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6324, i64 20, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6325, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6326, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6327, i64 59, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6328, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6329, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.6330, i64 29, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6331, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6332, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6333, i64 22, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6334, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6335, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6336, i64 24, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6337, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6338, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6339, i64 27, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6340, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6341, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6342, i64 25, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6343, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6344, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6345, i64 62, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6346, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6347, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6348, i64 41, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6349, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6350, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6351, i64 24, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6352, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6353, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6354, i64 24, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6355, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6356, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6357, i64 26, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6358, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6359, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6360, i64 17, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6361, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6362, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6363, 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.6364, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6365, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6366, i64 19, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6367, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6368, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6369, i64 22, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6370, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6371, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6372, i64 53, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6373, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6374, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6375, i64 52, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6376, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6377, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6378, i64 19, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6379, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6380, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6381, i64 39, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6382, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6383, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6384, 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.6385, i64 2, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6386, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6387, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6388, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6389, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6390, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6391, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6392, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6393, i64 8, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6394, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6395, i64 5, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6396, i64 4, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6397, i64 6, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6398, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6399, i64 6, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6400, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6401, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6402, i64 6, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6403, i64 5, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6404, i64 2, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6405, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6406, 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.6407, i64 3, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6408, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6409, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6410, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6411, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6412, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6413, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6414, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6415, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6416, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6417, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6418, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6419, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6420, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6421, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6422, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6423, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 17, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 17, 2 - ret { ptr, i64, i64 } %t22 -} - -define internal void @finch.copy.S_docs_Doc(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.docs.Doc, ptr %src - store %S.docs.Doc %t1, ptr %dst - %t2 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca %S.docs.Doc, align 16 - %a21 = alloca %S.docs.Doc, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond9243 -each.cond9243: - %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.body9244, label %each.end9246 -each.body9244: - %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 %then9247, label %endif9249 -then9247: - %t19 = load %S.docs.Doc, ptr %a11 - store %S.docs.Doc %t19, ptr %a20 - call void @finch.copy.S_docs_Doc(ptr %a21, ptr %a20) - %t22 = load %S.docs.Doc, ptr %a21 - ret %S.docs.Doc %t22 -endif9249: - br label %each.step9245 -each.step9245: - %t23 = load i64, ptr %a3 - %t24 = add i64 %t23, 1 - store i64 %t24, ptr %a3 - br label %each.cond9243 -each.end9246: - 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 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store %S.docs.Doc %p0, ptr %a1 - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } { ptr @.str.6424, 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.6425, i64 5, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } %t12, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t12, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { -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 - 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 - ret { ptr, i64, i64 } %t17 -} - -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 - store %S.ast.Type %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6426, 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 - ret %S.ast.Type %t17 -} - -define internal { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca i1, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca i64, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6427, i64 15, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a10, i64 %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t8, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6428, i64 4, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6429, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.6430, i64 2, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6431, i64 0, i64 0 }, ptr %a47 - %t48 = call i32 @finch_write_file(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - %t50 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6432, i64 12, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - %t55 = load { ptr, i64, i64 }, ptr %a44 - %t56 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t54, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t54, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6433, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load { ptr, i64, i64 }, ptr %a23 - %t69 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t67, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t67, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.6434, i64 3, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - %t88 = call i64 @finch.host.run({ ptr, i64, i64 } %t87) - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a44 - call void @finch.host.remove({ ptr, i64, i64 } %t90) - %t91 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - %t95 = xor i1 %t94, true - br i1 %t95, label %then9250, label %endif9252 -then9250: - %t96 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t96 -endif9252: - store i1 false, ptr %a97 - %t98 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_read_file(ptr %a100, ptr %a99, ptr @.str.6435, i64 114) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.6437, i64 1, i64 0 }, ptr %a104 - call void @finch_str_split(ptr %a105, ptr %a102, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t101, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t106, ptr %a108 - store i64 0, ptr %a109 - br label %each.cond9253 -each.cond9253: - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a108, i32 0, i32 1 - %t111 = load i64, ptr %t110 - %t112 = load i64, ptr %a109 - %t113 = icmp slt i64 %t112, %t111 - br i1 %t113, label %each.body9254, label %each.end9256 -each.body9254: - %t114 = load ptr, ptr %a108 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_trim(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t121, ptr %a122 - %t123 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.6440, i64 34, i64 0 }, ptr %a126 - %t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126) - %t128 = icmp ne i32 %t127, 0 - br i1 %t128, label %then9257, label %endif9259 -then9257: - store i1 true, ptr %a97 - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9259: - %t129 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6442, i64 19, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br i1 %t134, label %then9260, label %endif9262 -then9260: - call void @finch_str_drop(ptr %a122) - br label %each.end9256 -endif9262: - %t135 = load i1, ptr %a97 - %t136 = xor i1 %t135, true - br label %logic.from9263 -logic.from9263: - br i1 %t136, label %logic.end9265, label %logic.rhs9264 -logic.rhs9264: - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br label %logic.rend9266 -logic.rend9266: - br label %logic.end9265 -logic.end9265: - %t140 = phi i1 [ true, %logic.from9263 ], [ %t139, %logic.rend9266 ] - br i1 %t140, label %then9267, label %endif9269 -then9267: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9269: - %t141 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6444, i64 22, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_ends(ptr %a142, ptr %a144) - %t146 = icmp ne i32 %t145, 0 - br i1 %t146, label %then9270, label %else9271 -then9270: - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t148, ptr %a149 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = sub i64 %t152, 22 - call void @finch_str_sub(ptr %a150, ptr %a149, i64 0, i64 %t153, ptr @.str.6446, i64 128) - %t154 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.6445, i64 11, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %t147 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t161, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %a2 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160 - store { ptr, i64, i64 } %t159, ptr %t163 - store i64 %t161, ptr %t147 - br label %endif9272 -else9271: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6447, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - %t170 = load i64, ptr %t164 - %t171 = add i64 %t170, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t172 = load ptr, ptr %a2 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 - store { ptr, i64, i64 } %t169, ptr %t173 - store i64 %t171, ptr %t164 - br label %endif9272 -endif9272: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -each.step9255: - %t174 = load i64, ptr %a109 - %t175 = add i64 %t174, 1 - store i64 %t175, ptr %a109 - br label %each.cond9253 -each.end9256: - call void @finch.drop.arr_str(ptr %a108) - %t176 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.host.remove({ ptr, i64, i64 } %t176) - %t177 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t177 -} - -define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) { -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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - %t4 = load %S.C.CXType, ptr %a2 - 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 %panic9273, label %ok9274 -panic9273: - call void @finch_panic(ptr @.str.6448, i64 143, ptr @.str.6449) - unreachable -ok9274: - %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 %then9275, label %endif9277 -then9275: - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic9278, label %ok9279 -panic9278: - call void @finch_panic(ptr @.str.6450, i64 144, ptr @.str.6451) - unreachable -ok9279: - %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.missing9280, label %map.found9281 -map.missing9280: - 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.6452, i64 144, ptr %a29) - unreachable -map.found9281: - %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 - call void @finch_str_drop(ptr %a14) - ret { ptr, i64, i64 } %t38 -endif9277: - %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.from9282 -logic.from9282: - br i1 %t48, label %logic.end9284, label %logic.rhs9283 -logic.rhs9283: - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6454, 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.rend9285 -logic.rend9285: - br label %logic.end9284 -logic.end9284: - %t55 = phi i1 [ true, %logic.from9282 ], [ %t54, %logic.rend9285 ] - br i1 %t55, label %then9286, label %endif9288 -then9286: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic9289, label %ok9290 -panic9289: - call void @finch_panic(ptr @.str.6455, i64 148, ptr @.str.6456) - unreachable -ok9290: - %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 %panic9291, label %ok9292 -panic9291: - call void @finch_panic(ptr @.str.6458, i64 149, ptr @.str.6459) - unreachable -ok9292: - %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.6457, i64 12, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t71, ptr %a45 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_drop(ptr %a73) - br label %endif9288 -endif9288: - %t74 = load { ptr, i64, i64 }, ptr %a45 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic9293, label %ok9294 -panic9293: - call void @finch_panic(ptr @.str.6460, i64 151, ptr @.str.6461) - unreachable -ok9294: - %t77 = getelementptr inbounds %S.cimport.Importer, ptr %t75, i32 0, i32 3 - %t78 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t78, ptr %a79 - store i32 0, ptr %a80 - %t81 = call i64 @finch_map_slot(ptr %t77, ptr %a79, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a80) - %t82 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t77, i32 0, i32 0 - %t83 = load ptr, ptr %t82 - %t84 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i64 %t81 - %t85 = load i32, ptr %a80 - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %map.new9295, label %map.have9296 -map.new9295: - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 1 - call void @finch_str_copy(ptr %t87, ptr %a79) - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t88 - br label %map.have9296 -map.have9296: - %t89 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 - store { ptr, i64, i64 } %t74, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } %t92, ptr %t89 - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a14) - ret { ptr, i64, i64 } %t95 -} - -define internal i32 @finch.c.cimport.visitField(ptr %c0, ptr %c1) { -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 - %a42 = alloca %S.C.CXType, align 16 - %a44 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i32, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca %S.C.CXType, align 16 - %a73 = alloca %S.cimport.CStruct, align 16 - %a75 = alloca %S.C.CXCursor, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.cimport.FieldCtx, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca i32, align 16 - %a117 = alloca %S.cimport.CStruct, align 16 - %a118 = alloca %S.cimport.CStruct, align 16 - %a121 = alloca %S.cimport.CStruct, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - %t4 = load %S.C.CXType, ptr %a2 - 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 %panic9297, label %ok9298 -panic9297: - call void @finch_panic(ptr @.str.6462, i64 161, ptr @.str.6463) - unreachable -ok9298: - %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.from9299 -logic.from9299: - br i1 %t31, label %logic.end9301, label %logic.rhs9300 -logic.rhs9300: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic9302, label %ok9303 -panic9302: - call void @finch_panic(ptr @.str.6464, i64 161, ptr @.str.6465) - unreachable -ok9303: - %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.rend9304 -logic.rend9304: - br label %logic.end9301 -logic.end9301: - %t39 = phi i1 [ true, %logic.from9299 ], [ %t38, %logic.rend9304 ] - br i1 %t39, label %then9305, label %endif9307 -then9305: - %t40 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t40 -endif9307: - %t41 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t41, ptr %a42 - %t43 = call i64 @clang_Type_getSizeOf(ptr %a42) - store i64 %t43, ptr %a44 - %t45 = load i64, ptr %a44 - %t46 = icmp slt i64 %t45, 0 - br i1 %t46, label %then9308, label %endif9310 -then9308: - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } { ptr @.str.6466, i64 0, i64 0 } -endif9310: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic9311, label %ok9312 -panic9311: - call void @finch_panic(ptr @.str.6467, i64 168, ptr @.str.6468) - unreachable -ok9312: - %t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 4 - %t50 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t50, ptr %a51 - store i32 0, ptr %a52 - %t53 = call i64 @finch_map_slot(ptr %t49, ptr %a51, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a52) - %t54 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t49, i32 0, i32 0 - %t55 = load ptr, ptr %t54 - %t56 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i64 %t53 - %t57 = load i32, ptr %a52 - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %map.new9313, label %map.have9314 -map.new9313: - %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 1 - call void @finch_str_copy(ptr %t59, ptr %a51) - %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 - store i1 false, ptr %t60 - br label %map.have9314 -map.have9314: - %t61 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 - store i1 true, ptr %t61 - %t62 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t65, 0 - %t67 = load i64, ptr %a44 - %t68 = insertvalue %S.cimport.CStruct %t66, i64 %t67, 2 - %t69 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t69, ptr %a70 - %t71 = call i64 @clang_Type_getAlignOf(ptr %a70) - %t72 = insertvalue %S.cimport.CStruct %t68, i64 %t71, 3 - store %S.cimport.CStruct %t72, ptr %a73 - %t74 = load %S.C.CXCursor, ptr %a12 - store %S.C.CXCursor %t74, ptr %a75 - %t76 = call i32 @clang_getCursorKind(ptr %a75) - %t77 = icmp eq i32 %t76, 3 - br i1 %t77, label %then9315, label %endif9317 -then9315: - %t78 = getelementptr inbounds %S.cimport.CStruct, ptr %a73, i32 0, i32 4 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } { ptr @.str.6469, i64 12, i64 0 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif9317 -endif9317: - %t81 = load ptr, ptr %a1 - %t82 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t81, 0 - %t83 = insertvalue %S.cimport.FieldCtx %t82, ptr %a73, 1 - store %S.cimport.FieldCtx %t83, ptr %a84 - %t85 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t85, ptr %a86 - %t87 = call i32 @clang_Type_visitFields(ptr %a86, ptr @finch.c.cimport.visitField, ptr %a84) - %t88 = load ptr, ptr %a1 - %t89 = icmp eq ptr %t88, null - br i1 %t89, label %panic9318, label %ok9319 -panic9318: - call void @finch_panic(ptr @.str.6470, i64 176, ptr @.str.6471) - unreachable -ok9319: - %t90 = getelementptr inbounds %S.cimport.Importer, ptr %t88, i32 0, i32 4 - %t91 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i64 @finch_map_find(ptr %t90, ptr %a92, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t94 = icmp sge i64 %t93, 0 - br i1 %t94, label %remove.hit9320, label %remove.end9321 -remove.hit9320: - %t95 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t90, i32 0, i32 0 - %t96 = load ptr, ptr %t95 - %t97 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t96, i64 %t93 - %t98 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 1 - call void @finch_str_drop(ptr %t98) - %t99 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 2 - call void @finch_map_remove_at(ptr %t90, i64 %t93, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64)) - br label %remove.end9321 -remove.end9321: - %t100 = load %S.cimport.CStruct, ptr %a73 - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic9322, label %ok9323 -panic9322: - call void @finch_panic(ptr @.str.6472, i64 177, ptr @.str.6473) - unreachable -ok9323: - %t103 = getelementptr inbounds %S.cimport.Importer, ptr %t101, i32 0, i32 0 - %t104 = getelementptr inbounds %S.cimport.CImports, ptr %t103, i32 0, i32 3 - %t105 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t105, ptr %a106 - store i32 0, ptr %a107 - %t108 = call i64 @finch_map_slot(ptr %t104, ptr %a106, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a107) - %t109 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t104, i32 0, i32 0 - %t110 = load ptr, ptr %t109 - %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i64 %t108 - %t112 = load i32, ptr %a107 - %t113 = icmp ne i32 %t112, 0 - br i1 %t113, label %map.new9324, label %map.have9325 -map.new9324: - %t114 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 1 - call void @finch_str_copy(ptr %t114, ptr %a106) - %t115 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 - store %S.cimport.CStruct zeroinitializer, ptr %t115 - br label %map.have9325 -map.have9325: - %t116 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 - store %S.cimport.CStruct %t100, ptr %a117 - call void @finch.copy.S_cimport_CStruct(ptr %a118, ptr %a117) - %t119 = load %S.cimport.CStruct, ptr %a118 - %t120 = load %S.cimport.CStruct, ptr %t116 - store %S.cimport.CStruct %t119, ptr %t116 - store %S.cimport.CStruct %t120, ptr %a121 - call void @finch.drop.S_cimport_CStruct(ptr %a121) - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic9326, label %ok9327 -panic9326: - call void @finch_panic(ptr @.str.6474, i64 178, ptr @.str.6475) - unreachable -ok9327: - %t124 = getelementptr inbounds %S.cimport.Importer, ptr %t122, i32 0, i32 0 - %t125 = getelementptr inbounds %S.cimport.CImports, ptr %t124, i32 0, i32 4 - %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t125, i32 0, i32 1 - %t127 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = load i64, ptr %t126 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t125, i64 %t132, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t125 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i64 %t131 - store { ptr, i64, i64 } %t130, ptr %t134 - store i64 %t132, ptr %t126 - %t135 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.S_cimport_CStruct(ptr %a73) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t135 -} - -define internal void @finch.drop.S_cimport_Mapped(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 0 - call void @finch.drop.S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) { -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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca %S.C.CXCursor, align 16 - %a52 = alloca %S.C.CXType, align 16 - %a54 = alloca %S.C.CXCursor, align 16 - %a65 = alloca %S.cimport.Mapped, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a72 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a98 = alloca %S.cimport.CField, align 16 - %a99 = alloca %S.cimport.CField, align 16 - store %S.C.CXCursor %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a2 - 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 %then9328, label %else9329 -then9328: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic9331, label %ok9332 -panic9331: - call void @finch_panic(ptr @.str.6477, i64 195, ptr @.str.6478) - unreachable -ok9332: - %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 %panic9333, label %ok9334 -panic9333: - call void @finch_panic(ptr @.str.6479, i64 195, ptr @.str.6480) - unreachable -ok9334: - %t43 = getelementptr inbounds %S.cimport.CStruct, ptr %t41, i32 0, i32 4 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.6476, i64 14, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t46 - br label %endif9330 -else9329: - %t47 = getelementptr inbounds %S.C.CXType, ptr %a20, i32 0, i32 0 - %t48 = load i32, ptr %t47 - %t49 = icmp eq i32 %t48, 105 - br label %logic.from9335 -logic.from9335: - br i1 %t49, label %logic.rhs9336, label %logic.end9337 -logic.rhs9336: - %t51 = load %S.C.CXType, ptr %a20 - store %S.C.CXType %t51, ptr %a52 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a50, ptr %a52) - %t53 = load %S.C.CXCursor, ptr %a50 - store %S.C.CXCursor %t53, ptr %a54 - %t55 = call i32 @clang_getCursorKind(ptr %a54) - %t56 = icmp eq i32 %t55, 3 - br label %logic.rend9338 -logic.rend9338: - br label %logic.end9337 -logic.end9337: - %t57 = phi i1 [ false, %logic.from9335 ], [ %t56, %logic.rend9338 ] - br i1 %t57, label %then9339, label %else9340 -then9339: - %t58 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t58 - br label %endif9341 -else9340: - %t59 = load ptr, ptr %a4 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic9342, label %ok9343 -panic9342: - call void @finch_panic(ptr @.str.6481, i64 200, ptr @.str.6482) - unreachable -ok9343: - %t61 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t59, i32 0, i32 0 - %t62 = load ptr, ptr %t61 - %t63 = load %S.C.CXType, ptr %a20 - %t64 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t62, %S.C.CXType %t63, i1 false, i1 false) - store %S.cimport.Mapped %t64, ptr %a65 - %t66 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 2 - %t67 = load i1, ptr %t66 - br i1 %t67, label %then9344, label %else9345 -then9344: - %t68 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 0 - %t69 = load %S.ast.Type, ptr %t68 - %t70 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 1 - store %S.ast.Type %t69, ptr %a71 - call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71) - %t73 = load %S.ast.Type, ptr %a72 - %t74 = load %S.ast.Type, ptr %t70 - store %S.ast.Type %t73, ptr %t70 - store %S.ast.Type %t74, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - br label %endif9346 -else9345: - %t76 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t76 - br label %endif9346 -endif9346: - call void @finch.drop.S_cimport_Mapped(ptr %a65) - br label %endif9341 -endif9341: - br label %endif9330 -endif9330: - %t77 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then9347, label %endif9349 -then9347: - %t79 = load ptr, ptr %a4 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic9350, label %ok9351 -panic9350: - call void @finch_panic(ptr @.str.6483, i64 208, ptr @.str.6484) - unreachable -ok9351: - %t81 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t79, i32 0, i32 1 - %t82 = load ptr, ptr %t81 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic9352, label %ok9353 -panic9352: - call void @finch_panic(ptr @.str.6485, i64 208, ptr @.str.6486) - unreachable -ok9353: - %t84 = getelementptr inbounds %S.cimport.CStruct, ptr %t82, i32 0, i32 5 - store i1 true, ptr %t84 - br label %endif9349 -endif9349: - %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = icmp eq i64 %t87, 0 - br i1 %t88, label %then9354, label %endif9356 -then9354: - %t89 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t89 - br label %endif9356 -endif9356: - %t90 = load ptr, ptr %a4 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic9357, label %ok9358 -panic9357: - call void @finch_panic(ptr @.str.6487, i64 213, ptr @.str.6488) - unreachable -ok9358: - %t92 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t90, i32 0, i32 1 - %t93 = load ptr, ptr %t92 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic9359, label %ok9360 -panic9359: - call void @finch_panic(ptr @.str.6489, i64 213, ptr @.str.6490) - unreachable -ok9360: - %t95 = getelementptr inbounds %S.cimport.CStruct, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load %S.cimport.CField, ptr %a12 - store %S.cimport.CField %t97, ptr %a98 - call void @finch.copy.S_cimport_CField(ptr %a99, ptr %a98) - %t100 = load %S.cimport.CField, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds %S.cimport.CField, ptr %t103, i64 %t101 - store %S.cimport.CField %t100, ptr %t104 - store i64 %t102, ptr %t96 - call void @finch.drop.S_cimport_CField(ptr %a12) - ret i32 1 -} - -define internal %S.cimport.Mapped @finch.cimport.sized(i64 %p0, i1 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a29 = alloca %S.ast.Type, align 16 - %a35 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load i64, ptr %a1 - %t4 = icmp eq i64 %t3, 1 - br i1 %t4, label %then9361, label %endif9363 -then9361: - %t5 = load i1, ptr %a2 - br i1 %t5, label %then9364, label %endif9366 -then9364: - %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6491, i64 2, i64 0 }) - %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) - store %S.ast.Type %t6, ptr %a8 - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.cimport.Mapped %t7 -endif9366: - %t9 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6492, i64 2, i64 0 }) - %t10 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t9) - store %S.ast.Type %t9, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.cimport.Mapped %t10 -endif9363: - %t12 = load i64, ptr %a1 - %t13 = icmp eq i64 %t12, 2 - br i1 %t13, label %then9367, label %endif9369 -then9367: - %t14 = load i1, ptr %a2 - br i1 %t14, label %then9370, label %endif9372 -then9370: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6493, i64 3, i64 0 }) - %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) - store %S.ast.Type %t15, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a17) - ret %S.cimport.Mapped %t16 -endif9372: - %t18 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6494, i64 3, i64 0 }) - %t19 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t18) - store %S.ast.Type %t18, ptr %a20 - call void @finch.drop.S_ast_Type(ptr %a20) - ret %S.cimport.Mapped %t19 -endif9369: - %t21 = load i64, ptr %a1 - %t22 = icmp eq i64 %t21, 4 - br i1 %t22, label %then9373, label %endif9375 -then9373: - %t23 = load i1, ptr %a2 - br i1 %t23, label %then9376, label %endif9378 -then9376: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6495, i64 3, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9378: - %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6496, i64 3, i64 0 }) - %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) - store %S.ast.Type %t27, ptr %a29 - call void @finch.drop.S_ast_Type(ptr %a29) - ret %S.cimport.Mapped %t28 -endif9375: - %t30 = load i64, ptr %a1 - %t31 = icmp eq i64 %t30, 8 - br i1 %t31, label %then9379, label %endif9381 -then9379: - %t32 = load i1, ptr %a2 - br i1 %t32, label %then9382, label %endif9384 -then9382: - %t33 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6497, i64 3, i64 0 }) - %t34 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t33) - store %S.ast.Type %t33, ptr %a35 - call void @finch.drop.S_ast_Type(ptr %a35) - ret %S.cimport.Mapped %t34 -endif9384: - %t36 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6498, i64 3, i64 0 }) - %t37 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t36) - store %S.ast.Type %t36, ptr %a38 - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.cimport.Mapped %t37 -endif9381: - %t39 = load i64, ptr %a1 - %t40 = mul i64 %t39, 8 - call void @finch_str_from_int(ptr %a41, i64 %t40) - %t42 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.6499, i64 7, i64 0 }, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.6500, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a54 - call void @finch_str_drop(ptr %a54) - ret %S.cimport.Mapped %t53 -} - -define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) { -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 - %a21 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.ast.Type, align 16 - %a83 = alloca %S.C.CXType, align 16 - %a84 = alloca %S.C.CXType, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a88 = alloca %S.C.CXType, align 16 - %a90 = alloca %S.C.CXType, align 16 - %a103 = alloca %S.C.CXType, align 16 - %a109 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.cimport.Mapped, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca %S.ast.Type, align 16 - %a154 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.C.CXCursor, align 16 - %a159 = alloca %S.C.CXType, align 16 - %a161 = alloca %S.C.CXCursor, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.C.CXType, align 16 - %a187 = alloca %S.C.CXType, align 16 - %a190 = alloca %S.cimport.Mapped, align 16 - %a198 = alloca %S.C.CXType, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a207 = alloca %S.C.CXType, align 16 - %a209 = alloca [32 x i8], align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - store i1 %p2, ptr %a3 - 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 %then9385, label %endif9387 -then9385: - %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6501, i64 4, i64 0 }) - %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.cimport.Mapped %t20 -endif9387: - %t22 = load i32, ptr %a16 - %t23 = icmp eq i32 %t22, 3 - br i1 %t23, label %then9388, label %endif9390 -then9388: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6502, i64 4, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9390: - %t27 = load i32, ptr %a16 - %t28 = icmp eq i32 %t27, 13 - br label %logic.from9391 -logic.from9391: - br i1 %t28, label %logic.end9393, label %logic.rhs9392 -logic.rhs9392: - %t29 = load i32, ptr %a16 - %t30 = icmp eq i32 %t29, 4 - br label %logic.rend9394 -logic.rend9394: - br label %logic.end9393 -logic.end9393: - %t31 = phi i1 [ true, %logic.from9391 ], [ %t30, %logic.rend9394 ] - br i1 %t31, label %then9395, label %endif9397 -then9395: - %t32 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6503, i64 4, i64 0 }) - %t33 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - ret %S.cimport.Mapped %t33 -endif9397: - %t35 = load i32, ptr %a16 - %t36 = icmp eq i32 %t35, 14 - br label %logic.from9398 -logic.from9398: - br i1 %t36, label %logic.end9400, label %logic.rhs9399 -logic.rhs9399: - %t37 = load i32, ptr %a16 - %t38 = icmp eq i32 %t37, 16 - br label %logic.rend9401 -logic.rend9401: - br label %logic.end9400 -logic.end9400: - %t39 = phi i1 [ true, %logic.from9398 ], [ %t38, %logic.rend9401 ] - br label %logic.from9402 -logic.from9402: - br i1 %t39, label %logic.end9404, label %logic.rhs9403 -logic.rhs9403: - %t40 = load i32, ptr %a16 - %t41 = icmp eq i32 %t40, 17 - br label %logic.rend9405 -logic.rend9405: - br label %logic.end9404 -logic.end9404: - %t42 = phi i1 [ true, %logic.from9402 ], [ %t41, %logic.rend9405 ] - br label %logic.from9406 -logic.from9406: - br i1 %t42, label %logic.end9408, label %logic.rhs9407 -logic.rhs9407: - %t43 = load i32, ptr %a16 - %t44 = icmp eq i32 %t43, 18 - br label %logic.rend9409 -logic.rend9409: - br label %logic.end9408 -logic.end9408: - %t45 = phi i1 [ true, %logic.from9406 ], [ %t44, %logic.rend9409 ] - br label %logic.from9410 -logic.from9410: - br i1 %t45, label %logic.end9412, label %logic.rhs9411 -logic.rhs9411: - %t46 = load i32, ptr %a16 - %t47 = icmp eq i32 %t46, 19 - br label %logic.rend9413 -logic.rend9413: - br label %logic.end9412 -logic.end9412: - %t48 = phi i1 [ true, %logic.from9410 ], [ %t47, %logic.rend9413 ] - br i1 %t48, label %then9414, label %endif9416 -then9414: - %t49 = load i64, ptr %a13 - %t50 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t49, i1 true) - ret %S.cimport.Mapped %t50 -endif9416: - %t51 = load i32, ptr %a16 - %t52 = icmp eq i32 %t51, 5 - br label %logic.from9417 -logic.from9417: - br i1 %t52, label %logic.end9419, label %logic.rhs9418 -logic.rhs9418: - %t53 = load i32, ptr %a16 - %t54 = icmp eq i32 %t53, 8 - br label %logic.rend9420 -logic.rend9420: - br label %logic.end9419 -logic.end9419: - %t55 = phi i1 [ true, %logic.from9417 ], [ %t54, %logic.rend9420 ] - br label %logic.from9421 -logic.from9421: - br i1 %t55, label %logic.end9423, label %logic.rhs9422 -logic.rhs9422: - %t56 = load i32, ptr %a16 - %t57 = icmp eq i32 %t56, 9 - br label %logic.rend9424 -logic.rend9424: - br label %logic.end9423 -logic.end9423: - %t58 = phi i1 [ true, %logic.from9421 ], [ %t57, %logic.rend9424 ] - br label %logic.from9425 -logic.from9425: - br i1 %t58, label %logic.end9427, label %logic.rhs9426 -logic.rhs9426: - %t59 = load i32, ptr %a16 - %t60 = icmp eq i32 %t59, 10 - br label %logic.rend9428 -logic.rend9428: - br label %logic.end9427 -logic.end9427: - %t61 = phi i1 [ true, %logic.from9425 ], [ %t60, %logic.rend9428 ] - br label %logic.from9429 -logic.from9429: - br i1 %t61, label %logic.end9431, label %logic.rhs9430 -logic.rhs9430: - %t62 = load i32, ptr %a16 - %t63 = icmp eq i32 %t62, 11 - br label %logic.rend9432 -logic.rend9432: - br label %logic.end9431 -logic.end9431: - %t64 = phi i1 [ true, %logic.from9429 ], [ %t63, %logic.rend9432 ] - br i1 %t64, label %then9433, label %endif9435 -then9433: - %t65 = load i64, ptr %a13 - %t66 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t65, i1 false) - ret %S.cimport.Mapped %t66 -endif9435: - %t67 = load i32, ptr %a16 - %t68 = icmp eq i32 %t67, 106 - br i1 %t68, label %then9436, label %endif9438 -then9436: - %t69 = load i64, ptr %a13 - %t70 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t69, i1 true) - ret %S.cimport.Mapped %t70 -endif9438: - %t71 = load i32, ptr %a16 - %t72 = icmp eq i32 %t71, 21 - br i1 %t72, label %then9439, label %endif9441 -then9439: - %t73 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6504, i64 3, i64 0 }) - %t74 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t73) - store %S.ast.Type %t73, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - ret %S.cimport.Mapped %t74 -endif9441: - %t76 = load i32, ptr %a16 - %t77 = icmp eq i32 %t76, 22 - br i1 %t77, label %then9442, label %endif9444 -then9442: - %t78 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6505, i64 5, i64 0 }) - %t79 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t78) - store %S.ast.Type %t78, ptr %a80 - call void @finch.drop.S_ast_Type(ptr %a80) - ret %S.cimport.Mapped %t79 -endif9444: - %t81 = load i32, ptr %a16 - %t82 = icmp eq i32 %t81, 101 - br i1 %t82, label %then9445, label %endif9447 -then9445: - %t85 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t85, ptr %a86 - call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a84, ptr %a86) - %t87 = load %S.C.CXType, ptr %a84 - store %S.C.CXType %t87, ptr %a88 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a83, ptr %a88) - %t89 = load %S.C.CXType, ptr %a83 - store %S.C.CXType %t89, ptr %a90 - %t91 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t92 = load i32, ptr %t91 - %t93 = icmp eq i32 %t92, 13 - br label %logic.from9448 -logic.from9448: - br i1 %t93, label %logic.end9450, label %logic.rhs9449 -logic.rhs9449: - %t94 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t95 = load i32, ptr %t94 - %t96 = icmp eq i32 %t95, 4 - br label %logic.rend9451 -logic.rend9451: - br label %logic.end9450 -logic.end9450: - %t97 = phi i1 [ true, %logic.from9448 ], [ %t96, %logic.rend9451 ] - br label %logic.from9452 -logic.from9452: - br i1 %t97, label %logic.rhs9453, label %logic.end9454 -logic.rhs9453: - %t98 = load i1, ptr %a3 - br label %logic.rend9455 -logic.rend9455: - br label %logic.end9454 -logic.end9454: - %t99 = phi i1 [ false, %logic.from9452 ], [ %t98, %logic.rend9455 ] - br i1 %t99, label %then9456, label %endif9458 -then9456: - %t100 = load i1, ptr %a4 - %t101 = xor i1 %t100, true - br label %logic.from9459 -logic.from9459: - br i1 %t101, label %logic.end9461, label %logic.rhs9460 -logic.rhs9460: - %t102 = load %S.C.CXType, ptr %a90 - store %S.C.CXType %t102, ptr %a103 - %t104 = call i32 @clang_isConstQualifiedType(ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend9462 -logic.rend9462: - br label %logic.end9461 -logic.end9461: - %t106 = phi i1 [ true, %logic.from9459 ], [ %t105, %logic.rend9462 ] - br i1 %t106, label %then9463, label %endif9465 -then9463: - %t107 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6506, i64 3, i64 0 }) - %t108 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t107) - store %S.ast.Type %t107, ptr %a109 - call void @finch.drop.S_ast_Type(ptr %a109) - ret %S.cimport.Mapped %t108 -endif9465: - br label %endif9458 -endif9458: - %t110 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t111 = load i32, ptr %t110 - %t112 = icmp eq i32 %t111, 2 - br label %logic.from9466 -logic.from9466: - br i1 %t112, label %logic.end9468, label %logic.rhs9467 -logic.rhs9467: - %t113 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t114 = load i32, ptr %t113 - %t115 = icmp eq i32 %t114, 111 - br label %logic.rend9469 -logic.rend9469: - br label %logic.end9468 -logic.end9468: - %t116 = phi i1 [ true, %logic.from9466 ], [ %t115, %logic.rend9469 ] - br label %logic.from9470 -logic.from9470: - br i1 %t116, label %logic.end9472, label %logic.rhs9471 -logic.rhs9471: - %t117 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t118 = load i32, ptr %t117 - %t119 = icmp eq i32 %t118, 110 - br label %logic.rend9473 -logic.rend9473: - br label %logic.end9472 -logic.end9472: - %t120 = phi i1 [ true, %logic.from9470 ], [ %t119, %logic.rend9473 ] - br i1 %t120, label %then9474, label %endif9476 -then9474: - %t121 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6507, i64 3, i64 0 }) - %t122 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t121) - store %S.ast.Type %t121, ptr %a123 - call void @finch.drop.S_ast_Type(ptr %a123) - ret %S.cimport.Mapped %t122 -endif9476: - %t124 = load ptr, ptr %a1 - %t125 = load %S.C.CXType, ptr %a90 - %t126 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t124, %S.C.CXType %t125, i1 false, i1 false) - store %S.cimport.Mapped %t126, ptr %a127 - %t128 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 2 - %t129 = load i1, ptr %t128 - %t130 = xor i1 %t129, true - br label %logic.from9477 -logic.from9477: - br i1 %t130, label %logic.end9479, label %logic.rhs9478 -logic.rhs9478: - %t131 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.6508, 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.rend9480 -logic.rend9480: - br label %logic.end9479 -logic.end9479: - %t138 = phi i1 [ true, %logic.from9477 ], [ %t137, %logic.rend9480 ] - br label %logic.from9481 -logic.from9481: - br i1 %t138, label %logic.end9483, label %logic.rhs9482 -logic.rhs9482: - %t139 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t140 = getelementptr inbounds %S.ast.Type, ptr %t139, i32 0, i32 0 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6509, i64 5, i64 0 }, ptr %a143 - %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) - %t145 = icmp ne i32 %t144, 0 - br label %logic.rend9484 -logic.rend9484: - br label %logic.end9483 -logic.end9483: - %t146 = phi i1 [ true, %logic.from9481 ], [ %t145, %logic.rend9484 ] - br i1 %t146, label %then9485, label %endif9487 -then9485: - %t147 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6510, i64 3, i64 0 }) - %t148 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t147) - store %S.ast.Type %t147, ptr %a149 - call void @finch.drop.S_ast_Type(ptr %a149) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t148 -endif9487: - %t150 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t151) - %t153 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t152) - store %S.ast.Type %t152, ptr %a154 - call void @finch.drop.S_ast_Type(ptr %a154) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t153 -endif9447: - %t155 = load i32, ptr %a16 - %t156 = icmp eq i32 %t155, 105 - br i1 %t156, label %then9488, label %endif9490 -then9488: - %t158 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t158, ptr %a159 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a157, ptr %a159) - %t160 = load %S.C.CXCursor, ptr %a157 - store %S.C.CXCursor %t160, ptr %a161 - %t162 = call i32 @clang_getCursorKind(ptr %a161) - %t163 = icmp eq i32 %t162, 3 - br i1 %t163, label %then9491, label %endif9493 -then9491: - %t164 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6511, i64 23, i64 0 }) - ret %S.cimport.Mapped %t164 -endif9493: - %t165 = load ptr, ptr %a1 - %t166 = load %S.C.CXType, ptr %a9 - %t167 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t165, %S.C.CXType %t166) - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = icmp eq i64 %t170, 0 - br i1 %t171, label %then9494, label %endif9496 -then9494: - %t172 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6512, i64 36, i64 0 }) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t172 -endif9496: - %t173 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6513, i64 5, i64 0 }, 0 - %t174 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t174, ptr %a175 - call void @finch_str_copy(ptr %a176, ptr %a175) - %t177 = load { ptr, i64, i64 }, ptr %a176 - %t178 = insertvalue %S.ast.Type %t173, { ptr, i64, i64 } %t177, 2 - %t179 = insertvalue %S.ast.Type %t178, { ptr, i64, i64 } { ptr @.str.6514, i64 1, i64 0 }, 3 - %t180 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t179) - store %S.ast.Type %t179, ptr %a181 - call void @finch.drop.S_ast_Type(ptr %a181) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t180 -endif9490: - %t182 = load i32, ptr %a16 - %t183 = icmp eq i32 %t182, 112 - br i1 %t183, label %then9497, label %endif9499 -then9497: - %t184 = load ptr, ptr %a1 - %t186 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t186, ptr %a187 - call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a185, ptr %a187) - %t188 = load %S.C.CXType, ptr %a185 - %t189 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t184, %S.C.CXType %t188, i1 false, i1 false) - store %S.cimport.Mapped %t189, ptr %a190 - %t191 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 2 - %t192 = load i1, ptr %t191 - %t193 = xor i1 %t192, true - br i1 %t193, label %then9500, label %endif9502 -then9500: - %t194 = load %S.cimport.Mapped, ptr %a190 - ret %S.cimport.Mapped %t194 -endif9502: - %t195 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t197, ptr %a198 - %t199 = call i64 @clang_getArraySize(ptr %a198) - %t200 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t196, i64 %t199) - %t201 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t200) - store %S.ast.Type %t200, ptr %a202 - call void @finch.drop.S_ast_Type(ptr %a202) - call void @finch.drop.S_cimport_Mapped(ptr %a190) - ret %S.cimport.Mapped %t201 -endif9499: - %t203 = load i32, ptr %a16 - %t204 = icmp eq i32 %t203, 23 - br i1 %t204, label %then9503, label %endif9505 -then9503: - %t205 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }) - ret %S.cimport.Mapped %t205 -endif9505: - %t206 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t206, ptr %a207 - %t208 = call [2 x i64] @clang_getTypeSpelling(ptr %a207) - store [2 x i64] %t208, ptr %a209 - %t210 = load %S.C.CXString, ptr %a209 - %t211 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t210) - store { ptr, i64, i64 } { ptr @.str.6516, i64 17, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.6517, i64 1, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t221) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - ret %S.cimport.Mapped %t222 -} - -define internal %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %p0) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a49 = alloca i1, align 16 - %a50 = alloca i64, align 16 - %a62 = alloca i8, align 16 - %a63 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6519, 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.from9506 -logic.from9506: - br i1 %t13, label %logic.end9508, label %logic.rhs9507 -logic.rhs9507: - %t14 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6521, 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.rend9509 -logic.rend9509: - br label %logic.end9508 -logic.end9508: - %t20 = phi i1 [ true, %logic.from9506 ], [ %t19, %logic.rend9509 ] - br i1 %t20, label %then9510, label %else9511 -then9510: - 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.6522, i64 331) - %t26 = load { ptr, i64, i64 }, ptr %a23 - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t26, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif9512 -else9511: - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = icmp sgt i64 %t30, 1 - br label %logic.from9513 -logic.from9513: - br i1 %t31, label %logic.rhs9514, label %logic.end9515 -logic.rhs9514: - %t32 = load { ptr, i64, i64 }, ptr %a6 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 0, %t33 - br i1 %t34, label %range9516, label %inrange9517 -range9516: - call void @finch_panic_index(ptr @.str.6523, i64 332, i64 0, i64 %t33) - unreachable -inrange9517: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds i8, ptr %t35, i64 0 - %t37 = load i8, ptr %t36 - %t38 = icmp eq i8 %t37, 48 - br label %logic.rend9518 -logic.rend9518: - br label %logic.end9515 -logic.end9515: - %t39 = phi i1 [ false, %logic.from9513 ], [ %t38, %logic.rend9518 ] - br i1 %t39, label %then9519, label %endif9521 -then9519: - store i64 8, ptr %a7 - %t40 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t40, ptr %a41 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t44 = load i64, ptr %t43 - call void @finch_str_sub(ptr %a42, ptr %a41, i64 1, i64 %t44, ptr @.str.6524, i64 334) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t45, ptr %a6 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif9521 -endif9521: - br label %endif9512 -endif9512: - store i64 0, ptr %a48 - store i1 false, ptr %a49 - store i64 0, ptr %a50 - br label %while.cond9522 -while.cond9522: - %t51 = load i64, ptr %a50 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t53 = load i64, ptr %t52 - %t54 = icmp slt i64 %t51, %t53 - br i1 %t54, label %while.body9523, label %while.end9524 -while.body9523: - %t55 = load i64, ptr %a50 - %t56 = load { ptr, i64, i64 }, ptr %a6 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range9525, label %inrange9526 -range9525: - call void @finch_panic_index(ptr @.str.6525, i64 340, i64 %t55, i64 %t57) - unreachable -inrange9526: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds i8, ptr %t59, i64 %t55 - %t61 = load i8, ptr %t60 - store i8 %t61, ptr %a62 - store i64 99, ptr %a63 - %t64 = load i8, ptr %a62 - %t65 = icmp uge i8 %t64, 48 - br label %logic.from9527 -logic.from9527: - br i1 %t65, label %logic.rhs9528, label %logic.end9529 -logic.rhs9528: - %t66 = load i8, ptr %a62 - %t67 = icmp ule i8 %t66, 57 - br label %logic.rend9530 -logic.rend9530: - br label %logic.end9529 -logic.end9529: - %t68 = phi i1 [ false, %logic.from9527 ], [ %t67, %logic.rend9530 ] - br i1 %t68, label %then9531, label %else9532 -then9531: - %t69 = load i8, ptr %a62 - %t70 = zext i8 %t69 to i64 - %t71 = zext i8 48 to i64 - %t72 = sub i64 %t70, %t71 - store i64 %t72, ptr %a63 - br label %endif9533 -else9532: - %t73 = load i8, ptr %a62 - %t74 = icmp uge i8 %t73, 97 - br label %logic.from9534 -logic.from9534: - br i1 %t74, label %logic.rhs9535, label %logic.end9536 -logic.rhs9535: - %t75 = load i8, ptr %a62 - %t76 = icmp ule i8 %t75, 102 - br label %logic.rend9537 -logic.rend9537: - br label %logic.end9536 -logic.end9536: - %t77 = phi i1 [ false, %logic.from9534 ], [ %t76, %logic.rend9537 ] - br i1 %t77, label %then9538, label %else9539 -then9538: - %t78 = load i8, ptr %a62 - %t79 = zext i8 %t78 to i64 - %t80 = zext i8 97 to i64 - %t81 = sub i64 %t79, %t80 - %t82 = add i64 %t81, 10 - store i64 %t82, ptr %a63 - br label %endif9540 -else9539: - %t83 = load i8, ptr %a62 - %t84 = icmp uge i8 %t83, 65 - br label %logic.from9541 -logic.from9541: - br i1 %t84, label %logic.rhs9542, label %logic.end9543 -logic.rhs9542: - %t85 = load i8, ptr %a62 - %t86 = icmp ule i8 %t85, 70 - br label %logic.rend9544 -logic.rend9544: - br label %logic.end9543 -logic.end9543: - %t87 = phi i1 [ false, %logic.from9541 ], [ %t86, %logic.rend9544 ] - br i1 %t87, label %then9545, label %endif9547 -then9545: - %t88 = load i8, ptr %a62 - %t89 = zext i8 %t88 to i64 - %t90 = zext i8 65 to i64 - %t91 = sub i64 %t89, %t90 - %t92 = add i64 %t91, 10 - store i64 %t92, ptr %a63 - br label %endif9547 -endif9547: - br label %endif9540 -endif9540: - br label %endif9533 -endif9533: - %t93 = load i64, ptr %a63 - %t94 = load i64, ptr %a7 - %t95 = icmp sge i64 %t93, %t94 - br i1 %t95, label %then9548, label %endif9550 -then9548: - br label %while.end9524 -endif9550: - %t96 = load i64, ptr %a48 - %t97 = load i64, ptr %a7 - %t98 = mul i64 %t96, %t97 - %t99 = load i64, ptr %a63 - %t100 = add i64 %t98, %t99 - store i64 %t100, ptr %a48 - store i1 true, ptr %a49 - %t101 = load i64, ptr %a50 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %a50 - br label %while.cond9522 -while.end9524: - br label %while.cond9551 -while.cond9551: - %t103 = load i64, ptr %a50 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp slt i64 %t103, %t105 - br i1 %t106, label %while.body9552, label %while.end9553 -while.body9552: - store { ptr, i64, i64 } { ptr @.str.6526, i64 4, i64 0 }, ptr %a107 - %t109 = load i64, ptr %a50 - %t110 = load { ptr, i64, i64 }, ptr %a6 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range9554, label %inrange9555 -range9554: - call void @finch_panic_index(ptr @.str.6528, i64 358, i64 %t109, i64 %t111) - unreachable -inrange9555: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds i8, ptr %t113, i64 %t109 - %t115 = load i8, ptr %t114 - call void @finch_str_from_char(ptr %a116, i8 signext %t115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t117, ptr %a118 - %t119 = call i64 @finch_str_find(ptr %a107, ptr %a118) - %t120 = icmp sge i64 %t119, 0 - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = xor i1 %t120, true - br i1 %t122, label %then9556, label %endif9558 -then9556: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9558: - %t123 = load i64, ptr %a50 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a50 - br label %while.cond9551 -while.end9553: - %t125 = load i1, ptr %a49 - %t126 = xor i1 %t125, true - br label %logic.from9559 -logic.from9559: - br i1 %t126, label %logic.rhs9560, label %logic.end9561 -logic.rhs9560: - %t127 = load i64, ptr %a7 - %t128 = icmp ne i64 %t127, 8 - br label %logic.rend9562 -logic.rend9562: - br label %logic.end9561 -logic.end9561: - %t129 = phi i1 [ false, %logic.from9559 ], [ %t128, %logic.rend9562 ] - br i1 %t129, label %then9563, label %endif9565 -then9563: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9565: - %t130 = load i64, ptr %a48 - %t131 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t130, 1 - %t132 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t131, 0 - %t133 = insertvalue %S.cimport.Number %t132, i1 true, 1 - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number %t133 -} - -define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) { -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 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca i1, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i1, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca double, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca double, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca %S.cimport.Number, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - store ptr null, ptr %a3 - store i32 0, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic9566, label %ok9567 -panic9566: - call void @finch_panic(ptr @.str.6529, i64 373, ptr @.str.6530) - unreachable -ok9567: - %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.cond9568 -for.cond9568: - %t18 = load i64, ptr %a17 - %t19 = icmp slt i64 %t18, %t16 - br i1 %t19, label %for.body9569, label %for.end9571 -for.body9569: - %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 %then9572, label %endif9574 -then9572: - br label %for.step9570 -endif9574: - %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 %panic9575, label %ok9576 -panic9575: - call void @finch_panic(ptr @.str.6531, i64 379, ptr @.str.6532) - unreachable -ok9576: - %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.step9570 -for.step9570: - %t45 = load i64, ptr %a17 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a17 - br label %for.cond9568 -for.end9571: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic9577, label %ok9578 -panic9577: - call void @finch_panic(ptr @.str.6533, i64 381, ptr @.str.6534) - unreachable -ok9578: - %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.cond9579 -while.cond9579: - %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.from9582 -logic.from9582: - br i1 %t55, label %logic.rhs9583, label %logic.end9584 -logic.rhs9583: - %t56 = load { ptr, i64, i64 }, ptr %a14 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 0, %t57 - br i1 %t58, label %range9585, label %inrange9586 -range9585: - call void @finch_panic_index(ptr @.str.6535, i64 383, i64 0, i64 %t57) - unreachable -inrange9586: - %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.6536, 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.rend9587 -logic.rend9587: - br label %logic.end9584 -logic.end9584: - %t66 = phi i1 [ false, %logic.from9582 ], [ %t65, %logic.rend9587 ] - br label %logic.from9588 -logic.from9588: - br i1 %t66, label %logic.rhs9589, label %logic.end9590 -logic.rhs9589: - %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 %range9591, label %inrange9592 -range9591: - call void @finch_panic_index(ptr @.str.6537, i64 383, i64 %t69, i64 %t71) - unreachable -inrange9592: - %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.6538, 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.rend9593 -logic.rend9593: - br label %logic.end9590 -logic.end9590: - %t80 = phi i1 [ false, %logic.from9588 ], [ %t79, %logic.rend9593 ] - br i1 %t80, label %while.body9580, label %while.end9581 -while.body9580: - %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 %range9594, label %inrange9595 -range9594: - call void @finch_panic_index(ptr @.str.6539, i64 384, i64 0, i64 %t82) - unreachable -inrange9595: - %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)) - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, 0 - br i1 %t90, label %panic9596, label %ok9597 -panic9596: - call void @finch_panic(ptr @.str.6540, i64 385, ptr @.str.6541) - unreachable -ok9597: - %t91 = sub i64 %t89, 1 - %t92 = load ptr, ptr %a14 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t91 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store i64 %t91, ptr %t88 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %while.cond9579 -while.end9581: - store i1 false, ptr %a96 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = icmp eq i64 %t98, 2 - br label %logic.from9598 -logic.from9598: - br i1 %t99, label %logic.rhs9599, label %logic.end9600 -logic.rhs9599: - %t100 = load { ptr, i64, i64 }, ptr %a14 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 0, %t101 - br i1 %t102, label %range9601, label %inrange9602 -range9601: - call void @finch_panic_index(ptr @.str.6542, i64 388, i64 0, i64 %t101) - unreachable -inrange9602: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 0 - %t105 = load { ptr, i64, i64 }, ptr %t104 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.6543, i64 1, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.rend9603 -logic.rend9603: - br label %logic.end9600 -logic.end9600: - %t110 = phi i1 [ false, %logic.from9598 ], [ %t109, %logic.rend9603 ] - br i1 %t110, label %then9604, label %endif9606 -then9604: - store i1 true, ptr %a96 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp uge i64 0, %t112 - br i1 %t113, label %range9607, label %inrange9608 -range9607: - call void @finch_panic_index(ptr @.str.6544, i64 390, i64 0, i64 %t112) - unreachable -inrange9608: - %t114 = load ptr, ptr %a14 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif9606 -endif9606: - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t119 = load i64, ptr %t118 - %t120 = icmp ne i64 %t119, 1 - br i1 %t120, label %then9609, label %endif9611 -then9609: - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9611: - %t121 = load { ptr, i64, i64 }, ptr %a14 - %t122 = extractvalue { ptr, i64, i64 } %t121, 1 - %t123 = icmp uge i64 0, %t122 - br i1 %t123, label %range9612, label %inrange9613 -range9612: - call void @finch_panic_index(ptr @.str.6545, i64 395, i64 0, i64 %t122) - unreachable -inrange9613: - %t124 = extractvalue { ptr, i64, i64 } %t121, 0 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - call void @finch_str_copy(ptr %a128, ptr %a127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t132 = load i64, ptr %t131 - %t133 = icmp eq i64 %t132, 0 - br label %logic.from9614 -logic.from9614: - br i1 %t133, label %logic.end9616, label %logic.rhs9615 -logic.rhs9615: - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = extractvalue { ptr, i64, i64 } %t134, 1 - %t136 = icmp uge i64 0, %t135 - br i1 %t136, label %range9617, label %inrange9618 -range9617: - call void @finch_panic_index(ptr @.str.6546, i64 396, i64 0, i64 %t135) - unreachable -inrange9618: - %t137 = extractvalue { ptr, i64, i64 } %t134, 0 - %t138 = getelementptr inbounds i8, ptr %t137, i64 0 - %t139 = load i8, ptr %t138 - %t140 = icmp uge i8 %t139, 48 - br label %logic.from9619 -logic.from9619: - br i1 %t140, label %logic.rhs9620, label %logic.end9621 -logic.rhs9620: - %t141 = load { ptr, i64, i64 }, ptr %a130 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range9622, label %inrange9623 -range9622: - call void @finch_panic_index(ptr @.str.6547, i64 396, i64 0, i64 %t142) - unreachable -inrange9623: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds i8, ptr %t144, i64 0 - %t146 = load i8, ptr %t145 - %t147 = icmp ule i8 %t146, 57 - br label %logic.rend9624 -logic.rend9624: - br label %logic.end9621 -logic.end9621: - %t148 = phi i1 [ false, %logic.from9619 ], [ %t147, %logic.rend9624 ] - br label %logic.from9625 -logic.from9625: - br i1 %t148, label %logic.end9627, label %logic.rhs9626 -logic.rhs9626: - %t149 = load { ptr, i64, i64 }, ptr %a130 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 0, %t150 - br i1 %t151, label %range9628, label %inrange9629 -range9628: - call void @finch_panic_index(ptr @.str.6548, i64 396, i64 0, i64 %t150) - unreachable -inrange9629: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds i8, ptr %t152, i64 0 - %t154 = load i8, ptr %t153 - %t155 = icmp eq i8 %t154, 46 - br label %logic.rend9630 -logic.rend9630: - br label %logic.end9627 -logic.end9627: - %t156 = phi i1 [ true, %logic.from9625 ], [ %t155, %logic.rend9630 ] - %t157 = xor i1 %t156, true - br label %logic.rend9631 -logic.rend9631: - br label %logic.end9616 -logic.end9616: - %t158 = phi i1 [ true, %logic.from9614 ], [ %t157, %logic.rend9631 ] - br i1 %t158, label %then9632, label %endif9634 -then9632: - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9634: - %t159 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.6550, i64 1, i64 0 }, ptr %a162 - %t163 = call i64 @finch_str_find(ptr %a160, ptr %a162) - %t164 = icmp sge i64 %t163, 0 - br label %logic.from9635 -logic.from9635: - br i1 %t164, label %logic.end9637, label %logic.rhs9636 -logic.rhs9636: - %t165 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.6552, i64 1, i64 0 }, ptr %a168 - %t169 = call i64 @finch_str_find(ptr %a166, ptr %a168) - %t170 = icmp sge i64 %t169, 0 - br label %logic.rend9638 -logic.rend9638: - br label %logic.end9637 -logic.end9637: - %t171 = phi i1 [ true, %logic.from9635 ], [ %t170, %logic.rend9638 ] - br label %logic.from9639 -logic.from9639: - br i1 %t171, label %logic.end9641, label %logic.rhs9640 -logic.rhs9640: - %t172 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6554, i64 1, i64 0 }, ptr %a175 - %t176 = call i64 @finch_str_find(ptr %a173, ptr %a175) - %t177 = icmp sge i64 %t176, 0 - br label %logic.rend9642 -logic.rend9642: - br label %logic.end9641 -logic.end9641: - %t178 = phi i1 [ true, %logic.from9639 ], [ %t177, %logic.rend9642 ] - br label %logic.from9643 -logic.from9643: - br i1 %t178, label %logic.rhs9644, label %logic.end9645 -logic.rhs9644: - %t179 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.6556, i64 2, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_starts(ptr %a180, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - %t185 = xor i1 %t184, true - br label %logic.rend9646 -logic.rend9646: - br label %logic.end9645 -logic.end9645: - %t186 = phi i1 [ false, %logic.from9643 ], [ %t185, %logic.rend9646 ] - store i1 %t186, ptr %a187 - %t188 = load i1, ptr %a187 - br i1 %t188, label %then9647, label %endif9649 -then9647: - %t189 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_copy(ptr %a191, ptr %a190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t192, ptr %a193 - br label %while.cond9650 -while.cond9650: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t195 = load i64, ptr %t194 - %t196 = icmp sgt i64 %t195, 0 - br label %logic.from9653 -logic.from9653: - br i1 %t196, label %logic.rhs9654, label %logic.end9655 -logic.rhs9654: - store { ptr, i64, i64 } { ptr @.str.6557, i64 4, i64 0 }, ptr %a197 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = sub i64 %t200, 1 - %t202 = load { ptr, i64, i64 }, ptr %a193 - %t203 = extractvalue { ptr, i64, i64 } %t202, 1 - %t204 = icmp uge i64 %t201, %t203 - br i1 %t204, label %range9656, label %inrange9657 -range9656: - call void @finch_panic_index(ptr @.str.6559, i64 402, i64 %t201, i64 %t203) - unreachable -inrange9657: - %t205 = extractvalue { ptr, i64, i64 } %t202, 0 - %t206 = getelementptr inbounds i8, ptr %t205, i64 %t201 - %t207 = load i8, ptr %t206 - call void @finch_str_from_char(ptr %a208, i8 signext %t207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = call i64 @finch_str_find(ptr %a197, ptr %a210) - %t212 = icmp sge i64 %t211, 0 - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %logic.rend9658 -logic.rend9658: - br label %logic.end9655 -logic.end9655: - %t214 = phi i1 [ false, %logic.from9653 ], [ %t212, %logic.rend9658 ] - br i1 %t214, label %while.body9651, label %while.end9652 -while.body9651: - %t215 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t215, ptr %a216 - %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t219 = load i64, ptr %t218 - %t220 = sub i64 %t219, 1 - call void @finch_str_sub(ptr %a217, ptr %a216, i64 0, i64 %t220, ptr @.str.6560, i64 403) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t221, ptr %a193 - store { ptr, i64, i64 } %t222, ptr %a223 - call void @finch_str_drop(ptr %a223) - br label %while.cond9650 -while.end9652: - %t224 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - store double 0.0, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - %t228 = call i32 @finch_str_try_float(ptr %a227, ptr %a226, ptr %a225) - %t229 = icmp eq i32 %t228, 0 - %t230 = load { ptr, i64, i64 }, ptr %a225 - %t231 = load double, ptr %a226 - br i1 %t229, label %or.failed9659, label %or.ok9660 -or.failed9659: - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a193) - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -or.ok9660: - store double %t231, ptr %a233 - %t234 = load i1, ptr %a96 - br i1 %t234, label %then9661, label %endif9663 -then9661: - %t235 = load double, ptr %a233 - %t236 = fsub double 0.0, %t235 - store double %t236, ptr %a233 - br label %endif9663 -endif9663: - %t237 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 - %t238 = load double, ptr %a233 - %t239 = insertvalue %S.cimport.CConst %t237, double %t238, 2 - %t240 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_copy(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = insertvalue %S.cimport.CConst %t239, { ptr, i64, i64 } %t243, 3 - %t245 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t244, 0 - %t246 = insertvalue %S.cimport.Number %t245, i1 true, 1 - call void @finch_str_drop(ptr %a193) - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t246 -endif9649: - %t247 = load { ptr, i64, i64 }, ptr %a130 - %t248 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t247) - store %S.cimport.Number %t248, ptr %a249 - %t250 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.from9664 -logic.from9664: - br i1 %t251, label %logic.rhs9665, label %logic.end9666 -logic.rhs9665: - %t252 = load i1, ptr %a96 - br label %logic.rend9667 -logic.rend9667: - br label %logic.end9666 -logic.end9666: - %t253 = phi i1 [ false, %logic.from9664 ], [ %t252, %logic.rend9667 ] - br i1 %t253, label %then9668, label %endif9670 -then9668: - %t254 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 - %t255 = getelementptr inbounds %S.cimport.CConst, ptr %t254, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = sub i64 0, %t256 - %t258 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 - %t259 = getelementptr inbounds %S.cimport.CConst, ptr %t258, i32 0, i32 1 - store i64 %t257, ptr %t259 - br label %endif9670 -endif9670: - %t260 = load %S.cimport.Number, ptr %a249 - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t260 -} - -define internal i32 @finch.cimport.visitTop(%S.C.CXCursor %p0, %S.C.CXCursor %p1, ptr %p2) { -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.drop.S_cimport_Number(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Number, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CConst(ptr %t1) - ret void -} - -define internal void @finch.cimport.visit(ptr %p0, %S.C.CXCursor %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca %S.cimport.CFunc, align 16 - %a125 = alloca %S.C.CXCursor, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i32, align 16 - %a148 = alloca %S.cimport.CFunc, align 16 - %a149 = alloca %S.cimport.CFunc, align 16 - %a152 = alloca %S.cimport.CFunc, align 16 - %a153 = alloca %S.C.CXType, align 16 - %a154 = alloca %S.C.CXType, align 16 - %a156 = alloca %S.C.CXCursor, align 16 - %a158 = alloca %S.C.CXType, align 16 - %a160 = alloca %S.C.CXType, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i32, align 16 - %a184 = alloca %S.cimport.CFunc, align 16 - %a185 = alloca %S.cimport.CFunc, align 16 - %a188 = alloca %S.cimport.CFunc, align 16 - %a190 = alloca %S.C.CXType, align 16 - %a192 = alloca %S.C.CXType, align 16 - %a195 = alloca %S.cimport.Mapped, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca %S.C.CXType, align 16 - %a218 = alloca i64, align 16 - %a220 = alloca i64, align 16 - %a228 = alloca %S.C.CXType, align 16 - %a230 = alloca %S.C.CXType, align 16 - %a235 = alloca %S.cimport.Mapped, align 16 - %a242 = alloca %S.ast.Type, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca %S.C.CXType, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca i32, align 16 - %a281 = alloca %S.cimport.CFunc, align 16 - %a282 = alloca %S.cimport.CFunc, align 16 - %a285 = alloca %S.cimport.CFunc, align 16 - %a289 = alloca %S.C.CXCursor, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca %S.C.CXType, align 16 - %a304 = alloca %S.C.CXCursor, align 16 - %a307 = alloca %S.cimport.Mapped, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca i32, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a332 = alloca %S.ast.Type, align 16 - %a336 = alloca %S.C.CXCursor, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca %S.C.CXCursor, align 16 - %a354 = alloca [32 x i8], align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca i32, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca %S.C.CXCursor, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca %S.C.CXCursor, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca i32, align 16 - %a425 = alloca %S.cimport.CConst, align 16 - %a429 = alloca %S.C.CXCursor, align 16 - %a433 = alloca %S.C.CXCursor, align 16 - %a440 = alloca %S.cimport.Number, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca i32, align 16 - %a471 = alloca %S.cimport.CConst, align 16 - %a472 = alloca %S.cimport.CConst, align 16 - %a475 = alloca %S.cimport.CConst, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - %t3 = load %S.C.CXCursor, ptr %a2 - 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 %then9671, label %else9672 -then9671: - %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 %then9674, label %endif9676 -then9674: - %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 %panic9677, label %ok9678 -panic9677: - call void @finch_panic(ptr @.str.6561, i64 437, ptr @.str.6562) - unreachable -ok9678: - %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.from9679 -logic.from9679: - br i1 %t43, label %logic.rhs9680, label %logic.end9681 -logic.rhs9680: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic9682, label %ok9683 -panic9682: - call void @finch_panic(ptr @.str.6563, i64 437, ptr @.str.6564) - unreachable -ok9683: - %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 %panic9684, label %ok9685 -panic9684: - call void @finch_panic(ptr @.str.6565, i64 437, ptr @.str.6566) - unreachable -ok9685: - %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.missing9686, label %map.found9687 -map.missing9686: - 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.6567, i64 437, ptr %a55) - unreachable -map.found9687: - %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.rend9688 -logic.rend9688: - br label %logic.end9681 -logic.end9681: - %t65 = phi i1 [ false, %logic.from9679 ], [ %t64, %logic.rend9688 ] - store i1 %t65, ptr %a66 - %t67 = load i1, ptr %a66 - %t68 = xor i1 %t67, true - br label %logic.from9689 -logic.from9689: - br i1 %t68, label %logic.rhs9690, label %logic.end9691 -logic.rhs9690: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic9692, label %ok9693 -panic9692: - call void @finch_panic(ptr @.str.6568, i64 438, ptr @.str.6569) - unreachable -ok9693: - %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.rend9694 -logic.rend9694: - br label %logic.end9691 -logic.end9691: - %t78 = phi i1 [ false, %logic.from9689 ], [ %t77, %logic.rend9694 ] - br i1 %t78, label %then9695, label %endif9697 -then9695: - %t79 = load { ptr, i64, i64 }, ptr %a9 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9698, label %ok9699 -panic9698: - call void @finch_panic(ptr @.str.6570, i64 439, ptr @.str.6571) - unreachable -ok9699: - %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.new9700, label %map.have9701 -map.new9700: - %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.have9701 -map.have9701: - %t94 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2 - store { ptr, i64, i64 } %t79, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif9697 -endif9697: - call void @finch_str_drop(ptr %a36) - br label %endif9676 -endif9676: - br label %endif9673 -else9672: - %t100 = load i32, ptr %a13 - %t101 = icmp eq i32 %t100, 8 - br i1 %t101, label %then9702, label %else9703 -then9702: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic9705, label %ok9706 -panic9705: - call void @finch_panic(ptr @.str.6572, i64 443, ptr @.str.6573) - unreachable -ok9706: - %t104 = getelementptr inbounds %S.cimport.Importer, ptr %t102, i32 0, i32 0 - %t105 = getelementptr inbounds %S.cimport.CImports, ptr %t104, i32 0, i32 0 - %t106 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = call i64 @finch_map_find(ptr %t105, ptr %a107, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t109 = icmp sge i64 %t108, 0 - br i1 %t109, label %then9707, label %endif9709 -then9707: - call void @finch_str_drop(ptr %a9) - ret void -endif9709: - %t110 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = insertvalue %S.cimport.CFunc zeroinitializer, { ptr, i64, i64 } %t113, 0 - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic9710, label %ok9711 -panic9710: - call void @finch_panic(ptr @.str.6574, i64 446, ptr @.str.6575) - unreachable -ok9711: - %t117 = getelementptr inbounds %S.cimport.Importer, ptr %t115, i32 0, i32 2 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.cimport.CFunc %t114, { ptr, i64, i64 } %t121, 1 - store %S.cimport.CFunc %t122, ptr %a123 - %t124 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t124, ptr %a125 - %t126 = call i32 @clang_Cursor_getStorageClass(ptr %a125) - %t127 = icmp eq i32 %t126, 3 - br i1 %t127, label %then9712, label %endif9714 -then9712: - %t128 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } { ptr @.str.6576, i64 62, i64 0 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.cimport.CFunc, ptr %a123 - %t132 = load ptr, ptr %a1 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic9715, label %ok9716 -panic9715: - call void @finch_panic(ptr @.str.6577, i64 449, ptr @.str.6578) - unreachable -ok9716: - %t134 = getelementptr inbounds %S.cimport.Importer, ptr %t132, i32 0, i32 0 - %t135 = getelementptr inbounds %S.cimport.CImports, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t136, ptr %a137 - store i32 0, ptr %a138 - %t139 = call i64 @finch_map_slot(ptr %t135, ptr %a137, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a138) - %t140 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t135, i32 0, i32 0 - %t141 = load ptr, ptr %t140 - %t142 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t141, i64 %t139 - %t143 = load i32, ptr %a138 - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %map.new9717, label %map.have9718 -map.new9717: - %t145 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 1 - call void @finch_str_copy(ptr %t145, ptr %a137) - %t146 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t146 - br label %map.have9718 -map.have9718: - %t147 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 - store %S.cimport.CFunc %t131, ptr %a148 - call void @finch.copy.S_cimport_CFunc(ptr %a149, ptr %a148) - %t150 = load %S.cimport.CFunc, ptr %a149 - %t151 = load %S.cimport.CFunc, ptr %t147 - store %S.cimport.CFunc %t150, ptr %t147 - store %S.cimport.CFunc %t151, ptr %a152 - call void @finch.drop.S_cimport_CFunc(ptr %a152) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - call void @finch_str_drop(ptr %a9) - ret void -endif9714: - %t155 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t155, ptr %a156 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a154, ptr %a156) - %t157 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t157, ptr %a158 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a153, ptr %a158) - %t159 = load %S.C.CXType, ptr %a153 - store %S.C.CXType %t159, ptr %a160 - %t161 = getelementptr inbounds %S.C.CXType, ptr %a160, i32 0, i32 0 - %t162 = load i32, ptr %t161 - %t163 = icmp eq i32 %t162, 110 - br i1 %t163, label %then9719, label %endif9721 -then9719: - %t164 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } { ptr @.str.6579, i64 42, i64 0 }, ptr %t164 - store { ptr, i64, i64 } %t165, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load %S.cimport.CFunc, ptr %a123 - %t168 = load ptr, ptr %a1 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic9722, label %ok9723 -panic9722: - call void @finch_panic(ptr @.str.6580, i64 455, ptr @.str.6581) - unreachable -ok9723: - %t170 = getelementptr inbounds %S.cimport.Importer, ptr %t168, i32 0, i32 0 - %t171 = getelementptr inbounds %S.cimport.CImports, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t172, ptr %a173 - store i32 0, ptr %a174 - %t175 = call i64 @finch_map_slot(ptr %t171, ptr %a173, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a174) - %t176 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t171, i32 0, i32 0 - %t177 = load ptr, ptr %t176 - %t178 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t177, i64 %t175 - %t179 = load i32, ptr %a174 - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %map.new9724, label %map.have9725 -map.new9724: - %t181 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 1 - call void @finch_str_copy(ptr %t181, ptr %a173) - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t182 - br label %map.have9725 -map.have9725: - %t183 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 - store %S.cimport.CFunc %t167, ptr %a184 - call void @finch.copy.S_cimport_CFunc(ptr %a185, ptr %a184) - %t186 = load %S.cimport.CFunc, ptr %a185 - %t187 = load %S.cimport.CFunc, ptr %t183 - store %S.cimport.CFunc %t186, ptr %t183 - store %S.cimport.CFunc %t187, ptr %a188 - call void @finch.drop.S_cimport_CFunc(ptr %a188) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - call void @finch_str_drop(ptr %a9) - ret void -endif9721: - %t189 = load ptr, ptr %a1 - %t191 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t191, ptr %a192 - call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a190, ptr %a192) - %t193 = load %S.C.CXType, ptr %a190 - %t194 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t189, %S.C.CXType %t193, i1 true, i1 false) - store %S.cimport.Mapped %t194, ptr %a195 - %t196 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 2 - %t197 = load i1, ptr %t196 - br i1 %t197, label %then9726, label %else9727 -then9726: - %t198 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 0 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 2 - store %S.ast.Type %t199, ptr %a201 - call void @finch.copy.S_ast_Type(ptr %a202, ptr %a201) - %t203 = load %S.ast.Type, ptr %a202 - %t204 = load %S.ast.Type, ptr %t200 - store %S.ast.Type %t203, ptr %t200 - store %S.ast.Type %t204, ptr %a205 - call void @finch.drop.S_ast_Type(ptr %a205) - br label %endif9728 -else9727: - %t206 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 1 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_copy(ptr %a210, ptr %a209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - %t212 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t211, ptr %t208 - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif9728 -endif9728: - %t214 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t214, ptr %a215 - %t216 = call i32 @clang_getNumArgTypes(ptr %a215) - %t217 = sext i32 %t216 to i64 - store i64 %t217, ptr %a218 - %t219 = load i64, ptr %a218 - store i64 0, ptr %a220 - br label %for.cond9729 -for.cond9729: - %t221 = load i64, ptr %a220 - %t222 = icmp slt i64 %t221, %t219 - br i1 %t222, label %for.body9730, label %for.end9732 -for.body9730: - %t223 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp sgt i64 %t225, 0 - br i1 %t226, label %then9733, label %endif9735 -then9733: - br label %for.end9732 -endif9735: - %t227 = load ptr, ptr %a1 - %t229 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t229, ptr %a230 - %t231 = load i64, ptr %a220 - %t232 = trunc i64 %t231 to i32 - call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a228, ptr %a230, i32 %t232) - %t233 = load %S.C.CXType, ptr %a228 - %t234 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t227, %S.C.CXType %t233, i1 true, i1 true) - store %S.cimport.Mapped %t234, ptr %a235 - %t236 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 2 - %t237 = load i1, ptr %t236 - br i1 %t237, label %then9736, label %else9737 -then9736: - %t238 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 3 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 - %t240 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 0 - %t241 = load %S.ast.Type, ptr %t240 - store %S.ast.Type %t241, ptr %a242 - call void @finch.copy.S_ast_Type(ptr %a243, ptr %a242) - %t244 = load %S.ast.Type, ptr %a243 - %t245 = load i64, ptr %t239 - %t246 = add i64 %t245, 1 - call void @finch_arr_reserve(ptr %t238, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t247 = load ptr, ptr %t238 - %t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i64 %t245 - store %S.ast.Type %t244, ptr %t248 - store i64 %t246, ptr %t239 - br label %endif9738 -else9737: - %t249 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 1 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - store { ptr, i64, i64 } %t250, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - %t255 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } %t254, ptr %t251 - store { ptr, i64, i64 } %t255, ptr %a256 - call void @finch_str_drop(ptr %a256) - br label %endif9738 -endif9738: - call void @finch.drop.S_cimport_Mapped(ptr %a235) - br label %for.step9731 -for.step9731: - %t257 = load i64, ptr %a220 - %t258 = add i64 %t257, 1 - store i64 %t258, ptr %a220 - br label %for.cond9729 -for.end9732: - %t259 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t259, ptr %a260 - %t261 = call i32 @clang_isFunctionTypeVariadic(ptr %a260) - %t262 = icmp ne i32 %t261, 0 - %t263 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 4 - store i1 %t262, ptr %t263 - %t264 = load %S.cimport.CFunc, ptr %a123 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic9739, label %ok9740 -panic9739: - call void @finch_panic(ptr @.str.6582, i64 477, ptr @.str.6583) - unreachable -ok9740: - %t267 = getelementptr inbounds %S.cimport.Importer, ptr %t265, i32 0, i32 0 - %t268 = getelementptr inbounds %S.cimport.CImports, ptr %t267, i32 0, i32 0 - %t269 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t269, ptr %a270 - store i32 0, ptr %a271 - %t272 = call i64 @finch_map_slot(ptr %t268, ptr %a270, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a271) - %t273 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t268, i32 0, i32 0 - %t274 = load ptr, ptr %t273 - %t275 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t274, i64 %t272 - %t276 = load i32, ptr %a271 - %t277 = icmp ne i32 %t276, 0 - br i1 %t277, label %map.new9741, label %map.have9742 -map.new9741: - %t278 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 1 - call void @finch_str_copy(ptr %t278, ptr %a270) - %t279 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t279 - br label %map.have9742 -map.have9742: - %t280 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 - store %S.cimport.CFunc %t264, ptr %a281 - call void @finch.copy.S_cimport_CFunc(ptr %a282, ptr %a281) - %t283 = load %S.cimport.CFunc, ptr %a282 - %t284 = load %S.cimport.CFunc, ptr %t280 - store %S.cimport.CFunc %t283, ptr %t280 - store %S.cimport.CFunc %t284, ptr %a285 - call void @finch.drop.S_cimport_CFunc(ptr %a285) - call void @finch.drop.S_cimport_Mapped(ptr %a195) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - br label %endif9704 -else9703: - %t286 = load i32, ptr %a13 - %t287 = icmp eq i32 %t286, 9 - br i1 %t287, label %then9743, label %else9744 -then9743: - %t288 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t288, ptr %a289 - %t290 = call i32 @clang_Cursor_getStorageClass(ptr %a289) - %t291 = icmp ne i32 %t290, 2 - br label %logic.from9746 -logic.from9746: - br i1 %t291, label %logic.end9748, label %logic.rhs9747 -logic.rhs9747: - %t292 = load ptr, ptr %a1 - %t293 = icmp eq ptr %t292, null - br i1 %t293, label %panic9749, label %ok9750 -panic9749: - call void @finch_panic(ptr @.str.6584, i64 479, ptr @.str.6585) - unreachable -ok9750: - %t294 = getelementptr inbounds %S.cimport.Importer, ptr %t292, i32 0, i32 0 - %t295 = getelementptr inbounds %S.cimport.CImports, ptr %t294, i32 0, i32 2 - %t296 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t296, ptr %a297 - %t298 = call i64 @finch_map_find(ptr %t295, ptr %a297, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t299 = icmp sge i64 %t298, 0 - br label %logic.rend9751 -logic.rend9751: - br label %logic.end9748 -logic.end9748: - %t300 = phi i1 [ true, %logic.from9746 ], [ %t299, %logic.rend9751 ] - br i1 %t300, label %then9752, label %endif9754 -then9752: - call void @finch_str_drop(ptr %a9) - ret void -endif9754: - %t301 = load ptr, ptr %a1 - %t303 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t303, ptr %a304 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a302, ptr %a304) - %t305 = load %S.C.CXType, ptr %a302 - %t306 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t301, %S.C.CXType %t305, i1 false, i1 false) - store %S.cimport.Mapped %t306, ptr %a307 - %t308 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 2 - %t309 = load i1, ptr %t308 - br i1 %t309, label %then9755, label %endif9757 -then9755: - %t310 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 0 - %t311 = load %S.ast.Type, ptr %t310 - %t312 = load ptr, ptr %a1 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic9758, label %ok9759 -panic9758: - call void @finch_panic(ptr @.str.6586, i64 484, ptr @.str.6587) - unreachable -ok9759: - %t314 = getelementptr inbounds %S.cimport.Importer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds %S.cimport.CImports, ptr %t314, i32 0, i32 2 - %t316 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t316, ptr %a317 - store i32 0, ptr %a318 - %t319 = call i64 @finch_map_slot(ptr %t315, ptr %a317, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a318) - %t320 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t315, i32 0, i32 0 - %t321 = load ptr, ptr %t320 - %t322 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t321, i64 %t319 - %t323 = load i32, ptr %a318 - %t324 = icmp ne i32 %t323, 0 - br i1 %t324, label %map.new9760, label %map.have9761 -map.new9760: - %t325 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 1 - call void @finch_str_copy(ptr %t325, ptr %a317) - %t326 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 - store %S.ast.Type zeroinitializer, ptr %t326 - br label %map.have9761 -map.have9761: - %t327 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 - store %S.ast.Type %t311, ptr %a328 - call void @finch.copy.S_ast_Type(ptr %a329, ptr %a328) - %t330 = load %S.ast.Type, ptr %a329 - %t331 = load %S.ast.Type, ptr %t327 - store %S.ast.Type %t330, ptr %t327 - store %S.ast.Type %t331, ptr %a332 - call void @finch.drop.S_ast_Type(ptr %a332) - br label %endif9757 -endif9757: - call void @finch.drop.S_cimport_Mapped(ptr %a307) - br label %endif9745 -else9744: - %t333 = load i32, ptr %a13 - %t334 = icmp eq i32 %t333, 2 - br i1 %t334, label %then9762, label %else9763 -then9762: - %t335 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t335, ptr %a336 - %t337 = call i32 @clang_isCursorDefinition(ptr %a336) - %t338 = icmp ne i32 %t337, 0 - br label %logic.from9765 -logic.from9765: - br i1 %t338, label %logic.rhs9766, label %logic.end9767 -logic.rhs9766: - %t339 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t340 = load i64, ptr %t339 - %t341 = icmp sgt i64 %t340, 0 - br label %logic.rend9768 -logic.rend9768: - br label %logic.end9767 -logic.end9767: - %t342 = phi i1 [ false, %logic.from9765 ], [ %t341, %logic.rend9768 ] - br label %logic.from9769 -logic.from9769: - br i1 %t342, label %logic.rhs9770, label %logic.end9771 -logic.rhs9770: - %t343 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6589, i64 1, i64 0 }, ptr %a346 - %t347 = call i64 @finch_str_find(ptr %a344, ptr %a346) - %t348 = icmp sge i64 %t347, 0 - %t349 = xor i1 %t348, true - br label %logic.rend9772 -logic.rend9772: - br label %logic.end9771 -logic.end9771: - %t350 = phi i1 [ false, %logic.from9769 ], [ %t349, %logic.rend9772 ] - br i1 %t350, label %then9773, label %endif9775 -then9773: - %t351 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t351, ptr %a352 - %t353 = call [2 x i64] @clang_getCursorUSR(ptr %a352) - store [2 x i64] %t353, ptr %a354 - %t355 = load %S.C.CXString, ptr %a354 - %t356 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t355) - store { ptr, i64, i64 } %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = icmp eq ptr %t358, null - br i1 %t359, label %panic9776, label %ok9777 -panic9776: - call void @finch_panic(ptr @.str.6590, i64 489, ptr @.str.6591) - unreachable -ok9777: - %t360 = getelementptr inbounds %S.cimport.Importer, ptr %t358, i32 0, i32 3 - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a362 - %t363 = call i64 @finch_map_find(ptr %t360, ptr %a362, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t364 = icmp sge i64 %t363, 0 - %t365 = xor i1 %t364, true - br i1 %t365, label %then9778, label %endif9780 -then9778: - %t366 = load { ptr, i64, i64 }, ptr %a9 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic9781, label %ok9782 -panic9781: - call void @finch_panic(ptr @.str.6592, i64 490, ptr @.str.6593) - unreachable -ok9782: - %t369 = getelementptr inbounds %S.cimport.Importer, ptr %t367, i32 0, i32 3 - %t370 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t370, ptr %a371 - store i32 0, ptr %a372 - %t373 = call i64 @finch_map_slot(ptr %t369, ptr %a371, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a372) - %t374 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t369, i32 0, i32 0 - %t375 = load ptr, ptr %t374 - %t376 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t375, i64 %t373 - %t377 = load i32, ptr %a372 - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %map.new9783, label %map.have9784 -map.new9783: - %t379 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 1 - call void @finch_str_copy(ptr %t379, ptr %a371) - %t380 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t380 - br label %map.have9784 -map.have9784: - %t381 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 - store { ptr, i64, i64 } %t366, ptr %a382 - call void @finch_str_copy(ptr %a383, ptr %a382) - %t384 = load { ptr, i64, i64 }, ptr %a383 - %t385 = load { ptr, i64, i64 }, ptr %t381 - store { ptr, i64, i64 } %t384, ptr %t381 - store { ptr, i64, i64 } %t385, ptr %a386 - call void @finch_str_drop(ptr %a386) - br label %endif9780 -endif9780: - call void @finch_str_drop(ptr %a357) - br label %endif9775 -endif9775: - br label %endif9764 -else9763: - %t387 = load i32, ptr %a13 - %t388 = icmp eq i32 %t387, 5 - br i1 %t388, label %then9785, label %else9786 -then9785: - %t389 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t389, ptr %a390 - %t391 = load ptr, ptr %a1 - %t392 = call i32 @clang_visitChildren(ptr %a390, ptr @finch.c.cimport.visitTop, ptr %t391) - br label %endif9787 -else9786: - %t393 = load i32, ptr %a13 - %t394 = icmp eq i32 %t393, 7 - br i1 %t394, label %then9788, label %else9789 -then9788: - %t395 = load ptr, ptr %a1 - %t396 = icmp eq ptr %t395, null - br i1 %t396, label %panic9791, label %ok9792 -panic9791: - call void @finch_panic(ptr @.str.6594, i64 496, ptr @.str.6595) - unreachable -ok9792: - %t397 = getelementptr inbounds %S.cimport.Importer, ptr %t395, i32 0, i32 0 - %t398 = getelementptr inbounds %S.cimport.CImports, ptr %t397, i32 0, i32 1 - %t399 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t399, ptr %a400 - %t401 = call i64 @finch_map_find(ptr %t398, ptr %a400, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t402 = icmp sge i64 %t401, 0 - %t403 = xor i1 %t402, true - br i1 %t403, label %then9793, label %endif9795 -then9793: - %t404 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t404, ptr %a405 - %t406 = call i64 @clang_getEnumConstantDeclValue(ptr %a405) - %t407 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t406, 1 - %t408 = load ptr, ptr %a1 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic9796, label %ok9797 -panic9796: - call void @finch_panic(ptr @.str.6596, i64 497, ptr @.str.6597) - unreachable -ok9797: - %t410 = getelementptr inbounds %S.cimport.Importer, ptr %t408, i32 0, i32 0 - %t411 = getelementptr inbounds %S.cimport.CImports, ptr %t410, i32 0, i32 1 - %t412 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t412, ptr %a413 - store i32 0, ptr %a414 - %t415 = call i64 @finch_map_slot(ptr %t411, ptr %a413, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a414) - %t416 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t411, i32 0, i32 0 - %t417 = load ptr, ptr %t416 - %t418 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t417, i64 %t415 - %t419 = load i32, ptr %a414 - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %map.new9798, label %map.have9799 -map.new9798: - %t421 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 1 - call void @finch_str_copy(ptr %t421, ptr %a413) - %t422 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t422 - br label %map.have9799 -map.have9799: - %t423 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 - %t424 = load %S.cimport.CConst, ptr %t423 - store %S.cimport.CConst %t407, ptr %t423 - store %S.cimport.CConst %t424, ptr %a425 - call void @finch.drop.S_cimport_CConst(ptr %a425) - br label %endif9795 -endif9795: - br label %endif9790 -else9789: - %t426 = load i32, ptr %a13 - %t427 = icmp eq i32 %t426, 501 - br i1 %t427, label %then9800, label %endif9802 -then9800: - %t428 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t428, ptr %a429 - %t430 = call i32 @clang_Cursor_isMacroBuiltin(ptr %a429) - %t431 = icmp ne i32 %t430, 0 - br label %logic.from9803 -logic.from9803: - br i1 %t431, label %logic.end9805, label %logic.rhs9804 -logic.rhs9804: - %t432 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t432, ptr %a433 - %t434 = call i32 @clang_Cursor_isMacroFunctionLike(ptr %a433) - %t435 = icmp ne i32 %t434, 0 - br label %logic.rend9806 -logic.rend9806: - br label %logic.end9805 -logic.end9805: - %t436 = phi i1 [ true, %logic.from9803 ], [ %t435, %logic.rend9806 ] - br i1 %t436, label %then9807, label %endif9809 -then9807: - call void @finch_str_drop(ptr %a9) - ret void -endif9809: - %t437 = load ptr, ptr %a1 - %t438 = load %S.C.CXCursor, ptr %a2 - %t439 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t437, %S.C.CXCursor %t438) - store %S.cimport.Number %t439, ptr %a440 - %t441 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 1 - %t442 = load i1, ptr %t441 - br label %logic.from9810 -logic.from9810: - br i1 %t442, label %logic.rhs9811, label %logic.end9812 -logic.rhs9811: - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic9813, label %ok9814 -panic9813: - call void @finch_panic(ptr @.str.6598, i64 504, ptr @.str.6599) - unreachable -ok9814: - %t445 = getelementptr inbounds %S.cimport.Importer, ptr %t443, i32 0, i32 0 - %t446 = getelementptr inbounds %S.cimport.CImports, ptr %t445, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t447, ptr %a448 - %t449 = call i64 @finch_map_find(ptr %t446, ptr %a448, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t450 = icmp sge i64 %t449, 0 - %t451 = xor i1 %t450, true - br label %logic.rend9815 -logic.rend9815: - br label %logic.end9812 -logic.end9812: - %t452 = phi i1 [ false, %logic.from9810 ], [ %t451, %logic.rend9815 ] - br i1 %t452, label %then9816, label %endif9818 -then9816: - %t453 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 0 - %t454 = load %S.cimport.CConst, ptr %t453 - %t455 = load ptr, ptr %a1 - %t456 = icmp eq ptr %t455, null - br i1 %t456, label %panic9819, label %ok9820 -panic9819: - call void @finch_panic(ptr @.str.6600, i64 505, ptr @.str.6601) - unreachable -ok9820: - %t457 = getelementptr inbounds %S.cimport.Importer, ptr %t455, i32 0, i32 0 - %t458 = getelementptr inbounds %S.cimport.CImports, ptr %t457, i32 0, i32 1 - %t459 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t459, ptr %a460 - store i32 0, ptr %a461 - %t462 = call i64 @finch_map_slot(ptr %t458, ptr %a460, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a461) - %t463 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t458, i32 0, i32 0 - %t464 = load ptr, ptr %t463 - %t465 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t464, i64 %t462 - %t466 = load i32, ptr %a461 - %t467 = icmp ne i32 %t466, 0 - br i1 %t467, label %map.new9821, label %map.have9822 -map.new9821: - %t468 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 1 - call void @finch_str_copy(ptr %t468, ptr %a460) - %t469 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t469 - br label %map.have9822 -map.have9822: - %t470 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 - store %S.cimport.CConst %t454, ptr %a471 - call void @finch.copy.S_cimport_CConst(ptr %a472, ptr %a471) - %t473 = load %S.cimport.CConst, ptr %a472 - %t474 = load %S.cimport.CConst, ptr %t470 - store %S.cimport.CConst %t473, ptr %t470 - store %S.cimport.CConst %t474, ptr %a475 - call void @finch.drop.S_cimport_CConst(ptr %a475) - br label %endif9818 -endif9818: - call void @finch.drop.S_cimport_Number(ptr %a440) - br label %endif9802 -endif9802: - br label %endif9790 -endif9790: - br label %endif9787 -endif9787: - br label %endif9764 -endif9764: - br label %endif9745 -endif9745: - br label %endif9704 -endif9704: - br label %endif9673 -endif9673: - call void @finch_str_drop(ptr %a9) - ret void -} - -define internal void @finch.drop.map_str_str(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9826 -n.cond9826: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9827, label %n.end9828 -n.body9827: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9829, label %entry.next9830 -entry.live9829: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 2 - call void @finch_str_drop(ptr %t13) - br label %entry.next9830 -entry.next9830: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9826 -n.end9828: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_bool(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9831 -n.cond9831: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9832, label %n.end9833 -n.body9832: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9834, label %entry.next9835 -entry.live9834: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 2 - br label %entry.next9835 -entry.next9835: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9831 -n.end9833: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_Importer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CImports(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_bool(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_ptr(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.C.CXUnsavedFile, align 16 - %a138 = alloca ptr, align 16 - %a140 = alloca i64, align 16 - %a153 = alloca i32, 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 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca i64, align 16 - %a183 = alloca i64, align 16 - %a190 = alloca ptr, align 16 - %a196 = alloca [32 x i8], align 16 - %a199 = 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 - %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 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = 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 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca %S.C.CXCursor, align 16 - %a321 = alloca %S.C.CXCursor, align 16 - %a329 = alloca %S.cimport.CImports, align 16 - %a330 = 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 %then9823, label %endif9825 -then9823: - %t10 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t11 = load %S.cimport.CImports, ptr %t10 - store %S.cimport.CImports %t11, ptr %a12 - call void @finch.copy.S_cimport_CImports(ptr %a13, ptr %a12) - %t14 = load %S.cimport.CImports, ptr %a13 - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t15 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t16 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t15, %S.cimport.CImports %t14, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t16 -endif9825: - %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.6602, i64 2, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - store { ptr, i64, i64 } { ptr @.str.6603, i64 1, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 - store { ptr, i64, i64 } { ptr @.str.6604, 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 %then9836, label %endif9838 -then9836: - %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.6605, 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 %endif9838 -endif9838: - %t39 = load i1, ptr %a4 - br i1 %t39, label %then9839, label %endif9841 -then9839: - %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.6606, i64 19, i64 0 }, ptr %t44 - store i64 %t42, ptr %t40 - br label %endif9841 -endif9841: - store i64 0, ptr %a45 - br label %each.cond9842 -each.cond9842: - %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.body9843, label %each.end9845 -each.body9843: - %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.6607, 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.step9844 -each.step9844: - %t64 = load i64, ptr %a45 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a45 - br label %each.cond9842 -each.end9845: - %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.cond9846 -each.cond9846: - %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.body9847, label %each.end9849 -each.body9847: - %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.step9848 -each.step9848: - %t87 = load i64, ptr %a69 - %t88 = add i64 %t87, 1 - store i64 %t88, ptr %a69 - br label %each.cond9846 -each.end9849: - call void @finch.drop.arr_str(ptr %a68) - store { ptr, i64, i64 } zeroinitializer, ptr %a89 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 0, ptr %a92 - br label %for.cond9850 -for.cond9850: - %t93 = load i64, ptr %a92 - %t94 = icmp slt i64 %t93, %t91 - br i1 %t94, label %for.body9851, label %for.end9853 -for.body9851: - %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 %range9854, label %inrange9855 -range9854: - call void @finch_panic_index(ptr @.str.6608, i64 532, i64 %t96, i64 %t98) - unreachable -inrange9855: - %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.6609, 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.step9852 -for.step9852: - %t110 = load i64, ptr %a92 - %t111 = add i64 %t110, 1 - store i64 %t111, ptr %a92 - br label %for.cond9850 -for.end9853: - %t112 = call ptr @clang_createIndex(i32 0, i32 0) - store ptr %t112, ptr %a113 - store i64 0, ptr %a114 - br label %each.cond9856 -each.cond9856: - %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.body9857, label %each.end9859 -each.body9857: - %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.6610, 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.6611, i64 2, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t128, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a134 - %t135 = load { ptr, i64, i64 }, ptr %a134 - %t136 = call %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } { ptr @.str.6612, i64 14, i64 0 }, { ptr, i64, i64 } %t135) - store %S.C.CXUnsavedFile %t136, ptr %a137 - store ptr null, ptr %a138 - %t139 = or i64 1, 64 - store i64 %t139, ptr %a140 - %t141 = load ptr, ptr %a113 - %t142 = extractvalue { ptr, i64, i64 } { ptr @.str.6613, i64 14, i64 0 }, 0 - %t143 = icmp eq ptr %t142, null - %t144 = select i1 %t143, ptr @.str.6614, ptr %t142 - %t145 = load { ptr, i64, i64 }, ptr %a89 - %t146 = extractvalue { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 - %t148 = load i64, ptr %t147 - %t149 = trunc i64 %t148 to i32 - %t150 = load i64, ptr %a140 - %t151 = trunc i64 %t150 to i32 - %t152 = call i32 @clang_parseTranslationUnit2(ptr %t141, ptr %t144, ptr %t146, i32 %t149, ptr %a137, i32 1, i32 %t151, ptr %a138) - store i32 %t152, ptr %a153 - %t154 = load i32, ptr %a153 - %t155 = icmp ne i32 %t154, 0 - br label %logic.from9860 -logic.from9860: - br i1 %t155, label %logic.end9862, label %logic.rhs9861 -logic.rhs9861: - %t156 = load ptr, ptr %a138 - %t157 = icmp eq ptr %t156, null - br label %logic.rend9863 -logic.rend9863: - br label %logic.end9862 -logic.end9862: - %t158 = phi i1 [ true, %logic.from9860 ], [ %t157, %logic.rend9863 ] - br i1 %t158, label %then9864, label %endif9866 -then9864: - %t159 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6615, i64 33, 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.cimport.Header, ptr %a122, i32 0, i32 0 - %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) - store { ptr, i64, i64 } %t164, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6616, i64 1, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t177 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t176, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t177 -endif9866: - %t178 = load ptr, ptr %a138 - %t179 = call i32 @clang_getNumDiagnostics(ptr %t178) - %t180 = zext i32 %t179 to i64 - store i64 %t180, ptr %a181 - %t182 = load i64, ptr %a181 - store i64 0, ptr %a183 - br label %for.cond9867 -for.cond9867: - %t184 = load i64, ptr %a183 - %t185 = icmp slt i64 %t184, %t182 - br i1 %t185, label %for.body9868, label %for.end9870 -for.body9868: - %t186 = load ptr, ptr %a138 - %t187 = load i64, ptr %a183 - %t188 = trunc i64 %t187 to i32 - %t189 = call ptr @clang_getDiagnostic(ptr %t186, i32 %t188) - store ptr %t189, ptr %a190 - %t191 = load ptr, ptr %a190 - %t192 = call i32 @clang_getDiagnosticSeverity(ptr %t191) - %t193 = icmp sge i32 %t192, 3 - br i1 %t193, label %then9871, label %endif9873 -then9871: - %t194 = load ptr, ptr %a190 - %t195 = call [2 x i64] @clang_getDiagnosticSpelling(ptr %t194) - store [2 x i64] %t195, ptr %a196 - %t197 = load %S.C.CXString, ptr %a196 - %t198 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t200) - %t201 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.6618, i64 14, i64 0 }, ptr %a204 - %t205 = call i64 @finch_str_find(ptr %a202, ptr %a204) - %t206 = icmp sge i64 %t205, 0 - br i1 %t206, label %then9874, label %endif9876 -then9874: - %t207 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t207, ptr %a208 - %t210 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t210, ptr %a211 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %a199, i32 0, i32 1 - %t214 = load i64, ptr %t213 - call void @finch_str_sub(ptr %a212, ptr %a211, i64 1, i64 %t214, ptr @.str.6620, i64 552) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.6622, i64 1, i64 0 }, ptr %a218 - %t219 = call i64 @finch_str_find(ptr %a216, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = add i64 %t219, 1 - call void @finch_str_sub(ptr %a209, ptr %a208, i64 1, i64 %t221, ptr @.str.6619, i64 552) - %t222 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t222, ptr %a223 - %t224 = load { ptr, i64, i64 }, ptr %a223 - %t225 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } %t224, ptr %a227 - store { ptr, i64, i64 } %t226, ptr %a228 - %t229 = call i32 @finch_str_eq(ptr %a227, ptr %a228) - %t230 = icmp ne i32 %t229, 0 - br i1 %t230, label %then9877, label %endif9879 -then9877: - %t231 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.6623, i64 34, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - %t237 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t236, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.6624, i64 1, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - call void @finch_str_drop(ptr %a223) - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t249 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t248, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t249 -endif9879: - %t250 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t251 = load { ptr, i64, i64 }, ptr %t250 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.6625, i64 34, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a252 - %t256 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.6626, i64 10, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.6627, i64 60, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - call void @finch_str_drop(ptr %a223) - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t279 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t278, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t279 -endif9876: - %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.6628, 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) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.6629, i64 16, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - %t298 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t297, ptr %a300 - store { ptr, i64, i64 } %t298, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t297, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t304 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t303, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t304 -endif9873: - %t305 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t305) - br label %for.step9869 -for.step9869: - %t306 = load i64, ptr %a183 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a183 - br label %for.cond9867 -for.end9870: - %t308 = load ptr, ptr %a138 - %t309 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 - store ptr %t308, ptr %t309 - %t310 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - %t312 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 - store { ptr, i64, i64 } %t311, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - %t316 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t315, ptr %t312 - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t319 = load ptr, ptr %a138 - call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a318, ptr %t319) - %t320 = load %S.C.CXCursor, ptr %a318 - store %S.C.CXCursor %t320, ptr %a321 - %t322 = call i32 @clang_visitChildren(ptr %a321, ptr @finch.c.cimport.visitTop, ptr %a6) - %t323 = load ptr, ptr %a138 - call void @clang_disposeTranslationUnit(ptr %t323) - call void @finch_str_drop(ptr %a134) - br label %each.step9858 -each.step9858: - %t324 = load i64, ptr %a114 - %t325 = add i64 %t324, 1 - store i64 %t325, ptr %a114 - br label %each.cond9856 -each.end9859: - %t326 = load ptr, ptr %a113 - call void @clang_disposeIndex(ptr %t326) - %t327 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t328 = load %S.cimport.CImports, ptr %t327 - store %S.cimport.CImports %t328, ptr %a329 - call void @finch.copy.S_cimport_CImports(ptr %a330, ptr %a329) - %t331 = load %S.cimport.CImports, ptr %a330 - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t332 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t333 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t332, %S.cimport.CImports %t331, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t333 -} - -define internal %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = extractvalue { ptr, i64, i64 } %t3, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6630, ptr %t4 - %t7 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t6, 0 - %t8 = load { ptr, i64, i64 }, ptr %a2 - %t9 = extractvalue { ptr, i64, i64 } %t8, 0 - %t10 = icmp eq ptr %t9, null - %t11 = select i1 %t10, ptr @.str.6631, ptr %t9 - %t12 = insertvalue %S.C.CXUnsavedFile %t7, ptr %t11, 1 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = insertvalue %S.C.CXUnsavedFile %t12, i64 %t14, 2 - ret %S.C.CXUnsavedFile %t15 -} - -define internal { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6634, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6635, 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.6632, i64 1, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6636, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal i64 @finch.host.run({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i64 @finch_shell(ptr %a3) - call void @finch_str_drop(ptr %a3) - ret i64 %t5 -} - -define internal { ptr, i64, i64 } @finch.host.nullDevice() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6637, i64 9, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.tempDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6638, i64 6, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6639, 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 %then9880, label %endif9882 -then9880: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6641, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_ends(ptr %a15, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - br i1 %t19, label %then9883, label %endif9885 -then9883: - %t20 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t20, ptr %a21 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - %t24 = load i64, ptr %t23 - %t25 = sub i64 %t24, 1 - call void @finch_str_sub(ptr %a22, ptr %a21, i64 0, i64 %t25, ptr @.str.6642, i64 31) - %t26 = load { ptr, i64, i64 }, ptr %a22 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t26 -endif9885: - %t27 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t27 -endif9882: - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } { ptr @.str.6643, i64 4, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.pathSeparator() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6644, i64 1, i64 0 } -} - -define internal i64 @finch.host.pid() { -entry: - - %t1 = call i32 @getpid() - %t2 = sext i32 %t1 to i64 - ret i64 %t2 -} - -define internal { ptr, i64, i64 } @finch.host.cwd() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6645, i64 3, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6646, ptr %t1 - %t4 = call ptr @getenv(ptr %t3) - store { ptr, i64, i64 } zeroinitializer, ptr %a5 - call void @finch_str_from_c(ptr %a5, ptr %t4) - %t6 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t6, ptr %a7 - call void @finch_str_copy(ptr %a8, ptr %a7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - ret { ptr, i64, i64 } %t9 -} - -define internal { ptr, i64, i64 } @finch.host.cacheDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6647, i64 14, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6648, 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 %then9886, label %endif9888 -then9886: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6649, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t18 -endif9888: - %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6650, i64 4, i64 0 }, 0 - %t20 = icmp eq ptr %t19, null - %t21 = select i1 %t20, ptr @.str.6651, 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 %then9889, label %endif9891 -then9889: - %t32 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.6652, i64 13, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - call void @finch_str_drop(ptr %a28) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t36 -endif9891: - %t37 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.6653, i64 12, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a28) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.host.binaryStdio() { -entry: - - ret void -} - -define internal void @finch.host.makeDirs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - store { ptr, i64, i64 } { ptr @.str.6654, i64 9, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t3, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_copy(ptr %a9, ptr %a10) - %t11 = call i64 @finch_shell(ptr %a9) - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret void -} - -define internal void @finch.host.remove({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i32 @finch_delete_file(ptr %a3) - call void @finch_str_drop(ptr %a3) - %t6 = icmp ne i32 %t5, 0 - ret void -} - -define internal void @finch.host.removeTree({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - store { ptr, i64, i64 } { ptr @.str.6655, i64 7, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t3, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_copy(ptr %a9, ptr %a10) - %t11 = call i64 @finch_shell(ptr %a9) - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret void -} - -define internal void @finch.host.move({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.6656, i64 3, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.6657, i64 1, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load { ptr, i64, i64 }, ptr %a2 - %t16 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t14, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t14, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a24 - call void @finch_str_copy(ptr %a23, ptr %a24) - %t25 = call i64 @finch_shell(ptr %a23) - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - ret void -} - -define internal { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_trim(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.6660, 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 } %t5, ptr %a11 - call void @finch_str_drop(ptr %a11) - store { ptr, i64, i64 } %t10, ptr %a12 - %t13 = load { ptr, i64, i64 }, ptr %a12 - %t14 = extractvalue { ptr, i64, i64 } %t13, 1 - %t15 = icmp uge i64 0, %t14 - br i1 %t15, label %range9892, label %inrange9893 -range9892: - call void @finch_panic_index(ptr @.str.6661, i64 21, i64 0, i64 %t14) - unreachable -inrange9893: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 - %t18 = load { ptr, i64, i64 }, ptr %t17 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_trim(ptr %a20, ptr %a19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.drop.arr_str(ptr %a12) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.platform.hostTriple() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t1, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6663, i64 14, i64 0 }, ptr %a4 - call void @finch_str_concat(ptr %a2, ptr %a3, ptr %a4) - store { ptr, i64, i64 } %t1, ptr %a5 - call void @finch_str_drop(ptr %a5) - %t6 = load { ptr, i64, i64 }, ptr %a2 - %t7 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a8, i64 %t7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t6, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t9, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.6664, i64 4, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t20, ptr %a21 - %t22 = load { ptr, i64, i64 }, ptr %a21 - %t23 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t22) - store { ptr, i64, i64 } { ptr @.str.6665, i64 21, i64 0 }, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6666, i64 4, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call i64 @finch.host.run({ ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - store { ptr, i64, i64 } zeroinitializer, ptr %a46 - %t47 = call i32 @finch_try_read_file(ptr %a45, ptr %a44, ptr %a46) - %t48 = icmp eq i32 %t47, 0 - %t49 = load { ptr, i64, i64 }, ptr %a46 - %t50 = load { ptr, i64, i64 }, ptr %a45 - br i1 %t48, label %or.failed9894, label %or.ok9895 -or.failed9894: - store { ptr, i64, i64 } %t49, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %or.bend9896 -or.bend9896: - br label %or.end9897 -or.ok9895: - br label %or.end9897 -or.end9897: - %t52 = phi { ptr, i64, i64 } [ { ptr @.str.6667, i64 0, i64 0 }, %or.bend9896 ], [ %t50, %or.ok9895 ] - store { ptr, i64, i64 } %t52, ptr %a53 - %t54 = load { ptr, i64, i64 }, ptr %a21 - call void @finch.host.remove({ ptr, i64, i64 } %t54) - %t55 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_trim(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = icmp eq i64 %t59, 0 - br i1 %t61, label %then9898, label %endif9900 -then9898: - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } { ptr @.str.6669, i64 24, i64 0 } -endif9900: - %t62 = load { ptr, i64, i64 }, ptr %a53 - %t63 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t62) - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } %t63 -} - -define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = 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 - %a59 = 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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca %S.platform.Target, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = 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 - %a135 = 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 - %a145 = 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 - %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 - %a169 = alloca i1, 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 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca i1, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = 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 - %a204 = alloca i1, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a255 = 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 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = call { ptr, i64, i64 } @finch.platform.hostTriple() - store { ptr, i64, i64 } %t2, ptr %a3 - %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 %then9901, label %else9902 -then9901: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t15, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - br label %endif9903 -else9902: - %t18 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6670, i64 7, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br i1 %t22, label %then9904, label %else9905 -then9904: - %t23 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6671, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - br label %endif9906 -else9905: - %t25 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6672, i64 5, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br i1 %t29, label %then9907, label %else9908 -then9907: - %t30 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6673, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %endif9909 -else9908: - %t32 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.6674, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.from9910 -logic.from9910: - br i1 %t36, label %logic.end9912, label %logic.rhs9911 -logic.rhs9911: - %t37 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.6675, i64 7, i64 0 }, ptr %a39 - %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) - %t41 = icmp ne i32 %t40, 0 - br label %logic.rend9913 -logic.rend9913: - br label %logic.end9912 -logic.end9912: - %t42 = phi i1 [ true, %logic.from9910 ], [ %t41, %logic.rend9913 ] - br label %logic.from9914 -logic.from9914: - br i1 %t42, label %logic.end9916, label %logic.rhs9915 -logic.rhs9915: - %t43 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6676, i64 11, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp ne i32 %t46, 0 - br label %logic.rend9917 -logic.rend9917: - br label %logic.end9916 -logic.end9916: - %t48 = phi i1 [ true, %logic.from9914 ], [ %t47, %logic.rend9917 ] - br i1 %t48, label %then9918, label %else9919 -then9918: - %t49 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6677, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t49, ptr %a50 - call void @finch_str_drop(ptr %a50) - br label %endif9920 -else9919: - %t51 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6678, i64 5, i64 0 }, ptr %a53 - %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) - %t55 = icmp ne i32 %t54, 0 - br i1 %t55, label %then9921, label %endif9923 -then9921: - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.6680, i64 7, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_starts(ptr %a57, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br label %logic.from9924 -logic.from9924: - br i1 %t61, label %logic.end9926, label %logic.rhs9925 -logic.rhs9925: - %t62 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6682, i64 5, i64 0 }, ptr %a65 - %t66 = call i32 @finch_str_starts(ptr %a63, ptr %a65) - %t67 = icmp ne i32 %t66, 0 - br label %logic.rend9927 -logic.rend9927: - br label %logic.end9926 -logic.end9926: - %t68 = phi i1 [ true, %logic.from9924 ], [ %t67, %logic.rend9927 ] - br i1 %t68, label %then9928, label %else9929 -then9928: - %t69 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6683, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif9930 -else9929: - %t71 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6684, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif9930 -endif9930: - br label %endif9923 -endif9923: - br label %endif9920 -endif9920: - br label %endif9909 -endif9909: - br label %endif9906 -endif9906: - br label %endif9903 -endif9903: - %t73 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6685, i64 22, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then9931, label %endif9933 -then9931: - %t78 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6686, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif9933 -endif9933: - %t80 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t80, ptr %a81 - call void @finch_str_copy(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t83, 0 - store %S.platform.Target %t84, ptr %a85 - %t86 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.6688, i64 7, i64 0 }, ptr %a89 - %t90 = call i64 @finch_str_find(ptr %a87, ptr %a89) - %t91 = icmp sge i64 %t90, 0 - br label %logic.from9934 -logic.from9934: - br i1 %t91, label %logic.end9936, label %logic.rhs9935 -logic.rhs9935: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.6690, i64 5, i64 0 }, ptr %a95 - %t96 = call i64 @finch_str_find(ptr %a93, ptr %a95) - %t97 = icmp sge i64 %t96, 0 - br label %logic.rend9937 -logic.rend9937: - br label %logic.end9936 -logic.end9936: - %t98 = phi i1 [ true, %logic.from9934 ], [ %t97, %logic.rend9937 ] - br label %logic.from9938 -logic.from9938: - br i1 %t98, label %logic.end9940, label %logic.rhs9939 -logic.rhs9939: - %t99 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6692, i64 4, i64 0 }, ptr %a102 - %t103 = call i64 @finch_str_find(ptr %a100, ptr %a102) - %t104 = icmp sge i64 %t103, 0 - br label %logic.rend9941 -logic.rend9941: - br label %logic.end9940 -logic.end9940: - %t105 = phi i1 [ true, %logic.from9938 ], [ %t104, %logic.rend9941 ] - br label %logic.from9942 -logic.from9942: - br i1 %t105, label %logic.end9944, label %logic.rhs9943 -logic.rhs9943: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.6694, i64 5, i64 0 }, ptr %a109 - %t110 = call i64 @finch_str_find(ptr %a107, ptr %a109) - %t111 = icmp sge i64 %t110, 0 - br label %logic.rend9945 -logic.rend9945: - br label %logic.end9944 -logic.end9944: - %t112 = phi i1 [ true, %logic.from9942 ], [ %t111, %logic.rend9945 ] - %t113 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - store i1 %t112, ptr %t113 - %t114 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.6696, i64 4, i64 0 }, ptr %a117 - %t118 = call i64 @finch_str_find(ptr %a115, ptr %a117) - %t119 = icmp sge i64 %t118, 0 - %t120 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 2 - store i1 %t119, ptr %t120 - %t121 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6698, i64 5, i64 0 }, ptr %a124 - %t125 = call i64 @finch_str_find(ptr %a122, ptr %a124) - %t126 = icmp sge i64 %t125, 0 - br label %logic.from9946 -logic.from9946: - br i1 %t126, label %logic.end9948, label %logic.rhs9947 -logic.rhs9947: - %t127 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6700, i64 6, i64 0 }, ptr %a130 - %t131 = call i64 @finch_str_find(ptr %a128, ptr %a130) - %t132 = icmp sge i64 %t131, 0 - br label %logic.rend9949 -logic.rend9949: - br label %logic.end9948 -logic.end9948: - %t133 = phi i1 [ true, %logic.from9946 ], [ %t132, %logic.rend9949 ] - br label %logic.from9950 -logic.from9950: - br i1 %t133, label %logic.end9952, label %logic.rhs9951 -logic.rhs9951: - %t134 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t134, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.6702, i64 5, i64 0 }, ptr %a137 - %t138 = call i64 @finch_str_find(ptr %a135, ptr %a137) - %t139 = icmp sge i64 %t138, 0 - br label %logic.rend9953 -logic.rend9953: - br label %logic.end9952 -logic.end9952: - %t140 = phi i1 [ true, %logic.from9950 ], [ %t139, %logic.rend9953 ] - %t141 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - store i1 %t140, ptr %t141 - %t142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.6704, i64 7, i64 0 }, ptr %a145 - %t146 = call i32 @finch_str_starts(ptr %a143, ptr %a145) - %t147 = icmp ne i32 %t146, 0 - br label %logic.from9954 -logic.from9954: - br i1 %t147, label %logic.end9956, label %logic.rhs9955 -logic.rhs9955: - %t148 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.6706, i64 5, i64 0 }, ptr %a151 - %t152 = call i32 @finch_str_starts(ptr %a149, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.rend9957 -logic.rend9957: - br label %logic.end9956 -logic.end9956: - %t154 = phi i1 [ true, %logic.from9954 ], [ %t153, %logic.rend9957 ] - %t155 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - store i1 %t154, ptr %t155 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.6708, i64 7, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_starts(ptr %a157, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.from9958 -logic.from9958: - br i1 %t161, label %logic.end9960, label %logic.rhs9959 -logic.rhs9959: - %t162 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t162, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.6710, i64 5, i64 0 }, ptr %a165 - %t166 = call i32 @finch_str_starts(ptr %a163, ptr %a165) - %t167 = icmp ne i32 %t166, 0 - br label %logic.rend9961 -logic.rend9961: - br label %logic.end9960 -logic.end9960: - %t168 = phi i1 [ true, %logic.from9958 ], [ %t167, %logic.rend9961 ] - store i1 %t168, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.6712, i64 5, i64 0 }, ptr %a173 - %t174 = call i64 @finch_str_find(ptr %a171, ptr %a173) - %t175 = icmp sge i64 %t174, 0 - br label %logic.from9962 -logic.from9962: - br i1 %t175, label %logic.end9964, label %logic.rhs9963 -logic.rhs9963: - %t176 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.6714, i64 6, i64 0 }, ptr %a179 - %t180 = call i64 @finch_str_find(ptr %a177, ptr %a179) - %t181 = icmp sge i64 %t180, 0 - br label %logic.rend9965 -logic.rend9965: - br label %logic.end9964 -logic.end9964: - %t182 = phi i1 [ true, %logic.from9962 ], [ %t181, %logic.rend9965 ] - store i1 %t182, ptr %a183 - %t184 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.6716, i64 7, i64 0 }, ptr %a187 - %t188 = call i64 @finch_str_find(ptr %a185, ptr %a187) - %t189 = icmp sge i64 %t188, 0 - br label %logic.from9966 -logic.from9966: - br i1 %t189, label %logic.end9968, label %logic.rhs9967 -logic.rhs9967: - %t190 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t190, ptr %a191 - store { ptr, i64, i64 } { ptr @.str.6718, i64 5, i64 0 }, ptr %a193 - %t194 = call i64 @finch_str_find(ptr %a191, ptr %a193) - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend9969 -logic.rend9969: - br label %logic.end9968 -logic.end9968: - %t196 = phi i1 [ true, %logic.from9966 ], [ %t195, %logic.rend9969 ] - br label %logic.from9970 -logic.from9970: - br i1 %t196, label %logic.end9972, label %logic.rhs9971 -logic.rhs9971: - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t197, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.6720, i64 4, i64 0 }, ptr %a200 - %t201 = call i64 @finch_str_find(ptr %a198, ptr %a200) - %t202 = icmp sge i64 %t201, 0 - br label %logic.rend9973 -logic.rend9973: - br label %logic.end9972 -logic.end9972: - %t203 = phi i1 [ true, %logic.from9970 ], [ %t202, %logic.rend9973 ] - store i1 %t203, ptr %a204 - %t205 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t206 = load i1, ptr %t205 - %t207 = load i1, ptr %a204 - %t208 = icmp ne i1 %t206, %t207 - br label %logic.from9974 -logic.from9974: - br i1 %t208, label %logic.end9976, label %logic.rhs9975 -logic.rhs9975: - %t209 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t210 = load i1, ptr %t209 - %t211 = load i1, ptr %a183 - %t212 = icmp ne i1 %t210, %t211 - br label %logic.rend9977 -logic.rend9977: - br label %logic.end9976 -logic.end9976: - %t213 = phi i1 [ true, %logic.from9974 ], [ %t212, %logic.rend9977 ] - br label %logic.from9978 -logic.from9978: - br i1 %t213, label %logic.end9980, label %logic.rhs9979 -logic.rhs9979: - %t214 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t215 = load i1, ptr %t214 - %t216 = load i1, ptr %a169 - %t217 = icmp ne i1 %t215, %t216 - br label %logic.rend9981 -logic.rend9981: - br label %logic.end9980 -logic.end9980: - %t218 = phi i1 [ true, %logic.from9978 ], [ %t217, %logic.rend9981 ] - %t219 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - store i1 %t218, ptr %t219 - %t220 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t221 = load { ptr, i64, i64 }, ptr %t220 - store { ptr, i64, i64 } { ptr @.str.6721, i64 0, i64 0 }, ptr %t220 - store { ptr, i64, i64 } %t221, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t224 = load i1, ptr %t223 - br i1 %t224, label %then9982, label %endif9984 -then9982: - %t225 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } { ptr @.str.6722, i64 4, i64 0 }, ptr %t225 - store { ptr, i64, i64 } %t226, ptr %a227 - call void @finch_str_drop(ptr %a227) - br label %endif9984 -endif9984: - %t228 = extractvalue { ptr, i64, i64 } { ptr @.str.6723, i64 8, i64 0 }, 0 - %t229 = icmp eq ptr %t228, null - %t230 = select i1 %t229, ptr @.str.6724, ptr %t228 - %t231 = call ptr @getenv(ptr %t230) - store { ptr, i64, i64 } zeroinitializer, ptr %a232 - call void @finch_str_from_c(ptr %a232, ptr %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - 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 %a237 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %a237, i32 0, i32 1 - %t239 = load i64, ptr %t238 - %t240 = icmp sgt i64 %t239, 0 - br i1 %t240, label %then9985, label %else9986 -then9985: - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_copy(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - %t246 = load { ptr, i64, i64 }, ptr %t242 - store { ptr, i64, i64 } %t245, ptr %t242 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif9987 -else9986: - %t248 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t249 = load i1, ptr %t248 - br label %logic.from9988 -logic.from9988: - br i1 %t249, label %logic.rhs9989, label %logic.end9990 -logic.rhs9989: - %t250 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.rend9991 -logic.rend9991: - br label %logic.end9990 -logic.end9990: - %t252 = phi i1 [ false, %logic.from9988 ], [ %t251, %logic.rend9991 ] - br i1 %t252, label %then9992, label %else9993 -then9992: - %t253 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t254 = load { ptr, i64, i64 }, ptr %t253 - store { ptr, i64, i64 } { ptr @.str.6725, i64 22, i64 0 }, ptr %t253 - store { ptr, i64, i64 } %t254, ptr %a255 - call void @finch_str_drop(ptr %a255) - br label %endif9994 -else9993: - %t256 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t257 = load i1, ptr %t256 - br label %logic.from9995 -logic.from9995: - br i1 %t257, label %logic.rhs9996, label %logic.end9997 -logic.rhs9996: - %t258 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t259 = load i1, ptr %t258 - br label %logic.rend9998 -logic.rend9998: - br label %logic.end9997 -logic.end9997: - %t260 = phi i1 [ false, %logic.from9995 ], [ %t259, %logic.rend9998 ] - br label %logic.from9999 -logic.from9999: - br i1 %t260, label %logic.rhs10000, label %logic.end10001 -logic.rhs10000: - %t261 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t262 = load i1, ptr %t261 - %t263 = xor i1 %t262, true - br label %logic.rend10002 -logic.rend10002: - br label %logic.end10001 -logic.end10001: - %t264 = phi i1 [ false, %logic.from9999 ], [ %t263, %logic.rend10002 ] - br i1 %t264, label %then10003, label %else10004 -then10003: - %t265 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } { ptr @.str.6726, i64 21, i64 0 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_drop(ptr %a267) - br label %endif10005 -else10004: - %t268 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t269 = load i1, ptr %t268 - br i1 %t269, label %then10006, label %else10007 -then10006: - %t270 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6727, i64 15, i64 0 }, 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 - %t275 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } %t274, ptr %t275 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - br label %endif10008 -else10007: - %t278 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6728, i64 1, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - br i1 %t282, label %then10009, label %else10010 -then10009: - %t284 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.6729, i64 5, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif10011 -else10010: - %t287 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t288 = load { ptr, i64, i64 }, ptr %t287 - store { ptr, i64, i64 } { ptr @.str.6730, i64 2, i64 0 }, ptr %t287 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - br label %endif10011 -endif10011: - br label %endif10008 -endif10008: - br label %endif10005 -endif10005: - br label %endif9994 -endif9994: - br label %endif9987 -endif9987: - %t290 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t291 = load i1, ptr %t290 - br label %logic.from10012 -logic.from10012: - br i1 %t291, label %logic.rhs10013, label %logic.end10014 -logic.rhs10013: - %t292 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t293 = load i1, ptr %t292 - br label %logic.rend10015 -logic.rend10015: - br label %logic.end10014 -logic.end10014: - %t294 = phi i1 [ false, %logic.from10012 ], [ %t293, %logic.rend10015 ] - br i1 %t294, label %then10016, label %else10017 -then10016: - %t295 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } { ptr @.str.6731, i64 5, i64 0 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif10018 -else10017: - %t298 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t299 = load i1, ptr %t298 - br label %logic.from10019 -logic.from10019: - br i1 %t299, label %logic.rhs10020, label %logic.end10021 -logic.rhs10020: - %t300 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t301 = load i1, ptr %t300 - br label %logic.rend10022 -logic.rend10022: - br label %logic.end10021 -logic.end10021: - %t302 = phi i1 [ false, %logic.from10019 ], [ %t301, %logic.rend10022 ] - br label %logic.from10023 -logic.from10023: - br i1 %t302, label %logic.rhs10024, label %logic.end10025 -logic.rhs10024: - %t303 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t304 = load i1, ptr %t303 - %t305 = xor i1 %t304, true - br label %logic.rend10026 -logic.rend10026: - br label %logic.end10025 -logic.end10025: - %t306 = phi i1 [ false, %logic.from10023 ], [ %t305, %logic.rend10026 ] - br i1 %t306, label %then10027, label %endif10029 -then10027: - %t307 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } { ptr @.str.6732, i64 13, i64 0 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10029 -endif10029: - br label %endif10018 -endif10018: - %t310 = load %S.platform.Target, ptr %a85 - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a3) - ret %S.platform.Target %t310 -} - -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.from10030 -logic.from10030: - br i1 %t4, label %logic.end10032, label %logic.rhs10031 -logic.rhs10031: - %t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3 - %t6 = load i1, ptr %t5 - br label %logic.rend10033 -logic.rend10033: - br label %logic.end10032 -logic.end10032: - %t7 = phi i1 [ true, %logic.from10030 ], [ %t6, %logic.rend10033 ] - br label %logic.from10034 -logic.from10034: - br i1 %t7, label %logic.end10036, label %logic.rhs10035 -logic.rhs10035: - %t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1 - %t9 = load i1, ptr %t8 - br label %logic.rend10037 -logic.rend10037: - br label %logic.end10036 -logic.end10036: - %t10 = phi i1 [ true, %logic.from10034 ], [ %t9, %logic.rend10037 ] - 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.cond10038 -each.cond10038: - %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.body10039, label %each.end10041 -each.body10039: - %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.step10040 -each.step10040: - %t17 = load i64, ptr %a3 - %t18 = add i64 %t17, 1 - store i64 %t18, ptr %a3 - br label %each.cond10038 -each.end10041: - store { ptr, i64, i64 } { ptr @.str.6733, i64 16, i64 0 }, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %for.cond10042 -for.cond10042: - %t22 = load i64, ptr %a21 - %t23 = icmp slt i64 %t22, 8 - br i1 %t23, label %for.body10043, label %for.end10045 -for.body10043: - %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 %range10046, label %inrange10047 -range10046: - call void @finch_panic_index(ptr @.str.6734, i64 16, i64 %t32, i64 %t34) - unreachable -inrange10047: - %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.step10044 -for.step10044: - %t45 = load i64, ptr %a21 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a21 - br label %for.cond10042 -for.end10045: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6735, i64 0, i64 0 }, ptr %a48 - call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - call void @finch.drop.arr_str(ptr %a20) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t50 -} - -define internal { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - ret { ptr, i64, i64 } %t3 -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.platform.Target %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.6737, 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 %then10048, label %endif10050 -then10048: - %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.6739, i64 28) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - store { ptr, i64, i64 } { ptr @.str.6738, i64 11, i64 0 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - ret { ptr, i64, i64 } %t22 -endif10050: - %t23 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t24 = load i1, ptr %t23 - %t25 = xor i1 %t24, true - br i1 %t25, label %then10051, label %endif10053 -then10051: - %t26 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.6740, i64 17, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a33, i64 %t32) - %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.6741, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a46 - %t47 = load { ptr, i64, i64 }, ptr %a1 - %t48 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t47) - store { ptr, i64, i64 } { ptr @.str.6742, i64 18, i64 0 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t53, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6743, i64 3, i64 0 }, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - %t59 = load { ptr, i64, i64 }, ptr %a46 - %t60 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.6744, i64 4, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a73 - %t79 = call i64 @finch.host.run({ ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load i64, ptr %a81 - %t83 = icmp eq i64 %t82, 0 - br label %logic.from10054 -logic.from10054: - br i1 %t83, label %logic.rhs10055, label %logic.end10056 -logic.rhs10055: - %t84 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t84, ptr %a85 - %t86 = call i32 @finch_file_exists(ptr %a85) - %t87 = icmp ne i32 %t86, 0 - br label %logic.rend10057 -logic.rend10057: - br label %logic.end10056 -logic.end10056: - %t88 = phi i1 [ false, %logic.from10054 ], [ %t87, %logic.rend10057 ] - br i1 %t88, label %then10058, label %endif10060 -then10058: - %t89 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - store { ptr, i64, i64 } zeroinitializer, ptr %a92 - %t93 = call i32 @finch_try_read_file(ptr %a91, ptr %a90, ptr %a92) - %t94 = icmp eq i32 %t93, 0 - %t95 = load { ptr, i64, i64 }, ptr %a92 - %t96 = load { ptr, i64, i64 }, ptr %a91 - br i1 %t94, label %or.failed10061, label %or.ok10062 -or.failed10061: - store { ptr, i64, i64 } %t95, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %or.bend10063 -or.bend10063: - br label %or.end10064 -or.ok10062: - br label %or.end10064 -or.end10064: - %t98 = phi { ptr, i64, i64 } [ { ptr @.str.6745, i64 0, i64 0 }, %or.bend10063 ], [ %t96, %or.ok10062 ] - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_trim(ptr %a100, ptr %a99) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t101, ptr %a103 - %t104 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.host.remove({ ptr, i64, i64 } %t104) - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a103, i32 0, i32 1 - %t106 = load i64, ptr %t105 - %t107 = icmp sgt i64 %t106, 0 - br i1 %t107, label %then10065, label %endif10067 -then10065: - %t108 = load { ptr, i64, i64 }, ptr %a103 - call void @finch_str_drop(ptr %a46) - ret { ptr, i64, i64 } %t108 -endif10067: - call void @finch_str_drop(ptr %a103) - br label %endif10060 -endif10060: - call void @finch_str_drop(ptr %a46) - br label %endif10053 -endif10053: - %t109 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6747, i64 2, i64 0 }, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_drop(ptr %a115) - ret { ptr, i64, i64 } %t114 -} - -define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a35 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6749, i64 1, i64 0 }, ptr %a10 - %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) - store i64 %t11, ptr %a12 - br label %while.cond10068 -while.cond10068: - %t13 = load i64, ptr %a12 - %t14 = icmp sge i64 %t13, 0 - br i1 %t14, label %while.body10069, label %while.end10070 -while.body10069: - %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.6750, i64 49) - %t22 = load { ptr, i64, i64 }, ptr %a17 - %t23 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t22, ptr %a6 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6752, i64 1, i64 0 }, ptr %a28 - %t29 = call i64 @finch_str_find(ptr %a26, ptr %a28) - store i64 %t29, ptr %a12 - br label %while.cond10068 -while.end10070: - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t31 = load i64, ptr %t30 - store i64 %t31, ptr %a32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t34 = load i64, ptr %t33 - store i64 0, ptr %a35 - br label %for.cond10071 -for.cond10071: - %t36 = load i64, ptr %a35 - %t37 = icmp slt i64 %t36, %t34 - br i1 %t37, label %for.body10072, label %for.end10074 -for.body10072: - %t38 = load i64, ptr %a35 - %t39 = load { ptr, i64, i64 }, ptr %a6 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range10075, label %inrange10076 -range10075: - call void @finch_panic_index(ptr @.str.6753, i64 54, i64 %t38, i64 %t40) - unreachable -inrange10076: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 - %t44 = load i8, ptr %t43 - %t45 = icmp eq i8 %t44, 46 - br i1 %t45, label %then10077, label %endif10079 -then10077: - %t46 = load i64, ptr %a35 - store i64 %t46, ptr %a32 - br label %endif10079 -endif10079: - br label %for.step10073 -for.step10073: - %t47 = load i64, ptr %a35 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a35 - br label %for.cond10071 -for.end10074: - %t49 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6754, i64 58) - %t53 = load { ptr, i64, i64 }, ptr %a51 - %t54 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t53, ptr %a6 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %while.cond10080 -while.cond10080: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t57 = load i64, ptr %t56 - %t58 = icmp sgt i64 %t57, 0 - br label %logic.from10083 -logic.from10083: - br i1 %t58, label %logic.rhs10084, label %logic.end10085 -logic.rhs10084: - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t60 = load i64, ptr %t59 - %t61 = sub i64 %t60, 1 - %t62 = load { ptr, i64, i64 }, ptr %a6 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 %t61, %t63 - br i1 %t64, label %range10086, label %inrange10087 -range10086: - call void @finch_panic_index(ptr @.str.6755, i64 59, i64 %t61, i64 %t63) - unreachable -inrange10087: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds i8, ptr %t65, i64 %t61 - %t67 = load i8, ptr %t66 - %t68 = icmp uge i8 %t67, 48 - br label %logic.rend10088 -logic.rend10088: - br label %logic.end10085 -logic.end10085: - %t69 = phi i1 [ false, %logic.from10083 ], [ %t68, %logic.rend10088 ] - br label %logic.from10089 -logic.from10089: - br i1 %t69, label %logic.rhs10090, label %logic.end10091 -logic.rhs10090: - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t71 = load i64, ptr %t70 - %t72 = sub i64 %t71, 1 - %t73 = load { ptr, i64, i64 }, ptr %a6 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range10092, label %inrange10093 -range10092: - call void @finch_panic_index(ptr @.str.6756, i64 59, i64 %t72, i64 %t74) - unreachable -inrange10093: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds i8, ptr %t76, i64 %t72 - %t78 = load i8, ptr %t77 - %t79 = icmp ule i8 %t78, 57 - br label %logic.rend10094 -logic.rend10094: - br label %logic.end10091 -logic.end10091: - %t80 = phi i1 [ false, %logic.from10089 ], [ %t79, %logic.rend10094 ] - br i1 %t80, label %while.body10081, label %while.end10082 -while.body10081: - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t81, ptr %a82 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - call void @finch_str_sub(ptr %a83, ptr %a82, i64 0, i64 %t86, ptr @.str.6757, i64 60) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t87, ptr %a6 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %while.cond10080 -while.end10082: - %t90 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_lower(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t93 -} - -define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.from10095 -logic.from10095: - br i1 %t4, label %logic.rhs10096, label %logic.end10097 -logic.rhs10096: - %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.cond10098 -find.cond10098: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body10099, label %find.end10102 -find.body10099: - %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.hit10100, label %find.next10101 -find.hit10100: - store i64 %t12, ptr %a8 - br label %find.end10102 -find.next10101: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond10098 -find.end10102: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - %t23 = xor i1 %t22, true - br label %logic.rend10103 -logic.rend10103: - br label %logic.end10097 -logic.end10097: - %t24 = phi i1 [ false, %logic.from10095 ], [ %t23, %logic.rend10103 ] - br i1 %t24, label %then10104, label %endif10106 -then10104: - %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 %endif10106 -endif10106: - 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then10107, label %endif10109 -then10107: - ret { ptr, i64, i64 } { ptr @.str.6760, i64 0, i64 0 } -endif10109: - %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.6761, i64 81) - %t22 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t22, ptr %a23 - store i64 0, ptr %a24 - br label %while.cond10110 -while.cond10110: - %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.from10113 -logic.from10113: - br i1 %t28, label %logic.rhs10114, label %logic.end10115 -logic.rhs10114: - %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 %range10116, label %inrange10117 -range10116: - call void @finch_panic_index(ptr @.str.6763, i64 83, i64 %t32, i64 %t34) - unreachable -inrange10117: - %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 - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = xor i1 %t43, true - br label %logic.rend10118 -logic.rend10118: - br label %logic.end10115 -logic.end10115: - %t46 = phi i1 [ false, %logic.from10113 ], [ %t45, %logic.rend10118 ] - br i1 %t46, label %while.body10111, label %while.end10112 -while.body10111: - %t47 = load i64, ptr %a24 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a24 - br label %while.cond10110 -while.end10112: - %t49 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a24 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6764, i64 86) - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t53 -} - -define internal void @finch.drop.S_linker_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal void @finch.drop.arr_S_linker_Names(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10222 -n.cond10222: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10223, label %n.end10224 -n.body10223: - %t7 = getelementptr inbounds %S.linker.Names, ptr %t1, i64 %t5 - call void @finch.drop.S_linker_Names(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10222 -n.end10224: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca i64, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a238 = alloca i64, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca i64, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.cimport.CImports %p1, ptr %a2 - store %S.platform.Target %p2, ptr %a3 - 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.6766, 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.cond10119 -each.cond10119: - %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.body10120, label %each.end10122 -each.body10120: - %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.6769, 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 %then10123, label %else10124 -then10123: - %t33 = load { ptr, i64, i64 }, ptr %a26 - %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6770, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6771, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif10125 -else10124: - %t36 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.6773, i64 18, i64 0 }, ptr %a39 - %t40 = call i64 @finch_str_find(ptr %a37, ptr %a39) - %t41 = icmp sge i64 %t40, 0 - br i1 %t41, label %then10126, label %else10127 -then10126: - %t42 = load { ptr, i64, i64 }, ptr %a26 - %t43 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t42, { ptr, i64, i64 } { ptr @.str.6774, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6775, i64 2, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - br label %endif10128 -else10127: - %t45 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6777, i64 27, i64 0 }, ptr %a48 - %t49 = call i64 @finch_str_find(ptr %a46, ptr %a48) - %t50 = icmp sge i64 %t49, 0 - br i1 %t50, label %then10129, label %else10130 -then10129: - %t51 = load { ptr, i64, i64 }, ptr %a26 - %t52 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t51, { ptr, i64, i64 } { ptr @.str.6778, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6779, i64 3, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - br label %endif10131 -else10130: - %t54 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6781, i64 14, i64 0 }, ptr %a57 - %t58 = call i64 @finch_str_find(ptr %a55, ptr %a57) - %t59 = icmp sge i64 %t58, 0 - br i1 %t59, label %then10132, label %else10133 -then10132: - %t60 = load { ptr, i64, i64 }, ptr %a26 - %t61 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t60, { ptr, i64, i64 } { ptr @.str.6782, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6783, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch_str_drop(ptr %a62) - br label %endif10134 -else10133: - %t63 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6785, i64 24, i64 0 }, ptr %a66 - %t67 = call i64 @finch_str_find(ptr %a64, ptr %a66) - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then10135, label %else10136 -then10135: - %t69 = load { ptr, i64, i64 }, ptr %a26 - %t70 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t69, { ptr, i64, i64 } { ptr @.str.6786, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6787, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif10137 -else10136: - %t72 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.6789, i64 13, i64 0 }, ptr %a75 - %t76 = call i64 @finch_str_find(ptr %a73, ptr %a75) - %t77 = icmp sge i64 %t76, 0 - br i1 %t77, label %then10138, label %else10139 -then10138: - %t78 = load { ptr, i64, i64 }, ptr %a26 - %t79 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.6790, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6791, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10140 -else10139: - %t81 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.6793, i64 11, i64 0 }, ptr %a84 - %t85 = call i64 @finch_str_find(ptr %a82, ptr %a84) - %t86 = icmp sge i64 %t85, 0 - br label %logic.from10141 -logic.from10141: - br i1 %t86, label %logic.rhs10142, label %logic.end10143 -logic.rhs10142: - %t87 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.6795, i64 9, i64 0 }, ptr %a90 - %t91 = call i64 @finch_str_find(ptr %a88, ptr %a90) - %t92 = icmp sge i64 %t91, 0 - br label %logic.rend10144 -logic.rend10144: - br label %logic.end10143 -logic.end10143: - %t93 = phi i1 [ false, %logic.from10141 ], [ %t92, %logic.rend10144 ] - br i1 %t93, label %then10145, label %else10146 -then10145: - %t94 = load { ptr, i64, i64 }, ptr %a26 - %t95 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t94, { ptr, i64, i64 } { ptr @.str.6796, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6797, i64 1, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.6798, i64 10, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t100) - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif10147 -else10146: - %t102 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.6800, i64 1, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_starts(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.from10148 -logic.from10148: - br i1 %t107, label %logic.rhs10149, label %logic.end10150 -logic.rhs10149: - %t108 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6802, i64 19, i64 0 }, ptr %a111 - %t112 = call i64 @finch_str_find(ptr %a109, ptr %a111) - %t113 = icmp sge i64 %t112, 0 - br label %logic.rend10151 -logic.rend10151: - br label %logic.end10150 -logic.end10150: - %t114 = phi i1 [ false, %logic.from10148 ], [ %t113, %logic.rend10151 ] - br i1 %t114, label %then10152, label %endif10154 -then10152: - %t115 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t115, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.6805, i64 19, i64 0 }, ptr %a121 - %t122 = call i64 @finch_str_find(ptr %a119, ptr %a121) - call void @finch_str_sub(ptr %a117, ptr %a116, i64 1, i64 %t122, ptr @.str.6803, i64 111) - %t123 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t123, ptr %a124 - %t125 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 - %t126 = load i1, ptr %t125 - br label %logic.from10155 -logic.from10155: - br i1 %t126, label %logic.rhs10156, label %logic.end10157 -logic.rhs10156: - %t127 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6807, i64 1, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_starts(ptr %a128, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend10158 -logic.rend10158: - br label %logic.end10157 -logic.end10157: - %t133 = phi i1 [ false, %logic.from10155 ], [ %t132, %logic.rend10158 ] - br i1 %t133, label %then10159, label %endif10161 -then10159: - %t134 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t134, ptr %a135 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a136, ptr %a135, i64 1, i64 %t138, ptr @.str.6808, i64 113) - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t139, ptr %a124 - store { ptr, i64, i64 } %t140, ptr %a141 - call void @finch_str_drop(ptr %a141) - br label %endif10161 -endif10161: - %t142 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t142) - call void @finch_str_drop(ptr %a124) - br label %endif10154 -endif10154: - br label %endif10147 -endif10147: - br label %endif10140 -endif10140: - br label %endif10137 -endif10137: - br label %endif10134 -endif10134: - br label %endif10131 -endif10131: - br label %endif10128 -endif10128: - br label %endif10125 -endif10125: - call void @finch_str_drop(ptr %a26) - br label %each.step10121 -each.step10121: - %t143 = load i64, ptr %a13 - %t144 = add i64 %t143, 1 - store i64 %t144, ptr %a13 - br label %each.cond10119 -each.end10122: - call void @finch.drop.arr_str(ptr %a12) - %t145 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = icmp eq i64 %t147, 0 - br label %logic.from10162 -logic.from10162: - br i1 %t148, label %logic.rhs10163, label %logic.end10164 -logic.rhs10163: - %t149 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1 - %t151 = load i64, ptr %t150 - %t152 = icmp eq i64 %t151, 0 - br label %logic.rend10165 -logic.rend10165: - br label %logic.end10164 -logic.end10164: - %t153 = phi i1 [ false, %logic.from10162 ], [ %t152, %logic.rend10165 ] - br i1 %t153, label %then10166, label %endif10168 -then10166: - %t154 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.6809, i64 21, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = trunc i64 %t159 to i32 - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = icmp eq ptr %t161, null - %t163 = select i1 %t162, ptr @.str.6810, ptr %t161 - %t164 = call i32 (ptr, ...) @printf(ptr @.str.6811, i32 %t160, ptr %t163) - store { ptr, i64, i64 } %t158, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = call i32 (ptr, ...) @printf(ptr @.str.6812) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -endif10168: - %t167 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - store i64 0, ptr %a168 - br label %each.cond10169 -each.cond10169: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10170, label %each.end10172 -each.body10170: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 %t171 - %t175 = load { ptr, i64, i64 }, ptr %t174 - store { ptr, i64, i64 } %t175, ptr %a176 - %t177 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.6813, i64 20, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t181, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.6814, i64 62, i64 0 }, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t181, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - %t187 = extractvalue { ptr, i64, i64 } %t186, 1 - %t188 = trunc i64 %t187 to i32 - %t189 = extractvalue { ptr, i64, i64 } %t186, 0 - %t190 = icmp eq ptr %t189, null - %t191 = select i1 %t190, ptr @.str.6815, ptr %t189 - %t192 = call i32 (ptr, ...) @printf(ptr @.str.6816, i32 %t188, ptr %t191) - store { ptr, i64, i64 } %t186, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call i32 (ptr, ...) @printf(ptr @.str.6817) - br label %each.step10171 -each.step10171: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10169 -each.end10172: - store { ptr, i64, i64 } zeroinitializer, ptr %a197 - store { ptr, i64, i64 } zeroinitializer, ptr %a198 - %t199 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - store i64 0, ptr %a200 - br label %each.cond10173 -each.cond10173: - %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.body10174, label %each.end10176 -each.body10174: - %t205 = load ptr, ptr %t199 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i64 %t203 - %t207 = load { ptr, i64, i64 }, ptr %t206 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.6818, i64 0, i64 0 }, ptr %a209 - %t210 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a212 - %t213 = call i64 @finch_map_find(ptr %t210, ptr %a212, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t214 = icmp sge i64 %t213, 0 - br i1 %t214, label %then10177, label %endif10179 -then10177: - %t215 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t216 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t216, ptr %a217 - %t218 = call i64 @finch_map_find(ptr %t215, ptr %a217, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t219 = icmp slt i64 %t218, 0 - br i1 %t219, label %map.missing10180, label %map.found10181 -map.missing10180: - store { ptr, i64, i64 } zeroinitializer, ptr %a220 - store { ptr, i64, i64 } %t216, ptr %a221 - call void @finch_buf_str(ptr %a220, ptr %a221, i32 1) - call void @finch_map_missing(ptr @.str.6819, i64 131, ptr %a220) - unreachable -map.found10181: - %t222 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t215, i32 0, i32 0 - %t223 = load ptr, ptr %t222 - %t224 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t223, i64 %t218 - %t225 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t224, i32 0, i32 2 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %t225, i32 0, i32 1 - %t227 = load { ptr, i64, i64 }, ptr %t226 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_copy(ptr %a229, ptr %a228) - %t230 = load { ptr, i64, i64 }, ptr %a229 - %t231 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t230, ptr %a209 - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif10179 -endif10179: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %a209 - store i64 -1, ptr %a235 - %t236 = load i64, ptr %t233 - %t237 = load ptr, ptr %a197 - store i64 0, ptr %a238 - br label %find.cond10182 -find.cond10182: - %t239 = load i64, ptr %a238 - %t240 = icmp slt i64 %t239, %t236 - br i1 %t240, label %find.body10183, label %find.end10186 -find.body10183: - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t239 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - store { ptr, i64, i64 } %t234, ptr %a244 - %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) - %t246 = icmp ne i32 %t245, 0 - br i1 %t246, label %find.hit10184, label %find.next10185 -find.hit10184: - store i64 %t239, ptr %a235 - br label %find.end10186 -find.next10185: - %t247 = add i64 %t239, 1 - store i64 %t247, ptr %a238 - br label %find.cond10182 -find.end10186: - %t248 = load i64, ptr %a235 - store i64 %t248, ptr %a249 - %t250 = load i64, ptr %a249 - %t251 = icmp slt i64 %t250, 0 - br i1 %t251, label %then10187, label %endif10189 -then10187: - %t252 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t253 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = load i64, ptr %t252 - %t258 = add i64 %t257, 1 - call void @finch_arr_reserve(ptr %a197, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t259 = load ptr, ptr %a197 - %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 - store { ptr, i64, i64 } %t256, ptr %t260 - store i64 %t258, ptr %t252 - %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 - %t262 = load i64, ptr %t261 - %t263 = add i64 %t262, 1 - call void @finch_arr_reserve(ptr %a198, i64 %t263, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) - %t264 = load ptr, ptr %a198 - %t265 = getelementptr inbounds %S.linker.Names, ptr %t264, i64 %t262 - store %S.linker.Names zeroinitializer, ptr %t265 - store i64 %t263, ptr %t261 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = sub i64 %t267, 1 - store i64 %t268, ptr %a249 - br label %endif10189 -endif10189: - %t269 = load i64, ptr %a249 - %t270 = load { ptr, i64, i64 }, ptr %a198 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 %t269, %t271 - br i1 %t272, label %range10190, label %inrange10191 -range10190: - call void @finch_panic_index(ptr @.str.6820, i64 139, i64 %t269, i64 %t271) - unreachable -inrange10191: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i64 %t269 - %t275 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.linker.Names.add(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a209) - br label %each.step10175 -each.step10175: - %t276 = load i64, ptr %a200 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a200 - br label %each.cond10173 -each.end10176: - %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t279 = load i64, ptr %t278 - store i64 0, ptr %a280 - br label %for.cond10192 -for.cond10192: - %t281 = load i64, ptr %a280 - %t282 = icmp slt i64 %t281, %t279 - br i1 %t282, label %for.body10193, label %for.end10195 -for.body10193: - %t283 = load i64, ptr %a280 - %t284 = load { ptr, i64, i64 }, ptr %a198 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range10196, label %inrange10197 -range10196: - call void @finch_panic_index(ptr @.str.6821, i64 142, i64 %t283, i64 %t285) - unreachable -inrange10197: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds %S.linker.Names, ptr %t287, i64 %t283 - %t289 = getelementptr inbounds %S.linker.Names, ptr %t288, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch.copy.arr_str(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t293, ptr %a294 - store { ptr, i64, i64 } zeroinitializer, ptr %a295 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t297 = load i64, ptr %t296 - store i64 0, ptr %a298 - br label %for.cond10198 -for.cond10198: - %t299 = load i64, ptr %a298 - %t300 = icmp slt i64 %t299, %t297 - br i1 %t300, label %for.body10199, label %for.end10201 -for.body10199: - %t301 = load i64, ptr %a298 - %t302 = icmp slt i64 %t301, 3 - br i1 %t302, label %then10202, label %endif10204 -then10202: - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - %t304 = load i64, ptr %a298 - %t305 = load { ptr, i64, i64 }, ptr %a294 - %t306 = extractvalue { ptr, i64, i64 } %t305, 1 - %t307 = icmp uge i64 %t304, %t306 - br i1 %t307, label %range10205, label %inrange10206 -range10205: - call void @finch_panic_index(ptr @.str.6822, i64 146, i64 %t304, i64 %t306) - unreachable -inrange10206: - %t308 = extractvalue { ptr, i64, i64 } %t305, 0 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t304 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_copy(ptr %a312, ptr %a311) - %t313 = load { ptr, i64, i64 }, ptr %a312 - %t314 = load i64, ptr %t303 - %t315 = add i64 %t314, 1 - call void @finch_arr_reserve(ptr %a295, i64 %t315, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t316 = load ptr, ptr %a295 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 %t314 - store { ptr, i64, i64 } %t313, ptr %t317 - store i64 %t315, ptr %t303 - br label %endif10204 -endif10204: - br label %for.step10200 -for.step10200: - %t318 = load i64, ptr %a298 - %t319 = add i64 %t318, 1 - store i64 %t319, ptr %a298 - br label %for.cond10198 -for.end10201: - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6823, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a295, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t326 = load i64, ptr %t325 - %t327 = icmp sgt i64 %t326, 3 - br i1 %t327, label %then10207, label %endif10209 -then10207: - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6824, i64 5, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t334 = load i64, ptr %t333 - %t335 = sub i64 %t334, 3 - call void @finch_str_from_int(ptr %a336, i64 %t335) - %t337 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t332, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) - store { ptr, i64, i64 } %t332, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t337, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a338 - store { ptr, i64, i64 } %t343, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.6825, i64 5, i64 0 }, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - %t349 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t348, ptr %a324 - store { ptr, i64, i64 } %t349, ptr %a350 - call void @finch_str_drop(ptr %a350) - br label %endif10209 -endif10209: - %t351 = load i64, ptr %a280 - %t352 = load { ptr, i64, i64 }, ptr %a197 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range10210, label %inrange10211 -range10210: - call void @finch_panic_index(ptr @.str.6826, i64 153, i64 %t351, i64 %t353) - unreachable -inrange10211: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds { ptr, i64, i64 }, ptr %t355, i64 %t351 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %then10212, label %endif10214 -then10212: - %t360 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6827, i64 25, i64 0 }, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a361 - %t365 = extractvalue { ptr, i64, i64 } %t364, 1 - %t366 = trunc i64 %t365 to i32 - %t367 = extractvalue { ptr, i64, i64 } %t364, 0 - %t368 = icmp eq ptr %t367, null - %t369 = select i1 %t368, ptr @.str.6828, ptr %t367 - %t370 = call i32 (ptr, ...) @printf(ptr @.str.6829, i32 %t366, ptr %t369) - store { ptr, i64, i64 } %t364, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = call i32 (ptr, ...) @printf(ptr @.str.6830) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10194 -endif10214: - store { ptr, i64, i64 } { ptr @.str.6831, i64 4, i64 0 }, ptr %a373 - %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t375 = load i64, ptr %t374 - %t376 = icmp eq i64 %t375, 1 - br i1 %t376, label %then10215, label %endif10217 -then10215: - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.6832, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a378 - call void @finch_str_drop(ptr %a378) - br label %endif10217 -endif10217: - %t379 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6833, i64 7, i64 0 }, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - %t383 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t383, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.6834, i64 1, i64 0 }, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t383, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - %t389 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t388, ptr %a391 - store { ptr, i64, i64 } %t389, ptr %a392 - call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) - store { ptr, i64, i64 } %t388, ptr %a393 - call void @finch_str_drop(ptr %a393) - %t394 = load { ptr, i64, i64 }, ptr %a390 - store { ptr, i64, i64 } %t394, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.6835, i64 7, i64 0 }, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t394, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = load i64, ptr %a280 - %t401 = load { ptr, i64, i64 }, ptr %a197 - %t402 = extractvalue { ptr, i64, i64 } %t401, 1 - %t403 = icmp uge i64 %t400, %t402 - br i1 %t403, label %range10218, label %inrange10219 -range10218: - call void @finch_panic_index(ptr @.str.6836, i64 161, i64 %t400, i64 %t402) - unreachable -inrange10219: - %t404 = extractvalue { ptr, i64, i64 } %t401, 0 - %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i64 %t400 - %t406 = load { ptr, i64, i64 }, ptr %t405 - store { ptr, i64, i64 } %t399, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t399, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t411, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.6837, i64 31, i64 0 }, ptr %a414 - call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch_str_drop(ptr %a415) - %t416 = load { ptr, i64, i64 }, ptr %a412 - %t417 = extractvalue { ptr, i64, i64 } %t416, 1 - %t418 = trunc i64 %t417 to i32 - %t419 = extractvalue { ptr, i64, i64 } %t416, 0 - %t420 = icmp eq ptr %t419, null - %t421 = select i1 %t420, ptr @.str.6838, ptr %t419 - %t422 = call i32 (ptr, ...) @printf(ptr @.str.6839, i32 %t418, ptr %t421) - store { ptr, i64, i64 } %t416, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = call i32 (ptr, ...) @printf(ptr @.str.6840) - %t425 = extractvalue { ptr, i64, i64 } { ptr @.str.6841, i64 74, i64 0 }, 1 - %t426 = trunc i64 %t425 to i32 - %t427 = extractvalue { ptr, i64, i64 } { ptr @.str.6841, i64 74, i64 0 }, 0 - %t428 = icmp eq ptr %t427, null - %t429 = select i1 %t428, ptr @.str.6842, ptr %t427 - %t430 = call i32 (ptr, ...) @printf(ptr @.str.6843, i32 %t426, ptr %t429) - %t431 = call i32 (ptr, ...) @printf(ptr @.str.6844) - %t432 = extractvalue { ptr, i64, i64 } { ptr @.str.6845, i64 66, i64 0 }, 1 - %t433 = trunc i64 %t432 to i32 - %t434 = extractvalue { ptr, i64, i64 } { ptr @.str.6845, i64 66, i64 0 }, 0 - %t435 = icmp eq ptr %t434, null - %t436 = select i1 %t435, ptr @.str.6846, ptr %t434 - %t437 = call i32 (ptr, ...) @printf(ptr @.str.6847, i32 %t433, ptr %t436) - %t438 = call i32 (ptr, ...) @printf(ptr @.str.6848) - %t439 = extractvalue { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, 1 - %t440 = trunc i64 %t439 to i32 - %t441 = extractvalue { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, 0 - %t442 = icmp eq ptr %t441, null - %t443 = select i1 %t442, ptr @.str.6850, ptr %t441 - %t444 = call i32 (ptr, ...) @printf(ptr @.str.6851, i32 %t440, ptr %t443) - %t445 = call i32 (ptr, ...) @printf(ptr @.str.6852) - %t446 = load i64, ptr %a280 - %t447 = load { ptr, i64, i64 }, ptr %a197 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range10220, label %inrange10221 -range10220: - call void @finch_panic_index(ptr @.str.6854, i64 165, i64 %t446, i64 %t448) - unreachable -inrange10221: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds { ptr, i64, i64 }, ptr %t450, i64 %t446 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t452) - store { ptr, i64, i64 } { ptr @.str.6853, i64 12, i64 0 }, ptr %a455 - store { ptr, i64, i64 } %t453, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - store { ptr, i64, i64 } %t453, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a454 - store { ptr, i64, i64 } %t458, ptr %a460 - store { ptr, i64, i64 } { ptr @.str.6855, i64 1, i64 0 }, ptr %a461 - call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) - store { ptr, i64, i64 } %t458, ptr %a462 - call void @finch_str_drop(ptr %a462) - %t463 = load { ptr, i64, i64 }, ptr %a459 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = trunc i64 %t464 to i32 - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = icmp eq ptr %t466, null - %t468 = select i1 %t467, ptr @.str.6856, ptr %t466 - %t469 = call i32 (ptr, ...) @printf(ptr @.str.6857, i32 %t465, ptr %t468) - store { ptr, i64, i64 } %t463, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = call i32 (ptr, ...) @printf(ptr @.str.6858) - %t472 = extractvalue { ptr, i64, i64 } { ptr @.str.6859, i64 0, i64 0 }, 1 - %t473 = trunc i64 %t472 to i32 - %t474 = extractvalue { ptr, i64, i64 } { ptr @.str.6859, i64 0, i64 0 }, 0 - %t475 = icmp eq ptr %t474, null - %t476 = select i1 %t475, ptr @.str.6860, ptr %t474 - %t477 = call i32 (ptr, ...) @printf(ptr @.str.6861, i32 %t473, ptr %t476) - %t478 = call i32 (ptr, ...) @printf(ptr @.str.6862) - call void @finch_str_drop(ptr %a373) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10194 -for.step10194: - %t479 = load i64, ptr %a280 - %t480 = add i64 %t479, 1 - store i64 %t480, ptr %a280 - br label %for.cond10192 -for.end10195: - call void @finch.drop.arr_S_linker_Names(ptr %a198) - call void @finch.drop.arr_str(ptr %a197) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -} - -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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca i64, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - 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.failed10225, label %try.ok10226 -try.failed10225: - %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.ok10226: - store { ptr, i64, i64 } %t11, ptr %a13 - %t14 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t14, ptr %a15 - %t16 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.6863, 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) - store { ptr, i64, i64 } %t26, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.6864, i64 3, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - %t39 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t20, ptr %a42 - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t20, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t39, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.6865, i64 2, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = call i32 @finch_file_exists(ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then10227, label %endif10229 -then10227: - %t57 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t58 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t59 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t58, { ptr, i64, i64 } %t57, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t59 -endif10229: - %t60 = load { ptr, i64, i64 }, ptr %a15 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t60) - %t61 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6866, i64 5, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t65, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.6867, i64 6, i64 0 }, ptr %a76 - %t77 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then10230, label %endif10232 -then10230: - %t79 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.6868, i64 0, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10232 -endif10232: - %t81 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.6869, i64 4, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.6870, i64 4, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - %t92 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t91, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.6871, i64 4, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load { ptr, i64, i64 }, ptr %a1 - %t104 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a106 - store { ptr, i64, i64 } %t104, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.6872, i64 4, i64 0 }, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - %t116 = load { ptr, i64, i64 }, ptr %a75 - %t117 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t115, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t115, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.6873, i64 3, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a86 - %t130 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6874, i64 5, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call i64 @finch.host.run({ ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - store i64 %t142, ptr %a144 - %t145 = load i64, ptr %a144 - %t146 = icmp ne i64 %t145, 0 - br i1 %t146, label %then10233, label %endif10235 -then10233: - %t147 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } zeroinitializer, ptr %a149 - store { ptr, i64, i64 } zeroinitializer, ptr %a150 - %t151 = call i32 @finch_try_read_file(ptr %a149, ptr %a148, ptr %a150) - %t152 = icmp eq i32 %t151, 0 - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = load { ptr, i64, i64 }, ptr %a149 - br i1 %t152, label %or.failed10236, label %or.ok10237 -or.failed10236: - store { ptr, i64, i64 } %t153, ptr %a155 - call void @finch_str_drop(ptr %a155) - br label %or.bend10238 -or.bend10238: - br label %or.end10239 -or.ok10237: - br label %or.end10239 -or.end10239: - %t156 = phi { ptr, i64, i64 } [ { ptr @.str.6875, i64 0, i64 0 }, %or.bend10238 ], [ %t154, %or.ok10237 ] - store { ptr, i64, i64 } %t156, ptr %a157 - %t158 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.host.remove({ ptr, i64, i64 } %t158) - %t159 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t159) - %t160 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6876, i64 46, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t164, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.6877, i64 30, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch_str_drop(ptr %a157) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a52) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t176 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t175, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t176 -endif10235: - %t177 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t177) - %t178 = load { ptr, i64, i64 }, ptr %a75 - %t179 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.host.move({ ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) - %t180 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t181 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t182 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t181, { ptr, i64, i64 } %t180, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t182 -} - -define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) { -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = 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 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a204 = 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 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = 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 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a270 = 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 - %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 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = 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 - %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 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca i64, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = 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 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = 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 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %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 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a513 = 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 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca i64, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca i64, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a580 = 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.6878, i64 11, i64 0 }, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6879, 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 %then10240, label %endif10242 -then10240: - %t17 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.6880, i64 5, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %endif10242 -endif10242: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_copy(ptr %a21, ptr %a20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t25 = load i1, ptr %t24 - br i1 %t25, label %then10243, label %else10244 -then10243: - %t26 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7 - %t27 = load { ptr, i64, i64 }, ptr %t26 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - %t31 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t30, ptr %a23 - store { ptr, i64, i64 } %t31, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif10245 -else10244: - %t33 = extractvalue { ptr, i64, i64 } { ptr @.str.6881, i64 8, i64 0 }, 0 - %t34 = icmp eq ptr %t33, null - %t35 = select i1 %t34, ptr @.str.6882, ptr %t33 - %t36 = call ptr @getenv(ptr %t35) - store { ptr, i64, i64 } zeroinitializer, ptr %a37 - call void @finch_str_from_c(ptr %a37, ptr %t36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = extractvalue { ptr, i64, i64 } %t38, 1 - %t40 = icmp sgt i64 %t39, 0 - br i1 %t40, label %then10246, label %endif10248 -then10246: - %t41 = extractvalue { ptr, i64, i64 } { ptr @.str.6883, i64 8, i64 0 }, 0 - %t42 = icmp eq ptr %t41, null - %t43 = select i1 %t42, ptr @.str.6884, ptr %t41 - %t44 = call ptr @getenv(ptr %t43) - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - call void @finch_str_from_c(ptr %a45, ptr %t44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a23 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif10248 -endif10248: - br label %endif10245 -endif10245: - %t52 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = load %S.platform.Target, ptr %a2 - %t55 = load { ptr, i64, i64 }, ptr %a23 - %t56 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t53, %S.platform.Target %t54, { ptr, i64, i64 } %t55) - %t57 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 0 - %t58 = xor i1 %t57, true - %t59 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 2 - %t60 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 1 - br i1 %t58, label %or.failed10249, label %or.ok10250 -or.failed10249: - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = trunc i64 %t63 to i32 - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = icmp eq ptr %t65, null - %t67 = select i1 %t66, ptr @.str.6885, ptr %t65 - %t68 = call i32 (ptr, ...) @printf(ptr @.str.6886, i32 %t64, ptr %t67) - %t69 = call i32 (ptr, ...) @printf(ptr @.str.6887) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -or.ok10250: - store { ptr, i64, i64 } %t60, ptr %a70 - %t71 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6888, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t76, ptr %a77 - %t78 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.6889, i64 2, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a77 - %t86 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = call i32 @finch_write_file(ptr %a88, ptr %a89) - %t91 = icmp ne i32 %t90, 0 - store { ptr, i64, i64 } { ptr @.str.6890, i64 0, i64 0 }, ptr %a92 - %t93 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t94 = load i1, ptr %t93 - br label %logic.from10251 -logic.from10251: - br i1 %t94, label %logic.end10253, label %logic.rhs10252 -logic.rhs10252: - %t95 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t96 = load i1, ptr %t95 - br label %logic.rend10254 -logic.rend10254: - br label %logic.end10253 -logic.end10253: - %t97 = phi i1 [ true, %logic.from10251 ], [ %t96, %logic.rend10254 ] - br i1 %t97, label %then10255, label %endif10257 -then10255: - %t98 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } { ptr @.str.6891, i64 10, i64 0 }, 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 - %t104 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t103, ptr %a92 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - br label %endif10257 -endif10257: - %t106 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6892, i64 4, i64 0 }, 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 %a112 - %t113 = load { ptr, i64, i64 }, ptr %a13 - %t114 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.6893, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3 - %t125 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t123, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t123, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t130, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.6894, i64 7, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = load { ptr, i64, i64 }, ptr %a77 - %t144 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t142, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t142, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.6895, i64 4, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a84 - %t157 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t155, ptr %a161 - call void @finch_str_drop(ptr %a161) - store { ptr, i64, i64 } %t157, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a158 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.6896, i64 3, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = load { ptr, i64, i64 }, ptr %a112 - %t170 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t169) - store { ptr, i64, i64 } %t168, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t168, ptr %a174 - call void @finch_str_drop(ptr %a174) - store { ptr, i64, i64 } %t170, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.6897, i64 5, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call i64 @finch.host.run({ ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - store i64 %t182, ptr %a184 - %t185 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.host.remove({ ptr, i64, i64 } %t185) - %t186 = load i64, ptr %a184 - %t187 = icmp ne i64 %t186, 0 - br i1 %t187, label %then10258, label %endif10260 -then10258: - %t188 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t188, ptr %a189 - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - store { ptr, i64, i64 } zeroinitializer, ptr %a191 - %t192 = call i32 @finch_try_read_file(ptr %a190, ptr %a189, ptr %a191) - %t193 = icmp eq i32 %t192, 0 - %t194 = load { ptr, i64, i64 }, ptr %a191 - %t195 = load { ptr, i64, i64 }, ptr %a190 - br i1 %t193, label %or.failed10261, label %or.ok10262 -or.failed10261: - store { ptr, i64, i64 } %t194, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %or.bend10263 -or.bend10263: - br label %or.end10264 -or.ok10262: - br label %or.end10264 -or.end10264: - %t197 = phi { ptr, i64, i64 } [ { ptr @.str.6898, i64 0, i64 0 }, %or.bend10263 ], [ %t195, %or.ok10262 ] - %t198 = extractvalue { ptr, i64, i64 } %t197, 1 - %t199 = trunc i64 %t198 to i32 - %t200 = extractvalue { ptr, i64, i64 } %t197, 0 - %t201 = icmp eq ptr %t200, null - %t202 = select i1 %t201, ptr @.str.6899, ptr %t200 - %t203 = call i32 (ptr, ...) @printf(ptr @.str.6900, i32 %t199, ptr %t202) - store { ptr, i64, i64 } %t197, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = call i32 (ptr, ...) @printf(ptr @.str.6901) - %t206 = extractvalue { ptr, i64, i64 } { ptr @.str.6902, i64 46, i64 0 }, 1 - %t207 = trunc i64 %t206 to i32 - %t208 = extractvalue { ptr, i64, i64 } { ptr @.str.6902, i64 46, i64 0 }, 0 - %t209 = icmp eq ptr %t208, null - %t210 = select i1 %t209, ptr @.str.6903, ptr %t208 - %t211 = call i32 (ptr, ...) @printf(ptr @.str.6904, i32 %t207, ptr %t210) - %t212 = call i32 (ptr, ...) @printf(ptr @.str.6905) - %t213 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t213) - %t214 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t214) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10260: - %t215 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.6906, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a216 - %t220 = load { ptr, i64, i64 }, ptr %a84 - %t221 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t220) - store { ptr, i64, i64 } %t219, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t219, ptr %a225 - call void @finch_str_drop(ptr %a225) - store { ptr, i64, i64 } %t221, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.6907, i64 1, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load { ptr, i64, i64 }, ptr %a70 - %t234 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t232, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t232, ptr %a238 - call void @finch_str_drop(ptr %a238) - store { ptr, i64, i64 } %t234, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.6908, i64 4, i64 0 }, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t247 = load { ptr, i64, i64 }, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t245, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t245, ptr %a252 - call void @finch_str_drop(ptr %a252) - store { ptr, i64, i64 } %t248, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2 - %t257 = load i1, ptr %t256 - %t258 = xor i1 %t257, true - br i1 %t258, label %then10265, label %endif10267 -then10265: - %t259 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.6909, i64 4, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - %t264 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t263, ptr %a255 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch_str_drop(ptr %a265) - br label %endif10267 -endif10267: - %t266 = extractvalue { ptr, i64, i64 } { ptr @.str.6910, i64 13, i64 0 }, 0 - %t267 = icmp eq ptr %t266, null - %t268 = select i1 %t267, ptr @.str.6911, ptr %t266 - %t269 = call ptr @getenv(ptr %t268) - store { ptr, i64, i64 } zeroinitializer, ptr %a270 - call void @finch_str_from_c(ptr %a270, ptr %t269) - %t271 = load { ptr, i64, i64 }, ptr %a270 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp sgt i64 %t272, 0 - br i1 %t273, label %then10268, label %endif10270 -then10268: - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.6912, i64 1, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - %t279 = extractvalue { ptr, i64, i64 } { ptr @.str.6913, i64 13, i64 0 }, 0 - %t280 = icmp eq ptr %t279, null - %t281 = select i1 %t280, ptr @.str.6914, ptr %t279 - %t282 = call ptr @getenv(ptr %t281) - store { ptr, i64, i64 } zeroinitializer, ptr %a283 - call void @finch_str_from_c(ptr %a283, ptr %t282) - %t284 = load { ptr, i64, i64 }, ptr %a283 - store { ptr, i64, i64 } %t278, ptr %a286 - store { ptr, i64, i64 } %t284, ptr %a287 - call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) - store { ptr, i64, i64 } %t278, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a285 - %t290 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t289, ptr %a255 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif10270 -endif10270: - %t292 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 - %t293 = load i1, ptr %t292 - br i1 %t293, label %then10271, label %endif10273 -then10271: - %t294 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 - %t295 = load i1, ptr %t294 - br i1 %t295, label %then10274, label %else10275 -then10274: - %t296 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.6915, i64 12, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t300, ptr %a255 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif10276 -else10275: - %t303 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.6916, i64 8, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t307, ptr %a255 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10276 -endif10276: - br label %endif10273 -endif10273: - store { ptr, i64, i64 } zeroinitializer, ptr %a310 - %t311 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6 - store i64 0, ptr %a312 - br label %each.cond10277 -each.cond10277: - %t313 = getelementptr inbounds { ptr, i64, i64 }, ptr %t311, i32 0, i32 1 - %t314 = load i64, ptr %t313 - %t315 = load i64, ptr %a312 - %t316 = icmp slt i64 %t315, %t314 - br i1 %t316, label %each.body10278, label %each.end10280 -each.body10278: - %t317 = load ptr, ptr %t311 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i64 %t315 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - %t321 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.6918, i64 2, i64 0 }, ptr %a324 - %t325 = call i32 @finch_str_ends(ptr %a322, ptr %a324) - %t326 = icmp ne i32 %t325, 0 - br i1 %t326, label %then10281, label %else10282 -then10281: - %t327 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t328 = load { ptr, i64, i64 }, ptr %t327 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6919, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t334 = load i64, ptr %t333 - call void @finch_str_from_int(ptr %a335, i64 %t334) - %t336 = load { ptr, i64, i64 }, ptr %a335 - store { ptr, i64, i64 } %t332, ptr %a338 - store { ptr, i64, i64 } %t336, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t332, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t336, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load { ptr, i64, i64 }, ptr %a337 - store { ptr, i64, i64 } %t342, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6920, i64 2, i64 0 }, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - store { ptr, i64, i64 } %t342, ptr %a346 - call void @finch_str_drop(ptr %a346) - %t347 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t347, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.6921, i64 6, i64 0 }, ptr %a349 - %t350 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t351 = load i1, ptr %t350 - br i1 %t351, label %then10284, label %endif10286 -then10284: - %t352 = load { ptr, i64, i64 }, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.6922, i64 0, i64 0 }, ptr %a349 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - br label %endif10286 -endif10286: - %t354 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6923, i64 4, 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 %a349 - 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) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t364, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.6924, i64 4, i64 0 }, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - %t370 = load { ptr, i64, i64 }, ptr %a320 - %t371 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t369, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t369, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.6925, i64 4, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = load { ptr, i64, i64 }, ptr %a348 - %t384 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t383) - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - store { ptr, i64, i64 } %t384, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.6926, i64 3, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a112 - %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) - store { ptr, i64, i64 } %t395, ptr %a401 - call void @finch_str_drop(ptr %a401) - store { ptr, i64, i64 } %t397, ptr %a402 - call void @finch_str_drop(ptr %a402) - %t403 = load { ptr, i64, i64 }, ptr %a398 - store { ptr, i64, i64 } %t403, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.6927, i64 5, i64 0 }, ptr %a406 - call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406) - store { ptr, i64, i64 } %t403, ptr %a407 - call void @finch_str_drop(ptr %a407) - %t408 = load { ptr, i64, i64 }, ptr %a404 - %t409 = call i64 @finch.host.run({ ptr, i64, i64 } %t408) - store { ptr, i64, i64 } %t408, ptr %a410 - call void @finch_str_drop(ptr %a410) - store i64 %t409, ptr %a411 - %t412 = load i64, ptr %a411 - %t413 = icmp ne i64 %t412, 0 - br i1 %t413, label %then10287, label %endif10289 -then10287: - %t414 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t414, ptr %a415 - store { ptr, i64, i64 } zeroinitializer, ptr %a416 - store { ptr, i64, i64 } zeroinitializer, ptr %a417 - %t418 = call i32 @finch_try_read_file(ptr %a416, ptr %a415, ptr %a417) - %t419 = icmp eq i32 %t418, 0 - %t420 = load { ptr, i64, i64 }, ptr %a417 - %t421 = load { ptr, i64, i64 }, ptr %a416 - br i1 %t419, label %or.failed10290, label %or.ok10291 -or.failed10290: - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - br label %or.bend10292 -or.bend10292: - br label %or.end10293 -or.ok10291: - br label %or.end10293 -or.end10293: - %t423 = phi { ptr, i64, i64 } [ { ptr @.str.6928, i64 0, i64 0 }, %or.bend10292 ], [ %t421, %or.ok10291 ] - store { ptr, i64, i64 } %t423, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.6929, i64 24, i64 0 }, ptr %a426 - call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) - store { ptr, i64, i64 } %t423, ptr %a427 - call void @finch_str_drop(ptr %a427) - %t428 = load { ptr, i64, i64 }, ptr %a424 - %t429 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t428, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t428, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = extractvalue { ptr, i64, i64 } %t434, 1 - %t436 = trunc i64 %t435 to i32 - %t437 = extractvalue { ptr, i64, i64 } %t434, 0 - %t438 = icmp eq ptr %t437, null - %t439 = select i1 %t438, ptr @.str.6930, ptr %t437 - %t440 = call i32 (ptr, ...) @printf(ptr @.str.6931, i32 %t436, ptr %t439) - store { ptr, i64, i64 } %t434, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = call i32 (ptr, ...) @printf(ptr @.str.6932) - %t443 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t443) - %t444 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t444) - %t445 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.host.remove({ ptr, i64, i64 } %t445) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10289: - %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t447, ptr %a448 - call void @finch_str_copy(ptr %a449, ptr %a448) - %t450 = load { ptr, i64, i64 }, ptr %a449 - %t451 = load i64, ptr %t446 - %t452 = add i64 %t451, 1 - call void @finch_arr_reserve(ptr %a310, i64 %t452, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t453 = load ptr, ptr %a310 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t451 - store { ptr, i64, i64 } %t450, ptr %t454 - store i64 %t452, ptr %t446 - %t455 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.6933, i64 1, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - %t459 = load { ptr, i64, i64 }, ptr %a456 - %t460 = load { ptr, i64, i64 }, ptr %a348 - %t461 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t460) - store { ptr, i64, i64 } %t459, ptr %a463 - store { ptr, i64, i64 } %t461, ptr %a464 - call void @finch_str_concat(ptr %a462, ptr %a463, ptr %a464) - store { ptr, i64, i64 } %t459, ptr %a465 - call void @finch_str_drop(ptr %a465) - store { ptr, i64, i64 } %t461, ptr %a466 - call void @finch_str_drop(ptr %a466) - %t467 = load { ptr, i64, i64 }, ptr %a462 - %t468 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t467, ptr %a255 - store { ptr, i64, i64 } %t468, ptr %a469 - call void @finch_str_drop(ptr %a469) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - br label %endif10283 -else10282: - %t470 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.6935, i64 2, i64 0 }, ptr %a473 - %t474 = call i32 @finch_str_ends(ptr %a471, ptr %a473) - %t475 = icmp ne i32 %t474, 0 - br label %logic.from10294 -logic.from10294: - br i1 %t475, label %logic.end10296, label %logic.rhs10295 -logic.rhs10295: - %t476 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t476, ptr %a477 - store { ptr, i64, i64 } { ptr @.str.6937, i64 2, i64 0 }, ptr %a479 - %t480 = call i32 @finch_str_ends(ptr %a477, ptr %a479) - %t481 = icmp ne i32 %t480, 0 - br label %logic.rend10297 -logic.rend10297: - br label %logic.end10296 -logic.end10296: - %t482 = phi i1 [ true, %logic.from10294 ], [ %t481, %logic.rend10297 ] - br i1 %t482, label %then10298, label %else10299 -then10298: - %t483 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.6938, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - %t487 = load { ptr, i64, i64 }, ptr %a484 - %t488 = load { ptr, i64, i64 }, ptr %a320 - %t489 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t487, ptr %a491 - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_concat(ptr %a490, ptr %a491, ptr %a492) - store { ptr, i64, i64 } %t487, ptr %a493 - call void @finch_str_drop(ptr %a493) - store { ptr, i64, i64 } %t489, ptr %a494 - call void @finch_str_drop(ptr %a494) - %t495 = load { ptr, i64, i64 }, ptr %a490 - %t496 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t495, ptr %a255 - store { ptr, i64, i64 } %t496, ptr %a497 - call void @finch_str_drop(ptr %a497) - br label %endif10300 -else10299: - %t498 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t498, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.6939, i64 1, i64 0 }, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - %t502 = load { ptr, i64, i64 }, ptr %a499 - %t503 = load { ptr, i64, i64 }, ptr %a320 - %t504 = load %S.platform.Target, ptr %a2 - %t505 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t503, %S.platform.Target %t504) - store { ptr, i64, i64 } %t502, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t502, ptr %a509 - call void @finch_str_drop(ptr %a509) - store { ptr, i64, i64 } %t505, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a506 - %t512 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t511, ptr %a255 - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - br label %endif10300 -endif10300: - br label %endif10283 -endif10283: - br label %each.step10279 -each.step10279: - %t514 = load i64, ptr %a312 - %t515 = add i64 %t514, 1 - store i64 %t515, ptr %a312 - br label %each.cond10277 -each.end10280: - %t516 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t516, ptr %a518 - store { ptr, i64, i64 } { ptr @.str.6940, i64 3, 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, i64, i64 }, ptr %a112 - %t522 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t520, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.6941, i64 5, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - %t534 = call i64 @finch.host.run({ ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a535 - call void @finch_str_drop(ptr %a535) - store i64 %t534, ptr %a536 - %t537 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t537, ptr %a538 - store { ptr, i64, i64 } zeroinitializer, ptr %a539 - store { ptr, i64, i64 } zeroinitializer, ptr %a540 - %t541 = call i32 @finch_try_read_file(ptr %a539, ptr %a538, ptr %a540) - %t542 = icmp eq i32 %t541, 0 - %t543 = load { ptr, i64, i64 }, ptr %a540 - %t544 = load { ptr, i64, i64 }, ptr %a539 - br i1 %t542, label %or.failed10301, label %or.ok10302 -or.failed10301: - store { ptr, i64, i64 } %t543, ptr %a545 - call void @finch_str_drop(ptr %a545) - br label %or.bend10303 -or.bend10303: - br label %or.end10304 -or.ok10302: - br label %or.end10304 -or.end10304: - %t546 = phi { ptr, i64, i64 } [ { ptr @.str.6942, i64 0, i64 0 }, %or.bend10303 ], [ %t544, %or.ok10302 ] - store { ptr, i64, i64 } %t546, ptr %a547 - %t548 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t548) - %t549 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t549) - store i64 0, ptr %a550 - br label %each.cond10305 -each.cond10305: - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t552 = load i64, ptr %t551 - %t553 = load i64, ptr %a550 - %t554 = icmp slt i64 %t553, %t552 - br i1 %t554, label %each.body10306, label %each.end10308 -each.body10306: - %t555 = load ptr, ptr %a310 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t555, i64 %t553 - %t557 = load { ptr, i64, i64 }, ptr %t556 - store { ptr, i64, i64 } %t557, ptr %a558 - %t559 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.host.remove({ ptr, i64, i64 } %t559) - br label %each.step10307 -each.step10307: - %t560 = load i64, ptr %a550 - %t561 = add i64 %t560, 1 - store i64 %t561, ptr %a550 - br label %each.cond10305 -each.end10308: - %t562 = load i64, ptr %a536 - %t563 = icmp eq i64 %t562, 127 - br i1 %t563, label %then10309, label %endif10311 -then10309: - %t564 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.6943, i64 42, i64 0 }, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t568, ptr %a570 - store { ptr, i64, i64 } { ptr @.str.6944, i64 32, i64 0 }, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t568, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - %t574 = extractvalue { ptr, i64, i64 } %t573, 1 - %t575 = trunc i64 %t574 to i32 - %t576 = extractvalue { ptr, i64, i64 } %t573, 0 - %t577 = icmp eq ptr %t576, null - %t578 = select i1 %t577, ptr @.str.6945, ptr %t576 - %t579 = call i32 (ptr, ...) @printf(ptr @.str.6946, i32 %t575, ptr %t578) - store { ptr, i64, i64 } %t573, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = call i32 (ptr, ...) @printf(ptr @.str.6947) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10311: - %t582 = load i64, ptr %a536 - %t583 = icmp ne i64 %t582, 0 - br i1 %t583, label %then10312, label %endif10314 -then10312: - %t584 = load { ptr, i64, i64 }, ptr %a547 - %t585 = load %S.cimport.CImports, ptr %a3 - %t586 = load %S.platform.Target, ptr %a2 - %t587 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t584, %S.cimport.CImports %t585, %S.platform.Target %t586) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 %t587 -endif10314: - %t588 = getelementptr inbounds { ptr, i64, i64 }, ptr %a547, i32 0, i32 1 - %t589 = load i64, ptr %t588 - %t590 = icmp sgt i64 %t589, 0 - br i1 %t590, label %then10315, label %endif10317 -then10315: - %t591 = load { ptr, i64, i64 }, ptr %a547 - %t592 = extractvalue { ptr, i64, i64 } %t591, 1 - %t593 = trunc i64 %t592 to i32 - %t594 = extractvalue { ptr, i64, i64 } %t591, 0 - %t595 = icmp eq ptr %t594, null - %t596 = select i1 %t595, ptr @.str.6948, ptr %t594 - %t597 = call i32 (ptr, ...) @printf(ptr @.str.6949, i32 %t593, ptr %t596) - %t598 = call i32 (ptr, ...) @printf(ptr @.str.6950) - br label %endif10317 -endif10317: - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 0 -} - -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.from10318 -logic.from10318: - br i1 %t3, label %logic.rhs10319, label %logic.end10320 -logic.rhs10319: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend10321 -logic.rend10321: - br label %logic.end10320 -logic.end10320: - %t6 = phi i1 [ false, %logic.from10318 ], [ %t5, %logic.rend10321 ] - br i1 %t6, label %then10322, label %endif10324 -then10322: - %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 -endif10324: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from10325 -logic.from10325: - br i1 %t12, label %logic.rhs10326, label %logic.end10327 -logic.rhs10326: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend10328 -logic.rend10328: - br label %logic.end10327 -logic.end10327: - %t15 = phi i1 [ false, %logic.from10325 ], [ %t14, %logic.rend10328 ] - br i1 %t15, label %then10329, label %endif10331 -then10329: - %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 -endif10331: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from10332 -logic.from10332: - br i1 %t22, label %logic.rhs10333, label %logic.end10334 -logic.rhs10333: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend10335 -logic.rend10335: - br label %logic.end10334 -logic.end10334: - %t25 = phi i1 [ false, %logic.from10332 ], [ %t24, %logic.rend10335 ] - br i1 %t25, label %then10336, label %endif10338 -then10336: - %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 -endif10338: - ret i64 -1 -} - -define internal void @finch.drop.arr_u8(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6952, 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 %then10339, label %endif10341 -then10339: - %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.6953, i64 114) - %t18 = load { ptr, i64, i64 }, ptr %a15 - %t19 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %endif10341 -endif10341: - store { ptr, i64, i64 } zeroinitializer, ptr %a21 - store i64 0, ptr %a22 - br label %while.cond10342 -while.cond10342: - %t23 = load i64, ptr %a22 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = icmp slt i64 %t23, %t25 - br i1 %t26, label %while.body10343, label %while.end10344 -while.body10343: - %t27 = load i64, ptr %a22 - %t28 = load { ptr, i64, i64 }, ptr %a6 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 %t27, %t29 - br i1 %t30, label %range10345, label %inrange10346 -range10345: - call void @finch_panic_index(ptr @.str.6954, i64 119, i64 %t27, i64 %t29) - unreachable -inrange10346: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds i8, ptr %t31, i64 %t27 - %t33 = load i8, ptr %t32 - %t34 = icmp eq i8 %t33, 37 - br label %logic.from10347 -logic.from10347: - br i1 %t34, label %logic.rhs10348, label %logic.end10349 -logic.rhs10348: - %t35 = load i64, ptr %a22 - %t36 = add i64 %t35, 2 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 0 - %t40 = icmp slt i64 %t36, %t39 - br label %logic.rend10350 -logic.rend10350: - br label %logic.end10349 -logic.end10349: - %t41 = phi i1 [ false, %logic.from10347 ], [ %t40, %logic.rend10350 ] - br label %logic.from10351 -logic.from10351: - br i1 %t41, label %logic.rhs10352, label %logic.end10353 -logic.rhs10352: - %t42 = load i64, ptr %a22 - %t43 = add i64 %t42, 1 - %t44 = load { ptr, i64, i64 }, ptr %a6 - %t45 = extractvalue { ptr, i64, i64 } %t44, 1 - %t46 = icmp uge i64 %t43, %t45 - br i1 %t46, label %range10354, label %inrange10355 -range10354: - call void @finch_panic_index(ptr @.str.6955, i64 119, i64 %t43, i64 %t45) - unreachable -inrange10355: - %t47 = extractvalue { ptr, i64, i64 } %t44, 0 - %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 - %t49 = load i8, ptr %t48 - %t50 = call i64 @finch.lsp.hexval(i8 %t49) - %t51 = icmp sge i64 %t50, 0 - br label %logic.rend10356 -logic.rend10356: - br label %logic.end10353 -logic.end10353: - %t52 = phi i1 [ false, %logic.from10351 ], [ %t51, %logic.rend10356 ] - br label %logic.from10357 -logic.from10357: - br i1 %t52, label %logic.rhs10358, label %logic.end10359 -logic.rhs10358: - %t53 = load i64, ptr %a22 - %t54 = add i64 %t53, 2 - %t55 = load { ptr, i64, i64 }, ptr %a6 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range10360, label %inrange10361 -range10360: - call void @finch_panic_index(ptr @.str.6956, i64 119, i64 %t54, i64 %t56) - unreachable -inrange10361: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 - %t60 = load i8, ptr %t59 - %t61 = call i64 @finch.lsp.hexval(i8 %t60) - %t62 = icmp sge i64 %t61, 0 - br label %logic.rend10362 -logic.rend10362: - br label %logic.end10359 -logic.end10359: - %t63 = phi i1 [ false, %logic.from10357 ], [ %t62, %logic.rend10362 ] - br i1 %t63, label %then10363, label %else10364 -then10363: - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t65 = load i64, ptr %a22 - %t66 = add i64 %t65, 1 - %t67 = load { ptr, i64, i64 }, ptr %a6 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range10366, label %inrange10367 -range10366: - call void @finch_panic_index(ptr @.str.6957, i64 120, i64 %t66, i64 %t68) - unreachable -inrange10367: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds i8, ptr %t70, i64 %t66 - %t72 = load i8, ptr %t71 - %t73 = call i64 @finch.lsp.hexval(i8 %t72) - %t74 = mul i64 %t73, 16 - %t75 = load i64, ptr %a22 - %t76 = add i64 %t75, 2 - %t77 = load { ptr, i64, i64 }, ptr %a6 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range10368, label %inrange10369 -range10368: - call void @finch_panic_index(ptr @.str.6958, i64 120, i64 %t76, i64 %t78) - unreachable -inrange10369: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds i8, ptr %t80, i64 %t76 - %t82 = load i8, ptr %t81 - %t83 = call i64 @finch.lsp.hexval(i8 %t82) - %t84 = add i64 %t74, %t83 - %t85 = trunc i64 %t84 to i8 - %t86 = load i64, ptr %t64 - %t87 = add i64 %t86, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t87, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t88 = load ptr, ptr %a21 - %t89 = getelementptr inbounds i8, ptr %t88, i64 %t86 - store i8 %t85, ptr %t89 - store i64 %t87, ptr %t64 - %t90 = load i64, ptr %a22 - %t91 = add i64 %t90, 3 - store i64 %t91, ptr %a22 - br label %endif10365 -else10364: - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t93 = load i64, ptr %a22 - %t94 = load { ptr, i64, i64 }, ptr %a6 - %t95 = extractvalue { ptr, i64, i64 } %t94, 1 - %t96 = icmp uge i64 %t93, %t95 - br i1 %t96, label %range10370, label %inrange10371 -range10370: - call void @finch_panic_index(ptr @.str.6959, i64 123, i64 %t93, i64 %t95) - unreachable -inrange10371: - %t97 = extractvalue { ptr, i64, i64 } %t94, 0 - %t98 = getelementptr inbounds i8, ptr %t97, i64 %t93 - %t99 = load i8, ptr %t98 - %t100 = load i64, ptr %t92 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t101, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %a21 - %t103 = getelementptr inbounds i8, ptr %t102, i64 %t100 - store i8 %t99, ptr %t103 - store i64 %t101, ptr %t92 - %t104 = load i64, ptr %a22 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a22 - br label %endif10365 -endif10365: - br label %while.cond10342 -while.end10344: - %t106 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } zeroinitializer, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_from_bytes(ptr %a107, ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.drop.arr_u8(ptr %a21) - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t109 -} - -define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { -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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6960, 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.6961, 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.cond10372 -each.cond10372: - %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.body10373, label %each.end10375 -each.body10373: - %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.from10376 -logic.from10376: - br i1 %t23, label %logic.rhs10377, label %logic.end10378 -logic.rhs10377: - %t24 = load i8, ptr %a18 - %t25 = icmp ule i8 %t24, 122 - br label %logic.rend10379 -logic.rend10379: - br label %logic.end10378 -logic.end10378: - %t26 = phi i1 [ false, %logic.from10376 ], [ %t25, %logic.rend10379 ] - br label %logic.from10380 -logic.from10380: - br i1 %t26, label %logic.end10382, label %logic.rhs10381 -logic.rhs10381: - %t27 = load i8, ptr %a18 - %t28 = icmp uge i8 %t27, 65 - br label %logic.from10383 -logic.from10383: - br i1 %t28, label %logic.rhs10384, label %logic.end10385 -logic.rhs10384: - %t29 = load i8, ptr %a18 - %t30 = icmp ule i8 %t29, 90 - br label %logic.rend10386 -logic.rend10386: - br label %logic.end10385 -logic.end10385: - %t31 = phi i1 [ false, %logic.from10383 ], [ %t30, %logic.rend10386 ] - br label %logic.rend10387 -logic.rend10387: - br label %logic.end10382 -logic.end10382: - %t32 = phi i1 [ true, %logic.from10380 ], [ %t31, %logic.rend10387 ] - br label %logic.from10388 -logic.from10388: - br i1 %t32, label %logic.end10390, label %logic.rhs10389 -logic.rhs10389: - %t33 = load i8, ptr %a18 - %t34 = icmp uge i8 %t33, 48 - br label %logic.from10391 -logic.from10391: - br i1 %t34, label %logic.rhs10392, label %logic.end10393 -logic.rhs10392: - %t35 = load i8, ptr %a18 - %t36 = icmp ule i8 %t35, 57 - br label %logic.rend10394 -logic.rend10394: - br label %logic.end10393 -logic.end10393: - %t37 = phi i1 [ false, %logic.from10391 ], [ %t36, %logic.rend10394 ] - br label %logic.rend10395 -logic.rend10395: - br label %logic.end10390 -logic.end10390: - %t38 = phi i1 [ true, %logic.from10388 ], [ %t37, %logic.rend10395 ] - br label %logic.from10396 -logic.from10396: - br i1 %t38, label %logic.end10398, label %logic.rhs10397 -logic.rhs10397: - store { ptr, i64, i64 } { ptr @.str.6962, 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 - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend10399 -logic.rend10399: - br label %logic.end10398 -logic.end10398: - %t48 = phi i1 [ true, %logic.from10396 ], [ %t46, %logic.rend10399 ] - br i1 %t48, label %then10400, label %else10401 -then10400: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t50 = load i8, ptr %a18 - call void @finch_str_from_char(ptr %a51, i8 signext %t50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - %t53 = load i64, ptr %t49 - %t54 = add i64 %t53, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t55 = load ptr, ptr %a9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53 - store { ptr, i64, i64 } %t52, ptr %t56 - store i64 %t54, ptr %t49 - br label %endif10402 -else10401: - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t58 = load i64, ptr %a21 - %t59 = sdiv i64 %t58, 16 - %t60 = srem i64 %t59, 16 - %t61 = load { ptr, i64, i64 }, ptr %a2 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 %t60, %t62 - br i1 %t63, label %range10403, label %inrange10404 -range10403: - call void @finch_panic_index(ptr @.str.6965, i64 138, i64 %t60, i64 %t62) - unreachable -inrange10404: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 - %t66 = load i8, ptr %t65 - call void @finch_str_from_char(ptr %a67, i8 signext %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.6964, i64 1, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load i64, ptr %a21 - %t75 = srem i64 %t74, 16 - %t76 = load { ptr, i64, i64 }, ptr %a2 - %t77 = extractvalue { ptr, i64, i64 } %t76, 1 - %t78 = icmp uge i64 %t75, %t77 - br i1 %t78, label %range10405, label %inrange10406 -range10405: - call void @finch_panic_index(ptr @.str.6966, i64 138, i64 %t75, i64 %t77) - unreachable -inrange10406: - %t79 = extractvalue { ptr, i64, i64 } %t76, 0 - %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 - %t81 = load i8, ptr %t80 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t73, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t73, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - %t90 = load i64, ptr %t57 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t91, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %a9 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t90 - store { ptr, i64, i64 } %t89, ptr %t93 - store i64 %t91, ptr %t57 - br label %endif10402 -endif10402: - br label %each.step10374 -each.step10374: - %t94 = load i64, ptr %a10 - %t95 = add i64 %t94, 1 - store i64 %t95, ptr %a10 - br label %each.cond10372 -each.end10375: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6967, i64 0, i64 0 }, ptr %a97 - call void @finch_str_join(ptr %a98, ptr %a9, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.drop.arr_str(ptr %a9) - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t99 -} - -define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { -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.cond10407 -while.cond10407: - %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.body10408, label %while.end10409 -while.body10408: - %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 %range10410, label %inrange10411 -range10410: - call void @finch_panic_index(ptr @.str.6968, i64 149, i64 %t8, i64 %t10) - unreachable -inrange10411: - %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.from10412 -logic.from10412: - br i1 %t15, label %logic.rhs10413, label %logic.end10414 -logic.rhs10413: - %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.rend10415 -logic.rend10415: - br label %logic.end10414 -logic.end10414: - %t21 = phi i1 [ false, %logic.from10412 ], [ %t20, %logic.rend10415 ] - br i1 %t21, label %then10416, label %else10417 -then10416: - %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 %range10419, label %inrange10420 -range10419: - call void @finch_panic_index(ptr @.str.6969, i64 150, i64 %t23, i64 %t25) - unreachable -inrange10420: - %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 %then10421, label %else10422 -then10421: - %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.6970, i64 1, i64 0 }, ptr %t35 - store i64 %t33, ptr %t31 - br label %endif10423 -else10422: - %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 %range10424, label %inrange10425 -range10424: - call void @finch_panic_index(ptr @.str.6971, i64 153, i64 %t38, i64 %t40) - unreachable -inrange10425: - %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 %endif10423 -endif10423: - %t51 = load i64, ptr %a3 - %t52 = add i64 %t51, 2 - store i64 %t52, ptr %a3 - br label %endif10418 -else10417: - %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 %range10426, label %inrange10427 -range10426: - call void @finch_panic_index(ptr @.str.6972, i64 157, i64 %t54, i64 %t56) - unreachable -inrange10427: - %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 %endif10418 -endif10418: - br label %while.cond10407 -while.end10409: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6973, i64 0, i64 0 }, ptr %a70 - call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t72 -} - -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.6975, 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.from10428 -logic.from10428: - br i1 %t11, label %logic.rhs10429, label %logic.end10430 -logic.rhs10429: - %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.rend10431 -logic.rend10431: - br label %logic.end10430 -logic.end10430: - %t16 = phi i1 [ false, %logic.from10428 ], [ %t15, %logic.rend10431 ] - br i1 %t16, label %then10432, label %endif10434 -then10432: - %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 %range10435, label %inrange10436 -range10435: - call void @finch_panic_index(ptr @.str.6976, i64 167, i64 %t18, i64 %t20) - unreachable -inrange10436: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 - %t24 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t27 -endif10434: - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } { ptr @.str.6977, 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 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - br label %while.cond10437 -while.cond10437: - br label %while.body10438 -while.body10438: - %t2 = call i32 @getchar() - store i32 %t2, ptr %a3 - %t4 = load i32, ptr %a3 - %t5 = icmp slt i32 %t4, 0 - br i1 %t5, label %then10440, label %endif10442 -then10440: - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } { ptr @.str.6978, i64 0, i64 0 } -endif10442: - %t6 = load i32, ptr %a3 - %t7 = icmp eq i32 %t6, 10 - br i1 %t7, label %then10443, label %endif10445 -then10443: - br label %while.end10439 -endif10445: - %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.cond10437 -while.end10439: - %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.6980, 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 %then10446, label %endif10448 -then10446: - %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.6981, i64 188) - %t32 = load { ptr, i64, i64 }, ptr %a28 - %t33 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t32, ptr %a19 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif10448 -endif10448: - %t35 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } %t35 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { -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 { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a45 = alloca i32, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - store i64 0, ptr %a1 - br label %while.cond10449 -while.cond10449: - br label %while.body10450 -while.body10450: - %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 %then10452, label %endif10454 -then10452: - %t7 = load i64, ptr %a1 - %t8 = icmp sgt i64 %t7, 0 - br i1 %t8, label %then10455, label %endif10457 -then10455: - call void @finch_str_drop(ptr %a3) - br label %while.end10451 -endif10457: - %t9 = call ptr @finch_std_stream(i32 0) - %t10 = call i32 @feof(ptr %t9) - %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then10458, label %endif10460 -then10458: - call void @finch_str_drop(ptr %a3) - %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6982, i64 32, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 -endif10460: - call void @finch_str_drop(ptr %a3) - br label %while.cond10449 -endif10454: - %t13 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6984, 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 %then10461, label %endif10463 -then10461: - %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.6985, 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 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } zeroinitializer, ptr %a29 - store i64 0, ptr %a30 - store { ptr, i64, i64 } %t27, ptr %a31 - %t32 = call i32 @finch_str_try_int(ptr %a31, ptr %a30, ptr %a29) - %t33 = icmp eq i32 %t32, 0 - %t34 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load i64, ptr %a30 - br i1 %t33, label %or.failed10464, label %or.ok10465 -or.failed10464: - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %or.bend10466 -or.bend10466: - br label %or.end10467 -or.ok10465: - br label %or.end10467 -or.end10467: - %t38 = phi i64 [ 0, %or.bend10466 ], [ %t36, %or.ok10465 ] - store i64 %t38, ptr %a1 - br label %endif10463 -endif10463: - call void @finch_str_drop(ptr %a3) - br label %while.cond10449 -while.end10451: - store { ptr, i64, i64 } zeroinitializer, ptr %a39 - %t40 = load i64, ptr %a1 - store i64 0, ptr %a41 - br label %for.cond10468 -for.cond10468: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body10469, label %for.end10471 -for.body10469: - %t44 = call i32 @getchar() - store i32 %t44, ptr %a45 - %t46 = load i32, ptr %a45 - %t47 = icmp slt i32 %t46, 0 - br i1 %t47, label %then10472, label %endif10474 -then10472: - call void @finch.drop.arr_u8(ptr %a39) - %t48 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6987, i64 25, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t48 -endif10474: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a39, i32 0, i32 1 - %t50 = load i32, ptr %a45 - %t51 = trunc i32 %t50 to i8 - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a39, i64 %t53, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a39 - %t55 = getelementptr inbounds i8, ptr %t54, i64 %t52 - store i8 %t51, ptr %t55 - store i64 %t53, ptr %t49 - br label %for.step10470 -for.step10470: - %t56 = load i64, ptr %a41 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a41 - br label %for.cond10468 -for.end10471: - %t58 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } zeroinitializer, ptr %a59 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_from_bytes(ptr %a59, ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a59 - %t62 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t61) - %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 0 - %t64 = xor i1 %t63, true - %t65 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 2 - %t66 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 1 - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - br i1 %t64, label %try.failed10475, label %try.ok10476 -try.failed10475: - call void @finch.drop.arr_u8(ptr %a39) - %t68 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t65, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t68 -try.ok10476: - call void @finch.drop.arr_u8(ptr %a39) - %t69 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t70 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t69, %S.json.Json %t66, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t70 -} - -define internal void @finch.lsp.send(%S.json.Json %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = load %S.json.Json, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %t2) - 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.6988, i64 16, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6989, i64 4, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load { ptr, i64, i64 }, ptr %a19 - %t21 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t25, ptr %a26 - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = extractvalue { ptr, i64, i64 } %t27, 0 - %t29 = icmp eq ptr %t28, null - %t30 = select i1 %t29, ptr @.str.6990, ptr %t28 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 - %t32 = load i64, ptr %t31 - %t33 = call ptr @finch_std_stream(i32 1) - %t34 = call i64 @fwrite(ptr %t30, i64 1, i64 %t32, ptr %t33) - %t35 = call ptr @finch_std_stream(i32 1) - %t36 = call i32 @fflush(ptr %t35) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a19) - call void @finch_str_drop(ptr %a4) - ret void -} - -define internal void @finch.drop.arr_S_json_Json(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10477 -n.cond10477: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10478, label %n.end10479 -n.body10478: - %t7 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t5 - call void @finch.drop.S_json_Json(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10477 -n.end10479: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_json_Json(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_json_Json(ptr %t2) - %t3 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t3) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6992, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6991, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6993, i64 2, i64 0 }, %S.json.Json %t7) - %t8 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6994, i64 6, i64 0 }, %S.json.Json %t8) - %t9 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t9) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6996, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6995, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load { ptr, i64, i64 }, ptr %a1 - %t8 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t7) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6997, i64 6, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6998, i64 6, i64 0 }, %S.json.Json %t10) - %t11 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t11) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 %S.json.Json @finch.lsp.position(i64 %p0, i64 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a4 = alloca %S.json.Json, align 16 - %a7 = alloca %S.json.Json, align 16 - %a10 = alloca %S.json.Json, align 16 - 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.6999, i64 4, i64 0 }, %S.json.Json %t6) - store %S.json.Json %t6, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a7) - %t8 = load i64, ptr %a2 - %t9 = call %S.json.Json @finch.lsp.num(i64 %t8) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7000, i64 9, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t11 -} - -define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca i64, align 16 - %a5 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - 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.7001, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a1 - %t11 = load i64, ptr %a3 - %t12 = call %S.json.Json @finch.lsp.position(i64 %t10, i64 %t11) - call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.7002, i64 3, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = load %S.json.Json, ptr %a5 - ret %S.json.Json %t14 -} - -define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { -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.7004, 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.failed10480, label %or.ok10481 -or.failed10480: - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_drop(ptr %a10) - br label %or.bend10482 -or.bend10482: - br label %or.end10483 -or.ok10481: - br label %or.end10483 -or.end10483: - %t11 = phi i64 [ 0, %or.bend10482 ], [ %t9, %or.ok10481 ] - 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.7006, 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 %then10484, label %endif10486 -then10484: - ret %S.lsp.Diag zeroinitializer -endif10486: - %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.7007, 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.7008, 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.7010, 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 %then10487, label %endif10489 -then10487: - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag zeroinitializer -endif10489: - %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 %range10490, label %inrange10491 -range10490: - call void @finch_panic_index(ptr @.str.7011, i64 287, i64 %t37, i64 %t39) - unreachable -inrange10491: - %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 %range10492, label %inrange10493 -range10492: - call void @finch_panic_index(ptr @.str.7012, i64 288, i64 %t48, i64 %t50) - unreachable -inrange10493: - %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.cond10494 -for.cond10494: - %t62 = load i64, ptr %a61 - %t63 = icmp slt i64 %t62, %t60 - br i1 %t63, label %for.body10495, label %for.end10497 -for.body10495: - %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 %range10498, label %inrange10499 -range10498: - call void @finch_panic_index(ptr @.str.7013, i64 291, i64 %t65, i64 %t67) - unreachable -inrange10499: - %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.step10496 -for.step10496: - %t79 = load i64, ptr %a61 - %t80 = add i64 %t79, 1 - store i64 %t80, ptr %a61 - br label %for.cond10494 -for.end10497: - %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.7014, 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 - call void @finch.drop.arr_str(ptr %a57) - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag %t95 -} - -define internal void @finch.drop.S_lsp_Diag(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a536 = alloca %S.lsp.Diag, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis zeroinitializer, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7016, 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.cond10500 -each.cond10500: - %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.body10501, label %each.end10503 -each.body10501: - %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.7018, 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 %then10504, label %else10505 -then10504: - %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 %range10507, label %inrange10508 -range10507: - call void @finch_panic_index(ptr @.str.7019, i64 301, i64 0, i64 %t29) - unreachable -inrange10508: - %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.7020, 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.from10509 -logic.from10509: - br i1 %t42, label %logic.rhs10510, label %logic.end10511 -logic.rhs10510: - %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.rend10512 -logic.rend10512: - br label %logic.end10511 -logic.end10511: - %t46 = phi i1 [ false, %logic.from10509 ], [ %t45, %logic.rend10512 ] - br i1 %t46, label %then10513, label %else10514 -then10513: - %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 %range10516, label %inrange10517 -range10516: - call void @finch_panic_index(ptr @.str.7021, i64 303, i64 1, i64 %t50) - unreachable -inrange10517: - %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 %range10518, label %inrange10519 -range10518: - call void @finch_panic_index(ptr @.str.7022, i64 303, i64 2, i64 %t60) - unreachable -inrange10519: - %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 %range10520, label %inrange10521 -range10520: - call void @finch_panic_index(ptr @.str.7023, i64 303, i64 3, i64 %t68) - unreachable -inrange10521: - %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 %range10522, label %inrange10523 -range10522: - call void @finch_panic_index(ptr @.str.7024, i64 303, i64 4, i64 %t76) - unreachable -inrange10523: - %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 %range10524, label %inrange10525 -range10524: - call void @finch_panic_index(ptr @.str.7025, i64 303, i64 5, i64 %t84) - unreachable -inrange10525: - %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 %range10526, label %inrange10527 -range10526: - call void @finch_panic_index(ptr @.str.7026, i64 303, i64 6, i64 %t94) - unreachable -inrange10527: - %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 %range10528, label %inrange10529 -range10528: - call void @finch_panic_index(ptr @.str.7027, i64 303, i64 7, i64 %t102) - unreachable -inrange10529: - %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 %range10530, label %inrange10531 -range10530: - call void @finch_panic_index(ptr @.str.7028, i64 303, i64 8, i64 %t110) - unreachable -inrange10531: - %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 %endif10515 -else10514: - %t121 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.7029, 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.from10532 -logic.from10532: - br i1 %t125, label %logic.rhs10533, label %logic.end10534 -logic.rhs10533: - %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.rend10535 -logic.rend10535: - br label %logic.end10534 -logic.end10534: - %t129 = phi i1 [ false, %logic.from10532 ], [ %t128, %logic.rend10535 ] - br i1 %t129, label %then10536, label %else10537 -then10536: - %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 %range10539, label %inrange10540 -range10539: - call void @finch_panic_index(ptr @.str.7030, i64 305, i64 1, i64 %t133) - unreachable -inrange10540: - %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 %range10541, label %inrange10542 -range10541: - call void @finch_panic_index(ptr @.str.7031, i64 305, i64 2, i64 %t143) - unreachable -inrange10542: - %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 %range10543, label %inrange10544 -range10543: - call void @finch_panic_index(ptr @.str.7032, i64 305, i64 3, i64 %t153) - unreachable -inrange10544: - %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 %range10545, label %inrange10546 -range10545: - call void @finch_panic_index(ptr @.str.7033, i64 305, i64 4, i64 %t163) - unreachable -inrange10546: - %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 %range10547, label %inrange10548 -range10547: - call void @finch_panic_index(ptr @.str.7034, i64 305, i64 5, i64 %t171) - unreachable -inrange10548: - %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 %range10549, label %inrange10550 -range10549: - call void @finch_panic_index(ptr @.str.7035, i64 305, i64 6, i64 %t179) - unreachable -inrange10550: - %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 %range10551, label %inrange10552 -range10551: - call void @finch_panic_index(ptr @.str.7036, i64 305, i64 7, i64 %t189) - unreachable -inrange10552: - %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 %range10553, label %inrange10554 -range10553: - call void @finch_panic_index(ptr @.str.7037, i64 305, i64 8, i64 %t197) - unreachable -inrange10554: - %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 %endif10538 -else10537: - %t208 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.7038, 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.from10555 -logic.from10555: - br i1 %t212, label %logic.rhs10556, label %logic.end10557 -logic.rhs10556: - %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.rend10558 -logic.rend10558: - br label %logic.end10557 -logic.end10557: - %t216 = phi i1 [ false, %logic.from10555 ], [ %t215, %logic.rend10558 ] - br i1 %t216, label %then10559, label %else10560 -then10559: - %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 %range10562, label %inrange10563 -range10562: - call void @finch_panic_index(ptr @.str.7039, i64 307, i64 1, i64 %t220) - unreachable -inrange10563: - %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 %range10564, label %inrange10565 -range10564: - call void @finch_panic_index(ptr @.str.7040, i64 307, i64 2, i64 %t230) - unreachable -inrange10565: - %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 %range10566, label %inrange10567 -range10566: - call void @finch_panic_index(ptr @.str.7041, i64 307, i64 3, i64 %t240) - unreachable -inrange10567: - %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 %range10568, label %inrange10569 -range10568: - call void @finch_panic_index(ptr @.str.7042, i64 307, i64 4, i64 %t250) - unreachable -inrange10569: - %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 %range10570, label %inrange10571 -range10570: - call void @finch_panic_index(ptr @.str.7043, i64 307, i64 5, i64 %t260) - unreachable -inrange10571: - %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 %range10572, label %inrange10573 -range10572: - call void @finch_panic_index(ptr @.str.7044, i64 307, i64 6, i64 %t268) - unreachable -inrange10573: - %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 %range10574, label %inrange10575 -range10574: - call void @finch_panic_index(ptr @.str.7045, i64 307, i64 7, i64 %t276) - unreachable -inrange10575: - %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 %range10576, label %inrange10577 -range10576: - call void @finch_panic_index(ptr @.str.7046, i64 307, i64 8, i64 %t284) - unreachable -inrange10577: - %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 %range10578, label %inrange10579 -range10578: - call void @finch_panic_index(ptr @.str.7047, i64 307, i64 9, i64 %t292) - unreachable -inrange10579: - %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.7049, 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 %endif10561 -else10560: - %t307 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t307, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.7050, 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.from10580 -logic.from10580: - br i1 %t311, label %logic.rhs10581, label %logic.end10582 -logic.rhs10581: - %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.rend10583 -logic.rend10583: - br label %logic.end10582 -logic.end10582: - %t315 = phi i1 [ false, %logic.from10580 ], [ %t314, %logic.rend10583 ] - br i1 %t315, label %then10584, label %else10585 -then10584: - %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 %range10587, label %inrange10588 -range10587: - call void @finch_panic_index(ptr @.str.7051, i64 309, i64 1, i64 %t319) - unreachable -inrange10588: - %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 %range10589, label %inrange10590 -range10589: - call void @finch_panic_index(ptr @.str.7052, i64 309, i64 2, i64 %t329) - unreachable -inrange10590: - %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 %range10591, label %inrange10592 -range10591: - call void @finch_panic_index(ptr @.str.7053, i64 309, i64 3, i64 %t339) - unreachable -inrange10592: - %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 %range10593, label %inrange10594 -range10593: - call void @finch_panic_index(ptr @.str.7054, i64 309, i64 4, i64 %t349) - unreachable -inrange10594: - %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 %range10595, label %inrange10596 -range10595: - call void @finch_panic_index(ptr @.str.7055, i64 309, i64 5, i64 %t357) - unreachable -inrange10596: - %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 %endif10586 -else10585: - %t368 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t368, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.7056, 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.from10597 -logic.from10597: - br i1 %t372, label %logic.rhs10598, label %logic.end10599 -logic.rhs10598: - %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.rend10600 -logic.rend10600: - br label %logic.end10599 -logic.end10599: - %t376 = phi i1 [ false, %logic.from10597 ], [ %t375, %logic.rend10600 ] - br label %logic.from10601 -logic.from10601: - br i1 %t376, label %logic.rhs10602, label %logic.end10603 -logic.rhs10602: - %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.rend10604 -logic.rend10604: - br label %logic.end10603 -logic.end10603: - %t381 = phi i1 [ false, %logic.from10601 ], [ %t380, %logic.rend10604 ] - br i1 %t381, label %then10605, label %else10606 -then10605: - %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 %range10608, label %inrange10609 -range10608: - call void @finch_panic_index(ptr @.str.7057, i64 312, i64 %t388, i64 %t390) - unreachable -inrange10609: - %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 %range10610, label %inrange10611 -range10610: - call void @finch_panic_index(ptr @.str.7058, i64 312, i64 3, i64 %t397) - unreachable -inrange10611: - %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 %range10612, label %inrange10613 -range10612: - call void @finch_panic_index(ptr @.str.7059, i64 313, i64 %t410, i64 %t412) - unreachable -inrange10613: - %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 %range10614, label %inrange10615 -range10614: - call void @finch_panic_index(ptr @.str.7060, i64 313, i64 4, i64 %t419) - unreachable -inrange10615: - %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 %endif10607 -else10606: - %t431 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t431, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.7061, 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.from10616 -logic.from10616: - br i1 %t435, label %logic.rhs10617, label %logic.end10618 -logic.rhs10617: - %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.rend10619 -logic.rend10619: - br label %logic.end10618 -logic.end10618: - %t439 = phi i1 [ false, %logic.from10616 ], [ %t438, %logic.rend10619 ] - br i1 %t439, label %then10620, label %else10621 -then10620: - %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 %range10623, label %inrange10624 -range10623: - call void @finch_panic_index(ptr @.str.7062, i64 315, i64 1, i64 %t443) - unreachable -inrange10624: - %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 %range10625, label %inrange10626 -range10625: - call void @finch_panic_index(ptr @.str.7063, i64 315, i64 2, i64 %t453) - unreachable -inrange10626: - %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 %range10627, label %inrange10628 -range10627: - call void @finch_panic_index(ptr @.str.7064, i64 315, i64 3, i64 %t463) - unreachable -inrange10628: - %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 %range10629, label %inrange10630 -range10629: - call void @finch_panic_index(ptr @.str.7065, i64 315, i64 4, i64 %t473) - unreachable -inrange10630: - %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 %range10631, label %inrange10632 -range10631: - call void @finch_panic_index(ptr @.str.7066, i64 315, i64 5, i64 %t481) - unreachable -inrange10632: - %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 %range10633, label %inrange10634 -range10633: - call void @finch_panic_index(ptr @.str.7067, i64 315, i64 6, i64 %t489) - unreachable -inrange10634: - %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.7069, 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 %endif10622 -else10621: - %t504 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.7070, 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.from10635 -logic.from10635: - br i1 %t508, label %logic.rhs10636, label %logic.end10637 -logic.rhs10636: - %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.rend10638 -logic.rend10638: - br label %logic.end10637 -logic.end10637: - %t512 = phi i1 [ false, %logic.from10635 ], [ %t511, %logic.rend10638 ] - br i1 %t512, label %then10639, label %endif10641 -then10639: - %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 %range10642, label %inrange10643 -range10642: - call void @finch_panic_index(ptr @.str.7071, i64 317, i64 1, i64 %t516) - unreachable -inrange10643: - %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 %endif10641 -endif10641: - br label %endif10622 -endif10622: - br label %endif10607 -endif10607: - br label %endif10586 -endif10586: - br label %endif10561 -endif10561: - br label %endif10538 -endif10538: - br label %endif10515 -endif10515: - call void @finch_str_drop(ptr %a37) - call void @finch.drop.arr_str(ptr %a27) - br label %endif10506 -else10505: - %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 %then10644, label %endif10646 -then10644: - %t532 = load { ptr, i64, i64 }, ptr %a18 - %t533 = call %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %t532) - %t534 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t535 = load %S.lsp.Diag, ptr %t534 - store %S.lsp.Diag %t533, ptr %t534 - store %S.lsp.Diag %t535, ptr %a536 - call void @finch.drop.S_lsp_Diag(ptr %a536) - br label %endif10646 -endif10646: - br label %endif10506 -endif10506: - br label %each.step10502 -each.step10502: - %t537 = load i64, ptr %a10 - %t538 = add i64 %t537, 1 - store i64 %t538, ptr %a10 - br label %each.cond10500 -each.end10503: - call void @finch.drop.arr_str(ptr %a9) - %t539 = load %S.lsp.Analysis, ptr %a2 - ret %S.lsp.Analysis %t539 -} - -define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Ref, ptr %src - store %S.lsp.Ref %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 7 - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 7 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal void @finch.copy.arr_S_lsp_Ref(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond10667 -n.cond10667: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10668, label %n.end10669 -n.body10668: - %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.cond10667 -n.end10669: - 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.cond10670 -n.cond10670: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10671, label %n.end10672 -n.body10671: - %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.cond10670 -n.end10672: - 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.cond10673 -n.cond10673: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10674, label %n.end10675 -n.body10674: - %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.cond10673 -n.end10675: - 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.cond10676 -n.cond10676: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10677, label %n.end10678 -n.body10677: - %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.cond10676 -n.end10678: - 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.cond10679 -n.cond10679: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10680, label %n.end10681 -n.body10680: - %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.cond10679 -n.end10681: - ret void -} - -define internal void @finch.copy.S_lsp_Diag(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Diag, ptr %src - store %S.lsp.Diag %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 1 - %t3 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.copy.S_lsp_Analysis(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Analysis, ptr %src - store %S.lsp.Analysis %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_lsp_Ref(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_lsp_VarRec(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_S_lsp_FnRec(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_lsp_StructRec(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t12, ptr %t13) - %t14 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 6 - %t15 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 6 - call void @finch.copy.S_lsp_Diag(ptr %t14, ptr %t15) - ret void -} - -define internal void @finch.drop.S_lsp_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_lsp_Ref(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10682 -n.cond10682: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10683, label %n.end10684 -n.body10683: - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_Ref(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10682 -n.end10684: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_VarRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_VarRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10685 -n.cond10685: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10686, label %n.end10687 -n.body10686: - %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_VarRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10685 -n.end10687: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_FnRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal void @finch.drop.arr_S_lsp_FnRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10688 -n.cond10688: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10689, label %n.end10690 -n.body10689: - %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_FnRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10688 -n.end10690: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_StructRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.arr_S_lsp_StructRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10691 -n.cond10691: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10692, label %n.end10693 -n.body10692: - %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_StructRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10691 -n.end10693: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_EnumRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_EnumRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10694 -n.cond10694: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10695, label %n.end10696 -n.body10695: - %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_EnumRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10694 -n.end10696: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Analysis(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lsp_Ref(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_lsp_VarRec(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_S_lsp_FnRec(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_lsp_StructRec(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 6 - call void @finch.drop.S_lsp_Diag(ptr %t7) - ret void -} - -define internal void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca i64, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca i64, align 16 - %a14 = alloca i64, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca i64, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lsp.Analysis, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca i32, align 16 - %a188 = alloca %S.lsp.Analysis, align 16 - %a189 = alloca %S.lsp.Analysis, align 16 - %a192 = alloca %S.lsp.Analysis, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %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 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca i32, align 16 - %a272 = alloca %S.lsp.Analysis, align 16 - %a273 = alloca %S.lsp.Analysis, align 16 - %a276 = alloca %S.lsp.Analysis, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.7072, i64 0, i64 0 }, ptr %a4 - store i64 0, ptr %a5 - %t6 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %a7 - %t8 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t9 = load i64, ptr %t8 - call void @finch_arr_make(ptr %a7, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a7 - store i64 0, ptr %a11 - %t12 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 2 - %t13 = load i64, ptr %t12 - store i64 0, ptr %a14 - br label %n.cond10647 -n.cond10647: - %t15 = load i64, ptr %a14 - %t16 = icmp slt i64 %t15, %t13 - br i1 %t16, label %n.body10648, label %n.end10649 -n.body10648: - %t17 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 - %t18 = load ptr, ptr %t17 - %t19 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t18, i64 %t15 - %t20 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 0 - %t21 = load i64, ptr %t20 - %t22 = icmp ne i64 %t21, 0 - br i1 %t22, label %entry.live10650, label %entry.next10651 -entry.live10650: - %t23 = load i64, ptr %a11 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t23 - %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 1 - call void @finch_str_copy(ptr %t24, ptr %t25) - %t26 = add i64 %t23, 1 - store i64 %t26, ptr %a11 - br label %entry.next10651 -entry.next10651: - %t27 = load i64, ptr %a14 - %t28 = add i64 %t27, 1 - store i64 %t28, ptr %a14 - br label %n.cond10647 -n.end10649: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store i64 0, ptr %a31 - br label %each.cond10652 -each.cond10652: - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = load i64, ptr %a31 - %t35 = icmp slt i64 %t34, %t33 - br i1 %t35, label %each.body10653, label %each.end10655 -each.body10653: - %t36 = load ptr, ptr %a30 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i64 %t34 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.7073, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.7074, i64 4, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a60 - %t61 = load { ptr, i64, i64 }, ptr %a60 - %t62 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t63 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = call i64 @finch_map_find(ptr %t62, ptr %a64, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t66 = icmp slt i64 %t65, 0 - br i1 %t66, label %map.missing10656, label %map.found10657 -map.missing10656: - store { ptr, i64, i64 } zeroinitializer, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_buf_str(ptr %a67, ptr %a68, i32 1) - call void @finch_map_missing(ptr @.str.7075, i64 333, ptr %a67) - unreachable -map.found10657: - %t69 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t62, i32 0, i32 0 - %t70 = load ptr, ptr %t69 - %t71 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t70, i64 %t65 - %t72 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t71, i32 0, i32 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t61, ptr %a74 - store { ptr, i64, i64 } %t73, ptr %a75 - %t76 = call i32 @finch_write_file(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - %t78 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.7076, i64 11, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a79 - %t83 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.7077, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a84 - %t88 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t82, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t94, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - %t102 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t101, ptr %a4 - store { ptr, i64, i64 } %t102, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load i64, ptr %a5 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a5 - call void @finch_str_drop(ptr %a60) - br label %each.step10654 -each.step10654: - %t106 = load i64, ptr %a31 - %t107 = add i64 %t106, 1 - store i64 %t107, ptr %a31 - br label %each.cond10652 -each.end10655: - call void @finch.drop.arr_str(ptr %a30) - %t108 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.7078, i64 8, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t113, ptr %a114 - %t115 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.7079, i64 7, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a1 - %t124 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - %t131 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.7080, i64 3, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load { ptr, i64, i64 }, ptr %a114 - %t143 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t141, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t141, ptr %a147 - call void @finch_str_drop(ptr %a147) - store { ptr, i64, i64 } %t143, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.7081, i64 5, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call i64 @finch.host.run({ ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - store { ptr, i64, i64 } zeroinitializer, ptr %a160 - %t161 = call i32 @finch_try_read_file(ptr %a159, ptr %a158, ptr %a160) - %t162 = icmp eq i32 %t161, 0 - %t163 = load { ptr, i64, i64 }, ptr %a160 - %t164 = load { ptr, i64, i64 }, ptr %a159 - br i1 %t162, label %or.failed10658, label %or.ok10659 -or.failed10658: - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_drop(ptr %a165) - br label %or.bend10660 -or.bend10660: - br label %or.end10661 -or.ok10659: - br label %or.end10661 -or.end10661: - %t166 = phi { ptr, i64, i64 } [ { ptr @.str.7082, i64 0, i64 0 }, %or.bend10660 ], [ %t164, %or.ok10659 ] - %t167 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a168 - call void @finch_str_drop(ptr %a168) - store %S.lsp.Analysis %t167, ptr %a169 - %t170 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 6 - %t171 = getelementptr inbounds %S.lsp.Diag, ptr %t170, i32 0, i32 0 - %t172 = load i1, ptr %t171 - %t173 = xor i1 %t172, true - br i1 %t173, label %then10662, label %else10663 -then10662: - %t174 = load %S.lsp.Analysis, ptr %a169 - %t175 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t176 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t176, ptr %a177 - store i32 0, ptr %a178 - %t179 = call i64 @finch_map_slot(ptr %t175, ptr %a177, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a178) - %t180 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t175, i32 0, i32 0 - %t181 = load ptr, ptr %t180 - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t181, i64 %t179 - %t183 = load i32, ptr %a178 - %t184 = icmp ne i32 %t183, 0 - br i1 %t184, label %map.new10665, label %map.have10666 -map.new10665: - %t185 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 1 - call void @finch_str_copy(ptr %t185, ptr %a177) - %t186 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t186 - br label %map.have10666 -map.have10666: - %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis %t174, ptr %a188 - call void @finch.copy.S_lsp_Analysis(ptr %a189, ptr %a188) - %t190 = load %S.lsp.Analysis, ptr %a189 - %t191 = load %S.lsp.Analysis, ptr %t187 - store %S.lsp.Analysis %t190, ptr %t187 - store %S.lsp.Analysis %t191, ptr %a192 - call void @finch.drop.S_lsp_Analysis(ptr %a192) - br label %endif10664 -else10663: - %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 %then10697, label %endif10699 -then10697: - %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.missing10700, label %map.found10701 -map.missing10700: - 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.7083, i64 344, ptr %a203) - unreachable -map.found10701: - %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 %a169, i32 0, i32 2 - store { ptr, i64, i64 } %t215, ptr %a217 - call void @finch.copy.arr_S_lsp_FnRec(ptr %a218, ptr %a217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - %t220 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t219, ptr %t216 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch.drop.arr_S_lsp_FnRec(ptr %a221) - %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 3 - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch.copy.arr_S_lsp_StructRec(ptr %a226, ptr %a225) - %t227 = load { ptr, i64, i64 }, ptr %a226 - %t228 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t227, ptr %t224 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch.drop.arr_S_lsp_StructRec(ptr %a229) - %t230 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 - %t231 = load { ptr, i64, i64 }, ptr %t230 - %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 4 - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load { ptr, i64, i64 }, ptr %t232 - store { ptr, i64, i64 } %t235, ptr %t232 - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %a237) - %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t239, ptr %a241 - call void @finch.copy.arr_S_lsp_VarRec(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = load { ptr, i64, i64 }, ptr %t240 - store { ptr, i64, i64 } %t243, ptr %t240 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.drop.arr_S_lsp_VarRec(ptr %a245) - %t246 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1 - %t248 = load i64, ptr %t247 - %t249 = icmp eq i64 %t248, 0 - br i1 %t249, label %then10702, label %endif10704 -then10702: - %t250 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 - %t251 = load { ptr, i64, i64 }, ptr %t250 - %t252 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - store { ptr, i64, i64 } %t251, ptr %a253 - call void @finch.copy.arr_str(ptr %a254, ptr %a253) - %t255 = load { ptr, i64, i64 }, ptr %a254 - %t256 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t255, ptr %t252 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.drop.arr_str(ptr %a257) - br label %endif10704 -endif10704: - call void @finch.drop.S_lsp_Analysis(ptr %a213) - br label %endif10699 -endif10699: - br label %endif10664 -endif10664: - %t258 = load %S.lsp.Analysis, ptr %a169 - %t259 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t260 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t260, ptr %a261 - store i32 0, ptr %a262 - %t263 = call i64 @finch_map_slot(ptr %t259, ptr %a261, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a262) - %t264 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t259, i32 0, i32 0 - %t265 = load ptr, ptr %t264 - %t266 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t265, i64 %t263 - %t267 = load i32, ptr %a262 - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %map.new10705, label %map.have10706 -map.new10705: - %t269 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 1 - call void @finch_str_copy(ptr %t269, ptr %a261) - %t270 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t270 - br label %map.have10706 -map.have10706: - %t271 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis %t258, ptr %a272 - call void @finch.copy.S_lsp_Analysis(ptr %a273, ptr %a272) - %t274 = load %S.lsp.Analysis, ptr %a273 - %t275 = load %S.lsp.Analysis, ptr %t271 - store %S.lsp.Analysis %t274, ptr %t271 - store %S.lsp.Analysis %t275, ptr %a276 - call void @finch.drop.S_lsp_Analysis(ptr %a276) - %t277 = load { ptr, i64, i64 }, ptr %a1 - %t278 = load %S.lsp.Analysis, ptr %a169 - call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t277, %S.lsp.Analysis %t278) - call void @finch.drop.S_lsp_Analysis(ptr %a169) - call void @finch_str_drop(ptr %a114) - call void @finch_str_drop(ptr %a4) - ret void -} - -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 - %a98 = alloca %S.json.Json, align 16 - %a100 = alloca %S.json.Json, align 16 - %a102 = alloca %S.json.Json, align 16 - %a107 = alloca %S.json.Json, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.json.Json, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond10707 -each.cond10707: - %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.body10708, label %each.end10710 -each.body10708: - %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.cond10711 -find.cond10711: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body10712, label %find.end10715 -find.body10712: - %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.hit10713, label %find.next10714 -find.hit10713: - store i64 %t30, ptr %a26 - br label %find.end10715 -find.next10714: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond10711 -find.end10715: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - %t41 = xor i1 %t40, true - br i1 %t41, label %then10716, label %endif10718 -then10716: - %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 %endif10718 -endif10718: - br label %each.step10709 -each.step10709: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %each.cond10707 -each.end10710: - store { ptr, i64, i64 } zeroinitializer, ptr %a53 - store i64 0, ptr %a54 - br label %each.cond10719 -each.cond10719: - %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.body10720, label %each.end10722 -each.body10720: - %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.from10723 -logic.from10723: - br i1 %t67, label %logic.rhs10724, label %logic.end10725 -logic.rhs10724: - %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.rend10726 -logic.rend10726: - br label %logic.end10725 -logic.end10725: - %t76 = phi i1 [ false, %logic.from10723 ], [ %t75, %logic.rend10726 ] - br i1 %t76, label %then10727, label %endif10729 -then10727: - %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 %then10730, label %endif10732 -then10730: - store i64 0, ptr %a81 - br label %endif10732 -endif10732: - %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 %then10733, label %endif10735 -then10733: - store i64 0, ptr %a88 - br label %endif10735 -endif10735: - %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.7084, i64 5, i64 0 }, %S.json.Json %t97) - store %S.json.Json %t97, ptr %a98 - call void @finch.drop.S_json_Json(ptr %a98) - %t99 = call %S.json.Json @finch.lsp.num(i64 1) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7085, i64 8, i64 0 }, %S.json.Json %t99) - store %S.json.Json %t99, ptr %a100 - call void @finch.drop.S_json_Json(ptr %a100) - %t101 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7087, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7086, i64 6, i64 0 }, %S.json.Json %t101) - store %S.json.Json %t101, ptr %a102 - call void @finch.drop.S_json_Json(ptr %a102) - %t103 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t104 = getelementptr inbounds %S.lsp.Diag, ptr %t103, i32 0, i32 4 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t105) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7088, i64 7, i64 0 }, %S.json.Json %t106) - store %S.json.Json %t106, ptr %a107 - call void @finch.drop.S_json_Json(ptr %a107) - %t108 = load %S.json.Json, ptr %a92 - call void @finch.json.Json.push(ptr %a64, %S.json.Json %t108) - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = load i64, ptr %t109 - %t115 = add i64 %t114, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t115, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t116 = load ptr, ptr %a53 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i64 %t114 - store { ptr, i64, i64 } %t113, ptr %t117 - store i64 %t115, ptr %t109 - call void @finch.drop.S_json_Json(ptr %a92) - br label %endif10729 -endif10729: - %t118 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t118, ptr %a119 - %t120 = load { ptr, i64, i64 }, ptr %a62 - %t121 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t120) - %t122 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t121) - store { ptr, i64, i64 } %t121, ptr %a123 - call void @finch_str_drop(ptr %a123) - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7089, i64 3, i64 0 }, %S.json.Json %t122) - store %S.json.Json %t122, ptr %a124 - call void @finch.drop.S_json_Json(ptr %a124) - %t125 = load %S.json.Json, ptr %a64 - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7090, i64 11, i64 0 }, %S.json.Json %t125) - %t126 = load %S.json.Json, ptr %a119 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7091, i64 31, i64 0 }, %S.json.Json %t126) - call void @finch.drop.S_json_Json(ptr %a119) - call void @finch.drop.S_json_Json(ptr %a64) - br label %each.step10721 -each.step10721: - %t127 = load i64, ptr %a54 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a54 - br label %each.cond10719 -each.end10722: - %t129 = load { ptr, i64, i64 }, ptr %a53 - %t130 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch.copy.arr_str(ptr %a132, ptr %a131) - %t133 = load { ptr, i64, i64 }, ptr %a132 - %t134 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t133, ptr %t130 - store { ptr, i64, i64 } %t134, ptr %a135 - call void @finch.drop.arr_str(ptr %a135) - call void @finch.drop.arr_str(ptr %a53) - call void @finch.drop.arr_str(ptr %a13) - ret void -} - -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.cond10736 -for.cond10736: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body10737, label %for.end10739 -for.body10737: - %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 %range10740, label %inrange10741 -range10740: - call void @finch_panic_index(ptr @.str.7092, i64 397, i64 %t12, i64 %t14) - unreachable -inrange10741: - %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.from10742 -logic.from10742: - br i1 %t26, label %logic.rhs10743, label %logic.end10744 -logic.rhs10743: - %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.rend10745 -logic.rend10745: - br label %logic.end10744 -logic.end10744: - %t31 = phi i1 [ false, %logic.from10742 ], [ %t30, %logic.rend10745 ] - br label %logic.from10746 -logic.from10746: - br i1 %t31, label %logic.rhs10747, label %logic.end10748 -logic.rhs10747: - %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.rend10749 -logic.rend10749: - br label %logic.end10748 -logic.end10748: - %t39 = phi i1 [ false, %logic.from10746 ], [ %t38, %logic.rend10749 ] - br label %logic.from10750 -logic.from10750: - br i1 %t39, label %logic.rhs10751, label %logic.end10752 -logic.rhs10751: - %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.rend10753 -logic.rend10753: - br label %logic.end10752 -logic.end10752: - %t47 = phi i1 [ false, %logic.from10750 ], [ %t46, %logic.rend10753 ] - br i1 %t47, label %then10754, label %endif10756 -then10754: - %t48 = load i64, ptr %a8 - call void @finch.drop.S_lsp_Ref(ptr %a22) - ret i64 %t48 -endif10756: - call void @finch.drop.S_lsp_Ref(ptr %a22) - br label %for.step10738 -for.step10738: - %t49 = load i64, ptr %a8 - %t50 = add i64 %t49, 1 - store i64 %t50, ptr %a8 - br label %for.cond10736 -for.end10739: - 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 - %a17 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %then10757, label %endif10759 -then10757: - %t13 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t13 -endif10759: - %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.7094, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7093, i64 4, i64 0 }, %S.json.Json %t16) - store %S.json.Json %t16, ptr %a17 - call void @finch.drop.S_json_Json(ptr %a17) - %t18 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 - %t19 = load i64, ptr %a10 - %t20 = load { ptr, i64, i64 }, ptr %t18 - %t21 = extractvalue { ptr, i64, i64 } %t20, 1 - %t22 = icmp uge i64 %t19, %t21 - br i1 %t22, label %range10760, label %inrange10761 -range10760: - call void @finch_panic_index(ptr @.str.7096, i64 412, i64 %t19, i64 %t21) - unreachable -inrange10761: - %t23 = extractvalue { ptr, i64, i64 } %t20, 0 - %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i64 %t19 - %t25 = getelementptr inbounds %S.lsp.Ref, ptr %t24, i32 0, i32 7 - %t26 = load { ptr, i64, i64 }, ptr %t25 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7095, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t29, ptr %a30 - %t31 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a30, { ptr, i64, i64 } { ptr @.str.7097, i64 8, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.json.Json, align 16 - %a56 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - 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.from10762 -logic.from10762: - br i1 %t12, label %logic.end10764, label %logic.rhs10763 -logic.rhs10763: - %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 %range10765, label %inrange10766 -range10765: - call void @finch_panic_index(ptr @.str.7098, i64 420, i64 %t14, i64 %t16) - unreachable -inrange10766: - %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.rend10767 -logic.rend10767: - br label %logic.end10764 -logic.end10764: - %t24 = phi i1 [ true, %logic.from10762 ], [ %t23, %logic.rend10767 ] - br i1 %t24, label %then10768, label %endif10770 -then10768: - %t25 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t25 -endif10770: - %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 %range10771, label %inrange10772 -range10771: - call void @finch_panic_index(ptr @.str.7099, i64 423, i64 %t27, i64 %t29) - unreachable -inrange10772: - %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) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7100, i64 3, i64 0 }, %S.json.Json %t43) - store %S.json.Json %t43, ptr %a45 - call void @finch.drop.S_json_Json(ptr %a45) - %t46 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 - %t47 = load i64, ptr %t46 - %t48 = sub i64 %t47, 1 - %t49 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t50 = load i64, ptr %t49 - %t51 = sub i64 %t50, 1 - %t52 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t53 = load i64, ptr %t52 - %t54 = sub i64 %t53, 1 - %t55 = call %S.json.Json @finch.lsp.range(i64 %t48, i64 %t51, i64 %t54) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7101, i64 5, i64 0 }, %S.json.Json %t55) - store %S.json.Json %t55, ptr %a56 - call void @finch.drop.S_json_Json(ptr %a56) - %t57 = load %S.json.Json, ptr %a39 - call void @finch.drop.S_lsp_Ref(ptr %a37) - ret %S.json.Json %t57 -} - -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.json.Json, align 16 - %a61 = alloca i64, align 16 - %a69 = alloca %S.lsp.StructRec, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca %S.json.Json, align 16 - %a95 = alloca i64, align 16 - %a103 = alloca %S.lsp.EnumRec, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t3, ptr %a4 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a6 - br label %each.cond10773 -each.cond10773: - %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.body10774, label %each.end10776 -each.body10774: - %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 %then10777, label %endif10779 -then10777: - br label %each.step10775 -endif10779: - 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 %then10780, label %endif10782 -then10780: - 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.7102, 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) - store { ptr, i64, i64 } %t38, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t45, ptr %a28 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif10782 -endif10782: - %t48 = load { ptr, i64, i64 }, ptr %a28 - %t49 = load i64, ptr %a22 - %t50 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 - %t51 = load i64, ptr %t50 - %t52 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 - %t53 = load i64, ptr %t52 - %t54 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 - %t55 = load i64, ptr %t54 - %t56 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t48, i64 %t49, i64 %t51, i64 %t53, i64 %t55) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t56) - store %S.json.Json %t56, ptr %a57 - call void @finch.drop.S_json_Json(ptr %a57) - call void @finch_str_drop(ptr %a28) - br label %each.step10775 -each.step10775: - %t58 = load i64, ptr %a6 - %t59 = add i64 %t58, 1 - store i64 %t59, ptr %a6 - br label %each.cond10773 -each.end10776: - %t60 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a61 - br label %each.cond10783 -each.cond10783: - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - %t64 = load i64, ptr %a61 - %t65 = icmp slt i64 %t64, %t63 - br i1 %t65, label %each.body10784, label %each.end10786 -each.body10784: - %t66 = load ptr, ptr %t60 - %t67 = getelementptr inbounds %S.lsp.StructRec, ptr %t66, i64 %t64 - %t68 = load %S.lsp.StructRec, ptr %t67 - store %S.lsp.StructRec %t68, ptr %a69 - %t70 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 2 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) - %t76 = icmp ne i32 %t75, 0 - br i1 %t76, label %then10787, label %endif10789 -then10787: - %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t80 = load i64, ptr %t79 - %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 4 - %t82 = load i64, ptr %t81 - %t83 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t84 = load i64, ptr %t83 - %t85 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 5 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t84, %t87 - %t89 = add i64 %t88, 1 - %t90 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t78, i64 23, i64 %t80, i64 %t82, i64 %t89) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t90) - store %S.json.Json %t90, ptr %a91 - call void @finch.drop.S_json_Json(ptr %a91) - br label %endif10789 -endif10789: - br label %each.step10785 -each.step10785: - %t92 = load i64, ptr %a61 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a61 - br label %each.cond10783 -each.end10786: - %t94 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a95 - br label %each.cond10790 -each.cond10790: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = load i64, ptr %a95 - %t99 = icmp slt i64 %t98, %t97 - br i1 %t99, label %each.body10791, label %each.end10793 -each.body10791: - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.lsp.EnumRec, ptr %t100, i64 %t98 - %t102 = load %S.lsp.EnumRec, ptr %t101 - store %S.lsp.EnumRec %t102, ptr %a103 - %t104 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - br i1 %t110, label %then10794, label %endif10796 -then10794: - %t111 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - %t113 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t114 = load i64, ptr %t113 - %t115 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 4 - %t116 = load i64, ptr %t115 - %t117 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t118 = load i64, ptr %t117 - %t119 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load i64, ptr %t120 - %t122 = add i64 %t118, %t121 - %t123 = add i64 %t122, 1 - %t124 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t112, i64 10, i64 %t114, i64 %t116, i64 %t123) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t124) - store %S.json.Json %t124, ptr %a125 - call void @finch.drop.S_json_Json(ptr %a125) - br label %endif10796 -endif10796: - br label %each.step10792 -each.step10792: - %t126 = load i64, ptr %a95 - %t127 = add i64 %t126, 1 - store i64 %t127, ptr %a95 - br label %each.cond10790 -each.end10793: - %t128 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t128 -} - -define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { -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 - %a10 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - %a15 = alloca %S.json.Json, align 16 - %a19 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a31 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.7103, i64 4, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load i64, ptr %a2 - %t12 = call %S.json.Json @finch.lsp.num(i64 %t11) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7104, i64 4, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t14, ptr %a15 - %t16 = load i64, ptr %a3 - %t17 = sub i64 %t16, 1 - %t18 = call %S.json.Json @finch.lsp.position(i64 %t17, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7105, i64 5, i64 0 }, %S.json.Json %t18) - store %S.json.Json %t18, ptr %a19 - call void @finch.drop.S_json_Json(ptr %a19) - %t20 = load i64, ptr %a5 - %t21 = call %S.json.Json @finch.lsp.position(i64 %t20, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7106, i64 3, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7107, i64 5, i64 0 }, %S.json.Json %t23) - %t24 = load i64, ptr %a3 - %t25 = sub i64 %t24, 1 - %t26 = load i64, ptr %a4 - %t27 = sub i64 %t26, 1 - %t28 = load i64, ptr %a4 - %t29 = sub i64 %t28, 1 - %t30 = call %S.json.Json @finch.lsp.range(i64 %t25, i64 %t27, i64 %t29) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7108, i64 14, i64 0 }, %S.json.Json %t30) - store %S.json.Json %t30, ptr %a31 - call void @finch.drop.S_json_Json(ptr %a31) - %t32 = load %S.json.Json, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a9 = alloca %S.json.Json, align 16 - %a12 = alloca %S.json.Json, align 16 - %a18 = alloca %S.json.Json, align 16 - %a23 = alloca %S.json.Json, align 16 - %a25 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.7109, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a2 - %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7110, i64 4, i64 0 }, %S.json.Json %t11) - store %S.json.Json %t11, ptr %a12 - call void @finch.drop.S_json_Json(ptr %a12) - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp sgt i64 %t14, 0 - br i1 %t15, label %then10797, label %endif10799 -then10797: - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t16) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7111, i64 6, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - br label %endif10799 -endif10799: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t20 = load i64, ptr %t19 - %t21 = icmp sgt i64 %t20, 0 - br i1 %t21, label %then10800, label %endif10802 -then10800: - %t22 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t22, ptr %a23 - %t24 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7113, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7112, i64 4, i64 0 }, %S.json.Json %t24) - store %S.json.Json %t24, ptr %a25 - call void @finch.drop.S_json_Json(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a4 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7114, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = load %S.json.Json, ptr %a23 - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7115, i64 13, i64 0 }, %S.json.Json %t29) - call void @finch.drop.S_json_Json(ptr %a23) - br label %endif10802 -endif10802: - %t30 = load %S.json.Json, ptr %a6 - ret %S.json.Json %t30 -} - -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.from10803 -logic.from10803: - br i1 %t3, label %logic.rhs10804, label %logic.end10805 -logic.rhs10804: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend10806 -logic.rend10806: - br label %logic.end10805 -logic.end10805: - %t6 = phi i1 [ false, %logic.from10803 ], [ %t5, %logic.rend10806 ] - br label %logic.from10807 -logic.from10807: - br i1 %t6, label %logic.end10809, label %logic.rhs10808 -logic.rhs10808: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from10810 -logic.from10810: - br i1 %t8, label %logic.rhs10811, label %logic.end10812 -logic.rhs10811: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend10813 -logic.rend10813: - br label %logic.end10812 -logic.end10812: - %t11 = phi i1 [ false, %logic.from10810 ], [ %t10, %logic.rend10813 ] - br label %logic.rend10814 -logic.rend10814: - br label %logic.end10809 -logic.end10809: - %t12 = phi i1 [ true, %logic.from10807 ], [ %t11, %logic.rend10814 ] - br label %logic.from10815 -logic.from10815: - br i1 %t12, label %logic.end10817, label %logic.rhs10816 -logic.rhs10816: - %t13 = load i8, ptr %a1 - %t14 = icmp uge i8 %t13, 48 - br label %logic.from10818 -logic.from10818: - br i1 %t14, label %logic.rhs10819, label %logic.end10820 -logic.rhs10819: - %t15 = load i8, ptr %a1 - %t16 = icmp ule i8 %t15, 57 - br label %logic.rend10821 -logic.rend10821: - br label %logic.end10820 -logic.end10820: - %t17 = phi i1 [ false, %logic.from10818 ], [ %t16, %logic.rend10821 ] - br label %logic.rend10822 -logic.rend10822: - br label %logic.end10817 -logic.end10817: - %t18 = phi i1 [ true, %logic.from10815 ], [ %t17, %logic.rend10822 ] - br label %logic.from10823 -logic.from10823: - br i1 %t18, label %logic.end10825, label %logic.rhs10824 -logic.rhs10824: - %t19 = load i8, ptr %a1 - %t20 = icmp eq i8 %t19, 95 - br label %logic.rend10826 -logic.rend10826: - br label %logic.end10825 -logic.end10825: - %t21 = phi i1 [ true, %logic.from10823 ], [ %t20, %logic.rend10826 ] - 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 - %a30 = alloca %S.json.Json, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond10827 -each.cond10827: - %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.body10828, label %each.end10830 -each.body10828: - %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.7117, 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 %then10831, label %endif10833 -then10831: - store i64 5, ptr %a12 - br label %endif10833 -endif10833: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic10834, label %ok10835 -panic10834: - call void @finch_panic(ptr @.str.7118, i64 497, ptr @.str.7119) - unreachable -ok10835: - %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) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - br label %each.step10829 -each.step10829: - %t31 = load i64, ptr %a3 - %t32 = add i64 %t31, 1 - store i64 %t32, ptr %a3 - br label %each.cond10827 -each.end10830: - 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 - %a47 = alloca %S.lsp.VarRec, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.cond10836 -each.cond10836: - %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.body10837, label %each.end10839 -each.body10837: - %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.from10840 -logic.from10840: - br i1 %t22, label %logic.rhs10841, label %logic.end10842 -logic.rhs10841: - %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.rend10843 -logic.rend10843: - br label %logic.end10842 -logic.end10842: - %t27 = phi i1 [ false, %logic.from10840 ], [ %t26, %logic.rend10843 ] - br label %logic.from10844 -logic.from10844: - br i1 %t27, label %logic.rhs10845, label %logic.end10846 -logic.rhs10845: - %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.rend10847 -logic.rend10847: - br label %logic.end10846 -logic.end10846: - %t33 = phi i1 [ false, %logic.from10844 ], [ %t32, %logic.rend10847 ] - br label %logic.from10848 -logic.from10848: - br i1 %t33, label %logic.rhs10849, label %logic.end10850 -logic.rhs10849: - %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.rend10851 -logic.rend10851: - br label %logic.end10850 -logic.end10850: - %t41 = phi i1 [ false, %logic.from10848 ], [ %t40, %logic.rend10851 ] - br i1 %t41, label %then10852, label %endif10854 -then10852: - %t42 = load %S.lsp.VarRec, ptr %a15 - store %S.lsp.VarRec %t42, ptr %a43 - call void @finch.copy.S_lsp_VarRec(ptr %a44, ptr %a43) - %t45 = load %S.lsp.VarRec, ptr %a44 - %t46 = load %S.lsp.VarRec, ptr %a5 - store %S.lsp.VarRec %t45, ptr %a5 - store %S.lsp.VarRec %t46, ptr %a47 - call void @finch.drop.S_lsp_VarRec(ptr %a47) - br label %endif10854 -endif10854: - br label %each.step10838 -each.step10838: - %t48 = load i64, ptr %a7 - %t49 = add i64 %t48, 1 - store i64 %t49, ptr %a7 - br label %each.cond10836 -each.end10839: - %t50 = load %S.lsp.VarRec, ptr %a5 - ret %S.lsp.VarRec %t50 -} - -define internal void @finch.drop.S_lsp_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a125 = alloca i64, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i64, align 16 - %a146 = alloca %S.lsp.FnRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.json.Json, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca %S.lsp.StructRec, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca %S.json.Json, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca %S.lsp.EnumRec, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.json.Json, align 16 - %a230 = alloca i64, align 16 - %a238 = alloca %S.lsp.EnumRec, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.lsp.VarRec, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca %S.json.Json, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca %S.lsp.VarRec, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca i64, align 16 - %a387 = alloca %S.lsp.StructRec, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca i64, align 16 - %a418 = alloca %S.json.Json, align 16 - %a424 = alloca i64, align 16 - %a432 = alloca %S.lsp.FnRec, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.json.Json, align 16 - %a450 = alloca %S.lsp.Names, align 16 - %a452 = alloca i64, align 16 - %a460 = alloca %S.lsp.VarRec, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca %S.json.Json, align 16 - %a492 = alloca i64, align 16 - %a500 = alloca %S.lsp.FnRec, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca %S.json.Json, align 16 - %a525 = alloca i64, align 16 - %a533 = alloca %S.lsp.StructRec, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca %S.json.Json, align 16 - %a558 = alloca i64, align 16 - %a566 = alloca %S.lsp.EnumRec, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca %S.json.Json, align 16 - %a591 = alloca i64, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca %S.json.Json, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca i64, align 16 - %a617 = alloca %S.docs.Doc, align 16 - %a628 = alloca %S.json.Json, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca i64, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca %S.json.Json, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then10855, label %endif10857 -then10855: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 - %t20 = load i64, ptr %t19 - store i64 %t20, ptr %a14 - br label %endif10857 -endif10857: - %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.7120, 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.cond10858 -while.cond10858: - %t30 = load i64, ptr %a29 - %t31 = icmp sgt i64 %t30, 0 - br label %logic.from10861 -logic.from10861: - br i1 %t31, label %logic.rhs10862, label %logic.end10863 -logic.rhs10862: - %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 %range10864, label %inrange10865 -range10864: - call void @finch_panic_index(ptr @.str.7121, i64 522, i64 %t33, i64 %t35) - unreachable -inrange10865: - %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.rend10866 -logic.rend10866: - br label %logic.end10863 -logic.end10863: - %t41 = phi i1 [ false, %logic.from10861 ], [ %t40, %logic.rend10866 ] - br i1 %t41, label %while.body10859, label %while.end10860 -while.body10859: - %t42 = load i64, ptr %a29 - %t43 = sub i64 %t42, 1 - store i64 %t43, ptr %a29 - br label %while.cond10858 -while.end10860: - %t44 = load i64, ptr %a29 - %t45 = icmp sgt i64 %t44, 0 - br label %logic.from10867 -logic.from10867: - br i1 %t45, label %logic.rhs10868, label %logic.end10869 -logic.rhs10868: - %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 %range10870, label %inrange10871 -range10870: - call void @finch_panic_index(ptr @.str.7122, i64 525, i64 %t47, i64 %t49) - unreachable -inrange10871: - %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.rend10872 -logic.rend10872: - br label %logic.end10869 -logic.end10869: - %t55 = phi i1 [ false, %logic.from10867 ], [ %t54, %logic.rend10872 ] - store i1 %t55, ptr %a56 - %t57 = load i1, ptr %a56 - br i1 %t57, label %then10873, label %endif10875 -then10873: - %t58 = load i64, ptr %a29 - %t59 = sub i64 %t58, 1 - store i64 %t59, ptr %a60 - br label %while.cond10876 -while.cond10876: - %t61 = load i64, ptr %a60 - %t62 = icmp sgt i64 %t61, 0 - br label %logic.from10879 -logic.from10879: - br i1 %t62, label %logic.rhs10880, label %logic.end10881 -logic.rhs10880: - %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 %range10882, label %inrange10883 -range10882: - call void @finch_panic_index(ptr @.str.7123, i64 528, i64 %t64, i64 %t66) - unreachable -inrange10883: - %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.from10884 -logic.from10884: - br i1 %t71, label %logic.end10886, label %logic.rhs10885 -logic.rhs10885: - %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 %range10887, label %inrange10888 -range10887: - call void @finch_panic_index(ptr @.str.7124, i64 528, i64 %t73, i64 %t75) - unreachable -inrange10888: - %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.rend10889 -logic.rend10889: - br label %logic.end10886 -logic.end10886: - %t81 = phi i1 [ true, %logic.from10884 ], [ %t80, %logic.rend10889 ] - br label %logic.from10890 -logic.from10890: - br i1 %t81, label %logic.end10892, label %logic.rhs10891 -logic.rhs10891: - %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 %range10893, label %inrange10894 -range10893: - call void @finch_panic_index(ptr @.str.7125, i64 528, i64 %t83, i64 %t85) - unreachable -inrange10894: - %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.rend10895 -logic.rend10895: - br label %logic.end10892 -logic.end10892: - %t91 = phi i1 [ true, %logic.from10890 ], [ %t90, %logic.rend10895 ] - br label %logic.rend10896 -logic.rend10896: - br label %logic.end10881 -logic.end10881: - %t92 = phi i1 [ false, %logic.from10879 ], [ %t91, %logic.rend10896 ] - br i1 %t92, label %while.body10877, label %while.end10878 -while.body10877: - %t93 = load i64, ptr %a60 - %t94 = sub i64 %t93, 1 - store i64 %t94, ptr %a60 - br label %while.cond10876 -while.end10878: - %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.7126, 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.7128, 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 %then10897, label %endif10899 -then10897: - %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.7129, i64 535) - %t116 = load { ptr, i64, i64 }, ptr %a114 - %t117 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t116, ptr %a102 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - store i1 true, ptr %a103 - br label %endif10899 -endif10899: - %t119 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a102 - store i64 -1, ptr %a122 - %t123 = load i64, ptr %t120 - %t124 = load ptr, ptr %t119 - store i64 0, ptr %a125 - br label %find.cond10900 -find.cond10900: - %t126 = load i64, ptr %a125 - %t127 = icmp slt i64 %t126, %t123 - br i1 %t127, label %find.body10901, label %find.end10904 -find.body10901: - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 %t126 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } %t121, ptr %a131 - %t132 = call i32 @finch_str_eq(ptr %a130, ptr %a131) - %t133 = icmp ne i32 %t132, 0 - br i1 %t133, label %find.hit10902, label %find.next10903 -find.hit10902: - store i64 %t126, ptr %a122 - br label %find.end10904 -find.next10903: - %t134 = add i64 %t126, 1 - store i64 %t134, ptr %a125 - br label %find.cond10900 -find.end10904: - %t135 = load i64, ptr %a122 - %t136 = icmp sge i64 %t135, 0 - br i1 %t136, label %then10905, label %endif10907 -then10905: - %t137 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a138 - br label %each.cond10908 -each.cond10908: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t140 = load i64, ptr %t139 - %t141 = load i64, ptr %a138 - %t142 = icmp slt i64 %t141, %t140 - br i1 %t142, label %each.body10909, label %each.end10911 -each.body10909: - %t143 = load ptr, ptr %t137 - %t144 = getelementptr inbounds %S.lsp.FnRec, ptr %t143, i64 %t141 - %t145 = load %S.lsp.FnRec, ptr %t144 - store %S.lsp.FnRec %t145, ptr %a146 - %t147 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.from10912 -logic.from10912: - br i1 %t153, label %logic.rhs10913, label %logic.end10914 -logic.rhs10913: - %t154 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 2 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp eq i64 %t156, 0 - br label %logic.rend10915 -logic.rend10915: - br label %logic.end10914 -logic.end10914: - %t158 = phi i1 [ false, %logic.from10912 ], [ %t157, %logic.rend10915 ] - br i1 %t158, label %then10916, label %endif10918 -then10916: - %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 7 - %t162 = load { ptr, i64, i64 }, ptr %t161 - %t163 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t160, i64 3, { ptr, i64, i64 } %t162, { ptr, i64, i64 } { ptr @.str.7130, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t163) - store %S.json.Json %t163, ptr %a164 - call void @finch.drop.S_json_Json(ptr %a164) - br label %endif10918 -endif10918: - br label %each.step10910 -each.step10910: - %t165 = load i64, ptr %a138 - %t166 = add i64 %t165, 1 - store i64 %t166, ptr %a138 - br label %each.cond10908 -each.end10911: - %t167 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a168 - br label %each.cond10919 -each.cond10919: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10920, label %each.end10922 -each.body10920: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %t173, i64 %t171 - %t175 = load %S.lsp.StructRec, ptr %t174 - store %S.lsp.StructRec %t175, ptr %a176 - %t177 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } %t179, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then10923, label %endif10925 -then10923: - %t184 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - %t186 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } { ptr @.str.7131, i64 7, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a188 - %t192 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t185, i64 22, { ptr, i64, i64 } %t191, { ptr, i64, i64 } { ptr @.str.7132, i64 0, i64 0 }) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t192) - store %S.json.Json %t192, ptr %a194 - call void @finch.drop.S_json_Json(ptr %a194) - br label %endif10925 -endif10925: - br label %each.step10921 -each.step10921: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10919 -each.end10922: - %t197 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a198 - br label %each.cond10926 -each.cond10926: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = load i64, ptr %a198 - %t202 = icmp slt i64 %t201, %t200 - br i1 %t202, label %each.body10927, label %each.end10929 -each.body10927: - %t203 = load ptr, ptr %t197 - %t204 = getelementptr inbounds %S.lsp.EnumRec, ptr %t203, i64 %t201 - %t205 = load %S.lsp.EnumRec, ptr %t204 - store %S.lsp.EnumRec %t205, ptr %a206 - %t207 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } %t209, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br i1 %t213, label %then10930, label %endif10932 -then10930: - %t214 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t215 = load { ptr, i64, i64 }, ptr %t214 - %t216 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } { ptr @.str.7133, i64 5, i64 0 }, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a218 - %t222 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t215, i64 13, { ptr, i64, i64 } %t221, { ptr, i64, i64 } { ptr @.str.7134, i64 0, i64 0 }) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t222) - store %S.json.Json %t222, ptr %a224 - call void @finch.drop.S_json_Json(ptr %a224) - br label %endif10932 -endif10932: - br label %each.step10928 -each.step10928: - %t225 = load i64, ptr %a198 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a198 - br label %each.cond10926 -each.end10929: - %t227 = load %S.json.Json, ptr %a7 - %t228 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t227) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t228 -endif10907: - %t229 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a230 - br label %each.cond10933 -each.cond10933: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t232 = load i64, ptr %t231 - %t233 = load i64, ptr %a230 - %t234 = icmp slt i64 %t233, %t232 - br i1 %t234, label %each.body10934, label %each.end10936 -each.body10934: - %t235 = load ptr, ptr %t229 - %t236 = getelementptr inbounds %S.lsp.EnumRec, ptr %t235, i64 %t233 - %t237 = load %S.lsp.EnumRec, ptr %t236 - store %S.lsp.EnumRec %t237, ptr %a238 - %t239 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from10937 -logic.from10937: - br i1 %t245, label %logic.rhs10938, label %logic.end10939 -logic.rhs10938: - %t246 = load %S.lsp.Analysis, ptr %a1 - %t247 = load { ptr, i64, i64 }, ptr %a3 - %t248 = load { ptr, i64, i64 }, ptr %a102 - %t249 = load i64, ptr %a4 - %t250 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t246, { ptr, i64, i64 } %t247, { ptr, i64, i64 } %t248, i64 %t249) - %t251 = extractvalue %S.lsp.VarRec %t250, 0 - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - store %S.lsp.VarRec %t250, ptr %a255 - call void @finch.drop.S_lsp_VarRec(ptr %a255) - %t256 = extractvalue { ptr, i64, i64 } %t254, 1 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = icmp eq i64 %t256, 0 - br label %logic.rend10940 -logic.rend10940: - br label %logic.end10939 -logic.end10939: - %t259 = phi i1 [ false, %logic.from10937 ], [ %t258, %logic.rend10940 ] - br i1 %t259, label %then10941, label %endif10943 -then10941: - %t260 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 5 - store i64 0, ptr %a261 - br label %each.cond10944 -each.cond10944: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body10945, label %each.end10947 -each.body10945: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t264 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.7135, i64 1, i64 0 }, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - %t277 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t276, ptr %a279 - store { ptr, i64, i64 } %t277, ptr %a280 - call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a278 - %t283 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t270, i64 20, { ptr, i64, i64 } %t282, { ptr, i64, i64 } { ptr @.str.7136, i64 0, i64 0 }) - store { ptr, i64, i64 } %t282, ptr %a284 - call void @finch_str_drop(ptr %a284) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t283) - store %S.json.Json %t283, ptr %a285 - call void @finch.drop.S_json_Json(ptr %a285) - br label %each.step10946 -each.step10946: - %t286 = load i64, ptr %a261 - %t287 = add i64 %t286, 1 - store i64 %t287, ptr %a261 - br label %each.cond10944 -each.end10947: - %t288 = load %S.json.Json, ptr %a7 - %t289 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t288) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t289 -endif10943: - br label %each.step10935 -each.step10935: - %t290 = load i64, ptr %a230 - %t291 = add i64 %t290, 1 - store i64 %t291, ptr %a230 - br label %each.cond10933 -each.end10936: - %t292 = load %S.lsp.Analysis, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a3 - %t294 = load { ptr, i64, i64 }, ptr %a102 - %t295 = load i64, ptr %a4 - %t296 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t292, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294, i64 %t295) - %t297 = extractvalue %S.lsp.VarRec %t296, 1 - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_copy(ptr %a299, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store %S.lsp.VarRec %t296, ptr %a301 - call void @finch.drop.S_lsp_VarRec(ptr %a301) - store { ptr, i64, i64 } %t300, ptr %a302 - %t303 = load i1, ptr %a103 - br label %logic.from10948 -logic.from10948: - br i1 %t303, label %logic.rhs10949, label %logic.end10950 -logic.rhs10949: - %t304 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t304, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.7138, i64 2, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_starts(ptr %a305, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br label %logic.rend10951 -logic.rend10951: - br label %logic.end10950 -logic.end10950: - %t310 = phi i1 [ false, %logic.from10948 ], [ %t309, %logic.rend10951 ] - br i1 %t310, label %then10952, label %else10953 -then10952: - %t311 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t311, ptr %a312 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t315 = load i64, ptr %t314 - call void @finch_str_sub(ptr %a313, ptr %a312, i64 2, i64 %t315, ptr @.str.7139, i64 569) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t316, ptr %a302 - store { ptr, i64, i64 } %t317, ptr %a318 - call void @finch_str_drop(ptr %a318) - br label %endif10954 -else10953: - %t319 = load i1, ptr %a103 - br label %logic.from10955 -logic.from10955: - br i1 %t319, label %logic.rhs10956, label %logic.end10957 -logic.rhs10956: - %t320 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t320, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.7140, i64 3, i64 0 }, ptr %a322 - %t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322) - %t324 = icmp ne i32 %t323, 0 - br label %logic.rend10958 -logic.rend10958: - br label %logic.end10957 -logic.end10957: - %t325 = phi i1 [ false, %logic.from10955 ], [ %t324, %logic.rend10958 ] - br i1 %t325, label %then10959, label %endif10961 -then10959: - %t326 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.7141, i64 4, i64 0 }, ptr %a302 - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif10961 -endif10961: - br label %endif10954 -endif10954: - %t328 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t328, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.7143, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_starts(ptr %a329, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.from10962 -logic.from10962: - br i1 %t333, label %logic.rhs10963, label %logic.end10964 -logic.rhs10963: - %t334 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.7145, i64 1, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_ends(ptr %a335, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br label %logic.rend10965 -logic.rend10965: - br label %logic.end10964 -logic.end10964: - %t340 = phi i1 [ false, %logic.from10962 ], [ %t339, %logic.rend10965 ] - br i1 %t340, label %then10966, label %endif10968 -then10966: - %t341 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t341, ptr %a342 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = sub i64 %t345, 1 - call void @finch_str_sub(ptr %a343, ptr %a342, i64 4, i64 %t346, ptr @.str.7146, i64 574) - %t347 = load { ptr, i64, i64 }, ptr %a343 - %t348 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t347, ptr %a302 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_drop(ptr %a349) - br label %endif10968 -endif10968: - %t350 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t350, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.7148, i64 2, i64 0 }, ptr %a353 - %t354 = call i32 @finch_str_starts(ptr %a351, ptr %a353) - %t355 = icmp ne i32 %t354, 0 - br i1 %t355, label %then10969, label %else10970 -then10969: - %t356 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t356) - store { ptr, i64, i64 } %t356, ptr %a357 - call void @finch.drop.arr_S_docs_Doc(ptr %a357) - br label %endif10971 -else10970: - %t358 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.7149, i64 3, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then10972, label %else10973 -then10972: - %t363 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t363, ptr %a364 - call void @finch.drop.arr_S_docs_Doc(ptr %a364) - br label %endif10974 -else10973: - %t365 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t365, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.7151, i64 4, i64 0 }, ptr %a368 - %t369 = call i32 @finch_str_starts(ptr %a366, ptr %a368) - %t370 = icmp ne i32 %t369, 0 - br i1 %t370, label %then10975, label %else10976 -then10975: - %t371 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a372 - call void @finch.drop.arr_S_docs_Doc(ptr %a372) - br label %endif10977 -else10976: - %t373 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t373, ptr %a374 - call void @finch_str_copy(ptr %a375, ptr %a374) - %t376 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t376, ptr %a377 - %t378 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a379 - br label %each.cond10978 -each.cond10978: - %t380 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t381 = load i64, ptr %t380 - %t382 = load i64, ptr %a379 - %t383 = icmp slt i64 %t382, %t381 - br i1 %t383, label %each.body10979, label %each.end10981 -each.body10979: - %t384 = load ptr, ptr %t378 - %t385 = getelementptr inbounds %S.lsp.StructRec, ptr %t384, i64 %t382 - %t386 = load %S.lsp.StructRec, ptr %t385 - store %S.lsp.StructRec %t386, ptr %a387 - %t388 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 1 - %t389 = load { ptr, i64, i64 }, ptr %t388 - %t390 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t389, ptr %a391 - store { ptr, i64, i64 } %t390, ptr %a392 - %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) - %t394 = icmp ne i32 %t393, 0 - br i1 %t394, label %then10982, label %endif10984 -then10982: - %t395 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %t395, i32 0, i32 1 - %t397 = load i64, ptr %t396 - store i64 0, ptr %a398 - br label %for.cond10985 -for.cond10985: - %t399 = load i64, ptr %a398 - %t400 = icmp slt i64 %t399, %t397 - br i1 %t400, label %for.body10986, label %for.end10988 -for.body10986: - %t401 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t402 = load i64, ptr %a398 - %t403 = load { ptr, i64, i64 }, ptr %t401 - %t404 = extractvalue { ptr, i64, i64 } %t403, 1 - %t405 = icmp uge i64 %t402, %t404 - br i1 %t405, label %range10989, label %inrange10990 -range10989: - call void @finch_panic_index(ptr @.str.7152, i64 587, i64 %t402, i64 %t404) - unreachable -inrange10990: - %t406 = extractvalue { ptr, i64, i64 } %t403, 0 - %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t402 - %t408 = load { ptr, i64, i64 }, ptr %t407 - %t409 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 6 - %t410 = load i64, ptr %a398 - %t411 = load { ptr, i64, i64 }, ptr %t409 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 %t410, %t412 - br i1 %t413, label %range10991, label %inrange10992 -range10991: - call void @finch_panic_index(ptr @.str.7153, i64 587, i64 %t410, i64 %t412) - unreachable -inrange10992: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t410 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t408, i64 5, { ptr, i64, i64 } %t416, { ptr, i64, i64 } { ptr @.str.7154, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t417) - store %S.json.Json %t417, ptr %a418 - call void @finch.drop.S_json_Json(ptr %a418) - br label %for.step10987 -for.step10987: - %t419 = load i64, ptr %a398 - %t420 = add i64 %t419, 1 - store i64 %t420, ptr %a398 - br label %for.cond10985 -for.end10988: - br label %endif10984 -endif10984: - br label %each.step10980 -each.step10980: - %t421 = load i64, ptr %a379 - %t422 = add i64 %t421, 1 - store i64 %t422, ptr %a379 - br label %each.cond10978 -each.end10981: - %t423 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a424 - br label %each.cond10993 -each.cond10993: - %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t423, i32 0, i32 1 - %t426 = load i64, ptr %t425 - %t427 = load i64, ptr %a424 - %t428 = icmp slt i64 %t427, %t426 - br i1 %t428, label %each.body10994, label %each.end10996 -each.body10994: - %t429 = load ptr, ptr %t423 - %t430 = getelementptr inbounds %S.lsp.FnRec, ptr %t429, i64 %t427 - %t431 = load %S.lsp.FnRec, ptr %t430 - store %S.lsp.FnRec %t431, ptr %a432 - %t433 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 2 - %t434 = load { ptr, i64, i64 }, ptr %t433 - %t435 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t434, ptr %a436 - store { ptr, i64, i64 } %t435, ptr %a437 - %t438 = call i32 @finch_str_eq(ptr %a436, ptr %a437) - %t439 = icmp ne i32 %t438, 0 - br i1 %t439, label %then10997, label %endif10999 -then10997: - %t440 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 1 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 7 - %t443 = load { ptr, i64, i64 }, ptr %t442 - %t444 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t441, i64 2, { ptr, i64, i64 } %t443, { ptr, i64, i64 } { ptr @.str.7155, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t444) - store %S.json.Json %t444, ptr %a445 - call void @finch.drop.S_json_Json(ptr %a445) - br label %endif10999 -endif10999: - br label %each.step10995 -each.step10995: - %t446 = load i64, ptr %a424 - %t447 = add i64 %t446, 1 - store i64 %t447, ptr %a424 - br label %each.cond10993 -each.end10996: - call void @finch_str_drop(ptr %a377) - br label %endif10977 -endif10977: - br label %endif10974 -endif10974: - br label %endif10971 -endif10971: - %t448 = load %S.json.Json, ptr %a7 - %t449 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t448) - call void @finch_str_drop(ptr %a302) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t449 -endif10875: - store %S.lsp.Names zeroinitializer, ptr %a450 - %t451 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 - store i64 0, ptr %a452 - br label %each.cond11000 -each.cond11000: - %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t451, i32 0, i32 1 - %t454 = load i64, ptr %t453 - %t455 = load i64, ptr %a452 - %t456 = icmp slt i64 %t455, %t454 - br i1 %t456, label %each.body11001, label %each.end11003 -each.body11001: - %t457 = load ptr, ptr %t451 - %t458 = getelementptr inbounds %S.lsp.VarRec, ptr %t457, i64 %t455 - %t459 = load %S.lsp.VarRec, ptr %t458 - store %S.lsp.VarRec %t459, ptr %a460 - %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 3 - %t462 = load i64, ptr %t461 - %t463 = load i64, ptr %a4 - %t464 = icmp sle i64 %t462, %t463 - br label %logic.from11004 -logic.from11004: - br i1 %t464, label %logic.rhs11005, label %logic.end11006 -logic.rhs11005: - %t465 = load i64, ptr %a4 - %t466 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 7 - %t467 = load i64, ptr %t466 - %t468 = add i64 %t467, 1 - %t469 = icmp sle i64 %t465, %t468 - br label %logic.rend11007 -logic.rend11007: - br label %logic.end11006 -logic.end11006: - %t470 = phi i1 [ false, %logic.from11004 ], [ %t469, %logic.rend11007 ] - br label %logic.from11008 -logic.from11008: - br i1 %t470, label %logic.rhs11009, label %logic.end11010 -logic.rhs11009: - %t471 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 5 - %t472 = load { ptr, i64, i64 }, ptr %t471 - %t473 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t472, ptr %a474 - store { ptr, i64, i64 } %t473, ptr %a475 - %t476 = call i32 @finch_str_eq(ptr %a474, ptr %a475) - %t477 = icmp ne i32 %t476, 0 - br label %logic.rend11011 -logic.rend11011: - br label %logic.end11010 -logic.end11010: - %t478 = phi i1 [ false, %logic.from11008 ], [ %t477, %logic.rend11011 ] - br label %logic.from11012 -logic.from11012: - br i1 %t478, label %logic.rhs11013, label %logic.end11014 -logic.rhs11013: - %t479 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t480 = load { ptr, i64, i64 }, ptr %t479 - %t481 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t480) - br label %logic.rend11015 -logic.rend11015: - br label %logic.end11014 -logic.end11014: - %t482 = phi i1 [ false, %logic.from11012 ], [ %t481, %logic.rend11015 ] - br i1 %t482, label %then11016, label %endif11018 -then11016: - %t483 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - %t485 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 1 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t484, i64 6, { ptr, i64, i64 } %t486, { ptr, i64, i64 } { ptr @.str.7156, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t487) - store %S.json.Json %t487, ptr %a488 - call void @finch.drop.S_json_Json(ptr %a488) - br label %endif11018 -endif11018: - br label %each.step11002 -each.step11002: - %t489 = load i64, ptr %a452 - %t490 = add i64 %t489, 1 - store i64 %t490, ptr %a452 - br label %each.cond11000 -each.end11003: - %t491 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a492 - br label %each.cond11019 -each.cond11019: - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i32 0, i32 1 - %t494 = load i64, ptr %t493 - %t495 = load i64, ptr %a492 - %t496 = icmp slt i64 %t495, %t494 - br i1 %t496, label %each.body11020, label %each.end11022 -each.body11020: - %t497 = load ptr, ptr %t491 - %t498 = getelementptr inbounds %S.lsp.FnRec, ptr %t497, i64 %t495 - %t499 = load %S.lsp.FnRec, ptr %t498 - store %S.lsp.FnRec %t499, ptr %a500 - %t501 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 2 - %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 - %t503 = load i64, ptr %t502 - %t504 = icmp eq i64 %t503, 0 - br label %logic.from11023 -logic.from11023: - br i1 %t504, label %logic.rhs11024, label %logic.end11025 -logic.rhs11024: - %t505 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 0 - %t506 = load { ptr, i64, i64 }, ptr %t505 - store { ptr, i64, i64 } %t506, ptr %a507 - store { ptr, i64, i64 } { ptr @.str.7157, i64 0, i64 0 }, ptr %a508 - %t509 = call i32 @finch_str_eq(ptr %a507, ptr %a508) - %t510 = icmp ne i32 %t509, 0 - br label %logic.rend11026 -logic.rend11026: - br label %logic.end11025 -logic.end11025: - %t511 = phi i1 [ false, %logic.from11023 ], [ %t510, %logic.rend11026 ] - br label %logic.from11027 -logic.from11027: - br i1 %t511, label %logic.rhs11028, label %logic.end11029 -logic.rhs11028: - %t512 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t513 = load { ptr, i64, i64 }, ptr %t512 - %t514 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t513) - br label %logic.rend11030 -logic.rend11030: - br label %logic.end11029 -logic.end11029: - %t515 = phi i1 [ false, %logic.from11027 ], [ %t514, %logic.rend11030 ] - br i1 %t515, label %then11031, label %endif11033 -then11031: - %t516 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 7 - %t519 = load { ptr, i64, i64 }, ptr %t518 - %t520 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t517, i64 3, { ptr, i64, i64 } %t519, { ptr, i64, i64 } { ptr @.str.7158, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t520) - store %S.json.Json %t520, ptr %a521 - call void @finch.drop.S_json_Json(ptr %a521) - br label %endif11033 -endif11033: - br label %each.step11021 -each.step11021: - %t522 = load i64, ptr %a492 - %t523 = add i64 %t522, 1 - store i64 %t523, ptr %a492 - br label %each.cond11019 -each.end11022: - %t524 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a525 - br label %each.cond11034 -each.cond11034: - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 - %t527 = load i64, ptr %t526 - %t528 = load i64, ptr %a525 - %t529 = icmp slt i64 %t528, %t527 - br i1 %t529, label %each.body11035, label %each.end11037 -each.body11035: - %t530 = load ptr, ptr %t524 - %t531 = getelementptr inbounds %S.lsp.StructRec, ptr %t530, i64 %t528 - %t532 = load %S.lsp.StructRec, ptr %t531 - store %S.lsp.StructRec %t532, ptr %a533 - %t534 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - store { ptr, i64, i64 } %t535, ptr %a536 - store { ptr, i64, i64 } { ptr @.str.7159, i64 0, i64 0 }, ptr %a537 - %t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537) - %t539 = icmp ne i32 %t538, 0 - br label %logic.from11038 -logic.from11038: - br i1 %t539, label %logic.rhs11039, label %logic.end11040 -logic.rhs11039: - %t540 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t541 = load { ptr, i64, i64 }, ptr %t540 - %t542 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t541) - br label %logic.rend11041 -logic.rend11041: - br label %logic.end11040 -logic.end11040: - %t543 = phi i1 [ false, %logic.from11038 ], [ %t542, %logic.rend11041 ] - br i1 %t543, label %then11042, label %endif11044 -then11042: - %t544 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - %t546 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } { ptr @.str.7160, i64 7, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - %t552 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t545, i64 22, { ptr, i64, i64 } %t551, { ptr, i64, i64 } { ptr @.str.7161, i64 0, i64 0 }) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t552) - store %S.json.Json %t552, ptr %a554 - call void @finch.drop.S_json_Json(ptr %a554) - br label %endif11044 -endif11044: - br label %each.step11036 -each.step11036: - %t555 = load i64, ptr %a525 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a525 - br label %each.cond11034 -each.end11037: - %t557 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a558 - br label %each.cond11045 -each.cond11045: - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i32 0, i32 1 - %t560 = load i64, ptr %t559 - %t561 = load i64, ptr %a558 - %t562 = icmp slt i64 %t561, %t560 - br i1 %t562, label %each.body11046, label %each.end11048 -each.body11046: - %t563 = load ptr, ptr %t557 - %t564 = getelementptr inbounds %S.lsp.EnumRec, ptr %t563, i64 %t561 - %t565 = load %S.lsp.EnumRec, ptr %t564 - store %S.lsp.EnumRec %t565, ptr %a566 - %t567 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 0 - %t568 = load { ptr, i64, i64 }, ptr %t567 - store { ptr, i64, i64 } %t568, ptr %a569 - store { ptr, i64, i64 } { ptr @.str.7162, i64 0, i64 0 }, ptr %a570 - %t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570) - %t572 = icmp ne i32 %t571, 0 - br label %logic.from11049 -logic.from11049: - br i1 %t572, label %logic.rhs11050, label %logic.end11051 -logic.rhs11050: - %t573 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t574 = load { ptr, i64, i64 }, ptr %t573 - %t575 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t574) - br label %logic.rend11052 -logic.rend11052: - br label %logic.end11051 -logic.end11051: - %t576 = phi i1 [ false, %logic.from11049 ], [ %t575, %logic.rend11052 ] - br i1 %t576, label %then11053, label %endif11055 -then11053: - %t577 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t578 = load { ptr, i64, i64 }, ptr %t577 - %t579 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t580 = load { ptr, i64, i64 }, ptr %t579 - store { ptr, i64, i64 } { ptr @.str.7163, i64 5, i64 0 }, ptr %a582 - store { ptr, i64, i64 } %t580, ptr %a583 - call void @finch_str_concat(ptr %a581, ptr %a582, ptr %a583) - %t584 = load { ptr, i64, i64 }, ptr %a581 - %t585 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t578, i64 13, { ptr, i64, i64 } %t584, { ptr, i64, i64 } { ptr @.str.7164, i64 0, i64 0 }) - store { ptr, i64, i64 } %t584, ptr %a586 - call void @finch_str_drop(ptr %a586) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t585) - store %S.json.Json %t585, ptr %a587 - call void @finch.drop.S_json_Json(ptr %a587) - br label %endif11055 -endif11055: - br label %each.step11047 -each.step11047: - %t588 = load i64, ptr %a558 - %t589 = add i64 %t588, 1 - store i64 %t589, ptr %a558 - br label %each.cond11045 -each.end11048: - %t590 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - store i64 0, ptr %a591 - br label %each.cond11056 -each.cond11056: - %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i32 0, i32 1 - %t593 = load i64, ptr %t592 - %t594 = load i64, ptr %a591 - %t595 = icmp slt i64 %t594, %t593 - br i1 %t595, label %each.body11057, label %each.end11059 -each.body11057: - %t596 = load ptr, ptr %t590 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - %t598 = load { ptr, i64, i64 }, ptr %t597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t600) - br i1 %t601, label %then11060, label %endif11062 -then11060: - %t602 = load { ptr, i64, i64 }, ptr %a599 - %t603 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t602, i64 9, { ptr, i64, i64 } { ptr @.str.7165, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.7166, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t603) - store %S.json.Json %t603, ptr %a604 - call void @finch.drop.S_json_Json(ptr %a604) - br label %endif11062 -endif11062: - br label %each.step11058 -each.step11058: - %t605 = load i64, ptr %a591 - %t606 = add i64 %t605, 1 - store i64 %t606, ptr %a591 - br label %each.cond11056 -each.end11059: - %t607 = call { ptr, i64, i64 } @finch.docs.builtins() - store { ptr, i64, i64 } %t607, ptr %a608 - store i64 0, ptr %a609 - br label %each.cond11063 -each.cond11063: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a608, i32 0, i32 1 - %t611 = load i64, ptr %t610 - %t612 = load i64, ptr %a609 - %t613 = icmp slt i64 %t612, %t611 - br i1 %t613, label %each.body11064, label %each.end11066 -each.body11064: - %t614 = load ptr, ptr %a608 - %t615 = getelementptr inbounds %S.docs.Doc, ptr %t614, i64 %t612 - %t616 = load %S.docs.Doc, ptr %t615 - store %S.docs.Doc %t616, ptr %a617 - %t618 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - %t620 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t619) - br i1 %t620, label %then11067, label %endif11069 -then11067: - %t621 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t622 = load { ptr, i64, i64 }, ptr %t621 - %t623 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 1 - %t624 = load { ptr, i64, i64 }, ptr %t623 - %t625 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 2 - %t626 = load { ptr, i64, i64 }, ptr %t625 - %t627 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t622, i64 3, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t627) - store %S.json.Json %t627, ptr %a628 - call void @finch.drop.S_json_Json(ptr %a628) - br label %endif11069 -endif11069: - br label %each.step11065 -each.step11065: - %t629 = load i64, ptr %a609 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a609 - br label %each.cond11063 -each.end11066: - call void @finch.drop.arr_S_docs_Doc(ptr %a608) - %t631 = call { ptr, i64, i64 } @finch.docs.keywords() - store { ptr, i64, i64 } %t631, ptr %a632 - store i64 0, ptr %a633 - br label %each.cond11070 -each.cond11070: - %t634 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t635 = load i64, ptr %t634 - %t636 = load i64, ptr %a633 - %t637 = icmp slt i64 %t636, %t635 - br i1 %t637, label %each.body11071, label %each.end11073 -each.body11071: - %t638 = load ptr, ptr %a632 - %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t636 - %t640 = load { ptr, i64, i64 }, ptr %t639 - store { ptr, i64, i64 } %t640, ptr %a641 - %t642 = load { ptr, i64, i64 }, ptr %a641 - %t643 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t642) - br i1 %t643, label %then11074, label %endif11076 -then11074: - %t644 = load { ptr, i64, i64 }, ptr %a641 - %t645 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t644, i64 14, { ptr, i64, i64 } { ptr @.str.7167, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7168, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t645) - store %S.json.Json %t645, ptr %a646 - call void @finch.drop.S_json_Json(ptr %a646) - br label %endif11076 -endif11076: - br label %each.step11072 -each.step11072: - %t647 = load i64, ptr %a633 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a633 - br label %each.cond11070 -each.end11073: - call void @finch.drop.arr_str(ptr %a632) - %t649 = call { ptr, i64, i64 } @finch.docs.typeNames() - store { ptr, i64, i64 } %t649, ptr %a650 - store i64 0, ptr %a651 - br label %each.cond11077 -each.cond11077: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %a650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body11078, label %each.end11080 -each.body11078: - %t656 = load ptr, ptr %a650 - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %t656, i64 %t654 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t658, ptr %a659 - %t660 = load { ptr, i64, i64 }, ptr %a659 - %t661 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t660) - br i1 %t661, label %then11081, label %endif11083 -then11081: - %t662 = load { ptr, i64, i64 }, ptr %a659 - %t663 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t662, i64 25, { ptr, i64, i64 } { ptr @.str.7169, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7170, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t663) - store %S.json.Json %t663, ptr %a664 - call void @finch.drop.S_json_Json(ptr %a664) - br label %endif11083 -endif11083: - br label %each.step11079 -each.step11079: - %t665 = load i64, ptr %a651 - %t666 = add i64 %t665, 1 - store i64 %t666, ptr %a651 - br label %each.cond11077 -each.end11080: - call void @finch.drop.arr_str(ptr %a650) - %t667 = load %S.json.Json, ptr %a7 - %t668 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t667) - call void @finch.drop.S_lsp_Names(ptr %a450) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t668 -} - -define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.cond11084 -find.cond11084: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body11085, label %find.end11088 -find.body11085: - %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.hit11086, label %find.next11087 -find.hit11086: - store i64 %t9, ptr %a5 - br label %find.end11088 -find.next11087: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond11084 -find.end11088: - %t18 = load i64, ptr %a5 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then11089, label %endif11091 -then11089: - ret i1 false -endif11091: - %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 - %a5 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t2, ptr %a3 - %t4 = call %S.json.Json @finch.json.new_bool(i1 false) - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7171, i64 12, i64 0 }, %S.json.Json %t4) - store %S.json.Json %t4, ptr %a5 - call void @finch.drop.S_json_Json(ptr %a5) - %t6 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7172, i64 5, i64 0 }, %S.json.Json %t6) - %t7 = load %S.json.Json, ptr %a3 - ret %S.json.Json %t7 -} - -define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 %S.lsp.VarRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca i64, align 16 - %a188 = alloca %S.lsp.FnRec, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca %S.json.Json, align 16 - %a209 = alloca %S.json.Json, align 16 - %a211 = alloca %S.json.Json, align 16 - %a213 = alloca i64, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.json.Json, align 16 - %a229 = alloca %S.json.Json, align 16 - %a235 = alloca %S.json.Json, align 16 - %a238 = alloca %S.json.Json, align 16 - %a241 = alloca %S.json.Json, align 16 - %a244 = alloca %S.json.Json, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca %S.docs.Doc, align 16 - %a258 = alloca %S.json.Json, align 16 - %a262 = alloca %S.json.Json, align 16 - %a266 = alloca %S.json.Json, align 16 - %a268 = alloca %S.json.Json, align 16 - %a271 = alloca %S.json.Json, align 16 - %a274 = alloca %S.json.Json, align 16 - %a277 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then11092, label %endif11094 -then11092: - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t18 = load i64, ptr %t17 - store i64 %t18, ptr %a12 - br label %endif11094 -endif11094: - %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.7173, 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.cond11095 -while.cond11095: - %t32 = load i64, ptr %a31 - %t33 = icmp sge i64 %t32, 0 - br i1 %t33, label %while.body11096, label %while.end11097 -while.body11096: - %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 %range11098, label %inrange11099 -range11098: - call void @finch_panic_index(ptr @.str.7174, i64 678, i64 %t34, i64 %t36) - unreachable -inrange11099: - %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.from11100 -logic.from11100: - br i1 %t43, label %logic.end11102, label %logic.rhs11101 -logic.rhs11101: - %t44 = load i8, ptr %a41 - %t45 = icmp eq i8 %t44, 93 - br label %logic.rend11103 -logic.rend11103: - br label %logic.end11102 -logic.end11102: - %t46 = phi i1 [ true, %logic.from11100 ], [ %t45, %logic.rend11103 ] - br i1 %t46, label %then11104, label %else11105 -then11104: - %t47 = load i64, ptr %a25 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a25 - br label %endif11106 -else11105: - %t49 = load i8, ptr %a41 - %t50 = icmp eq i8 %t49, 40 - br label %logic.from11107 -logic.from11107: - br i1 %t50, label %logic.end11109, label %logic.rhs11108 -logic.rhs11108: - %t51 = load i8, ptr %a41 - %t52 = icmp eq i8 %t51, 91 - br label %logic.rend11110 -logic.rend11110: - br label %logic.end11109 -logic.end11109: - %t53 = phi i1 [ true, %logic.from11107 ], [ %t52, %logic.rend11110 ] - br i1 %t53, label %then11111, label %else11112 -then11111: - %t54 = load i64, ptr %a25 - %t55 = icmp eq i64 %t54, 0 - br i1 %t55, label %then11114, label %else11115 -then11114: - %t56 = load i8, ptr %a41 - %t57 = icmp eq i8 %t56, 40 - br i1 %t57, label %then11117, label %endif11119 -then11117: - %t58 = load i64, ptr %a31 - store i64 %t58, ptr %a27 - br label %while.end11097 -endif11119: - br label %endif11116 -else11115: - %t59 = load i64, ptr %a25 - %t60 = sub i64 %t59, 1 - store i64 %t60, ptr %a25 - br label %endif11116 -endif11116: - br label %endif11113 -else11112: - %t61 = load i8, ptr %a41 - %t62 = icmp eq i8 %t61, 44 - br label %logic.from11120 -logic.from11120: - br i1 %t62, label %logic.rhs11121, label %logic.end11122 -logic.rhs11121: - %t63 = load i64, ptr %a25 - %t64 = icmp eq i64 %t63, 0 - br label %logic.rend11123 -logic.rend11123: - br label %logic.end11122 -logic.end11122: - %t65 = phi i1 [ false, %logic.from11120 ], [ %t64, %logic.rend11123 ] - br i1 %t65, label %then11124, label %endif11126 -then11124: - %t66 = load i64, ptr %a26 - %t67 = add i64 %t66, 1 - store i64 %t67, ptr %a26 - br label %endif11126 -endif11126: - br label %endif11113 -endif11113: - br label %endif11106 -endif11106: - %t68 = load i64, ptr %a31 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %a31 - br label %while.cond11095 -while.end11097: - %t70 = load i64, ptr %a27 - %t71 = icmp slt i64 %t70, 0 - br i1 %t71, label %then11127, label %endif11129 -then11127: - %t72 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t72 -endif11129: - %t73 = load i64, ptr %a27 - store i64 %t73, ptr %a74 - %t75 = load i64, ptr %a74 - store i64 %t75, ptr %a76 - br label %while.cond11130 -while.cond11130: - %t77 = load i64, ptr %a76 - %t78 = icmp sgt i64 %t77, 0 - br label %logic.from11133 -logic.from11133: - br i1 %t78, label %logic.rhs11134, label %logic.end11135 -logic.rhs11134: - %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 %range11136, label %inrange11137 -range11136: - call void @finch_panic_index(ptr @.str.7175, i64 700, i64 %t80, i64 %t82) - unreachable -inrange11137: - %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.rend11138 -logic.rend11138: - br label %logic.end11135 -logic.end11135: - %t88 = phi i1 [ false, %logic.from11133 ], [ %t87, %logic.rend11138 ] - br i1 %t88, label %while.body11131, label %while.end11132 -while.body11131: - %t89 = load i64, ptr %a76 - %t90 = sub i64 %t89, 1 - store i64 %t90, ptr %a76 - br label %while.cond11130 -while.end11132: - %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.7176, 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 %then11139, label %endif11141 -then11139: - %t101 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t101 -endif11141: - store { ptr, i64, i64 } { ptr @.str.7177, i64 0, i64 0 }, ptr %a102 - %t103 = load i64, ptr %a76 - %t104 = icmp sgt i64 %t103, 0 - br label %logic.from11142 -logic.from11142: - br i1 %t104, label %logic.rhs11143, label %logic.end11144 -logic.rhs11143: - %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 %range11145, label %inrange11146 -range11145: - call void @finch_panic_index(ptr @.str.7178, i64 708, i64 %t106, i64 %t108) - unreachable -inrange11146: - %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.rend11147 -logic.rend11147: - br label %logic.end11144 -logic.end11144: - %t114 = phi i1 [ false, %logic.from11142 ], [ %t113, %logic.rend11147 ] - br i1 %t114, label %then11148, label %endif11150 -then11148: - %t115 = load i64, ptr %a76 - %t116 = sub i64 %t115, 1 - store i64 %t116, ptr %a117 - br label %while.cond11151 -while.cond11151: - %t118 = load i64, ptr %a117 - %t119 = icmp sgt i64 %t118, 0 - br label %logic.from11154 -logic.from11154: - br i1 %t119, label %logic.rhs11155, label %logic.end11156 -logic.rhs11155: - %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 %range11157, label %inrange11158 -range11157: - call void @finch_panic_index(ptr @.str.7179, i64 711, i64 %t121, i64 %t123) - unreachable -inrange11158: - %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.rend11159 -logic.rend11159: - br label %logic.end11156 -logic.end11156: - %t129 = phi i1 [ false, %logic.from11154 ], [ %t128, %logic.rend11159 ] - br i1 %t129, label %while.body11152, label %while.end11153 -while.body11152: - %t130 = load i64, ptr %a117 - %t131 = sub i64 %t130, 1 - store i64 %t131, ptr %a117 - br label %while.cond11151 -while.end11153: - %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.7180, 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 %S.lsp.VarRec %t144, ptr %a149 - call void @finch.drop.S_lsp_VarRec(ptr %a149) - store { ptr, i64, i64 } %t148, ptr %a150 - %t151 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.7182, i64 4, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_starts(ptr %a152, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from11160 -logic.from11160: - br i1 %t156, label %logic.rhs11161, label %logic.end11162 -logic.rhs11161: - %t157 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.7184, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_ends(ptr %a158, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - br label %logic.rend11163 -logic.rend11163: - br label %logic.end11162 -logic.end11162: - %t163 = phi i1 [ false, %logic.from11160 ], [ %t162, %logic.rend11163 ] - br i1 %t163, label %then11164, label %endif11166 -then11164: - %t164 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t164, ptr %a165 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %a150, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = sub i64 %t168, 1 - call void @finch_str_sub(ptr %a166, ptr %a165, i64 4, i64 %t169, ptr @.str.7185, i64 717) - %t170 = load { ptr, i64, i64 }, ptr %a166 - %t171 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t170, ptr %a150 - store { ptr, i64, i64 } %t171, ptr %a172 - call void @finch_str_drop(ptr %a172) - br label %endif11166 -endif11166: - %t173 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t173, ptr %a174 - call void @finch_str_copy(ptr %a175, ptr %a174) - %t176 = load { ptr, i64, i64 }, ptr %a175 - %t177 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t176, ptr %a102 - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - call void @finch_str_drop(ptr %a150) - call void @finch_str_drop(ptr %a139) - br label %endif11150 -endif11150: - %t179 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a180 - br label %each.cond11167 -each.cond11167: - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t182 = load i64, ptr %t181 - %t183 = load i64, ptr %a180 - %t184 = icmp slt i64 %t183, %t182 - br i1 %t184, label %each.body11168, label %each.end11170 -each.body11168: - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.lsp.FnRec, ptr %t185, i64 %t183 - %t187 = load %S.lsp.FnRec, ptr %t186 - store %S.lsp.FnRec %t187, ptr %a188 - %t189 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } %t191, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br label %logic.from11171 -logic.from11171: - br i1 %t195, label %logic.rhs11172, label %logic.end11173 -logic.rhs11172: - %t196 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 2 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t197, ptr %a199 - store { ptr, i64, i64 } %t198, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.rend11174 -logic.rend11174: - br label %logic.end11173 -logic.end11173: - %t203 = phi i1 [ false, %logic.from11171 ], [ %t202, %logic.rend11174 ] - br i1 %t203, label %then11175, label %endif11177 -then11175: - %t204 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t204, ptr %a205 - %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 7 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t207) - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7186, i64 5, i64 0 }, %S.json.Json %t208) - store %S.json.Json %t208, ptr %a209 - call void @finch.drop.S_json_Json(ptr %a209) - %t210 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t210, ptr %a211 - %t212 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 8 - store i64 0, ptr %a213 - br label %each.cond11178 -each.cond11178: - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t215 = load i64, ptr %t214 - %t216 = load i64, ptr %a213 - %t217 = icmp slt i64 %t216, %t215 - br i1 %t217, label %each.body11179, label %each.end11181 -each.body11179: - %t218 = load ptr, ptr %t212 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a221, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = icmp sgt i64 %t223, 0 - br i1 %t224, label %then11182, label %endif11184 -then11182: - %t225 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t225, ptr %a226 - %t227 = load { ptr, i64, i64 }, ptr %a221 - %t228 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t227) - call void @finch.json.Json.set(ptr %a226, { ptr, i64, i64 } { ptr @.str.7187, i64 5, i64 0 }, %S.json.Json %t228) - store %S.json.Json %t228, ptr %a229 - call void @finch.drop.S_json_Json(ptr %a229) - %t230 = load %S.json.Json, ptr %a226 - call void @finch.json.Json.push(ptr %a211, %S.json.Json %t230) - call void @finch.drop.S_json_Json(ptr %a226) - br label %endif11184 -endif11184: - br label %each.step11180 -each.step11180: - %t231 = load i64, ptr %a213 - %t232 = add i64 %t231, 1 - store i64 %t232, ptr %a213 - br label %each.cond11178 -each.end11181: - %t233 = load %S.json.Json, ptr %a211 - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7188, i64 10, i64 0 }, %S.json.Json %t233) - %t234 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t234, ptr %a235 - %t236 = load %S.json.Json, ptr %a205 - call void @finch.json.Json.push(ptr %a235, %S.json.Json %t236) - %t237 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t237, ptr %a238 - %t239 = load %S.json.Json, ptr %a235 - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7189, i64 10, i64 0 }, %S.json.Json %t239) - %t240 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7190, i64 15, i64 0 }, %S.json.Json %t240) - store %S.json.Json %t240, ptr %a241 - call void @finch.drop.S_json_Json(ptr %a241) - %t242 = load i64, ptr %a26 - %t243 = call %S.json.Json @finch.lsp.num(i64 %t242) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7191, i64 15, i64 0 }, %S.json.Json %t243) - store %S.json.Json %t243, ptr %a244 - call void @finch.drop.S_json_Json(ptr %a244) - %t245 = load %S.json.Json, ptr %a238 - call void @finch.drop.S_json_Json(ptr %a235) - call void @finch.drop.S_json_Json(ptr %a211) - call void @finch.drop.S_json_Json(ptr %a205) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t245 -endif11177: - br label %each.step11169 -each.step11169: - %t246 = load i64, ptr %a180 - %t247 = add i64 %t246, 1 - store i64 %t247, ptr %a180 - br label %each.cond11167 -each.end11170: - %t248 = call { ptr, i64, i64 } @finch.docs.builtins() - %t249 = load { ptr, i64, i64 }, ptr %a97 - %t250 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t248, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch.drop.arr_S_docs_Doc(ptr %a251) - store %S.docs.Doc %t250, ptr %a252 - %t253 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 0 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - %t255 = load i64, ptr %t254 - %t256 = icmp sgt i64 %t255, 0 - br i1 %t256, label %then11185, label %endif11187 -then11185: - %t257 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t257, ptr %a258 - %t259 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %t259 - %t261 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t260) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7192, i64 5, i64 0 }, %S.json.Json %t261) - store %S.json.Json %t261, ptr %a262 - call void @finch.drop.S_json_Json(ptr %a262) - %t263 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 2 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t264) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7193, i64 13, i64 0 }, %S.json.Json %t265) - store %S.json.Json %t265, ptr %a266 - call void @finch.drop.S_json_Json(ptr %a266) - %t267 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t267, ptr %a268 - %t269 = load %S.json.Json, ptr %a258 - call void @finch.json.Json.push(ptr %a268, %S.json.Json %t269) - %t270 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t270, ptr %a271 - %t272 = load %S.json.Json, ptr %a268 - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7194, i64 10, i64 0 }, %S.json.Json %t272) - %t273 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7195, i64 15, i64 0 }, %S.json.Json %t273) - store %S.json.Json %t273, ptr %a274 - call void @finch.drop.S_json_Json(ptr %a274) - %t275 = load i64, ptr %a26 - %t276 = call %S.json.Json @finch.lsp.num(i64 %t275) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7196, i64 15, i64 0 }, %S.json.Json %t276) - store %S.json.Json %t276, ptr %a277 - call void @finch.drop.S_json_Json(ptr %a277) - %t278 = load %S.json.Json, ptr %a271 - call void @finch.drop.S_json_Json(ptr %a268) - call void @finch.drop.S_json_Json(ptr %a258) - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t278 -endif11187: - %t279 = call %S.json.Json @finch.json.new_null() - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t279 -} - -define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { -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.7197, 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.7198, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7199, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7200, 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.7201, i64 3, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7202, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t7 -} - -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 - %a18 = alloca %S.json.Json, align 16 - %a20 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a24 = alloca %S.json.Json, align 16 - %a26 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - %a34 = alloca %S.json.Json, align 16 - %a36 = alloca %S.json.Json, align 16 - %a38 = alloca %S.json.Json, align 16 - %a40 = alloca %S.json.Json, align 16 - %a44 = alloca %S.json.Json, align 16 - %a47 = alloca %S.json.Json, align 16 - %a49 = alloca %S.json.Json, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.json.Json, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.json.Json, align 16 - %a106 = alloca %S.json.Json, align 16 - %a108 = alloca %S.json.Json, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca i32, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca %S.json.Json, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca %S.json.Json, align 16 - %a184 = alloca %S.json.Json, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca %S.json.Json, align 16 - %a212 = alloca %S.json.Json, align 16 - %a215 = alloca i64, align 16 - %a217 = alloca %S.json.Json, align 16 - %a219 = alloca %S.json.Json, align 16 - %a222 = alloca i64, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.json.Json, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.lsp.Analysis, align 16 - %a245 = alloca %S.lsp.Analysis, align 16 - %a247 = alloca %S.lsp.Analysis, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca %S.json.Json, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.json.Json, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.json.Json, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.json.Json, align 16 - %a322 = alloca %S.json.Json, align 16 - %a328 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7203, 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.7204, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store { ptr, i64, i64 } %t4, ptr %a5 - %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7205, 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.7206, 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.7207, 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.arm11189, label %match.next11190 -match.arm11189: - %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.7208, i64 16, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - %t19 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7209, i64 13, i64 0 }, %S.json.Json %t19) - store %S.json.Json %t19, ptr %a20 - call void @finch.drop.S_json_Json(ptr %a20) - %t21 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7210, i64 18, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7211, i64 22, i64 0 }, %S.json.Json %t23) - store %S.json.Json %t23, ptr %a24 - call void @finch.drop.S_json_Json(ptr %a24) - %t25 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t25, ptr %a26 - %t27 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t27, ptr %a28 - %t29 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7212, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a28, %S.json.Json %t29) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - %t31 = load %S.json.Json, ptr %a28 - call void @finch.json.Json.set(ptr %a26, { ptr, i64, i64 } { ptr @.str.7213, i64 17, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a26 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7214, i64 18, i64 0 }, %S.json.Json %t32) - %t33 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t33, ptr %a34 - %t35 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t35, ptr %a36 - %t37 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7215, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t37) - store %S.json.Json %t37, ptr %a38 - call void @finch.drop.S_json_Json(ptr %a38) - %t39 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7216, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t39) - store %S.json.Json %t39, ptr %a40 - call void @finch.drop.S_json_Json(ptr %a40) - %t41 = load %S.json.Json, ptr %a36 - call void @finch.json.Json.set(ptr %a34, { ptr, i64, i64 } { ptr @.str.7217, i64 17, i64 0 }, %S.json.Json %t41) - %t42 = load %S.json.Json, ptr %a34 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7218, i64 21, i64 0 }, %S.json.Json %t42) - %t43 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t43, ptr %a44 - %t45 = load %S.json.Json, ptr %a16 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7219, i64 12, i64 0 }, %S.json.Json %t45) - %t46 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t46, ptr %a47 - %t48 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7221, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a47, { ptr, i64, i64 } { ptr @.str.7220, i64 4, i64 0 }, %S.json.Json %t48) - store %S.json.Json %t48, ptr %a49 - call void @finch.drop.S_json_Json(ptr %a49) - %t50 = load %S.json.Json, ptr %a47 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7222, i64 10, i64 0 }, %S.json.Json %t50) - %t51 = load %S.json.Json, ptr %a9 - %t52 = load %S.json.Json, ptr %a44 - call void @finch.lsp.reply(%S.json.Json %t51, %S.json.Json %t52) - call void @finch.drop.S_json_Json(ptr %a47) - call void @finch.drop.S_json_Json(ptr %a44) - call void @finch.drop.S_json_Json(ptr %a36) - call void @finch.drop.S_json_Json(ptr %a34) - call void @finch.drop.S_json_Json(ptr %a28) - call void @finch.drop.S_json_Json(ptr %a26) - call void @finch.drop.S_json_Json(ptr %a16) - br label %match.end11188 -match.next11190: - store { ptr, i64, i64 } %t10, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.7223, i64 8, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %match.arm11191, label %match.next11192 -match.arm11191: - %t57 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 - store i1 true, ptr %t57 - %t58 = load %S.json.Json, ptr %a9 - %t59 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t58, %S.json.Json %t59) - store %S.json.Json %t59, ptr %a60 - call void @finch.drop.S_json_Json(ptr %a60) - br label %match.end11188 -match.next11192: - store { ptr, i64, i64 } %t10, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.7224, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %match.arm11193, label %match.next11194 -match.arm11193: - %t65 = trunc i64 0 to i32 - %t66 = call i32 @fflush(ptr null) - call void @exit(i32 %t65) - br label %match.end11188 -match.next11194: - store { ptr, i64, i64 } %t10, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.7225, i64 20, i64 0 }, ptr %a68 - %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) - %t70 = icmp ne i32 %t69, 0 - br i1 %t70, label %match.arm11195, label %match.next11196 -match.arm11195: - %t71 = load %S.json.Json, ptr %a7 - %t72 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t71) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load %S.json.Json, ptr %a7 - %t75 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t74) - %t76 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a78 - store i32 0, ptr %a79 - %t80 = call i64 @finch_map_slot(ptr %t76, ptr %a78, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a79) - %t81 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t76, i32 0, i32 0 - %t82 = load ptr, ptr %t81 - %t83 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i64 %t80 - %t84 = load i32, ptr %a79 - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %map.new11197, label %map.have11198 -map.new11197: - %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 1 - call void @finch_str_copy(ptr %t86, ptr %a78) - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t87 - br label %map.have11198 -map.have11198: - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t75, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t91) - call void @finch_str_drop(ptr %a73) - br label %match.end11188 -match.next11196: - store { ptr, i64, i64 } %t10, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.7226, i64 22, i64 0 }, ptr %a93 - %t94 = call i32 @finch_str_eq(ptr %a92, ptr %a93) - %t95 = icmp ne i32 %t94, 0 - br i1 %t95, label %match.arm11199, label %match.next11200 -match.arm11199: - %t96 = load %S.json.Json, ptr %a7 - %t97 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t96) - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7227, i64 14, i64 0 }) - store %S.json.Json %t99, ptr %a100 - %t101 = call i64 @finch.json.Json.len(ptr %a100) - %t102 = icmp sgt i64 %t101, 0 - br i1 %t102, label %then11201, label %endif11203 -then11201: - %t103 = call i64 @finch.json.Json.len(ptr %a100) - %t104 = sub i64 %t103, 1 - %t105 = call %S.json.Json @finch.json.Json.at(ptr %a100, i64 %t104) - store %S.json.Json %t105, ptr %a106 - %t107 = call %S.json.Json @finch.json.Json.get(ptr %a106, { ptr, i64, i64 } { ptr @.str.7228, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a106) - store %S.json.Json %t107, ptr %a108 - %t109 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a108, { ptr, i64, i64 } { ptr @.str.7229, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a108) - %t110 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t111 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t111, ptr %a112 - store i32 0, ptr %a113 - %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a113) - %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 - %t116 = load ptr, ptr %t115 - %t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t116, i64 %t114 - %t118 = load i32, ptr %a113 - %t119 = icmp ne i32 %t118, 0 - br i1 %t119, label %map.new11204, label %map.have11205 -map.new11204: - %t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 1 - call void @finch_str_copy(ptr %t120, ptr %a112) - %t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t121 - br label %map.have11205 -map.have11205: - %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - %t123 = load { ptr, i64, i64 }, ptr %t122 - store { ptr, i64, i64 } %t109, ptr %t122 - store { ptr, i64, i64 } %t123, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) - br label %endif11203 -endif11203: - call void @finch.drop.S_json_Json(ptr %a100) - call void @finch_str_drop(ptr %a98) - br label %match.end11188 -match.next11200: - store { ptr, i64, i64 } %t10, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.7230, i64 20, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br i1 %t129, label %match.arm11206, label %match.next11207 -match.arm11206: - %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 %then11208, label %endif11210 -then11208: - %t138 = load { ptr, i64, i64 }, ptr %a132 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t138) - br label %endif11210 -endif11210: - call void @finch_str_drop(ptr %a132) - br label %match.end11188 -match.next11207: - store { ptr, i64, i64 } %t10, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.7231, i64 21, i64 0 }, ptr %a140 - %t141 = call i32 @finch_str_eq(ptr %a139, ptr %a140) - %t142 = icmp ne i32 %t141, 0 - br i1 %t142, label %match.arm11211, label %match.next11212 -match.arm11211: - %t143 = load %S.json.Json, ptr %a7 - %t144 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t143) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t147 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t147, ptr %a148 - %t149 = call i64 @finch_map_find(ptr %t146, ptr %a148, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t150 = icmp sge i64 %t149, 0 - br i1 %t150, label %remove.hit11213, label %remove.end11214 -remove.hit11213: - %t151 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t146, i32 0, i32 0 - %t152 = load ptr, ptr %t151 - %t153 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t152, i64 %t149 - %t154 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 1 - call void @finch_str_drop(ptr %t154) - %t155 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 2 - call void @finch_str_drop(ptr %t155) - call void @finch_map_remove_at(ptr %t146, i64 %t149, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) - br label %remove.end11214 -remove.end11214: - %t156 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t157 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t157, ptr %a158 - %t159 = call i64 @finch_map_find(ptr %t156, ptr %a158, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t160 = icmp sge i64 %t159, 0 - br i1 %t160, label %remove.hit11215, label %remove.end11216 -remove.hit11215: - %t161 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t156, i32 0, i32 0 - %t162 = load ptr, ptr %t161 - %t163 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t162, i64 %t159 - %t164 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 1 - call void @finch_str_drop(ptr %t164) - %t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t165) - call void @finch_map_remove_at(ptr %t156, i64 %t159, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11216 -remove.end11216: - %t166 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t167 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = call i64 @finch_map_find(ptr %t166, ptr %a168, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t170 = icmp sge i64 %t169, 0 - br i1 %t170, label %remove.hit11217, label %remove.end11218 -remove.hit11217: - %t171 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t166, i32 0, i32 0 - %t172 = load ptr, ptr %t171 - %t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t172, i64 %t169 - %t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 1 - call void @finch_str_drop(ptr %t174) - %t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t175) - call void @finch_map_remove_at(ptr %t166, i64 %t169, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11218 -remove.end11218: - %t176 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t176, ptr %a177 - %t178 = load { ptr, i64, i64 }, ptr %a145 - %t179 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t178) - %t180 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7232, i64 3, i64 0 }, %S.json.Json %t180) - store %S.json.Json %t180, ptr %a182 - call void @finch.drop.S_json_Json(ptr %a182) - %t183 = call %S.json.Json @finch.json.new_list() - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7233, i64 11, i64 0 }, %S.json.Json %t183) - store %S.json.Json %t183, ptr %a184 - call void @finch.drop.S_json_Json(ptr %a184) - %t185 = load %S.json.Json, ptr %a177 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7234, i64 31, i64 0 }, %S.json.Json %t185) - call void @finch.drop.S_json_Json(ptr %a177) - call void @finch_str_drop(ptr %a145) - br label %match.end11188 -match.next11212: - store { ptr, i64, i64 } %t10, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.7235, i64 18, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br i1 %t189, label %match.arm11219, label %match.or11221 -match.or11221: - store { ptr, i64, i64 } %t10, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.7236, i64 23, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br i1 %t193, label %match.arm11219, label %match.or11222 -match.or11222: - store { ptr, i64, i64 } %t10, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.7237, i64 23, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %match.arm11219, label %match.or11223 -match.or11223: - store { ptr, i64, i64 } %t10, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.7238, i64 27, i64 0 }, ptr %a199 - %t200 = call i32 @finch_str_eq(ptr %a198, ptr %a199) - %t201 = icmp ne i32 %t200, 0 - br i1 %t201, label %match.arm11219, label %match.or11224 -match.or11224: - store { ptr, i64, i64 } %t10, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.7239, i64 26, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %match.arm11219, label %match.next11220 -match.arm11219: - %t206 = load %S.json.Json, ptr %a7 - %t207 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t206) - store { ptr, i64, i64 } %t207, ptr %a208 - %t209 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7240, i64 8, i64 0 }) - store %S.json.Json %t209, ptr %a210 - %t211 = call %S.json.Json @finch.json.Json.get(ptr %a210, { ptr, i64, i64 } { ptr @.str.7241, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a210) - store %S.json.Json %t211, ptr %a212 - %t213 = call i64 @finch.json.Json.int_or(ptr %a212, i64 0) - call void @finch.drop.S_json_Json(ptr %a212) - %t214 = add i64 %t213, 1 - store i64 %t214, ptr %a215 - %t216 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7242, i64 8, i64 0 }) - store %S.json.Json %t216, ptr %a217 - %t218 = call %S.json.Json @finch.json.Json.get(ptr %a217, { ptr, i64, i64 } { ptr @.str.7243, i64 9, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a217) - store %S.json.Json %t218, ptr %a219 - %t220 = call i64 @finch.json.Json.int_or(ptr %a219, i64 0) - call void @finch.drop.S_json_Json(ptr %a219) - %t221 = add i64 %t220, 1 - store i64 %t221, ptr %a222 - %t223 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t224 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t224, ptr %a225 - %t226 = call i64 @finch_map_find(ptr %t223, ptr %a225, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t227 = icmp sge i64 %t226, 0 - %t228 = xor i1 %t227, true - br i1 %t228, label %then11225, label %endif11227 -then11225: - %t229 = load %S.json.Json, ptr %a9 - %t230 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t229, %S.json.Json %t230) - store %S.json.Json %t230, ptr %a231 - call void @finch.drop.S_json_Json(ptr %a231) - call void @finch_str_drop(ptr %a208) - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -endif11227: - %t232 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t233 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = call i64 @finch_map_find(ptr %t232, ptr %a234, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t236 = icmp slt i64 %t235, 0 - br i1 %t236, label %map.missing11228, label %map.found11229 -map.missing11228: - store { ptr, i64, i64 } zeroinitializer, ptr %a237 - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_buf_str(ptr %a237, ptr %a238, i32 1) - call void @finch_map_missing(ptr @.str.7244, i64 842, ptr %a237) - unreachable -map.found11229: - %t239 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t232, i32 0, i32 0 - %t240 = load ptr, ptr %t239 - %t241 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t240, i64 %t235 - %t242 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t241, i32 0, i32 2 - %t243 = load %S.lsp.Analysis, ptr %t242 - store %S.lsp.Analysis %t243, ptr %a244 - call void @finch.copy.S_lsp_Analysis(ptr %a245, ptr %a244) - %t246 = load %S.lsp.Analysis, ptr %a245 - store %S.lsp.Analysis %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.7245, i64 0, i64 0 }, ptr %a248 - %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t250 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = call i64 @finch_map_find(ptr %t249, ptr %a251, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t253 = icmp sge i64 %t252, 0 - br i1 %t253, label %then11230, label %endif11232 -then11230: - %t254 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t255 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t255, ptr %a256 - %t257 = call i64 @finch_map_find(ptr %t254, ptr %a256, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t258 = icmp slt i64 %t257, 0 - br i1 %t258, label %map.missing11233, label %map.found11234 -map.missing11233: - store { ptr, i64, i64 } zeroinitializer, ptr %a259 - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_buf_str(ptr %a259, ptr %a260, i32 1) - call void @finch_map_missing(ptr @.str.7246, i64 845, ptr %a259) - unreachable -map.found11234: - %t261 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t254, i32 0, i32 0 - %t262 = load ptr, ptr %t261 - %t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t262, i64 %t257 - %t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t263, i32 0, i32 2 - %t265 = load { ptr, i64, i64 }, ptr %t264 - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_copy(ptr %a267, ptr %a266) - %t268 = load { ptr, i64, i64 }, ptr %a267 - %t269 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t268, ptr %a248 - store { ptr, i64, i64 } %t269, ptr %a270 - call void @finch_str_drop(ptr %a270) - br label %endif11232 -endif11232: - %t271 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t271, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.7247, i64 18, i64 0 }, ptr %a273 - %t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273) - %t275 = icmp ne i32 %t274, 0 - br i1 %t275, label %match.arm11236, label %match.next11237 -match.arm11236: - %t276 = load %S.json.Json, ptr %a9 - %t277 = load %S.lsp.Analysis, ptr %a247 - %t278 = load { ptr, i64, i64 }, ptr %a208 - %t279 = load i64, ptr %a215 - %t280 = load i64, ptr %a222 - %t281 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t277, { ptr, i64, i64 } %t278, i64 %t279, i64 %t280) - call void @finch.lsp.reply(%S.json.Json %t276, %S.json.Json %t281) - store %S.json.Json %t281, ptr %a282 - call void @finch.drop.S_json_Json(ptr %a282) - br label %match.end11235 -match.next11237: - store { ptr, i64, i64 } %t271, ptr %a283 - store { ptr, i64, i64 } { ptr @.str.7248, i64 23, i64 0 }, ptr %a284 - %t285 = call i32 @finch_str_eq(ptr %a283, ptr %a284) - %t286 = icmp ne i32 %t285, 0 - br i1 %t286, label %match.arm11238, label %match.next11239 -match.arm11238: - %t287 = load %S.json.Json, ptr %a9 - %t288 = load %S.lsp.Analysis, ptr %a247 - %t289 = load { ptr, i64, i64 }, ptr %a208 - %t290 = load i64, ptr %a215 - %t291 = load i64, ptr %a222 - %t292 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t288, { ptr, i64, i64 } %t289, i64 %t290, i64 %t291) - call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t292) - store %S.json.Json %t292, ptr %a293 - call void @finch.drop.S_json_Json(ptr %a293) - br label %match.end11235 -match.next11239: - store { ptr, i64, i64 } %t271, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.7249, i64 23, i64 0 }, ptr %a295 - %t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295) - %t297 = icmp ne i32 %t296, 0 - br i1 %t297, label %match.arm11240, label %match.next11241 -match.arm11240: - %t298 = load %S.json.Json, ptr %a9 - %t299 = load %S.lsp.Analysis, ptr %a247 - %t300 = load { ptr, i64, i64 }, ptr %a248 - %t301 = load { ptr, i64, i64 }, ptr %a208 - %t302 = load i64, ptr %a215 - %t303 = load i64, ptr %a222 - %t304 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t299, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t301, i64 %t302, i64 %t303) - call void @finch.lsp.reply(%S.json.Json %t298, %S.json.Json %t304) - store %S.json.Json %t304, ptr %a305 - call void @finch.drop.S_json_Json(ptr %a305) - br label %match.end11235 -match.next11241: - store { ptr, i64, i64 } %t271, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.7250, i64 27, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br i1 %t309, label %match.arm11242, label %match.next11243 -match.arm11242: - %t310 = load %S.json.Json, ptr %a9 - %t311 = load %S.lsp.Analysis, ptr %a247 - %t312 = load { ptr, i64, i64 }, ptr %a208 - %t313 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t311, { ptr, i64, i64 } %t312) - call void @finch.lsp.reply(%S.json.Json %t310, %S.json.Json %t313) - store %S.json.Json %t313, ptr %a314 - call void @finch.drop.S_json_Json(ptr %a314) - br label %match.end11235 -match.next11243: - br label %match.arm11244 -match.arm11244: - %t315 = load %S.json.Json, ptr %a9 - %t316 = load %S.lsp.Analysis, ptr %a247 - %t317 = load { ptr, i64, i64 }, ptr %a248 - %t318 = load { ptr, i64, i64 }, ptr %a208 - %t319 = load i64, ptr %a215 - %t320 = load i64, ptr %a222 - %t321 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t316, { ptr, i64, i64 } %t317, { ptr, i64, i64 } %t318, i64 %t319, i64 %t320) - call void @finch.lsp.reply(%S.json.Json %t315, %S.json.Json %t321) - store %S.json.Json %t321, ptr %a322 - call void @finch.drop.S_json_Json(ptr %a322) - br label %match.end11235 -match.end11235: - call void @finch_str_drop(ptr %a248) - call void @finch.drop.S_lsp_Analysis(ptr %a247) - call void @finch_str_drop(ptr %a208) - br label %match.end11188 -match.next11220: - br label %match.arm11246 -match.arm11246: - %t323 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 - %t324 = load i32, ptr %t323 - %t325 = icmp ne i32 %t324, 0 - br i1 %t325, label %then11248, label %endif11250 -then11248: - %t326 = load %S.json.Json, ptr %a9 - %t327 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t326, %S.json.Json %t327) - store %S.json.Json %t327, ptr %a328 - call void @finch.drop.S_json_Json(ptr %a328) - br label %endif11250 -endif11250: - br label %match.end11188 -match.end11188: - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.map_str_S_lsp_Analysis(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond11256 -n.cond11256: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body11257, label %n.end11258 -n.body11257: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live11259, label %entry.next11260 -entry.live11259: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t13) - br label %entry.next11260 -entry.next11260: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond11256 -n.end11258: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Server(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -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 - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lsp.Server, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - call void @finch.host.binaryStdio() - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_copy(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - %t6 = insertvalue %S.lsp.Server zeroinitializer, { ptr, i64, i64 } %t5, 0 - %t7 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.7251, i64 11, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - %t22 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t21, 1 - store %S.lsp.Server %t22, ptr %a23 - br label %while.cond11251 -while.cond11251: - br label %while.body11252 -while.body11252: - %t24 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() - %t25 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 0 - %t26 = xor i1 %t25, true - %t27 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 2 - %t28 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 1 - br i1 %t26, label %or.failed11254, label %or.ok11255 -or.failed11254: - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %while.end11253 -or.ok11255: - store %S.json.Json %t28, ptr %a30 - %t31 = load %S.json.Json, ptr %a30 - call void @finch.lsp.Server.answer(ptr %a23, %S.json.Json %t31) - call void @finch.drop.S_json_Json(ptr %a30) - br label %while.cond11251 -while.end11253: - %t32 = getelementptr inbounds %S.lsp.Server, ptr %a23, i32 0, i32 1 - %t33 = load { ptr, i64, i64 }, ptr %t32 - call void @finch.host.removeTree({ ptr, i64, i64 } %t33) - call void @finch.drop.S_lsp_Server(ptr %a23) - ret i64 0 -} - -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.arm11262, label %match.or11264 -match.or11264: - %t4 = icmp eq i32 %t2, 5 - br i1 %t4, label %match.arm11262, label %match.next11263 -match.arm11262: - %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.from11265 -match.from11265: - br label %match.end11261 -match.next11263: - %t8 = icmp eq i32 %t2, 3 - br i1 %t8, label %match.arm11266, label %match.next11267 -match.arm11266: - %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.from11268 -match.from11268: - br label %match.end11261 -match.next11267: - br label %match.arm11269 -match.arm11269: - br label %match.from11271 -match.from11271: - br label %match.end11261 -match.end11261: - %t12 = phi i64 [ %t7, %match.from11265 ], [ %t11, %match.from11268 ], [ 0, %match.from11271 ] - 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.from11272 -logic.from11272: - br i1 %t4, label %logic.rhs11273, label %logic.end11274 -logic.rhs11273: - %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.cond11275 -find.cond11275: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body11276, label %find.end11279 -find.body11276: - %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.hit11277, label %find.next11278 -find.hit11277: - store i64 %t12, ptr %a8 - br label %find.end11279 -find.next11278: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond11275 -find.end11279: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - br label %logic.rend11280 -logic.rend11280: - br label %logic.end11274 -logic.end11274: - %t23 = phi i1 [ false, %logic.from11272 ], [ %t22, %logic.rend11280 ] - ret i1 %t23 -} - -define internal void @finch.copy.arr_S_json_Json(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond11294 -n.cond11294: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body11295, label %n.end11296 -n.body11295: - %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.cond11294 -n.end11296: - ret void -} - -define internal void @finch.copy.S_json_Json(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.json.Json, ptr %src - store %S.json.Json %t1, ptr %dst - %t2 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 3 - %t3 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 3 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_json_Json(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 5 - %t7 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - ret void -} - -define internal %S.json.Json @finch.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 %then11281, label %endif11283 -then11281: - %t5 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t5 -endif11283: - %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.cond11284 -find.cond11284: - %t13 = load i64, ptr %a12 - %t14 = icmp slt i64 %t13, %t10 - br i1 %t14, label %find.body11285, label %find.end11288 -find.body11285: - %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.hit11286, label %find.next11287 -find.hit11286: - store i64 %t13, ptr %a9 - br label %find.end11288 -find.next11287: - %t21 = add i64 %t13, 1 - store i64 %t21, ptr %a12 - br label %find.cond11284 -find.end11288: - %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 %then11289, label %endif11291 -then11289: - %t26 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t26 -endif11291: - %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 %range11292, label %inrange11293 -range11292: - call void @finch_panic_index(ptr @.str.7252, i64 84, i64 %t28, i64 %t30) - unreachable -inrange11293: - %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.from11297 -logic.from11297: - br i1 %t4, label %logic.end11299, label %logic.rhs11298 -logic.rhs11298: - %t5 = load i64, ptr %a1 - %t6 = icmp slt i64 %t5, 0 - br label %logic.rend11300 -logic.rend11300: - br label %logic.end11299 -logic.end11299: - %t7 = phi i1 [ true, %logic.from11297 ], [ %t6, %logic.rend11300 ] - br label %logic.from11301 -logic.from11301: - br i1 %t7, label %logic.end11303, label %logic.rhs11302 -logic.rhs11302: - %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.rend11304 -logic.rend11304: - br label %logic.end11303 -logic.end11303: - %t13 = phi i1 [ true, %logic.from11301 ], [ %t12, %logic.rend11304 ] - br i1 %t13, label %then11305, label %endif11307 -then11305: - %t14 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t14 -endif11307: - %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 %range11308, label %inrange11309 -range11308: - call void @finch_panic_index(ptr @.str.7253, i64 92, i64 %t16, i64 %t18) - unreachable -inrange11309: - %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 %then11310, label %endif11312 -then11310: - %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 -endif11312: - %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 %then11313, label %endif11315 -then11313: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 - %t6 = load double, ptr %t5 - ret double %t6 -endif11315: - %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 %then11316, label %endif11318 -then11316: - %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 -endif11318: - %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 %then11319, label %endif11321 -then11319: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 - %t6 = load i1, ptr %t5 - ret i1 %t6 -endif11321: - %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 - %a35 = alloca %S.json.Json, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.json.Json, align 16 - %a50 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %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.cond11322 -find.cond11322: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t7 - br i1 %t11, label %find.body11323, label %find.end11326 -find.body11323: - %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.hit11324, label %find.next11325 -find.hit11324: - store i64 %t10, ptr %a6 - br label %find.end11326 -find.next11325: - %t18 = add i64 %t10, 1 - store i64 %t18, ptr %a9 - br label %find.cond11322 -find.end11326: - %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 %then11327, label %endif11329 -then11327: - %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 %range11330, label %inrange11331 -range11330: - call void @finch_panic_index(ptr @.str.7254, i64 140, i64 %t25, i64 %t27) - unreachable -inrange11331: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds %S.json.Json, ptr %t29, i64 %t25 - store %S.json.Json %t23, ptr %a31 - call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) - %t33 = load %S.json.Json, ptr %a32 - %t34 = load %S.json.Json, ptr %t30 - store %S.json.Json %t33, ptr %t30 - store %S.json.Json %t34, ptr %a35 - call void @finch.drop.S_json_Json(ptr %a35) - ret void -endif11329: - %t36 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_copy(ptr %a40, ptr %a39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - %t42 = load i64, ptr %t37 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t36 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } %t41, ptr %t45 - store i64 %t43, ptr %t37 - %t46 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load %S.json.Json, ptr %a2 - store %S.json.Json %t48, ptr %a49 - call void @finch.copy.S_json_Json(ptr %a50, ptr %a49) - %t51 = load %S.json.Json, ptr %a50 - %t52 = load i64, ptr %t47 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t46, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t46 - %t55 = getelementptr inbounds %S.json.Json, ptr %t54, i64 %t52 - store %S.json.Json %t51, ptr %t55 - store i64 %t53, ptr %t47 - ret void -} - -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.7255, 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.cond11332 -each.cond11332: - %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.body11333, label %each.end11335 -each.body11333: - %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 %then11336, label %else11337 -then11336: - %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.7256, i64 2, i64 0 }, ptr %t27 - store i64 %t25, ptr %t23 - br label %endif11338 -else11337: - %t28 = load i8, ptr %a17 - %t29 = icmp eq i8 %t28, 92 - br i1 %t29, label %then11339, label %else11340 -then11339: - %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.7257, i64 2, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif11341 -else11340: - %t35 = load i8, ptr %a17 - %t36 = icmp eq i8 %t35, 10 - br i1 %t36, label %then11342, label %else11343 -then11342: - %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.7258, i64 2, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - br label %endif11344 -else11343: - %t42 = load i8, ptr %a17 - %t43 = icmp eq i8 %t42, 13 - br i1 %t43, label %then11345, label %else11346 -then11345: - %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.7259, i64 2, i64 0 }, ptr %t48 - store i64 %t46, ptr %t44 - br label %endif11347 -else11346: - %t49 = load i8, ptr %a17 - %t50 = icmp eq i8 %t49, 9 - br i1 %t50, label %then11348, label %else11349 -then11348: - %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.7260, i64 2, i64 0 }, ptr %t55 - store i64 %t53, ptr %t51 - br label %endif11350 -else11349: - %t56 = load i64, ptr %a20 - %t57 = icmp slt i64 %t56, 32 - br i1 %t57, label %then11351, label %else11352 -then11351: - %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.7261, i64 4, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a20 - %t68 = srem i64 %t67, 16 - %t69 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t68) - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - %t76 = load i64, ptr %t58 - %t77 = add i64 %t76, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t77, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t78 = load ptr, ptr %a8 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 %t76 - store { ptr, i64, i64 } %t75, ptr %t79 - store i64 %t77, ptr %t58 - br label %endif11353 -else11352: - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t81 = load i8, ptr %a17 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load i64, ptr %t80 - %t85 = add i64 %t84, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t85, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t86 = load ptr, ptr %a8 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 %t84 - store { ptr, i64, i64 } %t83, ptr %t87 - store i64 %t85, ptr %t80 - br label %endif11353 -endif11353: - br label %endif11350 -endif11350: - br label %endif11347 -endif11347: - br label %endif11344 -endif11344: - br label %endif11341 -endif11341: - br label %endif11338 -endif11338: - br label %each.step11334 -each.step11334: - %t88 = load i64, ptr %a9 - %t89 = add i64 %t88, 1 - store i64 %t89, ptr %a9 - br label %each.cond11332 -each.end11335: - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t91 = load i64, ptr %t90 - %t92 = add i64 %t91, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t93 = load ptr, ptr %a8 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 - store { ptr, i64, i64 } { ptr @.str.7262, i64 1, i64 0 }, ptr %t94 - store i64 %t92, ptr %t90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7263, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a8, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - call void @finch.drop.arr_str(ptr %a8) - ret { ptr, i64, i64 } %t98 -} - -define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { -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.7264, 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 %range11354, label %inrange11355 -range11354: - call void @finch_panic_index(ptr @.str.7265, i64 175, i64 %t3, i64 %t5) - unreachable -inrange11355: - %t7 = extractvalue { ptr, i64, i64 } %t4, 0 - %t8 = getelementptr inbounds i8, ptr %t7, i64 %t3 - %t9 = load i8, ptr %t8 - call void @finch_str_from_char(ptr %a10, i8 signext %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t11 -} - -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.from11356 -logic.from11356: - br i1 %t6, label %logic.rhs11357, label %logic.end11358 -logic.rhs11357: - %t7 = load double, ptr %a1 - %t8 = fneg double 1000000000000000.0 - %t9 = fcmp ogt double %t7, %t8 - br label %logic.rend11359 -logic.rend11359: - br label %logic.end11358 -logic.end11358: - %t10 = phi i1 [ false, %logic.from11356 ], [ %t9, %logic.rend11359 ] - br label %logic.from11360 -logic.from11360: - br i1 %t10, label %logic.rhs11361, label %logic.end11362 -logic.rhs11361: - %t11 = load double, ptr %a1 - %t12 = fcmp olt double %t11, 1000000000000000.0 - br label %logic.rend11363 -logic.rend11363: - br label %logic.end11362 -logic.end11362: - %t13 = phi i1 [ false, %logic.from11360 ], [ %t12, %logic.rend11363 ] - br i1 %t13, label %then11364, label %endif11366 -then11364: - %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 -endif11366: - %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 - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca i64, align 16 - %a114 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a203 = alloca i64, align 16 - %a204 = alloca %S.json.Json, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store ptr %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7266, i64 0, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7267, i64 0, i64 0 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.7268, i64 1, i64 0 }, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.7269, 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 %then11367, label %endif11369 -then11367: - %t12 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7270, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a3 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.7271, i64 2, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif11369 -endif11369: - %t24 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 - %t25 = load i32, ptr %t24 - %t26 = icmp eq i32 %t25, 0 - br i1 %t26, label %match.arm11371, label %match.next11372 -match.arm11371: - %t27 = load ptr, ptr %a4 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic11373, label %ok11374 -panic11373: - call void @finch_panic(ptr @.str.7272, i64 200, ptr @.str.7273) - unreachable -ok11374: - %t29 = getelementptr inbounds %S.json.Writer, ptr %t27, i32 0, i32 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 - %t31 = load i64, ptr %t30 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t29, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t29 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 - store { ptr, i64, i64 } { ptr @.str.7274, i64 4, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %match.end11370 -match.next11372: - %t35 = icmp eq i32 %t25, 1 - br i1 %t35, label %match.arm11375, label %match.next11376 -match.arm11375: - %t36 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 - %t37 = load i1, ptr %t36 - br i1 %t37, label %then11377, label %else11378 -then11377: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic11380, label %ok11381 -panic11380: - call void @finch_panic(ptr @.str.7275, i64 203, ptr @.str.7276) - unreachable -ok11381: - %t40 = getelementptr inbounds %S.json.Writer, ptr %t38, i32 0, i32 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t40 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } { ptr @.str.7277, i64 4, i64 0 }, ptr %t45 - store i64 %t43, ptr %t41 - br label %endif11379 -else11378: - %t46 = load ptr, ptr %a4 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic11382, label %ok11383 -panic11382: - call void @finch_panic(ptr @.str.7278, i64 205, ptr @.str.7279) - unreachable -ok11383: - %t48 = getelementptr inbounds %S.json.Writer, ptr %t46, i32 0, i32 0 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load i64, ptr %t49 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t51, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t48 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t50 - store { ptr, i64, i64 } { ptr @.str.7280, i64 5, i64 0 }, ptr %t53 - store i64 %t51, ptr %t49 - br label %endif11379 -endif11379: - br label %match.end11370 -match.next11376: - %t54 = icmp eq i32 %t25, 2 - br i1 %t54, label %match.arm11384, label %match.next11385 -match.arm11384: - %t55 = load ptr, ptr %a4 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic11386, label %ok11387 -panic11386: - call void @finch_panic(ptr @.str.7281, i64 208, ptr @.str.7282) - unreachable -ok11387: - %t57 = getelementptr inbounds %S.json.Writer, ptr %t55, i32 0, i32 0 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 - %t60 = load double, ptr %t59 - %t61 = call { ptr, i64, i64 } @finch.json.number_text(double %t60) - %t62 = load i64, ptr %t58 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t57 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t58 - br label %match.end11370 -match.next11385: - %t66 = icmp eq i32 %t25, 3 - br i1 %t66, label %match.arm11388, label %match.next11389 -match.arm11388: - %t67 = load ptr, ptr %a4 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic11390, label %ok11391 -panic11390: - call void @finch_panic(ptr @.str.7283, i64 209, ptr @.str.7284) - unreachable -ok11391: - %t69 = getelementptr inbounds %S.json.Writer, ptr %t67, i32 0, i32 0 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 - %t71 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 - %t72 = load { ptr, i64, i64 }, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t72) - %t74 = load i64, ptr %t70 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t69, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t69 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t70 - br label %match.end11370 -match.next11389: - %t78 = icmp eq i32 %t25, 4 - br i1 %t78, label %match.arm11392, label %match.next11393 -match.arm11392: - %t79 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load i64, ptr %t80 - %t82 = icmp eq i64 %t81, 0 - br i1 %t82, label %then11394, label %endif11396 -then11394: - %t83 = load ptr, ptr %a4 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic11397, label %ok11398 -panic11397: - call void @finch_panic(ptr @.str.7285, i64 212, ptr @.str.7286) - unreachable -ok11398: - %t85 = getelementptr inbounds %S.json.Writer, ptr %t83, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t85, i64 %t88, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t85 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i64 %t87 - store { ptr, i64, i64 } { ptr @.str.7287, i64 2, i64 0 }, ptr %t90 - store i64 %t88, ptr %t86 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11396: - %t91 = load ptr, ptr %a4 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic11399, label %ok11400 -panic11399: - call void @finch_panic(ptr @.str.7288, i64 215, ptr @.str.7289) - unreachable -ok11400: - %t93 = getelementptr inbounds %S.json.Writer, ptr %t91, i32 0, i32 0 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7290, i64 1, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - %t100 = load i64, ptr %t94 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %t93 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100 - store { ptr, i64, i64 } %t99, ptr %t103 - store i64 %t101, ptr %t94 - %t104 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a105 - br label %each.cond11401 -each.cond11401: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body11402, label %each.end11404 -each.body11402: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.json.Json, ptr %t110, i64 %t108 - %t112 = load %S.json.Json, ptr %t111 - store i64 %t108, ptr %a113 - store %S.json.Json %t112, ptr %a114 - %t115 = load i64, ptr %a113 - %t116 = icmp sgt i64 %t115, 0 - br i1 %t116, label %then11405, label %endif11407 -then11405: - %t117 = load ptr, ptr %a4 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic11408, label %ok11409 -panic11408: - call void @finch_panic(ptr @.str.7291, i64 218, ptr @.str.7292) - unreachable -ok11409: - %t119 = getelementptr inbounds %S.json.Writer, ptr %t117, i32 0, i32 0 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a7 - %t122 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t121, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a123 - %t127 = load i64, ptr %t120 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %t119, i64 %t128, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %t119 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t127 - store { ptr, i64, i64 } %t126, ptr %t130 - store i64 %t128, ptr %t120 - br label %endif11407 -endif11407: - %t131 = load ptr, ptr %a4 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic11410, label %ok11411 -panic11410: - call void @finch_panic(ptr @.str.7293, i64 220, ptr @.str.7294) - unreachable -ok11411: - %t133 = getelementptr inbounds %S.json.Writer, ptr %t131, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load i64, ptr %t134 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t133 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 - store { ptr, i64, i64 } %t138, ptr %t142 - store i64 %t140, ptr %t134 - %t143 = load %S.json.Json, ptr %a114 - %t144 = load { ptr, i64, i64 }, ptr %a2 - %t145 = load { ptr, i64, i64 }, ptr %a6 - %t146 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t143, { ptr, i64, i64 } %t144, { ptr, i64, i64 } %t145, ptr %t146) - br label %each.step11403 -each.step11403: - %t147 = load i64, ptr %a105 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a105 - br label %each.cond11401 -each.end11404: - %t149 = load ptr, ptr %a4 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic11412, label %ok11413 -panic11412: - call void @finch_panic(ptr @.str.7295, i64 223, ptr @.str.7296) - unreachable -ok11413: - %t151 = getelementptr inbounds %S.json.Writer, ptr %t149, i32 0, i32 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load { ptr, i64, i64 }, ptr %a5 - %t154 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t153, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.7297, i64 1, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load i64, ptr %t152 - %t165 = add i64 %t164, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t165, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t166 = load ptr, ptr %t151 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i64 %t164 - store { ptr, i64, i64 } %t163, ptr %t167 - store i64 %t165, ptr %t152 - br label %match.end11370 -match.next11393: - %t168 = icmp eq i32 %t25, 5 - br i1 %t168, label %match.arm11414, label %match.next11415 -match.arm11414: - %t169 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 0 - br i1 %t172, label %then11416, label %endif11418 -then11416: - %t173 = load ptr, ptr %a4 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic11419, label %ok11420 -panic11419: - call void @finch_panic(ptr @.str.7298, i64 227, ptr @.str.7299) - unreachable -ok11420: - %t175 = getelementptr inbounds %S.json.Writer, ptr %t173, i32 0, i32 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1 - %t177 = load i64, ptr %t176 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t175, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t175 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177 - store { ptr, i64, i64 } { ptr @.str.7300, i64 2, i64 0 }, ptr %t180 - store i64 %t178, ptr %t176 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11418: - %t181 = load ptr, ptr %a4 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic11421, label %ok11422 -panic11421: - call void @finch_panic(ptr @.str.7301, i64 230, ptr @.str.7302) - unreachable -ok11422: - %t183 = getelementptr inbounds %S.json.Writer, ptr %t181, i32 0, i32 0 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7303, i64 1, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a186 - %t190 = load i64, ptr %t184 - %t191 = add i64 %t190, 1 - call void @finch_arr_reserve(ptr %t183, i64 %t191, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t192 = load ptr, ptr %t183 - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190 - store { ptr, i64, i64 } %t189, ptr %t193 - store i64 %t191, ptr %t184 - %t194 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a195 - br label %each.cond11423 -each.cond11423: - %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t197 = load i64, ptr %t196 - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, %t197 - br i1 %t199, label %each.body11424, label %each.end11426 -each.body11424: - %t200 = load ptr, ptr %t194 - %t201 = getelementptr inbounds %S.json.Json, ptr %t200, i64 %t198 - %t202 = load %S.json.Json, ptr %t201 - store i64 %t198, ptr %a203 - store %S.json.Json %t202, ptr %a204 - %t205 = load i64, ptr %a203 - %t206 = icmp sgt i64 %t205, 0 - br i1 %t206, label %then11427, label %endif11429 -then11427: - %t207 = load ptr, ptr %a4 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic11430, label %ok11431 -panic11430: - call void @finch_panic(ptr @.str.7304, i64 233, ptr @.str.7305) - unreachable -ok11431: - %t209 = getelementptr inbounds %S.json.Writer, ptr %t207, i32 0, i32 0 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - %t211 = load { ptr, i64, i64 }, ptr %a7 - %t212 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a213 - %t217 = load i64, ptr %t210 - %t218 = add i64 %t217, 1 - call void @finch_arr_reserve(ptr %t209, i64 %t218, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t219 = load ptr, ptr %t209 - %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %t219, i64 %t217 - store { ptr, i64, i64 } %t216, ptr %t220 - store i64 %t218, ptr %t210 - br label %endif11429 -endif11429: - %t221 = load ptr, ptr %a4 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic11432, label %ok11433 -panic11432: - call void @finch_panic(ptr @.str.7306, i64 235, ptr @.str.7307) - unreachable -ok11433: - %t223 = getelementptr inbounds %S.json.Writer, ptr %t221, i32 0, i32 0 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load { ptr, i64, i64 }, ptr %a6 - %t226 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 - %t227 = load i64, ptr %a203 - %t228 = load { ptr, i64, i64 }, ptr %t226 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 %t227, %t229 - br i1 %t230, label %range11434, label %inrange11435 -range11434: - call void @finch_panic_index(ptr @.str.7308, i64 235, i64 %t227, i64 %t229) - unreachable -inrange11435: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t227 - %t233 = load { ptr, i64, i64 }, ptr %t232 - %t234 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t225, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t239, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = load i64, ptr %t224 - %t247 = add i64 %t246, 1 - call void @finch_arr_reserve(ptr %t223, i64 %t247, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t248 = load ptr, ptr %t223 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t246 - store { ptr, i64, i64 } %t245, ptr %t249 - store i64 %t247, ptr %t224 - %t250 = load %S.json.Json, ptr %a204 - %t251 = load { ptr, i64, i64 }, ptr %a2 - %t252 = load { ptr, i64, i64 }, ptr %a6 - %t253 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t250, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252, ptr %t253) - br label %each.step11425 -each.step11425: - %t254 = load i64, ptr %a195 - %t255 = add i64 %t254, 1 - store i64 %t255, ptr %a195 - br label %each.cond11423 -each.end11426: - %t256 = load ptr, ptr %a4 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic11436, label %ok11437 -panic11436: - call void @finch_panic(ptr @.str.7309, i64 238, ptr @.str.7310) - unreachable -ok11437: - %t258 = getelementptr inbounds %S.json.Writer, ptr %t256, i32 0, i32 0 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %a5 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.7311, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %t258, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %t258 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - br label %match.end11370 -match.next11415: - br i1 true, label %panic11438, label %ok11439 -panic11438: - call void @finch_panic(ptr @.str.7312, i64 199, ptr @.str.7313) - unreachable -ok11439: - unreachable -match.end11370: - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.S_json_Writer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Writer, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -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.7314, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7315, 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.7316, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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.7317, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.7318, 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.7319, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 1, ptr %a2 - store i64 1, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic11440, label %ok11441 -panic11440: - call void @finch_panic(ptr @.str.7320, i64 268, ptr @.str.7321) - unreachable -ok11441: - %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.cond11442 -for.cond11442: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body11443, label %for.end11445 -for.body11443: - %t11 = load i64, ptr %a8 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11446, label %ok11447 -panic11446: - call void @finch_panic(ptr @.str.7322, i64 269, ptr @.str.7323) - unreachable -ok11447: - %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.from11448 -logic.from11448: - br i1 %t17, label %logic.rhs11449, label %logic.end11450 -logic.rhs11449: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic11451, label %ok11452 -panic11451: - call void @finch_panic(ptr @.str.7324, i64 269, ptr @.str.7325) - unreachable -ok11452: - %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 %range11453, label %inrange11454 -range11453: - call void @finch_panic_index(ptr @.str.7326, i64 269, i64 %t21, i64 %t23) - unreachable -inrange11454: - %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.rend11455 -logic.rend11455: - br label %logic.end11450 -logic.end11450: - %t29 = phi i1 [ false, %logic.from11448 ], [ %t28, %logic.rend11455 ] - br i1 %t29, label %then11456, label %else11457 -then11456: - %t30 = load i64, ptr %a2 - %t31 = add i64 %t30, 1 - store i64 %t31, ptr %a2 - store i64 1, ptr %a3 - br label %endif11458 -else11457: - %t32 = load i64, ptr %a3 - %t33 = add i64 %t32, 1 - store i64 %t33, ptr %a3 - br label %endif11458 -endif11458: - br label %for.step11444 -for.step11444: - %t34 = load i64, ptr %a8 - %t35 = add i64 %t34, 1 - store i64 %t35, ptr %a8 - br label %for.cond11442 -for.end11445: - %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.7327, i64 5, i64 0 }, ptr %a40 - store { ptr, i64, i64 } %t38, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.7328, i64 9, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a50, i64 %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t48, ptr %a55 - call void @finch_str_drop(ptr %a55) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a52 - ret { ptr, i64, i64 } %t57 -} - -define internal i8 @finch.json.peek(ptr %p0) { -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 %panic11459, label %ok11460 -panic11459: - call void @finch_panic(ptr @.str.7329, i64 280, ptr @.str.7330) - unreachable -ok11460: - %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 %panic11461, label %ok11462 -panic11461: - call void @finch_panic(ptr @.str.7331, i64 280, ptr @.str.7332) - unreachable -ok11462: - %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 %then11463, label %endif11465 -then11463: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11466, label %ok11467 -panic11466: - call void @finch_panic(ptr @.str.7333, i64 281, ptr @.str.7334) - unreachable -ok11467: - %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 %panic11468, label %ok11469 -panic11468: - call void @finch_panic(ptr @.str.7335, i64 281, ptr @.str.7336) - unreachable -ok11469: - %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 %range11470, label %inrange11471 -range11470: - call void @finch_panic_index(ptr @.str.7337, i64 281, i64 %t18, i64 %t20) - unreachable -inrange11471: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 - %t24 = load i8, ptr %t23 - ret i8 %t24 -endif11465: - %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.cond11472 -while.cond11472: - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11475, label %ok11476 -panic11475: - call void @finch_panic(ptr @.str.7338, i64 287, ptr @.str.7339) - unreachable -ok11476: - %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 %panic11477, label %ok11478 -panic11477: - call void @finch_panic(ptr @.str.7340, i64 287, ptr @.str.7341) - unreachable -ok11478: - %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.from11479 -logic.from11479: - br i1 %t11, label %logic.rhs11480, label %logic.end11481 -logic.rhs11480: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11482, label %ok11483 -panic11482: - call void @finch_panic(ptr @.str.7342, i64 287, ptr @.str.7343) - unreachable -ok11483: - %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 %panic11484, label %ok11485 -panic11484: - call void @finch_panic(ptr @.str.7344, i64 287, ptr @.str.7345) - unreachable -ok11485: - %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 %range11486, label %inrange11487 -range11486: - call void @finch_panic_index(ptr @.str.7346, i64 287, i64 %t18, i64 %t20) - unreachable -inrange11487: - %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.from11488 -logic.from11488: - br i1 %t25, label %logic.end11490, label %logic.rhs11489 -logic.rhs11489: - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic11491, label %ok11492 -panic11491: - call void @finch_panic(ptr @.str.7347, i64 287, ptr @.str.7348) - unreachable -ok11492: - %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 %panic11493, label %ok11494 -panic11493: - call void @finch_panic(ptr @.str.7349, i64 287, ptr @.str.7350) - unreachable -ok11494: - %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 %range11495, label %inrange11496 -range11495: - call void @finch_panic_index(ptr @.str.7351, i64 287, i64 %t32, i64 %t34) - unreachable -inrange11496: - %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.rend11497 -logic.rend11497: - br label %logic.end11490 -logic.end11490: - %t40 = phi i1 [ true, %logic.from11488 ], [ %t39, %logic.rend11497 ] - br label %logic.from11498 -logic.from11498: - br i1 %t40, label %logic.end11500, label %logic.rhs11499 -logic.rhs11499: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic11501, label %ok11502 -panic11501: - call void @finch_panic(ptr @.str.7352, i64 287, ptr @.str.7353) - unreachable -ok11502: - %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 %panic11503, label %ok11504 -panic11503: - call void @finch_panic(ptr @.str.7354, i64 287, ptr @.str.7355) - unreachable -ok11504: - %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 %range11505, label %inrange11506 -range11505: - call void @finch_panic_index(ptr @.str.7356, i64 287, i64 %t47, i64 %t49) - unreachable -inrange11506: - %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.rend11507 -logic.rend11507: - br label %logic.end11500 -logic.end11500: - %t55 = phi i1 [ true, %logic.from11498 ], [ %t54, %logic.rend11507 ] - br label %logic.from11508 -logic.from11508: - br i1 %t55, label %logic.end11510, label %logic.rhs11509 -logic.rhs11509: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic11511, label %ok11512 -panic11511: - call void @finch_panic(ptr @.str.7357, i64 287, ptr @.str.7358) - unreachable -ok11512: - %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 %panic11513, label %ok11514 -panic11513: - call void @finch_panic(ptr @.str.7359, i64 287, ptr @.str.7360) - unreachable -ok11514: - %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 %range11515, label %inrange11516 -range11515: - call void @finch_panic_index(ptr @.str.7361, i64 287, i64 %t62, i64 %t64) - unreachable -inrange11516: - %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.rend11517 -logic.rend11517: - br label %logic.end11510 -logic.end11510: - %t70 = phi i1 [ true, %logic.from11508 ], [ %t69, %logic.rend11517 ] - br label %logic.rend11518 -logic.rend11518: - br label %logic.end11481 -logic.end11481: - %t71 = phi i1 [ false, %logic.from11479 ], [ %t70, %logic.rend11518 ] - br i1 %t71, label %while.body11473, label %while.end11474 -while.body11473: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic11519, label %ok11520 -panic11519: - call void @finch_panic(ptr @.str.7362, i64 288, ptr @.str.7363) - unreachable -ok11520: - %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.cond11472 -while.end11474: - 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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11521, label %ok11522 -panic11521: - call void @finch_panic(ptr @.str.7364, i64 293, ptr @.str.7365) - unreachable -ok11522: - %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 %panic11523, label %ok11524 -panic11523: - call void @finch_panic(ptr @.str.7366, i64 293, ptr @.str.7367) - unreachable -ok11524: - %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 %then11525, label %endif11527 -then11525: - %t13 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7368, 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.7369, i64 12, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } %t22, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t22, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.7370, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - ret { ptr, i64, i64 } %t35 -endif11527: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11528, label %ok11529 -panic11528: - call void @finch_panic(ptr @.str.7372, i64 296, ptr @.str.7373) - unreachable -ok11529: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11530, label %ok11531 -panic11530: - call void @finch_panic(ptr @.str.7374, i64 296, ptr @.str.7375) - unreachable -ok11531: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11532, label %inrange11533 -range11532: - call void @finch_panic_index(ptr @.str.7376, i64 296, i64 %t42, i64 %t44) - unreachable -inrange11533: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - call void @finch_str_from_char(ptr %a49, i8 signext %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.7371, i64 13, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.7377, i64 8, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.7378, i64 12, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load ptr, ptr %a1 - %t73 = call { ptr, i64, i64 } @finch.json.where(ptr %t72) - store { ptr, i64, i64 } %t71, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t71, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.7379, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -} - -define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11534, label %ok11535 -panic11534: - call void @finch_panic(ptr @.str.7380, i64 301, ptr @.str.7381) - unreachable -ok11535: - %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 %panic11536, label %ok11537 -panic11536: - call void @finch_panic(ptr @.str.7382, i64 301, ptr @.str.7383) - unreachable -ok11537: - %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.from11538 -logic.from11538: - br i1 %t15, label %logic.rhs11539, label %logic.end11540 -logic.rhs11539: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11541, label %ok11542 -panic11541: - call void @finch_panic(ptr @.str.7384, i64 301, ptr @.str.7385) - unreachable -ok11542: - %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 %panic11543, label %ok11544 -panic11543: - call void @finch_panic(ptr @.str.7387, i64 301, ptr @.str.7388) - unreachable -ok11544: - %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 %panic11545, label %ok11546 -panic11545: - call void @finch_panic(ptr @.str.7389, i64 301, ptr @.str.7390) - unreachable -ok11546: - %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.7386, 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 - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %logic.rend11547 -logic.rend11547: - br label %logic.end11540 -logic.end11540: - %t40 = phi i1 [ false, %logic.from11538 ], [ %t38, %logic.rend11547 ] - ret i1 %t40 -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = call i1 @finch.json.comes(ptr %t3, { ptr, i64, i64 } %t4) - %t6 = xor i1 %t5, true - br i1 %t6, label %then11548, label %endif11550 -then11548: - %t7 = load ptr, ptr %a1 - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7391, 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.7392, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t18, 2 - ret { i1, i8, { ptr, i64, i64 } } %t20 -endif11550: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t22 = load i64, ptr %t21 - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic11551, label %ok11552 -panic11551: - call void @finch_panic(ptr @.str.7393, i64 308, ptr @.str.7394) - unreachable -ok11552: - %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = add i64 %t26, %t22 - store i64 %t27, ptr %t25 - ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } -} - -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.from11553 -logic.from11553: - br i1 %t3, label %logic.rhs11554, label %logic.end11555 -logic.rhs11554: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend11556 -logic.rend11556: - br label %logic.end11555 -logic.end11555: - %t6 = phi i1 [ false, %logic.from11553 ], [ %t5, %logic.rend11556 ] - br i1 %t6, label %then11557, label %endif11559 -then11557: - %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 -endif11559: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from11560 -logic.from11560: - br i1 %t12, label %logic.rhs11561, label %logic.end11562 -logic.rhs11561: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend11563 -logic.rend11563: - br label %logic.end11562 -logic.end11562: - %t15 = phi i1 [ false, %logic.from11560 ], [ %t14, %logic.rend11563 ] - br i1 %t15, label %then11564, label %endif11566 -then11564: - %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 -endif11566: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from11567 -logic.from11567: - br i1 %t22, label %logic.rhs11568, label %logic.end11569 -logic.rhs11568: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend11570 -logic.rend11570: - br label %logic.end11569 -logic.end11569: - %t25 = phi i1 [ false, %logic.from11567 ], [ %t24, %logic.rend11570 ] - br i1 %t25, label %then11571, label %endif11573 -then11571: - %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 -endif11573: - 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 %then11574, label %else11575 -then11574: - %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 %endif11576 -else11575: - %t12 = load i64, ptr %a1 - %t13 = icmp slt i64 %t12, 2048 - br i1 %t13, label %then11577, label %else11578 -then11577: - %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 %endif11579 -else11578: - %t32 = load i64, ptr %a1 - %t33 = icmp slt i64 %t32, 65536 - br i1 %t33, label %then11580, label %else11581 -then11580: - %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 %endif11582 -else11581: - %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 %endif11582 -endif11582: - br label %endif11579 -endif11579: - br label %endif11576 -endif11576: - %t100 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a101 - store { ptr, i64, i64 } %t100, ptr %a102 - call void @finch_str_from_bytes(ptr %a101, ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a101 - call void @finch.drop.arr_u8(ptr %a2) - ret { ptr, i64, i64 } %t103 -} - -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.cond11583 -for.cond11583: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, 4 - br i1 %t5, label %for.body11584, label %for.end11586 -for.body11584: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic11587, label %ok11588 -panic11587: - call void @finch_panic(ptr @.str.7395, i64 348, ptr @.str.7396) - unreachable -ok11588: - %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 %panic11589, label %ok11590 -panic11589: - call void @finch_panic(ptr @.str.7397, i64 348, ptr @.str.7398) - unreachable -ok11590: - %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.from11591 -logic.from11591: - br i1 %t15, label %logic.end11593, label %logic.rhs11592 -logic.rhs11592: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11594, label %ok11595 -panic11594: - call void @finch_panic(ptr @.str.7399, i64 348, ptr @.str.7400) - unreachable -ok11595: - %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 %panic11596, label %ok11597 -panic11596: - call void @finch_panic(ptr @.str.7401, i64 348, ptr @.str.7402) - unreachable -ok11597: - %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 %range11598, label %inrange11599 -range11598: - call void @finch_panic_index(ptr @.str.7403, i64 348, i64 %t22, i64 %t24) - unreachable -inrange11599: - %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.rend11600 -logic.rend11600: - br label %logic.end11593 -logic.end11593: - %t31 = phi i1 [ true, %logic.from11591 ], [ %t30, %logic.rend11600 ] - br i1 %t31, label %then11601, label %endif11603 -then11601: - %t32 = load ptr, ptr %a1 - %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.7404, i64 19, i64 0 }) - %t34 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t33, 2 - ret { i1, i64, { ptr, i64, i64 } } %t34 -endif11603: - %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 %panic11604, label %ok11605 -panic11604: - call void @finch_panic(ptr @.str.7405, i64 351, ptr @.str.7406) - unreachable -ok11605: - %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 %panic11606, label %ok11607 -panic11606: - call void @finch_panic(ptr @.str.7407, i64 351, ptr @.str.7408) - unreachable -ok11607: - %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 %range11608, label %inrange11609 -range11608: - call void @finch_panic_index(ptr @.str.7409, i64 351, i64 %t43, i64 %t45) - unreachable -inrange11609: - %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 %panic11610, label %ok11611 -panic11610: - call void @finch_panic(ptr @.str.7410, i64 352, ptr @.str.7411) - unreachable -ok11611: - %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.step11585 -for.step11585: - %t57 = load i64, ptr %a3 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a3 - br label %for.cond11583 -for.end11586: - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i8, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i8, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a216 = alloca i64, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11612, label %ok11613 -panic11612: - call void @finch_panic(ptr @.str.7412, i64 358, ptr @.str.7413) - unreachable -ok11613: - %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 %panic11614, label %ok11615 -panic11614: - call void @finch_panic(ptr @.str.7414, i64 360, ptr @.str.7415) - unreachable -ok11615: - %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.cond11616 -while.cond11616: - br label %while.body11617 -while.body11617: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic11619, label %ok11620 -panic11619: - call void @finch_panic(ptr @.str.7416, i64 362, ptr @.str.7417) - unreachable -ok11620: - %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 %panic11621, label %ok11622 -panic11621: - call void @finch_panic(ptr @.str.7418, i64 362, ptr @.str.7419) - unreachable -ok11622: - %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 %then11623, label %endif11625 -then11623: - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } { ptr @.str.7420, i64 30, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.7421, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - call void @finch.drop.arr_str(ptr %a7) - %t35 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t34, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t35 -endif11625: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11626, label %ok11627 -panic11626: - call void @finch_panic(ptr @.str.7422, i64 365, ptr @.str.7423) - unreachable -ok11627: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11628, label %ok11629 -panic11628: - call void @finch_panic(ptr @.str.7424, i64 365, ptr @.str.7425) - unreachable -ok11629: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11630, label %inrange11631 -range11630: - call void @finch_panic_index(ptr @.str.7426, i64 365, i64 %t42, i64 %t44) - unreachable -inrange11631: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - store i8 %t48, ptr %a49 - %t50 = load i8, ptr %a49 - %t51 = icmp eq i8 %t50, 34 - br i1 %t51, label %then11632, label %endif11634 -then11632: - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic11635, label %ok11636 -panic11635: - call void @finch_panic(ptr @.str.7427, i64 367, ptr @.str.7428) - unreachable -ok11636: - %t55 = getelementptr inbounds %S.json.Reader, ptr %t53, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - %t59 = load i64, ptr %a12 - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic11637, label %ok11638 -panic11637: - call void @finch_panic(ptr @.str.7430, i64 367, ptr @.str.7431) - unreachable -ok11638: - %t62 = getelementptr inbounds %S.json.Reader, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - call void @finch_str_sub(ptr %a58, ptr %a57, i64 %t59, i64 %t63, ptr @.str.7429, i64 367) - %t64 = load { ptr, i64, i64 }, ptr %a58 - %t65 = load i64, ptr %t52 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t66, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %a7 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i64 %t65 - store { ptr, i64, i64 } %t64, ptr %t68 - store i64 %t66, ptr %t52 - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11639, label %ok11640 -panic11639: - call void @finch_panic(ptr @.str.7432, i64 368, ptr @.str.7433) - unreachable -ok11640: - %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %t71 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7434, i64 0, i64 0 }, ptr %a75 - call void @finch_str_join(ptr %a76, ptr %a7, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.drop.arr_str(ptr %a7) - %t78 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t79 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t78, { ptr, i64, i64 } %t77, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t79 -endif11634: - %t80 = load i8, ptr %a49 - %t81 = zext i8 %t80 to i64 - %t82 = icmp slt i64 %t81, 32 - br i1 %t82, label %then11641, label %endif11643 -then11641: - %t83 = load ptr, ptr %a1 - %t84 = call { ptr, i64, i64 } @finch.json.where(ptr %t83) - store { ptr, i64, i64 } { ptr @.str.7435, i64 55, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.7436, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a7) - %t95 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t94, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t95 -endif11643: - %t96 = load i8, ptr %a49 - %t97 = icmp ne i8 %t96, 92 - br i1 %t97, label %then11644, label %endif11646 -then11644: - %t98 = load ptr, ptr %a1 - %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic11647, label %ok11648 -panic11647: - call void @finch_panic(ptr @.str.7437, i64 375, ptr @.str.7438) - unreachable -ok11648: - %t100 = getelementptr inbounds %S.json.Reader, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %t100 - br label %while.cond11616 -endif11646: - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic11649, label %ok11650 -panic11649: - call void @finch_panic(ptr @.str.7439, i64 378, ptr @.str.7440) - unreachable -ok11650: - %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - %t110 = load i64, ptr %a12 - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic11651, label %ok11652 -panic11651: - call void @finch_panic(ptr @.str.7442, i64 378, ptr @.str.7443) - unreachable -ok11652: - %t113 = getelementptr inbounds %S.json.Reader, ptr %t111, i32 0, i32 1 - %t114 = load i64, ptr %t113 - call void @finch_str_sub(ptr %a109, ptr %a108, i64 %t110, i64 %t114, ptr @.str.7441, i64 378) - %t115 = load { ptr, i64, i64 }, ptr %a109 - %t116 = load i64, ptr %t103 - %t117 = add i64 %t116, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t117, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t118 = load ptr, ptr %a7 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116 - store { ptr, i64, i64 } %t115, ptr %t119 - store i64 %t117, ptr %t103 - %t120 = load ptr, ptr %a1 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic11653, label %ok11654 -panic11653: - call void @finch_panic(ptr @.str.7444, i64 379, ptr @.str.7445) - unreachable -ok11654: - %t122 = getelementptr inbounds %S.json.Reader, ptr %t120, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %t122 - %t125 = load ptr, ptr %a1 - %t126 = call i8 @finch.json.peek(ptr %t125) - store i8 %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic11655, label %ok11656 -panic11655: - call void @finch_panic(ptr @.str.7446, i64 381, ptr @.str.7447) - unreachable -ok11656: - %t130 = getelementptr inbounds %S.json.Reader, ptr %t128, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %t130 - %t133 = load i8, ptr %a127 - %t134 = icmp eq i8 %t133, 110 - br i1 %t134, label %then11657, label %else11658 -then11657: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = add i64 %t136, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t137, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t138 = load ptr, ptr %a7 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i64 %t136 - store { ptr, i64, i64 } { ptr @.str.7448, i64 1, i64 0 }, ptr %t139 - store i64 %t137, ptr %t135 - br label %endif11659 -else11658: - %t140 = load i8, ptr %a127 - %t141 = icmp eq i8 %t140, 116 - br i1 %t141, label %then11660, label %else11661 -then11660: - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = add i64 %t143, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t144, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t145 = load ptr, ptr %a7 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t143 - store { ptr, i64, i64 } { ptr @.str.7449, i64 1, i64 0 }, ptr %t146 - store i64 %t144, ptr %t142 - br label %endif11662 -else11661: - %t147 = load i8, ptr %a127 - %t148 = icmp eq i8 %t147, 114 - br i1 %t148, label %then11663, label %else11664 -then11663: - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = add i64 %t150, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t151, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t152 = load ptr, ptr %a7 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i64 %t150 - store { ptr, i64, i64 } { ptr @.str.7450, i64 1, i64 0 }, ptr %t153 - store i64 %t151, ptr %t149 - br label %endif11665 -else11664: - %t154 = load i8, ptr %a127 - %t155 = icmp eq i8 %t154, 98 - br i1 %t155, label %then11666, label %else11667 -then11666: - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t157 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) - %t158 = load i64, ptr %t156 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t159, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %a7 - %t161 = getelementptr inbounds { ptr, i64, i64 }, ptr %t160, i64 %t158 - store { ptr, i64, i64 } %t157, ptr %t161 - store i64 %t159, ptr %t156 - br label %endif11668 -else11667: - %t162 = load i8, ptr %a127 - %t163 = icmp eq i8 %t162, 102 - br i1 %t163, label %then11669, label %else11670 -then11669: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t165 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) - %t166 = load i64, ptr %t164 - %t167 = add i64 %t166, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t167, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t168 = load ptr, ptr %a7 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i64 %t166 - store { ptr, i64, i64 } %t165, ptr %t169 - store i64 %t167, ptr %t164 - br label %endif11671 -else11670: - %t170 = load i8, ptr %a127 - %t171 = icmp eq i8 %t170, 34 - br label %logic.from11672 -logic.from11672: - br i1 %t171, label %logic.end11674, label %logic.rhs11673 -logic.rhs11673: - %t172 = load i8, ptr %a127 - %t173 = icmp eq i8 %t172, 92 - br label %logic.rend11675 -logic.rend11675: - br label %logic.end11674 -logic.end11674: - %t174 = phi i1 [ true, %logic.from11672 ], [ %t173, %logic.rend11675 ] - br label %logic.from11676 -logic.from11676: - br i1 %t174, label %logic.end11678, label %logic.rhs11677 -logic.rhs11677: - %t175 = load i8, ptr %a127 - %t176 = icmp eq i8 %t175, 47 - br label %logic.rend11679 -logic.rend11679: - br label %logic.end11678 -logic.end11678: - %t177 = phi i1 [ true, %logic.from11676 ], [ %t176, %logic.rend11679 ] - br i1 %t177, label %then11680, label %else11681 -then11680: - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t179 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a180, i8 signext %t179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - %t182 = load i64, ptr %t178 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a7 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t178 - br label %endif11682 -else11681: - %t186 = load i8, ptr %a127 - %t187 = icmp eq i8 %t186, 117 - br i1 %t187, label %then11683, label %else11684 -then11683: - %t188 = load ptr, ptr %a1 - %t189 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t188) - %t190 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 0 - %t191 = xor i1 %t190, true - %t192 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 2 - %t193 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 1 - br i1 %t191, label %try.failed11686, label %try.ok11687 -try.failed11686: - call void @finch.drop.arr_str(ptr %a7) - %t194 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t192, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t194 -try.ok11687: - store i64 %t193, ptr %a195 - %t196 = load i64, ptr %a195 - %t197 = icmp sge i64 %t196, 55296 - br label %logic.from11688 -logic.from11688: - br i1 %t197, label %logic.rhs11689, label %logic.end11690 -logic.rhs11689: - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, 56320 - br label %logic.rend11691 -logic.rend11691: - br label %logic.end11690 -logic.end11690: - %t200 = phi i1 [ false, %logic.from11688 ], [ %t199, %logic.rend11691 ] - br label %logic.from11692 -logic.from11692: - br i1 %t200, label %logic.rhs11693, label %logic.end11694 -logic.rhs11693: - %t201 = load ptr, ptr %a1 - %t202 = call i1 @finch.json.comes(ptr %t201, { ptr, i64, i64 } { ptr @.str.7451, i64 2, i64 0 }) - br label %logic.rend11695 -logic.rend11695: - br label %logic.end11694 -logic.end11694: - %t203 = phi i1 [ false, %logic.from11692 ], [ %t202, %logic.rend11695 ] - br i1 %t203, label %then11696, label %endif11698 -then11696: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic11699, label %ok11700 -panic11699: - call void @finch_panic(ptr @.str.7452, i64 398, ptr @.str.7453) - unreachable -ok11700: - %t206 = getelementptr inbounds %S.json.Reader, ptr %t204, i32 0, i32 1 - %t207 = load i64, ptr %t206 - %t208 = add i64 %t207, 2 - store i64 %t208, ptr %t206 - %t209 = load ptr, ptr %a1 - %t210 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t209) - %t211 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 0 - %t212 = xor i1 %t211, true - %t213 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 2 - %t214 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 1 - br i1 %t212, label %try.failed11701, label %try.ok11702 -try.failed11701: - call void @finch.drop.arr_str(ptr %a7) - %t215 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t213, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t215 -try.ok11702: - store i64 %t214, ptr %a216 - %t217 = load i64, ptr %a195 - %t218 = sub i64 %t217, 55296 - %t219 = mul i64 %t218, 1024 - %t220 = add i64 65536, %t219 - %t221 = load i64, ptr %a216 - %t222 = sub i64 %t221, 56320 - %t223 = add i64 %t220, %t222 - store i64 %t223, ptr %a195 - br label %endif11698 -endif11698: - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t225 = load i64, ptr %a195 - %t226 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t225) - %t227 = load i64, ptr %t224 - %t228 = add i64 %t227, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t229 = load ptr, ptr %a7 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227 - store { ptr, i64, i64 } %t226, ptr %t230 - store i64 %t228, ptr %t224 - br label %endif11685 -else11684: - %t231 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a232, i8 signext %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.7454, i64 22, i64 0 }, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.7455, i64 12, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load ptr, ptr %a1 - %t245 = call { ptr, i64, i64 } @finch.json.where(ptr %t244) - store { ptr, i64, i64 } %t243, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t243, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t245, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.7456, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.drop.arr_str(ptr %a7) - %t257 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t256, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t257 -endif11685: - br label %endif11682 -endif11682: - br label %endif11671 -endif11671: - br label %endif11668 -endif11668: - br label %endif11665 -endif11665: - br label %endif11662 -endif11662: - br label %endif11659 -endif11659: - %t258 = load ptr, ptr %a1 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic11703, label %ok11704 -panic11703: - call void @finch_panic(ptr @.str.7457, i64 406, ptr @.str.7458) - unreachable -ok11704: - %t260 = getelementptr inbounds %S.json.Reader, ptr %t258, i32 0, i32 1 - %t261 = load i64, ptr %t260 - store i64 %t261, ptr %a12 - br label %while.cond11616 -} - -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 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca double, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11705, label %ok11706 -panic11705: - call void @finch_panic(ptr @.str.7459, i64 411, ptr @.str.7460) - unreachable -ok11706: - %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 %then11707, label %endif11709 -then11707: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic11710, label %ok11711 -panic11710: - call void @finch_panic(ptr @.str.7461, i64 413, ptr @.str.7462) - unreachable -ok11711: - %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 %endif11709 -endif11709: - br label %while.cond11712 -while.cond11712: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic11715, label %ok11716 -panic11715: - call void @finch_panic(ptr @.str.7463, i64 415, ptr @.str.7464) - unreachable -ok11716: - %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 %panic11717, label %ok11718 -panic11717: - call void @finch_panic(ptr @.str.7465, i64 415, ptr @.str.7466) - unreachable -ok11718: - %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.from11719 -logic.from11719: - br i1 %t24, label %logic.rhs11720, label %logic.end11721 -logic.rhs11720: - %t25 = load ptr, ptr %a1 - %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic11722, label %ok11723 -panic11722: - call void @finch_panic(ptr @.str.7467, i64 415, ptr @.str.7468) - unreachable -ok11723: - %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 %panic11724, label %ok11725 -panic11724: - call void @finch_panic(ptr @.str.7469, i64 415, ptr @.str.7470) - unreachable -ok11725: - %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 %range11726, label %inrange11727 -range11726: - call void @finch_panic_index(ptr @.str.7471, i64 415, i64 %t31, i64 %t33) - unreachable -inrange11727: - %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.from11728 -logic.from11728: - br i1 %t38, label %logic.rhs11729, label %logic.end11730 -logic.rhs11729: - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11731, label %ok11732 -panic11731: - call void @finch_panic(ptr @.str.7472, i64 415, ptr @.str.7473) - unreachable -ok11732: - %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 %panic11733, label %ok11734 -panic11733: - call void @finch_panic(ptr @.str.7474, i64 415, ptr @.str.7475) - unreachable -ok11734: - %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 %range11735, label %inrange11736 -range11735: - call void @finch_panic_index(ptr @.str.7476, i64 415, i64 %t45, i64 %t47) - unreachable -inrange11736: - %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.rend11737 -logic.rend11737: - br label %logic.end11730 -logic.end11730: - %t53 = phi i1 [ false, %logic.from11728 ], [ %t52, %logic.rend11737 ] - br label %logic.from11738 -logic.from11738: - br i1 %t53, label %logic.end11740, label %logic.rhs11739 -logic.rhs11739: - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic11741, label %ok11742 -panic11741: - call void @finch_panic(ptr @.str.7477, i64 415, ptr @.str.7478) - unreachable -ok11742: - %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 %panic11743, label %ok11744 -panic11743: - call void @finch_panic(ptr @.str.7479, i64 415, ptr @.str.7480) - unreachable -ok11744: - %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 %range11745, label %inrange11746 -range11745: - call void @finch_panic_index(ptr @.str.7481, i64 415, i64 %t60, i64 %t62) - unreachable -inrange11746: - %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.rend11747 -logic.rend11747: - br label %logic.end11740 -logic.end11740: - %t68 = phi i1 [ true, %logic.from11738 ], [ %t67, %logic.rend11747 ] - br label %logic.from11748 -logic.from11748: - br i1 %t68, label %logic.end11750, label %logic.rhs11749 -logic.rhs11749: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11751, label %ok11752 -panic11751: - call void @finch_panic(ptr @.str.7482, i64 415, ptr @.str.7483) - unreachable -ok11752: - %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 %panic11753, label %ok11754 -panic11753: - call void @finch_panic(ptr @.str.7484, i64 415, ptr @.str.7485) - unreachable -ok11754: - %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 %range11755, label %inrange11756 -range11755: - call void @finch_panic_index(ptr @.str.7486, i64 415, i64 %t75, i64 %t77) - unreachable -inrange11756: - %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.rend11757 -logic.rend11757: - br label %logic.end11750 -logic.end11750: - %t83 = phi i1 [ true, %logic.from11748 ], [ %t82, %logic.rend11757 ] - br label %logic.from11758 -logic.from11758: - br i1 %t83, label %logic.end11760, label %logic.rhs11759 -logic.rhs11759: - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic11761, label %ok11762 -panic11761: - call void @finch_panic(ptr @.str.7487, i64 415, ptr @.str.7488) - unreachable -ok11762: - %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 %panic11763, label %ok11764 -panic11763: - call void @finch_panic(ptr @.str.7489, i64 415, ptr @.str.7490) - unreachable -ok11764: - %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 %range11765, label %inrange11766 -range11765: - call void @finch_panic_index(ptr @.str.7491, i64 415, i64 %t90, i64 %t92) - unreachable -inrange11766: - %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.rend11767 -logic.rend11767: - br label %logic.end11760 -logic.end11760: - %t98 = phi i1 [ true, %logic.from11758 ], [ %t97, %logic.rend11767 ] - br label %logic.from11768 -logic.from11768: - br i1 %t98, label %logic.end11770, label %logic.rhs11769 -logic.rhs11769: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic11771, label %ok11772 -panic11771: - call void @finch_panic(ptr @.str.7492, i64 415, ptr @.str.7493) - unreachable -ok11772: - %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 %panic11773, label %ok11774 -panic11773: - call void @finch_panic(ptr @.str.7494, i64 415, ptr @.str.7495) - unreachable -ok11774: - %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 %range11775, label %inrange11776 -range11775: - call void @finch_panic_index(ptr @.str.7496, i64 415, i64 %t105, i64 %t107) - unreachable -inrange11776: - %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.rend11777 -logic.rend11777: - br label %logic.end11770 -logic.end11770: - %t113 = phi i1 [ true, %logic.from11768 ], [ %t112, %logic.rend11777 ] - br label %logic.from11778 -logic.from11778: - br i1 %t113, label %logic.end11780, label %logic.rhs11779 -logic.rhs11779: - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic11781, label %ok11782 -panic11781: - call void @finch_panic(ptr @.str.7497, i64 415, ptr @.str.7498) - unreachable -ok11782: - %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 %panic11783, label %ok11784 -panic11783: - call void @finch_panic(ptr @.str.7499, i64 415, ptr @.str.7500) - unreachable -ok11784: - %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 %range11785, label %inrange11786 -range11785: - call void @finch_panic_index(ptr @.str.7501, i64 415, i64 %t120, i64 %t122) - unreachable -inrange11786: - %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.rend11787 -logic.rend11787: - br label %logic.end11780 -logic.end11780: - %t128 = phi i1 [ true, %logic.from11778 ], [ %t127, %logic.rend11787 ] - br label %logic.rend11788 -logic.rend11788: - br label %logic.end11721 -logic.end11721: - %t129 = phi i1 [ false, %logic.from11719 ], [ %t128, %logic.rend11788 ] - br i1 %t129, label %while.body11713, label %while.end11714 -while.body11713: - %t130 = load ptr, ptr %a1 - %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic11789, label %ok11790 -panic11789: - call void @finch_panic(ptr @.str.7502, i64 416, ptr @.str.7503) - unreachable -ok11790: - %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.cond11712 -while.end11714: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic11791, label %ok11792 -panic11791: - call void @finch_panic(ptr @.str.7504, i64 418, ptr @.str.7505) - unreachable -ok11792: - %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 %panic11793, label %ok11794 -panic11793: - call void @finch_panic(ptr @.str.7507, i64 418, ptr @.str.7508) - unreachable -ok11794: - %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.7506, 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 - store { ptr, i64, i64 } %t146, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load double, ptr %a148 - br i1 %t151, label %or.failed11795, label %or.ok11796 -or.failed11795: - store { ptr, i64, i64 } %t152, ptr %a155 - %t156 = load i64, ptr %a6 - %t157 = load ptr, ptr %a1 - %t158 = icmp eq ptr %t157, null - br i1 %t158, label %panic11797, label %ok11798 -panic11797: - call void @finch_panic(ptr @.str.7509, i64 419, ptr @.str.7510) - unreachable -ok11798: - %t159 = getelementptr inbounds %S.json.Reader, ptr %t157, i32 0, i32 1 - store i64 %t156, ptr %t159 - %t160 = load ptr, ptr %a1 - %t161 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t160, { ptr, i64, i64 } { ptr @.str.7511, i64 8, i64 0 }) - call void @finch_str_drop(ptr %a155) - %t162 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t161, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t162 -or.ok11796: - store double %t154, ptr %a163 - %t164 = load double, ptr %a163 - %t165 = call %S.json.Json @finch.json.new_number(double %t164) - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t167 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t166, %S.json.Json %t165, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t167 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { -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 %panic11799, label %ok11800 -panic11799: - call void @finch_panic(ptr @.str.7512, i64 428, ptr @.str.7513) - unreachable -ok11800: - %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 %panic11801, label %ok11802 -panic11801: - call void @finch_panic(ptr @.str.7514, i64 428, ptr @.str.7515) - unreachable -ok11802: - %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 %then11803, label %endif11805 -then11803: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7516, 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 -endif11805: - %t19 = load i8, ptr %a5 - %t20 = icmp eq i8 %t19, 123 - br i1 %t20, label %then11806, label %endif11808 -then11806: - %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 %panic11809, label %ok11810 -panic11809: - call void @finch_panic(ptr @.str.7517, i64 433, ptr @.str.7518) - unreachable -ok11810: - %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 %then11811, label %endif11813 -then11811: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic11814, label %ok11815 -panic11814: - call void @finch_panic(ptr @.str.7519, i64 436, ptr @.str.7520) - unreachable -ok11815: - %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 -endif11813: - br label %while.cond11816 -while.cond11816: - br label %while.body11817 -while.body11817: - %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 %then11819, label %endif11821 -then11819: - %t44 = load ptr, ptr %a1 - %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7521, i64 15, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a22) - %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 -endif11821: - %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.failed11822, label %try.ok11823 -try.failed11822: - call void @finch.drop.S_json_Json(ptr %a22) - %t53 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t51, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t53 -try.ok11823: - 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 %then11824, label %endif11826 -then11824: - %t59 = load ptr, ptr %a1 - %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7522, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 -endif11826: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic11827, label %ok11828 -panic11827: - call void @finch_panic(ptr @.str.7523, i64 449, ptr @.str.7524) - unreachable -ok11828: - %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.failed11829, label %try.ok11830 -try.failed11829: - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t73 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t71, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t73 -try.ok11830: - 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 %then11831, label %endif11833 -then11831: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic11834, label %ok11835 -panic11834: - call void @finch_panic(ptr @.str.7525, i64 454, ptr @.str.7526) - unreachable -ok11835: - %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 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - br label %while.cond11816 -endif11833: - %t86 = load ptr, ptr %a1 - %t87 = call i8 @finch.json.peek(ptr %t86) - %t88 = icmp eq i8 %t87, 125 - br i1 %t88, label %then11836, label %endif11838 -then11836: - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic11839, label %ok11840 -panic11839: - call void @finch_panic(ptr @.str.7527, i64 458, ptr @.str.7528) - unreachable -ok11840: - %t91 = getelementptr inbounds %S.json.Reader, ptr %t89, i32 0, i32 1 - %t92 = load i64, ptr %t91 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %t91 - %t94 = load %S.json.Json, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - %t95 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t96 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t95, %S.json.Json %t94, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t96 -endif11838: - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7529, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 -endif11808: - %t100 = load i8, ptr %a5 - %t101 = icmp eq i8 %t100, 91 - br i1 %t101, label %then11841, label %endif11843 -then11841: - %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 %panic11844, label %ok11845 -panic11844: - call void @finch_panic(ptr @.str.7530, i64 466, ptr @.str.7531) - unreachable -ok11845: - %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 %then11846, label %endif11848 -then11846: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic11849, label %ok11850 -panic11849: - call void @finch_panic(ptr @.str.7532, i64 469, ptr @.str.7533) - unreachable -ok11850: - %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 -endif11848: - br label %while.cond11851 -while.cond11851: - br label %while.body11852 -while.body11852: - %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.failed11854, label %try.ok11855 -try.failed11854: - call void @finch.drop.S_json_Json(ptr %a103) - %t127 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t125, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t127 -try.ok11855: - 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 %then11856, label %endif11858 -then11856: - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic11859, label %ok11860 -panic11859: - call void @finch_panic(ptr @.str.7534, i64 477, ptr @.str.7535) - unreachable -ok11860: - %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 - call void @finch.drop.S_json_Json(ptr %a128) - br label %while.cond11851 -endif11858: - %t139 = load ptr, ptr %a1 - %t140 = call i8 @finch.json.peek(ptr %t139) - %t141 = icmp eq i8 %t140, 93 - br i1 %t141, label %then11861, label %endif11863 -then11861: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic11864, label %ok11865 -panic11864: - call void @finch_panic(ptr @.str.7536, i64 481, ptr @.str.7537) - unreachable -ok11865: - %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - store i64 %t146, ptr %t144 - %t147 = load %S.json.Json, ptr %a103 - call void @finch.drop.S_json_Json(ptr %a128) - %t148 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t149 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t148, %S.json.Json %t147, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t149 -endif11863: - %t150 = load ptr, ptr %a1 - %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7538, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a128) - call void @finch.drop.S_json_Json(ptr %a103) - %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 -endif11843: - %t153 = load i8, ptr %a5 - %t154 = icmp eq i8 %t153, 34 - br i1 %t154, label %then11866, label %endif11868 -then11866: - %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.failed11869, label %try.ok11870 -try.failed11869: - %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.ok11870: - store { ptr, i64, i64 } %t160, ptr %a162 - %t163 = load { ptr, i64, i64 }, ptr %a162 - %t164 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t163) - call void @finch_str_drop(ptr %a162) - %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 -endif11868: - %t167 = load i8, ptr %a5 - %t168 = icmp eq i8 %t167, 116 - br i1 %t168, label %then11871, label %endif11873 -then11871: - %t169 = load ptr, ptr %a1 - %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7539, 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.failed11874, label %try.ok11875 -try.failed11874: - %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.ok11875: - %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 -endif11873: - %t178 = load i8, ptr %a5 - %t179 = icmp eq i8 %t178, 102 - br i1 %t179, label %then11876, label %endif11878 -then11876: - %t180 = load ptr, ptr %a1 - %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7540, 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.failed11879, label %try.ok11880 -try.failed11879: - %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.ok11880: - %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 -endif11878: - %t189 = load i8, ptr %a5 - %t190 = icmp eq i8 %t189, 110 - br i1 %t190, label %then11881, label %endif11883 -then11881: - %t191 = load ptr, ptr %a1 - %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7541, 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.failed11884, label %try.ok11885 -try.failed11884: - %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.ok11885: - %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 -endif11883: - %t200 = load i8, ptr %a5 - %t201 = icmp eq i8 %t200, 45 - br label %logic.from11886 -logic.from11886: - br i1 %t201, label %logic.end11888, label %logic.rhs11887 -logic.rhs11887: - %t202 = load i8, ptr %a5 - %t203 = icmp uge i8 %t202, 48 - br label %logic.from11889 -logic.from11889: - br i1 %t203, label %logic.rhs11890, label %logic.end11891 -logic.rhs11890: - %t204 = load i8, ptr %a5 - %t205 = icmp ule i8 %t204, 57 - br label %logic.rend11892 -logic.rend11892: - br label %logic.end11891 -logic.end11891: - %t206 = phi i1 [ false, %logic.from11889 ], [ %t205, %logic.rend11892 ] - br label %logic.rend11893 -logic.rend11893: - br label %logic.end11888 -logic.end11888: - %t207 = phi i1 [ true, %logic.from11886 ], [ %t206, %logic.rend11893 ] - br i1 %t207, label %then11894, label %endif11896 -then11894: - %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.failed11897, label %try.ok11898 -try.failed11897: - %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.ok11898: - %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 -endif11896: - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7542, i64 7, i64 0 }) - %t219 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t218, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t219 -} - -define internal void @finch.drop.S_json_Reader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Reader, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - 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.failed11899, label %try.ok11900 -try.failed11899: - call void @finch.drop.S_json_Reader(ptr %a7) - %t13 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t11, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t13 -try.ok11900: - 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 %then11901, label %endif11903 -then11901: - %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7543, i64 19, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a14) - call void @finch.drop.S_json_Reader(ptr %a7) - %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 -endif11903: - %t23 = load %S.json.Json, ptr %a14 - call void @finch.drop.S_json_Reader(ptr %a7) - %t24 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t25 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, %S.json.Json %t23, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t25 -} - -define internal { ptr, i64, i64 } @finch.embedded.names() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7544, i64 18, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7545, i64 12, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7546, i64 12, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7547, i64 12, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7548, i64 20, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7549, i64 12, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7550, i64 20, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7551, i64 15, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define internal { ptr, i64, i64 } @finch.embedded.texts() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7552, i64 24981, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7553, i64 12884, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7554, i64 2846, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7555, i64 1406, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7556, i64 995, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7557, i64 2539, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7558, i64 1792, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7559, i64 365, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define i32 @main(i32 %argc, ptr %argv) { -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/macos-x86_64.ll b/bootstrap/macos-x86_64.ll deleted file mode 100644 index 8208f3a..0000000 --- a/bootstrap/macos-x86_64.ll +++ /dev/null @@ -1,117509 +0,0 @@ -; generated by the Finch compiler written in Finch - -target triple = "x86_64-apple-macosx11.0.0" - -%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, i1, i1, { ptr, i64, i64 }, i64, i64 } -%S.platform.Target = type { { ptr, i64, i64 }, i1, i1, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Options = type { i1, i1, i1, { ptr, i64, i64 }, %S.platform.Target } -%S.gen.Template = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1, i1 } -%S.gen.Binds = type { { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.EnumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Cleanup = type { i1, i64 } -%S.gen.SumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.SumPat = type { i64, { ptr, i64, i64 } } -%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Pending = type { { ptr, i64, i64 }, %S.ast.Type, i1 } -%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.FnSig = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.StructDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } -%S.gen.Val = type { { ptr, i64, i64 }, %S.ast.Type, i1, i1 } -%S.gen.Place = type { { ptr, i64, i64 }, %S.ast.Type } -%S.gen.Ref = type { i1, %S.gen.Place, %S.gen.Val } -%S.cimport.CImports = type { { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Gen = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { 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 }, { 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.rlimit = type { i64, i64 } -%S.C.timeval = type { i64, i32, [4 x i8] } -%S.C.rusage = type { %S.C.timeval, %S.C.timeval, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64 } -%S.C.siginfo_t = type { i32, i32, i32, i32, i32, i32, ptr, [8 x i8], i64, [7 x 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.timespec = type { i64, i64 } -%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.fd_set = type { [32 x i32] } -%S.C.accessx_descriptor = type { i32, i32, [2 x i32] } -%S.C.__sbuf = type { ptr, i32, [4 x i8] } -%S.C.FILE = type { ptr, i32, i32, i16, i16, [4 x i8], %S.C.__sbuf, i32, [4 x i8], ptr, ptr, ptr, ptr, ptr, %S.C.__sbuf, ptr, i32, [3 x i8], [1 x i8], %S.C.__sbuf, i32, [4 x i8], i64 } -%S.C.__va_list_tag = type { i32, i32, ptr, ptr } -@.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 [8 x i8] c"/files-\00" -@.str.146 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.147 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.148 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.149 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.150 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.151 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.153 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.155 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.156 = private unnamed_addr constant [8 x i8] c"version\00" -@.str.157 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.158 = private unnamed_addr constant [10 x i8] c"--version\00" -@.str.159 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" -@.str.160 = private unnamed_addr constant [1 x i8] c"\00" -@.str.161 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.162 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.164 = private unnamed_addr constant [4 x i8] c"lsp\00" -@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.166 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.168 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.169 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.170 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.171 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.172 = private unnamed_addr constant [1 x i8] c"\00" -@.str.173 = private unnamed_addr constant [4 x i8] c"-O2\00" -@.str.174 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.175 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.176 = private unnamed_addr constant [3 x i8] c"-o\00" -@.str.177 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.178 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.179 = private unnamed_addr constant [9 x i8] c"--shared\00" -@.str.180 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.181 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.182 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.183 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.185 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.186 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.187 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.188 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.189 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.190 = private unnamed_addr constant [10 x i8] c"--overlay\00" -@.str.191 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.192 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.193 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.194 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.195 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.196 = private unnamed_addr constant [3 x i8] c"-g\00" -@.str.197 = private unnamed_addr constant [9 x i8] c"--target\00" -@.str.198 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.199 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.200 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.201 = private unnamed_addr constant [12 x i8] c"/finch_run_\00" -@.str.202 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.203 = private unnamed_addr constant [5 x i8] c".dll\00" -@.str.204 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.205 = private unnamed_addr constant [7 x i8] c".dylib\00" -@.str.206 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.207 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.208 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.209 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.210 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.212 = private unnamed_addr constant [8 x i8] c"/../std\00" -@.str.213 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.214 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.216 = private unnamed_addr constant [20 x i8] c"/../share/finch/std\00" -@.str.217 = private unnamed_addr constant [4 x i8] c"std\00" -@.str.218 = private unnamed_addr constant [10 x i8] c"/path.fch\00" -@.str.219 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.220 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" -@.str.221 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @getenv(ptr) -@.str.222 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.223 = private unnamed_addr constant [1 x i8] c"\00" -@.str.224 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.225 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.226 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.227 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.228 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.229 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.230 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.231 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.232 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.233 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.234 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.235 = private unnamed_addr constant [1 x i8] c"\00" -@.str.236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.239 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.240 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.241 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.243 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.244 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.245 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" -@.str.246 = private unnamed_addr constant [1 x i8] c"\00" -@.str.247 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.248 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" -@.str.249 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.250 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.251 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.252 = private unnamed_addr constant [35 x i8] c"/../share/finch/runtime/finch_rt.c\00" -@.str.253 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.254 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.255 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.256 = private unnamed_addr constant [1 x i8] c"\00" -@.str.257 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.258 = private unnamed_addr constant [4 x i8] c" -g\00" -@.str.259 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.260 = private unnamed_addr constant [2 x i8] c" \00" -@.str.261 = private unnamed_addr constant [2 x i8] c" \00" -@.str.262 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.263 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.264 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.265 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.266 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.267 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.268 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.269 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.270 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.271 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.272 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.273 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.274 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.275 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.276 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.277 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.278 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.279 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.280 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.281 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.282 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.283 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.284 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.285 = private unnamed_addr constant [2 x i8] c":\00" -@.str.286 = private unnamed_addr constant [2 x i8] c":\00" -@.str.287 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.288 = private unnamed_addr constant [1 x i8] c"\00" -@.str.289 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.290 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.291 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.292 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.293 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.294 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.295 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.296 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.297 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.298 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.299 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.300 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.301 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.302 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.303 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.304 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.305 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.306 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.307 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.308 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.310 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.311 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.312 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.313 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.315 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.316 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.317 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.318 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.319 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.322 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.323 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.324 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.325 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.326 = private unnamed_addr constant [3 x i8] c"+=\00" -@.str.327 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str.328 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str.329 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str.330 = private unnamed_addr constant [3 x i8] c"%=\00" -@.str.331 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.332 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.333 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.335 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.336 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.338 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.340 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.341 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.342 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" -@.str.343 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.344 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.345 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.347 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.349 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.350 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.351 = private unnamed_addr constant [1 x i8] c"\00" -@.str.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.353 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.354 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.355 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.356 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00" -@.str.357 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.358 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.359 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.360 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.361 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.362 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.369 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.370 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.371 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.372 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.373 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.374 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.375 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.376 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.377 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.378 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.379 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.381 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.382 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.383 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.384 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.385 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.386 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.387 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.388 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.389 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.390 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.391 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.392 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" -@.str.393 = private unnamed_addr constant [1 x i8] c"\00" -@.str.394 = private unnamed_addr constant [1 x i8] c"\00" -@.str.395 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.396 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.398 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.399 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.400 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.401 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.402 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.403 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.404 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.406 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.407 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.408 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.409 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.410 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.411 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.415 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.416 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.418 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.420 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.421 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.422 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.423 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.424 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.425 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.426 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.427 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.428 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.429 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.430 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.431 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.432 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.434 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.435 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.436 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.442 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.443 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.444 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.445 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.446 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.448 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.449 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.450 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.451 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.452 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.453 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.454 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.455 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.456 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.457 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.458 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.459 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.460 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.461 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.465 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.466 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.467 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.468 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.469 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.470 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.471 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.472 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.473 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.474 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.475 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.476 = private unnamed_addr constant [1 x i8] c"\00" -@.str.477 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.478 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.479 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" -@.str.480 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" -@.str.481 = private unnamed_addr constant [1 x i8] c"\00" -@.str.482 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" -@.str.483 = private unnamed_addr constant [1 x i8] c"\00" -@.str.484 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00" -@.str.485 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" -@.str.486 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.487 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.488 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.489 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.491 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.492 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.493 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.494 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.495 = private unnamed_addr constant [1 x i8] c"\00" -@.str.496 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.497 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.498 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.499 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.500 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.501 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.502 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.503 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.504 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.506 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.507 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.508 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.509 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.510 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.511 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.512 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.513 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.514 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.516 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.517 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.518 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.519 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.520 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.521 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.522 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.523 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.524 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.525 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.527 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.528 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.529 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.530 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.531 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.532 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.533 = private unnamed_addr constant [2 x i8] c".\00" -@.str.534 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.535 = private unnamed_addr constant [8 x i8] c"nothing\00" -@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.537 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.538 = private unnamed_addr constant [2 x i8] c":\00" -@.str.539 = private unnamed_addr constant [2 x i8] c":\00" -@.str.540 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.541 = private unnamed_addr constant [1 x i8] c"\00" -@.str.542 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.545 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.546 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.547 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.548 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.549 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.550 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.553 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.554 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.555 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.556 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.557 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.558 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.559 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.560 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.561 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.562 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.563 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.564 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.565 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.566 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.567 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.568 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.569 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.570 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.571 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.572 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.573 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.574 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.575 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.576 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.577 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.578 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.579 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.580 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.581 = private unnamed_addr constant [12 x i8] c"end of file\00" -@.str.582 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.583 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.584 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.585 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.586 = private unnamed_addr constant [9 x i8] c"a string\00" -@.str.587 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.588 = private unnamed_addr constant [7 x i8] c"a char\00" -@.str.589 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.590 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.591 = private unnamed_addr constant [10 x i8] c"expected \00" -@.str.592 = private unnamed_addr constant [9 x i8] c", found \00" -@.str.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.594 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.595 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.596 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.597 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.598 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.599 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.600 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.601 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.602 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.603 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.604 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.605 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.606 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.607 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.608 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.609 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.610 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.611 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.612 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.613 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.614 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.615 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.616 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.617 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.618 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.619 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.620 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.621 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.622 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.623 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.624 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.625 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" -@.str.626 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.627 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.628 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" -@.str.629 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.630 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.631 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.632 = private unnamed_addr constant [40 x i8] c"']' (a map type looks like map[str]int)\00" -@.str.633 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.634 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.635 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.636 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.637 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.638 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.639 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.640 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.641 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.642 = private unnamed_addr constant [2 x i8] c".\00" -@.str.643 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.644 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.645 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.646 = private unnamed_addr constant [2 x i8] c",\00" -@.str.647 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.648 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.649 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.650 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.651 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.652 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.653 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.654 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.655 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.656 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.657 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.658 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.659 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.660 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.661 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.662 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.663 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.664 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.666 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.667 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.668 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.669 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.670 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.671 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.672 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.673 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.674 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.675 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.676 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.677 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.678 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.679 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.680 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.681 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.682 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.683 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.684 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.685 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.686 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.687 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.688 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.689 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.690 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.691 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.692 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.693 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.694 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.695 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.696 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.697 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.698 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.699 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.700 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.701 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.703 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.705 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.706 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.707 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.708 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.709 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.710 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.711 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.712 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.714 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.715 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.716 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.717 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.718 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.719 = private unnamed_addr constant [2 x i8] c".\00" -@.str.720 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.721 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.723 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.725 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.726 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.727 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.728 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.729 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.730 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" -@.str.731 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.732 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.733 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.735 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.736 = private unnamed_addr constant [2 x i8] c":\00" -@.str.737 = private unnamed_addr constant [2 x i8] c":\00" -@.str.738 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.739 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" -@.str.740 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.741 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.742 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" -@.str.743 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.744 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.745 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.746 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.747 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.748 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.749 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.750 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.751 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.752 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.753 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.754 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.755 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" -@.str.756 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.757 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.758 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.759 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.760 = private unnamed_addr constant [7 x i8] c"'enum'\00" -@.str.761 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.762 = private unnamed_addr constant [13 x i8] c"an enum name\00" -@.str.763 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.764 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.765 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.766 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.767 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" -@.str.768 = private unnamed_addr constant [8 x i8] c"variant\00" -@.str.769 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.770 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" -@.str.771 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.772 = private unnamed_addr constant [2 x i8] c")\00" -@.str.773 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.774 = private unnamed_addr constant [2 x i8] c",\00" -@.str.775 = private unnamed_addr constant [2 x i8] c")\00" -@.str.776 = private unnamed_addr constant [36 x i8] c"')' after the values of the variant\00" -@.str.777 = private unnamed_addr constant [13 x i8] c"the variant \00" -@.str.778 = private unnamed_addr constant [28 x i8] c" has empty () : write just \00" -@.str.779 = private unnamed_addr constant [21 x i8] c" if it holds nothing\00" -@.str.780 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.781 = private unnamed_addr constant [53 x i8] c"a variant can't have both values inside and a number\00" -@.str.782 = private unnamed_addr constant [1 x i8] c"\00" -@.str.783 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.784 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.785 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.786 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" -@.str.787 = private unnamed_addr constant [2 x i8] c",\00" -@.str.788 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.789 = private unnamed_addr constant [17 x i8] c" has no variants\00" -@.str.790 = private unnamed_addr constant [55 x i8] c"an enum whose variants hold values can't number them (\00" -@.str.791 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.793 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.794 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.795 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.796 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.797 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.798 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.799 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.800 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.801 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.802 = private unnamed_addr constant [8 x i8] c"'match'\00" -@.str.803 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.804 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.805 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.806 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.807 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.808 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\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 [38 x i8] c"a match is never closed (missing '}')\00" -@.str.812 = private unnamed_addr constant [4 x i8] c"arm\00" -@.str.813 = private unnamed_addr constant [9 x i8] c"patterns\00" -@.str.814 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.815 = private unnamed_addr constant [2 x i8] c",\00" -@.str.816 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.817 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00" -@.str.818 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.819 = private unnamed_addr constant [2 x i8] c",\00" -@.str.820 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.821 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.822 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" -@.str.823 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.824 = private unnamed_addr constant [4 x i8] c"'['\00" -@.str.825 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.826 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" -@.str.827 = private unnamed_addr constant [2 x i8] c",\00" -@.str.828 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.829 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" -@.str.830 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.831 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.832 = private unnamed_addr constant [9 x i8] c"'struct'\00" -@.str.833 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.834 = private unnamed_addr constant [14 x i8] c"a struct name\00" -@.str.835 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.836 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.837 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.838 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.839 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.840 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" -@.str.841 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.842 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.843 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" -@.str.844 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.845 = private unnamed_addr constant [13 x i8] c"a field name\00" -@.str.846 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.847 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.848 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.849 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.850 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" -@.str.851 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.852 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" -@.str.853 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.854 = private unnamed_addr constant [16 x i8] c"a function name\00" -@.str.855 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.856 = private unnamed_addr constant [2 x i8] c".\00" -@.str.857 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.858 = private unnamed_addr constant [14 x i8] c"a method name\00" -@.str.859 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.860 = private unnamed_addr constant [4 x i8] c"'('\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 [2 x i8] c")\00" -@.str.864 = private unnamed_addr constant [6 x i8] c"param\00" -@.str.865 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.866 = private unnamed_addr constant [17 x i8] c"a parameter name\00" -@.str.867 = private unnamed_addr constant [2 x i8] c",\00" -@.str.868 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.869 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.870 = private unnamed_addr constant [2 x i8] c")\00" -@.str.871 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.872 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.873 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.874 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.875 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.876 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.877 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.878 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" -@.str.879 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.880 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.881 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.882 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.883 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.884 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.885 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.886 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.887 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.888 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.889 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" -@.str.890 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.891 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.892 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.893 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.894 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.895 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.896 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.897 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.898 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" -@.str.899 = private unnamed_addr constant [2 x i8] c",\00" -@.str.900 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.901 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" -@.str.902 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.903 = private unnamed_addr constant [5 x i8] c"'in'\00" -@.str.904 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.905 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" -@.str.906 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.907 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.908 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.909 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.910 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.911 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.912 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.913 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.914 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.915 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.916 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.917 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.918 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.919 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.920 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.921 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.922 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.923 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" -@.str.924 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.925 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.926 = private unnamed_addr constant [16 x i8] c"a variable name\00" -@.str.927 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.928 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.929 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.930 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.931 = private unnamed_addr constant [2 x i8] c"=\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 [3 x i8] c"%=\00" -@.str.937 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.938 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.939 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.940 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" -@.str.941 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.942 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.943 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.944 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.945 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.946 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.947 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.948 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" -@.str.949 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.950 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.951 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.952 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.953 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.954 = private unnamed_addr constant [5 x i8] c"'if'\00" -@.str.955 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.956 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.957 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.958 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.959 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.960 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.961 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.962 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.963 = private unnamed_addr constant [2 x i8] c">\00" -@.str.964 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.965 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.966 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.967 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.968 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.969 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.970 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.971 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.972 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.973 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.974 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.975 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.976 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.977 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.978 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.979 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.980 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.981 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.982 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.983 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.984 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.986 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.987 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.988 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.989 = private unnamed_addr constant [2 x i8] c")\00" -@.str.990 = private unnamed_addr constant [2 x i8] c")\00" -@.str.991 = private unnamed_addr constant [1 x i8] c"\00" -@.str.992 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.993 = private unnamed_addr constant [2 x i8] c":\00" -@.str.994 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.995 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" -@.str.996 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.997 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" -@.str.998 = private unnamed_addr constant [2 x i8] c",\00" -@.str.999 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1000 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1001 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1002 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1003 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1004 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.1005 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1006 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" -@.str.1007 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1008 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1009 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1010 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.1011 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1012 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1013 = private unnamed_addr constant [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"']'\00" -@.str.1017 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1018 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1019 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1021 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.1022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1023 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1024 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1025 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1026 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1027 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1028 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1029 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1030 = private unnamed_addr constant [30 x i8] c"used .depth 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 [30 x i8] c"used .depth on a null pointer\00" -@.str.1033 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1034 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1035 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.1036 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1037 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1038 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1039 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1040 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1041 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1042 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1043 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1044 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1045 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1046 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1047 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1048 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" -@.str.1049 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1050 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1051 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1052 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1053 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.1054 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1055 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1056 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1057 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.1058 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1059 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.1060 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1061 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1062 = private unnamed_addr constant [6 x i8] c"targs\00" -@.str.1063 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1064 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1065 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.1066 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1067 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1068 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1069 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.1070 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.1071 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" -@.str.1072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1073 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1074 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.1075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1076 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1077 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.1078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1079 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1080 = private unnamed_addr constant [2 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 [12 x i8] c"src/gen.fch\00" -@.str.1084 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1085 = private unnamed_addr constant [4 x i8] c"@R\09\00" -@.str.1086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1087 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1089 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1090 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1091 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1092 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1093 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1094 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1095 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1097 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1099 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1100 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1101 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1102 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1103 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1104 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1105 = private unnamed_addr constant [6 x i8] c" -> !\00" -@.str.1106 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1107 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.1108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1109 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1111 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1112 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1114 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1117 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.1118 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.1119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1120 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1123 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1124 = private unnamed_addr constant [4 x i8] c"@I\09\00" -@.str.1125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1126 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1128 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1132 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1135 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1136 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1141 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1143 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1146 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1147 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1148 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.1149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1150 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1152 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.1156 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1157 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1162 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1164 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1165 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1166 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1167 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1168 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1169 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1170 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1171 = private unnamed_addr constant [7 x i8] c"](...)\00" -@.str.1172 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1174 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1176 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"@S\09\00" -@.str.1182 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1183 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1185 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [28 x i8] c"used .idx on a null pointer\00" -@.str.1191 = private unnamed_addr constant [5 x i8] c"@SF\09\00" -@.str.1192 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1193 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1195 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1198 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 .progs 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 [1 x i8] c"\00" -@.str.1203 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1204 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1205 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1206 = private unnamed_addr constant [4 x i8] c"@E\09\00" -@.str.1207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1208 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1210 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1211 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1213 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1215 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1216 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1217 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1219 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1221 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1223 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1225 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1226 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1227 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1229 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c":\00" -@.str.1232 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1233 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.1234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1235 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.1236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1240 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1242 = private unnamed_addr constant [6 x i8] c"call \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 .body on a null pointer\00" -@.str.1245 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1246 = private unnamed_addr constant [9 x i8] c", !dbg !\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 .body on a null pointer\00" -@.str.1249 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1251 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1252 = private unnamed_addr constant [3 x i8] c"%t\00" -@.str.1253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1254 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1256 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1258 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1260 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1261 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1263 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1265 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1266 = private unnamed_addr constant [11 x i8] c"br label %\00" -@.str.1267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1268 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1269 = private unnamed_addr constant [7 x i8] c"br i1 \00" -@.str.1270 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1271 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1273 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1275 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1276 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1278 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1280 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1281 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1282 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str.1283 = private unnamed_addr constant [11 x i8] c", align 16\00" -@.str.1284 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str.1285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1286 = private unnamed_addr constant [7 x i8] c"store \00" -@.str.1287 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1288 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1289 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.1290 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1291 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1292 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1293 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1294 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1295 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1296 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1297 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1298 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1299 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1300 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1301 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1302 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1303 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1304 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1305 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1306 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1307 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1308 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1311 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1313 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1316 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1319 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1321 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1324 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1327 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1329 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1332 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.1335 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1337 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1340 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1344 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1346 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1347 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1348 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1349 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1350 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1351 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1352 = 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.1353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1354 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1355 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" -@.str.1356 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1357 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1359 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1361 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.1362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1363 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1365 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.1366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1367 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1370 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1371 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1372 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1373 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1374 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1375 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1376 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" -@.str.1377 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1378 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1379 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1381 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1382 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1383 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1385 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1386 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1387 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1388 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1389 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" -@.str.1390 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1391 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1393 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1394 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1396 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1397 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.1402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1403 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1404 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.1405 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1406 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1407 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1408 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.1409 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1410 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.1411 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1412 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1413 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1414 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1415 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1416 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1417 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" -@.str.1418 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1419 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1420 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.1421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1422 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1423 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1424 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1425 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1426 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1427 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1428 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1429 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1430 = private unnamed_addr constant [4 x i8] c"%S.\00" -@.str.1431 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1432 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1434 = private unnamed_addr constant [7 x i8] c"{ i1, \00" -@.str.1435 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" -@.str.1436 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1437 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1438 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1439 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1440 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1441 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1442 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1443 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1444 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.1445 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1446 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1447 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1448 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1449 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.1450 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.1451 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1452 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1453 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1454 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1455 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1456 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1458 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1459 = private unnamed_addr constant [5 x i8] c"arr_\00" -@.str.1460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1461 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1462 = private unnamed_addr constant [5 x i8] c"map_\00" -@.str.1463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1464 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1466 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1467 = private unnamed_addr constant [3 x i8] c"E_\00" -@.str.1468 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1469 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1470 = private unnamed_addr constant [3 x i8] c"S_\00" -@.str.1471 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1472 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.1473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1476 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1477 = private unnamed_addr constant [7 x i8] c"@.str.\00" -@.str.1478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1479 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1480 = private unnamed_addr constant [2 x i8] c"\5C\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 .head on a null pointer\00" -@.str.1483 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str.1484 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str.1485 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1486 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" -@.str.1487 = private unnamed_addr constant [7 x i8] c"{ ptr \00" -@.str.1488 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1489 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" -@.str.1490 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1491 = private unnamed_addr constant [6 x i8] c"panic\00" -@.str.1492 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str.1493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1494 = private unnamed_addr constant [30 x i8] c"used .files 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 [28 x i8] c"call void @finch_panic(ptr \00" -@.str.1497 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1498 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1499 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1500 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1502 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1503 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.1504 = private unnamed_addr constant [8 x i8] c"inrange\00" -@.str.1505 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" -@.str.1506 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1508 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1510 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" -@.str.1511 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1512 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1513 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1514 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1515 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1517 = private unnamed_addr constant [29 x i8] c"used .term 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 .body 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 [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.1526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1527 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1529 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1531 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1533 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1535 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1537 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1539 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.1540 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.1541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1542 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1544 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1546 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1547 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1548 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.1549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1550 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1552 = private unnamed_addr constant [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp on a null pointer\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 .term 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 [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1559 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1560 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1561 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1562 = private unnamed_addr constant [7 x i8] c"n.cond\00" -@.str.1563 = private unnamed_addr constant [7 x i8] c"n.body\00" -@.str.1564 = private unnamed_addr constant [6 x i8] c"n.end\00" -@.str.1565 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1566 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.1567 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1568 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1570 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1571 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.1572 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1576 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1577 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.1578 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1579 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1580 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1581 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1582 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1583 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1584 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1585 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1586 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1587 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" -@.str.1588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1589 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1591 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1592 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1594 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1595 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1596 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1597 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1598 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1599 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1600 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1601 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" -@.str.1602 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1603 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1604 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1606 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1607 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1608 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1610 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1611 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1615 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1616 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1617 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" -@.str.1618 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1620 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1622 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1623 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1624 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1625 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1626 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1627 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1628 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.1629 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1633 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1635 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1636 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1638 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1639 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" -@.str.1640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1642 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" -@.str.1643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1645 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1646 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1647 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" -@.str.1648 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1649 = private unnamed_addr constant [31 x i8] c"call void @finch_str_drop(ptr \00" -@.str.1650 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1651 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1652 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1653 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1655 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.1656 = private unnamed_addr constant [13 x i8] c"@finch.drop.\00" -@.str.1657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1658 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1660 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1661 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1663 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1664 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1665 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1666 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1667 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1668 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1670 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1671 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_free(ptr %a)\00" -@.str.1672 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1676 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1677 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1678 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1680 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1681 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1682 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1683 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1685 = private unnamed_addr constant [34 x i8] c"call void @finch_map_free(ptr %a)\00" -@.str.1686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1690 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1691 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1694 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1695 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1696 = private unnamed_addr constant [9 x i8] c"(ptr %a)\00" -@.str.1697 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1698 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1699 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1700 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1702 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1704 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1707 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1709 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1710 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1711 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.1712 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1713 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1714 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" -@.str.1715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1716 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1717 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1718 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1719 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1720 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1721 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1722 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1723 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1724 = private unnamed_addr constant [5 x i8] c"%lld\00" -@.str.1725 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1726 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1727 = private unnamed_addr constant [5 x i8] c"%llu\00" -@.str.1728 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1729 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1730 = private unnamed_addr constant [3 x i8] c"%g\00" -@.str.1731 = private unnamed_addr constant [8 x i8] c"double \00" -@.str.1732 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1733 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1734 = private unnamed_addr constant [9 x i8] c"sext i8 \00" -@.str.1735 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1736 = private unnamed_addr constant [5 x i8] c"'%c'\00" -@.str.1737 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1738 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.1739 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1740 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1741 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1742 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1743 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1744 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1745 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1746 = private unnamed_addr constant [3 x i8] c"%s\00" -@.str.1747 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.1748 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1749 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1750 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1751 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.1752 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1753 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" -@.str.1754 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1755 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1756 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1757 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1758 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1759 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1760 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1761 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1762 = private unnamed_addr constant [9 x i8] c"ptr.null\00" -@.str.1763 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" -@.str.1764 = private unnamed_addr constant [9 x i8] c"ptr.done\00" -@.str.1765 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1766 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1767 = private unnamed_addr constant [7 x i8] c"0x%llx\00" -@.str.1768 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1769 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.1770 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1771 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1772 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1773 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1774 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1775 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1776 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1777 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" -@.str.1778 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1779 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" -@.str.1780 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1781 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1782 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1783 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1784 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.1785 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" -@.str.1786 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1787 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1788 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1789 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" -@.str.1790 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1791 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1793 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" -@.str.1794 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.1795 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1796 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1797 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1798 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" -@.str.1799 = private unnamed_addr constant [6 x i8] c", i8 \00" -@.str.1800 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1801 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1802 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1803 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" -@.str.1804 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1805 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.1806 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1807 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1808 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1809 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" -@.str.1810 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1811 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1812 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1813 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1814 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1815 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" -@.str.1816 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1817 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1818 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1819 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1820 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1821 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1822 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" -@.str.1823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1824 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1826 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1827 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1830 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1831 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1832 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1833 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1834 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1835 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1836 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1837 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.1838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1839 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1840 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1841 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1842 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1843 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1844 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1846 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1847 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1848 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1849 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1851 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1853 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1854 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1855 = private unnamed_addr constant [11 x i8] c"enum.other\00" -@.str.1856 = private unnamed_addr constant [10 x i8] c"enum.done\00" -@.str.1857 = private unnamed_addr constant [7 x i8] c"enum.v\00" -@.str.1858 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1860 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1862 = private unnamed_addr constant [12 x i8] c"switch i32 \00" -@.str.1863 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1864 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1865 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1866 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1868 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1870 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1872 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1873 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1874 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" -@.str.1875 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str.1876 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1877 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1878 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1879 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1880 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1881 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1882 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1883 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1884 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1885 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.1886 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1887 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1888 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1889 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1891 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1892 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1893 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1894 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1895 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1896 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1897 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1898 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1899 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1900 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1901 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1902 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1903 = private unnamed_addr constant [5 x i8] c"%buf\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 [5 x i8] c"%buf\00" -@.str.1907 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1908 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1911 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1912 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.1913 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1915 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1918 = private unnamed_addr constant [32 x i8] c"used .structs 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 [4 x i8] c"i64\00" -@.str.1921 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1922 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1924 = private unnamed_addr constant [10 x i8] c"sum.other\00" -@.str.1925 = private unnamed_addr constant [9 x i8] c"sum.done\00" -@.str.1926 = private unnamed_addr constant [6 x i8] c"sum.v\00" -@.str.1927 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1928 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1930 = private unnamed_addr constant [12 x i8] c"switch i64 \00" -@.str.1931 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1932 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1934 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1936 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1938 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1940 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1941 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1942 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1944 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1945 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1947 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1948 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1950 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1953 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1954 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1955 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1956 = private unnamed_addr constant [4 x i8] c"(?)\00" -@.str.1957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1958 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1960 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1961 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1962 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1963 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1964 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1966 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1967 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1968 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1970 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1973 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1974 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1976 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1977 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" -@.str.1978 = private unnamed_addr constant [7 x i8] c"trunc \00" -@.str.1979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1980 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1981 = private unnamed_addr constant [6 x i8] c"sext \00" -@.str.1982 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1983 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1984 = private unnamed_addr constant [6 x i8] c"zext \00" -@.str.1985 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1986 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1987 = private unnamed_addr constant [7 x i8] c"fpext \00" -@.str.1988 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1989 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1990 = private unnamed_addr constant [9 x i8] c"fptrunc \00" -@.str.1991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1992 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1993 = private unnamed_addr constant [8 x i8] c"sitofp \00" -@.str.1994 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1995 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1996 = private unnamed_addr constant [8 x i8] c"uitofp \00" -@.str.1997 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1998 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1999 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2000 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2001 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2002 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2003 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2004 = private unnamed_addr constant [12 x i8] c"the number \00" -@.str.2005 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" -@.str.2006 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2007 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.2008 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2009 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2010 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2011 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2012 = private unnamed_addr constant [10 x i8] c" must be \00" -@.str.2013 = private unnamed_addr constant [15 x i8] c", but this is \00" -@.str.2014 = private unnamed_addr constant [7 x i8] c" (use \00" -@.str.2015 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" -@.str.2016 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" -@.str.2017 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2018 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2019 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2021 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" -@.str.2022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2023 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2034 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [12 x i8] c"src/gen.fch\00" -@.str.2039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2040 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 [12 x i8] c"src/gen.fch\00" -@.str.2045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2046 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2048 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2051 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2054 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2057 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2059 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2062 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2065 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2067 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.2068 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.2069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2070 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2071 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2072 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2073 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2074 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.2075 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.2076 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.2077 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.2078 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.2079 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.2080 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.2081 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.2082 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2083 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.2084 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2085 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2086 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2087 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2088 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2089 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2090 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2091 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.2092 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2093 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.2094 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.2095 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2096 = private unnamed_addr constant [19 x i8] c"a variable named '\00" -@.str.2097 = private unnamed_addr constant [22 x i8] c"' already exists here\00" -@.str.2098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2099 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2100 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2101 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" -@.str.2102 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2103 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" -@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2105 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2107 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2110 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2116 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2118 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2121 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2123 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.2124 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2126 = private unnamed_addr constant [2 x i8] c"$\00" -@.str.2127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2128 = private unnamed_addr constant [30 x i8] c"used .progs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.2131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2133 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .idx on a null pointer\00" -@.str.2137 = private unnamed_addr constant [4 x i8] c"@V\09\00" -@.str.2138 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2139 = private unnamed_addr constant [2 x i8] c"\09\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 .files 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 [2 x i8] c"\09\00" -@.str.2144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2147 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2149 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2150 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2151 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.2152 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2153 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.2154 = private unnamed_addr constant [1 x i8] c"\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 .scopes on a null pointer\00" -@.str.2157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2158 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2160 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2162 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2164 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2166 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2169 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2173 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2177 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2179 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2181 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2182 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2183 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2187 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2191 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2195 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2197 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2199 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2201 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2202 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.2203 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.2204 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2206 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2207 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.2208 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.2209 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.2210 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.2211 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.2212 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.2213 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.2214 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.2215 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.2216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2217 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.2218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2219 = private unnamed_addr constant [27 x i8] c"used .mm 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 [5 x i8] c"call\00" -@.str.2222 = private unnamed_addr constant [5 x i8] c"addr\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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2227 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2230 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2232 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2235 = private unnamed_addr constant [30 x i8] c"used .progs 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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2243 = private unnamed_addr constant [13 x i8] c"the struct '\00" -@.str.2244 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2246 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2248 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2250 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2252 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2254 = private unnamed_addr constant [30 x i8] c"used .progs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2259 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2261 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2264 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2271 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2272 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2274 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2275 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2276 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2277 = private unnamed_addr constant [7 x i8] c" twice\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 .sums 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2283 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2284 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2285 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2287 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2289 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2290 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2291 = private unnamed_addr constant [7 x i8] c" twice\00" -@.str.2292 = private unnamed_addr constant [17 x i8] c"two variants of \00" -@.str.2293 = private unnamed_addr constant [18 x i8] c" have the number \00" -@.str.2294 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" -@.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2296 = private unnamed_addr constant [30 x i8] c"used .enums 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.2299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2300 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2301 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2303 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2306 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2308 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2310 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2313 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2315 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2318 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2322 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2323 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2324 = private unnamed_addr constant [19 x i8] c"' is defined twice\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 [1 x i8] c"\00" -@.str.2328 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2329 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" -@.str.2330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2331 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2333 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2335 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2337 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2338 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2339 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2340 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2343 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2344 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2345 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2346 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" -@.str.2347 = 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.2348 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2349 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2350 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2352 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2354 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2355 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" -@.str.2356 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2358 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2359 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2360 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2361 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2362 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" -@.str.2363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2364 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2365 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2367 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2368 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2369 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2371 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2372 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2373 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2375 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2377 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" -@.str.2378 = private unnamed_addr constant [25 x i8] c" the method is called on\00" -@.str.2379 = 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 [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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2385 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2390 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2393 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2395 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2399 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"self\00" -@.str.2403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2405 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2408 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.2409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2410 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2413 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2415 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2418 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [5 x i8] c"self\00" -@.str.2422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2424 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2427 = private unnamed_addr constant [27 x i8] c"used .mm 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 [29 x i8] c"used .sigs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2433 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2437 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.2442 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2445 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2449 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2452 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [34 x i8] c"used .templates 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 [34 x i8] c"used .templates on a null pointer\00" -@.str.2459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2460 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2461 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2462 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2463 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" -@.str.2464 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" -@.str.2465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2466 = private unnamed_addr constant [34 x i8] c"used .templates 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 [8 x i8] c" takes \00" -@.str.2469 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" -@.str.2470 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2471 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2472 = private unnamed_addr constant [12 x i8] c"], but got \00" -@.str.2473 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2474 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2476 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [7 x i8] c"struct\00" -@.str.2480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2481 = private unnamed_addr constant [34 x i8] c"used .templates 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 [2 x i8] c"[\00" -@.str.2484 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2486 = private unnamed_addr constant [30 x i8] c"used .progs 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 [8 x i8] c"@finch.\00" -@.str.2490 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2491 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2492 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2493 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2494 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2496 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.2500 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2502 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2504 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2506 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2508 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2509 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2510 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2512 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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 [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .tnames 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 [30 x i8] c"used .targs on a null pointer\00" -@.str.2522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2523 = private unnamed_addr constant [31 x i8] c"used .module 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2527 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2529 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2530 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2532 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2535 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" -@.str.2536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2538 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2540 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2541 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2542 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2545 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2546 = private unnamed_addr constant [4 x i8] c"map\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 [12 x i8] c"src/gen.fch\00" -@.str.2550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2551 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2552 = private unnamed_addr constant [7 x i8] c"struct\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 [12 x i8] c"src/gen.fch\00" -@.str.2558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2559 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2562 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2565 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2566 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" -@.str.2567 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2568 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2569 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2570 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2572 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.2573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2574 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2575 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2577 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" -@.str.2578 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2579 = private unnamed_addr constant [6 x i8] c" from\00" -@.str.2580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2582 = private unnamed_addr constant [17 x i8] c"can't tell what \00" -@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2584 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" -@.str.2585 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.2586 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2588 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2593 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.2594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2595 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2596 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2597 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2599 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2601 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2605 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2607 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2608 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2609 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2611 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2614 = private unnamed_addr constant [32 x i8] c"used .structs 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 .structs on a null pointer\00" -@.str.2618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2620 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2622 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2623 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2624 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2625 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2627 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" -@.str.2628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2629 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2632 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2635 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2638 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2641 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2642 = private unnamed_addr constant [6 x i8] c"%S.C.\00" -@.str.2643 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2644 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2645 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2647 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2650 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2653 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2656 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2658 = private unnamed_addr constant [30 x i8] c"used .targs 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2662 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2665 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2667 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2670 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2671 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2673 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2675 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2676 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2677 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2679 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2681 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2683 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2685 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2691 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2695 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2697 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2698 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" -@.str.2699 = private unnamed_addr constant [8 x i8] c"] or []\00" -@.str.2700 = private unnamed_addr constant [16 x i8] c" for that field\00" -@.str.2701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2702 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2705 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2707 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2710 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2711 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2712 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2713 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2716 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2717 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2718 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2719 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2722 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2726 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2728 = private unnamed_addr constant [31 x i8] c"used .module 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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2733 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2734 = private unnamed_addr constant [4 x i8] c"%S.\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 .structs on a null pointer\00" -@.str.2737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2738 = private unnamed_addr constant [2 x i8] c".\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 .structs on a null pointer\00" -@.str.2741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2742 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2743 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2744 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2746 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2747 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2748 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2749 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2750 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2752 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.2753 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2754 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2755 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2756 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2757 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2758 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2759 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2760 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2761 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2762 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2763 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2764 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2765 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2766 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2768 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2770 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2772 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" -@.str.2773 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2774 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2775 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2776 = private unnamed_addr constant [13 x i8] c", baseType: \00" -@.str.2777 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2778 = private unnamed_addr constant [11 x i8] c", offset: \00" -@.str.2779 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2780 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2781 = private unnamed_addr constant [10 x i8] c"\22, size: \00" -@.str.2782 = private unnamed_addr constant [13 x i8] c", encoding: \00" -@.str.2783 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2784 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2785 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2786 = private unnamed_addr constant [3 x i8] c"T:\00" -@.str.2787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2788 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2790 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2792 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2793 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2795 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2796 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2797 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" -@.str.2798 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2799 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2800 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" -@.str.2801 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2802 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2803 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2804 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2805 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2806 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2807 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2808 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2809 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2810 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" -@.str.2811 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2812 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2814 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.2815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2816 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" -@.str.2817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2818 = private unnamed_addr constant [11 x i8] c"\22, value: \00" -@.str.2819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2820 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2821 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" -@.str.2822 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2823 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" -@.str.2824 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2825 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2826 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2828 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2831 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2832 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2834 = private unnamed_addr constant [27 x i8] c"used .md 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 [6 x i8] c"fixed\00" -@.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2838 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" -@.str.2839 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2840 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" -@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2842 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2843 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" -@.str.2844 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2846 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2848 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2849 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2850 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2851 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2853 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2854 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2855 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2856 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2857 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2858 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2859 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2860 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2861 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" -@.str.2862 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2863 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2864 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2866 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2868 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2869 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2870 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" -@.str.2871 = private unnamed_addr constant [8 x i8] c"entries\00" -@.str.2872 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2873 = private unnamed_addr constant [5 x i8] c"used\00" -@.str.2874 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2875 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2876 = private unnamed_addr constant [5 x i8] c"icap\00" -@.str.2877 = private unnamed_addr constant [5 x i8] c"adds\00" -@.str.2878 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2880 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2881 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2882 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" -@.str.2883 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2884 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2886 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2888 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2890 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2897 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2898 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2899 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2900 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" -@.str.2901 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2902 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2904 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2906 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2907 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" -@.str.2908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2909 = private unnamed_addr constant [27 x i8] c"used .md 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 [12 x i8] c"src/gen.fch\00" -@.str.2912 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2913 = private unnamed_addr constant [3 x i8] c"L:\00" -@.str.2914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2915 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2916 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2918 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2919 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2921 = private unnamed_addr constant [33 x i8] c"used .dbgScope 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 [32 x i8] c"used .mdcache 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 [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2926 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2927 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" -@.str.2928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2929 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2930 = private unnamed_addr constant [11 x i8] c", column: \00" -@.str.2931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2932 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2933 = private unnamed_addr constant [11 x i8] c", scope: !\00" -@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2935 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2936 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2938 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2940 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2941 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2942 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2943 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2945 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" -@.str.2946 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2947 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2948 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" -@.str.2949 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" -@.str.2950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2951 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2952 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2953 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2954 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2955 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" -@.str.2956 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" -@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2958 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2960 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2961 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2962 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2963 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2964 = private unnamed_addr constant [8 x i8] c", arg: \00" -@.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2966 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2967 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" -@.str.2968 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2970 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2971 = private unnamed_addr constant [10 x i8] c", file: !\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 .mdfiles 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 [9 x i8] c", line: \00" -@.str.2976 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2977 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2979 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2981 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2982 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" -@.str.2983 = private unnamed_addr constant [13 x i8] c", metadata !\00" -@.str.2984 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" -@.str.2985 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" -@.str.2986 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" -@.str.2987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2988 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2989 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2990 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.2991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2992 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2994 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2995 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2997 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3002 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3004 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.3005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3006 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3008 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3010 = private unnamed_addr constant [28 x i8] c"used .cur 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 .targs on a null pointer\00" -@.str.3013 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3015 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3017 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3018 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.3019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3020 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3021 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3023 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3025 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3027 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3030 = private unnamed_addr constant [28 x i8] c"used .cur 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 [29 x i8] c"used .body 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 [32 x i8] c"used .allocas on a null pointer\00" -@.str.3036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3037 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.3040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3041 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3043 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3045 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3047 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3049 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3051 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3053 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3055 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3057 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3059 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3060 = private unnamed_addr constant [10 x i8] c"ptr %self\00" -@.str.3061 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3063 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3064 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3066 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3068 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3070 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3072 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3073 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3075 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3076 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3077 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3079 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3081 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3083 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str.3084 = private unnamed_addr constant [3 x i8] c"%p\00" -@.str.3085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3086 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3089 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3091 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3093 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3096 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3099 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3102 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3105 = private unnamed_addr constant [29 x i8] c"used .term 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3109 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.3110 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" -@.str.3111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3112 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3115 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3117 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3118 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3119 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3120 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3121 = private unnamed_addr constant [8 x i8] c" !dbg !\00" -@.str.3122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3123 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.3126 = private unnamed_addr constant [17 x i8] c"define internal \00" -@.str.3127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3128 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3129 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3131 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3132 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.3133 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3134 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3135 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.3136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3137 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.3138 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3139 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3141 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.3142 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3143 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.3144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3145 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3146 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00" -@.str.3147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3148 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3150 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3151 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3152 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.3153 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.3154 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.3155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3156 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3159 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3160 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.3161 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3162 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3163 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3164 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.3165 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3167 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3168 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.3169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3170 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3172 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3175 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3178 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3182 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3185 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3186 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3187 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.3188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3190 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" -@.str.3191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3192 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3193 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" -@.str.3194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3195 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3197 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3199 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3200 = private unnamed_addr constant [19 x i8] c"unknown statement \00" -@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3202 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3204 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" -@.str.3205 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3207 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" -@.str.3208 = private unnamed_addr constant [8 x i8] c" = null\00" -@.str.3209 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3212 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3213 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3215 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.3216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3218 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3222 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3223 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.3224 = private unnamed_addr constant [19 x i8] c"' (create it with \00" -@.str.3225 = private unnamed_addr constant [9 x i8] c" := ...)\00" -@.str.3226 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.3227 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.3228 = private unnamed_addr constant [10 x i8] c"the value\00" -@.str.3229 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3230 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3231 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3232 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.3233 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3234 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3236 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3238 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3242 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3244 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3245 = private unnamed_addr constant [12 x i8] c"a condition\00" -@.str.3246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3247 = private unnamed_addr constant [5 x i8] c"then\00" -@.str.3248 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.3249 = private unnamed_addr constant [6 x i8] c"endif\00" -@.str.3250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3252 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3255 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3256 = private unnamed_addr constant [11 x i8] c"while.cond\00" -@.str.3257 = private unnamed_addr constant [11 x i8] c"while.body\00" -@.str.3258 = private unnamed_addr constant [10 x i8] c"while.end\00" -@.str.3259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3260 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3262 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3265 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3267 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3269 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3271 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3273 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3275 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3276 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3277 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3278 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3279 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3281 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3283 = private unnamed_addr constant [21 x i8] c"the start of a range\00" -@.str.3284 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3285 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3287 = private unnamed_addr constant [19 x i8] c"the end of a range\00" -@.str.3288 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3289 = private unnamed_addr constant [9 x i8] c"for.cond\00" -@.str.3290 = private unnamed_addr constant [9 x i8] c"for.body\00" -@.str.3291 = private unnamed_addr constant [9 x i8] c"for.step\00" -@.str.3292 = private unnamed_addr constant [8 x i8] c"for.end\00" -@.str.3293 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3294 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3295 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3297 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3299 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3301 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3304 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3306 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3307 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3308 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3309 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3310 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3315 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3316 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3317 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3319 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3320 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3321 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3322 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.3323 = private unnamed_addr constant [9 x i8] c"map.cond\00" -@.str.3324 = private unnamed_addr constant [10 x i8] c"map.check\00" -@.str.3325 = private unnamed_addr constant [9 x i8] c"map.body\00" -@.str.3326 = private unnamed_addr constant [9 x i8] c"map.step\00" -@.str.3327 = private unnamed_addr constant [8 x i8] c"map.end\00" -@.str.3328 = private unnamed_addr constant [12 x i8] c"map.changed\00" -@.str.3329 = private unnamed_addr constant [9 x i8] c"map.same\00" -@.str.3330 = private unnamed_addr constant [4 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 [15 x i8] c", i32 0, i32 6\00" -@.str.3334 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3335 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3336 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" -@.str.3337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3338 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3340 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3342 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3344 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3345 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3346 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3347 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3349 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3350 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3351 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3352 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3353 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3354 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3356 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3358 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3360 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3363 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3365 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3366 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3367 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3368 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3369 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3371 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3372 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3373 = private unnamed_addr constant [6 x i8] c"$list\00" -@.str.3374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3375 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3376 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3377 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3378 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3380 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" -@.str.3381 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" -@.str.3382 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3383 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3387 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3388 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3389 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3390 = private unnamed_addr constant [10 x i8] c"each.cond\00" -@.str.3391 = private unnamed_addr constant [10 x i8] c"each.body\00" -@.str.3392 = private unnamed_addr constant [10 x i8] c"each.step\00" -@.str.3393 = private unnamed_addr constant [9 x i8] c"each.end\00" -@.str.3394 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3395 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.3396 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3397 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3398 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3399 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3400 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3401 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3402 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3403 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3405 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3407 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3408 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3409 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3410 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3413 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3415 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3416 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3418 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3419 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3421 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3422 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" -@.str.3423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3424 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3426 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3429 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3430 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3432 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3435 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3436 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3437 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3439 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3440 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" -@.str.3441 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3442 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3444 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3446 = private unnamed_addr constant [18 x i8] c"the error message\00" -@.str.3447 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3449 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3450 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3451 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3453 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3454 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3455 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3457 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3459 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3460 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3462 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3464 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3465 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" -@.str.3466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3467 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3468 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3470 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3471 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3472 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3474 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3475 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3477 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3478 = private unnamed_addr constant [15 x i8] c"' must return \00" -@.str.3479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3480 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3482 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3484 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3485 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3487 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3490 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3494 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3496 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3500 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.3501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3502 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3506 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3508 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3512 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.3516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3517 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3519 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3521 = private unnamed_addr constant [19 x i8] c"the returned value\00" -@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3523 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3524 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3526 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3527 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" -@.str.3528 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3530 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3531 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3532 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3534 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3535 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3536 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3537 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3539 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3540 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3541 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3543 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3544 = private unnamed_addr constant [2 x i8] c" \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 [8 x i8] c"{ i64, \00" -@.str.3548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3549 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3551 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.3552 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.3553 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.3554 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3555 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3556 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3557 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.3558 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3559 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3560 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3561 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3562 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3563 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.3564 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3567 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.3568 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.3569 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3570 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3571 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3573 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.3574 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" -@.str.3575 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3576 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3577 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3578 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3579 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3580 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" -@.str.3581 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3582 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3583 = private unnamed_addr constant [8 x i8] c"map.new\00" -@.str.3584 = private unnamed_addr constant [9 x i8] c"map.have\00" -@.str.3585 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.3586 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3587 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3596 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3597 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" -@.str.3598 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3599 = private unnamed_addr constant [12 x i8] c"map.missing\00" -@.str.3600 = private unnamed_addr constant [10 x i8] c"map.found\00" -@.str.3601 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3602 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3603 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3604 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3605 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3606 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" -@.str.3607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3608 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3610 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3611 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3613 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3615 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3616 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3617 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" -@.str.3618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3619 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3620 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3622 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3623 = private unnamed_addr constant [4 x i8] c"int\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 [5 x i8] c"void\00" -@.str.3627 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3629 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" -@.str.3630 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3631 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3633 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" -@.str.3634 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3635 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3637 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3639 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [22 x i8] c"every key of this map\00" -@.str.3645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3649 = private unnamed_addr constant [24 x i8] c"every value of this map\00" -@.str.3650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3653 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3654 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3655 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3656 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3657 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3660 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3661 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.3662 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3663 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3664 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3665 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3666 = private unnamed_addr constant [11 x i8] c"remove.hit\00" -@.str.3667 = private unnamed_addr constant [11 x i8] c"remove.end\00" -@.str.3668 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" -@.str.3669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3670 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3671 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3672 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3673 = private unnamed_addr constant [10 x i8] c"get.found\00" -@.str.3674 = private unnamed_addr constant [12 x i8] c"get.missing\00" -@.str.3675 = private unnamed_addr constant [9 x i8] c"get.fend\00" -@.str.3676 = private unnamed_addr constant [9 x i8] c"get.mend\00" -@.str.3677 = private unnamed_addr constant [8 x i8] c"get.end\00" -@.str.3678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3680 = private unnamed_addr constant [12 x i8] c"the default\00" -@.str.3681 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3682 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3683 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3684 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3685 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3686 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3687 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.3688 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3689 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3690 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3691 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3693 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3694 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3695 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3696 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3697 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3698 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" -@.str.3699 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3700 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3701 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.3702 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3703 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3704 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3705 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3706 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3707 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3708 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3709 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3710 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3711 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.3712 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3713 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3714 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3715 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3717 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3718 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3719 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3720 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3721 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3722 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3724 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3725 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3726 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3727 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3728 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3729 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3730 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3731 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3732 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3733 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3734 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3735 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3736 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3737 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" -@.str.3738 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" -@.str.3739 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3740 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3742 = private unnamed_addr constant [30 x i8] c"used .enums 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 [2 x i8] c"'\00" -@.str.3745 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" -@.str.3746 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.3747 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3749 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3750 = private unnamed_addr constant [13 x i8] c"this pattern\00" -@.str.3751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3752 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3753 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3755 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" -@.str.3756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3757 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3758 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3759 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3760 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3761 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3762 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3764 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3767 = private unnamed_addr constant [10 x i8] c"match.end\00" -@.str.3768 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3770 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" -@.str.3771 = private unnamed_addr constant [10 x i8] c"match.arm\00" -@.str.3772 = private unnamed_addr constant [11 x i8] c"match.next\00" -@.str.3773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3774 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3775 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3777 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3779 = private unnamed_addr constant [53 x i8] c"an arm with several variants can't name their values\00" -@.str.3780 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3781 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3783 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3785 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3786 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3788 = private unnamed_addr constant [9 x i8] c"match.or\00" -@.str.3789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3790 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3793 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.3794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3795 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3799 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3800 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3801 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3806 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3807 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3808 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3809 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" -@.str.3810 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" -@.str.3811 = private unnamed_addr constant [11 x i8] c"match.from\00" -@.str.3812 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3814 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3816 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3819 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.3822 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3824 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3825 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3826 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3827 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3829 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3831 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3832 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3833 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3834 = private unnamed_addr constant [12 x i8] c"a match on \00" -@.str.3835 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" -@.str.3836 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3837 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.3838 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3840 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3841 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3843 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3844 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3845 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3846 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3847 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3848 = private unnamed_addr constant [3 x i8] c"[ \00" -@.str.3849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3850 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3851 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3852 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3854 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3855 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3856 = 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.3857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3858 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3860 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3862 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3864 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3865 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3867 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3870 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3872 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3874 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3876 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3878 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3880 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3881 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" -@.str.3882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3883 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3884 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" -@.str.3885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3886 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3887 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3889 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3890 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3892 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3894 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" -@.str.3895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3896 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3897 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" -@.str.3898 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" -@.str.3899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3900 = private unnamed_addr constant [11 x i8] c"try.failed\00" -@.str.3901 = private unnamed_addr constant [7 x i8] c"try.ok\00" -@.str.3902 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3904 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3905 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3906 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3908 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3909 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3910 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3912 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3914 = private unnamed_addr constant [10 x i8] c"or.failed\00" -@.str.3915 = private unnamed_addr constant [6 x i8] c"or.ok\00" -@.str.3916 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3917 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3920 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3921 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3923 = 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.3924 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3925 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3926 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3927 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3929 = 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.3930 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3931 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3934 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" -@.str.3935 = private unnamed_addr constant [8 x i8] c"or.bend\00" -@.str.3936 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3937 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3938 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3939 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3940 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3941 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3942 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3943 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3944 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3945 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3947 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.3948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3949 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.3950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3951 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3953 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3954 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3955 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3956 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3957 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3958 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3960 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3961 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3962 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3963 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3964 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3965 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3966 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3967 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3968 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3969 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.3970 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3971 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3972 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.3973 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3974 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3975 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3976 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3977 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3978 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3979 = private unnamed_addr constant [20 x i8] c"unknown expression \00" -@.str.3980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3981 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3982 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3984 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" -@.str.3985 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.3986 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.3987 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3988 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.3989 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" -@.str.3990 = private unnamed_addr constant [5 x i8] c"xor \00" -@.str.3991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3992 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str.3993 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" -@.str.3994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3995 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3997 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3998 = private unnamed_addr constant [5 x i8] c"sub \00" -@.str.3999 = private unnamed_addr constant [5 x i8] c" 0, \00" -@.str.4000 = private unnamed_addr constant [6 x i8] c"fneg \00" -@.str.4001 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4002 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" -@.str.4003 = private unnamed_addr constant [12 x i8] c"can't use '\00" -@.str.4004 = private unnamed_addr constant [6 x i8] c"' on \00" -@.str.4005 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.4006 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4007 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4008 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4009 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" -@.str.4010 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4011 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4012 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4013 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4014 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" -@.str.4015 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" -@.str.4016 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4017 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4018 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4019 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4020 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4021 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" -@.str.4022 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4023 = private unnamed_addr constant [6 x i8] c"array\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 [32 x i8] c" (compare the parts one by one)\00" -@.str.4027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4028 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4030 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4032 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4034 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4036 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4038 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4040 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4042 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4044 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4046 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4048 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4050 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4052 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4054 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4056 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4058 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4060 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4062 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4064 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4066 = private unnamed_addr constant [30 x i8] c"used .value 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 .ty on a null pointer\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 .ty 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 [26 x i8] c"used .v on a null pointer\00" -@.str.4073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4074 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4076 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4078 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4080 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\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 .ty 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 .ty 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 [26 x i8] c"used .v 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 .ty 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 [27 x i8] c"used .ty on a null pointer\00" -@.str.4091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4092 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\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 .value on a null pointer\00" -@.str.4095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4096 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4098 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4100 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4102 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4103 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4105 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4107 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4109 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4111 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4113 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4114 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4116 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4118 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4120 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4122 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4123 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4125 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4127 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4128 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4129 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4131 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4133 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4134 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4136 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4137 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4138 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4139 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4140 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4142 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4143 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4144 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4145 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4146 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4147 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" -@.str.4148 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4149 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4150 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4151 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4152 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4153 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4154 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4155 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4156 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4157 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4158 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4159 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4160 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4161 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4162 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4163 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4164 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4165 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4166 = private unnamed_addr constant [5 x i8] c"sdiv\00" -@.str.4167 = private unnamed_addr constant [5 x i8] c"srem\00" -@.str.4168 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4169 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4170 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4171 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4172 = private unnamed_addr constant [5 x i8] c"ashr\00" -@.str.4173 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4174 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4175 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4176 = private unnamed_addr constant [5 x i8] c"udiv\00" -@.str.4177 = private unnamed_addr constant [5 x i8] c"urem\00" -@.str.4178 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4179 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4180 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4181 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4182 = private unnamed_addr constant [5 x i8] c"lshr\00" -@.str.4183 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4184 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4185 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4186 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4187 = private unnamed_addr constant [9 x i8] c"icmp eq \00" -@.str.4188 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4189 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4190 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4192 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4193 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4194 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4195 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4196 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4197 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4198 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4199 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4200 = private unnamed_addr constant [5 x i8] c"fadd\00" -@.str.4201 = private unnamed_addr constant [5 x i8] c"fsub\00" -@.str.4202 = private unnamed_addr constant [5 x i8] c"fmul\00" -@.str.4203 = private unnamed_addr constant [5 x i8] c"fdiv\00" -@.str.4204 = private unnamed_addr constant [5 x i8] c"frem\00" -@.str.4205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4206 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4207 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4208 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4209 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4210 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4211 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4212 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4213 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4214 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4215 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4216 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4217 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" -@.str.4218 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4219 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4220 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4221 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4222 = private unnamed_addr constant [6 x i8] c" ptr \00" -@.str.4223 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4224 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4225 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4226 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4227 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" -@.str.4228 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4229 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4230 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4231 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4232 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4233 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4234 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4235 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4236 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4237 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" -@.str.4238 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4239 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4240 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4241 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str.4242 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4243 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4244 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4245 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4246 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4247 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4248 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4249 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4250 = private unnamed_addr constant [4 x i8] c"oeq\00" -@.str.4251 = private unnamed_addr constant [4 x i8] c"une\00" -@.str.4252 = private unnamed_addr constant [4 x i8] c"olt\00" -@.str.4253 = private unnamed_addr constant [4 x i8] c"ole\00" -@.str.4254 = private unnamed_addr constant [4 x i8] c"ogt\00" -@.str.4255 = private unnamed_addr constant [4 x i8] c"oge\00" -@.str.4256 = private unnamed_addr constant [6 x i8] c"fcmp \00" -@.str.4257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4258 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4259 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4260 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4261 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4262 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4263 = 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.4264 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4265 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4266 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4267 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4268 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4269 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4270 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4271 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4272 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4273 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4274 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4275 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4276 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4277 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4278 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4279 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4280 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4281 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4282 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4283 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4284 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4285 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4286 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4287 = private unnamed_addr constant [4 x i8] c"ult\00" -@.str.4288 = private unnamed_addr constant [4 x i8] c"ule\00" -@.str.4289 = private unnamed_addr constant [4 x i8] c"ugt\00" -@.str.4290 = private unnamed_addr constant [4 x i8] c"uge\00" -@.str.4291 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4292 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4293 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str.4294 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str.4295 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str.4296 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str.4297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4298 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4299 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.4300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4301 = private unnamed_addr constant [11 x i8] c"logic.from\00" -@.str.4302 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" -@.str.4303 = private unnamed_addr constant [10 x i8] c"logic.end\00" -@.str.4304 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4306 = private unnamed_addr constant [11 x i8] c"logic.rend\00" -@.str.4307 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.4308 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4309 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.4310 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" -@.str.4311 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4312 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.4313 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4314 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.4315 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4318 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4322 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4323 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4324 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4325 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4326 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4327 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4329 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" -@.str.4330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4331 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4332 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4333 = private unnamed_addr constant [28 x i8] c"every element of this array\00" -@.str.4334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4335 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4336 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str.4337 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4338 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.4339 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4340 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4341 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4342 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4344 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" -@.str.4345 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4346 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4347 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4348 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4349 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4350 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4351 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.4352 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4353 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4354 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4355 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" -@.str.4356 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4358 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4360 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4362 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4363 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4365 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4367 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4368 = private unnamed_addr constant [8 x i8] c"fprintf\00" -@.str.4369 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4370 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4371 = private unnamed_addr constant [7 x i8] c"stderr\00" -@.str.4372 = private unnamed_addr constant [2 x i8] c"2\00" -@.str.4373 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4374 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4375 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4376 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.4377 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" -@.str.4378 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4379 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4381 = private unnamed_addr constant [27 x i8] c"used .ci 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.4384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4386 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4387 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4389 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4390 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4392 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.4393 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4394 = private unnamed_addr constant [20 x i8] c" = external global \00" -@.str.4395 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4396 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4397 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" -@.str.4398 = private unnamed_addr constant [11 x i8] c".name(...)\00" -@.str.4399 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4400 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4401 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4403 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4404 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4405 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.4406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4407 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4408 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4410 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4412 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.4413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4414 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.4415 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4417 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4419 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4421 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4422 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4424 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4428 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4430 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4431 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4433 = private unnamed_addr constant [4 x i8] c"var\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 [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 [29 x i8] c"used .sums on a null pointer\00" -@.str.4439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4440 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4441 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4442 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4444 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4446 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4450 = private unnamed_addr constant [23 x i8] c" holds nothing: write \00" -@.str.4451 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4452 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4454 = private unnamed_addr constant [20 x i8] c" value(s), but got \00" -@.str.4455 = private unnamed_addr constant [3 x i8] c": \00" -@.str.4456 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4457 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4458 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4459 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.4460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4461 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.4462 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4463 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4464 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4465 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4467 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4469 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4470 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4471 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.4472 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4474 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.4475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4477 = private unnamed_addr constant [34 x i8] c"this pattern is not a variant of \00" -@.str.4478 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.4479 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4480 = private unnamed_addr constant [2 x i8] c")\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 [28 x i8] c" holds nothing: write just \00" -@.str.4484 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4486 = private unnamed_addr constant [28 x i8] c" value(s): name them, like \00" -@.str.4487 = private unnamed_addr constant [28 x i8] c"(x), or use _ to ignore one\00" -@.str.4488 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4489 = private unnamed_addr constant [51 x i8] c"write a name to hold the value (or _ to ignore it)\00" -@.str.4490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4491 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4493 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4494 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4495 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4496 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4497 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4498 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4499 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4500 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.4501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4502 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4503 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4507 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4509 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4512 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4514 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4517 = private unnamed_addr constant [12 x i8] c" value(s): \00" -@.str.4518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4519 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4521 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4522 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4524 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4527 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4528 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4529 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.4530 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.4531 = private unnamed_addr constant [7 x i8] c"used .\00" -@.str.4532 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" -@.str.4533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4534 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4536 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4538 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4539 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4540 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4541 = private unnamed_addr constant [3 x i8] c"a \00" -@.str.4542 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" -@.str.4543 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4544 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4545 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" -@.str.4546 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4547 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4548 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4549 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" -@.str.4550 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4551 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" -@.str.4552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4553 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4554 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4555 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4556 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" -@.str.4557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4558 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4559 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" -@.str.4560 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4561 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4562 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4563 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4565 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4567 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4568 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4569 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" -@.str.4570 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4571 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" -@.str.4572 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4573 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4574 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.4575 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4576 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4577 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4578 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4579 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4580 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4581 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4582 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" -@.str.4583 = private unnamed_addr constant [3 x i8] c"')\00" -@.str.4584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4585 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4587 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.4588 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.4589 = private unnamed_addr constant [12 x i8] c"' (it has: \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 [12 x i8] c"src/gen.fch\00" -@.str.4593 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4594 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4595 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4597 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4598 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4599 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.4600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4601 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4602 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4603 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4607 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4608 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4610 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4612 = private unnamed_addr constant [9 x i8] c"an index\00" -@.str.4613 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4614 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4615 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4616 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4617 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.4618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4619 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4620 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4623 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4624 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4625 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4626 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4627 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4628 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" -@.str.4629 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4630 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4632 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4633 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" -@.str.4634 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" -@.str.4635 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4636 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4637 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4638 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4639 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4640 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4642 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4643 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4644 = private unnamed_addr constant [18 x i8] c"named arguments (\00" -@.str.4645 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" -@.str.4646 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4647 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4648 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4649 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4650 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4651 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4652 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4653 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.4654 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4655 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4656 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4657 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4658 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4659 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4660 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.4661 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4662 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4663 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.4664 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.4665 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4666 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4667 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4668 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4670 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4672 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4674 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4675 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4676 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4677 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4678 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4679 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" -@.str.4680 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4681 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4682 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4683 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4686 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4687 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4689 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4690 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4691 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4692 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4693 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4694 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.4695 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" -@.str.4696 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4698 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4699 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4700 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4702 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4703 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4705 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4706 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4707 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4708 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4710 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.4711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4712 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" -@.str.4713 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4714 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4716 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4717 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" -@.str.4718 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4719 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4720 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4721 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4722 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4723 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4724 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4725 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4726 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4727 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4728 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4729 = private unnamed_addr constant [7 x i8] c"fptoui\00" -@.str.4730 = private unnamed_addr constant [7 x i8] c"fptosi\00" -@.str.4731 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4732 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4733 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4734 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4735 = private unnamed_addr constant [9 x i8] c"icmp ne \00" -@.str.4736 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4737 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4738 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4739 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4740 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4741 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4742 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" -@.str.4743 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4744 = private unnamed_addr constant [8 x i8] c" to ptr\00" -@.str.4745 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4746 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.4747 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4748 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4749 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4751 = 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.4752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4753 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4754 = private unnamed_addr constant [7 x i8] c" into \00" -@.str.4755 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4757 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4758 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4759 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4761 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4762 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4763 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4764 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4765 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4766 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4768 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4772 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4775 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4777 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4779 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4780 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4781 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.4782 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.4783 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.4784 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4785 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4786 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4787 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4788 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4789 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4790 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4791 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4792 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4793 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4794 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4795 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4796 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4798 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4801 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4803 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4804 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4805 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4807 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4808 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4810 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4811 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4816 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4819 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4820 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" -@.str.4821 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4822 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4824 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4825 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4826 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4827 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4828 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4829 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4830 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4831 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4832 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4833 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4834 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4836 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4838 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4840 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4841 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4842 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4843 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4845 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4847 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4848 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4849 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" -@.str.4850 = private unnamed_addr constant [21 x i8] c", which C can't take\00" -@.str.4851 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4852 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4853 = private unnamed_addr constant [13 x i8] c" the struct \00" -@.str.4854 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" -@.str.4855 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4856 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4857 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4858 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" -@.str.4859 = 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.4860 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" -@.str.4861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4863 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" -@.str.4864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4865 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" -@.str.4866 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4867 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" -@.str.4868 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4870 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4871 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4872 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" -@.str.4873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4874 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4875 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" -@.str.4876 = private unnamed_addr constant [4 x i8] c"i1 \00" -@.str.4877 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" -@.str.4878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4879 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4880 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4881 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4882 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4883 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4884 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4885 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4886 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4887 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4888 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4889 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4890 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4891 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4892 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4893 = private unnamed_addr constant [8 x i8] c"ret i8 \00" -@.str.4894 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4895 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str.4896 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4897 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4900 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4901 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.4902 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.4903 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4904 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4905 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4906 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4907 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4909 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4911 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" -@.str.4912 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4914 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4915 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4917 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4918 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4919 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4920 = 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.4921 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4922 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4923 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4924 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4926 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4928 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4929 = 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.4930 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4931 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4932 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4933 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4934 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4936 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4938 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4939 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" -@.str.4940 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4941 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4942 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" -@.str.4943 = private unnamed_addr constant [4 x i8] c"%c0\00" -@.str.4944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4946 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4947 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4948 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4949 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4950 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4951 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4952 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4953 = private unnamed_addr constant [7 x i8] c"ptr %c\00" -@.str.4954 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4955 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4956 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4957 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4958 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4959 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4960 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4961 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4962 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4963 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4964 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4965 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4966 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4967 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4968 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4969 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4970 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4971 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4972 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4973 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4974 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4976 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4977 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4978 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4980 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4981 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4982 = private unnamed_addr constant [16 x i8] c"define internal\00" -@.str.4983 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4984 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4986 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4987 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4989 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4993 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" -@.str.4994 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4997 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" -@.str.4998 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4999 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5000 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5001 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5003 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5004 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5005 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5006 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5007 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" -@.str.5008 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5009 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5010 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5011 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5012 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5014 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5015 = private unnamed_addr constant [9 x i8] c" signext\00" -@.str.5016 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5017 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5018 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5019 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5020 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5022 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5023 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5024 = private unnamed_addr constant [18 x i8] c"C function from `\00" -@.str.5025 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" -@.str.5026 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5027 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5028 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5029 = private unnamed_addr constant [6 x i8] c")\0A```\00" -@.str.5030 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5031 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.5032 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" -@.str.5033 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5034 = private unnamed_addr constant [18 x i8] c"' takes at least \00" -@.str.5035 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5036 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5037 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.5038 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5039 = private unnamed_addr constant [8 x i8] c"returns\00" -@.str.5040 = private unnamed_addr constant [6 x i8] c"takes\00" -@.str.5041 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5042 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5043 = private unnamed_addr constant [11 x i8] c") align 16\00" -@.str.5044 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5045 = private unnamed_addr constant [12 x i8] c") align 16 \00" -@.str.5046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5047 = private unnamed_addr constant [32 x i8] c"used .pending 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 [12 x i8] c"src/gen.fch\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 [10 x i8] c"argument \00" -@.str.5053 = private unnamed_addr constant [5 x i8] c" of \00" -@.str.5054 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.5055 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.5056 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.5057 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5058 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.5059 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5060 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5061 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5062 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5064 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.5065 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5068 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5070 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5071 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5073 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5075 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" -@.str.5076 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5077 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5079 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" -@.str.5080 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.5081 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5082 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5083 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5084 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5085 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5086 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5087 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5088 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5089 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5090 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5091 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5092 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5093 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5094 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.5095 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5096 = private unnamed_addr constant [6 x i8] c", ...\00" -@.str.5097 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5099 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5100 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.5101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5102 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5103 = private unnamed_addr constant [3 x i8] c"f:\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 .head on a null pointer\00" -@.str.5106 = private unnamed_addr constant [8 x i8] c"declare\00" -@.str.5107 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5108 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5109 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5110 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5111 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5112 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5113 = private unnamed_addr constant [3 x i8] c" (\00" -@.str.5114 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5115 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5116 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.5117 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5118 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5119 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5120 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5121 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5122 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5123 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5124 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5125 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5126 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5127 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5128 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5129 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5130 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5131 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5132 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5133 = private unnamed_addr constant [7 x i8] c"fflush\00" -@.str.5134 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5135 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5136 = private unnamed_addr constant [6 x i8] c"qsort\00" -@.str.5137 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5138 = private unnamed_addr constant [5 x i8] c"puts\00" -@.str.5139 = private unnamed_addr constant [8 x i8] c"putchar\00" -@.str.5140 = private unnamed_addr constant [6 x i8] c"scanf\00" -@.str.5141 = private unnamed_addr constant [6 x i8] c"fopen\00" -@.str.5142 = private unnamed_addr constant [8 x i8] c"getchar\00" -@.str.5143 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str.5144 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str.5145 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str.5146 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str.5147 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str.5148 = private unnamed_addr constant [5 x i8] c"fabs\00" -@.str.5149 = private unnamed_addr constant [7 x i8] c"malloc\00" -@.str.5150 = private unnamed_addr constant [5 x i8] c"rand\00" -@.str.5151 = private unnamed_addr constant [6 x i8] c"srand\00" -@.str.5152 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str.5153 = private unnamed_addr constant [5 x i8] c"atoi\00" -@.str.5154 = private unnamed_addr constant [7 x i8] c"strlen\00" -@.str.5155 = private unnamed_addr constant [7 x i8] c"strcpy\00" -@.str.5156 = private unnamed_addr constant [7 x i8] c"memcpy\00" -@.str.5157 = private unnamed_addr constant [5 x i8] c"time\00" -@.str.5158 = private unnamed_addr constant [6 x i8] c"sleep\00" -@.str.5159 = private unnamed_addr constant [7 x i8] c"usleep\00" -@.str.5160 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5161 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5162 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5163 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5164 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5165 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5166 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5167 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5168 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5169 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5170 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5171 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5172 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5173 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5174 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5175 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5176 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5177 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5178 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5179 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5180 = private unnamed_addr constant [7 x i8] c"time.h\00" -@.str.5181 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5182 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5183 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5184 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" -@.str.5185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5186 = private unnamed_addr constant [15 x i8] c"\22 at the top)\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 [6 x i8] c"error\00" -@.str.5191 = 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.5192 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.5193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5194 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5196 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" -@.str.5197 = private unnamed_addr constant [2 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"\0A\00" -@.str.5200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5201 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5202 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.5203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5204 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5206 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5207 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5208 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5209 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.5210 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.5211 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" -@.str.5212 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5214 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5215 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" -@.str.5216 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5218 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5219 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" -@.str.5220 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5221 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.5222 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5223 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" -@.str.5224 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.5225 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5226 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5227 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5228 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" -@.str.5229 = private unnamed_addr constant [14 x i8] c", i8 signext \00" -@.str.5230 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5231 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5232 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5233 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5234 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" -@.str.5235 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.5236 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5237 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5238 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5239 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5240 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5241 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5242 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5243 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5245 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5247 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5248 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5249 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5250 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" -@.str.5251 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5252 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5253 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5254 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5255 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5256 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5257 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5258 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5259 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5260 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5262 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.5263 = private unnamed_addr constant [10 x i8] c" into str\00" -@.str.5264 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5265 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5266 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.5267 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5269 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5270 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5271 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" -@.str.5272 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5273 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5274 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5275 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5277 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5278 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5279 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5280 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5281 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5282 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5283 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" -@.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5286 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5287 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5288 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5290 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5291 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5293 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5294 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5295 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5297 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5299 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" -@.str.5300 = private unnamed_addr constant [7 x i8] c", ptr \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 [2 x i8] c")\00" -@.str.5304 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5305 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5306 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5308 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5310 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5312 = private unnamed_addr constant [9 x i8] c"the text\00" -@.str.5313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5314 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5315 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5316 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5317 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5318 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" -@.str.5319 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5320 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5321 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5322 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5323 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5325 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5326 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5328 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5329 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5330 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" -@.str.5331 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5332 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5333 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5334 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5335 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5336 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.5337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5338 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5339 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5340 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5343 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5344 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5345 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5346 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5347 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" -@.str.5348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5349 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5350 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5351 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5353 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5354 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5356 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5357 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5358 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5359 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" -@.str.5360 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5361 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5362 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5363 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5364 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5365 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.5366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5367 = private unnamed_addr constant [12 x i8] c"the command\00" -@.str.5368 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5369 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5371 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" -@.str.5372 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5373 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5374 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5375 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5377 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5379 = private unnamed_addr constant [14 x i8] c"the exit code\00" -@.str.5380 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5381 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5382 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" -@.str.5383 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" -@.str.5384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5385 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5386 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.5387 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5389 = private unnamed_addr constant [13 x i8] c"the question\00" -@.str.5390 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" -@.str.5391 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5392 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5393 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5394 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5395 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.5396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5397 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.5398 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5399 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5401 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5403 = 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.5404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5405 = private unnamed_addr constant [10 x i8] c"free.drop\00" -@.str.5406 = private unnamed_addr constant [10 x i8] c"free.done\00" -@.str.5407 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5408 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5410 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" -@.str.5411 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5412 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5414 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5415 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5416 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" -@.str.5417 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5418 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5420 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5421 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5423 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5424 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5425 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5426 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" -@.str.5427 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.5428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5429 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5431 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5433 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5436 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5438 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5441 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" -@.str.5442 = private unnamed_addr constant [4 x i8] c" { \00" -@.str.5443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5444 = private unnamed_addr constant [7 x i8] c" }\0A```\00" -@.str.5445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5446 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5449 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5451 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5453 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5455 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.5456 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5457 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" -@.str.5458 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" -@.str.5459 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5461 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5463 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.5464 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" -@.str.5465 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5467 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5471 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.5472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5473 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5476 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5477 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5478 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5479 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5480 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" -@.str.5481 = private unnamed_addr constant [20 x i8] c"(...) or , \00" -@.str.5482 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" -@.str.5483 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.5484 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5485 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5486 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5487 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5488 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5489 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5490 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5491 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5492 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5493 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5495 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5496 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5497 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5498 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5500 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5502 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5503 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5504 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5505 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5507 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5510 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5513 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5517 = 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.5518 = private unnamed_addr constant [6 x i8] c" has \00" -@.str.5519 = private unnamed_addr constant [18 x i8] c" fields, but got \00" -@.str.5520 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" -@.str.5521 = private unnamed_addr constant [16 x i8] c"(field: value))\00" -@.str.5522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5525 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.5526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5527 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5530 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5532 = private unnamed_addr constant [17 x i8] c"' is given twice\00" -@.str.5533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5534 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5536 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5543 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5545 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5548 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5550 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5552 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5554 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5556 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5558 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5560 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5562 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5567 = private unnamed_addr constant [17 x i8] c"the default of '\00" -@.str.5568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5569 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5571 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5573 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5575 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5577 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5578 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.5579 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5580 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5581 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5582 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5585 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5586 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"var\00" -@.str.5590 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" -@.str.5591 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" -@.str.5592 = private unnamed_addr constant [14 x i8] c" at the top)\00" -@.str.5593 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5594 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5595 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5597 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5599 = private unnamed_addr constant [13 x i8] c"the module '\00" -@.str.5600 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" -@.str.5601 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5602 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5603 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5604 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5605 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5606 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5607 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5608 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5609 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5611 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5612 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5613 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5614 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" -@.str.5615 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5616 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5617 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5618 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5619 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" -@.str.5620 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5623 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5624 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5625 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5626 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5627 = private unnamed_addr constant [9 x i8] c"called .\00" -@.str.5628 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" -@.str.5629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5630 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5631 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5632 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5633 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5634 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5636 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5639 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5642 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5645 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5646 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5647 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5648 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" -@.str.5649 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5650 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" -@.str.5651 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5652 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5653 = private unnamed_addr constant [17 x i8] c" has no method '\00" -@.str.5654 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.5655 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5656 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5658 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5660 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5661 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5662 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" -@.str.5663 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" -@.str.5664 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.5665 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.5666 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5667 = private unnamed_addr constant [16 x i8] c" has no methods\00" -@.str.5668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5669 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5670 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5671 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5674 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5676 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5677 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5678 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" -@.str.5679 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5680 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5681 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5682 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5683 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5684 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5685 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5686 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5687 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5688 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5689 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5690 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5691 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5692 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5693 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5694 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5695 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5696 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5698 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5699 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5700 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5701 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5702 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5703 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5704 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5705 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5706 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5709 = private unnamed_addr constant [22 x i8] c"the value to look for\00" -@.str.5710 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5711 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5712 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str.5713 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5714 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5715 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5717 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5718 = private unnamed_addr constant [10 x i8] c"find.cond\00" -@.str.5719 = private unnamed_addr constant [10 x i8] c"find.body\00" -@.str.5720 = private unnamed_addr constant [9 x i8] c"find.hit\00" -@.str.5721 = private unnamed_addr constant [10 x i8] c"find.next\00" -@.str.5722 = private unnamed_addr constant [9 x i8] c"find.end\00" -@.str.5723 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5724 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5725 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5726 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5727 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5728 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5729 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.5730 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5731 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5732 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5733 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5734 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5735 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5736 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5737 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5738 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5739 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5740 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5741 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5742 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" -@.str.5743 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5744 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5745 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" -@.str.5746 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5747 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5749 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5750 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5751 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5753 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5755 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5758 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5759 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5760 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5762 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" -@.str.5763 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5764 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5765 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5766 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5767 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5768 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5769 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5770 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5771 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5772 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5773 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5775 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5777 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5778 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5779 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5780 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5781 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5782 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5783 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" -@.str.5784 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5785 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5786 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5787 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5788 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5789 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5791 = private unnamed_addr constant [15 x i8] c"the new length\00" -@.str.5792 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" -@.str.5793 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5794 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5795 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5796 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5797 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5798 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5799 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5800 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str.5801 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5802 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5803 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5804 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5806 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5807 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5808 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5809 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5811 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5812 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5813 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5814 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5815 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.5816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5817 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5819 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5821 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5823 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5824 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5825 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5826 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5827 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5828 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5829 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5830 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5831 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5832 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5833 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5834 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5835 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" -@.str.5836 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5837 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5838 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5839 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.5840 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5841 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5842 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5843 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5844 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5845 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5846 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5847 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5848 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5849 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5850 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5851 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5852 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5855 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5856 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5857 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5858 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5859 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" -@.str.5860 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5861 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5862 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" -@.str.5863 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5864 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5865 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5866 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5867 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5868 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" -@.str.5869 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" -@.str.5870 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5871 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5872 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5873 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5874 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5875 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5876 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5877 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5879 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5880 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5881 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5882 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.5883 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5884 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5885 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5886 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5887 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5888 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5889 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5890 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5892 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" -@.str.5893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5894 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5896 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5897 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5898 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5899 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" -@.str.5900 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5901 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5902 = private unnamed_addr constant [3 x i8] c"%x\00" -@.str.5903 = private unnamed_addr constant [3 x i8] c"%y\00" -@.str.5904 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5905 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5906 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" -@.str.5907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5908 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5909 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" -@.str.5910 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5911 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5912 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5913 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.5914 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5915 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5916 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5917 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5918 = private unnamed_addr constant [2 x i8] c">\00" -@.str.5919 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5920 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5921 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5922 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str.5923 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5924 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5925 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5926 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5927 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5928 = private unnamed_addr constant [9 x i8] c"ret i32 \00" -@.str.5929 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" -@.str.5930 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" -@.str.5931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5932 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5934 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.5935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5936 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5938 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5940 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5942 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5943 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" -@.str.5944 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5945 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5946 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5947 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5948 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5949 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5950 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5951 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5952 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5953 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5954 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5955 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5957 = private unnamed_addr constant [21 x i8] c"the text to look for\00" -@.str.5958 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5959 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5960 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5961 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5962 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5963 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5964 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5965 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5966 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5967 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5968 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5969 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5970 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" -@.str.5971 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5972 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" -@.str.5973 = private unnamed_addr constant [10 x i8] c"call i32 \00" -@.str.5974 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5975 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5976 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5977 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5978 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5979 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5980 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5981 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5982 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5983 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" -@.str.5984 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5985 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5986 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5987 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5988 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5989 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5991 = private unnamed_addr constant [20 x i8] c"the text to replace\00" -@.str.5992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5993 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5995 = private unnamed_addr constant [13 x i8] c"the new text\00" -@.str.5996 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" -@.str.5997 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5998 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5999 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6000 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6001 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6002 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6003 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6005 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.6006 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" -@.str.6007 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6008 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6009 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6010 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6011 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6012 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6014 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6016 = private unnamed_addr constant [10 x i8] c"the count\00" -@.str.6017 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" -@.str.6018 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6019 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.6020 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6021 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6023 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6024 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" -@.str.6025 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6026 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6027 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6028 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6029 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" -@.str.6030 = 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.6031 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" -@.str.6032 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" -@.str.6033 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" -@.str.6034 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" -@.str.6035 = private unnamed_addr constant [34 x i8] c"declare void @finch_str_drop(ptr)\00" -@.str.6036 = private unnamed_addr constant [34 x i8] c"declare void @finch_arr_free(ptr)\00" -@.str.6037 = private unnamed_addr constant [34 x i8] c"declare void @finch_map_free(ptr)\00" -@.str.6038 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" -@.str.6039 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" -@.str.6040 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" -@.str.6041 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" -@.str.6042 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" -@.str.6043 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" -@.str.6044 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" -@.str.6045 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" -@.str.6046 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" -@.str.6047 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" -@.str.6048 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" -@.str.6049 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" -@.str.6050 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" -@.str.6051 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" -@.str.6052 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" -@.str.6053 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" -@.str.6054 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" -@.str.6055 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" -@.str.6056 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" -@.str.6057 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" -@.str.6058 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" -@.str.6059 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" -@.str.6060 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" -@.str.6061 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" -@.str.6062 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" -@.str.6063 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" -@.str.6064 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" -@.str.6065 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" -@.str.6066 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" -@.str.6067 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" -@.str.6068 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" -@.str.6069 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" -@.str.6070 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" -@.str.6071 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" -@.str.6072 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" -@.str.6073 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" -@.str.6074 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" -@.str.6075 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" -@.str.6076 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" -@.str.6077 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" -@.str.6078 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" -@.str.6079 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" -@.str.6080 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" -@.str.6081 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" -@.str.6082 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" -@.str.6083 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" -@.str.6084 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" -@.str.6085 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" -@.str.6086 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" -@.str.6087 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" -@.str.6088 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" -@.str.6089 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" -@.str.6090 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" -@.str.6091 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" -@.str.6092 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" -@.str.6093 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" -@.str.6094 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" -@.str.6095 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" -@.str.6096 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" -@.str.6097 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" -@.str.6098 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" -@.str.6099 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" -@.str.6100 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" -@.str.6101 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" -@.str.6102 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" -@.str.6103 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" -@.str.6104 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" -@.str.6105 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6106 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6107 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" -@.str.6108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6109 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6111 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6112 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" -@.str.6113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6114 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6115 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" -@.str.6116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6117 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.6118 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6119 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" -@.str.6120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6122 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6123 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" -@.str.6124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6126 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6128 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6129 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6131 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6133 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6136 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6137 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" -@.str.6138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6139 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6140 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" -@.str.6141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6142 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6143 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" -@.str.6144 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" -@.str.6145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6146 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" -@.str.6147 = private unnamed_addr constant [3 x i8] c"\22)\00" -@.str.6148 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" -@.str.6149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6150 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6152 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" -@.str.6153 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6154 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6157 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.6158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6159 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6161 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6165 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6168 = 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.6169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6170 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" -@.str.6171 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6172 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6173 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6175 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6177 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.6178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6179 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6182 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.6183 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6185 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6186 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6188 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6189 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.6190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6191 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6192 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.6193 = 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.6194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6195 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6197 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.6198 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6199 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6201 = 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.6202 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" -@.str.6203 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6204 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str.6205 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6206 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6207 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6208 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6209 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" -@.str.6210 = 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.6211 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" -@.str.6212 = 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.6213 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" -@.str.6214 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6215 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" -@.str.6216 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" -@.str.6217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6218 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6219 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" -@.str.6220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6221 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6222 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str.6223 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6225 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str.6226 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.6227 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" -@.str.6228 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" -@.str.6229 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.6230 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" -@.str.6231 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" -@.str.6232 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.6233 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" -@.str.6234 = 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.6235 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.6236 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" -@.str.6237 = 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.6238 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.6239 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" -@.str.6240 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" -@.str.6241 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.6242 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" -@.str.6243 = 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.6244 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.6245 = private unnamed_addr constant [19 x i8] c"error(str message)\00" -@.str.6246 = 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.6247 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.6248 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" -@.str.6249 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" -@.str.6250 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.6251 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" -@.str.6252 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" -@.str.6253 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.6254 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" -@.str.6255 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" -@.str.6256 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.6257 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" -@.str.6258 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" -@.str.6259 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.6260 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" -@.str.6261 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" -@.str.6262 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6263 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" -@.str.6264 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" -@.str.6265 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6266 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" -@.str.6267 = 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.6268 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6269 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" -@.str.6270 = 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.6271 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6272 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" -@.str.6273 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" -@.str.6274 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6275 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" -@.str.6276 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" -@.str.6277 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6278 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" -@.str.6279 = 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.6280 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6281 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6282 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" -@.str.6283 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6284 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" -@.str.6285 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" -@.str.6286 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.6287 = private unnamed_addr constant [10 x i8] c"push(T x)\00" -@.str.6288 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" -@.str.6289 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.6290 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" -@.str.6291 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" -@.str.6292 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.6293 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" -@.str.6294 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" -@.str.6295 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6296 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" -@.str.6297 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" -@.str.6298 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6299 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6300 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6301 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.6302 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" -@.str.6303 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" -@.str.6304 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6305 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" -@.str.6306 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" -@.str.6307 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6308 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" -@.str.6309 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" -@.str.6310 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.6311 = private unnamed_addr constant [7 x i8] c"sort()\00" -@.str.6312 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" -@.str.6313 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.6314 = private unnamed_addr constant [10 x i8] c"reverse()\00" -@.str.6315 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" -@.str.6316 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.6317 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" -@.str.6318 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" -@.str.6319 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.6320 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" -@.str.6321 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" -@.str.6322 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6323 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6324 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" -@.str.6325 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6326 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" -@.str.6327 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" -@.str.6328 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.6329 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" -@.str.6330 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" -@.str.6331 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6332 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" -@.str.6333 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" -@.str.6334 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6335 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" -@.str.6336 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" -@.str.6337 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.6338 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" -@.str.6339 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" -@.str.6340 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.6341 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" -@.str.6342 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" -@.str.6343 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6344 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" -@.str.6345 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" -@.str.6346 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.6347 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" -@.str.6348 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" -@.str.6349 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.6350 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" -@.str.6351 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" -@.str.6352 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.6353 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" -@.str.6354 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" -@.str.6355 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.6356 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" -@.str.6357 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" -@.str.6358 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6359 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" -@.str.6360 = private unnamed_addr constant [18 x i8] c"The text n times.\00" -@.str.6361 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6362 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" -@.str.6363 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" -@.str.6364 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6365 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6366 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" -@.str.6367 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.6368 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" -@.str.6369 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" -@.str.6370 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.6371 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" -@.str.6372 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" -@.str.6373 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6374 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" -@.str.6375 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" -@.str.6376 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6377 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6378 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6379 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.6380 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" -@.str.6381 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" -@.str.6382 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.6383 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" -@.str.6384 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" -@.str.6385 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.6386 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.6387 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.6388 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.6389 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.6390 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.6391 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.6392 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.6393 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.6394 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.6395 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.6396 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.6397 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.6398 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.6399 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.6400 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.6401 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.6402 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.6403 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.6404 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.6405 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.6406 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.6407 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6408 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6409 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6410 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6411 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6412 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6413 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.6414 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6415 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6416 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.6418 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6419 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6420 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6421 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6422 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6423 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.6424 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.6425 = private unnamed_addr constant [6 x i8] c"\0A```\0A\00" -declare ptr @clang_getCString(i64, i64) -declare void @clang_disposeString(i64, i64) -@.str.6426 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6427 = private unnamed_addr constant [16 x i8] c"/finch_cc_dirs_\00" -@.str.6428 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6429 = private unnamed_addr constant [14 x i8] c"/finch_empty_\00" -@.str.6430 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6431 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6432 = private unnamed_addr constant [13 x i8] c" -E -v -x c \00" -@.str.6433 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6434 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6435 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6436 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6437 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6438 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6439 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6440 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" -@.str.6441 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6442 = private unnamed_addr constant [20 x i8] c"End of search list.\00" -@.str.6443 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6444 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" -@.str.6445 = private unnamed_addr constant [12 x i8] c"-iframework\00" -@.str.6446 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6447 = private unnamed_addr constant [9 x i8] c"-isystem\00" -declare void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16, ptr byval(%S.C.CXType) align 8) -declare { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8) -@.str.6448 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6449 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6450 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6451 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6452 = 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.6453 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6454 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6455 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6456 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6457 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" -@.str.6458 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6459 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6460 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6461 = 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.6462 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6463 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6464 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6465 = 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.6466 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6467 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6468 = 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.6469 = 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.6470 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6471 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -@.str.6472 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6473 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6474 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6475 = 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.6476 = private unnamed_addr constant [15 x i8] c"has bit fields\00" -@.str.6477 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6478 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6479 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6480 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" -@.str.6481 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6482 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" -@.str.6483 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6484 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6485 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6486 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" -@.str.6487 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6488 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6489 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6490 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" -@.str.6491 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6492 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6493 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6494 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6495 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6496 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6497 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6498 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6499 = private unnamed_addr constant [8 x i8] c"uses a \00" -@.str.6500 = private unnamed_addr constant [12 x i8] c"-bit number\00" -@.str.6501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6502 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6503 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6504 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6505 = 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.6506 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6507 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6508 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6509 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6510 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6511 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" -@.str.6512 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" -@.str.6513 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.6514 = 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.6515 = private unnamed_addr constant [17 x i8] c"uses long double\00" -@.str.6516 = 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.6517 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6518 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6519 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6520 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6521 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.6522 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6523 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6524 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6525 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6526 = private unnamed_addr constant [5 x i8] c"uUlL\00" -@.str.6527 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6528 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6529 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6530 = 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.6531 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6532 = 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.6533 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6534 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare void @clang_disposeTokens(ptr, ptr, i32) -@.str.6535 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6536 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6537 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6538 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6539 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6540 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6541 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.6542 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6543 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.6544 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6545 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6546 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6547 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6548 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6549 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6550 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6551 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6552 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.6553 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6554 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.6555 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6556 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6557 = private unnamed_addr constant [5 x i8] c"fFlL\00" -@.str.6558 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6559 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6560 = 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.6561 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6562 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6563 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6564 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6565 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6566 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6567 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6568 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6569 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6570 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6571 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6572 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6573 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6574 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6575 = 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.6576 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" -@.str.6577 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6578 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6579 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" -@.str.6580 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6581 = 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.6582 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6583 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6584 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6585 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6586 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6587 = 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.6588 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6589 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6590 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6591 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6592 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6593 = 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.6594 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6595 = 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.6596 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6597 = 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.6598 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6599 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6600 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6601 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6602 = private unnamed_addr constant [3 x i8] c"-x\00" -@.str.6603 = private unnamed_addr constant [2 x i8] c"c\00" -@.str.6604 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" -@.str.6605 = private unnamed_addr constant [10 x i8] c"--target=\00" -@.str.6606 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" -@.str.6607 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.6608 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6609 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @clang_createIndex(i32, i32) -@.str.6610 = private unnamed_addr constant [11 x i8] c"#include \22\00" -@.str.6611 = private unnamed_addr constant [3 x i8] c"\22\0A\00" -@.str.6612 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6613 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6614 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr) -@.str.6615 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" -@.str.6616 = 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.6617 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6618 = private unnamed_addr constant [15 x i8] c"file not found\00" -@.str.6619 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6620 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6621 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6622 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6623 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6624 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6625 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6626 = private unnamed_addr constant [11 x i8] c"', which '\00" -@.str.6627 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" -@.str.6628 = private unnamed_addr constant [20 x i8] c": error: C header '\00" -@.str.6629 = 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.6630 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6631 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6632 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6633 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6634 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6635 = private unnamed_addr constant [5 x i8] c"'\5C''\00" -@.str.6636 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6637 = private unnamed_addr constant [10 x i8] c"/dev/null\00" -@.str.6638 = private unnamed_addr constant [7 x i8] c"TMPDIR\00" -@.str.6639 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6640 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6641 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6642 = private unnamed_addr constant [13 x i8] c"src/host.fch\00" -@.str.6643 = private unnamed_addr constant [5 x i8] c"/tmp\00" -@.str.6644 = private unnamed_addr constant [2 x i8] c":\00" -declare i32 @getpid() -@.str.6645 = private unnamed_addr constant [4 x i8] c"PWD\00" -@.str.6646 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6647 = private unnamed_addr constant [15 x i8] c"XDG_CACHE_HOME\00" -@.str.6648 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6649 = private unnamed_addr constant [7 x i8] c"/finch\00" -@.str.6650 = private unnamed_addr constant [5 x i8] c"HOME\00" -@.str.6651 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6652 = private unnamed_addr constant [14 x i8] c"/.cache/finch\00" -@.str.6653 = private unnamed_addr constant [13 x i8] c"/finch-cache\00" -@.str.6654 = private unnamed_addr constant [10 x i8] c"mkdir -p \00" -@.str.6655 = private unnamed_addr constant [8 x i8] c"rm -rf \00" -@.str.6656 = private unnamed_addr constant [4 x i8] c"mv \00" -@.str.6657 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6658 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6659 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6660 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6661 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6662 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6663 = private unnamed_addr constant [15 x i8] c"/finch_triple_\00" -@.str.6664 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6665 = private unnamed_addr constant [22 x i8] c"clang -dumpmachine > \00" -@.str.6666 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6667 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6668 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6669 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6670 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6671 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6672 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.6673 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6674 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6675 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6676 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" -@.str.6677 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" -@.str.6678 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6679 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6680 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6681 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6682 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6683 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" -@.str.6684 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" -@.str.6685 = private unnamed_addr constant [23 x i8] c"x86_64-w64-windows-gnu\00" -@.str.6686 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6687 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6688 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6689 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6690 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6691 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6692 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6693 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6694 = private unnamed_addr constant [6 x i8] c"win32\00" -@.str.6695 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6696 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6697 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6698 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6699 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6700 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6701 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6702 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6703 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6704 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6705 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6706 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6707 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6708 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6709 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6710 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6711 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6712 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6713 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6714 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6715 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6716 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6717 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6718 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6719 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6720 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6721 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6722 = private unnamed_addr constant [5 x i8] c".exe\00" -@.str.6723 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6724 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6725 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" -@.str.6726 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" -@.str.6727 = private unnamed_addr constant [16 x i8] c"clang --target=\00" -@.str.6728 = private unnamed_addr constant [2 x i8] c";\00" -@.str.6729 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6730 = private unnamed_addr constant [3 x i8] c"cc\00" -@.str.6731 = private unnamed_addr constant [6 x i8] c"wine \00" -@.str.6732 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" -@.str.6733 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.6734 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6735 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6736 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6737 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6738 = private unnamed_addr constant [12 x i8] c"-framework \00" -@.str.6739 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6740 = private unnamed_addr constant [18 x i8] c"/finch_pkg_flags_\00" -@.str.6741 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6742 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" -@.str.6743 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6744 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6745 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6746 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6747 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.6748 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6749 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6750 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6751 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6752 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6753 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6754 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6755 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6756 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6757 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6758 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6759 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6760 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6761 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6762 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6763 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6764 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6765 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6766 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6767 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6768 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6769 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6770 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6771 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6772 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6773 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6774 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6775 = private unnamed_addr constant [3 x i8] c" \0A\00" -@.str.6776 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6777 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6778 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6779 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" -@.str.6780 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6781 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6782 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6783 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6784 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6785 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6786 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6787 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6788 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6789 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6790 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6791 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6792 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6793 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6794 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6795 = private unnamed_addr constant [10 x i8] c"not found\00" -@.str.6796 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6797 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6798 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6799 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6800 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6801 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6802 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6803 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6804 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6805 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6806 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6807 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.6808 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6809 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" -@.str.6810 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6811 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6812 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6813 = private unnamed_addr constant [21 x i8] c"error: the library '\00" -@.str.6814 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" -@.str.6815 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6816 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6817 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6818 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6819 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6820 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6821 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6822 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.6824 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.6825 = private unnamed_addr constant [6 x i8] c" more\00" -@.str.6826 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6827 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" -@.str.6828 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6829 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6830 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6831 = private unnamed_addr constant [5 x i8] c"come\00" -@.str.6832 = private unnamed_addr constant [6 x i8] c"comes\00" -@.str.6833 = private unnamed_addr constant [8 x i8] c"error: \00" -@.str.6834 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6835 = private unnamed_addr constant [8 x i8] c" from \22\00" -@.str.6836 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6837 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" -@.str.6838 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6839 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6840 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6841 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" -@.str.6842 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6843 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6844 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6845 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" -@.str.6846 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6847 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6848 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6849 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6850 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6851 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6852 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6853 = private unnamed_addr constant [13 x i8] c" link \22\00" -@.str.6854 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6855 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6856 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6857 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6858 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6859 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6860 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6861 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6862 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6863 = private unnamed_addr constant [5 x i8] c"/rt-\00" -@.str.6864 = private unnamed_addr constant [4 x i8] c"2.5\00" -@.str.6865 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6866 = private unnamed_addr constant [6 x i8] c".part\00" -@.str.6867 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6869 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6870 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6871 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6872 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6873 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6874 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6875 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6876 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" -@.str.6877 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" -@.str.6878 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" -@.str.6879 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6880 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6881 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6882 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6883 = private unnamed_addr constant [9 x i8] c"FINCH_CC\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 [5 x i8] c"%.*s\00" -@.str.6887 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6888 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str.6889 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6890 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6891 = private unnamed_addr constant [11 x i8] c" --target=\00" -@.str.6892 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6893 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6894 = private unnamed_addr constant [8 x i8] c" -w -c \00" -@.str.6895 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6896 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6897 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6899 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6900 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6901 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6902 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" -@.str.6903 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6904 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6905 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6906 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6908 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6909 = private unnamed_addr constant [5 x i8] c" -lm\00" -@.str.6910 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6911 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6912 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6913 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6914 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6915 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" -@.str.6916 = private unnamed_addr constant [9 x i8] c" -shared\00" -@.str.6917 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6918 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6919 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6920 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6921 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6922 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6923 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6924 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6925 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6926 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6927 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6928 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6929 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" -@.str.6930 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6931 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6932 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6934 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6935 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6936 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6937 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.6938 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6939 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6940 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6941 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6942 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6943 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" -@.str.6944 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" -@.str.6945 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6946 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6947 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6948 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6949 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6950 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6951 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6952 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6953 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6954 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6955 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6956 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6957 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6958 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6959 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6960 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.6961 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6962 = private unnamed_addr constant [6 x i8] c"/-_.~\00" -@.str.6963 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6964 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.6965 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6966 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6967 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6968 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6969 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6970 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6971 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6972 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6973 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6974 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6975 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6976 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6977 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @getchar() -@.str.6978 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6979 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6980 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.6981 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -declare i32 @feof(ptr) -@.str.6982 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" -@.str.6983 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6984 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" -@.str.6985 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6986 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6987 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" -@.str.6988 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" -@.str.6989 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" -@.str.6990 = private unnamed_addr constant [1 x i8] c"\00" -declare i64 @fwrite(ptr, i64, i64, ptr) -@.str.6991 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6992 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6993 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.6994 = private unnamed_addr constant [7 x i8] c"result\00" -@.str.6995 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.6996 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.6997 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.6998 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.6999 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7000 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7001 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7002 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7003 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7004 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7005 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7006 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.7007 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7008 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7009 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7010 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7011 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7012 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7013 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7014 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7015 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7016 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7017 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7018 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.7019 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7020 = private unnamed_addr constant [3 x i8] c"@R\00" -@.str.7021 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7022 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7023 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7024 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7025 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7026 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7027 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7028 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7029 = private unnamed_addr constant [3 x i8] c"@V\00" -@.str.7030 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7031 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7032 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7033 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7034 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7035 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7036 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7037 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7038 = private unnamed_addr constant [3 x i8] c"@F\00" -@.str.7039 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7040 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7041 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7042 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7043 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7044 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7045 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7046 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7047 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7048 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7049 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.7050 = private unnamed_addr constant [3 x i8] c"@S\00" -@.str.7051 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7052 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7053 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7054 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7055 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7056 = private unnamed_addr constant [4 x i8] c"@SF\00" -@.str.7057 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7058 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7059 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7060 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7061 = private unnamed_addr constant [3 x i8] c"@E\00" -@.str.7062 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7063 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7064 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7065 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7066 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7067 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7068 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7069 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7070 = private unnamed_addr constant [3 x i8] c"@I\00" -@.str.7071 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7072 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7073 = private unnamed_addr constant [5 x i8] c"/doc\00" -@.str.7074 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.7075 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7076 = private unnamed_addr constant [12 x i8] c" --overlay \00" -@.str.7077 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.7078 = private unnamed_addr constant [9 x i8] c"/out.txt\00" -@.str.7079 = private unnamed_addr constant [8 x i8] c" index \00" -@.str.7080 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.7081 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.7082 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7083 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7084 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7085 = private unnamed_addr constant [9 x i8] c"severity\00" -@.str.7086 = private unnamed_addr constant [7 x i8] c"source\00" -@.str.7087 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7088 = private unnamed_addr constant [8 x i8] c"message\00" -@.str.7089 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7090 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7091 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7092 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7093 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7094 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7095 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7096 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7097 = private unnamed_addr constant [9 x i8] c"contents\00" -@.str.7098 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7099 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7100 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7101 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7102 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7103 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7104 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7105 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7106 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7107 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7108 = private unnamed_addr constant [15 x i8] c"selectionRange\00" -@.str.7109 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7110 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7111 = private unnamed_addr constant [7 x i8] c"detail\00" -@.str.7112 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7113 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7114 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7115 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7116 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7117 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7118 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7119 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" -@.str.7120 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7121 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7122 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7123 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7124 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7125 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7126 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7127 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7128 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7129 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7130 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7131 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7132 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7133 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7135 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7136 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7137 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7138 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7139 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7140 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7141 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.7142 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7143 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7144 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7145 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7146 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7147 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7148 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7149 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7150 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7151 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.7152 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7153 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7155 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7157 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7158 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7159 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7160 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7161 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7162 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7163 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7164 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7165 = private unnamed_addr constant [7 x i8] c"module\00" -@.str.7166 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7167 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7168 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7169 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7170 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7171 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" -@.str.7172 = private unnamed_addr constant [6 x i8] c"items\00" -@.str.7173 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7174 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7175 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7176 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7177 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7178 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7179 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7180 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7181 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7182 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7183 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7184 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7185 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7186 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7187 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7188 = private unnamed_addr constant [11 x i8] c"parameters\00" -@.str.7189 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7190 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7191 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7192 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7193 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7194 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7195 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7196 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7197 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7198 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7199 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7200 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7201 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7202 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7203 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.7204 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7205 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.7206 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.7207 = private unnamed_addr constant [11 x i8] c"initialize\00" -@.str.7208 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" -@.str.7209 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" -@.str.7210 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" -@.str.7211 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" -@.str.7212 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7213 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7214 = private unnamed_addr constant [19 x i8] c"completionProvider\00" -@.str.7215 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.7216 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7217 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7218 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" -@.str.7219 = private unnamed_addr constant [13 x i8] c"capabilities\00" -@.str.7220 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7221 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7222 = private unnamed_addr constant [11 x i8] c"serverInfo\00" -@.str.7223 = private unnamed_addr constant [9 x i8] c"shutdown\00" -@.str.7224 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.7225 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" -@.str.7226 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" -@.str.7227 = private unnamed_addr constant [15 x i8] c"contentChanges\00" -@.str.7228 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7229 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7230 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" -@.str.7231 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" -@.str.7232 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7233 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7234 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7235 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7236 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7237 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7238 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7239 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" -@.str.7240 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7241 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7242 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7243 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7244 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7245 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7246 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7247 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7248 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7249 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7250 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7251 = private unnamed_addr constant [12 x i8] c"/finch_lsp_\00" -@.str.7252 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7253 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7254 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7255 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7256 = private unnamed_addr constant [3 x i8] c"\5C\22\00" -@.str.7257 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.7258 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.7259 = private unnamed_addr constant [3 x i8] c"\5Cr\00" -@.str.7260 = private unnamed_addr constant [3 x i8] c"\5Ct\00" -@.str.7261 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" -@.str.7262 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7263 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7264 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.7265 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7266 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7267 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7268 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7269 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7270 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7271 = private unnamed_addr constant [3 x i8] c": \00" -@.str.7272 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7273 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7274 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7275 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7276 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7277 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7278 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7279 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7280 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7281 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7282 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7283 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7284 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7285 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7286 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7287 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7288 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7289 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7290 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7291 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7292 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7293 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7294 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7295 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7296 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7297 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7298 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7299 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7300 = private unnamed_addr constant [3 x i8] c"{}\00" -@.str.7301 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7302 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7303 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.7304 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7305 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7306 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7307 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7308 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7309 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7310 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7311 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.7312 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7313 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.7314 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7315 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7316 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7317 = private unnamed_addr constant [3 x i8] c" \00" -@.str.7318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7319 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7320 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7321 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7322 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7323 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7324 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7325 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7326 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7327 = private unnamed_addr constant [6 x i8] c"line \00" -@.str.7328 = private unnamed_addr constant [10 x i8] c", column \00" -@.str.7329 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7330 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7331 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7332 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7333 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7335 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7336 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7337 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7338 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7340 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7341 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7342 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7343 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7344 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7345 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7346 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7347 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7348 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7349 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7350 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7351 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7352 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7353 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7354 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7355 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7356 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7357 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7358 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7359 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7360 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7361 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7362 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7363 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7364 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7365 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7366 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7367 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7368 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" -@.str.7369 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7371 = private unnamed_addr constant [14 x i8] c"json: found '\00" -@.str.7372 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7373 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7374 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7375 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7376 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7377 = private unnamed_addr constant [9 x i8] c"' where \00" -@.str.7378 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7379 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7380 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7381 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7382 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7383 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7384 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7385 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7386 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7387 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7388 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7389 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7390 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7391 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7392 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7393 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7394 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7395 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7396 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7397 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7398 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7399 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7400 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7401 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7402 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7403 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7404 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" -@.str.7405 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7406 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7407 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7408 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7409 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7410 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7411 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7412 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7413 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7414 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7415 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7416 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7418 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7419 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7420 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" -@.str.7421 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7422 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7423 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7424 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7425 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7426 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7427 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7428 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7429 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7430 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7431 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7432 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7434 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7435 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" -@.str.7436 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7437 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7438 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7439 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7440 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7441 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7442 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7443 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7444 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7445 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7446 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7448 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7449 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7450 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.7451 = private unnamed_addr constant [3 x i8] c"\5Cu\00" -@.str.7452 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7453 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7454 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" -@.str.7455 = private unnamed_addr constant [13 x i8] c" in a text (\00" -@.str.7456 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7457 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7458 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7459 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7460 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7461 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7462 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7463 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7464 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7465 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7466 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7467 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7468 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7469 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7470 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7471 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7472 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7473 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7474 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7475 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7476 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7477 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7478 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7479 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7480 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7481 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7482 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7483 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7484 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7485 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7486 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7487 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7488 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7489 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7491 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7492 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7493 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7494 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7495 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7496 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7497 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7498 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7499 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7500 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7501 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7502 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7503 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7504 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7505 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7506 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7507 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7508 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7509 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7510 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7511 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.7512 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7513 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7514 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7515 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7516 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7517 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7518 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7519 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7520 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7521 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" -@.str.7522 = private unnamed_addr constant [4 x i8] c"':'\00" -@.str.7523 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7524 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7525 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7526 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7527 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7528 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7529 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" -@.str.7530 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7531 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7532 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7533 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7534 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7535 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7536 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7537 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7538 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" -@.str.7539 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7540 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7541 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7542 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7543 = private unnamed_addr constant [20 x i8] c"the end of the text\00" -@.str.7544 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.7545 = private unnamed_addr constant [13 x i8] c"std/json.fch\00" -@.str.7546 = private unnamed_addr constant [13 x i8] c"std/path.fch\00" -@.str.7547 = private unnamed_addr constant [13 x i8] c"std/proc.fch\00" -@.str.7548 = private unnamed_addr constant [21 x i8] c"std/proc_windows.fch\00" -@.str.7549 = private unnamed_addr constant [13 x i8] c"std/time.fch\00" -@.str.7550 = private unnamed_addr constant [21 x i8] c"std/time_windows.fch\00" -@.str.7551 = private unnamed_addr constant [16 x i8] c"std/finch_win.h\00" -@.str.7552 = private unnamed_addr constant [24982 x i8] c"// The Finch runtime: string and array helpers, input, files and runtime errors.\0A// It is embedded in the compiler, compiled once into a cache folder, and linked\0A// statically into every Finch program. Everything here is plain C with no state.\0A//\0A// Layout shared with the compiler (src/codegen.cpp):\0A// str = { char *ptr; int64 len; int64 cap } ptr is always NUL-terminated\0A// cap > 0 : heap memory owned by the value (cap bytes allocated)\0A// cap == 0 : a string literal, valid forever, never written to\0A// cap == -1: borrowed from C, must be copied before it is kept\0A// []T = { T *ptr; int64 len; int64 cap } owns ptr when cap > 0\0A// map[K]V: see \22maps\22 below\0A\0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#ifndef _WIN32\0A#include \0A#endif\0A\0Atypedef struct {\0A char *ptr;\0A int64_t len;\0A int64_t cap;\0A} FStr;\0A\0Atypedef struct {\0A void *ptr;\0A int64_t len;\0A int64_t cap;\0A} FArr;\0A\0Astatic char empty[1] = \22\22;\0A\0A// ---------- runtime errors ----------\0A\0A// A program that loads Finch libraries (finch build --shared) can take runtime errors over\0A// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler\0A// gets the message and must not return (longjmp out, or exit itself).\0Astatic void (*fatal_hook)(const char *msg);\0Avoid finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; }\0A\0Astatic __attribute__((noreturn)) void fatal(const char *msg) {\0A if (fatal_hook) fatal_hook(msg);\0A fflush(stdout);\0A fprintf(stderr, \22%s\5Cn\22, msg);\0A exit(1);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) {\0A char full[1024];\0A snprintf(full, sizeof full, \22%s:%lld: runtime error: %s\22, file, (long long)line, msg);\0A fflush(stdout);\0A fatal(full);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) {\0A char msg[128];\0A snprintf(msg, sizeof msg, \22index %lld is out of range (the length is %lld)\22, (long long)i, (long long)len);\0A finch_panic(file, line, msg);\0A}\0A\0Astatic void *must(void *p) {\0A if (!p) {\0A fflush(stdout);\0A fatal(\22runtime error: out of memory\22);\0A }\0A return p;\0A}\0A\0Avoid *finch_alloc(int64_t n) { return must(malloc(n ? (size_t)n : 1)); }\0Avoid *finch_zalloc(int64_t n) { return must(calloc(1, n ? (size_t)n : 1)); }\0A\0A// ---------- strings ----------\0A\0Astatic void str_heap(FStr *out, const char *p, int64_t len) {\0A char *m = finch_alloc(len + 1);\0A if (len) memcpy(m, p, (size_t)len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void str_static(FStr *out, const char *lit) {\0A out->ptr = (char *)lit;\0A out->len = (int64_t)strlen(lit);\0A out->cap = 0;\0A}\0A\0A// A copy that can be kept: literals are shared, everything else is duplicated.\0Avoid finch_str_copy(FStr *out, const FStr *s) {\0A if (s->cap == 0) *out = *s;\0A else str_heap(out, s->ptr, s->len);\0A}\0A\0A// Make `s` writable (before s[i] = c).\0Avoid finch_str_own(FStr *s) {\0A if (s->cap > 0) return;\0A FStr t;\0A str_heap(&t, s->ptr, s->len);\0A *s = t;\0A}\0A\0Avoid finch_str_drop(FStr *s) {\0A if (s->cap > 0) free(s->ptr);\0A}\0A\0Avoid finch_str_from_c(FStr *out, const char *p) {\0A if (!p) {\0A str_static(out, empty);\0A return;\0A }\0A out->ptr = (char *)p;\0A out->len = (int64_t)strlen(p);\0A out->cap = -1;\0A}\0A\0Avoid finch_str_concat(FStr *out, const FStr *a, const FStr *b) {\0A int64_t len = a->len + b->len;\0A char *m = finch_alloc(len + 1);\0A memcpy(m, a->ptr, (size_t)a->len);\0A memcpy(m + a->len, b->ptr, (size_t)b->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Aint finch_str_eq(const FStr *a, const FStr *b) {\0A return a->len == b->len && memcmp(a->ptr, b->ptr, (size_t)a->len) == 0;\0A}\0A\0Aint64_t finch_str_cmp(const FStr *a, const FStr *b) {\0A int64_t n = a->len < b->len ? a->len : b->len;\0A int c = memcmp(a->ptr, b->ptr, (size_t)n);\0A if (c) return c < 0 ? -1 : 1;\0A return a->len < b->len ? -1 : a->len > b->len;\0A}\0A\0Avoid finch_str_from_int(FStr *out, int64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%lld\22, (long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_uint(FStr *out, uint64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%llu\22, (unsigned long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_float(FStr *out, double v) {\0A char buf[64];\0A int n = snprintf(buf, sizeof buf, \22%g\22, v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_char(FStr *out, char c) { str_heap(out, &c, 1); }\0A\0Avoid finch_str_from_bool(FStr *out, int b) { str_static(out, b ? \22true\22 : \22false\22); }\0A\0Astatic void number_error(char *msg, size_t size, const FStr *s, const char *kind) {\0A snprintf(msg, size, \22can't turn \5C\22%.*s\5C\22 into %s\22, (int)(s->len > 100 ? 100 : s->len), s->ptr ? s->ptr : \22\22, kind);\0A}\0A\0Astatic int parse_int(const FStr *s, int64_t *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A errno = 0;\0A long long v = strtoll(p, &end, 10);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end || errno == ERANGE);\0A}\0A\0Astatic int parse_float(const FStr *s, double *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A double v = strtod(p, &end);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end);\0A}\0A\0Aint64_t finch_str_to_int(const FStr *s, const char *file, int64_t line) {\0A int64_t v;\0A if (!parse_int(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0Adouble finch_str_to_float(const FStr *s, const char *file, int64_t line) {\0A double v;\0A if (!parse_float(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0A// ---------- errors as values: int(s) or 0, try read_file(p) ... ----------\0A// Each gives back 1 on success; on failure 0, with the message in *err.\0A\0Astatic void set_error(FStr *err, const char *msg) { str_heap(err, msg, (int64_t)strlen(msg)); }\0A\0Aint finch_str_try_int(const FStr *s, int64_t *out, FStr *err) {\0A if (parse_int(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Aint finch_str_try_float(const FStr *s, double *out, FStr *err) {\0A if (parse_float(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Astatic void file_error(FStr *err, const char *what, const FStr *path) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't %s the file \5C\22%.*s\5C\22: %s\22, what, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr ? path->ptr : \22\22, strerror(errno));\0A set_error(err, msg);\0A}\0A\0A// when `fn main() -> !` fails\0Avoid finch_report_error(const FStr *msg) {\0A fflush(stdout);\0A fprintf(stderr, \22error: %.*s\5Cn\22, (int)msg->len, msg->ptr ? msg->ptr : \22\22);\0A}\0A\0Avoid finch_str_sub(FStr *out, const FStr *s, int64_t start, int64_t end, const char *file, int64_t line) {\0A if (start < 0 || end > s->len || start > end) {\0A char msg[160];\0A snprintf(msg, sizeof msg, \22sub(%lld, %lld) is out of range (the length is %lld)\22, (long long)start,\0A (long long)end, (long long)s->len);\0A finch_panic(file, line, msg);\0A }\0A str_heap(out, s->ptr + start, end - start);\0A}\0A\0Aint64_t finch_str_find(const FStr *s, const FStr *t) {\0A if (t->len == 0) return 0;\0A for (int64_t i = 0; i + t->len <= s->len; i++)\0A if (s->ptr[i] == t->ptr[0] && memcmp(s->ptr + i, t->ptr, (size_t)t->len) == 0) return i;\0A return -1;\0A}\0A\0Aint finch_str_starts(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Aint finch_str_ends(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr + s->len - t->len, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Avoid finch_str_trim(FStr *out, const FStr *s) {\0A int64_t a = 0, b = s->len;\0A while (a < b && isspace((unsigned char)s->ptr[a])) a++;\0A while (b > a && isspace((unsigned char)s->ptr[b - 1])) b--;\0A str_heap(out, s->ptr + a, b - a);\0A}\0A\0Avoid finch_str_upper(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)toupper((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_lower(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)tolower((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_replace(FStr *out, const FStr *s, const FStr *from, const FStr *to) {\0A if (from->len == 0) {\0A str_heap(out, s->ptr, s->len);\0A return;\0A }\0A int64_t count = 0;\0A for (int64_t i = 0; i + from->len <= s->len;) {\0A if (memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A count++;\0A i += from->len;\0A } else {\0A i++;\0A }\0A }\0A int64_t len = s->len + count * (to->len - from->len);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < s->len;) {\0A if (i + from->len <= s->len && memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A memcpy(w, to->ptr, (size_t)to->len);\0A w += to->len;\0A i += from->len;\0A } else {\0A *w++ = s->ptr[i++];\0A }\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len);\0A\0A// \22a,b,,c\22.split(\22,\22) -> [\22a\22, \22b\22, \22\22, \22c\22]; split(\22\22) gives single characters.\0Avoid finch_str_split(FArr *out, const FStr *s, const FStr *sep) {\0A out->ptr = NULL;\0A out->len = out->cap = 0;\0A if (sep->len == 0) {\0A for (int64_t i = 0; i < s->len; i++) arr_push_str(out, s->ptr + i, 1);\0A return;\0A }\0A int64_t start = 0;\0A for (int64_t i = 0; i + sep->len <= s->len;) {\0A if (memcmp(s->ptr + i, sep->ptr, (size_t)sep->len) == 0) {\0A arr_push_str(out, s->ptr + start, i - start);\0A i += sep->len;\0A start = i;\0A } else {\0A i++;\0A }\0A }\0A arr_push_str(out, s->ptr + start, s->len - start);\0A}\0A\0Avoid finch_str_join(FStr *out, const FArr *parts, const FStr *sep) {\0A const FStr *p = parts->ptr;\0A int64_t len = 0;\0A for (int64_t i = 0; i < parts->len; i++) len += p[i].len + (i ? sep->len : 0);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < parts->len; i++) {\0A if (i) {\0A memcpy(w, sep->ptr, (size_t)sep->len);\0A w += sep->len;\0A }\0A memcpy(w, p[i].ptr, (size_t)p[i].len);\0A w += p[i].len;\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_repeat(FStr *out, const FStr *s, int64_t n) {\0A if (n < 0) n = 0;\0A int64_t len = s->len * n;\0A char *m = finch_alloc(len + 1);\0A for (int64_t i = 0; i < n; i++) memcpy(m + i * s->len, s->ptr, (size_t)s->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_from_bytes(FStr *out, const FArr *bytes) { str_heap(out, bytes->ptr, bytes->len); }\0A\0A// ---------- building text: print(x) and str(x) of arrays, maps and structs ----------\0A// A buffer starts as an empty str and grows on the heap.\0A\0Avoid finch_buf_add(FStr *b, const char *p, int64_t n) {\0A if (b->len + n + 1 > b->cap) {\0A int64_t cap = b->cap > 0 ? b->cap * 2 : 32;\0A while (cap < b->len + n + 1) cap *= 2;\0A b->ptr = must(realloc(b->cap > 0 ? b->ptr : NULL, (size_t)cap));\0A b->cap = cap;\0A }\0A if (n) memcpy(b->ptr + b->len, p, (size_t)n);\0A b->len += n;\0A b->ptr[b->len] = 0;\0A}\0A\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) {\0A char t[64];\0A va_list ap;\0A va_start(ap, fmt);\0A int n = vsnprintf(t, sizeof t, fmt, ap);\0A va_end(ap);\0A finch_buf_add(b, t, n);\0A}\0A\0Avoid finch_buf_int(FStr *b, int64_t v) { buf_fmt(b, \22%lld\22, (long long)v); }\0Avoid finch_buf_uint(FStr *b, uint64_t v) { buf_fmt(b, \22%llu\22, (unsigned long long)v); }\0Avoid finch_buf_float(FStr *b, double v) { buf_fmt(b, \22%g\22, v); }\0Avoid finch_buf_bool(FStr *b, int v) { finch_buf_add(b, v ? \22true\22 : \22false\22, v ? 4 : 5); }\0Avoid finch_buf_ptr(FStr *b, const void *p) {\0A if (p) buf_fmt(b, \220x%llx\22, (unsigned long long)(uintptr_t)p);\0A else finch_buf_add(b, \22null\22, 4);\0A}\0A\0Avoid finch_buf_char(FStr *b, char c, int quoted) {\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A finch_buf_add(b, &c, 1);\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A}\0A\0Avoid finch_buf_str(FStr *b, const FStr *s, int quoted) {\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A finch_buf_add(b, s->ptr, s->len);\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A}\0A\0A// print the buffer and free it\0Avoid finch_buf_print(FStr *b) {\0A if (b->len) fwrite(b->ptr, 1, (size_t)b->len, stdout);\0A if (b->cap > 0) free(b->ptr);\0A}\0A\0A// ---------- arrays ----------\0A\0Avoid finch_arr_reserve(FArr *a, int64_t need, int64_t es) {\0A if (need <= a->cap) return;\0A int64_t cap = a->cap * 2;\0A if (cap < 4) cap = 4;\0A if (cap < need) cap = need;\0A a->ptr = must(realloc(a->cap > 0 ? a->ptr : NULL, (size_t)(cap * es)));\0A a->cap = cap;\0A}\0A\0Avoid finch_arr_make(FArr *out, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A out->ptr = len ? finch_zalloc(len * es) : NULL;\0A out->len = len;\0A out->cap = len;\0A}\0A\0A// grow or shrink to `len`; new elements are zero\0Avoid finch_arr_resize(FArr *a, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A finch_arr_reserve(a, len, es);\0A if (len > a->len) memset((char *)a->ptr + a->len * es, 0, (size_t)((len - a->len) * es));\0A a->len = len;\0A}\0A\0A// a byte-for-byte copy of the elements (the compiler deep-copies owning elements afterwards)\0Avoid finch_arr_clone_raw(FArr *out, const FArr *a, int64_t es) {\0A out->len = a->len;\0A out->cap = a->len;\0A out->ptr = a->len ? finch_alloc(a->len * es) : NULL;\0A if (a->len) memcpy(out->ptr, a->ptr, (size_t)(a->len * es));\0A}\0A\0Avoid finch_arr_free(FArr *a) {\0A if (a->cap > 0) free(a->ptr);\0A}\0A\0A// open a hole at i (0 <= i <= len), len grows by one\0Avoid finch_arr_insert_gap(FArr *a, int64_t i, int64_t es, const char *file, int64_t line) {\0A if (i < 0 || i > a->len) finch_panic_index(file, line, i, a->len);\0A finch_arr_reserve(a, a->len + 1, es);\0A char *p = a->ptr;\0A memmove(p + (i + 1) * es, p + i * es, (size_t)((a->len - i) * es));\0A a->len++;\0A}\0A\0A// close the hole at i (the element was already moved out), len shrinks by one\0Avoid finch_arr_remove_gap(FArr *a, int64_t i, int64_t es) {\0A char *p = a->ptr;\0A memmove(p + i * es, p + (i + 1) * es, (size_t)((a->len - i - 1) * es));\0A a->len--;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len) {\0A finch_arr_reserve(a, a->len + 1, (int64_t)sizeof(FStr));\0A str_heap((FStr *)a->ptr + a->len, p, len);\0A a->len++;\0A}\0A\0Avoid finch_bytes_from_str(FArr *out, const FStr *s) {\0A out->len = out->cap = s->len;\0A out->ptr = s->len ? finch_alloc(s->len) : NULL;\0A if (s->len) memcpy(out->ptr, s->ptr, (size_t)s->len);\0A}\0A\0A// ---------- program arguments, input and files ----------\0A\0Avoid finch_args(FArr *out, int argc, char **argv) {\0A out->len = out->cap = argc;\0A out->ptr = finch_alloc((int64_t)sizeof(FStr) * (argc ? argc : 1));\0A for (int i = 0; i < argc; i++) str_heap((FStr *)out->ptr + i, argv[i], (int64_t)strlen(argv[i]));\0A}\0A\0A// input(\22Name? \22) prints the prompt and reads one line, without the newline.\0Avoid finch_input(FStr *out, const FStr *prompt) {\0A if (prompt->len) fwrite(prompt->ptr, 1, (size_t)prompt->len, stdout);\0A fflush(stdout);\0A // read one line of any length (getline isn't available everywhere)\0A size_t size = 128, n = 0;\0A char *line = finch_alloc((int64_t)size);\0A int c, got = 0;\0A while ((c = fgetc(stdin)) != EOF) {\0A got = 1;\0A if (c == '\5Cn') break;\0A if (n + 1 >= size) line = must(realloc(line, size *= 2));\0A line[n++] = (char)c;\0A }\0A if (!got) {\0A free(line);\0A str_static(out, empty);\0A return;\0A }\0A while (n > 0 && line[n - 1] == '\5Cr') n--;\0A line[n] = 0;\0A out->ptr = line;\0A out->len = (int64_t)n;\0A out->cap = (int64_t)size;\0A}\0A\0Aint finch_file_exists(const FStr *path) {\0A FILE *f = fopen(path->ptr, \22rb\22);\0A if (f) fclose(f);\0A return f != NULL;\0A}\0A\0Aint finch_try_read_file(FStr *out, const FStr *path, FStr *err) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A file_error(err, \22read\22, path);\0A return 0;\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A return 1;\0A}\0A\0Avoid finch_read_file(FStr *out, const FStr *path, const char *file, int64_t line) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't read the file \5C\22%.*s\5C\22: %s\22, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr, strerror(errno));\0A finch_panic(file, line, msg);\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A}\0A\0A// shell(\22ls -l\22): run a command, give back its exit code\0Aint64_t finch_shell(const FStr *cmd) {\0A fflush(stdout);\0A int status = system(cmd->ptr ? cmd->ptr : \22\22);\0A#ifdef _WIN32\0A return status; // Windows gives the exit code directly\0A#else\0A if (status == -1) return -1;\0A if (WIFEXITED(status)) return WEXITSTATUS(status);\0A return 128 + (WIFSIGNALED(status) ? WTERMSIG(status) : 0);\0A#endif\0A}\0A\0Aint finch_delete_file(const FStr *path) { return remove(path->ptr ? path->ptr : \22\22) == 0; }\0A\0Aint finch_try_delete_file(const FStr *path, FStr *err) {\0A if (remove(path->ptr ? path->ptr : \22\22) == 0) return 1;\0A file_error(err, \22delete\22, path);\0A return 0;\0A}\0A\0A// stdin/stdout/stderr are macros on some systems (Windows), so Finch asks for them here\0Avoid *finch_std_stream(int i) { return i == 0 ? (void *)stdin : i == 1 ? (void *)stdout : (void *)stderr; }\0A\0Aint finch_write_file(const FStr *path, const FStr *text) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22wb\22);\0A if (!f) return 0;\0A size_t put = text->len ? fwrite(text->ptr, 1, (size_t)text->len, f) : 0;\0A return fclose(f) == 0 && put == (size_t)text->len;\0A}\0A\0Aint finch_try_write_file(const FStr *path, const FStr *text, FStr *err) {\0A errno = 0;\0A if (finch_write_file(path, text)) return 1;\0A if (!errno) errno = EIO;\0A file_error(err, \22write\22, path);\0A return 0;\0A}\0A\0A// ---------- maps ----------\0A// map[K]V = { entries; len; used; cap; index; icap; adds }\0A// entries: `used` slots of es bytes, each { uint64 hash; K key; V value }, in insertion order.\0A// A removed entry keeps its slot (hash 0) until the next resize packs the slots.\0A// index: icap slots (a power of two, at least 2 * cap): -1 empty, -2 removed, else an entry number.\0A// adds: how many keys were ever added; a `for` over the map stops with an error if it changes.\0A// The compiler stores, copies and drops keys and values; the runtime only finds and places entries.\0A// Keys are compared byte for byte (numbers, chars, bools) or as text (kstr).\0A\0Atypedef struct {\0A char *entries;\0A int64_t len, used, cap;\0A int64_t *index;\0A int64_t icap;\0A int64_t adds;\0A} FMap;\0A\0Astatic uint64_t map_hash(const void *key, int64_t ks, int kstr) {\0A const unsigned char *p;\0A size_t n;\0A if (kstr) {\0A const FStr *s = key;\0A p = (const unsigned char *)s->ptr;\0A n = (size_t)s->len;\0A } else {\0A p = key;\0A n = (size_t)ks;\0A }\0A uint64_t h = 1469598103934665603ULL; // FNV-1a, then mixed so the low bits spread well\0A for (size_t i = 0; i < n; i++) {\0A h ^= p[i];\0A h *= 1099511628211ULL;\0A }\0A h ^= h >> 31;\0A h *= 0xbf58476d1ce4e5b9ULL;\0A h ^= h >> 29;\0A return h | 1; // 0 marks a removed entry\0A}\0A\0Astatic int map_key_eq(const char *a, const void *b, int64_t ks, int kstr) {\0A if (!kstr) return memcmp(a, b, (size_t)ks) == 0;\0A const FStr *x = (const FStr *)a, *y = b;\0A return x->len == y->len && (x->len == 0 || memcmp(x->ptr, y->ptr, (size_t)x->len) == 0);\0A}\0A\0Astatic void map_reindex(FMap *m, int64_t es) {\0A if (m->len != m->used) { // pack the slots of removed entries away\0A int64_t j = 0;\0A for (int64_t i = 0; i < m->used; i++) {\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == 0) continue;\0A if (i != j) memmove(m->entries + j * es, e, (size_t)es);\0A j++;\0A }\0A m->used = j;\0A }\0A int64_t icap = 16;\0A while (icap < m->cap * 2) icap *= 2;\0A free(m->index);\0A m->index = finch_alloc(icap * (int64_t)sizeof(int64_t));\0A memset(m->index, 0xff, (size_t)icap * sizeof(int64_t));\0A m->icap = icap;\0A for (int64_t i = 0; i < m->used; i++) {\0A uint64_t h = *(uint64_t *)(m->entries + i * es);\0A int64_t s = (int64_t)(h & (uint64_t)(icap - 1));\0A while (m->index[s] != -1) s = (s + 1) & (icap - 1);\0A m->index[s] = i;\0A }\0A}\0A\0A// the entry number of `key`, or -1\0Aint64_t finch_map_find(const FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr) {\0A if (m->len == 0) return -1;\0A uint64_t h = map_hash(key, ks, kstr);\0A for (int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));; s = (s + 1) & (m->icap - 1)) {\0A int64_t i = m->index[s];\0A if (i == -1) return -1;\0A if (i < 0) continue;\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == h && map_key_eq(e + 8, key, ks, kstr)) return i;\0A }\0A}\0A\0A// The entry for `key`. A new one is zeroed except its hash (*added = 1); the compiler then stores the key.\0Aint64_t finch_map_slot(FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr, int32_t *added) {\0A int64_t i = finch_map_find(m, key, es, ks, kstr);\0A *added = i < 0;\0A if (i >= 0) return i;\0A if (m->used == m->cap) {\0A if (m->len * 4 < m->cap * 3) { // many removed slots: pack them instead of growing\0A map_reindex(m, es);\0A } else {\0A m->cap = m->cap ? m->cap * 2 : 8;\0A m->entries = must(realloc(m->entries, (size_t)(m->cap * es)));\0A map_reindex(m, es);\0A }\0A }\0A uint64_t h = map_hash(key, ks, kstr);\0A i = m->used++;\0A char *e = m->entries + i * es;\0A memset(e, 0, (size_t)es);\0A *(uint64_t *)e = h;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] >= 0) s = (s + 1) & (m->icap - 1);\0A m->index[s] = i;\0A m->len++;\0A m->adds++;\0A return i;\0A}\0A\0A// Forget entry i (its key and value were already dropped by the compiler).\0Avoid finch_map_remove_at(FMap *m, int64_t i, int64_t es) {\0A char *e = m->entries + i * es;\0A uint64_t h = *(uint64_t *)e;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] != i) s = (s + 1) & (m->icap - 1);\0A m->index[s] = -2;\0A *(uint64_t *)e = 0;\0A if (--m->len == 0) {\0A m->used = 0;\0A memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A }\0A}\0A\0Avoid finch_map_clear(FMap *m) {\0A m->len = m->used = 0;\0A if (m->index) memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0Avoid finch_map_free(FMap *m) {\0A free(m->entries);\0A free(m->index);\0A}\0A\0A// A copy of the slots and the index; the compiler then copies the keys and values that own memory.\0Avoid finch_map_clone_raw(FMap *out, const FMap *m, int64_t es) {\0A *out = *m;\0A if (!m->cap) return;\0A out->entries = finch_alloc(m->cap * es);\0A memcpy(out->entries, m->entries, (size_t)(m->used * es));\0A out->index = finch_alloc(m->icap * (int64_t)sizeof(int64_t));\0A memcpy(out->index, m->index, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_changed(const char *file, int64_t line) {\0A finch_panic(file, line, \22a key was added to the map while looping over it (collect the new keys, and add them after the loop)\22);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_missing(const char *file, int64_t line, const FStr *key) {\0A char msg[200];\0A snprintf(msg, sizeof msg, \22the key %.*s is not in the map (check with .has(key), or use .get(key, default))\22,\0A (int)(key->len > 100 ? 100 : key->len), key->ptr ? key->ptr : \22\22);\0A finch_panic(file, line, msg);\0A}\0A\00" -@.str.7553 = private unnamed_addr constant [12885 x i8] c"// JSON: read it, build it, write it.\0A//\0A// import json\0A//\0A// doc := try json.parse(\22{\5C\22name\5C\22: \5C\22Finch\5C\22, \5C\22tags\5C\22: [\5C\22fast\5C\22, \5C\22small\5C\22], \5C\22stars\5C\22: 5}\22)\0A// print(doc.get(\22name\22).str_or(\22\22)) Finch\0A// print(doc.get(\22tags\22).at(1).str_or(\22\22)) small\0A// print(doc.get(\22stars\22).int_or(0)) 5\0A// print(doc.get(\22missing\22).is_null()) true (a missing key is null, so chains never fail)\0A//\0A// out := json.new_object()\0A// out.set(\22ok\22, json.new_bool(true))\0A// list := json.new_list()\0A// list.push(json.new_number(1.5))\0A// out.set(\22values\22, list)\0A// print(json.stringify(out)) {\22ok\22:true,\22values\22:[1.5]}\0A// print(json.pretty(out)) the same, over several lines\0A\0Aenum Kind { Null, Bool, Number, Text, List, Object }\0A\0A// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number,\0A// text for Text, items for List, and items with keys (the same length, in the same order) for Object.\0Astruct Json {\0A Kind kind\0A bool flag\0A float num\0A str text\0A []Json items\0A []str keys\0A}\0A\0Afn new_null() -> Json {\0A return Json(kind: Kind.Null)\0A}\0A\0Afn new_bool(bool b) -> Json {\0A return Json(kind: Kind.Bool, flag: b)\0A}\0A\0Afn new_number(float n) -> Json {\0A return Json(kind: Kind.Number, num: n)\0A}\0A\0Afn new_text(str s) -> Json {\0A return Json(kind: Kind.Text, text: s)\0A}\0A\0Afn new_list() -> Json {\0A return Json(kind: Kind.List)\0A}\0A\0Afn new_object() -> Json {\0A return Json(kind: Kind.Object)\0A}\0A\0A// ---------- looking inside ----------\0A\0Afn Json.is_null() -> bool {\0A return self.kind == Kind.Null\0A}\0A\0A// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest\0Afn Json.len() -> int {\0A return match self.kind {\0A List, Object -> self.items.len\0A Text -> self.text.len\0A else -> 0\0A }\0A}\0A\0Afn Json.has(str key) -> bool {\0A return self.kind == Kind.Object && self.keys.contains(key)\0A}\0A\0A// the value of a key of an object; null if there is none (or this is not an object)\0Afn Json.get(str key) -> Json {\0A if self.kind != Kind.Object {\0A return new_null()\0A }\0A i := self.keys.find(key)\0A if i < 0 {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the element of a list; null if there is none\0Afn Json.at(int i) -> Json {\0A if self.kind != Kind.List || i < 0 || i >= self.items.len {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the value if it is of that kind, else what was given\0Afn Json.str_or(str fallback) -> str {\0A if self.kind == Kind.Text {\0A return self.text\0A }\0A return fallback\0A}\0A\0Afn Json.float_or(float fallback) -> float {\0A if self.kind == Kind.Number {\0A return self.num\0A }\0A return fallback\0A}\0A\0Afn Json.int_or(int fallback) -> int {\0A if self.kind == Kind.Number {\0A return int(self.num)\0A }\0A return fallback\0A}\0A\0Afn Json.bool_or(bool fallback) -> bool {\0A if self.kind == Kind.Bool {\0A return self.flag\0A }\0A return fallback\0A}\0A\0A// the keys of an object, in the order they were written\0Afn Json.names() -> []str {\0A return self.keys\0A}\0A\0A// ---------- building ----------\0A\0A// add to the end of a list\0Afn Json.push(Json v) {\0A self.items.push(v)\0A}\0A\0A// give a key a value in an object; a key that is already there is replaced\0Afn Json.set(str key, Json v) {\0A i := self.keys.find(key)\0A if i >= 0 {\0A self.items[i] = v\0A return\0A }\0A self.keys.push(key)\0A self.items.push(v)\0A}\0A\0A// ---------- writing ----------\0A\0Afn quote(str s) -> str {\0A []str parts = [\22\5C\22\22]\0A for c in s {\0A n := int(c)\0A if c == '\22' {\0A parts.push(\22\5C\5C\5C\22\22)\0A } else if c == '\5C\5C' {\0A parts.push(\22\5C\5C\5C\5C\22)\0A } else if c == '\5Cn' {\0A parts.push(\22\5C\5Cn\22)\0A } else if c == '\5Cr' {\0A parts.push(\22\5C\5Cr\22)\0A } else if c == '\5Ct' {\0A parts.push(\22\5C\5Ct\22)\0A } else if n < 32 {\0A parts.push(\22\5C\5Cu00\22 + hexdigit(n / 16) + hexdigit(n % 16))\0A } else {\0A parts.push(str(c))\0A }\0A }\0A parts.push(\22\5C\22\22)\0A return parts.join(\22\22)\0A}\0A\0Afn hexdigit(int n) -> str {\0A digits := \220123456789abcdef\22\0A return str(digits[n])\0A}\0A\0Afn number_text(float n) -> str {\0A if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 {\0A return str(int(n))\0A }\0A return str(n)\0A}\0A\0Astruct Writer {\0A []str out\0A}\0A\0Afn write(Json j, str indent, str pad, ptr[Writer] w) {\0A nl := \22\22\0A inner := \22\22\0A sep := \22,\22\0A colon := \22:\22\0A if indent.len > 0 {\0A nl = \22\5Cn\22\0A inner = pad + indent\0A colon = \22: \22\0A }\0A match j.kind {\0A Null -> w.out.push(\22null\22)\0A Bool -> {\0A if j.flag {\0A w.out.push(\22true\22)\0A } else {\0A w.out.push(\22false\22)\0A }\0A }\0A Number -> w.out.push(number_text(j.num))\0A Text -> w.out.push(quote(j.text))\0A List -> {\0A if j.items.len == 0 {\0A w.out.push(\22[]\22)\0A return\0A }\0A w.out.push(\22[\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22]\22)\0A }\0A Object -> {\0A if j.items.len == 0 {\0A w.out.push(\22{}\22)\0A return\0A }\0A w.out.push(\22{\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner + quote(j.keys[i]) + colon)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22}\22)\0A }\0A }\0A}\0A\0A// the value as text on one line\0Afn stringify(Json j) -> str {\0A w := Writer()\0A write(j, \22\22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// the value as text over several lines, indented by two spaces\0Afn pretty(Json j) -> str {\0A w := Writer()\0A write(j, \22 \22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// ---------- reading ----------\0A\0Astruct Reader {\0A str src\0A int i\0A}\0A\0A// the line and column of a position, for a message\0Afn where(ptr[Reader] r) -> str {\0A line := 1\0A col := 1\0A for k in 0..r.i {\0A if k < r.src.len && r.src[k] == '\5Cn' {\0A line += 1\0A col = 1\0A } else {\0A col += 1\0A }\0A }\0A return \22line \22 + str(line) + \22, column \22 + str(col)\0A}\0A\0Afn peek(ptr[Reader] r) -> char {\0A if r.i < r.src.len {\0A return r.src[r.i]\0A }\0A return char(0)\0A}\0A\0Afn skip_space(ptr[Reader] r) {\0A while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\5Cn' || r.src[r.i] == '\5Ct' || r.src[r.i] == '\5Cr') {\0A r.i += 1\0A }\0A}\0A\0Afn unexpected(ptr[Reader] r, str wanted) -> str {\0A if r.i >= r.src.len {\0A return \22json: the text ends where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A }\0A return \22json: found '\22 + str(r.src[r.i]) + \22' where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A}\0A\0A// does `word` come next?\0Afn comes(ptr[Reader] r, str word) -> bool {\0A return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word\0A}\0A\0Afn expect_word(ptr[Reader] r, str word) -> ! {\0A if !comes(r, word) {\0A return error(unexpected(r, \22'\22 + word + \22'\22))\0A }\0A r.i += word.len\0A}\0A\0Afn hex_value(char c) -> int {\0A if c >= '0' && c <= '9' {\0A return int(c) - int('0')\0A }\0A if c >= 'a' && c <= 'f' {\0A return int(c) - int('a') + 10\0A }\0A if c >= 'A' && c <= 'F' {\0A return int(c) - int('A') + 10\0A }\0A return -1\0A}\0A\0A// a code point as UTF-8\0Afn utf8(int cp) -> str {\0A []u8 b\0A if cp < 128 {\0A b.push(u8(cp))\0A } else if cp < 2048 {\0A b.push(u8(192 + cp / 64))\0A b.push(u8(128 + cp % 64))\0A } else if cp < 65536 {\0A b.push(u8(224 + cp / 4096))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A } else {\0A b.push(u8(240 + cp / 262144))\0A b.push(u8(128 + (cp / 4096) % 64))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A }\0A return str(b)\0A}\0A\0Afn read_hex4(ptr[Reader] r) -> int! {\0A n := 0\0A for k in 0..4 {\0A if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 {\0A return error(unexpected(r, \22a hexadecimal digit\22))\0A }\0A n = n * 16 + hex_value(r.src[r.i])\0A r.i += 1\0A }\0A return n\0A}\0A\0Afn read_string(ptr[Reader] r) -> str! {\0A r.i += 1 // the opening quote\0A []str parts\0A start := r.i\0A while true {\0A if r.i >= r.src.len {\0A return error(\22json: a text is never closed (\22 + where(r) + \22)\22)\0A }\0A c := r.src[r.i]\0A if c == '\22' {\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A return parts.join(\22\22)\0A }\0A if int(c) < 32 {\0A return error(\22json: a line break or control character inside a text (\22 + where(r) + \22)\22)\0A }\0A if c != '\5C\5C' {\0A r.i += 1\0A continue\0A }\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A e := peek(r)\0A r.i += 1\0A if e == 'n' {\0A parts.push(\22\5Cn\22)\0A } else if e == 't' {\0A parts.push(\22\5Ct\22)\0A } else if e == 'r' {\0A parts.push(\22\5Cr\22)\0A } else if e == 'b' {\0A parts.push(utf8(8))\0A } else if e == 'f' {\0A parts.push(utf8(12))\0A } else if e == '\22' || e == '\5C\5C' || e == '/' {\0A parts.push(str(e))\0A } else if e == 'u' {\0A cp := try read_hex4(r)\0A // a pair of \F0\9F\98\80 stands for one character above U+FFFF\0A if cp >= 55296 && cp < 56320 && comes(r, \22\5C\5Cu\22) {\0A r.i += 2\0A low := try read_hex4(r)\0A cp = 65536 + (cp - 55296) * 1024 + (low - 56320)\0A }\0A parts.push(utf8(cp))\0A } else {\0A return error(\22json: unknown escape \5C\5C\22 + str(e) + \22 in a text (\22 + where(r) + \22)\22)\0A }\0A start = r.i\0A }\0A}\0A\0Afn read_number(ptr[Reader] r) -> Json! {\0A start := r.i\0A if peek(r) == '-' {\0A r.i += 1\0A }\0A while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') {\0A r.i += 1\0A }\0A n := float(r.src.sub(start, r.i)) or {\0A r.i = start\0A return error(unexpected(r, \22a number\22))\0A }\0A return new_number(n)\0A}\0A\0Afn read_value(ptr[Reader] r) -> Json! {\0A skip_space(r)\0A c := peek(r)\0A if r.i >= r.src.len {\0A return error(unexpected(r, \22a value\22))\0A }\0A if c == '{' {\0A obj := new_object()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A while true {\0A skip_space(r)\0A if peek(r) != '\22' {\0A return error(unexpected(r, \22a key in quotes\22))\0A }\0A key := try read_string(r)\0A skip_space(r)\0A if peek(r) != ':' {\0A return error(unexpected(r, \22':'\22))\0A }\0A r.i += 1\0A v := try read_value(r)\0A obj.set(key, v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A return error(unexpected(r, \22',' or '}'\22))\0A }\0A }\0A if c == '[' {\0A list := new_list()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A while true {\0A v := try read_value(r)\0A list.push(v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A return error(unexpected(r, \22',' or ']'\22))\0A }\0A }\0A if c == '\22' {\0A s := try read_string(r)\0A return new_text(s)\0A }\0A if c == 't' {\0A try expect_word(r, \22true\22)\0A return new_bool(true)\0A }\0A if c == 'f' {\0A try expect_word(r, \22false\22)\0A return new_bool(false)\0A }\0A if c == 'n' {\0A try expect_word(r, \22null\22)\0A return new_null()\0A }\0A if c == '-' || (c >= '0' && c <= '9') {\0A return try read_number(r)\0A }\0A return error(unexpected(r, \22a value\22))\0A}\0A\0A// the JSON in `text`; an error with the line and column where it went wrong\0Afn parse(str text) -> Json! {\0A r := Reader(src: text)\0A v := try read_value(addr(r))\0A skip_space(addr(r))\0A if r.i < r.src.len {\0A return error(unexpected(addr(r), \22the end of the text\22))\0A }\0A return v\0A}\0A\00" -@.str.7554 = private unnamed_addr constant [2847 x i8] c"// Paths, as text. Elements are separated by \22/\22.\0A//\0A// import path\0A// path.join(\22a\22, \22b.txt\22) a/b.txt\0A// path.base(\22/tmp/x/a.tar.gz\22) a.tar.gz path.stem(...) a.tar path.ext(...) .gz\0A// path.dir(\22/tmp/x/a.txt\22) /tmp/x\0A// path.clean(\22a//b/../c/./d\22) a/c/d\0A\0A// a and b with one separator between; an absolute b replaces a\0Afn join(str a, str b) -> str {\0A if a.len == 0 {\0A return b\0A }\0A if b.len == 0 {\0A return a\0A }\0A if b[0] == '/' {\0A return b\0A }\0A if a[a.len - 1] == '/' {\0A return a + b\0A }\0A return a + \22/\22 + b\0A}\0A\0Afn is_abs(str p) -> bool {\0A return p.len > 0 && p[0] == '/'\0A}\0A\0A// the last element: \22a/b.txt\22 -> \22b.txt\22, \22a/b/\22 -> \22b\22, \22\22 -> \22.\22, \22/\22 -> \22/\22\0Afn base(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A if end == 1 && p[0] == '/' {\0A return \22/\22\0A }\0A start := end\0A while start > 0 && p[start - 1] != '/' {\0A start -= 1\0A }\0A return p.sub(start, end)\0A}\0A\0A// everything before the last element: \22a/b.txt\22 -> \22a\22, \22b.txt\22 -> \22.\22, \22/b\22 -> \22/\22\0Afn dir(str p) -> str {\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A i := end\0A while i > 0 && p[i - 1] != '/' {\0A i -= 1\0A }\0A if i == 0 {\0A return \22.\22\0A }\0A while i > 1 && p[i - 1] == '/' {\0A i -= 1\0A }\0A return p.sub(0, i)\0A}\0A\0A// the part of the last element from its last dot: \22a.tar.gz\22 -> \22.gz\22; \22\22 when there is none\0Afn ext(str p) -> str {\0A b := base(p)\0A i := b.len\0A while i > 0 && b[i - 1] != '.' {\0A i -= 1\0A }\0A if i <= 1 { // no dot, or a name that only starts with one (.bashrc)\0A return \22\22\0A }\0A return b.sub(i - 1, b.len)\0A}\0A\0A// the last element without its extension\0Afn stem(str p) -> str {\0A b := base(p)\0A e := ext(p)\0A return b.sub(0, b.len - e.len)\0A}\0A\0A// the elements of a path: \22/a/b/c\22 -> [\22a\22, \22b\22, \22c\22]\0Afn parts(str p) -> []str {\0A []str out\0A for piece in p.split(\22/\22) {\0A if piece.len > 0 {\0A out.push(piece)\0A }\0A }\0A return out\0A}\0A\0A// the shortest path with the same meaning: no \22//\22, no \22.\22, and \22..\22 resolved where it can be\0Afn clean(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A abs := is_abs(p)\0A []str out\0A for piece in parts(p) {\0A if piece == \22.\22 {\0A continue\0A }\0A if piece == \22..\22 {\0A if out.len > 0 && out[out.len - 1] != \22..\22 {\0A out.pop()\0A } else if !abs {\0A out.push(\22..\22)\0A }\0A continue\0A }\0A out.push(piece)\0A }\0A joined := out.join(\22/\22)\0A if abs {\0A return \22/\22 + joined\0A }\0A if joined.len == 0 {\0A return \22.\22\0A }\0A return joined\0A}\0A\00" -@.str.7555 = private unnamed_addr constant [1407 x i8] c"// Programs: run a command, read what it printed, look at the environment.\0A//\0A// import proc\0A// code := proc.run(\22make\22) the exit code; what the command prints goes to the screen\0A// text := try proc.output(\22git describe\22) what the command printed; an error if it failed\0A// proc.env(\22HOME\22, \22/\22) an environment variable, or the second value if it is not set\0Aimport \22stdlib.h\22\0Aimport \22unistd.h\22\0Aimport \22time.h\22\0A\0A// run a command; its output goes to the screen. Gives its exit code.\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0A// run a command and give what it printed. Fails, with its output as the message, if it exits with an error.\0Afn output(str command) -> str! {\0A tmp := \22/tmp/finch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(\22(\22 + command + \22) > '\22 + tmp + \22' 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0A// the folder the program is running in\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7556 = private unnamed_addr constant [996 x i8] c"// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS).\0Aimport \22stdlib.h\22\0Aimport \22process.h\22\0Aimport \22direct.h\22\0Aimport \22time.h\22\0A\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0Afn output(str command) -> str! {\0A tmp := proc_env(\22TEMP\22, \22.\22) + \22\5C\5Cfinch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(command + \22 > \5C\22\22 + tmp + \22\5C\22 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn proc_env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn env(str name, str fallback) -> str {\0A return proc_env(name, fallback)\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7557 = private unnamed_addr constant [2540 x i8] c"// Time: the clock, sleeping, and dates.\0A//\0A// import time\0A// start := time.millis() milliseconds from a clock that only goes forward (to measure with)\0A// time.sleep(250) wait a quarter of a second\0A// time.now() seconds since 1970-01-01 00:00 UTC\0A// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second\0A// time.format(time.now(), \22%Y-%m-%d %H:%M\22) as text, in the computer's time zone\0Aimport \22time.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0A// seconds since 1970-01-01 00:00 UTC\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward: for measuring how long something took\0Afn millis() -> int {\0A timespec ts\0A clock_gettime(CLOCK_MONOTONIC, addr(ts))\0A return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000\0A}\0A\0Afn sleep(int ms) {\0A timespec ts\0A ts.tv_sec = ms / 1000\0A ts.tv_nsec = (ms % 1000) * 1000000\0A nanosleep(addr(ts), null)\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0A// the date and time of a moment, in UTC\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A gmtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// the date and time of a moment, in the computer's time zone\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second\0A// (the rest of C's strftime works too: %A weekday name, %B month name, ...)\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0A// the number of days in a month (month is 1 to 12)\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7558 = private unnamed_addr constant [1793 x i8] c"// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS).\0Aimport \22time.h\22\0Aimport \22finch_win.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms)\0Afn millis() -> int {\0A i64 count = 0\0A i64 freq = 1\0A QueryPerformanceFrequency(addr(freq))\0A QueryPerformanceCounter(addr(count))\0A return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq)\0A}\0A\0Afn sleep(int ms) {\0A Sleep(u32(ms))\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _gmtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7559 = private unnamed_addr constant [366 x i8] c"/* The Windows functions std/time_windows.fch needs. Declared here, not by including :\0A libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */\0Aunsigned long long GetTickCount64(void);\0Avoid Sleep(unsigned long milliseconds);\0Aint QueryPerformanceCounter(long long *count);\0Aint QueryPerformanceFrequency(long long *frequency);\0A\00" - -declare void @finch_panic(ptr, i64, ptr) noreturn cold -declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold -declare ptr @finch_alloc(i64) -declare void @finch_str_copy(ptr, ptr) -declare void @finch_str_drop(ptr) -declare void @finch_arr_free(ptr) -declare void @finch_map_free(ptr) -declare void @finch_str_own(ptr) -declare void @finch_str_concat(ptr, ptr, ptr) -declare i32 @finch_str_eq(ptr, ptr) -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 22, 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 28) - %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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca i64, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - 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 - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = add i64 %t7, 1 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t11 = load i64, ptr %t10 - call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t9, i64 %t11, ptr @.str.4, i64 32) - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - %t14 = load { ptr, i64, i64 }, ptr %a1 - %t15 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %logic.from13 -logic.from13: - br i1 %t19, label %logic.rhs14, label %logic.end15 -logic.rhs14: - %t21 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_starts(ptr %a22, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - %t27 = xor i1 %t26, true - br label %logic.rend16 -logic.rend16: - br label %logic.end15 -logic.end15: - %t28 = phi i1 [ false, %logic.from13 ], [ %t27, %logic.rend16 ] - br i1 %t28, label %then17, label %endif19 -then17: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - %t33 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t32, ptr %a13 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif19 -endif19: - %t35 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a40 - %t41 = load i64, ptr %a40 - %t42 = icmp sgt i64 %t41, 0 - br i1 %t42, label %then20, label %endif22 -then20: - %t43 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t43, ptr %a44 - %t46 = load i64, ptr %a40 - call void @finch_str_sub(ptr %a45, ptr %a44, i64 0, i64 %t46, ptr @.str.10, i64 38) - %t47 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a13) - ret { ptr, i64, i64 } %t47 -endif22: - %t48 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t48 -} - -define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { -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 55, 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 57, 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 57, i64 %t28, i64 %t30) - unreachable -inrange36: - %t32 = extractvalue { ptr, i64, i64 } %t29, 0 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 %t28 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 57) - %t37 = load { ptr, i64, i64 }, ptr %a36 - ret { ptr, i64, i64 } %t37 -endif32: - %t38 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 59) - %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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %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 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = 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 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - %t11 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t10, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t10, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.19, i64 4, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a22 - %t23 = load { ptr, i64, i64 }, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.20, i64 1, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.21, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic37, label %ok38 -panic37: - call void @finch_panic(ptr @.str.22, i64 67, ptr @.str.23) - unreachable -ok38: - %t43 = getelementptr inbounds %S.main.Loader, ptr %t41, i32 0, i32 3 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t40, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t40, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.24, i64 4, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = call i32 @finch_file_exists(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = icmp ne i32 %t56, 0 - br i1 %t58, label %then39, label %endif41 -then39: - %t59 = load { ptr, i64, i64 }, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.25, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t65, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load ptr, ptr %a1 - %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic42, label %ok43 -panic42: - call void @finch_panic(ptr @.str.27, i64 68, ptr @.str.28) - unreachable -ok43: - %t79 = getelementptr inbounds %S.main.Loader, ptr %t77, i32 0, i32 3 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t76, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t76, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t90 -endif41: - %t91 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - br i1 %t94, label %then44, label %endif46 -then44: - %t95 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t95 -endif46: - %t96 = load ptr, ptr %a1 - %t97 = icmp eq ptr %t96, null - br i1 %t97, label %panic47, label %ok48 -panic47: - call void @finch_panic(ptr @.str.30, i64 73, ptr @.str.31) - unreachable -ok48: - %t98 = getelementptr inbounds %S.main.Loader, ptr %t96, i32 0, i32 5 - store i64 0, ptr %a99 - br label %each.cond49 -each.cond49: - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = load i64, ptr %a99 - %t103 = icmp slt i64 %t102, %t101 - br i1 %t103, label %each.body50, label %each.end52 -each.body50: - %t104 = load ptr, ptr %t98 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.32, i64 1, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a109 - %t113 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t112, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t112, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.33, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic53, label %ok54 -panic53: - call void @finch_panic(ptr @.str.34, i64 74, ptr @.str.35) - unreachable -ok54: - %t126 = getelementptr inbounds %S.main.Loader, ptr %t124, i32 0, i32 3 - %t127 = load { ptr, i64, i64 }, ptr %t126 - store { ptr, i64, i64 } %t123, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t123, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a138 - %t139 = call i32 @finch_file_exists(ptr %a138) - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = icmp ne i32 %t139, 0 - br i1 %t141, label %then55, label %endif57 -then55: - %t142 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - %t147 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t146, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.38, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic58, label %ok59 -panic58: - call void @finch_panic(ptr @.str.39, i64 75, ptr @.str.40) - unreachable -ok59: - %t160 = getelementptr inbounds %S.main.Loader, ptr %t158, i32 0, i32 3 - %t161 = load { ptr, i64, i64 }, ptr %t160 - store { ptr, i64, i64 } %t157, ptr %a163 - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t157, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.41, i64 4, i64 0 }, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t171 -endif57: - %t172 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t172, ptr %a174 - store { ptr, i64, i64 } { ptr @.str.42, i64 1, i64 0 }, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - %t177 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t176, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.43, i64 4, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t187, ptr %a188 - %t189 = call i32 @finch_file_exists(ptr %a188) - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = icmp ne i32 %t189, 0 - br i1 %t191, label %then60, label %endif62 -then60: - %t192 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.44, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - %t196 = load { ptr, i64, i64 }, ptr %a193 - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t196, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t196, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.45, i64 4, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t207 -endif62: - br label %each.step51 -each.step51: - %t208 = load i64, ptr %a99 - %t209 = add i64 %t208, 1 - store i64 %t209, ptr %a99 - br label %each.cond49 -each.end52: - %t210 = load ptr, ptr %a1 - %t211 = icmp eq ptr %t210, null - br i1 %t211, label %panic63, label %ok64 -panic63: - call void @finch_panic(ptr @.str.46, i64 81, ptr @.str.47) - unreachable -ok64: - %t212 = getelementptr inbounds %S.main.Loader, ptr %t210, i32 0, i32 4 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t214 = load i64, ptr %t213 - %t215 = icmp sgt i64 %t214, 0 - br i1 %t215, label %then65, label %endif67 -then65: - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic68, label %ok69 -panic68: - call void @finch_panic(ptr @.str.48, i64 82, ptr @.str.49) - unreachable -ok69: - %t218 = getelementptr inbounds %S.main.Loader, ptr %t216, i32 0, i32 4 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t223, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t223, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - store { ptr, i64, i64 } %t229, ptr %a231 - store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t229, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic70, label %ok71 -panic70: - call void @finch_panic(ptr @.str.52, i64 82, ptr @.str.53) - unreachable -ok71: - %t237 = getelementptr inbounds %S.main.Loader, ptr %t235, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - store { ptr, i64, i64 } %t234, ptr %a240 - store { ptr, i64, i64 } %t238, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t234, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a249 - %t250 = call i32 @finch_file_exists(ptr %a249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - %t252 = icmp ne i32 %t250, 0 - br i1 %t252, label %then72, label %endif74 -then72: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic75, label %ok76 -panic75: - call void @finch_panic(ptr @.str.55, i64 83, ptr @.str.56) - unreachable -ok76: - %t255 = getelementptr inbounds %S.main.Loader, ptr %t253, i32 0, i32 4 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.57, i64 1, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - %t260 = load { ptr, i64, i64 }, ptr %a257 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t260, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.58, i64 1, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic77, label %ok78 -panic77: - call void @finch_panic(ptr @.str.59, i64 83, ptr @.str.60) - unreachable -ok78: - %t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } %t271, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t271, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.61, i64 4, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t285 -endif74: - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic79, label %ok80 -panic79: - call void @finch_panic(ptr @.str.62, i64 85, ptr @.str.63) - unreachable -ok80: - %t288 = getelementptr inbounds %S.main.Loader, ptr %t286, i32 0, i32 4 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.64, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a290 - %t294 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t293, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.65, i64 4, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t304, ptr %a305 - %t306 = call i32 @finch_file_exists(ptr %a305) - store { ptr, i64, i64 } %t304, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = icmp ne i32 %t306, 0 - br i1 %t308, label %then81, label %endif83 -then81: - %t309 = load ptr, ptr %a1 - %t310 = icmp eq ptr %t309, null - br i1 %t310, label %panic84, label %ok85 -panic84: - call void @finch_panic(ptr @.str.66, i64 86, ptr @.str.67) - unreachable -ok85: - %t311 = getelementptr inbounds %S.main.Loader, ptr %t309, i32 0, i32 4 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.68, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t316, ptr %a319 - store { ptr, i64, i64 } %t317, ptr %a320 - call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) - store { ptr, i64, i64 } %t316, ptr %a321 - call void @finch_str_drop(ptr %a321) - %t322 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.69, i64 4, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - store { ptr, i64, i64 } %t322, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t327 -endif83: - br label %endif67 -endif67: - %t328 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t328 -} - -define internal void @finch.drop.S_lexer_Token(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_lexer_Token(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond107 -n.cond107: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body108, label %n.end109 -n.body108: - %t7 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t5 - call void @finch.drop.S_lexer_Token(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond107 -n.end109: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.copy.arr_str(ptr %dst, ptr %src) { -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.cond110 -n.cond110: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body111, label %n.end112 -n.body111: - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 %t6 - call void @finch_str_copy(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond110 -n.end112: - 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.cond118 -n.cond118: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body119, label %n.end120 -n.body119: - %t8 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds %S.ast.Type, ptr %t2, i64 %t6 - call void @finch.copy.S_ast_Type(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond118 -n.end120: - 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.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.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.cond115 -n.end117: - 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.drop.arr_str(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond137 -n.cond137: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body138, label %n.end139 -n.body138: - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t5 - call void @finch_str_drop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond137 -n.end139: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Type(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond143 -n.cond143: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body144, label %n.end145 -n.body144: - %t7 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Type(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond143 -n.end145: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Type(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.S_ast_Node(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 5 - call void @finch.drop.S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 9 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.arr_S_ast_Node(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond140 -n.cond140: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body141, label %n.end142 -n.body141: - %t7 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Node(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond140 -n.end142: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Program(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Node(ptr %t8) - %t9 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_S_ast_Node(ptr %t9) - ret void -} - -define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Program, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.ast.Program, align 16 - %a139 = alloca %S.ast.Program, align 16 - %a145 = alloca i64, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca i64, align 16 - %a162 = alloca i64, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 93, 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) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t43, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = extractvalue { ptr, i64, i64 } %t54, 1 - %t56 = trunc i64 %t55 to i32 - %t57 = extractvalue { ptr, i64, i64 } %t54, 0 - %t58 = icmp eq ptr %t57, null - %t59 = select i1 %t58, ptr @.str.75, ptr %t57 - %t60 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t56, ptr %t59) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = call i32 (ptr, ...) @printf(ptr @.str.77) - br label %endif102 -else101: - %t63 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.78, i64 19, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = extractvalue { ptr, i64, i64 } %t72, 1 - %t74 = trunc i64 %t73 to i32 - %t75 = extractvalue { ptr, i64, i64 } %t72, 0 - %t76 = icmp eq ptr %t75, null - %t77 = select i1 %t76, ptr @.str.80, ptr %t75 - %t78 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t74, ptr %t77) - store { ptr, i64, i64 } %t72, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = call i32 (ptr, ...) @printf(ptr @.str.82) - br label %endif102 -endif102: - %t81 = trunc i64 1 to i32 - %t82 = call i32 @fflush(ptr null) - call void @exit(i32 %t81) - br label %endif99 -endif99: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a2 - %t85 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t83, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic103, label %ok104 -panic103: - call void @finch_panic(ptr @.str.83, i64 102, ptr @.str.84) - unreachable -ok104: - %t89 = getelementptr inbounds %S.main.Loader, ptr %t87, i32 0, i32 1 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 %t91, ptr %a92 - %t93 = load ptr, ptr %a1 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic105, label %ok106 -panic105: - call void @finch_panic(ptr @.str.85, i64 103, ptr @.str.86) - unreachable -ok106: - %t95 = getelementptr inbounds %S.main.Loader, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 - store { ptr, i64, i64 } %t100, ptr %t104 - store i64 %t102, ptr %t96 - %t105 = load { ptr, i64, i64 }, ptr %a86 - %t106 = load { ptr, i64, i64 }, ptr %a2 - %t107 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t105, { ptr, i64, i64 } %t106) - %t108 = load i64, ptr %a92 - %t109 = load { ptr, i64, i64 }, ptr %a2 - %t110 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t107, i64 %t108, { ptr, i64, i64 } %t109) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch.drop.arr_S_lexer_Token(ptr %a111) - store %S.ast.Program %t110, ptr %a112 - %t113 = load { ptr, i64, i64 }, ptr %a3 - %t114 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 0 - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t117, ptr %t114 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a2 - %t121 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 1 - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t124, ptr %t121 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.copy.arr_str(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t131, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic113, label %ok114 -panic113: - call void @finch_panic(ptr @.str.87, i64 108, ptr @.str.88) - unreachable -ok114: - %t135 = getelementptr inbounds %S.main.Loader, ptr %t133, i32 0, i32 0 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load %S.ast.Program, ptr %a112 - store %S.ast.Program %t137, ptr %a138 - call void @finch.copy.S_ast_Program(ptr %a139, ptr %a138) - %t140 = load %S.ast.Program, ptr %a139 - %t141 = load i64, ptr %t136 - %t142 = add i64 %t141, 1 - call void @finch_arr_reserve(ptr %t135, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) - %t143 = load ptr, ptr %t135 - %t144 = getelementptr inbounds %S.ast.Program, ptr %t143, i64 %t141 - store %S.ast.Program %t140, ptr %t144 - store i64 %t142, ptr %t136 - store i64 0, ptr %a145 - br label %each.cond121 -each.cond121: - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = load i64, ptr %a145 - %t149 = icmp slt i64 %t148, %t147 - br i1 %t149, label %each.body122, label %each.end124 -each.body122: - %t150 = load ptr, ptr %a132 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic125, label %ok126 -panic125: - call void @finch_panic(ptr @.str.89, i64 110, ptr @.str.90) - unreachable -ok126: - %t156 = getelementptr inbounds %S.main.Loader, ptr %t154, i32 0, i32 2 - %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 - %t158 = load { ptr, i64, i64 }, ptr %a153 - store i64 -1, ptr %a159 - %t160 = load i64, ptr %t157 - %t161 = load ptr, ptr %t156 - store i64 0, ptr %a162 - br label %find.cond127 -find.cond127: - %t163 = load i64, ptr %a162 - %t164 = icmp slt i64 %t163, %t160 - br i1 %t164, label %find.body128, label %find.end131 -find.body128: - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t163 - %t166 = load { ptr, i64, i64 }, ptr %t165 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } %t158, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br i1 %t170, label %find.hit129, label %find.next130 -find.hit129: - store i64 %t163, ptr %a159 - br label %find.end131 -find.next130: - %t171 = add i64 %t163, 1 - store i64 %t171, ptr %a162 - br label %find.cond127 -find.end131: - %t172 = load i64, ptr %a159 - %t173 = icmp sge i64 %t172, 0 - %t174 = xor i1 %t173, true - br i1 %t174, label %then132, label %endif134 -then132: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic135, label %ok136 -panic135: - call void @finch_panic(ptr @.str.91, i64 111, ptr @.str.92) - unreachable -ok136: - %t177 = getelementptr inbounds %S.main.Loader, ptr %t175, i32 0, i32 2 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_copy(ptr %a181, ptr %a180) - %t182 = load { ptr, i64, i64 }, ptr %a181 - %t183 = load i64, ptr %t178 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t177, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t177 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 - store { ptr, i64, i64 } %t182, ptr %t186 - store i64 %t184, ptr %t178 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a2 - %t190 = load { ptr, i64, i64 }, ptr %a153 - %t191 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) - %t192 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.main.load(ptr %t187, { ptr, i64, i64 } %t191, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - br label %endif134 -endif134: - br label %each.step123 -each.step123: - %t194 = load i64, ptr %a145 - %t195 = add i64 %t194, 1 - store i64 %t195, ptr %a145 - br label %each.cond121 -each.end124: - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_ast_Program(ptr %a112) - call void @finch_str_drop(ptr %a86) - ret void -} - -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 { ptr, i64, i64 } @finch.main.unpack() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca i64, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.embedded.names() - store { ptr, i64, i64 } %t1, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.145, i64 7, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.146, i64 1, i64 0 }, ptr %a12 - call void @finch_str_join(ptr %a13, ptr %a10, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.drop.arr_str(ptr %a10) - %t15 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t14, ptr %a16 - call void @finch_str_drop(ptr %a16) - store { ptr, i64, i64 } %t8, ptr %a18 - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t8, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t15, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a29 - %t30 = call i32 @finch_file_exists(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = icmp ne i32 %t30, 0 - br i1 %t32, label %then146, label %endif148 -then146: - %t33 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t33 -endif148: - %t34 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t34, ptr %a35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t37 = load i64, ptr %t36 - store i64 0, ptr %a38 - br label %for.cond149 -for.cond149: - %t39 = load i64, ptr %a38 - %t40 = icmp slt i64 %t39, %t37 - br i1 %t40, label %for.body150, label %for.end152 -for.body150: - %t41 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.148, i64 1, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a38 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = icmp uge i64 %t46, %t48 - br i1 %t49, label %range153, label %inrange154 -range153: - call void @finch_panic_index(ptr @.str.149, i64 144, i64 %t46, i64 %t48) - unreachable -inrange154: - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t46 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t45, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t45, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - %t58 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t57) - store { ptr, i64, i64 } %t57, ptr %a59 - call void @finch_str_drop(ptr %a59) - call void @finch.host.makeDirs({ ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.150, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = load i64, ptr %a38 - %t67 = load { ptr, i64, i64 }, ptr %a2 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range155, label %inrange156 -range155: - call void @finch_panic_index(ptr @.str.151, i64 145, i64 %t66, i64 %t68) - unreachable -inrange156: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t66 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t65, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t65, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load i64, ptr %a38 - %t79 = load { ptr, i64, i64 }, ptr %a35 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range157, label %inrange158 -range157: - call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t78, i64 %t80) - unreachable -inrange158: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i64 %t78 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t77, ptr %a85 - store { ptr, i64, i64 } %t84, ptr %a86 - %t87 = call i32 @finch_write_file(ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t77, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = icmp ne i32 %t87, 0 - br label %for.step151 -for.step151: - %t90 = load i64, ptr %a38 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a38 - br label %for.cond149 -for.end152: - %t92 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.153, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.154, i64 0, i64 0 }, ptr %a98 - %t99 = call i32 @finch_write_file(ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = icmp ne i32 %t99, 0 - %t102 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a35) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t102 -} - -define internal void @finch.drop.S_cimport_Header(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_Header(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond403 -n.cond403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body404, label %n.end405 -n.body404: - %t7 = getelementptr inbounds %S.cimport.Header, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_Header(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond403 -n.end405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Program(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond406 -n.cond406: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body407, label %n.end408 -n.body407: - %t7 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Program(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond406 -n.end408: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_main_Loader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t7) - %t8 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.S_platform_Target(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 6 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) { -entry: - - %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 void @finch.drop.S_gen_Options(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 4 - call void @finch.drop.S_platform_Target(ptr %t2) - ret void -} - -define internal void @finch.drop.S_cimport_CFunc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_ast_Type(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CFunc(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond416 -n.cond416: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body417, label %n.end418 -n.body417: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live419, label %entry.next420 -entry.live419: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CFunc(ptr %t13) - br label %entry.next420 -entry.next420: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond416 -n.end418: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CConst(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CConst, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CConst(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond421 -n.cond421: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body422, label %n.end423 -n.body422: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live424, label %entry.next425 -entry.live424: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CConst(ptr %t13) - br label %entry.next425 -entry.next425: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond421 -n.end423: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_S_ast_Type(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond426 -n.cond426: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body427, label %n.end428 -n.body427: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live429, label %entry.next430 -entry.live429: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t13) - br label %entry.next430 -entry.next430: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond426 -n.end428: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CField(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_CField(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond436 -n.cond436: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body437, label %n.end438 -n.body437: - %t7 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_CField(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond436 -n.end438: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CStruct(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_cimport_CField(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CStruct(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond431 -n.cond431: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body432, label %n.end433 -n.body432: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live434, label %entry.next435 -entry.live434: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CStruct(ptr %t13) - br label %entry.next435 -entry.next435: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond431 -n.end433: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CImports(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 0 - call void @finch.drop.map_str_S_cimport_CFunc(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 1 - call void @finch.drop.map_str_S_cimport_CConst(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_cimport_CStruct(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.S_linker_Build(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.platform.Target, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = 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 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca %S.main.Loader, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca i64, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca i64, align 16 - %a653 = alloca %S.ast.Program, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a663 = alloca i64, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca i64, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca %S.cimport.CImports, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a866 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca %S.platform.Target, align 16 - %a876 = alloca %S.platform.Target, align 16 - %a880 = alloca %S.gen.Options, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a921 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca { ptr, i64, i64 }, align 16 - %a923 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a927 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a978 = 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 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a993 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca %S.linker.Build, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca i64, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1081 = 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 - %a1085 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca i64, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = icmp eq i64 %t3, 2 - br label %logic.from159 -logic.from159: - br i1 %t4, label %logic.rhs160, label %logic.end161 -logic.rhs160: - %t5 = load { ptr, i64, i64 }, ptr %a1 - %t6 = extractvalue { ptr, i64, i64 } %t5, 1 - %t7 = icmp uge i64 1, %t6 - br i1 %t7, label %range162, label %inrange163 -range162: - call void @finch_panic_index(ptr @.str.155, i64 152, i64 1, i64 %t6) - unreachable -inrange163: - %t8 = extractvalue { ptr, i64, i64 } %t5, 0 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 1 - %t10 = load { ptr, i64, i64 }, ptr %t9 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.156, i64 7, i64 0 }, ptr %a12 - %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) - %t14 = icmp ne i32 %t13, 0 - br label %logic.from164 -logic.from164: - br i1 %t14, label %logic.end166, label %logic.rhs165 -logic.rhs165: - %t15 = load { ptr, i64, i64 }, ptr %a1 - %t16 = extractvalue { ptr, i64, i64 } %t15, 1 - %t17 = icmp uge i64 1, %t16 - br i1 %t17, label %range167, label %inrange168 -range167: - call void @finch_panic_index(ptr @.str.157, i64 152, i64 1, i64 %t16) - unreachable -inrange168: - %t18 = extractvalue { ptr, i64, i64 } %t15, 0 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.158, i64 9, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br label %logic.rend169 -logic.rend169: - br label %logic.end166 -logic.end166: - %t25 = phi i1 [ true, %logic.from164 ], [ %t24, %logic.rend169 ] - br label %logic.rend170 -logic.rend170: - br label %logic.end161 -logic.end161: - %t26 = phi i1 [ false, %logic.from159 ], [ %t25, %logic.rend170 ] - br i1 %t26, label %then171, label %endif173 -then171: - %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 1 - %t28 = trunc i64 %t27 to i32 - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 0 - %t30 = icmp eq ptr %t29, null - %t31 = select i1 %t30, ptr @.str.160, ptr %t29 - %t32 = call i32 (ptr, ...) @printf(ptr @.str.161, i32 %t28, ptr %t31) - %t33 = call i32 (ptr, ...) @printf(ptr @.str.162) - ret i64 0 -endif173: - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t35 = load i64, ptr %t34 - %t36 = icmp eq i64 %t35, 2 - br label %logic.from174 -logic.from174: - br i1 %t36, label %logic.rhs175, label %logic.end176 -logic.rhs175: - %t37 = load { ptr, i64, i64 }, ptr %a1 - %t38 = extractvalue { ptr, i64, i64 } %t37, 1 - %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range177, label %inrange178 -range177: - call void @finch_panic_index(ptr @.str.163, i64 156, i64 1, i64 %t38) - unreachable -inrange178: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.164, i64 3, i64 0 }, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - br label %logic.rend179 -logic.rend179: - br label %logic.end176 -logic.end176: - %t47 = phi i1 [ false, %logic.from174 ], [ %t46, %logic.rend179 ] - br i1 %t47, label %then180, label %endif182 -then180: - %t48 = load { ptr, i64, i64 }, ptr %a1 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 0, %t49 - br i1 %t50, label %range183, label %inrange184 -range183: - call void @finch_panic_index(ptr @.str.165, i64 157, i64 0, i64 %t49) - unreachable -inrange184: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = call i64 @finch.lsp.run({ ptr, i64, i64 } %t53) - ret i64 %t54 -endif182: - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t56 = load i64, ptr %t55 - %t57 = icmp slt i64 %t56, 3 - br i1 %t57, label %then185, label %endif187 -then185: - call void @finch.main.usage() - br label %endif187 -endif187: - %t58 = load { ptr, i64, i64 }, ptr %a1 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - %t60 = icmp uge i64 1, %t59 - br i1 %t60, label %range188, label %inrange189 -range188: - call void @finch_panic_index(ptr @.str.166, i64 162, i64 1, i64 %t59) - unreachable -inrange189: - %t61 = extractvalue { ptr, i64, i64 } %t58, 0 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - 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 %range190, label %inrange191 -range190: - call void @finch_panic_index(ptr @.str.167, i64 163, i64 2, i64 %t69) - unreachable -inrange191: - %t71 = extractvalue { ptr, i64, i64 } %t68, 0 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - 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.168, i64 5, i64 0 }, ptr %a80 - %t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80) - %t82 = icmp eq i32 %t81, 0 - br label %logic.from192 -logic.from192: - br i1 %t82, label %logic.rhs193, label %logic.end194 -logic.rhs193: - %t83 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t83, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.169, i64 3, i64 0 }, ptr %a85 - %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) - %t87 = icmp eq i32 %t86, 0 - br label %logic.rend195 -logic.rend195: - br label %logic.end194 -logic.end194: - %t88 = phi i1 [ false, %logic.from192 ], [ %t87, %logic.rend195 ] - br label %logic.from196 -logic.from196: - br i1 %t88, label %logic.rhs197, label %logic.end198 -logic.rhs197: - %t89 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.170, i64 2, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp eq i32 %t92, 0 - br label %logic.rend199 -logic.rend199: - br label %logic.end198 -logic.end198: - %t94 = phi i1 [ false, %logic.from196 ], [ %t93, %logic.rend199 ] - br label %logic.from200 -logic.from200: - br i1 %t94, label %logic.rhs201, label %logic.end202 -logic.rhs201: - %t95 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.171, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp eq i32 %t98, 0 - br label %logic.rend203 -logic.rend203: - br label %logic.end202 -logic.end202: - %t100 = phi i1 [ false, %logic.from200 ], [ %t99, %logic.rend203 ] - br i1 %t100, label %then204, label %endif206 -then204: - call void @finch.main.usage() - br label %endif206 -endif206: - %t101 = load { ptr, i64, i64 }, ptr %a77 - %t102 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t102, ptr %a103 - store i1 false, ptr %a104 - store i1 false, ptr %a105 - store i1 false, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.172, i64 0, i64 0 }, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.173, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } zeroinitializer, ptr %a109 - store { ptr, i64, i64 } zeroinitializer, ptr %a110 - store { ptr, i64, i64 } zeroinitializer, ptr %a111 - store { ptr, i64, i64 } zeroinitializer, ptr %a112 - store { ptr, i64, i64 } zeroinitializer, ptr %a113 - store i64 3, ptr %a114 - br label %while.cond207 -while.cond207: - %t115 = load i64, ptr %a114 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t117 = load i64, ptr %t116 - %t118 = icmp slt i64 %t115, %t117 - br i1 %t118, label %while.body208, label %while.end209 -while.body208: - %t119 = load i64, ptr %a114 - %t120 = load { ptr, i64, i64 }, ptr %a1 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 %t119, %t121 - br i1 %t122, label %range210, label %inrange211 -range210: - call void @finch_panic_index(ptr @.str.174, i64 180, i64 %t119, i64 %t121) - unreachable -inrange211: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 - %t125 = load { ptr, i64, i64 }, ptr %t124 - 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.175, i64 3, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br label %logic.from212 -logic.from212: - br i1 %t134, label %logic.rhs213, label %logic.end214 -logic.rhs213: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = icmp sgt i64 %t136, 0 - br label %logic.rend215 -logic.rend215: - br label %logic.end214 -logic.end214: - %t138 = phi i1 [ false, %logic.from212 ], [ %t137, %logic.rend215 ] - br i1 %t138, label %then216, label %else217 -then216: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t140, ptr %a141 - 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 %endif218 -else217: - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.176, i64 2, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br label %logic.from219 -logic.from219: - br i1 %t152, label %logic.rhs220, label %logic.end221 -logic.rhs220: - %t153 = load i64, ptr %a114 - %t154 = add i64 %t153, 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp slt i64 %t154, %t156 - br label %logic.rend222 -logic.rend222: - br label %logic.end221 -logic.end221: - %t158 = phi i1 [ false, %logic.from219 ], [ %t157, %logic.rend222 ] - br label %logic.from223 -logic.from223: - br i1 %t158, label %logic.rhs224, label %logic.end225 -logic.rhs224: - %t159 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.177, i64 5, i64 0 }, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br label %logic.rend226 -logic.rend226: - br label %logic.end225 -logic.end225: - %t164 = phi i1 [ false, %logic.from223 ], [ %t163, %logic.rend226 ] - br i1 %t164, label %then227, label %else228 -then227: - %t165 = load i64, ptr %a114 - %t166 = add i64 %t165, 1 - %t167 = load { ptr, i64, i64 }, ptr %a1 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range230, label %inrange231 -range230: - call void @finch_panic_index(ptr @.str.178, i64 184, i64 %t166, i64 %t168) - unreachable -inrange231: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i64 %t166 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t175, ptr %a103 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - store i1 true, ptr %a104 - %t178 = load i64, ptr %a114 - %t179 = add i64 %t178, 1 - store i64 %t179, ptr %a114 - br label %endif229 -else228: - %t180 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t180, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.179, i64 8, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - br label %logic.from232 -logic.from232: - br i1 %t184, label %logic.rhs233, label %logic.end234 -logic.rhs233: - %t185 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.180, i64 5, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.rend235 -logic.rend235: - br label %logic.end234 -logic.end234: - %t190 = phi i1 [ false, %logic.from232 ], [ %t189, %logic.rend235 ] - br i1 %t190, label %then236, label %else237 -then236: - store i1 true, ptr %a105 - br label %endif238 -else237: - %t191 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t191, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.181, i64 3, i64 0 }, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br i1 %t195, label %then239, label %else240 -then239: - %t196 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.182, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } %t196, ptr %a197 - call void @finch_str_drop(ptr %a197) - br label %endif241 -else240: - %t198 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.183, i64 2, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from242 -logic.from242: - br i1 %t202, label %logic.rhs243, label %logic.end244 -logic.rhs243: - %t203 = load i64, ptr %a114 - %t204 = add i64 %t203, 1 - %t205 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t206 = load i64, ptr %t205 - %t207 = icmp slt i64 %t204, %t206 - br label %logic.rend245 -logic.rend245: - br label %logic.end244 -logic.end244: - %t208 = phi i1 [ false, %logic.from242 ], [ %t207, %logic.rend245 ] - br i1 %t208, label %then246, label %else247 -then246: - %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t210 = load i64, ptr %a114 - %t211 = add i64 %t210, 1 - %t212 = load { ptr, i64, i64 }, ptr %a1 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range249, label %inrange250 -range249: - call void @finch_panic_index(ptr @.str.184, i64 192, i64 %t211, i64 %t213) - unreachable -inrange250: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t217, ptr %a218 - call void @finch_str_copy(ptr %a219, ptr %a218) - %t220 = load { ptr, i64, i64 }, ptr %a219 - %t221 = load i64, ptr %t209 - %t222 = add i64 %t221, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t222, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t223 = load ptr, ptr %a109 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t221 - store { ptr, i64, i64 } %t220, ptr %t224 - store i64 %t222, ptr %t209 - %t225 = load i64, ptr %a114 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a114 - br label %endif248 -else247: - %t227 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t227, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a230 - %t231 = call i32 @finch_str_starts(ptr %a228, ptr %a230) - %t232 = icmp ne i32 %t231, 0 - br label %logic.from251 -logic.from251: - br i1 %t232, label %logic.rhs252, label %logic.end253 -logic.rhs252: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t234 = load i64, ptr %t233 - %t235 = icmp sgt i64 %t234, 2 - br label %logic.rend254 -logic.rend254: - br label %logic.end253 -logic.end253: - %t236 = phi i1 [ false, %logic.from251 ], [ %t235, %logic.rend254 ] - br i1 %t236, label %then255, label %else256 -then255: - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t238 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t238, ptr %a239 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t242 = load i64, ptr %t241 - call void @finch_str_sub(ptr %a240, ptr %a239, i64 2, i64 %t242, ptr @.str.187, i64 195) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load i64, ptr %t237 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %a109 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } %t243, ptr %t247 - store i64 %t245, ptr %t237 - br label %endif257 -else256: - %t248 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.188, i64 2, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br label %logic.from258 -logic.from258: - br i1 %t252, label %logic.rhs259, label %logic.end260 -logic.rhs259: - %t253 = load i64, ptr %a114 - %t254 = add i64 %t253, 1 - %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = icmp slt i64 %t254, %t256 - br label %logic.rend261 -logic.rend261: - br label %logic.end260 -logic.end260: - %t258 = phi i1 [ false, %logic.from258 ], [ %t257, %logic.rend261 ] - br i1 %t258, label %then262, label %else263 -then262: - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %a110, i32 0, i32 1 - %t260 = load i64, ptr %a114 - %t261 = add i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %a1 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range265, label %inrange266 -range265: - call void @finch_panic_index(ptr @.str.189, i64 197, i64 %t261, i64 %t263) - unreachable -inrange266: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 %t261 - %t267 = load { ptr, i64, i64 }, ptr %t266 - store { ptr, i64, i64 } %t267, ptr %a268 - call void @finch_str_copy(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %a110, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %a110 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - %t275 = load i64, ptr %a114 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a114 - br label %endif264 -else263: - %t277 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t277, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.190, i64 9, i64 0 }, ptr %a279 - %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) - %t281 = icmp ne i32 %t280, 0 - br label %logic.from267 -logic.from267: - br i1 %t281, label %logic.rhs268, label %logic.end269 -logic.rhs268: - %t282 = load i64, ptr %a114 - %t283 = add i64 %t282, 1 - %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t285 = load i64, ptr %t284 - %t286 = icmp slt i64 %t283, %t285 - br label %logic.rend270 -logic.rend270: - br label %logic.end269 -logic.end269: - %t287 = phi i1 [ false, %logic.from267 ], [ %t286, %logic.rend270 ] - br i1 %t287, label %then271, label %else272 -then271: - %t288 = load i64, ptr %a114 - %t289 = add i64 %t288, 1 - %t290 = load { ptr, i64, i64 }, ptr %a1 - %t291 = extractvalue { ptr, i64, i64 } %t290, 1 - %t292 = icmp uge i64 %t289, %t291 - br i1 %t292, label %range274, label %inrange275 -range274: - call void @finch_panic_index(ptr @.str.191, i64 200, i64 %t289, i64 %t291) - unreachable -inrange275: - %t293 = extractvalue { ptr, i64, i64 } %t290, 0 - %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } %t295, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.193, i64 1, i64 0 }, ptr %a298 - call void @finch_str_split(ptr %a299, ptr %a296, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t300, ptr %a301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %a301 - %t304 = extractvalue { ptr, i64, i64 } %t303, 1 - %t305 = icmp uge i64 0, %t304 - br i1 %t305, label %range276, label %inrange277 -range276: - call void @finch_panic_index(ptr @.str.194, i64 201, i64 0, i64 %t304) - unreachable -inrange277: - %t306 = extractvalue { ptr, i64, i64 } %t303, 0 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_copy(ptr %a310, ptr %a309) - %t311 = load { ptr, i64, i64 }, ptr %a310 - %t312 = load i64, ptr %t302 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %a111, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %a111 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t302 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %a301 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 1, %t318 - br i1 %t319, label %range278, label %inrange279 -range278: - call void @finch_panic_index(ptr @.str.195, i64 202, i64 1, i64 %t318) - unreachable -inrange279: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i64 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a323 - call void @finch_str_copy(ptr %a324, ptr %a323) - %t325 = load { ptr, i64, i64 }, ptr %a324 - %t326 = load i64, ptr %t316 - %t327 = add i64 %t326, 1 - call void @finch_arr_reserve(ptr %a112, i64 %t327, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t328 = load ptr, ptr %a112 - %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i64 %t326 - store { ptr, i64, i64 } %t325, ptr %t329 - store i64 %t327, ptr %t316 - %t330 = load i64, ptr %a114 - %t331 = add i64 %t330, 1 - store i64 %t331, ptr %a114 - call void @finch.drop.arr_str(ptr %a301) - br label %endif273 -else272: - %t332 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t332, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.196, i64 2, i64 0 }, ptr %a334 - %t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334) - %t336 = icmp ne i32 %t335, 0 - br i1 %t336, label %then280, label %else281 -then280: - store i1 true, ptr %a106 - br label %endif282 -else281: - %t337 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t337, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.197, i64 8, i64 0 }, ptr %a339 - %t340 = call i32 @finch_str_eq(ptr %a338, ptr %a339) - %t341 = icmp ne i32 %t340, 0 - br label %logic.from283 -logic.from283: - br i1 %t341, label %logic.rhs284, label %logic.end285 -logic.rhs284: - %t342 = load i64, ptr %a114 - %t343 = add i64 %t342, 1 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = icmp slt i64 %t343, %t345 - br label %logic.rend286 -logic.rend286: - br label %logic.end285 -logic.end285: - %t347 = phi i1 [ false, %logic.from283 ], [ %t346, %logic.rend286 ] - br i1 %t347, label %then287, label %else288 -then287: - %t348 = load i64, ptr %a114 - %t349 = add i64 %t348, 1 - %t350 = load { ptr, i64, i64 }, ptr %a1 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range290, label %inrange291 -range290: - call void @finch_panic_index(ptr @.str.198, i64 207, i64 %t349, i64 %t351) - unreachable -inrange291: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349 - %t355 = load { ptr, i64, i64 }, ptr %t354 - store { ptr, i64, i64 } %t355, ptr %a356 - call void @finch_str_copy(ptr %a357, ptr %a356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - %t359 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t358, ptr %a107 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load i64, ptr %a114 - %t362 = add i64 %t361, 1 - store i64 %t362, ptr %a114 - br label %endif289 -else288: - %t363 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t363, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.199, i64 3, i64 0 }, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br i1 %t367, label %then292, label %else293 -then292: - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t369 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t368 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %a113, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %a113 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t368 - br label %endif294 -else293: - call void @finch.main.usage() - br label %endif294 -endif294: - br label %endif289 -endif289: - br label %endif282 -endif282: - br label %endif273 -endif273: - br label %endif264 -endif264: - br label %endif257 -endif257: - br label %endif248 -endif248: - br label %endif241 -endif241: - br label %endif238 -endif238: - br label %endif229 -endif229: - br label %endif218 -endif218: - %t377 = load i64, ptr %a114 - %t378 = add i64 %t377, 1 - store i64 %t378, ptr %a114 - call void @finch_str_drop(ptr %a129) - br label %while.cond207 -while.end209: - %t379 = load { ptr, i64, i64 }, ptr %a107 - %t380 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t379) - store %S.platform.Target %t380, ptr %a381 - %t382 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t382, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.200, i64 3, i64 0 }, ptr %a384 - %t385 = call i32 @finch_str_eq(ptr %a383, ptr %a384) - %t386 = icmp ne i32 %t385, 0 - br i1 %t386, label %then295, label %else296 -then295: - %t387 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.201, i64 11, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a394, i64 %t393) - %t395 = load { ptr, i64, i64 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t392, ptr %a399 - call void @finch_str_drop(ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.202, i64 1, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a77 - %t408 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t407) - store { ptr, i64, i64 } %t406, ptr %a410 - store { ptr, i64, i64 } %t408, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t406, ptr %a412 - call void @finch_str_drop(ptr %a412) - store { ptr, i64, i64 } %t408, ptr %a413 - call void @finch_str_drop(ptr %a413) - %t414 = load { ptr, i64, i64 }, ptr %a409 - %t415 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t414, ptr %a418 - store { ptr, i64, i64 } %t416, ptr %a419 - call void @finch_str_concat(ptr %a417, ptr %a418, ptr %a419) - store { ptr, i64, i64 } %t414, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a417 - %t422 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t421, ptr %a103 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_drop(ptr %a423) - br label %endif297 -else296: - %t424 = load i1, ptr %a105 - br label %logic.from298 -logic.from298: - br i1 %t424, label %logic.rhs299, label %logic.end300 -logic.rhs299: - %t425 = load i1, ptr %a104 - %t426 = xor i1 %t425, true - br label %logic.rend301 -logic.rend301: - br label %logic.end300 -logic.end300: - %t427 = phi i1 [ false, %logic.from298 ], [ %t426, %logic.rend301 ] - br i1 %t427, label %then302, label %else303 -then302: - %t428 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t429 = load i1, ptr %t428 - br i1 %t429, label %then305, label %else306 -then305: - %t430 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.203, i64 4, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a431 - %t435 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t434, ptr %a103 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif307 -else306: - %t437 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t438 = load i1, ptr %t437 - br i1 %t438, label %then308, label %else309 -then308: - %t439 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.204, i64 3, i64 0 }, ptr %a441 - store { ptr, i64, i64 } %t439, ptr %a442 - call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a440 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.205, i64 6, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t448, ptr %a103 - store { ptr, i64, i64 } %t449, ptr %a450 - call void @finch_str_drop(ptr %a450) - br label %endif310 -else309: - %t451 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.206, i64 3, i64 0 }, ptr %a453 - store { ptr, i64, i64 } %t451, ptr %a454 - call void @finch_str_concat(ptr %a452, ptr %a453, ptr %a454) - %t455 = load { ptr, i64, i64 }, ptr %a452 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.207, i64 3, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - store { ptr, i64, i64 } %t455, ptr %a459 - call void @finch_str_drop(ptr %a459) - %t460 = load { ptr, i64, i64 }, ptr %a456 - %t461 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t460, ptr %a103 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_drop(ptr %a462) - br label %endif310 -endif310: - br label %endif307 -endif307: - br label %endif304 -else303: - %t463 = load i1, ptr %a104 - %t464 = xor i1 %t463, true - br i1 %t464, label %then311, label %endif313 -then311: - %t465 = load { ptr, i64, i64 }, ptr %a103 - %t466 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t467 = load { ptr, i64, i64 }, ptr %t466 - store { ptr, i64, i64 } %t465, ptr %a469 - store { ptr, i64, i64 } %t467, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t471, ptr %a103 - store { ptr, i64, i64 } %t472, ptr %a473 - call void @finch_str_drop(ptr %a473) - br label %endif313 -endif313: - br label %endif304 -endif304: - br label %endif297 -endif297: - store %S.main.Loader zeroinitializer, ptr %a474 - %t475 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t476 = load { ptr, i64, i64 }, ptr %t475 - store { ptr, i64, i64 } { ptr @.str.208, i64 5, i64 0 }, ptr %t475 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t479 = load i1, ptr %t478 - br i1 %t479, label %then314, label %else315 -then314: - %t480 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t481 = load { ptr, i64, i64 }, ptr %t480 - store { ptr, i64, i64 } { ptr @.str.209, i64 7, i64 0 }, ptr %t480 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif316 -else315: - %t483 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t484 = load i1, ptr %t483 - br i1 %t484, label %then317, label %endif319 -then317: - %t485 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } { ptr @.str.210, i64 5, i64 0 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - call void @finch_str_drop(ptr %a487) - br label %endif319 -endif319: - br label %endif316 -endif316: - %t488 = load { ptr, i64, i64 }, ptr %a1 - %t489 = extractvalue { ptr, i64, i64 } %t488, 1 - %t490 = icmp uge i64 0, %t489 - br i1 %t490, label %range320, label %inrange321 -range320: - call void @finch_panic_index(ptr @.str.211, i64 238, i64 0, i64 %t489) - unreachable -inrange321: - %t491 = extractvalue { ptr, i64, i64 } %t488, 0 - %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 0 - %t493 = load { ptr, i64, i64 }, ptr %t492 - %t494 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t493) - store { ptr, i64, i64 } %t494, ptr %a496 - store { ptr, i64, i64 } { ptr @.str.212, i64 7, i64 0 }, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t494, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - %t500 = load { ptr, i64, i64 }, ptr %a1 - %t501 = extractvalue { ptr, i64, i64 } %t500, 1 - %t502 = icmp uge i64 0, %t501 - br i1 %t502, label %range322, label %inrange323 -range322: - call void @finch_panic_index(ptr @.str.213, i64 238, i64 0, i64 %t501) - unreachable -inrange323: - %t503 = extractvalue { ptr, i64, i64 } %t500, 0 - %t504 = getelementptr inbounds { ptr, i64, i64 }, ptr %t503, i64 0 - %t505 = load { ptr, i64, i64 }, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t505) - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.214, i64 4, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = load { ptr, i64, i64 }, ptr %a1 - %t513 = extractvalue { ptr, i64, i64 } %t512, 1 - %t514 = icmp uge i64 0, %t513 - br i1 %t514, label %range324, label %inrange325 -range324: - call void @finch_panic_index(ptr @.str.215, i64 238, i64 0, i64 %t513) - unreachable -inrange325: - %t515 = extractvalue { ptr, i64, i64 } %t512, 0 - %t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %t515, i64 0 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t517) - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.216, i64 19, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t525 = call ptr @finch_alloc(i64 %t524) - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 0 - store { ptr, i64, i64 } %t499, ptr %t526 - %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 1 - store { ptr, i64, i64 } %t511, ptr %t527 - %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 2 - store { ptr, i64, i64 } %t523, ptr %t528 - %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 3 - store { ptr, i64, i64 } { ptr @.str.217, i64 3, i64 0 }, ptr %t529 - %t530 = insertvalue { ptr, i64, i64 } undef, ptr %t525, 0 - %t531 = insertvalue { ptr, i64, i64 } %t530, i64 4, 1 - %t532 = insertvalue { ptr, i64, i64 } %t531, i64 4, 2 - store { ptr, i64, i64 } %t532, ptr %a533 - store i64 0, ptr %a534 - br label %each.cond326 -each.cond326: - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %a533, i32 0, i32 1 - %t536 = load i64, ptr %t535 - %t537 = load i64, ptr %a534 - %t538 = icmp slt i64 %t537, %t536 - br i1 %t538, label %each.body327, label %each.end329 -each.body327: - %t539 = load ptr, ptr %a533 - %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i64 %t537 - %t541 = load { ptr, i64, i64 }, ptr %t540 - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1 - %t545 = load i64, ptr %t544 - %t546 = icmp eq i64 %t545, 0 - br label %logic.from330 -logic.from330: - br i1 %t546, label %logic.rhs331, label %logic.end332 -logic.rhs331: - %t547 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t547, ptr %a549 - store { ptr, i64, i64 } { ptr @.str.218, i64 9, i64 0 }, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a552 - %t553 = call i32 @finch_file_exists(ptr %a552) - store { ptr, i64, i64 } %t551, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = icmp ne i32 %t553, 0 - br label %logic.rend333 -logic.rend333: - br label %logic.end332 -logic.end332: - %t556 = phi i1 [ false, %logic.from330 ], [ %t555, %logic.rend333 ] - br i1 %t556, label %then334, label %endif336 -then334: - %t557 = load { ptr, i64, i64 }, ptr %a542 - %t558 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - store { ptr, i64, i64 } %t557, ptr %a559 - call void @finch_str_copy(ptr %a560, ptr %a559) - %t561 = load { ptr, i64, i64 }, ptr %a560 - %t562 = load { ptr, i64, i64 }, ptr %t558 - store { ptr, i64, i64 } %t561, ptr %t558 - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif336 -endif336: - br label %each.step328 -each.step328: - %t564 = load i64, ptr %a534 - %t565 = add i64 %t564, 1 - store i64 %t565, ptr %a534 - br label %each.cond326 -each.end329: - call void @finch.drop.arr_str(ptr %a533) - %t566 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i32 0, i32 1 - %t568 = load i64, ptr %t567 - %t569 = icmp eq i64 %t568, 0 - br i1 %t569, label %then337, label %endif339 -then337: - %t570 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.219, i64 4, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t577 = load { ptr, i64, i64 }, ptr %t576 - store { ptr, i64, i64 } %t575, ptr %t576 - store { ptr, i64, i64 } %t577, ptr %a578 - call void @finch_str_drop(ptr %a578) - br label %endif339 -endif339: - %t579 = load { ptr, i64, i64 }, ptr %a111 - %t580 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 6 - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch.copy.arr_str(ptr %a582, ptr %a581) - %t583 = load { ptr, i64, i64 }, ptr %a582 - %t584 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t583, ptr %t580 - store { ptr, i64, i64 } %t584, ptr %a585 - call void @finch.drop.arr_str(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a112 - %t587 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 7 - store { ptr, i64, i64 } %t586, ptr %a588 - call void @finch.copy.arr_str(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load { ptr, i64, i64 }, ptr %t587 - store { ptr, i64, i64 } %t590, ptr %t587 - store { ptr, i64, i64 } %t591, ptr %a592 - call void @finch.drop.arr_str(ptr %a592) - %t593 = extractvalue { ptr, i64, i64 } { ptr @.str.220, i64 10, i64 0 }, 0 - %t594 = icmp eq ptr %t593, null - %t595 = select i1 %t594, ptr @.str.221, ptr %t593 - %t596 = call ptr @getenv(ptr %t595) - store { ptr, i64, i64 } zeroinitializer, ptr %a597 - call void @finch_str_from_c(ptr %a597, ptr %t596) - %t598 = load { ptr, i64, i64 }, ptr %a597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t601 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t601, ptr %a602 - call void @finch_str_split(ptr %a603, ptr %a599, ptr %a602) - store { ptr, i64, i64 } %t601, ptr %a604 - call void @finch_str_drop(ptr %a604) - %t605 = load { ptr, i64, i64 }, ptr %a603 - store { ptr, i64, i64 } %t605, ptr %a606 - store i64 0, ptr %a607 - br label %each.cond340 -each.cond340: - %t608 = getelementptr inbounds { ptr, i64, i64 }, ptr %a606, i32 0, i32 1 - %t609 = load i64, ptr %t608 - %t610 = load i64, ptr %a607 - %t611 = icmp slt i64 %t610, %t609 - br i1 %t611, label %each.body341, label %each.end343 -each.body341: - %t612 = load ptr, ptr %a606 - %t613 = getelementptr inbounds { ptr, i64, i64 }, ptr %t612, i64 %t610 - %t614 = load { ptr, i64, i64 }, ptr %t613 - store { ptr, i64, i64 } %t614, ptr %a615 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %a615, i32 0, i32 1 - %t617 = load i64, ptr %t616 - %t618 = icmp sgt i64 %t617, 0 - br i1 %t618, label %then344, label %endif346 -then344: - %t619 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 5 - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %t619, i32 0, i32 1 - %t621 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t621, ptr %a622 - call void @finch_str_copy(ptr %a623, ptr %a622) - %t624 = load { ptr, i64, i64 }, ptr %a623 - %t625 = load i64, ptr %t620 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t619, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t619 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t620 - br label %endif346 -endif346: - br label %each.step342 -each.step342: - %t629 = load i64, ptr %a607 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a607 - br label %each.cond340 -each.end343: - call void @finch.drop.arr_str(ptr %a606) - %t631 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.main.load(ptr %a474, { ptr, i64, i64 } %t631, { ptr, i64, i64 } { ptr @.str.223, i64 0, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a632 - store { ptr, i64, i64 } zeroinitializer, ptr %a633 - %t634 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t634, ptr %a635 - call void @finch.copy.arr_str(ptr %a636, ptr %a635) - %t637 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t637, ptr %a638 - %t639 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t639, ptr %a640 - call void @finch.copy.arr_str(ptr %a641, ptr %a640) - %t642 = load { ptr, i64, i64 }, ptr %a641 - store { ptr, i64, i64 } %t642, ptr %a643 - %t644 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - store i64 0, ptr %a645 - br label %each.cond347 -each.cond347: - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t644, i32 0, i32 1 - %t647 = load i64, ptr %t646 - %t648 = load i64, ptr %a645 - %t649 = icmp slt i64 %t648, %t647 - br i1 %t649, label %each.body348, label %each.end350 -each.body348: - %t650 = load ptr, ptr %t644 - %t651 = getelementptr inbounds %S.ast.Program, ptr %t650, i64 %t648 - %t652 = load %S.ast.Program, ptr %t651 - store %S.ast.Program %t652, ptr %a653 - %t654 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 1 - %t655 = load { ptr, i64, i64 }, ptr %t654 - %t656 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t655) - store { ptr, i64, i64 } %t656, ptr %a657 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t659 = load { ptr, i64, i64 }, ptr %a657 - store i64 -1, ptr %a660 - %t661 = load i64, ptr %t658 - %t662 = load ptr, ptr %a638 - store i64 0, ptr %a663 - br label %find.cond351 -find.cond351: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t661 - br i1 %t665, label %find.body352, label %find.end355 -find.body352: - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t662, i64 %t664 - %t667 = load { ptr, i64, i64 }, ptr %t666 - store { ptr, i64, i64 } %t667, ptr %a668 - store { ptr, i64, i64 } %t659, ptr %a669 - %t670 = call i32 @finch_str_eq(ptr %a668, ptr %a669) - %t671 = icmp ne i32 %t670, 0 - br i1 %t671, label %find.hit353, label %find.next354 -find.hit353: - store i64 %t664, ptr %a660 - br label %find.end355 -find.next354: - %t672 = add i64 %t664, 1 - store i64 %t672, ptr %a663 - br label %find.cond351 -find.end355: - %t673 = load i64, ptr %a660 - %t674 = icmp sge i64 %t673, 0 - %t675 = xor i1 %t674, true - br i1 %t675, label %then356, label %endif358 -then356: - %t676 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t676 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a638, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a638 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t676 - br label %endif358 -endif358: - %t685 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i32 0, i32 1 - %t687 = load i64, ptr %t686 - store i64 0, ptr %a688 - br label %for.cond359 -for.cond359: - %t689 = load i64, ptr %a688 - %t690 = icmp slt i64 %t689, %t687 - br i1 %t690, label %for.body360, label %for.end362 -for.body360: - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t692 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t693 = load i64, ptr %a688 - %t694 = load { ptr, i64, i64 }, ptr %t692 - %t695 = extractvalue { ptr, i64, i64 } %t694, 1 - %t696 = icmp uge i64 %t693, %t695 - br i1 %t696, label %range363, label %inrange364 -range363: - call void @finch_panic_index(ptr @.str.224, i64 266, i64 %t693, i64 %t695) - unreachable -inrange364: - %t697 = extractvalue { ptr, i64, i64 } %t694, 0 - %t698 = getelementptr inbounds { ptr, i64, i64 }, ptr %t697, i64 %t693 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t691 - %t702 = load ptr, ptr %a633 - store i64 0, ptr %a703 - br label %find.cond365 -find.cond365: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body366, label %find.end369 -find.body366: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit367, label %find.next368 -find.hit367: - store i64 %t704, ptr %a700 - br label %find.end369 -find.next368: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond365 -find.end369: - %t713 = load i64, ptr %a700 - %t714 = icmp sge i64 %t713, 0 - %t715 = xor i1 %t714, true - br i1 %t715, label %then370, label %endif372 -then370: - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t717 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t718 = load i64, ptr %a688 - %t719 = load { ptr, i64, i64 }, ptr %t717 - %t720 = extractvalue { ptr, i64, i64 } %t719, 1 - %t721 = icmp uge i64 %t718, %t720 - br i1 %t721, label %range373, label %inrange374 -range373: - call void @finch_panic_index(ptr @.str.225, i64 267, i64 %t718, i64 %t720) - unreachable -inrange374: - %t722 = extractvalue { ptr, i64, i64 } %t719, 0 - %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t718 - %t724 = load { ptr, i64, i64 }, ptr %t723 - store { ptr, i64, i64 } %t724, ptr %a725 - call void @finch_str_copy(ptr %a726, ptr %a725) - %t727 = load { ptr, i64, i64 }, ptr %a726 - %t728 = load i64, ptr %t716 - %t729 = add i64 %t728, 1 - call void @finch_arr_reserve(ptr %a633, i64 %t729, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t730 = load ptr, ptr %a633 - %t731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t730, i64 %t728 - store { ptr, i64, i64 } %t727, ptr %t731 - store i64 %t729, ptr %t716 - %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t733 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t734 = load i64, ptr %a688 - %t735 = load { ptr, i64, i64 }, ptr %t733 - %t736 = extractvalue { ptr, i64, i64 } %t735, 1 - %t737 = icmp uge i64 %t734, %t736 - br i1 %t737, label %range375, label %inrange376 -range375: - call void @finch_panic_index(ptr @.str.226, i64 268, i64 %t734, i64 %t736) - unreachable -inrange376: - %t738 = extractvalue { ptr, i64, i64 } %t735, 0 - %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734 - %t740 = load { ptr, i64, i64 }, ptr %t739 - store { ptr, i64, i64 } %t740, ptr %a741 - call void @finch_str_copy(ptr %a742, ptr %a741) - %t743 = load { ptr, i64, i64 }, ptr %a742 - %t744 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t743, 0 - %t745 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 4 - %t746 = load i64, ptr %a688 - %t747 = load { ptr, i64, i64 }, ptr %t745 - %t748 = extractvalue { ptr, i64, i64 } %t747, 1 - %t749 = icmp uge i64 %t746, %t748 - br i1 %t749, label %range377, label %inrange378 -range377: - call void @finch_panic_index(ptr @.str.227, i64 268, i64 %t746, i64 %t748) - unreachable -inrange378: - %t750 = extractvalue { ptr, i64, i64 } %t747, 0 - %t751 = getelementptr inbounds { ptr, i64, i64 }, ptr %t750, i64 %t746 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - %t756 = insertvalue %S.cimport.Header %t744, { ptr, i64, i64 } %t755, 1 - %t757 = load i64, ptr %t732 - %t758 = add i64 %t757, 1 - call void @finch_arr_reserve(ptr %a632, i64 %t758, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) - %t759 = load ptr, ptr %a632 - %t760 = getelementptr inbounds %S.cimport.Header, ptr %t759, i64 %t757 - store %S.cimport.Header %t756, ptr %t760 - store i64 %t758, ptr %t732 - br label %endif372 -endif372: - br label %for.step361 -for.step361: - %t761 = load i64, ptr %a688 - %t762 = add i64 %t761, 1 - store i64 %t762, ptr %a688 - br label %for.cond359 -for.end362: - %t763 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 5 - store i64 0, ptr %a764 - br label %each.cond379 -each.cond379: - %t765 = getelementptr inbounds { ptr, i64, i64 }, ptr %t763, i32 0, i32 1 - %t766 = load i64, ptr %t765 - %t767 = load i64, ptr %a764 - %t768 = icmp slt i64 %t767, %t766 - br i1 %t768, label %each.body380, label %each.end382 -each.body380: - %t769 = load ptr, ptr %t763 - %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i64 %t767 - %t771 = load { ptr, i64, i64 }, ptr %t770 - store { ptr, i64, i64 } %t771, ptr %a772 - %t773 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t773, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a776 - %t777 = call i32 @finch_str_ends(ptr %a774, ptr %a776) - %t778 = icmp ne i32 %t777, 0 - br label %logic.from383 -logic.from383: - br i1 %t778, label %logic.end385, label %logic.rhs384 -logic.rhs384: - %t779 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t779, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.231, i64 2, i64 0 }, ptr %a782 - %t783 = call i32 @finch_str_ends(ptr %a780, ptr %a782) - %t784 = icmp ne i32 %t783, 0 - br label %logic.rend386 -logic.rend386: - br label %logic.end385 -logic.end385: - %t785 = phi i1 [ true, %logic.from383 ], [ %t784, %logic.rend386 ] - br label %logic.from387 -logic.from387: - br i1 %t785, label %logic.end389, label %logic.rhs388 -logic.rhs388: - %t786 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t786, ptr %a787 - store { ptr, i64, i64 } { ptr @.str.233, i64 2, i64 0 }, ptr %a789 - %t790 = call i32 @finch_str_ends(ptr %a787, ptr %a789) - %t791 = icmp ne i32 %t790, 0 - br label %logic.rend390 -logic.rend390: - br label %logic.end389 -logic.end389: - %t792 = phi i1 [ true, %logic.from387 ], [ %t791, %logic.rend390 ] - br i1 %t792, label %then391, label %else392 -then391: - %t793 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t794 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.234, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a795 - %t799 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t798, ptr %a801 - store { ptr, i64, i64 } %t799, ptr %a802 - call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) - store { ptr, i64, i64 } %t798, ptr %a803 - call void @finch_str_drop(ptr %a803) - %t804 = load { ptr, i64, i64 }, ptr %a800 - %t805 = load i64, ptr %t793 - %t806 = add i64 %t805, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t806, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t807 = load ptr, ptr %a643 - %t808 = getelementptr inbounds { ptr, i64, i64 }, ptr %t807, i64 %t805 - store { ptr, i64, i64 } %t804, ptr %t808 - store i64 %t806, ptr %t793 - br label %endif393 -else392: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t810, ptr %a811 - call void @finch_str_copy(ptr %a812, ptr %a811) - %t813 = load { ptr, i64, i64 }, ptr %a812 - %t814 = load i64, ptr %t809 - %t815 = add i64 %t814, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t815, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t816 = load ptr, ptr %a643 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t814 - store { ptr, i64, i64 } %t813, ptr %t817 - store i64 %t815, ptr %t809 - br label %endif393 -endif393: - br label %each.step381 -each.step381: - %t818 = load i64, ptr %a764 - %t819 = add i64 %t818, 1 - store i64 %t819, ptr %a764 - br label %each.cond379 -each.end382: - call void @finch_str_drop(ptr %a657) - br label %each.step349 -each.step349: - %t820 = load i64, ptr %a645 - %t821 = add i64 %t820, 1 - store i64 %t821, ptr %a645 - br label %each.cond347 -each.end350: - store { ptr, i64, i64 } { ptr @.str.235, i64 0, i64 0 }, ptr %a822 - %t823 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 5 - %t824 = load i1, ptr %t823 - br label %logic.from394 -logic.from394: - br i1 %t824, label %logic.end396, label %logic.rhs395 -logic.rhs395: - %t825 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t826 = load i1, ptr %t825 - br label %logic.rend397 -logic.rend397: - br label %logic.end396 -logic.end396: - %t827 = phi i1 [ true, %logic.from394 ], [ %t826, %logic.rend397 ] - br i1 %t827, label %then398, label %endif400 -then398: - %t828 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 0 - %t829 = load { ptr, i64, i64 }, ptr %t828 - store { ptr, i64, i64 } %t829, ptr %a830 - call void @finch_str_copy(ptr %a831, ptr %a830) - %t832 = load { ptr, i64, i64 }, ptr %a831 - %t833 = load { ptr, i64, i64 }, ptr %a822 - store { ptr, i64, i64 } %t832, ptr %a822 - store { ptr, i64, i64 } %t833, ptr %a834 - call void @finch_str_drop(ptr %a834) - br label %endif400 -endif400: - %t835 = load { ptr, i64, i64 }, ptr %a632 - %t836 = load { ptr, i64, i64 }, ptr %a638 - %t837 = load { ptr, i64, i64 }, ptr %a822 - %t838 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t839 = load i1, ptr %t838 - %t840 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 7 - %t841 = load { ptr, i64, i64 }, ptr %t840 - %t842 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t835, { ptr, i64, i64 } %t836, { ptr, i64, i64 } %t837, i1 %t839, { ptr, i64, i64 } %t841) - %t843 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 0 - %t844 = xor i1 %t843, true - %t845 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 2 - %t846 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 1 - br i1 %t844, label %or.failed401, label %or.ok402 -or.failed401: - store { ptr, i64, i64 } %t845, ptr %a847 - %t848 = load { ptr, i64, i64 }, ptr %a847 - %t849 = extractvalue { ptr, i64, i64 } %t848, 1 - %t850 = trunc i64 %t849 to i32 - %t851 = extractvalue { ptr, i64, i64 } %t848, 0 - %t852 = icmp eq ptr %t851, null - %t853 = select i1 %t852, ptr @.str.236, ptr %t851 - %t854 = call i32 (ptr, ...) @printf(ptr @.str.237, i32 %t850, ptr %t853) - %t855 = call i32 (ptr, ...) @printf(ptr @.str.238) - call void @finch_str_drop(ptr %a847) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -or.ok402: - store %S.cimport.CImports %t846, ptr %a856 - %t857 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 1 - %t860 = load { ptr, i64, i64 }, ptr %t859 - %t861 = load %S.cimport.CImports, ptr %a856 - %t862 = load i1, ptr %a105 - %t863 = insertvalue %S.gen.Options zeroinitializer, i1 %t862, 0 - %t864 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t864, ptr %a865 - store { ptr, i64, i64 } { ptr @.str.239, i64 5, i64 0 }, ptr %a866 - %t867 = call i32 @finch_str_eq(ptr %a865, ptr %a866) - %t868 = icmp ne i32 %t867, 0 - %t869 = insertvalue %S.gen.Options %t863, i1 %t868, 1 - %t870 = load i1, ptr %a106 - %t871 = insertvalue %S.gen.Options %t869, i1 %t870, 2 - %t872 = call { ptr, i64, i64 } @finch.host.cwd() - %t873 = insertvalue %S.gen.Options %t871, { ptr, i64, i64 } %t872, 3 - %t874 = load %S.platform.Target, ptr %a381 - store %S.platform.Target %t874, ptr %a875 - call void @finch.copy.S_platform_Target(ptr %a876, ptr %a875) - %t877 = load %S.platform.Target, ptr %a876 - %t878 = insertvalue %S.gen.Options %t873, %S.platform.Target %t877, 4 - %t879 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t858, { ptr, i64, i64 } %t860, %S.cimport.CImports %t861, %S.gen.Options %t878) - store %S.gen.Options %t878, ptr %a880 - call void @finch.drop.S_gen_Options(ptr %a880) - store { ptr, i64, i64 } %t879, ptr %a881 - %t882 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t882, ptr %a883 - store { ptr, i64, i64 } { ptr @.str.240, i64 2, i64 0 }, ptr %a884 - %t885 = call i32 @finch_str_eq(ptr %a883, ptr %a884) - %t886 = icmp ne i32 %t885, 0 - br label %logic.from409 -logic.from409: - br i1 %t886, label %logic.end411, label %logic.rhs410 -logic.rhs410: - %t887 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t887, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.241, i64 5, i64 0 }, ptr %a889 - %t890 = call i32 @finch_str_eq(ptr %a888, ptr %a889) - %t891 = icmp ne i32 %t890, 0 - br label %logic.rend412 -logic.rend412: - br label %logic.end411 -logic.end411: - %t892 = phi i1 [ true, %logic.from409 ], [ %t891, %logic.rend412 ] - br i1 %t892, label %then413, label %endif415 -then413: - %t893 = load { ptr, i64, i64 }, ptr %a881 - %t894 = extractvalue { ptr, i64, i64 } %t893, 1 - %t895 = trunc i64 %t894 to i32 - %t896 = extractvalue { ptr, i64, i64 } %t893, 0 - %t897 = icmp eq ptr %t896, null - %t898 = select i1 %t897, ptr @.str.242, ptr %t896 - %t899 = call i32 (ptr, ...) @printf(ptr @.str.243, i32 %t895, ptr %t898) - %t900 = call i32 (ptr, ...) @printf(ptr @.str.244) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -endif415: - %t901 = extractvalue { ptr, i64, i64 } { ptr @.str.245, i64 8, i64 0 }, 0 - %t902 = icmp eq ptr %t901, null - %t903 = select i1 %t902, ptr @.str.246, ptr %t901 - %t904 = call ptr @getenv(ptr %t903) - store { ptr, i64, i64 } zeroinitializer, ptr %a905 - call void @finch_str_from_c(ptr %a905, ptr %t904) - %t906 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t906, ptr %a907 - call void @finch_str_copy(ptr %a908, ptr %a907) - %t909 = load { ptr, i64, i64 }, ptr %a908 - store { ptr, i64, i64 } %t909, ptr %a910 - %t911 = getelementptr inbounds { ptr, i64, i64 }, ptr %a910, i32 0, i32 1 - %t912 = load i64, ptr %t911 - %t913 = icmp eq i64 %t912, 0 - br i1 %t913, label %then439, label %endif441 -then439: - %t914 = load { ptr, i64, i64 }, ptr %a1 - %t915 = extractvalue { ptr, i64, i64 } %t914, 1 - %t916 = icmp uge i64 0, %t915 - br i1 %t916, label %range442, label %inrange443 -range442: - call void @finch_panic_index(ptr @.str.247, i64 296, i64 0, i64 %t915) - unreachable -inrange443: - %t917 = extractvalue { ptr, i64, i64 } %t914, 0 - %t918 = getelementptr inbounds { ptr, i64, i64 }, ptr %t917, i64 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - %t920 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t919) - store { ptr, i64, i64 } %t920, ptr %a922 - store { ptr, i64, i64 } { ptr @.str.248, i64 22, i64 0 }, ptr %a923 - call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923) - store { ptr, i64, i64 } %t920, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load { ptr, i64, i64 }, ptr %a921 - %t926 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t925, ptr %a910 - store { ptr, i64, i64 } %t926, ptr %a927 - call void @finch_str_drop(ptr %a927) - br label %endif441 -endif441: - %t928 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t928, ptr %a929 - %t930 = call i32 @finch_file_exists(ptr %a929) - %t931 = icmp ne i32 %t930, 0 - %t932 = xor i1 %t931, true - br i1 %t932, label %then444, label %endif446 -then444: - %t933 = load { ptr, i64, i64 }, ptr %a1 - %t934 = extractvalue { ptr, i64, i64 } %t933, 1 - %t935 = icmp uge i64 0, %t934 - br i1 %t935, label %range447, label %inrange448 -range447: - call void @finch_panic_index(ptr @.str.249, i64 299, i64 0, i64 %t934) - unreachable -inrange448: - %t936 = extractvalue { ptr, i64, i64 } %t933, 0 - %t937 = getelementptr inbounds { ptr, i64, i64 }, ptr %t936, i64 0 - %t938 = load { ptr, i64, i64 }, ptr %t937 - %t939 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t938) - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.250, i64 19, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t944, ptr %a910 - store { ptr, i64, i64 } %t945, ptr %a946 - call void @finch_str_drop(ptr %a946) - br label %endif446 -endif446: - %t947 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t947, ptr %a948 - %t949 = call i32 @finch_file_exists(ptr %a948) - %t950 = icmp ne i32 %t949, 0 - %t951 = xor i1 %t950, true - br i1 %t951, label %then449, label %endif451 -then449: - %t952 = load { ptr, i64, i64 }, ptr %a1 - %t953 = extractvalue { ptr, i64, i64 } %t952, 1 - %t954 = icmp uge i64 0, %t953 - br i1 %t954, label %range452, label %inrange453 -range452: - call void @finch_panic_index(ptr @.str.251, i64 302, i64 0, i64 %t953) - unreachable -inrange453: - %t955 = extractvalue { ptr, i64, i64 } %t952, 0 - %t956 = getelementptr inbounds { ptr, i64, i64 }, ptr %t955, i64 0 - %t957 = load { ptr, i64, i64 }, ptr %t956 - %t958 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t957) - store { ptr, i64, i64 } %t958, ptr %a960 - store { ptr, i64, i64 } { ptr @.str.252, i64 34, i64 0 }, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t958, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - %t964 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t963, ptr %a910 - store { ptr, i64, i64 } %t964, ptr %a965 - call void @finch_str_drop(ptr %a965) - br label %endif451 -endif451: - %t966 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t966, ptr %a967 - %t968 = call i32 @finch_file_exists(ptr %a967) - %t969 = icmp ne i32 %t968, 0 - %t970 = xor i1 %t969, true - br label %logic.from454 -logic.from454: - br i1 %t970, label %logic.rhs455, label %logic.end456 -logic.rhs455: - store { ptr, i64, i64 } { ptr @.str.253, i64 18, i64 0 }, ptr %a971 - %t972 = call i32 @finch_file_exists(ptr %a971) - %t973 = icmp ne i32 %t972, 0 - br label %logic.rend457 -logic.rend457: - br label %logic.end456 -logic.end456: - %t974 = phi i1 [ false, %logic.from454 ], [ %t973, %logic.rend457 ] - br i1 %t974, label %then458, label %endif460 -then458: - %t975 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } { ptr @.str.254, i64 18, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t975, ptr %a976 - call void @finch_str_drop(ptr %a976) - br label %endif460 -endif460: - %t977 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t977, ptr %a978 - %t979 = call i32 @finch_file_exists(ptr %a978) - %t980 = icmp ne i32 %t979, 0 - %t981 = xor i1 %t980, true - br i1 %t981, label %then461, label %endif463 -then461: - %t982 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t982, ptr %a984 - store { ptr, i64, i64 } { ptr @.str.255, i64 19, i64 0 }, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - store { ptr, i64, i64 } %t982, ptr %a986 - call void @finch_str_drop(ptr %a986) - %t987 = load { ptr, i64, i64 }, ptr %a983 - %t988 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t987, ptr %a910 - store { ptr, i64, i64 } %t988, ptr %a989 - call void @finch_str_drop(ptr %a989) - br label %endif463 -endif463: - store { ptr, i64, i64 } { ptr @.str.256, i64 0, i64 0 }, ptr %a990 - %t991 = load i1, ptr %a105 - br i1 %t991, label %then464, label %endif466 -then464: - %t992 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.257, i64 6, i64 0 }, ptr %a990 - store { ptr, i64, i64 } %t992, ptr %a993 - call void @finch_str_drop(ptr %a993) - br label %endif466 -endif466: - %t994 = load i1, ptr %a106 - br i1 %t994, label %then467, label %endif469 -then467: - %t995 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t995, ptr %a997 - store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %a998 - call void @finch_str_concat(ptr %a996, ptr %a997, ptr %a998) - %t999 = load { ptr, i64, i64 }, ptr %a996 - %t1000 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t999, ptr %a990 - store { ptr, i64, i64 } %t1000, ptr %a1001 - call void @finch_str_drop(ptr %a1001) - br label %endif469 -endif469: - %t1002 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t1002, ptr %a1003 - call void @finch_str_copy(ptr %a1004, ptr %a1003) - %t1005 = load { ptr, i64, i64 }, ptr %a1004 - %t1006 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t1005, 0 - %t1007 = load { ptr, i64, i64 }, ptr %a881 - store { ptr, i64, i64 } %t1007, ptr %a1008 - call void @finch_str_copy(ptr %a1009, ptr %a1008) - %t1010 = load { ptr, i64, i64 }, ptr %a1009 - %t1011 = insertvalue %S.linker.Build %t1006, { ptr, i64, i64 } %t1010, 1 - %t1012 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t1012, ptr %a1013 - call void @finch_str_copy(ptr %a1014, ptr %a1013) - %t1015 = load { ptr, i64, i64 }, ptr %a1014 - %t1016 = insertvalue %S.linker.Build %t1011, { ptr, i64, i64 } %t1015, 2 - %t1017 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_copy(ptr %a1019, ptr %a1018) - %t1020 = load { ptr, i64, i64 }, ptr %a1019 - %t1021 = insertvalue %S.linker.Build %t1016, { ptr, i64, i64 } %t1020, 3 - %t1022 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t1022, ptr %a1023 - call void @finch_str_copy(ptr %a1024, ptr %a1023) - %t1025 = load { ptr, i64, i64 }, ptr %a1024 - %t1026 = insertvalue %S.linker.Build %t1021, { ptr, i64, i64 } %t1025, 4 - %t1027 = load i1, ptr %a105 - %t1028 = insertvalue %S.linker.Build %t1026, i1 %t1027, 5 - %t1029 = load { ptr, i64, i64 }, ptr %a643 - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch.copy.arr_str(ptr %a1031, ptr %a1030) - %t1032 = load { ptr, i64, i64 }, ptr %a1031 - %t1033 = insertvalue %S.linker.Build %t1028, { ptr, i64, i64 } %t1032, 6 - %t1034 = load %S.platform.Target, ptr %a381 - %t1035 = load %S.cimport.CImports, ptr %a856 - %t1036 = call i64 @finch.linker.build(%S.linker.Build %t1033, %S.platform.Target %t1034, %S.cimport.CImports %t1035) - store %S.linker.Build %t1033, ptr %a1037 - call void @finch.drop.S_linker_Build(ptr %a1037) - %t1038 = icmp ne i64 %t1036, 0 - br i1 %t1038, label %then470, label %endif472 -then470: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -endif472: - %t1039 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t1039, ptr %a1040 - store { ptr, i64, i64 } { ptr @.str.259, i64 3, i64 0 }, ptr %a1041 - %t1042 = call i32 @finch_str_eq(ptr %a1040, ptr %a1041) - %t1043 = icmp ne i32 %t1042, 0 - br i1 %t1043, label %then473, label %endif475 -then473: - store { ptr, i64, i64 } zeroinitializer, ptr %a1044 - store i64 0, ptr %a1045 - br label %each.cond476 -each.cond476: - %t1046 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t1047 = load i64, ptr %t1046 - %t1048 = load i64, ptr %a1045 - %t1049 = icmp slt i64 %t1048, %t1047 - br i1 %t1049, label %each.body477, label %each.end479 -each.body477: - %t1050 = load ptr, ptr %a113 - %t1051 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1050, i64 %t1048 - %t1052 = load { ptr, i64, i64 }, ptr %t1051 - store { ptr, i64, i64 } %t1052, ptr %a1053 - %t1054 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - %t1055 = load { ptr, i64, i64 }, ptr %a1053 - %t1056 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1055) - %t1057 = load i64, ptr %t1054 - %t1058 = add i64 %t1057, 1 - call void @finch_arr_reserve(ptr %a1044, i64 %t1058, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1059 = load ptr, ptr %a1044 - %t1060 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1059, i64 %t1057 - store { ptr, i64, i64 } %t1056, ptr %t1060 - store i64 %t1058, ptr %t1054 - br label %each.step478 -each.step478: - %t1061 = load i64, ptr %a1045 - %t1062 = add i64 %t1061, 1 - store i64 %t1062, ptr %a1045 - br label %each.cond476 -each.end479: - %t1063 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 8 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - %t1065 = load { ptr, i64, i64 }, ptr %a103 - %t1066 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1065) - store { ptr, i64, i64 } %t1064, ptr %a1068 - store { ptr, i64, i64 } %t1066, ptr %a1069 - call void @finch_str_concat(ptr %a1067, ptr %a1068, ptr %a1069) - store { ptr, i64, i64 } %t1066, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - %t1071 = load { ptr, i64, i64 }, ptr %a1067 - store { ptr, i64, i64 } %t1071, ptr %a1073 - store { ptr, i64, i64 } { ptr @.str.260, i64 1, i64 0 }, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1071, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.261, i64 1, i64 0 }, ptr %a1078 - call void @finch_str_join(ptr %a1079, ptr %a1044, ptr %a1078) - %t1080 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1076, ptr %a1082 - store { ptr, i64, i64 } %t1080, ptr %a1083 - call void @finch_str_concat(ptr %a1081, ptr %a1082, ptr %a1083) - store { ptr, i64, i64 } %t1076, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - store { ptr, i64, i64 } %t1080, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1081 - %t1087 = call i64 @finch.host.run({ ptr, i64, i64 } %t1086) - store { ptr, i64, i64 } %t1086, ptr %a1088 - call void @finch_str_drop(ptr %a1088) - store i64 %t1087, ptr %a1089 - %t1090 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.host.remove({ ptr, i64, i64 } %t1090) - %t1091 = load i64, ptr %a1089 - call void @finch.drop.arr_str(ptr %a1044) - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 %t1091 -endif475: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -} - -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.from480 -logic.from480: - br i1 %t3, label %logic.rhs481, label %logic.end482 -logic.rhs481: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend483 -logic.rend483: - br label %logic.end482 -logic.end482: - %t6 = phi i1 [ false, %logic.from480 ], [ %t5, %logic.rend483 ] - br label %logic.from484 -logic.from484: - br i1 %t6, label %logic.end486, label %logic.rhs485 -logic.rhs485: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from487 -logic.from487: - br i1 %t8, label %logic.rhs488, label %logic.end489 -logic.rhs488: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend490 -logic.rend490: - br label %logic.end489 -logic.end489: - %t11 = phi i1 [ false, %logic.from487 ], [ %t10, %logic.rend490 ] - br label %logic.rend491 -logic.rend491: - br label %logic.end486 -logic.end486: - %t12 = phi i1 [ true, %logic.from484 ], [ %t11, %logic.rend491 ] - br label %logic.from492 -logic.from492: - br i1 %t12, label %logic.end494, label %logic.rhs493 -logic.rhs493: - %t13 = load i8, ptr %a1 - %t14 = icmp eq i8 %t13, 95 - br label %logic.rend495 -logic.rend495: - br label %logic.end494 -logic.end494: - %t15 = phi i1 [ true, %logic.from492 ], [ %t14, %logic.rend495 ] - 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.from496 -logic.from496: - br i1 %t3, label %logic.rhs497, label %logic.end498 -logic.rhs497: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend499 -logic.rend499: - br label %logic.end498 -logic.end498: - %t6 = phi i1 [ false, %logic.from496 ], [ %t5, %logic.rend499 ] - 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.from500 -logic.from500: - br i1 %t3, label %logic.end502, label %logic.rhs501 -logic.rhs501: - %t4 = load i8, ptr %a1 - %t5 = icmp uge i8 %t4, 97 - br label %logic.from503 -logic.from503: - br i1 %t5, label %logic.rhs504, label %logic.end505 -logic.rhs504: - %t6 = load i8, ptr %a1 - %t7 = icmp ule i8 %t6, 102 - br label %logic.rend506 -logic.rend506: - br label %logic.end505 -logic.end505: - %t8 = phi i1 [ false, %logic.from503 ], [ %t7, %logic.rend506 ] - br label %logic.rend507 -logic.rend507: - br label %logic.end502 -logic.end502: - %t9 = phi i1 [ true, %logic.from500 ], [ %t8, %logic.rend507 ] - br label %logic.from508 -logic.from508: - br i1 %t9, label %logic.end510, label %logic.rhs509 -logic.rhs509: - %t10 = load i8, ptr %a1 - %t11 = icmp uge i8 %t10, 65 - br label %logic.from511 -logic.from511: - br i1 %t11, label %logic.rhs512, label %logic.end513 -logic.rhs512: - %t12 = load i8, ptr %a1 - %t13 = icmp ule i8 %t12, 70 - br label %logic.rend514 -logic.rend514: - br label %logic.end513 -logic.end513: - %t14 = phi i1 [ false, %logic.from511 ], [ %t13, %logic.rend514 ] - br label %logic.rend515 -logic.rend515: - br label %logic.end510 -logic.end510: - %t15 = phi i1 [ true, %logic.from508 ], [ %t14, %logic.rend515 ] - 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.262, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.263, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.264, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.265, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.266, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.267, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.268, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.269, i64 5, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.270, i64 8, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.273, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.274, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.275, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.276, i64 6, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.277, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.278, i64 2, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.279, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.280, i64 4, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.281, i64 5, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.282, i64 6, i64 0 }, ptr %t24 - %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t26 = insertvalue { ptr, i64, i64 } %t25, i64 21, 1 - %t27 = insertvalue { ptr, i64, i64 } %t26, i64 21, 2 - 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.cond516 -find.cond516: - %t35 = load i64, ptr %a34 - %t36 = icmp slt i64 %t35, %t32 - br i1 %t36, label %find.body517, label %find.end520 -find.body517: - %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.hit518, label %find.next519 -find.hit518: - store i64 %t35, ptr %a31 - br label %find.end520 -find.next519: - %t43 = add i64 %t35, 1 - store i64 %t43, ptr %a34 - br label %find.cond516 -find.end520: - %t44 = load i64, ptr %a31 - %t45 = icmp sge i64 %t44, 0 - call void @finch.drop.arr_str(ptr %a28) - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic521, label %ok522 -panic521: - call void @finch_panic(ptr @.str.283, i64 41, ptr @.str.284) - unreachable -ok522: - %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.285, i64 1, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a9 - %t13 = load i64, ptr %a2 - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.286, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a28, i64 %t27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t26, ptr %a33 - call void @finch_str_drop(ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.287, i64 9, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = trunc i64 %t47 to i32 - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = icmp eq ptr %t49, null - %t51 = select i1 %t50, ptr @.str.288, ptr %t49 - %t52 = call i32 (ptr, ...) @printf(ptr @.str.289, i32 %t48, ptr %t51) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = call i32 (ptr, ...) @printf(ptr @.str.290) - %t55 = trunc i64 1 to i32 - %t56 = call i32 @fflush(ptr null) - call void @exit(i32 %t55) - ret void -} - -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 %panic523, label %ok524 -panic523: - call void @finch_panic(ptr @.str.291, i64 46, ptr @.str.292) - unreachable -ok524: - %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 %panic525, label %ok526 -panic525: - call void @finch_panic(ptr @.str.293, i64 46, ptr @.str.294) - unreachable -ok526: - %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 %then527, label %endif529 -then527: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic530, label %ok531 -panic530: - call void @finch_panic(ptr @.str.295, i64 47, ptr @.str.296) - unreachable -ok531: - %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 %panic532, label %ok533 -panic532: - call void @finch_panic(ptr @.str.297, i64 47, ptr @.str.298) - unreachable -ok533: - %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 %range534, label %inrange535 -range534: - call void @finch_panic_index(ptr @.str.299, i64 47, i64 %t23, i64 %t25) - unreachable -inrange535: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 - %t29 = load i8, ptr %t28 - ret i8 %t29 -endif529: - %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 %panic536, label %ok537 -panic536: - call void @finch_panic(ptr @.str.300, i64 53, ptr @.str.301) - unreachable -ok537: - %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 %panic538, label %ok539 -panic538: - call void @finch_panic(ptr @.str.302, i64 53, ptr @.str.303) - unreachable -ok539: - %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 %range540, label %inrange541 -range540: - call void @finch_panic_index(ptr @.str.304, i64 53, i64 %t8, i64 %t10) - unreachable -inrange541: - %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 %then542, label %else543 -then542: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic545, label %ok546 -panic545: - call void @finch_panic(ptr @.str.305, i64 55, ptr @.str.306) - unreachable -ok546: - %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 %panic547, label %ok548 -panic547: - call void @finch_panic(ptr @.str.307, i64 56, ptr @.str.308) - unreachable -ok548: - %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 %panic549, label %ok550 -panic549: - call void @finch_panic(ptr @.str.309, i64 57, ptr @.str.310) - unreachable -ok550: - %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 - store i1 true, ptr %t28 - br label %endif544 -else543: - %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 %then551, label %endif553 -then551: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic554, label %ok555 -panic554: - call void @finch_panic(ptr @.str.311, i64 59, ptr @.str.312) - unreachable -ok555: - %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 %endif553 -endif553: - br label %endif544 -endif544: - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic556, label %ok557 -panic556: - call void @finch_panic(ptr @.str.313, i64 61, ptr @.str.314) - unreachable -ok557: - %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 - 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.315, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.322, i64 2, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.323, i64 2, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.324, i64 2, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.325, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.326, i64 2, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.327, i64 2, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.328, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.329, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.330, i64 2, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic558, label %ok559 -panic558: - call void @finch_panic(ptr @.str.331, i64 67, ptr @.str.332) - unreachable -ok559: - %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 %panic560, label %ok561 -panic560: - call void @finch_panic(ptr @.str.333, i64 67, ptr @.str.334) - unreachable -ok561: - %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 %then562, label %endif564 -then562: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic565, label %ok566 -panic565: - call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) - unreachable -ok566: - %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 %panic567, label %ok568 -panic567: - call void @finch_panic(ptr @.str.338, i64 68, ptr @.str.339) - unreachable -ok568: - %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 %panic569, label %ok570 -panic569: - call void @finch_panic(ptr @.str.340, i64 68, ptr @.str.341) - unreachable -ok570: - %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.337, i64 68) - %t50 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 - %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.cond571 -find.cond571: - %t58 = load i64, ptr %a57 - %t59 = icmp slt i64 %t58, %t55 - br i1 %t59, label %find.body572, label %find.end575 -find.body572: - %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.hit573, label %find.next574 -find.hit573: - store i64 %t58, ptr %a54 - br label %find.end575 -find.next574: - %t66 = add i64 %t58, 1 - store i64 %t66, ptr %a57 - br label %find.cond571 -find.end575: - %t67 = load i64, ptr %a54 - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then576, label %endif578 -then576: - %t69 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t69 -endif578: - call void @finch_str_drop(ptr %a51) - br label %endif564 -endif564: - store { ptr, i64, i64 } { ptr @.str.342, i64 22, i64 0 }, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic579, label %ok580 -panic579: - call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) - unreachable -ok580: - %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 %panic581, label %ok582 -panic581: - call void @finch_panic(ptr @.str.346, i64 74, ptr @.str.347) - unreachable -ok582: - %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 %panic583, label %ok584 -panic583: - call void @finch_panic(ptr @.str.348, i64 74, ptr @.str.349) - unreachable -ok584: - %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.345, 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 %then585, label %endif587 -then585: - %t95 = load { ptr, i64, i64 }, ptr %a87 - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t95 -endif587: - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } { ptr @.str.351, i64 0, i64 0 } -} - -define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { -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 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i8 %p1, ptr %a2 - %t3 = load i8, ptr %a2 - %t4 = icmp eq i8 %t3, 110 - br i1 %t4, label %then588, label %endif590 -then588: - ret i8 10 -endif590: - %t5 = load i8, ptr %a2 - %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then591, label %endif593 -then591: - ret i8 9 -endif593: - %t7 = load i8, ptr %a2 - %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then594, label %endif596 -then594: - ret i8 13 -endif596: - %t9 = load i8, ptr %a2 - %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then597, label %endif599 -then597: - %t11 = trunc i64 0 to i8 - ret i8 %t11 -endif599: - %t12 = load i8, ptr %a2 - %t13 = icmp eq i8 %t12, 92 - br label %logic.from600 -logic.from600: - br i1 %t13, label %logic.end602, label %logic.rhs601 -logic.rhs601: - %t14 = load i8, ptr %a2 - %t15 = icmp eq i8 %t14, 34 - br label %logic.rend603 -logic.rend603: - br label %logic.end602 -logic.end602: - %t16 = phi i1 [ true, %logic.from600 ], [ %t15, %logic.rend603 ] - br label %logic.from604 -logic.from604: - br i1 %t16, label %logic.end606, label %logic.rhs605 -logic.rhs605: - %t17 = load i8, ptr %a2 - %t18 = icmp eq i8 %t17, 39 - br label %logic.rend607 -logic.rend607: - br label %logic.end606 -logic.end606: - %t19 = phi i1 [ true, %logic.from604 ], [ %t18, %logic.rend607 ] - br i1 %t19, label %then608, label %endif610 -then608: - %t20 = load i8, ptr %a2 - ret i8 %t20 -endif610: - %t21 = load ptr, ptr %a1 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic611, label %ok612 -panic611: - call void @finch_panic(ptr @.str.352, i64 97, ptr @.str.353) - unreachable -ok612: - %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 %panic613, label %ok614 -panic613: - call void @finch_panic(ptr @.str.354, i64 97, ptr @.str.355) - unreachable -ok614: - %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.356, i64 16, i64 0 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load i8, ptr %a2 - ret i8 %t40 -} - -define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) { -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.drop.S_lexer_Lexer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca i8, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca i8, align 16 - %a471 = alloca i8, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca i64, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca i64, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca %S.lexer.Token, align 16 - %a593 = alloca %S.lexer.Token, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond615 -while.cond615: - %t20 = load ptr, ptr %a18 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic618, label %ok619 -panic618: - call void @finch_panic(ptr @.str.357, i64 105, ptr @.str.358) - unreachable -ok619: - %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 %panic620, label %ok621 -panic620: - call void @finch_panic(ptr @.str.359, i64 105, ptr @.str.360) - unreachable -ok621: - %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.body616, label %while.end617 -while.body616: - %t30 = load ptr, ptr %a18 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic622, label %ok623 -panic622: - call void @finch_panic(ptr @.str.361, i64 106, ptr @.str.362) - unreachable -ok623: - %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 %panic624, label %ok625 -panic624: - call void @finch_panic(ptr @.str.363, i64 106, ptr @.str.364) - unreachable -ok625: - %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 %range626, label %inrange627 -range626: - call void @finch_panic_index(ptr @.str.365, i64 106, i64 %t36, i64 %t38) - unreachable -inrange627: - %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.from628 -logic.from628: - br i1 %t45, label %logic.end630, label %logic.rhs629 -logic.rhs629: - %t46 = load i8, ptr %a43 - %t47 = icmp eq i8 %t46, 9 - br label %logic.rend631 -logic.rend631: - br label %logic.end630 -logic.end630: - %t48 = phi i1 [ true, %logic.from628 ], [ %t47, %logic.rend631 ] - br label %logic.from632 -logic.from632: - br i1 %t48, label %logic.end634, label %logic.rhs633 -logic.rhs633: - %t49 = load i8, ptr %a43 - %t50 = icmp eq i8 %t49, 10 - br label %logic.rend635 -logic.rend635: - br label %logic.end634 -logic.end634: - %t51 = phi i1 [ true, %logic.from632 ], [ %t50, %logic.rend635 ] - br label %logic.from636 -logic.from636: - br i1 %t51, label %logic.end638, label %logic.rhs637 -logic.rhs637: - %t52 = load i8, ptr %a43 - %t53 = icmp eq i8 %t52, 13 - br label %logic.rend639 -logic.rend639: - br label %logic.end638 -logic.end638: - %t54 = phi i1 [ true, %logic.from636 ], [ %t53, %logic.rend639 ] - br i1 %t54, label %then640, label %endif642 -then640: - %t55 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t55) - br label %while.cond615 -endif642: - %t56 = load i8, ptr %a43 - %t57 = icmp eq i8 %t56, 47 - br label %logic.from643 -logic.from643: - br i1 %t57, label %logic.rhs644, label %logic.end645 -logic.rhs644: - %t58 = load ptr, ptr %a18 - %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) - %t60 = icmp eq i8 %t59, 47 - br label %logic.rend646 -logic.rend646: - br label %logic.end645 -logic.end645: - %t61 = phi i1 [ false, %logic.from643 ], [ %t60, %logic.rend646 ] - br i1 %t61, label %then647, label %endif649 -then647: - br label %while.cond650 -while.cond650: - %t62 = load ptr, ptr %a18 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic653, label %ok654 -panic653: - call void @finch_panic(ptr @.str.366, i64 112, ptr @.str.367) - unreachable -ok654: - %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 %panic655, label %ok656 -panic655: - call void @finch_panic(ptr @.str.368, i64 112, ptr @.str.369) - unreachable -ok656: - %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.from657 -logic.from657: - br i1 %t71, label %logic.rhs658, label %logic.end659 -logic.rhs658: - %t72 = load ptr, ptr %a18 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic660, label %ok661 -panic660: - call void @finch_panic(ptr @.str.370, i64 112, ptr @.str.371) - unreachable -ok661: - %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 %panic662, label %ok663 -panic662: - call void @finch_panic(ptr @.str.372, i64 112, ptr @.str.373) - unreachable -ok663: - %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 %range664, label %inrange665 -range664: - call void @finch_panic_index(ptr @.str.374, i64 112, i64 %t78, i64 %t80) - unreachable -inrange665: - %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.rend666 -logic.rend666: - br label %logic.end659 -logic.end659: - %t86 = phi i1 [ false, %logic.from657 ], [ %t85, %logic.rend666 ] - br i1 %t86, label %while.body651, label %while.end652 -while.body651: - %t87 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t87) - br label %while.cond650 -while.end652: - br label %while.cond615 -endif649: - %t88 = load i8, ptr %a43 - %t89 = icmp eq i8 %t88, 47 - br label %logic.from667 -logic.from667: - br i1 %t89, label %logic.rhs668, label %logic.end669 -logic.rhs668: - %t90 = load ptr, ptr %a18 - %t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1) - %t92 = icmp eq i8 %t91, 42 - br label %logic.rend670 -logic.rend670: - br label %logic.end669 -logic.end669: - %t93 = phi i1 [ false, %logic.from667 ], [ %t92, %logic.rend670 ] - br i1 %t93, label %then671, label %endif673 -then671: - %t94 = load ptr, ptr %a18 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic674, label %ok675 -panic674: - call void @finch_panic(ptr @.str.375, i64 118, ptr @.str.376) - unreachable -ok675: - %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 %panic676, label %ok677 -panic676: - call void @finch_panic(ptr @.str.377, i64 119, ptr @.str.378) - unreachable -ok677: - %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.cond678 -while.cond678: - %t106 = load ptr, ptr %a18 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic681, label %ok682 -panic681: - call void @finch_panic(ptr @.str.379, i64 122, ptr @.str.380) - unreachable -ok682: - %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 %panic683, label %ok684 -panic683: - call void @finch_panic(ptr @.str.381, i64 122, ptr @.str.382) - unreachable -ok684: - %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.from685 -logic.from685: - br i1 %t115, label %logic.rhs686, label %logic.end687 -logic.rhs686: - %t116 = load ptr, ptr %a18 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic688, label %ok689 -panic688: - call void @finch_panic(ptr @.str.383, i64 122, ptr @.str.384) - unreachable -ok689: - %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 %panic690, label %ok691 -panic690: - call void @finch_panic(ptr @.str.385, i64 122, ptr @.str.386) - unreachable -ok691: - %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 %range692, label %inrange693 -range692: - call void @finch_panic_index(ptr @.str.387, i64 122, i64 %t122, i64 %t124) - unreachable -inrange693: - %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.from694 -logic.from694: - br i1 %t129, label %logic.rhs695, label %logic.end696 -logic.rhs695: - %t130 = load ptr, ptr %a18 - %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) - %t132 = icmp eq i8 %t131, 47 - br label %logic.rend697 -logic.rend697: - br label %logic.end696 -logic.end696: - %t133 = phi i1 [ false, %logic.from694 ], [ %t132, %logic.rend697 ] - %t134 = xor i1 %t133, true - br label %logic.rend698 -logic.rend698: - br label %logic.end687 -logic.end687: - %t135 = phi i1 [ false, %logic.from685 ], [ %t134, %logic.rend698 ] - br i1 %t135, label %while.body679, label %while.end680 -while.body679: - %t136 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t136) - br label %while.cond678 -while.end680: - %t137 = load ptr, ptr %a18 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic699, label %ok700 -panic699: - call void @finch_panic(ptr @.str.388, i64 125, ptr @.str.389) - unreachable -ok700: - %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 %panic701, label %ok702 -panic701: - call void @finch_panic(ptr @.str.390, i64 125, ptr @.str.391) - unreachable -ok702: - %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 %then703, label %endif705 -then703: - %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.392, i64 36, i64 0 }) - br label %endif705 -endif705: - %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.cond615 -endif673: - %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.393, i64 0, i64 0 }, 0 - %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.394, i64 0, i64 0 }, 1 - %t154 = load ptr, ptr %a18 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic706, label %ok707 -panic706: - call void @finch_panic(ptr @.str.395, i64 133, ptr @.str.396) - unreachable -ok707: - %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 %panic708, label %ok709 -panic708: - call void @finch_panic(ptr @.str.397, i64 133, ptr @.str.398) - unreachable -ok709: - %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 %panic710, label %ok711 -panic710: - call void @finch_panic(ptr @.str.399, i64 133, ptr @.str.400) - unreachable -ok711: - %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 %panic712, label %ok713 -panic712: - call void @finch_panic(ptr @.str.401, i64 134, ptr @.str.402) - unreachable -ok713: - %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 %panic714, label %ok715 -panic714: - call void @finch_panic(ptr @.str.403, i64 135, ptr @.str.404) - unreachable -ok715: - %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 %then716, label %else717 -then716: - br label %while.cond719 -while.cond719: - %t180 = load ptr, ptr %a18 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic722, label %ok723 -panic722: - call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) - unreachable -ok723: - %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 %panic724, label %ok725 -panic724: - call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) - unreachable -ok725: - %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.from726 -logic.from726: - br i1 %t189, label %logic.rhs727, label %logic.end728 -logic.rhs727: - %t190 = load ptr, ptr %a18 - %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic729, label %ok730 -panic729: - call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) - unreachable -ok730: - %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 %panic731, label %ok732 -panic731: - call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) - unreachable -ok732: - %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 %range733, label %inrange734 -range733: - call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t196, i64 %t198) - unreachable -inrange734: - %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.from735 -logic.from735: - br i1 %t203, label %logic.end737, label %logic.rhs736 -logic.rhs736: - %t204 = load ptr, ptr %a18 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic738, label %ok739 -panic738: - call void @finch_panic(ptr @.str.414, i64 137, ptr @.str.415) - unreachable -ok739: - %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 %panic740, label %ok741 -panic740: - call void @finch_panic(ptr @.str.416, i64 137, ptr @.str.417) - unreachable -ok741: - %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 %range742, label %inrange743 -range742: - call void @finch_panic_index(ptr @.str.418, i64 137, i64 %t210, i64 %t212) - unreachable -inrange743: - %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.rend744 -logic.rend744: - br label %logic.end737 -logic.end737: - %t218 = phi i1 [ true, %logic.from735 ], [ %t217, %logic.rend744 ] - br label %logic.rend745 -logic.rend745: - br label %logic.end728 -logic.end728: - %t219 = phi i1 [ false, %logic.from726 ], [ %t218, %logic.rend745 ] - br i1 %t219, label %while.body720, label %while.end721 -while.body720: - %t220 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t220) - br label %while.cond719 -while.end721: - %t221 = load ptr, ptr %a18 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic746, label %ok747 -panic746: - call void @finch_panic(ptr @.str.419, i64 140, ptr @.str.420) - unreachable -ok747: - %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 %panic748, label %ok749 -panic748: - call void @finch_panic(ptr @.str.422, i64 140, ptr @.str.423) - unreachable -ok749: - %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.421, i64 140) - %t232 = load { ptr, i64, i64 }, ptr %a226 - %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t232, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } { ptr @.str.424, i64 5, i64 0 }, ptr %t236 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t240) - br i1 %t241, label %then750, label %endif752 -then750: - %t242 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t243, ptr %a245 - call void @finch_str_copy(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - %t248 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t247, ptr %t244 - store { ptr, i64, i64 } %t248, ptr %a249 - call void @finch_str_drop(ptr %a249) - br label %endif752 -endif752: - br label %endif718 -else717: - %t250 = load i8, ptr %a43 - %t251 = call i1 @finch.lexer.isDigit(i8 %t250) - br i1 %t251, label %then753, label %else754 -then753: - %t252 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } { ptr @.str.425, i64 3, i64 0 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load i8, ptr %a43 - %t256 = icmp eq i8 %t255, 48 - br label %logic.from756 -logic.from756: - br i1 %t256, label %logic.rhs757, label %logic.end758 -logic.rhs757: - %t257 = load ptr, ptr %a18 - %t258 = call i8 @finch.lexer.peek(ptr %t257, i64 1) - %t259 = icmp eq i8 %t258, 120 - br label %logic.from759 -logic.from759: - br i1 %t259, label %logic.end761, label %logic.rhs760 -logic.rhs760: - %t260 = load ptr, ptr %a18 - %t261 = call i8 @finch.lexer.peek(ptr %t260, i64 1) - %t262 = icmp eq i8 %t261, 88 - br label %logic.rend762 -logic.rend762: - br label %logic.end761 -logic.end761: - %t263 = phi i1 [ true, %logic.from759 ], [ %t262, %logic.rend762 ] - br label %logic.rend763 -logic.rend763: - br label %logic.end758 -logic.end758: - %t264 = phi i1 [ false, %logic.from756 ], [ %t263, %logic.rend763 ] - br i1 %t264, label %then764, label %else765 -then764: - %t265 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t265) - %t266 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t266) - br label %while.cond767 -while.cond767: - %t267 = load ptr, ptr %a18 - %t268 = icmp eq ptr %t267, null - br i1 %t268, label %panic770, label %ok771 -panic770: - call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) - unreachable -ok771: - %t269 = getelementptr inbounds %S.lexer.Lexer, ptr %t267, i32 0, i32 2 - %t270 = load i64, ptr %t269 - %t271 = load ptr, ptr %a18 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic772, label %ok773 -panic772: - call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) - unreachable -ok773: - %t273 = getelementptr inbounds %S.lexer.Lexer, ptr %t271, i32 0, i32 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load i64, ptr %t274 - %t276 = icmp slt i64 %t270, %t275 - br label %logic.from774 -logic.from774: - br i1 %t276, label %logic.rhs775, label %logic.end776 -logic.rhs775: - %t277 = load ptr, ptr %a18 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic777, label %ok778 -panic777: - call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) - unreachable -ok778: - %t279 = getelementptr inbounds %S.lexer.Lexer, ptr %t277, i32 0, i32 0 - %t280 = load ptr, ptr %a18 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic779, label %ok780 -panic779: - call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) - unreachable -ok780: - %t282 = getelementptr inbounds %S.lexer.Lexer, ptr %t280, i32 0, i32 2 - %t283 = load i64, ptr %t282 - %t284 = load { ptr, i64, i64 }, ptr %t279 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range781, label %inrange782 -range781: - call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t283, i64 %t285) - unreachable -inrange782: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds i8, ptr %t287, i64 %t283 - %t289 = load i8, ptr %t288 - %t290 = call i1 @finch.lexer.isHex(i8 %t289) - br label %logic.from783 -logic.from783: - br i1 %t290, label %logic.end785, label %logic.rhs784 -logic.rhs784: - %t291 = load ptr, ptr %a18 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic786, label %ok787 -panic786: - call void @finch_panic(ptr @.str.435, i64 150, ptr @.str.436) - unreachable -ok787: - %t293 = getelementptr inbounds %S.lexer.Lexer, ptr %t291, i32 0, i32 0 - %t294 = load ptr, ptr %a18 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic788, label %ok789 -panic788: - call void @finch_panic(ptr @.str.437, i64 150, ptr @.str.438) - unreachable -ok789: - %t296 = getelementptr inbounds %S.lexer.Lexer, ptr %t294, i32 0, i32 2 - %t297 = load i64, ptr %t296 - %t298 = load { ptr, i64, i64 }, ptr %t293 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range790, label %inrange791 -range790: - call void @finch_panic_index(ptr @.str.439, i64 150, i64 %t297, i64 %t299) - unreachable -inrange791: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds i8, ptr %t301, i64 %t297 - %t303 = load i8, ptr %t302 - %t304 = icmp eq i8 %t303, 95 - br label %logic.rend792 -logic.rend792: - br label %logic.end785 -logic.end785: - %t305 = phi i1 [ true, %logic.from783 ], [ %t304, %logic.rend792 ] - br label %logic.rend793 -logic.rend793: - br label %logic.end776 -logic.end776: - %t306 = phi i1 [ false, %logic.from774 ], [ %t305, %logic.rend793 ] - br i1 %t306, label %while.body768, label %while.end769 -while.body768: - %t307 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t307) - br label %while.cond767 -while.end769: - br label %endif766 -else765: - br label %while.cond794 -while.cond794: - %t308 = load ptr, ptr %a18 - %t309 = icmp eq ptr %t308, null - br i1 %t309, label %panic797, label %ok798 -panic797: - call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) - unreachable -ok798: - %t310 = getelementptr inbounds %S.lexer.Lexer, ptr %t308, i32 0, i32 2 - %t311 = load i64, ptr %t310 - %t312 = load ptr, ptr %a18 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic799, label %ok800 -panic799: - call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) - unreachable -ok800: - %t314 = getelementptr inbounds %S.lexer.Lexer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = icmp slt i64 %t311, %t316 - br label %logic.from801 -logic.from801: - br i1 %t317, label %logic.rhs802, label %logic.end803 -logic.rhs802: - %t318 = load ptr, ptr %a18 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic804, label %ok805 -panic804: - call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) - unreachable -ok805: - %t320 = getelementptr inbounds %S.lexer.Lexer, ptr %t318, i32 0, i32 0 - %t321 = load ptr, ptr %a18 - %t322 = icmp eq ptr %t321, null - br i1 %t322, label %panic806, label %ok807 -panic806: - call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) - unreachable -ok807: - %t323 = getelementptr inbounds %S.lexer.Lexer, ptr %t321, i32 0, i32 2 - %t324 = load i64, ptr %t323 - %t325 = load { ptr, i64, i64 }, ptr %t320 - %t326 = extractvalue { ptr, i64, i64 } %t325, 1 - %t327 = icmp uge i64 %t324, %t326 - br i1 %t327, label %range808, label %inrange809 -range808: - call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t324, i64 %t326) - unreachable -inrange809: - %t328 = extractvalue { ptr, i64, i64 } %t325, 0 - %t329 = getelementptr inbounds i8, ptr %t328, i64 %t324 - %t330 = load i8, ptr %t329 - %t331 = call i1 @finch.lexer.isDigit(i8 %t330) - br label %logic.from810 -logic.from810: - br i1 %t331, label %logic.end812, label %logic.rhs811 -logic.rhs811: - %t332 = load ptr, ptr %a18 - %t333 = icmp eq ptr %t332, null - br i1 %t333, label %panic813, label %ok814 -panic813: - call void @finch_panic(ptr @.str.449, i64 154, ptr @.str.450) - unreachable -ok814: - %t334 = getelementptr inbounds %S.lexer.Lexer, ptr %t332, i32 0, i32 0 - %t335 = load ptr, ptr %a18 - %t336 = icmp eq ptr %t335, null - br i1 %t336, label %panic815, label %ok816 -panic815: - call void @finch_panic(ptr @.str.451, i64 154, ptr @.str.452) - unreachable -ok816: - %t337 = getelementptr inbounds %S.lexer.Lexer, ptr %t335, i32 0, i32 2 - %t338 = load i64, ptr %t337 - %t339 = load { ptr, i64, i64 }, ptr %t334 - %t340 = extractvalue { ptr, i64, i64 } %t339, 1 - %t341 = icmp uge i64 %t338, %t340 - br i1 %t341, label %range817, label %inrange818 -range817: - call void @finch_panic_index(ptr @.str.453, i64 154, i64 %t338, i64 %t340) - unreachable -inrange818: - %t342 = extractvalue { ptr, i64, i64 } %t339, 0 - %t343 = getelementptr inbounds i8, ptr %t342, i64 %t338 - %t344 = load i8, ptr %t343 - %t345 = icmp eq i8 %t344, 95 - br label %logic.rend819 -logic.rend819: - br label %logic.end812 -logic.end812: - %t346 = phi i1 [ true, %logic.from810 ], [ %t345, %logic.rend819 ] - br label %logic.rend820 -logic.rend820: - br label %logic.end803 -logic.end803: - %t347 = phi i1 [ false, %logic.from801 ], [ %t346, %logic.rend820 ] - br i1 %t347, label %while.body795, label %while.end796 -while.body795: - %t348 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t348) - br label %while.cond794 -while.end796: - %t349 = load ptr, ptr %a18 - %t350 = call i8 @finch.lexer.peek(ptr %t349, i64 0) - %t351 = icmp eq i8 %t350, 46 - br label %logic.from821 -logic.from821: - br i1 %t351, label %logic.rhs822, label %logic.end823 -logic.rhs822: - %t352 = load ptr, ptr %a18 - %t353 = call i8 @finch.lexer.peek(ptr %t352, i64 1) - %t354 = call i1 @finch.lexer.isDigit(i8 %t353) - br label %logic.rend824 -logic.rend824: - br label %logic.end823 -logic.end823: - %t355 = phi i1 [ false, %logic.from821 ], [ %t354, %logic.rend824 ] - br i1 %t355, label %then825, label %endif827 -then825: - %t356 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t357 = load { ptr, i64, i64 }, ptr %t356 - store { ptr, i64, i64 } { ptr @.str.454, i64 5, i64 0 }, ptr %t356 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_drop(ptr %a358) - %t359 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t359) - br label %while.cond828 -while.cond828: - %t360 = load ptr, ptr %a18 - %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic831, label %ok832 -panic831: - call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) - unreachable -ok832: - %t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 2 - %t363 = load i64, ptr %t362 - %t364 = load ptr, ptr %a18 - %t365 = icmp eq ptr %t364, null - br i1 %t365, label %panic833, label %ok834 -panic833: - call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) - unreachable -ok834: - %t366 = getelementptr inbounds %S.lexer.Lexer, ptr %t364, i32 0, i32 0 - %t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1 - %t368 = load i64, ptr %t367 - %t369 = icmp slt i64 %t363, %t368 - br label %logic.from835 -logic.from835: - br i1 %t369, label %logic.rhs836, label %logic.end837 -logic.rhs836: - %t370 = load ptr, ptr %a18 - %t371 = icmp eq ptr %t370, null - br i1 %t371, label %panic838, label %ok839 -panic838: - call void @finch_panic(ptr @.str.459, i64 160, ptr @.str.460) - unreachable -ok839: - %t372 = getelementptr inbounds %S.lexer.Lexer, ptr %t370, i32 0, i32 0 - %t373 = load ptr, ptr %a18 - %t374 = icmp eq ptr %t373, null - br i1 %t374, label %panic840, label %ok841 -panic840: - call void @finch_panic(ptr @.str.461, i64 160, ptr @.str.462) - unreachable -ok841: - %t375 = getelementptr inbounds %S.lexer.Lexer, ptr %t373, i32 0, i32 2 - %t376 = load i64, ptr %t375 - %t377 = load { ptr, i64, i64 }, ptr %t372 - %t378 = extractvalue { ptr, i64, i64 } %t377, 1 - %t379 = icmp uge i64 %t376, %t378 - br i1 %t379, label %range842, label %inrange843 -range842: - call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t376, i64 %t378) - unreachable -inrange843: - %t380 = extractvalue { ptr, i64, i64 } %t377, 0 - %t381 = getelementptr inbounds i8, ptr %t380, i64 %t376 - %t382 = load i8, ptr %t381 - %t383 = call i1 @finch.lexer.isDigit(i8 %t382) - br label %logic.from844 -logic.from844: - br i1 %t383, label %logic.end846, label %logic.rhs845 -logic.rhs845: - %t384 = load ptr, ptr %a18 - %t385 = icmp eq ptr %t384, null - br i1 %t385, label %panic847, label %ok848 -panic847: - call void @finch_panic(ptr @.str.464, i64 160, ptr @.str.465) - unreachable -ok848: - %t386 = getelementptr inbounds %S.lexer.Lexer, ptr %t384, i32 0, i32 0 - %t387 = load ptr, ptr %a18 - %t388 = icmp eq ptr %t387, null - br i1 %t388, label %panic849, label %ok850 -panic849: - call void @finch_panic(ptr @.str.466, i64 160, ptr @.str.467) - unreachable -ok850: - %t389 = getelementptr inbounds %S.lexer.Lexer, ptr %t387, i32 0, i32 2 - %t390 = load i64, ptr %t389 - %t391 = load { ptr, i64, i64 }, ptr %t386 - %t392 = extractvalue { ptr, i64, i64 } %t391, 1 - %t393 = icmp uge i64 %t390, %t392 - br i1 %t393, label %range851, label %inrange852 -range851: - call void @finch_panic_index(ptr @.str.468, i64 160, i64 %t390, i64 %t392) - unreachable -inrange852: - %t394 = extractvalue { ptr, i64, i64 } %t391, 0 - %t395 = getelementptr inbounds i8, ptr %t394, i64 %t390 - %t396 = load i8, ptr %t395 - %t397 = icmp eq i8 %t396, 95 - br label %logic.rend853 -logic.rend853: - br label %logic.end846 -logic.end846: - %t398 = phi i1 [ true, %logic.from844 ], [ %t397, %logic.rend853 ] - br label %logic.rend854 -logic.rend854: - br label %logic.end837 -logic.end837: - %t399 = phi i1 [ false, %logic.from835 ], [ %t398, %logic.rend854 ] - br i1 %t399, label %while.body829, label %while.end830 -while.body829: - %t400 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t400) - br label %while.cond828 -while.end830: - br label %endif827 -endif827: - br label %endif766 -endif766: - %t401 = load ptr, ptr %a18 - %t402 = icmp eq ptr %t401, null - br i1 %t402, label %panic855, label %ok856 -panic855: - call void @finch_panic(ptr @.str.469, i64 165, ptr @.str.470) - unreachable -ok856: - %t403 = getelementptr inbounds %S.lexer.Lexer, ptr %t401, i32 0, i32 0 - %t404 = load { ptr, i64, i64 }, ptr %t403 - store { ptr, i64, i64 } %t404, ptr %a405 - %t407 = load i64, ptr %a177 - %t408 = load ptr, ptr %a18 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic857, label %ok858 -panic857: - call void @finch_panic(ptr @.str.472, i64 165, ptr @.str.473) - unreachable -ok858: - %t410 = getelementptr inbounds %S.lexer.Lexer, ptr %t408, i32 0, i32 2 - %t411 = load i64, ptr %t410 - call void @finch_str_sub(ptr %a406, ptr %a405, i64 %t407, i64 %t411, ptr @.str.471, i64 165) - %t412 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.475, i64 1, i64 0 }, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.476, i64 0, i64 0 }, ptr %a416 - call void @finch_str_replace(ptr %a414, ptr %a413, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t412, ptr %a418 - call void @finch_str_drop(ptr %a418) - %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t417, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - call void @finch_str_drop(ptr %a421) - br label %endif755 -else754: - %t422 = load i8, ptr %a43 - %t423 = icmp eq i8 %t422, 34 - br label %logic.from859 -logic.from859: - br i1 %t423, label %logic.end861, label %logic.rhs860 -logic.rhs860: - %t424 = load i8, ptr %a43 - %t425 = icmp eq i8 %t424, 39 - br label %logic.rend862 -logic.rend862: - br label %logic.end861 -logic.end861: - %t426 = phi i1 [ true, %logic.from859 ], [ %t425, %logic.rend862 ] - br i1 %t426, label %then863, label %else864 -then863: - %t427 = load i8, ptr %a43 - store i8 %t427, ptr %a428 - %t429 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t430 = load { ptr, i64, i64 }, ptr %t429 - store { ptr, i64, i64 } { ptr @.str.477, i64 6, i64 0 }, ptr %t429 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load i8, ptr %a428 - %t433 = icmp eq i8 %t432, 39 - br i1 %t433, label %then866, label %endif868 -then866: - %t434 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t435 = load { ptr, i64, i64 }, ptr %t434 - store { ptr, i64, i64 } { ptr @.str.478, i64 4, i64 0 }, ptr %t434 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif868 -endif868: - %t437 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - br label %while.cond869 -while.cond869: - %t439 = load ptr, ptr %a18 - %t440 = call i8 @finch.lexer.peek(ptr %t439, i64 0) - %t441 = load i8, ptr %a428 - %t442 = icmp ne i8 %t440, %t441 - br i1 %t442, label %while.body870, label %while.end871 -while.body870: - %t443 = load ptr, ptr %a18 - %t444 = call i8 @finch.lexer.peek(ptr %t443, i64 0) - %t445 = trunc i64 0 to i8 - %t446 = icmp eq i8 %t444, %t445 - br label %logic.from872 -logic.from872: - br i1 %t446, label %logic.end874, label %logic.rhs873 -logic.rhs873: - %t447 = load ptr, ptr %a18 - %t448 = call i8 @finch.lexer.peek(ptr %t447, i64 0) - %t449 = icmp eq i8 %t448, 10 - br label %logic.rend875 -logic.rend875: - br label %logic.end874 -logic.end874: - %t450 = phi i1 [ true, %logic.from872 ], [ %t449, %logic.rend875 ] - br i1 %t450, label %then876, label %endif878 -then876: - %t451 = load i8, ptr %a428 - %t452 = icmp eq i8 %t451, 34 - br i1 %t452, label %then879, label %endif881 -then879: - %t453 = load ptr, ptr %a18 - %t454 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t455 = load i64, ptr %t454 - %t456 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t457 = load i64, ptr %t456 - call void @finch.lexer.fail(ptr %t453, i64 %t455, i64 %t457, { ptr, i64, i64 } { ptr @.str.479, i64 34, i64 0 }) - br label %endif881 -endif881: - %t458 = load ptr, ptr %a18 - %t459 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t460 = load i64, ptr %t459 - %t461 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t462 = load i64, ptr %t461 - call void @finch.lexer.fail(ptr %t458, i64 %t460, i64 %t462, { ptr, i64, i64 } { ptr @.str.480, i64 32, i64 0 }) - br label %endif878 -endif878: - %t463 = load ptr, ptr %a18 - %t464 = call i8 @finch.lexer.peek(ptr %t463, i64 0) - store i8 %t464, ptr %a465 - %t466 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t466) - %t467 = load i8, ptr %a465 - %t468 = icmp eq i8 %t467, 92 - br i1 %t468, label %then882, label %endif884 -then882: - %t469 = load ptr, ptr %a18 - %t470 = call i8 @finch.lexer.peek(ptr %t469, i64 0) - store i8 %t470, ptr %a471 - %t472 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t472) - %t473 = load ptr, ptr %a18 - %t474 = load i8, ptr %a471 - %t475 = call i8 @finch.lexer.escape(ptr %t473, i8 %t474) - store i8 %t475, ptr %a465 - br label %endif884 -endif884: - %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - %t477 = load i8, ptr %a465 - call void @finch_str_from_char(ptr %a478, i8 signext %t477) - %t479 = load { ptr, i64, i64 }, ptr %a478 - %t480 = load i64, ptr %t476 - %t481 = add i64 %t480, 1 - call void @finch_arr_reserve(ptr %a438, i64 %t481, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t482 = load ptr, ptr %a438 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i64 %t480 - store { ptr, i64, i64 } %t479, ptr %t483 - store i64 %t481, ptr %t476 - br label %while.cond869 -while.end871: - %t484 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t484) - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.481, i64 0, i64 0 }, ptr %a486 - call void @finch_str_join(ptr %a487, ptr %a438, ptr %a486) - %t488 = load { ptr, i64, i64 }, ptr %a487 - %t489 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t490 = load { ptr, i64, i64 }, ptr %t489 - store { ptr, i64, i64 } %t488, ptr %t489 - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load i8, ptr %a428 - %t493 = icmp eq i8 %t492, 39 - br label %logic.from885 -logic.from885: - br i1 %t493, label %logic.rhs886, label %logic.end887 -logic.rhs886: - %t494 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i32 0, i32 1 - %t496 = load i64, ptr %t495 - %t497 = icmp ne i64 %t496, 1 - br label %logic.rend888 -logic.rend888: - br label %logic.end887 -logic.end887: - %t498 = phi i1 [ false, %logic.from885 ], [ %t497, %logic.rend888 ] - br i1 %t498, label %then889, label %endif891 -then889: - %t499 = load ptr, ptr %a18 - %t500 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t501 = load i64, ptr %t500 - %t502 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t503 = load i64, ptr %t502 - call void @finch.lexer.fail(ptr %t499, i64 %t501, i64 %t503, { ptr, i64, i64 } { ptr @.str.482, i64 44, i64 0 }) - br label %endif891 -endif891: - call void @finch.drop.arr_str(ptr %a438) - br label %endif865 -else864: - %t504 = load ptr, ptr %a18 - %t505 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t504) - store { ptr, i64, i64 } %t505, ptr %a506 - %t507 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t508 = load i64, ptr %t507 - %t509 = icmp eq i64 %t508, 0 - br i1 %t509, label %then892, label %endif894 -then892: - store i64 1, ptr %a510 - %t511 = load i8, ptr %a43 - %t512 = zext i8 %t511 to i64 - %t513 = and i64 %t512, 224 - %t514 = icmp eq i64 %t513, 192 - br i1 %t514, label %then895, label %else896 -then895: - store i64 2, ptr %a510 - br label %endif897 -else896: - %t515 = load i8, ptr %a43 - %t516 = zext i8 %t515 to i64 - %t517 = and i64 %t516, 240 - %t518 = icmp eq i64 %t517, 224 - br i1 %t518, label %then898, label %else899 -then898: - store i64 3, ptr %a510 - br label %endif900 -else899: - %t519 = load i8, ptr %a43 - %t520 = zext i8 %t519 to i64 - %t521 = and i64 %t520, 248 - %t522 = icmp eq i64 %t521, 240 - br i1 %t522, label %then901, label %endif903 -then901: - store i64 4, ptr %a510 - br label %endif903 -endif903: - br label %endif900 -endif900: - br label %endif897 -endif897: - store { ptr, i64, i64 } { ptr @.str.483, i64 0, i64 0 }, ptr %a523 - %t524 = load i8, ptr %a43 - %t525 = zext i8 %t524 to i64 - %t526 = icmp sge i64 %t525, 128 - br i1 %t526, label %then904, label %endif906 -then904: - %t527 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.484, i64 74, i64 0 }, ptr %a523 - store { ptr, i64, i64 } %t527, ptr %a528 - call void @finch_str_drop(ptr %a528) - br label %endif906 -endif906: - %t529 = load ptr, ptr %a18 - %t530 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t531 = load i64, ptr %t530 - %t532 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t533 = load i64, ptr %t532 - %t534 = load ptr, ptr %a18 - %t535 = icmp eq ptr %t534, null - br i1 %t535, label %panic907, label %ok908 -panic907: - call void @finch_panic(ptr @.str.486, i64 211, ptr @.str.487) - unreachable -ok908: - %t536 = getelementptr inbounds %S.lexer.Lexer, ptr %t534, i32 0, i32 0 - %t537 = load { ptr, i64, i64 }, ptr %t536 - store { ptr, i64, i64 } %t537, ptr %a538 - %t540 = load ptr, ptr %a18 - %t541 = icmp eq ptr %t540, null - br i1 %t541, label %panic909, label %ok910 -panic909: - call void @finch_panic(ptr @.str.489, i64 211, ptr @.str.490) - unreachable -ok910: - %t542 = getelementptr inbounds %S.lexer.Lexer, ptr %t540, i32 0, i32 2 - %t543 = load i64, ptr %t542 - %t544 = load ptr, ptr %a18 - %t545 = icmp eq ptr %t544, null - br i1 %t545, label %panic911, label %ok912 -panic911: - call void @finch_panic(ptr @.str.491, i64 211, ptr @.str.492) - unreachable -ok912: - %t546 = getelementptr inbounds %S.lexer.Lexer, ptr %t544, i32 0, i32 2 - %t547 = load i64, ptr %t546 - %t548 = load i64, ptr %a510 - %t549 = add i64 %t547, %t548 - call void @finch_str_sub(ptr %a539, ptr %a538, i64 %t543, i64 %t549, ptr @.str.488, i64 211) - %t550 = load { ptr, i64, i64 }, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.485, i64 22, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - store { ptr, i64, i64 } %t550, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t555, ptr %a557 - store { ptr, i64, i64 } { ptr @.str.493, i64 1, i64 0 }, ptr %a558 - call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) - store { ptr, i64, i64 } %t555, ptr %a559 - call void @finch_str_drop(ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a556 - %t561 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t560, ptr %a563 - store { ptr, i64, i64 } %t561, ptr %a564 - call void @finch_str_concat(ptr %a562, ptr %a563, ptr %a564) - store { ptr, i64, i64 } %t560, ptr %a565 - call void @finch_str_drop(ptr %a565) - %t566 = load { ptr, i64, i64 }, ptr %a562 - call void @finch.lexer.fail(ptr %t529, i64 %t531, i64 %t533, { ptr, i64, i64 } %t566) - store { ptr, i64, i64 } %t566, ptr %a567 - call void @finch_str_drop(ptr %a567) - call void @finch_str_drop(ptr %a523) - br label %endif894 -endif894: - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t569 = load i64, ptr %t568 - store i64 0, ptr %a570 - br label %for.cond913 -for.cond913: - %t571 = load i64, ptr %a570 - %t572 = icmp slt i64 %t571, %t569 - br i1 %t572, label %for.body914, label %for.end916 -for.body914: - %t573 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t573) - br label %for.step915 -for.step915: - %t574 = load i64, ptr %a570 - %t575 = add i64 %t574, 1 - store i64 %t575, ptr %a570 - br label %for.cond913 -for.end916: - %t576 = load { ptr, i64, i64 }, ptr %a506 - %t577 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t576, ptr %a578 - call void @finch_str_copy(ptr %a579, ptr %a578) - %t580 = load { ptr, i64, i64 }, ptr %a579 - %t581 = load { ptr, i64, i64 }, ptr %t577 - store { ptr, i64, i64 } %t580, ptr %t577 - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a506 - %t584 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t583, ptr %a585 - call void @finch_str_copy(ptr %a586, ptr %a585) - %t587 = load { ptr, i64, i64 }, ptr %a586 - %t588 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t587, ptr %t584 - store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch_str_drop(ptr %a589) - call void @finch_str_drop(ptr %a506) - br label %endif865 -endif865: - br label %endif755 -endif755: - br label %endif718 -endif718: - %t590 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t591 = load %S.lexer.Token, ptr %a169 - store %S.lexer.Token %t591, ptr %a592 - call void @finch.copy.S_lexer_Token(ptr %a593, ptr %a592) - %t594 = load %S.lexer.Token, ptr %a593 - %t595 = load i64, ptr %t590 - %t596 = add i64 %t595, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t596, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t597 = load ptr, ptr %a19 - %t598 = getelementptr inbounds %S.lexer.Token, ptr %t597, i64 %t595 - store %S.lexer.Token %t594, ptr %t598 - store i64 %t596, ptr %t590 - call void @finch.drop.S_lexer_Token(ptr %a169) - br label %while.cond615 -while.end617: - %t599 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t600 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.494, i64 3, i64 0 }, 0 - %t601 = insertvalue %S.lexer.Token %t600, { ptr, i64, i64 } { ptr @.str.495, i64 0, i64 0 }, 1 - %t602 = load ptr, ptr %a18 - %t603 = icmp eq ptr %t602, null - br i1 %t603, label %panic917, label %ok918 -panic917: - call void @finch_panic(ptr @.str.496, i64 221, ptr @.str.497) - unreachable -ok918: - %t604 = getelementptr inbounds %S.lexer.Lexer, ptr %t602, i32 0, i32 3 - %t605 = load i64, ptr %t604 - %t606 = insertvalue %S.lexer.Token %t601, i64 %t605, 2 - %t607 = load ptr, ptr %a18 - %t608 = icmp eq ptr %t607, null - br i1 %t608, label %panic919, label %ok920 -panic919: - call void @finch_panic(ptr @.str.498, i64 221, ptr @.str.499) - unreachable -ok920: - %t609 = getelementptr inbounds %S.lexer.Lexer, ptr %t607, i32 0, i32 4 - %t610 = load i64, ptr %t609 - %t611 = insertvalue %S.lexer.Token %t606, i64 %t610, 3 - %t612 = insertvalue %S.lexer.Token %t611, i1 true, 4 - %t613 = load i64, ptr %t599 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t614, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a19 - %t616 = getelementptr inbounds %S.lexer.Token, ptr %t615, i64 %t613 - store %S.lexer.Token %t612, ptr %t616 - store i64 %t614, ptr %t599 - %t617 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.S_lexer_Lexer(ptr %a17) - ret { ptr, i64, i64 } %t617 -} - -define internal %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %p0) { -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.500, i64 5, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 - 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.501, i64 3, i64 0 }, 0 - store %S.ast.Type %t3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %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 - ret %S.ast.Type %t25 -} - -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.502, i64 3, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 %then921, label %endif923 -then921: - ret i1 false -endif923: - %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.503, i64 6, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp ne i32 %t15, 0 - br label %logic.from924 -logic.from924: - br i1 %t16, label %logic.end926, label %logic.rhs925 -logic.rhs925: - %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.504, i64 5, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br label %logic.rend927 -logic.rend927: - br label %logic.end926 -logic.end926: - %t23 = phi i1 [ true, %logic.from924 ], [ %t22, %logic.rend927 ] - br label %logic.from928 -logic.from928: - br i1 %t23, label %logic.end930, label %logic.rhs929 -logic.rhs929: - %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.505, i64 4, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br label %logic.rend931 -logic.rend931: - br label %logic.end930 -logic.end930: - %t30 = phi i1 [ true, %logic.from928 ], [ %t29, %logic.rend931 ] - br i1 %t30, label %then932, label %endif934 -then932: - %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.from935 -logic.from935: - br i1 %t38, label %logic.rhs936, label %logic.end937 -logic.rhs936: - %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.rend938 -logic.rend938: - br label %logic.end937 -logic.end937: - %t47 = phi i1 [ false, %logic.from935 ], [ %t46, %logic.rend938 ] - ret i1 %t47 -endif934: - %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.506, i64 5, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br label %logic.from939 -logic.from939: - br i1 %t53, label %logic.rhs940, label %logic.end941 -logic.rhs940: - %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.rend942 -logic.rend942: - br label %logic.end941 -logic.end941: - %t59 = phi i1 [ false, %logic.from939 ], [ %t58, %logic.rend942 ] - br i1 %t59, label %then943, label %endif945 -then943: - ret i1 false -endif945: - %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.507, i64 5, i64 0 }, ptr %a63 - %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) - %t65 = icmp ne i32 %t64, 0 - br label %logic.from946 -logic.from946: - br i1 %t65, label %logic.end948, label %logic.rhs947 -logic.rhs947: - %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.508, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br label %logic.rend949 -logic.rend949: - br label %logic.end948 -logic.end948: - %t72 = phi i1 [ true, %logic.from946 ], [ %t71, %logic.rend949 ] - br label %logic.from950 -logic.from950: - br i1 %t72, label %logic.end952, label %logic.rhs951 -logic.rhs951: - %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.509, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br label %logic.rend953 -logic.rend953: - br label %logic.end952 -logic.end952: - %t79 = phi i1 [ true, %logic.from950 ], [ %t78, %logic.rend953 ] - br label %logic.from954 -logic.from954: - br i1 %t79, label %logic.end956, label %logic.rhs955 -logic.rhs955: - %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.510, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.rend957 -logic.rend957: - br label %logic.end956 -logic.end956: - %t86 = phi i1 [ true, %logic.from954 ], [ %t85, %logic.rend957 ] - br i1 %t86, label %then958, label %endif960 -then958: - %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 %then961, label %endif963 -then961: - ret i1 false -endif963: - %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.cond964 -for.cond964: - %t98 = load i64, ptr %a97 - %t99 = icmp slt i64 %t98, %t96 - br i1 %t99, label %for.body965, label %for.end967 -for.body965: - %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 %range968, label %inrange969 -range968: - call void @finch_panic_index(ptr @.str.511, i64 54, i64 %t101, i64 %t103) - unreachable -inrange969: - %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 %range970, label %inrange971 -range970: - call void @finch_panic_index(ptr @.str.512, i64 54, i64 %t109, i64 %t111) - unreachable -inrange971: - %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 %then972, label %endif974 -then972: - ret i1 false -endif974: - br label %for.step966 -for.step966: - %t118 = load i64, ptr %a97 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %a97 - br label %for.cond964 -for.end967: - ret i1 true -endif960: - 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 - %a19 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.513, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then975, label %endif977 -then975: - %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 %range978, label %inrange979 -range978: - call void @finch_panic_index(ptr @.str.515, i64 65, i64 0, i64 %t10) - unreachable -inrange979: - %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.514, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif977: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.516, i64 5, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %then980, label %endif982 -then980: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.517, i64 1, i64 0 }, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.518, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 0, %t43 - br i1 %t44, label %range983, label %inrange984 -range983: - call void @finch_panic_index(ptr @.str.519, i64 68, i64 0, i64 %t43) - unreachable -inrange984: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 - %t47 = load %S.ast.Type, ptr %t46 - %t48 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t47) - store { ptr, i64, i64 } %t40, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t40, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - ret { ptr, i64, i64 } %t54 -endif982: - %t55 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.520, i64 3, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then985, label %endif987 -then985: - %t61 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 0, %t63 - br i1 %t64, label %range988, label %inrange989 -range988: - call void @finch_panic_index(ptr @.str.522, i64 71, i64 0, i64 %t63) - unreachable -inrange989: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds %S.ast.Type, ptr %t65, i64 0 - %t67 = load %S.ast.Type, ptr %t66 - %t68 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.521, i64 4, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.523, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = extractvalue { ptr, i64, i64 } %t80, 1 - %t82 = icmp uge i64 1, %t81 - br i1 %t82, label %range990, label %inrange991 -range990: - call void @finch_panic_index(ptr @.str.524, i64 71, i64 1, i64 %t81) - unreachable -inrange991: - %t83 = extractvalue { ptr, i64, i64 } %t80, 0 - %t84 = getelementptr inbounds %S.ast.Type, ptr %t83, i64 1 - %t85 = load %S.ast.Type, ptr %t84 - %t86 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t85) - store { ptr, i64, i64 } %t78, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t78, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - ret { ptr, i64, i64 } %t92 -endif987: - %t93 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.525, i64 3, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then992, label %endif994 -then992: - %t99 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = icmp eq i64 %t101, 0 - br i1 %t102, label %then995, label %endif997 -then995: - ret { ptr, i64, i64 } { ptr @.str.526, i64 3, i64 0 } -endif997: - %t103 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %t103 - %t105 = extractvalue { ptr, i64, i64 } %t104, 1 - %t106 = icmp uge i64 0, %t105 - br i1 %t106, label %range998, label %inrange999 -range998: - call void @finch_panic_index(ptr @.str.528, i64 77, i64 0, i64 %t105) - unreachable -inrange999: - %t107 = extractvalue { ptr, i64, i64 } %t104, 0 - %t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i64 0 - %t109 = load %S.ast.Type, ptr %t108 - %t110 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t109) - store { ptr, i64, i64 } { ptr @.str.527, i64 4, i64 0 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t120 -endif994: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t122, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.530, i64 6, i64 0 }, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.from1000 -logic.from1000: - br i1 %t126, label %logic.end1002, label %logic.rhs1001 -logic.rhs1001: - %t127 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.531, i64 5, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend1003 -logic.rend1003: - br label %logic.end1002 -logic.end1002: - %t133 = phi i1 [ true, %logic.from1000 ], [ %t132, %logic.rend1003 ] - br label %logic.from1004 -logic.from1004: - br i1 %t133, label %logic.end1006, label %logic.rhs1005 -logic.rhs1005: - %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.532, i64 4, i64 0 }, ptr %a137 - %t138 = call i32 @finch_str_eq(ptr %a136, ptr %a137) - %t139 = icmp ne i32 %t138, 0 - br label %logic.rend1007 -logic.rend1007: - br label %logic.end1006 -logic.end1006: - %t140 = phi i1 [ true, %logic.from1004 ], [ %t139, %logic.rend1007 ] - br i1 %t140, label %then1008, label %endif1010 -then1008: - %t141 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = icmp sgt i64 %t143, 0 - br i1 %t144, label %then1011, label %endif1013 -then1011: - %t145 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t146 = load { ptr, i64, i64 }, ptr %t145 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.533, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a147 - %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t150, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t150, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - ret { ptr, i64, i64 } %t157 -endif1013: - %t158 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - call void @finch_str_copy(ptr %a161, ptr %a160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - ret { ptr, i64, i64 } %t162 -endif1010: - %t163 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t164 = load { ptr, i64, i64 }, ptr %t163 - store { ptr, i64, i64 } %t164, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.534, i64 4, i64 0 }, ptr %a166 - %t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166) - %t168 = icmp ne i32 %t167, 0 - br i1 %t168, label %then1014, label %endif1016 -then1014: - ret { ptr, i64, i64 } { ptr @.str.535, i64 7, i64 0 } -endif1016: - %t169 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - ret { ptr, i64, i64 } %t173 -} - -define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.lexer.Token %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1017, label %ok1018 -panic1017: - call void @finch_panic(ptr @.str.536, i64 14, ptr @.str.537) - unreachable -ok1018: - %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.538, i64 1, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a8 - %t12 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 2 - %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) - store { ptr, i64, i64 } %t11, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.539, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t26, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t26, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.540, i64 9, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t41, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = trunc i64 %t48 to i32 - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = icmp eq ptr %t50, null - %t52 = select i1 %t51, ptr @.str.541, ptr %t50 - %t53 = call i32 (ptr, ...) @printf(ptr @.str.542, i32 %t49, ptr %t52) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = call i32 (ptr, ...) @printf(ptr @.str.543) - %t56 = trunc i64 1 to i32 - %t57 = call i32 @fflush(ptr null) - call void @exit(i32 %t56) - ret void -} - -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 %panic1019, label %ok1020 -panic1019: - call void @finch_panic(ptr @.str.544, i64 19, ptr @.str.545) - unreachable -ok1020: - %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 %panic1021, label %ok1022 -panic1021: - call void @finch_panic(ptr @.str.546, i64 19, ptr @.str.547) - unreachable -ok1022: - %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 %range1023, label %inrange1024 -range1023: - call void @finch_panic_index(ptr @.str.548, i64 19, i64 %t8, i64 %t10) - unreachable -inrange1024: - %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 %panic1025, label %ok1026 -panic1025: - call void @finch_panic(ptr @.str.549, i64 23, ptr @.str.550) - unreachable -ok1026: - %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 %panic1027, label %ok1028 -panic1027: - call void @finch_panic(ptr @.str.551, i64 23, ptr @.str.552) - unreachable -ok1028: - %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 %range1029, label %inrange1030 -range1029: - call void @finch_panic_index(ptr @.str.553, i64 23, i64 %t8, i64 %t10) - unreachable -inrange1030: - %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 %panic1031, label %ok1032 -panic1031: - call void @finch_panic(ptr @.str.554, i64 27, ptr @.str.555) - unreachable -ok1032: - %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 %panic1033, label %ok1034 -panic1033: - call void @finch_panic(ptr @.str.556, i64 28, ptr @.str.557) - unreachable -ok1034: - %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 %then1035, label %endif1037 -then1035: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic1038, label %ok1039 -panic1038: - call void @finch_panic(ptr @.str.558, i64 29, ptr @.str.559) - unreachable -ok1039: - %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 %endif1037 -endif1037: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic1040, label %ok1041 -panic1040: - call void @finch_panic(ptr @.str.560, i64 31, ptr @.str.561) - unreachable -ok1041: - %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 %range1042, label %inrange1043 -range1042: - call void @finch_panic_index(ptr @.str.562, i64 31, i64 %t26, i64 %t28) - unreachable -inrange1043: - %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 %panic1044, label %ok1045 -panic1044: - call void @finch_panic(ptr @.str.563, i64 35, ptr @.str.564) - unreachable -ok1045: - %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 %panic1046, label %ok1047 -panic1046: - call void @finch_panic(ptr @.str.565, i64 35, ptr @.str.566) - unreachable -ok1047: - %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 %range1048, label %inrange1049 -range1048: - call void @finch_panic_index(ptr @.str.567, i64 35, i64 %t9, i64 %t11) - unreachable -inrange1049: - %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 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1050, label %ok1051 -panic1050: - call void @finch_panic(ptr @.str.568, i64 39, ptr @.str.569) - unreachable -ok1051: - %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 %panic1052, label %ok1053 -panic1052: - call void @finch_panic(ptr @.str.570, i64 39, ptr @.str.571) - unreachable -ok1053: - %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 %range1054, label %inrange1055 -range1054: - call void @finch_panic_index(ptr @.str.572, i64 39, i64 %t8, i64 %t10) - unreachable -inrange1055: - %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 %panic1056, label %ok1057 -panic1056: - call void @finch_panic(ptr @.str.573, i64 40, ptr @.str.574) - unreachable -ok1057: - %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 - ret %S.lexer.Token %t24 -} - -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 %then1058, label %endif1060 -then1058: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1061, label %ok1062 -panic1061: - call void @finch_panic(ptr @.str.575, i64 46, ptr @.str.576) - unreachable -ok1062: - %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 -endif1060: - 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 - %a17 = 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 - %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 - %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 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - store %S.lexer.Token %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.577, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then1063, label %endif1065 -then1063: - %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.578, i64 1, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.579, i64 1, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - ret { ptr, i64, i64 } %t18 -endif1065: - %t19 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.580, i64 3, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br i1 %t24, label %then1066, label %endif1068 -then1066: - ret { ptr, i64, i64 } { ptr @.str.581, i64 11, i64 0 } -endif1068: - %t25 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.582, i64 3, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - br label %logic.from1069 -logic.from1069: - br i1 %t30, label %logic.end1071, label %logic.rhs1070 -logic.rhs1070: - %t31 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.583, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.rend1072 -logic.rend1072: - br label %logic.end1071 -logic.end1071: - %t37 = phi i1 [ true, %logic.from1069 ], [ %t36, %logic.rend1072 ] - br i1 %t37, label %then1073, label %endif1075 -then1073: - ret { ptr, i64, i64 } { ptr @.str.584, i64 8, i64 0 } -endif1075: - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t39 = load { ptr, i64, i64 }, ptr %t38 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.585, i64 6, i64 0 }, ptr %a41 - %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) - %t43 = icmp ne i32 %t42, 0 - br i1 %t43, label %then1076, label %endif1078 -then1076: - ret { ptr, i64, i64 } { ptr @.str.586, i64 8, i64 0 } -endif1078: - %t44 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.587, i64 4, i64 0 }, ptr %a47 - %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - br i1 %t49, label %then1079, label %endif1081 -then1079: - ret { ptr, i64, i64 } { ptr @.str.588, i64 6, i64 0 } -endif1081: - %t50 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t51 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } { ptr @.str.589, i64 1, i64 0 }, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.590, i64 1, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - ret { ptr, i64, i64 } %t60 -} - -define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then1082, label %endif1084 -then1082: - %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.591, i64 9, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.592, i64 8, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21) - %t23 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t22) - store %S.lexer.Token %t22, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a26 - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t20, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t23, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t10, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1084 -endif1084: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - ret %S.lexer.Token %t34 -} - -define internal i1 @finch.parser.sameLine(ptr %p0) { -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 %panic1085, label %ok1086 -panic1085: - call void @finch_panic(ptr @.str.593, i64 79, ptr @.str.594) - unreachable -ok1086: - %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.from1087 -logic.from1087: - br i1 %t6, label %logic.end1089, label %logic.rhs1088 -logic.rhs1088: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1090, label %ok1091 -panic1090: - call void @finch_panic(ptr @.str.595, i64 79, ptr @.str.596) - unreachable -ok1091: - %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 %panic1092, label %ok1093 -panic1092: - call void @finch_panic(ptr @.str.597, i64 79, ptr @.str.598) - unreachable -ok1093: - %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 %range1094, label %inrange1095 -range1094: - call void @finch_panic_index(ptr @.str.599, i64 79, i64 %t13, i64 %t15) - unreachable -inrange1095: - %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.rend1096 -logic.rend1096: - br label %logic.end1089 -logic.end1089: - %t22 = phi i1 [ true, %logic.from1087 ], [ %t21, %logic.rend1096 ] - 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 %panic1097, label %ok1098 -panic1097: - call void @finch_panic(ptr @.str.600, i64 83, ptr @.str.601) - unreachable -ok1098: - %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 %panic1099, label %ok1100 -panic1099: - call void @finch_panic(ptr @.str.602, i64 83, ptr @.str.603) - unreachable -ok1100: - %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 %range1101, label %inrange1102 -range1101: - call void @finch_panic_index(ptr @.str.604, i64 83, i64 %t9, i64 %t11) - unreachable -inrange1102: - %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 %panic1103, label %ok1104 -panic1103: - call void @finch_panic(ptr @.str.605, i64 84, ptr @.str.606) - unreachable -ok1104: - %t33 = getelementptr inbounds %S.parser.Parser, ptr %t31, i32 0, i32 3 - %t34 = load i64, ptr %t33 - %t35 = insertvalue %S.ast.Node %t30, i64 %t34, 13 - call void @finch.drop.S_lexer_Token(ptr %a19) - ret %S.ast.Node %t35 -} - -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.607, i64 3, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.608, i64 5, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.609, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.610, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.613, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.614, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.615, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.616, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.617, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.618, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.619, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.620, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.621, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.622, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - 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.cond1105 -find.cond1105: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body1106, label %find.end1109 -find.body1106: - %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.hit1107, label %find.next1108 -find.hit1107: - store i64 %t30, ptr %a26 - br label %find.end1109 -find.next1108: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond1105 -find.end1109: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - call void @finch.drop.arr_str(ptr %a23) - ret i1 %t40 -} - -define internal %S.ast.Type @finch.parser.parseType(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.lexer.Token, align 16 - %a10 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.lexer.Token, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a77 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.lexer.Token, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca %S.lexer.Token, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca %S.lexer.Token, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca %S.lexer.Token, align 16 - %a165 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.623, i64 1, i64 0 }) - br i1 %t3, label %then1110, label %endif1112 -then1110: - %t4 = load ptr, ptr %a1 - %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.624, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.625, i64 36, i64 0 }) - store %S.lexer.Token %t5, ptr %a6 - call void @finch.drop.S_lexer_Token(ptr %a6) - %t7 = load ptr, ptr %a1 - %t8 = call %S.ast.Type @finch.parser.parseType(ptr %t7) - %t9 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t8) - store %S.ast.Type %t8, ptr %a10 - call void @finch.drop.S_ast_Type(ptr %a10) - ret %S.ast.Type %t9 -endif1112: - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.626, i64 5, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1113, label %endif1115 -then1113: - %t14 = load ptr, ptr %a1 - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.cur(ptr %t15) - %t17 = load ptr, ptr %a1 - %t18 = call %S.lexer.Token @finch.parser.cur(ptr %t17) - %t19 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t18) - store %S.lexer.Token %t18, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - store { ptr, i64, i64 } { ptr @.str.627, i64 11, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.628, i64 56, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.parser.fail(ptr %t14, %S.lexer.Token %t16, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t16, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1115 -endif1115: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.629, i64 3, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br label %logic.from1116 -logic.from1116: - br i1 %t45, label %logic.rhs1117, label %logic.end1118 -logic.rhs1117: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }) - br label %logic.rend1119 -logic.rend1119: - br label %logic.end1118 -logic.end1118: - %t48 = phi i1 [ false, %logic.from1116 ], [ %t47, %logic.rend1119 ] - br i1 %t48, label %then1120, label %endif1122 -then1120: - %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) - store %S.lexer.Token %t50, ptr %a51 - call void @finch.drop.S_lexer_Token(ptr %a51) - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - store %S.ast.Type %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.expect(ptr %t55, { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.632, i64 39, i64 0 }) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = load %S.ast.Type, ptr %a54 - %t59 = load ptr, ptr %a1 - %t60 = call %S.ast.Type @finch.parser.parseType(ptr %t59) - %t61 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t58, %S.ast.Type %t60) - store %S.ast.Type %t60, ptr %a62 - call void @finch.drop.S_ast_Type(ptr %a62) - call void @finch.drop.S_ast_Type(ptr %a54) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t61 -endif1122: - %t63 = load { ptr, i64, i64 }, ptr %a40 - %t64 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t63) - br i1 %t64, label %then1123, label %endif1125 -then1123: - %t65 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.633, i64 3, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.from1126 -logic.from1126: - br i1 %t69, label %logic.rhs1127, label %logic.end1128 -logic.rhs1127: - %t70 = load ptr, ptr %a1 - %t71 = call i1 @finch.parser.accept(ptr %t70, { ptr, i64, i64 } { ptr @.str.634, i64 1, i64 0 }) - br label %logic.rend1129 -logic.rend1129: - br label %logic.end1128 -logic.end1128: - %t72 = phi i1 [ false, %logic.from1126 ], [ %t71, %logic.rend1129 ] - br i1 %t72, label %then1130, label %endif1132 -then1130: - %t73 = load ptr, ptr %a1 - %t74 = call %S.ast.Type @finch.parser.parseType(ptr %t73) - %t75 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t74) - store %S.ast.Type %t74, ptr %a76 - call void @finch.drop.S_ast_Type(ptr %a76) - store %S.ast.Type %t75, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.expect(ptr %t78, { ptr, i64, i64 } { ptr @.str.635, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.636, i64 3, i64 0 }) - store %S.lexer.Token %t79, ptr %a80 - call void @finch.drop.S_lexer_Token(ptr %a80) - %t81 = load %S.ast.Type, ptr %a77 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t81 -endif1132: - %t82 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.637, i64 3, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then1133, label %endif1135 -then1133: - %t87 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.638, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t87 -endif1135: - %t88 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.639, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then1136, label %endif1138 -then1136: - %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t93 -endif1138: - %t94 = load { ptr, i64, i64 }, ptr %a40 - %t95 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t94) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t95 -endif1125: - %t96 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.641, i64 5, i64 0 }, 0 - %t97 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = insertvalue %S.ast.Type %t96, { ptr, i64, i64 } %t100, 2 - store %S.ast.Type %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.at(ptr %t103, { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }) - br label %logic.from1139 -logic.from1139: - br i1 %t104, label %logic.rhs1140, label %logic.end1141 -logic.rhs1140: - %t105 = load ptr, ptr %a1 - %t106 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t105, i64 1) - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.643, i64 5, i64 0 }, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - br label %logic.rend1142 -logic.rend1142: - br label %logic.end1141 -logic.end1141: - %t112 = phi i1 [ false, %logic.from1139 ], [ %t110, %logic.rend1142 ] - br i1 %t112, label %then1143, label %endif1145 -then1143: - %t113 = load ptr, ptr %a1 - %t114 = call %S.lexer.Token @finch.parser.next(ptr %t113) - store %S.lexer.Token %t114, ptr %a115 - call void @finch.drop.S_lexer_Token(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a40 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 3 - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t120, ptr %t117 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load ptr, ptr %a1 - %t124 = call %S.lexer.Token @finch.parser.next(ptr %t123) - %t125 = extractvalue %S.lexer.Token %t124, 1 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - store %S.lexer.Token %t124, ptr %a129 - call void @finch.drop.S_lexer_Token(ptr %a129) - %t130 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t128, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %endif1145 -endif1145: - %t133 = load ptr, ptr %a1 - %t134 = call i1 @finch.parser.at(ptr %t133, { ptr, i64, i64 } { ptr @.str.644, i64 1, i64 0 }) - br label %logic.from1146 -logic.from1146: - br i1 %t134, label %logic.rhs1147, label %logic.end1148 -logic.rhs1147: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1149 -logic.rend1149: - br label %logic.end1148 -logic.end1148: - %t140 = phi i1 [ false, %logic.from1146 ], [ %t139, %logic.rend1149 ] - br label %logic.from1150 -logic.from1150: - br i1 %t140, label %logic.rhs1151, label %logic.end1152 -logic.rhs1151: - %t141 = load ptr, ptr %a1 - %t142 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t141, i64 1) - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.645, i64 1, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) - %t146 = icmp eq i32 %t145, 0 - store { ptr, i64, i64 } %t142, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %logic.rend1153 -logic.rend1153: - br label %logic.end1152 -logic.end1152: - %t148 = phi i1 [ false, %logic.from1150 ], [ %t146, %logic.rend1153 ] - br i1 %t148, label %then1154, label %endif1156 -then1154: - %t149 = load ptr, ptr %a1 - %t150 = call %S.lexer.Token @finch.parser.next(ptr %t149) - store %S.lexer.Token %t150, ptr %a151 - call void @finch.drop.S_lexer_Token(ptr %a151) - br label %while.cond1157 -while.cond1157: - br label %while.body1158 -while.body1158: - %t152 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 1 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 - %t154 = load ptr, ptr %a1 - %t155 = call %S.ast.Type @finch.parser.parseType(ptr %t154) - %t156 = load i64, ptr %t153 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t152, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t152 - %t159 = getelementptr inbounds %S.ast.Type, ptr %t158, i64 %t156 - store %S.ast.Type %t155, ptr %t159 - store i64 %t157, ptr %t153 - %t160 = load ptr, ptr %a1 - %t161 = call i1 @finch.parser.accept(ptr %t160, { ptr, i64, i64 } { ptr @.str.646, i64 1, i64 0 }) - %t162 = xor i1 %t161, true - br i1 %t162, label %then1160, label %endif1162 -then1160: - br label %while.end1159 -endif1162: - br label %while.cond1157 -while.end1159: - %t163 = load ptr, ptr %a1 - %t164 = call %S.lexer.Token @finch.parser.expect(ptr %t163, { ptr, i64, i64 } { ptr @.str.647, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.648, i64 28, i64 0 }) - store %S.lexer.Token %t164, ptr %a165 - call void @finch.drop.S_lexer_Token(ptr %a165) - br label %endif1156 -endif1156: - %t166 = load %S.ast.Type, ptr %a102 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t166 -} - -define internal i1 @finch.parser.genericDeclAhead(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a27 = alloca i64, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.649, i64 5, i64 0 }) - %t4 = xor i1 %t3, true - br label %logic.from1163 -logic.from1163: - br i1 %t4, label %logic.end1165, label %logic.rhs1164 -logic.rhs1164: - %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.650, i64 1, i64 0 }, ptr %a8 - %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) - %t10 = icmp eq i32 %t9, 0 - store { ptr, i64, i64 } %t6, ptr %a11 - call void @finch_str_drop(ptr %a11) - br label %logic.rend1166 -logic.rend1166: - br label %logic.end1165 -logic.end1165: - %t12 = phi i1 [ true, %logic.from1163 ], [ %t10, %logic.rend1166 ] - br label %logic.from1167 -logic.from1167: - br i1 %t12, label %logic.end1169, label %logic.rhs1168 -logic.rhs1168: - %t13 = load ptr, ptr %a1 - %t14 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t13, i64 2) - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.651, i64 1, i64 0 }, ptr %a16 - %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) - %t18 = icmp ne i32 %t17, 0 - store { ptr, i64, i64 } %t14, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %logic.rend1170 -logic.rend1170: - br label %logic.end1169 -logic.end1169: - %t20 = phi i1 [ true, %logic.from1167 ], [ %t18, %logic.rend1170 ] - br i1 %t20, label %then1171, label %endif1173 -then1171: - ret i1 false -endif1173: - store i64 0, ptr %a21 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1174, label %ok1175 -panic1174: - call void @finch_panic(ptr @.str.652, i64 148, ptr @.str.653) - unreachable -ok1175: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a27 - br label %while.cond1176 -while.cond1176: - %t28 = load i64, ptr %a27 - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic1179, label %ok1180 -panic1179: - call void @finch_panic(ptr @.str.654, i64 149, ptr @.str.655) - unreachable -ok1180: - %t31 = getelementptr inbounds %S.parser.Parser, ptr %t29, i32 0, i32 0 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = icmp slt i64 %t28, %t33 - br i1 %t34, label %while.body1177, label %while.end1178 -while.body1177: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1181, label %ok1182 -panic1181: - call void @finch_panic(ptr @.str.656, i64 150, ptr @.str.657) - unreachable -ok1182: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 0 - %t38 = load i64, ptr %a27 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range1183, label %inrange1184 -range1183: - call void @finch_panic_index(ptr @.str.658, i64 150, i64 %t38, i64 %t40) - unreachable -inrange1184: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds %S.lexer.Token, ptr %t42, i64 %t38 - %t44 = getelementptr inbounds %S.lexer.Token, ptr %t43, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_copy(ptr %a47, ptr %a46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t48, ptr %a49 - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.659, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1185, label %else1186 -then1185: - %t55 = load i64, ptr %a21 - %t56 = add i64 %t55, 1 - store i64 %t56, ptr %a21 - br label %endif1187 -else1186: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.660, i64 1, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br i1 %t61, label %then1188, label %else1189 -then1188: - %t62 = load i64, ptr %a21 - %t63 = sub i64 %t62, 1 - store i64 %t63, ptr %a21 - %t64 = load i64, ptr %a21 - %t65 = icmp eq i64 %t64, 0 - br i1 %t65, label %then1191, label %endif1193 -then1191: - %t66 = load i64, ptr %a27 - %t67 = add i64 %t66, 1 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic1194, label %ok1195 -panic1194: - call void @finch_panic(ptr @.str.661, i64 156, ptr @.str.662) - unreachable -ok1195: - %t70 = getelementptr inbounds %S.parser.Parser, ptr %t68, i32 0, i32 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = icmp slt i64 %t67, %t72 - br label %logic.from1196 -logic.from1196: - br i1 %t73, label %logic.rhs1197, label %logic.end1198 -logic.rhs1197: - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic1199, label %ok1200 -panic1199: - call void @finch_panic(ptr @.str.663, i64 156, ptr @.str.664) - unreachable -ok1200: - %t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 0 - %t77 = load i64, ptr %a27 - %t78 = add i64 %t77, 1 - %t79 = load { ptr, i64, i64 }, ptr %t76 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range1201, label %inrange1202 -range1201: - call void @finch_panic_index(ptr @.str.665, i64 156, i64 %t78, i64 %t80) - unreachable -inrange1202: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds %S.lexer.Token, ptr %t82, i64 %t78 - %t84 = getelementptr inbounds %S.lexer.Token, ptr %t83, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.666, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.rend1203 -logic.rend1203: - br label %logic.end1198 -logic.end1198: - %t90 = phi i1 [ false, %logic.from1196 ], [ %t89, %logic.rend1203 ] - br label %logic.from1204 -logic.from1204: - br i1 %t90, label %logic.rhs1205, label %logic.end1206 -logic.rhs1205: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic1207, label %ok1208 -panic1207: - call void @finch_panic(ptr @.str.667, i64 156, ptr @.str.668) - unreachable -ok1208: - %t93 = getelementptr inbounds %S.parser.Parser, ptr %t91, i32 0, i32 0 - %t94 = load i64, ptr %a27 - %t95 = add i64 %t94, 1 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range1209, label %inrange1210 -range1209: - call void @finch_panic_index(ptr @.str.669, i64 156, i64 %t95, i64 %t97) - unreachable -inrange1210: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds %S.lexer.Token, ptr %t99, i64 %t95 - %t101 = getelementptr inbounds %S.lexer.Token, ptr %t100, i32 0, i32 4 - %t102 = load i1, ptr %t101 - %t103 = xor i1 %t102, true - br label %logic.rend1211 -logic.rend1211: - br label %logic.end1206 -logic.end1206: - %t104 = phi i1 [ false, %logic.from1204 ], [ %t103, %logic.rend1211 ] - call void @finch_str_drop(ptr %a49) - ret i1 %t104 -endif1193: - br label %endif1190 -else1189: - %t105 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.670, i64 3, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.from1212 -logic.from1212: - br i1 %t109, label %logic.end1214, label %logic.rhs1213 -logic.rhs1213: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic1215, label %ok1216 -panic1215: - call void @finch_panic(ptr @.str.671, i64 158, ptr @.str.672) - unreachable -ok1216: - %t112 = getelementptr inbounds %S.parser.Parser, ptr %t110, i32 0, i32 0 - %t113 = load i64, ptr %a27 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range1217, label %inrange1218 -range1217: - call void @finch_panic_index(ptr @.str.673, i64 158, i64 %t113, i64 %t115) - unreachable -inrange1218: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.lexer.Token, ptr %t117, i64 %t113 - %t119 = getelementptr inbounds %S.lexer.Token, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.from1219 -logic.from1219: - br i1 %t120, label %logic.rhs1220, label %logic.end1221 -logic.rhs1220: - %t121 = load i64, ptr %a21 - %t122 = icmp eq i64 %t121, 0 - br label %logic.rend1222 -logic.rend1222: - br label %logic.end1221 -logic.end1221: - %t123 = phi i1 [ false, %logic.from1219 ], [ %t122, %logic.rend1222 ] - br label %logic.rend1223 -logic.rend1223: - br label %logic.end1214 -logic.end1214: - %t124 = phi i1 [ true, %logic.from1212 ], [ %t123, %logic.rend1223 ] - br i1 %t124, label %then1224, label %endif1226 -then1224: - call void @finch_str_drop(ptr %a49) - ret i1 false -endif1226: - br label %endif1190 -endif1190: - br label %endif1187 -endif1187: - %t125 = load i64, ptr %a27 - %t126 = add i64 %t125, 1 - store i64 %t126, ptr %a27 - call void @finch_str_drop(ptr %a49) - br label %while.cond1176 -while.end1178: - 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 %panic1227, label %ok1228 -panic1227: - call void @finch_panic(ptr @.str.674, i64 168, ptr @.str.675) - unreachable -ok1228: - %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 %panic1229, label %ok1230 -panic1229: - call void @finch_panic(ptr @.str.676, i64 170, ptr @.str.677) - unreachable -ok1230: - %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 - %a8 = 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 i64, align 16 - %a39 = alloca i64, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t2, i64 1) - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.678, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp eq i32 %t6, 0 - store { ptr, i64, i64 } %t3, ptr %a8 - call void @finch_str_drop(ptr %a8) - br label %logic.from1231 -logic.from1231: - br i1 %t7, label %logic.end1233, label %logic.rhs1232 -logic.rhs1232: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic1234, label %ok1235 -panic1234: - call void @finch_panic(ptr @.str.679, i64 176, ptr @.str.680) - unreachable -ok1235: - %t11 = getelementptr inbounds %S.parser.Parser, ptr %t9, i32 0, i32 0 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic1236, label %ok1237 -panic1236: - call void @finch_panic(ptr @.str.681, i64 176, ptr @.str.682) - unreachable -ok1237: - %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 1 - %t15 = load i64, ptr %t14 - %t16 = add i64 %t15, 1 - %t17 = load { ptr, i64, i64 }, ptr %t11 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range1238, label %inrange1239 -range1238: - call void @finch_panic_index(ptr @.str.683, i64 176, i64 %t16, i64 %t18) - unreachable -inrange1239: - %t20 = extractvalue { ptr, i64, i64 } %t17, 0 - %t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i64 %t16 - %t22 = getelementptr inbounds %S.lexer.Token, ptr %t21, i32 0, i32 4 - %t23 = load i1, ptr %t22 - br label %logic.rend1240 -logic.rend1240: - br label %logic.end1233 -logic.end1233: - %t24 = phi i1 [ true, %logic.from1231 ], [ %t23, %logic.rend1240 ] - br label %logic.from1241 -logic.from1241: - br i1 %t24, label %logic.end1243, label %logic.rhs1242 -logic.rhs1242: - %t25 = load ptr, ptr %a1 - %t26 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t25, i64 2) - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.684, i64 1, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %logic.rend1244 -logic.rend1244: - br label %logic.end1243 -logic.end1243: - %t32 = phi i1 [ true, %logic.from1241 ], [ %t30, %logic.rend1244 ] - br i1 %t32, label %then1245, label %endif1247 -then1245: - ret i1 false -endif1247: - store i64 0, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic1248, label %ok1249 -panic1248: - call void @finch_panic(ptr @.str.685, i64 180, ptr @.str.686) - unreachable -ok1249: - %t36 = getelementptr inbounds %S.parser.Parser, ptr %t34, i32 0, i32 1 - %t37 = load i64, ptr %t36 - %t38 = add i64 %t37, 1 - store i64 %t38, ptr %a39 - br label %while.cond1250 -while.cond1250: - %t40 = load i64, ptr %a39 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic1253, label %ok1254 -panic1253: - call void @finch_panic(ptr @.str.687, i64 181, ptr @.str.688) - unreachable -ok1254: - %t43 = getelementptr inbounds %S.parser.Parser, ptr %t41, i32 0, i32 0 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - %t46 = icmp slt i64 %t40, %t45 - br i1 %t46, label %while.body1251, label %while.end1252 -while.body1251: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic1255, label %ok1256 -panic1255: - call void @finch_panic(ptr @.str.689, i64 182, ptr @.str.690) - unreachable -ok1256: - %t49 = getelementptr inbounds %S.parser.Parser, ptr %t47, i32 0, i32 0 - %t50 = load i64, ptr %a39 - %t51 = load { ptr, i64, i64 }, ptr %t49 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 %t50, %t52 - br i1 %t53, label %range1257, label %inrange1258 -range1257: - call void @finch_panic_index(ptr @.str.691, i64 182, i64 %t50, i64 %t52) - unreachable -inrange1258: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.lexer.Token, ptr %t54, i64 %t50 - %t56 = getelementptr inbounds %S.lexer.Token, ptr %t55, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_copy(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.692, i64 1, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then1259, label %else1260 -then1259: - %t67 = load i64, ptr %a33 - %t68 = add i64 %t67, 1 - store i64 %t68, ptr %a33 - br label %endif1261 -else1260: - %t69 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.693, i64 1, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp ne i32 %t72, 0 - br i1 %t73, label %then1262, label %else1263 -then1262: - %t74 = load i64, ptr %a33 - %t75 = sub i64 %t74, 1 - store i64 %t75, ptr %a33 - %t76 = load i64, ptr %a33 - %t77 = icmp eq i64 %t76, 0 - br i1 %t77, label %then1265, label %endif1267 -then1265: - %t78 = load i64, ptr %a39 - %t79 = add i64 %t78, 1 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic1268, label %ok1269 -panic1268: - call void @finch_panic(ptr @.str.694, i64 188, ptr @.str.695) - unreachable -ok1269: - %t82 = getelementptr inbounds %S.parser.Parser, ptr %t80, i32 0, i32 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - %t84 = load i64, ptr %t83 - %t85 = icmp slt i64 %t79, %t84 - br label %logic.from1270 -logic.from1270: - br i1 %t85, label %logic.rhs1271, label %logic.end1272 -logic.rhs1271: - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic1273, label %ok1274 -panic1273: - call void @finch_panic(ptr @.str.696, i64 188, ptr @.str.697) - unreachable -ok1274: - %t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 0 - %t89 = load i64, ptr %a39 - %t90 = add i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %t88 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range1275, label %inrange1276 -range1275: - call void @finch_panic_index(ptr @.str.698, i64 188, i64 %t90, i64 %t92) - unreachable -inrange1276: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds %S.lexer.Token, ptr %t94, i64 %t90 - %t96 = getelementptr inbounds %S.lexer.Token, ptr %t95, i32 0, i32 0 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.699, i64 1, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.rend1277 -logic.rend1277: - br label %logic.end1272 -logic.end1272: - %t102 = phi i1 [ false, %logic.from1270 ], [ %t101, %logic.rend1277 ] - br label %logic.from1278 -logic.from1278: - br i1 %t102, label %logic.rhs1279, label %logic.end1280 -logic.rhs1279: - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic1281, label %ok1282 -panic1281: - call void @finch_panic(ptr @.str.700, i64 188, ptr @.str.701) - unreachable -ok1282: - %t105 = getelementptr inbounds %S.parser.Parser, ptr %t103, i32 0, i32 0 - %t106 = load i64, ptr %a39 - %t107 = add i64 %t106, 1 - %t108 = load { ptr, i64, i64 }, ptr %t105 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 %t107, %t109 - br i1 %t110, label %range1283, label %inrange1284 -range1283: - call void @finch_panic_index(ptr @.str.702, i64 188, i64 %t107, i64 %t109) - unreachable -inrange1284: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.lexer.Token, ptr %t111, i64 %t107 - %t113 = getelementptr inbounds %S.lexer.Token, ptr %t112, i32 0, i32 4 - %t114 = load i1, ptr %t113 - %t115 = xor i1 %t114, true - br label %logic.rend1285 -logic.rend1285: - br label %logic.end1280 -logic.end1280: - %t116 = phi i1 [ false, %logic.from1278 ], [ %t115, %logic.rend1285 ] - call void @finch_str_drop(ptr %a61) - ret i1 %t116 -endif1267: - br label %endif1264 -else1263: - %t117 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.703, i64 3, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.from1286 -logic.from1286: - br i1 %t121, label %logic.end1288, label %logic.rhs1287 -logic.rhs1287: - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic1289, label %ok1290 -panic1289: - call void @finch_panic(ptr @.str.704, i64 190, ptr @.str.705) - unreachable -ok1290: - %t124 = getelementptr inbounds %S.parser.Parser, ptr %t122, i32 0, i32 0 - %t125 = load i64, ptr %a39 - %t126 = load { ptr, i64, i64 }, ptr %t124 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 %t125, %t127 - br i1 %t128, label %range1291, label %inrange1292 -range1291: - call void @finch_panic_index(ptr @.str.706, i64 190, i64 %t125, i64 %t127) - unreachable -inrange1292: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.lexer.Token, ptr %t129, i64 %t125 - %t131 = getelementptr inbounds %S.lexer.Token, ptr %t130, i32 0, i32 4 - %t132 = load i1, ptr %t131 - br label %logic.rend1293 -logic.rend1293: - br label %logic.end1288 -logic.end1288: - %t133 = phi i1 [ true, %logic.from1286 ], [ %t132, %logic.rend1293 ] - br i1 %t133, label %then1294, label %endif1296 -then1294: - call void @finch_str_drop(ptr %a61) - ret i1 false -endif1296: - br label %endif1264 -endif1264: - br label %endif1261 -endif1261: - %t134 = load i64, ptr %a39 - %t135 = add i64 %t134, 1 - store i64 %t135, ptr %a39 - call void @finch_str_drop(ptr %a61) - br label %while.cond1250 -while.end1252: - 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 - %a12 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.lexer.Token, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.lexer.Token, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2) - br i1 %t3, label %then1297, label %endif1299 -then1297: - ret i1 true -endif1299: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }) - br i1 %t5, label %then1300, label %endif1302 -then1300: - %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.708, i64 1, i64 0 }, ptr %a9 - %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) - %t11 = icmp ne i32 %t10, 0 - store { ptr, i64, i64 } %t7, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret i1 %t11 -endif1302: - %t13 = load ptr, ptr %a1 - %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 }) - %t15 = xor i1 %t14, true - br i1 %t15, label %then1303, label %endif1305 -then1303: - ret i1 false -endif1305: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t16, i64 1) - store { ptr, i64, i64 } %t17, ptr %a18 - %t19 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.710, i64 5, i64 0 }, ptr %a21 - %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) - %t23 = icmp ne i32 %t22, 0 - br i1 %t23, label %then1306, label %endif1308 -then1306: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic1309, label %ok1310 -panic1309: - call void @finch_panic(ptr @.str.711, i64 210, ptr @.str.712) - unreachable -ok1310: - %t26 = getelementptr inbounds %S.parser.Parser, ptr %t24, i32 0, i32 0 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1311, label %ok1312 -panic1311: - call void @finch_panic(ptr @.str.713, i64 210, ptr @.str.714) - unreachable -ok1312: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = add i64 %t30, 1 - %t32 = load { ptr, i64, i64 }, ptr %t26 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range1313, label %inrange1314 -range1313: - call void @finch_panic_index(ptr @.str.715, i64 210, i64 %t31, i64 %t33) - unreachable -inrange1314: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.lexer.Token, ptr %t36, i32 0, i32 4 - %t38 = load i1, ptr %t37 - %t39 = xor i1 %t38, true - call void @finch_str_drop(ptr %a18) - ret i1 %t39 -endif1308: - %t40 = load ptr, ptr %a1 - %t41 = call %S.lexer.Token @finch.parser.cur(ptr %t40) - %t42 = extractvalue %S.lexer.Token %t41, 1 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch_str_copy(ptr %a44, ptr %a43) - %t45 = load { ptr, i64, i64 }, ptr %a44 - store %S.lexer.Token %t41, ptr %a46 - call void @finch.drop.S_lexer_Token(ptr %a46) - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.716, i64 3, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - store { ptr, i64, i64 } %t45, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %logic.from1315 -logic.from1315: - br i1 %t50, label %logic.end1317, label %logic.rhs1316 -logic.rhs1316: - %t52 = load ptr, ptr %a1 - %t53 = call %S.lexer.Token @finch.parser.cur(ptr %t52) - %t54 = extractvalue %S.lexer.Token %t53, 1 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_copy(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store %S.lexer.Token %t53, ptr %a58 - call void @finch.drop.S_lexer_Token(ptr %a58) - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.717, i64 3, i64 0 }, ptr %a60 - %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) - %t62 = icmp ne i32 %t61, 0 - store { ptr, i64, i64 } %t57, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %logic.rend1318 -logic.rend1318: - br label %logic.end1317 -logic.end1317: - %t64 = phi i1 [ true, %logic.from1315 ], [ %t62, %logic.rend1318 ] - br label %logic.from1319 -logic.from1319: - br i1 %t64, label %logic.rhs1320, label %logic.end1321 -logic.rhs1320: - %t65 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.718, i64 1, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.rend1322 -logic.rend1322: - br label %logic.end1321 -logic.end1321: - %t70 = phi i1 [ false, %logic.from1319 ], [ %t69, %logic.rend1322 ] - br i1 %t70, label %then1323, label %endif1325 -then1323: - call void @finch_str_drop(ptr %a18) - ret i1 true -endif1325: - %t71 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t71, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.719, i64 1, i64 0 }, ptr %a73 - %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) - %t75 = icmp ne i32 %t74, 0 - br label %logic.from1326 -logic.from1326: - br i1 %t75, label %logic.rhs1327, label %logic.end1328 -logic.rhs1327: - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t76, i64 2) - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.720, i64 5, i64 0 }, ptr %a79 - %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) - %t81 = icmp ne i32 %t80, 0 - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %logic.rend1329 -logic.rend1329: - br label %logic.end1328 -logic.end1328: - %t83 = phi i1 [ false, %logic.from1326 ], [ %t81, %logic.rend1329 ] - br label %logic.from1330 -logic.from1330: - br i1 %t83, label %logic.rhs1331, label %logic.end1332 -logic.rhs1331: - %t84 = load ptr, ptr %a1 - %t85 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t84, i64 3) - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.721, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %logic.rend1333 -logic.rend1333: - br label %logic.end1332 -logic.end1332: - %t91 = phi i1 [ false, %logic.from1330 ], [ %t89, %logic.rend1333 ] - br label %logic.from1334 -logic.from1334: - br i1 %t91, label %logic.rhs1335, label %logic.end1336 -logic.rhs1335: - %t92 = load ptr, ptr %a1 - %t93 = icmp eq ptr %t92, null - br i1 %t93, label %panic1337, label %ok1338 -panic1337: - call void @finch_panic(ptr @.str.722, i64 215, ptr @.str.723) - unreachable -ok1338: - %t94 = getelementptr inbounds %S.parser.Parser, ptr %t92, i32 0, i32 0 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic1339, label %ok1340 -panic1339: - call void @finch_panic(ptr @.str.724, i64 215, ptr @.str.725) - unreachable -ok1340: - %t97 = getelementptr inbounds %S.parser.Parser, ptr %t95, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = add i64 %t98, 3 - %t100 = load { ptr, i64, i64 }, ptr %t94 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range1341, label %inrange1342 -range1341: - call void @finch_panic_index(ptr @.str.726, i64 215, i64 %t99, i64 %t101) - unreachable -inrange1342: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.lexer.Token, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.lexer.Token, ptr %t104, i32 0, i32 4 - %t106 = load i1, ptr %t105 - %t107 = xor i1 %t106, true - br label %logic.rend1343 -logic.rend1343: - br label %logic.end1336 -logic.end1336: - %t108 = phi i1 [ false, %logic.from1334 ], [ %t107, %logic.rend1343 ] - call void @finch_str_drop(ptr %a18) - ret i1 %t108 -} - -define internal void @finch.parser.endOfStatement(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a10 = alloca %S.lexer.Token, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }) - br label %logic.from1344 -logic.from1344: - br i1 %t3, label %logic.end1346, label %logic.rhs1345 -logic.rhs1345: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.728, i64 3, i64 0 }) - br label %logic.rend1347 -logic.rend1347: - br label %logic.end1346 -logic.end1346: - %t6 = phi i1 [ true, %logic.from1344 ], [ %t5, %logic.rend1347 ] - br label %logic.from1348 -logic.from1348: - br i1 %t6, label %logic.end1350, label %logic.rhs1349 -logic.rhs1349: - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.cur(ptr %t7) - %t9 = extractvalue %S.lexer.Token %t8, 4 - store %S.lexer.Token %t8, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %logic.rend1351 -logic.rend1351: - br label %logic.end1350 -logic.end1350: - %t11 = phi i1 [ true, %logic.from1348 ], [ %t9, %logic.rend1351 ] - br i1 %t11, label %then1352, label %endif1354 -then1352: - ret void -endif1354: - %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 %S.lexer.Token %t16, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - store { ptr, i64, i64 } { ptr @.str.729, i64 11, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.730, i64 37, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t28) - store %S.lexer.Token %t14, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - call void @finch_str_drop(ptr %a30) - ret void -} - -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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca %S.lexer.Token, align 16 - %a87 = alloca %S.lexer.Token, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca %S.lexer.Token, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca i1, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca %S.ast.Node, align 16 - %a170 = alloca %S.ast.Node, align 16 - %a171 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1355 -while.cond1355: - %t3 = load ptr, ptr %a1 - %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.731, i64 3, i64 0 }) - %t5 = xor i1 %t4, true - br i1 %t5, label %while.body1356, label %while.end1357 -while.body1356: - %t6 = load ptr, ptr %a1 - %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.732, i64 6, i64 0 }) - br i1 %t7, label %then1358, label %else1359 -then1358: - %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.733, i64 6, i64 0 }) - br i1 %t12, label %then1361, label %else1362 -then1361: - %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 %panic1364, label %ok1365 -panic1364: - call void @finch_panic(ptr @.str.734, i64 233, ptr @.str.735) - unreachable -ok1365: - %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.736, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - %t23 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 2 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.737, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - %t48 = load i64, ptr %t14 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t13, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t13 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t14 - %t52 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.next(ptr %t54) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load i64, ptr %t53 - %t62 = add i64 %t61, 1 - call void @finch_arr_reserve(ptr %t52, i64 %t62, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t63 = load ptr, ptr %t52 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i64 %t61 - store { ptr, i64, i64 } %t59, ptr %t64 - store i64 %t62, ptr %t53 - br label %endif1363 -else1362: - %t65 = load ptr, ptr %a1 - %t66 = call i1 @finch.parser.at(ptr %t65, { ptr, i64, i64 } { ptr @.str.738, i64 5, i64 0 }) - %t67 = xor i1 %t66, true - br i1 %t67, label %then1366, label %endif1368 -then1366: - %t68 = load ptr, ptr %a1 - %t69 = load %S.lexer.Token, ptr %a10 - call void @finch.parser.fail(ptr %t68, %S.lexer.Token %t69, { ptr, i64, i64 } { ptr @.str.739, i64 51, i64 0 }) - br label %endif1368 -endif1368: - %t70 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = call %S.lexer.Token @finch.parser.next(ptr %t72) - %t74 = extractvalue %S.lexer.Token %t73, 1 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_copy(ptr %a76, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store %S.lexer.Token %t73, ptr %a78 - call void @finch.drop.S_lexer_Token(ptr %a78) - %t79 = load i64, ptr %t71 - %t80 = add i64 %t79, 1 - call void @finch_arr_reserve(ptr %t70, i64 %t80, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t81 = load ptr, ptr %t70 - %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i64 %t79 - store { ptr, i64, i64 } %t77, ptr %t82 - store i64 %t80, ptr %t71 - br label %endif1363 -endif1363: - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %endif1360 -else1359: - %t83 = load ptr, ptr %a1 - %t84 = call i1 @finch.parser.at(ptr %t83, { ptr, i64, i64 } { ptr @.str.740, i64 4, i64 0 }) - br i1 %t84, label %then1369, label %else1370 -then1369: - %t85 = load ptr, ptr %a1 - %t86 = call %S.lexer.Token @finch.parser.next(ptr %t85) - store %S.lexer.Token %t86, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = call %S.lexer.Token @finch.parser.expect(ptr %t88, { ptr, i64, i64 } { ptr @.str.741, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.742, i64 42, i64 0 }) - %t90 = extractvalue %S.lexer.Token %t89, 1 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_copy(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - store %S.lexer.Token %t89, ptr %a94 - call void @finch.drop.S_lexer_Token(ptr %a94) - store { ptr, i64, i64 } %t93, ptr %a95 - %t96 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.744, i64 2, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_ends(ptr %a97, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.from1372 -logic.from1372: - br i1 %t101, label %logic.end1374, label %logic.rhs1373 -logic.rhs1373: - %t102 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.746, i64 2, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_ends(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.rend1375 -logic.rend1375: - br label %logic.end1374 -logic.end1374: - %t108 = phi i1 [ true, %logic.from1372 ], [ %t107, %logic.rend1375 ] - br label %logic.from1376 -logic.from1376: - br i1 %t108, label %logic.end1378, label %logic.rhs1377 -logic.rhs1377: - %t109 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.748, i64 2, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_ends(ptr %a110, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.rend1379 -logic.rend1379: - br label %logic.end1378 -logic.end1378: - %t115 = phi i1 [ true, %logic.from1376 ], [ %t114, %logic.rend1379 ] - store i1 %t115, ptr %a116 - %t117 = load i1, ptr %a116 - %t118 = xor i1 %t117, true - br label %logic.from1380 -logic.from1380: - br i1 %t118, label %logic.rhs1381, label %logic.end1382 -logic.rhs1381: - %t119 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.750, i64 3, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br label %logic.from1383 -logic.from1383: - br i1 %t124, label %logic.end1385, label %logic.rhs1384 -logic.rhs1384: - %t125 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.752, i64 3, i64 0 }, ptr %a128 - %t129 = call i64 @finch_str_find(ptr %a126, ptr %a128) - %t130 = icmp sge i64 %t129, 0 - br label %logic.rend1386 -logic.rend1386: - br label %logic.end1385 -logic.end1385: - %t131 = phi i1 [ true, %logic.from1383 ], [ %t130, %logic.rend1386 ] - br label %logic.from1387 -logic.from1387: - br i1 %t131, label %logic.end1389, label %logic.rhs1388 -logic.rhs1388: - %t132 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, ptr %a135 - %t136 = call i64 @finch_str_find(ptr %a133, ptr %a135) - %t137 = icmp sge i64 %t136, 0 - br label %logic.rend1390 -logic.rend1390: - br label %logic.end1389 -logic.end1389: - %t138 = phi i1 [ true, %logic.from1387 ], [ %t137, %logic.rend1390 ] - br label %logic.rend1391 -logic.rend1391: - br label %logic.end1382 -logic.end1382: - %t139 = phi i1 [ false, %logic.from1380 ], [ %t138, %logic.rend1391 ] - br i1 %t139, label %then1392, label %endif1394 -then1392: - %t140 = load ptr, ptr %a1 - %t141 = load %S.lexer.Token, ptr %a87 - call void @finch.parser.fail(ptr %t140, %S.lexer.Token %t141, { ptr, i64, i64 } { ptr @.str.755, i64 65, i64 0 }) - br label %endif1394 -endif1394: - %t142 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1 - %t144 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch_str_copy(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load i64, ptr %t143 - %t149 = add i64 %t148, 1 - call void @finch_arr_reserve(ptr %t142, i64 %t149, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t150 = load ptr, ptr %t142 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - store { ptr, i64, i64 } %t147, ptr %t151 - store i64 %t149, ptr %t143 - call void @finch_str_drop(ptr %a95) - call void @finch.drop.S_lexer_Token(ptr %a87) - br label %endif1371 -else1370: - %t152 = load ptr, ptr %a1 - %t153 = call i1 @finch.parser.at(ptr %t152, { ptr, i64, i64 } { ptr @.str.756, i64 6, i64 0 }) - br i1 %t153, label %then1395, label %else1396 -then1395: - %t154 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.ast.Node @finch.parser.parseStruct(ptr %t156) - %t158 = load i64, ptr %t155 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %t154 - %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 - store %S.ast.Node %t157, ptr %t161 - store i64 %t159, ptr %t155 - br label %endif1397 -else1396: - %t162 = load ptr, ptr %a1 - %t163 = call i1 @finch.parser.at(ptr %t162, { ptr, i64, i64 } { ptr @.str.757, i64 4, i64 0 }) - br i1 %t163, label %then1398, label %else1399 -then1398: - %t164 = load ptr, ptr %a1 - %t165 = call %S.ast.Node @finch.parser.parseEnum(ptr %t164) - store %S.ast.Node %t165, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Node, ptr %a166 - store %S.ast.Node %t169, ptr %a170 - call void @finch.copy.S_ast_Node(ptr %a171, ptr %a170) - %t172 = load %S.ast.Node, ptr %a171 - %t173 = load i64, ptr %t168 - %t174 = add i64 %t173, 1 - call void @finch_arr_reserve(ptr %t167, i64 %t174, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t175 = load ptr, ptr %t167 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t173 - store %S.ast.Node %t172, ptr %t176 - store i64 %t174, ptr %t168 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a166, i32 0, i32 6 - %t178 = load i1, ptr %t177 - br i1 %t178, label %then1401, label %endif1403 -then1401: - %t179 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = load %S.ast.Node, ptr %a166 - %t182 = call %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %t181) - %t183 = load i64, ptr %t180 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t179, i64 %t184, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.ast.Node, ptr %t185, i64 %t183 - store %S.ast.Node %t182, ptr %t186 - store i64 %t184, ptr %t180 - br label %endif1403 -endif1403: - call void @finch.drop.S_ast_Node(ptr %a166) - br label %endif1400 -else1399: - %t187 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load ptr, ptr %a1 - %t190 = call %S.ast.Node @finch.parser.parseFn(ptr %t189) - %t191 = load i64, ptr %t188 - %t192 = add i64 %t191, 1 - call void @finch_arr_reserve(ptr %t187, i64 %t192, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t193 = load ptr, ptr %t187 - %t194 = getelementptr inbounds %S.ast.Node, ptr %t193, i64 %t191 - store %S.ast.Node %t190, ptr %t194 - store i64 %t192, ptr %t188 - br label %endif1400 -endif1400: - br label %endif1397 -endif1397: - br label %endif1371 -endif1371: - br label %endif1360 -endif1360: - br label %while.cond1355 -while.end1357: - %t195 = load %S.ast.Program, ptr %a2 - ret %S.ast.Program %t195 -} - -define internal %S.ast.Node @finch.parser.parseEnum(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a32 = alloca %S.ast.Node, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Type, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a72 = alloca %S.lexer.Token, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.lexer.Token, align 16 - %a113 = 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 - %a125 = alloca %S.lexer.Token, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.ast.Node, align 16 - %a138 = alloca %S.ast.Node, align 16 - %a150 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i64, align 16 - %a182 = alloca %S.ast.Node, 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 - %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 - %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 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.lexer.Token, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.758, i64 4, i64 0 }) - store %S.ast.Node %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.759, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.760, i64 6, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.761, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.762, i64 12, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.763, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.764, i64 3, i64 0 }) - store %S.lexer.Token %t19, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - br label %while.cond1404 -while.cond1404: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.765, i64 1, i64 0 }) - %t23 = xor i1 %t22, true - br i1 %t23, label %while.body1405, label %while.end1406 -while.body1405: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.766, i64 3, i64 0 }) - br i1 %t25, label %then1407, label %endif1409 -then1407: - %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.767, i64 37, i64 0 }) - store %S.lexer.Token %t28, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - br label %endif1409 -endif1409: - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.node(ptr %t30, { ptr, i64, i64 } { ptr @.str.768, i64 7, i64 0 }) - store %S.ast.Node %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.expect(ptr %t33, { ptr, i64, i64 } { ptr @.str.769, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.770, i64 24, i64 0 }) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t38, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = call i1 @finch.parser.accept(ptr %t43, { ptr, i64, i64 } { ptr @.str.771, i64 1, i64 0 }) - br i1 %t44, label %then1410, label %endif1412 -then1410: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - store i1 true, ptr %t45 - br label %while.cond1413 -while.cond1413: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.772, i64 1, i64 0 }) - %t48 = xor i1 %t47, true - br i1 %t48, label %while.body1414, label %while.end1415 -while.body1414: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.node(ptr %t49, { ptr, i64, i64 } { ptr @.str.773, i64 5, i64 0 }) - store %S.ast.Node %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - %t54 = getelementptr inbounds %S.ast.Node, ptr %a51, i32 0, i32 5 - %t55 = load %S.ast.Type, ptr %t54 - store %S.ast.Type %t53, ptr %t54 - store %S.ast.Type %t55, ptr %a56 - call void @finch.drop.S_ast_Type(ptr %a56) - %t57 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = load %S.ast.Node, ptr %a51 - store %S.ast.Node %t59, ptr %a60 - call void @finch.copy.S_ast_Node(ptr %a61, ptr %a60) - %t62 = load %S.ast.Node, ptr %a61 - %t63 = load i64, ptr %t58 - %t64 = add i64 %t63, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t64, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t65 = load ptr, ptr %t57 - %t66 = getelementptr inbounds %S.ast.Node, ptr %t65, i64 %t63 - store %S.ast.Node %t62, ptr %t66 - store i64 %t64, ptr %t58 - %t67 = load ptr, ptr %a1 - %t68 = call i1 @finch.parser.accept(ptr %t67, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }) - %t69 = xor i1 %t68, true - br i1 %t69, label %then1416, label %endif1418 -then1416: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.end1415 -endif1418: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.cond1413 -while.end1415: - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.775, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.776, i64 35, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - %t73 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %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 %then1419, label %endif1421 -then1419: - %t77 = load ptr, ptr %a1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.cur(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } { ptr @.str.777, i64 12, 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.778, i64 27, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t90, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t90, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.779, i64 20, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.parser.fail(ptr %t77, %S.lexer.Token %t79, { ptr, i64, i64 } %t102) - store %S.lexer.Token %t79, ptr %a103 - call void @finch.drop.S_lexer_Token(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1421 -endif1421: - br label %endif1412 -endif1412: - %t105 = load ptr, ptr %a1 - %t106 = call i1 @finch.parser.accept(ptr %t105, { ptr, i64, i64 } { ptr @.str.780, i64 1, i64 0 }) - br i1 %t106, label %then1422, label %endif1424 -then1422: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then1425, label %endif1427 -then1425: - %t109 = load ptr, ptr %a1 - %t110 = load ptr, ptr %a1 - %t111 = call %S.lexer.Token @finch.parser.cur(ptr %t110) - call void @finch.parser.fail(ptr %t109, %S.lexer.Token %t111, { ptr, i64, i64 } { ptr @.str.781, i64 52, i64 0 }) - store %S.lexer.Token %t111, ptr %a112 - call void @finch.drop.S_lexer_Token(ptr %a112) - br label %endif1427 -endif1427: - store { ptr, i64, i64 } { ptr @.str.782, i64 0, i64 0 }, ptr %a113 - %t114 = load ptr, ptr %a1 - %t115 = call i1 @finch.parser.accept(ptr %t114, { ptr, i64, i64 } { ptr @.str.783, i64 1, i64 0 }) - br i1 %t115, label %then1428, label %endif1430 -then1428: - %t116 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.784, i64 1, i64 0 }, ptr %a113 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif1430 -endif1430: - %t118 = load { ptr, i64, i64 }, ptr %a113 - %t119 = load ptr, ptr %a1 - %t120 = call %S.lexer.Token @finch.parser.expect(ptr %t119, { ptr, i64, i64 } { ptr @.str.785, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.786, i64 30, i64 0 }) - %t121 = extractvalue %S.lexer.Token %t120, 1 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - store %S.lexer.Token %t120, ptr %a125 - call void @finch.drop.S_lexer_Token(ptr %a125) - store { ptr, i64, i64 } %t118, ptr %a127 - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %t131 - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a113) - br label %endif1424 -endif1424: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load %S.ast.Node, ptr %a32 - store %S.ast.Node %t136, ptr %a137 - call void @finch.copy.S_ast_Node(ptr %a138, ptr %a137) - %t139 = load %S.ast.Node, 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 (%S.ast.Node, ptr null, i32 1) to i64)) - %t142 = load ptr, ptr %t134 - %t143 = getelementptr inbounds %S.ast.Node, ptr %t142, i64 %t140 - store %S.ast.Node %t139, ptr %t143 - store i64 %t141, ptr %t135 - %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.accept(ptr %t144, { ptr, i64, i64 } { ptr @.str.787, i64 1, i64 0 }) - %t146 = xor i1 %t145, true - br i1 %t146, label %then1431, label %endif1433 -then1431: - %t147 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t147) - br label %endif1433 -endif1433: - call void @finch.drop.S_ast_Node(ptr %a32) - br label %while.cond1404 -while.end1406: - %t148 = load ptr, ptr %a1 - %t149 = call %S.lexer.Token @finch.parser.next(ptr %t148) - store %S.lexer.Token %t149, ptr %a150 - call void @finch.drop.S_lexer_Token(ptr %a150) - %t151 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = icmp eq i64 %t153, 0 - br i1 %t154, label %then1434, label %endif1436 -then1434: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.lexer.Token @finch.parser.cur(ptr %t156) - %t158 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } { ptr @.str.788, i64 9, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.789, i64 16, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.parser.fail(ptr %t155, %S.lexer.Token %t157, { ptr, i64, i64 } %t168) - store %S.lexer.Token %t157, ptr %a169 - call void @finch.drop.S_lexer_Token(ptr %a169) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1436 -endif1436: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t172 = load i1, ptr %t171 - br i1 %t172, label %then1437, label %endif1439 -then1437: - %t173 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - store i64 0, ptr %a174 - br label %each.cond1440 -each.cond1440: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %a174 - %t178 = icmp slt i64 %t177, %t176 - br i1 %t178, label %each.body1441, label %each.end1443 -each.body1441: - %t179 = load ptr, ptr %t173 - %t180 = getelementptr inbounds %S.ast.Node, ptr %t179, i64 %t177 - %t181 = load %S.ast.Node, ptr %t180 - store %S.ast.Node %t181, ptr %a182 - %t183 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load i64, ptr %t184 - %t186 = icmp sgt i64 %t185, 0 - br i1 %t186, label %then1444, label %endif1446 -then1444: - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = call %S.lexer.Token @finch.parser.cur(ptr %t188) - %t190 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - store { ptr, i64, i64 } { ptr @.str.790, i64 54, i64 0 }, 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.791, i64 3, i64 0 }, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - %t201 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %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) - store { ptr, i64, i64 } %t200, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.792, i64 1, i64 0 }, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.parser.fail(ptr %t187, %S.lexer.Token %t189, { ptr, i64, i64 } %t212) - store %S.lexer.Token %t189, ptr %a213 - call void @finch.drop.S_lexer_Token(ptr %a213) - store { ptr, i64, i64 } %t212, ptr %a214 - call void @finch_str_drop(ptr %a214) - br label %endif1446 -endif1446: - br label %each.step1442 -each.step1442: - %t215 = load i64, ptr %a174 - %t216 = add i64 %t215, 1 - store i64 %t216, ptr %a174 - br label %each.cond1440 -each.end1443: - br label %endif1439 -endif1439: - %t217 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t217 -} - -define internal %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %p0) { -entry: - %a1 = alloca %S.ast.Node, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca %S.ast.Node, align 16 - %a30 = alloca %S.ast.Node, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a46 = alloca i64, align 16 - %a54 = alloca %S.ast.Node, align 16 - %a58 = alloca 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a98 = alloca %S.ast.Type, align 16 - %a99 = alloca %S.ast.Type, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a107 = alloca %S.ast.Node, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.793, i64 6, i64 0 }, 0 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a1, 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 - %t8 = insertvalue %S.ast.Node %t2, { ptr, i64, i64 } %t7, 1 - %t9 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t10 = load i64, ptr %t9 - %t11 = insertvalue %S.ast.Node %t8, i64 %t10, 11 - %t12 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t13 = load i64, ptr %t12 - %t14 = insertvalue %S.ast.Node %t11, i64 %t13, 12 - %t15 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t16 = load i64, ptr %t15 - %t17 = insertvalue %S.ast.Node %t14, i64 %t16, 13 - store %S.ast.Node %t17, ptr %a18 - %t19 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.794, i64 5, i64 0 }, 0 - %t20 = insertvalue %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.795, i64 3, i64 0 }, 1 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t22 = load i64, ptr %t21 - %t23 = insertvalue %S.ast.Node %t20, i64 %t22, 11 - %t24 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t25 = load i64, ptr %t24 - %t26 = insertvalue %S.ast.Node %t23, i64 %t25, 12 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t28 = load i64, ptr %t27 - %t29 = insertvalue %S.ast.Node %t26, i64 %t28, 13 - store %S.ast.Node %t29, ptr %a30 - %t31 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.796, i64 3, i64 0 }) - %t32 = getelementptr inbounds %S.ast.Node, ptr %a30, i32 0, i32 5 - %t33 = load %S.ast.Type, ptr %t32 - store %S.ast.Type %t31, ptr %t32 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - %t35 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Node, ptr %a30 - store %S.ast.Node %t37, ptr %a38 - call void @finch.copy.S_ast_Node(ptr %a39, ptr %a38) - %t40 = load %S.ast.Node, ptr %a39 - %t41 = load i64, ptr %t36 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %t35, i64 %t42, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - store %S.ast.Node %t40, ptr %t44 - store i64 %t42, ptr %t36 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a46 - br label %each.cond1447 -each.cond1447: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t48 = load i64, ptr %t47 - %t49 = load i64, ptr %a46 - %t50 = icmp slt i64 %t49, %t48 - br i1 %t50, label %each.body1448, label %each.end1450 -each.body1448: - %t51 = load ptr, ptr %t45 - %t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t49 - %t53 = load %S.ast.Node, ptr %t52 - store %S.ast.Node %t53, ptr %a54 - %t55 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i32 0, i32 1 - %t57 = load i64, ptr %t56 - store i64 0, ptr %a58 - br label %for.cond1451 -for.cond1451: - %t59 = load i64, ptr %a58 - %t60 = icmp slt i64 %t59, %t57 - br i1 %t60, label %for.body1452, label %for.end1454 -for.body1452: - %t61 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.797, i64 5, i64 0 }, 0 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.798, 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 = load i64, ptr %a58 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = insertvalue %S.ast.Node %t61, { ptr, i64, i64 } %t76, 1 - %t78 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 11 - %t79 = load i64, ptr %t78 - %t80 = insertvalue %S.ast.Node %t77, i64 %t79, 11 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 12 - %t82 = load i64, ptr %t81 - %t83 = insertvalue %S.ast.Node %t80, i64 %t82, 12 - %t84 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 13 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.ast.Node %t83, i64 %t85, 13 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t89 = load i64, ptr %a58 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range1455, label %inrange1456 -range1455: - call void @finch_panic_index(ptr @.str.799, i64 333, i64 %t89, i64 %t91) - unreachable -inrange1456: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.ast.Node, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.ast.Node, ptr %t94, i32 0, i32 5 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - store %S.ast.Type %t96, ptr %a98 - call void @finch.copy.S_ast_Type(ptr %a99, ptr %a98) - %t100 = load %S.ast.Type, ptr %a99 - %t101 = load %S.ast.Type, ptr %t97 - store %S.ast.Type %t100, ptr %t97 - store %S.ast.Type %t101, ptr %a102 - call void @finch.drop.S_ast_Type(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load %S.ast.Node, ptr %a87 - store %S.ast.Node %t105, ptr %a106 - call void @finch.copy.S_ast_Node(ptr %a107, ptr %a106) - %t108 = load %S.ast.Node, ptr %a107 - %t109 = load i64, ptr %t104 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t103, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t103 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t104 - call void @finch.drop.S_ast_Node(ptr %a87) - br label %for.step1453 -for.step1453: - %t113 = load i64, ptr %a58 - %t114 = add i64 %t113, 1 - store i64 %t114, ptr %a58 - br label %for.cond1451 -for.end1454: - br label %each.step1449 -each.step1449: - %t115 = load i64, ptr %a46 - %t116 = add i64 %t115, 1 - store i64 %t116, ptr %a46 - br label %each.cond1447 -each.end1450: - %t117 = load %S.ast.Node, ptr %a18 - call void @finch.drop.S_ast_Node(ptr %a30) - ret %S.ast.Node %t117 -} - -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 - %a10 = alloca %S.lexer.Token, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a26 = alloca i64, align 16 - %a38 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a63 = alloca %S.ast.Node, align 16 - %a71 = alloca %S.lexer.Token, align 16 - %a105 = alloca %S.ast.Node, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a122 = alloca %S.lexer.Token, align 16 - %a130 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.800, 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.801, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.802, i64 7, i64 0 }) - store %S.lexer.Token %t9, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - %t11 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.parseExpr(ptr %t13) - %t15 = load i64, ptr %t12 - %t16 = add i64 %t15, 1 - call void @finch_arr_reserve(ptr %t11, i64 %t16, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t17 = load ptr, ptr %t11 - %t18 = getelementptr inbounds %S.ast.Node, ptr %t17, i64 %t15 - store %S.ast.Node %t14, ptr %t18 - store i64 %t16, ptr %t12 - %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.803, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.804, i64 3, i64 0 }) - store %S.lexer.Token %t20, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1457, label %ok1458 -panic1457: - call void @finch_panic(ptr @.str.805, i64 348, ptr @.str.806) - unreachable -ok1458: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 2 - %t25 = load i64, ptr %t24 - store i64 %t25, ptr %a26 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1459, label %ok1460 -panic1459: - call void @finch_panic(ptr @.str.807, i64 349, ptr @.str.808) - unreachable -ok1460: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 2 - store i64 0, ptr %t29 - br label %while.cond1461 -while.cond1461: - %t30 = load ptr, ptr %a1 - %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.809, i64 1, i64 0 }) - %t32 = xor i1 %t31, true - br i1 %t32, label %while.body1462, label %while.end1463 -while.body1462: - %t33 = load ptr, ptr %a1 - %t34 = call i1 @finch.parser.at(ptr %t33, { ptr, i64, i64 } { ptr @.str.810, i64 3, i64 0 }) - br i1 %t34, label %then1464, label %endif1466 -then1464: - %t35 = load ptr, ptr %a1 - %t36 = load ptr, ptr %a1 - %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) - call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } { ptr @.str.811, i64 37, i64 0 }) - store %S.lexer.Token %t37, ptr %a38 - call void @finch.drop.S_lexer_Token(ptr %a38) - br label %endif1466 -endif1466: - %t39 = load ptr, ptr %a1 - %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.812, i64 3, i64 0 }) - store %S.ast.Node %t40, ptr %a41 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.node(ptr %t42, { ptr, i64, i64 } { ptr @.str.813, i64 8, i64 0 }) - store %S.ast.Node %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = call i1 @finch.parser.accept(ptr %t45, { ptr, i64, i64 } { ptr @.str.814, i64 4, i64 0 }) - br i1 %t46, label %then1467, label %else1468 -then1467: - %t47 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 6 - store i1 true, ptr %t47 - br label %endif1469 -else1468: - br label %while.cond1470 -while.cond1470: - br label %while.body1471 -while.body1471: - %t48 = getelementptr inbounds %S.ast.Node, ptr %a44, i32 0, i32 9 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load ptr, ptr %a1 - %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t48 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 - store %S.ast.Node %t51, ptr %t55 - store i64 %t53, ptr %t49 - %t56 = load ptr, ptr %a1 - %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.815, i64 1, i64 0 }) - %t58 = xor i1 %t57, true - br i1 %t58, label %then1473, label %endif1475 -then1473: - br label %while.end1472 -endif1475: - br label %while.cond1470 -while.end1472: - br label %endif1469 -endif1469: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 - %t61 = load %S.ast.Node, ptr %a44 - store %S.ast.Node %t61, ptr %a62 - call void @finch.copy.S_ast_Node(ptr %a63, ptr %a62) - %t64 = load %S.ast.Node, ptr %a63 - %t65 = load i64, ptr %t60 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %t59, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %t59 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 - store %S.ast.Node %t64, ptr %t68 - store i64 %t66, ptr %t60 - %t69 = load ptr, ptr %a1 - %t70 = call %S.lexer.Token @finch.parser.expect(ptr %t69, { ptr, i64, i64 } { ptr @.str.816, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 57, i64 0 }) - store %S.lexer.Token %t70, ptr %a71 - call void @finch.drop.S_lexer_Token(ptr %a71) - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 }) - br label %logic.from1476 -logic.from1476: - br i1 %t73, label %logic.rhs1477, label %logic.end1478 -logic.rhs1477: - %t74 = load i1, ptr %a2 - %t75 = xor i1 %t74, true - br label %logic.rend1479 -logic.rend1479: - br label %logic.end1478 -logic.end1478: - %t76 = phi i1 [ false, %logic.from1476 ], [ %t75, %logic.rend1479 ] - br i1 %t76, label %then1480, label %else1481 -then1480: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 - %t79 = load ptr, ptr %a1 - %t80 = call %S.ast.Node @finch.parser.parseBlock(ptr %t79) - %t81 = load i64, ptr %t78 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t77, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t77 - %t84 = getelementptr inbounds %S.ast.Node, ptr %t83, i64 %t81 - store %S.ast.Node %t80, ptr %t84 - store i64 %t82, ptr %t78 - br label %endif1482 -else1481: - %t85 = load i1, ptr %a2 - br i1 %t85, label %then1483, label %else1484 -then1483: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load ptr, ptr %a1 - %t89 = call %S.ast.Node @finch.parser.parseExpr(ptr %t88) - %t90 = load i64, ptr %t87 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t91, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %t86 - %t93 = getelementptr inbounds %S.ast.Node, ptr %t92, i64 %t90 - store %S.ast.Node %t89, ptr %t93 - store i64 %t91, ptr %t87 - br label %endif1485 -else1484: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseStatement(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1485 -endif1485: - br label %endif1482 -endif1482: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i32 0, i32 1 - %t104 = load %S.ast.Node, ptr %a41 - store %S.ast.Node %t104, ptr %a105 - call void @finch.copy.S_ast_Node(ptr %a106, ptr %a105) - %t107 = load %S.ast.Node, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %t102, i64 %t109, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %t102 - %t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 %t108 - store %S.ast.Node %t107, ptr %t111 - store i64 %t109, ptr %t103 - %t112 = load ptr, ptr %a1 - %t113 = call i1 @finch.parser.accept(ptr %t112, { ptr, i64, i64 } { ptr @.str.819, i64 1, i64 0 }) - %t114 = xor i1 %t113, true - br i1 %t114, label %then1486, label %endif1488 -then1486: - %t115 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t115) - br label %endif1488 -endif1488: - call void @finch.drop.S_ast_Node(ptr %a44) - call void @finch.drop.S_ast_Node(ptr %a41) - br label %while.cond1461 -while.end1463: - %t116 = load i64, ptr %a26 - %t117 = load ptr, ptr %a1 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic1489, label %ok1490 -panic1489: - call void @finch_panic(ptr @.str.820, i64 380, ptr @.str.821) - unreachable -ok1490: - %t119 = getelementptr inbounds %S.parser.Parser, ptr %t117, i32 0, i32 2 - store i64 %t116, ptr %t119 - %t120 = load ptr, ptr %a1 - %t121 = call %S.lexer.Token @finch.parser.next(ptr %t120) - store %S.lexer.Token %t121, ptr %a122 - call void @finch.drop.S_lexer_Token(ptr %a122) - %t123 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1 - %t125 = load i64, ptr %t124 - %t126 = icmp eq i64 %t125, 1 - br i1 %t126, label %then1491, label %endif1493 -then1491: - %t127 = load ptr, ptr %a1 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.cur(ptr %t128) - call void @finch.parser.fail(ptr %t127, %S.lexer.Token %t129, { ptr, i64, i64 } { ptr @.str.822, i64 30, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - br label %endif1493 -endif1493: - %t131 = load %S.ast.Node, ptr %a5 - ret %S.ast.Node %t131 -} - -define internal { ptr, i64, i64 } @finch.parser.parseTParams(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca %S.lexer.Token, align 16 - %a23 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.823, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.824, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - br label %while.cond1494 -while.cond1494: - br label %while.body1495 -while.body1495: - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.825, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.826, i64 29, i64 0 }) - %t9 = extractvalue %S.lexer.Token %t8, 1 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - store %S.lexer.Token %t8, ptr %a13 - call void @finch.drop.S_lexer_Token(ptr %a13) - %t14 = load i64, ptr %t6 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t15, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %a2 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t14 - store { ptr, i64, i64 } %t12, ptr %t17 - store i64 %t15, ptr %t6 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.accept(ptr %t18, { ptr, i64, i64 } { ptr @.str.827, i64 1, i64 0 }) - %t20 = xor i1 %t19, true - br i1 %t20, label %then1497, label %endif1499 -then1497: - br label %while.end1496 -endif1499: - br label %while.cond1494 -while.end1496: - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.828, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.829, i64 29, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t24 -} - -define internal %S.ast.Node @finch.parser.parseStruct(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca %S.lexer.Token, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.lexer.Token, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.ast.Type, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.lexer.Token, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.ast.Node, align 16 - %a100 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.830, 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.831, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 8, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.833, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.834, i64 13, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.835, i64 1, i64 0 }) - br i1 %t19, label %then1500, label %endif1502 -then1500: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t20) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t21, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch.drop.arr_str(ptr %a24) - br label %endif1502 -endif1502: - %t25 = load ptr, ptr %a1 - %t26 = call %S.lexer.Token @finch.parser.expect(ptr %t25, { ptr, i64, i64 } { ptr @.str.836, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.837, i64 3, i64 0 }) - store %S.lexer.Token %t26, ptr %a27 - call void @finch.drop.S_lexer_Token(ptr %a27) - br label %while.cond1503 -while.cond1503: - %t28 = load ptr, ptr %a1 - %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.838, i64 1, i64 0 }) - %t30 = xor i1 %t29, true - br i1 %t30, label %while.body1504, label %while.end1505 -while.body1504: - %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.839, i64 3, i64 0 }) - br i1 %t32, label %then1506, label %endif1508 -then1506: - %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.840, i64 38, i64 0 }) - store %S.lexer.Token %t35, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - br label %endif1508 -endif1508: - %t37 = load ptr, ptr %a1 - %t38 = call %S.ast.Node @finch.parser.node(ptr %t37, { ptr, i64, i64 } { ptr @.str.841, i64 5, i64 0 }) - store %S.ast.Node %t38, ptr %a39 - %t40 = load ptr, ptr %a1 - %t41 = call i1 @finch.parser.atDeclaration(ptr %t40) - %t42 = xor i1 %t41, true - br i1 %t42, label %then1509, label %endif1511 -then1509: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = call %S.lexer.Token @finch.parser.cur(ptr %t44) - %t46 = load ptr, ptr %a1 - %t47 = call %S.lexer.Token @finch.parser.cur(ptr %t46) - %t48 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t47) - store %S.lexer.Token %t47, ptr %a49 - call void @finch.drop.S_lexer_Token(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.842, i64 11, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.843, i64 28, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - call void @finch.parser.fail(ptr %t43, %S.lexer.Token %t45, { ptr, i64, i64 } %t59) - store %S.lexer.Token %t45, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - br label %endif1511 -endif1511: - %t62 = load ptr, ptr %a1 - %t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62) - %t64 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 5 - %t65 = load %S.ast.Type, ptr %t64 - store %S.ast.Type %t63, ptr %t64 - store %S.ast.Type %t65, ptr %a66 - call void @finch.drop.S_ast_Type(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = call %S.lexer.Token @finch.parser.expect(ptr %t67, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.845, i64 12, i64 0 }) - %t69 = extractvalue %S.lexer.Token %t68, 1 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_copy(ptr %a71, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - store %S.lexer.Token %t68, ptr %a73 - call void @finch.drop.S_lexer_Token(ptr %a73) - %t74 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 1 - %t75 = load { ptr, i64, i64 }, ptr %t74 - store { ptr, i64, i64 } %t72, ptr %t74 - store { ptr, i64, i64 } %t75, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load ptr, ptr %a1 - %t78 = call i1 @finch.parser.accept(ptr %t77, { ptr, i64, i64 } { ptr @.str.846, i64 1, i64 0 }) - br i1 %t78, label %then1512, label %endif1514 -then1512: - %t79 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 9 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load ptr, ptr %a1 - %t82 = call %S.ast.Node @finch.parser.parseExpr(ptr %t81) - %t83 = load i64, ptr %t80 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t79, i64 %t84, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t79 - %t86 = getelementptr inbounds %S.ast.Node, ptr %t85, i64 %t83 - store %S.ast.Node %t82, ptr %t86 - store i64 %t84, ptr %t80 - br label %endif1514 -endif1514: - %t87 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 - %t89 = load %S.ast.Node, ptr %a39 - store %S.ast.Node %t89, ptr %a90 - call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90) - %t92 = load %S.ast.Node, ptr %a91 - %t93 = load i64, ptr %t88 - %t94 = add i64 %t93, 1 - call void @finch_arr_reserve(ptr %t87, i64 %t94, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t95 = load ptr, ptr %t87 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 %t93 - store %S.ast.Node %t92, ptr %t96 - store i64 %t94, ptr %t88 - %t97 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t97) - call void @finch.drop.S_ast_Node(ptr %a39) - br label %while.cond1503 -while.end1505: - %t98 = load ptr, ptr %a1 - %t99 = call %S.lexer.Token @finch.parser.next(ptr %t98) - store %S.lexer.Token %t99, ptr %a100 - call void @finch.drop.S_lexer_Token(ptr %a100) - %t101 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t101 -} - -define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) { -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 - %a16 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lexer.Token, align 16 - %a26 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.lexer.Token, align 16 - %a77 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Type, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca %S.lexer.Token, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - %a113 = alloca %S.lexer.Token, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.847, 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.848, 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.849, i64 5, i64 0 }) - br label %logic.from1515 -logic.from1515: - br i1 %t9, label %logic.rhs1516, label %logic.end1517 -logic.rhs1516: - %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 - store %S.lexer.Token %t11, ptr %a16 - call void @finch.drop.S_lexer_Token(ptr %a16) - %t17 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend1518 -logic.rend1518: - br label %logic.end1517 -logic.end1517: - %t19 = phi i1 [ false, %logic.from1515 ], [ %t17, %logic.rend1518 ] - br i1 %t19, label %then1519, label %endif1521 -then1519: - %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.850, i64 68, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - br label %endif1521 -endif1521: - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.expect(ptr %t24, { ptr, i64, i64 } { ptr @.str.851, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.852, i64 26, i64 0 }) - store %S.lexer.Token %t25, ptr %a26 - call void @finch.drop.S_lexer_Token(ptr %a26) - %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.853, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.854, i64 15, i64 0 }) - %t29 = extractvalue %S.lexer.Token %t28, 1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store %S.lexer.Token %t28, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t32, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call i1 @finch.parser.at(ptr %t37, { ptr, i64, i64 } { ptr @.str.855, i64 1, i64 0 }) - br i1 %t38, label %then1522, label %endif1524 -then1522: - %t39 = load ptr, ptr %a1 - %t40 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t39) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t40, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch.drop.arr_str(ptr %a43) - br label %endif1524 -endif1524: - %t44 = load ptr, ptr %a1 - %t45 = call i1 @finch.parser.accept(ptr %t44, { ptr, i64, i64 } { ptr @.str.856, i64 1, i64 0 }) - br i1 %t45, label %then1525, label %endif1527 -then1525: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - %t48 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t47, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t51, ptr %t48 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.expect(ptr %t54, { ptr, i64, i64 } { ptr @.str.857, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.858, i64 13, i64 0 }) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t59, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %endif1527 -endif1527: - %t64 = load ptr, ptr %a1 - %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.859, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.860, i64 3, i64 0 }) - store %S.lexer.Token %t65, ptr %a66 - call void @finch.drop.S_lexer_Token(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic1528, label %ok1529 -panic1528: - call void @finch_panic(ptr @.str.861, i64 446, ptr @.str.862) - unreachable -ok1529: - %t69 = getelementptr inbounds %S.parser.Parser, ptr %t67, i32 0, i32 2 - %t70 = load i64, ptr %t69 - %t71 = add i64 %t70, 1 - store i64 %t71, ptr %t69 - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.863, i64 1, i64 0 }) - %t74 = xor i1 %t73, true - br i1 %t74, label %then1530, label %endif1532 -then1530: - br label %while.cond1533 -while.cond1533: - br label %while.body1534 -while.body1534: - %t75 = load ptr, ptr %a1 - %t76 = call %S.ast.Node @finch.parser.node(ptr %t75, { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }) - store %S.ast.Node %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Type @finch.parser.parseType(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 5 - %t81 = load %S.ast.Type, ptr %t80 - store %S.ast.Type %t79, ptr %t80 - store %S.ast.Type %t81, ptr %a82 - call void @finch.drop.S_ast_Type(ptr %a82) - %t83 = load ptr, ptr %a1 - %t84 = call %S.lexer.Token @finch.parser.expect(ptr %t83, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.866, i64 16, i64 0 }) - %t85 = extractvalue %S.lexer.Token %t84, 1 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_copy(ptr %a87, ptr %a86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store %S.lexer.Token %t84, ptr %a89 - call void @finch.drop.S_lexer_Token(ptr %a89) - %t90 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 1 - %t91 = load { ptr, i64, i64 }, ptr %t90 - store { ptr, i64, i64 } %t88, ptr %t90 - store { ptr, i64, i64 } %t91, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load %S.ast.Node, ptr %a77 - store %S.ast.Node %t95, ptr %a96 - call void @finch.copy.S_ast_Node(ptr %a97, ptr %a96) - %t98 = load %S.ast.Node, ptr %a97 - %t99 = load i64, ptr %t94 - %t100 = add i64 %t99, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t100, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t101 = load ptr, ptr %t93 - %t102 = getelementptr inbounds %S.ast.Node, ptr %t101, i64 %t99 - store %S.ast.Node %t98, ptr %t102 - store i64 %t100, ptr %t94 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.867, i64 1, i64 0 }) - %t105 = xor i1 %t104, true - br i1 %t105, label %then1536, label %endif1538 -then1536: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.end1535 -endif1538: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.cond1533 -while.end1535: - br label %endif1532 -endif1532: - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic1539, label %ok1540 -panic1539: - call void @finch_panic(ptr @.str.868, i64 458, ptr @.str.869) - unreachable -ok1540: - %t108 = getelementptr inbounds %S.parser.Parser, ptr %t106, i32 0, i32 2 - %t109 = load i64, ptr %t108 - %t110 = sub i64 %t109, 1 - store i64 %t110, ptr %t108 - %t111 = load ptr, ptr %a1 - %t112 = call %S.lexer.Token @finch.parser.expect(ptr %t111, { ptr, i64, i64 } { ptr @.str.870, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.871, i64 3, i64 0 }) - store %S.lexer.Token %t112, ptr %a113 - call void @finch.drop.S_lexer_Token(ptr %a113) - %t114 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.872, i64 4, i64 0 }) - %t115 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t116 = load %S.ast.Type, ptr %t115 - store %S.ast.Type %t114, ptr %t115 - store %S.ast.Type %t116, ptr %a117 - call void @finch.drop.S_ast_Type(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = call i1 @finch.parser.accept(ptr %t118, { ptr, i64, i64 } { ptr @.str.873, i64 2, i64 0 }) - br i1 %t119, label %then1541, label %endif1543 -then1541: - %t120 = load ptr, ptr %a1 - %t121 = call i1 @finch.parser.at(ptr %t120, { ptr, i64, i64 } { ptr @.str.874, i64 1, i64 0 }) - %t122 = xor i1 %t121, true - br i1 %t122, label %then1544, label %endif1546 -then1544: - %t123 = load ptr, ptr %a1 - %t124 = call %S.ast.Type @finch.parser.parseType(ptr %t123) - %t125 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t126 = load %S.ast.Type, ptr %t125 - store %S.ast.Type %t124, ptr %t125 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif1546 -endif1546: - %t128 = load ptr, ptr %a1 - %t129 = call i1 @finch.parser.accept(ptr %t128, { ptr, i64, i64 } { ptr @.str.875, i64 1, i64 0 }) - %t130 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - store i1 %t129, ptr %t130 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - %t132 = load i1, ptr %t131 - %t133 = xor i1 %t132, true - br label %logic.from1547 -logic.from1547: - br i1 %t133, label %logic.rhs1548, label %logic.end1549 -logic.rhs1548: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t136, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.876, i64 4, i64 0 }, ptr %a138 - %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) - %t140 = icmp ne i32 %t139, 0 - br label %logic.rend1550 -logic.rend1550: - br label %logic.end1549 -logic.end1549: - %t141 = phi i1 [ false, %logic.from1547 ], [ %t140, %logic.rend1550 ] - br i1 %t141, label %then1551, label %endif1553 -then1551: - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.lexer.Token @finch.parser.cur(ptr %t143) - %t145 = load ptr, ptr %a1 - %t146 = call %S.lexer.Token @finch.parser.cur(ptr %t145) - %t147 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t146) - store %S.lexer.Token %t146, ptr %a148 - call void @finch.drop.S_lexer_Token(ptr %a148) - store { ptr, i64, i64 } { ptr @.str.877, i64 11, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t147, ptr %a152 - call void @finch_str_drop(ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.878, i64 61, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - call void @finch.parser.fail(ptr %t142, %S.lexer.Token %t144, { ptr, i64, i64 } %t158) - store %S.lexer.Token %t144, ptr %a159 - call void @finch.drop.S_lexer_Token(ptr %a159) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - br label %endif1553 -endif1553: - br label %endif1543 -endif1543: - %t161 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i32 0, i32 1 - %t163 = load ptr, ptr %a1 - %t164 = call %S.ast.Node @finch.parser.parseBlock(ptr %t163) - %t165 = load i64, ptr %t162 - %t166 = add i64 %t165, 1 - call void @finch_arr_reserve(ptr %t161, i64 %t166, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t167 = load ptr, ptr %t161 - %t168 = getelementptr inbounds %S.ast.Node, ptr %t167, i64 %t165 - store %S.ast.Node %t164, ptr %t168 - store i64 %t166, ptr %t162 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = sub i64 %t172, 1 - %t174 = load { ptr, i64, i64 }, ptr %t169 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range1554, label %inrange1555 -range1554: - call void @finch_panic_index(ptr @.str.879, i64 471, i64 %t173, i64 %t175) - unreachable -inrange1555: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Node, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i32 0, i32 14 - %t180 = load i64, ptr %t179 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t180, ptr %t181 - %t182 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t182 -} - -define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a12 = alloca i64, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.lexer.Token, align 16 - %a45 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.880, 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.881, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.882, i64 3, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic1556, label %ok1557 -panic1556: - call void @finch_panic(ptr @.str.883, i64 480, ptr @.str.884) - unreachable -ok1557: - %t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 2 - %t11 = load i64, ptr %t10 - store i64 %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic1558, label %ok1559 -panic1558: - call void @finch_panic(ptr @.str.885, i64 481, ptr @.str.886) - unreachable -ok1559: - %t15 = getelementptr inbounds %S.parser.Parser, ptr %t13, i32 0, i32 2 - store i64 0, ptr %t15 - br label %while.cond1560 -while.cond1560: - %t16 = load ptr, ptr %a1 - %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.887, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - br i1 %t18, label %while.body1561, label %while.end1562 -while.body1561: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.888, i64 3, i64 0 }) - br i1 %t20, label %then1563, label %endif1565 -then1563: - %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.889, i64 35, i64 0 }) - store %S.lexer.Token %t23, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - br label %endif1565 -endif1565: - %t25 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.parseStatement(ptr %t27) - %t29 = load i64, ptr %t26 - %t30 = add i64 %t29, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t30, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t31 = load ptr, ptr %t25 - %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 %t29 - store %S.ast.Node %t28, ptr %t32 - store i64 %t30, ptr %t26 - %t33 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t33) - br label %while.cond1560 -while.end1562: - %t34 = load i64, ptr %a12 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1566, label %ok1567 -panic1566: - call void @finch_panic(ptr @.str.890, i64 489, ptr @.str.891) - unreachable -ok1567: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 2 - store i64 %t34, ptr %t37 - %t38 = load ptr, ptr %a1 - %t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38) - %t40 = extractvalue %S.lexer.Token %t39, 2 - store %S.lexer.Token %t39, ptr %a41 - call void @finch.drop.S_lexer_Token(ptr %a41) - %t42 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t40, ptr %t42 - %t43 = load ptr, ptr %a1 - %t44 = call %S.lexer.Token @finch.parser.next(ptr %t43) - store %S.lexer.Token %t44, ptr %a45 - call void @finch.drop.S_lexer_Token(ptr %a45) - %t46 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t46 -} - -define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { -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 - %a22 = alloca %S.lexer.Token, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.ast.Node, align 16 - %a50 = alloca %S.lexer.Token, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca %S.lexer.Token, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Node, align 16 - %a131 = alloca %S.lexer.Token, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.ast.Node, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca %S.ast.Node, align 16 - %a186 = alloca %S.lexer.Token, align 16 - %a192 = alloca %S.lexer.Token, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.lexer.Token, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Node, align 16 - %a250 = alloca %S.ast.Type, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca %S.lexer.Token, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca %S.ast.Node, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca %S.lexer.Token, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.lexer.Token, align 16 - %a309 = alloca %S.lexer.Token, align 16 - %a312 = alloca %S.ast.Node, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca i64, align 16 - %a331 = alloca i64, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.ast.Node, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca %S.lexer.Token, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca %S.ast.Node, align 16 - %a396 = alloca %S.ast.Node, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Node, align 16 - %a456 = alloca %S.ast.Node, align 16 - %a457 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t2) - store { ptr, i64, i64 } %t3, ptr %a4 - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.892, 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 %then1568, label %endif1570 -then1568: - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t11 -endif1570: - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.893, 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 %then1571, label %endif1573 -then1571: - %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.894, 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) - store %S.lexer.Token %t21, ptr %a22 - call void @finch.drop.S_lexer_Token(ptr %a22) - %t23 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 - %t25 = load ptr, ptr %a1 - %t26 = call %S.ast.Node @finch.parser.parseExpr(ptr %t25) - %t27 = load i64, ptr %t24 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - store %S.ast.Node %t26, ptr %t30 - store i64 %t28, ptr %t24 - %t31 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load ptr, ptr %a1 - %t34 = call %S.ast.Node @finch.parser.parseBlock(ptr %t33) - %t35 = load i64, ptr %t32 - %t36 = add i64 %t35, 1 - call void @finch_arr_reserve(ptr %t31, i64 %t36, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t37 = load ptr, ptr %t31 - %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t35 - store %S.ast.Node %t34, ptr %t38 - store i64 %t36, ptr %t32 - %t39 = load %S.ast.Node, ptr %a19 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t39 -endif1573: - %t40 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.895, i64 3, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br i1 %t44, label %then1574, label %endif1576 -then1574: - %t45 = load ptr, ptr %a1 - %t46 = call %S.ast.Node @finch.parser.node(ptr %t45, { ptr, i64, i64 } { ptr @.str.896, i64 3, i64 0 }) - store %S.ast.Node %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = call %S.lexer.Token @finch.parser.next(ptr %t48) - store %S.lexer.Token %t49, ptr %a50 - call void @finch.drop.S_lexer_Token(ptr %a50) - %t51 = load ptr, ptr %a1 - %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.897, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.898, i64 20, i64 0 }) - %t53 = extractvalue %S.lexer.Token %t52, 1 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch_str_copy(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store %S.lexer.Token %t52, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 1 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } %t56, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.899, i64 1, i64 0 }) - br i1 %t62, label %then1577, label %endif1579 -then1577: - %t63 = load ptr, ptr %a1 - %t64 = call %S.lexer.Token @finch.parser.expect(ptr %t63, { ptr, i64, i64 } { ptr @.str.900, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.901, i64 27, i64 0 }) - %t65 = extractvalue %S.lexer.Token %t64, 1 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store %S.lexer.Token %t64, ptr %a69 - call void @finch.drop.S_lexer_Token(ptr %a69) - %t70 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t68, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif1579 -endif1579: - %t73 = load ptr, ptr %a1 - %t74 = call %S.lexer.Token @finch.parser.expect(ptr %t73, { ptr, i64, i64 } { ptr @.str.902, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.903, i64 4, i64 0 }) - store %S.lexer.Token %t74, ptr %a75 - call void @finch.drop.S_lexer_Token(ptr %a75) - %t76 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = call i1 @finch.parser.accept(ptr %t84, { ptr, i64, i64 } { ptr @.str.904, i64 2, i64 0 }) - br i1 %t85, label %then1580, label %else1581 -then1580: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = icmp sgt i64 %t88, 0 - br i1 %t89, label %then1583, label %endif1585 -then1583: - %t90 = load ptr, ptr %a1 - %t91 = load ptr, ptr %a1 - %t92 = call %S.lexer.Token @finch.parser.cur(ptr %t91) - call void @finch.parser.fail(ptr %t90, %S.lexer.Token %t92, { ptr, i64, i64 } { ptr @.str.905, i64 55, i64 0 }) - store %S.lexer.Token %t92, ptr %a93 - call void @finch.drop.S_lexer_Token(ptr %a93) - br label %endif1585 -endif1585: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseExpr(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1582 -else1581: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } { ptr @.str.906, i64 4, i64 0 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1582 -endif1582: - %t105 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1 - %t107 = load ptr, ptr %a1 - %t108 = call %S.ast.Node @finch.parser.parseBlock(ptr %t107) - %t109 = load i64, ptr %t106 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t105, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t105 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t106 - %t113 = load %S.ast.Node, ptr %a47 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t113 -endif1576: - %t114 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.907, i64 5, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br i1 %t118, label %then1586, label %endif1588 -then1586: - %t119 = load ptr, ptr %a1 - %t120 = call %S.ast.Node @finch.parser.parseMatch(ptr %t119, i1 false) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t120 -endif1588: - %t121 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.908, i64 6, i64 0 }, ptr %a123 - %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) - %t125 = icmp ne i32 %t124, 0 - br i1 %t125, label %then1589, label %endif1591 -then1589: - %t126 = load ptr, ptr %a1 - %t127 = call %S.ast.Node @finch.parser.node(ptr %t126, { ptr, i64, i64 } { ptr @.str.909, i64 6, i64 0 }) - store %S.ast.Node %t127, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = call %S.lexer.Token @finch.parser.next(ptr %t129) - store %S.lexer.Token %t130, ptr %a131 - call void @finch.drop.S_lexer_Token(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = call i1 @finch.parser.at(ptr %t132, { ptr, i64, i64 } { ptr @.str.910, i64 1, i64 0 }) - %t134 = xor i1 %t133, true - br label %logic.from1592 -logic.from1592: - br i1 %t134, label %logic.rhs1593, label %logic.end1594 -logic.rhs1593: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1595 -logic.rend1595: - br label %logic.end1594 -logic.end1594: - %t140 = phi i1 [ false, %logic.from1592 ], [ %t139, %logic.rend1595 ] - br i1 %t140, label %then1596, label %endif1598 -then1596: - %t141 = getelementptr inbounds %S.ast.Node, ptr %a128, i32 0, i32 9 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.ast.Node @finch.parser.parseExpr(ptr %t143) - %t145 = load i64, ptr %t142 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t141, i64 %t146, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t141 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t145 - store %S.ast.Node %t144, ptr %t148 - store i64 %t146, ptr %t142 - br label %endif1598 -endif1598: - %t149 = load %S.ast.Node, ptr %a128 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t149 -endif1591: - %t150 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.911, 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.from1599 -logic.from1599: - br i1 %t154, label %logic.end1601, label %logic.rhs1600 -logic.rhs1600: - %t155 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.912, i64 8, i64 0 }, ptr %a157 - %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) - %t159 = icmp ne i32 %t158, 0 - br label %logic.rend1602 -logic.rend1602: - br label %logic.end1601 -logic.end1601: - %t160 = phi i1 [ true, %logic.from1599 ], [ %t159, %logic.rend1602 ] - br i1 %t160, label %then1603, label %endif1605 -then1603: - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a4 - %t163 = call %S.ast.Node @finch.parser.node(ptr %t161, { ptr, i64, i64 } %t162) - store %S.ast.Node %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = load %S.ast.Node, ptr %a164 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t168 -endif1605: - %t169 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.913, i64 1, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then1606, label %endif1608 -then1606: - %t174 = load ptr, ptr %a1 - %t175 = call %S.ast.Node @finch.parser.parseBlock(ptr %t174) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t175 -endif1608: - %t176 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.914, i64 5, i64 0 }, ptr %a178 - %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %then1609, label %endif1611 -then1609: - %t181 = load ptr, ptr %a1 - %t182 = call %S.ast.Node @finch.parser.node(ptr %t181, { ptr, i64, i64 } { ptr @.str.915, i64 5, i64 0 }) - store %S.ast.Node %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = call %S.lexer.Token @finch.parser.next(ptr %t184) - store %S.lexer.Token %t185, ptr %a186 - call void @finch.drop.S_lexer_Token(ptr %a186) - %t187 = load ptr, ptr %a1 - %t188 = call i1 @finch.parser.at(ptr %t187, { ptr, i64, i64 } { ptr @.str.916, i64 5, i64 0 }) - br i1 %t188, label %then1612, label %endif1614 -then1612: - %t189 = load ptr, ptr %a1 - %t190 = load ptr, ptr %a1 - %t191 = call %S.lexer.Token @finch.parser.cur(ptr %t190) - call void @finch.parser.fail(ptr %t189, %S.lexer.Token %t191, { ptr, i64, i64 } { ptr @.str.917, i64 33, i64 0 }) - store %S.lexer.Token %t191, ptr %a192 - call void @finch.drop.S_lexer_Token(ptr %a192) - br label %endif1614 -endif1614: - %t193 = getelementptr inbounds %S.ast.Node, ptr %a183, i32 0, i32 9 - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t193, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call %S.ast.Node @finch.parser.parseStatement(ptr %t195) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %t193, i64 %t198, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %t193 - %t200 = getelementptr inbounds %S.ast.Node, ptr %t199, i64 %t197 - store %S.ast.Node %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = load %S.ast.Node, ptr %a183 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t201 -endif1611: - %t202 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.918, i64 2, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.from1615 -logic.from1615: - br i1 %t206, label %logic.end1617, label %logic.rhs1616 -logic.rhs1616: - %t207 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.919, 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.rend1618 -logic.rend1618: - br label %logic.end1617 -logic.end1617: - %t212 = phi i1 [ true, %logic.from1615 ], [ %t211, %logic.rend1618 ] - br label %logic.from1619 -logic.from1619: - br i1 %t212, label %logic.end1621, label %logic.rhs1620 -logic.rhs1620: - %t213 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.920, i64 6, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br label %logic.rend1622 -logic.rend1622: - br label %logic.end1621 -logic.end1621: - %t218 = phi i1 [ true, %logic.from1619 ], [ %t217, %logic.rend1622 ] - br label %logic.from1623 -logic.from1623: - br i1 %t218, label %logic.end1625, label %logic.rhs1624 -logic.rhs1624: - %t219 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t219, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.921, i64 4, i64 0 }, ptr %a221 - %t222 = call i32 @finch_str_eq(ptr %a220, ptr %a221) - %t223 = icmp ne i32 %t222, 0 - br label %logic.rend1626 -logic.rend1626: - br label %logic.end1625 -logic.end1625: - %t224 = phi i1 [ true, %logic.from1623 ], [ %t223, %logic.rend1626 ] - br i1 %t224, label %then1627, label %endif1629 -then1627: - %t225 = load ptr, ptr %a1 - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.cur(ptr %t226) - %t228 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.922, i64 1, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.923, i64 48, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - call void @finch.parser.fail(ptr %t225, %S.lexer.Token %t227, { ptr, i64, i64 } %t237) - store %S.lexer.Token %t227, ptr %a238 - call void @finch.drop.S_lexer_Token(ptr %a238) - store { ptr, i64, i64 } %t237, ptr %a239 - call void @finch_str_drop(ptr %a239) - br label %endif1629 -endif1629: - %t240 = load ptr, ptr %a1 - %t241 = call i1 @finch.parser.atDeclaration(ptr %t240) - br i1 %t241, label %then1630, label %endif1632 -then1630: - %t242 = load ptr, ptr %a1 - %t243 = call %S.ast.Node @finch.parser.node(ptr %t242, { ptr, i64, i64 } { ptr @.str.924, i64 4, i64 0 }) - store %S.ast.Node %t243, ptr %a244 - %t245 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 6 - store i1 true, ptr %t245 - %t246 = load ptr, ptr %a1 - %t247 = call %S.ast.Type @finch.parser.parseType(ptr %t246) - %t248 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 5 - %t249 = load %S.ast.Type, ptr %t248 - store %S.ast.Type %t247, ptr %t248 - store %S.ast.Type %t249, ptr %a250 - call void @finch.drop.S_ast_Type(ptr %a250) - %t251 = load ptr, ptr %a1 - %t252 = call %S.lexer.Token @finch.parser.expect(ptr %t251, { ptr, i64, i64 } { ptr @.str.925, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.926, i64 15, i64 0 }) - %t253 = extractvalue %S.lexer.Token %t252, 1 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - store %S.lexer.Token %t252, ptr %a257 - call void @finch.drop.S_lexer_Token(ptr %a257) - %t258 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 1 - %t259 = load { ptr, i64, i64 }, ptr %t258 - store { ptr, i64, i64 } %t256, ptr %t258 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = call i1 @finch.parser.accept(ptr %t261, { ptr, i64, i64 } { ptr @.str.927, i64 1, i64 0 }) - br i1 %t262, label %then1633, label %endif1635 -then1633: - %t263 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 9 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load ptr, ptr %a1 - %t266 = call %S.ast.Node @finch.parser.parseExpr(ptr %t265) - %t267 = load i64, ptr %t264 - %t268 = add i64 %t267, 1 - call void @finch_arr_reserve(ptr %t263, i64 %t268, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t269 = load ptr, ptr %t263 - %t270 = getelementptr inbounds %S.ast.Node, ptr %t269, i64 %t267 - store %S.ast.Node %t266, ptr %t270 - store i64 %t268, ptr %t264 - br label %endif1635 -endif1635: - %t271 = load %S.ast.Node, ptr %a244 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t271 -endif1632: - %t272 = load ptr, ptr %a1 - %t273 = call i1 @finch.parser.at(ptr %t272, { ptr, i64, i64 } { ptr @.str.928, i64 5, i64 0 }) - br label %logic.from1636 -logic.from1636: - br i1 %t273, label %logic.rhs1637, label %logic.end1638 -logic.rhs1637: - %t274 = load ptr, ptr %a1 - %t275 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t274, i64 1) - store { ptr, i64, i64 } %t275, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.929, i64 2, i64 0 }, ptr %a277 - %t278 = call i32 @finch_str_eq(ptr %a276, ptr %a277) - %t279 = icmp ne i32 %t278, 0 - store { ptr, i64, i64 } %t275, ptr %a280 - call void @finch_str_drop(ptr %a280) - br label %logic.rend1639 -logic.rend1639: - br label %logic.end1638 -logic.end1638: - %t281 = phi i1 [ false, %logic.from1636 ], [ %t279, %logic.rend1639 ] - br i1 %t281, label %then1640, label %endif1642 -then1640: - %t282 = load ptr, ptr %a1 - %t283 = call %S.ast.Node @finch.parser.node(ptr %t282, { ptr, i64, i64 } { ptr @.str.930, i64 4, i64 0 }) - store %S.ast.Node %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = call %S.lexer.Token @finch.parser.next(ptr %t285) - %t287 = extractvalue %S.lexer.Token %t286, 1 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_copy(ptr %a289, ptr %a288) - %t290 = load { ptr, i64, i64 }, ptr %a289 - store %S.lexer.Token %t286, ptr %a291 - call void @finch.drop.S_lexer_Token(ptr %a291) - %t292 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 1 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } %t290, ptr %t292 - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load ptr, ptr %a1 - %t296 = call %S.lexer.Token @finch.parser.next(ptr %t295) - store %S.lexer.Token %t296, ptr %a297 - call void @finch.drop.S_lexer_Token(ptr %a297) - %t298 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 9 - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 - %t300 = load ptr, ptr %a1 - %t301 = call %S.ast.Node @finch.parser.parseExpr(ptr %t300) - %t302 = load i64, ptr %t299 - %t303 = add i64 %t302, 1 - call void @finch_arr_reserve(ptr %t298, i64 %t303, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t304 = load ptr, ptr %t298 - %t305 = getelementptr inbounds %S.ast.Node, ptr %t304, i64 %t302 - store %S.ast.Node %t301, ptr %t305 - store i64 %t303, ptr %t299 - %t306 = load %S.ast.Node, ptr %a284 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t306 -endif1642: - %t307 = load ptr, ptr %a1 - %t308 = call %S.lexer.Token @finch.parser.cur(ptr %t307) - store %S.lexer.Token %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = call %S.ast.Node @finch.parser.parseExpr(ptr %t310) - store %S.ast.Node %t311, ptr %a312 - %t313 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t314 = call ptr @finch_alloc(i64 %t313) - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 0 - store { ptr, i64, i64 } { ptr @.str.931, i64 1, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 1 - store { ptr, i64, i64 } { ptr @.str.932, i64 2, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 2 - store { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 3 - store { ptr, i64, i64 } { ptr @.str.934, i64 2, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 4 - store { ptr, i64, i64 } { ptr @.str.935, i64 2, i64 0 }, ptr %t319 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 5 - store { ptr, i64, i64 } { ptr @.str.936, i64 2, i64 0 }, ptr %t320 - %t321 = insertvalue { ptr, i64, i64 } undef, ptr %t314, 0 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 1 - %t323 = insertvalue { ptr, i64, i64 } %t322, i64 6, 2 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a324, i32 0, i32 1 - %t326 = load ptr, ptr %a1 - %t327 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t326) - store i64 -1, ptr %a328 - %t329 = load i64, ptr %t325 - %t330 = load ptr, ptr %a324 - store i64 0, ptr %a331 - br label %find.cond1643 -find.cond1643: - %t332 = load i64, ptr %a331 - %t333 = icmp slt i64 %t332, %t329 - br i1 %t333, label %find.body1644, label %find.end1647 -find.body1644: - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t330, i64 %t332 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } %t327, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %find.hit1645, label %find.next1646 -find.hit1645: - store i64 %t332, ptr %a328 - br label %find.end1647 -find.next1646: - %t340 = add i64 %t332, 1 - store i64 %t340, ptr %a331 - br label %find.cond1643 -find.end1647: - store { ptr, i64, i64 } %t327, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load i64, ptr %a328 - %t343 = icmp sge i64 %t342, 0 - br label %logic.from1648 -logic.from1648: - br i1 %t343, label %logic.rhs1649, label %logic.end1650 -logic.rhs1649: - %t344 = load ptr, ptr %a1 - %t345 = call i1 @finch.parser.sameLine(ptr %t344) - br label %logic.rend1651 -logic.rend1651: - br label %logic.end1650 -logic.end1650: - %t346 = phi i1 [ false, %logic.from1648 ], [ %t345, %logic.rend1651 ] - br i1 %t346, label %then1652, label %endif1654 -then1652: - %t347 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.937, i64 3, i64 0 }, ptr %a350 - %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) - %t352 = icmp eq i32 %t351, 0 - br label %logic.from1655 -logic.from1655: - br i1 %t352, label %logic.rhs1656, label %logic.end1657 -logic.rhs1656: - %t353 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t354 = load { ptr, i64, i64 }, ptr %t353 - store { ptr, i64, i64 } %t354, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.938, i64 6, i64 0 }, ptr %a356 - %t357 = call i32 @finch_str_eq(ptr %a355, ptr %a356) - %t358 = icmp eq i32 %t357, 0 - br label %logic.rend1658 -logic.rend1658: - br label %logic.end1657 -logic.end1657: - %t359 = phi i1 [ false, %logic.from1655 ], [ %t358, %logic.rend1658 ] - br label %logic.from1659 -logic.from1659: - br i1 %t359, label %logic.rhs1660, label %logic.end1661 -logic.rhs1660: - %t360 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t361 = load { ptr, i64, i64 }, ptr %t360 - store { ptr, i64, i64 } %t361, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.939, i64 5, i64 0 }, ptr %a363 - %t364 = call i32 @finch_str_eq(ptr %a362, ptr %a363) - %t365 = icmp eq i32 %t364, 0 - br label %logic.rend1662 -logic.rend1662: - br label %logic.end1661 -logic.end1661: - %t366 = phi i1 [ false, %logic.from1659 ], [ %t365, %logic.rend1662 ] - br i1 %t366, label %then1663, label %endif1665 -then1663: - %t367 = load ptr, ptr %a1 - %t368 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t367, %S.lexer.Token %t368, { ptr, i64, i64 } { ptr @.str.940, i64 66, i64 0 }) - br label %endif1665 -endif1665: - %t369 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.941, i64 6, i64 0 }, 0 - %t370 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t371 = load i64, ptr %t370 - %t372 = insertvalue %S.ast.Node %t369, i64 %t371, 11 - %t373 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t374 = load i64, ptr %t373 - %t375 = insertvalue %S.ast.Node %t372, i64 %t374, 12 - %t376 = load ptr, ptr %a1 - %t377 = icmp eq ptr %t376, null - br i1 %t377, label %panic1666, label %ok1667 -panic1666: - call void @finch_panic(ptr @.str.942, i64 584, ptr @.str.943) - unreachable -ok1667: - %t378 = getelementptr inbounds %S.parser.Parser, ptr %t376, i32 0, i32 3 - %t379 = load i64, ptr %t378 - %t380 = insertvalue %S.ast.Node %t375, i64 %t379, 13 - store %S.ast.Node %t380, ptr %a381 - %t382 = load ptr, ptr %a1 - %t383 = call %S.lexer.Token @finch.parser.next(ptr %t382) - %t384 = extractvalue %S.lexer.Token %t383, 0 - store { ptr, i64, i64 } %t384, ptr %a385 - call void @finch_str_copy(ptr %a386, ptr %a385) - %t387 = load { ptr, i64, i64 }, ptr %a386 - store %S.lexer.Token %t383, ptr %a388 - call void @finch.drop.S_lexer_Token(ptr %a388) - %t389 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 1 - %t390 = load { ptr, i64, i64 }, ptr %t389 - store { ptr, i64, i64 } %t387, ptr %t389 - store { ptr, i64, i64 } %t390, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i32 0, i32 1 - %t394 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t394, ptr %a395 - call void @finch.copy.S_ast_Node(ptr %a396, ptr %a395) - %t397 = load %S.ast.Node, ptr %a396 - %t398 = load i64, ptr %t393 - %t399 = add i64 %t398, 1 - call void @finch_arr_reserve(ptr %t392, i64 %t399, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t400 = load ptr, ptr %t392 - %t401 = getelementptr inbounds %S.ast.Node, ptr %t400, i64 %t398 - store %S.ast.Node %t397, ptr %t401 - store i64 %t399, ptr %t393 - %t402 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - %t404 = load ptr, ptr %a1 - %t405 = call %S.ast.Node @finch.parser.parseExpr(ptr %t404) - %t406 = load i64, ptr %t403 - %t407 = add i64 %t406, 1 - call void @finch_arr_reserve(ptr %t402, i64 %t407, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t408 = load ptr, ptr %t402 - %t409 = getelementptr inbounds %S.ast.Node, ptr %t408, i64 %t406 - store %S.ast.Node %t405, ptr %t409 - store i64 %t407, ptr %t403 - %t410 = load %S.ast.Node, ptr %a381 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t410 -endif1654: - %t411 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t412 = load { ptr, i64, i64 }, ptr %t411 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.944, i64 4, i64 0 }, ptr %a414 - %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) - %t416 = icmp eq i32 %t415, 0 - br label %logic.from1668 -logic.from1668: - br i1 %t416, label %logic.rhs1669, label %logic.end1670 -logic.rhs1669: - %t417 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t418 = load { ptr, i64, i64 }, ptr %t417 - store { ptr, i64, i64 } %t418, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.945, i64 6, i64 0 }, ptr %a420 - %t421 = call i32 @finch_str_eq(ptr %a419, ptr %a420) - %t422 = icmp eq i32 %t421, 0 - br label %logic.rend1671 -logic.rend1671: - br label %logic.end1670 -logic.end1670: - %t423 = phi i1 [ false, %logic.from1668 ], [ %t422, %logic.rend1671 ] - br label %logic.from1672 -logic.from1672: - br i1 %t423, label %logic.rhs1673, label %logic.end1674 -logic.rhs1673: - %t424 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.946, i64 3, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br label %logic.rend1675 -logic.rend1675: - br label %logic.end1674 -logic.end1674: - %t430 = phi i1 [ false, %logic.from1672 ], [ %t429, %logic.rend1675 ] - br label %logic.from1676 -logic.from1676: - br i1 %t430, label %logic.rhs1677, label %logic.end1678 -logic.rhs1677: - %t431 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t432 = load { ptr, i64, i64 }, ptr %t431 - store { ptr, i64, i64 } %t432, ptr %a433 - store { ptr, i64, i64 } { ptr @.str.947, i64 2, i64 0 }, ptr %a434 - %t435 = call i32 @finch_str_eq(ptr %a433, ptr %a434) - %t436 = icmp eq i32 %t435, 0 - br label %logic.rend1679 -logic.rend1679: - br label %logic.end1678 -logic.end1678: - %t437 = phi i1 [ false, %logic.from1676 ], [ %t436, %logic.rend1679 ] - br i1 %t437, label %then1680, label %endif1682 -then1680: - %t438 = load ptr, ptr %a1 - %t439 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t438, %S.lexer.Token %t439, { ptr, i64, i64 } { ptr @.str.948, i64 37, i64 0 }) - br label %endif1682 -endif1682: - %t440 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.949, i64 4, i64 0 }, 0 - %t441 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t442 = load i64, ptr %t441 - %t443 = insertvalue %S.ast.Node %t440, i64 %t442, 11 - %t444 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t445 = load i64, ptr %t444 - %t446 = insertvalue %S.ast.Node %t443, i64 %t445, 12 - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic1683, label %ok1684 -panic1683: - call void @finch_panic(ptr @.str.950, i64 593, ptr @.str.951) - unreachable -ok1684: - %t449 = getelementptr inbounds %S.parser.Parser, ptr %t447, i32 0, i32 3 - %t450 = load i64, ptr %t449 - %t451 = insertvalue %S.ast.Node %t446, i64 %t450, 13 - store %S.ast.Node %t451, ptr %a452 - %t453 = getelementptr inbounds %S.ast.Node, ptr %a452, i32 0, i32 9 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i32 0, i32 1 - %t455 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t455, ptr %a456 - call void @finch.copy.S_ast_Node(ptr %a457, ptr %a456) - %t458 = load %S.ast.Node, ptr %a457 - %t459 = load i64, ptr %t454 - %t460 = add i64 %t459, 1 - call void @finch_arr_reserve(ptr %t453, i64 %t460, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t461 = load ptr, ptr %t453 - %t462 = getelementptr inbounds %S.ast.Node, ptr %t461, i64 %t459 - store %S.ast.Node %t458, ptr %t462 - store i64 %t460, ptr %t454 - %t463 = load %S.ast.Node, ptr %a452 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t463 -} - -define internal %S.ast.Node @finch.parser.parseIf(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.952, 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.953, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.954, i64 4, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseExpr(ptr %t10) - %t12 = load i64, ptr %t9 - %t13 = add i64 %t12, 1 - call void @finch_arr_reserve(ptr %t8, i64 %t13, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t14 = load ptr, ptr %t8 - %t15 = getelementptr inbounds %S.ast.Node, ptr %t14, i64 %t12 - store %S.ast.Node %t11, ptr %t15 - store i64 %t13, ptr %t9 - %t16 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 - %t18 = load ptr, ptr %a1 - %t19 = call %S.ast.Node @finch.parser.parseBlock(ptr %t18) - %t20 = load i64, ptr %t17 - %t21 = add i64 %t20, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t21, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t22 = load ptr, ptr %t16 - %t23 = getelementptr inbounds %S.ast.Node, ptr %t22, i64 %t20 - store %S.ast.Node %t19, ptr %t23 - store i64 %t21, ptr %t17 - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.accept(ptr %t24, { ptr, i64, i64 } { ptr @.str.955, i64 4, i64 0 }) - br i1 %t25, label %then1685, label %endif1687 -then1685: - %t26 = load ptr, ptr %a1 - %t27 = call i1 @finch.parser.at(ptr %t26, { ptr, i64, i64 } { ptr @.str.956, i64 2, i64 0 }) - br i1 %t27, label %then1688, label %else1689 -then1688: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.parseIf(ptr %t30) - %t32 = load i64, ptr %t29 - %t33 = add i64 %t32, 1 - call void @finch_arr_reserve(ptr %t28, i64 %t33, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t34 = load ptr, ptr %t28 - %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 - store %S.ast.Node %t31, ptr %t35 - store i64 %t33, ptr %t29 - br label %endif1690 -else1689: - %t36 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load ptr, ptr %a1 - %t39 = call %S.ast.Node @finch.parser.parseBlock(ptr %t38) - %t40 = load i64, ptr %t37 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t36 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t37 - br label %endif1690 -endif1690: - br label %endif1687 -endif1687: - %t44 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t44 -} - -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.957, 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 %then1691, label %endif1693 -then1691: - ret i64 1 -endif1693: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.958, 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 %then1694, label %endif1696 -then1694: - ret i64 2 -endif1696: - %t12 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.959, 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.from1697 -logic.from1697: - br i1 %t16, label %logic.end1699, label %logic.rhs1698 -logic.rhs1698: - %t17 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.960, 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.rend1700 -logic.rend1700: - br label %logic.end1699 -logic.end1699: - %t22 = phi i1 [ true, %logic.from1697 ], [ %t21, %logic.rend1700 ] - br label %logic.from1701 -logic.from1701: - br i1 %t22, label %logic.end1703, label %logic.rhs1702 -logic.rhs1702: - %t23 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.961, 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.rend1704 -logic.rend1704: - br label %logic.end1703 -logic.end1703: - %t28 = phi i1 [ true, %logic.from1701 ], [ %t27, %logic.rend1704 ] - br label %logic.from1705 -logic.from1705: - br i1 %t28, label %logic.end1707, label %logic.rhs1706 -logic.rhs1706: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.962, 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.rend1708 -logic.rend1708: - br label %logic.end1707 -logic.end1707: - %t34 = phi i1 [ true, %logic.from1705 ], [ %t33, %logic.rend1708 ] - br label %logic.from1709 -logic.from1709: - br i1 %t34, label %logic.end1711, label %logic.rhs1710 -logic.rhs1710: - %t35 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.963, 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.rend1712 -logic.rend1712: - br label %logic.end1711 -logic.end1711: - %t40 = phi i1 [ true, %logic.from1709 ], [ %t39, %logic.rend1712 ] - br label %logic.from1713 -logic.from1713: - br i1 %t40, label %logic.end1715, label %logic.rhs1714 -logic.rhs1714: - %t41 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.964, 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.rend1716 -logic.rend1716: - br label %logic.end1715 -logic.end1715: - %t46 = phi i1 [ true, %logic.from1713 ], [ %t45, %logic.rend1716 ] - br i1 %t46, label %then1717, label %endif1719 -then1717: - ret i64 3 -endif1719: - %t47 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.965, 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.from1720 -logic.from1720: - br i1 %t51, label %logic.end1722, label %logic.rhs1721 -logic.rhs1721: - %t52 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.966, 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.rend1723 -logic.rend1723: - br label %logic.end1722 -logic.end1722: - %t57 = phi i1 [ true, %logic.from1720 ], [ %t56, %logic.rend1723 ] - br label %logic.from1724 -logic.from1724: - br i1 %t57, label %logic.end1726, label %logic.rhs1725 -logic.rhs1725: - %t58 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.967, 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.rend1727 -logic.rend1727: - br label %logic.end1726 -logic.end1726: - %t63 = phi i1 [ true, %logic.from1724 ], [ %t62, %logic.rend1727 ] - br label %logic.from1728 -logic.from1728: - br i1 %t63, label %logic.end1730, label %logic.rhs1729 -logic.rhs1729: - %t64 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.968, 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.rend1731 -logic.rend1731: - br label %logic.end1730 -logic.end1730: - %t69 = phi i1 [ true, %logic.from1728 ], [ %t68, %logic.rend1731 ] - br i1 %t69, label %then1732, label %endif1734 -then1732: - ret i64 4 -endif1734: - %t70 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.969, 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.from1735 -logic.from1735: - br i1 %t74, label %logic.end1737, label %logic.rhs1736 -logic.rhs1736: - %t75 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.970, 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.rend1738 -logic.rend1738: - br label %logic.end1737 -logic.end1737: - %t80 = phi i1 [ true, %logic.from1735 ], [ %t79, %logic.rend1738 ] - br label %logic.from1739 -logic.from1739: - br i1 %t80, label %logic.end1741, label %logic.rhs1740 -logic.rhs1740: - %t81 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.971, 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.rend1742 -logic.rend1742: - br label %logic.end1741 -logic.end1741: - %t86 = phi i1 [ true, %logic.from1739 ], [ %t85, %logic.rend1742 ] - br label %logic.from1743 -logic.from1743: - br i1 %t86, label %logic.end1745, label %logic.rhs1744 -logic.rhs1744: - %t87 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.972, 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.rend1746 -logic.rend1746: - br label %logic.end1745 -logic.end1745: - %t92 = phi i1 [ true, %logic.from1743 ], [ %t91, %logic.rend1746 ] - br label %logic.from1747 -logic.from1747: - br i1 %t92, label %logic.end1749, label %logic.rhs1748 -logic.rhs1748: - %t93 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.973, 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.rend1750 -logic.rend1750: - br label %logic.end1749 -logic.end1749: - %t98 = phi i1 [ true, %logic.from1747 ], [ %t97, %logic.rend1750 ] - br label %logic.from1751 -logic.from1751: - br i1 %t98, label %logic.end1753, label %logic.rhs1752 -logic.rhs1752: - %t99 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.974, 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.rend1754 -logic.rend1754: - br label %logic.end1753 -logic.end1753: - %t104 = phi i1 [ true, %logic.from1751 ], [ %t103, %logic.rend1754 ] - br i1 %t104, label %then1755, label %endif1757 -then1755: - ret i64 5 -endif1757: - 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 - %a15 = alloca %S.ast.Node, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a22 = alloca %S.ast.Node, align 16 - %a23 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1) - 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.from1758 -logic.from1758: - br i1 %t7, label %logic.end1760, label %logic.rhs1759 -logic.rhs1759: - %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.975, i64 2, i64 0 }) - %t10 = xor i1 %t9, true - br label %logic.rend1761 -logic.rend1761: - br label %logic.end1760 -logic.end1760: - %t11 = phi i1 [ true, %logic.from1758 ], [ %t10, %logic.rend1761 ] - br i1 %t11, label %then1762, label %endif1764 -then1762: - %t12 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t12 -endif1764: - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.node(ptr %t13, { ptr, i64, i64 } { ptr @.str.976, i64 2, i64 0 }) - store %S.ast.Node %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = call %S.lexer.Token @finch.parser.next(ptr %t16) - store %S.lexer.Token %t17, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - %t19 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t21, ptr %a22 - call void @finch.copy.S_ast_Node(ptr %a23, ptr %a22) - %t24 = load %S.ast.Node, ptr %a23 - %t25 = load i64, ptr %t20 - %t26 = add i64 %t25, 1 - call void @finch_arr_reserve(ptr %t19, i64 %t26, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t27 = load ptr, ptr %t19 - %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 %t25 - store %S.ast.Node %t24, ptr %t28 - store i64 %t26, ptr %t20 - %t29 = load ptr, ptr %a1 - %t30 = call i1 @finch.parser.at(ptr %t29, { ptr, i64, i64 } { ptr @.str.977, i64 1, i64 0 }) - br i1 %t30, label %then1765, label %else1766 -then1765: - %t31 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 6 - store i1 true, ptr %t31 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i32 0, i32 1 - %t34 = load ptr, ptr %a1 - %t35 = call %S.ast.Node @finch.parser.parseBlock(ptr %t34) - %t36 = load i64, ptr %t33 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t32, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t32 - %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 - store %S.ast.Node %t35, ptr %t39 - store i64 %t37, ptr %t33 - br label %endif1767 -else1766: - %t40 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseExpr(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - br label %endif1767 -endif1767: - %t48 = load %S.ast.Node, ptr %a15 - call void @finch.drop.S_ast_Node(ptr %a4) - ret %S.ast.Node %t48 -} - -define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a11 = alloca %S.ast.Node, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.ast.Node, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.lexer.Token, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a55 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load i64, ptr %a2 - %t4 = icmp sgt i64 %t3, 5 - br i1 %t4, label %then1768, label %endif1770 -then1768: - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) - ret %S.ast.Node %t6 -endif1770: - %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.cond1771 -while.cond1771: - %t12 = load ptr, ptr %a1 - %t13 = call i1 @finch.parser.sameLine(ptr %t12) - br label %logic.from1774 -logic.from1774: - br i1 %t13, label %logic.rhs1775, label %logic.end1776 -logic.rhs1775: - %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) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load i64, ptr %a2 - %t19 = icmp eq i64 %t16, %t18 - br label %logic.rend1777 -logic.rend1777: - br label %logic.end1776 -logic.end1776: - %t20 = phi i1 [ false, %logic.from1774 ], [ %t19, %logic.rend1777 ] - br i1 %t20, label %while.body1772, label %while.end1773 -while.body1772: - %t21 = load ptr, ptr %a1 - %t22 = call %S.ast.Node @finch.parser.node(ptr %t21, { ptr, i64, i64 } { ptr @.str.978, i64 6, i64 0 }) - store %S.ast.Node %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.next(ptr %t24) - %t26 = extractvalue %S.lexer.Token %t25, 0 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_copy(ptr %a28, ptr %a27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store %S.lexer.Token %t25, ptr %a30 - call void @finch.drop.S_lexer_Token(ptr %a30) - %t31 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t29, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 - %t36 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t36, ptr %a37 - call void @finch.copy.S_ast_Node(ptr %a38, ptr %a37) - %t39 = load %S.ast.Node, ptr %a38 - %t40 = load i64, ptr %t35 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t34, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t34 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a2 - %t48 = add i64 %t47, 1 - %t49 = call %S.ast.Node @finch.parser.parseBinary(ptr %t46, i64 %t48) - %t50 = load i64, ptr %t45 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t44 - %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 %t50 - store %S.ast.Node %t49, ptr %t53 - store i64 %t51, ptr %t45 - %t54 = load %S.ast.Node, ptr %a23 - store %S.ast.Node %t54, ptr %a55 - call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) - %t57 = load %S.ast.Node, ptr %a56 - %t58 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t57, ptr %a11 - store %S.ast.Node %t58, ptr %a59 - call void @finch.drop.S_ast_Node(ptr %a59) - call void @finch.drop.S_ast_Node(ptr %a23) - br label %while.cond1771 -while.end1773: - %t60 = load %S.ast.Node, ptr %a11 - ret %S.ast.Node %t60 -} - -define internal %S.ast.Node @finch.parser.parseUnary(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.ast.Node, align 16 - %a9 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.979, i64 3, i64 0 }) - br i1 %t3, label %then1778, label %endif1780 -then1778: - %t4 = load ptr, ptr %a1 - %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.980, 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) - store %S.lexer.Token %t8, ptr %a9 - call void @finch.drop.S_lexer_Token(ptr %a9) - %t10 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load ptr, ptr %a1 - %t13 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t12) - %t14 = load i64, ptr %t11 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %t10 - %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 - store %S.ast.Node %t13, ptr %t17 - store i64 %t15, ptr %t11 - %t18 = load %S.ast.Node, ptr %a6 - ret %S.ast.Node %t18 -endif1780: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.981, i64 1, i64 0 }) - br label %logic.from1781 -logic.from1781: - br i1 %t20, label %logic.end1783, label %logic.rhs1782 -logic.rhs1782: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.982, i64 1, i64 0 }) - br label %logic.rend1784 -logic.rend1784: - br label %logic.end1783 -logic.end1783: - %t23 = phi i1 [ true, %logic.from1781 ], [ %t22, %logic.rend1784 ] - br label %logic.from1785 -logic.from1785: - br i1 %t23, label %logic.end1787, label %logic.rhs1786 -logic.rhs1786: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }) - br label %logic.rend1788 -logic.rend1788: - br label %logic.end1787 -logic.end1787: - %t26 = phi i1 [ true, %logic.from1785 ], [ %t25, %logic.rend1788 ] - br i1 %t26, label %then1789, label %endif1791 -then1789: - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.node(ptr %t27, { ptr, i64, i64 } { ptr @.str.984, i64 5, i64 0 }) - store %S.ast.Node %t28, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = call %S.lexer.Token @finch.parser.next(ptr %t30) - %t32 = extractvalue %S.lexer.Token %t31, 0 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_copy(ptr %a34, ptr %a33) - %t35 = load { ptr, i64, i64 }, ptr %a34 - store %S.lexer.Token %t31, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - %t37 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t35, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseUnary(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - %t48 = load %S.ast.Node, ptr %a29 - ret %S.ast.Node %t48 -endif1791: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t49) - ret %S.ast.Node %t50 -} - -define internal void @finch.parser.parseArgs(ptr %p0, ptr %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca ptr, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a17 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.985, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.986, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1792, label %ok1793 -panic1792: - call void @finch_panic(ptr @.str.987, i64 686, ptr @.str.988) - unreachable -ok1793: - %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 2 - %t9 = load i64, ptr %t8 - %t10 = add i64 %t9, 1 - store i64 %t10, ptr %t8 - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.989, i64 1, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1794, label %endif1796 -then1794: - br label %while.cond1797 -while.cond1797: - %t14 = load ptr, ptr %a1 - %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.990, i64 1, i64 0 }) - %t16 = xor i1 %t15, true - br i1 %t16, label %while.body1798, label %while.end1799 -while.body1798: - store { ptr, i64, i64 } { ptr @.str.991, i64 0, i64 0 }, ptr %a17 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.992, i64 5, i64 0 }) - br label %logic.from1800 -logic.from1800: - br i1 %t19, label %logic.rhs1801, label %logic.end1802 -logic.rhs1801: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t20, i64 1) - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.993, i64 1, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - br label %logic.rend1803 -logic.rend1803: - br label %logic.end1802 -logic.end1802: - %t27 = phi i1 [ false, %logic.from1800 ], [ %t25, %logic.rend1803 ] - br i1 %t27, label %then1804, label %endif1806 -then1804: - %t28 = load ptr, ptr %a1 - %t29 = call %S.lexer.Token @finch.parser.next(ptr %t28) - %t30 = extractvalue %S.lexer.Token %t29, 1 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_copy(ptr %a32, ptr %a31) - %t33 = load { ptr, i64, i64 }, ptr %a32 - store %S.lexer.Token %t29, ptr %a34 - call void @finch.drop.S_lexer_Token(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t33, ptr %a17 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.next(ptr %t37) - store %S.lexer.Token %t38, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - br label %endif1806 -endif1806: - %t40 = load ptr, ptr %a2 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic1807, label %ok1808 -panic1807: - call void @finch_panic(ptr @.str.994, i64 694, ptr @.str.995) - unreachable -ok1808: - %t42 = getelementptr inbounds %S.ast.Node, ptr %t40, i32 0, i32 10 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - %t48 = load i64, ptr %t43 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t42 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t43 - %t52 = load ptr, ptr %a2 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic1809, label %ok1810 -panic1809: - call void @finch_panic(ptr @.str.996, i64 695, ptr @.str.997) - unreachable -ok1810: - %t54 = getelementptr inbounds %S.ast.Node, ptr %t52, i32 0, i32 9 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 - %t56 = load ptr, ptr %a1 - %t57 = call %S.ast.Node @finch.parser.parseExpr(ptr %t56) - %t58 = load i64, ptr %t55 - %t59 = add i64 %t58, 1 - call void @finch_arr_reserve(ptr %t54, i64 %t59, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t60 = load ptr, ptr %t54 - %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i64 %t58 - store %S.ast.Node %t57, ptr %t61 - store i64 %t59, ptr %t55 - %t62 = load ptr, ptr %a1 - %t63 = call i1 @finch.parser.accept(ptr %t62, { ptr, i64, i64 } { ptr @.str.998, i64 1, i64 0 }) - %t64 = xor i1 %t63, true - br i1 %t64, label %then1811, label %endif1813 -then1811: - call void @finch_str_drop(ptr %a17) - br label %while.end1799 -endif1813: - call void @finch_str_drop(ptr %a17) - br label %while.cond1797 -while.end1799: - br label %endif1796 -endif1796: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic1814, label %ok1815 -panic1814: - call void @finch_panic(ptr @.str.999, i64 701, ptr @.str.1000) - unreachable -ok1815: - %t67 = getelementptr inbounds %S.parser.Parser, ptr %t65, i32 0, i32 2 - %t68 = load i64, ptr %t67 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %t67 - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.1001, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1002, i64 3, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - 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 - %a14 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.ast.Node, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a40 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 - %a57 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a69 = alloca %S.ast.Node, align 16 - %a70 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.ast.Node, align 16 - %a94 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parsePrimary(ptr %t2) - store %S.ast.Node %t3, ptr %a4 - br label %while.cond1816 -while.cond1816: - %t5 = load ptr, ptr %a1 - %t6 = call i1 @finch.parser.sameLine(ptr %t5) - br i1 %t6, label %while.body1817, label %while.end1818 -while.body1817: - %t7 = load ptr, ptr %a1 - %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.1003, i64 1, i64 0 }) - br i1 %t8, label %then1819, label %else1820 -then1819: - %t9 = load ptr, ptr %a1 - %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.1004, 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) - store %S.lexer.Token %t13, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.expect(ptr %t15, { ptr, i64, i64 } { ptr @.str.1005, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.1006, i64 16, i64 0 }) - %t17 = extractvalue %S.lexer.Token %t16, 1 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store %S.lexer.Token %t16, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t20, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t27, ptr %a28 - call void @finch.copy.S_ast_Node(ptr %a29, ptr %a28) - %t30 = load %S.ast.Node, ptr %a29 - %t31 = load i64, ptr %t26 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t25 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 - store %S.ast.Node %t30, ptr %t34 - store i64 %t32, ptr %t26 - %t35 = load ptr, ptr %a1 - %t36 = call i1 @finch.parser.at(ptr %t35, { ptr, i64, i64 } { ptr @.str.1007, i64 1, i64 0 }) - br label %logic.from1822 -logic.from1822: - br i1 %t36, label %logic.rhs1823, label %logic.end1824 -logic.rhs1823: - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.cur(ptr %t37) - %t39 = extractvalue %S.lexer.Token %t38, 4 - store %S.lexer.Token %t38, ptr %a40 - call void @finch.drop.S_lexer_Token(ptr %a40) - %t41 = xor i1 %t39, true - br label %logic.rend1825 -logic.rend1825: - br label %logic.end1824 -logic.end1824: - %t42 = phi i1 [ false, %logic.from1822 ], [ %t41, %logic.rend1825 ] - br i1 %t42, label %then1826, label %endif1828 -then1826: - %t43 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.1008, i64 6, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t46, ptr %a11) - br label %endif1828 -endif1828: - %t47 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t47, ptr %a48 - call void @finch.copy.S_ast_Node(ptr %a49, ptr %a48) - %t50 = load %S.ast.Node, ptr %a49 - %t51 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t50, ptr %a4 - store %S.ast.Node %t51, ptr %a52 - call void @finch.drop.S_ast_Node(ptr %a52) - call void @finch.drop.S_ast_Node(ptr %a11) - br label %endif1821 -else1820: - %t53 = load ptr, ptr %a1 - %t54 = call i1 @finch.parser.at(ptr %t53, { ptr, i64, i64 } { ptr @.str.1009, i64 1, i64 0 }) - br i1 %t54, label %then1829, label %else1830 -then1829: - %t55 = load ptr, ptr %a1 - %t56 = call %S.ast.Node @finch.parser.node(ptr %t55, { ptr, i64, i64 } { ptr @.str.1010, i64 5, i64 0 }) - store %S.ast.Node %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = call %S.lexer.Token @finch.parser.next(ptr %t58) - store %S.lexer.Token %t59, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic1832, label %ok1833 -panic1832: - call void @finch_panic(ptr @.str.1011, i64 721, ptr @.str.1012) - unreachable -ok1833: - %t63 = getelementptr inbounds %S.parser.Parser, ptr %t61, i32 0, i32 2 - %t64 = load i64, ptr %t63 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %t63 - %t66 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 - %t68 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t68, ptr %a69 - call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) - %t71 = load %S.ast.Node, ptr %a70 - %t72 = load i64, ptr %t67 - %t73 = add i64 %t72, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t74 = load ptr, ptr %t66 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 - store %S.ast.Node %t71, ptr %t75 - store i64 %t73, ptr %t67 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic1834, label %ok1835 -panic1834: - call void @finch_panic(ptr @.str.1013, i64 724, ptr @.str.1014) - unreachable -ok1835: - %t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 2 - %t87 = load i64, ptr %t86 - %t88 = sub i64 %t87, 1 - store i64 %t88, ptr %t86 - %t89 = load ptr, ptr %a1 - %t90 = call %S.lexer.Token @finch.parser.expect(ptr %t89, { ptr, i64, i64 } { ptr @.str.1015, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1016, i64 3, i64 0 }) - store %S.lexer.Token %t90, ptr %a91 - call void @finch.drop.S_lexer_Token(ptr %a91) - %t92 = load %S.ast.Node, ptr %a57 - store %S.ast.Node %t92, ptr %a93 - call void @finch.copy.S_ast_Node(ptr %a94, ptr %a93) - %t95 = load %S.ast.Node, ptr %a94 - %t96 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t95, ptr %a4 - store %S.ast.Node %t96, ptr %a97 - call void @finch.drop.S_ast_Node(ptr %a97) - call void @finch.drop.S_ast_Node(ptr %a57) - br label %endif1831 -else1830: - %t98 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t98 -endif1831: - br label %endif1821 -endif1821: - br label %while.cond1816 -while.end1818: - %t99 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t99 -} - -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 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca %S.lexer.Token, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.lexer.Token, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.lexer.Token, align 16 - %a122 = alloca %S.ast.Node, align 16 - %a130 = alloca %S.lexer.Token, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.lexer.Token, align 16 - %a219 = alloca %S.lexer.Token, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.lexer.Token, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca %S.lexer.Token, align 16 - %a268 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.lexer.Token, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca %S.lexer.Token, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.lexer.Token @finch.parser.cur(ptr %t2) - store %S.lexer.Token %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.1017, 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.1018, 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.from1836 -logic.from1836: - br i1 %t18, label %logic.end1838, label %logic.rhs1837 -logic.rhs1837: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1019, 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.rend1839 -logic.rend1839: - br label %logic.end1838 -logic.end1838: - %t24 = phi i1 [ true, %logic.from1836 ], [ %t23, %logic.rend1839 ] - br label %logic.from1840 -logic.from1840: - br i1 %t24, label %logic.end1842, label %logic.rhs1841 -logic.rhs1841: - %t25 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1020, 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.rend1843 -logic.rend1843: - br label %logic.end1842 -logic.end1842: - %t30 = phi i1 [ true, %logic.from1840 ], [ %t29, %logic.rend1843 ] - br i1 %t30, label %then1844, label %endif1846 -then1844: - %t31 = load ptr, ptr %a1 - %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) - store %S.lexer.Token %t32, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a13 - %t35 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } %t34, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = load { ptr, i64, i64 }, ptr %t35 - store { ptr, i64, i64 } %t38, ptr %t35 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_copy(ptr %a45, ptr %a44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - %t47 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t46, ptr %t43 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t49 -endif1846: - %t50 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1021, i64 6, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1847, label %endif1849 -then1847: - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.next(ptr %t55) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } { ptr @.str.1022, i64 3, i64 0 }, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t62, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t66, ptr %t63 - store { ptr, i64, i64 } %t67, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t69 -endif1849: - %t70 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1023, i64 4, i64 0 }, ptr %a72 - %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) - %t74 = icmp ne i32 %t73, 0 - br label %logic.from1850 -logic.from1850: - br i1 %t74, label %logic.end1852, label %logic.rhs1851 -logic.rhs1851: - %t75 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1024, i64 5, i64 0 }, ptr %a77 - %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) - %t79 = icmp ne i32 %t78, 0 - br label %logic.rend1853 -logic.rend1853: - br label %logic.end1852 -logic.end1852: - %t80 = phi i1 [ true, %logic.from1850 ], [ %t79, %logic.rend1853 ] - br i1 %t80, label %then1854, label %endif1856 -then1854: - %t81 = load ptr, ptr %a1 - %t82 = call %S.lexer.Token @finch.parser.next(ptr %t81) - store %S.lexer.Token %t82, ptr %a83 - call void @finch.drop.S_lexer_Token(ptr %a83) - %t84 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } { ptr @.str.1025, i64 4, i64 0 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a13 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t94 -endif1856: - %t95 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.1026, i64 4, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then1857, label %endif1859 -then1857: - %t100 = load ptr, ptr %a1 - %t101 = call %S.lexer.Token @finch.parser.next(ptr %t100) - store %S.lexer.Token %t101, ptr %a102 - call void @finch.drop.S_lexer_Token(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } { ptr @.str.1027, i64 4, i64 0 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t106 -endif1859: - %t107 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1028, i64 1, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then1860, label %endif1862 -then1860: - %t112 = load ptr, ptr %a1 - %t113 = call %S.lexer.Token @finch.parser.next(ptr %t112) - store %S.lexer.Token %t113, ptr %a114 - call void @finch.drop.S_lexer_Token(ptr %a114) - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic1863, label %ok1864 -panic1863: - call void @finch_panic(ptr @.str.1029, i64 763, ptr @.str.1030) - unreachable -ok1864: - %t117 = getelementptr inbounds %S.parser.Parser, ptr %t115, i32 0, i32 2 - %t118 = load i64, ptr %t117 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %t117 - %t120 = load ptr, ptr %a1 - %t121 = call %S.ast.Node @finch.parser.parseExpr(ptr %t120) - store %S.ast.Node %t121, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic1865, label %ok1866 -panic1865: - call void @finch_panic(ptr @.str.1031, i64 765, ptr @.str.1032) - unreachable -ok1866: - %t125 = getelementptr inbounds %S.parser.Parser, ptr %t123, i32 0, i32 2 - %t126 = load i64, ptr %t125 - %t127 = sub i64 %t126, 1 - store i64 %t127, ptr %t125 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.expect(ptr %t128, { ptr, i64, i64 } { ptr @.str.1033, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1034, i64 3, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - %t131 = load %S.ast.Node, ptr %a122 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t131 -endif1862: - %t132 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1035, i64 5, i64 0 }, ptr %a134 - %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) - %t136 = icmp ne i32 %t135, 0 - br i1 %t136, label %then1867, label %endif1869 -then1867: - %t137 = load ptr, ptr %a1 - %t138 = call %S.ast.Node @finch.parser.parseMatch(ptr %t137, i1 true) - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t138 -endif1869: - %t139 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1036, i64 1, i64 0 }, ptr %a141 - %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) - %t143 = icmp ne i32 %t142, 0 - br i1 %t143, label %then1870, label %endif1872 -then1870: - %t144 = load ptr, ptr %a1 - %t145 = call %S.lexer.Token @finch.parser.next(ptr %t144) - store %S.lexer.Token %t145, ptr %a146 - call void @finch.drop.S_lexer_Token(ptr %a146) - %t147 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.1037, i64 5, i64 0 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic1873, label %ok1874 -panic1873: - call void @finch_panic(ptr @.str.1038, i64 775, ptr @.str.1039) - unreachable -ok1874: - %t152 = getelementptr inbounds %S.parser.Parser, ptr %t150, i32 0, i32 2 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - store i64 %t154, ptr %t152 - %t155 = load ptr, ptr %a1 - %t156 = call i1 @finch.parser.at(ptr %t155, { ptr, i64, i64 } { ptr @.str.1040, i64 1, i64 0 }) - br label %logic.from1875 -logic.from1875: - br i1 %t156, label %logic.rhs1876, label %logic.end1877 -logic.rhs1876: - %t157 = load ptr, ptr %a1 - %t158 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t157, i64 1) - store { ptr, i64, i64 } %t158, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.1041, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - br label %logic.rend1878 -logic.rend1878: - br label %logic.end1877 -logic.end1877: - %t164 = phi i1 [ false, %logic.from1875 ], [ %t162, %logic.rend1878 ] - br i1 %t164, label %then1879, label %endif1881 -then1879: - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } { ptr @.str.1042, i64 3, i64 0 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1881 -endif1881: - br label %while.cond1882 -while.cond1882: - %t171 = load ptr, ptr %a1 - %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1043, i64 1, i64 0 }) - %t173 = xor i1 %t172, true - br i1 %t173, label %while.body1883, label %while.end1884 -while.body1883: - %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 - %t176 = load ptr, ptr %a1 - %t177 = call %S.ast.Node @finch.parser.parseExpr(ptr %t176) - %t178 = load i64, ptr %t175 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t174, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t174 - %t181 = getelementptr inbounds %S.ast.Node, ptr %t180, i64 %t178 - store %S.ast.Node %t177, ptr %t181 - store i64 %t179, ptr %t175 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = icmp eq i64 %t184, 1 - br label %logic.from1885 -logic.from1885: - br i1 %t185, label %logic.rhs1886, label %logic.end1887 -logic.rhs1886: - %t186 = load ptr, ptr %a1 - %t187 = call i1 @finch.parser.at(ptr %t186, { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }) - br label %logic.rend1888 -logic.rend1888: - br label %logic.end1887 -logic.end1887: - %t188 = phi i1 [ false, %logic.from1885 ], [ %t187, %logic.rend1888 ] - br i1 %t188, label %then1889, label %endif1891 -then1889: - %t189 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.1045, i64 3, i64 0 }, ptr %t189 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - br label %endif1891 -endif1891: - %t192 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.1046, i64 3, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then1892, label %endif1894 -then1892: - %t198 = load ptr, ptr %a1 - %t199 = call %S.lexer.Token @finch.parser.expect(ptr %t198, { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1048, i64 41, i64 0 }) - store %S.lexer.Token %t199, ptr %a200 - call void @finch.drop.S_lexer_Token(ptr %a200) - %t201 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load ptr, ptr %a1 - %t204 = call %S.ast.Node @finch.parser.parseExpr(ptr %t203) - %t205 = load i64, ptr %t202 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t201, i64 %t206, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t201 - %t208 = getelementptr inbounds %S.ast.Node, ptr %t207, i64 %t205 - store %S.ast.Node %t204, ptr %t208 - store i64 %t206, ptr %t202 - br label %endif1894 -endif1894: - %t209 = load ptr, ptr %a1 - %t210 = call i1 @finch.parser.accept(ptr %t209, { ptr, i64, i64 } { ptr @.str.1049, i64 1, i64 0 }) - %t211 = xor i1 %t210, true - br i1 %t211, label %then1895, label %endif1897 -then1895: - br label %while.end1884 -endif1897: - br label %while.cond1882 -while.end1884: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic1898, label %ok1899 -panic1898: - call void @finch_panic(ptr @.str.1050, i64 793, ptr @.str.1051) - unreachable -ok1899: - %t214 = getelementptr inbounds %S.parser.Parser, ptr %t212, i32 0, i32 2 - %t215 = load i64, ptr %t214 - %t216 = sub i64 %t215, 1 - store i64 %t216, ptr %t214 - %t217 = load ptr, ptr %a1 - %t218 = call %S.lexer.Token @finch.parser.expect(ptr %t217, { ptr, i64, i64 } { ptr @.str.1052, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1053, i64 3, i64 0 }) - store %S.lexer.Token %t218, ptr %a219 - call void @finch.drop.S_lexer_Token(ptr %a219) - %t220 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t220 -endif1872: - %t221 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t221, ptr %a222 - store { ptr, i64, i64 } { ptr @.str.1054, i64 5, i64 0 }, ptr %a223 - %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) - %t225 = icmp ne i32 %t224, 0 - br i1 %t225, label %then1900, label %endif1902 -then1900: - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.next(ptr %t226) - store %S.lexer.Token %t227, ptr %a228 - call void @finch.drop.S_lexer_Token(ptr %a228) - %t229 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t230 = load { ptr, i64, i64 }, ptr %t229 - %t231 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_copy(ptr %a233, ptr %a232) - %t234 = load { ptr, i64, i64 }, ptr %a233 - %t235 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t234, ptr %t231 - store { ptr, i64, i64 } %t235, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load ptr, ptr %a1 - %t238 = call i1 @finch.parser.at(ptr %t237, { ptr, i64, i64 } { ptr @.str.1055, i64 1, i64 0 }) - br label %logic.from1903 -logic.from1903: - br i1 %t238, label %logic.rhs1904, label %logic.end1905 -logic.rhs1904: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic1906, label %ok1907 -panic1906: - call void @finch_panic(ptr @.str.1056, i64 800, ptr @.str.1057) - unreachable -ok1907: - %t241 = getelementptr inbounds %S.parser.Parser, ptr %t239, i32 0, i32 0 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic1908, label %ok1909 -panic1908: - call void @finch_panic(ptr @.str.1058, i64 800, ptr @.str.1059) - unreachable -ok1909: - %t244 = getelementptr inbounds %S.parser.Parser, ptr %t242, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = sub i64 %t245, 1 - %t247 = load { ptr, i64, i64 }, ptr %t241 - %t248 = extractvalue { ptr, i64, i64 } %t247, 1 - %t249 = icmp uge i64 %t246, %t248 - br i1 %t249, label %range1910, label %inrange1911 -range1910: - call void @finch_panic_index(ptr @.str.1060, i64 800, i64 %t246, i64 %t248) - unreachable -inrange1911: - %t250 = extractvalue { ptr, i64, i64 } %t247, 0 - %t251 = getelementptr inbounds %S.lexer.Token, ptr %t250, i64 %t246 - %t252 = getelementptr inbounds %S.lexer.Token, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.1061, i64 5, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br label %logic.rend1912 -logic.rend1912: - br label %logic.end1905 -logic.end1905: - %t258 = phi i1 [ false, %logic.from1903 ], [ %t257, %logic.rend1912 ] - br label %logic.from1913 -logic.from1913: - br i1 %t258, label %logic.rhs1914, label %logic.end1915 -logic.rhs1914: - %t259 = load ptr, ptr %a1 - %t260 = call i1 @finch.parser.genericCallAheadFrom(ptr %t259) - br label %logic.rend1916 -logic.rend1916: - br label %logic.end1915 -logic.end1915: - %t261 = phi i1 [ false, %logic.from1913 ], [ %t260, %logic.rend1916 ] - br i1 %t261, label %then1917, label %endif1919 -then1917: - %t262 = load ptr, ptr %a1 - %t263 = call %S.lexer.Token @finch.parser.next(ptr %t262) - store %S.lexer.Token %t263, ptr %a264 - call void @finch.drop.S_lexer_Token(ptr %a264) - %t265 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1062, i64 5, i64 0 }, 0 - %t266 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t267 = load %S.ast.Type, ptr %t266 - store %S.ast.Type %t265, ptr %t266 - store %S.ast.Type %t267, ptr %a268 - call void @finch.drop.S_ast_Type(ptr %a268) - br label %while.cond1920 -while.cond1920: - br label %while.body1921 -while.body1921: - %t269 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t270 = getelementptr inbounds %S.ast.Type, ptr %t269, i32 0, i32 1 - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i32 0, i32 1 - %t272 = load ptr, ptr %a1 - %t273 = call %S.ast.Type @finch.parser.parseType(ptr %t272) - %t274 = load i64, ptr %t271 - %t275 = add i64 %t274, 1 - call void @finch_arr_reserve(ptr %t270, i64 %t275, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t276 = load ptr, ptr %t270 - %t277 = getelementptr inbounds %S.ast.Type, ptr %t276, i64 %t274 - store %S.ast.Type %t273, ptr %t277 - store i64 %t275, ptr %t271 - %t278 = load ptr, ptr %a1 - %t279 = call i1 @finch.parser.accept(ptr %t278, { ptr, i64, i64 } { ptr @.str.1063, i64 1, i64 0 }) - %t280 = xor i1 %t279, true - br i1 %t280, label %then1923, label %endif1925 -then1923: - br label %while.end1922 -endif1925: - br label %while.cond1920 -while.end1922: - %t281 = load ptr, ptr %a1 - %t282 = call %S.lexer.Token @finch.parser.expect(ptr %t281, { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1065, i64 28, i64 0 }) - store %S.lexer.Token %t282, ptr %a283 - call void @finch.drop.S_lexer_Token(ptr %a283) - %t284 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.1066, i64 4, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t287, ptr %a7) - %t288 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t288 -endif1919: - %t289 = load ptr, ptr %a1 - %t290 = call i1 @finch.parser.at(ptr %t289, { ptr, i64, i64 } { ptr @.str.1067, i64 1, i64 0 }) - br label %logic.from1926 -logic.from1926: - br i1 %t290, label %logic.rhs1927, label %logic.end1928 -logic.rhs1927: - %t291 = load ptr, ptr %a1 - %t292 = call %S.lexer.Token @finch.parser.cur(ptr %t291) - %t293 = extractvalue %S.lexer.Token %t292, 4 - store %S.lexer.Token %t292, ptr %a294 - call void @finch.drop.S_lexer_Token(ptr %a294) - %t295 = xor i1 %t293, true - br label %logic.rend1929 -logic.rend1929: - br label %logic.end1928 -logic.end1928: - %t296 = phi i1 [ false, %logic.from1926 ], [ %t295, %logic.rend1929 ] - br i1 %t296, label %then1930, label %endif1932 -then1930: - %t297 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } { ptr @.str.1068, i64 4, i64 0 }, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t300, ptr %a7) - %t301 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t301 -endif1932: - %t302 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store { ptr, i64, i64 } { ptr @.str.1069, i64 3, i64 0 }, ptr %t302 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t305 -endif1902: - %t306 = load ptr, ptr %a1 - %t307 = load %S.lexer.Token, ptr %a4 - %t308 = load %S.lexer.Token, ptr %a4 - %t309 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t308) - store { ptr, i64, i64 } { ptr @.str.1070, i64 11, i64 0 }, ptr %a311 - store { ptr, i64, i64 } %t309, ptr %a312 - call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) - store { ptr, i64, i64 } %t309, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a310 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.1071, i64 19, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - call void @finch.parser.fail(ptr %t306, %S.lexer.Token %t307, { ptr, i64, i64 } %t319) - store { ptr, i64, i64 } %t319, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t321 -} - -define internal void @finch.copy.arr_S_lexer_Token(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond1933 -n.cond1933: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body1934, label %n.end1935 -n.body1934: - %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.cond1933 -n.end1935: - ret void -} - -define internal void @finch.drop.S_parser_Parser(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lexer_Token(ptr %t1) - %t2 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) { -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) - call void @finch.drop.S_parser_Parser(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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1073, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1074, 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.1076, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1077, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1079, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1080, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t18 -} - -define internal void @finch.gen.noteRef(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4, { ptr, i64, i64 } %p5, i64 %p6, i64 %p7) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic1936, label %ok1937 -panic1936: - call void @finch_panic(ptr @.str.1081, i64 232, ptr @.str.1082) - unreachable -ok1937: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - %t13 = xor i1 %t12, true - br i1 %t13, label %then1938, label %endif1940 -then1938: - ret void -endif1940: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic1941, label %ok1942 -panic1941: - call void @finch_panic(ptr @.str.1083, i64 235, ptr @.str.1084) - unreachable -ok1942: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 29 - %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 %panic1943, label %ok1944 -panic1943: - call void @finch_panic(ptr @.str.1086, i64 235, ptr @.str.1087) - unreachable -ok1944: - %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 %range1945, label %inrange1946 -range1945: - call void @finch_panic_index(ptr @.str.1088, i64 235, i64 %t22, i64 %t24) - unreachable -inrange1946: - %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.1085, 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.1089, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1090, i64 1, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a54, i64 %t53) - %t55 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1091, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a68, i64 %t67) - %t69 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.1092, i64 1, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.1093, i64 1, i64 0 }, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a93, i64 %t92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t91, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1094, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t105, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1095, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a5 - %t121 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t120) - store { ptr, i64, i64 } %t119, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t119, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - %t128 = load i64, ptr %t17 - %t129 = add i64 %t128, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t129, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t130 = load ptr, ptr %t16 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i64 %t128 - store { ptr, i64, i64 } %t127, ptr %t131 - store i64 %t129, ptr %t17 - ret void -} - -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %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 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - store %S.gen.FnSig %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond1947 -for.cond1947: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body1948, label %for.end1950 -for.body1948: - %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 %range1951, label %inrange1952 -range1951: - call void @finch_panic_index(ptr @.str.1096, i64 242, i64 %t11, i64 %t13) - unreachable -inrange1952: - %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.1097, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 - %t25 = load i64, ptr %a6 - %t26 = load { ptr, i64, i64 }, ptr %t24 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 %t25, %t27 - br i1 %t28, label %range1953, label %inrange1954 -range1953: - call void @finch_panic_index(ptr @.str.1098, i64 242, i64 %t25, i64 %t27) - unreachable -inrange1954: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 - %t31 = load { ptr, i64, i64 }, ptr %t30 - store { ptr, i64, i64 } %t23, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t23, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = load i64, ptr %t9 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t38, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %a2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t37 - store { ptr, i64, i64 } %t36, ptr %t40 - store i64 %t38, ptr %t9 - br label %for.step1949 -for.step1949: - %t41 = load i64, ptr %a6 - %t42 = add i64 %t41, 1 - store i64 %t42, ptr %a6 - br label %for.cond1947 -for.end1950: - %t43 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t47, ptr %a48 - %t49 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 - %t51 = load i64, ptr %t50 - %t52 = icmp sgt i64 %t51, 0 - br i1 %t52, label %then1955, label %endif1957 -then1955: - %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1099, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a55 - %t59 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t65, ptr %a48 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif1957 -endif1957: - %t68 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.1100, i64 3, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1101, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1102, i64 2, i64 0 }, ptr %a79 - call void @finch_str_join(ptr %a80, ptr %a2, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t77, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t77, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.1103, i64 1, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 - %t95 = load i1, ptr %t94 - br i1 %t95, label %then1958, label %else1959 -then1958: - %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t97 = getelementptr inbounds %S.ast.Type, ptr %t96, i32 0, i32 0 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.1104, i64 4, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then1961, label %else1962 -then1961: - %t103 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1105, i64 5, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a104 - %t108 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t107, ptr %a93 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_drop(ptr %a109) - br label %endif1963 -else1962: - %t110 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.1106, i64 4, 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.FnSig, ptr %a1, i32 0, i32 12 - %t116 = load %S.ast.Type, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t116) - store { ptr, i64, i64 } %t114, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t114, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.1107, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t128, ptr %a93 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - br label %endif1963 -endif1963: - br label %endif1960 -else1959: - %t131 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.1108, i64 4, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp eq i32 %t136, 0 - br i1 %t137, label %then1964, label %endif1966 -then1964: - %t138 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1109, i64 4, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a139 - %t143 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t144 = load %S.ast.Type, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t144) - store { ptr, i64, i64 } %t142, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t142, ptr %a149 - call void @finch_str_drop(ptr %a149) - store { ptr, i64, i64 } %t145, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a146 - %t152 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t151, ptr %a93 - store { ptr, i64, i64 } %t152, ptr %a153 - call void @finch_str_drop(ptr %a153) - br label %endif1966 -endif1966: - br label %endif1960 -endif1960: - %t154 = load { ptr, i64, i64 }, ptr %a93 - call void @finch_str_drop(ptr %a48) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t154 -} - -define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1967, label %ok1968 -panic1967: - call void @finch_panic(ptr @.str.1110, i64 263, ptr @.str.1111) - unreachable -ok1968: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then1969, label %endif1971 -then1969: - ret void -endif1971: - %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.1112, 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 %then1972, label %endif1974 -then1972: - %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 %endif1974 -endif1974: - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic1975, label %ok1976 -panic1975: - call void @finch_panic(ptr @.str.1113, i64 270, ptr @.str.1114) - unreachable -ok1976: - %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 %range1977, label %inrange1978 -range1977: - call void @finch_panic_index(ptr @.str.1115, i64 270, i64 %t25, i64 %t27) - unreachable -inrange1978: - %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 %range1979, label %inrange1980 -range1979: - call void @finch_panic_index(ptr @.str.1116, i64 270, i64 %t33, i64 %t35) - unreachable -inrange1980: - %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.from1981 -logic.from1981: - br i1 %t53, label %logic.rhs1982, label %logic.end1983 -logic.rhs1982: - %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.rend1984 -logic.rend1984: - br label %logic.end1983 -logic.end1983: - %t58 = phi i1 [ false, %logic.from1981 ], [ %t57, %logic.rend1984 ] - br i1 %t58, label %then1985, label %endif1987 -then1985: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_copy(ptr %a62, ptr %a61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - %t64 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t63, ptr %a49 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif1987 -endif1987: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a2 - %t68 = load i64, ptr %a11 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load %S.gen.FnSig, ptr %a3 - %t72 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t71) - store { ptr, i64, i64 } { ptr @.str.1117, i64 9, i64 0 }, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1118, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic1988, label %ok1989 -panic1988: - call void @finch_panic(ptr @.str.1119, i64 275, ptr @.str.1120) - unreachable -ok1989: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 - %t87 = load i64, ptr %t86 - %t88 = load { ptr, i64, i64 }, ptr %t85 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range1990, label %inrange1991 -range1990: - call void @finch_panic_index(ptr @.str.1121, i64 275, i64 %t87, i64 %t89) - unreachable -inrange1991: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t87 - %t93 = load { ptr, i64, i64 }, ptr %t92 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 - %t95 = load i64, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 - %t97 = load i64, ptr %t96 - %t98 = add i64 %t97, 3 - call void @finch.gen.noteRef(ptr %t66, %S.ast.Node %t67, i64 %t68, i64 %t70, { ptr, i64, i64 } %t82, { ptr, i64, i64 } %t93, i64 %t95, i64 %t98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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.drop.arr_bool(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_FnSig(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t7) - %t8 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 11 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 12 - call void @finch.drop.S_ast_Type(ptr %t9) - %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 13 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - %t11 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 14 - call void @finch.drop.arr_str(ptr %t11) - %t12 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_bool(ptr %t12) - ret void -} - -define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { -entry: - - %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.drop.S_gen_Template(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { -entry: - - 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.drop.arr_int(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_StructDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t7) - %t8 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_str(ptr %t9) - %t10 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - ret void -} - -define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a257 = alloca %S.gen.Template, align 16 - %a258 = alloca %S.gen.Template, align 16 - %a260 = alloca %S.gen.Template, align 16 - %a282 = alloca %S.ast.Node, align 16 - %a283 = alloca %S.ast.Node, align 16 - %a285 = alloca %S.ast.Node, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca i64, align 16 - %a448 = alloca %S.gen.StructDef, align 16 - %a449 = alloca %S.gen.StructDef, align 16 - %a451 = alloca %S.gen.StructDef, align 16 - %a478 = alloca %S.ast.Node, align 16 - %a479 = alloca %S.ast.Node, align 16 - %a481 = alloca %S.ast.Node, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca i64, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca i64, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca %S.ast.Node, align 16 - %a660 = alloca %S.ast.Node, align 16 - %a662 = alloca %S.ast.Node, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca i64, align 16 - %a674 = alloca %S.ast.Node, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a778 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond1992 -each.cond1992: - %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.body1993, label %each.end1995 -each.body1993: - %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 %panic1996, label %ok1997 -panic1996: - call void @finch_panic(ptr @.str.1122, i64 281, ptr @.str.1123) - unreachable -ok1997: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 29 - %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.1124, 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.step1994 -each.step1994: - %t25 = load i64, ptr %a3 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a3 - br label %each.cond1992 -each.end1995: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1998, label %ok1999 -panic1998: - call void @finch_panic(ptr @.str.1125, i64 283, ptr @.str.1126) - unreachable -ok1999: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 15 - store i64 0, ptr %a30 - br label %each.cond2000 -each.cond2000: - %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.body2001, label %each.end2003 -each.body2001: - %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 %panic2004, label %ok2005 -panic2004: - call void @finch_panic(ptr @.str.1127, i64 284, ptr @.str.1128) - unreachable -ok2005: - %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 %range2006, label %inrange2007 -range2006: - call void @finch_panic_index(ptr @.str.1129, i64 284, i64 %t46, i64 %t48) - unreachable -inrange2007: - %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 %range2008, label %inrange2009 -range2008: - call void @finch_panic_index(ptr @.str.1130, i64 284, i64 %t54, i64 %t56) - unreachable -inrange2009: - %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 %then2010, label %endif2012 -then2010: - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -endif2012: - 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.cond2013 -for.cond2013: - %t74 = load i64, ptr %a73 - %t75 = icmp slt i64 %t74, %t72 - br i1 %t75, label %for.body2014, label %for.end2016 -for.body2014: - %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 %range2017, label %inrange2018 -range2017: - call void @finch_panic_index(ptr @.str.1131, i64 290, i64 %t78, i64 %t80) - unreachable -inrange2018: - %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.1132, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 - %t92 = load i64, ptr %a73 - %t93 = load { ptr, i64, i64 }, ptr %t91 - %t94 = extractvalue { ptr, i64, i64 } %t93, 1 - %t95 = icmp uge i64 %t92, %t94 - br i1 %t95, label %range2019, label %inrange2020 -range2019: - call void @finch_panic_index(ptr @.str.1133, i64 290, i64 %t92, i64 %t94) - unreachable -inrange2020: - %t96 = extractvalue { ptr, i64, i64 } %t93, 0 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t92 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t90, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t90, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = load i64, ptr %t76 - %t105 = add i64 %t104, 1 - call void @finch_arr_reserve(ptr %a69, i64 %t105, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t106 = load ptr, ptr %a69 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 %t104 - store { ptr, i64, i64 } %t103, ptr %t107 - store i64 %t105, ptr %t76 - br label %for.step2015 -for.step2015: - %t108 = load i64, ptr %a73 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a73 - br label %for.cond2013 -for.end2016: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic2021, label %ok2022 -panic2021: - call void @finch_panic(ptr @.str.1134, i64 292, ptr @.str.1135) - unreachable -ok2022: - %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 29 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.1136, i64 3, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1137, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t124, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t124, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1138, i64 1, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 - %t138 = load { ptr, i64, i64 }, ptr %t137 - store { ptr, i64, i64 } %t136, ptr %a140 - store { ptr, i64, i64 } %t138, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t136, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.1139, i64 1, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = load ptr, ptr %a1 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic2023, label %ok2024 -panic2023: - call void @finch_panic(ptr @.str.1140, i64 292, ptr @.str.1141) - unreachable -ok2024: - %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 1 - %t152 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 - %t153 = load i64, ptr %t152 - %t154 = load { ptr, i64, i64 }, ptr %t151 - %t155 = extractvalue { ptr, i64, i64 } %t154, 1 - %t156 = icmp uge i64 %t153, %t155 - br i1 %t156, label %range2025, label %inrange2026 -range2025: - call void @finch_panic_index(ptr @.str.1142, i64 292, i64 %t153, i64 %t155) - unreachable -inrange2026: - %t157 = extractvalue { ptr, i64, i64 } %t154, 0 - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i64 %t153 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t148, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t148, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.1143, i64 1, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.1144, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 - %t186 = load i64, ptr %t185 - call void @finch_str_from_int(ptr %a187, i64 %t186) - %t188 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t184, ptr %a192 - call void @finch_str_drop(ptr %a192) - store { ptr, i64, i64 } %t188, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.1145, i64 1, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 - %t201 = load i64, ptr %t200 - call void @finch_str_from_int(ptr %a202, i64 %t201) - %t203 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t199, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t199, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } %t203, ptr %a208 - call void @finch_str_drop(ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t209, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.1146, i64 1, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = load %S.gen.FnSig, ptr %a41 - %t216 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t215) - %t217 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - store { ptr, i64, i64 } %t214, ptr %a220 - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t214, ptr %a222 - call void @finch_str_drop(ptr %a222) - store { ptr, i64, i64 } %t217, ptr %a223 - call void @finch_str_drop(ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.1147, i64 1, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1148, i64 1, i64 0 }, ptr %a231 - call void @finch_str_join(ptr %a232, ptr %a69, ptr %a231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t229, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t229, ptr %a237 - call void @finch_str_drop(ptr %a237) - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a234 - %t240 = load i64, ptr %t113 - %t241 = add i64 %t240, 1 - call void @finch_arr_reserve(ptr %t112, i64 %t241, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t242 = load ptr, ptr %t112 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 %t240 - store { ptr, i64, i64 } %t239, ptr %t243 - store i64 %t241, ptr %t113 - call void @finch.drop.arr_str(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -each.step2002: - %t244 = load i64, ptr %a30 - %t245 = add i64 %t244, 1 - store i64 %t245, ptr %a30 - br label %each.cond2000 -each.end2003: - %t246 = load ptr, ptr %a1 - %t247 = icmp eq ptr %t246, null - br i1 %t247, label %panic2027, label %ok2028 -panic2027: - call void @finch_panic(ptr @.str.1149, i64 294, ptr @.str.1150) - unreachable -ok2028: - %t248 = getelementptr inbounds %S.gen.Gen, ptr %t246, i32 0, i32 17 - store i64 0, ptr %a249 - br label %each.cond2029 -each.cond2029: - %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t251 = load i64, ptr %t250 - %t252 = load i64, ptr %a249 - %t253 = icmp slt i64 %t252, %t251 - br i1 %t253, label %each.body2030, label %each.end2032 -each.body2030: - %t254 = load ptr, ptr %t248 - %t255 = getelementptr inbounds %S.gen.Template, ptr %t254, i64 %t252 - %t256 = load %S.gen.Template, ptr %t255 - store %S.gen.Template %t256, ptr %a257 - call void @finch.copy.S_gen_Template(ptr %a258, ptr %a257) - %t259 = load %S.gen.Template, ptr %a258 - store %S.gen.Template %t259, ptr %a260 - %t261 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 6 - %t262 = load i1, ptr %t261 - br i1 %t262, label %then2033, label %endif2035 -then2033: - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -endif2035: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic2036, label %ok2037 -panic2036: - call void @finch_panic(ptr @.str.1151, i64 298, ptr @.str.1152) - unreachable -ok2037: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 0 - %t266 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 4 - %t267 = load i64, ptr %t266 - %t268 = load { ptr, i64, i64 }, ptr %t265 - %t269 = extractvalue { ptr, i64, i64 } %t268, 1 - %t270 = icmp uge i64 %t267, %t269 - br i1 %t270, label %range2038, label %inrange2039 -range2038: - call void @finch_panic_index(ptr @.str.1153, i64 298, i64 %t267, i64 %t269) - unreachable -inrange2039: - %t271 = extractvalue { ptr, i64, i64 } %t268, 0 - %t272 = getelementptr inbounds %S.ast.Program, ptr %t271, i64 %t267 - %t273 = getelementptr inbounds %S.ast.Program, ptr %t272, i32 0, i32 8 - %t274 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 5 - %t275 = load i64, ptr %t274 - %t276 = load { ptr, i64, i64 }, ptr %t273 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range2040, label %inrange2041 -range2040: - call void @finch_panic_index(ptr @.str.1154, i64 298, i64 %t275, i64 %t277) - unreachable -inrange2041: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.ast.Node, ptr %t279, i64 %t275 - %t281 = load %S.ast.Node, ptr %t280 - store %S.ast.Node %t281, ptr %a282 - call void @finch.copy.S_ast_Node(ptr %a283, ptr %a282) - %t284 = load %S.ast.Node, ptr %a283 - store %S.ast.Node %t284, ptr %a285 - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic2042, label %ok2043 -panic2042: - call void @finch_panic(ptr @.str.1155, i64 299, ptr @.str.1156) - unreachable -ok2043: - %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 29 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1 - %t290 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 0 - %t291 = load { ptr, i64, i64 }, ptr %t290 - store { ptr, i64, i64 } { ptr @.str.1157, i64 3, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.1158, i64 1, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t300, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t300, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 2 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t312, ptr %a316 - store { ptr, i64, i64 } %t314, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.1160, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic2044, label %ok2045 -panic2044: - call void @finch_panic(ptr @.str.1161, i64 299, ptr @.str.1162) - unreachable -ok2045: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 13 - %t329 = load i64, ptr %t328 - %t330 = load { ptr, i64, i64 }, ptr %t327 - %t331 = extractvalue { ptr, i64, i64 } %t330, 1 - %t332 = icmp uge i64 %t329, %t331 - br i1 %t332, label %range2046, label %inrange2047 -range2046: - call void @finch_panic_index(ptr @.str.1163, i64 299, i64 %t329, i64 %t331) - unreachable -inrange2047: - %t333 = extractvalue { ptr, i64, i64 } %t330, 0 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i64 %t329 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t324, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t324, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.1164, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 11 - %t347 = load i64, ptr %t346 - call void @finch_str_from_int(ptr %a348, i64 %t347) - %t349 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t345, ptr %a351 - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t345, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t349, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t355, ptr %a357 - store { ptr, i64, i64 } { ptr @.str.1165, i64 1, i64 0 }, ptr %a358 - call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) - store { ptr, i64, i64 } %t355, ptr %a359 - call void @finch_str_drop(ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a356 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 12 - %t362 = load i64, ptr %t361 - call void @finch_str_from_int(ptr %a363, i64 %t362) - %t364 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t360, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t360, ptr %a368 - call void @finch_str_drop(ptr %a368) - store { ptr, i64, i64 } %t364, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t370, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.1166, i64 1, i64 0 }, ptr %a373 - call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) - store { ptr, i64, i64 } %t370, ptr %a374 - call void @finch_str_drop(ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 14 - %t377 = load i64, ptr %t376 - call void @finch_str_from_int(ptr %a378, i64 %t377) - %t379 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t375, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t375, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t379, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.1167, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t392 = load { ptr, i64, i64 }, ptr %t391 - store { ptr, i64, i64 } { ptr @.str.1168, i64 3, i64 0 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a393 - store { ptr, i64, i64 } %t396, ptr %a398 - store { ptr, i64, i64 } { ptr @.str.1169, i64 1, i64 0 }, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t396, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - %t402 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 3 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1170, i64 2, i64 0 }, ptr %a404 - call void @finch_str_join(ptr %a405, ptr %t402, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - store { ptr, i64, i64 } %t401, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t401, ptr %a410 - call void @finch_str_drop(ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.1171, i64 6, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t417) - store { ptr, i64, i64 } %t417, ptr %a419 - call void @finch_str_drop(ptr %a419) - store { ptr, i64, i64 } %t390, ptr %a421 - store { ptr, i64, i64 } %t418, ptr %a422 - call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) - store { ptr, i64, i64 } %t390, ptr %a423 - call void @finch_str_drop(ptr %a423) - store { ptr, i64, i64 } %t418, ptr %a424 - call void @finch_str_drop(ptr %a424) - %t425 = load { ptr, i64, i64 }, ptr %a420 - store { ptr, i64, i64 } %t425, ptr %a427 - store { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t425, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - %t431 = load i64, ptr %t289 - %t432 = add i64 %t431, 1 - call void @finch_arr_reserve(ptr %t288, i64 %t432, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t433 = load ptr, ptr %t288 - %t434 = getelementptr inbounds { ptr, i64, i64 }, ptr %t433, i64 %t431 - store { ptr, i64, i64 } %t430, ptr %t434 - store i64 %t432, ptr %t289 - call void @finch.drop.S_ast_Node(ptr %a285) - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -each.step2031: - %t435 = load i64, ptr %a249 - %t436 = add i64 %t435, 1 - store i64 %t436, ptr %a249 - br label %each.cond2029 -each.end2032: - %t437 = load ptr, ptr %a1 - %t438 = icmp eq ptr %t437, null - br i1 %t438, label %panic2048, label %ok2049 -panic2048: - call void @finch_panic(ptr @.str.1173, i64 301, ptr @.str.1174) - unreachable -ok2049: - %t439 = getelementptr inbounds %S.gen.Gen, ptr %t437, i32 0, i32 16 - store i64 0, ptr %a440 - br label %each.cond2050 -each.cond2050: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t442 = load i64, ptr %t441 - %t443 = load i64, ptr %a440 - %t444 = icmp slt i64 %t443, %t442 - br i1 %t444, label %each.body2051, label %each.end2053 -each.body2051: - %t445 = load ptr, ptr %t439 - %t446 = getelementptr inbounds %S.gen.StructDef, ptr %t445, i64 %t443 - %t447 = load %S.gen.StructDef, ptr %t446 - store %S.gen.StructDef %t447, ptr %a448 - call void @finch.copy.S_gen_StructDef(ptr %a449, ptr %a448) - %t450 = load %S.gen.StructDef, ptr %a449 - store %S.gen.StructDef %t450, ptr %a451 - %t452 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 2 - %t453 = load i1, ptr %t452 - br label %logic.from2054 -logic.from2054: - br i1 %t453, label %logic.end2056, label %logic.rhs2055 -logic.rhs2055: - %t454 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 5 - %t455 = getelementptr inbounds { ptr, i64, i64 }, ptr %t454, i32 0, i32 1 - %t456 = load i64, ptr %t455 - %t457 = icmp sgt i64 %t456, 0 - br label %logic.rend2057 -logic.rend2057: - br label %logic.end2056 -logic.end2056: - %t458 = phi i1 [ true, %logic.from2054 ], [ %t457, %logic.rend2057 ] - br i1 %t458, label %then2058, label %endif2060 -then2058: - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -endif2060: - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic2061, label %ok2062 -panic2061: - call void @finch_panic(ptr @.str.1175, i64 305, ptr @.str.1176) - unreachable -ok2062: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 0 - %t462 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 13 - %t463 = load i64, ptr %t462 - %t464 = load { ptr, i64, i64 }, ptr %t461 - %t465 = extractvalue { ptr, i64, i64 } %t464, 1 - %t466 = icmp uge i64 %t463, %t465 - br i1 %t466, label %range2063, label %inrange2064 -range2063: - call void @finch_panic_index(ptr @.str.1177, i64 305, i64 %t463, i64 %t465) - unreachable -inrange2064: - %t467 = extractvalue { ptr, i64, i64 } %t464, 0 - %t468 = getelementptr inbounds %S.ast.Program, ptr %t467, i64 %t463 - %t469 = getelementptr inbounds %S.ast.Program, ptr %t468, i32 0, i32 6 - %t470 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 14 - %t471 = load i64, ptr %t470 - %t472 = load { ptr, i64, i64 }, ptr %t469 - %t473 = extractvalue { ptr, i64, i64 } %t472, 1 - %t474 = icmp uge i64 %t471, %t473 - br i1 %t474, label %range2065, label %inrange2066 -range2065: - call void @finch_panic_index(ptr @.str.1178, i64 305, i64 %t471, i64 %t473) - unreachable -inrange2066: - %t475 = extractvalue { ptr, i64, i64 } %t472, 0 - %t476 = getelementptr inbounds %S.ast.Node, ptr %t475, i64 %t471 - %t477 = load %S.ast.Node, ptr %t476 - store %S.ast.Node %t477, ptr %a478 - call void @finch.copy.S_ast_Node(ptr %a479, ptr %a478) - %t480 = load %S.ast.Node, ptr %a479 - store %S.ast.Node %t480, ptr %a481 - %t482 = load ptr, ptr %a1 - %t483 = icmp eq ptr %t482, null - br i1 %t483, label %panic2067, label %ok2068 -panic2067: - call void @finch_panic(ptr @.str.1179, i64 306, ptr @.str.1180) - unreachable -ok2068: - %t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 29 - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i32 0, i32 1 - %t486 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } { ptr @.str.1181, i64 3, i64 0 }, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t498 = load { ptr, i64, i64 }, ptr %t497 - store { ptr, i64, i64 } %t496, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - store { ptr, i64, i64 } %t496, ptr %a502 - call void @finch_str_drop(ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a499 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.1183, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = load ptr, ptr %a1 - %t510 = icmp eq ptr %t509, null - br i1 %t510, label %panic2069, label %ok2070 -panic2069: - call void @finch_panic(ptr @.str.1184, i64 306, ptr @.str.1185) - unreachable -ok2070: - %t511 = getelementptr inbounds %S.gen.Gen, ptr %t509, i32 0, i32 1 - %t512 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 13 - %t513 = load i64, ptr %t512 - %t514 = load { ptr, i64, i64 }, ptr %t511 - %t515 = extractvalue { ptr, i64, i64 } %t514, 1 - %t516 = icmp uge i64 %t513, %t515 - br i1 %t516, label %range2071, label %inrange2072 -range2071: - call void @finch_panic_index(ptr @.str.1186, i64 306, i64 %t513, i64 %t515) - unreachable -inrange2072: - %t517 = extractvalue { ptr, i64, i64 } %t514, 0 - %t518 = getelementptr inbounds { ptr, i64, i64 }, ptr %t517, i64 %t513 - %t519 = load { ptr, i64, i64 }, ptr %t518 - store { ptr, i64, i64 } %t508, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a522 - call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) - store { ptr, i64, i64 } %t508, ptr %a523 - call void @finch_str_drop(ptr %a523) - %t524 = load { ptr, i64, i64 }, ptr %a520 - store { ptr, i64, i64 } %t524, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.1187, i64 1, i64 0 }, ptr %a527 - call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) - store { ptr, i64, i64 } %t524, ptr %a528 - call void @finch_str_drop(ptr %a528) - %t529 = load { ptr, i64, i64 }, ptr %a525 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 11 - %t531 = load i64, ptr %t530 - call void @finch_str_from_int(ptr %a532, i64 %t531) - %t533 = load { ptr, i64, i64 }, ptr %a532 - store { ptr, i64, i64 } %t529, ptr %a535 - store { ptr, i64, i64 } %t533, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t529, ptr %a537 - call void @finch_str_drop(ptr %a537) - store { ptr, i64, i64 } %t533, ptr %a538 - call void @finch_str_drop(ptr %a538) - %t539 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t539, ptr %a541 - store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t539, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - %t545 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 12 - %t546 = load i64, ptr %t545 - call void @finch_str_from_int(ptr %a547, i64 %t546) - %t548 = load { ptr, i64, i64 }, ptr %a547 - store { ptr, i64, i64 } %t544, ptr %a550 - store { ptr, i64, i64 } %t548, ptr %a551 - call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) - store { ptr, i64, i64 } %t544, ptr %a552 - call void @finch_str_drop(ptr %a552) - store { ptr, i64, i64 } %t548, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a549 - %t555 = load i64, ptr %t485 - %t556 = add i64 %t555, 1 - call void @finch_arr_reserve(ptr %t484, i64 %t556, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t557 = load ptr, ptr %t484 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t555 - store { ptr, i64, i64 } %t554, ptr %t558 - store i64 %t556, ptr %t485 - %t559 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load i64, ptr %t560 - store i64 0, ptr %a562 - br label %for.cond2073 -for.cond2073: - %t563 = load i64, ptr %a562 - %t564 = icmp slt i64 %t563, %t561 - br i1 %t564, label %for.body2074, label %for.end2076 -for.body2074: - %t565 = load ptr, ptr %a1 - %t566 = icmp eq ptr %t565, null - br i1 %t566, label %panic2077, label %ok2078 -panic2077: - call void @finch_panic(ptr @.str.1189, i64 308, ptr @.str.1190) - unreachable -ok2078: - %t567 = getelementptr inbounds %S.gen.Gen, ptr %t565, i32 0, i32 29 - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1 - %t569 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t570 = load { ptr, i64, i64 }, ptr %t569 - store { ptr, i64, i64 } { ptr @.str.1191, i64 4, i64 0 }, ptr %a572 - store { ptr, i64, i64 } %t570, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a571 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.1192, i64 1, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t581 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t579, ptr %a583 - store { ptr, i64, i64 } %t581, ptr %a584 - call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) - store { ptr, i64, i64 } %t579, ptr %a585 - call void @finch_str_drop(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a582 - store { ptr, i64, i64 } %t586, ptr %a588 - store { ptr, i64, i64 } { ptr @.str.1193, i64 1, i64 0 }, ptr %a589 - call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) - store { ptr, i64, i64 } %t586, ptr %a590 - call void @finch_str_drop(ptr %a590) - %t591 = load { ptr, i64, i64 }, ptr %a587 - %t592 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t593 = load i64, ptr %a562 - %t594 = load { ptr, i64, i64 }, ptr %t592 - %t595 = extractvalue { ptr, i64, i64 } %t594, 1 - %t596 = icmp uge i64 %t593, %t595 - br i1 %t596, label %range2079, label %inrange2080 -range2079: - call void @finch_panic_index(ptr @.str.1194, i64 308, i64 %t593, i64 %t595) - unreachable -inrange2080: - %t597 = extractvalue { ptr, i64, i64 } %t594, 0 - %t598 = getelementptr inbounds { ptr, i64, i64 }, ptr %t597, i64 %t593 - %t599 = load { ptr, i64, i64 }, ptr %t598 - store { ptr, i64, i64 } %t591, ptr %a601 - store { ptr, i64, i64 } %t599, ptr %a602 - call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602) - store { ptr, i64, i64 } %t591, ptr %a603 - call void @finch_str_drop(ptr %a603) - %t604 = load { ptr, i64, i64 }, ptr %a600 - store { ptr, i64, i64 } %t604, ptr %a606 - store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a607 - call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) - store { ptr, i64, i64 } %t604, ptr %a608 - call void @finch_str_drop(ptr %a608) - %t609 = load { ptr, i64, i64 }, ptr %a605 - %t610 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 12 - %t611 = load i64, ptr %a562 - %t612 = load { ptr, i64, i64 }, ptr %t610 - %t613 = extractvalue { ptr, i64, i64 } %t612, 1 - %t614 = icmp uge i64 %t611, %t613 - br i1 %t614, label %range2081, label %inrange2082 -range2081: - call void @finch_panic_index(ptr @.str.1196, i64 308, i64 %t611, i64 %t613) - unreachable -inrange2082: - %t615 = extractvalue { ptr, i64, i64 } %t612, 0 - %t616 = getelementptr inbounds %S.ast.Type, ptr %t615, i64 %t611 - %t617 = load %S.ast.Type, ptr %t616 - %t618 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t617) - store { ptr, i64, i64 } %t609, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t609, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - %t625 = load i64, ptr %t568 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t567, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t567 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t568 - br label %for.step2075 -for.step2075: - %t629 = load i64, ptr %a562 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a562 - br label %for.cond2073 -for.end2076: - call void @finch.drop.S_ast_Node(ptr %a481) - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -each.step2052: - %t631 = load i64, ptr %a440 - %t632 = add i64 %t631, 1 - store i64 %t632, ptr %a440 - br label %each.cond2050 -each.end2053: - %t633 = load ptr, ptr %a1 - %t634 = icmp eq ptr %t633, null - br i1 %t634, label %panic2083, label %ok2084 -panic2083: - call void @finch_panic(ptr @.str.1197, i64 311, ptr @.str.1198) - unreachable -ok2084: - %t635 = getelementptr inbounds %S.gen.Gen, ptr %t633, i32 0, i32 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i32 0, i32 1 - %t637 = load i64, ptr %t636 - store i64 0, ptr %a638 - br label %for.cond2085 -for.cond2085: - %t639 = load i64, ptr %a638 - %t640 = icmp slt i64 %t639, %t637 - br i1 %t640, label %for.body2086, label %for.end2088 -for.body2086: - %t641 = load ptr, ptr %a1 - %t642 = icmp eq ptr %t641, null - br i1 %t642, label %panic2089, label %ok2090 -panic2089: - call void @finch_panic(ptr @.str.1199, i64 312, ptr @.str.1200) - unreachable -ok2090: - %t643 = getelementptr inbounds %S.gen.Gen, ptr %t641, i32 0, i32 0 - %t644 = load i64, ptr %a638 - %t645 = load { ptr, i64, i64 }, ptr %t643 - %t646 = extractvalue { ptr, i64, i64 } %t645, 1 - %t647 = icmp uge i64 %t644, %t646 - br i1 %t647, label %range2091, label %inrange2092 -range2091: - call void @finch_panic_index(ptr @.str.1201, i64 312, i64 %t644, i64 %t646) - unreachable -inrange2092: - %t648 = extractvalue { ptr, i64, i64 } %t645, 0 - %t649 = getelementptr inbounds %S.ast.Program, ptr %t648, i64 %t644 - %t650 = getelementptr inbounds %S.ast.Program, ptr %t649, i32 0, i32 7 - store i64 0, ptr %a651 - br label %each.cond2093 -each.cond2093: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body2094, label %each.end2096 -each.body2094: - %t656 = load ptr, ptr %t650 - %t657 = getelementptr inbounds %S.ast.Node, ptr %t656, i64 %t654 - %t658 = load %S.ast.Node, ptr %t657 - store %S.ast.Node %t658, ptr %a659 - call void @finch.copy.S_ast_Node(ptr %a660, ptr %a659) - %t661 = load %S.ast.Node, ptr %a660 - store %S.ast.Node %t661, ptr %a662 - store { ptr, i64, i64 } { ptr @.str.1202, i64 0, i64 0 }, ptr %a663 - store { ptr, i64, i64 } zeroinitializer, ptr %a664 - %t665 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 9 - store i64 0, ptr %a666 - br label %each.cond2097 -each.cond2097: - %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t668 = load i64, ptr %t667 - %t669 = load i64, ptr %a666 - %t670 = icmp slt i64 %t669, %t668 - br i1 %t670, label %each.body2098, label %each.end2100 -each.body2098: - %t671 = load ptr, ptr %t665 - %t672 = getelementptr inbounds %S.ast.Node, ptr %t671, i64 %t669 - %t673 = load %S.ast.Node, ptr %t672 - store %S.ast.Node %t673, ptr %a674 - %t675 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - %t676 = getelementptr inbounds %S.ast.Node, ptr %a674, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %t676 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t675 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a664, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a664 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t675 - br label %each.step2099 -each.step2099: - %t685 = load i64, ptr %a666 - %t686 = add i64 %t685, 1 - store i64 %t686, ptr %a666 - br label %each.cond2097 -each.end2100: - %t687 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1203, i64 1, i64 0 }, ptr %a688 - call void @finch_str_join(ptr %a689, ptr %a664, ptr %a688) - %t690 = load { ptr, i64, i64 }, ptr %a689 - %t691 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t690, ptr %a663 - store { ptr, i64, i64 } %t691, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load ptr, ptr %a1 - %t694 = icmp eq ptr %t693, null - br i1 %t694, label %panic2101, label %ok2102 -panic2101: - call void @finch_panic(ptr @.str.1204, i64 319, ptr @.str.1205) - unreachable -ok2102: - %t695 = getelementptr inbounds %S.gen.Gen, ptr %t693, i32 0, i32 29 - %t696 = getelementptr inbounds { ptr, i64, i64 }, ptr %t695, i32 0, i32 1 - %t697 = load ptr, ptr %a1 - %t698 = icmp eq ptr %t697, null - br i1 %t698, label %panic2103, label %ok2104 -panic2103: - call void @finch_panic(ptr @.str.1207, i64 319, ptr @.str.1208) - unreachable -ok2104: - %t699 = getelementptr inbounds %S.gen.Gen, ptr %t697, i32 0, i32 0 - %t700 = load i64, ptr %a638 - %t701 = load { ptr, i64, i64 }, ptr %t699 - %t702 = extractvalue { ptr, i64, i64 } %t701, 1 - %t703 = icmp uge i64 %t700, %t702 - br i1 %t703, label %range2105, label %inrange2106 -range2105: - call void @finch_panic_index(ptr @.str.1209, i64 319, i64 %t700, i64 %t702) - unreachable -inrange2106: - %t704 = extractvalue { ptr, i64, i64 } %t701, 0 - %t705 = getelementptr inbounds %S.ast.Program, ptr %t704, i64 %t700 - %t706 = getelementptr inbounds %S.ast.Program, ptr %t705, i32 0, i32 0 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } { ptr @.str.1206, i64 3, i64 0 }, ptr %a709 - store { ptr, i64, i64 } %t707, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - %t711 = load { ptr, i64, i64 }, ptr %a708 - store { ptr, i64, i64 } %t711, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.1210, i64 1, i64 0 }, ptr %a714 - call void @finch_str_concat(ptr %a712, ptr %a713, ptr %a714) - store { ptr, i64, i64 } %t711, ptr %a715 - call void @finch_str_drop(ptr %a715) - %t716 = load { ptr, i64, i64 }, ptr %a712 - %t717 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 1 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t716, ptr %a720 - store { ptr, i64, i64 } %t718, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t716, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - store { ptr, i64, i64 } %t723, ptr %a725 - store { ptr, i64, i64 } { ptr @.str.1211, i64 1, i64 0 }, ptr %a726 - call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) - store { ptr, i64, i64 } %t723, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load { ptr, i64, i64 }, ptr %a724 - %t729 = load ptr, ptr %a1 - %t730 = icmp eq ptr %t729, null - br i1 %t730, label %panic2107, label %ok2108 -panic2107: - call void @finch_panic(ptr @.str.1212, i64 319, ptr @.str.1213) - unreachable -ok2108: - %t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 1 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 13 - %t733 = load i64, ptr %t732 - %t734 = load { ptr, i64, i64 }, ptr %t731 - %t735 = extractvalue { ptr, i64, i64 } %t734, 1 - %t736 = icmp uge i64 %t733, %t735 - br i1 %t736, label %range2109, label %inrange2110 -range2109: - call void @finch_panic_index(ptr @.str.1214, i64 319, i64 %t733, i64 %t735) - unreachable -inrange2110: - %t737 = extractvalue { ptr, i64, i64 } %t734, 0 - %t738 = getelementptr inbounds { ptr, i64, i64 }, ptr %t737, i64 %t733 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t728, ptr %a741 - store { ptr, i64, i64 } %t739, ptr %a742 - call void @finch_str_concat(ptr %a740, ptr %a741, ptr %a742) - store { ptr, i64, i64 } %t728, ptr %a743 - call void @finch_str_drop(ptr %a743) - %t744 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } %t744, ptr %a746 - store { ptr, i64, i64 } { ptr @.str.1215, i64 1, i64 0 }, ptr %a747 - call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) - store { ptr, i64, i64 } %t744, ptr %a748 - call void @finch_str_drop(ptr %a748) - %t749 = load { ptr, i64, i64 }, ptr %a745 - %t750 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 11 - %t751 = load i64, ptr %t750 - call void @finch_str_from_int(ptr %a752, i64 %t751) - %t753 = load { ptr, i64, i64 }, ptr %a752 - store { ptr, i64, i64 } %t749, ptr %a755 - store { ptr, i64, i64 } %t753, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t749, ptr %a757 - call void @finch_str_drop(ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.1216, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 12 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t764, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t764, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - store { ptr, i64, i64 } %t774, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.1217, i64 1, i64 0 }, ptr %a777 - call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) - store { ptr, i64, i64 } %t774, ptr %a778 - call void @finch_str_drop(ptr %a778) - %t779 = load { ptr, i64, i64 }, ptr %a775 - %t780 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t779, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t779, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = load { ptr, i64, i64 }, ptr %a781 - %t786 = load i64, ptr %t696 - %t787 = add i64 %t786, 1 - call void @finch_arr_reserve(ptr %t695, i64 %t787, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t788 = load ptr, ptr %t695 - %t789 = getelementptr inbounds { ptr, i64, i64 }, ptr %t788, i64 %t786 - store { ptr, i64, i64 } %t785, ptr %t789 - store i64 %t787, ptr %t696 - call void @finch.drop.arr_str(ptr %a664) - call void @finch_str_drop(ptr %a663) - call void @finch.drop.S_ast_Node(ptr %a662) - br label %each.step2095 -each.step2095: - %t790 = load i64, ptr %a651 - %t791 = add i64 %t790, 1 - store i64 %t791, ptr %a651 - br label %each.cond2093 -each.end2096: - br label %for.step2087 -for.step2087: - %t792 = load i64, ptr %a638 - %t793 = add i64 %t792, 1 - store i64 %t793, ptr %a638 - br label %for.cond2085 -for.end2088: - 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 - %a28 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2111, label %ok2112 -panic2111: - call void @finch_panic(ptr @.str.1218, i64 325, ptr @.str.1219) - unreachable -ok2112: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br label %logic.from2113 -logic.from2113: - br i1 %t7, label %logic.rhs2114, label %logic.end2115 -logic.rhs2114: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic2116, label %ok2117 -panic2116: - call void @finch_panic(ptr @.str.1220, i64 325, ptr @.str.1221) - unreachable -ok2117: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 29 - %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.rend2118 -logic.rend2118: - br label %logic.end2115 -logic.end2115: - %t14 = phi i1 [ false, %logic.from2113 ], [ %t13, %logic.rend2118 ] - br i1 %t14, label %then2119, label %endif2121 -then2119: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2122, label %ok2123 -panic2122: - call void @finch_panic(ptr @.str.1222, i64 326, ptr @.str.1223) - unreachable -ok2123: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 29 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1224, 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.1225, ptr %t24 - %t27 = call i32 (ptr, ...) @printf(ptr @.str.1226, i32 %t23, ptr %t26) - store { ptr, i64, i64 } %t21, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = call i32 (ptr, ...) @printf(ptr @.str.1227) - br label %endif2121 -endif2121: - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic2124, label %ok2125 -panic2124: - call void @finch_panic(ptr @.str.1228, i64 328, ptr @.str.1229) - unreachable -ok2125: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 1 - %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t34 = load i64, ptr %t33 - %t35 = load { ptr, i64, i64 }, ptr %t32 - %t36 = extractvalue { ptr, i64, i64 } %t35, 1 - %t37 = icmp uge i64 %t34, %t36 - br i1 %t37, label %range2126, label %inrange2127 -range2126: - call void @finch_panic_index(ptr @.str.1230, i64 328, i64 %t34, i64 %t36) - unreachable -inrange2127: - %t38 = extractvalue { ptr, i64, i64 } %t35, 0 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t34 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1231, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a41 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t46 = load i64, ptr %t45 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t44, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t44, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1232, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t61 = load i64, ptr %t60 - call void @finch_str_from_int(ptr %a62, i64 %t61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t59, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t59, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1233, i64 9, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic2128, label %ok2129 -panic2128: - call void @finch_panic(ptr @.str.1234, i64 328, ptr @.str.1235) - unreachable -ok2129: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 20 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t80, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t80, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = trunc i64 %t90 to i32 - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = icmp eq ptr %t92, null - %t94 = select i1 %t93, ptr @.str.1236, ptr %t92 - %t95 = call i32 (ptr, ...) @printf(ptr @.str.1237, i32 %t91, ptr %t94) - store { ptr, i64, i64 } %t89, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = call i32 (ptr, ...) @printf(ptr @.str.1238) - %t98 = trunc i64 1 to i32 - %t99 = call i32 @fflush(ptr null) - call void @exit(i32 %t98) - 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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2130, label %ok2131 -panic2130: - call void @finch_panic(ptr @.str.1239, i64 334, ptr @.str.1240) - unreachable -ok2131: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 36 - %t6 = load i64, ptr %t5 - %t7 = icmp sge i64 %t6, 0 - br label %logic.from2132 -logic.from2132: - br i1 %t7, label %logic.rhs2133, label %logic.end2134 -logic.rhs2133: - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1242, 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.rend2135 -logic.rend2135: - br label %logic.end2134 -logic.end2134: - %t14 = phi i1 [ false, %logic.from2132 ], [ %t13, %logic.rend2135 ] - br i1 %t14, label %then2136, label %endif2138 -then2136: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2139, label %ok2140 -panic2139: - call void @finch_panic(ptr @.str.1243, i64 335, ptr @.str.1244) - unreachable -ok2140: - %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.1245, 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.1246, i64 8, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = call i64 @finch.gen.dbgLocation(ptr %t29) - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = load i64, ptr %t18 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %t17, i64 %t40, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %t17 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t39 - store { ptr, i64, i64 } %t38, ptr %t42 - store i64 %t40, ptr %t18 - ret void -endif2138: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic2141, label %ok2142 -panic2141: - call void @finch_panic(ptr @.str.1247, i64 338, ptr @.str.1248) - unreachable -ok2142: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 4 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1249, i64 2, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a48 - %t52 = load i64, ptr %t46 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t45, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t45 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t46 - ret void -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2143, label %ok2144 -panic2143: - call void @finch_panic(ptr @.str.1250, i64 342, ptr @.str.1251) - unreachable -ok2144: - %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 %panic2145, label %ok2146 -panic2145: - call void @finch_panic(ptr @.str.1253, i64 343, ptr @.str.1254) - unreachable -ok2146: - %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.1252, i64 2, i64 0 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal { 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 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2147, label %ok2148 -panic2147: - call void @finch_panic(ptr @.str.1255, i64 347, ptr @.str.1256) - unreachable -ok2148: - %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 %panic2149, label %ok2150 -panic2149: - call void @finch_panic(ptr @.str.1257, i64 348, ptr @.str.1258) - unreachable -ok2150: - %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) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic2151, label %ok2152 -panic2151: - call void @finch_panic(ptr @.str.1259, i64 352, ptr @.str.1260) - unreachable -ok2152: - %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.1261, 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 %panic2153, label %ok2154 -panic2153: - call void @finch_panic(ptr @.str.1262, i64 353, ptr @.str.1263) - unreachable -ok2154: - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2155, label %ok2156 -panic2155: - call void @finch_panic(ptr @.str.1264, i64 357, ptr @.str.1265) - unreachable -ok2156: - %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 %then2157, label %endif2159 -then2157: - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1266, 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) - store { ptr, i64, i64 } %t13, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2160, label %ok2161 -panic2160: - call void @finch_panic(ptr @.str.1267, i64 359, ptr @.str.1268) - unreachable -ok2161: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 9 - store i1 true, ptr %t17 - br label %endif2159 -endif2159: - 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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1269, 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.1270, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1271, i64 9, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic2162, label %ok2163 -panic2162: - call void @finch_panic(ptr @.str.1272, i64 365, ptr @.str.1273) - unreachable -ok2163: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 9 - store i1 true, ptr %t36 - 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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2164, label %ok2165 -panic2164: - call void @finch_panic(ptr @.str.1274, i64 369, ptr @.str.1275) - unreachable -ok2165: - %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 %panic2166, label %ok2167 -panic2166: - call void @finch_panic(ptr @.str.1277, i64 370, ptr @.str.1278) - unreachable -ok2167: - %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.1276, i64 2, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2168, label %ok2169 -panic2168: - call void @finch_panic(ptr @.str.1279, i64 371, ptr @.str.1280) - unreachable -ok2169: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 5 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1281, i64 2, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1282, i64 10, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1283, i64 10, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load i64, ptr %t23 - %t46 = add i64 %t45, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t47 = load ptr, ptr %t22 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 - store { ptr, i64, i64 } %t44, ptr %t48 - store i64 %t46, ptr %t23 - %t49 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t49 -} - -define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { 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.1284, 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) - store { ptr, i64, i64 } %t12, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1285, i64 6, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t23, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t31 -} - -define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1286, 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.1287, i64 1, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1288, i64 6, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - ret void -} - -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 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a19 = 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 } %t7, ptr %a9 - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t14 = load %S.ast.Type, ptr %t13 - %t15 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t12, %S.ast.Type %t14) - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.store(ptr %t11, { ptr, i64, i64 } %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t20 -} - -define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = 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.1289, 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) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a5 - ret { ptr, i64, i64 } %t19 -} - -define internal i1 @finch.gen.has({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -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.cond2170 -find.cond2170: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body2171, label %find.end2174 -find.body2171: - %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.hit2172, label %find.next2173 -find.hit2172: - store i64 %t9, ptr %a5 - br label %find.end2174 -find.next2173: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond2170 -find.end2174: - %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.1290, 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.from2175 -logic.from2175: - br i1 %t12, label %logic.end2177, label %logic.rhs2176 -logic.rhs2176: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1291, 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.rend2178 -logic.rend2178: - br label %logic.end2177 -logic.end2177: - %t18 = phi i1 [ true, %logic.from2175 ], [ %t17, %logic.rend2178 ] - br label %logic.from2179 -logic.from2179: - br i1 %t18, label %logic.end2181, label %logic.rhs2180 -logic.rhs2180: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1292, 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.rend2182 -logic.rend2182: - br label %logic.end2181 -logic.end2181: - %t24 = phi i1 [ true, %logic.from2179 ], [ %t23, %logic.rend2182 ] - br label %logic.from2183 -logic.from2183: - br i1 %t24, label %logic.end2185, label %logic.rhs2184 -logic.rhs2184: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1293, 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.rend2186 -logic.rend2186: - br label %logic.end2185 -logic.end2185: - %t30 = phi i1 [ true, %logic.from2183 ], [ %t29, %logic.rend2186 ] - call void @finch_str_drop(ptr %a7) - 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.1294, 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.from2187 -logic.from2187: - br i1 %t12, label %logic.end2189, label %logic.rhs2188 -logic.rhs2188: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1295, 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.rend2190 -logic.rend2190: - br label %logic.end2189 -logic.end2189: - %t18 = phi i1 [ true, %logic.from2187 ], [ %t17, %logic.rend2190 ] - br label %logic.from2191 -logic.from2191: - br i1 %t18, label %logic.end2193, label %logic.rhs2192 -logic.rhs2192: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1296, 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.rend2194 -logic.rend2194: - br label %logic.end2193 -logic.end2193: - %t24 = phi i1 [ true, %logic.from2191 ], [ %t23, %logic.rend2194 ] - br label %logic.from2195 -logic.from2195: - br i1 %t24, label %logic.end2197, label %logic.rhs2196 -logic.rhs2196: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1297, 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.rend2198 -logic.rend2198: - br label %logic.end2197 -logic.end2197: - %t30 = phi i1 [ true, %logic.from2195 ], [ %t29, %logic.rend2198 ] - call void @finch_str_drop(ptr %a7) - 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.from2199 -logic.from2199: - br i1 %t3, label %logic.end2201, label %logic.rhs2200 -logic.rhs2200: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4) - br label %logic.rend2202 -logic.rend2202: - br label %logic.end2201 -logic.end2201: - %t6 = phi i1 [ true, %logic.from2199 ], [ %t5, %logic.rend2202 ] - 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.1298, 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.from2203 -logic.from2203: - br i1 %t7, label %logic.end2205, label %logic.rhs2204 -logic.rhs2204: - %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.1299, 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.rend2206 -logic.rend2206: - br label %logic.end2205 -logic.end2205: - %t14 = phi i1 [ true, %logic.from2203 ], [ %t13, %logic.rend2206 ] - 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.from2207 -logic.from2207: - br i1 %t3, label %logic.end2209, label %logic.rhs2208 -logic.rhs2208: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4) - br label %logic.rend2210 -logic.rend2210: - br label %logic.end2209 -logic.end2209: - %t6 = phi i1 [ true, %logic.from2207 ], [ %t5, %logic.rend2210 ] - 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.1300, 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 %then2211, label %endif2213 -then2211: - call void @finch_str_drop(ptr %a7) - ret i64 1 -endif2213: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1301, 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.from2214 -logic.from2214: - br i1 %t17, label %logic.end2216, label %logic.rhs2215 -logic.rhs2215: - %t18 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1302, 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.rend2217 -logic.rend2217: - br label %logic.end2216 -logic.end2216: - %t23 = phi i1 [ true, %logic.from2214 ], [ %t22, %logic.rend2217 ] - br label %logic.from2218 -logic.from2218: - br i1 %t23, label %logic.end2220, label %logic.rhs2219 -logic.rhs2219: - %t24 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1303, 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.rend2221 -logic.rend2221: - br label %logic.end2220 -logic.end2220: - %t29 = phi i1 [ true, %logic.from2218 ], [ %t28, %logic.rend2221 ] - br i1 %t29, label %then2222, label %endif2224 -then2222: - call void @finch_str_drop(ptr %a7) - ret i64 8 -endif2224: - %t30 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1304, 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.from2225 -logic.from2225: - br i1 %t34, label %logic.end2227, label %logic.rhs2226 -logic.rhs2226: - %t35 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1305, 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.rend2228 -logic.rend2228: - br label %logic.end2227 -logic.end2227: - %t40 = phi i1 [ true, %logic.from2225 ], [ %t39, %logic.rend2228 ] - br i1 %t40, label %then2229, label %endif2231 -then2229: - call void @finch_str_drop(ptr %a7) - ret i64 16 -endif2231: - %t41 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1306, 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.from2232 -logic.from2232: - br i1 %t45, label %logic.end2234, label %logic.rhs2233 -logic.rhs2233: - %t46 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1307, 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.rend2235 -logic.rend2235: - br label %logic.end2234 -logic.end2234: - %t51 = phi i1 [ true, %logic.from2232 ], [ %t50, %logic.rend2235 ] - br label %logic.from2236 -logic.from2236: - br i1 %t51, label %logic.end2238, label %logic.rhs2237 -logic.rhs2237: - %t52 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1308, 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.rend2239 -logic.rend2239: - br label %logic.end2238 -logic.end2238: - %t57 = phi i1 [ true, %logic.from2236 ], [ %t56, %logic.rend2239 ] - br i1 %t57, label %then2240, label %endif2242 -then2240: - call void @finch_str_drop(ptr %a7) - ret i64 32 -endif2242: - call void @finch_str_drop(ptr %a7) - 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.from2243 -logic.from2243: - br i1 %t5, label %logic.end2245, label %logic.rhs2244 -logic.rhs2244: - %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.rend2246 -logic.rend2246: - br label %logic.end2245 -logic.end2245: - %t9 = phi i1 [ true, %logic.from2243 ], [ %t8, %logic.rend2246 ] - br i1 %t9, label %then2247, label %endif2249 -then2247: - ret i1 false -endif2249: - %t10 = load %S.ast.Type, ptr %a1 - %t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10) - br label %logic.from2250 -logic.from2250: - br i1 %t11, label %logic.rhs2251, label %logic.end2252 -logic.rhs2251: - %t12 = load %S.ast.Type, ptr %a2 - %t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12) - br label %logic.rend2253 -logic.rend2253: - br label %logic.end2252 -logic.end2252: - %t14 = phi i1 [ false, %logic.from2250 ], [ %t13, %logic.rend2253 ] - br i1 %t14, label %then2254, label %endif2256 -then2254: - ret i1 false -endif2256: - %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 %then2257, label %endif2259 -then2257: - ret i1 false -endif2259: - %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.1309, i64 464) - 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 %then2260, label %endif2262 -then2260: - %t16 = load %S.ast.Type, ptr %a3 - %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) - br i1 %t17, label %then2263, label %endif2265 -then2263: - ret i1 false -endif2265: - %t18 = load i64, ptr %a13 - %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then2266, label %endif2268 -then2266: - ret i1 true -endif2268: - %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 -endif2262: - %t26 = load i64, ptr %a13 - %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then2269, label %endif2271 -then2269: - ret i1 true -endif2271: - %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 %then2272, label %endif2274 -then2272: - %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 %endif2274 -endif2274: - %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 %panic2275, label %ok2276 -panic2275: - call void @finch_panic(ptr @.str.1310, i64 486, ptr @.str.1311) - unreachable -ok2276: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 16 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2277 -for.cond2277: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2278, label %for.end2280 -for.body2278: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2281, label %ok2282 -panic2281: - call void @finch_panic(ptr @.str.1312, i64 487, ptr @.str.1313) - unreachable -ok2282: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2283, label %inrange2284 -range2283: - call void @finch_panic_index(ptr @.str.1314, i64 487, i64 %t15, i64 %t17) - unreachable -inrange2284: - %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.from2285 -logic.from2285: - br i1 %t27, label %logic.rhs2286, label %logic.end2287 -logic.rhs2286: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2288, label %ok2289 -panic2288: - call void @finch_panic(ptr @.str.1315, i64 487, ptr @.str.1316) - unreachable -ok2289: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2290, label %inrange2291 -range2290: - call void @finch_panic_index(ptr @.str.1317, i64 487, i64 %t31, i64 %t33) - unreachable -inrange2291: - %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.rend2292 -logic.rend2292: - br label %logic.end2287 -logic.end2287: - %t44 = phi i1 [ false, %logic.from2285 ], [ %t43, %logic.rend2292 ] - br i1 %t44, label %then2293, label %endif2295 -then2293: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2295: - br label %for.step2279 -for.step2279: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2277 -for.end2280: - 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 %panic2296, label %ok2297 -panic2296: - call void @finch_panic(ptr @.str.1318, i64 495, ptr @.str.1319) - unreachable -ok2297: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2298 -for.cond2298: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2299, label %for.end2301 -for.body2299: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2302, label %ok2303 -panic2302: - call void @finch_panic(ptr @.str.1320, i64 496, ptr @.str.1321) - unreachable -ok2303: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 21 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2304, label %inrange2305 -range2304: - call void @finch_panic_index(ptr @.str.1322, i64 496, i64 %t15, i64 %t17) - unreachable -inrange2305: - %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.from2306 -logic.from2306: - br i1 %t27, label %logic.rhs2307, label %logic.end2308 -logic.rhs2307: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2309, label %ok2310 -panic2309: - call void @finch_panic(ptr @.str.1323, i64 496, ptr @.str.1324) - unreachable -ok2310: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 21 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2311, label %inrange2312 -range2311: - call void @finch_panic_index(ptr @.str.1325, i64 496, i64 %t31, i64 %t33) - unreachable -inrange2312: - %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.rend2313 -logic.rend2313: - br label %logic.end2308 -logic.end2308: - %t44 = phi i1 [ false, %logic.from2306 ], [ %t43, %logic.rend2313 ] - br i1 %t44, label %then2314, label %endif2316 -then2314: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2316: - br label %for.step2300 -for.step2300: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2298 -for.end2301: - ret i64 -1 -} - -define internal i64 @finch.gen.findSum(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 %panic2317, label %ok2318 -panic2317: - call void @finch_panic(ptr @.str.1326, i64 504, ptr @.str.1327) - unreachable -ok2318: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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.cond2319 -for.cond2319: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2320, label %for.end2322 -for.body2320: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2323, label %ok2324 -panic2323: - call void @finch_panic(ptr @.str.1328, i64 505, ptr @.str.1329) - unreachable -ok2324: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 22 - %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 %range2325, label %inrange2326 -range2325: - call void @finch_panic_index(ptr @.str.1330, i64 505, i64 %t15, i64 %t17) - unreachable -inrange2326: - %t19 = extractvalue { ptr, i64, i64 } %t16, 0 - %t20 = getelementptr inbounds %S.gen.SumDef, ptr %t19, i64 %t15 - %t21 = getelementptr inbounds %S.gen.SumDef, 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.from2327 -logic.from2327: - br i1 %t27, label %logic.rhs2328, label %logic.end2329 -logic.rhs2328: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2330, label %ok2331 -panic2330: - call void @finch_panic(ptr @.str.1331, i64 505, ptr @.str.1332) - unreachable -ok2331: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 22 - %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 %range2332, label %inrange2333 -range2332: - call void @finch_panic_index(ptr @.str.1333, i64 505, i64 %t31, i64 %t33) - unreachable -inrange2333: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.gen.SumDef, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.gen.SumDef, 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.rend2334 -logic.rend2334: - br label %logic.end2329 -logic.end2329: - %t44 = phi i1 [ false, %logic.from2327 ], [ %t43, %logic.rend2334 ] - br i1 %t44, label %then2335, label %endif2337 -then2335: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2337: - br label %for.step2321 -for.step2321: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2319 -for.end2322: - 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 %panic2338, label %ok2339 -panic2338: - call void @finch_panic(ptr @.str.1334, i64 513, ptr @.str.1335) - unreachable -ok2339: - %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.cond2340 -for.cond2340: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2341, label %for.end2343 -for.body2341: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2344, label %ok2345 -panic2344: - call void @finch_panic(ptr @.str.1336, i64 514, ptr @.str.1337) - unreachable -ok2345: - %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 %range2346, label %inrange2347 -range2346: - call void @finch_panic_index(ptr @.str.1338, i64 514, i64 %t14, i64 %t16) - unreachable -inrange2347: - %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 %then2348, label %endif2350 -then2348: - %t27 = load i64, ptr %a8 - ret i64 %t27 -endif2350: - br label %for.step2342 -for.step2342: - %t28 = load i64, ptr %a8 - %t29 = add i64 %t28, 1 - store i64 %t29, ptr %a8 - br label %for.cond2340 -for.end2343: - 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 %panic2351, label %ok2352 -panic2351: - call void @finch_panic(ptr @.str.1339, i64 522, ptr @.str.1340) - unreachable -ok2352: - %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 %panic2353, label %ok2354 -panic2353: - call void @finch_panic(ptr @.str.1341, i64 522, ptr @.str.1342) - unreachable -ok2354: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 14 - %t10 = load { ptr, i64, i64 }, ptr %t9 - %t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10) - %t12 = load { ptr, i64, i64 }, ptr %t5 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range2355, label %inrange2356 -range2355: - call void @finch_panic_index(ptr @.str.1343, i64 522, i64 %t11, i64 %t13) - unreachable -inrange2356: - %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.cond2357 -find.cond2357: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t21 - br i1 %t25, label %find.body2358, label %find.end2361 -find.body2358: - %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.hit2359, label %find.next2360 -find.hit2359: - store i64 %t24, ptr %a20 - br label %find.end2361 -find.next2360: - %t32 = add i64 %t24, 1 - store i64 %t32, ptr %a23 - br label %find.cond2357 -find.end2361: - %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 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Type, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Type, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a155 = alloca %S.ast.Type, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a181 = alloca i64, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca i64, align 16 - %a209 = alloca i64, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1344, 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 %then2362, label %endif2364 -then2362: - %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 %range2365, label %inrange2366 -range2365: - call void @finch_panic_index(ptr @.str.1345, i64 527, i64 0, i64 %t13) - unreachable -inrange2366: - %t15 = extractvalue { ptr, i64, i64 } %t12, 0 - %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = load %S.ast.Node, ptr %a3 - %t19 = call %S.ast.Type @finch.gen.resolve(ptr %t10, %S.ast.Type %t17, %S.ast.Node %t18) - %t20 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.ast.Type %t20 -endif2364: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1346, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then2367, label %endif2369 -then2367: - %t28 = load ptr, ptr %a1 - %t29 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t30 = load { ptr, i64, i64 }, ptr %t29 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 0, %t31 - br i1 %t32, label %range2370, label %inrange2371 -range2370: - call void @finch_panic_index(ptr @.str.1347, i64 530, i64 0, i64 %t31) - unreachable -inrange2371: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Type, ptr %t33, i64 0 - %t35 = load %S.ast.Type, ptr %t34 - %t36 = load %S.ast.Node, ptr %a3 - %t37 = call %S.ast.Type @finch.gen.resolve(ptr %t28, %S.ast.Type %t35, %S.ast.Node %t36) - store %S.ast.Type %t37, ptr %a38 - %t39 = load %S.ast.Type, ptr %a38 - %t40 = call i1 @finch.gen.isInt(%S.ast.Type %t39) - %t41 = xor i1 %t40, true - br label %logic.from2372 -logic.from2372: - br i1 %t41, label %logic.rhs2373, label %logic.end2374 -logic.rhs2373: - %t42 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.1348, i64 4, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp eq i32 %t46, 0 - br label %logic.rend2375 -logic.rend2375: - br label %logic.end2374 -logic.end2374: - %t48 = phi i1 [ false, %logic.from2372 ], [ %t47, %logic.rend2375 ] - br label %logic.from2376 -logic.from2376: - br i1 %t48, label %logic.rhs2377, label %logic.end2378 -logic.rhs2377: - %t49 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1349, i64 4, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp eq i32 %t53, 0 - br label %logic.rend2379 -logic.rend2379: - br label %logic.end2378 -logic.end2378: - %t55 = phi i1 [ false, %logic.from2376 ], [ %t54, %logic.rend2379 ] - br label %logic.from2380 -logic.from2380: - br i1 %t55, label %logic.rhs2381, label %logic.end2382 -logic.rhs2381: - %t56 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1350, i64 3, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp eq i32 %t60, 0 - br label %logic.rend2383 -logic.rend2383: - br label %logic.end2382 -logic.end2382: - %t62 = phi i1 [ false, %logic.from2380 ], [ %t61, %logic.rend2383 ] - br label %logic.from2384 -logic.from2384: - br i1 %t62, label %logic.rhs2385, label %logic.end2386 -logic.rhs2385: - %t63 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t64 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.1351, i64 4, i64 0 }, ptr %a66 - %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) - %t68 = icmp eq i32 %t67, 0 - br label %logic.rend2387 -logic.rend2387: - br label %logic.end2386 -logic.end2386: - %t69 = phi i1 [ false, %logic.from2384 ], [ %t68, %logic.rend2387 ] - br i1 %t69, label %then2388, label %endif2390 -then2388: - %t70 = load ptr, ptr %a1 - %t71 = load %S.ast.Node, ptr %a3 - %t72 = load %S.ast.Type, ptr %a38 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } { ptr @.str.1352, i64 63, i64 0 }, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif2390 -endif2390: - %t80 = load ptr, ptr %a1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = extractvalue { ptr, i64, i64 } %t82, 1 - %t84 = icmp uge i64 1, %t83 - br i1 %t84, label %range2391, label %inrange2392 -range2391: - call void @finch_panic_index(ptr @.str.1353, i64 534, i64 1, i64 %t83) - unreachable -inrange2392: - %t85 = extractvalue { ptr, i64, i64 } %t82, 0 - %t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 1 - %t87 = load %S.ast.Type, ptr %t86 - %t88 = load %S.ast.Node, ptr %a3 - %t89 = call %S.ast.Type @finch.gen.resolve(ptr %t80, %S.ast.Type %t87, %S.ast.Node %t88) - store %S.ast.Type %t89, ptr %a90 - %t91 = getelementptr inbounds %S.ast.Type, ptr %a90, i32 0, i32 0 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.1354, i64 4, i64 0 }, ptr %a94 - %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) - %t96 = icmp ne i32 %t95, 0 - br i1 %t96, label %then2393, label %endif2395 -then2393: - %t97 = load ptr, ptr %a1 - %t98 = load %S.ast.Node, ptr %a3 - call void @finch.gen.fail(ptr %t97, %S.ast.Node %t98, { ptr, i64, i64 } { ptr @.str.1355, i64 41, i64 0 }) - br label %endif2395 -endif2395: - %t99 = load %S.ast.Type, ptr %a38 - %t100 = load %S.ast.Type, ptr %a90 - %t101 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t99, %S.ast.Type %t100) - call void @finch.drop.S_ast_Type(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.ast.Type %t101 -endif2369: - %t102 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1356, i64 5, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br i1 %t107, label %then2396, label %endif2398 -then2396: - %t108 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1357, i64 5, i64 0 }, 0 - %t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t110 = load i64, ptr %t109 - %t111 = insertvalue %S.ast.Type %t108, i64 %t110, 4 - store %S.ast.Type %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Type, ptr %a112, i32 0, i32 1 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 0, %t118 - br i1 %t119, label %range2399, label %inrange2400 -range2399: - call void @finch_panic_index(ptr @.str.1358, i64 542, i64 0, i64 %t118) - unreachable -inrange2400: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Type, ptr %t120, i64 0 - %t122 = load %S.ast.Type, ptr %t121 - %t123 = load %S.ast.Node, ptr %a3 - %t124 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t122, %S.ast.Node %t123) - %t125 = load i64, ptr %t114 - %t126 = add i64 %t125, 1 - call void @finch_arr_reserve(ptr %t113, i64 %t126, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t127 = load ptr, ptr %t113 - %t128 = getelementptr inbounds %S.ast.Type, ptr %t127, i64 %t125 - store %S.ast.Type %t124, ptr %t128 - store i64 %t126, ptr %t114 - %t129 = load %S.ast.Type, ptr %a112 - ret %S.ast.Type %t129 -endif2398: - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1359, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %then2401, label %endif2403 -then2401: - %t136 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br i1 %t139, label %then2404, label %endif2406 -then2404: - %t140 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - ret %S.ast.Type %t143 -endif2406: - %t144 = load ptr, ptr %a1 - %t145 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %t145 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 0, %t147 - br i1 %t148, label %range2407, label %inrange2408 -range2407: - call void @finch_panic_index(ptr @.str.1360, i64 549, i64 0, i64 %t147) - unreachable -inrange2408: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = load %S.ast.Node, ptr %a3 - %t153 = call %S.ast.Type @finch.gen.resolve(ptr %t144, %S.ast.Type %t151, %S.ast.Node %t152) - %t154 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t153) - store %S.ast.Type %t153, ptr %a155 - call void @finch.drop.S_ast_Type(ptr %a155) - ret %S.ast.Type %t154 -endif2403: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.1361, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br i1 %t161, label %then2409, label %endif2411 -then2409: - %t162 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t162, ptr %a163 - call void @finch.copy.S_ast_Type(ptr %a164, ptr %a163) - %t165 = load %S.ast.Type, ptr %a164 - ret %S.ast.Type %t165 -endif2411: - %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = icmp eq i64 %t168, 0 - br label %logic.from2412 -logic.from2412: - br i1 %t169, label %logic.rhs2413, label %logic.end2414 -logic.rhs2413: - %t170 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = icmp eq i64 %t172, 0 - br label %logic.rend2415 -logic.rend2415: - br label %logic.end2414 -logic.end2414: - %t174 = phi i1 [ false, %logic.from2412 ], [ %t173, %logic.rend2415 ] - br label %logic.from2416 -logic.from2416: - br i1 %t174, label %logic.rhs2417, label %logic.end2418 -logic.rhs2417: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic2419, label %ok2420 -panic2419: - call void @finch_panic(ptr @.str.1362, i64 555, ptr @.str.1363) - unreachable -ok2420: - %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 18 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t180 = load { ptr, i64, i64 }, ptr %t179 - store i64 -1, ptr %a181 - %t182 = load i64, ptr %t178 - %t183 = load ptr, ptr %t177 - store i64 0, ptr %a184 - br label %find.cond2421 -find.cond2421: - %t185 = load i64, ptr %a184 - %t186 = icmp slt i64 %t185, %t182 - br i1 %t186, label %find.body2422, label %find.end2425 -find.body2422: - %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.hit2423, label %find.next2424 -find.hit2423: - store i64 %t185, ptr %a181 - br label %find.end2425 -find.next2424: - %t193 = add i64 %t185, 1 - store i64 %t193, ptr %a184 - br label %find.cond2421 -find.end2425: - %t194 = load i64, ptr %a181 - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend2426 -logic.rend2426: - br label %logic.end2418 -logic.end2418: - %t196 = phi i1 [ false, %logic.from2416 ], [ %t195, %logic.rend2426 ] - br i1 %t196, label %then2427, label %endif2429 -then2427: - %t197 = load ptr, ptr %a1 - %t198 = icmp eq ptr %t197, null - br i1 %t198, label %panic2430, label %ok2431 -panic2430: - call void @finch_panic(ptr @.str.1364, i64 556, ptr @.str.1365) - unreachable -ok2431: - %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 19 - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic2432, label %ok2433 -panic2432: - call void @finch_panic(ptr @.str.1366, i64 556, ptr @.str.1367) - unreachable -ok2433: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 18 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 - %t204 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t205 = load { ptr, i64, i64 }, ptr %t204 - store i64 -1, ptr %a206 - %t207 = load i64, ptr %t203 - %t208 = load ptr, ptr %t202 - store i64 0, ptr %a209 - br label %find.cond2434 -find.cond2434: - %t210 = load i64, ptr %a209 - %t211 = icmp slt i64 %t210, %t207 - br i1 %t211, label %find.body2435, label %find.end2438 -find.body2435: - %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } %t205, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %find.hit2436, label %find.next2437 -find.hit2436: - store i64 %t210, ptr %a206 - br label %find.end2438 -find.next2437: - %t218 = add i64 %t210, 1 - store i64 %t218, ptr %a209 - br label %find.cond2434 -find.end2438: - %t219 = load i64, ptr %a206 - %t220 = load { ptr, i64, i64 }, ptr %t199 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range2439, label %inrange2440 -range2439: - call void @finch_panic_index(ptr @.str.1368, i64 556, i64 %t219, i64 %t221) - unreachable -inrange2440: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i64 %t219 - %t225 = load %S.ast.Type, ptr %t224 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - ret %S.ast.Type %t228 -endif2429: - %t229 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t231 = load i64, ptr %t230 - %t232 = icmp sgt i64 %t231, 0 - br i1 %t232, label %then2441, label %endif2443 -then2441: - store { ptr, i64, i64 } zeroinitializer, ptr %a233 - %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - store i64 0, ptr %a235 - br label %each.cond2444 -each.cond2444: - %t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t237 = load i64, ptr %t236 - %t238 = load i64, ptr %a235 - %t239 = icmp slt i64 %t238, %t237 - br i1 %t239, label %each.body2445, label %each.end2447 -each.body2445: - %t240 = load ptr, ptr %t234 - %t241 = getelementptr inbounds %S.ast.Type, ptr %t240, i64 %t238 - %t242 = load %S.ast.Type, ptr %t241 - store %S.ast.Type %t242, ptr %a243 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a233, i32 0, i32 1 - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Type, ptr %a243 - %t247 = load %S.ast.Node, ptr %a3 - %t248 = call %S.ast.Type @finch.gen.resolve(ptr %t245, %S.ast.Type %t246, %S.ast.Node %t247) - %t249 = load i64, ptr %t244 - %t250 = add i64 %t249, 1 - call void @finch_arr_reserve(ptr %a233, i64 %t250, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t251 = load ptr, ptr %a233 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i64 %t249 - store %S.ast.Type %t248, ptr %t252 - store i64 %t250, ptr %t244 - br label %each.step2446 -each.step2446: - %t253 = load i64, ptr %a235 - %t254 = add i64 %t253, 1 - store i64 %t254, ptr %a235 - br label %each.cond2444 -each.end2447: - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic2448, label %ok2449 -panic2448: - call void @finch_panic(ptr @.str.1369, i64 564, ptr @.str.1370) - unreachable -ok2449: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 14 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - %t266 = icmp sgt i64 %t265, 0 - br i1 %t266, label %then2450, label %endif2452 -then2450: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = call i1 @finch.gen.imports(ptr %t267, { ptr, i64, i64 } %t269) - %t271 = xor i1 %t270, true - br i1 %t271, label %then2453, label %endif2455 -then2453: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a3 - %t274 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.1372, i64 36, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t286 = load { ptr, i64, i64 }, ptr %t285 - store { ptr, i64, i64 } %t284, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t284, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.1373, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t272, %S.ast.Node %t273, { ptr, i64, i64 } %t296) - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif2455 -endif2455: - %t298 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t299 = load { ptr, i64, i64 }, ptr %t298 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_copy(ptr %a301, ptr %a300) - %t302 = load { ptr, i64, i64 }, ptr %a301 - %t303 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t302, ptr %a262 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif2452 -endif2452: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a262 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = load { ptr, i64, i64 }, ptr %a233 - %t310 = load %S.ast.Node, ptr %a3 - %t311 = call %S.ast.Type @finch.gen.instStruct(ptr %t305, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t308, { ptr, i64, i64 } %t309, %S.ast.Node %t310) - call void @finch_str_drop(ptr %a262) - call void @finch.drop.arr_S_ast_Type(ptr %a233) - ret %S.ast.Type %t311 -endif2443: - %t312 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1374, i64 1, i64 0 }, ptr %a315 - %t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315) - %t317 = icmp ne i32 %t316, 0 - br i1 %t317, label %then2456, label %endif2458 -then2456: - %t318 = load ptr, ptr %a1 - %t319 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t320 = load { ptr, i64, i64 }, ptr %t319 - %t321 = call i64 @finch.gen.findStruct(ptr %t318, { ptr, i64, i64 } { ptr @.str.1375, i64 1, i64 0 }, { ptr, i64, i64 } %t320) - %t322 = icmp slt i64 %t321, 0 - br i1 %t322, label %then2459, label %endif2461 -then2459: - %t323 = load ptr, ptr %a1 - %t324 = load %S.ast.Node, ptr %a3 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t326 = load { ptr, i64, i64 }, ptr %t325 - store { ptr, i64, i64 } { ptr @.str.1376, i64 28, i64 0 }, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - %t330 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t330, ptr %a332 - store { ptr, i64, i64 } { ptr @.str.1377, i64 1, i64 0 }, ptr %a333 - call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_drop(ptr %a334) - %t335 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t335) - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif2461 -endif2461: - %t337 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1378, i64 6, i64 0 }, 0 - %t338 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_copy(ptr %a341, ptr %a340) - %t342 = load { ptr, i64, i64 }, ptr %a341 - %t343 = insertvalue %S.ast.Type %t337, { ptr, i64, i64 } %t342, 2 - %t344 = insertvalue %S.ast.Type %t343, { ptr, i64, i64 } { ptr @.str.1379, i64 1, i64 0 }, 3 - ret %S.ast.Type %t344 -endif2458: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic2462, label %ok2463 -panic2462: - call void @finch_panic(ptr @.str.1380, i64 579, ptr @.str.1381) - unreachable -ok2463: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 14 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_copy(ptr %a350, ptr %a349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t351, ptr %a352 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i32 0, i32 1 - %t355 = load i64, ptr %t354 - %t356 = icmp sgt i64 %t355, 0 - br i1 %t356, label %then2464, label %endif2466 -then2464: - %t357 = load ptr, ptr %a1 - %t358 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t359 = load { ptr, i64, i64 }, ptr %t358 - %t360 = call i1 @finch.gen.imports(ptr %t357, { ptr, i64, i64 } %t359) - %t361 = xor i1 %t360, true - br i1 %t361, label %then2467, label %endif2469 -then2467: - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Node, ptr %a3 - %t364 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.1382, i64 1, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1383, i64 36, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t376 = load { ptr, i64, i64 }, ptr %t375 - store { ptr, i64, i64 } %t374, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t374, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.1384, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - call void @finch.gen.fail(ptr %t362, %S.ast.Node %t363, { ptr, i64, i64 } %t386) - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif2469 -endif2469: - %t388 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch_str_copy(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - %t393 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t392, ptr %a352 - store { ptr, i64, i64 } %t393, ptr %a394 - call void @finch_str_drop(ptr %a394) - br label %endif2466 -endif2466: - %t395 = load ptr, ptr %a1 - %t396 = load { ptr, i64, i64 }, ptr %a352 - %t397 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t398 = load { ptr, i64, i64 }, ptr %t397 - %t399 = call i64 @finch.gen.findEnum(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398) - %t400 = icmp sge i64 %t399, 0 - br i1 %t400, label %then2470, label %endif2472 -then2470: - %t401 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1385, i64 4, i64 0 }, 0 - %t402 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - call void @finch_str_copy(ptr %a405, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - %t407 = insertvalue %S.ast.Type %t401, { ptr, i64, i64 } %t406, 2 - %t408 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t408, ptr %a409 - call void @finch_str_copy(ptr %a410, ptr %a409) - %t411 = load { ptr, i64, i64 }, ptr %a410 - %t412 = insertvalue %S.ast.Type %t407, { ptr, i64, i64 } %t411, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t412 -endif2472: - %t413 = load ptr, ptr %a1 - %t414 = load { ptr, i64, i64 }, ptr %a352 - %t415 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call i64 @finch.gen.findStruct(ptr %t413, { ptr, i64, i64 } %t414, { ptr, i64, i64 } %t416) - %t418 = icmp slt i64 %t417, 0 - br i1 %t418, label %then2473, label %endif2475 -then2473: - %t419 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 - %t421 = load i64, ptr %t420 - %t422 = icmp eq i64 %t421, 0 - br label %logic.from2476 -logic.from2476: - br i1 %t422, label %logic.rhs2477, label %logic.end2478 -logic.rhs2477: - %t423 = load ptr, ptr %a1 - %t424 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t425 = load { ptr, i64, i64 }, ptr %t424 - %t426 = call i64 @finch.gen.findStruct(ptr %t423, { ptr, i64, i64 } { ptr @.str.1386, i64 1, i64 0 }, { ptr, i64, i64 } %t425) - %t427 = icmp sge i64 %t426, 0 - br label %logic.rend2479 -logic.rend2479: - br label %logic.end2478 -logic.end2478: - %t428 = phi i1 [ false, %logic.from2476 ], [ %t427, %logic.rend2479 ] - br i1 %t428, label %then2480, label %endif2482 -then2480: - %t429 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1387, i64 6, i64 0 }, 0 - %t430 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t431 = load { ptr, i64, i64 }, ptr %t430 - store { ptr, i64, i64 } %t431, ptr %a432 - call void @finch_str_copy(ptr %a433, ptr %a432) - %t434 = load { ptr, i64, i64 }, ptr %a433 - %t435 = insertvalue %S.ast.Type %t429, { ptr, i64, i64 } %t434, 2 - %t436 = insertvalue %S.ast.Type %t435, { ptr, i64, i64 } { ptr @.str.1388, i64 1, i64 0 }, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t436 -endif2482: - %t437 = load ptr, ptr %a1 - %t438 = load %S.ast.Node, ptr %a3 - %t439 = load %S.ast.Type, ptr %a2 - %t440 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t439) - store { ptr, i64, i64 } { ptr @.str.1389, i64 24, i64 0 }, ptr %a442 - store { ptr, i64, i64 } %t440, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - store { ptr, i64, i64 } %t445, ptr %a447 - store { ptr, i64, i64 } { ptr @.str.1390, i64 1, i64 0 }, ptr %a448 - call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) - store { ptr, i64, i64 } %t445, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a446 - call void @finch.gen.fail(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a451 - call void @finch_str_drop(ptr %a451) - br label %endif2475 -endif2475: - %t452 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1391, i64 6, i64 0 }, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_copy(ptr %a456, ptr %a455) - %t457 = load { ptr, i64, i64 }, ptr %a456 - %t458 = insertvalue %S.ast.Type %t452, { ptr, i64, i64 } %t457, 2 - %t459 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t459, ptr %a460 - call void @finch_str_copy(ptr %a461, ptr %a460) - %t462 = load { ptr, i64, i64 }, ptr %a461 - %t463 = insertvalue %S.ast.Type %t458, { ptr, i64, i64 } %t462, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t463 -} - -define internal { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %p0) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1393, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1394, 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.1396, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1397, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1399, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1400, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1402, i64 1, i64 0 }, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1403, i64 0, i64 0 }, ptr %a23 - call void @finch_str_replace(ptr %a21, ptr %a20, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a25 - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t24 -} - -define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) { -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 %then2483, label %endif2485 -then2483: - ret { ptr, i64, i64 } { ptr @.str.1404, i64 4, i64 0 } -endif2485: - %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 - %a29 = 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 - %a38 = 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.1405, 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 %then2486, label %endif2488 -then2486: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1406, i64 2, i64 0 } -endif2488: - %t14 = load %S.ast.Type, ptr %a2 - %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) - br label %logic.from2489 -logic.from2489: - br i1 %t15, label %logic.end2491, label %logic.rhs2490 -logic.rhs2490: - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - 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.rend2492 -logic.rend2492: - br label %logic.end2491 -logic.end2491: - %t21 = phi i1 [ true, %logic.from2489 ], [ %t20, %logic.rend2492 ] - br i1 %t21, label %then2493, label %endif2495 -then2493: - %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.1408, i64 1, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t30 -endif2495: - %t31 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1409, i64 5, i64 0 }, ptr %a33 - %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) - %t35 = icmp ne i32 %t34, 0 - br i1 %t35, label %then2496, label %endif2498 -then2496: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1410, i64 6, i64 0 } -endif2498: - %t36 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 }, ptr %a38 - %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) - %t40 = icmp ne i32 %t39, 0 - br i1 %t40, label %then2499, label %endif2501 -then2499: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1412, i64 5, i64 0 } -endif2501: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1413, 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.from2502 -logic.from2502: - br i1 %t45, label %logic.end2504, label %logic.rhs2503 -logic.rhs2503: - %t46 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1414, i64 5, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - br label %logic.rend2505 -logic.rend2505: - br label %logic.end2504 -logic.end2504: - %t51 = phi i1 [ true, %logic.from2502 ], [ %t50, %logic.rend2505 ] - br i1 %t51, label %then2506, label %endif2508 -then2506: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1415, i64 17, i64 0 } -endif2508: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1416, 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 %then2509, label %endif2511 -then2509: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1417, i64 37, i64 0 } -endif2511: - %t57 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1418, 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 %then2512, label %endif2514 -then2512: - %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1419, i64 1, i64 0 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.1420, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = load ptr, ptr %a1 - %t77 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range2515, label %inrange2516 -range2515: - call void @finch_panic_index(ptr @.str.1421, i64 632, i64 0, i64 %t79) - unreachable -inrange2516: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0 - %t83 = load %S.ast.Type, ptr %t82 - %t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t76, %S.ast.Type %t83) - store { ptr, i64, i64 } %t75, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t75, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.1422, i64 1, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t95 -endif2514: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.1423, i64 4, i64 0 }, ptr %a98 - %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) - %t100 = icmp ne i32 %t99, 0 - br i1 %t100, label %then2517, label %endif2519 -then2517: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1424, i64 3, i64 0 } -endif2519: - %t101 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1425, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.from2520 -logic.from2520: - br i1 %t105, label %logic.end2522, label %logic.rhs2521 -logic.rhs2521: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1426, 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.rend2523 -logic.rend2523: - br label %logic.end2522 -logic.end2522: - %t111 = phi i1 [ true, %logic.from2520 ], [ %t110, %logic.rend2523 ] - br i1 %t111, label %then2524, label %endif2526 -then2524: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1427, i64 3, i64 0 } -endif2526: - %t112 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1428, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2527, label %endif2529 -then2527: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1429, i64 4, i64 0 } -endif2529: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t118) - store { ptr, i64, i64 } { ptr @.str.1430, i64 3, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.1431, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t131) - store { ptr, i64, i64 } %t129, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t132, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a133 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t138 -} - -define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) { -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 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then2530, label %endif2532 -then2530: - %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 -endif2532: - store { ptr, i64, i64 } { ptr @.str.1432, 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.1433, 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 %then2533, label %endif2535 -then2533: - %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) - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t21, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif2535 -endif2535: - %t24 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1434, 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.1435, i64 21, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) { -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 - %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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1436, 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) - store { ptr, i64, i64 } %t7, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1437, i64 1, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.1438, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - ret { ptr, i64, i64 } %t47 -} - -define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) { -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.from2536 -logic.from2536: - br i1 %t9, label %logic.end2538, label %logic.rhs2537 -logic.rhs2537: - %t10 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1439, 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.rend2539 -logic.rend2539: - br label %logic.end2538 -logic.end2538: - %t15 = phi i1 [ true, %logic.from2536 ], [ %t14, %logic.rend2539 ] - br label %logic.from2540 -logic.from2540: - br i1 %t15, label %logic.end2542, label %logic.rhs2541 -logic.rhs2541: - %t16 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1440, 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.rend2543 -logic.rend2543: - br label %logic.end2542 -logic.end2542: - %t21 = phi i1 [ true, %logic.from2540 ], [ %t20, %logic.rend2543 ] - br i1 %t21, label %then2544, label %endif2546 -then2544: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1441, i64 1, i64 0 } -endif2546: - %t22 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1442, 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 %then2547, label %endif2549 -then2547: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1443, i64 5, i64 0 } -endif2549: - %t27 = load %S.ast.Type, ptr %a1 - %t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27) - br i1 %t28, label %then2550, label %endif2552 -then2550: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1444, i64 3, i64 0 } -endif2552: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1445, 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.from2553 -logic.from2553: - br i1 %t33, label %logic.end2555, label %logic.rhs2554 -logic.rhs2554: - %t34 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1446, 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.rend2556 -logic.rend2556: - br label %logic.end2555 -logic.end2555: - %t39 = phi i1 [ true, %logic.from2553 ], [ %t38, %logic.rend2556 ] - br i1 %t39, label %then2557, label %endif2559 -then2557: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1447, i64 4, i64 0 } -endif2559: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1448, 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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.1449, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1450, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal i1 @finch.gen.owning(ptr %p0, %S.ast.Type %p1) { -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.1451, 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.from2560 -logic.from2560: - br i1 %t8, label %logic.end2562, label %logic.rhs2561 -logic.rhs2561: - %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.1452, 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.rend2563 -logic.rend2563: - br label %logic.end2562 -logic.end2562: - %t15 = phi i1 [ true, %logic.from2560 ], [ %t14, %logic.rend2563 ] - br label %logic.from2564 -logic.from2564: - br i1 %t15, label %logic.end2566, label %logic.rhs2565 -logic.rhs2565: - %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.1453, 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.rend2567 -logic.rend2567: - br label %logic.end2566 -logic.end2566: - %t22 = phi i1 [ true, %logic.from2564 ], [ %t21, %logic.rend2567 ] - br i1 %t22, label %then2568, label %endif2570 -then2568: - ret i1 true -endif2570: - %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.1454, 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 %then2571, label %endif2573 -then2571: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2574, label %ok2575 -panic2574: - call void @finch_panic(ptr @.str.1455, i64 690, ptr @.str.1456) - unreachable -ok2575: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 16 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t34 = load { ptr, i64, i64 }, ptr %t33 - %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 %range2576, label %inrange2577 -range2576: - call void @finch_panic_index(ptr @.str.1457, i64 690, i64 %t37, i64 %t39) - unreachable -inrange2577: - %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 -endif2573: - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1458, 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 %then2578, label %endif2580 -then2578: - %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 %range2581, label %inrange2582 -range2581: - call void @finch_panic_index(ptr @.str.1460, i64 697, i64 0, i64 %t10) - unreachable -inrange2582: - %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.1459, i64 4, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif2580: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1461, 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 %then2583, label %endif2585 -then2583: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 0, %t29 - br i1 %t30, label %range2586, label %inrange2587 -range2586: - call void @finch_panic_index(ptr @.str.1463, i64 700, i64 0, i64 %t29) - unreachable -inrange2587: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 0 - %t33 = load %S.ast.Type, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t33) - store { ptr, i64, i64 } { ptr @.str.1462, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1464, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range2588, label %inrange2589 -range2588: - call void @finch_panic_index(ptr @.str.1465, i64 700, i64 1, i64 %t47) - unreachable -inrange2589: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Type, ptr %t49, i64 1 - %t51 = load %S.ast.Type, ptr %t50 - %t52 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t51) - store { ptr, i64, i64 } %t44, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t44, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - ret { ptr, i64, i64 } %t58 -endif2585: - %t59 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.1466, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then2590, label %endif2592 -then2590: - %t65 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t66 = load { ptr, i64, i64 }, ptr %t65 - %t67 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t66) - store { ptr, i64, i64 } { ptr @.str.1467, i64 2, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1468, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, ptr %a81 - store { ptr, i64, i64 } %t79, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t77, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -endif2592: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1469, i64 6, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp ne i32 %t89, 0 - br i1 %t90, label %then2593, label %endif2595 -then2593: - %t91 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t92) - store { ptr, i64, i64 } { ptr @.str.1470, i64 2, i64 0 }, ptr %a95 - store { ptr, i64, i64 } %t93, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.1471, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t105) - store { ptr, i64, i64 } %t103, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t103, ptr %a110 - call void @finch_str_drop(ptr %a110) - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a107 - ret { ptr, i64, i64 } %t112 -endif2595: - %t113 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t117 -} - -define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1472, 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 %range2596, label %inrange2597 -range2596: - call void @finch_panic_index(ptr @.str.1473, i64 715, i64 %t4, i64 %t6) - unreachable -inrange2597: - %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 %range2598, label %inrange2599 -range2598: - call void @finch_panic_index(ptr @.str.1474, i64 715, i64 %t14, i64 %t16) - unreachable -inrange2599: - %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) - store { ptr, i64, i64 } %t12, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t28 -} - -define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a29 = alloca i8, align 16 - %a32 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = 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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2600, label %ok2601 -panic2600: - call void @finch_panic(ptr @.str.1475, i64 719, ptr @.str.1476) - unreachable -ok2601: - %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 %panic2602, label %ok2603 -panic2602: - call void @finch_panic(ptr @.str.1478, i64 720, ptr @.str.1479) - unreachable -ok2603: - %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.1477, i64 6, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %each.cond2604 -each.cond2604: - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = load i64, ptr %a21 - %t25 = icmp slt i64 %t24, %t23 - br i1 %t25, label %each.body2605, label %each.end2607 -each.body2605: - %t26 = load ptr, ptr %a2 - %t27 = getelementptr inbounds i8, ptr %t26, i64 %t24 - %t28 = load i8, ptr %t27 - store i8 %t28, ptr %a29 - %t30 = load i8, ptr %a29 - %t31 = zext i8 %t30 to i64 - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then2608, label %endif2610 -then2608: - %t35 = load i64, ptr %a32 - %t36 = add i64 %t35, 256 - store i64 %t36, ptr %a32 - br label %endif2610 -endif2610: - %t37 = load i64, ptr %a32 - %t38 = icmp sge i64 %t37, 32 - br label %logic.from2611 -logic.from2611: - br i1 %t38, label %logic.rhs2612, label %logic.end2613 -logic.rhs2612: - %t39 = load i64, ptr %a32 - %t40 = icmp slt i64 %t39, 127 - br label %logic.rend2614 -logic.rend2614: - br label %logic.end2613 -logic.end2613: - %t41 = phi i1 [ false, %logic.from2611 ], [ %t40, %logic.rend2614 ] - br label %logic.from2615 -logic.from2615: - br i1 %t41, label %logic.rhs2616, label %logic.end2617 -logic.rhs2616: - %t42 = load i8, ptr %a29 - %t43 = icmp ne i8 %t42, 34 - br label %logic.rend2618 -logic.rend2618: - br label %logic.end2617 -logic.end2617: - %t44 = phi i1 [ false, %logic.from2615 ], [ %t43, %logic.rend2618 ] - br label %logic.from2619 -logic.from2619: - br i1 %t44, label %logic.rhs2620, label %logic.end2621 -logic.rhs2620: - %t45 = load i8, ptr %a29 - %t46 = icmp ne i8 %t45, 92 - br label %logic.rend2622 -logic.rend2622: - br label %logic.end2621 -logic.end2621: - %t47 = phi i1 [ false, %logic.from2619 ], [ %t46, %logic.rend2622 ] - br i1 %t47, label %then2623, label %else2624 -then2623: - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t49 = load i8, ptr %a29 - call void @finch_str_from_char(ptr %a50, i8 signext %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load i64, ptr %t48 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a20 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t48 - br label %endif2625 -else2624: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t57 = load i64, ptr %a32 - %t58 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t57) - store { ptr, i64, i64 } { ptr @.str.1480, i64 1, i64 0 }, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = load i64, ptr %t56 - %t65 = add i64 %t64, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t65, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t66 = load ptr, ptr %a20 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i64 %t64 - store { ptr, i64, i64 } %t63, ptr %t67 - store i64 %t65, ptr %t56 - br label %endif2625 -endif2625: - br label %each.step2606 -each.step2606: - %t68 = load i64, ptr %a21 - %t69 = add i64 %t68, 1 - store i64 %t69, ptr %a21 - br label %each.cond2604 -each.end2607: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic2626, label %ok2627 -panic2626: - call void @finch_panic(ptr @.str.1481, i64 733, ptr @.str.1482) - unreachable -ok2627: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 2 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1483, i64 34, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = add i64 %t80, 1 - call void @finch_str_from_int(ptr %a82, i64 %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t78, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t78, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1484, i64 9, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1485, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a20, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t94, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.1486, i64 4, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load i64, ptr %t73 - %t111 = add i64 %t110, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t112 = load ptr, ptr %t72 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 - store { ptr, i64, i64 } %t109, ptr %t113 - store i64 %t111, ptr %t73 - %t114 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_str(ptr %a20) - ret { ptr, i64, i64 } %t114 -} - -define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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.1487, 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.1488, i64 6, i64 0 }, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t18 = load i64, ptr %t17 - call void @finch_str_from_int(ptr %a19, i64 %t18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t16, ptr %a24 - call void @finch_str_drop(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1489, i64 9, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t31, 0 - %t33 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1490, i64 3, i64 0 }) - %t34 = insertvalue %S.gen.Val %t32, %S.ast.Type %t33, 1 - %t35 = insertvalue %S.gen.Val %t34, i1 true, 2 - call void @finch_str_drop(ptr %a6) - ret %S.gen.Val %t35 -} - -define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1491, 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.1492, 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 %panic2628, label %ok2629 -panic2628: - call void @finch_panic(ptr @.str.1493, i64 749, ptr @.str.1494) - unreachable -ok2629: - %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 %range2630, label %inrange2631 -range2630: - call void @finch_panic_index(ptr @.str.1495, i64 749, i64 %t22, i64 %t24) - unreachable -inrange2631: - %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.1496, 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.1497, i64 6, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t47 = load i64, ptr %t46 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t45, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t45, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1498, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1499, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t73, { ptr, i64, i64 } { ptr @.str.1500, i64 11, i64 0 }) - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic2632, label %ok2633 -panic2632: - call void @finch_panic(ptr @.str.1501, i64 753, ptr @.str.1502) - unreachable -ok2633: - %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 9 - store i1 true, ptr %t76 - %t77 = load ptr, ptr %a1 - %t78 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t77, { ptr, i64, i64 } %t78) - call void @finch_str_drop(ptr %a34) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1503, 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.1504, 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.1505, 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.1506, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = load { ptr, i64, i64 }, ptr %a30 - %t33 = load { ptr, i64, i64 }, ptr %a7 - %t34 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.condBr(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, { ptr, i64, i64 } %t34) - %t35 = load ptr, ptr %a1 - %t36 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.gen.label(ptr %t35, { ptr, i64, i64 } %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic2634, label %ok2635 -panic2634: - call void @finch_panic(ptr @.str.1507, i64 763, ptr @.str.1508) - unreachable -ok2635: - %t40 = getelementptr inbounds %S.gen.Gen, ptr %t38, i32 0, i32 1 - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t40 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range2636, label %inrange2637 -range2636: - call void @finch_panic_index(ptr @.str.1509, i64 763, i64 %t42, i64 %t44) - unreachable -inrange2637: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t42 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t37, { ptr, i64, i64 } %t48) - store { ptr, i64, i64 } %t49, ptr %a50 - %t51 = load ptr, ptr %a1 - %t52 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.1510, i64 33, i64 0 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1511, i64 6, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t61, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t61, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1512, i64 6, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t76, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.1513, i64 6, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.1514, i64 1, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - call void @finch.gen.emit(ptr %t51, { ptr, i64, i64 } %t98) - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t100, { ptr, i64, i64 } { ptr @.str.1515, i64 11, i64 0 }) - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic2638, label %ok2639 -panic2638: - call void @finch_panic(ptr @.str.1516, i64 766, ptr @.str.1517) - unreachable -ok2639: - %t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 9 - store i1 true, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t104, { ptr, i64, i64 } %t105) - call void @finch_str_drop(ptr %a50) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2640, label %ok2641 -panic2640: - call void @finch_panic(ptr @.str.1518, i64 781, ptr @.str.1519) - unreachable -ok2641: - %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 %panic2642, label %ok2643 -panic2642: - call void @finch_panic(ptr @.str.1520, i64 781, ptr @.str.1521) - unreachable -ok2643: - %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 %panic2644, label %ok2645 -panic2644: - call void @finch_panic(ptr @.str.1522, i64 781, ptr @.str.1523) - unreachable -ok2645: - %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 %panic2646, label %ok2647 -panic2646: - call void @finch_panic(ptr @.str.1524, i64 781, ptr @.str.1525) - unreachable -ok2647: - %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 %panic2648, label %ok2649 -panic2648: - call void @finch_panic(ptr @.str.1526, i64 781, ptr @.str.1527) - unreachable -ok2649: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 36 - %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 %panic2650, label %ok2651 -panic2650: - call void @finch_panic(ptr @.str.1528, i64 782, ptr @.str.1529) - unreachable -ok2651: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 36 - 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 %panic2652, label %ok2653 -panic2652: - call void @finch_panic(ptr @.str.1530, i64 784, ptr @.str.1531) - unreachable -ok2653: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 4 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a37 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic2654, label %ok2655 -panic2654: - call void @finch_panic(ptr @.str.1532, i64 785, ptr @.str.1533) - unreachable -ok2655: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 5 - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch.copy.arr_str(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } %t53, ptr %t50 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.drop.arr_str(ptr %a55) - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic2656, label %ok2657 -panic2656: - call void @finch_panic(ptr @.str.1534, i64 786, ptr @.str.1535) - unreachable -ok2657: - %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 6 - store i64 0, ptr %t58 - %t59 = load ptr, ptr %a1 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic2658, label %ok2659 -panic2658: - call void @finch_panic(ptr @.str.1536, i64 787, ptr @.str.1537) - unreachable -ok2659: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 9 - store i1 false, ptr %t61 - %t62 = load %S.gen.Saved, ptr %a33 - call void @finch.drop.arr_str(ptr %a37) - ret %S.gen.Saved %t62 -} - -define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) { -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Saved %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2660, label %ok2661 -panic2660: - call void @finch_panic(ptr @.str.1538, i64 792, ptr @.str.1539) - unreachable -ok2661: - %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.1540, 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 %panic2662, label %ok2663 -panic2662: - call void @finch_panic(ptr @.str.1541, i64 792, ptr @.str.1542) - unreachable -ok2663: - %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.1543, 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) - store { ptr, i64, i64 } %t12, ptr %a23 - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.1544, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic2664, label %ok2665 -panic2664: - call void @finch_panic(ptr @.str.1545, i64 792, ptr @.str.1546) - unreachable -ok2665: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 4 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1547, i64 1, i64 0 }, ptr %a35 - call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) - %t37 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t30, ptr %a39 - store { ptr, i64, i64 } %t37, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t30, ptr %a41 - call void @finch_str_drop(ptr %a41) - store { ptr, i64, i64 } %t37, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.1548, i64 3, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %t7 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t6, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t6 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 - store { ptr, i64, i64 } %t48, ptr %t52 - store i64 %t50, ptr %t7 - %t53 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic2666, label %ok2667 -panic2666: - call void @finch_panic(ptr @.str.1549, i64 793, ptr @.str.1550) - unreachable -ok2667: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 4 - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch.copy.arr_str(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - %t61 = load { ptr, i64, i64 }, ptr %t57 - store { ptr, i64, i64 } %t60, ptr %t57 - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch.drop.arr_str(ptr %a62) - %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2668, label %ok2669 -panic2668: - call void @finch_panic(ptr @.str.1551, i64 794, ptr @.str.1552) - unreachable -ok2669: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 5 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch.copy.arr_str(ptr %a69, ptr %a68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - %t71 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t70, ptr %t67 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch.drop.arr_str(ptr %a72) - %t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 - %t74 = load i64, ptr %t73 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2670, label %ok2671 -panic2670: - call void @finch_panic(ptr @.str.1553, i64 795, ptr @.str.1554) - unreachable -ok2671: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 6 - store i64 %t74, ptr %t77 - %t78 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3 - %t79 = load i1, ptr %t78 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic2672, label %ok2673 -panic2672: - call void @finch_panic(ptr @.str.1555, i64 796, ptr @.str.1556) - unreachable -ok2673: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 9 - store i1 %t79, ptr %t82 - %t83 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4 - %t84 = load i64, ptr %t83 - %t85 = load ptr, ptr %a1 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic2674, label %ok2675 -panic2674: - call void @finch_panic(ptr @.str.1557, i64 797, ptr @.str.1558) - unreachable -ok2675: - %t87 = getelementptr inbounds %S.gen.Gen, ptr %t85, i32 0, i32 36 - store i64 %t84, ptr %t87 - 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - 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.1559, 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.1560, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1561, 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.1562, 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.1563, 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.1564, 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.1565, 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.1566, 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.1567, i64 2, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a44 - %t47 = load { ptr, i64, i64 }, ptr %a13 - %t48 = load { ptr, i64, i64 }, ptr %a16 - call void @finch.gen.condBr(ptr %t45, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t47, { ptr, i64, i64 } %t48) - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.label(ptr %t49, { ptr, i64, i64 } %t50) - %t51 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %t55 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t68 = call ptr @finch_alloc(i64 %t67) - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 0 - store { ptr, i64, i64 } %t54, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 1 - store { ptr, i64, i64 } %t58, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 2 - store { ptr, i64, i64 } %t62, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 3 - store { ptr, i64, i64 } %t66, ptr %t72 - %t73 = insertvalue { ptr, i64, i64 } undef, ptr %t68, 0 - %t74 = insertvalue { ptr, i64, i64 } %t73, i64 4, 1 - %t75 = insertvalue { ptr, i64, i64 } %t74, i64 4, 2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a16) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t75 -} - -define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2676, label %inrange2677 -range2676: - call void @finch_panic_index(ptr @.str.1569, i64 817, i64 0, i64 %t5) - unreachable -inrange2677: - %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.1568, 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.1571, 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.1572, i64 3, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t23, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a2 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 0, %t27 - br i1 %t28, label %range2678, label %inrange2679 -range2678: - call void @finch_panic_index(ptr @.str.1573, i64 818, i64 0, i64 %t27) - unreachable -inrange2679: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 - %t31 = load { ptr, i64, i64 }, ptr %t30 - call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1570, i64 3, i64 0 }, { ptr, i64, i64 } %t24, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t24, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a2 - %t35 = extractvalue { ptr, i64, i64 } %t34, 1 - %t36 = icmp uge i64 1, %t35 - br i1 %t36, label %range2680, label %inrange2681 -range2680: - call void @finch_panic_index(ptr @.str.1574, i64 819, i64 1, i64 %t35) - unreachable -inrange2681: - %t37 = extractvalue { ptr, i64, i64 } %t34, 0 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 1 - %t39 = load { ptr, i64, i64 }, ptr %t38 - call void @finch.gen.br(ptr %t33, { ptr, i64, i64 } %t39) - %t40 = load ptr, ptr %a1 - %t41 = load { ptr, i64, i64 }, ptr %a2 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 2, %t42 - br i1 %t43, label %range2682, label %inrange2683 -range2682: - call void @finch_panic_index(ptr @.str.1575, i64 820, i64 2, i64 %t42) - unreachable -inrange2683: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 2 - %t46 = load { ptr, i64, i64 }, ptr %t45 - call void @finch.gen.label(ptr %t40, { ptr, i64, i64 } %t46) - call void @finch_str_drop(ptr %a11) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1576, 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 %then2684, label %else2685 -then2684: - %t11 = load ptr, ptr %a1 - %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1577, 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.1578, i64 6, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t27, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.1579, i64 1, i64 0 }, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t27, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif2686 -else2685: - %t34 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1580, i64 5, i64 0 }, ptr %a37 - %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) - %t39 = icmp ne i32 %t38, 0 - br label %logic.from2687 -logic.from2687: - br i1 %t39, label %logic.end2689, label %logic.rhs2688 -logic.rhs2688: - %t40 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1581, 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.rend2690 -logic.rend2690: - br label %logic.end2689 -logic.end2689: - %t46 = phi i1 [ true, %logic.from2687 ], [ %t45, %logic.rend2690 ] - br label %logic.from2691 -logic.from2691: - br i1 %t46, label %logic.end2693, label %logic.rhs2692 -logic.rhs2692: - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1582, i64 6, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from2694 -logic.from2694: - br i1 %t52, label %logic.rhs2695, label %logic.end2696 -logic.rhs2695: - %t53 = load ptr, ptr %a1 - %t54 = load %S.ast.Type, ptr %a4 - %t55 = call i1 @finch.gen.owning(ptr %t53, %S.ast.Type %t54) - br label %logic.rend2697 -logic.rend2697: - br label %logic.end2696 -logic.end2696: - %t56 = phi i1 [ false, %logic.from2694 ], [ %t55, %logic.rend2697 ] - br label %logic.rend2698 -logic.rend2698: - br label %logic.end2693 -logic.end2693: - %t57 = phi i1 [ true, %logic.from2691 ], [ %t56, %logic.rend2698 ] - br i1 %t57, label %then2699, label %else2700 -then2699: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1583, i64 10, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1584, i64 5, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1585, i64 6, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t82, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1586, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.emit(ptr %t58, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif2701 -else2700: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a4 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - %t99 = load ptr, ptr %a1 - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Type, ptr %a4 - %t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101) - %t103 = load { ptr, i64, i64 }, ptr %a3 - %t104 = call { ptr, i64, i64 } @finch.gen.load(ptr %t99, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a2 - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t98, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2701 -endif2701: - br label %endif2686 -endif2686: - ret void -} - -define internal void @finch.drop.S_gen_Saved(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - ret void -} - -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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.StructDef, align 16 - %a365 = alloca %S.gen.StructDef, align 16 - %a367 = alloca %S.gen.StructDef, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca i64, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1587, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2702, label %ok2703 -panic2702: - call void @finch_panic(ptr @.str.1588, i64 835, ptr @.str.1589) - unreachable -ok2703: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2704, label %endif2706 -then2704: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2706: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2707, label %ok2708 -panic2707: - call void @finch_panic(ptr @.str.1590, i64 838, ptr @.str.1591) - unreachable -ok2708: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1592, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2709, label %else2710 -then2709: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2712, label %inrange2713 -range2712: - call void @finch_panic_index(ptr @.str.1593, i64 841, i64 0, i64 %t41) - unreachable -inrange2713: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load ptr, ptr %a1 - %t52 = load %S.ast.Type, ptr %a49 - %t53 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t51, %S.ast.Type %t52) - store { ptr, i64, i64 } { ptr @.str.1594, i64 55, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.1595, i64 1, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.emit(ptr %t50, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Type, ptr %a49 - %t67 = call i1 @finch.gen.owning(ptr %t65, %S.ast.Type %t66) - br i1 %t67, label %then2714, label %endif2716 -then2714: - %t68 = load ptr, ptr %a1 - %t69 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.1596, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1597, i64 4, i64 0 }) - store { ptr, i64, i64 } %t69, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t71, { ptr, i64, i64 } { ptr @.str.1598, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1599, i64 4, i64 0 }) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t75, { ptr, i64, i64 } { ptr @.str.1601, i64 64, i64 0 }) - %t77 = call { ptr, i64, i64 } @finch.gen.load(ptr %t74, { ptr, i64, i64 } { ptr @.str.1600, i64 3, i64 0 }, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - store { ptr, i64, i64 } %t77, ptr %a79 - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a79 - %t82 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t80, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Type, ptr %a49 - %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) - store { ptr, i64, i64 } { ptr @.str.1602, i64 23, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.1603, i64 6, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1604, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a83 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 3, %t110 - br i1 %t111, label %range2717, label %inrange2718 -range2717: - call void @finch_panic_index(ptr @.str.1605, i64 848, i64 3, i64 %t110) - unreachable -inrange2718: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 3 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t108, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t108, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t84, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Type, ptr %a49 - %t126 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t124, %S.ast.Type %t125) - store { ptr, i64, i64 } { ptr @.str.1606, i64 23, i64 0 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1607, i64 6, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t136, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t136, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.1608, i64 6, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - store { ptr, i64, i64 } %t142, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a143 - %t148 = load { ptr, i64, i64 }, ptr %a83 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 3, %t149 - br i1 %t150, label %range2719, label %inrange2720 -range2719: - call void @finch_panic_index(ptr @.str.1609, i64 849, i64 3, i64 %t149) - unreachable -inrange2720: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 3 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t147, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t147, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = call { ptr, i64, i64 } @finch.gen.op(ptr %t123, { ptr, i64, i64 } %t158) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - store { ptr, i64, i64 } %t159, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a122 - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load %S.ast.Type, ptr %a49 - call void @finch.gen.copyAt(ptr %t162, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t164, %S.ast.Type %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.loopEnd(ptr %t166, { ptr, i64, i64 } %t167) - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a122) - call void @finch.drop.arr_str(ptr %a83) - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a73) - call void @finch_str_drop(ptr %a70) - br label %endif2716 -endif2716: - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2711 -else2710: - %t168 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.1610, i64 3, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then2721, label %else2722 -then2721: - %t174 = load ptr, ptr %a1 - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Type, ptr %a2 - %t177 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t175, %S.ast.Type %t176) - store { ptr, i64, i64 } { ptr @.str.1611, i64 55, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t177, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1612, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 0, %t192 - br i1 %t193, label %range2724, label %inrange2725 -range2724: - call void @finch_panic_index(ptr @.str.1613, i64 855, i64 0, i64 %t192) - unreachable -inrange2725: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Type, ptr %t194, i64 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = call i1 @finch.gen.owning(ptr %t189, %S.ast.Type %t196) - br label %logic.from2726 -logic.from2726: - br i1 %t197, label %logic.end2728, label %logic.rhs2727 -logic.rhs2727: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t200 = load { ptr, i64, i64 }, ptr %t199 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 1, %t201 - br i1 %t202, label %range2729, label %inrange2730 -range2729: - call void @finch_panic_index(ptr @.str.1614, i64 855, i64 1, i64 %t201) - unreachable -inrange2730: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.ast.Type, ptr %t203, i64 1 - %t205 = load %S.ast.Type, ptr %t204 - %t206 = call i1 @finch.gen.owning(ptr %t198, %S.ast.Type %t205) - br label %logic.rend2731 -logic.rend2731: - br label %logic.end2728 -logic.end2728: - %t207 = phi i1 [ true, %logic.from2726 ], [ %t206, %logic.rend2731 ] - br i1 %t207, label %then2732, label %endif2734 -then2732: - %t208 = load ptr, ptr %a1 - %t209 = load ptr, ptr %a1 - %t210 = load ptr, ptr %a1 - %t211 = load %S.ast.Type, ptr %a2 - %t212 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t210, %S.ast.Type %t211) - store { ptr, i64, i64 } { ptr @.str.1616, i64 23, i64 0 }, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.1617, i64 24, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t209, { ptr, i64, i64 } %t222) - store { ptr, i64, i64 } %t222, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = call { ptr, i64, i64 } @finch.gen.load(ptr %t208, { ptr, i64, i64 } { ptr @.str.1615, i64 3, i64 0 }, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t225, ptr %a227 - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a227 - %t230 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t228, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a2 - %t234 = load { ptr, i64, i64 }, ptr %a231 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 3, %t235 - br i1 %t236, label %range2735, label %inrange2736 -range2735: - call void @finch_panic_index(ptr @.str.1619, i64 859, i64 3, i64 %t235) - unreachable -inrange2736: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 3 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } { ptr @.str.1618, i64 4, i64 0 }, %S.ast.Type %t233, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t240, ptr %a241 - %t242 = load ptr, ptr %a1 - %t243 = load %S.ast.Type, ptr %a2 - %t244 = load { ptr, i64, i64 }, ptr %a231 - %t245 = extractvalue { ptr, i64, i64 } %t244, 1 - %t246 = icmp uge i64 3, %t245 - br i1 %t246, label %range2737, label %inrange2738 -range2737: - call void @finch_panic_index(ptr @.str.1621, i64 860, i64 3, i64 %t245) - unreachable -inrange2738: - %t247 = extractvalue { ptr, i64, i64 } %t244, 0 - %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i64 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - %t250 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t242, { ptr, i64, i64 } { ptr @.str.1620, i64 4, i64 0 }, %S.ast.Type %t243, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t252, { ptr, i64, i64 } { ptr @.str.1622, i64 10, i64 0 }) - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t255, { ptr, i64, i64 } { ptr @.str.1623, i64 10, i64 0 }) - store { ptr, i64, i64 } %t256, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a1 - %t260 = load ptr, ptr %a1 - %t261 = load ptr, ptr %a1 - %t262 = load ptr, ptr %a1 - %t263 = load %S.ast.Type, ptr %a2 - %t264 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t262, %S.ast.Type %t263) - store { ptr, i64, i64 } { ptr @.str.1626, i64 23, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_drop(ptr %a268) - %t269 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t269, ptr %a271 - store { ptr, i64, i64 } { ptr @.str.1627, i64 6, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = load { ptr, i64, i64 }, ptr %a241 - store { ptr, i64, i64 } %t274, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t274, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.1628, i64 14, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t261, { ptr, i64, i64 } %t285) - store { ptr, i64, i64 } %t285, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = call { ptr, i64, i64 } @finch.gen.load(ptr %t260, { ptr, i64, i64 } { ptr @.str.1625, i64 3, i64 0 }, { ptr, i64, i64 } %t286) - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_drop(ptr %a289) - store { ptr, i64, i64 } { ptr @.str.1624, i64 12, i64 0 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1629, i64 3, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t259, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a254 - %t303 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.condBr(ptr %t258, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a254 - call void @finch.gen.label(ptr %t305, { ptr, i64, i64 } %t306) - %t307 = load ptr, ptr %a1 - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a251 - %t310 = load %S.ast.Type, ptr %a2 - %t311 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310, i64 1) - %t312 = load ptr, ptr %a1 - %t313 = load { ptr, i64, i64 }, ptr %a241 - %t314 = load %S.ast.Type, ptr %a2 - %t315 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t312, { ptr, i64, i64 } %t313, %S.ast.Type %t314, i64 1) - %t316 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %t316 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 0, %t318 - br i1 %t319, label %range2739, label %inrange2740 -range2739: - call void @finch_panic_index(ptr @.str.1630, i64 865, i64 0, i64 %t318) - unreachable -inrange2740: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds %S.ast.Type, ptr %t320, i64 0 - %t322 = load %S.ast.Type, ptr %t321 - call void @finch.gen.copyAt(ptr %t307, { ptr, i64, i64 } %t311, { ptr, i64, i64 } %t315, %S.ast.Type %t322) - store { ptr, i64, i64 } %t311, ptr %a323 - call void @finch_str_drop(ptr %a323) - store { ptr, i64, i64 } %t315, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load ptr, ptr %a1 - %t326 = load ptr, ptr %a1 - %t327 = load { ptr, i64, i64 }, ptr %a251 - %t328 = load %S.ast.Type, ptr %a2 - %t329 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t326, { ptr, i64, i64 } %t327, %S.ast.Type %t328, i64 2) - %t330 = load ptr, ptr %a1 - %t331 = load { ptr, i64, i64 }, ptr %a241 - %t332 = load %S.ast.Type, ptr %a2 - %t333 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t330, { ptr, i64, i64 } %t331, %S.ast.Type %t332, i64 2) - %t334 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t335 = load { ptr, i64, i64 }, ptr %t334 - %t336 = extractvalue { ptr, i64, i64 } %t335, 1 - %t337 = icmp uge i64 1, %t336 - br i1 %t337, label %range2741, label %inrange2742 -range2741: - call void @finch_panic_index(ptr @.str.1631, i64 866, i64 1, i64 %t336) - unreachable -inrange2742: - %t338 = extractvalue { ptr, i64, i64 } %t335, 0 - %t339 = getelementptr inbounds %S.ast.Type, ptr %t338, i64 1 - %t340 = load %S.ast.Type, ptr %t339 - call void @finch.gen.copyAt(ptr %t325, { ptr, i64, i64 } %t329, { ptr, i64, i64 } %t333, %S.ast.Type %t340) - store { ptr, i64, i64 } %t329, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t333, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - %t344 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.br(ptr %t343, { ptr, i64, i64 } %t344) - %t345 = load ptr, ptr %a1 - %t346 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.label(ptr %t345, { ptr, i64, i64 } %t346) - %t347 = load ptr, ptr %a1 - %t348 = load { ptr, i64, i64 }, ptr %a231 - call void @finch.gen.loopEnd(ptr %t347, { ptr, i64, i64 } %t348) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a254) - call void @finch_str_drop(ptr %a251) - call void @finch_str_drop(ptr %a241) - call void @finch.drop.arr_str(ptr %a231) - call void @finch_str_drop(ptr %a227) - br label %endif2734 -endif2734: - br label %endif2723 -else2722: - %t349 = load ptr, ptr %a1 - %t350 = icmp eq ptr %t349, null - br i1 %t350, label %panic2743, label %ok2744 -panic2743: - call void @finch_panic(ptr @.str.1632, i64 872, ptr @.str.1633) - unreachable -ok2744: - %t351 = getelementptr inbounds %S.gen.Gen, ptr %t349, i32 0, i32 16 - %t352 = load ptr, ptr %a1 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = load { ptr, i64, i64 }, ptr %t353 - %t355 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t356 = load { ptr, i64, i64 }, ptr %t355 - %t357 = call i64 @finch.gen.findStruct(ptr %t352, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356) - %t358 = load { ptr, i64, i64 }, ptr %t351 - %t359 = extractvalue { ptr, i64, i64 } %t358, 1 - %t360 = icmp uge i64 %t357, %t359 - br i1 %t360, label %range2745, label %inrange2746 -range2745: - call void @finch_panic_index(ptr @.str.1634, i64 872, i64 %t357, i64 %t359) - unreachable -inrange2746: - %t361 = extractvalue { ptr, i64, i64 } %t358, 0 - %t362 = getelementptr inbounds %S.gen.StructDef, ptr %t361, i64 %t357 - %t363 = load %S.gen.StructDef, ptr %t362 - store %S.gen.StructDef %t363, ptr %a364 - call void @finch.copy.S_gen_StructDef(ptr %a365, ptr %a364) - %t366 = load %S.gen.StructDef, ptr %a365 - store %S.gen.StructDef %t366, ptr %a367 - %t368 = load ptr, ptr %a1 - %t369 = load %S.ast.Type, ptr %a2 - %t370 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t368, %S.ast.Type %t369) - store { ptr, i64, i64 } %t370, ptr %a371 - %t372 = load ptr, ptr %a1 - %t373 = load { ptr, i64, i64 }, ptr %a371 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } { ptr @.str.1635, i64 4, i64 0 }) - call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } %t373, { ptr, i64, i64 } %t376, { ptr, i64, i64 } { ptr @.str.1636, i64 4, i64 0 }) - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t380 = load i64, ptr %t379 - store i64 0, ptr %a381 - br label %for.cond2747 -for.cond2747: - %t382 = load i64, ptr %a381 - %t383 = icmp slt i64 %t382, %t380 - br i1 %t383, label %for.body2748, label %for.end2750 -for.body2748: - %t384 = load ptr, ptr %a1 - %t385 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t386 = load i64, ptr %a381 - %t387 = load { ptr, i64, i64 }, ptr %t385 - %t388 = extractvalue { ptr, i64, i64 } %t387, 1 - %t389 = icmp uge i64 %t386, %t388 - br i1 %t389, label %range2751, label %inrange2752 -range2751: - call void @finch_panic_index(ptr @.str.1637, i64 876, i64 %t386, i64 %t388) - unreachable -inrange2752: - %t390 = extractvalue { ptr, i64, i64 } %t387, 0 - %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i64 %t386 - %t392 = load %S.ast.Type, ptr %t391 - %t393 = call i1 @finch.gen.owning(ptr %t384, %S.ast.Type %t392) - br i1 %t393, label %then2753, label %endif2755 -then2753: - %t394 = load ptr, ptr %a1 - %t395 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1638, i64 23, i64 0 }, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.1639, i64 23, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t406 = load i64, ptr %a381 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range2756, label %inrange2757 -range2756: - call void @finch_panic_index(ptr @.str.1640, i64 877, i64 %t406, i64 %t408) - unreachable -inrange2757: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds i64, ptr %t410, i64 %t406 - %t412 = load i64, ptr %t411 - call void @finch_str_from_int(ptr %a413, i64 %t412) - %t414 = load { ptr, i64, i64 }, ptr %a413 - store { ptr, i64, i64 } %t404, ptr %a416 - store { ptr, i64, i64 } %t414, ptr %a417 - call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) - store { ptr, i64, i64 } %t404, ptr %a418 - call void @finch_str_drop(ptr %a418) - store { ptr, i64, i64 } %t414, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a415 - %t421 = call { ptr, i64, i64 } @finch.gen.op(ptr %t394, { ptr, i64, i64 } %t420) - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - store { ptr, i64, i64 } %t421, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1641, i64 23, i64 0 }, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.1642, i64 23, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t436 = load i64, ptr %a381 - %t437 = load { ptr, i64, i64 }, ptr %t435 - %t438 = extractvalue { ptr, i64, i64 } %t437, 1 - %t439 = icmp uge i64 %t436, %t438 - br i1 %t439, label %range2758, label %inrange2759 -range2758: - call void @finch_panic_index(ptr @.str.1643, i64 878, i64 %t436, i64 %t438) - unreachable -inrange2759: - %t440 = extractvalue { ptr, i64, i64 } %t437, 0 - %t441 = getelementptr inbounds i64, ptr %t440, i64 %t436 - %t442 = load i64, ptr %t441 - call void @finch_str_from_int(ptr %a443, i64 %t442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a446 - store { ptr, i64, i64 } %t444, ptr %a447 - call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447) - store { ptr, i64, i64 } %t434, ptr %a448 - call void @finch_str_drop(ptr %a448) - store { ptr, i64, i64 } %t444, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a445 - %t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t424, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t451, ptr %a453 - %t454 = load ptr, ptr %a1 - %t455 = load { ptr, i64, i64 }, ptr %a423 - %t456 = load { ptr, i64, i64 }, ptr %a453 - %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t458 = load i64, ptr %a381 - %t459 = load { ptr, i64, i64 }, ptr %t457 - %t460 = extractvalue { ptr, i64, i64 } %t459, 1 - %t461 = icmp uge i64 %t458, %t460 - br i1 %t461, label %range2760, label %inrange2761 -range2760: - call void @finch_panic_index(ptr @.str.1644, i64 879, i64 %t458, i64 %t460) - unreachable -inrange2761: - %t462 = extractvalue { ptr, i64, i64 } %t459, 0 - %t463 = getelementptr inbounds %S.ast.Type, ptr %t462, i64 %t458 - %t464 = load %S.ast.Type, ptr %t463 - call void @finch.gen.copyAt(ptr %t454, { ptr, i64, i64 } %t455, { ptr, i64, i64 } %t456, %S.ast.Type %t464) - call void @finch_str_drop(ptr %a453) - call void @finch_str_drop(ptr %a423) - br label %endif2755 -endif2755: - br label %for.step2749 -for.step2749: - %t465 = load i64, ptr %a381 - %t466 = add i64 %t465, 1 - store i64 %t466, ptr %a381 - br label %for.cond2747 -for.end2750: - call void @finch_str_drop(ptr %a371) - call void @finch.drop.S_gen_StructDef(ptr %a367) - br label %endif2723 -endif2723: - br label %endif2711 -endif2711: - %t467 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t467, { ptr, i64, i64 } { ptr @.str.1645, i64 8, i64 0 }) - %t468 = load ptr, ptr %a1 - %t469 = load %S.gen.Saved, ptr %a32 - %t470 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1646, i64 21, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.1647, i64 20, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - call void @finch.gen.endHelper(ptr %t468, %S.gen.Saved %t469, { ptr, i64, i64 } %t479) - store { ptr, i64, i64 } %t479, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t481 -} - -define internal void @finch.drop.S_gen_Val(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.copyValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -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 %S.gen.Val, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %then2762, label %endif2764 -then2762: - %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 -endif2764: - %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 %S.gen.Val %t22, ptr %a24 - call void @finch.drop.S_gen_Val(ptr %a24) - store { ptr, i64, i64 } %t23, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t27, %S.ast.Type %t28) - %t30 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t26, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a32 - %t35 = load { ptr, i64, i64 }, ptr %a25 - %t36 = load %S.ast.Type, ptr %a3 - call void @finch.gen.copyAt(ptr %t33, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t35, %S.ast.Type %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Type, ptr %a3 - %t40 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t38, %S.ast.Type %t39) - %t41 = load { ptr, i64, i64 }, ptr %a32 - %t42 = call { ptr, i64, i64 } @finch.gen.load(ptr %t37, { ptr, i64, i64 } %t40, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_drop(ptr %a43) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.gen.dropAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - %t7 = xor i1 %t6, true - br i1 %t7, label %then2765, label %endif2767 -then2765: - ret void -endif2767: - %t8 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t9 = load { ptr, i64, i64 }, ptr %t8 - store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1648, 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 %then2768, label %else2769 -then2768: - %t14 = load ptr, ptr %a1 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1649, i64 30, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1650, i64 1, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.emit(ptr %t14, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2770 -else2769: - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.dropFn(ptr %t27, %S.ast.Type %t28) - store { ptr, i64, i64 } { ptr @.str.1651, i64 10, i64 0 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1652, i64 5, i64 0 }, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t39, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1653, i64 1, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.emit(ptr %t26, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif2770 -endif2770: - ret void -} - -define internal void @finch.gen.dropValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a16 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.gen.Val, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2771, label %endif2773 -then2771: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %t13 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t12, 0 - %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - %t18 = insertvalue %S.gen.Val %t13, %S.ast.Type %t17, 1 - %t19 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t8, %S.gen.Val %t18) - store %S.gen.Val %t18, ptr %a20 - call void @finch.drop.S_gen_Val(ptr %a20) - %t21 = load %S.ast.Type, ptr %a3 - call void @finch.gen.dropAt(ptr %t7, { ptr, i64, i64 } %t19, %S.ast.Type %t21) - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_drop(ptr %a22) - br label %endif2773 -endif2773: - ret void -} - -define internal void @finch.gen.release(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2774 -logic.from2774: - br i1 %t4, label %logic.rhs2775, label %logic.end2776 -logic.rhs2775: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2777 -logic.rend2777: - br label %logic.end2776 -logic.end2776: - %t9 = phi i1 [ false, %logic.from2774 ], [ %t8, %logic.rend2777 ] - br label %logic.from2778 -logic.from2778: - br i1 %t9, label %logic.rhs2779, label %logic.end2780 -logic.rhs2779: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2781 -logic.rend2781: - br label %logic.end2780 -logic.end2780: - %t14 = phi i1 [ false, %logic.from2778 ], [ %t13, %logic.rend2781 ] - br label %logic.from2782 -logic.from2782: - br i1 %t14, label %logic.rhs2783, label %logic.end2784 -logic.rhs2783: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2785 -logic.rend2785: - br label %logic.end2784 -logic.end2784: - %t19 = phi i1 [ false, %logic.from2782 ], [ %t18, %logic.rend2785 ] - br i1 %t19, label %then2786, label %endif2788 -then2786: - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t24 = load %S.ast.Type, ptr %t23 - call void @finch.gen.dropValue(ptr %t20, { ptr, i64, i64 } %t22, %S.ast.Type %t24) - br label %endif2788 -endif2788: - ret void -} - -define internal i1 @finch.gen.isConstant({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1655, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_starts(ptr %a3, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - %t8 = xor i1 %t7, true - ret i1 %t8 -} - -define internal { ptr, i64, i64 } @finch.gen.dropFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.gen.StructDef, align 16 - %a249 = alloca %S.gen.StructDef, align 16 - %a251 = alloca %S.gen.StructDef, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca i64, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1656, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2789, label %ok2790 -panic2789: - call void @finch_panic(ptr @.str.1657, i64 930, ptr @.str.1658) - unreachable -ok2790: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2791, label %endif2793 -then2791: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2793: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2794, label %ok2795 -panic2794: - call void @finch_panic(ptr @.str.1659, i64 933, ptr @.str.1660) - unreachable -ok2795: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1661, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2796, label %else2797 -then2796: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2799, label %inrange2800 -range2799: - call void @finch_panic_index(ptr @.str.1662, i64 936, i64 0, i64 %t41) - unreachable -inrange2800: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load %S.ast.Type, ptr %a49 - %t52 = call i1 @finch.gen.owning(ptr %t50, %S.ast.Type %t51) - br i1 %t52, label %then2801, label %endif2803 -then2801: - %t53 = load ptr, ptr %a1 - %t54 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1663, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1664, i64 2, i64 0 }) - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } { ptr @.str.1666, i64 62, i64 0 }) - %t59 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.1665, i64 3, i64 0 }, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t62, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load ptr, ptr %a1 - %t68 = load %S.ast.Type, ptr %a49 - %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) - store { ptr, i64, i64 } { ptr @.str.1667, i64 23, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1668, i64 6, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1669, i64 6, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load { ptr, i64, i64 }, ptr %a65 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 3, %t92 - br i1 %t93, label %range2804, label %inrange2805 -range2804: - call void @finch_panic_index(ptr @.str.1670, i64 941, i64 3, i64 %t92) - unreachable -inrange2805: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t66, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a104 - %t107 = load %S.ast.Type, ptr %a49 - call void @finch.gen.dropAt(ptr %t105, { ptr, i64, i64 } %t106, %S.ast.Type %t107) - %t108 = load ptr, ptr %a1 - %t109 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.loopEnd(ptr %t108, { ptr, i64, i64 } %t109) - call void @finch_str_drop(ptr %a104) - call void @finch.drop.arr_str(ptr %a65) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a55) - br label %endif2803 -endif2803: - %t110 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t110, { ptr, i64, i64 } { ptr @.str.1671, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2798 -else2797: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1672, i64 3, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2806, label %else2807 -then2806: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 0, %t119 - br i1 %t120, label %range2809, label %inrange2810 -range2809: - call void @finch_panic_index(ptr @.str.1673, i64 947, i64 0, i64 %t119) - unreachable -inrange2810: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 0 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - store %S.ast.Type %t126, ptr %a127 - %t128 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 1, %t130 - br i1 %t131, label %range2811, label %inrange2812 -range2811: - call void @finch_panic_index(ptr @.str.1674, i64 948, i64 1, i64 %t130) - unreachable -inrange2812: - %t132 = extractvalue { ptr, i64, i64 } %t129, 0 - %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i64 1 - %t134 = load %S.ast.Type, ptr %t133 - store %S.ast.Type %t134, ptr %a135 - call void @finch.copy.S_ast_Type(ptr %a136, ptr %a135) - %t137 = load %S.ast.Type, ptr %a136 - store %S.ast.Type %t137, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Type, ptr %a127 - %t141 = call i1 @finch.gen.owning(ptr %t139, %S.ast.Type %t140) - br label %logic.from2813 -logic.from2813: - br i1 %t141, label %logic.end2815, label %logic.rhs2814 -logic.rhs2814: - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Type, ptr %a138 - %t144 = call i1 @finch.gen.owning(ptr %t142, %S.ast.Type %t143) - br label %logic.rend2816 -logic.rend2816: - br label %logic.end2815 -logic.end2815: - %t145 = phi i1 [ true, %logic.from2813 ], [ %t144, %logic.rend2816 ] - br i1 %t145, label %then2817, label %endif2819 -then2817: - %t146 = load ptr, ptr %a1 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load %S.ast.Type, ptr %a2 - %t150 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t148, %S.ast.Type %t149) - store { ptr, i64, i64 } { ptr @.str.1676, i64 23, i64 0 }, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t155, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1677, i64 22, i64 0 }, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t155, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a156 - %t161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t160) - store { ptr, i64, i64 } %t160, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t146, { ptr, i64, i64 } { ptr @.str.1675, i64 3, i64 0 }, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_drop(ptr %a164) - store { ptr, i64, i64 } %t163, ptr %a165 - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a165 - %t168 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t166, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load %S.ast.Type, ptr %a2 - %t172 = load { ptr, i64, i64 }, ptr %a169 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 3, %t173 - br i1 %t174, label %range2820, label %inrange2821 -range2820: - call void @finch_panic_index(ptr @.str.1679, i64 952, i64 3, i64 %t173) - unreachable -inrange2821: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i64 3 - %t177 = load { ptr, i64, i64 }, ptr %t176 - %t178 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t170, { ptr, i64, i64 } { ptr @.str.1678, i64 2, i64 0 }, %S.ast.Type %t171, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1680, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1681, i64 10, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - %t186 = load ptr, ptr %a1 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a179 - %t191 = load %S.ast.Type, ptr %a2 - %t192 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t189, { ptr, i64, i64 } %t190, %S.ast.Type %t191, i64 0) - %t193 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } { ptr @.str.1683, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - store { ptr, i64, i64 } { ptr @.str.1682, i64 12, i64 0 }, ptr %a196 - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1684, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t204, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a182 - %t208 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.condBr(ptr %t186, { ptr, i64, i64 } %t205, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t210, { ptr, i64, i64 } %t211) - %t212 = load ptr, ptr %a1 - %t213 = load ptr, ptr %a1 - %t214 = load { ptr, i64, i64 }, ptr %a179 - %t215 = load %S.ast.Type, ptr %a2 - %t216 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t213, { ptr, i64, i64 } %t214, %S.ast.Type %t215, i64 1) - %t217 = load %S.ast.Type, ptr %a127 - call void @finch.gen.dropAt(ptr %t212, { ptr, i64, i64 } %t216, %S.ast.Type %t217) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load ptr, ptr %a1 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a179 - %t222 = load %S.ast.Type, ptr %a2 - %t223 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t220, { ptr, i64, i64 } %t221, %S.ast.Type %t222, i64 2) - %t224 = load %S.ast.Type, ptr %a138 - call void @finch.gen.dropAt(ptr %t219, { ptr, i64, i64 } %t223, %S.ast.Type %t224) - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t226, { ptr, i64, i64 } %t227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t228, { ptr, i64, i64 } %t229) - %t230 = load ptr, ptr %a1 - %t231 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.loopEnd(ptr %t230, { ptr, i64, i64 } %t231) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.arr_str(ptr %a169) - call void @finch_str_drop(ptr %a165) - br label %endif2819 -endif2819: - %t232 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.1685, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a138) - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif2808 -else2807: - %t233 = load ptr, ptr %a1 - %t234 = icmp eq ptr %t233, null - br i1 %t234, label %panic2822, label %ok2823 -panic2822: - call void @finch_panic(ptr @.str.1686, i64 965, ptr @.str.1687) - unreachable -ok2823: - %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 16 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %t235 - %t243 = extractvalue { ptr, i64, i64 } %t242, 1 - %t244 = icmp uge i64 %t241, %t243 - br i1 %t244, label %range2824, label %inrange2825 -range2824: - call void @finch_panic_index(ptr @.str.1688, i64 965, i64 %t241, i64 %t243) - unreachable -inrange2825: - %t245 = extractvalue { ptr, i64, i64 } %t242, 0 - %t246 = getelementptr inbounds %S.gen.StructDef, ptr %t245, i64 %t241 - %t247 = load %S.gen.StructDef, ptr %t246 - store %S.gen.StructDef %t247, ptr %a248 - call void @finch.copy.S_gen_StructDef(ptr %a249, ptr %a248) - %t250 = load %S.gen.StructDef, ptr %a249 - store %S.gen.StructDef %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = load %S.ast.Type, ptr %a2 - %t254 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t252, %S.ast.Type %t253) - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i32 0, i32 1 - %t258 = load i64, ptr %t257 - store i64 0, ptr %a259 - br label %for.cond2826 -for.cond2826: - %t260 = load i64, ptr %a259 - %t261 = icmp slt i64 %t260, %t258 - br i1 %t261, label %for.body2827, label %for.end2829 -for.body2827: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t264 = load i64, ptr %a259 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range2830, label %inrange2831 -range2830: - call void @finch_panic_index(ptr @.str.1689, i64 968, i64 %t264, i64 %t266) - unreachable -inrange2831: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.ast.Type, ptr %t268, i64 %t264 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t262, %S.ast.Type %t270) - br i1 %t271, label %then2832, label %endif2834 -then2832: - %t272 = load ptr, ptr %a1 - %t273 = load ptr, ptr %a1 - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } { ptr @.str.1690, i64 23, i64 0 }, ptr %a276 - store { ptr, i64, i64 } %t274, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.1691, i64 21, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 3 - %t285 = load i64, ptr %a259 - %t286 = load { ptr, i64, i64 }, ptr %t284 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 %t285, %t287 - br i1 %t288, label %range2835, label %inrange2836 -range2835: - call void @finch_panic_index(ptr @.str.1692, i64 969, i64 %t285, i64 %t287) - unreachable -inrange2836: - %t289 = extractvalue { ptr, i64, i64 } %t286, 0 - %t290 = getelementptr inbounds i64, ptr %t289, i64 %t285 - %t291 = load i64, ptr %t290 - call void @finch_str_from_int(ptr %a292, i64 %t291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t283, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - store { ptr, i64, i64 } %t283, ptr %a297 - call void @finch_str_drop(ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a294 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t273, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t303 = load i64, ptr %a259 - %t304 = load { ptr, i64, i64 }, ptr %t302 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range2837, label %inrange2838 -range2837: - call void @finch_panic_index(ptr @.str.1693, i64 969, i64 %t303, i64 %t305) - unreachable -inrange2838: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Type, ptr %t307, i64 %t303 - %t309 = load %S.ast.Type, ptr %t308 - call void @finch.gen.dropAt(ptr %t272, { ptr, i64, i64 } %t300, %S.ast.Type %t309) - store { ptr, i64, i64 } %t300, ptr %a310 - call void @finch_str_drop(ptr %a310) - br label %endif2834 -endif2834: - br label %for.step2828 -for.step2828: - %t311 = load i64, ptr %a259 - %t312 = add i64 %t311, 1 - store i64 %t312, ptr %a259 - br label %for.cond2826 -for.end2829: - call void @finch_str_drop(ptr %a255) - call void @finch.drop.S_gen_StructDef(ptr %a251) - br label %endif2808 -endif2808: - br label %endif2798 -endif2798: - %t313 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t313, { ptr, i64, i64 } { ptr @.str.1694, i64 8, i64 0 }) - %t314 = load ptr, ptr %a1 - %t315 = load %S.gen.Saved, ptr %a32 - %t316 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1695, i64 21, i64 0 }, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.1696, i64 8, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - call void @finch.gen.endHelper(ptr %t314, %S.gen.Saved %t315, { ptr, i64, i64 } %t325) - store { ptr, i64, i64 } %t325, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t327 -} - -define internal void @finch.gen.hold(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.ast.Type, align 16 - %a33 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2839 -logic.from2839: - br i1 %t4, label %logic.rhs2840, label %logic.end2841 -logic.rhs2840: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2842 -logic.rend2842: - br label %logic.end2841 -logic.end2841: - %t9 = phi i1 [ false, %logic.from2839 ], [ %t8, %logic.rend2842 ] - br label %logic.from2843 -logic.from2843: - br i1 %t9, label %logic.rhs2844, label %logic.end2845 -logic.rhs2844: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2846 -logic.rend2846: - br label %logic.end2845 -logic.end2845: - %t14 = phi i1 [ false, %logic.from2843 ], [ %t13, %logic.rend2846 ] - br label %logic.from2847 -logic.from2847: - br i1 %t14, label %logic.rhs2848, label %logic.end2849 -logic.rhs2848: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2850 -logic.rend2850: - br label %logic.end2849 -logic.end2849: - %t19 = phi i1 [ false, %logic.from2847 ], [ %t18, %logic.rend2850 ] - br i1 %t19, label %then2851, label %endif2853 -then2851: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2854, label %ok2855 -panic2854: - call void @finch_panic(ptr @.str.1697, i64 982, ptr @.str.1698) - unreachable -ok2855: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 11 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_copy(ptr %a27, ptr %a26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %t29 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t28, 0 - %t30 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t31 = load %S.ast.Type, ptr %t30 - store %S.ast.Type %t31, ptr %a32 - call void @finch.copy.S_ast_Type(ptr %a33, ptr %a32) - %t34 = load %S.ast.Type, ptr %a33 - %t35 = insertvalue %S.gen.Pending %t29, %S.ast.Type %t34, 1 - %t36 = insertvalue %S.gen.Pending %t35, i1 false, 2 - %t37 = load i64, ptr %t23 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t38, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %t22 - %t40 = getelementptr inbounds %S.gen.Pending, ptr %t39, i64 %t37 - store %S.gen.Pending %t36, ptr %t40 - store i64 %t38, ptr %t23 - br label %endif2853 -endif2853: - ret void -} - -define internal void @finch.gen.holdAddr(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2856, label %endif2858 -then2856: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic2859, label %ok2860 -panic2859: - call void @finch_panic(ptr @.str.1699, i64 988, ptr @.str.1700) - unreachable -ok2860: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 11 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 - %t11 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t11, ptr %a12 - call void @finch_str_copy(ptr %a13, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - %t15 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t14, 0 - %t16 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = insertvalue %S.gen.Pending %t15, %S.ast.Type %t19, 1 - %t21 = insertvalue %S.gen.Pending %t20, i1 true, 2 - %t22 = load i64, ptr %t10 - %t23 = add i64 %t22, 1 - call void @finch_arr_reserve(ptr %t9, i64 %t23, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t24 = load ptr, ptr %t9 - %t25 = getelementptr inbounds %S.gen.Pending, ptr %t24, i64 %t22 - store %S.gen.Pending %t21, ptr %t25 - store i64 %t23, ptr %t10 - br label %endif2858 -endif2858: - ret void -} - -define internal void @finch.copy.S_gen_Pending(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Pending, ptr %src - store %S.gen.Pending %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 1 - call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.drop.S_gen_Pending(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.dropPending(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a8 = alloca i64, align 16 - %a24 = alloca %S.gen.Pending, align 16 - %a25 = alloca %S.gen.Pending, align 16 - %a27 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2861, label %ok2862 -panic2861: - call void @finch_panic(ptr @.str.1701, i64 994, ptr @.str.1702) - unreachable -ok2862: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - store i64 %t7, ptr %a8 - br label %while.cond2863 -while.cond2863: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body2864, label %while.end2865 -while.body2864: - %t12 = load i64, ptr %a8 - %t13 = sub i64 %t12, 1 - store i64 %t13, ptr %a8 - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic2866, label %ok2867 -panic2866: - call void @finch_panic(ptr @.str.1703, i64 997, ptr @.str.1704) - unreachable -ok2867: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 11 - %t17 = load i64, ptr %a8 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range2868, label %inrange2869 -range2868: - call void @finch_panic_index(ptr @.str.1705, i64 997, i64 %t17, i64 %t19) - unreachable -inrange2869: - %t21 = extractvalue { ptr, i64, i64 } %t18, 0 - %t22 = getelementptr inbounds %S.gen.Pending, ptr %t21, i64 %t17 - %t23 = load %S.gen.Pending, ptr %t22 - store %S.gen.Pending %t23, ptr %a24 - call void @finch.copy.S_gen_Pending(ptr %a25, ptr %a24) - %t26 = load %S.gen.Pending, ptr %a25 - store %S.gen.Pending %t26, ptr %a27 - %t28 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 2 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then2870, label %else2871 -then2870: - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - %t33 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t34 = load %S.ast.Type, ptr %t33 - call void @finch.gen.dropAt(ptr %t30, { ptr, i64, i64 } %t32, %S.ast.Type %t34) - br label %endif2872 -else2871: - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - %t38 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t39 = load %S.ast.Type, ptr %t38 - call void @finch.gen.dropValue(ptr %t35, { ptr, i64, i64 } %t37, %S.ast.Type %t39) - br label %endif2872 -endif2872: - call void @finch.drop.S_gen_Pending(ptr %a27) - br label %while.cond2863 -while.end2865: - ret void -} - -define internal void @finch.gen.heldEnd(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a20 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - br label %while.cond2873 -while.cond2873: - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2876, label %ok2877 -panic2876: - call void @finch_panic(ptr @.str.1706, i64 1008, ptr @.str.1707) - unreachable -ok2877: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = load i64, ptr %a2 - %t9 = icmp sgt i64 %t7, %t8 - br i1 %t9, label %while.body2874, label %while.end2875 -while.body2874: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2878, label %ok2879 -panic2878: - call void @finch_panic(ptr @.str.1708, i64 1009, ptr @.str.1709) - unreachable -ok2879: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 11 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp eq i64 %t14, 0 - br i1 %t15, label %panic2880, label %ok2881 -panic2880: - call void @finch_panic(ptr @.str.1710, i64 1009, ptr @.str.1711) - unreachable -ok2881: - %t16 = sub i64 %t14, 1 - %t17 = load ptr, ptr %t12 - %t18 = getelementptr inbounds %S.gen.Pending, ptr %t17, i64 %t16 - %t19 = load %S.gen.Pending, ptr %t18 - store i64 %t16, ptr %t13 - store %S.gen.Pending %t19, ptr %a20 - call void @finch.drop.S_gen_Pending(ptr %a20) - br label %while.cond2873 -while.end2875: - ret void -} - -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.from2882 -logic.from2882: - br i1 %t7, label %logic.end2884, label %logic.rhs2883 -logic.rhs2883: - %t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t9 = load i1, ptr %t8 - br label %logic.rend2885 -logic.rend2885: - br label %logic.end2884 -logic.end2884: - %t10 = phi i1 [ true, %logic.from2882 ], [ %t9, %logic.rend2885 ] - br i1 %t10, label %then2886, label %endif2888 -then2886: - %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 -endif2888: - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.1712, 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 %then2889, label %endif2891 -then2889: - %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1713, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t19, ptr %a11 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - br label %endif2891 -endif2891: - %t22 = load ptr, ptr %a1 - %t23 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1714, i64 35, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a24 - %t28 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t27, ptr %a30 - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1715, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - call void @finch.gen.emit(ptr %t22, { ptr, i64, i64 } %t44) - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1716, 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.1717, i64 3, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - %t14 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t13) - store { ptr, i64, i64 } %t13, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t14, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1718, i64 12, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t22, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1719, i64 6, i64 0 }, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t17, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t31, { ptr, i64, i64 } { ptr @.str.1720, i64 0, i64 0 }) - store { ptr, i64, i64 } %t32, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1721, i64 10, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1722, i64 6, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.1723, i64 6, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t34, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a16) - ret { ptr, i64, i64 } %t62 -} - -define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) { -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 %S.ast.Type, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a153 = 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 - %a167 = 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 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then2892, label %else2893 -then2892: - %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.1726, 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 %S.ast.Type %t17, ptr %a19 - call void @finch.drop.S_ast_Type(ptr %a19) - store { ptr, i64, i64 } { ptr @.str.1725, i64 4, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1724, i64 4, i64 0 }, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2894 -else2893: - %t26 = load %S.ast.Type, ptr %a3 - %t27 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t26) - br i1 %t27, label %then2895, label %else2896 -then2895: - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a2 - %t31 = load %S.ast.Type, ptr %a3 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1729, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } { ptr @.str.1728, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - call void @finch.gen.printf(ptr %t28, { ptr, i64, i64 } { ptr @.str.1727, i64 4, i64 0 }, { ptr, i64, i64 } %t39) - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - br label %endif2897 -else2896: - %t41 = load %S.ast.Type, ptr %a3 - %t42 = call i1 @finch.gen.isFloat(%S.ast.Type %t41) - br i1 %t42, label %then2898, label %else2899 -then2898: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load { ptr, i64, i64 }, ptr %a2 - %t46 = load %S.ast.Type, ptr %a3 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1732, i64 5, i64 0 }) - %t48 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t44, { ptr, i64, i64 } %t45, %S.ast.Type %t46, %S.ast.Type %t47) - store %S.ast.Type %t47, ptr %a49 - call void @finch.drop.S_ast_Type(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.1731, i64 7, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.gen.printf(ptr %t43, { ptr, i64, i64 } { ptr @.str.1730, i64 2, i64 0 }, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %endif2900 -else2899: - %t56 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1733, i64 4, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then2901, label %else2902 -then2901: - %t61 = load ptr, ptr %a1 - %t62 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1734, i64 8, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1735, i64 7, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = load i1, ptr %a4 - br i1 %t75, label %then2904, label %else2905 -then2904: - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1737, i64 4, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.printf(ptr %t76, { ptr, i64, i64 } { ptr @.str.1736, i64 4, i64 0 }, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %endif2906 -else2905: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1739, i64 4, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.gen.printf(ptr %t83, { ptr, i64, i64 } { ptr @.str.1738, i64 2, i64 0 }, { ptr, i64, i64 } %t88) - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif2906 -endif2906: - call void @finch_str_drop(ptr %a74) - br label %endif2903 -else2902: - %t90 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1740, 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 %then2907, label %else2908 -then2907: - %t95 = load ptr, ptr %a1 - %t96 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t95, { ptr, i64, i64 } { ptr @.str.1741, i64 4, i64 0 }) - store { ptr, i64, i64 } %t96, ptr %a97 - %t98 = load ptr, ptr %a1 - %t99 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t98, { ptr, i64, i64 } { ptr @.str.1742, i64 5, i64 0 }) - store { ptr, i64, i64 } %t99, ptr %a100 - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1743, i64 10, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1744, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t111, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.1745, i64 6, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t122, ptr %a125 - store { ptr, i64, i64 } %t123, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t101, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - %t132 = load ptr, ptr %a1 - %t133 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.1747, i64 4, i64 0 }, ptr %a135 - store { ptr, i64, i64 } %t133, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a134 - call void @finch.gen.printf(ptr %t132, { ptr, i64, i64 } { ptr @.str.1746, i64 2, i64 0 }, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a131) - call void @finch_str_drop(ptr %a100) - call void @finch_str_drop(ptr %a97) - br label %endif2909 -else2908: - %t139 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1748, 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 %then2910, label %else2911 -then2910: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1749, i64 31, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.1750, i64 3, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t155, ptr %a157 - %t158 = load ptr, ptr %a1 - %t159 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1751, i64 10, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.1752, i64 7, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - store { ptr, i64, i64 } %t169, ptr %a171 - %t172 = load ptr, ptr %a1 - %t173 = load { ptr, i64, i64 }, ptr %a2 - %t174 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t172, { ptr, i64, i64 } %t173) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load i1, ptr %a4 - br i1 %t176, label %then2913, label %else2914 -then2913: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1754, i64 4, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1755, i64 6, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - call void @finch.gen.printf(ptr %t177, { ptr, i64, i64 } { ptr @.str.1753, i64 6, i64 0 }, { ptr, i64, i64 } %t193) - store { ptr, i64, i64 } %t193, ptr %a194 - call void @finch_str_drop(ptr %a194) - br label %endif2915 -else2914: - %t195 = load ptr, ptr %a1 - %t196 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1757, i64 4, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.1758, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t205, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t205, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.printf(ptr %t195, { ptr, i64, i64 } { ptr @.str.1756, i64 4, i64 0 }, { ptr, i64, i64 } %t211) - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - br label %endif2915 -endif2915: - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a171) - call void @finch_str_drop(ptr %a157) - br label %endif2912 -else2911: - %t213 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.1759, i64 3, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %then2916, label %else2917 -then2916: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1760, i64 12, i64 0 }, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1761, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t218, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t232, { ptr, i64, i64 } { ptr @.str.1762, i64 8, i64 0 }) - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t235, { ptr, i64, i64 } { ptr @.str.1763, i64 8, i64 0 }) - store { ptr, i64, i64 } %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t238, { ptr, i64, i64 } { ptr @.str.1764, i64 8, i64 0 }) - store { ptr, i64, i64 } %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load { ptr, i64, i64 }, ptr %a231 - %t243 = load { ptr, i64, i64 }, ptr %a234 - %t244 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.condBr(ptr %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t244) - %t245 = load ptr, ptr %a1 - %t246 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.label(ptr %t245, { ptr, i64, i64 } %t246) - %t247 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t247, { ptr, i64, i64 } { ptr @.str.1765, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1766, i64 0, i64 0 }) - %t248 = load ptr, ptr %a1 - %t249 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t248, { ptr, i64, i64 } %t249) - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.label(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = load ptr, ptr %a1 - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1769, i64 13, i64 0 }, ptr %a256 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t258, ptr %a260 - store { ptr, i64, i64 } { ptr @.str.1770, i64 7, i64 0 }, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - %t264 = call { ptr, i64, i64 } @finch.gen.op(ptr %t253, { ptr, i64, i64 } %t263) - store { ptr, i64, i64 } %t263, ptr %a265 - call void @finch_str_drop(ptr %a265) - store { ptr, i64, i64 } { ptr @.str.1768, i64 4, i64 0 }, ptr %a267 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - call void @finch.gen.printf(ptr %t252, { ptr, i64, i64 } { ptr @.str.1767, i64 6, i64 0 }, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load ptr, ptr %a1 - %t273 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t272, { ptr, i64, i64 } %t273) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a240) - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a231) - br label %endif2918 -else2917: - %t276 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t276, ptr %a277 - store { ptr, i64, i64 } { ptr @.str.1771, i64 4, i64 0 }, ptr %a278 - %t279 = call i32 @finch_str_eq(ptr %a277, ptr %a278) - %t280 = icmp ne i32 %t279, 0 - br i1 %t280, label %then2919, label %else2920 -then2919: - %t281 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t281, { ptr, i64, i64 } { ptr @.str.1772, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1773, i64 0, i64 0 }) - br label %endif2921 -else2920: - %t282 = load ptr, ptr %a1 - %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.1774, i64 17, i64 0 }) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a284 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } { ptr @.str.1775, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1776, i64 15, i64 0 }, { ptr, i64, i64 } %t286) - %t287 = load ptr, ptr %a1 - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - %t290 = load %S.ast.Type, ptr %a3 - %t291 = load i1, ptr %a4 - call void @finch.gen.emitFormat(ptr %t287, { ptr, i64, i64 } %t288, { ptr, i64, i64 } %t289, %S.ast.Type %t290, i1 %t291) - %t292 = load ptr, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1777, i64 31, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.1778, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - call void @finch.gen.emit(ptr %t292, { ptr, i64, i64 } %t302) - store { ptr, i64, i64 } %t302, ptr %a303 - call void @finch_str_drop(ptr %a303) - call void @finch_str_drop(ptr %a284) - br label %endif2921 -endif2921: - br label %endif2918 -endif2918: - br label %endif2912 -endif2912: - br label %endif2909 -endif2909: - br label %endif2903 -endif2903: - br label %endif2900 -endif2900: - br label %endif2897 -endif2897: - br label %endif2894 -endif2894: - call void @finch_str_drop(ptr %a10) - 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 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1779, 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.1780, i64 6, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load ptr, ptr %a1 - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t15, { ptr, i64, i64 } %t16) - store { ptr, i64, i64 } %t14, ptr %a19 - store { ptr, i64, i64 } %t17, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t14, ptr %a21 - call void @finch_str_drop(ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1781, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t30 = load i64, ptr %t29 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1782, i64 1, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - ret void -} - -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Type, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { 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 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca %S.ast.Type, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.gen.Val, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %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 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1783, i64 1, i64 0 }, ptr %a12 - %t13 = load i1, ptr %a5 - br i1 %t13, label %then2922, label %endif2924 -then2922: - %t14 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - br label %endif2924 -endif2924: - %t16 = load %S.ast.Type, ptr %a4 - %t17 = call i1 @finch.gen.isSigned(%S.ast.Type %t16) - br i1 %t17, label %then2925, label %else2926 -then2925: - %t18 = load ptr, ptr %a1 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1785, i64 29, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1786, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a3 - %t31 = load %S.ast.Type, ptr %a4 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1787, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } %t28, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t28, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1788, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - call void @finch.gen.emit(ptr %t18, { ptr, i64, i64 } %t45) - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %endif2927 -else2926: - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t47) - br i1 %t48, label %then2928, label %else2929 -then2928: - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1789, i64 30, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1790, i64 6, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a3 - %t62 = load %S.ast.Type, ptr %a4 - %t63 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1791, i64 3, i64 0 }) - %t64 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t60, { ptr, i64, i64 } %t61, %S.ast.Type %t62, %S.ast.Type %t63) - store %S.ast.Type %t63, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t59, ptr %a67 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t59, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t64, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1792, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.emit(ptr %t49, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif2930 -else2929: - %t78 = load %S.ast.Type, ptr %a4 - %t79 = call i1 @finch.gen.isFloat(%S.ast.Type %t78) - br i1 %t79, label %then2931, label %else2932 -then2931: - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1793, i64 31, i64 0 }, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1794, i64 9, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a3 - %t93 = load %S.ast.Type, ptr %a4 - %t94 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1795, i64 5, i64 0 }) - %t95 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t91, { ptr, i64, i64 } %t92, %S.ast.Type %t93, %S.ast.Type %t94) - store %S.ast.Type %t94, ptr %a96 - call void @finch.drop.S_ast_Type(ptr %a96) - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - store { ptr, i64, i64 } %t95, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1796, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.emit(ptr %t80, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2933 -else2932: - %t109 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1797, 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 %then2934, label %else2935 -then2934: - %t114 = load ptr, ptr %a1 - %t115 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1798, i64 30, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1799, i64 5, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t124, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1800, i64 6, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t135, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t135, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.1801, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - call void @finch.gen.emit(ptr %t114, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %endif2936 -else2935: - %t148 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.1802, i64 4, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br i1 %t152, label %then2937, label %else2938 -then2937: - %t153 = load ptr, ptr %a1 - %t154 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1803, i64 30, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.1804, i64 6, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1805, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1806, i64 7, i64 0 }, ptr %a172 - call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) - store { ptr, i64, i64 } %t169, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a170 - %t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t174) - store { ptr, i64, i64 } %t174, ptr %a176 - call void @finch_str_drop(ptr %a176) - store { ptr, i64, i64 } %t163, ptr %a178 - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t163, ptr %a180 - call void @finch_str_drop(ptr %a180) - store { ptr, i64, i64 } %t175, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a177 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1807, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - br label %endif2939 -else2938: - %t189 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.1808, 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 %then2940, label %else2941 -then2940: - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1809, i64 29, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1810, i64 6, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t211, ptr %a212 - call void @finch.copy.S_ast_Type(ptr %a213, ptr %a212) - %t214 = load %S.ast.Type, ptr %a213 - %t215 = insertvalue %S.gen.Val %t210, %S.ast.Type %t214, 1 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t205, %S.gen.Val %t215) - store %S.gen.Val %t215, ptr %a217 - call void @finch.drop.S_gen_Val(ptr %a217) - store { ptr, i64, i64 } %t204, ptr %a219 - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t204, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t216, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1811, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t228, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t228, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t234, ptr %a236 - store { ptr, i64, i64 } { ptr @.str.1812, i64 1, i64 0 }, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - call void @finch.gen.emit(ptr %t194, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t239, ptr %a240 - call void @finch_str_drop(ptr %a240) - br label %endif2942 -else2941: - %t241 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t241, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.1813, i64 3, i64 0 }, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from2943 -logic.from2943: - br i1 %t245, label %logic.end2945, label %logic.rhs2944 -logic.rhs2944: - %t246 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1814, i64 4, i64 0 }, ptr %a248 - %t249 = call i32 @finch_str_eq(ptr %a247, ptr %a248) - %t250 = icmp ne i32 %t249, 0 - br label %logic.rend2946 -logic.rend2946: - br label %logic.end2945 -logic.end2945: - %t251 = phi i1 [ true, %logic.from2943 ], [ %t250, %logic.rend2946 ] - br i1 %t251, label %then2947, label %else2948 -then2947: - %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1815, i64 29, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - %t257 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t257, ptr %a259 - store { ptr, i64, i64 } { ptr @.str.1816, i64 6, i64 0 }, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t257, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - %t263 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t262, ptr %a265 - store { ptr, i64, i64 } %t263, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t262, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.1817, i64 1, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.emit(ptr %t252, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif2949 -else2948: - %t275 = load ptr, ptr %a1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a4 - %t278 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.1818, i64 10, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.1819, i64 5, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t288, ptr %a291 - store { ptr, i64, i64 } %t289, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1820, i64 6, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_copy(ptr %a303, ptr %a302) - %t304 = load { ptr, i64, i64 }, ptr %a303 - %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t306 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t306, ptr %a307 - call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) - %t309 = load %S.ast.Type, ptr %a308 - %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 - %t311 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t300, %S.gen.Val %t310) - store %S.gen.Val %t310, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - store { ptr, i64, i64 } %t299, ptr %a314 - store { ptr, i64, i64 } %t311, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t299, ptr %a316 - call void @finch_str_drop(ptr %a316) - store { ptr, i64, i64 } %t311, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.1821, i64 1, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - call void @finch.gen.emit(ptr %t275, { ptr, i64, i64 } %t323) - store { ptr, i64, i64 } %t323, ptr %a324 - call void @finch_str_drop(ptr %a324) - br label %endif2949 -endif2949: - br label %endif2942 -endif2942: - br label %endif2939 -endif2939: - br label %endif2936 -endif2936: - br label %endif2933 -endif2933: - br label %endif2930 -endif2930: - br label %endif2927 -endif2927: - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a11) - 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 void @finch.drop.S_gen_EnumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - ret void -} - -define internal void @finch.copy.S_gen_SumDef(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.SumDef, ptr %src - store %S.gen.SumDef %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_int(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_int(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_S_ast_Node(ptr %t12, ptr %t13) - ret void -} - -define internal void @finch.drop.S_gen_SumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_S_ast_Node(ptr %t6) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.gen.EnumDef, align 16 - %a174 = alloca %S.gen.EnumDef, align 16 - %a176 = alloca %S.gen.EnumDef, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca i64, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca i64, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a342 = 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 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca %S.gen.SumDef, align 16 - %a538 = alloca %S.gen.SumDef, align 16 - %a540 = alloca %S.gen.SumDef, align 16 - %a556 = alloca %S.gen.StructDef, align 16 - %a557 = alloca %S.gen.StructDef, align 16 - %a559 = alloca %S.gen.StructDef, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = 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 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca i64, align 16 - %a731 = alloca i64, align 16 - %a747 = alloca i64, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca %S.gen.StructDef, align 16 - %a839 = alloca %S.gen.StructDef, align 16 - %a841 = alloca %S.gen.StructDef, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca i64, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a879 = 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 - %a884 = 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 - %a891 = 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 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a938 = 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 - %a950 = 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 - 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.1822, i64 14, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2950, label %ok2951 -panic2950: - call void @finch_panic(ptr @.str.1823, i64 1126, ptr @.str.1824) - unreachable -ok2951: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2952, label %endif2954 -then2952: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2954: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2955, label %ok2956 -panic2955: - call void @finch_panic(ptr @.str.1825, i64 1129, ptr @.str.1826) - unreachable -ok2956: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1827, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2957, label %else2958 -then2957: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2960, label %inrange2961 -range2960: - call void @finch_panic_index(ptr @.str.1828, i64 1132, i64 0, i64 %t41) - unreachable -inrange2961: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = call { ptr, i64, i64 } @finch.gen.load(ptr %t50, { ptr, i64, i64 } { ptr @.str.1829, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1830, i64 2, i64 0 }) - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load ptr, ptr %a1 - %t54 = load ptr, ptr %a1 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } { ptr @.str.1832, i64 62, i64 0 }) - %t56 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1831, i64 3, i64 0 }, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - store { ptr, i64, i64 } %t56, ptr %a58 - %t59 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t59, { ptr, i64, i64 } { ptr @.str.1833, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1834, i64 1, i64 0 }) - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a58 - %t62 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t60, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %t64 = load ptr, ptr %a1 - %t65 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t64, { ptr, i64, i64 } { ptr @.str.1835, i64 3, i64 0 }) - store { ptr, i64, i64 } %t65, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.1836, i64 4, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a63 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 3, %t72 - br i1 %t73, label %range2962, label %inrange2963 -range2962: - call void @finch_panic_index(ptr @.str.1838, i64 1139, i64 3, i64 %t72) - unreachable -inrange2963: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 3 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.1837, i64 13, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.1839, i64 3, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t85) - store { ptr, i64, i64 } %t85, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t86, ptr %a88 - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a88 - %t91 = load { ptr, i64, i64 }, ptr %a66 - %t92 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.condBr(ptr %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t95, { ptr, i64, i64 } { ptr @.str.1840, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1841, i64 2, i64 0 }) - %t96 = load ptr, ptr %a1 - %t97 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t96, { ptr, i64, i64 } %t97) - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t98, { ptr, i64, i64 } %t99) - %t100 = load ptr, ptr %a1 - %t101 = load ptr, ptr %a1 - %t102 = load %S.ast.Type, ptr %a49 - %t103 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t101, %S.ast.Type %t102) - store { ptr, i64, i64 } { ptr @.str.1842, i64 23, i64 0 }, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1843, i64 6, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t108, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a109 - %t114 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1844, i64 6, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a63 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 3, %t126 - br i1 %t127, label %range2964, label %inrange2965 -range2964: - call void @finch_panic_index(ptr @.str.1845, i64 1145, i64 3, i64 %t126) - unreachable -inrange2965: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i64 3 - %t130 = load { ptr, i64, i64 }, ptr %t129 - store { ptr, i64, i64 } %t124, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t124, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a137 - call void @finch_str_drop(ptr %a137) - store { ptr, i64, i64 } %t136, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = load %S.ast.Type, ptr %a49 - %t143 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t141, %S.ast.Type %t142) - %t144 = load { ptr, i64, i64 }, ptr %a138 - %t145 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t144) - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load %S.ast.Type, ptr %a49 - call void @finch.gen.emitFormat(ptr %t139, { ptr, i64, i64 } { ptr @.str.1846, i64 4, i64 0 }, { ptr, i64, i64 } %t145, %S.ast.Type %t147, i1 true) - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load ptr, ptr %a1 - %t150 = load { ptr, i64, i64 }, ptr %a63 - call void @finch.gen.loopEnd(ptr %t149, { ptr, i64, i64 } %t150) - %t151 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t151, { ptr, i64, i64 } { ptr @.str.1847, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1848, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a88) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_str(ptr %a63) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a52) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2959 -else2958: - %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.1849, i64 4, i64 0 }, ptr %a155 - %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) - %t157 = icmp ne i32 %t156, 0 - br i1 %t157, label %then2966, label %else2967 -then2966: - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic2969, label %ok2970 -panic2969: - call void @finch_panic(ptr @.str.1850, i64 1151, ptr @.str.1851) - unreachable -ok2970: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 21 - %t161 = load ptr, ptr %a1 - %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = call i64 @finch.gen.findEnum(ptr %t161, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t165) - %t167 = load { ptr, i64, i64 }, ptr %t160 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range2971, label %inrange2972 -range2971: - call void @finch_panic_index(ptr @.str.1852, i64 1151, i64 %t166, i64 %t168) - unreachable -inrange2972: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.EnumDef, ptr %t170, i64 %t166 - %t172 = load %S.gen.EnumDef, ptr %t171 - store %S.gen.EnumDef %t172, ptr %a173 - call void @finch.copy.S_gen_EnumDef(ptr %a174, ptr %a173) - %t175 = load %S.gen.EnumDef, ptr %a174 - store %S.gen.EnumDef %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.1853, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1854, i64 2, i64 0 }) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1855, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1856, i64 9, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } zeroinitializer, ptr %a186 - store { ptr, i64, i64 } zeroinitializer, ptr %a187 - %t188 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - store i64 0, ptr %a191 - br label %for.cond2973 -for.cond2973: - %t192 = load i64, ptr %a191 - %t193 = icmp slt i64 %t192, %t190 - br i1 %t193, label %for.body2974, label %for.end2976 -for.body2974: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a187, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t195, { ptr, i64, i64 } { ptr @.str.1857, i64 6, i64 0 }) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %a187, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %a187 - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 - store { ptr, i64, i64 } %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 3 - %t203 = load i64, ptr %a191 - %t204 = load { ptr, i64, i64 }, ptr %t202 - %t205 = extractvalue { ptr, i64, i64 } %t204, 1 - %t206 = icmp uge i64 %t203, %t205 - br i1 %t206, label %range2977, label %inrange2978 -range2977: - call void @finch_panic_index(ptr @.str.1859, i64 1159, i64 %t203, i64 %t205) - unreachable -inrange2978: - %t207 = extractvalue { ptr, i64, i64 } %t204, 0 - %t208 = getelementptr inbounds i64, ptr %t207, i64 %t203 - %t209 = load i64, ptr %t208 - call void @finch_str_from_int(ptr %a210, i64 %t209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.1858, i64 4, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.1860, i64 9, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load i64, ptr %a191 - %t223 = load { ptr, i64, i64 }, ptr %a187 - %t224 = extractvalue { ptr, i64, i64 } %t223, 1 - %t225 = icmp uge i64 %t222, %t224 - br i1 %t225, label %range2979, label %inrange2980 -range2979: - call void @finch_panic_index(ptr @.str.1861, i64 1159, i64 %t222, i64 %t224) - unreachable -inrange2980: - %t226 = extractvalue { ptr, i64, i64 } %t223, 0 - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 %t222 - %t228 = load { ptr, i64, i64 }, ptr %t227 - store { ptr, i64, i64 } %t221, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t221, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - %t234 = load i64, ptr %t201 - %t235 = add i64 %t234, 1 - call void @finch_arr_reserve(ptr %a186, i64 %t235, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t236 = load ptr, ptr %a186 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i64 %t234 - store { ptr, i64, i64 } %t233, ptr %t237 - store i64 %t235, ptr %t201 - br label %for.step2975 -for.step2975: - %t238 = load i64, ptr %a191 - %t239 = add i64 %t238, 1 - store i64 %t239, ptr %a191 - br label %for.cond2973 -for.end2976: - %t240 = load ptr, ptr %a1 - %t241 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1862, i64 11, i64 0 }, ptr %a243 - store { ptr, i64, i64 } %t241, ptr %a244 - call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a242 - store { ptr, i64, i64 } %t245, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1863, i64 9, i64 0 }, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t245, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - %t251 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t250, ptr %a253 - store { ptr, i64, i64 } %t251, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t250, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.1864, i64 3, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1865, i64 1, i64 0 }, ptr %a263 - call void @finch_str_join(ptr %a264, ptr %a186, ptr %a263) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t261, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t261, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t265, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a266 - store { ptr, i64, i64 } %t271, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.1866, i64 2, i64 0 }, ptr %a274 - call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a272 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t276) - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load ptr, ptr %a1 - %t279 = icmp eq ptr %t278, null - br i1 %t279, label %panic2981, label %ok2982 -panic2981: - call void @finch_panic(ptr @.str.1867, i64 1162, ptr @.str.1868) - unreachable -ok2982: - %t280 = getelementptr inbounds %S.gen.Gen, ptr %t278, i32 0, i32 9 - store i1 true, ptr %t280 - %t281 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i32 0, i32 1 - %t283 = load i64, ptr %t282 - store i64 0, ptr %a284 - br label %for.cond2983 -for.cond2983: - %t285 = load i64, ptr %a284 - %t286 = icmp slt i64 %t285, %t283 - br i1 %t286, label %for.body2984, label %for.end2986 -for.body2984: - %t287 = load ptr, ptr %a1 - %t288 = load i64, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a187 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range2987, label %inrange2988 -range2987: - call void @finch_panic_index(ptr @.str.1869, i64 1164, i64 %t288, i64 %t290) - unreachable -inrange2988: - %t292 = extractvalue { ptr, i64, i64 } %t289, 0 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %t292, i64 %t288 - %t294 = load { ptr, i64, i64 }, ptr %t293 - call void @finch.gen.label(ptr %t287, { ptr, i64, i64 } %t294) - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t297 = load i64, ptr %a284 - %t298 = load { ptr, i64, i64 }, ptr %t296 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range2989, label %inrange2990 -range2989: - call void @finch_panic_index(ptr @.str.1871, i64 1165, i64 %t297, i64 %t299) - unreachable -inrange2990: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t297 - %t303 = load { ptr, i64, i64 }, ptr %t302 - call void @finch.gen.bufText(ptr %t295, { ptr, i64, i64 } { ptr @.str.1870, i64 4, i64 0 }, { ptr, i64, i64 } %t303) - %t304 = load ptr, ptr %a1 - %t305 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t304, { ptr, i64, i64 } %t305) - br label %for.step2985 -for.step2985: - %t306 = load i64, ptr %a284 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a284 - br label %for.cond2983 -for.end2986: - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) - %t310 = load ptr, ptr %a1 - %t311 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1873, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - call void @finch.gen.bufText(ptr %t310, { ptr, i64, i64 } { ptr @.str.1872, i64 4, i64 0 }, { ptr, i64, i64 } %t316) - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1875, i64 9, i64 0 }, ptr %a322 - store { ptr, i64, i64 } %t320, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a321 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.1876, i64 7, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = call { ptr, i64, i64 } @finch.gen.op(ptr %t319, { ptr, i64, i64 } %t329) - store { ptr, i64, i64 } %t329, ptr %a331 - call void @finch_str_drop(ptr %a331) - store { ptr, i64, i64 } { ptr @.str.1874, i64 39, i64 0 }, ptr %a333 - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t330, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.1877, i64 1, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - call void @finch.gen.emit(ptr %t318, { ptr, i64, i64 } %t341) - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t343, { ptr, i64, i64 } { ptr @.str.1878, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1879, i64 1, i64 0 }) - %t344 = load ptr, ptr %a1 - %t345 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t344, { ptr, i64, i64 } %t345) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t346, { ptr, i64, i64 } %t347) - call void @finch.drop.arr_str(ptr %a187) - call void @finch.drop.arr_str(ptr %a186) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.S_gen_EnumDef(ptr %a176) - br label %endif2968 -else2967: - %t348 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t349 = load { ptr, i64, i64 }, ptr %t348 - store { ptr, i64, i64 } %t349, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.1880, i64 3, i64 0 }, ptr %a351 - %t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351) - %t353 = icmp ne i32 %t352, 0 - br i1 %t353, label %then2991, label %else2992 -then2991: - %t354 = load ptr, ptr %a1 - %t355 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t354, { ptr, i64, i64 } { ptr @.str.1881, i64 2, i64 0 }) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t357, { ptr, i64, i64 } { ptr @.str.1882, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1883, i64 4, i64 0 }, { ptr, i64, i64 } %t358) - %t359 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t359, { ptr, i64, i64 } { ptr @.str.1884, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1885, i64 1, i64 0 }) - %t360 = load ptr, ptr %a1 - %t361 = load ptr, ptr %a1 - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Type, ptr %a2 - %t364 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t362, %S.ast.Type %t363) - store { ptr, i64, i64 } { ptr @.str.1887, i64 23, i64 0 }, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1888, i64 22, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t361, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = call { ptr, i64, i64 } @finch.gen.load(ptr %t360, { ptr, i64, i64 } { ptr @.str.1886, i64 3, i64 0 }, { ptr, i64, i64 } %t375) - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_drop(ptr %a378) - store { ptr, i64, i64 } %t377, ptr %a379 - %t380 = load ptr, ptr %a1 - %t381 = load { ptr, i64, i64 }, ptr %a379 - %t382 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t380, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t382, ptr %a383 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Type, ptr %a2 - %t386 = load { ptr, i64, i64 }, ptr %a383 - %t387 = extractvalue { ptr, i64, i64 } %t386, 1 - %t388 = icmp uge i64 3, %t387 - br i1 %t388, label %range2994, label %inrange2995 -range2994: - call void @finch_panic_index(ptr @.str.1890, i64 1181, i64 3, i64 %t387) - unreachable -inrange2995: - %t389 = extractvalue { ptr, i64, i64 } %t386, 0 - %t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i64 3 - %t391 = load { ptr, i64, i64 }, ptr %t390 - %t392 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t384, { ptr, i64, i64 } { ptr @.str.1889, i64 2, i64 0 }, %S.ast.Type %t385, { ptr, i64, i64 } %t391) - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t394, { ptr, i64, i64 } { ptr @.str.1891, i64 10, i64 0 }) - store { ptr, i64, i64 } %t395, ptr %a396 - %t397 = load ptr, ptr %a1 - %t398 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t397, { ptr, i64, i64 } { ptr @.str.1892, i64 10, i64 0 }) - store { ptr, i64, i64 } %t398, ptr %a399 - %t400 = load ptr, ptr %a1 - %t401 = load ptr, ptr %a1 - %t402 = load ptr, ptr %a1 - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a393 - %t405 = load %S.ast.Type, ptr %a2 - %t406 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t403, { ptr, i64, i64 } %t404, %S.ast.Type %t405, i64 0) - %t407 = call { ptr, i64, i64 } @finch.gen.load(ptr %t402, { ptr, i64, i64 } { ptr @.str.1894, i64 3, i64 0 }, { ptr, i64, i64 } %t406) - store { ptr, i64, i64 } %t406, ptr %a408 - call void @finch_str_drop(ptr %a408) - store { ptr, i64, i64 } { ptr @.str.1893, i64 12, i64 0 }, ptr %a410 - store { ptr, i64, i64 } %t407, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t407, ptr %a412 - call void @finch_str_drop(ptr %a412) - %t413 = load { ptr, i64, i64 }, ptr %a409 - store { ptr, i64, i64 } %t413, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.1895, i64 3, i64 0 }, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - store { ptr, i64, i64 } %t413, ptr %a417 - call void @finch_str_drop(ptr %a417) - %t418 = load { ptr, i64, i64 }, ptr %a414 - %t419 = call { ptr, i64, i64 } @finch.gen.op(ptr %t401, { ptr, i64, i64 } %t418) - store { ptr, i64, i64 } %t418, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a396 - %t422 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.condBr(ptr %t400, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t421, { ptr, i64, i64 } %t422) - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a396 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t426, { ptr, i64, i64 } { ptr @.str.1896, i64 3, i64 0 }) - store { ptr, i64, i64 } %t427, ptr %a428 - %t429 = load ptr, ptr %a1 - %t430 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t429, { ptr, i64, i64 } { ptr @.str.1897, i64 4, i64 0 }) - store { ptr, i64, i64 } %t430, ptr %a431 - %t432 = load ptr, ptr %a1 - %t433 = load ptr, ptr %a1 - %t434 = load { ptr, i64, i64 }, ptr %a356 - %t435 = call { ptr, i64, i64 } @finch.gen.load(ptr %t433, { ptr, i64, i64 } { ptr @.str.1898, i64 2, i64 0 }, { ptr, i64, i64 } %t434) - %t436 = load { ptr, i64, i64 }, ptr %a431 - %t437 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.condBr(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t436, { ptr, i64, i64 } %t437) - store { ptr, i64, i64 } %t435, ptr %a438 - call void @finch_str_drop(ptr %a438) - %t439 = load ptr, ptr %a1 - %t440 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.label(ptr %t439, { ptr, i64, i64 } %t440) - %t441 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t441, { ptr, i64, i64 } { ptr @.str.1899, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1900, i64 2, i64 0 }) - %t442 = load ptr, ptr %a1 - %t443 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.br(ptr %t442, { ptr, i64, i64 } %t443) - %t444 = load ptr, ptr %a1 - %t445 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.label(ptr %t444, { ptr, i64, i64 } %t445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t446, { ptr, i64, i64 } { ptr @.str.1901, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1902, i64 5, i64 0 }, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load ptr, ptr %a1 - %t450 = load ptr, ptr %a1 - %t451 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = extractvalue { ptr, i64, i64 } %t452, 1 - %t454 = icmp uge i64 0, %t453 - br i1 %t454, label %range2996, label %inrange2997 -range2996: - call void @finch_panic_index(ptr @.str.1904, i64 1194, i64 0, i64 %t453) - unreachable -inrange2997: - %t455 = extractvalue { ptr, i64, i64 } %t452, 0 - %t456 = getelementptr inbounds %S.ast.Type, ptr %t455, i64 0 - %t457 = load %S.ast.Type, ptr %t456 - %t458 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t450, %S.ast.Type %t457) - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a393 - %t461 = load %S.ast.Type, ptr %a2 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 1) - %t463 = call { ptr, i64, i64 } @finch.gen.load(ptr %t449, { ptr, i64, i64 } %t458, { ptr, i64, i64 } %t462) - store { ptr, i64, i64 } %t458, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t467 = load { ptr, i64, i64 }, ptr %t466 - %t468 = extractvalue { ptr, i64, i64 } %t467, 1 - %t469 = icmp uge i64 0, %t468 - br i1 %t469, label %range2998, label %inrange2999 -range2998: - call void @finch_panic_index(ptr @.str.1905, i64 1194, i64 0, i64 %t468) - unreachable -inrange2999: - %t470 = extractvalue { ptr, i64, i64 } %t467, 0 - %t471 = getelementptr inbounds %S.ast.Type, ptr %t470, i64 0 - %t472 = load %S.ast.Type, ptr %t471 - call void @finch.gen.emitFormat(ptr %t448, { ptr, i64, i64 } { ptr @.str.1903, i64 4, i64 0 }, { ptr, i64, i64 } %t463, %S.ast.Type %t472, i1 true) - store { ptr, i64, i64 } %t463, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t474, { ptr, i64, i64 } { ptr @.str.1906, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1907, i64 2, i64 0 }) - %t475 = load ptr, ptr %a1 - %t476 = load ptr, ptr %a1 - %t477 = load ptr, ptr %a1 - %t478 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t479 = load { ptr, i64, i64 }, ptr %t478 - %t480 = extractvalue { ptr, i64, i64 } %t479, 1 - %t481 = icmp uge i64 1, %t480 - br i1 %t481, label %range3000, label %inrange3001 -range3000: - call void @finch_panic_index(ptr @.str.1909, i64 1196, i64 1, i64 %t480) - unreachable -inrange3001: - %t482 = extractvalue { ptr, i64, i64 } %t479, 0 - %t483 = getelementptr inbounds %S.ast.Type, ptr %t482, i64 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t477, %S.ast.Type %t484) - %t486 = load ptr, ptr %a1 - %t487 = load { ptr, i64, i64 }, ptr %a393 - %t488 = load %S.ast.Type, ptr %a2 - %t489 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t486, { ptr, i64, i64 } %t487, %S.ast.Type %t488, i64 2) - %t490 = call { ptr, i64, i64 } @finch.gen.load(ptr %t476, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t489) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t494 = load { ptr, i64, i64 }, ptr %t493 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 1, %t495 - br i1 %t496, label %range3002, label %inrange3003 -range3002: - call void @finch_panic_index(ptr @.str.1910, i64 1196, i64 1, i64 %t495) - unreachable -inrange3003: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds %S.ast.Type, ptr %t497, i64 1 - %t499 = load %S.ast.Type, ptr %t498 - call void @finch.gen.emitFormat(ptr %t475, { ptr, i64, i64 } { ptr @.str.1908, i64 4, i64 0 }, { ptr, i64, i64 } %t490, %S.ast.Type %t499, i1 true) - store { ptr, i64, i64 } %t490, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load ptr, ptr %a1 - %t502 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.br(ptr %t501, { ptr, i64, i64 } %t502) - %t503 = load ptr, ptr %a1 - %t504 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.label(ptr %t503, { ptr, i64, i64 } %t504) - %t505 = load ptr, ptr %a1 - %t506 = load { ptr, i64, i64 }, ptr %a383 - call void @finch.gen.loopEnd(ptr %t505, { ptr, i64, i64 } %t506) - %t507 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t507, { ptr, i64, i64 } { ptr @.str.1911, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1912, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a431) - call void @finch_str_drop(ptr %a428) - call void @finch_str_drop(ptr %a399) - call void @finch_str_drop(ptr %a396) - call void @finch_str_drop(ptr %a393) - call void @finch.drop.arr_str(ptr %a383) - call void @finch_str_drop(ptr %a379) - call void @finch_str_drop(ptr %a356) - br label %endif2993 -else2992: - %t508 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t509 = load { ptr, i64, i64 }, ptr %t508 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.1913, i64 6, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.from3004 -logic.from3004: - br i1 %t513, label %logic.rhs3005, label %logic.end3006 -logic.rhs3005: - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t516 = load { ptr, i64, i64 }, ptr %t515 - %t517 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t518 = load { ptr, i64, i64 }, ptr %t517 - %t519 = call i64 @finch.gen.findSum(ptr %t514, { ptr, i64, i64 } %t516, { ptr, i64, i64 } %t518) - %t520 = icmp sge i64 %t519, 0 - br label %logic.rend3007 -logic.rend3007: - br label %logic.end3006 -logic.end3006: - %t521 = phi i1 [ false, %logic.from3004 ], [ %t520, %logic.rend3007 ] - br i1 %t521, label %then3008, label %else3009 -then3008: - %t522 = load ptr, ptr %a1 - %t523 = icmp eq ptr %t522, null - br i1 %t523, label %panic3011, label %ok3012 -panic3011: - call void @finch_panic(ptr @.str.1914, i64 1203, ptr @.str.1915) - unreachable -ok3012: - %t524 = getelementptr inbounds %S.gen.Gen, ptr %t522, i32 0, i32 22 - %t525 = load ptr, ptr %a1 - %t526 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t527 = load { ptr, i64, i64 }, ptr %t526 - %t528 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = call i64 @finch.gen.findSum(ptr %t525, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t529) - %t531 = load { ptr, i64, i64 }, ptr %t524 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range3013, label %inrange3014 -range3013: - call void @finch_panic_index(ptr @.str.1916, i64 1203, i64 %t530, i64 %t532) - unreachable -inrange3014: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.gen.SumDef, ptr %t534, i64 %t530 - %t536 = load %S.gen.SumDef, ptr %t535 - store %S.gen.SumDef %t536, ptr %a537 - call void @finch.copy.S_gen_SumDef(ptr %a538, ptr %a537) - %t539 = load %S.gen.SumDef, ptr %a538 - store %S.gen.SumDef %t539, ptr %a540 - %t541 = load ptr, ptr %a1 - %t542 = icmp eq ptr %t541, null - br i1 %t542, label %panic3015, label %ok3016 -panic3015: - call void @finch_panic(ptr @.str.1917, i64 1204, ptr @.str.1918) - unreachable -ok3016: - %t543 = getelementptr inbounds %S.gen.Gen, ptr %t541, i32 0, i32 16 - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t546 = load { ptr, i64, i64 }, ptr %t545 - %t547 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t548 = load { ptr, i64, i64 }, ptr %t547 - %t549 = call i64 @finch.gen.findStruct(ptr %t544, { ptr, i64, i64 } %t546, { ptr, i64, i64 } %t548) - %t550 = load { ptr, i64, i64 }, ptr %t543 - %t551 = extractvalue { ptr, i64, i64 } %t550, 1 - %t552 = icmp uge i64 %t549, %t551 - br i1 %t552, label %range3017, label %inrange3018 -range3017: - call void @finch_panic_index(ptr @.str.1919, i64 1204, i64 %t549, i64 %t551) - unreachable -inrange3018: - %t553 = extractvalue { ptr, i64, i64 } %t550, 0 - %t554 = getelementptr inbounds %S.gen.StructDef, ptr %t553, i64 %t549 - %t555 = load %S.gen.StructDef, ptr %t554 - store %S.gen.StructDef %t555, ptr %a556 - call void @finch.copy.S_gen_StructDef(ptr %a557, ptr %a556) - %t558 = load %S.gen.StructDef, ptr %a557 - store %S.gen.StructDef %t558, ptr %a559 - %t560 = load ptr, ptr %a1 - %t561 = load %S.ast.Type, ptr %a2 - %t562 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t560, %S.ast.Type %t561) - store { ptr, i64, i64 } %t562, ptr %a563 - %t564 = load ptr, ptr %a1 - %t565 = load ptr, ptr %a1 - %t566 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1921, i64 23, 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.1922, i64 21, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t577 = load { ptr, i64, i64 }, ptr %t576 - %t578 = extractvalue { ptr, i64, i64 } %t577, 1 - %t579 = icmp uge i64 0, %t578 - br i1 %t579, label %range3019, label %inrange3020 -range3019: - call void @finch_panic_index(ptr @.str.1923, i64 1206, i64 0, i64 %t578) - unreachable -inrange3020: - %t580 = extractvalue { ptr, i64, i64 } %t577, 0 - %t581 = getelementptr inbounds i64, ptr %t580, i64 0 - %t582 = load i64, ptr %t581 - call void @finch_str_from_int(ptr %a583, i64 %t582) - %t584 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t575, ptr %a586 - store { ptr, i64, i64 } %t584, ptr %a587 - call void @finch_str_concat(ptr %a585, ptr %a586, ptr %a587) - store { ptr, i64, i64 } %t575, ptr %a588 - call void @finch_str_drop(ptr %a588) - store { ptr, i64, i64 } %t584, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a585 - %t591 = call { ptr, i64, i64 } @finch.gen.op(ptr %t565, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = call { ptr, i64, i64 } @finch.gen.load(ptr %t564, { ptr, i64, i64 } { ptr @.str.1920, i64 3, i64 0 }, { ptr, i64, i64 } %t591) - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_drop(ptr %a594) - store { ptr, i64, i64 } %t593, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t596, { ptr, i64, i64 } { ptr @.str.1924, i64 9, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t599, { ptr, i64, i64 } { ptr @.str.1925, i64 8, i64 0 }) - store { ptr, i64, i64 } %t600, ptr %a601 - store { ptr, i64, i64 } zeroinitializer, ptr %a602 - store { ptr, i64, i64 } zeroinitializer, ptr %a603 - %t604 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i32 0, i32 1 - %t606 = load i64, ptr %t605 - store i64 0, ptr %a607 - br label %for.cond3021 -for.cond3021: - %t608 = load i64, ptr %a607 - %t609 = icmp slt i64 %t608, %t606 - br i1 %t609, label %for.body3022, label %for.end3024 -for.body3022: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a603, i32 0, i32 1 - %t611 = load ptr, ptr %a1 - %t612 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t611, { ptr, i64, i64 } { ptr @.str.1926, i64 5, i64 0 }) - %t613 = load i64, ptr %t610 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a603, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a603 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t610 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - %t618 = load i64, ptr %a607 - call void @finch_str_from_int(ptr %a619, i64 %t618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.1927, i64 4, i64 0 }, ptr %a622 - store { ptr, i64, i64 } %t620, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - store { ptr, i64, i64 } %t625, ptr %a627 - store { ptr, i64, i64 } { ptr @.str.1928, i64 9, i64 0 }, ptr %a628 - call void @finch_str_concat(ptr %a626, ptr %a627, ptr %a628) - store { ptr, i64, i64 } %t625, ptr %a629 - call void @finch_str_drop(ptr %a629) - %t630 = load { ptr, i64, i64 }, ptr %a626 - %t631 = load i64, ptr %a607 - %t632 = load { ptr, i64, i64 }, ptr %a603 - %t633 = extractvalue { ptr, i64, i64 } %t632, 1 - %t634 = icmp uge i64 %t631, %t633 - br i1 %t634, label %range3025, label %inrange3026 -range3025: - call void @finch_panic_index(ptr @.str.1929, i64 1213, i64 %t631, i64 %t633) - unreachable -inrange3026: - %t635 = extractvalue { ptr, i64, i64 } %t632, 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t631 - %t637 = load { ptr, i64, i64 }, ptr %t636 - store { ptr, i64, i64 } %t630, ptr %a639 - store { ptr, i64, i64 } %t637, ptr %a640 - call void @finch_str_concat(ptr %a638, ptr %a639, ptr %a640) - store { ptr, i64, i64 } %t630, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = load { ptr, i64, i64 }, ptr %a638 - %t643 = load i64, ptr %t617 - %t644 = add i64 %t643, 1 - call void @finch_arr_reserve(ptr %a602, i64 %t644, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t645 = load ptr, ptr %a602 - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t645, i64 %t643 - store { ptr, i64, i64 } %t642, ptr %t646 - store i64 %t644, ptr %t617 - br label %for.step3023 -for.step3023: - %t647 = load i64, ptr %a607 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a607 - br label %for.cond3021 -for.end3024: - %t649 = load ptr, ptr %a1 - %t650 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.1930, i64 11, i64 0 }, 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.1931, i64 9, i64 0 }, ptr %a657 - call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) - store { ptr, i64, i64 } %t654, ptr %a658 - call void @finch_str_drop(ptr %a658) - %t659 = load { ptr, i64, i64 }, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %a598 - store { ptr, i64, i64 } %t659, ptr %a662 - store { ptr, i64, i64 } %t660, ptr %a663 - call void @finch_str_concat(ptr %a661, ptr %a662, ptr %a663) - store { ptr, i64, i64 } %t659, ptr %a664 - call void @finch_str_drop(ptr %a664) - %t665 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t665, ptr %a667 - store { ptr, i64, i64 } { ptr @.str.1932, i64 3, i64 0 }, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t665, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - %t671 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1933, i64 1, i64 0 }, ptr %a672 - call void @finch_str_join(ptr %a673, ptr %a602, ptr %a672) - %t674 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t670, ptr %a676 - store { ptr, i64, i64 } %t674, ptr %a677 - call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677) - store { ptr, i64, i64 } %t670, ptr %a678 - call void @finch_str_drop(ptr %a678) - store { ptr, i64, i64 } %t674, ptr %a679 - call void @finch_str_drop(ptr %a679) - %t680 = load { ptr, i64, i64 }, ptr %a675 - store { ptr, i64, i64 } %t680, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.1934, i64 2, i64 0 }, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - store { ptr, i64, i64 } %t680, ptr %a684 - call void @finch_str_drop(ptr %a684) - %t685 = load { ptr, i64, i64 }, ptr %a681 - call void @finch.gen.emit(ptr %t649, { ptr, i64, i64 } %t685) - store { ptr, i64, i64 } %t685, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load ptr, ptr %a1 - %t688 = icmp eq ptr %t687, null - br i1 %t688, label %panic3027, label %ok3028 -panic3027: - call void @finch_panic(ptr @.str.1935, i64 1216, ptr @.str.1936) - unreachable -ok3028: - %t689 = getelementptr inbounds %S.gen.Gen, ptr %t687, i32 0, i32 9 - store i1 true, ptr %t689 - %t690 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %t690, i32 0, i32 1 - %t692 = load i64, ptr %t691 - store i64 0, ptr %a693 - br label %for.cond3029 -for.cond3029: - %t694 = load i64, ptr %a693 - %t695 = icmp slt i64 %t694, %t692 - br i1 %t695, label %for.body3030, label %for.end3032 -for.body3030: - %t696 = load ptr, ptr %a1 - %t697 = load i64, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a603 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range3033, label %inrange3034 -range3033: - call void @finch_panic_index(ptr @.str.1937, i64 1218, i64 %t697, i64 %t699) - unreachable -inrange3034: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds { ptr, i64, i64 }, ptr %t701, i64 %t697 - %t703 = load { ptr, i64, i64 }, ptr %t702 - call void @finch.gen.label(ptr %t696, { ptr, i64, i64 } %t703) - %t704 = load ptr, ptr %a1 - %t705 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t706 = load i64, ptr %a693 - %t707 = load { ptr, i64, i64 }, ptr %t705 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 %t706, %t708 - br i1 %t709, label %range3035, label %inrange3036 -range3035: - call void @finch_panic_index(ptr @.str.1939, i64 1219, i64 %t706, i64 %t708) - unreachable -inrange3036: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i64 %t706 - %t712 = load { ptr, i64, i64 }, ptr %t711 - call void @finch.gen.bufText(ptr %t704, { ptr, i64, i64 } { ptr @.str.1938, i64 4, i64 0 }, { ptr, i64, i64 } %t712) - %t713 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t714 = load i64, ptr %a693 - %t715 = load { ptr, i64, i64 }, ptr %t713 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 %t714, %t716 - br i1 %t717, label %range3037, label %inrange3038 -range3037: - call void @finch_panic_index(ptr @.str.1940, i64 1220, i64 %t714, i64 %t716) - unreachable -inrange3038: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds i64, ptr %t718, i64 %t714 - %t720 = load i64, ptr %t719 - %t721 = icmp sgt i64 %t720, 0 - br i1 %t721, label %then3039, label %endif3041 -then3039: - %t722 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t722, { ptr, i64, i64 } { ptr @.str.1941, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1942, i64 1, i64 0 }) - %t723 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t724 = load i64, ptr %a693 - %t725 = load { ptr, i64, i64 }, ptr %t723 - %t726 = extractvalue { ptr, i64, i64 } %t725, 1 - %t727 = icmp uge i64 %t724, %t726 - br i1 %t727, label %range3042, label %inrange3043 -range3042: - call void @finch_panic_index(ptr @.str.1943, i64 1222, i64 %t724, i64 %t726) - unreachable -inrange3043: - %t728 = extractvalue { ptr, i64, i64 } %t725, 0 - %t729 = getelementptr inbounds i64, ptr %t728, i64 %t724 - %t730 = load i64, ptr %t729 - store i64 0, ptr %a731 - br label %for.cond3044 -for.cond3044: - %t732 = load i64, ptr %a731 - %t733 = icmp slt i64 %t732, %t730 - br i1 %t733, label %for.body3045, label %for.end3047 -for.body3045: - %t734 = load i64, ptr %a731 - %t735 = icmp sgt i64 %t734, 0 - br i1 %t735, label %then3048, label %endif3050 -then3048: - %t736 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t736, { ptr, i64, i64 } { ptr @.str.1944, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1945, i64 2, i64 0 }) - br label %endif3050 -endif3050: - %t737 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 4 - %t738 = load i64, ptr %a693 - %t739 = load { ptr, i64, i64 }, ptr %t737 - %t740 = extractvalue { ptr, i64, i64 } %t739, 1 - %t741 = icmp uge i64 %t738, %t740 - br i1 %t741, label %range3051, label %inrange3052 -range3051: - call void @finch_panic_index(ptr @.str.1946, i64 1226, i64 %t738, i64 %t740) - unreachable -inrange3052: - %t742 = extractvalue { ptr, i64, i64 } %t739, 0 - %t743 = getelementptr inbounds i64, ptr %t742, i64 %t738 - %t744 = load i64, ptr %t743 - %t745 = load i64, ptr %a731 - %t746 = add i64 %t744, %t745 - store i64 %t746, ptr %a747 - %t748 = load ptr, ptr %a1 - %t749 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1947, i64 23, i64 0 }, 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.1948, i64 21, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - %t759 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t760 = load i64, ptr %a747 - %t761 = load { ptr, i64, i64 }, ptr %t759 - %t762 = extractvalue { ptr, i64, i64 } %t761, 1 - %t763 = icmp uge i64 %t760, %t762 - br i1 %t763, label %range3053, label %inrange3054 -range3053: - call void @finch_panic_index(ptr @.str.1949, i64 1227, i64 %t760, i64 %t762) - unreachable -inrange3054: - %t764 = extractvalue { ptr, i64, i64 } %t761, 0 - %t765 = getelementptr inbounds i64, ptr %t764, i64 %t760 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t758, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t758, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - %t775 = call { ptr, i64, i64 } @finch.gen.op(ptr %t748, { ptr, i64, i64 } %t774) - store { ptr, i64, i64 } %t774, ptr %a776 - call void @finch_str_drop(ptr %a776) - store { ptr, i64, i64 } %t775, ptr %a777 - %t778 = load ptr, ptr %a1 - %t779 = load ptr, ptr %a1 - %t780 = load ptr, ptr %a1 - %t781 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t782 = load i64, ptr %a747 - %t783 = load { ptr, i64, i64 }, ptr %t781 - %t784 = extractvalue { ptr, i64, i64 } %t783, 1 - %t785 = icmp uge i64 %t782, %t784 - br i1 %t785, label %range3055, label %inrange3056 -range3055: - call void @finch_panic_index(ptr @.str.1951, i64 1228, i64 %t782, i64 %t784) - unreachable -inrange3056: - %t786 = extractvalue { ptr, i64, i64 } %t783, 0 - %t787 = getelementptr inbounds %S.ast.Type, ptr %t786, i64 %t782 - %t788 = load %S.ast.Type, ptr %t787 - %t789 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t780, %S.ast.Type %t788) - %t790 = load { ptr, i64, i64 }, ptr %a777 - %t791 = call { ptr, i64, i64 } @finch.gen.load(ptr %t779, { ptr, i64, i64 } %t789, { ptr, i64, i64 } %t790) - store { ptr, i64, i64 } %t789, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t794 = load i64, ptr %a747 - %t795 = load { ptr, i64, i64 }, ptr %t793 - %t796 = extractvalue { ptr, i64, i64 } %t795, 1 - %t797 = icmp uge i64 %t794, %t796 - br i1 %t797, label %range3057, label %inrange3058 -range3057: - call void @finch_panic_index(ptr @.str.1952, i64 1228, i64 %t794, i64 %t796) - unreachable -inrange3058: - %t798 = extractvalue { ptr, i64, i64 } %t795, 0 - %t799 = getelementptr inbounds %S.ast.Type, ptr %t798, i64 %t794 - %t800 = load %S.ast.Type, ptr %t799 - call void @finch.gen.emitFormat(ptr %t778, { ptr, i64, i64 } { ptr @.str.1950, i64 4, i64 0 }, { ptr, i64, i64 } %t791, %S.ast.Type %t800, i1 true) - store { ptr, i64, i64 } %t791, ptr %a801 - call void @finch_str_drop(ptr %a801) - call void @finch_str_drop(ptr %a777) - br label %for.step3046 -for.step3046: - %t802 = load i64, ptr %a731 - %t803 = add i64 %t802, 1 - store i64 %t803, ptr %a731 - br label %for.cond3044 -for.end3047: - %t804 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t804, { ptr, i64, i64 } { ptr @.str.1953, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1954, i64 1, i64 0 }) - br label %endif3041 -endif3041: - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t805, { ptr, i64, i64 } %t806) - br label %for.step3031 -for.step3031: - %t807 = load i64, ptr %a693 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a693 - br label %for.cond3029 -for.end3032: - %t809 = load ptr, ptr %a1 - %t810 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.label(ptr %t809, { ptr, i64, i64 } %t810) - %t811 = load ptr, ptr %a1 - %t812 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 1 - %t813 = load { ptr, i64, i64 }, ptr %t812 - store { ptr, i64, i64 } %t813, ptr %a815 - store { ptr, i64, i64 } { ptr @.str.1956, i64 3, i64 0 }, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - call void @finch.gen.bufText(ptr %t811, { ptr, i64, i64 } { ptr @.str.1955, i64 4, i64 0 }, { ptr, i64, i64 } %t817) - store { ptr, i64, i64 } %t817, ptr %a818 - call void @finch_str_drop(ptr %a818) - %t819 = load ptr, ptr %a1 - %t820 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t819, { ptr, i64, i64 } %t820) - %t821 = load ptr, ptr %a1 - %t822 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.label(ptr %t821, { ptr, i64, i64 } %t822) - call void @finch.drop.arr_str(ptr %a603) - call void @finch.drop.arr_str(ptr %a602) - call void @finch_str_drop(ptr %a601) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a563) - call void @finch.drop.S_gen_StructDef(ptr %a559) - call void @finch.drop.S_gen_SumDef(ptr %a540) - br label %endif3010 -else3009: - %t823 = load ptr, ptr %a1 - %t824 = icmp eq ptr %t823, null - br i1 %t824, label %panic3059, label %ok3060 -panic3059: - call void @finch_panic(ptr @.str.1957, i64 1239, ptr @.str.1958) - unreachable -ok3060: - %t825 = getelementptr inbounds %S.gen.Gen, ptr %t823, i32 0, i32 16 - %t826 = load ptr, ptr %a1 - %t827 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t828 = load { ptr, i64, i64 }, ptr %t827 - %t829 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t830 = load { ptr, i64, i64 }, ptr %t829 - %t831 = call i64 @finch.gen.findStruct(ptr %t826, { ptr, i64, i64 } %t828, { ptr, i64, i64 } %t830) - %t832 = load { ptr, i64, i64 }, ptr %t825 - %t833 = extractvalue { ptr, i64, i64 } %t832, 1 - %t834 = icmp uge i64 %t831, %t833 - br i1 %t834, label %range3061, label %inrange3062 -range3061: - call void @finch_panic_index(ptr @.str.1959, i64 1239, i64 %t831, i64 %t833) - unreachable -inrange3062: - %t835 = extractvalue { ptr, i64, i64 } %t832, 0 - %t836 = getelementptr inbounds %S.gen.StructDef, ptr %t835, i64 %t831 - %t837 = load %S.gen.StructDef, ptr %t836 - store %S.gen.StructDef %t837, ptr %a838 - call void @finch.copy.S_gen_StructDef(ptr %a839, ptr %a838) - %t840 = load %S.gen.StructDef, ptr %a839 - store %S.gen.StructDef %t840, ptr %a841 - %t842 = load ptr, ptr %a1 - %t843 = load %S.ast.Type, ptr %a2 - %t844 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t842, %S.ast.Type %t843) - store { ptr, i64, i64 } %t844, ptr %a845 - %t846 = load ptr, ptr %a1 - %t847 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 1 - %t848 = load { ptr, i64, i64 }, ptr %t847 - store { ptr, i64, i64 } %t848, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.1961, i64 1, i64 0 }, ptr %a851 - call void @finch_str_concat(ptr %a849, ptr %a850, ptr %a851) - %t852 = load { ptr, i64, i64 }, ptr %a849 - call void @finch.gen.bufText(ptr %t846, { ptr, i64, i64 } { ptr @.str.1960, i64 4, i64 0 }, { ptr, i64, i64 } %t852) - store { ptr, i64, i64 } %t852, ptr %a853 - call void @finch_str_drop(ptr %a853) - %t854 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i32 0, i32 1 - %t856 = load i64, ptr %t855 - store i64 0, ptr %a857 - br label %for.cond3063 -for.cond3063: - %t858 = load i64, ptr %a857 - %t859 = icmp slt i64 %t858, %t856 - br i1 %t859, label %for.body3064, label %for.end3066 -for.body3064: - store { ptr, i64, i64 } { ptr @.str.1962, i64 2, i64 0 }, ptr %a860 - %t861 = load i64, ptr %a857 - %t862 = icmp eq i64 %t861, 0 - br i1 %t862, label %then3067, label %endif3069 -then3067: - %t863 = load { ptr, i64, i64 }, ptr %a860 - store { ptr, i64, i64 } { ptr @.str.1963, i64 0, i64 0 }, ptr %a860 - store { ptr, i64, i64 } %t863, ptr %a864 - call void @finch_str_drop(ptr %a864) - br label %endif3069 -endif3069: - %t865 = load ptr, ptr %a1 - %t866 = load { ptr, i64, i64 }, ptr %a860 - %t867 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 11 - %t868 = load i64, ptr %a857 - %t869 = load { ptr, i64, i64 }, ptr %t867 - %t870 = extractvalue { ptr, i64, i64 } %t869, 1 - %t871 = icmp uge i64 %t868, %t870 - br i1 %t871, label %range3070, label %inrange3071 -range3070: - call void @finch_panic_index(ptr @.str.1965, i64 1247, i64 %t868, i64 %t870) - unreachable -inrange3071: - %t872 = extractvalue { ptr, i64, i64 } %t869, 0 - %t873 = getelementptr inbounds { ptr, i64, i64 }, ptr %t872, i64 %t868 - %t874 = load { ptr, i64, i64 }, ptr %t873 - store { ptr, i64, i64 } %t866, ptr %a876 - store { ptr, i64, i64 } %t874, ptr %a877 - call void @finch_str_concat(ptr %a875, ptr %a876, ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a875 - store { ptr, i64, i64 } %t878, ptr %a880 - store { ptr, i64, i64 } { ptr @.str.1966, i64 2, i64 0 }, ptr %a881 - call void @finch_str_concat(ptr %a879, ptr %a880, ptr %a881) - store { ptr, i64, i64 } %t878, ptr %a882 - call void @finch_str_drop(ptr %a882) - %t883 = load { ptr, i64, i64 }, ptr %a879 - call void @finch.gen.bufText(ptr %t865, { ptr, i64, i64 } { ptr @.str.1964, i64 4, i64 0 }, { ptr, i64, i64 } %t883) - store { ptr, i64, i64 } %t883, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load ptr, ptr %a1 - %t886 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } { ptr @.str.1967, i64 23, i64 0 }, ptr %a888 - store { ptr, i64, i64 } %t886, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - %t890 = load { ptr, i64, i64 }, ptr %a887 - store { ptr, i64, i64 } %t890, ptr %a892 - store { ptr, i64, i64 } { ptr @.str.1968, i64 21, i64 0 }, ptr %a893 - call void @finch_str_concat(ptr %a891, ptr %a892, ptr %a893) - store { ptr, i64, i64 } %t890, ptr %a894 - call void @finch_str_drop(ptr %a894) - %t895 = load { ptr, i64, i64 }, ptr %a891 - %t896 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 3 - %t897 = load i64, ptr %a857 - %t898 = load { ptr, i64, i64 }, ptr %t896 - %t899 = extractvalue { ptr, i64, i64 } %t898, 1 - %t900 = icmp uge i64 %t897, %t899 - br i1 %t900, label %range3072, label %inrange3073 -range3072: - call void @finch_panic_index(ptr @.str.1969, i64 1248, i64 %t897, i64 %t899) - unreachable -inrange3073: - %t901 = extractvalue { ptr, i64, i64 } %t898, 0 - %t902 = getelementptr inbounds i64, ptr %t901, i64 %t897 - %t903 = load i64, ptr %t902 - call void @finch_str_from_int(ptr %a904, i64 %t903) - %t905 = load { ptr, i64, i64 }, ptr %a904 - store { ptr, i64, i64 } %t895, ptr %a907 - store { ptr, i64, i64 } %t905, ptr %a908 - call void @finch_str_concat(ptr %a906, ptr %a907, ptr %a908) - store { ptr, i64, i64 } %t895, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t905, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load { ptr, i64, i64 }, ptr %a906 - %t912 = call { ptr, i64, i64 } @finch.gen.op(ptr %t885, { ptr, i64, i64 } %t911) - store { ptr, i64, i64 } %t911, ptr %a913 - call void @finch_str_drop(ptr %a913) - store { ptr, i64, i64 } %t912, ptr %a914 - %t915 = load ptr, ptr %a1 - %t916 = load ptr, ptr %a1 - %t917 = load ptr, ptr %a1 - %t918 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t919 = load i64, ptr %a857 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3074, label %inrange3075 -range3074: - call void @finch_panic_index(ptr @.str.1971, i64 1249, i64 %t919, i64 %t921) - unreachable -inrange3075: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.ast.Type, ptr %t923, i64 %t919 - %t925 = load %S.ast.Type, ptr %t924 - %t926 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t917, %S.ast.Type %t925) - %t927 = load { ptr, i64, i64 }, ptr %a914 - %t928 = call { ptr, i64, i64 } @finch.gen.load(ptr %t916, { ptr, i64, i64 } %t926, { ptr, i64, i64 } %t927) - store { ptr, i64, i64 } %t926, ptr %a929 - call void @finch_str_drop(ptr %a929) - %t930 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t931 = load i64, ptr %a857 - %t932 = load { ptr, i64, i64 }, ptr %t930 - %t933 = extractvalue { ptr, i64, i64 } %t932, 1 - %t934 = icmp uge i64 %t931, %t933 - br i1 %t934, label %range3076, label %inrange3077 -range3076: - call void @finch_panic_index(ptr @.str.1972, i64 1249, i64 %t931, i64 %t933) - unreachable -inrange3077: - %t935 = extractvalue { ptr, i64, i64 } %t932, 0 - %t936 = getelementptr inbounds %S.ast.Type, ptr %t935, i64 %t931 - %t937 = load %S.ast.Type, ptr %t936 - call void @finch.gen.emitFormat(ptr %t915, { ptr, i64, i64 } { ptr @.str.1970, i64 4, i64 0 }, { ptr, i64, i64 } %t928, %S.ast.Type %t937, i1 true) - store { ptr, i64, i64 } %t928, ptr %a938 - call void @finch_str_drop(ptr %a938) - call void @finch_str_drop(ptr %a914) - call void @finch_str_drop(ptr %a860) - br label %for.step3065 -for.step3065: - %t939 = load i64, ptr %a857 - %t940 = add i64 %t939, 1 - store i64 %t940, ptr %a857 - br label %for.cond3063 -for.end3066: - %t941 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t941, { ptr, i64, i64 } { ptr @.str.1973, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1974, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a845) - call void @finch.drop.S_gen_StructDef(ptr %a841) - br label %endif3010 -endif3010: - br label %endif2993 -endif2993: - br label %endif2968 -endif2968: - br label %endif2959 -endif2959: - %t942 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t942, { ptr, i64, i64 } { ptr @.str.1975, i64 8, i64 0 }) - %t943 = load ptr, ptr %a1 - %t944 = load %S.gen.Saved, ptr %a32 - %t945 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1976, i64 21, i64 0 }, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t949, ptr %a951 - store { ptr, i64, i64 } { ptr @.str.1977, i64 18, i64 0 }, ptr %a952 - call void @finch_str_concat(ptr %a950, ptr %a951, ptr %a952) - store { ptr, i64, i64 } %t949, ptr %a953 - call void @finch_str_drop(ptr %a953) - %t954 = load { ptr, i64, i64 }, ptr %a950 - call void @finch.gen.endHelper(ptr %t943, %S.gen.Saved %t944, { ptr, i64, i64 } %t954) - store { ptr, i64, i64 } %t954, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t956 -} - -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3078, label %endif3080 -then3078: - %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 -endif3080: - %t18 = load i64, ptr %a10 - %t19 = load i64, ptr %a7 - %t20 = icmp slt i64 %t18, %t19 - br i1 %t20, label %then3081, label %endif3083 -then3081: - %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.1978, i64 6, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1979, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1980, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t46, %S.ast.Type %t47) - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a56 - call void @finch_str_drop(ptr %a56) - ret { ptr, i64, i64 } %t55 -endif3083: - %t57 = load %S.ast.Type, ptr %a3 - %t58 = call i1 @finch.gen.isSigned(%S.ast.Type %t57) - br i1 %t58, label %then3084, label %endif3086 -then3084: - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load %S.ast.Type, ptr %a3 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) - store { ptr, i64, i64 } { ptr @.str.1981, i64 5, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.1982, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.1983, i64 4, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t78, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Type, ptr %a4 - %t86 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t84, %S.ast.Type %t85) - store { ptr, i64, i64 } %t83, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t83, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a94 - call void @finch_str_drop(ptr %a94) - ret { ptr, i64, i64 } %t93 -endif3086: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a3 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - store { ptr, i64, i64 } { ptr @.str.1984, i64 5, i64 0 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1985, i64 1, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1986, i64 4, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load ptr, ptr %a1 - %t121 = load %S.ast.Type, ptr %a4 - %t122 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t120, %S.ast.Type %t121) - store { ptr, i64, i64 } %t119, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t119, ptr %a126 - call void @finch_str_drop(ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a123 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - ret { ptr, i64, i64 } %t129 -} - -define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3087, label %endif3089 -then3087: - %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 -endif3089: - %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 %then3090, label %endif3092 -then3090: - %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.1987, i64 6, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1988, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.1989, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.ast.Type, ptr %a4 - %t49 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t47, %S.ast.Type %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - %t56 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - ret { ptr, i64, i64 } %t56 -endif3092: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a3 - %t61 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1990, i64 8, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1991, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1992, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = load %S.ast.Type, ptr %a4 - %t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84) - store { ptr, i64, i64 } %t82, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t82, ptr %a89 - call void @finch_str_drop(ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a86 - %t92 = call { ptr, i64, i64 } @finch.gen.op(ptr %t58, { ptr, i64, i64 } %t91) - store { ptr, i64, i64 } %t91, ptr %a93 - call void @finch_str_drop(ptr %a93) - ret { ptr, i64, i64 } %t92 -} - -define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.isSigned(%S.ast.Type %t5) - br i1 %t6, label %then3093, label %endif3095 -then3093: - %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.1993, i64 7, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1994, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1995, i64 4, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = load %S.ast.Type, ptr %a4 - %t34 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t32, %S.ast.Type %t33) - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret { ptr, i64, i64 } %t41 -endif3095: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Type, ptr %a3 - %t46 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t44, %S.ast.Type %t45) - store { ptr, i64, i64 } { ptr @.str.1996, i64 7, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1997, i64 1, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t56, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1998, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - ret { ptr, i64, i64 } %t77 -} - -define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) { -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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a175 = alloca %S.ast.Type, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a203 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.ast.Type, align 16 - %a233 = alloca %S.ast.Type, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca %S.gen.Val, align 16 - %a348 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3096, label %endif3098 -then3096: - %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 -endif3098: - %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.1999, 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.from3099 -logic.from3099: - br i1 %t20, label %logic.rhs3100, label %logic.end3101 -logic.rhs3100: - %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.2000, 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.rend3102 -logic.rend3102: - br label %logic.end3101 -logic.end3101: - %t27 = phi i1 [ false, %logic.from3099 ], [ %t26, %logic.rend3102 ] - br i1 %t27, label %then3103, label %endif3105 -then3103: - %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.2001, 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 -endif3105: - %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.2002, 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.from3106 -logic.from3106: - br i1 %t40, label %logic.rhs3107, label %logic.end3108 -logic.rhs3107: - %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.2003, 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.rend3109 -logic.rend3109: - br label %logic.end3108 -logic.end3108: - %t47 = phi i1 [ false, %logic.from3106 ], [ %t46, %logic.rend3109 ] - br label %logic.from3110 -logic.from3110: - br i1 %t47, label %logic.rhs3111, label %logic.end3112 -logic.rhs3111: - %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.from3113 -logic.from3113: - br i1 %t52, label %logic.end3115, label %logic.rhs3114 -logic.rhs3114: - %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.rend3116 -logic.rend3116: - br label %logic.end3115 -logic.end3115: - %t57 = phi i1 [ true, %logic.from3113 ], [ %t56, %logic.rend3116 ] - br label %logic.rend3117 -logic.rend3117: - br label %logic.end3112 -logic.end3112: - %t58 = phi i1 [ false, %logic.from3110 ], [ %t57, %logic.rend3117 ] - br i1 %t58, label %then3118, label %endif3120 -then3118: - %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 -endif3120: - %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.from3121 -logic.from3121: - br i1 %t72, label %logic.rhs3122, label %logic.end3123 -logic.rhs3122: - %t73 = load %S.ast.Type, ptr %a3 - %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) - br label %logic.rend3124 -logic.rend3124: - br label %logic.end3123 -logic.end3123: - %t75 = phi i1 [ false, %logic.from3121 ], [ %t74, %logic.rend3124 ] - br i1 %t75, label %then3125, label %endif3127 -then3125: - %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t77 = load i1, ptr %t76 - br label %logic.from3128 -logic.from3128: - br i1 %t77, label %logic.rhs3129, label %logic.end3130 -logic.rhs3129: - %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.rend3131 -logic.rend3131: - br label %logic.end3130 -logic.end3130: - %t84 = phi i1 [ false, %logic.from3128 ], [ %t83, %logic.rend3131 ] - br i1 %t84, label %then3132, label %endif3134 -then3132: - %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 -endif3134: - %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 %then3135, label %endif3137 -then3135: - %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 -endif3137: - %t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t115 = load i1, ptr %t114 - br i1 %t115, label %then3138, label %endif3140 -then3138: - %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.2004, 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.2005, i64 16, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load %S.ast.Type, ptr %a3 - %t130 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t136) - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif3140 -endif3140: - br label %endif3127 -endif3127: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t139 = load %S.ast.Type, ptr %t138 - %t140 = call i1 @finch.gen.isInt(%S.ast.Type %t139) - br label %logic.from3141 -logic.from3141: - br i1 %t140, label %logic.rhs3142, label %logic.end3143 -logic.rhs3142: - %t141 = load %S.ast.Type, ptr %a3 - %t142 = call i1 @finch.gen.isFloat(%S.ast.Type %t141) - br label %logic.rend3144 -logic.rend3144: - br label %logic.end3143 -logic.end3143: - %t143 = phi i1 [ false, %logic.from3141 ], [ %t142, %logic.rend3144 ] - br i1 %t143, label %then3145, label %endif3147 -then3145: - %t144 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t145 = load i1, ptr %t144 - br label %logic.from3148 -logic.from3148: - br i1 %t145, label %logic.rhs3149, label %logic.end3150 -logic.rhs3149: - %t146 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.2006, i64 5, i64 0 }, ptr %a149 - %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) - %t151 = icmp ne i32 %t150, 0 - br label %logic.rend3151 -logic.rend3151: - br label %logic.end3150 -logic.end3150: - %t152 = phi i1 [ false, %logic.from3148 ], [ %t151, %logic.rend3151 ] - br i1 %t152, label %then3152, label %endif3154 -then3152: - %t153 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t154 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.2007, i64 2, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t158, 0 - %t160 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - %t164 = insertvalue %S.gen.Val %t159, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 3 - ret %S.gen.Val %t165 -endif3154: - %t166 = load ptr, ptr %a1 - %t167 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = load %S.ast.Type, ptr %a3 - %t172 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t166, { ptr, i64, i64 } %t168, %S.ast.Type %t170, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t174, ptr %a175 - call void @finch.copy.S_ast_Type(ptr %a176, ptr %a175) - %t177 = load %S.ast.Type, ptr %a176 - %t178 = insertvalue %S.gen.Val %t173, %S.ast.Type %t177, 1 - ret %S.gen.Val %t178 -endif3147: - %t179 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i32 0, i32 0 - %t181 = load { ptr, i64, i64 }, ptr %t180 - store { ptr, i64, i64 } %t181, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.2008, i64 3, i64 0 }, ptr %a183 - %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) - %t185 = icmp ne i32 %t184, 0 - br label %logic.from3155 -logic.from3155: - br i1 %t185, label %logic.rhs3156, label %logic.end3157 -logic.rhs3156: - %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t187, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.2009, i64 5, i64 0 }, ptr %a189 - %t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189) - %t191 = icmp ne i32 %t190, 0 - br label %logic.rend3158 -logic.rend3158: - br label %logic.end3157 -logic.end3157: - %t192 = phi i1 [ false, %logic.from3155 ], [ %t191, %logic.rend3158 ] - br i1 %t192, label %then3159, label %endif3161 -then3159: - %t193 = load ptr, ptr %a1 - %t194 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t197 = load %S.ast.Type, ptr %t196 - %t198 = load %S.ast.Type, ptr %a3 - %t199 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t193, { ptr, i64, i64 } %t195, %S.ast.Type %t197, %S.ast.Type %t198) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 - %t201 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t201, ptr %a202 - call void @finch.copy.S_ast_Type(ptr %a203, ptr %a202) - %t204 = load %S.ast.Type, ptr %a203 - %t205 = insertvalue %S.gen.Val %t200, %S.ast.Type %t204, 1 - ret %S.gen.Val %t205 -endif3161: - %t206 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t207 = getelementptr inbounds %S.ast.Type, ptr %t206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.2010, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br label %logic.from3162 -logic.from3162: - br i1 %t212, label %logic.rhs3163, label %logic.end3164 -logic.rhs3163: - %t213 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } { ptr @.str.2011, i64 3, i64 0 }, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br label %logic.rend3165 -logic.rend3165: - br label %logic.end3164 -logic.end3164: - %t219 = phi i1 [ false, %logic.from3162 ], [ %t218, %logic.rend3165 ] - br label %logic.from3166 -logic.from3166: - br i1 %t219, label %logic.rhs3167, label %logic.end3168 -logic.rhs3167: - %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t221 = load i1, ptr %t220 - br label %logic.rend3169 -logic.rend3169: - br label %logic.end3168 -logic.end3168: - %t222 = phi i1 [ false, %logic.from3166 ], [ %t221, %logic.rend3169 ] - br i1 %t222, label %then3170, label %endif3172 -then3170: - %t223 = load ptr, ptr %a1 - %t224 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t227 = load %S.ast.Type, ptr %t226 - %t228 = load %S.ast.Type, ptr %a3 - %t229 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t223, { ptr, i64, i64 } %t225, %S.ast.Type %t227, %S.ast.Type %t228) - %t230 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t231 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t231, ptr %a232 - call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) - %t234 = load %S.ast.Type, ptr %a233 - %t235 = insertvalue %S.gen.Val %t230, %S.ast.Type %t234, 1 - ret %S.gen.Val %t235 -endif3172: - %t236 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.2012, i64 9, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a237 - %t241 = load %S.ast.Type, ptr %a3 - %t242 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t241) - store { ptr, i64, i64 } %t240, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t240, ptr %a246 - call void @finch_str_drop(ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2013, i64 14, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t253, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t253, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a263 - %t264 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t265 = load %S.ast.Type, ptr %t264 - %t266 = call i1 @finch.gen.isNumber(%S.ast.Type %t265) - br label %logic.from3173 -logic.from3173: - br i1 %t266, label %logic.rhs3174, label %logic.end3175 -logic.rhs3174: - %t267 = load %S.ast.Type, ptr %a3 - %t268 = call i1 @finch.gen.isNumber(%S.ast.Type %t267) - br label %logic.rend3176 -logic.rend3176: - br label %logic.end3175 -logic.end3175: - %t269 = phi i1 [ false, %logic.from3173 ], [ %t268, %logic.rend3176 ] - br i1 %t269, label %then3177, label %endif3179 -then3177: - %t270 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t270, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.2014, i64 6, i64 0 }, ptr %a273 - call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a271 - %t275 = load %S.ast.Type, ptr %a3 - %t276 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t275) - store { ptr, i64, i64 } %t274, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t274, ptr %a280 - call void @finch_str_drop(ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.2015, i64 16, i64 0 }, ptr %a285 - call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) - store { ptr, i64, i64 } %t282, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a283 - %t288 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t287, ptr %a263 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t291 = load %S.ast.Type, ptr %t290 - %t292 = call i1 @finch.gen.isFloat(%S.ast.Type %t291) - br label %logic.from3180 -logic.from3180: - br i1 %t292, label %logic.rhs3181, label %logic.end3182 -logic.rhs3181: - %t293 = load %S.ast.Type, ptr %a3 - %t294 = call i1 @finch.gen.isInt(%S.ast.Type %t293) - br label %logic.rend3183 -logic.rend3183: - br label %logic.end3182 -logic.end3182: - %t295 = phi i1 [ false, %logic.from3180 ], [ %t294, %logic.rend3183 ] - br i1 %t295, label %then3184, label %endif3186 -then3184: - %t296 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.2016, i64 26, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t300, ptr %a263 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif3186 -endif3186: - %t303 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.2017, i64 1, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t307, ptr %a263 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif3179 -endif3179: - %t310 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.2018, i64 3, i64 0 }, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br label %logic.from3187 -logic.from3187: - br i1 %t315, label %logic.rhs3188, label %logic.end3189 -logic.rhs3188: - %t316 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t317 = load %S.ast.Type, ptr %t316 - %t318 = call i1 @finch.gen.isNumber(%S.ast.Type %t317) - br label %logic.from3190 -logic.from3190: - br i1 %t318, label %logic.end3192, label %logic.rhs3191 -logic.rhs3191: - %t319 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i32 0, i32 0 - %t321 = load { ptr, i64, i64 }, ptr %t320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.2019, i64 4, i64 0 }, ptr %a323 - %t324 = call i32 @finch_str_eq(ptr %a322, ptr %a323) - %t325 = icmp ne i32 %t324, 0 - br label %logic.rend3193 -logic.rend3193: - br label %logic.end3192 -logic.end3192: - %t326 = phi i1 [ true, %logic.from3190 ], [ %t325, %logic.rend3193 ] - br label %logic.from3194 -logic.from3194: - br i1 %t326, label %logic.end3196, label %logic.rhs3195 -logic.rhs3195: - %t327 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Type, ptr %t327, i32 0, i32 0 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t329, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.2020, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_eq(ptr %a330, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.rend3197 -logic.rend3197: - br label %logic.end3196 -logic.end3196: - %t334 = phi i1 [ true, %logic.from3194 ], [ %t333, %logic.rend3197 ] - br label %logic.rend3198 -logic.rend3198: - br label %logic.end3189 -logic.end3189: - %t335 = phi i1 [ false, %logic.from3187 ], [ %t334, %logic.rend3198 ] - br i1 %t335, label %then3199, label %endif3201 -then3199: - %t336 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.2021, i64 34, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a337 - %t341 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t340, ptr %a263 - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - br label %endif3201 -endif3201: - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Node, ptr %a4 - %t345 = load { ptr, i64, i64 }, ptr %a263 - call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t345) - %t346 = load %S.gen.Val, ptr %a2 - store %S.gen.Val %t346, ptr %a347 - call void @finch.copy.S_gen_Val(ptr %a348, ptr %a347) - %t349 = load %S.gen.Val, ptr %a348 - call void @finch_str_drop(ptr %a263) - ret %S.gen.Val %t349 -} - -define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic3202, label %ok3203 -panic3202: - call void @finch_panic(ptr @.str.2022, i64 1346, ptr @.str.2023) - unreachable -ok3203: - %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.cond3204 -for.cond3204: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body3205, label %for.end3207 -for.body3205: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic3208, label %ok3209 -panic3208: - call void @finch_panic(ptr @.str.2024, i64 1347, ptr @.str.2025) - unreachable -ok3209: - %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 %panic3210, label %ok3211 -panic3210: - call void @finch_panic(ptr @.str.2026, i64 1348, ptr @.str.2027) - unreachable -ok3211: - %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 %range3212, label %inrange3213 -range3212: - call void @finch_panic_index(ptr @.str.2028, i64 1348, i64 %t23, i64 %t25) - unreachable -inrange3213: - %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.cond3214 -for.cond3214: - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, %t31 - br i1 %t34, label %for.body3215, label %for.end3217 -for.body3215: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic3218, label %ok3219 -panic3218: - call void @finch_panic(ptr @.str.2029, i64 1349, ptr @.str.2030) - unreachable -ok3219: - %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 %range3220, label %inrange3221 -range3220: - call void @finch_panic_index(ptr @.str.2031, i64 1349, i64 %t38, i64 %t40) - unreachable -inrange3221: - %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 %range3222, label %inrange3223 -range3222: - call void @finch_panic_index(ptr @.str.2032, i64 1349, i64 %t45, i64 %t47) - unreachable -inrange3223: - %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 %then3224, label %endif3226 -then3224: - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic3227, label %ok3228 -panic3227: - call void @finch_panic(ptr @.str.2033, i64 1350, ptr @.str.2034) - unreachable -ok3228: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 44 - %t61 = load i1, ptr %t60 - br label %logic.from3229 -logic.from3229: - br i1 %t61, label %logic.rhs3230, label %logic.end3231 -logic.rhs3230: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3232, label %ok3233 -panic3232: - call void @finch_panic(ptr @.str.2035, i64 1350, ptr @.str.2036) - unreachable -ok3233: - %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 %range3234, label %inrange3235 -range3234: - call void @finch_panic_index(ptr @.str.2037, i64 1350, i64 %t65, i64 %t67) - unreachable -inrange3235: - %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 %range3236, label %inrange3237 -range3236: - call void @finch_panic_index(ptr @.str.2038, i64 1350, i64 %t72, i64 %t74) - unreachable -inrange3237: - %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 %panic3238, label %ok3239 -panic3238: - call void @finch_panic(ptr @.str.2039, i64 1350, ptr @.str.2040) - unreachable -ok3239: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 45 - %t83 = load i64, ptr %t82 - %t84 = icmp sge i64 %t79, %t83 - br label %logic.rend3240 -logic.rend3240: - br label %logic.end3231 -logic.end3231: - %t85 = phi i1 [ false, %logic.from3229 ], [ %t84, %logic.rend3240 ] - br i1 %t85, label %then3241, label %endif3243 -then3241: - br label %for.step3216 -endif3243: - %t86 = load i64, ptr %a19 - %t87 = mul i64 %t86, 100000 - %t88 = load i64, ptr %a32 - %t89 = add i64 %t87, %t88 - ret i64 %t89 -endif3226: - br label %for.step3216 -for.step3216: - %t90 = load i64, ptr %a32 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a32 - br label %for.cond3214 -for.end3217: - br label %for.step3206 -for.step3206: - %t92 = load i64, ptr %a8 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a8 - br label %for.cond3204 -for.end3207: - 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 7 - %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 7 - 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 %panic3244, label %ok3245 -panic3244: - call void @finch_panic(ptr @.str.2041, i64 1361, ptr @.str.2042) - unreachable -ok3245: - %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 %range3246, label %inrange3247 -range3246: - call void @finch_panic_index(ptr @.str.2043, i64 1361, i64 %t7, i64 %t9) - unreachable -inrange3247: - %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 %range3248, label %inrange3249 -range3248: - call void @finch_panic_index(ptr @.str.2044, i64 1361, i64 %t15, i64 %t17) - unreachable -inrange3249: - %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 %panic3250, label %ok3251 -panic3250: - call void @finch_panic(ptr @.str.2045, i64 1365, ptr @.str.2046) - unreachable -ok3251: - %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.cond3252 -for.cond3252: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body3253, label %for.end3255 -for.body3253: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic3256, label %ok3257 -panic3256: - call void @finch_panic(ptr @.str.2047, i64 1366, ptr @.str.2048) - unreachable -ok3257: - %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 %range3258, label %inrange3259 -range3258: - call void @finch_panic_index(ptr @.str.2049, i64 1366, i64 %t15, i64 %t17) - unreachable -inrange3259: - %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.from3260 -logic.from3260: - br i1 %t27, label %logic.rhs3261, label %logic.end3262 -logic.rhs3261: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic3263, label %ok3264 -panic3263: - call void @finch_panic(ptr @.str.2050, i64 1366, ptr @.str.2051) - unreachable -ok3264: - %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 %range3265, label %inrange3266 -range3265: - call void @finch_panic_index(ptr @.str.2052, i64 1366, i64 %t31, i64 %t33) - unreachable -inrange3266: - %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.rend3267 -logic.rend3267: - br label %logic.end3262 -logic.end3262: - %t44 = phi i1 [ false, %logic.from3260 ], [ %t43, %logic.rend3267 ] - br label %logic.from3268 -logic.from3268: - br i1 %t44, label %logic.rhs3269, label %logic.end3270 -logic.rhs3269: - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic3271, label %ok3272 -panic3271: - call void @finch_panic(ptr @.str.2053, i64 1366, ptr @.str.2054) - unreachable -ok3272: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 15 - %t48 = load i64, ptr %a9 - %t49 = load { ptr, i64, i64 }, ptr %t47 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range3273, label %inrange3274 -range3273: - call void @finch_panic_index(ptr @.str.2055, i64 1366, i64 %t48, i64 %t50) - unreachable -inrange3274: - %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.rend3275 -logic.rend3275: - br label %logic.end3270 -logic.end3270: - %t58 = phi i1 [ false, %logic.from3268 ], [ %t57, %logic.rend3275 ] - br i1 %t58, label %then3276, label %endif3278 -then3276: - %t59 = load i64, ptr %a9 - ret i64 %t59 -endif3278: - br label %for.step3254 -for.step3254: - %t60 = load i64, ptr %a9 - %t61 = add i64 %t60, 1 - store i64 %t61, ptr %a9 - br label %for.cond3252 -for.end3255: - 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 %panic3279, label %ok3280 -panic3279: - call void @finch_panic(ptr @.str.2056, i64 1374, ptr @.str.2057) - unreachable -ok3280: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 15 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 - %t9 = load i64, ptr %t8 - store i64 0, ptr %a10 - br label %for.cond3281 -for.cond3281: - %t11 = load i64, ptr %a10 - %t12 = icmp slt i64 %t11, %t9 - br i1 %t12, label %for.body3282, label %for.end3284 -for.body3282: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic3285, label %ok3286 -panic3285: - call void @finch_panic(ptr @.str.2058, i64 1375, ptr @.str.2059) - unreachable -ok3286: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 15 - %t16 = load i64, ptr %a10 - %t17 = load { ptr, i64, i64 }, ptr %t15 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range3287, label %inrange3288 -range3287: - call void @finch_panic_index(ptr @.str.2060, i64 1375, i64 %t16, i64 %t18) - unreachable -inrange3288: - %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.from3289 -logic.from3289: - br i1 %t28, label %logic.rhs3290, label %logic.end3291 -logic.rhs3290: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3292, label %ok3293 -panic3292: - call void @finch_panic(ptr @.str.2061, i64 1375, ptr @.str.2062) - unreachable -ok3293: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 - %t32 = load i64, ptr %a10 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3294, label %inrange3295 -range3294: - call void @finch_panic_index(ptr @.str.2063, i64 1375, i64 %t32, i64 %t34) - unreachable -inrange3295: - %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.rend3296 -logic.rend3296: - br label %logic.end3291 -logic.end3291: - %t45 = phi i1 [ false, %logic.from3289 ], [ %t44, %logic.rend3296 ] - br label %logic.from3297 -logic.from3297: - br i1 %t45, label %logic.rhs3298, label %logic.end3299 -logic.rhs3298: - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic3300, label %ok3301 -panic3300: - call void @finch_panic(ptr @.str.2064, i64 1375, ptr @.str.2065) - unreachable -ok3301: - %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 15 - %t49 = load i64, ptr %a10 - %t50 = load { ptr, i64, i64 }, ptr %t48 - %t51 = extractvalue { ptr, i64, i64 } %t50, 1 - %t52 = icmp uge i64 %t49, %t51 - br i1 %t52, label %range3302, label %inrange3303 -range3302: - call void @finch_panic_index(ptr @.str.2066, i64 1375, i64 %t49, i64 %t51) - unreachable -inrange3303: - %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.rend3304 -logic.rend3304: - br label %logic.end3299 -logic.end3299: - %t62 = phi i1 [ false, %logic.from3297 ], [ %t61, %logic.rend3304 ] - br i1 %t62, label %then3305, label %endif3307 -then3305: - %t63 = load i64, ptr %a10 - ret i64 %t63 -endif3307: - br label %for.step3283 -for.step3283: - %t64 = load i64, ptr %a10 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a10 - br label %for.cond3281 -for.end3284: - 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.2067, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2068, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.2069, i64 3, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.2070, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.2071, i64 4, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.2072, i64 5, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.2073, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.2074, i64 9, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.2075, i64 10, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.2076, i64 11, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.2077, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.2078, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.2079, i64 5, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.2080, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.2081, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.2082, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.2083, i64 11, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.2084, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.2085, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.2086, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.2087, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.2088, i64 2, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.2089, i64 3, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 - store { ptr, i64, i64 } { ptr @.str.2090, i64 3, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24 - store { ptr, i64, i64 } { ptr @.str.2091, i64 3, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 - store { ptr, i64, i64 } { ptr @.str.2092, i64 3, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 - store { ptr, i64, i64 } { ptr @.str.2093, i64 3, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27 - store { ptr, i64, i64 } { ptr @.str.2094, 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.cond3308 -find.cond3308: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t39 - br i1 %t43, label %find.body3309, label %find.end3312 -find.body3309: - %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.hit3310, label %find.next3311 -find.hit3310: - store i64 %t42, ptr %a38 - br label %find.end3312 -find.next3311: - %t50 = add i64 %t42, 1 - store i64 %t50, ptr %a41 - br label %find.cond3308 -find.end3312: - %t51 = load i64, ptr %a38 - %t52 = icmp sge i64 %t51, 0 - call void @finch.drop.arr_str(ptr %a35) - ret i1 %t52 -} - -define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5, i1 %p6) { -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 - %a7 = alloca i1, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a93 = alloca i1, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca %S.ast.Node, align 16 - %a238 = alloca %S.ast.Node, align 16 - %a240 = alloca %S.ast.Node, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %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 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } %p4, ptr %a5 - store i1 %p5, ptr %a6 - store i1 %p6, ptr %a7 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a3 - %t10 = call i64 @finch.gen.lookup(ptr %t8, { ptr, i64, i64 } %t9) - %t11 = icmp sge i64 %t10, 0 - br label %logic.from3313 -logic.from3313: - br i1 %t11, label %logic.rhs3314, label %logic.end3315 -logic.rhs3314: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.2095, i64 3, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp eq i32 %t15, 0 - br label %logic.rend3316 -logic.rend3316: - br label %logic.end3315 -logic.end3315: - %t17 = phi i1 [ false, %logic.from3313 ], [ %t16, %logic.rend3316 ] - br i1 %t17, label %then3317, label %endif3319 -then3317: - %t18 = load ptr, ptr %a1 - %t19 = load %S.ast.Node, ptr %a2 - %t20 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2096, i64 18, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2097, i64 21, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - br label %endif3319 -endif3319: - %t31 = load ptr, ptr %a1 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic3320, label %ok3321 -panic3320: - call void @finch_panic(ptr @.str.2098, i64 1393, ptr @.str.2099) - unreachable -ok3321: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 14 - %t35 = load { ptr, i64, i64 }, ptr %t34 - %t36 = load { ptr, i64, i64 }, ptr %a3 - %t37 = call i64 @finch.gen.findFn(ptr %t31, { ptr, i64, i64 } %t35, { ptr, i64, i64 } %t36) - %t38 = icmp sge i64 %t37, 0 - br i1 %t38, label %then3322, label %endif3324 -then3322: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - %t41 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2100, i64 1, i64 0 }, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.2101, i64 35, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif3324 -endif3324: - %t52 = load { ptr, i64, i64 }, ptr %a3 - %t53 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t52) - br i1 %t53, label %then3325, label %endif3327 -then3325: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2102, i64 1, i64 0 }, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.2103, i64 38, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } %t65) - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_drop(ptr %a66) - br label %endif3327 -endif3327: - %t67 = load ptr, ptr %a1 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - %t71 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t67, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t71, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a4 - %t77 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t75, %S.ast.Type %t76) - %t78 = load { ptr, i64, i64 }, ptr %a5 - %t79 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.store(ptr %t74, { ptr, i64, i64 } %t77, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3328, label %ok3329 -panic3328: - call void @finch_panic(ptr @.str.2104, i64 1401, ptr @.str.2105) - unreachable -ok3329: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 10 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - store i64 %t86, ptr %a87 - %t88 = load i1, ptr %a7 - br label %logic.from3330 -logic.from3330: - br i1 %t88, label %logic.rhs3331, label %logic.end3332 -logic.rhs3331: - %t89 = load ptr, ptr %a1 - %t90 = load %S.ast.Type, ptr %a4 - %t91 = call i1 @finch.gen.owning(ptr %t89, %S.ast.Type %t90) - br label %logic.rend3333 -logic.rend3333: - br label %logic.end3332 -logic.end3332: - %t92 = phi i1 [ false, %logic.from3330 ], [ %t91, %logic.rend3333 ] - store i1 %t92, ptr %a93 - %t94 = load i1, ptr %a93 - br i1 %t94, label %then3334, label %endif3336 -then3334: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic3337, label %ok3338 -panic3337: - call void @finch_panic(ptr @.str.2106, i64 1404, ptr @.str.2107) - unreachable -ok3338: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 10 - %t98 = load i64, ptr %a87 - %t99 = load { ptr, i64, i64 }, ptr %t97 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range3339, label %inrange3340 -range3339: - call void @finch_panic_index(ptr @.str.2108, i64 1404, i64 %t98, i64 %t100) - unreachable -inrange3340: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.gen.Scope, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.gen.Scope, ptr %t103, i32 0, i32 3 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = insertvalue %S.gen.Cleanup zeroinitializer, i1 false, 0 - %t107 = load ptr, ptr %a1 - %t108 = icmp eq ptr %t107, null - br i1 %t108, label %panic3341, label %ok3342 -panic3341: - call void @finch_panic(ptr @.str.2109, i64 1404, ptr @.str.2110) - unreachable -ok3342: - %t109 = getelementptr inbounds %S.gen.Gen, ptr %t107, i32 0, i32 10 - %t110 = load i64, ptr %a87 - %t111 = load { ptr, i64, i64 }, ptr %t109 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range3343, label %inrange3344 -range3343: - call void @finch_panic_index(ptr @.str.2111, i64 1404, i64 %t110, i64 %t112) - unreachable -inrange3344: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.gen.Scope, ptr %t114, i64 %t110 - %t116 = getelementptr inbounds %S.gen.Scope, ptr %t115, i32 0, i32 0 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i32 0, i32 1 - %t118 = load i64, ptr %t117 - %t119 = insertvalue %S.gen.Cleanup %t106, i64 %t118, 1 - %t120 = load i64, ptr %t105 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t121, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %t104 - %t123 = getelementptr inbounds %S.gen.Cleanup, ptr %t122, i64 %t120 - store %S.gen.Cleanup %t119, ptr %t123 - store i64 %t121, ptr %t105 - br label %endif3336 -endif3336: - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic3345, label %ok3346 -panic3345: - call void @finch_panic(ptr @.str.2112, i64 1406, ptr @.str.2113) - unreachable -ok3346: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 10 - %t127 = load i64, ptr %a87 - %t128 = load { ptr, i64, i64 }, ptr %t126 - %t129 = extractvalue { ptr, i64, i64 } %t128, 1 - %t130 = icmp uge i64 %t127, %t129 - br i1 %t130, label %range3347, label %inrange3348 -range3347: - call void @finch_panic_index(ptr @.str.2114, i64 1406, i64 %t127, i64 %t129) - unreachable -inrange3348: - %t131 = extractvalue { ptr, i64, i64 } %t128, 0 - %t132 = getelementptr inbounds %S.gen.Scope, ptr %t131, i64 %t127 - %t133 = getelementptr inbounds %S.gen.Scope, ptr %t132, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } %t138, 0 - %t140 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - %t144 = insertvalue %S.gen.Var %t139, %S.ast.Type %t143, 1 - %t145 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t145, ptr %a146 - call void @finch_str_copy(ptr %a147, ptr %a146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - %t149 = insertvalue %S.gen.Var %t144, { ptr, i64, i64 } %t148, 2 - %t150 = load i1, ptr %a6 - %t151 = insertvalue %S.gen.Var %t149, i1 %t150, 3 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic3349, label %ok3350 -panic3349: - call void @finch_panic(ptr @.str.2115, i64 1406, ptr @.str.2116) - unreachable -ok3350: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 25 - %t155 = load i64, ptr %t154 - %t156 = insertvalue %S.gen.Var %t151, i64 %t155, 4 - %t157 = load i1, ptr %a93 - %t158 = insertvalue %S.gen.Var %t156, i1 %t157, 5 - %t159 = load ptr, ptr %a1 - %t160 = icmp eq ptr %t159, null - br i1 %t160, label %panic3351, label %ok3352 -panic3351: - call void @finch_panic(ptr @.str.2117, i64 1406, ptr @.str.2118) - unreachable -ok3352: - %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 1 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t163 = load i64, ptr %t162 - %t164 = load { ptr, i64, i64 }, ptr %t161 - %t165 = extractvalue { ptr, i64, i64 } %t164, 1 - %t166 = icmp uge i64 %t163, %t165 - br i1 %t166, label %range3353, label %inrange3354 -range3353: - call void @finch_panic_index(ptr @.str.2119, i64 1406, i64 %t163, i64 %t165) - unreachable -inrange3354: - %t167 = extractvalue { ptr, i64, i64 } %t164, 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i64 %t163 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_copy(ptr %a171, ptr %a170) - %t172 = load { ptr, i64, i64 }, ptr %a171 - %t173 = insertvalue %S.gen.Var %t158, { ptr, i64, i64 } %t172, 7 - %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t175 = load i64, ptr %t174 - %t176 = insertvalue %S.gen.Var %t173, i64 %t175, 8 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t178 = load i64, ptr %t177 - %t179 = insertvalue %S.gen.Var %t176, i64 %t178, 9 - %t180 = load i64, ptr %t134 - %t181 = add i64 %t180, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t182 = load ptr, ptr %t133 - %t183 = getelementptr inbounds %S.gen.Var, ptr %t182, i64 %t180 - store %S.gen.Var %t179, ptr %t183 - store i64 %t181, ptr %t134 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3355, label %ok3356 -panic3355: - call void @finch_panic(ptr @.str.2120, i64 1407, ptr @.str.2121) - unreachable -ok3356: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 25 - %t187 = load i64, ptr %t186 - %t188 = add i64 %t187, 1 - store i64 %t188, ptr %t186 - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a3 - %t192 = load %S.ast.Type, ptr %a4 - %t193 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.dbgVariable(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t191, %S.ast.Type %t192, { ptr, i64, i64 } %t193) - %t194 = load ptr, ptr %a1 - %t195 = icmp eq ptr %t194, null - br i1 %t195, label %panic3357, label %ok3358 -panic3357: - call void @finch_panic(ptr @.str.2122, i64 1409, ptr @.str.2123) - unreachable -ok3358: - %t196 = getelementptr inbounds %S.gen.Gen, ptr %t194, i32 0, i32 28 - %t197 = load i1, ptr %t196 - br label %logic.from3359 -logic.from3359: - br i1 %t197, label %logic.rhs3360, label %logic.end3361 -logic.rhs3360: - %t198 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2124, i64 3, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp eq i32 %t201, 0 - br label %logic.rend3362 -logic.rend3362: - br label %logic.end3361 -logic.end3361: - %t203 = phi i1 [ false, %logic.from3359 ], [ %t202, %logic.rend3362 ] - br label %logic.from3363 -logic.from3363: - br i1 %t203, label %logic.rhs3364, label %logic.end3365 -logic.rhs3364: - %t204 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t204, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.2126, i64 1, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_starts(ptr %a205, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - %t210 = xor i1 %t209, true - br label %logic.rend3366 -logic.rend3366: - br label %logic.end3365 -logic.end3365: - %t211 = phi i1 [ false, %logic.from3363 ], [ %t210, %logic.rend3366 ] - br i1 %t211, label %then3367, label %endif3369 -then3367: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic3370, label %ok3371 -panic3370: - call void @finch_panic(ptr @.str.2127, i64 1410, ptr @.str.2128) - unreachable -ok3371: - %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 0 - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3372, label %ok3373 -panic3372: - call void @finch_panic(ptr @.str.2129, i64 1410, ptr @.str.2130) - unreachable -ok3373: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 13 - %t218 = getelementptr inbounds %S.gen.FnSig, ptr %t217, i32 0, i32 16 - %t219 = load i64, ptr %t218 - %t220 = load { ptr, i64, i64 }, ptr %t214 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range3374, label %inrange3375 -range3374: - call void @finch_panic_index(ptr @.str.2131, i64 1410, i64 %t219, i64 %t221) - unreachable -inrange3375: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Program, ptr %t223, i64 %t219 - %t225 = getelementptr inbounds %S.ast.Program, ptr %t224, i32 0, i32 8 - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic3376, label %ok3377 -panic3376: - call void @finch_panic(ptr @.str.2132, i64 1410, ptr @.str.2133) - unreachable -ok3377: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 13 - %t229 = getelementptr inbounds %S.gen.FnSig, ptr %t228, i32 0, i32 17 - %t230 = load i64, ptr %t229 - %t231 = load { ptr, i64, i64 }, ptr %t225 - %t232 = extractvalue { ptr, i64, i64 } %t231, 1 - %t233 = icmp uge i64 %t230, %t232 - br i1 %t233, label %range3378, label %inrange3379 -range3378: - call void @finch_panic_index(ptr @.str.2134, i64 1410, i64 %t230, i64 %t232) - unreachable -inrange3379: - %t234 = extractvalue { ptr, i64, i64 } %t231, 0 - %t235 = getelementptr inbounds %S.ast.Node, ptr %t234, i64 %t230 - %t236 = load %S.ast.Node, ptr %t235 - store %S.ast.Node %t236, ptr %a237 - call void @finch.copy.S_ast_Node(ptr %a238, ptr %a237) - %t239 = load %S.ast.Node, ptr %a238 - store %S.ast.Node %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = icmp eq ptr %t241, null - br i1 %t242, label %panic3380, label %ok3381 -panic3380: - call void @finch_panic(ptr @.str.2135, i64 1411, ptr @.str.2136) - unreachable -ok3381: - %t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 29 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2137, i64 3, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.2138, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = load %S.ast.Type, ptr %a4 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.2139, i64 1, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic3382, label %ok3383 -panic3382: - call void @finch_panic(ptr @.str.2140, i64 1411, ptr @.str.2141) - unreachable -ok3383: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t272 = load i64, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %t270 - %t274 = extractvalue { ptr, i64, i64 } %t273, 1 - %t275 = icmp uge i64 %t272, %t274 - br i1 %t275, label %range3384, label %inrange3385 -range3384: - call void @finch_panic_index(ptr @.str.2142, i64 1411, i64 %t272, i64 %t274) - unreachable -inrange3385: - %t276 = extractvalue { ptr, i64, i64 } %t273, 0 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i64 %t272 - %t278 = load { ptr, i64, i64 }, ptr %t277 - store { ptr, i64, i64 } %t267, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t267, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.2143, i64 1, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t290 = load i64, ptr %t289 - call void @finch_str_from_int(ptr %a291, i64 %t290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a294 - store { ptr, i64, i64 } %t292, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t288, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t292, ptr %a297 - call void @finch_str_drop(ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a293 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.2144, i64 1, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t305 = load i64, ptr %t304 - call void @finch_str_from_int(ptr %a306, i64 %t305) - %t307 = load { ptr, i64, i64 }, ptr %a306 - store { ptr, i64, i64 } %t303, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t303, ptr %a311 - call void @finch_str_drop(ptr %a311) - store { ptr, i64, i64 } %t307, ptr %a312 - call void @finch_str_drop(ptr %a312) - %t313 = load { ptr, i64, i64 }, ptr %a308 - store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.2145, i64 1, i64 0 }, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t313, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic3386, label %ok3387 -panic3386: - call void @finch_panic(ptr @.str.2146, i64 1411, ptr @.str.2147) - unreachable -ok3387: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 1 - %t322 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 13 - %t323 = load i64, ptr %t322 - %t324 = load { ptr, i64, i64 }, ptr %t321 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range3388, label %inrange3389 -range3388: - call void @finch_panic_index(ptr @.str.2148, i64 1411, i64 %t323, i64 %t325) - unreachable -inrange3389: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t323 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t318, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t318, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t334, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.2149, i64 1, i64 0 }, ptr %a337 - call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) - store { ptr, i64, i64 } %t334, ptr %a338 - call void @finch_str_drop(ptr %a338) - %t339 = load { ptr, i64, i64 }, ptr %a335 - %t340 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 11 - %t341 = load i64, ptr %t340 - call void @finch_str_from_int(ptr %a342, i64 %t341) - %t343 = load { ptr, i64, i64 }, ptr %a342 - store { ptr, i64, i64 } %t339, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t339, ptr %a347 - call void @finch_str_drop(ptr %a347) - store { ptr, i64, i64 } %t343, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t349, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.2150, i64 1, i64 0 }, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t349, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a350 - %t355 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 14 - %t356 = load i64, ptr %t355 - call void @finch_str_from_int(ptr %a357, i64 %t356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t354, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - store { ptr, i64, i64 } %t354, ptr %a362 - call void @finch_str_drop(ptr %a362) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a359 - %t365 = load i64, ptr %t244 - %t366 = add i64 %t365, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t366, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t367 = load ptr, ptr %t243 - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t365 - store { ptr, i64, i64 } %t364, ptr %t368 - store i64 %t366, ptr %t244 - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t372 = load i64, ptr %t371 - %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t374 = load i64, ptr %t373 - %t375 = load %S.ast.Type, ptr %a4 - %t376 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t375) - store { ptr, i64, i64 } { ptr @.str.2151, i64 9, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t376, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.2152, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - %t387 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t386, ptr %a389 - store { ptr, i64, i64 } %t387, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t386, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t392, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2153, i64 4, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.noteRef(ptr %t369, %S.ast.Node %t370, i64 %t372, i64 %t374, { ptr, i64, i64 } %t397, { ptr, i64, i64 } { ptr @.str.2154, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - call void @finch.drop.S_ast_Node(ptr %a240) - br label %endif3369 -endif3369: - %t399 = load { ptr, i64, i64 }, ptr %a73 - ret { ptr, i64, i64 } %t399 -} - -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 %panic3390, label %ok3391 -panic3390: - call void @finch_panic(ptr @.str.2155, i64 1418, ptr @.str.2156) - unreachable -ok3391: - %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.drop.S_gen_Var(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_gen_Var(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond3403 -n.cond3403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body3404, label %n.end3405 -n.body3404: - %t7 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Var(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond3403 -n.end3405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Cleanup(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Scope(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_gen_Var(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_gen_Cleanup(ptr %t4) - ret void -} - -define internal void @finch.gen.popScope(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a24 = alloca %S.gen.Scope, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3392, label %ok3393 -panic3392: - call void @finch_panic(ptr @.str.2157, i64 1424, ptr @.str.2158) - unreachable -ok3393: - %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 %then3394, label %endif3396 -then3394: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic3397, label %ok3398 -panic3397: - call void @finch_panic(ptr @.str.2159, i64 1425, ptr @.str.2160) - unreachable -ok3398: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load i64, ptr %t11 - %t13 = sub i64 %t12, 1 - call void @finch.gen.runCleanups(ptr %t7, i64 %t13) - br label %endif3396 -endif3396: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3399, label %ok3400 -panic3399: - call void @finch_panic(ptr @.str.2161, i64 1427, ptr @.str.2162) - unreachable -ok3400: - %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 %panic3401, label %ok3402 -panic3401: - call void @finch_panic(ptr @.str.2163, i64 1427, ptr @.str.2164) - unreachable -ok3402: - %t20 = sub i64 %t18, 1 - %t21 = load ptr, ptr %t16 - %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 - %t23 = load %S.gen.Scope, ptr %t22 - store i64 %t20, ptr %t17 - store %S.gen.Scope %t23, ptr %a24 - call void @finch.drop.S_gen_Scope(ptr %a24) - ret void -} - -define internal void @finch.gen.runCleanups(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a15 = alloca i64, align 16 - %a37 = alloca %S.gen.Cleanup, align 16 - %a59 = alloca %S.gen.Var, align 16 - %a60 = alloca %S.gen.Var, align 16 - %a62 = alloca %S.gen.Var, align 16 - %a75 = alloca i1, align 16 - %a80 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3406, label %ok3407 -panic3406: - call void @finch_panic(ptr @.str.2165, i64 1432, ptr @.str.2166) - unreachable -ok3407: - %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 %range3408, label %inrange3409 -range3408: - call void @finch_panic_index(ptr @.str.2167, i64 1432, i64 %t6, i64 %t8) - unreachable -inrange3409: - %t10 = extractvalue { ptr, i64, i64 } %t7, 0 - %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 - %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i32 0, i32 3 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - store i64 %t14, ptr %a15 - br label %while.cond3410 -while.cond3410: - %t16 = load i64, ptr %a15 - %t17 = icmp sgt i64 %t16, 0 - br i1 %t17, label %while.body3411, label %while.end3412 -while.body3411: - %t18 = load i64, ptr %a15 - %t19 = sub i64 %t18, 1 - store i64 %t19, ptr %a15 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic3413, label %ok3414 -panic3413: - call void @finch_panic(ptr @.str.2168, i64 1435, ptr @.str.2169) - unreachable -ok3414: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 - %t23 = load i64, ptr %a2 - %t24 = load { ptr, i64, i64 }, ptr %t22 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range3415, label %inrange3416 -range3415: - call void @finch_panic_index(ptr @.str.2170, i64 1435, i64 %t23, i64 %t25) - unreachable -inrange3416: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.gen.Scope, ptr %t27, i64 %t23 - %t29 = getelementptr inbounds %S.gen.Scope, ptr %t28, i32 0, i32 3 - %t30 = load i64, ptr %a15 - %t31 = load { ptr, i64, i64 }, ptr %t29 - %t32 = extractvalue { ptr, i64, i64 } %t31, 1 - %t33 = icmp uge i64 %t30, %t32 - br i1 %t33, label %range3417, label %inrange3418 -range3417: - call void @finch_panic_index(ptr @.str.2171, i64 1435, i64 %t30, i64 %t32) - unreachable -inrange3418: - %t34 = extractvalue { ptr, i64, i64 } %t31, 0 - %t35 = getelementptr inbounds %S.gen.Cleanup, ptr %t34, i64 %t30 - %t36 = load %S.gen.Cleanup, ptr %t35 - store %S.gen.Cleanup %t36, ptr %a37 - %t38 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 0 - %t39 = load i1, ptr %t38 - %t40 = xor i1 %t39, true - br i1 %t40, label %then3419, label %endif3421 -then3419: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic3422, label %ok3423 -panic3422: - call void @finch_panic(ptr @.str.2172, i64 1437, ptr @.str.2173) - unreachable -ok3423: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 10 - %t44 = load i64, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %t43 - %t46 = extractvalue { ptr, i64, i64 } %t45, 1 - %t47 = icmp uge i64 %t44, %t46 - br i1 %t47, label %range3424, label %inrange3425 -range3424: - call void @finch_panic_index(ptr @.str.2174, i64 1437, i64 %t44, i64 %t46) - unreachable -inrange3425: - %t48 = extractvalue { ptr, i64, i64 } %t45, 0 - %t49 = getelementptr inbounds %S.gen.Scope, ptr %t48, i64 %t44 - %t50 = getelementptr inbounds %S.gen.Scope, ptr %t49, i32 0, i32 0 - %t51 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = load { ptr, i64, i64 }, ptr %t50 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 %t52, %t54 - br i1 %t55, label %range3426, label %inrange3427 -range3426: - call void @finch_panic_index(ptr @.str.2175, i64 1437, i64 %t52, i64 %t54) - unreachable -inrange3427: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds %S.gen.Var, ptr %t56, i64 %t52 - %t58 = load %S.gen.Var, ptr %t57 - store %S.gen.Var %t58, ptr %a59 - call void @finch.copy.S_gen_Var(ptr %a60, ptr %a59) - %t61 = load %S.gen.Var, ptr %a60 - store %S.gen.Var %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 6 - %t64 = load i1, ptr %t63 - %t65 = xor i1 %t64, true - br i1 %t65, label %then3428, label %endif3430 -then3428: - %t66 = load ptr, ptr %a1 - %t67 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 2 - %t68 = load { ptr, i64, i64 }, ptr %t67 - %t69 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 1 - %t70 = load %S.ast.Type, ptr %t69 - call void @finch.gen.dropAt(ptr %t66, { ptr, i64, i64 } %t68, %S.ast.Type %t70) - br label %endif3430 -endif3430: - call void @finch.drop.S_gen_Var(ptr %a62) - br label %while.cond3410 -endif3421: - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3431, label %ok3432 -panic3431: - call void @finch_panic(ptr @.str.2176, i64 1443, ptr @.str.2177) - unreachable -ok3432: - %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 44 - %t74 = load i1, ptr %t73 - store i1 %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic3433, label %ok3434 -panic3433: - call void @finch_panic(ptr @.str.2178, i64 1444, ptr @.str.2179) - unreachable -ok3434: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 45 - %t79 = load i64, ptr %t78 - store i64 %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3435, label %ok3436 -panic3435: - call void @finch_panic(ptr @.str.2180, i64 1445, ptr @.str.2181) - unreachable -ok3436: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 44 - store i1 true, ptr %t83 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic3437, label %ok3438 -panic3437: - call void @finch_panic(ptr @.str.2182, i64 1446, ptr @.str.2183) - unreachable -ok3438: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 10 - %t87 = load i64, ptr %a2 - %t88 = load { ptr, i64, i64 }, ptr %t86 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range3439, label %inrange3440 -range3439: - call void @finch_panic_index(ptr @.str.2184, i64 1446, i64 %t87, i64 %t89) - unreachable -inrange3440: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.gen.Scope, ptr %t91, i64 %t87 - %t93 = getelementptr inbounds %S.gen.Scope, ptr %t92, i32 0, i32 2 - %t94 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t95 = load i64, ptr %t94 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range3441, label %inrange3442 -range3441: - call void @finch_panic_index(ptr @.str.2185, i64 1446, i64 %t95, i64 %t97) - unreachable -inrange3442: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds i64, ptr %t99, i64 %t95 - %t101 = load i64, ptr %t100 - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3443, label %ok3444 -panic3443: - call void @finch_panic(ptr @.str.2186, i64 1446, ptr @.str.2187) - unreachable -ok3444: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 45 - store i64 %t101, ptr %t104 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic3445, label %ok3446 -panic3445: - call void @finch_panic(ptr @.str.2188, i64 1447, ptr @.str.2189) - unreachable -ok3446: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 46 - %t108 = load i64, ptr %t107 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %t107 - %t110 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t110) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic3447, label %ok3448 -panic3447: - call void @finch_panic(ptr @.str.2190, i64 1449, ptr @.str.2191) - unreachable -ok3448: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 10 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range3449, label %inrange3450 -range3449: - call void @finch_panic_index(ptr @.str.2192, i64 1449, i64 %t115, i64 %t117) - unreachable -inrange3450: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.Scope, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.Scope, ptr %t120, i32 0, i32 1 - %t122 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = load { ptr, i64, i64 }, ptr %t121 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 %t123, %t125 - br i1 %t126, label %range3451, label %inrange3452 -range3451: - call void @finch_panic_index(ptr @.str.2193, i64 1449, i64 %t123, i64 %t125) - unreachable -inrange3452: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds %S.ast.Node, ptr %t127, i64 %t123 - %t129 = load %S.ast.Node, ptr %t128 - call void @finch.gen.stmt(ptr %t111, %S.ast.Node %t129) - %t130 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t130) - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic3453, label %ok3454 -panic3453: - call void @finch_panic(ptr @.str.2194, i64 1451, ptr @.str.2195) - unreachable -ok3454: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 46 - %t134 = load i64, ptr %t133 - %t135 = sub i64 %t134, 1 - store i64 %t135, ptr %t133 - %t136 = load i1, ptr %a75 - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic3455, label %ok3456 -panic3455: - call void @finch_panic(ptr @.str.2196, i64 1452, ptr @.str.2197) - unreachable -ok3456: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 44 - store i1 %t136, ptr %t139 - %t140 = load i64, ptr %a80 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic3457, label %ok3458 -panic3457: - call void @finch_panic(ptr @.str.2198, i64 1453, ptr @.str.2199) - unreachable -ok3458: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 45 - store i64 %t140, ptr %t143 - br label %while.cond3410 -while.end3412: - 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 %panic3459, label %ok3460 -panic3459: - call void @finch_panic(ptr @.str.2200, i64 1459, ptr @.str.2201) - unreachable -ok3460: - %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.cond3461 -while.cond3461: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body3462, label %while.end3463 -while.body3462: - %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.runCleanups(ptr %t14, i64 %t15) - br label %while.cond3461 -while.end3463: - 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 - call void @finch.gen.popScope(ptr %t2) - 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.2202, 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 %then3464, label %endif3466 -then3464: - %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 -endif3466: - %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.2203, 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.from3467 -logic.from3467: - br i1 %t18, label %logic.end3469, label %logic.rhs3468 -logic.rhs3468: - %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.2204, 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.rend3470 -logic.rend3470: - br label %logic.end3469 -logic.end3469: - %t25 = phi i1 [ true, %logic.from3467 ], [ %t24, %logic.rend3470 ] - br i1 %t25, label %then3471, label %endif3473 -then3471: - %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 %range3474, label %inrange3475 -range3474: - call void @finch_panic_index(ptr @.str.2205, i64 1477, i64 0, i64 %t28) - unreachable -inrange3475: - %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 -endif3473: - ret { ptr, i64, i64 } { ptr @.str.2206, 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 - %a37 = 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 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca i64, align 16 - %a72 = alloca i64, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a143 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t5 = call ptr @finch_alloc(i64 %t4) - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 0 - store { ptr, i64, i64 } { ptr @.str.2207, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 - store { ptr, i64, i64 } { ptr @.str.2208, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 - store { ptr, i64, i64 } { ptr @.str.2209, i64 6, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3 - store { ptr, i64, i64 } { ptr @.str.2210, i64 6, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 - store { ptr, i64, i64 } { ptr @.str.2211, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 - store { ptr, i64, i64 } { ptr @.str.2212, i64 6, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6 - store { ptr, i64, i64 } { ptr @.str.2213, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 - store { ptr, i64, i64 } { ptr @.str.2214, 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.2215, 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.from3476 -logic.from3476: - br i1 %t23, label %logic.rhs3477, label %logic.end3478 -logic.rhs3477: - %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 %range3479, label %inrange3480 -range3479: - call void @finch_panic_index(ptr @.str.2216, i64 1484, i64 0, i64 %t26) - unreachable -inrange3480: - %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 - store { ptr, i64, i64 } %t31, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %logic.rend3481 -logic.rend3481: - br label %logic.end3478 -logic.end3478: - %t38 = phi i1 [ false, %logic.from3476 ], [ %t36, %logic.rend3481 ] - br i1 %t38, label %then3482, label %endif3484 -then3482: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3484: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2217, i64 6, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br label %logic.from3485 -logic.from3485: - br i1 %t44, label %logic.rhs3486, label %logic.end3487 -logic.rhs3486: - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t45 - %t50 = load ptr, ptr %a17 - store i64 0, ptr %a51 - br label %find.cond3488 -find.cond3488: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body3489, label %find.end3492 -find.body3489: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit3490, label %find.next3491 -find.hit3490: - store i64 %t52, ptr %a48 - br label %find.end3492 -find.next3491: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond3488 -find.end3492: - %t61 = load i64, ptr %a48 - %t62 = icmp sge i64 %t61, 0 - br label %logic.from3493 -logic.from3493: - br i1 %t62, label %logic.end3495, label %logic.rhs3494 -logic.rhs3494: - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic3496, label %ok3497 -panic3496: - call void @finch_panic(ptr @.str.2218, i64 1490, ptr @.str.2219) - unreachable -ok3497: - %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 24 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 - %t67 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store i64 -1, ptr %a69 - %t70 = load i64, ptr %t66 - %t71 = load ptr, ptr %t65 - store i64 0, ptr %a72 - br label %find.cond3498 -find.cond3498: - %t73 = load i64, ptr %a72 - %t74 = icmp slt i64 %t73, %t70 - br i1 %t74, label %find.body3499, label %find.end3502 -find.body3499: - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 %t73 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } %t68, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br i1 %t80, label %find.hit3500, label %find.next3501 -find.hit3500: - store i64 %t73, ptr %a69 - br label %find.end3502 -find.next3501: - %t81 = add i64 %t73, 1 - store i64 %t81, ptr %a72 - br label %find.cond3498 -find.end3502: - %t82 = load i64, ptr %a69 - %t83 = icmp sge i64 %t82, 0 - br label %logic.rend3503 -logic.rend3503: - br label %logic.end3495 -logic.end3495: - %t84 = phi i1 [ true, %logic.from3493 ], [ %t83, %logic.rend3503 ] - br label %logic.rend3504 -logic.rend3504: - br label %logic.end3487 -logic.end3487: - %t85 = phi i1 [ false, %logic.from3485 ], [ %t84, %logic.rend3504 ] - br label %logic.from3505 -logic.from3505: - br i1 %t85, label %logic.rhs3506, label %logic.end3507 -logic.rhs3506: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range3508, label %inrange3509 -range3508: - call void @finch_panic_index(ptr @.str.2220, i64 1490, i64 0, i64 %t88) - unreachable -inrange3509: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0 - %t92 = load %S.ast.Node, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t92) - %t94 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } %t94, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - store { ptr, i64, i64 } %t93, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %logic.rend3510 -logic.rend3510: - br label %logic.end3507 -logic.end3507: - %t100 = phi i1 [ false, %logic.from3505 ], [ %t98, %logic.rend3510 ] - br i1 %t100, label %then3511, label %endif3513 -then3511: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3513: - %t101 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2221, i64 4, i64 0 }, ptr %a104 - %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) - %t106 = icmp ne i32 %t105, 0 - br label %logic.from3514 -logic.from3514: - br i1 %t106, label %logic.rhs3515, label %logic.end3516 -logic.rhs3515: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2222, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend3517 -logic.rend3517: - br label %logic.end3516 -logic.end3516: - %t113 = phi i1 [ false, %logic.from3514 ], [ %t112, %logic.rend3517 ] - br label %logic.from3518 -logic.from3518: - br i1 %t113, label %logic.rhs3519, label %logic.end3520 -logic.rhs3519: - %t114 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp eq i64 %t116, 1 - br label %logic.rend3521 -logic.rend3521: - br label %logic.end3520 -logic.end3520: - %t118 = phi i1 [ false, %logic.from3518 ], [ %t117, %logic.rend3521 ] - br label %logic.from3522 -logic.from3522: - br i1 %t118, label %logic.rhs3523, label %logic.end3524 -logic.rhs3523: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 0, %t121 - br i1 %t122, label %range3525, label %inrange3526 -range3525: - call void @finch_panic_index(ptr @.str.2223, i64 1493, i64 0, i64 %t121) - unreachable -inrange3526: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds %S.ast.Node, ptr %t123, i64 0 - %t125 = load %S.ast.Node, ptr %t124 - %t126 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t125) - %t127 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } %t127, ptr %a129 - %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %logic.rend3527 -logic.rend3527: - br label %logic.end3524 -logic.end3524: - %t133 = phi i1 [ false, %logic.from3522 ], [ %t131, %logic.rend3527 ] - br i1 %t133, label %then3528, label %endif3530 -then3528: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3530: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - store i64 0, ptr %a135 - br label %each.cond3531 -each.cond3531: - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = load i64, ptr %a135 - %t139 = icmp slt i64 %t138, %t137 - br i1 %t139, label %each.body3532, label %each.end3534 -each.body3532: - %t140 = load ptr, ptr %t134 - %t141 = getelementptr inbounds %S.ast.Node, ptr %t140, i64 %t138 - %t142 = load %S.ast.Node, ptr %t141 - store %S.ast.Node %t142, ptr %a143 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - %t146 = load %S.ast.Node, ptr %a143 - %t147 = call i1 @finch.gen.mutates(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Node %t146) - br i1 %t147, label %then3535, label %endif3537 -then3535: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3537: - br label %each.step3533 -each.step3533: - %t148 = load i64, ptr %a135 - %t149 = add i64 %t148, 1 - store i64 %t149, ptr %a135 - br label %each.cond3531 -each.end3534: - call void @finch.drop.arr_str(ptr %a17) - 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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a64 = alloca %S.ast.Node, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca i64, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca i64, align 16 - %a224 = alloca %S.ast.Node, align 16 - %a225 = alloca %S.ast.Node, align 16 - %a227 = alloca %S.ast.Node, align 16 - %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 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca %S.gen.SumDef, align 16 - %a278 = alloca i64, align 16 - %a280 = alloca i64, align 16 - %a288 = alloca %S.ast.Node, align 16 - %a293 = alloca i64, align 16 - %a296 = alloca i64, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca %S.gen.SumDef, align 16 - %a374 = alloca %S.gen.SumDef, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = 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 - %a427 = alloca %S.gen.EnumDef, align 16 - %a428 = alloca i64, align 16 - %a430 = alloca i64, align 16 - %a438 = alloca %S.ast.Node, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca i64, align 16 - %a454 = alloca i64, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca i64, align 16 - %a498 = alloca i64, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca %S.gen.EnumDef, align 16 - %a563 = alloca %S.gen.EnumDef, align 16 - %a579 = alloca i64, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca i64, align 16 - %a629 = alloca i64, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca i64, align 16 - %a683 = alloca %S.ast.Node, align 16 - %a684 = alloca %S.ast.Node, align 16 - %a686 = alloca %S.ast.Node, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = 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 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca i1, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca i64, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = 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 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a929 = alloca i64, align 16 - %a932 = alloca i64, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a969 = 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 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1009 = 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 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca %S.gen.FnSig, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1072 = 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 - %a1085 = 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 - %a1090 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1096 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca { ptr, i64, i64 }, align 16 - %a1102 = 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 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca %S.ast.Type, align 16 - %a1126 = alloca i64, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1158 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1223 = alloca %S.gen.FnSig, align 16 - %a1224 = alloca %S.gen.FnSig, align 16 - %a1234 = alloca i1, align 16 - %a1241 = alloca i64, align 16 - %a1307 = alloca %S.ast.Node, align 16 - %a1308 = alloca %S.ast.Node, align 16 - %a1310 = alloca %S.ast.Node, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1363 = alloca i64, align 16 - %a1376 = alloca %S.gen.Template, align 16 - %a1377 = alloca %S.gen.Template, align 16 - %a1379 = alloca %S.gen.Template, align 16 - %a1407 = alloca %S.ast.Node, align 16 - %a1408 = alloca %S.ast.Node, align 16 - %a1410 = alloca %S.ast.Node, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca i64, align 16 - %a1494 = alloca %S.ast.Node, align 16 - %a1495 = alloca %S.ast.Node, align 16 - %a1497 = alloca %S.ast.Node, align 16 - %a1509 = alloca %S.ast.Node, align 16 - %a1510 = alloca %S.ast.Node, align 16 - %a1512 = alloca %S.ast.Node, align 16 - %a1525 = alloca i64, align 16 - %a1545 = alloca %S.ast.Type, align 16 - %a1546 = alloca %S.ast.Type, align 16 - %a1548 = 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 %panic3538, label %ok3539 -panic3538: - call void @finch_panic(ptr @.str.2224, i64 1507, ptr @.str.2225) - unreachable -ok3539: - %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.cond3540 -for.cond3540: - %t8 = load i64, ptr %a7 - %t9 = icmp slt i64 %t8, %t6 - br i1 %t9, label %for.body3541, label %for.end3543 -for.body3541: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic3544, label %ok3545 -panic3544: - call void @finch_panic(ptr @.str.2226, i64 1508, ptr @.str.2227) - unreachable -ok3545: - %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 %range3546, label %inrange3547 -range3546: - call void @finch_panic_index(ptr @.str.2228, i64 1508, i64 %t13, i64 %t15) - unreachable -inrange3547: - %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 %panic3548, label %ok3549 -panic3548: - call void @finch_panic(ptr @.str.2229, i64 1508, ptr @.str.2230) - unreachable -ok3549: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 14 - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_copy(ptr %a25, ptr %a24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - %t27 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t26, ptr %t23 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3550, label %ok3551 -panic3550: - call void @finch_panic(ptr @.str.2231, i64 1509, ptr @.str.2232) - unreachable -ok3551: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 0 - %t32 = load i64, ptr %a7 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3552, label %inrange3553 -range3552: - call void @finch_panic_index(ptr @.str.2233, i64 1509, i64 %t32, i64 %t34) - unreachable -inrange3553: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Program, ptr %t36, i64 %t32 - %t38 = getelementptr inbounds %S.ast.Program, ptr %t37, i32 0, i32 6 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 - %t40 = load i64, ptr %t39 - store i64 0, ptr %a41 - br label %for.cond3554 -for.cond3554: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body3555, label %for.end3557 -for.body3555: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic3558, label %ok3559 -panic3558: - call void @finch_panic(ptr @.str.2234, i64 1510, ptr @.str.2235) - unreachable -ok3559: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 0 - %t47 = load i64, ptr %a7 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range3560, label %inrange3561 -range3560: - call void @finch_panic_index(ptr @.str.2236, i64 1510, i64 %t47, i64 %t49) - unreachable -inrange3561: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i64 %t47 - %t53 = getelementptr inbounds %S.ast.Program, ptr %t52, i32 0, i32 6 - %t54 = load i64, ptr %a41 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range3562, label %inrange3563 -range3562: - call void @finch_panic_index(ptr @.str.2237, i64 1510, i64 %t54, i64 %t56) - unreachable -inrange3563: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - store %S.ast.Node %t60, ptr %a61 - call void @finch.copy.S_ast_Node(ptr %a62, ptr %a61) - %t63 = load %S.ast.Node, ptr %a62 - store %S.ast.Node %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic3564, label %ok3565 -panic3564: - call void @finch_panic(ptr @.str.2238, i64 1511, ptr @.str.2239) - unreachable -ok3565: - %t68 = getelementptr inbounds %S.gen.Gen, ptr %t66, i32 0, i32 14 - %t69 = load { ptr, i64, i64 }, ptr %t68 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = call i64 @finch.gen.findStruct(ptr %t65, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t71) - %t73 = icmp sge i64 %t72, 0 - br label %logic.from3566 -logic.from3566: - br i1 %t73, label %logic.end3568, label %logic.rhs3567 -logic.rhs3567: - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic3569, label %ok3570 -panic3569: - call void @finch_panic(ptr @.str.2240, i64 1511, ptr @.str.2241) - unreachable -ok3570: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 14 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = call i64 @finch.gen.findTemplate(ptr %t74, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t80, { ptr, i64, i64 } { ptr @.str.2242, i64 0, i64 0 }, i1 true) - %t82 = icmp sge i64 %t81, 0 - br label %logic.rend3571 -logic.rend3571: - br label %logic.end3568 -logic.end3568: - %t83 = phi i1 [ true, %logic.from3566 ], [ %t82, %logic.rend3571 ] - br i1 %t83, label %then3572, label %endif3574 -then3572: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a64 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.2243, i64 12, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2244, i64 18, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif3574 -endif3574: - %t98 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = icmp sgt i64 %t100, 0 - br i1 %t101, label %then3575, label %endif3577 -then3575: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3578, label %ok3579 -panic3578: - call void @finch_panic(ptr @.str.2245, i64 1516, ptr @.str.2246) - unreachable -ok3579: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 17 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic3580, label %ok3581 -panic3580: - call void @finch_panic(ptr @.str.2247, i64 1516, ptr @.str.2248) - unreachable -ok3581: - %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 14 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a110 - call void @finch_str_copy(ptr %a111, ptr %a110) - %t112 = load { ptr, i64, i64 }, ptr %a111 - %t113 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t112, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_copy(ptr %a117, ptr %a116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - %t119 = insertvalue %S.gen.Template %t113, { ptr, i64, i64 } %t118, 1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch.copy.arr_str(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = insertvalue %S.gen.Template %t119, { ptr, i64, i64 } %t124, 3 - %t126 = load i64, ptr %a7 - %t127 = insertvalue %S.gen.Template %t125, i64 %t126, 4 - %t128 = load i64, ptr %a41 - %t129 = insertvalue %S.gen.Template %t127, i64 %t128, 5 - %t130 = insertvalue %S.gen.Template %t129, i1 true, 6 - %t131 = load i64, ptr %t105 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t104 - %t134 = getelementptr inbounds %S.gen.Template, ptr %t133, i64 %t131 - store %S.gen.Template %t130, ptr %t134 - store i64 %t132, ptr %t105 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -endif3577: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic3582, label %ok3583 -panic3582: - call void @finch_panic(ptr @.str.2249, i64 1519, ptr @.str.2250) - unreachable -ok3583: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 16 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic3584, label %ok3585 -panic3584: - call void @finch_panic(ptr @.str.2251, i64 1519, ptr @.str.2252) - unreachable -ok3585: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 14 - %t142 = load { ptr, i64, i64 }, ptr %t141 - store { ptr, i64, i64 } %t142, ptr %a143 - call void @finch_str_copy(ptr %a144, ptr %a143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_copy(ptr %a150, ptr %a149) - %t151 = load { ptr, i64, i64 }, ptr %a150 - %t152 = insertvalue %S.gen.StructDef %t146, { ptr, i64, i64 } %t151, 1 - %t153 = load i64, ptr %a7 - %t154 = insertvalue %S.gen.StructDef %t152, i64 %t153, 13 - %t155 = load i64, ptr %a41 - %t156 = insertvalue %S.gen.StructDef %t154, i64 %t155, 14 - %t157 = load i64, ptr %t138 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t137, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t137 - %t160 = getelementptr inbounds %S.gen.StructDef, ptr %t159, i64 %t157 - store %S.gen.StructDef %t156, ptr %t160 - store i64 %t158, ptr %t138 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -for.step3556: - %t161 = load i64, ptr %a41 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a41 - br label %for.cond3554 -for.end3557: - br label %for.step3542 -for.step3542: - %t163 = load i64, ptr %a7 - %t164 = add i64 %t163, 1 - store i64 %t164, ptr %a7 - br label %for.cond3540 -for.end3543: - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3586, label %ok3587 -panic3586: - call void @finch_panic(ptr @.str.2253, i64 1522, ptr @.str.2254) - unreachable -ok3587: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load i64, ptr %t168 - store i64 0, ptr %a170 - br label %for.cond3588 -for.cond3588: - %t171 = load i64, ptr %a170 - %t172 = icmp slt i64 %t171, %t169 - br i1 %t172, label %for.body3589, label %for.end3591 -for.body3589: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic3592, label %ok3593 -panic3592: - call void @finch_panic(ptr @.str.2255, i64 1523, ptr @.str.2256) - unreachable -ok3593: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 0 - %t176 = load i64, ptr %a170 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range3594, label %inrange3595 -range3594: - call void @finch_panic_index(ptr @.str.2257, i64 1523, i64 %t176, i64 %t178) - unreachable -inrange3595: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.ast.Program, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.ast.Program, ptr %t181, i32 0, i32 0 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3596, label %ok3597 -panic3596: - call void @finch_panic(ptr @.str.2258, i64 1523, ptr @.str.2259) - unreachable -ok3597: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 14 - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_copy(ptr %a188, ptr %a187) - %t189 = load { ptr, i64, i64 }, ptr %a188 - %t190 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t189, ptr %t186 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - %t193 = icmp eq ptr %t192, null - br i1 %t193, label %panic3598, label %ok3599 -panic3598: - call void @finch_panic(ptr @.str.2260, i64 1524, ptr @.str.2261) - unreachable -ok3599: - %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 0 - %t195 = load i64, ptr %a170 - %t196 = load { ptr, i64, i64 }, ptr %t194 - %t197 = extractvalue { ptr, i64, i64 } %t196, 1 - %t198 = icmp uge i64 %t195, %t197 - br i1 %t198, label %range3600, label %inrange3601 -range3600: - call void @finch_panic_index(ptr @.str.2262, i64 1524, i64 %t195, i64 %t197) - unreachable -inrange3601: - %t199 = extractvalue { ptr, i64, i64 } %t196, 0 - %t200 = getelementptr inbounds %S.ast.Program, ptr %t199, i64 %t195 - %t201 = getelementptr inbounds %S.ast.Program, ptr %t200, i32 0, i32 7 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load i64, ptr %t202 - store i64 0, ptr %a204 - br label %for.cond3602 -for.cond3602: - %t205 = load i64, ptr %a204 - %t206 = icmp slt i64 %t205, %t203 - br i1 %t206, label %for.body3603, label %for.end3605 -for.body3603: - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic3606, label %ok3607 -panic3606: - call void @finch_panic(ptr @.str.2263, i64 1525, ptr @.str.2264) - unreachable -ok3607: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 0 - %t210 = load i64, ptr %a170 - %t211 = load { ptr, i64, i64 }, ptr %t209 - %t212 = extractvalue { ptr, i64, i64 } %t211, 1 - %t213 = icmp uge i64 %t210, %t212 - br i1 %t213, label %range3608, label %inrange3609 -range3608: - call void @finch_panic_index(ptr @.str.2265, i64 1525, i64 %t210, i64 %t212) - unreachable -inrange3609: - %t214 = extractvalue { ptr, i64, i64 } %t211, 0 - %t215 = getelementptr inbounds %S.ast.Program, ptr %t214, i64 %t210 - %t216 = getelementptr inbounds %S.ast.Program, ptr %t215, i32 0, i32 7 - %t217 = load i64, ptr %a204 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range3610, label %inrange3611 -range3610: - call void @finch_panic_index(ptr @.str.2266, i64 1525, i64 %t217, i64 %t219) - unreachable -inrange3611: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 - %t223 = load %S.ast.Node, ptr %t222 - store %S.ast.Node %t223, ptr %a224 - call void @finch.copy.S_ast_Node(ptr %a225, ptr %a224) - %t226 = load %S.ast.Node, ptr %a225 - store %S.ast.Node %t226, ptr %a227 - %t228 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 6 - %t229 = load i1, ptr %t228 - br i1 %t229, label %then3612, label %endif3614 -then3612: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic3615, label %ok3616 -panic3615: - call void @finch_panic(ptr @.str.2267, i64 1527, ptr @.str.2268) - unreachable -ok3616: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 14 - %t234 = load { ptr, i64, i64 }, ptr %t233 - %t235 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t236 = load { ptr, i64, i64 }, ptr %t235 - %t237 = call i64 @finch.gen.findEnum(ptr %t230, { ptr, i64, i64 } %t234, { ptr, i64, i64 } %t236) - %t238 = icmp sge i64 %t237, 0 - br label %logic.from3617 -logic.from3617: - br i1 %t238, label %logic.end3619, label %logic.rhs3618 -logic.rhs3618: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic3620, label %ok3621 -panic3620: - call void @finch_panic(ptr @.str.2269, i64 1527, ptr @.str.2270) - unreachable -ok3621: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 14 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %t244 - %t246 = call i64 @finch.gen.findSum(ptr %t239, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t245) - %t247 = icmp sge i64 %t246, 0 - br label %logic.rend3622 -logic.rend3622: - br label %logic.end3619 -logic.end3619: - %t248 = phi i1 [ true, %logic.from3617 ], [ %t247, %logic.rend3622 ] - br i1 %t248, label %then3623, label %endif3625 -then3623: - %t249 = load ptr, ptr %a1 - %t250 = load %S.ast.Node, ptr %a227 - %t251 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t252 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } { ptr @.str.2271, 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 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.2272, i64 18, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.fail(ptr %t249, %S.ast.Node %t250, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a262 - call void @finch_str_drop(ptr %a262) - br label %endif3625 -endif3625: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic3626, label %ok3627 -panic3626: - call void @finch_panic(ptr @.str.2273, i64 1530, ptr @.str.2274) - unreachable -ok3627: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 14 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_copy(ptr %a268, ptr %a267) - %t269 = load { ptr, i64, i64 }, ptr %a268 - %t270 = insertvalue %S.gen.SumDef zeroinitializer, { ptr, i64, i64 } %t269, 0 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - call void @finch_str_copy(ptr %a274, ptr %a273) - %t275 = load { ptr, i64, i64 }, ptr %a274 - %t276 = insertvalue %S.gen.SumDef %t270, { ptr, i64, i64 } %t275, 1 - store %S.gen.SumDef %t276, ptr %a277 - store i64 1, ptr %a278 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a280 - br label %each.cond3628 -each.cond3628: - %t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %t279, i32 0, i32 1 - %t282 = load i64, ptr %t281 - %t283 = load i64, ptr %a280 - %t284 = icmp slt i64 %t283, %t282 - br i1 %t284, label %each.body3629, label %each.end3631 -each.body3629: - %t285 = load ptr, ptr %t279 - %t286 = getelementptr inbounds %S.ast.Node, ptr %t285, i64 %t283 - %t287 = load %S.ast.Node, ptr %t286 - store %S.ast.Node %t287, ptr %a288 - %t289 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store i64 -1, ptr %a293 - %t294 = load i64, ptr %t290 - %t295 = load ptr, ptr %t289 - store i64 0, ptr %a296 - br label %find.cond3632 -find.cond3632: - %t297 = load i64, ptr %a296 - %t298 = icmp slt i64 %t297, %t294 - br i1 %t298, label %find.body3633, label %find.end3636 -find.body3633: - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t295, i64 %t297 - %t300 = load { ptr, i64, i64 }, ptr %t299 - store { ptr, i64, i64 } %t300, ptr %a301 - store { ptr, i64, i64 } %t292, ptr %a302 - %t303 = call i32 @finch_str_eq(ptr %a301, ptr %a302) - %t304 = icmp ne i32 %t303, 0 - br i1 %t304, label %find.hit3634, label %find.next3635 -find.hit3634: - store i64 %t297, ptr %a293 - br label %find.end3636 -find.next3635: - %t305 = add i64 %t297, 1 - store i64 %t305, ptr %a296 - br label %find.cond3632 -find.end3636: - %t306 = load i64, ptr %a293 - %t307 = icmp sge i64 %t306, 0 - br i1 %t307, label %then3637, label %endif3639 -then3637: - %t308 = load ptr, ptr %a1 - %t309 = load %S.ast.Node, ptr %a288 - %t310 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } { ptr @.str.2275, i64 9, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2276, i64 17, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t320, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - store { ptr, i64, i64 } %t327, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.2277, i64 6, i64 0 }, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t327, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.fail(ptr %t308, %S.ast.Node %t309, { ptr, i64, i64 } %t332) - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - br label %endif3639 -endif3639: - %t334 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t335 = getelementptr inbounds { ptr, i64, i64 }, ptr %t334, i32 0, i32 1 - %t336 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t337 = load { ptr, i64, i64 }, ptr %t336 - store { ptr, i64, i64 } %t337, ptr %a338 - call void @finch_str_copy(ptr %a339, ptr %a338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - %t341 = load i64, ptr %t335 - %t342 = add i64 %t341, 1 - call void @finch_arr_reserve(ptr %t334, i64 %t342, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t343 = load ptr, ptr %t334 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %t343, i64 %t341 - store { ptr, i64, i64 } %t340, ptr %t344 - store i64 %t342, ptr %t335 - %t345 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 3 - %t346 = getelementptr inbounds { ptr, i64, i64 }, ptr %t345, i32 0, i32 1 - %t347 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t348 = getelementptr inbounds { ptr, i64, i64 }, ptr %t347, i32 0, i32 1 - %t349 = load i64, ptr %t348 - %t350 = load i64, ptr %t346 - %t351 = add i64 %t350, 1 - call void @finch_arr_reserve(ptr %t345, i64 %t351, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t352 = load ptr, ptr %t345 - %t353 = getelementptr inbounds i64, ptr %t352, i64 %t350 - store i64 %t349, ptr %t353 - store i64 %t351, ptr %t346 - %t354 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 4 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i32 0, i32 1 - %t356 = load i64, ptr %a278 - %t357 = load i64, ptr %t355 - %t358 = add i64 %t357, 1 - call void @finch_arr_reserve(ptr %t354, i64 %t358, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t359 = load ptr, ptr %t354 - %t360 = getelementptr inbounds i64, ptr %t359, i64 %t357 - store i64 %t356, ptr %t360 - store i64 %t358, ptr %t355 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = load i64, ptr %a278 - %t365 = add i64 %t364, %t363 - store i64 %t365, ptr %a278 - br label %each.step3630 -each.step3630: - %t366 = load i64, ptr %a280 - %t367 = add i64 %t366, 1 - store i64 %t367, ptr %a280 - br label %each.cond3628 -each.end3631: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic3640, label %ok3641 -panic3640: - call void @finch_panic(ptr @.str.2278, i64 1541, ptr @.str.2279) - unreachable -ok3641: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 22 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load %S.gen.SumDef, ptr %a277 - store %S.gen.SumDef %t372, ptr %a373 - call void @finch.copy.S_gen_SumDef(ptr %a374, ptr %a373) - %t375 = load %S.gen.SumDef, ptr %a374 - %t376 = load i64, ptr %t371 - %t377 = add i64 %t376, 1 - call void @finch_arr_reserve(ptr %t370, i64 %t377, i64 ptrtoint (ptr getelementptr (%S.gen.SumDef, ptr null, i32 1) to i64)) - %t378 = load ptr, ptr %t370 - %t379 = getelementptr inbounds %S.gen.SumDef, ptr %t378, i64 %t376 - store %S.gen.SumDef %t375, ptr %t379 - store i64 %t377, ptr %t371 - call void @finch.drop.S_gen_SumDef(ptr %a277) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -endif3614: - %t380 = load ptr, ptr %a1 - %t381 = load ptr, ptr %a1 - %t382 = icmp eq ptr %t381, null - br i1 %t382, label %panic3642, label %ok3643 -panic3642: - call void @finch_panic(ptr @.str.2280, i64 1544, ptr @.str.2281) - unreachable -ok3643: - %t383 = getelementptr inbounds %S.gen.Gen, ptr %t381, i32 0, i32 14 - %t384 = load { ptr, i64, i64 }, ptr %t383 - %t385 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t386 = load { ptr, i64, i64 }, ptr %t385 - %t387 = call i64 @finch.gen.findEnum(ptr %t380, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t386) - %t388 = icmp sge i64 %t387, 0 - br label %logic.from3644 -logic.from3644: - br i1 %t388, label %logic.end3646, label %logic.rhs3645 -logic.rhs3645: - %t389 = load ptr, ptr %a1 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic3647, label %ok3648 -panic3647: - call void @finch_panic(ptr @.str.2282, i64 1544, ptr @.str.2283) - unreachable -ok3648: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 14 - %t393 = load { ptr, i64, i64 }, ptr %t392 - %t394 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t395 = load { ptr, i64, i64 }, ptr %t394 - %t396 = call i64 @finch.gen.findStruct(ptr %t389, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t395) - %t397 = icmp sge i64 %t396, 0 - br label %logic.rend3649 -logic.rend3649: - br label %logic.end3646 -logic.end3646: - %t398 = phi i1 [ true, %logic.from3644 ], [ %t397, %logic.rend3649 ] - br i1 %t398, label %then3650, label %endif3652 -then3650: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a227 - %t401 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t402 = load { ptr, i64, i64 }, ptr %t401 - store { ptr, i64, i64 } { ptr @.str.2284, i64 1, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - store { ptr, i64, i64 } %t406, ptr %a408 - store { ptr, i64, i64 } { ptr @.str.2285, i64 18, i64 0 }, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t406, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.fail(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t411) - store { ptr, i64, i64 } %t411, ptr %a412 - call void @finch_str_drop(ptr %a412) - br label %endif3652 -endif3652: - %t413 = load ptr, ptr %a1 - %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic3653, label %ok3654 -panic3653: - call void @finch_panic(ptr @.str.2286, i64 1547, ptr @.str.2287) - unreachable -ok3654: - %t415 = getelementptr inbounds %S.gen.Gen, ptr %t413, i32 0, i32 14 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - call void @finch_str_copy(ptr %a418, ptr %a417) - %t419 = load { ptr, i64, i64 }, ptr %a418 - %t420 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_copy(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = insertvalue %S.gen.EnumDef %t420, { ptr, i64, i64 } %t425, 1 - store %S.gen.EnumDef %t426, ptr %a427 - store i64 0, ptr %a428 - %t429 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a430 - br label %each.cond3655 -each.cond3655: - %t431 = getelementptr inbounds { ptr, i64, i64 }, ptr %t429, i32 0, i32 1 - %t432 = load i64, ptr %t431 - %t433 = load i64, ptr %a430 - %t434 = icmp slt i64 %t433, %t432 - br i1 %t434, label %each.body3656, label %each.end3658 -each.body3656: - %t435 = load ptr, ptr %t429 - %t436 = getelementptr inbounds %S.ast.Node, ptr %t435, i64 %t433 - %t437 = load %S.ast.Node, ptr %t436 - store %S.ast.Node %t437, ptr %a438 - %t439 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t440 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t441 = load i64, ptr %t440 - %t442 = icmp sgt i64 %t441, 0 - br i1 %t442, label %then3659, label %endif3661 -then3659: - %t443 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t444 = load { ptr, i64, i64 }, ptr %t443 - store { ptr, i64, i64 } %t444, ptr %a445 - %t446 = call i64 @finch_str_to_int(ptr %a445, ptr @.str.2288, i64 1551) - store i64 %t446, ptr %a428 - br label %endif3661 -endif3661: - %t447 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i32 0, i32 1 - %t449 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t450 = load { ptr, i64, i64 }, ptr %t449 - store i64 -1, ptr %a451 - %t452 = load i64, ptr %t448 - %t453 = load ptr, ptr %t447 - store i64 0, ptr %a454 - br label %find.cond3662 -find.cond3662: - %t455 = load i64, ptr %a454 - %t456 = icmp slt i64 %t455, %t452 - br i1 %t456, label %find.body3663, label %find.end3666 -find.body3663: - %t457 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t455 - %t458 = load { ptr, i64, i64 }, ptr %t457 - store { ptr, i64, i64 } %t458, ptr %a459 - store { ptr, i64, i64 } %t450, ptr %a460 - %t461 = call i32 @finch_str_eq(ptr %a459, ptr %a460) - %t462 = icmp ne i32 %t461, 0 - br i1 %t462, label %find.hit3664, label %find.next3665 -find.hit3664: - store i64 %t455, ptr %a451 - br label %find.end3666 -find.next3665: - %t463 = add i64 %t455, 1 - store i64 %t463, ptr %a454 - br label %find.cond3662 -find.end3666: - %t464 = load i64, ptr %a451 - %t465 = icmp sge i64 %t464, 0 - br i1 %t465, label %then3667, label %endif3669 -then3667: - %t466 = load ptr, ptr %a1 - %t467 = load %S.ast.Node, ptr %a438 - %t468 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t469 = load { ptr, i64, i64 }, ptr %t468 - store { ptr, i64, i64 } { ptr @.str.2289, i64 9, i64 0 }, ptr %a471 - store { ptr, i64, i64 } %t469, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a470 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.2290, i64 17, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - %t479 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t480 = load { ptr, i64, i64 }, ptr %t479 - store { ptr, i64, i64 } %t478, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t478, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.2291, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - call void @finch.gen.fail(ptr %t466, %S.ast.Node %t467, { ptr, i64, i64 } %t490) - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - br label %endif3669 -endif3669: - %t492 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t492, i32 0, i32 1 - %t494 = load i64, ptr %a428 - store i64 -1, ptr %a495 - %t496 = load i64, ptr %t493 - %t497 = load ptr, ptr %t492 - store i64 0, ptr %a498 - br label %find.cond3670 -find.cond3670: - %t499 = load i64, ptr %a498 - %t500 = icmp slt i64 %t499, %t496 - br i1 %t500, label %find.body3671, label %find.end3674 -find.body3671: - %t501 = getelementptr inbounds i64, ptr %t497, i64 %t499 - %t502 = load i64, ptr %t501 - %t503 = icmp eq i64 %t502, %t494 - br i1 %t503, label %find.hit3672, label %find.next3673 -find.hit3672: - store i64 %t499, ptr %a495 - br label %find.end3674 -find.next3673: - %t504 = add i64 %t499, 1 - store i64 %t504, ptr %a498 - br label %find.cond3670 -find.end3674: - %t505 = load i64, ptr %a495 - %t506 = icmp sge i64 %t505, 0 - br i1 %t506, label %then3675, label %endif3677 -then3675: - %t507 = load ptr, ptr %a1 - %t508 = load %S.ast.Node, ptr %a438 - %t509 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t510 = load { ptr, i64, i64 }, ptr %t509 - store { ptr, i64, i64 } { ptr @.str.2292, i64 16, i64 0 }, ptr %a512 - store { ptr, i64, i64 } %t510, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a511 - store { ptr, i64, i64 } %t514, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.2293, i64 17, i64 0 }, ptr %a517 - call void @finch_str_concat(ptr %a515, ptr %a516, ptr %a517) - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_drop(ptr %a518) - %t519 = load { ptr, i64, i64 }, ptr %a515 - %t520 = load i64, ptr %a428 - call void @finch_str_from_int(ptr %a521, i64 %t520) - %t522 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a524 - store { ptr, i64, i64 } %t522, ptr %a525 - call void @finch_str_concat(ptr %a523, ptr %a524, ptr %a525) - store { ptr, i64, i64 } %t519, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.2294, i64 20, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.fail(ptr %t507, %S.ast.Node %t508, { ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a534 - call void @finch_str_drop(ptr %a534) - br label %endif3677 -endif3677: - %t535 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 - %t537 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - call void @finch_str_copy(ptr %a540, ptr %a539) - %t541 = load { ptr, i64, i64 }, ptr %a540 - %t542 = load i64, ptr %t536 - %t543 = add i64 %t542, 1 - call void @finch_arr_reserve(ptr %t535, i64 %t543, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t544 = load ptr, ptr %t535 - %t545 = getelementptr inbounds { ptr, i64, i64 }, ptr %t544, i64 %t542 - store { ptr, i64, i64 } %t541, ptr %t545 - store i64 %t543, ptr %t536 - %t546 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t547 = getelementptr inbounds { ptr, i64, i64 }, ptr %t546, i32 0, i32 1 - %t548 = load i64, ptr %a428 - %t549 = load i64, ptr %t547 - %t550 = add i64 %t549, 1 - call void @finch_arr_reserve(ptr %t546, i64 %t550, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t551 = load ptr, ptr %t546 - %t552 = getelementptr inbounds i64, ptr %t551, i64 %t549 - store i64 %t548, ptr %t552 - store i64 %t550, ptr %t547 - %t553 = load i64, ptr %a428 - %t554 = add i64 %t553, 1 - store i64 %t554, ptr %a428 - br label %each.step3657 -each.step3657: - %t555 = load i64, ptr %a430 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a430 - br label %each.cond3655 -each.end3658: - %t557 = load ptr, ptr %a1 - %t558 = icmp eq ptr %t557, null - br i1 %t558, label %panic3678, label %ok3679 -panic3678: - call void @finch_panic(ptr @.str.2295, i64 1563, ptr @.str.2296) - unreachable -ok3679: - %t559 = getelementptr inbounds %S.gen.Gen, ptr %t557, i32 0, i32 21 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load %S.gen.EnumDef, ptr %a427 - store %S.gen.EnumDef %t561, ptr %a562 - call void @finch.copy.S_gen_EnumDef(ptr %a563, ptr %a562) - %t564 = load %S.gen.EnumDef, ptr %a563 - %t565 = load i64, ptr %t560 - %t566 = add i64 %t565, 1 - call void @finch_arr_reserve(ptr %t559, i64 %t566, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) - %t567 = load ptr, ptr %t559 - %t568 = getelementptr inbounds %S.gen.EnumDef, ptr %t567, i64 %t565 - store %S.gen.EnumDef %t564, ptr %t568 - store i64 %t566, ptr %t560 - call void @finch.drop.S_gen_EnumDef(ptr %a427) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -for.step3604: - %t569 = load i64, ptr %a204 - %t570 = add i64 %t569, 1 - store i64 %t570, ptr %a204 - br label %for.cond3602 -for.end3605: - br label %for.step3590 -for.step3590: - %t571 = load i64, ptr %a170 - %t572 = add i64 %t571, 1 - store i64 %t572, ptr %a170 - br label %for.cond3588 -for.end3591: - %t573 = load ptr, ptr %a1 - %t574 = icmp eq ptr %t573, null - br i1 %t574, label %panic3680, label %ok3681 -panic3680: - call void @finch_panic(ptr @.str.2297, i64 1566, ptr @.str.2298) - unreachable -ok3681: - %t575 = getelementptr inbounds %S.gen.Gen, ptr %t573, i32 0, i32 26 - %t576 = getelementptr inbounds %S.cimport.CImports, ptr %t575, i32 0, i32 4 - %t577 = getelementptr inbounds { ptr, i64, i64 }, ptr %t576, i32 0, i32 1 - %t578 = load i64, ptr %t577 - store i64 0, ptr %a579 - br label %for.cond3682 -for.cond3682: - %t580 = load i64, ptr %a579 - %t581 = icmp slt i64 %t580, %t578 - br i1 %t581, label %for.body3683, label %for.end3685 -for.body3683: - %t582 = load ptr, ptr %a1 - %t583 = icmp eq ptr %t582, null - br i1 %t583, label %panic3686, label %ok3687 -panic3686: - call void @finch_panic(ptr @.str.2299, i64 1567, ptr @.str.2300) - unreachable -ok3687: - %t584 = getelementptr inbounds %S.gen.Gen, ptr %t582, i32 0, i32 16 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i32 0, i32 1 - %t586 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.2301, i64 1, i64 0 }, 0 - %t587 = load ptr, ptr %a1 - %t588 = icmp eq ptr %t587, null - br i1 %t588, label %panic3688, label %ok3689 -panic3688: - call void @finch_panic(ptr @.str.2302, i64 1567, ptr @.str.2303) - unreachable -ok3689: - %t589 = getelementptr inbounds %S.gen.Gen, ptr %t587, i32 0, i32 26 - %t590 = getelementptr inbounds %S.cimport.CImports, ptr %t589, i32 0, i32 4 - %t591 = load i64, ptr %a579 - %t592 = load { ptr, i64, i64 }, ptr %t590 - %t593 = extractvalue { ptr, i64, i64 } %t592, 1 - %t594 = icmp uge i64 %t591, %t593 - br i1 %t594, label %range3690, label %inrange3691 -range3690: - call void @finch_panic_index(ptr @.str.2304, i64 1567, i64 %t591, i64 %t593) - unreachable -inrange3691: - %t595 = extractvalue { ptr, i64, i64 } %t592, 0 - %t596 = getelementptr inbounds { ptr, i64, i64 }, ptr %t595, i64 %t591 - %t597 = load { ptr, i64, i64 }, ptr %t596 - store { ptr, i64, i64 } %t597, ptr %a598 - call void @finch_str_copy(ptr %a599, ptr %a598) - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = insertvalue %S.gen.StructDef %t586, { ptr, i64, i64 } %t600, 1 - %t602 = insertvalue %S.gen.StructDef %t601, i1 true, 2 - %t603 = insertvalue %S.gen.StructDef %t602, i64 -1, 13 - %t604 = load i64, ptr %a579 - %t605 = insertvalue %S.gen.StructDef %t603, i64 %t604, 14 - %t606 = load i64, ptr %t585 - %t607 = add i64 %t606, 1 - call void @finch_arr_reserve(ptr %t584, i64 %t607, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t608 = load ptr, ptr %t584 - %t609 = getelementptr inbounds %S.gen.StructDef, ptr %t608, i64 %t606 - store %S.gen.StructDef %t605, ptr %t609 - store i64 %t607, ptr %t585 - br label %for.step3684 -for.step3684: - %t610 = load i64, ptr %a579 - %t611 = add i64 %t610, 1 - store i64 %t611, ptr %a579 - br label %for.cond3682 -for.end3685: - %t612 = load ptr, ptr %a1 - %t613 = icmp eq ptr %t612, null - br i1 %t613, label %panic3692, label %ok3693 -panic3692: - call void @finch_panic(ptr @.str.2305, i64 1569, ptr @.str.2306) - unreachable -ok3693: - %t614 = getelementptr inbounds %S.gen.Gen, ptr %t612, i32 0, i32 16 - %t615 = getelementptr inbounds { ptr, i64, i64 }, ptr %t614, i32 0, i32 1 - %t616 = load i64, ptr %t615 - store i64 0, ptr %a617 - br label %for.cond3694 -for.cond3694: - %t618 = load i64, ptr %a617 - %t619 = icmp slt i64 %t618, %t616 - br i1 %t619, label %for.body3695, label %for.end3697 -for.body3695: - %t620 = load ptr, ptr %a1 - %t621 = load i64, ptr %a617 - call void @finch.gen.resolveStruct(ptr %t620, i64 %t621) - br label %for.step3696 -for.step3696: - %t622 = load i64, ptr %a617 - %t623 = add i64 %t622, 1 - store i64 %t623, ptr %a617 - br label %for.cond3694 -for.end3697: - %t624 = load ptr, ptr %a1 - %t625 = icmp eq ptr %t624, null - br i1 %t625, label %panic3698, label %ok3699 -panic3698: - call void @finch_panic(ptr @.str.2307, i64 1572, ptr @.str.2308) - unreachable -ok3699: - %t626 = getelementptr inbounds %S.gen.Gen, ptr %t624, i32 0, i32 0 - %t627 = getelementptr inbounds { ptr, i64, i64 }, ptr %t626, i32 0, i32 1 - %t628 = load i64, ptr %t627 - store i64 0, ptr %a629 - br label %for.cond3700 -for.cond3700: - %t630 = load i64, ptr %a629 - %t631 = icmp slt i64 %t630, %t628 - br i1 %t631, label %for.body3701, label %for.end3703 -for.body3701: - %t632 = load ptr, ptr %a1 - %t633 = icmp eq ptr %t632, null - br i1 %t633, label %panic3704, label %ok3705 -panic3704: - call void @finch_panic(ptr @.str.2309, i64 1573, ptr @.str.2310) - unreachable -ok3705: - %t634 = getelementptr inbounds %S.gen.Gen, ptr %t632, i32 0, i32 0 - %t635 = load i64, ptr %a629 - %t636 = load { ptr, i64, i64 }, ptr %t634 - %t637 = extractvalue { ptr, i64, i64 } %t636, 1 - %t638 = icmp uge i64 %t635, %t637 - br i1 %t638, label %range3706, label %inrange3707 -range3706: - call void @finch_panic_index(ptr @.str.2311, i64 1573, i64 %t635, i64 %t637) - unreachable -inrange3707: - %t639 = extractvalue { ptr, i64, i64 } %t636, 0 - %t640 = getelementptr inbounds %S.ast.Program, ptr %t639, i64 %t635 - %t641 = getelementptr inbounds %S.ast.Program, ptr %t640, i32 0, i32 0 - %t642 = load { ptr, i64, i64 }, ptr %t641 - %t643 = load ptr, ptr %a1 - %t644 = icmp eq ptr %t643, null - br i1 %t644, label %panic3708, label %ok3709 -panic3708: - call void @finch_panic(ptr @.str.2312, i64 1573, ptr @.str.2313) - unreachable -ok3709: - %t645 = getelementptr inbounds %S.gen.Gen, ptr %t643, i32 0, i32 14 - store { ptr, i64, i64 } %t642, ptr %a646 - call void @finch_str_copy(ptr %a647, ptr %a646) - %t648 = load { ptr, i64, i64 }, ptr %a647 - %t649 = load { ptr, i64, i64 }, ptr %t645 - store { ptr, i64, i64 } %t648, ptr %t645 - store { ptr, i64, i64 } %t649, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load ptr, ptr %a1 - %t652 = icmp eq ptr %t651, null - br i1 %t652, label %panic3710, label %ok3711 -panic3710: - call void @finch_panic(ptr @.str.2314, i64 1574, ptr @.str.2315) - unreachable -ok3711: - %t653 = getelementptr inbounds %S.gen.Gen, ptr %t651, i32 0, i32 0 - %t654 = load i64, ptr %a629 - %t655 = load { ptr, i64, i64 }, ptr %t653 - %t656 = extractvalue { ptr, i64, i64 } %t655, 1 - %t657 = icmp uge i64 %t654, %t656 - br i1 %t657, label %range3712, label %inrange3713 -range3712: - call void @finch_panic_index(ptr @.str.2316, i64 1574, i64 %t654, i64 %t656) - unreachable -inrange3713: - %t658 = extractvalue { ptr, i64, i64 } %t655, 0 - %t659 = getelementptr inbounds %S.ast.Program, ptr %t658, i64 %t654 - %t660 = getelementptr inbounds %S.ast.Program, ptr %t659, i32 0, i32 8 - %t661 = getelementptr inbounds { ptr, i64, i64 }, ptr %t660, i32 0, i32 1 - %t662 = load i64, ptr %t661 - store i64 0, ptr %a663 - br label %for.cond3714 -for.cond3714: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t662 - br i1 %t665, label %for.body3715, label %for.end3717 -for.body3715: - %t666 = load ptr, ptr %a1 - %t667 = icmp eq ptr %t666, null - br i1 %t667, label %panic3718, label %ok3719 -panic3718: - call void @finch_panic(ptr @.str.2317, i64 1575, ptr @.str.2318) - unreachable -ok3719: - %t668 = getelementptr inbounds %S.gen.Gen, ptr %t666, i32 0, i32 0 - %t669 = load i64, ptr %a629 - %t670 = load { ptr, i64, i64 }, ptr %t668 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range3720, label %inrange3721 -range3720: - call void @finch_panic_index(ptr @.str.2319, i64 1575, i64 %t669, i64 %t671) - unreachable -inrange3721: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.ast.Program, ptr %t673, i64 %t669 - %t675 = getelementptr inbounds %S.ast.Program, ptr %t674, i32 0, i32 8 - %t676 = load i64, ptr %a663 - %t677 = load { ptr, i64, i64 }, ptr %t675 - %t678 = extractvalue { ptr, i64, i64 } %t677, 1 - %t679 = icmp uge i64 %t676, %t678 - br i1 %t679, label %range3722, label %inrange3723 -range3722: - call void @finch_panic_index(ptr @.str.2320, i64 1575, i64 %t676, i64 %t678) - unreachable -inrange3723: - %t680 = extractvalue { ptr, i64, i64 } %t677, 0 - %t681 = getelementptr inbounds %S.ast.Node, ptr %t680, i64 %t676 - %t682 = load %S.ast.Node, ptr %t681 - store %S.ast.Node %t682, ptr %a683 - call void @finch.copy.S_ast_Node(ptr %a684, ptr %a683) - %t685 = load %S.ast.Node, ptr %a684 - store %S.ast.Node %t685, ptr %a686 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t688 = getelementptr inbounds { ptr, i64, i64 }, ptr %t687, i32 0, i32 1 - %t689 = load i64, ptr %t688 - %t690 = icmp sgt i64 %t689, 0 - br i1 %t690, label %then3724, label %endif3726 -then3724: - %t691 = load ptr, ptr %a1 - %t692 = load ptr, ptr %a1 - %t693 = icmp eq ptr %t692, null - br i1 %t693, label %panic3727, label %ok3728 -panic3727: - call void @finch_panic(ptr @.str.2321, i64 1578, ptr @.str.2322) - unreachable -ok3728: - %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 - %t695 = load { ptr, i64, i64 }, ptr %t694 - %t696 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t697 = load { ptr, i64, i64 }, ptr %t696 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t699 = load { ptr, i64, i64 }, ptr %t698 - %t700 = call i64 @finch.gen.findTemplate(ptr %t691, { ptr, i64, i64 } %t695, { ptr, i64, i64 } %t697, { ptr, i64, i64 } %t699, i1 false) - %t701 = icmp sge i64 %t700, 0 - br i1 %t701, label %then3729, label %endif3731 -then3729: - %t702 = load ptr, ptr %a1 - %t703 = load %S.ast.Node, ptr %a686 - %t704 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t705 = load { ptr, i64, i64 }, ptr %t704 - store { ptr, i64, i64 } { ptr @.str.2323, i64 10, i64 0 }, 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 - store { ptr, i64, i64 } %t709, ptr %a711 - store { ptr, i64, i64 } { ptr @.str.2324, i64 18, i64 0 }, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t709, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - call void @finch.gen.fail(ptr %t702, %S.ast.Node %t703, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a715 - call void @finch_str_drop(ptr %a715) - br label %endif3731 -endif3731: - %t716 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t717 = getelementptr inbounds { ptr, i64, i64 }, ptr %t716, i32 0, i32 1 - %t718 = load i64, ptr %t717 - %t719 = icmp sgt i64 %t718, 0 - br label %logic.from3732 -logic.from3732: - br i1 %t719, label %logic.rhs3733, label %logic.end3734 -logic.rhs3733: - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = icmp eq ptr %t721, null - br i1 %t722, label %panic3735, label %ok3736 -panic3735: - call void @finch_panic(ptr @.str.2325, i64 1581, ptr @.str.2326) - unreachable -ok3736: - %t723 = getelementptr inbounds %S.gen.Gen, ptr %t721, i32 0, i32 14 - %t724 = load { ptr, i64, i64 }, ptr %t723 - %t725 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t726 = load { ptr, i64, i64 }, ptr %t725 - %t727 = call i64 @finch.gen.findTemplate(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t726, { ptr, i64, i64 } { ptr @.str.2327, i64 0, i64 0 }, i1 true) - %t728 = icmp slt i64 %t727, 0 - br label %logic.rend3737 -logic.rend3737: - br label %logic.end3734 -logic.end3734: - %t729 = phi i1 [ false, %logic.from3732 ], [ %t728, %logic.rend3737 ] - br i1 %t729, label %then3738, label %endif3740 -then3738: - %t730 = load ptr, ptr %a1 - %t731 = load %S.ast.Node, ptr %a686 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t733 = load { ptr, i64, i64 }, ptr %t732 - store { ptr, i64, i64 } { ptr @.str.2328, i64 34, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.2329, i64 53, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - call void @finch.gen.fail(ptr %t730, %S.ast.Node %t731, { ptr, i64, i64 } %t742) - store { ptr, i64, i64 } %t742, ptr %a743 - call void @finch_str_drop(ptr %a743) - br label %endif3740 -endif3740: - %t744 = load ptr, ptr %a1 - %t745 = icmp eq ptr %t744, null - br i1 %t745, label %panic3741, label %ok3742 -panic3741: - call void @finch_panic(ptr @.str.2330, i64 1584, ptr @.str.2331) - unreachable -ok3742: - %t746 = getelementptr inbounds %S.gen.Gen, ptr %t744, i32 0, i32 17 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i32 0, i32 1 - %t748 = load ptr, ptr %a1 - %t749 = icmp eq ptr %t748, null - br i1 %t749, label %panic3743, label %ok3744 -panic3743: - call void @finch_panic(ptr @.str.2332, i64 1584, ptr @.str.2333) - unreachable -ok3744: - %t750 = getelementptr inbounds %S.gen.Gen, ptr %t748, i32 0, i32 14 - %t751 = load { ptr, i64, i64 }, ptr %t750 - store { ptr, i64, i64 } %t751, ptr %a752 - call void @finch_str_copy(ptr %a753, ptr %a752) - %t754 = load { ptr, i64, i64 }, ptr %a753 - %t755 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t754, 0 - %t756 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t757 = load { ptr, i64, i64 }, ptr %t756 - store { ptr, i64, i64 } %t757, ptr %a758 - call void @finch_str_copy(ptr %a759, ptr %a758) - %t760 = load { ptr, i64, i64 }, ptr %a759 - %t761 = insertvalue %S.gen.Template %t755, { ptr, i64, i64 } %t760, 1 - %t762 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t763 = load { ptr, i64, i64 }, ptr %t762 - store { ptr, i64, i64 } %t763, ptr %a764 - call void @finch_str_copy(ptr %a765, ptr %a764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - %t767 = insertvalue %S.gen.Template %t761, { ptr, i64, i64 } %t766, 2 - %t768 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t769 = load { ptr, i64, i64 }, ptr %t768 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch.copy.arr_str(ptr %a771, ptr %a770) - %t772 = load { ptr, i64, i64 }, ptr %a771 - %t773 = insertvalue %S.gen.Template %t767, { ptr, i64, i64 } %t772, 3 - %t774 = load i64, ptr %a629 - %t775 = insertvalue %S.gen.Template %t773, i64 %t774, 4 - %t776 = load i64, ptr %a663 - %t777 = insertvalue %S.gen.Template %t775, i64 %t776, 5 - %t778 = load i64, ptr %t747 - %t779 = add i64 %t778, 1 - call void @finch_arr_reserve(ptr %t746, i64 %t779, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t780 = load ptr, ptr %t746 - %t781 = getelementptr inbounds %S.gen.Template, ptr %t780, i64 %t778 - store %S.gen.Template %t777, ptr %t781 - store i64 %t779, ptr %t747 - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -endif3726: - %t782 = load ptr, ptr %a1 - %t783 = icmp eq ptr %t782, null - br i1 %t783, label %panic3745, label %ok3746 -panic3745: - call void @finch_panic(ptr @.str.2334, i64 1587, ptr @.str.2335) - unreachable -ok3746: - %t784 = getelementptr inbounds %S.gen.Gen, ptr %t782, i32 0, i32 14 - %t785 = load { ptr, i64, i64 }, ptr %t784 - store { ptr, i64, i64 } %t785, ptr %a786 - call void @finch_str_copy(ptr %a787, ptr %a786) - %t788 = load { ptr, i64, i64 }, ptr %a787 - store { ptr, i64, i64 } %t788, ptr %a789 - store i1 false, ptr %a790 - %t791 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t792 = getelementptr inbounds { ptr, i64, i64 }, ptr %t791, i32 0, i32 1 - %t793 = load i64, ptr %t792 - %t794 = icmp sgt i64 %t793, 0 - br label %logic.from3747 -logic.from3747: - br i1 %t794, label %logic.rhs3748, label %logic.end3749 -logic.rhs3748: - %t795 = load ptr, ptr %a1 - %t796 = load ptr, ptr %a1 - %t797 = icmp eq ptr %t796, null - br i1 %t797, label %panic3750, label %ok3751 -panic3750: - call void @finch_panic(ptr @.str.2336, i64 1589, ptr @.str.2337) - unreachable -ok3751: - %t798 = getelementptr inbounds %S.gen.Gen, ptr %t796, i32 0, i32 14 - %t799 = load { ptr, i64, i64 }, ptr %t798 - %t800 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - %t802 = call i64 @finch.gen.findEnum(ptr %t795, { ptr, i64, i64 } %t799, { ptr, i64, i64 } %t801) - %t803 = icmp sge i64 %t802, 0 - br label %logic.rend3752 -logic.rend3752: - br label %logic.end3749 -logic.end3749: - %t804 = phi i1 [ false, %logic.from3747 ], [ %t803, %logic.rend3752 ] - br i1 %t804, label %then3753, label %else3754 -then3753: - store i1 true, ptr %a790 - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a789 - %t807 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t808 = load { ptr, i64, i64 }, ptr %t807 - %t809 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %t809 - %t811 = call i64 @finch.gen.findMethod(ptr %t805, { ptr, i64, i64 } %t806, { ptr, i64, i64 } %t808, { ptr, i64, i64 } %t810) - %t812 = icmp sge i64 %t811, 0 - br i1 %t812, label %then3756, label %endif3758 -then3756: - %t813 = load ptr, ptr %a1 - %t814 = load %S.ast.Node, ptr %a686 - %t815 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } { ptr @.str.2338, i64 11, i64 0 }, ptr %a818 - store { ptr, i64, i64 } %t816, ptr %a819 - call void @finch_str_concat(ptr %a817, ptr %a818, ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a817 - store { ptr, i64, i64 } %t820, ptr %a822 - store { ptr, i64, i64 } { ptr @.str.2339, i64 1, i64 0 }, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - store { ptr, i64, i64 } %t820, ptr %a824 - call void @finch_str_drop(ptr %a824) - %t825 = load { ptr, i64, i64 }, ptr %a821 - %t826 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t827 = load { ptr, i64, i64 }, ptr %t826 - store { ptr, i64, i64 } %t825, ptr %a829 - store { ptr, i64, i64 } %t827, ptr %a830 - call void @finch_str_concat(ptr %a828, ptr %a829, ptr %a830) - store { ptr, i64, i64 } %t825, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a828 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.2340, i64 17, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.fail(ptr %t813, %S.ast.Node %t814, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - br label %endif3758 -endif3758: - br label %endif3755 -else3754: - %t839 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t840 = getelementptr inbounds { ptr, i64, i64 }, ptr %t839, i32 0, i32 1 - %t841 = load i64, ptr %t840 - %t842 = icmp sgt i64 %t841, 0 - br i1 %t842, label %then3759, label %else3760 -then3759: - %t843 = load ptr, ptr %a1 - %t844 = load ptr, ptr %a1 - %t845 = icmp eq ptr %t844, null - br i1 %t845, label %panic3762, label %ok3763 -panic3762: - call void @finch_panic(ptr @.str.2341, i64 1595, ptr @.str.2342) - unreachable -ok3763: - %t846 = getelementptr inbounds %S.gen.Gen, ptr %t844, i32 0, i32 14 - %t847 = load { ptr, i64, i64 }, ptr %t846 - %t848 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t849 = load { ptr, i64, i64 }, ptr %t848 - %t850 = call i64 @finch.gen.findStruct(ptr %t843, { ptr, i64, i64 } %t847, { ptr, i64, i64 } %t849) - store i64 %t850, ptr %a851 - %t852 = load i64, ptr %a851 - %t853 = icmp slt i64 %t852, 0 - br label %logic.from3764 -logic.from3764: - br i1 %t853, label %logic.rhs3765, label %logic.end3766 -logic.rhs3765: - %t854 = load ptr, ptr %a1 - %t855 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t856 = load { ptr, i64, i64 }, ptr %t855 - %t857 = call i64 @finch.gen.findStruct(ptr %t854, { ptr, i64, i64 } { ptr @.str.2343, i64 1, i64 0 }, { ptr, i64, i64 } %t856) - %t858 = icmp sge i64 %t857, 0 - br label %logic.rend3767 -logic.rend3767: - br label %logic.end3766 -logic.end3766: - %t859 = phi i1 [ false, %logic.from3764 ], [ %t858, %logic.rend3767 ] - br i1 %t859, label %then3768, label %endif3770 -then3768: - %t860 = load ptr, ptr %a1 - %t861 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t862 = load { ptr, i64, i64 }, ptr %t861 - %t863 = call i64 @finch.gen.findStruct(ptr %t860, { ptr, i64, i64 } { ptr @.str.2344, i64 1, i64 0 }, { ptr, i64, i64 } %t862) - store i64 %t863, ptr %a851 - %t864 = load { ptr, i64, i64 }, ptr %a789 - store { ptr, i64, i64 } { ptr @.str.2345, i64 1, i64 0 }, ptr %a789 - store { ptr, i64, i64 } %t864, ptr %a865 - call void @finch_str_drop(ptr %a865) - br label %endif3770 -endif3770: - %t866 = load i64, ptr %a851 - %t867 = icmp slt i64 %t866, 0 - br i1 %t867, label %then3771, label %endif3773 -then3771: - %t868 = load ptr, ptr %a1 - %t869 = load %S.ast.Node, ptr %a686 - %t870 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t871 = load { ptr, i64, i64 }, ptr %t870 - store { ptr, i64, i64 } { ptr @.str.2346, i64 26, i64 0 }, ptr %a873 - store { ptr, i64, i64 } %t871, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a872 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.2347, i64 76, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.fail(ptr %t868, %S.ast.Node %t869, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - br label %endif3773 -endif3773: - %t882 = load ptr, ptr %a1 - %t883 = load { ptr, i64, i64 }, ptr %a789 - %t884 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t885 = load { ptr, i64, i64 }, ptr %t884 - %t886 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t887 = load { ptr, i64, i64 }, ptr %t886 - %t888 = call i64 @finch.gen.findMethod(ptr %t882, { ptr, i64, i64 } %t883, { ptr, i64, i64 } %t885, { ptr, i64, i64 } %t887) - %t889 = icmp sge i64 %t888, 0 - br i1 %t889, label %then3774, label %endif3776 -then3774: - %t890 = load ptr, ptr %a1 - %t891 = load %S.ast.Node, ptr %a686 - %t892 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t893 = load { ptr, i64, i64 }, ptr %t892 - store { ptr, i64, i64 } { ptr @.str.2348, i64 11, i64 0 }, 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.2349, i64 1, i64 0 }, ptr %a900 - call void @finch_str_concat(ptr %a898, ptr %a899, ptr %a900) - store { ptr, i64, i64 } %t897, ptr %a901 - call void @finch_str_drop(ptr %a901) - %t902 = load { ptr, i64, i64 }, ptr %a898 - %t903 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t902, ptr %a906 - store { ptr, i64, i64 } %t904, ptr %a907 - call void @finch_str_concat(ptr %a905, ptr %a906, ptr %a907) - store { ptr, i64, i64 } %t902, ptr %a908 - call void @finch_str_drop(ptr %a908) - %t909 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t909, ptr %a911 - store { ptr, i64, i64 } { ptr @.str.2350, i64 17, i64 0 }, ptr %a912 - call void @finch_str_concat(ptr %a910, ptr %a911, ptr %a912) - store { ptr, i64, i64 } %t909, ptr %a913 - call void @finch_str_drop(ptr %a913) - %t914 = load { ptr, i64, i64 }, ptr %a910 - call void @finch.gen.fail(ptr %t890, %S.ast.Node %t891, { ptr, i64, i64 } %t914) - store { ptr, i64, i64 } %t914, ptr %a915 - call void @finch_str_drop(ptr %a915) - br label %endif3776 -endif3776: - %t916 = load ptr, ptr %a1 - %t917 = icmp eq ptr %t916, null - br i1 %t917, label %panic3777, label %ok3778 -panic3777: - call void @finch_panic(ptr @.str.2351, i64 1606, ptr @.str.2352) - unreachable -ok3778: - %t918 = getelementptr inbounds %S.gen.Gen, ptr %t916, i32 0, i32 16 - %t919 = load i64, ptr %a851 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3779, label %inrange3780 -range3779: - call void @finch_panic_index(ptr @.str.2353, i64 1606, i64 %t919, i64 %t921) - unreachable -inrange3780: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.gen.StructDef, ptr %t923, i64 %t919 - %t925 = getelementptr inbounds %S.gen.StructDef, ptr %t924, i32 0, i32 11 - %t926 = getelementptr inbounds { ptr, i64, i64 }, ptr %t925, i32 0, i32 1 - %t927 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t928 = load { ptr, i64, i64 }, ptr %t927 - store i64 -1, ptr %a929 - %t930 = load i64, ptr %t926 - %t931 = load ptr, ptr %t925 - store i64 0, ptr %a932 - br label %find.cond3781 -find.cond3781: - %t933 = load i64, ptr %a932 - %t934 = icmp slt i64 %t933, %t930 - br i1 %t934, label %find.body3782, label %find.end3785 -find.body3782: - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t931, i64 %t933 - %t936 = load { ptr, i64, i64 }, ptr %t935 - store { ptr, i64, i64 } %t936, ptr %a937 - store { ptr, i64, i64 } %t928, ptr %a938 - %t939 = call i32 @finch_str_eq(ptr %a937, ptr %a938) - %t940 = icmp ne i32 %t939, 0 - br i1 %t940, label %find.hit3783, label %find.next3784 -find.hit3783: - store i64 %t933, ptr %a929 - br label %find.end3785 -find.next3784: - %t941 = add i64 %t933, 1 - store i64 %t941, ptr %a932 - br label %find.cond3781 -find.end3785: - %t942 = load i64, ptr %a929 - %t943 = icmp sge i64 %t942, 0 - br i1 %t943, label %then3786, label %endif3788 -then3786: - %t944 = load ptr, ptr %a1 - %t945 = load %S.ast.Node, ptr %a686 - %t946 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t947 = load { ptr, i64, i64 }, ptr %t946 - store { ptr, i64, i64 } { ptr @.str.2354, i64 11, i64 0 }, ptr %a949 - store { ptr, i64, i64 } %t947, ptr %a950 - call void @finch_str_concat(ptr %a948, ptr %a949, ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a948 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.2355, i64 28, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.2356, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - call void @finch.gen.fail(ptr %t944, %S.ast.Node %t945, { ptr, i64, i64 } %t968) - store { ptr, i64, i64 } %t968, ptr %a969 - call void @finch_str_drop(ptr %a969) - br label %endif3788 -endif3788: - br label %endif3761 -else3760: - %t970 = load ptr, ptr %a1 - %t971 = load ptr, ptr %a1 - %t972 = icmp eq ptr %t971, null - br i1 %t972, label %panic3789, label %ok3790 -panic3789: - call void @finch_panic(ptr @.str.2357, i64 1610, ptr @.str.2358) - unreachable -ok3790: - %t973 = getelementptr inbounds %S.gen.Gen, ptr %t971, i32 0, i32 14 - %t974 = load { ptr, i64, i64 }, ptr %t973 - %t975 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t976 = load { ptr, i64, i64 }, ptr %t975 - %t977 = call i64 @finch.gen.findFn(ptr %t970, { ptr, i64, i64 } %t974, { ptr, i64, i64 } %t976) - %t978 = icmp sge i64 %t977, 0 - br i1 %t978, label %then3791, label %endif3793 -then3791: - %t979 = load ptr, ptr %a1 - %t980 = load %S.ast.Node, ptr %a686 - %t981 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t982 = load { ptr, i64, i64 }, ptr %t981 - store { ptr, i64, i64 } { ptr @.str.2359, i64 10, i64 0 }, ptr %a984 - store { ptr, i64, i64 } %t982, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - %t986 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } %t986, ptr %a988 - store { ptr, i64, i64 } { ptr @.str.2360, i64 18, i64 0 }, ptr %a989 - call void @finch_str_concat(ptr %a987, ptr %a988, ptr %a989) - store { ptr, i64, i64 } %t986, ptr %a990 - call void @finch_str_drop(ptr %a990) - %t991 = load { ptr, i64, i64 }, ptr %a987 - call void @finch.gen.fail(ptr %t979, %S.ast.Node %t980, { ptr, i64, i64 } %t991) - store { ptr, i64, i64 } %t991, ptr %a992 - call void @finch_str_drop(ptr %a992) - br label %endif3793 -endif3793: - %t993 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t994) - br i1 %t995, label %then3794, label %endif3796 -then3794: - %t996 = load ptr, ptr %a1 - %t997 = load %S.ast.Node, ptr %a686 - %t998 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t999 = load { ptr, i64, i64 }, ptr %t998 - store { ptr, i64, i64 } { ptr @.str.2361, i64 1, i64 0 }, ptr %a1001 - store { ptr, i64, i64 } %t999, ptr %a1002 - call void @finch_str_concat(ptr %a1000, ptr %a1001, ptr %a1002) - %t1003 = load { ptr, i64, i64 }, ptr %a1000 - store { ptr, i64, i64 } %t1003, ptr %a1005 - store { ptr, i64, i64 } { ptr @.str.2362, i64 43, i64 0 }, ptr %a1006 - call void @finch_str_concat(ptr %a1004, ptr %a1005, ptr %a1006) - store { ptr, i64, i64 } %t1003, ptr %a1007 - call void @finch_str_drop(ptr %a1007) - %t1008 = load { ptr, i64, i64 }, ptr %a1004 - call void @finch.gen.fail(ptr %t996, %S.ast.Node %t997, { ptr, i64, i64 } %t1008) - store { ptr, i64, i64 } %t1008, ptr %a1009 - call void @finch_str_drop(ptr %a1009) - br label %endif3796 -endif3796: - br label %endif3761 -endif3761: - br label %endif3755 -endif3755: - %t1010 = load ptr, ptr %a1 - %t1011 = icmp eq ptr %t1010, null - br i1 %t1011, label %panic3797, label %ok3798 -panic3797: - call void @finch_panic(ptr @.str.2363, i64 1617, ptr @.str.2364) - unreachable -ok3798: - %t1012 = getelementptr inbounds %S.gen.Gen, ptr %t1010, i32 0, i32 14 - %t1013 = load { ptr, i64, i64 }, ptr %t1012 - store { ptr, i64, i64 } %t1013, ptr %a1014 - call void @finch_str_copy(ptr %a1015, ptr %a1014) - %t1016 = load { ptr, i64, i64 }, ptr %a1015 - %t1017 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t1016, 0 - %t1018 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1019 = load { ptr, i64, i64 }, ptr %t1018 - store { ptr, i64, i64 } %t1019, ptr %a1020 - call void @finch_str_copy(ptr %a1021, ptr %a1020) - %t1022 = load { ptr, i64, i64 }, ptr %a1021 - %t1023 = insertvalue %S.gen.FnSig %t1017, { ptr, i64, i64 } %t1022, 1 - %t1024 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1025 = load { ptr, i64, i64 }, ptr %t1024 - store { ptr, i64, i64 } %t1025, ptr %a1026 - call void @finch_str_copy(ptr %a1027, ptr %a1026) - %t1028 = load { ptr, i64, i64 }, ptr %a1027 - %t1029 = insertvalue %S.gen.FnSig %t1023, { ptr, i64, i64 } %t1028, 2 - %t1030 = load { ptr, i64, i64 }, ptr %a789 - 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.FnSig %t1029, { ptr, i64, i64 } %t1033, 3 - %t1035 = load i1, ptr %a790 - %t1036 = insertvalue %S.gen.FnSig %t1034, i1 %t1035, 4 - %t1037 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1038 = load i1, ptr %t1037 - %t1039 = insertvalue %S.gen.FnSig %t1036, i1 %t1038, 5 - %t1040 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 7 - %t1041 = load i1, ptr %t1040 - %t1042 = insertvalue %S.gen.FnSig %t1039, i1 %t1041, 9 - %t1043 = load i64, ptr %a629 - %t1044 = insertvalue %S.gen.FnSig %t1042, i64 %t1043, 16 - %t1045 = load i64, ptr %a663 - %t1046 = insertvalue %S.gen.FnSig %t1044, i64 %t1045, 17 - store %S.gen.FnSig %t1046, ptr %a1047 - %t1048 = load ptr, ptr %a1 - %t1049 = icmp eq ptr %t1048, null - br i1 %t1049, label %panic3799, label %ok3800 -panic3799: - call void @finch_panic(ptr @.str.2366, i64 1618, ptr @.str.2367) - unreachable -ok3800: - %t1050 = getelementptr inbounds %S.gen.Gen, ptr %t1048, i32 0, i32 14 - %t1051 = load { ptr, i64, i64 }, ptr %t1050 - %t1052 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1051) - store { ptr, i64, i64 } { ptr @.str.2365, i64 7, i64 0 }, ptr %a1054 - store { ptr, i64, i64 } %t1052, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - store { ptr, i64, i64 } %t1057, ptr %a1059 - store { ptr, i64, i64 } { ptr @.str.2368, i64 1, i64 0 }, ptr %a1060 - call void @finch_str_concat(ptr %a1058, ptr %a1059, ptr %a1060) - store { ptr, i64, i64 } %t1057, ptr %a1061 - call void @finch_str_drop(ptr %a1061) - %t1062 = load { ptr, i64, i64 }, ptr %a1058 - %t1063 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - store { ptr, i64, i64 } %t1062, ptr %a1066 - store { ptr, i64, i64 } %t1064, ptr %a1067 - call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067) - store { ptr, i64, i64 } %t1062, ptr %a1068 - call void @finch_str_drop(ptr %a1068) - %t1069 = load { ptr, i64, i64 }, ptr %a1065 - %t1070 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1069, ptr %t1070 - store { ptr, i64, i64 } %t1071, ptr %a1072 - call void @finch_str_drop(ptr %a1072) - %t1073 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1074 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1073, i32 0, i32 1 - %t1075 = load i64, ptr %t1074 - %t1076 = icmp sgt i64 %t1075, 0 - br i1 %t1076, label %then3801, label %endif3803 -then3801: - %t1077 = load ptr, ptr %a1 - %t1078 = icmp eq ptr %t1077, null - br i1 %t1078, label %panic3804, label %ok3805 -panic3804: - call void @finch_panic(ptr @.str.2370, i64 1620, ptr @.str.2371) - unreachable -ok3805: - %t1079 = getelementptr inbounds %S.gen.Gen, ptr %t1077, i32 0, i32 14 - %t1080 = load { ptr, i64, i64 }, ptr %t1079 - %t1081 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1080) - store { ptr, i64, i64 } { ptr @.str.2369, i64 7, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - store { ptr, i64, i64 } %t1081, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1086, ptr %a1088 - store { ptr, i64, i64 } { ptr @.str.2372, i64 1, i64 0 }, ptr %a1089 - call void @finch_str_concat(ptr %a1087, ptr %a1088, ptr %a1089) - store { ptr, i64, i64 } %t1086, ptr %a1090 - call void @finch_str_drop(ptr %a1090) - %t1091 = load { ptr, i64, i64 }, ptr %a1087 - %t1092 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1093 = load { ptr, i64, i64 }, ptr %t1092 - store { ptr, i64, i64 } %t1091, ptr %a1095 - store { ptr, i64, i64 } %t1093, ptr %a1096 - call void @finch_str_concat(ptr %a1094, ptr %a1095, ptr %a1096) - store { ptr, i64, i64 } %t1091, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load { ptr, i64, i64 }, ptr %a1094 - store { ptr, i64, i64 } %t1098, ptr %a1100 - store { ptr, i64, i64 } { ptr @.str.2373, i64 1, i64 0 }, ptr %a1101 - call void @finch_str_concat(ptr %a1099, ptr %a1100, ptr %a1101) - store { ptr, i64, i64 } %t1098, ptr %a1102 - call void @finch_str_drop(ptr %a1102) - %t1103 = load { ptr, i64, i64 }, ptr %a1099 - %t1104 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1105 = load { ptr, i64, i64 }, ptr %t1104 - store { ptr, i64, i64 } %t1103, ptr %a1107 - store { ptr, i64, i64 } %t1105, ptr %a1108 - call void @finch_str_concat(ptr %a1106, ptr %a1107, ptr %a1108) - store { ptr, i64, i64 } %t1103, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - %t1110 = load { ptr, i64, i64 }, ptr %a1106 - %t1111 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1112 = load { ptr, i64, i64 }, ptr %t1111 - store { ptr, i64, i64 } %t1110, ptr %t1111 - store { ptr, i64, i64 } %t1112, ptr %a1113 - call void @finch_str_drop(ptr %a1113) - br label %endif3803 -endif3803: - %t1114 = load ptr, ptr %a1 - %t1115 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 5 - %t1116 = load %S.ast.Type, ptr %t1115 - %t1117 = load %S.ast.Node, ptr %a686 - %t1118 = call %S.ast.Type @finch.gen.resolve(ptr %t1114, %S.ast.Type %t1116, %S.ast.Node %t1117) - %t1119 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 12 - %t1120 = load %S.ast.Type, ptr %t1119 - store %S.ast.Type %t1118, ptr %t1119 - store %S.ast.Type %t1120, ptr %a1121 - call void @finch.drop.S_ast_Type(ptr %a1121) - %t1122 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1122, i32 0, i32 1 - %t1124 = load i64, ptr %t1123 - %t1125 = sub i64 %t1124, 1 - store i64 0, ptr %a1126 - br label %for.cond3806 -for.cond3806: - %t1127 = load i64, ptr %a1126 - %t1128 = icmp slt i64 %t1127, %t1125 - br i1 %t1128, label %for.body3807, label %for.end3809 -for.body3807: - %t1129 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1130 = load i64, ptr %a1126 - %t1131 = load { ptr, i64, i64 }, ptr %t1129 - %t1132 = extractvalue { ptr, i64, i64 } %t1131, 1 - %t1133 = icmp uge i64 %t1130, %t1132 - br i1 %t1133, label %range3810, label %inrange3811 -range3810: - call void @finch_panic_index(ptr @.str.2374, i64 1624, i64 %t1130, i64 %t1132) - unreachable -inrange3811: - %t1134 = extractvalue { ptr, i64, i64 } %t1131, 0 - %t1135 = getelementptr inbounds %S.ast.Node, ptr %t1134, i64 %t1130 - %t1136 = getelementptr inbounds %S.ast.Node, ptr %t1135, i32 0, i32 1 - %t1137 = load { ptr, i64, i64 }, ptr %t1136 - store { ptr, i64, i64 } %t1137, ptr %a1138 - store { ptr, i64, i64 } { ptr @.str.2375, i64 4, i64 0 }, ptr %a1139 - %t1140 = call i32 @finch_str_eq(ptr %a1138, ptr %a1139) - %t1141 = icmp ne i32 %t1140, 0 - br label %logic.from3812 -logic.from3812: - br i1 %t1141, label %logic.rhs3813, label %logic.end3814 -logic.rhs3813: - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1142, i32 0, i32 1 - %t1144 = load i64, ptr %t1143 - %t1145 = icmp sgt i64 %t1144, 0 - br label %logic.rend3815 -logic.rend3815: - br label %logic.end3814 -logic.end3814: - %t1146 = phi i1 [ false, %logic.from3812 ], [ %t1145, %logic.rend3815 ] - br i1 %t1146, label %then3816, label %endif3818 -then3816: - %t1147 = load ptr, ptr %a1 - %t1148 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1149 = load i64, ptr %a1126 - %t1150 = load { ptr, i64, i64 }, ptr %t1148 - %t1151 = extractvalue { ptr, i64, i64 } %t1150, 1 - %t1152 = icmp uge i64 %t1149, %t1151 - br i1 %t1152, label %range3819, label %inrange3820 -range3819: - call void @finch_panic_index(ptr @.str.2376, i64 1625, i64 %t1149, i64 %t1151) - unreachable -inrange3820: - %t1153 = extractvalue { ptr, i64, i64 } %t1150, 0 - %t1154 = getelementptr inbounds %S.ast.Node, ptr %t1153, i64 %t1149 - %t1155 = load %S.ast.Node, ptr %t1154 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1157 = load { ptr, i64, i64 }, ptr %t1156 - store { ptr, i64, i64 } { ptr @.str.2377, i64 22, i64 0 }, ptr %a1159 - store { ptr, i64, i64 } %t1157, ptr %a1160 - call void @finch_str_concat(ptr %a1158, ptr %a1159, ptr %a1160) - %t1161 = load { ptr, i64, i64 }, ptr %a1158 - store { ptr, i64, i64 } %t1161, ptr %a1163 - store { ptr, i64, i64 } { ptr @.str.2378, i64 24, i64 0 }, ptr %a1164 - call void @finch_str_concat(ptr %a1162, ptr %a1163, ptr %a1164) - store { ptr, i64, i64 } %t1161, ptr %a1165 - call void @finch_str_drop(ptr %a1165) - %t1166 = load { ptr, i64, i64 }, ptr %a1162 - call void @finch.gen.fail(ptr %t1147, %S.ast.Node %t1155, { ptr, i64, i64 } %t1166) - store { ptr, i64, i64 } %t1166, ptr %a1167 - call void @finch_str_drop(ptr %a1167) - br label %endif3818 -endif3818: - %t1168 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 13 - %t1169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1168, i32 0, i32 1 - %t1170 = load ptr, ptr %a1 - %t1171 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1172 = load i64, ptr %a1126 - %t1173 = load { ptr, i64, i64 }, ptr %t1171 - %t1174 = extractvalue { ptr, i64, i64 } %t1173, 1 - %t1175 = icmp uge i64 %t1172, %t1174 - br i1 %t1175, label %range3821, label %inrange3822 -range3821: - call void @finch_panic_index(ptr @.str.2379, i64 1627, i64 %t1172, i64 %t1174) - unreachable -inrange3822: - %t1176 = extractvalue { ptr, i64, i64 } %t1173, 0 - %t1177 = getelementptr inbounds %S.ast.Node, ptr %t1176, i64 %t1172 - %t1178 = getelementptr inbounds %S.ast.Node, ptr %t1177, i32 0, i32 5 - %t1179 = load %S.ast.Type, ptr %t1178 - %t1180 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1181 = load i64, ptr %a1126 - %t1182 = load { ptr, i64, i64 }, ptr %t1180 - %t1183 = extractvalue { ptr, i64, i64 } %t1182, 1 - %t1184 = icmp uge i64 %t1181, %t1183 - br i1 %t1184, label %range3823, label %inrange3824 -range3823: - call void @finch_panic_index(ptr @.str.2380, i64 1627, i64 %t1181, i64 %t1183) - unreachable -inrange3824: - %t1185 = extractvalue { ptr, i64, i64 } %t1182, 0 - %t1186 = getelementptr inbounds %S.ast.Node, ptr %t1185, i64 %t1181 - %t1187 = load %S.ast.Node, ptr %t1186 - %t1188 = call %S.ast.Type @finch.gen.resolve(ptr %t1170, %S.ast.Type %t1179, %S.ast.Node %t1187) - %t1189 = load i64, ptr %t1169 - %t1190 = add i64 %t1189, 1 - call void @finch_arr_reserve(ptr %t1168, i64 %t1190, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1191 = load ptr, ptr %t1168 - %t1192 = getelementptr inbounds %S.ast.Type, ptr %t1191, i64 %t1189 - store %S.ast.Type %t1188, ptr %t1192 - store i64 %t1190, ptr %t1169 - %t1193 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 14 - %t1194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1193, i32 0, i32 1 - %t1195 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1196 = load i64, ptr %a1126 - %t1197 = load { ptr, i64, i64 }, ptr %t1195 - %t1198 = extractvalue { ptr, i64, i64 } %t1197, 1 - %t1199 = icmp uge i64 %t1196, %t1198 - br i1 %t1199, label %range3825, label %inrange3826 -range3825: - call void @finch_panic_index(ptr @.str.2381, i64 1628, i64 %t1196, i64 %t1198) - unreachable -inrange3826: - %t1200 = extractvalue { ptr, i64, i64 } %t1197, 0 - %t1201 = getelementptr inbounds %S.ast.Node, ptr %t1200, i64 %t1196 - %t1202 = getelementptr inbounds %S.ast.Node, ptr %t1201, i32 0, i32 1 - %t1203 = load { ptr, i64, i64 }, ptr %t1202 - store { ptr, i64, i64 } %t1203, ptr %a1204 - call void @finch_str_copy(ptr %a1205, ptr %a1204) - %t1206 = load { ptr, i64, i64 }, ptr %a1205 - %t1207 = load i64, ptr %t1194 - %t1208 = add i64 %t1207, 1 - call void @finch_arr_reserve(ptr %t1193, i64 %t1208, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1209 = load ptr, ptr %t1193 - %t1210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1209, i64 %t1207 - store { ptr, i64, i64 } %t1206, ptr %t1210 - store i64 %t1208, ptr %t1194 - br label %for.step3808 -for.step3808: - %t1211 = load i64, ptr %a1126 - %t1212 = add i64 %t1211, 1 - store i64 %t1212, ptr %a1126 - br label %for.cond3806 -for.end3809: - %t1213 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1214 = load i1, ptr %t1213 - br i1 %t1214, label %then3827, label %endif3829 -then3827: - %t1215 = load ptr, ptr %a1 - %t1216 = load %S.ast.Node, ptr %a686 - %t1217 = load %S.gen.FnSig, ptr %a1047 - call void @finch.gen.checkExport(ptr %t1215, %S.ast.Node %t1216, %S.gen.FnSig %t1217) - br label %endif3829 -endif3829: - %t1218 = load ptr, ptr %a1 - %t1219 = icmp eq ptr %t1218, null - br i1 %t1219, label %panic3830, label %ok3831 -panic3830: - call void @finch_panic(ptr @.str.2382, i64 1633, ptr @.str.2383) - unreachable -ok3831: - %t1220 = getelementptr inbounds %S.gen.Gen, ptr %t1218, i32 0, i32 15 - %t1221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1220, i32 0, i32 1 - %t1222 = load %S.gen.FnSig, ptr %a1047 - store %S.gen.FnSig %t1222, ptr %a1223 - call void @finch.copy.S_gen_FnSig(ptr %a1224, ptr %a1223) - %t1225 = load %S.gen.FnSig, ptr %a1224 - %t1226 = load i64, ptr %t1221 - %t1227 = add i64 %t1226, 1 - call void @finch_arr_reserve(ptr %t1220, i64 %t1227, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t1228 = load ptr, ptr %t1220 - %t1229 = getelementptr inbounds %S.gen.FnSig, ptr %t1228, i64 %t1226 - store %S.gen.FnSig %t1225, ptr %t1229 - store i64 %t1227, ptr %t1221 - call void @finch.drop.S_gen_FnSig(ptr %a1047) - call void @finch_str_drop(ptr %a789) - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -for.step3716: - %t1230 = load i64, ptr %a663 - %t1231 = add i64 %t1230, 1 - store i64 %t1231, ptr %a663 - br label %for.cond3714 -for.end3717: - br label %for.step3702 -for.step3702: - %t1232 = load i64, ptr %a629 - %t1233 = add i64 %t1232, 1 - store i64 %t1233, ptr %a629 - br label %for.cond3700 -for.end3703: - store i1 true, ptr %a1234 - br label %while.cond3832 -while.cond3832: - %t1235 = load i1, ptr %a1234 - br i1 %t1235, label %while.body3833, label %while.end3834 -while.body3833: - store i1 false, ptr %a1234 - %t1236 = load ptr, ptr %a1 - %t1237 = icmp eq ptr %t1236, null - br i1 %t1237, label %panic3835, label %ok3836 -panic3835: - call void @finch_panic(ptr @.str.2384, i64 1641, ptr @.str.2385) - unreachable -ok3836: - %t1238 = getelementptr inbounds %S.gen.Gen, ptr %t1236, i32 0, i32 15 - %t1239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1238, i32 0, i32 1 - %t1240 = load i64, ptr %t1239 - store i64 0, ptr %a1241 - br label %for.cond3837 -for.cond3837: - %t1242 = load i64, ptr %a1241 - %t1243 = icmp slt i64 %t1242, %t1240 - br i1 %t1243, label %for.body3838, label %for.end3840 -for.body3838: - %t1244 = load ptr, ptr %a1 - %t1245 = icmp eq ptr %t1244, null - br i1 %t1245, label %panic3841, label %ok3842 -panic3841: - call void @finch_panic(ptr @.str.2386, i64 1642, ptr @.str.2387) - unreachable -ok3842: - %t1246 = getelementptr inbounds %S.gen.Gen, ptr %t1244, i32 0, i32 15 - %t1247 = load i64, ptr %a1241 - %t1248 = load { ptr, i64, i64 }, ptr %t1246 - %t1249 = extractvalue { ptr, i64, i64 } %t1248, 1 - %t1250 = icmp uge i64 %t1247, %t1249 - br i1 %t1250, label %range3843, label %inrange3844 -range3843: - call void @finch_panic_index(ptr @.str.2388, i64 1642, i64 %t1247, i64 %t1249) - unreachable -inrange3844: - %t1251 = extractvalue { ptr, i64, i64 } %t1248, 0 - %t1252 = getelementptr inbounds %S.gen.FnSig, ptr %t1251, i64 %t1247 - %t1253 = getelementptr inbounds %S.gen.FnSig, ptr %t1252, i32 0, i32 2 - %t1254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1253, i32 0, i32 1 - %t1255 = load i64, ptr %t1254 - %t1256 = icmp sgt i64 %t1255, 0 - br label %logic.from3845 -logic.from3845: - br i1 %t1256, label %logic.rhs3846, label %logic.end3847 -logic.rhs3846: - %t1257 = load ptr, ptr %a1 - %t1258 = icmp eq ptr %t1257, null - br i1 %t1258, label %panic3848, label %ok3849 -panic3848: - call void @finch_panic(ptr @.str.2389, i64 1642, ptr @.str.2390) - unreachable -ok3849: - %t1259 = getelementptr inbounds %S.gen.Gen, ptr %t1257, i32 0, i32 15 - %t1260 = load i64, ptr %a1241 - %t1261 = load { ptr, i64, i64 }, ptr %t1259 - %t1262 = extractvalue { ptr, i64, i64 } %t1261, 1 - %t1263 = icmp uge i64 %t1260, %t1262 - br i1 %t1263, label %range3850, label %inrange3851 -range3850: - call void @finch_panic_index(ptr @.str.2391, i64 1642, i64 %t1260, i64 %t1262) - unreachable -inrange3851: - %t1264 = extractvalue { ptr, i64, i64 } %t1261, 0 - %t1265 = getelementptr inbounds %S.gen.FnSig, ptr %t1264, i64 %t1260 - %t1266 = getelementptr inbounds %S.gen.FnSig, ptr %t1265, i32 0, i32 10 - %t1267 = load i1, ptr %t1266 - %t1268 = xor i1 %t1267, true - br label %logic.rend3852 -logic.rend3852: - br label %logic.end3847 -logic.end3847: - %t1269 = phi i1 [ false, %logic.from3845 ], [ %t1268, %logic.rend3852 ] - br i1 %t1269, label %then3853, label %endif3855 -then3853: - %t1270 = load ptr, ptr %a1 - %t1271 = icmp eq ptr %t1270, null - br i1 %t1271, label %panic3856, label %ok3857 -panic3856: - call void @finch_panic(ptr @.str.2392, i64 1643, ptr @.str.2393) - unreachable -ok3857: - %t1272 = getelementptr inbounds %S.gen.Gen, ptr %t1270, i32 0, i32 0 - %t1273 = load ptr, ptr %a1 - %t1274 = icmp eq ptr %t1273, null - br i1 %t1274, label %panic3858, label %ok3859 -panic3858: - call void @finch_panic(ptr @.str.2394, i64 1643, ptr @.str.2395) - unreachable -ok3859: - %t1275 = getelementptr inbounds %S.gen.Gen, ptr %t1273, i32 0, i32 15 - %t1276 = load i64, ptr %a1241 - %t1277 = load { ptr, i64, i64 }, ptr %t1275 - %t1278 = extractvalue { ptr, i64, i64 } %t1277, 1 - %t1279 = icmp uge i64 %t1276, %t1278 - br i1 %t1279, label %range3860, label %inrange3861 -range3860: - call void @finch_panic_index(ptr @.str.2396, i64 1643, i64 %t1276, i64 %t1278) - unreachable -inrange3861: - %t1280 = extractvalue { ptr, i64, i64 } %t1277, 0 - %t1281 = getelementptr inbounds %S.gen.FnSig, ptr %t1280, i64 %t1276 - %t1282 = getelementptr inbounds %S.gen.FnSig, ptr %t1281, i32 0, i32 16 - %t1283 = load i64, ptr %t1282 - %t1284 = load { ptr, i64, i64 }, ptr %t1272 - %t1285 = extractvalue { ptr, i64, i64 } %t1284, 1 - %t1286 = icmp uge i64 %t1283, %t1285 - br i1 %t1286, label %range3862, label %inrange3863 -range3862: - call void @finch_panic_index(ptr @.str.2397, i64 1643, i64 %t1283, i64 %t1285) - unreachable -inrange3863: - %t1287 = extractvalue { ptr, i64, i64 } %t1284, 0 - %t1288 = getelementptr inbounds %S.ast.Program, ptr %t1287, i64 %t1283 - %t1289 = getelementptr inbounds %S.ast.Program, ptr %t1288, i32 0, i32 8 - %t1290 = load ptr, ptr %a1 - %t1291 = icmp eq ptr %t1290, null - br i1 %t1291, label %panic3864, label %ok3865 -panic3864: - call void @finch_panic(ptr @.str.2398, i64 1643, ptr @.str.2399) - unreachable -ok3865: - %t1292 = getelementptr inbounds %S.gen.Gen, ptr %t1290, i32 0, i32 15 - %t1293 = load i64, ptr %a1241 - %t1294 = load { ptr, i64, i64 }, ptr %t1292 - %t1295 = extractvalue { ptr, i64, i64 } %t1294, 1 - %t1296 = icmp uge i64 %t1293, %t1295 - br i1 %t1296, label %range3866, label %inrange3867 -range3866: - call void @finch_panic_index(ptr @.str.2400, i64 1643, i64 %t1293, i64 %t1295) - unreachable -inrange3867: - %t1297 = extractvalue { ptr, i64, i64 } %t1294, 0 - %t1298 = getelementptr inbounds %S.gen.FnSig, ptr %t1297, i64 %t1293 - %t1299 = getelementptr inbounds %S.gen.FnSig, ptr %t1298, i32 0, i32 17 - %t1300 = load i64, ptr %t1299 - %t1301 = load { ptr, i64, i64 }, ptr %t1289 - %t1302 = extractvalue { ptr, i64, i64 } %t1301, 1 - %t1303 = icmp uge i64 %t1300, %t1302 - br i1 %t1303, label %range3868, label %inrange3869 -range3868: - call void @finch_panic_index(ptr @.str.2401, i64 1643, i64 %t1300, i64 %t1302) - unreachable -inrange3869: - %t1304 = extractvalue { ptr, i64, i64 } %t1301, 0 - %t1305 = getelementptr inbounds %S.ast.Node, ptr %t1304, i64 %t1300 - %t1306 = load %S.ast.Node, ptr %t1305 - store %S.ast.Node %t1306, ptr %a1307 - call void @finch.copy.S_ast_Node(ptr %a1308, ptr %a1307) - %t1309 = load %S.ast.Node, ptr %a1308 - store %S.ast.Node %t1309, ptr %a1310 - %t1311 = load ptr, ptr %a1 - %t1312 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1313 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1313, i32 0, i32 1 - %t1315 = load i64, ptr %t1314 - %t1316 = sub i64 %t1315, 1 - %t1317 = load { ptr, i64, i64 }, ptr %t1312 - %t1318 = extractvalue { ptr, i64, i64 } %t1317, 1 - %t1319 = icmp uge i64 %t1316, %t1318 - br i1 %t1319, label %range3870, label %inrange3871 -range3870: - call void @finch_panic_index(ptr @.str.2403, i64 1644, i64 %t1316, i64 %t1318) - unreachable -inrange3871: - %t1320 = extractvalue { ptr, i64, i64 } %t1317, 0 - %t1321 = getelementptr inbounds %S.ast.Node, ptr %t1320, i64 %t1316 - %t1322 = load %S.ast.Node, ptr %t1321 - %t1323 = call i1 @finch.gen.mutates(ptr %t1311, { ptr, i64, i64 } { ptr @.str.2402, i64 4, i64 0 }, %S.ast.Node %t1322) - br i1 %t1323, label %then3872, label %endif3874 -then3872: - %t1324 = load ptr, ptr %a1 - %t1325 = icmp eq ptr %t1324, null - br i1 %t1325, label %panic3875, label %ok3876 -panic3875: - call void @finch_panic(ptr @.str.2404, i64 1645, ptr @.str.2405) - unreachable -ok3876: - %t1326 = getelementptr inbounds %S.gen.Gen, ptr %t1324, i32 0, i32 15 - %t1327 = load i64, ptr %a1241 - %t1328 = load { ptr, i64, i64 }, ptr %t1326 - %t1329 = extractvalue { ptr, i64, i64 } %t1328, 1 - %t1330 = icmp uge i64 %t1327, %t1329 - br i1 %t1330, label %range3877, label %inrange3878 -range3877: - call void @finch_panic_index(ptr @.str.2406, i64 1645, i64 %t1327, i64 %t1329) - unreachable -inrange3878: - %t1331 = extractvalue { ptr, i64, i64 } %t1328, 0 - %t1332 = getelementptr inbounds %S.gen.FnSig, ptr %t1331, i64 %t1327 - %t1333 = getelementptr inbounds %S.gen.FnSig, ptr %t1332, i32 0, i32 10 - store i1 true, ptr %t1333 - %t1334 = load ptr, ptr %a1 - %t1335 = icmp eq ptr %t1334, null - br i1 %t1335, label %panic3879, label %ok3880 -panic3879: - call void @finch_panic(ptr @.str.2407, i64 1646, ptr @.str.2408) - unreachable -ok3880: - %t1336 = getelementptr inbounds %S.gen.Gen, ptr %t1334, i32 0, i32 24 - %t1337 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1336, i32 0, i32 1 - %t1338 = load ptr, ptr %a1 - %t1339 = icmp eq ptr %t1338, null - br i1 %t1339, label %panic3881, label %ok3882 -panic3881: - call void @finch_panic(ptr @.str.2409, i64 1646, ptr @.str.2410) - unreachable -ok3882: - %t1340 = getelementptr inbounds %S.gen.Gen, ptr %t1338, i32 0, i32 15 - %t1341 = load i64, ptr %a1241 - %t1342 = load { ptr, i64, i64 }, ptr %t1340 - %t1343 = extractvalue { ptr, i64, i64 } %t1342, 1 - %t1344 = icmp uge i64 %t1341, %t1343 - br i1 %t1344, label %range3883, label %inrange3884 -range3883: - call void @finch_panic_index(ptr @.str.2411, i64 1646, i64 %t1341, i64 %t1343) - unreachable -inrange3884: - %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 1 - %t1348 = load { ptr, i64, i64 }, ptr %t1347 - store { ptr, i64, i64 } %t1348, ptr %a1349 - call void @finch_str_copy(ptr %a1350, ptr %a1349) - %t1351 = load { ptr, i64, i64 }, ptr %a1350 - %t1352 = load i64, ptr %t1337 - %t1353 = add i64 %t1352, 1 - call void @finch_arr_reserve(ptr %t1336, i64 %t1353, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1354 = load ptr, ptr %t1336 - %t1355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1354, i64 %t1352 - store { ptr, i64, i64 } %t1351, ptr %t1355 - store i64 %t1353, ptr %t1337 - store i1 true, ptr %a1234 - br label %endif3874 -endif3874: - call void @finch.drop.S_ast_Node(ptr %a1310) - br label %endif3855 -endif3855: - br label %for.step3839 -for.step3839: - %t1356 = load i64, ptr %a1241 - %t1357 = add i64 %t1356, 1 - store i64 %t1357, ptr %a1241 - br label %for.cond3837 -for.end3840: - %t1358 = load ptr, ptr %a1 - %t1359 = icmp eq ptr %t1358, null - br i1 %t1359, label %panic3885, label %ok3886 -panic3885: - call void @finch_panic(ptr @.str.2412, i64 1651, ptr @.str.2413) - unreachable -ok3886: - %t1360 = getelementptr inbounds %S.gen.Gen, ptr %t1358, i32 0, i32 17 - %t1361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1360, i32 0, i32 1 - %t1362 = load i64, ptr %t1361 - store i64 0, ptr %a1363 - br label %for.cond3887 -for.cond3887: - %t1364 = load i64, ptr %a1363 - %t1365 = icmp slt i64 %t1364, %t1362 - br i1 %t1365, label %for.body3888, label %for.end3890 -for.body3888: - %t1366 = load ptr, ptr %a1 - %t1367 = icmp eq ptr %t1366, null - br i1 %t1367, label %panic3891, label %ok3892 -panic3891: - call void @finch_panic(ptr @.str.2414, i64 1652, ptr @.str.2415) - unreachable -ok3892: - %t1368 = getelementptr inbounds %S.gen.Gen, ptr %t1366, i32 0, i32 17 - %t1369 = load i64, ptr %a1363 - %t1370 = load { ptr, i64, i64 }, ptr %t1368 - %t1371 = extractvalue { ptr, i64, i64 } %t1370, 1 - %t1372 = icmp uge i64 %t1369, %t1371 - br i1 %t1372, label %range3893, label %inrange3894 -range3893: - call void @finch_panic_index(ptr @.str.2416, i64 1652, i64 %t1369, i64 %t1371) - unreachable -inrange3894: - %t1373 = extractvalue { ptr, i64, i64 } %t1370, 0 - %t1374 = getelementptr inbounds %S.gen.Template, ptr %t1373, i64 %t1369 - %t1375 = load %S.gen.Template, ptr %t1374 - store %S.gen.Template %t1375, ptr %a1376 - call void @finch.copy.S_gen_Template(ptr %a1377, ptr %a1376) - %t1378 = load %S.gen.Template, ptr %a1377 - store %S.gen.Template %t1378, ptr %a1379 - %t1380 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 2 - %t1381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1380, i32 0, i32 1 - %t1382 = load i64, ptr %t1381 - %t1383 = icmp sgt i64 %t1382, 0 - br label %logic.from3895 -logic.from3895: - br i1 %t1383, label %logic.rhs3896, label %logic.end3897 -logic.rhs3896: - %t1384 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 7 - %t1385 = load i1, ptr %t1384 - %t1386 = xor i1 %t1385, true - br label %logic.rend3898 -logic.rend3898: - br label %logic.end3897 -logic.end3897: - %t1387 = phi i1 [ false, %logic.from3895 ], [ %t1386, %logic.rend3898 ] - br i1 %t1387, label %then3899, label %endif3901 -then3899: - %t1388 = load ptr, ptr %a1 - %t1389 = icmp eq ptr %t1388, null - br i1 %t1389, label %panic3902, label %ok3903 -panic3902: - call void @finch_panic(ptr @.str.2417, i64 1654, ptr @.str.2418) - unreachable -ok3903: - %t1390 = getelementptr inbounds %S.gen.Gen, ptr %t1388, i32 0, i32 0 - %t1391 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 4 - %t1392 = load i64, ptr %t1391 - %t1393 = load { ptr, i64, i64 }, ptr %t1390 - %t1394 = extractvalue { ptr, i64, i64 } %t1393, 1 - %t1395 = icmp uge i64 %t1392, %t1394 - br i1 %t1395, label %range3904, label %inrange3905 -range3904: - call void @finch_panic_index(ptr @.str.2419, i64 1654, i64 %t1392, i64 %t1394) - unreachable -inrange3905: - %t1396 = extractvalue { ptr, i64, i64 } %t1393, 0 - %t1397 = getelementptr inbounds %S.ast.Program, ptr %t1396, i64 %t1392 - %t1398 = getelementptr inbounds %S.ast.Program, ptr %t1397, i32 0, i32 8 - %t1399 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 5 - %t1400 = load i64, ptr %t1399 - %t1401 = load { ptr, i64, i64 }, ptr %t1398 - %t1402 = extractvalue { ptr, i64, i64 } %t1401, 1 - %t1403 = icmp uge i64 %t1400, %t1402 - br i1 %t1403, label %range3906, label %inrange3907 -range3906: - call void @finch_panic_index(ptr @.str.2420, i64 1654, i64 %t1400, i64 %t1402) - unreachable -inrange3907: - %t1404 = extractvalue { ptr, i64, i64 } %t1401, 0 - %t1405 = getelementptr inbounds %S.ast.Node, ptr %t1404, i64 %t1400 - %t1406 = load %S.ast.Node, ptr %t1405 - store %S.ast.Node %t1406, ptr %a1407 - call void @finch.copy.S_ast_Node(ptr %a1408, ptr %a1407) - %t1409 = load %S.ast.Node, ptr %a1408 - store %S.ast.Node %t1409, ptr %a1410 - %t1411 = load ptr, ptr %a1 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1413 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1413, i32 0, i32 1 - %t1415 = load i64, ptr %t1414 - %t1416 = sub i64 %t1415, 1 - %t1417 = load { ptr, i64, i64 }, ptr %t1412 - %t1418 = extractvalue { ptr, i64, i64 } %t1417, 1 - %t1419 = icmp uge i64 %t1416, %t1418 - br i1 %t1419, label %range3908, label %inrange3909 -range3908: - call void @finch_panic_index(ptr @.str.2422, i64 1655, i64 %t1416, i64 %t1418) - unreachable -inrange3909: - %t1420 = extractvalue { ptr, i64, i64 } %t1417, 0 - %t1421 = getelementptr inbounds %S.ast.Node, ptr %t1420, i64 %t1416 - %t1422 = load %S.ast.Node, ptr %t1421 - %t1423 = call i1 @finch.gen.mutates(ptr %t1411, { ptr, i64, i64 } { ptr @.str.2421, i64 4, i64 0 }, %S.ast.Node %t1422) - br i1 %t1423, label %then3910, label %endif3912 -then3910: - %t1424 = load ptr, ptr %a1 - %t1425 = icmp eq ptr %t1424, null - br i1 %t1425, label %panic3913, label %ok3914 -panic3913: - call void @finch_panic(ptr @.str.2423, i64 1656, ptr @.str.2424) - unreachable -ok3914: - %t1426 = getelementptr inbounds %S.gen.Gen, ptr %t1424, i32 0, i32 17 - %t1427 = load i64, ptr %a1363 - %t1428 = load { ptr, i64, i64 }, ptr %t1426 - %t1429 = extractvalue { ptr, i64, i64 } %t1428, 1 - %t1430 = icmp uge i64 %t1427, %t1429 - br i1 %t1430, label %range3915, label %inrange3916 -range3915: - call void @finch_panic_index(ptr @.str.2425, i64 1656, i64 %t1427, i64 %t1429) - unreachable -inrange3916: - %t1431 = extractvalue { ptr, i64, i64 } %t1428, 0 - %t1432 = getelementptr inbounds %S.gen.Template, ptr %t1431, i64 %t1427 - %t1433 = getelementptr inbounds %S.gen.Template, ptr %t1432, i32 0, i32 7 - store i1 true, ptr %t1433 - %t1434 = load ptr, ptr %a1 - %t1435 = icmp eq ptr %t1434, null - br i1 %t1435, label %panic3917, label %ok3918 -panic3917: - call void @finch_panic(ptr @.str.2426, i64 1657, ptr @.str.2427) - unreachable -ok3918: - %t1436 = getelementptr inbounds %S.gen.Gen, ptr %t1434, i32 0, i32 24 - %t1437 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1436, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1439, ptr %a1440 - call void @finch_str_copy(ptr %a1441, ptr %a1440) - %t1442 = load { ptr, i64, i64 }, ptr %a1441 - %t1443 = load i64, ptr %t1437 - %t1444 = add i64 %t1443, 1 - call void @finch_arr_reserve(ptr %t1436, i64 %t1444, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1445 = load ptr, ptr %t1436 - %t1446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1445, i64 %t1443 - store { ptr, i64, i64 } %t1442, ptr %t1446 - store i64 %t1444, ptr %t1437 - store i1 true, ptr %a1234 - br label %endif3912 -endif3912: - call void @finch.drop.S_ast_Node(ptr %a1410) - br label %endif3901 -endif3901: - call void @finch.drop.S_gen_Template(ptr %a1379) - br label %for.step3889 -for.step3889: - %t1447 = load i64, ptr %a1363 - %t1448 = add i64 %t1447, 1 - store i64 %t1448, ptr %a1363 - br label %for.cond3887 -for.end3890: - br label %while.cond3832 -while.end3834: - %t1449 = load ptr, ptr %a1 - %t1450 = icmp eq ptr %t1449, null - br i1 %t1450, label %panic3919, label %ok3920 -panic3919: - call void @finch_panic(ptr @.str.2428, i64 1664, ptr @.str.2429) - unreachable -ok3920: - %t1451 = getelementptr inbounds %S.gen.Gen, ptr %t1449, i32 0, i32 15 - %t1452 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1451, i32 0, i32 1 - %t1453 = load i64, ptr %t1452 - store i64 0, ptr %a1454 - br label %for.cond3921 -for.cond3921: - %t1455 = load i64, ptr %a1454 - %t1456 = icmp slt i64 %t1455, %t1453 - br i1 %t1456, label %for.body3922, label %for.end3924 -for.body3922: - %t1457 = load ptr, ptr %a1 - %t1458 = icmp eq ptr %t1457, null - br i1 %t1458, label %panic3925, label %ok3926 -panic3925: - call void @finch_panic(ptr @.str.2430, i64 1665, ptr @.str.2431) - unreachable -ok3926: - %t1459 = getelementptr inbounds %S.gen.Gen, ptr %t1457, i32 0, i32 0 - %t1460 = load ptr, ptr %a1 - %t1461 = icmp eq ptr %t1460, null - br i1 %t1461, label %panic3927, label %ok3928 -panic3927: - call void @finch_panic(ptr @.str.2432, i64 1665, ptr @.str.2433) - unreachable -ok3928: - %t1462 = getelementptr inbounds %S.gen.Gen, ptr %t1460, i32 0, i32 15 - %t1463 = load i64, ptr %a1454 - %t1464 = load { ptr, i64, i64 }, ptr %t1462 - %t1465 = extractvalue { ptr, i64, i64 } %t1464, 1 - %t1466 = icmp uge i64 %t1463, %t1465 - br i1 %t1466, label %range3929, label %inrange3930 -range3929: - call void @finch_panic_index(ptr @.str.2434, i64 1665, i64 %t1463, i64 %t1465) - unreachable -inrange3930: - %t1467 = extractvalue { ptr, i64, i64 } %t1464, 0 - %t1468 = getelementptr inbounds %S.gen.FnSig, ptr %t1467, i64 %t1463 - %t1469 = getelementptr inbounds %S.gen.FnSig, ptr %t1468, i32 0, i32 16 - %t1470 = load i64, ptr %t1469 - %t1471 = load { ptr, i64, i64 }, ptr %t1459 - %t1472 = extractvalue { ptr, i64, i64 } %t1471, 1 - %t1473 = icmp uge i64 %t1470, %t1472 - br i1 %t1473, label %range3931, label %inrange3932 -range3931: - call void @finch_panic_index(ptr @.str.2435, i64 1665, i64 %t1470, i64 %t1472) - unreachable -inrange3932: - %t1474 = extractvalue { ptr, i64, i64 } %t1471, 0 - %t1475 = getelementptr inbounds %S.ast.Program, ptr %t1474, i64 %t1470 - %t1476 = getelementptr inbounds %S.ast.Program, ptr %t1475, i32 0, i32 8 - %t1477 = load ptr, ptr %a1 - %t1478 = icmp eq ptr %t1477, null - br i1 %t1478, label %panic3933, label %ok3934 -panic3933: - call void @finch_panic(ptr @.str.2436, i64 1665, ptr @.str.2437) - unreachable -ok3934: - %t1479 = getelementptr inbounds %S.gen.Gen, ptr %t1477, i32 0, i32 15 - %t1480 = load i64, ptr %a1454 - %t1481 = load { ptr, i64, i64 }, ptr %t1479 - %t1482 = extractvalue { ptr, i64, i64 } %t1481, 1 - %t1483 = icmp uge i64 %t1480, %t1482 - br i1 %t1483, label %range3935, label %inrange3936 -range3935: - call void @finch_panic_index(ptr @.str.2438, i64 1665, i64 %t1480, i64 %t1482) - unreachable -inrange3936: - %t1484 = extractvalue { ptr, i64, i64 } %t1481, 0 - %t1485 = getelementptr inbounds %S.gen.FnSig, ptr %t1484, i64 %t1480 - %t1486 = getelementptr inbounds %S.gen.FnSig, ptr %t1485, i32 0, i32 17 - %t1487 = load i64, ptr %t1486 - %t1488 = load { ptr, i64, i64 }, ptr %t1476 - %t1489 = extractvalue { ptr, i64, i64 } %t1488, 1 - %t1490 = icmp uge i64 %t1487, %t1489 - br i1 %t1490, label %range3937, label %inrange3938 -range3937: - call void @finch_panic_index(ptr @.str.2439, i64 1665, i64 %t1487, i64 %t1489) - unreachable -inrange3938: - %t1491 = extractvalue { ptr, i64, i64 } %t1488, 0 - %t1492 = getelementptr inbounds %S.ast.Node, ptr %t1491, i64 %t1487 - %t1493 = load %S.ast.Node, ptr %t1492 - store %S.ast.Node %t1493, ptr %a1494 - call void @finch.copy.S_ast_Node(ptr %a1495, ptr %a1494) - %t1496 = load %S.ast.Node, ptr %a1495 - store %S.ast.Node %t1496, ptr %a1497 - %t1498 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1499 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1499, i32 0, i32 1 - %t1501 = load i64, ptr %t1500 - %t1502 = sub i64 %t1501, 1 - %t1503 = load { ptr, i64, i64 }, ptr %t1498 - %t1504 = extractvalue { ptr, i64, i64 } %t1503, 1 - %t1505 = icmp uge i64 %t1502, %t1504 - br i1 %t1505, label %range3939, label %inrange3940 -range3939: - call void @finch_panic_index(ptr @.str.2440, i64 1666, i64 %t1502, i64 %t1504) - unreachable -inrange3940: - %t1506 = extractvalue { ptr, i64, i64 } %t1503, 0 - %t1507 = getelementptr inbounds %S.ast.Node, ptr %t1506, i64 %t1502 - %t1508 = load %S.ast.Node, ptr %t1507 - store %S.ast.Node %t1508, ptr %a1509 - call void @finch.copy.S_ast_Node(ptr %a1510, ptr %a1509) - %t1511 = load %S.ast.Node, ptr %a1510 - store %S.ast.Node %t1511, ptr %a1512 - %t1513 = load ptr, ptr %a1 - %t1514 = icmp eq ptr %t1513, null - br i1 %t1514, label %panic3941, label %ok3942 -panic3941: - call void @finch_panic(ptr @.str.2441, i64 1667, ptr @.str.2442) - unreachable -ok3942: - %t1515 = getelementptr inbounds %S.gen.Gen, ptr %t1513, i32 0, i32 15 - %t1516 = load i64, ptr %a1454 - %t1517 = load { ptr, i64, i64 }, ptr %t1515 - %t1518 = extractvalue { ptr, i64, i64 } %t1517, 1 - %t1519 = icmp uge i64 %t1516, %t1518 - br i1 %t1519, label %range3943, label %inrange3944 -range3943: - call void @finch_panic_index(ptr @.str.2443, i64 1667, i64 %t1516, i64 %t1518) - unreachable -inrange3944: - %t1520 = extractvalue { ptr, i64, i64 } %t1517, 0 - %t1521 = getelementptr inbounds %S.gen.FnSig, ptr %t1520, i64 %t1516 - %t1522 = getelementptr inbounds %S.gen.FnSig, ptr %t1521, i32 0, i32 13 - %t1523 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1522, i32 0, i32 1 - %t1524 = load i64, ptr %t1523 - store i64 0, ptr %a1525 - br label %for.cond3945 -for.cond3945: - %t1526 = load i64, ptr %a1525 - %t1527 = icmp slt i64 %t1526, %t1524 - br i1 %t1527, label %for.body3946, label %for.end3948 -for.body3946: - %t1528 = load ptr, ptr %a1 - %t1529 = icmp eq ptr %t1528, null - br i1 %t1529, label %panic3949, label %ok3950 -panic3949: - call void @finch_panic(ptr @.str.2444, i64 1668, ptr @.str.2445) - unreachable -ok3950: - %t1530 = getelementptr inbounds %S.gen.Gen, ptr %t1528, i32 0, i32 15 - %t1531 = load i64, ptr %a1454 - %t1532 = load { ptr, i64, i64 }, ptr %t1530 - %t1533 = extractvalue { ptr, i64, i64 } %t1532, 1 - %t1534 = icmp uge i64 %t1531, %t1533 - br i1 %t1534, label %range3951, label %inrange3952 -range3951: - call void @finch_panic_index(ptr @.str.2446, i64 1668, i64 %t1531, i64 %t1533) - unreachable -inrange3952: - %t1535 = extractvalue { ptr, i64, i64 } %t1532, 0 - %t1536 = getelementptr inbounds %S.gen.FnSig, ptr %t1535, i64 %t1531 - %t1537 = getelementptr inbounds %S.gen.FnSig, ptr %t1536, i32 0, i32 13 - %t1538 = load i64, ptr %a1525 - %t1539 = load { ptr, i64, i64 }, ptr %t1537 - %t1540 = extractvalue { ptr, i64, i64 } %t1539, 1 - %t1541 = icmp uge i64 %t1538, %t1540 - br i1 %t1541, label %range3953, label %inrange3954 -range3953: - call void @finch_panic_index(ptr @.str.2447, i64 1668, i64 %t1538, i64 %t1540) - unreachable -inrange3954: - %t1542 = extractvalue { ptr, i64, i64 } %t1539, 0 - %t1543 = getelementptr inbounds %S.ast.Type, ptr %t1542, i64 %t1538 - %t1544 = load %S.ast.Type, ptr %t1543 - store %S.ast.Type %t1544, ptr %a1545 - call void @finch.copy.S_ast_Type(ptr %a1546, ptr %a1545) - %t1547 = load %S.ast.Type, ptr %a1546 - store %S.ast.Type %t1547, ptr %a1548 - %t1549 = load ptr, ptr %a1 - %t1550 = icmp eq ptr %t1549, null - br i1 %t1550, label %panic3955, label %ok3956 -panic3955: - call void @finch_panic(ptr @.str.2448, i64 1669, ptr @.str.2449) - unreachable -ok3956: - %t1551 = getelementptr inbounds %S.gen.Gen, ptr %t1549, i32 0, i32 15 - %t1552 = load i64, ptr %a1454 - %t1553 = load { ptr, i64, i64 }, ptr %t1551 - %t1554 = extractvalue { ptr, i64, i64 } %t1553, 1 - %t1555 = icmp uge i64 %t1552, %t1554 - br i1 %t1555, label %range3957, label %inrange3958 -range3957: - call void @finch_panic_index(ptr @.str.2450, i64 1669, i64 %t1552, i64 %t1554) - unreachable -inrange3958: - %t1556 = extractvalue { ptr, i64, i64 } %t1553, 0 - %t1557 = getelementptr inbounds %S.gen.FnSig, ptr %t1556, i64 %t1552 - %t1558 = getelementptr inbounds %S.gen.FnSig, ptr %t1557, i32 0, i32 15 - %t1559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1558, i32 0, i32 1 - %t1560 = load ptr, ptr %a1 - %t1561 = load %S.ast.Type, ptr %a1548 - %t1562 = call i1 @finch.gen.owning(ptr %t1560, %S.ast.Type %t1561) - br label %logic.from3959 -logic.from3959: - br i1 %t1562, label %logic.rhs3960, label %logic.end3961 -logic.rhs3960: - %t1563 = load ptr, ptr %a1 - %t1564 = load ptr, ptr %a1 - %t1565 = icmp eq ptr %t1564, null - br i1 %t1565, label %panic3962, label %ok3963 -panic3962: - call void @finch_panic(ptr @.str.2451, i64 1669, ptr @.str.2452) - unreachable -ok3963: - %t1566 = getelementptr inbounds %S.gen.Gen, ptr %t1564, i32 0, i32 15 - %t1567 = load i64, ptr %a1454 - %t1568 = load { ptr, i64, i64 }, ptr %t1566 - %t1569 = extractvalue { ptr, i64, i64 } %t1568, 1 - %t1570 = icmp uge i64 %t1567, %t1569 - br i1 %t1570, label %range3964, label %inrange3965 -range3964: - call void @finch_panic_index(ptr @.str.2453, i64 1669, i64 %t1567, i64 %t1569) - unreachable -inrange3965: - %t1571 = extractvalue { ptr, i64, i64 } %t1568, 0 - %t1572 = getelementptr inbounds %S.gen.FnSig, ptr %t1571, i64 %t1567 - %t1573 = getelementptr inbounds %S.gen.FnSig, ptr %t1572, i32 0, i32 14 - %t1574 = load i64, ptr %a1525 - %t1575 = load { ptr, i64, i64 }, ptr %t1573 - %t1576 = extractvalue { ptr, i64, i64 } %t1575, 1 - %t1577 = icmp uge i64 %t1574, %t1576 - br i1 %t1577, label %range3966, label %inrange3967 -range3966: - call void @finch_panic_index(ptr @.str.2454, i64 1669, i64 %t1574, i64 %t1576) - unreachable -inrange3967: - %t1578 = extractvalue { ptr, i64, i64 } %t1575, 0 - %t1579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1578, i64 %t1574 - %t1580 = load { ptr, i64, i64 }, ptr %t1579 - %t1581 = load %S.ast.Node, ptr %a1512 - %t1582 = call i1 @finch.gen.mutates(ptr %t1563, { ptr, i64, i64 } %t1580, %S.ast.Node %t1581) - %t1583 = xor i1 %t1582, true - br label %logic.rend3968 -logic.rend3968: - br label %logic.end3961 -logic.end3961: - %t1584 = phi i1 [ false, %logic.from3959 ], [ %t1583, %logic.rend3968 ] - %t1585 = load i64, ptr %t1559 - %t1586 = add i64 %t1585, 1 - call void @finch_arr_reserve(ptr %t1558, i64 %t1586, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t1587 = load ptr, ptr %t1558 - %t1588 = getelementptr inbounds i1, ptr %t1587, i64 %t1585 - store i1 %t1584, ptr %t1588 - store i64 %t1586, ptr %t1559 - call void @finch.drop.S_ast_Type(ptr %a1548) - br label %for.step3947 -for.step3947: - %t1589 = load i64, ptr %a1525 - %t1590 = add i64 %t1589, 1 - store i64 %t1590, ptr %a1525 - br label %for.cond3945 -for.end3948: - call void @finch.drop.S_ast_Node(ptr %a1512) - call void @finch.drop.S_ast_Node(ptr %a1497) - br label %for.step3923 -for.step3923: - %t1591 = load i64, ptr %a1454 - %t1592 = add i64 %t1591, 1 - store i64 %t1592, ptr %a1454 - br label %for.cond3921 -for.end3924: - 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 %panic3969, label %ok3970 -panic3969: - call void @finch_panic(ptr @.str.2455, i64 1675, ptr @.str.2456) - unreachable -ok3970: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load i64, ptr %t9 - store i64 0, ptr %a11 - br label %for.cond3971 -for.cond3971: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body3972, label %for.end3974 -for.body3972: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3975, label %ok3976 -panic3975: - call void @finch_panic(ptr @.str.2457, i64 1676, ptr @.str.2458) - unreachable -ok3976: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 17 - %t17 = load i64, ptr %a11 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range3977, label %inrange3978 -range3977: - call void @finch_panic_index(ptr @.str.2459, i64 1676, i64 %t17, i64 %t19) - unreachable -inrange3978: - %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.from3979 -logic.from3979: - br i1 %t34, label %logic.rhs3980, label %logic.end3981 -logic.rhs3980: - %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.rend3982 -logic.rend3982: - br label %logic.end3981 -logic.end3981: - %t42 = phi i1 [ false, %logic.from3979 ], [ %t41, %logic.rend3982 ] - br label %logic.from3983 -logic.from3983: - br i1 %t42, label %logic.rhs3984, label %logic.end3985 -logic.rhs3984: - %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.rend3986 -logic.rend3986: - br label %logic.end3985 -logic.end3985: - %t50 = phi i1 [ false, %logic.from3983 ], [ %t49, %logic.rend3986 ] - br label %logic.from3987 -logic.from3987: - br i1 %t50, label %logic.rhs3988, label %logic.end3989 -logic.rhs3988: - %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.rend3990 -logic.rend3990: - br label %logic.end3989 -logic.end3989: - %t55 = phi i1 [ false, %logic.from3987 ], [ %t54, %logic.rend3990 ] - br i1 %t55, label %then3991, label %endif3993 -then3991: - %t56 = load i64, ptr %a11 - call void @finch.drop.S_gen_Template(ptr %a27) - ret i64 %t56 -endif3993: - call void @finch.drop.S_gen_Template(ptr %a27) - br label %for.step3973 -for.step3973: - %t57 = load i64, ptr %a11 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a11 - br label %for.cond3971 -for.end3974: - 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.cond3994 -each.cond3994: - %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.body3995, label %each.end3997 -each.body3995: - %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.step3996 -each.step3996: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %each.cond3994 -each.end3997: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2460, i64 2, i64 0 }, ptr %a22 - call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t24 -} - -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.gen.Template, align 16 - %a48 = alloca %S.gen.Template, align 16 - %a50 = alloca %S.gen.Template, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.2461, 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 %then3998, label %endif4000 -then3998: - %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.2462, 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.2463, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t24, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.2464, i64 34, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - br label %endif4000 -endif4000: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic4001, label %ok4002 -panic4001: - call void @finch_panic(ptr @.str.2465, i64 1698, ptr @.str.2466) - unreachable -ok4002: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 17 - %t40 = load i64, ptr %a10 - %t41 = load { ptr, i64, i64 }, ptr %t39 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 %t40, %t42 - br i1 %t43, label %range4003, label %inrange4004 -range4003: - call void @finch_panic_index(ptr @.str.2467, i64 1698, i64 %t40, i64 %t42) - unreachable -inrange4004: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds %S.gen.Template, ptr %t44, i64 %t40 - %t46 = load %S.gen.Template, ptr %t45 - store %S.gen.Template %t46, ptr %a47 - call void @finch.copy.S_gen_Template(ptr %a48, ptr %a47) - %t49 = load %S.gen.Template, ptr %a48 - store %S.gen.Template %t49, ptr %a50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 - %t55 = load i64, ptr %t54 - %t56 = icmp ne i64 %t52, %t55 - br i1 %t56, label %then4005, label %endif4007 -then4005: - %t57 = load ptr, ptr %a1 - %t58 = load %S.ast.Node, ptr %a5 - %t59 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2468, i64 7, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a60 - %t64 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - %t66 = load i64, ptr %t65 - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.2469, i64 24, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.2470, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2471, i64 2, i64 0 }, ptr %a93 - call void @finch_str_join(ptr %a94, ptr %t91, ptr %a93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t90, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t90, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t101, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2472, i64 11, i64 0 }, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t108 = load i64, ptr %t107 - call void @finch_str_from_int(ptr %a109, i64 %t108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t106, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t106, ptr %a114 - call void @finch_str_drop(ptr %a114) - store { ptr, i64, i64 } %t110, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t57, %S.ast.Node %t58, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif4007 -endif4007: - %t118 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.2473, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a119 - %t123 = load { ptr, i64, i64 }, ptr %a4 - %t124 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.2474, i64 1, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a2 - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = call i64 @finch.gen.findStruct(ptr %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139) - %t141 = icmp slt i64 %t140, 0 - br i1 %t141, label %then4008, label %endif4010 -then4008: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4011, label %ok4012 -panic4011: - call void @finch_panic(ptr @.str.2475, i64 1704, ptr @.str.2476) - unreachable -ok4012: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 16 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_copy(ptr %a148, ptr %a147) - %t149 = load { ptr, i64, i64 }, ptr %a148 - %t150 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t149, 0 - %t151 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t151, ptr %a152 - call void @finch_str_copy(ptr %a153, ptr %a152) - %t154 = load { ptr, i64, i64 }, ptr %a153 - %t155 = insertvalue %S.gen.StructDef %t150, { ptr, i64, i64 } %t154, 1 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_copy(ptr %a158, ptr %a157) - %t159 = load { ptr, i64, i64 }, ptr %a158 - %t160 = insertvalue %S.gen.StructDef %t155, { ptr, i64, i64 } %t159, 5 - %t161 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t162 = load { ptr, i64, i64 }, ptr %t161 - store { ptr, i64, i64 } %t162, ptr %a163 - call void @finch.copy.arr_str(ptr %a164, ptr %a163) - %t165 = load { ptr, i64, i64 }, ptr %a164 - %t166 = insertvalue %S.gen.StructDef %t160, { ptr, i64, i64 } %t165, 6 - %t167 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t167, ptr %a168 - call void @finch.copy.arr_S_ast_Type(ptr %a169, ptr %a168) - %t170 = load { ptr, i64, i64 }, ptr %a169 - %t171 = insertvalue %S.gen.StructDef %t166, { ptr, i64, i64 } %t170, 7 - %t172 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 4 - %t173 = load i64, ptr %t172 - %t174 = insertvalue %S.gen.StructDef %t171, i64 %t173, 13 - %t175 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 5 - %t176 = load i64, ptr %t175 - %t177 = insertvalue %S.gen.StructDef %t174, i64 %t176, 14 - %t178 = load i64, ptr %t145 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t144 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t178 - store %S.gen.StructDef %t177, ptr %t181 - store i64 %t179, ptr %t145 - %t182 = load ptr, ptr %a1 - %t183 = load ptr, ptr %a1 - %t184 = icmp eq ptr %t183, null - br i1 %t184, label %panic4013, label %ok4014 -panic4013: - call void @finch_panic(ptr @.str.2477, i64 1705, ptr @.str.2478) - unreachable -ok4014: - %t185 = getelementptr inbounds %S.gen.Gen, ptr %t183, i32 0, i32 16 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i32 0, i32 1 - %t187 = load i64, ptr %t186 - %t188 = sub i64 %t187, 1 - call void @finch.gen.resolveStruct(ptr %t182, i64 %t188) - br label %endif4010 -endif4010: - %t189 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2479, i64 6, i64 0 }, 0 - %t190 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_copy(ptr %a192, ptr %a191) - %t193 = load { ptr, i64, i64 }, ptr %a192 - %t194 = insertvalue %S.ast.Type %t189, { ptr, i64, i64 } %t193, 2 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_copy(ptr %a197, ptr %a196) - %t198 = load { ptr, i64, i64 }, ptr %a197 - %t199 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t198, 3 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Template(ptr %a50) - ret %S.ast.Type %t199 -} - -define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) { -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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i64, align 16 - %a61 = alloca i64, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a85 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca %S.gen.FnSig, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %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 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca %S.ast.Type, align 16 - %a327 = alloca %S.ast.Node, align 16 - %a328 = alloca %S.ast.Node, align 16 - %a330 = alloca %S.ast.Node, align 16 - %a335 = alloca i64, align 16 - %a357 = alloca %S.ast.Type, align 16 - %a361 = alloca %S.ast.Type, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.gen.FnSig, align 16 - %a453 = alloca %S.gen.FnSig, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4015, label %ok4016 -panic4015: - call void @finch_panic(ptr @.str.2480, i64 1712, ptr @.str.2481) - unreachable -ok4016: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4017, label %inrange4018 -range4017: - call void @finch_panic_index(ptr @.str.2482, i64 1712, i64 %t9, i64 %t11) - unreachable -inrange4018: - %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.2483, 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) - store { ptr, i64, i64 } %t25, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2484, i64 1, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then4019, label %else4020 -then4019: - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - %t51 = call i64 @finch.gen.findMethod(ptr %t44, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t50) - store i64 %t51, ptr %a52 - %t53 = load i64, ptr %a52 - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4022, label %endif4024 -then4022: - %t55 = load i64, ptr %a52 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t55 -endif4024: - br label %endif4021 -else4020: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t58 = load { ptr, i64, i64 }, ptr %t57 - %t59 = load { ptr, i64, i64 }, ptr %a39 - %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t58, { ptr, i64, i64 } %t59) - store i64 %t60, ptr %a61 - %t62 = load i64, ptr %a61 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then4025, label %endif4027 -then4025: - %t64 = load i64, ptr %a61 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t64 -endif4027: - br label %endif4021 -endif4021: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4028, label %ok4029 -panic4028: - call void @finch_panic(ptr @.str.2485, i64 1725, ptr @.str.2486) - unreachable -ok4029: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 0 - %t68 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t69 = load i64, ptr %t68 - %t70 = load { ptr, i64, i64 }, ptr %t67 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 %t69, %t71 - br i1 %t72, label %range4030, label %inrange4031 -range4030: - call void @finch_panic_index(ptr @.str.2487, i64 1725, i64 %t69, i64 %t71) - unreachable -inrange4031: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Program, ptr %t73, i64 %t69 - %t75 = getelementptr inbounds %S.ast.Program, ptr %t74, i32 0, i32 8 - %t76 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t77 = load i64, ptr %t76 - %t78 = load { ptr, i64, i64 }, ptr %t75 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 %t77, %t79 - br i1 %t80, label %range4032, label %inrange4033 -range4032: - call void @finch_panic_index(ptr @.str.2488, i64 1725, i64 %t77, i64 %t79) - unreachable -inrange4033: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t77 - %t83 = load %S.ast.Node, ptr %t82 - store %S.ast.Node %t83, ptr %a84 - call void @finch.copy.S_ast_Node(ptr %a85, ptr %a84) - %t86 = load %S.ast.Node, ptr %a85 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t92, 0 - %t94 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = insertvalue %S.gen.FnSig %t93, { ptr, i64, i64 } %t97, 1 - %t99 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t100 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_copy(ptr %a102, ptr %a101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - %t104 = insertvalue %S.gen.FnSig %t98, { ptr, i64, i64 } %t103, 3 - %t105 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - call void @finch.copy.arr_str(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = insertvalue %S.gen.FnSig %t104, { ptr, i64, i64 } %t109, 6 - %t111 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch.copy.arr_S_ast_Type(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.FnSig %t110, { ptr, i64, i64 } %t114, 7 - %t116 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_copy(ptr %a118, ptr %a117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - %t120 = insertvalue %S.gen.FnSig %t115, { ptr, i64, i64 } %t119, 8 - %t121 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 7 - %t122 = load i1, ptr %t121 - %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 9 - %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 - %t125 = load i1, ptr %t124 - %t126 = insertvalue %S.gen.FnSig %t123, i1 %t125, 10 - %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t128 = load i64, ptr %t127 - %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 16 - %t130 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.FnSig %t129, i64 %t131, 17 - store %S.gen.FnSig %t132, ptr %a133 - %t134 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t135) - store { ptr, i64, i64 } { ptr @.str.2489, i64 7, i64 0 }, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.2490, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = load { ptr, i64, i64 }, ptr %a39 - %t148 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t146, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t146, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - %t155 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t156 = load { ptr, i64, i64 }, ptr %t155 - store { ptr, i64, i64 } %t154, ptr %t155 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i32 0, i32 1 - %t160 = load i64, ptr %t159 - %t161 = icmp sgt i64 %t160, 0 - br i1 %t161, label %then4034, label %endif4036 -then4034: - %t162 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 1 - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_copy(ptr %a166, ptr %a165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - %t168 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t167, ptr %t164 - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t171 = load { ptr, i64, i64 }, ptr %t170 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 2 - store { ptr, i64, i64 } %t171, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %t172 - store { ptr, i64, i64 } %t175, ptr %t172 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2491, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a180 - %t184 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t183, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t183, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t190, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t195) - store { ptr, i64, i64 } { ptr @.str.2492, i64 7, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t201, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.2493, i64 1, i64 0 }, ptr %a204 - call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) - store { ptr, i64, i64 } %t201, ptr %a205 - call void @finch_str_drop(ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a202 - %t207 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t206, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t206, ptr %a213 - call void @finch_str_drop(ptr %a213) - store { ptr, i64, i64 } %t209, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.2494, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } %t220, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t220, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t227, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_drop(ptr %a230) - br label %endif4036 -endif4036: - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic4037, label %ok4038 -panic4037: - call void @finch_panic(ptr @.str.2495, i64 1734, ptr @.str.2496) - unreachable -ok4038: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 18 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch.copy.arr_str(ptr %a236, ptr %a235) - %t237 = load { ptr, i64, i64 }, ptr %a236 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic4039, label %ok4040 -panic4039: - call void @finch_panic(ptr @.str.2497, i64 1735, ptr @.str.2498) - unreachable -ok4040: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 19 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - call void @finch.copy.arr_S_ast_Type(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t245, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = icmp eq ptr %t247, null - br i1 %t248, label %panic4041, label %ok4042 -panic4041: - call void @finch_panic(ptr @.str.2499, i64 1736, ptr @.str.2500) - unreachable -ok4042: - %t249 = getelementptr inbounds %S.gen.Gen, ptr %t247, i32 0, i32 14 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - call void @finch_str_copy(ptr %a252, ptr %a251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic4043, label %ok4044 -panic4043: - call void @finch_panic(ptr @.str.2501, i64 1737, ptr @.str.2502) - unreachable -ok4044: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 20 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic4045, label %ok4046 -panic4045: - call void @finch_panic(ptr @.str.2503, i64 1738, ptr @.str.2504) - unreachable -ok4046: - %t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 18 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch.copy.arr_str(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t270, ptr %t267 - store { ptr, i64, i64 } %t271, ptr %a272 - call void @finch.drop.arr_str(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a3 - %t274 = load ptr, ptr %a1 - %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic4047, label %ok4048 -panic4047: - call void @finch_panic(ptr @.str.2505, i64 1739, ptr @.str.2506) - unreachable -ok4048: - %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 19 - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch.copy.arr_S_ast_Type(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch.drop.arr_S_ast_Type(ptr %a281) - %t282 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - %t284 = load ptr, ptr %a1 - %t285 = icmp eq ptr %t284, null - br i1 %t285, label %panic4049, label %ok4050 -panic4049: - call void @finch_panic(ptr @.str.2507, i64 1740, ptr @.str.2508) - unreachable -ok4050: - %t286 = getelementptr inbounds %S.gen.Gen, ptr %t284, i32 0, i32 14 - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_copy(ptr %a288, ptr %a287) - %t289 = load { ptr, i64, i64 }, ptr %a288 - %t290 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t289, ptr %t286 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } { ptr @.str.2509, i64 17, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.2510, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - %t303 = load ptr, ptr %a1 - %t304 = icmp eq ptr %t303, null - br i1 %t304, label %panic4051, label %ok4052 -panic4051: - call void @finch_panic(ptr @.str.2511, i64 1741, ptr @.str.2512) - unreachable -ok4052: - %t305 = getelementptr inbounds %S.gen.Gen, ptr %t303, i32 0, i32 20 - %t306 = load { ptr, i64, i64 }, ptr %t305 - store { ptr, i64, i64 } %t302, ptr %t305 - store { ptr, i64, i64 } %t306, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = load ptr, ptr %a1 - %t309 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = load %S.ast.Node, ptr %a87 - %t312 = call %S.ast.Type @finch.gen.resolve(ptr %t308, %S.ast.Type %t310, %S.ast.Node %t311) - %t313 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 12 - %t314 = load %S.ast.Type, ptr %t313 - store %S.ast.Type %t312, ptr %t313 - store %S.ast.Type %t314, ptr %a315 - call void @finch.drop.S_ast_Type(ptr %a315) - %t316 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = sub i64 %t319, 1 - %t321 = load { ptr, i64, i64 }, ptr %t316 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range4053, label %inrange4054 -range4053: - call void @finch_panic_index(ptr @.str.2513, i64 1743, i64 %t320, i64 %t322) - unreachable -inrange4054: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 - %t326 = load %S.ast.Node, ptr %t325 - store %S.ast.Node %t326, ptr %a327 - call void @finch.copy.S_ast_Node(ptr %a328, ptr %a327) - %t329 = load %S.ast.Node, ptr %a328 - store %S.ast.Node %t329, ptr %a330 - %t331 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = sub i64 %t333, 1 - store i64 0, ptr %a335 - br label %for.cond4055 -for.cond4055: - %t336 = load i64, ptr %a335 - %t337 = icmp slt i64 %t336, %t334 - br i1 %t337, label %for.body4056, label %for.end4058 -for.body4056: - %t338 = load ptr, ptr %a1 - %t339 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t340 = load i64, ptr %a335 - %t341 = load { ptr, i64, i64 }, ptr %t339 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range4059, label %inrange4060 -range4059: - call void @finch_panic_index(ptr @.str.2514, i64 1745, i64 %t340, i64 %t342) - unreachable -inrange4060: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Node, ptr %t344, i64 %t340 - %t346 = getelementptr inbounds %S.ast.Node, ptr %t345, i32 0, i32 5 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t349 = load i64, ptr %a335 - %t350 = load { ptr, i64, i64 }, ptr %t348 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range4061, label %inrange4062 -range4061: - call void @finch_panic_index(ptr @.str.2515, i64 1745, i64 %t349, i64 %t351) - unreachable -inrange4062: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i64 %t349 - %t355 = load %S.ast.Node, ptr %t354 - %t356 = call %S.ast.Type @finch.gen.resolve(ptr %t338, %S.ast.Type %t347, %S.ast.Node %t355) - store %S.ast.Type %t356, ptr %a357 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 13 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 - %t360 = load %S.ast.Type, ptr %a357 - store %S.ast.Type %t360, ptr %a361 - call void @finch.copy.S_ast_Type(ptr %a362, ptr %a361) - %t363 = load %S.ast.Type, ptr %a362 - %t364 = load i64, ptr %t359 - %t365 = add i64 %t364, 1 - call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t366 = load ptr, ptr %t358 - %t367 = getelementptr inbounds %S.ast.Type, ptr %t366, i64 %t364 - store %S.ast.Type %t363, ptr %t367 - store i64 %t365, ptr %t359 - %t368 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 14 - %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 - %t370 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t371 = load i64, ptr %a335 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4063, label %inrange4064 -range4063: - call void @finch_panic_index(ptr @.str.2516, i64 1747, i64 %t371, i64 %t373) - unreachable -inrange4064: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds %S.ast.Node, ptr %t375, i64 %t371 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i32 0, i32 1 - %t378 = load { ptr, i64, i64 }, ptr %t377 - store { ptr, i64, i64 } %t378, ptr %a379 - call void @finch_str_copy(ptr %a380, ptr %a379) - %t381 = load { ptr, i64, i64 }, ptr %a380 - %t382 = load i64, ptr %t369 - %t383 = add i64 %t382, 1 - call void @finch_arr_reserve(ptr %t368, i64 %t383, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t384 = load ptr, ptr %t368 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t382 - store { ptr, i64, i64 } %t381, ptr %t385 - store i64 %t383, ptr %t369 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 15 - %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i32 0, i32 1 - %t388 = load ptr, ptr %a1 - %t389 = load %S.ast.Type, ptr %a357 - %t390 = call i1 @finch.gen.owning(ptr %t388, %S.ast.Type %t389) - br label %logic.from4065 -logic.from4065: - br i1 %t390, label %logic.rhs4066, label %logic.end4067 -logic.rhs4066: - %t391 = load ptr, ptr %a1 - %t392 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t393 = load i64, ptr %a335 - %t394 = load { ptr, i64, i64 }, ptr %t392 - %t395 = extractvalue { ptr, i64, i64 } %t394, 1 - %t396 = icmp uge i64 %t393, %t395 - br i1 %t396, label %range4068, label %inrange4069 -range4068: - call void @finch_panic_index(ptr @.str.2517, i64 1748, i64 %t393, i64 %t395) - unreachable -inrange4069: - %t397 = extractvalue { ptr, i64, i64 } %t394, 0 - %t398 = getelementptr inbounds %S.ast.Node, ptr %t397, i64 %t393 - %t399 = getelementptr inbounds %S.ast.Node, ptr %t398, i32 0, i32 1 - %t400 = load { ptr, i64, i64 }, ptr %t399 - %t401 = load %S.ast.Node, ptr %a330 - %t402 = call i1 @finch.gen.mutates(ptr %t391, { ptr, i64, i64 } %t400, %S.ast.Node %t401) - %t403 = xor i1 %t402, true - br label %logic.rend4070 -logic.rend4070: - br label %logic.end4067 -logic.end4067: - %t404 = phi i1 [ false, %logic.from4065 ], [ %t403, %logic.rend4070 ] - %t405 = load i64, ptr %t387 - %t406 = add i64 %t405, 1 - call void @finch_arr_reserve(ptr %t386, i64 %t406, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t407 = load ptr, ptr %t386 - %t408 = getelementptr inbounds i1, ptr %t407, i64 %t405 - store i1 %t404, ptr %t408 - store i64 %t406, ptr %t387 - call void @finch.drop.S_ast_Type(ptr %a357) - br label %for.step4057 -for.step4057: - %t409 = load i64, ptr %a335 - %t410 = add i64 %t409, 1 - store i64 %t410, ptr %a335 - br label %for.cond4055 -for.end4058: - %t411 = load { ptr, i64, i64 }, ptr %a238 - %t412 = load ptr, ptr %a1 - %t413 = icmp eq ptr %t412, null - br i1 %t413, label %panic4071, label %ok4072 -panic4071: - call void @finch_panic(ptr @.str.2518, i64 1750, ptr @.str.2519) - unreachable -ok4072: - %t414 = getelementptr inbounds %S.gen.Gen, ptr %t412, i32 0, i32 18 - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch.copy.arr_str(ptr %a416, ptr %a415) - %t417 = load { ptr, i64, i64 }, ptr %a416 - %t418 = load { ptr, i64, i64 }, ptr %t414 - store { ptr, i64, i64 } %t417, ptr %t414 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch.drop.arr_str(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a246 - %t421 = load ptr, ptr %a1 - %t422 = icmp eq ptr %t421, null - br i1 %t422, label %panic4073, label %ok4074 -panic4073: - call void @finch_panic(ptr @.str.2520, i64 1751, ptr @.str.2521) - unreachable -ok4074: - %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 19 - store { ptr, i64, i64 } %t420, ptr %a424 - call void @finch.copy.arr_S_ast_Type(ptr %a425, ptr %a424) - %t426 = load { ptr, i64, i64 }, ptr %a425 - %t427 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t426, ptr %t423 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch.drop.arr_S_ast_Type(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a254 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic4075, label %ok4076 -panic4075: - call void @finch_panic(ptr @.str.2522, i64 1752, ptr @.str.2523) - unreachable -ok4076: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 14 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_copy(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a262 - %t439 = load ptr, ptr %a1 - %t440 = icmp eq ptr %t439, null - br i1 %t440, label %panic4077, label %ok4078 -panic4077: - call void @finch_panic(ptr @.str.2524, i64 1753, ptr @.str.2525) - unreachable -ok4078: - %t441 = getelementptr inbounds %S.gen.Gen, ptr %t439, i32 0, i32 20 - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - %t445 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t444, ptr %t441 - store { ptr, i64, i64 } %t445, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic4079, label %ok4080 -panic4079: - call void @finch_panic(ptr @.str.2526, i64 1754, ptr @.str.2527) - unreachable -ok4080: - %t449 = getelementptr inbounds %S.gen.Gen, ptr %t447, i32 0, i32 15 - %t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i32 0, i32 1 - %t451 = load %S.gen.FnSig, ptr %a133 - store %S.gen.FnSig %t451, ptr %a452 - call void @finch.copy.S_gen_FnSig(ptr %a453, ptr %a452) - %t454 = load %S.gen.FnSig, ptr %a453 - %t455 = load i64, ptr %t450 - %t456 = add i64 %t455, 1 - call void @finch_arr_reserve(ptr %t449, i64 %t456, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t457 = load ptr, ptr %t449 - %t458 = getelementptr inbounds %S.gen.FnSig, ptr %t457, i64 %t455 - store %S.gen.FnSig %t454, ptr %t458 - store i64 %t456, ptr %t450 - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic4081, label %ok4082 -panic4081: - call void @finch_panic(ptr @.str.2528, i64 1755, ptr @.str.2529) - unreachable -ok4082: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 15 - %t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i32 0, i32 1 - %t463 = load i64, ptr %t462 - %t464 = sub i64 %t463, 1 - call void @finch.drop.S_ast_Node(ptr %a330) - call void @finch_str_drop(ptr %a262) - call void @finch_str_drop(ptr %a254) - call void @finch.drop.arr_S_ast_Type(ptr %a246) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_gen_FnSig(ptr %a133) - call void @finch.drop.S_ast_Node(ptr %a87) - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t464 -} - -define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) { -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 - %a84 = alloca %S.ast.Type, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca %S.gen.StructDef, align 16 - %a231 = alloca %S.gen.StructDef, align 16 - %a233 = alloca %S.gen.StructDef, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.2530, 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.from4083 -logic.from4083: - br i1 %t11, label %logic.rhs4084, label %logic.end4085 -logic.rhs4084: - %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.rend4086 -logic.rend4086: - br label %logic.end4085 -logic.end4085: - %t16 = phi i1 [ false, %logic.from4083 ], [ %t15, %logic.rend4086 ] - br label %logic.from4087 -logic.from4087: - br i1 %t16, label %logic.rhs4088, label %logic.end4089 -logic.rhs4088: - %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.rend4090 -logic.rend4090: - br label %logic.end4089 -logic.end4089: - %t21 = phi i1 [ false, %logic.from4087 ], [ %t20, %logic.rend4090 ] - br label %logic.from4091 -logic.from4091: - br i1 %t21, label %logic.rhs4092, label %logic.end4093 -logic.rhs4092: - %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.cond4094 -find.cond4094: - %t29 = load i64, ptr %a28 - %t30 = icmp slt i64 %t29, %t26 - br i1 %t30, label %find.body4095, label %find.end4098 -find.body4095: - %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.hit4096, label %find.next4097 -find.hit4096: - store i64 %t29, ptr %a25 - br label %find.end4098 -find.next4097: - %t37 = add i64 %t29, 1 - store i64 %t37, ptr %a28 - br label %find.cond4094 -find.end4098: - %t38 = load i64, ptr %a25 - %t39 = icmp sge i64 %t38, 0 - br label %logic.rend4099 -logic.rend4099: - br label %logic.end4093 -logic.end4093: - %t40 = phi i1 [ false, %logic.from4091 ], [ %t39, %logic.rend4099 ] - br i1 %t40, label %then4100, label %endif4102 -then4100: - %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.cond4103 -find.cond4103: - %t48 = load i64, ptr %a47 - %t49 = icmp slt i64 %t48, %t45 - br i1 %t49, label %find.body4104, label %find.end4107 -find.body4104: - %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.hit4105, label %find.next4106 -find.hit4105: - store i64 %t48, ptr %a44 - br label %find.end4107 -find.next4106: - %t56 = add i64 %t48, 1 - store i64 %t56, ptr %a47 - br label %find.cond4103 -find.end4107: - %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 %panic4108, label %ok4109 -panic4108: - call void @finch_panic(ptr @.str.2531, i64 1762, ptr @.str.2532) - unreachable -ok4109: - %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 %range4110, label %inrange4111 -range4110: - call void @finch_panic_index(ptr @.str.2533, i64 1762, i64 %t62, i64 %t64) - unreachable -inrange4111: - %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 %then4112, label %endif4114 -then4112: - %t70 = load %S.ast.Type, ptr %a3 - %t71 = load ptr, ptr %a5 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic4115, label %ok4116 -panic4115: - call void @finch_panic(ptr @.str.2534, i64 1763, ptr @.str.2535) - unreachable -ok4116: - %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 %range4117, label %inrange4118 -range4117: - call void @finch_panic_index(ptr @.str.2536, i64 1763, i64 %t74, i64 %t76) - unreachable -inrange4118: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 - store %S.ast.Type %t70, ptr %a80 - call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80) - %t82 = load %S.ast.Type, ptr %a81 - %t83 = load %S.ast.Type, ptr %t79 - store %S.ast.Type %t82, ptr %t79 - store %S.ast.Type %t83, ptr %a84 - call void @finch.drop.S_ast_Type(ptr %a84) - %t85 = load ptr, ptr %a5 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic4119, label %ok4120 -panic4119: - call void @finch_panic(ptr @.str.2537, i64 1764, ptr @.str.2538) - unreachable -ok4120: - %t87 = getelementptr inbounds %S.gen.Binds, ptr %t85, i32 0, i32 1 - %t88 = load i64, ptr %a58 - %t89 = load { ptr, i64, i64 }, ptr %t87 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = icmp uge i64 %t88, %t90 - br i1 %t91, label %range4121, label %inrange4122 -range4121: - call void @finch_panic_index(ptr @.str.2539, i64 1764, i64 %t88, i64 %t90) - unreachable -inrange4122: - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = getelementptr inbounds i1, ptr %t92, i64 %t88 - store i1 true, ptr %t93 - br label %endif4114 -endif4114: - ret void -endif4102: - %t94 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.2540, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br label %logic.from4123 -logic.from4123: - br i1 %t99, label %logic.end4125, label %logic.rhs4124 -logic.rhs4124: - %t100 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.2541, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend4126 -logic.rend4126: - br label %logic.end4125 -logic.end4125: - %t106 = phi i1 [ true, %logic.from4123 ], [ %t105, %logic.rend4126 ] - br label %logic.from4127 -logic.from4127: - br i1 %t106, label %logic.end4129, label %logic.rhs4128 -logic.rhs4128: - %t107 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2542, i64 5, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend4130 -logic.rend4130: - br label %logic.end4129 -logic.end4129: - %t113 = phi i1 [ true, %logic.from4127 ], [ %t112, %logic.rend4130 ] - br label %logic.from4131 -logic.from4131: - br i1 %t113, label %logic.rhs4132, label %logic.end4133 -logic.rhs4132: - %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp sgt i64 %t116, 0 - br label %logic.rend4134 -logic.rend4134: - br label %logic.end4133 -logic.end4133: - %t118 = phi i1 [ false, %logic.from4131 ], [ %t117, %logic.rend4134 ] - br label %logic.from4135 -logic.from4135: - br i1 %t118, label %logic.rhs4136, label %logic.end4137 -logic.rhs4136: - %t119 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t122, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.rend4138 -logic.rend4138: - br label %logic.end4137 -logic.end4137: - %t127 = phi i1 [ false, %logic.from4135 ], [ %t126, %logic.rend4138 ] - br label %logic.from4139 -logic.from4139: - br i1 %t127, label %logic.rhs4140, label %logic.end4141 -logic.rhs4140: - %t128 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load i64, ptr %t129 - %t131 = icmp sgt i64 %t130, 0 - br label %logic.rend4142 -logic.rend4142: - br label %logic.end4141 -logic.end4141: - %t132 = phi i1 [ false, %logic.from4139 ], [ %t131, %logic.rend4142 ] - br i1 %t132, label %then4143, label %endif4145 -then4143: - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 0, %t136 - br i1 %t137, label %range4146, label %inrange4147 -range4146: - call void @finch_panic_index(ptr @.str.2543, i64 1769, i64 0, i64 %t136) - unreachable -inrange4147: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i64 0 - %t140 = load %S.ast.Type, ptr %t139 - %t141 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t142 = load { ptr, i64, i64 }, ptr %t141 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 0, %t143 - br i1 %t144, label %range4148, label %inrange4149 -range4148: - call void @finch_panic_index(ptr @.str.2544, i64 1769, i64 0, i64 %t143) - unreachable -inrange4149: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 0 - %t147 = load %S.ast.Type, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %a4 - %t149 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t133, %S.ast.Type %t140, %S.ast.Type %t147, { ptr, i64, i64 } %t148, ptr %t149) - ret void -endif4145: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t151 = load { ptr, i64, i64 }, ptr %t150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2545, i64 3, i64 0 }, ptr %a153 - %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) - %t155 = icmp ne i32 %t154, 0 - br label %logic.from4150 -logic.from4150: - br i1 %t155, label %logic.rhs4151, label %logic.end4152 -logic.rhs4151: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.2546, i64 3, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.rend4153 -logic.rend4153: - br label %logic.end4152 -logic.end4152: - %t162 = phi i1 [ false, %logic.from4150 ], [ %t161, %logic.rend4153 ] - br i1 %t162, label %then4154, label %endif4156 -then4154: - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = extractvalue { ptr, i64, i64 } %t165, 1 - %t167 = icmp uge i64 0, %t166 - br i1 %t167, label %range4157, label %inrange4158 -range4157: - call void @finch_panic_index(ptr @.str.2547, i64 1773, i64 0, i64 %t166) - unreachable -inrange4158: - %t168 = extractvalue { ptr, i64, i64 } %t165, 0 - %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range4159, label %inrange4160 -range4159: - call void @finch_panic_index(ptr @.str.2548, i64 1773, i64 0, i64 %t173) - unreachable -inrange4160: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i64 0 - %t177 = load %S.ast.Type, ptr %t176 - %t178 = load { ptr, i64, i64 }, ptr %a4 - %t179 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t163, %S.ast.Type %t170, %S.ast.Type %t177, { ptr, i64, i64 } %t178, ptr %t179) - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 1, %t183 - br i1 %t184, label %range4161, label %inrange4162 -range4161: - call void @finch_panic_index(ptr @.str.2549, i64 1774, i64 1, i64 %t183) - unreachable -inrange4162: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i64 1 - %t187 = load %S.ast.Type, ptr %t186 - %t188 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 1, %t190 - br i1 %t191, label %range4163, label %inrange4164 -range4163: - call void @finch_panic_index(ptr @.str.2550, i64 1774, i64 1, i64 %t190) - unreachable -inrange4164: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i64 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = load { ptr, i64, i64 }, ptr %a4 - %t196 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t180, %S.ast.Type %t187, %S.ast.Type %t194, { ptr, i64, i64 } %t195, ptr %t196) - ret void -endif4156: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t198 = load { ptr, i64, i64 }, ptr %t197 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2551, i64 5, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from4165 -logic.from4165: - br i1 %t202, label %logic.rhs4166, label %logic.end4167 -logic.rhs4166: - %t203 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - %t206 = icmp sgt i64 %t205, 0 - br label %logic.rend4168 -logic.rend4168: - br label %logic.end4167 -logic.end4167: - %t207 = phi i1 [ false, %logic.from4165 ], [ %t206, %logic.rend4168 ] - br label %logic.from4169 -logic.from4169: - br i1 %t207, label %logic.rhs4170, label %logic.end4171 -logic.rhs4170: - %t208 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t209, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2552, i64 6, i64 0 }, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br label %logic.rend4172 -logic.rend4172: - br label %logic.end4171 -logic.end4171: - %t214 = phi i1 [ false, %logic.from4169 ], [ %t213, %logic.rend4172 ] - br i1 %t214, label %then4173, label %endif4175 -then4173: - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic4176, label %ok4177 -panic4176: - call void @finch_panic(ptr @.str.2553, i64 1778, ptr @.str.2554) - unreachable -ok4177: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 16 - %t218 = load ptr, ptr %a1 - %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t220 = load { ptr, i64, i64 }, ptr %t219 - %t221 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = call i64 @finch.gen.findStruct(ptr %t218, { ptr, i64, i64 } %t220, { ptr, i64, i64 } %t222) - %t224 = load { ptr, i64, i64 }, ptr %t217 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 %t223, %t225 - br i1 %t226, label %range4178, label %inrange4179 -range4178: - call void @finch_panic_index(ptr @.str.2555, i64 1778, i64 %t223, i64 %t225) - unreachable -inrange4179: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.gen.StructDef, ptr %t227, i64 %t223 - %t229 = load %S.gen.StructDef, ptr %t228 - store %S.gen.StructDef %t229, ptr %a230 - call void @finch.copy.S_gen_StructDef(ptr %a231, ptr %a230) - %t232 = load %S.gen.StructDef, ptr %a231 - store %S.gen.StructDef %t232, ptr %a233 - %t234 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 5 - %t235 = load { ptr, i64, i64 }, ptr %t234 - %t236 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } %t235, ptr %a238 - store { ptr, i64, i64 } %t237, ptr %a239 - %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) - %t241 = icmp ne i32 %t240, 0 - br label %logic.from4180 -logic.from4180: - br i1 %t241, label %logic.rhs4181, label %logic.end4182 -logic.rhs4181: - %t242 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i32 0, i32 1 - %t247 = load i64, ptr %t246 - %t248 = icmp eq i64 %t244, %t247 - br label %logic.rend4183 -logic.rend4183: - br label %logic.end4182 -logic.end4182: - %t249 = phi i1 [ false, %logic.from4180 ], [ %t248, %logic.rend4183 ] - br i1 %t249, label %then4184, label %endif4186 -then4184: - %t250 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1 - %t252 = load i64, ptr %t251 - store i64 0, ptr %a253 - br label %for.cond4187 -for.cond4187: - %t254 = load i64, ptr %a253 - %t255 = icmp slt i64 %t254, %t252 - br i1 %t255, label %for.body4188, label %for.end4190 -for.body4188: - %t256 = load ptr, ptr %a1 - %t257 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t258 = load i64, ptr %a253 - %t259 = load { ptr, i64, i64 }, ptr %t257 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range4191, label %inrange4192 -range4191: - call void @finch_panic_index(ptr @.str.2556, i64 1781, i64 %t258, i64 %t260) - unreachable -inrange4192: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i64 %t258 - %t264 = load %S.ast.Type, ptr %t263 - %t265 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t266 = load i64, ptr %a253 - %t267 = load { ptr, i64, i64 }, ptr %t265 - %t268 = extractvalue { ptr, i64, i64 } %t267, 1 - %t269 = icmp uge i64 %t266, %t268 - br i1 %t269, label %range4193, label %inrange4194 -range4193: - call void @finch_panic_index(ptr @.str.2557, i64 1781, i64 %t266, i64 %t268) - unreachable -inrange4194: - %t270 = extractvalue { ptr, i64, i64 } %t267, 0 - %t271 = getelementptr inbounds %S.ast.Type, ptr %t270, i64 %t266 - %t272 = load %S.ast.Type, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %a4 - %t274 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t256, %S.ast.Type %t264, %S.ast.Type %t272, { ptr, i64, i64 } %t273, ptr %t274) - br label %for.step4189 -for.step4189: - %t275 = load i64, ptr %a253 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a253 - br label %for.cond4187 -for.end4190: - br label %endif4186 -endif4186: - call void @finch.drop.S_gen_StructDef(ptr %a233) - br label %endif4175 -endif4175: - ret void -} - -define internal void @finch.drop.arr_S_gen_Val(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4271 -n.cond4271: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4272, label %n.end4273 -n.body4272: - %t7 = getelementptr inbounds %S.gen.Val, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Val(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4271 -n.end4273: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Binds(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_bool(ptr %t2) - ret void -} - -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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a137 = alloca %S.gen.Binds, align 16 - %a141 = alloca i64, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca i64, align 16 - %a167 = alloca i64, align 16 - %a182 = alloca %S.gen.Val, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca %S.gen.Val, align 16 - %a228 = alloca %S.gen.Val, align 16 - %a255 = alloca i64, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca i64, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a321 = alloca %S.gen.FnSig, align 16 - %a323 = alloca %S.gen.FnSig, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca i64, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca %S.gen.Val, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.gen.Val, align 16 - %a414 = alloca i64, align 16 - %a422 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic4195, label %ok4196 -panic4195: - call void @finch_panic(ptr @.str.2558, i64 1789, ptr @.str.2559) - unreachable -ok4196: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a3 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4197, label %inrange4198 -range4197: - call void @finch_panic_index(ptr @.str.2560, i64 1789, i64 %t9, i64 %t11) - unreachable -inrange4198: - %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 %panic4199, label %ok4200 -panic4199: - call void @finch_panic(ptr @.str.2561, i64 1790, ptr @.str.2562) - unreachable -ok4200: - %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 %range4201, label %inrange4202 -range4201: - call void @finch_panic_index(ptr @.str.2563, i64 1790, i64 %t24, i64 %t26) - unreachable -inrange4202: - %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 %range4203, label %inrange4204 -range4203: - call void @finch_panic_index(ptr @.str.2564, i64 1790, i64 %t32, i64 %t34) - unreachable -inrange4204: - %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 %then4205, label %endif4207 -then4205: - %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 %then4208, label %endif4210 -then4208: - %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.2565, 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) - store { ptr, i64, i64 } %t73, ptr %a82 - call void @finch_str_drop(ptr %a82) - store { ptr, i64, i64 } %t78, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2566, i64 27, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i32 0, i32 1 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - %t93 = load i64, ptr %t92 - call void @finch_str_from_int(ptr %a94, i64 %t93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t89, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t89, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif4210 -endif4210: - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t104 = getelementptr inbounds %S.ast.Type, ptr %t103, i32 0, i32 1 - store i64 0, ptr %a105 - br label %each.cond4211 -each.cond4211: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body4212, label %each.end4214 -each.body4212: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.ast.Type, ptr %t110, i64 %t108 - %t112 = load %S.ast.Type, ptr %t111 - store %S.ast.Type %t112, ptr %a113 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = load %S.ast.Type, ptr %a113 - %t117 = load %S.ast.Node, ptr %a2 - %t118 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t116, %S.ast.Node %t117) - %t119 = load i64, ptr %t114 - %t120 = add i64 %t119, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t120, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t121 = load ptr, ptr %a53 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 %t119 - store %S.ast.Type %t118, ptr %t122 - store i64 %t120, ptr %t114 - br label %each.step4213 -each.step4213: - %t123 = load i64, ptr %a105 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a105 - br label %each.cond4211 -each.end4214: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = load i64, ptr %a3 - %t128 = load { ptr, i64, i64 }, ptr %a53 - %t129 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2567, i64 4, i64 0 }) - %t130 = load %S.ast.Node, ptr %a2 - %t131 = call i64 @finch.gen.instFn(ptr %t126, i64 %t127, { ptr, i64, i64 } %t128, %S.ast.Type %t129, %S.ast.Node %t130) - store %S.ast.Type %t129, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - %t133 = load %S.ast.Node, ptr %a2 - %t134 = load i64, ptr %a4 - %t135 = load { ptr, i64, i64 }, ptr %a5 - %t136 = call %S.gen.Val @finch.gen.callFn(ptr %t125, i64 %t131, %S.ast.Node %t133, i64 %t134, { ptr, i64, i64 } %t135, { ptr, i64, i64 } { ptr @.str.2568, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2569, i64 0, i64 0 }) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t136 -endif4207: - store %S.gen.Binds zeroinitializer, ptr %a137 - %t138 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond4215 -for.cond4215: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body4216, label %for.end4218 -for.body4216: - %t144 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2570, i64 4, i64 0 }) - %t147 = load i64, ptr %t145 - %t148 = add i64 %t147, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t148, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t149 = load ptr, ptr %t144 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 %t147 - store %S.ast.Type %t146, ptr %t150 - store i64 %t148, ptr %t145 - %t151 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t154, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %t151 - %t156 = getelementptr inbounds i1, ptr %t155, i64 %t153 - store i1 false, ptr %t156 - store i64 %t154, ptr %t152 - br label %for.step4217 -for.step4217: - %t157 = load i64, ptr %a141 - %t158 = add i64 %t157, 1 - store i64 %t158, ptr %a141 - br label %for.cond4215 -for.end4218: - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4219, label %ok4220 -panic4219: - call void @finch_panic(ptr @.str.2571, i64 1809, ptr @.str.2572) - unreachable -ok4220: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 11 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 - %t164 = load i64, ptr %t163 - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a47 - store i64 0, ptr %a167 - br label %for.cond4221 -for.cond4221: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body4222, label %for.end4224 -for.body4222: - %t170 = load ptr, ptr %a1 - %t171 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t172 = load i64, ptr %a4 - %t173 = load i64, ptr %a167 - %t174 = add i64 %t172, %t173 - %t175 = load { ptr, i64, i64 }, ptr %t171 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range4225, label %inrange4226 -range4225: - call void @finch_panic_index(ptr @.str.2573, i64 1811, i64 %t174, i64 %t176) - unreachable -inrange4226: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t174 - %t180 = load %S.ast.Node, ptr %t179 - %t181 = call %S.gen.Val @finch.gen.expr(ptr %t170, %S.ast.Node %t180) - store %S.gen.Val %t181, ptr %a182 - %t183 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i32 0, i32 0 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.2574, i64 4, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.from4227 -logic.from4227: - br i1 %t189, label %logic.end4229, label %logic.rhs4228 -logic.rhs4228: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i32 0, i32 0 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.2575, i64 4, i64 0 }, ptr %a194 - %t195 = call i32 @finch_str_eq(ptr %a193, ptr %a194) - %t196 = icmp ne i32 %t195, 0 - br label %logic.rend4230 -logic.rend4230: - br label %logic.end4229 -logic.end4229: - %t197 = phi i1 [ true, %logic.from4227 ], [ %t196, %logic.rend4230 ] - br i1 %t197, label %then4231, label %endif4233 -then4231: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t200 = load i64, ptr %a4 - %t201 = load i64, ptr %a167 - %t202 = add i64 %t200, %t201 - %t203 = load { ptr, i64, i64 }, ptr %t199 - %t204 = extractvalue { ptr, i64, i64 } %t203, 1 - %t205 = icmp uge i64 %t202, %t204 - br i1 %t205, label %range4234, label %inrange4235 -range4234: - call void @finch_panic_index(ptr @.str.2576, i64 1813, i64 %t202, i64 %t204) - unreachable -inrange4235: - %t206 = extractvalue { ptr, i64, i64 } %t203, 0 - %t207 = getelementptr inbounds %S.ast.Node, ptr %t206, i64 %t202 - %t208 = load %S.ast.Node, ptr %t207 - %t209 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2578, i64 2, i64 0 }, ptr %a211 - call void @finch_str_join(ptr %a212, ptr %t209, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.2577, i64 29, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t213, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.2579, i64 5, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t198, %S.ast.Node %t208, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - br label %endif4233 -endif4233: - %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t226 = load %S.gen.Val, ptr %a182 - store %S.gen.Val %t226, ptr %a227 - call void @finch.copy.S_gen_Val(ptr %a228, ptr %a227) - %t229 = load %S.gen.Val, ptr %a228 - %t230 = load i64, ptr %t225 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %a159, i64 %t231, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %a159 - %t233 = getelementptr inbounds %S.gen.Val, ptr %t232, i64 %t230 - store %S.gen.Val %t229, ptr %t233 - store i64 %t231, ptr %t225 - %t234 = load ptr, ptr %a1 - %t235 = load %S.gen.Val, ptr %a182 - call void @finch.gen.hold(ptr %t234, %S.gen.Val %t235) - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 - %t238 = load i64, ptr %a167 - %t239 = load { ptr, i64, i64 }, ptr %t237 - %t240 = extractvalue { ptr, i64, i64 } %t239, 1 - %t241 = icmp uge i64 %t238, %t240 - br i1 %t241, label %range4236, label %inrange4237 -range4236: - call void @finch_panic_index(ptr @.str.2580, i64 1817, i64 %t238, i64 %t240) - unreachable -inrange4237: - %t242 = extractvalue { ptr, i64, i64 } %t239, 0 - %t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238 - %t244 = getelementptr inbounds %S.ast.Node, ptr %t243, i32 0, i32 5 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - call void @finch.gen.bindType(ptr %t236, %S.ast.Type %t245, %S.ast.Type %t247, { ptr, i64, i64 } %t249, ptr %a137) - call void @finch.drop.S_gen_Val(ptr %a182) - br label %for.step4223 -for.step4223: - %t250 = load i64, ptr %a167 - %t251 = add i64 %t250, 1 - store i64 %t251, ptr %a167 - br label %for.cond4221 -for.end4224: - %t252 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i32 0, i32 1 - %t254 = load i64, ptr %t253 - store i64 0, ptr %a255 - br label %for.cond4238 -for.cond4238: - %t256 = load i64, ptr %a255 - %t257 = icmp slt i64 %t256, %t254 - br i1 %t257, label %for.body4239, label %for.end4241 -for.body4239: - %t258 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t259 = load i64, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %t258 - %t261 = extractvalue { ptr, i64, i64 } %t260, 1 - %t262 = icmp uge i64 %t259, %t261 - br i1 %t262, label %range4242, label %inrange4243 -range4242: - call void @finch_panic_index(ptr @.str.2581, i64 1820, i64 %t259, i64 %t261) - unreachable -inrange4243: - %t263 = extractvalue { ptr, i64, i64 } %t260, 0 - %t264 = getelementptr inbounds i1, ptr %t263, i64 %t259 - %t265 = load i1, ptr %t264 - %t266 = xor i1 %t265, true - br i1 %t266, label %then4244, label %endif4246 -then4244: - %t267 = load ptr, ptr %a1 - %t268 = load %S.ast.Node, ptr %a2 - %t269 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t270 = load i64, ptr %a255 - %t271 = load { ptr, i64, i64 }, ptr %t269 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp uge i64 %t270, %t272 - br i1 %t273, label %range4247, label %inrange4248 -range4247: - call void @finch_panic_index(ptr @.str.2583, i64 1821, i64 %t270, i64 %t272) - unreachable -inrange4248: - %t274 = extractvalue { ptr, i64, i64 } %t271, 0 - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i64 %t270 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } { ptr @.str.2582, i64 16, i64 0 }, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.2584, i64 24, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t285, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.2585, i64 10, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - call void @finch.gen.fail(ptr %t267, %S.ast.Node %t268, { ptr, i64, i64 } %t297) - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_drop(ptr %a298) - br label %endif4246 -endif4246: - br label %for.step4240 -for.step4240: - %t299 = load i64, ptr %a255 - %t300 = add i64 %t299, 1 - store i64 %t300, ptr %a255 - br label %for.cond4238 -for.end4241: - %t301 = load ptr, ptr %a1 - %t302 = load i64, ptr %a3 - %t303 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t304 = load { ptr, i64, i64 }, ptr %t303 - %t305 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2586, i64 4, i64 0 }) - %t306 = load %S.ast.Node, ptr %a2 - %t307 = call i64 @finch.gen.instFn(ptr %t301, i64 %t302, { ptr, i64, i64 } %t304, %S.ast.Type %t305, %S.ast.Node %t306) - store %S.ast.Type %t305, ptr %a308 - call void @finch.drop.S_ast_Type(ptr %a308) - store i64 %t307, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = icmp eq ptr %t310, null - br i1 %t311, label %panic4249, label %ok4250 -panic4249: - call void @finch_panic(ptr @.str.2587, i64 1825, ptr @.str.2588) - unreachable -ok4250: - %t312 = getelementptr inbounds %S.gen.Gen, ptr %t310, i32 0, i32 15 - %t313 = load i64, ptr %a309 - %t314 = load { ptr, i64, i64 }, ptr %t312 - %t315 = extractvalue { ptr, i64, i64 } %t314, 1 - %t316 = icmp uge i64 %t313, %t315 - br i1 %t316, label %range4251, label %inrange4252 -range4251: - call void @finch_panic_index(ptr @.str.2589, i64 1825, i64 %t313, i64 %t315) - unreachable -inrange4252: - %t317 = extractvalue { ptr, i64, i64 } %t314, 0 - %t318 = getelementptr inbounds %S.gen.FnSig, ptr %t317, i64 %t313 - %t319 = load %S.gen.FnSig, ptr %t318 - store %S.gen.FnSig %t319, ptr %a320 - call void @finch.copy.S_gen_FnSig(ptr %a321, ptr %a320) - %t322 = load %S.gen.FnSig, ptr %a321 - store %S.gen.FnSig %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load %S.ast.Node, ptr %a2 - %t326 = load %S.gen.FnSig, ptr %a323 - call void @finch.gen.noteCall(ptr %t324, %S.ast.Node %t325, %S.gen.FnSig %t326) - store { ptr, i64, i64 } zeroinitializer, ptr %a327 - %t328 = load i64, ptr %a47 - store i64 0, ptr %a329 - br label %for.cond4253 -for.cond4253: - %t330 = load i64, ptr %a329 - %t331 = icmp slt i64 %t330, %t328 - br i1 %t331, label %for.body4254, label %for.end4256 -for.body4254: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a329 - %t334 = load { ptr, i64, i64 }, ptr %a159 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range4257, label %inrange4258 -range4257: - call void @finch_panic_index(ptr @.str.2590, i64 1829, i64 %t333, i64 %t335) - unreachable -inrange4258: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Val, ptr %t337, i64 %t333 - %t339 = load %S.gen.Val, ptr %t338 - %t340 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t341 = load i64, ptr %a329 - %t342 = load { ptr, i64, i64 }, ptr %t340 - %t343 = extractvalue { ptr, i64, i64 } %t342, 1 - %t344 = icmp uge i64 %t341, %t343 - br i1 %t344, label %range4259, label %inrange4260 -range4259: - call void @finch_panic_index(ptr @.str.2591, i64 1829, i64 %t341, i64 %t343) - unreachable -inrange4260: - %t345 = extractvalue { ptr, i64, i64 } %t342, 0 - %t346 = getelementptr inbounds %S.ast.Type, ptr %t345, i64 %t341 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t349 = load i64, ptr %a4 - %t350 = load i64, ptr %a329 - %t351 = add i64 %t349, %t350 - %t352 = load { ptr, i64, i64 }, ptr %t348 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range4261, label %inrange4262 -range4261: - call void @finch_panic_index(ptr @.str.2592, i64 1829, i64 %t351, i64 %t353) - unreachable -inrange4262: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds %S.ast.Node, ptr %t355, i64 %t351 - %t357 = load %S.ast.Node, ptr %t356 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 14 - %t359 = load i64, ptr %a329 - %t360 = load { ptr, i64, i64 }, ptr %t358 - %t361 = extractvalue { ptr, i64, i64 } %t360, 1 - %t362 = icmp uge i64 %t359, %t361 - br i1 %t362, label %range4263, label %inrange4264 -range4263: - call void @finch_panic_index(ptr @.str.2594, i64 1829, i64 %t359, i64 %t361) - unreachable -inrange4264: - %t363 = extractvalue { ptr, i64, i64 } %t360, 0 - %t364 = getelementptr inbounds { ptr, i64, i64 }, ptr %t363, i64 %t359 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.2593, i64 10, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.2595, i64 1, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call %S.gen.Val @finch.gen.coerce(ptr %t332, %S.gen.Val %t339, %S.ast.Type %t347, %S.ast.Node %t357, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - store %S.gen.Val %t375, ptr %a377 - %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 - %t379 = load ptr, ptr %a1 - %t380 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t381 = load i64, ptr %a329 - %t382 = load { ptr, i64, i64 }, ptr %t380 - %t383 = extractvalue { ptr, i64, i64 } %t382, 1 - %t384 = icmp uge i64 %t381, %t383 - br i1 %t384, label %range4265, label %inrange4266 -range4265: - call void @finch_panic_index(ptr @.str.2596, i64 1830, i64 %t381, i64 %t383) - unreachable -inrange4266: - %t385 = extractvalue { ptr, i64, i64 } %t382, 0 - %t386 = getelementptr inbounds %S.ast.Type, ptr %t385, i64 %t381 - %t387 = load %S.ast.Type, ptr %t386 - %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t379, %S.ast.Type %t387) - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.2597, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = getelementptr inbounds %S.gen.Val, ptr %a377, i32 0, i32 0 - %t395 = load { ptr, i64, i64 }, ptr %t394 - store { ptr, i64, i64 } %t393, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t393, ptr %a399 - call void @finch_str_drop(ptr %a399) - %t400 = load { ptr, i64, i64 }, ptr %a396 - %t401 = load i64, ptr %t378 - %t402 = add i64 %t401, 1 - call void @finch_arr_reserve(ptr %a327, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t403 = load ptr, ptr %a327 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 - store { ptr, i64, i64 } %t400, ptr %t404 - store i64 %t402, ptr %t378 - call void @finch.drop.S_gen_Val(ptr %a377) - br label %for.step4255 -for.step4255: - %t405 = load i64, ptr %a329 - %t406 = add i64 %t405, 1 - store i64 %t406, ptr %a329 - br label %for.cond4253 -for.end4256: - %t407 = load ptr, ptr %a1 - %t408 = load %S.gen.FnSig, ptr %a323 - %t409 = load %S.ast.Node, ptr %a2 - %t410 = load { ptr, i64, i64 }, ptr %a327 - %t411 = load { ptr, i64, i64 }, ptr %a5 - %t412 = call %S.gen.Val @finch.gen.emitCall(ptr %t407, %S.gen.FnSig %t408, %S.ast.Node %t409, { ptr, i64, i64 } %t410, { ptr, i64, i64 } %t411) - store %S.gen.Val %t412, ptr %a413 - store i64 0, ptr %a414 - br label %each.cond4267 -each.cond4267: - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t416 = load i64, ptr %t415 - %t417 = load i64, ptr %a414 - %t418 = icmp slt i64 %t417, %t416 - br i1 %t418, label %each.body4268, label %each.end4270 -each.body4268: - %t419 = load ptr, ptr %a159 - %t420 = getelementptr inbounds %S.gen.Val, ptr %t419, i64 %t417 - %t421 = load %S.gen.Val, ptr %t420 - store %S.gen.Val %t421, ptr %a422 - %t423 = load ptr, ptr %a1 - %t424 = load %S.gen.Val, ptr %a422 - call void @finch.gen.release(ptr %t423, %S.gen.Val %t424) - br label %each.step4269 -each.step4269: - %t425 = load i64, ptr %a414 - %t426 = add i64 %t425, 1 - store i64 %t426, ptr %a414 - br label %each.cond4267 -each.end4270: - %t427 = load ptr, ptr %a1 - %t428 = load i64, ptr %a165 - call void @finch.gen.heldEnd(ptr %t427, i64 %t428) - %t429 = load %S.gen.Val, ptr %a413 - call void @finch.drop.arr_str(ptr %a327) - call void @finch.drop.S_gen_FnSig(ptr %a323) - call void @finch.drop.arr_S_gen_Val(ptr %a159) - call void @finch.drop.S_gen_Binds(ptr %a137) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t429 -} - -define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { -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.cond4282 -n.cond4282: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4283, label %n.end4284 -n.body4283: - %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.cond4282 -n.end4284: - 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 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4274, label %ok4275 -panic4274: - call void @finch_panic(ptr @.str.2598, i64 1843, ptr @.str.2599) - unreachable -ok4275: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 26 - %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 %panic4276, label %ok4277 -panic4276: - call void @finch_panic(ptr @.str.2600, i64 1843, ptr @.str.2601) - unreachable -ok4277: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 16 - %t10 = load i64, ptr %a2 - %t11 = load { ptr, i64, i64 }, ptr %t9 - %t12 = extractvalue { ptr, i64, i64 } %t11, 1 - %t13 = icmp uge i64 %t10, %t12 - br i1 %t13, label %range4278, label %inrange4279 -range4278: - call void @finch_panic_index(ptr @.str.2602, i64 1843, i64 %t10, i64 %t12) - unreachable -inrange4279: - %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.missing4280, label %map.found4281 -map.missing4280: - 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.2603, i64 1843, ptr %a21) - unreachable -map.found4281: - %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 %panic4285, label %ok4286 -panic4285: - call void @finch_panic(ptr @.str.2604, i64 1844, ptr @.str.2605) - unreachable -ok4286: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 16 - %t35 = load i64, ptr %a2 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4287, label %inrange4288 -range4287: - call void @finch_panic_index(ptr @.str.2606, i64 1844, i64 %t35, i64 %t37) - unreachable -inrange4288: - %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.cond4289 -each.cond4289: - %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.body4290, label %each.end4292 -each.body4290: - %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 %then4293, label %endif4295 -then4293: - br label %each.step4291 -endif4295: - %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.2607, 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 %then4296, label %endif4298 -then4296: - %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 %endif4298 -endif4298: - %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 %then4299, label %endif4301 -then4299: - %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.2608, i64 1, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.2609, i64 6, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load i64, ptr %t78 - %t96 = add i64 %t95, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t96, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t97 = load ptr, ptr %a43 - %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i64 %t95 - store { ptr, i64, i64 } %t94, ptr %t98 - store i64 %t96, ptr %t78 - br label %endif4301 -endif4301: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic4302, label %ok4303 -panic4302: - call void @finch_panic(ptr @.str.2610, i64 1858, ptr @.str.2611) - unreachable -ok4303: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 16 - %t102 = load i64, ptr %a2 - %t103 = load { ptr, i64, i64 }, ptr %t101 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 %t102, %t104 - br i1 %t105, label %range4304, label %inrange4305 -range4304: - call void @finch_panic_index(ptr @.str.2612, i64 1858, i64 %t102, i64 %t104) - unreachable -inrange4305: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.gen.StructDef, ptr %t106, i64 %t102 - %t108 = getelementptr inbounds %S.gen.StructDef, ptr %t107, i32 0, i32 11 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t108, i32 0, i32 1 - %t110 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_copy(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = load i64, ptr %t109 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t108, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t108 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115 - store { ptr, i64, i64 } %t114, ptr %t118 - store i64 %t116, ptr %t109 - %t119 = load ptr, ptr %a1 - %t120 = icmp eq ptr %t119, null - br i1 %t120, label %panic4306, label %ok4307 -panic4306: - call void @finch_panic(ptr @.str.2613, i64 1859, ptr @.str.2614) - unreachable -ok4307: - %t121 = getelementptr inbounds %S.gen.Gen, ptr %t119, i32 0, i32 16 - %t122 = load i64, ptr %a2 - %t123 = load { ptr, i64, i64 }, ptr %t121 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 %t122, %t124 - br i1 %t125, label %range4308, label %inrange4309 -range4308: - call void @finch_panic_index(ptr @.str.2615, i64 1859, i64 %t122, i64 %t124) - unreachable -inrange4309: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %t126, i64 %t122 - %t128 = getelementptr inbounds %S.gen.StructDef, ptr %t127, i32 0, i32 12 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load %S.ast.Type, ptr %a60 - store %S.ast.Type %t130, ptr %a131 - call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) - %t133 = load %S.ast.Type, ptr %a132 - %t134 = load i64, ptr %t129 - %t135 = add i64 %t134, 1 - call void @finch_arr_reserve(ptr %t128, i64 %t135, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t136 = load ptr, ptr %t128 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 %t134 - store %S.ast.Type %t133, ptr %t137 - store i64 %t135, ptr %t129 - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic4310, label %ok4311 -panic4310: - call void @finch_panic(ptr @.str.2616, i64 1860, ptr @.str.2617) - unreachable -ok4311: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load i64, ptr %a2 - %t142 = load { ptr, i64, i64 }, ptr %t140 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 %t141, %t143 - br i1 %t144, label %range4312, label %inrange4313 -range4312: - call void @finch_panic_index(ptr @.str.2618, i64 1860, i64 %t141, i64 %t143) - unreachable -inrange4313: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.gen.StructDef, ptr %t145, i64 %t141 - %t147 = getelementptr inbounds %S.gen.StructDef, ptr %t146, i32 0, i32 3 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i32 0, i32 1 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = load i64, ptr %t148 - %t152 = add i64 %t151, 1 - call void @finch_arr_reserve(ptr %t147, i64 %t152, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t153 = load ptr, ptr %t147 - %t154 = getelementptr inbounds i64, ptr %t153, i64 %t151 - store i64 %t150, ptr %t154 - store i64 %t152, ptr %t148 - %t155 = load ptr, ptr %a1 - %t156 = icmp eq ptr %t155, null - br i1 %t156, label %panic4314, label %ok4315 -panic4314: - call void @finch_panic(ptr @.str.2619, i64 1861, ptr @.str.2620) - unreachable -ok4315: - %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 16 - %t158 = load i64, ptr %a2 - %t159 = load { ptr, i64, i64 }, ptr %t157 - %t160 = extractvalue { ptr, i64, i64 } %t159, 1 - %t161 = icmp uge i64 %t158, %t160 - br i1 %t161, label %range4316, label %inrange4317 -range4316: - call void @finch_panic_index(ptr @.str.2621, i64 1861, i64 %t158, i64 %t160) - unreachable -inrange4317: - %t162 = extractvalue { ptr, i64, i64 } %t159, 0 - %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t158 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %t163, i32 0, i32 4 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 - %t166 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t167 = load i64, ptr %t166 - %t168 = load i64, ptr %t165 - %t169 = add i64 %t168, 1 - call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t170 = load ptr, ptr %t164 - %t171 = getelementptr inbounds i64, ptr %t170, i64 %t168 - store i64 %t167, ptr %t171 - store i64 %t169, ptr %t165 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a60 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = load i64, ptr %t172 - %t177 = add i64 %t176, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t178 = load ptr, ptr %a43 - %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176 - store { ptr, i64, i64 } %t175, ptr %t179 - store i64 %t177, ptr %t172 - %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t181 = load i64, ptr %t180 - %t182 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 - %t183 = load i64, ptr %t182 - %t184 = add i64 %t181, %t183 - store i64 %t184, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a60) - br label %each.step4291 -each.step4291: - %t185 = load i64, ptr %a45 - %t186 = add i64 %t185, 1 - store i64 %t186, ptr %a45 - br label %each.cond4289 -each.end4292: - %t187 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t188 = load i64, ptr %t187 - %t189 = load i64, ptr %a42 - %t190 = icmp sgt i64 %t188, %t189 - br i1 %t190, label %then4318, label %endif4320 -then4318: - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t192 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t193 = load i64, ptr %t192 - %t194 = load i64, ptr %a42 - %t195 = sub i64 %t193, %t194 - call void @finch_str_from_int(ptr %a196, i64 %t195) - %t197 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2622, i64 1, i64 0 }, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t197, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.2623, i64 6, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = load i64, ptr %t191 - %t209 = add i64 %t208, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t209, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t210 = load ptr, ptr %a43 - %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i64 %t208 - store { ptr, i64, i64 } %t207, ptr %t211 - store i64 %t209, ptr %t191 - br label %endif4320 -endif4320: - %t212 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t213 = load { ptr, i64, i64 }, ptr %t212 - %t214 = load ptr, ptr %a1 - %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic4321, label %ok4322 -panic4321: - call void @finch_panic(ptr @.str.2624, i64 1868, ptr @.str.2625) - unreachable -ok4322: - %t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 16 - %t217 = load i64, ptr %a2 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range4323, label %inrange4324 -range4323: - call void @finch_panic_index(ptr @.str.2626, i64 1868, i64 %t217, i64 %t219) - unreachable -inrange4324: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.gen.StructDef, ptr %t221, i64 %t217 - %t223 = getelementptr inbounds %S.gen.StructDef, ptr %t222, i32 0, i32 8 - store { ptr, i64, i64 } %t213, ptr %a224 - call void @finch_str_copy(ptr %a225, ptr %a224) - %t226 = load { ptr, i64, i64 }, ptr %a225 - %t227 = load { ptr, i64, i64 }, ptr %t223 - store { ptr, i64, i64 } %t226, ptr %t223 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5 - %t230 = load i1, ptr %t229 - br label %logic.from4325 -logic.from4325: - br i1 %t230, label %logic.rhs4326, label %logic.end4327 -logic.rhs4326: - %t231 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i32 0, i32 1 - %t233 = load i64, ptr %t232 - %t234 = icmp eq i64 %t233, 0 - br label %logic.rend4328 -logic.rend4328: - br label %logic.end4327 -logic.end4327: - %t235 = phi i1 [ false, %logic.from4325 ], [ %t234, %logic.rend4328 ] - br i1 %t235, label %then4329, label %endif4331 -then4329: - %t236 = load ptr, ptr %a1 - %t237 = icmp eq ptr %t236, null - br i1 %t237, label %panic4332, label %ok4333 -panic4332: - call void @finch_panic(ptr @.str.2628, i64 1870, ptr @.str.2629) - unreachable -ok4333: - %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 16 - %t239 = load i64, ptr %a2 - %t240 = load { ptr, i64, i64 }, ptr %t238 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 %t239, %t241 - br i1 %t242, label %range4334, label %inrange4335 -range4334: - call void @finch_panic_index(ptr @.str.2630, i64 1870, i64 %t239, i64 %t241) - unreachable -inrange4335: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.gen.StructDef, ptr %t243, i64 %t239 - %t245 = getelementptr inbounds %S.gen.StructDef, ptr %t244, i32 0, i32 8 - %t246 = load { ptr, i64, i64 }, ptr %t245 - store { ptr, i64, i64 } { ptr @.str.2627, i64 49, i64 0 }, ptr %t245 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif4331 -endif4331: - %t248 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t249 = load i64, ptr %t248 - %t250 = load ptr, ptr %a1 - %t251 = icmp eq ptr %t250, null - br i1 %t251, label %panic4336, label %ok4337 -panic4336: - call void @finch_panic(ptr @.str.2631, i64 1872, ptr @.str.2632) - unreachable -ok4337: - %t252 = getelementptr inbounds %S.gen.Gen, ptr %t250, i32 0, i32 16 - %t253 = load i64, ptr %a2 - %t254 = load { ptr, i64, i64 }, ptr %t252 - %t255 = extractvalue { ptr, i64, i64 } %t254, 1 - %t256 = icmp uge i64 %t253, %t255 - br i1 %t256, label %range4338, label %inrange4339 -range4338: - call void @finch_panic_index(ptr @.str.2633, i64 1872, i64 %t253, i64 %t255) - unreachable -inrange4339: - %t257 = extractvalue { ptr, i64, i64 } %t254, 0 - %t258 = getelementptr inbounds %S.gen.StructDef, ptr %t257, i64 %t253 - %t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i32 0, i32 9 - store i64 %t249, ptr %t259 - %t260 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 - %t261 = load i64, ptr %t260 - %t262 = load ptr, ptr %a1 - %t263 = icmp eq ptr %t262, null - br i1 %t263, label %panic4340, label %ok4341 -panic4340: - call void @finch_panic(ptr @.str.2634, i64 1873, ptr @.str.2635) - unreachable -ok4341: - %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 16 - %t265 = load i64, ptr %a2 - %t266 = load { ptr, i64, i64 }, ptr %t264 - %t267 = extractvalue { ptr, i64, i64 } %t266, 1 - %t268 = icmp uge i64 %t265, %t267 - br i1 %t268, label %range4342, label %inrange4343 -range4342: - call void @finch_panic_index(ptr @.str.2636, i64 1873, i64 %t265, i64 %t267) - unreachable -inrange4343: - %t269 = extractvalue { ptr, i64, i64 } %t266, 0 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i64 %t265 - %t271 = getelementptr inbounds %S.gen.StructDef, ptr %t270, i32 0, i32 10 - store i64 %t261, ptr %t271 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic4344, label %ok4345 -panic4344: - call void @finch_panic(ptr @.str.2637, i64 1874, ptr @.str.2638) - unreachable -ok4345: - %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 16 - %t275 = load i64, ptr %a2 - %t276 = load { ptr, i64, i64 }, ptr %t274 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range4346, label %inrange4347 -range4346: - call void @finch_panic_index(ptr @.str.2639, i64 1874, i64 %t275, i64 %t277) - unreachable -inrange4347: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.gen.StructDef, ptr %t279, i64 %t275 - %t281 = getelementptr inbounds %S.gen.StructDef, ptr %t280, i32 0, i32 15 - store i64 2, ptr %t281 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic4348, label %ok4349 -panic4348: - call void @finch_panic(ptr @.str.2640, i64 1875, ptr @.str.2641) - unreachable -ok4349: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 2 - %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i32 0, i32 1 - %t286 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } { ptr @.str.2642, i64 5, i64 0 }, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2643, i64 10, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2644, i64 2, i64 0 }, ptr %a298 - call void @finch_str_join(ptr %a299, ptr %a43, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t296, ptr %a302 - store { ptr, i64, i64 } %t300, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t296, ptr %a304 - call void @finch_str_drop(ptr %a304) - store { ptr, i64, i64 } %t300, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a301 - store { ptr, i64, i64 } %t306, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.2645, i64 2, i64 0 }, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - store { ptr, i64, i64 } %t306, ptr %a310 - call void @finch_str_drop(ptr %a310) - %t311 = load { ptr, i64, i64 }, ptr %a307 - %t312 = load i64, ptr %t285 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %t284, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %t284 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t285 - call void @finch.drop.arr_str(ptr %a43) - call void @finch.drop.S_cimport_CStruct(ptr %a31) - ret void -} - -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 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4350, label %ok4351 -panic4350: - call void @finch_panic(ptr @.str.2646, i64 1879, ptr @.str.2647) - unreachable -ok4351: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load i64, ptr %a2 - %t7 = load { ptr, i64, i64 }, ptr %t5 - %t8 = extractvalue { ptr, i64, i64 } %t7, 1 - %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range4352, label %inrange4353 -range4352: - call void @finch_panic_index(ptr @.str.2648, i64 1879, i64 %t6, i64 %t8) - unreachable -inrange4353: - %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 %then4354, label %endif4356 -then4354: - ret void -endif4356: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic4357, label %ok4358 -panic4357: - call void @finch_panic(ptr @.str.2649, i64 1882, ptr @.str.2650) - unreachable -ok4358: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 16 - %t18 = load i64, ptr %a2 - %t19 = load { ptr, i64, i64 }, ptr %t17 - %t20 = extractvalue { ptr, i64, i64 } %t19, 1 - %t21 = icmp uge i64 %t18, %t20 - br i1 %t21, label %range4359, label %inrange4360 -range4359: - call void @finch_panic_index(ptr @.str.2651, i64 1882, i64 %t18, i64 %t20) - unreachable -inrange4360: - %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 %then4361, label %endif4363 -then4361: - %t26 = load ptr, ptr %a1 - %t27 = load i64, ptr %a2 - call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) - ret void -endif4363: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4364, label %ok4365 -panic4364: - call void @finch_panic(ptr @.str.2652, i64 1886, ptr @.str.2653) - unreachable -ok4365: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a2 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range4366, label %inrange4367 -range4366: - call void @finch_panic_index(ptr @.str.2654, i64 1886, i64 %t31, i64 %t33) - unreachable -inrange4367: - %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 %then4368, label %endif4370 -then4368: - %t41 = load ptr, ptr %a1 - %t42 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) - ret void -endif4370: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic4371, label %ok4372 -panic4371: - call void @finch_panic(ptr @.str.2655, i64 1891, ptr @.str.2656) - unreachable -ok4372: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 18 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch.copy.arr_str(ptr %a48, ptr %a47) - %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 %panic4373, label %ok4374 -panic4373: - call void @finch_panic(ptr @.str.2657, i64 1892, ptr @.str.2658) - unreachable -ok4374: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 19 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %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 %panic4375, label %ok4376 -panic4375: - call void @finch_panic(ptr @.str.2659, i64 1893, ptr @.str.2660) - unreachable -ok4376: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 20 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %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 %panic4377, label %ok4378 -panic4377: - call void @finch_panic(ptr @.str.2661, i64 1894, ptr @.str.2662) - unreachable -ok4378: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 16 - %t70 = load i64, ptr %a2 - %t71 = load { ptr, i64, i64 }, ptr %t69 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 %t70, %t72 - br i1 %t73, label %range4379, label %inrange4380 -range4379: - call void @finch_panic_index(ptr @.str.2663, i64 1894, i64 %t70, i64 %t72) - unreachable -inrange4380: - %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 %panic4381, label %ok4382 -panic4381: - call void @finch_panic(ptr @.str.2664, i64 1894, ptr @.str.2665) - unreachable -ok4382: - %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 18 - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch.copy.arr_str(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t83, ptr %t80 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch.drop.arr_str(ptr %a85) - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4383, label %ok4384 -panic4383: - call void @finch_panic(ptr @.str.2666, i64 1895, ptr @.str.2667) - unreachable -ok4384: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 16 - %t89 = load i64, ptr %a2 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range4385, label %inrange4386 -range4385: - call void @finch_panic_index(ptr @.str.2668, i64 1895, i64 %t89, i64 %t91) - unreachable -inrange4386: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.gen.StructDef, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.gen.StructDef, ptr %t94, i32 0, i32 7 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = load ptr, ptr %a1 - %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic4387, label %ok4388 -panic4387: - call void @finch_panic(ptr @.str.2669, i64 1895, ptr @.str.2670) - unreachable -ok4388: - %t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 19 - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch.copy.arr_S_ast_Type(ptr %a101, ptr %a100) - %t102 = load { ptr, i64, i64 }, ptr %a101 - %t103 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t102, ptr %t99 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch.drop.arr_S_ast_Type(ptr %a104) - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4389, label %ok4390 -panic4389: - call void @finch_panic(ptr @.str.2672, i64 1896, ptr @.str.2673) - unreachable -ok4390: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 16 - %t108 = load i64, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %t107 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 %t108, %t110 - br i1 %t111, label %range4391, label %inrange4392 -range4391: - call void @finch_panic_index(ptr @.str.2674, i64 1896, i64 %t108, i64 %t110) - unreachable -inrange4392: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds %S.gen.StructDef, ptr %t112, i64 %t108 - %t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.2671, i64 17, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.2675, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load ptr, ptr %a1 - %t126 = icmp eq ptr %t125, null - br i1 %t126, label %panic4393, label %ok4394 -panic4393: - call void @finch_panic(ptr @.str.2676, i64 1896, ptr @.str.2677) - unreachable -ok4394: - %t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 20 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t124, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load ptr, ptr %a1 - %t131 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t130, i64 %t131) - %t132 = load { ptr, i64, i64 }, ptr %a50 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic4395, label %ok4396 -panic4395: - call void @finch_panic(ptr @.str.2678, i64 1898, ptr @.str.2679) - unreachable -ok4396: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 18 - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch.copy.arr_str(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t138, ptr %t135 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch.drop.arr_str(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a58 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4397, label %ok4398 -panic4397: - call void @finch_panic(ptr @.str.2680, i64 1899, ptr @.str.2681) - unreachable -ok4398: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 19 - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch.copy.arr_S_ast_Type(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t147, ptr %t144 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_S_ast_Type(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a66 - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic4399, label %ok4400 -panic4399: - call void @finch_panic(ptr @.str.2682, i64 1900, ptr @.str.2683) - unreachable -ok4400: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 20 - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t156, ptr %t153 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_S_ast_Type(ptr %a58) - call void @finch.drop.arr_str(ptr %a50) - ret void -} - -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 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i1, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a142 = alloca %S.ast.Node, align 16 - %a148 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca %S.ast.Type, align 16 - %a222 = alloca %S.ast.Type, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4401, label %ok4402 -panic4401: - call void @finch_panic(ptr @.str.2684, i64 1904, ptr @.str.2685) - unreachable -ok4402: - %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 %panic4403, label %ok4404 -panic4403: - call void @finch_panic(ptr @.str.2686, i64 1904, ptr @.str.2687) - unreachable -ok4404: - %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 %range4405, label %inrange4406 -range4405: - call void @finch_panic_index(ptr @.str.2688, i64 1904, i64 %t9, i64 %t11) - unreachable -inrange4406: - %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 %range4407, label %inrange4408 -range4407: - call void @finch_panic_index(ptr @.str.2689, i64 1904, i64 %t16, i64 %t18) - unreachable -inrange4408: - %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 %panic4409, label %ok4410 -panic4409: - call void @finch_panic(ptr @.str.2690, i64 1904, ptr @.str.2691) - unreachable -ok4410: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 16 - %t26 = load i64, ptr %a2 - %t27 = load { ptr, i64, i64 }, ptr %t25 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range4411, label %inrange4412 -range4411: - call void @finch_panic_index(ptr @.str.2692, i64 1904, i64 %t26, i64 %t28) - unreachable -inrange4412: - %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 %range4413, label %inrange4414 -range4413: - call void @finch_panic_index(ptr @.str.2693, i64 1904, i64 %t33, i64 %t35) - unreachable -inrange4414: - %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 %panic4415, label %ok4416 -panic4415: - call void @finch_panic(ptr @.str.2694, i64 1905, ptr @.str.2695) - unreachable -ok4416: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 16 - %t47 = load i64, ptr %a2 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range4417, label %inrange4418 -range4417: - call void @finch_panic_index(ptr @.str.2696, i64 1905, i64 %t47, i64 %t49) - unreachable -inrange4418: - %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 %then4419, label %endif4421 -then4419: - %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.2697, 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.2698, i64 26, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } %t68, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t68, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.2699, i64 7, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t80, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t80, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2700, i64 15, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - br label %endif4421 -endif4421: - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4422, label %ok4423 -panic4422: - call void @finch_panic(ptr @.str.2701, i64 1908, ptr @.str.2702) - unreachable -ok4423: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 16 - %t97 = load i64, ptr %a2 - %t98 = load { ptr, i64, i64 }, ptr %t96 - %t99 = extractvalue { ptr, i64, i64 } %t98, 1 - %t100 = icmp uge i64 %t97, %t99 - br i1 %t100, label %range4424, label %inrange4425 -range4424: - call void @finch_panic_index(ptr @.str.2703, i64 1908, i64 %t97, i64 %t99) - unreachable -inrange4425: - %t101 = extractvalue { ptr, i64, i64 } %t98, 0 - %t102 = getelementptr inbounds %S.gen.StructDef, ptr %t101, i64 %t97 - %t103 = getelementptr inbounds %S.gen.StructDef, ptr %t102, i32 0, i32 15 - store i64 1, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic4426, label %ok4427 -panic4426: - call void @finch_panic(ptr @.str.2704, i64 1909, ptr @.str.2705) - unreachable -ok4427: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 14 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_copy(ptr %a109, ptr %a108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic4428, label %ok4429 -panic4428: - call void @finch_panic(ptr @.str.2706, i64 1910, ptr @.str.2707) - unreachable -ok4429: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 16 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range4430, label %inrange4431 -range4430: - call void @finch_panic_index(ptr @.str.2708, i64 1910, i64 %t115, i64 %t117) - unreachable -inrange4431: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.StructDef, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %t120, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic4432, label %ok4433 -panic4432: - call void @finch_panic(ptr @.str.2709, i64 1910, ptr @.str.2710) - unreachable -ok4433: - %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 14 - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - %t129 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t128, ptr %t125 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i1 false, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9 - store i64 0, ptr %a134 - br label %each.cond4434 -each.cond4434: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = load i64, ptr %a134 - %t138 = icmp slt i64 %t137, %t136 - br i1 %t138, label %each.body4435, label %each.end4437 -each.body4435: - %t139 = load ptr, ptr %t133 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 %t137 - %t141 = load %S.ast.Node, ptr %t140 - store %S.ast.Node %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 5 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = load %S.ast.Node, ptr %a142 - %t147 = call %S.ast.Type @finch.gen.resolve(ptr %t143, %S.ast.Type %t145, %S.ast.Node %t146) - store %S.ast.Type %t147, ptr %a148 - %t149 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.2711, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp ne i32 %t153, 0 - br i1 %t154, label %then4438, label %endif4440 -then4438: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 3 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 2 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = call i64 @finch.gen.findStruct(ptr %t156, { ptr, i64, i64 } %t158, { ptr, i64, i64 } %t160) - call void @finch.gen.resolveStruct(ptr %t155, i64 %t161) - br label %endif4440 -endif4440: - %t162 = load ptr, ptr %a1 - %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic4441, label %ok4442 -panic4441: - call void @finch_panic(ptr @.str.2712, i64 1918, ptr @.str.2713) - unreachable -ok4442: - %t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 16 - %t165 = load i64, ptr %a2 - %t166 = load { ptr, i64, i64 }, ptr %t164 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range4443, label %inrange4444 -range4443: - call void @finch_panic_index(ptr @.str.2714, i64 1918, i64 %t165, i64 %t167) - unreachable -inrange4444: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds %S.gen.StructDef, ptr %t169, i64 %t165 - %t171 = getelementptr inbounds %S.gen.StructDef, ptr %t170, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4445, label %ok4446 -panic4445: - call void @finch_panic(ptr @.str.2715, i64 1918, ptr @.str.2716) - unreachable -ok4446: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 16 - %t176 = load i64, ptr %a2 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range4447, label %inrange4448 -range4447: - call void @finch_panic_index(ptr @.str.2717, i64 1918, i64 %t176, i64 %t178) - unreachable -inrange4448: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.gen.StructDef, ptr %t181, i32 0, i32 11 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = load i64, ptr %t172 - %t186 = add i64 %t185, 1 - call void @finch_arr_reserve(ptr %t171, i64 %t186, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t187 = load ptr, ptr %t171 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t185 - store i64 %t184, ptr %t188 - store i64 %t186, ptr %t172 - %t189 = load ptr, ptr %a1 - %t190 = icmp eq ptr %t189, null - br i1 %t190, label %panic4449, label %ok4450 -panic4449: - call void @finch_panic(ptr @.str.2718, i64 1919, ptr @.str.2719) - unreachable -ok4450: - %t191 = getelementptr inbounds %S.gen.Gen, ptr %t189, i32 0, i32 16 - %t192 = load i64, ptr %a2 - %t193 = load { ptr, i64, i64 }, ptr %t191 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range4451, label %inrange4452 -range4451: - call void @finch_panic_index(ptr @.str.2720, i64 1919, i64 %t192, i64 %t194) - unreachable -inrange4452: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.gen.StructDef, ptr %t196, i64 %t192 - %t198 = getelementptr inbounds %S.gen.StructDef, ptr %t197, i32 0, i32 11 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 1 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_copy(ptr %a203, ptr %a202) - %t204 = load { ptr, i64, i64 }, ptr %a203 - %t205 = load i64, ptr %t199 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t198, i64 %t206, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t198 - %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t207, i64 %t205 - store { ptr, i64, i64 } %t204, ptr %t208 - store i64 %t206, ptr %t199 - %t209 = load ptr, ptr %a1 - %t210 = icmp eq ptr %t209, null - br i1 %t210, label %panic4453, label %ok4454 -panic4453: - call void @finch_panic(ptr @.str.2721, i64 1920, ptr @.str.2722) - unreachable -ok4454: - %t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 16 - %t212 = load i64, ptr %a2 - %t213 = load { ptr, i64, i64 }, ptr %t211 - %t214 = extractvalue { ptr, i64, i64 } %t213, 1 - %t215 = icmp uge i64 %t212, %t214 - br i1 %t215, label %range4455, label %inrange4456 -range4455: - call void @finch_panic_index(ptr @.str.2723, i64 1920, i64 %t212, i64 %t214) - unreachable -inrange4456: - %t216 = extractvalue { ptr, i64, i64 } %t213, 0 - %t217 = getelementptr inbounds %S.gen.StructDef, ptr %t216, i64 %t212 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i32 0, i32 12 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %a148 - store %S.ast.Type %t220, ptr %a221 - call void @finch.copy.S_ast_Type(ptr %a222, ptr %a221) - %t223 = load %S.ast.Type, ptr %a222 - %t224 = load i64, ptr %t219 - %t225 = add i64 %t224, 1 - call void @finch_arr_reserve(ptr %t218, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t226 = load ptr, ptr %t218 - %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 - store %S.ast.Type %t223, ptr %t227 - store i64 %t225, ptr %t219 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a148 - %t230 = call i1 @finch.gen.owning(ptr %t228, %S.ast.Type %t229) - br i1 %t230, label %then4457, label %endif4459 -then4457: - store i1 true, ptr %a131 - br label %endif4459 -endif4459: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a148 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - %t235 = load i64, ptr %t231 - %t236 = add i64 %t235, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t236, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t237 = load ptr, ptr %a132 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t235 - store { ptr, i64, i64 } %t234, ptr %t238 - store i64 %t236, ptr %t231 - call void @finch.drop.S_ast_Type(ptr %a148) - br label %each.step4436 -each.step4436: - %t239 = load i64, ptr %a134 - %t240 = add i64 %t239, 1 - store i64 %t240, ptr %a134 - br label %each.cond4434 -each.end4437: - %t241 = load i1, ptr %a131 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic4460, label %ok4461 -panic4460: - call void @finch_panic(ptr @.str.2724, i64 1926, ptr @.str.2725) - unreachable -ok4461: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 16 - %t245 = load i64, ptr %a2 - %t246 = load { ptr, i64, i64 }, ptr %t244 - %t247 = extractvalue { ptr, i64, i64 } %t246, 1 - %t248 = icmp uge i64 %t245, %t247 - br i1 %t248, label %range4462, label %inrange4463 -range4462: - call void @finch_panic_index(ptr @.str.2726, i64 1926, i64 %t245, i64 %t247) - unreachable -inrange4463: - %t249 = extractvalue { ptr, i64, i64 } %t246, 0 - %t250 = getelementptr inbounds %S.gen.StructDef, ptr %t249, i64 %t245 - %t251 = getelementptr inbounds %S.gen.StructDef, ptr %t250, i32 0, i32 16 - store i1 %t241, ptr %t251 - %t252 = load { ptr, i64, i64 }, ptr %a111 - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic4464, label %ok4465 -panic4464: - call void @finch_panic(ptr @.str.2727, i64 1927, ptr @.str.2728) - unreachable -ok4465: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 14 - store { ptr, i64, i64 } %t252, ptr %a256 - call void @finch_str_copy(ptr %a257, ptr %a256) - %t258 = load { ptr, i64, i64 }, ptr %a257 - %t259 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t258, ptr %t255 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic4466, label %ok4467 -panic4466: - call void @finch_panic(ptr @.str.2729, i64 1928, ptr @.str.2730) - unreachable -ok4467: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 16 - %t264 = load i64, ptr %a2 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range4468, label %inrange4469 -range4468: - call void @finch_panic_index(ptr @.str.2731, i64 1928, i64 %t264, i64 %t266) - unreachable -inrange4469: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.gen.StructDef, ptr %t268, i64 %t264 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i32 0, i32 15 - store i64 2, ptr %t270 - %t271 = load ptr, ptr %a1 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic4470, label %ok4471 -panic4470: - call void @finch_panic(ptr @.str.2732, i64 1929, ptr @.str.2733) - unreachable -ok4471: - %t273 = getelementptr inbounds %S.gen.Gen, ptr %t271, i32 0, i32 2 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load ptr, ptr %a1 - %t276 = icmp eq ptr %t275, null - br i1 %t276, label %panic4472, label %ok4473 -panic4472: - call void @finch_panic(ptr @.str.2735, i64 1929, ptr @.str.2736) - unreachable -ok4473: - %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 16 - %t278 = load i64, ptr %a2 - %t279 = load { ptr, i64, i64 }, ptr %t277 - %t280 = extractvalue { ptr, i64, i64 } %t279, 1 - %t281 = icmp uge i64 %t278, %t280 - br i1 %t281, label %range4474, label %inrange4475 -range4474: - call void @finch_panic_index(ptr @.str.2737, i64 1929, i64 %t278, i64 %t280) - unreachable -inrange4475: - %t282 = extractvalue { ptr, i64, i64 } %t279, 0 - %t283 = getelementptr inbounds %S.gen.StructDef, ptr %t282, i64 %t278 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %t283, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t285) - store { ptr, i64, i64 } { ptr @.str.2734, i64 3, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2738, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load ptr, ptr %a1 - %t298 = icmp eq ptr %t297, null - br i1 %t298, label %panic4476, label %ok4477 -panic4476: - call void @finch_panic(ptr @.str.2739, i64 1929, ptr @.str.2740) - unreachable -ok4477: - %t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 16 - %t300 = load i64, ptr %a2 - %t301 = load { ptr, i64, i64 }, ptr %t299 - %t302 = extractvalue { ptr, i64, i64 } %t301, 1 - %t303 = icmp uge i64 %t300, %t302 - br i1 %t303, label %range4478, label %inrange4479 -range4478: - call void @finch_panic_index(ptr @.str.2741, i64 1929, i64 %t300, i64 %t302) - unreachable -inrange4479: - %t304 = extractvalue { ptr, i64, i64 } %t301, 0 - %t305 = getelementptr inbounds %S.gen.StructDef, ptr %t304, i64 %t300 - %t306 = getelementptr inbounds %S.gen.StructDef, ptr %t305, i32 0, i32 1 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t296, ptr %a310 - store { ptr, i64, i64 } %t308, ptr %a311 - call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) - store { ptr, i64, i64 } %t296, ptr %a312 - call void @finch_str_drop(ptr %a312) - store { ptr, i64, i64 } %t308, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.2742, i64 10, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2743, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a132, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t319, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t319, ptr %a327 - call void @finch_str_drop(ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.2744, i64 2, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load i64, ptr %t274 - %t336 = add i64 %t335, 1 - call void @finch_arr_reserve(ptr %t273, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t337 = load ptr, ptr %t273 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335 - store { ptr, i64, i64 } %t334, ptr %t338 - store i64 %t336, ptr %t274 - call void @finch.drop.arr_str(ptr %a132) - call void @finch_str_drop(ptr %a111) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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 %panic4480, label %ok4481 -panic4480: - call void @finch_panic(ptr @.str.2745, i64 1938, ptr @.str.2746) - unreachable -ok4481: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 33 - %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 %panic4482, label %ok4483 -panic4482: - call void @finch_panic(ptr @.str.2747, i64 1939, ptr @.str.2748) - unreachable -ok4483: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 33 - %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 - %a10 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - %t2 = load i64, ptr %a1 - %t3 = icmp slt i64 %t2, 0 - br i1 %t3, label %then4484, label %endif4486 -then4484: - ret { ptr, i64, i64 } { ptr @.str.2749, i64 4, i64 0 } -endif4486: - %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.2750, i64 1, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a9 - call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) - store { ptr, i64, i64 } %t6, ptr %a10 - call void @finch_str_drop(ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a7 - ret { ptr, i64, i64 } %t11 -} - -define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) { -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 %then4487, label %endif4489 -then4487: - %t5 = load i64, ptr %a1 - ret i64 %t5 -endif4489: - %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 %panic4490, label %ok4491 -panic4490: - call void @finch_panic(ptr @.str.2751, i64 1958, ptr @.str.2752) - unreachable -ok4491: - %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.2753, 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.from4492 -logic.from4492: - br i1 %t13, label %logic.end4494, label %logic.rhs4493 -logic.rhs4493: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2754, 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.rend4495 -logic.rend4495: - br label %logic.end4494 -logic.end4494: - %t19 = phi i1 [ true, %logic.from4492 ], [ %t18, %logic.rend4495 ] - br label %logic.from4496 -logic.from4496: - br i1 %t19, label %logic.end4498, label %logic.rhs4497 -logic.rhs4497: - %t20 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2755, 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.rend4499 -logic.rend4499: - br label %logic.end4498 -logic.end4498: - %t25 = phi i1 [ true, %logic.from4496 ], [ %t24, %logic.rend4499 ] - br label %logic.from4500 -logic.from4500: - br i1 %t25, label %logic.end4502, label %logic.rhs4501 -logic.rhs4501: - %t26 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2756, 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.rend4503 -logic.rend4503: - br label %logic.end4502 -logic.end4502: - %t31 = phi i1 [ true, %logic.from4500 ], [ %t30, %logic.rend4503 ] - br i1 %t31, label %then4504, label %endif4506 -then4504: - %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 - %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t33 -endif4506: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2757, 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.from4507 -logic.from4507: - br i1 %t38, label %logic.end4509, label %logic.rhs4508 -logic.rhs4508: - %t39 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2758, 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.rend4510 -logic.rend4510: - br label %logic.end4509 -logic.end4509: - %t44 = phi i1 [ true, %logic.from4507 ], [ %t43, %logic.rend4510 ] - br i1 %t44, label %then4511, label %endif4513 -then4511: - %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 - %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t46 -endif4513: - %t47 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.2759, 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.from4514 -logic.from4514: - br i1 %t51, label %logic.end4516, label %logic.rhs4515 -logic.rhs4515: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2760, 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.rend4517 -logic.rend4517: - br label %logic.end4516 -logic.end4516: - %t57 = phi i1 [ true, %logic.from4514 ], [ %t56, %logic.rend4517 ] - br label %logic.from4518 -logic.from4518: - br i1 %t57, label %logic.end4520, label %logic.rhs4519 -logic.rhs4519: - %t58 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2761, 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.rend4521 -logic.rend4521: - br label %logic.end4520 -logic.end4520: - %t63 = phi i1 [ true, %logic.from4518 ], [ %t62, %logic.rend4521 ] - br label %logic.from4522 -logic.from4522: - br i1 %t63, label %logic.end4524, label %logic.rhs4523 -logic.rhs4523: - %t64 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2762, 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.rend4525 -logic.rend4525: - br label %logic.end4524 -logic.end4524: - %t69 = phi i1 [ true, %logic.from4522 ], [ %t68, %logic.rend4525 ] - br i1 %t69, label %then4526, label %endif4528 -then4526: - %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 - %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t71 -endif4528: - %t72 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.2763, 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.from4529 -logic.from4529: - br i1 %t76, label %logic.end4531, label %logic.rhs4530 -logic.rhs4530: - %t77 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2764, 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.rend4532 -logic.rend4532: - br label %logic.end4531 -logic.end4531: - %t82 = phi i1 [ true, %logic.from4529 ], [ %t81, %logic.rend4532 ] - br i1 %t82, label %then4533, label %endif4535 -then4533: - %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 - %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t84 -endif4535: - %t85 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2765, 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 %then4536, label %endif4538 -then4536: - %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 - %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t91 -endif4538: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2766, 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 %then4539, label %endif4541 -then4539: - %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 %range4542, label %inrange4543 -range4542: - call void @finch_panic_index(ptr @.str.2767, i64 1980, i64 0, i64 %t100) - unreachable -inrange4543: - %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 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t115 -endif4541: - %t116 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2768, 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 %then4544, label %endif4546 -then4544: - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic4547, label %ok4548 -panic4547: - call void @finch_panic(ptr @.str.2769, i64 1984, ptr @.str.2770) - unreachable -ok4548: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 16 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %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 %range4549, label %inrange4550 -range4549: - call void @finch_panic_index(ptr @.str.2771, i64 1984, i64 %t129, i64 %t131) - unreachable -inrange4550: - %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 %then4551, label %endif4553 -then4551: - %t142 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 9 - %t143 = load i64, ptr %t142 - %t144 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t143, 0 - %t145 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 10 - %t146 = load i64, ptr %t145 - %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t147 -endif4553: - 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.cond4554 -each.cond4554: - %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.body4555, label %each.end4557 -each.body4555: - %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 %then4558, label %endif4560 -then4558: - %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 - %t176 = load i64, ptr %t175 - store i64 %t176, ptr %a149 - br label %endif4560 -endif4560: - br label %each.step4556 -each.step4556: - %t177 = load i64, ptr %a151 - %t178 = add i64 %t177, 1 - store i64 %t178, ptr %a151 - br label %each.cond4554 -each.end4557: - %t179 = load i64, ptr %a148 - %t180 = load i64, ptr %a149 - %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) - %t182 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t181, 0 - %t183 = load i64, ptr %a149 - %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t184 -endif4546: - %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 - %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t186 -} - -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 - 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 %then4561, label %endif4563 -then4561: - %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 -endif4563: - 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.cond4564 -each.cond4564: - %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.body4565, label %each.end4567 -each.body4565: - %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.step4566 -each.step4566: - %t40 = load i64, ptr %a13 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a13 - br label %each.cond4564 -each.end4567: - %t42 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t42 -} - -define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) { -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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.2772, 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.2773, i64 11, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a21, i64 %t20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t19, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.2774, i64 9, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a35, i64 %t34) - %t36 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t33, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t36, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.2775, i64 8, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - store { ptr, i64, i64 } %t50, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2776, i64 12, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = load i64, ptr %a6 - %t63 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t62) - store { ptr, i64, i64 } %t61, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.2777, i64 8, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.2778, i64 10, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2779, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t102) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - ret i64 %t103 -} - -define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2780, 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.2781, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a17, i64 %t16) - %t18 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2782, i64 12, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.2783, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret i64 %t41 -} - -define internal i64 @finch.gen.diType(ptr %p0, %S.ast.Type %p1) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a59 = alloca 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 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.EnumDef, align 16 - %a129 = alloca %S.gen.EnumDef, align 16 - %a131 = alloca %S.gen.EnumDef, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca i32, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca i64, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.gen.SizeAlign, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca %S.ast.Type, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.ast.Type, align 16 - %a414 = alloca %S.ast.Type, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca i64, align 16 - %a439 = alloca %S.ast.Type, align 16 - %a440 = alloca i64, align 16 - %a446 = alloca i64, align 16 - %a452 = alloca i64, align 16 - %a458 = alloca i64, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca %S.ast.Type, align 16 - %a547 = alloca i64, align 16 - %a550 = alloca i64, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca i64, align 16 - %a569 = alloca i64, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca %S.gen.StructDef, align 16 - %a677 = alloca %S.gen.StructDef, align 16 - %a679 = alloca %S.gen.StructDef, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca %S.gen.SizeAlign, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca i64, align 16 - %a705 = alloca %S.gen.SizeAlign, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a806 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca i32, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.2784, 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.from4568 -logic.from4568: - br i1 %t13, label %logic.end4570, label %logic.rhs4569 -logic.rhs4569: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2785, 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.rend4571 -logic.rend4571: - br label %logic.end4570 -logic.end4570: - %t19 = phi i1 [ true, %logic.from4568 ], [ %t18, %logic.rend4571 ] - br i1 %t19, label %then4572, label %endif4574 -then4572: - call void @finch_str_drop(ptr %a8) - ret i64 -1 -endif4574: - %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.2786, i64 2, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4575, label %ok4576 -panic4575: - call void @finch_panic(ptr @.str.2787, i64 2033, ptr @.str.2788) - unreachable -ok4576: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 - %t31 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t31, ptr %a32 - %t33 = call i64 @finch_map_find(ptr %t30, ptr %a32, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t34 = icmp sge i64 %t33, 0 - br i1 %t34, label %then4577, label %endif4579 -then4577: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4580, label %ok4581 -panic4580: - call void @finch_panic(ptr @.str.2789, i64 2034, ptr @.str.2790) - unreachable -ok4581: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 34 - %t38 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = call i64 @finch_map_find(ptr %t37, ptr %a39, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %map.missing4582, label %map.found4583 -map.missing4582: - store { ptr, i64, i64 } zeroinitializer, ptr %a42 - store { ptr, i64, i64 } %t38, ptr %a43 - call void @finch_buf_str(ptr %a42, ptr %a43, i32 1) - call void @finch_map_missing(ptr @.str.2791, i64 2034, ptr %a42) - unreachable -map.found4583: - %t44 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t37, i32 0, i32 0 - %t45 = load ptr, ptr %t44 - %t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i64 %t40 - %t47 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t46, i32 0, i32 2 - %t48 = load i64, ptr %t47 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t48 -endif4579: - store i64 -1, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic4584, label %ok4585 -panic4584: - call void @finch_panic(ptr @.str.2792, i64 2037, ptr @.str.2793) - unreachable -ok4585: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 35 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 0, %t54 - br i1 %t55, label %range4586, label %inrange4587 -range4586: - call void @finch_panic_index(ptr @.str.2794, i64 2037, i64 0, i64 %t54) - unreachable -inrange4587: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds i64, ptr %t56, i64 0 - %t58 = load i64, ptr %t57 - store i64 %t58, ptr %a59 - %t60 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2795, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then4588, label %else4589 -then4588: - %t65 = load ptr, ptr %a1 - %t66 = call i64 @finch.gen.basicType(ptr %t65, { ptr, i64, i64 } { ptr @.str.2796, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2797, i64 14, i64 0 }) - store i64 %t66, ptr %a49 - br label %endif4590 -else4589: - %t67 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.2798, i64 4, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then4591, label %else4592 -then4591: - %t72 = load ptr, ptr %a1 - %t73 = call i64 @finch.gen.basicType(ptr %t72, { ptr, i64, i64 } { ptr @.str.2799, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2800, i64 18, i64 0 }) - store i64 %t73, ptr %a49 - br label %endif4593 -else4592: - %t74 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2801, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br i1 %t78, label %then4594, label %else4595 -then4594: - %t79 = load ptr, ptr %a1 - %t80 = call i64 @finch.gen.basicType(ptr %t79, { ptr, i64, i64 } { ptr @.str.2802, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2803, i64 13, i64 0 }) - store i64 %t80, ptr %a49 - br label %endif4596 -else4595: - %t81 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2804, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %then4597, label %else4598 -then4597: - %t86 = load ptr, ptr %a1 - %t87 = call i64 @finch.gen.basicType(ptr %t86, { ptr, i64, i64 } { ptr @.str.2805, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2806, i64 12, i64 0 }) - store i64 %t87, ptr %a49 - br label %endif4599 -else4598: - %t88 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2807, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then4600, label %else4601 -then4600: - %t93 = load ptr, ptr %a1 - %t94 = call i64 @finch.gen.basicType(ptr %t93, { ptr, i64, i64 } { ptr @.str.2808, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2809, i64 12, i64 0 }) - store i64 %t94, ptr %a49 - br label %endif4602 -else4601: - %t95 = load %S.ast.Type, ptr %a2 - %t96 = call i1 @finch.gen.isInt(%S.ast.Type %t95) - br i1 %t96, label %then4603, label %else4604 -then4603: - store { ptr, i64, i64 } { ptr @.str.2810, i64 15, i64 0 }, ptr %a97 - %t98 = load %S.ast.Type, ptr %a2 - %t99 = call i1 @finch.gen.isSigned(%S.ast.Type %t98) - br i1 %t99, label %then4606, label %endif4608 -then4606: - %t100 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.2811, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif4608 -endif4608: - %t102 = load ptr, ptr %a1 - %t103 = load { ptr, i64, i64 }, ptr %a8 - %t104 = load %S.ast.Type, ptr %a2 - %t105 = call i64 @finch.gen.bitsOf(%S.ast.Type %t104) - %t106 = load { ptr, i64, i64 }, ptr %a97 - %t107 = call i64 @finch.gen.basicType(ptr %t102, { ptr, i64, i64 } %t103, i64 %t105, { ptr, i64, i64 } %t106) - store i64 %t107, ptr %a49 - call void @finch_str_drop(ptr %a97) - br label %endif4605 -else4604: - %t108 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2812, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then4609, label %else4610 -then4609: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic4612, label %ok4613 -panic4612: - call void @finch_panic(ptr @.str.2813, i64 2055, ptr @.str.2814) - unreachable -ok4613: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 21 - %t116 = load ptr, ptr %a1 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = call i64 @finch.gen.findEnum(ptr %t116, { ptr, i64, i64 } %t118, { ptr, i64, i64 } %t120) - %t122 = load { ptr, i64, i64 }, ptr %t115 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 %t121, %t123 - br i1 %t124, label %range4614, label %inrange4615 -range4614: - call void @finch_panic_index(ptr @.str.2815, i64 2055, i64 %t121, i64 %t123) - unreachable -inrange4615: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.gen.EnumDef, ptr %t125, i64 %t121 - %t127 = load %S.gen.EnumDef, ptr %t126 - store %S.gen.EnumDef %t127, ptr %a128 - call void @finch.copy.S_gen_EnumDef(ptr %a129, ptr %a128) - %t130 = load %S.gen.EnumDef, ptr %a129 - store %S.gen.EnumDef %t130, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - store i64 0, ptr %a136 - br label %for.cond4616 -for.cond4616: - %t137 = load i64, ptr %a136 - %t138 = icmp slt i64 %t137, %t135 - br i1 %t138, label %for.body4617, label %for.end4619 -for.body4617: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t140 = load ptr, ptr %a1 - %t141 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t142 = load i64, ptr %a136 - %t143 = load { ptr, i64, i64 }, ptr %t141 - %t144 = extractvalue { ptr, i64, i64 } %t143, 1 - %t145 = icmp uge i64 %t142, %t144 - br i1 %t145, label %range4620, label %inrange4621 -range4620: - call void @finch_panic_index(ptr @.str.2817, i64 2058, i64 %t142, i64 %t144) - unreachable -inrange4621: - %t146 = extractvalue { ptr, i64, i64 } %t143, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t142 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.2816, i64 21, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.2818, i64 10, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 3 - %t159 = load i64, ptr %a136 - %t160 = load { ptr, i64, i64 }, ptr %t158 - %t161 = extractvalue { ptr, i64, i64 } %t160, 1 - %t162 = icmp uge i64 %t159, %t161 - br i1 %t162, label %range4622, label %inrange4623 -range4622: - call void @finch_panic_index(ptr @.str.2819, i64 2058, i64 %t159, i64 %t161) - unreachable -inrange4623: - %t163 = extractvalue { ptr, i64, i64 } %t160, 0 - %t164 = getelementptr inbounds i64, ptr %t163, i64 %t159 - %t165 = load i64, ptr %t164 - call void @finch_str_from_int(ptr %a166, i64 %t165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t157, ptr %a169 - store { ptr, i64, i64 } %t167, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t157, ptr %a171 - call void @finch_str_drop(ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.2820, i64 1, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = call i64 @finch.gen.md(ptr %t140, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t178, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t179) - %t182 = load i64, ptr %t139 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a132 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t139 - br label %for.step4618 -for.step4618: - %t186 = load i64, ptr %a136 - %t187 = add i64 %t186, 1 - store i64 %t187, ptr %a136 - br label %for.cond4616 -for.end4619: - %t188 = load ptr, ptr %a1 - %t189 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.2821, i64 54, i64 0 }, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2822, i64 10, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a201, i64 %t200) - %t202 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t199, ptr %a206 - call void @finch_str_drop(ptr %a206) - store { ptr, i64, i64 } %t202, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2823, i64 24, i64 0 }, ptr %a211 - call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) - store { ptr, i64, i64 } %t208, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a209 - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2824, i64 2, i64 0 }, ptr %a215 - call void @finch_str_join(ptr %a216, ptr %a132, ptr %a215) - %t217 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t213, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t213, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.2825, i64 2, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call i64 @finch.gen.md(ptr %t188, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store i64 %t229, ptr %a49 - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_gen_EnumDef(ptr %a131) - br label %endif4611 -else4610: - %t231 = load ptr, ptr %a1 - %t232 = call i64 @finch.gen.md(ptr %t231, { ptr, i64, i64 } { ptr @.str.2826, i64 0, i64 0 }) - store i64 %t232, ptr %a49 - %t233 = load i64, ptr %a49 - %t234 = load ptr, ptr %a1 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4624, label %ok4625 -panic4624: - call void @finch_panic(ptr @.str.2827, i64 2064, ptr @.str.2828) - unreachable -ok4625: - %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 34 - %t237 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t237, ptr %a238 - store i32 0, ptr %a239 - %t240 = call i64 @finch_map_slot(ptr %t236, ptr %a238, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a239) - %t241 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t236, i32 0, i32 0 - %t242 = load ptr, ptr %t241 - %t243 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t242, i64 %t240 - %t244 = load i32, ptr %a239 - %t245 = icmp ne i32 %t244, 0 - br i1 %t245, label %map.new4626, label %map.have4627 -map.new4626: - %t246 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 1 - call void @finch_str_copy(ptr %t246, ptr %a238) - %t247 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 0, ptr %t247 - br label %map.have4627 -map.have4627: - %t248 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 %t233, ptr %t248 - %t249 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t249, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2829, i64 3, i64 0 }, ptr %a251 - %t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251) - %t253 = icmp ne i32 %t252, 0 - br i1 %t253, label %then4628, label %else4629 -then4628: - store i64 -1, ptr %a254 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t255, i32 0, i32 1 - %t257 = load i64, ptr %t256 - %t258 = icmp sgt i64 %t257, 0 - br i1 %t258, label %then4631, label %endif4633 -then4631: - %t259 = load ptr, ptr %a1 - %t260 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t261 = load { ptr, i64, i64 }, ptr %t260 - %t262 = extractvalue { ptr, i64, i64 } %t261, 1 - %t263 = icmp uge i64 0, %t262 - br i1 %t263, label %range4634, label %inrange4635 -range4634: - call void @finch_panic_index(ptr @.str.2830, i64 2068, i64 0, i64 %t262) - unreachable -inrange4635: - %t264 = extractvalue { ptr, i64, i64 } %t261, 0 - %t265 = getelementptr inbounds %S.ast.Type, ptr %t264, i64 0 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call i64 @finch.gen.diType(ptr %t259, %S.ast.Type %t266) - store i64 %t267, ptr %a254 - br label %endif4633 -endif4633: - %t268 = load i64, ptr %a254 - %t269 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t268) - store { ptr, i64, i64 } { ptr @.str.2831, i64 51, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.2832, i64 11, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic4636, label %ok4637 -panic4636: - call void @finch_panic(ptr @.str.2833, i64 2070, ptr @.str.2834) - unreachable -ok4637: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 33 - %t283 = load i64, ptr %a49 - %t284 = load { ptr, i64, i64 }, ptr %t282 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range4638, label %inrange4639 -range4638: - call void @finch_panic_index(ptr @.str.2835, i64 2070, i64 %t283, i64 %t285) - unreachable -inrange4639: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t283 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t279, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_drop(ptr %a290) - br label %endif4630 -else4629: - %t291 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t291, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.2836, i64 5, i64 0 }, ptr %a293 - %t294 = call i32 @finch_str_eq(ptr %a292, ptr %a293) - %t295 = icmp ne i32 %t294, 0 - br i1 %t295, label %then4640, label %else4641 -then4640: - %t296 = load ptr, ptr %a1 - %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t298 = load { ptr, i64, i64 }, ptr %t297 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 0, %t299 - br i1 %t300, label %range4643, label %inrange4644 -range4643: - call void @finch_panic_index(ptr @.str.2837, i64 2072, i64 0, i64 %t299) - unreachable -inrange4644: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i64 0 - %t303 = load %S.ast.Type, ptr %t302 - %t304 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t296, %S.ast.Type %t303) - store %S.gen.SizeAlign %t304, ptr %a305 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t308 = load i64, ptr %t307 - call void @finch_str_from_int(ptr %a309, i64 %t308) - %t310 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.2838, i64 19, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2839, i64 1, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call i64 @finch.gen.md(ptr %t306, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store i64 %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %t325 - %t327 = extractvalue { ptr, i64, i64 } %t326, 1 - %t328 = icmp uge i64 0, %t327 - br i1 %t328, label %range4645, label %inrange4646 -range4645: - call void @finch_panic_index(ptr @.str.2841, i64 2074, i64 0, i64 %t327) - unreachable -inrange4646: - %t329 = extractvalue { ptr, i64, i64 } %t326, 0 - %t330 = getelementptr inbounds %S.ast.Type, ptr %t329, i64 0 - %t331 = load %S.ast.Type, ptr %t330 - %t332 = call i64 @finch.gen.diType(ptr %t324, %S.ast.Type %t331) - %t333 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t332) - store { ptr, i64, i64 } { ptr @.str.2840, i64 51, i64 0 }, ptr %a335 - store { ptr, i64, i64 } %t333, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - store { ptr, i64, i64 } %t338, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.2842, i64 8, i64 0 }, ptr %a341 - call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) - store { ptr, i64, i64 } %t338, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a339 - %t344 = getelementptr inbounds %S.gen.SizeAlign, ptr %a305, i32 0, i32 0 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t347 = load i64, ptr %t346 - %t348 = mul i64 %t345, %t347 - %t349 = mul i64 %t348, 8 - call void @finch_str_from_int(ptr %a350, i64 %t349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t343, ptr %a353 - store { ptr, i64, i64 } %t351, ptr %a354 - call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) - store { ptr, i64, i64 } %t343, ptr %a355 - call void @finch_str_drop(ptr %a355) - store { ptr, i64, i64 } %t351, ptr %a356 - call void @finch_str_drop(ptr %a356) - %t357 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t357, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.2843, i64 15, i64 0 }, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t357, ptr %a361 - call void @finch_str_drop(ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a358 - %t363 = load i64, ptr %a323 - call void @finch_str_from_int(ptr %a364, i64 %t363) - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t362, ptr %a369 - call void @finch_str_drop(ptr %a369) - store { ptr, i64, i64 } %t365, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t371, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.2844, i64 2, i64 0 }, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t371, ptr %a375 - call void @finch_str_drop(ptr %a375) - %t376 = load { ptr, i64, i64 }, ptr %a372 - %t377 = load ptr, ptr %a1 - %t378 = icmp eq ptr %t377, null - br i1 %t378, label %panic4647, label %ok4648 -panic4647: - call void @finch_panic(ptr @.str.2845, i64 2074, ptr @.str.2846) - unreachable -ok4648: - %t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 33 - %t380 = load i64, ptr %a49 - %t381 = load { ptr, i64, i64 }, ptr %t379 - %t382 = extractvalue { ptr, i64, i64 } %t381, 1 - %t383 = icmp uge i64 %t380, %t382 - br i1 %t383, label %range4649, label %inrange4650 -range4649: - call void @finch_panic_index(ptr @.str.2847, i64 2074, i64 %t380, i64 %t382) - unreachable -inrange4650: - %t384 = extractvalue { ptr, i64, i64 } %t381, 0 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 - %t386 = load { ptr, i64, i64 }, ptr %t385 - store { ptr, i64, i64 } %t376, ptr %t385 - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif4642 -else4641: - %t388 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t388, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.2848, i64 3, i64 0 }, ptr %a390 - %t391 = call i32 @finch_str_eq(ptr %a389, ptr %a390) - %t392 = icmp ne i32 %t391, 0 - br label %logic.from4651 -logic.from4651: - br i1 %t392, label %logic.end4653, label %logic.rhs4652 -logic.rhs4652: - %t393 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t393, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2849, i64 5, i64 0 }, ptr %a395 - %t396 = call i32 @finch_str_eq(ptr %a394, ptr %a395) - %t397 = icmp ne i32 %t396, 0 - br label %logic.rend4654 -logic.rend4654: - br label %logic.end4653 -logic.end4653: - %t398 = phi i1 [ true, %logic.from4651 ], [ %t397, %logic.rend4654 ] - br i1 %t398, label %then4655, label %else4656 -then4655: - %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2850, i64 4, i64 0 }) - store %S.ast.Type %t399, ptr %a400 - %t401 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t401, ptr %a402 - store { ptr, i64, i64 } { ptr @.str.2851, i64 5, i64 0 }, ptr %a403 - %t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403) - %t405 = icmp ne i32 %t404, 0 - br i1 %t405, label %then4658, label %endif4660 -then4658: - %t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t407 = load { ptr, i64, i64 }, ptr %t406 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 0, %t408 - br i1 %t409, label %range4661, label %inrange4662 -range4661: - call void @finch_panic_index(ptr @.str.2852, i64 2078, i64 0, i64 %t408) - unreachable -inrange4662: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.ast.Type, ptr %t410, i64 0 - %t412 = load %S.ast.Type, ptr %t411 - store %S.ast.Type %t412, ptr %a413 - call void @finch.copy.S_ast_Type(ptr %a414, ptr %a413) - %t415 = load %S.ast.Type, ptr %a414 - %t416 = load %S.ast.Type, ptr %a400 - store %S.ast.Type %t415, ptr %a400 - store %S.ast.Type %t416, ptr %a417 - call void @finch.drop.S_ast_Type(ptr %a417) - br label %endif4660 -endif4660: - %t418 = load ptr, ptr %a1 - %t419 = load ptr, ptr %a1 - %t420 = load %S.ast.Type, ptr %a400 - %t421 = call i64 @finch.gen.diType(ptr %t419, %S.ast.Type %t420) - %t422 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t421) - store { ptr, i64, i64 } { ptr @.str.2853, i64 51, i64 0 }, ptr %a424 - store { ptr, i64, i64 } %t422, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - store { ptr, i64, i64 } %t427, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.2854, i64 11, i64 0 }, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = call i64 @finch.gen.md(ptr %t418, { ptr, i64, i64 } %t432) - store { ptr, i64, i64 } %t432, ptr %a434 - call void @finch_str_drop(ptr %a434) - store i64 %t433, ptr %a435 - %t436 = load ptr, ptr %a1 - %t437 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2855, i64 3, i64 0 }) - %t438 = call i64 @finch.gen.diType(ptr %t436, %S.ast.Type %t437) - store %S.ast.Type %t437, ptr %a439 - call void @finch.drop.S_ast_Type(ptr %a439) - store i64 %t438, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = load i64, ptr %a49 - %t443 = load i64, ptr %a59 - %t444 = load i64, ptr %a435 - %t445 = call i64 @finch.gen.dbgMember(ptr %t441, { ptr, i64, i64 } { ptr @.str.2856, i64 3, i64 0 }, i64 %t442, i64 %t443, i64 0, i64 %t444, i64 64, i64 0) - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load i64, ptr %a49 - %t449 = load i64, ptr %a59 - %t450 = load i64, ptr %a440 - %t451 = call i64 @finch.gen.dbgMember(ptr %t447, { ptr, i64, i64 } { ptr @.str.2857, i64 3, i64 0 }, i64 %t448, i64 %t449, i64 0, i64 %t450, i64 64, i64 64) - store i64 %t451, ptr %a452 - %t453 = load ptr, ptr %a1 - %t454 = load i64, ptr %a49 - %t455 = load i64, ptr %a59 - %t456 = load i64, ptr %a440 - %t457 = call i64 @finch.gen.dbgMember(ptr %t453, { ptr, i64, i64 } { ptr @.str.2858, i64 3, i64 0 }, i64 %t454, i64 %t455, i64 0, i64 %t456, i64 64, i64 128) - store i64 %t457, ptr %a458 - %t459 = load %S.ast.Type, ptr %a2 - %t460 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.2859, i64 52, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.2860, i64 10, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a472, i64 %t471) - %t473 = load { ptr, i64, i64 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a475 - store { ptr, i64, i64 } %t473, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t470, ptr %a477 - call void @finch_str_drop(ptr %a477) - store { ptr, i64, i64 } %t473, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a474 - store { ptr, i64, i64 } %t479, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.2861, i64 37, i64 0 }, ptr %a482 - call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482) - store { ptr, i64, i64 } %t479, ptr %a483 - call void @finch_str_drop(ptr %a483) - %t484 = load { ptr, i64, i64 }, ptr %a480 - %t485 = load i64, ptr %a446 - call void @finch_str_from_int(ptr %a486, i64 %t485) - %t487 = load { ptr, i64, i64 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t484, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t487, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t493, ptr %a495 - store { ptr, i64, i64 } { ptr @.str.2862, i64 3, i64 0 }, ptr %a496 - call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) - store { ptr, i64, i64 } %t493, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a494 - %t499 = load i64, ptr %a452 - call void @finch_str_from_int(ptr %a500, i64 %t499) - %t501 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a503 - store { ptr, i64, i64 } %t501, ptr %a504 - call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) - store { ptr, i64, i64 } %t498, ptr %a505 - call void @finch_str_drop(ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.2863, i64 3, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - %t513 = load i64, ptr %a458 - call void @finch_str_from_int(ptr %a514, i64 %t513) - %t515 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a517 - store { ptr, i64, i64 } %t515, ptr %a518 - call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) - store { ptr, i64, i64 } %t512, ptr %a519 - call void @finch_str_drop(ptr %a519) - store { ptr, i64, i64 } %t515, ptr %a520 - call void @finch_str_drop(ptr %a520) - %t521 = load { ptr, i64, i64 }, ptr %a516 - store { ptr, i64, i64 } %t521, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.2864, i64 2, i64 0 }, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t521, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - %t527 = load ptr, ptr %a1 - %t528 = icmp eq ptr %t527, null - br i1 %t528, label %panic4663, label %ok4664 -panic4663: - call void @finch_panic(ptr @.str.2865, i64 2085, ptr @.str.2866) - unreachable -ok4664: - %t529 = getelementptr inbounds %S.gen.Gen, ptr %t527, i32 0, i32 33 - %t530 = load i64, ptr %a49 - %t531 = load { ptr, i64, i64 }, ptr %t529 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range4665, label %inrange4666 -range4665: - call void @finch_panic_index(ptr @.str.2867, i64 2085, i64 %t530, i64 %t532) - unreachable -inrange4666: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %t534, i64 %t530 - %t536 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t526, ptr %t535 - store { ptr, i64, i64 } %t536, ptr %a537 - call void @finch_str_drop(ptr %a537) - call void @finch.drop.S_ast_Type(ptr %a400) - br label %endif4657 -else4656: - %t538 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.2868, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br i1 %t542, label %then4667, label %else4668 -then4667: - %t543 = load ptr, ptr %a1 - %t544 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2869, i64 3, i64 0 }) - %t545 = call i64 @finch.gen.diType(ptr %t543, %S.ast.Type %t544) - store %S.ast.Type %t544, ptr %a546 - call void @finch.drop.S_ast_Type(ptr %a546) - store i64 %t545, ptr %a547 - %t548 = load ptr, ptr %a1 - %t549 = call i64 @finch.gen.md(ptr %t548, { ptr, i64, i64 } { ptr @.str.2870, i64 66, i64 0 }) - store i64 %t549, ptr %a550 - %t551 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t552 = call ptr @finch_alloc(i64 %t551) - %t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 0 - store { ptr, i64, i64 } { ptr @.str.2871, i64 7, i64 0 }, ptr %t553 - %t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 1 - store { ptr, i64, i64 } { ptr @.str.2872, i64 3, i64 0 }, ptr %t554 - %t555 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 2 - store { ptr, i64, i64 } { ptr @.str.2873, i64 4, i64 0 }, ptr %t555 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 3 - store { ptr, i64, i64 } { ptr @.str.2874, i64 3, i64 0 }, ptr %t556 - %t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 4 - store { ptr, i64, i64 } { ptr @.str.2875, i64 5, i64 0 }, ptr %t557 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 5 - store { ptr, i64, i64 } { ptr @.str.2876, i64 4, i64 0 }, ptr %t558 - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 6 - store { ptr, i64, i64 } { ptr @.str.2877, i64 4, i64 0 }, ptr %t559 - %t560 = insertvalue { ptr, i64, i64 } undef, ptr %t552, 0 - %t561 = insertvalue { ptr, i64, i64 } %t560, i64 7, 1 - %t562 = insertvalue { ptr, i64, i64 } %t561, i64 7, 2 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } zeroinitializer, ptr %a564 - store i64 0, ptr %a565 - br label %for.cond4670 -for.cond4670: - %t566 = load i64, ptr %a565 - %t567 = icmp slt i64 %t566, 7 - br i1 %t567, label %for.body4671, label %for.end4673 -for.body4671: - %t568 = load i64, ptr %a547 - store i64 %t568, ptr %a569 - %t570 = load i64, ptr %a565 - %t571 = icmp eq i64 %t570, 0 - br label %logic.from4674 -logic.from4674: - br i1 %t571, label %logic.end4676, label %logic.rhs4675 -logic.rhs4675: - %t572 = load i64, ptr %a565 - %t573 = icmp eq i64 %t572, 4 - br label %logic.rend4677 -logic.rend4677: - br label %logic.end4676 -logic.end4676: - %t574 = phi i1 [ true, %logic.from4674 ], [ %t573, %logic.rend4677 ] - br i1 %t574, label %then4678, label %endif4680 -then4678: - %t575 = load i64, ptr %a550 - store i64 %t575, ptr %a569 - br label %endif4680 -endif4680: - %t576 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - %t577 = load ptr, ptr %a1 - %t578 = load i64, ptr %a565 - %t579 = load { ptr, i64, i64 }, ptr %a563 - %t580 = extractvalue { ptr, i64, i64 } %t579, 1 - %t581 = icmp uge i64 %t578, %t580 - br i1 %t581, label %range4681, label %inrange4682 -range4681: - call void @finch_panic_index(ptr @.str.2879, i64 2096, i64 %t578, i64 %t580) - unreachable -inrange4682: - %t582 = extractvalue { ptr, i64, i64 } %t579, 0 - %t583 = getelementptr inbounds { ptr, i64, i64 }, ptr %t582, i64 %t578 - %t584 = load { ptr, i64, i64 }, ptr %t583 - %t585 = load i64, ptr %a49 - %t586 = load i64, ptr %a59 - %t587 = load i64, ptr %a569 - %t588 = load i64, ptr %a565 - %t589 = mul i64 64, %t588 - %t590 = call i64 @finch.gen.dbgMember(ptr %t577, { ptr, i64, i64 } %t584, i64 %t585, i64 %t586, i64 0, i64 %t587, i64 64, i64 %t589) - call void @finch_str_from_int(ptr %a591, i64 %t590) - %t592 = load { ptr, i64, i64 }, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.2878, i64 1, i64 0 }, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t592, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a593 - %t598 = load i64, ptr %t576 - %t599 = add i64 %t598, 1 - call void @finch_arr_reserve(ptr %a564, i64 %t599, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t600 = load ptr, ptr %a564 - %t601 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i64 %t598 - store { ptr, i64, i64 } %t597, ptr %t601 - store i64 %t599, ptr %t576 - br label %for.step4672 -for.step4672: - %t602 = load i64, ptr %a565 - %t603 = add i64 %t602, 1 - store i64 %t603, ptr %a565 - br label %for.cond4670 -for.end4673: - %t604 = load %S.ast.Type, ptr %a2 - %t605 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.2880, i64 52, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.2881, i64 10, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a617, i64 %t616) - %t618 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t615, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t615, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } %t624, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.2882, i64 36, i64 0 }, ptr %a627 - call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627) - store { ptr, i64, i64 } %t624, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a625 - %t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2883, i64 2, i64 0 }, ptr %a631 - call void @finch_str_join(ptr %a632, ptr %a564, ptr %a631) - %t633 = load { ptr, i64, i64 }, ptr %a632 - store { ptr, i64, i64 } %t629, ptr %a635 - store { ptr, i64, i64 } %t633, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t629, ptr %a637 - call void @finch_str_drop(ptr %a637) - store { ptr, i64, i64 } %t633, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a634 - store { ptr, i64, i64 } %t639, ptr %a641 - store { ptr, i64, i64 } { ptr @.str.2884, i64 2, i64 0 }, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t639, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - %t645 = load ptr, ptr %a1 - %t646 = icmp eq ptr %t645, null - br i1 %t646, label %panic4683, label %ok4684 -panic4683: - call void @finch_panic(ptr @.str.2885, i64 2098, ptr @.str.2886) - unreachable -ok4684: - %t647 = getelementptr inbounds %S.gen.Gen, ptr %t645, i32 0, i32 33 - %t648 = load i64, ptr %a49 - %t649 = load { ptr, i64, i64 }, ptr %t647 - %t650 = extractvalue { ptr, i64, i64 } %t649, 1 - %t651 = icmp uge i64 %t648, %t650 - br i1 %t651, label %range4685, label %inrange4686 -range4685: - call void @finch_panic_index(ptr @.str.2887, i64 2098, i64 %t648, i64 %t650) - unreachable -inrange4686: - %t652 = extractvalue { ptr, i64, i64 } %t649, 0 - %t653 = getelementptr inbounds { ptr, i64, i64 }, ptr %t652, i64 %t648 - %t654 = load { ptr, i64, i64 }, ptr %t653 - store { ptr, i64, i64 } %t644, ptr %t653 - store { ptr, i64, i64 } %t654, ptr %a655 - call void @finch_str_drop(ptr %a655) - call void @finch.drop.arr_str(ptr %a564) - call void @finch.drop.arr_str(ptr %a563) - br label %endif4669 -else4668: - %t656 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t656, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.2888, i64 6, i64 0 }, ptr %a658 - %t659 = call i32 @finch_str_eq(ptr %a657, ptr %a658) - %t660 = icmp ne i32 %t659, 0 - br i1 %t660, label %then4687, label %else4688 -then4687: - %t661 = load ptr, ptr %a1 - %t662 = icmp eq ptr %t661, null - br i1 %t662, label %panic4690, label %ok4691 -panic4690: - call void @finch_panic(ptr @.str.2889, i64 2100, ptr @.str.2890) - unreachable -ok4691: - %t663 = getelementptr inbounds %S.gen.Gen, ptr %t661, i32 0, i32 16 - %t664 = load ptr, ptr %a1 - %t665 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t666 = load { ptr, i64, i64 }, ptr %t665 - %t667 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t668 = load { ptr, i64, i64 }, ptr %t667 - %t669 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t666, { ptr, i64, i64 } %t668) - %t670 = load { ptr, i64, i64 }, ptr %t663 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range4692, label %inrange4693 -range4692: - call void @finch_panic_index(ptr @.str.2891, i64 2100, i64 %t669, i64 %t671) - unreachable -inrange4693: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.gen.StructDef, ptr %t673, i64 %t669 - %t675 = load %S.gen.StructDef, ptr %t674 - store %S.gen.StructDef %t675, ptr %a676 - call void @finch.copy.S_gen_StructDef(ptr %a677, ptr %a676) - %t678 = load %S.gen.StructDef, ptr %a677 - store %S.gen.StructDef %t678, ptr %a679 - %t680 = load ptr, ptr %a1 - %t681 = load %S.gen.StructDef, ptr %a679 - %t682 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t680, %S.gen.StructDef %t681) - store { ptr, i64, i64 } %t682, ptr %a683 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a2 - %t686 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t684, %S.ast.Type %t685) - store %S.gen.SizeAlign %t686, ptr %a687 - store { ptr, i64, i64 } zeroinitializer, ptr %a688 - %t689 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t690 = getelementptr inbounds { ptr, i64, i64 }, ptr %t689, i32 0, i32 1 - %t691 = load i64, ptr %t690 - store i64 0, ptr %a692 - br label %for.cond4694 -for.cond4694: - %t693 = load i64, ptr %a692 - %t694 = icmp slt i64 %t693, %t691 - br i1 %t694, label %for.body4695, label %for.end4697 -for.body4695: - %t695 = load ptr, ptr %a1 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t697 = load i64, ptr %a692 - %t698 = load { ptr, i64, i64 }, ptr %t696 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range4698, label %inrange4699 -range4698: - call void @finch_panic_index(ptr @.str.2892, i64 2105, i64 %t697, i64 %t699) - unreachable -inrange4699: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds %S.ast.Type, ptr %t701, i64 %t697 - %t703 = load %S.ast.Type, ptr %t702 - %t704 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t695, %S.ast.Type %t703) - store %S.gen.SizeAlign %t704, ptr %a705 - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - %t707 = load ptr, ptr %a1 - %t708 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 11 - %t709 = load i64, ptr %a692 - %t710 = load { ptr, i64, i64 }, ptr %t708 - %t711 = extractvalue { ptr, i64, i64 } %t710, 1 - %t712 = icmp uge i64 %t709, %t711 - br i1 %t712, label %range4700, label %inrange4701 -range4700: - call void @finch_panic_index(ptr @.str.2894, i64 2106, i64 %t709, i64 %t711) - unreachable -inrange4701: - %t713 = extractvalue { ptr, i64, i64 } %t710, 0 - %t714 = getelementptr inbounds { ptr, i64, i64 }, ptr %t713, i64 %t709 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = load i64, ptr %a49 - %t717 = load i64, ptr %a59 - %t718 = load ptr, ptr %a1 - %t719 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t720 = load i64, ptr %a692 - %t721 = load { ptr, i64, i64 }, ptr %t719 - %t722 = extractvalue { ptr, i64, i64 } %t721, 1 - %t723 = icmp uge i64 %t720, %t722 - br i1 %t723, label %range4702, label %inrange4703 -range4702: - call void @finch_panic_index(ptr @.str.2895, i64 2106, i64 %t720, i64 %t722) - unreachable -inrange4703: - %t724 = extractvalue { ptr, i64, i64 } %t721, 0 - %t725 = getelementptr inbounds %S.ast.Type, ptr %t724, i64 %t720 - %t726 = load %S.ast.Type, ptr %t725 - %t727 = call i64 @finch.gen.diType(ptr %t718, %S.ast.Type %t726) - %t728 = getelementptr inbounds %S.gen.SizeAlign, ptr %a705, i32 0, i32 0 - %t729 = load i64, ptr %t728 - %t730 = mul i64 %t729, 8 - %t731 = load i64, ptr %a692 - %t732 = load { ptr, i64, i64 }, ptr %a683 - %t733 = extractvalue { ptr, i64, i64 } %t732, 1 - %t734 = icmp uge i64 %t731, %t733 - br i1 %t734, label %range4704, label %inrange4705 -range4704: - call void @finch_panic_index(ptr @.str.2896, i64 2106, i64 %t731, i64 %t733) - unreachable -inrange4705: - %t735 = extractvalue { ptr, i64, i64 } %t732, 0 - %t736 = getelementptr inbounds i64, ptr %t735, i64 %t731 - %t737 = load i64, ptr %t736 - %t738 = mul i64 %t737, 8 - %t739 = call i64 @finch.gen.dbgMember(ptr %t707, { ptr, i64, i64 } %t715, i64 %t716, i64 %t717, i64 0, i64 %t727, i64 %t730, i64 %t738) - call void @finch_str_from_int(ptr %a740, i64 %t739) - %t741 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.2893, i64 1, i64 0 }, ptr %a743 - store { ptr, i64, i64 } %t741, ptr %a744 - call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) - store { ptr, i64, i64 } %t741, ptr %a745 - call void @finch_str_drop(ptr %a745) - %t746 = load { ptr, i64, i64 }, ptr %a742 - %t747 = load i64, ptr %t706 - %t748 = add i64 %t747, 1 - call void @finch_arr_reserve(ptr %a688, i64 %t748, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t749 = load ptr, ptr %a688 - %t750 = getelementptr inbounds { ptr, i64, i64 }, ptr %t749, i64 %t747 - store { ptr, i64, i64 } %t746, ptr %t750 - store i64 %t748, ptr %t706 - br label %for.step4696 -for.step4696: - %t751 = load i64, ptr %a692 - %t752 = add i64 %t751, 1 - store i64 %t752, ptr %a692 - br label %for.cond4694 -for.end4697: - %t753 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 1 - %t754 = load { ptr, i64, i64 }, ptr %t753 - store { ptr, i64, i64 } { ptr @.str.2897, i64 52, i64 0 }, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a755 - store { ptr, i64, i64 } %t758, ptr %a760 - store { ptr, i64, i64 } { ptr @.str.2898, i64 10, i64 0 }, ptr %a761 - call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) - store { ptr, i64, i64 } %t758, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a759 - %t764 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a765, i64 %t764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - store { ptr, i64, i64 } %t763, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t763, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.2899, i64 8, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.gen.SizeAlign, ptr %a687, i32 0, i32 0 - %t779 = load i64, ptr %t778 - %t780 = mul i64 %t779, 8 - call void @finch_str_from_int(ptr %a781, i64 %t780) - %t782 = load { ptr, i64, i64 }, ptr %a781 - store { ptr, i64, i64 } %t777, ptr %a784 - store { ptr, i64, i64 } %t782, ptr %a785 - call void @finch_str_concat(ptr %a783, ptr %a784, ptr %a785) - store { ptr, i64, i64 } %t777, ptr %a786 - call void @finch_str_drop(ptr %a786) - store { ptr, i64, i64 } %t782, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load { ptr, i64, i64 }, ptr %a783 - store { ptr, i64, i64 } %t788, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.2900, i64 24, i64 0 }, ptr %a791 - call void @finch_str_concat(ptr %a789, ptr %a790, ptr %a791) - store { ptr, i64, i64 } %t788, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a789 - %t794 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2901, i64 2, i64 0 }, ptr %a795 - call void @finch_str_join(ptr %a796, ptr %a688, ptr %a795) - %t797 = load { ptr, i64, i64 }, ptr %a796 - store { ptr, i64, i64 } %t793, ptr %a799 - store { ptr, i64, i64 } %t797, ptr %a800 - call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) - store { ptr, i64, i64 } %t793, ptr %a801 - call void @finch_str_drop(ptr %a801) - store { ptr, i64, i64 } %t797, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t803, ptr %a805 - store { ptr, i64, i64 } { ptr @.str.2902, i64 2, i64 0 }, ptr %a806 - call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) - store { ptr, i64, i64 } %t803, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a804 - %t809 = load ptr, ptr %a1 - %t810 = icmp eq ptr %t809, null - br i1 %t810, label %panic4706, label %ok4707 -panic4706: - call void @finch_panic(ptr @.str.2903, i64 2108, ptr @.str.2904) - unreachable -ok4707: - %t811 = getelementptr inbounds %S.gen.Gen, ptr %t809, i32 0, i32 33 - %t812 = load i64, ptr %a49 - %t813 = load { ptr, i64, i64 }, ptr %t811 - %t814 = extractvalue { ptr, i64, i64 } %t813, 1 - %t815 = icmp uge i64 %t812, %t814 - br i1 %t815, label %range4708, label %inrange4709 -range4708: - call void @finch_panic_index(ptr @.str.2905, i64 2108, i64 %t812, i64 %t814) - unreachable -inrange4709: - %t816 = extractvalue { ptr, i64, i64 } %t813, 0 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t812 - %t818 = load { ptr, i64, i64 }, ptr %t817 - store { ptr, i64, i64 } %t808, ptr %t817 - store { ptr, i64, i64 } %t818, ptr %a819 - call void @finch_str_drop(ptr %a819) - call void @finch.drop.arr_str(ptr %a688) - call void @finch.drop.arr_int(ptr %a683) - call void @finch.drop.S_gen_StructDef(ptr %a679) - br label %endif4689 -else4688: - %t820 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2906, i64 20, i64 0 }, ptr %a822 - store { ptr, i64, i64 } %t820, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - %t824 = load { ptr, i64, i64 }, ptr %a821 - store { ptr, i64, i64 } %t824, ptr %a826 - store { ptr, i64, i64 } { ptr @.str.2907, i64 39, i64 0 }, ptr %a827 - call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) - store { ptr, i64, i64 } %t824, ptr %a828 - call void @finch_str_drop(ptr %a828) - %t829 = load { ptr, i64, i64 }, ptr %a825 - %t830 = load ptr, ptr %a1 - %t831 = icmp eq ptr %t830, null - br i1 %t831, label %panic4710, label %ok4711 -panic4710: - call void @finch_panic(ptr @.str.2908, i64 2110, ptr @.str.2909) - unreachable -ok4711: - %t832 = getelementptr inbounds %S.gen.Gen, ptr %t830, i32 0, i32 33 - %t833 = load i64, ptr %a49 - %t834 = load { ptr, i64, i64 }, ptr %t832 - %t835 = extractvalue { ptr, i64, i64 } %t834, 1 - %t836 = icmp uge i64 %t833, %t835 - br i1 %t836, label %range4712, label %inrange4713 -range4712: - call void @finch_panic_index(ptr @.str.2910, i64 2110, i64 %t833, i64 %t835) - unreachable -inrange4713: - %t837 = extractvalue { ptr, i64, i64 } %t834, 0 - %t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t833 - %t839 = load { ptr, i64, i64 }, ptr %t838 - store { ptr, i64, i64 } %t829, ptr %t838 - store { ptr, i64, i64 } %t839, ptr %a840 - call void @finch_str_drop(ptr %a840) - br label %endif4689 -endif4689: - br label %endif4669 -endif4669: - br label %endif4657 -endif4657: - br label %endif4642 -endif4642: - br label %endif4630 -endif4630: - %t841 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t841 -endif4611: - br label %endif4605 -endif4605: - br label %endif4602 -endif4602: - br label %endif4599 -endif4599: - br label %endif4596 -endif4596: - br label %endif4593 -endif4593: - br label %endif4590 -endif4590: - %t842 = load i64, ptr %a49 - %t843 = load ptr, ptr %a1 - %t844 = icmp eq ptr %t843, null - br i1 %t844, label %panic4714, label %ok4715 -panic4714: - call void @finch_panic(ptr @.str.2911, i64 2114, ptr @.str.2912) - unreachable -ok4715: - %t845 = getelementptr inbounds %S.gen.Gen, ptr %t843, i32 0, i32 34 - %t846 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t846, ptr %a847 - store i32 0, ptr %a848 - %t849 = call i64 @finch_map_slot(ptr %t845, ptr %a847, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a848) - %t850 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t845, i32 0, i32 0 - %t851 = load ptr, ptr %t850 - %t852 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t851, i64 %t849 - %t853 = load i32, ptr %a848 - %t854 = icmp ne i32 %t853, 0 - br i1 %t854, label %map.new4716, label %map.have4717 -map.new4716: - %t855 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 1 - call void @finch_str_copy(ptr %t855, ptr %a847) - %t856 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 0, ptr %t856 - br label %map.have4717 -map.have4717: - %t857 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 %t842, ptr %t857 - %t858 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t858 -} - -define internal i64 @finch.gen.dbgLocation(ptr %p0) { -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 - %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 - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca i32, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic4718, label %ok4719 -panic4718: - call void @finch_panic(ptr @.str.2914, i64 2119, ptr @.str.2915) - unreachable -ok4719: - %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 37 - %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.2913, i64 2, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.2916, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic4720, label %ok4721 -panic4720: - call void @finch_panic(ptr @.str.2917, i64 2119, ptr @.str.2918) - unreachable -ok4721: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 38 - %t21 = load i64, ptr %t20 - call void @finch_str_from_int(ptr %a22, i64 %t21) - %t23 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t17, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t17, ptr %a27 - call void @finch_str_drop(ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.2919, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4722, label %ok4723 -panic4722: - call void @finch_panic(ptr @.str.2920, i64 2119, ptr @.str.2921) - unreachable -ok4723: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 36 - %t38 = load i64, ptr %t37 - call void @finch_str_from_int(ptr %a39, i64 %t38) - %t40 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t34, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t34, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic4724, label %ok4725 -panic4724: - call void @finch_panic(ptr @.str.2922, i64 2120, ptr @.str.2923) - unreachable -ok4725: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 34 - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4726, label %endif4728 -then4726: - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic4729, label %ok4730 -panic4729: - call void @finch_panic(ptr @.str.2924, i64 2121, ptr @.str.2925) - unreachable -ok4730: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 34 - %t58 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t58, ptr %a59 - %t60 = call i64 @finch_map_find(ptr %t57, ptr %a59, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t61 = icmp slt i64 %t60, 0 - br i1 %t61, label %map.missing4731, label %map.found4732 -map.missing4731: - store { ptr, i64, i64 } zeroinitializer, ptr %a62 - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_buf_str(ptr %a62, ptr %a63, i32 1) - call void @finch_map_missing(ptr @.str.2926, i64 2121, ptr %a62) - unreachable -map.found4732: - %t64 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t57, i32 0, i32 0 - %t65 = load ptr, ptr %t64 - %t66 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t65, i64 %t60 - %t67 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t66, i32 0, i32 2 - %t68 = load i64, ptr %t67 - call void @finch_str_drop(ptr %a47) - ret i64 %t68 -endif4728: - %t69 = load ptr, ptr %a1 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4733, label %ok4734 -panic4733: - call void @finch_panic(ptr @.str.2928, i64 2123, ptr @.str.2929) - unreachable -ok4734: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 37 - %t73 = load i64, ptr %t72 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2927, i64 18, i64 0 }, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2930, i64 10, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4735, label %ok4736 -panic4735: - call void @finch_panic(ptr @.str.2931, i64 2123, ptr @.str.2932) - unreachable -ok4736: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 38 - %t89 = load i64, ptr %t88 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t85, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t85, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2933, i64 10, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic4737, label %ok4738 -panic4737: - call void @finch_panic(ptr @.str.2934, i64 2123, ptr @.str.2935) - unreachable -ok4738: - %t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 36 - %t106 = load i64, ptr %t105 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t102, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t102, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.2936, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call i64 @finch.gen.md(ptr %t69, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store i64 %t120, ptr %a122 - %t123 = load i64, ptr %a122 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic4739, label %ok4740 -panic4739: - call void @finch_panic(ptr @.str.2937, i64 2124, ptr @.str.2938) - unreachable -ok4740: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 34 - %t127 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t127, ptr %a128 - store i32 0, ptr %a129 - %t130 = call i64 @finch_map_slot(ptr %t126, ptr %a128, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a129) - %t131 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t126, i32 0, i32 0 - %t132 = load ptr, ptr %t131 - %t133 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t132, i64 %t130 - %t134 = load i32, ptr %a129 - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %map.new4741, label %map.have4742 -map.new4741: - %t136 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 1 - call void @finch_str_copy(ptr %t136, ptr %a128) - %t137 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 0, ptr %t137 - br label %map.have4742 -map.have4742: - %t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 %t123, ptr %t138 - %t139 = load i64, ptr %a122 - call void @finch_str_drop(ptr %a47) - ret i64 %t139 -} - -define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) { -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 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %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 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %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 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4743, label %ok4744 -panic4743: - call void @finch_panic(ptr @.str.2939, i64 2129, ptr @.str.2940) - unreachable -ok4744: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = load %S.gen.FnSig, ptr %t5 - store %S.gen.FnSig %t6, ptr %a7 - call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7) - %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 %then4745, label %endif4747 -then4745: - %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.2941, i64 4, i64 0 }, ptr %t30 - store i64 %t28, ptr %t26 - br label %endif4747 -endif4747: - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 - store i64 0, ptr %a32 - br label %each.cond4748 -each.cond4748: - %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.body4749, label %each.end4751 -each.body4749: - %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.step4750 -each.step4750: - %t50 = load i64, ptr %a32 - %t51 = add i64 %t50, 1 - store i64 %t51, ptr %a32 - br label %each.cond4748 -each.end4751: - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4752, label %ok4753 -panic4752: - call void @finch_panic(ptr @.str.2942, i64 2138, ptr @.str.2943) - unreachable -ok4753: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 35 - %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 %range4754, label %inrange4755 -range4754: - call void @finch_panic_index(ptr @.str.2944, i64 2138, i64 %t56, i64 %t58) - unreachable -inrange4755: - %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.2946, 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.2945, i64 27, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2947, i64 2, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } { ptr @.str.2948, i64 30, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2949, i64 17, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - %t98 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - call void @finch_str_sub(ptr %a97, ptr %a96, i64 1, i64 %t100, ptr @.str.2950, i64 2140) - %t101 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t93, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t93, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t101, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2951, i64 11, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a114, i64 %t113) - %t115 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t112, ptr %a119 - call void @finch_str_drop(ptr %a119) - store { ptr, i64, i64 } %t115, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.2952, i64 9, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a128, i64 %t127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t126, ptr %a133 - call void @finch_str_drop(ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.2953, i64 8, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t142 = load i64, ptr %t141 - call void @finch_str_from_int(ptr %a143, i64 %t142) - %t144 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t140, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t140, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2954, i64 9, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load i64, ptr %a81 - call void @finch_str_from_int(ptr %a157, i64 %t156) - %t158 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t155, ptr %a162 - call void @finch_str_drop(ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.2955, i64 13, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2956, i64 87, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = call i64 @finch.gen.md(ptr %t82, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t184, ptr %a186 - call void @finch_str_drop(ptr %a186) - call void @finch.drop.arr_str(ptr %a11) - call void @finch.drop.S_gen_FnSig(ptr %a10) - ret i64 %t185 -} - -define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a38 = 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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i64, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4756, label %ok4757 -panic4756: - call void @finch_panic(ptr @.str.2957, i64 2144, ptr @.str.2958) - unreachable -ok4757: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 30 - %t9 = load i1, ptr %t8 - %t10 = xor i1 %t9, true - br label %logic.from4758 -logic.from4758: - br i1 %t10, label %logic.end4760, label %logic.rhs4759 -logic.rhs4759: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic4761, label %ok4762 -panic4761: - call void @finch_panic(ptr @.str.2959, i64 2144, ptr @.str.2960) - unreachable -ok4762: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 36 - %t14 = load i64, ptr %t13 - %t15 = icmp slt i64 %t14, 0 - br label %logic.rend4763 -logic.rend4763: - br label %logic.end4760 -logic.end4760: - %t16 = phi i1 [ true, %logic.from4758 ], [ %t15, %logic.rend4763 ] - br i1 %t16, label %then4764, label %endif4766 -then4764: - ret void -endif4766: - %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 %then4767, label %endif4769 -then4767: - ret void -endif4769: - store { ptr, i64, i64 } { ptr @.str.2961, i64 0, i64 0 }, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4770, label %ok4771 -panic4770: - call void @finch_panic(ptr @.str.2962, i64 2152, ptr @.str.2963) - unreachable -ok4771: - %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 39 - %t27 = load i64, ptr %t26 - %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4772, label %endif4774 -then4772: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic4775, label %ok4776 -panic4775: - call void @finch_panic(ptr @.str.2965, i64 2153, ptr @.str.2966) - unreachable -ok4776: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 39 - %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.2964, i64 7, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t39, ptr %a23 - store { ptr, i64, i64 } %t40, ptr %a41 - call void @finch_str_drop(ptr %a41) - br label %endif4774 -endif4774: - %t42 = load ptr, ptr %a1 - %t43 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2967, i64 24, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.2968, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic4777, label %ok4778 -panic4777: - call void @finch_panic(ptr @.str.2969, i64 2155, ptr @.str.2970) - unreachable -ok4778: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 36 - %t56 = load i64, ptr %t55 - call void @finch_str_from_int(ptr %a57, i64 %t56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t52, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t52, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.2971, i64 9, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4779, label %ok4780 -panic4779: - call void @finch_panic(ptr @.str.2972, i64 2155, ptr @.str.2973) - unreachable -ok4780: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 35 - %t73 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t74 = load i64, ptr %t73 - %t75 = load { ptr, i64, i64 }, ptr %t72 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range4781, label %inrange4782 -range4781: - call void @finch_panic_index(ptr @.str.2974, i64 2155, i64 %t74, i64 %t76) - unreachable -inrange4782: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds i64, ptr %t78, i64 %t74 - %t80 = load i64, ptr %t79 - call void @finch_str_from_int(ptr %a81, i64 %t80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t69, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t69, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2975, i64 8, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t95 = load i64, ptr %t94 - call void @finch_str_from_int(ptr %a96, i64 %t95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t93, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t93, ptr %a101 - call void @finch_str_drop(ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2976, i64 9, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load i64, ptr %a20 - call void @finch_str_from_int(ptr %a110, i64 %t109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t108, ptr %a115 - call void @finch_str_drop(ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t117, ptr %a120 - store { ptr, i64, i64 } %t118, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.2977, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call i64 @finch.gen.md(ptr %t42, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i64 %t129, ptr %a131 - %t132 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t133 = load i64, ptr %t132 - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic4783, label %ok4784 -panic4783: - call void @finch_panic(ptr @.str.2978, i64 2156, ptr @.str.2979) - unreachable -ok4784: - %t136 = getelementptr inbounds %S.gen.Gen, ptr %t134, i32 0, i32 37 - store i64 %t133, ptr %t136 - %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t138 = load i64, ptr %t137 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4785, label %ok4786 -panic4785: - call void @finch_panic(ptr @.str.2980, i64 2157, ptr @.str.2981) - unreachable -ok4786: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 38 - store i64 %t138, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.2982, i64 41, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.2983, i64 12, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = load i64, ptr %a131 - call void @finch_str_from_int(ptr %a154, i64 %t153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t152, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.2984, i64 27, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - call void @finch.gen.emit(ptr %t142, { ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch_str_drop(ptr %a23) - ret void -} - -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = mul i64 2, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.2985, i64 20, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2986, 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 %panic4787, label %ok4788 -panic4787: - call void @finch_panic(ptr @.str.2987, i64 2164, ptr @.str.2988) - unreachable -ok4788: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 33 - %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.cond4789 -for.cond4789: - %t16 = load i64, ptr %a15 - %t17 = icmp slt i64 %t16, %t14 - br i1 %t17, label %for.body4790, label %for.end4792 -for.body4790: - %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.2989, i64 1, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.2990, i64 3, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic4793, label %ok4794 -panic4793: - call void @finch_panic(ptr @.str.2991, i64 2165, ptr @.str.2992) - unreachable -ok4794: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 33 - %t35 = load i64, ptr %a15 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4795, label %inrange4796 -range4795: - call void @finch_panic_index(ptr @.str.2993, i64 2165, i64 %t35, i64 %t37) - unreachable -inrange4796: - %t39 = extractvalue { ptr, i64, i64 } %t36, 0 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t35 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t31, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t31, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load i64, ptr %t18 - %t48 = add i64 %t47, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t49 = load ptr, ptr %a9 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 - store { ptr, i64, i64 } %t46, ptr %t50 - store i64 %t48, ptr %t18 - br label %for.step4791 -for.step4791: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %for.cond4789 -for.end4792: - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2994, i64 1, i64 0 }, ptr %a54 - call void @finch_str_join(ptr %a55, ptr %a9, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2995, i64 1, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t61 -} - -define internal void @finch.copy.arr_S_gen_Var(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond4868 -n.cond4868: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4869, label %n.end4870 -n.body4869: - %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.cond4868 -n.end4870: - ret void -} - -define internal void @finch.copy.arr_S_gen_Cleanup(ptr %dst, ptr %src) { -entry: - - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - ret void -} - -define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Scope, ptr %src - store %S.gen.Scope %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_int(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_gen_Cleanup(ptr %t8, ptr %t9) - ret void -} - -define internal void @finch.copy.arr_S_gen_Scope(ptr %dst, ptr %src) { -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.cond4865 -n.cond4865: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4866, label %n.end4867 -n.body4866: - %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.cond4865 -n.end4867: - ret void -} - -define internal void @finch.drop.arr_S_gen_Scope(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4871 -n.cond4871: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4872, label %n.end4873 -n.body4872: - %t7 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Scope(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4871 -n.end4873: - call void @finch_arr_free(ptr %a) - 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 - %a20 = alloca %S.gen.FnSig, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca %S.ast.Node, align 16 - %a117 = alloca %S.ast.Node, align 16 - %a119 = alloca %S.ast.Node, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a247 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a270 = alloca i64, align 16 - %a284 = alloca %S.ast.Type, align 16 - %a285 = alloca %S.ast.Type, align 16 - %a287 = alloca %S.ast.Type, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %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 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4797, label %ok4798 -panic4797: - call void @finch_panic(ptr @.str.2996, i64 2171, ptr @.str.2997) - unreachable -ok4798: - %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 %range4799, label %inrange4800 -range4799: - call void @finch_panic_index(ptr @.str.2998, i64 2171, i64 %t6, i64 %t8) - unreachable -inrange4800: - %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 %panic4801, label %ok4802 -panic4801: - call void @finch_panic(ptr @.str.2999, i64 2171, ptr @.str.3000) - unreachable -ok4802: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 13 - store %S.gen.FnSig %t12, ptr %a16 - call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) - %t18 = load %S.gen.FnSig, ptr %a17 - %t19 = load %S.gen.FnSig, ptr %t15 - store %S.gen.FnSig %t18, ptr %t15 - store %S.gen.FnSig %t19, ptr %a20 - call void @finch.drop.S_gen_FnSig(ptr %a20) - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic4803, label %ok4804 -panic4803: - call void @finch_panic(ptr @.str.3001, i64 2172, ptr @.str.3002) - unreachable -ok4804: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %t23, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic4805, label %ok4806 -panic4805: - call void @finch_panic(ptr @.str.3003, i64 2172, ptr @.str.3004) - unreachable -ok4806: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 14 - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - %t32 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t31, ptr %t28 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic4807, label %ok4808 -panic4807: - call void @finch_panic(ptr @.str.3005, i64 2173, ptr @.str.3006) - unreachable -ok4808: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 13 - %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 6 - %t38 = load { ptr, i64, i64 }, ptr %t37 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic4809, label %ok4810 -panic4809: - call void @finch_panic(ptr @.str.3007, i64 2173, ptr @.str.3008) - unreachable -ok4810: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 18 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic4811, label %ok4812 -panic4811: - call void @finch_panic(ptr @.str.3009, i64 2174, ptr @.str.3010) - unreachable -ok4812: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 13 - %t50 = getelementptr inbounds %S.gen.FnSig, ptr %t49, i32 0, i32 7 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4813, label %ok4814 -panic4813: - call void @finch_panic(ptr @.str.3011, i64 2174, ptr @.str.3012) - unreachable -ok4814: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19 - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - %t58 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t57, ptr %t54 - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch.drop.arr_S_ast_Type(ptr %a59) - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic4815, label %ok4816 -panic4815: - call void @finch_panic(ptr @.str.3014, i64 2175, ptr @.str.3015) - unreachable -ok4816: - %t62 = getelementptr inbounds %S.gen.Gen, ptr %t60, i32 0, i32 20 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } { ptr @.str.3013, i64 0, i64 0 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4817, label %ok4818 -panic4817: - call void @finch_panic(ptr @.str.3016, i64 2176, ptr @.str.3017) - unreachable -ok4818: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 13 - %t68 = getelementptr inbounds %S.gen.FnSig, ptr %t67, i32 0, i32 7 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = icmp sgt i64 %t70, 0 - br i1 %t71, label %then4819, label %endif4821 -then4819: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic4822, label %ok4823 -panic4822: - call void @finch_panic(ptr @.str.3019, i64 2177, ptr @.str.3020) - unreachable -ok4823: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 13 - %t75 = getelementptr inbounds %S.gen.FnSig, ptr %t74, i32 0, i32 8 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.3018, i64 17, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3021, i64 1, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4824, label %ok4825 -panic4824: - call void @finch_panic(ptr @.str.3022, i64 2177, ptr @.str.3023) - unreachable -ok4825: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 20 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t85, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %endif4821 -endif4821: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic4826, label %ok4827 -panic4826: - call void @finch_panic(ptr @.str.3024, i64 2179, ptr @.str.3025) - unreachable -ok4827: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 0 - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4828, label %ok4829 -panic4828: - call void @finch_panic(ptr @.str.3026, i64 2179, ptr @.str.3027) - unreachable -ok4829: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 13 - %t97 = getelementptr inbounds %S.gen.FnSig, ptr %t96, i32 0, i32 16 - %t98 = load i64, ptr %t97 - %t99 = load { ptr, i64, i64 }, ptr %t93 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range4830, label %inrange4831 -range4830: - call void @finch_panic_index(ptr @.str.3028, i64 2179, i64 %t98, i64 %t100) - unreachable -inrange4831: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Program, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.ast.Program, ptr %t103, i32 0, i32 8 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4832, label %ok4833 -panic4832: - call void @finch_panic(ptr @.str.3029, i64 2179, ptr @.str.3030) - unreachable -ok4833: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 13 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %t107, i32 0, i32 17 - %t109 = load i64, ptr %t108 - %t110 = load { ptr, i64, i64 }, ptr %t104 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range4834, label %inrange4835 -range4834: - call void @finch_panic_index(ptr @.str.3031, i64 2179, i64 %t109, i64 %t111) - unreachable -inrange4835: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %t113, i64 %t109 - %t115 = load %S.ast.Node, ptr %t114 - store %S.ast.Node %t115, ptr %a116 - call void @finch.copy.S_ast_Node(ptr %a117, ptr %a116) - %t118 = load %S.ast.Node, ptr %a117 - store %S.ast.Node %t118, ptr %a119 - store { ptr, i64, i64 } zeroinitializer, ptr %a120 - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic4836, label %ok4837 -panic4836: - call void @finch_panic(ptr @.str.3032, i64 2181, ptr @.str.3033) - unreachable -ok4837: - %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 4 - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch.copy.arr_str(ptr %a126, ptr %a125) - %t127 = load { ptr, i64, i64 }, ptr %a126 - %t128 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t127, ptr %t124 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.drop.arr_str(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a120 - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4838, label %ok4839 -panic4838: - call void @finch_panic(ptr @.str.3034, i64 2182, ptr @.str.3035) - unreachable -ok4839: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 5 - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch.copy.arr_str(ptr %a135, ptr %a134) - %t136 = load { ptr, i64, i64 }, ptr %a135 - %t137 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } %t136, ptr %t133 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch.drop.arr_str(ptr %a138) - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4840, label %ok4841 -panic4840: - call void @finch_panic(ptr @.str.3036, i64 2183, ptr @.str.3037) - unreachable -ok4841: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 6 - store i64 0, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4842, label %ok4843 -panic4842: - call void @finch_panic(ptr @.str.3038, i64 2184, ptr @.str.3039) - unreachable -ok4843: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 9 - store i1 false, ptr %t144 - %t145 = load ptr, ptr %a1 - %t146 = icmp eq ptr %t145, null - br i1 %t146, label %panic4844, label %ok4845 -panic4844: - call void @finch_panic(ptr @.str.3040, i64 2185, ptr @.str.3041) - unreachable -ok4845: - %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 25 - store i64 0, ptr %t147 - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic4846, label %ok4847 -panic4846: - call void @finch_panic(ptr @.str.3042, i64 2186, ptr @.str.3043) - unreachable -ok4847: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 36 - store i64 -1, ptr %t150 - store i64 -1, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic4848, label %ok4849 -panic4848: - call void @finch_panic(ptr @.str.3044, i64 2188, ptr @.str.3045) - unreachable -ok4849: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 30 - %t155 = load i1, ptr %t154 - br i1 %t155, label %then4850, label %endif4852 -then4850: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a119 - %t158 = call i64 @finch.gen.dbgSubprogram(ptr %t156, %S.ast.Node %t157) - store i64 %t158, ptr %a151 - %t159 = load i64, ptr %a151 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4853, label %ok4854 -panic4853: - call void @finch_panic(ptr @.str.3046, i64 2190, ptr @.str.3047) - unreachable -ok4854: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 36 - store i64 %t159, ptr %t162 - %t163 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 11 - %t164 = load i64, ptr %t163 - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic4855, label %ok4856 -panic4855: - call void @finch_panic(ptr @.str.3048, i64 2191, ptr @.str.3049) - unreachable -ok4856: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 37 - store i64 %t164, ptr %t167 - %t168 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 12 - %t169 = load i64, ptr %t168 - %t170 = load ptr, ptr %a1 - %t171 = icmp eq ptr %t170, null - br i1 %t171, label %panic4857, label %ok4858 -panic4857: - call void @finch_panic(ptr @.str.3050, i64 2192, ptr @.str.3051) - unreachable -ok4858: - %t172 = getelementptr inbounds %S.gen.Gen, ptr %t170, i32 0, i32 38 - store i64 %t169, ptr %t172 - br label %endif4852 -endif4852: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4859, label %ok4860 -panic4859: - call void @finch_panic(ptr @.str.3052, i64 2194, ptr @.str.3053) - unreachable -ok4860: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 44 - store i1 false, ptr %t175 - %t176 = load ptr, ptr %a1 - %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic4861, label %ok4862 -panic4861: - call void @finch_panic(ptr @.str.3054, i64 2195, ptr @.str.3055) - unreachable -ok4862: - %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 46 - store i64 0, ptr %t178 - store { ptr, i64, i64 } zeroinitializer, ptr %a179 - %t180 = load { ptr, i64, i64 }, ptr %a179 - %t181 = load ptr, ptr %a1 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic4863, label %ok4864 -panic4863: - call void @finch_panic(ptr @.str.3056, i64 2197, ptr @.str.3057) - unreachable -ok4864: - %t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 10 - store { ptr, i64, i64 } %t180, ptr %a184 - call void @finch.copy.arr_S_gen_Scope(ptr %a185, ptr %a184) - %t186 = load { ptr, i64, i64 }, ptr %a185 - %t187 = load { ptr, i64, i64 }, ptr %t183 - store { ptr, i64, i64 } %t186, ptr %t183 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch.drop.arr_S_gen_Scope(ptr %a188) - %t189 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t189) - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic4874, label %ok4875 -panic4874: - call void @finch_panic(ptr @.str.3058, i64 2200, ptr @.str.3059) - unreachable -ok4875: - %t193 = getelementptr inbounds %S.gen.Gen, ptr %t191, i32 0, i32 13 - %t194 = getelementptr inbounds %S.gen.FnSig, ptr %t193, i32 0, i32 2 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = icmp sgt i64 %t196, 0 - br i1 %t197, label %then4876, label %endif4878 -then4876: - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = add i64 %t199, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t200, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t201 = load ptr, ptr %a190 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i64 %t199 - store { ptr, i64, i64 } { ptr @.str.3060, i64 9, i64 0 }, ptr %t202 - store i64 %t200, ptr %t198 - store { ptr, i64, i64 } { ptr @.str.3061, i64 6, i64 0 }, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4879, label %ok4880 -panic4879: - call void @finch_panic(ptr @.str.3062, i64 2204, ptr @.str.3063) - unreachable -ok4880: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 13 - %t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 4 - %t208 = load i1, ptr %t207 - br i1 %t208, label %then4881, label %endif4883 -then4881: - %t209 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.3064, i64 4, i64 0 }, ptr %a203 - store { ptr, i64, i64 } %t209, ptr %a210 - call void @finch_str_drop(ptr %a210) - br label %endif4883 -endif4883: - %t211 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_copy(ptr %a213, ptr %a212) - %t214 = load { ptr, i64, i64 }, ptr %a213 - %t215 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t214, 0 - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic4884, label %ok4885 -panic4884: - call void @finch_panic(ptr @.str.3065, i64 2207, ptr @.str.3066) - unreachable -ok4885: - %t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 13 - %t219 = getelementptr inbounds %S.gen.FnSig, ptr %t218, i32 0, i32 2 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch_str_copy(ptr %a222, ptr %a221) - %t223 = load { ptr, i64, i64 }, ptr %a222 - %t224 = insertvalue %S.ast.Type %t215, { ptr, i64, i64 } %t223, 2 - %t225 = load ptr, ptr %a1 - %t226 = icmp eq ptr %t225, null - br i1 %t226, label %panic4886, label %ok4887 -panic4886: - call void @finch_panic(ptr @.str.3067, i64 2207, ptr @.str.3068) - unreachable -ok4887: - %t227 = getelementptr inbounds %S.gen.Gen, ptr %t225, i32 0, i32 13 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_copy(ptr %a231, ptr %a230) - %t232 = load { ptr, i64, i64 }, ptr %a231 - %t233 = insertvalue %S.ast.Type %t224, { ptr, i64, i64 } %t232, 3 - store %S.ast.Type %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic4888, label %ok4889 -panic4888: - call void @finch_panic(ptr @.str.3069, i64 2208, ptr @.str.3070) - unreachable -ok4889: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 10 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range4890, label %inrange4891 -range4890: - call void @finch_panic_index(ptr @.str.3071, i64 2208, i64 0, i64 %t239) - unreachable -inrange4891: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.gen.Scope, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.gen.Scope, ptr %t242, i32 0, i32 0 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.3072, i64 4, i64 0 }, 0 - %t246 = load %S.ast.Type, ptr %a234 - store %S.ast.Type %t246, ptr %a247 - call void @finch.copy.S_ast_Type(ptr %a248, ptr %a247) - %t249 = load %S.ast.Type, ptr %a248 - %t250 = insertvalue %S.gen.Var %t245, %S.ast.Type %t249, 1 - %t251 = insertvalue %S.gen.Var %t250, { ptr, i64, i64 } { ptr @.str.3073, i64 5, i64 0 }, 2 - %t252 = insertvalue %S.gen.Var %t251, i1 false, 3 - %t253 = load i64, ptr %t244 - %t254 = add i64 %t253, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t254, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t255 = load ptr, ptr %t243 - %t256 = getelementptr inbounds %S.gen.Var, ptr %t255, i64 %t253 - store %S.gen.Var %t252, ptr %t256 - store i64 %t254, ptr %t244 - %t257 = load ptr, ptr %a1 - %t258 = icmp eq ptr %t257, null - br i1 %t258, label %panic4892, label %ok4893 -panic4892: - call void @finch_panic(ptr @.str.3074, i64 2209, ptr @.str.3075) - unreachable -ok4893: - %t259 = getelementptr inbounds %S.gen.Gen, ptr %t257, i32 0, i32 30 - %t260 = load i1, ptr %t259 - br i1 %t260, label %then4894, label %endif4896 -then4894: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a119 - %t263 = load %S.ast.Type, ptr %a234 - call void @finch.gen.dbgVariable(ptr %t261, %S.ast.Node %t262, { ptr, i64, i64 } { ptr @.str.3076, i64 4, i64 0 }, %S.ast.Type %t263, { ptr, i64, i64 } { ptr @.str.3077, i64 5, i64 0 }) - br label %endif4896 -endif4896: - call void @finch.drop.S_ast_Type(ptr %a234) - call void @finch_str_drop(ptr %a203) - br label %endif4878 -endif4878: - %t264 = load ptr, ptr %a1 - %t265 = icmp eq ptr %t264, null - br i1 %t265, label %panic4897, label %ok4898 -panic4897: - call void @finch_panic(ptr @.str.3078, i64 2214, ptr @.str.3079) - unreachable -ok4898: - %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 13 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i32 0, i32 13 - %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i32 0, i32 1 - %t269 = load i64, ptr %t268 - store i64 0, ptr %a270 - br label %for.cond4899 -for.cond4899: - %t271 = load i64, ptr %a270 - %t272 = icmp slt i64 %t271, %t269 - br i1 %t272, label %for.body4900, label %for.end4902 -for.body4900: - %t273 = load ptr, ptr %a1 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic4903, label %ok4904 -panic4903: - call void @finch_panic(ptr @.str.3080, i64 2215, ptr @.str.3081) - unreachable -ok4904: - %t275 = getelementptr inbounds %S.gen.Gen, ptr %t273, i32 0, i32 13 - %t276 = getelementptr inbounds %S.gen.FnSig, ptr %t275, i32 0, i32 13 - %t277 = load i64, ptr %a270 - %t278 = load { ptr, i64, i64 }, ptr %t276 - %t279 = extractvalue { ptr, i64, i64 } %t278, 1 - %t280 = icmp uge i64 %t277, %t279 - br i1 %t280, label %range4905, label %inrange4906 -range4905: - call void @finch_panic_index(ptr @.str.3082, i64 2215, i64 %t277, i64 %t279) - unreachable -inrange4906: - %t281 = extractvalue { ptr, i64, i64 } %t278, 0 - %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 %t277 - %t283 = load %S.ast.Type, ptr %t282 - store %S.ast.Type %t283, ptr %a284 - call void @finch.copy.S_ast_Type(ptr %a285, ptr %a284) - %t286 = load %S.ast.Type, ptr %a285 - store %S.ast.Type %t286, ptr %a287 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a287 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.3083, i64 3, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a298, i64 %t297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t296, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - %t306 = load i64, ptr %t288 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t307, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %a190 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t306 - store { ptr, i64, i64 } %t305, ptr %t309 - store i64 %t307, ptr %t288 - %t310 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a311, i64 %t310) - %t312 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } { ptr @.str.3084, i64 2, i64 0 }, ptr %a314 - store { ptr, i64, i64 } %t312, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_drop(ptr %a316) - %t317 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Type, ptr %a287 - %t321 = call i1 @finch.gen.owning(ptr %t319, %S.ast.Type %t320) - br label %logic.from4907 -logic.from4907: - br i1 %t321, label %logic.rhs4908, label %logic.end4909 -logic.rhs4908: - %t322 = load ptr, ptr %a1 - %t323 = icmp eq ptr %t322, null - br i1 %t323, label %panic4910, label %ok4911 -panic4910: - call void @finch_panic(ptr @.str.3085, i64 2218, ptr @.str.3086) - unreachable -ok4911: - %t324 = getelementptr inbounds %S.gen.Gen, ptr %t322, i32 0, i32 13 - %t325 = getelementptr inbounds %S.gen.FnSig, ptr %t324, i32 0, i32 15 - %t326 = load i64, ptr %a270 - %t327 = load { ptr, i64, i64 }, ptr %t325 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range4912, label %inrange4913 -range4912: - call void @finch_panic_index(ptr @.str.3087, i64 2218, i64 %t326, i64 %t328) - unreachable -inrange4913: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds i1, ptr %t330, i64 %t326 - %t332 = load i1, ptr %t331 - %t333 = xor i1 %t332, true - br label %logic.rend4914 -logic.rend4914: - br label %logic.end4909 -logic.end4909: - %t334 = phi i1 [ false, %logic.from4907 ], [ %t333, %logic.rend4914 ] - br i1 %t334, label %then4915, label %endif4917 -then4915: - %t335 = load ptr, ptr %a1 - %t336 = load { ptr, i64, i64 }, ptr %a318 - %t337 = load %S.ast.Type, ptr %a287 - %t338 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t335, { ptr, i64, i64 } %t336, %S.ast.Type %t337) - %t339 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t338, ptr %a318 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_drop(ptr %a340) - br label %endif4917 -endif4917: - %t341 = load i64, ptr %a270 - %t342 = add i64 %t341, 1 - %t343 = load ptr, ptr %a1 - %t344 = icmp eq ptr %t343, null - br i1 %t344, label %panic4918, label %ok4919 -panic4918: - call void @finch_panic(ptr @.str.3088, i64 2221, ptr @.str.3089) - unreachable -ok4919: - %t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 39 - store i64 %t342, ptr %t345 - %t346 = load ptr, ptr %a1 - %t347 = icmp eq ptr %t346, null - br i1 %t347, label %panic4920, label %ok4921 -panic4920: - call void @finch_panic(ptr @.str.3090, i64 2222, ptr @.str.3091) - unreachable -ok4921: - %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 13 - %t349 = getelementptr inbounds %S.gen.FnSig, ptr %t348, i32 0, i32 2 - %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i32 0, i32 1 - %t351 = load i64, ptr %t350 - %t352 = icmp sgt i64 %t351, 0 - br i1 %t352, label %then4922, label %endif4924 -then4922: - %t353 = load i64, ptr %a270 - %t354 = add i64 %t353, 2 - %t355 = load ptr, ptr %a1 - %t356 = icmp eq ptr %t355, null - br i1 %t356, label %panic4925, label %ok4926 -panic4925: - call void @finch_panic(ptr @.str.3092, i64 2223, ptr @.str.3093) - unreachable -ok4926: - %t357 = getelementptr inbounds %S.gen.Gen, ptr %t355, i32 0, i32 39 - store i64 %t354, ptr %t357 - br label %endif4924 -endif4924: - %t358 = load ptr, ptr %a1 - %t359 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t360 = load i64, ptr %a270 - %t361 = load { ptr, i64, i64 }, ptr %t359 - %t362 = extractvalue { ptr, i64, i64 } %t361, 1 - %t363 = icmp uge i64 %t360, %t362 - br i1 %t363, label %range4927, label %inrange4928 -range4927: - call void @finch_panic_index(ptr @.str.3094, i64 2225, i64 %t360, i64 %t362) - unreachable -inrange4928: - %t364 = extractvalue { ptr, i64, i64 } %t361, 0 - %t365 = getelementptr inbounds %S.ast.Node, ptr %t364, i64 %t360 - %t366 = load %S.ast.Node, ptr %t365 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic4929, label %ok4930 -panic4929: - call void @finch_panic(ptr @.str.3095, i64 2225, ptr @.str.3096) - unreachable -ok4930: - %t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13 - %t370 = getelementptr inbounds %S.gen.FnSig, ptr %t369, i32 0, i32 14 - %t371 = load i64, ptr %a270 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4931, label %inrange4932 -range4931: - call void @finch_panic_index(ptr @.str.3097, i64 2225, i64 %t371, i64 %t373) - unreachable -inrange4932: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t371 - %t377 = load { ptr, i64, i64 }, ptr %t376 - %t378 = load %S.ast.Type, ptr %a287 - %t379 = load { ptr, i64, i64 }, ptr %a318 - %t380 = load ptr, ptr %a1 - %t381 = load %S.ast.Type, ptr %a287 - %t382 = call i1 @finch.gen.owning(ptr %t380, %S.ast.Type %t381) - br label %logic.from4933 -logic.from4933: - br i1 %t382, label %logic.rhs4934, label %logic.end4935 -logic.rhs4934: - %t383 = load ptr, ptr %a1 - %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic4936, label %ok4937 -panic4936: - call void @finch_panic(ptr @.str.3098, i64 2225, ptr @.str.3099) - unreachable -ok4937: - %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 13 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 15 - %t387 = load i64, ptr %a270 - %t388 = load { ptr, i64, i64 }, ptr %t386 - %t389 = extractvalue { ptr, i64, i64 } %t388, 1 - %t390 = icmp uge i64 %t387, %t389 - br i1 %t390, label %range4938, label %inrange4939 -range4938: - call void @finch_panic_index(ptr @.str.3100, i64 2225, i64 %t387, i64 %t389) - unreachable -inrange4939: - %t391 = extractvalue { ptr, i64, i64 } %t388, 0 - %t392 = getelementptr inbounds i1, ptr %t391, i64 %t387 - %t393 = load i1, ptr %t392 - %t394 = xor i1 %t393, true - br label %logic.rend4940 -logic.rend4940: - br label %logic.end4935 -logic.end4935: - %t395 = phi i1 [ false, %logic.from4933 ], [ %t394, %logic.rend4940 ] - %t396 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t358, %S.ast.Node %t366, { ptr, i64, i64 } %t377, %S.ast.Type %t378, { ptr, i64, i64 } %t379, i1 false, i1 %t395) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a1 - %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic4941, label %ok4942 -panic4941: - call void @finch_panic(ptr @.str.3101, i64 2226, ptr @.str.3102) - unreachable -ok4942: - %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 39 - store i64 0, ptr %t400 - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_ast_Type(ptr %a287) - br label %for.step4901 -for.step4901: - %t401 = load i64, ptr %a270 - %t402 = add i64 %t401, 1 - store i64 %t402, ptr %a270 - br label %for.cond4899 -for.end4902: - %t403 = load ptr, ptr %a1 - %t404 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t405 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t406 = getelementptr inbounds { ptr, i64, i64 }, ptr %t405, i32 0, i32 1 - %t407 = load i64, ptr %t406 - %t408 = sub i64 %t407, 1 - %t409 = load { ptr, i64, i64 }, ptr %t404 - %t410 = extractvalue { ptr, i64, i64 } %t409, 1 - %t411 = icmp uge i64 %t408, %t410 - br i1 %t411, label %range4943, label %inrange4944 -range4943: - call void @finch_panic_index(ptr @.str.3103, i64 2228, i64 %t408, i64 %t410) - unreachable -inrange4944: - %t412 = extractvalue { ptr, i64, i64 } %t409, 0 - %t413 = getelementptr inbounds %S.ast.Node, ptr %t412, i64 %t408 - %t414 = load %S.ast.Node, ptr %t413 - call void @finch.gen.block(ptr %t403, %S.ast.Node %t414, i1 false) - %t415 = load ptr, ptr %a1 - %t416 = icmp eq ptr %t415, null - br i1 %t416, label %panic4945, label %ok4946 -panic4945: - call void @finch_panic(ptr @.str.3104, i64 2229, ptr @.str.3105) - unreachable -ok4946: - %t417 = getelementptr inbounds %S.gen.Gen, ptr %t415, i32 0, i32 9 - %t418 = load i1, ptr %t417 - %t419 = xor i1 %t418, true - br i1 %t419, label %then4947, label %endif4949 -then4947: - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic4950, label %ok4951 -panic4950: - call void @finch_panic(ptr @.str.3106, i64 2230, ptr @.str.3107) - unreachable -ok4951: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 13 - %t423 = getelementptr inbounds %S.gen.FnSig, ptr %t422, i32 0, i32 12 - %t424 = getelementptr inbounds %S.ast.Type, ptr %t423, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.3108, i64 4, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br i1 %t429, label %then4952, label %endif4954 -then4952: - %t430 = load ptr, ptr %a1 - %t431 = load %S.ast.Node, ptr %a119 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 1 - %t433 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } { ptr @.str.3109, i64 10, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t433, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - %t437 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t437, ptr %a439 - store { ptr, i64, i64 } { ptr @.str.3110, i64 38, i64 0 }, ptr %a440 - call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) - store { ptr, i64, i64 } %t437, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a438 - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4955, label %ok4956 -panic4955: - call void @finch_panic(ptr @.str.3111, i64 2231, ptr @.str.3112) - unreachable -ok4956: - %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 13 - %t446 = getelementptr inbounds %S.gen.FnSig, ptr %t445, i32 0, i32 12 - %t447 = load %S.ast.Type, ptr %t446 - %t448 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t447) - store { ptr, i64, i64 } %t442, ptr %a450 - store { ptr, i64, i64 } %t448, ptr %a451 - call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451) - store { ptr, i64, i64 } %t442, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t448, ptr %a453 - call void @finch_str_drop(ptr %a453) - %t454 = load { ptr, i64, i64 }, ptr %a449 - call void @finch.gen.fail(ptr %t430, %S.ast.Node %t431, { ptr, i64, i64 } %t454) - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_drop(ptr %a455) - br label %endif4954 -endif4954: - %t456 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t456, i64 0) - %t457 = load ptr, ptr %a1 - %t458 = icmp eq ptr %t457, null - br i1 %t458, label %panic4957, label %ok4958 -panic4957: - call void @finch_panic(ptr @.str.3113, i64 2234, ptr @.str.3114) - unreachable -ok4958: - %t459 = getelementptr inbounds %S.gen.Gen, ptr %t457, i32 0, i32 13 - %t460 = getelementptr inbounds %S.gen.FnSig, ptr %t459, i32 0, i32 9 - %t461 = load i1, ptr %t460 - br i1 %t461, label %then4959, label %else4960 -then4959: - %t462 = load ptr, ptr %a1 - %t463 = load ptr, ptr %a1 - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic4962, label %ok4963 -panic4962: - call void @finch_panic(ptr @.str.3116, i64 2235, ptr @.str.3117) - unreachable -ok4963: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 13 - %t467 = load %S.gen.FnSig, ptr %t466 - %t468 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t463, %S.gen.FnSig %t467) - store { ptr, i64, i64 } { ptr @.str.3115, i64 4, i64 0 }, ptr %a470 - store { ptr, i64, i64 } %t468, ptr %a471 - call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) - store { ptr, i64, i64 } %t468, ptr %a472 - call void @finch_str_drop(ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.3118, i64 53, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.emit(ptr %t462, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif4961 -else4960: - %t480 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t480, { ptr, i64, i64 } { ptr @.str.3119, i64 8, i64 0 }) - br label %endif4961 -endif4961: - br label %endif4949 -endif4949: - store { ptr, i64, i64 } { ptr @.str.3120, i64 0, i64 0 }, ptr %a481 - %t482 = load i64, ptr %a151 - %t483 = icmp sge i64 %t482, 0 - br i1 %t483, label %then4964, label %endif4966 -then4964: - %t484 = load i64, ptr %a151 - call void @finch_str_from_int(ptr %a485, i64 %t484) - %t486 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.3121, i64 7, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - %t492 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t491, ptr %a481 - store { ptr, i64, i64 } %t492, ptr %a493 - call void @finch_str_drop(ptr %a493) - br label %endif4966 -endif4966: - %t494 = load ptr, ptr %a1 - %t495 = icmp eq ptr %t494, null - br i1 %t495, label %panic4967, label %ok4968 -panic4967: - call void @finch_panic(ptr @.str.3122, i64 2244, ptr @.str.3123) - unreachable -ok4968: - %t496 = getelementptr inbounds %S.gen.Gen, ptr %t494, i32 0, i32 36 - store i64 -1, ptr %t496 - %t497 = load ptr, ptr %a1 - %t498 = icmp eq ptr %t497, null - br i1 %t498, label %panic4969, label %ok4970 -panic4969: - call void @finch_panic(ptr @.str.3124, i64 2245, ptr @.str.3125) - unreachable -ok4970: - %t499 = getelementptr inbounds %S.gen.Gen, ptr %t497, i32 0, i32 3 - %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i32 0, i32 1 - %t501 = load ptr, ptr %a1 - %t502 = load ptr, ptr %a1 - %t503 = icmp eq ptr %t502, null - br i1 %t503, label %panic4971, label %ok4972 -panic4971: - call void @finch_panic(ptr @.str.3127, i64 2245, ptr @.str.3128) - unreachable -ok4972: - %t504 = getelementptr inbounds %S.gen.Gen, ptr %t502, i32 0, i32 13 - %t505 = load %S.gen.FnSig, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t501, %S.gen.FnSig %t505) - store { ptr, i64, i64 } { ptr @.str.3126, i64 16, i64 0 }, ptr %a508 - store { ptr, i64, i64 } %t506, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - store { ptr, i64, i64 } %t511, ptr %a513 - store { ptr, i64, i64 } { ptr @.str.3129, i64 1, i64 0 }, ptr %a514 - call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) - store { ptr, i64, i64 } %t511, ptr %a515 - call void @finch_str_drop(ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a512 - %t517 = load ptr, ptr %a1 - %t518 = icmp eq ptr %t517, null - br i1 %t518, label %panic4973, label %ok4974 -panic4973: - call void @finch_panic(ptr @.str.3130, i64 2245, ptr @.str.3131) - unreachable -ok4974: - %t519 = getelementptr inbounds %S.gen.Gen, ptr %t517, i32 0, i32 13 - %t520 = getelementptr inbounds %S.gen.FnSig, ptr %t519, i32 0, i32 11 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t516, ptr %a523 - store { ptr, i64, i64 } %t521, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t516, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - store { ptr, i64, i64 } %t526, ptr %a528 - store { ptr, i64, i64 } { ptr @.str.3132, i64 1, i64 0 }, ptr %a529 - call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) - store { ptr, i64, i64 } %t526, ptr %a530 - call void @finch_str_drop(ptr %a530) - %t531 = load { ptr, i64, i64 }, ptr %a527 - %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3133, i64 2, i64 0 }, ptr %a533 - call void @finch_str_join(ptr %a534, ptr %a190, ptr %a533) - %t535 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t531, ptr %a537 - store { ptr, i64, i64 } %t535, ptr %a538 - call void @finch_str_concat(ptr %a536, ptr %a537, ptr %a538) - store { ptr, i64, i64 } %t531, ptr %a539 - call void @finch_str_drop(ptr %a539) - store { ptr, i64, i64 } %t535, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a536 - store { ptr, i64, i64 } %t541, ptr %a543 - store { ptr, i64, i64 } { ptr @.str.3134, i64 1, i64 0 }, ptr %a544 - call void @finch_str_concat(ptr %a542, ptr %a543, ptr %a544) - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch_str_drop(ptr %a545) - %t546 = load { ptr, i64, i64 }, ptr %a542 - %t547 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t546, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t546, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.3135, i64 10, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - %t558 = load ptr, ptr %a1 - %t559 = icmp eq ptr %t558, null - br i1 %t559, label %panic4975, label %ok4976 -panic4975: - call void @finch_panic(ptr @.str.3136, i64 2246, ptr @.str.3137) - unreachable -ok4976: - %t560 = getelementptr inbounds %S.gen.Gen, ptr %t558, i32 0, i32 5 - %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3138, i64 1, i64 0 }, ptr %a562 - call void @finch_str_join(ptr %a563, ptr %t560, ptr %a562) - %t564 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } %t557, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - store { ptr, i64, i64 } %t557, ptr %a568 - call void @finch_str_drop(ptr %a568) - store { ptr, i64, i64 } %t564, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.3139, i64 1, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = load ptr, ptr %a1 - %t577 = icmp eq ptr %t576, null - br i1 %t577, label %panic4977, label %ok4978 -panic4977: - call void @finch_panic(ptr @.str.3140, i64 2246, ptr @.str.3141) - unreachable -ok4978: - %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 4 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3142, i64 1, i64 0 }, ptr %a580 - call void @finch_str_join(ptr %a581, ptr %t578, ptr %a580) - %t582 = load { ptr, i64, i64 }, ptr %a581 - store { ptr, i64, i64 } %t575, ptr %a584 - store { ptr, i64, i64 } %t582, ptr %a585 - call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585) - store { ptr, i64, i64 } %t575, ptr %a586 - call void @finch_str_drop(ptr %a586) - store { ptr, i64, i64 } %t582, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t588, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.3143, i64 3, i64 0 }, ptr %a591 - call void @finch_str_concat(ptr %a589, ptr %a590, ptr %a591) - store { ptr, i64, i64 } %t588, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = load { ptr, i64, i64 }, ptr %a589 - %t594 = load i64, ptr %t500 - %t595 = add i64 %t594, 1 - call void @finch_arr_reserve(ptr %t499, i64 %t595, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t596 = load ptr, ptr %t499 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - store { ptr, i64, i64 } %t593, ptr %t597 - store i64 %t595, ptr %t500 - call void @finch_str_drop(ptr %a481) - call void @finch.drop.arr_str(ptr %a190) - call void @finch.drop.arr_S_gen_Scope(ptr %a179) - call void @finch.drop.arr_str(ptr %a120) - call void @finch.drop.S_ast_Node(ptr %a119) - ret void -} - -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 %then4979, label %endif4981 -then4979: - %t5 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t5) - br label %endif4981 -endif4981: - %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a7 - br label %each.cond4982 -each.cond4982: - %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.body4983, label %each.end4985 -each.body4983: - %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 %panic4986, label %ok4987 -panic4986: - call void @finch_panic(ptr @.str.3144, i64 2256, ptr @.str.3145) - unreachable -ok4987: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 - %t19 = load i1, ptr %t18 - br i1 %t19, label %then4988, label %endif4990 -then4988: - %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.3146, i64 66, i64 0 }) - br label %endif4990 -endif4990: - %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.step4984 -each.step4984: - %t24 = load i64, ptr %a7 - %t25 = add i64 %t24, 1 - store i64 %t25, ptr %a7 - br label %each.cond4982 -each.end4985: - %t26 = load i1, ptr %a3 - br i1 %t26, label %then4991, label %endif4993 -then4991: - %t27 = load ptr, ptr %a1 - call void @finch.gen.endScope(ptr %t27) - br label %endif4993 -endif4993: - 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.drop.S_gen_Loop(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a67 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.gen.Val, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a189 = alloca %S.ast.Node, align 16 - %a190 = alloca %S.ast.Node, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca %S.gen.Loop, align 16 - %a269 = alloca %S.gen.Loop, align 16 - %a271 = alloca %S.gen.Loop, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t4 = load i64, ptr %t3 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic4994, label %ok4995 -panic4994: - call void @finch_panic(ptr @.str.3147, i64 2267, ptr @.str.3148) - unreachable -ok4995: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 37 - 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 %panic4996, label %ok4997 -panic4996: - call void @finch_panic(ptr @.str.3149, i64 2268, ptr @.str.3150) - unreachable -ok4997: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 38 - 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.3151, 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 %then4998, label %else4999 -then4998: - %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 %endif5000 -else4999: - %t26 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3152, 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 %then5001, label %else5002 -then5001: - %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 %endif5003 -else5002: - %t33 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3153, 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 %then5004, label %else5005 -then5004: - %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 %endif5006 -else5005: - %t40 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3154, 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 %then5007, label %else5008 -then5007: - %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 %range5010, label %inrange5011 -range5010: - call void @finch_panic_index(ptr @.str.3155, i64 2277, i64 0, i64 %t47) - unreachable -inrange5011: - %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.3156, 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 %then5012, label %else5013 -then5012: - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = extractvalue { ptr, i64, i64 } %t60, 1 - %t62 = icmp uge i64 0, %t61 - br i1 %t62, label %range5015, label %inrange5016 -range5015: - call void @finch_panic_index(ptr @.str.3157, i64 2278, i64 0, i64 %t61) - unreachable -inrange5016: - %t63 = extractvalue { ptr, i64, i64 } %t60, 0 - %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 0 - %t65 = load %S.ast.Node, ptr %t64 - %t66 = call %S.gen.Val @finch.gen.orElse(ptr %t58, %S.ast.Node %t65, i1 true) - call void @finch.gen.release(ptr %t57, %S.gen.Val %t66) - store %S.gen.Val %t66, ptr %a67 - call void @finch.drop.S_gen_Val(ptr %a67) - br label %endif5014 -else5013: - %t68 = load ptr, ptr %a1 - %t69 = load ptr, ptr %a1 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 0, %t72 - br i1 %t73, label %range5017, label %inrange5018 -range5017: - call void @finch_panic_index(ptr @.str.3158, i64 2280, i64 0, i64 %t72) - unreachable -inrange5018: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 0 - %t76 = load %S.ast.Node, ptr %t75 - %t77 = call %S.gen.Val @finch.gen.expr(ptr %t69, %S.ast.Node %t76) - call void @finch.gen.release(ptr %t68, %S.gen.Val %t77) - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - br label %endif5014 -endif5014: - br label %endif5009 -else5008: - %t79 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3159, i64 5, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp ne i32 %t82, 0 - br i1 %t83, label %then5019, label %else5020 -then5019: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a2 - %t86 = call %S.gen.Val @finch.gen.matchGen(ptr %t84, %S.ast.Node %t85, i1 false) - store %S.gen.Val %t86, ptr %a87 - call void @finch.drop.S_gen_Val(ptr %a87) - br label %endif5021 -else5020: - %t88 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.3160, i64 2, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then5022, label %else5023 -then5022: - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Node, ptr %a2 - call void @finch.gen.ifStmt(ptr %t93, %S.ast.Node %t94) - br label %endif5024 -else5023: - %t95 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.3161, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then5025, label %else5026 -then5025: - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Node, ptr %a2 - call void @finch.gen.whileStmt(ptr %t100, %S.ast.Node %t101) - br label %endif5027 -else5026: - %t102 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.3162, 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 %then5028, label %else5029 -then5028: - %t107 = load ptr, ptr %a1 - %t108 = load %S.ast.Node, ptr %a2 - call void @finch.gen.forStmt(ptr %t107, %S.ast.Node %t108) - br label %endif5030 -else5029: - %t109 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.3163, 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 %then5031, label %else5032 -then5031: - %t114 = load ptr, ptr %a1 - %t115 = load %S.ast.Node, ptr %a2 - call void @finch.gen.eachStmt(ptr %t114, %S.ast.Node %t115) - br label %endif5033 -else5032: - %t116 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3164, 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 %then5034, label %else5035 -then5034: - %t121 = load ptr, ptr %a1 - %t122 = load %S.ast.Node, ptr %a2 - call void @finch.gen.returnStmt(ptr %t121, %S.ast.Node %t122) - br label %endif5036 -else5035: - %t123 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3165, i64 5, i64 0 }, ptr %a125 - %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) - %t127 = icmp ne i32 %t126, 0 - br i1 %t127, label %then5037, label %else5038 -then5037: - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic5040, label %ok5041 -panic5040: - call void @finch_panic(ptr @.str.3166, i64 2295, ptr @.str.3167) - unreachable -ok5041: - %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 46 - %t131 = load i64, ptr %t130 - %t132 = icmp sgt i64 %t131, 0 - br i1 %t132, label %then5042, label %endif5044 -then5042: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } { ptr @.str.3168, i64 33, i64 0 }) - br label %endif5044 -endif5044: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic5045, label %ok5046 -panic5045: - call void @finch_panic(ptr @.str.3169, i64 2298, ptr @.str.3170) - unreachable -ok5046: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 10 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load i64, ptr %t138 - %t140 = sub i64 %t139, 1 - store i64 %t140, ptr %a141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic5047, label %ok5048 -panic5047: - call void @finch_panic(ptr @.str.3171, i64 2299, ptr @.str.3172) - unreachable -ok5048: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 10 - %t145 = load i64, ptr %a141 - %t146 = load { ptr, i64, i64 }, ptr %t144 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5049, label %inrange5050 -range5049: - call void @finch_panic_index(ptr @.str.3173, i64 2299, i64 %t145, i64 %t147) - unreachable -inrange5050: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.gen.Scope, ptr %t149, i64 %t145 - %t151 = getelementptr inbounds %S.gen.Scope, ptr %t150, i32 0, i32 3 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = insertvalue %S.gen.Cleanup zeroinitializer, i1 true, 0 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic5051, label %ok5052 -panic5051: - call void @finch_panic(ptr @.str.3174, i64 2299, ptr @.str.3175) - unreachable -ok5052: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 10 - %t157 = load i64, ptr %a141 - %t158 = load { ptr, i64, i64 }, ptr %t156 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range5053, label %inrange5054 -range5053: - call void @finch_panic_index(ptr @.str.3176, i64 2299, i64 %t157, i64 %t159) - unreachable -inrange5054: - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = getelementptr inbounds %S.gen.Scope, ptr %t161, i64 %t157 - %t163 = getelementptr inbounds %S.gen.Scope, ptr %t162, i32 0, i32 1 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 - %t165 = load i64, ptr %t164 - %t166 = insertvalue %S.gen.Cleanup %t153, i64 %t165, 1 - %t167 = load i64, ptr %t152 - %t168 = add i64 %t167, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t168, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t169 = load ptr, ptr %t151 - %t170 = getelementptr inbounds %S.gen.Cleanup, ptr %t169, i64 %t167 - store %S.gen.Cleanup %t166, ptr %t170 - store i64 %t168, ptr %t152 - %t171 = load ptr, ptr %a1 - %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic5055, label %ok5056 -panic5055: - call void @finch_panic(ptr @.str.3177, i64 2300, ptr @.str.3178) - unreachable -ok5056: - %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 10 - %t174 = load i64, ptr %a141 - %t175 = load { ptr, i64, i64 }, ptr %t173 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range5057, label %inrange5058 -range5057: - call void @finch_panic_index(ptr @.str.3179, i64 2300, i64 %t174, i64 %t176) - unreachable -inrange5058: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.gen.Scope, ptr %t178, i64 %t174 - %t180 = getelementptr inbounds %S.gen.Scope, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i32 0, i32 1 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = extractvalue { ptr, i64, i64 } %t183, 1 - %t185 = icmp uge i64 0, %t184 - br i1 %t185, label %range5059, label %inrange5060 -range5059: - call void @finch_panic_index(ptr @.str.3180, i64 2300, i64 0, i64 %t184) - unreachable -inrange5060: - %t186 = extractvalue { ptr, i64, i64 } %t183, 0 - %t187 = getelementptr inbounds %S.ast.Node, ptr %t186, i64 0 - %t188 = load %S.ast.Node, ptr %t187 - store %S.ast.Node %t188, ptr %a189 - call void @finch.copy.S_ast_Node(ptr %a190, ptr %a189) - %t191 = load %S.ast.Node, ptr %a190 - %t192 = load i64, ptr %t181 - %t193 = add i64 %t192, 1 - call void @finch_arr_reserve(ptr %t180, i64 %t193, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t194 = load ptr, ptr %t180 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t192 - store %S.ast.Node %t191, ptr %t195 - store i64 %t193, ptr %t181 - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5061, label %ok5062 -panic5061: - call void @finch_panic(ptr @.str.3181, i64 2301, ptr @.str.3182) - unreachable -ok5062: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 10 - %t199 = load i64, ptr %a141 - %t200 = load { ptr, i64, i64 }, ptr %t198 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 %t199, %t201 - br i1 %t202, label %range5063, label %inrange5064 -range5063: - call void @finch_panic_index(ptr @.str.3183, i64 2301, i64 %t199, i64 %t201) - unreachable -inrange5064: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.gen.Scope, ptr %t203, i64 %t199 - %t205 = getelementptr inbounds %S.gen.Scope, ptr %t204, i32 0, i32 2 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i32 0, i32 1 - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic5065, label %ok5066 -panic5065: - call void @finch_panic(ptr @.str.3184, i64 2301, ptr @.str.3185) - unreachable -ok5066: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 25 - %t210 = load i64, ptr %t209 - %t211 = load i64, ptr %t206 - %t212 = add i64 %t211, 1 - call void @finch_arr_reserve(ptr %t205, i64 %t212, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t213 = load ptr, ptr %t205 - %t214 = getelementptr inbounds i64, ptr %t213, i64 %t211 - store i64 %t210, ptr %t214 - store i64 %t212, ptr %t206 - br label %endif5039 -else5038: - %t215 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.3186, i64 5, i64 0 }, ptr %a217 - %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) - %t219 = icmp ne i32 %t218, 0 - br label %logic.from5067 -logic.from5067: - br i1 %t219, label %logic.end5069, label %logic.rhs5068 -logic.rhs5068: - %t220 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3187, i64 8, i64 0 }, ptr %a222 - %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) - %t224 = icmp ne i32 %t223, 0 - br label %logic.rend5070 -logic.rend5070: - br label %logic.end5069 -logic.end5069: - %t225 = phi i1 [ true, %logic.from5067 ], [ %t224, %logic.rend5070 ] - br i1 %t225, label %then5071, label %else5072 -then5071: - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic5074, label %ok5075 -panic5074: - call void @finch_panic(ptr @.str.3188, i64 2303, ptr @.str.3189) - unreachable -ok5075: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 46 - %t229 = load i64, ptr %t228 - %t230 = icmp sgt i64 %t229, 0 - br i1 %t230, label %then5076, label %endif5078 -then5076: - %t231 = load ptr, ptr %a1 - %t232 = load %S.ast.Node, ptr %a2 - %t233 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3190, i64 27, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.fail(ptr %t231, %S.ast.Node %t232, { ptr, i64, i64 } %t237) - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - br label %endif5078 -endif5078: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic5079, label %ok5080 -panic5079: - call void @finch_panic(ptr @.str.3191, i64 2306, ptr @.str.3192) - unreachable -ok5080: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 12 - %t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1 - %t243 = load i64, ptr %t242 - %t244 = icmp eq i64 %t243, 0 - br i1 %t244, label %then5081, label %endif5083 -then5081: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t247, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3193, i64 31, i64 0 }, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t251) - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_drop(ptr %a252) - br label %endif5083 -endif5083: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic5084, label %ok5085 -panic5084: - call void @finch_panic(ptr @.str.3194, i64 2309, ptr @.str.3195) - unreachable -ok5085: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 12 - %t256 = load ptr, ptr %a1 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic5086, label %ok5087 -panic5086: - call void @finch_panic(ptr @.str.3196, i64 2309, ptr @.str.3197) - unreachable -ok5087: - %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 12 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load i64, ptr %t259 - %t261 = sub i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %t255 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range5088, label %inrange5089 -range5088: - call void @finch_panic_index(ptr @.str.3198, i64 2309, i64 %t261, i64 %t263) - unreachable -inrange5089: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds %S.gen.Loop, ptr %t265, i64 %t261 - %t267 = load %S.gen.Loop, ptr %t266 - store %S.gen.Loop %t267, ptr %a268 - call void @finch.copy.S_gen_Loop(ptr %a269, ptr %a268) - %t270 = load %S.gen.Loop, ptr %a269 - store %S.gen.Loop %t270, ptr %a271 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 3 - %t274 = load i64, ptr %t273 - call void @finch.gen.dropPending(ptr %t272, i64 %t274) - %t275 = load ptr, ptr %a1 - %t276 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 2 - %t277 = load i64, ptr %t276 - call void @finch.gen.unwind(ptr %t275, i64 %t277) - %t278 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.3199, i64 5, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - br i1 %t282, label %then5090, label %else5091 -then5090: - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - call void @finch.gen.br(ptr %t283, { ptr, i64, i64 } %t285) - br label %endif5092 -else5091: - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 0 - %t288 = load { ptr, i64, i64 }, ptr %t287 - call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t288) - br label %endif5092 -endif5092: - call void @finch.drop.S_gen_Loop(ptr %a271) - br label %endif5073 -else5072: - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Node, ptr %a2 - %t291 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3200, i64 18, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t289, %S.ast.Node %t290, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - br label %endif5073 -endif5073: - br label %endif5039 -endif5039: - br label %endif5036 -endif5036: - br label %endif5033 -endif5033: - br label %endif5030 -endif5030: - br label %endif5027 -endif5027: - br label %endif5024 -endif5024: - br label %endif5021 -endif5021: - br label %endif5009 -endif5009: - br label %endif5006 -endif5006: - br label %endif5003 -endif5003: - br label %endif5000 -endif5000: - call void @finch_str_drop(ptr %a18) - 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.gen.Val, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.gen.Val, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then5093, label %endif5095 -then5093: - %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 %range5096, label %inrange5097 -range5096: - call void @finch_panic_index(ptr @.str.3201, i64 2324, i64 0, i64 %t9) - unreachable -inrange5097: - %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.3202, 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 %then5098, label %endif5100 -then5098: - %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 %range5101, label %inrange5102 -range5101: - call void @finch_panic_index(ptr @.str.3203, i64 2326, i64 0, i64 %t26) - unreachable -inrange5102: - %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.3204, i64 46, i64 0 }) - br label %endif5100 -endif5100: - %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.3205, 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 %then5103, label %endif5105 -then5103: - %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 %range5106, label %inrange5107 -range5106: - call void @finch_panic_index(ptr @.str.3206, i64 2329, i64 0, i64 %t41) - unreachable -inrange5107: - %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.3207, 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.3208, i64 7, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t56) - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - br label %endif5105 -endif5105: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 - %t63 = load %S.ast.Type, ptr %t62 - %t64 = load ptr, ptr %a1 - %t65 = load %S.gen.Val, ptr %a15 - %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) - %t67 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t63, { ptr, i64, i64 } %t66, i1 false, i1 true) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - store { ptr, i64, i64 } %t67, ptr %a69 - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_gen_Val(ptr %a15) - ret void -endif5095: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = call %S.ast.Type @finch.gen.resolve(ptr %t70, %S.ast.Type %t72, %S.ast.Node %t73) - store %S.ast.Type %t74, ptr %a75 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load i64, ptr %t77 - %t79 = icmp eq i64 %t78, 0 - br i1 %t79, label %then5108, label %endif5110 -then5108: - %t80 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 0 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3209, i64 6, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.from5111 -logic.from5111: - br i1 %t85, label %logic.rhs5112, label %logic.end5113 -logic.rhs5112: - %t86 = load ptr, ptr %a1 - %t87 = load %S.ast.Type, ptr %a75 - %t88 = call i1 @finch.gen.hasDefaults(ptr %t86, %S.ast.Type %t87) - br label %logic.rend5114 -logic.rend5114: - br label %logic.end5113 -logic.end5113: - %t89 = phi i1 [ false, %logic.from5111 ], [ %t88, %logic.rend5114 ] - br i1 %t89, label %then5115, label %endif5117 -then5115: - store { ptr, i64, i64 } zeroinitializer, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 3 - %t95 = load { ptr, i64, i64 }, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 2 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = call i64 @finch.gen.findStruct(ptr %t93, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t97) - %t99 = load { ptr, i64, i64 }, ptr %a90 - %t100 = load { ptr, i64, i64 }, ptr %a91 - %t101 = load %S.ast.Node, ptr %a2 - %t102 = call %S.gen.Val @finch.gen.construct(ptr %t92, i64 %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100, %S.ast.Node %t101) - store %S.gen.Val %t102, ptr %a103 - %t104 = load ptr, ptr %a1 - %t105 = load %S.ast.Node, ptr %a2 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t107 = load { ptr, i64, i64 }, ptr %t106 - %t108 = load %S.ast.Type, ptr %a75 - %t109 = getelementptr inbounds %S.gen.Val, ptr %a103, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } %t107, %S.ast.Type %t108, { ptr, i64, i64 } %t110, i1 false, i1 true) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - call void @finch.drop.S_gen_Val(ptr %a103) - call void @finch.drop.arr_str(ptr %a91) - call void @finch.drop.arr_S_ast_Node(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5117: - %t113 = load ptr, ptr %a1 - %t114 = load %S.ast.Node, ptr %a2 - %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = load %S.ast.Type, ptr %a75 - %t118 = load %S.ast.Type, ptr %a75 - %t119 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t118) - %t120 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t113, %S.ast.Node %t114, { ptr, i64, i64 } %t116, %S.ast.Type %t117, { ptr, i64, i64 } %t119, i1 false, i1 true) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5110: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 0, %t127 - br i1 %t128, label %range5118, label %inrange5119 -range5118: - call void @finch_panic_index(ptr @.str.3210, i64 2346, i64 0, i64 %t127) - unreachable -inrange5119: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 0 - %t131 = load %S.ast.Node, ptr %t130 - %t132 = load %S.ast.Type, ptr %a75 - %t133 = call %S.gen.Val @finch.gen.exprWant(ptr %t124, %S.ast.Node %t131, %S.ast.Type %t132) - %t134 = load %S.ast.Type, ptr %a75 - %t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t136 = load { ptr, i64, i64 }, ptr %t135 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 0, %t137 - br i1 %t138, label %range5120, label %inrange5121 -range5120: - call void @finch_panic_index(ptr @.str.3211, i64 2346, i64 0, i64 %t137) - unreachable -inrange5121: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 0 - %t141 = load %S.ast.Node, ptr %t140 - %t142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t143 = load { ptr, i64, i64 }, ptr %t142 - store { ptr, i64, i64 } { ptr @.str.3212, i64 1, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.3213, i64 1, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t123, %S.gen.Val %t133, %S.ast.Type %t134, %S.ast.Node %t141, { ptr, i64, i64 } %t152) - store %S.gen.Val %t133, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_drop(ptr %a155) - store %S.gen.Val %t153, ptr %a156 - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a2 - %t159 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = load %S.ast.Type, ptr %a75 - %t162 = load ptr, ptr %a1 - %t163 = load %S.gen.Val, ptr %a156 - %t164 = call { ptr, i64, i64 } @finch.gen.own(ptr %t162, %S.gen.Val %t163) - %t165 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t160, %S.ast.Type %t161, { ptr, i64, i64 } %t164, i1 false, i1 true) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Val(ptr %a156) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -} - -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 %panic5122, label %ok5123 -panic5122: - call void @finch_panic(ptr @.str.3214, i64 2351, ptr @.str.3215) - unreachable -ok5123: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load ptr, ptr %a1 - %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t8 = load { ptr, i64, i64 }, ptr %t7 - %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 %range5124, label %inrange5125 -range5124: - call void @finch_panic_index(ptr @.str.3216, i64 2351, i64 %t11, i64 %t13) - unreachable -inrange5125: - %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 %then5126, label %endif5128 -then5126: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -endif5128: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic5129, label %ok5130 -panic5129: - call void @finch_panic(ptr @.str.3217, i64 2355, ptr @.str.3218) - unreachable -ok5130: - %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 %range5131, label %inrange5132 -range5131: - call void @finch_panic_index(ptr @.str.3219, i64 2355, i64 %t28, i64 %t30) - unreachable -inrange5132: - %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 %range5133, label %inrange5134 -range5133: - call void @finch_panic_index(ptr @.str.3220, i64 2355, i64 %t36, i64 %t38) - unreachable -inrange5134: - %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.cond5135 -each.cond5135: - %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.body5136, label %each.end5138 -each.body5136: - %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 %then5139, label %endif5141 -then5139: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 true -endif5141: - br label %each.step5137 -each.step5137: - %t56 = load i64, ptr %a43 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a43 - br label %each.cond5135 -each.end5138: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -} - -define internal void @finch.drop.S_gen_Place(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca %S.gen.Var, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca %S.ast.Type, align 16 - %a105 = alloca i1, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca i64, align 16 - %a122 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.gen.Var, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a141 = alloca %S.gen.Val, align 16 - %a152 = alloca %S.gen.Val, align 16 - %a158 = alloca i64, align 16 - %a164 = alloca %S.gen.Place, align 16 - %a179 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.gen.Val, align 16 - %a237 = alloca i64, align 16 - %a243 = alloca %S.gen.Place, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.gen.Val, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.gen.Val, align 16 - %a280 = alloca %S.gen.Val, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t4 = load { ptr, i64, i64 }, ptr %t3 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range5142, label %inrange5143 -range5142: - call void @finch_panic_index(ptr @.str.3221, i64 2364, i64 0, i64 %t5) - unreachable -inrange5143: - %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 %then5144, label %endif5146 -then5144: - %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.from5147 -logic.from5147: - br i1 %t25, label %logic.rhs5148, label %logic.end5149 -logic.rhs5148: - %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.3222, 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.rend5150 -logic.rend5150: - br label %logic.end5149 -logic.end5149: - %t32 = phi i1 [ false, %logic.from5147 ], [ %t31, %logic.rend5150 ] - br i1 %t32, label %then5151, label %endif5153 -then5151: - %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.3223, 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.3224, i64 18, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3225, i64 8, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_drop(ptr %a56) - br label %endif5153 -endif5153: - %t57 = load i64, ptr %a23 - %t58 = icmp sge i64 %t57, 0 - br label %logic.from5154 -logic.from5154: - br i1 %t58, label %logic.rhs5155, label %logic.end5156 -logic.rhs5155: - %t59 = load ptr, ptr %a1 - %t60 = load i64, ptr %a23 - %t61 = call %S.gen.Var @finch.gen.varAt(ptr %t59, i64 %t60) - %t62 = extractvalue %S.gen.Var %t61, 3 - store %S.gen.Var %t61, ptr %a63 - call void @finch.drop.S_gen_Var(ptr %a63) - br label %logic.rend5157 -logic.rend5157: - br label %logic.end5156 -logic.end5156: - %t64 = phi i1 [ false, %logic.from5154 ], [ %t62, %logic.rend5157 ] - br i1 %t64, label %then5158, label %endif5160 -then5158: - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Node, ptr %a2 - %t67 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3226, i64 19, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.3227, i64 18, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t65, %S.ast.Node %t66, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif5160 -endif5160: - br label %endif5146 -endif5146: - store { ptr, i64, i64 } { ptr @.str.3228, i64 9, i64 0 }, ptr %a78 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3229, i64 3, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %then5161, label %endif5163 -then5161: - %t85 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3230, i64 1, i64 0 }, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3231, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t94, ptr %a78 - store { ptr, i64, i64 } %t95, ptr %a96 - call void @finch_str_drop(ptr %a96) - br label %endif5163 -endif5163: - %t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.3232, i64 1, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then5164, label %endif5166 -then5164: - %t103 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3233, i64 4, i64 0 }) - store %S.ast.Type %t103, ptr %a104 - store i1 false, ptr %a105 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3234, i64 3, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then5167, label %endif5169 -then5167: - %t112 = load ptr, ptr %a1 - %t113 = load { ptr, i64, i64 }, ptr %a16 - %t114 = call i64 @finch.gen.lookup(ptr %t112, { ptr, i64, i64 } %t113) - store i64 %t114, ptr %a115 - %t116 = load i64, ptr %a115 - %t117 = icmp sge i64 %t116, 0 - br i1 %t117, label %then5170, label %endif5172 -then5170: - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a115 - %t120 = call %S.gen.Var @finch.gen.varAt(ptr %t118, i64 %t119) - %t121 = extractvalue %S.gen.Var %t120, 1 - store %S.ast.Type %t121, ptr %a122 - call void @finch.copy.S_ast_Type(ptr %a123, ptr %a122) - %t124 = load %S.ast.Type, ptr %a123 - store %S.gen.Var %t120, ptr %a125 - call void @finch.drop.S_gen_Var(ptr %a125) - %t126 = load %S.ast.Type, ptr %a104 - store %S.ast.Type %t124, ptr %a104 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - store i1 true, ptr %a105 - br label %endif5172 -endif5172: - br label %endif5169 -endif5169: - store %S.gen.Val zeroinitializer, ptr %a128 - %t129 = load i1, ptr %a105 - br i1 %t129, label %then5173, label %else5174 -then5173: - %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 %range5176, label %inrange5177 -range5176: - call void @finch_panic_index(ptr @.str.3235, i64 2392, i64 1, i64 %t133) - unreachable -inrange5177: - %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 = load %S.ast.Type, ptr %a104 - %t139 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t138) - %t140 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t139, ptr %a128 - store %S.gen.Val %t140, ptr %a141 - call void @finch.drop.S_gen_Val(ptr %a141) - br label %endif5175 -else5174: - %t142 = load ptr, ptr %a1 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load { ptr, i64, i64 }, ptr %t143 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 1, %t145 - br i1 %t146, label %range5178, label %inrange5179 -range5178: - call void @finch_panic_index(ptr @.str.3236, i64 2394, i64 1, i64 %t145) - unreachable -inrange5179: - %t147 = extractvalue { ptr, i64, i64 } %t144, 0 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 1 - %t149 = load %S.ast.Node, ptr %t148 - %t150 = call %S.gen.Val @finch.gen.expr(ptr %t142, %S.ast.Node %t149) - %t151 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t150, ptr %a128 - store %S.gen.Val %t151, ptr %a152 - call void @finch.drop.S_gen_Val(ptr %a152) - br label %endif5175 -endif5175: - %t153 = load ptr, ptr %a1 - %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic5180, label %ok5181 -panic5180: - call void @finch_panic(ptr @.str.3237, i64 2396, ptr @.str.3238) - unreachable -ok5181: - %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 11 - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i32 0, i32 1 - %t157 = load i64, ptr %t156 - store i64 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t159, %S.gen.Val %t160) - %t161 = load ptr, ptr %a1 - %t162 = load %S.ast.Node, ptr %a13 - %t163 = call %S.gen.Place @finch.gen.place(ptr %t161, %S.ast.Node %t162, i1 true) - store %S.gen.Place %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = load %S.gen.Val, ptr %a128 - %t167 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t168 = load %S.ast.Type, ptr %t167 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = load { ptr, i64, i64 }, ptr %t169 - %t171 = extractvalue { ptr, i64, i64 } %t170, 1 - %t172 = icmp uge i64 1, %t171 - br i1 %t172, label %range5182, label %inrange5183 -range5182: - call void @finch_panic_index(ptr @.str.3239, i64 2399, i64 1, i64 %t171) - unreachable -inrange5183: - %t173 = extractvalue { ptr, i64, i64 } %t170, 0 - %t174 = getelementptr inbounds %S.ast.Node, ptr %t173, i64 1 - %t175 = load %S.ast.Node, ptr %t174 - %t176 = load { ptr, i64, i64 }, ptr %a78 - %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t165, %S.gen.Val %t166, %S.ast.Type %t168, %S.ast.Node %t175, { ptr, i64, i64 } %t176) - %t178 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t177, ptr %a128 - store %S.gen.Val %t178, ptr %a179 - call void @finch.drop.S_gen_Val(ptr %a179) - %t180 = load ptr, ptr %a1 - %t181 = load %S.gen.Val, ptr %a128 - %t182 = call { ptr, i64, i64 } @finch.gen.own(ptr %t180, %S.gen.Val %t181) - store { ptr, i64, i64 } %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t186 = load %S.ast.Type, ptr %t185 - %t187 = call i1 @finch.gen.owning(ptr %t184, %S.ast.Type %t186) - br i1 %t187, label %then5184, label %else5185 -then5184: - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t191 = load %S.ast.Type, ptr %t190 - %t192 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t189, %S.ast.Type %t191) - %t193 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t195, ptr %a197 - %t198 = load ptr, ptr %a1 - %t199 = load ptr, ptr %a1 - %t200 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t201 = load %S.ast.Type, ptr %t200 - %t202 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t201) - %t203 = load { ptr, i64, i64 }, ptr %a183 - %t204 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t205 = load { ptr, i64, i64 }, ptr %t204 - call void @finch.gen.store(ptr %t198, { ptr, i64, i64 } %t202, { ptr, i64, i64 } %t203, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a197 - %t209 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t210 = load %S.ast.Type, ptr %t209 - call void @finch.gen.dropValue(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t210) - call void @finch_str_drop(ptr %a197) - br label %endif5186 -else5185: - %t211 = load ptr, ptr %a1 - %t212 = load ptr, ptr %a1 - %t213 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t214 = load %S.ast.Type, ptr %t213 - %t215 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t212, %S.ast.Type %t214) - %t216 = load { ptr, i64, i64 }, ptr %a183 - %t217 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - call void @finch.gen.store(ptr %t211, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - br label %endif5186 -endif5186: - %t220 = load ptr, ptr %a1 - %t221 = load i64, ptr %a158 - call void @finch.gen.heldEnd(ptr %t220, i64 %t221) - call void @finch_str_drop(ptr %a183) - call void @finch.drop.S_gen_Place(ptr %a164) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Type(ptr %a104) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -endif5166: - %t222 = load ptr, ptr %a1 - %t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t224 = load { ptr, i64, i64 }, ptr %t223 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 1, %t225 - br i1 %t226, label %range5187, label %inrange5188 -range5187: - call void @finch_panic_index(ptr @.str.3240, i64 2411, i64 1, i64 %t225) - unreachable -inrange5188: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.ast.Node, ptr %t227, i64 1 - %t229 = load %S.ast.Node, ptr %t228 - %t230 = call %S.gen.Val @finch.gen.expr(ptr %t222, %S.ast.Node %t229) - store %S.gen.Val %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = icmp eq ptr %t232, null - br i1 %t233, label %panic5189, label %ok5190 -panic5189: - call void @finch_panic(ptr @.str.3241, i64 2412, ptr @.str.3242) - unreachable -ok5190: - %t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 11 - %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t236 = load i64, ptr %t235 - store i64 %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = load %S.gen.Val, ptr %a231 - call void @finch.gen.hold(ptr %t238, %S.gen.Val %t239) - %t240 = load ptr, ptr %a1 - %t241 = load %S.ast.Node, ptr %a13 - %t242 = call %S.gen.Place @finch.gen.place(ptr %t240, %S.ast.Node %t241, i1 true) - store %S.gen.Place %t242, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load ptr, ptr %a1 - %t246 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t245, %S.ast.Type %t247) - %t249 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.load(ptr %t244, { ptr, i64, i64 } %t248, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 - %t254 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t253, %S.ast.Type %t258, 1 - store %S.gen.Val %t259, ptr %a260 - %t261 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t262 = load { ptr, i64, i64 }, ptr %t261 - store { ptr, i64, i64 } %t262, ptr %a263 - call void @finch_str_sub(ptr %a264, ptr %a263, i64 0, i64 1, ptr @.str.3243, i64 2416) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t265, ptr %a266 - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load { ptr, i64, i64 }, ptr %a266 - %t270 = load %S.gen.Val, ptr %a260 - %t271 = load %S.gen.Val, ptr %a231 - %t272 = load %S.ast.Node, ptr %a2 - %t273 = call %S.gen.Val @finch.gen.arith(ptr %t268, { ptr, i64, i64 } %t269, %S.gen.Val %t270, %S.gen.Val %t271, %S.ast.Node %t272) - %t274 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t275 = load %S.ast.Type, ptr %t274 - %t276 = load %S.ast.Node, ptr %a2 - %t277 = load { ptr, i64, i64 }, ptr %a78 - %t278 = call %S.gen.Val @finch.gen.coerce(ptr %t267, %S.gen.Val %t273, %S.ast.Type %t275, %S.ast.Node %t276, { ptr, i64, i64 } %t277) - store %S.gen.Val %t273, ptr %a279 - call void @finch.drop.S_gen_Val(ptr %a279) - store %S.gen.Val %t278, ptr %a280 - %t281 = load ptr, ptr %a1 - %t282 = load %S.gen.Val, ptr %a280 - %t283 = call { ptr, i64, i64 } @finch.gen.own(ptr %t281, %S.gen.Val %t282) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t288 = load %S.ast.Type, ptr %t287 - %t289 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t286, %S.ast.Type %t288) - %t290 = load { ptr, i64, i64 }, ptr %a284 - %t291 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } %t289, { ptr, i64, i64 } %t290, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load ptr, ptr %a1 - %t295 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t296 = load %S.ast.Type, ptr %t295 - %t297 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t296) - br i1 %t297, label %then5191, label %endif5193 -then5191: - %t298 = load ptr, ptr %a1 - %t299 = getelementptr inbounds %S.gen.Val, ptr %a260, i32 0, i32 0 - %t300 = load { ptr, i64, i64 }, ptr %t299 - %t301 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t302 = load %S.ast.Type, ptr %t301 - call void @finch.gen.dropValue(ptr %t298, { ptr, i64, i64 } %t300, %S.ast.Type %t302) - br label %endif5193 -endif5193: - %t303 = load ptr, ptr %a1 - %t304 = load i64, ptr %a237 - call void @finch.gen.heldEnd(ptr %t303, i64 %t304) - call void @finch_str_drop(ptr %a284) - call void @finch.drop.S_gen_Val(ptr %a280) - call void @finch_str_drop(ptr %a266) - call void @finch.drop.S_gen_Val(ptr %a260) - call void @finch.drop.S_gen_Place(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a231) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -} - -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 - %a10 = alloca %S.gen.Val, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Node, ptr %a2 - %t6 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t5) - %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3244, 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.3245, i64 11, i64 0 }) - store %S.gen.Val %t6, ptr %a10 - call void @finch.drop.S_gen_Val(ptr %a10) - store %S.ast.Type %t7, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - %t12 = extractvalue %S.gen.Val %t9, 0 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store %S.gen.Val %t9, ptr %a16 - call void @finch.drop.S_gen_Val(ptr %a16) - ret { ptr, i64, i64 } %t15 -} - -define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) { -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 %range5194, label %inrange5195 -range5194: - call void @finch_panic_index(ptr @.str.3246, i64 2431, i64 0, i64 %t6) - unreachable -inrange5195: - %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.3247, 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.3248, 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.3249, 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 %then5196, label %else5197 -then5196: - %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 %endif5198 -else5197: - %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 %endif5198 -endif5198: - %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 %range5199, label %inrange5200 -range5199: - call void @finch_panic_index(ptr @.str.3250, i64 2441, i64 1, i64 %t39) - unreachable -inrange5200: - %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 %panic5201, label %ok5202 -panic5201: - call void @finch_panic(ptr @.str.3251, i64 2442, ptr @.str.3252) - unreachable -ok5202: - %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 %then5203, label %else5204 -then5203: - %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 %range5206, label %inrange5207 -range5206: - call void @finch_panic_index(ptr @.str.3253, i64 2446, i64 2, i64 %t61) - unreachable -inrange5207: - %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.from5208 -logic.from5208: - br i1 %t66, label %logic.end5210, label %logic.rhs5209 -logic.rhs5209: - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic5211, label %ok5212 -panic5211: - call void @finch_panic(ptr @.str.3254, i64 2447, ptr @.str.3255) - unreachable -ok5212: - %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.rend5213 -logic.rend5213: - br label %logic.end5210 -logic.end5210: - %t72 = phi i1 [ true, %logic.from5208 ], [ %t71, %logic.rend5213 ] - 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 %endif5205 -else5204: - store i1 true, ptr %a49 - br label %endif5205 -endif5205: - %t75 = load i1, ptr %a49 - br i1 %t75, label %then5214, label %endif5216 -then5214: - %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 %endif5216 -endif5216: - call void @finch_str_drop(ptr %a21) - call void @finch_str_drop(ptr %a18) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a12) - ret void -} - -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 - %a99 = alloca i1, align 16 - %a118 = alloca %S.gen.Loop, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3256, 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.3257, 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.3258, 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 %range5217, label %inrange5218 -range5217: - call void @finch_panic_index(ptr @.str.3259, i64 2463, i64 0, i64 %t18) - unreachable -inrange5218: - %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.3260, 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.from5219 -logic.from5219: - br i1 %t27, label %logic.rhs5220, label %logic.end5221 -logic.rhs5220: - %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 %range5222, label %inrange5223 -range5222: - call void @finch_panic_index(ptr @.str.3261, i64 2463, i64 0, i64 %t30) - unreachable -inrange5223: - %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.3262, 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.rend5224 -logic.rend5224: - br label %logic.end5221 -logic.end5221: - %t40 = phi i1 [ false, %logic.from5219 ], [ %t39, %logic.rend5224 ] - 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 %range5225, label %inrange5226 -range5225: - call void @finch_panic_index(ptr @.str.3263, i64 2464, i64 0, i64 %t45) - unreachable -inrange5226: - %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 %then5227, label %else5228 -then5227: - %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 %endif5229 -else5228: - %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 %endif5229 -endif5229: - %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 %panic5230, label %ok5231 -panic5230: - call void @finch_panic(ptr @.str.3264, i64 2471, ptr @.str.3265) - unreachable -ok5231: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 12 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t65, ptr %a66 - 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 %panic5232, label %ok5233 -panic5232: - call void @finch_panic(ptr @.str.3266, i64 2471, ptr @.str.3267) - unreachable -ok5233: - %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 ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic5234, label %ok5235 -panic5234: - call void @finch_panic(ptr @.str.3268, i64 2471, ptr @.str.3269) - unreachable -ok5235: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 11 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.gen.Loop %t80, i64 %t85, 3 - %t87 = load i64, ptr %t64 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t63, i64 %t88, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t63 - %t90 = getelementptr inbounds %S.gen.Loop, ptr %t89, i64 %t87 - store %S.gen.Loop %t86, ptr %t90 - store i64 %t88, ptr %t64 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 1, %t93 - br i1 %t94, label %range5236, label %inrange5237 -range5236: - call void @finch_panic_index(ptr @.str.3270, i64 2472, i64 1, i64 %t93) - unreachable -inrange5237: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 1 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i1 @finch.gen.countBreaks(%S.ast.Node %t97) - store i1 %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t102 = load { ptr, i64, i64 }, ptr %t101 - %t103 = extractvalue { ptr, i64, i64 } %t102, 1 - %t104 = icmp uge i64 1, %t103 - br i1 %t104, label %range5238, label %inrange5239 -range5238: - call void @finch_panic_index(ptr @.str.3271, i64 2473, i64 1, i64 %t103) - unreachable -inrange5239: - %t105 = extractvalue { ptr, i64, i64 } %t102, 0 - %t106 = getelementptr inbounds %S.ast.Node, ptr %t105, i64 1 - %t107 = load %S.ast.Node, ptr %t106 - call void @finch.gen.block(ptr %t100, %S.ast.Node %t107, i1 true) - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic5240, label %ok5241 -panic5240: - call void @finch_panic(ptr @.str.3272, i64 2474, ptr @.str.3273) - unreachable -ok5241: - %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 12 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp eq i64 %t112, 0 - br i1 %t113, label %panic5242, label %ok5243 -panic5242: - call void @finch_panic(ptr @.str.3274, i64 2474, ptr @.str.3275) - unreachable -ok5243: - %t114 = sub i64 %t112, 1 - %t115 = load ptr, ptr %t110 - %t116 = getelementptr inbounds %S.gen.Loop, ptr %t115, i64 %t114 - %t117 = load %S.gen.Loop, ptr %t116 - store i64 %t114, ptr %t111 - store %S.gen.Loop %t117, ptr %a118 - call void @finch.drop.S_gen_Loop(ptr %a118) - %t119 = load ptr, ptr %a1 - %t120 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.br(ptr %t119, { ptr, i64, i64 } %t120) - %t121 = load i1, ptr %a41 - %t122 = xor i1 %t121, true - br label %logic.from5244 -logic.from5244: - br i1 %t122, label %logic.end5246, label %logic.rhs5245 -logic.rhs5245: - %t123 = load i1, ptr %a99 - br label %logic.rend5247 -logic.rend5247: - br label %logic.end5246 -logic.end5246: - %t124 = phi i1 [ true, %logic.from5244 ], [ %t123, %logic.rend5247 ] - br i1 %t124, label %then5248, label %endif5250 -then5248: - %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a11 - call void @finch.gen.label(ptr %t125, { ptr, i64, i64 } %t126) - br label %endif5250 -endif5250: - call void @finch_str_drop(ptr %a51) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a5) - ret void -} - -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.3276, 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 %then5251, label %endif5253 -then5251: - ret i1 true -endif5253: - %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.3277, 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.from5254 -logic.from5254: - br i1 %t13, label %logic.end5256, label %logic.rhs5255 -logic.rhs5255: - %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.3278, 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.rend5257 -logic.rend5257: - br label %logic.end5256 -logic.end5256: - %t20 = phi i1 [ true, %logic.from5254 ], [ %t19, %logic.rend5257 ] - br label %logic.from5258 -logic.from5258: - br i1 %t20, label %logic.end5260, label %logic.rhs5259 -logic.rhs5259: - %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.3279, 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.rend5261 -logic.rend5261: - br label %logic.end5260 -logic.end5260: - %t27 = phi i1 [ true, %logic.from5258 ], [ %t26, %logic.rend5261 ] - br i1 %t27, label %then5262, label %endif5264 -then5262: - ret i1 false -endif5264: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a29 - br label %each.cond5265 -each.cond5265: - %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.body5266, label %each.end5268 -each.body5266: - %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 %then5269, label %endif5271 -then5269: - ret i1 true -endif5271: - br label %each.step5267 -each.step5267: - %t40 = load i64, ptr %a29 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a29 - br label %each.cond5265 -each.end5268: - 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 - %a22 = alloca %S.gen.Val, align 16 - %a23 = alloca %S.ast.Type, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.gen.Val, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.gen.Val, align 16 - %a50 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca %S.gen.Val, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.gen.Loop, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5272, label %inrange5273 -range5272: - call void @finch_panic_index(ptr @.str.3280, i64 2498, i64 0, i64 %t7) - unreachable -inrange5273: - %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.3281, 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 %range5274, label %inrange5275 -range5274: - call void @finch_panic_index(ptr @.str.3282, i64 2498, i64 0, i64 %t16) - unreachable -inrange5275: - %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.3283, i64 20, i64 0 }) - store %S.gen.Val %t12, ptr %a22 - call void @finch.drop.S_gen_Val(ptr %a22) - store %S.ast.Type %t13, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - %t24 = extractvalue %S.gen.Val %t21, 0 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - store %S.gen.Val %t21, ptr %a28 - call void @finch.drop.S_gen_Val(ptr %a28) - store { ptr, i64, i64 } %t27, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = load ptr, ptr %a1 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t33 = load { ptr, i64, i64 }, ptr %t32 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 1, %t34 - br i1 %t35, label %range5276, label %inrange5277 -range5276: - call void @finch_panic_index(ptr @.str.3284, i64 2499, i64 1, i64 %t34) - unreachable -inrange5277: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 1 - %t38 = load %S.ast.Node, ptr %t37 - %t39 = call %S.gen.Val @finch.gen.expr(ptr %t31, %S.ast.Node %t38) - %t40 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3285, i64 3, i64 0 }) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 1, %t43 - br i1 %t44, label %range5278, label %inrange5279 -range5278: - call void @finch_panic_index(ptr @.str.3286, i64 2499, i64 1, i64 %t43) - unreachable -inrange5279: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Node, ptr %t45, i64 1 - %t47 = load %S.ast.Node, ptr %t46 - %t48 = call %S.gen.Val @finch.gen.coerce(ptr %t30, %S.gen.Val %t39, %S.ast.Type %t40, %S.ast.Node %t47, { ptr, i64, i64 } { ptr @.str.3287, i64 18, i64 0 }) - store %S.gen.Val %t39, ptr %a49 - call void @finch.drop.S_gen_Val(ptr %a49) - store %S.ast.Type %t40, ptr %a50 - call void @finch.drop.S_ast_Type(ptr %a50) - %t51 = extractvalue %S.gen.Val %t48, 0 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - store %S.gen.Val %t48, ptr %a55 - call void @finch.drop.S_gen_Val(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t57) - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3288, i64 3, i64 0 }) - %t63 = load { ptr, i64, i64 }, ptr %a29 - %t64 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t62, { ptr, i64, i64 } %t63, i1 true, i1 false) - store %S.ast.Type %t62, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t64, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.3289, i64 8, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t70, { ptr, i64, i64 } { ptr @.str.3290, i64 8, i64 0 }) - store { ptr, i64, i64 } %t71, ptr %a72 - %t73 = load ptr, ptr %a1 - %t74 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t73, { ptr, i64, i64 } { ptr @.str.3291, i64 8, i64 0 }) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3292, i64 7, i64 0 }) - store { ptr, i64, i64 } %t77, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t79, { ptr, i64, i64 } %t80) - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t81, { ptr, i64, i64 } %t82) - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a66 - %t85 = call { ptr, i64, i64 } @finch.gen.load(ptr %t83, { ptr, i64, i64 } { ptr @.str.3293, i64 3, i64 0 }, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.3294, i64 13, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.3295, i64 2, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t104, ptr %a106 - %t107 = load ptr, ptr %a1 - %t108 = load { ptr, i64, i64 }, ptr %a106 - %t109 = load { ptr, i64, i64 }, ptr %a72 - %t110 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.condBr(ptr %t107, { ptr, i64, i64 } %t108, { ptr, i64, i64 } %t109, { ptr, i64, i64 } %t110) - %t111 = load ptr, ptr %a1 - %t112 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.label(ptr %t111, { ptr, i64, i64 } %t112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic5280, label %ok5281 -panic5280: - call void @finch_panic(ptr @.str.3296, i64 2512, ptr @.str.3297) - unreachable -ok5281: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 12 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t120, 0 - %t122 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_copy(ptr %a124, ptr %a123) - %t125 = load { ptr, i64, i64 }, ptr %a124 - %t126 = insertvalue %S.gen.Loop %t121, { ptr, i64, i64 } %t125, 1 - %t127 = load ptr, ptr %a1 - %t128 = icmp eq ptr %t127, null - br i1 %t128, label %panic5282, label %ok5283 -panic5282: - call void @finch_panic(ptr @.str.3298, i64 2512, ptr @.str.3299) - unreachable -ok5283: - %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 10 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.Loop %t126, i64 %t131, 2 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic5284, label %ok5285 -panic5284: - call void @finch_panic(ptr @.str.3300, i64 2512, ptr @.str.3301) - unreachable -ok5285: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 11 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = insertvalue %S.gen.Loop %t132, i64 %t137, 3 - %t139 = load i64, ptr %t116 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t115, i64 %t140, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t115 - %t142 = getelementptr inbounds %S.gen.Loop, ptr %t141, i64 %t139 - store %S.gen.Loop %t138, ptr %t142 - store i64 %t140, ptr %t116 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 2, %t146 - br i1 %t147, label %range5286, label %inrange5287 -range5286: - call void @finch_panic_index(ptr @.str.3302, i64 2513, i64 2, i64 %t146) - unreachable -inrange5287: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i64 2 - %t150 = load %S.ast.Node, ptr %t149 - call void @finch.gen.block(ptr %t143, %S.ast.Node %t150, i1 true) - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic5288, label %ok5289 -panic5288: - call void @finch_panic(ptr @.str.3303, i64 2514, ptr @.str.3304) - unreachable -ok5289: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 12 - %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i32 0, i32 1 - %t155 = load i64, ptr %t154 - %t156 = icmp eq i64 %t155, 0 - br i1 %t156, label %panic5290, label %ok5291 -panic5290: - call void @finch_panic(ptr @.str.3305, i64 2514, ptr @.str.3306) - unreachable -ok5291: - %t157 = sub i64 %t155, 1 - %t158 = load ptr, ptr %t153 - %t159 = getelementptr inbounds %S.gen.Loop, ptr %t158, i64 %t157 - %t160 = load %S.gen.Loop, ptr %t159 - store i64 %t157, ptr %t154 - store %S.gen.Loop %t160, ptr %a161 - call void @finch.drop.S_gen_Loop(ptr %a161) - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.br(ptr %t162, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.label(ptr %t164, { ptr, i64, i64 } %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a66 - %t168 = call { ptr, i64, i64 } @finch.gen.load(ptr %t166, { ptr, i64, i64 } { ptr @.str.3307, i64 3, i64 0 }, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3309, i64 8, i64 0 }, ptr %a174 - store { ptr, i64, i64 } %t172, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.3310, i64 3, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t171, { ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.store(ptr %t170, { ptr, i64, i64 } { ptr @.str.3308, i64 3, i64 0 }, { ptr, i64, i64 } %t182, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t186, { ptr, i64, i64 } %t187) - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189) - %t190 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t190) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a106) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a72) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch_str_drop(ptr %a56) - call void @finch_str_drop(ptr %a29) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i1, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca %S.gen.Loop, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5292, label %inrange5293 -range5292: - call void @finch_panic_index(ptr @.str.3311, i64 2526, i64 0, i64 %t8) - unreachable -inrange5293: - %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 %range5294, label %inrange5295 -range5294: - call void @finch_panic_index(ptr @.str.3312, i64 2527, i64 1, i64 %t19) - unreachable -inrange5295: - %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.from5296 -logic.from5296: - br i1 %t28, label %logic.rhs5297, label %logic.end5298 -logic.rhs5297: - %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 %range5299, label %inrange5300 -range5299: - call void @finch_panic_index(ptr @.str.3313, i64 2528, i64 0, i64 %t32) - unreachable -inrange5300: - %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 %range5301, label %inrange5302 -range5301: - call void @finch_panic_index(ptr @.str.3314, i64 2528, i64 1, i64 %t40) - unreachable -inrange5302: - %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) - store { ptr, i64, i64 } %t37, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %logic.rend5303 -logic.rend5303: - br label %logic.end5298 -logic.end5298: - %t47 = phi i1 [ false, %logic.from5296 ], [ %t45, %logic.rend5303 ] - store i1 %t47, ptr %a48 - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.3315, i64 3, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.3316, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3317, i64 1, i64 0 }, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } { ptr @.str.3318, i64 0, i64 0 }, ptr %a54 - %t55 = load i1, ptr %a5 - br i1 %t55, label %then5304, label %endif5306 -then5304: - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a4 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } { ptr @.str.3320, i64 23, i64 0 }, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t65, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.3321, i64 6, i64 0 }, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - %t71 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t70, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.3322, i64 14, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.3319, i64 3, i64 0 }, { ptr, i64, i64 } %t82) - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t84, ptr %a54 - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - br label %endif5306 -endif5306: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3323, 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.3324, i64 9, i64 0 }) - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = load ptr, ptr %a1 - %t95 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t94, { ptr, i64, i64 } { ptr @.str.3325, i64 8, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t97, { ptr, i64, i64 } { ptr @.str.3326, i64 8, i64 0 }) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t100, { ptr, i64, i64 } { ptr @.str.3327, i64 7, i64 0 }) - store { ptr, i64, i64 } %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load i1, ptr %a5 - br label %logic.from5307 -logic.from5307: - br i1 %t107, label %logic.rhs5308, label %logic.end5309 -logic.rhs5308: - %t108 = load i1, ptr %a48 - br label %logic.rend5310 -logic.rend5310: - br label %logic.end5309 -logic.end5309: - %t109 = phi i1 [ false, %logic.from5307 ], [ %t108, %logic.rend5310 ] - br i1 %t109, label %then5311, label %endif5313 -then5311: - %t110 = load ptr, ptr %a1 - %t111 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t110, { ptr, i64, i64 } { ptr @.str.3328, i64 11, i64 0 }) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t113, { ptr, i64, i64 } { ptr @.str.3329, i64 8, i64 0 }) - store { ptr, i64, i64 } %t114, ptr %a115 - %t116 = load ptr, ptr %a1 - %t117 = load ptr, ptr %a1 - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Type, ptr %a4 - %t120 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t118, %S.ast.Type %t119) - store { ptr, i64, i64 } { ptr @.str.3331, i64 23, i64 0 }, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3332, i64 6, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3333, i64 14, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call { ptr, i64, i64 } @finch.gen.op(ptr %t117, { ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.3330, i64 3, i64 0 }, { ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.3334, i64 12, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.3335, i64 2, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t158, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t164) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a112 - %t168 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.condBr(ptr %t147, { ptr, i64, i64 } %t165, { ptr, i64, i64 } %t167, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t165, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load ptr, ptr %a1 - %t171 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.gen.label(ptr %t170, { ptr, i64, i64 } %t171) - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load ptr, ptr %a1 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic5314, label %ok5315 -panic5314: - call void @finch_panic(ptr @.str.3337, i64 2549, ptr @.str.3338) - unreachable -ok5315: - %t176 = getelementptr inbounds %S.gen.Gen, ptr %t174, i32 0, i32 1 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t178 = load i64, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %t176 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range5316, label %inrange5317 -range5316: - call void @finch_panic_index(ptr @.str.3339, i64 2549, i64 %t178, i64 %t180) - unreachable -inrange5317: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178 - %t184 = load { ptr, i64, i64 }, ptr %t183 - %t185 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t173, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } { ptr @.str.3336, i64 33, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.3340, i64 6, i64 0 }, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t190, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t197 = load i64, ptr %t196 - call void @finch_str_from_int(ptr %a198, i64 %t197) - %t199 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t195, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t195, ptr %a203 - call void @finch_str_drop(ptr %a203) - store { ptr, i64, i64 } %t199, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.3341, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.emit(ptr %t172, { ptr, i64, i64 } %t210) - store { ptr, i64, i64 } %t210, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t212, { ptr, i64, i64 } { ptr @.str.3342, i64 11, i64 0 }) - %t213 = load ptr, ptr %a1 - %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic5318, label %ok5319 -panic5318: - call void @finch_panic(ptr @.str.3343, i64 2551, ptr @.str.3344) - unreachable -ok5319: - %t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 9 - store i1 true, ptr %t215 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) - call void @finch_str_drop(ptr %a146) - call void @finch_str_drop(ptr %a115) - call void @finch_str_drop(ptr %a112) - br label %endif5313 -endif5313: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a51 - %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t218, { ptr, i64, i64 } { ptr @.str.3345, 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, ptr %a1 - %t225 = load %S.ast.Type, ptr %a4 - %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) - store { ptr, i64, i64 } { ptr @.str.3347, i64 23, i64 0 }, ptr %a228 - store { ptr, i64, i64 } %t226, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3348, i64 6, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t236, ptr %a239 - store { ptr, i64, i64 } %t237, ptr %a240 - call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) - store { ptr, i64, i64 } %t236, ptr %a241 - call void @finch_str_drop(ptr %a241) - %t242 = load { ptr, i64, i64 }, ptr %a238 - store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.3349, i64 14, i64 0 }, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = load { ptr, i64, i64 }, ptr %a243 - %t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t247, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } { ptr @.str.3346, i64 3, i64 0 }, { ptr, i64, i64 } %t248) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - store { ptr, i64, i64 } %t250, ptr %a252 - %t253 = load ptr, ptr %a1 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3350, i64 13, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.3351, i64 2, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t264, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a93 - %t274 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.condBr(ptr %t253, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t273, { ptr, i64, i64 } %t274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load ptr, ptr %a1 - %t277 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.label(ptr %t276, { ptr, i64, i64 } %t277) - %t278 = load ptr, ptr %a1 - %t279 = load { ptr, i64, i64 }, ptr %a3 - %t280 = load %S.ast.Type, ptr %a4 - %t281 = load { ptr, i64, i64 }, ptr %a221 - %t282 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t278, { ptr, i64, i64 } %t279, %S.ast.Type %t280, { ptr, i64, i64 } %t281) - store { ptr, i64, i64 } %t282, ptr %a283 - %t284 = load ptr, ptr %a1 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a283 - %t287 = load %S.ast.Type, ptr %a4 - %t288 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t285, { ptr, i64, i64 } %t286, %S.ast.Type %t287, i64 0) - %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t284, { ptr, i64, i64 } { ptr @.str.3352, i64 3, i64 0 }, { ptr, i64, i64 } %t288) - store { ptr, i64, i64 } %t288, ptr %a290 - call void @finch_str_drop(ptr %a290) - store { ptr, i64, i64 } %t289, ptr %a291 - %t292 = load ptr, ptr %a1 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.3353, i64 12, i64 0 }, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.3354, i64 3, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = call { ptr, i64, i64 } @finch.gen.op(ptr %t293, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t303, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a99 - %t307 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.condBr(ptr %t292, { ptr, i64, i64 } %t304, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t304, ptr %a308 - call void @finch_str_drop(ptr %a308) - %t309 = load ptr, ptr %a1 - %t310 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.label(ptr %t309, { ptr, i64, i64 } %t310) - %t311 = load ptr, ptr %a1 - %t312 = icmp eq ptr %t311, null - br i1 %t312, label %panic5320, label %ok5321 -panic5320: - call void @finch_panic(ptr @.str.3355, i64 2562, ptr @.str.3356) - unreachable -ok5321: - %t313 = getelementptr inbounds %S.gen.Gen, ptr %t311, i32 0, i32 12 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i32 0, i32 1 - %t315 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t315, ptr %a316 - call void @finch_str_copy(ptr %a317, ptr %a316) - %t318 = load { ptr, i64, i64 }, ptr %a317 - %t319 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t318, 0 - %t320 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_copy(ptr %a322, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - %t324 = insertvalue %S.gen.Loop %t319, { ptr, i64, i64 } %t323, 1 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic5322, label %ok5323 -panic5322: - call void @finch_panic(ptr @.str.3357, i64 2562, ptr @.str.3358) - unreachable -ok5323: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 10 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i32 0, i32 1 - %t329 = load i64, ptr %t328 - %t330 = insertvalue %S.gen.Loop %t324, i64 %t329, 2 - %t331 = load ptr, ptr %a1 - %t332 = icmp eq ptr %t331, null - br i1 %t332, label %panic5324, label %ok5325 -panic5324: - call void @finch_panic(ptr @.str.3359, i64 2562, ptr @.str.3360) - unreachable -ok5325: - %t333 = getelementptr inbounds %S.gen.Gen, ptr %t331, i32 0, i32 11 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 - %t335 = load i64, ptr %t334 - %t336 = insertvalue %S.gen.Loop %t330, i64 %t335, 3 - %t337 = load i64, ptr %t314 - %t338 = add i64 %t337, 1 - call void @finch_arr_reserve(ptr %t313, i64 %t338, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t339 = load ptr, ptr %t313 - %t340 = getelementptr inbounds %S.gen.Loop, ptr %t339, i64 %t337 - store %S.gen.Loop %t336, ptr %t340 - store i64 %t338, ptr %t314 - %t341 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t341) - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a16 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a283 - %t348 = load %S.ast.Type, ptr %a4 - %t349 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t346, { ptr, i64, i64 } %t347, %S.ast.Type %t348, i64 1) - %t350 = call { ptr, i64, i64 } @finch.gen.load(ptr %t342, { ptr, i64, i64 } %t345, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t345, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_drop(ptr %a352) - store { ptr, i64, i64 } %t350, ptr %a353 - %t354 = load i1, ptr %a48 - br i1 %t354, label %then5326, label %endif5328 -then5326: - %t355 = load ptr, ptr %a1 - %t356 = load { ptr, i64, i64 }, ptr %a353 - %t357 = load %S.ast.Type, ptr %a16 - %t358 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t355, { ptr, i64, i64 } %t356, %S.ast.Type %t357) - %t359 = load { ptr, i64, i64 }, ptr %a353 - store { ptr, i64, i64 } %t358, ptr %a353 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif5328 -endif5328: - %t361 = load ptr, ptr %a1 - %t362 = load %S.ast.Node, ptr %a2 - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - %t365 = load %S.ast.Type, ptr %a16 - %t366 = load { ptr, i64, i64 }, ptr %a353 - %t367 = load i1, ptr %a48 - %t368 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t364, %S.ast.Type %t365, { ptr, i64, i64 } %t366, i1 true, i1 %t367) - store { ptr, i64, i64 } %t368, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load i64, ptr %t371 - %t373 = icmp sgt i64 %t372, 0 - br i1 %t373, label %then5329, label %endif5331 -then5329: - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a27 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - %t378 = load ptr, ptr %a1 - %t379 = load { ptr, i64, i64 }, ptr %a283 - %t380 = load %S.ast.Type, ptr %a4 - %t381 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t378, { ptr, i64, i64 } %t379, %S.ast.Type %t380, i64 2) - %t382 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t377, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t377, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t381, ptr %a384 - call void @finch_str_drop(ptr %a384) - store { ptr, i64, i64 } %t382, ptr %a385 - %t386 = load i1, ptr %a48 - br i1 %t386, label %then5332, label %endif5334 -then5332: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a385 - %t389 = load %S.ast.Type, ptr %a27 - %t390 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t387, { ptr, i64, i64 } %t388, %S.ast.Type %t389) - %t391 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a385 - store { ptr, i64, i64 } %t391, ptr %a392 - call void @finch_str_drop(ptr %a392) - br label %endif5334 -endif5334: - %t393 = load ptr, ptr %a1 - %t394 = load %S.ast.Node, ptr %a2 - %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = load %S.ast.Type, ptr %a27 - %t398 = load { ptr, i64, i64 }, ptr %a385 - %t399 = load i1, ptr %a48 - %t400 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t393, %S.ast.Node %t394, { ptr, i64, i64 } %t396, %S.ast.Type %t397, { ptr, i64, i64 } %t398, i1 true, i1 %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - call void @finch_str_drop(ptr %a401) - call void @finch_str_drop(ptr %a385) - br label %endif5331 -endif5331: - %t402 = load ptr, ptr %a1 - %t403 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t404 = load { ptr, i64, i64 }, ptr %t403 - %t405 = extractvalue { ptr, i64, i64 } %t404, 1 - %t406 = icmp uge i64 1, %t405 - br i1 %t406, label %range5335, label %inrange5336 -range5335: - call void @finch_panic_index(ptr @.str.3361, i64 2576, i64 1, i64 %t405) - unreachable -inrange5336: - %t407 = extractvalue { ptr, i64, i64 } %t404, 0 - %t408 = getelementptr inbounds %S.ast.Node, ptr %t407, i64 1 - %t409 = load %S.ast.Node, ptr %t408 - call void @finch.gen.block(ptr %t402, %S.ast.Node %t409, i1 true) - %t410 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t410) - %t411 = load ptr, ptr %a1 - %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic5337, label %ok5338 -panic5337: - call void @finch_panic(ptr @.str.3362, i64 2578, ptr @.str.3363) - unreachable -ok5338: - %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 12 - %t414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t413, i32 0, i32 1 - %t415 = load i64, ptr %t414 - %t416 = icmp eq i64 %t415, 0 - br i1 %t416, label %panic5339, label %ok5340 -panic5339: - call void @finch_panic(ptr @.str.3364, i64 2578, ptr @.str.3365) - unreachable -ok5340: - %t417 = sub i64 %t415, 1 - %t418 = load ptr, ptr %t413 - %t419 = getelementptr inbounds %S.gen.Loop, ptr %t418, i64 %t417 - %t420 = load %S.gen.Loop, ptr %t419 - store i64 %t417, ptr %t414 - store %S.gen.Loop %t420, ptr %a421 - call void @finch.drop.S_gen_Loop(ptr %a421) - %t422 = load ptr, ptr %a1 - %t423 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.br(ptr %t422, { ptr, i64, i64 } %t423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = load { ptr, i64, i64 }, ptr %a51 - %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t426, { ptr, i64, i64 } { ptr @.str.3366, i64 3, i64 0 }, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t428, ptr %a429 - %t430 = load ptr, ptr %a1 - %t431 = load ptr, ptr %a1 - %t432 = load { ptr, i64, i64 }, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.3368, i64 8, i64 0 }, ptr %a434 - store { ptr, i64, i64 } %t432, ptr %a435 - call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) - %t436 = load { ptr, i64, i64 }, ptr %a433 - store { ptr, i64, i64 } %t436, ptr %a438 - store { ptr, i64, i64 } { ptr @.str.3369, i64 3, i64 0 }, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t436, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t431, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t430, { ptr, i64, i64 } { ptr @.str.3367, i64 3, i64 0 }, { ptr, i64, i64 } %t442, { ptr, i64, i64 } %t444) - store { ptr, i64, i64 } %t442, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t446, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.label(ptr %t448, { ptr, i64, i64 } %t449) - call void @finch_str_drop(ptr %a429) - call void @finch_str_drop(ptr %a353) - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a283) - call void @finch_str_drop(ptr %a252) - call void @finch_str_drop(ptr %a221) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a96) - call void @finch_str_drop(ptr %a93) - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret void -} - -define internal void @finch.drop.S_gen_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 1 - call void @finch.drop.S_gen_Place(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 2 - call void @finch.drop.S_gen_Val(ptr %t2) - ret void -} - -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.ast.Type, align 16 - %a31 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a39 = alloca %S.ast.Type, align 16 - %a42 = alloca %S.ast.Type, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca i1, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.Loop, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - 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 %range5341, label %inrange5342 -range5341: - call void @finch_panic_index(ptr @.str.3370, i64 2589, i64 0, i64 %t7) - unreachable -inrange5342: - %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.3371, i64 0, i64 0 }, ptr %a14 - %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3372, 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 %then5343, label %else5344 -then5343: - %t19 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t20 = getelementptr inbounds %S.gen.Place, ptr %t19, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - call void @finch_str_copy(ptr %a23, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - %t25 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t24, ptr %a14 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t28 = getelementptr inbounds %S.gen.Place, ptr %t27, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - store %S.ast.Type %t29, ptr %a30 - call void @finch.copy.S_ast_Type(ptr %a31, ptr %a30) - %t32 = load %S.ast.Type, ptr %a31 - %t33 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t32, ptr %a16 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - br label %endif5345 -else5344: - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t36 = getelementptr inbounds %S.gen.Val, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Type, ptr %t36 - store %S.ast.Type %t37, ptr %a38 - call void @finch.copy.S_ast_Type(ptr %a39, ptr %a38) - %t40 = load %S.ast.Type, ptr %a39 - %t41 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t40, ptr %a16 - store %S.ast.Type %t41, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic5346, label %ok5347 -panic5346: - call void @finch_panic(ptr @.str.3374, i64 2597, ptr @.str.3375) - unreachable -ok5347: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 25 - %t48 = load i64, ptr %t47 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3373, i64 5, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load %S.ast.Type, ptr %a16 - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t59 = load %S.gen.Val, ptr %t58 - %t60 = call { ptr, i64, i64 } @finch.gen.own(ptr %t57, %S.gen.Val %t59) - %t61 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t60, i1 false, i1 true) - store { ptr, i64, i64 } %t55, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t61, ptr %a14 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif5345 -endif5345: - %t66 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t67 = load { ptr, i64, i64 }, ptr %t66 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.3376, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then5348, label %endif5350 -then5348: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = load { ptr, i64, i64 }, ptr %a14 - %t75 = load %S.ast.Type, ptr %a16 - %t76 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t77 = load i1, ptr %t76 - call void @finch.gen.eachMap(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t74, %S.ast.Type %t75, i1 %t77) - %t78 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t78) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -endif5350: - %t79 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3377, i64 5, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp eq i32 %t83, 0 - br label %logic.from5351 -logic.from5351: - br i1 %t84, label %logic.rhs5352, label %logic.end5353 -logic.rhs5352: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3378, i64 3, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp eq i32 %t89, 0 - br label %logic.rend5354 -logic.rend5354: - br label %logic.end5353 -logic.end5353: - %t91 = phi i1 [ false, %logic.from5351 ], [ %t90, %logic.rend5354 ] - br i1 %t91, label %then5355, label %endif5357 -then5355: - %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 %range5358, label %inrange5359 -range5358: - call void @finch_panic_index(ptr @.str.3379, i64 2605, i64 0, i64 %t95) - unreachable -inrange5359: - %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 = load %S.ast.Type, ptr %a16 - %t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100) - store { ptr, i64, i64 } { ptr @.str.3380, i64 55, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3381, i64 36, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif5357 -endif5357: - %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3382, i64 4, i64 0 }) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3383, i64 5, i64 0 }, ptr %a118 - %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) - %t120 = icmp ne i32 %t119, 0 - br i1 %t120, label %then5360, label %endif5362 -then5360: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 0, %t123 - br i1 %t124, label %range5363, label %inrange5364 -range5363: - call void @finch_panic_index(ptr @.str.3384, i64 2609, i64 0, i64 %t123) - unreachable -inrange5364: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i64 0 - %t127 = load %S.ast.Type, ptr %t126 - store %S.ast.Type %t127, ptr %a128 - call void @finch.copy.S_ast_Type(ptr %a129, ptr %a128) - %t130 = load %S.ast.Type, ptr %a129 - %t131 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t130, ptr %a114 - store %S.ast.Type %t131, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - br label %endif5362 -endif5362: - %t133 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t134 = load i1, ptr %t133 - br label %logic.from5365 -logic.from5365: - br i1 %t134, label %logic.rhs5366, label %logic.end5367 -logic.rhs5366: - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a114 - %t137 = call i1 @finch.gen.owning(ptr %t135, %S.ast.Type %t136) - br label %logic.rend5368 -logic.rend5368: - br label %logic.end5367 -logic.end5367: - %t138 = phi i1 [ false, %logic.from5365 ], [ %t137, %logic.rend5368 ] - br label %logic.from5369 -logic.from5369: - br i1 %t138, label %logic.rhs5370, label %logic.end5371 -logic.rhs5370: - %t139 = load ptr, ptr %a1 - %t140 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t141 = load { ptr, i64, i64 }, ptr %t140 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range5372, label %inrange5373 -range5372: - call void @finch_panic_index(ptr @.str.3385, i64 2611, i64 0, i64 %t142) - unreachable -inrange5373: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 0 - %t146 = load %S.ast.Node, ptr %t145 - %t147 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t146) - %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t149 = load { ptr, i64, i64 }, ptr %t148 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 1, %t150 - br i1 %t151, label %range5374, label %inrange5375 -range5374: - call void @finch_panic_index(ptr @.str.3386, i64 2611, i64 1, i64 %t150) - unreachable -inrange5375: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 1 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = call i1 @finch.gen.mutates(ptr %t139, { ptr, i64, i64 } %t147, %S.ast.Node %t154) - store { ptr, i64, i64 } %t147, ptr %a156 - call void @finch_str_drop(ptr %a156) - br label %logic.rend5376 -logic.rend5376: - br label %logic.end5371 -logic.end5371: - %t157 = phi i1 [ false, %logic.from5369 ], [ %t155, %logic.rend5376 ] - store i1 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } { ptr @.str.3387, i64 3, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t162, { ptr, i64, i64 } { ptr @.str.3388, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3389, i64 1, i64 0 }, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3390, i64 9, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t167, { ptr, i64, i64 } { ptr @.str.3391, i64 9, i64 0 }) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t170, { ptr, i64, i64 } { ptr @.str.3392, i64 9, i64 0 }) - store { ptr, i64, i64 } %t171, ptr %a172 - %t173 = load ptr, ptr %a1 - %t174 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t173, { ptr, i64, i64 } { ptr @.str.3393, i64 8, i64 0 }) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load ptr, ptr %a1 - %t177 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t176, { ptr, i64, i64 } %t177) - %t178 = load ptr, ptr %a1 - %t179 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) - %t180 = load ptr, ptr %a1 - %t181 = load ptr, ptr %a1 - %t182 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3395, i64 46, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.3396, i64 14, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = call { ptr, i64, i64 } @finch.gen.op(ptr %t181, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t180, { ptr, i64, i64 } { ptr @.str.3394, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_drop(ptr %a195) - store { ptr, i64, i64 } %t194, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a161 - %t199 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.3397, i64 3, i64 0 }, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.3398, i64 13, i64 0 }, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t206, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3399, i64 2, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t211, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t201, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - store { ptr, i64, i64 } %t218, ptr %a220 - %t221 = load ptr, ptr %a1 - %t222 = load { ptr, i64, i64 }, ptr %a220 - %t223 = load { ptr, i64, i64 }, ptr %a169 - %t224 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.condBr(ptr %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223, { ptr, i64, i64 } %t224) - %t225 = load ptr, ptr %a1 - %t226 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.label(ptr %t225, { ptr, i64, i64 } %t226) - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a14 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } { ptr @.str.3400, i64 3, i64 0 }, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t229, ptr %a230 - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a114 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - store { ptr, i64, i64 } { ptr @.str.3401, i64 23, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3402, i64 6, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t239, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t244, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t244, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.3403, i64 6, i64 0 }, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - store { ptr, i64, i64 } %t250, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a251 - %t256 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t262, ptr %a264 - %t265 = load ptr, ptr %a1 - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Type, ptr %a114 - %t268 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t266, %S.ast.Type %t267) - %t269 = load { ptr, i64, i64 }, ptr %a264 - %t270 = call { ptr, i64, i64 } @finch.gen.load(ptr %t265, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_drop(ptr %a271) - store { ptr, i64, i64 } %t270, ptr %a272 - %t273 = load i1, ptr %a158 - br i1 %t273, label %then5377, label %endif5379 -then5377: - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a272 - %t276 = load %S.ast.Type, ptr %a114 - %t277 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276) - %t278 = load { ptr, i64, i64 }, ptr %a272 - store { ptr, i64, i64 } %t277, ptr %a272 - store { ptr, i64, i64 } %t278, ptr %a279 - call void @finch_str_drop(ptr %a279) - br label %endif5379 -endif5379: - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic5380, label %ok5381 -panic5380: - call void @finch_panic(ptr @.str.3404, i64 2631, ptr @.str.3405) - unreachable -ok5381: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - %t284 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t284, ptr %a285 - call void @finch_str_copy(ptr %a286, ptr %a285) - %t287 = load { ptr, i64, i64 }, ptr %a286 - %t288 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t287, 0 - %t289 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_copy(ptr %a291, ptr %a290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - %t293 = insertvalue %S.gen.Loop %t288, { ptr, i64, i64 } %t292, 1 - %t294 = load ptr, ptr %a1 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic5382, label %ok5383 -panic5382: - call void @finch_panic(ptr @.str.3406, i64 2631, ptr @.str.3407) - unreachable -ok5383: - %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 10 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 - %t298 = load i64, ptr %t297 - %t299 = insertvalue %S.gen.Loop %t293, i64 %t298, 2 - %t300 = load ptr, ptr %a1 - %t301 = icmp eq ptr %t300, null - br i1 %t301, label %panic5384, label %ok5385 -panic5384: - call void @finch_panic(ptr @.str.3408, i64 2631, ptr @.str.3409) - unreachable -ok5385: - %t302 = getelementptr inbounds %S.gen.Gen, ptr %t300, i32 0, i32 11 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i32 0, i32 1 - %t304 = load i64, ptr %t303 - %t305 = insertvalue %S.gen.Loop %t299, i64 %t304, 3 - %t306 = load i64, ptr %t283 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %t282, i64 %t307, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %t282 - %t309 = getelementptr inbounds %S.gen.Loop, ptr %t308, i64 %t306 - store %S.gen.Loop %t305, ptr %t309 - store i64 %t307, ptr %t283 - %t310 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t310) - %t311 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = icmp sgt i64 %t319, 0 - br i1 %t320, label %then5386, label %endif5388 -then5386: - %t321 = load ptr, ptr %a1 - %t322 = load %S.ast.Node, ptr %a2 - %t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t324 = load { ptr, i64, i64 }, ptr %t323 - %t325 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3410, i64 3, i64 0 }) - %t326 = load { ptr, i64, i64 }, ptr %a200 - %t327 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } %t324, %S.ast.Type %t325, { ptr, i64, i64 } %t326, i1 true, i1 false) - store %S.ast.Type %t325, ptr %a328 - call void @finch.drop.S_ast_Type(ptr %a328) - store { ptr, i64, i64 } %t327, ptr %a329 - call void @finch_str_drop(ptr %a329) - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t331, ptr %a332 - call void @finch_str_copy(ptr %a333, ptr %a332) - %t334 = load { ptr, i64, i64 }, ptr %a333 - %t335 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t334, ptr %a316 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif5388 -endif5388: - %t337 = load ptr, ptr %a1 - %t338 = load %S.ast.Node, ptr %a2 - %t339 = load { ptr, i64, i64 }, ptr %a316 - %t340 = load %S.ast.Type, ptr %a114 - %t341 = load { ptr, i64, i64 }, ptr %a272 - %t342 = load i1, ptr %a158 - %t343 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t337, %S.ast.Node %t338, { ptr, i64, i64 } %t339, %S.ast.Type %t340, { ptr, i64, i64 } %t341, i1 true, i1 %t342) - store { ptr, i64, i64 } %t343, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load ptr, ptr %a1 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t347 = load { ptr, i64, i64 }, ptr %t346 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 1, %t348 - br i1 %t349, label %range5389, label %inrange5390 -range5389: - call void @finch_panic_index(ptr @.str.3411, i64 2639, i64 1, i64 %t348) - unreachable -inrange5390: - %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 %panic5391, label %ok5392 -panic5391: - call void @finch_panic(ptr @.str.3412, i64 2641, ptr @.str.3413) - unreachable -ok5392: - %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 12 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %panic5393, label %ok5394 -panic5393: - call void @finch_panic(ptr @.str.3414, i64 2641, ptr @.str.3415) - unreachable -ok5394: - %t360 = sub i64 %t358, 1 - %t361 = load ptr, ptr %t356 - %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 - %t363 = load %S.gen.Loop, ptr %t362 - store i64 %t360, ptr %t357 - store %S.gen.Loop %t363, ptr %a364 - call void @finch.drop.S_gen_Loop(ptr %a364) - %t365 = load ptr, ptr %a1 - %t366 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.br(ptr %t365, { ptr, i64, i64 } %t366) - %t367 = load ptr, ptr %a1 - %t368 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.label(ptr %t367, { ptr, i64, i64 } %t368) - %t369 = load ptr, ptr %a1 - %t370 = load { ptr, i64, i64 }, ptr %a161 - %t371 = call { ptr, i64, i64 } @finch.gen.load(ptr %t369, { ptr, i64, i64 } { ptr @.str.3416, i64 3, i64 0 }, { ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.3418, i64 8, i64 0 }, ptr %a377 - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) - %t379 = load { ptr, i64, i64 }, ptr %a376 - store { ptr, i64, i64 } %t379, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.3419, i64 3, i64 0 }, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t379, ptr %a383 - call void @finch_str_drop(ptr %a383) - %t384 = load { ptr, i64, i64 }, ptr %a380 - %t385 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t384) - store { ptr, i64, i64 } %t384, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.3417, i64 3, i64 0 }, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387) - store { ptr, i64, i64 } %t385, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load ptr, ptr %a1 - %t390 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t389, { ptr, i64, i64 } %t390) - %t391 = load ptr, ptr %a1 - %t392 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.label(ptr %t391, { ptr, i64, i64 } %t392) - %t393 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t393) - call void @finch_str_drop(ptr %a372) - call void @finch_str_drop(ptr %a316) - call void @finch_str_drop(ptr %a272) - call void @finch_str_drop(ptr %a264) - call void @finch_str_drop(ptr %a230) - call void @finch_str_drop(ptr %a220) - call void @finch_str_drop(ptr %a200) - call void @finch_str_drop(ptr %a196) - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a172) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -} - -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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.gen.Val, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a329 = alloca i64, align 16 - %a342 = alloca i64, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca %S.gen.Var, align 16 - %a421 = alloca %S.gen.Var, align 16 - %a423 = alloca %S.gen.Var, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.gen.Val, align 16 - %a512 = alloca %S.gen.Val, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5395, label %ok5396 -panic5395: - call void @finch_panic(ptr @.str.3420, i64 2652, ptr @.str.3421) - unreachable -ok5396: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5397, label %endif5399 -then5397: - %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.3422, i64 33, i64 0 }) - br label %endif5399 -endif5399: - %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.from5400 -logic.from5400: - br i1 %t13, label %logic.rhs5401, label %logic.end5402 -logic.rhs5401: - %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 %range5403, label %inrange5404 -range5403: - call void @finch_panic_index(ptr @.str.3423, i64 2656, i64 0, i64 %t16) - unreachable -inrange5404: - %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.3424, 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.rend5405 -logic.rend5405: - br label %logic.end5402 -logic.end5402: - %t26 = phi i1 [ false, %logic.from5400 ], [ %t25, %logic.rend5405 ] - br label %logic.from5406 -logic.from5406: - br i1 %t26, label %logic.rhs5407, label %logic.end5408 -logic.rhs5407: - %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 %range5409, label %inrange5410 -range5409: - call void @finch_panic_index(ptr @.str.3425, i64 2656, i64 0, i64 %t29) - unreachable -inrange5410: - %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.3426, 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.rend5411 -logic.rend5411: - br label %logic.end5408 -logic.end5408: - %t39 = phi i1 [ false, %logic.from5406 ], [ %t38, %logic.rend5411 ] - br i1 %t39, label %then5412, label %endif5414 -then5412: - %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 %range5415, label %inrange5416 -range5415: - call void @finch_panic_index(ptr @.str.3427, i64 2657, i64 0, i64 %t42) - unreachable -inrange5416: - %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 %panic5417, label %ok5418 -panic5417: - call void @finch_panic(ptr @.str.3428, i64 2658, ptr @.str.3429) - unreachable -ok5418: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 13 - %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9 - %t55 = load i1, ptr %t54 - %t56 = xor i1 %t55, true - br i1 %t56, label %then5419, label %endif5421 -then5419: - store { ptr, i64, i64 } { ptr @.str.3430, i64 1, i64 0 }, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic5422, label %ok5423 -panic5422: - call void @finch_panic(ptr @.str.3431, i64 2660, ptr @.str.3432) - unreachable -ok5423: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 13 - %t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12 - %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3433, 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 %then5424, label %endif5426 -then5424: - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic5427, label %ok5428 -panic5427: - call void @finch_panic(ptr @.str.3434, i64 2661, ptr @.str.3435) - unreachable -ok5428: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 13 - %t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3436, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t78, ptr %a57 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif5426 -endif5426: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a50 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic5429, label %ok5430 -panic5429: - call void @finch_panic(ptr @.str.3438, i64 2663, ptr @.str.3439) - unreachable -ok5430: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 13 - %t86 = getelementptr inbounds %S.gen.FnSig, ptr %t85, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.3437, i64 1, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3440, i64 64, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t96, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t96, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.3441, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.fail(ptr %t81, %S.ast.Node %t82, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a57) - br label %endif5421 -endif5421: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a50 - call void @finch.gen.checkArgs(ptr %t109, %S.ast.Node %t110, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3442, i64 5, i64 0 }) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t114 = load { ptr, i64, i64 }, ptr %t113 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 0, %t115 - br i1 %t116, label %range5431, label %inrange5432 -range5431: - call void @finch_panic_index(ptr @.str.3443, i64 2666, i64 0, i64 %t115) - unreachable -inrange5432: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.ast.Node, ptr %t117, i64 0 - %t119 = load %S.ast.Node, ptr %t118 - %t120 = call %S.gen.Val @finch.gen.expr(ptr %t112, %S.ast.Node %t119) - %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3444, i64 3, i64 0 }) - %t122 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 0, %t124 - br i1 %t125, label %range5433, label %inrange5434 -range5433: - call void @finch_panic_index(ptr @.str.3445, i64 2666, i64 0, i64 %t124) - unreachable -inrange5434: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.ast.Node, ptr %t126, i64 0 - %t128 = load %S.ast.Node, ptr %t127 - %t129 = call %S.gen.Val @finch.gen.coerce(ptr %t111, %S.gen.Val %t120, %S.ast.Type %t121, %S.ast.Node %t128, { ptr, i64, i64 } { ptr @.str.3446, i64 17, i64 0 }) - store %S.gen.Val %t120, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - store %S.ast.Type %t121, ptr %a131 - call void @finch.drop.S_ast_Type(ptr %a131) - store %S.gen.Val %t129, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = load %S.gen.Val, ptr %a132 - %t135 = call { ptr, i64, i64 } @finch.gen.own(ptr %t133, %S.gen.Val %t134) - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t137, i64 0) - %t138 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t138, i64 0) - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic5435, label %ok5436 -panic5435: - call void @finch_panic(ptr @.str.3448, i64 2670, ptr @.str.3449) - unreachable -ok5436: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 13 - %t144 = load %S.gen.FnSig, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t140, %S.gen.FnSig %t144) - store { ptr, i64, i64 } { ptr @.str.3447, i64 4, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t145, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.3450, i64 1, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load ptr, ptr %a1 - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic5437, label %ok5438 -panic5437: - call void @finch_panic(ptr @.str.3452, i64 2670, ptr @.str.3453) - unreachable -ok5438: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 13 - %t161 = load %S.gen.FnSig, ptr %t160 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t157, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.3451, i64 12, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3454, i64 36, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3455, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t156, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t155, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t155, ptr %a189 - call void @finch_str_drop(ptr %a189) - store { ptr, i64, i64 } %t184, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t139, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5439, label %ok5440 -panic5439: - call void @finch_panic(ptr @.str.3456, i64 2671, ptr @.str.3457) - unreachable -ok5440: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Val(ptr %a132) - call void @finch.drop.S_ast_Node(ptr %a50) - ret void -endif5414: - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5441, label %ok5442 -panic5441: - call void @finch_panic(ptr @.str.3458, i64 2674, ptr @.str.3459) - unreachable -ok5442: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 13 - %t199 = getelementptr inbounds %S.gen.FnSig, ptr %t198, i32 0, i32 12 - %t200 = getelementptr inbounds %S.ast.Type, ptr %t199, i32 0, i32 0 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.3460, i64 4, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %then5443, label %endif5445 -then5443: - %t206 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = load i64, ptr %t207 - %t209 = icmp sgt i64 %t208, 0 - br i1 %t209, label %then5446, label %endif5448 -then5446: - %t210 = load ptr, ptr %a1 - %t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t212 = load { ptr, i64, i64 }, ptr %t211 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 0, %t213 - br i1 %t214, label %range5449, label %inrange5450 -range5449: - call void @finch_panic_index(ptr @.str.3461, i64 2676, i64 0, i64 %t213) - unreachable -inrange5450: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 0 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic5451, label %ok5452 -panic5451: - call void @finch_panic(ptr @.str.3463, i64 2676, ptr @.str.3464) - unreachable -ok5452: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 13 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %t220, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } { ptr @.str.3462, i64 1, i64 0 }, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.3465, i64 46, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif5448 -endif5448: - %t233 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t233, i64 0) - %t234 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t234, i64 0) - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic5453, label %ok5454 -panic5453: - call void @finch_panic(ptr @.str.3466, i64 2680, ptr @.str.3467) - unreachable -ok5454: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 13 - %t238 = getelementptr inbounds %S.gen.FnSig, ptr %t237, i32 0, i32 9 - %t239 = load i1, ptr %t238 - br i1 %t239, label %then5455, label %else5456 -then5455: - %t240 = load ptr, ptr %a1 - %t241 = load ptr, ptr %a1 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic5458, label %ok5459 -panic5458: - call void @finch_panic(ptr @.str.3469, i64 2681, ptr @.str.3470) - unreachable -ok5459: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 13 - %t245 = load %S.gen.FnSig, ptr %t244 - %t246 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t241, %S.gen.FnSig %t245) - store { ptr, i64, i64 } { ptr @.str.3468, i64 4, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.3471, i64 53, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif5457 -else5456: - %t258 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } { ptr @.str.3472, i64 8, i64 0 }) - br label %endif5457 -endif5457: - %t259 = load ptr, ptr %a1 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic5460, label %ok5461 -panic5460: - call void @finch_panic(ptr @.str.3473, i64 2685, ptr @.str.3474) - unreachable -ok5461: - %t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9 - store i1 true, ptr %t261 - ret void -endif5445: - %t262 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1 - %t264 = load i64, ptr %t263 - %t265 = icmp eq i64 %t264, 0 - br i1 %t265, label %then5462, label %endif5464 -then5462: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic5465, label %ok5466 -panic5465: - call void @finch_panic(ptr @.str.3476, i64 2689, ptr @.str.3477) - unreachable -ok5466: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 13 - %t271 = getelementptr inbounds %S.gen.FnSig, ptr %t270, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } { ptr @.str.3475, i64 1, i64 0 }, ptr %a274 - store { ptr, i64, i64 } %t272, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } %t276, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.3478, i64 14, i64 0 }, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t276, ptr %a280 - call void @finch_str_drop(ptr %a280) - %t281 = load { ptr, i64, i64 }, ptr %a277 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic5467, label %ok5468 -panic5467: - call void @finch_panic(ptr @.str.3479, i64 2689, ptr @.str.3480) - unreachable -ok5468: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 13 - %t285 = getelementptr inbounds %S.gen.FnSig, ptr %t284, i32 0, i32 12 - %t286 = load %S.ast.Type, ptr %t285 - %t287 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t286) - store { ptr, i64, i64 } %t281, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t281, ptr %a291 - call void @finch_str_drop(ptr %a291) - store { ptr, i64, i64 } %t287, ptr %a292 - call void @finch_str_drop(ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t293) - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - br label %endif5464 -endif5464: - %t295 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t296 = load { ptr, i64, i64 }, ptr %t295 - %t297 = extractvalue { ptr, i64, i64 } %t296, 1 - %t298 = icmp uge i64 0, %t297 - br i1 %t298, label %range5469, label %inrange5470 -range5469: - call void @finch_panic_index(ptr @.str.3481, i64 2692, i64 0, i64 %t297) - unreachable -inrange5470: - %t299 = extractvalue { ptr, i64, i64 } %t296, 0 - %t300 = getelementptr inbounds %S.ast.Node, ptr %t299, i64 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.3482, i64 3, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp ne i32 %t305, 0 - br i1 %t306, label %then5471, label %endif5473 -then5471: - %t307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = extractvalue { ptr, i64, i64 } %t308, 1 - %t310 = icmp uge i64 0, %t309 - br i1 %t310, label %range5474, label %inrange5475 -range5474: - call void @finch_panic_index(ptr @.str.3483, i64 2693, i64 0, i64 %t309) - unreachable -inrange5475: - %t311 = extractvalue { ptr, i64, i64 } %t308, 0 - %t312 = getelementptr inbounds %S.ast.Node, ptr %t311, i64 0 - %t313 = getelementptr inbounds %S.ast.Node, ptr %t312, i32 0, i32 1 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t314, ptr %a315 - call void @finch_str_copy(ptr %a316, ptr %a315) - %t317 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic5476, label %ok5477 -panic5476: - call void @finch_panic(ptr @.str.3484, i64 2694, ptr @.str.3485) - unreachable -ok5477: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 10 - %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i32 0, i32 1 - %t323 = load i64, ptr %t322 - store i64 %t323, ptr %a324 - br label %while.cond5478 -while.cond5478: - %t325 = load i64, ptr %a324 - %t326 = icmp sgt i64 %t325, 0 - br i1 %t326, label %while.body5479, label %while.end5480 -while.body5479: - %t327 = load i64, ptr %a324 - %t328 = sub i64 %t327, 1 - store i64 %t328, ptr %a324 - store i64 -1, ptr %a329 - %t330 = load ptr, ptr %a1 - %t331 = icmp eq ptr %t330, null - br i1 %t331, label %panic5481, label %ok5482 -panic5481: - call void @finch_panic(ptr @.str.3486, i64 2698, ptr @.str.3487) - unreachable -ok5482: - %t332 = getelementptr inbounds %S.gen.Gen, ptr %t330, i32 0, i32 10 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %t332 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range5483, label %inrange5484 -range5483: - call void @finch_panic_index(ptr @.str.3488, i64 2698, i64 %t333, i64 %t335) - unreachable -inrange5484: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Scope, ptr %t337, i64 %t333 - %t339 = getelementptr inbounds %S.gen.Scope, ptr %t338, i32 0, i32 0 - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %t339, i32 0, i32 1 - %t341 = load i64, ptr %t340 - store i64 0, ptr %a342 - br label %for.cond5485 -for.cond5485: - %t343 = load i64, ptr %a342 - %t344 = icmp slt i64 %t343, %t341 - br i1 %t344, label %for.body5486, label %for.end5488 -for.body5486: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic5489, label %ok5490 -panic5489: - call void @finch_panic(ptr @.str.3489, i64 2699, ptr @.str.3490) - unreachable -ok5490: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 10 - %t348 = load i64, ptr %a324 - %t349 = load { ptr, i64, i64 }, ptr %t347 - %t350 = extractvalue { ptr, i64, i64 } %t349, 1 - %t351 = icmp uge i64 %t348, %t350 - br i1 %t351, label %range5491, label %inrange5492 -range5491: - call void @finch_panic_index(ptr @.str.3491, i64 2699, i64 %t348, i64 %t350) - unreachable -inrange5492: - %t352 = extractvalue { ptr, i64, i64 } %t349, 0 - %t353 = getelementptr inbounds %S.gen.Scope, ptr %t352, i64 %t348 - %t354 = getelementptr inbounds %S.gen.Scope, ptr %t353, i32 0, i32 0 - %t355 = load i64, ptr %a342 - %t356 = load { ptr, i64, i64 }, ptr %t354 - %t357 = extractvalue { ptr, i64, i64 } %t356, 1 - %t358 = icmp uge i64 %t355, %t357 - br i1 %t358, label %range5493, label %inrange5494 -range5493: - call void @finch_panic_index(ptr @.str.3492, i64 2699, i64 %t355, i64 %t357) - unreachable -inrange5494: - %t359 = extractvalue { ptr, i64, i64 } %t356, 0 - %t360 = getelementptr inbounds %S.gen.Var, ptr %t359, i64 %t355 - %t361 = getelementptr inbounds %S.gen.Var, ptr %t360, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - %t363 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } %t363, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br label %logic.from5495 -logic.from5495: - br i1 %t367, label %logic.rhs5496, label %logic.end5497 -logic.rhs5496: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic5498, label %ok5499 -panic5498: - call void @finch_panic(ptr @.str.3493, i64 2699, ptr @.str.3494) - unreachable -ok5499: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 44 - %t371 = load i1, ptr %t370 - br label %logic.from5500 -logic.from5500: - br i1 %t371, label %logic.rhs5501, label %logic.end5502 -logic.rhs5501: - %t372 = load ptr, ptr %a1 - %t373 = icmp eq ptr %t372, null - br i1 %t373, label %panic5503, label %ok5504 -panic5503: - call void @finch_panic(ptr @.str.3495, i64 2699, ptr @.str.3496) - unreachable -ok5504: - %t374 = getelementptr inbounds %S.gen.Gen, ptr %t372, i32 0, i32 10 - %t375 = load i64, ptr %a324 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range5505, label %inrange5506 -range5505: - call void @finch_panic_index(ptr @.str.3497, i64 2699, i64 %t375, i64 %t377) - unreachable -inrange5506: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.gen.Scope, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.gen.Scope, ptr %t380, i32 0, i32 0 - %t382 = load i64, ptr %a342 - %t383 = load { ptr, i64, i64 }, ptr %t381 - %t384 = extractvalue { ptr, i64, i64 } %t383, 1 - %t385 = icmp uge i64 %t382, %t384 - br i1 %t385, label %range5507, label %inrange5508 -range5507: - call void @finch_panic_index(ptr @.str.3498, i64 2699, i64 %t382, i64 %t384) - unreachable -inrange5508: - %t386 = extractvalue { ptr, i64, i64 } %t383, 0 - %t387 = getelementptr inbounds %S.gen.Var, ptr %t386, i64 %t382 - %t388 = getelementptr inbounds %S.gen.Var, ptr %t387, i32 0, i32 4 - %t389 = load i64, ptr %t388 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic5509, label %ok5510 -panic5509: - call void @finch_panic(ptr @.str.3499, i64 2699, ptr @.str.3500) - unreachable -ok5510: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 45 - %t393 = load i64, ptr %t392 - %t394 = icmp sge i64 %t389, %t393 - br label %logic.rend5511 -logic.rend5511: - br label %logic.end5502 -logic.end5502: - %t395 = phi i1 [ false, %logic.from5500 ], [ %t394, %logic.rend5511 ] - %t396 = xor i1 %t395, true - br label %logic.rend5512 -logic.rend5512: - br label %logic.end5497 -logic.end5497: - %t397 = phi i1 [ false, %logic.from5495 ], [ %t396, %logic.rend5512 ] - br i1 %t397, label %then5513, label %endif5515 -then5513: - %t398 = load i64, ptr %a342 - store i64 %t398, ptr %a329 - br label %endif5515 -endif5515: - br label %for.step5487 -for.step5487: - %t399 = load i64, ptr %a342 - %t400 = add i64 %t399, 1 - store i64 %t400, ptr %a342 - br label %for.cond5485 -for.end5488: - %t401 = load i64, ptr %a329 - %t402 = icmp slt i64 %t401, 0 - br i1 %t402, label %then5516, label %endif5518 -then5516: - br label %while.cond5478 -endif5518: - %t403 = load ptr, ptr %a1 - %t404 = icmp eq ptr %t403, null - br i1 %t404, label %panic5519, label %ok5520 -panic5519: - call void @finch_panic(ptr @.str.3501, i64 2706, ptr @.str.3502) - unreachable -ok5520: - %t405 = getelementptr inbounds %S.gen.Gen, ptr %t403, i32 0, i32 10 - %t406 = load i64, ptr %a324 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range5521, label %inrange5522 -range5521: - call void @finch_panic_index(ptr @.str.3503, i64 2706, i64 %t406, i64 %t408) - unreachable -inrange5522: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.gen.Scope, ptr %t410, i64 %t406 - %t412 = getelementptr inbounds %S.gen.Scope, ptr %t411, i32 0, i32 0 - %t413 = load i64, ptr %a329 - %t414 = load { ptr, i64, i64 }, ptr %t412 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5523, label %inrange5524 -range5523: - call void @finch_panic_index(ptr @.str.3504, i64 2706, i64 %t413, i64 %t415) - unreachable -inrange5524: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.gen.Var, ptr %t417, i64 %t413 - %t419 = load %S.gen.Var, ptr %t418 - store %S.gen.Var %t419, ptr %a420 - call void @finch.copy.S_gen_Var(ptr %a421, ptr %a420) - %t422 = load %S.gen.Var, ptr %a421 - store %S.gen.Var %t422, ptr %a423 - %t424 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 5 - %t425 = load i1, ptr %t424 - br label %logic.from5525 -logic.from5525: - br i1 %t425, label %logic.rhs5526, label %logic.end5527 -logic.rhs5526: - %t426 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t427 = load %S.ast.Type, ptr %t426 - %t428 = load ptr, ptr %a1 - %t429 = icmp eq ptr %t428, null - br i1 %t429, label %panic5528, label %ok5529 -panic5528: - call void @finch_panic(ptr @.str.3505, i64 2707, ptr @.str.3506) - unreachable -ok5529: - %t430 = getelementptr inbounds %S.gen.Gen, ptr %t428, i32 0, i32 13 - %t431 = getelementptr inbounds %S.gen.FnSig, ptr %t430, i32 0, i32 12 - %t432 = load %S.ast.Type, ptr %t431 - %t433 = call i1 @finch.ast.same(%S.ast.Type %t427, %S.ast.Type %t432) - br label %logic.rend5530 -logic.rend5530: - br label %logic.end5527 -logic.end5527: - %t434 = phi i1 [ false, %logic.from5525 ], [ %t433, %logic.rend5530 ] - br i1 %t434, label %then5531, label %endif5533 -then5531: - %t435 = load ptr, ptr %a1 - %t436 = load ptr, ptr %a1 - %t437 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t438 = load %S.ast.Type, ptr %t437 - %t439 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t438) - %t440 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 2 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = call { ptr, i64, i64 } @finch.gen.load(ptr %t435, { ptr, i64, i64 } %t439, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch_str_drop(ptr %a443) - store { ptr, i64, i64 } %t442, ptr %a444 - %t445 = load ptr, ptr %a1 - %t446 = icmp eq ptr %t445, null - br i1 %t446, label %panic5534, label %ok5535 -panic5534: - call void @finch_panic(ptr @.str.3507, i64 2709, ptr @.str.3508) - unreachable -ok5535: - %t447 = getelementptr inbounds %S.gen.Gen, ptr %t445, i32 0, i32 10 - %t448 = load i64, ptr %a324 - %t449 = load { ptr, i64, i64 }, ptr %t447 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 %t448, %t450 - br i1 %t451, label %range5536, label %inrange5537 -range5536: - call void @finch_panic_index(ptr @.str.3509, i64 2709, i64 %t448, i64 %t450) - unreachable -inrange5537: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.gen.Scope, ptr %t452, i64 %t448 - %t454 = getelementptr inbounds %S.gen.Scope, ptr %t453, i32 0, i32 0 - %t455 = load i64, ptr %a329 - %t456 = load { ptr, i64, i64 }, ptr %t454 - %t457 = extractvalue { ptr, i64, i64 } %t456, 1 - %t458 = icmp uge i64 %t455, %t457 - br i1 %t458, label %range5538, label %inrange5539 -range5538: - call void @finch_panic_index(ptr @.str.3510, i64 2709, i64 %t455, i64 %t457) - unreachable -inrange5539: - %t459 = extractvalue { ptr, i64, i64 } %t456, 0 - %t460 = getelementptr inbounds %S.gen.Var, ptr %t459, i64 %t455 - %t461 = getelementptr inbounds %S.gen.Var, ptr %t460, i32 0, i32 6 - store i1 true, ptr %t461 - %t462 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t462, i64 0) - %t463 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t463, i64 0) - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic5540, label %ok5541 -panic5540: - call void @finch_panic(ptr @.str.3511, i64 2712, ptr @.str.3512) - unreachable -ok5541: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 10 - %t467 = load i64, ptr %a324 - %t468 = load { ptr, i64, i64 }, ptr %t466 - %t469 = extractvalue { ptr, i64, i64 } %t468, 1 - %t470 = icmp uge i64 %t467, %t469 - br i1 %t470, label %range5542, label %inrange5543 -range5542: - call void @finch_panic_index(ptr @.str.3513, i64 2712, i64 %t467, i64 %t469) - unreachable -inrange5543: - %t471 = extractvalue { ptr, i64, i64 } %t468, 0 - %t472 = getelementptr inbounds %S.gen.Scope, ptr %t471, i64 %t467 - %t473 = getelementptr inbounds %S.gen.Scope, ptr %t472, i32 0, i32 0 - %t474 = load i64, ptr %a329 - %t475 = load { ptr, i64, i64 }, ptr %t473 - %t476 = extractvalue { ptr, i64, i64 } %t475, 1 - %t477 = icmp uge i64 %t474, %t476 - br i1 %t477, label %range5544, label %inrange5545 -range5544: - call void @finch_panic_index(ptr @.str.3514, i64 2712, i64 %t474, i64 %t476) - unreachable -inrange5545: - %t478 = extractvalue { ptr, i64, i64 } %t475, 0 - %t479 = getelementptr inbounds %S.gen.Var, ptr %t478, i64 %t474 - %t480 = getelementptr inbounds %S.gen.Var, ptr %t479, i32 0, i32 6 - store i1 false, ptr %t480 - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a444 - call void @finch.gen.finishReturn(ptr %t481, { ptr, i64, i64 } %t482) - call void @finch_str_drop(ptr %a444) - call void @finch.drop.S_gen_Var(ptr %a423) - call void @finch_str_drop(ptr %a318) - ret void -endif5533: - call void @finch.drop.S_gen_Var(ptr %a423) - br label %while.end5480 -while.end5480: - call void @finch_str_drop(ptr %a318) - br label %endif5473 -endif5473: - %t483 = load ptr, ptr %a1 - %t484 = load ptr, ptr %a1 - %t485 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range5546, label %inrange5547 -range5546: - call void @finch_panic_index(ptr @.str.3515, i64 2719, i64 0, i64 %t487) - unreachable -inrange5547: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = load ptr, ptr %a1 - %t493 = icmp eq ptr %t492, null - br i1 %t493, label %panic5548, label %ok5549 -panic5548: - call void @finch_panic(ptr @.str.3516, i64 2719, ptr @.str.3517) - unreachable -ok5549: - %t494 = getelementptr inbounds %S.gen.Gen, ptr %t492, i32 0, i32 13 - %t495 = getelementptr inbounds %S.gen.FnSig, ptr %t494, i32 0, i32 12 - %t496 = load %S.ast.Type, ptr %t495 - %t497 = call %S.gen.Val @finch.gen.exprWant(ptr %t484, %S.ast.Node %t491, %S.ast.Type %t496) - %t498 = load ptr, ptr %a1 - %t499 = icmp eq ptr %t498, null - br i1 %t499, label %panic5550, label %ok5551 -panic5550: - call void @finch_panic(ptr @.str.3518, i64 2719, ptr @.str.3519) - unreachable -ok5551: - %t500 = getelementptr inbounds %S.gen.Gen, ptr %t498, i32 0, i32 13 - %t501 = getelementptr inbounds %S.gen.FnSig, ptr %t500, i32 0, i32 12 - %t502 = load %S.ast.Type, ptr %t501 - %t503 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t504 = load { ptr, i64, i64 }, ptr %t503 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 0, %t505 - br i1 %t506, label %range5552, label %inrange5553 -range5552: - call void @finch_panic_index(ptr @.str.3520, i64 2719, i64 0, i64 %t505) - unreachable -inrange5553: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 0 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = call %S.gen.Val @finch.gen.coerce(ptr %t483, %S.gen.Val %t497, %S.ast.Type %t502, %S.ast.Node %t509, { ptr, i64, i64 } { ptr @.str.3521, i64 18, i64 0 }) - store %S.gen.Val %t497, ptr %a511 - call void @finch.drop.S_gen_Val(ptr %a511) - store %S.gen.Val %t510, ptr %a512 - %t513 = load ptr, ptr %a1 - %t514 = load %S.gen.Val, ptr %a512 - %t515 = call { ptr, i64, i64 } @finch.gen.own(ptr %t513, %S.gen.Val %t514) - store { ptr, i64, i64 } %t515, ptr %a516 - %t517 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t517, i64 0) - %t518 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t518, i64 0) - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a516 - call void @finch.gen.finishReturn(ptr %t519, { ptr, i64, i64 } %t520) - call void @finch_str_drop(ptr %a516) - call void @finch.drop.S_gen_Val(ptr %a512) - ret void -} - -define internal void @finch.gen.finishReturn(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5554, label %ok5555 -panic5554: - call void @finch_panic(ptr @.str.3522, i64 2727, ptr @.str.3523) - unreachable -ok5555: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %t5, i32 0, i32 9 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then5556, label %else5557 -then5556: - %t8 = load ptr, ptr %a1 - %t9 = load ptr, ptr %a1 - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic5559, label %ok5560 -panic5559: - call void @finch_panic(ptr @.str.3525, i64 2728, ptr @.str.3526) - unreachable -ok5560: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = load %S.gen.FnSig, ptr %t12 - %t14 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t9, %S.gen.FnSig %t13) - store { ptr, i64, i64 } { ptr @.str.3524, i64 12, i64 0 }, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.3527, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t8, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t25, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic5561, label %ok5562 -panic5561: - call void @finch_panic(ptr @.str.3529, i64 2729, ptr @.str.3530) - unreachable -ok5562: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 13 - %t33 = load %S.gen.FnSig, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t29, %S.gen.FnSig %t33) - store { ptr, i64, i64 } { ptr @.str.3528, i64 12, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3531, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3532, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic5563, label %ok5564 -panic5563: - call void @finch_panic(ptr @.str.3533, i64 2729, ptr @.str.3534) - unreachable -ok5564: - %t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 13 - %t60 = getelementptr inbounds %S.gen.FnSig, ptr %t59, i32 0, i32 12 - %t61 = load %S.ast.Type, ptr %t60 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t61) - store { ptr, i64, i64 } %t55, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t55, ptr %a66 - call void @finch_str_drop(ptr %a66) - store { ptr, i64, i64 } %t62, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.3535, i64 1, i64 0 }, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t73, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3536, i64 3, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = call { ptr, i64, i64 } @finch.gen.op(ptr %t28, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t84, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load ptr, ptr %a1 - %t90 = load ptr, ptr %a1 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic5565, label %ok5566 -panic5565: - call void @finch_panic(ptr @.str.3538, i64 2730, ptr @.str.3539) - unreachable -ok5566: - %t92 = getelementptr inbounds %S.gen.Gen, ptr %t90, i32 0, i32 13 - %t93 = load %S.gen.FnSig, ptr %t92 - %t94 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t89, %S.gen.FnSig %t93) - store { ptr, i64, i64 } { ptr @.str.3537, i64 4, i64 0 }, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3540, i64 1, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t104, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a27) - br label %endif5558 -else5557: - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic5567, label %ok5568 -panic5567: - call void @finch_panic(ptr @.str.3542, i64 2732, ptr @.str.3543) - unreachable -ok5568: - %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 13 - %t117 = getelementptr inbounds %S.gen.FnSig, ptr %t116, i32 0, i32 12 - %t118 = load %S.ast.Type, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t118) - store { ptr, i64, i64 } { ptr @.str.3541, i64 4, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.3544, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t129, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.emit(ptr %t112, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - br label %endif5558 -endif5558: - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic5569, label %ok5570 -panic5569: - call void @finch_panic(ptr @.str.3545, i64 2734, ptr @.str.3546) - unreachable -ok5570: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 9 - store i1 true, ptr %t139 - 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 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5571, label %inrange5572 -range5571: - call void @finch_panic_index(ptr @.str.3548, i64 2746, i64 0, i64 %t6) - unreachable -inrange5572: - %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.3547, i64 7, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3549, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load ptr, ptr %a1 - %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %t23 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 1, %t25 - br i1 %t26, label %range5573, label %inrange5574 -range5573: - call void @finch_panic_index(ptr @.str.3550, i64 2746, i64 1, i64 %t25) - unreachable -inrange5574: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.ast.Type, ptr %t27, i64 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t29) - store { ptr, i64, i64 } %t21, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t21, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.3551, i64 2, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - ret { ptr, i64, i64 } %t41 -} - -define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) { -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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.3552, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.3553, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal { ptr, i64, i64 } @finch.gen.entryAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -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 - %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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3555, i64 23, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3556, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t19, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3557, i64 14, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t30) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3554, i64 3, i64 0 }, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t33, ptr %a35 - %t36 = load ptr, ptr %a1 - %t37 = load ptr, ptr %a1 - %t38 = load %S.ast.Type, ptr %a3 - %t39 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t37, %S.ast.Type %t38) - store { ptr, i64, i64 } { ptr @.str.3558, i64 23, i64 0 }, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.3559, i64 6, i64 0 }, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t44, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t49, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.3560, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - call void @finch_str_drop(ptr %a35) - ret { ptr, i64, i64 } %t67 -} - -define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3561, i64 23, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.3562, i64 6, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t18, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3563, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - ret { ptr, i64, i64 } %t39 -} - -define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %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 - %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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3564, 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 %range5575, label %inrange5576 -range5575: - call void @finch_panic_index(ptr @.str.3565, i64 2766, i64 0, i64 %t8) - unreachable -inrange5576: - %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.3566, 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 %then5577, label %endif5579 -then5577: - %t18 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3567, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif5579 -endif5579: - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3568, i64 4, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3569, i64 6, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.3570, i64 6, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = load %S.ast.Type, ptr %a4 - %t43 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t41, %S.ast.Type %t42) - store { ptr, i64, i64 } %t40, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t40, ptr %a47 - call void @finch_str_drop(ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3571, i64 6, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load ptr, ptr %a1 - %t56 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t57 = load { ptr, i64, i64 }, ptr %t56 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 0, %t58 - br i1 %t59, label %range5580, label %inrange5581 -range5580: - call void @finch_panic_index(ptr @.str.3572, i64 2769, i64 0, i64 %t58) - unreachable -inrange5581: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i64 0 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t55, %S.ast.Type %t62) - store { ptr, i64, i64 } %t54, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t54, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.3573, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t80 -} - -define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.3574, i64 25, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.3575, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t20) - store { ptr, i64, i64 } %t20, ptr %a22 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { -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 - %a31 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3576, 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.from5582 -logic.from5582: - br i1 %t9, label %logic.rhs5583, label %logic.end5584 -logic.rhs5583: - %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.rend5585 -logic.rend5585: - br label %logic.end5584 -logic.end5584: - %t13 = phi i1 [ false, %logic.from5582 ], [ %t12, %logic.rend5585 ] - br i1 %t13, label %then5586, label %endif5588 -then5586: - 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 - store %S.gen.Val %t26, ptr %a31 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.arr_str(ptr %a15) - call void @finch.drop.arr_S_ast_Node(ptr %a14) - ret { ptr, i64, i64 } %t30 -endif5588: - %t32 = load %S.ast.Type, ptr %a2 - %t33 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t32) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.mapSlot(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.gen.Val %p3, i1 %p4, %S.ast.Node %p5) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3577, 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.3578, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3579, 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.3580, i64 25, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.3581, i64 6, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3582, i64 1, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t43, ptr %a45 - %t46 = load ptr, ptr %a1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = load %S.ast.Type, ptr %a3 - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t46, { ptr, i64, i64 } %t47, %S.ast.Type %t48, { ptr, i64, i64 } %t49) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t52, { ptr, i64, i64 } { ptr @.str.3583, i64 7, i64 0 }) - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t55, { ptr, i64, i64 } { ptr @.str.3584, i64 8, i64 0 }) - store { ptr, i64, i64 } %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a13 - %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } { ptr @.str.3586, i64 3, i64 0 }, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } { ptr @.str.3585, i64 12, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.3587, i64 3, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t72) - store { ptr, i64, i64 } %t72, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a54 - %t76 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.condBr(ptr %t58, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load ptr, ptr %a1 - %t79 = load { ptr, i64, i64 }, ptr %a54 - call void @finch.gen.label(ptr %t78, { ptr, i64, i64 } %t79) - %t80 = load ptr, ptr %a1 - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a51 - %t83 = load %S.ast.Type, ptr %a3 - %t84 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t81, { ptr, i64, i64 } %t82, %S.ast.Type %t83, i64 1) - %t85 = load { ptr, i64, i64 }, ptr %a10 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range5589, label %inrange5590 -range5589: - call void @finch_panic_index(ptr @.str.3588, i64 2797, i64 0, i64 %t88) - unreachable -inrange5590: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i64 0 - %t92 = load %S.ast.Type, ptr %t91 - call void @finch.gen.copyAt(ptr %t80, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t85, %S.ast.Type %t92) - store { ptr, i64, i64 } %t84, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load i1, ptr %a5 - br i1 %t94, label %then5591, label %endif5593 -then5591: - %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 %range5594, label %inrange5595 -range5594: - call void @finch_panic_index(ptr @.str.3589, i64 2799, i64 1, i64 %t99) - unreachable -inrange5595: - %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 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t103) - %t105 = load ptr, ptr %a1 - %t106 = load ptr, ptr %a1 - %t107 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 1, %t109 - br i1 %t110, label %range5596, label %inrange5597 -range5596: - call void @finch_panic_index(ptr @.str.3590, i64 2799, i64 1, i64 %t109) - unreachable -inrange5597: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 - %t113 = load %S.ast.Type, ptr %t112 - %t114 = load %S.ast.Node, ptr %a6 - %t115 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t106, %S.ast.Type %t113, %S.ast.Node %t114) - %t116 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t115, 0 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 1, %t119 - br i1 %t120, label %range5598, label %inrange5599 -range5598: - call void @finch_panic_index(ptr @.str.3591, i64 2799, i64 1, i64 %t119) - unreachable -inrange5599: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 1 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t116, %S.ast.Type %t126, 1 - %t128 = insertvalue %S.gen.Val %t127, i1 true, 2 - %t129 = call { ptr, i64, i64 } @finch.gen.own(ptr %t105, %S.gen.Val %t128) - store %S.gen.Val %t128, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a51 - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t131, { ptr, i64, i64 } %t132, %S.ast.Type %t133, i64 2) - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t134) - store { ptr, i64, i64 } %t104, ptr %a135 - call void @finch_str_drop(ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif5593 -endif5593: - %t138 = load ptr, ptr %a1 - %t139 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.br(ptr %t138, { ptr, i64, i64 } %t139) - %t140 = load ptr, ptr %a1 - %t141 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.label(ptr %t140, { ptr, i64, i64 } %t141) - %t142 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t142 -} - -define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) { -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 - %a49 = alloca %S.gen.Val, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a242 = alloca %S.gen.Val, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a268 = alloca %S.gen.Val, align 16 - %a269 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - 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 %range5600, label %inrange5601 -range5600: - call void @finch_panic_index(ptr @.str.3592, i64 2808, i64 0, i64 %t8) - unreachable -inrange5601: - %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 %range5602, label %inrange5603 -range5602: - call void @finch_panic_index(ptr @.str.3593, i64 2809, i64 1, i64 %t19) - unreachable -inrange5603: - %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 %range5604, label %inrange5605 -range5604: - call void @finch_panic_index(ptr @.str.3594, i64 2810, i64 1, i64 %t32) - unreachable -inrange5605: - %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 %range5606, label %inrange5607 -range5606: - call void @finch_panic_index(ptr @.str.3595, i64 2810, i64 1, i64 %t42) - unreachable -inrange5607: - %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.3596, i64 7, i64 0 }) - store %S.gen.Val %t38, ptr %a48 - call void @finch.drop.S_gen_Val(ptr %a48) - store %S.gen.Val %t47, ptr %a49 - %t50 = load i1, ptr %a5 - br i1 %t50, label %then5608, label %endif5610 -then5608: - %t51 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t52 = load i1, ptr %t51 - %t53 = xor i1 %t52, true - br i1 %t53, label %then5611, label %endif5613 -then5611: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } { ptr @.str.3597, i64 44, i64 0 }) - br label %endif5613 -endif5613: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t58 = getelementptr inbounds %S.gen.Place, ptr %t57, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = load %S.gen.Val, ptr %a49 - %t62 = load %S.ast.Node, ptr %a2 - %t63 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t56, { ptr, i64, i64 } %t59, %S.ast.Type %t60, %S.gen.Val %t61, i1 true, %S.ast.Node %t62) - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t65, %S.gen.Val %t66) - %t67 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t68 = load ptr, ptr %a1 - %t69 = load { ptr, i64, i64 }, ptr %a64 - %t70 = load %S.ast.Type, ptr %a4 - %t71 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t68, { ptr, i64, i64 } %t69, %S.ast.Type %t70, i64 2) - %t72 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t71, 0 - %t73 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t73, ptr %a74 - call void @finch.copy.S_ast_Type(ptr %a75, ptr %a74) - %t76 = load %S.ast.Type, ptr %a75 - %t77 = insertvalue %S.gen.Place %t72, %S.ast.Type %t76, 1 - %t78 = insertvalue %S.gen.Ref %t67, %S.gen.Place %t77, 1 - call void @finch_str_drop(ptr %a64) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t78 -endif5610: - store { ptr, i64, i64 } { ptr @.str.3598, i64 0, i64 0 }, ptr %a79 - %t80 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t81 = load i1, ptr %t80 - br i1 %t81, label %then5614, label %else5615 -then5614: - %t82 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t83 = getelementptr inbounds %S.gen.Place, ptr %t82, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch_str_copy(ptr %a86, ptr %a85) - %t87 = load { ptr, i64, i64 }, ptr %a86 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t87, ptr %a79 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif5616 -else5615: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t92 = load %S.gen.Val, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t90, %S.gen.Val %t92) - %t94 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t93, ptr %a79 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %endif5616 -endif5616: - %t96 = load ptr, ptr %a1 - %t97 = load %S.gen.Val, ptr %a49 - %t98 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t96, %S.gen.Val %t97) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a79 - %t102 = load { ptr, i64, i64 }, ptr %a99 - %t103 = load %S.ast.Type, ptr %a4 - %t104 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t100, { ptr, i64, i64 } %t101, { ptr, i64, i64 } %t102, %S.ast.Type %t103) - store { ptr, i64, i64 } %t104, ptr %a105 - %t106 = load ptr, ptr %a1 - %t107 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t106, { ptr, i64, i64 } { ptr @.str.3599, i64 11, i64 0 }) - store { ptr, i64, i64 } %t107, ptr %a108 - %t109 = load ptr, ptr %a1 - %t110 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t109, { ptr, i64, i64 } { ptr @.str.3600, i64 9, i64 0 }) - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.3601, i64 13, i64 0 }, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.3602, i64 3, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t123, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a108 - %t127 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.condBr(ptr %t112, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a108 - call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) - %t131 = load ptr, ptr %a1 - %t132 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t131, { ptr, i64, i64 } { ptr @.str.3603, i64 17, i64 0 }) - store { ptr, i64, i64 } %t132, ptr %a133 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.store(ptr %t134, { ptr, i64, i64 } { ptr @.str.3604, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3605, i64 15, i64 0 }, { ptr, i64, i64 } %t135) - %t136 = load ptr, ptr %a1 - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = getelementptr inbounds %S.gen.Val, ptr %a49, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - %t140 = load %S.ast.Type, ptr %a16 - call void @finch.gen.emitFormat(ptr %t136, { ptr, i64, i64 } %t137, { ptr, i64, i64 } %t139, %S.ast.Type %t140, i1 true) - %t141 = load ptr, ptr %a1 - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic5617, label %ok5618 -panic5617: - call void @finch_panic(ptr @.str.3607, i64 2834, ptr @.str.3608) - unreachable -ok5618: - %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 1 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t147 = load i64, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %t145 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 %t147, %t149 - br i1 %t150, label %range5619, label %inrange5620 -range5619: - call void @finch_panic_index(ptr @.str.3609, i64 2834, i64 %t147, i64 %t149) - unreachable -inrange5620: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 %t147 - %t153 = load { ptr, i64, i64 }, ptr %t152 - %t154 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t142, { ptr, i64, i64 } %t153) - store { ptr, i64, i64 } { ptr @.str.3606, i64 33, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t159, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3610, i64 6, i64 0 }, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t159, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t166 = load i64, ptr %t165 - call void @finch_str_from_int(ptr %a167, i64 %t166) - %t168 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t164, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t164, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t168, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t174, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.3611, i64 6, i64 0 }, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t174, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t179, ptr %a182 - store { ptr, i64, i64 } %t180, ptr %a183 - call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) - store { ptr, i64, i64 } %t179, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load { ptr, i64, i64 }, ptr %a181 - store { ptr, i64, i64 } %t185, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.3612, i64 1, i64 0 }, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t141, { ptr, i64, i64 } %t190) - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t192, { ptr, i64, i64 } { ptr @.str.3613, i64 11, i64 0 }) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5621, label %ok5622 -panic5621: - call void @finch_panic(ptr @.str.3614, i64 2836, ptr @.str.3615) - unreachable -ok5622: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load ptr, ptr %a1 - %t199 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t198, %S.gen.Val %t199) - %t200 = load ptr, ptr %a1 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a79 - %t203 = load %S.ast.Type, ptr %a4 - %t204 = load { ptr, i64, i64 }, ptr %a105 - %t205 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t201, { ptr, i64, i64 } %t202, %S.ast.Type %t203, { ptr, i64, i64 } %t204) - %t206 = load %S.ast.Type, ptr %a4 - %t207 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t200, { ptr, i64, i64 } %t205, %S.ast.Type %t206, i64 2) - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_drop(ptr %a208) - store { ptr, i64, i64 } %t207, ptr %a209 - %t210 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t211 = load i1, ptr %t210 - br i1 %t211, label %then5623, label %endif5625 -then5623: - %t212 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t213 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t213, ptr %a214 - call void @finch_str_copy(ptr %a215, ptr %a214) - %t216 = load { ptr, i64, i64 }, ptr %a215 - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t216, 0 - %t218 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t212, %S.gen.Place %t222, 1 - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t223 -endif5625: - %t224 = load ptr, ptr %a1 - %t225 = load ptr, ptr %a1 - %t226 = load %S.ast.Type, ptr %a27 - %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) - %t228 = load { ptr, i64, i64 }, ptr %a209 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t224, { ptr, i64, i64 } %t227, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t232, ptr %a233 - call void @finch_str_copy(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t235, 0 - %t237 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - %t241 = insertvalue %S.gen.Val %t236, %S.ast.Type %t240, 1 - store %S.gen.Val %t241, ptr %a242 - %t243 = load ptr, ptr %a1 - %t244 = load %S.ast.Type, ptr %a27 - %t245 = call i1 @finch.gen.owning(ptr %t243, %S.ast.Type %t244) - br label %logic.from5626 -logic.from5626: - br i1 %t245, label %logic.rhs5627, label %logic.end5628 -logic.rhs5627: - %t246 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t247 = getelementptr inbounds %S.gen.Val, ptr %t246, i32 0, i32 2 - %t248 = load i1, ptr %t247 - br label %logic.rend5629 -logic.rend5629: - br label %logic.end5628 -logic.end5628: - %t249 = phi i1 [ false, %logic.from5626 ], [ %t248, %logic.rend5629 ] - br i1 %t249, label %then5630, label %endif5632 -then5630: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a231 - %t252 = load %S.ast.Type, ptr %a27 - %t253 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252) - %t254 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t253, 0 - %t255 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t254, %S.ast.Type %t258, 1 - %t260 = insertvalue %S.gen.Val %t259, i1 true, 2 - %t261 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t260, ptr %a242 - store %S.gen.Val %t261, ptr %a262 - call void @finch.drop.S_gen_Val(ptr %a262) - br label %endif5632 -endif5632: - %t263 = load ptr, ptr %a1 - %t264 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t265 = load %S.gen.Val, ptr %t264 - call void @finch.gen.release(ptr %t263, %S.gen.Val %t265) - %t266 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t267 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t267, ptr %a268 - call void @finch.copy.S_gen_Val(ptr %a269, ptr %a268) - %t270 = load %S.gen.Val, ptr %a269 - %t271 = insertvalue %S.gen.Ref %t266, %S.gen.Val %t270, 2 - call void @finch.drop.S_gen_Val(ptr %a242) - call void @finch_str_drop(ptr %a231) - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t271 -} - -define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a71 = alloca %S.ast.Node, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.gen.Val, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a159 = alloca %S.ast.Type, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca i64, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca i64, align 16 - %a208 = alloca %S.gen.Val, align 16 - %a209 = alloca %S.gen.Val, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a236 = alloca %S.gen.Val, align 16 - %a257 = alloca %S.gen.Val, align 16 - %a261 = alloca %S.gen.Val, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a264 = alloca %S.gen.Val, align 16 - %a290 = alloca %S.gen.Val, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca %S.ast.Type, align 16 - %a369 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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.3616, 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 %then5633, label %endif5635 -then5633: - %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 %then5636, label %endif5638 -then5636: - %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.3617, i64 52, i64 0 }) - br label %endif5638 -endif5638: - 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.cond5639 -for.cond5639: - %t31 = load i64, ptr %a30 - %t32 = icmp slt i64 %t31, %t29 - br i1 %t32, label %for.body5640, label %for.end5642 -for.body5640: - %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 %range5643, label %inrange5644 -range5643: - call void @finch_panic_index(ptr @.str.3618, i64 2866, i64 %t36, i64 %t38) - unreachable -inrange5644: - %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.3619, 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.from5645 -logic.from5645: - br i1 %t52, label %logic.rhs5646, label %logic.end5647 -logic.rhs5646: - %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.3620, 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.rend5648 -logic.rend5648: - br label %logic.end5647 -logic.end5647: - %t59 = phi i1 [ false, %logic.from5645 ], [ %t58, %logic.rend5648 ] - br i1 %t59, label %then5649, label %endif5651 -then5649: - %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 %range5652, label %inrange5653 -range5652: - call void @finch_panic_index(ptr @.str.3621, i64 2868, i64 0, i64 %t62) - unreachable -inrange5653: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 - %t66 = load %S.ast.Node, ptr %t65 - store %S.ast.Node %t66, ptr %a67 - call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) - %t69 = load %S.ast.Node, ptr %a68 - %t70 = load %S.ast.Node, ptr %a46 - store %S.ast.Node %t69, ptr %a46 - store %S.ast.Node %t70, ptr %a71 - call void @finch.drop.S_ast_Node(ptr %a71) - br label %endif5651 -endif5651: - %t72 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.3622, i64 5, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then5654, label %else5655 -then5654: - store i1 true, ptr %a25 - br label %endif5656 -else5655: - %t78 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3623, i64 3, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp eq i32 %t82, 0 - br i1 %t83, label %then5657, label %endif5659 -then5657: - store i1 false, ptr %a24 - br label %endif5659 -endif5659: - br label %endif5656 -endif5656: - call void @finch.drop.S_ast_Node(ptr %a46) - br label %for.step5641 -for.step5641: - %t84 = load i64, ptr %a30 - %t85 = add i64 %t84, 1 - store i64 %t85, ptr %a30 - br label %for.cond5639 -for.end5642: - %t86 = load ptr, ptr %a1 - %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range5660, label %inrange5661 -range5660: - call void @finch_panic_index(ptr @.str.3624, i64 2876, i64 0, i64 %t89) - unreachable -inrange5661: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i64 0 - %t93 = load %S.ast.Node, ptr %t92 - %t94 = call %S.gen.Val @finch.gen.expr(ptr %t86, %S.ast.Node %t93) - %t95 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t94, ptr %a10 - store %S.gen.Val %t95, ptr %a96 - call void @finch.drop.S_gen_Val(ptr %a96) - %t97 = load ptr, ptr %a1 - %t98 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t99 = load { ptr, i64, i64 }, ptr %t98 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 1, %t100 - br i1 %t101, label %range5662, label %inrange5663 -range5662: - call void @finch_panic_index(ptr @.str.3625, i64 2877, i64 1, i64 %t100) - unreachable -inrange5663: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Node, ptr %t102, i64 1 - %t104 = load %S.ast.Node, ptr %t103 - %t105 = call %S.gen.Val @finch.gen.expr(ptr %t97, %S.ast.Node %t104) - %t106 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t105, ptr %a11 - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - %t108 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3626, i64 4, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.from5664 -logic.from5664: - br i1 %t114, label %logic.end5666, label %logic.rhs5665 -logic.rhs5665: - %t115 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0 - %t117 = load { ptr, i64, i64 }, ptr %t116 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.3627, i64 4, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.rend5667 -logic.rend5667: - br label %logic.end5666 -logic.end5666: - %t122 = phi i1 [ true, %logic.from5664 ], [ %t121, %logic.rend5667 ] - br i1 %t122, label %then5668, label %endif5670 -then5668: - %t123 = load ptr, ptr %a1 - %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t125 = load { ptr, i64, i64 }, ptr %t124 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 0, %t126 - br i1 %t127, label %range5671, label %inrange5672 -range5671: - call void @finch_panic_index(ptr @.str.3628, i64 2879, i64 0, i64 %t126) - unreachable -inrange5672: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds %S.ast.Node, ptr %t128, i64 0 - %t130 = load %S.ast.Node, ptr %t129 - call void @finch.gen.fail(ptr %t123, %S.ast.Node %t130, { ptr, i64, i64 } { ptr @.str.3629, i64 35, i64 0 }) - br label %endif5670 -endif5670: - %t131 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.3630, 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.from5673 -logic.from5673: - br i1 %t137, label %logic.end5675, label %logic.rhs5674 -logic.rhs5674: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.3631, i64 4, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br label %logic.rend5676 -logic.rend5676: - br label %logic.end5675 -logic.end5675: - %t145 = phi i1 [ true, %logic.from5673 ], [ %t144, %logic.rend5676 ] - br i1 %t145, label %then5677, label %endif5679 -then5677: - %t146 = load ptr, ptr %a1 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 1, %t149 - br i1 %t150, label %range5680, label %inrange5681 -range5680: - call void @finch_panic_index(ptr @.str.3632, i64 2882, i64 1, i64 %t149) - unreachable -inrange5681: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 1 - %t153 = load %S.ast.Node, ptr %t152 - call void @finch.gen.fail(ptr %t146, %S.ast.Node %t153, { ptr, i64, i64 } { ptr @.str.3633, i64 37, i64 0 }) - br label %endif5679 -endif5679: - %t154 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t155 = load %S.ast.Type, ptr %t154 - store %S.ast.Type %t155, ptr %a156 - call void @finch.copy.S_ast_Type(ptr %a157, ptr %a156) - %t158 = load %S.ast.Type, ptr %a157 - store %S.ast.Type %t158, ptr %a159 - %t160 = load i1, ptr %a24 - br label %logic.from5682 -logic.from5682: - br i1 %t160, label %logic.rhs5683, label %logic.end5684 -logic.rhs5683: - %t161 = load i1, ptr %a25 - br label %logic.rend5685 -logic.rend5685: - br label %logic.end5684 -logic.end5684: - %t162 = phi i1 [ false, %logic.from5682 ], [ %t161, %logic.rend5685 ] - br i1 %t162, label %then5686, label %endif5688 -then5686: - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3634, i64 5, i64 0 }) - %t164 = load %S.ast.Type, ptr %a159 - store %S.ast.Type %t163, ptr %a159 - store %S.ast.Type %t164, ptr %a165 - call void @finch.drop.S_ast_Type(ptr %a165) - br label %endif5688 -endif5688: - %t166 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load %S.ast.Type, ptr %a159 - %t169 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t167, %S.ast.Type %t168) - %t170 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t169, ptr %a8 - store %S.ast.Type %t170, ptr %a171 - call void @finch.drop.S_ast_Type(ptr %a171) - store i1 true, ptr %a9 - call void @finch.drop.S_ast_Type(ptr %a159) - br label %endif5635 -endif5635: - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a8 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t172, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t176, ptr %a178 - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = load %S.ast.Type, ptr %a8 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t181) - %t183 = load { ptr, i64, i64 }, ptr %a178 - call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t182, { ptr, i64, i64 } { ptr @.str.3635, i64 15, i64 0 }, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t182, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load ptr, ptr %a1 - %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic5689, label %ok5690 -panic5689: - call void @finch_panic(ptr @.str.3636, i64 2893, ptr @.str.3637) - unreachable -ok5690: - %t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 11 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load i64, ptr %t188 - store i64 %t189, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a178 - %t193 = load %S.ast.Type, ptr %a8 - call void @finch.gen.holdAddr(ptr %t191, { ptr, i64, i64 } %t192, %S.ast.Type %t193) - %t194 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = sdiv i64 %t196, 2 - store i64 0, ptr %a198 - br label %for.cond5691 -for.cond5691: - %t199 = load i64, ptr %a198 - %t200 = icmp slt i64 %t199, %t197 - br i1 %t200, label %for.body5692, label %for.end5694 -for.body5692: - %t201 = load ptr, ptr %a1 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic5695, label %ok5696 -panic5695: - call void @finch_panic(ptr @.str.3638, i64 2896, ptr @.str.3639) - unreachable -ok5696: - %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 11 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - store i64 %t205, ptr %a206 - %t207 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t207, ptr %a208 - call void @finch.copy.S_gen_Val(ptr %a209, ptr %a208) - %t210 = load %S.gen.Val, ptr %a209 - store %S.gen.Val %t210, ptr %a211 - %t212 = load i64, ptr %a198 - %t213 = icmp eq i64 %t212, 0 - br label %logic.from5697 -logic.from5697: - br i1 %t213, label %logic.rhs5698, label %logic.end5699 -logic.rhs5698: - %t214 = load i1, ptr %a9 - br label %logic.rend5700 -logic.rend5700: - br label %logic.end5699 -logic.end5699: - %t215 = phi i1 [ false, %logic.from5697 ], [ %t214, %logic.rend5700 ] - %t216 = xor i1 %t215, true - br i1 %t216, label %then5701, label %endif5703 -then5701: - %t217 = load ptr, ptr %a1 - %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t219 = load i64, ptr %a198 - %t220 = mul i64 2, %t219 - %t221 = load { ptr, i64, i64 }, ptr %t218 - %t222 = extractvalue { ptr, i64, i64 } %t221, 1 - %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range5704, label %inrange5705 -range5704: - call void @finch_panic_index(ptr @.str.3640, i64 2899, i64 %t220, i64 %t222) - unreachable -inrange5705: - %t224 = extractvalue { ptr, i64, i64 } %t221, 0 - %t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220 - %t226 = load %S.ast.Node, ptr %t225 - %t227 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t228 = load { ptr, i64, i64 }, ptr %t227 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 0, %t229 - br i1 %t230, label %range5706, label %inrange5707 -range5706: - call void @finch_panic_index(ptr @.str.3641, i64 2899, i64 0, i64 %t229) - unreachable -inrange5707: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds %S.ast.Type, ptr %t231, i64 0 - %t233 = load %S.ast.Type, ptr %t232 - %t234 = call %S.gen.Val @finch.gen.exprWant(ptr %t217, %S.ast.Node %t226, %S.ast.Type %t233) - %t235 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t234, ptr %a211 - store %S.gen.Val %t235, ptr %a236 - call void @finch.drop.S_gen_Val(ptr %a236) - br label %endif5703 -endif5703: - %t237 = load ptr, ptr %a1 - %t238 = load %S.gen.Val, ptr %a211 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 0, %t241 - br i1 %t242, label %range5708, label %inrange5709 -range5708: - call void @finch_panic_index(ptr @.str.3642, i64 2901, i64 0, i64 %t241) - unreachable -inrange5709: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t247 = load i64, ptr %a198 - %t248 = mul i64 2, %t247 - %t249 = load { ptr, i64, i64 }, ptr %t246 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5710, label %inrange5711 -range5710: - call void @finch_panic_index(ptr @.str.3643, i64 2901, i64 %t248, i64 %t250) - unreachable -inrange5711: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - %t255 = call %S.gen.Val @finch.gen.coerce(ptr %t237, %S.gen.Val %t238, %S.ast.Type %t245, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3644, i64 21, i64 0 }) - %t256 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t255, ptr %a211 - store %S.gen.Val %t256, ptr %a257 - call void @finch.drop.S_gen_Val(ptr %a257) - %t258 = load ptr, ptr %a1 - %t259 = load %S.gen.Val, ptr %a211 - call void @finch.gen.hold(ptr %t258, %S.gen.Val %t259) - %t260 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t260, ptr %a261 - call void @finch.copy.S_gen_Val(ptr %a262, ptr %a261) - %t263 = load %S.gen.Val, ptr %a262 - store %S.gen.Val %t263, ptr %a264 - %t265 = load i64, ptr %a198 - %t266 = icmp eq i64 %t265, 0 - br label %logic.from5712 -logic.from5712: - br i1 %t266, label %logic.rhs5713, label %logic.end5714 -logic.rhs5713: - %t267 = load i1, ptr %a9 - br label %logic.rend5715 -logic.rend5715: - br label %logic.end5714 -logic.end5714: - %t268 = phi i1 [ false, %logic.from5712 ], [ %t267, %logic.rend5715 ] - %t269 = xor i1 %t268, true - br i1 %t269, label %then5716, label %endif5718 -then5716: - %t270 = load ptr, ptr %a1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t272 = load i64, ptr %a198 - %t273 = mul i64 2, %t272 - %t274 = add i64 %t273, 1 - %t275 = load { ptr, i64, i64 }, ptr %t271 - %t276 = extractvalue { ptr, i64, i64 } %t275, 1 - %t277 = icmp uge i64 %t274, %t276 - br i1 %t277, label %range5719, label %inrange5720 -range5719: - call void @finch_panic_index(ptr @.str.3645, i64 2905, i64 %t274, i64 %t276) - unreachable -inrange5720: - %t278 = extractvalue { ptr, i64, i64 } %t275, 0 - %t279 = getelementptr inbounds %S.ast.Node, ptr %t278, i64 %t274 - %t280 = load %S.ast.Node, ptr %t279 - %t281 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t282 = load { ptr, i64, i64 }, ptr %t281 - %t283 = extractvalue { ptr, i64, i64 } %t282, 1 - %t284 = icmp uge i64 1, %t283 - br i1 %t284, label %range5721, label %inrange5722 -range5721: - call void @finch_panic_index(ptr @.str.3646, i64 2905, i64 1, i64 %t283) - unreachable -inrange5722: - %t285 = extractvalue { ptr, i64, i64 } %t282, 0 - %t286 = getelementptr inbounds %S.ast.Type, ptr %t285, i64 1 - %t287 = load %S.ast.Type, ptr %t286 - %t288 = call %S.gen.Val @finch.gen.exprWant(ptr %t270, %S.ast.Node %t280, %S.ast.Type %t287) - %t289 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t288, ptr %a264 - store %S.gen.Val %t289, ptr %a290 - call void @finch.drop.S_gen_Val(ptr %a290) - br label %endif5718 -endif5718: - %t291 = load ptr, ptr %a1 - %t292 = load %S.gen.Val, ptr %a264 - %t293 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t294 = load { ptr, i64, i64 }, ptr %t293 - %t295 = extractvalue { ptr, i64, i64 } %t294, 1 - %t296 = icmp uge i64 1, %t295 - br i1 %t296, label %range5723, label %inrange5724 -range5723: - call void @finch_panic_index(ptr @.str.3647, i64 2907, i64 1, i64 %t295) - unreachable -inrange5724: - %t297 = extractvalue { ptr, i64, i64 } %t294, 0 - %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 1 - %t299 = load %S.ast.Type, ptr %t298 - %t300 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t301 = load i64, ptr %a198 - %t302 = mul i64 2, %t301 - %t303 = add i64 %t302, 1 - %t304 = load { ptr, i64, i64 }, ptr %t300 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range5725, label %inrange5726 -range5725: - call void @finch_panic_index(ptr @.str.3648, i64 2907, i64 %t303, i64 %t305) - unreachable -inrange5726: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Node, ptr %t307, i64 %t303 - %t309 = load %S.ast.Node, ptr %t308 - %t310 = call %S.gen.Val @finch.gen.coerce(ptr %t291, %S.gen.Val %t292, %S.ast.Type %t299, %S.ast.Node %t309, { ptr, i64, i64 } { ptr @.str.3649, i64 23, i64 0 }) - %t311 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t310, ptr %a264 - store %S.gen.Val %t311, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a264 - %t315 = call { ptr, i64, i64 } @finch.gen.own(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = load ptr, ptr %a1 - %t318 = load { ptr, i64, i64 }, ptr %a178 - %t319 = load %S.ast.Type, ptr %a8 - %t320 = load %S.gen.Val, ptr %a211 - %t321 = load %S.ast.Node, ptr %a2 - %t322 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t317, { ptr, i64, i64 } %t318, %S.ast.Type %t319, %S.gen.Val %t320, i1 false, %S.ast.Node %t321) - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a323 - %t326 = load %S.ast.Type, ptr %a8 - %t327 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t324, { ptr, i64, i64 } %t325, %S.ast.Type %t326, i64 2) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = load { ptr, i64, i64 }, ptr %a328 - %t331 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t332 = load { ptr, i64, i64 }, ptr %t331 - %t333 = extractvalue { ptr, i64, i64 } %t332, 1 - %t334 = icmp uge i64 1, %t333 - br i1 %t334, label %range5727, label %inrange5728 -range5727: - call void @finch_panic_index(ptr @.str.3650, i64 2911, i64 1, i64 %t333) - unreachable -inrange5728: - %t335 = extractvalue { ptr, i64, i64 } %t332, 0 - %t336 = getelementptr inbounds %S.ast.Type, ptr %t335, i64 1 - %t337 = load %S.ast.Type, ptr %t336 - call void @finch.gen.dropAt(ptr %t329, { ptr, i64, i64 } %t330, %S.ast.Type %t337) - %t338 = load ptr, ptr %a1 - %t339 = load ptr, ptr %a1 - %t340 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t341 = load { ptr, i64, i64 }, ptr %t340 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 1, %t342 - br i1 %t343, label %range5729, label %inrange5730 -range5729: - call void @finch_panic_index(ptr @.str.3651, i64 2912, i64 1, i64 %t342) - unreachable -inrange5730: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Type, ptr %t344, i64 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t339, %S.ast.Type %t346) - %t348 = load { ptr, i64, i64 }, ptr %a316 - %t349 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.store(ptr %t338, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t348, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load ptr, ptr %a1 - %t352 = load %S.gen.Val, ptr %a211 - call void @finch.gen.release(ptr %t351, %S.gen.Val %t352) - %t353 = load ptr, ptr %a1 - %t354 = load i64, ptr %a206 - call void @finch.gen.heldEnd(ptr %t353, i64 %t354) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a316) - call void @finch.drop.S_gen_Val(ptr %a264) - call void @finch.drop.S_gen_Val(ptr %a211) - br label %for.step5693 -for.step5693: - %t355 = load i64, ptr %a198 - %t356 = add i64 %t355, 1 - store i64 %t356, ptr %a198 - br label %for.cond5691 -for.end5694: - %t357 = load ptr, ptr %a1 - %t358 = load i64, ptr %a190 - call void @finch.gen.heldEnd(ptr %t357, i64 %t358) - %t359 = load ptr, ptr %a1 - %t360 = load ptr, ptr %a1 - %t361 = load %S.ast.Type, ptr %a8 - %t362 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t360, %S.ast.Type %t361) - %t363 = load { ptr, i64, i64 }, ptr %a178 - %t364 = call { ptr, i64, i64 } @finch.gen.load(ptr %t359, { ptr, i64, i64 } %t362, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 - %t367 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t367, ptr %a368 - call void @finch.copy.S_ast_Type(ptr %a369, ptr %a368) - %t370 = load %S.ast.Type, ptr %a369 - %t371 = insertvalue %S.gen.Val %t366, %S.ast.Type %t370, 1 - %t372 = insertvalue %S.gen.Val %t371, i1 true, 2 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.S_gen_Val(ptr %a11) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.gen.Val %t372 -} - -define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a82 = alloca %S.gen.Val, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a278 = alloca %S.gen.Val, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca %S.ast.Type, align 16 - %a351 = alloca %S.ast.Type, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca i64, align 16 - %a501 = alloca %S.ast.Type, align 16 - %a502 = alloca %S.ast.Type, align 16 - %a504 = alloca %S.ast.Type, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a515 = alloca %S.ast.Type, align 16 - %a518 = alloca %S.ast.Type, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.ast.Type, align 16 - %a753 = alloca %S.ast.Type, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5731, label %inrange5732 -range5731: - call void @finch_panic_index(ptr @.str.3652, i64 2922, i64 0, i64 %t13) - unreachable -inrange5732: - %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 %range5733, label %inrange5734 -range5733: - call void @finch_panic_index(ptr @.str.3653, i64 2923, i64 1, i64 %t24) - unreachable -inrange5734: - %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.3654, 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.from5735 -logic.from5735: - br i1 %t37, label %logic.end5737, label %logic.rhs5736 -logic.rhs5736: - %t38 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3655, 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.rend5738 -logic.rend5738: - br label %logic.end5737 -logic.end5737: - %t43 = phi i1 [ true, %logic.from5735 ], [ %t42, %logic.rend5738 ] - br label %logic.from5739 -logic.from5739: - br i1 %t43, label %logic.end5741, label %logic.rhs5740 -logic.rhs5740: - %t44 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.3656, 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.rend5742 -logic.rend5742: - br label %logic.end5741 -logic.end5741: - %t49 = phi i1 [ true, %logic.from5739 ], [ %t48, %logic.rend5742 ] - br i1 %t49, label %then5743, label %endif5745 -then5743: - %t50 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3657, 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 %then5746, label %else5747 -then5746: - %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 %endif5748 -else5747: - %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 %endif5748 -endif5748: - %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 %range5749, label %inrange5750 -range5749: - call void @finch_panic_index(ptr @.str.3658, i64 2930, i64 1, i64 %t65) - unreachable -inrange5750: - %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 %range5751, label %inrange5752 -range5751: - call void @finch_panic_index(ptr @.str.3659, i64 2930, i64 1, i64 %t75) - unreachable -inrange5752: - %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.3660, i64 7, i64 0 }) - store %S.gen.Val %t71, ptr %a81 - call void @finch.drop.S_gen_Val(ptr %a81) - store %S.gen.Val %t80, ptr %a82 - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a3 - %t85 = load ptr, ptr %a1 - %t86 = load %S.gen.Val, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t86) - %t88 = load %S.ast.Type, ptr %a4 - %t89 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t83, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t87, %S.ast.Type %t88) - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t89, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load %S.gen.Val, ptr %a82 - call void @finch.gen.release(ptr %t92, %S.gen.Val %t93) - %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3661, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3662, i64 3, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t94, { ptr, i64, i64 } %t104) - store { ptr, i64, i64 } %t104, ptr %a106 - call void @finch_str_drop(ptr %a106) - store { ptr, i64, i64 } %t105, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.3663, i64 3, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then5753, label %endif5755 -then5753: - %t113 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t113, ptr %a114 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 - %t118 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3664, i64 4, i64 0 }) - %t119 = insertvalue %S.gen.Val %t117, %S.ast.Type %t118, 1 - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t119 -endif5755: - %t120 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.3665, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then5756, label %endif5758 -then5756: - %t125 = load ptr, ptr %a1 - %t126 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t125, { ptr, i64, i64 } { ptr @.str.3666, i64 10, i64 0 }) - store { ptr, i64, i64 } %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t128, { ptr, i64, i64 } { ptr @.str.3667, i64 10, i64 0 }) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a107 - %t133 = load { ptr, i64, i64 }, ptr %a127 - %t134 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.condBr(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t134) - %t135 = load ptr, ptr %a1 - %t136 = load { ptr, i64, i64 }, ptr %a127 - call void @finch.gen.label(ptr %t135, { ptr, i64, i64 } %t136) - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a3 - %t139 = load %S.ast.Type, ptr %a4 - %t140 = load { ptr, i64, i64 }, ptr %a91 - %t141 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t137, { ptr, i64, i64 } %t138, %S.ast.Type %t139, { ptr, i64, i64 } %t140) - store { ptr, i64, i64 } %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a142 - %t146 = load %S.ast.Type, ptr %a4 - %t147 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Type %t146, i64 1) - %t148 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t143, { ptr, i64, i64 } %t147, %S.ast.Type %t148) - store { ptr, i64, i64 } %t147, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a142 - %t153 = load %S.ast.Type, ptr %a4 - %t154 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t151, { ptr, i64, i64 } %t152, %S.ast.Type %t153, i64 2) - %t155 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t150, { ptr, i64, i64 } %t154, %S.ast.Type %t155) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load ptr, ptr %a1 - %t158 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3668, i64 35, i64 0 }, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t162, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3669, i64 6, i64 0 }, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - %t168 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t167, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.3670, i64 6, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = load ptr, ptr %a1 - %t180 = load %S.ast.Type, ptr %a4 - %t181 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t179, %S.ast.Type %t180) - store { ptr, i64, i64 } %t178, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t178, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t181, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.3671, i64 1, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.br(ptr %t194, { ptr, i64, i64 } %t195) - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t198, ptr %a199 - call void @finch_str_copy(ptr %a200, ptr %a199) - %t201 = load { ptr, i64, i64 }, ptr %a200 - %t202 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t201, 0 - %t203 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3672, i64 4, i64 0 }) - %t204 = insertvalue %S.gen.Val %t202, %S.ast.Type %t203, 1 - call void @finch_str_drop(ptr %a142) - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a127) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t204 -endif5758: - %t205 = load ptr, ptr %a1 - %t206 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t205, { ptr, i64, i64 } { ptr @.str.3673, i64 9, i64 0 }) - store { ptr, i64, i64 } %t206, ptr %a207 - %t208 = load ptr, ptr %a1 - %t209 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t208, { ptr, i64, i64 } { ptr @.str.3674, i64 11, i64 0 }) - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t211, { ptr, i64, i64 } { ptr @.str.3675, i64 8, i64 0 }) - store { ptr, i64, i64 } %t212, ptr %a213 - %t214 = load ptr, ptr %a1 - %t215 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t214, { ptr, i64, i64 } { ptr @.str.3676, i64 8, i64 0 }) - store { ptr, i64, i64 } %t215, ptr %a216 - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t217, { ptr, i64, i64 } { ptr @.str.3677, i64 7, i64 0 }) - store { ptr, i64, i64 } %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a107 - %t222 = load { ptr, i64, i64 }, ptr %a207 - %t223 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.condBr(ptr %t220, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223) - %t224 = load ptr, ptr %a1 - %t225 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.label(ptr %t224, { ptr, i64, i64 } %t225) - %t226 = load ptr, ptr %a1 - %t227 = load ptr, ptr %a1 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a32 - %t230 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t228, %S.ast.Type %t229) - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load { ptr, i64, i64 }, ptr %a3 - %t234 = load %S.ast.Type, ptr %a4 - %t235 = load { ptr, i64, i64 }, ptr %a91 - %t236 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } %t233, %S.ast.Type %t234, { ptr, i64, i64 } %t235) - %t237 = load %S.ast.Type, ptr %a4 - %t238 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t231, { ptr, i64, i64 } %t236, %S.ast.Type %t237, i64 2) - store { ptr, i64, i64 } %t236, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } %t230, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t230, ptr %a241 - call void @finch_str_drop(ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load %S.ast.Type, ptr %a32 - %t244 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t226, { ptr, i64, i64 } %t240, %S.ast.Type %t243) - store { ptr, i64, i64 } %t240, ptr %a245 - call void @finch_str_drop(ptr %a245) - store { ptr, i64, i64 } %t244, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t248) - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.label(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a1 - %t252 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t251, { ptr, i64, i64 } %t252) - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.label(ptr %t253, { ptr, i64, i64 } %t254) - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load ptr, ptr %a1 - %t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t259 = load { ptr, i64, i64 }, ptr %t258 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 2, %t260 - br i1 %t261, label %range5759, label %inrange5760 -range5759: - call void @finch_panic_index(ptr @.str.3678, i64 2963, i64 2, i64 %t260) - unreachable -inrange5760: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Node, ptr %t262, i64 2 - %t264 = load %S.ast.Node, ptr %t263 - %t265 = load %S.ast.Type, ptr %a32 - %t266 = call %S.gen.Val @finch.gen.exprWant(ptr %t257, %S.ast.Node %t264, %S.ast.Type %t265) - %t267 = load %S.ast.Type, ptr %a32 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = extractvalue { ptr, i64, i64 } %t269, 1 - %t271 = icmp uge i64 2, %t270 - br i1 %t271, label %range5761, label %inrange5762 -range5761: - call void @finch_panic_index(ptr @.str.3679, i64 2963, i64 2, i64 %t270) - unreachable -inrange5762: - %t272 = extractvalue { ptr, i64, i64 } %t269, 0 - %t273 = getelementptr inbounds %S.ast.Node, ptr %t272, i64 2 - %t274 = load %S.ast.Node, ptr %t273 - %t275 = call %S.gen.Val @finch.gen.coerce(ptr %t256, %S.gen.Val %t266, %S.ast.Type %t267, %S.ast.Node %t274, { ptr, i64, i64 } { ptr @.str.3680, i64 11, i64 0 }) - store %S.gen.Val %t266, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - %t277 = call { ptr, i64, i64 } @finch.gen.own(ptr %t255, %S.gen.Val %t275) - store %S.gen.Val %t275, ptr %a278 - call void @finch.drop.S_gen_Val(ptr %a278) - store { ptr, i64, i64 } %t277, ptr %a279 - %t280 = load ptr, ptr %a1 - %t281 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.br(ptr %t280, { ptr, i64, i64 } %t281) - %t282 = load ptr, ptr %a1 - %t283 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.label(ptr %t282, { ptr, i64, i64 } %t283) - %t284 = load ptr, ptr %a1 - %t285 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t284, { ptr, i64, i64 } %t285) - %t286 = load ptr, ptr %a1 - %t287 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.label(ptr %t286, { ptr, i64, i64 } %t287) - %t288 = load ptr, ptr %a1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a32 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } { ptr @.str.3681, i64 4, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.3682, i64 3, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t301, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t301, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3683, i64 3, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t312, ptr %a315 - store { ptr, i64, i64 } %t313, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t312, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3684, i64 6, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - %t324 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t323, ptr %a326 - store { ptr, i64, i64 } %t324, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.3685, i64 3, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t334, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t334, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.3686, i64 2, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t345) - store { ptr, i64, i64 } %t345, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t346, 0 - %t349 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t349, ptr %a350 - call void @finch.copy.S_ast_Type(ptr %a351, ptr %a350) - %t352 = load %S.ast.Type, ptr %a351 - %t353 = insertvalue %S.gen.Val %t348, %S.ast.Type %t352, 1 - %t354 = load ptr, ptr %a1 - %t355 = load %S.ast.Type, ptr %a32 - %t356 = call i1 @finch.gen.owning(ptr %t354, %S.ast.Type %t355) - %t357 = insertvalue %S.gen.Val %t353, i1 %t356, 2 - call void @finch_str_drop(ptr %a279) - call void @finch_str_drop(ptr %a246) - call void @finch_str_drop(ptr %a219) - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a213) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a207) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t357 -endif5745: - %t358 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.3687, i64 5, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then5763, label %endif5765 -then5763: - %t363 = load ptr, ptr %a1 - %t364 = load %S.ast.Node, ptr %a2 - %t365 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t363, %S.ast.Node %t364, i64 1, i64 0, { ptr, i64, i64 } %t365) - %t366 = load ptr, ptr %a1 - %t367 = load %S.ast.Type, ptr %a21 - %t368 = call i1 @finch.gen.owning(ptr %t366, %S.ast.Type %t367) - br label %logic.from5766 -logic.from5766: - br i1 %t368, label %logic.end5768, label %logic.rhs5767 -logic.rhs5767: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Type, ptr %a32 - %t371 = call i1 @finch.gen.owning(ptr %t369, %S.ast.Type %t370) - br label %logic.rend5769 -logic.rend5769: - br label %logic.end5768 -logic.end5768: - %t372 = phi i1 [ true, %logic.from5766 ], [ %t371, %logic.rend5769 ] - br i1 %t372, label %then5770, label %endif5772 -then5770: - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a4 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - store { ptr, i64, i64 } { ptr @.str.3689, i64 23, i64 0 }, ptr %a379 - store { ptr, i64, i64 } %t377, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t382, ptr %a384 - store { ptr, i64, i64 } { ptr @.str.3690, i64 6, i64 0 }, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - %t388 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t387, ptr %a390 - store { ptr, i64, i64 } %t388, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t387, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - store { ptr, i64, i64 } %t393, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.3691, i64 14, i64 0 }, ptr %a396 - call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) - store { ptr, i64, i64 } %t393, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load { ptr, i64, i64 }, ptr %a394 - %t399 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t398) - store { ptr, i64, i64 } %t398, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.3688, i64 3, i64 0 }, { ptr, i64, i64 } %t399) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store { ptr, i64, i64 } %t401, ptr %a403 - %t404 = load ptr, ptr %a1 - %t405 = load { ptr, i64, i64 }, ptr %a403 - %t406 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t404, { ptr, i64, i64 } %t405) - store { ptr, i64, i64 } %t406, ptr %a407 - %t408 = load ptr, ptr %a1 - %t409 = load { ptr, i64, i64 }, ptr %a3 - %t410 = load %S.ast.Type, ptr %a4 - %t411 = load { ptr, i64, i64 }, ptr %a407 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 3, %t412 - br i1 %t413, label %range5773, label %inrange5774 -range5773: - call void @finch_panic_index(ptr @.str.3692, i64 2975, i64 3, i64 %t412) - unreachable -inrange5774: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 3 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t408, { ptr, i64, i64 } %t409, %S.ast.Type %t410, { ptr, i64, i64 } %t416) - store { ptr, i64, i64 } %t417, ptr %a418 - %t419 = load ptr, ptr %a1 - %t420 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t419, { ptr, i64, i64 } { ptr @.str.3693, i64 10, i64 0 }) - store { ptr, i64, i64 } %t420, ptr %a421 - %t422 = load ptr, ptr %a1 - %t423 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t422, { ptr, i64, i64 } { ptr @.str.3694, i64 10, i64 0 }) - store { ptr, i64, i64 } %t423, ptr %a424 - %t425 = load ptr, ptr %a1 - %t426 = load ptr, ptr %a1 - %t427 = load ptr, ptr %a1 - %t428 = load ptr, ptr %a1 - %t429 = load { ptr, i64, i64 }, ptr %a418 - %t430 = load %S.ast.Type, ptr %a4 - %t431 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t428, { ptr, i64, i64 } %t429, %S.ast.Type %t430, i64 0) - %t432 = call { ptr, i64, i64 } @finch.gen.load(ptr %t427, { ptr, i64, i64 } { ptr @.str.3696, i64 3, i64 0 }, { ptr, i64, i64 } %t431) - store { ptr, i64, i64 } %t431, ptr %a433 - call void @finch_str_drop(ptr %a433) - store { ptr, i64, i64 } { ptr @.str.3695, i64 12, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t432, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t432, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.3697, i64 3, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t426, { ptr, i64, i64 } %t443) - store { ptr, i64, i64 } %t443, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load { ptr, i64, i64 }, ptr %a421 - %t447 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.condBr(ptr %t425, { ptr, i64, i64 } %t444, { ptr, i64, i64 } %t446, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t444, ptr %a448 - call void @finch_str_drop(ptr %a448) - %t449 = load ptr, ptr %a1 - %t450 = load { ptr, i64, i64 }, ptr %a421 - call void @finch.gen.label(ptr %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load ptr, ptr %a1 - %t453 = load { ptr, i64, i64 }, ptr %a418 - %t454 = load %S.ast.Type, ptr %a4 - %t455 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t452, { ptr, i64, i64 } %t453, %S.ast.Type %t454, i64 1) - %t456 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t451, { ptr, i64, i64 } %t455, %S.ast.Type %t456) - store { ptr, i64, i64 } %t455, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load ptr, ptr %a1 - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a418 - %t461 = load %S.ast.Type, ptr %a4 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 2) - %t463 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t458, { ptr, i64, i64 } %t462, %S.ast.Type %t463) - store { ptr, i64, i64 } %t462, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load ptr, ptr %a1 - %t466 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.br(ptr %t465, { ptr, i64, i64 } %t466) - %t467 = load ptr, ptr %a1 - %t468 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.label(ptr %t467, { ptr, i64, i64 } %t468) - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.loopEnd(ptr %t469, { ptr, i64, i64 } %t470) - call void @finch_str_drop(ptr %a424) - call void @finch_str_drop(ptr %a421) - call void @finch_str_drop(ptr %a418) - call void @finch.drop.arr_str(ptr %a407) - call void @finch_str_drop(ptr %a403) - br label %endif5772 -endif5772: - %t471 = load ptr, ptr %a1 - %t472 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3698, i64 31, i64 0 }, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - %t476 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t476, ptr %a478 - store { ptr, i64, i64 } { ptr @.str.3699, i64 1, i64 0 }, ptr %a479 - call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) - store { ptr, i64, i64 } %t476, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a477 - call void @finch.gen.emit(ptr %t471, { ptr, i64, i64 } %t481) - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3700, i64 4, i64 0 }) - %t484 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t483, 1 - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t484 -endif5765: - %t485 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t485, ptr %a486 - store { ptr, i64, i64 } { ptr @.str.3701, i64 4, i64 0 }, ptr %a487 - %t488 = call i32 @finch_str_eq(ptr %a486, ptr %a487) - %t489 = icmp ne i32 %t488, 0 - br label %logic.from5775 -logic.from5775: - br i1 %t489, label %logic.end5777, label %logic.rhs5776 -logic.rhs5776: - %t490 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t490, ptr %a491 - store { ptr, i64, i64 } { ptr @.str.3702, i64 6, i64 0 }, ptr %a492 - %t493 = call i32 @finch_str_eq(ptr %a491, ptr %a492) - %t494 = icmp ne i32 %t493, 0 - br label %logic.rend5778 -logic.rend5778: - br label %logic.end5777 -logic.end5777: - %t495 = phi i1 [ true, %logic.from5775 ], [ %t494, %logic.rend5778 ] - br i1 %t495, label %then5779, label %endif5781 -then5779: - %t496 = load ptr, ptr %a1 - %t497 = load %S.ast.Node, ptr %a2 - %t498 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t496, %S.ast.Node %t497, i64 1, i64 0, { ptr, i64, i64 } %t498) - store i64 1, ptr %a499 - %t500 = load %S.ast.Type, ptr %a21 - store %S.ast.Type %t500, ptr %a501 - call void @finch.copy.S_ast_Type(ptr %a502, ptr %a501) - %t503 = load %S.ast.Type, ptr %a502 - store %S.ast.Type %t503, ptr %a504 - %t505 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t505, ptr %a506 - store { ptr, i64, i64 } { ptr @.str.3703, i64 6, i64 0 }, ptr %a507 - %t508 = call i32 @finch_str_eq(ptr %a506, ptr %a507) - %t509 = icmp ne i32 %t508, 0 - br i1 %t509, label %then5782, label %endif5784 -then5782: - store i64 2, ptr %a499 - %t510 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = load %S.ast.Type, ptr %a504 - store %S.ast.Type %t513, ptr %a504 - store %S.ast.Type %t514, ptr %a515 - call void @finch.drop.S_ast_Type(ptr %a515) - br label %endif5784 -endif5784: - %t516 = load %S.ast.Type, ptr %a504 - %t517 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t516) - store %S.ast.Type %t517, ptr %a518 - %t519 = load ptr, ptr %a1 - %t520 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t519, { ptr, i64, i64 } { ptr @.str.3704, i64 17, i64 0 }) - store { ptr, i64, i64 } %t520, ptr %a521 - %t522 = load ptr, ptr %a1 - %t523 = load { ptr, i64, i64 }, ptr %a521 - call void @finch.gen.store(ptr %t522, { ptr, i64, i64 } { ptr @.str.3705, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3706, i64 15, i64 0 }, { ptr, i64, i64 } %t523) - %t524 = load ptr, ptr %a1 - %t525 = load ptr, ptr %a1 - %t526 = load ptr, ptr %a1 - %t527 = load %S.ast.Type, ptr %a4 - %t528 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t526, %S.ast.Type %t527) - store { ptr, i64, i64 } { ptr @.str.3708, i64 23, i64 0 }, ptr %a530 - store { ptr, i64, i64 } %t528, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } %t533, ptr %a535 - store { ptr, i64, i64 } { ptr @.str.3709, i64 6, i64 0 }, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = load { ptr, i64, i64 }, ptr %a534 - %t539 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t538, ptr %a541 - store { ptr, i64, i64 } %t539, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t538, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - store { ptr, i64, i64 } %t544, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.3710, i64 14, i64 0 }, ptr %a547 - call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) - store { ptr, i64, i64 } %t544, ptr %a548 - call void @finch_str_drop(ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a545 - %t550 = call { ptr, i64, i64 } @finch.gen.op(ptr %t525, { ptr, i64, i64 } %t549) - store { ptr, i64, i64 } %t549, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } { ptr @.str.3707, i64 3, i64 0 }, { ptr, i64, i64 } %t550) - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_drop(ptr %a553) - store { ptr, i64, i64 } %t552, ptr %a554 - %t555 = load ptr, ptr %a1 - %t556 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } { ptr @.str.3711, i64 30, i64 0 }, ptr %a558 - store { ptr, i64, i64 } %t556, ptr %a559 - call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a557 - store { ptr, i64, i64 } %t560, ptr %a562 - store { ptr, i64, i64 } { ptr @.str.3712, i64 6, i64 0 }, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t560, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - %t566 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t565, ptr %a568 - store { ptr, i64, i64 } %t566, ptr %a569 - call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569) - store { ptr, i64, i64 } %t565, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = load { ptr, i64, i64 }, ptr %a567 - store { ptr, i64, i64 } %t571, ptr %a573 - store { ptr, i64, i64 } { ptr @.str.3713, i64 6, i64 0 }, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t571, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - %t577 = load ptr, ptr %a1 - %t578 = load %S.ast.Type, ptr %a504 - %t579 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t577, %S.ast.Type %t578) - store { ptr, i64, i64 } %t576, ptr %a581 - store { ptr, i64, i64 } %t579, ptr %a582 - call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) - store { ptr, i64, i64 } %t576, ptr %a583 - call void @finch_str_drop(ptr %a583) - store { ptr, i64, i64 } %t579, ptr %a584 - call void @finch_str_drop(ptr %a584) - %t585 = load { ptr, i64, i64 }, ptr %a580 - store { ptr, i64, i64 } %t585, ptr %a587 - store { ptr, i64, i64 } { ptr @.str.3714, i64 1, i64 0 }, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t585, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - call void @finch.gen.emit(ptr %t555, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a591 - call void @finch_str_drop(ptr %a591) - %t592 = load ptr, ptr %a1 - %t593 = load { ptr, i64, i64 }, ptr %a521 - %t594 = call { ptr, i64, i64 } @finch.gen.load(ptr %t592, { ptr, i64, i64 } { ptr @.str.3715, i64 3, i64 0 }, { ptr, i64, i64 } %t593) - store { ptr, i64, i64 } %t594, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t596, { ptr, i64, i64 } { ptr @.str.3716, i64 3, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t599, { ptr, i64, i64 } { ptr @.str.3717, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3718, i64 1, i64 0 }, { ptr, i64, i64 } %t600) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = load ptr, ptr %a1 - %t604 = load %S.ast.Type, ptr %a4 - %t605 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t603, %S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.3720, i64 23, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.3721, i64 6, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t615, ptr %a618 - store { ptr, i64, i64 } %t616, ptr %a619 - call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) - store { ptr, i64, i64 } %t615, ptr %a620 - call void @finch_str_drop(ptr %a620) - %t621 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t621, ptr %a623 - store { ptr, i64, i64 } { ptr @.str.3722, i64 14, i64 0 }, ptr %a624 - call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624) - store { ptr, i64, i64 } %t621, ptr %a625 - call void @finch_str_drop(ptr %a625) - %t626 = load { ptr, i64, i64 }, ptr %a622 - %t627 = call { ptr, i64, i64 } @finch.gen.op(ptr %t602, { ptr, i64, i64 } %t626) - store { ptr, i64, i64 } %t626, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } { ptr @.str.3719, i64 3, i64 0 }, { ptr, i64, i64 } %t627) - store { ptr, i64, i64 } %t627, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t629, ptr %a631 - %t632 = load ptr, ptr %a1 - %t633 = load { ptr, i64, i64 }, ptr %a631 - %t634 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t632, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t634, ptr %a635 - %t636 = load ptr, ptr %a1 - %t637 = load { ptr, i64, i64 }, ptr %a3 - %t638 = load %S.ast.Type, ptr %a4 - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = extractvalue { ptr, i64, i64 } %t639, 1 - %t641 = icmp uge i64 3, %t640 - br i1 %t641, label %range5785, label %inrange5786 -range5785: - call void @finch_panic_index(ptr @.str.3723, i64 3007, i64 3, i64 %t640) - unreachable -inrange5786: - %t642 = extractvalue { ptr, i64, i64 } %t639, 0 - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %t642, i64 3 - %t644 = load { ptr, i64, i64 }, ptr %t643 - %t645 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t636, { ptr, i64, i64 } %t637, %S.ast.Type %t638, { ptr, i64, i64 } %t644) - store { ptr, i64, i64 } %t645, ptr %a646 - %t647 = load ptr, ptr %a1 - %t648 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t647, { ptr, i64, i64 } { ptr @.str.3724, i64 10, i64 0 }) - store { ptr, i64, i64 } %t648, ptr %a649 - %t650 = load ptr, ptr %a1 - %t651 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t650, { ptr, i64, i64 } { ptr @.str.3725, i64 10, i64 0 }) - store { ptr, i64, i64 } %t651, ptr %a652 - %t653 = load ptr, ptr %a1 - %t654 = load ptr, ptr %a1 - %t655 = load ptr, ptr %a1 - %t656 = load ptr, ptr %a1 - %t657 = load { ptr, i64, i64 }, ptr %a646 - %t658 = load %S.ast.Type, ptr %a4 - %t659 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t656, { ptr, i64, i64 } %t657, %S.ast.Type %t658, i64 0) - %t660 = call { ptr, i64, i64 } @finch.gen.load(ptr %t655, { ptr, i64, i64 } { ptr @.str.3727, i64 3, i64 0 }, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t659, ptr %a661 - call void @finch_str_drop(ptr %a661) - store { ptr, i64, i64 } { ptr @.str.3726, i64 12, i64 0 }, ptr %a663 - store { ptr, i64, i64 } %t660, ptr %a664 - call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) - store { ptr, i64, i64 } %t660, ptr %a665 - call void @finch_str_drop(ptr %a665) - %t666 = load { ptr, i64, i64 }, ptr %a662 - store { ptr, i64, i64 } %t666, ptr %a668 - store { ptr, i64, i64 } { ptr @.str.3728, i64 3, i64 0 }, ptr %a669 - call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) - store { ptr, i64, i64 } %t666, ptr %a670 - call void @finch_str_drop(ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a667 - %t672 = call { ptr, i64, i64 } @finch.gen.op(ptr %t654, { ptr, i64, i64 } %t671) - store { ptr, i64, i64 } %t671, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a649 - %t675 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.condBr(ptr %t653, { ptr, i64, i64 } %t672, { ptr, i64, i64 } %t674, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t672, ptr %a676 - call void @finch_str_drop(ptr %a676) - %t677 = load ptr, ptr %a1 - %t678 = load { ptr, i64, i64 }, ptr %a649 - call void @finch.gen.label(ptr %t677, { ptr, i64, i64 } %t678) - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a598 - %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t679, { ptr, i64, i64 } { ptr @.str.3729, i64 3, i64 0 }, { ptr, i64, i64 } %t680) - store { ptr, i64, i64 } %t681, ptr %a682 - %t683 = load ptr, ptr %a1 - %t684 = load ptr, ptr %a1 - %t685 = load ptr, ptr %a1 - %t686 = load %S.ast.Type, ptr %a504 - %t687 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t685, %S.ast.Type %t686) - store { ptr, i64, i64 } { ptr @.str.3730, i64 23, i64 0 }, ptr %a689 - store { ptr, i64, i64 } %t687, ptr %a690 - call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) - store { ptr, i64, i64 } %t687, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a688 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.3731, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.3732, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } %t708, ptr %a711 - store { ptr, i64, i64 } %t709, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t708, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - %t715 = call { ptr, i64, i64 } @finch.gen.op(ptr %t684, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a716 - call void @finch_str_drop(ptr %a716) - %t717 = load ptr, ptr %a1 - %t718 = load { ptr, i64, i64 }, ptr %a646 - %t719 = load %S.ast.Type, ptr %a4 - %t720 = load i64, ptr %a499 - %t721 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t717, { ptr, i64, i64 } %t718, %S.ast.Type %t719, i64 %t720) - %t722 = load %S.ast.Type, ptr %a504 - call void @finch.gen.copyAt(ptr %t683, { ptr, i64, i64 } %t715, { ptr, i64, i64 } %t721, %S.ast.Type %t722) - store { ptr, i64, i64 } %t715, ptr %a723 - call void @finch_str_drop(ptr %a723) - store { ptr, i64, i64 } %t721, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load ptr, ptr %a1 - %t727 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.3734, i64 8, i64 0 }, ptr %a729 - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - %t731 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t731, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3735, i64 3, i64 0 }, ptr %a734 - call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) - store { ptr, i64, i64 } %t731, ptr %a735 - call void @finch_str_drop(ptr %a735) - %t736 = load { ptr, i64, i64 }, ptr %a732 - %t737 = call { ptr, i64, i64 } @finch.gen.op(ptr %t726, { ptr, i64, i64 } %t736) - store { ptr, i64, i64 } %t736, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t725, { ptr, i64, i64 } { ptr @.str.3733, i64 3, i64 0 }, { ptr, i64, i64 } %t737, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t737, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load ptr, ptr %a1 - %t742 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.br(ptr %t741, { ptr, i64, i64 } %t742) - %t743 = load ptr, ptr %a1 - %t744 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.label(ptr %t743, { ptr, i64, i64 } %t744) - %t745 = load ptr, ptr %a1 - %t746 = load { ptr, i64, i64 }, ptr %a635 - call void @finch.gen.loopEnd(ptr %t745, { ptr, i64, i64 } %t746) - %t747 = load ptr, ptr %a1 - %t748 = load { ptr, i64, i64 }, ptr %a521 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t747, { ptr, i64, i64 } { ptr @.str.3736, i64 17, i64 0 }, { ptr, i64, i64 } %t748) - %t750 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t749, 0 - %t751 = load %S.ast.Type, ptr %a518 - store %S.ast.Type %t751, ptr %a752 - call void @finch.copy.S_ast_Type(ptr %a753, ptr %a752) - %t754 = load %S.ast.Type, ptr %a753 - %t755 = insertvalue %S.gen.Val %t750, %S.ast.Type %t754, 1 - %t756 = insertvalue %S.gen.Val %t755, i1 true, 2 - call void @finch_str_drop(ptr %a682) - call void @finch_str_drop(ptr %a652) - call void @finch_str_drop(ptr %a649) - call void @finch_str_drop(ptr %a646) - call void @finch.drop.arr_str(ptr %a635) - call void @finch_str_drop(ptr %a631) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a554) - call void @finch_str_drop(ptr %a521) - call void @finch.drop.S_ast_Type(ptr %a518) - call void @finch.drop.S_ast_Type(ptr %a504) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t756 -endif5781: - %t757 = load ptr, ptr %a1 - %t758 = load %S.ast.Node, ptr %a2 - %t759 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.3737, i64 21, i64 0 }, ptr %a761 - store { ptr, i64, i64 } %t759, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a760 - store { ptr, i64, i64 } %t763, ptr %a765 - store { ptr, i64, i64 } { ptr @.str.3738, i64 49, i64 0 }, ptr %a766 - call void @finch_str_concat(ptr %a764, ptr %a765, ptr %a766) - store { ptr, i64, i64 } %t763, ptr %a767 - call void @finch_str_drop(ptr %a767) - %t768 = load { ptr, i64, i64 }, ptr %a764 - call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t768) - store { ptr, i64, i64 } %t768, ptr %a769 - call void @finch_str_drop(ptr %a769) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val zeroinitializer -} - -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 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a118 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3739, 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.from5787 -logic.from5787: - br i1 %t9, label %logic.rhs5788, label %logic.end5789 -logic.rhs5788: - %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.3740, 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.rend5790 -logic.rend5790: - br label %logic.end5789 -logic.end5789: - %t16 = phi i1 [ false, %logic.from5787 ], [ %t15, %logic.rend5790 ] - br label %logic.from5791 -logic.from5791: - br i1 %t16, label %logic.rhs5792, label %logic.end5793 -logic.rhs5792: - %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.rend5794 -logic.rend5794: - br label %logic.end5793 -logic.end5793: - %t22 = phi i1 [ false, %logic.from5791 ], [ %t21, %logic.rend5794 ] - br i1 %t22, label %then5795, label %endif5797 -then5795: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic5798, label %ok5799 -panic5798: - call void @finch_panic(ptr @.str.3741, i64 3029, ptr @.str.3742) - unreachable -ok5799: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 21 - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %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 %range5800, label %inrange5801 -range5800: - call void @finch_panic_index(ptr @.str.3743, i64 3029, i64 %t31, i64 %t33) - unreachable -inrange5801: - %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.cond5802 -find.cond5802: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t47 - br i1 %t51, label %find.body5803, label %find.end5806 -find.body5803: - %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.hit5804, label %find.next5805 -find.hit5804: - store i64 %t50, ptr %a46 - br label %find.end5806 -find.next5805: - %t58 = add i64 %t50, 1 - store i64 %t58, ptr %a49 - br label %find.cond5802 -find.end5806: - %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 %then5807, label %endif5809 -then5807: - %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.3744, 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.3745, i64 22, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 - %t77 = load { ptr, i64, i64 }, ptr %t76 - store { ptr, i64, i64 } %t75, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t75, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.3746, i64 10, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3747, i64 2, i64 0 }, ptr %a90 - call void @finch_str_join(ptr %a91, ptr %t88, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t87, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t87, ptr %a96 - call void @finch_str_drop(ptr %a96) - store { ptr, i64, i64 } %t92, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.3748, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif5809 -endif5809: - %t105 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3 - %t106 = load i64, ptr %a60 - %t107 = load { ptr, i64, i64 }, ptr %t105 - %t108 = extractvalue { ptr, i64, i64 } %t107, 1 - %t109 = icmp uge i64 %t106, %t108 - br i1 %t109, label %range5810, label %inrange5811 -range5810: - call void @finch_panic_index(ptr @.str.3749, i64 3034, i64 %t106, i64 %t108) - unreachable -inrange5811: - %t110 = extractvalue { ptr, i64, i64 } %t107, 0 - %t111 = getelementptr inbounds i64, ptr %t110, i64 %t106 - %t112 = load i64, ptr %t111 - call void @finch_str_from_int(ptr %a113, i64 %t112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t114, 0 - %t116 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t116, ptr %a117 - call void @finch.copy.S_ast_Type(ptr %a118, ptr %a117) - %t119 = load %S.ast.Type, ptr %a118 - %t120 = insertvalue %S.gen.Val %t115, %S.ast.Type %t119, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a41) - ret %S.gen.Val %t120 -endif5797: - %t121 = load ptr, ptr %a1 - %t122 = load ptr, ptr %a1 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = load %S.ast.Type, ptr %a3 - %t125 = call %S.gen.Val @finch.gen.exprWant(ptr %t122, %S.ast.Node %t123, %S.ast.Type %t124) - %t126 = load %S.ast.Type, ptr %a3 - %t127 = load %S.ast.Node, ptr %a2 - %t128 = call %S.gen.Val @finch.gen.coerce(ptr %t121, %S.gen.Val %t125, %S.ast.Type %t126, %S.ast.Node %t127, { ptr, i64, i64 } { ptr @.str.3750, i64 12, i64 0 }) - store %S.gen.Val %t125, ptr %a129 - call void @finch.drop.S_gen_Val(ptr %a129) - ret %S.gen.Val %t128 -} - -define internal void @finch.drop.S_gen_SumPat(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumPat, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t1) - ret void -} - -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 - %a46 = alloca i64, align 16 - %a49 = 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 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i1, align 16 - %a128 = alloca i1, 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 %S.ast.Type, align 16 - %a138 = alloca i64, align 16 - %a140 = alloca i64, align 16 - %a152 = alloca %S.ast.Node, align 16 - %a153 = alloca %S.ast.Node, align 16 - %a155 = alloca %S.ast.Node, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca i64, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca %S.gen.SumPat, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %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 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca %S.gen.Val, align 16 - %a303 = alloca i64, align 16 - %a306 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.gen.Val, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca i1, align 16 - %a404 = alloca %S.gen.StructDef, align 16 - %a405 = alloca %S.gen.StructDef, align 16 - %a407 = alloca %S.gen.StructDef, align 16 - %a410 = alloca i64, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca i64, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a454 = alloca %S.ast.Type, align 16 - %a456 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %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 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca %S.ast.Node, align 16 - %a536 = alloca %S.ast.Node, align 16 - %a538 = alloca %S.ast.Node, align 16 - %a543 = alloca %S.gen.Val, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca %S.ast.Type, align 16 - %a573 = alloca %S.ast.Type, align 16 - %a576 = alloca %S.ast.Type, align 16 - %a583 = alloca %S.gen.Val, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca i64, align 16 - %a670 = alloca i64, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.gen.EnumDef, align 16 - %a753 = alloca %S.gen.EnumDef, align 16 - %a755 = alloca %S.gen.EnumDef, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca i64, align 16 - %a777 = alloca i64, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a882 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a887 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca %S.ast.Type, align 16 - %a891 = alloca %S.ast.Type, align 16 - %a898 = 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 %range5812, label %inrange5813 -range5812: - call void @finch_panic_index(ptr @.str.3751, i64 3042, i64 0, i64 %t7) - unreachable -inrange5813: - %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.3752, 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.from5814 -logic.from5814: - br i1 %t25, label %logic.end5816, label %logic.rhs5815 -logic.rhs5815: - %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.3753, 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.rend5817 -logic.rend5817: - br label %logic.end5816 -logic.end5816: - %t32 = phi i1 [ true, %logic.from5814 ], [ %t31, %logic.rend5817 ] - br i1 %t32, label %then5818, label %endif5820 -then5818: - %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 %range5821, label %inrange5822 -range5821: - call void @finch_panic_index(ptr @.str.3754, i64 3045, i64 0, i64 %t36) - unreachable -inrange5822: - %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.3755, i64 30, i64 0 }) - br label %endif5820 -endif5820: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic5823, label %ok5824 -panic5823: - call void @finch_panic(ptr @.str.3756, i64 3047, ptr @.str.3757) - unreachable -ok5824: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 11 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - store i64 %t45, ptr %a46 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a13 - call void @finch.gen.hold(ptr %t47, %S.gen.Val %t48) - store i64 -1, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3758, i64 0, i64 0 }, ptr %a50 - %t51 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.3759, i64 6, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then5825, label %endif5827 -then5825: - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call i64 @finch.gen.findSum(ptr %t57, { ptr, i64, i64 } %t59, { ptr, i64, i64 } %t61) - store i64 %t62, ptr %a49 - %t63 = load i64, ptr %a49 - %t64 = icmp sge i64 %t63, 0 - br i1 %t64, label %then5828, label %endif5830 -then5828: - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Type, ptr %a19 - %t68 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t66, %S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.3760, i64 13, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3761, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3762, i64 2, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic5831, label %ok5832 -panic5831: - call void @finch_panic(ptr @.str.3763, i64 3054, ptr @.str.3764) - unreachable -ok5832: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 16 - %t94 = load ptr, ptr %a1 - %t95 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t98 = load { ptr, i64, i64 }, ptr %t97 - %t99 = call i64 @finch.gen.findStruct(ptr %t94, { ptr, i64, i64 } %t96, { ptr, i64, i64 } %t98) - %t100 = load { ptr, i64, i64 }, ptr %t93 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range5833, label %inrange5834 -range5833: - call void @finch_panic_index(ptr @.str.3765, i64 3054, i64 %t99, i64 %t101) - unreachable -inrange5834: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.gen.StructDef, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.gen.StructDef, ptr %t104, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - %t107 = extractvalue { ptr, i64, i64 } %t106, 1 - %t108 = icmp uge i64 0, %t107 - br i1 %t108, label %range5835, label %inrange5836 -range5835: - call void @finch_panic_index(ptr @.str.3766, i64 3054, i64 0, i64 %t107) - unreachable -inrange5836: - %t109 = extractvalue { ptr, i64, i64 } %t106, 0 - %t110 = getelementptr inbounds i64, ptr %t109, i64 0 - %t111 = load i64, ptr %t110 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t90, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t90, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t120, ptr %a50 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_drop(ptr %a123) - br label %endif5830 -endif5830: - br label %endif5827 -endif5827: - %t124 = load ptr, ptr %a1 - %t125 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t124, { ptr, i64, i64 } { ptr @.str.3767, i64 9, i64 0 }) - store { ptr, i64, i64 } %t125, ptr %a126 - store i1 false, ptr %a127 - store i1 false, ptr %a128 - store { ptr, i64, i64 } zeroinitializer, ptr %a129 - store { ptr, i64, i64 } zeroinitializer, ptr %a130 - store { ptr, i64, i64 } zeroinitializer, ptr %a131 - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3768, i64 4, i64 0 }) - store %S.ast.Type %t132, ptr %a133 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = sub i64 %t136, 1 - store i64 %t137, ptr %a138 - %t139 = load i64, ptr %a138 - store i64 0, ptr %a140 - br label %for.cond5837 -for.cond5837: - %t141 = load i64, ptr %a140 - %t142 = icmp slt i64 %t141, %t139 - br i1 %t142, label %for.body5838, label %for.end5840 -for.body5838: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load i64, ptr %a140 - %t145 = add i64 1, %t144 - %t146 = load { ptr, i64, i64 }, ptr %t143 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5841, label %inrange5842 -range5841: - call void @finch_panic_index(ptr @.str.3769, i64 3066, i64 %t145, i64 %t147) - unreachable -inrange5842: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Node, ptr %t149, i64 %t145 - %t151 = load %S.ast.Node, ptr %t150 - store %S.ast.Node %t151, ptr %a152 - call void @finch.copy.S_ast_Node(ptr %a153, ptr %a152) - %t154 = load %S.ast.Node, ptr %a153 - store %S.ast.Node %t154, ptr %a155 - %t156 = load i1, ptr %a127 - br i1 %t156, label %then5843, label %endif5845 -then5843: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a155 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } { ptr @.str.3770, i64 72, i64 0 }) - br label %endif5845 -endif5845: - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t159, { ptr, i64, i64 } { ptr @.str.3771, i64 9, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t162, { ptr, i64, i64 } { ptr @.str.3772, i64 10, i64 0 }) - store { ptr, i64, i64 } %t163, ptr %a164 - store { ptr, i64, i64 } zeroinitializer, ptr %a165 - store i64 -1, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t168 = load i1, ptr %t167 - br i1 %t168, label %then5846, label %else5847 -then5846: - store i1 true, ptr %a127 - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.br(ptr %t169, { ptr, i64, i64 } %t170) - br label %endif5848 -else5847: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range5849, label %inrange5850 -range5849: - call void @finch_panic_index(ptr @.str.3773, i64 3078, i64 0, i64 %t173) - unreachable -inrange5850: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 0 - %t177 = getelementptr inbounds %S.ast.Node, ptr %t176, i32 0, i32 9 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t178, ptr %a179 - call void @finch.copy.arr_S_ast_Node(ptr %a180, ptr %a179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - store i64 0, ptr %a185 - br label %for.cond5851 -for.cond5851: - %t186 = load i64, ptr %a185 - %t187 = icmp slt i64 %t186, %t184 - br i1 %t187, label %for.body5852, label %for.end5854 -for.body5852: - store { ptr, i64, i64 } { ptr @.str.3774, i64 0, i64 0 }, ptr %a188 - %t189 = load i64, ptr %a49 - %t190 = icmp sge i64 %t189, 0 - br i1 %t190, label %then5855, label %else5856 -then5855: - %t191 = load ptr, ptr %a1 - %t192 = load i64, ptr %a185 - %t193 = load { ptr, i64, i64 }, ptr %a182 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range5858, label %inrange5859 -range5858: - call void @finch_panic_index(ptr @.str.3775, i64 3082, i64 %t192, i64 %t194) - unreachable -inrange5859: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 %t192 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = load i64, ptr %a49 - %t200 = call %S.gen.SumPat @finch.gen.sumPattern(ptr %t191, %S.ast.Node %t198, i64 %t199) - store %S.gen.SumPat %t200, ptr %a201 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t203 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t204 = load i64, ptr %t203 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store i64 -1, ptr %a207 - %t208 = load i64, ptr %t202 - %t209 = load ptr, ptr %a129 - store i64 0, ptr %a210 - br label %find.cond5860 -find.cond5860: - %t211 = load i64, ptr %a210 - %t212 = icmp slt i64 %t211, %t208 - br i1 %t212, label %find.body5861, label %find.end5864 -find.body5861: - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i64 %t211 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } %t206, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br i1 %t218, label %find.hit5862, label %find.next5863 -find.hit5862: - store i64 %t211, ptr %a207 - br label %find.end5864 -find.next5863: - %t219 = add i64 %t211, 1 - store i64 %t219, ptr %a210 - br label %find.cond5860 -find.end5864: - store { ptr, i64, i64 } %t206, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load i64, ptr %a207 - %t222 = icmp sge i64 %t221, 0 - br i1 %t222, label %then5865, label %endif5867 -then5865: - %t223 = load ptr, ptr %a1 - %t224 = load i64, ptr %a185 - %t225 = load { ptr, i64, i64 }, ptr %a182 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range5868, label %inrange5869 -range5868: - call void @finch_panic_index(ptr @.str.3776, i64 3084, i64 %t224, i64 %t226) - unreachable -inrange5869: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds %S.ast.Node, ptr %t228, i64 %t224 - %t230 = load %S.ast.Node, ptr %t229 - call void @finch.gen.fail(ptr %t223, %S.ast.Node %t230, { ptr, i64, i64 } { ptr @.str.3777, i64 49, i64 0 }) - br label %endif5867 -endif5867: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t232 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t233 = load i64, ptr %t232 - call void @finch_str_from_int(ptr %a234, i64 %t233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load i64, ptr %t231 - %t237 = add i64 %t236, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t237, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t238 = load ptr, ptr %a129 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i64 %t236 - store { ptr, i64, i64 } %t235, ptr %t239 - store i64 %t237, ptr %t231 - %t240 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i32 0, i32 1 - %t242 = load i64, ptr %t241 - %t243 = icmp sgt i64 %t242, 0 - br i1 %t243, label %then5870, label %endif5872 -then5870: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = icmp sgt i64 %t245, 1 - br i1 %t246, label %then5873, label %endif5875 -then5873: - %t247 = load ptr, ptr %a1 - %t248 = load i64, ptr %a185 - %t249 = load { ptr, i64, i64 }, ptr %a182 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5876, label %inrange5877 -range5876: - call void @finch_panic_index(ptr @.str.3778, i64 3089, i64 %t248, i64 %t250) - unreachable -inrange5877: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - call void @finch.gen.fail(ptr %t247, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3779, i64 52, i64 0 }) - br label %endif5875 -endif5875: - %t255 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.copy.arr_S_ast_Node(ptr %a258, ptr %a257) - %t259 = load { ptr, i64, i64 }, ptr %a258 - %t260 = load { ptr, i64, i64 }, ptr %a165 - store { ptr, i64, i64 } %t259, ptr %a165 - store { ptr, i64, i64 } %t260, ptr %a261 - call void @finch.drop.arr_S_ast_Node(ptr %a261) - %t262 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t263 = load i64, ptr %t262 - store i64 %t263, ptr %a166 - br label %endif5872 -endif5872: - %t264 = load ptr, ptr %a1 - %t265 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.3780, i64 12, 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.3781, i64 2, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t276 = load i64, ptr %t275 - call void @finch_str_from_int(ptr %a277, i64 %t276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t274, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t274, ptr %a282 - call void @finch_str_drop(ptr %a282) - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a279 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t264, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t285, ptr %a188 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_drop(ptr %a288) - call void @finch.drop.S_gen_SumPat(ptr %a201) - br label %endif5857 -else5856: - %t289 = load ptr, ptr %a1 - %t290 = load i64, ptr %a185 - %t291 = load { ptr, i64, i64 }, ptr %a182 - %t292 = extractvalue { ptr, i64, i64 } %t291, 1 - %t293 = icmp uge i64 %t290, %t292 - br i1 %t293, label %range5878, label %inrange5879 -range5878: - call void @finch_panic_index(ptr @.str.3782, i64 3096, i64 %t290, i64 %t292) - unreachable -inrange5879: - %t294 = extractvalue { ptr, i64, i64 } %t291, 0 - %t295 = getelementptr inbounds %S.ast.Node, ptr %t294, i64 %t290 - %t296 = load %S.ast.Node, ptr %t295 - %t297 = load %S.ast.Type, ptr %a19 - %t298 = call %S.gen.Val @finch.gen.patternValue(ptr %t289, %S.ast.Node %t296, %S.ast.Type %t297) - store %S.gen.Val %t298, ptr %a299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t301 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store i64 -1, ptr %a303 - %t304 = load i64, ptr %t300 - %t305 = load ptr, ptr %a129 - store i64 0, ptr %a306 - br label %find.cond5880 -find.cond5880: - %t307 = load i64, ptr %a306 - %t308 = icmp slt i64 %t307, %t304 - br i1 %t308, label %find.body5881, label %find.end5884 -find.body5881: - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t305, i64 %t307 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - store { ptr, i64, i64 } %t302, ptr %a312 - %t313 = call i32 @finch_str_eq(ptr %a311, ptr %a312) - %t314 = icmp ne i32 %t313, 0 - br i1 %t314, label %find.hit5882, label %find.next5883 -find.hit5882: - store i64 %t307, ptr %a303 - br label %find.end5884 -find.next5883: - %t315 = add i64 %t307, 1 - store i64 %t315, ptr %a306 - br label %find.cond5880 -find.end5884: - %t316 = load i64, ptr %a303 - %t317 = icmp sge i64 %t316, 0 - br label %logic.from5885 -logic.from5885: - br i1 %t317, label %logic.rhs5886, label %logic.end5887 -logic.rhs5886: - %t318 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3783, i64 4, i64 0 }, ptr %a321 - %t322 = call i32 @finch_str_eq(ptr %a320, ptr %a321) - %t323 = icmp ne i32 %t322, 0 - br label %logic.rend5888 -logic.rend5888: - br label %logic.end5887 -logic.end5887: - %t324 = phi i1 [ false, %logic.from5885 ], [ %t323, %logic.rend5888 ] - br i1 %t324, label %then5889, label %endif5891 -then5889: - %t325 = load ptr, ptr %a1 - %t326 = load i64, ptr %a185 - %t327 = load { ptr, i64, i64 }, ptr %a182 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range5892, label %inrange5893 -range5892: - call void @finch_panic_index(ptr @.str.3784, i64 3098, i64 %t326, i64 %t328) - unreachable -inrange5893: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - call void @finch.gen.fail(ptr %t325, %S.ast.Node %t332, { ptr, i64, i64 } { ptr @.str.3785, i64 49, i64 0 }) - br label %endif5891 -endif5891: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t334 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_copy(ptr %a337, ptr %a336) - %t338 = load { ptr, i64, i64 }, ptr %a337 - %t339 = load i64, ptr %t333 - %t340 = add i64 %t339, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t340, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t341 = load ptr, ptr %a129 - %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 %t339 - store { ptr, i64, i64 } %t338, ptr %t342 - store i64 %t340, ptr %t333 - %t343 = load ptr, ptr %a1 - %t344 = load %S.gen.Val, ptr %a13 - %t345 = load %S.gen.Val, ptr %a299 - %t346 = load i64, ptr %a185 - %t347 = load { ptr, i64, i64 }, ptr %a182 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 %t346, %t348 - br i1 %t349, label %range5894, label %inrange5895 -range5894: - call void @finch_panic_index(ptr @.str.3787, i64 3101, i64 %t346, i64 %t348) - unreachable -inrange5895: - %t350 = extractvalue { ptr, i64, i64 } %t347, 0 - %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 %t346 - %t352 = load %S.ast.Node, ptr %t351 - %t353 = call %S.gen.Val @finch.gen.compare(ptr %t343, { ptr, i64, i64 } { ptr @.str.3786, i64 2, i64 0 }, %S.gen.Val %t344, %S.gen.Val %t345, %S.ast.Node %t352) - %t354 = extractvalue %S.gen.Val %t353, 0 - store { ptr, i64, i64 } %t354, ptr %a355 - call void @finch_str_copy(ptr %a356, ptr %a355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store %S.gen.Val %t353, ptr %a358 - call void @finch.drop.S_gen_Val(ptr %a358) - %t359 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t357, ptr %a188 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - call void @finch.drop.S_gen_Val(ptr %a299) - br label %endif5857 -endif5857: - %t361 = load i64, ptr %a185 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = sub i64 %t363, 1 - %t365 = icmp eq i64 %t361, %t364 - br i1 %t365, label %then5896, label %else5897 -then5896: - %t366 = load ptr, ptr %a1 - %t367 = load { ptr, i64, i64 }, ptr %a188 - %t368 = load { ptr, i64, i64 }, ptr %a161 - %t369 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.condBr(ptr %t366, { ptr, i64, i64 } %t367, { ptr, i64, i64 } %t368, { ptr, i64, i64 } %t369) - br label %endif5898 -else5897: - %t370 = load ptr, ptr %a1 - %t371 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t370, { ptr, i64, i64 } { ptr @.str.3788, i64 8, i64 0 }) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load { ptr, i64, i64 }, ptr %a188 - %t375 = load { ptr, i64, i64 }, ptr %a161 - %t376 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.condBr(ptr %t373, { ptr, i64, i64 } %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } %t376) - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.label(ptr %t377, { ptr, i64, i64 } %t378) - call void @finch_str_drop(ptr %a372) - br label %endif5898 -endif5898: - call void @finch_str_drop(ptr %a188) - br label %for.step5853 -for.step5853: - %t379 = load i64, ptr %a185 - %t380 = add i64 %t379, 1 - store i64 %t380, ptr %a185 - br label %for.cond5851 -for.end5854: - call void @finch.drop.arr_S_ast_Node(ptr %a182) - br label %endif5848 -endif5848: - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t384 = load i64, ptr %t383 - %t385 = icmp sgt i64 %t384, 0 - store i1 %t385, ptr %a386 - %t387 = load i1, ptr %a386 - br i1 %t387, label %then5899, label %endif5901 -then5899: - %t388 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t388) - %t389 = load ptr, ptr %a1 - %t390 = icmp eq ptr %t389, null - br i1 %t390, label %panic5902, label %ok5903 -panic5902: - call void @finch_panic(ptr @.str.3789, i64 3116, ptr @.str.3790) - unreachable -ok5903: - %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 16 - %t392 = load ptr, ptr %a1 - %t393 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t394 = load { ptr, i64, i64 }, ptr %t393 - %t395 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = call i64 @finch.gen.findStruct(ptr %t392, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t396) - %t398 = load { ptr, i64, i64 }, ptr %t391 - %t399 = extractvalue { ptr, i64, i64 } %t398, 1 - %t400 = icmp uge i64 %t397, %t399 - br i1 %t400, label %range5904, label %inrange5905 -range5904: - call void @finch_panic_index(ptr @.str.3791, i64 3116, i64 %t397, i64 %t399) - unreachable -inrange5905: - %t401 = extractvalue { ptr, i64, i64 } %t398, 0 - %t402 = getelementptr inbounds %S.gen.StructDef, ptr %t401, i64 %t397 - %t403 = load %S.gen.StructDef, ptr %t402 - store %S.gen.StructDef %t403, ptr %a404 - call void @finch.copy.S_gen_StructDef(ptr %a405, ptr %a404) - %t406 = load %S.gen.StructDef, ptr %a405 - store %S.gen.StructDef %t406, ptr %a407 - %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t409 = load i64, ptr %t408 - store i64 0, ptr %a410 - br label %for.cond5906 -for.cond5906: - %t411 = load i64, ptr %a410 - %t412 = icmp slt i64 %t411, %t409 - br i1 %t412, label %for.body5907, label %for.end5909 -for.body5907: - %t413 = load i64, ptr %a410 - %t414 = load { ptr, i64, i64 }, ptr %a165 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5910, label %inrange5911 -range5910: - call void @finch_panic_index(ptr @.str.3792, i64 3118, i64 %t413, i64 %t415) - unreachable -inrange5911: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.ast.Node, ptr %t417, i64 %t413 - %t419 = getelementptr inbounds %S.ast.Node, ptr %t418, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - store { ptr, i64, i64 } { ptr @.str.3793, i64 1, i64 0 }, ptr %a422 - %t423 = call i32 @finch_str_eq(ptr %a421, ptr %a422) - %t424 = icmp ne i32 %t423, 0 - br i1 %t424, label %then5912, label %endif5914 -then5912: - br label %for.step5908 -endif5914: - %t425 = load ptr, ptr %a1 - %t426 = icmp eq ptr %t425, null - br i1 %t426, label %panic5915, label %ok5916 -panic5915: - call void @finch_panic(ptr @.str.3794, i64 3121, ptr @.str.3795) - unreachable -ok5916: - %t427 = getelementptr inbounds %S.gen.Gen, ptr %t425, i32 0, i32 22 - %t428 = load i64, ptr %a49 - %t429 = load { ptr, i64, i64 }, ptr %t427 - %t430 = extractvalue { ptr, i64, i64 } %t429, 1 - %t431 = icmp uge i64 %t428, %t430 - br i1 %t431, label %range5917, label %inrange5918 -range5917: - call void @finch_panic_index(ptr @.str.3796, i64 3121, i64 %t428, i64 %t430) - unreachable -inrange5918: - %t432 = extractvalue { ptr, i64, i64 } %t429, 0 - %t433 = getelementptr inbounds %S.gen.SumDef, ptr %t432, i64 %t428 - %t434 = getelementptr inbounds %S.gen.SumDef, ptr %t433, i32 0, i32 4 - %t435 = load i64, ptr %a166 - %t436 = load { ptr, i64, i64 }, ptr %t434 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 %t435, %t437 - br i1 %t438, label %range5919, label %inrange5920 -range5919: - call void @finch_panic_index(ptr @.str.3797, i64 3121, i64 %t435, i64 %t437) - unreachable -inrange5920: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds i64, ptr %t439, i64 %t435 - %t441 = load i64, ptr %t440 - %t442 = load i64, ptr %a410 - %t443 = add i64 %t441, %t442 - store i64 %t443, ptr %a444 - %t445 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 12 - %t446 = load i64, ptr %a444 - %t447 = load { ptr, i64, i64 }, ptr %t445 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range5921, label %inrange5922 -range5921: - call void @finch_panic_index(ptr @.str.3798, i64 3122, i64 %t446, i64 %t448) - unreachable -inrange5922: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds %S.ast.Type, ptr %t450, i64 %t446 - %t452 = load %S.ast.Type, ptr %t451 - store %S.ast.Type %t452, ptr %a453 - call void @finch.copy.S_ast_Type(ptr %a454, ptr %a453) - %t455 = load %S.ast.Type, ptr %a454 - store %S.ast.Type %t455, ptr %a456 - %t457 = load ptr, ptr %a1 - %t458 = load ptr, ptr %a1 - %t459 = load %S.ast.Type, ptr %a19 - %t460 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t458, %S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.3799, i64 13, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.3800, i64 1, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t472 = load { ptr, i64, i64 }, ptr %t471 - store { ptr, i64, i64 } %t470, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - store { ptr, i64, i64 } %t470, ptr %a476 - call void @finch_str_drop(ptr %a476) - %t477 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t477, ptr %a479 - store { ptr, i64, i64 } { ptr @.str.3801, i64 2, i64 0 }, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t477, ptr %a481 - call void @finch_str_drop(ptr %a481) - %t482 = load { ptr, i64, i64 }, ptr %a478 - %t483 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 3 - %t484 = load i64, ptr %a444 - %t485 = load { ptr, i64, i64 }, ptr %t483 - %t486 = extractvalue { ptr, i64, i64 } %t485, 1 - %t487 = icmp uge i64 %t484, %t486 - br i1 %t487, label %range5923, label %inrange5924 -range5923: - call void @finch_panic_index(ptr @.str.3802, i64 3123, i64 %t484, i64 %t486) - unreachable -inrange5924: - %t488 = extractvalue { ptr, i64, i64 } %t485, 0 - %t489 = getelementptr inbounds i64, ptr %t488, i64 %t484 - %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 } %t482, ptr %a494 - store { ptr, i64, i64 } %t492, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t482, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t492, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a493 - %t499 = call { ptr, i64, i64 } @finch.gen.op(ptr %t457, { ptr, i64, i64 } %t498) - store { ptr, i64, i64 } %t498, ptr %a500 - call void @finch_str_drop(ptr %a500) - store { ptr, i64, i64 } %t499, ptr %a501 - %t502 = load ptr, ptr %a1 - %t503 = load i64, ptr %a410 - %t504 = load { ptr, i64, i64 }, ptr %a165 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 %t503, %t505 - br i1 %t506, label %range5925, label %inrange5926 -range5925: - call void @finch_panic_index(ptr @.str.3803, i64 3124, i64 %t503, i64 %t505) - unreachable -inrange5926: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 %t503 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = load i64, ptr %a410 - %t511 = load { ptr, i64, i64 }, ptr %a165 - %t512 = extractvalue { ptr, i64, i64 } %t511, 1 - %t513 = icmp uge i64 %t510, %t512 - br i1 %t513, label %range5927, label %inrange5928 -range5927: - call void @finch_panic_index(ptr @.str.3804, i64 3124, i64 %t510, i64 %t512) - unreachable -inrange5928: - %t514 = extractvalue { ptr, i64, i64 } %t511, 0 - %t515 = getelementptr inbounds %S.ast.Node, ptr %t514, i64 %t510 - %t516 = getelementptr inbounds %S.ast.Node, ptr %t515, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = load %S.ast.Type, ptr %a456 - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a501 - %t521 = load %S.ast.Type, ptr %a456 - %t522 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t519, { ptr, i64, i64 } %t520, %S.ast.Type %t521) - %t523 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t502, %S.ast.Node %t509, { ptr, i64, i64 } %t517, %S.ast.Type %t518, { ptr, i64, i64 } %t522, i1 true, i1 true) - store { ptr, i64, i64 } %t522, ptr %a524 - call void @finch_str_drop(ptr %a524) - store { ptr, i64, i64 } %t523, ptr %a525 - call void @finch_str_drop(ptr %a525) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a456) - br label %for.step5908 -for.step5908: - %t526 = load i64, ptr %a410 - %t527 = add i64 %t526, 1 - store i64 %t527, ptr %a410 - br label %for.cond5906 -for.end5909: - call void @finch.drop.S_gen_StructDef(ptr %a407) - br label %endif5901 -endif5901: - %t528 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = extractvalue { ptr, i64, i64 } %t529, 1 - %t531 = icmp uge i64 1, %t530 - br i1 %t531, label %range5929, label %inrange5930 -range5929: - call void @finch_panic_index(ptr @.str.3805, i64 3127, i64 1, i64 %t530) - unreachable -inrange5930: - %t532 = extractvalue { ptr, i64, i64 } %t529, 0 - %t533 = getelementptr inbounds %S.ast.Node, ptr %t532, i64 1 - %t534 = load %S.ast.Node, ptr %t533 - store %S.ast.Node %t534, ptr %a535 - call void @finch.copy.S_ast_Node(ptr %a536, ptr %a535) - %t537 = load %S.ast.Node, ptr %a536 - store %S.ast.Node %t537, ptr %a538 - %t539 = load i1, ptr %a3 - br i1 %t539, label %then5931, label %else5932 -then5931: - %t540 = load ptr, ptr %a1 - %t541 = load %S.ast.Node, ptr %a538 - %t542 = call %S.gen.Val @finch.gen.expr(ptr %t540, %S.ast.Node %t541) - store %S.gen.Val %t542, ptr %a543 - %t544 = load i64, ptr %a140 - %t545 = icmp eq i64 %t544, 0 - br label %logic.from5934 -logic.from5934: - br i1 %t545, label %logic.end5936, label %logic.rhs5935 -logic.rhs5935: - %t546 = getelementptr inbounds %S.ast.Type, ptr %a133, i32 0, i32 0 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } %t547, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.3806, i64 4, i64 0 }, ptr %a549 - %t550 = call i32 @finch_str_eq(ptr %a548, ptr %a549) - %t551 = icmp ne i32 %t550, 0 - br label %logic.rend5937 -logic.rend5937: - br label %logic.end5936 -logic.end5936: - %t552 = phi i1 [ true, %logic.from5934 ], [ %t551, %logic.rend5937 ] - br i1 %t552, label %then5938, label %endif5940 -then5938: - %t553 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t554 = getelementptr inbounds %S.ast.Type, ptr %t553, i32 0, i32 0 - %t555 = load { ptr, i64, i64 }, ptr %t554 - store { ptr, i64, i64 } %t555, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.3807, i64 4, i64 0 }, ptr %a557 - %t558 = call i32 @finch_str_eq(ptr %a556, ptr %a557) - %t559 = icmp ne i32 %t558, 0 - br label %logic.from5941 -logic.from5941: - br i1 %t559, label %logic.end5943, label %logic.rhs5942 -logic.rhs5942: - %t560 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t561 = getelementptr inbounds %S.ast.Type, ptr %t560, i32 0, i32 0 - %t562 = load { ptr, i64, i64 }, ptr %t561 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.3808, i64 4, i64 0 }, ptr %a564 - %t565 = call i32 @finch_str_eq(ptr %a563, ptr %a564) - %t566 = icmp ne i32 %t565, 0 - br label %logic.rend5944 -logic.rend5944: - br label %logic.end5943 -logic.end5943: - %t567 = phi i1 [ true, %logic.from5941 ], [ %t566, %logic.rend5944 ] - br i1 %t567, label %then5945, label %endif5947 -then5945: - %t568 = load ptr, ptr %a1 - %t569 = load %S.ast.Node, ptr %a538 - call void @finch.gen.fail(ptr %t568, %S.ast.Node %t569, { ptr, i64, i64 } { ptr @.str.3809, i64 52, i64 0 }) - br label %endif5947 -endif5947: - %t570 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t571 = load %S.ast.Type, ptr %t570 - 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 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t574, ptr %a133 - store %S.ast.Type %t575, ptr %a576 - call void @finch.drop.S_ast_Type(ptr %a576) - br label %endif5940 -endif5940: - %t577 = load ptr, ptr %a1 - %t578 = load %S.gen.Val, ptr %a543 - %t579 = load %S.ast.Type, ptr %a133 - %t580 = load %S.ast.Node, ptr %a538 - %t581 = call %S.gen.Val @finch.gen.coerce(ptr %t577, %S.gen.Val %t578, %S.ast.Type %t579, %S.ast.Node %t580, { ptr, i64, i64 } { ptr @.str.3810, i64 57, i64 0 }) - %t582 = load %S.gen.Val, ptr %a543 - store %S.gen.Val %t581, ptr %a543 - store %S.gen.Val %t582, ptr %a583 - call void @finch.drop.S_gen_Val(ptr %a583) - %t584 = load ptr, ptr %a1 - %t585 = load %S.gen.Val, ptr %a543 - %t586 = call { ptr, i64, i64 } @finch.gen.own(ptr %t584, %S.gen.Val %t585) - store { ptr, i64, i64 } %t586, ptr %a587 - %t588 = load i1, ptr %a386 - br i1 %t588, label %then5948, label %endif5950 -then5948: - %t589 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t589) - br label %endif5950 -endif5950: - %t590 = load ptr, ptr %a1 - %t591 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t590, { ptr, i64, i64 } { ptr @.str.3811, i64 10, i64 0 }) - store { ptr, i64, i64 } %t591, ptr %a592 - %t593 = load ptr, ptr %a1 - %t594 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.br(ptr %t593, { ptr, i64, i64 } %t594) - %t595 = load ptr, ptr %a1 - %t596 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.label(ptr %t595, { ptr, i64, i64 } %t596) - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t598 = load { ptr, i64, i64 }, ptr %a587 - store { ptr, i64, i64 } %t598, ptr %a599 - call void @finch_str_copy(ptr %a600, ptr %a599) - %t601 = load { ptr, i64, i64 }, ptr %a600 - %t602 = load i64, ptr %t597 - %t603 = add i64 %t602, 1 - call void @finch_arr_reserve(ptr %a130, i64 %t603, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t604 = load ptr, ptr %a130 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i64 %t602 - store { ptr, i64, i64 } %t601, ptr %t605 - store i64 %t603, ptr %t597 - %t606 = getelementptr inbounds { ptr, i64, i64 }, ptr %a131, i32 0, i32 1 - %t607 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t607, ptr %a608 - call void @finch_str_copy(ptr %a609, ptr %a608) - %t610 = load { ptr, i64, i64 }, ptr %a609 - %t611 = load i64, ptr %t606 - %t612 = add i64 %t611, 1 - call void @finch_arr_reserve(ptr %a131, i64 %t612, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t613 = load ptr, ptr %a131 - %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i64 %t611 - store { ptr, i64, i64 } %t610, ptr %t614 - store i64 %t612, ptr %t606 - %t615 = load ptr, ptr %a1 - %t616 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t615, { ptr, i64, i64 } %t616) - store i1 true, ptr %a128 - call void @finch_str_drop(ptr %a592) - call void @finch_str_drop(ptr %a587) - call void @finch.drop.S_gen_Val(ptr %a543) - br label %endif5933 -else5932: - %t617 = getelementptr inbounds %S.ast.Node, ptr %a538, i32 0, i32 0 - %t618 = load { ptr, i64, i64 }, ptr %t617 - store { ptr, i64, i64 } %t618, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.3812, i64 5, i64 0 }, ptr %a620 - %t621 = call i32 @finch_str_eq(ptr %a619, ptr %a620) - %t622 = icmp ne i32 %t621, 0 - br i1 %t622, label %then5951, label %else5952 -then5951: - %t623 = load ptr, ptr %a1 - %t624 = load %S.ast.Node, ptr %a538 - call void @finch.gen.block(ptr %t623, %S.ast.Node %t624, i1 true) - br label %endif5953 -else5952: - %t625 = load ptr, ptr %a1 - %t626 = load %S.ast.Node, ptr %a538 - call void @finch.gen.stmt(ptr %t625, %S.ast.Node %t626) - br label %endif5953 -endif5953: - %t627 = load ptr, ptr %a1 - %t628 = icmp eq ptr %t627, null - br i1 %t628, label %panic5954, label %ok5955 -panic5954: - call void @finch_panic(ptr @.str.3813, i64 3154, ptr @.str.3814) - unreachable -ok5955: - %t629 = getelementptr inbounds %S.gen.Gen, ptr %t627, i32 0, i32 9 - %t630 = load i1, ptr %t629 - %t631 = xor i1 %t630, true - br i1 %t631, label %then5956, label %endif5958 -then5956: - store i1 true, ptr %a128 - br label %endif5958 -endif5958: - %t632 = load i1, ptr %a386 - br i1 %t632, label %then5959, label %endif5961 -then5959: - %t633 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t633) - br label %endif5961 -endif5961: - %t634 = load ptr, ptr %a1 - %t635 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t634, { ptr, i64, i64 } %t635) - br label %endif5933 -endif5933: - %t636 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t637 = load i1, ptr %t636 - %t638 = xor i1 %t637, true - br i1 %t638, label %then5962, label %endif5964 -then5962: - %t639 = load ptr, ptr %a1 - %t640 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.label(ptr %t639, { ptr, i64, i64 } %t640) - br label %endif5964 -endif5964: - call void @finch.drop.S_ast_Node(ptr %a538) - call void @finch.drop.arr_S_ast_Node(ptr %a165) - call void @finch_str_drop(ptr %a164) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Node(ptr %a155) - br label %for.step5839 -for.step5839: - %t641 = load i64, ptr %a140 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a140 - br label %for.cond5837 -for.end5840: - %t643 = load i1, ptr %a127 - %t644 = xor i1 %t643, true - br i1 %t644, label %then5965, label %endif5967 -then5965: - %t645 = load i64, ptr %a49 - %t646 = icmp sge i64 %t645, 0 - br i1 %t646, label %then5968, label %else5969 -then5968: - store { ptr, i64, i64 } zeroinitializer, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic5971, label %ok5972 -panic5971: - call void @finch_panic(ptr @.str.3815, i64 3169, ptr @.str.3816) - unreachable -ok5972: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 22 - %t651 = load i64, ptr %a49 - %t652 = load { ptr, i64, i64 }, ptr %t650 - %t653 = extractvalue { ptr, i64, i64 } %t652, 1 - %t654 = icmp uge i64 %t651, %t653 - br i1 %t654, label %range5973, label %inrange5974 -range5973: - call void @finch_panic_index(ptr @.str.3817, i64 3169, i64 %t651, i64 %t653) - unreachable -inrange5974: - %t655 = extractvalue { ptr, i64, i64 } %t652, 0 - %t656 = getelementptr inbounds %S.gen.SumDef, ptr %t655, i64 %t651 - %t657 = getelementptr inbounds %S.gen.SumDef, ptr %t656, i32 0, i32 2 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i32 0, i32 1 - %t659 = load i64, ptr %t658 - store i64 0, ptr %a660 - br label %for.cond5975 -for.cond5975: - %t661 = load i64, ptr %a660 - %t662 = icmp slt i64 %t661, %t659 - br i1 %t662, label %for.body5976, label %for.end5978 -for.body5976: - %t663 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t664 = load i64, ptr %a660 - call void @finch_str_from_int(ptr %a665, i64 %t664) - %t666 = load { ptr, i64, i64 }, ptr %a665 - store i64 -1, ptr %a667 - %t668 = load i64, ptr %t663 - %t669 = load ptr, ptr %a129 - store i64 0, ptr %a670 - br label %find.cond5979 -find.cond5979: - %t671 = load i64, ptr %a670 - %t672 = icmp slt i64 %t671, %t668 - br i1 %t672, label %find.body5980, label %find.end5983 -find.body5980: - %t673 = getelementptr inbounds { ptr, i64, i64 }, ptr %t669, i64 %t671 - %t674 = load { ptr, i64, i64 }, ptr %t673 - store { ptr, i64, i64 } %t674, ptr %a675 - store { ptr, i64, i64 } %t666, ptr %a676 - %t677 = call i32 @finch_str_eq(ptr %a675, ptr %a676) - %t678 = icmp ne i32 %t677, 0 - br i1 %t678, label %find.hit5981, label %find.next5982 -find.hit5981: - store i64 %t671, ptr %a667 - br label %find.end5983 -find.next5982: - %t679 = add i64 %t671, 1 - store i64 %t679, ptr %a670 - br label %find.cond5979 -find.end5983: - store { ptr, i64, i64 } %t666, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load i64, ptr %a667 - %t682 = icmp sge i64 %t681, 0 - %t683 = xor i1 %t682, true - br i1 %t683, label %then5984, label %endif5986 -then5984: - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t685 = load ptr, ptr %a1 - %t686 = icmp eq ptr %t685, null - br i1 %t686, label %panic5987, label %ok5988 -panic5987: - call void @finch_panic(ptr @.str.3818, i64 3171, ptr @.str.3819) - unreachable -ok5988: - %t687 = getelementptr inbounds %S.gen.Gen, ptr %t685, i32 0, i32 22 - %t688 = load i64, ptr %a49 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range5989, label %inrange5990 -range5989: - call void @finch_panic_index(ptr @.str.3820, i64 3171, i64 %t688, i64 %t690) - unreachable -inrange5990: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.gen.SumDef, ptr %t692, i64 %t688 - %t694 = getelementptr inbounds %S.gen.SumDef, ptr %t693, i32 0, i32 2 - %t695 = load i64, ptr %a660 - %t696 = load { ptr, i64, i64 }, ptr %t694 - %t697 = extractvalue { ptr, i64, i64 } %t696, 1 - %t698 = icmp uge i64 %t695, %t697 - br i1 %t698, label %range5991, label %inrange5992 -range5991: - call void @finch_panic_index(ptr @.str.3821, i64 3171, i64 %t695, i64 %t697) - unreachable -inrange5992: - %t699 = extractvalue { ptr, i64, i64 } %t696, 0 - %t700 = getelementptr inbounds { ptr, i64, i64 }, ptr %t699, i64 %t695 - %t701 = load { ptr, i64, i64 }, ptr %t700 - store { ptr, i64, i64 } %t701, ptr %a702 - call void @finch_str_copy(ptr %a703, ptr %a702) - %t704 = load { ptr, i64, i64 }, ptr %a703 - %t705 = load i64, ptr %t684 - %t706 = add i64 %t705, 1 - call void @finch_arr_reserve(ptr %a647, i64 %t706, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t707 = load ptr, ptr %a647 - %t708 = getelementptr inbounds { ptr, i64, i64 }, ptr %t707, i64 %t705 - store { ptr, i64, i64 } %t704, ptr %t708 - store i64 %t706, ptr %t684 - br label %endif5986 -endif5986: - br label %for.step5977 -for.step5977: - %t709 = load i64, ptr %a660 - %t710 = add i64 %t709, 1 - store i64 %t710, ptr %a660 - br label %for.cond5975 -for.end5978: - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t712 = load i64, ptr %t711 - %t713 = icmp sgt i64 %t712, 0 - br i1 %t713, label %then5993, label %endif5995 -then5993: - %t714 = load ptr, ptr %a1 - %t715 = load %S.ast.Node, ptr %a2 - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3823, i64 2, i64 0 }, ptr %a717 - call void @finch_str_join(ptr %a718, ptr %a647, ptr %a717) - %t719 = load { ptr, i64, i64 }, ptr %a718 - store { ptr, i64, i64 } { ptr @.str.3822, i64 26, i64 0 }, ptr %a721 - store { ptr, i64, i64 } %t719, ptr %a722 - call void @finch_str_concat(ptr %a720, ptr %a721, ptr %a722) - store { ptr, i64, i64 } %t719, ptr %a723 - call void @finch_str_drop(ptr %a723) - %t724 = load { ptr, i64, i64 }, ptr %a720 - store { ptr, i64, i64 } %t724, ptr %a726 - store { ptr, i64, i64 } { ptr @.str.3824, i64 29, i64 0 }, ptr %a727 - call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727) - store { ptr, i64, i64 } %t724, ptr %a728 - call void @finch_str_drop(ptr %a728) - %t729 = load { ptr, i64, i64 }, ptr %a725 - call void @finch.gen.fail(ptr %t714, %S.ast.Node %t715, { ptr, i64, i64 } %t729) - store { ptr, i64, i64 } %t729, ptr %a730 - call void @finch_str_drop(ptr %a730) - br label %endif5995 -endif5995: - call void @finch.drop.arr_str(ptr %a647) - br label %endif5970 -else5969: - %t731 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t732, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3825, i64 4, i64 0 }, ptr %a734 - %t735 = call i32 @finch_str_eq(ptr %a733, ptr %a734) - %t736 = icmp ne i32 %t735, 0 - br i1 %t736, label %then5996, label %else5997 -then5996: - %t737 = load ptr, ptr %a1 - %t738 = icmp eq ptr %t737, null - br i1 %t738, label %panic5999, label %ok6000 -panic5999: - call void @finch_panic(ptr @.str.3826, i64 3178, ptr @.str.3827) - unreachable -ok6000: - %t739 = getelementptr inbounds %S.gen.Gen, ptr %t737, i32 0, i32 21 - %t740 = load ptr, ptr %a1 - %t741 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t742 = load { ptr, i64, i64 }, ptr %t741 - %t743 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t744 = load { ptr, i64, i64 }, ptr %t743 - %t745 = call i64 @finch.gen.findEnum(ptr %t740, { ptr, i64, i64 } %t742, { ptr, i64, i64 } %t744) - %t746 = load { ptr, i64, i64 }, ptr %t739 - %t747 = extractvalue { ptr, i64, i64 } %t746, 1 - %t748 = icmp uge i64 %t745, %t747 - br i1 %t748, label %range6001, label %inrange6002 -range6001: - call void @finch_panic_index(ptr @.str.3828, i64 3178, i64 %t745, i64 %t747) - unreachable -inrange6002: - %t749 = extractvalue { ptr, i64, i64 } %t746, 0 - %t750 = getelementptr inbounds %S.gen.EnumDef, ptr %t749, i64 %t745 - %t751 = load %S.gen.EnumDef, ptr %t750 - store %S.gen.EnumDef %t751, ptr %a752 - call void @finch.copy.S_gen_EnumDef(ptr %a753, ptr %a752) - %t754 = load %S.gen.EnumDef, ptr %a753 - store %S.gen.EnumDef %t754, ptr %a755 - store { ptr, i64, i64 } zeroinitializer, ptr %a756 - %t757 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t758 = getelementptr inbounds { ptr, i64, i64 }, ptr %t757, i32 0, i32 1 - %t759 = load i64, ptr %t758 - store i64 0, ptr %a760 - br label %for.cond6003 -for.cond6003: - %t761 = load i64, ptr %a760 - %t762 = icmp slt i64 %t761, %t759 - br i1 %t762, label %for.body6004, label %for.end6006 -for.body6004: - %t763 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t764 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 3 - %t765 = load i64, ptr %a760 - %t766 = load { ptr, i64, i64 }, ptr %t764 - %t767 = extractvalue { ptr, i64, i64 } %t766, 1 - %t768 = icmp uge i64 %t765, %t767 - br i1 %t768, label %range6007, label %inrange6008 -range6007: - call void @finch_panic_index(ptr @.str.3829, i64 3181, i64 %t765, i64 %t767) - unreachable -inrange6008: - %t769 = extractvalue { ptr, i64, i64 } %t766, 0 - %t770 = getelementptr inbounds i64, ptr %t769, i64 %t765 - %t771 = load i64, ptr %t770 - call void @finch_str_from_int(ptr %a772, i64 %t771) - %t773 = load { ptr, i64, i64 }, ptr %a772 - store i64 -1, ptr %a774 - %t775 = load i64, ptr %t763 - %t776 = load ptr, ptr %a129 - store i64 0, ptr %a777 - br label %find.cond6009 -find.cond6009: - %t778 = load i64, ptr %a777 - %t779 = icmp slt i64 %t778, %t775 - br i1 %t779, label %find.body6010, label %find.end6013 -find.body6010: - %t780 = getelementptr inbounds { ptr, i64, i64 }, ptr %t776, i64 %t778 - %t781 = load { ptr, i64, i64 }, ptr %t780 - store { ptr, i64, i64 } %t781, ptr %a782 - store { ptr, i64, i64 } %t773, ptr %a783 - %t784 = call i32 @finch_str_eq(ptr %a782, ptr %a783) - %t785 = icmp ne i32 %t784, 0 - br i1 %t785, label %find.hit6011, label %find.next6012 -find.hit6011: - store i64 %t778, ptr %a774 - br label %find.end6013 -find.next6012: - %t786 = add i64 %t778, 1 - store i64 %t786, ptr %a777 - br label %find.cond6009 -find.end6013: - store { ptr, i64, i64 } %t773, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load i64, ptr %a774 - %t789 = icmp sge i64 %t788, 0 - %t790 = xor i1 %t789, true - br i1 %t790, label %then6014, label %endif6016 -then6014: - %t791 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t792 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t793 = load i64, ptr %a760 - %t794 = load { ptr, i64, i64 }, ptr %t792 - %t795 = extractvalue { ptr, i64, i64 } %t794, 1 - %t796 = icmp uge i64 %t793, %t795 - br i1 %t796, label %range6017, label %inrange6018 -range6017: - call void @finch_panic_index(ptr @.str.3830, i64 3182, i64 %t793, i64 %t795) - unreachable -inrange6018: - %t797 = extractvalue { ptr, i64, i64 } %t794, 0 - %t798 = getelementptr inbounds { ptr, i64, i64 }, ptr %t797, i64 %t793 - %t799 = load { ptr, i64, i64 }, ptr %t798 - store { ptr, i64, i64 } %t799, ptr %a800 - call void @finch_str_copy(ptr %a801, ptr %a800) - %t802 = load { ptr, i64, i64 }, ptr %a801 - %t803 = load i64, ptr %t791 - %t804 = add i64 %t803, 1 - call void @finch_arr_reserve(ptr %a756, i64 %t804, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t805 = load ptr, ptr %a756 - %t806 = getelementptr inbounds { ptr, i64, i64 }, ptr %t805, i64 %t803 - store { ptr, i64, i64 } %t802, ptr %t806 - store i64 %t804, ptr %t791 - br label %endif6016 -endif6016: - br label %for.step6005 -for.step6005: - %t807 = load i64, ptr %a760 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a760 - br label %for.cond6003 -for.end6006: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t810 = load i64, ptr %t809 - %t811 = icmp sgt i64 %t810, 0 - br i1 %t811, label %then6019, label %endif6021 -then6019: - %t812 = load ptr, ptr %a1 - %t813 = load %S.ast.Node, ptr %a2 - %t814 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3832, i64 2, i64 0 }, ptr %a815 - call void @finch_str_join(ptr %a816, ptr %a756, ptr %a815) - %t817 = load { ptr, i64, i64 }, ptr %a816 - store { ptr, i64, i64 } { ptr @.str.3831, i64 26, i64 0 }, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t822, ptr %a824 - store { ptr, i64, i64 } { ptr @.str.3833, i64 29, i64 0 }, ptr %a825 - call void @finch_str_concat(ptr %a823, ptr %a824, ptr %a825) - store { ptr, i64, i64 } %t822, ptr %a826 - call void @finch_str_drop(ptr %a826) - %t827 = load { ptr, i64, i64 }, ptr %a823 - call void @finch.gen.fail(ptr %t812, %S.ast.Node %t813, { ptr, i64, i64 } %t827) - store { ptr, i64, i64 } %t827, ptr %a828 - call void @finch_str_drop(ptr %a828) - br label %endif6021 -endif6021: - call void @finch.drop.arr_str(ptr %a756) - call void @finch.drop.S_gen_EnumDef(ptr %a755) - br label %endif5998 -else5997: - %t829 = load ptr, ptr %a1 - %t830 = load %S.ast.Node, ptr %a2 - %t831 = load %S.ast.Type, ptr %a19 - %t832 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t831) - store { ptr, i64, i64 } { ptr @.str.3834, i64 11, i64 0 }, ptr %a834 - store { ptr, i64, i64 } %t832, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - store { ptr, i64, i64 } %t837, ptr %a839 - store { ptr, i64, i64 } { ptr @.str.3835, i64 54, i64 0 }, ptr %a840 - call void @finch_str_concat(ptr %a838, ptr %a839, ptr %a840) - store { ptr, i64, i64 } %t837, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = load { ptr, i64, i64 }, ptr %a838 - call void @finch.gen.fail(ptr %t829, %S.ast.Node %t830, { ptr, i64, i64 } %t842) - store { ptr, i64, i64 } %t842, ptr %a843 - call void @finch_str_drop(ptr %a843) - br label %endif5998 -endif5998: - br label %endif5970 -endif5970: - %t844 = load ptr, ptr %a1 - %t845 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t844, { ptr, i64, i64 } { ptr @.str.3836, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3837, i64 35, i64 0 }, %S.ast.Node %t845) - %t846 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t846, { ptr, i64, i64 } { ptr @.str.3838, i64 11, i64 0 }) - %t847 = load ptr, ptr %a1 - %t848 = icmp eq ptr %t847, null - br i1 %t848, label %panic6022, label %ok6023 -panic6022: - call void @finch_panic(ptr @.str.3839, i64 3194, ptr @.str.3840) - unreachable -ok6023: - %t849 = getelementptr inbounds %S.gen.Gen, ptr %t847, i32 0, i32 9 - store i1 true, ptr %t849 - br label %endif5967 -endif5967: - %t850 = load ptr, ptr %a1 - %t851 = load i64, ptr %a46 - call void @finch.gen.heldEnd(ptr %t850, i64 %t851) - %t852 = load ptr, ptr %a1 - %t853 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.label(ptr %t852, { ptr, i64, i64 } %t853) - %t854 = load i1, ptr %a128 - %t855 = xor i1 %t854, true - br i1 %t855, label %then6024, label %endif6026 -then6024: - %t856 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t856, { ptr, i64, i64 } { ptr @.str.3841, i64 11, i64 0 }) - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic6027, label %ok6028 -panic6027: - call void @finch_panic(ptr @.str.3842, i64 3200, ptr @.str.3843) - unreachable -ok6028: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 9 - store i1 true, ptr %t859 - %t860 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3844, i64 4, i64 0 }) - %t861 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t860, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t861 -endif6026: - %t862 = load i1, ptr %a3 - br i1 %t862, label %then6029, label %endif6031 -then6029: - %t863 = load ptr, ptr %a1 - %t864 = load ptr, ptr %a1 - %t865 = load %S.ast.Type, ptr %a133 - %t866 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t864, %S.ast.Type %t865) - store { ptr, i64, i64 } { ptr @.str.3845, i64 4, i64 0 }, ptr %a868 - store { ptr, i64, i64 } %t866, ptr %a869 - call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869) - store { ptr, i64, i64 } %t866, ptr %a870 - call void @finch_str_drop(ptr %a870) - %t871 = load { ptr, i64, i64 }, ptr %a867 - store { ptr, i64, i64 } %t871, ptr %a873 - store { ptr, i64, i64 } { ptr @.str.3846, i64 1, i64 0 }, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - store { ptr, i64, i64 } %t871, ptr %a875 - call void @finch_str_drop(ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a872 - %t877 = load { ptr, i64, i64 }, ptr %a130 - %t878 = load { ptr, i64, i64 }, ptr %a131 - %t879 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t877, { ptr, i64, i64 } %t878) - store { ptr, i64, i64 } %t876, ptr %a881 - store { ptr, i64, i64 } %t879, ptr %a882 - call void @finch_str_concat(ptr %a880, ptr %a881, ptr %a882) - store { ptr, i64, i64 } %t876, ptr %a883 - call void @finch_str_drop(ptr %a883) - store { ptr, i64, i64 } %t879, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load { ptr, i64, i64 }, ptr %a880 - %t886 = call { ptr, i64, i64 } @finch.gen.op(ptr %t863, { ptr, i64, i64 } %t885) - store { ptr, i64, i64 } %t885, ptr %a887 - call void @finch_str_drop(ptr %a887) - %t888 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t886, 0 - %t889 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t889, ptr %a890 - call void @finch.copy.S_ast_Type(ptr %a891, ptr %a890) - %t892 = load %S.ast.Type, ptr %a891 - %t893 = insertvalue %S.gen.Val %t888, %S.ast.Type %t892, 1 - %t894 = load ptr, ptr %a1 - %t895 = load %S.ast.Type, ptr %a133 - %t896 = call i1 @finch.gen.owning(ptr %t894, %S.ast.Type %t895) - %t897 = insertvalue %S.gen.Val %t893, i1 %t896, 2 - store %S.gen.Val %t897, ptr %a898 - %t899 = load ptr, ptr %a1 - %t900 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t899, %S.gen.Val %t900) - %t901 = load %S.gen.Val, ptr %a898 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t901 -endif6031: - %t902 = load ptr, ptr %a1 - %t903 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t902, %S.gen.Val %t903) - %t904 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3847, i64 4, i64 0 }) - %t905 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t904, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t905 -} - -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 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond6032 -for.cond6032: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body6033, label %for.end6035 -for.body6033: - %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 %range6036, label %inrange6037 -range6036: - call void @finch_panic_index(ptr @.str.3849, i64 3215, i64 %t10, i64 %t12) - unreachable -inrange6037: - %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.3848, 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.3850, i64 3, i64 0 }, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - %t26 = load i64, ptr %a6 - %t27 = load { ptr, i64, i64 }, ptr %a2 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range6038, label %inrange6039 -range6038: - call void @finch_panic_index(ptr @.str.3851, i64 3215, i64 %t26, i64 %t28) - unreachable -inrange6039: - %t30 = extractvalue { ptr, i64, i64 } %t27, 0 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t26 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t25, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t25, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3852, i64 2, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load i64, ptr %t9 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %a3 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t9 - br label %for.step6034 -for.step6034: - %t47 = load i64, ptr %a6 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a6 - br label %for.cond6032 -for.end6035: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3853, i64 2, i64 0 }, ptr %a50 - call void @finch_str_join(ptr %a51, ptr %a3, ptr %a50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t52 -} - -define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) { -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 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a64 = alloca %S.gen.Val, align 16 - %a65 = alloca %S.gen.Val, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.gen.Fallible, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t4 = load { ptr, i64, i64 }, ptr %t3 - store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3854, 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.from6040 -logic.from6040: - br i1 %t8, label %logic.rhs6041, label %logic.end6042 -logic.rhs6041: - %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.3855, 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.rend6043 -logic.rend6043: - br label %logic.end6042 -logic.end6042: - %t15 = phi i1 [ false, %logic.from6040 ], [ %t14, %logic.rend6043 ] - br i1 %t15, label %then6044, label %endif6046 -then6044: - %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.3856, i64 80, i64 0 }) - br label %endif6046 -endif6046: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6047, label %ok6048 -panic6047: - call void @finch_panic(ptr @.str.3857, i64 3233, ptr @.str.3858) - unreachable -ok6048: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 41 - %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 %panic6049, label %ok6050 -panic6049: - call void @finch_panic(ptr @.str.3859, i64 3234, ptr @.str.3860) - unreachable -ok6050: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 42 - %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 %panic6051, label %ok6052 -panic6051: - call void @finch_panic(ptr @.str.3861, i64 3235, ptr @.str.3862) - unreachable -ok6052: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 43 - %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 %panic6053, label %ok6054 -panic6053: - call void @finch_panic(ptr @.str.3863, i64 3236, ptr @.str.3864) - unreachable -ok6054: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 41 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store { ptr, i64, i64 } %t43, ptr %t46 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic6055, label %ok6056 -panic6055: - call void @finch_panic(ptr @.str.3866, i64 3237, ptr @.str.3867) - unreachable -ok6056: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 42 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } { ptr @.str.3865, i64 0, i64 0 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic6057, label %ok6058 -panic6057: - call void @finch_panic(ptr @.str.3869, i64 3238, ptr @.str.3870) - unreachable -ok6058: - %t56 = getelementptr inbounds %S.gen.Gen, ptr %t54, i32 0, i32 43 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } { ptr @.str.3868, i64 0, i64 0 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = load %S.gen.Val, ptr %a62 - store %S.gen.Val %t63, ptr %a64 - call void @finch.copy.S_gen_Val(ptr %a65, ptr %a64) - %t66 = load %S.gen.Val, ptr %a65 - %t67 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t66, 0 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic6059, label %ok6060 -panic6059: - call void @finch_panic(ptr @.str.3871, i64 3240, ptr @.str.3872) - unreachable -ok6060: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 42 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_copy(ptr %a73, ptr %a72) - %t74 = load { ptr, i64, i64 }, ptr %a73 - %t75 = insertvalue %S.gen.Fallible %t67, { ptr, i64, i64 } %t74, 1 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic6061, label %ok6062 -panic6061: - call void @finch_panic(ptr @.str.3873, i64 3240, ptr @.str.3874) - unreachable -ok6062: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 43 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_copy(ptr %a81, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - %t83 = insertvalue %S.gen.Fallible %t75, { ptr, i64, i64 } %t82, 2 - store %S.gen.Fallible %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a25 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic6063, label %ok6064 -panic6063: - call void @finch_panic(ptr @.str.3875, i64 3241, ptr @.str.3876) - unreachable -ok6064: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 41 - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a33 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6065, label %ok6066 -panic6065: - call void @finch_panic(ptr @.str.3877, i64 3242, ptr @.str.3878) - unreachable -ok6066: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 42 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t100, ptr %t97 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a41 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic6067, label %ok6068 -panic6067: - call void @finch_panic(ptr @.str.3879, i64 3243, ptr @.str.3880) - unreachable -ok6068: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 43 - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_copy(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t109, ptr %t106 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = getelementptr inbounds %S.gen.Fallible, ptr %a84, i32 0, i32 1 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = load i64, ptr %t113 - %t115 = icmp eq i64 %t114, 0 - br i1 %t115, label %then6069, label %endif6071 -then6069: - %t116 = load ptr, ptr %a1 - %t117 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } { ptr @.str.3881, i64 50, i64 0 }) - br label %endif6071 -endif6071: - %t118 = load %S.gen.Fallible, ptr %a84 - call void @finch.drop.S_gen_Val(ptr %a62) - call void @finch_str_drop(ptr %a41) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a25) - ret %S.gen.Fallible %t118 -} - -define internal void @finch.drop.S_gen_Fallible(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Val(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca %S.gen.Fallible, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a156 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic6072, label %ok6073 -panic6072: - call void @finch_panic(ptr @.str.3882, i64 3252, ptr @.str.3883) - unreachable -ok6073: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then6074, label %endif6076 -then6074: - %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.3884, i64 30, i64 0 }) - br label %endif6076 -endif6076: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic6077, label %ok6078 -panic6077: - call void @finch_panic(ptr @.str.3885, i64 3255, ptr @.str.3886) - unreachable -ok6078: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9 - %t14 = load i1, ptr %t13 - %t15 = xor i1 %t14, true - br i1 %t15, label %then6079, label %endif6081 -then6079: - store { ptr, i64, i64 } { ptr @.str.3887, i64 1, i64 0 }, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6082, label %ok6083 -panic6082: - call void @finch_panic(ptr @.str.3888, i64 3257, ptr @.str.3889) - unreachable -ok6083: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 13 - %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12 - %t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3890, 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 %then6084, label %endif6086 -then6084: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6087, label %ok6088 -panic6087: - call void @finch_panic(ptr @.str.3891, i64 3258, ptr @.str.3892) - unreachable -ok6088: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 13 - %t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12 - %t31 = load %S.ast.Type, ptr %t30 - %t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31) - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3893, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t37, ptr %a16 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %endif6086 -endif6086: - %t40 = load ptr, ptr %a1 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = load ptr, ptr %a1 - %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic6089, label %ok6090 -panic6089: - call void @finch_panic(ptr @.str.3895, i64 3260, ptr @.str.3896) - unreachable -ok6090: - %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 13 - %t45 = getelementptr inbounds %S.gen.FnSig, ptr %t44, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } { ptr @.str.3894, i64 29, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3897, i64 31, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3898, i64 55, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.fail(ptr %t40, %S.ast.Node %t41, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a16) - br label %endif6081 -endif6081: - %t68 = load ptr, ptr %a1 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t70 = load { ptr, i64, i64 }, ptr %t69 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 0, %t71 - br i1 %t72, label %range6091, label %inrange6092 -range6091: - call void @finch_panic_index(ptr @.str.3899, i64 3262, i64 0, i64 %t71) - unreachable -inrange6092: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 0 - %t75 = load %S.ast.Node, ptr %t74 - %t76 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t68, %S.ast.Node %t75) - store %S.gen.Fallible %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t78, { ptr, i64, i64 } { ptr @.str.3900, i64 10, i64 0 }) - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t81, { ptr, i64, i64 } { ptr @.str.3901, i64 6, i64 0 }) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 1 - %t86 = load { ptr, i64, i64 }, ptr %t85 - %t87 = load { ptr, i64, i64 }, ptr %a80 - %t88 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.condBr(ptr %t84, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t88) - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a80 - call void @finch.gen.label(ptr %t89, { ptr, i64, i64 } %t90) - %t91 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t91, i64 0) - %t92 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t92, i64 0) - %t93 = load ptr, ptr %a1 - %t94 = load ptr, ptr %a1 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6093, label %ok6094 -panic6093: - call void @finch_panic(ptr @.str.3903, i64 3269, ptr @.str.3904) - unreachable -ok6094: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 13 - %t98 = load %S.gen.FnSig, ptr %t97 - %t99 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t94, %S.gen.FnSig %t98) - store { ptr, i64, i64 } { ptr @.str.3902, i64 4, i64 0 }, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.3905, i64 1, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load ptr, ptr %a1 - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic6095, label %ok6096 -panic6095: - call void @finch_panic(ptr @.str.3907, i64 3269, ptr @.str.3908) - unreachable -ok6096: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 13 - %t115 = load %S.gen.FnSig, ptr %t114 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t111, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.3906, i64 12, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.3909, i64 36, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t126, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.3910, i64 3, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t110, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - store { ptr, i64, i64 } %t109, ptr %a142 - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t109, ptr %a144 - call void @finch_str_drop(ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.emit(ptr %t93, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic6097, label %ok6098 -panic6097: - call void @finch_panic(ptr @.str.3911, i64 3270, ptr @.str.3912) - unreachable -ok6098: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 9 - store i1 true, ptr %t150 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) - %t153 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 0 - %t154 = load %S.gen.Val, ptr %t153 - store %S.gen.Val %t154, ptr %a155 - call void @finch.copy.S_gen_Val(ptr %a156, ptr %a155) - %t157 = load %S.gen.Val, ptr %a156 - call void @finch_str_drop(ptr %a83) - call void @finch_str_drop(ptr %a80) - call void @finch.drop.S_gen_Fallible(ptr %a77) - ret %S.gen.Val %t157 -} - -define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) { -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 - %a42 = alloca %S.ast.Type, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca i1, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.ast.Type, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Type, align 16 - %a245 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range6099, label %inrange6100 -range6099: - call void @finch_panic_index(ptr @.str.3913, i64 3277, i64 0, i64 %t7) - unreachable -inrange6100: - %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.3914, 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.3915, 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 %then6101, label %endif6103 -then6101: - %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.3917, 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.3916, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true, i1 true) - store %S.ast.Type %t38, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range6104, label %inrange6105 -range6104: - call void @finch_panic_index(ptr @.str.3918, i64 3286, i64 1, i64 %t47) - unreachable -inrange6105: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 - %t51 = load %S.ast.Node, ptr %t50 - call void @finch.gen.block(ptr %t44, %S.ast.Node %t51, i1 true) - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic6106, label %ok6107 -panic6106: - call void @finch_panic(ptr @.str.3919, i64 3287, ptr @.str.3920) - unreachable -ok6107: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 9 - %t55 = load i1, ptr %t54 - store i1 %t55, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t57) - %t58 = load i1, ptr %a56 - %t59 = xor i1 %t58, true - br label %logic.from6108 -logic.from6108: - br i1 %t59, label %logic.rhs6109, label %logic.end6110 -logic.rhs6109: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3921, i64 4, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp eq i32 %t65, 0 - br label %logic.rend6111 -logic.rend6111: - br label %logic.end6110 -logic.end6110: - %t67 = phi i1 [ false, %logic.from6108 ], [ %t66, %logic.rend6111 ] - br label %logic.from6112 -logic.from6112: - br i1 %t67, label %logic.rhs6113, label %logic.end6114 -logic.rhs6113: - %t68 = load i1, ptr %a3 - %t69 = xor i1 %t68, true - br label %logic.rend6115 -logic.rend6115: - br label %logic.end6114 -logic.end6114: - %t70 = phi i1 [ false, %logic.from6112 ], [ %t69, %logic.rend6115 ] - br i1 %t70, label %then6116, label %endif6118 -then6116: - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 1, %t74 - br i1 %t75, label %range6119, label %inrange6120 -range6119: - call void @finch_panic_index(ptr @.str.3922, i64 3290, i64 1, i64 %t74) - unreachable -inrange6120: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 1 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.3923, i64 142, i64 0 }) - br label %endif6118 -endif6118: - %t79 = load i1, ptr %a3 - br label %logic.from6121 -logic.from6121: - br i1 %t79, label %logic.rhs6122, label %logic.end6123 -logic.rhs6122: - %t80 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %t80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.3924, i64 4, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp eq i32 %t85, 0 - br label %logic.rend6124 -logic.rend6124: - br label %logic.end6123 -logic.end6123: - %t87 = phi i1 [ false, %logic.from6121 ], [ %t86, %logic.rend6124 ] - br i1 %t87, label %then6125, label %endif6127 -then6125: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3925, i64 6, i64 0 }) - store { ptr, i64, i64 } %t89, ptr %a90 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - %t96 = load %S.gen.Val, ptr %a19 - call void @finch.gen.release(ptr %t95, %S.gen.Val %t96) - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t97, { ptr, i64, i64 } %t98) - %t99 = load ptr, ptr %a1 - %t100 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t99, { ptr, i64, i64 } %t100) - %t101 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3926, i64 4, i64 0 }) - %t102 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t101, 1 - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t102 -endif6127: - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load %S.gen.Val, ptr %a19 - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t107 -endif6103: - %t108 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3927, 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 %then6128, label %endif6130 -then6128: - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 1, %t118 - br i1 %t119, label %range6131, label %inrange6132 -range6131: - call void @finch_panic_index(ptr @.str.3928, i64 3306, i64 1, i64 %t118) - unreachable -inrange6132: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Node, ptr %t120, i64 1 - %t122 = load %S.ast.Node, ptr %t121 - call void @finch.gen.fail(ptr %t115, %S.ast.Node %t122, { ptr, i64, i64 } { ptr @.str.3929, i64 98, i64 0 }) - br label %endif6130 -endif6130: - %t123 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t123) - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Node, ptr %a2 - %t126 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3931, i64 3, i64 0 }) - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t124, %S.ast.Node %t125, { ptr, i64, i64 } { ptr @.str.3930, i64 3, i64 0 }, %S.ast.Type %t126, { ptr, i64, i64 } %t128, i1 true, i1 true) - store %S.ast.Type %t126, ptr %a130 - call void @finch.drop.S_ast_Type(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 1, %t136 - br i1 %t137, label %range6133, label %inrange6134 -range6133: - call void @finch_panic_index(ptr @.str.3932, i64 3310, i64 1, i64 %t136) - unreachable -inrange6134: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Node, ptr %t138, i64 1 - %t140 = load %S.ast.Node, ptr %t139 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - %t143 = call %S.gen.Val @finch.gen.exprWant(ptr %t133, %S.ast.Node %t140, %S.ast.Type %t142) - %t144 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t147 = load { ptr, i64, i64 }, ptr %t146 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 1, %t148 - br i1 %t149, label %range6135, label %inrange6136 -range6135: - call void @finch_panic_index(ptr @.str.3933, i64 3310, i64 1, i64 %t148) - unreachable -inrange6136: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.ast.Node, ptr %t150, i64 1 - %t152 = load %S.ast.Node, ptr %t151 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t132, %S.gen.Val %t143, %S.ast.Type %t145, %S.ast.Node %t152, { ptr, i64, i64 } { ptr @.str.3934, i64 20, i64 0 }) - store %S.gen.Val %t143, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store %S.gen.Val %t153, ptr %a155 - %t156 = load ptr, ptr %a1 - %t157 = load %S.gen.Val, ptr %a155 - %t158 = call { ptr, i64, i64 } @finch.gen.own(ptr %t156, %S.gen.Val %t157) - store { ptr, i64, i64 } %t158, ptr %a159 - %t160 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t160) - %t161 = load ptr, ptr %a1 - %t162 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t161, { ptr, i64, i64 } { ptr @.str.3935, i64 7, i64 0 }) - store { ptr, i64, i64 } %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3936, i64 6, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168) - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170) - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172) - %t173 = load ptr, ptr %a1 - %t174 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t173, { ptr, i64, i64 } %t174) - %t175 = load ptr, ptr %a1 - %t176 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t175, { ptr, i64, i64 } %t176) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) - store { ptr, i64, i64 } { ptr @.str.3937, i64 4, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_drop(ptr %a187) - %t188 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t188, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.3938, i64 3, i64 0 }, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t188, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - %t194 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t193, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.3939, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t204, ptr %a207 - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t204, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.3940, i64 6, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.3941, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3942, i64 2, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t179, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t243 = load %S.ast.Type, ptr %t242 - store %S.ast.Type %t243, ptr %a244 - call void @finch.copy.S_ast_Type(ptr %a245, ptr %a244) - %t246 = load %S.ast.Type, ptr %a245 - %t247 = insertvalue %S.gen.Val %t241, %S.ast.Type %t246, 1 - %t248 = load ptr, ptr %a1 - %t249 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t250 = load %S.ast.Type, ptr %t249 - %t251 = call i1 @finch.gen.owning(ptr %t248, %S.ast.Type %t250) - %t252 = insertvalue %S.gen.Val %t247, i1 %t251, 2 - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a163) - call void @finch_str_drop(ptr %a159) - call void @finch.drop.S_gen_Val(ptr %a155) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t252 -} - -define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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.3943, 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 %then6137, label %endif6139 -then6137: - %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 -endif6139: - %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.3944, 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 %then6140, label %endif6142 -then6140: - %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 -endif6142: - %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 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %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.3945, 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 %then6143, label %endif6145 -then6143: - %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.3947, 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.from6146 -logic.from6146: - br i1 %t20, label %logic.end6148, label %logic.rhs6147 -logic.rhs6147: - %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.3949, 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.rend6149 -logic.rend6149: - br label %logic.end6148 -logic.end6148: - %t28 = phi i1 [ true, %logic.from6146 ], [ %t27, %logic.rend6149 ] - br i1 %t28, label %then6150, label %endif6152 -then6150: - 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.3950, i64 3339) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - store i64 0, ptr %a39 - br label %each.cond6153 -each.cond6153: - %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.body6154, label %each.end6156 -each.body6154: - %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.from6157 -logic.from6157: - br i1 %t54, label %logic.rhs6158, label %logic.end6159 -logic.rhs6158: - %t55 = load i8, ptr %a47 - %t56 = icmp ule i8 %t55, 102 - br label %logic.rend6160 -logic.rend6160: - br label %logic.end6159 -logic.end6159: - %t57 = phi i1 [ false, %logic.from6157 ], [ %t56, %logic.rend6160 ] - br i1 %t57, label %then6161, label %endif6163 -then6161: - %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 %endif6163 -endif6163: - %t63 = load i8, ptr %a47 - %t64 = icmp uge i8 %t63, 65 - br label %logic.from6164 -logic.from6164: - br i1 %t64, label %logic.rhs6165, label %logic.end6166 -logic.rhs6165: - %t65 = load i8, ptr %a47 - %t66 = icmp ule i8 %t65, 70 - br label %logic.rend6167 -logic.rend6167: - br label %logic.end6166 -logic.end6166: - %t67 = phi i1 [ false, %logic.from6164 ], [ %t66, %logic.rend6167 ] - br i1 %t67, label %then6168, label %endif6170 -then6168: - %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 %endif6170 -endif6170: - %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.step6155 -each.step6155: - %t77 = load i64, ptr %a39 - %t78 = add i64 %t77, 1 - store i64 %t78, ptr %a39 - br label %each.cond6153 -each.end6156: - call void @finch_str_drop(ptr %a38) - %t79 = load i64, ptr %a29 - call void @finch_str_from_int(ptr %a80, i64 %t79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t81, 0 - %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3951, i64 3, i64 0 }) - %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 - %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t85 -endif6152: - %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.3952, i64 3351) - 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.3953, i64 3, i64 0 }) - %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 - %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t95 -endif6145: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3954, 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 %then6171, label %endif6173 -then6171: - %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.3955, i64 5, i64 0 }) - %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t109 -endif6173: - %t110 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3956, 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 %then6174, label %endif6176 -then6174: - %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.3957, i64 4, i64 0 }) - %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t122 -endif6176: - %t123 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3958, 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 %then6177, label %endif6179 -then6177: - %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 %range6180, label %inrange6181 -range6180: - call void @finch_panic_index(ptr @.str.3959, i64 3360, i64 0, i64 %t130) - unreachable -inrange6181: - %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.3960, i64 4, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif6179: - %t143 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.3961, 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 %then6182, label %endif6184 -then6182: - %t148 = load ptr, ptr %a1 - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t151 -endif6184: - %t152 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.3962, 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 %then6185, label %endif6187 -then6185: - %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3963, i64 4, i64 0 }, 0 - %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3964, i64 4, i64 0 }) - %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t159 -endif6187: - %t160 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3965, 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.from6188 -logic.from6188: - br i1 %t164, label %logic.end6190, label %logic.rhs6189 -logic.rhs6189: - %t165 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3966, 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.rend6191 -logic.rend6191: - br label %logic.end6190 -logic.end6190: - %t170 = phi i1 [ true, %logic.from6188 ], [ %t169, %logic.rend6191 ] - br label %logic.from6192 -logic.from6192: - br i1 %t170, label %logic.end6194, label %logic.rhs6193 -logic.rhs6193: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3967, 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.rend6195 -logic.rend6195: - br label %logic.end6194 -logic.end6194: - %t176 = phi i1 [ true, %logic.from6192 ], [ %t175, %logic.rend6195 ] - br i1 %t176, label %then6196, label %endif6198 -then6196: - %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 %then6199, label %endif6201 -then6199: - %t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2 - %t185 = load %S.gen.Val, ptr %t184 - store %S.gen.Val %t185, ptr %a186 - call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186) - %t188 = load %S.gen.Val, ptr %a187 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t188 -endif6201: - %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) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 - %t201 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.Place, ptr %t201, i32 0, i32 1 - %t203 = load %S.ast.Type, ptr %t202 - store %S.ast.Type %t203, ptr %a204 - call void @finch.copy.S_ast_Type(ptr %a205, ptr %a204) - %t206 = load %S.ast.Type, ptr %a205 - %t207 = insertvalue %S.gen.Val %t200, %S.ast.Type %t206, 1 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t207 -endif6198: - %t208 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.3968, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then6202, label %endif6204 -then6202: - %t213 = load ptr, ptr %a1 - %t214 = load %S.ast.Node, ptr %a2 - %t215 = call %S.gen.Val @finch.gen.matchGen(ptr %t213, %S.ast.Node %t214, i1 true) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t215 -endif6204: - %t216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t216, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.3969, i64 3, i64 0 }, ptr %a218 - %t219 = call i32 @finch_str_eq(ptr %a217, ptr %a218) - %t220 = icmp ne i32 %t219, 0 - br i1 %t220, label %then6205, label %endif6207 -then6205: - %t221 = load ptr, ptr %a1 - %t222 = load %S.ast.Node, ptr %a2 - %t223 = call %S.gen.Val @finch.gen.tryExpr(ptr %t221, %S.ast.Node %t222) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -endif6207: - %t224 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t224, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.3970, i64 2, i64 0 }, ptr %a226 - %t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226) - %t228 = icmp ne i32 %t227, 0 - br i1 %t228, label %then6208, label %endif6210 -then6208: - %t229 = load ptr, ptr %a1 - %t230 = load %S.ast.Node, ptr %a2 - %t231 = call %S.gen.Val @finch.gen.orElse(ptr %t229, %S.ast.Node %t230, i1 false) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t231 -endif6210: - %t232 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t232, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3971, i64 5, i64 0 }, ptr %a234 - %t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234) - %t236 = icmp ne i32 %t235, 0 - br i1 %t236, label %then6211, label %endif6213 -then6211: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.gen.Val @finch.gen.unary(ptr %t237, %S.ast.Node %t238) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t239 -endif6213: - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t240, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3972, i64 6, i64 0 }, ptr %a242 - %t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242) - %t244 = icmp ne i32 %t243, 0 - br i1 %t244, label %then6214, label %endif6216 -then6214: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = call %S.gen.Val @finch.gen.binary(ptr %t245, %S.ast.Node %t246) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t247 -endif6216: - %t248 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3973, i64 4, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br i1 %t252, label %then6217, label %endif6219 -then6217: - %t253 = load ptr, ptr %a1 - %t254 = load %S.ast.Node, ptr %a2 - %t255 = call %S.gen.Val @finch.gen.call(ptr %t253, %S.ast.Node %t254) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t255 -endif6219: - %t256 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t256, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.3974, i64 6, i64 0 }, ptr %a258 - %t259 = call i32 @finch_str_eq(ptr %a257, ptr %a258) - %t260 = icmp ne i32 %t259, 0 - br i1 %t260, label %then6220, label %endif6222 -then6220: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a2 - %t263 = call %S.gen.Val @finch.gen.method(ptr %t261, %S.ast.Node %t262) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t263 -endif6222: - %t264 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t264, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.3975, i64 5, i64 0 }, ptr %a266 - %t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266) - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %then6223, label %endif6225 -then6223: - %t269 = load ptr, ptr %a1 - %t270 = load %S.ast.Node, ptr %a2 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3976, i64 4, i64 0 }) - %t272 = call %S.gen.Val @finch.gen.arrayLit(ptr %t269, %S.ast.Node %t270, %S.ast.Type %t271) - store %S.ast.Type %t271, ptr %a273 - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t272 -endif6225: - %t274 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t274, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.3977, i64 3, i64 0 }, ptr %a276 - %t277 = call i32 @finch_str_eq(ptr %a275, ptr %a276) - %t278 = icmp ne i32 %t277, 0 - br i1 %t278, label %then6226, label %endif6228 -then6226: - %t279 = load ptr, ptr %a1 - %t280 = load %S.ast.Node, ptr %a2 - %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3978, i64 4, i64 0 }) - %t282 = call %S.gen.Val @finch.gen.mapLit(ptr %t279, %S.ast.Node %t280, %S.ast.Type %t281) - store %S.ast.Type %t281, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t282 -endif6228: - %t284 = load ptr, ptr %a1 - %t285 = load %S.ast.Node, ptr %a2 - %t286 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.3979, i64 19, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - call void @finch.gen.fail(ptr %t284, %S.ast.Node %t285, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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.ast.Type, align 16 - %a31 = alloca %S.gen.Val, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a144 = alloca %S.ast.Type, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a158 = alloca %S.ast.Type, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca %S.ast.Type, align 16 - %a190 = alloca %S.ast.Type, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range6229, label %inrange6230 -range6229: - call void @finch_panic_index(ptr @.str.3980, i64 3408, i64 0, i64 %t6) - unreachable -inrange6230: - %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.3981, 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 %then6231, label %endif6233 -then6231: - %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.3982, 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 %range6234, label %inrange6235 -range6234: - call void @finch_panic_index(ptr @.str.3983, i64 3410, i64 0, i64 %t24) - unreachable -inrange6235: - %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.3984, i64 19, i64 0 }) - store %S.ast.Type %t21, ptr %a30 - call void @finch.drop.S_ast_Type(ptr %a30) - store %S.gen.Val %t29, ptr %a31 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } { ptr @.str.3985, 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.3986, i64 6, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = call { ptr, i64, i64 } @finch.gen.op(ptr %t32, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t44, 0 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3987, i64 4, i64 0 }) - %t48 = insertvalue %S.gen.Val %t46, %S.ast.Type %t47, 1 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t48 -endif6233: - %t49 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3988, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then6236, label %endif6238 -then6236: - %t55 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t56 = load %S.ast.Type, ptr %t55 - %t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56) - %t58 = xor i1 %t57, true - br i1 %t58, label %then6239, label %endif6241 -then6239: - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t62) - store { ptr, i64, i64 } { ptr @.str.3989, i64 45, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.gen.fail(ptr %t59, %S.ast.Node %t60, { ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_drop(ptr %a69) - br label %endif6241 -endif6241: - %t70 = load ptr, ptr %a1 - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t73 = load %S.ast.Type, ptr %t72 - %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t71, %S.ast.Type %t73) - store { ptr, i64, i64 } { ptr @.str.3990, i64 4, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3991, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t84, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t84, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3992, i64 4, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0 - %t100 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t101 = load %S.ast.Type, ptr %t100 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t99, %S.ast.Type %t104, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t105 -endif6238: - %t106 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t107 = load %S.ast.Type, ptr %t106 - %t108 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t107) - br i1 %t108, label %then6242, label %endif6244 -then6242: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a2 - %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t112 = load %S.ast.Type, ptr %t111 - %t113 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t112) - store { ptr, i64, i64 } %t113, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.3993, i64 34, i64 0 }, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t113, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t110, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif6244 -endif6244: - %t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.isSigned(%S.ast.Type %t121) - br i1 %t122, label %then6245, label %endif6247 -then6245: - %t123 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 - %t124 = load i1, ptr %t123 - br i1 %t124, label %then6248, label %endif6250 -then6248: - %t125 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3995, i64 1, i64 0 }, ptr %a129 - %t130 = call i32 @finch_str_starts(ptr %a127, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - br i1 %t131, label %then6251, label %endif6253 -then6251: - %t132 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - %t136 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a135, ptr %a134, i64 1, i64 %t138, ptr @.str.3996, i64 3425) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - store %S.ast.Type %t142, ptr %a143 - call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143) - %t145 = load %S.ast.Type, ptr %a144 - %t146 = insertvalue %S.gen.Val %t140, %S.ast.Type %t145, 1 - %t147 = insertvalue %S.gen.Val %t146, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t147 -endif6253: - %t148 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t149 = load { ptr, i64, i64 }, ptr %t148 - store { ptr, i64, i64 } { ptr @.str.3997, i64 1, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t153, 0 - %t155 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t156 = load %S.ast.Type, ptr %t155 - store %S.ast.Type %t156, ptr %a157 - call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) - %t159 = load %S.ast.Type, ptr %a158 - %t160 = insertvalue %S.gen.Val %t154, %S.ast.Type %t159, 1 - %t161 = insertvalue %S.gen.Val %t160, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t161 -endif6250: - %t162 = load ptr, ptr %a1 - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t165 = load %S.ast.Type, ptr %t164 - %t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t165) - store { ptr, i64, i64 } { ptr @.str.3998, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t166, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.3999, i64 4, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - %t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t176, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t176, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t184, 0 - %t187 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t188 = load %S.ast.Type, ptr %t187 - store %S.ast.Type %t188, ptr %a189 - call void @finch.copy.S_ast_Type(ptr %a190, ptr %a189) - %t191 = load %S.ast.Type, ptr %a190 - %t192 = insertvalue %S.gen.Val %t186, %S.ast.Type %t191, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t192 -endif6247: - %t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br i1 %t195, label %then6254, label %endif6256 -then6254: - %t196 = load ptr, ptr %a1 - %t197 = load ptr, ptr %a1 - %t198 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t197, %S.ast.Type %t199) - store { ptr, i64, i64 } { ptr @.str.4000, i64 5, i64 0 }, ptr %a202 - store { ptr, i64, i64 } %t200, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4001, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - %t211 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t212 = load { ptr, i64, i64 }, ptr %t211 - store { ptr, i64, i64 } %t210, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t210, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t196, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t218, 0 - %t221 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t222 = load %S.ast.Type, ptr %t221 - store %S.ast.Type %t222, ptr %a223 - call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223) - %t225 = load %S.ast.Type, ptr %a224 - %t226 = insertvalue %S.gen.Val %t220, %S.ast.Type %t225, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t226 -endif6256: - %t227 = load ptr, ptr %a1 - %t228 = load %S.ast.Node, ptr %a2 - %t229 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t230) - store { ptr, i64, i64 } { ptr @.str.4002, i64 26, i64 0 }, ptr %a233 - store { ptr, i64, i64 } %t231, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t236) - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load %S.gen.Val, ptr %a12 - ret %S.gen.Val %t238 -} - -define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - store %S.gen.Val %p3, ptr %a4 - store %S.ast.Node %p4, ptr %a5 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.4003, 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.4004, i64 5, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a25 - %t26 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t27 = load %S.ast.Type, ptr %t26 - %t28 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call i1 @finch.ast.same(%S.ast.Type %t27, %S.ast.Type %t29) - %t31 = xor i1 %t30, true - br i1 %t31, label %then6257, label %endif6259 -then6257: - %t32 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.4005, i64 5, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - %t37 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t38 = load %S.ast.Type, ptr %t37 - %t39 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t38) - store { ptr, i64, i64 } %t36, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t36, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a40 - %t46 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t45, ptr %a25 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif6259 -endif6259: - %t48 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4006, i64 1, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from6260 -logic.from6260: - br i1 %t52, label %logic.rhs6261, label %logic.end6262 -logic.rhs6261: - %t53 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t54 = getelementptr inbounds %S.ast.Type, ptr %t53, i32 0, i32 0 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4007, 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.from6263 -logic.from6263: - br i1 %t59, label %logic.end6265, label %logic.rhs6264 -logic.rhs6264: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4008, i64 3, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br label %logic.rend6266 -logic.rend6266: - br label %logic.end6265 -logic.end6265: - %t67 = phi i1 [ true, %logic.from6263 ], [ %t66, %logic.rend6266 ] - br label %logic.rend6267 -logic.rend6267: - br label %logic.end6262 -logic.end6262: - %t68 = phi i1 [ false, %logic.from6260 ], [ %t67, %logic.rend6267 ] - br i1 %t68, label %then6268, label %endif6270 -then6268: - %t69 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4009, i64 48, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t73, ptr %a25 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - br label %endif6270 -endif6270: - %t76 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.4010, i64 1, i64 0 }, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br label %logic.from6271 -logic.from6271: - br i1 %t80, label %logic.end6273, label %logic.rhs6272 -logic.rhs6272: - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4011, 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.rend6274 -logic.rend6274: - br label %logic.end6273 -logic.end6273: - %t86 = phi i1 [ true, %logic.from6271 ], [ %t85, %logic.rend6274 ] - br label %logic.from6275 -logic.from6275: - br i1 %t86, label %logic.rhs6276, label %logic.end6277 -logic.rhs6276: - %t87 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4012, i64 4, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp ne i32 %t92, 0 - br label %logic.rend6278 -logic.rend6278: - br label %logic.end6277 -logic.end6277: - %t94 = phi i1 [ false, %logic.from6275 ], [ %t93, %logic.rend6278 ] - br i1 %t94, label %then6279, label %else6280 -then6279: - %t95 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4013, i64 1, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then6282, label %else6283 -then6282: - %t100 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4014, i64 26, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a101 - %t105 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t104, ptr %a25 - store { ptr, i64, i64 } %t105, ptr %a106 - call void @finch_str_drop(ptr %a106) - br label %endif6284 -else6283: - %t107 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.4015, i64 26, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - %t112 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t111, ptr %a25 - store { ptr, i64, i64 } %t112, ptr %a113 - call void @finch_str_drop(ptr %a113) - br label %endif6284 -endif6284: - br label %endif6281 -else6280: - %t114 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.4016, i64 1, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from6285 -logic.from6285: - br i1 %t118, label %logic.end6287, label %logic.rhs6286 -logic.rhs6286: - %t119 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4017, i64 1, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend6288 -logic.rend6288: - br label %logic.end6287 -logic.end6287: - %t124 = phi i1 [ true, %logic.from6285 ], [ %t123, %logic.rend6288 ] - br label %logic.from6289 -logic.from6289: - br i1 %t124, label %logic.end6291, label %logic.rhs6290 -logic.rhs6290: - %t125 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.4018, i64 1, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br label %logic.rend6292 -logic.rend6292: - br label %logic.end6291 -logic.end6291: - %t130 = phi i1 [ true, %logic.from6289 ], [ %t129, %logic.rend6292 ] - br label %logic.from6293 -logic.from6293: - br i1 %t130, label %logic.end6295, label %logic.rhs6294 -logic.rhs6294: - %t131 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4019, i64 2, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6296 -logic.rend6296: - br label %logic.end6295 -logic.end6295: - %t136 = phi i1 [ true, %logic.from6293 ], [ %t135, %logic.rend6296 ] - br label %logic.from6297 -logic.from6297: - br i1 %t136, label %logic.end6299, label %logic.rhs6298 -logic.rhs6298: - %t137 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.4020, i64 2, i64 0 }, ptr %a139 - %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) - %t141 = icmp ne i32 %t140, 0 - br label %logic.rend6300 -logic.rend6300: - br label %logic.end6299 -logic.end6299: - %t142 = phi i1 [ true, %logic.from6297 ], [ %t141, %logic.rend6300 ] - br i1 %t142, label %then6301, label %endif6303 -then6301: - %t143 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.4021, i64 43, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t147, ptr %a25 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - br label %endif6303 -endif6303: - br label %endif6281 -endif6281: - %t150 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t151 = getelementptr inbounds %S.ast.Type, ptr %t150, i32 0, i32 0 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.4022, i64 6, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from6304 -logic.from6304: - br i1 %t156, label %logic.end6306, label %logic.rhs6305 -logic.rhs6305: - %t157 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t158 = getelementptr inbounds %S.ast.Type, ptr %t157, i32 0, i32 0 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.4023, 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.rend6307 -logic.rend6307: - br label %logic.end6306 -logic.end6306: - %t164 = phi i1 [ true, %logic.from6304 ], [ %t163, %logic.rend6307 ] - br label %logic.from6308 -logic.from6308: - br i1 %t164, label %logic.rhs6309, label %logic.end6310 -logic.rhs6309: - %t165 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4024, i64 2, i64 0 }, ptr %a167 - %t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167) - %t169 = icmp ne i32 %t168, 0 - br label %logic.from6311 -logic.from6311: - br i1 %t169, label %logic.end6313, label %logic.rhs6312 -logic.rhs6312: - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4025, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br label %logic.rend6314 -logic.rend6314: - br label %logic.end6313 -logic.end6313: - %t175 = phi i1 [ true, %logic.from6311 ], [ %t174, %logic.rend6314 ] - br label %logic.rend6315 -logic.rend6315: - br label %logic.end6310 -logic.end6310: - %t176 = phi i1 [ false, %logic.from6308 ], [ %t175, %logic.rend6315 ] - br i1 %t176, label %then6316, label %endif6318 -then6316: - %t177 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t177, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.4026, i64 31, i64 0 }, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - %t182 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t181, ptr %a25 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - br label %endif6318 -endif6318: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a5 - %t186 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186) - call void @finch_str_drop(ptr %a25) - ret void -} - -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 - %a68 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Type, align 16 - %a113 = alloca %S.gen.Val, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a149 = alloca %S.gen.Val, align 16 - %a178 = alloca %S.ast.Type, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.gen.Val, align 16 - %a207 = alloca %S.ast.Node, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a233 = alloca %S.ast.Node, align 16 - %a237 = alloca %S.gen.Val, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca %S.ast.Type, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a304 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - store ptr %p2, ptr %a3 - %t4 = load ptr, ptr %a2 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6319, label %ok6320 -panic6319: - call void @finch_panic(ptr @.str.4027, i64 3462, ptr @.str.4028) - unreachable -ok6320: - %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 %panic6321, label %ok6322 -panic6321: - call void @finch_panic(ptr @.str.4029, i64 3462, ptr @.str.4030) - unreachable -ok6322: - %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 %then6323, label %endif6325 -then6323: - ret i1 true -endif6325: - %t13 = load ptr, ptr %a2 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic6326, label %ok6327 -panic6326: - call void @finch_panic(ptr @.str.4031, i64 3465, ptr @.str.4032) - unreachable -ok6327: - %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.from6328 -logic.from6328: - br i1 %t17, label %logic.rhs6329, label %logic.end6330 -logic.rhs6329: - %t18 = load ptr, ptr %a3 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6331, label %ok6332 -panic6331: - call void @finch_panic(ptr @.str.4033, i64 3465, ptr @.str.4034) - unreachable -ok6332: - %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.rend6333 -logic.rend6333: - br label %logic.end6330 -logic.end6330: - %t23 = phi i1 [ false, %logic.from6328 ], [ %t22, %logic.rend6333 ] - br i1 %t23, label %then6334, label %endif6336 -then6334: - %t24 = load ptr, ptr %a2 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic6337, label %ok6338 -panic6337: - call void @finch_panic(ptr @.str.4035, i64 3468, ptr @.str.4036) - unreachable -ok6338: - %t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3 - %t27 = load i1, ptr %t26 - br label %logic.from6339 -logic.from6339: - br i1 %t27, label %logic.rhs6340, label %logic.end6341 -logic.rhs6340: - %t28 = load ptr, ptr %a3 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic6342, label %ok6343 -panic6342: - call void @finch_panic(ptr @.str.4037, i64 3468, ptr @.str.4038) - unreachable -ok6343: - %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.rend6344 -logic.rend6344: - br label %logic.end6341 -logic.end6341: - %t33 = phi i1 [ false, %logic.from6339 ], [ %t32, %logic.rend6344 ] - br label %logic.from6345 -logic.from6345: - br i1 %t33, label %logic.rhs6346, label %logic.end6347 -logic.rhs6346: - %t34 = load ptr, ptr %a2 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic6348, label %ok6349 -panic6348: - call void @finch_panic(ptr @.str.4039, i64 3468, ptr @.str.4040) - unreachable -ok6349: - %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 %panic6350, label %ok6351 -panic6350: - call void @finch_panic(ptr @.str.4041, i64 3468, ptr @.str.4042) - unreachable -ok6351: - %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 %panic6352, label %ok6353 -panic6352: - call void @finch_panic(ptr @.str.4043, i64 3468, ptr @.str.4044) - unreachable -ok6353: - %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.rend6354 -logic.rend6354: - br label %logic.end6347 -logic.end6347: - %t47 = phi i1 [ false, %logic.from6345 ], [ %t46, %logic.rend6354 ] - br i1 %t47, label %then6355, label %endif6357 -then6355: - %t48 = load ptr, ptr %a2 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic6358, label %ok6359 -panic6358: - call void @finch_panic(ptr @.str.4045, i64 3469, ptr @.str.4046) - unreachable -ok6359: - %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 %panic6360, label %ok6361 -panic6360: - call void @finch_panic(ptr @.str.4047, i64 3469, ptr @.str.4048) - unreachable -ok6361: - %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 %panic6362, label %ok6363 -panic6362: - call void @finch_panic(ptr @.str.4049, i64 3469, ptr @.str.4050) - unreachable -ok6363: - %t67 = load %S.gen.Val, ptr %t65 - store %S.gen.Val %t64, ptr %t65 - store %S.gen.Val %t67, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - ret i1 true -endif6357: - %t69 = load ptr, ptr %a3 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic6364, label %ok6365 -panic6364: - call void @finch_panic(ptr @.str.4051, i64 3472, ptr @.str.4052) - unreachable -ok6365: - %t71 = getelementptr inbounds %S.gen.Val, ptr %t69, i32 0, i32 3 - %t72 = load i1, ptr %t71 - br label %logic.from6366 -logic.from6366: - br i1 %t72, label %logic.rhs6367, label %logic.end6368 -logic.rhs6367: - %t73 = load ptr, ptr %a2 - %t74 = icmp eq ptr %t73, null - br i1 %t74, label %panic6369, label %ok6370 -panic6369: - call void @finch_panic(ptr @.str.4053, i64 3472, ptr @.str.4054) - unreachable -ok6370: - %t75 = getelementptr inbounds %S.gen.Val, ptr %t73, i32 0, i32 3 - %t76 = load i1, ptr %t75 - %t77 = xor i1 %t76, true - br label %logic.rend6371 -logic.rend6371: - br label %logic.end6368 -logic.end6368: - %t78 = phi i1 [ false, %logic.from6366 ], [ %t77, %logic.rend6371 ] - br label %logic.from6372 -logic.from6372: - br i1 %t78, label %logic.rhs6373, label %logic.end6374 -logic.rhs6373: - %t79 = load ptr, ptr %a3 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic6375, label %ok6376 -panic6375: - call void @finch_panic(ptr @.str.4055, i64 3472, ptr @.str.4056) - unreachable -ok6376: - %t81 = getelementptr inbounds %S.gen.Val, ptr %t79, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = load ptr, ptr %a3 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic6377, label %ok6378 -panic6377: - call void @finch_panic(ptr @.str.4057, i64 3472, ptr @.str.4058) - unreachable -ok6378: - %t85 = getelementptr inbounds %S.gen.Val, ptr %t83, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - %t87 = load ptr, ptr %a2 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic6379, label %ok6380 -panic6379: - call void @finch_panic(ptr @.str.4059, i64 3472, ptr @.str.4060) - unreachable -ok6380: - %t89 = getelementptr inbounds %S.gen.Val, ptr %t87, i32 0, i32 1 - %t90 = load %S.ast.Type, ptr %t89 - %t91 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t82, %S.ast.Type %t86, %S.ast.Type %t90) - br label %logic.rend6381 -logic.rend6381: - br label %logic.end6374 -logic.end6374: - %t92 = phi i1 [ false, %logic.from6372 ], [ %t91, %logic.rend6381 ] - br i1 %t92, label %then6382, label %endif6384 -then6382: - %t93 = load ptr, ptr %a3 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic6385, label %ok6386 -panic6385: - call void @finch_panic(ptr @.str.4061, i64 3473, ptr @.str.4062) - unreachable -ok6386: - %t95 = getelementptr inbounds %S.gen.Val, ptr %t93, i32 0, i32 0 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load ptr, ptr %a2 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic6387, label %ok6388 -panic6387: - call void @finch_panic(ptr @.str.4063, i64 3473, ptr @.str.4064) - unreachable -ok6388: - %t103 = getelementptr inbounds %S.gen.Val, ptr %t101, i32 0, i32 1 - %t104 = load %S.ast.Type, ptr %t103 - store %S.ast.Type %t104, ptr %a105 - call void @finch.copy.S_ast_Type(ptr %a106, ptr %a105) - %t107 = load %S.ast.Type, ptr %a106 - %t108 = insertvalue %S.gen.Val %t100, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - %t110 = load ptr, ptr %a3 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic6389, label %ok6390 -panic6389: - call void @finch_panic(ptr @.str.4065, i64 3473, ptr @.str.4066) - unreachable -ok6390: - %t112 = load %S.gen.Val, ptr %t110 - store %S.gen.Val %t109, ptr %t110 - store %S.gen.Val %t112, ptr %a113 - call void @finch.drop.S_gen_Val(ptr %a113) - ret i1 true -endif6384: - %t114 = load ptr, ptr %a2 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic6391, label %ok6392 -panic6391: - call void @finch_panic(ptr @.str.4067, i64 3476, ptr @.str.4068) - unreachable -ok6392: - %t116 = getelementptr inbounds %S.gen.Val, ptr %t114, i32 0, i32 1 - %t117 = load %S.ast.Type, ptr %t116 - %t118 = load ptr, ptr %a3 - %t119 = icmp eq ptr %t118, null - br i1 %t119, label %panic6393, label %ok6394 -panic6393: - call void @finch_panic(ptr @.str.4069, i64 3476, ptr @.str.4070) - unreachable -ok6394: - %t120 = getelementptr inbounds %S.gen.Val, ptr %t118, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.widens(%S.ast.Type %t117, %S.ast.Type %t121) - br i1 %t122, label %then6395, label %endif6397 -then6395: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a2 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic6398, label %ok6399 -panic6398: - call void @finch_panic(ptr @.str.4071, i64 3477, ptr @.str.4072) - unreachable -ok6399: - %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 0 - %t127 = load { ptr, i64, i64 }, ptr %t126 - %t128 = load ptr, ptr %a2 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic6400, label %ok6401 -panic6400: - call void @finch_panic(ptr @.str.4073, i64 3477, ptr @.str.4074) - unreachable -ok6401: - %t130 = getelementptr inbounds %S.gen.Val, ptr %t128, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = load ptr, ptr %a3 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic6402, label %ok6403 -panic6402: - call void @finch_panic(ptr @.str.4075, i64 3477, ptr @.str.4076) - unreachable -ok6403: - %t134 = getelementptr inbounds %S.gen.Val, ptr %t132, i32 0, i32 1 - %t135 = load %S.ast.Type, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t127, %S.ast.Type %t131, %S.ast.Type %t135) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t136, 0 - %t138 = load ptr, ptr %a3 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic6404, label %ok6405 -panic6404: - call void @finch_panic(ptr @.str.4077, i64 3477, ptr @.str.4078) - unreachable -ok6405: - %t140 = getelementptr inbounds %S.gen.Val, ptr %t138, i32 0, i32 1 - %t141 = load %S.ast.Type, ptr %t140 - store %S.ast.Type %t141, ptr %a142 - call void @finch.copy.S_ast_Type(ptr %a143, ptr %a142) - %t144 = load %S.ast.Type, ptr %a143 - %t145 = insertvalue %S.gen.Val %t137, %S.ast.Type %t144, 1 - %t146 = load ptr, ptr %a2 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6406, label %ok6407 -panic6406: - call void @finch_panic(ptr @.str.4079, i64 3477, ptr @.str.4080) - unreachable -ok6407: - %t148 = load %S.gen.Val, ptr %t146 - store %S.gen.Val %t145, ptr %t146 - store %S.gen.Val %t148, ptr %a149 - call void @finch.drop.S_gen_Val(ptr %a149) - ret i1 true -endif6397: - %t150 = load ptr, ptr %a3 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic6408, label %ok6409 -panic6408: - call void @finch_panic(ptr @.str.4081, i64 3480, ptr @.str.4082) - unreachable -ok6409: - %t152 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 1 - %t153 = load %S.ast.Type, ptr %t152 - %t154 = load ptr, ptr %a2 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic6410, label %ok6411 -panic6410: - call void @finch_panic(ptr @.str.4083, i64 3480, ptr @.str.4084) - unreachable -ok6411: - %t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 1 - %t157 = load %S.ast.Type, ptr %t156 - %t158 = call i1 @finch.gen.widens(%S.ast.Type %t153, %S.ast.Type %t157) - br i1 %t158, label %then6412, label %endif6414 -then6412: - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a3 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic6415, label %ok6416 -panic6415: - call void @finch_panic(ptr @.str.4085, i64 3481, ptr @.str.4086) - unreachable -ok6416: - %t162 = getelementptr inbounds %S.gen.Val, ptr %t160, i32 0, i32 0 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = load ptr, ptr %a3 - %t165 = icmp eq ptr %t164, null - br i1 %t165, label %panic6417, label %ok6418 -panic6417: - call void @finch_panic(ptr @.str.4087, i64 3481, ptr @.str.4088) - unreachable -ok6418: - %t166 = getelementptr inbounds %S.gen.Val, ptr %t164, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load ptr, ptr %a2 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic6419, label %ok6420 -panic6419: - call void @finch_panic(ptr @.str.4089, i64 3481, ptr @.str.4090) - unreachable -ok6420: - %t170 = getelementptr inbounds %S.gen.Val, ptr %t168, i32 0, i32 1 - %t171 = load %S.ast.Type, ptr %t170 - %t172 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t159, { ptr, i64, i64 } %t163, %S.ast.Type %t167, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load ptr, ptr %a2 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic6421, label %ok6422 -panic6421: - call void @finch_panic(ptr @.str.4091, i64 3481, ptr @.str.4092) - unreachable -ok6422: - %t176 = getelementptr inbounds %S.gen.Val, ptr %t174, i32 0, i32 1 - %t177 = load %S.ast.Type, ptr %t176 - store %S.ast.Type %t177, ptr %a178 - call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) - %t180 = load %S.ast.Type, ptr %a179 - %t181 = insertvalue %S.gen.Val %t173, %S.ast.Type %t180, 1 - %t182 = load ptr, ptr %a3 - %t183 = icmp eq ptr %t182, null - br i1 %t183, label %panic6423, label %ok6424 -panic6423: - call void @finch_panic(ptr @.str.4093, i64 3481, ptr @.str.4094) - unreachable -ok6424: - %t184 = load %S.gen.Val, ptr %t182 - store %S.gen.Val %t181, ptr %t182 - store %S.gen.Val %t184, ptr %a185 - call void @finch.drop.S_gen_Val(ptr %a185) - ret i1 true -endif6414: - ret i1 false -endif6336: - %t186 = load ptr, ptr %a2 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic6425, label %ok6426 -panic6425: - call void @finch_panic(ptr @.str.4095, i64 3486, ptr @.str.4096) - unreachable -ok6426: - %t188 = getelementptr inbounds %S.gen.Val, ptr %t186, i32 0, i32 1 - %t189 = load %S.ast.Type, ptr %t188 - %t190 = call i1 @finch.gen.isInt(%S.ast.Type %t189) - br label %logic.from6427 -logic.from6427: - br i1 %t190, label %logic.rhs6428, label %logic.end6429 -logic.rhs6428: - %t191 = load ptr, ptr %a3 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic6430, label %ok6431 -panic6430: - call void @finch_panic(ptr @.str.4097, i64 3486, ptr @.str.4098) - unreachable -ok6431: - %t193 = getelementptr inbounds %S.gen.Val, ptr %t191, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br label %logic.rend6432 -logic.rend6432: - br label %logic.end6429 -logic.end6429: - %t196 = phi i1 [ false, %logic.from6427 ], [ %t195, %logic.rend6432 ] - br i1 %t196, label %then6433, label %endif6435 -then6433: - %t197 = load ptr, ptr %a1 - %t198 = load ptr, ptr %a2 - %t199 = icmp eq ptr %t198, null - br i1 %t199, label %panic6436, label %ok6437 -panic6436: - call void @finch_panic(ptr @.str.4099, i64 3487, ptr @.str.4100) - unreachable -ok6437: - %t200 = load %S.gen.Val, ptr %t198 - %t201 = load ptr, ptr %a3 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic6438, label %ok6439 -panic6438: - call void @finch_panic(ptr @.str.4101, i64 3487, ptr @.str.4102) - unreachable -ok6439: - %t203 = getelementptr inbounds %S.gen.Val, ptr %t201, i32 0, i32 1 - %t204 = load %S.ast.Type, ptr %t203 - %t205 = call %S.ast.Node @finch.gen.Node0() - %t206 = call %S.gen.Val @finch.gen.coerce(ptr %t197, %S.gen.Val %t200, %S.ast.Type %t204, %S.ast.Node %t205, { ptr, i64, i64 } { ptr @.str.4103, i64 0, i64 0 }) - store %S.ast.Node %t205, ptr %a207 - call void @finch.drop.S_ast_Node(ptr %a207) - %t208 = load ptr, ptr %a2 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic6440, label %ok6441 -panic6440: - call void @finch_panic(ptr @.str.4104, i64 3487, ptr @.str.4105) - unreachable -ok6441: - %t210 = load %S.gen.Val, ptr %t208 - store %S.gen.Val %t206, ptr %t208 - store %S.gen.Val %t210, ptr %a211 - call void @finch.drop.S_gen_Val(ptr %a211) - ret i1 true -endif6435: - %t212 = load ptr, ptr %a2 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic6442, label %ok6443 -panic6442: - call void @finch_panic(ptr @.str.4106, i64 3490, ptr @.str.4107) - unreachable -ok6443: - %t214 = getelementptr inbounds %S.gen.Val, ptr %t212, i32 0, i32 1 - %t215 = load %S.ast.Type, ptr %t214 - %t216 = call i1 @finch.gen.isFloat(%S.ast.Type %t215) - br label %logic.from6444 -logic.from6444: - br i1 %t216, label %logic.rhs6445, label %logic.end6446 -logic.rhs6445: - %t217 = load ptr, ptr %a3 - %t218 = icmp eq ptr %t217, null - br i1 %t218, label %panic6447, label %ok6448 -panic6447: - call void @finch_panic(ptr @.str.4108, i64 3490, ptr @.str.4109) - unreachable -ok6448: - %t219 = getelementptr inbounds %S.gen.Val, ptr %t217, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %t219 - %t221 = call i1 @finch.gen.isInt(%S.ast.Type %t220) - br label %logic.rend6449 -logic.rend6449: - br label %logic.end6446 -logic.end6446: - %t222 = phi i1 [ false, %logic.from6444 ], [ %t221, %logic.rend6449 ] - br i1 %t222, label %then6450, label %endif6452 -then6450: - %t223 = load ptr, ptr %a1 - %t224 = load ptr, ptr %a3 - %t225 = icmp eq ptr %t224, null - br i1 %t225, label %panic6453, label %ok6454 -panic6453: - call void @finch_panic(ptr @.str.4110, i64 3491, ptr @.str.4111) - unreachable -ok6454: - %t226 = load %S.gen.Val, ptr %t224 - %t227 = load ptr, ptr %a2 - %t228 = icmp eq ptr %t227, null - br i1 %t228, label %panic6455, label %ok6456 -panic6455: - call void @finch_panic(ptr @.str.4112, i64 3491, ptr @.str.4113) - unreachable -ok6456: - %t229 = getelementptr inbounds %S.gen.Val, ptr %t227, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call %S.ast.Node @finch.gen.Node0() - %t232 = call %S.gen.Val @finch.gen.coerce(ptr %t223, %S.gen.Val %t226, %S.ast.Type %t230, %S.ast.Node %t231, { ptr, i64, i64 } { ptr @.str.4114, i64 0, i64 0 }) - store %S.ast.Node %t231, ptr %a233 - call void @finch.drop.S_ast_Node(ptr %a233) - %t234 = load ptr, ptr %a3 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic6457, label %ok6458 -panic6457: - call void @finch_panic(ptr @.str.4115, i64 3491, ptr @.str.4116) - unreachable -ok6458: - %t236 = load %S.gen.Val, ptr %t234 - store %S.gen.Val %t232, ptr %t234 - store %S.gen.Val %t236, ptr %a237 - call void @finch.drop.S_gen_Val(ptr %a237) - ret i1 true -endif6452: - %t238 = load ptr, ptr %a2 - %t239 = icmp eq ptr %t238, null - br i1 %t239, label %panic6459, label %ok6460 -panic6459: - call void @finch_panic(ptr @.str.4117, i64 3494, ptr @.str.4118) - unreachable -ok6460: - %t240 = getelementptr inbounds %S.gen.Val, ptr %t238, i32 0, i32 1 - %t241 = load %S.ast.Type, ptr %t240 - %t242 = call i1 @finch.gen.isFloat(%S.ast.Type %t241) - br label %logic.from6461 -logic.from6461: - br i1 %t242, label %logic.rhs6462, label %logic.end6463 -logic.rhs6462: - %t243 = load ptr, ptr %a3 - %t244 = icmp eq ptr %t243, null - br i1 %t244, label %panic6464, label %ok6465 -panic6464: - call void @finch_panic(ptr @.str.4119, i64 3494, ptr @.str.4120) - unreachable -ok6465: - %t245 = getelementptr inbounds %S.gen.Val, ptr %t243, i32 0, i32 1 - %t246 = load %S.ast.Type, ptr %t245 - %t247 = call i1 @finch.gen.isFloat(%S.ast.Type %t246) - br label %logic.rend6466 -logic.rend6466: - br label %logic.end6463 -logic.end6463: - %t248 = phi i1 [ false, %logic.from6461 ], [ %t247, %logic.rend6466 ] - br i1 %t248, label %then6467, label %endif6469 -then6467: - %t249 = load ptr, ptr %a2 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic6470, label %ok6471 -panic6470: - call void @finch_panic(ptr @.str.4121, i64 3495, ptr @.str.4122) - unreachable -ok6471: - %t251 = getelementptr inbounds %S.gen.Val, ptr %t249, i32 0, i32 1 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4123, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br i1 %t257, label %then6472, label %endif6474 -then6472: - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a2 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic6475, label %ok6476 -panic6475: - call void @finch_panic(ptr @.str.4124, i64 3496, ptr @.str.4125) - unreachable -ok6476: - %t261 = getelementptr inbounds %S.gen.Val, ptr %t259, i32 0, i32 0 - %t262 = load { ptr, i64, i64 }, ptr %t261 - %t263 = load ptr, ptr %a2 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic6477, label %ok6478 -panic6477: - call void @finch_panic(ptr @.str.4126, i64 3496, ptr @.str.4127) - unreachable -ok6478: - %t265 = getelementptr inbounds %S.gen.Val, ptr %t263, i32 0, i32 1 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4128, i64 5, i64 0 }) - %t268 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t258, { ptr, i64, i64 } %t262, %S.ast.Type %t266, %S.ast.Type %t267) - store %S.ast.Type %t267, ptr %a269 - call void @finch.drop.S_ast_Type(ptr %a269) - %t270 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4129, i64 5, i64 0 }) - %t272 = insertvalue %S.gen.Val %t270, %S.ast.Type %t271, 1 - %t273 = load ptr, ptr %a2 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic6479, label %ok6480 -panic6479: - call void @finch_panic(ptr @.str.4130, i64 3496, ptr @.str.4131) - unreachable -ok6480: - %t275 = load %S.gen.Val, ptr %t273 - store %S.gen.Val %t272, ptr %t273 - store %S.gen.Val %t275, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - br label %endif6474 -endif6474: - %t277 = load ptr, ptr %a3 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic6481, label %ok6482 -panic6481: - call void @finch_panic(ptr @.str.4132, i64 3498, ptr @.str.4133) - unreachable -ok6482: - %t279 = getelementptr inbounds %S.gen.Val, ptr %t277, i32 0, i32 1 - %t280 = getelementptr inbounds %S.ast.Type, ptr %t279, i32 0, i32 0 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4134, i64 3, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br i1 %t285, label %then6483, label %endif6485 -then6483: - %t286 = load ptr, ptr %a1 - %t287 = load ptr, ptr %a3 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic6486, label %ok6487 -panic6486: - call void @finch_panic(ptr @.str.4135, i64 3499, ptr @.str.4136) - unreachable -ok6487: - %t289 = getelementptr inbounds %S.gen.Val, ptr %t287, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - %t291 = load ptr, ptr %a3 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic6488, label %ok6489 -panic6488: - call void @finch_panic(ptr @.str.4137, i64 3499, ptr @.str.4138) - unreachable -ok6489: - %t293 = getelementptr inbounds %S.gen.Val, ptr %t291, i32 0, i32 1 - %t294 = load %S.ast.Type, ptr %t293 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4139, i64 5, i64 0 }) - %t296 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t286, { ptr, i64, i64 } %t290, %S.ast.Type %t294, %S.ast.Type %t295) - store %S.ast.Type %t295, ptr %a297 - call void @finch.drop.S_ast_Type(ptr %a297) - %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t296, 0 - %t299 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4140, i64 5, i64 0 }) - %t300 = insertvalue %S.gen.Val %t298, %S.ast.Type %t299, 1 - %t301 = load ptr, ptr %a3 - %t302 = icmp eq ptr %t301, null - br i1 %t302, label %panic6490, label %ok6491 -panic6490: - call void @finch_panic(ptr @.str.4141, i64 3499, ptr @.str.4142) - unreachable -ok6491: - %t303 = load %S.gen.Val, ptr %t301 - store %S.gen.Val %t300, ptr %t301 - store %S.gen.Val %t303, ptr %a304 - call void @finch.drop.S_gen_Val(ptr %a304) - br label %endif6485 -endif6485: - ret i1 true -endif6469: - 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca i64, align 16 - %a155 = alloca i64, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca i64, align 16 - %a313 = alloca i64, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca %S.ast.Type, align 16 - %a384 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4143, 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.from6492 -logic.from6492: - br i1 %t16, label %logic.rhs6493, label %logic.end6494 -logic.rhs6493: - %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.4144, 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.rend6495 -logic.rend6495: - br label %logic.end6494 -logic.end6494: - %t24 = phi i1 [ false, %logic.from6492 ], [ %t23, %logic.rend6495 ] - br label %logic.from6496 -logic.from6496: - br i1 %t24, label %logic.rhs6497, label %logic.end6498 -logic.rhs6497: - %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.4145, 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.rend6499 -logic.rend6499: - br label %logic.end6498 -logic.end6498: - %t32 = phi i1 [ false, %logic.from6496 ], [ %t31, %logic.rend6499 ] - br i1 %t32, label %then6500, label %endif6502 -then6500: - %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.4146, 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.4147, 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.4148, i64 6, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a6 - %t49 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t47, %S.gen.Val %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.4149, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load ptr, ptr %a1 - %t62 = load %S.gen.Val, ptr %a10 - %t63 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t61, %S.gen.Val %t62) - store { ptr, i64, i64 } %t60, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t60, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4150, i64 1, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t74) - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load ptr, ptr %a1 - %t77 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t76, %S.gen.Val %t77) - %t78 = load ptr, ptr %a1 - %t79 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t78, %S.gen.Val %t79) - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a35 - %t82 = call { ptr, i64, i64 } @finch.gen.load(ptr %t80, { ptr, i64, i64 } { ptr @.str.4151, i64 17, i64 0 }, { ptr, i64, i64 } %t81) - %t83 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t82, 0 - %t84 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4152, i64 3, i64 0 }) - %t85 = insertvalue %S.gen.Val %t83, %S.ast.Type %t84, 1 - %t86 = insertvalue %S.gen.Val %t85, i1 true, 2 - call void @finch_str_drop(ptr %a35) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t86 -endif6502: - %t87 = load ptr, ptr %a1 - %t88 = call i1 @finch.gen.unify(ptr %t87, ptr %a6, ptr %a10) - %t89 = xor i1 %t88, true - br i1 %t89, label %then6503, label %endif6505 -then6503: - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a2 - %t92 = load %S.gen.Val, ptr %a6 - %t93 = load %S.gen.Val, ptr %a10 - %t94 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t90, { ptr, i64, i64 } %t91, %S.gen.Val %t92, %S.gen.Val %t93, %S.ast.Node %t94) - br label %endif6505 -endif6505: - %t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = call i1 @finch.gen.isInt(%S.ast.Type %t96) - br i1 %t97, label %then6506, label %endif6508 -then6506: - %t98 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t99 = call ptr @finch_alloc(i64 %t98) - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 0 - store { ptr, i64, i64 } { ptr @.str.4153, i64 1, i64 0 }, ptr %t100 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 1 - store { ptr, i64, i64 } { ptr @.str.4154, i64 1, i64 0 }, ptr %t101 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 2 - store { ptr, i64, i64 } { ptr @.str.4155, i64 1, i64 0 }, ptr %t102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 3 - store { ptr, i64, i64 } { ptr @.str.4156, i64 1, i64 0 }, ptr %t103 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 4 - store { ptr, i64, i64 } { ptr @.str.4157, i64 1, i64 0 }, ptr %t104 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 5 - store { ptr, i64, i64 } { ptr @.str.4158, i64 1, i64 0 }, ptr %t105 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 6 - store { ptr, i64, i64 } { ptr @.str.4159, i64 1, i64 0 }, ptr %t106 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 7 - store { ptr, i64, i64 } { ptr @.str.4160, i64 1, i64 0 }, ptr %t107 - %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 8 - store { ptr, i64, i64 } { ptr @.str.4161, i64 2, i64 0 }, ptr %t108 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 9 - store { ptr, i64, i64 } { ptr @.str.4162, i64 2, i64 0 }, ptr %t109 - %t110 = insertvalue { ptr, i64, i64 } undef, ptr %t99, 0 - %t111 = insertvalue { ptr, i64, i64 } %t110, i64 10, 1 - %t112 = insertvalue { ptr, i64, i64 } %t111, i64 10, 2 - store { ptr, i64, i64 } %t112, ptr %a113 - %t114 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t115 = call ptr @finch_alloc(i64 %t114) - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 0 - store { ptr, i64, i64 } { ptr @.str.4163, i64 3, i64 0 }, ptr %t116 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 1 - store { ptr, i64, i64 } { ptr @.str.4164, i64 3, i64 0 }, ptr %t117 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 2 - store { ptr, i64, i64 } { ptr @.str.4165, i64 3, i64 0 }, ptr %t118 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 3 - store { ptr, i64, i64 } { ptr @.str.4166, i64 4, i64 0 }, ptr %t119 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 4 - store { ptr, i64, i64 } { ptr @.str.4167, i64 4, i64 0 }, ptr %t120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 5 - store { ptr, i64, i64 } { ptr @.str.4168, i64 3, i64 0 }, ptr %t121 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 6 - store { ptr, i64, i64 } { ptr @.str.4169, i64 2, i64 0 }, ptr %t122 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 7 - store { ptr, i64, i64 } { ptr @.str.4170, i64 3, i64 0 }, ptr %t123 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 8 - store { ptr, i64, i64 } { ptr @.str.4171, i64 3, i64 0 }, ptr %t124 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 9 - store { ptr, i64, i64 } { ptr @.str.4172, i64 4, i64 0 }, ptr %t125 - %t126 = insertvalue { ptr, i64, i64 } undef, ptr %t115, 0 - %t127 = insertvalue { ptr, i64, i64 } %t126, i64 10, 1 - %t128 = insertvalue { ptr, i64, i64 } %t127, i64 10, 2 - store { ptr, i64, i64 } %t128, ptr %a129 - %t130 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t131) - br i1 %t132, label %then6509, label %endif6511 -then6509: - %t133 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t134 = call ptr @finch_alloc(i64 %t133) - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 0 - store { ptr, i64, i64 } { ptr @.str.4173, i64 3, i64 0 }, ptr %t135 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 1 - store { ptr, i64, i64 } { ptr @.str.4174, i64 3, i64 0 }, ptr %t136 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 2 - store { ptr, i64, i64 } { ptr @.str.4175, i64 3, i64 0 }, ptr %t137 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 3 - store { ptr, i64, i64 } { ptr @.str.4176, i64 4, i64 0 }, ptr %t138 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 4 - store { ptr, i64, i64 } { ptr @.str.4177, i64 4, i64 0 }, ptr %t139 - %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 5 - store { ptr, i64, i64 } { ptr @.str.4178, i64 3, i64 0 }, ptr %t140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 6 - store { ptr, i64, i64 } { ptr @.str.4179, i64 2, i64 0 }, ptr %t141 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 7 - store { ptr, i64, i64 } { ptr @.str.4180, i64 3, i64 0 }, ptr %t142 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 8 - store { ptr, i64, i64 } { ptr @.str.4181, i64 3, i64 0 }, ptr %t143 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 9 - store { ptr, i64, i64 } { ptr @.str.4182, i64 4, i64 0 }, ptr %t144 - %t145 = insertvalue { ptr, i64, i64 } undef, ptr %t134, 0 - %t146 = insertvalue { ptr, i64, i64 } %t145, i64 10, 1 - %t147 = insertvalue { ptr, i64, i64 } %t146, i64 10, 2 - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t147, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_str(ptr %a149) - br label %endif6511 -endif6511: - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a152 - %t153 = load i64, ptr %t150 - %t154 = load ptr, ptr %a113 - store i64 0, ptr %a155 - br label %find.cond6512 -find.cond6512: - %t156 = load i64, ptr %a155 - %t157 = icmp slt i64 %t156, %t153 - br i1 %t157, label %find.body6513, label %find.end6516 -find.body6513: - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i64 %t156 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } %t151, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br i1 %t163, label %find.hit6514, label %find.next6515 -find.hit6514: - store i64 %t156, ptr %a152 - br label %find.end6516 -find.next6515: - %t164 = add i64 %t156, 1 - store i64 %t164, ptr %a155 - br label %find.cond6512 -find.end6516: - %t165 = load i64, ptr %a152 - store i64 %t165, ptr %a166 - %t167 = load i64, ptr %a166 - %t168 = icmp slt i64 %t167, 0 - br i1 %t168, label %then6517, label %endif6519 -then6517: - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a2 - %t171 = load %S.gen.Val, ptr %a6 - %t172 = load %S.gen.Val, ptr %a10 - %t173 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t169, { ptr, i64, i64 } %t170, %S.gen.Val %t171, %S.gen.Val %t172, %S.ast.Node %t173) - br label %endif6519 -endif6519: - %t174 = load ptr, ptr %a1 - %t175 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t174, %S.ast.Type %t176) - store { ptr, i64, i64 } %t177, ptr %a178 - %t179 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4183, 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.from6520 -logic.from6520: - br i1 %t183, label %logic.end6522, label %logic.rhs6521 -logic.rhs6521: - %t184 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.4184, i64 1, i64 0 }, ptr %a186 - %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) - %t188 = icmp ne i32 %t187, 0 - br label %logic.rend6523 -logic.rend6523: - br label %logic.end6522 -logic.end6522: - %t189 = phi i1 [ true, %logic.from6520 ], [ %t188, %logic.rend6523 ] - br i1 %t189, label %then6524, label %endif6526 -then6524: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t191 = load i1, ptr %t190 - br label %logic.from6527 -logic.from6527: - br i1 %t191, label %logic.rhs6528, label %logic.end6529 -logic.rhs6528: - %t192 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4185, i64 1, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br label %logic.rend6530 -logic.rend6530: - br label %logic.end6529 -logic.end6529: - %t198 = phi i1 [ false, %logic.from6527 ], [ %t197, %logic.rend6530 ] - br i1 %t198, label %then6531, label %endif6533 -then6531: - %t199 = load ptr, ptr %a1 - %t200 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t199, %S.ast.Node %t200, { ptr, i64, i64 } { ptr @.str.4186, i64 16, i64 0 }) - br label %endif6533 -endif6533: - %t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t202 = load i1, ptr %t201 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6534, label %endif6536 -then6534: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4187, i64 8, i64 0 }, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a207 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.4188, i64 1, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4189, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = call { ptr, i64, i64 } @finch.gen.op(ptr %t205, { ptr, i64, i64 } %t227) - store { ptr, i64, i64 } %t227, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load %S.ast.Node, ptr %a11 - call void @finch.gen.panicIf(ptr %t204, { ptr, i64, i64 } %t228, { ptr, i64, i64 } { ptr @.str.4190, i64 16, i64 0 }, %S.ast.Node %t230) - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_drop(ptr %a231) - br label %endif6536 -endif6536: - br label %endif6526 -endif6526: - %t232 = load ptr, ptr %a1 - %t233 = load i64, ptr %a166 - %t234 = load { ptr, i64, i64 }, ptr %a129 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range6537, label %inrange6538 -range6537: - call void @finch_panic_index(ptr @.str.4191, i64 3540, i64 %t233, i64 %t235) - unreachable -inrange6538: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t233 - %t239 = load { ptr, i64, i64 }, ptr %t238 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.4192, i64 1, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4193, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.4194, i64 2, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.op(ptr %t232, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t274, 0 - %t277 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = insertvalue %S.gen.Val %t276, %S.ast.Type %t281, 1 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.arr_str(ptr %a129) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t282 -endif6508: - %t283 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t284 = load %S.ast.Type, ptr %t283 - %t285 = call i1 @finch.gen.isFloat(%S.ast.Type %t284) - br i1 %t285, label %then6539, label %endif6541 -then6539: - %t286 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t287 = call ptr @finch_alloc(i64 %t286) - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 0 - store { ptr, i64, i64 } { ptr @.str.4195, i64 1, i64 0 }, ptr %t288 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 1 - store { ptr, i64, i64 } { ptr @.str.4196, i64 1, i64 0 }, ptr %t289 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 2 - store { ptr, i64, i64 } { ptr @.str.4197, i64 1, i64 0 }, ptr %t290 - %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 3 - store { ptr, i64, i64 } { ptr @.str.4198, i64 1, i64 0 }, ptr %t291 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 4 - store { ptr, i64, i64 } { ptr @.str.4199, i64 1, i64 0 }, ptr %t292 - %t293 = insertvalue { ptr, i64, i64 } undef, ptr %t287, 0 - %t294 = insertvalue { ptr, i64, i64 } %t293, i64 5, 1 - %t295 = insertvalue { ptr, i64, i64 } %t294, i64 5, 2 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t298 = call ptr @finch_alloc(i64 %t297) - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 0 - store { ptr, i64, i64 } { ptr @.str.4200, i64 4, i64 0 }, ptr %t299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 1 - store { ptr, i64, i64 } { ptr @.str.4201, i64 4, i64 0 }, ptr %t300 - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 2 - store { ptr, i64, i64 } { ptr @.str.4202, i64 4, i64 0 }, ptr %t301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 3 - store { ptr, i64, i64 } { ptr @.str.4203, i64 4, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 4 - store { ptr, i64, i64 } { ptr @.str.4204, i64 4, i64 0 }, ptr %t303 - %t304 = insertvalue { ptr, i64, i64 } undef, ptr %t298, 0 - %t305 = insertvalue { ptr, i64, i64 } %t304, i64 5, 1 - %t306 = insertvalue { ptr, i64, i64 } %t305, i64 5, 2 - store { ptr, i64, i64 } %t306, ptr %a307 - %t308 = getelementptr inbounds { ptr, i64, i64 }, ptr %a296, i32 0, i32 1 - %t309 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a310 - %t311 = load i64, ptr %t308 - %t312 = load ptr, ptr %a296 - store i64 0, ptr %a313 - br label %find.cond6542 -find.cond6542: - %t314 = load i64, ptr %a313 - %t315 = icmp slt i64 %t314, %t311 - br i1 %t315, label %find.body6543, label %find.end6546 -find.body6543: - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t314 - %t317 = load { ptr, i64, i64 }, ptr %t316 - store { ptr, i64, i64 } %t317, ptr %a318 - store { ptr, i64, i64 } %t309, ptr %a319 - %t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319) - %t321 = icmp ne i32 %t320, 0 - br i1 %t321, label %find.hit6544, label %find.next6545 -find.hit6544: - store i64 %t314, ptr %a310 - br label %find.end6546 -find.next6545: - %t322 = add i64 %t314, 1 - store i64 %t322, ptr %a313 - br label %find.cond6542 -find.end6546: - %t323 = load i64, ptr %a310 - store i64 %t323, ptr %a324 - %t325 = load i64, ptr %a324 - %t326 = icmp slt i64 %t325, 0 - br i1 %t326, label %then6547, label %endif6549 -then6547: - %t327 = load ptr, ptr %a1 - %t328 = load { ptr, i64, i64 }, ptr %a2 - %t329 = load %S.gen.Val, ptr %a6 - %t330 = load %S.gen.Val, ptr %a10 - %t331 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t327, { ptr, i64, i64 } %t328, %S.gen.Val %t329, %S.gen.Val %t330, %S.ast.Node %t331) - br label %endif6549 -endif6549: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %a307 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range6550, label %inrange6551 -range6550: - call void @finch_panic_index(ptr @.str.4205, i64 3549, i64 %t333, i64 %t335) - unreachable -inrange6551: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t333 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a341 - store { ptr, i64, i64 } { ptr @.str.4206, i64 1, i64 0 }, ptr %a342 - call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a340 - %t344 = load ptr, ptr %a1 - %t345 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t344, %S.ast.Type %t346) - store { ptr, i64, i64 } %t343, ptr %a349 - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350) - store { ptr, i64, i64 } %t343, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t347, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t353, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.4207, i64 1, i64 0 }, ptr %a356 - call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) - store { ptr, i64, i64 } %t353, ptr %a357 - call void @finch_str_drop(ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t360 = load { ptr, i64, i64 }, ptr %t359 - store { ptr, i64, i64 } %t358, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t358, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4208, i64 2, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - %t378 = call { ptr, i64, i64 } @finch.gen.op(ptr %t332, { ptr, i64, i64 } %t377) - store { ptr, i64, i64 } %t377, ptr %a379 - call void @finch_str_drop(ptr %a379) - %t380 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t378, 0 - %t381 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t382 = load %S.ast.Type, ptr %t381 - store %S.ast.Type %t382, ptr %a383 - call void @finch.copy.S_ast_Type(ptr %a384, ptr %a383) - %t385 = load %S.ast.Type, ptr %a384 - %t386 = insertvalue %S.gen.Val %t380, %S.ast.Type %t385, 1 - call void @finch.drop.arr_str(ptr %a307) - call void @finch.drop.arr_str(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t386 -endif6541: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a2 - %t389 = load %S.gen.Val, ptr %a6 - %t390 = load %S.gen.Val, ptr %a10 - %t391 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t387, { ptr, i64, i64 } %t388, %S.gen.Val %t389, %S.gen.Val %t390, %S.ast.Node %t391) - %t392 = load %S.gen.Val, ptr %a6 - call void @finch.drop.S_gen_Val(ptr %a10) - ret %S.gen.Val %t392 -} - -define internal %S.gen.Val @finch.gen.compare(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %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 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca i64, align 16 - %a330 = alloca i64, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4209, 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.from6552 -logic.from6552: - br i1 %t16, label %logic.end6554, label %logic.rhs6553 -logic.rhs6553: - %t17 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4210, 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.rend6555 -logic.rend6555: - br label %logic.end6554 -logic.end6554: - %t22 = phi i1 [ true, %logic.from6552 ], [ %t21, %logic.rend6555 ] - 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.4211, 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.from6556 -logic.from6556: - br i1 %t30, label %logic.end6558, label %logic.rhs6557 -logic.rhs6557: - %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.4212, 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.rend6559 -logic.rend6559: - br label %logic.end6558 -logic.end6558: - %t38 = phi i1 [ true, %logic.from6556 ], [ %t37, %logic.rend6559 ] - br label %logic.from6560 -logic.from6560: - br i1 %t38, label %logic.end6562, label %logic.rhs6561 -logic.rhs6561: - %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.4213, 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.rend6563 -logic.rend6563: - br label %logic.end6562 -logic.end6562: - %t46 = phi i1 [ true, %logic.from6560 ], [ %t45, %logic.rend6563 ] - br label %logic.from6564 -logic.from6564: - br i1 %t46, label %logic.end6566, label %logic.rhs6565 -logic.rhs6565: - %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.4214, 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.rend6567 -logic.rend6567: - br label %logic.end6566 -logic.end6566: - %t54 = phi i1 [ true, %logic.from6564 ], [ %t53, %logic.rend6567 ] - br i1 %t54, label %then6568, label %endif6570 -then6568: - %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.4215, 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.from6571 -logic.from6571: - br i1 %t61, label %logic.end6573, label %logic.rhs6572 -logic.rhs6572: - %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.4216, 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.rend6574 -logic.rend6574: - br label %logic.end6573 -logic.end6573: - %t69 = phi i1 [ true, %logic.from6571 ], [ %t68, %logic.rend6574 ] - br i1 %t69, label %then6575, label %endif6577 -then6575: - %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.4217, i64 59, i64 0 }) - br label %endif6577 -endif6577: - %t72 = load i1, ptr %a23 - %t73 = xor i1 %t72, true - br i1 %t73, label %then6578, label %endif6580 -then6578: - %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 %endif6580 -endif6580: - store { ptr, i64, i64 } { ptr @.str.4218, 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.4219, 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 %then6581, label %endif6583 -then6581: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4220, i64 2, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6583 -endif6583: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4221, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4222, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4223, i64 2, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t109, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t109, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t117, 0 - %t120 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4224, i64 4, i64 0 }) - %t121 = insertvalue %S.gen.Val %t119, %S.ast.Type %t120, 1 - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t121 -endif6570: - %t122 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i32 0, i32 0 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.4225, 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.from6584 -logic.from6584: - br i1 %t128, label %logic.rhs6585, label %logic.end6586 -logic.rhs6585: - %t129 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t130 = getelementptr inbounds %S.ast.Type, ptr %t129, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4226, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6587 -logic.rend6587: - br label %logic.end6586 -logic.end6586: - %t136 = phi i1 [ false, %logic.from6584 ], [ %t135, %logic.rend6587 ] - br i1 %t136, label %then6588, label %endif6590 -then6588: - %t137 = load i1, ptr %a23 - br i1 %t137, label %then6591, label %endif6593 -then6591: - %t138 = load ptr, ptr %a1 - %t139 = load ptr, ptr %a1 - %t140 = load %S.gen.Val, ptr %a6 - %t141 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t139, %S.gen.Val %t140) - store { ptr, i64, i64 } { ptr @.str.4227, i64 27, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4228, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a10 - %t154 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t152, %S.gen.Val %t153) - store { ptr, i64, i64 } %t151, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t151, ptr %a158 - call void @finch_str_drop(ptr %a158) - store { ptr, i64, i64 } %t154, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4229, i64 1, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - store { ptr, i64, i64 } %t160, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load { ptr, i64, i64 }, ptr %a161 - %t166 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t165) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4230, i64 2, i64 0 }, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4231, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then6594, label %endif6596 -then6594: - %t175 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4232, i64 2, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif6596 -endif6596: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4233, i64 5, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4234, i64 5, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t193, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4235, i64 3, i64 0 }, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t177, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - store { ptr, i64, i64 } %t199, ptr %a201 - %t202 = load ptr, ptr %a1 - %t203 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t202, %S.gen.Val %t203) - %t204 = load ptr, ptr %a1 - %t205 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t204, %S.gen.Val %t205) - %t206 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4236, i64 4, i64 0 }) - %t212 = insertvalue %S.gen.Val %t210, %S.ast.Type %t211, 1 - call void @finch_str_drop(ptr %a201) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t212 -endif6593: - %t213 = load ptr, ptr %a1 - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.Val, ptr %a6 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t214, %S.gen.Val %t215) - store { ptr, i64, i64 } { ptr @.str.4237, i64 28, i64 0 }, ptr %a218 - store { ptr, i64, i64 } %t216, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - store { ptr, i64, i64 } %t221, ptr %a223 - store { ptr, i64, i64 } { ptr @.str.4238, i64 6, i64 0 }, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t221, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - %t227 = load ptr, ptr %a1 - %t228 = load %S.gen.Val, ptr %a10 - %t229 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t227, %S.gen.Val %t228) - store { ptr, i64, i64 } %t226, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t226, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t229, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.4239, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - %t241 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a242 - call void @finch_str_drop(ptr %a242) - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load { ptr, i64, i64 }, ptr %a2 - %t246 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t245, i1 true) - store { ptr, i64, i64 } { ptr @.str.4240, i64 5, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4241, i64 5, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t256, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.4242, i64 3, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = call { ptr, i64, i64 } @finch.gen.op(ptr %t244, { ptr, i64, i64 } %t267) - store { ptr, i64, i64 } %t267, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t268, ptr %a270 - %t271 = load ptr, ptr %a1 - %t272 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t271, %S.gen.Val %t272) - %t273 = load ptr, ptr %a1 - %t274 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t273, %S.gen.Val %t274) - %t275 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_copy(ptr %a277, ptr %a276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - %t279 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t278, 0 - %t280 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4243, i64 4, i64 0 }) - %t281 = insertvalue %S.gen.Val %t279, %S.ast.Type %t280, 1 - call void @finch_str_drop(ptr %a270) - call void @finch_str_drop(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t281 -endif6590: - %t282 = load ptr, ptr %a1 - %t283 = call i1 @finch.gen.unify(ptr %t282, ptr %a6, ptr %a10) - %t284 = xor i1 %t283, true - br i1 %t284, label %then6597, label %endif6599 -then6597: - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a2 - %t287 = load %S.gen.Val, ptr %a6 - %t288 = load %S.gen.Val, ptr %a10 - %t289 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t285, { ptr, i64, i64 } %t286, %S.gen.Val %t287, %S.gen.Val %t288, %S.ast.Node %t289) - br label %endif6599 -endif6599: - %t290 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Type, ptr %t290, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_copy(ptr %a294, ptr %a293) - %t295 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t298 = load %S.ast.Type, ptr %t297 - %t299 = call i1 @finch.gen.isFloat(%S.ast.Type %t298) - br i1 %t299, label %then6600, label %endif6602 -then6600: - %t300 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t301 = call ptr @finch_alloc(i64 %t300) - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 0 - store { ptr, i64, i64 } { ptr @.str.4244, i64 2, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 1 - store { ptr, i64, i64 } { ptr @.str.4245, i64 2, i64 0 }, ptr %t303 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 2 - store { ptr, i64, i64 } { ptr @.str.4246, i64 1, i64 0 }, ptr %t304 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 3 - store { ptr, i64, i64 } { ptr @.str.4247, i64 2, i64 0 }, ptr %t305 - %t306 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 4 - store { ptr, i64, i64 } { ptr @.str.4248, i64 1, i64 0 }, ptr %t306 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 5 - store { ptr, i64, i64 } { ptr @.str.4249, i64 2, i64 0 }, ptr %t307 - %t308 = insertvalue { ptr, i64, i64 } undef, ptr %t301, 0 - %t309 = insertvalue { ptr, i64, i64 } %t308, i64 6, 1 - %t310 = insertvalue { ptr, i64, i64 } %t309, i64 6, 2 - store { ptr, i64, i64 } %t310, ptr %a311 - %t312 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t313 = call ptr @finch_alloc(i64 %t312) - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 0 - store { ptr, i64, i64 } { ptr @.str.4250, i64 3, i64 0 }, ptr %t314 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 1 - store { ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 2 - store { ptr, i64, i64 } { ptr @.str.4252, i64 3, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 3 - store { ptr, i64, i64 } { ptr @.str.4253, i64 3, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 4 - store { ptr, i64, i64 } { ptr @.str.4254, i64 3, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 5 - store { ptr, i64, i64 } { ptr @.str.4255, i64 3, i64 0 }, ptr %t319 - %t320 = insertvalue { ptr, i64, i64 } undef, ptr %t313, 0 - %t321 = insertvalue { ptr, i64, i64 } %t320, i64 6, 1 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 2 - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a311, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a327 - %t328 = load i64, ptr %t325 - %t329 = load ptr, ptr %a311 - store i64 0, ptr %a330 - br label %find.cond6603 -find.cond6603: - %t331 = load i64, ptr %a330 - %t332 = icmp slt i64 %t331, %t328 - br i1 %t332, label %find.body6604, label %find.end6607 -find.body6604: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t329, i64 %t331 - %t334 = load { ptr, i64, i64 }, ptr %t333 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } %t326, ptr %a336 - %t337 = call i32 @finch_str_eq(ptr %a335, ptr %a336) - %t338 = icmp ne i32 %t337, 0 - br i1 %t338, label %find.hit6605, label %find.next6606 -find.hit6605: - store i64 %t331, ptr %a327 - br label %find.end6607 -find.next6606: - %t339 = add i64 %t331, 1 - store i64 %t339, ptr %a330 - br label %find.cond6603 -find.end6607: - %t340 = load i64, ptr %a327 - %t341 = load { ptr, i64, i64 }, ptr %a323 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range6608, label %inrange6609 -range6608: - call void @finch_panic_index(ptr @.str.4257, i64 3595, i64 %t340, i64 %t342) - unreachable -inrange6609: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds { ptr, i64, i64 }, ptr %t344, i64 %t340 - %t346 = load { ptr, i64, i64 }, ptr %t345 - store { ptr, i64, i64 } { ptr @.str.4256, i64 5, i64 0 }, ptr %a348 - store { ptr, i64, i64 } %t346, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4258, i64 1, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load ptr, ptr %a1 - %t357 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t358 = load %S.ast.Type, ptr %t357 - %t359 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t356, %S.ast.Type %t358) - store { ptr, i64, i64 } %t355, ptr %a361 - store { ptr, i64, i64 } %t359, ptr %a362 - call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) - store { ptr, i64, i64 } %t355, ptr %a363 - call void @finch_str_drop(ptr %a363) - store { ptr, i64, i64 } %t359, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4259, i64 1, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.4260, i64 2, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t384 = load { ptr, i64, i64 }, ptr %t383 - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load { ptr, i64, i64 }, ptr %a385 - %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t324, { ptr, i64, i64 } %t389) - store { ptr, i64, i64 } %t389, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 - %t393 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4261, i64 4, i64 0 }) - %t394 = insertvalue %S.gen.Val %t392, %S.ast.Type %t393, 1 - call void @finch.drop.arr_str(ptr %a323) - call void @finch.drop.arr_str(ptr %a311) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t394 -endif6602: - %t395 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t395, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4262, i64 4, i64 0 }, ptr %a397 - %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) - %t399 = icmp ne i32 %t398, 0 - br i1 %t399, label %then6610, label %endif6612 -then6610: - %t400 = load i1, ptr %a23 - %t401 = xor i1 %t400, true - br i1 %t401, label %then6613, label %endif6615 -then6613: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4263, i64 115, i64 0 }) - br label %endif6615 -endif6615: - store { ptr, i64, i64 } { ptr @.str.4264, i64 2, i64 0 }, ptr %a404 - %t405 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t405, ptr %a406 - store { ptr, i64, i64 } { ptr @.str.4265, i64 2, i64 0 }, ptr %a407 - %t408 = call i32 @finch_str_eq(ptr %a406, ptr %a407) - %t409 = icmp ne i32 %t408, 0 - br i1 %t409, label %then6616, label %endif6618 -then6616: - %t410 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4266, i64 2, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t410, ptr %a411 - call void @finch_str_drop(ptr %a411) - br label %endif6618 -endif6618: - %t412 = load ptr, ptr %a1 - %t413 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4267, i64 5, i64 0 }, ptr %a415 - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t417, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.4268, i64 5, i64 0 }, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t417, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - %t423 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t424 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t422, ptr %a426 - store { ptr, i64, i64 } %t424, ptr %a427 - call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) - store { ptr, i64, i64 } %t422, ptr %a428 - call void @finch_str_drop(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a425 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.4269, i64 2, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t434, ptr %a438 - store { ptr, i64, i64 } %t436, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t434, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t412, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t442, 0 - %t445 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4270, i64 4, i64 0 }) - %t446 = insertvalue %S.gen.Val %t444, %S.ast.Type %t445, 1 - call void @finch_str_drop(ptr %a404) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t446 -endif6612: - %t447 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.4271, i64 4, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br label %logic.from6619 -logic.from6619: - br i1 %t451, label %logic.rhs6620, label %logic.end6621 -logic.rhs6620: - %t452 = load i1, ptr %a23 - %t453 = xor i1 %t452, true - br label %logic.rend6622 -logic.rend6622: - br label %logic.end6621 -logic.end6621: - %t454 = phi i1 [ false, %logic.from6619 ], [ %t453, %logic.rend6622 ] - br i1 %t454, label %then6623, label %endif6625 -then6623: - %t455 = load ptr, ptr %a1 - %t456 = load { ptr, i64, i64 }, ptr %a2 - %t457 = load %S.gen.Val, ptr %a6 - %t458 = load %S.gen.Val, ptr %a10 - %t459 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t455, { ptr, i64, i64 } %t456, %S.gen.Val %t457, %S.gen.Val %t458, %S.ast.Node %t459) - br label %endif6625 -endif6625: - %t460 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t461 = load %S.ast.Type, ptr %t460 - %t462 = call i1 @finch.gen.isInt(%S.ast.Type %t461) - %t463 = xor i1 %t462, true - br label %logic.from6626 -logic.from6626: - br i1 %t463, label %logic.rhs6627, label %logic.end6628 -logic.rhs6627: - %t464 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t464, ptr %a465 - store { ptr, i64, i64 } { ptr @.str.4272, i64 4, i64 0 }, ptr %a466 - %t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466) - %t468 = icmp eq i32 %t467, 0 - br label %logic.rend6629 -logic.rend6629: - br label %logic.end6628 -logic.end6628: - %t469 = phi i1 [ false, %logic.from6626 ], [ %t468, %logic.rend6629 ] - br label %logic.from6630 -logic.from6630: - br i1 %t469, label %logic.rhs6631, label %logic.end6632 -logic.rhs6631: - %t470 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.4273, i64 4, i64 0 }, ptr %a472 - %t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472) - %t474 = icmp eq i32 %t473, 0 - br label %logic.rend6633 -logic.rend6633: - br label %logic.end6632 -logic.end6632: - %t475 = phi i1 [ false, %logic.from6630 ], [ %t474, %logic.rend6633 ] - br i1 %t475, label %then6634, label %endif6636 -then6634: - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a2 - %t478 = load %S.gen.Val, ptr %a6 - %t479 = load %S.gen.Val, ptr %a10 - %t480 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t476, { ptr, i64, i64 } %t477, %S.gen.Val %t478, %S.gen.Val %t479, %S.ast.Node %t480) - br label %endif6636 -endif6636: - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a2 - %t483 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call i1 @finch.gen.isSigned(%S.ast.Type %t484) - %t486 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t482, i1 %t485) - store { ptr, i64, i64 } { ptr @.str.4274, i64 5, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.4275, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = load ptr, ptr %a1 - %t498 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t499 = load %S.ast.Type, ptr %t498 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t497, %S.ast.Type %t499) - store { ptr, i64, i64 } %t496, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t496, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.4276, i64 1, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t513 = load { ptr, i64, i64 }, ptr %t512 - store { ptr, i64, i64 } %t511, ptr %a515 - store { ptr, i64, i64 } %t513, ptr %a516 - call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516) - store { ptr, i64, i64 } %t511, ptr %a517 - call void @finch_str_drop(ptr %a517) - %t518 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.4277, i64 2, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t523, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t523, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = call { ptr, i64, i64 } @finch.gen.op(ptr %t481, { ptr, i64, i64 } %t530) - store { ptr, i64, i64 } %t530, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t531, 0 - %t534 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4278, i64 4, i64 0 }) - %t535 = insertvalue %S.gen.Val %t533, %S.ast.Type %t534, 1 - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t535 -} - -define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) { -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 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca i64, align 16 - %a46 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t4 = call ptr @finch_alloc(i64 %t3) - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 - store { ptr, i64, i64 } { ptr @.str.4279, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 - store { ptr, i64, i64 } { ptr @.str.4280, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 - store { ptr, i64, i64 } { ptr @.str.4281, i64 1, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3 - store { ptr, i64, i64 } { ptr @.str.4282, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 - store { ptr, i64, i64 } { ptr @.str.4283, i64 1, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 - store { ptr, i64, i64 } { ptr @.str.4284, 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.4285, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 - store { ptr, i64, i64 } { ptr @.str.4286, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 - store { ptr, i64, i64 } { ptr @.str.4287, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3 - store { ptr, i64, i64 } { ptr @.str.4288, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 - store { ptr, i64, i64 } { ptr @.str.4289, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 - store { ptr, i64, i64 } { ptr @.str.4290, 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 %then6637, label %endif6639 -then6637: - %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.4291, i64 2, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1 - store { ptr, i64, i64 } { ptr @.str.4292, i64 2, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 - store { ptr, i64, i64 } { ptr @.str.4293, i64 3, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 - store { ptr, i64, i64 } { ptr @.str.4294, i64 3, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4 - store { ptr, i64, i64 } { ptr @.str.4295, i64 3, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 - store { ptr, i64, i64 } { ptr @.str.4296, i64 3, i64 0 }, ptr %t35 - %t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0 - %t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1 - %t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2 - %t39 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t38, ptr %a26 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch.drop.arr_str(ptr %a40) - br label %endif6639 -endif6639: - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %a1 - store i64 -1, ptr %a43 - %t44 = load i64, ptr %t41 - %t45 = load ptr, ptr %a14 - store i64 0, ptr %a46 - br label %find.cond6640 -find.cond6640: - %t47 = load i64, ptr %a46 - %t48 = icmp slt i64 %t47, %t44 - br i1 %t48, label %find.body6641, label %find.end6644 -find.body6641: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t47 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } %t42, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %find.hit6642, label %find.next6643 -find.hit6642: - store i64 %t47, ptr %a43 - br label %find.end6644 -find.next6643: - %t55 = add i64 %t47, 1 - store i64 %t55, ptr %a46 - br label %find.cond6640 -find.end6644: - %t56 = load i64, ptr %a43 - %t57 = load { ptr, i64, i64 }, ptr %a26 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 %t56, %t58 - br i1 %t59, label %range6645, label %inrange6646 -range6645: - call void @finch_panic_index(ptr @.str.4297, i64 3622, i64 %t56, i64 %t58) - unreachable -inrange6646: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i64 %t56 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.drop.arr_str(ptr %a26) - call void @finch.drop.arr_str(ptr %a14) - ret { ptr, i64, i64 } %t65 -} - -define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca %S.gen.Val, align 16 - %a151 = alloca i64, align 16 - %a163 = alloca %S.gen.Val, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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.4298, 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.from6647 -logic.from6647: - br i1 %t13, label %logic.end6649, label %logic.rhs6648 -logic.rhs6648: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.4299, 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.rend6650 -logic.rend6650: - br label %logic.end6649 -logic.end6649: - %t19 = phi i1 [ true, %logic.from6647 ], [ %t18, %logic.rend6650 ] - br i1 %t19, label %then6651, label %endif6653 -then6651: - %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 %range6654, label %inrange6655 -range6654: - call void @finch_panic_index(ptr @.str.4300, i64 3628, i64 0, i64 %t23) - unreachable -inrange6655: - %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.4301, 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.4302, 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.4303, 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.4304, 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 %then6656, label %else6657 -then6656: - %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 %endif6658 -else6657: - %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 %endif6658 -endif6658: - %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 %range6659, label %inrange6660 -range6659: - call void @finch_panic_index(ptr @.str.4305, i64 3640, i64 1, i64 %t61) - unreachable -inrange6660: - %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.4306, 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.4307, 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.4308, 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 %then6661, label %endif6663 -then6661: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4309, i64 5, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6663 -endif6663: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4310, i64 9, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4311, i64 3, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.4312, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4313, i64 3, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4314, i64 2, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t131, 0 - %t134 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }) - %t135 = insertvalue %S.gen.Val %t133, %S.ast.Type %t134, 1 - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a38) - call void @finch_str_drop(ptr %a35) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a29) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t135 -endif6653: - %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 0, %t139 - br i1 %t140, label %range6664, label %inrange6665 -range6664: - call void @finch_panic_index(ptr @.str.4316, i64 3652, i64 0, i64 %t139) - unreachable -inrange6665: - %t141 = extractvalue { ptr, i64, i64 } %t138, 0 - %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 0 - %t143 = load %S.ast.Node, ptr %t142 - %t144 = call %S.gen.Val @finch.gen.expr(ptr %t136, %S.ast.Node %t143) - store %S.gen.Val %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6666, label %ok6667 -panic6666: - call void @finch_panic(ptr @.str.4317, i64 3653, ptr @.str.4318) - unreachable -ok6667: - %t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 11 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i32 0, i32 1 - %t150 = load i64, ptr %t149 - store i64 %t150, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a145 - call void @finch.gen.hold(ptr %t152, %S.gen.Val %t153) - %t154 = load ptr, ptr %a1 - %t155 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t156 = load { ptr, i64, i64 }, ptr %t155 - %t157 = extractvalue { ptr, i64, i64 } %t156, 1 - %t158 = icmp uge i64 1, %t157 - br i1 %t158, label %range6668, label %inrange6669 -range6668: - call void @finch_panic_index(ptr @.str.4319, i64 3655, i64 1, i64 %t157) - unreachable -inrange6669: - %t159 = extractvalue { ptr, i64, i64 } %t156, 0 - %t160 = getelementptr inbounds %S.ast.Node, ptr %t159, i64 1 - %t161 = load %S.ast.Node, ptr %t160 - %t162 = call %S.gen.Val @finch.gen.expr(ptr %t154, %S.ast.Node %t161) - store %S.gen.Val %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = load i64, ptr %a151 - call void @finch.gen.heldEnd(ptr %t164, i64 %t165) - %t166 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4320, i64 2, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from6670 -logic.from6670: - br i1 %t170, label %logic.end6672, label %logic.rhs6671 -logic.rhs6671: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4321, i64 2, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend6673 -logic.rend6673: - br label %logic.end6672 -logic.end6672: - %t176 = phi i1 [ true, %logic.from6670 ], [ %t175, %logic.rend6673 ] - br label %logic.from6674 -logic.from6674: - br i1 %t176, label %logic.end6676, label %logic.rhs6675 -logic.rhs6675: - %t177 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4322, i64 1, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend6677 -logic.rend6677: - br label %logic.end6676 -logic.end6676: - %t182 = phi i1 [ true, %logic.from6674 ], [ %t181, %logic.rend6677 ] - br label %logic.from6678 -logic.from6678: - br i1 %t182, label %logic.end6680, label %logic.rhs6679 -logic.rhs6679: - %t183 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4323, i64 2, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend6681 -logic.rend6681: - br label %logic.end6680 -logic.end6680: - %t188 = phi i1 [ true, %logic.from6678 ], [ %t187, %logic.rend6681 ] - br label %logic.from6682 -logic.from6682: - br i1 %t188, label %logic.end6684, label %logic.rhs6683 -logic.rhs6683: - %t189 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.4324, i64 1, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br label %logic.rend6685 -logic.rend6685: - br label %logic.end6684 -logic.end6684: - %t194 = phi i1 [ true, %logic.from6682 ], [ %t193, %logic.rend6685 ] - br label %logic.from6686 -logic.from6686: - br i1 %t194, label %logic.end6688, label %logic.rhs6687 -logic.rhs6687: - %t195 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t195, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.4325, i64 2, i64 0 }, ptr %a197 - %t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197) - %t199 = icmp ne i32 %t198, 0 - br label %logic.rend6689 -logic.rend6689: - br label %logic.end6688 -logic.end6688: - %t200 = phi i1 [ true, %logic.from6686 ], [ %t199, %logic.rend6689 ] - br i1 %t200, label %then6690, label %endif6692 -then6690: - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a8 - %t203 = load %S.gen.Val, ptr %a145 - %t204 = load %S.gen.Val, ptr %a163 - %t205 = load %S.ast.Node, ptr %a2 - %t206 = call %S.gen.Val @finch.gen.compare(ptr %t201, { ptr, i64, i64 } %t202, %S.gen.Val %t203, %S.gen.Val %t204, %S.ast.Node %t205) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t206 -endif6692: - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a8 - %t209 = load %S.gen.Val, ptr %a145 - %t210 = load %S.gen.Val, ptr %a163 - %t211 = load %S.ast.Node, ptr %a2 - %t212 = call %S.gen.Val @finch.gen.arith(ptr %t207, { ptr, i64, i64 } %t208, %S.gen.Val %t209, %S.gen.Val %t210, %S.ast.Node %t211) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t212 -} - -define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a23 = alloca %S.ast.Type, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca i64, align 16 - %a38 = alloca i64, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a47 = alloca %S.gen.Val, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.gen.Val, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a71 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %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 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca %S.ast.Type, align 16 - %a290 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4326, 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.4327, 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 %then6693, label %else6694 -then6693: - %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 %range6696, label %inrange6697 -range6696: - call void @finch_panic_index(ptr @.str.4328, i64 3666, i64 0, i64 %t14) - unreachable -inrange6697: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 - %t18 = load %S.ast.Type, ptr %t17 - store %S.ast.Type %t18, ptr %a19 - call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) - %t21 = load %S.ast.Type, ptr %a20 - %t22 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t21, ptr %a5 - store %S.ast.Type %t22, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - br label %endif6695 -else6694: - %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = icmp eq i64 %t26, 0 - br i1 %t27, label %then6698, label %endif6700 -then6698: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t28, %S.ast.Node %t29, { ptr, i64, i64 } { ptr @.str.4329, i64 47, i64 0 }) - br label %endif6700 -endif6700: - br label %endif6695 -endif6695: - store { ptr, i64, i64 } zeroinitializer, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic6701, label %ok6702 -panic6701: - call void @finch_panic(ptr @.str.4330, i64 3671, ptr @.str.4331) - unreachable -ok6702: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 11 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - %t35 = load i64, ptr %t34 - store i64 %t35, ptr %a36 - %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a38 - br label %each.cond6703 -each.cond6703: - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 - %t40 = load i64, ptr %t39 - %t41 = load i64, ptr %a38 - %t42 = icmp slt i64 %t41, %t40 - br i1 %t42, label %each.body6704, label %each.end6706 -each.body6704: - %t43 = load ptr, ptr %t37 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - %t45 = load %S.ast.Node, ptr %t44 - store %S.ast.Node %t45, ptr %a46 - store %S.gen.Val zeroinitializer, ptr %a47 - %t48 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0 - %t49 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4332, i64 4, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br i1 %t53, label %then6707, label %else6708 -then6707: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a46 - %t56 = call %S.gen.Val @finch.gen.expr(ptr %t54, %S.ast.Node %t55) - %t57 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t56, ptr %a47 - store %S.gen.Val %t57, ptr %a58 - call void @finch.drop.S_gen_Val(ptr %a58) - %t59 = getelementptr inbounds %S.gen.Val, ptr %a47, i32 0, i32 1 - %t60 = load %S.ast.Type, ptr %t59 - store %S.ast.Type %t60, ptr %a61 - call void @finch.copy.S_ast_Type(ptr %a62, ptr %a61) - %t63 = load %S.ast.Type, ptr %a62 - %t64 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t63, ptr %a5 - store %S.ast.Type %t64, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - br label %endif6709 -else6708: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a46 - %t68 = load %S.ast.Type, ptr %a5 - %t69 = call %S.gen.Val @finch.gen.exprWant(ptr %t66, %S.ast.Node %t67, %S.ast.Type %t68) - %t70 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t69, ptr %a47 - store %S.gen.Val %t70, ptr %a71 - call void @finch.drop.S_gen_Val(ptr %a71) - br label %endif6709 -endif6709: - %t72 = load ptr, ptr %a1 - %t73 = load %S.gen.Val, ptr %a47 - %t74 = load %S.ast.Type, ptr %a5 - %t75 = load %S.ast.Node, ptr %a46 - %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t72, %S.gen.Val %t73, %S.ast.Type %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.4333, i64 27, i64 0 }) - %t77 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t76, ptr %a47 - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t80 = load ptr, ptr %a1 - %t81 = load %S.gen.Val, ptr %a47 - %t82 = call { ptr, i64, i64 } @finch.gen.own(ptr %t80, %S.gen.Val %t81) - %t83 = load i64, ptr %t79 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %a30, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %a30 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t79 - %t87 = load ptr, ptr %a1 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = sub i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %a30 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range6710, label %inrange6711 -range6710: - call void @finch_panic_index(ptr @.str.4334, i64 3682, i64 %t90, i64 %t92) - unreachable -inrange6711: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 %t90 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t100, %S.ast.Type %t104, 1 - %t106 = insertvalue %S.gen.Val %t105, i1 true, 2 - call void @finch.gen.hold(ptr %t87, %S.gen.Val %t106) - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - call void @finch.drop.S_gen_Val(ptr %a47) - br label %each.step6705 -each.step6705: - %t108 = load i64, ptr %a38 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a38 - br label %each.cond6703 -each.end6706: - %t110 = load ptr, ptr %a1 - %t111 = load i64, ptr %a36 - call void @finch.gen.heldEnd(ptr %t110, i64 %t111) - %t112 = load %S.ast.Type, ptr %a5 - %t113 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t112) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t116 = load i64, ptr %t115 - call void @finch_str_from_int(ptr %a117, i64 %t116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4335, i64 4, i64 0 }, ptr %a120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t122 = load i64, ptr %t121 - %t123 = icmp sgt i64 %t122, 0 - br i1 %t123, label %then6712, label %endif6714 -then6712: - %t124 = load ptr, ptr %a1 - %t125 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4336, i64 8, i64 0 }, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t129, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4337, i64 2, i64 0 }, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a5 - %t137 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t135, %S.ast.Type %t136) - store { ptr, i64, i64 } %t134, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t134, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - %t144 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t143, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4338, i64 26, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.4339, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t158, ptr %a120 - store { ptr, i64, i64 } %t160, ptr %a161 - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a146) - br label %endif6714 -endif6714: - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t163 = load i64, ptr %t162 - store i64 0, ptr %a164 - br label %for.cond6715 -for.cond6715: - %t165 = load i64, ptr %a164 - %t166 = icmp slt i64 %t165, %t163 - br i1 %t166, label %for.body6716, label %for.end6718 -for.body6716: - %t167 = load ptr, ptr %a1 - %t168 = load ptr, ptr %a1 - %t169 = load %S.ast.Type, ptr %a5 - %t170 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t168, %S.ast.Type %t169) - store { ptr, i64, i64 } { ptr @.str.4340, i64 23, i64 0 }, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t175, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4341, i64 6, i64 0 }, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_drop(ptr %a179) - %t180 = load { ptr, i64, i64 }, ptr %a176 - %t181 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t180, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t180, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4342, i64 6, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = load i64, ptr %a164 - call void @finch_str_from_int(ptr %a193, i64 %t192) - %t194 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t191, ptr %a198 - call void @finch_str_drop(ptr %a198) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a195 - %t201 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t200) - store { ptr, i64, i64 } %t200, ptr %a202 - call void @finch_str_drop(ptr %a202) - store { ptr, i64, i64 } %t201, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.ast.Type, ptr %a5 - %t207 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t205, %S.ast.Type %t206) - %t208 = load i64, ptr %a164 - %t209 = load { ptr, i64, i64 }, ptr %a30 - %t210 = extractvalue { ptr, i64, i64 } %t209, 1 - %t211 = icmp uge i64 %t208, %t210 - br i1 %t211, label %range6719, label %inrange6720 -range6719: - call void @finch_panic_index(ptr @.str.4343, i64 3694, i64 %t208, i64 %t210) - unreachable -inrange6720: - %t212 = extractvalue { ptr, i64, i64 } %t209, 0 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t208 - %t214 = load { ptr, i64, i64 }, ptr %t213 - %t215 = load { ptr, i64, i64 }, ptr %a203 - call void @finch.gen.store(ptr %t204, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t214, { ptr, i64, i64 } %t215) - store { ptr, i64, i64 } %t207, ptr %a216 - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a203) - br label %for.step6717 -for.step6717: - %t217 = load i64, ptr %a164 - %t218 = add i64 %t217, 1 - store i64 %t218, ptr %a164 - br label %for.cond6715 -for.end6718: - %t219 = load ptr, ptr %a1 - %t220 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4344, i64 41, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4345, i64 3, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t219, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t229, ptr %a231 - call void @finch_str_drop(ptr %a231) - store { ptr, i64, i64 } %t230, ptr %a232 - %t233 = load ptr, ptr %a1 - %t234 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4346, i64 30, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.4347, i64 6, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4348, i64 3, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = call { ptr, i64, i64 } @finch.gen.op(ptr %t233, { ptr, i64, i64 } %t254) - store { ptr, i64, i64 } %t254, ptr %a256 - call void @finch_str_drop(ptr %a256) - store { ptr, i64, i64 } %t255, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.4349, i64 30, i64 0 }, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4351, i64 3, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t279) - store { ptr, i64, i64 } %t279, ptr %a281 - call void @finch_str_drop(ptr %a281) - store { ptr, i64, i64 } %t280, ptr %a282 - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t283, ptr %a284 - call void @finch_str_copy(ptr %a285, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - %t287 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t286, 0 - %t288 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t288, ptr %a289 - call void @finch.copy.S_ast_Type(ptr %a290, ptr %a289) - %t291 = load %S.ast.Type, ptr %a290 - %t292 = insertvalue %S.gen.Val %t287, %S.ast.Type %t291, 1 - %t293 = insertvalue %S.gen.Val %t292, i1 true, 2 - call void @finch_str_drop(ptr %a282) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a120) - call void @finch_str_drop(ptr %a119) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.arr_str(ptr %a30) - call void @finch.drop.S_ast_Type(ptr %a5) - ret %S.gen.Val %t293 -} - -define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) { -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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Ref, align 16 - %a42 = alloca %S.gen.Place, align 16 - %a43 = alloca %S.gen.Place, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4352, 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.from6721 -logic.from6721: - br i1 %t9, label %logic.rhs6722, label %logic.end6723 -logic.rhs6722: - %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.rend6724 -logic.rend6724: - br label %logic.end6723 -logic.end6723: - %t15 = phi i1 [ false, %logic.from6721 ], [ %t14, %logic.rend6724 ] - br i1 %t15, label %then6725, label %endif6727 -then6725: - %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.4353, 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.4354, i64 1, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t28) - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %endif6727 -endif6727: - %t30 = load ptr, ptr %a1 - %t31 = load %S.ast.Node, ptr %a2 - %t32 = load i1, ptr %a3 - %t33 = call %S.gen.Ref @finch.gen.ref(ptr %t30, %S.ast.Node %t31, i1 %t32) - store %S.gen.Ref %t33, ptr %a34 - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 0 - %t36 = load i1, ptr %t35 - %t37 = xor i1 %t36, true - br i1 %t37, label %then6728, label %endif6730 -then6728: - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t39, { ptr, i64, i64 } { ptr @.str.4355, i64 60, i64 0 }) - br label %endif6730 -endif6730: - %t40 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 1 - %t41 = load %S.gen.Place, ptr %t40 - store %S.gen.Place %t41, ptr %a42 - call void @finch.copy.S_gen_Place(ptr %a43, ptr %a42) - %t44 = load %S.gen.Place, ptr %a43 - call void @finch.drop.S_gen_Ref(ptr %a34) - ret %S.gen.Place %t44 -} - -define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i64, align 16 - %a190 = alloca i64, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca %S.gen.Var, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.ast.Type, align 16 - %a359 = alloca %S.ast.Type, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4356, 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 %then6731, label %endif6733 -then6731: - %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.from6734 -logic.from6734: - br i1 %t16, label %logic.rhs6735, label %logic.end6736 -logic.rhs6735: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6737, label %ok6738 -panic6737: - call void @finch_panic(ptr @.str.4357, i64 3718, ptr @.str.4358) - unreachable -ok6738: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 26 - %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.rend6739 -logic.rend6739: - br label %logic.end6736 -logic.end6736: - %t26 = phi i1 [ false, %logic.from6734 ], [ %t25, %logic.rend6739 ] - br i1 %t26, label %then6740, label %endif6742 -then6740: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6743, label %ok6744 -panic6743: - call void @finch_panic(ptr @.str.4359, i64 3719, ptr @.str.4360) - unreachable -ok6744: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 26 - %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.missing6745, label %map.found6746 -map.missing6745: - 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.4361, i64 3719, ptr %a36) - unreachable -map.found6746: - %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 %then6747, label %endif6749 -then6747: - %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.4362, i64 5, i64 0 }) - %t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1 - %t56 = insertvalue %S.gen.Val %t55, i1 true, 3 - %t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t57 -endif6749: - %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.4363, i64 3, i64 0 }) - %t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1 - %t66 = insertvalue %S.gen.Val %t65, i1 true, 3 - %t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t67 -endif6742: - %t68 = load i64, ptr %a14 - %t69 = icmp slt i64 %t68, 0 - br label %logic.from6750 -logic.from6750: - br i1 %t69, label %logic.rhs6751, label %logic.end6752 -logic.rhs6751: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic6753, label %ok6754 -panic6753: - call void @finch_panic(ptr @.str.4364, i64 3726, ptr @.str.4365) - unreachable -ok6754: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 26 - %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.rend6755 -logic.rend6755: - br label %logic.end6752 -logic.end6752: - %t80 = phi i1 [ false, %logic.from6750 ], [ %t79, %logic.rend6755 ] - br label %logic.from6756 -logic.from6756: - br i1 %t80, label %logic.rhs6757, label %logic.end6758 -logic.rhs6757: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic6759, label %ok6760 -panic6759: - call void @finch_panic(ptr @.str.4366, i64 3726, ptr @.str.4367) - unreachable -ok6760: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 26 - %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4368, 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.rend6761 -logic.rend6761: - br label %logic.end6758 -logic.end6758: - %t88 = phi i1 [ false, %logic.from6756 ], [ %t87, %logic.rend6761 ] - br label %logic.from6762 -logic.from6762: - br i1 %t88, label %logic.rhs6763, label %logic.end6764 -logic.rhs6763: - %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.4369, 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.from6765 -logic.from6765: - br i1 %t94, label %logic.end6767, label %logic.rhs6766 -logic.rhs6766: - %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.4370, 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.rend6768 -logic.rend6768: - br label %logic.end6767 -logic.end6767: - %t101 = phi i1 [ true, %logic.from6765 ], [ %t100, %logic.rend6768 ] - br label %logic.from6769 -logic.from6769: - br i1 %t101, label %logic.end6771, label %logic.rhs6770 -logic.rhs6770: - %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.4371, 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.rend6772 -logic.rend6772: - br label %logic.end6771 -logic.end6771: - %t108 = phi i1 [ true, %logic.from6769 ], [ %t107, %logic.rend6772 ] - br label %logic.rend6773 -logic.rend6773: - br label %logic.end6764 -logic.end6764: - %t109 = phi i1 [ false, %logic.from6762 ], [ %t108, %logic.rend6773 ] - br i1 %t109, label %then6774, label %endif6776 -then6774: - store { ptr, i64, i64 } { ptr @.str.4372, 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.4373, 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 %then6777, label %else6778 -then6777: - %t117 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4374, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif6779 -else6778: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t120 = load { ptr, i64, i64 }, ptr %t119 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.4375, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then6780, label %endif6782 -then6780: - %t125 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4376, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - br label %endif6782 -endif6782: - br label %endif6779 -endif6779: - %t127 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t128 = load ptr, ptr %a1 - %t129 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4377, i64 31, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.4378, i64 1, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t128, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t142 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4379, i64 3, i64 0 }) - %t143 = insertvalue %S.gen.Val %t141, %S.ast.Type %t142, 1 - %t144 = insertvalue %S.gen.Ref %t127, %S.gen.Val %t143, 2 - call void @finch_str_drop(ptr %a110) - ret %S.gen.Ref %t144 -endif6776: - %t145 = load i64, ptr %a14 - %t146 = icmp slt i64 %t145, 0 - br label %logic.from6783 -logic.from6783: - br i1 %t146, label %logic.rhs6784, label %logic.end6785 -logic.rhs6784: - %t147 = load ptr, ptr %a1 - %t148 = icmp eq ptr %t147, null - br i1 %t148, label %panic6786, label %ok6787 -panic6786: - call void @finch_panic(ptr @.str.4380, i64 3735, ptr @.str.4381) - unreachable -ok6787: - %t149 = getelementptr inbounds %S.gen.Gen, ptr %t147, i32 0, i32 26 - %t150 = getelementptr inbounds %S.cimport.CImports, ptr %t149, i32 0, i32 2 - %t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = call i64 @finch_map_find(ptr %t150, ptr %a153, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t155 = icmp sge i64 %t154, 0 - br label %logic.rend6788 -logic.rend6788: - br label %logic.end6785 -logic.end6785: - %t156 = phi i1 [ false, %logic.from6783 ], [ %t155, %logic.rend6788 ] - br i1 %t156, label %then6789, label %endif6791 -then6789: - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic6792, label %ok6793 -panic6792: - call void @finch_panic(ptr @.str.4382, i64 3736, ptr @.str.4383) - unreachable -ok6793: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 26 - %t161 = getelementptr inbounds %S.cimport.CImports, ptr %t160, i32 0, i32 2 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - store { ptr, i64, i64 } %t163, ptr %a164 - %t165 = call i64 @finch_map_find(ptr %t161, ptr %a164, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t166 = icmp slt i64 %t165, 0 - br i1 %t166, label %map.missing6794, label %map.found6795 -map.missing6794: - store { ptr, i64, i64 } zeroinitializer, ptr %a167 - store { ptr, i64, i64 } %t163, ptr %a168 - call void @finch_buf_str(ptr %a167, ptr %a168, i32 1) - call void @finch_map_missing(ptr @.str.4384, i64 3736, ptr %a167) - unreachable -map.found6795: - %t169 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t161, i32 0, i32 0 - %t170 = load ptr, ptr %t169 - %t171 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t170, i64 %t165 - %t172 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t171, i32 0, i32 2 - %t173 = load %S.ast.Type, ptr %t172 - %t174 = load %S.ast.Node, ptr %a2 - %t175 = call %S.ast.Type @finch.gen.resolve(ptr %t157, %S.ast.Type %t173, %S.ast.Node %t174) - store %S.ast.Type %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = icmp eq ptr %t177, null - br i1 %t178, label %panic6796, label %ok6797 -panic6796: - call void @finch_panic(ptr @.str.4385, i64 3737, ptr @.str.4386) - unreachable -ok6797: - %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 40 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } { ptr @.str.4387, i64 2, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store i64 -1, ptr %a187 - %t188 = load i64, ptr %t180 - %t189 = load ptr, ptr %t179 - store i64 0, ptr %a190 - br label %find.cond6798 -find.cond6798: - %t191 = load i64, ptr %a190 - %t192 = icmp slt i64 %t191, %t188 - br i1 %t192, label %find.body6799, label %find.end6802 -find.body6799: - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t189, i64 %t191 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } %t186, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br i1 %t198, label %find.hit6800, label %find.next6801 -find.hit6800: - store i64 %t191, ptr %a187 - br label %find.end6802 -find.next6801: - %t199 = add i64 %t191, 1 - store i64 %t199, ptr %a190 - br label %find.cond6798 -find.end6802: - store { ptr, i64, i64 } %t186, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load i64, ptr %a187 - %t202 = icmp sge i64 %t201, 0 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6803, label %endif6805 -then6803: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic6806, label %ok6807 -panic6806: - call void @finch_panic(ptr @.str.4388, i64 3738, ptr @.str.4389) - unreachable -ok6807: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 40 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } { ptr @.str.4390, i64 2, i64 0 }, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a210 - %t214 = load i64, ptr %t207 - %t215 = add i64 %t214, 1 - call void @finch_arr_reserve(ptr %t206, i64 %t215, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t216 = load ptr, ptr %t206 - %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t214 - store { ptr, i64, i64 } %t213, ptr %t217 - store i64 %t215, ptr %t207 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic6808, label %ok6809 -panic6808: - call void @finch_panic(ptr @.str.4391, i64 3739, ptr @.str.4392) - unreachable -ok6809: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 2 - %t221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t220, i32 0, i32 1 - %t222 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t223 = load { ptr, i64, i64 }, ptr %t222 - store { ptr, i64, i64 } { ptr @.str.4393, i64 1, i64 0 }, ptr %a225 - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.4394, i64 19, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load ptr, ptr %a1 - %t234 = load %S.ast.Type, ptr %a176 - %t235 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t233, %S.ast.Type %t234) - store { ptr, i64, i64 } %t232, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t232, ptr %a239 - call void @finch_str_drop(ptr %a239) - store { ptr, i64, i64 } %t235, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a236 - %t242 = load i64, ptr %t221 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %t220, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %t220 - %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 - store { ptr, i64, i64 } %t241, ptr %t245 - store i64 %t243, ptr %t221 - br label %endif6805 -endif6805: - %t246 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t247 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t248 = load { ptr, i64, i64 }, ptr %t247 - store { ptr, i64, i64 } { ptr @.str.4395, i64 1, i64 0 }, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - %t252 = load { ptr, i64, i64 }, ptr %a249 - %t253 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t252, 0 - %t254 = load %S.ast.Type, ptr %a176 - store %S.ast.Type %t254, ptr %a255 - call void @finch.copy.S_ast_Type(ptr %a256, ptr %a255) - %t257 = load %S.ast.Type, ptr %a256 - %t258 = insertvalue %S.gen.Place %t253, %S.ast.Type %t257, 1 - %t259 = insertvalue %S.gen.Ref %t246, %S.gen.Place %t258, 1 - call void @finch.drop.S_ast_Type(ptr %a176) - ret %S.gen.Ref %t259 -endif6791: - %t260 = load i64, ptr %a14 - %t261 = icmp slt i64 %t260, 0 - br i1 %t261, label %then6810, label %endif6812 -then6810: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call i1 @finch.gen.imports(ptr %t262, { ptr, i64, i64 } %t264) - br i1 %t265, label %then6813, label %endif6815 -then6813: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t269 = load { ptr, i64, i64 }, ptr %t268 - store { ptr, i64, i64 } { ptr @.str.4396, i64 1, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.4397, i64 43, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t280 = load { ptr, i64, i64 }, ptr %t279 - store { ptr, i64, i64 } %t278, ptr %a282 - store { ptr, i64, i64 } %t280, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4398, i64 10, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif6815 -endif6815: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - %t294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } { ptr @.str.4399, i64 28, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t295, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.4400, i64 1, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - call void @finch.gen.fail(ptr %t292, %S.ast.Node %t293, { ptr, i64, i64 } %t304) - store { ptr, i64, i64 } %t304, ptr %a305 - call void @finch_str_drop(ptr %a305) - br label %endif6812 -endif6812: - %t306 = load ptr, ptr %a1 - %t307 = load i64, ptr %a14 - %t308 = call %S.gen.Var @finch.gen.varAt(ptr %t306, i64 %t307) - store %S.gen.Var %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = load %S.ast.Node, ptr %a2 - %t312 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t313 = load i64, ptr %t312 - %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t318 = load %S.ast.Type, ptr %t317 - %t319 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t318) - store { ptr, i64, i64 } { ptr @.str.4401, i64 9, i64 0 }, ptr %a321 - store { ptr, i64, i64 } %t319, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.4402, i64 1, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t329, ptr %a333 - store { ptr, i64, i64 } %t331, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t329, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.4403, i64 4, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 7 - %t343 = load { ptr, i64, i64 }, ptr %t342 - %t344 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 8 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 9 - %t347 = load i64, ptr %t346 - call void @finch.gen.noteRef(ptr %t310, %S.ast.Node %t311, i64 %t313, i64 %t316, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t343, i64 %t345, i64 %t347) - store { ptr, i64, i64 } %t341, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t350 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 2 - %t351 = load { ptr, i64, i64 }, ptr %t350 - store { ptr, i64, i64 } %t351, ptr %a352 - call void @finch_str_copy(ptr %a353, ptr %a352) - %t354 = load { ptr, i64, i64 }, ptr %a353 - %t355 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t354, 0 - %t356 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t357 = load %S.ast.Type, ptr %t356 - store %S.ast.Type %t357, ptr %a358 - call void @finch.copy.S_ast_Type(ptr %a359, ptr %a358) - %t360 = load %S.ast.Type, ptr %a359 - %t361 = insertvalue %S.gen.Place %t355, %S.ast.Type %t360, 1 - %t362 = insertvalue %S.gen.Ref %t349, %S.gen.Place %t361, 1 - call void @finch.drop.S_gen_Var(ptr %a309) - ret %S.gen.Ref %t362 -endif6733: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4404, i64 6, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then6816, label %endif6818 -then6816: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = load i1, ptr %a3 - %t372 = call %S.gen.Ref @finch.gen.member(ptr %t369, %S.ast.Node %t370, i1 %t371) - ret %S.gen.Ref %t372 -endif6818: - %t373 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t374 = load { ptr, i64, i64 }, ptr %t373 - store { ptr, i64, i64 } %t374, ptr %a375 - store { ptr, i64, i64 } { ptr @.str.4405, i64 5, i64 0 }, ptr %a376 - %t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376) - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %then6819, label %endif6821 -then6819: - %t379 = load ptr, ptr %a1 - %t380 = load %S.ast.Node, ptr %a2 - %t381 = load i1, ptr %a3 - %t382 = call %S.gen.Ref @finch.gen.index(ptr %t379, %S.ast.Node %t380, i1 %t381) - ret %S.gen.Ref %t382 -endif6821: - %t383 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Node, ptr %a2 - %t386 = call %S.gen.Val @finch.gen.expr(ptr %t384, %S.ast.Node %t385) - %t387 = insertvalue %S.gen.Ref %t383, %S.gen.Val %t386, 2 - ret %S.gen.Ref %t387 -} - -define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { -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 - %a21 = 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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.4407, 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 %then6822, label %endif6824 -then6822: - %t13 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4408, 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 - %t18 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t17, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif6824 -endif6824: - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.4410, i64 1, i64 0 }, ptr %a23 - %t24 = call i64 @finch_str_find(ptr %a21, ptr %a23) - %t25 = icmp sge i64 %t24, 0 - %t26 = xor i1 %t25, true - br i1 %t26, label %then6825, label %endif6827 -then6825: - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.4412, i64 1, i64 0 }, ptr %a30 - %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then6828, label %endif6830 -then6828: - %t35 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.4414, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a32 - br label %endif6830 -endif6830: - %t40 = load i64, ptr %a32 - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %then6831, label %endif6833 -then6831: - %t42 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.4415, i64 2, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a43 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t46 -endif6833: - %t47 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t47, ptr %a48 - %t50 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.4416, i64 3776) - %t51 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4417, i64 2, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t57, ptr %a58 - %t60 = load i64, ptr %a32 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t62 = load i64, ptr %t61 - call void @finch_str_sub(ptr %a59, ptr %a58, i64 %t60, i64 %t62, ptr @.str.4418, i64 3776) - %t63 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t56, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t56, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t69 -endif6827: - %t70 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t70 -} - -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.4419, 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.from6834 -logic.from6834: - br i1 %t8, label %logic.rhs6835, label %logic.end6836 -logic.rhs6835: - %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.rend6837 -logic.rend6837: - br label %logic.end6836 -logic.end6836: - %t14 = phi i1 [ false, %logic.from6834 ], [ %t13, %logic.rend6837 ] - br i1 %t14, label %then6838, label %endif6840 -then6838: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6841, label %ok6842 -panic6841: - call void @finch_panic(ptr @.str.4420, i64 3784, ptr @.str.4421) - unreachable -ok6842: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6840: - %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.4422, 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.from6843 -logic.from6843: - br i1 %t28, label %logic.rhs6844, label %logic.end6845 -logic.rhs6844: - %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 %range6846, label %inrange6847 -range6846: - call void @finch_panic_index(ptr @.str.4423, i64 3786, i64 0, i64 %t31) - unreachable -inrange6847: - %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.4424, 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.rend6848 -logic.rend6848: - br label %logic.end6845 -logic.end6845: - %t41 = phi i1 [ false, %logic.from6843 ], [ %t40, %logic.rend6848 ] - br label %logic.from6849 -logic.from6849: - br i1 %t41, label %logic.rhs6850, label %logic.end6851 -logic.rhs6850: - %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 %range6852, label %inrange6853 -range6852: - call void @finch_panic_index(ptr @.str.4425, i64 3786, i64 0, i64 %t45) - unreachable -inrange6853: - %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.rend6854 -logic.rend6854: - br label %logic.end6851 -logic.end6851: - %t53 = phi i1 [ false, %logic.from6849 ], [ %t52, %logic.rend6854 ] - br label %logic.from6855 -logic.from6855: - br i1 %t53, label %logic.rhs6856, label %logic.end6857 -logic.rhs6856: - %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 %range6858, label %inrange6859 -range6858: - call void @finch_panic_index(ptr @.str.4426, i64 3786, i64 0, i64 %t57) - unreachable -inrange6859: - %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.rend6860 -logic.rend6860: - br label %logic.end6857 -logic.end6857: - %t64 = phi i1 [ false, %logic.from6855 ], [ %t63, %logic.rend6860 ] - br i1 %t64, label %then6861, label %endif6863 -then6861: - %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 %range6864, label %inrange6865 -range6864: - call void @finch_panic_index(ptr @.str.4427, i64 3787, i64 0, i64 %t68) - unreachable -inrange6865: - %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 -endif6863: - ret i64 -1 -} - -define internal i64 @finch.gen.sumNamed(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.4428, 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.from6866 -logic.from6866: - br i1 %t8, label %logic.rhs6867, label %logic.end6868 -logic.rhs6867: - %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.rend6869 -logic.rend6869: - br label %logic.end6868 -logic.end6868: - %t14 = phi i1 [ false, %logic.from6866 ], [ %t13, %logic.rend6869 ] - br i1 %t14, label %then6870, label %endif6872 -then6870: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6873, label %ok6874 -panic6873: - call void @finch_panic(ptr @.str.4429, i64 3795, ptr @.str.4430) - unreachable -ok6874: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findSum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6872: - %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.4431, 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.from6875 -logic.from6875: - br i1 %t28, label %logic.rhs6876, label %logic.end6877 -logic.rhs6876: - %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 %range6878, label %inrange6879 -range6878: - call void @finch_panic_index(ptr @.str.4432, i64 3797, i64 0, i64 %t31) - unreachable -inrange6879: - %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.4433, 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.rend6880 -logic.rend6880: - br label %logic.end6877 -logic.end6877: - %t41 = phi i1 [ false, %logic.from6875 ], [ %t40, %logic.rend6880 ] - br label %logic.from6881 -logic.from6881: - br i1 %t41, label %logic.rhs6882, label %logic.end6883 -logic.rhs6882: - %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 %range6884, label %inrange6885 -range6884: - call void @finch_panic_index(ptr @.str.4434, i64 3797, i64 0, i64 %t45) - unreachable -inrange6885: - %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.rend6886 -logic.rend6886: - br label %logic.end6883 -logic.end6883: - %t53 = phi i1 [ false, %logic.from6881 ], [ %t52, %logic.rend6886 ] - br label %logic.from6887 -logic.from6887: - br i1 %t53, label %logic.rhs6888, label %logic.end6889 -logic.rhs6888: - %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 %range6890, label %inrange6891 -range6890: - call void @finch_panic_index(ptr @.str.4435, i64 3797, i64 0, i64 %t57) - unreachable -inrange6891: - %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.rend6892 -logic.rend6892: - br label %logic.end6889 -logic.end6889: - %t64 = phi i1 [ false, %logic.from6887 ], [ %t63, %logic.rend6892 ] - br i1 %t64, label %then6893, label %endif6895 -then6893: - %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 %range6896, label %inrange6897 -range6896: - call void @finch_panic_index(ptr @.str.4436, i64 3798, i64 0, i64 %t68) - unreachable -inrange6897: - %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.findSum(ptr %t65, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75) - ret i64 %t76 -endif6895: - ret i64 -1 -} - -define internal i64 @finch.gen.sumVariant(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a16 = alloca %S.gen.SumDef, align 16 - %a18 = alloca %S.gen.SumDef, 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 - %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 - %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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic6898, label %ok6899 -panic6898: - call void @finch_panic(ptr @.str.4437, i64 3804, ptr @.str.4438) - unreachable -ok6899: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 22 - %t8 = load i64, ptr %a2 - %t9 = load { ptr, i64, i64 }, ptr %t7 - %t10 = extractvalue { ptr, i64, i64 } %t9, 1 - %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range6900, label %inrange6901 -range6900: - call void @finch_panic_index(ptr @.str.4439, i64 3804, i64 %t8, i64 %t10) - unreachable -inrange6901: - %t12 = extractvalue { ptr, i64, i64 } %t9, 0 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %t12, i64 %t8 - %t14 = load %S.gen.SumDef, ptr %t13 - store %S.gen.SumDef %t14, ptr %a15 - call void @finch.copy.S_gen_SumDef(ptr %a16, ptr %a15) - %t17 = load %S.gen.SumDef, ptr %a16 - store %S.gen.SumDef %t17, ptr %a18 - %t19 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %a3 - store i64 -1, ptr %a22 - %t23 = load i64, ptr %t20 - %t24 = load ptr, ptr %t19 - store i64 0, ptr %a25 - br label %find.cond6902 -find.cond6902: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6903, label %find.end6906 -find.body6903: - %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.hit6904, label %find.next6905 -find.hit6904: - store i64 %t26, ptr %a22 - br label %find.end6906 -find.next6905: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6902 -find.end6906: - %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 %then6907, label %endif6909 -then6907: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a4 - %t41 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } { ptr @.str.4440, 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.4441, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.4442, i64 11, i64 0 }, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t57, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - %t63 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4443, i64 2, 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 } %t62, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t62, ptr %a71 - call void @finch_str_drop(ptr %a71) - store { ptr, i64, i64 } %t67, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.4444, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif6909 -endif6909: - %t80 = load i64, ptr %a36 - call void @finch.drop.S_gen_SumDef(ptr %a18) - ret i64 %t80 -} - -define internal %S.gen.Val @finch.gen.sumMake(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.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, align 16 - %a19 = alloca %S.gen.SumDef, align 16 - %a25 = alloca 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca i64, align 16 - %a178 = alloca %S.ast.Node, align 16 - %a179 = alloca %S.ast.Node, 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 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, 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 %panic6910, label %ok6911 -panic6910: - call void @finch_panic(ptr @.str.4445, i64 3814, ptr @.str.4446) - unreachable -ok6911: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 22 - %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 %range6912, label %inrange6913 -range6912: - call void @finch_panic_index(ptr @.str.4447, i64 3814, i64 %t9, i64 %t11) - unreachable -inrange6913: - %t13 = extractvalue { ptr, i64, i64 } %t10, 0 - %t14 = getelementptr inbounds %S.gen.SumDef, ptr %t13, i64 %t9 - %t15 = load %S.gen.SumDef, ptr %t14 - store %S.gen.SumDef %t15, ptr %a16 - call void @finch.copy.S_gen_SumDef(ptr %a17, ptr %a16) - %t18 = load %S.gen.SumDef, ptr %a17 - store %S.gen.SumDef %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = load i64, ptr %a2 - %t22 = load { ptr, i64, i64 }, ptr %a3 - %t23 = load %S.ast.Node, ptr %a5 - %t24 = call i64 @finch.gen.sumVariant(ptr %t20, i64 %t21, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t27 = load i64, ptr %t26 - %t28 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t29 = load i64, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range6914, label %inrange6915 -range6914: - call void @finch_panic_index(ptr @.str.4448, i64 3816, i64 %t29, i64 %t31) - unreachable -inrange6915: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds i64, ptr %t33, i64 %t29 - %t35 = load i64, ptr %t34 - %t36 = icmp ne i64 %t27, %t35 - br i1 %t36, label %then6916, label %endif6918 -then6916: - %t37 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t38 = load i64, ptr %a25 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range6919, label %inrange6920 -range6919: - call void @finch_panic_index(ptr @.str.4449, i64 3817, i64 %t38, i64 %t40) - unreachable -inrange6920: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i64, ptr %t42, i64 %t38 - %t44 = load i64, ptr %t43 - %t45 = icmp eq i64 %t44, 0 - br i1 %t45, label %then6921, label %endif6923 -then6921: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Node, ptr %a5 - %t48 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4450, i64 22, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a49 - %t53 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t52, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t52, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4451, i64 1, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - %t65 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t64, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t64, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.fail(ptr %t46, %S.ast.Node %t47, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif6923 -endif6923: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a5 - %t74 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4452, i64 7, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t80 = load i64, ptr %a25 - %t81 = load { ptr, i64, i64 }, ptr %t79 - %t82 = extractvalue { ptr, i64, i64 } %t81, 1 - %t83 = icmp uge i64 %t80, %t82 - br i1 %t83, label %range6924, label %inrange6925 -range6924: - call void @finch_panic_index(ptr @.str.4453, i64 3820, i64 %t80, i64 %t82) - unreachable -inrange6925: - %t84 = extractvalue { ptr, i64, i64 } %t81, 0 - %t85 = getelementptr inbounds i64, ptr %t84, i64 %t80 - %t86 = load i64, ptr %t85 - call void @finch_str_from_int(ptr %a87, i64 %t86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t78, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t78, ptr %a92 - call void @finch_str_drop(ptr %a92) - store { ptr, i64, i64 } %t88, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4454, i64 19, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t101 = load i64, ptr %t100 - call void @finch_str_from_int(ptr %a102, i64 %t101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t99, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t99, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t103, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4455, i64 2, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - %t115 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t114, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.4456, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4457, i64 5, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.fail(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif6918 -endif6918: - store { ptr, i64, i64 } zeroinitializer, ptr %a139 - store { ptr, i64, i64 } zeroinitializer, ptr %a140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t142 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.4458, i64 3, i64 0 }, 0 - %t143 = load i64, ptr %a25 - call void @finch_str_from_int(ptr %a144, i64 %t143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.ast.Node %t142, { ptr, i64, i64 } %t145, 4 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 11 - %t148 = load i64, ptr %t147 - %t149 = insertvalue %S.ast.Node %t146, i64 %t148, 11 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t151 = load i64, ptr %t150 - %t152 = insertvalue %S.ast.Node %t149, i64 %t151, 12 - %t153 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 13 - %t154 = load i64, ptr %t153 - %t155 = insertvalue %S.ast.Node %t152, i64 %t154, 13 - %t156 = load i64, ptr %t141 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %a139 - %t159 = getelementptr inbounds %S.ast.Node, ptr %t158, i64 %t156 - store %S.ast.Node %t155, ptr %t159 - store i64 %t157, ptr %t141 - %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t161 = load i64, ptr %t160 - %t162 = add i64 %t161, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t162, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t163 = load ptr, ptr %a140 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t161 - store { ptr, i64, i64 } { ptr @.str.4459, i64 3, i64 0 }, ptr %t164 - store i64 %t162, ptr %t160 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t166 = load i64, ptr %t165 - store i64 0, ptr %a167 - br label %for.cond6926 -for.cond6926: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body6927, label %for.end6929 -for.body6927: - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t171 = load i64, ptr %a167 - %t172 = load { ptr, i64, i64 }, ptr %a4 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 %t171, %t173 - br i1 %t174, label %range6930, label %inrange6931 -range6930: - call void @finch_panic_index(ptr @.str.4460, i64 3827, i64 %t171, i64 %t173) - unreachable -inrange6931: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t171 - %t177 = load %S.ast.Node, ptr %t176 - store %S.ast.Node %t177, ptr %a178 - call void @finch.copy.S_ast_Node(ptr %a179, ptr %a178) - %t180 = load %S.ast.Node, ptr %a179 - %t181 = load i64, ptr %t170 - %t182 = add i64 %t181, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t182, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t183 = load ptr, ptr %a139 - %t184 = getelementptr inbounds %S.ast.Node, ptr %t183, i64 %t181 - store %S.ast.Node %t180, ptr %t184 - store i64 %t182, ptr %t170 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t186 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4461, i64 1, 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 %a167 - 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) - store { ptr, i64, i64 } %t190, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a194 - %t200 = load i64, ptr %t185 - %t201 = add i64 %t200, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t201, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t202 = load ptr, ptr %a140 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 %t200 - store { ptr, i64, i64 } %t199, ptr %t203 - store i64 %t201, ptr %t185 - br label %for.step6928 -for.step6928: - %t204 = load i64, ptr %a167 - %t205 = add i64 %t204, 1 - store i64 %t205, ptr %a167 - br label %for.cond6926 -for.end6929: - %t206 = load ptr, ptr %a1 - %t207 = load %S.ast.Node, ptr %a5 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t209 = load i64, ptr %t208 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t211 = load i64, ptr %t210 - %t212 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } { ptr @.str.4462, i64 9, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4463, i64 1, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t222, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t228, ptr %a230 - store { ptr, i64, i64 } { ptr @.str.4464, i64 4, i64 0 }, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t228, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - call void @finch.gen.noteRef(ptr %t206, %S.ast.Node %t207, i64 %t209, i64 %t211, { ptr, i64, i64 } %t233, { ptr, i64, i64 } { ptr @.str.4465, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t233, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load ptr, ptr %a1 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %a139 - %t243 = load { ptr, i64, i64 }, ptr %a140 - %t244 = load %S.ast.Node, ptr %a5 - %t245 = call %S.gen.Val @finch.gen.construct(ptr %t235, i64 %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, %S.ast.Node %t244) - call void @finch.drop.arr_str(ptr %a140) - call void @finch.drop.arr_S_ast_Node(ptr %a139) - call void @finch.drop.S_gen_SumDef(ptr %a19) - ret %S.gen.Val %t245 -} - -define internal %S.gen.SumPat @finch.gen.sumPattern(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.SumDef, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca i64, align 16 - %a124 = alloca %S.ast.Node, align 16 - %a125 = alloca %S.ast.Node, 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 - %a144 = 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 - %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 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %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 i64, align 16 - %a251 = alloca %S.ast.Node, 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 - 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 %panic6932, label %ok6933 -panic6932: - call void @finch_panic(ptr @.str.4466, i64 3836, ptr @.str.4467) - unreachable -ok6933: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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 %range6934, label %inrange6935 -range6934: - call void @finch_panic_index(ptr @.str.4468, i64 3836, i64 %t7, i64 %t9) - unreachable -inrange6935: - %t11 = extractvalue { ptr, i64, i64 } %t8, 0 - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %t11, i64 %t7 - %t13 = load %S.gen.SumDef, ptr %t12 - store %S.gen.SumDef %t13, ptr %a14 - call void @finch.copy.S_gen_SumDef(ptr %a15, ptr %a14) - %t16 = load %S.gen.SumDef, ptr %a15 - store %S.gen.SumDef %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.4469, i64 0, i64 0 }, ptr %a18 - store { ptr, i64, i64 } zeroinitializer, ptr %a19 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - br label %logic.from6936 -logic.from6936: - br i1 %t25, label %logic.rhs6937, label %logic.end6938 -logic.rhs6937: - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = call i64 @finch.gen.lookup(ptr %t26, { ptr, i64, i64 } %t28) - %t30 = icmp slt i64 %t29, 0 - br label %logic.rend6939 -logic.rend6939: - br label %logic.end6938 -logic.end6938: - %t31 = phi i1 [ false, %logic.from6936 ], [ %t30, %logic.rend6939 ] - br i1 %t31, label %then6940, label %else6941 -then6940: - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 - %t37 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t36, ptr %a18 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif6942 -else6941: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.4471, 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 %then6943, label %else6944 -then6943: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t49, ptr %a18 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch.copy.arr_S_ast_Node(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - %t57 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t56, ptr %a19 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch.drop.arr_S_ast_Node(ptr %a58) - br label %endif6945 -else6944: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4472, i64 6, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br label %logic.from6946 -logic.from6946: - br i1 %t64, label %logic.rhs6947, label %logic.end6948 -logic.rhs6947: - %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 %range6949, label %inrange6950 -range6949: - call void @finch_panic_index(ptr @.str.4473, i64 3844, i64 0, i64 %t68) - unreachable -inrange6950: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 0 - %t72 = load %S.ast.Node, ptr %t71 - %t73 = call i64 @finch.gen.sumNamed(ptr %t65, %S.ast.Node %t72) - %t74 = load i64, ptr %a3 - %t75 = icmp eq i64 %t73, %t74 - br label %logic.rend6951 -logic.rend6951: - br label %logic.end6948 -logic.end6948: - %t76 = phi i1 [ false, %logic.from6946 ], [ %t75, %logic.rend6951 ] - br i1 %t76, label %then6952, label %else6953 -then6952: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_copy(ptr %a80, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t81, ptr %a18 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif6954 -else6953: - %t84 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.4474, i64 6, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.from6955 -logic.from6955: - br i1 %t89, label %logic.rhs6956, label %logic.end6957 -logic.rhs6956: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 0, %t93 - br i1 %t94, label %range6958, label %inrange6959 -range6958: - call void @finch_panic_index(ptr @.str.4475, i64 3846, i64 0, i64 %t93) - unreachable -inrange6959: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 0 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i64 @finch.gen.sumNamed(ptr %t90, %S.ast.Node %t97) - %t99 = load i64, ptr %a3 - %t100 = icmp eq i64 %t98, %t99 - br label %logic.rend6960 -logic.rend6960: - br label %logic.end6957 -logic.end6957: - %t101 = phi i1 [ false, %logic.from6955 ], [ %t100, %logic.rend6960 ] - br i1 %t101, label %then6961, label %else6962 -then6961: - %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 - call void @finch_str_copy(ptr %a105, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - %t107 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t106, ptr %a18 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i32 0, i32 1 - %t111 = load i64, ptr %t110 - store i64 1, ptr %a112 - br label %for.cond6964 -for.cond6964: - %t113 = load i64, ptr %a112 - %t114 = icmp slt i64 %t113, %t111 - br i1 %t114, label %for.body6965, label %for.end6967 -for.body6965: - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load i64, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %t116 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 %t117, %t119 - br i1 %t120, label %range6968, label %inrange6969 -range6968: - call void @finch_panic_index(ptr @.str.4476, i64 3849, i64 %t117, i64 %t119) - unreachable -inrange6969: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Node, ptr %t121, i64 %t117 - %t123 = load %S.ast.Node, ptr %t122 - store %S.ast.Node %t123, ptr %a124 - call void @finch.copy.S_ast_Node(ptr %a125, ptr %a124) - %t126 = load %S.ast.Node, ptr %a125 - %t127 = load i64, ptr %t115 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t128, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %a19 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 %t127 - store %S.ast.Node %t126, ptr %t130 - store i64 %t128, ptr %t115 - br label %for.step6966 -for.step6966: - %t131 = load i64, ptr %a112 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %a112 - br label %for.cond6964 -for.end6967: - br label %endif6963 -else6962: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - %t135 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 1 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } { ptr @.str.4477, i64 33, 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.4478, i64 10, i64 0 }, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t140, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 2 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4479, i64 2, i64 0 }, ptr %a148 - call void @finch_str_join(ptr %a149, ptr %t146, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t145, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t145, ptr %a154 - call void @finch_str_drop(ptr %a154) - store { ptr, i64, i64 } %t150, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4480, i64 1, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a162 - call void @finch_str_drop(ptr %a162) - br label %endif6963 -endif6963: - br label %endif6954 -endif6954: - br label %endif6945 -endif6945: - br label %endif6942 -endif6942: - %t163 = load ptr, ptr %a1 - %t164 = load i64, ptr %a3 - %t165 = load { ptr, i64, i64 }, ptr %a18 - %t166 = load %S.ast.Node, ptr %a2 - %t167 = call i64 @finch.gen.sumVariant(ptr %t163, i64 %t164, { ptr, i64, i64 } %t165, %S.ast.Node %t166) - store i64 %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t172 = load i64, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %t171 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 %t172, %t174 - br i1 %t175, label %range6970, label %inrange6971 -range6970: - call void @finch_panic_index(ptr @.str.4481, i64 3855, i64 %t172, i64 %t174) - unreachable -inrange6971: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds i64, ptr %t176, i64 %t172 - %t178 = load i64, ptr %t177 - %t179 = icmp ne i64 %t170, %t178 - br i1 %t179, label %then6972, label %endif6974 -then6972: - %t180 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t181 = load i64, ptr %a168 - %t182 = load { ptr, i64, i64 }, ptr %t180 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 %t181, %t183 - br i1 %t184, label %range6975, label %inrange6976 -range6975: - call void @finch_panic_index(ptr @.str.4482, i64 3856, i64 %t181, i64 %t183) - unreachable -inrange6976: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds i64, ptr %t185, i64 %t181 - %t187 = load i64, ptr %t186 - %t188 = icmp eq i64 %t187, 0 - br i1 %t188, label %then6977, label %endif6979 -then6977: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t191, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.4483, i64 27, i64 0 }, ptr %a194 - call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a192 - %t196 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t195, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t195, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - call void @finch.gen.fail(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t201) - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif6979 -endif6979: - %t203 = load ptr, ptr %a1 - %t204 = load %S.ast.Node, ptr %a2 - %t205 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4484, i64 7, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a206 - %t210 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t211 = load i64, ptr %a168 - %t212 = load { ptr, i64, i64 }, ptr %t210 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range6980, label %inrange6981 -range6980: - call void @finch_panic_index(ptr @.str.4485, i64 3859, i64 %t211, i64 %t213) - unreachable -inrange6981: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds i64, ptr %t215, i64 %t211 - %t217 = load i64, ptr %t216 - call void @finch_str_from_int(ptr %a218, i64 %t217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t209, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - store { ptr, i64, i64 } %t209, ptr %a223 - call void @finch_str_drop(ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t225, ptr %a227 - store { ptr, i64, i64 } { ptr @.str.4486, i64 27, i64 0 }, ptr %a228 - call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) - store { ptr, i64, i64 } %t225, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load { ptr, i64, i64 }, ptr %a226 - %t231 = load { ptr, i64, i64 }, ptr %a18 - 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) - store { ptr, i64, i64 } %t230, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.4487, i64 27, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.fail(ptr %t203, %S.ast.Node %t204, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a242 - call void @finch_str_drop(ptr %a242) - br label %endif6974 -endif6974: - store i64 0, ptr %a243 - br label %each.cond6982 -each.cond6982: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = load i64, ptr %a243 - %t247 = icmp slt i64 %t246, %t245 - br i1 %t247, label %each.body6983, label %each.end6985 -each.body6983: - %t248 = load ptr, ptr %a19 - %t249 = getelementptr inbounds %S.ast.Node, ptr %t248, i64 %t246 - %t250 = load %S.ast.Node, ptr %t249 - store %S.ast.Node %t250, ptr %a251 - %t252 = getelementptr inbounds %S.ast.Node, ptr %a251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4488, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp eq i32 %t256, 0 - br i1 %t257, label %then6986, label %endif6988 -then6986: - %t258 = load ptr, ptr %a1 - %t259 = load %S.ast.Node, ptr %a251 - call void @finch.gen.fail(ptr %t258, %S.ast.Node %t259, { ptr, i64, i64 } { ptr @.str.4489, i64 50, i64 0 }) - br label %endif6988 -endif6988: - br label %each.step6984 -each.step6984: - %t260 = load i64, ptr %a243 - %t261 = add i64 %t260, 1 - store i64 %t261, ptr %a243 - br label %each.cond6982 -each.end6985: - %t262 = load i64, ptr %a168 - %t263 = insertvalue %S.gen.SumPat zeroinitializer, i64 %t262, 0 - %t264 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch.copy.arr_S_ast_Node(ptr %a266, ptr %a265) - %t267 = load { ptr, i64, i64 }, ptr %a266 - %t268 = insertvalue %S.gen.SumPat %t263, { ptr, i64, i64 } %t267, 1 - call void @finch.drop.arr_S_ast_Node(ptr %a19) - call void @finch_str_drop(ptr %a18) - call void @finch.drop.S_gen_SumDef(ptr %a17) - ret %S.gen.SumPat %t268 -} - -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 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6989, label %ok6990 -panic6989: - call void @finch_panic(ptr @.str.4490, i64 3871, ptr @.str.4491) - unreachable -ok6990: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6991, label %inrange6992 -range6991: - call void @finch_panic_index(ptr @.str.4492, i64 3871, i64 %t7, i64 %t9) - unreachable -inrange6992: - %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.cond6993 -find.cond6993: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6994, label %find.end6997 -find.body6994: - %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.hit6995, label %find.next6996 -find.hit6995: - store i64 %t26, ptr %a22 - br label %find.end6997 -find.next6996: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6993 -find.end6997: - %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 %then6998, label %endif7000 -then6998: - %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.4493, 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.4494, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t51, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t51, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4495, i64 11, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4496, i64 2, i64 0 }, ptr %a66 - call void @finch_str_join(ptr %a67, ptr %t64, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4497, i64 1, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif7000 -endif7000: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a2 - %t83 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t84 = load i64, ptr %t83 - %t85 = add i64 %t84, 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t90 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } { ptr @.str.4498, i64 9, i64 0 }, ptr %a92 - store { ptr, i64, i64 } %t90, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4499, i64 1, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t99, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t99, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.4500, i64 3, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t113 = load i64, ptr %a36 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range7001, label %inrange7002 -range7001: - call void @finch_panic_index(ptr @.str.4501, i64 3876, i64 %t113, i64 %t115) - unreachable -inrange7002: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t113 - %t119 = load i64, ptr %t118 - call void @finch_str_from_int(ptr %a120, i64 %t119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t111, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t111, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t127, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.4502, i64 4, i64 0 }, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t127, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - call void @finch.gen.noteRef(ptr %t81, %S.ast.Node %t82, i64 %t85, i64 %t88, { ptr, i64, i64 } %t132, { ptr, i64, i64 } { ptr @.str.4503, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t135 = load i64, ptr %a36 - %t136 = load { ptr, i64, i64 }, ptr %t134 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 %t135, %t137 - br i1 %t138, label %range7003, label %inrange7004 -range7003: - call void @finch_panic_index(ptr @.str.4504, i64 3877, i64 %t135, i64 %t137) - unreachable -inrange7004: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds i64, ptr %t139, i64 %t135 - %t141 = load i64, ptr %t140 - call void @finch_str_from_int(ptr %a142, i64 %t141) - %t143 = load { ptr, i64, i64 }, ptr %a142 - %t144 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t143, 0 - %t145 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4505, i64 4, i64 0 }, 0 - %t146 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - call void @finch_str_copy(ptr %a149, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - %t151 = insertvalue %S.ast.Type %t145, { ptr, i64, i64 } %t150, 2 - %t152 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t153, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = insertvalue %S.ast.Type %t151, { ptr, i64, i64 } %t156, 3 - %t158 = insertvalue %S.gen.Val %t144, %S.ast.Type %t157, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t158 -} - -define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca i1, align 16 - %a13 = alloca i64, align 16 - %a25 = alloca i64, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a157 = alloca %S.gen.Ref, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a170 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a241 = alloca %S.ast.Type, align 16 - %a242 = alloca i1, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca i64, align 16 - %a268 = alloca i64, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca %S.ast.Type, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.ast.Type, align 16 - %a335 = alloca %S.gen.Ref, align 16 - %a337 = alloca %S.ast.Type, align 16 - %a338 = alloca %S.ast.Type, align 16 - %a341 = alloca %S.ast.Type, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = 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 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = 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 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %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 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca %S.ast.Type, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a616 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a671 = 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 - %a692 = alloca %S.gen.StructDef, align 16 - %a693 = alloca %S.gen.StructDef, align 16 - %a695 = alloca %S.gen.StructDef, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca i64, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a726 = 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 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a769 = alloca %S.ast.Type, align 16 - %a771 = alloca %S.ast.Type, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a855 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca %S.ast.Type, align 16 - %a861 = alloca %S.ast.Type, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %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 - %a887 = 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 - %a900 = 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 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a917 = alloca %S.ast.Type, align 16 - %a918 = alloca %S.ast.Type, align 16 - %a921 = alloca %S.gen.Val, align 16 - %a935 = alloca %S.ast.Type, align 16 - %a936 = alloca %S.ast.Type, align 16 - %a941 = alloca %S.gen.Val, align 16 - %a947 = alloca %S.gen.Val, align 16 - %a948 = 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 %range7005, label %inrange7006 -range7005: - call void @finch_panic_index(ptr @.str.4506, i64 3881, i64 0, i64 %t7) - unreachable -inrange7006: - %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.sumNamed(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 %then7007, label %endif7009 -then7007: - %t16 = load i1, ptr %a3 - br i1 %t16, label %then7010, label %endif7012 -then7010: - %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.4507, i64 37, i64 0 }) - br label %endif7012 -endif7012: - %t19 = load ptr, ptr %a1 - %t20 = load i64, ptr %a13 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = load %S.ast.Node, ptr %a2 - %t24 = call i64 @finch.gen.sumVariant(ptr %t19, i64 %t20, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic7013, label %ok7014 -panic7013: - call void @finch_panic(ptr @.str.4508, i64 3887, ptr @.str.4509) - unreachable -ok7014: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 22 - %t29 = load i64, ptr %a13 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range7015, label %inrange7016 -range7015: - call void @finch_panic_index(ptr @.str.4510, i64 3887, i64 %t29, i64 %t31) - unreachable -inrange7016: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.gen.SumDef, ptr %t33, i64 %t29 - %t35 = getelementptr inbounds %S.gen.SumDef, ptr %t34, i32 0, i32 3 - %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 %range7017, label %inrange7018 -range7017: - call void @finch_panic_index(ptr @.str.4511, i64 3887, i64 %t36, i64 %t38) - unreachable -inrange7018: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds i64, ptr %t40, i64 %t36 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then7019, label %endif7021 -then7019: - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Node, ptr %a2 - %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 %a49 - store { ptr, i64, i64 } { ptr @.str.4512, 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 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic7022, label %ok7023 -panic7022: - call void @finch_panic(ptr @.str.4513, i64 3888, ptr @.str.4514) - unreachable -ok7023: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 22 - %t55 = load i64, ptr %a13 - %t56 = load { ptr, i64, i64 }, ptr %t54 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range7024, label %inrange7025 -range7024: - call void @finch_panic_index(ptr @.str.4515, i64 3888, i64 %t55, i64 %t57) - unreachable -inrange7025: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds %S.gen.SumDef, ptr %t59, i64 %t55 - %t61 = getelementptr inbounds %S.gen.SumDef, ptr %t60, i32 0, i32 3 - %t62 = load i64, ptr %a25 - %t63 = load { ptr, i64, i64 }, ptr %t61 - %t64 = extractvalue { ptr, i64, i64 } %t63, 1 - %t65 = icmp uge i64 %t62, %t64 - br i1 %t65, label %range7026, label %inrange7027 -range7026: - call void @finch_panic_index(ptr @.str.4516, i64 3888, i64 %t62, i64 %t64) - unreachable -inrange7027: - %t66 = extractvalue { ptr, i64, i64 } %t63, 0 - %t67 = getelementptr inbounds i64, ptr %t66, i64 %t62 - %t68 = load i64, ptr %t67 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t51, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t51, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4517, i64 11, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = load ptr, ptr %a1 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic7028, label %ok7029 -panic7028: - call void @finch_panic(ptr @.str.4518, i64 3888, ptr @.str.4519) - unreachable -ok7029: - %t84 = getelementptr inbounds %S.gen.Gen, ptr %t82, i32 0, i32 22 - %t85 = load i64, ptr %a13 - %t86 = load { ptr, i64, i64 }, ptr %t84 - %t87 = extractvalue { ptr, i64, i64 } %t86, 1 - %t88 = icmp uge i64 %t85, %t87 - br i1 %t88, label %range7030, label %inrange7031 -range7030: - call void @finch_panic_index(ptr @.str.4520, i64 3888, i64 %t85, i64 %t87) - unreachable -inrange7031: - %t89 = extractvalue { ptr, i64, i64 } %t86, 0 - %t90 = getelementptr inbounds %S.gen.SumDef, ptr %t89, i64 %t85 - %t91 = getelementptr inbounds %S.gen.SumDef, ptr %t90, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t81, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t81, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4521, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4522, i64 5, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - call void @finch.gen.fail(ptr %t44, %S.ast.Node %t45, { ptr, i64, i64 } %t114) - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_drop(ptr %a115) - br label %endif7021 -endif7021: - store { ptr, i64, i64 } zeroinitializer, ptr %a116 - %t117 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a13 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = load { ptr, i64, i64 }, ptr %a116 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = call %S.gen.Val @finch.gen.sumMake(ptr %t118, i64 %t119, { ptr, i64, i64 } %t121, { ptr, i64, i64 } %t122, %S.ast.Node %t123) - %t125 = insertvalue %S.gen.Ref %t117, %S.gen.Val %t124, 2 - call void @finch.drop.arr_S_ast_Node(ptr %a116) - ret %S.gen.Ref %t125 -endif7009: - %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 %range7032, label %inrange7033 -range7032: - call void @finch_panic_index(ptr @.str.4523, i64 3893, i64 0, i64 %t129) - unreachable -inrange7033: - %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 i64 @finch.gen.enumNamed(ptr %t126, %S.ast.Node %t133) - store i64 %t134, ptr %a135 - %t136 = load i64, ptr %a135 - %t137 = icmp sge i64 %t136, 0 - br i1 %t137, label %then7034, label %endif7036 -then7034: - %t138 = load i1, ptr %a3 - br i1 %t138, label %then7037, label %endif7039 -then7037: - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t139, %S.ast.Node %t140, { ptr, i64, i64 } { ptr @.str.4524, i64 37, i64 0 }) - br label %endif7039 -endif7039: - %t141 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Node, ptr %a2 - %t144 = load i64, ptr %a135 - %t145 = call %S.gen.Val @finch.gen.enumValue(ptr %t142, %S.ast.Node %t143, i64 %t144) - %t146 = insertvalue %S.gen.Ref %t141, %S.gen.Val %t145, 2 - ret %S.gen.Ref %t146 -endif7036: - %t147 = load ptr, ptr %a1 - %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 %range7040, label %inrange7041 -range7040: - call void @finch_panic_index(ptr @.str.4525, i64 3900, i64 0, i64 %t150) - unreachable -inrange7041: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 0 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = load i1, ptr %a3 - %t156 = call %S.gen.Ref @finch.gen.ref(ptr %t147, %S.ast.Node %t154, i1 %t155) - store %S.gen.Ref %t156, ptr %a157 - %t158 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t159 = getelementptr inbounds %S.gen.Val, ptr %t158, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - store %S.ast.Type %t163, ptr %a164 - %t165 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t166 = load i1, ptr %t165 - br i1 %t166, label %then7042, label %endif7044 -then7042: - %t167 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t168 = getelementptr inbounds %S.gen.Place, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Type, ptr %t168 - store %S.ast.Type %t169, ptr %a170 - call void @finch.copy.S_ast_Type(ptr %a171, ptr %a170) - %t172 = load %S.ast.Type, ptr %a171 - %t173 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t172, ptr %a164 - store %S.ast.Type %t173, ptr %a174 - call void @finch.drop.S_ast_Type(ptr %a174) - br label %endif7044 -endif7044: - %t175 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t176 = load { ptr, i64, i64 }, ptr %t175 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4526, 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 %then7045, label %endif7047 -then7045: - %t181 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t182 = getelementptr inbounds %S.gen.Val, ptr %t181, i32 0, i32 0 - %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 - store { ptr, i64, i64 } %t186, ptr %a187 - %t188 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t189 = load i1, ptr %t188 - br i1 %t189, label %then7048, label %endif7050 -then7048: - %t190 = load ptr, ptr %a1 - %t191 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t192 = getelementptr inbounds %S.gen.Place, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t190, { ptr, i64, i64 } { ptr @.str.4527, i64 3, i64 0 }, { ptr, i64, i64 } %t193) - %t195 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t194, ptr %a187 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %endif7050 -endif7050: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = icmp eq i64 %t199, 0 - br i1 %t200, label %then7051, label %endif7053 -then7051: - %t201 = load ptr, ptr %a1 - %t202 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t201, %S.ast.Node %t202, { ptr, i64, i64 } { ptr @.str.4528, i64 57, i64 0 }) - br label %endif7053 -endif7053: - %t203 = load ptr, ptr %a1 - %t204 = load ptr, ptr %a1 - %t205 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4529, i64 12, 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.4530, i64 6, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } { ptr @.str.4531, 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 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4532, i64 18, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t203, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t227, %S.ast.Node %t228) - store { ptr, i64, i64 } %t215, ptr %a229 - call void @finch_str_drop(ptr %a229) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = extractvalue { ptr, i64, i64 } %t232, 1 - %t234 = icmp uge i64 0, %t233 - br i1 %t234, label %range7054, label %inrange7055 -range7054: - call void @finch_panic_index(ptr @.str.4533, i64 3914, i64 0, i64 %t233) - unreachable -inrange7055: - %t235 = extractvalue { ptr, i64, i64 } %t232, 0 - %t236 = getelementptr inbounds %S.ast.Type, ptr %t235, i64 0 - %t237 = load %S.ast.Type, ptr %t236 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - store %S.ast.Type %t240, ptr %a241 - store i1 false, ptr %a242 - %t243 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.4534, i64 6, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then7056, label %endif7058 -then7056: - %t249 = load ptr, ptr %a1 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic7059, label %ok7060 -panic7059: - call void @finch_panic(ptr @.str.4535, i64 3917, ptr @.str.4536) - unreachable -ok7060: - %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 16 - %t252 = load ptr, ptr %a1 - %t253 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 3 - %t254 = load { ptr, i64, i64 }, ptr %t253 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 2 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = call i64 @finch.gen.findStruct(ptr %t252, { ptr, i64, i64 } %t254, { ptr, i64, i64 } %t256) - %t258 = load { ptr, i64, i64 }, ptr %t251 - %t259 = extractvalue { ptr, i64, i64 } %t258, 1 - %t260 = icmp uge i64 %t257, %t259 - br i1 %t260, label %range7061, label %inrange7062 -range7061: - call void @finch_panic_index(ptr @.str.4537, i64 3917, i64 %t257, i64 %t259) - unreachable -inrange7062: - %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 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - store i64 -1, ptr %a265 - %t266 = load i64, ptr %t264 - %t267 = load ptr, ptr %t263 - store i64 0, ptr %a268 - br label %find.cond7063 -find.cond7063: - %t269 = load i64, ptr %a268 - %t270 = icmp slt i64 %t269, %t266 - br i1 %t270, label %find.body7064, label %find.end7067 -find.body7064: - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i64 %t269 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.4538, i64 5, i64 0 }, ptr %a274 - %t275 = call i32 @finch_str_eq(ptr %a273, ptr %a274) - %t276 = icmp ne i32 %t275, 0 - br i1 %t276, label %find.hit7065, label %find.next7066 -find.hit7065: - store i64 %t269, ptr %a265 - br label %find.end7067 -find.next7066: - %t277 = add i64 %t269, 1 - store i64 %t277, ptr %a268 - br label %find.cond7063 -find.end7067: - %t278 = load i64, ptr %a265 - %t279 = icmp sge i64 %t278, 0 - store i1 %t279, ptr %a242 - br label %endif7058 -endif7058: - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4539, 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.from7068 -logic.from7068: - br i1 %t285, label %logic.rhs7069, label %logic.end7070 -logic.rhs7069: - %t286 = load i1, ptr %a242 - %t287 = xor i1 %t286, true - br label %logic.rend7071 -logic.rend7071: - br label %logic.end7070 -logic.end7070: - %t288 = phi i1 [ false, %logic.from7068 ], [ %t287, %logic.rend7071 ] - br i1 %t288, label %then7072, label %endif7074 -then7072: - %t289 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t290 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t295, ptr %a296 - call void @finch.copy.S_ast_Type(ptr %a297, ptr %a296) - %t298 = load %S.ast.Type, ptr %a297 - %t299 = insertvalue %S.gen.Place %t294, %S.ast.Type %t298, 1 - %t300 = insertvalue %S.gen.Ref %t289, %S.gen.Place %t299, 1 - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t300 -endif7074: - %t301 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.4540, i64 6, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp eq i32 %t305, 0 - br i1 %t306, label %then7075, label %endif7077 -then7075: - %t307 = load ptr, ptr %a1 - %t308 = load %S.ast.Node, ptr %a2 - %t309 = load %S.ast.Type, ptr %a164 - %t310 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t309) - store { ptr, i64, i64 } { ptr @.str.4541, i64 2, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4542, i64 43, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - call void @finch.gen.fail(ptr %t307, %S.ast.Node %t308, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_drop(ptr %a321) - br label %endif7077 -endif7077: - %t322 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t323 = load { ptr, i64, i64 }, ptr %a187 - 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.gen.Place zeroinitializer, { ptr, i64, i64 } %t326, 0 - %t328 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t328, ptr %a329 - call void @finch.copy.S_ast_Type(ptr %a330, ptr %a329) - %t331 = load %S.ast.Type, ptr %a330 - %t332 = insertvalue %S.gen.Place %t327, %S.ast.Type %t331, 1 - %t333 = insertvalue %S.gen.Ref %t322, %S.gen.Place %t332, 1 - %t334 = load %S.gen.Ref, ptr %a157 - store %S.gen.Ref %t333, ptr %a157 - store %S.gen.Ref %t334, ptr %a335 - call void @finch.drop.S_gen_Ref(ptr %a335) - %t336 = load %S.ast.Type, ptr %a241 - 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 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t339, ptr %a164 - store %S.ast.Type %t340, ptr %a341 - call void @finch.drop.S_ast_Type(ptr %a341) - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - br label %endif7047 -endif7047: - %t342 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.4543, i64 5, i64 0 }, ptr %a345 - %t346 = call i32 @finch_str_eq(ptr %a344, ptr %a345) - %t347 = icmp ne i32 %t346, 0 - br i1 %t347, label %then7078, label %endif7080 -then7078: - %t348 = load i1, ptr %a3 - br i1 %t348, label %then7081, label %endif7083 -then7081: - %t349 = load ptr, ptr %a1 - %t350 = load %S.ast.Node, ptr %a2 - %t351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t352 = load { ptr, i64, i64 }, ptr %t351 - store { ptr, i64, i64 } { ptr @.str.4544, i64 1, 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.4545, i64 26, i64 0 }, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t356, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - call void @finch.gen.fail(ptr %t349, %S.ast.Node %t350, { ptr, i64, i64 } %t361) - store { ptr, i64, i64 } %t361, ptr %a362 - call void @finch_str_drop(ptr %a362) - br label %endif7083 -endif7083: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4546, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then7084, label %endif7086 -then7084: - %t369 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t370 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 4 - %t371 = load i64, ptr %t370 - call void @finch_str_from_int(ptr %a372, i64 %t371) - %t373 = load { ptr, i64, i64 }, ptr %a372 - %t374 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t373, 0 - %t375 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4547, i64 3, i64 0 }) - %t376 = insertvalue %S.gen.Val %t374, %S.ast.Type %t375, 1 - %t377 = insertvalue %S.gen.Val %t376, i1 true, 3 - %t378 = insertvalue %S.gen.Ref %t369, %S.gen.Val %t377, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t378 -endif7086: - %t379 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t380 = load { ptr, i64, i64 }, ptr %t379 - store { ptr, i64, i64 } %t380, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.4548, i64 3, i64 0 }, ptr %a382 - %t383 = call i32 @finch_str_eq(ptr %a381, ptr %a382) - %t384 = icmp eq i32 %t383, 0 - br i1 %t384, label %then7087, label %endif7089 -then7087: - %t385 = load ptr, ptr %a1 - %t386 = load %S.ast.Node, ptr %a2 - %t387 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t388 = load { ptr, i64, i64 }, ptr %t387 - store { ptr, i64, i64 } { ptr @.str.4549, i64 34, 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.4550, i64 1, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.fail(ptr %t385, %S.ast.Node %t386, { ptr, i64, i64 } %t397) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - br label %endif7089 -endif7089: - %t399 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t400 = load i1, ptr %t399 - %t401 = xor i1 %t400, true - br i1 %t401, label %then7090, label %endif7092 -then7090: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4551, i64 48, i64 0 }) - br label %endif7092 -endif7092: - %t404 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t405 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t406 = getelementptr inbounds %S.gen.Place, ptr %t405, i32 0, i32 0 - %t407 = load { ptr, i64, i64 }, ptr %t406 - store { ptr, i64, i64 } %t407, ptr %a408 - call void @finch_str_copy(ptr %a409, ptr %a408) - %t410 = load { ptr, i64, i64 }, ptr %a409 - %t411 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t410, 0 - %t412 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t413 = load { ptr, i64, i64 }, ptr %t412 - %t414 = extractvalue { ptr, i64, i64 } %t413, 1 - %t415 = icmp uge i64 0, %t414 - br i1 %t415, label %range7093, label %inrange7094 -range7093: - call void @finch_panic_index(ptr @.str.4552, i64 3941, i64 0, i64 %t414) - unreachable -inrange7094: - %t416 = extractvalue { ptr, i64, i64 } %t413, 0 - %t417 = getelementptr inbounds %S.ast.Type, ptr %t416, i64 0 - %t418 = load %S.ast.Type, ptr %t417 - %t419 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val %t411, %S.ast.Type %t419, 1 - %t421 = insertvalue %S.gen.Ref %t404, %S.gen.Val %t420, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t421 -endif7080: - %t422 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t423 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t423, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.4553, i64 5, i64 0 }, ptr %a425 - %t426 = call i32 @finch_str_eq(ptr %a424, ptr %a425) - %t427 = icmp ne i32 %t426, 0 - br label %logic.from7095 -logic.from7095: - br i1 %t427, label %logic.end7097, label %logic.rhs7096 -logic.rhs7096: - %t428 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.4554, i64 3, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.rend7098 -logic.rend7098: - br label %logic.end7097 -logic.end7097: - %t434 = phi i1 [ true, %logic.from7095 ], [ %t433, %logic.rend7098 ] - br label %logic.from7099 -logic.from7099: - br i1 %t434, label %logic.rhs7100, label %logic.end7101 -logic.rhs7100: - %t435 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t436, ptr %a437 - store { ptr, i64, i64 } { ptr @.str.4555, i64 3, i64 0 }, ptr %a438 - %t439 = call i32 @finch_str_eq(ptr %a437, ptr %a438) - %t440 = icmp ne i32 %t439, 0 - br label %logic.rend7102 -logic.rend7102: - br label %logic.end7101 -logic.end7101: - %t441 = phi i1 [ false, %logic.from7099 ], [ %t440, %logic.rend7102 ] - br i1 %t441, label %then7103, label %endif7105 -then7103: - %t442 = load i1, ptr %a3 - br i1 %t442, label %then7106, label %endif7108 -then7106: - %t443 = load ptr, ptr %a1 - %t444 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t443, %S.ast.Node %t444, { ptr, i64, i64 } { ptr @.str.4556, i64 30, i64 0 }) - br label %endif7108 -endif7108: - %t445 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t446 = load i1, ptr %t445 - %t447 = xor i1 %t446, true - br label %logic.from7109 -logic.from7109: - br i1 %t447, label %logic.rhs7110, label %logic.end7111 -logic.rhs7110: - %t448 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t449 = getelementptr inbounds %S.gen.Val, ptr %t448, i32 0, i32 2 - %t450 = load i1, ptr %t449 - br label %logic.rend7112 -logic.rend7112: - br label %logic.end7111 -logic.end7111: - %t451 = phi i1 [ false, %logic.from7109 ], [ %t450, %logic.rend7112 ] - br label %logic.from7113 -logic.from7113: - br i1 %t451, label %logic.rhs7114, label %logic.end7115 -logic.rhs7114: - %t452 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t453 = getelementptr inbounds %S.gen.Val, ptr %t452, i32 0, i32 0 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.4558, i64 1, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_starts(ptr %a455, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend7116 -logic.rend7116: - br label %logic.end7115 -logic.end7115: - %t460 = phi i1 [ false, %logic.from7113 ], [ %t459, %logic.rend7116 ] - br i1 %t460, label %then7117, label %endif7119 -then7117: - %t461 = load ptr, ptr %a1 - %t462 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t461, %S.ast.Node %t462, { ptr, i64, i64 } { ptr @.str.4559, i64 53, i64 0 }) - br label %endif7119 -endif7119: - %t463 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t464 = getelementptr inbounds %S.gen.Val, ptr %t463, i32 0, i32 0 - %t465 = load { ptr, i64, i64 }, ptr %t464 - store { ptr, i64, i64 } %t465, ptr %a466 - call void @finch_str_copy(ptr %a467, ptr %a466) - %t468 = load { ptr, i64, i64 }, ptr %a467 - store { ptr, i64, i64 } %t468, ptr %a469 - %t470 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t471 = load i1, ptr %t470 - br i1 %t471, label %then7120, label %endif7122 -then7120: - %t472 = load ptr, ptr %a1 - %t473 = load ptr, ptr %a1 - %t474 = load %S.ast.Type, ptr %a164 - %t475 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t473, %S.ast.Type %t474) - %t476 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t477 = getelementptr inbounds %S.gen.Place, ptr %t476, i32 0, i32 0 - %t478 = load { ptr, i64, i64 }, ptr %t477 - %t479 = call { ptr, i64, i64 } @finch.gen.load(ptr %t472, { ptr, i64, i64 } %t475, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t475, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t479, ptr %a469 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif7122 -endif7122: - %t483 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - store { ptr, i64, i64 } %t484, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.4560, i64 3, i64 0 }, ptr %a486 - %t487 = call i32 @finch_str_eq(ptr %a485, ptr %a486) - %t488 = icmp ne i32 %t487, 0 - br i1 %t488, label %then7123, label %endif7125 -then7123: - %t489 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t490 = load ptr, ptr %a1 - %t491 = load { ptr, i64, i64 }, ptr %a469 - %t492 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t490, { ptr, i64, i64 } %t491) - %t493 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t492, 0 - %t494 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4561, i64 4, i64 0 }) - %t495 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t494) - store %S.ast.Type %t494, ptr %a496 - call void @finch.drop.S_ast_Type(ptr %a496) - %t497 = insertvalue %S.gen.Val %t493, %S.ast.Type %t495, 1 - %t498 = insertvalue %S.gen.Ref %t489, %S.gen.Val %t497, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t498 -endif7125: - %t499 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t500 = load ptr, ptr %a1 - %t501 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4562, i64 31, i64 0 }, 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.4563, i64 3, i64 0 }, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t505, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - %t511 = call { ptr, i64, i64 } @finch.gen.op(ptr %t500, { ptr, i64, i64 } %t510) - store { ptr, i64, i64 } %t510, ptr %a512 - call void @finch_str_drop(ptr %a512) - %t513 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t511, 0 - %t514 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range7126, label %inrange7127 -range7126: - call void @finch_panic_index(ptr @.str.4564, i64 3959, i64 0, i64 %t516) - unreachable -inrange7127: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = load %S.ast.Type, ptr %t519 - %t521 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t520) - %t522 = insertvalue %S.gen.Val %t513, %S.ast.Type %t521, 1 - %t523 = insertvalue %S.gen.Ref %t499, %S.gen.Val %t522, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t523 -endif7105: - %t524 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.4565, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br label %logic.from7128 -logic.from7128: - br i1 %t529, label %logic.end7130, label %logic.rhs7129 -logic.rhs7129: - %t530 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t531 = load { ptr, i64, i64 }, ptr %t530 - store { ptr, i64, i64 } %t531, ptr %a532 - store { ptr, i64, i64 } { ptr @.str.4566, i64 3, i64 0 }, ptr %a533 - %t534 = call i32 @finch_str_eq(ptr %a532, ptr %a533) - %t535 = icmp ne i32 %t534, 0 - br label %logic.rend7131 -logic.rend7131: - br label %logic.end7130 -logic.end7130: - %t536 = phi i1 [ true, %logic.from7128 ], [ %t535, %logic.rend7131 ] - br label %logic.from7132 -logic.from7132: - br i1 %t536, label %logic.end7134, label %logic.rhs7133 -logic.rhs7133: - %t537 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.4567, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br label %logic.rend7135 -logic.rend7135: - br label %logic.end7134 -logic.end7134: - %t543 = phi i1 [ true, %logic.from7132 ], [ %t542, %logic.rend7135 ] - br i1 %t543, label %then7136, label %endif7138 -then7136: - %t544 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t545, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.4568, i64 3, i64 0 }, ptr %a547 - %t548 = call i32 @finch_str_eq(ptr %a546, ptr %a547) - %t549 = icmp eq i32 %t548, 0 - br i1 %t549, label %then7139, label %endif7141 -then7139: - %t550 = load ptr, ptr %a1 - %t551 = load %S.ast.Node, ptr %a2 - %t552 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t553 = load { ptr, i64, i64 }, ptr %t552 - store { ptr, i64, i64 } { ptr @.str.4569, i64 37, i64 0 }, ptr %a555 - store { ptr, i64, i64 } %t553, ptr %a556 - call void @finch_str_concat(ptr %a554, ptr %a555, ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t557, ptr %a559 - store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.gen.fail(ptr %t550, %S.ast.Node %t551, { ptr, i64, i64 } %t562) - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif7141 -endif7141: - %t564 = load i1, ptr %a3 - br i1 %t564, label %then7142, label %endif7144 -then7142: - %t565 = load ptr, ptr %a1 - %t566 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t565, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.4571, i64 48, i64 0 }) - br label %endif7144 -endif7144: - %t567 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t568 = load i1, ptr %t567 - br i1 %t568, label %then7145, label %endif7147 -then7145: - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a164 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - store { ptr, i64, i64 } { ptr @.str.4572, i64 23, i64 0 }, ptr %a574 - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - store { ptr, i64, i64 } %t577, ptr %a579 - store { ptr, i64, i64 } { ptr @.str.4573, i64 6, i64 0 }, ptr %a580 - call void @finch_str_concat(ptr %a578, ptr %a579, ptr %a580) - store { ptr, i64, i64 } %t577, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = load { ptr, i64, i64 }, ptr %a578 - %t583 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t584 = getelementptr inbounds %S.gen.Place, ptr %t583, i32 0, i32 0 - %t585 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t582, ptr %a587 - store { ptr, i64, i64 } %t585, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t582, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - store { ptr, i64, i64 } %t590, ptr %a592 - store { ptr, i64, i64 } { ptr @.str.4574, i64 14, i64 0 }, ptr %a593 - call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) - store { ptr, i64, i64 } %t590, ptr %a594 - call void @finch_str_drop(ptr %a594) - %t595 = load { ptr, i64, i64 }, ptr %a591 - %t596 = call { ptr, i64, i64 } @finch.gen.op(ptr %t569, { ptr, i64, i64 } %t595) - store { ptr, i64, i64 } %t595, ptr %a597 - call void @finch_str_drop(ptr %a597) - store { ptr, i64, i64 } %t596, ptr %a598 - %t599 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t600 = load ptr, ptr %a1 - %t601 = load { ptr, i64, i64 }, ptr %a598 - %t602 = call { ptr, i64, i64 } @finch.gen.load(ptr %t600, { ptr, i64, i64 } { ptr @.str.4575, i64 3, i64 0 }, { ptr, i64, i64 } %t601) - %t603 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t602, 0 - %t604 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4576, i64 3, i64 0 }) - %t605 = insertvalue %S.gen.Val %t603, %S.ast.Type %t604, 1 - %t606 = insertvalue %S.gen.Ref %t599, %S.gen.Val %t605, 2 - call void @finch_str_drop(ptr %a598) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t606 -endif7147: - %t607 = load ptr, ptr %a1 - %t608 = load ptr, ptr %a1 - %t609 = load %S.ast.Type, ptr %a164 - %t610 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t608, %S.ast.Type %t609) - store { ptr, i64, i64 } { ptr @.str.4577, i64 13, i64 0 }, ptr %a612 - store { ptr, i64, i64 } %t610, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - store { ptr, i64, i64 } %t615, ptr %a617 - store { ptr, i64, i64 } { ptr @.str.4578, i64 1, i64 0 }, ptr %a618 - call void @finch_str_concat(ptr %a616, ptr %a617, ptr %a618) - store { ptr, i64, i64 } %t615, ptr %a619 - call void @finch_str_drop(ptr %a619) - %t620 = load { ptr, i64, i64 }, ptr %a616 - %t621 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t622 = getelementptr inbounds %S.gen.Val, ptr %t621, i32 0, i32 0 - %t623 = load { ptr, i64, i64 }, ptr %t622 - store { ptr, i64, i64 } %t620, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t620, ptr %a627 - call void @finch_str_drop(ptr %a627) - %t628 = load { ptr, i64, i64 }, ptr %a624 - store { ptr, i64, i64 } %t628, ptr %a630 - store { ptr, i64, i64 } { ptr @.str.4579, i64 3, i64 0 }, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t628, ptr %a632 - call void @finch_str_drop(ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a629 - %t634 = call { ptr, i64, i64 } @finch.gen.op(ptr %t607, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t633, ptr %a635 - call void @finch_str_drop(ptr %a635) - store { ptr, i64, i64 } %t634, ptr %a636 - %t637 = load ptr, ptr %a1 - %t638 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t639 = load %S.gen.Val, ptr %t638 - call void @finch.gen.release(ptr %t637, %S.gen.Val %t639) - %t640 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t641 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t641, ptr %a642 - call void @finch_str_copy(ptr %a643, ptr %a642) - %t644 = load { ptr, i64, i64 }, ptr %a643 - %t645 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t644, 0 - %t646 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4580, i64 3, i64 0 }) - %t647 = insertvalue %S.gen.Val %t645, %S.ast.Type %t646, 1 - %t648 = insertvalue %S.gen.Ref %t640, %S.gen.Val %t647, 2 - call void @finch_str_drop(ptr %a636) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t648 -endif7138: - %t649 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t650 = load { ptr, i64, i64 }, ptr %t649 - store { ptr, i64, i64 } %t650, ptr %a651 - store { ptr, i64, i64 } { ptr @.str.4581, i64 6, i64 0 }, ptr %a652 - %t653 = call i32 @finch_str_eq(ptr %a651, ptr %a652) - %t654 = icmp eq i32 %t653, 0 - br i1 %t654, label %then7148, label %endif7150 -then7148: - %t655 = load ptr, ptr %a1 - %t656 = load %S.ast.Node, ptr %a2 - %t657 = load %S.ast.Type, ptr %a164 - %t658 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t657) - store { ptr, i64, i64 } %t658, ptr %a660 - store { ptr, i64, i64 } { ptr @.str.4582, i64 21, i64 0 }, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t658, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - %t664 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } %t663, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t663, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t670, ptr %a672 - store { ptr, i64, i64 } { ptr @.str.4583, i64 2, i64 0 }, ptr %a673 - call void @finch_str_concat(ptr %a671, ptr %a672, ptr %a673) - store { ptr, i64, i64 } %t670, ptr %a674 - call void @finch_str_drop(ptr %a674) - %t675 = load { ptr, i64, i64 }, ptr %a671 - call void @finch.gen.fail(ptr %t655, %S.ast.Node %t656, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t675, ptr %a676 - call void @finch_str_drop(ptr %a676) - br label %endif7150 -endif7150: - %t677 = load ptr, ptr %a1 - %t678 = icmp eq ptr %t677, null - br i1 %t678, label %panic7151, label %ok7152 -panic7151: - call void @finch_panic(ptr @.str.4584, i64 3979, ptr @.str.4585) - unreachable -ok7152: - %t679 = getelementptr inbounds %S.gen.Gen, ptr %t677, i32 0, i32 16 - %t680 = load ptr, ptr %a1 - %t681 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 3 - %t682 = load { ptr, i64, i64 }, ptr %t681 - %t683 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 2 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findStruct(ptr %t680, { ptr, i64, i64 } %t682, { ptr, i64, i64 } %t684) - %t686 = load { ptr, i64, i64 }, ptr %t679 - %t687 = extractvalue { ptr, i64, i64 } %t686, 1 - %t688 = icmp uge i64 %t685, %t687 - br i1 %t688, label %range7153, label %inrange7154 -range7153: - call void @finch_panic_index(ptr @.str.4586, i64 3979, i64 %t685, i64 %t687) - unreachable -inrange7154: - %t689 = extractvalue { ptr, i64, i64 } %t686, 0 - %t690 = getelementptr inbounds %S.gen.StructDef, ptr %t689, i64 %t685 - %t691 = load %S.gen.StructDef, ptr %t690 - store %S.gen.StructDef %t691, ptr %a692 - call void @finch.copy.S_gen_StructDef(ptr %a693, ptr %a692) - %t694 = load %S.gen.StructDef, ptr %a693 - store %S.gen.StructDef %t694, ptr %a695 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t697 = getelementptr inbounds { ptr, i64, i64 }, ptr %t696, i32 0, i32 1 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t697 - %t702 = load ptr, ptr %t696 - store i64 0, ptr %a703 - br label %find.cond7155 -find.cond7155: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body7156, label %find.end7159 -find.body7156: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit7157, label %find.next7158 -find.hit7157: - store i64 %t704, ptr %a700 - br label %find.end7159 -find.next7158: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond7155 -find.end7159: - %t713 = load i64, ptr %a700 - store i64 %t713, ptr %a714 - %t715 = load i64, ptr %a714 - %t716 = icmp slt i64 %t715, 0 - br i1 %t716, label %then7160, label %endif7162 -then7160: - %t717 = load ptr, ptr %a1 - %t718 = load %S.ast.Node, ptr %a2 - %t719 = load %S.ast.Type, ptr %a164 - %t720 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t719) - store { ptr, i64, i64 } { ptr @.str.4587, i64 11, i64 0 }, ptr %a722 - store { ptr, i64, i64 } %t720, ptr %a723 - call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723) - store { ptr, i64, i64 } %t720, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t725, ptr %a727 - store { ptr, i64, i64 } { ptr @.str.4588, i64 15, i64 0 }, ptr %a728 - call void @finch_str_concat(ptr %a726, ptr %a727, ptr %a728) - store { ptr, i64, i64 } %t725, ptr %a729 - call void @finch_str_drop(ptr %a729) - %t730 = load { ptr, i64, i64 }, ptr %a726 - %t731 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t730, ptr %a734 - store { ptr, i64, i64 } %t732, ptr %a735 - call void @finch_str_concat(ptr %a733, ptr %a734, ptr %a735) - store { ptr, i64, i64 } %t730, ptr %a736 - call void @finch_str_drop(ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a733 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.4589, i64 11, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t744 = getelementptr inbounds { ptr, i64, i64 }, ptr %t743, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4590, i64 2, i64 0 }, ptr %a745 - call void @finch_str_join(ptr %a746, ptr %t743, ptr %a745) - %t747 = load { ptr, i64, i64 }, ptr %a746 - store { ptr, i64, i64 } %t742, ptr %a749 - store { ptr, i64, i64 } %t747, ptr %a750 - call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750) - store { ptr, i64, i64 } %t742, ptr %a751 - call void @finch_str_drop(ptr %a751) - store { ptr, i64, i64 } %t747, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a748 - store { ptr, i64, i64 } %t753, ptr %a755 - store { ptr, i64, i64 } { ptr @.str.4591, i64 1, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - call void @finch.gen.fail(ptr %t717, %S.ast.Node %t718, { ptr, i64, i64 } %t758) - store { ptr, i64, i64 } %t758, ptr %a759 - call void @finch_str_drop(ptr %a759) - br label %endif7162 -endif7162: - %t760 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 12 - %t761 = load i64, ptr %a714 - %t762 = load { ptr, i64, i64 }, ptr %t760 - %t763 = extractvalue { ptr, i64, i64 } %t762, 1 - %t764 = icmp uge i64 %t761, %t763 - br i1 %t764, label %range7163, label %inrange7164 -range7163: - call void @finch_panic_index(ptr @.str.4592, i64 3984, i64 %t761, i64 %t763) - unreachable -inrange7164: - %t765 = extractvalue { ptr, i64, i64 } %t762, 0 - %t766 = getelementptr inbounds %S.ast.Type, ptr %t765, i64 %t761 - %t767 = load %S.ast.Type, ptr %t766 - store %S.ast.Type %t767, ptr %a768 - call void @finch.copy.S_ast_Type(ptr %a769, ptr %a768) - %t770 = load %S.ast.Type, ptr %a769 - store %S.ast.Type %t770, ptr %a771 - %t772 = load ptr, ptr %a1 - %t773 = load %S.ast.Node, ptr %a2 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t775 = load i64, ptr %t774 - %t776 = add i64 %t775, 1 - %t777 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t778 = getelementptr inbounds { ptr, i64, i64 }, ptr %t777, i32 0, i32 1 - %t779 = load i64, ptr %t778 - %t780 = load %S.ast.Type, ptr %a771 - %t781 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t780) - store { ptr, i64, i64 } { ptr @.str.4593, i64 9, i64 0 }, ptr %a783 - store { ptr, i64, i64 } %t781, ptr %a784 - call void @finch_str_concat(ptr %a782, ptr %a783, ptr %a784) - store { ptr, i64, i64 } %t781, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a782 - store { ptr, i64, i64 } %t786, ptr %a788 - store { ptr, i64, i64 } { ptr @.str.4594, i64 1, i64 0 }, ptr %a789 - call void @finch_str_concat(ptr %a787, ptr %a788, ptr %a789) - store { ptr, i64, i64 } %t786, ptr %a790 - call void @finch_str_drop(ptr %a790) - %t791 = load { ptr, i64, i64 }, ptr %a787 - %t792 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t793 = load { ptr, i64, i64 }, ptr %t792 - store { ptr, i64, i64 } %t791, ptr %a795 - store { ptr, i64, i64 } %t793, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t791, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - store { ptr, i64, i64 } %t798, ptr %a800 - store { ptr, i64, i64 } { ptr @.str.4595, i64 4, i64 0 }, ptr %a801 - call void @finch_str_concat(ptr %a799, ptr %a800, ptr %a801) - store { ptr, i64, i64 } %t798, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a799 - call void @finch.gen.noteRef(ptr %t772, %S.ast.Node %t773, i64 %t776, i64 %t779, { ptr, i64, i64 } %t803, { ptr, i64, i64 } { ptr @.str.4596, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t803, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t806 = load i1, ptr %t805 - br i1 %t806, label %then7165, label %endif7167 -then7165: - %t807 = load ptr, ptr %a1 - %t808 = load ptr, ptr %a1 - %t809 = load %S.ast.Type, ptr %a164 - %t810 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t808, %S.ast.Type %t809) - store { ptr, i64, i64 } { ptr @.str.4597, i64 23, i64 0 }, ptr %a812 - store { ptr, i64, i64 } %t810, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - store { ptr, i64, i64 } %t815, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.4598, i64 6, i64 0 }, ptr %a818 - call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818) - store { ptr, i64, i64 } %t815, ptr %a819 - call void @finch_str_drop(ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a816 - %t821 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t822 = getelementptr inbounds %S.gen.Place, ptr %t821, i32 0, i32 0 - %t823 = load { ptr, i64, i64 }, ptr %t822 - store { ptr, i64, i64 } %t820, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t820, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.4599, i64 13, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t835 = load i64, ptr %a714 - %t836 = load { ptr, i64, i64 }, ptr %t834 - %t837 = extractvalue { ptr, i64, i64 } %t836, 1 - %t838 = icmp uge i64 %t835, %t837 - br i1 %t838, label %range7168, label %inrange7169 -range7168: - call void @finch_panic_index(ptr @.str.4600, i64 3987, i64 %t835, i64 %t837) - unreachable -inrange7169: - %t839 = extractvalue { ptr, i64, i64 } %t836, 0 - %t840 = getelementptr inbounds i64, ptr %t839, i64 %t835 - %t841 = load i64, ptr %t840 - call void @finch_str_from_int(ptr %a842, i64 %t841) - %t843 = load { ptr, i64, i64 }, ptr %a842 - store { ptr, i64, i64 } %t833, ptr %a845 - store { ptr, i64, i64 } %t843, ptr %a846 - call void @finch_str_concat(ptr %a844, ptr %a845, ptr %a846) - store { ptr, i64, i64 } %t833, ptr %a847 - call void @finch_str_drop(ptr %a847) - store { ptr, i64, i64 } %t843, ptr %a848 - call void @finch_str_drop(ptr %a848) - %t849 = load { ptr, i64, i64 }, ptr %a844 - %t850 = call { ptr, i64, i64 } @finch.gen.op(ptr %t807, { ptr, i64, i64 } %t849) - store { ptr, i64, i64 } %t849, ptr %a851 - call void @finch_str_drop(ptr %a851) - store { ptr, i64, i64 } %t850, ptr %a852 - %t853 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t854 = load { ptr, i64, i64 }, ptr %a852 - store { ptr, i64, i64 } %t854, ptr %a855 - call void @finch_str_copy(ptr %a856, ptr %a855) - %t857 = load { ptr, i64, i64 }, ptr %a856 - %t858 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t857, 0 - %t859 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t859, ptr %a860 - call void @finch.copy.S_ast_Type(ptr %a861, ptr %a860) - %t862 = load %S.ast.Type, ptr %a861 - %t863 = insertvalue %S.gen.Place %t858, %S.ast.Type %t862, 1 - %t864 = insertvalue %S.gen.Ref %t853, %S.gen.Place %t863, 1 - call void @finch_str_drop(ptr %a852) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t864 -endif7167: - %t865 = load ptr, ptr %a1 - %t866 = load ptr, ptr %a1 - %t867 = load %S.ast.Type, ptr %a164 - %t868 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t866, %S.ast.Type %t867) - store { ptr, i64, i64 } { ptr @.str.4601, i64 13, i64 0 }, ptr %a870 - store { ptr, i64, i64 } %t868, ptr %a871 - call void @finch_str_concat(ptr %a869, ptr %a870, ptr %a871) - store { ptr, i64, i64 } %t868, ptr %a872 - call void @finch_str_drop(ptr %a872) - %t873 = load { ptr, i64, i64 }, ptr %a869 - store { ptr, i64, i64 } %t873, ptr %a875 - store { ptr, i64, i64 } { ptr @.str.4602, i64 1, i64 0 }, ptr %a876 - call void @finch_str_concat(ptr %a874, ptr %a875, ptr %a876) - store { ptr, i64, i64 } %t873, ptr %a877 - call void @finch_str_drop(ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a874 - %t879 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t880 = getelementptr inbounds %S.gen.Val, ptr %t879, i32 0, i32 0 - %t881 = load { ptr, i64, i64 }, ptr %t880 - store { ptr, i64, i64 } %t878, ptr %a883 - store { ptr, i64, i64 } %t881, ptr %a884 - call void @finch_str_concat(ptr %a882, ptr %a883, ptr %a884) - store { ptr, i64, i64 } %t878, ptr %a885 - call void @finch_str_drop(ptr %a885) - %t886 = load { ptr, i64, i64 }, ptr %a882 - store { ptr, i64, i64 } %t886, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.4603, i64 2, i64 0 }, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - store { ptr, i64, i64 } %t886, ptr %a890 - call void @finch_str_drop(ptr %a890) - %t891 = load { ptr, i64, i64 }, ptr %a887 - %t892 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t893 = load i64, ptr %a714 - %t894 = load { ptr, i64, i64 }, ptr %t892 - %t895 = extractvalue { ptr, i64, i64 } %t894, 1 - %t896 = icmp uge i64 %t893, %t895 - br i1 %t896, label %range7170, label %inrange7171 -range7170: - call void @finch_panic_index(ptr @.str.4604, i64 3990, i64 %t893, i64 %t895) - unreachable -inrange7171: - %t897 = extractvalue { ptr, i64, i64 } %t894, 0 - %t898 = getelementptr inbounds i64, ptr %t897, i64 %t893 - %t899 = load i64, ptr %t898 - call void @finch_str_from_int(ptr %a900, i64 %t899) - %t901 = load { ptr, i64, i64 }, ptr %a900 - store { ptr, i64, i64 } %t891, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - store { ptr, i64, i64 } %t891, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t901, ptr %a906 - call void @finch_str_drop(ptr %a906) - %t907 = load { ptr, i64, i64 }, ptr %a902 - %t908 = call { ptr, i64, i64 } @finch.gen.op(ptr %t865, { ptr, i64, i64 } %t907) - store { ptr, i64, i64 } %t907, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t908, ptr %a910 - %t911 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t911, ptr %a912 - call void @finch_str_copy(ptr %a913, ptr %a912) - %t914 = load { ptr, i64, i64 }, ptr %a913 - %t915 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t914, 0 - %t916 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t916, ptr %a917 - call void @finch.copy.S_ast_Type(ptr %a918, ptr %a917) - %t919 = load %S.ast.Type, ptr %a918 - %t920 = insertvalue %S.gen.Val %t915, %S.ast.Type %t919, 1 - store %S.gen.Val %t920, ptr %a921 - %t922 = load ptr, ptr %a1 - %t923 = load %S.ast.Type, ptr %a771 - %t924 = call i1 @finch.gen.owning(ptr %t922, %S.ast.Type %t923) - br label %logic.from7172 -logic.from7172: - br i1 %t924, label %logic.rhs7173, label %logic.end7174 -logic.rhs7173: - %t925 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t926 = getelementptr inbounds %S.gen.Val, ptr %t925, i32 0, i32 2 - %t927 = load i1, ptr %t926 - br label %logic.rend7175 -logic.rend7175: - br label %logic.end7174 -logic.end7174: - %t928 = phi i1 [ false, %logic.from7172 ], [ %t927, %logic.rend7175 ] - br i1 %t928, label %then7176, label %endif7178 -then7176: - %t929 = load ptr, ptr %a1 - %t930 = load { ptr, i64, i64 }, ptr %a910 - %t931 = load %S.ast.Type, ptr %a771 - %t932 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t929, { ptr, i64, i64 } %t930, %S.ast.Type %t931) - %t933 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t932, 0 - %t934 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t934, ptr %a935 - call void @finch.copy.S_ast_Type(ptr %a936, ptr %a935) - %t937 = load %S.ast.Type, ptr %a936 - %t938 = insertvalue %S.gen.Val %t933, %S.ast.Type %t937, 1 - %t939 = insertvalue %S.gen.Val %t938, i1 true, 2 - %t940 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t939, ptr %a921 - store %S.gen.Val %t940, ptr %a941 - call void @finch.drop.S_gen_Val(ptr %a941) - br label %endif7178 -endif7178: - %t942 = load ptr, ptr %a1 - %t943 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t944 = load %S.gen.Val, ptr %t943 - call void @finch.gen.release(ptr %t942, %S.gen.Val %t944) - %t945 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t946 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t946, ptr %a947 - call void @finch.copy.S_gen_Val(ptr %a948, ptr %a947) - %t949 = load %S.gen.Val, ptr %a948 - %t950 = insertvalue %S.gen.Ref %t945, %S.gen.Val %t949, 2 - call void @finch.drop.S_gen_Val(ptr %a921) - call void @finch_str_drop(ptr %a910) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t950 -} - -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 - %a20 = alloca i64, align 16 - %a32 = alloca %S.gen.Ref, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range7179, label %inrange7180 -range7179: - call void @finch_panic_index(ptr @.str.4605, i64 4000, i64 0, i64 %t7) - unreachable -inrange7180: - %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 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic7181, label %ok7182 -panic7181: - call void @finch_panic(ptr @.str.4606, i64 4001, ptr @.str.4607) - unreachable -ok7182: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 11 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - %t19 = load i64, ptr %t18 - store i64 %t19, ptr %a20 - %t21 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 - %t22 = load i1, ptr %t21 - %t23 = xor i1 %t22, true - br i1 %t23, label %then7183, label %endif7185 -then7183: - %t24 = load ptr, ptr %a1 - %t25 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 - %t26 = load %S.gen.Val, ptr %t25 - call void @finch.gen.hold(ptr %t24, %S.gen.Val %t26) - br label %endif7185 -endif7185: - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Node, ptr %a2 - %t29 = load %S.gen.Ref, ptr %a14 - %t30 = load i1, ptr %a3 - %t31 = call %S.gen.Ref @finch.gen.indexOf(ptr %t27, %S.ast.Node %t28, %S.gen.Ref %t29, i1 %t30) - store %S.gen.Ref %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load i64, ptr %a20 - call void @finch.gen.heldEnd(ptr %t33, i64 %t34) - %t35 = load %S.gen.Ref, ptr %a32 - call void @finch.drop.S_gen_Ref(ptr %a14) - ret %S.gen.Ref %t35 -} - -define internal %S.gen.Ref @finch.gen.indexOf(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, i1 %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca %S.gen.Ref, align 16 - %a4 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a9 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a180 = alloca %S.ast.Type, align 16 - %a182 = alloca %S.ast.Type, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca %S.ast.Type, align 16 - %a263 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a386 = alloca %S.ast.Type, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca %S.ast.Type, align 16 - %a405 = alloca %S.ast.Type, align 16 - %a408 = alloca %S.gen.Val, align 16 - %a422 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.ast.Type, align 16 - %a428 = alloca %S.gen.Val, align 16 - %a434 = alloca %S.gen.Val, align 16 - %a435 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - store i1 %p3, ptr %a4 - %t5 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t6 = getelementptr inbounds %S.gen.Val, ptr %t5, i32 0, i32 1 - %t7 = load %S.ast.Type, ptr %t6 - store %S.ast.Type %t7, ptr %a8 - call void @finch.copy.S_ast_Type(ptr %a9, ptr %a8) - %t10 = load %S.ast.Type, ptr %a9 - store %S.ast.Type %t10, ptr %a11 - %t12 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t13 = load i1, ptr %t12 - br i1 %t13, label %then7186, label %endif7188 -then7186: - %t14 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t15 = getelementptr inbounds %S.gen.Place, ptr %t14, i32 0, i32 1 - %t16 = load %S.ast.Type, ptr %t15 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = load %S.ast.Type, ptr %a11 - store %S.ast.Type %t19, ptr %a11 - store %S.ast.Type %t20, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - br label %endif7188 -endif7188: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.4608, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then7189, label %endif7191 -then7189: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - %t30 = load %S.gen.Ref, ptr %a3 - %t31 = load %S.ast.Type, ptr %a11 - %t32 = load i1, ptr %a4 - %t33 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t28, %S.ast.Node %t29, %S.gen.Ref %t30, %S.ast.Type %t31, i1 %t32) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t33 -endif7191: - %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 %range7192, label %inrange7193 -range7192: - call void @finch_panic_index(ptr @.str.4609, i64 4018, i64 1, i64 %t38) - unreachable -inrange7193: - %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.4610, 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 %range7194, label %inrange7195 -range7194: - call void @finch_panic_index(ptr @.str.4611, i64 4018, i64 1, i64 %t47) - unreachable -inrange7195: - %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.4612, i64 8, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4613, i64 5, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then7196, label %endif7198 -then7196: - store { ptr, i64, i64 } { ptr @.str.4614, i64 0, i64 0 }, ptr %a67 - %t68 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t69 = load i1, ptr %t68 - br i1 %t69, label %then7199, label %else7200 -then7199: - %t70 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t71 = getelementptr inbounds %S.gen.Place, ptr %t70, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_copy(ptr %a74, ptr %a73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - %t76 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t75, ptr %a67 - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif7201 -else7200: - %t78 = load ptr, ptr %a1 - %t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t80 = load %S.gen.Val, ptr %t79 - %t81 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t78, %S.gen.Val %t80) - %t82 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t81, ptr %a67 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif7201 -endif7201: - %t84 = load ptr, ptr %a1 - %t85 = load { ptr, i64, i64 }, ptr %a60 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 4 - %t87 = load i64, ptr %t86 - call void @finch_str_from_int(ptr %a88, i64 %t87) - %t89 = load { ptr, i64, i64 }, ptr %a88 - %t90 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t84, { ptr, i64, i64 } %t85, { ptr, i64, i64 } %t89, %S.ast.Node %t90) - store { ptr, i64, i64 } %t89, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Type, ptr %a11 - %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4615, i64 23, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4616, i64 6, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t105, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t105, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4617, i64 13, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t122) - store { ptr, i64, i64 } %t122, ptr %a124 - call void @finch_str_drop(ptr %a124) - store { ptr, i64, i64 } %t123, ptr %a125 - %t126 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t127 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t130, 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t133 = load { ptr, i64, i64 }, ptr %t132 - %t134 = extractvalue { ptr, i64, i64 } %t133, 1 - %t135 = icmp uge i64 0, %t134 - br i1 %t135, label %range7202, label %inrange7203 -range7202: - call void @finch_panic_index(ptr @.str.4618, i64 4028, i64 0, i64 %t134) - unreachable -inrange7203: - %t136 = extractvalue { ptr, i64, i64 } %t133, 0 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 - %t138 = load %S.ast.Type, ptr %t137 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Place %t131, %S.ast.Type %t141, 1 - %t143 = insertvalue %S.gen.Ref %t126, %S.gen.Place %t142, 1 - call void @finch_str_drop(ptr %a125) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t143 -endif7198: - %t144 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t145 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t145, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4619, i64 3, i64 0 }, ptr %a147 - %t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147) - %t149 = icmp ne i32 %t148, 0 - br i1 %t149, label %then7204, label %endif7206 -then7204: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = icmp eq i64 %t152, 0 - br i1 %t153, label %then7207, label %endif7209 -then7207: - %t154 = load ptr, ptr %a1 - %t155 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } { ptr @.str.4620, i64 57, i64 0 }) - br label %endif7209 -endif7209: - %t156 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t157 = getelementptr inbounds %S.gen.Val, ptr %t156, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_copy(ptr %a160, ptr %a159) - %t161 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t161, ptr %a162 - %t163 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t164 = load i1, ptr %t163 - br i1 %t164, label %then7210, label %endif7212 -then7210: - %t165 = load ptr, ptr %a1 - %t166 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t167 = getelementptr inbounds %S.gen.Place, ptr %t166, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t165, { ptr, i64, i64 } { ptr @.str.4621, i64 3, i64 0 }, { ptr, i64, i64 } %t168) - %t170 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t169, ptr %a162 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7212 -endif7212: - %t172 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t173 = load { ptr, i64, i64 }, ptr %t172 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 0, %t174 - br i1 %t175, label %range7213, label %inrange7214 -range7213: - call void @finch_panic_index(ptr @.str.4622, i64 4038, i64 0, i64 %t174) - unreachable -inrange7214: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds %S.ast.Type, ptr %t176, i64 0 - %t178 = load %S.ast.Type, ptr %t177 - store %S.ast.Type %t178, ptr %a179 - call void @finch.copy.S_ast_Type(ptr %a180, ptr %a179) - %t181 = load %S.ast.Type, ptr %a180 - store %S.ast.Type %t181, ptr %a182 - %t183 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t184 = load ptr, ptr %a1 - %t185 = load ptr, ptr %a1 - %t186 = load %S.ast.Type, ptr %a182 - %t187 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t186) - store { ptr, i64, i64 } { ptr @.str.4623, i64 23, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4624, i64 6, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.4625, i64 6, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t218 = load %S.ast.Type, ptr %a182 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t183, %S.gen.Place %t222, 1 - call void @finch.drop.S_ast_Type(ptr %a182) - call void @finch_str_drop(ptr %a162) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t223 -endif7206: - %t224 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t225, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4626, i64 5, i64 0 }, ptr %a227 - %t228 = call i32 @finch_str_eq(ptr %a226, ptr %a227) - %t229 = icmp eq i32 %t228, 0 - br label %logic.from7215 -logic.from7215: - br i1 %t229, label %logic.rhs7216, label %logic.end7217 -logic.rhs7216: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4627, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp eq i32 %t234, 0 - br label %logic.rend7218 -logic.rend7218: - br label %logic.end7217 -logic.end7217: - %t236 = phi i1 [ false, %logic.from7215 ], [ %t235, %logic.rend7218 ] - br i1 %t236, label %then7219, label %endif7221 -then7219: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = load %S.ast.Type, ptr %a11 - %t240 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t239) - store { ptr, i64, i64 } { ptr @.str.4628, i64 46, i64 0 }, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7221 -endif7221: - %t247 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4629, i64 4, i64 0 }) - store %S.ast.Type %t247, ptr %a248 - %t249 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4630, i64 5, i64 0 }, ptr %a252 - %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) - %t254 = icmp ne i32 %t253, 0 - br i1 %t254, label %then7222, label %endif7224 -then7222: - %t255 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = extractvalue { ptr, i64, i64 } %t256, 1 - %t258 = icmp uge i64 0, %t257 - br i1 %t258, label %range7225, label %inrange7226 -range7225: - call void @finch_panic_index(ptr @.str.4631, i64 4046, i64 0, i64 %t257) - unreachable -inrange7226: - %t259 = extractvalue { ptr, i64, i64 } %t256, 0 - %t260 = getelementptr inbounds %S.ast.Type, ptr %t259, i64 0 - %t261 = load %S.ast.Type, ptr %t260 - store %S.ast.Type %t261, ptr %a262 - call void @finch.copy.S_ast_Type(ptr %a263, ptr %a262) - %t264 = load %S.ast.Type, ptr %a263 - %t265 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t264, ptr %a248 - store %S.ast.Type %t265, ptr %a266 - call void @finch.drop.S_ast_Type(ptr %a266) - br label %endif7224 -endif7224: - %t267 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4632, i64 3, i64 0 }, ptr %a270 - %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) - %t272 = icmp ne i32 %t271, 0 - br label %logic.from7227 -logic.from7227: - br i1 %t272, label %logic.rhs7228, label %logic.end7229 -logic.rhs7228: - %t273 = load i1, ptr %a4 - br label %logic.rend7230 -logic.rend7230: - br label %logic.end7229 -logic.end7229: - %t274 = phi i1 [ false, %logic.from7227 ], [ %t273, %logic.rend7230 ] - br i1 %t274, label %then7231, label %endif7233 -then7231: - %t275 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t276 = load i1, ptr %t275 - %t277 = xor i1 %t276, true - br i1 %t277, label %then7234, label %endif7236 -then7234: - %t278 = load ptr, ptr %a1 - %t279 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.4633, i64 44, i64 0 }) - br label %endif7236 -endif7236: - %t280 = load ptr, ptr %a1 - %t281 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t282 = getelementptr inbounds %S.gen.Place, ptr %t281, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - store { ptr, i64, i64 } { ptr @.str.4634, i64 29, i64 0 }, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t287, ptr %a289 - store { ptr, i64, i64 } { ptr @.str.4635, i64 1, i64 0 }, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t287, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.emit(ptr %t280, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_drop(ptr %a293) - br label %endif7233 -endif7233: - %t294 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t295 = getelementptr inbounds %S.gen.Val, ptr %t294, i32 0, i32 0 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_copy(ptr %a298, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t299, ptr %a300 - %t301 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t302 = load i1, ptr %t301 - br i1 %t302, label %then7237, label %endif7239 -then7237: - %t303 = load ptr, ptr %a1 - %t304 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t305 = getelementptr inbounds %S.gen.Place, ptr %t304, i32 0, i32 0 - %t306 = load { ptr, i64, i64 }, ptr %t305 - %t307 = call { ptr, i64, i64 } @finch.gen.load(ptr %t303, { ptr, i64, i64 } { ptr @.str.4636, i64 17, i64 0 }, { ptr, i64, i64 } %t306) - %t308 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t307, ptr %a300 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif7239 -endif7239: - %t310 = load ptr, ptr %a1 - %t311 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4637, i64 31, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4638, i64 3, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call { ptr, i64, i64 } @finch.gen.op(ptr %t310, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store { ptr, i64, i64 } %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a60 - %t326 = load { ptr, i64, i64 }, ptr %a323 - %t327 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t324, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326, %S.ast.Node %t327) - %t328 = load ptr, ptr %a1 - %t329 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4639, i64 31, i64 0 }, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t333, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.4640, i64 3, i64 0 }, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - %t339 = call { ptr, i64, i64 } @finch.gen.op(ptr %t328, { ptr, i64, i64 } %t338) - store { ptr, i64, i64 } %t338, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t339, ptr %a341 - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a248 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - store { ptr, i64, i64 } { ptr @.str.4641, i64 23, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t345, ptr %a348 - call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348) - store { ptr, i64, i64 } %t345, ptr %a349 - call void @finch_str_drop(ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4642, i64 6, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t355, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t355, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.4643, i64 6, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - store { ptr, i64, i64 } %t361, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a362 - %t367 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t366, ptr %a369 - store { ptr, i64, i64 } %t367, ptr %a370 - call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) - store { ptr, i64, i64 } %t366, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = load { ptr, i64, i64 }, ptr %a368 - %t373 = call { ptr, i64, i64 } @finch.gen.op(ptr %t342, { ptr, i64, i64 } %t372) - store { ptr, i64, i64 } %t372, ptr %a374 - call void @finch_str_drop(ptr %a374) - store { ptr, i64, i64 } %t373, ptr %a375 - %t376 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t377 = load i1, ptr %t376 - br i1 %t377, label %then7240, label %endif7242 -then7240: - %t378 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t379 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t379, ptr %a380 - call void @finch_str_copy(ptr %a381, ptr %a380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - %t383 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t382, 0 - %t384 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t384, ptr %a385 - call void @finch.copy.S_ast_Type(ptr %a386, ptr %a385) - %t387 = load %S.ast.Type, ptr %a386 - %t388 = insertvalue %S.gen.Place %t383, %S.ast.Type %t387, 1 - %t389 = insertvalue %S.gen.Ref %t378, %S.gen.Place %t388, 1 - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t389 -endif7242: - %t390 = load ptr, ptr %a1 - %t391 = load ptr, ptr %a1 - %t392 = load %S.ast.Type, ptr %a248 - %t393 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t391, %S.ast.Type %t392) - %t394 = load { ptr, i64, i64 }, ptr %a375 - %t395 = call { ptr, i64, i64 } @finch.gen.load(ptr %t390, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) - store { ptr, i64, i64 } %t393, ptr %a396 - call void @finch_str_drop(ptr %a396) - store { ptr, i64, i64 } %t395, ptr %a397 - %t398 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t398, ptr %a399 - call void @finch_str_copy(ptr %a400, ptr %a399) - %t401 = load { ptr, i64, i64 }, ptr %a400 - %t402 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t401, 0 - %t403 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t403, ptr %a404 - call void @finch.copy.S_ast_Type(ptr %a405, ptr %a404) - %t406 = load %S.ast.Type, ptr %a405 - %t407 = insertvalue %S.gen.Val %t402, %S.ast.Type %t406, 1 - store %S.gen.Val %t407, ptr %a408 - %t409 = load ptr, ptr %a1 - %t410 = load %S.ast.Type, ptr %a248 - %t411 = call i1 @finch.gen.owning(ptr %t409, %S.ast.Type %t410) - br label %logic.from7243 -logic.from7243: - br i1 %t411, label %logic.rhs7244, label %logic.end7245 -logic.rhs7244: - %t412 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t413 = getelementptr inbounds %S.gen.Val, ptr %t412, i32 0, i32 2 - %t414 = load i1, ptr %t413 - br label %logic.rend7246 -logic.rend7246: - br label %logic.end7245 -logic.end7245: - %t415 = phi i1 [ false, %logic.from7243 ], [ %t414, %logic.rend7246 ] - br i1 %t415, label %then7247, label %endif7249 -then7247: - %t416 = load ptr, ptr %a1 - %t417 = load { ptr, i64, i64 }, ptr %a397 - %t418 = load %S.ast.Type, ptr %a248 - %t419 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t416, { ptr, i64, i64 } %t417, %S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t421, ptr %a422 - call void @finch.copy.S_ast_Type(ptr %a423, ptr %a422) - %t424 = load %S.ast.Type, ptr %a423 - %t425 = insertvalue %S.gen.Val %t420, %S.ast.Type %t424, 1 - %t426 = insertvalue %S.gen.Val %t425, i1 true, 2 - %t427 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t426, ptr %a408 - store %S.gen.Val %t427, ptr %a428 - call void @finch.drop.S_gen_Val(ptr %a428) - br label %endif7249 -endif7249: - %t429 = load ptr, ptr %a1 - %t430 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t431 = load %S.gen.Val, ptr %t430 - call void @finch.gen.release(ptr %t429, %S.gen.Val %t431) - %t432 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t433 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t433, ptr %a434 - call void @finch.copy.S_gen_Val(ptr %a435, ptr %a434) - %t436 = load %S.gen.Val, ptr %a435 - %t437 = insertvalue %S.gen.Ref %t432, %S.gen.Val %t436, 2 - call void @finch.drop.S_gen_Val(ptr %a408) - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t437 -} - -define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.cond7250 -each.cond7250: - %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.body7251, label %each.end7253 -each.body7251: - %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 %then7254, label %endif7256 -then7254: - %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.4644, 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.4645, i64 36, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %endif7256 -endif7256: - br label %each.step7252 -each.step7252: - %t38 = load i64, ptr %a13 - %t39 = add i64 %t38, 1 - store i64 %t39, ptr %a13 - br label %each.cond7250 -each.end7253: - %t40 = load i64, ptr %a11 - %t41 = load i64, ptr %a4 - %t42 = icmp ne i64 %t40, %t41 - br i1 %t42, label %then7257, label %endif7259 -then7257: - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4646, i64 1, i64 0 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.4647, i64 8, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a56, i64 %t55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } %t57, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.4648, i64 22, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a70, i64 %t69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t68, ptr %a75 - call void @finch_str_drop(ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t77) - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif7259 -endif7259: - 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 - %a12 = alloca %S.gen.Val, align 16 - %a13 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.4649, i64 3, i64 0 }) - %t9 = load %S.ast.Node, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %a3 - %t11 = call %S.gen.Val @finch.gen.coerce(ptr %t4, %S.gen.Val %t7, %S.ast.Type %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t10) - store %S.gen.Val %t7, ptr %a12 - call void @finch.drop.S_gen_Val(ptr %a12) - store %S.ast.Type %t8, ptr %a13 - call void @finch.drop.S_ast_Type(ptr %a13) - ret %S.gen.Val %t11 -} - -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.4650, 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.4651, 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 %then7260, label %endif7262 -then7260: - ret { ptr, i64, i64 } { ptr @.str.4652, i64 3, i64 0 } -endif7262: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4653, 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 %then7263, label %endif7265 -then7263: - ret { ptr, i64, i64 } { ptr @.str.4654, i64 5, i64 0 } -endif7265: - %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.4655, i64 3, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 - store { ptr, i64, i64 } { ptr @.str.4656, i64 5, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 - store { ptr, i64, i64 } { ptr @.str.4657, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3 - store { ptr, i64, i64 } { ptr @.str.4658, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 - store { ptr, i64, i64 } { ptr @.str.4659, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 - store { ptr, i64, i64 } { ptr @.str.4660, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6 - store { ptr, i64, i64 } { ptr @.str.4661, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 - store { ptr, i64, i64 } { ptr @.str.4662, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 - store { ptr, i64, i64 } { ptr @.str.4663, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9 - store { ptr, i64, i64 } { ptr @.str.4664, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 - store { ptr, i64, i64 } { ptr @.str.4665, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 - store { ptr, i64, i64 } { ptr @.str.4666, i64 3, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12 - store { ptr, i64, i64 } { ptr @.str.4667, 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.cond7266 -find.cond7266: - %t37 = load i64, ptr %a36 - %t38 = icmp slt i64 %t37, %t34 - br i1 %t38, label %find.body7267, label %find.end7270 -find.body7267: - %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.hit7268, label %find.next7269 -find.hit7268: - store i64 %t37, ptr %a33 - br label %find.end7270 -find.next7269: - %t45 = add i64 %t37, 1 - store i64 %t45, ptr %a36 - br label %find.cond7266 -find.end7270: - %t46 = load i64, ptr %a33 - %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then7271, label %endif7273 -then7271: - %t48 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t51 -endif7273: - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.4668, 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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.ast.Type, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a365 = alloca %S.ast.Type, align 16 - %a366 = alloca %S.ast.Type, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a387 = alloca %S.ast.Type, align 16 - %a388 = alloca %S.ast.Type, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a418 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Type, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a527 = alloca %S.ast.Type, align 16 - %a528 = alloca %S.ast.Type, align 16 - %a541 = alloca %S.ast.Type, align 16 - %a542 = alloca %S.ast.Type, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca %S.ast.Type, align 16 - %a585 = alloca %S.ast.Type, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.ast.Type, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca %S.ast.Type, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca %S.ast.Type, align 16 - %a651 = alloca %S.ast.Type, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca %S.ast.Type, align 16 - %a689 = alloca %S.ast.Type, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %range7274, label %inrange7275 -range7274: - call void @finch_panic_index(ptr @.str.4669, i64 4116, i64 0, i64 %t11) - unreachable -inrange7275: - %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 %then7276, label %endif7278 -then7276: - %t27 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t27 -endif7278: - %t28 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t29 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.4670, 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.from7279 -logic.from7279: - br i1 %t33, label %logic.rhs7280, label %logic.end7281 -logic.rhs7280: - %t34 = load %S.ast.Type, ptr %a3 - %t35 = call i1 @finch.gen.isNumber(%S.ast.Type %t34) - br label %logic.rend7282 -logic.rend7282: - br label %logic.end7281 -logic.end7281: - %t36 = phi i1 [ false, %logic.from7279 ], [ %t35, %logic.rend7282 ] - br label %logic.from7283 -logic.from7283: - br i1 %t36, label %logic.rhs7284, label %logic.end7285 -logic.rhs7284: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic7286, label %ok7287 -panic7286: - call void @finch_panic(ptr @.str.4671, i64 4121, ptr @.str.4672) - unreachable -ok7287: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 41 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend7288 -logic.rend7288: - br label %logic.end7285 -logic.end7285: - %t48 = phi i1 [ false, %logic.from7283 ], [ %t46, %logic.rend7288 ] - br i1 %t48, label %then7289, label %endif7291 -then7289: - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.4673, i64 17, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.4674, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4675, i64 15, i64 0 }, { ptr, i64, i64 } %t53) - %t54 = load %S.ast.Type, ptr %a3 - %t55 = call i1 @finch.gen.isInt(%S.ast.Type %t54) - br i1 %t55, label %then7292, label %endif7294 -then7292: - %t56 = load ptr, ptr %a1 - %t57 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t56, { ptr, i64, i64 } { ptr @.str.4676, i64 3, i64 0 }) - store { ptr, i64, i64 } %t57, ptr %a58 - %t59 = load ptr, ptr %a1 - %t60 = load { ptr, i64, i64 }, ptr %a58 - call void @finch.gen.store(ptr %t59, { ptr, i64, i64 } { ptr @.str.4677, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4678, i64 1, i64 0 }, { ptr, i64, i64 } %t60) - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = load %S.gen.Val, ptr %a17 - %t64 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t62, %S.gen.Val %t63) - store { ptr, i64, i64 } { ptr @.str.4679, i64 32, i64 0 }, ptr %a66 - store { ptr, i64, i64 } %t64, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4680, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4681, i64 6, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.4682, i64 1, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t97, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4683, i64 12, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4684, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic7295, label %ok7296 -panic7295: - call void @finch_panic(ptr @.str.4685, i64 4129, ptr @.str.4686) - unreachable -ok7296: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 42 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t111, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = load { ptr, i64, i64 }, ptr %a51 - %t120 = call { ptr, i64, i64 } @finch.gen.load(ptr %t118, { ptr, i64, i64 } { ptr @.str.4687, i64 17, i64 0 }, { ptr, i64, i64 } %t119) - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic7297, label %ok7298 -panic7297: - call void @finch_panic(ptr @.str.4688, i64 4130, ptr @.str.4689) - unreachable -ok7298: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 43 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t120, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load ptr, ptr %a1 - %t127 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t126, %S.gen.Val %t127) - %t128 = load ptr, ptr %a1 - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a58 - %t131 = call { ptr, i64, i64 } @finch.gen.load(ptr %t129, { ptr, i64, i64 } { ptr @.str.4690, i64 3, i64 0 }, { ptr, i64, i64 } %t130) - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4691, i64 3, i64 0 }) - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t131, %S.ast.Type %t132, %S.ast.Type %t133) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - store %S.ast.Type %t132, ptr %a136 - call void @finch.drop.S_ast_Type(ptr %a136) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 - %t138 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Val %t137, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t142 -endif7294: - %t143 = load ptr, ptr %a1 - %t144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t143, { ptr, i64, i64 } { ptr @.str.4692, i64 6, i64 0 }) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = load { ptr, i64, i64 }, ptr %a145 - call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.4693, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4694, i64 3, i64 0 }, { ptr, i64, i64 } %t147) - %t148 = load ptr, ptr %a1 - %t149 = load ptr, ptr %a1 - %t150 = load %S.gen.Val, ptr %a17 - %t151 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t149, %S.gen.Val %t150) - store { ptr, i64, i64 } { ptr @.str.4695, i64 34, i64 0 }, ptr %a153 - store { ptr, i64, i64 } %t151, ptr %a154 - call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) - store { ptr, i64, i64 } %t151, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a152 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4696, i64 6, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t161, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t161, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4697, i64 6, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t184, ptr %a186 - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.4699, i64 12, i64 0 }, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4700, i64 3, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t197) - store { ptr, i64, i64 } %t197, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic7299, label %ok7300 -panic7299: - call void @finch_panic(ptr @.str.4701, i64 4137, ptr @.str.4702) - unreachable -ok7300: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 42 - %t203 = load { ptr, i64, i64 }, ptr %t202 - store { ptr, i64, i64 } %t198, ptr %t202 - store { ptr, i64, i64 } %t203, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a51 - %t207 = call { ptr, i64, i64 } @finch.gen.load(ptr %t205, { ptr, i64, i64 } { ptr @.str.4703, i64 17, i64 0 }, { ptr, i64, i64 } %t206) - %t208 = load ptr, ptr %a1 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic7301, label %ok7302 -panic7301: - call void @finch_panic(ptr @.str.4704, i64 4138, ptr @.str.4705) - unreachable -ok7302: - %t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 43 - %t211 = load { ptr, i64, i64 }, ptr %t210 - store { ptr, i64, i64 } %t207, ptr %t210 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t213, %S.gen.Val %t214) - %t215 = load ptr, ptr %a1 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a145 - %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t216, { ptr, i64, i64 } { ptr @.str.4706, i64 6, i64 0 }, { ptr, i64, i64 } %t217) - %t219 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4707, i64 5, i64 0 }) - %t220 = load %S.ast.Type, ptr %a3 - %t221 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t215, { ptr, i64, i64 } %t218, %S.ast.Type %t219, %S.ast.Type %t220) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - store %S.ast.Type %t219, ptr %a223 - call void @finch.drop.S_ast_Type(ptr %a223) - %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 - %t225 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - %t229 = insertvalue %S.gen.Val %t224, %S.ast.Type %t228, 1 - call void @finch_str_drop(ptr %a186) - call void @finch_str_drop(ptr %a145) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t229 -endif7291: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4708, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp ne i32 %t234, 0 - br label %logic.from7303 -logic.from7303: - br i1 %t235, label %logic.rhs7304, label %logic.end7305 -logic.rhs7304: - %t236 = load %S.ast.Type, ptr %a3 - %t237 = call i1 @finch.gen.isNumber(%S.ast.Type %t236) - br label %logic.rend7306 -logic.rend7306: - br label %logic.end7305 -logic.end7305: - %t238 = phi i1 [ false, %logic.from7303 ], [ %t237, %logic.rend7306 ] - br i1 %t238, label %then7307, label %endif7309 -then7307: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic7310, label %ok7311 -panic7310: - call void @finch_panic(ptr @.str.4709, i64 4143, ptr @.str.4710) - unreachable -ok7311: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 1 - %t243 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t244 = load i64, ptr %t243 - %t245 = load { ptr, i64, i64 }, ptr %t242 - %t246 = extractvalue { ptr, i64, i64 } %t245, 1 - %t247 = icmp uge i64 %t244, %t246 - br i1 %t247, label %range7312, label %inrange7313 -range7312: - call void @finch_panic_index(ptr @.str.4711, i64 4143, i64 %t244, i64 %t246) - unreachable -inrange7313: - %t248 = extractvalue { ptr, i64, i64 } %t245, 0 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t239, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t251, ptr %a252 - %t253 = load %S.ast.Type, ptr %a3 - %t254 = call i1 @finch.gen.isInt(%S.ast.Type %t253) - br i1 %t254, label %then7314, label %endif7316 -then7314: - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load %S.gen.Val, ptr %a17 - %t258 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t256, %S.gen.Val %t257) - store { ptr, i64, i64 } { ptr @.str.4712, i64 31, i64 0 }, ptr %a260 - store { ptr, i64, i64 } %t258, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4713, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4714, i64 6, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t281 = load i64, ptr %t280 - call void @finch_str_from_int(ptr %a282, i64 %t281) - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t279, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t279, ptr %a287 - call void @finch_str_drop(ptr %a287) - store { ptr, i64, i64 } %t283, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.4715, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - %t295 = call { ptr, i64, i64 } @finch.gen.op(ptr %t255, { ptr, i64, i64 } %t294) - store { ptr, i64, i64 } %t294, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t295, ptr %a297 - %t298 = load ptr, ptr %a1 - %t299 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t298, %S.gen.Val %t299) - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4716, i64 3, i64 0 }) - %t303 = load %S.ast.Type, ptr %a3 - %t304 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t300, { ptr, i64, i64 } %t301, %S.ast.Type %t302, %S.ast.Type %t303) - store %S.ast.Type %t302, ptr %a305 - call void @finch.drop.S_ast_Type(ptr %a305) - %t306 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t307 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t307, ptr %a308 - call void @finch.copy.S_ast_Type(ptr %a309, ptr %a308) - %t310 = load %S.ast.Type, ptr %a309 - %t311 = insertvalue %S.gen.Val %t306, %S.ast.Type %t310, 1 - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t311 -endif7316: - %t312 = load ptr, ptr %a1 - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a17 - %t315 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } { ptr @.str.4717, i64 36, i64 0 }, ptr %a317 - store { ptr, i64, i64 } %t315, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.4718, i64 6, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - %t326 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t325, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - store { ptr, i64, i64 } %t325, ptr %a330 - call void @finch_str_drop(ptr %a330) - %t331 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t331, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.4719, i64 6, i64 0 }, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t331, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - %t337 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t338 = load i64, ptr %t337 - call void @finch_str_from_int(ptr %a339, i64 %t338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - store { ptr, i64, i64 } %t336, ptr %a342 - store { ptr, i64, i64 } %t340, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t336, ptr %a344 - call void @finch_str_drop(ptr %a344) - store { ptr, i64, i64 } %t340, ptr %a345 - call void @finch_str_drop(ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.4720, i64 1, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t312, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4721, i64 5, i64 0 }) - %t360 = load %S.ast.Type, ptr %a3 - %t361 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359, %S.ast.Type %t360) - store %S.ast.Type %t359, ptr %a362 - call void @finch.drop.S_ast_Type(ptr %a362) - %t363 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t361, 0 - %t364 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t364, ptr %a365 - call void @finch.copy.S_ast_Type(ptr %a366, ptr %a365) - %t367 = load %S.ast.Type, ptr %a366 - %t368 = insertvalue %S.gen.Val %t363, %S.ast.Type %t367, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t368 -endif7309: - %t369 = load %S.ast.Type, ptr %a3 - %t370 = call i1 @finch.gen.isInt(%S.ast.Type %t369) - br label %logic.from7317 -logic.from7317: - br i1 %t370, label %logic.rhs7318, label %logic.end7319 -logic.rhs7318: - %t371 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t372, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.4722, i64 4, i64 0 }, ptr %a374 - %t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374) - %t376 = icmp ne i32 %t375, 0 - br label %logic.rend7320 -logic.rend7320: - br label %logic.end7319 -logic.end7319: - %t377 = phi i1 [ false, %logic.from7317 ], [ %t376, %logic.rend7320 ] - br i1 %t377, label %then7321, label %endif7323 -then7321: - %t378 = load ptr, ptr %a1 - %t379 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4723, i64 3, i64 0 }) - %t382 = load %S.ast.Type, ptr %a3 - %t383 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t378, { ptr, i64, i64 } %t380, %S.ast.Type %t381, %S.ast.Type %t382) - store %S.ast.Type %t381, ptr %a384 - call void @finch.drop.S_ast_Type(ptr %a384) - %t385 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t383, 0 - %t386 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t386, ptr %a387 - call void @finch.copy.S_ast_Type(ptr %a388, ptr %a387) - %t389 = load %S.ast.Type, ptr %a388 - %t390 = insertvalue %S.gen.Val %t385, %S.ast.Type %t389, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t390 -endif7323: - %t391 = load %S.ast.Type, ptr %a3 - %t392 = call i1 @finch.gen.isInt(%S.ast.Type %t391) - br label %logic.from7324 -logic.from7324: - br i1 %t392, label %logic.end7326, label %logic.rhs7325 -logic.rhs7325: - %t393 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t394, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.4724, i64 4, i64 0 }, ptr %a396 - %t397 = call i32 @finch_str_eq(ptr %a395, ptr %a396) - %t398 = icmp ne i32 %t397, 0 - br label %logic.rend7327 -logic.rend7327: - br label %logic.end7326 -logic.end7326: - %t399 = phi i1 [ true, %logic.from7324 ], [ %t398, %logic.rend7327 ] - br i1 %t399, label %then7328, label %endif7330 -then7328: - %t400 = load %S.ast.Type, ptr %a23 - %t401 = call i1 @finch.gen.isInt(%S.ast.Type %t400) - br label %logic.from7331 -logic.from7331: - br i1 %t401, label %logic.end7333, label %logic.rhs7332 -logic.rhs7332: - %t402 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4725, i64 4, i64 0 }, ptr %a405 - %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) - %t407 = icmp ne i32 %t406, 0 - br label %logic.rend7334 -logic.rend7334: - br label %logic.end7333 -logic.end7333: - %t408 = phi i1 [ true, %logic.from7331 ], [ %t407, %logic.rend7334 ] - br i1 %t408, label %then7335, label %endif7337 -then7335: - %t409 = load ptr, ptr %a1 - %t410 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t411 = load { ptr, i64, i64 }, ptr %t410 - %t412 = load %S.ast.Type, ptr %a23 - %t413 = load %S.ast.Type, ptr %a3 - %t414 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t409, { ptr, i64, i64 } %t411, %S.ast.Type %t412, %S.ast.Type %t413) - %t415 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t414, 0 - %t416 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t416, ptr %a417 - call void @finch.copy.S_ast_Type(ptr %a418, ptr %a417) - %t419 = load %S.ast.Type, ptr %a418 - %t420 = insertvalue %S.gen.Val %t415, %S.ast.Type %t419, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t420 -endif7337: - %t421 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - store { ptr, i64, i64 } { ptr @.str.4726, i64 4, i64 0 }, ptr %a424 - %t425 = call i32 @finch_str_eq(ptr %a423, ptr %a424) - %t426 = icmp ne i32 %t425, 0 - br i1 %t426, label %then7338, label %endif7340 -then7338: - %t427 = load ptr, ptr %a1 - %t428 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } { ptr @.str.4727, i64 8, i64 0 }, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - %t433 = load { ptr, i64, i64 }, ptr %a430 - store { ptr, i64, i64 } %t433, ptr %a435 - store { ptr, i64, i64 } { ptr @.str.4728, i64 4, i64 0 }, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t433, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - %t439 = load ptr, ptr %a1 - %t440 = load %S.ast.Type, ptr %a3 - %t441 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t440) - store { ptr, i64, i64 } %t438, ptr %a443 - store { ptr, i64, i64 } %t441, ptr %a444 - call void @finch_str_concat(ptr %a442, ptr %a443, ptr %a444) - store { ptr, i64, i64 } %t438, ptr %a445 - call void @finch_str_drop(ptr %a445) - store { ptr, i64, i64 } %t441, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load { ptr, i64, i64 }, ptr %a442 - %t448 = call { ptr, i64, i64 } @finch.gen.op(ptr %t427, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t447, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t448, 0 - %t451 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t451, ptr %a452 - call void @finch.copy.S_ast_Type(ptr %a453, ptr %a452) - %t454 = load %S.ast.Type, ptr %a453 - %t455 = insertvalue %S.gen.Val %t450, %S.ast.Type %t454, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t455 -endif7340: - %t456 = load %S.ast.Type, ptr %a23 - %t457 = call i1 @finch.gen.isFloat(%S.ast.Type %t456) - br label %logic.from7341 -logic.from7341: - br i1 %t457, label %logic.rhs7342, label %logic.end7343 -logic.rhs7342: - %t458 = load %S.ast.Type, ptr %a3 - %t459 = call i1 @finch.gen.isInt(%S.ast.Type %t458) - br label %logic.rend7344 -logic.rend7344: - br label %logic.end7343 -logic.end7343: - %t460 = phi i1 [ false, %logic.from7341 ], [ %t459, %logic.rend7344 ] - br i1 %t460, label %then7345, label %endif7347 -then7345: - store { ptr, i64, i64 } { ptr @.str.4729, i64 6, i64 0 }, ptr %a461 - %t462 = load %S.ast.Type, ptr %a3 - %t463 = call i1 @finch.gen.isSigned(%S.ast.Type %t462) - br i1 %t463, label %then7348, label %endif7350 -then7348: - %t464 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } { ptr @.str.4730, i64 6, i64 0 }, ptr %a461 - store { ptr, i64, i64 } %t464, ptr %a465 - call void @finch_str_drop(ptr %a465) - br label %endif7350 -endif7350: - %t466 = load ptr, ptr %a1 - %t467 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t467, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4731, i64 1, i64 0 }, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load ptr, ptr %a1 - %t473 = load %S.ast.Type, ptr %a23 - %t474 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t472, %S.ast.Type %t473) - store { ptr, i64, i64 } %t471, ptr %a476 - store { ptr, i64, i64 } %t474, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t471, ptr %a478 - call void @finch_str_drop(ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a475 - store { ptr, i64, i64 } %t480, ptr %a482 - store { ptr, i64, i64 } { ptr @.str.4732, i64 1, i64 0 }, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t480, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - %t486 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } %t485, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.4733, i64 4, i64 0 }, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t492, ptr %a496 - call void @finch_str_drop(ptr %a496) - %t497 = load { ptr, i64, i64 }, ptr %a493 - %t498 = load ptr, ptr %a1 - %t499 = load %S.ast.Type, ptr %a3 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t498, %S.ast.Type %t499) - store { ptr, i64, i64 } %t497, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t497, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - %t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t466, { ptr, i64, i64 } %t506) - store { ptr, i64, i64 } %t506, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 - %t510 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = insertvalue %S.gen.Val %t509, %S.ast.Type %t513, 1 - call void @finch_str_drop(ptr %a461) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t514 -endif7347: - br label %endif7330 -endif7330: - %t515 = load %S.ast.Type, ptr %a3 - %t516 = call i1 @finch.gen.isFloat(%S.ast.Type %t515) - br i1 %t516, label %then7351, label %endif7353 -then7351: - %t517 = load %S.ast.Type, ptr %a23 - %t518 = call i1 @finch.gen.isInt(%S.ast.Type %t517) - br i1 %t518, label %then7354, label %endif7356 -then7354: - %t519 = load ptr, ptr %a1 - %t520 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - %t522 = load %S.ast.Type, ptr %a23 - %t523 = load %S.ast.Type, ptr %a3 - %t524 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t519, { ptr, i64, i64 } %t521, %S.ast.Type %t522, %S.ast.Type %t523) - %t525 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t524, 0 - %t526 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t526, ptr %a527 - call void @finch.copy.S_ast_Type(ptr %a528, ptr %a527) - %t529 = load %S.ast.Type, ptr %a528 - %t530 = insertvalue %S.gen.Val %t525, %S.ast.Type %t529, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t530 -endif7356: - %t531 = load %S.ast.Type, ptr %a23 - %t532 = call i1 @finch.gen.isFloat(%S.ast.Type %t531) - br i1 %t532, label %then7357, label %endif7359 -then7357: - %t533 = load ptr, ptr %a1 - %t534 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load %S.ast.Type, ptr %a23 - %t537 = load %S.ast.Type, ptr %a3 - %t538 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t533, { ptr, i64, i64 } %t535, %S.ast.Type %t536, %S.ast.Type %t537) - %t539 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t538, 0 - %t540 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t540, ptr %a541 - call void @finch.copy.S_ast_Type(ptr %a542, ptr %a541) - %t543 = load %S.ast.Type, ptr %a542 - %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t544 -endif7359: - br label %endif7353 -endif7353: - %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.4734, i64 4, i64 0 }, ptr %a548 - %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) - %t550 = icmp ne i32 %t549, 0 - br label %logic.from7360 -logic.from7360: - br i1 %t550, label %logic.rhs7361, label %logic.end7362 -logic.rhs7361: - %t551 = load %S.ast.Type, ptr %a23 - %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) - br label %logic.rend7363 -logic.rend7363: - br label %logic.end7362 -logic.end7362: - %t553 = phi i1 [ false, %logic.from7360 ], [ %t552, %logic.rend7363 ] - br i1 %t553, label %then7364, label %endif7366 -then7364: - %t554 = load ptr, ptr %a1 - %t555 = load ptr, ptr %a1 - %t556 = load %S.ast.Type, ptr %a23 - %t557 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t555, %S.ast.Type %t556) - store { ptr, i64, i64 } { ptr @.str.4735, i64 8, i64 0 }, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.4736, i64 1, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t569 = load { ptr, i64, i64 }, ptr %t568 - store { ptr, i64, i64 } %t567, ptr %a571 - store { ptr, i64, i64 } %t569, ptr %a572 - call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572) - store { ptr, i64, i64 } %t567, ptr %a573 - call void @finch_str_drop(ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a570 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.4737, i64 3, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t579) - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t580, 0 - %t583 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t583, ptr %a584 - call void @finch.copy.S_ast_Type(ptr %a585, ptr %a584) - %t586 = load %S.ast.Type, ptr %a585 - %t587 = insertvalue %S.gen.Val %t582, %S.ast.Type %t586, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t587 -endif7366: - %t588 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t589 = load { ptr, i64, i64 }, ptr %t588 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.4738, i64 3, i64 0 }, ptr %a591 - %t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591) - %t593 = icmp ne i32 %t592, 0 - br label %logic.from7367 -logic.from7367: - br i1 %t593, label %logic.rhs7368, label %logic.end7369 -logic.rhs7368: - %t594 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t595 = load { ptr, i64, i64 }, ptr %t594 - store { ptr, i64, i64 } %t595, ptr %a596 - store { ptr, i64, i64 } { ptr @.str.4739, i64 3, i64 0 }, ptr %a597 - %t598 = call i32 @finch_str_eq(ptr %a596, ptr %a597) - %t599 = icmp ne i32 %t598, 0 - br label %logic.from7370 -logic.from7370: - br i1 %t599, label %logic.end7372, label %logic.rhs7371 -logic.rhs7371: - %t600 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t601 = load { ptr, i64, i64 }, ptr %t600 - store { ptr, i64, i64 } %t601, ptr %a602 - store { ptr, i64, i64 } { ptr @.str.4740, i64 4, i64 0 }, ptr %a603 - %t604 = call i32 @finch_str_eq(ptr %a602, ptr %a603) - %t605 = icmp ne i32 %t604, 0 - br label %logic.rend7373 -logic.rend7373: - br label %logic.end7372 -logic.end7372: - %t606 = phi i1 [ true, %logic.from7370 ], [ %t605, %logic.rend7373 ] - br label %logic.rend7374 -logic.rend7374: - br label %logic.end7369 -logic.end7369: - %t607 = phi i1 [ false, %logic.from7367 ], [ %t606, %logic.rend7374 ] - br i1 %t607, label %then7375, label %endif7377 -then7375: - %t608 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t609 = load { ptr, i64, i64 }, ptr %t608 - store { ptr, i64, i64 } %t609, ptr %a610 - call void @finch_str_copy(ptr %a611, ptr %a610) - %t612 = load { ptr, i64, i64 }, ptr %a611 - %t613 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t612, 0 - %t614 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t614, ptr %a615 - call void @finch.copy.S_ast_Type(ptr %a616, ptr %a615) - %t617 = load %S.ast.Type, ptr %a616 - %t618 = insertvalue %S.gen.Val %t613, %S.ast.Type %t617, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t618 -endif7377: - %t619 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t620 = load { ptr, i64, i64 }, ptr %t619 - store { ptr, i64, i64 } %t620, ptr %a621 - store { ptr, i64, i64 } { ptr @.str.4741, i64 3, i64 0 }, ptr %a622 - %t623 = call i32 @finch_str_eq(ptr %a621, ptr %a622) - %t624 = icmp ne i32 %t623, 0 - br label %logic.from7378 -logic.from7378: - br i1 %t624, label %logic.rhs7379, label %logic.end7380 -logic.rhs7379: - %t625 = load %S.ast.Type, ptr %a23 - %t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625) - br label %logic.rend7381 -logic.rend7381: - br label %logic.end7380 -logic.end7380: - %t627 = phi i1 [ false, %logic.from7378 ], [ %t626, %logic.rend7381 ] - br i1 %t627, label %then7382, label %endif7384 -then7382: - %t628 = load ptr, ptr %a1 - %t629 = load ptr, ptr %a1 - %t630 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t631 = load { ptr, i64, i64 }, ptr %t630 - %t632 = load %S.ast.Type, ptr %a23 - %t633 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4743, i64 3, i64 0 }) - %t634 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t629, { ptr, i64, i64 } %t631, %S.ast.Type %t632, %S.ast.Type %t633) - store %S.ast.Type %t633, ptr %a635 - call void @finch.drop.S_ast_Type(ptr %a635) - store { ptr, i64, i64 } { ptr @.str.4742, i64 13, i64 0 }, ptr %a637 - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_concat(ptr %a636, ptr %a637, ptr %a638) - store { ptr, i64, i64 } %t634, ptr %a639 - call void @finch_str_drop(ptr %a639) - %t640 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t640, ptr %a642 - store { ptr, i64, i64 } { ptr @.str.4744, i64 7, i64 0 }, ptr %a643 - call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) - store { ptr, i64, i64 } %t640, ptr %a644 - call void @finch_str_drop(ptr %a644) - %t645 = load { ptr, i64, i64 }, ptr %a641 - %t646 = call { ptr, i64, i64 } @finch.gen.op(ptr %t628, { ptr, i64, i64 } %t645) - store { ptr, i64, i64 } %t645, ptr %a647 - call void @finch_str_drop(ptr %a647) - %t648 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t646, 0 - %t649 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t649, ptr %a650 - call void @finch.copy.S_ast_Type(ptr %a651, ptr %a650) - %t652 = load %S.ast.Type, ptr %a651 - %t653 = insertvalue %S.gen.Val %t648, %S.ast.Type %t652, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t653 -endif7384: - %t654 = load %S.ast.Type, ptr %a3 - %t655 = call i1 @finch.gen.isInt(%S.ast.Type %t654) - br label %logic.from7385 -logic.from7385: - br i1 %t655, label %logic.rhs7386, label %logic.end7387 -logic.rhs7386: - %t656 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t657 = load { ptr, i64, i64 }, ptr %t656 - store { ptr, i64, i64 } %t657, ptr %a658 - store { ptr, i64, i64 } { ptr @.str.4745, i64 3, i64 0 }, ptr %a659 - %t660 = call i32 @finch_str_eq(ptr %a658, ptr %a659) - %t661 = icmp ne i32 %t660, 0 - br label %logic.rend7388 -logic.rend7388: - br label %logic.end7387 -logic.end7387: - %t662 = phi i1 [ false, %logic.from7385 ], [ %t661, %logic.rend7388 ] - br i1 %t662, label %then7389, label %endif7391 -then7389: - %t663 = load ptr, ptr %a1 - %t664 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } { ptr @.str.4746, i64 13, i64 0 }, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.4747, i64 4, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = load ptr, ptr %a1 - %t676 = load %S.ast.Type, ptr %a3 - %t677 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t675, %S.ast.Type %t676) - store { ptr, i64, i64 } %t674, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t674, ptr %a681 - call void @finch_str_drop(ptr %a681) - store { ptr, i64, i64 } %t677, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a678 - %t684 = call { ptr, i64, i64 } @finch.gen.op(ptr %t663, { ptr, i64, i64 } %t683) - store { ptr, i64, i64 } %t683, ptr %a685 - call void @finch_str_drop(ptr %a685) - %t686 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t684, 0 - %t687 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t687, ptr %a688 - call void @finch.copy.S_ast_Type(ptr %a689, ptr %a688) - %t690 = load %S.ast.Type, ptr %a689 - %t691 = insertvalue %S.gen.Val %t686, %S.ast.Type %t690, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t691 -endif7391: - %t692 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t693 = load { ptr, i64, i64 }, ptr %t692 - store { ptr, i64, i64 } %t693, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.4748, i64 3, i64 0 }, ptr %a695 - %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) - %t697 = icmp ne i32 %t696, 0 - br label %logic.from7392 -logic.from7392: - br i1 %t697, label %logic.rhs7393, label %logic.end7394 -logic.rhs7393: - %t698 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store { ptr, i64, i64 } %t699, ptr %a700 - store { ptr, i64, i64 } { ptr @.str.4749, i64 3, i64 0 }, ptr %a701 - %t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701) - %t703 = icmp ne i32 %t702, 0 - br label %logic.rend7395 -logic.rend7395: - br label %logic.end7394 -logic.end7394: - %t704 = phi i1 [ false, %logic.from7392 ], [ %t703, %logic.rend7395 ] - br i1 %t704, label %then7396, label %endif7398 -then7396: - %t705 = load ptr, ptr %a1 - %t706 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t707 = load { ptr, i64, i64 }, ptr %t706 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 0, %t708 - br i1 %t709, label %range7399, label %inrange7400 -range7399: - call void @finch_panic_index(ptr @.str.4750, i64 4192, i64 0, i64 %t708) - unreachable -inrange7400: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds %S.ast.Node, ptr %t710, i64 0 - %t712 = load %S.ast.Node, ptr %t711 - call void @finch.gen.fail(ptr %t705, %S.ast.Node %t712, { ptr, i64, i64 } { ptr @.str.4751, i64 70, i64 0 }) - br label %endif7398 -endif7398: - %t713 = load ptr, ptr %a1 - %t714 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 0, %t716 - br i1 %t717, label %range7401, label %inrange7402 -range7401: - call void @finch_panic_index(ptr @.str.4752, i64 4194, i64 0, i64 %t716) - unreachable -inrange7402: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds %S.ast.Node, ptr %t718, i64 0 - %t720 = load %S.ast.Node, ptr %t719 - %t721 = load %S.ast.Type, ptr %a23 - %t722 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t721) - store { ptr, i64, i64 } { ptr @.str.4753, i64 11, i64 0 }, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) - store { ptr, i64, i64 } %t722, ptr %a726 - call void @finch_str_drop(ptr %a726) - %t727 = load { ptr, i64, i64 }, ptr %a723 - store { ptr, i64, i64 } %t727, ptr %a729 - store { ptr, i64, i64 } { ptr @.str.4754, i64 6, i64 0 }, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - store { ptr, i64, i64 } %t727, ptr %a731 - call void @finch_str_drop(ptr %a731) - %t732 = load { ptr, i64, i64 }, ptr %a728 - %t733 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } %t732, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - store { ptr, i64, i64 } %t732, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a735 - call void @finch.gen.fail(ptr %t713, %S.ast.Node %t720, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t741 -} - -define internal i64 @finch.gen.sizeBytes(ptr %p0, %S.ast.Type %p1) { -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.4755, 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 %then7403, label %endif7405 -then7403: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic7406, label %ok7407 -panic7406: - call void @finch_panic(ptr @.str.4756, i64 4227, ptr @.str.4757) - unreachable -ok7407: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 16 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %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 %range7408, label %inrange7409 -range7408: - call void @finch_panic_index(ptr @.str.4758, i64 4227, i64 %t17, i64 %t19) - unreachable -inrange7409: - %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 -endif7405: - %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.4759, 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 %then7410, label %endif7412 -then7410: - %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 %range7413, label %inrange7414 -range7413: - call void @finch_panic_index(ptr @.str.4760, i64 4230, i64 0, i64 %t36) - unreachable -inrange7414: - %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 -endif7412: - %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.4761, 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.from7415 -logic.from7415: - br i1 %t48, label %logic.end7417, label %logic.rhs7416 -logic.rhs7416: - %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.4762, 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.rend7418 -logic.rend7418: - br label %logic.end7417 -logic.end7417: - %t55 = phi i1 [ true, %logic.from7415 ], [ %t54, %logic.rend7418 ] - br i1 %t55, label %then7419, label %endif7421 -then7419: - ret i64 8 -endif7421: - %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.4763, 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 %then7422, label %endif7424 -then7422: - ret i64 8 -endif7424: - %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.4764, 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 %then7425, label %endif7427 -then7425: - ret i64 4 -endif7427: - %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.4765, 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 %then7428, label %endif7430 -then7428: - ret i64 1 -endif7430: - %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.drop.arr_S_gen_Leaf(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - 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 - 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.4766, 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 %then7431, label %else7432 -then7431: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic7434, label %ok7435 -panic7434: - call void @finch_panic(ptr @.str.4767, i64 4251, ptr @.str.4768) - unreachable -ok7435: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 16 - %t14 = load ptr, ptr %a1 - %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t16 = load { ptr, i64, i64 }, ptr %t15 - %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 %range7436, label %inrange7437 -range7436: - call void @finch_panic_index(ptr @.str.4769, i64 4251, i64 %t19, i64 %t21) - unreachable -inrange7437: - %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.cond7438 -for.cond7438: - %t34 = load i64, ptr %a33 - %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body7439, label %for.end7441 -for.body7439: - %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 %range7442, label %inrange7443 -range7442: - call void @finch_panic_index(ptr @.str.4770, i64 4253, i64 %t38, i64 %t40) - unreachable -inrange7443: - %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 %range7444, label %inrange7445 -range7444: - call void @finch_panic_index(ptr @.str.4771, i64 4253, i64 %t47, i64 %t49) - unreachable -inrange7445: - %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.cond7446 -each.cond7446: - %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.body7447, label %each.end7449 -each.body7447: - %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.step7448 -each.step7448: - %t72 = load i64, ptr %a57 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %a57 - br label %each.cond7446 -each.end7449: - call void @finch.drop.arr_S_gen_Leaf(ptr %a56) - br label %for.step7440 -for.step7440: - %t74 = load i64, ptr %a33 - %t75 = add i64 %t74, 1 - store i64 %t75, ptr %a33 - br label %for.cond7438 -for.end7441: - call void @finch.drop.S_gen_StructDef(ptr %a29) - br label %endif7433 -else7432: - %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.4772, 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 %then7450, label %else7451 -then7450: - %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 %range7453, label %inrange7454 -range7453: - call void @finch_panic_index(ptr @.str.4773, i64 4258, i64 0, i64 %t85) - unreachable -inrange7454: - %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.cond7455 -for.cond7455: - %t95 = load i64, ptr %a94 - %t96 = icmp slt i64 %t95, %t93 - br i1 %t96, label %for.body7456, label %for.end7458 -for.body7456: - %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 %range7459, label %inrange7460 -range7459: - call void @finch_panic_index(ptr @.str.4774, i64 4260, i64 0, i64 %t100) - unreachable -inrange7460: - %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.cond7461 -each.cond7461: - %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.body7462, label %each.end7464 -each.body7462: - %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.step7463 -each.step7463: - %t127 = load i64, ptr %a112 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a112 - br label %each.cond7461 -each.end7464: - call void @finch.drop.arr_S_gen_Leaf(ptr %a111) - br label %for.step7457 -for.step7457: - %t129 = load i64, ptr %a94 - %t130 = add i64 %t129, 1 - store i64 %t130, ptr %a94 - br label %for.cond7455 -for.end7458: - br label %endif7452 -else7451: - %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.4775, 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 %endif7452 -endif7452: - br label %endif7433 -endif7433: - %t152 = load { ptr, i64, i64 }, ptr %a4 - ret { ptr, i64, i64 } %t152 -} - -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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca i64, align 16 - %a102 = alloca %S.gen.Leaf, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.gen.Abi %p2, ptr %a3 - 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.from7465 -logic.from7465: - br i1 %t17, label %logic.rhs7466, label %logic.end7467 -logic.rhs7466: - %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.rend7468 -logic.rend7468: - br label %logic.end7467 -logic.end7467: - %t21 = phi i1 [ false, %logic.from7465 ], [ %t20, %logic.rend7468 ] - store i1 %t21, ptr %a22 - store i64 0, ptr %a23 - br label %each.cond7469 -each.cond7469: - %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.body7470, label %each.end7472 -each.body7470: - %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.from7473 -logic.from7473: - br i1 %t34, label %logic.end7475, label %logic.rhs7474 -logic.rhs7474: - %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 %range7476, label %inrange7477 -range7476: - call void @finch_panic_index(ptr @.str.4776, i64 4277, i64 0, i64 %t38) - unreachable -inrange7477: - %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.rend7478 -logic.rend7478: - br label %logic.end7475 -logic.end7475: - %t45 = phi i1 [ true, %logic.from7473 ], [ %t44, %logic.rend7478 ] - br i1 %t45, label %then7479, label %endif7481 -then7479: - store i1 false, ptr %a22 - br label %endif7481 -endif7481: - br label %each.step7471 -each.step7471: - %t46 = load i64, ptr %a23 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a23 - br label %each.cond7469 -each.end7472: - %t48 = load i1, ptr %a22 - br i1 %t48, label %then7482, label %endif7484 -then7482: - store { ptr, i64, i64 } { ptr @.str.4777, 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 %range7485, label %inrange7486 -range7485: - call void @finch_panic_index(ptr @.str.4778, i64 4283, i64 0, i64 %t51) - unreachable -inrange7486: - %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 %then7487, label %endif7489 -then7487: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4779, i64 6, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - br label %endif7489 -endif7489: - %t59 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } { ptr @.str.4780, i64 6, i64 0 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t65 = load i64, ptr %t64 - call void @finch_str_from_int(ptr %a66, i64 %t65) - %t67 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4781, i64 1, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.4782, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t77, ptr %a80 - store { ptr, i64, i64 } %t78, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4783, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %t63 - %t90 = add i64 %t89, 1 - call void @finch_arr_reserve(ptr %t62, i64 %t90, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t91 = load ptr, ptr %t62 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t89 - store { ptr, i64, i64 } %t88, ptr %t92 - store i64 %t90, ptr %t63 - store { ptr, i64, i64 } zeroinitializer, ptr %a93 - store i64 0, ptr %a94 - br label %each.cond7490 -each.cond7490: - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t96 = load i64, ptr %t95 - %t97 = load i64, ptr %a94 - %t98 = icmp slt i64 %t97, %t96 - br i1 %t98, label %each.body7491, label %each.end7493 -each.body7491: - %t99 = load ptr, ptr %a14 - %t100 = getelementptr inbounds %S.gen.Leaf, ptr %t99, i64 %t97 - %t101 = load %S.gen.Leaf, ptr %t100 - store %S.gen.Leaf %t101, ptr %a102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_copy(ptr %a106, ptr %a105) - %t107 = load { ptr, i64, i64 }, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %a93, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %a93 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 - store { ptr, i64, i64 } %t107, ptr %t111 - store i64 %t109, ptr %t103 - br label %each.step7492 -each.step7492: - %t112 = load i64, ptr %a94 - %t113 = add i64 %t112, 1 - store i64 %t113, ptr %a94 - br label %each.cond7490 -each.end7493: - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4785, i64 2, i64 0 }, ptr %a115 - call void @finch_str_join(ptr %a116, ptr %a93, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4784, i64 2, i64 0 }, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.4786, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t127, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_str(ptr %a93) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t131 -endif7484: - %t132 = load i64, ptr %a4 - %t133 = icmp sgt i64 %t132, 16 - br i1 %t133, label %then7494, label %endif7496 -then7494: - %t134 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } { ptr @.str.4787, i64 8, i64 0 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t137 -endif7496: - %t138 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t138 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load i64, ptr %a5 - %t142 = icmp sge i64 %t141, 16 - br i1 %t142, label %then7497, label %else7498 -then7497: - %t143 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t143 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i64 %t145 - store { ptr, i64, i64 } { ptr @.str.4789, i64 4, i64 0 }, ptr %t148 - store i64 %t146, ptr %t144 - %t149 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } { ptr @.str.4790, i64 4, i64 0 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif7499 -else7498: - %t152 = load i64, ptr %a4 - %t153 = icmp sle i64 %t152, 8 - br i1 %t153, label %then7500, label %else7501 -then7500: - %t154 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t157, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t154 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t156 - store { ptr, i64, i64 } { ptr @.str.4791, i64 3, i64 0 }, ptr %t159 - store i64 %t157, ptr %t155 - %t160 = load i64, ptr %a4 - %t161 = mul i64 %t160, 8 - call void @finch_str_from_int(ptr %a162, i64 %t161) - %t163 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4792, i64 1, i64 0 }, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t168, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7502 -else7501: - %t172 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 - %t174 = load i64, ptr %t173 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %t172, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %t172 - %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 - store { ptr, i64, i64 } { ptr @.str.4793, i64 9, i64 0 }, ptr %t177 - store i64 %t175, ptr %t173 - %t178 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } { ptr @.str.4794, i64 9, i64 0 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_drop(ptr %a180) - br label %endif7502 -endif7502: - br label %endif7499 -endif7499: - %t181 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t181 -} - -define internal void @finch.drop.S_gen_Abi(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) { -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 - %a27 = alloca %S.gen.StructDef, align 16 - %a28 = alloca %S.gen.StructDef, align 16 - %a30 = alloca %S.gen.StructDef, align 16 - %a33 = alloca i64, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %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 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4795, 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.4796, 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 %then7503, label %endif7505 -then7503: - %t11 = load %S.gen.Abi, ptr %a4 - ret %S.gen.Abi %t11 -endif7505: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7506, label %ok7507 -panic7506: - call void @finch_panic(ptr @.str.4797, i64 4318, ptr @.str.4798) - unreachable -ok7507: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = call i64 @finch.gen.findStruct(ptr %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t19) - %t21 = load { ptr, i64, i64 }, ptr %t14 - %t22 = extractvalue { ptr, i64, i64 } %t21, 1 - %t23 = icmp uge i64 %t20, %t22 - br i1 %t23, label %range7508, label %inrange7509 -range7508: - call void @finch_panic_index(ptr @.str.4799, i64 4318, i64 %t20, i64 %t22) - unreachable -inrange7509: - %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 9 - %t32 = load i64, ptr %t31 - store i64 %t32, ptr %a33 - %t34 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 8, ptr %t34 - %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t36 = load i64, ptr %t35 - %t37 = icmp sgt i64 %t36, 8 - br i1 %t37, label %then7510, label %endif7512 -then7510: - %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t39 = load i64, ptr %t38 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 %t39, ptr %t40 - br label %endif7512 -endif7512: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic7513, label %ok7514 -panic7513: - call void @finch_panic(ptr @.str.4800, i64 4324, ptr @.str.4801) - unreachable -ok7514: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 31 - %t44 = getelementptr inbounds %S.platform.Target, ptr %t43, i32 0, i32 4 - %t45 = load i1, ptr %t44 - br i1 %t45, label %then7515, label %endif7517 -then7515: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a2 - %t48 = load %S.gen.Abi, ptr %a4 - %t49 = load i64, ptr %a33 - %t50 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t51 = load i64, ptr %t50 - %t52 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t46, %S.ast.Type %t47, %S.gen.Abi %t48, i64 %t49, i64 %t51) - call void @finch.drop.S_gen_StructDef(ptr %a30) - call void @finch.drop.S_gen_Abi(ptr %a4) - ret %S.gen.Abi %t52 -endif7517: - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic7518, label %ok7519 -panic7518: - call void @finch_panic(ptr @.str.4802, i64 4327, ptr @.str.4803) - unreachable -ok7519: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 31 - %t56 = getelementptr inbounds %S.platform.Target, ptr %t55, i32 0, i32 1 - %t57 = load i1, ptr %t56 - br i1 %t57, label %then7520, label %endif7522 -then7520: - %t58 = load i64, ptr %a33 - %t59 = icmp eq i64 %t58, 1 - br label %logic.from7523 -logic.from7523: - br i1 %t59, label %logic.end7525, label %logic.rhs7524 -logic.rhs7524: - %t60 = load i64, ptr %a33 - %t61 = icmp eq i64 %t60, 2 - br label %logic.rend7526 -logic.rend7526: - br label %logic.end7525 -logic.end7525: - %t62 = phi i1 [ true, %logic.from7523 ], [ %t61, %logic.rend7526 ] - br label %logic.from7527 -logic.from7527: - br i1 %t62, label %logic.end7529, label %logic.rhs7528 -logic.rhs7528: - %t63 = load i64, ptr %a33 - %t64 = icmp eq i64 %t63, 4 - br label %logic.rend7530 -logic.rend7530: - br label %logic.end7529 -logic.end7529: - %t65 = phi i1 [ true, %logic.from7527 ], [ %t64, %logic.rend7530 ] - br label %logic.from7531 -logic.from7531: - br i1 %t65, label %logic.end7533, label %logic.rhs7532 -logic.rhs7532: - %t66 = load i64, ptr %a33 - %t67 = icmp eq i64 %t66, 8 - br label %logic.rend7534 -logic.rend7534: - br label %logic.end7533 -logic.end7533: - %t68 = phi i1 [ true, %logic.from7531 ], [ %t67, %logic.rend7534 ] - br i1 %t68, label %then7535, label %else7536 -then7535: - %t69 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } { ptr @.str.4804, i64 6, i64 0 }, ptr %t69 - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load i64, ptr %a33 - %t75 = mul i64 %t74, 8 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4805, i64 1, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load i64, ptr %t73 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t72 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t73 - %t87 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range7538, label %inrange7539 -range7538: - call void @finch_panic_index(ptr @.str.4806, i64 4333, i64 0, i64 %t89) - unreachable -inrange7539: - %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 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif7537 -else7536: - %t100 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } { ptr @.str.4807, i64 8, i64 0 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif7537 -endif7537: - %t103 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t103 -endif7522: - %t104 = load i64, ptr %a33 - %t105 = icmp sgt i64 %t104, 16 - br label %logic.from7540 -logic.from7540: - br i1 %t105, label %logic.end7542, label %logic.rhs7541 -logic.rhs7541: - %t106 = load i64, ptr %a33 - %t107 = icmp eq i64 %t106, 0 - br label %logic.rend7543 -logic.rend7543: - br label %logic.end7542 -logic.end7542: - %t108 = phi i1 [ true, %logic.from7540 ], [ %t107, %logic.rend7543 ] - br i1 %t108, label %then7544, label %endif7546 -then7544: - %t109 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } { ptr @.str.4808, i64 6, i64 0 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t112 -endif7546: - %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 %a33 - %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.cond7547 -each.cond7547: - %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.body7548, label %each.end7550 -each.body7548: - %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 %then7551, label %endif7553 -then7551: - store i64 8, ptr %a148 - br label %endif7553 -endif7553: - %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 %panic7554, label %ok7555 -panic7554: - call void @finch_panic(ptr @.str.4809, i64 4352, ptr @.str.4810) - unreachable -ok7555: - %t155 = srem i64 %t152, %t153 - %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then7556, label %endif7558 -then7556: - %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } { ptr @.str.4811, i64 6, i64 0 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t160 -endif7558: - %t161 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 - %t162 = load i64, ptr %t161 - %t163 = sdiv i64 %t162, 8 - store i64 %t163, ptr %a164 - %t165 = load i64, ptr %a164 - %t166 = load { ptr, i64, i64 }, ptr %a128 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range7559, label %inrange7560 -range7559: - call void @finch_panic_index(ptr @.str.4812, i64 4357, i64 %t165, i64 %t167) - unreachable -inrange7560: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds i64, ptr %t169, i64 %t165 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 1 - br label %logic.from7561 -logic.from7561: - br i1 %t172, label %logic.end7563, label %logic.rhs7562 -logic.rhs7562: - %t173 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2 - %t174 = load i1, ptr %t173 - %t175 = xor i1 %t174, true - br label %logic.rend7564 -logic.rend7564: - br label %logic.end7563 -logic.end7563: - %t176 = phi i1 [ true, %logic.from7561 ], [ %t175, %logic.rend7564 ] - br i1 %t176, label %then7565, label %else7566 -then7565: - %t177 = load i64, ptr %a164 - %t178 = load { ptr, i64, i64 }, ptr %a128 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range7568, label %inrange7569 -range7568: - call void @finch_panic_index(ptr @.str.4813, i64 4358, i64 %t177, i64 %t179) - unreachable -inrange7569: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds i64, ptr %t181, i64 %t177 - store i64 1, ptr %t182 - br label %endif7567 -else7566: - %t183 = load i64, ptr %a164 - %t184 = load { ptr, i64, i64 }, ptr %a128 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range7570, label %inrange7571 -range7570: - call void @finch_panic_index(ptr @.str.4814, i64 4360, i64 %t183, i64 %t185) - unreachable -inrange7571: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t183 - store i64 2, ptr %t188 - br label %endif7567 -endif7567: - %t189 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 - %t190 = load i1, ptr %t189 - br i1 %t190, label %then7572, label %endif7574 -then7572: - %t191 = load i64, ptr %a164 - %t192 = load { ptr, i64, i64 }, ptr %a136 - %t193 = extractvalue { ptr, i64, i64 } %t192, 1 - %t194 = icmp uge i64 %t191, %t193 - br i1 %t194, label %range7575, label %inrange7576 -range7575: - call void @finch_panic_index(ptr @.str.4815, i64 4363, i64 %t191, i64 %t193) - unreachable -inrange7576: - %t195 = extractvalue { ptr, i64, i64 } %t192, 0 - %t196 = getelementptr inbounds i1, ptr %t195, i64 %t191 - store i1 true, ptr %t196 - br label %endif7574 -endif7574: - br label %each.step7549 -each.step7549: - %t197 = load i64, ptr %a137 - %t198 = add i64 %t197, 1 - store i64 %t198, ptr %a137 - br label %each.cond7547 -each.end7550: - %t199 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } { ptr @.str.4816, i64 6, i64 0 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load i64, ptr %a120 - store i64 0, ptr %a203 - br label %for.cond7577 -for.cond7577: - %t204 = load i64, ptr %a203 - %t205 = icmp slt i64 %t204, %t202 - br i1 %t205, label %for.body7578, label %for.end7580 -for.body7578: - %t206 = load i64, ptr %a33 - %t207 = load i64, ptr %a203 - %t208 = mul i64 8, %t207 - %t209 = sub i64 %t206, %t208 - store i64 %t209, ptr %a210 - %t211 = load i64, ptr %a210 - %t212 = icmp sgt i64 %t211, 8 - br i1 %t212, label %then7581, label %endif7583 -then7581: - store i64 8, ptr %a210 - br label %endif7583 -endif7583: - %t213 = load i64, ptr %a203 - %t214 = load { ptr, i64, i64 }, ptr %a128 - %t215 = extractvalue { ptr, i64, i64 } %t214, 1 - %t216 = icmp uge i64 %t213, %t215 - br i1 %t216, label %range7584, label %inrange7585 -range7584: - call void @finch_panic_index(ptr @.str.4817, i64 4372, i64 %t213, i64 %t215) - unreachable -inrange7585: - %t217 = extractvalue { ptr, i64, i64 } %t214, 0 - %t218 = getelementptr inbounds i64, ptr %t217, i64 %t213 - %t219 = load i64, ptr %t218 - %t220 = icmp eq i64 %t219, 2 - br i1 %t220, label %then7586, label %else7587 -then7586: - %t221 = load i64, ptr %a203 - %t222 = load { ptr, i64, i64 }, ptr %a136 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 %t221, %t223 - br i1 %t224, label %range7589, label %inrange7590 -range7589: - call void @finch_panic_index(ptr @.str.4818, i64 4373, i64 %t221, i64 %t223) - unreachable -inrange7590: - %t225 = extractvalue { ptr, i64, i64 } %t222, 0 - %t226 = getelementptr inbounds i1, ptr %t225, i64 %t221 - %t227 = load i1, ptr %t226 - br i1 %t227, label %then7591, label %else7592 -then7591: - %t228 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i32 0, i32 1 - %t230 = load i64, ptr %t229 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %t228, i64 %t231, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %t228 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t230 - store { ptr, i64, i64 } { ptr @.str.4819, i64 6, i64 0 }, ptr %t233 - store i64 %t231, ptr %t229 - br label %endif7593 -else7592: - %t234 = load i64, ptr %a210 - %t235 = icmp sgt i64 %t234, 4 - br i1 %t235, label %then7594, label %else7595 -then7594: - %t236 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 - %t238 = load i64, ptr %t237 - %t239 = add i64 %t238, 1 - call void @finch_arr_reserve(ptr %t236, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t240 = load ptr, ptr %t236 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238 - store { ptr, i64, i64 } { ptr @.str.4820, i64 11, i64 0 }, ptr %t241 - store i64 %t239, ptr %t237 - br label %endif7596 -else7595: - %t242 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %t242, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %t242 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } { ptr @.str.4821, i64 5, i64 0 }, ptr %t247 - store i64 %t245, ptr %t243 - br label %endif7596 -endif7596: - br label %endif7593 -endif7593: - br label %endif7588 -else7587: - %t248 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t250 = load i64, ptr %a210 - %t251 = mul i64 %t250, 8 - call void @finch_str_from_int(ptr %a252, i64 %t251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.4822, i64 1, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - store { ptr, i64, i64 } %t253, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a254 - %t259 = load i64, ptr %t249 - %t260 = add i64 %t259, 1 - call void @finch_arr_reserve(ptr %t248, i64 %t260, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t261 = load ptr, ptr %t248 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t261, i64 %t259 - store { ptr, i64, i64 } %t258, ptr %t262 - store i64 %t260, ptr %t249 - br label %endif7588 -endif7588: - br label %for.step7579 -for.step7579: - %t263 = load i64, ptr %a203 - %t264 = add i64 %t263, 1 - store i64 %t264, ptr %a203 - br label %for.cond7577 -for.end7580: - %t265 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = icmp eq i64 %t267, 1 - br i1 %t268, label %then7597, label %else7598 -then7597: - %t269 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t270 = load { ptr, i64, i64 }, ptr %t269 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 0, %t271 - br i1 %t272, label %range7600, label %inrange7601 -range7600: - call void @finch_panic_index(ptr @.str.4823, i64 4385, i64 0, i64 %t271) - unreachable -inrange7601: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0 - %t275 = load { ptr, i64, i64 }, ptr %t274 - %t276 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t275, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch_str_drop(ptr %a281) - br label %endif7599 -else7598: - %t282 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4825, i64 2, i64 0 }, ptr %a284 - call void @finch_str_join(ptr %a285, ptr %t282, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.4824, i64 2, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4826, i64 2, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } %t296, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - br label %endif7599 -endif7599: - %t300 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t300 -} - -define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) { -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 - %a12 = alloca %S.gen.Abi, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca i64, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.gen.Abi, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a88 = alloca i64, align 16 - %a90 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Abi, align 16 - %a155 = alloca %S.gen.Abi, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 - %t11 = load %S.gen.Abi, ptr %t10 - store %S.gen.Abi %t9, ptr %t10 - store %S.gen.Abi %t11, ptr %a12 - call void @finch.drop.S_gen_Abi(ptr %a12) - %t13 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } { ptr @.str.4827, i64 4, i64 0 }, ptr %t13 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4828, i64 4, i64 0 }, ptr %a19 - %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) - %t21 = icmp eq i32 %t20, 0 - br i1 %t21, label %then7602, label %endif7604 -then7602: - %t22 = load ptr, ptr %a1 - %t23 = load %S.ast.Type, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t22, %S.ast.Type %t23) - %t25 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t24, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_drop(ptr %a27) - br label %endif7604 -endif7604: - %t28 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t29 = getelementptr inbounds %S.gen.Abi, ptr %t28, i32 0, i32 0 - %t30 = load { ptr, i64, i64 }, ptr %t29 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.4829, i64 8, i64 0 }, ptr %a32 - %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) - %t34 = icmp ne i32 %t33, 0 - br i1 %t34, label %then7605, label %endif7607 -then7605: - %t35 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t36 = getelementptr inbounds %S.gen.Abi, ptr %t35, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - store { ptr, i64, i64 } { ptr @.str.4830, i64 6, i64 0 }, ptr %t36 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif7607 -endif7607: - %t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %t39, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.4831, i64 6, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then7608, label %else7609 -then7608: - %t46 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3 - store i1 true, ptr %t46 - %t47 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } { ptr @.str.4832, i64 4, i64 0 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load i64, ptr %a5 - %t51 = sub i64 %t50, 1 - store i64 %t51, ptr %a5 - br label %endif7610 -else7609: - %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t53 = getelementptr inbounds %S.gen.Abi, ptr %t52, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.4833, i64 6, i64 0 }, ptr %a56 - %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %then7611, label %endif7613 -then7611: - %t59 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t60 = getelementptr inbounds %S.gen.Abi, ptr %t59, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t65, ptr %t62 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif7613 -endif7613: - br label %endif7610 -endif7610: - store i64 0, ptr %a68 - br label %each.cond7614 -each.cond7614: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load i64, ptr %a68 - %t72 = icmp slt i64 %t71, %t70 - br i1 %t72, label %each.body7615, label %each.end7617 -each.body7615: - %t73 = load ptr, ptr %a3 - %t74 = getelementptr inbounds %S.ast.Type, ptr %t73, i64 %t71 - %t75 = load %S.ast.Type, ptr %t74 - store %S.ast.Type %t75, ptr %a76 - %t77 = load ptr, ptr %a1 - %t78 = load %S.ast.Type, ptr %a76 - %t79 = call %S.gen.Abi @finch.gen.classify(ptr %t77, %S.ast.Type %t78) - store %S.gen.Abi %t79, ptr %a80 - %t81 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4834, i64 6, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then7618, label %else7619 -then7618: - store i64 0, ptr %a87 - store i64 0, ptr %a88 - %t89 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 1 - store i64 0, ptr %a90 - br label %each.cond7621 -each.cond7621: - %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.body7622, label %each.end7624 -each.body7622: - %t95 = load ptr, ptr %t89 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a102 - %t103 = call i32 @finch_str_starts(ptr %a100, ptr %a102) - %t104 = icmp ne i32 %t103, 0 - br i1 %t104, label %then7625, label %else7626 -then7625: - %t105 = load i64, ptr %a87 - %t106 = add i64 %t105, 1 - store i64 %t106, ptr %a87 - br label %endif7627 -else7626: - %t107 = load i64, ptr %a88 - %t108 = add i64 %t107, 1 - store i64 %t108, ptr %a88 - br label %endif7627 -endif7627: - br label %each.step7623 -each.step7623: - %t109 = load i64, ptr %a90 - %t110 = add i64 %t109, 1 - store i64 %t110, ptr %a90 - br label %each.cond7621 -each.end7624: - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic7628, label %ok7629 -panic7628: - call void @finch_panic(ptr @.str.4837, i64 4425, ptr @.str.4838) - unreachable -ok7629: - %t113 = getelementptr inbounds %S.gen.Gen, ptr %t111, i32 0, i32 31 - %t114 = getelementptr inbounds %S.platform.Target, ptr %t113, i32 0, i32 1 - %t115 = load i1, ptr %t114 - br label %logic.from7630 -logic.from7630: - br i1 %t115, label %logic.end7632, label %logic.rhs7631 -logic.rhs7631: - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic7633, label %ok7634 -panic7633: - call void @finch_panic(ptr @.str.4839, i64 4425, ptr @.str.4840) - unreachable -ok7634: - %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 31 - %t119 = getelementptr inbounds %S.platform.Target, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.rend7635 -logic.rend7635: - br label %logic.end7632 -logic.end7632: - %t121 = phi i1 [ true, %logic.from7630 ], [ %t120, %logic.rend7635 ] - br label %logic.from7636 -logic.from7636: - br i1 %t121, label %logic.end7638, label %logic.rhs7637 -logic.rhs7637: - %t122 = load i64, ptr %a87 - %t123 = load i64, ptr %a5 - %t124 = icmp sle i64 %t122, %t123 - br label %logic.from7639 -logic.from7639: - br i1 %t124, label %logic.rhs7640, label %logic.end7641 -logic.rhs7640: - %t125 = load i64, ptr %a88 - %t126 = load i64, ptr %a6 - %t127 = icmp sle i64 %t125, %t126 - br label %logic.rend7642 -logic.rend7642: - br label %logic.end7641 -logic.end7641: - %t128 = phi i1 [ false, %logic.from7639 ], [ %t127, %logic.rend7642 ] - br label %logic.rend7643 -logic.rend7643: - br label %logic.end7638 -logic.end7638: - %t129 = phi i1 [ true, %logic.from7636 ], [ %t128, %logic.rend7643 ] - br i1 %t129, label %then7644, label %else7645 -then7644: - %t130 = load i64, ptr %a87 - %t131 = load i64, ptr %a5 - %t132 = sub i64 %t131, %t130 - store i64 %t132, ptr %a5 - %t133 = load i64, ptr %a88 - %t134 = load i64, ptr %a6 - %t135 = sub i64 %t134, %t133 - store i64 %t135, ptr %a6 - br label %endif7646 -else7645: - %t136 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t137 = load { ptr, i64, i64 }, ptr %t136 - store { ptr, i64, i64 } { ptr @.str.4841, i64 6, i64 0 }, ptr %t136 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif7646 -endif7646: - br label %endif7620 -else7619: - %t139 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.4842, i64 6, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %then7647, label %endif7649 -then7647: - %t145 = load %S.ast.Type, ptr %a76 - %t146 = call i1 @finch.gen.isFloat(%S.ast.Type %t145) - br i1 %t146, label %then7650, label %else7651 -then7650: - %t147 = load i64, ptr %a6 - %t148 = sub i64 %t147, 1 - store i64 %t148, ptr %a6 - br label %endif7652 -else7651: - %t149 = load i64, ptr %a5 - %t150 = sub i64 %t149, 1 - store i64 %t150, ptr %a5 - br label %endif7652 -endif7652: - br label %endif7649 -endif7649: - br label %endif7620 -endif7620: - %t151 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load %S.gen.Abi, ptr %a80 - store %S.gen.Abi %t153, ptr %a154 - call void @finch.copy.S_gen_Abi(ptr %a155, ptr %a154) - %t156 = load %S.gen.Abi, ptr %a155 - %t157 = load i64, ptr %t152 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t151 - %t160 = getelementptr inbounds %S.gen.Abi, ptr %t159, i64 %t157 - store %S.gen.Abi %t156, ptr %t160 - store i64 %t158, ptr %t152 - call void @finch.drop.S_gen_Abi(ptr %a80) - br label %each.step7616 -each.step7616: - %t161 = load i64, ptr %a68 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a68 - br label %each.cond7614 -each.end7617: - %t163 = load %S.gen.Plan, ptr %a4 - ret %S.gen.Plan %t163 -} - -define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.4843, 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 %then7653, label %endif7655 -then7653: - ret void -endif7655: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7656, label %ok7657 -panic7656: - call void @finch_panic(ptr @.str.4844, i64 4447, ptr @.str.4845) - unreachable -ok7657: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %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 %range7658, label %inrange7659 -range7658: - call void @finch_panic_index(ptr @.str.4846, i64 4447, i64 %t20, i64 %t22) - unreachable -inrange7659: - %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 %then7660, label %endif7662 -then7660: - %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.4847, 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.4848, i64 2, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t45, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t45, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4849, i64 18, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load %S.ast.Type, ptr %a4 - %t58 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t57) - store { ptr, i64, i64 } %t56, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t56, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4850, i64 20, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif7662 -endif7662: - %t71 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 - %t73 = load i64, ptr %t72 - %t74 = icmp sgt i64 %t73, 0 - br i1 %t74, label %then7663, label %endif7665 -then7663: - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Node, ptr %a2 - %t77 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.4851, i64 16, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4852, i64 2, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t86, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4853, i64 12, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load %S.ast.Type, ptr %a4 - %t99 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t98) - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t99, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4854, i64 40, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t110, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } %t117) - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif7665 -endif7665: - call void @finch.drop.S_gen_StructDef(ptr %a30) - 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.from7666 -logic.from7666: - br i1 %t3, label %logic.end7668, label %logic.rhs7667 -logic.rhs7667: - %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.4855, 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.rend7669 -logic.rend7669: - br label %logic.end7668 -logic.end7668: - %t10 = phi i1 [ true, %logic.from7666 ], [ %t9, %logic.rend7669 ] - br label %logic.from7670 -logic.from7670: - br i1 %t10, label %logic.end7672, label %logic.rhs7671 -logic.rhs7671: - %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.4856, 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.rend7673 -logic.rend7673: - br label %logic.end7672 -logic.end7672: - %t17 = phi i1 [ true, %logic.from7670 ], [ %t16, %logic.rend7673 ] - br label %logic.from7674 -logic.from7674: - br i1 %t17, label %logic.end7676, label %logic.rhs7675 -logic.rhs7675: - %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.4857, 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.rend7677 -logic.rend7677: - br label %logic.end7676 -logic.end7676: - %t24 = phi i1 [ true, %logic.from7674 ], [ %t23, %logic.rend7677 ] - 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 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca i64, align 16 - %a106 = alloca %S.gen.FnSig, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %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 %then7678, label %endif7680 -then7678: - %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.4858, i64 59, i64 0 }) - br label %endif7680 -endif7680: - %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7 - %t11 = load i1, ptr %t10 - br i1 %t11, label %then7681, label %endif7683 -then7681: - %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.4859, i64 74, i64 0 }) - br label %endif7683 -endif7683: - %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 %then7684, label %endif7686 -then7684: - %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.4860, i64 29, i64 0 }) - br label %endif7686 -endif7686: - %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.cond7687 -for.cond7687: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t22 - br i1 %t25, label %for.body7688, label %for.end7690 -for.body7688: - %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 %range7691, label %inrange7692 -range7691: - call void @finch_panic_index(ptr @.str.4861, i64 4472, i64 %t27, i64 %t29) - unreachable -inrange7692: - %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 %then7693, label %endif7695 -then7693: - %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 %range7696, label %inrange7697 -range7696: - call void @finch_panic_index(ptr @.str.4862, i64 4473, i64 %t38, i64 %t40) - unreachable -inrange7697: - %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 %range7698, label %inrange7699 -range7698: - call void @finch_panic_index(ptr @.str.4864, i64 4473, i64 %t46, i64 %t48) - unreachable -inrange7699: - %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.4863, i64 66, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4865, i64 50, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - br label %endif7695 -endif7695: - br label %for.step7689 -for.step7689: - %t65 = load i64, ptr %a23 - %t66 = add i64 %t65, 1 - store i64 %t66, ptr %a23 - br label %for.cond7687 -for.end7690: - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t68 = getelementptr inbounds %S.ast.Type, ptr %t67, i32 0, i32 0 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.4866, i64 4, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp eq i32 %t72, 0 - br label %logic.from7700 -logic.from7700: - br i1 %t73, label %logic.rhs7701, label %logic.end7702 -logic.rhs7701: - %t74 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t75 = load %S.ast.Type, ptr %t74 - %t76 = call i1 @finch.gen.cPlain(%S.ast.Type %t75) - %t77 = xor i1 %t76, true - br label %logic.rend7703 -logic.rend7703: - br label %logic.end7702 -logic.end7702: - %t78 = phi i1 [ false, %logic.from7700 ], [ %t77, %logic.rend7703 ] - br i1 %t78, label %then7704, label %endif7706 -then7704: - %t79 = load ptr, ptr %a1 - %t80 = load %S.ast.Node, ptr %a2 - %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t82 = load %S.ast.Type, ptr %t81 - %t83 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t82) - store { ptr, i64, i64 } { ptr @.str.4867, i64 69, i64 0 }, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4868, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif7706 -endif7706: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic7707, label %ok7708 -panic7707: - call void @finch_panic(ptr @.str.4869, i64 4479, ptr @.str.4870) - unreachable -ok7708: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 15 - store i64 0, ptr %a98 - br label %each.cond7709 -each.cond7709: - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = load i64, ptr %a98 - %t102 = icmp slt i64 %t101, %t100 - br i1 %t102, label %each.body7710, label %each.end7712 -each.body7710: - %t103 = load ptr, ptr %t97 - %t104 = getelementptr inbounds %S.gen.FnSig, ptr %t103, i64 %t101 - %t105 = load %S.gen.FnSig, ptr %t104 - store %S.gen.FnSig %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 5 - %t108 = load i1, ptr %t107 - br label %logic.from7713 -logic.from7713: - br i1 %t108, label %logic.rhs7714, label %logic.end7715 -logic.rhs7714: - %t109 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a113 - store { ptr, i64, i64 } %t112, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7716 -logic.rend7716: - br label %logic.end7715 -logic.end7715: - %t117 = phi i1 [ false, %logic.from7713 ], [ %t116, %logic.rend7716 ] - br i1 %t117, label %then7717, label %endif7719 -then7717: - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Node, ptr %a2 - %t120 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } { ptr @.str.4871, 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.4872, i64 38, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a131 - call void @finch_str_drop(ptr %a131) - br label %endif7719 -endif7719: - br label %each.step7711 -each.step7711: - %t132 = load i64, ptr %a98 - %t133 = add i64 %t132, 1 - store i64 %t133, ptr %a98 - br label %each.cond7709 -each.end7712: - 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 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - 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.cond7720 -for.cond7720: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body7721, label %for.end7723 -for.body7721: - %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 %range7724, label %inrange7725 -range7724: - call void @finch_panic_index(ptr @.str.4873, i64 4492, i64 %t15, i64 %t17) - unreachable -inrange7725: - %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.4874, 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 %then7726, label %else7727 -then7726: - %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.4875, i64 13, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load i64, ptr %t32 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %a3 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 - store { ptr, i64, i64 } %t40, ptr %t44 - store i64 %t42, ptr %t32 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.4877, i64 13, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4878, i64 3, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = call { ptr, i64, i64 } @finch.gen.op(ptr %t46, { ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } { ptr @.str.4876, i64 3, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %t45 - %t68 = add i64 %t67, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t69 = load ptr, ptr %a4 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67 - store { ptr, i64, i64 } %t66, ptr %t70 - store i64 %t68, ptr %t45 - br label %endif7728 -else7727: - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Type, ptr %a25 - %t74 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t72, %S.ast.Type %t73) - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a25 - %t77 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t75, %S.ast.Type %t76) - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4879, i64 3, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - %t98 = load i64, ptr %t71 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t99, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %a3 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t98 - store { ptr, i64, i64 } %t97, ptr %t101 - store i64 %t99, ptr %t71 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t103 = load ptr, ptr %a1 - %t104 = load %S.ast.Type, ptr %a25 - %t105 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t103, %S.ast.Type %t104) - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4880, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t110, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = load i64, ptr %t102 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t121, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %a4 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t120 - store { ptr, i64, i64 } %t119, ptr %t123 - store i64 %t121, ptr %t102 - br label %endif7728 -endif7728: - call void @finch.drop.S_ast_Type(ptr %a25) - br label %for.step7722 -for.step7722: - %t124 = load i64, ptr %a11 - %t125 = add i64 %t124, 1 - store i64 %t125, ptr %a11 - br label %for.cond7720 -for.end7723: - %t126 = load ptr, ptr %a1 - %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t128 = load %S.ast.Type, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t126, %S.ast.Type %t128) - store { ptr, i64, i64 } { ptr @.str.4881, i64 5, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4882, i64 1, i64 0 }, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - store { ptr, i64, i64 } %t134, ptr %a138 - call void @finch_str_drop(ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t139, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4883, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4884, i64 2, i64 0 }, ptr %a153 - call void @finch_str_join(ptr %a154, ptr %a4, ptr %a153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t151, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t151, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.4885, i64 1, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4886, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4887, i64 0, i64 0 }, ptr %a169 - %t170 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t171 = getelementptr inbounds %S.ast.Type, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.4888, i64 4, i64 0 }, ptr %a174 - %t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174) - %t176 = icmp ne i32 %t175, 0 - br i1 %t176, label %then7729, label %else7730 -then7729: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a167 - call void @finch.gen.emit(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t179, { ptr, i64, i64 } { ptr @.str.4889, i64 8, i64 0 }) - br label %endif7731 -else7730: - %t180 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t181 = getelementptr inbounds %S.ast.Type, ptr %t180, i32 0, i32 0 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } %t182, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.4890, i64 4, i64 0 }, ptr %a184 - %t185 = call i32 @finch_str_eq(ptr %a183, ptr %a184) - %t186 = icmp ne i32 %t185, 0 - br i1 %t186, label %then7732, label %else7733 -then7732: - %t187 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4891, i64 2, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4892, i64 8, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load ptr, ptr %a1 - %t192 = load ptr, ptr %a1 - %t193 = load ptr, ptr %a1 - %t194 = load { ptr, i64, i64 }, ptr %a167 - %t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } { ptr @.str.4894, i64 8, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.4895, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t205, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } { ptr @.str.4893, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.gen.emit(ptr %t191, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7734 -else7733: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t214, %S.ast.Type %t216) - %t218 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t217, ptr %a168 - store { ptr, i64, i64 } %t218, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load ptr, ptr %a1 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t222 = load %S.ast.Type, ptr %t221 - %t223 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t220, %S.ast.Type %t222) - %t224 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t223, ptr %a169 - store { ptr, i64, i64 } %t224, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4896, i64 4, i64 0 }, ptr %a229 - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a228 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.4897, i64 1, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load ptr, ptr %a1 - %t238 = load { ptr, i64, i64 }, ptr %a167 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t237, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t236, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t236, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.emit(ptr %t226, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7734 -endif7734: - br label %endif7731 -endif7731: - store { ptr, i64, i64 } { ptr @.str.4898, i64 0, i64 0 }, ptr %a247 - %t248 = load ptr, ptr %a1 - %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic7735, label %ok7736 -panic7735: - call void @finch_panic(ptr @.str.4899, i64 4517, ptr @.str.4900) - unreachable -ok7736: - %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 31 - %t251 = getelementptr inbounds %S.platform.Target, ptr %t250, i32 0, i32 1 - %t252 = load i1, ptr %t251 - br i1 %t252, label %then7737, label %endif7739 -then7737: - %t253 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4901, i64 10, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - br label %endif7739 -endif7739: - %t255 = load ptr, ptr %a1 - %t256 = load %S.gen.Saved, ptr %a7 - %t257 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4902, i64 6, i64 0 }, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a258 - %t262 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t261, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t261, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t267, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4903, i64 1, i64 0 }, ptr %a270 - call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) - store { ptr, i64, i64 } %t267, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a268 - %t273 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t272, ptr %a275 - store { ptr, i64, i64 } %t273, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t272, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4904, i64 2, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t283, ptr %a287 - store { ptr, i64, i64 } %t285, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t283, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.4905, i64 1, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4906, i64 2, i64 0 }, ptr %a297 - call void @finch_str_join(ptr %a298, ptr %a3, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t295, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t295, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t305, ptr %a307 - store { ptr, i64, i64 } { ptr @.str.4907, i64 1, i64 0 }, ptr %a308 - call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) - store { ptr, i64, i64 } %t305, ptr %a309 - call void @finch_str_drop(ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a306 - call void @finch.gen.endHelper(ptr %t255, %S.gen.Saved %t256, { ptr, i64, i64 } %t310) - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - call void @finch_str_copy(ptr %a315, ptr %a314) - %t316 = load { ptr, i64, i64 }, ptr %a315 - call void @finch_str_drop(ptr %a247) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Saved(ptr %a7) - call void @finch.drop.arr_str(ptr %a4) - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t316 -} - -define internal void @finch.drop.arr_S_gen_Abi(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond7862 -n.cond7862: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body7863, label %n.end7864 -n.body7863: - %t7 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Abi(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond7862 -n.end7864: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Plan(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Abi(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_gen_Abi(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) { -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca i64, align 16 - %a108 = alloca %S.ast.Type, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.gen.Plan, align 16 - %a276 = alloca %S.gen.Saved, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca i64, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca i64, align 16 - %a318 = alloca %S.ast.Type, align 16 - %a319 = alloca %S.ast.Type, align 16 - %a321 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.gen.Abi, align 16 - %a331 = alloca %S.gen.Abi, align 16 - %a333 = alloca %S.gen.Abi, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca i64, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a793 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a808 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7740, label %ok7741 -panic7740: - call void @finch_panic(ptr @.str.4908, i64 4526, ptr @.str.4909) - unreachable -ok7741: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 - %t7 = load i64, ptr %a2 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.4910, i64 4526, i64 %t7, i64 %t9) - unreachable -inrange7743: - %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.4911, i64 9, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.4912, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t30, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t30, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic7744, label %ok7745 -panic7744: - call void @finch_panic(ptr @.str.4913, i64 4528, ptr @.str.4914) - unreachable -ok7745: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 40 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4915, i64 2, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t42 - %t50 = load ptr, ptr %t41 - store i64 0, ptr %a51 - br label %find.cond7746 -find.cond7746: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body7747, label %find.end7750 -find.body7747: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit7748, label %find.next7749 -find.hit7748: - store i64 %t52, ptr %a48 - br label %find.end7750 -find.next7749: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond7746 -find.end7750: - store { ptr, i64, i64 } %t47, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load i64, ptr %a48 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then7751, label %endif7753 -then7751: - %t64 = load { ptr, i64, i64 }, ptr %a38 - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t64 -endif7753: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic7754, label %ok7755 -panic7754: - call void @finch_panic(ptr @.str.4916, i64 4531, ptr @.str.4917) - unreachable -ok7755: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 40 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4918, i64 2, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load i64, ptr %t68 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t67, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t67 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t68 - %t78 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = icmp sgt i64 %t80, 0 - br label %logic.from7756 -logic.from7756: - br i1 %t81, label %logic.end7758, label %logic.rhs7757 -logic.rhs7757: - %t82 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 - %t83 = load i1, ptr %t82 - br label %logic.rend7759 -logic.rend7759: - br label %logic.end7758 -logic.end7758: - %t84 = phi i1 [ true, %logic.from7756 ], [ %t83, %logic.rend7759 ] - br i1 %t84, label %then7760, label %endif7762 -then7760: - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Node, ptr %a3 - %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - store { ptr, i64, i64 } { ptr @.str.4919, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4920, i64 81, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.fail(ptr %t85, %S.ast.Node %t86, { ptr, i64, i64 } %t97) - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_drop(ptr %a98) - br label %endif7762 -endif7762: - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - store i64 0, ptr %a100 - br label %each.cond7763 -each.cond7763: - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t102 = load i64, ptr %t101 - %t103 = load i64, ptr %a100 - %t104 = icmp slt i64 %t103, %t102 - br i1 %t104, label %each.body7764, label %each.end7766 -each.body7764: - %t105 = load ptr, ptr %t99 - %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t103 - %t107 = load %S.ast.Type, ptr %t106 - store %S.ast.Type %t107, ptr %a108 - %t109 = load %S.ast.Type, ptr %a108 - %t110 = call i1 @finch.gen.isNumber(%S.ast.Type %t109) - br label %logic.from7767 -logic.from7767: - br i1 %t110, label %logic.end7769, label %logic.rhs7768 -logic.rhs7768: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4921, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7770 -logic.rend7770: - br label %logic.end7769 -logic.end7769: - %t117 = phi i1 [ true, %logic.from7767 ], [ %t116, %logic.rend7770 ] - br label %logic.from7771 -logic.from7771: - br i1 %t117, label %logic.end7773, label %logic.rhs7772 -logic.rhs7772: - %t118 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t119 = load { ptr, i64, i64 }, ptr %t118 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4922, i64 4, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend7774 -logic.rend7774: - br label %logic.end7773 -logic.end7773: - %t124 = phi i1 [ true, %logic.from7771 ], [ %t123, %logic.rend7774 ] - br label %logic.from7775 -logic.from7775: - br i1 %t124, label %logic.end7777, label %logic.rhs7776 -logic.rhs7776: - %t125 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4923, i64 3, i64 0 }, ptr %a128 - %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) - %t130 = icmp ne i32 %t129, 0 - br label %logic.rend7778 -logic.rend7778: - br label %logic.end7777 -logic.end7777: - %t131 = phi i1 [ true, %logic.from7775 ], [ %t130, %logic.rend7778 ] - br label %logic.from7779 -logic.from7779: - br i1 %t131, label %logic.end7781, label %logic.rhs7780 -logic.rhs7780: - %t132 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4924, i64 6, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp ne i32 %t136, 0 - br label %logic.from7782 -logic.from7782: - br i1 %t137, label %logic.rhs7783, label %logic.end7784 -logic.rhs7783: - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic7785, label %ok7786 -panic7785: - call void @finch_panic(ptr @.str.4925, i64 4536, ptr @.str.4926) - unreachable -ok7786: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load ptr, ptr %a1 - %t142 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 3 - %t143 = load { ptr, i64, i64 }, ptr %t142 - %t144 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 2 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = call i64 @finch.gen.findStruct(ptr %t141, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t145) - %t147 = load { ptr, i64, i64 }, ptr %t140 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 %t146, %t148 - br i1 %t149, label %range7787, label %inrange7788 -range7787: - call void @finch_panic_index(ptr @.str.4927, i64 4536, i64 %t146, i64 %t148) - unreachable -inrange7788: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.gen.StructDef, ptr %t150, i64 %t146 - %t152 = getelementptr inbounds %S.gen.StructDef, ptr %t151, i32 0, i32 2 - %t153 = load i1, ptr %t152 - br label %logic.rend7789 -logic.rend7789: - br label %logic.end7784 -logic.end7784: - %t154 = phi i1 [ false, %logic.from7782 ], [ %t153, %logic.rend7789 ] - br label %logic.rend7790 -logic.rend7790: - br label %logic.end7781 -logic.end7781: - %t155 = phi i1 [ true, %logic.from7779 ], [ %t154, %logic.rend7790 ] - %t156 = xor i1 %t155, true - br i1 %t156, label %then7791, label %endif7793 -then7791: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a3 - %t159 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } { ptr @.str.4928, i64 5, i64 0 }, ptr %a162 - store { ptr, i64, i64 } %t160, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4929, i64 95, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = load %S.ast.Type, ptr %a108 - %t171 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t170) - store { ptr, i64, i64 } %t169, ptr %a173 - store { ptr, i64, i64 } %t171, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t169, ptr %a175 - call void @finch_str_drop(ptr %a175) - store { ptr, i64, i64 } %t171, ptr %a176 - call void @finch_str_drop(ptr %a176) - %t177 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - br label %endif7793 -endif7793: - br label %each.step7765 -each.step7765: - %t179 = load i64, ptr %a100 - %t180 = add i64 %t179, 1 - store i64 %t180, ptr %a100 - br label %each.cond7763 -each.end7766: - %t181 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call i1 @finch.gen.isNumber(%S.ast.Type %t182) - br label %logic.from7794 -logic.from7794: - br i1 %t183, label %logic.end7796, label %logic.rhs7795 -logic.rhs7795: - %t184 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t185 = getelementptr inbounds %S.ast.Type, ptr %t184, i32 0, i32 0 - %t186 = load { ptr, i64, i64 }, ptr %t185 - store { ptr, i64, i64 } %t186, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4930, i64 4, i64 0 }, ptr %a188 - %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) - %t190 = icmp ne i32 %t189, 0 - br label %logic.rend7797 -logic.rend7797: - br label %logic.end7796 -logic.end7796: - %t191 = phi i1 [ true, %logic.from7794 ], [ %t190, %logic.rend7797 ] - br label %logic.from7798 -logic.from7798: - br i1 %t191, label %logic.end7800, label %logic.rhs7799 -logic.rhs7799: - %t192 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4931, i64 4, i64 0 }, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br label %logic.rend7801 -logic.rend7801: - br label %logic.end7800 -logic.end7800: - %t199 = phi i1 [ true, %logic.from7798 ], [ %t198, %logic.rend7801 ] - br label %logic.from7802 -logic.from7802: - br i1 %t199, label %logic.end7804, label %logic.rhs7803 -logic.rhs7803: - %t200 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.4932, i64 3, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.rend7805 -logic.rend7805: - br label %logic.end7804 -logic.end7804: - %t207 = phi i1 [ true, %logic.from7802 ], [ %t206, %logic.rend7805 ] - br label %logic.from7806 -logic.from7806: - br i1 %t207, label %logic.end7808, label %logic.rhs7807 -logic.rhs7807: - %t208 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t209 = getelementptr inbounds %S.ast.Type, ptr %t208, i32 0, i32 0 - %t210 = load { ptr, i64, i64 }, ptr %t209 - store { ptr, i64, i64 } %t210, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.4933, i64 4, i64 0 }, ptr %a212 - %t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212) - %t214 = icmp ne i32 %t213, 0 - br label %logic.rend7809 -logic.rend7809: - br label %logic.end7808 -logic.end7808: - %t215 = phi i1 [ true, %logic.from7806 ], [ %t214, %logic.rend7809 ] - br label %logic.from7810 -logic.from7810: - br i1 %t215, label %logic.end7812, label %logic.rhs7811 -logic.rhs7811: - %t216 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } %t218, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4934, i64 6, i64 0 }, ptr %a220 - %t221 = call i32 @finch_str_eq(ptr %a219, ptr %a220) - %t222 = icmp ne i32 %t221, 0 - br label %logic.from7813 -logic.from7813: - br i1 %t222, label %logic.rhs7814, label %logic.end7815 -logic.rhs7814: - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic7816, label %ok7817 -panic7816: - call void @finch_panic(ptr @.str.4935, i64 4540, ptr @.str.4936) - unreachable -ok7817: - %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 16 - %t226 = load ptr, ptr %a1 - %t227 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t228 = getelementptr inbounds %S.ast.Type, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - %t230 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t231 = getelementptr inbounds %S.ast.Type, ptr %t230, i32 0, i32 2 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = call i64 @finch.gen.findStruct(ptr %t226, { ptr, i64, i64 } %t229, { ptr, i64, i64 } %t232) - %t234 = load { ptr, i64, i64 }, ptr %t225 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range7818, label %inrange7819 -range7818: - call void @finch_panic_index(ptr @.str.4937, i64 4540, i64 %t233, i64 %t235) - unreachable -inrange7819: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds %S.gen.StructDef, ptr %t237, i64 %t233 - %t239 = getelementptr inbounds %S.gen.StructDef, ptr %t238, i32 0, i32 2 - %t240 = load i1, ptr %t239 - br label %logic.rend7820 -logic.rend7820: - br label %logic.end7815 -logic.end7815: - %t241 = phi i1 [ false, %logic.from7813 ], [ %t240, %logic.rend7820 ] - br label %logic.rend7821 -logic.rend7821: - br label %logic.end7812 -logic.end7812: - %t242 = phi i1 [ true, %logic.from7810 ], [ %t241, %logic.rend7821 ] - %t243 = xor i1 %t242, true - br i1 %t243, label %then7822, label %endif7824 -then7822: - %t244 = load ptr, ptr %a1 - %t245 = load %S.ast.Node, ptr %a3 - %t246 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t247 = load { ptr, i64, i64 }, ptr %t246 - store { ptr, i64, i64 } { ptr @.str.4938, i64 5, i64 0 }, ptr %a249 - store { ptr, i64, i64 } %t247, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4939, i64 38, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t258 = load %S.ast.Type, ptr %t257 - %t259 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t258) - store { ptr, i64, i64 } %t256, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t256, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a260 - call void @finch.gen.fail(ptr %t244, %S.ast.Node %t245, { ptr, i64, i64 } %t265) - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_drop(ptr %a266) - br label %endif7824 -endif7824: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t269 = load %S.ast.Type, ptr %t268 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t271 = load { ptr, i64, i64 }, ptr %t270 - %t272 = call %S.gen.Plan @finch.gen.makePlan(ptr %t267, %S.ast.Type %t269, { ptr, i64, i64 } %t271) - store %S.gen.Plan %t272, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t274) - store %S.gen.Saved %t275, ptr %a276 - store { ptr, i64, i64 } zeroinitializer, ptr %a277 - store i64 0, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.4940, i64 0, i64 0 }, ptr %a279 - %t280 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t281 = load i1, ptr %t280 - br i1 %t281, label %then7825, label %endif7827 -then7825: - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t285 = load %S.ast.Type, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t285) - store { ptr, i64, i64 } { ptr @.str.4941, i64 9, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4942, i64 14, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %t282 - %t298 = add i64 %t297, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t299 = load ptr, ptr %a277 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 - store { ptr, i64, i64 } %t296, ptr %t300 - store i64 %t298, ptr %t282 - %t301 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.4943, i64 3, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - store i64 1, ptr %a278 - br label %endif7827 -endif7827: - store { ptr, i64, i64 } zeroinitializer, ptr %a303 - %t304 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i32 0, i32 1 - %t306 = load i64, ptr %t305 - store i64 0, ptr %a307 - br label %for.cond7828 -for.cond7828: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t306 - br i1 %t309, label %for.body7829, label %for.end7831 -for.body7829: - %t310 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t311 = load i64, ptr %a307 - %t312 = load { ptr, i64, i64 }, ptr %t310 - %t313 = extractvalue { ptr, i64, i64 } %t312, 1 - %t314 = icmp uge i64 %t311, %t313 - br i1 %t314, label %range7832, label %inrange7833 -range7832: - call void @finch_panic_index(ptr @.str.4944, i64 4555, i64 %t311, i64 %t313) - unreachable -inrange7833: - %t315 = extractvalue { ptr, i64, i64 } %t312, 0 - %t316 = getelementptr inbounds %S.ast.Type, ptr %t315, i64 %t311 - %t317 = load %S.ast.Type, ptr %t316 - store %S.ast.Type %t317, ptr %a318 - call void @finch.copy.S_ast_Type(ptr %a319, ptr %a318) - %t320 = load %S.ast.Type, ptr %a319 - store %S.ast.Type %t320, ptr %a321 - %t322 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 1 - %t323 = load i64, ptr %a307 - %t324 = load { ptr, i64, i64 }, ptr %t322 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range7834, label %inrange7835 -range7834: - call void @finch_panic_index(ptr @.str.4945, i64 4556, i64 %t323, i64 %t325) - unreachable -inrange7835: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds %S.gen.Abi, ptr %t327, i64 %t323 - %t329 = load %S.gen.Abi, ptr %t328 - store %S.gen.Abi %t329, ptr %a330 - call void @finch.copy.S_gen_Abi(ptr %a331, ptr %a330) - %t332 = load %S.gen.Abi, ptr %a331 - store %S.gen.Abi %t332, ptr %a333 - %t334 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.4946, i64 6, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %then7836, label %else7837 -then7836: - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t341 = load ptr, ptr %a1 - %t342 = load %S.ast.Type, ptr %a321 - %t343 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t341, %S.ast.Type %t342) - store { ptr, i64, i64 } { ptr @.str.4947, i64 10, i64 0 }, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.4948, i64 8, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - %t354 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 3 - %t355 = load i64, ptr %t354 - call void @finch_str_from_int(ptr %a356, i64 %t355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t353, ptr %a359 - store { ptr, i64, i64 } %t357, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t353, ptr %a361 - call void @finch_str_drop(ptr %a361) - store { ptr, i64, i64 } %t357, ptr %a362 - call void @finch_str_drop(ptr %a362) - %t363 = load { ptr, i64, i64 }, ptr %a358 - store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4949, i64 3, i64 0 }, ptr %a366 - call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) - store { ptr, i64, i64 } %t363, ptr %a367 - call void @finch_str_drop(ptr %a367) - %t368 = load { ptr, i64, i64 }, ptr %a364 - %t369 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a370, i64 %t369) - %t371 = load { ptr, i64, i64 }, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t368, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - %t378 = load i64, ptr %t340 - %t379 = add i64 %t378, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t379, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t380 = load ptr, ptr %a277 - %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t378 - store { ptr, i64, i64 } %t377, ptr %t381 - store i64 %t379, ptr %t340 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t383 = load ptr, ptr %a1 - %t384 = load %S.ast.Type, ptr %a321 - %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.4950, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = load ptr, ptr %a1 - %t392 = load ptr, ptr %a1 - %t393 = load %S.ast.Type, ptr %a321 - %t394 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t392, %S.ast.Type %t393) - %t395 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a396, i64 %t395) - %t397 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4951, i64 2, i64 0 }, ptr %a399 - store { ptr, i64, i64 } %t397, ptr %a400 - call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) - store { ptr, i64, i64 } %t397, ptr %a401 - call void @finch_str_drop(ptr %a401) - %t402 = load { ptr, i64, i64 }, ptr %a398 - %t403 = call { ptr, i64, i64 } @finch.gen.load(ptr %t391, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t402) - store { ptr, i64, i64 } %t394, ptr %a404 - call void @finch_str_drop(ptr %a404) - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_drop(ptr %a405) - store { ptr, i64, i64 } %t390, ptr %a407 - store { ptr, i64, i64 } %t403, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t390, ptr %a409 - call void @finch_str_drop(ptr %a409) - store { ptr, i64, i64 } %t403, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a406 - %t412 = load i64, ptr %t382 - %t413 = add i64 %t412, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t413, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t414 = load ptr, ptr %a303 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t412 - store { ptr, i64, i64 } %t411, ptr %t415 - store i64 %t413, ptr %t382 - %t416 = load i64, ptr %a278 - %t417 = add i64 %t416, 1 - store i64 %t417, ptr %a278 - br label %endif7838 -else7837: - %t418 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t419 = load { ptr, i64, i64 }, ptr %t418 - store { ptr, i64, i64 } %t419, ptr %a420 - store { ptr, i64, i64 } { ptr @.str.4952, i64 8, i64 0 }, ptr %a421 - %t422 = call i32 @finch_str_eq(ptr %a420, ptr %a421) - %t423 = icmp ne i32 %t422, 0 - br i1 %t423, label %then7839, label %else7840 -then7839: - %t424 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t425 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a426, i64 %t425) - %t427 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.4953, i64 6, i64 0 }, ptr %a429 - store { ptr, i64, i64 } %t427, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = load i64, ptr %t424 - %t434 = add i64 %t433, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t435 = load ptr, ptr %a277 - %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433 - store { ptr, i64, i64 } %t432, ptr %t436 - store i64 %t434, ptr %t424 - %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t438 = load ptr, ptr %a1 - %t439 = load %S.ast.Type, ptr %a321 - %t440 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t438, %S.ast.Type %t439) - store { ptr, i64, i64 } %t440, ptr %a442 - store { ptr, i64, i64 } { ptr @.str.4954, i64 1, i64 0 }, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - %t446 = load ptr, ptr %a1 - %t447 = load ptr, ptr %a1 - %t448 = load %S.ast.Type, ptr %a321 - %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) - %t450 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } { ptr @.str.4955, i64 2, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t452, ptr %a456 - call void @finch_str_drop(ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a453 - %t458 = call { ptr, i64, i64 } @finch.gen.load(ptr %t446, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t449, ptr %a459 - call void @finch_str_drop(ptr %a459) - store { ptr, i64, i64 } %t457, ptr %a460 - call void @finch_str_drop(ptr %a460) - store { ptr, i64, i64 } %t445, ptr %a462 - store { ptr, i64, i64 } %t458, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t445, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t458, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a461 - %t467 = load i64, ptr %t437 - %t468 = add i64 %t467, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t468, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t469 = load ptr, ptr %a303 - %t470 = getelementptr inbounds { ptr, i64, i64 }, ptr %t469, i64 %t467 - store { ptr, i64, i64 } %t466, ptr %t470 - store i64 %t468, ptr %t437 - %t471 = load i64, ptr %a278 - %t472 = add i64 %t471, 1 - store i64 %t472, ptr %a278 - br label %endif7841 -else7840: - %t473 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t474 = load { ptr, i64, i64 }, ptr %t473 - store { ptr, i64, i64 } %t474, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.4956, i64 6, i64 0 }, ptr %a476 - %t477 = call i32 @finch_str_eq(ptr %a475, ptr %a476) - %t478 = icmp ne i32 %t477, 0 - br i1 %t478, label %then7842, label %else7843 -then7842: - %t479 = load ptr, ptr %a1 - %t480 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t479, { ptr, i64, i64 } { ptr @.str.4957, i64 9, i64 0 }) - store { ptr, i64, i64 } %t480, ptr %a481 - %t482 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load i64, ptr %t483 - store i64 0, ptr %a485 - br label %for.cond7845 -for.cond7845: - %t486 = load i64, ptr %a485 - %t487 = icmp slt i64 %t486, %t484 - br i1 %t487, label %for.body7846, label %for.end7848 -for.body7846: - %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t489 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t490 = load i64, ptr %a485 - %t491 = load { ptr, i64, i64 }, ptr %t489 - %t492 = extractvalue { ptr, i64, i64 } %t491, 1 - %t493 = icmp uge i64 %t490, %t492 - br i1 %t493, label %range7849, label %inrange7850 -range7849: - call void @finch_panic_index(ptr @.str.4958, i64 4568, i64 %t490, i64 %t492) - unreachable -inrange7850: - %t494 = extractvalue { ptr, i64, i64 } %t491, 0 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i64 %t490 - %t496 = load { ptr, i64, i64 }, ptr %t495 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.4959, i64 3, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - %t500 = load { ptr, i64, i64 }, ptr %a497 - %t501 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a502, i64 %t501) - %t503 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a505 - store { ptr, i64, i64 } %t503, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t500, ptr %a507 - call void @finch_str_drop(ptr %a507) - store { ptr, i64, i64 } %t503, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = load { ptr, i64, i64 }, ptr %a504 - %t510 = load i64, ptr %t488 - %t511 = add i64 %t510, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t511, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t512 = load ptr, ptr %a277 - %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i64 %t510 - store { ptr, i64, i64 } %t509, ptr %t513 - store i64 %t511, ptr %t488 - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t516 = load i64, ptr %a485 - %t517 = load { ptr, i64, i64 }, ptr %t515 - %t518 = extractvalue { ptr, i64, i64 } %t517, 1 - %t519 = icmp uge i64 %t516, %t518 - br i1 %t519, label %range7851, label %inrange7852 -range7851: - call void @finch_panic_index(ptr @.str.4960, i64 4569, i64 %t516, i64 %t518) - unreachable -inrange7852: - %t520 = extractvalue { ptr, i64, i64 } %t517, 0 - %t521 = getelementptr inbounds { ptr, i64, i64 }, ptr %t520, i64 %t516 - %t522 = load { ptr, i64, i64 }, ptr %t521 - %t523 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a524, i64 %t523) - %t525 = load { ptr, i64, i64 }, ptr %a524 - store { ptr, i64, i64 } { ptr @.str.4961, i64 2, i64 0 }, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t525, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = load ptr, ptr %a1 - %t532 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.4962, i64 31, i64 0 }, ptr %a534 - store { ptr, i64, i64 } %t532, ptr %a535 - call void @finch_str_concat(ptr %a533, ptr %a534, ptr %a535) - %t536 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t536, ptr %a538 - store { ptr, i64, i64 } { ptr @.str.4963, i64 6, i64 0 }, ptr %a539 - call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) - store { ptr, i64, i64 } %t536, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a537 - %t542 = load i64, ptr %a485 - %t543 = mul i64 8, %t542 - call void @finch_str_from_int(ptr %a544, i64 %t543) - %t545 = load { ptr, i64, i64 }, ptr %a544 - store { ptr, i64, i64 } %t541, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - store { ptr, i64, i64 } %t541, ptr %a549 - call void @finch_str_drop(ptr %a549) - store { ptr, i64, i64 } %t545, ptr %a550 - call void @finch_str_drop(ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a546 - %t552 = call { ptr, i64, i64 } @finch.gen.op(ptr %t531, { ptr, i64, i64 } %t551) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.gen.store(ptr %t514, { ptr, i64, i64 } %t522, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t552) - store { ptr, i64, i64 } %t530, ptr %a554 - call void @finch_str_drop(ptr %a554) - store { ptr, i64, i64 } %t552, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load i64, ptr %a278 - %t557 = add i64 %t556, 1 - store i64 %t557, ptr %a278 - br label %for.step7847 -for.step7847: - %t558 = load i64, ptr %a485 - %t559 = add i64 %t558, 1 - store i64 %t559, ptr %a485 - br label %for.cond7845 -for.end7848: - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t561 = load ptr, ptr %a1 - %t562 = load %S.ast.Type, ptr %a321 - %t563 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t561, %S.ast.Type %t562) - store { ptr, i64, i64 } %t563, ptr %a565 - store { ptr, i64, i64 } { ptr @.str.4964, i64 1, i64 0 }, ptr %a566 - call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) - store { ptr, i64, i64 } %t563, ptr %a567 - call void @finch_str_drop(ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a564 - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a321 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - %t573 = load { ptr, i64, i64 }, ptr %a481 - %t574 = call { ptr, i64, i64 } @finch.gen.load(ptr %t569, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_drop(ptr %a575) - store { ptr, i64, i64 } %t568, ptr %a577 - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) - store { ptr, i64, i64 } %t568, ptr %a579 - call void @finch_str_drop(ptr %a579) - store { ptr, i64, i64 } %t574, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a576 - %t582 = load i64, ptr %t560 - %t583 = add i64 %t582, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t583, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t584 = load ptr, ptr %a303 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i64 %t582 - store { ptr, i64, i64 } %t581, ptr %t585 - store i64 %t583, ptr %t560 - call void @finch_str_drop(ptr %a481) - br label %endif7844 -else7843: - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t587 = load ptr, ptr %a1 - %t588 = load %S.ast.Type, ptr %a321 - %t589 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t587, %S.ast.Type %t588) - %t590 = load ptr, ptr %a1 - %t591 = load %S.ast.Type, ptr %a321 - %t592 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t590, %S.ast.Type %t591) - store { ptr, i64, i64 } %t589, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t589, ptr %a596 - call void @finch_str_drop(ptr %a596) - store { ptr, i64, i64 } %t592, ptr %a597 - call void @finch_str_drop(ptr %a597) - %t598 = load { ptr, i64, i64 }, ptr %a593 - store { ptr, i64, i64 } %t598, ptr %a600 - store { ptr, i64, i64 } { ptr @.str.4965, i64 3, i64 0 }, ptr %a601 - call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) - store { ptr, i64, i64 } %t598, ptr %a602 - call void @finch_str_drop(ptr %a602) - %t603 = load { ptr, i64, i64 }, ptr %a599 - %t604 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a605, i64 %t604) - %t606 = load { ptr, i64, i64 }, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a608 - store { ptr, i64, i64 } %t606, ptr %a609 - call void @finch_str_concat(ptr %a607, ptr %a608, ptr %a609) - store { ptr, i64, i64 } %t603, ptr %a610 - call void @finch_str_drop(ptr %a610) - store { ptr, i64, i64 } %t606, ptr %a611 - call void @finch_str_drop(ptr %a611) - %t612 = load { ptr, i64, i64 }, ptr %a607 - %t613 = load i64, ptr %t586 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a277 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t586 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t618 = load ptr, ptr %a1 - %t619 = load %S.ast.Type, ptr %a321 - %t620 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t618, %S.ast.Type %t619) - store { ptr, i64, i64 } %t620, ptr %a622 - store { ptr, i64, i64 } { ptr @.str.4966, i64 3, i64 0 }, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - %t626 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a627, i64 %t626) - %t628 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t625, ptr %a630 - store { ptr, i64, i64 } %t628, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t625, ptr %a632 - call void @finch_str_drop(ptr %a632) - store { ptr, i64, i64 } %t628, ptr %a633 - call void @finch_str_drop(ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a629 - %t635 = load i64, ptr %t617 - %t636 = add i64 %t635, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t637 = load ptr, ptr %a303 - %t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635 - store { ptr, i64, i64 } %t634, ptr %t638 - store i64 %t636, ptr %t617 - %t639 = load i64, ptr %a278 - %t640 = add i64 %t639, 1 - store i64 %t640, ptr %a278 - br label %endif7844 -endif7844: - br label %endif7841 -endif7841: - br label %endif7838 -endif7838: - call void @finch.drop.S_gen_Abi(ptr %a333) - call void @finch.drop.S_ast_Type(ptr %a321) - br label %for.step7830 -for.step7830: - %t641 = load i64, ptr %a307 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a307 - br label %for.cond7828 -for.end7831: - %t643 = load ptr, ptr %a1 - %t644 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t645 = load %S.ast.Type, ptr %t644 - %t646 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t643, %S.ast.Type %t645) - store { ptr, i64, i64 } { ptr @.str.4967, i64 5, i64 0 }, ptr %a648 - store { ptr, i64, i64 } %t646, ptr %a649 - call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649) - store { ptr, i64, i64 } %t646, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } %t651, ptr %a653 - store { ptr, i64, i64 } { ptr @.str.4968, i64 1, i64 0 }, ptr %a654 - call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) - store { ptr, i64, i64 } %t651, ptr %a655 - call void @finch_str_drop(ptr %a655) - %t656 = load { ptr, i64, i64 }, ptr %a652 - %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t656, ptr %a660 - store { ptr, i64, i64 } %t658, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t656, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - store { ptr, i64, i64 } %t663, ptr %a665 - store { ptr, i64, i64 } { ptr @.str.4969, i64 1, i64 0 }, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t663, ptr %a667 - call void @finch_str_drop(ptr %a667) - %t668 = load { ptr, i64, i64 }, ptr %a664 - %t669 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4970, i64 2, i64 0 }, ptr %a670 - call void @finch_str_join(ptr %a671, ptr %a303, ptr %a670) - %t672 = load { ptr, i64, i64 }, ptr %a671 - store { ptr, i64, i64 } %t668, ptr %a674 - store { ptr, i64, i64 } %t672, ptr %a675 - call void @finch_str_concat(ptr %a673, ptr %a674, ptr %a675) - store { ptr, i64, i64 } %t668, ptr %a676 - call void @finch_str_drop(ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.4971, i64 1, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - store { ptr, i64, i64 } %t683, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.4972, i64 0, i64 0 }, ptr %a685 - %t686 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t687 = getelementptr inbounds %S.ast.Type, ptr %t686, i32 0, i32 0 - %t688 = load { ptr, i64, i64 }, ptr %t687 - store { ptr, i64, i64 } %t688, ptr %a689 - store { ptr, i64, i64 } { ptr @.str.4973, 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 %then7853, label %else7854 -then7853: - %t693 = load ptr, ptr %a1 - %t694 = load { ptr, i64, i64 }, ptr %a684 - call void @finch.gen.emit(ptr %t693, { ptr, i64, i64 } %t694) - %t695 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t695, { ptr, i64, i64 } { ptr @.str.4974, i64 8, i64 0 }) - br label %endif7855 -else7854: - %t696 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t697 = load i1, ptr %t696 - br i1 %t697, label %then7856, label %else7857 -then7856: - %t698 = load ptr, ptr %a1 - %t699 = load ptr, ptr %a1 - %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t701 = load %S.ast.Type, ptr %t700 - %t702 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t699, %S.ast.Type %t701) - %t703 = load ptr, ptr %a1 - %t704 = load { ptr, i64, i64 }, ptr %a684 - %t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704) - %t706 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.store(ptr %t698, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t705, { ptr, i64, i64 } %t706) - store { ptr, i64, i64 } %t702, ptr %a707 - call void @finch_str_drop(ptr %a707) - store { ptr, i64, i64 } %t705, ptr %a708 - call void @finch_str_drop(ptr %a708) - %t709 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t709, { ptr, i64, i64 } { ptr @.str.4975, i64 8, i64 0 }) - br label %endif7858 -else7857: - %t710 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t711 = getelementptr inbounds %S.gen.Abi, ptr %t710, i32 0, i32 0 - %t712 = load { ptr, i64, i64 }, ptr %t711 - store { ptr, i64, i64 } %t712, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.4976, i64 6, i64 0 }, ptr %a714 - %t715 = call i32 @finch_str_eq(ptr %a713, ptr %a714) - %t716 = icmp ne i32 %t715, 0 - br i1 %t716, label %then7859, label %else7860 -then7859: - %t717 = load ptr, ptr %a1 - %t718 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t717, { ptr, i64, i64 } { ptr @.str.4977, i64 9, i64 0 }) - store { ptr, i64, i64 } %t718, ptr %a719 - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t723 = load %S.ast.Type, ptr %t722 - %t724 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t721, %S.ast.Type %t723) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a684 - %t727 = call { ptr, i64, i64 } @finch.gen.op(ptr %t725, { ptr, i64, i64 } %t726) - %t728 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.store(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t727, { ptr, i64, i64 } %t728) - store { ptr, i64, i64 } %t724, ptr %a729 - call void @finch_str_drop(ptr %a729) - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_drop(ptr %a730) - %t731 = load ptr, ptr %a1 - %t732 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t733 = getelementptr inbounds %S.gen.Abi, ptr %t732, i32 0, i32 2 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } { ptr @.str.4978, i64 4, i64 0 }, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - %t738 = load { ptr, i64, i64 }, ptr %a735 - store { ptr, i64, i64 } %t738, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.4979, i64 1, i64 0 }, ptr %a741 - call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741) - store { ptr, i64, i64 } %t738, ptr %a742 - call void @finch_str_drop(ptr %a742) - %t743 = load { ptr, i64, i64 }, ptr %a739 - %t744 = load ptr, ptr %a1 - %t745 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t746 = getelementptr inbounds %S.gen.Abi, ptr %t745, i32 0, i32 2 - %t747 = load { ptr, i64, i64 }, ptr %t746 - %t748 = load { ptr, i64, i64 }, ptr %a719 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t744, { ptr, i64, i64 } %t747, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t743, ptr %a751 - store { ptr, i64, i64 } %t749, ptr %a752 - call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752) - store { ptr, i64, i64 } %t743, ptr %a753 - call void @finch_str_drop(ptr %a753) - store { ptr, i64, i64 } %t749, ptr %a754 - call void @finch_str_drop(ptr %a754) - %t755 = load { ptr, i64, i64 }, ptr %a750 - call void @finch.gen.emit(ptr %t731, { ptr, i64, i64 } %t755) - store { ptr, i64, i64 } %t755, ptr %a756 - call void @finch_str_drop(ptr %a756) - call void @finch_str_drop(ptr %a719) - br label %endif7861 -else7860: - %t757 = load ptr, ptr %a1 - %t758 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t759 = load %S.ast.Type, ptr %t758 - %t760 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t757, %S.ast.Type %t759) - %t761 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } %t760, ptr %a685 - store { ptr, i64, i64 } %t761, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load ptr, ptr %a1 - %t764 = load ptr, ptr %a1 - %t765 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t766 = load %S.ast.Type, ptr %t765 - %t767 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t764, %S.ast.Type %t766) - store { ptr, i64, i64 } { ptr @.str.4980, i64 4, i64 0 }, ptr %a769 - store { ptr, i64, i64 } %t767, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.4981, i64 1, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = load ptr, ptr %a1 - %t779 = load { ptr, i64, i64 }, ptr %a684 - %t780 = call { ptr, i64, i64 } @finch.gen.op(ptr %t778, { ptr, i64, i64 } %t779) - store { ptr, i64, i64 } %t777, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t777, ptr %a784 - call void @finch_str_drop(ptr %a784) - store { ptr, i64, i64 } %t780, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a781 - call void @finch.gen.emit(ptr %t763, { ptr, i64, i64 } %t786) - store { ptr, i64, i64 } %t786, ptr %a787 - call void @finch_str_drop(ptr %a787) - br label %endif7861 -endif7861: - br label %endif7858 -endif7858: - br label %endif7855 -endif7855: - %t788 = load ptr, ptr %a1 - %t789 = load %S.gen.Saved, ptr %a276 - %t790 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } { ptr @.str.4982, i64 15, i64 0 }, ptr %a792 - store { ptr, i64, i64 } %t790, ptr %a793 - call void @finch_str_concat(ptr %a791, ptr %a792, ptr %a793) - %t794 = load { ptr, i64, i64 }, ptr %a791 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.4983, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - store { ptr, i64, i64 } %t794, ptr %a798 - call void @finch_str_drop(ptr %a798) - %t799 = load { ptr, i64, i64 }, ptr %a795 - %t800 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - store { ptr, i64, i64 } %t799, ptr %a803 - store { ptr, i64, i64 } %t801, ptr %a804 - call void @finch_str_concat(ptr %a802, ptr %a803, ptr %a804) - store { ptr, i64, i64 } %t799, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load { ptr, i64, i64 }, ptr %a802 - store { ptr, i64, i64 } %t806, ptr %a808 - store { ptr, i64, i64 } { ptr @.str.4984, i64 1, i64 0 }, ptr %a809 - call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) - store { ptr, i64, i64 } %t806, ptr %a810 - call void @finch_str_drop(ptr %a810) - %t811 = load { ptr, i64, i64 }, ptr %a807 - %t812 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t811, ptr %a814 - store { ptr, i64, i64 } %t812, ptr %a815 - call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) - store { ptr, i64, i64 } %t811, ptr %a816 - call void @finch_str_drop(ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a813 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.4985, i64 1, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4986, i64 2, i64 0 }, ptr %a824 - call void @finch_str_join(ptr %a825, ptr %a277, ptr %a824) - %t826 = load { ptr, i64, i64 }, ptr %a825 - store { ptr, i64, i64 } %t822, ptr %a828 - store { ptr, i64, i64 } %t826, ptr %a829 - call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) - store { ptr, i64, i64 } %t822, ptr %a830 - call void @finch_str_drop(ptr %a830) - store { ptr, i64, i64 } %t826, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a827 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.4987, i64 1, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.endHelper(ptr %t788, %S.gen.Saved %t789, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a685) - call void @finch_str_drop(ptr %a684) - call void @finch.drop.arr_str(ptr %a303) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.arr_str(ptr %a277) - call void @finch.drop.S_gen_Saved(ptr %a276) - call void @finch.drop.S_gen_Plan(ptr %a273) - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t839 -} - -define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) { -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 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.ast.Type, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca i64, align 16 - %a85 = alloca i64, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %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 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a244 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7865, label %ok7866 -panic7865: - call void @finch_panic(ptr @.str.4988, i64 4601, ptr @.str.4989) - unreachable -ok7866: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7867, label %inrange7868 -range7867: - call void @finch_panic_index(ptr @.str.4990, i64 4601, i64 %t7, i64 %t9) - unreachable -inrange7868: - %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 %range7869, label %inrange7870 -range7869: - call void @finch_panic_index(ptr @.str.4991, i64 4603, i64 0, i64 %t25) - unreachable -inrange7870: - %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 %then7871, label %endif7873 -then7871: - %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 %range7874, label %inrange7875 -range7874: - call void @finch_panic_index(ptr @.str.4992, i64 4605, i64 0, i64 %t39) - unreachable -inrange7875: - %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.4993, 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) - store { ptr, i64, i64 } %t49, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch_str_drop(ptr %a59) - br label %endif7873 -endif7873: - %t60 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4994, i64 4, i64 0 }, 0 - %t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.ast.Type %t60, { ptr, i64, i64 } %t65, 2 - %t67 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_copy(ptr %a70, ptr %a69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = insertvalue %S.ast.Type %t66, { ptr, i64, i64 } %t71, 3 - store %S.ast.Type %t72, ptr %a73 - %t74 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3 - %t75 = load i1, ptr %t74 - br i1 %t75, label %then7876, label %endif7878 -then7876: - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = call i64 @finch_str_to_int(ptr %a80, ptr @.str.4995, i64 4609) - store i64 -1, ptr %a82 - %t83 = load i64, ptr %t77 - %t84 = load ptr, ptr %t76 - store i64 0, ptr %a85 - br label %find.cond7879 -find.cond7879: - %t86 = load i64, ptr %a85 - %t87 = icmp slt i64 %t86, %t83 - br i1 %t87, label %find.body7880, label %find.end7883 -find.body7880: - %t88 = getelementptr inbounds i64, ptr %t84, i64 %t86 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, %t81 - br i1 %t90, label %find.hit7881, label %find.next7882 -find.hit7881: - store i64 %t86, ptr %a82 - br label %find.end7883 -find.next7882: - %t91 = add i64 %t86, 1 - store i64 %t91, ptr %a85 - br label %find.cond7879 -find.end7883: - %t92 = load i64, ptr %a82 - %t93 = icmp sge i64 %t92, 0 - %t94 = xor i1 %t93, true - br i1 %t94, label %then7884, label %endif7886 -then7884: - %t95 = load ptr, ptr %a1 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = extractvalue { ptr, i64, i64 } %t97, 1 - %t99 = icmp uge i64 0, %t98 - br i1 %t99, label %range7887, label %inrange7888 -range7887: - call void @finch_panic_index(ptr @.str.4996, i64 4610, i64 0, i64 %t98) - unreachable -inrange7888: - %t100 = extractvalue { ptr, i64, i64 } %t97, 0 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 0 - %t102 = load %S.ast.Node, ptr %t101 - %t103 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4997, i64 37, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a105 - %t109 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t108, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t108, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t95, %S.ast.Node %t102, { ptr, i64, i64 } %t115) - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_drop(ptr %a116) - br label %endif7886 -endif7886: - %t117 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0 - %t123 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t127 -endif7878: - %t128 = load ptr, ptr %a1 - %t129 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t130 = load { ptr, i64, i64 }, ptr %t129 - %t131 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 - %t132 = load %S.ast.Type, ptr %t131 - %t133 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4998, i64 3, i64 0 }) - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t130, %S.ast.Type %t132, %S.ast.Type %t133) - store %S.ast.Type %t133, ptr %a135 - call void @finch.drop.S_ast_Type(ptr %a135) - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4999, i64 0, i64 0 }, ptr %a137 - %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond7889 -for.cond7889: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body7890, label %for.end7892 -for.body7890: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5000, i64 12, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5001, i64 2, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t156 = load i64, ptr %a141 - %t157 = load { ptr, i64, i64 }, ptr %t155 - %t158 = extractvalue { ptr, i64, i64 } %t157, 1 - %t159 = icmp uge i64 %t156, %t158 - br i1 %t159, label %range7893, label %inrange7894 -range7893: - call void @finch_panic_index(ptr @.str.5002, i64 4617, i64 %t156, i64 %t158) - unreachable -inrange7894: - %t160 = extractvalue { ptr, i64, i64 } %t157, 0 - %t161 = getelementptr inbounds i64, ptr %t160, i64 %t156 - %t162 = load i64, ptr %t161 - call void @finch_str_from_int(ptr %a163, i64 %t162) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t154, ptr %a166 - store { ptr, i64, i64 } %t164, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t154, ptr %a168 - call void @finch_str_drop(ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a165 - %t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t170) - store { ptr, i64, i64 } %t170, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t171, ptr %a173 - %t174 = load i64, ptr %a141 - %t175 = icmp eq i64 %t174, 0 - br i1 %t175, label %then7895, label %else7896 -then7895: - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_copy(ptr %a178, ptr %a177) - %t179 = load { ptr, i64, i64 }, ptr %a178 - %t180 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t179, ptr %a137 - store { ptr, i64, i64 } %t180, ptr %a181 - call void @finch_str_drop(ptr %a181) - br label %endif7897 -else7896: - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5003, i64 6, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5004, i64 2, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t192, ptr %a195 - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t199, ptr %a137 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif7897 -endif7897: - call void @finch_str_drop(ptr %a173) - br label %for.step7891 -for.step7891: - %t203 = load i64, ptr %a141 - %t204 = add i64 %t203, 1 - store i64 %t204, ptr %a141 - br label %for.cond7889 -for.end7892: - %t205 = load ptr, ptr %a1 - %t206 = load ptr, ptr %a1 - %t207 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5005, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.5006, i64 6, i64 0 }, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - %t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t206, { ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } { ptr @.str.5007, i64 32, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - %t225 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t205, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t224, %S.ast.Node %t225) - store { ptr, i64, i64 } %t217, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5008, i64 10, i64 0 }, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5009, i64 7, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t228, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t242, ptr %a243 - call void @finch.copy.S_ast_Type(ptr %a244, ptr %a243) - %t245 = load %S.ast.Type, ptr %a244 - %t246 = insertvalue %S.gen.Val %t241, %S.ast.Type %t245, 1 - call void @finch_str_drop(ptr %a137) - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t246 -} - -define internal { ptr, i64, i64 } @finch.gen.cExt(ptr %p0, %S.ast.Type %p1) { -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.5010, 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.from7898 -logic.from7898: - br i1 %t8, label %logic.end7900, label %logic.rhs7899 -logic.rhs7899: - %t9 = load %S.ast.Type, ptr %a2 - %t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9) - br label %logic.rend7901 -logic.rend7901: - br label %logic.end7900 -logic.end7900: - %t11 = phi i1 [ true, %logic.from7898 ], [ %t10, %logic.rend7901 ] - br i1 %t11, label %then7902, label %endif7904 -then7902: - %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 %then7905, label %endif7907 -then7905: - ret { ptr, i64, i64 } { ptr @.str.5011, i64 8, i64 0 } -endif7907: - br label %endif7904 -endif7904: - %t15 = load %S.ast.Type, ptr %a2 - %t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15) - br label %logic.from7908 -logic.from7908: - br i1 %t16, label %logic.end7910, label %logic.rhs7909 -logic.rhs7909: - %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.5012, 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.from7911 -logic.from7911: - br i1 %t22, label %logic.rhs7912, label %logic.end7913 -logic.rhs7912: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic7914, label %ok7915 -panic7914: - call void @finch_panic(ptr @.str.5013, i64 4637, ptr @.str.5014) - unreachable -ok7915: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 31 - %t26 = load %S.platform.Target, ptr %t25 - %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - br label %logic.rend7916 -logic.rend7916: - br label %logic.end7913 -logic.end7913: - %t28 = phi i1 [ false, %logic.from7911 ], [ %t27, %logic.rend7916 ] - br label %logic.rend7917 -logic.rend7917: - br label %logic.end7910 -logic.end7910: - %t29 = phi i1 [ true, %logic.from7908 ], [ %t28, %logic.rend7917 ] - br label %logic.from7918 -logic.from7918: - br i1 %t29, label %logic.rhs7919, label %logic.end7920 -logic.rhs7919: - %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.rend7921 -logic.rend7921: - br label %logic.end7920 -logic.end7920: - %t33 = phi i1 [ false, %logic.from7918 ], [ %t32, %logic.rend7921 ] - br i1 %t33, label %then7922, label %endif7924 -then7922: - ret { ptr, i64, i64 } { ptr @.str.5015, i64 8, i64 0 } -endif7924: - %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.5016, 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.from7925 -logic.from7925: - br i1 %t39, label %logic.rhs7926, label %logic.end7927 -logic.rhs7926: - %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.rend7928 -logic.rend7928: - br label %logic.end7927 -logic.end7927: - %t43 = phi i1 [ false, %logic.from7925 ], [ %t42, %logic.rend7928 ] - br i1 %t43, label %then7929, label %endif7931 -then7929: - ret { ptr, i64, i64 } { ptr @.str.5017, i64 8, i64 0 } -endif7931: - ret { ptr, i64, i64 } { ptr @.str.5018, 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.5019, 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 %then7932, label %endif7934 -then7932: - ret { ptr, i64, i64 } { ptr @.str.5020, i64 3, i64 0 } -endif7934: - %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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca i64, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a240 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a249 = alloca %S.ast.Type, align 16 - %a261 = alloca %S.gen.Plan, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a327 = alloca i64, align 16 - %a342 = alloca %S.ast.Type, align 16 - %a343 = alloca %S.ast.Type, align 16 - %a345 = alloca %S.ast.Type, align 16 - %a354 = alloca %S.gen.Abi, align 16 - %a355 = alloca %S.gen.Abi, align 16 - %a357 = alloca %S.gen.Abi, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca %S.gen.Val, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca %S.gen.Val, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a407 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca i64, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca %S.gen.Val, align 16 - %a699 = alloca %S.ast.Type, align 16 - %a700 = alloca %S.ast.Type, align 16 - %a702 = alloca %S.ast.Type, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca %S.gen.Val, align 16 - %a721 = alloca %S.gen.Val, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca %S.ast.Type, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca %S.ast.Type, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca %S.ast.Type, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca %S.ast.Type, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca %S.ast.Type, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = 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 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca i64, align 16 - %a900 = alloca i64, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a939 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a973 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a981 = alloca { ptr, i64, i64 }, align 16 - %a982 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a999 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = 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 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1033 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1039 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1042 = alloca { ptr, i64, i64 }, align 16 - %a1043 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1048 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1077 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca %S.ast.Type, align 16 - %a1087 = alloca %S.ast.Type, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca %S.ast.Type, align 16 - %a1107 = alloca %S.ast.Type, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca { ptr, i64, i64 }, align 16 - %a1126 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1142 = alloca %S.ast.Type, align 16 - %a1143 = alloca %S.ast.Type, align 16 - %a1148 = alloca { ptr, i64, i64 }, align 16 - %a1149 = alloca { ptr, i64, i64 }, align 16 - %a1154 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1161 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1174 = alloca { ptr, i64, i64 }, align 16 - %a1175 = alloca { ptr, i64, i64 }, align 16 - %a1176 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca %S.ast.Type, align 16 - %a1186 = alloca %S.ast.Type, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca %S.ast.Type, align 16 - %a1196 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.cimport.CFunc %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7935, label %ok7936 -panic7935: - call void @finch_panic(ptr @.str.5021, i64 4654, ptr @.str.5022) - unreachable -ok7936: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then7937, label %endif7939 -then7937: - 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.cond7940 -each.cond7940: - %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.body7941, label %each.end7943 -each.body7941: - %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.step7942 -each.step7942: - %t26 = load i64, ptr %a10 - %t27 = add i64 %t26, 1 - store i64 %t27, ptr %a10 - br label %each.cond7940 -each.end7943: - %t28 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then7944, label %endif7946 -then7944: - %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.5023, i64 3, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif7946 -endif7946: - %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.5024, 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.5025, i64 7, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t54 = load %S.ast.Type, ptr %t53 - %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.5026, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t66, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t66, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5027, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5028, i64 2, i64 0 }, ptr %a80 - call void @finch_str_join(ptr %a81, ptr %a8, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t78, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t78, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.5029, i64 5, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t93, { ptr, i64, i64 } { ptr @.str.5030, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - call void @finch.drop.arr_str(ptr %a8) - br label %endif7939 -endif7939: - %t95 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = icmp sgt i64 %t97, 0 - br i1 %t98, label %then7947, label %endif7949 -then7947: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } { ptr @.str.5031, i64 16, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5032, i64 35, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t113 = load { ptr, i64, i64 }, ptr %t112 - store { ptr, i64, i64 } %t111, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t111, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif7949 -endif7949: - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t120, i32 0, i32 1 - %t122 = load i64, ptr %t121 - store i64 %t122, ptr %a123 - %t124 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t125 = load i1, ptr %t124 - br i1 %t125, label %then7950, label %else7951 -then7950: - %t126 = load i64, ptr %a123 - %t127 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 - %t129 = load i64, ptr %t128 - %t130 = icmp slt i64 %t126, %t129 - br i1 %t130, label %then7953, label %endif7955 -then7953: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t134 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } { ptr @.str.5033, i64 1, i64 0 }, ptr %a136 - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a135 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5034, i64 17, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t138, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - %t144 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load i64, ptr %t145 - call void @finch_str_from_int(ptr %a147, i64 %t146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t143, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t143, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.5035, i64 22, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a161, i64 %t160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t159, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.fail(ptr %t131, %S.ast.Node %t132, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - br label %endif7955 -endif7955: - br label %endif7952 -else7951: - %t170 = load i64, ptr %a123 - %t171 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load i64, ptr %t172 - %t174 = icmp ne i64 %t170, %t173 - br i1 %t174, label %then7956, label %endif7958 -then7956: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - %t177 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } { ptr @.str.5036, i64 1, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5037, i64 8, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - call void @finch_str_from_int(ptr %a191, i64 %t190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t187, ptr %a194 - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t187, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t198, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.5038, i64 22, i64 0 }, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t198, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - %t204 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t203, ptr %a210 - call void @finch_str_drop(ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.fail(ptr %t175, %S.ast.Node %t176, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7958 -endif7958: - br label %endif7952 -endif7952: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = load %S.ast.Node, ptr %a2 - %t218 = call %S.ast.Type @finch.gen.resolve(ptr %t214, %S.ast.Type %t216, %S.ast.Node %t217) - store %S.ast.Type %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load %S.ast.Node, ptr %a2 - %t222 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = load %S.ast.Type, ptr %a219 - call void @finch.gen.checkByValue(ptr %t220, %S.ast.Node %t221, { ptr, i64, i64 } %t223, %S.ast.Type %t224, { ptr, i64, i64 } { ptr @.str.5039, i64 7, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - store i64 0, ptr %a227 - br label %each.cond7959 -each.cond7959: - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i32 0, i32 1 - %t229 = load i64, ptr %t228 - %t230 = load i64, ptr %a227 - %t231 = icmp slt i64 %t230, %t229 - br i1 %t231, label %each.body7960, label %each.end7962 -each.body7960: - %t232 = load ptr, ptr %t226 - %t233 = getelementptr inbounds %S.ast.Type, ptr %t232, i64 %t230 - %t234 = load %S.ast.Type, ptr %t233 - store %S.ast.Type %t234, ptr %a235 - %t236 = load ptr, ptr %a1 - %t237 = load %S.ast.Type, ptr %a235 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.ast.Type @finch.gen.resolve(ptr %t236, %S.ast.Type %t237, %S.ast.Node %t238) - store %S.ast.Type %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load %S.ast.Node, ptr %a2 - %t243 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - %t245 = load %S.ast.Type, ptr %a240 - call void @finch.gen.checkByValue(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } { ptr @.str.5040, i64 5, i64 0 }) - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a225, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %a240 - store %S.ast.Type %t247, ptr %a248 - call void @finch.copy.S_ast_Type(ptr %a249, ptr %a248) - %t250 = load %S.ast.Type, ptr %a249 - %t251 = load i64, ptr %t246 - %t252 = add i64 %t251, 1 - call void @finch_arr_reserve(ptr %a225, i64 %t252, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t253 = load ptr, ptr %a225 - %t254 = getelementptr inbounds %S.ast.Type, ptr %t253, i64 %t251 - store %S.ast.Type %t250, ptr %t254 - store i64 %t252, ptr %t246 - call void @finch.drop.S_ast_Type(ptr %a240) - br label %each.step7961 -each.step7961: - %t255 = load i64, ptr %a227 - %t256 = add i64 %t255, 1 - store i64 %t256, ptr %a227 - br label %each.cond7959 -each.end7962: - %t257 = load ptr, ptr %a1 - %t258 = load %S.ast.Type, ptr %a219 - %t259 = load { ptr, i64, i64 }, ptr %a225 - %t260 = call %S.gen.Plan @finch.gen.makePlan(ptr %t257, %S.ast.Type %t258, { ptr, i64, i64 } %t259) - store %S.gen.Plan %t260, ptr %a261 - store { ptr, i64, i64 } zeroinitializer, ptr %a262 - store { ptr, i64, i64 } zeroinitializer, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.5041, i64 0, i64 0 }, ptr %a264 - %t265 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t266 = load i1, ptr %t265 - br i1 %t266, label %then7963, label %endif7965 -then7963: - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load %S.ast.Type, ptr %a219 - %t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269) - %t271 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t267, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t271, ptr %a264 - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a219 - %t278 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.5042, i64 9, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.5043, i64 10, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load i64, ptr %t275 - %t290 = add i64 %t289, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t290, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t291 = load ptr, ptr %a262 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i64 %t289 - store { ptr, i64, i64 } %t288, ptr %t292 - store i64 %t290, ptr %t275 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t294 = load ptr, ptr %a1 - %t295 = load %S.ast.Type, ptr %a219 - %t296 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t294, %S.ast.Type %t295) - store { ptr, i64, i64 } { ptr @.str.5044, i64 9, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t301, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.5045, i64 11, i64 0 }, ptr %a304 - call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) - store { ptr, i64, i64 } %t301, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a302 - %t307 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t306, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t306, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load i64, ptr %t293 - %t314 = add i64 %t313, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t314, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t315 = load ptr, ptr %a263 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t315, i64 %t313 - store { ptr, i64, i64 } %t312, ptr %t316 - store i64 %t314, ptr %t293 - br label %endif7965 -endif7965: - store { ptr, i64, i64 } zeroinitializer, ptr %a317 - %t318 = load ptr, ptr %a1 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic7966, label %ok7967 -panic7966: - call void @finch_panic(ptr @.str.5046, i64 4693, ptr @.str.5047) - unreachable -ok7967: - %t320 = getelementptr inbounds %S.gen.Gen, ptr %t318, i32 0, i32 11 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i32 0, i32 1 - %t322 = load i64, ptr %t321 - store i64 %t322, ptr %a323 - %t324 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i32 0, i32 1 - %t326 = load i64, ptr %t325 - store i64 0, ptr %a327 - br label %for.cond7968 -for.cond7968: - %t328 = load i64, ptr %a327 - %t329 = icmp slt i64 %t328, %t326 - br i1 %t329, label %for.body7969, label %for.end7971 -for.body7969: - %t330 = load i64, ptr %a327 - %t331 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = icmp slt i64 %t330, %t333 - br i1 %t334, label %then7972, label %endif7974 -then7972: - %t335 = load i64, ptr %a327 - %t336 = load { ptr, i64, i64 }, ptr %a225 - %t337 = extractvalue { ptr, i64, i64 } %t336, 1 - %t338 = icmp uge i64 %t335, %t337 - br i1 %t338, label %range7975, label %inrange7976 -range7975: - call void @finch_panic_index(ptr @.str.5048, i64 4696, i64 %t335, i64 %t337) - unreachable -inrange7976: - %t339 = extractvalue { ptr, i64, i64 } %t336, 0 - %t340 = getelementptr inbounds %S.ast.Type, ptr %t339, i64 %t335 - %t341 = load %S.ast.Type, ptr %t340 - store %S.ast.Type %t341, ptr %a342 - call void @finch.copy.S_ast_Type(ptr %a343, ptr %a342) - %t344 = load %S.ast.Type, ptr %a343 - store %S.ast.Type %t344, ptr %a345 - %t346 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 1 - %t347 = load i64, ptr %a327 - %t348 = load { ptr, i64, i64 }, ptr %t346 - %t349 = extractvalue { ptr, i64, i64 } %t348, 1 - %t350 = icmp uge i64 %t347, %t349 - br i1 %t350, label %range7977, label %inrange7978 -range7977: - call void @finch_panic_index(ptr @.str.5049, i64 4697, i64 %t347, i64 %t349) - unreachable -inrange7978: - %t351 = extractvalue { ptr, i64, i64 } %t348, 0 - %t352 = getelementptr inbounds %S.gen.Abi, ptr %t351, i64 %t347 - %t353 = load %S.gen.Abi, ptr %t352 - store %S.gen.Abi %t353, ptr %a354 - call void @finch.copy.S_gen_Abi(ptr %a355, ptr %a354) - %t356 = load %S.gen.Abi, ptr %a355 - store %S.gen.Abi %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t361 = load i64, ptr %a327 - %t362 = load { ptr, i64, i64 }, ptr %t360 - %t363 = extractvalue { ptr, i64, i64 } %t362, 1 - %t364 = icmp uge i64 %t361, %t363 - br i1 %t364, label %range7979, label %inrange7980 -range7979: - call void @finch_panic_index(ptr @.str.5050, i64 4698, i64 %t361, i64 %t363) - unreachable -inrange7980: - %t365 = extractvalue { ptr, i64, i64 } %t362, 0 - %t366 = getelementptr inbounds %S.ast.Node, ptr %t365, i64 %t361 - %t367 = load %S.ast.Node, ptr %t366 - %t368 = load %S.ast.Type, ptr %a345 - %t369 = call %S.gen.Val @finch.gen.exprWant(ptr %t359, %S.ast.Node %t367, %S.ast.Type %t368) - %t370 = load %S.ast.Type, ptr %a345 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t372 = load i64, ptr %a327 - %t373 = load { ptr, i64, i64 }, ptr %t371 - %t374 = extractvalue { ptr, i64, i64 } %t373, 1 - %t375 = icmp uge i64 %t372, %t374 - br i1 %t375, label %range7981, label %inrange7982 -range7981: - call void @finch_panic_index(ptr @.str.5051, i64 4698, i64 %t372, i64 %t374) - unreachable -inrange7982: - %t376 = extractvalue { ptr, i64, i64 } %t373, 0 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i64 %t372 - %t378 = load %S.ast.Node, ptr %t377 - %t379 = load i64, ptr %a327 - %t380 = add i64 %t379, 1 - call void @finch_str_from_int(ptr %a381, i64 %t380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.5052, i64 9, i64 0 }, ptr %a384 - store { ptr, i64, i64 } %t382, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.5053, i64 4, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t392, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t392, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = call %S.gen.Val @finch.gen.coerce(ptr %t358, %S.gen.Val %t369, %S.ast.Type %t370, %S.ast.Node %t378, { ptr, i64, i64 } %t399) - store %S.gen.Val %t369, ptr %a401 - call void @finch.drop.S_gen_Val(ptr %a401) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store %S.gen.Val %t400, ptr %a403 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t405 = load %S.gen.Val, ptr %a403 - store %S.gen.Val %t405, ptr %a406 - call void @finch.copy.S_gen_Val(ptr %a407, ptr %a406) - %t408 = load %S.gen.Val, ptr %a407 - %t409 = load i64, ptr %t404 - %t410 = add i64 %t409, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t410, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t411 = load ptr, ptr %a317 - %t412 = getelementptr inbounds %S.gen.Val, ptr %t411, i64 %t409 - store %S.gen.Val %t408, ptr %t412 - store i64 %t410, ptr %t404 - %t413 = load ptr, ptr %a1 - %t414 = load %S.gen.Val, ptr %a403 - call void @finch.gen.hold(ptr %t413, %S.gen.Val %t414) - %t415 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5054, i64 6, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then7983, label %else7984 -then7983: - %t421 = load ptr, ptr %a1 - %t422 = load ptr, ptr %a1 - %t423 = load %S.ast.Type, ptr %a345 - %t424 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t422, %S.ast.Type %t423) - %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t421, { ptr, i64, i64 } %t424) - store { ptr, i64, i64 } %t424, ptr %a426 - call void @finch_str_drop(ptr %a426) - store { ptr, i64, i64 } %t425, ptr %a427 - %t428 = load ptr, ptr %a1 - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Type, ptr %a345 - %t431 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t430) - %t432 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = load { ptr, i64, i64 }, ptr %a427 - call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } %t431, { ptr, i64, i64 } %t433, { ptr, i64, i64 } %t434) - store { ptr, i64, i64 } %t431, ptr %a435 - call void @finch_str_drop(ptr %a435) - %t436 = load ptr, ptr %a1 - %t437 = load %S.ast.Type, ptr %a345 - %t438 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t437) - store { ptr, i64, i64 } { ptr @.str.5055, i64 10, i64 0 }, ptr %a440 - store { ptr, i64, i64 } %t438, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.5056, i64 8, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 3 - %t450 = load i64, ptr %t449 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } %t448, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t448, ptr %a456 - call void @finch_str_drop(ptr %a456) - store { ptr, i64, i64 } %t452, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t458, ptr %a459 - %t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t461 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_copy(ptr %a463, ptr %a462) - %t464 = load { ptr, i64, i64 }, ptr %a463 - %t465 = load i64, ptr %t460 - %t466 = add i64 %t465, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t466, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t467 = load ptr, ptr %a262 - %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t467, i64 %t465 - store { ptr, i64, i64 } %t464, ptr %t468 - store i64 %t466, ptr %t460 - %t469 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t470 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t470, ptr %a472 - store { ptr, i64, i64 } { ptr @.str.5057, i64 1, i64 0 }, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - %t475 = load { ptr, i64, i64 }, ptr %a427 - store { ptr, i64, i64 } %t474, ptr %a477 - store { ptr, i64, i64 } %t475, ptr %a478 - call void @finch_str_concat(ptr %a476, ptr %a477, ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a476 - %t481 = load i64, ptr %t469 - %t482 = add i64 %t481, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t482, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t483 = load ptr, ptr %a263 - %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t481 - store { ptr, i64, i64 } %t480, ptr %t484 - store i64 %t482, ptr %t469 - call void @finch_str_drop(ptr %a459) - call void @finch_str_drop(ptr %a427) - br label %endif7985 -else7984: - %t485 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5058, i64 8, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then7986, label %else7987 -then7986: - %t491 = load ptr, ptr %a1 - %t492 = load ptr, ptr %a1 - %t493 = load %S.ast.Type, ptr %a345 - %t494 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t492, %S.ast.Type %t493) - %t495 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t491, { ptr, i64, i64 } %t494) - store { ptr, i64, i64 } %t494, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t495, ptr %a497 - %t498 = load ptr, ptr %a1 - %t499 = load ptr, ptr %a1 - %t500 = load %S.ast.Type, ptr %a345 - %t501 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t499, %S.ast.Type %t500) - %t502 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t503 = load { ptr, i64, i64 }, ptr %t502 - %t504 = load { ptr, i64, i64 }, ptr %a497 - call void @finch.gen.store(ptr %t498, { ptr, i64, i64 } %t501, { ptr, i64, i64 } %t503, { ptr, i64, i64 } %t504) - store { ptr, i64, i64 } %t501, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t507 = load i64, ptr %t506 - %t508 = add i64 %t507, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t508, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t509 = load ptr, ptr %a262 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i64 %t507 - store { ptr, i64, i64 } { ptr @.str.5059, i64 3, i64 0 }, ptr %t510 - store i64 %t508, ptr %t506 - %t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t512 = load { ptr, i64, i64 }, ptr %a497 - store { ptr, i64, i64 } { ptr @.str.5060, i64 4, i64 0 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a515 - call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a513 - %t517 = load i64, ptr %t511 - %t518 = add i64 %t517, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t518, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t519 = load ptr, ptr %a263 - %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t517 - store { ptr, i64, i64 } %t516, ptr %t520 - store i64 %t518, ptr %t511 - call void @finch_str_drop(ptr %a497) - br label %endif7988 -else7987: - %t521 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5061, i64 6, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp ne i32 %t525, 0 - br i1 %t526, label %then7989, label %else7990 -then7989: - %t527 = load ptr, ptr %a1 - %t528 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t527, { ptr, i64, i64 } { ptr @.str.5062, i64 9, i64 0 }) - store { ptr, i64, i64 } %t528, ptr %a529 - %t530 = load ptr, ptr %a1 - %t531 = load ptr, ptr %a1 - %t532 = load %S.ast.Type, ptr %a345 - %t533 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t531, %S.ast.Type %t532) - %t534 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.store(ptr %t530, { ptr, i64, i64 } %t533, { ptr, i64, i64 } %t535, { ptr, i64, i64 } %t536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t539 = getelementptr inbounds { ptr, i64, i64 }, ptr %t538, i32 0, i32 1 - %t540 = load i64, ptr %t539 - store i64 0, ptr %a541 - br label %for.cond7992 -for.cond7992: - %t542 = load i64, ptr %a541 - %t543 = icmp slt i64 %t542, %t540 - br i1 %t543, label %for.body7993, label %for.end7995 -for.body7993: - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t546 = load i64, ptr %a541 - %t547 = load { ptr, i64, i64 }, ptr %t545 - %t548 = extractvalue { ptr, i64, i64 } %t547, 1 - %t549 = icmp uge i64 %t546, %t548 - br i1 %t549, label %range7996, label %inrange7997 -range7996: - call void @finch_panic_index(ptr @.str.5063, i64 4716, i64 %t546, i64 %t548) - unreachable -inrange7997: - %t550 = extractvalue { ptr, i64, i64 } %t547, 0 - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %t550, i64 %t546 - %t552 = load { ptr, i64, i64 }, ptr %t551 - %t553 = load ptr, ptr %a1 - %t554 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } { ptr @.str.5064, i64 31, i64 0 }, ptr %a556 - store { ptr, i64, i64 } %t554, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - %t558 = load { ptr, i64, i64 }, ptr %a555 - store { ptr, i64, i64 } %t558, ptr %a560 - store { ptr, i64, i64 } { ptr @.str.5065, i64 6, i64 0 }, ptr %a561 - call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561) - store { ptr, i64, i64 } %t558, ptr %a562 - call void @finch_str_drop(ptr %a562) - %t563 = load { ptr, i64, i64 }, ptr %a559 - %t564 = load i64, ptr %a541 - %t565 = mul i64 8, %t564 - call void @finch_str_from_int(ptr %a566, i64 %t565) - %t567 = load { ptr, i64, i64 }, ptr %a566 - store { ptr, i64, i64 } %t563, ptr %a569 - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) - store { ptr, i64, i64 } %t563, ptr %a571 - call void @finch_str_drop(ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a568 - %t574 = call { ptr, i64, i64 } @finch.gen.op(ptr %t553, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t573, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = call { ptr, i64, i64 } @finch.gen.load(ptr %t544, { ptr, i64, i64 } %t552, { ptr, i64, i64 } %t574) - store { ptr, i64, i64 } %t574, ptr %a577 - call void @finch_str_drop(ptr %a577) - store { ptr, i64, i64 } %t576, ptr %a578 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t580 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t581 = load i64, ptr %a541 - %t582 = load { ptr, i64, i64 }, ptr %t580 - %t583 = extractvalue { ptr, i64, i64 } %t582, 1 - %t584 = icmp uge i64 %t581, %t583 - br i1 %t584, label %range7998, label %inrange7999 -range7998: - call void @finch_panic_index(ptr @.str.5066, i64 4717, i64 %t581, i64 %t583) - unreachable -inrange7999: - %t585 = extractvalue { ptr, i64, i64 } %t582, 0 - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i64 %t581 - %t587 = load { ptr, i64, i64 }, ptr %t586 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_copy(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load i64, ptr %t579 - %t592 = add i64 %t591, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t592, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t593 = load ptr, ptr %a262 - %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %t593, i64 %t591 - store { ptr, i64, i64 } %t590, ptr %t594 - store i64 %t592, ptr %t579 - %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t596 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t597 = load i64, ptr %a541 - %t598 = load { ptr, i64, i64 }, ptr %t596 - %t599 = extractvalue { ptr, i64, i64 } %t598, 1 - %t600 = icmp uge i64 %t597, %t599 - br i1 %t600, label %range8000, label %inrange8001 -range8000: - call void @finch_panic_index(ptr @.str.5067, i64 4718, i64 %t597, i64 %t599) - unreachable -inrange8001: - %t601 = extractvalue { ptr, i64, i64 } %t598, 0 - %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i64 %t597 - %t603 = load { ptr, i64, i64 }, ptr %t602 - store { ptr, i64, i64 } %t603, ptr %a605 - store { ptr, i64, i64 } { ptr @.str.5068, i64 1, i64 0 }, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - %t607 = load { ptr, i64, i64 }, ptr %a604 - %t608 = load { ptr, i64, i64 }, ptr %a578 - store { ptr, i64, i64 } %t607, ptr %a610 - store { ptr, i64, i64 } %t608, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t607, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = load i64, ptr %t595 - %t615 = add i64 %t614, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t615, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t616 = load ptr, ptr %a263 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i64 %t614 - store { ptr, i64, i64 } %t613, ptr %t617 - store i64 %t615, ptr %t595 - call void @finch_str_drop(ptr %a578) - br label %for.step7994 -for.step7994: - %t618 = load i64, ptr %a541 - %t619 = add i64 %t618, 1 - store i64 %t619, ptr %a541 - br label %for.cond7992 -for.end7995: - call void @finch_str_drop(ptr %a529) - br label %endif7991 -else7990: - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t621 = load ptr, ptr %a1 - %t622 = load %S.ast.Type, ptr %a345 - %t623 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t621, %S.ast.Type %t622) - %t624 = load ptr, ptr %a1 - %t625 = load %S.ast.Type, ptr %a345 - %t626 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t624, %S.ast.Type %t625) - store { ptr, i64, i64 } %t623, ptr %a628 - store { ptr, i64, i64 } %t626, ptr %a629 - call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) - store { ptr, i64, i64 } %t623, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t626, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a627 - %t633 = load i64, ptr %t620 - %t634 = add i64 %t633, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t634, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t635 = load ptr, ptr %a262 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t633 - store { ptr, i64, i64 } %t632, ptr %t636 - store i64 %t634, ptr %t620 - %t637 = getelementptr inbounds %S.ast.Type, ptr %a345, i32 0, i32 0 - %t638 = load { ptr, i64, i64 }, ptr %t637 - store { ptr, i64, i64 } %t638, ptr %a639 - store { ptr, i64, i64 } { ptr @.str.5069, i64 3, i64 0 }, ptr %a640 - %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) - %t642 = icmp ne i32 %t641, 0 - br i1 %t642, label %then8002, label %else8003 -then8002: - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t644 = load ptr, ptr %a1 - %t645 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t646 = load { ptr, i64, i64 }, ptr %t645 - %t647 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t644, { ptr, i64, i64 } %t646) - store { ptr, i64, i64 } { ptr @.str.5070, i64 4, i64 0 }, ptr %a649 - store { ptr, i64, i64 } %t647, ptr %a650 - call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) - store { ptr, i64, i64 } %t647, ptr %a651 - call void @finch_str_drop(ptr %a651) - %t652 = load { ptr, i64, i64 }, ptr %a648 - %t653 = load i64, ptr %t643 - %t654 = add i64 %t653, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t654, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t655 = load ptr, ptr %a263 - %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i64 %t653 - store { ptr, i64, i64 } %t652, ptr %t656 - store i64 %t654, ptr %t643 - br label %endif8004 -else8003: - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t658 = load ptr, ptr %a1 - %t659 = load %S.ast.Type, ptr %a345 - %t660 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t658, %S.ast.Type %t659) - %t661 = load ptr, ptr %a1 - %t662 = load %S.ast.Type, ptr %a345 - %t663 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t661, %S.ast.Type %t662) - store { ptr, i64, i64 } %t660, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t660, ptr %a667 - call void @finch_str_drop(ptr %a667) - store { ptr, i64, i64 } %t663, ptr %a668 - call void @finch_str_drop(ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.5071, i64 1, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t676 = load { ptr, i64, i64 }, ptr %t675 - store { ptr, i64, i64 } %t674, ptr %a678 - store { ptr, i64, i64 } %t676, ptr %a679 - call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) - store { ptr, i64, i64 } %t674, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load { ptr, i64, i64 }, ptr %a677 - %t682 = load i64, ptr %t657 - %t683 = add i64 %t682, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t683, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t684 = load ptr, ptr %a263 - %t685 = getelementptr inbounds { ptr, i64, i64 }, ptr %t684, i64 %t682 - store { ptr, i64, i64 } %t681, ptr %t685 - store i64 %t683, ptr %t657 - br label %endif8004 -endif8004: - br label %endif7991 -endif7991: - br label %endif7988 -endif7988: - br label %endif7985 -endif7985: - call void @finch.drop.S_gen_Val(ptr %a403) - call void @finch.drop.S_gen_Abi(ptr %a357) - call void @finch.drop.S_ast_Type(ptr %a345) - br label %for.step7970 -endif7974: - %t686 = load ptr, ptr %a1 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t688 = load i64, ptr %a327 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range8005, label %inrange8006 -range8005: - call void @finch_panic_index(ptr @.str.5072, i64 4731, i64 %t688, i64 %t690) - unreachable -inrange8006: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.ast.Node, ptr %t692, i64 %t688 - %t694 = load %S.ast.Node, ptr %t693 - %t695 = call %S.gen.Val @finch.gen.expr(ptr %t686, %S.ast.Node %t694) - store %S.gen.Val %t695, ptr %a696 - %t697 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 1 - %t698 = load %S.ast.Type, ptr %t697 - store %S.ast.Type %t698, ptr %a699 - call void @finch.copy.S_ast_Type(ptr %a700, ptr %a699) - %t701 = load %S.ast.Type, ptr %a700 - store %S.ast.Type %t701, ptr %a702 - %t703 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t704 = load { ptr, i64, i64 }, ptr %t703 - store { ptr, i64, i64 } %t704, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5073, i64 4, i64 0 }, ptr %a706 - %t707 = call i32 @finch_str_eq(ptr %a705, ptr %a706) - %t708 = icmp ne i32 %t707, 0 - br i1 %t708, label %then8007, label %endif8009 -then8007: - %t709 = load ptr, ptr %a1 - %t710 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t711 = load i64, ptr %a327 - %t712 = load { ptr, i64, i64 }, ptr %t710 - %t713 = extractvalue { ptr, i64, i64 } %t712, 1 - %t714 = icmp uge i64 %t711, %t713 - br i1 %t714, label %range8010, label %inrange8011 -range8010: - call void @finch_panic_index(ptr @.str.5074, i64 4734, i64 %t711, i64 %t713) - unreachable -inrange8011: - %t715 = extractvalue { ptr, i64, i64 } %t712, 0 - %t716 = getelementptr inbounds %S.ast.Node, ptr %t715, i64 %t711 - %t717 = load %S.ast.Node, ptr %t716 - call void @finch.gen.fail(ptr %t709, %S.ast.Node %t717, { ptr, i64, i64 } { ptr @.str.5075, i64 23, i64 0 }) - br label %endif8009 -endif8009: - %t718 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t719 = load %S.gen.Val, ptr %a696 - store %S.gen.Val %t719, ptr %a720 - call void @finch.copy.S_gen_Val(ptr %a721, ptr %a720) - %t722 = load %S.gen.Val, ptr %a721 - %t723 = load i64, ptr %t718 - %t724 = add i64 %t723, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t724, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t725 = load ptr, ptr %a317 - %t726 = getelementptr inbounds %S.gen.Val, ptr %t725, i64 %t723 - store %S.gen.Val %t722, ptr %t726 - store i64 %t724, ptr %t718 - %t727 = load ptr, ptr %a1 - %t728 = load %S.gen.Val, ptr %a696 - call void @finch.gen.hold(ptr %t727, %S.gen.Val %t728) - %t729 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t730 = load { ptr, i64, i64 }, ptr %t729 - store { ptr, i64, i64 } %t730, ptr %a731 - store { ptr, i64, i64 } { ptr @.str.5076, i64 6, i64 0 }, ptr %a732 - %t733 = call i32 @finch_str_eq(ptr %a731, ptr %a732) - %t734 = icmp ne i32 %t733, 0 - br label %logic.from8012 -logic.from8012: - br i1 %t734, label %logic.end8014, label %logic.rhs8013 -logic.rhs8013: - %t735 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t736 = load { ptr, i64, i64 }, ptr %t735 - store { ptr, i64, i64 } %t736, ptr %a737 - store { ptr, i64, i64 } { ptr @.str.5077, i64 5, i64 0 }, ptr %a738 - %t739 = call i32 @finch_str_eq(ptr %a737, ptr %a738) - %t740 = icmp ne i32 %t739, 0 - br label %logic.rend8015 -logic.rend8015: - br label %logic.end8014 -logic.end8014: - %t741 = phi i1 [ true, %logic.from8012 ], [ %t740, %logic.rend8015 ] - br i1 %t741, label %then8016, label %endif8018 -then8016: - %t742 = load ptr, ptr %a1 - %t743 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t744 = load i64, ptr %a327 - %t745 = load { ptr, i64, i64 }, ptr %t743 - %t746 = extractvalue { ptr, i64, i64 } %t745, 1 - %t747 = icmp uge i64 %t744, %t746 - br i1 %t747, label %range8019, label %inrange8020 -range8019: - call void @finch_panic_index(ptr @.str.5078, i64 4739, i64 %t744, i64 %t746) - unreachable -inrange8020: - %t748 = extractvalue { ptr, i64, i64 } %t745, 0 - %t749 = getelementptr inbounds %S.ast.Node, ptr %t748, i64 %t744 - %t750 = load %S.ast.Node, ptr %t749 - call void @finch.gen.fail(ptr %t742, %S.ast.Node %t750, { ptr, i64, i64 } { ptr @.str.5079, i64 68, i64 0 }) - br label %endif8018 -endif8018: - %t751 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t755, ptr %a756 - %t757 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t758 = load { ptr, i64, i64 }, ptr %t757 - store { ptr, i64, i64 } %t758, ptr %a759 - store { ptr, i64, i64 } { ptr @.str.5080, i64 3, i64 0 }, ptr %a760 - %t761 = call i32 @finch_str_eq(ptr %a759, ptr %a760) - %t762 = icmp ne i32 %t761, 0 - br i1 %t762, label %then8021, label %else8022 -then8021: - %t763 = load ptr, ptr %a1 - %t764 = load { ptr, i64, i64 }, ptr %a756 - %t765 = load %S.ast.Type, ptr %a702 - %t766 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5081, i64 5, i64 0 }) - %t767 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t763, { ptr, i64, i64 } %t764, %S.ast.Type %t765, %S.ast.Type %t766) - store %S.ast.Type %t766, ptr %a768 - call void @finch.drop.S_ast_Type(ptr %a768) - %t769 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t767, ptr %a756 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch_str_drop(ptr %a770) - %t771 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5082, i64 5, i64 0 }) - %t772 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t771, ptr %a702 - store %S.ast.Type %t772, ptr %a773 - call void @finch.drop.S_ast_Type(ptr %a773) - br label %endif8023 -else8022: - %t774 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t775 = load { ptr, i64, i64 }, ptr %t774 - store { ptr, i64, i64 } %t775, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.5083, i64 3, i64 0 }, ptr %a777 - %t778 = call i32 @finch_str_eq(ptr %a776, ptr %a777) - %t779 = icmp ne i32 %t778, 0 - br i1 %t779, label %then8024, label %else8025 -then8024: - %t780 = load ptr, ptr %a1 - %t781 = load { ptr, i64, i64 }, ptr %a756 - %t782 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t780, { ptr, i64, i64 } %t781) - %t783 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t782, ptr %a756 - store { ptr, i64, i64 } %t783, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5084, i64 3, i64 0 }) - %t786 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t785, ptr %a702 - store %S.ast.Type %t786, ptr %a787 - call void @finch.drop.S_ast_Type(ptr %a787) - br label %endif8026 -else8025: - %t788 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t789 = load { ptr, i64, i64 }, ptr %t788 - store { ptr, i64, i64 } %t789, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.5085, i64 4, i64 0 }, ptr %a791 - %t792 = call i32 @finch_str_eq(ptr %a790, ptr %a791) - %t793 = icmp ne i32 %t792, 0 - br i1 %t793, label %then8027, label %else8028 -then8027: - %t794 = load ptr, ptr %a1 - %t795 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t796 = load { ptr, i64, i64 }, ptr %t795 - store { ptr, i64, i64 } { ptr @.str.5086, i64 8, i64 0 }, ptr %a798 - store { ptr, i64, i64 } %t796, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - %t800 = load { ptr, i64, i64 }, ptr %a797 - store { ptr, i64, i64 } %t800, ptr %a802 - store { ptr, i64, i64 } { ptr @.str.5087, i64 7, i64 0 }, ptr %a803 - call void @finch_str_concat(ptr %a801, ptr %a802, ptr %a803) - store { ptr, i64, i64 } %t800, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = load { ptr, i64, i64 }, ptr %a801 - %t806 = call { ptr, i64, i64 } @finch.gen.op(ptr %t794, { ptr, i64, i64 } %t805) - store { ptr, i64, i64 } %t805, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t806, ptr %a756 - store { ptr, i64, i64 } %t808, ptr %a809 - call void @finch_str_drop(ptr %a809) - %t810 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5088, i64 3, i64 0 }) - %t811 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t810, ptr %a702 - store %S.ast.Type %t811, ptr %a812 - call void @finch.drop.S_ast_Type(ptr %a812) - br label %endif8029 -else8028: - %t813 = load %S.ast.Type, ptr %a702 - %t814 = call i1 @finch.gen.isInt(%S.ast.Type %t813) - br label %logic.from8030 -logic.from8030: - br i1 %t814, label %logic.end8032, label %logic.rhs8031 -logic.rhs8031: - %t815 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } %t816, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.5089, i64 4, i64 0 }, ptr %a818 - %t819 = call i32 @finch_str_eq(ptr %a817, ptr %a818) - %t820 = icmp ne i32 %t819, 0 - br label %logic.rend8033 -logic.rend8033: - br label %logic.end8032 -logic.end8032: - %t821 = phi i1 [ true, %logic.from8030 ], [ %t820, %logic.rend8033 ] - br label %logic.from8034 -logic.from8034: - br i1 %t821, label %logic.rhs8035, label %logic.end8036 -logic.rhs8035: - %t822 = load %S.ast.Type, ptr %a702 - %t823 = call i64 @finch.gen.bitsOf(%S.ast.Type %t822) - %t824 = icmp slt i64 %t823, 32 - br label %logic.rend8037 -logic.rend8037: - br label %logic.end8036 -logic.end8036: - %t825 = phi i1 [ false, %logic.from8034 ], [ %t824, %logic.rend8037 ] - br i1 %t825, label %then8038, label %endif8040 -then8038: - %t826 = load ptr, ptr %a1 - %t827 = load { ptr, i64, i64 }, ptr %a756 - %t828 = load %S.ast.Type, ptr %a702 - %t829 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5090, i64 3, i64 0 }) - %t830 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t826, { ptr, i64, i64 } %t827, %S.ast.Type %t828, %S.ast.Type %t829) - store %S.ast.Type %t829, ptr %a831 - call void @finch.drop.S_ast_Type(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t830, ptr %a756 - store { ptr, i64, i64 } %t832, ptr %a833 - call void @finch_str_drop(ptr %a833) - %t834 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5091, i64 3, i64 0 }) - %t835 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t834, ptr %a702 - store %S.ast.Type %t835, ptr %a836 - call void @finch.drop.S_ast_Type(ptr %a836) - br label %endif8040 -endif8040: - br label %endif8029 -endif8029: - br label %endif8026 -endif8026: - br label %endif8023 -endif8023: - %t837 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t838 = load ptr, ptr %a1 - %t839 = load %S.ast.Type, ptr %a702 - %t840 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t838, %S.ast.Type %t839) - store { ptr, i64, i64 } %t840, ptr %a842 - store { ptr, i64, i64 } { ptr @.str.5092, i64 1, i64 0 }, ptr %a843 - call void @finch_str_concat(ptr %a841, ptr %a842, ptr %a843) - store { ptr, i64, i64 } %t840, ptr %a844 - call void @finch_str_drop(ptr %a844) - %t845 = load { ptr, i64, i64 }, ptr %a841 - %t846 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t845, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - store { ptr, i64, i64 } %t845, ptr %a850 - call void @finch_str_drop(ptr %a850) - %t851 = load { ptr, i64, i64 }, ptr %a847 - %t852 = load i64, ptr %t837 - %t853 = add i64 %t852, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t853, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t854 = load ptr, ptr %a263 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i64 %t852 - store { ptr, i64, i64 } %t851, ptr %t855 - store i64 %t853, ptr %t837 - call void @finch_str_drop(ptr %a756) - call void @finch.drop.S_ast_Type(ptr %a702) - call void @finch.drop.S_gen_Val(ptr %a696) - br label %for.step7970 -for.step7970: - %t856 = load i64, ptr %a327 - %t857 = add i64 %t856, 1 - store i64 %t857, ptr %a327 - br label %for.cond7968 -for.end7971: - %t858 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 2 - %t859 = load { ptr, i64, i64 }, ptr %t858 - store { ptr, i64, i64 } %t859, ptr %a860 - call void @finch_str_copy(ptr %a861, ptr %a860) - %t862 = load { ptr, i64, i64 }, ptr %a861 - store { ptr, i64, i64 } %t862, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5093, i64 0, i64 0 }, ptr %a864 - %t865 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t866 = getelementptr inbounds %S.gen.Abi, ptr %t865, i32 0, i32 0 - %t867 = load { ptr, i64, i64 }, ptr %t866 - store { ptr, i64, i64 } %t867, ptr %a868 - store { ptr, i64, i64 } { ptr @.str.5094, i64 6, i64 0 }, ptr %a869 - %t870 = call i32 @finch_str_eq(ptr %a868, ptr %a869) - %t871 = icmp ne i32 %t870, 0 - br i1 %t871, label %then8041, label %endif8043 -then8041: - %t872 = load ptr, ptr %a1 - %t873 = load %S.ast.Type, ptr %a219 - %t874 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t872, %S.ast.Type %t873) - %t875 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } %t874, ptr %a864 - store { ptr, i64, i64 } %t875, ptr %a876 - call void @finch_str_drop(ptr %a876) - br label %endif8043 -endif8043: - store { ptr, i64, i64 } { ptr @.str.5095, i64 0, i64 0 }, ptr %a877 - %t878 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t879 = load i1, ptr %t878 - br i1 %t879, label %then8044, label %endif8046 -then8044: - %t880 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5096, i64 5, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t883 = load i64, ptr %t882 - %t884 = icmp eq i64 %t883, 0 - br i1 %t884, label %then8047, label %endif8049 -then8047: - %t885 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5097, i64 3, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t885, ptr %a886 - call void @finch_str_drop(ptr %a886) - br label %endif8049 -endif8049: - br label %endif8046 -endif8046: - %t887 = load ptr, ptr %a1 - %t888 = icmp eq ptr %t887, null - br i1 %t888, label %panic8050, label %ok8051 -panic8050: - call void @finch_panic(ptr @.str.5098, i64 4770, ptr @.str.5099) - unreachable -ok8051: - %t889 = getelementptr inbounds %S.gen.Gen, ptr %t887, i32 0, i32 40 - %t890 = getelementptr inbounds { ptr, i64, i64 }, ptr %t889, i32 0, i32 1 - %t891 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t892 = load { ptr, i64, i64 }, ptr %t891 - store { ptr, i64, i64 } { ptr @.str.5100, i64 2, i64 0 }, ptr %a894 - store { ptr, i64, i64 } %t892, ptr %a895 - call void @finch_str_concat(ptr %a893, ptr %a894, ptr %a895) - %t896 = load { ptr, i64, i64 }, ptr %a893 - store i64 -1, ptr %a897 - %t898 = load i64, ptr %t890 - %t899 = load ptr, ptr %t889 - store i64 0, ptr %a900 - br label %find.cond8052 -find.cond8052: - %t901 = load i64, ptr %a900 - %t902 = icmp slt i64 %t901, %t898 - br i1 %t902, label %find.body8053, label %find.end8056 -find.body8053: - %t903 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 %t901 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t904, ptr %a905 - store { ptr, i64, i64 } %t896, ptr %a906 - %t907 = call i32 @finch_str_eq(ptr %a905, ptr %a906) - %t908 = icmp ne i32 %t907, 0 - br i1 %t908, label %find.hit8054, label %find.next8055 -find.hit8054: - store i64 %t901, ptr %a897 - br label %find.end8056 -find.next8055: - %t909 = add i64 %t901, 1 - store i64 %t909, ptr %a900 - br label %find.cond8052 -find.end8056: - store { ptr, i64, i64 } %t896, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load i64, ptr %a897 - %t912 = icmp sge i64 %t911, 0 - %t913 = xor i1 %t912, true - br i1 %t913, label %then8057, label %endif8059 -then8057: - %t914 = load ptr, ptr %a1 - %t915 = icmp eq ptr %t914, null - br i1 %t915, label %panic8060, label %ok8061 -panic8060: - call void @finch_panic(ptr @.str.5101, i64 4771, ptr @.str.5102) - unreachable -ok8061: - %t916 = getelementptr inbounds %S.gen.Gen, ptr %t914, i32 0, i32 40 - %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %t916, i32 0, i32 1 - %t918 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - store { ptr, i64, i64 } { ptr @.str.5103, i64 2, i64 0 }, ptr %a921 - store { ptr, i64, i64 } %t919, ptr %a922 - call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922) - %t923 = load { ptr, i64, i64 }, ptr %a920 - %t924 = load i64, ptr %t917 - %t925 = add i64 %t924, 1 - call void @finch_arr_reserve(ptr %t916, i64 %t925, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t926 = load ptr, ptr %t916 - %t927 = getelementptr inbounds { ptr, i64, i64 }, ptr %t926, i64 %t924 - store { ptr, i64, i64 } %t923, ptr %t927 - store i64 %t925, ptr %t917 - %t928 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t929 = load { ptr, i64, i64 }, ptr %t928 - %t930 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t929) - %t931 = xor i1 %t930, true - br i1 %t931, label %then8062, label %endif8064 -then8062: - %t932 = load ptr, ptr %a1 - %t933 = icmp eq ptr %t932, null - br i1 %t933, label %panic8065, label %ok8066 -panic8065: - call void @finch_panic(ptr @.str.5104, i64 4773, ptr @.str.5105) - unreachable -ok8066: - %t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 2 - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i32 0, i32 1 - %t936 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5106, i64 7, i64 0 }, ptr %a938 - store { ptr, i64, i64 } %t936, ptr %a939 - call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) - %t940 = load { ptr, i64, i64 }, ptr %a937 - store { ptr, i64, i64 } %t940, ptr %a942 - store { ptr, i64, i64 } { ptr @.str.5107, i64 1, i64 0 }, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - store { ptr, i64, i64 } %t940, ptr %a944 - call void @finch_str_drop(ptr %a944) - %t945 = load { ptr, i64, i64 }, ptr %a941 - %t946 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t945, ptr %a948 - store { ptr, i64, i64 } %t946, ptr %a949 - call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) - store { ptr, i64, i64 } %t945, ptr %a950 - call void @finch_str_drop(ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a947 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.5108, i64 2, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.5109, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - %t969 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5110, i64 2, i64 0 }, ptr %a970 - call void @finch_str_join(ptr %a971, ptr %a262, ptr %a970) - %t972 = load { ptr, i64, i64 }, ptr %a971 - store { ptr, i64, i64 } %t968, ptr %a974 - store { ptr, i64, i64 } %t972, ptr %a975 - call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) - store { ptr, i64, i64 } %t968, ptr %a976 - call void @finch_str_drop(ptr %a976) - store { ptr, i64, i64 } %t972, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a973 - %t979 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t978, ptr %a981 - store { ptr, i64, i64 } %t979, ptr %a982 - call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) - store { ptr, i64, i64 } %t978, ptr %a983 - call void @finch_str_drop(ptr %a983) - %t984 = load { ptr, i64, i64 }, ptr %a980 - store { ptr, i64, i64 } %t984, ptr %a986 - store { ptr, i64, i64 } { ptr @.str.5111, i64 1, i64 0 }, ptr %a987 - call void @finch_str_concat(ptr %a985, ptr %a986, ptr %a987) - store { ptr, i64, i64 } %t984, ptr %a988 - call void @finch_str_drop(ptr %a988) - %t989 = load { ptr, i64, i64 }, ptr %a985 - %t990 = load i64, ptr %t935 - %t991 = add i64 %t990, 1 - call void @finch_arr_reserve(ptr %t934, i64 %t991, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t992 = load ptr, ptr %t934 - %t993 = getelementptr inbounds { ptr, i64, i64 }, ptr %t992, i64 %t990 - store { ptr, i64, i64 } %t989, ptr %t993 - store i64 %t991, ptr %t935 - br label %endif8064 -endif8064: - br label %endif8059 -endif8059: - store { ptr, i64, i64 } { ptr @.str.5112, i64 0, i64 0 }, ptr %a994 - %t995 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t996 = load i1, ptr %t995 - br i1 %t996, label %then8067, label %endif8069 -then8067: - %t997 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5114, i64 2, i64 0 }, ptr %a998 - call void @finch_str_join(ptr %a999, ptr %a262, ptr %a998) - %t1000 = load { ptr, i64, i64 }, ptr %a999 - store { ptr, i64, i64 } { ptr @.str.5113, i64 2, i64 0 }, ptr %a1002 - store { ptr, i64, i64 } %t1000, ptr %a1003 - call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) - store { ptr, i64, i64 } %t1000, ptr %a1004 - call void @finch_str_drop(ptr %a1004) - %t1005 = load { ptr, i64, i64 }, ptr %a1001 - %t1006 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t1005, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - store { ptr, i64, i64 } %t1005, ptr %a1010 - call void @finch_str_drop(ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5115, i64 1, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1016, ptr %a994 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_drop(ptr %a1018) - br label %endif8069 -endif8069: - %t1019 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5116, i64 4, i64 0 }, ptr %a1021 - store { ptr, i64, i64 } %t1019, ptr %a1022 - call void @finch_str_concat(ptr %a1020, ptr %a1021, ptr %a1022) - %t1023 = load { ptr, i64, i64 }, ptr %a1020 - store { ptr, i64, i64 } %t1023, ptr %a1025 - store { ptr, i64, i64 } { ptr @.str.5117, i64 1, i64 0 }, ptr %a1026 - call void @finch_str_concat(ptr %a1024, ptr %a1025, ptr %a1026) - store { ptr, i64, i64 } %t1023, ptr %a1027 - call void @finch_str_drop(ptr %a1027) - %t1028 = load { ptr, i64, i64 }, ptr %a1024 - %t1029 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t1028, ptr %a1031 - store { ptr, i64, i64 } %t1029, ptr %a1032 - call void @finch_str_concat(ptr %a1030, ptr %a1031, ptr %a1032) - store { ptr, i64, i64 } %t1028, ptr %a1033 - call void @finch_str_drop(ptr %a1033) - %t1034 = load { ptr, i64, i64 }, ptr %a1030 - %t1035 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1035, ptr %a1038 - call void @finch_str_concat(ptr %a1036, ptr %a1037, ptr %a1038) - store { ptr, i64, i64 } %t1034, ptr %a1039 - call void @finch_str_drop(ptr %a1039) - %t1040 = load { ptr, i64, i64 }, ptr %a1036 - store { ptr, i64, i64 } %t1040, ptr %a1042 - store { ptr, i64, i64 } { ptr @.str.5118, i64 2, i64 0 }, ptr %a1043 - call void @finch_str_concat(ptr %a1041, ptr %a1042, ptr %a1043) - store { ptr, i64, i64 } %t1040, ptr %a1044 - call void @finch_str_drop(ptr %a1044) - %t1045 = load { ptr, i64, i64 }, ptr %a1041 - %t1046 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t1047 = load { ptr, i64, i64 }, ptr %t1046 - store { ptr, i64, i64 } %t1045, ptr %a1049 - store { ptr, i64, i64 } %t1047, ptr %a1050 - call void @finch_str_concat(ptr %a1048, ptr %a1049, ptr %a1050) - store { ptr, i64, i64 } %t1045, ptr %a1051 - call void @finch_str_drop(ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1048 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5119, i64 1, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5120, i64 2, i64 0 }, ptr %a1059 - call void @finch_str_join(ptr %a1060, ptr %a263, ptr %a1059) - %t1061 = load { ptr, i64, i64 }, ptr %a1060 - store { ptr, i64, i64 } %t1057, ptr %a1063 - store { ptr, i64, i64 } %t1061, ptr %a1064 - call void @finch_str_concat(ptr %a1062, ptr %a1063, ptr %a1064) - store { ptr, i64, i64 } %t1057, ptr %a1065 - call void @finch_str_drop(ptr %a1065) - store { ptr, i64, i64 } %t1061, ptr %a1066 - call void @finch_str_drop(ptr %a1066) - %t1067 = load { ptr, i64, i64 }, ptr %a1062 - store { ptr, i64, i64 } %t1067, ptr %a1069 - store { ptr, i64, i64 } { ptr @.str.5121, i64 1, i64 0 }, ptr %a1070 - call void @finch_str_concat(ptr %a1068, ptr %a1069, ptr %a1070) - store { ptr, i64, i64 } %t1067, ptr %a1071 - call void @finch_str_drop(ptr %a1071) - %t1072 = load { ptr, i64, i64 }, ptr %a1068 - store { ptr, i64, i64 } %t1072, ptr %a1073 - %t1074 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1075 = load { ptr, i64, i64 }, ptr %t1074 - store { ptr, i64, i64 } %t1075, ptr %a1076 - store { ptr, i64, i64 } { ptr @.str.5122, i64 4, i64 0 }, ptr %a1077 - %t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077) - %t1079 = icmp ne i32 %t1078, 0 - br i1 %t1079, label %then8070, label %endif8072 -then8070: - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1080, { ptr, i64, i64 } %t1081) - %t1082 = load ptr, ptr %a1 - %t1083 = load { ptr, i64, i64 }, ptr %a317 - %t1084 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1082, { ptr, i64, i64 } %t1083, i64 %t1084) - %t1085 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1085, ptr %a1086 - call void @finch.copy.S_ast_Type(ptr %a1087, ptr %a1086) - %t1088 = load %S.ast.Type, ptr %a1087 - %t1089 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1088, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1089 -endif8072: - %t1090 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t1091 = load i1, ptr %t1090 - br i1 %t1091, label %then8073, label %endif8075 -then8073: - %t1092 = load ptr, ptr %a1 - %t1093 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1092, { ptr, i64, i64 } %t1093) - %t1094 = load ptr, ptr %a1 - %t1095 = load { ptr, i64, i64 }, ptr %a317 - %t1096 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1094, { ptr, i64, i64 } %t1095, i64 %t1096) - %t1097 = load ptr, ptr %a1 - %t1098 = load ptr, ptr %a1 - %t1099 = load %S.ast.Type, ptr %a219 - %t1100 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1098, %S.ast.Type %t1099) - %t1101 = load { ptr, i64, i64 }, ptr %a264 - %t1102 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1097, { ptr, i64, i64 } %t1100, { ptr, i64, i64 } %t1101) - store { ptr, i64, i64 } %t1100, ptr %a1103 - call void @finch_str_drop(ptr %a1103) - %t1104 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1102, 0 - %t1105 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1105, ptr %a1106 - call void @finch.copy.S_ast_Type(ptr %a1107, ptr %a1106) - %t1108 = load %S.ast.Type, ptr %a1107 - %t1109 = insertvalue %S.gen.Val %t1104, %S.ast.Type %t1108, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1109 -endif8075: - %t1110 = load ptr, ptr %a1 - %t1111 = load { ptr, i64, i64 }, ptr %a1073 - %t1112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1110, { ptr, i64, i64 } %t1111) - store { ptr, i64, i64 } %t1112, ptr %a1113 - %t1114 = load ptr, ptr %a1 - %t1115 = load { ptr, i64, i64 }, ptr %a317 - %t1116 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1114, { ptr, i64, i64 } %t1115, i64 %t1116) - %t1117 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1118 = getelementptr inbounds %S.gen.Abi, ptr %t1117, i32 0, i32 0 - %t1119 = load { ptr, i64, i64 }, ptr %t1118 - store { ptr, i64, i64 } %t1119, ptr %a1120 - store { ptr, i64, i64 } { ptr @.str.5123, i64 6, i64 0 }, ptr %a1121 - %t1122 = call i32 @finch_str_eq(ptr %a1120, ptr %a1121) - %t1123 = icmp ne i32 %t1122, 0 - br i1 %t1123, label %then8076, label %endif8078 -then8076: - %t1124 = load ptr, ptr %a1 - %t1125 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1124, { ptr, i64, i64 } { ptr @.str.5124, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1125, ptr %a1126 - %t1127 = load ptr, ptr %a1 - %t1128 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1129 = getelementptr inbounds %S.gen.Abi, ptr %t1128, i32 0, i32 2 - %t1130 = load { ptr, i64, i64 }, ptr %t1129 - %t1131 = load { ptr, i64, i64 }, ptr %a1113 - %t1132 = load { ptr, i64, i64 }, ptr %a1126 - call void @finch.gen.store(ptr %t1127, { ptr, i64, i64 } %t1130, { ptr, i64, i64 } %t1131, { ptr, i64, i64 } %t1132) - %t1133 = load ptr, ptr %a1 - %t1134 = load ptr, ptr %a1 - %t1135 = load %S.ast.Type, ptr %a219 - %t1136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1134, %S.ast.Type %t1135) - %t1137 = load { ptr, i64, i64 }, ptr %a1126 - %t1138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1133, { ptr, i64, i64 } %t1136, { ptr, i64, i64 } %t1137) - store { ptr, i64, i64 } %t1136, ptr %a1139 - call void @finch_str_drop(ptr %a1139) - %t1140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1138, 0 - %t1141 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1141, ptr %a1142 - call void @finch.copy.S_ast_Type(ptr %a1143, ptr %a1142) - %t1144 = load %S.ast.Type, ptr %a1143 - %t1145 = insertvalue %S.gen.Val %t1140, %S.ast.Type %t1144, 1 - call void @finch_str_drop(ptr %a1126) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1145 -endif8078: - %t1146 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1147 = load { ptr, i64, i64 }, ptr %t1146 - store { ptr, i64, i64 } %t1147, ptr %a1148 - store { ptr, i64, i64 } { ptr @.str.5125, i64 3, i64 0 }, ptr %a1149 - %t1150 = call i32 @finch_str_eq(ptr %a1148, ptr %a1149) - %t1151 = icmp ne i32 %t1150, 0 - br i1 %t1151, label %then8079, label %endif8081 -then8079: - %t1152 = load ptr, ptr %a1 - %t1153 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1152) - store { ptr, i64, i64 } %t1153, ptr %a1154 - %t1155 = load ptr, ptr %a1 - %t1156 = load { ptr, i64, i64 }, ptr %a1154 - call void @finch.gen.store(ptr %t1155, { ptr, i64, i64 } { ptr @.str.5126, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5127, i64 15, i64 0 }, { ptr, i64, i64 } %t1156) - %t1157 = load ptr, ptr %a1 - %t1158 = load { ptr, i64, i64 }, ptr %a1154 - store { ptr, i64, i64 } { ptr @.str.5128, i64 32, i64 0 }, ptr %a1160 - store { ptr, i64, i64 } %t1158, ptr %a1161 - call void @finch_str_concat(ptr %a1159, ptr %a1160, ptr %a1161) - %t1162 = load { ptr, i64, i64 }, ptr %a1159 - store { ptr, i64, i64 } %t1162, ptr %a1164 - store { ptr, i64, i64 } { ptr @.str.5129, i64 6, i64 0 }, ptr %a1165 - call void @finch_str_concat(ptr %a1163, ptr %a1164, ptr %a1165) - store { ptr, i64, i64 } %t1162, ptr %a1166 - call void @finch_str_drop(ptr %a1166) - %t1167 = load { ptr, i64, i64 }, ptr %a1163 - %t1168 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1167, ptr %a1170 - store { ptr, i64, i64 } %t1168, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1167, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - store { ptr, i64, i64 } %t1173, ptr %a1175 - store { ptr, i64, i64 } { ptr @.str.5130, i64 1, i64 0 }, ptr %a1176 - call void @finch_str_concat(ptr %a1174, ptr %a1175, ptr %a1176) - store { ptr, i64, i64 } %t1173, ptr %a1177 - call void @finch_str_drop(ptr %a1177) - %t1178 = load { ptr, i64, i64 }, ptr %a1174 - call void @finch.gen.emit(ptr %t1157, { ptr, i64, i64 } %t1178) - store { ptr, i64, i64 } %t1178, ptr %a1179 - call void @finch_str_drop(ptr %a1179) - %t1180 = load ptr, ptr %a1 - %t1181 = load { ptr, i64, i64 }, ptr %a1154 - %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.5131, i64 17, i64 0 }, { ptr, i64, i64 } %t1181) - %t1183 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1182, 0 - %t1184 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1184, ptr %a1185 - call void @finch.copy.S_ast_Type(ptr %a1186, ptr %a1185) - %t1187 = load %S.ast.Type, ptr %a1186 - %t1188 = insertvalue %S.gen.Val %t1183, %S.ast.Type %t1187, 1 - call void @finch_str_drop(ptr %a1154) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1188 -endif8081: - %t1189 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1189, ptr %a1190 - call void @finch_str_copy(ptr %a1191, ptr %a1190) - %t1192 = load { ptr, i64, i64 }, ptr %a1191 - %t1193 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1192, 0 - %t1194 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1194, ptr %a1195 - call void @finch.copy.S_ast_Type(ptr %a1196, ptr %a1195) - %t1197 = load %S.ast.Type, ptr %a1196 - %t1198 = insertvalue %S.gen.Val %t1193, %S.ast.Type %t1197, 1 - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1198 -} - -define internal void @finch.gen.releaseAll(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca i64, align 16 - %a4 = alloca i64, align 16 - %a12 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store i64 0, ptr %a4 - br label %each.cond8082 -each.cond8082: - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t6 = load i64, ptr %t5 - %t7 = load i64, ptr %a4 - %t8 = icmp slt i64 %t7, %t6 - br i1 %t8, label %each.body8083, label %each.end8085 -each.body8083: - %t9 = load ptr, ptr %a2 - %t10 = getelementptr inbounds %S.gen.Val, ptr %t9, i64 %t7 - %t11 = load %S.gen.Val, ptr %t10 - store %S.gen.Val %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = load %S.gen.Val, ptr %a12 - call void @finch.gen.release(ptr %t13, %S.gen.Val %t14) - br label %each.step8084 -each.step8084: - %t15 = load i64, ptr %a4 - %t16 = add i64 %t15, 1 - store i64 %t16, ptr %a4 - br label %each.cond8082 -each.end8085: - %t17 = load ptr, ptr %a1 - %t18 = load i64, ptr %a3 - call void @finch.gen.heldEnd(ptr %t17, i64 %t18) - ret void -} - -define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { -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.5132, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5133, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5134, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5135, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5136, 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.cond8086 -find.cond8086: - %t19 = load i64, ptr %a18 - %t20 = icmp slt i64 %t19, %t16 - br i1 %t20, label %find.body8087, label %find.end8090 -find.body8087: - %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.hit8088, label %find.next8089 -find.hit8088: - store i64 %t19, ptr %a15 - br label %find.end8090 -find.next8089: - %t27 = add i64 %t19, 1 - store i64 %t27, ptr %a18 - br label %find.cond8086 -find.end8090: - %t28 = load i64, ptr %a15 - %t29 = icmp sge i64 %t28, 0 - call void @finch.drop.arr_str(ptr %a12) - 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 - %a93 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.5137, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5138, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5139, i64 7, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5140, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5141, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.5142, i64 7, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.5143, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.5144, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.5145, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.5146, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.5147, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.5148, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.5149, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.5150, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.5151, i64 5, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.5152, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.5153, i64 4, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.5154, i64 6, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.5155, i64 6, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.5156, i64 6, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.5157, i64 4, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.5158, i64 5, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.5159, 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.5160, i64 7, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 - store { ptr, i64, i64 } { ptr @.str.5161, i64 7, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 - store { ptr, i64, i64 } { ptr @.str.5162, i64 7, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3 - store { ptr, i64, i64 } { ptr @.str.5163, i64 7, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 - store { ptr, i64, i64 } { ptr @.str.5164, i64 7, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 - store { ptr, i64, i64 } { ptr @.str.5165, i64 7, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6 - store { ptr, i64, i64 } { ptr @.str.5166, i64 6, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 - store { ptr, i64, i64 } { ptr @.str.5167, i64 6, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 - store { ptr, i64, i64 } { ptr @.str.5168, i64 6, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9 - store { ptr, i64, i64 } { ptr @.str.5169, i64 6, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 - store { ptr, i64, i64 } { ptr @.str.5170, i64 6, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 - store { ptr, i64, i64 } { ptr @.str.5171, i64 6, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12 - store { ptr, i64, i64 } { ptr @.str.5172, i64 8, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 - store { ptr, i64, i64 } { ptr @.str.5173, i64 8, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 - store { ptr, i64, i64 } { ptr @.str.5174, i64 8, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15 - store { ptr, i64, i64 } { ptr @.str.5175, i64 8, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 - store { ptr, i64, i64 } { ptr @.str.5176, i64 8, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 - store { ptr, i64, i64 } { ptr @.str.5177, i64 8, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18 - store { ptr, i64, i64 } { ptr @.str.5178, i64 8, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 - store { ptr, i64, i64 } { ptr @.str.5179, i64 8, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 - store { ptr, i64, i64 } { ptr @.str.5180, i64 6, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21 - store { ptr, i64, i64 } { ptr @.str.5181, i64 8, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 - store { ptr, i64, i64 } { ptr @.str.5182, 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.cond8091 -find.cond8091: - %t66 = load i64, ptr %a65 - %t67 = icmp slt i64 %t66, %t63 - br i1 %t67, label %find.body8092, label %find.end8095 -find.body8092: - %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.hit8093, label %find.next8094 -find.hit8093: - store i64 %t66, ptr %a62 - br label %find.end8095 -find.next8094: - %t74 = add i64 %t66, 1 - store i64 %t74, ptr %a65 - br label %find.cond8091 -find.end8095: - %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 %then8096, label %endif8098 -then8096: - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.5183, i64 0, i64 0 } -endif8098: - %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 %range8099, label %inrange8100 -range8099: - call void @finch_panic_index(ptr @.str.5185, i64 4830, i64 %t79, i64 %t81) - unreachable -inrange8100: - %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.5184, 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.5186, i64 14, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t94 -} - -define internal void @finch.drop.S_docs_Doc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_docs_Doc(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond8110 -n.cond8110: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body8111, label %n.end8112 -n.body8111: - %t7 = getelementptr inbounds %S.docs.Doc, ptr %t1, i64 %t5 - call void @finch.drop.S_docs_Doc(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond8110 -n.end8112: - call void @finch_arr_free(ptr %a) - ret void -} - -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 { ptr, i64, i64 }, align 16 - %a20 = alloca %S.docs.Doc, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca %S.ast.Node, align 16 - %a110 = alloca %S.ast.Node, align 16 - %a112 = alloca %S.ast.Node, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca i64, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.gen.Place, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca %S.gen.Val, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i1, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca %S.ast.Type, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca %S.gen.Val, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %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 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a779 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca %S.gen.Val, align 16 - %a832 = alloca i64, align 16 - %a844 = alloca %S.gen.Val, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a885 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca { ptr, i64, i64 }, align 16 - %a891 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a900 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a915 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca { ptr, i64, i64 }, align 16 - %a919 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a932 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a945 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a956 = alloca { ptr, i64, i64 }, align 16 - %a957 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a972 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca %S.gen.Val, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1011 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1022 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1028 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1080 = alloca { ptr, i64, i64 }, align 16 - %a1081 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca %S.ast.Type, align 16 - %a1108 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1112 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1114 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1118 = alloca { ptr, i64, i64 }, align 16 - %a1119 = alloca { ptr, i64, i64 }, align 16 - %a1123 = alloca %S.ast.Type, align 16 - %a1128 = alloca { ptr, i64, i64 }, align 16 - %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1130 = alloca { ptr, i64, i64 }, align 16 - %a1132 = alloca { ptr, i64, i64 }, align 16 - %a1133 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1143 = alloca { ptr, i64, i64 }, align 16 - %a1144 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1178 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1180 = alloca { ptr, i64, i64 }, align 16 - %a1181 = alloca { ptr, i64, i64 }, align 16 - %a1183 = alloca { ptr, i64, i64 }, align 16 - %a1184 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca { ptr, i64, i64 }, align 16 - %a1188 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca { ptr, i64, i64 }, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca { ptr, i64, i64 }, align 16 - %a1196 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1198 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca %S.ast.Type, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1217 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1243 = alloca %S.gen.Val, align 16 - %a1244 = alloca %S.ast.Type, align 16 - %a1245 = alloca %S.gen.Val, align 16 - %a1249 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1253 = alloca { ptr, i64, i64 }, align 16 - %a1254 = alloca { ptr, i64, i64 }, align 16 - %a1255 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1259 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1270 = alloca { ptr, i64, i64 }, align 16 - %a1271 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca %S.gen.Val, align 16 - %a1303 = alloca %S.gen.Val, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1309 = alloca { ptr, i64, i64 }, align 16 - %a1310 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1313 = alloca { ptr, i64, i64 }, align 16 - %a1314 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1316 = alloca { ptr, i64, i64 }, align 16 - %a1321 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1327 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1332 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1359 = alloca %S.gen.Val, align 16 - %a1365 = alloca { ptr, i64, i64 }, align 16 - %a1366 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1370 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1376 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1387 = alloca { ptr, i64, i64 }, align 16 - %a1388 = alloca { ptr, i64, i64 }, align 16 - %a1390 = alloca { ptr, i64, i64 }, align 16 - %a1391 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca %S.gen.Val, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1452 = alloca { ptr, i64, i64 }, align 16 - %a1457 = alloca { ptr, i64, i64 }, align 16 - %a1458 = alloca { ptr, i64, i64 }, align 16 - %a1459 = alloca { ptr, i64, i64 }, align 16 - %a1461 = alloca { ptr, i64, i64 }, align 16 - %a1462 = alloca { ptr, i64, i64 }, align 16 - %a1463 = alloca { ptr, i64, i64 }, align 16 - %a1464 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca { ptr, i64, i64 }, align 16 - %a1470 = alloca { ptr, i64, i64 }, align 16 - %a1491 = alloca { ptr, i64, i64 }, align 16 - %a1492 = alloca { ptr, i64, i64 }, align 16 - %a1493 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1497 = alloca { ptr, i64, i64 }, align 16 - %a1498 = alloca { ptr, i64, i64 }, align 16 - %a1500 = alloca { ptr, i64, i64 }, align 16 - %a1510 = alloca i64, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1525 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1530 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca i64, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1577 = alloca { ptr, i64, i64 }, align 16 - %a1578 = alloca { ptr, i64, i64 }, align 16 - %a1579 = alloca { ptr, i64, i64 }, align 16 - %a1580 = alloca { ptr, i64, i64 }, align 16 - %a1582 = alloca { ptr, i64, i64 }, align 16 - %a1583 = alloca { ptr, i64, i64 }, align 16 - %a1584 = alloca { ptr, i64, i64 }, align 16 - %a1585 = alloca { ptr, i64, i64 }, align 16 - %a1587 = alloca { ptr, i64, i64 }, align 16 - %a1588 = alloca { ptr, i64, i64 }, align 16 - %a1591 = alloca i64, align 16 - %a1599 = alloca %S.ast.Type, align 16 - %a1620 = alloca %S.ast.Type, align 16 - %a1641 = alloca i64, align 16 - %a1654 = alloca %S.gen.StructDef, align 16 - %a1655 = alloca %S.gen.StructDef, align 16 - %a1657 = alloca %S.gen.StructDef, align 16 - %a1685 = alloca %S.ast.Node, align 16 - %a1686 = alloca %S.ast.Node, align 16 - %a1688 = alloca %S.ast.Node, align 16 - %a1697 = alloca { ptr, i64, i64 }, align 16 - %a1698 = alloca { ptr, i64, i64 }, align 16 - %a1699 = alloca { ptr, i64, i64 }, align 16 - %a1701 = alloca { ptr, i64, i64 }, align 16 - %a1702 = alloca { ptr, i64, i64 }, align 16 - %a1703 = alloca { ptr, i64, i64 }, align 16 - %a1704 = alloca { ptr, i64, i64 }, align 16 - %a1708 = alloca { ptr, i64, i64 }, align 16 - %a1709 = alloca { ptr, i64, i64 }, align 16 - %a1711 = alloca { ptr, i64, i64 }, align 16 - %a1712 = alloca { ptr, i64, i64 }, align 16 - %a1713 = alloca { ptr, i64, i64 }, align 16 - %a1714 = alloca { ptr, i64, i64 }, align 16 - %a1715 = alloca { ptr, i64, i64 }, align 16 - %a1717 = alloca { ptr, i64, i64 }, align 16 - %a1718 = alloca { ptr, i64, i64 }, align 16 - %a1719 = alloca { ptr, i64, i64 }, align 16 - %a1720 = alloca { ptr, i64, i64 }, align 16 - %a1737 = alloca { ptr, i64, i64 }, align 16 - %a1753 = alloca i64, align 16 - %a1765 = alloca { ptr, i64, i64 }, align 16 - %a1775 = alloca { ptr, i64, i64 }, align 16 - %a1778 = alloca { ptr, i64, i64 }, align 16 - %a1779 = alloca { ptr, i64, i64 }, align 16 - %a1806 = alloca { ptr, i64, i64 }, align 16 - %a1807 = alloca { ptr, i64, i64 }, align 16 - %a1808 = alloca { ptr, i64, i64 }, align 16 - %a1810 = alloca { ptr, i64, i64 }, align 16 - %a1811 = alloca { ptr, i64, i64 }, align 16 - %a1812 = alloca { ptr, i64, i64 }, align 16 - %a1813 = alloca { ptr, i64, i64 }, align 16 - %a1815 = alloca { ptr, i64, i64 }, align 16 - %a1819 = alloca { ptr, i64, i64 }, align 16 - %a1820 = alloca { ptr, i64, i64 }, align 16 - %a1821 = alloca { ptr, i64, i64 }, align 16 - %a1823 = alloca { ptr, i64, i64 }, align 16 - %a1824 = alloca { ptr, i64, i64 }, align 16 - %a1825 = alloca { ptr, i64, i64 }, align 16 - %a1826 = alloca { ptr, i64, i64 }, align 16 - %a1830 = alloca { ptr, i64, i64 }, align 16 - %a1831 = alloca { ptr, i64, i64 }, align 16 - %a1832 = alloca { ptr, i64, i64 }, align 16 - %a1833 = alloca { ptr, i64, i64 }, align 16 - %a1834 = alloca { ptr, i64, i64 }, align 16 - %a1836 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 %panic8101, label %ok8102 -panic8101: - call void @finch_panic(ptr @.str.5187, i64 4835, ptr @.str.5188) - unreachable -ok8102: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - br label %logic.from8103 -logic.from8103: - br i1 %t12, label %logic.rhs8104, label %logic.end8105 -logic.rhs8104: - %t13 = load { ptr, i64, i64 }, ptr %a8 - %t14 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t13) - br label %logic.rend8106 -logic.rend8106: - br label %logic.end8105 -logic.end8105: - %t15 = phi i1 [ false, %logic.from8103 ], [ %t14, %logic.rend8106 ] - br i1 %t15, label %then8107, label %endif8109 -then8107: - %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 { ptr, i64, i64 } %t16, ptr %a19 - call void @finch.drop.arr_S_docs_Doc(ptr %a19) - store %S.docs.Doc %t18, ptr %a20 - %t21 = getelementptr inbounds %S.docs.Doc, ptr %a20, i32 0, i32 0 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = icmp sgt i64 %t23, 0 - br i1 %t24, label %then8113, label %endif8115 -then8113: - %t25 = load ptr, ptr %a1 - %t26 = load %S.ast.Node, ptr %a2 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t28 = load i64, ptr %t27 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = load %S.docs.Doc, ptr %a20 - %t32 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t31) - call void @finch.gen.noteRef(ptr %t25, %S.ast.Node %t26, i64 %t28, i64 %t30, { ptr, i64, i64 } %t32, { ptr, i64, i64 } { ptr @.str.5189, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif8115 -endif8115: - call void @finch.drop.S_docs_Doc(ptr %a20) - br label %endif8109 -endif8109: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.5190, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then8116, label %endif8118 -then8116: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.5191, i64 86, i64 0 }) - br label %endif8118 -endif8118: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5192, i64 5, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then8119, label %endif8121 -then8119: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load i64, ptr %t47 - store i64 0, ptr %a49 - br label %for.cond8122 -for.cond8122: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t48 - br i1 %t51, label %for.body8123, label %for.end8125 -for.body8123: - %t52 = load ptr, ptr %a1 - %t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t54 = load i64, ptr %a49 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range8126, label %inrange8127 -range8126: - call void @finch_panic_index(ptr @.str.5193, i64 4846, i64 %t54, i64 %t56) - unreachable -inrange8127: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t52, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t64 = getelementptr inbounds %S.ast.Type, ptr %t63, i32 0, i32 0 - %t65 = load { ptr, i64, i64 }, ptr %t64 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.5194, i64 4, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br i1 %t69, label %then8128, label %endif8130 -then8128: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t72 = load i64, ptr %a49 - %t73 = load { ptr, i64, i64 }, ptr %t71 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range8131, label %inrange8132 -range8131: - call void @finch_panic_index(ptr @.str.5195, i64 4848, i64 %t72, i64 %t74) - unreachable -inrange8132: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 %t72 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5196, i64 53, i64 0 }) - br label %endif8130 -endif8130: - %t79 = load i64, ptr %a49 - %t80 = icmp sgt i64 %t79, 0 - br i1 %t80, label %then8133, label %endif8135 -then8133: - %t81 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t81, { ptr, i64, i64 } { ptr @.str.5197, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5198, i64 0, i64 0 }) - br label %endif8135 -endif8135: - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - call void @finch.gen.emitPrint(ptr %t82, { ptr, i64, i64 } %t84, %S.ast.Type %t86, i1 false) - %t87 = load ptr, ptr %a1 - %t88 = load %S.gen.Val, ptr %a62 - call void @finch.gen.release(ptr %t87, %S.gen.Val %t88) - call void @finch.drop.S_gen_Val(ptr %a62) - br label %for.step8124 -for.step8124: - %t89 = load i64, ptr %a49 - %t90 = add i64 %t89, 1 - store i64 %t90, ptr %a49 - br label %for.cond8122 -for.end8125: - %t91 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t91, { ptr, i64, i64 } { ptr @.str.5199, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5200, i64 0, i64 0 }) - %t92 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5201, i64 4, i64 0 }) - %t93 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t92, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t93 -endif8121: - %t94 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5202, i64 4, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then8136, label %endif8138 -then8136: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t99, %S.ast.Node %t100, i64 0, i64 1, { ptr, i64, i64 } %t101) - %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t103 = load { ptr, i64, i64 }, ptr %t102 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 0, %t104 - br i1 %t105, label %range8139, label %inrange8140 -range8139: - call void @finch_panic_index(ptr @.str.5203, i64 4861, i64 0, i64 %t104) - unreachable -inrange8140: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 0 - %t108 = load %S.ast.Node, ptr %t107 - store %S.ast.Node %t108, ptr %a109 - call void @finch.copy.S_ast_Node(ptr %a110, ptr %a109) - %t111 = load %S.ast.Node, ptr %a110 - store %S.ast.Node %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.5204, i64 3, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from8141 -logic.from8141: - br i1 %t118, label %logic.rhs8142, label %logic.end8143 -logic.rhs8142: - %t119 = load ptr, ptr %a1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = call i64 @finch.gen.lookup(ptr %t119, { ptr, i64, i64 } %t121) - %t123 = icmp slt i64 %t122, 0 - br label %logic.rend8144 -logic.rend8144: - br label %logic.end8143 -logic.end8143: - %t124 = phi i1 [ false, %logic.from8141 ], [ %t123, %logic.rend8144 ] - br i1 %t124, label %then8145, label %endif8147 -then8145: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = icmp eq ptr %t126, null - br i1 %t127, label %panic8148, label %ok8149 -panic8148: - call void @finch_panic(ptr @.str.5205, i64 4863, ptr @.str.5206) - unreachable -ok8149: - %t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 14 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call i64 @finch.gen.findFn(ptr %t125, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t131) - store i64 %t132, ptr %a133 - %t134 = load i64, ptr %a133 - %t135 = icmp sge i64 %t134, 0 - br i1 %t135, label %then8150, label %endif8152 -then8150: - %t136 = load ptr, ptr %a1 - %t137 = load i64, ptr %a133 - %t138 = load %S.ast.Node, ptr %a112 - %t139 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t136, i64 %t137, %S.ast.Node %t138) - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5207, i64 3, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif8152: - br label %endif8147 -endif8147: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5208, i64 3, i64 0 }, ptr %a146 - %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) - %t148 = icmp eq i32 %t147, 0 - br label %logic.from8153 -logic.from8153: - br i1 %t148, label %logic.rhs8154, label %logic.end8155 -logic.rhs8154: - %t149 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5209, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp eq i32 %t153, 0 - br label %logic.rend8156 -logic.rend8156: - br label %logic.end8155 -logic.end8155: - %t155 = phi i1 [ false, %logic.from8153 ], [ %t154, %logic.rend8156 ] - br label %logic.from8157 -logic.from8157: - br i1 %t155, label %logic.rhs8158, label %logic.end8159 -logic.rhs8158: - %t156 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.5210, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br label %logic.rend8160 -logic.rend8160: - br label %logic.end8159 -logic.end8159: - %t162 = phi i1 [ false, %logic.from8157 ], [ %t161, %logic.rend8160 ] - br i1 %t162, label %then8161, label %endif8163 -then8161: - %t163 = load ptr, ptr %a1 - %t164 = load %S.ast.Node, ptr %a112 - call void @finch.gen.fail(ptr %t163, %S.ast.Node %t164, { ptr, i64, i64 } { ptr @.str.5211, i64 63, i64 0 }) - br label %endif8163 -endif8163: - %t165 = load ptr, ptr %a1 - %t166 = load %S.ast.Node, ptr %a112 - %t167 = call %S.gen.Place @finch.gen.place(ptr %t165, %S.ast.Node %t166, i1 true) - store %S.gen.Place %t167, ptr %a168 - %t169 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - %t174 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t173, 0 - %t175 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t176) - %t178 = insertvalue %S.gen.Val %t174, %S.ast.Type %t177, 1 - call void @finch.drop.S_gen_Place(ptr %a168) - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t178 -endif8138: - %t179 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5212, i64 3, i64 0 }, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then8164, label %endif8166 -then8164: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a2 - %t186 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t184, %S.ast.Node %t185, i64 0, i64 1, { ptr, i64, i64 } %t186) - %t187 = load ptr, ptr %a1 - %t188 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 0, %t190 - br i1 %t191, label %range8167, label %inrange8168 -range8167: - call void @finch_panic_index(ptr @.str.5213, i64 4876, i64 0, i64 %t190) - unreachable -inrange8168: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Node, ptr %t192, i64 0 - %t194 = load %S.ast.Node, ptr %t193 - %t195 = call %S.gen.Val @finch.gen.expr(ptr %t187, %S.ast.Node %t194) - store %S.gen.Val %t195, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - call void @finch_str_copy(ptr %a204, ptr %a203) - %t205 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t205, ptr %a206 - store i1 false, ptr %a207 - %t208 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5214, i64 3, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then8169, label %else8170 -then8169: - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a196 - %t215 = call { ptr, i64, i64 } @finch.gen.own(ptr %t213, %S.gen.Val %t214) - %t216 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t217 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t218 = load %S.ast.Type, ptr %t217 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Val %t216, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Val %t222, i1 true, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -else8170: - %t224 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t225 = load %S.ast.Type, ptr %t224 - %t226 = call i1 @finch.gen.isSigned(%S.ast.Type %t225) - br i1 %t226, label %then8172, label %else8173 -then8172: - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5215, i64 34, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.5216, i64 6, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t242 = load %S.ast.Type, ptr %t241 - %t243 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5217, i64 3, i64 0 }) - %t244 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t238, { ptr, i64, i64 } %t240, %S.ast.Type %t242, %S.ast.Type %t243) - store %S.ast.Type %t243, ptr %a245 - call void @finch.drop.S_ast_Type(ptr %a245) - store { ptr, i64, i64 } %t237, ptr %a247 - store { ptr, i64, i64 } %t244, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t237, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t244, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.5218, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t227, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif8174 -else8173: - %t258 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t259 = load %S.ast.Type, ptr %t258 - %t260 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t259) - br i1 %t260, label %then8175, label %else8176 -then8175: - %t261 = load ptr, ptr %a1 - %t262 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5219, i64 35, i64 0 }, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5220, i64 6, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t274 = load { ptr, i64, i64 }, ptr %t273 - %t275 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t276 = load %S.ast.Type, ptr %t275 - %t277 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5221, i64 3, i64 0 }) - %t278 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t272, { ptr, i64, i64 } %t274, %S.ast.Type %t276, %S.ast.Type %t277) - store %S.ast.Type %t277, ptr %a279 - call void @finch.drop.S_ast_Type(ptr %a279) - store { ptr, i64, i64 } %t271, ptr %a281 - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t271, ptr %a283 - call void @finch_str_drop(ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a280 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5222, i64 1, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.emit(ptr %t261, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif8177 -else8176: - %t292 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t293 = load %S.ast.Type, ptr %t292 - %t294 = call i1 @finch.gen.isFloat(%S.ast.Type %t293) - br i1 %t294, label %then8178, label %else8179 -then8178: - %t295 = load ptr, ptr %a1 - %t296 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5223, i64 36, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t300, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.5224, i64 9, i64 0 }, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a301 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5225, i64 5, i64 0 }) - %t312 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t306, { ptr, i64, i64 } %t308, %S.ast.Type %t310, %S.ast.Type %t311) - store %S.ast.Type %t311, ptr %a313 - call void @finch.drop.S_ast_Type(ptr %a313) - store { ptr, i64, i64 } %t305, ptr %a315 - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t305, ptr %a317 - call void @finch_str_drop(ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.5226, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - call void @finch.gen.emit(ptr %t295, { ptr, i64, i64 } %t324) - store { ptr, i64, i64 } %t324, ptr %a325 - call void @finch_str_drop(ptr %a325) - br label %endif8180 -else8179: - %t326 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t326, ptr %a327 - store { ptr, i64, i64 } { ptr @.str.5227, i64 4, i64 0 }, ptr %a328 - %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) - %t330 = icmp ne i32 %t329, 0 - br i1 %t330, label %then8181, label %else8182 -then8181: - %t331 = load ptr, ptr %a1 - %t332 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5228, i64 35, i64 0 }, ptr %a334 - store { ptr, i64, i64 } %t332, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a333 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.5229, i64 13, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t341, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t341, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.5230, i64 1, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - call void @finch.gen.emit(ptr %t331, { ptr, i64, i64 } %t353) - store { ptr, i64, i64 } %t353, ptr %a354 - call void @finch_str_drop(ptr %a354) - br label %endif8183 -else8182: - %t355 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t355, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5231, i64 4, i64 0 }, ptr %a357 - %t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357) - %t359 = icmp ne i32 %t358, 0 - br i1 %t359, label %then8184, label %else8185 -then8184: - %t360 = load ptr, ptr %a1 - %t361 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - store { ptr, i64, i64 } { ptr @.str.5232, i64 8, i64 0 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t366, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.5233, i64 7, i64 0 }, ptr %a369 - call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369) - store { ptr, i64, i64 } %t366, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a367 - %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t360, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a373 - call void @finch_str_drop(ptr %a373) - store { ptr, i64, i64 } %t372, ptr %a374 - %t375 = load ptr, ptr %a1 - %t376 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5234, i64 35, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - %t380 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t380, ptr %a382 - store { ptr, i64, i64 } { ptr @.str.5235, i64 6, i64 0 }, ptr %a383 - call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) - store { ptr, i64, i64 } %t380, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a381 - %t386 = load { ptr, i64, i64 }, ptr %a374 - store { ptr, i64, i64 } %t385, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - store { ptr, i64, i64 } %t385, ptr %a390 - call void @finch_str_drop(ptr %a390) - %t391 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.5236, i64 1, i64 0 }, ptr %a394 - call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) - store { ptr, i64, i64 } %t391, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a392 - call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t396) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a374) - br label %endif8186 -else8185: - %t398 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t398, ptr %a399 - store { ptr, i64, i64 } { ptr @.str.5237, i64 3, i64 0 }, ptr %a400 - %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) - %t402 = icmp ne i32 %t401, 0 - br i1 %t402, label %then8187, label %else8188 -then8187: - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t403, { ptr, i64, i64 } { ptr @.str.5238, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5239, i64 15, i64 0 }, { ptr, i64, i64 } %t404) - %t405 = load ptr, ptr %a1 - %t406 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5240, i64 32, i64 0 }, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5241, i64 6, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - %t416 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t417 = load { ptr, i64, i64 }, ptr %t416 - store { ptr, i64, i64 } %t415, ptr %a419 - store { ptr, i64, i64 } %t417, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t415, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - store { ptr, i64, i64 } %t422, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.5242, i64 1, i64 0 }, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - call void @finch.gen.emit(ptr %t405, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_drop(ptr %a428) - store i1 true, ptr %a207 - br label %endif8189 -else8188: - %t429 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.5243, i64 5, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.from8190 -logic.from8190: - br i1 %t433, label %logic.rhs8191, label %logic.end8192 -logic.rhs8191: - %t434 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t435 = getelementptr inbounds %S.ast.Type, ptr %t434, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 0, %t437 - br i1 %t438, label %range8193, label %inrange8194 -range8193: - call void @finch_panic_index(ptr @.str.5244, i64 4898, i64 0, i64 %t437) - unreachable -inrange8194: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds %S.ast.Type, ptr %t439, i64 0 - %t441 = getelementptr inbounds %S.ast.Type, ptr %t440, i32 0, i32 0 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } { ptr @.str.5245, i64 2, i64 0 }, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br label %logic.from8195 -logic.from8195: - br i1 %t446, label %logic.end8197, label %logic.rhs8196 -logic.rhs8196: - %t447 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t448 = getelementptr inbounds %S.ast.Type, ptr %t447, i32 0, i32 1 - %t449 = load { ptr, i64, i64 }, ptr %t448 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 0, %t450 - br i1 %t451, label %range8198, label %inrange8199 -range8198: - call void @finch_panic_index(ptr @.str.5246, i64 4898, i64 0, i64 %t450) - unreachable -inrange8199: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %t452, i64 0 - %t454 = getelementptr inbounds %S.ast.Type, ptr %t453, i32 0, i32 0 - %t455 = load { ptr, i64, i64 }, ptr %t454 - store { ptr, i64, i64 } %t455, ptr %a456 - store { ptr, i64, i64 } { ptr @.str.5247, i64 4, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend8200 -logic.rend8200: - br label %logic.end8197 -logic.end8197: - %t460 = phi i1 [ true, %logic.from8195 ], [ %t459, %logic.rend8200 ] - br label %logic.rend8201 -logic.rend8201: - br label %logic.end8192 -logic.end8192: - %t461 = phi i1 [ false, %logic.from8190 ], [ %t460, %logic.rend8201 ] - br i1 %t461, label %then8202, label %else8203 -then8202: - %t462 = load ptr, ptr %a1 - %t463 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t462, { ptr, i64, i64 } { ptr @.str.5248, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5249, i64 15, i64 0 }, { ptr, i64, i64 } %t463) - %t464 = load ptr, ptr %a1 - %t465 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5250, i64 36, i64 0 }, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - %t469 = load { ptr, i64, i64 }, ptr %a466 - store { ptr, i64, i64 } %t469, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.5251, i64 6, i64 0 }, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - store { ptr, i64, i64 } %t469, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a470 - %t475 = load ptr, ptr %a1 - %t476 = load %S.gen.Val, ptr %a196 - %t477 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t475, %S.gen.Val %t476) - store { ptr, i64, i64 } %t474, ptr %a479 - store { ptr, i64, i64 } %t477, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t474, ptr %a481 - call void @finch_str_drop(ptr %a481) - store { ptr, i64, i64 } %t477, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = load { ptr, i64, i64 }, ptr %a478 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - store { ptr, i64, i64 } %t483, ptr %a487 - call void @finch_str_drop(ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a484 - call void @finch.gen.emit(ptr %t464, { ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t488, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load ptr, ptr %a1 - %t491 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t490, %S.gen.Val %t491) - br label %endif8204 -else8203: - %t492 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t492, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.5253, i64 4, i64 0 }, ptr %a494 - %t495 = call i32 @finch_str_eq(ptr %a493, ptr %a494) - %t496 = icmp ne i32 %t495, 0 - br label %logic.from8205 -logic.from8205: - br i1 %t496, label %logic.end8207, label %logic.rhs8206 -logic.rhs8206: - %t497 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t497, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5254, i64 4, i64 0 }, ptr %a499 - %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) - %t501 = icmp ne i32 %t500, 0 - br label %logic.rend8208 -logic.rend8208: - br label %logic.end8207 -logic.end8207: - %t502 = phi i1 [ true, %logic.from8205 ], [ %t501, %logic.rend8208 ] - br label %logic.from8209 -logic.from8209: - br i1 %t502, label %logic.end8211, label %logic.rhs8210 -logic.rhs8210: - %t503 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t503, ptr %a504 - store { ptr, i64, i64 } { ptr @.str.5255, i64 5, i64 0 }, ptr %a505 - %t506 = call i32 @finch_str_eq(ptr %a504, ptr %a505) - %t507 = icmp ne i32 %t506, 0 - br label %logic.rend8212 -logic.rend8212: - br label %logic.end8211 -logic.end8211: - %t508 = phi i1 [ true, %logic.from8209 ], [ %t507, %logic.rend8212 ] - br label %logic.from8213 -logic.from8213: - br i1 %t508, label %logic.end8215, label %logic.rhs8214 -logic.rhs8214: - %t509 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.5256, i64 3, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.rend8216 -logic.rend8216: - br label %logic.end8215 -logic.end8215: - %t514 = phi i1 [ true, %logic.from8213 ], [ %t513, %logic.rend8216 ] - br label %logic.from8217 -logic.from8217: - br i1 %t514, label %logic.end8219, label %logic.rhs8218 -logic.rhs8218: - %t515 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t515, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.5257, i64 6, i64 0 }, ptr %a517 - %t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517) - %t519 = icmp ne i32 %t518, 0 - br label %logic.rend8220 -logic.rend8220: - br label %logic.end8219 -logic.end8219: - %t520 = phi i1 [ true, %logic.from8217 ], [ %t519, %logic.rend8220 ] - br label %logic.from8221 -logic.from8221: - br i1 %t520, label %logic.end8223, label %logic.rhs8222 -logic.rhs8222: - %t521 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5258, i64 4, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8224 -logic.rend8224: - br label %logic.end8223 -logic.end8223: - %t526 = phi i1 [ true, %logic.from8221 ], [ %t525, %logic.rend8224 ] - br i1 %t526, label %then8225, label %else8226 -then8225: - %t527 = load ptr, ptr %a1 - %t528 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t527, { ptr, i64, i64 } { ptr @.str.5259, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5260, i64 15, i64 0 }, { ptr, i64, i64 } %t528) - %t529 = load ptr, ptr %a1 - %t530 = load { ptr, i64, i64 }, ptr %a199 - %t531 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t532 = load { ptr, i64, i64 }, ptr %t531 - %t533 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t534 = load %S.ast.Type, ptr %t533 - call void @finch.gen.emitFormat(ptr %t529, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t532, %S.ast.Type %t534, i1 false) - %t535 = load ptr, ptr %a1 - %t536 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t535, %S.gen.Val %t536) - br label %endif8227 -else8226: - %t537 = load ptr, ptr %a1 - %t538 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = extractvalue { ptr, i64, i64 } %t539, 1 - %t541 = icmp uge i64 0, %t540 - br i1 %t541, label %range8228, label %inrange8229 -range8228: - call void @finch_panic_index(ptr @.str.5261, i64 4908, i64 0, i64 %t540) - unreachable -inrange8229: - %t542 = extractvalue { ptr, i64, i64 } %t539, 0 - %t543 = getelementptr inbounds %S.ast.Node, ptr %t542, i64 0 - %t544 = load %S.ast.Node, ptr %t543 - %t545 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t546 = load %S.ast.Type, ptr %t545 - %t547 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t546) - store { ptr, i64, i64 } { ptr @.str.5262, i64 11, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t547, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.5263, i64 9, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - call void @finch.gen.fail(ptr %t537, %S.ast.Node %t544, { ptr, i64, i64 } %t557) - store { ptr, i64, i64 } %t557, ptr %a558 - call void @finch_str_drop(ptr %a558) - br label %endif8227 -endif8227: - br label %endif8204 -endif8204: - br label %endif8189 -endif8189: - br label %endif8186 -endif8186: - br label %endif8183 -endif8183: - br label %endif8180 -endif8180: - br label %endif8177 -endif8177: - br label %endif8174 -endif8174: - br label %endif8171 -endif8171: - %t559 = load ptr, ptr %a1 - %t560 = load { ptr, i64, i64 }, ptr %a199 - %t561 = call { ptr, i64, i64 } @finch.gen.load(ptr %t559, { ptr, i64, i64 } { ptr @.str.5264, i64 17, i64 0 }, { ptr, i64, i64 } %t560) - %t562 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t561, 0 - %t563 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5265, i64 3, i64 0 }) - %t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1 - %t565 = load i1, ptr %a207 - %t566 = xor i1 %t565, true - %t567 = insertvalue %S.gen.Val %t564, i1 %t566, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t567 -endif8166: - %t568 = load { ptr, i64, i64 }, ptr %a8 - %t569 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t568) - store { ptr, i64, i64 } %t569, ptr %a570 - %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %a570, i32 0, i32 1 - %t572 = load i64, ptr %t571 - %t573 = icmp sgt i64 %t572, 0 - br i1 %t573, label %then8230, label %endif8232 -then8230: - %t574 = load ptr, ptr %a1 - %t575 = load %S.ast.Node, ptr %a2 - %t576 = load { ptr, i64, i64 }, ptr %a570 - %t577 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t576) - %t578 = call %S.gen.Val @finch.gen.convert(ptr %t574, %S.ast.Node %t575, %S.ast.Type %t577) - store %S.ast.Type %t577, ptr %a579 - call void @finch.drop.S_ast_Type(ptr %a579) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t578 -endif8232: - %t580 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t580, ptr %a581 - store { ptr, i64, i64 } { ptr @.str.5266, i64 9, i64 0 }, ptr %a582 - %t583 = call i32 @finch_str_eq(ptr %a581, ptr %a582) - %t584 = icmp ne i32 %t583, 0 - br label %logic.from8233 -logic.from8233: - br i1 %t584, label %logic.end8235, label %logic.rhs8234 -logic.rhs8234: - %t585 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t585, ptr %a586 - store { ptr, i64, i64 } { ptr @.str.5267, i64 11, i64 0 }, ptr %a587 - %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) - %t589 = icmp ne i32 %t588, 0 - br label %logic.rend8236 -logic.rend8236: - br label %logic.end8235 -logic.end8235: - %t590 = phi i1 [ true, %logic.from8233 ], [ %t589, %logic.rend8236 ] - br i1 %t590, label %then8237, label %endif8239 -then8237: - %t591 = load ptr, ptr %a1 - %t592 = load %S.ast.Node, ptr %a2 - %t593 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t591, %S.ast.Node %t592, i64 0, i64 1, { ptr, i64, i64 } %t593) - %t594 = load ptr, ptr %a1 - %t595 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t596 = load { ptr, i64, i64 }, ptr %t595 - %t597 = extractvalue { ptr, i64, i64 } %t596, 1 - %t598 = icmp uge i64 0, %t597 - br i1 %t598, label %range8240, label %inrange8241 -range8240: - call void @finch_panic_index(ptr @.str.5268, i64 4918, i64 0, i64 %t597) - unreachable -inrange8241: - %t599 = extractvalue { ptr, i64, i64 } %t596, 0 - %t600 = getelementptr inbounds %S.ast.Node, ptr %t599, i64 0 - %t601 = load %S.ast.Node, ptr %t600 - %t602 = call %S.gen.Val @finch.gen.strArg(ptr %t594, %S.ast.Node %t601, { ptr, i64, i64 } { ptr @.str.5269, i64 13, i64 0 }) - store %S.gen.Val %t602, ptr %a603 - %t604 = load ptr, ptr %a1 - %t605 = load %S.gen.Val, ptr %a603 - %t606 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t604, %S.gen.Val %t605) - store { ptr, i64, i64 } %t606, ptr %a607 - %t608 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t608, ptr %a609 - store { ptr, i64, i64 } { ptr @.str.5270, i64 11, i64 0 }, ptr %a610 - %t611 = call i32 @finch_str_eq(ptr %a609, ptr %a610) - %t612 = icmp ne i32 %t611, 0 - br i1 %t612, label %then8242, label %endif8244 -then8242: - %t613 = load ptr, ptr %a1 - %t614 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } { ptr @.str.5271, i64 32, i64 0 }, ptr %a616 - store { ptr, i64, i64 } %t614, ptr %a617 - call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617) - %t618 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t618, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5272, i64 1, i64 0 }, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t618, ptr %a622 - call void @finch_str_drop(ptr %a622) - %t623 = load { ptr, i64, i64 }, ptr %a619 - %t624 = call { ptr, i64, i64 } @finch.gen.op(ptr %t613, { ptr, i64, i64 } %t623) - store { ptr, i64, i64 } %t623, ptr %a625 - call void @finch_str_drop(ptr %a625) - store { ptr, i64, i64 } %t624, ptr %a626 - %t627 = load ptr, ptr %a1 - %t628 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t627, %S.gen.Val %t628) - %t629 = load ptr, ptr %a1 - %t630 = load { ptr, i64, i64 }, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5273, i64 12, i64 0 }, ptr %a632 - store { ptr, i64, i64 } %t630, ptr %a633 - call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a631 - store { ptr, i64, i64 } %t634, ptr %a636 - store { ptr, i64, i64 } { ptr @.str.5274, i64 3, i64 0 }, ptr %a637 - call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = call { ptr, i64, i64 } @finch.gen.op(ptr %t629, { ptr, i64, i64 } %t639) - store { ptr, i64, i64 } %t639, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t640, 0 - %t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5275, i64 4, i64 0 }) - %t644 = insertvalue %S.gen.Val %t642, %S.ast.Type %t643, 1 - call void @finch_str_drop(ptr %a626) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t644 -endif8244: - %t645 = load ptr, ptr %a1 - %t646 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t645) - store { ptr, i64, i64 } %t646, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic8245, label %ok8246 -panic8245: - call void @finch_panic(ptr @.str.5276, i64 4926, ptr @.str.5277) - unreachable -ok8246: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 41 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = load %S.ast.Node, ptr %a2 - %t653 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t652) - store { ptr, i64, i64 } %t651, ptr %a654 - store { ptr, i64, i64 } %t653, ptr %a655 - %t656 = call i32 @finch_str_eq(ptr %a654, ptr %a655) - %t657 = icmp ne i32 %t656, 0 - store { ptr, i64, i64 } %t653, ptr %a658 - call void @finch_str_drop(ptr %a658) - br i1 %t657, label %then8247, label %endif8249 -then8247: - %t659 = load ptr, ptr %a1 - %t660 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t659, { ptr, i64, i64 } { ptr @.str.5278, i64 17, i64 0 }) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a647 - call void @finch.gen.store(ptr %t662, { ptr, i64, i64 } { ptr @.str.5279, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5280, i64 15, i64 0 }, { ptr, i64, i64 } %t663) - %t664 = load ptr, ptr %a1 - %t665 = load { ptr, i64, i64 }, ptr %a661 - call void @finch.gen.store(ptr %t664, { ptr, i64, i64 } { ptr @.str.5281, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5282, i64 15, i64 0 }, { ptr, i64, i64 } %t665) - %t666 = load ptr, ptr %a1 - %t667 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5283, i64 34, i64 0 }, ptr %a669 - store { ptr, i64, i64 } %t667, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a668 - store { ptr, i64, i64 } %t671, ptr %a673 - store { ptr, i64, i64 } { ptr @.str.5284, i64 6, i64 0 }, ptr %a674 - call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) - store { ptr, i64, i64 } %t671, ptr %a675 - call void @finch_str_drop(ptr %a675) - %t676 = load { ptr, i64, i64 }, ptr %a672 - %t677 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t676, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t676, ptr %a681 - call void @finch_str_drop(ptr %a681) - %t682 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } %t682, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.5285, i64 6, i64 0 }, ptr %a685 - call void @finch_str_concat(ptr %a683, ptr %a684, ptr %a685) - store { ptr, i64, i64 } %t682, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load { ptr, i64, i64 }, ptr %a683 - %t688 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t687, ptr %a690 - store { ptr, i64, i64 } %t688, ptr %a691 - call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) - store { ptr, i64, i64 } %t687, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load { ptr, i64, i64 }, ptr %a689 - store { ptr, i64, i64 } %t693, ptr %a695 - store { ptr, i64, i64 } { ptr @.str.5286, i64 1, i64 0 }, ptr %a696 - call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) - store { ptr, i64, i64 } %t693, ptr %a697 - call void @finch_str_drop(ptr %a697) - %t698 = load { ptr, i64, i64 }, ptr %a694 - %t699 = call { ptr, i64, i64 } @finch.gen.op(ptr %t666, { ptr, i64, i64 } %t698) - store { ptr, i64, i64 } %t698, ptr %a700 - call void @finch_str_drop(ptr %a700) - store { ptr, i64, i64 } %t699, ptr %a701 - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a701 - store { ptr, i64, i64 } { ptr @.str.5287, i64 12, i64 0 }, ptr %a705 - store { ptr, i64, i64 } %t703, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - %t707 = load { ptr, i64, i64 }, ptr %a704 - store { ptr, i64, i64 } %t707, ptr %a709 - store { ptr, i64, i64 } { ptr @.str.5288, i64 3, i64 0 }, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - store { ptr, i64, i64 } %t707, ptr %a711 - call void @finch_str_drop(ptr %a711) - %t712 = load { ptr, i64, i64 }, ptr %a708 - %t713 = call { ptr, i64, i64 } @finch.gen.op(ptr %t702, { ptr, i64, i64 } %t712) - store { ptr, i64, i64 } %t712, ptr %a714 - call void @finch_str_drop(ptr %a714) - %t715 = load ptr, ptr %a1 - %t716 = icmp eq ptr %t715, null - br i1 %t716, label %panic8250, label %ok8251 -panic8250: - call void @finch_panic(ptr @.str.5289, i64 4931, ptr @.str.5290) - unreachable -ok8251: - %t717 = getelementptr inbounds %S.gen.Gen, ptr %t715, i32 0, i32 42 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t713, ptr %t717 - store { ptr, i64, i64 } %t718, ptr %a719 - call void @finch_str_drop(ptr %a719) - %t720 = load ptr, ptr %a1 - %t721 = load { ptr, i64, i64 }, ptr %a661 - %t722 = call { ptr, i64, i64 } @finch.gen.load(ptr %t720, { ptr, i64, i64 } { ptr @.str.5291, i64 17, i64 0 }, { ptr, i64, i64 } %t721) - %t723 = load ptr, ptr %a1 - %t724 = icmp eq ptr %t723, null - br i1 %t724, label %panic8252, label %ok8253 -panic8252: - call void @finch_panic(ptr @.str.5292, i64 4932, ptr @.str.5293) - unreachable -ok8253: - %t725 = getelementptr inbounds %S.gen.Gen, ptr %t723, i32 0, i32 43 - %t726 = load { ptr, i64, i64 }, ptr %t725 - store { ptr, i64, i64 } %t722, ptr %t725 - store { ptr, i64, i64 } %t726, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load ptr, ptr %a1 - %t729 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t728, %S.gen.Val %t729) - %t730 = load ptr, ptr %a1 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = call { ptr, i64, i64 } @finch.gen.load(ptr %t730, { ptr, i64, i64 } { ptr @.str.5294, i64 17, i64 0 }, { ptr, i64, i64 } %t731) - %t733 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t732, 0 - %t734 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5295, i64 3, i64 0 }) - %t735 = insertvalue %S.gen.Val %t733, %S.ast.Type %t734, 1 - %t736 = insertvalue %S.gen.Val %t735, i1 true, 2 - call void @finch_str_drop(ptr %a701) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t736 -endif8249: - %t737 = load ptr, ptr %a1 - %t738 = load ptr, ptr %a1 - %t739 = icmp eq ptr %t738, null - br i1 %t739, label %panic8254, label %ok8255 -panic8254: - call void @finch_panic(ptr @.str.5296, i64 4936, ptr @.str.5297) - unreachable -ok8255: - %t740 = getelementptr inbounds %S.gen.Gen, ptr %t738, i32 0, i32 1 - %t741 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t742 = load i64, ptr %t741 - %t743 = load { ptr, i64, i64 }, ptr %t740 - %t744 = extractvalue { ptr, i64, i64 } %t743, 1 - %t745 = icmp uge i64 %t742, %t744 - br i1 %t745, label %range8256, label %inrange8257 -range8256: - call void @finch_panic_index(ptr @.str.5298, i64 4936, i64 %t742, i64 %t744) - unreachable -inrange8257: - %t746 = extractvalue { ptr, i64, i64 } %t743, 0 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i64 %t742 - %t748 = load { ptr, i64, i64 }, ptr %t747 - %t749 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t737, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t749, ptr %a750 - %t751 = load ptr, ptr %a1 - %t752 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5299, i64 31, i64 0 }, ptr %a754 - store { ptr, i64, i64 } %t752, ptr %a755 - call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) - %t756 = load { ptr, i64, i64 }, ptr %a753 - store { ptr, i64, i64 } %t756, ptr %a758 - store { ptr, i64, i64 } { ptr @.str.5300, i64 6, i64 0 }, ptr %a759 - call void @finch_str_concat(ptr %a757, ptr %a758, ptr %a759) - store { ptr, i64, i64 } %t756, ptr %a760 - call void @finch_str_drop(ptr %a760) - %t761 = load { ptr, i64, i64 }, ptr %a757 - %t762 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t761, ptr %a764 - store { ptr, i64, i64 } %t762, ptr %a765 - call void @finch_str_concat(ptr %a763, ptr %a764, ptr %a765) - store { ptr, i64, i64 } %t761, ptr %a766 - call void @finch_str_drop(ptr %a766) - %t767 = load { ptr, i64, i64 }, ptr %a763 - store { ptr, i64, i64 } %t767, ptr %a769 - store { ptr, i64, i64 } { ptr @.str.5301, i64 6, i64 0 }, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - %t773 = load { ptr, i64, i64 }, ptr %a750 - store { ptr, i64, i64 } %t772, ptr %a775 - store { ptr, i64, i64 } %t773, ptr %a776 - call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776) - store { ptr, i64, i64 } %t772, ptr %a777 - call void @finch_str_drop(ptr %a777) - %t778 = load { ptr, i64, i64 }, ptr %a774 - store { ptr, i64, i64 } %t778, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.5302, i64 6, i64 0 }, ptr %a781 - call void @finch_str_concat(ptr %a779, ptr %a780, ptr %a781) - store { ptr, i64, i64 } %t778, ptr %a782 - call void @finch_str_drop(ptr %a782) - %t783 = load { ptr, i64, i64 }, ptr %a779 - %t784 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t785 = load i64, ptr %t784 - call void @finch_str_from_int(ptr %a786, i64 %t785) - %t787 = load { ptr, i64, i64 }, ptr %a786 - store { ptr, i64, i64 } %t783, ptr %a789 - store { ptr, i64, i64 } %t787, ptr %a790 - call void @finch_str_concat(ptr %a788, ptr %a789, ptr %a790) - store { ptr, i64, i64 } %t783, ptr %a791 - call void @finch_str_drop(ptr %a791) - store { ptr, i64, i64 } %t787, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a788 - store { ptr, i64, i64 } %t793, ptr %a795 - store { ptr, i64, i64 } { ptr @.str.5303, i64 1, i64 0 }, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t793, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - call void @finch.gen.emit(ptr %t751, { ptr, i64, i64 } %t798) - store { ptr, i64, i64 } %t798, ptr %a799 - call void @finch_str_drop(ptr %a799) - %t800 = load ptr, ptr %a1 - %t801 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t800, %S.gen.Val %t801) - %t802 = load ptr, ptr %a1 - %t803 = load { ptr, i64, i64 }, ptr %a647 - %t804 = call { ptr, i64, i64 } @finch.gen.load(ptr %t802, { ptr, i64, i64 } { ptr @.str.5304, i64 17, i64 0 }, { ptr, i64, i64 } %t803) - %t805 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t804, 0 - %t806 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5305, i64 3, i64 0 }) - %t807 = insertvalue %S.gen.Val %t805, %S.ast.Type %t806, 1 - %t808 = insertvalue %S.gen.Val %t807, i1 true, 2 - call void @finch_str_drop(ptr %a750) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t808 -endif8239: - %t809 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t809, ptr %a810 - store { ptr, i64, i64 } { ptr @.str.5306, i64 10, i64 0 }, ptr %a811 - %t812 = call i32 @finch_str_eq(ptr %a810, ptr %a811) - %t813 = icmp ne i32 %t812, 0 - br i1 %t813, label %then8258, label %endif8260 -then8258: - %t814 = load ptr, ptr %a1 - %t815 = load %S.ast.Node, ptr %a2 - %t816 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t814, %S.ast.Node %t815, i64 0, i64 2, { ptr, i64, i64 } %t816) - %t817 = load ptr, ptr %a1 - %t818 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t819 = load { ptr, i64, i64 }, ptr %t818 - %t820 = extractvalue { ptr, i64, i64 } %t819, 1 - %t821 = icmp uge i64 0, %t820 - br i1 %t821, label %range8261, label %inrange8262 -range8261: - call void @finch_panic_index(ptr @.str.5307, i64 4943, i64 0, i64 %t820) - unreachable -inrange8262: - %t822 = extractvalue { ptr, i64, i64 } %t819, 0 - %t823 = getelementptr inbounds %S.ast.Node, ptr %t822, i64 0 - %t824 = load %S.ast.Node, ptr %t823 - %t825 = call %S.gen.Val @finch.gen.strArg(ptr %t817, %S.ast.Node %t824, { ptr, i64, i64 } { ptr @.str.5308, i64 13, i64 0 }) - store %S.gen.Val %t825, ptr %a826 - %t827 = load ptr, ptr %a1 - %t828 = icmp eq ptr %t827, null - br i1 %t828, label %panic8263, label %ok8264 -panic8263: - call void @finch_panic(ptr @.str.5309, i64 4944, ptr @.str.5310) - unreachable -ok8264: - %t829 = getelementptr inbounds %S.gen.Gen, ptr %t827, i32 0, i32 11 - %t830 = getelementptr inbounds { ptr, i64, i64 }, ptr %t829, i32 0, i32 1 - %t831 = load i64, ptr %t830 - store i64 %t831, ptr %a832 - %t833 = load ptr, ptr %a1 - %t834 = load %S.gen.Val, ptr %a826 - call void @finch.gen.hold(ptr %t833, %S.gen.Val %t834) - %t835 = load ptr, ptr %a1 - %t836 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t837 = load { ptr, i64, i64 }, ptr %t836 - %t838 = extractvalue { ptr, i64, i64 } %t837, 1 - %t839 = icmp uge i64 1, %t838 - br i1 %t839, label %range8265, label %inrange8266 -range8265: - call void @finch_panic_index(ptr @.str.5311, i64 4946, i64 1, i64 %t838) - unreachable -inrange8266: - %t840 = extractvalue { ptr, i64, i64 } %t837, 0 - %t841 = getelementptr inbounds %S.ast.Node, ptr %t840, i64 1 - %t842 = load %S.ast.Node, ptr %t841 - %t843 = call %S.gen.Val @finch.gen.strArg(ptr %t835, %S.ast.Node %t842, { ptr, i64, i64 } { ptr @.str.5312, i64 8, i64 0 }) - store %S.gen.Val %t843, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load i64, ptr %a832 - call void @finch.gen.heldEnd(ptr %t845, i64 %t846) - %t847 = load ptr, ptr %a1 - %t848 = load %S.gen.Val, ptr %a826 - %t849 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t847, %S.gen.Val %t848) - store { ptr, i64, i64 } %t849, ptr %a850 - %t851 = load ptr, ptr %a1 - %t852 = load %S.gen.Val, ptr %a844 - %t853 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t851, %S.gen.Val %t852) - store { ptr, i64, i64 } %t853, ptr %a854 - %t855 = load ptr, ptr %a1 - %t856 = icmp eq ptr %t855, null - br i1 %t856, label %panic8267, label %ok8268 -panic8267: - call void @finch_panic(ptr @.str.5313, i64 4950, ptr @.str.5314) - unreachable -ok8268: - %t857 = getelementptr inbounds %S.gen.Gen, ptr %t855, i32 0, i32 41 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = load %S.ast.Node, ptr %a2 - %t860 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t859) - store { ptr, i64, i64 } %t858, ptr %a861 - store { ptr, i64, i64 } %t860, ptr %a862 - %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) - %t864 = icmp ne i32 %t863, 0 - store { ptr, i64, i64 } %t860, ptr %a865 - call void @finch_str_drop(ptr %a865) - br i1 %t864, label %then8269, label %endif8271 -then8269: - %t866 = load ptr, ptr %a1 - %t867 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t866, { ptr, i64, i64 } { ptr @.str.5315, i64 17, i64 0 }) - store { ptr, i64, i64 } %t867, ptr %a868 - %t869 = load ptr, ptr %a1 - %t870 = load { ptr, i64, i64 }, ptr %a868 - call void @finch.gen.store(ptr %t869, { ptr, i64, i64 } { ptr @.str.5316, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5317, i64 15, i64 0 }, { ptr, i64, i64 } %t870) - %t871 = load ptr, ptr %a1 - %t872 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5318, i64 35, i64 0 }, ptr %a874 - store { ptr, i64, i64 } %t872, ptr %a875 - call void @finch_str_concat(ptr %a873, ptr %a874, ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a873 - store { ptr, i64, i64 } %t876, ptr %a878 - store { ptr, i64, i64 } { ptr @.str.5319, i64 6, i64 0 }, ptr %a879 - call void @finch_str_concat(ptr %a877, ptr %a878, ptr %a879) - store { ptr, i64, i64 } %t876, ptr %a880 - call void @finch_str_drop(ptr %a880) - %t881 = load { ptr, i64, i64 }, ptr %a877 - %t882 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t881, ptr %a884 - store { ptr, i64, i64 } %t882, ptr %a885 - call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) - store { ptr, i64, i64 } %t881, ptr %a886 - call void @finch_str_drop(ptr %a886) - %t887 = load { ptr, i64, i64 }, ptr %a883 - store { ptr, i64, i64 } %t887, ptr %a889 - store { ptr, i64, i64 } { ptr @.str.5320, i64 6, i64 0 }, ptr %a890 - call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890) - store { ptr, i64, i64 } %t887, ptr %a891 - call void @finch_str_drop(ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a888 - %t893 = load { ptr, i64, i64 }, ptr %a868 - store { ptr, i64, i64 } %t892, ptr %a895 - store { ptr, i64, i64 } %t893, ptr %a896 - call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) - store { ptr, i64, i64 } %t892, ptr %a897 - call void @finch_str_drop(ptr %a897) - %t898 = load { ptr, i64, i64 }, ptr %a894 - store { ptr, i64, i64 } %t898, ptr %a900 - store { ptr, i64, i64 } { ptr @.str.5321, i64 1, i64 0 }, ptr %a901 - call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) - store { ptr, i64, i64 } %t898, ptr %a902 - call void @finch_str_drop(ptr %a902) - %t903 = load { ptr, i64, i64 }, ptr %a899 - %t904 = call { ptr, i64, i64 } @finch.gen.op(ptr %t871, { ptr, i64, i64 } %t903) - store { ptr, i64, i64 } %t903, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t904, ptr %a906 - %t907 = load ptr, ptr %a1 - %t908 = load { ptr, i64, i64 }, ptr %a906 - store { ptr, i64, i64 } { ptr @.str.5322, i64 12, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t908, ptr %a911 - call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911) - %t912 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } %t912, ptr %a914 - store { ptr, i64, i64 } { ptr @.str.5323, i64 3, i64 0 }, ptr %a915 - call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) - store { ptr, i64, i64 } %t912, ptr %a916 - call void @finch_str_drop(ptr %a916) - %t917 = load { ptr, i64, i64 }, ptr %a913 - %t918 = call { ptr, i64, i64 } @finch.gen.op(ptr %t907, { ptr, i64, i64 } %t917) - store { ptr, i64, i64 } %t917, ptr %a919 - call void @finch_str_drop(ptr %a919) - %t920 = load ptr, ptr %a1 - %t921 = icmp eq ptr %t920, null - br i1 %t921, label %panic8272, label %ok8273 -panic8272: - call void @finch_panic(ptr @.str.5324, i64 4954, ptr @.str.5325) - unreachable -ok8273: - %t922 = getelementptr inbounds %S.gen.Gen, ptr %t920, i32 0, i32 42 - %t923 = load { ptr, i64, i64 }, ptr %t922 - store { ptr, i64, i64 } %t918, ptr %t922 - store { ptr, i64, i64 } %t923, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load ptr, ptr %a1 - %t926 = load { ptr, i64, i64 }, ptr %a868 - %t927 = call { ptr, i64, i64 } @finch.gen.load(ptr %t925, { ptr, i64, i64 } { ptr @.str.5326, i64 17, i64 0 }, { ptr, i64, i64 } %t926) - %t928 = load ptr, ptr %a1 - %t929 = icmp eq ptr %t928, null - br i1 %t929, label %panic8274, label %ok8275 -panic8274: - call void @finch_panic(ptr @.str.5327, i64 4955, ptr @.str.5328) - unreachable -ok8275: - %t930 = getelementptr inbounds %S.gen.Gen, ptr %t928, i32 0, i32 43 - %t931 = load { ptr, i64, i64 }, ptr %t930 - store { ptr, i64, i64 } %t927, ptr %t930 - store { ptr, i64, i64 } %t931, ptr %a932 - call void @finch_str_drop(ptr %a932) - %t933 = load ptr, ptr %a1 - %t934 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t933, %S.gen.Val %t934) - %t935 = load ptr, ptr %a1 - %t936 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t935, %S.gen.Val %t936) - %t937 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5329, i64 4, i64 0 }) - %t938 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t937, 1 - call void @finch_str_drop(ptr %a906) - call void @finch_str_drop(ptr %a868) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t938 -endif8271: - %t939 = load ptr, ptr %a1 - %t940 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5330, i64 31, i64 0 }, ptr %a942 - store { ptr, i64, i64 } %t940, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a941 - store { ptr, i64, i64 } %t944, ptr %a946 - store { ptr, i64, i64 } { ptr @.str.5331, i64 6, i64 0 }, ptr %a947 - call void @finch_str_concat(ptr %a945, ptr %a946, ptr %a947) - store { ptr, i64, i64 } %t944, ptr %a948 - call void @finch_str_drop(ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a945 - %t950 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t949, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t949, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - store { ptr, i64, i64 } %t955, ptr %a957 - store { ptr, i64, i64 } { ptr @.str.5332, i64 1, i64 0 }, ptr %a958 - call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) - store { ptr, i64, i64 } %t955, ptr %a959 - call void @finch_str_drop(ptr %a959) - %t960 = load { ptr, i64, i64 }, ptr %a956 - %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t939, { ptr, i64, i64 } %t960) - store { ptr, i64, i64 } %t960, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t961, ptr %a963 - %t964 = load ptr, ptr %a1 - %t965 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t964, %S.gen.Val %t965) - %t966 = load ptr, ptr %a1 - %t967 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t966, %S.gen.Val %t967) - %t968 = load ptr, ptr %a1 - %t969 = load { ptr, i64, i64 }, ptr %a963 - store { ptr, i64, i64 } { ptr @.str.5333, i64 12, i64 0 }, ptr %a971 - store { ptr, i64, i64 } %t969, ptr %a972 - call void @finch_str_concat(ptr %a970, ptr %a971, ptr %a972) - %t973 = load { ptr, i64, i64 }, ptr %a970 - store { ptr, i64, i64 } %t973, ptr %a975 - store { ptr, i64, i64 } { ptr @.str.5334, i64 3, i64 0 }, ptr %a976 - call void @finch_str_concat(ptr %a974, ptr %a975, ptr %a976) - store { ptr, i64, i64 } %t973, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a974 - %t979 = call { ptr, i64, i64 } @finch.gen.op(ptr %t968, { ptr, i64, i64 } %t978) - store { ptr, i64, i64 } %t978, ptr %a980 - call void @finch_str_drop(ptr %a980) - %t981 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t979, 0 - %t982 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5335, i64 4, i64 0 }) - %t983 = insertvalue %S.gen.Val %t981, %S.ast.Type %t982, 1 - call void @finch_str_drop(ptr %a963) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t983 -endif8260: - %t984 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t984, ptr %a985 - store { ptr, i64, i64 } { ptr @.str.5336, i64 11, i64 0 }, ptr %a986 - %t987 = call i32 @finch_str_eq(ptr %a985, ptr %a986) - %t988 = icmp ne i32 %t987, 0 - br i1 %t988, label %then8276, label %endif8278 -then8276: - %t989 = load ptr, ptr %a1 - %t990 = load %S.ast.Node, ptr %a2 - %t991 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t989, %S.ast.Node %t990, i64 0, i64 1, { ptr, i64, i64 } %t991) - %t992 = load ptr, ptr %a1 - %t993 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = extractvalue { ptr, i64, i64 } %t994, 1 - %t996 = icmp uge i64 0, %t995 - br i1 %t996, label %range8279, label %inrange8280 -range8279: - call void @finch_panic_index(ptr @.str.5337, i64 4967, i64 0, i64 %t995) - unreachable -inrange8280: - %t997 = extractvalue { ptr, i64, i64 } %t994, 0 - %t998 = getelementptr inbounds %S.ast.Node, ptr %t997, i64 0 - %t999 = load %S.ast.Node, ptr %t998 - %t1000 = call %S.gen.Val @finch.gen.strArg(ptr %t992, %S.ast.Node %t999, { ptr, i64, i64 } { ptr @.str.5338, i64 13, i64 0 }) - store %S.gen.Val %t1000, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1002) - store { ptr, i64, i64 } %t1003, ptr %a1004 - %t1005 = load ptr, ptr %a1 - %t1006 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5339, i64 30, i64 0 }, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - %t1010 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1010, ptr %a1012 - store { ptr, i64, i64 } { ptr @.str.5340, i64 6, i64 0 }, ptr %a1013 - call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013) - store { ptr, i64, i64 } %t1010, ptr %a1014 - call void @finch_str_drop(ptr %a1014) - %t1015 = load { ptr, i64, i64 }, ptr %a1011 - %t1016 = load ptr, ptr %a1 - %t1017 = load %S.gen.Val, ptr %a1001 - %t1018 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1016, %S.gen.Val %t1017) - store { ptr, i64, i64 } %t1015, ptr %a1020 - store { ptr, i64, i64 } %t1018, ptr %a1021 - call void @finch_str_concat(ptr %a1019, ptr %a1020, ptr %a1021) - store { ptr, i64, i64 } %t1015, ptr %a1022 - call void @finch_str_drop(ptr %a1022) - store { ptr, i64, i64 } %t1018, ptr %a1023 - call void @finch_str_drop(ptr %a1023) - %t1024 = load { ptr, i64, i64 }, ptr %a1019 - store { ptr, i64, i64 } %t1024, ptr %a1026 - store { ptr, i64, i64 } { ptr @.str.5341, i64 1, i64 0 }, ptr %a1027 - call void @finch_str_concat(ptr %a1025, ptr %a1026, ptr %a1027) - store { ptr, i64, i64 } %t1024, ptr %a1028 - call void @finch_str_drop(ptr %a1028) - %t1029 = load { ptr, i64, i64 }, ptr %a1025 - call void @finch.gen.emit(ptr %t1005, { ptr, i64, i64 } %t1029) - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch_str_drop(ptr %a1030) - %t1031 = load ptr, ptr %a1 - %t1032 = icmp eq ptr %t1031, null - br i1 %t1032, label %panic8281, label %ok8282 -panic8281: - call void @finch_panic(ptr @.str.5342, i64 4970, ptr @.str.5343) - unreachable -ok8282: - %t1033 = getelementptr inbounds %S.gen.Gen, ptr %t1031, i32 0, i32 41 - %t1034 = load { ptr, i64, i64 }, ptr %t1033 - %t1035 = load %S.ast.Node, ptr %a2 - %t1036 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t1035) - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1036, ptr %a1038 - %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) - %t1040 = icmp ne i32 %t1039, 0 - store { ptr, i64, i64 } %t1036, ptr %a1041 - call void @finch_str_drop(ptr %a1041) - br i1 %t1040, label %then8283, label %endif8285 -then8283: - %t1042 = load ptr, ptr %a1 - %t1043 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1042, { ptr, i64, i64 } { ptr @.str.5344, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1043, ptr %a1044 - %t1045 = load ptr, ptr %a1 - %t1046 = load { ptr, i64, i64 }, ptr %a1044 - call void @finch.gen.store(ptr %t1045, { ptr, i64, i64 } { ptr @.str.5345, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5346, i64 15, i64 0 }, { ptr, i64, i64 } %t1046) - %t1047 = load ptr, ptr %a1 - %t1048 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5347, i64 36, i64 0 }, ptr %a1050 - store { ptr, i64, i64 } %t1048, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1049 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5348, i64 6, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = load { ptr, i64, i64 }, ptr %a1044 - store { ptr, i64, i64 } %t1057, ptr %a1060 - store { ptr, i64, i64 } %t1058, ptr %a1061 - call void @finch_str_concat(ptr %a1059, ptr %a1060, ptr %a1061) - store { ptr, i64, i64 } %t1057, ptr %a1062 - call void @finch_str_drop(ptr %a1062) - %t1063 = load { ptr, i64, i64 }, ptr %a1059 - store { ptr, i64, i64 } %t1063, ptr %a1065 - store { ptr, i64, i64 } { ptr @.str.5349, i64 1, i64 0 }, ptr %a1066 - call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) - store { ptr, i64, i64 } %t1063, ptr %a1067 - call void @finch_str_drop(ptr %a1067) - %t1068 = load { ptr, i64, i64 }, ptr %a1064 - %t1069 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1068) - store { ptr, i64, i64 } %t1068, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - store { ptr, i64, i64 } %t1069, ptr %a1071 - %t1072 = load ptr, ptr %a1 - %t1073 = load { ptr, i64, i64 }, ptr %a1071 - store { ptr, i64, i64 } { ptr @.str.5350, i64 12, i64 0 }, ptr %a1075 - store { ptr, i64, i64 } %t1073, ptr %a1076 - call void @finch_str_concat(ptr %a1074, ptr %a1075, ptr %a1076) - %t1077 = load { ptr, i64, i64 }, ptr %a1074 - store { ptr, i64, i64 } %t1077, ptr %a1079 - store { ptr, i64, i64 } { ptr @.str.5351, i64 3, i64 0 }, ptr %a1080 - call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) - store { ptr, i64, i64 } %t1077, ptr %a1081 - call void @finch_str_drop(ptr %a1081) - %t1082 = load { ptr, i64, i64 }, ptr %a1078 - %t1083 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1072, { ptr, i64, i64 } %t1082) - store { ptr, i64, i64 } %t1082, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - %t1085 = load ptr, ptr %a1 - %t1086 = icmp eq ptr %t1085, null - br i1 %t1086, label %panic8286, label %ok8287 -panic8286: - call void @finch_panic(ptr @.str.5352, i64 4974, ptr @.str.5353) - unreachable -ok8287: - %t1087 = getelementptr inbounds %S.gen.Gen, ptr %t1085, i32 0, i32 42 - %t1088 = load { ptr, i64, i64 }, ptr %t1087 - store { ptr, i64, i64 } %t1083, ptr %t1087 - store { ptr, i64, i64 } %t1088, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load ptr, ptr %a1 - %t1091 = load { ptr, i64, i64 }, ptr %a1044 - %t1092 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1090, { ptr, i64, i64 } { ptr @.str.5354, i64 17, i64 0 }, { ptr, i64, i64 } %t1091) - %t1093 = load ptr, ptr %a1 - %t1094 = icmp eq ptr %t1093, null - br i1 %t1094, label %panic8288, label %ok8289 -panic8288: - call void @finch_panic(ptr @.str.5355, i64 4975, ptr @.str.5356) - unreachable -ok8289: - %t1095 = getelementptr inbounds %S.gen.Gen, ptr %t1093, i32 0, i32 43 - %t1096 = load { ptr, i64, i64 }, ptr %t1095 - store { ptr, i64, i64 } %t1092, ptr %t1095 - store { ptr, i64, i64 } %t1096, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load ptr, ptr %a1 - %t1099 = load { ptr, i64, i64 }, ptr %a1004 - %t1100 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5357, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1098, { ptr, i64, i64 } %t1099, %S.ast.Type %t1100) - store %S.ast.Type %t1100, ptr %a1101 - call void @finch.drop.S_ast_Type(ptr %a1101) - %t1102 = load ptr, ptr %a1 - %t1103 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1102, %S.gen.Val %t1103) - %t1104 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5358, i64 4, i64 0 }) - %t1105 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1104, 1 - call void @finch_str_drop(ptr %a1071) - call void @finch_str_drop(ptr %a1044) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1105 -endif8285: - %t1106 = load ptr, ptr %a1 - %t1107 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5359, i64 32, i64 0 }, ptr %a1109 - store { ptr, i64, i64 } %t1107, ptr %a1110 - call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110) - %t1111 = load { ptr, i64, i64 }, ptr %a1108 - store { ptr, i64, i64 } %t1111, ptr %a1113 - store { ptr, i64, i64 } { ptr @.str.5360, i64 1, i64 0 }, ptr %a1114 - call void @finch_str_concat(ptr %a1112, ptr %a1113, ptr %a1114) - store { ptr, i64, i64 } %t1111, ptr %a1115 - call void @finch_str_drop(ptr %a1115) - %t1116 = load { ptr, i64, i64 }, ptr %a1112 - %t1117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1106, { ptr, i64, i64 } %t1116) - store { ptr, i64, i64 } %t1116, ptr %a1118 - call void @finch_str_drop(ptr %a1118) - store { ptr, i64, i64 } %t1117, ptr %a1119 - %t1120 = load ptr, ptr %a1 - %t1121 = load { ptr, i64, i64 }, ptr %a1004 - %t1122 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5361, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1120, { ptr, i64, i64 } %t1121, %S.ast.Type %t1122) - store %S.ast.Type %t1122, ptr %a1123 - call void @finch.drop.S_ast_Type(ptr %a1123) - %t1124 = load ptr, ptr %a1 - %t1125 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1124, %S.gen.Val %t1125) - %t1126 = load ptr, ptr %a1 - %t1127 = load { ptr, i64, i64 }, ptr %a1119 - store { ptr, i64, i64 } { ptr @.str.5362, i64 12, i64 0 }, ptr %a1129 - store { ptr, i64, i64 } %t1127, ptr %a1130 - call void @finch_str_concat(ptr %a1128, ptr %a1129, ptr %a1130) - %t1131 = load { ptr, i64, i64 }, ptr %a1128 - store { ptr, i64, i64 } %t1131, ptr %a1133 - store { ptr, i64, i64 } { ptr @.str.5363, i64 3, i64 0 }, ptr %a1134 - call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134) - store { ptr, i64, i64 } %t1131, ptr %a1135 - call void @finch_str_drop(ptr %a1135) - %t1136 = load { ptr, i64, i64 }, ptr %a1132 - %t1137 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1136) - store { ptr, i64, i64 } %t1136, ptr %a1138 - call void @finch_str_drop(ptr %a1138) - %t1139 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1137, 0 - %t1140 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5364, i64 4, i64 0 }) - %t1141 = insertvalue %S.gen.Val %t1139, %S.ast.Type %t1140, 1 - call void @finch_str_drop(ptr %a1119) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1141 -endif8278: - %t1142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1142, ptr %a1143 - store { ptr, i64, i64 } { ptr @.str.5365, i64 5, i64 0 }, ptr %a1144 - %t1145 = call i32 @finch_str_eq(ptr %a1143, ptr %a1144) - %t1146 = icmp ne i32 %t1145, 0 - br i1 %t1146, label %then8290, label %endif8292 -then8290: - %t1147 = load ptr, ptr %a1 - %t1148 = load %S.ast.Node, ptr %a2 - %t1149 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1147, %S.ast.Node %t1148, i64 0, i64 1, { ptr, i64, i64 } %t1149) - %t1150 = load ptr, ptr %a1 - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 0, %t1153 - br i1 %t1154, label %range8293, label %inrange8294 -range8293: - call void @finch_panic_index(ptr @.str.5366, i64 4987, i64 0, i64 %t1153) - unreachable -inrange8294: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 0 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.strArg(ptr %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5367, i64 11, i64 0 }) - store %S.gen.Val %t1158, ptr %a1159 - %t1160 = load ptr, ptr %a1 - %t1161 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1160) - store { ptr, i64, i64 } %t1161, ptr %a1162 - %t1163 = load ptr, ptr %a1 - %t1164 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5368, i64 30, i64 0 }, ptr %a1166 - store { ptr, i64, i64 } %t1164, ptr %a1167 - call void @finch_str_concat(ptr %a1165, ptr %a1166, ptr %a1167) - %t1168 = load { ptr, i64, i64 }, ptr %a1165 - store { ptr, i64, i64 } %t1168, ptr %a1170 - store { ptr, i64, i64 } { ptr @.str.5369, i64 6, i64 0 }, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1168, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - %t1174 = load ptr, ptr %a1 - %t1175 = load %S.gen.Val, ptr %a1159 - %t1176 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1174, %S.gen.Val %t1175) - store { ptr, i64, i64 } %t1173, ptr %a1178 - store { ptr, i64, i64 } %t1176, ptr %a1179 - call void @finch_str_concat(ptr %a1177, ptr %a1178, ptr %a1179) - store { ptr, i64, i64 } %t1173, ptr %a1180 - call void @finch_str_drop(ptr %a1180) - store { ptr, i64, i64 } %t1176, ptr %a1181 - call void @finch_str_drop(ptr %a1181) - %t1182 = load { ptr, i64, i64 }, ptr %a1177 - store { ptr, i64, i64 } %t1182, ptr %a1184 - store { ptr, i64, i64 } { ptr @.str.5370, i64 1, i64 0 }, ptr %a1185 - call void @finch_str_concat(ptr %a1183, ptr %a1184, ptr %a1185) - store { ptr, i64, i64 } %t1182, ptr %a1186 - call void @finch_str_drop(ptr %a1186) - %t1187 = load { ptr, i64, i64 }, ptr %a1183 - call void @finch.gen.emit(ptr %t1163, { ptr, i64, i64 } %t1187) - store { ptr, i64, i64 } %t1187, ptr %a1188 - call void @finch_str_drop(ptr %a1188) - %t1189 = load ptr, ptr %a1 - %t1190 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5371, i64 26, i64 0 }, ptr %a1192 - store { ptr, i64, i64 } %t1190, ptr %a1193 - call void @finch_str_concat(ptr %a1191, ptr %a1192, ptr %a1193) - %t1194 = load { ptr, i64, i64 }, ptr %a1191 - store { ptr, i64, i64 } %t1194, ptr %a1196 - store { ptr, i64, i64 } { ptr @.str.5372, i64 1, i64 0 }, ptr %a1197 - call void @finch_str_concat(ptr %a1195, ptr %a1196, ptr %a1197) - store { ptr, i64, i64 } %t1194, ptr %a1198 - call void @finch_str_drop(ptr %a1198) - %t1199 = load { ptr, i64, i64 }, ptr %a1195 - %t1200 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1189, { ptr, i64, i64 } %t1199) - store { ptr, i64, i64 } %t1199, ptr %a1201 - call void @finch_str_drop(ptr %a1201) - store { ptr, i64, i64 } %t1200, ptr %a1202 - %t1203 = load ptr, ptr %a1 - %t1204 = load { ptr, i64, i64 }, ptr %a1162 - %t1205 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5373, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1203, { ptr, i64, i64 } %t1204, %S.ast.Type %t1205) - store %S.ast.Type %t1205, ptr %a1206 - call void @finch.drop.S_ast_Type(ptr %a1206) - %t1207 = load ptr, ptr %a1 - %t1208 = load %S.gen.Val, ptr %a1159 - call void @finch.gen.release(ptr %t1207, %S.gen.Val %t1208) - %t1209 = load { ptr, i64, i64 }, ptr %a1202 - store { ptr, i64, i64 } %t1209, ptr %a1210 - call void @finch_str_copy(ptr %a1211, ptr %a1210) - %t1212 = load { ptr, i64, i64 }, ptr %a1211 - %t1213 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1212, 0 - %t1214 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5374, i64 3, i64 0 }) - %t1215 = insertvalue %S.gen.Val %t1213, %S.ast.Type %t1214, 1 - call void @finch_str_drop(ptr %a1202) - call void @finch_str_drop(ptr %a1162) - call void @finch.drop.S_gen_Val(ptr %a1159) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1215 -endif8292: - %t1216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1216, ptr %a1217 - store { ptr, i64, i64 } { ptr @.str.5375, i64 4, i64 0 }, ptr %a1218 - %t1219 = call i32 @finch_str_eq(ptr %a1217, ptr %a1218) - %t1220 = icmp ne i32 %t1219, 0 - br i1 %t1220, label %then8295, label %endif8297 -then8295: - %t1221 = load ptr, ptr %a1 - %t1222 = load %S.ast.Node, ptr %a2 - %t1223 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1221, %S.ast.Node %t1222, i64 0, i64 1, { ptr, i64, i64 } %t1223) - %t1224 = load ptr, ptr %a1 - %t1225 = load ptr, ptr %a1 - %t1226 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1227 = load { ptr, i64, i64 }, ptr %t1226 - %t1228 = extractvalue { ptr, i64, i64 } %t1227, 1 - %t1229 = icmp uge i64 0, %t1228 - br i1 %t1229, label %range8298, label %inrange8299 -range8298: - call void @finch_panic_index(ptr @.str.5376, i64 4997, i64 0, i64 %t1228) - unreachable -inrange8299: - %t1230 = extractvalue { ptr, i64, i64 } %t1227, 0 - %t1231 = getelementptr inbounds %S.ast.Node, ptr %t1230, i64 0 - %t1232 = load %S.ast.Node, ptr %t1231 - %t1233 = call %S.gen.Val @finch.gen.expr(ptr %t1225, %S.ast.Node %t1232) - %t1234 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5377, i64 3, i64 0 }) - %t1235 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1236 = load { ptr, i64, i64 }, ptr %t1235 - %t1237 = extractvalue { ptr, i64, i64 } %t1236, 1 - %t1238 = icmp uge i64 0, %t1237 - br i1 %t1238, label %range8300, label %inrange8301 -range8300: - call void @finch_panic_index(ptr @.str.5378, i64 4997, i64 0, i64 %t1237) - unreachable -inrange8301: - %t1239 = extractvalue { ptr, i64, i64 } %t1236, 0 - %t1240 = getelementptr inbounds %S.ast.Node, ptr %t1239, i64 0 - %t1241 = load %S.ast.Node, ptr %t1240 - %t1242 = call %S.gen.Val @finch.gen.coerce(ptr %t1224, %S.gen.Val %t1233, %S.ast.Type %t1234, %S.ast.Node %t1241, { ptr, i64, i64 } { ptr @.str.5379, i64 13, i64 0 }) - store %S.gen.Val %t1233, ptr %a1243 - call void @finch.drop.S_gen_Val(ptr %a1243) - store %S.ast.Type %t1234, ptr %a1244 - call void @finch.drop.S_ast_Type(ptr %a1244) - store %S.gen.Val %t1242, ptr %a1245 - %t1246 = load ptr, ptr %a1 - %t1247 = getelementptr inbounds %S.gen.Val, ptr %a1245, i32 0, i32 0 - %t1248 = load { ptr, i64, i64 }, ptr %t1247 - store { ptr, i64, i64 } { ptr @.str.5380, i64 10, i64 0 }, ptr %a1250 - store { ptr, i64, i64 } %t1248, ptr %a1251 - call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251) - %t1252 = load { ptr, i64, i64 }, ptr %a1249 - store { ptr, i64, i64 } %t1252, ptr %a1254 - store { ptr, i64, i64 } { ptr @.str.5381, i64 7, i64 0 }, ptr %a1255 - call void @finch_str_concat(ptr %a1253, ptr %a1254, ptr %a1255) - store { ptr, i64, i64 } %t1252, ptr %a1256 - call void @finch_str_drop(ptr %a1256) - %t1257 = load { ptr, i64, i64 }, ptr %a1253 - %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1246, { ptr, i64, i64 } %t1257) - store { ptr, i64, i64 } %t1257, ptr %a1259 - call void @finch_str_drop(ptr %a1259) - store { ptr, i64, i64 } %t1258, ptr %a1260 - %t1261 = load ptr, ptr %a1 - %t1262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1261, { ptr, i64, i64 } { ptr @.str.5382, i64 26, i64 0 }) - store { ptr, i64, i64 } %t1262, ptr %a1263 - %t1264 = load ptr, ptr %a1 - %t1265 = load { ptr, i64, i64 }, ptr %a1260 - store { ptr, i64, i64 } { ptr @.str.5383, i64 20, i64 0 }, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - %t1269 = load { ptr, i64, i64 }, ptr %a1266 - store { ptr, i64, i64 } %t1269, ptr %a1271 - store { ptr, i64, i64 } { ptr @.str.5384, i64 1, i64 0 }, ptr %a1272 - call void @finch_str_concat(ptr %a1270, ptr %a1271, ptr %a1272) - store { ptr, i64, i64 } %t1269, ptr %a1273 - call void @finch_str_drop(ptr %a1273) - %t1274 = load { ptr, i64, i64 }, ptr %a1270 - call void @finch.gen.emit(ptr %t1264, { ptr, i64, i64 } %t1274) - store { ptr, i64, i64 } %t1274, ptr %a1275 - call void @finch_str_drop(ptr %a1275) - %t1276 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5385, i64 4, i64 0 }) - %t1277 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1276, 1 - call void @finch_str_drop(ptr %a1263) - call void @finch_str_drop(ptr %a1260) - call void @finch.drop.S_gen_Val(ptr %a1245) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1277 -endif8297: - %t1278 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1278, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5386, i64 5, i64 0 }, ptr %a1280 - %t1281 = call i32 @finch_str_eq(ptr %a1279, ptr %a1280) - %t1282 = icmp ne i32 %t1281, 0 - br i1 %t1282, label %then8302, label %endif8304 -then8302: - %t1283 = load ptr, ptr %a1 - %t1284 = call %S.gen.Val @finch.gen.strConst(ptr %t1283, { ptr, i64, i64 } { ptr @.str.5387, i64 0, i64 0 }) - store %S.gen.Val %t1284, ptr %a1285 - %t1286 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1286, i32 0, i32 1 - %t1288 = load i64, ptr %t1287 - %t1289 = icmp sgt i64 %t1288, 0 - br i1 %t1289, label %then8305, label %endif8307 -then8305: - %t1290 = load ptr, ptr %a1 - %t1291 = load %S.ast.Node, ptr %a2 - %t1292 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1290, %S.ast.Node %t1291, i64 0, i64 1, { ptr, i64, i64 } %t1292) - %t1293 = load ptr, ptr %a1 - %t1294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1295 = load { ptr, i64, i64 }, ptr %t1294 - %t1296 = extractvalue { ptr, i64, i64 } %t1295, 1 - %t1297 = icmp uge i64 0, %t1296 - br i1 %t1297, label %range8308, label %inrange8309 -range8308: - call void @finch_panic_index(ptr @.str.5388, i64 5007, i64 0, i64 %t1296) - unreachable -inrange8309: - %t1298 = extractvalue { ptr, i64, i64 } %t1295, 0 - %t1299 = getelementptr inbounds %S.ast.Node, ptr %t1298, i64 0 - %t1300 = load %S.ast.Node, ptr %t1299 - %t1301 = call %S.gen.Val @finch.gen.strArg(ptr %t1293, %S.ast.Node %t1300, { ptr, i64, i64 } { ptr @.str.5389, i64 12, i64 0 }) - %t1302 = load %S.gen.Val, ptr %a1285 - store %S.gen.Val %t1301, ptr %a1285 - store %S.gen.Val %t1302, ptr %a1303 - call void @finch.drop.S_gen_Val(ptr %a1303) - br label %endif8307 -endif8307: - %t1304 = load ptr, ptr %a1 - %t1305 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1304) - store { ptr, i64, i64 } %t1305, ptr %a1306 - %t1307 = load ptr, ptr %a1 - %t1308 = load { ptr, i64, i64 }, ptr %a1306 - store { ptr, i64, i64 } { ptr @.str.5390, i64 27, i64 0 }, ptr %a1310 - store { ptr, i64, i64 } %t1308, ptr %a1311 - call void @finch_str_concat(ptr %a1309, ptr %a1310, ptr %a1311) - %t1312 = load { ptr, i64, i64 }, ptr %a1309 - store { ptr, i64, i64 } %t1312, ptr %a1314 - store { ptr, i64, i64 } { ptr @.str.5391, i64 6, i64 0 }, ptr %a1315 - call void @finch_str_concat(ptr %a1313, ptr %a1314, ptr %a1315) - store { ptr, i64, i64 } %t1312, ptr %a1316 - call void @finch_str_drop(ptr %a1316) - %t1317 = load { ptr, i64, i64 }, ptr %a1313 - %t1318 = load ptr, ptr %a1 - %t1319 = load %S.gen.Val, ptr %a1285 - %t1320 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1318, %S.gen.Val %t1319) - store { ptr, i64, i64 } %t1317, ptr %a1322 - store { ptr, i64, i64 } %t1320, ptr %a1323 - call void @finch_str_concat(ptr %a1321, ptr %a1322, ptr %a1323) - store { ptr, i64, i64 } %t1317, ptr %a1324 - call void @finch_str_drop(ptr %a1324) - store { ptr, i64, i64 } %t1320, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1321 - store { ptr, i64, i64 } %t1326, ptr %a1328 - store { ptr, i64, i64 } { ptr @.str.5392, i64 1, i64 0 }, ptr %a1329 - call void @finch_str_concat(ptr %a1327, ptr %a1328, ptr %a1329) - store { ptr, i64, i64 } %t1326, ptr %a1330 - call void @finch_str_drop(ptr %a1330) - %t1331 = load { ptr, i64, i64 }, ptr %a1327 - call void @finch.gen.emit(ptr %t1307, { ptr, i64, i64 } %t1331) - store { ptr, i64, i64 } %t1331, ptr %a1332 - call void @finch_str_drop(ptr %a1332) - %t1333 = load ptr, ptr %a1 - %t1334 = load %S.gen.Val, ptr %a1285 - call void @finch.gen.release(ptr %t1333, %S.gen.Val %t1334) - %t1335 = load ptr, ptr %a1 - %t1336 = load { ptr, i64, i64 }, ptr %a1306 - %t1337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1335, { ptr, i64, i64 } { ptr @.str.5393, i64 17, i64 0 }, { ptr, i64, i64 } %t1336) - %t1338 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1337, 0 - %t1339 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5394, i64 3, i64 0 }) - %t1340 = insertvalue %S.gen.Val %t1338, %S.ast.Type %t1339, 1 - %t1341 = insertvalue %S.gen.Val %t1340, i1 true, 2 - call void @finch_str_drop(ptr %a1306) - call void @finch.drop.S_gen_Val(ptr %a1285) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1341 -endif8304: - %t1342 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1342, ptr %a1343 - store { ptr, i64, i64 } { ptr @.str.5395, i64 3, i64 0 }, ptr %a1344 - %t1345 = call i32 @finch_str_eq(ptr %a1343, ptr %a1344) - %t1346 = icmp ne i32 %t1345, 0 - br i1 %t1346, label %then8310, label %endif8312 -then8310: - %t1347 = load ptr, ptr %a1 - %t1348 = load %S.ast.Node, ptr %a2 - %t1349 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1347, %S.ast.Node %t1348, i64 0, i64 1, { ptr, i64, i64 } %t1349) - %t1350 = load ptr, ptr %a1 - %t1351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1352 = load { ptr, i64, i64 }, ptr %t1351 - %t1353 = extractvalue { ptr, i64, i64 } %t1352, 1 - %t1354 = icmp uge i64 0, %t1353 - br i1 %t1354, label %range8313, label %inrange8314 -range8313: - call void @finch_panic_index(ptr @.str.5396, i64 5016, i64 0, i64 %t1353) - unreachable -inrange8314: - %t1355 = extractvalue { ptr, i64, i64 } %t1352, 0 - %t1356 = getelementptr inbounds %S.ast.Node, ptr %t1355, i64 0 - %t1357 = load %S.ast.Node, ptr %t1356 - %t1358 = call %S.gen.Val @finch.gen.expr(ptr %t1350, %S.ast.Node %t1357) - store %S.gen.Val %t1358, ptr %a1359 - %t1360 = load ptr, ptr %a1 - %t1361 = load ptr, ptr %a1 - %t1362 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1363 = load %S.ast.Type, ptr %t1362 - %t1364 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1361, %S.ast.Type %t1363) - store { ptr, i64, i64 } { ptr @.str.5397, i64 26, i64 0 }, ptr %a1366 - store { ptr, i64, i64 } %t1364, ptr %a1367 - call void @finch_str_concat(ptr %a1365, ptr %a1366, ptr %a1367) - store { ptr, i64, i64 } %t1364, ptr %a1368 - call void @finch_str_drop(ptr %a1368) - %t1369 = load { ptr, i64, i64 }, ptr %a1365 - store { ptr, i64, i64 } %t1369, ptr %a1371 - store { ptr, i64, i64 } { ptr @.str.5398, i64 1, i64 0 }, ptr %a1372 - call void @finch_str_concat(ptr %a1370, ptr %a1371, ptr %a1372) - store { ptr, i64, i64 } %t1369, ptr %a1373 - call void @finch_str_drop(ptr %a1373) - %t1374 = load { ptr, i64, i64 }, ptr %a1370 - %t1375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1360, { ptr, i64, i64 } %t1374) - store { ptr, i64, i64 } %t1374, ptr %a1376 - call void @finch_str_drop(ptr %a1376) - store { ptr, i64, i64 } %t1375, ptr %a1377 - %t1378 = load ptr, ptr %a1 - %t1379 = load ptr, ptr %a1 - %t1380 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1381 = load %S.ast.Type, ptr %t1380 - %t1382 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1379, %S.ast.Type %t1381) - %t1383 = load ptr, ptr %a1 - %t1384 = load %S.gen.Val, ptr %a1359 - %t1385 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1383, %S.gen.Val %t1384) - %t1386 = load { ptr, i64, i64 }, ptr %a1377 - call void @finch.gen.store(ptr %t1378, { ptr, i64, i64 } %t1382, { ptr, i64, i64 } %t1385, { ptr, i64, i64 } %t1386) - store { ptr, i64, i64 } %t1382, ptr %a1387 - call void @finch_str_drop(ptr %a1387) - store { ptr, i64, i64 } %t1385, ptr %a1388 - call void @finch_str_drop(ptr %a1388) - %t1389 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1389, ptr %a1390 - call void @finch_str_copy(ptr %a1391, ptr %a1390) - %t1392 = load { ptr, i64, i64 }, ptr %a1391 - %t1393 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1392, 0 - %t1394 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1395 = load %S.ast.Type, ptr %t1394 - %t1396 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1395) - %t1397 = insertvalue %S.gen.Val %t1393, %S.ast.Type %t1396, 1 - call void @finch_str_drop(ptr %a1377) - call void @finch.drop.S_gen_Val(ptr %a1359) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1397 -endif8312: - %t1398 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1398, ptr %a1399 - store { ptr, i64, i64 } { ptr @.str.5399, i64 4, i64 0 }, ptr %a1400 - %t1401 = call i32 @finch_str_eq(ptr %a1399, ptr %a1400) - %t1402 = icmp ne i32 %t1401, 0 - br i1 %t1402, label %then8315, label %endif8317 -then8315: - %t1403 = load ptr, ptr %a1 - %t1404 = load %S.ast.Node, ptr %a2 - %t1405 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1403, %S.ast.Node %t1404, i64 0, i64 1, { ptr, i64, i64 } %t1405) - %t1406 = load ptr, ptr %a1 - %t1407 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1408 = load { ptr, i64, i64 }, ptr %t1407 - %t1409 = extractvalue { ptr, i64, i64 } %t1408, 1 - %t1410 = icmp uge i64 0, %t1409 - br i1 %t1410, label %range8318, label %inrange8319 -range8318: - call void @finch_panic_index(ptr @.str.5400, i64 5023, i64 0, i64 %t1409) - unreachable -inrange8319: - %t1411 = extractvalue { ptr, i64, i64 } %t1408, 0 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %t1411, i64 0 - %t1413 = load %S.ast.Node, ptr %t1412 - %t1414 = call %S.gen.Val @finch.gen.expr(ptr %t1406, %S.ast.Node %t1413) - store %S.gen.Val %t1414, ptr %a1415 - %t1416 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1417 = getelementptr inbounds %S.ast.Type, ptr %t1416, i32 0, i32 0 - %t1418 = load { ptr, i64, i64 }, ptr %t1417 - store { ptr, i64, i64 } %t1418, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5401, i64 3, i64 0 }, ptr %a1420 - %t1421 = call i32 @finch_str_eq(ptr %a1419, ptr %a1420) - %t1422 = icmp eq i32 %t1421, 0 - br i1 %t1422, label %then8320, label %endif8322 -then8320: - %t1423 = load ptr, ptr %a1 - %t1424 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1425 = load { ptr, i64, i64 }, ptr %t1424 - %t1426 = extractvalue { ptr, i64, i64 } %t1425, 1 - %t1427 = icmp uge i64 0, %t1426 - br i1 %t1427, label %range8323, label %inrange8324 -range8323: - call void @finch_panic_index(ptr @.str.5402, i64 5025, i64 0, i64 %t1426) - unreachable -inrange8324: - %t1428 = extractvalue { ptr, i64, i64 } %t1425, 0 - %t1429 = getelementptr inbounds %S.ast.Node, ptr %t1428, i64 0 - %t1430 = load %S.ast.Node, ptr %t1429 - call void @finch.gen.fail(ptr %t1423, %S.ast.Node %t1430, { ptr, i64, i64 } { ptr @.str.5403, i64 119, i64 0 }) - br label %endif8322 -endif8322: - %t1431 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1432 = getelementptr inbounds %S.ast.Type, ptr %t1431, i32 0, i32 1 - %t1433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1432, i32 0, i32 1 - %t1434 = load i64, ptr %t1433 - %t1435 = icmp sgt i64 %t1434, 0 - br label %logic.from8325 -logic.from8325: - br i1 %t1435, label %logic.rhs8326, label %logic.end8327 -logic.rhs8326: - %t1436 = load ptr, ptr %a1 - %t1437 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.ast.Type, ptr %t1437, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - %t1440 = extractvalue { ptr, i64, i64 } %t1439, 1 - %t1441 = icmp uge i64 0, %t1440 - br i1 %t1441, label %range8328, label %inrange8329 -range8328: - call void @finch_panic_index(ptr @.str.5404, i64 5027, i64 0, i64 %t1440) - unreachable -inrange8329: - %t1442 = extractvalue { ptr, i64, i64 } %t1439, 0 - %t1443 = getelementptr inbounds %S.ast.Type, ptr %t1442, i64 0 - %t1444 = load %S.ast.Type, ptr %t1443 - %t1445 = call i1 @finch.gen.owning(ptr %t1436, %S.ast.Type %t1444) - br label %logic.rend8330 -logic.rend8330: - br label %logic.end8327 -logic.end8327: - %t1446 = phi i1 [ false, %logic.from8325 ], [ %t1445, %logic.rend8330 ] - br i1 %t1446, label %then8331, label %endif8333 -then8331: - %t1447 = load ptr, ptr %a1 - %t1448 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1447, { ptr, i64, i64 } { ptr @.str.5405, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1448, ptr %a1449 - %t1450 = load ptr, ptr %a1 - %t1451 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1450, { ptr, i64, i64 } { ptr @.str.5406, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1451, ptr %a1452 - %t1453 = load ptr, ptr %a1 - %t1454 = load ptr, ptr %a1 - %t1455 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1456 = load { ptr, i64, i64 }, ptr %t1455 - store { ptr, i64, i64 } { ptr @.str.5407, i64 12, i64 0 }, ptr %a1458 - store { ptr, i64, i64 } %t1456, ptr %a1459 - call void @finch_str_concat(ptr %a1457, ptr %a1458, ptr %a1459) - %t1460 = load { ptr, i64, i64 }, ptr %a1457 - store { ptr, i64, i64 } %t1460, ptr %a1462 - store { ptr, i64, i64 } { ptr @.str.5408, i64 6, i64 0 }, ptr %a1463 - call void @finch_str_concat(ptr %a1461, ptr %a1462, ptr %a1463) - store { ptr, i64, i64 } %t1460, ptr %a1464 - call void @finch_str_drop(ptr %a1464) - %t1465 = load { ptr, i64, i64 }, ptr %a1461 - %t1466 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1454, { ptr, i64, i64 } %t1465) - store { ptr, i64, i64 } %t1465, ptr %a1467 - call void @finch_str_drop(ptr %a1467) - %t1468 = load { ptr, i64, i64 }, ptr %a1452 - %t1469 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.condBr(ptr %t1453, { ptr, i64, i64 } %t1466, { ptr, i64, i64 } %t1468, { ptr, i64, i64 } %t1469) - store { ptr, i64, i64 } %t1466, ptr %a1470 - call void @finch_str_drop(ptr %a1470) - %t1471 = load ptr, ptr %a1 - %t1472 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.label(ptr %t1471, { ptr, i64, i64 } %t1472) - %t1473 = load ptr, ptr %a1 - %t1474 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1475 = load { ptr, i64, i64 }, ptr %t1474 - %t1476 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1477 = getelementptr inbounds %S.ast.Type, ptr %t1476, i32 0, i32 1 - %t1478 = load { ptr, i64, i64 }, ptr %t1477 - %t1479 = extractvalue { ptr, i64, i64 } %t1478, 1 - %t1480 = icmp uge i64 0, %t1479 - br i1 %t1480, label %range8334, label %inrange8335 -range8334: - call void @finch_panic_index(ptr @.str.5409, i64 5032, i64 0, i64 %t1479) - unreachable -inrange8335: - %t1481 = extractvalue { ptr, i64, i64 } %t1478, 0 - %t1482 = getelementptr inbounds %S.ast.Type, ptr %t1481, i64 0 - %t1483 = load %S.ast.Type, ptr %t1482 - call void @finch.gen.dropAt(ptr %t1473, { ptr, i64, i64 } %t1475, %S.ast.Type %t1483) - %t1484 = load ptr, ptr %a1 - %t1485 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.br(ptr %t1484, { ptr, i64, i64 } %t1485) - %t1486 = load ptr, ptr %a1 - %t1487 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.label(ptr %t1486, { ptr, i64, i64 } %t1487) - call void @finch_str_drop(ptr %a1452) - call void @finch_str_drop(ptr %a1449) - br label %endif8333 -endif8333: - %t1488 = load ptr, ptr %a1 - %t1489 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1490 = load { ptr, i64, i64 }, ptr %t1489 - store { ptr, i64, i64 } { ptr @.str.5410, i64 20, i64 0 }, ptr %a1492 - store { ptr, i64, i64 } %t1490, ptr %a1493 - call void @finch_str_concat(ptr %a1491, ptr %a1492, ptr %a1493) - %t1494 = load { ptr, i64, i64 }, ptr %a1491 - store { ptr, i64, i64 } %t1494, ptr %a1496 - store { ptr, i64, i64 } { ptr @.str.5411, i64 1, i64 0 }, ptr %a1497 - call void @finch_str_concat(ptr %a1495, ptr %a1496, ptr %a1497) - store { ptr, i64, i64 } %t1494, ptr %a1498 - call void @finch_str_drop(ptr %a1498) - %t1499 = load { ptr, i64, i64 }, ptr %a1495 - call void @finch.gen.emit(ptr %t1488, { ptr, i64, i64 } %t1499) - store { ptr, i64, i64 } %t1499, ptr %a1500 - call void @finch_str_drop(ptr %a1500) - %t1501 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5412, i64 4, i64 0 }) - %t1502 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1501, 1 - call void @finch.drop.S_gen_Val(ptr %a1415) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1502 -endif8317: - %t1503 = load ptr, ptr %a1 - %t1504 = load ptr, ptr %a1 - %t1505 = icmp eq ptr %t1504, null - br i1 %t1505, label %panic8336, label %ok8337 -panic8336: - call void @finch_panic(ptr @.str.5413, i64 5039, ptr @.str.5414) - unreachable -ok8337: - %t1506 = getelementptr inbounds %S.gen.Gen, ptr %t1504, i32 0, i32 14 - %t1507 = load { ptr, i64, i64 }, ptr %t1506 - %t1508 = load { ptr, i64, i64 }, ptr %a8 - %t1509 = call i64 @finch.gen.findFn(ptr %t1503, { ptr, i64, i64 } %t1507, { ptr, i64, i64 } %t1508) - store i64 %t1509, ptr %a1510 - %t1511 = load i64, ptr %a1510 - %t1512 = icmp sge i64 %t1511, 0 - br i1 %t1512, label %then8338, label %endif8340 -then8338: - %t1513 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1514 = getelementptr inbounds %S.ast.Type, ptr %t1513, i32 0, i32 1 - %t1515 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1514, i32 0, i32 1 - %t1516 = load i64, ptr %t1515 - %t1517 = icmp sgt i64 %t1516, 0 - br i1 %t1517, label %then8341, label %endif8343 -then8341: - %t1518 = load ptr, ptr %a1 - %t1519 = load %S.ast.Node, ptr %a2 - %t1520 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5415, i64 1, i64 0 }, ptr %a1522 - store { ptr, i64, i64 } %t1520, ptr %a1523 - call void @finch_str_concat(ptr %a1521, ptr %a1522, ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1521 - store { ptr, i64, i64 } %t1524, ptr %a1526 - store { ptr, i64, i64 } { ptr @.str.5416, i64 47, i64 0 }, ptr %a1527 - call void @finch_str_concat(ptr %a1525, ptr %a1526, ptr %a1527) - store { ptr, i64, i64 } %t1524, ptr %a1528 - call void @finch_str_drop(ptr %a1528) - %t1529 = load { ptr, i64, i64 }, ptr %a1525 - call void @finch.gen.fail(ptr %t1518, %S.ast.Node %t1519, { ptr, i64, i64 } %t1529) - store { ptr, i64, i64 } %t1529, ptr %a1530 - call void @finch_str_drop(ptr %a1530) - br label %endif8343 -endif8343: - %t1531 = load ptr, ptr %a1 - %t1532 = load i64, ptr %a1510 - %t1533 = load %S.ast.Node, ptr %a2 - %t1534 = load { ptr, i64, i64 }, ptr %a8 - %t1535 = call %S.gen.Val @finch.gen.callFn(ptr %t1531, i64 %t1532, %S.ast.Node %t1533, i64 0, { ptr, i64, i64 } %t1534, { ptr, i64, i64 } { ptr @.str.5417, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5418, i64 0, i64 0 }) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1535 -endif8340: - %t1536 = load ptr, ptr %a1 - %t1537 = load ptr, ptr %a1 - %t1538 = icmp eq ptr %t1537, null - br i1 %t1538, label %panic8344, label %ok8345 -panic8344: - call void @finch_panic(ptr @.str.5419, i64 5046, ptr @.str.5420) - unreachable -ok8345: - %t1539 = getelementptr inbounds %S.gen.Gen, ptr %t1537, i32 0, i32 14 - %t1540 = load { ptr, i64, i64 }, ptr %t1539 - %t1541 = load { ptr, i64, i64 }, ptr %a8 - %t1542 = call i64 @finch.gen.findTemplate(ptr %t1536, { ptr, i64, i64 } %t1540, { ptr, i64, i64 } %t1541, { ptr, i64, i64 } { ptr @.str.5421, i64 0, i64 0 }, i1 false) - store i64 %t1542, ptr %a1543 - %t1544 = load i64, ptr %a1543 - %t1545 = icmp sge i64 %t1544, 0 - br i1 %t1545, label %then8346, label %endif8348 -then8346: - %t1546 = load ptr, ptr %a1 - %t1547 = load %S.ast.Node, ptr %a2 - %t1548 = load i64, ptr %a1543 - %t1549 = load { ptr, i64, i64 }, ptr %a8 - %t1550 = call %S.gen.Val @finch.gen.genericCall(ptr %t1546, %S.ast.Node %t1547, i64 %t1548, i64 0, { ptr, i64, i64 } %t1549) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1550 -endif8348: - %t1551 = load ptr, ptr %a1 - %t1552 = load ptr, ptr %a1 - %t1553 = icmp eq ptr %t1552, null - br i1 %t1553, label %panic8349, label %ok8350 -panic8349: - call void @finch_panic(ptr @.str.5422, i64 5050, ptr @.str.5423) - unreachable -ok8350: - %t1554 = getelementptr inbounds %S.gen.Gen, ptr %t1552, i32 0, i32 14 - %t1555 = load { ptr, i64, i64 }, ptr %t1554 - %t1556 = load { ptr, i64, i64 }, ptr %a8 - %t1557 = call i64 @finch.gen.findTemplate(ptr %t1551, { ptr, i64, i64 } %t1555, { ptr, i64, i64 } %t1556, { ptr, i64, i64 } { ptr @.str.5424, i64 0, i64 0 }, i1 true) - %t1558 = icmp sge i64 %t1557, 0 - br i1 %t1558, label %then8351, label %endif8353 -then8351: - %t1559 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1560 = getelementptr inbounds %S.ast.Type, ptr %t1559, i32 0, i32 1 - %t1561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1560, i32 0, i32 1 - %t1562 = load i64, ptr %t1561 - %t1563 = icmp eq i64 %t1562, 0 - br i1 %t1563, label %then8354, label %endif8356 -then8354: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5425, i64 1, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5426, i64 42, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - %t1576 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1575, ptr %a1578 - store { ptr, i64, i64 } %t1576, ptr %a1579 - call void @finch_str_concat(ptr %a1577, ptr %a1578, ptr %a1579) - store { ptr, i64, i64 } %t1575, ptr %a1580 - call void @finch_str_drop(ptr %a1580) - %t1581 = load { ptr, i64, i64 }, ptr %a1577 - store { ptr, i64, i64 } %t1581, ptr %a1583 - store { ptr, i64, i64 } { ptr @.str.5427, i64 10, i64 0 }, ptr %a1584 - call void @finch_str_concat(ptr %a1582, ptr %a1583, ptr %a1584) - store { ptr, i64, i64 } %t1581, ptr %a1585 - call void @finch_str_drop(ptr %a1585) - %t1586 = load { ptr, i64, i64 }, ptr %a1582 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1586) - store { ptr, i64, i64 } %t1586, ptr %a1587 - call void @finch_str_drop(ptr %a1587) - br label %endif8356 -endif8356: - store { ptr, i64, i64 } zeroinitializer, ptr %a1588 - %t1589 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1590 = getelementptr inbounds %S.ast.Type, ptr %t1589, i32 0, i32 1 - store i64 0, ptr %a1591 - br label %each.cond8357 -each.cond8357: - %t1592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1590, i32 0, i32 1 - %t1593 = load i64, ptr %t1592 - %t1594 = load i64, ptr %a1591 - %t1595 = icmp slt i64 %t1594, %t1593 - br i1 %t1595, label %each.body8358, label %each.end8360 -each.body8358: - %t1596 = load ptr, ptr %t1590 - %t1597 = getelementptr inbounds %S.ast.Type, ptr %t1596, i64 %t1594 - %t1598 = load %S.ast.Type, ptr %t1597 - store %S.ast.Type %t1598, ptr %a1599 - %t1600 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1588, i32 0, i32 1 - %t1601 = load ptr, ptr %a1 - %t1602 = load %S.ast.Type, ptr %a1599 - %t1603 = load %S.ast.Node, ptr %a2 - %t1604 = call %S.ast.Type @finch.gen.resolve(ptr %t1601, %S.ast.Type %t1602, %S.ast.Node %t1603) - %t1605 = load i64, ptr %t1600 - %t1606 = add i64 %t1605, 1 - call void @finch_arr_reserve(ptr %a1588, i64 %t1606, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1607 = load ptr, ptr %a1588 - %t1608 = getelementptr inbounds %S.ast.Type, ptr %t1607, i64 %t1605 - store %S.ast.Type %t1604, ptr %t1608 - store i64 %t1606, ptr %t1600 - br label %each.step8359 -each.step8359: - %t1609 = load i64, ptr %a1591 - %t1610 = add i64 %t1609, 1 - store i64 %t1610, ptr %a1591 - br label %each.cond8357 -each.end8360: - %t1611 = load ptr, ptr %a1 - %t1612 = load ptr, ptr %a1 - %t1613 = icmp eq ptr %t1612, null - br i1 %t1613, label %panic8361, label %ok8362 -panic8361: - call void @finch_panic(ptr @.str.5428, i64 5059, ptr @.str.5429) - unreachable -ok8362: - %t1614 = getelementptr inbounds %S.gen.Gen, ptr %t1612, i32 0, i32 14 - %t1615 = load { ptr, i64, i64 }, ptr %t1614 - %t1616 = load { ptr, i64, i64 }, ptr %a8 - %t1617 = load { ptr, i64, i64 }, ptr %a1588 - %t1618 = load %S.ast.Node, ptr %a2 - %t1619 = call %S.ast.Type @finch.gen.instStruct(ptr %t1611, { ptr, i64, i64 } %t1615, { ptr, i64, i64 } %t1616, { ptr, i64, i64 } %t1617, %S.ast.Node %t1618) - store %S.ast.Type %t1619, ptr %a1620 - %t1621 = load ptr, ptr %a1 - %t1622 = load ptr, ptr %a1 - %t1623 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 3 - %t1624 = load { ptr, i64, i64 }, ptr %t1623 - %t1625 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 2 - %t1626 = load { ptr, i64, i64 }, ptr %t1625 - %t1627 = call i64 @finch.gen.findStruct(ptr %t1622, { ptr, i64, i64 } %t1624, { ptr, i64, i64 } %t1626) - %t1628 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1629 = load { ptr, i64, i64 }, ptr %t1628 - %t1630 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1631 = load { ptr, i64, i64 }, ptr %t1630 - %t1632 = load %S.ast.Node, ptr %a2 - %t1633 = call %S.gen.Val @finch.gen.construct(ptr %t1621, i64 %t1627, { ptr, i64, i64 } %t1629, { ptr, i64, i64 } %t1631, %S.ast.Node %t1632) - call void @finch.drop.S_ast_Type(ptr %a1620) - call void @finch.drop.arr_S_ast_Type(ptr %a1588) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1633 -endif8353: - %t1634 = load ptr, ptr %a1 - %t1635 = load ptr, ptr %a1 - %t1636 = icmp eq ptr %t1635, null - br i1 %t1636, label %panic8363, label %ok8364 -panic8363: - call void @finch_panic(ptr @.str.5430, i64 5062, ptr @.str.5431) - unreachable -ok8364: - %t1637 = getelementptr inbounds %S.gen.Gen, ptr %t1635, i32 0, i32 14 - %t1638 = load { ptr, i64, i64 }, ptr %t1637 - %t1639 = load { ptr, i64, i64 }, ptr %a8 - %t1640 = call i64 @finch.gen.findStruct(ptr %t1634, { ptr, i64, i64 } %t1638, { ptr, i64, i64 } %t1639) - store i64 %t1640, ptr %a1641 - %t1642 = load i64, ptr %a1641 - %t1643 = icmp sge i64 %t1642, 0 - br i1 %t1643, label %then8365, label %endif8367 -then8365: - %t1644 = load ptr, ptr %a1 - %t1645 = icmp eq ptr %t1644, null - br i1 %t1645, label %panic8368, label %ok8369 -panic8368: - call void @finch_panic(ptr @.str.5432, i64 5064, ptr @.str.5433) - unreachable -ok8369: - %t1646 = getelementptr inbounds %S.gen.Gen, ptr %t1644, i32 0, i32 16 - %t1647 = load i64, ptr %a1641 - %t1648 = load { ptr, i64, i64 }, ptr %t1646 - %t1649 = extractvalue { ptr, i64, i64 } %t1648, 1 - %t1650 = icmp uge i64 %t1647, %t1649 - br i1 %t1650, label %range8370, label %inrange8371 -range8370: - call void @finch_panic_index(ptr @.str.5434, i64 5064, i64 %t1647, i64 %t1649) - unreachable -inrange8371: - %t1651 = extractvalue { ptr, i64, i64 } %t1648, 0 - %t1652 = getelementptr inbounds %S.gen.StructDef, ptr %t1651, i64 %t1647 - %t1653 = load %S.gen.StructDef, ptr %t1652 - store %S.gen.StructDef %t1653, ptr %a1654 - call void @finch.copy.S_gen_StructDef(ptr %a1655, ptr %a1654) - %t1656 = load %S.gen.StructDef, ptr %a1655 - store %S.gen.StructDef %t1656, ptr %a1657 - %t1658 = load ptr, ptr %a1 - %t1659 = icmp eq ptr %t1658, null - br i1 %t1659, label %panic8372, label %ok8373 -panic8372: - call void @finch_panic(ptr @.str.5435, i64 5065, ptr @.str.5436) - unreachable -ok8373: - %t1660 = getelementptr inbounds %S.gen.Gen, ptr %t1658, i32 0, i32 28 - %t1661 = load i1, ptr %t1660 - br label %logic.from8374 -logic.from8374: - br i1 %t1661, label %logic.rhs8375, label %logic.end8376 -logic.rhs8375: - %t1662 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 2 - %t1663 = load i1, ptr %t1662 - %t1664 = xor i1 %t1663, true - br label %logic.rend8377 -logic.rend8377: - br label %logic.end8376 -logic.end8376: - %t1665 = phi i1 [ false, %logic.from8374 ], [ %t1664, %logic.rend8377 ] - br i1 %t1665, label %then8378, label %endif8380 -then8378: - %t1666 = load ptr, ptr %a1 - %t1667 = icmp eq ptr %t1666, null - br i1 %t1667, label %panic8381, label %ok8382 -panic8381: - call void @finch_panic(ptr @.str.5437, i64 5066, ptr @.str.5438) - unreachable -ok8382: - %t1668 = getelementptr inbounds %S.gen.Gen, ptr %t1666, i32 0, i32 0 - %t1669 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 13 - %t1670 = load i64, ptr %t1669 - %t1671 = load { ptr, i64, i64 }, ptr %t1668 - %t1672 = extractvalue { ptr, i64, i64 } %t1671, 1 - %t1673 = icmp uge i64 %t1670, %t1672 - br i1 %t1673, label %range8383, label %inrange8384 -range8383: - call void @finch_panic_index(ptr @.str.5439, i64 5066, i64 %t1670, i64 %t1672) - unreachable -inrange8384: - %t1674 = extractvalue { ptr, i64, i64 } %t1671, 0 - %t1675 = getelementptr inbounds %S.ast.Program, ptr %t1674, i64 %t1670 - %t1676 = getelementptr inbounds %S.ast.Program, ptr %t1675, i32 0, i32 6 - %t1677 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 14 - %t1678 = load i64, ptr %t1677 - %t1679 = load { ptr, i64, i64 }, ptr %t1676 - %t1680 = extractvalue { ptr, i64, i64 } %t1679, 1 - %t1681 = icmp uge i64 %t1678, %t1680 - br i1 %t1681, label %range8385, label %inrange8386 -range8385: - call void @finch_panic_index(ptr @.str.5440, i64 5066, i64 %t1678, i64 %t1680) - unreachable -inrange8386: - %t1682 = extractvalue { ptr, i64, i64 } %t1679, 0 - %t1683 = getelementptr inbounds %S.ast.Node, ptr %t1682, i64 %t1678 - %t1684 = load %S.ast.Node, ptr %t1683 - store %S.ast.Node %t1684, ptr %a1685 - call void @finch.copy.S_ast_Node(ptr %a1686, ptr %a1685) - %t1687 = load %S.ast.Node, ptr %a1686 - store %S.ast.Node %t1687, ptr %a1688 - %t1689 = load ptr, ptr %a1 - %t1690 = load %S.ast.Node, ptr %a2 - %t1691 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t1692 = load i64, ptr %t1691 - %t1693 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t1694 = load i64, ptr %t1693 - %t1695 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 1 - %t1696 = load { ptr, i64, i64 }, ptr %t1695 - store { ptr, i64, i64 } { ptr @.str.5441, i64 16, i64 0 }, ptr %a1698 - store { ptr, i64, i64 } %t1696, ptr %a1699 - call void @finch_str_concat(ptr %a1697, ptr %a1698, ptr %a1699) - %t1700 = load { ptr, i64, i64 }, ptr %a1697 - store { ptr, i64, i64 } %t1700, ptr %a1702 - store { ptr, i64, i64 } { ptr @.str.5442, i64 3, i64 0 }, ptr %a1703 - call void @finch_str_concat(ptr %a1701, ptr %a1702, ptr %a1703) - store { ptr, i64, i64 } %t1700, ptr %a1704 - call void @finch_str_drop(ptr %a1704) - %t1705 = load { ptr, i64, i64 }, ptr %a1701 - %t1706 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 11 - %t1707 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1706, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5443, i64 2, i64 0 }, ptr %a1708 - call void @finch_str_join(ptr %a1709, ptr %t1706, ptr %a1708) - %t1710 = load { ptr, i64, i64 }, ptr %a1709 - store { ptr, i64, i64 } %t1705, ptr %a1712 - store { ptr, i64, i64 } %t1710, ptr %a1713 - call void @finch_str_concat(ptr %a1711, ptr %a1712, ptr %a1713) - store { ptr, i64, i64 } %t1705, ptr %a1714 - call void @finch_str_drop(ptr %a1714) - store { ptr, i64, i64 } %t1710, ptr %a1715 - call void @finch_str_drop(ptr %a1715) - %t1716 = load { ptr, i64, i64 }, ptr %a1711 - store { ptr, i64, i64 } %t1716, ptr %a1718 - store { ptr, i64, i64 } { ptr @.str.5444, i64 6, i64 0 }, ptr %a1719 - call void @finch_str_concat(ptr %a1717, ptr %a1718, ptr %a1719) - store { ptr, i64, i64 } %t1716, ptr %a1720 - call void @finch_str_drop(ptr %a1720) - %t1721 = load { ptr, i64, i64 }, ptr %a1717 - %t1722 = load ptr, ptr %a1 - %t1723 = icmp eq ptr %t1722, null - br i1 %t1723, label %panic8387, label %ok8388 -panic8387: - call void @finch_panic(ptr @.str.5445, i64 5067, ptr @.str.5446) - unreachable -ok8388: - %t1724 = getelementptr inbounds %S.gen.Gen, ptr %t1722, i32 0, i32 1 - %t1725 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 13 - %t1726 = load i64, ptr %t1725 - %t1727 = load { ptr, i64, i64 }, ptr %t1724 - %t1728 = extractvalue { ptr, i64, i64 } %t1727, 1 - %t1729 = icmp uge i64 %t1726, %t1728 - br i1 %t1729, label %range8389, label %inrange8390 -range8389: - call void @finch_panic_index(ptr @.str.5447, i64 5067, i64 %t1726, i64 %t1728) - unreachable -inrange8390: - %t1730 = extractvalue { ptr, i64, i64 } %t1727, 0 - %t1731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1730, i64 %t1726 - %t1732 = load { ptr, i64, i64 }, ptr %t1731 - %t1733 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 11 - %t1734 = load i64, ptr %t1733 - %t1735 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 12 - %t1736 = load i64, ptr %t1735 - call void @finch.gen.noteRef(ptr %t1689, %S.ast.Node %t1690, i64 %t1692, i64 %t1694, { ptr, i64, i64 } %t1721, { ptr, i64, i64 } %t1732, i64 %t1734, i64 %t1736) - store { ptr, i64, i64 } %t1721, ptr %a1737 - call void @finch_str_drop(ptr %a1737) - call void @finch.drop.S_ast_Node(ptr %a1688) - br label %endif8380 -endif8380: - %t1738 = load ptr, ptr %a1 - %t1739 = load i64, ptr %a1641 - %t1740 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1741 = load { ptr, i64, i64 }, ptr %t1740 - %t1742 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1743 = load { ptr, i64, i64 }, ptr %t1742 - %t1744 = load %S.ast.Node, ptr %a2 - %t1745 = call %S.gen.Val @finch.gen.construct(ptr %t1738, i64 %t1739, { ptr, i64, i64 } %t1741, { ptr, i64, i64 } %t1743, %S.ast.Node %t1744) - call void @finch.drop.S_gen_StructDef(ptr %a1657) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1745 -endif8367: - %t1746 = load ptr, ptr %a1 - %t1747 = load ptr, ptr %a1 - %t1748 = icmp eq ptr %t1747, null - br i1 %t1748, label %panic8391, label %ok8392 -panic8391: - call void @finch_panic(ptr @.str.5448, i64 5071, ptr @.str.5449) - unreachable -ok8392: - %t1749 = getelementptr inbounds %S.gen.Gen, ptr %t1747, i32 0, i32 14 - %t1750 = load { ptr, i64, i64 }, ptr %t1749 - %t1751 = load { ptr, i64, i64 }, ptr %a8 - %t1752 = call i64 @finch.gen.findEnum(ptr %t1746, { ptr, i64, i64 } %t1750, { ptr, i64, i64 } %t1751) - store i64 %t1752, ptr %a1753 - %t1754 = load i64, ptr %a1753 - %t1755 = icmp sge i64 %t1754, 0 - br i1 %t1755, label %then8393, label %endif8395 -then8393: - %t1756 = load ptr, ptr %a1 - %t1757 = load %S.ast.Node, ptr %a2 - %t1758 = load i64, ptr %a1753 - %t1759 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1756, %S.ast.Node %t1757, i64 %t1758) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1759 -endif8395: - %t1760 = load ptr, ptr %a1 - %t1761 = icmp eq ptr %t1760, null - br i1 %t1761, label %panic8396, label %ok8397 -panic8396: - call void @finch_panic(ptr @.str.5450, i64 5075, ptr @.str.5451) - unreachable -ok8397: - %t1762 = getelementptr inbounds %S.gen.Gen, ptr %t1760, i32 0, i32 26 - %t1763 = getelementptr inbounds %S.cimport.CImports, ptr %t1762, i32 0, i32 0 - %t1764 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1764, ptr %a1765 - %t1766 = call i64 @finch_map_find(ptr %t1763, ptr %a1765, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1767 = icmp sge i64 %t1766, 0 - br i1 %t1767, label %then8398, label %endif8400 -then8398: - %t1768 = load ptr, ptr %a1 - %t1769 = load %S.ast.Node, ptr %a2 - %t1770 = load ptr, ptr %a1 - %t1771 = icmp eq ptr %t1770, null - br i1 %t1771, label %panic8401, label %ok8402 -panic8401: - call void @finch_panic(ptr @.str.5452, i64 5076, ptr @.str.5453) - unreachable -ok8402: - %t1772 = getelementptr inbounds %S.gen.Gen, ptr %t1770, i32 0, i32 26 - %t1773 = getelementptr inbounds %S.cimport.CImports, ptr %t1772, i32 0, i32 0 - %t1774 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1774, ptr %a1775 - %t1776 = call i64 @finch_map_find(ptr %t1773, ptr %a1775, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1777 = icmp slt i64 %t1776, 0 - br i1 %t1777, label %map.missing8403, label %map.found8404 -map.missing8403: - store { ptr, i64, i64 } zeroinitializer, ptr %a1778 - store { ptr, i64, i64 } %t1774, ptr %a1779 - call void @finch_buf_str(ptr %a1778, ptr %a1779, i32 1) - call void @finch_map_missing(ptr @.str.5454, i64 5076, ptr %a1778) - unreachable -map.found8404: - %t1780 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1773, i32 0, i32 0 - %t1781 = load ptr, ptr %t1780 - %t1782 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1781, i64 %t1776 - %t1783 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1782, i32 0, i32 2 - %t1784 = load %S.cimport.CFunc, ptr %t1783 - %t1785 = call %S.gen.Val @finch.gen.callC(ptr %t1768, %S.ast.Node %t1769, %S.cimport.CFunc %t1784) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1785 -endif8400: - %t1786 = load ptr, ptr %a1 - %t1787 = load { ptr, i64, i64 }, ptr %a8 - %t1788 = call i64 @finch.gen.findStruct(ptr %t1786, { ptr, i64, i64 } { ptr @.str.5455, i64 1, i64 0 }, { ptr, i64, i64 } %t1787) - store i64 %t1788, ptr %a1641 - %t1789 = load i64, ptr %a1641 - %t1790 = icmp sge i64 %t1789, 0 - br i1 %t1790, label %then8405, label %endif8407 -then8405: - %t1791 = load ptr, ptr %a1 - %t1792 = load i64, ptr %a1641 - %t1793 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1794 = load { ptr, i64, i64 }, ptr %t1793 - %t1795 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1796 = load { ptr, i64, i64 }, ptr %t1795 - %t1797 = load %S.ast.Node, ptr %a2 - %t1798 = call %S.gen.Val @finch.gen.construct(ptr %t1791, i64 %t1792, { ptr, i64, i64 } %t1794, { ptr, i64, i64 } %t1796, %S.ast.Node %t1797) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1798 -endif8407: - %t1799 = load ptr, ptr %a1 - %t1800 = load { ptr, i64, i64 }, ptr %a8 - %t1801 = call i64 @finch.gen.lookup(ptr %t1799, { ptr, i64, i64 } %t1800) - %t1802 = icmp sge i64 %t1801, 0 - br i1 %t1802, label %then8408, label %endif8410 -then8408: - %t1803 = load ptr, ptr %a1 - %t1804 = load %S.ast.Node, ptr %a2 - %t1805 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5456, i64 1, i64 0 }, ptr %a1807 - store { ptr, i64, i64 } %t1805, ptr %a1808 - call void @finch_str_concat(ptr %a1806, ptr %a1807, ptr %a1808) - %t1809 = load { ptr, i64, i64 }, ptr %a1806 - store { ptr, i64, i64 } %t1809, ptr %a1811 - store { ptr, i64, i64 } { ptr @.str.5457, i64 31, i64 0 }, ptr %a1812 - call void @finch_str_concat(ptr %a1810, ptr %a1811, ptr %a1812) - store { ptr, i64, i64 } %t1809, ptr %a1813 - call void @finch_str_drop(ptr %a1813) - %t1814 = load { ptr, i64, i64 }, ptr %a1810 - call void @finch.gen.fail(ptr %t1803, %S.ast.Node %t1804, { ptr, i64, i64 } %t1814) - store { ptr, i64, i64 } %t1814, ptr %a1815 - call void @finch_str_drop(ptr %a1815) - br label %endif8410 -endif8410: - %t1816 = load ptr, ptr %a1 - %t1817 = load %S.ast.Node, ptr %a2 - %t1818 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5458, i64 28, i64 0 }, ptr %a1820 - store { ptr, i64, i64 } %t1818, ptr %a1821 - call void @finch_str_concat(ptr %a1819, ptr %a1820, ptr %a1821) - %t1822 = load { ptr, i64, i64 }, ptr %a1819 - store { ptr, i64, i64 } %t1822, ptr %a1824 - store { ptr, i64, i64 } { ptr @.str.5459, i64 1, i64 0 }, ptr %a1825 - call void @finch_str_concat(ptr %a1823, ptr %a1824, ptr %a1825) - store { ptr, i64, i64 } %t1822, ptr %a1826 - call void @finch_str_drop(ptr %a1826) - %t1827 = load { ptr, i64, i64 }, ptr %a1823 - %t1828 = load { ptr, i64, i64 }, ptr %a8 - %t1829 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1828) - store { ptr, i64, i64 } %t1827, ptr %a1831 - store { ptr, i64, i64 } %t1829, ptr %a1832 - call void @finch_str_concat(ptr %a1830, ptr %a1831, ptr %a1832) - store { ptr, i64, i64 } %t1827, ptr %a1833 - call void @finch_str_drop(ptr %a1833) - store { ptr, i64, i64 } %t1829, ptr %a1834 - call void @finch_str_drop(ptr %a1834) - %t1835 = load { ptr, i64, i64 }, ptr %a1830 - call void @finch.gen.fail(ptr %t1816, %S.ast.Node %t1817, { ptr, i64, i64 } %t1835) - store { ptr, i64, i64 } %t1835, ptr %a1836 - call void @finch_str_drop(ptr %a1836) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca i64, align 16 - %a70 = alloca i64, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca %S.gen.Val, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a166 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca %S.gen.Val, align 16 - %a204 = alloca %S.gen.Val, align 16 - %a220 = alloca %S.gen.Val, align 16 - %a221 = alloca i64, align 16 - %a229 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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 %panic8411, label %ok8412 -panic8411: - call void @finch_panic(ptr @.str.5460, i64 5090, ptr @.str.5461) - unreachable -ok8412: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 15 - %t11 = load i64, ptr %a2 - %t12 = load { ptr, i64, i64 }, ptr %t10 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range8413, label %inrange8414 -range8413: - call void @finch_panic_index(ptr @.str.5462, i64 5090, i64 %t11, i64 %t13) - unreachable -inrange8414: - %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.from8415 -logic.from8415: - br i1 %t25, label %logic.rhs8416, label %logic.end8417 -logic.rhs8416: - %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.5463, 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.rend8418 -logic.rend8418: - br label %logic.end8417 -logic.end8417: - %t32 = phi i1 [ false, %logic.from8415 ], [ %t31, %logic.rend8418 ] - br i1 %t32, label %then8419, label %endif8421 -then8419: - %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.5464, i64 52, i64 0 }) - br label %endif8421 -endif8421: - %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 %then8422, label %endif8424 -then8422: - %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.5465, 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 %endif8424 -endif8424: - store { ptr, i64, i64 } zeroinitializer, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic8425, label %ok8426 -panic8425: - call void @finch_panic(ptr @.str.5466, i64 5101, ptr @.str.5467) - unreachable -ok8426: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load i64, ptr %t64 - store i64 %t65, ptr %a66 - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load i64, ptr %t68 - store i64 0, ptr %a70 - br label %for.cond8427 -for.cond8427: - %t71 = load i64, ptr %a70 - %t72 = icmp slt i64 %t71, %t69 - br i1 %t72, label %for.body8428, label %for.end8430 -for.body8428: - %t73 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t74 = load i64, ptr %a4 - %t75 = load i64, ptr %a70 - %t76 = add i64 %t74, %t75 - %t77 = load { ptr, i64, i64 }, ptr %t73 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range8431, label %inrange8432 -range8431: - call void @finch_panic_index(ptr @.str.5468, i64 5103, i64 %t76, i64 %t78) - unreachable -inrange8432: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds %S.ast.Node, ptr %t80, i64 %t76 - %t82 = load %S.ast.Node, ptr %t81 - store %S.ast.Node %t82, ptr %a83 - call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) - %t85 = load %S.ast.Node, ptr %a84 - store %S.ast.Node %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load ptr, ptr %a1 - %t89 = load %S.ast.Node, ptr %a86 - %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t91 = load i64, ptr %a70 - %t92 = load { ptr, i64, i64 }, ptr %t90 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 %t91, %t93 - br i1 %t94, label %range8433, label %inrange8434 -range8433: - call void @finch_panic_index(ptr @.str.5469, i64 5104, i64 %t91, i64 %t93) - unreachable -inrange8434: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Type, ptr %t95, i64 %t91 - %t97 = load %S.ast.Type, ptr %t96 - %t98 = call %S.gen.Val @finch.gen.exprWant(ptr %t88, %S.ast.Node %t89, %S.ast.Type %t97) - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t100 = load i64, ptr %a70 - %t101 = load { ptr, i64, i64 }, ptr %t99 - %t102 = extractvalue { ptr, i64, i64 } %t101, 1 - %t103 = icmp uge i64 %t100, %t102 - br i1 %t103, label %range8435, label %inrange8436 -range8435: - call void @finch_panic_index(ptr @.str.5470, i64 5104, i64 %t100, i64 %t102) - unreachable -inrange8436: - %t104 = extractvalue { ptr, i64, i64 } %t101, 0 - %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t100 - %t106 = load %S.ast.Type, ptr %t105 - %t107 = load %S.ast.Node, ptr %a86 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 - %t109 = load i64, ptr %a70 - %t110 = load { ptr, i64, i64 }, ptr %t108 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range8437, label %inrange8438 -range8437: - call void @finch_panic_index(ptr @.str.5472, i64 5104, i64 %t109, i64 %t111) - unreachable -inrange8438: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i64 %t109 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.5471, i64 10, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.5473, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = call %S.gen.Val @finch.gen.coerce(ptr %t87, %S.gen.Val %t98, %S.ast.Type %t106, %S.ast.Node %t107, { ptr, i64, i64 } %t124) - store %S.gen.Val %t98, ptr %a126 - call void @finch.drop.S_gen_Val(ptr %a126) - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_drop(ptr %a127) - store %S.gen.Val %t125, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t131 = load i64, ptr %a70 - %t132 = load { ptr, i64, i64 }, ptr %t130 - %t133 = extractvalue { ptr, i64, i64 } %t132, 1 - %t134 = icmp uge i64 %t131, %t133 - br i1 %t134, label %range8439, label %inrange8440 -range8439: - call void @finch_panic_index(ptr @.str.5474, i64 5106, i64 %t131, i64 %t133) - unreachable -inrange8440: - %t135 = extractvalue { ptr, i64, i64 } %t132, 0 - %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t131 - %t137 = load %S.ast.Type, ptr %t136 - %t138 = call i1 @finch.gen.owning(ptr %t129, %S.ast.Type %t137) - br label %logic.from8441 -logic.from8441: - br i1 %t138, label %logic.rhs8442, label %logic.end8443 -logic.rhs8442: - %t139 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t140 = load i1, ptr %t139 - %t141 = xor i1 %t140, true - br label %logic.rend8444 -logic.rend8444: - br label %logic.end8443 -logic.end8443: - %t142 = phi i1 [ false, %logic.from8441 ], [ %t141, %logic.rend8444 ] - br label %logic.from8445 -logic.from8445: - br i1 %t142, label %logic.rhs8446, label %logic.end8447 -logic.rhs8446: - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t144 = load i64, ptr %t143 - %t145 = icmp sgt i64 %t144, 0 - br label %logic.rend8448 -logic.rend8448: - br label %logic.end8447 -logic.end8447: - %t146 = phi i1 [ false, %logic.from8445 ], [ %t145, %logic.rend8448 ] - br label %logic.from8449 -logic.from8449: - br i1 %t146, label %logic.rhs8450, label %logic.end8451 -logic.rhs8450: - %t147 = load %S.ast.Node, ptr %a86 - %t148 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t147) - %t149 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - store { ptr, i64, i64 } %t148, ptr %a154 - call void @finch_str_drop(ptr %a154) - br label %logic.rend8452 -logic.rend8452: - br label %logic.end8451 -logic.end8451: - %t155 = phi i1 [ false, %logic.from8449 ], [ %t153, %logic.rend8452 ] - br i1 %t155, label %then8453, label %endif8455 -then8453: - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - %t161 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t156, { ptr, i64, i64 } %t158, %S.ast.Type %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t164 = load %S.ast.Type, ptr %t163 - store %S.ast.Type %t164, ptr %a165 - call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) - %t167 = load %S.ast.Type, ptr %a166 - %t168 = insertvalue %S.gen.Val %t162, %S.ast.Type %t167, 1 - %t169 = insertvalue %S.gen.Val %t168, i1 true, 2 - %t170 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t169, ptr %a128 - store %S.gen.Val %t170, ptr %a171 - call void @finch.drop.S_gen_Val(ptr %a171) - br label %endif8455 -endif8455: - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t175 = load i64, ptr %a70 - %t176 = load { ptr, i64, i64 }, ptr %t174 - %t177 = extractvalue { ptr, i64, i64 } %t176, 1 - %t178 = icmp uge i64 %t175, %t177 - br i1 %t178, label %range8456, label %inrange8457 -range8456: - call void @finch_panic_index(ptr @.str.5475, i64 5109, i64 %t175, i64 %t177) - unreachable -inrange8457: - %t179 = extractvalue { ptr, i64, i64 } %t176, 0 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i64 %t175 - %t181 = load %S.ast.Type, ptr %t180 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t181) - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5476, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t187, ptr %a191 - store { ptr, i64, i64 } %t189, ptr %a192 - call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192) - store { ptr, i64, i64 } %t187, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a190 - %t195 = load i64, ptr %t172 - %t196 = add i64 %t195, 1 - call void @finch_arr_reserve(ptr %a45, i64 %t196, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t197 = load ptr, ptr %a45 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i64 %t195 - store { ptr, i64, i64 } %t194, ptr %t198 - store i64 %t196, ptr %t172 - %t199 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t200 = load i1, ptr %t199 - br i1 %t200, label %then8458, label %endif8460 -then8458: - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t202 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t202, ptr %a203 - call void @finch.copy.S_gen_Val(ptr %a204, ptr %a203) - %t205 = load %S.gen.Val, ptr %a204 - %t206 = load i64, ptr %t201 - %t207 = add i64 %t206, 1 - call void @finch_arr_reserve(ptr %a60, i64 %t207, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t208 = load ptr, ptr %a60 - %t209 = getelementptr inbounds %S.gen.Val, ptr %t208, i64 %t206 - store %S.gen.Val %t205, ptr %t209 - store i64 %t207, ptr %t201 - br label %endif8460 -endif8460: - %t210 = load ptr, ptr %a1 - %t211 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t210, %S.gen.Val %t211) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Node(ptr %a86) - br label %for.step8429 -for.step8429: - %t212 = load i64, ptr %a70 - %t213 = add i64 %t212, 1 - store i64 %t213, ptr %a70 - br label %for.cond8427 -for.end8430: - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.FnSig, ptr %a21 - %t216 = load %S.ast.Node, ptr %a3 - %t217 = load { ptr, i64, i64 }, ptr %a45 - %t218 = load { ptr, i64, i64 }, ptr %a5 - %t219 = call %S.gen.Val @finch.gen.emitCall(ptr %t214, %S.gen.FnSig %t215, %S.ast.Node %t216, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t218) - store %S.gen.Val %t219, ptr %a220 - store i64 0, ptr %a221 - br label %each.cond8461 -each.cond8461: - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = load i64, ptr %a221 - %t225 = icmp slt i64 %t224, %t223 - br i1 %t225, label %each.body8462, label %each.end8464 -each.body8462: - %t226 = load ptr, ptr %a60 - %t227 = getelementptr inbounds %S.gen.Val, ptr %t226, i64 %t224 - %t228 = load %S.gen.Val, ptr %t227 - store %S.gen.Val %t228, ptr %a229 - %t230 = load ptr, ptr %a1 - %t231 = load %S.gen.Val, ptr %a229 - call void @finch.gen.release(ptr %t230, %S.gen.Val %t231) - br label %each.step8463 -each.step8463: - %t232 = load i64, ptr %a221 - %t233 = add i64 %t232, 1 - store i64 %t233, ptr %a221 - br label %each.cond8461 -each.end8464: - %t234 = load ptr, ptr %a1 - %t235 = load i64, ptr %a66 - call void @finch.gen.heldEnd(ptr %t234, i64 %t235) - %t236 = load %S.gen.Val, ptr %a220 - call void @finch.drop.arr_S_gen_Val(ptr %a60) - call void @finch.drop.arr_str(ptr %a45) - call void @finch.drop.S_gen_FnSig(ptr %a21) - ret %S.gen.Val %t236 -} - -define internal %S.gen.Val @finch.gen.emitCall(ptr %p0, %S.gen.FnSig %p1, %S.ast.Node %p2, { ptr, i64, i64 } %p3, { ptr, i64, i64 } %p4) { -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 - %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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %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 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = 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 - %a200 = alloca %S.ast.Type, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca %S.ast.Type, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a264 = alloca %S.ast.Type, align 16 - %a265 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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.from8465 -logic.from8465: - br i1 %t7, label %logic.rhs8466, label %logic.end8467 -logic.rhs8466: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic8468, label %ok8469 -panic8468: - call void @finch_panic(ptr @.str.5477, i64 5125, ptr @.str.5478) - unreachable -ok8469: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 41 - %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 - store { ptr, i64, i64 } %t13, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend8470 -logic.rend8470: - br label %logic.end8467 -logic.end8467: - %t19 = phi i1 [ false, %logic.from8465 ], [ %t17, %logic.rend8470 ] - br i1 %t19, label %then8471, label %endif8473 -then8471: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Node, ptr %a3 - %t22 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.5479, i64 1, i64 0 }, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.5480, i64 39, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.5481, i64 19, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t42, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5482, i64 27, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5483, i64 5, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } %t64) - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif8473 -endif8473: - %t66 = load ptr, ptr %a1 - %t67 = load %S.gen.FnSig, ptr %a2 - %t68 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t66, %S.gen.FnSig %t67) - store { ptr, i64, i64 } { ptr @.str.5484, i64 5, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5485, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.5486, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5487, i64 2, i64 0 }, ptr %a92 - call void @finch_str_join(ptr %a93, ptr %a4, ptr %a92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t90, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t90, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.5488, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then8474, label %endif8476 -then8474: - %t109 = load ptr, ptr %a1 - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t109, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = load %S.gen.FnSig, ptr %a2 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t114, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.5489, i64 13, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.5490, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.5491, i64 3, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a139 - call void @finch_str_drop(ptr %a139) - store { ptr, i64, i64 } %t138, ptr %a140 - %t141 = load ptr, ptr %a1 - %t142 = load { ptr, i64, i64 }, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5492, i64 7, i64 0 }, ptr %a144 - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5493, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = call { ptr, i64, i64 } @finch.gen.op(ptr %t141, { ptr, i64, i64 } %t151) - store { ptr, i64, i64 } %t151, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic8477, label %ok8478 -panic8477: - call void @finch_panic(ptr @.str.5494, i64 5132, ptr @.str.5495) - unreachable -ok8478: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 42 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t152, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a1 - %t161 = load %S.gen.FnSig, ptr %a2 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t160, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.5496, i64 13, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.5497, i64 1, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5498, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t159, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic8479, label %ok8480 -panic8479: - call void @finch_panic(ptr @.str.5499, i64 5133, ptr @.str.5500) - unreachable -ok8480: - %t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 43 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t184, ptr %t188 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t192 = getelementptr inbounds %S.ast.Type, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5501, i64 4, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then8481, label %endif8483 -then8481: - %t198 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t199 = load %S.ast.Type, ptr %t198 - store %S.ast.Type %t199, ptr %a200 - call void @finch.copy.S_ast_Type(ptr %a201, ptr %a200) - %t202 = load %S.ast.Type, ptr %a201 - %t203 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t202, 1 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t203 -endif8483: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.gen.FnSig, ptr %a2 - %t207 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t205, %S.gen.FnSig %t206) - store { ptr, i64, i64 } { ptr @.str.5502, i64 13, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t212, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.5503, i64 1, i64 0 }, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t217, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.5504, i64 3, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t232 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t233 = load %S.ast.Type, ptr %t232 - store %S.ast.Type %t233, ptr %a234 - call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) - %t236 = load %S.ast.Type, ptr %a235 - %t237 = insertvalue %S.gen.Val %t231, %S.ast.Type %t236, 1 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t240 = load %S.ast.Type, ptr %t239 - %t241 = call i1 @finch.gen.owning(ptr %t238, %S.ast.Type %t240) - %t242 = insertvalue %S.gen.Val %t237, i1 %t241, 2 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t242 -endif8476: - %t243 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i32 0, i32 0 - %t245 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t245, ptr %a246 - store { ptr, i64, i64 } { ptr @.str.5505, i64 4, i64 0 }, ptr %a247 - %t248 = call i32 @finch_str_eq(ptr %a246, ptr %a247) - %t249 = icmp ne i32 %t248, 0 - br i1 %t249, label %then8484, label %endif8486 -then8484: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t253 = load %S.ast.Type, ptr %t252 - store %S.ast.Type %t253, ptr %a254 - call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) - %t256 = load %S.ast.Type, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t256, 1 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t257 -endif8486: - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a106 - %t260 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t259) - %t261 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t260, 0 - %t262 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t263 = load %S.ast.Type, ptr %t262 - store %S.ast.Type %t263, ptr %a264 - call void @finch.copy.S_ast_Type(ptr %a265, ptr %a264) - %t266 = load %S.ast.Type, ptr %a265 - %t267 = insertvalue %S.gen.Val %t261, %S.ast.Type %t266, 1 - %t268 = load ptr, ptr %a1 - %t269 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t268, %S.ast.Type %t270) - %t272 = insertvalue %S.gen.Val %t267, i1 %t271, 2 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t272 -} - -define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { -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 - %a47 = alloca %S.ast.Node, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca i1, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca i64, align 16 - %a95 = alloca i64, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca i64, align 16 - %a196 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca i64, align 16 - %a294 = alloca i64, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a306 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.gen.Val, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca %S.gen.Val, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca %S.gen.Val, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca %S.gen.Val, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca %S.gen.Val, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a522 = 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 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca %S.ast.Type, align 16 - %a562 = alloca %S.ast.Type, align 16 - %a566 = alloca %S.gen.Val, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.ast.Type, align 16 - %a645 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic8487, label %ok8488 -panic8487: - call void @finch_panic(ptr @.str.5506, i64 5147, ptr @.str.5507) - unreachable -ok8488: - %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 %range8489, label %inrange8490 -range8489: - call void @finch_panic_index(ptr @.str.5508, i64 5147, i64 %t9, i64 %t11) - unreachable -inrange8490: - %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 %then8491, label %endif8493 -then8491: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic8494, label %ok8495 -panic8494: - call void @finch_panic(ptr @.str.5509, i64 5150, ptr @.str.5510) - unreachable -ok8495: - %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 %range8496, label %inrange8497 -range8496: - call void @finch_panic_index(ptr @.str.5511, i64 5150, i64 %t28, i64 %t30) - unreachable -inrange8497: - %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 %range8498, label %inrange8499 -range8498: - call void @finch_panic_index(ptr @.str.5512, i64 5150, i64 %t36, i64 %t38) - unreachable -inrange8499: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 - %t42 = load %S.ast.Node, ptr %t41 - store %S.ast.Node %t42, ptr %a43 - call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43) - %t45 = load %S.ast.Node, ptr %a44 - %t46 = load %S.ast.Node, ptr %a20 - store %S.ast.Node %t45, ptr %a20 - store %S.ast.Node %t46, ptr %a47 - call void @finch.drop.S_ast_Node(ptr %a47) - br label %endif8493 -endif8493: - %t48 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5513, i64 6, i64 0 }, 0 - %t49 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_copy(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = insertvalue %S.ast.Type %t48, { ptr, i64, i64 } %t53, 2 - %t55 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - %t60 = insertvalue %S.ast.Type %t54, { ptr, i64, i64 } %t59, 3 - store %S.ast.Type %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load %S.ast.Type, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t62, %S.ast.Type %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t67 = load i64, ptr %t66 - %t68 = icmp sgt i64 %t67, 0 - br label %logic.from8500 -logic.from8500: - br i1 %t68, label %logic.rhs8501, label %logic.end8502 -logic.rhs8501: - %t69 = load { ptr, i64, i64 }, ptr %a4 - %t70 = extractvalue { ptr, i64, i64 } %t69, 1 - %t71 = icmp uge i64 0, %t70 - br i1 %t71, label %range8503, label %inrange8504 -range8503: - call void @finch_panic_index(ptr @.str.5514, i64 5154, i64 0, i64 %t70) - unreachable -inrange8504: - %t72 = extractvalue { ptr, i64, i64 } %t69, 0 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i64 0 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 - %t75 = load i64, ptr %t74 - %t76 = icmp sgt i64 %t75, 0 - br label %logic.rend8505 -logic.rend8505: - br label %logic.end8502 -logic.end8502: - %t77 = phi i1 [ false, %logic.from8500 ], [ %t76, %logic.rend8505 ] - store i1 %t77, ptr %a78 - store { ptr, i64, i64 } zeroinitializer, ptr %a79 - %t80 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1 - %t82 = load i64, ptr %t81 - store i64 0, ptr %a83 - br label %for.cond8506 -for.cond8506: - %t84 = load i64, ptr %a83 - %t85 = icmp slt i64 %t84, %t82 - br i1 %t85, label %for.body8507, label %for.end8509 -for.body8507: - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %a79, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %a79, i64 %t88, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %a79 - %t90 = getelementptr inbounds i64, ptr %t89, i64 %t87 - store i64 -1, ptr %t90 - store i64 %t88, ptr %t86 - br label %for.step8508 -for.step8508: - %t91 = load i64, ptr %a83 - %t92 = add i64 %t91, 1 - store i64 %t92, ptr %a83 - br label %for.cond8506 -for.end8509: - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t94 = load i64, ptr %t93 - store i64 0, ptr %a95 - br label %for.cond8510 -for.cond8510: - %t96 = load i64, ptr %a95 - %t97 = icmp slt i64 %t96, %t94 - br i1 %t97, label %for.body8511, label %for.end8513 -for.body8511: - %t98 = load i64, ptr %a95 - %t99 = load { ptr, i64, i64 }, ptr %a4 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range8514, label %inrange8515 -range8514: - call void @finch_panic_index(ptr @.str.5515, i64 5160, i64 %t98, i64 %t100) - unreachable -inrange8515: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp sgt i64 %t105, 0 - %t107 = load i1, ptr %a78 - %t108 = icmp ne i1 %t106, %t107 - br i1 %t108, label %then8516, label %endif8518 -then8516: - %t109 = load ptr, ptr %a1 - %t110 = load i64, ptr %a95 - %t111 = load { ptr, i64, i64 }, ptr %a3 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range8519, label %inrange8520 -range8519: - call void @finch_panic_index(ptr @.str.5516, i64 5161, i64 %t110, i64 %t112) - unreachable -inrange8520: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 %t110 - %t116 = load %S.ast.Node, ptr %t115 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t116, { ptr, i64, i64 } { ptr @.str.5517, i64 69, i64 0 }) - br label %endif8518 -endif8518: - %t117 = load i1, ptr %a78 - %t118 = xor i1 %t117, true - br i1 %t118, label %then8521, label %endif8523 -then8521: - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t120 = load i64, ptr %t119 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = icmp ne i64 %t120, %t123 - br i1 %t124, label %then8524, label %endif8526 -then8524: - %t125 = load ptr, ptr %a1 - %t126 = load %S.ast.Node, ptr %a5 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5518, i64 5, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a129 - %t133 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - call void @finch_str_from_int(ptr %a136, i64 %t135) - %t137 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t132, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t132, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5519, i64 17, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t150 = load i64, ptr %t149 - call void @finch_str_from_int(ptr %a151, i64 %t150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t148, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t148, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t152, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.5520, i64 23, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t163, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t163, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5521, i64 15, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch.gen.fail(ptr %t125, %S.ast.Node %t126, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif8526 -endif8526: - %t177 = load i64, ptr %a95 - %t178 = load i64, ptr %a95 - %t179 = load { ptr, i64, i64 }, ptr %a79 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range8527, label %inrange8528 -range8527: - call void @finch_panic_index(ptr @.str.5522, i64 5167, i64 %t178, i64 %t180) - unreachable -inrange8528: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 - store i64 %t177, ptr %t183 - br label %for.step8512 -endif8523: - %t184 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i32 0, i32 1 - %t186 = load i64, ptr %a95 - %t187 = load { ptr, i64, i64 }, ptr %a4 - %t188 = extractvalue { ptr, i64, i64 } %t187, 1 - %t189 = icmp uge i64 %t186, %t188 - br i1 %t189, label %range8529, label %inrange8530 -range8529: - call void @finch_panic_index(ptr @.str.5523, i64 5170, i64 %t186, i64 %t188) - unreachable -inrange8530: - %t190 = extractvalue { ptr, i64, i64 } %t187, 0 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t186 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store i64 -1, ptr %a193 - %t194 = load i64, ptr %t185 - %t195 = load ptr, ptr %t184 - store i64 0, ptr %a196 - br label %find.cond8531 -find.cond8531: - %t197 = load i64, ptr %a196 - %t198 = icmp slt i64 %t197, %t194 - br i1 %t198, label %find.body8532, label %find.end8535 -find.body8532: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i64 %t197 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - store { ptr, i64, i64 } %t192, ptr %a202 - %t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202) - %t204 = icmp ne i32 %t203, 0 - br i1 %t204, label %find.hit8533, label %find.next8534 -find.hit8533: - store i64 %t197, ptr %a193 - br label %find.end8535 -find.next8534: - %t205 = add i64 %t197, 1 - store i64 %t205, ptr %a196 - br label %find.cond8531 -find.end8535: - %t206 = load i64, ptr %a193 - store i64 %t206, ptr %a207 - %t208 = load i64, ptr %a207 - %t209 = icmp slt i64 %t208, 0 - br i1 %t209, label %then8536, label %endif8538 -then8536: - %t210 = load ptr, ptr %a1 - %t211 = load i64, ptr %a95 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range8539, label %inrange8540 -range8539: - call void @finch_panic_index(ptr @.str.5524, i64 5172, i64 %t211, i64 %t213) - unreachable -inrange8540: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.5525, i64 15, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load i64, ptr %a95 - %t225 = load { ptr, i64, i64 }, ptr %a4 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range8541, label %inrange8542 -range8541: - call void @finch_panic_index(ptr @.str.5526, i64 5172, i64 %t224, i64 %t226) - unreachable -inrange8542: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i64 %t224 - %t230 = load { ptr, i64, i64 }, ptr %t229 - store { ptr, i64, i64 } %t223, ptr %a232 - store { ptr, i64, i64 } %t230, ptr %a233 - call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) - store { ptr, i64, i64 } %t223, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.5527, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_drop(ptr %a241) - br label %endif8538 -endif8538: - %t242 = load i64, ptr %a207 - %t243 = load { ptr, i64, i64 }, ptr %a79 - %t244 = extractvalue { ptr, i64, i64 } %t243, 1 - %t245 = icmp uge i64 %t242, %t244 - br i1 %t245, label %range8543, label %inrange8544 -range8543: - call void @finch_panic_index(ptr @.str.5528, i64 5174, i64 %t242, i64 %t244) - unreachable -inrange8544: - %t246 = extractvalue { ptr, i64, i64 } %t243, 0 - %t247 = getelementptr inbounds i64, ptr %t246, i64 %t242 - %t248 = load i64, ptr %t247 - %t249 = icmp sge i64 %t248, 0 - br i1 %t249, label %then8545, label %endif8547 -then8545: - %t250 = load ptr, ptr %a1 - %t251 = load i64, ptr %a95 - %t252 = load { ptr, i64, i64 }, ptr %a3 - %t253 = extractvalue { ptr, i64, i64 } %t252, 1 - %t254 = icmp uge i64 %t251, %t253 - br i1 %t254, label %range8548, label %inrange8549 -range8548: - call void @finch_panic_index(ptr @.str.5529, i64 5175, i64 %t251, i64 %t253) - unreachable -inrange8549: - %t255 = extractvalue { ptr, i64, i64 } %t252, 0 - %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 - %t257 = load %S.ast.Node, ptr %t256 - %t258 = load i64, ptr %a95 - %t259 = load { ptr, i64, i64 }, ptr %a4 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range8550, label %inrange8551 -range8550: - call void @finch_panic_index(ptr @.str.5531, i64 5175, i64 %t258, i64 %t260) - unreachable -inrange8551: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 %t258 - %t264 = load { ptr, i64, i64 }, ptr %t263 - store { ptr, i64, i64 } { ptr @.str.5530, i64 11, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.5532, i64 16, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.fail(ptr %t250, %S.ast.Node %t257, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif8547 -endif8547: - %t275 = load i64, ptr %a95 - %t276 = load i64, ptr %a207 - %t277 = load { ptr, i64, i64 }, ptr %a79 - %t278 = extractvalue { ptr, i64, i64 } %t277, 1 - %t279 = icmp uge i64 %t276, %t278 - br i1 %t279, label %range8552, label %inrange8553 -range8552: - call void @finch_panic_index(ptr @.str.5533, i64 5177, i64 %t276, i64 %t278) - unreachable -inrange8553: - %t280 = extractvalue { ptr, i64, i64 } %t277, 0 - %t281 = getelementptr inbounds i64, ptr %t280, i64 %t276 - store i64 %t275, ptr %t281 - br label %for.step8512 -for.step8512: - %t282 = load i64, ptr %a95 - %t283 = add i64 %t282, 1 - store i64 %t283, ptr %a95 - br label %for.cond8510 -for.end8513: - store { ptr, i64, i64 } { ptr @.str.5534, i64 15, i64 0 }, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = icmp eq ptr %t285, null - br i1 %t286, label %panic8554, label %ok8555 -panic8554: - call void @finch_panic(ptr @.str.5535, i64 5180, ptr @.str.5536) - unreachable -ok8555: - %t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 11 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 - %t289 = load i64, ptr %t288 - store i64 %t289, ptr %a290 - %t291 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i32 0, i32 1 - %t293 = load i64, ptr %t292 - store i64 0, ptr %a294 - br label %for.cond8556 -for.cond8556: - %t295 = load i64, ptr %a294 - %t296 = icmp slt i64 %t295, %t293 - br i1 %t296, label %for.body8557, label %for.end8559 -for.body8557: - %t297 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 - %t298 = load i64, ptr %a294 - %t299 = load { ptr, i64, i64 }, ptr %t297 - %t300 = extractvalue { ptr, i64, i64 } %t299, 1 - %t301 = icmp uge i64 %t298, %t300 - br i1 %t301, label %range8560, label %inrange8561 -range8560: - call void @finch_panic_index(ptr @.str.5537, i64 5182, i64 %t298, i64 %t300) - unreachable -inrange8561: - %t302 = extractvalue { ptr, i64, i64 } %t299, 0 - %t303 = getelementptr inbounds %S.ast.Type, ptr %t302, i64 %t298 - %t304 = load %S.ast.Type, ptr %t303 - store %S.ast.Type %t304, ptr %a305 - call void @finch.copy.S_ast_Type(ptr %a306, ptr %a305) - %t307 = load %S.ast.Type, ptr %a306 - store %S.ast.Type %t307, ptr %a308 - store %S.gen.Val zeroinitializer, ptr %a309 - %t310 = load i64, ptr %a294 - %t311 = load { ptr, i64, i64 }, ptr %a79 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range8562, label %inrange8563 -range8562: - call void @finch_panic_index(ptr @.str.5538, i64 5184, i64 %t310, i64 %t312) - unreachable -inrange8563: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds i64, ptr %t314, i64 %t310 - %t316 = load i64, ptr %t315 - %t317 = icmp sge i64 %t316, 0 - br i1 %t317, label %then8564, label %else8565 -then8564: - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load i64, ptr %a294 - %t321 = load { ptr, i64, i64 }, ptr %a79 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range8567, label %inrange8568 -range8567: - call void @finch_panic_index(ptr @.str.5539, i64 5185, i64 %t320, i64 %t322) - unreachable -inrange8568: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds i64, ptr %t324, i64 %t320 - %t326 = load i64, ptr %t325 - %t327 = load { ptr, i64, i64 }, ptr %a3 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range8569, label %inrange8570 -range8569: - call void @finch_panic_index(ptr @.str.5540, i64 5185, i64 %t326, i64 %t328) - unreachable -inrange8570: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - %t333 = load %S.ast.Type, ptr %a308 - %t334 = call %S.gen.Val @finch.gen.exprWant(ptr %t319, %S.ast.Node %t332, %S.ast.Type %t333) - %t335 = load %S.ast.Type, ptr %a308 - %t336 = load i64, ptr %a294 - %t337 = load { ptr, i64, i64 }, ptr %a79 - %t338 = extractvalue { ptr, i64, i64 } %t337, 1 - %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range8571, label %inrange8572 -range8571: - call void @finch_panic_index(ptr @.str.5541, i64 5185, i64 %t336, i64 %t338) - unreachable -inrange8572: - %t340 = extractvalue { ptr, i64, i64 } %t337, 0 - %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 - %t342 = load i64, ptr %t341 - %t343 = load { ptr, i64, i64 }, ptr %a3 - %t344 = extractvalue { ptr, i64, i64 } %t343, 1 - %t345 = icmp uge i64 %t342, %t344 - br i1 %t345, label %range8573, label %inrange8574 -range8573: - call void @finch_panic_index(ptr @.str.5542, i64 5185, i64 %t342, i64 %t344) - unreachable -inrange8574: - %t346 = extractvalue { ptr, i64, i64 } %t343, 0 - %t347 = getelementptr inbounds %S.ast.Node, ptr %t346, i64 %t342 - %t348 = load %S.ast.Node, ptr %t347 - %t349 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t350 = load i64, ptr %a294 - %t351 = load { ptr, i64, i64 }, ptr %t349 - %t352 = extractvalue { ptr, i64, i64 } %t351, 1 - %t353 = icmp uge i64 %t350, %t352 - br i1 %t353, label %range8575, label %inrange8576 -range8575: - call void @finch_panic_index(ptr @.str.5544, i64 5185, i64 %t350, i64 %t352) - unreachable -inrange8576: - %t354 = extractvalue { ptr, i64, i64 } %t351, 0 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i64 %t350 - %t356 = load { ptr, i64, i64 }, ptr %t355 - store { ptr, i64, i64 } { ptr @.str.5543, i64 11, i64 0 }, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t360, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.5545, i64 1, i64 0 }, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t360, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - %t366 = call %S.gen.Val @finch.gen.coerce(ptr %t318, %S.gen.Val %t334, %S.ast.Type %t335, %S.ast.Node %t348, { ptr, i64, i64 } %t365) - store %S.gen.Val %t334, ptr %a367 - call void @finch.drop.S_gen_Val(ptr %a367) - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t366, ptr %a309 - store %S.gen.Val %t369, ptr %a370 - call void @finch.drop.S_gen_Val(ptr %a370) - br label %endif8566 -else8565: - %t371 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 - %t372 = load i1, ptr %t371 - %t373 = xor i1 %t372, true - br label %logic.from8577 -logic.from8577: - br i1 %t373, label %logic.rhs8578, label %logic.end8579 -logic.rhs8578: - %t374 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t375 = load i64, ptr %a294 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range8580, label %inrange8581 -range8580: - call void @finch_panic_index(ptr @.str.5546, i64 5186, i64 %t375, i64 %t377) - unreachable -inrange8581: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.ast.Node, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.ast.Node, ptr %t380, i32 0, i32 9 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t381, i32 0, i32 1 - %t383 = load i64, ptr %t382 - %t384 = icmp sgt i64 %t383, 0 - br label %logic.rend8582 -logic.rend8582: - br label %logic.end8579 -logic.end8579: - %t385 = phi i1 [ false, %logic.from8577 ], [ %t384, %logic.rend8582 ] - br i1 %t385, label %then8583, label %else8584 -then8583: - %t386 = load ptr, ptr %a1 - %t387 = icmp eq ptr %t386, null - br i1 %t387, label %panic8586, label %ok8587 -panic8586: - call void @finch_panic(ptr @.str.5547, i64 5188, ptr @.str.5548) - unreachable -ok8587: - %t388 = getelementptr inbounds %S.gen.Gen, ptr %t386, i32 0, i32 10 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch.copy.arr_S_gen_Scope(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = icmp eq ptr %t394, null - br i1 %t395, label %panic8588, label %ok8589 -panic8588: - call void @finch_panic(ptr @.str.5549, i64 5189, ptr @.str.5550) - unreachable -ok8589: - %t396 = getelementptr inbounds %S.gen.Gen, ptr %t394, i32 0, i32 14 - %t397 = load { ptr, i64, i64 }, ptr %t396 - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_copy(ptr %a399, ptr %a398) - %t400 = load { ptr, i64, i64 }, ptr %a399 - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load ptr, ptr %a1 - %t403 = icmp eq ptr %t402, null - br i1 %t403, label %panic8590, label %ok8591 -panic8590: - call void @finch_panic(ptr @.str.5551, i64 5190, ptr @.str.5552) - unreachable -ok8591: - %t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 18 - %t405 = load { ptr, i64, i64 }, ptr %t404 - store { ptr, i64, i64 } %t405, ptr %a406 - call void @finch.copy.arr_str(ptr %a407, ptr %a406) - %t408 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t408, ptr %a409 - %t410 = load ptr, ptr %a1 - %t411 = icmp eq ptr %t410, null - br i1 %t411, label %panic8592, label %ok8593 -panic8592: - call void @finch_panic(ptr @.str.5553, i64 5191, ptr @.str.5554) - unreachable -ok8593: - %t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 19 - %t413 = load { ptr, i64, i64 }, ptr %t412 - store { ptr, i64, i64 } %t413, ptr %a414 - call void @finch.copy.arr_S_ast_Type(ptr %a415, ptr %a414) - %t416 = load { ptr, i64, i64 }, ptr %a415 - store { ptr, i64, i64 } %t416, ptr %a417 - %t418 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 - %t419 = load { ptr, i64, i64 }, ptr %t418 - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic8594, label %ok8595 -panic8594: - call void @finch_panic(ptr @.str.5555, i64 5192, ptr @.str.5556) - unreachable -ok8595: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 18 - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch.copy.arr_str(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t425, ptr %t422 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch.drop.arr_str(ptr %a427) - %t428 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 - %t429 = load { ptr, i64, i64 }, ptr %t428 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic8596, label %ok8597 -panic8596: - call void @finch_panic(ptr @.str.5557, i64 5193, ptr @.str.5558) - unreachable -ok8597: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 19 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch.copy.arr_S_ast_Type(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch.drop.arr_S_ast_Type(ptr %a437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - %t439 = load { ptr, i64, i64 }, ptr %a438 - %t440 = load ptr, ptr %a1 - %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic8598, label %ok8599 -panic8598: - call void @finch_panic(ptr @.str.5559, i64 5195, ptr @.str.5560) - unreachable -ok8599: - %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 10 - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch.copy.arr_S_gen_Scope(ptr %a444, ptr %a443) - %t445 = load { ptr, i64, i64 }, ptr %a444 - %t446 = load { ptr, i64, i64 }, ptr %t442 - store { ptr, i64, i64 } %t445, ptr %t442 - store { ptr, i64, i64 } %t446, ptr %a447 - call void @finch.drop.arr_S_gen_Scope(ptr %a447) - %t448 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t448) - %t449 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t450 = load { ptr, i64, i64 }, ptr %t449 - %t451 = load ptr, ptr %a1 - %t452 = icmp eq ptr %t451, null - br i1 %t452, label %panic8600, label %ok8601 -panic8600: - call void @finch_panic(ptr @.str.5561, i64 5197, ptr @.str.5562) - unreachable -ok8601: - %t453 = getelementptr inbounds %S.gen.Gen, ptr %t451, i32 0, i32 14 - store { ptr, i64, i64 } %t450, ptr %a454 - call void @finch_str_copy(ptr %a455, ptr %a454) - %t456 = load { ptr, i64, i64 }, ptr %a455 - %t457 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t456, ptr %t453 - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - %t459 = load ptr, ptr %a1 - %t460 = load ptr, ptr %a1 - %t461 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t462 = load i64, ptr %a294 - %t463 = load { ptr, i64, i64 }, ptr %t461 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = icmp uge i64 %t462, %t464 - br i1 %t465, label %range8602, label %inrange8603 -range8602: - call void @finch_panic_index(ptr @.str.5563, i64 5198, i64 %t462, i64 %t464) - unreachable -inrange8603: - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = getelementptr inbounds %S.ast.Node, ptr %t466, i64 %t462 - %t468 = getelementptr inbounds %S.ast.Node, ptr %t467, i32 0, i32 9 - %t469 = load { ptr, i64, i64 }, ptr %t468 - %t470 = extractvalue { ptr, i64, i64 } %t469, 1 - %t471 = icmp uge i64 0, %t470 - br i1 %t471, label %range8604, label %inrange8605 -range8604: - call void @finch_panic_index(ptr @.str.5564, i64 5198, i64 0, i64 %t470) - unreachable -inrange8605: - %t472 = extractvalue { ptr, i64, i64 } %t469, 0 - %t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 0 - %t474 = load %S.ast.Node, ptr %t473 - %t475 = load %S.ast.Type, ptr %a308 - %t476 = call %S.gen.Val @finch.gen.exprWant(ptr %t460, %S.ast.Node %t474, %S.ast.Type %t475) - %t477 = load %S.ast.Type, ptr %a308 - %t478 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t479 = load i64, ptr %a294 - %t480 = load { ptr, i64, i64 }, ptr %t478 - %t481 = extractvalue { ptr, i64, i64 } %t480, 1 - %t482 = icmp uge i64 %t479, %t481 - br i1 %t482, label %range8606, label %inrange8607 -range8606: - call void @finch_panic_index(ptr @.str.5565, i64 5198, i64 %t479, i64 %t481) - unreachable -inrange8607: - %t483 = extractvalue { ptr, i64, i64 } %t480, 0 - %t484 = getelementptr inbounds %S.ast.Node, ptr %t483, i64 %t479 - %t485 = getelementptr inbounds %S.ast.Node, ptr %t484, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range8608, label %inrange8609 -range8608: - call void @finch_panic_index(ptr @.str.5566, i64 5198, i64 0, i64 %t487) - unreachable -inrange8609: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t493 = load i64, ptr %a294 - %t494 = load { ptr, i64, i64 }, ptr %t492 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 %t493, %t495 - br i1 %t496, label %range8610, label %inrange8611 -range8610: - call void @finch_panic_index(ptr @.str.5568, i64 5198, i64 %t493, i64 %t495) - unreachable -inrange8611: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t493 - %t499 = load { ptr, i64, i64 }, ptr %t498 - store { ptr, i64, i64 } { ptr @.str.5567, i64 16, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5569, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call %S.gen.Val @finch.gen.coerce(ptr %t459, %S.gen.Val %t476, %S.ast.Type %t477, %S.ast.Node %t491, { ptr, i64, i64 } %t508) - store %S.gen.Val %t476, ptr %a510 - call void @finch.drop.S_gen_Val(ptr %a510) - store { ptr, i64, i64 } %t508, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t509, ptr %a309 - store %S.gen.Val %t512, ptr %a513 - call void @finch.drop.S_gen_Val(ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a401 - %t515 = load ptr, ptr %a1 - %t516 = icmp eq ptr %t515, null - br i1 %t516, label %panic8612, label %ok8613 -panic8612: - call void @finch_panic(ptr @.str.5570, i64 5199, ptr @.str.5571) - unreachable -ok8613: - %t517 = getelementptr inbounds %S.gen.Gen, ptr %t515, i32 0, i32 14 - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_copy(ptr %a519, ptr %a518) - %t520 = load { ptr, i64, i64 }, ptr %a519 - %t521 = load { ptr, i64, i64 }, ptr %t517 - store { ptr, i64, i64 } %t520, ptr %t517 - store { ptr, i64, i64 } %t521, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a409 - %t524 = load ptr, ptr %a1 - %t525 = icmp eq ptr %t524, null - br i1 %t525, label %panic8614, label %ok8615 -panic8614: - call void @finch_panic(ptr @.str.5572, i64 5200, ptr @.str.5573) - unreachable -ok8615: - %t526 = getelementptr inbounds %S.gen.Gen, ptr %t524, i32 0, i32 18 - store { ptr, i64, i64 } %t523, ptr %a527 - call void @finch.copy.arr_str(ptr %a528, ptr %a527) - %t529 = load { ptr, i64, i64 }, ptr %a528 - %t530 = load { ptr, i64, i64 }, ptr %t526 - store { ptr, i64, i64 } %t529, ptr %t526 - store { ptr, i64, i64 } %t530, ptr %a531 - call void @finch.drop.arr_str(ptr %a531) - %t532 = load { ptr, i64, i64 }, ptr %a417 - %t533 = load ptr, ptr %a1 - %t534 = icmp eq ptr %t533, null - br i1 %t534, label %panic8616, label %ok8617 -panic8616: - call void @finch_panic(ptr @.str.5574, i64 5201, ptr @.str.5575) - unreachable -ok8617: - %t535 = getelementptr inbounds %S.gen.Gen, ptr %t533, i32 0, i32 19 - store { ptr, i64, i64 } %t532, ptr %a536 - call void @finch.copy.arr_S_ast_Type(ptr %a537, ptr %a536) - %t538 = load { ptr, i64, i64 }, ptr %a537 - %t539 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t538, ptr %t535 - store { ptr, i64, i64 } %t539, ptr %a540 - call void @finch.drop.arr_S_ast_Type(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a393 - %t542 = load ptr, ptr %a1 - %t543 = icmp eq ptr %t542, null - br i1 %t543, label %panic8618, label %ok8619 -panic8618: - call void @finch_panic(ptr @.str.5576, i64 5202, ptr @.str.5577) - unreachable -ok8619: - %t544 = getelementptr inbounds %S.gen.Gen, ptr %t542, i32 0, i32 10 - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch.copy.arr_S_gen_Scope(ptr %a546, ptr %a545) - %t547 = load { ptr, i64, i64 }, ptr %a546 - %t548 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t547, ptr %t544 - store { ptr, i64, i64 } %t548, ptr %a549 - call void @finch.drop.arr_S_gen_Scope(ptr %a549) - call void @finch.drop.arr_S_gen_Scope(ptr %a438) - call void @finch.drop.arr_S_ast_Type(ptr %a417) - call void @finch.drop.arr_str(ptr %a409) - call void @finch_str_drop(ptr %a401) - call void @finch.drop.arr_S_gen_Scope(ptr %a393) - br label %endif8585 -else8584: - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -endif8585: - br label %endif8566 -endif8566: - %t550 = load ptr, ptr %a1 - %t551 = load %S.gen.Val, ptr %a309 - %t552 = call { ptr, i64, i64 } @finch.gen.own(ptr %t550, %S.gen.Val %t551) - store { ptr, i64, i64 } %t552, ptr %a553 - %t554 = load ptr, ptr %a1 - %t555 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t555, ptr %a556 - call void @finch_str_copy(ptr %a557, ptr %a556) - %t558 = load { ptr, i64, i64 }, ptr %a557 - %t559 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t558, 0 - %t560 = load %S.ast.Type, ptr %a308 - store %S.ast.Type %t560, ptr %a561 - call void @finch.copy.S_ast_Type(ptr %a562, ptr %a561) - %t563 = load %S.ast.Type, ptr %a562 - %t564 = insertvalue %S.gen.Val %t559, %S.ast.Type %t563, 1 - %t565 = insertvalue %S.gen.Val %t564, i1 true, 2 - call void @finch.gen.hold(ptr %t554, %S.gen.Val %t565) - store %S.gen.Val %t565, ptr %a566 - call void @finch.drop.S_gen_Val(ptr %a566) - %t567 = load ptr, ptr %a1 - %t568 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.5578, i64 12, i64 0 }, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - %t572 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t572, ptr %a574 - store { ptr, i64, i64 } { ptr @.str.5579, i64 1, i64 0 }, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - %t578 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t577, ptr %a580 - store { ptr, i64, i64 } %t578, ptr %a581 - call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581) - store { ptr, i64, i64 } %t577, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a579 - store { ptr, i64, i64 } %t583, ptr %a585 - store { ptr, i64, i64 } { ptr @.str.5580, i64 2, i64 0 }, ptr %a586 - call void @finch_str_concat(ptr %a584, ptr %a585, ptr %a586) - store { ptr, i64, i64 } %t583, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a584 - %t589 = load ptr, ptr %a1 - %t590 = load %S.ast.Type, ptr %a308 - %t591 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t589, %S.ast.Type %t590) - store { ptr, i64, i64 } %t588, ptr %a593 - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594) - store { ptr, i64, i64 } %t588, ptr %a595 - call void @finch_str_drop(ptr %a595) - store { ptr, i64, i64 } %t591, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t597, ptr %a599 - store { ptr, i64, i64 } { ptr @.str.5581, i64 1, i64 0 }, ptr %a600 - call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600) - store { ptr, i64, i64 } %t597, ptr %a601 - call void @finch_str_drop(ptr %a601) - %t602 = load { ptr, i64, i64 }, ptr %a598 - %t603 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t602, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - store { ptr, i64, i64 } %t602, ptr %a607 - call void @finch_str_drop(ptr %a607) - %t608 = load { ptr, i64, i64 }, ptr %a604 - store { ptr, i64, i64 } %t608, ptr %a610 - store { ptr, i64, i64 } { ptr @.str.5582, i64 2, i64 0 }, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t608, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3 - %t615 = load i64, ptr %a294 - %t616 = load { ptr, i64, i64 }, ptr %t614 - %t617 = extractvalue { ptr, i64, i64 } %t616, 1 - %t618 = icmp uge i64 %t615, %t617 - br i1 %t618, label %range8620, label %inrange8621 -range8620: - call void @finch_panic_index(ptr @.str.5583, i64 5208, i64 %t615, i64 %t617) - unreachable -inrange8621: - %t619 = extractvalue { ptr, i64, i64 } %t616, 0 - %t620 = getelementptr inbounds i64, ptr %t619, i64 %t615 - %t621 = load i64, ptr %t620 - call void @finch_str_from_int(ptr %a622, i64 %t621) - %t623 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t613, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t613, ptr %a627 - call void @finch_str_drop(ptr %a627) - store { ptr, i64, i64 } %t623, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a624 - %t630 = call { ptr, i64, i64 } @finch.gen.op(ptr %t567, { ptr, i64, i64 } %t629) - store { ptr, i64, i64 } %t629, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t630, ptr %a284 - store { ptr, i64, i64 } %t632, ptr %a633 - call void @finch_str_drop(ptr %a633) - call void @finch_str_drop(ptr %a553) - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -for.step8558: - %t634 = load i64, ptr %a294 - %t635 = add i64 %t634, 1 - store i64 %t635, ptr %a294 - br label %for.cond8556 -for.end8559: - %t636 = load ptr, ptr %a1 - %t637 = load i64, ptr %a290 - call void @finch.gen.heldEnd(ptr %t636, i64 %t637) - %t638 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t638, ptr %a639 - call void @finch_str_copy(ptr %a640, ptr %a639) - %t641 = load { ptr, i64, i64 }, ptr %a640 - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t641, 0 - %t643 = load %S.ast.Type, ptr %a61 - store %S.ast.Type %t643, ptr %a644 - call void @finch.copy.S_ast_Type(ptr %a645, ptr %a644) - %t646 = load %S.ast.Type, ptr %a645 - %t647 = insertvalue %S.gen.Val %t642, %S.ast.Type %t646, 1 - %t648 = load ptr, ptr %a1 - %t649 = load %S.ast.Type, ptr %a61 - %t650 = call i1 @finch.gen.owning(ptr %t648, %S.ast.Type %t649) - %t651 = insertvalue %S.gen.Val %t647, i1 %t650, 2 - call void @finch_str_drop(ptr %a284) - call void @finch.drop.arr_int(ptr %a79) - call void @finch_str_drop(ptr %a65) - call void @finch.drop.S_ast_Type(ptr %a61) - call void @finch.drop.S_ast_Node(ptr %a20) - call void @finch.drop.S_gen_StructDef(ptr %a19) - ret %S.gen.Val %t651 -} - -define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic8622, label %ok8623 -panic8622: - call void @finch_panic(ptr @.str.5584, i64 5218, ptr @.str.5585) - unreachable -ok8623: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then8624, label %endif8626 -then8624: - ret void -endif8626: - %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 %then8627, label %endif8629 -then8627: - %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.5586, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif8629 -endif8629: - call void @finch.drop.S_docs_Doc(ptr %a13) - 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 - %a17 = alloca i64, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca i64, align 16 - %a36 = alloca %S.ast.Node, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca i64, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca i64, align 16 - %a165 = alloca i64, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca i64, align 16 - %a184 = alloca %S.ast.Node, align 16 - %a185 = alloca %S.ast.Node, 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 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a238 = 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 - %a260 = alloca %S.gen.Ref, align 16 - %a266 = alloca i64, align 16 - %a270 = alloca %S.ast.Type, align 16 - %a271 = alloca %S.ast.Type, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca i64, align 16 - %a307 = alloca i64, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = 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 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca %S.gen.Val, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca %S.gen.Val, align 16 - %a372 = alloca %S.gen.Val, align 16 - %a374 = alloca %S.gen.Val, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a389 = alloca %S.gen.Val, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = 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 - %a435 = alloca i64, align 16 - %a438 = alloca i64, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = 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 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca %S.gen.Val, align 16 - %a497 = alloca %S.ast.Type, align 16 - %a498 = alloca %S.ast.Type, align 16 - %a500 = alloca %S.ast.Type, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca i1, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca %S.ast.Type, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a582 = alloca %S.ast.Type, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca i64, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca i64, align 16 - %a686 = alloca i64, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca i64, align 16 - %a719 = alloca %S.gen.FnSig, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a792 = 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 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a802 = 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 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = 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 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a903 = alloca { ptr, i64, i64 }, align 16 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca i64, align 16 - %a923 = alloca %S.gen.Var, 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 - %a935 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a969 = alloca %S.gen.Val, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - 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 %range8630, label %inrange8631 -range8630: - call void @finch_panic_index(ptr @.str.5587, i64 5228, i64 0, i64 %t5) - unreachable -inrange8631: - %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 ptr, ptr %a1 - %t15 = load %S.ast.Node, ptr %a13 - %t16 = call i64 @finch.gen.sumNamed(ptr %t14, %S.ast.Node %t15) - store i64 %t16, ptr %a17 - %t18 = load i64, ptr %a17 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then8632, label %endif8634 -then8632: - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - store i64 1, ptr %a24 - br label %for.cond8635 -for.cond8635: - %t25 = load i64, ptr %a24 - %t26 = icmp slt i64 %t25, %t23 - br i1 %t26, label %for.body8636, label %for.end8638 -for.body8636: - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t29 = load i64, ptr %a24 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range8639, label %inrange8640 -range8639: - call void @finch_panic_index(ptr @.str.5588, i64 5233, i64 %t29, i64 %t31) - unreachable -inrange8640: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t29 - %t35 = load %S.ast.Node, ptr %t34 - store %S.ast.Node %t35, ptr %a36 - call void @finch.copy.S_ast_Node(ptr %a37, ptr %a36) - %t38 = load %S.ast.Node, ptr %a37 - %t39 = load i64, ptr %t27 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t40, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %a20 - %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39 - store %S.ast.Node %t38, ptr %t42 - store i64 %t40, ptr %t27 - br label %for.step8637 -for.step8637: - %t43 = load i64, ptr %a24 - %t44 = add i64 %t43, 1 - store i64 %t44, ptr %a24 - br label %for.cond8635 -for.end8638: - %t45 = load ptr, ptr %a1 - %t46 = load i64, ptr %a17 - %t47 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = load { ptr, i64, i64 }, ptr %a20 - %t50 = load %S.ast.Node, ptr %a2 - %t51 = call %S.gen.Val @finch.gen.sumMake(ptr %t45, i64 %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t49, %S.ast.Node %t50) - call void @finch.drop.arr_S_ast_Node(ptr %a20) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t51 -endif8634: - %t52 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.5589, i64 3, i64 0 }, ptr %a55 - %t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55) - %t57 = icmp ne i32 %t56, 0 - br label %logic.from8641 -logic.from8641: - br i1 %t57, label %logic.rhs8642, label %logic.end8643 -logic.rhs8642: - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = call i64 @finch.gen.lookup(ptr %t58, { ptr, i64, i64 } %t60) - %t62 = icmp slt i64 %t61, 0 - br label %logic.rend8644 -logic.rend8644: - br label %logic.end8643 -logic.end8643: - %t63 = phi i1 [ false, %logic.from8641 ], [ %t62, %logic.rend8644 ] - br i1 %t63, label %then8645, label %endif8647 -then8645: - %t64 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %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 - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a69 - %t72 = call i1 @finch.gen.imports(ptr %t70, { ptr, i64, i64 } %t71) - %t73 = xor i1 %t72, true - br i1 %t73, label %then8648, label %endif8650 -then8648: - %t74 = load ptr, ptr %a1 - %t75 = load %S.ast.Node, ptr %a13 - %t76 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5590, i64 38, 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.5591, i64 32, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.5592, i64 13, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif8650 -endif8650: - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - %t102 = call i64 @finch.gen.findFn(ptr %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t101) - store i64 %t102, ptr %a103 - %t104 = load i64, ptr %a103 - %t105 = icmp sge i64 %t104, 0 - br i1 %t105, label %then8651, label %endif8653 -then8651: - %t106 = load ptr, ptr %a1 - %t107 = load i64, ptr %a103 - %t108 = load %S.ast.Node, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.5593, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t113, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t113, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = call %S.gen.Val @finch.gen.callFn(ptr %t106, i64 %t107, %S.ast.Node %t108, i64 1, { ptr, i64, i64 } %t120, { ptr, i64, i64 } { ptr @.str.5594, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5595, i64 0, i64 0 }) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t121 -endif8653: - %t123 = load ptr, ptr %a1 - %t124 = load { ptr, i64, i64 }, ptr %a69 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = call i64 @finch.gen.findTemplate(ptr %t123, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } { ptr @.str.5596, i64 0, i64 0 }, i1 false) - store i64 %t127, ptr %a128 - %t129 = load i64, ptr %a128 - %t130 = icmp sge i64 %t129, 0 - br i1 %t130, label %then8654, label %endif8656 -then8654: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = load i64, ptr %a128 - %t134 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5597, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t138, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t138, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = call %S.gen.Val @finch.gen.genericCall(ptr %t131, %S.ast.Node %t132, i64 %t133, i64 1, { ptr, i64, i64 } %t145) - store { ptr, i64, i64 } %t145, ptr %a147 - call void @finch_str_drop(ptr %a147) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t146 -endif8656: - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a69 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %t150 - %t152 = call i64 @finch.gen.findEnum(ptr %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t151) - store i64 %t152, ptr %a153 - %t154 = load i64, ptr %a153 - %t155 = icmp sge i64 %t154, 0 - br i1 %t155, label %then8657, label %endif8659 -then8657: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a2 - %t158 = load i64, ptr %a153 - %t159 = call %S.gen.Val @finch.gen.enumFrom(ptr %t156, %S.ast.Node %t157, i64 %t158) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t159 -endif8659: - %t160 = load ptr, ptr %a1 - %t161 = load { ptr, i64, i64 }, ptr %a69 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = call i64 @finch.gen.findStruct(ptr %t160, { ptr, i64, i64 } %t161, { ptr, i64, i64 } %t163) - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a165 - %t167 = icmp sge i64 %t166, 0 - br i1 %t167, label %then8660, label %endif8662 -then8660: - store { ptr, i64, i64 } zeroinitializer, ptr %a168 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - store i64 1, ptr %a172 - br label %for.cond8663 -for.cond8663: - %t173 = load i64, ptr %a172 - %t174 = icmp slt i64 %t173, %t171 - br i1 %t174, label %for.body8664, label %for.end8666 -for.body8664: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t176 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t177 = load i64, ptr %a172 - %t178 = load { ptr, i64, i64 }, ptr %t176 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range8667, label %inrange8668 -range8667: - call void @finch_panic_index(ptr @.str.5598, i64 5258, i64 %t177, i64 %t179) - unreachable -inrange8668: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds %S.ast.Node, ptr %t181, i64 %t177 - %t183 = load %S.ast.Node, ptr %t182 - store %S.ast.Node %t183, ptr %a184 - call void @finch.copy.S_ast_Node(ptr %a185, ptr %a184) - %t186 = load %S.ast.Node, ptr %a185 - %t187 = load i64, ptr %t175 - %t188 = add i64 %t187, 1 - call void @finch_arr_reserve(ptr %a168, i64 %t188, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t189 = load ptr, ptr %a168 - %t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187 - store %S.ast.Node %t186, ptr %t190 - store i64 %t188, ptr %t175 - br label %for.step8665 -for.step8665: - %t191 = load i64, ptr %a172 - %t192 = add i64 %t191, 1 - store i64 %t192, ptr %a172 - br label %for.cond8663 -for.end8666: - %t193 = load ptr, ptr %a1 - %t194 = load i64, ptr %a165 - %t195 = load { ptr, i64, i64 }, ptr %a168 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load %S.ast.Node, ptr %a2 - %t199 = call %S.gen.Val @finch.gen.construct(ptr %t193, i64 %t194, { ptr, i64, i64 } %t195, { ptr, i64, i64 } %t197, %S.ast.Node %t198) - call void @finch.drop.arr_S_ast_Node(ptr %a168) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t199 -endif8662: - %t200 = load ptr, ptr %a1 - %t201 = load %S.ast.Node, ptr %a2 - %t202 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5599, i64 12, 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.5600, i64 35, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t211, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t211, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.5601, i64 1, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t200, %S.ast.Node %t201, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - call void @finch_str_drop(ptr %a69) - br label %endif8647 -endif8647: - %t225 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t226 = call ptr @finch_alloc(i64 %t225) - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 0 - store { ptr, i64, i64 } { ptr @.str.5602, i64 4, i64 0 }, ptr %t227 - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 1 - store { ptr, i64, i64 } { ptr @.str.5603, i64 3, i64 0 }, ptr %t228 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 2 - store { ptr, i64, i64 } { ptr @.str.5604, i64 6, i64 0 }, ptr %t229 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 3 - store { ptr, i64, i64 } { ptr @.str.5605, i64 6, i64 0 }, ptr %t230 - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 4 - store { ptr, i64, i64 } { ptr @.str.5606, i64 5, i64 0 }, ptr %t231 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 5 - store { ptr, i64, i64 } { ptr @.str.5607, i64 6, i64 0 }, ptr %t232 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 6 - store { ptr, i64, i64 } { ptr @.str.5608, i64 4, i64 0 }, ptr %t233 - %t234 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 7 - store { ptr, i64, i64 } { ptr @.str.5609, i64 7, i64 0 }, ptr %t234 - %t235 = insertvalue { ptr, i64, i64 } undef, ptr %t226, 0 - %t236 = insertvalue { ptr, i64, i64 } %t235, i64 8, 1 - %t237 = insertvalue { ptr, i64, i64 } %t236, i64 8, 2 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = load %S.ast.Node, ptr %a13 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, 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 %a238 - store i64 0, ptr %a247 - br label %find.cond8669 -find.cond8669: - %t248 = load i64, ptr %a247 - %t249 = icmp slt i64 %t248, %t245 - br i1 %t249, label %find.body8670, label %find.end8673 -find.body8670: - %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.hit8671, label %find.next8672 -find.hit8671: - store i64 %t248, ptr %a244 - br label %find.end8673 -find.next8672: - %t256 = add i64 %t248, 1 - store i64 %t256, ptr %a247 - br label %find.cond8669 -find.end8673: - %t257 = load i64, ptr %a244 - %t258 = icmp sge i64 %t257, 0 - %t259 = call %S.gen.Ref @finch.gen.ref(ptr %t239, %S.ast.Node %t240, i1 %t258) - store %S.gen.Ref %t259, ptr %a260 - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic8674, label %ok8675 -panic8674: - call void @finch_panic(ptr @.str.5610, i64 5266, ptr @.str.5611) - unreachable -ok8675: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - store i64 %t265, ptr %a266 - %t267 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t268 = getelementptr inbounds %S.gen.Val, ptr %t267, i32 0, i32 1 - %t269 = load %S.ast.Type, ptr %t268 - store %S.ast.Type %t269, ptr %a270 - call void @finch.copy.S_ast_Type(ptr %a271, ptr %a270) - %t272 = load %S.ast.Type, ptr %a271 - store %S.ast.Type %t272, ptr %a273 - %t274 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t275 = load i1, ptr %t274 - br i1 %t275, label %then8676, label %endif8678 -then8676: - %t276 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t277 = getelementptr inbounds %S.gen.Place, ptr %t276, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t281, ptr %a273 - store %S.ast.Type %t282, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - br label %endif8678 -endif8678: - %t284 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - store { ptr, i64, i64 } { ptr @.str.5612, i64 5, i64 0 }, ptr %a287 - %t288 = call i32 @finch_str_eq(ptr %a286, ptr %a287) - %t289 = icmp ne i32 %t288, 0 - br i1 %t289, label %then8679, label %endif8681 -then8679: - store { ptr, i64, i64 } { ptr @.str.5613, i64 0, i64 0 }, ptr %a290 - %t291 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t292 = load i1, ptr %t291 - br i1 %t292, label %then8682, label %else8683 -then8682: - %t293 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t294 = getelementptr inbounds %S.gen.Place, ptr %t293, 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 - %t299 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t298, ptr %a290 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_drop(ptr %a300) - br label %endif8684 -else8683: - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t302 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store i64 -1, ptr %a304 - %t305 = load i64, ptr %t301 - %t306 = load ptr, ptr %a238 - store i64 0, ptr %a307 - br label %find.cond8685 -find.cond8685: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t305 - br i1 %t309, label %find.body8686, label %find.end8689 -find.body8686: - %t310 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 %t308 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } %t303, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br i1 %t315, label %find.hit8687, label %find.next8688 -find.hit8687: - store i64 %t308, ptr %a304 - br label %find.end8689 -find.next8688: - %t316 = add i64 %t308, 1 - store i64 %t316, ptr %a307 - br label %find.cond8685 -find.end8689: - %t317 = load i64, ptr %a304 - %t318 = icmp sge i64 %t317, 0 - br i1 %t318, label %then8690, label %endif8692 -then8690: - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Node, ptr %a2 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.5614, i64 63, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a323 - call void @finch.gen.fail(ptr %t319, %S.ast.Node %t320, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif8692 -endif8692: - %t328 = load ptr, ptr %a1 - %t329 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t330 = load %S.gen.Val, ptr %t329 - %t331 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t328, %S.gen.Val %t330) - %t332 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t331, ptr %a290 - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t335 = getelementptr inbounds %S.gen.Val, ptr %t334, i32 0, i32 2 - %t336 = load i1, ptr %t335 - br i1 %t336, label %then8693, label %endif8695 -then8693: - %t337 = load ptr, ptr %a1 - %t338 = load { ptr, i64, i64 }, ptr %a290 - %t339 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t337, { ptr, i64, i64 } %t338, %S.ast.Type %t339) - br label %endif8695 -endif8695: - br label %endif8684 -endif8684: - %t340 = load ptr, ptr %a1 - %t341 = load %S.ast.Node, ptr %a2 - %t342 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.gen.noteMethod(ptr %t340, %S.ast.Node %t341, { ptr, i64, i64 } %t342) - store { ptr, i64, i64 } %t342, ptr %a343 - call void @finch.drop.arr_S_docs_Doc(ptr %a343) - %t344 = load ptr, ptr %a1 - %t345 = load %S.ast.Node, ptr %a2 - %t346 = load { ptr, i64, i64 }, ptr %a290 - %t347 = load %S.ast.Type, ptr %a273 - %t348 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t344, %S.ast.Node %t345, { ptr, i64, i64 } %t346, %S.ast.Type %t347) - store %S.gen.Val %t348, ptr %a349 - %t350 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t351 = load i1, ptr %t350 - %t352 = xor i1 %t351, true - br label %logic.from8696 -logic.from8696: - br i1 %t352, label %logic.rhs8697, label %logic.end8698 -logic.rhs8697: - %t353 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t354 = getelementptr inbounds %S.gen.Val, ptr %t353, i32 0, i32 2 - %t355 = load i1, ptr %t354 - br label %logic.rend8699 -logic.rend8699: - br label %logic.end8698 -logic.end8698: - %t356 = phi i1 [ false, %logic.from8696 ], [ %t355, %logic.rend8699 ] - br i1 %t356, label %then8700, label %endif8702 -then8700: - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a290 - %t359 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359) - br label %endif8702 -endif8702: - %t360 = load ptr, ptr %a1 - %t361 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t360, i64 %t361) - %t362 = load %S.gen.Val, ptr %a349 - call void @finch_str_drop(ptr %a290) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t362 -endif8681: - %t363 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5615, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then8703, label %endif8705 -then8703: - %t369 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t370 = load %S.gen.Val, ptr %t369 - store %S.gen.Val %t370, ptr %a371 - call void @finch.copy.S_gen_Val(ptr %a372, ptr %a371) - %t373 = load %S.gen.Val, ptr %a372 - store %S.gen.Val %t373, ptr %a374 - %t375 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t376 = load i1, ptr %t375 - br i1 %t376, label %then8706, label %endif8708 -then8706: - %t377 = load ptr, ptr %a1 - %t378 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t379 = getelementptr inbounds %S.gen.Place, ptr %t378, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call { ptr, i64, i64 } @finch.gen.load(ptr %t377, { ptr, i64, i64 } { ptr @.str.5616, i64 17, i64 0 }, { ptr, i64, i64 } %t380) - %t382 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t381, 0 - %t383 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t383, ptr %a384 - call void @finch.copy.S_ast_Type(ptr %a385, ptr %a384) - %t386 = load %S.ast.Type, ptr %a385 - %t387 = insertvalue %S.gen.Val %t382, %S.ast.Type %t386, 1 - %t388 = load %S.gen.Val, ptr %a374 - store %S.gen.Val %t387, ptr %a374 - store %S.gen.Val %t388, ptr %a389 - call void @finch.drop.S_gen_Val(ptr %a389) - br label %endif8708 -endif8708: - %t390 = load ptr, ptr %a1 - %t391 = load %S.ast.Node, ptr %a2 - %t392 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.gen.noteMethod(ptr %t390, %S.ast.Node %t391, { ptr, i64, i64 } %t392) - store { ptr, i64, i64 } %t392, ptr %a393 - call void @finch.drop.arr_S_docs_Doc(ptr %a393) - %t394 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t395 = load i1, ptr %t394 - %t396 = xor i1 %t395, true - br i1 %t396, label %then8709, label %endif8711 -then8709: - %t397 = load ptr, ptr %a1 - %t398 = load %S.gen.Val, ptr %a374 - call void @finch.gen.hold(ptr %t397, %S.gen.Val %t398) - br label %endif8711 -endif8711: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a2 - %t401 = load ptr, ptr %a1 - %t402 = load %S.gen.Val, ptr %a374 - %t403 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t401, %S.gen.Val %t402) - %t404 = call %S.gen.Val @finch.gen.strMethod(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t403) - store { ptr, i64, i64 } %t403, ptr %a405 - call void @finch_str_drop(ptr %a405) - store %S.gen.Val %t404, ptr %a406 - %t407 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t408 = load i1, ptr %t407 - %t409 = xor i1 %t408, true - br i1 %t409, label %then8712, label %endif8714 -then8712: - %t410 = load ptr, ptr %a1 - %t411 = load %S.gen.Val, ptr %a374 - call void @finch.gen.release(ptr %t410, %S.gen.Val %t411) - br label %endif8714 -endif8714: - %t412 = load ptr, ptr %a1 - %t413 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t412, i64 %t413) - %t414 = load %S.gen.Val, ptr %a406 - call void @finch.drop.S_gen_Val(ptr %a374) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t414 -endif8705: - %t415 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5617, i64 3, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then8715, label %endif8717 -then8715: - store { ptr, i64, i64 } { ptr @.str.5618, i64 0, i64 0 }, ptr %a421 - %t422 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t423 = load i1, ptr %t422 - br i1 %t423, label %then8718, label %else8719 -then8718: - %t424 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t425 = getelementptr inbounds %S.gen.Place, ptr %t424, i32 0, i32 0 - %t426 = load { ptr, i64, i64 }, ptr %t425 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch_str_copy(ptr %a428, ptr %a427) - %t429 = load { ptr, i64, i64 }, ptr %a428 - %t430 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t429, ptr %a421 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - br label %endif8720 -else8719: - %t432 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t433 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t434 = load { ptr, i64, i64 }, ptr %t433 - store i64 -1, ptr %a435 - %t436 = load i64, ptr %t432 - %t437 = load ptr, ptr %a238 - store i64 0, ptr %a438 - br label %find.cond8721 -find.cond8721: - %t439 = load i64, ptr %a438 - %t440 = icmp slt i64 %t439, %t436 - br i1 %t440, label %find.body8722, label %find.end8725 -find.body8722: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t437, i64 %t439 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br i1 %t446, label %find.hit8723, label %find.next8724 -find.hit8723: - store i64 %t439, ptr %a435 - br label %find.end8725 -find.next8724: - %t447 = add i64 %t439, 1 - store i64 %t447, ptr %a438 - br label %find.cond8721 -find.end8725: - %t448 = load i64, ptr %a435 - %t449 = icmp sge i64 %t448, 0 - br i1 %t449, label %then8726, label %endif8728 -then8726: - %t450 = load ptr, ptr %a1 - %t451 = load %S.ast.Node, ptr %a2 - %t452 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t453 = load { ptr, i64, i64 }, ptr %t452 - store { ptr, i64, i64 } %t453, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.5619, i64 61, i64 0 }, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a454 - call void @finch.gen.fail(ptr %t450, %S.ast.Node %t451, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - br label %endif8728 -endif8728: - %t459 = load ptr, ptr %a1 - %t460 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t461 = load %S.gen.Val, ptr %t460 - %t462 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t459, %S.gen.Val %t461) - %t463 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t462, ptr %a421 - store { ptr, i64, i64 } %t463, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t466 = getelementptr inbounds %S.gen.Val, ptr %t465, i32 0, i32 2 - %t467 = load i1, ptr %t466 - br i1 %t467, label %then8729, label %endif8731 -then8729: - %t468 = load ptr, ptr %a1 - %t469 = load { ptr, i64, i64 }, ptr %a421 - %t470 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t468, { ptr, i64, i64 } %t469, %S.ast.Type %t470) - br label %endif8731 -endif8731: - br label %endif8720 -endif8720: - %t471 = load ptr, ptr %a1 - %t472 = load %S.ast.Node, ptr %a2 - %t473 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.gen.noteMethod(ptr %t471, %S.ast.Node %t472, { ptr, i64, i64 } %t473) - store { ptr, i64, i64 } %t473, ptr %a474 - call void @finch.drop.arr_S_docs_Doc(ptr %a474) - %t475 = load ptr, ptr %a1 - %t476 = load %S.ast.Node, ptr %a2 - %t477 = load { ptr, i64, i64 }, ptr %a421 - %t478 = load %S.ast.Type, ptr %a273 - %t479 = call %S.gen.Val @finch.gen.mapMethod(ptr %t475, %S.ast.Node %t476, { ptr, i64, i64 } %t477, %S.ast.Type %t478) - store %S.gen.Val %t479, ptr %a480 - %t481 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t482 = load i1, ptr %t481 - %t483 = xor i1 %t482, true - br label %logic.from8732 -logic.from8732: - br i1 %t483, label %logic.rhs8733, label %logic.end8734 -logic.rhs8733: - %t484 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t485 = getelementptr inbounds %S.gen.Val, ptr %t484, i32 0, i32 2 - %t486 = load i1, ptr %t485 - br label %logic.rend8735 -logic.rend8735: - br label %logic.end8734 -logic.end8734: - %t487 = phi i1 [ false, %logic.from8732 ], [ %t486, %logic.rend8735 ] - br i1 %t487, label %then8736, label %endif8738 -then8736: - %t488 = load ptr, ptr %a1 - %t489 = load { ptr, i64, i64 }, ptr %a421 - %t490 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t488, { ptr, i64, i64 } %t489, %S.ast.Type %t490) - br label %endif8738 -endif8738: - %t491 = load ptr, ptr %a1 - %t492 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t491, i64 %t492) - %t493 = load %S.gen.Val, ptr %a480 - call void @finch_str_drop(ptr %a421) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t493 -endif8717: - %t494 = load ptr, ptr %a1 - %t495 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t494, i64 %t495) - %t496 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t496, ptr %a497 - call void @finch.copy.S_ast_Type(ptr %a498, ptr %a497) - %t499 = load %S.ast.Type, ptr %a498 - store %S.ast.Type %t499, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.5620, i64 0, i64 0 }, ptr %a501 - store i1 false, ptr %a502 - %t503 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t504 = load { ptr, i64, i64 }, ptr %t503 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5621, i64 3, i64 0 }, ptr %a506 - %t507 = call i32 @finch_str_eq(ptr %a505, ptr %a506) - %t508 = icmp ne i32 %t507, 0 - br label %logic.from8739 -logic.from8739: - br i1 %t508, label %logic.rhs8740, label %logic.end8741 -logic.rhs8740: - %t509 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i32 0, i32 1 - %t511 = load i64, ptr %t510 - %t512 = icmp sgt i64 %t511, 0 - br label %logic.rend8742 -logic.rend8742: - br label %logic.end8741 -logic.end8741: - %t513 = phi i1 [ false, %logic.from8739 ], [ %t512, %logic.rend8742 ] - br label %logic.from8743 -logic.from8743: - br i1 %t513, label %logic.rhs8744, label %logic.end8745 -logic.rhs8744: - %t514 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range8746, label %inrange8747 -range8746: - call void @finch_panic_index(ptr @.str.5622, i64 5333, i64 0, i64 %t516) - unreachable -inrange8747: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = getelementptr inbounds %S.ast.Type, ptr %t519, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5623, i64 6, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8748 -logic.rend8748: - br label %logic.end8745 -logic.end8745: - %t526 = phi i1 [ false, %logic.from8743 ], [ %t525, %logic.rend8748 ] - br i1 %t526, label %then8749, label %else8750 -then8749: - %t527 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t528 = getelementptr inbounds %S.gen.Val, ptr %t527, i32 0, i32 0 - %t529 = load { ptr, i64, i64 }, ptr %t528 - store { ptr, i64, i64 } %t529, ptr %a530 - call void @finch_str_copy(ptr %a531, ptr %a530) - %t532 = load { ptr, i64, i64 }, ptr %a531 - store { ptr, i64, i64 } %t532, ptr %a533 - %t534 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t535 = load i1, ptr %t534 - br i1 %t535, label %then8752, label %endif8754 -then8752: - %t536 = load ptr, ptr %a1 - %t537 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t538 = getelementptr inbounds %S.gen.Place, ptr %t537, i32 0, i32 0 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = call { ptr, i64, i64 } @finch.gen.load(ptr %t536, { ptr, i64, i64 } { ptr @.str.5624, i64 3, i64 0 }, { ptr, i64, i64 } %t539) - %t541 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t540, ptr %a533 - store { ptr, i64, i64 } %t541, ptr %a542 - call void @finch_str_drop(ptr %a542) - br label %endif8754 -endif8754: - %t543 = load ptr, ptr %a1 - %t544 = load ptr, ptr %a1 - %t545 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } { ptr @.str.5625, i64 12, i64 0 }, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a546 - store { ptr, i64, i64 } %t549, ptr %a551 - store { ptr, i64, i64 } { ptr @.str.5626, i64 6, i64 0 }, ptr %a552 - call void @finch_str_concat(ptr %a550, ptr %a551, ptr %a552) - store { ptr, i64, i64 } %t549, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a550 - %t555 = call { ptr, i64, i64 } @finch.gen.op(ptr %t544, { ptr, i64, i64 } %t554) - store { ptr, i64, i64 } %t554, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t558 = load { ptr, i64, i64 }, ptr %t557 - store { ptr, i64, i64 } { ptr @.str.5627, i64 8, i64 0 }, 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.5628, i64 20, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t543, { ptr, i64, i64 } %t555, { ptr, i64, i64 } %t567, %S.ast.Node %t568) - store { ptr, i64, i64 } %t555, ptr %a569 - call void @finch_str_drop(ptr %a569) - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t572 = load { ptr, i64, i64 }, ptr %t571 - %t573 = extractvalue { ptr, i64, i64 } %t572, 1 - %t574 = icmp uge i64 0, %t573 - br i1 %t574, label %range8755, label %inrange8756 -range8755: - call void @finch_panic_index(ptr @.str.5629, i64 5339, i64 0, i64 %t573) - unreachable -inrange8756: - %t575 = extractvalue { ptr, i64, i64 } %t572, 0 - %t576 = getelementptr inbounds %S.ast.Type, ptr %t575, i64 0 - %t577 = load %S.ast.Type, ptr %t576 - store %S.ast.Type %t577, ptr %a578 - call void @finch.copy.S_ast_Type(ptr %a579, ptr %a578) - %t580 = load %S.ast.Type, ptr %a579 - %t581 = load %S.ast.Type, ptr %a500 - store %S.ast.Type %t580, ptr %a500 - store %S.ast.Type %t581, ptr %a582 - call void @finch.drop.S_ast_Type(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t583, ptr %a584 - call void @finch_str_copy(ptr %a585, ptr %a584) - %t586 = load { ptr, i64, i64 }, ptr %a585 - %t587 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t586, ptr %a501 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_drop(ptr %a588) - call void @finch_str_drop(ptr %a533) - br label %endif8751 -else8750: - %t589 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t590 = load { ptr, i64, i64 }, ptr %t589 - store { ptr, i64, i64 } %t590, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.5630, i64 6, i64 0 }, ptr %a592 - %t593 = call i32 @finch_str_eq(ptr %a591, ptr %a592) - %t594 = icmp ne i32 %t593, 0 - br label %logic.from8757 -logic.from8757: - br i1 %t594, label %logic.end8759, label %logic.rhs8758 -logic.rhs8758: - %t595 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t596 = load { ptr, i64, i64 }, ptr %t595 - store { ptr, i64, i64 } %t596, ptr %a597 - store { ptr, i64, i64 } { ptr @.str.5631, i64 4, i64 0 }, ptr %a598 - %t599 = call i32 @finch_str_eq(ptr %a597, ptr %a598) - %t600 = icmp ne i32 %t599, 0 - br label %logic.rend8760 -logic.rend8760: - br label %logic.end8759 -logic.end8759: - %t601 = phi i1 [ true, %logic.from8757 ], [ %t600, %logic.rend8760 ] - br i1 %t601, label %then8761, label %endif8763 -then8761: - %t602 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t603 = load i1, ptr %t602 - br i1 %t603, label %then8764, label %else8765 -then8764: - %t604 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t605 = getelementptr inbounds %S.gen.Place, ptr %t604, i32 0, i32 0 - %t606 = load { ptr, i64, i64 }, ptr %t605 - store { ptr, i64, i64 } %t606, ptr %a607 - call void @finch_str_copy(ptr %a608, ptr %a607) - %t609 = load { ptr, i64, i64 }, ptr %a608 - %t610 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t609, ptr %a501 - store { ptr, i64, i64 } %t610, ptr %a611 - call void @finch_str_drop(ptr %a611) - br label %endif8766 -else8765: - %t612 = load ptr, ptr %a1 - %t613 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t614 = load %S.gen.Val, ptr %t613 - %t615 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t612, %S.gen.Val %t614) - %t616 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t615, ptr %a501 - store { ptr, i64, i64 } %t616, ptr %a617 - call void @finch_str_drop(ptr %a617) - store i1 true, ptr %a502 - br label %endif8766 -endif8766: - br label %endif8763 -endif8763: - br label %endif8751 -endif8751: - %t618 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - store { ptr, i64, i64 } %t619, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5632, i64 6, i64 0 }, ptr %a621 - %t622 = call i32 @finch_str_eq(ptr %a620, ptr %a621) - %t623 = icmp ne i32 %t622, 0 - br label %logic.from8767 -logic.from8767: - br i1 %t623, label %logic.end8769, label %logic.rhs8768 -logic.rhs8768: - %t624 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t625 = load { ptr, i64, i64 }, ptr %t624 - store { ptr, i64, i64 } %t625, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5633, i64 4, i64 0 }, ptr %a627 - %t628 = call i32 @finch_str_eq(ptr %a626, ptr %a627) - %t629 = icmp ne i32 %t628, 0 - br label %logic.rend8770 -logic.rend8770: - br label %logic.end8769 -logic.end8769: - %t630 = phi i1 [ true, %logic.from8767 ], [ %t629, %logic.rend8770 ] - br i1 %t630, label %then8771, label %endif8773 -then8771: - %t631 = load ptr, ptr %a1 - %t632 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t633 = load { ptr, i64, i64 }, ptr %t632 - %t634 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t635 = load { ptr, i64, i64 }, ptr %t634 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = call i64 @finch.gen.findMethod(ptr %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635, { ptr, i64, i64 } %t637) - store i64 %t638, ptr %a639 - %t640 = load i64, ptr %a639 - %t641 = icmp slt i64 %t640, 0 - br label %logic.from8774 -logic.from8774: - br i1 %t641, label %logic.rhs8775, label %logic.end8776 -logic.rhs8775: - %t642 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t643 = load { ptr, i64, i64 }, ptr %t642 - store { ptr, i64, i64 } %t643, ptr %a644 - store { ptr, i64, i64 } { ptr @.str.5634, i64 6, i64 0 }, ptr %a645 - %t646 = call i32 @finch_str_eq(ptr %a644, ptr %a645) - %t647 = icmp ne i32 %t646, 0 - br label %logic.rend8777 -logic.rend8777: - br label %logic.end8776 -logic.end8776: - %t648 = phi i1 [ false, %logic.from8774 ], [ %t647, %logic.rend8777 ] - br i1 %t648, label %then8778, label %endif8780 -then8778: - %t649 = load ptr, ptr %a1 - %t650 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t653 = load { ptr, i64, i64 }, ptr %t652 - %t654 = call i64 @finch.gen.findStruct(ptr %t649, { ptr, i64, i64 } %t651, { ptr, i64, i64 } %t653) - store i64 %t654, ptr %a655 - %t656 = load ptr, ptr %a1 - %t657 = icmp eq ptr %t656, null - br i1 %t657, label %panic8781, label %ok8782 -panic8781: - call void @finch_panic(ptr @.str.5635, i64 5353, ptr @.str.5636) - unreachable -ok8782: - %t658 = getelementptr inbounds %S.gen.Gen, ptr %t656, i32 0, i32 16 - %t659 = load i64, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %t658 - %t661 = extractvalue { ptr, i64, i64 } %t660, 1 - %t662 = icmp uge i64 %t659, %t661 - br i1 %t662, label %range8783, label %inrange8784 -range8783: - call void @finch_panic_index(ptr @.str.5637, i64 5353, i64 %t659, i64 %t661) - unreachable -inrange8784: - %t663 = extractvalue { ptr, i64, i64 } %t660, 0 - %t664 = getelementptr inbounds %S.gen.StructDef, ptr %t663, i64 %t659 - %t665 = getelementptr inbounds %S.gen.StructDef, ptr %t664, i32 0, i32 5 - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t667 = load i64, ptr %t666 - %t668 = icmp sgt i64 %t667, 0 - br i1 %t668, label %then8785, label %endif8787 -then8785: - %t669 = load ptr, ptr %a1 - %t670 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t671 = load { ptr, i64, i64 }, ptr %t670 - %t672 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t673 = load { ptr, i64, i64 }, ptr %t672 - %t674 = load ptr, ptr %a1 - %t675 = icmp eq ptr %t674, null - br i1 %t675, label %panic8788, label %ok8789 -panic8788: - call void @finch_panic(ptr @.str.5638, i64 5354, ptr @.str.5639) - unreachable -ok8789: - %t676 = getelementptr inbounds %S.gen.Gen, ptr %t674, i32 0, i32 16 - %t677 = load i64, ptr %a655 - %t678 = load { ptr, i64, i64 }, ptr %t676 - %t679 = extractvalue { ptr, i64, i64 } %t678, 1 - %t680 = icmp uge i64 %t677, %t679 - br i1 %t680, label %range8790, label %inrange8791 -range8790: - call void @finch_panic_index(ptr @.str.5640, i64 5354, i64 %t677, i64 %t679) - unreachable -inrange8791: - %t681 = extractvalue { ptr, i64, i64 } %t678, 0 - %t682 = getelementptr inbounds %S.gen.StructDef, ptr %t681, i64 %t677 - %t683 = getelementptr inbounds %S.gen.StructDef, ptr %t682, i32 0, i32 5 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findTemplate(ptr %t669, { ptr, i64, i64 } %t671, { ptr, i64, i64 } %t673, { ptr, i64, i64 } %t684, i1 false) - store i64 %t685, ptr %a686 - %t687 = load i64, ptr %a686 - %t688 = icmp sge i64 %t687, 0 - br i1 %t688, label %then8792, label %endif8794 -then8792: - %t689 = load ptr, ptr %a1 - %t690 = load i64, ptr %a686 - %t691 = load ptr, ptr %a1 - %t692 = icmp eq ptr %t691, null - br i1 %t692, label %panic8795, label %ok8796 -panic8795: - call void @finch_panic(ptr @.str.5641, i64 5356, ptr @.str.5642) - unreachable -ok8796: - %t693 = getelementptr inbounds %S.gen.Gen, ptr %t691, i32 0, i32 16 - %t694 = load i64, ptr %a655 - %t695 = load { ptr, i64, i64 }, ptr %t693 - %t696 = extractvalue { ptr, i64, i64 } %t695, 1 - %t697 = icmp uge i64 %t694, %t696 - br i1 %t697, label %range8797, label %inrange8798 -range8797: - call void @finch_panic_index(ptr @.str.5643, i64 5356, i64 %t694, i64 %t696) - unreachable -inrange8798: - %t698 = extractvalue { ptr, i64, i64 } %t695, 0 - %t699 = getelementptr inbounds %S.gen.StructDef, ptr %t698, i64 %t694 - %t700 = getelementptr inbounds %S.gen.StructDef, ptr %t699, i32 0, i32 7 - %t701 = load { ptr, i64, i64 }, ptr %t700 - %t702 = load %S.ast.Type, ptr %a500 - %t703 = load %S.ast.Node, ptr %a2 - %t704 = call i64 @finch.gen.instFn(ptr %t689, i64 %t690, { ptr, i64, i64 } %t701, %S.ast.Type %t702, %S.ast.Node %t703) - store i64 %t704, ptr %a639 - br label %endif8794 -endif8794: - br label %endif8787 -endif8787: - br label %endif8780 -endif8780: - %t705 = load i64, ptr %a639 - %t706 = icmp slt i64 %t705, 0 - br i1 %t706, label %then8799, label %endif8801 -then8799: - store { ptr, i64, i64 } zeroinitializer, ptr %a707 - %t708 = load ptr, ptr %a1 - %t709 = icmp eq ptr %t708, null - br i1 %t709, label %panic8802, label %ok8803 -panic8802: - call void @finch_panic(ptr @.str.5644, i64 5362, ptr @.str.5645) - unreachable -ok8803: - %t710 = getelementptr inbounds %S.gen.Gen, ptr %t708, i32 0, i32 15 - store i64 0, ptr %a711 - br label %each.cond8804 -each.cond8804: - %t712 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i32 0, i32 1 - %t713 = load i64, ptr %t712 - %t714 = load i64, ptr %a711 - %t715 = icmp slt i64 %t714, %t713 - br i1 %t715, label %each.body8805, label %each.end8807 -each.body8805: - %t716 = load ptr, ptr %t710 - %t717 = getelementptr inbounds %S.gen.FnSig, ptr %t716, i64 %t714 - %t718 = load %S.gen.FnSig, ptr %t717 - store %S.gen.FnSig %t718, ptr %a719 - %t720 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 2 - %t721 = load { ptr, i64, i64 }, ptr %t720 - %t722 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t723 = load { ptr, i64, i64 }, ptr %t722 - store { ptr, i64, i64 } %t721, ptr %a724 - store { ptr, i64, i64 } %t723, ptr %a725 - %t726 = call i32 @finch_str_eq(ptr %a724, ptr %a725) - %t727 = icmp ne i32 %t726, 0 - br label %logic.from8808 -logic.from8808: - br i1 %t727, label %logic.rhs8809, label %logic.end8810 -logic.rhs8809: - %t728 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 3 - %t729 = load { ptr, i64, i64 }, ptr %t728 - %t730 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t731 = load { ptr, i64, i64 }, ptr %t730 - store { ptr, i64, i64 } %t729, ptr %a732 - store { ptr, i64, i64 } %t731, ptr %a733 - %t734 = call i32 @finch_str_eq(ptr %a732, ptr %a733) - %t735 = icmp ne i32 %t734, 0 - br label %logic.rend8811 -logic.rend8811: - br label %logic.end8810 -logic.end8810: - %t736 = phi i1 [ false, %logic.from8808 ], [ %t735, %logic.rend8811 ] - br i1 %t736, label %then8812, label %endif8814 -then8812: - %t737 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t738 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 1 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_copy(ptr %a741, ptr %a740) - %t742 = load { ptr, i64, i64 }, ptr %a741 - %t743 = load i64, ptr %t737 - %t744 = add i64 %t743, 1 - call void @finch_arr_reserve(ptr %a707, i64 %t744, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t745 = load ptr, ptr %a707 - %t746 = getelementptr inbounds { ptr, i64, i64 }, ptr %t745, i64 %t743 - store { ptr, i64, i64 } %t742, ptr %t746 - store i64 %t744, ptr %t737 - br label %endif8814 -endif8814: - br label %each.step8806 -each.step8806: - %t747 = load i64, ptr %a711 - %t748 = add i64 %t747, 1 - store i64 %t748, ptr %a711 - br label %each.cond8804 -each.end8807: - %t749 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t750 = load i64, ptr %t749 - %t751 = icmp eq i64 %t750, 0 - br i1 %t751, label %then8815, label %endif8817 -then8815: - %t752 = load ptr, ptr %a1 - %t753 = load %S.ast.Node, ptr %a2 - %t754 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t755 = load { ptr, i64, i64 }, ptr %t754 - store { ptr, i64, i64 } { ptr @.str.5646, i64 4, i64 0 }, ptr %a757 - store { ptr, i64, i64 } %t755, ptr %a758 - call void @finch_str_concat(ptr %a756, ptr %a757, ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.5647, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = load %S.ast.Type, ptr %a500 - %t766 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t765) - store { ptr, i64, i64 } %t764, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t764, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.5648, i64 34, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t779 = load { ptr, i64, i64 }, ptr %t778 - store { ptr, i64, i64 } %t777, ptr %a781 - store { ptr, i64, i64 } %t779, ptr %a782 - call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) - store { ptr, i64, i64 } %t777, ptr %a783 - call void @finch_str_drop(ptr %a783) - %t784 = load { ptr, i64, i64 }, ptr %a780 - store { ptr, i64, i64 } %t784, ptr %a786 - store { ptr, i64, i64 } { ptr @.str.5649, i64 1, i64 0 }, ptr %a787 - call void @finch_str_concat(ptr %a785, ptr %a786, ptr %a787) - store { ptr, i64, i64 } %t784, ptr %a788 - call void @finch_str_drop(ptr %a788) - %t789 = load { ptr, i64, i64 }, ptr %a785 - %t790 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t791 = load { ptr, i64, i64 }, ptr %t790 - store { ptr, i64, i64 } %t789, ptr %a793 - store { ptr, i64, i64 } %t791, ptr %a794 - call void @finch_str_concat(ptr %a792, ptr %a793, ptr %a794) - store { ptr, i64, i64 } %t789, ptr %a795 - call void @finch_str_drop(ptr %a795) - %t796 = load { ptr, i64, i64 }, ptr %a792 - store { ptr, i64, i64 } %t796, ptr %a798 - store { ptr, i64, i64 } { ptr @.str.5650, i64 13, i64 0 }, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - store { ptr, i64, i64 } %t796, ptr %a800 - call void @finch_str_drop(ptr %a800) - %t801 = load { ptr, i64, i64 }, ptr %a797 - call void @finch.gen.fail(ptr %t752, %S.ast.Node %t753, { ptr, i64, i64 } %t801) - store { ptr, i64, i64 } %t801, ptr %a802 - call void @finch_str_drop(ptr %a802) - br label %endif8817 -endif8817: - %t803 = load ptr, ptr %a1 - %t804 = load %S.ast.Node, ptr %a2 - %t805 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t806 = load { ptr, i64, i64 }, ptr %t805 - store { ptr, i64, i64 } { ptr @.str.5651, i64 4, 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.5652, i64 1, i64 0 }, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - %t816 = load %S.ast.Type, ptr %a500 - %t817 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t816) - store { ptr, i64, i64 } %t815, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t815, ptr %a821 - call void @finch_str_drop(ptr %a821) - store { ptr, i64, i64 } %t817, ptr %a822 - call void @finch_str_drop(ptr %a822) - %t823 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t823, ptr %a825 - store { ptr, i64, i64 } { ptr @.str.5653, i64 16, i64 0 }, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t823, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - %t829 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t830 = load { ptr, i64, i64 }, ptr %t829 - store { ptr, i64, i64 } %t828, ptr %a832 - store { ptr, i64, i64 } %t830, ptr %a833 - call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) - store { ptr, i64, i64 } %t828, ptr %a834 - call void @finch_str_drop(ptr %a834) - %t835 = load { ptr, i64, i64 }, ptr %a831 - store { ptr, i64, i64 } %t835, ptr %a837 - store { ptr, i64, i64 } { ptr @.str.5654, i64 11, i64 0 }, ptr %a838 - call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838) - store { ptr, i64, i64 } %t835, ptr %a839 - call void @finch_str_drop(ptr %a839) - %t840 = load { ptr, i64, i64 }, ptr %a836 - %t841 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5655, i64 2, i64 0 }, ptr %a842 - call void @finch_str_join(ptr %a843, ptr %a707, ptr %a842) - %t844 = load { ptr, i64, i64 }, ptr %a843 - store { ptr, i64, i64 } %t840, ptr %a846 - store { ptr, i64, i64 } %t844, ptr %a847 - call void @finch_str_concat(ptr %a845, ptr %a846, ptr %a847) - store { ptr, i64, i64 } %t840, ptr %a848 - call void @finch_str_drop(ptr %a848) - store { ptr, i64, i64 } %t844, ptr %a849 - call void @finch_str_drop(ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5656, i64 1, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - call void @finch.gen.fail(ptr %t803, %S.ast.Node %t804, { ptr, i64, i64 } %t855) - store { ptr, i64, i64 } %t855, ptr %a856 - call void @finch_str_drop(ptr %a856) - call void @finch.drop.arr_str(ptr %a707) - br label %endif8801 -endif8801: - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic8818, label %ok8819 -panic8818: - call void @finch_panic(ptr @.str.5657, i64 5373, ptr @.str.5658) - unreachable -ok8819: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 15 - %t860 = load i64, ptr %a639 - %t861 = load { ptr, i64, i64 }, ptr %t859 - %t862 = extractvalue { ptr, i64, i64 } %t861, 1 - %t863 = icmp uge i64 %t860, %t862 - br i1 %t863, label %range8820, label %inrange8821 -range8820: - call void @finch_panic_index(ptr @.str.5659, i64 5373, i64 %t860, i64 %t862) - unreachable -inrange8821: - %t864 = extractvalue { ptr, i64, i64 } %t861, 0 - %t865 = getelementptr inbounds %S.gen.FnSig, ptr %t864, i64 %t860 - %t866 = getelementptr inbounds %S.gen.FnSig, ptr %t865, i32 0, i32 10 - %t867 = load i1, ptr %t866 - br label %logic.from8822 -logic.from8822: - br i1 %t867, label %logic.rhs8823, label %logic.end8824 -logic.rhs8823: - %t868 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t869 = load { ptr, i64, i64 }, ptr %t868 - store { ptr, i64, i64 } %t869, ptr %a870 - store { ptr, i64, i64 } { ptr @.str.5660, i64 6, i64 0 }, ptr %a871 - %t872 = call i32 @finch_str_eq(ptr %a870, ptr %a871) - %t873 = icmp ne i32 %t872, 0 - br label %logic.from8825 -logic.from8825: - br i1 %t873, label %logic.end8827, label %logic.rhs8826 -logic.rhs8826: - %t874 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t875 = load { ptr, i64, i64 }, ptr %t874 - store { ptr, i64, i64 } %t875, ptr %a876 - store { ptr, i64, i64 } { ptr @.str.5661, i64 4, i64 0 }, ptr %a877 - %t878 = call i32 @finch_str_eq(ptr %a876, ptr %a877) - %t879 = icmp ne i32 %t878, 0 - br label %logic.rend8828 -logic.rend8828: - br label %logic.end8827 -logic.end8827: - %t880 = phi i1 [ true, %logic.from8825 ], [ %t879, %logic.rend8828 ] - br label %logic.rend8829 -logic.rend8829: - br label %logic.end8824 -logic.end8824: - %t881 = phi i1 [ false, %logic.from8822 ], [ %t880, %logic.rend8829 ] - br i1 %t881, label %then8830, label %endif8832 -then8830: - %t882 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t883 = load i1, ptr %t882 - %t884 = xor i1 %t883, true - br i1 %t884, label %then8833, label %endif8835 -then8833: - %t885 = load ptr, ptr %a1 - %t886 = load %S.ast.Node, ptr %a2 - %t887 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t888 = load { ptr, i64, i64 }, ptr %t887 - store { ptr, i64, i64 } %t888, ptr %a890 - store { ptr, i64, i64 } { ptr @.str.5662, i64 28, i64 0 }, ptr %a891 - call void @finch_str_concat(ptr %a889, ptr %a890, ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a889 - %t893 = load %S.ast.Type, ptr %a500 - %t894 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t893) - store { ptr, i64, i64 } %t892, ptr %a896 - store { ptr, i64, i64 } %t894, ptr %a897 - call void @finch_str_concat(ptr %a895, ptr %a896, ptr %a897) - store { ptr, i64, i64 } %t892, ptr %a898 - call void @finch_str_drop(ptr %a898) - store { ptr, i64, i64 } %t894, ptr %a899 - call void @finch_str_drop(ptr %a899) - %t900 = load { ptr, i64, i64 }, ptr %a895 - store { ptr, i64, i64 } %t900, ptr %a902 - store { ptr, i64, i64 } { ptr @.str.5663, i64 30, i64 0 }, ptr %a903 - call void @finch_str_concat(ptr %a901, ptr %a902, ptr %a903) - store { ptr, i64, i64 } %t900, ptr %a904 - call void @finch_str_drop(ptr %a904) - %t905 = load { ptr, i64, i64 }, ptr %a901 - call void @finch.gen.fail(ptr %t885, %S.ast.Node %t886, { ptr, i64, i64 } %t905) - store { ptr, i64, i64 } %t905, ptr %a906 - call void @finch_str_drop(ptr %a906) - br label %endif8835 -endif8835: - %t907 = load %S.ast.Node, ptr %a13 - %t908 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t907) - store { ptr, i64, i64 } %t908, ptr %a909 - %t910 = getelementptr inbounds { ptr, i64, i64 }, ptr %a909, i32 0, i32 1 - %t911 = load i64, ptr %t910 - %t912 = icmp sgt i64 %t911, 0 - br i1 %t912, label %then8836, label %endif8838 -then8836: - %t913 = load ptr, ptr %a1 - %t914 = load { ptr, i64, i64 }, ptr %a909 - %t915 = call i64 @finch.gen.lookup(ptr %t913, { ptr, i64, i64 } %t914) - store i64 %t915, ptr %a916 - %t917 = load i64, ptr %a916 - %t918 = icmp sge i64 %t917, 0 - br label %logic.from8839 -logic.from8839: - br i1 %t918, label %logic.rhs8840, label %logic.end8841 -logic.rhs8840: - %t919 = load ptr, ptr %a1 - %t920 = load i64, ptr %a916 - %t921 = call %S.gen.Var @finch.gen.varAt(ptr %t919, i64 %t920) - %t922 = extractvalue %S.gen.Var %t921, 3 - store %S.gen.Var %t921, ptr %a923 - call void @finch.drop.S_gen_Var(ptr %a923) - br label %logic.rend8842 -logic.rend8842: - br label %logic.end8841 -logic.end8841: - %t924 = phi i1 [ false, %logic.from8839 ], [ %t922, %logic.rend8842 ] - br i1 %t924, label %then8843, label %endif8845 -then8843: - %t925 = load ptr, ptr %a1 - %t926 = load %S.ast.Node, ptr %a2 - %t927 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } { ptr @.str.5664, i64 19, i64 0 }, 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.5665, i64 18, i64 0 }, ptr %a934 - call void @finch_str_concat(ptr %a932, ptr %a933, ptr %a934) - store { ptr, i64, i64 } %t931, ptr %a935 - call void @finch_str_drop(ptr %a935) - %t936 = load { ptr, i64, i64 }, ptr %a932 - call void @finch.gen.fail(ptr %t925, %S.ast.Node %t926, { ptr, i64, i64 } %t936) - store { ptr, i64, i64 } %t936, ptr %a937 - call void @finch_str_drop(ptr %a937) - br label %endif8845 -endif8845: - br label %endif8838 -endif8838: - call void @finch_str_drop(ptr %a909) - br label %endif8832 -endif8832: - %t938 = load i1, ptr %a502 - br label %logic.from8846 -logic.from8846: - br i1 %t938, label %logic.rhs8847, label %logic.end8848 -logic.rhs8847: - %t939 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t940 = getelementptr inbounds %S.gen.Val, ptr %t939, i32 0, i32 2 - %t941 = load i1, ptr %t940 - br label %logic.rend8849 -logic.rend8849: - br label %logic.end8848 -logic.end8848: - %t942 = phi i1 [ false, %logic.from8846 ], [ %t941, %logic.rend8849 ] - br i1 %t942, label %then8850, label %endif8852 -then8850: - %t943 = load ptr, ptr %a1 - %t944 = load { ptr, i64, i64 }, ptr %a501 - %t945 = load %S.ast.Type, ptr %a500 - call void @finch.gen.holdAddr(ptr %t943, { ptr, i64, i64 } %t944, %S.ast.Type %t945) - br label %endif8852 -endif8852: - %t946 = load ptr, ptr %a1 - %t947 = load i64, ptr %a639 - %t948 = load %S.ast.Node, ptr %a2 - %t949 = load %S.ast.Type, ptr %a500 - %t950 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t949) - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5666, i64 1, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t957 = load { ptr, i64, i64 }, ptr %t956 - store { ptr, i64, i64 } %t955, ptr %a959 - store { ptr, i64, i64 } %t957, ptr %a960 - call void @finch_str_concat(ptr %a958, ptr %a959, ptr %a960) - store { ptr, i64, i64 } %t955, ptr %a961 - call void @finch_str_drop(ptr %a961) - %t962 = load { ptr, i64, i64 }, ptr %a958 - %t963 = load { ptr, i64, i64 }, ptr %a501 - %t964 = load %S.ast.Node, ptr %a13 - %t965 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t964) - %t966 = call %S.gen.Val @finch.gen.callFn(ptr %t946, i64 %t947, %S.ast.Node %t948, i64 1, { ptr, i64, i64 } %t962, { ptr, i64, i64 } %t963, { ptr, i64, i64 } %t965) - store { ptr, i64, i64 } %t962, ptr %a967 - call void @finch_str_drop(ptr %a967) - store { ptr, i64, i64 } %t965, ptr %a968 - call void @finch_str_drop(ptr %a968) - store %S.gen.Val %t966, ptr %a969 - %t970 = load i1, ptr %a502 - br label %logic.from8853 -logic.from8853: - br i1 %t970, label %logic.rhs8854, label %logic.end8855 -logic.rhs8854: - %t971 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t972 = getelementptr inbounds %S.gen.Val, ptr %t971, i32 0, i32 2 - %t973 = load i1, ptr %t972 - br label %logic.rend8856 -logic.rend8856: - br label %logic.end8855 -logic.end8855: - %t974 = phi i1 [ false, %logic.from8853 ], [ %t973, %logic.rend8856 ] - br label %logic.from8857 -logic.from8857: - br i1 %t974, label %logic.rhs8858, label %logic.end8859 -logic.rhs8858: - %t975 = load ptr, ptr %a1 - %t976 = load %S.ast.Type, ptr %a500 - %t977 = call i1 @finch.gen.owning(ptr %t975, %S.ast.Type %t976) - br label %logic.rend8860 -logic.rend8860: - br label %logic.end8859 -logic.end8859: - %t978 = phi i1 [ false, %logic.from8857 ], [ %t977, %logic.rend8860 ] - br i1 %t978, label %then8861, label %endif8863 -then8861: - %t979 = load ptr, ptr %a1 - %t980 = load { ptr, i64, i64 }, ptr %a501 - %t981 = load %S.ast.Type, ptr %a500 - call void @finch.gen.dropAt(ptr %t979, { ptr, i64, i64 } %t980, %S.ast.Type %t981) - br label %endif8863 -endif8863: - %t982 = load ptr, ptr %a1 - %t983 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t982, i64 %t983) - %t984 = load %S.gen.Val, ptr %a969 - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t984 -endif8773: - %t985 = load ptr, ptr %a1 - %t986 = load %S.ast.Node, ptr %a2 - %t987 = load %S.ast.Type, ptr %a273 - %t988 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t987) - store { ptr, i64, i64 } %t988, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.5667, i64 15, i64 0 }, ptr %a991 - call void @finch_str_concat(ptr %a989, ptr %a990, ptr %a991) - store { ptr, i64, i64 } %t988, ptr %a992 - call void @finch_str_drop(ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a989 - call void @finch.gen.fail(ptr %t985, %S.ast.Node %t986, { ptr, i64, i64 } %t993) - store { ptr, i64, i64 } %t993, ptr %a994 - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - 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 - %a35 = 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 - %a68 = alloca %S.gen.Val, align 16 - %a70 = alloca %S.gen.Val, align 16 - %a71 = 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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = 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 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.ast.Type, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.gen.Val, align 16 - %a315 = alloca %S.gen.Val, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %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 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca %S.ast.Type, align 16 - %a420 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.gen.Val, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca %S.ast.Type, align 16 - %a435 = alloca %S.ast.Type, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.gen.Val, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca %S.gen.Val, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.gen.Val, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca %S.gen.Val, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.gen.Val, align 16 - %a646 = alloca %S.gen.Val, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca %S.gen.Val, align 16 - %a792 = alloca %S.ast.Type, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca %S.gen.Val, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca %S.ast.Type, align 16 - %a889 = alloca %S.ast.Type, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca %S.gen.Val, align 16 - %a923 = alloca %S.ast.Type, align 16 - %a925 = alloca { ptr, i64, i64 }, align 16 - %a926 = alloca { ptr, i64, i64 }, align 16 - %a928 = alloca %S.gen.Val, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a936 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a995 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1034 = alloca { ptr, i64, i64 }, align 16 - %a1035 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca { ptr, i64, i64 }, align 16 - %a1046 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1052 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1057 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1082 = alloca { ptr, i64, i64 }, align 16 - %a1083 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca { ptr, i64, i64 }, align 16 - %a1087 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1092 = alloca { ptr, i64, i64 }, align 16 - %a1093 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1098 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1104 = alloca { ptr, i64, i64 }, align 16 - %a1105 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1160 = alloca %S.ast.Type, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca %S.gen.Val, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca %S.gen.Val, align 16 - %a1187 = alloca %S.ast.Type, align 16 - %a1189 = alloca { ptr, i64, i64 }, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca %S.gen.Val, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1200 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca { ptr, i64, i64 }, align 16 - %a1207 = alloca { ptr, i64, i64 }, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1214 = alloca { ptr, i64, i64 }, align 16 - %a1215 = alloca { ptr, i64, i64 }, align 16 - %a1216 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1219 = alloca { ptr, i64, i64 }, align 16 - %a1220 = alloca { ptr, i64, i64 }, align 16 - %a1221 = alloca { ptr, i64, i64 }, align 16 - %a1224 = alloca { ptr, i64, i64 }, align 16 - %a1225 = alloca { ptr, i64, i64 }, align 16 - %a1226 = alloca { ptr, i64, i64 }, align 16 - %a1227 = alloca { ptr, i64, i64 }, align 16 - %a1230 = alloca { ptr, i64, i64 }, align 16 - %a1231 = alloca { ptr, i64, i64 }, align 16 - %a1234 = alloca { ptr, i64, i64 }, align 16 - %a1235 = alloca { ptr, i64, i64 }, align 16 - %a1236 = alloca { ptr, i64, i64 }, align 16 - %a1238 = alloca { ptr, i64, i64 }, align 16 - %a1239 = alloca { ptr, i64, i64 }, align 16 - %a1240 = alloca { ptr, i64, i64 }, align 16 - %a1241 = alloca { ptr, i64, i64 }, align 16 - %a1244 = alloca { ptr, i64, i64 }, align 16 - %a1245 = alloca { ptr, i64, i64 }, align 16 - %a1246 = alloca { ptr, i64, i64 }, align 16 - %a1247 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1257 = alloca { ptr, i64, i64 }, align 16 - %a1258 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1261 = alloca { ptr, i64, i64 }, align 16 - %a1262 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1269 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1274 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1276 = alloca { ptr, i64, i64 }, align 16 - %a1278 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1281 = alloca { ptr, i64, i64 }, align 16 - %a1284 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca { ptr, i64, i64 }, align 16 - %a1286 = alloca { ptr, i64, i64 }, align 16 - %a1287 = alloca { ptr, i64, i64 }, align 16 - %a1290 = alloca { ptr, i64, i64 }, align 16 - %a1292 = alloca { ptr, i64, i64 }, align 16 - %a1295 = alloca { ptr, i64, i64 }, align 16 - %a1296 = alloca { ptr, i64, i64 }, align 16 - %a1297 = alloca { ptr, i64, i64 }, align 16 - %a1299 = alloca { ptr, i64, i64 }, align 16 - %a1300 = alloca { ptr, i64, i64 }, align 16 - %a1301 = alloca { ptr, i64, i64 }, align 16 - %a1302 = alloca { ptr, i64, i64 }, align 16 - %a1305 = alloca { ptr, i64, i64 }, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1307 = alloca { ptr, i64, i64 }, align 16 - %a1308 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1312 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1318 = alloca { ptr, i64, i64 }, align 16 - %a1319 = alloca { ptr, i64, i64 }, align 16 - %a1320 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1331 = alloca { ptr, i64, i64 }, align 16 - %a1333 = alloca { ptr, i64, i64 }, align 16 - %a1334 = alloca { ptr, i64, i64 }, align 16 - %a1335 = alloca { ptr, i64, i64 }, align 16 - %a1336 = alloca { ptr, i64, i64 }, align 16 - %a1341 = alloca { ptr, i64, i64 }, align 16 - %a1342 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1345 = alloca { ptr, i64, i64 }, align 16 - %a1347 = alloca { ptr, i64, i64 }, align 16 - %a1348 = alloca { ptr, i64, i64 }, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1352 = alloca { ptr, i64, i64 }, align 16 - %a1356 = alloca { ptr, i64, i64 }, align 16 - %a1360 = alloca { ptr, i64, i64 }, align 16 - %a1364 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1369 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1374 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1378 = alloca { ptr, i64, i64 }, align 16 - %a1379 = alloca { ptr, i64, i64 }, align 16 - %a1380 = alloca { ptr, i64, i64 }, align 16 - %a1382 = alloca { ptr, i64, i64 }, align 16 - %a1383 = alloca { ptr, i64, i64 }, align 16 - %a1384 = alloca { ptr, i64, i64 }, align 16 - %a1385 = alloca { ptr, i64, i64 }, align 16 - %a1393 = alloca { ptr, i64, i64 }, align 16 - %a1394 = alloca { ptr, i64, i64 }, align 16 - %a1395 = alloca { ptr, i64, i64 }, align 16 - %a1396 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1403 = alloca { ptr, i64, i64 }, align 16 - %a1404 = alloca { ptr, i64, i64 }, align 16 - %a1405 = alloca { ptr, i64, i64 }, align 16 - %a1407 = alloca { ptr, i64, i64 }, align 16 - %a1408 = alloca { ptr, i64, i64 }, align 16 - %a1409 = alloca { ptr, i64, i64 }, align 16 - %a1410 = alloca { ptr, i64, i64 }, align 16 - %a1413 = alloca { ptr, i64, i64 }, align 16 - %a1414 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca { ptr, i64, i64 }, align 16 - %a1416 = alloca { ptr, i64, i64 }, align 16 - %a1418 = alloca { ptr, i64, i64 }, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1421 = alloca { ptr, i64, i64 }, align 16 - %a1425 = alloca { ptr, i64, i64 }, align 16 - %a1426 = alloca { ptr, i64, i64 }, align 16 - %a1427 = alloca { ptr, i64, i64 }, align 16 - %a1429 = alloca { ptr, i64, i64 }, align 16 - %a1430 = alloca { ptr, i64, i64 }, align 16 - %a1431 = alloca { ptr, i64, i64 }, align 16 - %a1432 = alloca { ptr, i64, i64 }, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1442 = alloca { ptr, i64, i64 }, align 16 - %a1443 = alloca { ptr, i64, i64 }, align 16 - %a1446 = alloca { ptr, i64, i64 }, align 16 - %a1447 = alloca { ptr, i64, i64 }, align 16 - %a1448 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1450 = alloca { ptr, i64, i64 }, align 16 - %a1451 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca { ptr, i64, i64 }, align 16 - %a1455 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca %S.ast.Type, align 16 - %a1468 = alloca %S.ast.Type, align 16 - %a1473 = alloca { ptr, i64, i64 }, align 16 - %a1474 = alloca { ptr, i64, i64 }, align 16 - %a1481 = alloca { ptr, i64, i64 }, align 16 - %a1482 = alloca { ptr, i64, i64 }, align 16 - %a1484 = alloca { ptr, i64, i64 }, align 16 - %a1489 = alloca { ptr, i64, i64 }, align 16 - %a1490 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1505 = alloca { ptr, i64, i64 }, align 16 - %a1509 = alloca { ptr, i64, i64 }, align 16 - %a1513 = alloca { ptr, i64, i64 }, align 16 - %a1516 = alloca { ptr, i64, i64 }, align 16 - %a1517 = alloca { ptr, i64, i64 }, align 16 - %a1518 = alloca { ptr, i64, i64 }, align 16 - %a1520 = alloca { ptr, i64, i64 }, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1529 = alloca { ptr, i64, i64 }, align 16 - %a1531 = alloca { ptr, i64, i64 }, align 16 - %a1532 = alloca { ptr, i64, i64 }, align 16 - %a1533 = alloca { ptr, i64, i64 }, align 16 - %a1534 = alloca { ptr, i64, i64 }, align 16 - %a1539 = alloca { ptr, i64, i64 }, align 16 - %a1540 = alloca { ptr, i64, i64 }, align 16 - %a1541 = alloca { ptr, i64, i64 }, align 16 - %a1542 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca { ptr, i64, i64 }, align 16 - %a1545 = alloca { ptr, i64, i64 }, align 16 - %a1546 = alloca { ptr, i64, i64 }, align 16 - %a1547 = alloca { ptr, i64, i64 }, align 16 - %a1548 = alloca { ptr, i64, i64 }, align 16 - %a1551 = alloca { ptr, i64, i64 }, align 16 - %a1552 = alloca { ptr, i64, i64 }, align 16 - %a1553 = alloca { ptr, i64, i64 }, align 16 - %a1554 = alloca { ptr, i64, i64 }, align 16 - %a1556 = alloca { ptr, i64, i64 }, align 16 - %a1557 = alloca { ptr, i64, i64 }, align 16 - %a1558 = alloca { ptr, i64, i64 }, align 16 - %a1559 = alloca { ptr, i64, i64 }, align 16 - %a1561 = alloca { ptr, i64, i64 }, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1576 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range8864, label %inrange8865 -range8864: - call void @finch_panic_index(ptr @.str.5668, i64 5404, i64 0, i64 %t7) - unreachable -inrange8865: - %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.5669, 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.5670, i64 14, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t37, ptr %a39 - %t40 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.5671, 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 %then8866, label %endif8868 -then8866: - %t45 = load ptr, ptr %a1 - %t46 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t45, %S.ast.Node %t46, i64 1) - %t47 = load ptr, ptr %a1 - %t48 = load ptr, ptr %a1 - %t49 = load ptr, ptr %a1 - %t50 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 1, %t52 - br i1 %t53, label %range8869, label %inrange8870 -range8869: - call void @finch_panic_index(ptr @.str.5672, i64 5410, i64 1, i64 %t52) - unreachable -inrange8870: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 1 - %t56 = load %S.ast.Node, ptr %t55 - %t57 = load %S.ast.Type, ptr %a15 - %t58 = call %S.gen.Val @finch.gen.exprWant(ptr %t49, %S.ast.Node %t56, %S.ast.Type %t57) - %t59 = load %S.ast.Type, ptr %a15 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 1, %t62 - br i1 %t63, label %range8871, label %inrange8872 -range8871: - call void @finch_panic_index(ptr @.str.5673, i64 5410, i64 1, i64 %t62) - unreachable -inrange8872: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 1 - %t66 = load %S.ast.Node, ptr %t65 - %t67 = call %S.gen.Val @finch.gen.coerce(ptr %t48, %S.gen.Val %t58, %S.ast.Type %t59, %S.ast.Node %t66, { ptr, i64, i64 } { ptr @.str.5674, i64 11, i64 0 }) - store %S.gen.Val %t58, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - %t69 = call { ptr, i64, i64 } @finch.gen.own(ptr %t47, %S.gen.Val %t67) - store %S.gen.Val %t67, ptr %a70 - call void @finch.drop.S_gen_Val(ptr %a70) - store { ptr, i64, i64 } %t69, ptr %a71 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a39 - %t74 = call { ptr, i64, i64 } @finch.gen.load(ptr %t72, { ptr, i64, i64 } { ptr @.str.5675, i64 3, i64 0 }, { ptr, i64, i64 } %t73) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5676, i64 8, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.5677, i64 3, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.op(ptr %t76, { ptr, i64, i64 } %t86) - store { ptr, i64, i64 } %t86, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5678, i64 33, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5679, i64 6, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5680, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load ptr, ptr %a1 - %t113 = load %S.ast.Type, ptr %a15 - %t114 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t112, %S.ast.Type %t113) - store { ptr, i64, i64 } %t111, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t111, ptr %a118 - call void @finch_str_drop(ptr %a118) - store { ptr, i64, i64 } %t114, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t120, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.5681, i64 1, i64 0 }, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - call void @finch.gen.emit(ptr %t90, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load ptr, ptr %a1 - %t128 = load { ptr, i64, i64 }, ptr %a3 - %t129 = call { ptr, i64, i64 } @finch.gen.load(ptr %t127, { ptr, i64, i64 } { ptr @.str.5682, i64 3, i64 0 }, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a19 - %t133 = load { ptr, i64, i64 }, ptr %a71 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5683, i64 23, i64 0 }, ptr %a137 - store { ptr, i64, i64 } %t135, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t139, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.5684, i64 6, i64 0 }, ptr %a142 - call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = load { ptr, i64, i64 }, ptr %a140 - %t145 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t144, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.5685, i64 6, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t155, ptr %a158 - store { ptr, i64, i64 } %t156, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a163 - call void @finch_str_drop(ptr %a163) - call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t162) - store { ptr, i64, i64 } %t162, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load ptr, ptr %a1 - %t166 = load { ptr, i64, i64 }, ptr %a89 - %t167 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t165, { ptr, i64, i64 } { ptr @.str.5686, i64 3, i64 0 }, { ptr, i64, i64 } %t166, { ptr, i64, i64 } %t167) - %t168 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5687, i64 4, i64 0 }) - %t169 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t168, 1 - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a89) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t169 -endif8868: - %t170 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.5688, i64 3, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then8873, label %endif8875 -then8873: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t175, %S.ast.Node %t176, i64 0) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a39 - %t179 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.5689, i64 3, i64 0 }, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t179, ptr %a180 - %t181 = load ptr, ptr %a1 - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5690, i64 12, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5691, i64 3, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t181, { ptr, i64, i64 } %t193, { ptr, i64, i64 } { ptr @.str.5692, i64 23, i64 0 }, %S.ast.Node %t195) - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5693, i64 8, i64 0 }, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.5694, i64 3, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_drop(ptr %a209) - store { ptr, i64, i64 } %t208, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = call { ptr, i64, i64 } @finch.gen.load(ptr %t211, { ptr, i64, i64 } { ptr @.str.5695, i64 3, i64 0 }, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t213, ptr %a214 - %t215 = load ptr, ptr %a1 - %t216 = load { ptr, i64, i64 }, ptr %a19 - %t217 = load ptr, ptr %a1 - %t218 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5696, i64 23, i64 0 }, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.5697, i64 6, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5698, i64 6, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t238, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t238, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t244) - store { ptr, i64, i64 } %t244, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = call { ptr, i64, i64 } @finch.gen.load(ptr %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_drop(ptr %a248) - store { ptr, i64, i64 } %t247, ptr %a249 - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a210 - %t252 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.5699, i64 3, i64 0 }, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t256, 0 - %t258 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t258, ptr %a259 - call void @finch.copy.S_ast_Type(ptr %a260, ptr %a259) - %t261 = load %S.ast.Type, ptr %a260 - %t262 = insertvalue %S.gen.Val %t257, %S.ast.Type %t261, 1 - %t263 = load ptr, ptr %a1 - %t264 = load %S.ast.Type, ptr %a15 - %t265 = call i1 @finch.gen.owning(ptr %t263, %S.ast.Type %t264) - %t266 = insertvalue %S.gen.Val %t262, i1 %t265, 2 - call void @finch_str_drop(ptr %a249) - call void @finch_str_drop(ptr %a214) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a180) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t266 -endif8875: - %t267 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t267, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5700, i64 5, i64 0 }, ptr %a269 - %t270 = call i32 @finch_str_eq(ptr %a268, ptr %a269) - %t271 = icmp ne i32 %t270, 0 - br i1 %t271, label %then8876, label %endif8878 -then8876: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t272, %S.ast.Node %t273, i64 0) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a3 - %t276 = load %S.ast.Type, ptr %a4 - call void @finch.gen.dropFrom(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276, { ptr, i64, i64 } { ptr @.str.5701, i64 1, i64 0 }) - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t277, { ptr, i64, i64 } { ptr @.str.5702, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5703, i64 1, i64 0 }, { ptr, i64, i64 } %t278) - %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5704, i64 4, i64 0 }) - %t280 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t279, 1 - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t280 -endif8878: - %t281 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.5705, i64 4, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br label %logic.from8879 -logic.from8879: - br i1 %t285, label %logic.end8881, label %logic.rhs8880 -logic.rhs8880: - %t286 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t286, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5706, i64 8, i64 0 }, ptr %a288 - %t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288) - %t290 = icmp ne i32 %t289, 0 - br label %logic.rend8882 -logic.rend8882: - br label %logic.end8881 -logic.end8881: - %t291 = phi i1 [ true, %logic.from8879 ], [ %t290, %logic.rend8882 ] - br i1 %t291, label %then8883, label %endif8885 -then8883: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t292, %S.ast.Node %t293, i64 1) - %t294 = load ptr, ptr %a1 - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t297 = load { ptr, i64, i64 }, ptr %t296 - %t298 = extractvalue { ptr, i64, i64 } %t297, 1 - %t299 = icmp uge i64 1, %t298 - br i1 %t299, label %range8886, label %inrange8887 -range8886: - call void @finch_panic_index(ptr @.str.5707, i64 5437, i64 1, i64 %t298) - unreachable -inrange8887: - %t300 = extractvalue { ptr, i64, i64 } %t297, 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i64 1 - %t302 = load %S.ast.Node, ptr %t301 - %t303 = load %S.ast.Type, ptr %a15 - %t304 = call %S.gen.Val @finch.gen.exprWant(ptr %t295, %S.ast.Node %t302, %S.ast.Type %t303) - %t305 = load %S.ast.Type, ptr %a15 - %t306 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = extractvalue { ptr, i64, i64 } %t307, 1 - %t309 = icmp uge i64 1, %t308 - br i1 %t309, label %range8888, label %inrange8889 -range8888: - call void @finch_panic_index(ptr @.str.5708, i64 5437, i64 1, i64 %t308) - unreachable -inrange8889: - %t310 = extractvalue { ptr, i64, i64 } %t307, 0 - %t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i64 1 - %t312 = load %S.ast.Node, ptr %t311 - %t313 = call %S.gen.Val @finch.gen.coerce(ptr %t294, %S.gen.Val %t304, %S.ast.Type %t305, %S.ast.Node %t312, { ptr, i64, i64 } { ptr @.str.5709, i64 21, i64 0 }) - store %S.gen.Val %t304, ptr %a314 - call void @finch.drop.S_gen_Val(ptr %a314) - store %S.gen.Val %t313, ptr %a315 - %t316 = load ptr, ptr %a1 - %t317 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t316, { ptr, i64, i64 } { ptr @.str.5710, i64 3, i64 0 }) - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t319, { ptr, i64, i64 } { ptr @.str.5711, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5712, i64 2, i64 0 }, { ptr, i64, i64 } %t320) - %t321 = load ptr, ptr %a1 - %t322 = load { ptr, i64, i64 }, ptr %a39 - %t323 = call { ptr, i64, i64 } @finch.gen.load(ptr %t321, { ptr, i64, i64 } { ptr @.str.5713, i64 3, i64 0 }, { ptr, i64, i64 } %t322) - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = load ptr, ptr %a1 - %t326 = load { ptr, i64, i64 }, ptr %a3 - %t327 = call { ptr, i64, i64 } @finch.gen.load(ptr %t325, { ptr, i64, i64 } { ptr @.str.5714, i64 3, i64 0 }, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.5715, i64 3, i64 0 }) - store { ptr, i64, i64 } %t330, ptr %a331 - %t332 = load ptr, ptr %a1 - %t333 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t332, { ptr, i64, i64 } { ptr @.str.5716, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5717, i64 1, i64 0 }, { ptr, i64, i64 } %t333) - %t334 = load ptr, ptr %a1 - %t335 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t334, { ptr, i64, i64 } { ptr @.str.5718, i64 9, i64 0 }) - store { ptr, i64, i64 } %t335, ptr %a336 - %t337 = load ptr, ptr %a1 - %t338 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t337, { ptr, i64, i64 } { ptr @.str.5719, i64 9, i64 0 }) - store { ptr, i64, i64 } %t338, ptr %a339 - %t340 = load ptr, ptr %a1 - %t341 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t340, { ptr, i64, i64 } { ptr @.str.5720, i64 8, i64 0 }) - store { ptr, i64, i64 } %t341, ptr %a342 - %t343 = load ptr, ptr %a1 - %t344 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t343, { ptr, i64, i64 } { ptr @.str.5721, i64 9, i64 0 }) - store { ptr, i64, i64 } %t344, ptr %a345 - %t346 = load ptr, ptr %a1 - %t347 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t346, { ptr, i64, i64 } { ptr @.str.5722, i64 8, i64 0 }) - store { ptr, i64, i64 } %t347, ptr %a348 - %t349 = load ptr, ptr %a1 - %t350 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t349, { ptr, i64, i64 } %t350) - %t351 = load ptr, ptr %a1 - %t352 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.label(ptr %t351, { ptr, i64, i64 } %t352) - %t353 = load ptr, ptr %a1 - %t354 = load { ptr, i64, i64 }, ptr %a331 - %t355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t353, { ptr, i64, i64 } { ptr @.str.5723, i64 3, i64 0 }, { ptr, i64, i64 } %t354) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5724, i64 13, i64 0 }, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a359 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.5725, i64 2, i64 0 }, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - store { ptr, i64, i64 } %t362, ptr %a366 - call void @finch_str_drop(ptr %a366) - %t367 = load { ptr, i64, i64 }, ptr %a363 - %t368 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t367, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a371 - call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) - store { ptr, i64, i64 } %t367, ptr %a372 - call void @finch_str_drop(ptr %a372) - %t373 = load { ptr, i64, i64 }, ptr %a369 - %t374 = call { ptr, i64, i64 } @finch.gen.op(ptr %t357, { ptr, i64, i64 } %t373) - store { ptr, i64, i64 } %t373, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t374, ptr %a376 - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a376 - %t379 = load { ptr, i64, i64 }, ptr %a339 - %t380 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.condBr(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t379, { ptr, i64, i64 } %t380) - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a339 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a19 - %t385 = load ptr, ptr %a1 - %t386 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5726, i64 23, i64 0 }, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.5727, i64 6, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t395, ptr %a398 - store { ptr, i64, i64 } %t396, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.5728, i64 6, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - %t413 = call { ptr, i64, i64 } @finch.gen.op(ptr %t385, { ptr, i64, i64 } %t412) - store { ptr, i64, i64 } %t412, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = call { ptr, i64, i64 } @finch.gen.load(ptr %t383, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t413) - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t415, 0 - %t418 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t418, ptr %a419 - call void @finch.copy.S_ast_Type(ptr %a420, ptr %a419) - %t421 = load %S.ast.Type, ptr %a420 - %t422 = insertvalue %S.gen.Val %t417, %S.ast.Type %t421, 1 - store %S.gen.Val %t422, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load %S.gen.Val, ptr %a423 - %t426 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 0 - %t427 = load { ptr, i64, i64 }, ptr %t426 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_copy(ptr %a429, ptr %a428) - %t430 = load { ptr, i64, i64 }, ptr %a429 - %t431 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t430, 0 - %t432 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 1 - %t433 = load %S.ast.Type, ptr %t432 - store %S.ast.Type %t433, ptr %a434 - call void @finch.copy.S_ast_Type(ptr %a435, ptr %a434) - %t436 = load %S.ast.Type, ptr %a435 - %t437 = insertvalue %S.gen.Val %t431, %S.ast.Type %t436, 1 - %t438 = load %S.ast.Node, ptr %a2 - %t439 = call %S.gen.Val @finch.gen.compare(ptr %t424, { ptr, i64, i64 } { ptr @.str.5729, i64 2, i64 0 }, %S.gen.Val %t425, %S.gen.Val %t437, %S.ast.Node %t438) - store %S.gen.Val %t437, ptr %a440 - call void @finch.drop.S_gen_Val(ptr %a440) - %t441 = extractvalue %S.gen.Val %t439, 0 - store { ptr, i64, i64 } %t441, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store %S.gen.Val %t439, ptr %a445 - call void @finch.drop.S_gen_Val(ptr %a445) - store { ptr, i64, i64 } %t444, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load { ptr, i64, i64 }, ptr %a446 - %t449 = load { ptr, i64, i64 }, ptr %a342 - %t450 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.condBr(ptr %t447, { ptr, i64, i64 } %t448, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load { ptr, i64, i64 }, ptr %a342 - call void @finch.gen.label(ptr %t451, { ptr, i64, i64 } %t452) - %t453 = load ptr, ptr %a1 - %t454 = load { ptr, i64, i64 }, ptr %a356 - %t455 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t453, { ptr, i64, i64 } { ptr @.str.5730, i64 3, i64 0 }, { ptr, i64, i64 } %t454, { ptr, i64, i64 } %t455) - %t456 = load ptr, ptr %a1 - %t457 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.br(ptr %t456, { ptr, i64, i64 } %t457) - %t458 = load ptr, ptr %a1 - %t459 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.label(ptr %t458, { ptr, i64, i64 } %t459) - %t460 = load ptr, ptr %a1 - %t461 = load ptr, ptr %a1 - %t462 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5732, i64 8, i64 0 }, ptr %a464 - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a463 - store { ptr, i64, i64 } %t466, ptr %a468 - store { ptr, i64, i64 } { ptr @.str.5733, i64 3, i64 0 }, ptr %a469 - call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469) - store { ptr, i64, i64 } %t466, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a467 - %t472 = call { ptr, i64, i64 } @finch.gen.op(ptr %t461, { ptr, i64, i64 } %t471) - store { ptr, i64, i64 } %t471, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t460, { ptr, i64, i64 } { ptr @.str.5731, i64 3, i64 0 }, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_drop(ptr %a475) - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t476, { ptr, i64, i64 } %t477) - %t478 = load ptr, ptr %a1 - %t479 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.label(ptr %t478, { ptr, i64, i64 } %t479) - %t480 = load ptr, ptr %a1 - %t481 = load %S.gen.Val, ptr %a315 - call void @finch.gen.release(ptr %t480, %S.gen.Val %t481) - %t482 = load ptr, ptr %a1 - %t483 = load { ptr, i64, i64 }, ptr %a318 - %t484 = call { ptr, i64, i64 } @finch.gen.load(ptr %t482, { ptr, i64, i64 } { ptr @.str.5734, i64 3, i64 0 }, { ptr, i64, i64 } %t483) - store { ptr, i64, i64 } %t484, ptr %a485 - %t486 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5735, i64 4, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then8890, label %endif8892 -then8890: - %t491 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t491, ptr %a492 - call void @finch_str_copy(ptr %a493, ptr %a492) - %t494 = load { ptr, i64, i64 }, ptr %a493 - %t495 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t494, 0 - %t496 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5736, i64 3, i64 0 }) - %t497 = insertvalue %S.gen.Val %t495, %S.ast.Type %t496, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t497 -endif8892: - %t498 = load ptr, ptr %a1 - %t499 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5737, i64 13, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5738, i64 3, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call { ptr, i64, i64 } @finch.gen.op(ptr %t498, { ptr, i64, i64 } %t508) - store { ptr, i64, i64 } %t508, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t509, 0 - %t512 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5739, i64 4, i64 0 }) - %t513 = insertvalue %S.gen.Val %t511, %S.ast.Type %t512, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t513 -endif8885: - %t514 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t514, ptr %a515 - store { ptr, i64, i64 } { ptr @.str.5740, i64 4, i64 0 }, ptr %a516 - %t517 = call i32 @finch_str_eq(ptr %a515, ptr %a516) - %t518 = icmp ne i32 %t517, 0 - br i1 %t518, label %then8893, label %endif8895 -then8893: - %t519 = load ptr, ptr %a1 - %t520 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t519, %S.ast.Node %t520, i64 1) - %t521 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5741, i64 3, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp eq i32 %t525, 0 - br i1 %t526, label %then8896, label %endif8898 -then8896: - %t527 = load ptr, ptr %a1 - %t528 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t527, %S.ast.Node %t528, { ptr, i64, i64 } { ptr @.str.5742, i64 31, i64 0 }) - br label %endif8898 -endif8898: - %t529 = load ptr, ptr %a1 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t531 = load { ptr, i64, i64 }, ptr %t530 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 1, %t532 - br i1 %t533, label %range8899, label %inrange8900 -range8899: - call void @finch_panic_index(ptr @.str.5743, i64 5477, i64 1, i64 %t532) - unreachable -inrange8900: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.ast.Node, ptr %t534, i64 1 - %t536 = load %S.ast.Node, ptr %t535 - %t537 = call %S.gen.Val @finch.gen.strArg(ptr %t529, %S.ast.Node %t536, { ptr, i64, i64 } { ptr @.str.5744, i64 13, i64 0 }) - store %S.gen.Val %t537, ptr %a538 - %t539 = load ptr, ptr %a1 - %t540 = load %S.gen.Val, ptr %a538 - %t541 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t539, %S.gen.Val %t540) - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = load ptr, ptr %a1 - %t544 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } { ptr @.str.5745, i64 30, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a553 - store { ptr, i64, i64 } { ptr @.str.5746, i64 6, i64 0 }, ptr %a554 - call void @finch_str_concat(ptr %a552, ptr %a553, ptr %a554) - store { ptr, i64, i64 } %t551, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load { ptr, i64, i64 }, ptr %a552 - %t557 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t556, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t556, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.5747, i64 6, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t567, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t573, ptr %a575 - store { ptr, i64, i64 } { ptr @.str.5748, i64 1, i64 0 }, ptr %a576 - call void @finch_str_concat(ptr %a574, ptr %a575, ptr %a576) - store { ptr, i64, i64 } %t573, ptr %a577 - call void @finch_str_drop(ptr %a577) - %t578 = load { ptr, i64, i64 }, ptr %a574 - call void @finch.gen.emit(ptr %t546, { ptr, i64, i64 } %t578) - store { ptr, i64, i64 } %t578, ptr %a579 - call void @finch_str_drop(ptr %a579) - %t580 = load ptr, ptr %a1 - %t581 = load %S.gen.Val, ptr %a538 - call void @finch.gen.release(ptr %t580, %S.gen.Val %t581) - %t582 = load ptr, ptr %a1 - %t583 = load { ptr, i64, i64 }, ptr %a545 - %t584 = call { ptr, i64, i64 } @finch.gen.load(ptr %t582, { ptr, i64, i64 } { ptr @.str.5749, i64 17, i64 0 }, { ptr, i64, i64 } %t583) - %t585 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t584, 0 - %t586 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5750, i64 3, i64 0 }) - %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 - %t588 = insertvalue %S.gen.Val %t587, i1 true, 2 - call void @finch_str_drop(ptr %a545) - call void @finch_str_drop(ptr %a542) - call void @finch.drop.S_gen_Val(ptr %a538) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t588 -endif8895: - %t589 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.5751, 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 %then8901, label %endif8903 -then8901: - %t594 = load ptr, ptr %a1 - %t595 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t594, %S.ast.Node %t595, i64 2) - %t596 = load ptr, ptr %a1 - %t597 = load ptr, ptr %a1 - %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t599 = load { ptr, i64, i64 }, ptr %t598 - %t600 = extractvalue { ptr, i64, i64 } %t599, 1 - %t601 = icmp uge i64 1, %t600 - br i1 %t601, label %range8904, label %inrange8905 -range8904: - call void @finch_panic_index(ptr @.str.5752, i64 5486, i64 1, i64 %t600) - unreachable -inrange8905: - %t602 = extractvalue { ptr, i64, i64 } %t599, 0 - %t603 = getelementptr inbounds %S.ast.Node, ptr %t602, i64 1 - %t604 = load %S.ast.Node, ptr %t603 - %t605 = call %S.gen.Val @finch.gen.expr(ptr %t597, %S.ast.Node %t604) - %t606 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5753, i64 3, i64 0 }) - %t607 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t608 = load { ptr, i64, i64 }, ptr %t607 - %t609 = extractvalue { ptr, i64, i64 } %t608, 1 - %t610 = icmp uge i64 1, %t609 - br i1 %t610, label %range8906, label %inrange8907 -range8906: - call void @finch_panic_index(ptr @.str.5754, i64 5486, i64 1, i64 %t609) - unreachable -inrange8907: - %t611 = extractvalue { ptr, i64, i64 } %t608, 0 - %t612 = getelementptr inbounds %S.ast.Node, ptr %t611, i64 1 - %t613 = load %S.ast.Node, ptr %t612 - %t614 = call %S.gen.Val @finch.gen.coerce(ptr %t596, %S.gen.Val %t605, %S.ast.Type %t606, %S.ast.Node %t613, { ptr, i64, i64 } { ptr @.str.5755, i64 12, i64 0 }) - store %S.gen.Val %t605, ptr %a615 - call void @finch.drop.S_gen_Val(ptr %a615) - store %S.ast.Type %t606, ptr %a616 - call void @finch.drop.S_ast_Type(ptr %a616) - %t617 = extractvalue %S.gen.Val %t614, 0 - store { ptr, i64, i64 } %t617, ptr %a618 - call void @finch_str_copy(ptr %a619, ptr %a618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store %S.gen.Val %t614, ptr %a621 - call void @finch.drop.S_gen_Val(ptr %a621) - store { ptr, i64, i64 } %t620, ptr %a622 - %t623 = load ptr, ptr %a1 - %t624 = load ptr, ptr %a1 - %t625 = load ptr, ptr %a1 - %t626 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t627 = load { ptr, i64, i64 }, ptr %t626 - %t628 = extractvalue { ptr, i64, i64 } %t627, 1 - %t629 = icmp uge i64 2, %t628 - br i1 %t629, label %range8908, label %inrange8909 -range8908: - call void @finch_panic_index(ptr @.str.5756, i64 5487, i64 2, i64 %t628) - unreachable -inrange8909: - %t630 = extractvalue { ptr, i64, i64 } %t627, 0 - %t631 = getelementptr inbounds %S.ast.Node, ptr %t630, i64 2 - %t632 = load %S.ast.Node, ptr %t631 - %t633 = load %S.ast.Type, ptr %a15 - %t634 = call %S.gen.Val @finch.gen.exprWant(ptr %t625, %S.ast.Node %t632, %S.ast.Type %t633) - %t635 = load %S.ast.Type, ptr %a15 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = extractvalue { ptr, i64, i64 } %t637, 1 - %t639 = icmp uge i64 2, %t638 - br i1 %t639, label %range8910, label %inrange8911 -range8910: - call void @finch_panic_index(ptr @.str.5757, i64 5487, i64 2, i64 %t638) - unreachable -inrange8911: - %t640 = extractvalue { ptr, i64, i64 } %t637, 0 - %t641 = getelementptr inbounds %S.ast.Node, ptr %t640, i64 2 - %t642 = load %S.ast.Node, ptr %t641 - %t643 = call %S.gen.Val @finch.gen.coerce(ptr %t624, %S.gen.Val %t634, %S.ast.Type %t635, %S.ast.Node %t642, { ptr, i64, i64 } { ptr @.str.5758, i64 11, i64 0 }) - store %S.gen.Val %t634, ptr %a644 - call void @finch.drop.S_gen_Val(ptr %a644) - %t645 = call { ptr, i64, i64 } @finch.gen.own(ptr %t623, %S.gen.Val %t643) - store %S.gen.Val %t643, ptr %a646 - call void @finch.drop.S_gen_Val(ptr %a646) - store { ptr, i64, i64 } %t645, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = load ptr, ptr %a1 - %t650 = icmp eq ptr %t649, null - br i1 %t650, label %panic8912, label %ok8913 -panic8912: - call void @finch_panic(ptr @.str.5759, i64 5488, ptr @.str.5760) - unreachable -ok8913: - %t651 = getelementptr inbounds %S.gen.Gen, ptr %t649, i32 0, i32 1 - %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t653 = load i64, ptr %t652 - %t654 = load { ptr, i64, i64 }, ptr %t651 - %t655 = extractvalue { ptr, i64, i64 } %t654, 1 - %t656 = icmp uge i64 %t653, %t655 - br i1 %t656, label %range8914, label %inrange8915 -range8914: - call void @finch_panic_index(ptr @.str.5761, i64 5488, i64 %t653, i64 %t655) - unreachable -inrange8915: - %t657 = extractvalue { ptr, i64, i64 } %t654, 0 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i64 %t653 - %t659 = load { ptr, i64, i64 }, ptr %t658 - %t660 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t648, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5762, i64 36, i64 0 }, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - %t667 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t667, ptr %a669 - store { ptr, i64, i64 } { ptr @.str.5763, i64 6, i64 0 }, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - store { ptr, i64, i64 } %t667, ptr %a671 - call void @finch_str_drop(ptr %a671) - %t672 = load { ptr, i64, i64 }, ptr %a668 - %t673 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t672, ptr %a675 - store { ptr, i64, i64 } %t673, ptr %a676 - call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a674 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.5764, i64 6, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a15 - %t686 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t684, %S.ast.Type %t685) - store { ptr, i64, i64 } %t683, ptr %a688 - store { ptr, i64, i64 } %t686, ptr %a689 - call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689) - store { ptr, i64, i64 } %t683, ptr %a690 - call void @finch_str_drop(ptr %a690) - store { ptr, i64, i64 } %t686, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a687 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.5765, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5766, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t710 = load i64, ptr %t709 - call void @finch_str_from_int(ptr %a711, i64 %t710) - %t712 = load { ptr, i64, i64 }, ptr %a711 - store { ptr, i64, i64 } %t708, ptr %a714 - store { ptr, i64, i64 } %t712, ptr %a715 - call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715) - store { ptr, i64, i64 } %t708, ptr %a716 - call void @finch_str_drop(ptr %a716) - store { ptr, i64, i64 } %t712, ptr %a717 - call void @finch_str_drop(ptr %a717) - %t718 = load { ptr, i64, i64 }, ptr %a713 - store { ptr, i64, i64 } %t718, ptr %a720 - store { ptr, i64, i64 } { ptr @.str.5767, i64 1, i64 0 }, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t718, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.emit(ptr %t662, { ptr, i64, i64 } %t723) - store { ptr, i64, i64 } %t723, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a3 - %t727 = call { ptr, i64, i64 } @finch.gen.load(ptr %t725, { ptr, i64, i64 } { ptr @.str.5768, i64 3, i64 0 }, { ptr, i64, i64 } %t726) - store { ptr, i64, i64 } %t727, ptr %a728 - %t729 = load ptr, ptr %a1 - %t730 = load { ptr, i64, i64 }, ptr %a19 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = load ptr, ptr %a1 - %t733 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5769, i64 23, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.5770, i64 6, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t742, ptr %a745 - store { ptr, i64, i64 } %t743, ptr %a746 - call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746) - store { ptr, i64, i64 } %t742, ptr %a747 - call void @finch_str_drop(ptr %a747) - %t748 = load { ptr, i64, i64 }, ptr %a744 - store { ptr, i64, i64 } %t748, ptr %a750 - store { ptr, i64, i64 } { ptr @.str.5771, i64 6, i64 0 }, ptr %a751 - call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751) - store { ptr, i64, i64 } %t748, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a749 - %t754 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t753, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a755 - %t760 = call { ptr, i64, i64 } @finch.gen.op(ptr %t732, { ptr, i64, i64 } %t759) - store { ptr, i64, i64 } %t759, ptr %a761 - call void @finch_str_drop(ptr %a761) - call void @finch.gen.store(ptr %t729, { ptr, i64, i64 } %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t760) - store { ptr, i64, i64 } %t760, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5772, i64 4, i64 0 }) - %t764 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t763, 1 - call void @finch_str_drop(ptr %a728) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a622) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t764 -endif8903: - %t765 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t765, ptr %a766 - store { ptr, i64, i64 } { ptr @.str.5773, i64 6, i64 0 }, ptr %a767 - %t768 = call i32 @finch_str_eq(ptr %a766, ptr %a767) - %t769 = icmp ne i32 %t768, 0 - br i1 %t769, label %then8916, label %endif8918 -then8916: - %t770 = load ptr, ptr %a1 - %t771 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t770, %S.ast.Node %t771, i64 1) - %t772 = load ptr, ptr %a1 - %t773 = load ptr, ptr %a1 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t775 = load { ptr, i64, i64 }, ptr %t774 - %t776 = extractvalue { ptr, i64, i64 } %t775, 1 - %t777 = icmp uge i64 1, %t776 - br i1 %t777, label %range8919, label %inrange8920 -range8919: - call void @finch_panic_index(ptr @.str.5774, i64 5496, i64 1, i64 %t776) - unreachable -inrange8920: - %t778 = extractvalue { ptr, i64, i64 } %t775, 0 - %t779 = getelementptr inbounds %S.ast.Node, ptr %t778, i64 1 - %t780 = load %S.ast.Node, ptr %t779 - %t781 = call %S.gen.Val @finch.gen.expr(ptr %t773, %S.ast.Node %t780) - %t782 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5775, i64 3, i64 0 }) - %t783 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t784 = load { ptr, i64, i64 }, ptr %t783 - %t785 = extractvalue { ptr, i64, i64 } %t784, 1 - %t786 = icmp uge i64 1, %t785 - br i1 %t786, label %range8921, label %inrange8922 -range8921: - call void @finch_panic_index(ptr @.str.5776, i64 5496, i64 1, i64 %t785) - unreachable -inrange8922: - %t787 = extractvalue { ptr, i64, i64 } %t784, 0 - %t788 = getelementptr inbounds %S.ast.Node, ptr %t787, i64 1 - %t789 = load %S.ast.Node, ptr %t788 - %t790 = call %S.gen.Val @finch.gen.coerce(ptr %t772, %S.gen.Val %t781, %S.ast.Type %t782, %S.ast.Node %t789, { ptr, i64, i64 } { ptr @.str.5777, i64 12, i64 0 }) - store %S.gen.Val %t781, ptr %a791 - call void @finch.drop.S_gen_Val(ptr %a791) - store %S.ast.Type %t782, ptr %a792 - call void @finch.drop.S_ast_Type(ptr %a792) - %t793 = extractvalue %S.gen.Val %t790, 0 - store { ptr, i64, i64 } %t793, ptr %a794 - call void @finch_str_copy(ptr %a795, ptr %a794) - %t796 = load { ptr, i64, i64 }, ptr %a795 - store %S.gen.Val %t790, ptr %a797 - call void @finch.drop.S_gen_Val(ptr %a797) - store { ptr, i64, i64 } %t796, ptr %a798 - %t799 = load ptr, ptr %a1 - %t800 = load { ptr, i64, i64 }, ptr %a798 - %t801 = load ptr, ptr %a1 - %t802 = load { ptr, i64, i64 }, ptr %a39 - %t803 = call { ptr, i64, i64 } @finch.gen.load(ptr %t801, { ptr, i64, i64 } { ptr @.str.5778, i64 3, i64 0 }, { ptr, i64, i64 } %t802) - %t804 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t799, { ptr, i64, i64 } %t800, { ptr, i64, i64 } %t803, %S.ast.Node %t804) - store { ptr, i64, i64 } %t803, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load ptr, ptr %a1 - %t807 = load { ptr, i64, i64 }, ptr %a3 - %t808 = call { ptr, i64, i64 } @finch.gen.load(ptr %t806, { ptr, i64, i64 } { ptr @.str.5779, i64 3, i64 0 }, { ptr, i64, i64 } %t807) - store { ptr, i64, i64 } %t808, ptr %a809 - %t810 = load ptr, ptr %a1 - %t811 = load { ptr, i64, i64 }, ptr %a19 - %t812 = load ptr, ptr %a1 - %t813 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5780, i64 23, i64 0 }, ptr %a815 - store { ptr, i64, i64 } %t813, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.5781, i64 6, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = load { ptr, i64, i64 }, ptr %a809 - store { ptr, i64, i64 } %t822, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t822, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.5782, i64 6, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t833, ptr %a836 - store { ptr, i64, i64 } %t834, ptr %a837 - call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) - store { ptr, i64, i64 } %t833, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a835 - %t840 = call { ptr, i64, i64 } @finch.gen.op(ptr %t812, { ptr, i64, i64 } %t839) - store { ptr, i64, i64 } %t839, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = call { ptr, i64, i64 } @finch.gen.load(ptr %t810, { ptr, i64, i64 } %t811, { ptr, i64, i64 } %t840) - store { ptr, i64, i64 } %t840, ptr %a843 - call void @finch_str_drop(ptr %a843) - store { ptr, i64, i64 } %t842, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5783, i64 36, i64 0 }, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a847 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5784, i64 6, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - %t856 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t855, ptr %a858 - store { ptr, i64, i64 } %t856, ptr %a859 - call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) - store { ptr, i64, i64 } %t855, ptr %a860 - call void @finch_str_drop(ptr %a860) - %t861 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } %t861, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5785, i64 6, i64 0 }, ptr %a864 - call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864) - store { ptr, i64, i64 } %t861, ptr %a865 - call void @finch_str_drop(ptr %a865) - %t866 = load { ptr, i64, i64 }, ptr %a862 - %t867 = load ptr, ptr %a1 - %t868 = load %S.ast.Type, ptr %a15 - %t869 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t867, %S.ast.Type %t868) - store { ptr, i64, i64 } %t866, ptr %a871 - store { ptr, i64, i64 } %t869, ptr %a872 - call void @finch_str_concat(ptr %a870, ptr %a871, ptr %a872) - store { ptr, i64, i64 } %t866, ptr %a873 - call void @finch_str_drop(ptr %a873) - store { ptr, i64, i64 } %t869, ptr %a874 - call void @finch_str_drop(ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a870 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5786, i64 1, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.emit(ptr %t845, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = load { ptr, i64, i64 }, ptr %a844 - store { ptr, i64, i64 } %t882, ptr %a883 - call void @finch_str_copy(ptr %a884, ptr %a883) - %t885 = load { ptr, i64, i64 }, ptr %a884 - %t886 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t885, 0 - %t887 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t887, ptr %a888 - call void @finch.copy.S_ast_Type(ptr %a889, ptr %a888) - %t890 = load %S.ast.Type, ptr %a889 - %t891 = insertvalue %S.gen.Val %t886, %S.ast.Type %t890, 1 - %t892 = load ptr, ptr %a1 - %t893 = load %S.ast.Type, ptr %a15 - %t894 = call i1 @finch.gen.owning(ptr %t892, %S.ast.Type %t893) - %t895 = insertvalue %S.gen.Val %t891, i1 %t894, 2 - call void @finch_str_drop(ptr %a844) - call void @finch_str_drop(ptr %a809) - call void @finch_str_drop(ptr %a798) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t895 -endif8918: - %t896 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t896, ptr %a897 - store { ptr, i64, i64 } { ptr @.str.5787, i64 6, i64 0 }, ptr %a898 - %t899 = call i32 @finch_str_eq(ptr %a897, ptr %a898) - %t900 = icmp ne i32 %t899, 0 - br i1 %t900, label %then8923, label %endif8925 -then8923: - %t901 = load ptr, ptr %a1 - %t902 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t901, %S.ast.Node %t902, i64 1) - %t903 = load ptr, ptr %a1 - %t904 = load ptr, ptr %a1 - %t905 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t906 = load { ptr, i64, i64 }, ptr %t905 - %t907 = extractvalue { ptr, i64, i64 } %t906, 1 - %t908 = icmp uge i64 1, %t907 - br i1 %t908, label %range8926, label %inrange8927 -range8926: - call void @finch_panic_index(ptr @.str.5788, i64 5505, i64 1, i64 %t907) - unreachable -inrange8927: - %t909 = extractvalue { ptr, i64, i64 } %t906, 0 - %t910 = getelementptr inbounds %S.ast.Node, ptr %t909, i64 1 - %t911 = load %S.ast.Node, ptr %t910 - %t912 = call %S.gen.Val @finch.gen.expr(ptr %t904, %S.ast.Node %t911) - %t913 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5789, i64 3, i64 0 }) - %t914 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t915 = load { ptr, i64, i64 }, ptr %t914 - %t916 = extractvalue { ptr, i64, i64 } %t915, 1 - %t917 = icmp uge i64 1, %t916 - br i1 %t917, label %range8928, label %inrange8929 -range8928: - call void @finch_panic_index(ptr @.str.5790, i64 5505, i64 1, i64 %t916) - unreachable -inrange8929: - %t918 = extractvalue { ptr, i64, i64 } %t915, 0 - %t919 = getelementptr inbounds %S.ast.Node, ptr %t918, i64 1 - %t920 = load %S.ast.Node, ptr %t919 - %t921 = call %S.gen.Val @finch.gen.coerce(ptr %t903, %S.gen.Val %t912, %S.ast.Type %t913, %S.ast.Node %t920, { ptr, i64, i64 } { ptr @.str.5791, i64 14, i64 0 }) - store %S.gen.Val %t912, ptr %a922 - call void @finch.drop.S_gen_Val(ptr %a922) - store %S.ast.Type %t913, ptr %a923 - call void @finch.drop.S_ast_Type(ptr %a923) - %t924 = extractvalue %S.gen.Val %t921, 0 - store { ptr, i64, i64 } %t924, ptr %a925 - call void @finch_str_copy(ptr %a926, ptr %a925) - %t927 = load { ptr, i64, i64 }, ptr %a926 - store %S.gen.Val %t921, ptr %a928 - call void @finch.drop.S_gen_Val(ptr %a928) - store { ptr, i64, i64 } %t927, ptr %a929 - %t930 = load ptr, ptr %a1 - %t931 = load { ptr, i64, i64 }, ptr %a3 - %t932 = load %S.ast.Type, ptr %a4 - %t933 = load { ptr, i64, i64 }, ptr %a929 - call void @finch.gen.dropFrom(ptr %t930, { ptr, i64, i64 } %t931, %S.ast.Type %t932, { ptr, i64, i64 } %t933) - %t934 = load ptr, ptr %a1 - %t935 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5792, i64 32, i64 0 }, ptr %a937 - store { ptr, i64, i64 } %t935, ptr %a938 - call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938) - %t939 = load { ptr, i64, i64 }, ptr %a936 - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.5793, i64 6, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a929 - store { ptr, i64, i64 } %t944, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - store { ptr, i64, i64 } %t944, ptr %a949 - call void @finch_str_drop(ptr %a949) - %t950 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5794, i64 6, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = load ptr, ptr %a1 - %t957 = load %S.ast.Type, ptr %a15 - %t958 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t956, %S.ast.Type %t957) - store { ptr, i64, i64 } %t955, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t955, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t958, ptr %a963 - call void @finch_str_drop(ptr %a963) - %t964 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t964, ptr %a966 - store { ptr, i64, i64 } { ptr @.str.5795, i64 1, i64 0 }, ptr %a967 - call void @finch_str_concat(ptr %a965, ptr %a966, ptr %a967) - store { ptr, i64, i64 } %t964, ptr %a968 - call void @finch_str_drop(ptr %a968) - %t969 = load { ptr, i64, i64 }, ptr %a965 - call void @finch.gen.emit(ptr %t934, { ptr, i64, i64 } %t969) - store { ptr, i64, i64 } %t969, ptr %a970 - call void @finch_str_drop(ptr %a970) - %t971 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5796, i64 4, i64 0 }) - %t972 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t971, 1 - call void @finch_str_drop(ptr %a929) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t972 -endif8925: - %t973 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t973, ptr %a974 - store { ptr, i64, i64 } { ptr @.str.5797, i64 7, i64 0 }, ptr %a975 - %t976 = call i32 @finch_str_eq(ptr %a974, ptr %a975) - %t977 = icmp ne i32 %t976, 0 - br i1 %t977, label %then8930, label %endif8932 -then8930: - %t978 = load ptr, ptr %a1 - %t979 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t978, %S.ast.Node %t979, i64 0) - %t980 = load ptr, ptr %a1 - %t981 = load { ptr, i64, i64 }, ptr %a39 - %t982 = call { ptr, i64, i64 } @finch.gen.load(ptr %t980, { ptr, i64, i64 } { ptr @.str.5798, i64 3, i64 0 }, { ptr, i64, i64 } %t981) - store { ptr, i64, i64 } %t982, ptr %a983 - %t984 = load ptr, ptr %a1 - %t985 = load { ptr, i64, i64 }, ptr %a3 - %t986 = call { ptr, i64, i64 } @finch.gen.load(ptr %t984, { ptr, i64, i64 } { ptr @.str.5799, i64 3, i64 0 }, { ptr, i64, i64 } %t985) - store { ptr, i64, i64 } %t986, ptr %a987 - %t988 = load ptr, ptr %a1 - %t989 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5800, i64 9, i64 0 }, ptr %a991 - store { ptr, i64, i64 } %t989, ptr %a992 - call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t993, ptr %a995 - store { ptr, i64, i64 } { ptr @.str.5801, i64 3, i64 0 }, ptr %a996 - call void @finch_str_concat(ptr %a994, ptr %a995, ptr %a996) - store { ptr, i64, i64 } %t993, ptr %a997 - call void @finch_str_drop(ptr %a997) - %t998 = load { ptr, i64, i64 }, ptr %a994 - %t999 = call { ptr, i64, i64 } @finch.gen.op(ptr %t988, { ptr, i64, i64 } %t998) - store { ptr, i64, i64 } %t998, ptr %a1000 - call void @finch_str_drop(ptr %a1000) - store { ptr, i64, i64 } %t999, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = load { ptr, i64, i64 }, ptr %a1001 - %t1004 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1002, { ptr, i64, i64 } %t1003) - store { ptr, i64, i64 } %t1004, ptr %a1005 - %t1006 = load ptr, ptr %a1 - %t1007 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5802, i64 23, i64 0 }, ptr %a1009 - store { ptr, i64, i64 } %t1007, ptr %a1010 - call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1008 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5803, i64 6, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1016, ptr %a1019 - store { ptr, i64, i64 } %t1017, ptr %a1020 - call void @finch_str_concat(ptr %a1018, ptr %a1019, ptr %a1020) - store { ptr, i64, i64 } %t1016, ptr %a1021 - call void @finch_str_drop(ptr %a1021) - %t1022 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } %t1022, ptr %a1024 - store { ptr, i64, i64 } { ptr @.str.5804, i64 6, i64 0 }, ptr %a1025 - call void @finch_str_concat(ptr %a1023, ptr %a1024, ptr %a1025) - store { ptr, i64, i64 } %t1022, ptr %a1026 - call void @finch_str_drop(ptr %a1026) - %t1027 = load { ptr, i64, i64 }, ptr %a1023 - %t1028 = load { ptr, i64, i64 }, ptr %a1005 - %t1029 = extractvalue { ptr, i64, i64 } %t1028, 1 - %t1030 = icmp uge i64 3, %t1029 - br i1 %t1030, label %range8933, label %inrange8934 -range8933: - call void @finch_panic_index(ptr @.str.5805, i64 5516, i64 3, i64 %t1029) - unreachable -inrange8934: - %t1031 = extractvalue { ptr, i64, i64 } %t1028, 0 - %t1032 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1031, i64 3 - %t1033 = load { ptr, i64, i64 }, ptr %t1032 - store { ptr, i64, i64 } %t1027, ptr %a1035 - store { ptr, i64, i64 } %t1033, ptr %a1036 - call void @finch_str_concat(ptr %a1034, ptr %a1035, ptr %a1036) - store { ptr, i64, i64 } %t1027, ptr %a1037 - call void @finch_str_drop(ptr %a1037) - %t1038 = load { ptr, i64, i64 }, ptr %a1034 - %t1039 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1006, { ptr, i64, i64 } %t1038) - store { ptr, i64, i64 } %t1038, ptr %a1040 - call void @finch_str_drop(ptr %a1040) - store { ptr, i64, i64 } %t1039, ptr %a1041 - %t1042 = load ptr, ptr %a1 - %t1043 = load ptr, ptr %a1 - %t1044 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5807, i64 8, i64 0 }, ptr %a1046 - store { ptr, i64, i64 } %t1044, ptr %a1047 - call void @finch_str_concat(ptr %a1045, ptr %a1046, ptr %a1047) - %t1048 = load { ptr, i64, i64 }, ptr %a1045 - store { ptr, i64, i64 } %t1048, ptr %a1050 - store { ptr, i64, i64 } { ptr @.str.5808, i64 3, i64 0 }, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - store { ptr, i64, i64 } %t1048, ptr %a1052 - call void @finch_str_drop(ptr %a1052) - %t1053 = load { ptr, i64, i64 }, ptr %a1049 - %t1054 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1043, { ptr, i64, i64 } %t1053) - store { ptr, i64, i64 } %t1053, ptr %a1055 - call void @finch_str_drop(ptr %a1055) - store { ptr, i64, i64 } { ptr @.str.5806, i64 8, i64 0 }, ptr %a1057 - store { ptr, i64, i64 } %t1054, ptr %a1058 - call void @finch_str_concat(ptr %a1056, ptr %a1057, ptr %a1058) - store { ptr, i64, i64 } %t1054, ptr %a1059 - call void @finch_str_drop(ptr %a1059) - %t1060 = load { ptr, i64, i64 }, ptr %a1056 - store { ptr, i64, i64 } %t1060, ptr %a1062 - store { ptr, i64, i64 } { ptr @.str.5809, i64 2, i64 0 }, ptr %a1063 - call void @finch_str_concat(ptr %a1061, ptr %a1062, ptr %a1063) - store { ptr, i64, i64 } %t1060, ptr %a1064 - call void @finch_str_drop(ptr %a1064) - %t1065 = load { ptr, i64, i64 }, ptr %a1061 - %t1066 = load { ptr, i64, i64 }, ptr %a1005 - %t1067 = extractvalue { ptr, i64, i64 } %t1066, 1 - %t1068 = icmp uge i64 3, %t1067 - br i1 %t1068, label %range8935, label %inrange8936 -range8935: - call void @finch_panic_index(ptr @.str.5810, i64 5517, i64 3, i64 %t1067) - unreachable -inrange8936: - %t1069 = extractvalue { ptr, i64, i64 } %t1066, 0 - %t1070 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1069, i64 3 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1065, ptr %a1073 - store { ptr, i64, i64 } %t1071, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1065, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1042, { ptr, i64, i64 } %t1076) - store { ptr, i64, i64 } %t1076, ptr %a1078 - call void @finch_str_drop(ptr %a1078) - store { ptr, i64, i64 } %t1077, ptr %a1079 - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5811, i64 23, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - %t1085 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1085, ptr %a1087 - store { ptr, i64, i64 } { ptr @.str.5812, i64 6, i64 0 }, ptr %a1088 - call void @finch_str_concat(ptr %a1086, ptr %a1087, ptr %a1088) - store { ptr, i64, i64 } %t1085, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load { ptr, i64, i64 }, ptr %a1086 - %t1091 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1090, ptr %a1093 - store { ptr, i64, i64 } %t1091, ptr %a1094 - call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) - store { ptr, i64, i64 } %t1090, ptr %a1095 - call void @finch_str_drop(ptr %a1095) - %t1096 = load { ptr, i64, i64 }, ptr %a1092 - store { ptr, i64, i64 } %t1096, ptr %a1098 - store { ptr, i64, i64 } { ptr @.str.5813, i64 6, i64 0 }, ptr %a1099 - call void @finch_str_concat(ptr %a1097, ptr %a1098, ptr %a1099) - store { ptr, i64, i64 } %t1096, ptr %a1100 - call void @finch_str_drop(ptr %a1100) - %t1101 = load { ptr, i64, i64 }, ptr %a1097 - %t1102 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1101, ptr %a1104 - store { ptr, i64, i64 } %t1102, ptr %a1105 - call void @finch_str_concat(ptr %a1103, ptr %a1104, ptr %a1105) - store { ptr, i64, i64 } %t1101, ptr %a1106 - call void @finch_str_drop(ptr %a1106) - %t1107 = load { ptr, i64, i64 }, ptr %a1103 - %t1108 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1080, { ptr, i64, i64 } %t1107) - store { ptr, i64, i64 } %t1107, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - store { ptr, i64, i64 } %t1108, ptr %a1110 - %t1111 = load ptr, ptr %a1 - %t1112 = load { ptr, i64, i64 }, ptr %a19 - %t1113 = load { ptr, i64, i64 }, ptr %a1041 - %t1114 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1111, { ptr, i64, i64 } %t1112, { ptr, i64, i64 } %t1113) - store { ptr, i64, i64 } %t1114, ptr %a1115 - %t1116 = load ptr, ptr %a1 - %t1117 = load { ptr, i64, i64 }, ptr %a19 - %t1118 = load { ptr, i64, i64 }, ptr %a1110 - %t1119 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1116, { ptr, i64, i64 } %t1117, { ptr, i64, i64 } %t1118) - store { ptr, i64, i64 } %t1119, ptr %a1120 - %t1121 = load ptr, ptr %a1 - %t1122 = load { ptr, i64, i64 }, ptr %a19 - %t1123 = load { ptr, i64, i64 }, ptr %a1120 - %t1124 = load { ptr, i64, i64 }, ptr %a1041 - call void @finch.gen.store(ptr %t1121, { ptr, i64, i64 } %t1122, { ptr, i64, i64 } %t1123, { ptr, i64, i64 } %t1124) - %t1125 = load ptr, ptr %a1 - %t1126 = load { ptr, i64, i64 }, ptr %a19 - %t1127 = load { ptr, i64, i64 }, ptr %a1115 - %t1128 = load { ptr, i64, i64 }, ptr %a1110 - call void @finch.gen.store(ptr %t1125, { ptr, i64, i64 } %t1126, { ptr, i64, i64 } %t1127, { ptr, i64, i64 } %t1128) - %t1129 = load ptr, ptr %a1 - %t1130 = load { ptr, i64, i64 }, ptr %a1005 - call void @finch.gen.loopEnd(ptr %t1129, { ptr, i64, i64 } %t1130) - %t1131 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5814, i64 4, i64 0 }) - %t1132 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1131, 1 - call void @finch_str_drop(ptr %a1120) - call void @finch_str_drop(ptr %a1115) - call void @finch_str_drop(ptr %a1110) - call void @finch_str_drop(ptr %a1079) - call void @finch_str_drop(ptr %a1041) - call void @finch.drop.arr_str(ptr %a1005) - call void @finch_str_drop(ptr %a1001) - call void @finch_str_drop(ptr %a987) - call void @finch_str_drop(ptr %a983) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1132 -endif8932: - %t1133 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1133, ptr %a1134 - store { ptr, i64, i64 } { ptr @.str.5815, i64 5, i64 0 }, ptr %a1135 - %t1136 = call i32 @finch_str_eq(ptr %a1134, ptr %a1135) - %t1137 = icmp ne i32 %t1136, 0 - br i1 %t1137, label %then8937, label %endif8939 -then8937: - %t1138 = load ptr, ptr %a1 - %t1139 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1138, %S.ast.Node %t1139, i64 2) - %t1140 = load ptr, ptr %a1 - %t1141 = load ptr, ptr %a1 - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1143 = load { ptr, i64, i64 }, ptr %t1142 - %t1144 = extractvalue { ptr, i64, i64 } %t1143, 1 - %t1145 = icmp uge i64 1, %t1144 - br i1 %t1145, label %range8940, label %inrange8941 -range8940: - call void @finch_panic_index(ptr @.str.5816, i64 5528, i64 1, i64 %t1144) - unreachable -inrange8941: - %t1146 = extractvalue { ptr, i64, i64 } %t1143, 0 - %t1147 = getelementptr inbounds %S.ast.Node, ptr %t1146, i64 1 - %t1148 = load %S.ast.Node, ptr %t1147 - %t1149 = call %S.gen.Val @finch.gen.expr(ptr %t1141, %S.ast.Node %t1148) - %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5817, i64 3, i64 0 }) - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 1, %t1153 - br i1 %t1154, label %range8942, label %inrange8943 -range8942: - call void @finch_panic_index(ptr @.str.5818, i64 5528, i64 1, i64 %t1153) - unreachable -inrange8943: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 1 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.coerce(ptr %t1140, %S.gen.Val %t1149, %S.ast.Type %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5819, i64 9, i64 0 }) - store %S.gen.Val %t1149, ptr %a1159 - call void @finch.drop.S_gen_Val(ptr %a1159) - store %S.ast.Type %t1150, ptr %a1160 - call void @finch.drop.S_ast_Type(ptr %a1160) - %t1161 = extractvalue %S.gen.Val %t1158, 0 - store { ptr, i64, i64 } %t1161, ptr %a1162 - call void @finch_str_copy(ptr %a1163, ptr %a1162) - %t1164 = load { ptr, i64, i64 }, ptr %a1163 - store %S.gen.Val %t1158, ptr %a1165 - call void @finch.drop.S_gen_Val(ptr %a1165) - store { ptr, i64, i64 } %t1164, ptr %a1166 - %t1167 = load ptr, ptr %a1 - %t1168 = load ptr, ptr %a1 - %t1169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1170 = load { ptr, i64, i64 }, ptr %t1169 - %t1171 = extractvalue { ptr, i64, i64 } %t1170, 1 - %t1172 = icmp uge i64 2, %t1171 - br i1 %t1172, label %range8944, label %inrange8945 -range8944: - call void @finch_panic_index(ptr @.str.5820, i64 5529, i64 2, i64 %t1171) - unreachable -inrange8945: - %t1173 = extractvalue { ptr, i64, i64 } %t1170, 0 - %t1174 = getelementptr inbounds %S.ast.Node, ptr %t1173, i64 2 - %t1175 = load %S.ast.Node, ptr %t1174 - %t1176 = call %S.gen.Val @finch.gen.expr(ptr %t1168, %S.ast.Node %t1175) - %t1177 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5821, i64 3, i64 0 }) - %t1178 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1179 = load { ptr, i64, i64 }, ptr %t1178 - %t1180 = extractvalue { ptr, i64, i64 } %t1179, 1 - %t1181 = icmp uge i64 2, %t1180 - br i1 %t1181, label %range8946, label %inrange8947 -range8946: - call void @finch_panic_index(ptr @.str.5822, i64 5529, i64 2, i64 %t1180) - unreachable -inrange8947: - %t1182 = extractvalue { ptr, i64, i64 } %t1179, 0 - %t1183 = getelementptr inbounds %S.ast.Node, ptr %t1182, i64 2 - %t1184 = load %S.ast.Node, ptr %t1183 - %t1185 = call %S.gen.Val @finch.gen.coerce(ptr %t1167, %S.gen.Val %t1176, %S.ast.Type %t1177, %S.ast.Node %t1184, { ptr, i64, i64 } { ptr @.str.5823, i64 7, i64 0 }) - store %S.gen.Val %t1176, ptr %a1186 - call void @finch.drop.S_gen_Val(ptr %a1186) - store %S.ast.Type %t1177, ptr %a1187 - call void @finch.drop.S_ast_Type(ptr %a1187) - %t1188 = extractvalue %S.gen.Val %t1185, 0 - store { ptr, i64, i64 } %t1188, ptr %a1189 - call void @finch_str_copy(ptr %a1190, ptr %a1189) - %t1191 = load { ptr, i64, i64 }, ptr %a1190 - store %S.gen.Val %t1185, ptr %a1192 - call void @finch.drop.S_gen_Val(ptr %a1192) - store { ptr, i64, i64 } %t1191, ptr %a1193 - %t1194 = load ptr, ptr %a1 - %t1195 = load { ptr, i64, i64 }, ptr %a39 - %t1196 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1194, { ptr, i64, i64 } { ptr @.str.5824, i64 3, i64 0 }, { ptr, i64, i64 } %t1195) - store { ptr, i64, i64 } %t1196, ptr %a1197 - %t1198 = load ptr, ptr %a1 - %t1199 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5825, i64 13, i64 0 }, ptr %a1201 - store { ptr, i64, i64 } %t1199, ptr %a1202 - call void @finch_str_concat(ptr %a1200, ptr %a1201, ptr %a1202) - %t1203 = load { ptr, i64, i64 }, ptr %a1200 - store { ptr, i64, i64 } %t1203, ptr %a1205 - store { ptr, i64, i64 } { ptr @.str.5826, i64 3, i64 0 }, ptr %a1206 - call void @finch_str_concat(ptr %a1204, ptr %a1205, ptr %a1206) - store { ptr, i64, i64 } %t1203, ptr %a1207 - call void @finch_str_drop(ptr %a1207) - %t1208 = load { ptr, i64, i64 }, ptr %a1204 - %t1209 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1198, { ptr, i64, i64 } %t1208) - store { ptr, i64, i64 } %t1208, ptr %a1210 - call void @finch_str_drop(ptr %a1210) - store { ptr, i64, i64 } %t1209, ptr %a1211 - %t1212 = load ptr, ptr %a1 - %t1213 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5827, i64 13, i64 0 }, ptr %a1215 - store { ptr, i64, i64 } %t1213, ptr %a1216 - call void @finch_str_concat(ptr %a1214, ptr %a1215, ptr %a1216) - %t1217 = load { ptr, i64, i64 }, ptr %a1214 - store { ptr, i64, i64 } %t1217, ptr %a1219 - store { ptr, i64, i64 } { ptr @.str.5828, i64 2, i64 0 }, ptr %a1220 - call void @finch_str_concat(ptr %a1218, ptr %a1219, ptr %a1220) - store { ptr, i64, i64 } %t1217, ptr %a1221 - call void @finch_str_drop(ptr %a1221) - %t1222 = load { ptr, i64, i64 }, ptr %a1218 - %t1223 = load { ptr, i64, i64 }, ptr %a1197 - store { ptr, i64, i64 } %t1222, ptr %a1225 - store { ptr, i64, i64 } %t1223, ptr %a1226 - call void @finch_str_concat(ptr %a1224, ptr %a1225, ptr %a1226) - store { ptr, i64, i64 } %t1222, ptr %a1227 - call void @finch_str_drop(ptr %a1227) - %t1228 = load { ptr, i64, i64 }, ptr %a1224 - %t1229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1212, { ptr, i64, i64 } %t1228) - store { ptr, i64, i64 } %t1228, ptr %a1230 - call void @finch_str_drop(ptr %a1230) - store { ptr, i64, i64 } %t1229, ptr %a1231 - %t1232 = load ptr, ptr %a1 - %t1233 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5829, i64 13, i64 0 }, ptr %a1235 - store { ptr, i64, i64 } %t1233, ptr %a1236 - call void @finch_str_concat(ptr %a1234, ptr %a1235, ptr %a1236) - %t1237 = load { ptr, i64, i64 }, ptr %a1234 - store { ptr, i64, i64 } %t1237, ptr %a1239 - store { ptr, i64, i64 } { ptr @.str.5830, i64 2, i64 0 }, ptr %a1240 - call void @finch_str_concat(ptr %a1238, ptr %a1239, ptr %a1240) - store { ptr, i64, i64 } %t1237, ptr %a1241 - call void @finch_str_drop(ptr %a1241) - %t1242 = load { ptr, i64, i64 }, ptr %a1238 - %t1243 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } %t1242, ptr %a1245 - store { ptr, i64, i64 } %t1243, ptr %a1246 - call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246) - store { ptr, i64, i64 } %t1242, ptr %a1247 - call void @finch_str_drop(ptr %a1247) - %t1248 = load { ptr, i64, i64 }, ptr %a1244 - %t1249 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1232, { ptr, i64, i64 } %t1248) - store { ptr, i64, i64 } %t1248, ptr %a1250 - call void @finch_str_drop(ptr %a1250) - store { ptr, i64, i64 } %t1249, ptr %a1251 - %t1252 = load ptr, ptr %a1 - %t1253 = load ptr, ptr %a1 - %t1254 = load ptr, ptr %a1 - %t1255 = load { ptr, i64, i64 }, ptr %a1211 - store { ptr, i64, i64 } { ptr @.str.5832, i64 6, i64 0 }, ptr %a1257 - store { ptr, i64, i64 } %t1255, ptr %a1258 - call void @finch_str_concat(ptr %a1256, ptr %a1257, ptr %a1258) - %t1259 = load { ptr, i64, i64 }, ptr %a1256 - store { ptr, i64, i64 } %t1259, ptr %a1261 - store { ptr, i64, i64 } { ptr @.str.5833, i64 2, i64 0 }, ptr %a1262 - call void @finch_str_concat(ptr %a1260, ptr %a1261, ptr %a1262) - store { ptr, i64, i64 } %t1259, ptr %a1263 - call void @finch_str_drop(ptr %a1263) - %t1264 = load { ptr, i64, i64 }, ptr %a1260 - %t1265 = load { ptr, i64, i64 }, ptr %a1231 - store { ptr, i64, i64 } %t1264, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - store { ptr, i64, i64 } %t1264, ptr %a1269 - call void @finch_str_drop(ptr %a1269) - %t1270 = load { ptr, i64, i64 }, ptr %a1266 - %t1271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1254, { ptr, i64, i64 } %t1270) - store { ptr, i64, i64 } %t1270, ptr %a1272 - call void @finch_str_drop(ptr %a1272) - store { ptr, i64, i64 } { ptr @.str.5831, i64 6, i64 0 }, ptr %a1274 - store { ptr, i64, i64 } %t1271, ptr %a1275 - call void @finch_str_concat(ptr %a1273, ptr %a1274, ptr %a1275) - store { ptr, i64, i64 } %t1271, ptr %a1276 - call void @finch_str_drop(ptr %a1276) - %t1277 = load { ptr, i64, i64 }, ptr %a1273 - store { ptr, i64, i64 } %t1277, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5834, i64 2, i64 0 }, ptr %a1280 - call void @finch_str_concat(ptr %a1278, ptr %a1279, ptr %a1280) - store { ptr, i64, i64 } %t1277, ptr %a1281 - call void @finch_str_drop(ptr %a1281) - %t1282 = load { ptr, i64, i64 }, ptr %a1278 - %t1283 = load { ptr, i64, i64 }, ptr %a1251 - store { ptr, i64, i64 } %t1282, ptr %a1285 - store { ptr, i64, i64 } %t1283, ptr %a1286 - call void @finch_str_concat(ptr %a1284, ptr %a1285, ptr %a1286) - store { ptr, i64, i64 } %t1282, ptr %a1287 - call void @finch_str_drop(ptr %a1287) - %t1288 = load { ptr, i64, i64 }, ptr %a1284 - %t1289 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1253, { ptr, i64, i64 } %t1288) - store { ptr, i64, i64 } %t1288, ptr %a1290 - call void @finch_str_drop(ptr %a1290) - %t1291 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t1252, { ptr, i64, i64 } %t1289, { ptr, i64, i64 } { ptr @.str.5835, i64 33, i64 0 }, %S.ast.Node %t1291) - store { ptr, i64, i64 } %t1289, ptr %a1292 - call void @finch_str_drop(ptr %a1292) - %t1293 = load ptr, ptr %a1 - %t1294 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5836, i64 8, i64 0 }, ptr %a1296 - store { ptr, i64, i64 } %t1294, ptr %a1297 - call void @finch_str_concat(ptr %a1295, ptr %a1296, ptr %a1297) - %t1298 = load { ptr, i64, i64 }, ptr %a1295 - store { ptr, i64, i64 } %t1298, ptr %a1300 - store { ptr, i64, i64 } { ptr @.str.5837, i64 2, i64 0 }, ptr %a1301 - call void @finch_str_concat(ptr %a1299, ptr %a1300, ptr %a1301) - store { ptr, i64, i64 } %t1298, ptr %a1302 - call void @finch_str_drop(ptr %a1302) - %t1303 = load { ptr, i64, i64 }, ptr %a1299 - %t1304 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } %t1303, ptr %a1306 - store { ptr, i64, i64 } %t1304, ptr %a1307 - call void @finch_str_concat(ptr %a1305, ptr %a1306, ptr %a1307) - store { ptr, i64, i64 } %t1303, ptr %a1308 - call void @finch_str_drop(ptr %a1308) - %t1309 = load { ptr, i64, i64 }, ptr %a1305 - %t1310 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1293, { ptr, i64, i64 } %t1309) - store { ptr, i64, i64 } %t1309, ptr %a1311 - call void @finch_str_drop(ptr %a1311) - store { ptr, i64, i64 } %t1310, ptr %a1312 - %t1313 = load ptr, ptr %a1 - %t1314 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1313, { ptr, i64, i64 } { ptr @.str.5838, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1314, ptr %a1315 - %t1316 = load ptr, ptr %a1 - %t1317 = load { ptr, i64, i64 }, ptr %a1315 - store { ptr, i64, i64 } { ptr @.str.5839, i64 30, i64 0 }, ptr %a1319 - store { ptr, i64, i64 } %t1317, ptr %a1320 - call void @finch_str_concat(ptr %a1318, ptr %a1319, ptr %a1320) - %t1321 = load { ptr, i64, i64 }, ptr %a1318 - store { ptr, i64, i64 } %t1321, ptr %a1323 - store { ptr, i64, i64 } { ptr @.str.5840, i64 6, i64 0 }, ptr %a1324 - call void @finch_str_concat(ptr %a1322, ptr %a1323, ptr %a1324) - store { ptr, i64, i64 } %t1321, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1322 - %t1327 = load { ptr, i64, i64 }, ptr %a1312 - store { ptr, i64, i64 } %t1326, ptr %a1329 - store { ptr, i64, i64 } %t1327, ptr %a1330 - call void @finch_str_concat(ptr %a1328, ptr %a1329, ptr %a1330) - store { ptr, i64, i64 } %t1326, ptr %a1331 - call void @finch_str_drop(ptr %a1331) - %t1332 = load { ptr, i64, i64 }, ptr %a1328 - store { ptr, i64, i64 } %t1332, ptr %a1334 - store { ptr, i64, i64 } { ptr @.str.5841, i64 6, i64 0 }, ptr %a1335 - call void @finch_str_concat(ptr %a1333, ptr %a1334, ptr %a1335) - store { ptr, i64, i64 } %t1332, ptr %a1336 - call void @finch_str_drop(ptr %a1336) - %t1337 = load { ptr, i64, i64 }, ptr %a1333 - %t1338 = load ptr, ptr %a1 - %t1339 = load %S.ast.Type, ptr %a15 - %t1340 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1338, %S.ast.Type %t1339) - store { ptr, i64, i64 } %t1337, ptr %a1342 - store { ptr, i64, i64 } %t1340, ptr %a1343 - call void @finch_str_concat(ptr %a1341, ptr %a1342, ptr %a1343) - store { ptr, i64, i64 } %t1337, ptr %a1344 - call void @finch_str_drop(ptr %a1344) - store { ptr, i64, i64 } %t1340, ptr %a1345 - call void @finch_str_drop(ptr %a1345) - %t1346 = load { ptr, i64, i64 }, ptr %a1341 - store { ptr, i64, i64 } %t1346, ptr %a1348 - store { ptr, i64, i64 } { ptr @.str.5842, i64 1, i64 0 }, ptr %a1349 - call void @finch_str_concat(ptr %a1347, ptr %a1348, ptr %a1349) - store { ptr, i64, i64 } %t1346, ptr %a1350 - call void @finch_str_drop(ptr %a1350) - %t1351 = load { ptr, i64, i64 }, ptr %a1347 - call void @finch.gen.emit(ptr %t1316, { ptr, i64, i64 } %t1351) - store { ptr, i64, i64 } %t1351, ptr %a1352 - call void @finch_str_drop(ptr %a1352) - %t1353 = load ptr, ptr %a1 - %t1354 = load { ptr, i64, i64 }, ptr %a3 - %t1355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1353, { ptr, i64, i64 } { ptr @.str.5843, i64 3, i64 0 }, { ptr, i64, i64 } %t1354) - store { ptr, i64, i64 } %t1355, ptr %a1356 - %t1357 = load ptr, ptr %a1 - %t1358 = load { ptr, i64, i64 }, ptr %a1315 - %t1359 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1357, { ptr, i64, i64 } { ptr @.str.5844, i64 3, i64 0 }, { ptr, i64, i64 } %t1358) - store { ptr, i64, i64 } %t1359, ptr %a1360 - %t1361 = load ptr, ptr %a1 - %t1362 = load { ptr, i64, i64 }, ptr %a1312 - %t1363 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1361, { ptr, i64, i64 } %t1362) - store { ptr, i64, i64 } %t1363, ptr %a1364 - %t1365 = load ptr, ptr %a1 - %t1366 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5845, i64 23, i64 0 }, ptr %a1368 - store { ptr, i64, i64 } %t1366, ptr %a1369 - call void @finch_str_concat(ptr %a1367, ptr %a1368, ptr %a1369) - %t1370 = load { ptr, i64, i64 }, ptr %a1367 - store { ptr, i64, i64 } %t1370, ptr %a1372 - store { ptr, i64, i64 } { ptr @.str.5846, i64 6, i64 0 }, ptr %a1373 - call void @finch_str_concat(ptr %a1371, ptr %a1372, ptr %a1373) - store { ptr, i64, i64 } %t1370, ptr %a1374 - call void @finch_str_drop(ptr %a1374) - %t1375 = load { ptr, i64, i64 }, ptr %a1371 - %t1376 = load { ptr, i64, i64 }, ptr %a1360 - store { ptr, i64, i64 } %t1375, ptr %a1378 - store { ptr, i64, i64 } %t1376, ptr %a1379 - call void @finch_str_concat(ptr %a1377, ptr %a1378, ptr %a1379) - store { ptr, i64, i64 } %t1375, ptr %a1380 - call void @finch_str_drop(ptr %a1380) - %t1381 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1381, ptr %a1383 - store { ptr, i64, i64 } { ptr @.str.5847, i64 6, i64 0 }, ptr %a1384 - call void @finch_str_concat(ptr %a1382, ptr %a1383, ptr %a1384) - store { ptr, i64, i64 } %t1381, ptr %a1385 - call void @finch_str_drop(ptr %a1385) - %t1386 = load { ptr, i64, i64 }, ptr %a1382 - %t1387 = load { ptr, i64, i64 }, ptr %a1364 - %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 - %t1389 = icmp uge i64 3, %t1388 - br i1 %t1389, label %range8948, label %inrange8949 -range8948: - call void @finch_panic_index(ptr @.str.5848, i64 5541, i64 3, i64 %t1388) - unreachable -inrange8949: - %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 - %t1391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1390, i64 3 - %t1392 = load { ptr, i64, i64 }, ptr %t1391 - store { ptr, i64, i64 } %t1386, ptr %a1394 - store { ptr, i64, i64 } %t1392, ptr %a1395 - call void @finch_str_concat(ptr %a1393, ptr %a1394, ptr %a1395) - store { ptr, i64, i64 } %t1386, ptr %a1396 - call void @finch_str_drop(ptr %a1396) - %t1397 = load { ptr, i64, i64 }, ptr %a1393 - %t1398 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1365, { ptr, i64, i64 } %t1397) - store { ptr, i64, i64 } %t1397, ptr %a1399 - call void @finch_str_drop(ptr %a1399) - store { ptr, i64, i64 } %t1398, ptr %a1400 - %t1401 = load ptr, ptr %a1 - %t1402 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5849, i64 23, i64 0 }, ptr %a1404 - store { ptr, i64, i64 } %t1402, ptr %a1405 - call void @finch_str_concat(ptr %a1403, ptr %a1404, ptr %a1405) - %t1406 = load { ptr, i64, i64 }, ptr %a1403 - store { ptr, i64, i64 } %t1406, ptr %a1408 - store { ptr, i64, i64 } { ptr @.str.5850, i64 6, i64 0 }, ptr %a1409 - call void @finch_str_concat(ptr %a1407, ptr %a1408, ptr %a1409) - store { ptr, i64, i64 } %t1406, ptr %a1410 - call void @finch_str_drop(ptr %a1410) - %t1411 = load { ptr, i64, i64 }, ptr %a1407 - %t1412 = load { ptr, i64, i64 }, ptr %a1356 - store { ptr, i64, i64 } %t1411, ptr %a1414 - store { ptr, i64, i64 } %t1412, ptr %a1415 - call void @finch_str_concat(ptr %a1413, ptr %a1414, ptr %a1415) - store { ptr, i64, i64 } %t1411, ptr %a1416 - call void @finch_str_drop(ptr %a1416) - %t1417 = load { ptr, i64, i64 }, ptr %a1413 - store { ptr, i64, i64 } %t1417, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5851, i64 6, i64 0 }, ptr %a1420 - call void @finch_str_concat(ptr %a1418, ptr %a1419, ptr %a1420) - store { ptr, i64, i64 } %t1417, ptr %a1421 - call void @finch_str_drop(ptr %a1421) - %t1422 = load { ptr, i64, i64 }, ptr %a1418 - %t1423 = load ptr, ptr %a1 - %t1424 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5852, i64 8, i64 0 }, ptr %a1426 - store { ptr, i64, i64 } %t1424, ptr %a1427 - call void @finch_str_concat(ptr %a1425, ptr %a1426, ptr %a1427) - %t1428 = load { ptr, i64, i64 }, ptr %a1425 - store { ptr, i64, i64 } %t1428, ptr %a1430 - store { ptr, i64, i64 } { ptr @.str.5853, i64 2, i64 0 }, ptr %a1431 - call void @finch_str_concat(ptr %a1429, ptr %a1430, ptr %a1431) - store { ptr, i64, i64 } %t1428, ptr %a1432 - call void @finch_str_drop(ptr %a1432) - %t1433 = load { ptr, i64, i64 }, ptr %a1429 - %t1434 = load { ptr, i64, i64 }, ptr %a1364 - %t1435 = extractvalue { ptr, i64, i64 } %t1434, 1 - %t1436 = icmp uge i64 3, %t1435 - br i1 %t1436, label %range8950, label %inrange8951 -range8950: - call void @finch_panic_index(ptr @.str.5854, i64 5542, i64 3, i64 %t1435) - unreachable -inrange8951: - %t1437 = extractvalue { ptr, i64, i64 } %t1434, 0 - %t1438 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1437, i64 3 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1433, ptr %a1441 - store { ptr, i64, i64 } %t1439, ptr %a1442 - call void @finch_str_concat(ptr %a1440, ptr %a1441, ptr %a1442) - store { ptr, i64, i64 } %t1433, ptr %a1443 - call void @finch_str_drop(ptr %a1443) - %t1444 = load { ptr, i64, i64 }, ptr %a1440 - %t1445 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1423, { ptr, i64, i64 } %t1444) - store { ptr, i64, i64 } %t1444, ptr %a1446 - call void @finch_str_drop(ptr %a1446) - store { ptr, i64, i64 } %t1422, ptr %a1448 - store { ptr, i64, i64 } %t1445, ptr %a1449 - call void @finch_str_concat(ptr %a1447, ptr %a1448, ptr %a1449) - store { ptr, i64, i64 } %t1422, ptr %a1450 - call void @finch_str_drop(ptr %a1450) - store { ptr, i64, i64 } %t1445, ptr %a1451 - call void @finch_str_drop(ptr %a1451) - %t1452 = load { ptr, i64, i64 }, ptr %a1447 - %t1453 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1401, { ptr, i64, i64 } %t1452) - store { ptr, i64, i64 } %t1452, ptr %a1454 - call void @finch_str_drop(ptr %a1454) - store { ptr, i64, i64 } %t1453, ptr %a1455 - %t1456 = load ptr, ptr %a1 - %t1457 = load { ptr, i64, i64 }, ptr %a1400 - %t1458 = load { ptr, i64, i64 }, ptr %a1455 - %t1459 = load %S.ast.Type, ptr %a15 - call void @finch.gen.copyAt(ptr %t1456, { ptr, i64, i64 } %t1457, { ptr, i64, i64 } %t1458, %S.ast.Type %t1459) - %t1460 = load ptr, ptr %a1 - %t1461 = load { ptr, i64, i64 }, ptr %a1364 - call void @finch.gen.loopEnd(ptr %t1460, { ptr, i64, i64 } %t1461) - %t1462 = load ptr, ptr %a1 - %t1463 = load { ptr, i64, i64 }, ptr %a1315 - %t1464 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1462, { ptr, i64, i64 } { ptr @.str.5855, i64 17, i64 0 }, { ptr, i64, i64 } %t1463) - %t1465 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1464, 0 - %t1466 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t1466, ptr %a1467 - call void @finch.copy.S_ast_Type(ptr %a1468, ptr %a1467) - %t1469 = load %S.ast.Type, ptr %a1468 - %t1470 = insertvalue %S.gen.Val %t1465, %S.ast.Type %t1469, 1 - %t1471 = insertvalue %S.gen.Val %t1470, i1 true, 2 - call void @finch_str_drop(ptr %a1455) - call void @finch_str_drop(ptr %a1400) - call void @finch.drop.arr_str(ptr %a1364) - call void @finch_str_drop(ptr %a1360) - call void @finch_str_drop(ptr %a1356) - call void @finch_str_drop(ptr %a1315) - call void @finch_str_drop(ptr %a1312) - call void @finch_str_drop(ptr %a1251) - call void @finch_str_drop(ptr %a1231) - call void @finch_str_drop(ptr %a1211) - call void @finch_str_drop(ptr %a1197) - call void @finch_str_drop(ptr %a1193) - call void @finch_str_drop(ptr %a1166) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1471 -endif8939: - %t1472 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1472, ptr %a1473 - store { ptr, i64, i64 } { ptr @.str.5856, i64 4, i64 0 }, ptr %a1474 - %t1475 = call i32 @finch_str_eq(ptr %a1473, ptr %a1474) - %t1476 = icmp ne i32 %t1475, 0 - br i1 %t1476, label %then8952, label %endif8954 -then8952: - %t1477 = load ptr, ptr %a1 - %t1478 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1477, %S.ast.Node %t1478, i64 0) - %t1479 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t1480 = load { ptr, i64, i64 }, ptr %t1479 - store { ptr, i64, i64 } %t1480, ptr %a1481 - call void @finch_str_copy(ptr %a1482, ptr %a1481) - %t1483 = load { ptr, i64, i64 }, ptr %a1482 - store { ptr, i64, i64 } %t1483, ptr %a1484 - %t1485 = load %S.ast.Type, ptr %a15 - %t1486 = call i1 @finch.gen.isNumber(%S.ast.Type %t1485) - %t1487 = xor i1 %t1486, true - br label %logic.from8955 -logic.from8955: - br i1 %t1487, label %logic.rhs8956, label %logic.end8957 -logic.rhs8956: - %t1488 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1488, ptr %a1489 - store { ptr, i64, i64 } { ptr @.str.5857, i64 4, i64 0 }, ptr %a1490 - %t1491 = call i32 @finch_str_eq(ptr %a1489, ptr %a1490) - %t1492 = icmp eq i32 %t1491, 0 - br label %logic.rend8958 -logic.rend8958: - br label %logic.end8957 -logic.end8957: - %t1493 = phi i1 [ false, %logic.from8955 ], [ %t1492, %logic.rend8958 ] - br label %logic.from8959 -logic.from8959: - br i1 %t1493, label %logic.rhs8960, label %logic.end8961 -logic.rhs8960: - %t1494 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1494, ptr %a1495 - store { ptr, i64, i64 } { ptr @.str.5858, i64 3, i64 0 }, ptr %a1496 - %t1497 = call i32 @finch_str_eq(ptr %a1495, ptr %a1496) - %t1498 = icmp eq i32 %t1497, 0 - br label %logic.rend8962 -logic.rend8962: - br label %logic.end8961 -logic.end8961: - %t1499 = phi i1 [ false, %logic.from8959 ], [ %t1498, %logic.rend8962 ] - br i1 %t1499, label %then8963, label %endif8965 -then8963: - %t1500 = load ptr, ptr %a1 - %t1501 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t1500, %S.ast.Node %t1501, { ptr, i64, i64 } { ptr @.str.5859, i64 47, i64 0 }) - br label %endif8965 -endif8965: - %t1502 = load ptr, ptr %a1 - %t1503 = load %S.ast.Type, ptr %a15 - %t1504 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1502, %S.ast.Type %t1503) - store { ptr, i64, i64 } %t1504, ptr %a1505 - %t1506 = load ptr, ptr %a1 - %t1507 = load { ptr, i64, i64 }, ptr %a39 - %t1508 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1506, { ptr, i64, i64 } { ptr @.str.5860, i64 3, i64 0 }, { ptr, i64, i64 } %t1507) - store { ptr, i64, i64 } %t1508, ptr %a1509 - %t1510 = load ptr, ptr %a1 - %t1511 = load { ptr, i64, i64 }, ptr %a3 - %t1512 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1510, { ptr, i64, i64 } { ptr @.str.5861, i64 3, i64 0 }, { ptr, i64, i64 } %t1511) - store { ptr, i64, i64 } %t1512, ptr %a1513 - %t1514 = load ptr, ptr %a1 - %t1515 = load { ptr, i64, i64 }, ptr %a1513 - store { ptr, i64, i64 } { ptr @.str.5862, i64 21, i64 0 }, ptr %a1517 - store { ptr, i64, i64 } %t1515, ptr %a1518 - call void @finch_str_concat(ptr %a1516, ptr %a1517, ptr %a1518) - %t1519 = load { ptr, i64, i64 }, ptr %a1516 - store { ptr, i64, i64 } %t1519, ptr %a1521 - store { ptr, i64, i64 } { ptr @.str.5863, i64 6, i64 0 }, ptr %a1522 - call void @finch_str_concat(ptr %a1520, ptr %a1521, ptr %a1522) - store { ptr, i64, i64 } %t1519, ptr %a1523 - call void @finch_str_drop(ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1520 - %t1525 = load { ptr, i64, i64 }, ptr %a1509 - store { ptr, i64, i64 } %t1524, ptr %a1527 - store { ptr, i64, i64 } %t1525, ptr %a1528 - call void @finch_str_concat(ptr %a1526, ptr %a1527, ptr %a1528) - store { ptr, i64, i64 } %t1524, ptr %a1529 - call void @finch_str_drop(ptr %a1529) - %t1530 = load { ptr, i64, i64 }, ptr %a1526 - store { ptr, i64, i64 } %t1530, ptr %a1532 - store { ptr, i64, i64 } { ptr @.str.5864, i64 6, i64 0 }, ptr %a1533 - call void @finch_str_concat(ptr %a1531, ptr %a1532, ptr %a1533) - store { ptr, i64, i64 } %t1530, ptr %a1534 - call void @finch_str_drop(ptr %a1534) - %t1535 = load { ptr, i64, i64 }, ptr %a1531 - %t1536 = load ptr, ptr %a1 - %t1537 = load %S.ast.Type, ptr %a15 - %t1538 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1536, %S.ast.Type %t1537) - store { ptr, i64, i64 } %t1535, ptr %a1540 - store { ptr, i64, i64 } %t1538, ptr %a1541 - call void @finch_str_concat(ptr %a1539, ptr %a1540, ptr %a1541) - store { ptr, i64, i64 } %t1535, ptr %a1542 - call void @finch_str_drop(ptr %a1542) - store { ptr, i64, i64 } %t1538, ptr %a1543 - call void @finch_str_drop(ptr %a1543) - %t1544 = load { ptr, i64, i64 }, ptr %a1539 - store { ptr, i64, i64 } %t1544, ptr %a1546 - store { ptr, i64, i64 } { ptr @.str.5865, i64 6, i64 0 }, ptr %a1547 - call void @finch_str_concat(ptr %a1545, ptr %a1546, ptr %a1547) - store { ptr, i64, i64 } %t1544, ptr %a1548 - call void @finch_str_drop(ptr %a1548) - %t1549 = load { ptr, i64, i64 }, ptr %a1545 - %t1550 = load { ptr, i64, i64 }, ptr %a1505 - store { ptr, i64, i64 } %t1549, ptr %a1552 - store { ptr, i64, i64 } %t1550, ptr %a1553 - call void @finch_str_concat(ptr %a1551, ptr %a1552, ptr %a1553) - store { ptr, i64, i64 } %t1549, ptr %a1554 - call void @finch_str_drop(ptr %a1554) - %t1555 = load { ptr, i64, i64 }, ptr %a1551 - store { ptr, i64, i64 } %t1555, ptr %a1557 - store { ptr, i64, i64 } { ptr @.str.5866, i64 1, i64 0 }, ptr %a1558 - call void @finch_str_concat(ptr %a1556, ptr %a1557, ptr %a1558) - store { ptr, i64, i64 } %t1555, ptr %a1559 - call void @finch_str_drop(ptr %a1559) - %t1560 = load { ptr, i64, i64 }, ptr %a1556 - call void @finch.gen.emit(ptr %t1514, { ptr, i64, i64 } %t1560) - store { ptr, i64, i64 } %t1560, ptr %a1561 - call void @finch_str_drop(ptr %a1561) - %t1562 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5867, i64 4, i64 0 }) - %t1563 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1562, 1 - call void @finch_str_drop(ptr %a1513) - call void @finch_str_drop(ptr %a1509) - call void @finch_str_drop(ptr %a1505) - call void @finch_str_drop(ptr %a1484) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1563 -endif8954: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.5868, i64 24, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5869, i64 96, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1575) - store { ptr, i64, i64 } %t1575, ptr %a1576 - call void @finch_str_drop(ptr %a1576) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val zeroinitializer -} - -define internal void @finch.gen.dropFrom(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca %S.ast.Type, align 16 - %a13 = alloca %S.ast.Type, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t6 = load { ptr, i64, i64 }, ptr %t5 - %t7 = extractvalue { ptr, i64, i64 } %t6, 1 - %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range8966, label %inrange8967 -range8966: - call void @finch_panic_index(ptr @.str.5870, i64 5565, i64 0, i64 %t7) - unreachable -inrange8967: - %t9 = extractvalue { ptr, i64, i64 } %t6, 0 - %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 - %t11 = load %S.ast.Type, ptr %t10 - store %S.ast.Type %t11, ptr %a12 - call void @finch.copy.S_ast_Type(ptr %a13, ptr %a12) - %t14 = load %S.ast.Type, ptr %a13 - store %S.ast.Type %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = load %S.ast.Type, ptr %a15 - %t18 = call i1 @finch.gen.owning(ptr %t16, %S.ast.Type %t17) - %t19 = xor i1 %t18, true - br i1 %t19, label %then8968, label %endif8970 -then8968: - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -endif8970: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Type, ptr %a15 - %t22 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t21) - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = load ptr, ptr %a1 - %t26 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.5872, i64 46, i64 0 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5873, i64 14, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = call { ptr, i64, i64 } @finch.gen.load(ptr %t24, { ptr, i64, i64 } { ptr @.str.5871, i64 3, i64 0 }, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_drop(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load ptr, ptr %a1 - %t42 = load { ptr, i64, i64 }, ptr %a2 - %t43 = call { ptr, i64, i64 } @finch.gen.load(ptr %t41, { ptr, i64, i64 } { ptr @.str.5874, i64 3, i64 0 }, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5875, 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.5876, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - store { ptr, i64, i64 } %t62, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5877, i64 13, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.5878, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t75) - store { ptr, i64, i64 } %t75, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t76, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.5879, i64 10, i64 0 }, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.5880, i64 6, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.5881, i64 10, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5882, i64 13, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t89, ptr %a110 - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t89, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t107, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.5883, i64 6, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - %t126 = call { ptr, i64, i64 } @finch.gen.op(ptr %t79, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a127 - call void @finch_str_drop(ptr %a127) - store { ptr, i64, i64 } %t126, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = load ptr, ptr %a1 - %t131 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.5884, i64 8, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5885, i64 2, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t140, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t140, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t130, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t129, { ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.5886, i64 23, i64 0 }, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5887, i64 6, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5888, i64 6, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load ptr, ptr %a1 - %t175 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5889, i64 8, i64 0 }, ptr %a177 - store { ptr, i64, i64 } %t175, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.5890, i64 2, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = load { ptr, i64, i64 }, ptr %a151 - %t186 = extractvalue { ptr, i64, i64 } %t185, 1 - %t187 = icmp uge i64 3, %t186 - br i1 %t187, label %range8971, label %inrange8972 -range8971: - call void @finch_panic_index(ptr @.str.5891, i64 5576, i64 3, i64 %t186) - unreachable -inrange8972: - %t188 = extractvalue { ptr, i64, i64 } %t185, 0 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } %t184, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t184, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = call { ptr, i64, i64 } @finch.gen.op(ptr %t174, { ptr, i64, i64 } %t195) - store { ptr, i64, i64 } %t195, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t173, ptr %a199 - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t173, ptr %a201 - call void @finch_str_drop(ptr %a201) - store { ptr, i64, i64 } %t196, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a198 - %t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t152, { ptr, i64, i64 } %t203) - store { ptr, i64, i64 } %t203, ptr %a205 - call void @finch_str_drop(ptr %a205) - store { ptr, i64, i64 } %t204, ptr %a206 - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a206 - %t209 = load %S.ast.Type, ptr %a15 - call void @finch.gen.dropAt(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a151 - call void @finch.gen.loopEnd(ptr %t210, { ptr, i64, i64 } %t211) - call void @finch_str_drop(ptr %a206) - call void @finch.drop.arr_str(ptr %a151) - call void @finch_str_drop(ptr %a128) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a64) - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a40) - call void @finch_str_drop(ptr %a23) - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cmpFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = 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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.5892, i64 11, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic8973, label %ok8974 -panic8973: - call void @finch_panic(ptr @.str.5893, i64 5584, ptr @.str.5894) - unreachable -ok8974: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then8975, label %endif8977 -then8975: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif8977: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic8978, label %ok8979 -panic8978: - call void @finch_panic(ptr @.str.5895, i64 5587, ptr @.str.5896) - unreachable -ok8979: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5897, i64 0, i64 0 }, ptr %a33 - %t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.5898, 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 %then8980, label %else8981 -then8980: - %t40 = load ptr, ptr %a1 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t40, { ptr, i64, i64 } { ptr @.str.5899, i64 39, i64 0 }) - store { ptr, i64, i64 } %t41, ptr %a42 - %t43 = load ptr, ptr %a1 - %t44 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5900, i64 10, i64 0 }, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5901, i64 7, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } %t53, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t54, ptr %a33 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a42) - br label %endif8982 -else8981: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.load(ptr %t62, { ptr, i64, i64 } %t63, { ptr, i64, i64 } { ptr @.str.5902, i64 2, i64 0 }) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load { ptr, i64, i64 }, ptr %a61 - %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } { ptr @.str.5903, i64 2, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5904, i64 0, i64 0 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5905, i64 0, i64 0 }, ptr %a71 - %t72 = load %S.ast.Type, ptr %a2 - %t73 = call i1 @finch.gen.isFloat(%S.ast.Type %t72) - br i1 %t73, label %then8983, label %else8984 -then8983: - %t74 = load ptr, ptr %a1 - %t75 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5906, 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.5907, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t84, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.5908, i64 2, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - %t96 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t95, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t102, ptr %a70 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load ptr, ptr %a1 - %t107 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5909, i64 9, i64 0 }, ptr %a109 - store { ptr, i64, i64 } %t107, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.5910, i64 1, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.5911, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t127, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t127, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t133) - store { ptr, i64, i64 } %t133, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t134, ptr %a71 - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif8985 -else8984: - %t138 = load ptr, ptr %a1 - %t139 = load %S.ast.Type, ptr %a2 - %t140 = call i1 @finch.gen.isSigned(%S.ast.Type %t139) - %t141 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5913, i64 1, i64 0 }, i1 %t140) - store { ptr, i64, i64 } { ptr @.str.5912, i64 5, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5914, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t151, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t151, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5915, i64 1, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5916, i64 2, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t180, ptr %a70 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Type, ptr %a2 - %t186 = call i1 @finch.gen.isSigned(%S.ast.Type %t185) - %t187 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5918, i64 1, i64 0 }, i1 %t186) - store { ptr, i64, i64 } { ptr @.str.5917, i64 5, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5919, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.5920, i64 1, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t214, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.5921, i64 2, i64 0 }, ptr %a217 - call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) - store { ptr, i64, i64 } %t214, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a215 - %t220 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t219, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a221 - %t226 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t225) - store { ptr, i64, i64 } %t225, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t226, ptr %a71 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch_str_drop(ptr %a229) - br label %endif8985 -endif8985: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.5923, i64 8, i64 0 }, ptr %a234 - store { ptr, i64, i64 } %t232, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.5924, i64 7, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } { ptr @.str.5922, i64 8, i64 0 }, ptr %a245 - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.5925, i64 2, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5926, i64 8, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.5927, i64 7, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t264) - store { ptr, i64, i64 } %t264, ptr %a266 - call void @finch_str_drop(ptr %a266) - store { ptr, i64, i64 } %t253, ptr %a268 - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t253, ptr %a270 - call void @finch_str_drop(ptr %a270) - store { ptr, i64, i64 } %t265, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a267 - %t273 = call { ptr, i64, i64 } @finch.gen.op(ptr %t230, { ptr, i64, i64 } %t272) - store { ptr, i64, i64 } %t272, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t273, ptr %a33 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_drop(ptr %a276) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a65) - call void @finch_str_drop(ptr %a61) - br label %endif8982 -endif8982: - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.5928, i64 8, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.emit(ptr %t277, { ptr, i64, i64 } %t282) - store { ptr, i64, i64 } %t282, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load ptr, ptr %a1 - %t285 = load %S.gen.Saved, ptr %a32 - %t286 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.5929, i64 20, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.5930, i64 16, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - call void @finch.gen.endHelper(ptr %t284, %S.gen.Saved %t285, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a33) - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t297 -} - -define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca %S.gen.Val, align 16 - %a81 = alloca %S.ast.Type, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca %S.gen.Val, 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 - %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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.gen.Val, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a446 = alloca i64, align 16 - %a458 = alloca %S.gen.Val, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca %S.gen.Val, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca %S.ast.Type, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca %S.gen.Val, align 16 - %a621 = alloca %S.ast.Type, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca %S.gen.Val, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a698 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca %S.ast.Type, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %panic8986, label %ok8987 -panic8986: - call void @finch_panic(ptr @.str.5931, i64 5616, ptr @.str.5932) - unreachable -ok8987: - %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 %range8988, label %inrange8989 -range8988: - call void @finch_panic_index(ptr @.str.5933, i64 5616, i64 %t18, i64 %t20) - unreachable -inrange8989: - %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.5934, 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 %then8990, label %endif8992 -then8990: - %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 %range8993, label %inrange8994 -range8993: - call void @finch_panic_index(ptr @.str.5935, i64 5619, i64 1, i64 %t38) - unreachable -inrange8994: - %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.5936, 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 %range8995, label %inrange8996 -range8995: - call void @finch_panic_index(ptr @.str.5937, i64 5619, i64 1, i64 %t47) - unreachable -inrange8996: - %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.5938, i64 9, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = extractvalue { ptr, i64, i64 } %t64, 1 - %t66 = icmp uge i64 2, %t65 - br i1 %t66, label %range8997, label %inrange8998 -range8997: - call void @finch_panic_index(ptr @.str.5939, i64 5620, i64 2, i64 %t65) - unreachable -inrange8998: - %t67 = extractvalue { ptr, i64, i64 } %t64, 0 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 2 - %t69 = load %S.ast.Node, ptr %t68 - %t70 = call %S.gen.Val @finch.gen.expr(ptr %t62, %S.ast.Node %t69) - %t71 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5940, i64 3, i64 0 }) - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 2, %t74 - br i1 %t75, label %range8999, label %inrange9000 -range8999: - call void @finch_panic_index(ptr @.str.5941, i64 5620, i64 2, i64 %t74) - unreachable -inrange9000: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 2 - %t78 = load %S.ast.Node, ptr %t77 - %t79 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t70, %S.ast.Type %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5942, i64 7, i64 0 }) - store %S.gen.Val %t70, ptr %a80 - call void @finch.drop.S_gen_Val(ptr %a80) - store %S.ast.Type %t71, ptr %a81 - call void @finch.drop.S_ast_Type(ptr %a81) - %t82 = extractvalue %S.gen.Val %t79, 0 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_copy(ptr %a84, ptr %a83) - %t85 = load { ptr, i64, i64 }, ptr %a84 - store %S.gen.Val %t79, ptr %a86 - call void @finch.drop.S_gen_Val(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5943, i64 29, i64 0 }, ptr %a91 - store { ptr, i64, i64 } %t89, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5944, i64 6, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t98, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.5945, i64 6, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t109, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t109, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.5946, i64 6, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t120, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5947, i64 6, i64 0 }, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - %t132 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t131, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t131, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.5948, i64 6, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t144 = load i64, ptr %t143 - call void @finch_str_from_int(ptr %a145, i64 %t144) - %t146 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t142, ptr %a148 - store { ptr, i64, i64 } %t146, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t142, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.5949, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load { ptr, i64, i64 }, ptr %a12 - %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.5950, i64 17, i64 0 }, { ptr, i64, i64 } %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5951, i64 3, i64 0 }) - %t164 = insertvalue %S.gen.Val %t162, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 2 - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a60) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t165 -endif8992: - %t166 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.5952, i64 4, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from9001 -logic.from9001: - br i1 %t170, label %logic.end9003, label %logic.rhs9002 -logic.rhs9002: - %t171 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5953, i64 8, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend9004 -logic.rend9004: - br label %logic.end9003 -logic.end9003: - %t176 = phi i1 [ true, %logic.from9001 ], [ %t175, %logic.rend9004 ] - br label %logic.from9005 -logic.from9005: - br i1 %t176, label %logic.end9007, label %logic.rhs9006 -logic.rhs9006: - %t177 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.5954, i64 11, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend9008 -logic.rend9008: - br label %logic.end9007 -logic.end9007: - %t182 = phi i1 [ true, %logic.from9005 ], [ %t181, %logic.rend9008 ] - br label %logic.from9009 -logic.from9009: - br i1 %t182, label %logic.end9011, label %logic.rhs9010 -logic.rhs9010: - %t183 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5955, i64 9, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend9012 -logic.rend9012: - br label %logic.end9011 -logic.end9011: - %t188 = phi i1 [ true, %logic.from9009 ], [ %t187, %logic.rend9012 ] - br i1 %t188, label %then9013, label %endif9015 -then9013: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t189, %S.ast.Node %t190, i64 1) - %t191 = load ptr, ptr %a1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 1, %t194 - br i1 %t195, label %range9016, label %inrange9017 -range9016: - call void @finch_panic_index(ptr @.str.5956, i64 5626, i64 1, i64 %t194) - unreachable -inrange9017: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 1 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = call %S.gen.Val @finch.gen.strArg(ptr %t191, %S.ast.Node %t198, { ptr, i64, i64 } { ptr @.str.5957, i64 20, i64 0 }) - store %S.gen.Val %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load %S.gen.Val, ptr %a200 - %t203 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t201, %S.gen.Val %t202) - store { ptr, i64, i64 } %t203, ptr %a204 - %t205 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.5958, i64 4, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - br i1 %t209, label %then9018, label %endif9020 -then9018: - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5959, i64 29, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.5960, i64 6, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t220, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.5961, i64 1, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - %t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t232, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t235, %S.gen.Val %t236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_copy(ptr %a239, ptr %a238) - %t240 = load { ptr, i64, i64 }, ptr %a239 - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t240, 0 - %t242 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5962, i64 3, i64 0 }) - %t243 = insertvalue %S.gen.Val %t241, %S.ast.Type %t242, 1 - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t243 -endif9020: - %t244 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.5963, i64 8, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then9021, label %endif9023 -then9021: - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5964, i64 29, i64 0 }, ptr %a252 - store { ptr, i64, i64 } %t250, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a251 - store { ptr, i64, i64 } %t254, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.5965, i64 6, i64 0 }, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - store { ptr, i64, i64 } %t254, ptr %a258 - call void @finch_str_drop(ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t259, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a261 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.5966, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - store { ptr, i64, i64 } %t271, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.5967, i64 13, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.5968, i64 3, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t274, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - store { ptr, i64, i64 } %t285, ptr %a287 - %t288 = load ptr, ptr %a1 - %t289 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t288, %S.gen.Val %t289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5969, i64 4, i64 0 }) - %t296 = insertvalue %S.gen.Val %t294, %S.ast.Type %t295, 1 - call void @finch_str_drop(ptr %a287) - call void @finch_str_drop(ptr %a273) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t296 -endif9023: - store { ptr, i64, i64 } { ptr @.str.5970, i64 17, i64 0 }, ptr %a297 - %t298 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t298, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5971, i64 9, i64 0 }, ptr %a300 - %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) - %t302 = icmp ne i32 %t301, 0 - br i1 %t302, label %then9024, label %endif9026 -then9024: - %t303 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5972, i64 15, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif9026 -endif9026: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5973, i64 9, i64 0 }, ptr %a308 - store { ptr, i64, i64 } %t306, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a307 - store { ptr, i64, i64 } %t310, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.5974, i64 5, i64 0 }, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - %t316 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t315, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - store { ptr, i64, i64 } %t315, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t321, ptr %a323 - store { ptr, i64, i64 } { ptr @.str.5975, i64 6, i64 0 }, ptr %a324 - call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) - store { ptr, i64, i64 } %t321, ptr %a325 - call void @finch_str_drop(ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a322 - %t327 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t326, ptr %a329 - store { ptr, i64, i64 } %t327, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t326, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t332, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.5976, i64 1, i64 0 }, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - store { ptr, i64, i64 } %t332, ptr %a336 - call void @finch_str_drop(ptr %a336) - %t337 = load { ptr, i64, i64 }, ptr %a333 - %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t305, { ptr, i64, i64 } %t337) - store { ptr, i64, i64 } %t337, ptr %a339 - call void @finch_str_drop(ptr %a339) - store { ptr, i64, i64 } %t338, ptr %a340 - %t341 = load ptr, ptr %a1 - %t342 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.5977, i64 12, i64 0 }, ptr %a344 - store { ptr, i64, i64 } %t342, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.5978, i64 3, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load { ptr, i64, i64 }, ptr %a354 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_copy(ptr %a359, ptr %a358) - %t360 = load { ptr, i64, i64 }, ptr %a359 - %t361 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t360, 0 - %t362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5979, i64 4, i64 0 }) - %t363 = insertvalue %S.gen.Val %t361, %S.ast.Type %t362, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a340) - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t363 -endif9015: - %t364 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br label %logic.from9027 -logic.from9027: - br i1 %t368, label %logic.end9029, label %logic.rhs9028 -logic.rhs9028: - %t369 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t369, ptr %a370 - store { ptr, i64, i64 } { ptr @.str.5981, i64 5, i64 0 }, ptr %a371 - %t372 = call i32 @finch_str_eq(ptr %a370, ptr %a371) - %t373 = icmp ne i32 %t372, 0 - br label %logic.rend9030 -logic.rend9030: - br label %logic.end9029 -logic.end9029: - %t374 = phi i1 [ true, %logic.from9027 ], [ %t373, %logic.rend9030 ] - br label %logic.from9031 -logic.from9031: - br i1 %t374, label %logic.end9033, label %logic.rhs9032 -logic.rhs9032: - %t375 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t375, ptr %a376 - store { ptr, i64, i64 } { ptr @.str.5982, i64 5, i64 0 }, ptr %a377 - %t378 = call i32 @finch_str_eq(ptr %a376, ptr %a377) - %t379 = icmp ne i32 %t378, 0 - br label %logic.rend9034 -logic.rend9034: - br label %logic.end9033 -logic.end9033: - %t380 = phi i1 [ true, %logic.from9031 ], [ %t379, %logic.rend9034 ] - br i1 %t380, label %then9035, label %endif9037 -then9035: - %t381 = load ptr, ptr %a1 - %t382 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t381, %S.ast.Node %t382, i64 0) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5983, i64 21, i64 0 }, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.5984, i64 5, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t393, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t393, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.5985, i64 6, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t404, ptr %a407 - store { ptr, i64, i64 } %t405, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t404, ptr %a409 - call void @finch_str_drop(ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5986, i64 1, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - call void @finch.gen.emit(ptr %t383, { ptr, i64, i64 } %t415) - store { ptr, i64, i64 } %t415, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load ptr, ptr %a1 - %t418 = load { ptr, i64, i64 }, ptr %a12 - %t419 = call { ptr, i64, i64 } @finch.gen.load(ptr %t417, { ptr, i64, i64 } { ptr @.str.5987, i64 17, i64 0 }, { ptr, i64, i64 } %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5988, i64 3, i64 0 }) - %t422 = insertvalue %S.gen.Val %t420, %S.ast.Type %t421, 1 - %t423 = insertvalue %S.gen.Val %t422, i1 true, 2 - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t423 -endif9037: - %t424 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t424, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.5989, i64 7, i64 0 }, ptr %a426 - %t427 = call i32 @finch_str_eq(ptr %a425, ptr %a426) - %t428 = icmp ne i32 %t427, 0 - br i1 %t428, label %then9038, label %endif9040 -then9038: - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t429, %S.ast.Node %t430, i64 2) - %t431 = load ptr, ptr %a1 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = extractvalue { ptr, i64, i64 } %t433, 1 - %t435 = icmp uge i64 1, %t434 - br i1 %t435, label %range9041, label %inrange9042 -range9041: - call void @finch_panic_index(ptr @.str.5990, i64 5655, i64 1, i64 %t434) - unreachable -inrange9042: - %t436 = extractvalue { ptr, i64, i64 } %t433, 0 - %t437 = getelementptr inbounds %S.ast.Node, ptr %t436, i64 1 - %t438 = load %S.ast.Node, ptr %t437 - %t439 = call %S.gen.Val @finch.gen.strArg(ptr %t431, %S.ast.Node %t438, { ptr, i64, i64 } { ptr @.str.5991, i64 19, i64 0 }) - store %S.gen.Val %t439, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = icmp eq ptr %t441, null - br i1 %t442, label %panic9043, label %ok9044 -panic9043: - call void @finch_panic(ptr @.str.5992, i64 5656, ptr @.str.5993) - unreachable -ok9044: - %t443 = getelementptr inbounds %S.gen.Gen, ptr %t441, i32 0, i32 11 - %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i32 0, i32 1 - %t445 = load i64, ptr %t444 - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load %S.gen.Val, ptr %a440 - call void @finch.gen.hold(ptr %t447, %S.gen.Val %t448) - %t449 = load ptr, ptr %a1 - %t450 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t451 = load { ptr, i64, i64 }, ptr %t450 - %t452 = extractvalue { ptr, i64, i64 } %t451, 1 - %t453 = icmp uge i64 2, %t452 - br i1 %t453, label %range9045, label %inrange9046 -range9045: - call void @finch_panic_index(ptr @.str.5994, i64 5658, i64 2, i64 %t452) - unreachable -inrange9046: - %t454 = extractvalue { ptr, i64, i64 } %t451, 0 - %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 2 - %t456 = load %S.ast.Node, ptr %t455 - %t457 = call %S.gen.Val @finch.gen.strArg(ptr %t449, %S.ast.Node %t456, { ptr, i64, i64 } { ptr @.str.5995, i64 12, i64 0 }) - store %S.gen.Val %t457, ptr %a458 - %t459 = load ptr, ptr %a1 - %t460 = load i64, ptr %a446 - call void @finch.gen.heldEnd(ptr %t459, i64 %t460) - %t461 = load ptr, ptr %a1 - %t462 = load %S.gen.Val, ptr %a440 - %t463 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t461, %S.gen.Val %t462) - store { ptr, i64, i64 } %t463, ptr %a464 - %t465 = load ptr, ptr %a1 - %t466 = load %S.gen.Val, ptr %a458 - %t467 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t465, %S.gen.Val %t466) - store { ptr, i64, i64 } %t467, ptr %a468 - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5996, i64 33, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.5997, i64 6, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - %t480 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t479, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t479, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5998, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - %t491 = load { ptr, i64, i64 }, ptr %a464 - store { ptr, i64, i64 } %t490, ptr %a493 - store { ptr, i64, i64 } %t491, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t490, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5999, i64 6, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - store { ptr, i64, i64 } %t496, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load { ptr, i64, i64 }, ptr %a497 - %t502 = load { ptr, i64, i64 }, ptr %a468 - store { ptr, i64, i64 } %t501, ptr %a504 - store { ptr, i64, i64 } %t502, ptr %a505 - call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a503 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.6000, i64 1, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - call void @finch.gen.emit(ptr %t469, { ptr, i64, i64 } %t512) - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - %t514 = load ptr, ptr %a1 - %t515 = load %S.gen.Val, ptr %a440 - call void @finch.gen.release(ptr %t514, %S.gen.Val %t515) - %t516 = load ptr, ptr %a1 - %t517 = load %S.gen.Val, ptr %a458 - call void @finch.gen.release(ptr %t516, %S.gen.Val %t517) - %t518 = load ptr, ptr %a1 - %t519 = load { ptr, i64, i64 }, ptr %a12 - %t520 = call { ptr, i64, i64 } @finch.gen.load(ptr %t518, { ptr, i64, i64 } { ptr @.str.6001, i64 17, i64 0 }, { ptr, i64, i64 } %t519) - %t521 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t520, 0 - %t522 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6002, i64 3, i64 0 }) - %t523 = insertvalue %S.gen.Val %t521, %S.ast.Type %t522, 1 - %t524 = insertvalue %S.gen.Val %t523, i1 true, 2 - call void @finch_str_drop(ptr %a468) - call void @finch_str_drop(ptr %a464) - call void @finch.drop.S_gen_Val(ptr %a458) - call void @finch.drop.S_gen_Val(ptr %a440) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t524 -endif9040: - %t525 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.6003, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br i1 %t529, label %then9047, label %endif9049 -then9047: - %t530 = load ptr, ptr %a1 - %t531 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t530, %S.ast.Node %t531, i64 1) - %t532 = load ptr, ptr %a1 - %t533 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t534 = load { ptr, i64, i64 }, ptr %t533 - %t535 = extractvalue { ptr, i64, i64 } %t534, 1 - %t536 = icmp uge i64 1, %t535 - br i1 %t536, label %range9050, label %inrange9051 -range9050: - call void @finch_panic_index(ptr @.str.6004, i64 5669, i64 1, i64 %t535) - unreachable -inrange9051: - %t537 = extractvalue { ptr, i64, i64 } %t534, 0 - %t538 = getelementptr inbounds %S.ast.Node, ptr %t537, i64 1 - %t539 = load %S.ast.Node, ptr %t538 - %t540 = call %S.gen.Val @finch.gen.strArg(ptr %t532, %S.ast.Node %t539, { ptr, i64, i64 } { ptr @.str.6005, i64 13, i64 0 }) - store %S.gen.Val %t540, ptr %a541 - %t542 = load ptr, ptr %a1 - %t543 = load %S.gen.Val, ptr %a541 - %t544 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t542, %S.gen.Val %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t546) - store { ptr, i64, i64 } %t547, ptr %a548 - %t549 = load ptr, ptr %a1 - %t550 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.6006, i64 31, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t554, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.6007, i64 6, i64 0 }, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - store { ptr, i64, i64 } %t554, ptr %a558 - call void @finch_str_drop(ptr %a558) - %t559 = load { ptr, i64, i64 }, ptr %a555 - %t560 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t559, ptr %a562 - store { ptr, i64, i64 } %t560, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t559, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - store { ptr, i64, i64 } %t565, ptr %a567 - store { ptr, i64, i64 } { ptr @.str.6008, i64 6, i64 0 }, ptr %a568 - call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) - store { ptr, i64, i64 } %t565, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a566 - %t571 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } %t570, ptr %a573 - store { ptr, i64, i64 } %t571, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t570, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - store { ptr, i64, i64 } %t576, ptr %a578 - store { ptr, i64, i64 } { ptr @.str.6009, i64 1, i64 0 }, ptr %a579 - call void @finch_str_concat(ptr %a577, ptr %a578, ptr %a579) - store { ptr, i64, i64 } %t576, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a577 - call void @finch.gen.emit(ptr %t549, { ptr, i64, i64 } %t581) - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load ptr, ptr %a1 - %t584 = load %S.gen.Val, ptr %a541 - call void @finch.gen.release(ptr %t583, %S.gen.Val %t584) - %t585 = load ptr, ptr %a1 - %t586 = load { ptr, i64, i64 }, ptr %a548 - %t587 = call { ptr, i64, i64 } @finch.gen.load(ptr %t585, { ptr, i64, i64 } { ptr @.str.6010, i64 17, i64 0 }, { ptr, i64, i64 } %t586) - %t588 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t587, 0 - %t589 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6011, i64 3, i64 0 }) - %t590 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t589) - store %S.ast.Type %t589, ptr %a591 - call void @finch.drop.S_ast_Type(ptr %a591) - %t592 = insertvalue %S.gen.Val %t588, %S.ast.Type %t590, 1 - %t593 = insertvalue %S.gen.Val %t592, i1 true, 2 - call void @finch_str_drop(ptr %a548) - call void @finch_str_drop(ptr %a545) - call void @finch.drop.S_gen_Val(ptr %a541) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t593 -endif9049: - %t594 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t594, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.6012, i64 6, i64 0 }, ptr %a596 - %t597 = call i32 @finch_str_eq(ptr %a595, ptr %a596) - %t598 = icmp ne i32 %t597, 0 - br i1 %t598, label %then9052, label %endif9054 -then9052: - %t599 = load ptr, ptr %a1 - %t600 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t599, %S.ast.Node %t600, i64 1) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t604 = load { ptr, i64, i64 }, ptr %t603 - %t605 = extractvalue { ptr, i64, i64 } %t604, 1 - %t606 = icmp uge i64 1, %t605 - br i1 %t606, label %range9055, label %inrange9056 -range9055: - call void @finch_panic_index(ptr @.str.6013, i64 5678, i64 1, i64 %t605) - unreachable -inrange9056: - %t607 = extractvalue { ptr, i64, i64 } %t604, 0 - %t608 = getelementptr inbounds %S.ast.Node, ptr %t607, i64 1 - %t609 = load %S.ast.Node, ptr %t608 - %t610 = call %S.gen.Val @finch.gen.expr(ptr %t602, %S.ast.Node %t609) - %t611 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6014, i64 3, i64 0 }) - %t612 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t613 = load { ptr, i64, i64 }, ptr %t612 - %t614 = extractvalue { ptr, i64, i64 } %t613, 1 - %t615 = icmp uge i64 1, %t614 - br i1 %t615, label %range9057, label %inrange9058 -range9057: - call void @finch_panic_index(ptr @.str.6015, i64 5678, i64 1, i64 %t614) - unreachable -inrange9058: - %t616 = extractvalue { ptr, i64, i64 } %t613, 0 - %t617 = getelementptr inbounds %S.ast.Node, ptr %t616, i64 1 - %t618 = load %S.ast.Node, ptr %t617 - %t619 = call %S.gen.Val @finch.gen.coerce(ptr %t601, %S.gen.Val %t610, %S.ast.Type %t611, %S.ast.Node %t618, { ptr, i64, i64 } { ptr @.str.6016, i64 9, i64 0 }) - store %S.gen.Val %t610, ptr %a620 - call void @finch.drop.S_gen_Val(ptr %a620) - store %S.ast.Type %t611, ptr %a621 - call void @finch.drop.S_ast_Type(ptr %a621) - %t622 = extractvalue %S.gen.Val %t619, 0 - store { ptr, i64, i64 } %t622, ptr %a623 - call void @finch_str_copy(ptr %a624, ptr %a623) - %t625 = load { ptr, i64, i64 }, ptr %a624 - store %S.gen.Val %t619, ptr %a626 - call void @finch.drop.S_gen_Val(ptr %a626) - store { ptr, i64, i64 } %t625, ptr %a627 - %t628 = load ptr, ptr %a1 - %t629 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.6017, i64 32, i64 0 }, ptr %a631 - store { ptr, i64, i64 } %t629, ptr %a632 - call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a630 - store { ptr, i64, i64 } %t633, ptr %a635 - store { ptr, i64, i64 } { ptr @.str.6018, i64 6, i64 0 }, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t633, ptr %a637 - call void @finch_str_drop(ptr %a637) - %t638 = load { ptr, i64, i64 }, ptr %a634 - %t639 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t638, ptr %a641 - store { ptr, i64, i64 } %t639, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t638, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - store { ptr, i64, i64 } %t644, ptr %a646 - store { ptr, i64, i64 } { ptr @.str.6019, i64 6, i64 0 }, ptr %a647 - call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) - store { ptr, i64, i64 } %t644, ptr %a648 - call void @finch_str_drop(ptr %a648) - %t649 = load { ptr, i64, i64 }, ptr %a645 - %t650 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t649, ptr %a652 - store { ptr, i64, i64 } %t650, ptr %a653 - call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) - store { ptr, i64, i64 } %t649, ptr %a654 - call void @finch_str_drop(ptr %a654) - %t655 = load { ptr, i64, i64 }, ptr %a651 - store { ptr, i64, i64 } %t655, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.6020, i64 1, i64 0 }, ptr %a658 - call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) - store { ptr, i64, i64 } %t655, ptr %a659 - call void @finch_str_drop(ptr %a659) - %t660 = load { ptr, i64, i64 }, ptr %a656 - call void @finch.gen.emit(ptr %t628, { ptr, i64, i64 } %t660) - store { ptr, i64, i64 } %t660, ptr %a661 - call void @finch_str_drop(ptr %a661) - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a12 - %t664 = call { ptr, i64, i64 } @finch.gen.load(ptr %t662, { ptr, i64, i64 } { ptr @.str.6021, i64 17, i64 0 }, { ptr, i64, i64 } %t663) - %t665 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t664, 0 - %t666 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6022, i64 3, i64 0 }) - %t667 = insertvalue %S.gen.Val %t665, %S.ast.Type %t666, 1 - %t668 = insertvalue %S.gen.Val %t667, i1 true, 2 - call void @finch_str_drop(ptr %a627) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t668 -endif9054: - %t669 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t669, ptr %a670 - store { ptr, i64, i64 } { ptr @.str.6023, i64 5, i64 0 }, ptr %a671 - %t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671) - %t673 = icmp ne i32 %t672, 0 - br i1 %t673, label %then9059, label %endif9061 -then9059: - %t674 = load ptr, ptr %a1 - %t675 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 0) - %t676 = load ptr, ptr %a1 - %t677 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t676) - store { ptr, i64, i64 } %t677, ptr %a678 - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } { ptr @.str.6024, i64 36, i64 0 }, ptr %a682 - store { ptr, i64, i64 } %t680, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - %t684 = load { ptr, i64, i64 }, ptr %a681 - store { ptr, i64, i64 } %t684, ptr %a686 - store { ptr, i64, i64 } { ptr @.str.6025, i64 6, i64 0 }, ptr %a687 - call void @finch_str_concat(ptr %a685, ptr %a686, ptr %a687) - store { ptr, i64, i64 } %t684, ptr %a688 - call void @finch_str_drop(ptr %a688) - %t689 = load { ptr, i64, i64 }, ptr %a685 - %t690 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t689, ptr %a692 - store { ptr, i64, i64 } %t690, ptr %a693 - call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) - store { ptr, i64, i64 } %t689, ptr %a694 - call void @finch_str_drop(ptr %a694) - %t695 = load { ptr, i64, i64 }, ptr %a691 - store { ptr, i64, i64 } %t695, ptr %a697 - store { ptr, i64, i64 } { ptr @.str.6026, i64 1, i64 0 }, ptr %a698 - call void @finch_str_concat(ptr %a696, ptr %a697, ptr %a698) - store { ptr, i64, i64 } %t695, ptr %a699 - call void @finch_str_drop(ptr %a699) - %t700 = load { ptr, i64, i64 }, ptr %a696 - call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t700) - store { ptr, i64, i64 } %t700, ptr %a701 - call void @finch_str_drop(ptr %a701) - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a678 - %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.6027, i64 17, i64 0 }, { ptr, i64, i64 } %t703) - %t705 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t704, 0 - %t706 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6028, i64 2, i64 0 }) - %t707 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t706) - store %S.ast.Type %t706, ptr %a708 - call void @finch.drop.S_ast_Type(ptr %a708) - %t709 = insertvalue %S.gen.Val %t705, %S.ast.Type %t707, 1 - %t710 = insertvalue %S.gen.Val %t709, i1 true, 2 - call void @finch_str_drop(ptr %a678) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t710 -endif9061: - %t711 = load ptr, ptr %a1 - %t712 = load %S.ast.Node, ptr %a2 - %t713 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.6029, i64 21, i64 0 }, ptr %a715 - store { ptr, i64, i64 } %t713, ptr %a716 - call void @finch_str_concat(ptr %a714, ptr %a715, ptr %a716) - %t717 = load { ptr, i64, i64 }, ptr %a714 - store { ptr, i64, i64 } %t717, ptr %a719 - store { ptr, i64, i64 } { ptr @.str.6030, i64 106, i64 0 }, ptr %a720 - call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) - store { ptr, i64, i64 } %t717, ptr %a721 - call void @finch_str_drop(ptr %a721) - %t722 = load { ptr, i64, i64 }, ptr %a718 - call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t722) - store { ptr, i64, i64 } %t722, ptr %a723 - call void @finch_str_drop(ptr %a723) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val zeroinitializer -} - -define internal { ptr, i64, i64 } @finch.gen.runtimeDecls() { -entry: - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %t1 = mul i64 74, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t2 = call ptr @finch_alloc(i64 %t1) - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 - store { ptr, i64, i64 } { ptr @.str.6031, i64 54, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6032, i64 65, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6033, i64 29, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6034, i64 38, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6035, i64 33, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6036, i64 33, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6037, i64 33, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6038, i64 32, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6039, i64 45, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6040, i64 35, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6041, i64 36, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6042, i64 42, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6043, i64 37, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6044, i64 38, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6045, i64 42, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6046, i64 38, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6047, i64 37, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6048, i64 42, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6049, i64 42, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6050, i64 34, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6051, i64 42, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6052, i64 43, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 - store { ptr, i64, i64 } { ptr @.str.6053, i64 47, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 - store { ptr, i64, i64 } { ptr @.str.6054, i64 50, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24 - store { ptr, i64, i64 } { ptr @.str.6055, i64 43, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 - store { ptr, i64, i64 } { ptr @.str.6056, i64 44, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 - store { ptr, i64, i64 } { ptr @.str.6057, i64 49, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27 - store { ptr, i64, i64 } { ptr @.str.6058, i64 57, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 - store { ptr, i64, i64 } { ptr @.str.6059, i64 37, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 - store { ptr, i64, i64 } { ptr @.str.6060, i64 39, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30 - store { ptr, i64, i64 } { ptr @.str.6061, i64 37, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 - store { ptr, i64, i64 } { ptr @.str.6062, i64 38, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 - store { ptr, i64, i64 } { ptr @.str.6063, i64 39, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33 - store { ptr, i64, i64 } { ptr @.str.6064, i64 39, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 - store { ptr, i64, i64 } { ptr @.str.6065, i64 51, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 - store { ptr, i64, i64 } { ptr @.str.6066, i64 44, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36 - store { ptr, i64, i64 } { ptr @.str.6067, i64 43, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 - store { ptr, i64, i64 } { ptr @.str.6068, i64 45, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 - store { ptr, i64, i64 } { ptr @.str.6069, i64 44, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39 - store { ptr, i64, i64 } { ptr @.str.6070, i64 52, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 - store { ptr, i64, i64 } { ptr @.str.6071, i64 57, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 - store { ptr, i64, i64 } { ptr @.str.6072, i64 48, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42 - store { ptr, i64, i64 } { ptr @.str.6073, i64 34, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 - store { ptr, i64, i64 } { ptr @.str.6074, i64 48, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 - store { ptr, i64, i64 } { ptr @.str.6075, i64 60, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45 - store { ptr, i64, i64 } { ptr @.str.6076, i64 55, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 - store { ptr, i64, i64 } { ptr @.str.6077, i64 46, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 - store { ptr, i64, i64 } { ptr @.str.6078, i64 48, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48 - store { ptr, i64, i64 } { ptr @.str.6079, i64 43, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 - store { ptr, i64, i64 } { ptr @.str.6080, i64 45, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 - store { ptr, i64, i64 } { ptr @.str.6081, i64 59, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51 - store { ptr, i64, i64 } { ptr @.str.6082, i64 49, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 - store { ptr, i64, i64 } { ptr @.str.6083, i64 39, i64 0 }, ptr %t55 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 - store { ptr, i64, i64 } { ptr @.str.6084, i64 39, i64 0 }, ptr %t56 - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54 - store { ptr, i64, i64 } { ptr @.str.6085, i64 35, i64 0 }, ptr %t57 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 - store { ptr, i64, i64 } { ptr @.str.6086, i64 35, i64 0 }, ptr %t58 - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 - store { ptr, i64, i64 } { ptr @.str.6087, i64 45, i64 0 }, ptr %t59 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57 - store { ptr, i64, i64 } { ptr @.str.6088, i64 47, i64 0 }, ptr %t60 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 - store { ptr, i64, i64 } { ptr @.str.6089, i64 47, i64 0 }, ptr %t61 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 - store { ptr, i64, i64 } { ptr @.str.6090, i64 48, i64 0 }, ptr %t62 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60 - store { ptr, i64, i64 } { ptr @.str.6091, i64 44, i64 0 }, ptr %t63 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 - store { ptr, i64, i64 } { ptr @.str.6092, i64 37, i64 0 }, ptr %t64 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 - store { ptr, i64, i64 } { ptr @.str.6093, i64 49, i64 0 }, ptr %t65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63 - store { ptr, i64, i64 } { ptr @.str.6094, i64 39, i64 0 }, ptr %t66 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 - store { ptr, i64, i64 } { ptr @.str.6095, i64 29, i64 0 }, ptr %t67 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 - store { ptr, i64, i64 } { ptr @.str.6096, i64 35, i64 0 }, ptr %t68 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66 - store { ptr, i64, i64 } { ptr @.str.6097, i64 29, i64 0 }, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 - store { ptr, i64, i64 } { ptr @.str.6098, i64 24, i64 0 }, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 - store { ptr, i64, i64 } { ptr @.str.6099, i64 40, i64 0 }, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69 - store { ptr, i64, i64 } { ptr @.str.6100, i64 33, i64 0 }, ptr %t72 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70 - store { ptr, i64, i64 } { ptr @.str.6101, i64 34, i64 0 }, ptr %t73 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 71 - store { ptr, i64, i64 } { ptr @.str.6102, i64 44, i64 0 }, ptr %t74 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 72 - store { ptr, i64, i64 } { ptr @.str.6103, i64 32, i64 0 }, ptr %t75 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 73 - store { ptr, i64, i64 } { ptr @.str.6104, i64 23, i64 0 }, ptr %t76 - %t77 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t78 = insertvalue { ptr, i64, i64 } %t77, i64 74, 1 - %t79 = insertvalue { ptr, i64, i64 } %t78, i64 74, 2 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a80, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6105, i64 1, i64 0 }, ptr %a82 - call void @finch_str_join(ptr %a83, ptr %a80, ptr %a82) - %t84 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.6106, i64 1, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.drop.arr_str(ptr %a80) - ret { ptr, i64, i64 } %t89 -} - -define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6107, i64 52, i64 0 }, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic9062, label %ok9063 -panic9062: - call void @finch_panic(ptr @.str.6108, i64 5776, ptr @.str.6109) - unreachable -ok9063: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 - %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 - %t7 = load i1, ptr %t6 - br label %logic.from9064 -logic.from9064: - br i1 %t7, label %logic.end9066, label %logic.rhs9065 -logic.rhs9065: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic9067, label %ok9068 -panic9067: - call void @finch_panic(ptr @.str.6110, i64 5776, ptr @.str.6111) - unreachable -ok9068: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 31 - %t11 = getelementptr inbounds %S.platform.Target, ptr %t10, i32 0, i32 1 - %t12 = load i1, ptr %t11 - br label %logic.rend9069 -logic.rend9069: - br label %logic.end9066 -logic.end9066: - %t13 = phi i1 [ true, %logic.from9064 ], [ %t12, %logic.rend9069 ] - br i1 %t13, label %then9070, label %endif9072 -then9070: - %t14 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6112, i64 17, 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, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic9073, label %ok9074 -panic9073: - call void @finch_panic(ptr @.str.6113, i64 5777, ptr @.str.6114) - unreachable -ok9074: - %t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 31 - %t22 = getelementptr inbounds %S.platform.Target, ptr %t21, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t18, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t18, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6115, i64 3, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif9072 -endif9072: - %t36 = load { ptr, i64, i64 }, ptr %a2 - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic9075, label %ok9076 -panic9075: - call void @finch_panic(ptr @.str.6116, i64 5779, ptr @.str.6117) - unreachable -ok9076: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6118, i64 1, i64 0 }, ptr %a41 - call void @finch_str_join(ptr %a42, ptr %t39, ptr %a41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t36, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6119, i64 2, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - store { ptr, i64, i64 } %t54, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.6120, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t65, ptr %a2 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic9077, label %ok9078 -panic9077: - call void @finch_panic(ptr @.str.6121, i64 5780, ptr @.str.6122) - unreachable -ok9078: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 30 - %t71 = load i1, ptr %t70 - br i1 %t71, label %then9079, label %endif9081 -then9079: - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6123, i64 62, 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, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a2 - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif9081 -endif9081: - %t79 = load { ptr, i64, i64 }, ptr %a2 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9082, label %ok9083 -panic9082: - call void @finch_panic(ptr @.str.6124, i64 5783, ptr @.str.6125) - unreachable -ok9083: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 3 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6126, i64 1, 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 } %t79, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t91, ptr %a2 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic9084, label %ok9085 -panic9084: - call void @finch_panic(ptr @.str.6127, i64 5784, ptr @.str.6128) - unreachable -ok9085: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 30 - %t97 = load i1, ptr %t96 - br i1 %t97, label %then9086, label %endif9088 -then9086: - %t98 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6129, i64 1, 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 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - %t111 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t110, ptr %a2 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif9088 -endif9088: - %t113 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t113 -} - -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.cond9089 -n.cond9089: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9090, label %n.end9091 -n.body9090: - %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.cond9089 -n.end9091: - 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.cond9092 -n.cond9092: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9093, label %n.end9094 -n.body9093: - %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.live9095, label %entry.next9096 -entry.live9095: - %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.next9096 -entry.next9096: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9092 -n.end9094: - 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.cond9097 -n.cond9097: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9098, label %n.end9099 -n.body9098: - %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.live9100, label %entry.next9101 -entry.live9100: - %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.next9101 -entry.next9101: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9097 -n.end9099: - 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.cond9102 -n.cond9102: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9103, label %n.end9104 -n.body9103: - %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.live9105, label %entry.next9106 -entry.live9105: - %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.next9106 -entry.next9106: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9102 -n.end9104: - 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.cond9107 -n.cond9107: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9108, label %n.end9109 -n.body9108: - %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.live9110, label %entry.next9111 -entry.live9110: - %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.next9111 -entry.next9111: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9107 -n.end9109: - 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 void @finch.drop.arr_S_gen_Pending(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9180 -n.cond9180: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9181, label %n.end9182 -n.body9181: - %t7 = getelementptr inbounds %S.gen.Pending, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Pending(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9180 -n.end9182: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Loop(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9183 -n.cond9183: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9184, label %n.end9185 -n.body9184: - %t7 = getelementptr inbounds %S.gen.Loop, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Loop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9183 -n.end9185: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_FnSig(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9186 -n.cond9186: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9187, label %n.end9188 -n.body9187: - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_FnSig(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9186 -n.end9188: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_StructDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9189 -n.cond9189: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9190, label %n.end9191 -n.body9190: - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_StructDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9189 -n.end9191: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Template(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9192 -n.cond9192: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9193, label %n.end9194 -n.body9193: - %t7 = getelementptr inbounds %S.gen.Template, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Template(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9192 -n.end9194: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_EnumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9195 -n.cond9195: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9196, label %n.end9197 -n.body9196: - %t7 = getelementptr inbounds %S.gen.EnumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_EnumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9195 -n.end9197: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_SumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9198 -n.cond9198: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9199, label %n.end9200 -n.body9199: - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_SumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9198 -n.end9200: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_int(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9201 -n.cond9201: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9202, label %n.end9203 -n.body9202: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9204, label %entry.next9205 -entry.live9204: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 2 - br label %entry.next9205 -entry.next9205: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9201 -n.end9203: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Gen(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_S_gen_Scope(ptr %t7) - %t8 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_S_gen_Pending(ptr %t8) - %t9 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_gen_Loop(ptr %t9) - %t10 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 13 - call void @finch.drop.S_gen_FnSig(ptr %t10) - %t11 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 14 - call void @finch_str_drop(ptr %t11) - %t12 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_S_gen_FnSig(ptr %t12) - %t13 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 16 - call void @finch.drop.arr_S_gen_StructDef(ptr %t13) - %t14 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 17 - call void @finch.drop.arr_S_gen_Template(ptr %t14) - %t15 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 18 - call void @finch.drop.arr_str(ptr %t15) - %t16 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 19 - call void @finch.drop.arr_S_ast_Type(ptr %t16) - %t17 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 20 - call void @finch_str_drop(ptr %t17) - %t18 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 21 - call void @finch.drop.arr_S_gen_EnumDef(ptr %t18) - %t19 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 22 - call void @finch.drop.arr_S_gen_SumDef(ptr %t19) - %t20 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 23 - call void @finch.drop.arr_str(ptr %t20) - %t21 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 24 - call void @finch.drop.arr_str(ptr %t21) - %t22 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 26 - call void @finch.drop.S_cimport_CImports(ptr %t22) - %t23 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 29 - call void @finch.drop.arr_str(ptr %t23) - %t24 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 31 - call void @finch.drop.S_platform_Target(ptr %t24) - %t25 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 32 - call void @finch_str_drop(ptr %t25) - %t26 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 33 - call void @finch.drop.arr_str(ptr %t26) - %t27 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 34 - call void @finch.drop.map_str_int(ptr %t27) - %t28 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 35 - call void @finch.drop.arr_int(ptr %t28) - %t29 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 40 - call void @finch.drop.arr_str(ptr %t29) - %t30 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 41 - call void @finch_str_drop(ptr %t30) - %t31 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 42 - call void @finch_str_drop(ptr %t31) - %t32 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 43 - call void @finch_str_drop(ptr %t32) - 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 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca i64, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca i64, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca %S.gen.FnSig, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca %S.gen.FnSig, align 16 - %a318 = alloca %S.gen.FnSig, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %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 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.cimport.CImports %p2, ptr %a3 - 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, 26 - %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, 27 - %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, 28 - %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, 30 - %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, 31 - %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, 32 - %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 36 - 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 %panic9112, label %ok9113 -panic9112: - call void @finch_panic(ptr @.str.6130, i64 5794, ptr @.str.6131) - unreachable -ok9113: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 30 - %t50 = load i1, ptr %t49 - br i1 %t50, label %then9114, label %endif9116 -then9114: - %t51 = load ptr, ptr %a46 - %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic9117, label %ok9118 -panic9117: - call void @finch_panic(ptr @.str.6132, i64 5796, ptr @.str.6133) - unreachable -ok9118: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 33 - %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.6134, 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 %panic9119, label %ok9120 -panic9119: - call void @finch_panic(ptr @.str.6135, i64 5797, ptr @.str.6136) - unreachable -ok9120: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 33 - %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.6137, 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 %panic9121, label %ok9122 -panic9121: - call void @finch_panic(ptr @.str.6138, i64 5798, ptr @.str.6139) - unreachable -ok9122: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 33 - %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.6140, i64 38, i64 0 }, ptr %t74 - store i64 %t72, ptr %t70 - store i64 0, ptr %a75 - br label %each.cond9123 -each.cond9123: - %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.body9124, label %each.end9126 -each.body9124: - %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 %panic9127, label %ok9128 -panic9127: - call void @finch_panic(ptr @.str.6141, i64 5800, ptr @.str.6142) - unreachable -ok9128: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 35 - %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.6143, 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.6144, i64 15, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load ptr, ptr %a46 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic9129, label %ok9130 -panic9129: - call void @finch_panic(ptr @.str.6145, i64 5800, ptr @.str.6146) - unreachable -ok9130: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 32 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t98, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t98, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6147, i64 2, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t112) - store { ptr, i64, i64 } %t112, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load i64, ptr %t87 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t116, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t86 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t115 - store i64 %t113, ptr %t118 - store i64 %t116, ptr %t87 - br label %each.step9125 -each.step9125: - %t119 = load i64, ptr %a75 - %t120 = add i64 %t119, 1 - store i64 %t120, ptr %a75 - br label %each.cond9123 -each.end9126: - %t121 = load ptr, ptr %a46 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic9131, label %ok9132 -panic9131: - call void @finch_panic(ptr @.str.6149, i64 5802, ptr @.str.6150) - unreachable -ok9132: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 35 - %t124 = load { ptr, i64, i64 }, ptr %t123 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 0, %t125 - br i1 %t126, label %range9133, label %inrange9134 -range9133: - call void @finch_panic_index(ptr @.str.6151, i64 5802, i64 0, i64 %t125) - unreachable -inrange9134: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds i64, ptr %t127, i64 0 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6148, i64 52, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6152, i64 84, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load ptr, ptr %a46 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic9135, label %ok9136 -panic9135: - call void @finch_panic(ptr @.str.6153, i64 5802, ptr @.str.6154) - unreachable -ok9136: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 33 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 0, %t146 - br i1 %t147, label %range9137, label %inrange9138 -range9137: - call void @finch_panic_index(ptr @.str.6155, i64 5802, i64 0, i64 %t146) - unreachable -inrange9138: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t141, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif9116 -endif9116: - %t152 = load ptr, ptr %a46 - call void @finch.gen.declare(ptr %t152) - %t153 = load ptr, ptr %a46 - %t154 = call i64 @finch.gen.findFn(ptr %t153, { ptr, i64, i64 } { ptr @.str.6156, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6157, i64 4, i64 0 }) - store i64 %t154, ptr %a155 - %t156 = load i1, ptr %a7 - br i1 %t156, label %then9139, label %else9140 -then9139: - %t157 = load i64, ptr %a155 - %t158 = icmp sge i64 %t157, 0 - br i1 %t158, label %then9142, label %endif9144 -then9142: - %t159 = load ptr, ptr %a46 - %t160 = load ptr, ptr %a46 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic9145, label %ok9146 -panic9145: - call void @finch_panic(ptr @.str.6158, i64 5808, ptr @.str.6159) - unreachable -ok9146: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 0 - %t163 = load ptr, ptr %a46 - %t164 = icmp eq ptr %t163, null - br i1 %t164, label %panic9147, label %ok9148 -panic9147: - call void @finch_panic(ptr @.str.6160, i64 5808, ptr @.str.6161) - unreachable -ok9148: - %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 15 - %t166 = load i64, ptr %a155 - %t167 = load { ptr, i64, i64 }, ptr %t165 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range9149, label %inrange9150 -range9149: - call void @finch_panic_index(ptr @.str.6162, i64 5808, i64 %t166, i64 %t168) - unreachable -inrange9150: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.FnSig, ptr %t170, i64 %t166 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %t171, i32 0, i32 16 - %t173 = load i64, ptr %t172 - %t174 = load { ptr, i64, i64 }, ptr %t162 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range9151, label %inrange9152 -range9151: - call void @finch_panic_index(ptr @.str.6163, i64 5808, i64 %t173, i64 %t175) - unreachable -inrange9152: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Program, ptr %t178, i32 0, i32 8 - %t180 = load ptr, ptr %a46 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic9153, label %ok9154 -panic9153: - call void @finch_panic(ptr @.str.6164, i64 5808, ptr @.str.6165) - unreachable -ok9154: - %t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 15 - %t183 = load i64, ptr %a155 - %t184 = load { ptr, i64, i64 }, ptr %t182 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range9155, label %inrange9156 -range9155: - call void @finch_panic_index(ptr @.str.6166, i64 5808, i64 %t183, i64 %t185) - unreachable -inrange9156: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i64 %t183 - %t189 = getelementptr inbounds %S.gen.FnSig, ptr %t188, i32 0, i32 17 - %t190 = load i64, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %t179 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 %t190, %t192 - br i1 %t193, label %range9157, label %inrange9158 -range9157: - call void @finch_panic_index(ptr @.str.6167, i64 5808, i64 %t190, i64 %t192) - unreachable -inrange9158: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t190 - %t196 = load %S.ast.Node, ptr %t195 - call void @finch.gen.fail(ptr %t159, %S.ast.Node %t196, { ptr, i64, i64 } { ptr @.str.6168, i64 82, i64 0 }) - br label %endif9144 -endif9144: - br label %endif9141 -else9140: - %t197 = load i64, ptr %a155 - %t198 = icmp slt i64 %t197, 0 - br i1 %t198, label %then9159, label %endif9161 -then9159: - %t199 = load { ptr, i64, i64 }, ptr %a2 - %t200 = extractvalue { ptr, i64, i64 } %t199, 1 - %t201 = icmp uge i64 0, %t200 - br i1 %t201, label %range9162, label %inrange9163 -range9162: - call void @finch_panic_index(ptr @.str.6169, i64 5811, i64 0, i64 %t200) - unreachable -inrange9163: - %t202 = extractvalue { ptr, i64, i64 } %t199, 0 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 0 - %t204 = load { ptr, i64, i64 }, ptr %t203 - store { ptr, i64, i64 } %t204, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.6170, i64 64, i64 0 }, ptr %a207 - call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a205 - %t209 = extractvalue { ptr, i64, i64 } %t208, 1 - %t210 = trunc i64 %t209 to i32 - %t211 = extractvalue { ptr, i64, i64 } %t208, 0 - %t212 = icmp eq ptr %t211, null - %t213 = select i1 %t212, ptr @.str.6171, ptr %t211 - %t214 = call i32 (ptr, ...) @printf(ptr @.str.6172, i32 %t210, ptr %t213) - store { ptr, i64, i64 } %t208, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = call i32 (ptr, ...) @printf(ptr @.str.6173) - %t217 = trunc i64 1 to i32 - %t218 = call i32 @fflush(ptr null) - call void @exit(i32 %t217) - br label %endif9161 -endif9161: - br label %endif9141 -endif9141: - store i64 0, ptr %a219 - br label %while.cond9164 -while.cond9164: - %t220 = load i64, ptr %a219 - %t221 = load ptr, ptr %a46 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic9167, label %ok9168 -panic9167: - call void @finch_panic(ptr @.str.6174, i64 5816, ptr @.str.6175) - unreachable -ok9168: - %t223 = getelementptr inbounds %S.gen.Gen, ptr %t221, i32 0, i32 15 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp slt i64 %t220, %t225 - br i1 %t226, label %while.body9165, label %while.end9166 -while.body9165: - %t227 = load ptr, ptr %a46 - %t228 = load i64, ptr %a219 - call void @finch.gen.define(ptr %t227, i64 %t228) - %t229 = load i64, ptr %a219 - %t230 = add i64 %t229, 1 - store i64 %t230, ptr %a219 - br label %while.cond9164 -while.end9166: - %t231 = load ptr, ptr %a46 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic9169, label %ok9170 -panic9169: - call void @finch_panic(ptr @.str.6176, i64 5820, ptr @.str.6177) - unreachable -ok9170: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 28 - %t234 = load i1, ptr %t233 - br i1 %t234, label %then9171, label %endif9173 -then9171: - %t235 = load ptr, ptr %a46 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic9174, label %ok9175 -panic9174: - call void @finch_panic(ptr @.str.6178, i64 5821, ptr @.str.6179) - unreachable -ok9175: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range9176, label %inrange9177 -range9176: - call void @finch_panic_index(ptr @.str.6180, i64 5821, i64 0, i64 %t239) - unreachable -inrange9177: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.ast.Program, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.ast.Program, ptr %t242, i32 0, i32 2 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.copy.arr_str(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t247, ptr %a248 - %t249 = load ptr, ptr %a46 - %t250 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.indexAll(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a46 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic9178, label %ok9179 -panic9178: - call void @finch_panic(ptr @.str.6181, i64 5823, ptr @.str.6182) - unreachable -ok9179: - %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 29 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6183, i64 1, i64 0 }, ptr %a255 - call void @finch_str_join(ptr %a256, ptr %t253, ptr %a255) - %t257 = load { ptr, i64, i64 }, ptr %a256 - call void @finch.drop.arr_str(ptr %a248) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t257 -endif9173: - %t258 = load ptr, ptr %a46 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic9206, label %ok9207 -panic9206: - call void @finch_panic(ptr @.str.6184, i64 5825, ptr @.str.6185) - unreachable -ok9207: - %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 15 - store i64 0, ptr %a261 - br label %each.cond9208 -each.cond9208: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body9209, label %each.end9211 -each.body9209: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i64 %t264 - %t268 = load %S.gen.FnSig, ptr %t267 - store %S.gen.FnSig %t268, ptr %a269 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a269, i32 0, i32 5 - %t271 = load i1, ptr %t270 - br i1 %t271, label %then9212, label %endif9214 -then9212: - %t272 = load ptr, ptr %a46 - %t273 = load %S.gen.FnSig, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t272, %S.gen.FnSig %t273) - store { ptr, i64, i64 } %t274, ptr %a275 - call void @finch_str_drop(ptr %a275) - br label %endif9214 -endif9214: - br label %each.step9210 -each.step9210: - %t276 = load i64, ptr %a261 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a261 - br label %each.cond9208 -each.end9211: - %t278 = load i1, ptr %a7 - br i1 %t278, label %then9215, label %endif9217 -then9215: - store { ptr, i64, i64 } { ptr @.str.6186, i64 0, i64 0 }, ptr %a279 - %t280 = load ptr, ptr %a46 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic9218, label %ok9219 -panic9218: - call void @finch_panic(ptr @.str.6187, i64 5833, ptr @.str.6188) - unreachable -ok9219: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 31 - %t283 = getelementptr inbounds %S.platform.Target, ptr %t282, i32 0, i32 1 - %t284 = load i1, ptr %t283 - br i1 %t284, label %then9220, label %endif9222 -then9220: - %t285 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6189, i64 10, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif9222 -endif9222: - %t287 = load ptr, ptr %a46 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic9223, label %ok9224 -panic9223: - call void @finch_panic(ptr @.str.6190, i64 5836, ptr @.str.6191) - unreachable -ok9224: - %t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 3 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6192, i64 6, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.6193, i64 107, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = load i64, ptr %t290 - %t302 = add i64 %t301, 1 - call void @finch_arr_reserve(ptr %t289, i64 %t302, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t303 = load ptr, ptr %t289 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t303, i64 %t301 - store { ptr, i64, i64 } %t300, ptr %t304 - store i64 %t302, ptr %t290 - %t305 = load ptr, ptr %a46 - %t306 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t305) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t306 -endif9217: - %t307 = load ptr, ptr %a46 - %t308 = icmp eq ptr %t307, null - br i1 %t308, label %panic9225, label %ok9226 -panic9225: - call void @finch_panic(ptr @.str.6194, i64 5840, ptr @.str.6195) - unreachable -ok9226: - %t309 = getelementptr inbounds %S.gen.Gen, ptr %t307, i32 0, i32 15 - %t310 = load i64, ptr %a155 - %t311 = load { ptr, i64, i64 }, ptr %t309 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range9227, label %inrange9228 -range9227: - call void @finch_panic_index(ptr @.str.6196, i64 5840, i64 %t310, i64 %t312) - unreachable -inrange9228: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds %S.gen.FnSig, ptr %t314, i64 %t310 - %t316 = load %S.gen.FnSig, ptr %t315 - store %S.gen.FnSig %t316, ptr %a317 - call void @finch.copy.S_gen_FnSig(ptr %a318, ptr %a317) - %t319 = load %S.gen.FnSig, ptr %a318 - store %S.gen.FnSig %t319, ptr %a320 - %t321 = load ptr, ptr %a46 - %t322 = load %S.gen.FnSig, ptr %a320 - %t323 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t321, %S.gen.FnSig %t322) - store { ptr, i64, i64 } { ptr @.str.6197, i64 5, i64 0 }, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t323, ptr %a327 - call void @finch_str_drop(ptr %a327) - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6198, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - store { ptr, i64, i64 } %t328, ptr %a332 - call void @finch_str_drop(ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a329 - %t334 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 11 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t333, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t333, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.6199, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t345, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6200, i64 0, i64 0 }, ptr %a347 - %t348 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 13 - %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i32 0, i32 1 - %t350 = load i64, ptr %t349 - %t351 = icmp eq i64 %t350, 1 - br i1 %t351, label %then9229, label %endif9231 -then9229: - %t352 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6201, i64 133, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6202, i64 20, i64 0 }, ptr %a357 - call void @finch_str_concat(ptr %a355, ptr %a356, ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a355 - %t359 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t358, ptr %a346 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif9231 -endif9231: - %t361 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.6203, i64 1, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a362 - %t366 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t365, ptr %a346 - store { ptr, i64, i64 } %t366, ptr %a367 - call void @finch_str_drop(ptr %a367) - store { ptr, i64, i64 } { ptr @.str.6204, i64 12, i64 0 }, ptr %a368 - %t369 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 9 - %t370 = load i1, ptr %t369 - br i1 %t370, label %then9232, label %else9233 -then9232: - %t371 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6205, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a372 - %t376 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t375, ptr %a346 - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t378, ptr %a380 - store { ptr, i64, i64 } { ptr @.str.6206, i64 2, i64 0 }, ptr %a381 - call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a379 - %t383 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t382, ptr %a385 - store { ptr, i64, i64 } %t383, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t382, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.6207, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t393, ptr %a347 - store { ptr, i64, i64 } %t394, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6208, i64 0, i64 0 }, ptr %a346 - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a46 - %t399 = load %S.gen.FnSig, ptr %a320 - %t400 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t398, %S.gen.FnSig %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t402, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.6209, i64 21, i64 0 }, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - %t407 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.6210, i64 62, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t417, ptr %a347 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t420, ptr %a422 - store { ptr, i64, i64 } { ptr @.str.6211, i64 20, i64 0 }, ptr %a423 - call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) - %t424 = load { ptr, i64, i64 }, ptr %a421 - %t425 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t424, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t424, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.6212, i64 78, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - store { ptr, i64, i64 } %t430, ptr %a434 - call void @finch_str_drop(ptr %a434) - %t435 = load { ptr, i64, i64 }, ptr %a431 - %t436 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t435, ptr %a347 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.6213, i64 62, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a439 - %t443 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t442, ptr %a347 - store { ptr, i64, i64 } %t443, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t446 = getelementptr inbounds %S.ast.Type, ptr %t445, i32 0, i32 0 - %t447 = load { ptr, i64, i64 }, ptr %t446 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.6214, i64 3, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br i1 %t451, label %then9235, label %endif9237 -then9235: - %t452 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.6215, i64 20, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - %t456 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t456, ptr %a458 - store { ptr, i64, i64 } { ptr @.str.6216, i64 53, i64 0 }, ptr %a459 - call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) - store { ptr, i64, i64 } %t456, ptr %a460 - call void @finch_str_drop(ptr %a460) - %t461 = load { ptr, i64, i64 }, ptr %a457 - %t462 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t461, ptr %a368 - store { ptr, i64, i64 } %t462, ptr %a463 - call void @finch_str_drop(ptr %a463) - br label %endif9237 -endif9237: - call void @finch_str_drop(ptr %a401) - br label %endif9234 -else9233: - %t464 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t465 = getelementptr inbounds %S.ast.Type, ptr %t464, i32 0, i32 0 - %t466 = load { ptr, i64, i64 }, ptr %t465 - store { ptr, i64, i64 } %t466, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.6217, i64 3, i64 0 }, ptr %a468 - %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) - %t470 = icmp ne i32 %t469, 0 - br i1 %t470, label %then9238, label %endif9240 -then9238: - %t471 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6218, i64 5, i64 0 }, ptr %a473 - store { ptr, i64, i64 } %t471, ptr %a474 - call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474) - %t475 = load { ptr, i64, i64 }, ptr %a472 - %t476 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t475, ptr %a346 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.6219, i64 46, i64 0 }, ptr %a368 - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif9240 -endif9240: - br label %endif9234 -endif9234: - %t480 = load ptr, ptr %a46 - %t481 = icmp eq ptr %t480, null - br i1 %t481, label %panic9241, label %ok9242 -panic9241: - call void @finch_panic(ptr @.str.6220, i64 5865, ptr @.str.6221) - unreachable -ok9242: - %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 3 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6222, i64 48, i64 0 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a487 - call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t488, ptr %a490 - store { ptr, i64, i64 } { ptr @.str.6223, i64 2, i64 0 }, ptr %a491 - call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) - store { ptr, i64, i64 } %t488, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a489 - %t494 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t493, ptr %a496 - store { ptr, i64, i64 } %t494, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t493, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - store { ptr, i64, i64 } %t499, ptr %a501 - store { ptr, i64, i64 } { ptr @.str.6224, i64 1, i64 0 }, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - store { ptr, i64, i64 } %t499, ptr %a503 - call void @finch_str_drop(ptr %a503) - %t504 = load { ptr, i64, i64 }, ptr %a500 - %t505 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t504, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t504, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - store { ptr, i64, i64 } %t510, ptr %a512 - store { ptr, i64, i64 } { ptr @.str.6225, i64 2, i64 0 }, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - store { ptr, i64, i64 } %t510, ptr %a514 - call void @finch_str_drop(ptr %a514) - %t515 = load { ptr, i64, i64 }, ptr %a511 - %t516 = load i64, ptr %t483 - %t517 = add i64 %t516, 1 - call void @finch_arr_reserve(ptr %t482, i64 %t517, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t518 = load ptr, ptr %t482 - %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 %t516 - store { ptr, i64, i64 } %t515, ptr %t519 - store i64 %t517, ptr %t483 - %t520 = load ptr, ptr %a46 - %t521 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t520) - call void @finch_str_drop(ptr %a368) - call void @finch_str_drop(ptr %a347) - call void @finch_str_drop(ptr %a346) - call void @finch.drop.S_gen_FnSig(ptr %a320) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t521 -} - -define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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.6226, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6227, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6228, i64 78, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6229, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6230, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.6231, i64 77, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6232, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6233, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6234, i64 121, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6235, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6236, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.6237, i64 83, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6238, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6239, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6240, i64 29, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6241, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6242, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6243, i64 73, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6244, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6245, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6246, i64 98, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6247, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6248, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.6249, i64 66, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6250, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6251, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6252, i64 48, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6253, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6254, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6255, i64 77, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6256, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6257, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6258, i64 66, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6259, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6260, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6261, i64 73, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6262, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6263, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6264, i64 61, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6265, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6266, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6267, i64 130, i64 0 }) - %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6268, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6269, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6270, i64 75, i64 0 }) - %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6271, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6272, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6273, i64 29, i64 0 }) - %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6274, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6275, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6276, i64 26, i64 0 }) - %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6277, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6278, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6279, 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.6280, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6281, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6282, i64 23, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6283, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6284, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6285, i64 40, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6286, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6287, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6288, i64 18, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6289, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6290, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6291, i64 43, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6292, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6293, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6294, i64 38, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6295, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6296, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6297, i64 37, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6298, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6299, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6300, i64 19, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6301, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6302, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6303, i64 46, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6304, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6305, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6306, i64 22, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6307, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6308, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6309, i64 18, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6310, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6311, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6312, i64 37, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6313, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6314, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6315, i64 18, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6316, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6317, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6318, i64 45, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6319, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6321, 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.6322, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6323, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6324, i64 20, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6325, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6326, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6327, i64 59, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6328, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6329, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.6330, i64 29, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6331, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6332, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6333, i64 22, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6334, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6335, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6336, i64 24, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6337, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6338, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6339, i64 27, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6340, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6341, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6342, i64 25, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6343, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6344, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6345, i64 62, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6346, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6347, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6348, i64 41, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6349, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6350, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6351, i64 24, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6352, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6353, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6354, i64 24, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6355, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6356, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6357, i64 26, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6358, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6359, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6360, i64 17, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6361, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6362, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6363, 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.6364, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6365, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6366, i64 19, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6367, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6368, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6369, i64 22, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6370, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6371, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6372, i64 53, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6373, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6374, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6375, i64 52, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6376, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6377, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6378, i64 19, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6379, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6380, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6381, i64 39, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6382, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6383, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6384, 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.6385, i64 2, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6386, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6387, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6388, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6389, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6390, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6391, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6392, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6393, i64 8, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6394, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6395, i64 5, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6396, i64 4, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6397, i64 6, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6398, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6399, i64 6, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6400, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6401, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6402, i64 6, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6403, i64 5, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6404, i64 2, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6405, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6406, 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.6407, i64 3, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6408, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6409, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6410, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6411, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6412, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6413, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6414, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6415, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6416, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6417, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6418, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6419, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6420, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6421, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6422, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6423, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 17, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 17, 2 - ret { ptr, i64, i64 } %t22 -} - -define internal void @finch.copy.S_docs_Doc(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.docs.Doc, ptr %src - store %S.docs.Doc %t1, ptr %dst - %t2 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca %S.docs.Doc, align 16 - %a21 = alloca %S.docs.Doc, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond9243 -each.cond9243: - %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.body9244, label %each.end9246 -each.body9244: - %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 %then9247, label %endif9249 -then9247: - %t19 = load %S.docs.Doc, ptr %a11 - store %S.docs.Doc %t19, ptr %a20 - call void @finch.copy.S_docs_Doc(ptr %a21, ptr %a20) - %t22 = load %S.docs.Doc, ptr %a21 - ret %S.docs.Doc %t22 -endif9249: - br label %each.step9245 -each.step9245: - %t23 = load i64, ptr %a3 - %t24 = add i64 %t23, 1 - store i64 %t24, ptr %a3 - br label %each.cond9243 -each.end9246: - 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 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store %S.docs.Doc %p0, ptr %a1 - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } { ptr @.str.6424, 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.6425, i64 5, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } %t12, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t12, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { -entry: - %a1 = alloca %S.C.CXString, align 16 - %a3 = alloca [32 x i8], align 16 - %a9 = 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 - %a16 = alloca [32 x i8], 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 i64, ptr %t4 - %t6 = getelementptr inbounds i8, ptr %a3, i64 8 - %t7 = load i64, ptr %t6 - %t8 = call ptr @clang_getCString(i64 %t5, i64 %t7) - store { ptr, i64, i64 } zeroinitializer, ptr %a9 - call void @finch_str_from_c(ptr %a9, ptr %t8) - %t10 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t13, ptr %a14 - %t15 = load %S.C.CXString, ptr %a1 - store %S.C.CXString %t15, ptr %a16 - %t17 = getelementptr inbounds i8, ptr %a16, i64 0 - %t18 = load i64, ptr %t17 - %t19 = getelementptr inbounds i8, ptr %a16, i64 8 - %t20 = load i64, ptr %t19 - call void @clang_disposeString(i64 %t18, i64 %t20) - %t21 = load { ptr, i64, i64 }, ptr %a14 - ret { ptr, i64, i64 } %t21 -} - -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 - store %S.ast.Type %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6426, 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 - ret %S.ast.Type %t17 -} - -define internal { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca i1, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca i64, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6427, i64 15, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a10, i64 %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t8, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6428, i64 4, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6429, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.6430, i64 2, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6431, i64 0, i64 0 }, ptr %a47 - %t48 = call i32 @finch_write_file(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - %t50 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6432, i64 12, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - %t55 = load { ptr, i64, i64 }, ptr %a44 - %t56 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t54, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t54, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6433, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load { ptr, i64, i64 }, ptr %a23 - %t69 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t67, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t67, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.6434, i64 3, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - %t88 = call i64 @finch.host.run({ ptr, i64, i64 } %t87) - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a44 - call void @finch.host.remove({ ptr, i64, i64 } %t90) - %t91 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - %t95 = xor i1 %t94, true - br i1 %t95, label %then9250, label %endif9252 -then9250: - %t96 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t96 -endif9252: - store i1 false, ptr %a97 - %t98 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_read_file(ptr %a100, ptr %a99, ptr @.str.6435, i64 114) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.6437, i64 1, i64 0 }, ptr %a104 - call void @finch_str_split(ptr %a105, ptr %a102, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t101, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t106, ptr %a108 - store i64 0, ptr %a109 - br label %each.cond9253 -each.cond9253: - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a108, i32 0, i32 1 - %t111 = load i64, ptr %t110 - %t112 = load i64, ptr %a109 - %t113 = icmp slt i64 %t112, %t111 - br i1 %t113, label %each.body9254, label %each.end9256 -each.body9254: - %t114 = load ptr, ptr %a108 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_trim(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t121, ptr %a122 - %t123 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.6440, i64 34, i64 0 }, ptr %a126 - %t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126) - %t128 = icmp ne i32 %t127, 0 - br i1 %t128, label %then9257, label %endif9259 -then9257: - store i1 true, ptr %a97 - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9259: - %t129 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6442, i64 19, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br i1 %t134, label %then9260, label %endif9262 -then9260: - call void @finch_str_drop(ptr %a122) - br label %each.end9256 -endif9262: - %t135 = load i1, ptr %a97 - %t136 = xor i1 %t135, true - br label %logic.from9263 -logic.from9263: - br i1 %t136, label %logic.end9265, label %logic.rhs9264 -logic.rhs9264: - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br label %logic.rend9266 -logic.rend9266: - br label %logic.end9265 -logic.end9265: - %t140 = phi i1 [ true, %logic.from9263 ], [ %t139, %logic.rend9266 ] - br i1 %t140, label %then9267, label %endif9269 -then9267: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9269: - %t141 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6444, i64 22, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_ends(ptr %a142, ptr %a144) - %t146 = icmp ne i32 %t145, 0 - br i1 %t146, label %then9270, label %else9271 -then9270: - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t148, ptr %a149 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = sub i64 %t152, 22 - call void @finch_str_sub(ptr %a150, ptr %a149, i64 0, i64 %t153, ptr @.str.6446, i64 128) - %t154 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.6445, i64 11, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %t147 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t161, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %a2 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160 - store { ptr, i64, i64 } %t159, ptr %t163 - store i64 %t161, ptr %t147 - br label %endif9272 -else9271: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6447, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - %t170 = load i64, ptr %t164 - %t171 = add i64 %t170, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t172 = load ptr, ptr %a2 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 - store { ptr, i64, i64 } %t169, ptr %t173 - store i64 %t171, ptr %t164 - br label %endif9272 -endif9272: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -each.step9255: - %t174 = load i64, ptr %a109 - %t175 = add i64 %t174, 1 - store i64 %t175, ptr %a109 - br label %each.cond9253 -each.end9256: - call void @finch.drop.arr_str(ptr %a108) - %t176 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.host.remove({ ptr, i64, i64 } %t176) - %t177 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t177 -} - -define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) { -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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - %t4 = load %S.C.CXType, ptr %a2 - store %S.C.CXType %t4, ptr %a5 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a3, ptr byval(%S.C.CXType) align 8 %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 { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a9) - store { i64, 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 %panic9273, label %ok9274 -panic9273: - call void @finch_panic(ptr @.str.6448, i64 143, ptr @.str.6449) - unreachable -ok9274: - %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 %then9275, label %endif9277 -then9275: - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic9278, label %ok9279 -panic9278: - call void @finch_panic(ptr @.str.6450, i64 144, ptr @.str.6451) - unreachable -ok9279: - %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.missing9280, label %map.found9281 -map.missing9280: - 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.6452, i64 144, ptr %a29) - unreachable -map.found9281: - %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 - call void @finch_str_drop(ptr %a14) - ret { ptr, i64, i64 } %t38 -endif9277: - %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) - store { i64, 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.from9282 -logic.from9282: - br i1 %t48, label %logic.end9284, label %logic.rhs9283 -logic.rhs9283: - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6454, 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.rend9285 -logic.rend9285: - br label %logic.end9284 -logic.end9284: - %t55 = phi i1 [ true, %logic.from9282 ], [ %t54, %logic.rend9285 ] - br i1 %t55, label %then9286, label %endif9288 -then9286: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic9289, label %ok9290 -panic9289: - call void @finch_panic(ptr @.str.6455, i64 148, ptr @.str.6456) - unreachable -ok9290: - %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 %panic9291, label %ok9292 -panic9291: - call void @finch_panic(ptr @.str.6458, i64 149, ptr @.str.6459) - unreachable -ok9292: - %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.6457, i64 12, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t71, ptr %a45 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_drop(ptr %a73) - br label %endif9288 -endif9288: - %t74 = load { ptr, i64, i64 }, ptr %a45 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic9293, label %ok9294 -panic9293: - call void @finch_panic(ptr @.str.6460, i64 151, ptr @.str.6461) - unreachable -ok9294: - %t77 = getelementptr inbounds %S.cimport.Importer, ptr %t75, i32 0, i32 3 - %t78 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t78, ptr %a79 - store i32 0, ptr %a80 - %t81 = call i64 @finch_map_slot(ptr %t77, ptr %a79, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a80) - %t82 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t77, i32 0, i32 0 - %t83 = load ptr, ptr %t82 - %t84 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i64 %t81 - %t85 = load i32, ptr %a80 - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %map.new9295, label %map.have9296 -map.new9295: - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 1 - call void @finch_str_copy(ptr %t87, ptr %a79) - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t88 - br label %map.have9296 -map.have9296: - %t89 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t84, i32 0, i32 2 - store { ptr, i64, i64 } %t74, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } %t92, ptr %t89 - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a14) - ret { ptr, i64, i64 } %t95 -} - -define internal i32 @finch.c.cimport.visitField(ptr byval(%S.C.CXCursor) align 8 %c0, ptr %c1) { -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 - %a42 = alloca %S.C.CXType, align 16 - %a44 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i32, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca %S.C.CXType, align 16 - %a73 = alloca %S.cimport.CStruct, align 16 - %a75 = alloca %S.C.CXCursor, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.cimport.FieldCtx, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca i32, align 16 - %a117 = alloca %S.cimport.CStruct, align 16 - %a118 = alloca %S.cimport.CStruct, align 16 - %a121 = alloca %S.cimport.CStruct, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - %t4 = load %S.C.CXType, ptr %a2 - store %S.C.CXType %t4, ptr %a5 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a3, ptr byval(%S.C.CXType) align 8 %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 byval(%S.C.CXType) align 8 %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 { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a14) - store { i64, 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 %panic9297, label %ok9298 -panic9297: - call void @finch_panic(ptr @.str.6462, i64 161, ptr @.str.6463) - unreachable -ok9298: - %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.from9299 -logic.from9299: - br i1 %t31, label %logic.end9301, label %logic.rhs9300 -logic.rhs9300: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic9302, label %ok9303 -panic9302: - call void @finch_panic(ptr @.str.6464, i64 161, ptr @.str.6465) - unreachable -ok9303: - %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.rend9304 -logic.rend9304: - br label %logic.end9301 -logic.end9301: - %t39 = phi i1 [ true, %logic.from9299 ], [ %t38, %logic.rend9304 ] - br i1 %t39, label %then9305, label %endif9307 -then9305: - %t40 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t40 -endif9307: - %t41 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t41, ptr %a42 - %t43 = call i64 @clang_Type_getSizeOf(ptr byval(%S.C.CXType) align 8 %a42) - store i64 %t43, ptr %a44 - %t45 = load i64, ptr %a44 - %t46 = icmp slt i64 %t45, 0 - br i1 %t46, label %then9308, label %endif9310 -then9308: - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } { ptr @.str.6466, i64 0, i64 0 } -endif9310: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic9311, label %ok9312 -panic9311: - call void @finch_panic(ptr @.str.6467, i64 168, ptr @.str.6468) - unreachable -ok9312: - %t49 = getelementptr inbounds %S.cimport.Importer, ptr %t47, i32 0, i32 4 - %t50 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t50, ptr %a51 - store i32 0, ptr %a52 - %t53 = call i64 @finch_map_slot(ptr %t49, ptr %a51, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a52) - %t54 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t49, i32 0, i32 0 - %t55 = load ptr, ptr %t54 - %t56 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i64 %t53 - %t57 = load i32, ptr %a52 - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %map.new9313, label %map.have9314 -map.new9313: - %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 1 - call void @finch_str_copy(ptr %t59, ptr %a51) - %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 - store i1 false, ptr %t60 - br label %map.have9314 -map.have9314: - %t61 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t56, i32 0, i32 2 - store i1 true, ptr %t61 - %t62 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t65, 0 - %t67 = load i64, ptr %a44 - %t68 = insertvalue %S.cimport.CStruct %t66, i64 %t67, 2 - %t69 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t69, ptr %a70 - %t71 = call i64 @clang_Type_getAlignOf(ptr byval(%S.C.CXType) align 8 %a70) - %t72 = insertvalue %S.cimport.CStruct %t68, i64 %t71, 3 - store %S.cimport.CStruct %t72, ptr %a73 - %t74 = load %S.C.CXCursor, ptr %a12 - store %S.C.CXCursor %t74, ptr %a75 - %t76 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a75) - %t77 = icmp eq i32 %t76, 3 - br i1 %t77, label %then9315, label %endif9317 -then9315: - %t78 = getelementptr inbounds %S.cimport.CStruct, ptr %a73, i32 0, i32 4 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } { ptr @.str.6469, i64 12, i64 0 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif9317 -endif9317: - %t81 = load ptr, ptr %a1 - %t82 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t81, 0 - %t83 = insertvalue %S.cimport.FieldCtx %t82, ptr %a73, 1 - store %S.cimport.FieldCtx %t83, ptr %a84 - %t85 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t85, ptr %a86 - %t87 = call i32 @clang_Type_visitFields(ptr byval(%S.C.CXType) align 8 %a86, ptr @finch.c.cimport.visitField, ptr %a84) - %t88 = load ptr, ptr %a1 - %t89 = icmp eq ptr %t88, null - br i1 %t89, label %panic9318, label %ok9319 -panic9318: - call void @finch_panic(ptr @.str.6470, i64 176, ptr @.str.6471) - unreachable -ok9319: - %t90 = getelementptr inbounds %S.cimport.Importer, ptr %t88, i32 0, i32 4 - %t91 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i64 @finch_map_find(ptr %t90, ptr %a92, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t94 = icmp sge i64 %t93, 0 - br i1 %t94, label %remove.hit9320, label %remove.end9321 -remove.hit9320: - %t95 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t90, i32 0, i32 0 - %t96 = load ptr, ptr %t95 - %t97 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t96, i64 %t93 - %t98 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 1 - call void @finch_str_drop(ptr %t98) - %t99 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t97, i32 0, i32 2 - call void @finch_map_remove_at(ptr %t90, i64 %t93, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64)) - br label %remove.end9321 -remove.end9321: - %t100 = load %S.cimport.CStruct, ptr %a73 - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic9322, label %ok9323 -panic9322: - call void @finch_panic(ptr @.str.6472, i64 177, ptr @.str.6473) - unreachable -ok9323: - %t103 = getelementptr inbounds %S.cimport.Importer, ptr %t101, i32 0, i32 0 - %t104 = getelementptr inbounds %S.cimport.CImports, ptr %t103, i32 0, i32 3 - %t105 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t105, ptr %a106 - store i32 0, ptr %a107 - %t108 = call i64 @finch_map_slot(ptr %t104, ptr %a106, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a107) - %t109 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t104, i32 0, i32 0 - %t110 = load ptr, ptr %t109 - %t111 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i64 %t108 - %t112 = load i32, ptr %a107 - %t113 = icmp ne i32 %t112, 0 - br i1 %t113, label %map.new9324, label %map.have9325 -map.new9324: - %t114 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 1 - call void @finch_str_copy(ptr %t114, ptr %a106) - %t115 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 - store %S.cimport.CStruct zeroinitializer, ptr %t115 - br label %map.have9325 -map.have9325: - %t116 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t111, i32 0, i32 2 - store %S.cimport.CStruct %t100, ptr %a117 - call void @finch.copy.S_cimport_CStruct(ptr %a118, ptr %a117) - %t119 = load %S.cimport.CStruct, ptr %a118 - %t120 = load %S.cimport.CStruct, ptr %t116 - store %S.cimport.CStruct %t119, ptr %t116 - store %S.cimport.CStruct %t120, ptr %a121 - call void @finch.drop.S_cimport_CStruct(ptr %a121) - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic9326, label %ok9327 -panic9326: - call void @finch_panic(ptr @.str.6474, i64 178, ptr @.str.6475) - unreachable -ok9327: - %t124 = getelementptr inbounds %S.cimport.Importer, ptr %t122, i32 0, i32 0 - %t125 = getelementptr inbounds %S.cimport.CImports, ptr %t124, i32 0, i32 4 - %t126 = getelementptr inbounds { ptr, i64, i64 }, ptr %t125, i32 0, i32 1 - %t127 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = load i64, ptr %t126 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t125, i64 %t132, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t125 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i64 %t131 - store { ptr, i64, i64 } %t130, ptr %t134 - store i64 %t132, ptr %t126 - %t135 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.S_cimport_CStruct(ptr %a73) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t135 -} - -define internal void @finch.drop.S_cimport_Mapped(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 0 - call void @finch.drop.S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) { -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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca %S.C.CXCursor, align 16 - %a52 = alloca %S.C.CXType, align 16 - %a54 = alloca %S.C.CXCursor, align 16 - %a65 = alloca %S.cimport.Mapped, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a72 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a98 = alloca %S.cimport.CField, align 16 - %a99 = alloca %S.cimport.CField, align 16 - store %S.C.CXCursor %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a2 - store ptr %t3, ptr %a4 - %t5 = load %S.C.CXCursor, ptr %a1 - store %S.C.CXCursor %t5, ptr %a6 - %t7 = call { i64, i64 } @clang_getCursorSpelling(ptr byval(%S.C.CXCursor) align 8 %a6) - store { i64, 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 byval(%S.C.CXCursor) align 8 %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 byval(%S.C.CXType) align 8 %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 byval(%S.C.CXCursor) align 8 %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 byval(%S.C.CXType) align 8 %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 byval(%S.C.CXType) align 8 %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 byval(%S.C.CXCursor) align 8 %a35) - %t37 = icmp ne i32 %t36, 0 - br i1 %t37, label %then9328, label %else9329 -then9328: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic9331, label %ok9332 -panic9331: - call void @finch_panic(ptr @.str.6477, i64 195, ptr @.str.6478) - unreachable -ok9332: - %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 %panic9333, label %ok9334 -panic9333: - call void @finch_panic(ptr @.str.6479, i64 195, ptr @.str.6480) - unreachable -ok9334: - %t43 = getelementptr inbounds %S.cimport.CStruct, ptr %t41, i32 0, i32 4 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.6476, i64 14, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t46 - br label %endif9330 -else9329: - %t47 = getelementptr inbounds %S.C.CXType, ptr %a20, i32 0, i32 0 - %t48 = load i32, ptr %t47 - %t49 = icmp eq i32 %t48, 105 - br label %logic.from9335 -logic.from9335: - br i1 %t49, label %logic.rhs9336, label %logic.end9337 -logic.rhs9336: - %t51 = load %S.C.CXType, ptr %a20 - store %S.C.CXType %t51, ptr %a52 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a50, ptr byval(%S.C.CXType) align 8 %a52) - %t53 = load %S.C.CXCursor, ptr %a50 - store %S.C.CXCursor %t53, ptr %a54 - %t55 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a54) - %t56 = icmp eq i32 %t55, 3 - br label %logic.rend9338 -logic.rend9338: - br label %logic.end9337 -logic.end9337: - %t57 = phi i1 [ false, %logic.from9335 ], [ %t56, %logic.rend9338 ] - br i1 %t57, label %then9339, label %else9340 -then9339: - %t58 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t58 - br label %endif9341 -else9340: - %t59 = load ptr, ptr %a4 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic9342, label %ok9343 -panic9342: - call void @finch_panic(ptr @.str.6481, i64 200, ptr @.str.6482) - unreachable -ok9343: - %t61 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t59, i32 0, i32 0 - %t62 = load ptr, ptr %t61 - %t63 = load %S.C.CXType, ptr %a20 - %t64 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t62, %S.C.CXType %t63, i1 false, i1 false) - store %S.cimport.Mapped %t64, ptr %a65 - %t66 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 2 - %t67 = load i1, ptr %t66 - br i1 %t67, label %then9344, label %else9345 -then9344: - %t68 = getelementptr inbounds %S.cimport.Mapped, ptr %a65, i32 0, i32 0 - %t69 = load %S.ast.Type, ptr %t68 - %t70 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 1 - store %S.ast.Type %t69, ptr %a71 - call void @finch.copy.S_ast_Type(ptr %a72, ptr %a71) - %t73 = load %S.ast.Type, ptr %a72 - %t74 = load %S.ast.Type, ptr %t70 - store %S.ast.Type %t73, ptr %t70 - store %S.ast.Type %t74, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - br label %endif9346 -else9345: - %t76 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t76 - br label %endif9346 -endif9346: - call void @finch.drop.S_cimport_Mapped(ptr %a65) - br label %endif9341 -endif9341: - br label %endif9330 -endif9330: - %t77 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then9347, label %endif9349 -then9347: - %t79 = load ptr, ptr %a4 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic9350, label %ok9351 -panic9350: - call void @finch_panic(ptr @.str.6483, i64 208, ptr @.str.6484) - unreachable -ok9351: - %t81 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t79, i32 0, i32 1 - %t82 = load ptr, ptr %t81 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic9352, label %ok9353 -panic9352: - call void @finch_panic(ptr @.str.6485, i64 208, ptr @.str.6486) - unreachable -ok9353: - %t84 = getelementptr inbounds %S.cimport.CStruct, ptr %t82, i32 0, i32 5 - store i1 true, ptr %t84 - br label %endif9349 -endif9349: - %t85 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = icmp eq i64 %t87, 0 - br i1 %t88, label %then9354, label %endif9356 -then9354: - %t89 = getelementptr inbounds %S.cimport.CField, ptr %a12, i32 0, i32 5 - store i1 true, ptr %t89 - br label %endif9356 -endif9356: - %t90 = load ptr, ptr %a4 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic9357, label %ok9358 -panic9357: - call void @finch_panic(ptr @.str.6487, i64 213, ptr @.str.6488) - unreachable -ok9358: - %t92 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t90, i32 0, i32 1 - %t93 = load ptr, ptr %t92 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic9359, label %ok9360 -panic9359: - call void @finch_panic(ptr @.str.6489, i64 213, ptr @.str.6490) - unreachable -ok9360: - %t95 = getelementptr inbounds %S.cimport.CStruct, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load %S.cimport.CField, ptr %a12 - store %S.cimport.CField %t97, ptr %a98 - call void @finch.copy.S_cimport_CField(ptr %a99, ptr %a98) - %t100 = load %S.cimport.CField, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds %S.cimport.CField, ptr %t103, i64 %t101 - store %S.cimport.CField %t100, ptr %t104 - store i64 %t102, ptr %t96 - call void @finch.drop.S_cimport_CField(ptr %a12) - ret i32 1 -} - -define internal %S.cimport.Mapped @finch.cimport.sized(i64 %p0, i1 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a29 = alloca %S.ast.Type, align 16 - %a35 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load i64, ptr %a1 - %t4 = icmp eq i64 %t3, 1 - br i1 %t4, label %then9361, label %endif9363 -then9361: - %t5 = load i1, ptr %a2 - br i1 %t5, label %then9364, label %endif9366 -then9364: - %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6491, i64 2, i64 0 }) - %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) - store %S.ast.Type %t6, ptr %a8 - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.cimport.Mapped %t7 -endif9366: - %t9 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6492, i64 2, i64 0 }) - %t10 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t9) - store %S.ast.Type %t9, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.cimport.Mapped %t10 -endif9363: - %t12 = load i64, ptr %a1 - %t13 = icmp eq i64 %t12, 2 - br i1 %t13, label %then9367, label %endif9369 -then9367: - %t14 = load i1, ptr %a2 - br i1 %t14, label %then9370, label %endif9372 -then9370: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6493, i64 3, i64 0 }) - %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) - store %S.ast.Type %t15, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a17) - ret %S.cimport.Mapped %t16 -endif9372: - %t18 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6494, i64 3, i64 0 }) - %t19 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t18) - store %S.ast.Type %t18, ptr %a20 - call void @finch.drop.S_ast_Type(ptr %a20) - ret %S.cimport.Mapped %t19 -endif9369: - %t21 = load i64, ptr %a1 - %t22 = icmp eq i64 %t21, 4 - br i1 %t22, label %then9373, label %endif9375 -then9373: - %t23 = load i1, ptr %a2 - br i1 %t23, label %then9376, label %endif9378 -then9376: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6495, i64 3, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9378: - %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6496, i64 3, i64 0 }) - %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) - store %S.ast.Type %t27, ptr %a29 - call void @finch.drop.S_ast_Type(ptr %a29) - ret %S.cimport.Mapped %t28 -endif9375: - %t30 = load i64, ptr %a1 - %t31 = icmp eq i64 %t30, 8 - br i1 %t31, label %then9379, label %endif9381 -then9379: - %t32 = load i1, ptr %a2 - br i1 %t32, label %then9382, label %endif9384 -then9382: - %t33 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6497, i64 3, i64 0 }) - %t34 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t33) - store %S.ast.Type %t33, ptr %a35 - call void @finch.drop.S_ast_Type(ptr %a35) - ret %S.cimport.Mapped %t34 -endif9384: - %t36 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6498, i64 3, i64 0 }) - %t37 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t36) - store %S.ast.Type %t36, ptr %a38 - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.cimport.Mapped %t37 -endif9381: - %t39 = load i64, ptr %a1 - %t40 = mul i64 %t39, 8 - call void @finch_str_from_int(ptr %a41, i64 %t40) - %t42 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.6499, i64 7, i64 0 }, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.6500, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a54 - call void @finch_str_drop(ptr %a54) - ret %S.cimport.Mapped %t53 -} - -define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) { -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 - %a21 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.ast.Type, align 16 - %a83 = alloca %S.C.CXType, align 16 - %a84 = alloca %S.C.CXType, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a88 = alloca %S.C.CXType, align 16 - %a90 = alloca %S.C.CXType, align 16 - %a103 = alloca %S.C.CXType, align 16 - %a109 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.cimport.Mapped, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca %S.ast.Type, align 16 - %a154 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.C.CXCursor, align 16 - %a159 = alloca %S.C.CXType, align 16 - %a161 = alloca %S.C.CXCursor, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.C.CXType, align 16 - %a187 = alloca %S.C.CXType, align 16 - %a190 = alloca %S.cimport.Mapped, align 16 - %a198 = alloca %S.C.CXType, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a207 = alloca %S.C.CXType, align 16 - %a209 = alloca [32 x i8], align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXType %p1, ptr %a2 - store i1 %p2, ptr %a3 - 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 byval(%S.C.CXType) align 8 %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 byval(%S.C.CXType) align 8 %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 %then9385, label %endif9387 -then9385: - %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6501, i64 4, i64 0 }) - %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.cimport.Mapped %t20 -endif9387: - %t22 = load i32, ptr %a16 - %t23 = icmp eq i32 %t22, 3 - br i1 %t23, label %then9388, label %endif9390 -then9388: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6502, i64 4, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9390: - %t27 = load i32, ptr %a16 - %t28 = icmp eq i32 %t27, 13 - br label %logic.from9391 -logic.from9391: - br i1 %t28, label %logic.end9393, label %logic.rhs9392 -logic.rhs9392: - %t29 = load i32, ptr %a16 - %t30 = icmp eq i32 %t29, 4 - br label %logic.rend9394 -logic.rend9394: - br label %logic.end9393 -logic.end9393: - %t31 = phi i1 [ true, %logic.from9391 ], [ %t30, %logic.rend9394 ] - br i1 %t31, label %then9395, label %endif9397 -then9395: - %t32 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6503, i64 4, i64 0 }) - %t33 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - ret %S.cimport.Mapped %t33 -endif9397: - %t35 = load i32, ptr %a16 - %t36 = icmp eq i32 %t35, 14 - br label %logic.from9398 -logic.from9398: - br i1 %t36, label %logic.end9400, label %logic.rhs9399 -logic.rhs9399: - %t37 = load i32, ptr %a16 - %t38 = icmp eq i32 %t37, 16 - br label %logic.rend9401 -logic.rend9401: - br label %logic.end9400 -logic.end9400: - %t39 = phi i1 [ true, %logic.from9398 ], [ %t38, %logic.rend9401 ] - br label %logic.from9402 -logic.from9402: - br i1 %t39, label %logic.end9404, label %logic.rhs9403 -logic.rhs9403: - %t40 = load i32, ptr %a16 - %t41 = icmp eq i32 %t40, 17 - br label %logic.rend9405 -logic.rend9405: - br label %logic.end9404 -logic.end9404: - %t42 = phi i1 [ true, %logic.from9402 ], [ %t41, %logic.rend9405 ] - br label %logic.from9406 -logic.from9406: - br i1 %t42, label %logic.end9408, label %logic.rhs9407 -logic.rhs9407: - %t43 = load i32, ptr %a16 - %t44 = icmp eq i32 %t43, 18 - br label %logic.rend9409 -logic.rend9409: - br label %logic.end9408 -logic.end9408: - %t45 = phi i1 [ true, %logic.from9406 ], [ %t44, %logic.rend9409 ] - br label %logic.from9410 -logic.from9410: - br i1 %t45, label %logic.end9412, label %logic.rhs9411 -logic.rhs9411: - %t46 = load i32, ptr %a16 - %t47 = icmp eq i32 %t46, 19 - br label %logic.rend9413 -logic.rend9413: - br label %logic.end9412 -logic.end9412: - %t48 = phi i1 [ true, %logic.from9410 ], [ %t47, %logic.rend9413 ] - br i1 %t48, label %then9414, label %endif9416 -then9414: - %t49 = load i64, ptr %a13 - %t50 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t49, i1 true) - ret %S.cimport.Mapped %t50 -endif9416: - %t51 = load i32, ptr %a16 - %t52 = icmp eq i32 %t51, 5 - br label %logic.from9417 -logic.from9417: - br i1 %t52, label %logic.end9419, label %logic.rhs9418 -logic.rhs9418: - %t53 = load i32, ptr %a16 - %t54 = icmp eq i32 %t53, 8 - br label %logic.rend9420 -logic.rend9420: - br label %logic.end9419 -logic.end9419: - %t55 = phi i1 [ true, %logic.from9417 ], [ %t54, %logic.rend9420 ] - br label %logic.from9421 -logic.from9421: - br i1 %t55, label %logic.end9423, label %logic.rhs9422 -logic.rhs9422: - %t56 = load i32, ptr %a16 - %t57 = icmp eq i32 %t56, 9 - br label %logic.rend9424 -logic.rend9424: - br label %logic.end9423 -logic.end9423: - %t58 = phi i1 [ true, %logic.from9421 ], [ %t57, %logic.rend9424 ] - br label %logic.from9425 -logic.from9425: - br i1 %t58, label %logic.end9427, label %logic.rhs9426 -logic.rhs9426: - %t59 = load i32, ptr %a16 - %t60 = icmp eq i32 %t59, 10 - br label %logic.rend9428 -logic.rend9428: - br label %logic.end9427 -logic.end9427: - %t61 = phi i1 [ true, %logic.from9425 ], [ %t60, %logic.rend9428 ] - br label %logic.from9429 -logic.from9429: - br i1 %t61, label %logic.end9431, label %logic.rhs9430 -logic.rhs9430: - %t62 = load i32, ptr %a16 - %t63 = icmp eq i32 %t62, 11 - br label %logic.rend9432 -logic.rend9432: - br label %logic.end9431 -logic.end9431: - %t64 = phi i1 [ true, %logic.from9429 ], [ %t63, %logic.rend9432 ] - br i1 %t64, label %then9433, label %endif9435 -then9433: - %t65 = load i64, ptr %a13 - %t66 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t65, i1 false) - ret %S.cimport.Mapped %t66 -endif9435: - %t67 = load i32, ptr %a16 - %t68 = icmp eq i32 %t67, 106 - br i1 %t68, label %then9436, label %endif9438 -then9436: - %t69 = load i64, ptr %a13 - %t70 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t69, i1 true) - ret %S.cimport.Mapped %t70 -endif9438: - %t71 = load i32, ptr %a16 - %t72 = icmp eq i32 %t71, 21 - br i1 %t72, label %then9439, label %endif9441 -then9439: - %t73 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6504, i64 3, i64 0 }) - %t74 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t73) - store %S.ast.Type %t73, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - ret %S.cimport.Mapped %t74 -endif9441: - %t76 = load i32, ptr %a16 - %t77 = icmp eq i32 %t76, 22 - br i1 %t77, label %then9442, label %endif9444 -then9442: - %t78 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6505, i64 5, i64 0 }) - %t79 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t78) - store %S.ast.Type %t78, ptr %a80 - call void @finch.drop.S_ast_Type(ptr %a80) - ret %S.cimport.Mapped %t79 -endif9444: - %t81 = load i32, ptr %a16 - %t82 = icmp eq i32 %t81, 101 - br i1 %t82, label %then9445, label %endif9447 -then9445: - %t85 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t85, ptr %a86 - call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a84, ptr byval(%S.C.CXType) align 8 %a86) - %t87 = load %S.C.CXType, ptr %a84 - store %S.C.CXType %t87, ptr %a88 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a83, ptr byval(%S.C.CXType) align 8 %a88) - %t89 = load %S.C.CXType, ptr %a83 - store %S.C.CXType %t89, ptr %a90 - %t91 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t92 = load i32, ptr %t91 - %t93 = icmp eq i32 %t92, 13 - br label %logic.from9448 -logic.from9448: - br i1 %t93, label %logic.end9450, label %logic.rhs9449 -logic.rhs9449: - %t94 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t95 = load i32, ptr %t94 - %t96 = icmp eq i32 %t95, 4 - br label %logic.rend9451 -logic.rend9451: - br label %logic.end9450 -logic.end9450: - %t97 = phi i1 [ true, %logic.from9448 ], [ %t96, %logic.rend9451 ] - br label %logic.from9452 -logic.from9452: - br i1 %t97, label %logic.rhs9453, label %logic.end9454 -logic.rhs9453: - %t98 = load i1, ptr %a3 - br label %logic.rend9455 -logic.rend9455: - br label %logic.end9454 -logic.end9454: - %t99 = phi i1 [ false, %logic.from9452 ], [ %t98, %logic.rend9455 ] - br i1 %t99, label %then9456, label %endif9458 -then9456: - %t100 = load i1, ptr %a4 - %t101 = xor i1 %t100, true - br label %logic.from9459 -logic.from9459: - br i1 %t101, label %logic.end9461, label %logic.rhs9460 -logic.rhs9460: - %t102 = load %S.C.CXType, ptr %a90 - store %S.C.CXType %t102, ptr %a103 - %t104 = call i32 @clang_isConstQualifiedType(ptr byval(%S.C.CXType) align 8 %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend9462 -logic.rend9462: - br label %logic.end9461 -logic.end9461: - %t106 = phi i1 [ true, %logic.from9459 ], [ %t105, %logic.rend9462 ] - br i1 %t106, label %then9463, label %endif9465 -then9463: - %t107 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6506, i64 3, i64 0 }) - %t108 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t107) - store %S.ast.Type %t107, ptr %a109 - call void @finch.drop.S_ast_Type(ptr %a109) - ret %S.cimport.Mapped %t108 -endif9465: - br label %endif9458 -endif9458: - %t110 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t111 = load i32, ptr %t110 - %t112 = icmp eq i32 %t111, 2 - br label %logic.from9466 -logic.from9466: - br i1 %t112, label %logic.end9468, label %logic.rhs9467 -logic.rhs9467: - %t113 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t114 = load i32, ptr %t113 - %t115 = icmp eq i32 %t114, 111 - br label %logic.rend9469 -logic.rend9469: - br label %logic.end9468 -logic.end9468: - %t116 = phi i1 [ true, %logic.from9466 ], [ %t115, %logic.rend9469 ] - br label %logic.from9470 -logic.from9470: - br i1 %t116, label %logic.end9472, label %logic.rhs9471 -logic.rhs9471: - %t117 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t118 = load i32, ptr %t117 - %t119 = icmp eq i32 %t118, 110 - br label %logic.rend9473 -logic.rend9473: - br label %logic.end9472 -logic.end9472: - %t120 = phi i1 [ true, %logic.from9470 ], [ %t119, %logic.rend9473 ] - br i1 %t120, label %then9474, label %endif9476 -then9474: - %t121 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6507, i64 3, i64 0 }) - %t122 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t121) - store %S.ast.Type %t121, ptr %a123 - call void @finch.drop.S_ast_Type(ptr %a123) - ret %S.cimport.Mapped %t122 -endif9476: - %t124 = load ptr, ptr %a1 - %t125 = load %S.C.CXType, ptr %a90 - %t126 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t124, %S.C.CXType %t125, i1 false, i1 false) - store %S.cimport.Mapped %t126, ptr %a127 - %t128 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 2 - %t129 = load i1, ptr %t128 - %t130 = xor i1 %t129, true - br label %logic.from9477 -logic.from9477: - br i1 %t130, label %logic.end9479, label %logic.rhs9478 -logic.rhs9478: - %t131 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.6508, 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.rend9480 -logic.rend9480: - br label %logic.end9479 -logic.end9479: - %t138 = phi i1 [ true, %logic.from9477 ], [ %t137, %logic.rend9480 ] - br label %logic.from9481 -logic.from9481: - br i1 %t138, label %logic.end9483, label %logic.rhs9482 -logic.rhs9482: - %t139 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t140 = getelementptr inbounds %S.ast.Type, ptr %t139, i32 0, i32 0 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6509, i64 5, i64 0 }, ptr %a143 - %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) - %t145 = icmp ne i32 %t144, 0 - br label %logic.rend9484 -logic.rend9484: - br label %logic.end9483 -logic.end9483: - %t146 = phi i1 [ true, %logic.from9481 ], [ %t145, %logic.rend9484 ] - br i1 %t146, label %then9485, label %endif9487 -then9485: - %t147 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6510, i64 3, i64 0 }) - %t148 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t147) - store %S.ast.Type %t147, ptr %a149 - call void @finch.drop.S_ast_Type(ptr %a149) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t148 -endif9487: - %t150 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t151) - %t153 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t152) - store %S.ast.Type %t152, ptr %a154 - call void @finch.drop.S_ast_Type(ptr %a154) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t153 -endif9447: - %t155 = load i32, ptr %a16 - %t156 = icmp eq i32 %t155, 105 - br i1 %t156, label %then9488, label %endif9490 -then9488: - %t158 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t158, ptr %a159 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a157, ptr byval(%S.C.CXType) align 8 %a159) - %t160 = load %S.C.CXCursor, ptr %a157 - store %S.C.CXCursor %t160, ptr %a161 - %t162 = call i32 @clang_getCursorKind(ptr byval(%S.C.CXCursor) align 8 %a161) - %t163 = icmp eq i32 %t162, 3 - br i1 %t163, label %then9491, label %endif9493 -then9491: - %t164 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6511, i64 23, i64 0 }) - ret %S.cimport.Mapped %t164 -endif9493: - %t165 = load ptr, ptr %a1 - %t166 = load %S.C.CXType, ptr %a9 - %t167 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t165, %S.C.CXType %t166) - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = icmp eq i64 %t170, 0 - br i1 %t171, label %then9494, label %endif9496 -then9494: - %t172 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6512, i64 36, i64 0 }) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t172 -endif9496: - %t173 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6513, i64 5, i64 0 }, 0 - %t174 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t174, ptr %a175 - call void @finch_str_copy(ptr %a176, ptr %a175) - %t177 = load { ptr, i64, i64 }, ptr %a176 - %t178 = insertvalue %S.ast.Type %t173, { ptr, i64, i64 } %t177, 2 - %t179 = insertvalue %S.ast.Type %t178, { ptr, i64, i64 } { ptr @.str.6514, i64 1, i64 0 }, 3 - %t180 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t179) - store %S.ast.Type %t179, ptr %a181 - call void @finch.drop.S_ast_Type(ptr %a181) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t180 -endif9490: - %t182 = load i32, ptr %a16 - %t183 = icmp eq i32 %t182, 112 - br i1 %t183, label %then9497, label %endif9499 -then9497: - %t184 = load ptr, ptr %a1 - %t186 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t186, ptr %a187 - call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a185, ptr byval(%S.C.CXType) align 8 %a187) - %t188 = load %S.C.CXType, ptr %a185 - %t189 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t184, %S.C.CXType %t188, i1 false, i1 false) - store %S.cimport.Mapped %t189, ptr %a190 - %t191 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 2 - %t192 = load i1, ptr %t191 - %t193 = xor i1 %t192, true - br i1 %t193, label %then9500, label %endif9502 -then9500: - %t194 = load %S.cimport.Mapped, ptr %a190 - ret %S.cimport.Mapped %t194 -endif9502: - %t195 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t197, ptr %a198 - %t199 = call i64 @clang_getArraySize(ptr byval(%S.C.CXType) align 8 %a198) - %t200 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t196, i64 %t199) - %t201 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t200) - store %S.ast.Type %t200, ptr %a202 - call void @finch.drop.S_ast_Type(ptr %a202) - call void @finch.drop.S_cimport_Mapped(ptr %a190) - ret %S.cimport.Mapped %t201 -endif9499: - %t203 = load i32, ptr %a16 - %t204 = icmp eq i32 %t203, 23 - br i1 %t204, label %then9503, label %endif9505 -then9503: - %t205 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }) - ret %S.cimport.Mapped %t205 -endif9505: - %t206 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t206, ptr %a207 - %t208 = call { i64, i64 } @clang_getTypeSpelling(ptr byval(%S.C.CXType) align 8 %a207) - store { i64, i64 } %t208, ptr %a209 - %t210 = load %S.C.CXString, ptr %a209 - %t211 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t210) - store { ptr, i64, i64 } { ptr @.str.6516, i64 17, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.6517, i64 1, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t221) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - ret %S.cimport.Mapped %t222 -} - -define internal %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %p0) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a49 = alloca i1, align 16 - %a50 = alloca i64, align 16 - %a62 = alloca i8, align 16 - %a63 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6519, 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.from9506 -logic.from9506: - br i1 %t13, label %logic.end9508, label %logic.rhs9507 -logic.rhs9507: - %t14 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6521, 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.rend9509 -logic.rend9509: - br label %logic.end9508 -logic.end9508: - %t20 = phi i1 [ true, %logic.from9506 ], [ %t19, %logic.rend9509 ] - br i1 %t20, label %then9510, label %else9511 -then9510: - 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.6522, i64 331) - %t26 = load { ptr, i64, i64 }, ptr %a23 - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t26, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif9512 -else9511: - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = icmp sgt i64 %t30, 1 - br label %logic.from9513 -logic.from9513: - br i1 %t31, label %logic.rhs9514, label %logic.end9515 -logic.rhs9514: - %t32 = load { ptr, i64, i64 }, ptr %a6 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 0, %t33 - br i1 %t34, label %range9516, label %inrange9517 -range9516: - call void @finch_panic_index(ptr @.str.6523, i64 332, i64 0, i64 %t33) - unreachable -inrange9517: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds i8, ptr %t35, i64 0 - %t37 = load i8, ptr %t36 - %t38 = icmp eq i8 %t37, 48 - br label %logic.rend9518 -logic.rend9518: - br label %logic.end9515 -logic.end9515: - %t39 = phi i1 [ false, %logic.from9513 ], [ %t38, %logic.rend9518 ] - br i1 %t39, label %then9519, label %endif9521 -then9519: - store i64 8, ptr %a7 - %t40 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t40, ptr %a41 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t44 = load i64, ptr %t43 - call void @finch_str_sub(ptr %a42, ptr %a41, i64 1, i64 %t44, ptr @.str.6524, i64 334) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t45, ptr %a6 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif9521 -endif9521: - br label %endif9512 -endif9512: - store i64 0, ptr %a48 - store i1 false, ptr %a49 - store i64 0, ptr %a50 - br label %while.cond9522 -while.cond9522: - %t51 = load i64, ptr %a50 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t53 = load i64, ptr %t52 - %t54 = icmp slt i64 %t51, %t53 - br i1 %t54, label %while.body9523, label %while.end9524 -while.body9523: - %t55 = load i64, ptr %a50 - %t56 = load { ptr, i64, i64 }, ptr %a6 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range9525, label %inrange9526 -range9525: - call void @finch_panic_index(ptr @.str.6525, i64 340, i64 %t55, i64 %t57) - unreachable -inrange9526: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds i8, ptr %t59, i64 %t55 - %t61 = load i8, ptr %t60 - store i8 %t61, ptr %a62 - store i64 99, ptr %a63 - %t64 = load i8, ptr %a62 - %t65 = icmp uge i8 %t64, 48 - br label %logic.from9527 -logic.from9527: - br i1 %t65, label %logic.rhs9528, label %logic.end9529 -logic.rhs9528: - %t66 = load i8, ptr %a62 - %t67 = icmp ule i8 %t66, 57 - br label %logic.rend9530 -logic.rend9530: - br label %logic.end9529 -logic.end9529: - %t68 = phi i1 [ false, %logic.from9527 ], [ %t67, %logic.rend9530 ] - br i1 %t68, label %then9531, label %else9532 -then9531: - %t69 = load i8, ptr %a62 - %t70 = zext i8 %t69 to i64 - %t71 = zext i8 48 to i64 - %t72 = sub i64 %t70, %t71 - store i64 %t72, ptr %a63 - br label %endif9533 -else9532: - %t73 = load i8, ptr %a62 - %t74 = icmp uge i8 %t73, 97 - br label %logic.from9534 -logic.from9534: - br i1 %t74, label %logic.rhs9535, label %logic.end9536 -logic.rhs9535: - %t75 = load i8, ptr %a62 - %t76 = icmp ule i8 %t75, 102 - br label %logic.rend9537 -logic.rend9537: - br label %logic.end9536 -logic.end9536: - %t77 = phi i1 [ false, %logic.from9534 ], [ %t76, %logic.rend9537 ] - br i1 %t77, label %then9538, label %else9539 -then9538: - %t78 = load i8, ptr %a62 - %t79 = zext i8 %t78 to i64 - %t80 = zext i8 97 to i64 - %t81 = sub i64 %t79, %t80 - %t82 = add i64 %t81, 10 - store i64 %t82, ptr %a63 - br label %endif9540 -else9539: - %t83 = load i8, ptr %a62 - %t84 = icmp uge i8 %t83, 65 - br label %logic.from9541 -logic.from9541: - br i1 %t84, label %logic.rhs9542, label %logic.end9543 -logic.rhs9542: - %t85 = load i8, ptr %a62 - %t86 = icmp ule i8 %t85, 70 - br label %logic.rend9544 -logic.rend9544: - br label %logic.end9543 -logic.end9543: - %t87 = phi i1 [ false, %logic.from9541 ], [ %t86, %logic.rend9544 ] - br i1 %t87, label %then9545, label %endif9547 -then9545: - %t88 = load i8, ptr %a62 - %t89 = zext i8 %t88 to i64 - %t90 = zext i8 65 to i64 - %t91 = sub i64 %t89, %t90 - %t92 = add i64 %t91, 10 - store i64 %t92, ptr %a63 - br label %endif9547 -endif9547: - br label %endif9540 -endif9540: - br label %endif9533 -endif9533: - %t93 = load i64, ptr %a63 - %t94 = load i64, ptr %a7 - %t95 = icmp sge i64 %t93, %t94 - br i1 %t95, label %then9548, label %endif9550 -then9548: - br label %while.end9524 -endif9550: - %t96 = load i64, ptr %a48 - %t97 = load i64, ptr %a7 - %t98 = mul i64 %t96, %t97 - %t99 = load i64, ptr %a63 - %t100 = add i64 %t98, %t99 - store i64 %t100, ptr %a48 - store i1 true, ptr %a49 - %t101 = load i64, ptr %a50 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %a50 - br label %while.cond9522 -while.end9524: - br label %while.cond9551 -while.cond9551: - %t103 = load i64, ptr %a50 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp slt i64 %t103, %t105 - br i1 %t106, label %while.body9552, label %while.end9553 -while.body9552: - store { ptr, i64, i64 } { ptr @.str.6526, i64 4, i64 0 }, ptr %a107 - %t109 = load i64, ptr %a50 - %t110 = load { ptr, i64, i64 }, ptr %a6 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range9554, label %inrange9555 -range9554: - call void @finch_panic_index(ptr @.str.6528, i64 358, i64 %t109, i64 %t111) - unreachable -inrange9555: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds i8, ptr %t113, i64 %t109 - %t115 = load i8, ptr %t114 - call void @finch_str_from_char(ptr %a116, i8 signext %t115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t117, ptr %a118 - %t119 = call i64 @finch_str_find(ptr %a107, ptr %a118) - %t120 = icmp sge i64 %t119, 0 - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = xor i1 %t120, true - br i1 %t122, label %then9556, label %endif9558 -then9556: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9558: - %t123 = load i64, ptr %a50 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a50 - br label %while.cond9551 -while.end9553: - %t125 = load i1, ptr %a49 - %t126 = xor i1 %t125, true - br label %logic.from9559 -logic.from9559: - br i1 %t126, label %logic.rhs9560, label %logic.end9561 -logic.rhs9560: - %t127 = load i64, ptr %a7 - %t128 = icmp ne i64 %t127, 8 - br label %logic.rend9562 -logic.rend9562: - br label %logic.end9561 -logic.end9561: - %t129 = phi i1 [ false, %logic.from9559 ], [ %t128, %logic.rend9562 ] - br i1 %t129, label %then9563, label %endif9565 -then9563: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9565: - %t130 = load i64, ptr %a48 - %t131 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t130, 1 - %t132 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t131, 0 - %t133 = insertvalue %S.cimport.Number %t132, i1 true, 1 - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number %t133 -} - -define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) { -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 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca i1, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i1, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca double, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca double, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca %S.cimport.Number, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - store ptr null, ptr %a3 - store i32 0, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic9566, label %ok9567 -panic9566: - call void @finch_panic(ptr @.str.6529, i64 373, ptr @.str.6530) - unreachable -ok9567: - %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 byval(%S.C.CXCursor) align 8 %a11) - %t12 = load %S.C.CXSourceRange, ptr %a9 - store %S.C.CXSourceRange %t12, ptr %a13 - call void @clang_tokenize(ptr %t8, ptr byval(%S.C.CXSourceRange) align 8 %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.cond9568 -for.cond9568: - %t18 = load i64, ptr %a17 - %t19 = icmp slt i64 %t18, %t16 - br i1 %t19, label %for.body9569, label %for.end9571 -for.body9569: - %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 byval(%S.C.CXToken) align 8 %a24) - %t26 = icmp eq i32 %t25, 4 - br i1 %t26, label %then9572, label %endif9574 -then9572: - br label %for.step9570 -endif9574: - %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 %panic9575, label %ok9576 -panic9575: - call void @finch_panic(ptr @.str.6531, i64 379, ptr @.str.6532) - unreachable -ok9576: - %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 { i64, i64 } @clang_getTokenSpelling(ptr %t31, ptr byval(%S.C.CXToken) align 8 %a36) - store { i64, 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.step9570 -for.step9570: - %t45 = load i64, ptr %a17 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a17 - br label %for.cond9568 -for.end9571: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic9577, label %ok9578 -panic9577: - call void @finch_panic(ptr @.str.6533, i64 381, ptr @.str.6534) - unreachable -ok9578: - %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.cond9579 -while.cond9579: - %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.from9582 -logic.from9582: - br i1 %t55, label %logic.rhs9583, label %logic.end9584 -logic.rhs9583: - %t56 = load { ptr, i64, i64 }, ptr %a14 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 0, %t57 - br i1 %t58, label %range9585, label %inrange9586 -range9585: - call void @finch_panic_index(ptr @.str.6535, i64 383, i64 0, i64 %t57) - unreachable -inrange9586: - %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.6536, 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.rend9587 -logic.rend9587: - br label %logic.end9584 -logic.end9584: - %t66 = phi i1 [ false, %logic.from9582 ], [ %t65, %logic.rend9587 ] - br label %logic.from9588 -logic.from9588: - br i1 %t66, label %logic.rhs9589, label %logic.end9590 -logic.rhs9589: - %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 %range9591, label %inrange9592 -range9591: - call void @finch_panic_index(ptr @.str.6537, i64 383, i64 %t69, i64 %t71) - unreachable -inrange9592: - %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.6538, 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.rend9593 -logic.rend9593: - br label %logic.end9590 -logic.end9590: - %t80 = phi i1 [ false, %logic.from9588 ], [ %t79, %logic.rend9593 ] - br i1 %t80, label %while.body9580, label %while.end9581 -while.body9580: - %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 %range9594, label %inrange9595 -range9594: - call void @finch_panic_index(ptr @.str.6539, i64 384, i64 0, i64 %t82) - unreachable -inrange9595: - %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)) - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, 0 - br i1 %t90, label %panic9596, label %ok9597 -panic9596: - call void @finch_panic(ptr @.str.6540, i64 385, ptr @.str.6541) - unreachable -ok9597: - %t91 = sub i64 %t89, 1 - %t92 = load ptr, ptr %a14 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t91 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store i64 %t91, ptr %t88 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %while.cond9579 -while.end9581: - store i1 false, ptr %a96 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = icmp eq i64 %t98, 2 - br label %logic.from9598 -logic.from9598: - br i1 %t99, label %logic.rhs9599, label %logic.end9600 -logic.rhs9599: - %t100 = load { ptr, i64, i64 }, ptr %a14 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 0, %t101 - br i1 %t102, label %range9601, label %inrange9602 -range9601: - call void @finch_panic_index(ptr @.str.6542, i64 388, i64 0, i64 %t101) - unreachable -inrange9602: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 0 - %t105 = load { ptr, i64, i64 }, ptr %t104 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.6543, i64 1, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.rend9603 -logic.rend9603: - br label %logic.end9600 -logic.end9600: - %t110 = phi i1 [ false, %logic.from9598 ], [ %t109, %logic.rend9603 ] - br i1 %t110, label %then9604, label %endif9606 -then9604: - store i1 true, ptr %a96 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp uge i64 0, %t112 - br i1 %t113, label %range9607, label %inrange9608 -range9607: - call void @finch_panic_index(ptr @.str.6544, i64 390, i64 0, i64 %t112) - unreachable -inrange9608: - %t114 = load ptr, ptr %a14 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif9606 -endif9606: - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t119 = load i64, ptr %t118 - %t120 = icmp ne i64 %t119, 1 - br i1 %t120, label %then9609, label %endif9611 -then9609: - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9611: - %t121 = load { ptr, i64, i64 }, ptr %a14 - %t122 = extractvalue { ptr, i64, i64 } %t121, 1 - %t123 = icmp uge i64 0, %t122 - br i1 %t123, label %range9612, label %inrange9613 -range9612: - call void @finch_panic_index(ptr @.str.6545, i64 395, i64 0, i64 %t122) - unreachable -inrange9613: - %t124 = extractvalue { ptr, i64, i64 } %t121, 0 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - call void @finch_str_copy(ptr %a128, ptr %a127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t132 = load i64, ptr %t131 - %t133 = icmp eq i64 %t132, 0 - br label %logic.from9614 -logic.from9614: - br i1 %t133, label %logic.end9616, label %logic.rhs9615 -logic.rhs9615: - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = extractvalue { ptr, i64, i64 } %t134, 1 - %t136 = icmp uge i64 0, %t135 - br i1 %t136, label %range9617, label %inrange9618 -range9617: - call void @finch_panic_index(ptr @.str.6546, i64 396, i64 0, i64 %t135) - unreachable -inrange9618: - %t137 = extractvalue { ptr, i64, i64 } %t134, 0 - %t138 = getelementptr inbounds i8, ptr %t137, i64 0 - %t139 = load i8, ptr %t138 - %t140 = icmp uge i8 %t139, 48 - br label %logic.from9619 -logic.from9619: - br i1 %t140, label %logic.rhs9620, label %logic.end9621 -logic.rhs9620: - %t141 = load { ptr, i64, i64 }, ptr %a130 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range9622, label %inrange9623 -range9622: - call void @finch_panic_index(ptr @.str.6547, i64 396, i64 0, i64 %t142) - unreachable -inrange9623: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds i8, ptr %t144, i64 0 - %t146 = load i8, ptr %t145 - %t147 = icmp ule i8 %t146, 57 - br label %logic.rend9624 -logic.rend9624: - br label %logic.end9621 -logic.end9621: - %t148 = phi i1 [ false, %logic.from9619 ], [ %t147, %logic.rend9624 ] - br label %logic.from9625 -logic.from9625: - br i1 %t148, label %logic.end9627, label %logic.rhs9626 -logic.rhs9626: - %t149 = load { ptr, i64, i64 }, ptr %a130 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 0, %t150 - br i1 %t151, label %range9628, label %inrange9629 -range9628: - call void @finch_panic_index(ptr @.str.6548, i64 396, i64 0, i64 %t150) - unreachable -inrange9629: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds i8, ptr %t152, i64 0 - %t154 = load i8, ptr %t153 - %t155 = icmp eq i8 %t154, 46 - br label %logic.rend9630 -logic.rend9630: - br label %logic.end9627 -logic.end9627: - %t156 = phi i1 [ true, %logic.from9625 ], [ %t155, %logic.rend9630 ] - %t157 = xor i1 %t156, true - br label %logic.rend9631 -logic.rend9631: - br label %logic.end9616 -logic.end9616: - %t158 = phi i1 [ true, %logic.from9614 ], [ %t157, %logic.rend9631 ] - br i1 %t158, label %then9632, label %endif9634 -then9632: - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9634: - %t159 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.6550, i64 1, i64 0 }, ptr %a162 - %t163 = call i64 @finch_str_find(ptr %a160, ptr %a162) - %t164 = icmp sge i64 %t163, 0 - br label %logic.from9635 -logic.from9635: - br i1 %t164, label %logic.end9637, label %logic.rhs9636 -logic.rhs9636: - %t165 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.6552, i64 1, i64 0 }, ptr %a168 - %t169 = call i64 @finch_str_find(ptr %a166, ptr %a168) - %t170 = icmp sge i64 %t169, 0 - br label %logic.rend9638 -logic.rend9638: - br label %logic.end9637 -logic.end9637: - %t171 = phi i1 [ true, %logic.from9635 ], [ %t170, %logic.rend9638 ] - br label %logic.from9639 -logic.from9639: - br i1 %t171, label %logic.end9641, label %logic.rhs9640 -logic.rhs9640: - %t172 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6554, i64 1, i64 0 }, ptr %a175 - %t176 = call i64 @finch_str_find(ptr %a173, ptr %a175) - %t177 = icmp sge i64 %t176, 0 - br label %logic.rend9642 -logic.rend9642: - br label %logic.end9641 -logic.end9641: - %t178 = phi i1 [ true, %logic.from9639 ], [ %t177, %logic.rend9642 ] - br label %logic.from9643 -logic.from9643: - br i1 %t178, label %logic.rhs9644, label %logic.end9645 -logic.rhs9644: - %t179 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.6556, i64 2, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_starts(ptr %a180, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - %t185 = xor i1 %t184, true - br label %logic.rend9646 -logic.rend9646: - br label %logic.end9645 -logic.end9645: - %t186 = phi i1 [ false, %logic.from9643 ], [ %t185, %logic.rend9646 ] - store i1 %t186, ptr %a187 - %t188 = load i1, ptr %a187 - br i1 %t188, label %then9647, label %endif9649 -then9647: - %t189 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_copy(ptr %a191, ptr %a190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t192, ptr %a193 - br label %while.cond9650 -while.cond9650: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t195 = load i64, ptr %t194 - %t196 = icmp sgt i64 %t195, 0 - br label %logic.from9653 -logic.from9653: - br i1 %t196, label %logic.rhs9654, label %logic.end9655 -logic.rhs9654: - store { ptr, i64, i64 } { ptr @.str.6557, i64 4, i64 0 }, ptr %a197 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = sub i64 %t200, 1 - %t202 = load { ptr, i64, i64 }, ptr %a193 - %t203 = extractvalue { ptr, i64, i64 } %t202, 1 - %t204 = icmp uge i64 %t201, %t203 - br i1 %t204, label %range9656, label %inrange9657 -range9656: - call void @finch_panic_index(ptr @.str.6559, i64 402, i64 %t201, i64 %t203) - unreachable -inrange9657: - %t205 = extractvalue { ptr, i64, i64 } %t202, 0 - %t206 = getelementptr inbounds i8, ptr %t205, i64 %t201 - %t207 = load i8, ptr %t206 - call void @finch_str_from_char(ptr %a208, i8 signext %t207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = call i64 @finch_str_find(ptr %a197, ptr %a210) - %t212 = icmp sge i64 %t211, 0 - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %logic.rend9658 -logic.rend9658: - br label %logic.end9655 -logic.end9655: - %t214 = phi i1 [ false, %logic.from9653 ], [ %t212, %logic.rend9658 ] - br i1 %t214, label %while.body9651, label %while.end9652 -while.body9651: - %t215 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t215, ptr %a216 - %t218 = getelementptr inbounds { ptr, i64, i64 }, ptr %a193, i32 0, i32 1 - %t219 = load i64, ptr %t218 - %t220 = sub i64 %t219, 1 - call void @finch_str_sub(ptr %a217, ptr %a216, i64 0, i64 %t220, ptr @.str.6560, i64 403) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t221, ptr %a193 - store { ptr, i64, i64 } %t222, ptr %a223 - call void @finch_str_drop(ptr %a223) - br label %while.cond9650 -while.end9652: - %t224 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - store double 0.0, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - %t228 = call i32 @finch_str_try_float(ptr %a227, ptr %a226, ptr %a225) - %t229 = icmp eq i32 %t228, 0 - %t230 = load { ptr, i64, i64 }, ptr %a225 - %t231 = load double, ptr %a226 - br i1 %t229, label %or.failed9659, label %or.ok9660 -or.failed9659: - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a193) - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -or.ok9660: - store double %t231, ptr %a233 - %t234 = load i1, ptr %a96 - br i1 %t234, label %then9661, label %endif9663 -then9661: - %t235 = load double, ptr %a233 - %t236 = fsub double 0.0, %t235 - store double %t236, ptr %a233 - br label %endif9663 -endif9663: - %t237 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 - %t238 = load double, ptr %a233 - %t239 = insertvalue %S.cimport.CConst %t237, double %t238, 2 - %t240 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_copy(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = insertvalue %S.cimport.CConst %t239, { ptr, i64, i64 } %t243, 3 - %t245 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t244, 0 - %t246 = insertvalue %S.cimport.Number %t245, i1 true, 1 - call void @finch_str_drop(ptr %a193) - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t246 -endif9649: - %t247 = load { ptr, i64, i64 }, ptr %a130 - %t248 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t247) - store %S.cimport.Number %t248, ptr %a249 - %t250 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.from9664 -logic.from9664: - br i1 %t251, label %logic.rhs9665, label %logic.end9666 -logic.rhs9665: - %t252 = load i1, ptr %a96 - br label %logic.rend9667 -logic.rend9667: - br label %logic.end9666 -logic.end9666: - %t253 = phi i1 [ false, %logic.from9664 ], [ %t252, %logic.rend9667 ] - br i1 %t253, label %then9668, label %endif9670 -then9668: - %t254 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 - %t255 = getelementptr inbounds %S.cimport.CConst, ptr %t254, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = sub i64 0, %t256 - %t258 = getelementptr inbounds %S.cimport.Number, ptr %a249, i32 0, i32 0 - %t259 = getelementptr inbounds %S.cimport.CConst, ptr %t258, i32 0, i32 1 - store i64 %t257, ptr %t259 - br label %endif9670 -endif9670: - %t260 = load %S.cimport.Number, ptr %a249 - call void @finch_str_drop(ptr %a130) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t260 -} - -define internal i32 @finch.cimport.visitTop(%S.C.CXCursor %p0, %S.C.CXCursor %p1, ptr %p2) { -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 byval(%S.C.CXCursor) align 8 %c0, ptr byval(%S.C.CXCursor) align 8 %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.drop.S_cimport_Number(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Number, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CConst(ptr %t1) - ret void -} - -define internal void @finch.cimport.visit(ptr %p0, %S.C.CXCursor %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca %S.cimport.CFunc, align 16 - %a125 = alloca %S.C.CXCursor, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i32, align 16 - %a148 = alloca %S.cimport.CFunc, align 16 - %a149 = alloca %S.cimport.CFunc, align 16 - %a152 = alloca %S.cimport.CFunc, align 16 - %a153 = alloca %S.C.CXType, align 16 - %a154 = alloca %S.C.CXType, align 16 - %a156 = alloca %S.C.CXCursor, align 16 - %a158 = alloca %S.C.CXType, align 16 - %a160 = alloca %S.C.CXType, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i32, align 16 - %a184 = alloca %S.cimport.CFunc, align 16 - %a185 = alloca %S.cimport.CFunc, align 16 - %a188 = alloca %S.cimport.CFunc, align 16 - %a190 = alloca %S.C.CXType, align 16 - %a192 = alloca %S.C.CXType, align 16 - %a195 = alloca %S.cimport.Mapped, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca %S.C.CXType, align 16 - %a218 = alloca i64, align 16 - %a220 = alloca i64, align 16 - %a228 = alloca %S.C.CXType, align 16 - %a230 = alloca %S.C.CXType, align 16 - %a235 = alloca %S.cimport.Mapped, align 16 - %a242 = alloca %S.ast.Type, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca %S.C.CXType, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca i32, align 16 - %a281 = alloca %S.cimport.CFunc, align 16 - %a282 = alloca %S.cimport.CFunc, align 16 - %a285 = alloca %S.cimport.CFunc, align 16 - %a289 = alloca %S.C.CXCursor, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca %S.C.CXType, align 16 - %a304 = alloca %S.C.CXCursor, align 16 - %a307 = alloca %S.cimport.Mapped, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca i32, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a332 = alloca %S.ast.Type, align 16 - %a336 = alloca %S.C.CXCursor, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca %S.C.CXCursor, align 16 - %a354 = alloca [32 x i8], align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca i32, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca %S.C.CXCursor, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca %S.C.CXCursor, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca i32, align 16 - %a425 = alloca %S.cimport.CConst, align 16 - %a429 = alloca %S.C.CXCursor, align 16 - %a433 = alloca %S.C.CXCursor, align 16 - %a440 = alloca %S.cimport.Number, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca i32, align 16 - %a471 = alloca %S.cimport.CConst, align 16 - %a472 = alloca %S.cimport.CConst, align 16 - %a475 = alloca %S.cimport.CConst, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - %t3 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t3, ptr %a4 - %t5 = call { i64, i64 } @clang_getCursorSpelling(ptr byval(%S.C.CXCursor) align 8 %a4) - store { i64, 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 byval(%S.C.CXCursor) align 8 %a11) - store i32 %t12, ptr %a13 - %t14 = load i32, ptr %a13 - %t15 = icmp eq i32 %t14, 20 - br i1 %t15, label %then9671, label %else9672 -then9671: - %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) - %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 byval(%S.C.CXType) align 8 %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 %then9674, label %endif9676 -then9674: - %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) - %t30 = load %S.C.CXCursor, ptr %a27 - store %S.C.CXCursor %t30, ptr %a31 - %t32 = call { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a31) - store { i64, 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 %panic9677, label %ok9678 -panic9677: - call void @finch_panic(ptr @.str.6561, i64 437, ptr @.str.6562) - unreachable -ok9678: - %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.from9679 -logic.from9679: - br i1 %t43, label %logic.rhs9680, label %logic.end9681 -logic.rhs9680: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic9682, label %ok9683 -panic9682: - call void @finch_panic(ptr @.str.6563, i64 437, ptr @.str.6564) - unreachable -ok9683: - %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 %panic9684, label %ok9685 -panic9684: - call void @finch_panic(ptr @.str.6565, i64 437, ptr @.str.6566) - unreachable -ok9685: - %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.missing9686, label %map.found9687 -map.missing9686: - 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.6567, i64 437, ptr %a55) - unreachable -map.found9687: - %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.rend9688 -logic.rend9688: - br label %logic.end9681 -logic.end9681: - %t65 = phi i1 [ false, %logic.from9679 ], [ %t64, %logic.rend9688 ] - store i1 %t65, ptr %a66 - %t67 = load i1, ptr %a66 - %t68 = xor i1 %t67, true - br label %logic.from9689 -logic.from9689: - br i1 %t68, label %logic.rhs9690, label %logic.end9691 -logic.rhs9690: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic9692, label %ok9693 -panic9692: - call void @finch_panic(ptr @.str.6568, i64 438, ptr @.str.6569) - unreachable -ok9693: - %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.rend9694 -logic.rend9694: - br label %logic.end9691 -logic.end9691: - %t78 = phi i1 [ false, %logic.from9689 ], [ %t77, %logic.rend9694 ] - br i1 %t78, label %then9695, label %endif9697 -then9695: - %t79 = load { ptr, i64, i64 }, ptr %a9 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9698, label %ok9699 -panic9698: - call void @finch_panic(ptr @.str.6570, i64 439, ptr @.str.6571) - unreachable -ok9699: - %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.new9700, label %map.have9701 -map.new9700: - %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.have9701 -map.have9701: - %t94 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t89, i32 0, i32 2 - store { ptr, i64, i64 } %t79, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif9697 -endif9697: - call void @finch_str_drop(ptr %a36) - br label %endif9676 -endif9676: - br label %endif9673 -else9672: - %t100 = load i32, ptr %a13 - %t101 = icmp eq i32 %t100, 8 - br i1 %t101, label %then9702, label %else9703 -then9702: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic9705, label %ok9706 -panic9705: - call void @finch_panic(ptr @.str.6572, i64 443, ptr @.str.6573) - unreachable -ok9706: - %t104 = getelementptr inbounds %S.cimport.Importer, ptr %t102, i32 0, i32 0 - %t105 = getelementptr inbounds %S.cimport.CImports, ptr %t104, i32 0, i32 0 - %t106 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = call i64 @finch_map_find(ptr %t105, ptr %a107, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t109 = icmp sge i64 %t108, 0 - br i1 %t109, label %then9707, label %endif9709 -then9707: - call void @finch_str_drop(ptr %a9) - ret void -endif9709: - %t110 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = insertvalue %S.cimport.CFunc zeroinitializer, { ptr, i64, i64 } %t113, 0 - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic9710, label %ok9711 -panic9710: - call void @finch_panic(ptr @.str.6574, i64 446, ptr @.str.6575) - unreachable -ok9711: - %t117 = getelementptr inbounds %S.cimport.Importer, ptr %t115, i32 0, i32 2 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.cimport.CFunc %t114, { ptr, i64, i64 } %t121, 1 - store %S.cimport.CFunc %t122, ptr %a123 - %t124 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t124, ptr %a125 - %t126 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a125) - %t127 = icmp eq i32 %t126, 3 - br i1 %t127, label %then9712, label %endif9714 -then9712: - %t128 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } { ptr @.str.6576, i64 62, i64 0 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.cimport.CFunc, ptr %a123 - %t132 = load ptr, ptr %a1 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic9715, label %ok9716 -panic9715: - call void @finch_panic(ptr @.str.6577, i64 449, ptr @.str.6578) - unreachable -ok9716: - %t134 = getelementptr inbounds %S.cimport.Importer, ptr %t132, i32 0, i32 0 - %t135 = getelementptr inbounds %S.cimport.CImports, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t136, ptr %a137 - store i32 0, ptr %a138 - %t139 = call i64 @finch_map_slot(ptr %t135, ptr %a137, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a138) - %t140 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t135, i32 0, i32 0 - %t141 = load ptr, ptr %t140 - %t142 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t141, i64 %t139 - %t143 = load i32, ptr %a138 - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %map.new9717, label %map.have9718 -map.new9717: - %t145 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 1 - call void @finch_str_copy(ptr %t145, ptr %a137) - %t146 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t146 - br label %map.have9718 -map.have9718: - %t147 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t142, i32 0, i32 2 - store %S.cimport.CFunc %t131, ptr %a148 - call void @finch.copy.S_cimport_CFunc(ptr %a149, ptr %a148) - %t150 = load %S.cimport.CFunc, ptr %a149 - %t151 = load %S.cimport.CFunc, ptr %t147 - store %S.cimport.CFunc %t150, ptr %t147 - store %S.cimport.CFunc %t151, ptr %a152 - call void @finch.drop.S_cimport_CFunc(ptr %a152) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - call void @finch_str_drop(ptr %a9) - ret void -endif9714: - %t155 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t155, ptr %a156 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a154, ptr byval(%S.C.CXCursor) align 8 %a156) - %t157 = load %S.C.CXType, ptr %a154 - store %S.C.CXType %t157, ptr %a158 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a153, ptr byval(%S.C.CXType) align 8 %a158) - %t159 = load %S.C.CXType, ptr %a153 - store %S.C.CXType %t159, ptr %a160 - %t161 = getelementptr inbounds %S.C.CXType, ptr %a160, i32 0, i32 0 - %t162 = load i32, ptr %t161 - %t163 = icmp eq i32 %t162, 110 - br i1 %t163, label %then9719, label %endif9721 -then9719: - %t164 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } { ptr @.str.6579, i64 42, i64 0 }, ptr %t164 - store { ptr, i64, i64 } %t165, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load %S.cimport.CFunc, ptr %a123 - %t168 = load ptr, ptr %a1 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic9722, label %ok9723 -panic9722: - call void @finch_panic(ptr @.str.6580, i64 455, ptr @.str.6581) - unreachable -ok9723: - %t170 = getelementptr inbounds %S.cimport.Importer, ptr %t168, i32 0, i32 0 - %t171 = getelementptr inbounds %S.cimport.CImports, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t172, ptr %a173 - store i32 0, ptr %a174 - %t175 = call i64 @finch_map_slot(ptr %t171, ptr %a173, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a174) - %t176 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t171, i32 0, i32 0 - %t177 = load ptr, ptr %t176 - %t178 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t177, i64 %t175 - %t179 = load i32, ptr %a174 - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %map.new9724, label %map.have9725 -map.new9724: - %t181 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 1 - call void @finch_str_copy(ptr %t181, ptr %a173) - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t182 - br label %map.have9725 -map.have9725: - %t183 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t178, i32 0, i32 2 - store %S.cimport.CFunc %t167, ptr %a184 - call void @finch.copy.S_cimport_CFunc(ptr %a185, ptr %a184) - %t186 = load %S.cimport.CFunc, ptr %a185 - %t187 = load %S.cimport.CFunc, ptr %t183 - store %S.cimport.CFunc %t186, ptr %t183 - store %S.cimport.CFunc %t187, ptr %a188 - call void @finch.drop.S_cimport_CFunc(ptr %a188) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - call void @finch_str_drop(ptr %a9) - ret void -endif9721: - %t189 = load ptr, ptr %a1 - %t191 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t191, ptr %a192 - call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a190, ptr byval(%S.C.CXType) align 8 %a192) - %t193 = load %S.C.CXType, ptr %a190 - %t194 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t189, %S.C.CXType %t193, i1 true, i1 false) - store %S.cimport.Mapped %t194, ptr %a195 - %t196 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 2 - %t197 = load i1, ptr %t196 - br i1 %t197, label %then9726, label %else9727 -then9726: - %t198 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 0 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 2 - store %S.ast.Type %t199, ptr %a201 - call void @finch.copy.S_ast_Type(ptr %a202, ptr %a201) - %t203 = load %S.ast.Type, ptr %a202 - %t204 = load %S.ast.Type, ptr %t200 - store %S.ast.Type %t203, ptr %t200 - store %S.ast.Type %t204, ptr %a205 - call void @finch.drop.S_ast_Type(ptr %a205) - br label %endif9728 -else9727: - %t206 = getelementptr inbounds %S.cimport.Mapped, ptr %a195, i32 0, i32 1 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_copy(ptr %a210, ptr %a209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - %t212 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t211, ptr %t208 - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif9728 -endif9728: - %t214 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t214, ptr %a215 - %t216 = call i32 @clang_getNumArgTypes(ptr byval(%S.C.CXType) align 8 %a215) - %t217 = sext i32 %t216 to i64 - store i64 %t217, ptr %a218 - %t219 = load i64, ptr %a218 - store i64 0, ptr %a220 - br label %for.cond9729 -for.cond9729: - %t221 = load i64, ptr %a220 - %t222 = icmp slt i64 %t221, %t219 - br i1 %t222, label %for.body9730, label %for.end9732 -for.body9730: - %t223 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp sgt i64 %t225, 0 - br i1 %t226, label %then9733, label %endif9735 -then9733: - br label %for.end9732 -endif9735: - %t227 = load ptr, ptr %a1 - %t229 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t229, ptr %a230 - %t231 = load i64, ptr %a220 - %t232 = trunc i64 %t231 to i32 - call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a228, ptr byval(%S.C.CXType) align 8 %a230, i32 %t232) - %t233 = load %S.C.CXType, ptr %a228 - %t234 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t227, %S.C.CXType %t233, i1 true, i1 true) - store %S.cimport.Mapped %t234, ptr %a235 - %t236 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 2 - %t237 = load i1, ptr %t236 - br i1 %t237, label %then9736, label %else9737 -then9736: - %t238 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 3 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i32 0, i32 1 - %t240 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 0 - %t241 = load %S.ast.Type, ptr %t240 - store %S.ast.Type %t241, ptr %a242 - call void @finch.copy.S_ast_Type(ptr %a243, ptr %a242) - %t244 = load %S.ast.Type, ptr %a243 - %t245 = load i64, ptr %t239 - %t246 = add i64 %t245, 1 - call void @finch_arr_reserve(ptr %t238, i64 %t246, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t247 = load ptr, ptr %t238 - %t248 = getelementptr inbounds %S.ast.Type, ptr %t247, i64 %t245 - store %S.ast.Type %t244, ptr %t248 - store i64 %t246, ptr %t239 - br label %endif9738 -else9737: - %t249 = getelementptr inbounds %S.cimport.Mapped, ptr %a235, i32 0, i32 1 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 5 - store { ptr, i64, i64 } %t250, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - %t255 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } %t254, ptr %t251 - store { ptr, i64, i64 } %t255, ptr %a256 - call void @finch_str_drop(ptr %a256) - br label %endif9738 -endif9738: - call void @finch.drop.S_cimport_Mapped(ptr %a235) - br label %for.step9731 -for.step9731: - %t257 = load i64, ptr %a220 - %t258 = add i64 %t257, 1 - store i64 %t258, ptr %a220 - br label %for.cond9729 -for.end9732: - %t259 = load %S.C.CXType, ptr %a160 - store %S.C.CXType %t259, ptr %a260 - %t261 = call i32 @clang_isFunctionTypeVariadic(ptr byval(%S.C.CXType) align 8 %a260) - %t262 = icmp ne i32 %t261, 0 - %t263 = getelementptr inbounds %S.cimport.CFunc, ptr %a123, i32 0, i32 4 - store i1 %t262, ptr %t263 - %t264 = load %S.cimport.CFunc, ptr %a123 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic9739, label %ok9740 -panic9739: - call void @finch_panic(ptr @.str.6582, i64 477, ptr @.str.6583) - unreachable -ok9740: - %t267 = getelementptr inbounds %S.cimport.Importer, ptr %t265, i32 0, i32 0 - %t268 = getelementptr inbounds %S.cimport.CImports, ptr %t267, i32 0, i32 0 - %t269 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t269, ptr %a270 - store i32 0, ptr %a271 - %t272 = call i64 @finch_map_slot(ptr %t268, ptr %a270, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a271) - %t273 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t268, i32 0, i32 0 - %t274 = load ptr, ptr %t273 - %t275 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t274, i64 %t272 - %t276 = load i32, ptr %a271 - %t277 = icmp ne i32 %t276, 0 - br i1 %t277, label %map.new9741, label %map.have9742 -map.new9741: - %t278 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 1 - call void @finch_str_copy(ptr %t278, ptr %a270) - %t279 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t279 - br label %map.have9742 -map.have9742: - %t280 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t275, i32 0, i32 2 - store %S.cimport.CFunc %t264, ptr %a281 - call void @finch.copy.S_cimport_CFunc(ptr %a282, ptr %a281) - %t283 = load %S.cimport.CFunc, ptr %a282 - %t284 = load %S.cimport.CFunc, ptr %t280 - store %S.cimport.CFunc %t283, ptr %t280 - store %S.cimport.CFunc %t284, ptr %a285 - call void @finch.drop.S_cimport_CFunc(ptr %a285) - call void @finch.drop.S_cimport_Mapped(ptr %a195) - call void @finch.drop.S_cimport_CFunc(ptr %a123) - br label %endif9704 -else9703: - %t286 = load i32, ptr %a13 - %t287 = icmp eq i32 %t286, 9 - br i1 %t287, label %then9743, label %else9744 -then9743: - %t288 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t288, ptr %a289 - %t290 = call i32 @clang_Cursor_getStorageClass(ptr byval(%S.C.CXCursor) align 8 %a289) - %t291 = icmp ne i32 %t290, 2 - br label %logic.from9746 -logic.from9746: - br i1 %t291, label %logic.end9748, label %logic.rhs9747 -logic.rhs9747: - %t292 = load ptr, ptr %a1 - %t293 = icmp eq ptr %t292, null - br i1 %t293, label %panic9749, label %ok9750 -panic9749: - call void @finch_panic(ptr @.str.6584, i64 479, ptr @.str.6585) - unreachable -ok9750: - %t294 = getelementptr inbounds %S.cimport.Importer, ptr %t292, i32 0, i32 0 - %t295 = getelementptr inbounds %S.cimport.CImports, ptr %t294, i32 0, i32 2 - %t296 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t296, ptr %a297 - %t298 = call i64 @finch_map_find(ptr %t295, ptr %a297, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t299 = icmp sge i64 %t298, 0 - br label %logic.rend9751 -logic.rend9751: - br label %logic.end9748 -logic.end9748: - %t300 = phi i1 [ true, %logic.from9746 ], [ %t299, %logic.rend9751 ] - br i1 %t300, label %then9752, label %endif9754 -then9752: - call void @finch_str_drop(ptr %a9) - ret void -endif9754: - %t301 = load ptr, ptr %a1 - %t303 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t303, ptr %a304 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a302, ptr byval(%S.C.CXCursor) align 8 %a304) - %t305 = load %S.C.CXType, ptr %a302 - %t306 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t301, %S.C.CXType %t305, i1 false, i1 false) - store %S.cimport.Mapped %t306, ptr %a307 - %t308 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 2 - %t309 = load i1, ptr %t308 - br i1 %t309, label %then9755, label %endif9757 -then9755: - %t310 = getelementptr inbounds %S.cimport.Mapped, ptr %a307, i32 0, i32 0 - %t311 = load %S.ast.Type, ptr %t310 - %t312 = load ptr, ptr %a1 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic9758, label %ok9759 -panic9758: - call void @finch_panic(ptr @.str.6586, i64 484, ptr @.str.6587) - unreachable -ok9759: - %t314 = getelementptr inbounds %S.cimport.Importer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds %S.cimport.CImports, ptr %t314, i32 0, i32 2 - %t316 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t316, ptr %a317 - store i32 0, ptr %a318 - %t319 = call i64 @finch_map_slot(ptr %t315, ptr %a317, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a318) - %t320 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t315, i32 0, i32 0 - %t321 = load ptr, ptr %t320 - %t322 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t321, i64 %t319 - %t323 = load i32, ptr %a318 - %t324 = icmp ne i32 %t323, 0 - br i1 %t324, label %map.new9760, label %map.have9761 -map.new9760: - %t325 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 1 - call void @finch_str_copy(ptr %t325, ptr %a317) - %t326 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 - store %S.ast.Type zeroinitializer, ptr %t326 - br label %map.have9761 -map.have9761: - %t327 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t322, i32 0, i32 2 - store %S.ast.Type %t311, ptr %a328 - call void @finch.copy.S_ast_Type(ptr %a329, ptr %a328) - %t330 = load %S.ast.Type, ptr %a329 - %t331 = load %S.ast.Type, ptr %t327 - store %S.ast.Type %t330, ptr %t327 - store %S.ast.Type %t331, ptr %a332 - call void @finch.drop.S_ast_Type(ptr %a332) - br label %endif9757 -endif9757: - call void @finch.drop.S_cimport_Mapped(ptr %a307) - br label %endif9745 -else9744: - %t333 = load i32, ptr %a13 - %t334 = icmp eq i32 %t333, 2 - br i1 %t334, label %then9762, label %else9763 -then9762: - %t335 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t335, ptr %a336 - %t337 = call i32 @clang_isCursorDefinition(ptr byval(%S.C.CXCursor) align 8 %a336) - %t338 = icmp ne i32 %t337, 0 - br label %logic.from9765 -logic.from9765: - br i1 %t338, label %logic.rhs9766, label %logic.end9767 -logic.rhs9766: - %t339 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t340 = load i64, ptr %t339 - %t341 = icmp sgt i64 %t340, 0 - br label %logic.rend9768 -logic.rend9768: - br label %logic.end9767 -logic.end9767: - %t342 = phi i1 [ false, %logic.from9765 ], [ %t341, %logic.rend9768 ] - br label %logic.from9769 -logic.from9769: - br i1 %t342, label %logic.rhs9770, label %logic.end9771 -logic.rhs9770: - %t343 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6589, i64 1, i64 0 }, ptr %a346 - %t347 = call i64 @finch_str_find(ptr %a344, ptr %a346) - %t348 = icmp sge i64 %t347, 0 - %t349 = xor i1 %t348, true - br label %logic.rend9772 -logic.rend9772: - br label %logic.end9771 -logic.end9771: - %t350 = phi i1 [ false, %logic.from9769 ], [ %t349, %logic.rend9772 ] - br i1 %t350, label %then9773, label %endif9775 -then9773: - %t351 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t351, ptr %a352 - %t353 = call { i64, i64 } @clang_getCursorUSR(ptr byval(%S.C.CXCursor) align 8 %a352) - store { i64, i64 } %t353, ptr %a354 - %t355 = load %S.C.CXString, ptr %a354 - %t356 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t355) - store { ptr, i64, i64 } %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = icmp eq ptr %t358, null - br i1 %t359, label %panic9776, label %ok9777 -panic9776: - call void @finch_panic(ptr @.str.6590, i64 489, ptr @.str.6591) - unreachable -ok9777: - %t360 = getelementptr inbounds %S.cimport.Importer, ptr %t358, i32 0, i32 3 - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a362 - %t363 = call i64 @finch_map_find(ptr %t360, ptr %a362, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t364 = icmp sge i64 %t363, 0 - %t365 = xor i1 %t364, true - br i1 %t365, label %then9778, label %endif9780 -then9778: - %t366 = load { ptr, i64, i64 }, ptr %a9 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic9781, label %ok9782 -panic9781: - call void @finch_panic(ptr @.str.6592, i64 490, ptr @.str.6593) - unreachable -ok9782: - %t369 = getelementptr inbounds %S.cimport.Importer, ptr %t367, i32 0, i32 3 - %t370 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t370, ptr %a371 - store i32 0, ptr %a372 - %t373 = call i64 @finch_map_slot(ptr %t369, ptr %a371, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a372) - %t374 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t369, i32 0, i32 0 - %t375 = load ptr, ptr %t374 - %t376 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t375, i64 %t373 - %t377 = load i32, ptr %a372 - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %map.new9783, label %map.have9784 -map.new9783: - %t379 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 1 - call void @finch_str_copy(ptr %t379, ptr %a371) - %t380 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t380 - br label %map.have9784 -map.have9784: - %t381 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t376, i32 0, i32 2 - store { ptr, i64, i64 } %t366, ptr %a382 - call void @finch_str_copy(ptr %a383, ptr %a382) - %t384 = load { ptr, i64, i64 }, ptr %a383 - %t385 = load { ptr, i64, i64 }, ptr %t381 - store { ptr, i64, i64 } %t384, ptr %t381 - store { ptr, i64, i64 } %t385, ptr %a386 - call void @finch_str_drop(ptr %a386) - br label %endif9780 -endif9780: - call void @finch_str_drop(ptr %a357) - br label %endif9775 -endif9775: - br label %endif9764 -else9763: - %t387 = load i32, ptr %a13 - %t388 = icmp eq i32 %t387, 5 - br i1 %t388, label %then9785, label %else9786 -then9785: - %t389 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t389, ptr %a390 - %t391 = load ptr, ptr %a1 - %t392 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a390, ptr @finch.c.cimport.visitTop, ptr %t391) - br label %endif9787 -else9786: - %t393 = load i32, ptr %a13 - %t394 = icmp eq i32 %t393, 7 - br i1 %t394, label %then9788, label %else9789 -then9788: - %t395 = load ptr, ptr %a1 - %t396 = icmp eq ptr %t395, null - br i1 %t396, label %panic9791, label %ok9792 -panic9791: - call void @finch_panic(ptr @.str.6594, i64 496, ptr @.str.6595) - unreachable -ok9792: - %t397 = getelementptr inbounds %S.cimport.Importer, ptr %t395, i32 0, i32 0 - %t398 = getelementptr inbounds %S.cimport.CImports, ptr %t397, i32 0, i32 1 - %t399 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t399, ptr %a400 - %t401 = call i64 @finch_map_find(ptr %t398, ptr %a400, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t402 = icmp sge i64 %t401, 0 - %t403 = xor i1 %t402, true - br i1 %t403, label %then9793, label %endif9795 -then9793: - %t404 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t404, ptr %a405 - %t406 = call i64 @clang_getEnumConstantDeclValue(ptr byval(%S.C.CXCursor) align 8 %a405) - %t407 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t406, 1 - %t408 = load ptr, ptr %a1 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic9796, label %ok9797 -panic9796: - call void @finch_panic(ptr @.str.6596, i64 497, ptr @.str.6597) - unreachable -ok9797: - %t410 = getelementptr inbounds %S.cimport.Importer, ptr %t408, i32 0, i32 0 - %t411 = getelementptr inbounds %S.cimport.CImports, ptr %t410, i32 0, i32 1 - %t412 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t412, ptr %a413 - store i32 0, ptr %a414 - %t415 = call i64 @finch_map_slot(ptr %t411, ptr %a413, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a414) - %t416 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t411, i32 0, i32 0 - %t417 = load ptr, ptr %t416 - %t418 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t417, i64 %t415 - %t419 = load i32, ptr %a414 - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %map.new9798, label %map.have9799 -map.new9798: - %t421 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 1 - call void @finch_str_copy(ptr %t421, ptr %a413) - %t422 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t422 - br label %map.have9799 -map.have9799: - %t423 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t418, i32 0, i32 2 - %t424 = load %S.cimport.CConst, ptr %t423 - store %S.cimport.CConst %t407, ptr %t423 - store %S.cimport.CConst %t424, ptr %a425 - call void @finch.drop.S_cimport_CConst(ptr %a425) - br label %endif9795 -endif9795: - br label %endif9790 -else9789: - %t426 = load i32, ptr %a13 - %t427 = icmp eq i32 %t426, 501 - br i1 %t427, label %then9800, label %endif9802 -then9800: - %t428 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t428, ptr %a429 - %t430 = call i32 @clang_Cursor_isMacroBuiltin(ptr byval(%S.C.CXCursor) align 8 %a429) - %t431 = icmp ne i32 %t430, 0 - br label %logic.from9803 -logic.from9803: - br i1 %t431, label %logic.end9805, label %logic.rhs9804 -logic.rhs9804: - %t432 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t432, ptr %a433 - %t434 = call i32 @clang_Cursor_isMacroFunctionLike(ptr byval(%S.C.CXCursor) align 8 %a433) - %t435 = icmp ne i32 %t434, 0 - br label %logic.rend9806 -logic.rend9806: - br label %logic.end9805 -logic.end9805: - %t436 = phi i1 [ true, %logic.from9803 ], [ %t435, %logic.rend9806 ] - br i1 %t436, label %then9807, label %endif9809 -then9807: - call void @finch_str_drop(ptr %a9) - ret void -endif9809: - %t437 = load ptr, ptr %a1 - %t438 = load %S.C.CXCursor, ptr %a2 - %t439 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t437, %S.C.CXCursor %t438) - store %S.cimport.Number %t439, ptr %a440 - %t441 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 1 - %t442 = load i1, ptr %t441 - br label %logic.from9810 -logic.from9810: - br i1 %t442, label %logic.rhs9811, label %logic.end9812 -logic.rhs9811: - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic9813, label %ok9814 -panic9813: - call void @finch_panic(ptr @.str.6598, i64 504, ptr @.str.6599) - unreachable -ok9814: - %t445 = getelementptr inbounds %S.cimport.Importer, ptr %t443, i32 0, i32 0 - %t446 = getelementptr inbounds %S.cimport.CImports, ptr %t445, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t447, ptr %a448 - %t449 = call i64 @finch_map_find(ptr %t446, ptr %a448, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t450 = icmp sge i64 %t449, 0 - %t451 = xor i1 %t450, true - br label %logic.rend9815 -logic.rend9815: - br label %logic.end9812 -logic.end9812: - %t452 = phi i1 [ false, %logic.from9810 ], [ %t451, %logic.rend9815 ] - br i1 %t452, label %then9816, label %endif9818 -then9816: - %t453 = getelementptr inbounds %S.cimport.Number, ptr %a440, i32 0, i32 0 - %t454 = load %S.cimport.CConst, ptr %t453 - %t455 = load ptr, ptr %a1 - %t456 = icmp eq ptr %t455, null - br i1 %t456, label %panic9819, label %ok9820 -panic9819: - call void @finch_panic(ptr @.str.6600, i64 505, ptr @.str.6601) - unreachable -ok9820: - %t457 = getelementptr inbounds %S.cimport.Importer, ptr %t455, i32 0, i32 0 - %t458 = getelementptr inbounds %S.cimport.CImports, ptr %t457, i32 0, i32 1 - %t459 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t459, ptr %a460 - store i32 0, ptr %a461 - %t462 = call i64 @finch_map_slot(ptr %t458, ptr %a460, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a461) - %t463 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t458, i32 0, i32 0 - %t464 = load ptr, ptr %t463 - %t465 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t464, i64 %t462 - %t466 = load i32, ptr %a461 - %t467 = icmp ne i32 %t466, 0 - br i1 %t467, label %map.new9821, label %map.have9822 -map.new9821: - %t468 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 1 - call void @finch_str_copy(ptr %t468, ptr %a460) - %t469 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t469 - br label %map.have9822 -map.have9822: - %t470 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t465, i32 0, i32 2 - store %S.cimport.CConst %t454, ptr %a471 - call void @finch.copy.S_cimport_CConst(ptr %a472, ptr %a471) - %t473 = load %S.cimport.CConst, ptr %a472 - %t474 = load %S.cimport.CConst, ptr %t470 - store %S.cimport.CConst %t473, ptr %t470 - store %S.cimport.CConst %t474, ptr %a475 - call void @finch.drop.S_cimport_CConst(ptr %a475) - br label %endif9818 -endif9818: - call void @finch.drop.S_cimport_Number(ptr %a440) - br label %endif9802 -endif9802: - br label %endif9790 -endif9790: - br label %endif9787 -endif9787: - br label %endif9764 -endif9764: - br label %endif9745 -endif9745: - br label %endif9704 -endif9704: - br label %endif9673 -endif9673: - call void @finch_str_drop(ptr %a9) - ret void -} - -define internal void @finch.drop.map_str_str(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9826 -n.cond9826: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9827, label %n.end9828 -n.body9827: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9829, label %entry.next9830 -entry.live9829: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 2 - call void @finch_str_drop(ptr %t13) - br label %entry.next9830 -entry.next9830: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9826 -n.end9828: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_bool(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9831 -n.cond9831: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9832, label %n.end9833 -n.body9832: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9834, label %entry.next9835 -entry.live9834: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 2 - br label %entry.next9835 -entry.next9835: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9831 -n.end9833: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_Importer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CImports(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_bool(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_ptr(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.C.CXUnsavedFile, align 16 - %a138 = alloca ptr, align 16 - %a140 = alloca i64, align 16 - %a153 = alloca i32, 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 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca i64, align 16 - %a183 = alloca i64, align 16 - %a190 = alloca ptr, align 16 - %a196 = alloca [32 x i8], align 16 - %a199 = 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 - %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 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = 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 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca %S.C.CXCursor, align 16 - %a321 = alloca %S.C.CXCursor, align 16 - %a329 = alloca %S.cimport.CImports, align 16 - %a330 = 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 %then9823, label %endif9825 -then9823: - %t10 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t11 = load %S.cimport.CImports, ptr %t10 - store %S.cimport.CImports %t11, ptr %a12 - call void @finch.copy.S_cimport_CImports(ptr %a13, ptr %a12) - %t14 = load %S.cimport.CImports, ptr %a13 - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t15 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t16 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t15, %S.cimport.CImports %t14, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t16 -endif9825: - %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.6602, i64 2, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - store { ptr, i64, i64 } { ptr @.str.6603, i64 1, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 - store { ptr, i64, i64 } { ptr @.str.6604, 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 %then9836, label %endif9838 -then9836: - %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.6605, 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 %endif9838 -endif9838: - %t39 = load i1, ptr %a4 - br i1 %t39, label %then9839, label %endif9841 -then9839: - %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.6606, i64 19, i64 0 }, ptr %t44 - store i64 %t42, ptr %t40 - br label %endif9841 -endif9841: - store i64 0, ptr %a45 - br label %each.cond9842 -each.cond9842: - %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.body9843, label %each.end9845 -each.body9843: - %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.6607, 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.step9844 -each.step9844: - %t64 = load i64, ptr %a45 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a45 - br label %each.cond9842 -each.end9845: - %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.cond9846 -each.cond9846: - %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.body9847, label %each.end9849 -each.body9847: - %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.step9848 -each.step9848: - %t87 = load i64, ptr %a69 - %t88 = add i64 %t87, 1 - store i64 %t88, ptr %a69 - br label %each.cond9846 -each.end9849: - call void @finch.drop.arr_str(ptr %a68) - store { ptr, i64, i64 } zeroinitializer, ptr %a89 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 0, ptr %a92 - br label %for.cond9850 -for.cond9850: - %t93 = load i64, ptr %a92 - %t94 = icmp slt i64 %t93, %t91 - br i1 %t94, label %for.body9851, label %for.end9853 -for.body9851: - %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 %range9854, label %inrange9855 -range9854: - call void @finch_panic_index(ptr @.str.6608, i64 532, i64 %t96, i64 %t98) - unreachable -inrange9855: - %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.6609, 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.step9852 -for.step9852: - %t110 = load i64, ptr %a92 - %t111 = add i64 %t110, 1 - store i64 %t111, ptr %a92 - br label %for.cond9850 -for.end9853: - %t112 = call ptr @clang_createIndex(i32 0, i32 0) - store ptr %t112, ptr %a113 - store i64 0, ptr %a114 - br label %each.cond9856 -each.cond9856: - %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.body9857, label %each.end9859 -each.body9857: - %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.6610, 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.6611, i64 2, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t128, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a134 - %t135 = load { ptr, i64, i64 }, ptr %a134 - %t136 = call %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } { ptr @.str.6612, i64 14, i64 0 }, { ptr, i64, i64 } %t135) - store %S.C.CXUnsavedFile %t136, ptr %a137 - store ptr null, ptr %a138 - %t139 = or i64 1, 64 - store i64 %t139, ptr %a140 - %t141 = load ptr, ptr %a113 - %t142 = extractvalue { ptr, i64, i64 } { ptr @.str.6613, i64 14, i64 0 }, 0 - %t143 = icmp eq ptr %t142, null - %t144 = select i1 %t143, ptr @.str.6614, ptr %t142 - %t145 = load { ptr, i64, i64 }, ptr %a89 - %t146 = extractvalue { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 - %t148 = load i64, ptr %t147 - %t149 = trunc i64 %t148 to i32 - %t150 = load i64, ptr %a140 - %t151 = trunc i64 %t150 to i32 - %t152 = call i32 @clang_parseTranslationUnit2(ptr %t141, ptr %t144, ptr %t146, i32 %t149, ptr %a137, i32 1, i32 %t151, ptr %a138) - store i32 %t152, ptr %a153 - %t154 = load i32, ptr %a153 - %t155 = icmp ne i32 %t154, 0 - br label %logic.from9860 -logic.from9860: - br i1 %t155, label %logic.end9862, label %logic.rhs9861 -logic.rhs9861: - %t156 = load ptr, ptr %a138 - %t157 = icmp eq ptr %t156, null - br label %logic.rend9863 -logic.rend9863: - br label %logic.end9862 -logic.end9862: - %t158 = phi i1 [ true, %logic.from9860 ], [ %t157, %logic.rend9863 ] - br i1 %t158, label %then9864, label %endif9866 -then9864: - %t159 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6615, i64 33, 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.cimport.Header, ptr %a122, i32 0, i32 0 - %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) - store { ptr, i64, i64 } %t164, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6616, i64 1, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t177 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t176, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t177 -endif9866: - %t178 = load ptr, ptr %a138 - %t179 = call i32 @clang_getNumDiagnostics(ptr %t178) - %t180 = zext i32 %t179 to i64 - store i64 %t180, ptr %a181 - %t182 = load i64, ptr %a181 - store i64 0, ptr %a183 - br label %for.cond9867 -for.cond9867: - %t184 = load i64, ptr %a183 - %t185 = icmp slt i64 %t184, %t182 - br i1 %t185, label %for.body9868, label %for.end9870 -for.body9868: - %t186 = load ptr, ptr %a138 - %t187 = load i64, ptr %a183 - %t188 = trunc i64 %t187 to i32 - %t189 = call ptr @clang_getDiagnostic(ptr %t186, i32 %t188) - store ptr %t189, ptr %a190 - %t191 = load ptr, ptr %a190 - %t192 = call i32 @clang_getDiagnosticSeverity(ptr %t191) - %t193 = icmp sge i32 %t192, 3 - br i1 %t193, label %then9871, label %endif9873 -then9871: - %t194 = load ptr, ptr %a190 - %t195 = call { i64, i64 } @clang_getDiagnosticSpelling(ptr %t194) - store { i64, i64 } %t195, ptr %a196 - %t197 = load %S.C.CXString, ptr %a196 - %t198 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t200) - %t201 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.6618, i64 14, i64 0 }, ptr %a204 - %t205 = call i64 @finch_str_find(ptr %a202, ptr %a204) - %t206 = icmp sge i64 %t205, 0 - br i1 %t206, label %then9874, label %endif9876 -then9874: - %t207 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t207, ptr %a208 - %t210 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t210, ptr %a211 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %a199, i32 0, i32 1 - %t214 = load i64, ptr %t213 - call void @finch_str_sub(ptr %a212, ptr %a211, i64 1, i64 %t214, ptr @.str.6620, i64 552) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.6622, i64 1, i64 0 }, ptr %a218 - %t219 = call i64 @finch_str_find(ptr %a216, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = add i64 %t219, 1 - call void @finch_str_sub(ptr %a209, ptr %a208, i64 1, i64 %t221, ptr @.str.6619, i64 552) - %t222 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t222, ptr %a223 - %t224 = load { ptr, i64, i64 }, ptr %a223 - %t225 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } %t224, ptr %a227 - store { ptr, i64, i64 } %t226, ptr %a228 - %t229 = call i32 @finch_str_eq(ptr %a227, ptr %a228) - %t230 = icmp ne i32 %t229, 0 - br i1 %t230, label %then9877, label %endif9879 -then9877: - %t231 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.6623, i64 34, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - %t237 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t236, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.6624, i64 1, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - call void @finch_str_drop(ptr %a223) - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t249 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t248, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t249 -endif9879: - %t250 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t251 = load { ptr, i64, i64 }, ptr %t250 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.6625, i64 34, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a252 - %t256 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.6626, i64 10, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.6627, i64 60, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - call void @finch_str_drop(ptr %a223) - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t279 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t278, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t279 -endif9876: - %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.6628, 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) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.6629, i64 16, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - %t298 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t297, ptr %a300 - store { ptr, i64, i64 } %t298, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t297, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - call void @finch_str_drop(ptr %a199) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t304 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t303, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t304 -endif9873: - %t305 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t305) - br label %for.step9869 -for.step9869: - %t306 = load i64, ptr %a183 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a183 - br label %for.cond9867 -for.end9870: - %t308 = load ptr, ptr %a138 - %t309 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 - store ptr %t308, ptr %t309 - %t310 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - %t312 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 - store { ptr, i64, i64 } %t311, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - %t316 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t315, ptr %t312 - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t319 = load ptr, ptr %a138 - call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a318, ptr %t319) - %t320 = load %S.C.CXCursor, ptr %a318 - store %S.C.CXCursor %t320, ptr %a321 - %t322 = call i32 @clang_visitChildren(ptr byval(%S.C.CXCursor) align 8 %a321, ptr @finch.c.cimport.visitTop, ptr %a6) - %t323 = load ptr, ptr %a138 - call void @clang_disposeTranslationUnit(ptr %t323) - call void @finch_str_drop(ptr %a134) - br label %each.step9858 -each.step9858: - %t324 = load i64, ptr %a114 - %t325 = add i64 %t324, 1 - store i64 %t325, ptr %a114 - br label %each.cond9856 -each.end9859: - %t326 = load ptr, ptr %a113 - call void @clang_disposeIndex(ptr %t326) - %t327 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t328 = load %S.cimport.CImports, ptr %t327 - store %S.cimport.CImports %t328, ptr %a329 - call void @finch.copy.S_cimport_CImports(ptr %a330, ptr %a329) - %t331 = load %S.cimport.CImports, ptr %a330 - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t332 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t333 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t332, %S.cimport.CImports %t331, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t333 -} - -define internal %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = extractvalue { ptr, i64, i64 } %t3, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6630, ptr %t4 - %t7 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t6, 0 - %t8 = load { ptr, i64, i64 }, ptr %a2 - %t9 = extractvalue { ptr, i64, i64 } %t8, 0 - %t10 = icmp eq ptr %t9, null - %t11 = select i1 %t10, ptr @.str.6631, ptr %t9 - %t12 = insertvalue %S.C.CXUnsavedFile %t7, ptr %t11, 1 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = insertvalue %S.C.CXUnsavedFile %t12, i64 %t14, 2 - ret %S.C.CXUnsavedFile %t15 -} - -define internal { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6634, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6635, 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.6632, i64 1, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6636, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal i64 @finch.host.run({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i64 @finch_shell(ptr %a3) - call void @finch_str_drop(ptr %a3) - ret i64 %t5 -} - -define internal { ptr, i64, i64 } @finch.host.nullDevice() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6637, i64 9, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.tempDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6638, i64 6, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6639, 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 %then9880, label %endif9882 -then9880: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6641, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_ends(ptr %a15, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - br i1 %t19, label %then9883, label %endif9885 -then9883: - %t20 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t20, ptr %a21 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - %t24 = load i64, ptr %t23 - %t25 = sub i64 %t24, 1 - call void @finch_str_sub(ptr %a22, ptr %a21, i64 0, i64 %t25, ptr @.str.6642, i64 31) - %t26 = load { ptr, i64, i64 }, ptr %a22 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t26 -endif9885: - %t27 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t27 -endif9882: - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } { ptr @.str.6643, i64 4, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.pathSeparator() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6644, i64 1, i64 0 } -} - -define internal i64 @finch.host.pid() { -entry: - - %t1 = call i32 @getpid() - %t2 = sext i32 %t1 to i64 - ret i64 %t2 -} - -define internal { ptr, i64, i64 } @finch.host.cwd() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6645, i64 3, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6646, ptr %t1 - %t4 = call ptr @getenv(ptr %t3) - store { ptr, i64, i64 } zeroinitializer, ptr %a5 - call void @finch_str_from_c(ptr %a5, ptr %t4) - %t6 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t6, ptr %a7 - call void @finch_str_copy(ptr %a8, ptr %a7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - ret { ptr, i64, i64 } %t9 -} - -define internal { ptr, i64, i64 } @finch.host.cacheDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6647, i64 14, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6648, 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 %then9886, label %endif9888 -then9886: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6649, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t18 -endif9888: - %t19 = extractvalue { ptr, i64, i64 } { ptr @.str.6650, i64 4, i64 0 }, 0 - %t20 = icmp eq ptr %t19, null - %t21 = select i1 %t20, ptr @.str.6651, 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 %then9889, label %endif9891 -then9889: - %t32 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.6652, i64 13, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - call void @finch_str_drop(ptr %a28) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t36 -endif9891: - %t37 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.6653, i64 12, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a28) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.host.binaryStdio() { -entry: - - ret void -} - -define internal void @finch.host.makeDirs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - store { ptr, i64, i64 } { ptr @.str.6654, i64 9, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t3, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_copy(ptr %a9, ptr %a10) - %t11 = call i64 @finch_shell(ptr %a9) - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret void -} - -define internal void @finch.host.remove({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i32 @finch_delete_file(ptr %a3) - call void @finch_str_drop(ptr %a3) - %t6 = icmp ne i32 %t5, 0 - ret void -} - -define internal void @finch.host.removeTree({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - store { ptr, i64, i64 } { ptr @.str.6655, i64 7, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t3, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_copy(ptr %a9, ptr %a10) - %t11 = call i64 @finch_shell(ptr %a9) - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret void -} - -define internal void @finch.host.move({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.6656, i64 3, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.6657, i64 1, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load { ptr, i64, i64 }, ptr %a2 - %t16 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t14, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t14, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a24 - call void @finch_str_copy(ptr %a23, ptr %a24) - %t25 = call i64 @finch_shell(ptr %a23) - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - ret void -} - -define internal { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_trim(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.6660, 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 } %t5, ptr %a11 - call void @finch_str_drop(ptr %a11) - store { ptr, i64, i64 } %t10, ptr %a12 - %t13 = load { ptr, i64, i64 }, ptr %a12 - %t14 = extractvalue { ptr, i64, i64 } %t13, 1 - %t15 = icmp uge i64 0, %t14 - br i1 %t15, label %range9892, label %inrange9893 -range9892: - call void @finch_panic_index(ptr @.str.6661, i64 21, i64 0, i64 %t14) - unreachable -inrange9893: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 - %t18 = load { ptr, i64, i64 }, ptr %t17 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_trim(ptr %a20, ptr %a19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.drop.arr_str(ptr %a12) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.platform.hostTriple() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t1, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6663, i64 14, i64 0 }, ptr %a4 - call void @finch_str_concat(ptr %a2, ptr %a3, ptr %a4) - store { ptr, i64, i64 } %t1, ptr %a5 - call void @finch_str_drop(ptr %a5) - %t6 = load { ptr, i64, i64 }, ptr %a2 - %t7 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a8, i64 %t7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t6, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t9, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.6664, i64 4, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t20, ptr %a21 - %t22 = load { ptr, i64, i64 }, ptr %a21 - %t23 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t22) - store { ptr, i64, i64 } { ptr @.str.6665, i64 21, i64 0 }, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6666, i64 4, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call i64 @finch.host.run({ ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - store { ptr, i64, i64 } zeroinitializer, ptr %a46 - %t47 = call i32 @finch_try_read_file(ptr %a45, ptr %a44, ptr %a46) - %t48 = icmp eq i32 %t47, 0 - %t49 = load { ptr, i64, i64 }, ptr %a46 - %t50 = load { ptr, i64, i64 }, ptr %a45 - br i1 %t48, label %or.failed9894, label %or.ok9895 -or.failed9894: - store { ptr, i64, i64 } %t49, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %or.bend9896 -or.bend9896: - br label %or.end9897 -or.ok9895: - br label %or.end9897 -or.end9897: - %t52 = phi { ptr, i64, i64 } [ { ptr @.str.6667, i64 0, i64 0 }, %or.bend9896 ], [ %t50, %or.ok9895 ] - store { ptr, i64, i64 } %t52, ptr %a53 - %t54 = load { ptr, i64, i64 }, ptr %a21 - call void @finch.host.remove({ ptr, i64, i64 } %t54) - %t55 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_trim(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = icmp eq i64 %t59, 0 - br i1 %t61, label %then9898, label %endif9900 -then9898: - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } { ptr @.str.6669, i64 24, i64 0 } -endif9900: - %t62 = load { ptr, i64, i64 }, ptr %a53 - %t63 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t62) - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } %t63 -} - -define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = 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 - %a59 = 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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca %S.platform.Target, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = 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 - %a135 = 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 - %a145 = 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 - %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 - %a169 = alloca i1, 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 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca i1, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = 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 - %a204 = alloca i1, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a255 = 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 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = call { ptr, i64, i64 } @finch.platform.hostTriple() - store { ptr, i64, i64 } %t2, ptr %a3 - %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 %then9901, label %else9902 -then9901: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t15, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - br label %endif9903 -else9902: - %t18 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6670, i64 7, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br i1 %t22, label %then9904, label %else9905 -then9904: - %t23 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6671, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - br label %endif9906 -else9905: - %t25 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6672, i64 5, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br i1 %t29, label %then9907, label %else9908 -then9907: - %t30 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6673, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %endif9909 -else9908: - %t32 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.6674, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.from9910 -logic.from9910: - br i1 %t36, label %logic.end9912, label %logic.rhs9911 -logic.rhs9911: - %t37 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.6675, i64 7, i64 0 }, ptr %a39 - %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) - %t41 = icmp ne i32 %t40, 0 - br label %logic.rend9913 -logic.rend9913: - br label %logic.end9912 -logic.end9912: - %t42 = phi i1 [ true, %logic.from9910 ], [ %t41, %logic.rend9913 ] - br label %logic.from9914 -logic.from9914: - br i1 %t42, label %logic.end9916, label %logic.rhs9915 -logic.rhs9915: - %t43 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6676, i64 11, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp ne i32 %t46, 0 - br label %logic.rend9917 -logic.rend9917: - br label %logic.end9916 -logic.end9916: - %t48 = phi i1 [ true, %logic.from9914 ], [ %t47, %logic.rend9917 ] - br i1 %t48, label %then9918, label %else9919 -then9918: - %t49 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6677, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t49, ptr %a50 - call void @finch_str_drop(ptr %a50) - br label %endif9920 -else9919: - %t51 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6678, i64 5, i64 0 }, ptr %a53 - %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) - %t55 = icmp ne i32 %t54, 0 - br i1 %t55, label %then9921, label %endif9923 -then9921: - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.6680, i64 7, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_starts(ptr %a57, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br label %logic.from9924 -logic.from9924: - br i1 %t61, label %logic.end9926, label %logic.rhs9925 -logic.rhs9925: - %t62 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6682, i64 5, i64 0 }, ptr %a65 - %t66 = call i32 @finch_str_starts(ptr %a63, ptr %a65) - %t67 = icmp ne i32 %t66, 0 - br label %logic.rend9927 -logic.rend9927: - br label %logic.end9926 -logic.end9926: - %t68 = phi i1 [ true, %logic.from9924 ], [ %t67, %logic.rend9927 ] - br i1 %t68, label %then9928, label %else9929 -then9928: - %t69 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6683, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif9930 -else9929: - %t71 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6684, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif9930 -endif9930: - br label %endif9923 -endif9923: - br label %endif9920 -endif9920: - br label %endif9909 -endif9909: - br label %endif9906 -endif9906: - br label %endif9903 -endif9903: - %t73 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6685, i64 22, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then9931, label %endif9933 -then9931: - %t78 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6686, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif9933 -endif9933: - %t80 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t80, ptr %a81 - call void @finch_str_copy(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t83, 0 - store %S.platform.Target %t84, ptr %a85 - %t86 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.6688, i64 7, i64 0 }, ptr %a89 - %t90 = call i64 @finch_str_find(ptr %a87, ptr %a89) - %t91 = icmp sge i64 %t90, 0 - br label %logic.from9934 -logic.from9934: - br i1 %t91, label %logic.end9936, label %logic.rhs9935 -logic.rhs9935: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.6690, i64 5, i64 0 }, ptr %a95 - %t96 = call i64 @finch_str_find(ptr %a93, ptr %a95) - %t97 = icmp sge i64 %t96, 0 - br label %logic.rend9937 -logic.rend9937: - br label %logic.end9936 -logic.end9936: - %t98 = phi i1 [ true, %logic.from9934 ], [ %t97, %logic.rend9937 ] - br label %logic.from9938 -logic.from9938: - br i1 %t98, label %logic.end9940, label %logic.rhs9939 -logic.rhs9939: - %t99 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6692, i64 4, i64 0 }, ptr %a102 - %t103 = call i64 @finch_str_find(ptr %a100, ptr %a102) - %t104 = icmp sge i64 %t103, 0 - br label %logic.rend9941 -logic.rend9941: - br label %logic.end9940 -logic.end9940: - %t105 = phi i1 [ true, %logic.from9938 ], [ %t104, %logic.rend9941 ] - br label %logic.from9942 -logic.from9942: - br i1 %t105, label %logic.end9944, label %logic.rhs9943 -logic.rhs9943: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.6694, i64 5, i64 0 }, ptr %a109 - %t110 = call i64 @finch_str_find(ptr %a107, ptr %a109) - %t111 = icmp sge i64 %t110, 0 - br label %logic.rend9945 -logic.rend9945: - br label %logic.end9944 -logic.end9944: - %t112 = phi i1 [ true, %logic.from9942 ], [ %t111, %logic.rend9945 ] - %t113 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - store i1 %t112, ptr %t113 - %t114 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.6696, i64 4, i64 0 }, ptr %a117 - %t118 = call i64 @finch_str_find(ptr %a115, ptr %a117) - %t119 = icmp sge i64 %t118, 0 - %t120 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 2 - store i1 %t119, ptr %t120 - %t121 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6698, i64 5, i64 0 }, ptr %a124 - %t125 = call i64 @finch_str_find(ptr %a122, ptr %a124) - %t126 = icmp sge i64 %t125, 0 - br label %logic.from9946 -logic.from9946: - br i1 %t126, label %logic.end9948, label %logic.rhs9947 -logic.rhs9947: - %t127 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6700, i64 6, i64 0 }, ptr %a130 - %t131 = call i64 @finch_str_find(ptr %a128, ptr %a130) - %t132 = icmp sge i64 %t131, 0 - br label %logic.rend9949 -logic.rend9949: - br label %logic.end9948 -logic.end9948: - %t133 = phi i1 [ true, %logic.from9946 ], [ %t132, %logic.rend9949 ] - br label %logic.from9950 -logic.from9950: - br i1 %t133, label %logic.end9952, label %logic.rhs9951 -logic.rhs9951: - %t134 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t134, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.6702, i64 5, i64 0 }, ptr %a137 - %t138 = call i64 @finch_str_find(ptr %a135, ptr %a137) - %t139 = icmp sge i64 %t138, 0 - br label %logic.rend9953 -logic.rend9953: - br label %logic.end9952 -logic.end9952: - %t140 = phi i1 [ true, %logic.from9950 ], [ %t139, %logic.rend9953 ] - %t141 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - store i1 %t140, ptr %t141 - %t142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.6704, i64 7, i64 0 }, ptr %a145 - %t146 = call i32 @finch_str_starts(ptr %a143, ptr %a145) - %t147 = icmp ne i32 %t146, 0 - br label %logic.from9954 -logic.from9954: - br i1 %t147, label %logic.end9956, label %logic.rhs9955 -logic.rhs9955: - %t148 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.6706, i64 5, i64 0 }, ptr %a151 - %t152 = call i32 @finch_str_starts(ptr %a149, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.rend9957 -logic.rend9957: - br label %logic.end9956 -logic.end9956: - %t154 = phi i1 [ true, %logic.from9954 ], [ %t153, %logic.rend9957 ] - %t155 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - store i1 %t154, ptr %t155 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.6708, i64 7, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_starts(ptr %a157, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.from9958 -logic.from9958: - br i1 %t161, label %logic.end9960, label %logic.rhs9959 -logic.rhs9959: - %t162 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t162, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.6710, i64 5, i64 0 }, ptr %a165 - %t166 = call i32 @finch_str_starts(ptr %a163, ptr %a165) - %t167 = icmp ne i32 %t166, 0 - br label %logic.rend9961 -logic.rend9961: - br label %logic.end9960 -logic.end9960: - %t168 = phi i1 [ true, %logic.from9958 ], [ %t167, %logic.rend9961 ] - store i1 %t168, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.6712, i64 5, i64 0 }, ptr %a173 - %t174 = call i64 @finch_str_find(ptr %a171, ptr %a173) - %t175 = icmp sge i64 %t174, 0 - br label %logic.from9962 -logic.from9962: - br i1 %t175, label %logic.end9964, label %logic.rhs9963 -logic.rhs9963: - %t176 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.6714, i64 6, i64 0 }, ptr %a179 - %t180 = call i64 @finch_str_find(ptr %a177, ptr %a179) - %t181 = icmp sge i64 %t180, 0 - br label %logic.rend9965 -logic.rend9965: - br label %logic.end9964 -logic.end9964: - %t182 = phi i1 [ true, %logic.from9962 ], [ %t181, %logic.rend9965 ] - store i1 %t182, ptr %a183 - %t184 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.6716, i64 7, i64 0 }, ptr %a187 - %t188 = call i64 @finch_str_find(ptr %a185, ptr %a187) - %t189 = icmp sge i64 %t188, 0 - br label %logic.from9966 -logic.from9966: - br i1 %t189, label %logic.end9968, label %logic.rhs9967 -logic.rhs9967: - %t190 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t190, ptr %a191 - store { ptr, i64, i64 } { ptr @.str.6718, i64 5, i64 0 }, ptr %a193 - %t194 = call i64 @finch_str_find(ptr %a191, ptr %a193) - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend9969 -logic.rend9969: - br label %logic.end9968 -logic.end9968: - %t196 = phi i1 [ true, %logic.from9966 ], [ %t195, %logic.rend9969 ] - br label %logic.from9970 -logic.from9970: - br i1 %t196, label %logic.end9972, label %logic.rhs9971 -logic.rhs9971: - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t197, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.6720, i64 4, i64 0 }, ptr %a200 - %t201 = call i64 @finch_str_find(ptr %a198, ptr %a200) - %t202 = icmp sge i64 %t201, 0 - br label %logic.rend9973 -logic.rend9973: - br label %logic.end9972 -logic.end9972: - %t203 = phi i1 [ true, %logic.from9970 ], [ %t202, %logic.rend9973 ] - store i1 %t203, ptr %a204 - %t205 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t206 = load i1, ptr %t205 - %t207 = load i1, ptr %a204 - %t208 = icmp ne i1 %t206, %t207 - br label %logic.from9974 -logic.from9974: - br i1 %t208, label %logic.end9976, label %logic.rhs9975 -logic.rhs9975: - %t209 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t210 = load i1, ptr %t209 - %t211 = load i1, ptr %a183 - %t212 = icmp ne i1 %t210, %t211 - br label %logic.rend9977 -logic.rend9977: - br label %logic.end9976 -logic.end9976: - %t213 = phi i1 [ true, %logic.from9974 ], [ %t212, %logic.rend9977 ] - br label %logic.from9978 -logic.from9978: - br i1 %t213, label %logic.end9980, label %logic.rhs9979 -logic.rhs9979: - %t214 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t215 = load i1, ptr %t214 - %t216 = load i1, ptr %a169 - %t217 = icmp ne i1 %t215, %t216 - br label %logic.rend9981 -logic.rend9981: - br label %logic.end9980 -logic.end9980: - %t218 = phi i1 [ true, %logic.from9978 ], [ %t217, %logic.rend9981 ] - %t219 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - store i1 %t218, ptr %t219 - %t220 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t221 = load { ptr, i64, i64 }, ptr %t220 - store { ptr, i64, i64 } { ptr @.str.6721, i64 0, i64 0 }, ptr %t220 - store { ptr, i64, i64 } %t221, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t224 = load i1, ptr %t223 - br i1 %t224, label %then9982, label %endif9984 -then9982: - %t225 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } { ptr @.str.6722, i64 4, i64 0 }, ptr %t225 - store { ptr, i64, i64 } %t226, ptr %a227 - call void @finch_str_drop(ptr %a227) - br label %endif9984 -endif9984: - %t228 = extractvalue { ptr, i64, i64 } { ptr @.str.6723, i64 8, i64 0 }, 0 - %t229 = icmp eq ptr %t228, null - %t230 = select i1 %t229, ptr @.str.6724, ptr %t228 - %t231 = call ptr @getenv(ptr %t230) - store { ptr, i64, i64 } zeroinitializer, ptr %a232 - call void @finch_str_from_c(ptr %a232, ptr %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - 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 %a237 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %a237, i32 0, i32 1 - %t239 = load i64, ptr %t238 - %t240 = icmp sgt i64 %t239, 0 - br i1 %t240, label %then9985, label %else9986 -then9985: - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_copy(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - %t246 = load { ptr, i64, i64 }, ptr %t242 - store { ptr, i64, i64 } %t245, ptr %t242 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif9987 -else9986: - %t248 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t249 = load i1, ptr %t248 - br label %logic.from9988 -logic.from9988: - br i1 %t249, label %logic.rhs9989, label %logic.end9990 -logic.rhs9989: - %t250 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.rend9991 -logic.rend9991: - br label %logic.end9990 -logic.end9990: - %t252 = phi i1 [ false, %logic.from9988 ], [ %t251, %logic.rend9991 ] - br i1 %t252, label %then9992, label %else9993 -then9992: - %t253 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t254 = load { ptr, i64, i64 }, ptr %t253 - store { ptr, i64, i64 } { ptr @.str.6725, i64 22, i64 0 }, ptr %t253 - store { ptr, i64, i64 } %t254, ptr %a255 - call void @finch_str_drop(ptr %a255) - br label %endif9994 -else9993: - %t256 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t257 = load i1, ptr %t256 - br label %logic.from9995 -logic.from9995: - br i1 %t257, label %logic.rhs9996, label %logic.end9997 -logic.rhs9996: - %t258 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t259 = load i1, ptr %t258 - br label %logic.rend9998 -logic.rend9998: - br label %logic.end9997 -logic.end9997: - %t260 = phi i1 [ false, %logic.from9995 ], [ %t259, %logic.rend9998 ] - br label %logic.from9999 -logic.from9999: - br i1 %t260, label %logic.rhs10000, label %logic.end10001 -logic.rhs10000: - %t261 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t262 = load i1, ptr %t261 - %t263 = xor i1 %t262, true - br label %logic.rend10002 -logic.rend10002: - br label %logic.end10001 -logic.end10001: - %t264 = phi i1 [ false, %logic.from9999 ], [ %t263, %logic.rend10002 ] - br i1 %t264, label %then10003, label %else10004 -then10003: - %t265 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } { ptr @.str.6726, i64 21, i64 0 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_drop(ptr %a267) - br label %endif10005 -else10004: - %t268 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t269 = load i1, ptr %t268 - br i1 %t269, label %then10006, label %else10007 -then10006: - %t270 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6727, i64 15, i64 0 }, 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 - %t275 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } %t274, ptr %t275 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - br label %endif10008 -else10007: - %t278 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6728, i64 1, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - br i1 %t282, label %then10009, label %else10010 -then10009: - %t284 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.6729, i64 5, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif10011 -else10010: - %t287 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t288 = load { ptr, i64, i64 }, ptr %t287 - store { ptr, i64, i64 } { ptr @.str.6730, i64 2, i64 0 }, ptr %t287 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - br label %endif10011 -endif10011: - br label %endif10008 -endif10008: - br label %endif10005 -endif10005: - br label %endif9994 -endif9994: - br label %endif9987 -endif9987: - %t290 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t291 = load i1, ptr %t290 - br label %logic.from10012 -logic.from10012: - br i1 %t291, label %logic.rhs10013, label %logic.end10014 -logic.rhs10013: - %t292 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t293 = load i1, ptr %t292 - br label %logic.rend10015 -logic.rend10015: - br label %logic.end10014 -logic.end10014: - %t294 = phi i1 [ false, %logic.from10012 ], [ %t293, %logic.rend10015 ] - br i1 %t294, label %then10016, label %else10017 -then10016: - %t295 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } { ptr @.str.6731, i64 5, i64 0 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif10018 -else10017: - %t298 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t299 = load i1, ptr %t298 - br label %logic.from10019 -logic.from10019: - br i1 %t299, label %logic.rhs10020, label %logic.end10021 -logic.rhs10020: - %t300 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t301 = load i1, ptr %t300 - br label %logic.rend10022 -logic.rend10022: - br label %logic.end10021 -logic.end10021: - %t302 = phi i1 [ false, %logic.from10019 ], [ %t301, %logic.rend10022 ] - br label %logic.from10023 -logic.from10023: - br i1 %t302, label %logic.rhs10024, label %logic.end10025 -logic.rhs10024: - %t303 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t304 = load i1, ptr %t303 - %t305 = xor i1 %t304, true - br label %logic.rend10026 -logic.rend10026: - br label %logic.end10025 -logic.end10025: - %t306 = phi i1 [ false, %logic.from10023 ], [ %t305, %logic.rend10026 ] - br i1 %t306, label %then10027, label %endif10029 -then10027: - %t307 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } { ptr @.str.6732, i64 13, i64 0 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10029 -endif10029: - br label %endif10018 -endif10018: - %t310 = load %S.platform.Target, ptr %a85 - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a3) - ret %S.platform.Target %t310 -} - -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.from10030 -logic.from10030: - br i1 %t4, label %logic.end10032, label %logic.rhs10031 -logic.rhs10031: - %t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3 - %t6 = load i1, ptr %t5 - br label %logic.rend10033 -logic.rend10033: - br label %logic.end10032 -logic.end10032: - %t7 = phi i1 [ true, %logic.from10030 ], [ %t6, %logic.rend10033 ] - br label %logic.from10034 -logic.from10034: - br i1 %t7, label %logic.end10036, label %logic.rhs10035 -logic.rhs10035: - %t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1 - %t9 = load i1, ptr %t8 - br label %logic.rend10037 -logic.rend10037: - br label %logic.end10036 -logic.end10036: - %t10 = phi i1 [ true, %logic.from10034 ], [ %t9, %logic.rend10037 ] - 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.cond10038 -each.cond10038: - %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.body10039, label %each.end10041 -each.body10039: - %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.step10040 -each.step10040: - %t17 = load i64, ptr %a3 - %t18 = add i64 %t17, 1 - store i64 %t18, ptr %a3 - br label %each.cond10038 -each.end10041: - store { ptr, i64, i64 } { ptr @.str.6733, i64 16, i64 0 }, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %for.cond10042 -for.cond10042: - %t22 = load i64, ptr %a21 - %t23 = icmp slt i64 %t22, 8 - br i1 %t23, label %for.body10043, label %for.end10045 -for.body10043: - %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 %range10046, label %inrange10047 -range10046: - call void @finch_panic_index(ptr @.str.6734, i64 16, i64 %t32, i64 %t34) - unreachable -inrange10047: - %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.step10044 -for.step10044: - %t45 = load i64, ptr %a21 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a21 - br label %for.cond10042 -for.end10045: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6735, i64 0, i64 0 }, ptr %a48 - call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - call void @finch.drop.arr_str(ptr %a20) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t50 -} - -define internal { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - ret { ptr, i64, i64 } %t3 -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.platform.Target %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.6737, 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 %then10048, label %endif10050 -then10048: - %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.6739, i64 28) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - store { ptr, i64, i64 } { ptr @.str.6738, i64 11, i64 0 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - ret { ptr, i64, i64 } %t22 -endif10050: - %t23 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t24 = load i1, ptr %t23 - %t25 = xor i1 %t24, true - br i1 %t25, label %then10051, label %endif10053 -then10051: - %t26 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.6740, i64 17, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a33, i64 %t32) - %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.6741, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a46 - %t47 = load { ptr, i64, i64 }, ptr %a1 - %t48 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t47) - store { ptr, i64, i64 } { ptr @.str.6742, i64 18, i64 0 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t53, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6743, i64 3, i64 0 }, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - %t59 = load { ptr, i64, i64 }, ptr %a46 - %t60 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.6744, i64 4, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a73 - %t79 = call i64 @finch.host.run({ ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load i64, ptr %a81 - %t83 = icmp eq i64 %t82, 0 - br label %logic.from10054 -logic.from10054: - br i1 %t83, label %logic.rhs10055, label %logic.end10056 -logic.rhs10055: - %t84 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t84, ptr %a85 - %t86 = call i32 @finch_file_exists(ptr %a85) - %t87 = icmp ne i32 %t86, 0 - br label %logic.rend10057 -logic.rend10057: - br label %logic.end10056 -logic.end10056: - %t88 = phi i1 [ false, %logic.from10054 ], [ %t87, %logic.rend10057 ] - br i1 %t88, label %then10058, label %endif10060 -then10058: - %t89 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - store { ptr, i64, i64 } zeroinitializer, ptr %a92 - %t93 = call i32 @finch_try_read_file(ptr %a91, ptr %a90, ptr %a92) - %t94 = icmp eq i32 %t93, 0 - %t95 = load { ptr, i64, i64 }, ptr %a92 - %t96 = load { ptr, i64, i64 }, ptr %a91 - br i1 %t94, label %or.failed10061, label %or.ok10062 -or.failed10061: - store { ptr, i64, i64 } %t95, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %or.bend10063 -or.bend10063: - br label %or.end10064 -or.ok10062: - br label %or.end10064 -or.end10064: - %t98 = phi { ptr, i64, i64 } [ { ptr @.str.6745, i64 0, i64 0 }, %or.bend10063 ], [ %t96, %or.ok10062 ] - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_trim(ptr %a100, ptr %a99) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t101, ptr %a103 - %t104 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.host.remove({ ptr, i64, i64 } %t104) - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a103, i32 0, i32 1 - %t106 = load i64, ptr %t105 - %t107 = icmp sgt i64 %t106, 0 - br i1 %t107, label %then10065, label %endif10067 -then10065: - %t108 = load { ptr, i64, i64 }, ptr %a103 - call void @finch_str_drop(ptr %a46) - ret { ptr, i64, i64 } %t108 -endif10067: - call void @finch_str_drop(ptr %a103) - br label %endif10060 -endif10060: - call void @finch_str_drop(ptr %a46) - br label %endif10053 -endif10053: - %t109 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6747, i64 2, i64 0 }, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_drop(ptr %a115) - ret { ptr, i64, i64 } %t114 -} - -define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a35 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6749, i64 1, i64 0 }, ptr %a10 - %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) - store i64 %t11, ptr %a12 - br label %while.cond10068 -while.cond10068: - %t13 = load i64, ptr %a12 - %t14 = icmp sge i64 %t13, 0 - br i1 %t14, label %while.body10069, label %while.end10070 -while.body10069: - %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.6750, i64 49) - %t22 = load { ptr, i64, i64 }, ptr %a17 - %t23 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t22, ptr %a6 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6752, i64 1, i64 0 }, ptr %a28 - %t29 = call i64 @finch_str_find(ptr %a26, ptr %a28) - store i64 %t29, ptr %a12 - br label %while.cond10068 -while.end10070: - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t31 = load i64, ptr %t30 - store i64 %t31, ptr %a32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t34 = load i64, ptr %t33 - store i64 0, ptr %a35 - br label %for.cond10071 -for.cond10071: - %t36 = load i64, ptr %a35 - %t37 = icmp slt i64 %t36, %t34 - br i1 %t37, label %for.body10072, label %for.end10074 -for.body10072: - %t38 = load i64, ptr %a35 - %t39 = load { ptr, i64, i64 }, ptr %a6 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range10075, label %inrange10076 -range10075: - call void @finch_panic_index(ptr @.str.6753, i64 54, i64 %t38, i64 %t40) - unreachable -inrange10076: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 - %t44 = load i8, ptr %t43 - %t45 = icmp eq i8 %t44, 46 - br i1 %t45, label %then10077, label %endif10079 -then10077: - %t46 = load i64, ptr %a35 - store i64 %t46, ptr %a32 - br label %endif10079 -endif10079: - br label %for.step10073 -for.step10073: - %t47 = load i64, ptr %a35 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a35 - br label %for.cond10071 -for.end10074: - %t49 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6754, i64 58) - %t53 = load { ptr, i64, i64 }, ptr %a51 - %t54 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t53, ptr %a6 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %while.cond10080 -while.cond10080: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t57 = load i64, ptr %t56 - %t58 = icmp sgt i64 %t57, 0 - br label %logic.from10083 -logic.from10083: - br i1 %t58, label %logic.rhs10084, label %logic.end10085 -logic.rhs10084: - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t60 = load i64, ptr %t59 - %t61 = sub i64 %t60, 1 - %t62 = load { ptr, i64, i64 }, ptr %a6 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 %t61, %t63 - br i1 %t64, label %range10086, label %inrange10087 -range10086: - call void @finch_panic_index(ptr @.str.6755, i64 59, i64 %t61, i64 %t63) - unreachable -inrange10087: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds i8, ptr %t65, i64 %t61 - %t67 = load i8, ptr %t66 - %t68 = icmp uge i8 %t67, 48 - br label %logic.rend10088 -logic.rend10088: - br label %logic.end10085 -logic.end10085: - %t69 = phi i1 [ false, %logic.from10083 ], [ %t68, %logic.rend10088 ] - br label %logic.from10089 -logic.from10089: - br i1 %t69, label %logic.rhs10090, label %logic.end10091 -logic.rhs10090: - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t71 = load i64, ptr %t70 - %t72 = sub i64 %t71, 1 - %t73 = load { ptr, i64, i64 }, ptr %a6 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range10092, label %inrange10093 -range10092: - call void @finch_panic_index(ptr @.str.6756, i64 59, i64 %t72, i64 %t74) - unreachable -inrange10093: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds i8, ptr %t76, i64 %t72 - %t78 = load i8, ptr %t77 - %t79 = icmp ule i8 %t78, 57 - br label %logic.rend10094 -logic.rend10094: - br label %logic.end10091 -logic.end10091: - %t80 = phi i1 [ false, %logic.from10089 ], [ %t79, %logic.rend10094 ] - br i1 %t80, label %while.body10081, label %while.end10082 -while.body10081: - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t81, ptr %a82 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - call void @finch_str_sub(ptr %a83, ptr %a82, i64 0, i64 %t86, ptr @.str.6757, i64 60) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t87, ptr %a6 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %while.cond10080 -while.end10082: - %t90 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_lower(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t93 -} - -define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.from10095 -logic.from10095: - br i1 %t4, label %logic.rhs10096, label %logic.end10097 -logic.rhs10096: - %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.cond10098 -find.cond10098: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body10099, label %find.end10102 -find.body10099: - %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.hit10100, label %find.next10101 -find.hit10100: - store i64 %t12, ptr %a8 - br label %find.end10102 -find.next10101: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond10098 -find.end10102: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - %t23 = xor i1 %t22, true - br label %logic.rend10103 -logic.rend10103: - br label %logic.end10097 -logic.end10097: - %t24 = phi i1 [ false, %logic.from10095 ], [ %t23, %logic.rend10103 ] - br i1 %t24, label %then10104, label %endif10106 -then10104: - %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 %endif10106 -endif10106: - 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then10107, label %endif10109 -then10107: - ret { ptr, i64, i64 } { ptr @.str.6760, i64 0, i64 0 } -endif10109: - %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.6761, i64 81) - %t22 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t22, ptr %a23 - store i64 0, ptr %a24 - br label %while.cond10110 -while.cond10110: - %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.from10113 -logic.from10113: - br i1 %t28, label %logic.rhs10114, label %logic.end10115 -logic.rhs10114: - %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 %range10116, label %inrange10117 -range10116: - call void @finch_panic_index(ptr @.str.6763, i64 83, i64 %t32, i64 %t34) - unreachable -inrange10117: - %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 - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = xor i1 %t43, true - br label %logic.rend10118 -logic.rend10118: - br label %logic.end10115 -logic.end10115: - %t46 = phi i1 [ false, %logic.from10113 ], [ %t45, %logic.rend10118 ] - br i1 %t46, label %while.body10111, label %while.end10112 -while.body10111: - %t47 = load i64, ptr %a24 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a24 - br label %while.cond10110 -while.end10112: - %t49 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a24 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6764, i64 86) - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t53 -} - -define internal void @finch.drop.S_linker_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal void @finch.drop.arr_S_linker_Names(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10222 -n.cond10222: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10223, label %n.end10224 -n.body10223: - %t7 = getelementptr inbounds %S.linker.Names, ptr %t1, i64 %t5 - call void @finch.drop.S_linker_Names(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10222 -n.end10224: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca i64, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a238 = alloca i64, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca i64, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.cimport.CImports %p1, ptr %a2 - store %S.platform.Target %p2, ptr %a3 - 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.6766, 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.cond10119 -each.cond10119: - %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.body10120, label %each.end10122 -each.body10120: - %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.6769, 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 %then10123, label %else10124 -then10123: - %t33 = load { ptr, i64, i64 }, ptr %a26 - %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6770, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6771, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif10125 -else10124: - %t36 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.6773, i64 18, i64 0 }, ptr %a39 - %t40 = call i64 @finch_str_find(ptr %a37, ptr %a39) - %t41 = icmp sge i64 %t40, 0 - br i1 %t41, label %then10126, label %else10127 -then10126: - %t42 = load { ptr, i64, i64 }, ptr %a26 - %t43 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t42, { ptr, i64, i64 } { ptr @.str.6774, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6775, i64 2, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - br label %endif10128 -else10127: - %t45 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6777, i64 27, i64 0 }, ptr %a48 - %t49 = call i64 @finch_str_find(ptr %a46, ptr %a48) - %t50 = icmp sge i64 %t49, 0 - br i1 %t50, label %then10129, label %else10130 -then10129: - %t51 = load { ptr, i64, i64 }, ptr %a26 - %t52 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t51, { ptr, i64, i64 } { ptr @.str.6778, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6779, i64 3, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - br label %endif10131 -else10130: - %t54 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6781, i64 14, i64 0 }, ptr %a57 - %t58 = call i64 @finch_str_find(ptr %a55, ptr %a57) - %t59 = icmp sge i64 %t58, 0 - br i1 %t59, label %then10132, label %else10133 -then10132: - %t60 = load { ptr, i64, i64 }, ptr %a26 - %t61 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t60, { ptr, i64, i64 } { ptr @.str.6782, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6783, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch_str_drop(ptr %a62) - br label %endif10134 -else10133: - %t63 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6785, i64 24, i64 0 }, ptr %a66 - %t67 = call i64 @finch_str_find(ptr %a64, ptr %a66) - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then10135, label %else10136 -then10135: - %t69 = load { ptr, i64, i64 }, ptr %a26 - %t70 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t69, { ptr, i64, i64 } { ptr @.str.6786, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6787, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif10137 -else10136: - %t72 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.6789, i64 13, i64 0 }, ptr %a75 - %t76 = call i64 @finch_str_find(ptr %a73, ptr %a75) - %t77 = icmp sge i64 %t76, 0 - br i1 %t77, label %then10138, label %else10139 -then10138: - %t78 = load { ptr, i64, i64 }, ptr %a26 - %t79 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.6790, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6791, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10140 -else10139: - %t81 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.6793, i64 11, i64 0 }, ptr %a84 - %t85 = call i64 @finch_str_find(ptr %a82, ptr %a84) - %t86 = icmp sge i64 %t85, 0 - br label %logic.from10141 -logic.from10141: - br i1 %t86, label %logic.rhs10142, label %logic.end10143 -logic.rhs10142: - %t87 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.6795, i64 9, i64 0 }, ptr %a90 - %t91 = call i64 @finch_str_find(ptr %a88, ptr %a90) - %t92 = icmp sge i64 %t91, 0 - br label %logic.rend10144 -logic.rend10144: - br label %logic.end10143 -logic.end10143: - %t93 = phi i1 [ false, %logic.from10141 ], [ %t92, %logic.rend10144 ] - br i1 %t93, label %then10145, label %else10146 -then10145: - %t94 = load { ptr, i64, i64 }, ptr %a26 - %t95 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t94, { ptr, i64, i64 } { ptr @.str.6796, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6797, i64 1, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.6798, i64 10, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t100) - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif10147 -else10146: - %t102 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.6800, i64 1, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_starts(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.from10148 -logic.from10148: - br i1 %t107, label %logic.rhs10149, label %logic.end10150 -logic.rhs10149: - %t108 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6802, i64 19, i64 0 }, ptr %a111 - %t112 = call i64 @finch_str_find(ptr %a109, ptr %a111) - %t113 = icmp sge i64 %t112, 0 - br label %logic.rend10151 -logic.rend10151: - br label %logic.end10150 -logic.end10150: - %t114 = phi i1 [ false, %logic.from10148 ], [ %t113, %logic.rend10151 ] - br i1 %t114, label %then10152, label %endif10154 -then10152: - %t115 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t115, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.6805, i64 19, i64 0 }, ptr %a121 - %t122 = call i64 @finch_str_find(ptr %a119, ptr %a121) - call void @finch_str_sub(ptr %a117, ptr %a116, i64 1, i64 %t122, ptr @.str.6803, i64 111) - %t123 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t123, ptr %a124 - %t125 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 - %t126 = load i1, ptr %t125 - br label %logic.from10155 -logic.from10155: - br i1 %t126, label %logic.rhs10156, label %logic.end10157 -logic.rhs10156: - %t127 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6807, i64 1, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_starts(ptr %a128, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend10158 -logic.rend10158: - br label %logic.end10157 -logic.end10157: - %t133 = phi i1 [ false, %logic.from10155 ], [ %t132, %logic.rend10158 ] - br i1 %t133, label %then10159, label %endif10161 -then10159: - %t134 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t134, ptr %a135 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a136, ptr %a135, i64 1, i64 %t138, ptr @.str.6808, i64 113) - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t139, ptr %a124 - store { ptr, i64, i64 } %t140, ptr %a141 - call void @finch_str_drop(ptr %a141) - br label %endif10161 -endif10161: - %t142 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t142) - call void @finch_str_drop(ptr %a124) - br label %endif10154 -endif10154: - br label %endif10147 -endif10147: - br label %endif10140 -endif10140: - br label %endif10137 -endif10137: - br label %endif10134 -endif10134: - br label %endif10131 -endif10131: - br label %endif10128 -endif10128: - br label %endif10125 -endif10125: - call void @finch_str_drop(ptr %a26) - br label %each.step10121 -each.step10121: - %t143 = load i64, ptr %a13 - %t144 = add i64 %t143, 1 - store i64 %t144, ptr %a13 - br label %each.cond10119 -each.end10122: - call void @finch.drop.arr_str(ptr %a12) - %t145 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = icmp eq i64 %t147, 0 - br label %logic.from10162 -logic.from10162: - br i1 %t148, label %logic.rhs10163, label %logic.end10164 -logic.rhs10163: - %t149 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1 - %t151 = load i64, ptr %t150 - %t152 = icmp eq i64 %t151, 0 - br label %logic.rend10165 -logic.rend10165: - br label %logic.end10164 -logic.end10164: - %t153 = phi i1 [ false, %logic.from10162 ], [ %t152, %logic.rend10165 ] - br i1 %t153, label %then10166, label %endif10168 -then10166: - %t154 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.6809, i64 21, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = trunc i64 %t159 to i32 - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = icmp eq ptr %t161, null - %t163 = select i1 %t162, ptr @.str.6810, ptr %t161 - %t164 = call i32 (ptr, ...) @printf(ptr @.str.6811, i32 %t160, ptr %t163) - store { ptr, i64, i64 } %t158, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = call i32 (ptr, ...) @printf(ptr @.str.6812) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -endif10168: - %t167 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - store i64 0, ptr %a168 - br label %each.cond10169 -each.cond10169: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10170, label %each.end10172 -each.body10170: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 %t171 - %t175 = load { ptr, i64, i64 }, ptr %t174 - store { ptr, i64, i64 } %t175, ptr %a176 - %t177 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.6813, i64 20, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t181, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.6814, i64 62, i64 0 }, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t181, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - %t187 = extractvalue { ptr, i64, i64 } %t186, 1 - %t188 = trunc i64 %t187 to i32 - %t189 = extractvalue { ptr, i64, i64 } %t186, 0 - %t190 = icmp eq ptr %t189, null - %t191 = select i1 %t190, ptr @.str.6815, ptr %t189 - %t192 = call i32 (ptr, ...) @printf(ptr @.str.6816, i32 %t188, ptr %t191) - store { ptr, i64, i64 } %t186, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call i32 (ptr, ...) @printf(ptr @.str.6817) - br label %each.step10171 -each.step10171: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10169 -each.end10172: - store { ptr, i64, i64 } zeroinitializer, ptr %a197 - store { ptr, i64, i64 } zeroinitializer, ptr %a198 - %t199 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - store i64 0, ptr %a200 - br label %each.cond10173 -each.cond10173: - %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.body10174, label %each.end10176 -each.body10174: - %t205 = load ptr, ptr %t199 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i64 %t203 - %t207 = load { ptr, i64, i64 }, ptr %t206 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.6818, i64 0, i64 0 }, ptr %a209 - %t210 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a212 - %t213 = call i64 @finch_map_find(ptr %t210, ptr %a212, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t214 = icmp sge i64 %t213, 0 - br i1 %t214, label %then10177, label %endif10179 -then10177: - %t215 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t216 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t216, ptr %a217 - %t218 = call i64 @finch_map_find(ptr %t215, ptr %a217, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t219 = icmp slt i64 %t218, 0 - br i1 %t219, label %map.missing10180, label %map.found10181 -map.missing10180: - store { ptr, i64, i64 } zeroinitializer, ptr %a220 - store { ptr, i64, i64 } %t216, ptr %a221 - call void @finch_buf_str(ptr %a220, ptr %a221, i32 1) - call void @finch_map_missing(ptr @.str.6819, i64 131, ptr %a220) - unreachable -map.found10181: - %t222 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t215, i32 0, i32 0 - %t223 = load ptr, ptr %t222 - %t224 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t223, i64 %t218 - %t225 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t224, i32 0, i32 2 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %t225, i32 0, i32 1 - %t227 = load { ptr, i64, i64 }, ptr %t226 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_copy(ptr %a229, ptr %a228) - %t230 = load { ptr, i64, i64 }, ptr %a229 - %t231 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t230, ptr %a209 - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif10179 -endif10179: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %a209 - store i64 -1, ptr %a235 - %t236 = load i64, ptr %t233 - %t237 = load ptr, ptr %a197 - store i64 0, ptr %a238 - br label %find.cond10182 -find.cond10182: - %t239 = load i64, ptr %a238 - %t240 = icmp slt i64 %t239, %t236 - br i1 %t240, label %find.body10183, label %find.end10186 -find.body10183: - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t239 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - store { ptr, i64, i64 } %t234, ptr %a244 - %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) - %t246 = icmp ne i32 %t245, 0 - br i1 %t246, label %find.hit10184, label %find.next10185 -find.hit10184: - store i64 %t239, ptr %a235 - br label %find.end10186 -find.next10185: - %t247 = add i64 %t239, 1 - store i64 %t247, ptr %a238 - br label %find.cond10182 -find.end10186: - %t248 = load i64, ptr %a235 - store i64 %t248, ptr %a249 - %t250 = load i64, ptr %a249 - %t251 = icmp slt i64 %t250, 0 - br i1 %t251, label %then10187, label %endif10189 -then10187: - %t252 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t253 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = load i64, ptr %t252 - %t258 = add i64 %t257, 1 - call void @finch_arr_reserve(ptr %a197, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t259 = load ptr, ptr %a197 - %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 - store { ptr, i64, i64 } %t256, ptr %t260 - store i64 %t258, ptr %t252 - %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 - %t262 = load i64, ptr %t261 - %t263 = add i64 %t262, 1 - call void @finch_arr_reserve(ptr %a198, i64 %t263, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) - %t264 = load ptr, ptr %a198 - %t265 = getelementptr inbounds %S.linker.Names, ptr %t264, i64 %t262 - store %S.linker.Names zeroinitializer, ptr %t265 - store i64 %t263, ptr %t261 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = sub i64 %t267, 1 - store i64 %t268, ptr %a249 - br label %endif10189 -endif10189: - %t269 = load i64, ptr %a249 - %t270 = load { ptr, i64, i64 }, ptr %a198 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 %t269, %t271 - br i1 %t272, label %range10190, label %inrange10191 -range10190: - call void @finch_panic_index(ptr @.str.6820, i64 139, i64 %t269, i64 %t271) - unreachable -inrange10191: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i64 %t269 - %t275 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.linker.Names.add(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a209) - br label %each.step10175 -each.step10175: - %t276 = load i64, ptr %a200 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a200 - br label %each.cond10173 -each.end10176: - %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t279 = load i64, ptr %t278 - store i64 0, ptr %a280 - br label %for.cond10192 -for.cond10192: - %t281 = load i64, ptr %a280 - %t282 = icmp slt i64 %t281, %t279 - br i1 %t282, label %for.body10193, label %for.end10195 -for.body10193: - %t283 = load i64, ptr %a280 - %t284 = load { ptr, i64, i64 }, ptr %a198 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range10196, label %inrange10197 -range10196: - call void @finch_panic_index(ptr @.str.6821, i64 142, i64 %t283, i64 %t285) - unreachable -inrange10197: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds %S.linker.Names, ptr %t287, i64 %t283 - %t289 = getelementptr inbounds %S.linker.Names, ptr %t288, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch.copy.arr_str(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t293, ptr %a294 - store { ptr, i64, i64 } zeroinitializer, ptr %a295 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t297 = load i64, ptr %t296 - store i64 0, ptr %a298 - br label %for.cond10198 -for.cond10198: - %t299 = load i64, ptr %a298 - %t300 = icmp slt i64 %t299, %t297 - br i1 %t300, label %for.body10199, label %for.end10201 -for.body10199: - %t301 = load i64, ptr %a298 - %t302 = icmp slt i64 %t301, 3 - br i1 %t302, label %then10202, label %endif10204 -then10202: - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - %t304 = load i64, ptr %a298 - %t305 = load { ptr, i64, i64 }, ptr %a294 - %t306 = extractvalue { ptr, i64, i64 } %t305, 1 - %t307 = icmp uge i64 %t304, %t306 - br i1 %t307, label %range10205, label %inrange10206 -range10205: - call void @finch_panic_index(ptr @.str.6822, i64 146, i64 %t304, i64 %t306) - unreachable -inrange10206: - %t308 = extractvalue { ptr, i64, i64 } %t305, 0 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t304 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_copy(ptr %a312, ptr %a311) - %t313 = load { ptr, i64, i64 }, ptr %a312 - %t314 = load i64, ptr %t303 - %t315 = add i64 %t314, 1 - call void @finch_arr_reserve(ptr %a295, i64 %t315, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t316 = load ptr, ptr %a295 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 %t314 - store { ptr, i64, i64 } %t313, ptr %t317 - store i64 %t315, ptr %t303 - br label %endif10204 -endif10204: - br label %for.step10200 -for.step10200: - %t318 = load i64, ptr %a298 - %t319 = add i64 %t318, 1 - store i64 %t319, ptr %a298 - br label %for.cond10198 -for.end10201: - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6823, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a295, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t326 = load i64, ptr %t325 - %t327 = icmp sgt i64 %t326, 3 - br i1 %t327, label %then10207, label %endif10209 -then10207: - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6824, i64 5, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t334 = load i64, ptr %t333 - %t335 = sub i64 %t334, 3 - call void @finch_str_from_int(ptr %a336, i64 %t335) - %t337 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t332, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) - store { ptr, i64, i64 } %t332, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t337, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a338 - store { ptr, i64, i64 } %t343, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.6825, i64 5, i64 0 }, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - %t349 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t348, ptr %a324 - store { ptr, i64, i64 } %t349, ptr %a350 - call void @finch_str_drop(ptr %a350) - br label %endif10209 -endif10209: - %t351 = load i64, ptr %a280 - %t352 = load { ptr, i64, i64 }, ptr %a197 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range10210, label %inrange10211 -range10210: - call void @finch_panic_index(ptr @.str.6826, i64 153, i64 %t351, i64 %t353) - unreachable -inrange10211: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds { ptr, i64, i64 }, ptr %t355, i64 %t351 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %then10212, label %endif10214 -then10212: - %t360 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6827, i64 25, i64 0 }, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a361 - %t365 = extractvalue { ptr, i64, i64 } %t364, 1 - %t366 = trunc i64 %t365 to i32 - %t367 = extractvalue { ptr, i64, i64 } %t364, 0 - %t368 = icmp eq ptr %t367, null - %t369 = select i1 %t368, ptr @.str.6828, ptr %t367 - %t370 = call i32 (ptr, ...) @printf(ptr @.str.6829, i32 %t366, ptr %t369) - store { ptr, i64, i64 } %t364, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = call i32 (ptr, ...) @printf(ptr @.str.6830) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10194 -endif10214: - store { ptr, i64, i64 } { ptr @.str.6831, i64 4, i64 0 }, ptr %a373 - %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t375 = load i64, ptr %t374 - %t376 = icmp eq i64 %t375, 1 - br i1 %t376, label %then10215, label %endif10217 -then10215: - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.6832, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a378 - call void @finch_str_drop(ptr %a378) - br label %endif10217 -endif10217: - %t379 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6833, i64 7, i64 0 }, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - %t383 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t383, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.6834, i64 1, i64 0 }, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t383, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - %t389 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t388, ptr %a391 - store { ptr, i64, i64 } %t389, ptr %a392 - call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) - store { ptr, i64, i64 } %t388, ptr %a393 - call void @finch_str_drop(ptr %a393) - %t394 = load { ptr, i64, i64 }, ptr %a390 - store { ptr, i64, i64 } %t394, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.6835, i64 7, i64 0 }, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t394, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = load i64, ptr %a280 - %t401 = load { ptr, i64, i64 }, ptr %a197 - %t402 = extractvalue { ptr, i64, i64 } %t401, 1 - %t403 = icmp uge i64 %t400, %t402 - br i1 %t403, label %range10218, label %inrange10219 -range10218: - call void @finch_panic_index(ptr @.str.6836, i64 161, i64 %t400, i64 %t402) - unreachable -inrange10219: - %t404 = extractvalue { ptr, i64, i64 } %t401, 0 - %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i64 %t400 - %t406 = load { ptr, i64, i64 }, ptr %t405 - store { ptr, i64, i64 } %t399, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t399, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t411, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.6837, i64 31, i64 0 }, ptr %a414 - call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch_str_drop(ptr %a415) - %t416 = load { ptr, i64, i64 }, ptr %a412 - %t417 = extractvalue { ptr, i64, i64 } %t416, 1 - %t418 = trunc i64 %t417 to i32 - %t419 = extractvalue { ptr, i64, i64 } %t416, 0 - %t420 = icmp eq ptr %t419, null - %t421 = select i1 %t420, ptr @.str.6838, ptr %t419 - %t422 = call i32 (ptr, ...) @printf(ptr @.str.6839, i32 %t418, ptr %t421) - store { ptr, i64, i64 } %t416, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = call i32 (ptr, ...) @printf(ptr @.str.6840) - %t425 = extractvalue { ptr, i64, i64 } { ptr @.str.6841, i64 74, i64 0 }, 1 - %t426 = trunc i64 %t425 to i32 - %t427 = extractvalue { ptr, i64, i64 } { ptr @.str.6841, i64 74, i64 0 }, 0 - %t428 = icmp eq ptr %t427, null - %t429 = select i1 %t428, ptr @.str.6842, ptr %t427 - %t430 = call i32 (ptr, ...) @printf(ptr @.str.6843, i32 %t426, ptr %t429) - %t431 = call i32 (ptr, ...) @printf(ptr @.str.6844) - %t432 = extractvalue { ptr, i64, i64 } { ptr @.str.6845, i64 66, i64 0 }, 1 - %t433 = trunc i64 %t432 to i32 - %t434 = extractvalue { ptr, i64, i64 } { ptr @.str.6845, i64 66, i64 0 }, 0 - %t435 = icmp eq ptr %t434, null - %t436 = select i1 %t435, ptr @.str.6846, ptr %t434 - %t437 = call i32 (ptr, ...) @printf(ptr @.str.6847, i32 %t433, ptr %t436) - %t438 = call i32 (ptr, ...) @printf(ptr @.str.6848) - %t439 = extractvalue { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, 1 - %t440 = trunc i64 %t439 to i32 - %t441 = extractvalue { ptr, i64, i64 } { ptr @.str.6849, i64 0, i64 0 }, 0 - %t442 = icmp eq ptr %t441, null - %t443 = select i1 %t442, ptr @.str.6850, ptr %t441 - %t444 = call i32 (ptr, ...) @printf(ptr @.str.6851, i32 %t440, ptr %t443) - %t445 = call i32 (ptr, ...) @printf(ptr @.str.6852) - %t446 = load i64, ptr %a280 - %t447 = load { ptr, i64, i64 }, ptr %a197 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range10220, label %inrange10221 -range10220: - call void @finch_panic_index(ptr @.str.6854, i64 165, i64 %t446, i64 %t448) - unreachable -inrange10221: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds { ptr, i64, i64 }, ptr %t450, i64 %t446 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t452) - store { ptr, i64, i64 } { ptr @.str.6853, i64 12, i64 0 }, ptr %a455 - store { ptr, i64, i64 } %t453, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - store { ptr, i64, i64 } %t453, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a454 - store { ptr, i64, i64 } %t458, ptr %a460 - store { ptr, i64, i64 } { ptr @.str.6855, i64 1, i64 0 }, ptr %a461 - call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) - store { ptr, i64, i64 } %t458, ptr %a462 - call void @finch_str_drop(ptr %a462) - %t463 = load { ptr, i64, i64 }, ptr %a459 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = trunc i64 %t464 to i32 - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = icmp eq ptr %t466, null - %t468 = select i1 %t467, ptr @.str.6856, ptr %t466 - %t469 = call i32 (ptr, ...) @printf(ptr @.str.6857, i32 %t465, ptr %t468) - store { ptr, i64, i64 } %t463, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = call i32 (ptr, ...) @printf(ptr @.str.6858) - %t472 = extractvalue { ptr, i64, i64 } { ptr @.str.6859, i64 0, i64 0 }, 1 - %t473 = trunc i64 %t472 to i32 - %t474 = extractvalue { ptr, i64, i64 } { ptr @.str.6859, i64 0, i64 0 }, 0 - %t475 = icmp eq ptr %t474, null - %t476 = select i1 %t475, ptr @.str.6860, ptr %t474 - %t477 = call i32 (ptr, ...) @printf(ptr @.str.6861, i32 %t473, ptr %t476) - %t478 = call i32 (ptr, ...) @printf(ptr @.str.6862) - call void @finch_str_drop(ptr %a373) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10194 -for.step10194: - %t479 = load i64, ptr %a280 - %t480 = add i64 %t479, 1 - store i64 %t480, ptr %a280 - br label %for.cond10192 -for.end10195: - call void @finch.drop.arr_S_linker_Names(ptr %a198) - call void @finch.drop.arr_str(ptr %a197) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -} - -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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca i64, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - 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.failed10225, label %try.ok10226 -try.failed10225: - %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.ok10226: - store { ptr, i64, i64 } %t11, ptr %a13 - %t14 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t14, ptr %a15 - %t16 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.6863, 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) - store { ptr, i64, i64 } %t26, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.6864, i64 3, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - %t39 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t20, ptr %a42 - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t20, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t39, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.6865, i64 2, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = call i32 @finch_file_exists(ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then10227, label %endif10229 -then10227: - %t57 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t58 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t59 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t58, { ptr, i64, i64 } %t57, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t59 -endif10229: - %t60 = load { ptr, i64, i64 }, ptr %a15 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t60) - %t61 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6866, i64 5, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t65, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.6867, i64 6, i64 0 }, ptr %a76 - %t77 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then10230, label %endif10232 -then10230: - %t79 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.6868, i64 0, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10232 -endif10232: - %t81 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.6869, i64 4, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.6870, i64 4, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - %t92 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t91, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.6871, i64 4, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load { ptr, i64, i64 }, ptr %a1 - %t104 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a106 - store { ptr, i64, i64 } %t104, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.6872, i64 4, i64 0 }, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - %t116 = load { ptr, i64, i64 }, ptr %a75 - %t117 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t115, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t115, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.6873, i64 3, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a86 - %t130 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6874, i64 5, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call i64 @finch.host.run({ ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - store i64 %t142, ptr %a144 - %t145 = load i64, ptr %a144 - %t146 = icmp ne i64 %t145, 0 - br i1 %t146, label %then10233, label %endif10235 -then10233: - %t147 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } zeroinitializer, ptr %a149 - store { ptr, i64, i64 } zeroinitializer, ptr %a150 - %t151 = call i32 @finch_try_read_file(ptr %a149, ptr %a148, ptr %a150) - %t152 = icmp eq i32 %t151, 0 - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = load { ptr, i64, i64 }, ptr %a149 - br i1 %t152, label %or.failed10236, label %or.ok10237 -or.failed10236: - store { ptr, i64, i64 } %t153, ptr %a155 - call void @finch_str_drop(ptr %a155) - br label %or.bend10238 -or.bend10238: - br label %or.end10239 -or.ok10237: - br label %or.end10239 -or.end10239: - %t156 = phi { ptr, i64, i64 } [ { ptr @.str.6875, i64 0, i64 0 }, %or.bend10238 ], [ %t154, %or.ok10237 ] - store { ptr, i64, i64 } %t156, ptr %a157 - %t158 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.host.remove({ ptr, i64, i64 } %t158) - %t159 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t159) - %t160 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6876, i64 46, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t164, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.6877, i64 30, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch_str_drop(ptr %a157) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a52) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t176 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t175, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t176 -endif10235: - %t177 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t177) - %t178 = load { ptr, i64, i64 }, ptr %a75 - %t179 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.host.move({ ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) - %t180 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t181 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t182 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t181, { ptr, i64, i64 } %t180, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t182 -} - -define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) { -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = 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 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a204 = 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 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = 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 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a270 = 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 - %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 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = 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 - %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 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca i64, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = 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 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = 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 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %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 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a513 = 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 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca i64, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca i64, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a580 = 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.6878, i64 11, i64 0 }, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6879, 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 %then10240, label %endif10242 -then10240: - %t17 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.6880, i64 5, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %endif10242 -endif10242: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_copy(ptr %a21, ptr %a20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t25 = load i1, ptr %t24 - br i1 %t25, label %then10243, label %else10244 -then10243: - %t26 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7 - %t27 = load { ptr, i64, i64 }, ptr %t26 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - %t31 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t30, ptr %a23 - store { ptr, i64, i64 } %t31, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif10245 -else10244: - %t33 = extractvalue { ptr, i64, i64 } { ptr @.str.6881, i64 8, i64 0 }, 0 - %t34 = icmp eq ptr %t33, null - %t35 = select i1 %t34, ptr @.str.6882, ptr %t33 - %t36 = call ptr @getenv(ptr %t35) - store { ptr, i64, i64 } zeroinitializer, ptr %a37 - call void @finch_str_from_c(ptr %a37, ptr %t36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = extractvalue { ptr, i64, i64 } %t38, 1 - %t40 = icmp sgt i64 %t39, 0 - br i1 %t40, label %then10246, label %endif10248 -then10246: - %t41 = extractvalue { ptr, i64, i64 } { ptr @.str.6883, i64 8, i64 0 }, 0 - %t42 = icmp eq ptr %t41, null - %t43 = select i1 %t42, ptr @.str.6884, ptr %t41 - %t44 = call ptr @getenv(ptr %t43) - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - call void @finch_str_from_c(ptr %a45, ptr %t44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a23 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif10248 -endif10248: - br label %endif10245 -endif10245: - %t52 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = load %S.platform.Target, ptr %a2 - %t55 = load { ptr, i64, i64 }, ptr %a23 - %t56 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t53, %S.platform.Target %t54, { ptr, i64, i64 } %t55) - %t57 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 0 - %t58 = xor i1 %t57, true - %t59 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 2 - %t60 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 1 - br i1 %t58, label %or.failed10249, label %or.ok10250 -or.failed10249: - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = trunc i64 %t63 to i32 - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = icmp eq ptr %t65, null - %t67 = select i1 %t66, ptr @.str.6885, ptr %t65 - %t68 = call i32 (ptr, ...) @printf(ptr @.str.6886, i32 %t64, ptr %t67) - %t69 = call i32 (ptr, ...) @printf(ptr @.str.6887) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -or.ok10250: - store { ptr, i64, i64 } %t60, ptr %a70 - %t71 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6888, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t76, ptr %a77 - %t78 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.6889, i64 2, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a77 - %t86 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = call i32 @finch_write_file(ptr %a88, ptr %a89) - %t91 = icmp ne i32 %t90, 0 - store { ptr, i64, i64 } { ptr @.str.6890, i64 0, i64 0 }, ptr %a92 - %t93 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t94 = load i1, ptr %t93 - br label %logic.from10251 -logic.from10251: - br i1 %t94, label %logic.end10253, label %logic.rhs10252 -logic.rhs10252: - %t95 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t96 = load i1, ptr %t95 - br label %logic.rend10254 -logic.rend10254: - br label %logic.end10253 -logic.end10253: - %t97 = phi i1 [ true, %logic.from10251 ], [ %t96, %logic.rend10254 ] - br i1 %t97, label %then10255, label %endif10257 -then10255: - %t98 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } { ptr @.str.6891, i64 10, i64 0 }, 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 - %t104 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t103, ptr %a92 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - br label %endif10257 -endif10257: - %t106 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6892, i64 4, i64 0 }, 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 %a112 - %t113 = load { ptr, i64, i64 }, ptr %a13 - %t114 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.6893, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3 - %t125 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t123, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t123, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t130, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.6894, i64 7, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = load { ptr, i64, i64 }, ptr %a77 - %t144 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t142, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t142, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.6895, i64 4, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a84 - %t157 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t155, ptr %a161 - call void @finch_str_drop(ptr %a161) - store { ptr, i64, i64 } %t157, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a158 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.6896, i64 3, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = load { ptr, i64, i64 }, ptr %a112 - %t170 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t169) - store { ptr, i64, i64 } %t168, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t168, ptr %a174 - call void @finch_str_drop(ptr %a174) - store { ptr, i64, i64 } %t170, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.6897, i64 5, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call i64 @finch.host.run({ ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - store i64 %t182, ptr %a184 - %t185 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.host.remove({ ptr, i64, i64 } %t185) - %t186 = load i64, ptr %a184 - %t187 = icmp ne i64 %t186, 0 - br i1 %t187, label %then10258, label %endif10260 -then10258: - %t188 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t188, ptr %a189 - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - store { ptr, i64, i64 } zeroinitializer, ptr %a191 - %t192 = call i32 @finch_try_read_file(ptr %a190, ptr %a189, ptr %a191) - %t193 = icmp eq i32 %t192, 0 - %t194 = load { ptr, i64, i64 }, ptr %a191 - %t195 = load { ptr, i64, i64 }, ptr %a190 - br i1 %t193, label %or.failed10261, label %or.ok10262 -or.failed10261: - store { ptr, i64, i64 } %t194, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %or.bend10263 -or.bend10263: - br label %or.end10264 -or.ok10262: - br label %or.end10264 -or.end10264: - %t197 = phi { ptr, i64, i64 } [ { ptr @.str.6898, i64 0, i64 0 }, %or.bend10263 ], [ %t195, %or.ok10262 ] - %t198 = extractvalue { ptr, i64, i64 } %t197, 1 - %t199 = trunc i64 %t198 to i32 - %t200 = extractvalue { ptr, i64, i64 } %t197, 0 - %t201 = icmp eq ptr %t200, null - %t202 = select i1 %t201, ptr @.str.6899, ptr %t200 - %t203 = call i32 (ptr, ...) @printf(ptr @.str.6900, i32 %t199, ptr %t202) - store { ptr, i64, i64 } %t197, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = call i32 (ptr, ...) @printf(ptr @.str.6901) - %t206 = extractvalue { ptr, i64, i64 } { ptr @.str.6902, i64 46, i64 0 }, 1 - %t207 = trunc i64 %t206 to i32 - %t208 = extractvalue { ptr, i64, i64 } { ptr @.str.6902, i64 46, i64 0 }, 0 - %t209 = icmp eq ptr %t208, null - %t210 = select i1 %t209, ptr @.str.6903, ptr %t208 - %t211 = call i32 (ptr, ...) @printf(ptr @.str.6904, i32 %t207, ptr %t210) - %t212 = call i32 (ptr, ...) @printf(ptr @.str.6905) - %t213 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t213) - %t214 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t214) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10260: - %t215 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.6906, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a216 - %t220 = load { ptr, i64, i64 }, ptr %a84 - %t221 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t220) - store { ptr, i64, i64 } %t219, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t219, ptr %a225 - call void @finch_str_drop(ptr %a225) - store { ptr, i64, i64 } %t221, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.6907, i64 1, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load { ptr, i64, i64 }, ptr %a70 - %t234 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t232, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t232, ptr %a238 - call void @finch_str_drop(ptr %a238) - store { ptr, i64, i64 } %t234, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.6908, i64 4, i64 0 }, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t247 = load { ptr, i64, i64 }, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t245, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t245, ptr %a252 - call void @finch_str_drop(ptr %a252) - store { ptr, i64, i64 } %t248, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2 - %t257 = load i1, ptr %t256 - %t258 = xor i1 %t257, true - br i1 %t258, label %then10265, label %endif10267 -then10265: - %t259 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.6909, i64 4, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - %t264 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t263, ptr %a255 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch_str_drop(ptr %a265) - br label %endif10267 -endif10267: - %t266 = extractvalue { ptr, i64, i64 } { ptr @.str.6910, i64 13, i64 0 }, 0 - %t267 = icmp eq ptr %t266, null - %t268 = select i1 %t267, ptr @.str.6911, ptr %t266 - %t269 = call ptr @getenv(ptr %t268) - store { ptr, i64, i64 } zeroinitializer, ptr %a270 - call void @finch_str_from_c(ptr %a270, ptr %t269) - %t271 = load { ptr, i64, i64 }, ptr %a270 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp sgt i64 %t272, 0 - br i1 %t273, label %then10268, label %endif10270 -then10268: - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.6912, i64 1, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - %t279 = extractvalue { ptr, i64, i64 } { ptr @.str.6913, i64 13, i64 0 }, 0 - %t280 = icmp eq ptr %t279, null - %t281 = select i1 %t280, ptr @.str.6914, ptr %t279 - %t282 = call ptr @getenv(ptr %t281) - store { ptr, i64, i64 } zeroinitializer, ptr %a283 - call void @finch_str_from_c(ptr %a283, ptr %t282) - %t284 = load { ptr, i64, i64 }, ptr %a283 - store { ptr, i64, i64 } %t278, ptr %a286 - store { ptr, i64, i64 } %t284, ptr %a287 - call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) - store { ptr, i64, i64 } %t278, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a285 - %t290 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t289, ptr %a255 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif10270 -endif10270: - %t292 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 - %t293 = load i1, ptr %t292 - br i1 %t293, label %then10271, label %endif10273 -then10271: - %t294 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 - %t295 = load i1, ptr %t294 - br i1 %t295, label %then10274, label %else10275 -then10274: - %t296 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.6915, i64 12, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t300, ptr %a255 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif10276 -else10275: - %t303 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.6916, i64 8, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t307, ptr %a255 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10276 -endif10276: - br label %endif10273 -endif10273: - store { ptr, i64, i64 } zeroinitializer, ptr %a310 - %t311 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6 - store i64 0, ptr %a312 - br label %each.cond10277 -each.cond10277: - %t313 = getelementptr inbounds { ptr, i64, i64 }, ptr %t311, i32 0, i32 1 - %t314 = load i64, ptr %t313 - %t315 = load i64, ptr %a312 - %t316 = icmp slt i64 %t315, %t314 - br i1 %t316, label %each.body10278, label %each.end10280 -each.body10278: - %t317 = load ptr, ptr %t311 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i64 %t315 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - %t321 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.6918, i64 2, i64 0 }, ptr %a324 - %t325 = call i32 @finch_str_ends(ptr %a322, ptr %a324) - %t326 = icmp ne i32 %t325, 0 - br i1 %t326, label %then10281, label %else10282 -then10281: - %t327 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t328 = load { ptr, i64, i64 }, ptr %t327 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6919, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t334 = load i64, ptr %t333 - call void @finch_str_from_int(ptr %a335, i64 %t334) - %t336 = load { ptr, i64, i64 }, ptr %a335 - store { ptr, i64, i64 } %t332, ptr %a338 - store { ptr, i64, i64 } %t336, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t332, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t336, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load { ptr, i64, i64 }, ptr %a337 - store { ptr, i64, i64 } %t342, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6920, i64 2, i64 0 }, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - store { ptr, i64, i64 } %t342, ptr %a346 - call void @finch_str_drop(ptr %a346) - %t347 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t347, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.6921, i64 6, i64 0 }, ptr %a349 - %t350 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t351 = load i1, ptr %t350 - br i1 %t351, label %then10284, label %endif10286 -then10284: - %t352 = load { ptr, i64, i64 }, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.6922, i64 0, i64 0 }, ptr %a349 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - br label %endif10286 -endif10286: - %t354 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6923, i64 4, 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 %a349 - 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) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t364, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.6924, i64 4, i64 0 }, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - %t370 = load { ptr, i64, i64 }, ptr %a320 - %t371 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t369, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t369, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.6925, i64 4, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = load { ptr, i64, i64 }, ptr %a348 - %t384 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t383) - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - store { ptr, i64, i64 } %t384, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.6926, i64 3, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a112 - %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) - store { ptr, i64, i64 } %t395, ptr %a401 - call void @finch_str_drop(ptr %a401) - store { ptr, i64, i64 } %t397, ptr %a402 - call void @finch_str_drop(ptr %a402) - %t403 = load { ptr, i64, i64 }, ptr %a398 - store { ptr, i64, i64 } %t403, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.6927, i64 5, i64 0 }, ptr %a406 - call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406) - store { ptr, i64, i64 } %t403, ptr %a407 - call void @finch_str_drop(ptr %a407) - %t408 = load { ptr, i64, i64 }, ptr %a404 - %t409 = call i64 @finch.host.run({ ptr, i64, i64 } %t408) - store { ptr, i64, i64 } %t408, ptr %a410 - call void @finch_str_drop(ptr %a410) - store i64 %t409, ptr %a411 - %t412 = load i64, ptr %a411 - %t413 = icmp ne i64 %t412, 0 - br i1 %t413, label %then10287, label %endif10289 -then10287: - %t414 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t414, ptr %a415 - store { ptr, i64, i64 } zeroinitializer, ptr %a416 - store { ptr, i64, i64 } zeroinitializer, ptr %a417 - %t418 = call i32 @finch_try_read_file(ptr %a416, ptr %a415, ptr %a417) - %t419 = icmp eq i32 %t418, 0 - %t420 = load { ptr, i64, i64 }, ptr %a417 - %t421 = load { ptr, i64, i64 }, ptr %a416 - br i1 %t419, label %or.failed10290, label %or.ok10291 -or.failed10290: - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - br label %or.bend10292 -or.bend10292: - br label %or.end10293 -or.ok10291: - br label %or.end10293 -or.end10293: - %t423 = phi { ptr, i64, i64 } [ { ptr @.str.6928, i64 0, i64 0 }, %or.bend10292 ], [ %t421, %or.ok10291 ] - store { ptr, i64, i64 } %t423, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.6929, i64 24, i64 0 }, ptr %a426 - call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) - store { ptr, i64, i64 } %t423, ptr %a427 - call void @finch_str_drop(ptr %a427) - %t428 = load { ptr, i64, i64 }, ptr %a424 - %t429 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t428, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t428, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = extractvalue { ptr, i64, i64 } %t434, 1 - %t436 = trunc i64 %t435 to i32 - %t437 = extractvalue { ptr, i64, i64 } %t434, 0 - %t438 = icmp eq ptr %t437, null - %t439 = select i1 %t438, ptr @.str.6930, ptr %t437 - %t440 = call i32 (ptr, ...) @printf(ptr @.str.6931, i32 %t436, ptr %t439) - store { ptr, i64, i64 } %t434, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = call i32 (ptr, ...) @printf(ptr @.str.6932) - %t443 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t443) - %t444 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t444) - %t445 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.host.remove({ ptr, i64, i64 } %t445) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10289: - %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t447, ptr %a448 - call void @finch_str_copy(ptr %a449, ptr %a448) - %t450 = load { ptr, i64, i64 }, ptr %a449 - %t451 = load i64, ptr %t446 - %t452 = add i64 %t451, 1 - call void @finch_arr_reserve(ptr %a310, i64 %t452, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t453 = load ptr, ptr %a310 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t451 - store { ptr, i64, i64 } %t450, ptr %t454 - store i64 %t452, ptr %t446 - %t455 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.6933, i64 1, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - %t459 = load { ptr, i64, i64 }, ptr %a456 - %t460 = load { ptr, i64, i64 }, ptr %a348 - %t461 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t460) - store { ptr, i64, i64 } %t459, ptr %a463 - store { ptr, i64, i64 } %t461, ptr %a464 - call void @finch_str_concat(ptr %a462, ptr %a463, ptr %a464) - store { ptr, i64, i64 } %t459, ptr %a465 - call void @finch_str_drop(ptr %a465) - store { ptr, i64, i64 } %t461, ptr %a466 - call void @finch_str_drop(ptr %a466) - %t467 = load { ptr, i64, i64 }, ptr %a462 - %t468 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t467, ptr %a255 - store { ptr, i64, i64 } %t468, ptr %a469 - call void @finch_str_drop(ptr %a469) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - br label %endif10283 -else10282: - %t470 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.6935, i64 2, i64 0 }, ptr %a473 - %t474 = call i32 @finch_str_ends(ptr %a471, ptr %a473) - %t475 = icmp ne i32 %t474, 0 - br label %logic.from10294 -logic.from10294: - br i1 %t475, label %logic.end10296, label %logic.rhs10295 -logic.rhs10295: - %t476 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t476, ptr %a477 - store { ptr, i64, i64 } { ptr @.str.6937, i64 2, i64 0 }, ptr %a479 - %t480 = call i32 @finch_str_ends(ptr %a477, ptr %a479) - %t481 = icmp ne i32 %t480, 0 - br label %logic.rend10297 -logic.rend10297: - br label %logic.end10296 -logic.end10296: - %t482 = phi i1 [ true, %logic.from10294 ], [ %t481, %logic.rend10297 ] - br i1 %t482, label %then10298, label %else10299 -then10298: - %t483 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.6938, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - %t487 = load { ptr, i64, i64 }, ptr %a484 - %t488 = load { ptr, i64, i64 }, ptr %a320 - %t489 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t487, ptr %a491 - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_concat(ptr %a490, ptr %a491, ptr %a492) - store { ptr, i64, i64 } %t487, ptr %a493 - call void @finch_str_drop(ptr %a493) - store { ptr, i64, i64 } %t489, ptr %a494 - call void @finch_str_drop(ptr %a494) - %t495 = load { ptr, i64, i64 }, ptr %a490 - %t496 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t495, ptr %a255 - store { ptr, i64, i64 } %t496, ptr %a497 - call void @finch_str_drop(ptr %a497) - br label %endif10300 -else10299: - %t498 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t498, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.6939, i64 1, i64 0 }, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - %t502 = load { ptr, i64, i64 }, ptr %a499 - %t503 = load { ptr, i64, i64 }, ptr %a320 - %t504 = load %S.platform.Target, ptr %a2 - %t505 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t503, %S.platform.Target %t504) - store { ptr, i64, i64 } %t502, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t502, ptr %a509 - call void @finch_str_drop(ptr %a509) - store { ptr, i64, i64 } %t505, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a506 - %t512 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t511, ptr %a255 - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - br label %endif10300 -endif10300: - br label %endif10283 -endif10283: - br label %each.step10279 -each.step10279: - %t514 = load i64, ptr %a312 - %t515 = add i64 %t514, 1 - store i64 %t515, ptr %a312 - br label %each.cond10277 -each.end10280: - %t516 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t516, ptr %a518 - store { ptr, i64, i64 } { ptr @.str.6940, i64 3, 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, i64, i64 }, ptr %a112 - %t522 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t520, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.6941, i64 5, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - %t534 = call i64 @finch.host.run({ ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a535 - call void @finch_str_drop(ptr %a535) - store i64 %t534, ptr %a536 - %t537 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t537, ptr %a538 - store { ptr, i64, i64 } zeroinitializer, ptr %a539 - store { ptr, i64, i64 } zeroinitializer, ptr %a540 - %t541 = call i32 @finch_try_read_file(ptr %a539, ptr %a538, ptr %a540) - %t542 = icmp eq i32 %t541, 0 - %t543 = load { ptr, i64, i64 }, ptr %a540 - %t544 = load { ptr, i64, i64 }, ptr %a539 - br i1 %t542, label %or.failed10301, label %or.ok10302 -or.failed10301: - store { ptr, i64, i64 } %t543, ptr %a545 - call void @finch_str_drop(ptr %a545) - br label %or.bend10303 -or.bend10303: - br label %or.end10304 -or.ok10302: - br label %or.end10304 -or.end10304: - %t546 = phi { ptr, i64, i64 } [ { ptr @.str.6942, i64 0, i64 0 }, %or.bend10303 ], [ %t544, %or.ok10302 ] - store { ptr, i64, i64 } %t546, ptr %a547 - %t548 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t548) - %t549 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t549) - store i64 0, ptr %a550 - br label %each.cond10305 -each.cond10305: - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t552 = load i64, ptr %t551 - %t553 = load i64, ptr %a550 - %t554 = icmp slt i64 %t553, %t552 - br i1 %t554, label %each.body10306, label %each.end10308 -each.body10306: - %t555 = load ptr, ptr %a310 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t555, i64 %t553 - %t557 = load { ptr, i64, i64 }, ptr %t556 - store { ptr, i64, i64 } %t557, ptr %a558 - %t559 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.host.remove({ ptr, i64, i64 } %t559) - br label %each.step10307 -each.step10307: - %t560 = load i64, ptr %a550 - %t561 = add i64 %t560, 1 - store i64 %t561, ptr %a550 - br label %each.cond10305 -each.end10308: - %t562 = load i64, ptr %a536 - %t563 = icmp eq i64 %t562, 127 - br i1 %t563, label %then10309, label %endif10311 -then10309: - %t564 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.6943, i64 42, i64 0 }, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t568, ptr %a570 - store { ptr, i64, i64 } { ptr @.str.6944, i64 32, i64 0 }, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t568, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - %t574 = extractvalue { ptr, i64, i64 } %t573, 1 - %t575 = trunc i64 %t574 to i32 - %t576 = extractvalue { ptr, i64, i64 } %t573, 0 - %t577 = icmp eq ptr %t576, null - %t578 = select i1 %t577, ptr @.str.6945, ptr %t576 - %t579 = call i32 (ptr, ...) @printf(ptr @.str.6946, i32 %t575, ptr %t578) - store { ptr, i64, i64 } %t573, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = call i32 (ptr, ...) @printf(ptr @.str.6947) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10311: - %t582 = load i64, ptr %a536 - %t583 = icmp ne i64 %t582, 0 - br i1 %t583, label %then10312, label %endif10314 -then10312: - %t584 = load { ptr, i64, i64 }, ptr %a547 - %t585 = load %S.cimport.CImports, ptr %a3 - %t586 = load %S.platform.Target, ptr %a2 - %t587 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t584, %S.cimport.CImports %t585, %S.platform.Target %t586) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 %t587 -endif10314: - %t588 = getelementptr inbounds { ptr, i64, i64 }, ptr %a547, i32 0, i32 1 - %t589 = load i64, ptr %t588 - %t590 = icmp sgt i64 %t589, 0 - br i1 %t590, label %then10315, label %endif10317 -then10315: - %t591 = load { ptr, i64, i64 }, ptr %a547 - %t592 = extractvalue { ptr, i64, i64 } %t591, 1 - %t593 = trunc i64 %t592 to i32 - %t594 = extractvalue { ptr, i64, i64 } %t591, 0 - %t595 = icmp eq ptr %t594, null - %t596 = select i1 %t595, ptr @.str.6948, ptr %t594 - %t597 = call i32 (ptr, ...) @printf(ptr @.str.6949, i32 %t593, ptr %t596) - %t598 = call i32 (ptr, ...) @printf(ptr @.str.6950) - br label %endif10317 -endif10317: - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 0 -} - -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.from10318 -logic.from10318: - br i1 %t3, label %logic.rhs10319, label %logic.end10320 -logic.rhs10319: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend10321 -logic.rend10321: - br label %logic.end10320 -logic.end10320: - %t6 = phi i1 [ false, %logic.from10318 ], [ %t5, %logic.rend10321 ] - br i1 %t6, label %then10322, label %endif10324 -then10322: - %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 -endif10324: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from10325 -logic.from10325: - br i1 %t12, label %logic.rhs10326, label %logic.end10327 -logic.rhs10326: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend10328 -logic.rend10328: - br label %logic.end10327 -logic.end10327: - %t15 = phi i1 [ false, %logic.from10325 ], [ %t14, %logic.rend10328 ] - br i1 %t15, label %then10329, label %endif10331 -then10329: - %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 -endif10331: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from10332 -logic.from10332: - br i1 %t22, label %logic.rhs10333, label %logic.end10334 -logic.rhs10333: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend10335 -logic.rend10335: - br label %logic.end10334 -logic.end10334: - %t25 = phi i1 [ false, %logic.from10332 ], [ %t24, %logic.rend10335 ] - br i1 %t25, label %then10336, label %endif10338 -then10336: - %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 -endif10338: - ret i64 -1 -} - -define internal void @finch.drop.arr_u8(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6952, 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 %then10339, label %endif10341 -then10339: - %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.6953, i64 114) - %t18 = load { ptr, i64, i64 }, ptr %a15 - %t19 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %endif10341 -endif10341: - store { ptr, i64, i64 } zeroinitializer, ptr %a21 - store i64 0, ptr %a22 - br label %while.cond10342 -while.cond10342: - %t23 = load i64, ptr %a22 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = icmp slt i64 %t23, %t25 - br i1 %t26, label %while.body10343, label %while.end10344 -while.body10343: - %t27 = load i64, ptr %a22 - %t28 = load { ptr, i64, i64 }, ptr %a6 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 %t27, %t29 - br i1 %t30, label %range10345, label %inrange10346 -range10345: - call void @finch_panic_index(ptr @.str.6954, i64 119, i64 %t27, i64 %t29) - unreachable -inrange10346: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds i8, ptr %t31, i64 %t27 - %t33 = load i8, ptr %t32 - %t34 = icmp eq i8 %t33, 37 - br label %logic.from10347 -logic.from10347: - br i1 %t34, label %logic.rhs10348, label %logic.end10349 -logic.rhs10348: - %t35 = load i64, ptr %a22 - %t36 = add i64 %t35, 2 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 0 - %t40 = icmp slt i64 %t36, %t39 - br label %logic.rend10350 -logic.rend10350: - br label %logic.end10349 -logic.end10349: - %t41 = phi i1 [ false, %logic.from10347 ], [ %t40, %logic.rend10350 ] - br label %logic.from10351 -logic.from10351: - br i1 %t41, label %logic.rhs10352, label %logic.end10353 -logic.rhs10352: - %t42 = load i64, ptr %a22 - %t43 = add i64 %t42, 1 - %t44 = load { ptr, i64, i64 }, ptr %a6 - %t45 = extractvalue { ptr, i64, i64 } %t44, 1 - %t46 = icmp uge i64 %t43, %t45 - br i1 %t46, label %range10354, label %inrange10355 -range10354: - call void @finch_panic_index(ptr @.str.6955, i64 119, i64 %t43, i64 %t45) - unreachable -inrange10355: - %t47 = extractvalue { ptr, i64, i64 } %t44, 0 - %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 - %t49 = load i8, ptr %t48 - %t50 = call i64 @finch.lsp.hexval(i8 %t49) - %t51 = icmp sge i64 %t50, 0 - br label %logic.rend10356 -logic.rend10356: - br label %logic.end10353 -logic.end10353: - %t52 = phi i1 [ false, %logic.from10351 ], [ %t51, %logic.rend10356 ] - br label %logic.from10357 -logic.from10357: - br i1 %t52, label %logic.rhs10358, label %logic.end10359 -logic.rhs10358: - %t53 = load i64, ptr %a22 - %t54 = add i64 %t53, 2 - %t55 = load { ptr, i64, i64 }, ptr %a6 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range10360, label %inrange10361 -range10360: - call void @finch_panic_index(ptr @.str.6956, i64 119, i64 %t54, i64 %t56) - unreachable -inrange10361: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 - %t60 = load i8, ptr %t59 - %t61 = call i64 @finch.lsp.hexval(i8 %t60) - %t62 = icmp sge i64 %t61, 0 - br label %logic.rend10362 -logic.rend10362: - br label %logic.end10359 -logic.end10359: - %t63 = phi i1 [ false, %logic.from10357 ], [ %t62, %logic.rend10362 ] - br i1 %t63, label %then10363, label %else10364 -then10363: - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t65 = load i64, ptr %a22 - %t66 = add i64 %t65, 1 - %t67 = load { ptr, i64, i64 }, ptr %a6 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range10366, label %inrange10367 -range10366: - call void @finch_panic_index(ptr @.str.6957, i64 120, i64 %t66, i64 %t68) - unreachable -inrange10367: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds i8, ptr %t70, i64 %t66 - %t72 = load i8, ptr %t71 - %t73 = call i64 @finch.lsp.hexval(i8 %t72) - %t74 = mul i64 %t73, 16 - %t75 = load i64, ptr %a22 - %t76 = add i64 %t75, 2 - %t77 = load { ptr, i64, i64 }, ptr %a6 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range10368, label %inrange10369 -range10368: - call void @finch_panic_index(ptr @.str.6958, i64 120, i64 %t76, i64 %t78) - unreachable -inrange10369: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds i8, ptr %t80, i64 %t76 - %t82 = load i8, ptr %t81 - %t83 = call i64 @finch.lsp.hexval(i8 %t82) - %t84 = add i64 %t74, %t83 - %t85 = trunc i64 %t84 to i8 - %t86 = load i64, ptr %t64 - %t87 = add i64 %t86, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t87, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t88 = load ptr, ptr %a21 - %t89 = getelementptr inbounds i8, ptr %t88, i64 %t86 - store i8 %t85, ptr %t89 - store i64 %t87, ptr %t64 - %t90 = load i64, ptr %a22 - %t91 = add i64 %t90, 3 - store i64 %t91, ptr %a22 - br label %endif10365 -else10364: - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t93 = load i64, ptr %a22 - %t94 = load { ptr, i64, i64 }, ptr %a6 - %t95 = extractvalue { ptr, i64, i64 } %t94, 1 - %t96 = icmp uge i64 %t93, %t95 - br i1 %t96, label %range10370, label %inrange10371 -range10370: - call void @finch_panic_index(ptr @.str.6959, i64 123, i64 %t93, i64 %t95) - unreachable -inrange10371: - %t97 = extractvalue { ptr, i64, i64 } %t94, 0 - %t98 = getelementptr inbounds i8, ptr %t97, i64 %t93 - %t99 = load i8, ptr %t98 - %t100 = load i64, ptr %t92 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t101, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %a21 - %t103 = getelementptr inbounds i8, ptr %t102, i64 %t100 - store i8 %t99, ptr %t103 - store i64 %t101, ptr %t92 - %t104 = load i64, ptr %a22 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a22 - br label %endif10365 -endif10365: - br label %while.cond10342 -while.end10344: - %t106 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } zeroinitializer, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_from_bytes(ptr %a107, ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.drop.arr_u8(ptr %a21) - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t109 -} - -define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { -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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6960, 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.6961, 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.cond10372 -each.cond10372: - %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.body10373, label %each.end10375 -each.body10373: - %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.from10376 -logic.from10376: - br i1 %t23, label %logic.rhs10377, label %logic.end10378 -logic.rhs10377: - %t24 = load i8, ptr %a18 - %t25 = icmp ule i8 %t24, 122 - br label %logic.rend10379 -logic.rend10379: - br label %logic.end10378 -logic.end10378: - %t26 = phi i1 [ false, %logic.from10376 ], [ %t25, %logic.rend10379 ] - br label %logic.from10380 -logic.from10380: - br i1 %t26, label %logic.end10382, label %logic.rhs10381 -logic.rhs10381: - %t27 = load i8, ptr %a18 - %t28 = icmp uge i8 %t27, 65 - br label %logic.from10383 -logic.from10383: - br i1 %t28, label %logic.rhs10384, label %logic.end10385 -logic.rhs10384: - %t29 = load i8, ptr %a18 - %t30 = icmp ule i8 %t29, 90 - br label %logic.rend10386 -logic.rend10386: - br label %logic.end10385 -logic.end10385: - %t31 = phi i1 [ false, %logic.from10383 ], [ %t30, %logic.rend10386 ] - br label %logic.rend10387 -logic.rend10387: - br label %logic.end10382 -logic.end10382: - %t32 = phi i1 [ true, %logic.from10380 ], [ %t31, %logic.rend10387 ] - br label %logic.from10388 -logic.from10388: - br i1 %t32, label %logic.end10390, label %logic.rhs10389 -logic.rhs10389: - %t33 = load i8, ptr %a18 - %t34 = icmp uge i8 %t33, 48 - br label %logic.from10391 -logic.from10391: - br i1 %t34, label %logic.rhs10392, label %logic.end10393 -logic.rhs10392: - %t35 = load i8, ptr %a18 - %t36 = icmp ule i8 %t35, 57 - br label %logic.rend10394 -logic.rend10394: - br label %logic.end10393 -logic.end10393: - %t37 = phi i1 [ false, %logic.from10391 ], [ %t36, %logic.rend10394 ] - br label %logic.rend10395 -logic.rend10395: - br label %logic.end10390 -logic.end10390: - %t38 = phi i1 [ true, %logic.from10388 ], [ %t37, %logic.rend10395 ] - br label %logic.from10396 -logic.from10396: - br i1 %t38, label %logic.end10398, label %logic.rhs10397 -logic.rhs10397: - store { ptr, i64, i64 } { ptr @.str.6962, 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 - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend10399 -logic.rend10399: - br label %logic.end10398 -logic.end10398: - %t48 = phi i1 [ true, %logic.from10396 ], [ %t46, %logic.rend10399 ] - br i1 %t48, label %then10400, label %else10401 -then10400: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t50 = load i8, ptr %a18 - call void @finch_str_from_char(ptr %a51, i8 signext %t50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - %t53 = load i64, ptr %t49 - %t54 = add i64 %t53, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t55 = load ptr, ptr %a9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53 - store { ptr, i64, i64 } %t52, ptr %t56 - store i64 %t54, ptr %t49 - br label %endif10402 -else10401: - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t58 = load i64, ptr %a21 - %t59 = sdiv i64 %t58, 16 - %t60 = srem i64 %t59, 16 - %t61 = load { ptr, i64, i64 }, ptr %a2 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 %t60, %t62 - br i1 %t63, label %range10403, label %inrange10404 -range10403: - call void @finch_panic_index(ptr @.str.6965, i64 138, i64 %t60, i64 %t62) - unreachable -inrange10404: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 - %t66 = load i8, ptr %t65 - call void @finch_str_from_char(ptr %a67, i8 signext %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.6964, i64 1, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load i64, ptr %a21 - %t75 = srem i64 %t74, 16 - %t76 = load { ptr, i64, i64 }, ptr %a2 - %t77 = extractvalue { ptr, i64, i64 } %t76, 1 - %t78 = icmp uge i64 %t75, %t77 - br i1 %t78, label %range10405, label %inrange10406 -range10405: - call void @finch_panic_index(ptr @.str.6966, i64 138, i64 %t75, i64 %t77) - unreachable -inrange10406: - %t79 = extractvalue { ptr, i64, i64 } %t76, 0 - %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 - %t81 = load i8, ptr %t80 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t73, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t73, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - %t90 = load i64, ptr %t57 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t91, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %a9 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t90 - store { ptr, i64, i64 } %t89, ptr %t93 - store i64 %t91, ptr %t57 - br label %endif10402 -endif10402: - br label %each.step10374 -each.step10374: - %t94 = load i64, ptr %a10 - %t95 = add i64 %t94, 1 - store i64 %t95, ptr %a10 - br label %each.cond10372 -each.end10375: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6967, i64 0, i64 0 }, ptr %a97 - call void @finch_str_join(ptr %a98, ptr %a9, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.drop.arr_str(ptr %a9) - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t99 -} - -define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { -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.cond10407 -while.cond10407: - %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.body10408, label %while.end10409 -while.body10408: - %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 %range10410, label %inrange10411 -range10410: - call void @finch_panic_index(ptr @.str.6968, i64 149, i64 %t8, i64 %t10) - unreachable -inrange10411: - %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.from10412 -logic.from10412: - br i1 %t15, label %logic.rhs10413, label %logic.end10414 -logic.rhs10413: - %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.rend10415 -logic.rend10415: - br label %logic.end10414 -logic.end10414: - %t21 = phi i1 [ false, %logic.from10412 ], [ %t20, %logic.rend10415 ] - br i1 %t21, label %then10416, label %else10417 -then10416: - %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 %range10419, label %inrange10420 -range10419: - call void @finch_panic_index(ptr @.str.6969, i64 150, i64 %t23, i64 %t25) - unreachable -inrange10420: - %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 %then10421, label %else10422 -then10421: - %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.6970, i64 1, i64 0 }, ptr %t35 - store i64 %t33, ptr %t31 - br label %endif10423 -else10422: - %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 %range10424, label %inrange10425 -range10424: - call void @finch_panic_index(ptr @.str.6971, i64 153, i64 %t38, i64 %t40) - unreachable -inrange10425: - %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 %endif10423 -endif10423: - %t51 = load i64, ptr %a3 - %t52 = add i64 %t51, 2 - store i64 %t52, ptr %a3 - br label %endif10418 -else10417: - %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 %range10426, label %inrange10427 -range10426: - call void @finch_panic_index(ptr @.str.6972, i64 157, i64 %t54, i64 %t56) - unreachable -inrange10427: - %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 %endif10418 -endif10418: - br label %while.cond10407 -while.end10409: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6973, i64 0, i64 0 }, ptr %a70 - call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t72 -} - -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.6975, 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.from10428 -logic.from10428: - br i1 %t11, label %logic.rhs10429, label %logic.end10430 -logic.rhs10429: - %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.rend10431 -logic.rend10431: - br label %logic.end10430 -logic.end10430: - %t16 = phi i1 [ false, %logic.from10428 ], [ %t15, %logic.rend10431 ] - br i1 %t16, label %then10432, label %endif10434 -then10432: - %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 %range10435, label %inrange10436 -range10435: - call void @finch_panic_index(ptr @.str.6976, i64 167, i64 %t18, i64 %t20) - unreachable -inrange10436: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 - %t24 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t27 -endif10434: - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } { ptr @.str.6977, 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 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - br label %while.cond10437 -while.cond10437: - br label %while.body10438 -while.body10438: - %t2 = call i32 @getchar() - store i32 %t2, ptr %a3 - %t4 = load i32, ptr %a3 - %t5 = icmp slt i32 %t4, 0 - br i1 %t5, label %then10440, label %endif10442 -then10440: - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } { ptr @.str.6978, i64 0, i64 0 } -endif10442: - %t6 = load i32, ptr %a3 - %t7 = icmp eq i32 %t6, 10 - br i1 %t7, label %then10443, label %endif10445 -then10443: - br label %while.end10439 -endif10445: - %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.cond10437 -while.end10439: - %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.6980, 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 %then10446, label %endif10448 -then10446: - %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.6981, i64 188) - %t32 = load { ptr, i64, i64 }, ptr %a28 - %t33 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t32, ptr %a19 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif10448 -endif10448: - %t35 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } %t35 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { -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 { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a45 = alloca i32, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - store i64 0, ptr %a1 - br label %while.cond10449 -while.cond10449: - br label %while.body10450 -while.body10450: - %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 %then10452, label %endif10454 -then10452: - %t7 = load i64, ptr %a1 - %t8 = icmp sgt i64 %t7, 0 - br i1 %t8, label %then10455, label %endif10457 -then10455: - call void @finch_str_drop(ptr %a3) - br label %while.end10451 -endif10457: - %t9 = call ptr @finch_std_stream(i32 0) - %t10 = call i32 @feof(ptr %t9) - %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then10458, label %endif10460 -then10458: - call void @finch_str_drop(ptr %a3) - %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6982, i64 32, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 -endif10460: - call void @finch_str_drop(ptr %a3) - br label %while.cond10449 -endif10454: - %t13 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6984, 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 %then10461, label %endif10463 -then10461: - %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.6985, 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 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } zeroinitializer, ptr %a29 - store i64 0, ptr %a30 - store { ptr, i64, i64 } %t27, ptr %a31 - %t32 = call i32 @finch_str_try_int(ptr %a31, ptr %a30, ptr %a29) - %t33 = icmp eq i32 %t32, 0 - %t34 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load i64, ptr %a30 - br i1 %t33, label %or.failed10464, label %or.ok10465 -or.failed10464: - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %or.bend10466 -or.bend10466: - br label %or.end10467 -or.ok10465: - br label %or.end10467 -or.end10467: - %t38 = phi i64 [ 0, %or.bend10466 ], [ %t36, %or.ok10465 ] - store i64 %t38, ptr %a1 - br label %endif10463 -endif10463: - call void @finch_str_drop(ptr %a3) - br label %while.cond10449 -while.end10451: - store { ptr, i64, i64 } zeroinitializer, ptr %a39 - %t40 = load i64, ptr %a1 - store i64 0, ptr %a41 - br label %for.cond10468 -for.cond10468: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body10469, label %for.end10471 -for.body10469: - %t44 = call i32 @getchar() - store i32 %t44, ptr %a45 - %t46 = load i32, ptr %a45 - %t47 = icmp slt i32 %t46, 0 - br i1 %t47, label %then10472, label %endif10474 -then10472: - call void @finch.drop.arr_u8(ptr %a39) - %t48 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6987, i64 25, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t48 -endif10474: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a39, i32 0, i32 1 - %t50 = load i32, ptr %a45 - %t51 = trunc i32 %t50 to i8 - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a39, i64 %t53, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a39 - %t55 = getelementptr inbounds i8, ptr %t54, i64 %t52 - store i8 %t51, ptr %t55 - store i64 %t53, ptr %t49 - br label %for.step10470 -for.step10470: - %t56 = load i64, ptr %a41 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a41 - br label %for.cond10468 -for.end10471: - %t58 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } zeroinitializer, ptr %a59 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_from_bytes(ptr %a59, ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a59 - %t62 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t61) - %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 0 - %t64 = xor i1 %t63, true - %t65 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 2 - %t66 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 1 - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - br i1 %t64, label %try.failed10475, label %try.ok10476 -try.failed10475: - call void @finch.drop.arr_u8(ptr %a39) - %t68 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t65, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t68 -try.ok10476: - call void @finch.drop.arr_u8(ptr %a39) - %t69 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t70 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t69, %S.json.Json %t66, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t70 -} - -define internal void @finch.lsp.send(%S.json.Json %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = load %S.json.Json, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %t2) - 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.6988, i64 16, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6989, i64 4, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load { ptr, i64, i64 }, ptr %a19 - %t21 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t25, ptr %a26 - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = extractvalue { ptr, i64, i64 } %t27, 0 - %t29 = icmp eq ptr %t28, null - %t30 = select i1 %t29, ptr @.str.6990, ptr %t28 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 - %t32 = load i64, ptr %t31 - %t33 = call ptr @finch_std_stream(i32 1) - %t34 = call i64 @fwrite(ptr %t30, i64 1, i64 %t32, ptr %t33) - %t35 = call ptr @finch_std_stream(i32 1) - %t36 = call i32 @fflush(ptr %t35) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a19) - call void @finch_str_drop(ptr %a4) - ret void -} - -define internal void @finch.drop.arr_S_json_Json(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10477 -n.cond10477: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10478, label %n.end10479 -n.body10478: - %t7 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t5 - call void @finch.drop.S_json_Json(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10477 -n.end10479: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_json_Json(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_json_Json(ptr %t2) - %t3 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t3) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6992, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6991, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6993, i64 2, i64 0 }, %S.json.Json %t7) - %t8 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6994, i64 6, i64 0 }, %S.json.Json %t8) - %t9 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t9) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.6996, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6995, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load { ptr, i64, i64 }, ptr %a1 - %t8 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t7) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6997, i64 6, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.6998, i64 6, i64 0 }, %S.json.Json %t10) - %t11 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t11) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 %S.json.Json @finch.lsp.position(i64 %p0, i64 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a4 = alloca %S.json.Json, align 16 - %a7 = alloca %S.json.Json, align 16 - %a10 = alloca %S.json.Json, align 16 - 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.6999, i64 4, i64 0 }, %S.json.Json %t6) - store %S.json.Json %t6, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a7) - %t8 = load i64, ptr %a2 - %t9 = call %S.json.Json @finch.lsp.num(i64 %t8) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7000, i64 9, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t11 -} - -define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca i64, align 16 - %a5 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - 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.7001, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a1 - %t11 = load i64, ptr %a3 - %t12 = call %S.json.Json @finch.lsp.position(i64 %t10, i64 %t11) - call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.7002, i64 3, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = load %S.json.Json, ptr %a5 - ret %S.json.Json %t14 -} - -define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { -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.7004, 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.failed10480, label %or.ok10481 -or.failed10480: - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_drop(ptr %a10) - br label %or.bend10482 -or.bend10482: - br label %or.end10483 -or.ok10481: - br label %or.end10483 -or.end10483: - %t11 = phi i64 [ 0, %or.bend10482 ], [ %t9, %or.ok10481 ] - 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.7006, 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 %then10484, label %endif10486 -then10484: - ret %S.lsp.Diag zeroinitializer -endif10486: - %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.7007, 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.7008, 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.7010, 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 %then10487, label %endif10489 -then10487: - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag zeroinitializer -endif10489: - %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 %range10490, label %inrange10491 -range10490: - call void @finch_panic_index(ptr @.str.7011, i64 287, i64 %t37, i64 %t39) - unreachable -inrange10491: - %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 %range10492, label %inrange10493 -range10492: - call void @finch_panic_index(ptr @.str.7012, i64 288, i64 %t48, i64 %t50) - unreachable -inrange10493: - %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.cond10494 -for.cond10494: - %t62 = load i64, ptr %a61 - %t63 = icmp slt i64 %t62, %t60 - br i1 %t63, label %for.body10495, label %for.end10497 -for.body10495: - %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 %range10498, label %inrange10499 -range10498: - call void @finch_panic_index(ptr @.str.7013, i64 291, i64 %t65, i64 %t67) - unreachable -inrange10499: - %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.step10496 -for.step10496: - %t79 = load i64, ptr %a61 - %t80 = add i64 %t79, 1 - store i64 %t80, ptr %a61 - br label %for.cond10494 -for.end10497: - %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.7014, 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 - call void @finch.drop.arr_str(ptr %a57) - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag %t95 -} - -define internal void @finch.drop.S_lsp_Diag(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a536 = alloca %S.lsp.Diag, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis zeroinitializer, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7016, 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.cond10500 -each.cond10500: - %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.body10501, label %each.end10503 -each.body10501: - %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.7018, 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 %then10504, label %else10505 -then10504: - %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 %range10507, label %inrange10508 -range10507: - call void @finch_panic_index(ptr @.str.7019, i64 301, i64 0, i64 %t29) - unreachable -inrange10508: - %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.7020, 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.from10509 -logic.from10509: - br i1 %t42, label %logic.rhs10510, label %logic.end10511 -logic.rhs10510: - %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.rend10512 -logic.rend10512: - br label %logic.end10511 -logic.end10511: - %t46 = phi i1 [ false, %logic.from10509 ], [ %t45, %logic.rend10512 ] - br i1 %t46, label %then10513, label %else10514 -then10513: - %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 %range10516, label %inrange10517 -range10516: - call void @finch_panic_index(ptr @.str.7021, i64 303, i64 1, i64 %t50) - unreachable -inrange10517: - %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 %range10518, label %inrange10519 -range10518: - call void @finch_panic_index(ptr @.str.7022, i64 303, i64 2, i64 %t60) - unreachable -inrange10519: - %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 %range10520, label %inrange10521 -range10520: - call void @finch_panic_index(ptr @.str.7023, i64 303, i64 3, i64 %t68) - unreachable -inrange10521: - %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 %range10522, label %inrange10523 -range10522: - call void @finch_panic_index(ptr @.str.7024, i64 303, i64 4, i64 %t76) - unreachable -inrange10523: - %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 %range10524, label %inrange10525 -range10524: - call void @finch_panic_index(ptr @.str.7025, i64 303, i64 5, i64 %t84) - unreachable -inrange10525: - %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 %range10526, label %inrange10527 -range10526: - call void @finch_panic_index(ptr @.str.7026, i64 303, i64 6, i64 %t94) - unreachable -inrange10527: - %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 %range10528, label %inrange10529 -range10528: - call void @finch_panic_index(ptr @.str.7027, i64 303, i64 7, i64 %t102) - unreachable -inrange10529: - %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 %range10530, label %inrange10531 -range10530: - call void @finch_panic_index(ptr @.str.7028, i64 303, i64 8, i64 %t110) - unreachable -inrange10531: - %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 %endif10515 -else10514: - %t121 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.7029, 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.from10532 -logic.from10532: - br i1 %t125, label %logic.rhs10533, label %logic.end10534 -logic.rhs10533: - %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.rend10535 -logic.rend10535: - br label %logic.end10534 -logic.end10534: - %t129 = phi i1 [ false, %logic.from10532 ], [ %t128, %logic.rend10535 ] - br i1 %t129, label %then10536, label %else10537 -then10536: - %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 %range10539, label %inrange10540 -range10539: - call void @finch_panic_index(ptr @.str.7030, i64 305, i64 1, i64 %t133) - unreachable -inrange10540: - %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 %range10541, label %inrange10542 -range10541: - call void @finch_panic_index(ptr @.str.7031, i64 305, i64 2, i64 %t143) - unreachable -inrange10542: - %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 %range10543, label %inrange10544 -range10543: - call void @finch_panic_index(ptr @.str.7032, i64 305, i64 3, i64 %t153) - unreachable -inrange10544: - %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 %range10545, label %inrange10546 -range10545: - call void @finch_panic_index(ptr @.str.7033, i64 305, i64 4, i64 %t163) - unreachable -inrange10546: - %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 %range10547, label %inrange10548 -range10547: - call void @finch_panic_index(ptr @.str.7034, i64 305, i64 5, i64 %t171) - unreachable -inrange10548: - %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 %range10549, label %inrange10550 -range10549: - call void @finch_panic_index(ptr @.str.7035, i64 305, i64 6, i64 %t179) - unreachable -inrange10550: - %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 %range10551, label %inrange10552 -range10551: - call void @finch_panic_index(ptr @.str.7036, i64 305, i64 7, i64 %t189) - unreachable -inrange10552: - %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 %range10553, label %inrange10554 -range10553: - call void @finch_panic_index(ptr @.str.7037, i64 305, i64 8, i64 %t197) - unreachable -inrange10554: - %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 %endif10538 -else10537: - %t208 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.7038, 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.from10555 -logic.from10555: - br i1 %t212, label %logic.rhs10556, label %logic.end10557 -logic.rhs10556: - %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.rend10558 -logic.rend10558: - br label %logic.end10557 -logic.end10557: - %t216 = phi i1 [ false, %logic.from10555 ], [ %t215, %logic.rend10558 ] - br i1 %t216, label %then10559, label %else10560 -then10559: - %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 %range10562, label %inrange10563 -range10562: - call void @finch_panic_index(ptr @.str.7039, i64 307, i64 1, i64 %t220) - unreachable -inrange10563: - %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 %range10564, label %inrange10565 -range10564: - call void @finch_panic_index(ptr @.str.7040, i64 307, i64 2, i64 %t230) - unreachable -inrange10565: - %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 %range10566, label %inrange10567 -range10566: - call void @finch_panic_index(ptr @.str.7041, i64 307, i64 3, i64 %t240) - unreachable -inrange10567: - %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 %range10568, label %inrange10569 -range10568: - call void @finch_panic_index(ptr @.str.7042, i64 307, i64 4, i64 %t250) - unreachable -inrange10569: - %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 %range10570, label %inrange10571 -range10570: - call void @finch_panic_index(ptr @.str.7043, i64 307, i64 5, i64 %t260) - unreachable -inrange10571: - %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 %range10572, label %inrange10573 -range10572: - call void @finch_panic_index(ptr @.str.7044, i64 307, i64 6, i64 %t268) - unreachable -inrange10573: - %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 %range10574, label %inrange10575 -range10574: - call void @finch_panic_index(ptr @.str.7045, i64 307, i64 7, i64 %t276) - unreachable -inrange10575: - %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 %range10576, label %inrange10577 -range10576: - call void @finch_panic_index(ptr @.str.7046, i64 307, i64 8, i64 %t284) - unreachable -inrange10577: - %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 %range10578, label %inrange10579 -range10578: - call void @finch_panic_index(ptr @.str.7047, i64 307, i64 9, i64 %t292) - unreachable -inrange10579: - %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.7049, 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 %endif10561 -else10560: - %t307 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t307, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.7050, 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.from10580 -logic.from10580: - br i1 %t311, label %logic.rhs10581, label %logic.end10582 -logic.rhs10581: - %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.rend10583 -logic.rend10583: - br label %logic.end10582 -logic.end10582: - %t315 = phi i1 [ false, %logic.from10580 ], [ %t314, %logic.rend10583 ] - br i1 %t315, label %then10584, label %else10585 -then10584: - %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 %range10587, label %inrange10588 -range10587: - call void @finch_panic_index(ptr @.str.7051, i64 309, i64 1, i64 %t319) - unreachable -inrange10588: - %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 %range10589, label %inrange10590 -range10589: - call void @finch_panic_index(ptr @.str.7052, i64 309, i64 2, i64 %t329) - unreachable -inrange10590: - %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 %range10591, label %inrange10592 -range10591: - call void @finch_panic_index(ptr @.str.7053, i64 309, i64 3, i64 %t339) - unreachable -inrange10592: - %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 %range10593, label %inrange10594 -range10593: - call void @finch_panic_index(ptr @.str.7054, i64 309, i64 4, i64 %t349) - unreachable -inrange10594: - %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 %range10595, label %inrange10596 -range10595: - call void @finch_panic_index(ptr @.str.7055, i64 309, i64 5, i64 %t357) - unreachable -inrange10596: - %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 %endif10586 -else10585: - %t368 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t368, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.7056, 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.from10597 -logic.from10597: - br i1 %t372, label %logic.rhs10598, label %logic.end10599 -logic.rhs10598: - %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.rend10600 -logic.rend10600: - br label %logic.end10599 -logic.end10599: - %t376 = phi i1 [ false, %logic.from10597 ], [ %t375, %logic.rend10600 ] - br label %logic.from10601 -logic.from10601: - br i1 %t376, label %logic.rhs10602, label %logic.end10603 -logic.rhs10602: - %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.rend10604 -logic.rend10604: - br label %logic.end10603 -logic.end10603: - %t381 = phi i1 [ false, %logic.from10601 ], [ %t380, %logic.rend10604 ] - br i1 %t381, label %then10605, label %else10606 -then10605: - %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 %range10608, label %inrange10609 -range10608: - call void @finch_panic_index(ptr @.str.7057, i64 312, i64 %t388, i64 %t390) - unreachable -inrange10609: - %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 %range10610, label %inrange10611 -range10610: - call void @finch_panic_index(ptr @.str.7058, i64 312, i64 3, i64 %t397) - unreachable -inrange10611: - %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 %range10612, label %inrange10613 -range10612: - call void @finch_panic_index(ptr @.str.7059, i64 313, i64 %t410, i64 %t412) - unreachable -inrange10613: - %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 %range10614, label %inrange10615 -range10614: - call void @finch_panic_index(ptr @.str.7060, i64 313, i64 4, i64 %t419) - unreachable -inrange10615: - %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 %endif10607 -else10606: - %t431 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t431, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.7061, 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.from10616 -logic.from10616: - br i1 %t435, label %logic.rhs10617, label %logic.end10618 -logic.rhs10617: - %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.rend10619 -logic.rend10619: - br label %logic.end10618 -logic.end10618: - %t439 = phi i1 [ false, %logic.from10616 ], [ %t438, %logic.rend10619 ] - br i1 %t439, label %then10620, label %else10621 -then10620: - %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 %range10623, label %inrange10624 -range10623: - call void @finch_panic_index(ptr @.str.7062, i64 315, i64 1, i64 %t443) - unreachable -inrange10624: - %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 %range10625, label %inrange10626 -range10625: - call void @finch_panic_index(ptr @.str.7063, i64 315, i64 2, i64 %t453) - unreachable -inrange10626: - %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 %range10627, label %inrange10628 -range10627: - call void @finch_panic_index(ptr @.str.7064, i64 315, i64 3, i64 %t463) - unreachable -inrange10628: - %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 %range10629, label %inrange10630 -range10629: - call void @finch_panic_index(ptr @.str.7065, i64 315, i64 4, i64 %t473) - unreachable -inrange10630: - %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 %range10631, label %inrange10632 -range10631: - call void @finch_panic_index(ptr @.str.7066, i64 315, i64 5, i64 %t481) - unreachable -inrange10632: - %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 %range10633, label %inrange10634 -range10633: - call void @finch_panic_index(ptr @.str.7067, i64 315, i64 6, i64 %t489) - unreachable -inrange10634: - %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.7069, 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 %endif10622 -else10621: - %t504 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.7070, 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.from10635 -logic.from10635: - br i1 %t508, label %logic.rhs10636, label %logic.end10637 -logic.rhs10636: - %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.rend10638 -logic.rend10638: - br label %logic.end10637 -logic.end10637: - %t512 = phi i1 [ false, %logic.from10635 ], [ %t511, %logic.rend10638 ] - br i1 %t512, label %then10639, label %endif10641 -then10639: - %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 %range10642, label %inrange10643 -range10642: - call void @finch_panic_index(ptr @.str.7071, i64 317, i64 1, i64 %t516) - unreachable -inrange10643: - %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 %endif10641 -endif10641: - br label %endif10622 -endif10622: - br label %endif10607 -endif10607: - br label %endif10586 -endif10586: - br label %endif10561 -endif10561: - br label %endif10538 -endif10538: - br label %endif10515 -endif10515: - call void @finch_str_drop(ptr %a37) - call void @finch.drop.arr_str(ptr %a27) - br label %endif10506 -else10505: - %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 %then10644, label %endif10646 -then10644: - %t532 = load { ptr, i64, i64 }, ptr %a18 - %t533 = call %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %t532) - %t534 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t535 = load %S.lsp.Diag, ptr %t534 - store %S.lsp.Diag %t533, ptr %t534 - store %S.lsp.Diag %t535, ptr %a536 - call void @finch.drop.S_lsp_Diag(ptr %a536) - br label %endif10646 -endif10646: - br label %endif10506 -endif10506: - br label %each.step10502 -each.step10502: - %t537 = load i64, ptr %a10 - %t538 = add i64 %t537, 1 - store i64 %t538, ptr %a10 - br label %each.cond10500 -each.end10503: - call void @finch.drop.arr_str(ptr %a9) - %t539 = load %S.lsp.Analysis, ptr %a2 - ret %S.lsp.Analysis %t539 -} - -define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Ref, ptr %src - store %S.lsp.Ref %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 7 - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 7 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal void @finch.copy.arr_S_lsp_Ref(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond10667 -n.cond10667: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10668, label %n.end10669 -n.body10668: - %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.cond10667 -n.end10669: - 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.cond10670 -n.cond10670: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10671, label %n.end10672 -n.body10671: - %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.cond10670 -n.end10672: - 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.cond10673 -n.cond10673: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10674, label %n.end10675 -n.body10674: - %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.cond10673 -n.end10675: - 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.cond10676 -n.cond10676: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10677, label %n.end10678 -n.body10677: - %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.cond10676 -n.end10678: - 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.cond10679 -n.cond10679: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10680, label %n.end10681 -n.body10680: - %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.cond10679 -n.end10681: - ret void -} - -define internal void @finch.copy.S_lsp_Diag(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Diag, ptr %src - store %S.lsp.Diag %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 1 - %t3 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.copy.S_lsp_Analysis(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Analysis, ptr %src - store %S.lsp.Analysis %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_lsp_Ref(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_lsp_VarRec(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_S_lsp_FnRec(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_lsp_StructRec(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t12, ptr %t13) - %t14 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 6 - %t15 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 6 - call void @finch.copy.S_lsp_Diag(ptr %t14, ptr %t15) - ret void -} - -define internal void @finch.drop.S_lsp_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_lsp_Ref(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10682 -n.cond10682: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10683, label %n.end10684 -n.body10683: - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_Ref(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10682 -n.end10684: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_VarRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_VarRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10685 -n.cond10685: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10686, label %n.end10687 -n.body10686: - %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_VarRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10685 -n.end10687: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_FnRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal void @finch.drop.arr_S_lsp_FnRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10688 -n.cond10688: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10689, label %n.end10690 -n.body10689: - %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_FnRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10688 -n.end10690: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_StructRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.arr_S_lsp_StructRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10691 -n.cond10691: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10692, label %n.end10693 -n.body10692: - %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_StructRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10691 -n.end10693: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_EnumRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_EnumRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10694 -n.cond10694: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10695, label %n.end10696 -n.body10695: - %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_EnumRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10694 -n.end10696: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Analysis(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lsp_Ref(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_lsp_VarRec(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_S_lsp_FnRec(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_lsp_StructRec(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 6 - call void @finch.drop.S_lsp_Diag(ptr %t7) - ret void -} - -define internal void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca i64, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca i64, align 16 - %a14 = alloca i64, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca i64, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lsp.Analysis, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca i32, align 16 - %a188 = alloca %S.lsp.Analysis, align 16 - %a189 = alloca %S.lsp.Analysis, align 16 - %a192 = alloca %S.lsp.Analysis, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %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 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca i32, align 16 - %a272 = alloca %S.lsp.Analysis, align 16 - %a273 = alloca %S.lsp.Analysis, align 16 - %a276 = alloca %S.lsp.Analysis, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.7072, i64 0, i64 0 }, ptr %a4 - store i64 0, ptr %a5 - %t6 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %a7 - %t8 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t9 = load i64, ptr %t8 - call void @finch_arr_make(ptr %a7, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a7 - store i64 0, ptr %a11 - %t12 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 2 - %t13 = load i64, ptr %t12 - store i64 0, ptr %a14 - br label %n.cond10647 -n.cond10647: - %t15 = load i64, ptr %a14 - %t16 = icmp slt i64 %t15, %t13 - br i1 %t16, label %n.body10648, label %n.end10649 -n.body10648: - %t17 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 - %t18 = load ptr, ptr %t17 - %t19 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t18, i64 %t15 - %t20 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 0 - %t21 = load i64, ptr %t20 - %t22 = icmp ne i64 %t21, 0 - br i1 %t22, label %entry.live10650, label %entry.next10651 -entry.live10650: - %t23 = load i64, ptr %a11 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t23 - %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 1 - call void @finch_str_copy(ptr %t24, ptr %t25) - %t26 = add i64 %t23, 1 - store i64 %t26, ptr %a11 - br label %entry.next10651 -entry.next10651: - %t27 = load i64, ptr %a14 - %t28 = add i64 %t27, 1 - store i64 %t28, ptr %a14 - br label %n.cond10647 -n.end10649: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store i64 0, ptr %a31 - br label %each.cond10652 -each.cond10652: - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = load i64, ptr %a31 - %t35 = icmp slt i64 %t34, %t33 - br i1 %t35, label %each.body10653, label %each.end10655 -each.body10653: - %t36 = load ptr, ptr %a30 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i64 %t34 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.7073, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.7074, i64 4, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a60 - %t61 = load { ptr, i64, i64 }, ptr %a60 - %t62 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t63 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = call i64 @finch_map_find(ptr %t62, ptr %a64, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t66 = icmp slt i64 %t65, 0 - br i1 %t66, label %map.missing10656, label %map.found10657 -map.missing10656: - store { ptr, i64, i64 } zeroinitializer, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_buf_str(ptr %a67, ptr %a68, i32 1) - call void @finch_map_missing(ptr @.str.7075, i64 333, ptr %a67) - unreachable -map.found10657: - %t69 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t62, i32 0, i32 0 - %t70 = load ptr, ptr %t69 - %t71 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t70, i64 %t65 - %t72 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t71, i32 0, i32 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t61, ptr %a74 - store { ptr, i64, i64 } %t73, ptr %a75 - %t76 = call i32 @finch_write_file(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - %t78 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.7076, i64 11, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a79 - %t83 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.7077, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a84 - %t88 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t82, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t94, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - %t102 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t101, ptr %a4 - store { ptr, i64, i64 } %t102, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load i64, ptr %a5 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a5 - call void @finch_str_drop(ptr %a60) - br label %each.step10654 -each.step10654: - %t106 = load i64, ptr %a31 - %t107 = add i64 %t106, 1 - store i64 %t107, ptr %a31 - br label %each.cond10652 -each.end10655: - call void @finch.drop.arr_str(ptr %a30) - %t108 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.7078, i64 8, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t113, ptr %a114 - %t115 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.7079, i64 7, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a1 - %t124 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - %t131 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.7080, i64 3, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load { ptr, i64, i64 }, ptr %a114 - %t143 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t141, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t141, ptr %a147 - call void @finch_str_drop(ptr %a147) - store { ptr, i64, i64 } %t143, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.7081, i64 5, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call i64 @finch.host.run({ ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - store { ptr, i64, i64 } zeroinitializer, ptr %a160 - %t161 = call i32 @finch_try_read_file(ptr %a159, ptr %a158, ptr %a160) - %t162 = icmp eq i32 %t161, 0 - %t163 = load { ptr, i64, i64 }, ptr %a160 - %t164 = load { ptr, i64, i64 }, ptr %a159 - br i1 %t162, label %or.failed10658, label %or.ok10659 -or.failed10658: - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_drop(ptr %a165) - br label %or.bend10660 -or.bend10660: - br label %or.end10661 -or.ok10659: - br label %or.end10661 -or.end10661: - %t166 = phi { ptr, i64, i64 } [ { ptr @.str.7082, i64 0, i64 0 }, %or.bend10660 ], [ %t164, %or.ok10659 ] - %t167 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a168 - call void @finch_str_drop(ptr %a168) - store %S.lsp.Analysis %t167, ptr %a169 - %t170 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 6 - %t171 = getelementptr inbounds %S.lsp.Diag, ptr %t170, i32 0, i32 0 - %t172 = load i1, ptr %t171 - %t173 = xor i1 %t172, true - br i1 %t173, label %then10662, label %else10663 -then10662: - %t174 = load %S.lsp.Analysis, ptr %a169 - %t175 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t176 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t176, ptr %a177 - store i32 0, ptr %a178 - %t179 = call i64 @finch_map_slot(ptr %t175, ptr %a177, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a178) - %t180 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t175, i32 0, i32 0 - %t181 = load ptr, ptr %t180 - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t181, i64 %t179 - %t183 = load i32, ptr %a178 - %t184 = icmp ne i32 %t183, 0 - br i1 %t184, label %map.new10665, label %map.have10666 -map.new10665: - %t185 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 1 - call void @finch_str_copy(ptr %t185, ptr %a177) - %t186 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t186 - br label %map.have10666 -map.have10666: - %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis %t174, ptr %a188 - call void @finch.copy.S_lsp_Analysis(ptr %a189, ptr %a188) - %t190 = load %S.lsp.Analysis, ptr %a189 - %t191 = load %S.lsp.Analysis, ptr %t187 - store %S.lsp.Analysis %t190, ptr %t187 - store %S.lsp.Analysis %t191, ptr %a192 - call void @finch.drop.S_lsp_Analysis(ptr %a192) - br label %endif10664 -else10663: - %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 %then10697, label %endif10699 -then10697: - %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.missing10700, label %map.found10701 -map.missing10700: - 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.7083, i64 344, ptr %a203) - unreachable -map.found10701: - %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 %a169, i32 0, i32 2 - store { ptr, i64, i64 } %t215, ptr %a217 - call void @finch.copy.arr_S_lsp_FnRec(ptr %a218, ptr %a217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - %t220 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t219, ptr %t216 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch.drop.arr_S_lsp_FnRec(ptr %a221) - %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 3 - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch.copy.arr_S_lsp_StructRec(ptr %a226, ptr %a225) - %t227 = load { ptr, i64, i64 }, ptr %a226 - %t228 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t227, ptr %t224 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch.drop.arr_S_lsp_StructRec(ptr %a229) - %t230 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 - %t231 = load { ptr, i64, i64 }, ptr %t230 - %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 4 - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load { ptr, i64, i64 }, ptr %t232 - store { ptr, i64, i64 } %t235, ptr %t232 - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %a237) - %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t239, ptr %a241 - call void @finch.copy.arr_S_lsp_VarRec(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = load { ptr, i64, i64 }, ptr %t240 - store { ptr, i64, i64 } %t243, ptr %t240 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.drop.arr_S_lsp_VarRec(ptr %a245) - %t246 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1 - %t248 = load i64, ptr %t247 - %t249 = icmp eq i64 %t248, 0 - br i1 %t249, label %then10702, label %endif10704 -then10702: - %t250 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 - %t251 = load { ptr, i64, i64 }, ptr %t250 - %t252 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - store { ptr, i64, i64 } %t251, ptr %a253 - call void @finch.copy.arr_str(ptr %a254, ptr %a253) - %t255 = load { ptr, i64, i64 }, ptr %a254 - %t256 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t255, ptr %t252 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.drop.arr_str(ptr %a257) - br label %endif10704 -endif10704: - call void @finch.drop.S_lsp_Analysis(ptr %a213) - br label %endif10699 -endif10699: - br label %endif10664 -endif10664: - %t258 = load %S.lsp.Analysis, ptr %a169 - %t259 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t260 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t260, ptr %a261 - store i32 0, ptr %a262 - %t263 = call i64 @finch_map_slot(ptr %t259, ptr %a261, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a262) - %t264 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t259, i32 0, i32 0 - %t265 = load ptr, ptr %t264 - %t266 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t265, i64 %t263 - %t267 = load i32, ptr %a262 - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %map.new10705, label %map.have10706 -map.new10705: - %t269 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 1 - call void @finch_str_copy(ptr %t269, ptr %a261) - %t270 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t270 - br label %map.have10706 -map.have10706: - %t271 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis %t258, ptr %a272 - call void @finch.copy.S_lsp_Analysis(ptr %a273, ptr %a272) - %t274 = load %S.lsp.Analysis, ptr %a273 - %t275 = load %S.lsp.Analysis, ptr %t271 - store %S.lsp.Analysis %t274, ptr %t271 - store %S.lsp.Analysis %t275, ptr %a276 - call void @finch.drop.S_lsp_Analysis(ptr %a276) - %t277 = load { ptr, i64, i64 }, ptr %a1 - %t278 = load %S.lsp.Analysis, ptr %a169 - call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t277, %S.lsp.Analysis %t278) - call void @finch.drop.S_lsp_Analysis(ptr %a169) - call void @finch_str_drop(ptr %a114) - call void @finch_str_drop(ptr %a4) - ret void -} - -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 - %a98 = alloca %S.json.Json, align 16 - %a100 = alloca %S.json.Json, align 16 - %a102 = alloca %S.json.Json, align 16 - %a107 = alloca %S.json.Json, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.json.Json, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond10707 -each.cond10707: - %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.body10708, label %each.end10710 -each.body10708: - %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.cond10711 -find.cond10711: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body10712, label %find.end10715 -find.body10712: - %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.hit10713, label %find.next10714 -find.hit10713: - store i64 %t30, ptr %a26 - br label %find.end10715 -find.next10714: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond10711 -find.end10715: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - %t41 = xor i1 %t40, true - br i1 %t41, label %then10716, label %endif10718 -then10716: - %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 %endif10718 -endif10718: - br label %each.step10709 -each.step10709: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %each.cond10707 -each.end10710: - store { ptr, i64, i64 } zeroinitializer, ptr %a53 - store i64 0, ptr %a54 - br label %each.cond10719 -each.cond10719: - %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.body10720, label %each.end10722 -each.body10720: - %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.from10723 -logic.from10723: - br i1 %t67, label %logic.rhs10724, label %logic.end10725 -logic.rhs10724: - %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.rend10726 -logic.rend10726: - br label %logic.end10725 -logic.end10725: - %t76 = phi i1 [ false, %logic.from10723 ], [ %t75, %logic.rend10726 ] - br i1 %t76, label %then10727, label %endif10729 -then10727: - %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 %then10730, label %endif10732 -then10730: - store i64 0, ptr %a81 - br label %endif10732 -endif10732: - %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 %then10733, label %endif10735 -then10733: - store i64 0, ptr %a88 - br label %endif10735 -endif10735: - %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.7084, i64 5, i64 0 }, %S.json.Json %t97) - store %S.json.Json %t97, ptr %a98 - call void @finch.drop.S_json_Json(ptr %a98) - %t99 = call %S.json.Json @finch.lsp.num(i64 1) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7085, i64 8, i64 0 }, %S.json.Json %t99) - store %S.json.Json %t99, ptr %a100 - call void @finch.drop.S_json_Json(ptr %a100) - %t101 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7087, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7086, i64 6, i64 0 }, %S.json.Json %t101) - store %S.json.Json %t101, ptr %a102 - call void @finch.drop.S_json_Json(ptr %a102) - %t103 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t104 = getelementptr inbounds %S.lsp.Diag, ptr %t103, i32 0, i32 4 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t105) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7088, i64 7, i64 0 }, %S.json.Json %t106) - store %S.json.Json %t106, ptr %a107 - call void @finch.drop.S_json_Json(ptr %a107) - %t108 = load %S.json.Json, ptr %a92 - call void @finch.json.Json.push(ptr %a64, %S.json.Json %t108) - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = load i64, ptr %t109 - %t115 = add i64 %t114, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t115, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t116 = load ptr, ptr %a53 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i64 %t114 - store { ptr, i64, i64 } %t113, ptr %t117 - store i64 %t115, ptr %t109 - call void @finch.drop.S_json_Json(ptr %a92) - br label %endif10729 -endif10729: - %t118 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t118, ptr %a119 - %t120 = load { ptr, i64, i64 }, ptr %a62 - %t121 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t120) - %t122 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t121) - store { ptr, i64, i64 } %t121, ptr %a123 - call void @finch_str_drop(ptr %a123) - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7089, i64 3, i64 0 }, %S.json.Json %t122) - store %S.json.Json %t122, ptr %a124 - call void @finch.drop.S_json_Json(ptr %a124) - %t125 = load %S.json.Json, ptr %a64 - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7090, i64 11, i64 0 }, %S.json.Json %t125) - %t126 = load %S.json.Json, ptr %a119 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7091, i64 31, i64 0 }, %S.json.Json %t126) - call void @finch.drop.S_json_Json(ptr %a119) - call void @finch.drop.S_json_Json(ptr %a64) - br label %each.step10721 -each.step10721: - %t127 = load i64, ptr %a54 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a54 - br label %each.cond10719 -each.end10722: - %t129 = load { ptr, i64, i64 }, ptr %a53 - %t130 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch.copy.arr_str(ptr %a132, ptr %a131) - %t133 = load { ptr, i64, i64 }, ptr %a132 - %t134 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t133, ptr %t130 - store { ptr, i64, i64 } %t134, ptr %a135 - call void @finch.drop.arr_str(ptr %a135) - call void @finch.drop.arr_str(ptr %a53) - call void @finch.drop.arr_str(ptr %a13) - ret void -} - -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.cond10736 -for.cond10736: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body10737, label %for.end10739 -for.body10737: - %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 %range10740, label %inrange10741 -range10740: - call void @finch_panic_index(ptr @.str.7092, i64 397, i64 %t12, i64 %t14) - unreachable -inrange10741: - %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.from10742 -logic.from10742: - br i1 %t26, label %logic.rhs10743, label %logic.end10744 -logic.rhs10743: - %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.rend10745 -logic.rend10745: - br label %logic.end10744 -logic.end10744: - %t31 = phi i1 [ false, %logic.from10742 ], [ %t30, %logic.rend10745 ] - br label %logic.from10746 -logic.from10746: - br i1 %t31, label %logic.rhs10747, label %logic.end10748 -logic.rhs10747: - %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.rend10749 -logic.rend10749: - br label %logic.end10748 -logic.end10748: - %t39 = phi i1 [ false, %logic.from10746 ], [ %t38, %logic.rend10749 ] - br label %logic.from10750 -logic.from10750: - br i1 %t39, label %logic.rhs10751, label %logic.end10752 -logic.rhs10751: - %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.rend10753 -logic.rend10753: - br label %logic.end10752 -logic.end10752: - %t47 = phi i1 [ false, %logic.from10750 ], [ %t46, %logic.rend10753 ] - br i1 %t47, label %then10754, label %endif10756 -then10754: - %t48 = load i64, ptr %a8 - call void @finch.drop.S_lsp_Ref(ptr %a22) - ret i64 %t48 -endif10756: - call void @finch.drop.S_lsp_Ref(ptr %a22) - br label %for.step10738 -for.step10738: - %t49 = load i64, ptr %a8 - %t50 = add i64 %t49, 1 - store i64 %t50, ptr %a8 - br label %for.cond10736 -for.end10739: - 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 - %a17 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %then10757, label %endif10759 -then10757: - %t13 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t13 -endif10759: - %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.7094, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7093, i64 4, i64 0 }, %S.json.Json %t16) - store %S.json.Json %t16, ptr %a17 - call void @finch.drop.S_json_Json(ptr %a17) - %t18 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 - %t19 = load i64, ptr %a10 - %t20 = load { ptr, i64, i64 }, ptr %t18 - %t21 = extractvalue { ptr, i64, i64 } %t20, 1 - %t22 = icmp uge i64 %t19, %t21 - br i1 %t22, label %range10760, label %inrange10761 -range10760: - call void @finch_panic_index(ptr @.str.7096, i64 412, i64 %t19, i64 %t21) - unreachable -inrange10761: - %t23 = extractvalue { ptr, i64, i64 } %t20, 0 - %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i64 %t19 - %t25 = getelementptr inbounds %S.lsp.Ref, ptr %t24, i32 0, i32 7 - %t26 = load { ptr, i64, i64 }, ptr %t25 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7095, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t29, ptr %a30 - %t31 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a30, { ptr, i64, i64 } { ptr @.str.7097, i64 8, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.json.Json, align 16 - %a56 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - 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.from10762 -logic.from10762: - br i1 %t12, label %logic.end10764, label %logic.rhs10763 -logic.rhs10763: - %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 %range10765, label %inrange10766 -range10765: - call void @finch_panic_index(ptr @.str.7098, i64 420, i64 %t14, i64 %t16) - unreachable -inrange10766: - %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.rend10767 -logic.rend10767: - br label %logic.end10764 -logic.end10764: - %t24 = phi i1 [ true, %logic.from10762 ], [ %t23, %logic.rend10767 ] - br i1 %t24, label %then10768, label %endif10770 -then10768: - %t25 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t25 -endif10770: - %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 %range10771, label %inrange10772 -range10771: - call void @finch_panic_index(ptr @.str.7099, i64 423, i64 %t27, i64 %t29) - unreachable -inrange10772: - %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) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7100, i64 3, i64 0 }, %S.json.Json %t43) - store %S.json.Json %t43, ptr %a45 - call void @finch.drop.S_json_Json(ptr %a45) - %t46 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 - %t47 = load i64, ptr %t46 - %t48 = sub i64 %t47, 1 - %t49 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t50 = load i64, ptr %t49 - %t51 = sub i64 %t50, 1 - %t52 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t53 = load i64, ptr %t52 - %t54 = sub i64 %t53, 1 - %t55 = call %S.json.Json @finch.lsp.range(i64 %t48, i64 %t51, i64 %t54) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7101, i64 5, i64 0 }, %S.json.Json %t55) - store %S.json.Json %t55, ptr %a56 - call void @finch.drop.S_json_Json(ptr %a56) - %t57 = load %S.json.Json, ptr %a39 - call void @finch.drop.S_lsp_Ref(ptr %a37) - ret %S.json.Json %t57 -} - -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.json.Json, align 16 - %a61 = alloca i64, align 16 - %a69 = alloca %S.lsp.StructRec, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca %S.json.Json, align 16 - %a95 = alloca i64, align 16 - %a103 = alloca %S.lsp.EnumRec, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t3, ptr %a4 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a6 - br label %each.cond10773 -each.cond10773: - %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.body10774, label %each.end10776 -each.body10774: - %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 %then10777, label %endif10779 -then10777: - br label %each.step10775 -endif10779: - 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 %then10780, label %endif10782 -then10780: - 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.7102, 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) - store { ptr, i64, i64 } %t38, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t45, ptr %a28 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif10782 -endif10782: - %t48 = load { ptr, i64, i64 }, ptr %a28 - %t49 = load i64, ptr %a22 - %t50 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 - %t51 = load i64, ptr %t50 - %t52 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 - %t53 = load i64, ptr %t52 - %t54 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 - %t55 = load i64, ptr %t54 - %t56 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t48, i64 %t49, i64 %t51, i64 %t53, i64 %t55) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t56) - store %S.json.Json %t56, ptr %a57 - call void @finch.drop.S_json_Json(ptr %a57) - call void @finch_str_drop(ptr %a28) - br label %each.step10775 -each.step10775: - %t58 = load i64, ptr %a6 - %t59 = add i64 %t58, 1 - store i64 %t59, ptr %a6 - br label %each.cond10773 -each.end10776: - %t60 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a61 - br label %each.cond10783 -each.cond10783: - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - %t64 = load i64, ptr %a61 - %t65 = icmp slt i64 %t64, %t63 - br i1 %t65, label %each.body10784, label %each.end10786 -each.body10784: - %t66 = load ptr, ptr %t60 - %t67 = getelementptr inbounds %S.lsp.StructRec, ptr %t66, i64 %t64 - %t68 = load %S.lsp.StructRec, ptr %t67 - store %S.lsp.StructRec %t68, ptr %a69 - %t70 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 2 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) - %t76 = icmp ne i32 %t75, 0 - br i1 %t76, label %then10787, label %endif10789 -then10787: - %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t80 = load i64, ptr %t79 - %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 4 - %t82 = load i64, ptr %t81 - %t83 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t84 = load i64, ptr %t83 - %t85 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 5 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t84, %t87 - %t89 = add i64 %t88, 1 - %t90 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t78, i64 23, i64 %t80, i64 %t82, i64 %t89) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t90) - store %S.json.Json %t90, ptr %a91 - call void @finch.drop.S_json_Json(ptr %a91) - br label %endif10789 -endif10789: - br label %each.step10785 -each.step10785: - %t92 = load i64, ptr %a61 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a61 - br label %each.cond10783 -each.end10786: - %t94 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a95 - br label %each.cond10790 -each.cond10790: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = load i64, ptr %a95 - %t99 = icmp slt i64 %t98, %t97 - br i1 %t99, label %each.body10791, label %each.end10793 -each.body10791: - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.lsp.EnumRec, ptr %t100, i64 %t98 - %t102 = load %S.lsp.EnumRec, ptr %t101 - store %S.lsp.EnumRec %t102, ptr %a103 - %t104 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - br i1 %t110, label %then10794, label %endif10796 -then10794: - %t111 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - %t113 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t114 = load i64, ptr %t113 - %t115 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 4 - %t116 = load i64, ptr %t115 - %t117 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t118 = load i64, ptr %t117 - %t119 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load i64, ptr %t120 - %t122 = add i64 %t118, %t121 - %t123 = add i64 %t122, 1 - %t124 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t112, i64 10, i64 %t114, i64 %t116, i64 %t123) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t124) - store %S.json.Json %t124, ptr %a125 - call void @finch.drop.S_json_Json(ptr %a125) - br label %endif10796 -endif10796: - br label %each.step10792 -each.step10792: - %t126 = load i64, ptr %a95 - %t127 = add i64 %t126, 1 - store i64 %t127, ptr %a95 - br label %each.cond10790 -each.end10793: - %t128 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t128 -} - -define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { -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 - %a10 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - %a15 = alloca %S.json.Json, align 16 - %a19 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a31 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.7103, i64 4, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load i64, ptr %a2 - %t12 = call %S.json.Json @finch.lsp.num(i64 %t11) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7104, i64 4, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t14, ptr %a15 - %t16 = load i64, ptr %a3 - %t17 = sub i64 %t16, 1 - %t18 = call %S.json.Json @finch.lsp.position(i64 %t17, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7105, i64 5, i64 0 }, %S.json.Json %t18) - store %S.json.Json %t18, ptr %a19 - call void @finch.drop.S_json_Json(ptr %a19) - %t20 = load i64, ptr %a5 - %t21 = call %S.json.Json @finch.lsp.position(i64 %t20, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7106, i64 3, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7107, i64 5, i64 0 }, %S.json.Json %t23) - %t24 = load i64, ptr %a3 - %t25 = sub i64 %t24, 1 - %t26 = load i64, ptr %a4 - %t27 = sub i64 %t26, 1 - %t28 = load i64, ptr %a4 - %t29 = sub i64 %t28, 1 - %t30 = call %S.json.Json @finch.lsp.range(i64 %t25, i64 %t27, i64 %t29) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7108, i64 14, i64 0 }, %S.json.Json %t30) - store %S.json.Json %t30, ptr %a31 - call void @finch.drop.S_json_Json(ptr %a31) - %t32 = load %S.json.Json, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a9 = alloca %S.json.Json, align 16 - %a12 = alloca %S.json.Json, align 16 - %a18 = alloca %S.json.Json, align 16 - %a23 = alloca %S.json.Json, align 16 - %a25 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.7109, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a2 - %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7110, i64 4, i64 0 }, %S.json.Json %t11) - store %S.json.Json %t11, ptr %a12 - call void @finch.drop.S_json_Json(ptr %a12) - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp sgt i64 %t14, 0 - br i1 %t15, label %then10797, label %endif10799 -then10797: - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t16) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7111, i64 6, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - br label %endif10799 -endif10799: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t20 = load i64, ptr %t19 - %t21 = icmp sgt i64 %t20, 0 - br i1 %t21, label %then10800, label %endif10802 -then10800: - %t22 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t22, ptr %a23 - %t24 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7113, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7112, i64 4, i64 0 }, %S.json.Json %t24) - store %S.json.Json %t24, ptr %a25 - call void @finch.drop.S_json_Json(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a4 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7114, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = load %S.json.Json, ptr %a23 - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7115, i64 13, i64 0 }, %S.json.Json %t29) - call void @finch.drop.S_json_Json(ptr %a23) - br label %endif10802 -endif10802: - %t30 = load %S.json.Json, ptr %a6 - ret %S.json.Json %t30 -} - -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.from10803 -logic.from10803: - br i1 %t3, label %logic.rhs10804, label %logic.end10805 -logic.rhs10804: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend10806 -logic.rend10806: - br label %logic.end10805 -logic.end10805: - %t6 = phi i1 [ false, %logic.from10803 ], [ %t5, %logic.rend10806 ] - br label %logic.from10807 -logic.from10807: - br i1 %t6, label %logic.end10809, label %logic.rhs10808 -logic.rhs10808: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from10810 -logic.from10810: - br i1 %t8, label %logic.rhs10811, label %logic.end10812 -logic.rhs10811: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend10813 -logic.rend10813: - br label %logic.end10812 -logic.end10812: - %t11 = phi i1 [ false, %logic.from10810 ], [ %t10, %logic.rend10813 ] - br label %logic.rend10814 -logic.rend10814: - br label %logic.end10809 -logic.end10809: - %t12 = phi i1 [ true, %logic.from10807 ], [ %t11, %logic.rend10814 ] - br label %logic.from10815 -logic.from10815: - br i1 %t12, label %logic.end10817, label %logic.rhs10816 -logic.rhs10816: - %t13 = load i8, ptr %a1 - %t14 = icmp uge i8 %t13, 48 - br label %logic.from10818 -logic.from10818: - br i1 %t14, label %logic.rhs10819, label %logic.end10820 -logic.rhs10819: - %t15 = load i8, ptr %a1 - %t16 = icmp ule i8 %t15, 57 - br label %logic.rend10821 -logic.rend10821: - br label %logic.end10820 -logic.end10820: - %t17 = phi i1 [ false, %logic.from10818 ], [ %t16, %logic.rend10821 ] - br label %logic.rend10822 -logic.rend10822: - br label %logic.end10817 -logic.end10817: - %t18 = phi i1 [ true, %logic.from10815 ], [ %t17, %logic.rend10822 ] - br label %logic.from10823 -logic.from10823: - br i1 %t18, label %logic.end10825, label %logic.rhs10824 -logic.rhs10824: - %t19 = load i8, ptr %a1 - %t20 = icmp eq i8 %t19, 95 - br label %logic.rend10826 -logic.rend10826: - br label %logic.end10825 -logic.end10825: - %t21 = phi i1 [ true, %logic.from10823 ], [ %t20, %logic.rend10826 ] - 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 - %a30 = alloca %S.json.Json, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond10827 -each.cond10827: - %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.body10828, label %each.end10830 -each.body10828: - %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.7117, 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 %then10831, label %endif10833 -then10831: - store i64 5, ptr %a12 - br label %endif10833 -endif10833: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic10834, label %ok10835 -panic10834: - call void @finch_panic(ptr @.str.7118, i64 497, ptr @.str.7119) - unreachable -ok10835: - %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) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - br label %each.step10829 -each.step10829: - %t31 = load i64, ptr %a3 - %t32 = add i64 %t31, 1 - store i64 %t32, ptr %a3 - br label %each.cond10827 -each.end10830: - 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 - %a47 = alloca %S.lsp.VarRec, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.cond10836 -each.cond10836: - %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.body10837, label %each.end10839 -each.body10837: - %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.from10840 -logic.from10840: - br i1 %t22, label %logic.rhs10841, label %logic.end10842 -logic.rhs10841: - %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.rend10843 -logic.rend10843: - br label %logic.end10842 -logic.end10842: - %t27 = phi i1 [ false, %logic.from10840 ], [ %t26, %logic.rend10843 ] - br label %logic.from10844 -logic.from10844: - br i1 %t27, label %logic.rhs10845, label %logic.end10846 -logic.rhs10845: - %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.rend10847 -logic.rend10847: - br label %logic.end10846 -logic.end10846: - %t33 = phi i1 [ false, %logic.from10844 ], [ %t32, %logic.rend10847 ] - br label %logic.from10848 -logic.from10848: - br i1 %t33, label %logic.rhs10849, label %logic.end10850 -logic.rhs10849: - %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.rend10851 -logic.rend10851: - br label %logic.end10850 -logic.end10850: - %t41 = phi i1 [ false, %logic.from10848 ], [ %t40, %logic.rend10851 ] - br i1 %t41, label %then10852, label %endif10854 -then10852: - %t42 = load %S.lsp.VarRec, ptr %a15 - store %S.lsp.VarRec %t42, ptr %a43 - call void @finch.copy.S_lsp_VarRec(ptr %a44, ptr %a43) - %t45 = load %S.lsp.VarRec, ptr %a44 - %t46 = load %S.lsp.VarRec, ptr %a5 - store %S.lsp.VarRec %t45, ptr %a5 - store %S.lsp.VarRec %t46, ptr %a47 - call void @finch.drop.S_lsp_VarRec(ptr %a47) - br label %endif10854 -endif10854: - br label %each.step10838 -each.step10838: - %t48 = load i64, ptr %a7 - %t49 = add i64 %t48, 1 - store i64 %t49, ptr %a7 - br label %each.cond10836 -each.end10839: - %t50 = load %S.lsp.VarRec, ptr %a5 - ret %S.lsp.VarRec %t50 -} - -define internal void @finch.drop.S_lsp_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a125 = alloca i64, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i64, align 16 - %a146 = alloca %S.lsp.FnRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.json.Json, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca %S.lsp.StructRec, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca %S.json.Json, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca %S.lsp.EnumRec, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.json.Json, align 16 - %a230 = alloca i64, align 16 - %a238 = alloca %S.lsp.EnumRec, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.lsp.VarRec, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca %S.json.Json, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca %S.lsp.VarRec, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca i64, align 16 - %a387 = alloca %S.lsp.StructRec, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca i64, align 16 - %a418 = alloca %S.json.Json, align 16 - %a424 = alloca i64, align 16 - %a432 = alloca %S.lsp.FnRec, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.json.Json, align 16 - %a450 = alloca %S.lsp.Names, align 16 - %a452 = alloca i64, align 16 - %a460 = alloca %S.lsp.VarRec, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca %S.json.Json, align 16 - %a492 = alloca i64, align 16 - %a500 = alloca %S.lsp.FnRec, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca %S.json.Json, align 16 - %a525 = alloca i64, align 16 - %a533 = alloca %S.lsp.StructRec, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca %S.json.Json, align 16 - %a558 = alloca i64, align 16 - %a566 = alloca %S.lsp.EnumRec, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca %S.json.Json, align 16 - %a591 = alloca i64, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca %S.json.Json, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca i64, align 16 - %a617 = alloca %S.docs.Doc, align 16 - %a628 = alloca %S.json.Json, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca i64, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca %S.json.Json, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then10855, label %endif10857 -then10855: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 - %t20 = load i64, ptr %t19 - store i64 %t20, ptr %a14 - br label %endif10857 -endif10857: - %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.7120, 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.cond10858 -while.cond10858: - %t30 = load i64, ptr %a29 - %t31 = icmp sgt i64 %t30, 0 - br label %logic.from10861 -logic.from10861: - br i1 %t31, label %logic.rhs10862, label %logic.end10863 -logic.rhs10862: - %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 %range10864, label %inrange10865 -range10864: - call void @finch_panic_index(ptr @.str.7121, i64 522, i64 %t33, i64 %t35) - unreachable -inrange10865: - %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.rend10866 -logic.rend10866: - br label %logic.end10863 -logic.end10863: - %t41 = phi i1 [ false, %logic.from10861 ], [ %t40, %logic.rend10866 ] - br i1 %t41, label %while.body10859, label %while.end10860 -while.body10859: - %t42 = load i64, ptr %a29 - %t43 = sub i64 %t42, 1 - store i64 %t43, ptr %a29 - br label %while.cond10858 -while.end10860: - %t44 = load i64, ptr %a29 - %t45 = icmp sgt i64 %t44, 0 - br label %logic.from10867 -logic.from10867: - br i1 %t45, label %logic.rhs10868, label %logic.end10869 -logic.rhs10868: - %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 %range10870, label %inrange10871 -range10870: - call void @finch_panic_index(ptr @.str.7122, i64 525, i64 %t47, i64 %t49) - unreachable -inrange10871: - %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.rend10872 -logic.rend10872: - br label %logic.end10869 -logic.end10869: - %t55 = phi i1 [ false, %logic.from10867 ], [ %t54, %logic.rend10872 ] - store i1 %t55, ptr %a56 - %t57 = load i1, ptr %a56 - br i1 %t57, label %then10873, label %endif10875 -then10873: - %t58 = load i64, ptr %a29 - %t59 = sub i64 %t58, 1 - store i64 %t59, ptr %a60 - br label %while.cond10876 -while.cond10876: - %t61 = load i64, ptr %a60 - %t62 = icmp sgt i64 %t61, 0 - br label %logic.from10879 -logic.from10879: - br i1 %t62, label %logic.rhs10880, label %logic.end10881 -logic.rhs10880: - %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 %range10882, label %inrange10883 -range10882: - call void @finch_panic_index(ptr @.str.7123, i64 528, i64 %t64, i64 %t66) - unreachable -inrange10883: - %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.from10884 -logic.from10884: - br i1 %t71, label %logic.end10886, label %logic.rhs10885 -logic.rhs10885: - %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 %range10887, label %inrange10888 -range10887: - call void @finch_panic_index(ptr @.str.7124, i64 528, i64 %t73, i64 %t75) - unreachable -inrange10888: - %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.rend10889 -logic.rend10889: - br label %logic.end10886 -logic.end10886: - %t81 = phi i1 [ true, %logic.from10884 ], [ %t80, %logic.rend10889 ] - br label %logic.from10890 -logic.from10890: - br i1 %t81, label %logic.end10892, label %logic.rhs10891 -logic.rhs10891: - %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 %range10893, label %inrange10894 -range10893: - call void @finch_panic_index(ptr @.str.7125, i64 528, i64 %t83, i64 %t85) - unreachable -inrange10894: - %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.rend10895 -logic.rend10895: - br label %logic.end10892 -logic.end10892: - %t91 = phi i1 [ true, %logic.from10890 ], [ %t90, %logic.rend10895 ] - br label %logic.rend10896 -logic.rend10896: - br label %logic.end10881 -logic.end10881: - %t92 = phi i1 [ false, %logic.from10879 ], [ %t91, %logic.rend10896 ] - br i1 %t92, label %while.body10877, label %while.end10878 -while.body10877: - %t93 = load i64, ptr %a60 - %t94 = sub i64 %t93, 1 - store i64 %t94, ptr %a60 - br label %while.cond10876 -while.end10878: - %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.7126, 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.7128, 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 %then10897, label %endif10899 -then10897: - %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.7129, i64 535) - %t116 = load { ptr, i64, i64 }, ptr %a114 - %t117 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t116, ptr %a102 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - store i1 true, ptr %a103 - br label %endif10899 -endif10899: - %t119 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a102 - store i64 -1, ptr %a122 - %t123 = load i64, ptr %t120 - %t124 = load ptr, ptr %t119 - store i64 0, ptr %a125 - br label %find.cond10900 -find.cond10900: - %t126 = load i64, ptr %a125 - %t127 = icmp slt i64 %t126, %t123 - br i1 %t127, label %find.body10901, label %find.end10904 -find.body10901: - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 %t126 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } %t121, ptr %a131 - %t132 = call i32 @finch_str_eq(ptr %a130, ptr %a131) - %t133 = icmp ne i32 %t132, 0 - br i1 %t133, label %find.hit10902, label %find.next10903 -find.hit10902: - store i64 %t126, ptr %a122 - br label %find.end10904 -find.next10903: - %t134 = add i64 %t126, 1 - store i64 %t134, ptr %a125 - br label %find.cond10900 -find.end10904: - %t135 = load i64, ptr %a122 - %t136 = icmp sge i64 %t135, 0 - br i1 %t136, label %then10905, label %endif10907 -then10905: - %t137 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a138 - br label %each.cond10908 -each.cond10908: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t140 = load i64, ptr %t139 - %t141 = load i64, ptr %a138 - %t142 = icmp slt i64 %t141, %t140 - br i1 %t142, label %each.body10909, label %each.end10911 -each.body10909: - %t143 = load ptr, ptr %t137 - %t144 = getelementptr inbounds %S.lsp.FnRec, ptr %t143, i64 %t141 - %t145 = load %S.lsp.FnRec, ptr %t144 - store %S.lsp.FnRec %t145, ptr %a146 - %t147 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.from10912 -logic.from10912: - br i1 %t153, label %logic.rhs10913, label %logic.end10914 -logic.rhs10913: - %t154 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 2 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp eq i64 %t156, 0 - br label %logic.rend10915 -logic.rend10915: - br label %logic.end10914 -logic.end10914: - %t158 = phi i1 [ false, %logic.from10912 ], [ %t157, %logic.rend10915 ] - br i1 %t158, label %then10916, label %endif10918 -then10916: - %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 7 - %t162 = load { ptr, i64, i64 }, ptr %t161 - %t163 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t160, i64 3, { ptr, i64, i64 } %t162, { ptr, i64, i64 } { ptr @.str.7130, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t163) - store %S.json.Json %t163, ptr %a164 - call void @finch.drop.S_json_Json(ptr %a164) - br label %endif10918 -endif10918: - br label %each.step10910 -each.step10910: - %t165 = load i64, ptr %a138 - %t166 = add i64 %t165, 1 - store i64 %t166, ptr %a138 - br label %each.cond10908 -each.end10911: - %t167 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a168 - br label %each.cond10919 -each.cond10919: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10920, label %each.end10922 -each.body10920: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %t173, i64 %t171 - %t175 = load %S.lsp.StructRec, ptr %t174 - store %S.lsp.StructRec %t175, ptr %a176 - %t177 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } %t179, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then10923, label %endif10925 -then10923: - %t184 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - %t186 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } { ptr @.str.7131, i64 7, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a188 - %t192 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t185, i64 22, { ptr, i64, i64 } %t191, { ptr, i64, i64 } { ptr @.str.7132, i64 0, i64 0 }) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t192) - store %S.json.Json %t192, ptr %a194 - call void @finch.drop.S_json_Json(ptr %a194) - br label %endif10925 -endif10925: - br label %each.step10921 -each.step10921: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10919 -each.end10922: - %t197 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a198 - br label %each.cond10926 -each.cond10926: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = load i64, ptr %a198 - %t202 = icmp slt i64 %t201, %t200 - br i1 %t202, label %each.body10927, label %each.end10929 -each.body10927: - %t203 = load ptr, ptr %t197 - %t204 = getelementptr inbounds %S.lsp.EnumRec, ptr %t203, i64 %t201 - %t205 = load %S.lsp.EnumRec, ptr %t204 - store %S.lsp.EnumRec %t205, ptr %a206 - %t207 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } %t209, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br i1 %t213, label %then10930, label %endif10932 -then10930: - %t214 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t215 = load { ptr, i64, i64 }, ptr %t214 - %t216 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } { ptr @.str.7133, i64 5, i64 0 }, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a218 - %t222 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t215, i64 13, { ptr, i64, i64 } %t221, { ptr, i64, i64 } { ptr @.str.7134, i64 0, i64 0 }) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t222) - store %S.json.Json %t222, ptr %a224 - call void @finch.drop.S_json_Json(ptr %a224) - br label %endif10932 -endif10932: - br label %each.step10928 -each.step10928: - %t225 = load i64, ptr %a198 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a198 - br label %each.cond10926 -each.end10929: - %t227 = load %S.json.Json, ptr %a7 - %t228 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t227) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t228 -endif10907: - %t229 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a230 - br label %each.cond10933 -each.cond10933: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t232 = load i64, ptr %t231 - %t233 = load i64, ptr %a230 - %t234 = icmp slt i64 %t233, %t232 - br i1 %t234, label %each.body10934, label %each.end10936 -each.body10934: - %t235 = load ptr, ptr %t229 - %t236 = getelementptr inbounds %S.lsp.EnumRec, ptr %t235, i64 %t233 - %t237 = load %S.lsp.EnumRec, ptr %t236 - store %S.lsp.EnumRec %t237, ptr %a238 - %t239 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from10937 -logic.from10937: - br i1 %t245, label %logic.rhs10938, label %logic.end10939 -logic.rhs10938: - %t246 = load %S.lsp.Analysis, ptr %a1 - %t247 = load { ptr, i64, i64 }, ptr %a3 - %t248 = load { ptr, i64, i64 }, ptr %a102 - %t249 = load i64, ptr %a4 - %t250 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t246, { ptr, i64, i64 } %t247, { ptr, i64, i64 } %t248, i64 %t249) - %t251 = extractvalue %S.lsp.VarRec %t250, 0 - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - store %S.lsp.VarRec %t250, ptr %a255 - call void @finch.drop.S_lsp_VarRec(ptr %a255) - %t256 = extractvalue { ptr, i64, i64 } %t254, 1 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = icmp eq i64 %t256, 0 - br label %logic.rend10940 -logic.rend10940: - br label %logic.end10939 -logic.end10939: - %t259 = phi i1 [ false, %logic.from10937 ], [ %t258, %logic.rend10940 ] - br i1 %t259, label %then10941, label %endif10943 -then10941: - %t260 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 5 - store i64 0, ptr %a261 - br label %each.cond10944 -each.cond10944: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body10945, label %each.end10947 -each.body10945: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t264 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.7135, i64 1, i64 0 }, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - %t277 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t276, ptr %a279 - store { ptr, i64, i64 } %t277, ptr %a280 - call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a278 - %t283 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t270, i64 20, { ptr, i64, i64 } %t282, { ptr, i64, i64 } { ptr @.str.7136, i64 0, i64 0 }) - store { ptr, i64, i64 } %t282, ptr %a284 - call void @finch_str_drop(ptr %a284) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t283) - store %S.json.Json %t283, ptr %a285 - call void @finch.drop.S_json_Json(ptr %a285) - br label %each.step10946 -each.step10946: - %t286 = load i64, ptr %a261 - %t287 = add i64 %t286, 1 - store i64 %t287, ptr %a261 - br label %each.cond10944 -each.end10947: - %t288 = load %S.json.Json, ptr %a7 - %t289 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t288) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t289 -endif10943: - br label %each.step10935 -each.step10935: - %t290 = load i64, ptr %a230 - %t291 = add i64 %t290, 1 - store i64 %t291, ptr %a230 - br label %each.cond10933 -each.end10936: - %t292 = load %S.lsp.Analysis, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a3 - %t294 = load { ptr, i64, i64 }, ptr %a102 - %t295 = load i64, ptr %a4 - %t296 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t292, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294, i64 %t295) - %t297 = extractvalue %S.lsp.VarRec %t296, 1 - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_copy(ptr %a299, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store %S.lsp.VarRec %t296, ptr %a301 - call void @finch.drop.S_lsp_VarRec(ptr %a301) - store { ptr, i64, i64 } %t300, ptr %a302 - %t303 = load i1, ptr %a103 - br label %logic.from10948 -logic.from10948: - br i1 %t303, label %logic.rhs10949, label %logic.end10950 -logic.rhs10949: - %t304 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t304, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.7138, i64 2, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_starts(ptr %a305, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br label %logic.rend10951 -logic.rend10951: - br label %logic.end10950 -logic.end10950: - %t310 = phi i1 [ false, %logic.from10948 ], [ %t309, %logic.rend10951 ] - br i1 %t310, label %then10952, label %else10953 -then10952: - %t311 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t311, ptr %a312 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t315 = load i64, ptr %t314 - call void @finch_str_sub(ptr %a313, ptr %a312, i64 2, i64 %t315, ptr @.str.7139, i64 569) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t316, ptr %a302 - store { ptr, i64, i64 } %t317, ptr %a318 - call void @finch_str_drop(ptr %a318) - br label %endif10954 -else10953: - %t319 = load i1, ptr %a103 - br label %logic.from10955 -logic.from10955: - br i1 %t319, label %logic.rhs10956, label %logic.end10957 -logic.rhs10956: - %t320 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t320, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.7140, i64 3, i64 0 }, ptr %a322 - %t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322) - %t324 = icmp ne i32 %t323, 0 - br label %logic.rend10958 -logic.rend10958: - br label %logic.end10957 -logic.end10957: - %t325 = phi i1 [ false, %logic.from10955 ], [ %t324, %logic.rend10958 ] - br i1 %t325, label %then10959, label %endif10961 -then10959: - %t326 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.7141, i64 4, i64 0 }, ptr %a302 - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif10961 -endif10961: - br label %endif10954 -endif10954: - %t328 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t328, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.7143, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_starts(ptr %a329, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.from10962 -logic.from10962: - br i1 %t333, label %logic.rhs10963, label %logic.end10964 -logic.rhs10963: - %t334 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.7145, i64 1, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_ends(ptr %a335, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br label %logic.rend10965 -logic.rend10965: - br label %logic.end10964 -logic.end10964: - %t340 = phi i1 [ false, %logic.from10962 ], [ %t339, %logic.rend10965 ] - br i1 %t340, label %then10966, label %endif10968 -then10966: - %t341 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t341, ptr %a342 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = sub i64 %t345, 1 - call void @finch_str_sub(ptr %a343, ptr %a342, i64 4, i64 %t346, ptr @.str.7146, i64 574) - %t347 = load { ptr, i64, i64 }, ptr %a343 - %t348 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t347, ptr %a302 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_drop(ptr %a349) - br label %endif10968 -endif10968: - %t350 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t350, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.7148, i64 2, i64 0 }, ptr %a353 - %t354 = call i32 @finch_str_starts(ptr %a351, ptr %a353) - %t355 = icmp ne i32 %t354, 0 - br i1 %t355, label %then10969, label %else10970 -then10969: - %t356 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t356) - store { ptr, i64, i64 } %t356, ptr %a357 - call void @finch.drop.arr_S_docs_Doc(ptr %a357) - br label %endif10971 -else10970: - %t358 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.7149, i64 3, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then10972, label %else10973 -then10972: - %t363 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t363, ptr %a364 - call void @finch.drop.arr_S_docs_Doc(ptr %a364) - br label %endif10974 -else10973: - %t365 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t365, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.7151, i64 4, i64 0 }, ptr %a368 - %t369 = call i32 @finch_str_starts(ptr %a366, ptr %a368) - %t370 = icmp ne i32 %t369, 0 - br i1 %t370, label %then10975, label %else10976 -then10975: - %t371 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a372 - call void @finch.drop.arr_S_docs_Doc(ptr %a372) - br label %endif10977 -else10976: - %t373 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t373, ptr %a374 - call void @finch_str_copy(ptr %a375, ptr %a374) - %t376 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t376, ptr %a377 - %t378 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a379 - br label %each.cond10978 -each.cond10978: - %t380 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t381 = load i64, ptr %t380 - %t382 = load i64, ptr %a379 - %t383 = icmp slt i64 %t382, %t381 - br i1 %t383, label %each.body10979, label %each.end10981 -each.body10979: - %t384 = load ptr, ptr %t378 - %t385 = getelementptr inbounds %S.lsp.StructRec, ptr %t384, i64 %t382 - %t386 = load %S.lsp.StructRec, ptr %t385 - store %S.lsp.StructRec %t386, ptr %a387 - %t388 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 1 - %t389 = load { ptr, i64, i64 }, ptr %t388 - %t390 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t389, ptr %a391 - store { ptr, i64, i64 } %t390, ptr %a392 - %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) - %t394 = icmp ne i32 %t393, 0 - br i1 %t394, label %then10982, label %endif10984 -then10982: - %t395 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %t395, i32 0, i32 1 - %t397 = load i64, ptr %t396 - store i64 0, ptr %a398 - br label %for.cond10985 -for.cond10985: - %t399 = load i64, ptr %a398 - %t400 = icmp slt i64 %t399, %t397 - br i1 %t400, label %for.body10986, label %for.end10988 -for.body10986: - %t401 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t402 = load i64, ptr %a398 - %t403 = load { ptr, i64, i64 }, ptr %t401 - %t404 = extractvalue { ptr, i64, i64 } %t403, 1 - %t405 = icmp uge i64 %t402, %t404 - br i1 %t405, label %range10989, label %inrange10990 -range10989: - call void @finch_panic_index(ptr @.str.7152, i64 587, i64 %t402, i64 %t404) - unreachable -inrange10990: - %t406 = extractvalue { ptr, i64, i64 } %t403, 0 - %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t402 - %t408 = load { ptr, i64, i64 }, ptr %t407 - %t409 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 6 - %t410 = load i64, ptr %a398 - %t411 = load { ptr, i64, i64 }, ptr %t409 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 %t410, %t412 - br i1 %t413, label %range10991, label %inrange10992 -range10991: - call void @finch_panic_index(ptr @.str.7153, i64 587, i64 %t410, i64 %t412) - unreachable -inrange10992: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t410 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t408, i64 5, { ptr, i64, i64 } %t416, { ptr, i64, i64 } { ptr @.str.7154, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t417) - store %S.json.Json %t417, ptr %a418 - call void @finch.drop.S_json_Json(ptr %a418) - br label %for.step10987 -for.step10987: - %t419 = load i64, ptr %a398 - %t420 = add i64 %t419, 1 - store i64 %t420, ptr %a398 - br label %for.cond10985 -for.end10988: - br label %endif10984 -endif10984: - br label %each.step10980 -each.step10980: - %t421 = load i64, ptr %a379 - %t422 = add i64 %t421, 1 - store i64 %t422, ptr %a379 - br label %each.cond10978 -each.end10981: - %t423 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a424 - br label %each.cond10993 -each.cond10993: - %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t423, i32 0, i32 1 - %t426 = load i64, ptr %t425 - %t427 = load i64, ptr %a424 - %t428 = icmp slt i64 %t427, %t426 - br i1 %t428, label %each.body10994, label %each.end10996 -each.body10994: - %t429 = load ptr, ptr %t423 - %t430 = getelementptr inbounds %S.lsp.FnRec, ptr %t429, i64 %t427 - %t431 = load %S.lsp.FnRec, ptr %t430 - store %S.lsp.FnRec %t431, ptr %a432 - %t433 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 2 - %t434 = load { ptr, i64, i64 }, ptr %t433 - %t435 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t434, ptr %a436 - store { ptr, i64, i64 } %t435, ptr %a437 - %t438 = call i32 @finch_str_eq(ptr %a436, ptr %a437) - %t439 = icmp ne i32 %t438, 0 - br i1 %t439, label %then10997, label %endif10999 -then10997: - %t440 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 1 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 7 - %t443 = load { ptr, i64, i64 }, ptr %t442 - %t444 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t441, i64 2, { ptr, i64, i64 } %t443, { ptr, i64, i64 } { ptr @.str.7155, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t444) - store %S.json.Json %t444, ptr %a445 - call void @finch.drop.S_json_Json(ptr %a445) - br label %endif10999 -endif10999: - br label %each.step10995 -each.step10995: - %t446 = load i64, ptr %a424 - %t447 = add i64 %t446, 1 - store i64 %t447, ptr %a424 - br label %each.cond10993 -each.end10996: - call void @finch_str_drop(ptr %a377) - br label %endif10977 -endif10977: - br label %endif10974 -endif10974: - br label %endif10971 -endif10971: - %t448 = load %S.json.Json, ptr %a7 - %t449 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t448) - call void @finch_str_drop(ptr %a302) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t449 -endif10875: - store %S.lsp.Names zeroinitializer, ptr %a450 - %t451 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 - store i64 0, ptr %a452 - br label %each.cond11000 -each.cond11000: - %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t451, i32 0, i32 1 - %t454 = load i64, ptr %t453 - %t455 = load i64, ptr %a452 - %t456 = icmp slt i64 %t455, %t454 - br i1 %t456, label %each.body11001, label %each.end11003 -each.body11001: - %t457 = load ptr, ptr %t451 - %t458 = getelementptr inbounds %S.lsp.VarRec, ptr %t457, i64 %t455 - %t459 = load %S.lsp.VarRec, ptr %t458 - store %S.lsp.VarRec %t459, ptr %a460 - %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 3 - %t462 = load i64, ptr %t461 - %t463 = load i64, ptr %a4 - %t464 = icmp sle i64 %t462, %t463 - br label %logic.from11004 -logic.from11004: - br i1 %t464, label %logic.rhs11005, label %logic.end11006 -logic.rhs11005: - %t465 = load i64, ptr %a4 - %t466 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 7 - %t467 = load i64, ptr %t466 - %t468 = add i64 %t467, 1 - %t469 = icmp sle i64 %t465, %t468 - br label %logic.rend11007 -logic.rend11007: - br label %logic.end11006 -logic.end11006: - %t470 = phi i1 [ false, %logic.from11004 ], [ %t469, %logic.rend11007 ] - br label %logic.from11008 -logic.from11008: - br i1 %t470, label %logic.rhs11009, label %logic.end11010 -logic.rhs11009: - %t471 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 5 - %t472 = load { ptr, i64, i64 }, ptr %t471 - %t473 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t472, ptr %a474 - store { ptr, i64, i64 } %t473, ptr %a475 - %t476 = call i32 @finch_str_eq(ptr %a474, ptr %a475) - %t477 = icmp ne i32 %t476, 0 - br label %logic.rend11011 -logic.rend11011: - br label %logic.end11010 -logic.end11010: - %t478 = phi i1 [ false, %logic.from11008 ], [ %t477, %logic.rend11011 ] - br label %logic.from11012 -logic.from11012: - br i1 %t478, label %logic.rhs11013, label %logic.end11014 -logic.rhs11013: - %t479 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t480 = load { ptr, i64, i64 }, ptr %t479 - %t481 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t480) - br label %logic.rend11015 -logic.rend11015: - br label %logic.end11014 -logic.end11014: - %t482 = phi i1 [ false, %logic.from11012 ], [ %t481, %logic.rend11015 ] - br i1 %t482, label %then11016, label %endif11018 -then11016: - %t483 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - %t485 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 1 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t484, i64 6, { ptr, i64, i64 } %t486, { ptr, i64, i64 } { ptr @.str.7156, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t487) - store %S.json.Json %t487, ptr %a488 - call void @finch.drop.S_json_Json(ptr %a488) - br label %endif11018 -endif11018: - br label %each.step11002 -each.step11002: - %t489 = load i64, ptr %a452 - %t490 = add i64 %t489, 1 - store i64 %t490, ptr %a452 - br label %each.cond11000 -each.end11003: - %t491 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a492 - br label %each.cond11019 -each.cond11019: - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i32 0, i32 1 - %t494 = load i64, ptr %t493 - %t495 = load i64, ptr %a492 - %t496 = icmp slt i64 %t495, %t494 - br i1 %t496, label %each.body11020, label %each.end11022 -each.body11020: - %t497 = load ptr, ptr %t491 - %t498 = getelementptr inbounds %S.lsp.FnRec, ptr %t497, i64 %t495 - %t499 = load %S.lsp.FnRec, ptr %t498 - store %S.lsp.FnRec %t499, ptr %a500 - %t501 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 2 - %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 - %t503 = load i64, ptr %t502 - %t504 = icmp eq i64 %t503, 0 - br label %logic.from11023 -logic.from11023: - br i1 %t504, label %logic.rhs11024, label %logic.end11025 -logic.rhs11024: - %t505 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 0 - %t506 = load { ptr, i64, i64 }, ptr %t505 - store { ptr, i64, i64 } %t506, ptr %a507 - store { ptr, i64, i64 } { ptr @.str.7157, i64 0, i64 0 }, ptr %a508 - %t509 = call i32 @finch_str_eq(ptr %a507, ptr %a508) - %t510 = icmp ne i32 %t509, 0 - br label %logic.rend11026 -logic.rend11026: - br label %logic.end11025 -logic.end11025: - %t511 = phi i1 [ false, %logic.from11023 ], [ %t510, %logic.rend11026 ] - br label %logic.from11027 -logic.from11027: - br i1 %t511, label %logic.rhs11028, label %logic.end11029 -logic.rhs11028: - %t512 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t513 = load { ptr, i64, i64 }, ptr %t512 - %t514 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t513) - br label %logic.rend11030 -logic.rend11030: - br label %logic.end11029 -logic.end11029: - %t515 = phi i1 [ false, %logic.from11027 ], [ %t514, %logic.rend11030 ] - br i1 %t515, label %then11031, label %endif11033 -then11031: - %t516 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 7 - %t519 = load { ptr, i64, i64 }, ptr %t518 - %t520 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t517, i64 3, { ptr, i64, i64 } %t519, { ptr, i64, i64 } { ptr @.str.7158, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t520) - store %S.json.Json %t520, ptr %a521 - call void @finch.drop.S_json_Json(ptr %a521) - br label %endif11033 -endif11033: - br label %each.step11021 -each.step11021: - %t522 = load i64, ptr %a492 - %t523 = add i64 %t522, 1 - store i64 %t523, ptr %a492 - br label %each.cond11019 -each.end11022: - %t524 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a525 - br label %each.cond11034 -each.cond11034: - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 - %t527 = load i64, ptr %t526 - %t528 = load i64, ptr %a525 - %t529 = icmp slt i64 %t528, %t527 - br i1 %t529, label %each.body11035, label %each.end11037 -each.body11035: - %t530 = load ptr, ptr %t524 - %t531 = getelementptr inbounds %S.lsp.StructRec, ptr %t530, i64 %t528 - %t532 = load %S.lsp.StructRec, ptr %t531 - store %S.lsp.StructRec %t532, ptr %a533 - %t534 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - store { ptr, i64, i64 } %t535, ptr %a536 - store { ptr, i64, i64 } { ptr @.str.7159, i64 0, i64 0 }, ptr %a537 - %t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537) - %t539 = icmp ne i32 %t538, 0 - br label %logic.from11038 -logic.from11038: - br i1 %t539, label %logic.rhs11039, label %logic.end11040 -logic.rhs11039: - %t540 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t541 = load { ptr, i64, i64 }, ptr %t540 - %t542 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t541) - br label %logic.rend11041 -logic.rend11041: - br label %logic.end11040 -logic.end11040: - %t543 = phi i1 [ false, %logic.from11038 ], [ %t542, %logic.rend11041 ] - br i1 %t543, label %then11042, label %endif11044 -then11042: - %t544 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - %t546 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } { ptr @.str.7160, i64 7, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - %t552 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t545, i64 22, { ptr, i64, i64 } %t551, { ptr, i64, i64 } { ptr @.str.7161, i64 0, i64 0 }) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t552) - store %S.json.Json %t552, ptr %a554 - call void @finch.drop.S_json_Json(ptr %a554) - br label %endif11044 -endif11044: - br label %each.step11036 -each.step11036: - %t555 = load i64, ptr %a525 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a525 - br label %each.cond11034 -each.end11037: - %t557 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a558 - br label %each.cond11045 -each.cond11045: - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i32 0, i32 1 - %t560 = load i64, ptr %t559 - %t561 = load i64, ptr %a558 - %t562 = icmp slt i64 %t561, %t560 - br i1 %t562, label %each.body11046, label %each.end11048 -each.body11046: - %t563 = load ptr, ptr %t557 - %t564 = getelementptr inbounds %S.lsp.EnumRec, ptr %t563, i64 %t561 - %t565 = load %S.lsp.EnumRec, ptr %t564 - store %S.lsp.EnumRec %t565, ptr %a566 - %t567 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 0 - %t568 = load { ptr, i64, i64 }, ptr %t567 - store { ptr, i64, i64 } %t568, ptr %a569 - store { ptr, i64, i64 } { ptr @.str.7162, i64 0, i64 0 }, ptr %a570 - %t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570) - %t572 = icmp ne i32 %t571, 0 - br label %logic.from11049 -logic.from11049: - br i1 %t572, label %logic.rhs11050, label %logic.end11051 -logic.rhs11050: - %t573 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t574 = load { ptr, i64, i64 }, ptr %t573 - %t575 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t574) - br label %logic.rend11052 -logic.rend11052: - br label %logic.end11051 -logic.end11051: - %t576 = phi i1 [ false, %logic.from11049 ], [ %t575, %logic.rend11052 ] - br i1 %t576, label %then11053, label %endif11055 -then11053: - %t577 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t578 = load { ptr, i64, i64 }, ptr %t577 - %t579 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t580 = load { ptr, i64, i64 }, ptr %t579 - store { ptr, i64, i64 } { ptr @.str.7163, i64 5, i64 0 }, ptr %a582 - store { ptr, i64, i64 } %t580, ptr %a583 - call void @finch_str_concat(ptr %a581, ptr %a582, ptr %a583) - %t584 = load { ptr, i64, i64 }, ptr %a581 - %t585 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t578, i64 13, { ptr, i64, i64 } %t584, { ptr, i64, i64 } { ptr @.str.7164, i64 0, i64 0 }) - store { ptr, i64, i64 } %t584, ptr %a586 - call void @finch_str_drop(ptr %a586) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t585) - store %S.json.Json %t585, ptr %a587 - call void @finch.drop.S_json_Json(ptr %a587) - br label %endif11055 -endif11055: - br label %each.step11047 -each.step11047: - %t588 = load i64, ptr %a558 - %t589 = add i64 %t588, 1 - store i64 %t589, ptr %a558 - br label %each.cond11045 -each.end11048: - %t590 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - store i64 0, ptr %a591 - br label %each.cond11056 -each.cond11056: - %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i32 0, i32 1 - %t593 = load i64, ptr %t592 - %t594 = load i64, ptr %a591 - %t595 = icmp slt i64 %t594, %t593 - br i1 %t595, label %each.body11057, label %each.end11059 -each.body11057: - %t596 = load ptr, ptr %t590 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - %t598 = load { ptr, i64, i64 }, ptr %t597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t600) - br i1 %t601, label %then11060, label %endif11062 -then11060: - %t602 = load { ptr, i64, i64 }, ptr %a599 - %t603 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t602, i64 9, { ptr, i64, i64 } { ptr @.str.7165, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.7166, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t603) - store %S.json.Json %t603, ptr %a604 - call void @finch.drop.S_json_Json(ptr %a604) - br label %endif11062 -endif11062: - br label %each.step11058 -each.step11058: - %t605 = load i64, ptr %a591 - %t606 = add i64 %t605, 1 - store i64 %t606, ptr %a591 - br label %each.cond11056 -each.end11059: - %t607 = call { ptr, i64, i64 } @finch.docs.builtins() - store { ptr, i64, i64 } %t607, ptr %a608 - store i64 0, ptr %a609 - br label %each.cond11063 -each.cond11063: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a608, i32 0, i32 1 - %t611 = load i64, ptr %t610 - %t612 = load i64, ptr %a609 - %t613 = icmp slt i64 %t612, %t611 - br i1 %t613, label %each.body11064, label %each.end11066 -each.body11064: - %t614 = load ptr, ptr %a608 - %t615 = getelementptr inbounds %S.docs.Doc, ptr %t614, i64 %t612 - %t616 = load %S.docs.Doc, ptr %t615 - store %S.docs.Doc %t616, ptr %a617 - %t618 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - %t620 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t619) - br i1 %t620, label %then11067, label %endif11069 -then11067: - %t621 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t622 = load { ptr, i64, i64 }, ptr %t621 - %t623 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 1 - %t624 = load { ptr, i64, i64 }, ptr %t623 - %t625 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 2 - %t626 = load { ptr, i64, i64 }, ptr %t625 - %t627 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t622, i64 3, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t627) - store %S.json.Json %t627, ptr %a628 - call void @finch.drop.S_json_Json(ptr %a628) - br label %endif11069 -endif11069: - br label %each.step11065 -each.step11065: - %t629 = load i64, ptr %a609 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a609 - br label %each.cond11063 -each.end11066: - call void @finch.drop.arr_S_docs_Doc(ptr %a608) - %t631 = call { ptr, i64, i64 } @finch.docs.keywords() - store { ptr, i64, i64 } %t631, ptr %a632 - store i64 0, ptr %a633 - br label %each.cond11070 -each.cond11070: - %t634 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t635 = load i64, ptr %t634 - %t636 = load i64, ptr %a633 - %t637 = icmp slt i64 %t636, %t635 - br i1 %t637, label %each.body11071, label %each.end11073 -each.body11071: - %t638 = load ptr, ptr %a632 - %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t636 - %t640 = load { ptr, i64, i64 }, ptr %t639 - store { ptr, i64, i64 } %t640, ptr %a641 - %t642 = load { ptr, i64, i64 }, ptr %a641 - %t643 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t642) - br i1 %t643, label %then11074, label %endif11076 -then11074: - %t644 = load { ptr, i64, i64 }, ptr %a641 - %t645 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t644, i64 14, { ptr, i64, i64 } { ptr @.str.7167, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7168, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t645) - store %S.json.Json %t645, ptr %a646 - call void @finch.drop.S_json_Json(ptr %a646) - br label %endif11076 -endif11076: - br label %each.step11072 -each.step11072: - %t647 = load i64, ptr %a633 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a633 - br label %each.cond11070 -each.end11073: - call void @finch.drop.arr_str(ptr %a632) - %t649 = call { ptr, i64, i64 } @finch.docs.typeNames() - store { ptr, i64, i64 } %t649, ptr %a650 - store i64 0, ptr %a651 - br label %each.cond11077 -each.cond11077: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %a650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body11078, label %each.end11080 -each.body11078: - %t656 = load ptr, ptr %a650 - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %t656, i64 %t654 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t658, ptr %a659 - %t660 = load { ptr, i64, i64 }, ptr %a659 - %t661 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t660) - br i1 %t661, label %then11081, label %endif11083 -then11081: - %t662 = load { ptr, i64, i64 }, ptr %a659 - %t663 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t662, i64 25, { ptr, i64, i64 } { ptr @.str.7169, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7170, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t663) - store %S.json.Json %t663, ptr %a664 - call void @finch.drop.S_json_Json(ptr %a664) - br label %endif11083 -endif11083: - br label %each.step11079 -each.step11079: - %t665 = load i64, ptr %a651 - %t666 = add i64 %t665, 1 - store i64 %t666, ptr %a651 - br label %each.cond11077 -each.end11080: - call void @finch.drop.arr_str(ptr %a650) - %t667 = load %S.json.Json, ptr %a7 - %t668 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t667) - call void @finch.drop.S_lsp_Names(ptr %a450) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t668 -} - -define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.cond11084 -find.cond11084: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body11085, label %find.end11088 -find.body11085: - %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.hit11086, label %find.next11087 -find.hit11086: - store i64 %t9, ptr %a5 - br label %find.end11088 -find.next11087: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond11084 -find.end11088: - %t18 = load i64, ptr %a5 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then11089, label %endif11091 -then11089: - ret i1 false -endif11091: - %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 - %a5 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t2, ptr %a3 - %t4 = call %S.json.Json @finch.json.new_bool(i1 false) - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7171, i64 12, i64 0 }, %S.json.Json %t4) - store %S.json.Json %t4, ptr %a5 - call void @finch.drop.S_json_Json(ptr %a5) - %t6 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7172, i64 5, i64 0 }, %S.json.Json %t6) - %t7 = load %S.json.Json, ptr %a3 - ret %S.json.Json %t7 -} - -define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 %S.lsp.VarRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca i64, align 16 - %a188 = alloca %S.lsp.FnRec, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca %S.json.Json, align 16 - %a209 = alloca %S.json.Json, align 16 - %a211 = alloca %S.json.Json, align 16 - %a213 = alloca i64, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.json.Json, align 16 - %a229 = alloca %S.json.Json, align 16 - %a235 = alloca %S.json.Json, align 16 - %a238 = alloca %S.json.Json, align 16 - %a241 = alloca %S.json.Json, align 16 - %a244 = alloca %S.json.Json, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca %S.docs.Doc, align 16 - %a258 = alloca %S.json.Json, align 16 - %a262 = alloca %S.json.Json, align 16 - %a266 = alloca %S.json.Json, align 16 - %a268 = alloca %S.json.Json, align 16 - %a271 = alloca %S.json.Json, align 16 - %a274 = alloca %S.json.Json, align 16 - %a277 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then11092, label %endif11094 -then11092: - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t18 = load i64, ptr %t17 - store i64 %t18, ptr %a12 - br label %endif11094 -endif11094: - %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.7173, 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.cond11095 -while.cond11095: - %t32 = load i64, ptr %a31 - %t33 = icmp sge i64 %t32, 0 - br i1 %t33, label %while.body11096, label %while.end11097 -while.body11096: - %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 %range11098, label %inrange11099 -range11098: - call void @finch_panic_index(ptr @.str.7174, i64 678, i64 %t34, i64 %t36) - unreachable -inrange11099: - %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.from11100 -logic.from11100: - br i1 %t43, label %logic.end11102, label %logic.rhs11101 -logic.rhs11101: - %t44 = load i8, ptr %a41 - %t45 = icmp eq i8 %t44, 93 - br label %logic.rend11103 -logic.rend11103: - br label %logic.end11102 -logic.end11102: - %t46 = phi i1 [ true, %logic.from11100 ], [ %t45, %logic.rend11103 ] - br i1 %t46, label %then11104, label %else11105 -then11104: - %t47 = load i64, ptr %a25 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a25 - br label %endif11106 -else11105: - %t49 = load i8, ptr %a41 - %t50 = icmp eq i8 %t49, 40 - br label %logic.from11107 -logic.from11107: - br i1 %t50, label %logic.end11109, label %logic.rhs11108 -logic.rhs11108: - %t51 = load i8, ptr %a41 - %t52 = icmp eq i8 %t51, 91 - br label %logic.rend11110 -logic.rend11110: - br label %logic.end11109 -logic.end11109: - %t53 = phi i1 [ true, %logic.from11107 ], [ %t52, %logic.rend11110 ] - br i1 %t53, label %then11111, label %else11112 -then11111: - %t54 = load i64, ptr %a25 - %t55 = icmp eq i64 %t54, 0 - br i1 %t55, label %then11114, label %else11115 -then11114: - %t56 = load i8, ptr %a41 - %t57 = icmp eq i8 %t56, 40 - br i1 %t57, label %then11117, label %endif11119 -then11117: - %t58 = load i64, ptr %a31 - store i64 %t58, ptr %a27 - br label %while.end11097 -endif11119: - br label %endif11116 -else11115: - %t59 = load i64, ptr %a25 - %t60 = sub i64 %t59, 1 - store i64 %t60, ptr %a25 - br label %endif11116 -endif11116: - br label %endif11113 -else11112: - %t61 = load i8, ptr %a41 - %t62 = icmp eq i8 %t61, 44 - br label %logic.from11120 -logic.from11120: - br i1 %t62, label %logic.rhs11121, label %logic.end11122 -logic.rhs11121: - %t63 = load i64, ptr %a25 - %t64 = icmp eq i64 %t63, 0 - br label %logic.rend11123 -logic.rend11123: - br label %logic.end11122 -logic.end11122: - %t65 = phi i1 [ false, %logic.from11120 ], [ %t64, %logic.rend11123 ] - br i1 %t65, label %then11124, label %endif11126 -then11124: - %t66 = load i64, ptr %a26 - %t67 = add i64 %t66, 1 - store i64 %t67, ptr %a26 - br label %endif11126 -endif11126: - br label %endif11113 -endif11113: - br label %endif11106 -endif11106: - %t68 = load i64, ptr %a31 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %a31 - br label %while.cond11095 -while.end11097: - %t70 = load i64, ptr %a27 - %t71 = icmp slt i64 %t70, 0 - br i1 %t71, label %then11127, label %endif11129 -then11127: - %t72 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t72 -endif11129: - %t73 = load i64, ptr %a27 - store i64 %t73, ptr %a74 - %t75 = load i64, ptr %a74 - store i64 %t75, ptr %a76 - br label %while.cond11130 -while.cond11130: - %t77 = load i64, ptr %a76 - %t78 = icmp sgt i64 %t77, 0 - br label %logic.from11133 -logic.from11133: - br i1 %t78, label %logic.rhs11134, label %logic.end11135 -logic.rhs11134: - %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 %range11136, label %inrange11137 -range11136: - call void @finch_panic_index(ptr @.str.7175, i64 700, i64 %t80, i64 %t82) - unreachable -inrange11137: - %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.rend11138 -logic.rend11138: - br label %logic.end11135 -logic.end11135: - %t88 = phi i1 [ false, %logic.from11133 ], [ %t87, %logic.rend11138 ] - br i1 %t88, label %while.body11131, label %while.end11132 -while.body11131: - %t89 = load i64, ptr %a76 - %t90 = sub i64 %t89, 1 - store i64 %t90, ptr %a76 - br label %while.cond11130 -while.end11132: - %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.7176, 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 %then11139, label %endif11141 -then11139: - %t101 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t101 -endif11141: - store { ptr, i64, i64 } { ptr @.str.7177, i64 0, i64 0 }, ptr %a102 - %t103 = load i64, ptr %a76 - %t104 = icmp sgt i64 %t103, 0 - br label %logic.from11142 -logic.from11142: - br i1 %t104, label %logic.rhs11143, label %logic.end11144 -logic.rhs11143: - %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 %range11145, label %inrange11146 -range11145: - call void @finch_panic_index(ptr @.str.7178, i64 708, i64 %t106, i64 %t108) - unreachable -inrange11146: - %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.rend11147 -logic.rend11147: - br label %logic.end11144 -logic.end11144: - %t114 = phi i1 [ false, %logic.from11142 ], [ %t113, %logic.rend11147 ] - br i1 %t114, label %then11148, label %endif11150 -then11148: - %t115 = load i64, ptr %a76 - %t116 = sub i64 %t115, 1 - store i64 %t116, ptr %a117 - br label %while.cond11151 -while.cond11151: - %t118 = load i64, ptr %a117 - %t119 = icmp sgt i64 %t118, 0 - br label %logic.from11154 -logic.from11154: - br i1 %t119, label %logic.rhs11155, label %logic.end11156 -logic.rhs11155: - %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 %range11157, label %inrange11158 -range11157: - call void @finch_panic_index(ptr @.str.7179, i64 711, i64 %t121, i64 %t123) - unreachable -inrange11158: - %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.rend11159 -logic.rend11159: - br label %logic.end11156 -logic.end11156: - %t129 = phi i1 [ false, %logic.from11154 ], [ %t128, %logic.rend11159 ] - br i1 %t129, label %while.body11152, label %while.end11153 -while.body11152: - %t130 = load i64, ptr %a117 - %t131 = sub i64 %t130, 1 - store i64 %t131, ptr %a117 - br label %while.cond11151 -while.end11153: - %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.7180, 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 %S.lsp.VarRec %t144, ptr %a149 - call void @finch.drop.S_lsp_VarRec(ptr %a149) - store { ptr, i64, i64 } %t148, ptr %a150 - %t151 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.7182, i64 4, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_starts(ptr %a152, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from11160 -logic.from11160: - br i1 %t156, label %logic.rhs11161, label %logic.end11162 -logic.rhs11161: - %t157 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.7184, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_ends(ptr %a158, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - br label %logic.rend11163 -logic.rend11163: - br label %logic.end11162 -logic.end11162: - %t163 = phi i1 [ false, %logic.from11160 ], [ %t162, %logic.rend11163 ] - br i1 %t163, label %then11164, label %endif11166 -then11164: - %t164 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t164, ptr %a165 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %a150, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = sub i64 %t168, 1 - call void @finch_str_sub(ptr %a166, ptr %a165, i64 4, i64 %t169, ptr @.str.7185, i64 717) - %t170 = load { ptr, i64, i64 }, ptr %a166 - %t171 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t170, ptr %a150 - store { ptr, i64, i64 } %t171, ptr %a172 - call void @finch_str_drop(ptr %a172) - br label %endif11166 -endif11166: - %t173 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t173, ptr %a174 - call void @finch_str_copy(ptr %a175, ptr %a174) - %t176 = load { ptr, i64, i64 }, ptr %a175 - %t177 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t176, ptr %a102 - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - call void @finch_str_drop(ptr %a150) - call void @finch_str_drop(ptr %a139) - br label %endif11150 -endif11150: - %t179 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a180 - br label %each.cond11167 -each.cond11167: - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t182 = load i64, ptr %t181 - %t183 = load i64, ptr %a180 - %t184 = icmp slt i64 %t183, %t182 - br i1 %t184, label %each.body11168, label %each.end11170 -each.body11168: - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.lsp.FnRec, ptr %t185, i64 %t183 - %t187 = load %S.lsp.FnRec, ptr %t186 - store %S.lsp.FnRec %t187, ptr %a188 - %t189 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } %t191, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br label %logic.from11171 -logic.from11171: - br i1 %t195, label %logic.rhs11172, label %logic.end11173 -logic.rhs11172: - %t196 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 2 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t197, ptr %a199 - store { ptr, i64, i64 } %t198, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.rend11174 -logic.rend11174: - br label %logic.end11173 -logic.end11173: - %t203 = phi i1 [ false, %logic.from11171 ], [ %t202, %logic.rend11174 ] - br i1 %t203, label %then11175, label %endif11177 -then11175: - %t204 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t204, ptr %a205 - %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 7 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t207) - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7186, i64 5, i64 0 }, %S.json.Json %t208) - store %S.json.Json %t208, ptr %a209 - call void @finch.drop.S_json_Json(ptr %a209) - %t210 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t210, ptr %a211 - %t212 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 8 - store i64 0, ptr %a213 - br label %each.cond11178 -each.cond11178: - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t215 = load i64, ptr %t214 - %t216 = load i64, ptr %a213 - %t217 = icmp slt i64 %t216, %t215 - br i1 %t217, label %each.body11179, label %each.end11181 -each.body11179: - %t218 = load ptr, ptr %t212 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a221, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = icmp sgt i64 %t223, 0 - br i1 %t224, label %then11182, label %endif11184 -then11182: - %t225 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t225, ptr %a226 - %t227 = load { ptr, i64, i64 }, ptr %a221 - %t228 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t227) - call void @finch.json.Json.set(ptr %a226, { ptr, i64, i64 } { ptr @.str.7187, i64 5, i64 0 }, %S.json.Json %t228) - store %S.json.Json %t228, ptr %a229 - call void @finch.drop.S_json_Json(ptr %a229) - %t230 = load %S.json.Json, ptr %a226 - call void @finch.json.Json.push(ptr %a211, %S.json.Json %t230) - call void @finch.drop.S_json_Json(ptr %a226) - br label %endif11184 -endif11184: - br label %each.step11180 -each.step11180: - %t231 = load i64, ptr %a213 - %t232 = add i64 %t231, 1 - store i64 %t232, ptr %a213 - br label %each.cond11178 -each.end11181: - %t233 = load %S.json.Json, ptr %a211 - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7188, i64 10, i64 0 }, %S.json.Json %t233) - %t234 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t234, ptr %a235 - %t236 = load %S.json.Json, ptr %a205 - call void @finch.json.Json.push(ptr %a235, %S.json.Json %t236) - %t237 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t237, ptr %a238 - %t239 = load %S.json.Json, ptr %a235 - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7189, i64 10, i64 0 }, %S.json.Json %t239) - %t240 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7190, i64 15, i64 0 }, %S.json.Json %t240) - store %S.json.Json %t240, ptr %a241 - call void @finch.drop.S_json_Json(ptr %a241) - %t242 = load i64, ptr %a26 - %t243 = call %S.json.Json @finch.lsp.num(i64 %t242) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7191, i64 15, i64 0 }, %S.json.Json %t243) - store %S.json.Json %t243, ptr %a244 - call void @finch.drop.S_json_Json(ptr %a244) - %t245 = load %S.json.Json, ptr %a238 - call void @finch.drop.S_json_Json(ptr %a235) - call void @finch.drop.S_json_Json(ptr %a211) - call void @finch.drop.S_json_Json(ptr %a205) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t245 -endif11177: - br label %each.step11169 -each.step11169: - %t246 = load i64, ptr %a180 - %t247 = add i64 %t246, 1 - store i64 %t247, ptr %a180 - br label %each.cond11167 -each.end11170: - %t248 = call { ptr, i64, i64 } @finch.docs.builtins() - %t249 = load { ptr, i64, i64 }, ptr %a97 - %t250 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t248, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch.drop.arr_S_docs_Doc(ptr %a251) - store %S.docs.Doc %t250, ptr %a252 - %t253 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 0 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - %t255 = load i64, ptr %t254 - %t256 = icmp sgt i64 %t255, 0 - br i1 %t256, label %then11185, label %endif11187 -then11185: - %t257 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t257, ptr %a258 - %t259 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %t259 - %t261 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t260) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7192, i64 5, i64 0 }, %S.json.Json %t261) - store %S.json.Json %t261, ptr %a262 - call void @finch.drop.S_json_Json(ptr %a262) - %t263 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 2 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t264) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7193, i64 13, i64 0 }, %S.json.Json %t265) - store %S.json.Json %t265, ptr %a266 - call void @finch.drop.S_json_Json(ptr %a266) - %t267 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t267, ptr %a268 - %t269 = load %S.json.Json, ptr %a258 - call void @finch.json.Json.push(ptr %a268, %S.json.Json %t269) - %t270 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t270, ptr %a271 - %t272 = load %S.json.Json, ptr %a268 - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7194, i64 10, i64 0 }, %S.json.Json %t272) - %t273 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7195, i64 15, i64 0 }, %S.json.Json %t273) - store %S.json.Json %t273, ptr %a274 - call void @finch.drop.S_json_Json(ptr %a274) - %t275 = load i64, ptr %a26 - %t276 = call %S.json.Json @finch.lsp.num(i64 %t275) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7196, i64 15, i64 0 }, %S.json.Json %t276) - store %S.json.Json %t276, ptr %a277 - call void @finch.drop.S_json_Json(ptr %a277) - %t278 = load %S.json.Json, ptr %a271 - call void @finch.drop.S_json_Json(ptr %a268) - call void @finch.drop.S_json_Json(ptr %a258) - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t278 -endif11187: - %t279 = call %S.json.Json @finch.json.new_null() - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t279 -} - -define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { -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.7197, 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.7198, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7199, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7200, 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.7201, i64 3, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7202, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t7 -} - -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 - %a18 = alloca %S.json.Json, align 16 - %a20 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a24 = alloca %S.json.Json, align 16 - %a26 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - %a34 = alloca %S.json.Json, align 16 - %a36 = alloca %S.json.Json, align 16 - %a38 = alloca %S.json.Json, align 16 - %a40 = alloca %S.json.Json, align 16 - %a44 = alloca %S.json.Json, align 16 - %a47 = alloca %S.json.Json, align 16 - %a49 = alloca %S.json.Json, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.json.Json, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.json.Json, align 16 - %a106 = alloca %S.json.Json, align 16 - %a108 = alloca %S.json.Json, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca i32, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca %S.json.Json, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca %S.json.Json, align 16 - %a184 = alloca %S.json.Json, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca %S.json.Json, align 16 - %a212 = alloca %S.json.Json, align 16 - %a215 = alloca i64, align 16 - %a217 = alloca %S.json.Json, align 16 - %a219 = alloca %S.json.Json, align 16 - %a222 = alloca i64, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.json.Json, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.lsp.Analysis, align 16 - %a245 = alloca %S.lsp.Analysis, align 16 - %a247 = alloca %S.lsp.Analysis, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca %S.json.Json, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.json.Json, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.json.Json, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.json.Json, align 16 - %a322 = alloca %S.json.Json, align 16 - %a328 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7203, 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.7204, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store { ptr, i64, i64 } %t4, ptr %a5 - %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7205, 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.7206, 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.7207, 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.arm11189, label %match.next11190 -match.arm11189: - %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.7208, i64 16, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - %t19 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7209, i64 13, i64 0 }, %S.json.Json %t19) - store %S.json.Json %t19, ptr %a20 - call void @finch.drop.S_json_Json(ptr %a20) - %t21 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7210, i64 18, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7211, i64 22, i64 0 }, %S.json.Json %t23) - store %S.json.Json %t23, ptr %a24 - call void @finch.drop.S_json_Json(ptr %a24) - %t25 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t25, ptr %a26 - %t27 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t27, ptr %a28 - %t29 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7212, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a28, %S.json.Json %t29) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - %t31 = load %S.json.Json, ptr %a28 - call void @finch.json.Json.set(ptr %a26, { ptr, i64, i64 } { ptr @.str.7213, i64 17, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a26 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7214, i64 18, i64 0 }, %S.json.Json %t32) - %t33 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t33, ptr %a34 - %t35 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t35, ptr %a36 - %t37 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7215, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t37) - store %S.json.Json %t37, ptr %a38 - call void @finch.drop.S_json_Json(ptr %a38) - %t39 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7216, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t39) - store %S.json.Json %t39, ptr %a40 - call void @finch.drop.S_json_Json(ptr %a40) - %t41 = load %S.json.Json, ptr %a36 - call void @finch.json.Json.set(ptr %a34, { ptr, i64, i64 } { ptr @.str.7217, i64 17, i64 0 }, %S.json.Json %t41) - %t42 = load %S.json.Json, ptr %a34 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7218, i64 21, i64 0 }, %S.json.Json %t42) - %t43 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t43, ptr %a44 - %t45 = load %S.json.Json, ptr %a16 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7219, i64 12, i64 0 }, %S.json.Json %t45) - %t46 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t46, ptr %a47 - %t48 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7221, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a47, { ptr, i64, i64 } { ptr @.str.7220, i64 4, i64 0 }, %S.json.Json %t48) - store %S.json.Json %t48, ptr %a49 - call void @finch.drop.S_json_Json(ptr %a49) - %t50 = load %S.json.Json, ptr %a47 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7222, i64 10, i64 0 }, %S.json.Json %t50) - %t51 = load %S.json.Json, ptr %a9 - %t52 = load %S.json.Json, ptr %a44 - call void @finch.lsp.reply(%S.json.Json %t51, %S.json.Json %t52) - call void @finch.drop.S_json_Json(ptr %a47) - call void @finch.drop.S_json_Json(ptr %a44) - call void @finch.drop.S_json_Json(ptr %a36) - call void @finch.drop.S_json_Json(ptr %a34) - call void @finch.drop.S_json_Json(ptr %a28) - call void @finch.drop.S_json_Json(ptr %a26) - call void @finch.drop.S_json_Json(ptr %a16) - br label %match.end11188 -match.next11190: - store { ptr, i64, i64 } %t10, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.7223, i64 8, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %match.arm11191, label %match.next11192 -match.arm11191: - %t57 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 - store i1 true, ptr %t57 - %t58 = load %S.json.Json, ptr %a9 - %t59 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t58, %S.json.Json %t59) - store %S.json.Json %t59, ptr %a60 - call void @finch.drop.S_json_Json(ptr %a60) - br label %match.end11188 -match.next11192: - store { ptr, i64, i64 } %t10, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.7224, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %match.arm11193, label %match.next11194 -match.arm11193: - %t65 = trunc i64 0 to i32 - %t66 = call i32 @fflush(ptr null) - call void @exit(i32 %t65) - br label %match.end11188 -match.next11194: - store { ptr, i64, i64 } %t10, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.7225, i64 20, i64 0 }, ptr %a68 - %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) - %t70 = icmp ne i32 %t69, 0 - br i1 %t70, label %match.arm11195, label %match.next11196 -match.arm11195: - %t71 = load %S.json.Json, ptr %a7 - %t72 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t71) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load %S.json.Json, ptr %a7 - %t75 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t74) - %t76 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a78 - store i32 0, ptr %a79 - %t80 = call i64 @finch_map_slot(ptr %t76, ptr %a78, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a79) - %t81 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t76, i32 0, i32 0 - %t82 = load ptr, ptr %t81 - %t83 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i64 %t80 - %t84 = load i32, ptr %a79 - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %map.new11197, label %map.have11198 -map.new11197: - %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 1 - call void @finch_str_copy(ptr %t86, ptr %a78) - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t87 - br label %map.have11198 -map.have11198: - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t75, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t91) - call void @finch_str_drop(ptr %a73) - br label %match.end11188 -match.next11196: - store { ptr, i64, i64 } %t10, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.7226, i64 22, i64 0 }, ptr %a93 - %t94 = call i32 @finch_str_eq(ptr %a92, ptr %a93) - %t95 = icmp ne i32 %t94, 0 - br i1 %t95, label %match.arm11199, label %match.next11200 -match.arm11199: - %t96 = load %S.json.Json, ptr %a7 - %t97 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t96) - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7227, i64 14, i64 0 }) - store %S.json.Json %t99, ptr %a100 - %t101 = call i64 @finch.json.Json.len(ptr %a100) - %t102 = icmp sgt i64 %t101, 0 - br i1 %t102, label %then11201, label %endif11203 -then11201: - %t103 = call i64 @finch.json.Json.len(ptr %a100) - %t104 = sub i64 %t103, 1 - %t105 = call %S.json.Json @finch.json.Json.at(ptr %a100, i64 %t104) - store %S.json.Json %t105, ptr %a106 - %t107 = call %S.json.Json @finch.json.Json.get(ptr %a106, { ptr, i64, i64 } { ptr @.str.7228, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a106) - store %S.json.Json %t107, ptr %a108 - %t109 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a108, { ptr, i64, i64 } { ptr @.str.7229, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a108) - %t110 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t111 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t111, ptr %a112 - store i32 0, ptr %a113 - %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a113) - %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 - %t116 = load ptr, ptr %t115 - %t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t116, i64 %t114 - %t118 = load i32, ptr %a113 - %t119 = icmp ne i32 %t118, 0 - br i1 %t119, label %map.new11204, label %map.have11205 -map.new11204: - %t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 1 - call void @finch_str_copy(ptr %t120, ptr %a112) - %t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t121 - br label %map.have11205 -map.have11205: - %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - %t123 = load { ptr, i64, i64 }, ptr %t122 - store { ptr, i64, i64 } %t109, ptr %t122 - store { ptr, i64, i64 } %t123, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) - br label %endif11203 -endif11203: - call void @finch.drop.S_json_Json(ptr %a100) - call void @finch_str_drop(ptr %a98) - br label %match.end11188 -match.next11200: - store { ptr, i64, i64 } %t10, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.7230, i64 20, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br i1 %t129, label %match.arm11206, label %match.next11207 -match.arm11206: - %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 %then11208, label %endif11210 -then11208: - %t138 = load { ptr, i64, i64 }, ptr %a132 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t138) - br label %endif11210 -endif11210: - call void @finch_str_drop(ptr %a132) - br label %match.end11188 -match.next11207: - store { ptr, i64, i64 } %t10, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.7231, i64 21, i64 0 }, ptr %a140 - %t141 = call i32 @finch_str_eq(ptr %a139, ptr %a140) - %t142 = icmp ne i32 %t141, 0 - br i1 %t142, label %match.arm11211, label %match.next11212 -match.arm11211: - %t143 = load %S.json.Json, ptr %a7 - %t144 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t143) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t147 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t147, ptr %a148 - %t149 = call i64 @finch_map_find(ptr %t146, ptr %a148, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t150 = icmp sge i64 %t149, 0 - br i1 %t150, label %remove.hit11213, label %remove.end11214 -remove.hit11213: - %t151 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t146, i32 0, i32 0 - %t152 = load ptr, ptr %t151 - %t153 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t152, i64 %t149 - %t154 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 1 - call void @finch_str_drop(ptr %t154) - %t155 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 2 - call void @finch_str_drop(ptr %t155) - call void @finch_map_remove_at(ptr %t146, i64 %t149, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) - br label %remove.end11214 -remove.end11214: - %t156 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t157 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t157, ptr %a158 - %t159 = call i64 @finch_map_find(ptr %t156, ptr %a158, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t160 = icmp sge i64 %t159, 0 - br i1 %t160, label %remove.hit11215, label %remove.end11216 -remove.hit11215: - %t161 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t156, i32 0, i32 0 - %t162 = load ptr, ptr %t161 - %t163 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t162, i64 %t159 - %t164 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 1 - call void @finch_str_drop(ptr %t164) - %t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t165) - call void @finch_map_remove_at(ptr %t156, i64 %t159, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11216 -remove.end11216: - %t166 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t167 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = call i64 @finch_map_find(ptr %t166, ptr %a168, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t170 = icmp sge i64 %t169, 0 - br i1 %t170, label %remove.hit11217, label %remove.end11218 -remove.hit11217: - %t171 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t166, i32 0, i32 0 - %t172 = load ptr, ptr %t171 - %t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t172, i64 %t169 - %t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 1 - call void @finch_str_drop(ptr %t174) - %t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t175) - call void @finch_map_remove_at(ptr %t166, i64 %t169, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11218 -remove.end11218: - %t176 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t176, ptr %a177 - %t178 = load { ptr, i64, i64 }, ptr %a145 - %t179 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t178) - %t180 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7232, i64 3, i64 0 }, %S.json.Json %t180) - store %S.json.Json %t180, ptr %a182 - call void @finch.drop.S_json_Json(ptr %a182) - %t183 = call %S.json.Json @finch.json.new_list() - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7233, i64 11, i64 0 }, %S.json.Json %t183) - store %S.json.Json %t183, ptr %a184 - call void @finch.drop.S_json_Json(ptr %a184) - %t185 = load %S.json.Json, ptr %a177 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7234, i64 31, i64 0 }, %S.json.Json %t185) - call void @finch.drop.S_json_Json(ptr %a177) - call void @finch_str_drop(ptr %a145) - br label %match.end11188 -match.next11212: - store { ptr, i64, i64 } %t10, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.7235, i64 18, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br i1 %t189, label %match.arm11219, label %match.or11221 -match.or11221: - store { ptr, i64, i64 } %t10, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.7236, i64 23, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br i1 %t193, label %match.arm11219, label %match.or11222 -match.or11222: - store { ptr, i64, i64 } %t10, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.7237, i64 23, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %match.arm11219, label %match.or11223 -match.or11223: - store { ptr, i64, i64 } %t10, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.7238, i64 27, i64 0 }, ptr %a199 - %t200 = call i32 @finch_str_eq(ptr %a198, ptr %a199) - %t201 = icmp ne i32 %t200, 0 - br i1 %t201, label %match.arm11219, label %match.or11224 -match.or11224: - store { ptr, i64, i64 } %t10, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.7239, i64 26, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %match.arm11219, label %match.next11220 -match.arm11219: - %t206 = load %S.json.Json, ptr %a7 - %t207 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t206) - store { ptr, i64, i64 } %t207, ptr %a208 - %t209 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7240, i64 8, i64 0 }) - store %S.json.Json %t209, ptr %a210 - %t211 = call %S.json.Json @finch.json.Json.get(ptr %a210, { ptr, i64, i64 } { ptr @.str.7241, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a210) - store %S.json.Json %t211, ptr %a212 - %t213 = call i64 @finch.json.Json.int_or(ptr %a212, i64 0) - call void @finch.drop.S_json_Json(ptr %a212) - %t214 = add i64 %t213, 1 - store i64 %t214, ptr %a215 - %t216 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7242, i64 8, i64 0 }) - store %S.json.Json %t216, ptr %a217 - %t218 = call %S.json.Json @finch.json.Json.get(ptr %a217, { ptr, i64, i64 } { ptr @.str.7243, i64 9, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a217) - store %S.json.Json %t218, ptr %a219 - %t220 = call i64 @finch.json.Json.int_or(ptr %a219, i64 0) - call void @finch.drop.S_json_Json(ptr %a219) - %t221 = add i64 %t220, 1 - store i64 %t221, ptr %a222 - %t223 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t224 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t224, ptr %a225 - %t226 = call i64 @finch_map_find(ptr %t223, ptr %a225, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t227 = icmp sge i64 %t226, 0 - %t228 = xor i1 %t227, true - br i1 %t228, label %then11225, label %endif11227 -then11225: - %t229 = load %S.json.Json, ptr %a9 - %t230 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t229, %S.json.Json %t230) - store %S.json.Json %t230, ptr %a231 - call void @finch.drop.S_json_Json(ptr %a231) - call void @finch_str_drop(ptr %a208) - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -endif11227: - %t232 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t233 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = call i64 @finch_map_find(ptr %t232, ptr %a234, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t236 = icmp slt i64 %t235, 0 - br i1 %t236, label %map.missing11228, label %map.found11229 -map.missing11228: - store { ptr, i64, i64 } zeroinitializer, ptr %a237 - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_buf_str(ptr %a237, ptr %a238, i32 1) - call void @finch_map_missing(ptr @.str.7244, i64 842, ptr %a237) - unreachable -map.found11229: - %t239 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t232, i32 0, i32 0 - %t240 = load ptr, ptr %t239 - %t241 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t240, i64 %t235 - %t242 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t241, i32 0, i32 2 - %t243 = load %S.lsp.Analysis, ptr %t242 - store %S.lsp.Analysis %t243, ptr %a244 - call void @finch.copy.S_lsp_Analysis(ptr %a245, ptr %a244) - %t246 = load %S.lsp.Analysis, ptr %a245 - store %S.lsp.Analysis %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.7245, i64 0, i64 0 }, ptr %a248 - %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t250 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = call i64 @finch_map_find(ptr %t249, ptr %a251, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t253 = icmp sge i64 %t252, 0 - br i1 %t253, label %then11230, label %endif11232 -then11230: - %t254 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t255 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t255, ptr %a256 - %t257 = call i64 @finch_map_find(ptr %t254, ptr %a256, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t258 = icmp slt i64 %t257, 0 - br i1 %t258, label %map.missing11233, label %map.found11234 -map.missing11233: - store { ptr, i64, i64 } zeroinitializer, ptr %a259 - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_buf_str(ptr %a259, ptr %a260, i32 1) - call void @finch_map_missing(ptr @.str.7246, i64 845, ptr %a259) - unreachable -map.found11234: - %t261 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t254, i32 0, i32 0 - %t262 = load ptr, ptr %t261 - %t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t262, i64 %t257 - %t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t263, i32 0, i32 2 - %t265 = load { ptr, i64, i64 }, ptr %t264 - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_copy(ptr %a267, ptr %a266) - %t268 = load { ptr, i64, i64 }, ptr %a267 - %t269 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t268, ptr %a248 - store { ptr, i64, i64 } %t269, ptr %a270 - call void @finch_str_drop(ptr %a270) - br label %endif11232 -endif11232: - %t271 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t271, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.7247, i64 18, i64 0 }, ptr %a273 - %t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273) - %t275 = icmp ne i32 %t274, 0 - br i1 %t275, label %match.arm11236, label %match.next11237 -match.arm11236: - %t276 = load %S.json.Json, ptr %a9 - %t277 = load %S.lsp.Analysis, ptr %a247 - %t278 = load { ptr, i64, i64 }, ptr %a208 - %t279 = load i64, ptr %a215 - %t280 = load i64, ptr %a222 - %t281 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t277, { ptr, i64, i64 } %t278, i64 %t279, i64 %t280) - call void @finch.lsp.reply(%S.json.Json %t276, %S.json.Json %t281) - store %S.json.Json %t281, ptr %a282 - call void @finch.drop.S_json_Json(ptr %a282) - br label %match.end11235 -match.next11237: - store { ptr, i64, i64 } %t271, ptr %a283 - store { ptr, i64, i64 } { ptr @.str.7248, i64 23, i64 0 }, ptr %a284 - %t285 = call i32 @finch_str_eq(ptr %a283, ptr %a284) - %t286 = icmp ne i32 %t285, 0 - br i1 %t286, label %match.arm11238, label %match.next11239 -match.arm11238: - %t287 = load %S.json.Json, ptr %a9 - %t288 = load %S.lsp.Analysis, ptr %a247 - %t289 = load { ptr, i64, i64 }, ptr %a208 - %t290 = load i64, ptr %a215 - %t291 = load i64, ptr %a222 - %t292 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t288, { ptr, i64, i64 } %t289, i64 %t290, i64 %t291) - call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t292) - store %S.json.Json %t292, ptr %a293 - call void @finch.drop.S_json_Json(ptr %a293) - br label %match.end11235 -match.next11239: - store { ptr, i64, i64 } %t271, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.7249, i64 23, i64 0 }, ptr %a295 - %t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295) - %t297 = icmp ne i32 %t296, 0 - br i1 %t297, label %match.arm11240, label %match.next11241 -match.arm11240: - %t298 = load %S.json.Json, ptr %a9 - %t299 = load %S.lsp.Analysis, ptr %a247 - %t300 = load { ptr, i64, i64 }, ptr %a248 - %t301 = load { ptr, i64, i64 }, ptr %a208 - %t302 = load i64, ptr %a215 - %t303 = load i64, ptr %a222 - %t304 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t299, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t301, i64 %t302, i64 %t303) - call void @finch.lsp.reply(%S.json.Json %t298, %S.json.Json %t304) - store %S.json.Json %t304, ptr %a305 - call void @finch.drop.S_json_Json(ptr %a305) - br label %match.end11235 -match.next11241: - store { ptr, i64, i64 } %t271, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.7250, i64 27, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br i1 %t309, label %match.arm11242, label %match.next11243 -match.arm11242: - %t310 = load %S.json.Json, ptr %a9 - %t311 = load %S.lsp.Analysis, ptr %a247 - %t312 = load { ptr, i64, i64 }, ptr %a208 - %t313 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t311, { ptr, i64, i64 } %t312) - call void @finch.lsp.reply(%S.json.Json %t310, %S.json.Json %t313) - store %S.json.Json %t313, ptr %a314 - call void @finch.drop.S_json_Json(ptr %a314) - br label %match.end11235 -match.next11243: - br label %match.arm11244 -match.arm11244: - %t315 = load %S.json.Json, ptr %a9 - %t316 = load %S.lsp.Analysis, ptr %a247 - %t317 = load { ptr, i64, i64 }, ptr %a248 - %t318 = load { ptr, i64, i64 }, ptr %a208 - %t319 = load i64, ptr %a215 - %t320 = load i64, ptr %a222 - %t321 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t316, { ptr, i64, i64 } %t317, { ptr, i64, i64 } %t318, i64 %t319, i64 %t320) - call void @finch.lsp.reply(%S.json.Json %t315, %S.json.Json %t321) - store %S.json.Json %t321, ptr %a322 - call void @finch.drop.S_json_Json(ptr %a322) - br label %match.end11235 -match.end11235: - call void @finch_str_drop(ptr %a248) - call void @finch.drop.S_lsp_Analysis(ptr %a247) - call void @finch_str_drop(ptr %a208) - br label %match.end11188 -match.next11220: - br label %match.arm11246 -match.arm11246: - %t323 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 - %t324 = load i32, ptr %t323 - %t325 = icmp ne i32 %t324, 0 - br i1 %t325, label %then11248, label %endif11250 -then11248: - %t326 = load %S.json.Json, ptr %a9 - %t327 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t326, %S.json.Json %t327) - store %S.json.Json %t327, ptr %a328 - call void @finch.drop.S_json_Json(ptr %a328) - br label %endif11250 -endif11250: - br label %match.end11188 -match.end11188: - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.map_str_S_lsp_Analysis(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond11256 -n.cond11256: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body11257, label %n.end11258 -n.body11257: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live11259, label %entry.next11260 -entry.live11259: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t13) - br label %entry.next11260 -entry.next11260: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond11256 -n.end11258: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Server(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -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 - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lsp.Server, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - call void @finch.host.binaryStdio() - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_copy(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - %t6 = insertvalue %S.lsp.Server zeroinitializer, { ptr, i64, i64 } %t5, 0 - %t7 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.7251, i64 11, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - %t22 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t21, 1 - store %S.lsp.Server %t22, ptr %a23 - br label %while.cond11251 -while.cond11251: - br label %while.body11252 -while.body11252: - %t24 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() - %t25 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 0 - %t26 = xor i1 %t25, true - %t27 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 2 - %t28 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 1 - br i1 %t26, label %or.failed11254, label %or.ok11255 -or.failed11254: - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %while.end11253 -or.ok11255: - store %S.json.Json %t28, ptr %a30 - %t31 = load %S.json.Json, ptr %a30 - call void @finch.lsp.Server.answer(ptr %a23, %S.json.Json %t31) - call void @finch.drop.S_json_Json(ptr %a30) - br label %while.cond11251 -while.end11253: - %t32 = getelementptr inbounds %S.lsp.Server, ptr %a23, i32 0, i32 1 - %t33 = load { ptr, i64, i64 }, ptr %t32 - call void @finch.host.removeTree({ ptr, i64, i64 } %t33) - call void @finch.drop.S_lsp_Server(ptr %a23) - ret i64 0 -} - -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.arm11262, label %match.or11264 -match.or11264: - %t4 = icmp eq i32 %t2, 5 - br i1 %t4, label %match.arm11262, label %match.next11263 -match.arm11262: - %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.from11265 -match.from11265: - br label %match.end11261 -match.next11263: - %t8 = icmp eq i32 %t2, 3 - br i1 %t8, label %match.arm11266, label %match.next11267 -match.arm11266: - %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.from11268 -match.from11268: - br label %match.end11261 -match.next11267: - br label %match.arm11269 -match.arm11269: - br label %match.from11271 -match.from11271: - br label %match.end11261 -match.end11261: - %t12 = phi i64 [ %t7, %match.from11265 ], [ %t11, %match.from11268 ], [ 0, %match.from11271 ] - 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.from11272 -logic.from11272: - br i1 %t4, label %logic.rhs11273, label %logic.end11274 -logic.rhs11273: - %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.cond11275 -find.cond11275: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body11276, label %find.end11279 -find.body11276: - %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.hit11277, label %find.next11278 -find.hit11277: - store i64 %t12, ptr %a8 - br label %find.end11279 -find.next11278: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond11275 -find.end11279: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - br label %logic.rend11280 -logic.rend11280: - br label %logic.end11274 -logic.end11274: - %t23 = phi i1 [ false, %logic.from11272 ], [ %t22, %logic.rend11280 ] - ret i1 %t23 -} - -define internal void @finch.copy.arr_S_json_Json(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond11294 -n.cond11294: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body11295, label %n.end11296 -n.body11295: - %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.cond11294 -n.end11296: - ret void -} - -define internal void @finch.copy.S_json_Json(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.json.Json, ptr %src - store %S.json.Json %t1, ptr %dst - %t2 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 3 - %t3 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 3 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_json_Json(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 5 - %t7 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - ret void -} - -define internal %S.json.Json @finch.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 %then11281, label %endif11283 -then11281: - %t5 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t5 -endif11283: - %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.cond11284 -find.cond11284: - %t13 = load i64, ptr %a12 - %t14 = icmp slt i64 %t13, %t10 - br i1 %t14, label %find.body11285, label %find.end11288 -find.body11285: - %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.hit11286, label %find.next11287 -find.hit11286: - store i64 %t13, ptr %a9 - br label %find.end11288 -find.next11287: - %t21 = add i64 %t13, 1 - store i64 %t21, ptr %a12 - br label %find.cond11284 -find.end11288: - %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 %then11289, label %endif11291 -then11289: - %t26 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t26 -endif11291: - %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 %range11292, label %inrange11293 -range11292: - call void @finch_panic_index(ptr @.str.7252, i64 84, i64 %t28, i64 %t30) - unreachable -inrange11293: - %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.from11297 -logic.from11297: - br i1 %t4, label %logic.end11299, label %logic.rhs11298 -logic.rhs11298: - %t5 = load i64, ptr %a1 - %t6 = icmp slt i64 %t5, 0 - br label %logic.rend11300 -logic.rend11300: - br label %logic.end11299 -logic.end11299: - %t7 = phi i1 [ true, %logic.from11297 ], [ %t6, %logic.rend11300 ] - br label %logic.from11301 -logic.from11301: - br i1 %t7, label %logic.end11303, label %logic.rhs11302 -logic.rhs11302: - %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.rend11304 -logic.rend11304: - br label %logic.end11303 -logic.end11303: - %t13 = phi i1 [ true, %logic.from11301 ], [ %t12, %logic.rend11304 ] - br i1 %t13, label %then11305, label %endif11307 -then11305: - %t14 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t14 -endif11307: - %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 %range11308, label %inrange11309 -range11308: - call void @finch_panic_index(ptr @.str.7253, i64 92, i64 %t16, i64 %t18) - unreachable -inrange11309: - %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 %then11310, label %endif11312 -then11310: - %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 -endif11312: - %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 %then11313, label %endif11315 -then11313: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 - %t6 = load double, ptr %t5 - ret double %t6 -endif11315: - %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 %then11316, label %endif11318 -then11316: - %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 -endif11318: - %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 %then11319, label %endif11321 -then11319: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 - %t6 = load i1, ptr %t5 - ret i1 %t6 -endif11321: - %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 - %a35 = alloca %S.json.Json, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.json.Json, align 16 - %a50 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %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.cond11322 -find.cond11322: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t7 - br i1 %t11, label %find.body11323, label %find.end11326 -find.body11323: - %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.hit11324, label %find.next11325 -find.hit11324: - store i64 %t10, ptr %a6 - br label %find.end11326 -find.next11325: - %t18 = add i64 %t10, 1 - store i64 %t18, ptr %a9 - br label %find.cond11322 -find.end11326: - %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 %then11327, label %endif11329 -then11327: - %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 %range11330, label %inrange11331 -range11330: - call void @finch_panic_index(ptr @.str.7254, i64 140, i64 %t25, i64 %t27) - unreachable -inrange11331: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds %S.json.Json, ptr %t29, i64 %t25 - store %S.json.Json %t23, ptr %a31 - call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) - %t33 = load %S.json.Json, ptr %a32 - %t34 = load %S.json.Json, ptr %t30 - store %S.json.Json %t33, ptr %t30 - store %S.json.Json %t34, ptr %a35 - call void @finch.drop.S_json_Json(ptr %a35) - ret void -endif11329: - %t36 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_copy(ptr %a40, ptr %a39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - %t42 = load i64, ptr %t37 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t36 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } %t41, ptr %t45 - store i64 %t43, ptr %t37 - %t46 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load %S.json.Json, ptr %a2 - store %S.json.Json %t48, ptr %a49 - call void @finch.copy.S_json_Json(ptr %a50, ptr %a49) - %t51 = load %S.json.Json, ptr %a50 - %t52 = load i64, ptr %t47 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t46, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t46 - %t55 = getelementptr inbounds %S.json.Json, ptr %t54, i64 %t52 - store %S.json.Json %t51, ptr %t55 - store i64 %t53, ptr %t47 - ret void -} - -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.7255, 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.cond11332 -each.cond11332: - %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.body11333, label %each.end11335 -each.body11333: - %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 %then11336, label %else11337 -then11336: - %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.7256, i64 2, i64 0 }, ptr %t27 - store i64 %t25, ptr %t23 - br label %endif11338 -else11337: - %t28 = load i8, ptr %a17 - %t29 = icmp eq i8 %t28, 92 - br i1 %t29, label %then11339, label %else11340 -then11339: - %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.7257, i64 2, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif11341 -else11340: - %t35 = load i8, ptr %a17 - %t36 = icmp eq i8 %t35, 10 - br i1 %t36, label %then11342, label %else11343 -then11342: - %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.7258, i64 2, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - br label %endif11344 -else11343: - %t42 = load i8, ptr %a17 - %t43 = icmp eq i8 %t42, 13 - br i1 %t43, label %then11345, label %else11346 -then11345: - %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.7259, i64 2, i64 0 }, ptr %t48 - store i64 %t46, ptr %t44 - br label %endif11347 -else11346: - %t49 = load i8, ptr %a17 - %t50 = icmp eq i8 %t49, 9 - br i1 %t50, label %then11348, label %else11349 -then11348: - %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.7260, i64 2, i64 0 }, ptr %t55 - store i64 %t53, ptr %t51 - br label %endif11350 -else11349: - %t56 = load i64, ptr %a20 - %t57 = icmp slt i64 %t56, 32 - br i1 %t57, label %then11351, label %else11352 -then11351: - %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.7261, i64 4, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a20 - %t68 = srem i64 %t67, 16 - %t69 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t68) - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - %t76 = load i64, ptr %t58 - %t77 = add i64 %t76, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t77, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t78 = load ptr, ptr %a8 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 %t76 - store { ptr, i64, i64 } %t75, ptr %t79 - store i64 %t77, ptr %t58 - br label %endif11353 -else11352: - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t81 = load i8, ptr %a17 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load i64, ptr %t80 - %t85 = add i64 %t84, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t85, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t86 = load ptr, ptr %a8 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 %t84 - store { ptr, i64, i64 } %t83, ptr %t87 - store i64 %t85, ptr %t80 - br label %endif11353 -endif11353: - br label %endif11350 -endif11350: - br label %endif11347 -endif11347: - br label %endif11344 -endif11344: - br label %endif11341 -endif11341: - br label %endif11338 -endif11338: - br label %each.step11334 -each.step11334: - %t88 = load i64, ptr %a9 - %t89 = add i64 %t88, 1 - store i64 %t89, ptr %a9 - br label %each.cond11332 -each.end11335: - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t91 = load i64, ptr %t90 - %t92 = add i64 %t91, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t93 = load ptr, ptr %a8 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 - store { ptr, i64, i64 } { ptr @.str.7262, i64 1, i64 0 }, ptr %t94 - store i64 %t92, ptr %t90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7263, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a8, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - call void @finch.drop.arr_str(ptr %a8) - ret { ptr, i64, i64 } %t98 -} - -define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { -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.7264, 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 %range11354, label %inrange11355 -range11354: - call void @finch_panic_index(ptr @.str.7265, i64 175, i64 %t3, i64 %t5) - unreachable -inrange11355: - %t7 = extractvalue { ptr, i64, i64 } %t4, 0 - %t8 = getelementptr inbounds i8, ptr %t7, i64 %t3 - %t9 = load i8, ptr %t8 - call void @finch_str_from_char(ptr %a10, i8 signext %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t11 -} - -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.from11356 -logic.from11356: - br i1 %t6, label %logic.rhs11357, label %logic.end11358 -logic.rhs11357: - %t7 = load double, ptr %a1 - %t8 = fneg double 1000000000000000.0 - %t9 = fcmp ogt double %t7, %t8 - br label %logic.rend11359 -logic.rend11359: - br label %logic.end11358 -logic.end11358: - %t10 = phi i1 [ false, %logic.from11356 ], [ %t9, %logic.rend11359 ] - br label %logic.from11360 -logic.from11360: - br i1 %t10, label %logic.rhs11361, label %logic.end11362 -logic.rhs11361: - %t11 = load double, ptr %a1 - %t12 = fcmp olt double %t11, 1000000000000000.0 - br label %logic.rend11363 -logic.rend11363: - br label %logic.end11362 -logic.end11362: - %t13 = phi i1 [ false, %logic.from11360 ], [ %t12, %logic.rend11363 ] - br i1 %t13, label %then11364, label %endif11366 -then11364: - %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 -endif11366: - %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 - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca i64, align 16 - %a114 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a203 = alloca i64, align 16 - %a204 = alloca %S.json.Json, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store ptr %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7266, i64 0, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7267, i64 0, i64 0 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.7268, i64 1, i64 0 }, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.7269, 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 %then11367, label %endif11369 -then11367: - %t12 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7270, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a3 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.7271, i64 2, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif11369 -endif11369: - %t24 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 - %t25 = load i32, ptr %t24 - %t26 = icmp eq i32 %t25, 0 - br i1 %t26, label %match.arm11371, label %match.next11372 -match.arm11371: - %t27 = load ptr, ptr %a4 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic11373, label %ok11374 -panic11373: - call void @finch_panic(ptr @.str.7272, i64 200, ptr @.str.7273) - unreachable -ok11374: - %t29 = getelementptr inbounds %S.json.Writer, ptr %t27, i32 0, i32 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 - %t31 = load i64, ptr %t30 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t29, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t29 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 - store { ptr, i64, i64 } { ptr @.str.7274, i64 4, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %match.end11370 -match.next11372: - %t35 = icmp eq i32 %t25, 1 - br i1 %t35, label %match.arm11375, label %match.next11376 -match.arm11375: - %t36 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 - %t37 = load i1, ptr %t36 - br i1 %t37, label %then11377, label %else11378 -then11377: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic11380, label %ok11381 -panic11380: - call void @finch_panic(ptr @.str.7275, i64 203, ptr @.str.7276) - unreachable -ok11381: - %t40 = getelementptr inbounds %S.json.Writer, ptr %t38, i32 0, i32 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t40 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } { ptr @.str.7277, i64 4, i64 0 }, ptr %t45 - store i64 %t43, ptr %t41 - br label %endif11379 -else11378: - %t46 = load ptr, ptr %a4 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic11382, label %ok11383 -panic11382: - call void @finch_panic(ptr @.str.7278, i64 205, ptr @.str.7279) - unreachable -ok11383: - %t48 = getelementptr inbounds %S.json.Writer, ptr %t46, i32 0, i32 0 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load i64, ptr %t49 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t51, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t48 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t50 - store { ptr, i64, i64 } { ptr @.str.7280, i64 5, i64 0 }, ptr %t53 - store i64 %t51, ptr %t49 - br label %endif11379 -endif11379: - br label %match.end11370 -match.next11376: - %t54 = icmp eq i32 %t25, 2 - br i1 %t54, label %match.arm11384, label %match.next11385 -match.arm11384: - %t55 = load ptr, ptr %a4 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic11386, label %ok11387 -panic11386: - call void @finch_panic(ptr @.str.7281, i64 208, ptr @.str.7282) - unreachable -ok11387: - %t57 = getelementptr inbounds %S.json.Writer, ptr %t55, i32 0, i32 0 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 - %t60 = load double, ptr %t59 - %t61 = call { ptr, i64, i64 } @finch.json.number_text(double %t60) - %t62 = load i64, ptr %t58 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t57 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t58 - br label %match.end11370 -match.next11385: - %t66 = icmp eq i32 %t25, 3 - br i1 %t66, label %match.arm11388, label %match.next11389 -match.arm11388: - %t67 = load ptr, ptr %a4 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic11390, label %ok11391 -panic11390: - call void @finch_panic(ptr @.str.7283, i64 209, ptr @.str.7284) - unreachable -ok11391: - %t69 = getelementptr inbounds %S.json.Writer, ptr %t67, i32 0, i32 0 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 - %t71 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 - %t72 = load { ptr, i64, i64 }, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t72) - %t74 = load i64, ptr %t70 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t69, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t69 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t70 - br label %match.end11370 -match.next11389: - %t78 = icmp eq i32 %t25, 4 - br i1 %t78, label %match.arm11392, label %match.next11393 -match.arm11392: - %t79 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load i64, ptr %t80 - %t82 = icmp eq i64 %t81, 0 - br i1 %t82, label %then11394, label %endif11396 -then11394: - %t83 = load ptr, ptr %a4 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic11397, label %ok11398 -panic11397: - call void @finch_panic(ptr @.str.7285, i64 212, ptr @.str.7286) - unreachable -ok11398: - %t85 = getelementptr inbounds %S.json.Writer, ptr %t83, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t85, i64 %t88, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t85 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i64 %t87 - store { ptr, i64, i64 } { ptr @.str.7287, i64 2, i64 0 }, ptr %t90 - store i64 %t88, ptr %t86 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11396: - %t91 = load ptr, ptr %a4 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic11399, label %ok11400 -panic11399: - call void @finch_panic(ptr @.str.7288, i64 215, ptr @.str.7289) - unreachable -ok11400: - %t93 = getelementptr inbounds %S.json.Writer, ptr %t91, i32 0, i32 0 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7290, i64 1, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - %t100 = load i64, ptr %t94 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %t93 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100 - store { ptr, i64, i64 } %t99, ptr %t103 - store i64 %t101, ptr %t94 - %t104 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a105 - br label %each.cond11401 -each.cond11401: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body11402, label %each.end11404 -each.body11402: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.json.Json, ptr %t110, i64 %t108 - %t112 = load %S.json.Json, ptr %t111 - store i64 %t108, ptr %a113 - store %S.json.Json %t112, ptr %a114 - %t115 = load i64, ptr %a113 - %t116 = icmp sgt i64 %t115, 0 - br i1 %t116, label %then11405, label %endif11407 -then11405: - %t117 = load ptr, ptr %a4 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic11408, label %ok11409 -panic11408: - call void @finch_panic(ptr @.str.7291, i64 218, ptr @.str.7292) - unreachable -ok11409: - %t119 = getelementptr inbounds %S.json.Writer, ptr %t117, i32 0, i32 0 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a7 - %t122 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t121, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a123 - %t127 = load i64, ptr %t120 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %t119, i64 %t128, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %t119 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t127 - store { ptr, i64, i64 } %t126, ptr %t130 - store i64 %t128, ptr %t120 - br label %endif11407 -endif11407: - %t131 = load ptr, ptr %a4 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic11410, label %ok11411 -panic11410: - call void @finch_panic(ptr @.str.7293, i64 220, ptr @.str.7294) - unreachable -ok11411: - %t133 = getelementptr inbounds %S.json.Writer, ptr %t131, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load i64, ptr %t134 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t133 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 - store { ptr, i64, i64 } %t138, ptr %t142 - store i64 %t140, ptr %t134 - %t143 = load %S.json.Json, ptr %a114 - %t144 = load { ptr, i64, i64 }, ptr %a2 - %t145 = load { ptr, i64, i64 }, ptr %a6 - %t146 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t143, { ptr, i64, i64 } %t144, { ptr, i64, i64 } %t145, ptr %t146) - br label %each.step11403 -each.step11403: - %t147 = load i64, ptr %a105 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a105 - br label %each.cond11401 -each.end11404: - %t149 = load ptr, ptr %a4 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic11412, label %ok11413 -panic11412: - call void @finch_panic(ptr @.str.7295, i64 223, ptr @.str.7296) - unreachable -ok11413: - %t151 = getelementptr inbounds %S.json.Writer, ptr %t149, i32 0, i32 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load { ptr, i64, i64 }, ptr %a5 - %t154 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t153, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.7297, i64 1, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load i64, ptr %t152 - %t165 = add i64 %t164, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t165, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t166 = load ptr, ptr %t151 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i64 %t164 - store { ptr, i64, i64 } %t163, ptr %t167 - store i64 %t165, ptr %t152 - br label %match.end11370 -match.next11393: - %t168 = icmp eq i32 %t25, 5 - br i1 %t168, label %match.arm11414, label %match.next11415 -match.arm11414: - %t169 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 0 - br i1 %t172, label %then11416, label %endif11418 -then11416: - %t173 = load ptr, ptr %a4 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic11419, label %ok11420 -panic11419: - call void @finch_panic(ptr @.str.7298, i64 227, ptr @.str.7299) - unreachable -ok11420: - %t175 = getelementptr inbounds %S.json.Writer, ptr %t173, i32 0, i32 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1 - %t177 = load i64, ptr %t176 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t175, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t175 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177 - store { ptr, i64, i64 } { ptr @.str.7300, i64 2, i64 0 }, ptr %t180 - store i64 %t178, ptr %t176 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11418: - %t181 = load ptr, ptr %a4 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic11421, label %ok11422 -panic11421: - call void @finch_panic(ptr @.str.7301, i64 230, ptr @.str.7302) - unreachable -ok11422: - %t183 = getelementptr inbounds %S.json.Writer, ptr %t181, i32 0, i32 0 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7303, i64 1, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a186 - %t190 = load i64, ptr %t184 - %t191 = add i64 %t190, 1 - call void @finch_arr_reserve(ptr %t183, i64 %t191, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t192 = load ptr, ptr %t183 - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190 - store { ptr, i64, i64 } %t189, ptr %t193 - store i64 %t191, ptr %t184 - %t194 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a195 - br label %each.cond11423 -each.cond11423: - %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t197 = load i64, ptr %t196 - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, %t197 - br i1 %t199, label %each.body11424, label %each.end11426 -each.body11424: - %t200 = load ptr, ptr %t194 - %t201 = getelementptr inbounds %S.json.Json, ptr %t200, i64 %t198 - %t202 = load %S.json.Json, ptr %t201 - store i64 %t198, ptr %a203 - store %S.json.Json %t202, ptr %a204 - %t205 = load i64, ptr %a203 - %t206 = icmp sgt i64 %t205, 0 - br i1 %t206, label %then11427, label %endif11429 -then11427: - %t207 = load ptr, ptr %a4 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic11430, label %ok11431 -panic11430: - call void @finch_panic(ptr @.str.7304, i64 233, ptr @.str.7305) - unreachable -ok11431: - %t209 = getelementptr inbounds %S.json.Writer, ptr %t207, i32 0, i32 0 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - %t211 = load { ptr, i64, i64 }, ptr %a7 - %t212 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a213 - %t217 = load i64, ptr %t210 - %t218 = add i64 %t217, 1 - call void @finch_arr_reserve(ptr %t209, i64 %t218, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t219 = load ptr, ptr %t209 - %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %t219, i64 %t217 - store { ptr, i64, i64 } %t216, ptr %t220 - store i64 %t218, ptr %t210 - br label %endif11429 -endif11429: - %t221 = load ptr, ptr %a4 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic11432, label %ok11433 -panic11432: - call void @finch_panic(ptr @.str.7306, i64 235, ptr @.str.7307) - unreachable -ok11433: - %t223 = getelementptr inbounds %S.json.Writer, ptr %t221, i32 0, i32 0 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load { ptr, i64, i64 }, ptr %a6 - %t226 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 - %t227 = load i64, ptr %a203 - %t228 = load { ptr, i64, i64 }, ptr %t226 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 %t227, %t229 - br i1 %t230, label %range11434, label %inrange11435 -range11434: - call void @finch_panic_index(ptr @.str.7308, i64 235, i64 %t227, i64 %t229) - unreachable -inrange11435: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t227 - %t233 = load { ptr, i64, i64 }, ptr %t232 - %t234 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t225, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t239, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = load i64, ptr %t224 - %t247 = add i64 %t246, 1 - call void @finch_arr_reserve(ptr %t223, i64 %t247, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t248 = load ptr, ptr %t223 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t246 - store { ptr, i64, i64 } %t245, ptr %t249 - store i64 %t247, ptr %t224 - %t250 = load %S.json.Json, ptr %a204 - %t251 = load { ptr, i64, i64 }, ptr %a2 - %t252 = load { ptr, i64, i64 }, ptr %a6 - %t253 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t250, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252, ptr %t253) - br label %each.step11425 -each.step11425: - %t254 = load i64, ptr %a195 - %t255 = add i64 %t254, 1 - store i64 %t255, ptr %a195 - br label %each.cond11423 -each.end11426: - %t256 = load ptr, ptr %a4 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic11436, label %ok11437 -panic11436: - call void @finch_panic(ptr @.str.7309, i64 238, ptr @.str.7310) - unreachable -ok11437: - %t258 = getelementptr inbounds %S.json.Writer, ptr %t256, i32 0, i32 0 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %a5 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.7311, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %t258, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %t258 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - br label %match.end11370 -match.next11415: - br i1 true, label %panic11438, label %ok11439 -panic11438: - call void @finch_panic(ptr @.str.7312, i64 199, ptr @.str.7313) - unreachable -ok11439: - unreachable -match.end11370: - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.S_json_Writer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Writer, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -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.7314, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7315, 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.7316, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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.7317, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.7318, 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.7319, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 1, ptr %a2 - store i64 1, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic11440, label %ok11441 -panic11440: - call void @finch_panic(ptr @.str.7320, i64 268, ptr @.str.7321) - unreachable -ok11441: - %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.cond11442 -for.cond11442: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body11443, label %for.end11445 -for.body11443: - %t11 = load i64, ptr %a8 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11446, label %ok11447 -panic11446: - call void @finch_panic(ptr @.str.7322, i64 269, ptr @.str.7323) - unreachable -ok11447: - %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.from11448 -logic.from11448: - br i1 %t17, label %logic.rhs11449, label %logic.end11450 -logic.rhs11449: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic11451, label %ok11452 -panic11451: - call void @finch_panic(ptr @.str.7324, i64 269, ptr @.str.7325) - unreachable -ok11452: - %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 %range11453, label %inrange11454 -range11453: - call void @finch_panic_index(ptr @.str.7326, i64 269, i64 %t21, i64 %t23) - unreachable -inrange11454: - %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.rend11455 -logic.rend11455: - br label %logic.end11450 -logic.end11450: - %t29 = phi i1 [ false, %logic.from11448 ], [ %t28, %logic.rend11455 ] - br i1 %t29, label %then11456, label %else11457 -then11456: - %t30 = load i64, ptr %a2 - %t31 = add i64 %t30, 1 - store i64 %t31, ptr %a2 - store i64 1, ptr %a3 - br label %endif11458 -else11457: - %t32 = load i64, ptr %a3 - %t33 = add i64 %t32, 1 - store i64 %t33, ptr %a3 - br label %endif11458 -endif11458: - br label %for.step11444 -for.step11444: - %t34 = load i64, ptr %a8 - %t35 = add i64 %t34, 1 - store i64 %t35, ptr %a8 - br label %for.cond11442 -for.end11445: - %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.7327, i64 5, i64 0 }, ptr %a40 - store { ptr, i64, i64 } %t38, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.7328, i64 9, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a50, i64 %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t48, ptr %a55 - call void @finch_str_drop(ptr %a55) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a52 - ret { ptr, i64, i64 } %t57 -} - -define internal i8 @finch.json.peek(ptr %p0) { -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 %panic11459, label %ok11460 -panic11459: - call void @finch_panic(ptr @.str.7329, i64 280, ptr @.str.7330) - unreachable -ok11460: - %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 %panic11461, label %ok11462 -panic11461: - call void @finch_panic(ptr @.str.7331, i64 280, ptr @.str.7332) - unreachable -ok11462: - %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 %then11463, label %endif11465 -then11463: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11466, label %ok11467 -panic11466: - call void @finch_panic(ptr @.str.7333, i64 281, ptr @.str.7334) - unreachable -ok11467: - %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 %panic11468, label %ok11469 -panic11468: - call void @finch_panic(ptr @.str.7335, i64 281, ptr @.str.7336) - unreachable -ok11469: - %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 %range11470, label %inrange11471 -range11470: - call void @finch_panic_index(ptr @.str.7337, i64 281, i64 %t18, i64 %t20) - unreachable -inrange11471: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 - %t24 = load i8, ptr %t23 - ret i8 %t24 -endif11465: - %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.cond11472 -while.cond11472: - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11475, label %ok11476 -panic11475: - call void @finch_panic(ptr @.str.7338, i64 287, ptr @.str.7339) - unreachable -ok11476: - %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 %panic11477, label %ok11478 -panic11477: - call void @finch_panic(ptr @.str.7340, i64 287, ptr @.str.7341) - unreachable -ok11478: - %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.from11479 -logic.from11479: - br i1 %t11, label %logic.rhs11480, label %logic.end11481 -logic.rhs11480: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11482, label %ok11483 -panic11482: - call void @finch_panic(ptr @.str.7342, i64 287, ptr @.str.7343) - unreachable -ok11483: - %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 %panic11484, label %ok11485 -panic11484: - call void @finch_panic(ptr @.str.7344, i64 287, ptr @.str.7345) - unreachable -ok11485: - %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 %range11486, label %inrange11487 -range11486: - call void @finch_panic_index(ptr @.str.7346, i64 287, i64 %t18, i64 %t20) - unreachable -inrange11487: - %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.from11488 -logic.from11488: - br i1 %t25, label %logic.end11490, label %logic.rhs11489 -logic.rhs11489: - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic11491, label %ok11492 -panic11491: - call void @finch_panic(ptr @.str.7347, i64 287, ptr @.str.7348) - unreachable -ok11492: - %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 %panic11493, label %ok11494 -panic11493: - call void @finch_panic(ptr @.str.7349, i64 287, ptr @.str.7350) - unreachable -ok11494: - %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 %range11495, label %inrange11496 -range11495: - call void @finch_panic_index(ptr @.str.7351, i64 287, i64 %t32, i64 %t34) - unreachable -inrange11496: - %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.rend11497 -logic.rend11497: - br label %logic.end11490 -logic.end11490: - %t40 = phi i1 [ true, %logic.from11488 ], [ %t39, %logic.rend11497 ] - br label %logic.from11498 -logic.from11498: - br i1 %t40, label %logic.end11500, label %logic.rhs11499 -logic.rhs11499: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic11501, label %ok11502 -panic11501: - call void @finch_panic(ptr @.str.7352, i64 287, ptr @.str.7353) - unreachable -ok11502: - %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 %panic11503, label %ok11504 -panic11503: - call void @finch_panic(ptr @.str.7354, i64 287, ptr @.str.7355) - unreachable -ok11504: - %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 %range11505, label %inrange11506 -range11505: - call void @finch_panic_index(ptr @.str.7356, i64 287, i64 %t47, i64 %t49) - unreachable -inrange11506: - %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.rend11507 -logic.rend11507: - br label %logic.end11500 -logic.end11500: - %t55 = phi i1 [ true, %logic.from11498 ], [ %t54, %logic.rend11507 ] - br label %logic.from11508 -logic.from11508: - br i1 %t55, label %logic.end11510, label %logic.rhs11509 -logic.rhs11509: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic11511, label %ok11512 -panic11511: - call void @finch_panic(ptr @.str.7357, i64 287, ptr @.str.7358) - unreachable -ok11512: - %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 %panic11513, label %ok11514 -panic11513: - call void @finch_panic(ptr @.str.7359, i64 287, ptr @.str.7360) - unreachable -ok11514: - %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 %range11515, label %inrange11516 -range11515: - call void @finch_panic_index(ptr @.str.7361, i64 287, i64 %t62, i64 %t64) - unreachable -inrange11516: - %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.rend11517 -logic.rend11517: - br label %logic.end11510 -logic.end11510: - %t70 = phi i1 [ true, %logic.from11508 ], [ %t69, %logic.rend11517 ] - br label %logic.rend11518 -logic.rend11518: - br label %logic.end11481 -logic.end11481: - %t71 = phi i1 [ false, %logic.from11479 ], [ %t70, %logic.rend11518 ] - br i1 %t71, label %while.body11473, label %while.end11474 -while.body11473: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic11519, label %ok11520 -panic11519: - call void @finch_panic(ptr @.str.7362, i64 288, ptr @.str.7363) - unreachable -ok11520: - %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.cond11472 -while.end11474: - 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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11521, label %ok11522 -panic11521: - call void @finch_panic(ptr @.str.7364, i64 293, ptr @.str.7365) - unreachable -ok11522: - %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 %panic11523, label %ok11524 -panic11523: - call void @finch_panic(ptr @.str.7366, i64 293, ptr @.str.7367) - unreachable -ok11524: - %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 %then11525, label %endif11527 -then11525: - %t13 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7368, 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.7369, i64 12, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } %t22, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t22, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.7370, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - ret { ptr, i64, i64 } %t35 -endif11527: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11528, label %ok11529 -panic11528: - call void @finch_panic(ptr @.str.7372, i64 296, ptr @.str.7373) - unreachable -ok11529: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11530, label %ok11531 -panic11530: - call void @finch_panic(ptr @.str.7374, i64 296, ptr @.str.7375) - unreachable -ok11531: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11532, label %inrange11533 -range11532: - call void @finch_panic_index(ptr @.str.7376, i64 296, i64 %t42, i64 %t44) - unreachable -inrange11533: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - call void @finch_str_from_char(ptr %a49, i8 signext %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.7371, i64 13, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.7377, i64 8, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.7378, i64 12, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load ptr, ptr %a1 - %t73 = call { ptr, i64, i64 } @finch.json.where(ptr %t72) - store { ptr, i64, i64 } %t71, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t71, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.7379, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -} - -define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11534, label %ok11535 -panic11534: - call void @finch_panic(ptr @.str.7380, i64 301, ptr @.str.7381) - unreachable -ok11535: - %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 %panic11536, label %ok11537 -panic11536: - call void @finch_panic(ptr @.str.7382, i64 301, ptr @.str.7383) - unreachable -ok11537: - %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.from11538 -logic.from11538: - br i1 %t15, label %logic.rhs11539, label %logic.end11540 -logic.rhs11539: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11541, label %ok11542 -panic11541: - call void @finch_panic(ptr @.str.7384, i64 301, ptr @.str.7385) - unreachable -ok11542: - %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 %panic11543, label %ok11544 -panic11543: - call void @finch_panic(ptr @.str.7387, i64 301, ptr @.str.7388) - unreachable -ok11544: - %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 %panic11545, label %ok11546 -panic11545: - call void @finch_panic(ptr @.str.7389, i64 301, ptr @.str.7390) - unreachable -ok11546: - %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.7386, 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 - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %logic.rend11547 -logic.rend11547: - br label %logic.end11540 -logic.end11540: - %t40 = phi i1 [ false, %logic.from11538 ], [ %t38, %logic.rend11547 ] - ret i1 %t40 -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = call i1 @finch.json.comes(ptr %t3, { ptr, i64, i64 } %t4) - %t6 = xor i1 %t5, true - br i1 %t6, label %then11548, label %endif11550 -then11548: - %t7 = load ptr, ptr %a1 - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7391, 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.7392, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t18, 2 - ret { i1, i8, { ptr, i64, i64 } } %t20 -endif11550: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t22 = load i64, ptr %t21 - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic11551, label %ok11552 -panic11551: - call void @finch_panic(ptr @.str.7393, i64 308, ptr @.str.7394) - unreachable -ok11552: - %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = add i64 %t26, %t22 - store i64 %t27, ptr %t25 - ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } -} - -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.from11553 -logic.from11553: - br i1 %t3, label %logic.rhs11554, label %logic.end11555 -logic.rhs11554: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend11556 -logic.rend11556: - br label %logic.end11555 -logic.end11555: - %t6 = phi i1 [ false, %logic.from11553 ], [ %t5, %logic.rend11556 ] - br i1 %t6, label %then11557, label %endif11559 -then11557: - %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 -endif11559: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from11560 -logic.from11560: - br i1 %t12, label %logic.rhs11561, label %logic.end11562 -logic.rhs11561: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend11563 -logic.rend11563: - br label %logic.end11562 -logic.end11562: - %t15 = phi i1 [ false, %logic.from11560 ], [ %t14, %logic.rend11563 ] - br i1 %t15, label %then11564, label %endif11566 -then11564: - %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 -endif11566: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from11567 -logic.from11567: - br i1 %t22, label %logic.rhs11568, label %logic.end11569 -logic.rhs11568: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend11570 -logic.rend11570: - br label %logic.end11569 -logic.end11569: - %t25 = phi i1 [ false, %logic.from11567 ], [ %t24, %logic.rend11570 ] - br i1 %t25, label %then11571, label %endif11573 -then11571: - %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 -endif11573: - 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 %then11574, label %else11575 -then11574: - %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 %endif11576 -else11575: - %t12 = load i64, ptr %a1 - %t13 = icmp slt i64 %t12, 2048 - br i1 %t13, label %then11577, label %else11578 -then11577: - %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 %endif11579 -else11578: - %t32 = load i64, ptr %a1 - %t33 = icmp slt i64 %t32, 65536 - br i1 %t33, label %then11580, label %else11581 -then11580: - %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 %endif11582 -else11581: - %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 %endif11582 -endif11582: - br label %endif11579 -endif11579: - br label %endif11576 -endif11576: - %t100 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a101 - store { ptr, i64, i64 } %t100, ptr %a102 - call void @finch_str_from_bytes(ptr %a101, ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a101 - call void @finch.drop.arr_u8(ptr %a2) - ret { ptr, i64, i64 } %t103 -} - -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.cond11583 -for.cond11583: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, 4 - br i1 %t5, label %for.body11584, label %for.end11586 -for.body11584: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic11587, label %ok11588 -panic11587: - call void @finch_panic(ptr @.str.7395, i64 348, ptr @.str.7396) - unreachable -ok11588: - %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 %panic11589, label %ok11590 -panic11589: - call void @finch_panic(ptr @.str.7397, i64 348, ptr @.str.7398) - unreachable -ok11590: - %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.from11591 -logic.from11591: - br i1 %t15, label %logic.end11593, label %logic.rhs11592 -logic.rhs11592: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11594, label %ok11595 -panic11594: - call void @finch_panic(ptr @.str.7399, i64 348, ptr @.str.7400) - unreachable -ok11595: - %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 %panic11596, label %ok11597 -panic11596: - call void @finch_panic(ptr @.str.7401, i64 348, ptr @.str.7402) - unreachable -ok11597: - %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 %range11598, label %inrange11599 -range11598: - call void @finch_panic_index(ptr @.str.7403, i64 348, i64 %t22, i64 %t24) - unreachable -inrange11599: - %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.rend11600 -logic.rend11600: - br label %logic.end11593 -logic.end11593: - %t31 = phi i1 [ true, %logic.from11591 ], [ %t30, %logic.rend11600 ] - br i1 %t31, label %then11601, label %endif11603 -then11601: - %t32 = load ptr, ptr %a1 - %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.7404, i64 19, i64 0 }) - %t34 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t33, 2 - ret { i1, i64, { ptr, i64, i64 } } %t34 -endif11603: - %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 %panic11604, label %ok11605 -panic11604: - call void @finch_panic(ptr @.str.7405, i64 351, ptr @.str.7406) - unreachable -ok11605: - %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 %panic11606, label %ok11607 -panic11606: - call void @finch_panic(ptr @.str.7407, i64 351, ptr @.str.7408) - unreachable -ok11607: - %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 %range11608, label %inrange11609 -range11608: - call void @finch_panic_index(ptr @.str.7409, i64 351, i64 %t43, i64 %t45) - unreachable -inrange11609: - %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 %panic11610, label %ok11611 -panic11610: - call void @finch_panic(ptr @.str.7410, i64 352, ptr @.str.7411) - unreachable -ok11611: - %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.step11585 -for.step11585: - %t57 = load i64, ptr %a3 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a3 - br label %for.cond11583 -for.end11586: - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i8, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i8, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a216 = alloca i64, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11612, label %ok11613 -panic11612: - call void @finch_panic(ptr @.str.7412, i64 358, ptr @.str.7413) - unreachable -ok11613: - %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 %panic11614, label %ok11615 -panic11614: - call void @finch_panic(ptr @.str.7414, i64 360, ptr @.str.7415) - unreachable -ok11615: - %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.cond11616 -while.cond11616: - br label %while.body11617 -while.body11617: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic11619, label %ok11620 -panic11619: - call void @finch_panic(ptr @.str.7416, i64 362, ptr @.str.7417) - unreachable -ok11620: - %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 %panic11621, label %ok11622 -panic11621: - call void @finch_panic(ptr @.str.7418, i64 362, ptr @.str.7419) - unreachable -ok11622: - %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 %then11623, label %endif11625 -then11623: - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } { ptr @.str.7420, i64 30, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.7421, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - call void @finch.drop.arr_str(ptr %a7) - %t35 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t34, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t35 -endif11625: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11626, label %ok11627 -panic11626: - call void @finch_panic(ptr @.str.7422, i64 365, ptr @.str.7423) - unreachable -ok11627: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11628, label %ok11629 -panic11628: - call void @finch_panic(ptr @.str.7424, i64 365, ptr @.str.7425) - unreachable -ok11629: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11630, label %inrange11631 -range11630: - call void @finch_panic_index(ptr @.str.7426, i64 365, i64 %t42, i64 %t44) - unreachable -inrange11631: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - store i8 %t48, ptr %a49 - %t50 = load i8, ptr %a49 - %t51 = icmp eq i8 %t50, 34 - br i1 %t51, label %then11632, label %endif11634 -then11632: - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic11635, label %ok11636 -panic11635: - call void @finch_panic(ptr @.str.7427, i64 367, ptr @.str.7428) - unreachable -ok11636: - %t55 = getelementptr inbounds %S.json.Reader, ptr %t53, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - %t59 = load i64, ptr %a12 - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic11637, label %ok11638 -panic11637: - call void @finch_panic(ptr @.str.7430, i64 367, ptr @.str.7431) - unreachable -ok11638: - %t62 = getelementptr inbounds %S.json.Reader, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - call void @finch_str_sub(ptr %a58, ptr %a57, i64 %t59, i64 %t63, ptr @.str.7429, i64 367) - %t64 = load { ptr, i64, i64 }, ptr %a58 - %t65 = load i64, ptr %t52 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t66, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %a7 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i64 %t65 - store { ptr, i64, i64 } %t64, ptr %t68 - store i64 %t66, ptr %t52 - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11639, label %ok11640 -panic11639: - call void @finch_panic(ptr @.str.7432, i64 368, ptr @.str.7433) - unreachable -ok11640: - %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %t71 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7434, i64 0, i64 0 }, ptr %a75 - call void @finch_str_join(ptr %a76, ptr %a7, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.drop.arr_str(ptr %a7) - %t78 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t79 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t78, { ptr, i64, i64 } %t77, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t79 -endif11634: - %t80 = load i8, ptr %a49 - %t81 = zext i8 %t80 to i64 - %t82 = icmp slt i64 %t81, 32 - br i1 %t82, label %then11641, label %endif11643 -then11641: - %t83 = load ptr, ptr %a1 - %t84 = call { ptr, i64, i64 } @finch.json.where(ptr %t83) - store { ptr, i64, i64 } { ptr @.str.7435, i64 55, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.7436, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a7) - %t95 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t94, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t95 -endif11643: - %t96 = load i8, ptr %a49 - %t97 = icmp ne i8 %t96, 92 - br i1 %t97, label %then11644, label %endif11646 -then11644: - %t98 = load ptr, ptr %a1 - %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic11647, label %ok11648 -panic11647: - call void @finch_panic(ptr @.str.7437, i64 375, ptr @.str.7438) - unreachable -ok11648: - %t100 = getelementptr inbounds %S.json.Reader, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %t100 - br label %while.cond11616 -endif11646: - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic11649, label %ok11650 -panic11649: - call void @finch_panic(ptr @.str.7439, i64 378, ptr @.str.7440) - unreachable -ok11650: - %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - %t110 = load i64, ptr %a12 - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic11651, label %ok11652 -panic11651: - call void @finch_panic(ptr @.str.7442, i64 378, ptr @.str.7443) - unreachable -ok11652: - %t113 = getelementptr inbounds %S.json.Reader, ptr %t111, i32 0, i32 1 - %t114 = load i64, ptr %t113 - call void @finch_str_sub(ptr %a109, ptr %a108, i64 %t110, i64 %t114, ptr @.str.7441, i64 378) - %t115 = load { ptr, i64, i64 }, ptr %a109 - %t116 = load i64, ptr %t103 - %t117 = add i64 %t116, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t117, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t118 = load ptr, ptr %a7 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116 - store { ptr, i64, i64 } %t115, ptr %t119 - store i64 %t117, ptr %t103 - %t120 = load ptr, ptr %a1 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic11653, label %ok11654 -panic11653: - call void @finch_panic(ptr @.str.7444, i64 379, ptr @.str.7445) - unreachable -ok11654: - %t122 = getelementptr inbounds %S.json.Reader, ptr %t120, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %t122 - %t125 = load ptr, ptr %a1 - %t126 = call i8 @finch.json.peek(ptr %t125) - store i8 %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic11655, label %ok11656 -panic11655: - call void @finch_panic(ptr @.str.7446, i64 381, ptr @.str.7447) - unreachable -ok11656: - %t130 = getelementptr inbounds %S.json.Reader, ptr %t128, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %t130 - %t133 = load i8, ptr %a127 - %t134 = icmp eq i8 %t133, 110 - br i1 %t134, label %then11657, label %else11658 -then11657: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = add i64 %t136, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t137, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t138 = load ptr, ptr %a7 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i64 %t136 - store { ptr, i64, i64 } { ptr @.str.7448, i64 1, i64 0 }, ptr %t139 - store i64 %t137, ptr %t135 - br label %endif11659 -else11658: - %t140 = load i8, ptr %a127 - %t141 = icmp eq i8 %t140, 116 - br i1 %t141, label %then11660, label %else11661 -then11660: - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = add i64 %t143, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t144, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t145 = load ptr, ptr %a7 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t143 - store { ptr, i64, i64 } { ptr @.str.7449, i64 1, i64 0 }, ptr %t146 - store i64 %t144, ptr %t142 - br label %endif11662 -else11661: - %t147 = load i8, ptr %a127 - %t148 = icmp eq i8 %t147, 114 - br i1 %t148, label %then11663, label %else11664 -then11663: - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = add i64 %t150, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t151, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t152 = load ptr, ptr %a7 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i64 %t150 - store { ptr, i64, i64 } { ptr @.str.7450, i64 1, i64 0 }, ptr %t153 - store i64 %t151, ptr %t149 - br label %endif11665 -else11664: - %t154 = load i8, ptr %a127 - %t155 = icmp eq i8 %t154, 98 - br i1 %t155, label %then11666, label %else11667 -then11666: - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t157 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) - %t158 = load i64, ptr %t156 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t159, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %a7 - %t161 = getelementptr inbounds { ptr, i64, i64 }, ptr %t160, i64 %t158 - store { ptr, i64, i64 } %t157, ptr %t161 - store i64 %t159, ptr %t156 - br label %endif11668 -else11667: - %t162 = load i8, ptr %a127 - %t163 = icmp eq i8 %t162, 102 - br i1 %t163, label %then11669, label %else11670 -then11669: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t165 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) - %t166 = load i64, ptr %t164 - %t167 = add i64 %t166, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t167, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t168 = load ptr, ptr %a7 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i64 %t166 - store { ptr, i64, i64 } %t165, ptr %t169 - store i64 %t167, ptr %t164 - br label %endif11671 -else11670: - %t170 = load i8, ptr %a127 - %t171 = icmp eq i8 %t170, 34 - br label %logic.from11672 -logic.from11672: - br i1 %t171, label %logic.end11674, label %logic.rhs11673 -logic.rhs11673: - %t172 = load i8, ptr %a127 - %t173 = icmp eq i8 %t172, 92 - br label %logic.rend11675 -logic.rend11675: - br label %logic.end11674 -logic.end11674: - %t174 = phi i1 [ true, %logic.from11672 ], [ %t173, %logic.rend11675 ] - br label %logic.from11676 -logic.from11676: - br i1 %t174, label %logic.end11678, label %logic.rhs11677 -logic.rhs11677: - %t175 = load i8, ptr %a127 - %t176 = icmp eq i8 %t175, 47 - br label %logic.rend11679 -logic.rend11679: - br label %logic.end11678 -logic.end11678: - %t177 = phi i1 [ true, %logic.from11676 ], [ %t176, %logic.rend11679 ] - br i1 %t177, label %then11680, label %else11681 -then11680: - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t179 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a180, i8 signext %t179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - %t182 = load i64, ptr %t178 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a7 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t178 - br label %endif11682 -else11681: - %t186 = load i8, ptr %a127 - %t187 = icmp eq i8 %t186, 117 - br i1 %t187, label %then11683, label %else11684 -then11683: - %t188 = load ptr, ptr %a1 - %t189 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t188) - %t190 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 0 - %t191 = xor i1 %t190, true - %t192 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 2 - %t193 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 1 - br i1 %t191, label %try.failed11686, label %try.ok11687 -try.failed11686: - call void @finch.drop.arr_str(ptr %a7) - %t194 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t192, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t194 -try.ok11687: - store i64 %t193, ptr %a195 - %t196 = load i64, ptr %a195 - %t197 = icmp sge i64 %t196, 55296 - br label %logic.from11688 -logic.from11688: - br i1 %t197, label %logic.rhs11689, label %logic.end11690 -logic.rhs11689: - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, 56320 - br label %logic.rend11691 -logic.rend11691: - br label %logic.end11690 -logic.end11690: - %t200 = phi i1 [ false, %logic.from11688 ], [ %t199, %logic.rend11691 ] - br label %logic.from11692 -logic.from11692: - br i1 %t200, label %logic.rhs11693, label %logic.end11694 -logic.rhs11693: - %t201 = load ptr, ptr %a1 - %t202 = call i1 @finch.json.comes(ptr %t201, { ptr, i64, i64 } { ptr @.str.7451, i64 2, i64 0 }) - br label %logic.rend11695 -logic.rend11695: - br label %logic.end11694 -logic.end11694: - %t203 = phi i1 [ false, %logic.from11692 ], [ %t202, %logic.rend11695 ] - br i1 %t203, label %then11696, label %endif11698 -then11696: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic11699, label %ok11700 -panic11699: - call void @finch_panic(ptr @.str.7452, i64 398, ptr @.str.7453) - unreachable -ok11700: - %t206 = getelementptr inbounds %S.json.Reader, ptr %t204, i32 0, i32 1 - %t207 = load i64, ptr %t206 - %t208 = add i64 %t207, 2 - store i64 %t208, ptr %t206 - %t209 = load ptr, ptr %a1 - %t210 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t209) - %t211 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 0 - %t212 = xor i1 %t211, true - %t213 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 2 - %t214 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 1 - br i1 %t212, label %try.failed11701, label %try.ok11702 -try.failed11701: - call void @finch.drop.arr_str(ptr %a7) - %t215 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t213, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t215 -try.ok11702: - store i64 %t214, ptr %a216 - %t217 = load i64, ptr %a195 - %t218 = sub i64 %t217, 55296 - %t219 = mul i64 %t218, 1024 - %t220 = add i64 65536, %t219 - %t221 = load i64, ptr %a216 - %t222 = sub i64 %t221, 56320 - %t223 = add i64 %t220, %t222 - store i64 %t223, ptr %a195 - br label %endif11698 -endif11698: - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t225 = load i64, ptr %a195 - %t226 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t225) - %t227 = load i64, ptr %t224 - %t228 = add i64 %t227, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t229 = load ptr, ptr %a7 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227 - store { ptr, i64, i64 } %t226, ptr %t230 - store i64 %t228, ptr %t224 - br label %endif11685 -else11684: - %t231 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a232, i8 signext %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.7454, i64 22, i64 0 }, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.7455, i64 12, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load ptr, ptr %a1 - %t245 = call { ptr, i64, i64 } @finch.json.where(ptr %t244) - store { ptr, i64, i64 } %t243, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t243, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t245, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.7456, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.drop.arr_str(ptr %a7) - %t257 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t256, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t257 -endif11685: - br label %endif11682 -endif11682: - br label %endif11671 -endif11671: - br label %endif11668 -endif11668: - br label %endif11665 -endif11665: - br label %endif11662 -endif11662: - br label %endif11659 -endif11659: - %t258 = load ptr, ptr %a1 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic11703, label %ok11704 -panic11703: - call void @finch_panic(ptr @.str.7457, i64 406, ptr @.str.7458) - unreachable -ok11704: - %t260 = getelementptr inbounds %S.json.Reader, ptr %t258, i32 0, i32 1 - %t261 = load i64, ptr %t260 - store i64 %t261, ptr %a12 - br label %while.cond11616 -} - -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 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca double, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11705, label %ok11706 -panic11705: - call void @finch_panic(ptr @.str.7459, i64 411, ptr @.str.7460) - unreachable -ok11706: - %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 %then11707, label %endif11709 -then11707: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic11710, label %ok11711 -panic11710: - call void @finch_panic(ptr @.str.7461, i64 413, ptr @.str.7462) - unreachable -ok11711: - %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 %endif11709 -endif11709: - br label %while.cond11712 -while.cond11712: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic11715, label %ok11716 -panic11715: - call void @finch_panic(ptr @.str.7463, i64 415, ptr @.str.7464) - unreachable -ok11716: - %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 %panic11717, label %ok11718 -panic11717: - call void @finch_panic(ptr @.str.7465, i64 415, ptr @.str.7466) - unreachable -ok11718: - %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.from11719 -logic.from11719: - br i1 %t24, label %logic.rhs11720, label %logic.end11721 -logic.rhs11720: - %t25 = load ptr, ptr %a1 - %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic11722, label %ok11723 -panic11722: - call void @finch_panic(ptr @.str.7467, i64 415, ptr @.str.7468) - unreachable -ok11723: - %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 %panic11724, label %ok11725 -panic11724: - call void @finch_panic(ptr @.str.7469, i64 415, ptr @.str.7470) - unreachable -ok11725: - %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 %range11726, label %inrange11727 -range11726: - call void @finch_panic_index(ptr @.str.7471, i64 415, i64 %t31, i64 %t33) - unreachable -inrange11727: - %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.from11728 -logic.from11728: - br i1 %t38, label %logic.rhs11729, label %logic.end11730 -logic.rhs11729: - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11731, label %ok11732 -panic11731: - call void @finch_panic(ptr @.str.7472, i64 415, ptr @.str.7473) - unreachable -ok11732: - %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 %panic11733, label %ok11734 -panic11733: - call void @finch_panic(ptr @.str.7474, i64 415, ptr @.str.7475) - unreachable -ok11734: - %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 %range11735, label %inrange11736 -range11735: - call void @finch_panic_index(ptr @.str.7476, i64 415, i64 %t45, i64 %t47) - unreachable -inrange11736: - %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.rend11737 -logic.rend11737: - br label %logic.end11730 -logic.end11730: - %t53 = phi i1 [ false, %logic.from11728 ], [ %t52, %logic.rend11737 ] - br label %logic.from11738 -logic.from11738: - br i1 %t53, label %logic.end11740, label %logic.rhs11739 -logic.rhs11739: - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic11741, label %ok11742 -panic11741: - call void @finch_panic(ptr @.str.7477, i64 415, ptr @.str.7478) - unreachable -ok11742: - %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 %panic11743, label %ok11744 -panic11743: - call void @finch_panic(ptr @.str.7479, i64 415, ptr @.str.7480) - unreachable -ok11744: - %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 %range11745, label %inrange11746 -range11745: - call void @finch_panic_index(ptr @.str.7481, i64 415, i64 %t60, i64 %t62) - unreachable -inrange11746: - %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.rend11747 -logic.rend11747: - br label %logic.end11740 -logic.end11740: - %t68 = phi i1 [ true, %logic.from11738 ], [ %t67, %logic.rend11747 ] - br label %logic.from11748 -logic.from11748: - br i1 %t68, label %logic.end11750, label %logic.rhs11749 -logic.rhs11749: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11751, label %ok11752 -panic11751: - call void @finch_panic(ptr @.str.7482, i64 415, ptr @.str.7483) - unreachable -ok11752: - %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 %panic11753, label %ok11754 -panic11753: - call void @finch_panic(ptr @.str.7484, i64 415, ptr @.str.7485) - unreachable -ok11754: - %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 %range11755, label %inrange11756 -range11755: - call void @finch_panic_index(ptr @.str.7486, i64 415, i64 %t75, i64 %t77) - unreachable -inrange11756: - %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.rend11757 -logic.rend11757: - br label %logic.end11750 -logic.end11750: - %t83 = phi i1 [ true, %logic.from11748 ], [ %t82, %logic.rend11757 ] - br label %logic.from11758 -logic.from11758: - br i1 %t83, label %logic.end11760, label %logic.rhs11759 -logic.rhs11759: - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic11761, label %ok11762 -panic11761: - call void @finch_panic(ptr @.str.7487, i64 415, ptr @.str.7488) - unreachable -ok11762: - %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 %panic11763, label %ok11764 -panic11763: - call void @finch_panic(ptr @.str.7489, i64 415, ptr @.str.7490) - unreachable -ok11764: - %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 %range11765, label %inrange11766 -range11765: - call void @finch_panic_index(ptr @.str.7491, i64 415, i64 %t90, i64 %t92) - unreachable -inrange11766: - %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.rend11767 -logic.rend11767: - br label %logic.end11760 -logic.end11760: - %t98 = phi i1 [ true, %logic.from11758 ], [ %t97, %logic.rend11767 ] - br label %logic.from11768 -logic.from11768: - br i1 %t98, label %logic.end11770, label %logic.rhs11769 -logic.rhs11769: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic11771, label %ok11772 -panic11771: - call void @finch_panic(ptr @.str.7492, i64 415, ptr @.str.7493) - unreachable -ok11772: - %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 %panic11773, label %ok11774 -panic11773: - call void @finch_panic(ptr @.str.7494, i64 415, ptr @.str.7495) - unreachable -ok11774: - %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 %range11775, label %inrange11776 -range11775: - call void @finch_panic_index(ptr @.str.7496, i64 415, i64 %t105, i64 %t107) - unreachable -inrange11776: - %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.rend11777 -logic.rend11777: - br label %logic.end11770 -logic.end11770: - %t113 = phi i1 [ true, %logic.from11768 ], [ %t112, %logic.rend11777 ] - br label %logic.from11778 -logic.from11778: - br i1 %t113, label %logic.end11780, label %logic.rhs11779 -logic.rhs11779: - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic11781, label %ok11782 -panic11781: - call void @finch_panic(ptr @.str.7497, i64 415, ptr @.str.7498) - unreachable -ok11782: - %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 %panic11783, label %ok11784 -panic11783: - call void @finch_panic(ptr @.str.7499, i64 415, ptr @.str.7500) - unreachable -ok11784: - %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 %range11785, label %inrange11786 -range11785: - call void @finch_panic_index(ptr @.str.7501, i64 415, i64 %t120, i64 %t122) - unreachable -inrange11786: - %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.rend11787 -logic.rend11787: - br label %logic.end11780 -logic.end11780: - %t128 = phi i1 [ true, %logic.from11778 ], [ %t127, %logic.rend11787 ] - br label %logic.rend11788 -logic.rend11788: - br label %logic.end11721 -logic.end11721: - %t129 = phi i1 [ false, %logic.from11719 ], [ %t128, %logic.rend11788 ] - br i1 %t129, label %while.body11713, label %while.end11714 -while.body11713: - %t130 = load ptr, ptr %a1 - %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic11789, label %ok11790 -panic11789: - call void @finch_panic(ptr @.str.7502, i64 416, ptr @.str.7503) - unreachable -ok11790: - %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.cond11712 -while.end11714: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic11791, label %ok11792 -panic11791: - call void @finch_panic(ptr @.str.7504, i64 418, ptr @.str.7505) - unreachable -ok11792: - %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 %panic11793, label %ok11794 -panic11793: - call void @finch_panic(ptr @.str.7507, i64 418, ptr @.str.7508) - unreachable -ok11794: - %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.7506, 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 - store { ptr, i64, i64 } %t146, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load double, ptr %a148 - br i1 %t151, label %or.failed11795, label %or.ok11796 -or.failed11795: - store { ptr, i64, i64 } %t152, ptr %a155 - %t156 = load i64, ptr %a6 - %t157 = load ptr, ptr %a1 - %t158 = icmp eq ptr %t157, null - br i1 %t158, label %panic11797, label %ok11798 -panic11797: - call void @finch_panic(ptr @.str.7509, i64 419, ptr @.str.7510) - unreachable -ok11798: - %t159 = getelementptr inbounds %S.json.Reader, ptr %t157, i32 0, i32 1 - store i64 %t156, ptr %t159 - %t160 = load ptr, ptr %a1 - %t161 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t160, { ptr, i64, i64 } { ptr @.str.7511, i64 8, i64 0 }) - call void @finch_str_drop(ptr %a155) - %t162 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t161, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t162 -or.ok11796: - store double %t154, ptr %a163 - %t164 = load double, ptr %a163 - %t165 = call %S.json.Json @finch.json.new_number(double %t164) - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t167 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t166, %S.json.Json %t165, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t167 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { -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 %panic11799, label %ok11800 -panic11799: - call void @finch_panic(ptr @.str.7512, i64 428, ptr @.str.7513) - unreachable -ok11800: - %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 %panic11801, label %ok11802 -panic11801: - call void @finch_panic(ptr @.str.7514, i64 428, ptr @.str.7515) - unreachable -ok11802: - %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 %then11803, label %endif11805 -then11803: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7516, 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 -endif11805: - %t19 = load i8, ptr %a5 - %t20 = icmp eq i8 %t19, 123 - br i1 %t20, label %then11806, label %endif11808 -then11806: - %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 %panic11809, label %ok11810 -panic11809: - call void @finch_panic(ptr @.str.7517, i64 433, ptr @.str.7518) - unreachable -ok11810: - %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 %then11811, label %endif11813 -then11811: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic11814, label %ok11815 -panic11814: - call void @finch_panic(ptr @.str.7519, i64 436, ptr @.str.7520) - unreachable -ok11815: - %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 -endif11813: - br label %while.cond11816 -while.cond11816: - br label %while.body11817 -while.body11817: - %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 %then11819, label %endif11821 -then11819: - %t44 = load ptr, ptr %a1 - %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7521, i64 15, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a22) - %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 -endif11821: - %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.failed11822, label %try.ok11823 -try.failed11822: - call void @finch.drop.S_json_Json(ptr %a22) - %t53 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t51, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t53 -try.ok11823: - 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 %then11824, label %endif11826 -then11824: - %t59 = load ptr, ptr %a1 - %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7522, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 -endif11826: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic11827, label %ok11828 -panic11827: - call void @finch_panic(ptr @.str.7523, i64 449, ptr @.str.7524) - unreachable -ok11828: - %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.failed11829, label %try.ok11830 -try.failed11829: - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t73 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t71, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t73 -try.ok11830: - 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 %then11831, label %endif11833 -then11831: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic11834, label %ok11835 -panic11834: - call void @finch_panic(ptr @.str.7525, i64 454, ptr @.str.7526) - unreachable -ok11835: - %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 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - br label %while.cond11816 -endif11833: - %t86 = load ptr, ptr %a1 - %t87 = call i8 @finch.json.peek(ptr %t86) - %t88 = icmp eq i8 %t87, 125 - br i1 %t88, label %then11836, label %endif11838 -then11836: - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic11839, label %ok11840 -panic11839: - call void @finch_panic(ptr @.str.7527, i64 458, ptr @.str.7528) - unreachable -ok11840: - %t91 = getelementptr inbounds %S.json.Reader, ptr %t89, i32 0, i32 1 - %t92 = load i64, ptr %t91 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %t91 - %t94 = load %S.json.Json, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - %t95 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t96 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t95, %S.json.Json %t94, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t96 -endif11838: - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7529, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 -endif11808: - %t100 = load i8, ptr %a5 - %t101 = icmp eq i8 %t100, 91 - br i1 %t101, label %then11841, label %endif11843 -then11841: - %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 %panic11844, label %ok11845 -panic11844: - call void @finch_panic(ptr @.str.7530, i64 466, ptr @.str.7531) - unreachable -ok11845: - %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 %then11846, label %endif11848 -then11846: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic11849, label %ok11850 -panic11849: - call void @finch_panic(ptr @.str.7532, i64 469, ptr @.str.7533) - unreachable -ok11850: - %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 -endif11848: - br label %while.cond11851 -while.cond11851: - br label %while.body11852 -while.body11852: - %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.failed11854, label %try.ok11855 -try.failed11854: - call void @finch.drop.S_json_Json(ptr %a103) - %t127 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t125, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t127 -try.ok11855: - 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 %then11856, label %endif11858 -then11856: - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic11859, label %ok11860 -panic11859: - call void @finch_panic(ptr @.str.7534, i64 477, ptr @.str.7535) - unreachable -ok11860: - %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 - call void @finch.drop.S_json_Json(ptr %a128) - br label %while.cond11851 -endif11858: - %t139 = load ptr, ptr %a1 - %t140 = call i8 @finch.json.peek(ptr %t139) - %t141 = icmp eq i8 %t140, 93 - br i1 %t141, label %then11861, label %endif11863 -then11861: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic11864, label %ok11865 -panic11864: - call void @finch_panic(ptr @.str.7536, i64 481, ptr @.str.7537) - unreachable -ok11865: - %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - store i64 %t146, ptr %t144 - %t147 = load %S.json.Json, ptr %a103 - call void @finch.drop.S_json_Json(ptr %a128) - %t148 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t149 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t148, %S.json.Json %t147, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t149 -endif11863: - %t150 = load ptr, ptr %a1 - %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7538, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a128) - call void @finch.drop.S_json_Json(ptr %a103) - %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 -endif11843: - %t153 = load i8, ptr %a5 - %t154 = icmp eq i8 %t153, 34 - br i1 %t154, label %then11866, label %endif11868 -then11866: - %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.failed11869, label %try.ok11870 -try.failed11869: - %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.ok11870: - store { ptr, i64, i64 } %t160, ptr %a162 - %t163 = load { ptr, i64, i64 }, ptr %a162 - %t164 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t163) - call void @finch_str_drop(ptr %a162) - %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 -endif11868: - %t167 = load i8, ptr %a5 - %t168 = icmp eq i8 %t167, 116 - br i1 %t168, label %then11871, label %endif11873 -then11871: - %t169 = load ptr, ptr %a1 - %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7539, 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.failed11874, label %try.ok11875 -try.failed11874: - %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.ok11875: - %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 -endif11873: - %t178 = load i8, ptr %a5 - %t179 = icmp eq i8 %t178, 102 - br i1 %t179, label %then11876, label %endif11878 -then11876: - %t180 = load ptr, ptr %a1 - %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7540, 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.failed11879, label %try.ok11880 -try.failed11879: - %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.ok11880: - %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 -endif11878: - %t189 = load i8, ptr %a5 - %t190 = icmp eq i8 %t189, 110 - br i1 %t190, label %then11881, label %endif11883 -then11881: - %t191 = load ptr, ptr %a1 - %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7541, 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.failed11884, label %try.ok11885 -try.failed11884: - %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.ok11885: - %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 -endif11883: - %t200 = load i8, ptr %a5 - %t201 = icmp eq i8 %t200, 45 - br label %logic.from11886 -logic.from11886: - br i1 %t201, label %logic.end11888, label %logic.rhs11887 -logic.rhs11887: - %t202 = load i8, ptr %a5 - %t203 = icmp uge i8 %t202, 48 - br label %logic.from11889 -logic.from11889: - br i1 %t203, label %logic.rhs11890, label %logic.end11891 -logic.rhs11890: - %t204 = load i8, ptr %a5 - %t205 = icmp ule i8 %t204, 57 - br label %logic.rend11892 -logic.rend11892: - br label %logic.end11891 -logic.end11891: - %t206 = phi i1 [ false, %logic.from11889 ], [ %t205, %logic.rend11892 ] - br label %logic.rend11893 -logic.rend11893: - br label %logic.end11888 -logic.end11888: - %t207 = phi i1 [ true, %logic.from11886 ], [ %t206, %logic.rend11893 ] - br i1 %t207, label %then11894, label %endif11896 -then11894: - %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.failed11897, label %try.ok11898 -try.failed11897: - %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.ok11898: - %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 -endif11896: - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7542, i64 7, i64 0 }) - %t219 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t218, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t219 -} - -define internal void @finch.drop.S_json_Reader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Reader, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - 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.failed11899, label %try.ok11900 -try.failed11899: - call void @finch.drop.S_json_Reader(ptr %a7) - %t13 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t11, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t13 -try.ok11900: - 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 %then11901, label %endif11903 -then11901: - %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7543, i64 19, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a14) - call void @finch.drop.S_json_Reader(ptr %a7) - %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 -endif11903: - %t23 = load %S.json.Json, ptr %a14 - call void @finch.drop.S_json_Reader(ptr %a7) - %t24 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t25 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, %S.json.Json %t23, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t25 -} - -define internal { ptr, i64, i64 } @finch.embedded.names() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7544, i64 18, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7545, i64 12, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7546, i64 12, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7547, i64 12, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7548, i64 20, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7549, i64 12, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7550, i64 20, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7551, i64 15, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define internal { ptr, i64, i64 } @finch.embedded.texts() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7552, i64 24981, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7553, i64 12884, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7554, i64 2846, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7555, i64 1406, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7556, i64 995, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7557, i64 2539, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7558, i64 1792, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7559, i64 365, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define i32 @main(i32 %argc, ptr %argv) { -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/pack.sh b/bootstrap/pack.sh deleted file mode 100755 index d57d264..0000000 --- a/bootstrap/pack.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -# Writes src/embedded.fch: the runtime and the standard library as text, so the compiler can carry them inside itself. -# bootstrap/pack.sh [out.fch] -set -eu -cd "$(dirname "$0")/.." -FINCH_RT=$PWD/runtime/finch_rt.c "$1" run tools/pack.fch "${2:-src/embedded.fch}" runtime/finch_rt.c std/*.fch std/*.h diff --git a/bootstrap/winbuild.sh b/bootstrap/winbuild.sh deleted file mode 100755 index 03e1910..0000000 --- a/bootstrap/winbuild.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# Builds build/win/finch.exe from bootstrap/windows-x86_64.ll on Linux (to try the Windows compiler under Wine): -# bootstrap/winbuild.sh -set -eu -cd "$(dirname "$0")/.." -mkdir -p build/win -"$1/bin/x86_64-w64-mingw32-clang" -O1 -w bootstrap/windows-x86_64.ll runtime/finch_rt.c -o build/win/finch.exe "$2/bin/libclang.dll" -cp "$2/bin/libclang.dll" build/win/ diff --git a/bootstrap/windows-x86_64.ll b/bootstrap/windows-x86_64.ll deleted file mode 100644 index aa59ea6..0000000 --- a/bootstrap/windows-x86_64.ll +++ /dev/null @@ -1,117654 +0,0 @@ -; generated by the Finch compiler written in Finch - -target triple = "x86_64-w64-mingw32" - -%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, i1, i1, { ptr, i64, i64 }, i64, i64 } -%S.platform.Target = type { { ptr, i64, i64 }, i1, i1, i1, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Options = type { i1, i1, i1, { ptr, i64, i64 }, %S.platform.Target } -%S.gen.Template = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i1, i1 } -%S.gen.Binds = type { { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.EnumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Cleanup = type { i1, i64 } -%S.gen.SumDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.SumPat = type { i64, { ptr, i64, i64 } } -%S.gen.Scope = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Pending = type { { ptr, i64, i64 }, %S.ast.Type, i1 } -%S.gen.Loop = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.FnSig = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i1, i1, { ptr, i64, i64 }, %S.ast.Type, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64 } -%S.gen.StructDef = type { { ptr, i64, i64 }, { ptr, i64, i64 }, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1 } -%S.gen.Val = type { { ptr, i64, i64 }, %S.ast.Type, i1, i1 } -%S.gen.Place = type { { ptr, i64, i64 }, %S.ast.Type } -%S.gen.Ref = type { i1, %S.gen.Place, %S.gen.Val } -%S.cimport.CImports = type { { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64, i64, ptr, i64, i64 }, { ptr, i64, i64 } } -%S.gen.Gen = type { { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, { ptr, i64, i64 }, i64, i64, i64, i1, { ptr, i64, i64 }, { ptr, i64, i64 }, { 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 }, { 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.threadlocinfo = type { ptr, i32, i32 } -%S.C._locale_tstruct = type { ptr, ptr } -%S.C.div_t = type { i32, i32 } -%S.C.ldiv_t = type { i32, i32 } -%S.C._CRT_DOUBLE = type { double } -%S.C._LDOUBLE = type { [10 x i8] } -%S.C._CRT_FLOAT = type { float } -%S.C.lldiv_t = type { i64, i64 } -%S.C._HEAPINFO = type { ptr, i64, i32, [4 x i8] } -%S.C.CXString = type { ptr, i32, [4 x i8] } -%S.C.CXStringSet = type { ptr, i32, [4 x i8] } -%S.C.__timeb64 = type { i64, i16, i16, i16, [2 x i8] } -%S.C.__timeb32 = type { i32, i16, i16, i16, [2 x i8] } -%S.C.timeb = type { i64, i16, i16, i16, [2 x i8] } -%S.C.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32 } -%S.C._timespec32 = type { i32, i32 } -%S.C._timespec64 = type { i64, i32, [4 x i8] } -%S.C.timespec = type { i64, i32, [4 x i8] } -%S.C.timeval = type { i32, i32 } -%S.C.timezone = type { i32, i32 } -%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, [10 x i8], ptr, ptr } -%S.C.CXUnsavedFile = type { ptr, ptr, i32, [4 x i8] } -%S.C.CXTUResourceUsageEntry = type { i32, i32 } -%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 { ptr } -%S.C._onexit_table_t = type { ptr, ptr, ptr } -%S.C._finddata32_t = type { i32, i32, i32, i32, i32, [260 x i8] } -%S.C._finddata32i64_t = type { i32, i32, i32, i32, i64, [260 x i8], [4 x i8] } -%S.C.__finddata64_t = type { i32, [4 x i8], i64, i64, i64, i64, [260 x i8], [4 x i8] } -%S.C._finddata64i32_t = type { i32, [4 x i8], i64, i64, i64, i32, [260 x i8] } -%S.C._wfinddata32_t = type { i32, i32, i32, i32, i32, [260 x i16] } -%S.C._wfinddata32i64_t = type { i32, i32, i32, i32, i64, [260 x i16] } -%S.C._wfinddata64i32_t = type { i32, [4 x i8], i64, i64, i64, i32, [260 x i16], [4 x i8] } -%S.C._wfinddata64_t = type { i32, [4 x i8], i64, i64, i64, i64, [260 x i16] } -%S.C._diskfree_t = type { i32, i32, i32, i32 } -@.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 [8 x i8] c"/files-\00" -@.str.146 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.147 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.148 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.149 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.150 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.151 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.152 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.153 = private unnamed_addr constant [6 x i8] c"/done\00" -@.str.154 = private unnamed_addr constant [1 x i8] c"\00" -@.str.155 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.156 = private unnamed_addr constant [8 x i8] c"version\00" -@.str.157 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.158 = private unnamed_addr constant [10 x i8] c"--version\00" -@.str.159 = private unnamed_addr constant [47 x i8] c"Finch 2.4.0 (the compiler is written in Finch)\00" -@.str.160 = private unnamed_addr constant [1 x i8] c"\00" -@.str.161 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.162 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.163 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.164 = private unnamed_addr constant [4 x i8] c"lsp\00" -@.str.165 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.166 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.167 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.168 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.169 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.170 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.171 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.172 = private unnamed_addr constant [1 x i8] c"\00" -@.str.173 = private unnamed_addr constant [4 x i8] c"-O2\00" -@.str.174 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.175 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.176 = private unnamed_addr constant [3 x i8] c"-o\00" -@.str.177 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.178 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.179 = private unnamed_addr constant [9 x i8] c"--shared\00" -@.str.180 = private unnamed_addr constant [6 x i8] c"build\00" -@.str.181 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.182 = private unnamed_addr constant [4 x i8] c"-O0\00" -@.str.183 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.184 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.185 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.186 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.187 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.188 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.189 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.190 = private unnamed_addr constant [10 x i8] c"--overlay\00" -@.str.191 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.192 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.193 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.194 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.195 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.196 = private unnamed_addr constant [3 x i8] c"-g\00" -@.str.197 = private unnamed_addr constant [9 x i8] c"--target\00" -@.str.198 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.199 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.200 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.201 = private unnamed_addr constant [12 x i8] c"/finch_run_\00" -@.str.202 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.203 = private unnamed_addr constant [5 x i8] c".dll\00" -@.str.204 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.205 = private unnamed_addr constant [7 x i8] c".dylib\00" -@.str.206 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.207 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.208 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.209 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.210 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.211 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.212 = private unnamed_addr constant [8 x i8] c"/../std\00" -@.str.213 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.214 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.215 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.216 = private unnamed_addr constant [20 x i8] c"/../share/finch/std\00" -@.str.217 = private unnamed_addr constant [4 x i8] c"std\00" -@.str.218 = private unnamed_addr constant [10 x i8] c"/path.fch\00" -@.str.219 = private unnamed_addr constant [5 x i8] c"/std\00" -@.str.220 = private unnamed_addr constant [11 x i8] c"FINCH_PATH\00" -@.str.221 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @getenv(ptr) -@.str.222 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.223 = private unnamed_addr constant [1 x i8] c"\00" -@.str.224 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.225 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.226 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.227 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.228 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.229 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.230 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.231 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.232 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.233 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.234 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.235 = private unnamed_addr constant [1 x i8] c"\00" -@.str.236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.239 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.240 = private unnamed_addr constant [3 x i8] c"ir\00" -@.str.241 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.243 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.244 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.245 = private unnamed_addr constant [9 x i8] c"FINCH_RT\00" -@.str.246 = private unnamed_addr constant [1 x i8] c"\00" -@.str.247 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.248 = private unnamed_addr constant [23 x i8] c"/../runtime/finch_rt.c\00" -@.str.249 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.250 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.251 = private unnamed_addr constant [13 x i8] c"src/main.fch\00" -@.str.252 = private unnamed_addr constant [35 x i8] c"/../share/finch/runtime/finch_rt.c\00" -@.str.253 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.254 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.255 = private unnamed_addr constant [20 x i8] c"/runtime/finch_rt.c\00" -@.str.256 = private unnamed_addr constant [1 x i8] c"\00" -@.str.257 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.258 = private unnamed_addr constant [4 x i8] c" -g\00" -@.str.259 = private unnamed_addr constant [4 x i8] c"run\00" -@.str.260 = private unnamed_addr constant [2 x i8] c" \00" -@.str.261 = private unnamed_addr constant [2 x i8] c" \00" -@.str.262 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.263 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.264 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.265 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.266 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.267 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.268 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.269 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.270 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.271 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.272 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.273 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.274 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.275 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.276 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.277 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.278 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.279 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.280 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.281 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.282 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.283 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.284 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.285 = private unnamed_addr constant [2 x i8] c":\00" -@.str.286 = private unnamed_addr constant [2 x i8] c":\00" -@.str.287 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.288 = private unnamed_addr constant [1 x i8] c"\00" -@.str.289 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.290 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.291 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.292 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.293 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.294 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.295 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.296 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.297 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.298 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.299 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.300 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.301 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.302 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.303 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.304 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.305 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.306 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.307 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.308 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.309 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.310 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.311 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.312 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.313 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.314 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.315 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.316 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.317 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.318 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.319 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.322 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.323 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.324 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.325 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.326 = private unnamed_addr constant [3 x i8] c"+=\00" -@.str.327 = private unnamed_addr constant [3 x i8] c"-=\00" -@.str.328 = private unnamed_addr constant [3 x i8] c"*=\00" -@.str.329 = private unnamed_addr constant [3 x i8] c"/=\00" -@.str.330 = private unnamed_addr constant [3 x i8] c"%=\00" -@.str.331 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.332 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.333 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.334 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.335 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.336 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.337 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.338 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.339 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.340 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.341 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.342 = private unnamed_addr constant [23 x i8] c"(){}[],.:+-*/%&|^~<>=!\00" -@.str.343 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.344 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.345 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.346 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.347 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.348 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.349 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.350 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.351 = private unnamed_addr constant [1 x i8] c"\00" -@.str.352 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.353 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.354 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.355 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.356 = private unnamed_addr constant [17 x i8] c"unknown escape \5C\00" -@.str.357 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.358 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.359 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.360 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.361 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.362 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.368 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.369 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.370 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.371 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.372 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.373 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.374 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.375 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.376 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.377 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.378 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.379 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.381 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.382 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.383 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.384 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.385 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.386 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.387 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.388 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.389 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.390 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.391 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.392 = private unnamed_addr constant [37 x i8] c"comment is never closed (missing */)\00" -@.str.393 = private unnamed_addr constant [1 x i8] c"\00" -@.str.394 = private unnamed_addr constant [1 x i8] c"\00" -@.str.395 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.396 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.397 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.398 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.399 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.400 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.401 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.402 = private unnamed_addr constant [27 x i8] c"used .nl on a null pointer\00" -@.str.403 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.404 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.405 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.406 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.407 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.408 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.409 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.410 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.411 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.415 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.416 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.417 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.418 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.419 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.420 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.421 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.422 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.423 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.424 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.425 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.426 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.427 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.428 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.429 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.430 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.431 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.432 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.433 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.434 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.435 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.436 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.442 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.443 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.444 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.445 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.446 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.447 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.448 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.449 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.450 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.451 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.452 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.453 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.454 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.455 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.456 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.457 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.458 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.459 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.460 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.461 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.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 [14 x i8] c"src/lexer.fch\00" -@.str.465 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.466 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.467 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.468 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.469 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.470 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.471 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.472 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.473 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.474 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.475 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.476 = private unnamed_addr constant [1 x i8] c"\00" -@.str.477 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.478 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.479 = private unnamed_addr constant [35 x i8] c"string is never closed (missing \22)\00" -@.str.480 = private unnamed_addr constant [33 x i8] c"char is never closed (missing ')\00" -@.str.481 = private unnamed_addr constant [1 x i8] c"\00" -@.str.482 = private unnamed_addr constant [45 x i8] c"a char holds exactly one character, like 'a'\00" -@.str.483 = private unnamed_addr constant [1 x i8] c"\00" -@.str.484 = private unnamed_addr constant [75 x i8] c" (names use only a-z, A-Z, 0-9 and _; other letters only go inside \22text\22)\00" -@.str.485 = private unnamed_addr constant [23 x i8] c"unexpected character '\00" -@.str.486 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.487 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.488 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.489 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.490 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.491 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.492 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.493 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.494 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.495 = private unnamed_addr constant [1 x i8] c"\00" -@.str.496 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.497 = private unnamed_addr constant [29 x i8] c"used .line on a null pointer\00" -@.str.498 = private unnamed_addr constant [14 x i8] c"src/lexer.fch\00" -@.str.499 = private unnamed_addr constant [28 x i8] c"used .col on a null pointer\00" -@.str.500 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.501 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.502 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.503 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.504 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.506 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.507 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.508 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.509 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.510 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.511 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.512 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.513 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.514 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.515 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.516 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.517 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.518 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.519 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.520 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.521 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.522 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.523 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.524 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.525 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.527 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.528 = private unnamed_addr constant [12 x i8] c"src/ast.fch\00" -@.str.529 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.530 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.531 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.532 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.533 = private unnamed_addr constant [2 x i8] c".\00" -@.str.534 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.535 = private unnamed_addr constant [8 x i8] c"nothing\00" -@.str.536 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.537 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.538 = private unnamed_addr constant [2 x i8] c":\00" -@.str.539 = private unnamed_addr constant [2 x i8] c":\00" -@.str.540 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.541 = private unnamed_addr constant [1 x i8] c"\00" -@.str.542 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.544 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.545 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.546 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.547 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.548 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.549 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.550 = private unnamed_addr constant [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 [26 x i8] c"used .i on a null pointer\00" -@.str.553 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.554 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.555 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.556 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.557 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.558 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.559 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.560 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.561 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.562 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.563 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.564 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.565 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.566 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.567 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.568 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.569 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.570 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.571 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.572 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.573 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.574 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.575 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.576 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.577 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.578 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.579 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.580 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.581 = private unnamed_addr constant [12 x i8] c"end of file\00" -@.str.582 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.583 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.584 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.585 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.586 = private unnamed_addr constant [9 x i8] c"a string\00" -@.str.587 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.588 = private unnamed_addr constant [7 x i8] c"a char\00" -@.str.589 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.590 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.591 = private unnamed_addr constant [10 x i8] c"expected \00" -@.str.592 = private unnamed_addr constant [9 x i8] c", found \00" -@.str.593 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.594 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.595 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.596 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.597 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.598 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.599 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.600 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.601 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.602 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.603 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.604 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.605 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.606 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.607 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.608 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.609 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.610 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.611 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.612 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.613 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.614 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.615 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.616 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.617 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.618 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.619 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.620 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.621 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.622 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.623 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.624 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.625 = private unnamed_addr constant [37 x i8] c"']' (an array type looks like []int)\00" -@.str.626 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.627 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.628 = private unnamed_addr constant [57 x i8] c" (expected a type like int, str, []int or a struct name)\00" -@.str.629 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.630 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.631 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.632 = private unnamed_addr constant [40 x i8] c"']' (a map type looks like map[str]int)\00" -@.str.633 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.634 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.635 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.636 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.637 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.638 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.639 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.640 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.641 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.642 = private unnamed_addr constant [2 x i8] c".\00" -@.str.643 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.644 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.645 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.646 = private unnamed_addr constant [2 x i8] c",\00" -@.str.647 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.648 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.649 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.650 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.651 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.652 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.653 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.654 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.655 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.656 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.657 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.658 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.659 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.660 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.661 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.662 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.663 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.664 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.665 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.666 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.667 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.668 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.669 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.670 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.671 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.672 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.673 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.674 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.675 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.676 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.677 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.678 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.679 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.680 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.681 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.682 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.683 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.684 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.685 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.686 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.687 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.688 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.689 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.690 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.691 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.692 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.693 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.694 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.695 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.696 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.697 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.698 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.699 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.700 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.701 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.702 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.703 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.704 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.705 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.706 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.707 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.708 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.709 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.710 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.711 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.712 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.713 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.714 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.715 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.716 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.717 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.718 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.719 = private unnamed_addr constant [2 x i8] c".\00" -@.str.720 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.721 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.722 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.723 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.724 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.725 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.726 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.727 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.728 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.729 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.730 = private unnamed_addr constant [38 x i8] c" (put each statement on its own line)\00" -@.str.731 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.732 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.733 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.734 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.735 = private unnamed_addr constant [29 x i8] c"used .path on a null pointer\00" -@.str.736 = private unnamed_addr constant [2 x i8] c":\00" -@.str.737 = private unnamed_addr constant [2 x i8] c":\00" -@.str.738 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.739 = private unnamed_addr constant [52 x i8] c"expected a module name or a C header after 'import'\00" -@.str.740 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.741 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.742 = private unnamed_addr constant [43 x i8] c"a library name in quotes, like link \22glfw\22\00" -@.str.743 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.744 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.745 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.746 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.747 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.748 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.749 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.750 = private unnamed_addr constant [4 x i8] c"lib\00" -@.str.751 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.752 = private unnamed_addr constant [4 x i8] c".so\00" -@.str.753 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.754 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.755 = private unnamed_addr constant [66 x i8] c"write just the library's name: for libglfw.so that's link \22glfw\22\00" -@.str.756 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.757 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.758 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.759 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.760 = private unnamed_addr constant [7 x i8] c"'enum'\00" -@.str.761 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.762 = private unnamed_addr constant [13 x i8] c"an enum name\00" -@.str.763 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.764 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.765 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.766 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.767 = private unnamed_addr constant [38 x i8] c"an enum is never closed (missing '}')\00" -@.str.768 = private unnamed_addr constant [8 x i8] c"variant\00" -@.str.769 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.770 = private unnamed_addr constant [25 x i8] c"a variant name, like Red\00" -@.str.771 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.772 = private unnamed_addr constant [2 x i8] c")\00" -@.str.773 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.774 = private unnamed_addr constant [2 x i8] c",\00" -@.str.775 = private unnamed_addr constant [2 x i8] c")\00" -@.str.776 = private unnamed_addr constant [36 x i8] c"')' after the values of the variant\00" -@.str.777 = private unnamed_addr constant [13 x i8] c"the variant \00" -@.str.778 = private unnamed_addr constant [28 x i8] c" has empty () : write just \00" -@.str.779 = private unnamed_addr constant [21 x i8] c" if it holds nothing\00" -@.str.780 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.781 = private unnamed_addr constant [53 x i8] c"a variant can't have both values inside and a number\00" -@.str.782 = private unnamed_addr constant [1 x i8] c"\00" -@.str.783 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.784 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.785 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.786 = private unnamed_addr constant [31 x i8] c"a whole number, like Ok = 200\00" -@.str.787 = private unnamed_addr constant [2 x i8] c",\00" -@.str.788 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.789 = private unnamed_addr constant [17 x i8] c" has no variants\00" -@.str.790 = private unnamed_addr constant [55 x i8] c"an enum whose variants hold values can't number them (\00" -@.str.791 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.793 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.794 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.795 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.796 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.797 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.798 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.799 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.800 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.801 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.802 = private unnamed_addr constant [8 x i8] c"'match'\00" -@.str.803 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.804 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.805 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.806 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.807 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.808 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\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 [38 x i8] c"a match is never closed (missing '}')\00" -@.str.812 = private unnamed_addr constant [4 x i8] c"arm\00" -@.str.813 = private unnamed_addr constant [9 x i8] c"patterns\00" -@.str.814 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.815 = private unnamed_addr constant [2 x i8] c",\00" -@.str.816 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.817 = private unnamed_addr constant [58 x i8] c"'->' after the value to match, like Red -> print(\22red\22)\00" -@.str.818 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.819 = private unnamed_addr constant [2 x i8] c",\00" -@.str.820 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.821 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.822 = private unnamed_addr constant [31 x i8] c"a match needs at least one arm\00" -@.str.823 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.824 = private unnamed_addr constant [4 x i8] c"'['\00" -@.str.825 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.826 = private unnamed_addr constant [30 x i8] c"a type parameter name, like T\00" -@.str.827 = private unnamed_addr constant [2 x i8] c",\00" -@.str.828 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.829 = private unnamed_addr constant [30 x i8] c"']' after the type parameters\00" -@.str.830 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.831 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.832 = private unnamed_addr constant [9 x i8] c"'struct'\00" -@.str.833 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.834 = private unnamed_addr constant [14 x i8] c"a struct name\00" -@.str.835 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.836 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.837 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.838 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.839 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.840 = private unnamed_addr constant [39 x i8] c"a struct is never closed (missing '}')\00" -@.str.841 = private unnamed_addr constant [6 x i8] c"field\00" -@.str.842 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.843 = private unnamed_addr constant [29 x i8] c" (a field looks like: int x)\00" -@.str.844 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.845 = private unnamed_addr constant [13 x i8] c"a field name\00" -@.str.846 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.847 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.848 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.849 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.850 = private unnamed_addr constant [69 x i8] c"functions start with 'fn', like: fn add(int a, int b) -> int { ... }\00" -@.str.851 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.852 = private unnamed_addr constant [27 x i8] c"'fn', 'struct' or 'import'\00" -@.str.853 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.854 = private unnamed_addr constant [16 x i8] c"a function name\00" -@.str.855 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.856 = private unnamed_addr constant [2 x i8] c".\00" -@.str.857 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.858 = private unnamed_addr constant [14 x i8] c"a method name\00" -@.str.859 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.860 = private unnamed_addr constant [4 x i8] c"'('\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 [2 x i8] c")\00" -@.str.864 = private unnamed_addr constant [6 x i8] c"param\00" -@.str.865 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.866 = private unnamed_addr constant [17 x i8] c"a parameter name\00" -@.str.867 = private unnamed_addr constant [2 x i8] c",\00" -@.str.868 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.869 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.870 = private unnamed_addr constant [2 x i8] c")\00" -@.str.871 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.872 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.873 = private unnamed_addr constant [3 x i8] c"->\00" -@.str.874 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.875 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.876 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.877 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.878 = private unnamed_addr constant [62 x i8] c" (after '->' comes a type, or ! for a function that can fail)\00" -@.str.879 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.880 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.881 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.882 = private unnamed_addr constant [4 x i8] c"'{'\00" -@.str.883 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.884 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.885 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.886 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.887 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.888 = private unnamed_addr constant [4 x i8] c"eof\00" -@.str.889 = private unnamed_addr constant [36 x i8] c"a '{' is never closed (missing '}')\00" -@.str.890 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.891 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.892 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.893 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.894 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.895 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.896 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.897 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.898 = private unnamed_addr constant [21 x i8] c"a loop variable name\00" -@.str.899 = private unnamed_addr constant [2 x i8] c",\00" -@.str.900 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.901 = private unnamed_addr constant [28 x i8] c"a second loop variable name\00" -@.str.902 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.903 = private unnamed_addr constant [5 x i8] c"'in'\00" -@.str.904 = private unnamed_addr constant [3 x i8] c"..\00" -@.str.905 = private unnamed_addr constant [56 x i8] c"a range of numbers has one loop variable: for i in 0..n\00" -@.str.906 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.907 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.908 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.909 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.910 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.911 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.912 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.913 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.914 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.915 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.916 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.917 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.918 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.919 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.920 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.921 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.922 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.923 = private unnamed_addr constant [49 x i8] c"' can't be used here in the self-hosted compiler\00" -@.str.924 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.925 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.926 = private unnamed_addr constant [16 x i8] c"a variable name\00" -@.str.927 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.928 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.929 = private unnamed_addr constant [3 x i8] c":=\00" -@.str.930 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.931 = private unnamed_addr constant [2 x i8] c"=\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 [3 x i8] c"%=\00" -@.str.937 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.938 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.939 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.940 = private unnamed_addr constant [67 x i8] c"only a variable, a field, an element or p.value can be assigned to\00" -@.str.941 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.942 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.943 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.944 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.945 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.946 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.947 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.948 = private unnamed_addr constant [38 x i8] c"this value is computed but never used\00" -@.str.949 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.950 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.951 = private unnamed_addr constant [29 x i8] c"used .file on a null pointer\00" -@.str.952 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.953 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.954 = private unnamed_addr constant [5 x i8] c"'if'\00" -@.str.955 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.956 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.957 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.958 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.959 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.960 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.961 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.962 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.963 = private unnamed_addr constant [2 x i8] c">\00" -@.str.964 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.965 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.966 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.967 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.968 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.969 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.970 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.971 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.972 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.973 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.974 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.975 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.976 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.977 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.978 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.979 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.980 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.981 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.982 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.983 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.984 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.986 = private unnamed_addr constant [4 x i8] c"'('\00" -@.str.987 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.988 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.989 = private unnamed_addr constant [2 x i8] c")\00" -@.str.990 = private unnamed_addr constant [2 x i8] c")\00" -@.str.991 = private unnamed_addr constant [1 x i8] c"\00" -@.str.992 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.993 = private unnamed_addr constant [2 x i8] c":\00" -@.str.994 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.995 = private unnamed_addr constant [30 x i8] c"used .names on a null pointer\00" -@.str.996 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.997 = private unnamed_addr constant [29 x i8] c"used .kids on a null pointer\00" -@.str.998 = private unnamed_addr constant [2 x i8] c",\00" -@.str.999 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1000 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1001 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1002 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1003 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1004 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.1005 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1006 = private unnamed_addr constant [17 x i8] c"a name after '.'\00" -@.str.1007 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1008 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1009 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1010 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.1011 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1012 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1013 = private unnamed_addr constant [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"']'\00" -@.str.1017 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1018 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1019 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1021 = private unnamed_addr constant [7 x i8] c"string\00" -@.str.1022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1023 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1024 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1025 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1026 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1027 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1028 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1029 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1030 = private unnamed_addr constant [30 x i8] c"used .depth 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 [30 x i8] c"used .depth on a null pointer\00" -@.str.1033 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1034 = private unnamed_addr constant [4 x i8] c"')'\00" -@.str.1035 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.1036 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1037 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1038 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1039 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1040 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1041 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1042 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1043 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1044 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1045 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1046 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1047 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1048 = private unnamed_addr constant [42 x i8] c"':' (a map entry looks like \22key\22: value)\00" -@.str.1049 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1050 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1051 = private unnamed_addr constant [30 x i8] c"used .depth on a null pointer\00" -@.str.1052 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1053 = private unnamed_addr constant [4 x i8] c"']'\00" -@.str.1054 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1055 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1056 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1057 = private unnamed_addr constant [29 x i8] c"used .toks on a null pointer\00" -@.str.1058 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1059 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.1060 = private unnamed_addr constant [15 x i8] c"src/parser.fch\00" -@.str.1061 = private unnamed_addr constant [6 x i8] c"ident\00" -@.str.1062 = private unnamed_addr constant [6 x i8] c"targs\00" -@.str.1063 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1064 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1065 = private unnamed_addr constant [29 x i8] c"']' after the type arguments\00" -@.str.1066 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1067 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1068 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.1069 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.1070 = private unnamed_addr constant [12 x i8] c"unexpected \00" -@.str.1071 = private unnamed_addr constant [20 x i8] c" (expected a value)\00" -@.str.1072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1073 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.1074 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.1075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1076 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1077 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.1078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1079 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1080 = private unnamed_addr constant [2 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 [12 x i8] c"src/gen.fch\00" -@.str.1084 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1085 = private unnamed_addr constant [4 x i8] c"@R\09\00" -@.str.1086 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1087 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1089 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1090 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1091 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1092 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1093 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1094 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1095 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1096 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1097 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1099 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1100 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1101 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1102 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1103 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1104 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1105 = private unnamed_addr constant [6 x i8] c" -> !\00" -@.str.1106 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1107 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.1108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1109 = private unnamed_addr constant [5 x i8] c" -> \00" -@.str.1110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1111 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1112 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.1113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1114 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1117 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.1118 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.1119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1120 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1123 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1124 = private unnamed_addr constant [4 x i8] c"@I\09\00" -@.str.1125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1126 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.1127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1128 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1129 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1132 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1133 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1134 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1135 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1136 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1141 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1142 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1143 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1146 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1147 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1148 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.1149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1150 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.1151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1152 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.1156 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1157 = private unnamed_addr constant [4 x i8] c"@F\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 [2 x i8] c"\09\00" -@.str.1161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1162 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1164 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1165 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1166 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1167 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1168 = private unnamed_addr constant [4 x i8] c"fn \00" -@.str.1169 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1170 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1171 = private unnamed_addr constant [7 x i8] c"](...)\00" -@.str.1172 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1174 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1176 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"@S\09\00" -@.str.1182 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1183 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1185 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [28 x i8] c"used .idx on a null pointer\00" -@.str.1191 = private unnamed_addr constant [5 x i8] c"@SF\09\00" -@.str.1192 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1193 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1195 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1197 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1198 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 .progs 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 [1 x i8] c"\00" -@.str.1203 = private unnamed_addr constant [2 x i8] c",\00" -@.str.1204 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1205 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1206 = private unnamed_addr constant [4 x i8] c"@E\09\00" -@.str.1207 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1208 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1209 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1210 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1211 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1212 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1213 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1215 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1216 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1217 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.1218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1219 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.1220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1221 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1222 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1223 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.1224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1225 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1226 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1227 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1229 = private unnamed_addr constant [30 x i8] c"used .files 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 [2 x i8] c":\00" -@.str.1232 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1233 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.1234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1235 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.1236 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1237 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1238 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1240 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1242 = private unnamed_addr constant [6 x i8] c"call \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 .body on a null pointer\00" -@.str.1245 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1246 = private unnamed_addr constant [9 x i8] c", !dbg !\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 .body on a null pointer\00" -@.str.1249 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1251 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1252 = private unnamed_addr constant [3 x i8] c"%t\00" -@.str.1253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1254 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1255 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1256 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1258 = private unnamed_addr constant [28 x i8] c"used .lbl on a null pointer\00" -@.str.1259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1260 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1261 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1263 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1265 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1266 = private unnamed_addr constant [11 x i8] c"br label %\00" -@.str.1267 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1268 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1269 = private unnamed_addr constant [7 x i8] c"br i1 \00" -@.str.1270 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1271 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1273 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1275 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1276 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1277 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1278 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1279 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1280 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1281 = private unnamed_addr constant [3 x i8] c" \00" -@.str.1282 = private unnamed_addr constant [11 x i8] c" = alloca \00" -@.str.1283 = private unnamed_addr constant [11 x i8] c", align 16\00" -@.str.1284 = private unnamed_addr constant [9 x i8] c" = load \00" -@.str.1285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1286 = private unnamed_addr constant [7 x i8] c"store \00" -@.str.1287 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1288 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1289 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.1290 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1291 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1292 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1293 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1294 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1295 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1296 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1297 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1298 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1299 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1300 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1301 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1302 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1303 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.1304 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.1305 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.1306 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1307 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.1308 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1310 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1311 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1313 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1315 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1316 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1318 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1319 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1321 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1322 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1323 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1324 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1325 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1326 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1327 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1329 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1331 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1332 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.1335 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1337 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1338 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1340 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.1341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1344 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1345 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1346 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1347 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1348 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1349 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1350 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1351 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1352 = 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.1353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1354 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1355 = private unnamed_addr constant [42 x i8] c"a map value can't have the type 'nothing'\00" -@.str.1356 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1357 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1358 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1359 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1360 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1361 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.1362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1363 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1365 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.1366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1367 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.1368 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1369 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1370 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1371 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1372 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1373 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1374 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1375 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1376 = private unnamed_addr constant [29 x i8] c"there is no C struct named '\00" -@.str.1377 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1378 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1379 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1381 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.1382 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1383 = private unnamed_addr constant [37 x i8] c"' is not imported here (add: import \00" -@.str.1384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1385 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1386 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1387 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1388 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.1389 = private unnamed_addr constant [25 x i8] c"there is no type named '\00" -@.str.1390 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.1391 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1393 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1394 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1395 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1396 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1397 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.1402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1403 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1404 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.1405 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1406 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1407 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1408 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.1409 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1410 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.1411 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.1412 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1413 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1414 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1415 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1416 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1417 = private unnamed_addr constant [38 x i8] c"{ ptr, i64, i64, i64, ptr, i64, i64 }\00" -@.str.1418 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.1419 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1420 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.1421 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1422 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1423 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1424 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1425 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1426 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1427 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1428 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1429 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1430 = private unnamed_addr constant [4 x i8] c"%S.\00" -@.str.1431 = private unnamed_addr constant [2 x i8] c".\00" -@.str.1432 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.1433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.1434 = private unnamed_addr constant [7 x i8] c"{ i1, \00" -@.str.1435 = private unnamed_addr constant [22 x i8] c", { ptr, i64, i64 } }\00" -@.str.1436 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1437 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1438 = private unnamed_addr constant [2 x i8] c":\00" -@.str.1439 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1440 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1441 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1442 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1443 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1444 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.1445 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1446 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1447 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1448 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1449 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.1450 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.1451 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1452 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1453 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1454 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1455 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1456 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1457 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1458 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1459 = private unnamed_addr constant [5 x i8] c"arr_\00" -@.str.1460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1461 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1462 = private unnamed_addr constant [5 x i8] c"map_\00" -@.str.1463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1464 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1466 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1467 = private unnamed_addr constant [3 x i8] c"E_\00" -@.str.1468 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1469 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1470 = private unnamed_addr constant [3 x i8] c"S_\00" -@.str.1471 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.1472 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.1473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1476 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1477 = private unnamed_addr constant [7 x i8] c"@.str.\00" -@.str.1478 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1479 = private unnamed_addr constant [29 x i8] c"used .nstr on a null pointer\00" -@.str.1480 = private unnamed_addr constant [2 x i8] c"\5C\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 .head on a null pointer\00" -@.str.1483 = private unnamed_addr constant [35 x i8] c" = private unnamed_addr constant [\00" -@.str.1484 = private unnamed_addr constant [10 x i8] c" x i8] c\22\00" -@.str.1485 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1486 = private unnamed_addr constant [5 x i8] c"\5C00\22\00" -@.str.1487 = private unnamed_addr constant [7 x i8] c"{ ptr \00" -@.str.1488 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1489 = private unnamed_addr constant [10 x i8] c", i64 0 }\00" -@.str.1490 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1491 = private unnamed_addr constant [6 x i8] c"panic\00" -@.str.1492 = private unnamed_addr constant [3 x i8] c"ok\00" -@.str.1493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1494 = private unnamed_addr constant [30 x i8] c"used .files 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 [28 x i8] c"call void @finch_panic(ptr \00" -@.str.1497 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1498 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1499 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1500 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1502 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1503 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.1504 = private unnamed_addr constant [8 x i8] c"inrange\00" -@.str.1505 = private unnamed_addr constant [14 x i8] c"icmp uge i64 \00" -@.str.1506 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1508 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.1509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1510 = private unnamed_addr constant [34 x i8] c"call void @finch_panic_index(ptr \00" -@.str.1511 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1512 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1513 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1514 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1515 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.1516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1517 = private unnamed_addr constant [29 x i8] c"used .term 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 .body 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 [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.1526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1527 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1529 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1530 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1531 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1532 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1533 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1535 = private unnamed_addr constant [28 x i8] c"used .tmp on a null pointer\00" -@.str.1536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1537 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1539 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.1540 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.1541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1542 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.1543 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1544 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1545 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1546 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1547 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.1548 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.1549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1550 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.1551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1552 = private unnamed_addr constant [32 x i8] c"used .allocas 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 [28 x i8] c"used .tmp on a null pointer\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 .term 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 [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.1559 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1560 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1561 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1562 = private unnamed_addr constant [7 x i8] c"n.cond\00" -@.str.1563 = private unnamed_addr constant [7 x i8] c"n.body\00" -@.str.1564 = private unnamed_addr constant [6 x i8] c"n.end\00" -@.str.1565 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1566 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.1567 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1568 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1569 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1570 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1571 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.1572 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1575 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1576 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1577 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.1578 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1579 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1580 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1581 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1582 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1583 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1584 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1585 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1586 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1587 = private unnamed_addr constant [13 x i8] c"@finch.copy.\00" -@.str.1588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1589 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1591 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1592 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1594 = private unnamed_addr constant [56 x i8] c"call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1595 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1596 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1597 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1598 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1599 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1600 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1601 = private unnamed_addr constant [65 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1\00" -@.str.1602 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1603 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1604 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1606 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1607 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1608 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1610 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1611 = private unnamed_addr constant [56 x i8] c"call void @finch_map_clone_raw(ptr %dst, ptr %src, i64 \00" -@.str.1612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1615 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1616 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1617 = private unnamed_addr constant [25 x i8] c", ptr %src, i32 0, i32 2\00" -@.str.1618 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1620 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1622 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1623 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1624 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1625 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1626 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1627 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1628 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.1629 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1633 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1635 = private unnamed_addr constant [5 x i8] c"%src\00" -@.str.1636 = private unnamed_addr constant [5 x i8] c"%dst\00" -@.str.1637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1638 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1639 = private unnamed_addr constant [24 x i8] c", ptr %dst, i32 0, i32 \00" -@.str.1640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1642 = private unnamed_addr constant [24 x i8] c", ptr %src, i32 0, i32 \00" -@.str.1643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1645 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1646 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1647 = private unnamed_addr constant [21 x i8] c"(ptr %dst, ptr %src)\00" -@.str.1648 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1649 = private unnamed_addr constant [31 x i8] c"call void @finch_str_drop(ptr \00" -@.str.1650 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1651 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1652 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1653 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1655 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.1656 = private unnamed_addr constant [13 x i8] c"@finch.drop.\00" -@.str.1657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1658 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1660 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1661 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1662 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1663 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1664 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1665 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1666 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1667 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1668 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1670 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1671 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_free(ptr %a)\00" -@.str.1672 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1676 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1677 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1678 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1680 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1681 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1682 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1683 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1685 = private unnamed_addr constant [34 x i8] c"call void @finch_map_free(ptr %a)\00" -@.str.1686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1690 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1691 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1694 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1695 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1696 = private unnamed_addr constant [9 x i8] c"(ptr %a)\00" -@.str.1697 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1698 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1699 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1700 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1702 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1704 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1705 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1707 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1709 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.1710 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1711 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.1712 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1713 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1714 = private unnamed_addr constant [36 x i8] c" = call i32 (ptr, ...) @printf(ptr \00" -@.str.1715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1716 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1717 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1718 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1719 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1720 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1721 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1722 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1723 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1724 = private unnamed_addr constant [5 x i8] c"%lld\00" -@.str.1725 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1726 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1727 = private unnamed_addr constant [5 x i8] c"%llu\00" -@.str.1728 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1729 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1730 = private unnamed_addr constant [3 x i8] c"%g\00" -@.str.1731 = private unnamed_addr constant [8 x i8] c"double \00" -@.str.1732 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1733 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1734 = private unnamed_addr constant [9 x i8] c"sext i8 \00" -@.str.1735 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1736 = private unnamed_addr constant [5 x i8] c"'%c'\00" -@.str.1737 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1738 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.1739 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1740 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1741 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1742 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1743 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.1744 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1745 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1746 = private unnamed_addr constant [3 x i8] c"%s\00" -@.str.1747 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.1748 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1749 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.1750 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.1751 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.1752 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1753 = private unnamed_addr constant [7 x i8] c"\22%.*s\22\00" -@.str.1754 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1755 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1756 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.1757 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1758 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1759 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1760 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.1761 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.1762 = private unnamed_addr constant [9 x i8] c"ptr.null\00" -@.str.1763 = private unnamed_addr constant [9 x i8] c"ptr.addr\00" -@.str.1764 = private unnamed_addr constant [9 x i8] c"ptr.done\00" -@.str.1765 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1766 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1767 = private unnamed_addr constant [7 x i8] c"0x%llx\00" -@.str.1768 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1769 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.1770 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1771 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1772 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1773 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1774 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1775 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.1776 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.1777 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_print(ptr \00" -@.str.1778 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1779 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_add(ptr \00" -@.str.1780 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1781 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1782 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1783 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.1784 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.1785 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_int(ptr \00" -@.str.1786 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1787 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.1788 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1789 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_uint(ptr \00" -@.str.1790 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1791 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.1792 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1793 = private unnamed_addr constant [32 x i8] c"call void @finch_buf_float(ptr \00" -@.str.1794 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.1795 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.1796 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1797 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.1798 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_char(ptr \00" -@.str.1799 = private unnamed_addr constant [6 x i8] c", i8 \00" -@.str.1800 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1801 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1802 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.1803 = private unnamed_addr constant [31 x i8] c"call void @finch_buf_bool(ptr \00" -@.str.1804 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1805 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.1806 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.1807 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1808 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.1809 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_str(ptr \00" -@.str.1810 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1811 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.1812 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1813 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1814 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.1815 = private unnamed_addr constant [30 x i8] c"call void @finch_buf_ptr(ptr \00" -@.str.1816 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1817 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1818 = private unnamed_addr constant [11 x i8] c"call void \00" -@.str.1819 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.1820 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1821 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1822 = private unnamed_addr constant [15 x i8] c"@finch.format.\00" -@.str.1823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1824 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1825 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1826 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.1827 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.1828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.1830 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1831 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1832 = private unnamed_addr constant [63 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1\00" -@.str.1833 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1834 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.1835 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1836 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1837 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.1838 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1839 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1840 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1841 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1842 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1843 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.1844 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.1845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1846 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1847 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1848 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.1849 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.1850 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1851 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.1852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1853 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.1854 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1855 = private unnamed_addr constant [11 x i8] c"enum.other\00" -@.str.1856 = private unnamed_addr constant [10 x i8] c"enum.done\00" -@.str.1857 = private unnamed_addr constant [7 x i8] c"enum.v\00" -@.str.1858 = private unnamed_addr constant [5 x i8] c"i32 \00" -@.str.1859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1860 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1862 = private unnamed_addr constant [12 x i8] c"switch i32 \00" -@.str.1863 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1864 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1865 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1866 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1868 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1870 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1872 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1873 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1874 = private unnamed_addr constant [40 x i8] c"call void @finch_buf_int(ptr %buf, i64 \00" -@.str.1875 = private unnamed_addr constant [10 x i8] c"sext i32 \00" -@.str.1876 = private unnamed_addr constant [8 x i8] c" to i64\00" -@.str.1877 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1878 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1879 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1880 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.1881 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1882 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1883 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.1884 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1885 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.1886 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1887 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1888 = private unnamed_addr constant [23 x i8] c", ptr %a, i32 0, i32 2\00" -@.str.1889 = private unnamed_addr constant [3 x i8] c"%a\00" -@.str.1890 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1891 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.1892 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.1893 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.1894 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.1895 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.1896 = private unnamed_addr constant [4 x i8] c"sep\00" -@.str.1897 = private unnamed_addr constant [5 x i8] c"item\00" -@.str.1898 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1899 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1900 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1901 = private unnamed_addr constant [3 x i8] c"i1\00" -@.str.1902 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.1903 = private unnamed_addr constant [5 x i8] c"%buf\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 [5 x i8] c"%buf\00" -@.str.1907 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1908 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1909 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1911 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1912 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.1913 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.1914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1915 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.1916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1918 = private unnamed_addr constant [32 x i8] c"used .structs 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 [4 x i8] c"i64\00" -@.str.1921 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1922 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1923 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1924 = private unnamed_addr constant [10 x i8] c"sum.other\00" -@.str.1925 = private unnamed_addr constant [9 x i8] c"sum.done\00" -@.str.1926 = private unnamed_addr constant [6 x i8] c"sum.v\00" -@.str.1927 = private unnamed_addr constant [5 x i8] c"i64 \00" -@.str.1928 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1929 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1930 = private unnamed_addr constant [12 x i8] c"switch i64 \00" -@.str.1931 = private unnamed_addr constant [10 x i8] c", label %\00" -@.str.1932 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.1933 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1934 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.1935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1936 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.1937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1938 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1940 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1941 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1942 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1943 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1944 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1945 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1947 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1948 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1949 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1950 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1951 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1953 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1954 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1955 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1956 = private unnamed_addr constant [4 x i8] c"(?)\00" -@.str.1957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1958 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.1959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1960 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1961 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.1962 = private unnamed_addr constant [3 x i8] c", \00" -@.str.1963 = private unnamed_addr constant [1 x i8] c"\00" -@.str.1964 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1966 = private unnamed_addr constant [3 x i8] c": \00" -@.str.1967 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.1968 = private unnamed_addr constant [22 x i8] c", ptr %a, i32 0, i32 \00" -@.str.1969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1970 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1971 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1972 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.1973 = private unnamed_addr constant [5 x i8] c"%buf\00" -@.str.1974 = private unnamed_addr constant [2 x i8] c")\00" -@.str.1975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.1976 = private unnamed_addr constant [22 x i8] c"define internal void \00" -@.str.1977 = private unnamed_addr constant [19 x i8] c"(ptr %buf, ptr %a)\00" -@.str.1978 = private unnamed_addr constant [7 x i8] c"trunc \00" -@.str.1979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1980 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1981 = private unnamed_addr constant [6 x i8] c"sext \00" -@.str.1982 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1983 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1984 = private unnamed_addr constant [6 x i8] c"zext \00" -@.str.1985 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1986 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1987 = private unnamed_addr constant [7 x i8] c"fpext \00" -@.str.1988 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1989 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1990 = private unnamed_addr constant [9 x i8] c"fptrunc \00" -@.str.1991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1992 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1993 = private unnamed_addr constant [8 x i8] c"sitofp \00" -@.str.1994 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1995 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1996 = private unnamed_addr constant [8 x i8] c"uitofp \00" -@.str.1997 = private unnamed_addr constant [2 x i8] c" \00" -@.str.1998 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.1999 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2000 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2001 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2002 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2003 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2004 = private unnamed_addr constant [12 x i8] c"the number \00" -@.str.2005 = private unnamed_addr constant [17 x i8] c" doesn't fit in \00" -@.str.2006 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2007 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.2008 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2009 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2010 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2011 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2012 = private unnamed_addr constant [10 x i8] c" must be \00" -@.str.2013 = private unnamed_addr constant [15 x i8] c", but this is \00" -@.str.2014 = private unnamed_addr constant [7 x i8] c" (use \00" -@.str.2015 = private unnamed_addr constant [17 x i8] c"(...) to convert\00" -@.str.2016 = private unnamed_addr constant [27 x i8] c", it cuts off the fraction\00" -@.str.2017 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2018 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2019 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2020 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2021 = private unnamed_addr constant [35 x i8] c" (turn it into text with str(...))\00" -@.str.2022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2023 = private unnamed_addr constant [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [31 x i8] c"used .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2034 = private unnamed_addr constant [32 x i8] c"used .deferOn 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 [12 x i8] c"src/gen.fch\00" -@.str.2039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2040 = private unnamed_addr constant [35 x i8] c"used .deferLimit 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 [12 x i8] c"src/gen.fch\00" -@.str.2045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2046 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2048 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2051 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2054 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2057 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2059 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2060 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2062 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2064 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2065 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2067 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.2068 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.2069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2070 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2071 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2072 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2073 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2074 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.2075 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.2076 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.2077 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.2078 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.2079 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.2080 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.2081 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.2082 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2083 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.2084 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2085 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2086 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2087 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.2088 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2089 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2090 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2091 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.2092 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2093 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.2094 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.2095 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2096 = private unnamed_addr constant [19 x i8] c"a variable named '\00" -@.str.2097 = private unnamed_addr constant [22 x i8] c"' already exists here\00" -@.str.2098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2099 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2100 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2101 = private unnamed_addr constant [36 x i8] c"' is already the name of a function\00" -@.str.2102 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2103 = private unnamed_addr constant [39 x i8] c"' is a built-in name, pick another one\00" -@.str.2104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2105 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2107 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2109 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2110 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 .scopes 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 [12 x i8] c"src/gen.fch\00" -@.str.2116 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2118 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2120 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2121 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.2122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2123 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.2124 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.2125 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2126 = private unnamed_addr constant [2 x i8] c"$\00" -@.str.2127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2128 = private unnamed_addr constant [30 x i8] c"used .progs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.2131 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2133 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .idx on a null pointer\00" -@.str.2137 = private unnamed_addr constant [4 x i8] c"@V\09\00" -@.str.2138 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2139 = private unnamed_addr constant [2 x i8] c"\09\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 .files 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 [2 x i8] c"\09\00" -@.str.2144 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2145 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2146 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2147 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.2148 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2149 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2150 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.2151 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.2152 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2153 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.2154 = private unnamed_addr constant [1 x i8] c"\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 .scopes on a null pointer\00" -@.str.2157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2158 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.2159 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2160 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2161 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2162 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2164 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.2165 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2166 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2168 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2169 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2170 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2172 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2173 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2175 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2177 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2179 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2181 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2182 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2183 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2186 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2187 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2191 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2192 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2195 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.2196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2197 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.2198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2199 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.2200 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2201 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.2202 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.2203 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.2204 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2206 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2207 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.2208 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.2209 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.2210 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.2211 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.2212 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.2213 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.2214 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.2215 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.2216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2217 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.2218 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2219 = private unnamed_addr constant [27 x i8] c"used .mm 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 [5 x i8] c"call\00" -@.str.2222 = private unnamed_addr constant [5 x i8] c"addr\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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2226 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2227 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2228 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2229 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2230 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2231 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2232 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2233 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2234 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2235 = private unnamed_addr constant [30 x i8] c"used .progs 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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2242 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2243 = private unnamed_addr constant [13 x i8] c"the struct '\00" -@.str.2244 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2245 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2246 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2247 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2248 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2249 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2250 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2252 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2254 = private unnamed_addr constant [30 x i8] c"used .progs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2258 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2259 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2260 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2261 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2262 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2264 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [31 x i8] c"used .module 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2271 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2272 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2273 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2274 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2275 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2276 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2277 = private unnamed_addr constant [7 x i8] c" twice\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 .sums 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 [31 x i8] c"used .module on a null pointer\00" -@.str.2282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2283 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2284 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2285 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2287 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2288 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2289 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.2290 = private unnamed_addr constant [18 x i8] c" has the variant \00" -@.str.2291 = private unnamed_addr constant [7 x i8] c" twice\00" -@.str.2292 = private unnamed_addr constant [17 x i8] c"two variants of \00" -@.str.2293 = private unnamed_addr constant [18 x i8] c" have the number \00" -@.str.2294 = private unnamed_addr constant [21 x i8] c" (give each its own)\00" -@.str.2295 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2296 = private unnamed_addr constant [30 x i8] c"used .enums 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.2299 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2300 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2301 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2303 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2304 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2306 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2308 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2310 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2313 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2315 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2318 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2320 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2321 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2322 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2323 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2324 = private unnamed_addr constant [19 x i8] c"' is defined twice\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 [1 x i8] c"\00" -@.str.2328 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2329 = private unnamed_addr constant [54 x i8] c"' here (a method goes in the same file as its struct)\00" -@.str.2330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2331 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2332 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2333 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2335 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2336 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2337 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2338 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2339 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2340 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2341 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2342 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2343 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2344 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2345 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.2346 = private unnamed_addr constant [27 x i8] c"there is no struct named '\00" -@.str.2347 = 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.2348 = private unnamed_addr constant [12 x i8] c"the method \00" -@.str.2349 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2350 = private unnamed_addr constant [18 x i8] c" is defined twice\00" -@.str.2351 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2352 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2353 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2354 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2355 = private unnamed_addr constant [29 x i8] c" already has a field named '\00" -@.str.2356 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2358 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2359 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.2360 = private unnamed_addr constant [19 x i8] c"' is defined twice\00" -@.str.2361 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2362 = private unnamed_addr constant [44 x i8] c"' is a built-in function, pick another name\00" -@.str.2363 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2364 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2365 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2367 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2368 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2369 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2371 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2372 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2373 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2375 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.2376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2377 = private unnamed_addr constant [23 x i8] c"'self' is already the \00" -@.str.2378 = private unnamed_addr constant [25 x i8] c" the method is called on\00" -@.str.2379 = 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 [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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2385 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [29 x i8] c"used .sigs on a null pointer\00" -@.str.2388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2389 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2390 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2392 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2393 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2394 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2395 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2397 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2398 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2399 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"self\00" -@.str.2403 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2405 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2407 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2408 = private unnamed_addr constant [27 x i8] c"used .mm on a null pointer\00" -@.str.2409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2410 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2413 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2415 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2417 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2418 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\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 [5 x i8] c"self\00" -@.str.2422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2424 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2427 = private unnamed_addr constant [27 x i8] c"used .mm 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 [29 x i8] c"used .sigs 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 [30 x i8] c"used .progs on a null pointer\00" -@.str.2432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2433 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2436 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2437 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [12 x i8] c"src/gen.fch\00" -@.str.2442 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2444 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2445 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2449 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [12 x i8] c"src/gen.fch\00" -@.str.2452 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [34 x i8] c"used .templates 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 [34 x i8] c"used .templates on a null pointer\00" -@.str.2459 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2460 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2461 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2462 = private unnamed_addr constant [35 x i8] c"there is no generic struct named '\00" -@.str.2463 = private unnamed_addr constant [29 x i8] c"' (a struct written struct \00" -@.str.2464 = private unnamed_addr constant [35 x i8] c"[T] { ... } takes type arguments)\00" -@.str.2465 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2466 = private unnamed_addr constant [34 x i8] c"used .templates 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 [8 x i8] c" takes \00" -@.str.2469 = private unnamed_addr constant [25 x i8] c" type argument(s), like \00" -@.str.2470 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2471 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2472 = private unnamed_addr constant [12 x i8] c"], but got \00" -@.str.2473 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2474 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2476 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [7 x i8] c"struct\00" -@.str.2480 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2481 = private unnamed_addr constant [34 x i8] c"used .templates 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 [2 x i8] c"[\00" -@.str.2484 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.2485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2486 = private unnamed_addr constant [30 x i8] c"used .progs 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 [8 x i8] c"@finch.\00" -@.str.2490 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2491 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2492 = private unnamed_addr constant [8 x i8] c"@finch.\00" -@.str.2493 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2494 = private unnamed_addr constant [2 x i8] c".\00" -@.str.2495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2496 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.2500 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2502 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2504 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2506 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2508 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2509 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2510 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2512 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\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 [12 x i8] c"src/gen.fch\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 [31 x i8] c"used .tnames 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 [30 x i8] c"used .targs on a null pointer\00" -@.str.2522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2523 = private unnamed_addr constant [31 x i8] c"used .module 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2527 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2529 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2530 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2532 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2534 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2535 = private unnamed_addr constant [30 x i8] c"used .types on a null pointer\00" -@.str.2536 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2538 = private unnamed_addr constant [30 x i8] c"used .bound on a null pointer\00" -@.str.2539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2540 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2541 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2542 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2543 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2545 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2546 = private unnamed_addr constant [4 x i8] c"map\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 [12 x i8] c"src/gen.fch\00" -@.str.2550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2551 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.2552 = private unnamed_addr constant [7 x i8] c"struct\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 [12 x i8] c"src/gen.fch\00" -@.str.2558 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2559 = private unnamed_addr constant [34 x i8] c"used .templates on a null pointer\00" -@.str.2560 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2562 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2565 = private unnamed_addr constant [8 x i8] c" takes \00" -@.str.2566 = private unnamed_addr constant [28 x i8] c" type argument(s), but got \00" -@.str.2567 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2568 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2569 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2570 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2571 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2572 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.2573 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2574 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2575 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2577 = private unnamed_addr constant [30 x i8] c"this has no type to work out \00" -@.str.2578 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2579 = private unnamed_addr constant [6 x i8] c" from\00" -@.str.2580 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2581 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2582 = private unnamed_addr constant [17 x i8] c"can't tell what \00" -@.str.2583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2584 = private unnamed_addr constant [25 x i8] c" is here; write it out: \00" -@.str.2585 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.2586 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2588 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.2589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2593 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.2594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2595 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.2596 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2597 = private unnamed_addr constant [2 x i8] c" \00" -@.str.2598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2599 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.2600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2601 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2602 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2603 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2605 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2607 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2608 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2609 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2611 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2612 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2613 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2614 = private unnamed_addr constant [32 x i8] c"used .structs 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 .structs on a null pointer\00" -@.str.2618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2619 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2620 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2622 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.2623 = private unnamed_addr constant [7 x i8] c" x i8]\00" -@.str.2624 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2625 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2626 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2627 = private unnamed_addr constant [50 x i8] c"has fields Finch can't see (unions or bit fields)\00" -@.str.2628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2629 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2630 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2632 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2633 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2634 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2635 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2638 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2639 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2641 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2642 = private unnamed_addr constant [6 x i8] c"%S.C.\00" -@.str.2643 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2644 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2645 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2647 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2649 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2650 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2653 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2654 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2655 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2656 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2658 = private unnamed_addr constant [30 x i8] c"used .targs 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 [33 x i8] c"used .instNote on a null pointer\00" -@.str.2661 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2662 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2665 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2666 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2667 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2670 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2671 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.2672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2673 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2674 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2675 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2676 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2677 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2679 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.2680 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2681 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.2682 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2683 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.2684 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2685 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.2686 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2687 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2689 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2690 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2691 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2693 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2694 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2695 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2696 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2697 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.2698 = private unnamed_addr constant [27 x i8] c" contains itself; use ptr[\00" -@.str.2699 = private unnamed_addr constant [8 x i8] c"] or []\00" -@.str.2700 = private unnamed_addr constant [16 x i8] c" for that field\00" -@.str.2701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2702 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2703 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2705 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2706 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2707 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2710 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.2711 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2712 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2713 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2714 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2715 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2716 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2717 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2718 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2719 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2720 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2721 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2722 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2726 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2727 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2728 = private unnamed_addr constant [31 x i8] c"used .module 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 [32 x i8] c"used .structs on a null pointer\00" -@.str.2731 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2732 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2733 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.2734 = private unnamed_addr constant [4 x i8] c"%S.\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 .structs on a null pointer\00" -@.str.2737 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2738 = private unnamed_addr constant [2 x i8] c".\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 .structs on a null pointer\00" -@.str.2741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2742 = private unnamed_addr constant [11 x i8] c" = type { \00" -@.str.2743 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2744 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.2745 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2746 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2747 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2748 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2749 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2750 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2752 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.2753 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2754 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2755 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.2756 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.2757 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.2758 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.2759 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.2760 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.2761 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2762 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2763 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2764 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2765 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2766 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.2767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2768 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2770 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.2771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2772 = private unnamed_addr constant [43 x i8] c"!DIDerivedType(tag: DW_TAG_member, name: \22\00" -@.str.2773 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2774 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2775 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2776 = private unnamed_addr constant [13 x i8] c", baseType: \00" -@.str.2777 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2778 = private unnamed_addr constant [11 x i8] c", offset: \00" -@.str.2779 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2780 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2781 = private unnamed_addr constant [10 x i8] c"\22, size: \00" -@.str.2782 = private unnamed_addr constant [13 x i8] c", encoding: \00" -@.str.2783 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2784 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.2785 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2786 = private unnamed_addr constant [3 x i8] c"T:\00" -@.str.2787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2788 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2790 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2791 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2792 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2793 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2795 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2796 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.2797 = private unnamed_addr constant [15 x i8] c"DW_ATE_boolean\00" -@.str.2798 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2799 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2800 = private unnamed_addr constant [19 x i8] c"DW_ATE_signed_char\00" -@.str.2801 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2802 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2803 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2804 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2805 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.2806 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2807 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2808 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.2809 = private unnamed_addr constant [13 x i8] c"DW_ATE_float\00" -@.str.2810 = private unnamed_addr constant [16 x i8] c"DW_ATE_unsigned\00" -@.str.2811 = private unnamed_addr constant [14 x i8] c"DW_ATE_signed\00" -@.str.2812 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.2813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2814 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.2815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2816 = private unnamed_addr constant [22 x i8] c"!DIEnumerator(name: \22\00" -@.str.2817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2818 = private unnamed_addr constant [11 x i8] c"\22, value: \00" -@.str.2819 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2820 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2821 = private unnamed_addr constant [55 x i8] c"!DICompositeType(tag: DW_TAG_enumeration_type, name: \22\00" -@.str.2822 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2823 = private unnamed_addr constant [25 x i8] c", size: 32, elements: !{\00" -@.str.2824 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2825 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2826 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2827 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2828 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2829 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2831 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2832 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2833 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2834 = private unnamed_addr constant [27 x i8] c"used .md 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 [6 x i8] c"fixed\00" -@.str.2837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2838 = private unnamed_addr constant [20 x i8] c"!DISubrange(count: \00" -@.str.2839 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2840 = private unnamed_addr constant [52 x i8] c"!DICompositeType(tag: DW_TAG_array_type, baseType: \00" -@.str.2841 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2842 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2843 = private unnamed_addr constant [16 x i8] c", elements: !{!\00" -@.str.2844 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2845 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2846 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2847 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2848 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.2849 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2850 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.2851 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.2852 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2853 = private unnamed_addr constant [52 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: \00" -@.str.2854 = private unnamed_addr constant [12 x i8] c", size: 64)\00" -@.str.2855 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2856 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.2857 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2858 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2859 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2860 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2861 = private unnamed_addr constant [38 x i8] c", size: 192, align: 64, elements: !{!\00" -@.str.2862 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2863 = private unnamed_addr constant [4 x i8] c", !\00" -@.str.2864 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2865 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2866 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2867 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2868 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.2869 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.2870 = private unnamed_addr constant [67 x i8] c"!DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)\00" -@.str.2871 = private unnamed_addr constant [8 x i8] c"entries\00" -@.str.2872 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.2873 = private unnamed_addr constant [5 x i8] c"used\00" -@.str.2874 = private unnamed_addr constant [4 x i8] c"cap\00" -@.str.2875 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.2876 = private unnamed_addr constant [5 x i8] c"icap\00" -@.str.2877 = private unnamed_addr constant [5 x i8] c"adds\00" -@.str.2878 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2880 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2881 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2882 = private unnamed_addr constant [37 x i8] c", size: 448, align: 64, elements: !{\00" -@.str.2883 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2884 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2886 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2887 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2888 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.2889 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2890 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.2893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2894 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2896 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2897 = private unnamed_addr constant [53 x i8] c"!DICompositeType(tag: DW_TAG_structure_type, name: \22\00" -@.str.2898 = private unnamed_addr constant [11 x i8] c"\22, file: !\00" -@.str.2899 = private unnamed_addr constant [9 x i8] c", size: \00" -@.str.2900 = private unnamed_addr constant [25 x i8] c", align: 8, elements: !{\00" -@.str.2901 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2902 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2904 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2905 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2906 = private unnamed_addr constant [21 x i8] c"!DIBasicType(name: \22\00" -@.str.2907 = private unnamed_addr constant [40 x i8] c"\22, size: 64, encoding: DW_ATE_unsigned)\00" -@.str.2908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2909 = private unnamed_addr constant [27 x i8] c"used .md 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 [12 x i8] c"src/gen.fch\00" -@.str.2912 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2913 = private unnamed_addr constant [3 x i8] c"L:\00" -@.str.2914 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2915 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2916 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2917 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2918 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2919 = private unnamed_addr constant [2 x i8] c":\00" -@.str.2920 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2921 = private unnamed_addr constant [33 x i8] c"used .dbgScope 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 [32 x i8] c"used .mdcache 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 [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2926 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2927 = private unnamed_addr constant [19 x i8] c"!DILocation(line: \00" -@.str.2928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2929 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2930 = private unnamed_addr constant [11 x i8] c", column: \00" -@.str.2931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2932 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2933 = private unnamed_addr constant [11 x i8] c", scope: !\00" -@.str.2934 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2935 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2936 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2938 = private unnamed_addr constant [32 x i8] c"used .mdcache on a null pointer\00" -@.str.2939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2940 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.2941 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.2942 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2943 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.2944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2945 = private unnamed_addr constant [28 x i8] c"!DISubroutineType(types: !{\00" -@.str.2946 = private unnamed_addr constant [3 x i8] c", \00" -@.str.2947 = private unnamed_addr constant [3 x i8] c"})\00" -@.str.2948 = private unnamed_addr constant [31 x i8] c"distinct !DISubprogram(name: \22\00" -@.str.2949 = private unnamed_addr constant [18 x i8] c"\22, linkageName: \22\00" -@.str.2950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2951 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2952 = private unnamed_addr constant [10 x i8] c", file: !\00" -@.str.2953 = private unnamed_addr constant [9 x i8] c", line: \00" -@.str.2954 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2955 = private unnamed_addr constant [14 x i8] c", scopeLine: \00" -@.str.2956 = private unnamed_addr constant [88 x i8] c", flags: DIFlagPrototyped, spFlags: DISPFlagDefinition | DISPFlagLocalToUnit, unit: !0)\00" -@.str.2957 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2958 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.2959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2960 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2961 = private unnamed_addr constant [1 x i8] c"\00" -@.str.2962 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2963 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2964 = private unnamed_addr constant [8 x i8] c", arg: \00" -@.str.2965 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2966 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.2967 = private unnamed_addr constant [25 x i8] c"!DILocalVariable(name: \22\00" -@.str.2968 = private unnamed_addr constant [12 x i8] c"\22, scope: !\00" -@.str.2969 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2970 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.2971 = private unnamed_addr constant [10 x i8] c", file: !\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 .mdfiles 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 [9 x i8] c", line: \00" -@.str.2976 = private unnamed_addr constant [10 x i8] c", type: !\00" -@.str.2977 = private unnamed_addr constant [2 x i8] c")\00" -@.str.2978 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2979 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.2980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2981 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.2982 = private unnamed_addr constant [42 x i8] c"call void @llvm.dbg.declare(metadata ptr \00" -@.str.2983 = private unnamed_addr constant [13 x i8] c", metadata !\00" -@.str.2984 = private unnamed_addr constant [28 x i8] c", metadata !DIExpression())\00" -@.str.2985 = private unnamed_addr constant [21 x i8] c"!llvm.dbg.cu = !{!0}\00" -@.str.2986 = private unnamed_addr constant [31 x i8] c"!llvm.module.flags = !{!1, !2}\00" -@.str.2987 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2988 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2989 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.2990 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.2991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2992 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.2993 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2994 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2995 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.2996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.2997 = private unnamed_addr constant [29 x i8] c"used .sigs 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3001 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3002 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3003 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3004 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.3005 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3006 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3007 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3008 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.3009 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3010 = private unnamed_addr constant [28 x i8] c"used .cur 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 .targs on a null pointer\00" -@.str.3013 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3014 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3015 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3016 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3017 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3018 = private unnamed_addr constant [18 x i8] c" (while building \00" -@.str.3019 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3020 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3021 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3022 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3023 = private unnamed_addr constant [33 x i8] c"used .instNote on a null pointer\00" -@.str.3024 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3025 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3026 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3027 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3028 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3030 = private unnamed_addr constant [28 x i8] c"used .cur 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 [29 x i8] c"used .body 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 [32 x i8] c"used .allocas on a null pointer\00" -@.str.3036 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3037 = private unnamed_addr constant [28 x i8] c"used .tmp 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 [29 x i8] c"used .term on a null pointer\00" -@.str.3040 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3041 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3042 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3043 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3044 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3045 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3047 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3048 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3049 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3050 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3051 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3052 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3053 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3054 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3055 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3056 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3057 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3058 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3059 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3060 = private unnamed_addr constant [10 x i8] c"ptr %self\00" -@.str.3061 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3062 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3063 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3064 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3066 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3068 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3069 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3070 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3071 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3072 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3073 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3075 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.3076 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.3077 = private unnamed_addr constant [6 x i8] c"%self\00" -@.str.3078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3079 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3080 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3081 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3082 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3083 = private unnamed_addr constant [4 x i8] c" %p\00" -@.str.3084 = private unnamed_addr constant [3 x i8] c"%p\00" -@.str.3085 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3086 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3087 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3088 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3089 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3090 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3091 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3092 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3093 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3094 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3096 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3099 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3100 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3102 = private unnamed_addr constant [31 x i8] c"used .dbgArg on a null pointer\00" -@.str.3103 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3105 = private unnamed_addr constant [29 x i8] c"used .term 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3108 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3109 = private unnamed_addr constant [11 x i8] c"function '\00" -@.str.3110 = private unnamed_addr constant [39 x i8] c"' can reach its end without returning \00" -@.str.3111 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3112 = private unnamed_addr constant [28 x i8] c"used .cur 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 [28 x i8] c"used .cur on a null pointer\00" -@.str.3115 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3117 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3118 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3119 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3120 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3121 = private unnamed_addr constant [8 x i8] c" !dbg !\00" -@.str.3122 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3123 = private unnamed_addr constant [33 x i8] c"used .dbgScope on a null pointer\00" -@.str.3124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.3126 = private unnamed_addr constant [17 x i8] c"define internal \00" -@.str.3127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3128 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3129 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3131 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3132 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.3133 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3134 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3135 = private unnamed_addr constant [11 x i8] c" {\0Aentry:\0A\00" -@.str.3136 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3137 = private unnamed_addr constant [32 x i8] c"used .allocas on a null pointer\00" -@.str.3138 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3139 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3140 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3141 = private unnamed_addr constant [29 x i8] c"used .body on a null pointer\00" -@.str.3142 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.3143 = private unnamed_addr constant [4 x i8] c"\0A}\0A\00" -@.str.3144 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3145 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3146 = private unnamed_addr constant [67 x i8] c"this code can never run (it comes after return, break or continue)\00" -@.str.3147 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3148 = private unnamed_addr constant [32 x i8] c"used .dbgLine on a null pointer\00" -@.str.3149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3150 = private unnamed_addr constant [31 x i8] c"used .dbgCol on a null pointer\00" -@.str.3151 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3152 = private unnamed_addr constant [5 x i8] c"decl\00" -@.str.3153 = private unnamed_addr constant [7 x i8] c"assign\00" -@.str.3154 = private unnamed_addr constant [5 x i8] c"expr\00" -@.str.3155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3156 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3157 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3159 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3160 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.3161 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3162 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3163 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3164 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.3165 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.3166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3167 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3168 = private unnamed_addr constant [34 x i8] c"defer inside defer is not allowed\00" -@.str.3169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3170 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3171 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3172 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3173 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3175 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3177 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3178 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3179 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3182 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3183 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3185 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3186 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3187 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.3188 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3189 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3190 = private unnamed_addr constant [28 x i8] c" can't be used inside defer\00" -@.str.3191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3192 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3193 = private unnamed_addr constant [32 x i8] c" can only be used inside a loop\00" -@.str.3194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3195 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3197 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3198 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3199 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3200 = private unnamed_addr constant [19 x i8] c"unknown statement \00" -@.str.3201 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3202 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3204 = private unnamed_addr constant [47 x i8] c"this gives back nothing, so it can't be stored\00" -@.str.3205 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3206 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3207 = private unnamed_addr constant [35 x i8] c"null needs a type, like: ptr[int] \00" -@.str.3208 = private unnamed_addr constant [8 x i8] c" = null\00" -@.str.3209 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3210 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3211 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3212 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3213 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3214 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3215 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.3216 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3217 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3218 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.3219 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3221 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3222 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3223 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.3224 = private unnamed_addr constant [19 x i8] c"' (create it with \00" -@.str.3225 = private unnamed_addr constant [9 x i8] c" := ...)\00" -@.str.3226 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.3227 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.3228 = private unnamed_addr constant [10 x i8] c"the value\00" -@.str.3229 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3230 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3231 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3232 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.3233 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3234 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3235 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3236 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3237 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3238 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3239 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3240 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3241 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3242 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3243 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3244 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3245 = private unnamed_addr constant [12 x i8] c"a condition\00" -@.str.3246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3247 = private unnamed_addr constant [5 x i8] c"then\00" -@.str.3248 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.3249 = private unnamed_addr constant [6 x i8] c"endif\00" -@.str.3250 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3251 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3252 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3253 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3254 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3255 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3256 = private unnamed_addr constant [11 x i8] c"while.cond\00" -@.str.3257 = private unnamed_addr constant [11 x i8] c"while.body\00" -@.str.3258 = private unnamed_addr constant [10 x i8] c"while.end\00" -@.str.3259 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3260 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3262 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3263 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3264 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3265 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3266 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3267 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3269 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3270 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3271 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3272 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3273 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3274 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3275 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3276 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.3277 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.3278 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.3279 = private unnamed_addr constant [5 x i8] c"each\00" -@.str.3280 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3281 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3282 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3283 = private unnamed_addr constant [21 x i8] c"the start of a range\00" -@.str.3284 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3285 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3286 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3287 = private unnamed_addr constant [19 x i8] c"the end of a range\00" -@.str.3288 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3289 = private unnamed_addr constant [9 x i8] c"for.cond\00" -@.str.3290 = private unnamed_addr constant [9 x i8] c"for.body\00" -@.str.3291 = private unnamed_addr constant [9 x i8] c"for.step\00" -@.str.3292 = private unnamed_addr constant [8 x i8] c"for.end\00" -@.str.3293 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3294 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3295 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3297 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3299 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3301 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3302 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3303 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3304 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3306 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3307 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3308 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3309 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3310 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3312 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3314 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3315 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3316 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3317 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3318 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3319 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3320 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3321 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3322 = private unnamed_addr constant [15 x i8] c", i32 0, i32 6\00" -@.str.3323 = private unnamed_addr constant [9 x i8] c"map.cond\00" -@.str.3324 = private unnamed_addr constant [10 x i8] c"map.check\00" -@.str.3325 = private unnamed_addr constant [9 x i8] c"map.body\00" -@.str.3326 = private unnamed_addr constant [9 x i8] c"map.step\00" -@.str.3327 = private unnamed_addr constant [8 x i8] c"map.end\00" -@.str.3328 = private unnamed_addr constant [12 x i8] c"map.changed\00" -@.str.3329 = private unnamed_addr constant [9 x i8] c"map.same\00" -@.str.3330 = private unnamed_addr constant [4 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 [15 x i8] c", i32 0, i32 6\00" -@.str.3334 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3335 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3336 = private unnamed_addr constant [34 x i8] c"call void @finch_map_changed(ptr \00" -@.str.3337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3338 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3339 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3340 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3342 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3344 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3345 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3346 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3347 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3349 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3350 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3351 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3352 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3353 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3354 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3356 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3358 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3360 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3362 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3363 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3365 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3366 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3367 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3368 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3369 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3370 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3371 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3372 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3373 = private unnamed_addr constant [6 x i8] c"$list\00" -@.str.3374 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3375 = private unnamed_addr constant [30 x i8] c"used .nvars on a null pointer\00" -@.str.3376 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3377 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3378 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3379 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3380 = private unnamed_addr constant [56 x i8] c"for ... in needs an array, a str or a map, but this is \00" -@.str.3381 = private unnamed_addr constant [37 x i8] c" (for a range of numbers write 0..n)\00" -@.str.3382 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3383 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3386 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3387 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3388 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3389 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3390 = private unnamed_addr constant [10 x i8] c"each.cond\00" -@.str.3391 = private unnamed_addr constant [10 x i8] c"each.body\00" -@.str.3392 = private unnamed_addr constant [10 x i8] c"each.step\00" -@.str.3393 = private unnamed_addr constant [9 x i8] c"each.end\00" -@.str.3394 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3395 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.3396 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3397 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3398 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3399 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3400 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3401 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3402 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3403 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3405 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3407 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3408 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3409 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3410 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3412 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3413 = private unnamed_addr constant [30 x i8] c"used .loops on a null pointer\00" -@.str.3414 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3415 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.3416 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3418 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3419 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3421 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3422 = private unnamed_addr constant [34 x i8] c"return can't be used inside defer\00" -@.str.3423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3424 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3426 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3429 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3430 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3431 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3432 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3433 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3435 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3436 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3437 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3438 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3439 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3440 = private unnamed_addr constant [65 x i8] c"' can't fail, so it can't return an error (make it fallible: -> \00" -@.str.3441 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3442 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.3443 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3444 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3446 = private unnamed_addr constant [18 x i8] c"the error message\00" -@.str.3447 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3449 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3450 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3451 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3453 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3454 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3455 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3456 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3457 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3458 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3459 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3460 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3461 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3462 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3463 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3464 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3465 = private unnamed_addr constant [47 x i8] c"' doesn't return a value (it has no '-> type')\00" -@.str.3466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3467 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3468 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3470 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3471 = private unnamed_addr constant [54 x i8] c" { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer }\00" -@.str.3472 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.3473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3474 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3475 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.3476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3477 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3478 = private unnamed_addr constant [15 x i8] c"' must return \00" -@.str.3479 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3480 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3481 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3482 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3483 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3484 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3485 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3486 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3487 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3488 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3489 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3490 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3491 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3493 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3494 = private unnamed_addr constant [32 x i8] c"used .deferOn on a null pointer\00" -@.str.3495 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3496 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3497 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3498 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3500 = private unnamed_addr constant [35 x i8] c"used .deferLimit on a null pointer\00" -@.str.3501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3502 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3503 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3505 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3506 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3507 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3508 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.3509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3512 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\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 [12 x i8] c"src/gen.fch\00" -@.str.3516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3517 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3519 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3521 = private unnamed_addr constant [19 x i8] c"the returned value\00" -@.str.3522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3523 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3524 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3526 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3527 = private unnamed_addr constant [29 x i8] c" zeroinitializer, i1 true, 0\00" -@.str.3528 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3530 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3531 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3532 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3534 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3535 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3536 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3537 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3539 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3540 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3541 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3543 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3544 = private unnamed_addr constant [2 x i8] c" \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 [8 x i8] c"{ i64, \00" -@.str.3548 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3549 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3550 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3551 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.3552 = private unnamed_addr constant [30 x i8] c"ptrtoint (ptr getelementptr (\00" -@.str.3553 = private unnamed_addr constant [27 x i8] c", ptr null, i32 1) to i64)\00" -@.str.3554 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3555 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3556 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3557 = private unnamed_addr constant [15 x i8] c", i32 0, i32 0\00" -@.str.3558 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3559 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3560 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3561 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3562 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3563 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.3564 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3567 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.3568 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.3569 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3570 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3571 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3573 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.3574 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_find(\00" -@.str.3575 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3576 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3577 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3578 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3579 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3580 = private unnamed_addr constant [26 x i8] c"call i64 @finch_map_slot(\00" -@.str.3581 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3582 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3583 = private unnamed_addr constant [8 x i8] c"map.new\00" -@.str.3584 = private unnamed_addr constant [9 x i8] c"map.have\00" -@.str.3585 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.3586 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.3587 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3588 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3589 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3590 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3591 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3592 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3593 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3594 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3595 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3596 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3597 = private unnamed_addr constant [45 x i8] c"this is a temporary map, it can't be changed\00" -@.str.3598 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3599 = private unnamed_addr constant [12 x i8] c"map.missing\00" -@.str.3600 = private unnamed_addr constant [10 x i8] c"map.found\00" -@.str.3601 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.3602 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3603 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3604 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3605 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3606 = private unnamed_addr constant [34 x i8] c"call void @finch_map_missing(ptr \00" -@.str.3607 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3608 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.3609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3610 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3611 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3612 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3613 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3614 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3615 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3616 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3617 = private unnamed_addr constant [53 x i8] c"an empty [:] needs a type, like: map[str]int m = [:]\00" -@.str.3618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3619 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3620 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3621 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3622 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3623 = private unnamed_addr constant [4 x i8] c"int\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 [5 x i8] c"void\00" -@.str.3627 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3628 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3629 = private unnamed_addr constant [36 x i8] c"a map key needs a value with a type\00" -@.str.3630 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3631 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3632 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3633 = private unnamed_addr constant [38 x i8] c"a map value needs a value with a type\00" -@.str.3634 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3635 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3636 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3637 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3639 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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 [22 x i8] c"every key of this map\00" -@.str.3645 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3646 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3647 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3648 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3649 = private unnamed_addr constant [24 x i8] c"every value of this map\00" -@.str.3650 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3651 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3652 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3653 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3654 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3655 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3656 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3657 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.3658 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3660 = private unnamed_addr constant [8 x i8] c"the key\00" -@.str.3661 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.3662 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3663 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.3664 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3665 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.3666 = private unnamed_addr constant [11 x i8] c"remove.hit\00" -@.str.3667 = private unnamed_addr constant [11 x i8] c"remove.end\00" -@.str.3668 = private unnamed_addr constant [36 x i8] c"call void @finch_map_remove_at(ptr \00" -@.str.3669 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3670 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3671 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3672 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3673 = private unnamed_addr constant [10 x i8] c"get.found\00" -@.str.3674 = private unnamed_addr constant [12 x i8] c"get.missing\00" -@.str.3675 = private unnamed_addr constant [9 x i8] c"get.fend\00" -@.str.3676 = private unnamed_addr constant [9 x i8] c"get.mend\00" -@.str.3677 = private unnamed_addr constant [8 x i8] c"get.end\00" -@.str.3678 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3679 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3680 = private unnamed_addr constant [12 x i8] c"the default\00" -@.str.3681 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3682 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3683 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3684 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3685 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3686 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3687 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.3688 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3689 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3690 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3691 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3692 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3693 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3694 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3695 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3696 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3697 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3698 = private unnamed_addr constant [32 x i8] c"call void @finch_map_clear(ptr \00" -@.str.3699 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3700 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3701 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.3702 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3703 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.3704 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3705 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3706 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.3707 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3708 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3709 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3710 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.3711 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.3712 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3713 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3714 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3715 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.3716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3717 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3718 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.3719 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3720 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3721 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3722 = private unnamed_addr constant [15 x i8] c", i32 0, i32 2\00" -@.str.3723 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3724 = private unnamed_addr constant [11 x i8] c"entry.live\00" -@.str.3725 = private unnamed_addr constant [11 x i8] c"entry.next\00" -@.str.3726 = private unnamed_addr constant [13 x i8] c"icmp ne i64 \00" -@.str.3727 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3728 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.3729 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3730 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.3731 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.3732 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.3733 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.3734 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.3735 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.3736 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.3737 = private unnamed_addr constant [22 x i8] c"a map has no method '\00" -@.str.3738 = private unnamed_addr constant [50 x i8] c"' (it has: has, get, remove, clear, keys, values)\00" -@.str.3739 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3740 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3741 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3742 = private unnamed_addr constant [30 x i8] c"used .enums 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 [2 x i8] c"'\00" -@.str.3745 = private unnamed_addr constant [23 x i8] c"' is not a variant of \00" -@.str.3746 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.3747 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.3749 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3750 = private unnamed_addr constant [13 x i8] c"this pattern\00" -@.str.3751 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3752 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3753 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3755 = private unnamed_addr constant [31 x i8] c"there is nothing to match here\00" -@.str.3756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3757 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.3758 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3759 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.3760 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3761 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3762 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3763 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3764 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3767 = private unnamed_addr constant [10 x i8] c"match.end\00" -@.str.3768 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3770 = private unnamed_addr constant [73 x i8] c"this arm can never be used: 'else' already takes everything that is left\00" -@.str.3771 = private unnamed_addr constant [10 x i8] c"match.arm\00" -@.str.3772 = private unnamed_addr constant [11 x i8] c"match.next\00" -@.str.3773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3774 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3775 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3777 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3779 = private unnamed_addr constant [53 x i8] c"an arm with several variants can't name their values\00" -@.str.3780 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.3781 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3782 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3783 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3784 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3785 = private unnamed_addr constant [50 x i8] c"this variant is already handled by an earlier arm\00" -@.str.3786 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.3787 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3788 = private unnamed_addr constant [9 x i8] c"match.or\00" -@.str.3789 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3790 = private unnamed_addr constant [32 x i8] c"used .structs 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 [12 x i8] c"src/gen.fch\00" -@.str.3793 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.3794 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3795 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3796 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3798 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3799 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.3800 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3801 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3803 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3804 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3806 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3807 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3808 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3809 = private unnamed_addr constant [53 x i8] c"an arm of a match that gives a value has to give one\00" -@.str.3810 = private unnamed_addr constant [58 x i8] c"this arm (the arms of a match have to give the same type)\00" -@.str.3811 = private unnamed_addr constant [11 x i8] c"match.from\00" -@.str.3812 = private unnamed_addr constant [6 x i8] c"block\00" -@.str.3813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3814 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3816 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.3817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3819 = private unnamed_addr constant [29 x i8] c"used .sums 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 [12 x i8] c"src/gen.fch\00" -@.str.3822 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3823 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3824 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3825 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.3826 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3827 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.3828 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3829 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3830 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3831 = private unnamed_addr constant [27 x i8] c"this match doesn't handle \00" -@.str.3832 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3833 = private unnamed_addr constant [30 x i8] c" (add them, or an 'else' arm)\00" -@.str.3834 = private unnamed_addr constant [12 x i8] c"a match on \00" -@.str.3835 = private unnamed_addr constant [55 x i8] c" needs an 'else' arm for everything that is not listed\00" -@.str.3836 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.3837 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.3838 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3840 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3841 = private unnamed_addr constant [12 x i8] c"unreachable\00" -@.str.3842 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3843 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3844 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3845 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3846 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3847 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3848 = private unnamed_addr constant [3 x i8] c"[ \00" -@.str.3849 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3850 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3851 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3852 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.3854 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3855 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3856 = 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.3857 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3858 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3859 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3860 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3862 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3863 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3864 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3865 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3866 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3867 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3868 = private unnamed_addr constant [1 x i8] c"\00" -@.str.3869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3870 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3871 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3872 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3874 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3875 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3876 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.3877 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3878 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.3879 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3880 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.3881 = private unnamed_addr constant [51 x i8] c"this call can't fail, so it needs no 'or' or 'try'\00" -@.str.3882 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3883 = private unnamed_addr constant [32 x i8] c"used .inDefer on a null pointer\00" -@.str.3884 = private unnamed_addr constant [31 x i8] c"try can't be used inside defer\00" -@.str.3885 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3886 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3887 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3888 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3889 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3890 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3892 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3893 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3894 = private unnamed_addr constant [30 x i8] c"try passes the error on, so '\00" -@.str.3895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3896 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3897 = private unnamed_addr constant [32 x i8] c"' must be able to fail too (-> \00" -@.str.3898 = private unnamed_addr constant [56 x i8] c"); or handle it here: ... or / ... or { ... }\00" -@.str.3899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3900 = private unnamed_addr constant [11 x i8] c"try.failed\00" -@.str.3901 = private unnamed_addr constant [7 x i8] c"try.ok\00" -@.str.3902 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.3903 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3904 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3905 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3906 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.3907 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3908 = private unnamed_addr constant [28 x i8] c"used .cur on a null pointer\00" -@.str.3909 = private unnamed_addr constant [37 x i8] c" zeroinitializer, { ptr, i64, i64 } \00" -@.str.3910 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.3911 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3912 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3914 = private unnamed_addr constant [10 x i8] c"or.failed\00" -@.str.3915 = private unnamed_addr constant [6 x i8] c"or.ok\00" -@.str.3916 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3917 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3918 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3919 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3920 = private unnamed_addr constant [29 x i8] c"used .term on a null pointer\00" -@.str.3921 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3922 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3923 = 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.3924 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3925 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3926 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3927 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3928 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3929 = 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.3930 = private unnamed_addr constant [4 x i8] c"err\00" -@.str.3931 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3932 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3934 = private unnamed_addr constant [21 x i8] c"the value after 'or'\00" -@.str.3935 = private unnamed_addr constant [8 x i8] c"or.bend\00" -@.str.3936 = private unnamed_addr constant [7 x i8] c"or.end\00" -@.str.3937 = private unnamed_addr constant [5 x i8] c"phi \00" -@.str.3938 = private unnamed_addr constant [4 x i8] c" [ \00" -@.str.3939 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3940 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.3941 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.3942 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.3943 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3944 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3945 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3946 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3947 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.3948 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3949 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.3950 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3951 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3952 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3953 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.3954 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3955 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.3956 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3957 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3958 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3959 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3960 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.3961 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.3962 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3963 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3964 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.3965 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.3966 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.3967 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.3968 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.3969 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.3970 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.3971 = private unnamed_addr constant [6 x i8] c"unary\00" -@.str.3972 = private unnamed_addr constant [7 x i8] c"binary\00" -@.str.3973 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.3974 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.3975 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.3976 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3977 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.3978 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.3979 = private unnamed_addr constant [20 x i8] c"unknown expression \00" -@.str.3980 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3981 = private unnamed_addr constant [2 x i8] c"!\00" -@.str.3982 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3983 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3984 = private unnamed_addr constant [20 x i8] c"the value after '!'\00" -@.str.3985 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.3986 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.3987 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.3988 = private unnamed_addr constant [2 x i8] c"~\00" -@.str.3989 = private unnamed_addr constant [46 x i8] c"'~' flips the bits of a whole number, not of \00" -@.str.3990 = private unnamed_addr constant [5 x i8] c"xor \00" -@.str.3991 = private unnamed_addr constant [2 x i8] c" \00" -@.str.3992 = private unnamed_addr constant [5 x i8] c", -1\00" -@.str.3993 = private unnamed_addr constant [35 x i8] c" can't be negative (it's unsigned)\00" -@.str.3994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3995 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.3997 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.3998 = private unnamed_addr constant [5 x i8] c"sub \00" -@.str.3999 = private unnamed_addr constant [5 x i8] c" 0, \00" -@.str.4000 = private unnamed_addr constant [6 x i8] c"fneg \00" -@.str.4001 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4002 = private unnamed_addr constant [27 x i8] c"can't put '-' in front of \00" -@.str.4003 = private unnamed_addr constant [12 x i8] c"can't use '\00" -@.str.4004 = private unnamed_addr constant [6 x i8] c"' on \00" -@.str.4005 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.4006 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4007 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4008 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4009 = private unnamed_addr constant [49 x i8] c" (turn the other side into text first: str(...))\00" -@.str.4010 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4011 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4012 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4013 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4014 = private unnamed_addr constant [27 x i8] c" (for true/false use '&&')\00" -@.str.4015 = private unnamed_addr constant [27 x i8] c" (for true/false use '||')\00" -@.str.4016 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4017 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4018 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4019 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4020 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4021 = private unnamed_addr constant [44 x i8] c" (bit operators work on whole numbers only)\00" -@.str.4022 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4023 = private unnamed_addr constant [6 x i8] c"array\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 [32 x i8] c" (compare the parts one by one)\00" -@.str.4027 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4028 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4029 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4030 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4031 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4032 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4033 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4034 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4035 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4036 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4037 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4038 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4039 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4040 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4041 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4042 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4043 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4044 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4045 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4046 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4047 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4048 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4049 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4050 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4051 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4052 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4053 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4054 = private unnamed_addr constant [28 x i8] c"used .lit on a null pointer\00" -@.str.4055 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4056 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4057 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4058 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4059 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4060 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4061 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4062 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4064 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4065 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4066 = private unnamed_addr constant [30 x i8] c"used .value 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 .ty on a null pointer\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 .ty 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 [26 x i8] c"used .v on a null pointer\00" -@.str.4073 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4074 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4075 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4076 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4077 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4078 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4079 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4080 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\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 .ty 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 .ty 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 [26 x i8] c"used .v 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 .ty 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 [27 x i8] c"used .ty on a null pointer\00" -@.str.4091 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4092 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\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 .value on a null pointer\00" -@.str.4095 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4096 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4097 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4098 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4099 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4100 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4102 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4103 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4104 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4105 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4106 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4107 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4109 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4111 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4112 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4113 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4114 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4115 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4116 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4117 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4118 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4119 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4120 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4122 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4123 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4125 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4126 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4127 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4128 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4129 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4131 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4133 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4134 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4136 = private unnamed_addr constant [26 x i8] c"used .v on a null pointer\00" -@.str.4137 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4138 = private unnamed_addr constant [27 x i8] c"used .ty on a null pointer\00" -@.str.4139 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4140 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4142 = private unnamed_addr constant [30 x i8] c"used .value on a null pointer\00" -@.str.4143 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4144 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4145 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4146 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4147 = private unnamed_addr constant [33 x i8] c"call void @finch_str_concat(ptr \00" -@.str.4148 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4149 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4150 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4151 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4152 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4153 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4154 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4155 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4156 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4157 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4158 = private unnamed_addr constant [2 x i8] c"&\00" -@.str.4159 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.4160 = private unnamed_addr constant [2 x i8] c"^\00" -@.str.4161 = private unnamed_addr constant [3 x i8] c"<<\00" -@.str.4162 = private unnamed_addr constant [3 x i8] c">>\00" -@.str.4163 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4164 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4165 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4166 = private unnamed_addr constant [5 x i8] c"sdiv\00" -@.str.4167 = private unnamed_addr constant [5 x i8] c"srem\00" -@.str.4168 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4169 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4170 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4171 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4172 = private unnamed_addr constant [5 x i8] c"ashr\00" -@.str.4173 = private unnamed_addr constant [4 x i8] c"add\00" -@.str.4174 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.4175 = private unnamed_addr constant [4 x i8] c"mul\00" -@.str.4176 = private unnamed_addr constant [5 x i8] c"udiv\00" -@.str.4177 = private unnamed_addr constant [5 x i8] c"urem\00" -@.str.4178 = private unnamed_addr constant [4 x i8] c"and\00" -@.str.4179 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.4180 = private unnamed_addr constant [4 x i8] c"xor\00" -@.str.4181 = private unnamed_addr constant [4 x i8] c"shl\00" -@.str.4182 = private unnamed_addr constant [5 x i8] c"lshr\00" -@.str.4183 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4184 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4185 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4186 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4187 = private unnamed_addr constant [9 x i8] c"icmp eq \00" -@.str.4188 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4189 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4190 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4191 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4192 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4193 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4194 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4195 = private unnamed_addr constant [2 x i8] c"+\00" -@.str.4196 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.4197 = private unnamed_addr constant [2 x i8] c"*\00" -@.str.4198 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.4199 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4200 = private unnamed_addr constant [5 x i8] c"fadd\00" -@.str.4201 = private unnamed_addr constant [5 x i8] c"fsub\00" -@.str.4202 = private unnamed_addr constant [5 x i8] c"fmul\00" -@.str.4203 = private unnamed_addr constant [5 x i8] c"fdiv\00" -@.str.4204 = private unnamed_addr constant [5 x i8] c"frem\00" -@.str.4205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4206 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4207 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4208 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4209 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4210 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4211 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4212 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4213 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4214 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4215 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4216 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4217 = private unnamed_addr constant [60 x i8] c"a str is never null; to check for empty text use s.len == 0\00" -@.str.4218 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4219 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4220 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4221 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4222 = private unnamed_addr constant [6 x i8] c" ptr \00" -@.str.4223 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4224 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4225 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4226 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4227 = private unnamed_addr constant [28 x i8] c"call i32 @finch_str_eq(ptr \00" -@.str.4228 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4229 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4230 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4231 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4232 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4233 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4234 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4235 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4236 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4237 = private unnamed_addr constant [29 x i8] c"call i64 @finch_str_cmp(ptr \00" -@.str.4238 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4239 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4240 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4241 = private unnamed_addr constant [6 x i8] c" i64 \00" -@.str.4242 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4243 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4244 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4245 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4246 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4247 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4248 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4249 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4250 = private unnamed_addr constant [4 x i8] c"oeq\00" -@.str.4251 = private unnamed_addr constant [4 x i8] c"une\00" -@.str.4252 = private unnamed_addr constant [4 x i8] c"olt\00" -@.str.4253 = private unnamed_addr constant [4 x i8] c"ole\00" -@.str.4254 = private unnamed_addr constant [4 x i8] c"ogt\00" -@.str.4255 = private unnamed_addr constant [4 x i8] c"oge\00" -@.str.4256 = private unnamed_addr constant [6 x i8] c"fcmp \00" -@.str.4257 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4258 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4259 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4260 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4261 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4262 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4263 = 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.4264 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4265 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4266 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4267 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4268 = private unnamed_addr constant [6 x i8] c" i32 \00" -@.str.4269 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4270 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4271 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4272 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4273 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4274 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.4275 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4276 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4277 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4278 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4279 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4280 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4281 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4282 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4283 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4284 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4285 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4286 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4287 = private unnamed_addr constant [4 x i8] c"ult\00" -@.str.4288 = private unnamed_addr constant [4 x i8] c"ule\00" -@.str.4289 = private unnamed_addr constant [4 x i8] c"ugt\00" -@.str.4290 = private unnamed_addr constant [4 x i8] c"uge\00" -@.str.4291 = private unnamed_addr constant [3 x i8] c"eq\00" -@.str.4292 = private unnamed_addr constant [3 x i8] c"ne\00" -@.str.4293 = private unnamed_addr constant [4 x i8] c"slt\00" -@.str.4294 = private unnamed_addr constant [4 x i8] c"sle\00" -@.str.4295 = private unnamed_addr constant [4 x i8] c"sgt\00" -@.str.4296 = private unnamed_addr constant [4 x i8] c"sge\00" -@.str.4297 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4298 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4299 = private unnamed_addr constant [3 x i8] c"||\00" -@.str.4300 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4301 = private unnamed_addr constant [11 x i8] c"logic.from\00" -@.str.4302 = private unnamed_addr constant [10 x i8] c"logic.rhs\00" -@.str.4303 = private unnamed_addr constant [10 x i8] c"logic.end\00" -@.str.4304 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4305 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4306 = private unnamed_addr constant [11 x i8] c"logic.rend\00" -@.str.4307 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.4308 = private unnamed_addr constant [3 x i8] c"&&\00" -@.str.4309 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.4310 = private unnamed_addr constant [10 x i8] c"phi i1 [ \00" -@.str.4311 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4312 = private unnamed_addr constant [7 x i8] c" ], [ \00" -@.str.4313 = private unnamed_addr constant [4 x i8] c", %\00" -@.str.4314 = private unnamed_addr constant [3 x i8] c" ]\00" -@.str.4315 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4316 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4317 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4318 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4319 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4320 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.4321 = private unnamed_addr constant [3 x i8] c"!=\00" -@.str.4322 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.4323 = private unnamed_addr constant [3 x i8] c"<=\00" -@.str.4324 = private unnamed_addr constant [2 x i8] c">\00" -@.str.4325 = private unnamed_addr constant [3 x i8] c">=\00" -@.str.4326 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4327 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4328 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4329 = private unnamed_addr constant [48 x i8] c"an empty [] needs a type, like: []int nums = []\00" -@.str.4330 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4331 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4332 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4333 = private unnamed_addr constant [28 x i8] c"every element of this array\00" -@.str.4334 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4335 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4336 = private unnamed_addr constant [9 x i8] c"mul i64 \00" -@.str.4337 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4338 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.4339 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4340 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4341 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4342 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4343 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4344 = private unnamed_addr constant [42 x i8] c"insertvalue { ptr, i64, i64 } undef, ptr \00" -@.str.4345 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4346 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4347 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4348 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4349 = private unnamed_addr constant [31 x i8] c"insertvalue { ptr, i64, i64 } \00" -@.str.4350 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4351 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.4352 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4353 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4354 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4355 = private unnamed_addr constant [61 x i8] c"this is a temporary value, it can't be changed or pointed to\00" -@.str.4356 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4357 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4358 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4359 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4360 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4361 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4362 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4363 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4364 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4365 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4367 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.4368 = private unnamed_addr constant [8 x i8] c"fprintf\00" -@.str.4369 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4370 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4371 = private unnamed_addr constant [7 x i8] c"stderr\00" -@.str.4372 = private unnamed_addr constant [2 x i8] c"2\00" -@.str.4373 = private unnamed_addr constant [6 x i8] c"stdin\00" -@.str.4374 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4375 = private unnamed_addr constant [7 x i8] c"stdout\00" -@.str.4376 = private unnamed_addr constant [2 x i8] c"1\00" -@.str.4377 = private unnamed_addr constant [32 x i8] c"call ptr @finch_std_stream(i32 \00" -@.str.4378 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4379 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4380 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4381 = private unnamed_addr constant [27 x i8] c"used .ci 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 [27 x i8] c"used .ci on a null pointer\00" -@.str.4384 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4385 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4386 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4387 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4389 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4390 = private unnamed_addr constant [3 x i8] c"g:\00" -@.str.4391 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4392 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.4393 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4394 = private unnamed_addr constant [20 x i8] c" = external global \00" -@.str.4395 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.4396 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4397 = private unnamed_addr constant [44 x i8] c"' is a module; use something from it, like \00" -@.str.4398 = private unnamed_addr constant [11 x i8] c".name(...)\00" -@.str.4399 = private unnamed_addr constant [29 x i8] c"there is no variable named '\00" -@.str.4400 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4401 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4402 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4403 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4404 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4405 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.4406 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4407 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4408 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4410 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4411 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4412 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.4413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4414 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.4415 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4416 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4417 = private unnamed_addr constant [3 x i8] c".0\00" -@.str.4418 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4419 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4420 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4421 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4422 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4423 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4424 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4425 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4426 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4427 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4428 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4429 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4430 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.4431 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4433 = private unnamed_addr constant [4 x i8] c"var\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 [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 [29 x i8] c"used .sums on a null pointer\00" -@.str.4439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4440 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4441 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4442 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4444 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4446 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4449 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4450 = private unnamed_addr constant [23 x i8] c" holds nothing: write \00" -@.str.4451 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4452 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4453 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4454 = private unnamed_addr constant [20 x i8] c" value(s), but got \00" -@.str.4455 = private unnamed_addr constant [3 x i8] c": \00" -@.str.4456 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4457 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4458 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4459 = private unnamed_addr constant [4 x i8] c"tag\00" -@.str.4460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4461 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.4462 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4463 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4464 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4465 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4467 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4469 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4470 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4471 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.4472 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.4473 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4474 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.4475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4476 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4477 = private unnamed_addr constant [34 x i8] c"this pattern is not a variant of \00" -@.str.4478 = private unnamed_addr constant [11 x i8] c" (it has: \00" -@.str.4479 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4480 = private unnamed_addr constant [2 x i8] c")\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 [28 x i8] c" holds nothing: write just \00" -@.str.4484 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4485 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4486 = private unnamed_addr constant [28 x i8] c" value(s): name them, like \00" -@.str.4487 = private unnamed_addr constant [28 x i8] c"(x), or use _ to ignore one\00" -@.str.4488 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.4489 = private unnamed_addr constant [51 x i8] c"write a name to hold the value (or _ to ignore it)\00" -@.str.4490 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4491 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4492 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4493 = private unnamed_addr constant [10 x i8] c"the enum \00" -@.str.4494 = private unnamed_addr constant [18 x i8] c" has no variant '\00" -@.str.4495 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.4496 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4497 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4498 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4499 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4500 = private unnamed_addr constant [4 x i8] c" = \00" -@.str.4501 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4502 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4503 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4504 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4505 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4507 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4509 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4510 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4512 = private unnamed_addr constant [8 x i8] c" holds \00" -@.str.4513 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4514 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4517 = private unnamed_addr constant [12 x i8] c" value(s): \00" -@.str.4518 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4519 = private unnamed_addr constant [29 x i8] c"used .sums on a null pointer\00" -@.str.4520 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4521 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4522 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.4523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4524 = private unnamed_addr constant [38 x i8] c"a variant of an enum can't be changed\00" -@.str.4525 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4526 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4527 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4528 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4529 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.4530 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.4531 = private unnamed_addr constant [7 x i8] c"used .\00" -@.str.4532 = private unnamed_addr constant [19 x i8] c" on a null pointer\00" -@.str.4533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4534 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4536 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4538 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4539 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.4540 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4541 = private unnamed_addr constant [3 x i8] c"a \00" -@.str.4542 = private unnamed_addr constant [44 x i8] c" only has '.value' (the thing it points to)\00" -@.str.4543 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4544 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4545 = private unnamed_addr constant [27 x i8] c" can't be changed directly\00" -@.str.4546 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4547 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4548 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4549 = private unnamed_addr constant [35 x i8] c"an array has .len and .ptr, not '.\00" -@.str.4550 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4551 = private unnamed_addr constant [49 x i8] c".ptr of a temporary value would point to nothing\00" -@.str.4552 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4553 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4554 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4555 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4556 = private unnamed_addr constant [31 x i8] c".ptr can't be changed directly\00" -@.str.4557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4558 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.4559 = private unnamed_addr constant [54 x i8] c".ptr of a temporary value would point to freed memory\00" -@.str.4560 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4561 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4562 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4563 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4565 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4566 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4567 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4568 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.4569 = private unnamed_addr constant [38 x i8] c"an array, map or str has .len, not '.\00" -@.str.4570 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4571 = private unnamed_addr constant [49 x i8] c".len can't be changed directly (use push or pop)\00" -@.str.4572 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4573 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4574 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.4575 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4576 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4577 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4578 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4579 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4580 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4581 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4582 = private unnamed_addr constant [22 x i8] c" has no fields (no '.\00" -@.str.4583 = private unnamed_addr constant [3 x i8] c"')\00" -@.str.4584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4585 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4586 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4587 = private unnamed_addr constant [12 x i8] c"the struct \00" -@.str.4588 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.4589 = private unnamed_addr constant [12 x i8] c"' (it has: \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 [12 x i8] c"src/gen.fch\00" -@.str.4593 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.4594 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4595 = private unnamed_addr constant [5 x i8] c"\0A```\00" -@.str.4596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4597 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4598 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4599 = private unnamed_addr constant [14 x i8] c", i32 0, i32 \00" -@.str.4600 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4601 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.4602 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4603 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4604 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4605 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4606 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4607 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.4608 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.4609 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4610 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4611 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4612 = private unnamed_addr constant [9 x i8] c"an index\00" -@.str.4613 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4614 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4615 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4616 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4617 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.4618 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4619 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4620 = private unnamed_addr constant [58 x i8] c"this ptr has no type, so Finch doesn't know what's inside\00" -@.str.4621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4623 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4624 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4625 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4626 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4627 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4628 = private unnamed_addr constant [47 x i8] c"[ ] works on arrays, str and pointers, not on \00" -@.str.4629 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4630 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.4631 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4632 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4633 = private unnamed_addr constant [45 x i8] c"this is a temporary str, it can't be changed\00" -@.str.4634 = private unnamed_addr constant [30 x i8] c"call void @finch_str_own(ptr \00" -@.str.4635 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4636 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4637 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4638 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.4639 = private unnamed_addr constant [32 x i8] c"extractvalue { ptr, i64, i64 } \00" -@.str.4640 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4641 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.4642 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4643 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4644 = private unnamed_addr constant [18 x i8] c"named arguments (\00" -@.str.4645 = private unnamed_addr constant [37 x i8] c": ...) are only for creating structs\00" -@.str.4646 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4647 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.4648 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.4649 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4650 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4651 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4652 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4653 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.4654 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4655 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4656 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4657 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4658 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4659 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4660 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.4661 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4662 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.4663 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.4664 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.4665 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4666 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4667 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4668 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4669 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4670 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4671 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4672 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.4673 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4674 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4675 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.4676 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4677 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4678 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.4679 = private unnamed_addr constant [33 x i8] c"call i32 @finch_str_try_int(ptr \00" -@.str.4680 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4681 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4682 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4683 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4684 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4685 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4686 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4687 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4688 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4689 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4690 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4691 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4692 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4693 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4694 = private unnamed_addr constant [4 x i8] c"0.0\00" -@.str.4695 = private unnamed_addr constant [35 x i8] c"call i32 @finch_str_try_float(ptr \00" -@.str.4696 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4698 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4699 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.4700 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4701 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4702 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.4703 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.4704 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4705 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.4706 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4707 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4708 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4709 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4710 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.4711 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4712 = private unnamed_addr constant [32 x i8] c"call i64 @finch_str_to_int(ptr \00" -@.str.4713 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4714 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4715 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4716 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4717 = private unnamed_addr constant [37 x i8] c"call double @finch_str_to_float(ptr \00" -@.str.4718 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.4719 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4720 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4721 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4722 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4723 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.4724 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4725 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4726 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4727 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4728 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4729 = private unnamed_addr constant [7 x i8] c"fptoui\00" -@.str.4730 = private unnamed_addr constant [7 x i8] c"fptosi\00" -@.str.4731 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4732 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4733 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4734 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4735 = private unnamed_addr constant [9 x i8] c"icmp ne \00" -@.str.4736 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4737 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4738 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4739 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4740 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.4741 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4742 = private unnamed_addr constant [14 x i8] c"inttoptr i64 \00" -@.str.4743 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.4744 = private unnamed_addr constant [8 x i8] c" to ptr\00" -@.str.4745 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4746 = private unnamed_addr constant [14 x i8] c"ptrtoint ptr \00" -@.str.4747 = private unnamed_addr constant [5 x i8] c" to \00" -@.str.4748 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4749 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4750 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4751 = 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.4752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4753 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.4754 = private unnamed_addr constant [7 x i8] c" into \00" -@.str.4755 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4757 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4758 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4759 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4760 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4761 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4762 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.4763 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4764 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.4765 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4766 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4767 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4768 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4769 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4770 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4771 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4772 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.4773 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4775 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4777 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4778 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4779 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4780 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4781 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.4782 = private unnamed_addr constant [4 x i8] c" x \00" -@.str.4783 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.4784 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4785 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4786 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4787 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4788 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4789 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4790 = private unnamed_addr constant [5 x i8] c"i128\00" -@.str.4791 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.4792 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4793 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4794 = private unnamed_addr constant [10 x i8] c"[2 x i64]\00" -@.str.4795 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4796 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4797 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4798 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4799 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4800 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4801 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4802 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4803 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4804 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4805 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4806 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4807 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4808 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4809 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4810 = private unnamed_addr constant [17 x i8] c"division by zero\00" -@.str.4811 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4812 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4813 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4814 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4815 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4816 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4817 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4819 = private unnamed_addr constant [7 x i8] c"double\00" -@.str.4820 = private unnamed_addr constant [12 x i8] c"<2 x float>\00" -@.str.4821 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.4822 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4823 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4824 = private unnamed_addr constant [3 x i8] c"{ \00" -@.str.4825 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4826 = private unnamed_addr constant [3 x i8] c" }\00" -@.str.4827 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4828 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4829 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4830 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4831 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4832 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4833 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4834 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4835 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4836 = private unnamed_addr constant [2 x i8] c"i\00" -@.str.4837 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4838 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4839 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4840 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4841 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4842 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.4843 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4844 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4845 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4846 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4847 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4848 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4849 = private unnamed_addr constant [19 x i8] c" the Finch struct \00" -@.str.4850 = private unnamed_addr constant [21 x i8] c", which C can't take\00" -@.str.4851 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.4852 = private unnamed_addr constant [3 x i8] c"' \00" -@.str.4853 = private unnamed_addr constant [13 x i8] c" the struct \00" -@.str.4854 = private unnamed_addr constant [41 x i8] c" by value, which Finch can't do yet: it \00" -@.str.4855 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4856 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4857 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4858 = private unnamed_addr constant [60 x i8] c"methods can't be exported (export a plain fn that calls it)\00" -@.str.4859 = 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.4860 = private unnamed_addr constant [30 x i8] c"an export fn can't be generic\00" -@.str.4861 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4862 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4863 = private unnamed_addr constant [67 x i8] c"an export fn takes numbers, bool, char and pointers only (this is \00" -@.str.4864 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4865 = private unnamed_addr constant [51 x i8] c"; pass text as ptr[char] and make it a str inside)\00" -@.str.4866 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4867 = private unnamed_addr constant [70 x i8] c"an export fn returns nothing, a number, bool, char or a pointer (not \00" -@.str.4868 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4869 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4870 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4871 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.4872 = private unnamed_addr constant [39 x i8] c"' is exported twice (from two modules)\00" -@.str.4873 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4874 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4875 = private unnamed_addr constant [14 x i8] c"i8 zeroext %e\00" -@.str.4876 = private unnamed_addr constant [4 x i8] c"i1 \00" -@.str.4877 = private unnamed_addr constant [14 x i8] c"icmp ne i8 %e\00" -@.str.4878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.4879 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4880 = private unnamed_addr constant [4 x i8] c" %e\00" -@.str.4881 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4882 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4883 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4884 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4885 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4886 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4887 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4888 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4889 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4890 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4891 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.4892 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.4893 = private unnamed_addr constant [8 x i8] c"ret i8 \00" -@.str.4894 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.4895 = private unnamed_addr constant [7 x i8] c" to i8\00" -@.str.4896 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4897 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4898 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4899 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4900 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.4901 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.4902 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.4903 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4904 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.4905 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4906 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4907 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4908 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4909 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.4910 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4911 = private unnamed_addr constant [10 x i8] c"@finch.c.\00" -@.str.4912 = private unnamed_addr constant [2 x i8] c".\00" -@.str.4913 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4914 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4915 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4916 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4917 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.4918 = private unnamed_addr constant [3 x i8] c"t:\00" -@.str.4919 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4920 = 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.4921 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4922 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4923 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4924 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4925 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4926 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4927 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4928 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4929 = 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.4930 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.4931 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.4932 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.4933 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4934 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.4935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4936 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.4937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4938 = private unnamed_addr constant [6 x i8] c"addr(\00" -@.str.4939 = private unnamed_addr constant [39 x i8] c"): a function given to C can't return \00" -@.str.4940 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4941 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.4942 = private unnamed_addr constant [15 x i8] c") align 16 %c0\00" -@.str.4943 = private unnamed_addr constant [4 x i8] c"%c0\00" -@.str.4944 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4945 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4946 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.4947 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.4948 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.4949 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4950 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4951 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4952 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.4953 = private unnamed_addr constant [7 x i8] c"ptr %c\00" -@.str.4954 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4955 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4956 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4957 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4958 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4959 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4960 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4961 = private unnamed_addr constant [3 x i8] c"%c\00" -@.str.4962 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.4963 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.4964 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4965 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4966 = private unnamed_addr constant [4 x i8] c" %c\00" -@.str.4967 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.4968 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4969 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4970 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4971 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4972 = private unnamed_addr constant [1 x i8] c"\00" -@.str.4973 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.4974 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4975 = private unnamed_addr constant [9 x i8] c"ret void\00" -@.str.4976 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.4977 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.4978 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4979 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4980 = private unnamed_addr constant [5 x i8] c"ret \00" -@.str.4981 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4982 = private unnamed_addr constant [16 x i8] c"define internal\00" -@.str.4983 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4984 = private unnamed_addr constant [2 x i8] c" \00" -@.str.4985 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.4986 = private unnamed_addr constant [3 x i8] c", \00" -@.str.4987 = private unnamed_addr constant [2 x i8] c")\00" -@.str.4988 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4989 = private unnamed_addr constant [30 x i8] c"used .enums on a null pointer\00" -@.str.4990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4991 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4993 = private unnamed_addr constant [55 x i8] c"(...) turns a whole number into the enum, but this is \00" -@.str.4994 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.4995 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4996 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.4997 = private unnamed_addr constant [38 x i8] c" is not the number of any variant of \00" -@.str.4998 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.4999 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5000 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5001 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5002 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5003 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5004 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5005 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5006 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5007 = private unnamed_addr constant [33 x i8] c"this number is not a variant of \00" -@.str.5008 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5009 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5010 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5011 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5012 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5014 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.5015 = private unnamed_addr constant [9 x i8] c" signext\00" -@.str.5016 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5017 = private unnamed_addr constant [9 x i8] c" zeroext\00" -@.str.5018 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5019 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5020 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5021 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5022 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5023 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5024 = private unnamed_addr constant [18 x i8] c"C function from `\00" -@.str.5025 = private unnamed_addr constant [8 x i8] c"`\0A```c\0A\00" -@.str.5026 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5027 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5028 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5029 = private unnamed_addr constant [6 x i8] c")\0A```\00" -@.str.5030 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5031 = private unnamed_addr constant [17 x i8] c"the C function '\00" -@.str.5032 = private unnamed_addr constant [36 x i8] c"' can't be used from Finch yet: it \00" -@.str.5033 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5034 = private unnamed_addr constant [18 x i8] c"' takes at least \00" -@.str.5035 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5036 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5037 = private unnamed_addr constant [9 x i8] c"' takes \00" -@.str.5038 = private unnamed_addr constant [23 x i8] c" argument(s), but got \00" -@.str.5039 = private unnamed_addr constant [8 x i8] c"returns\00" -@.str.5040 = private unnamed_addr constant [6 x i8] c"takes\00" -@.str.5041 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5042 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5043 = private unnamed_addr constant [11 x i8] c") align 16\00" -@.str.5044 = private unnamed_addr constant [10 x i8] c"ptr sret(\00" -@.str.5045 = private unnamed_addr constant [12 x i8] c") align 16 \00" -@.str.5046 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5047 = private unnamed_addr constant [32 x i8] c"used .pending 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 [12 x i8] c"src/gen.fch\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 [10 x i8] c"argument \00" -@.str.5053 = private unnamed_addr constant [5 x i8] c" of \00" -@.str.5054 = private unnamed_addr constant [7 x i8] c"memory\00" -@.str.5055 = private unnamed_addr constant [11 x i8] c"ptr byval(\00" -@.str.5056 = private unnamed_addr constant [9 x i8] c") align \00" -@.str.5057 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5058 = private unnamed_addr constant [9 x i8] c"indirect\00" -@.str.5059 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5060 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5061 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5062 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5063 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5064 = private unnamed_addr constant [32 x i8] c"getelementptr inbounds i8, ptr \00" -@.str.5065 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5066 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5067 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5068 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5069 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5070 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5071 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5072 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5073 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5074 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5075 = private unnamed_addr constant [24 x i8] c"this gives back nothing\00" -@.str.5076 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5077 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5078 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5079 = private unnamed_addr constant [69 x i8] c"structs and arrays can't be passed to the '...' part of a C function\00" -@.str.5080 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.5081 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5082 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5083 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5084 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5085 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5086 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5087 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5088 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5089 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5090 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5091 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.5092 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5093 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5094 = private unnamed_addr constant [7 x i8] c"direct\00" -@.str.5095 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5096 = private unnamed_addr constant [6 x i8] c", ...\00" -@.str.5097 = private unnamed_addr constant [4 x i8] c"...\00" -@.str.5098 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5099 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5100 = private unnamed_addr constant [3 x i8] c"f:\00" -@.str.5101 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5102 = private unnamed_addr constant [30 x i8] c"used .cdone on a null pointer\00" -@.str.5103 = private unnamed_addr constant [3 x i8] c"f:\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 .head on a null pointer\00" -@.str.5106 = private unnamed_addr constant [8 x i8] c"declare\00" -@.str.5107 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5108 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5109 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5110 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5111 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5112 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5113 = private unnamed_addr constant [3 x i8] c" (\00" -@.str.5114 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5115 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5116 = private unnamed_addr constant [5 x i8] c"call\00" -@.str.5117 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5118 = private unnamed_addr constant [3 x i8] c" @\00" -@.str.5119 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5120 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5121 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5122 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5123 = private unnamed_addr constant [7 x i8] c"expand\00" -@.str.5124 = private unnamed_addr constant [10 x i8] c"[32 x i8]\00" -@.str.5125 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5126 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5127 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5128 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5129 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5130 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5131 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5132 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5133 = private unnamed_addr constant [7 x i8] c"fflush\00" -@.str.5134 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5135 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5136 = private unnamed_addr constant [6 x i8] c"qsort\00" -@.str.5137 = private unnamed_addr constant [7 x i8] c"printf\00" -@.str.5138 = private unnamed_addr constant [5 x i8] c"puts\00" -@.str.5139 = private unnamed_addr constant [8 x i8] c"putchar\00" -@.str.5140 = private unnamed_addr constant [6 x i8] c"scanf\00" -@.str.5141 = private unnamed_addr constant [6 x i8] c"fopen\00" -@.str.5142 = private unnamed_addr constant [8 x i8] c"getchar\00" -@.str.5143 = private unnamed_addr constant [5 x i8] c"sqrt\00" -@.str.5144 = private unnamed_addr constant [4 x i8] c"pow\00" -@.str.5145 = private unnamed_addr constant [4 x i8] c"sin\00" -@.str.5146 = private unnamed_addr constant [4 x i8] c"cos\00" -@.str.5147 = private unnamed_addr constant [6 x i8] c"floor\00" -@.str.5148 = private unnamed_addr constant [5 x i8] c"fabs\00" -@.str.5149 = private unnamed_addr constant [7 x i8] c"malloc\00" -@.str.5150 = private unnamed_addr constant [5 x i8] c"rand\00" -@.str.5151 = private unnamed_addr constant [6 x i8] c"srand\00" -@.str.5152 = private unnamed_addr constant [4 x i8] c"abs\00" -@.str.5153 = private unnamed_addr constant [5 x i8] c"atoi\00" -@.str.5154 = private unnamed_addr constant [7 x i8] c"strlen\00" -@.str.5155 = private unnamed_addr constant [7 x i8] c"strcpy\00" -@.str.5156 = private unnamed_addr constant [7 x i8] c"memcpy\00" -@.str.5157 = private unnamed_addr constant [5 x i8] c"time\00" -@.str.5158 = private unnamed_addr constant [6 x i8] c"sleep\00" -@.str.5159 = private unnamed_addr constant [7 x i8] c"usleep\00" -@.str.5160 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5161 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5162 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5163 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5164 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5165 = private unnamed_addr constant [8 x i8] c"stdio.h\00" -@.str.5166 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5167 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5168 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5169 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5170 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5171 = private unnamed_addr constant [7 x i8] c"math.h\00" -@.str.5172 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5173 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5174 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5175 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5176 = private unnamed_addr constant [9 x i8] c"stdlib.h\00" -@.str.5177 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5178 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5179 = private unnamed_addr constant [9 x i8] c"string.h\00" -@.str.5180 = private unnamed_addr constant [7 x i8] c"time.h\00" -@.str.5181 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5182 = private unnamed_addr constant [9 x i8] c"unistd.h\00" -@.str.5183 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5184 = private unnamed_addr constant [29 x i8] c" (it's from C: add import \22\00" -@.str.5185 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5186 = private unnamed_addr constant [15 x i8] c"\22 at the top)\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 [6 x i8] c"error\00" -@.str.5191 = 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.5192 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.5193 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5194 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5195 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5196 = private unnamed_addr constant [54 x i8] c"this gives back nothing, so there is nothing to print\00" -@.str.5197 = private unnamed_addr constant [2 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"\0A\00" -@.str.5200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5201 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5202 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.5203 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5204 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5205 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5206 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5207 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5208 = private unnamed_addr constant [4 x i8] c"var\00" -@.str.5209 = private unnamed_addr constant [7 x i8] c"member\00" -@.str.5210 = private unnamed_addr constant [6 x i8] c"index\00" -@.str.5211 = private unnamed_addr constant [64 x i8] c"addr(...) needs a variable, a field or an element, like addr(x)\00" -@.str.5212 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5213 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5214 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5215 = private unnamed_addr constant [35 x i8] c"call void @finch_str_from_int(ptr \00" -@.str.5216 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5218 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5219 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_uint(ptr \00" -@.str.5220 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5221 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.5222 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5223 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_float(ptr \00" -@.str.5224 = private unnamed_addr constant [10 x i8] c", double \00" -@.str.5225 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.5226 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5227 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5228 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_char(ptr \00" -@.str.5229 = private unnamed_addr constant [14 x i8] c", i8 signext \00" -@.str.5230 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5231 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5232 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5233 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5234 = private unnamed_addr constant [36 x i8] c"call void @finch_str_from_bool(ptr \00" -@.str.5235 = private unnamed_addr constant [7 x i8] c", i32 \00" -@.str.5236 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5237 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5238 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5239 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5240 = private unnamed_addr constant [33 x i8] c"call void @finch_str_from_c(ptr \00" -@.str.5241 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5242 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5243 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5244 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5245 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.5246 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5247 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5248 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5249 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5250 = private unnamed_addr constant [37 x i8] c"call void @finch_str_from_bytes(ptr \00" -@.str.5251 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5252 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5253 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5254 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5255 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5256 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5257 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5258 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5259 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5260 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5261 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5262 = private unnamed_addr constant [12 x i8] c"can't turn \00" -@.str.5263 = private unnamed_addr constant [10 x i8] c" into str\00" -@.str.5264 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5265 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5266 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.5267 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5268 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5269 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5270 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.5271 = private unnamed_addr constant [33 x i8] c"call i32 @finch_file_exists(ptr \00" -@.str.5272 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5273 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5274 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5275 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5276 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5277 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5278 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5279 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5280 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5281 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5282 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5283 = private unnamed_addr constant [35 x i8] c"call i32 @finch_try_read_file(ptr \00" -@.str.5284 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5285 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5286 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5287 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5288 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5289 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5290 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5291 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5292 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5293 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5294 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5295 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5296 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5297 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5298 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5299 = private unnamed_addr constant [32 x i8] c"call void @finch_read_file(ptr \00" -@.str.5300 = private unnamed_addr constant [7 x i8] c", ptr \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 [2 x i8] c")\00" -@.str.5304 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5305 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5306 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.5307 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5308 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5309 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5310 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5311 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5312 = private unnamed_addr constant [9 x i8] c"the text\00" -@.str.5313 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5314 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5315 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5316 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5317 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5318 = private unnamed_addr constant [36 x i8] c"call i32 @finch_try_write_file(ptr \00" -@.str.5319 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5320 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5321 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5322 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5323 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5324 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5325 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5326 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5327 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5328 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5329 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5330 = private unnamed_addr constant [32 x i8] c"call i32 @finch_write_file(ptr \00" -@.str.5331 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5332 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5333 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5334 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5335 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5336 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.5337 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5338 = private unnamed_addr constant [14 x i8] c"the file name\00" -@.str.5339 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5340 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5341 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5342 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5343 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5344 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5345 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5346 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5347 = private unnamed_addr constant [37 x i8] c"call i32 @finch_try_delete_file(ptr \00" -@.str.5348 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5349 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5350 = private unnamed_addr constant [13 x i8] c"icmp eq i32 \00" -@.str.5351 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5352 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5353 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5354 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5355 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5356 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5357 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5358 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5359 = private unnamed_addr constant [33 x i8] c"call i32 @finch_delete_file(ptr \00" -@.str.5360 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5361 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5362 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5363 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5364 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5365 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.5366 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5367 = private unnamed_addr constant [12 x i8] c"the command\00" -@.str.5368 = private unnamed_addr constant [31 x i8] c"call void @finch_str_copy(ptr \00" -@.str.5369 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5370 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5371 = private unnamed_addr constant [27 x i8] c"call i64 @finch_shell(ptr \00" -@.str.5372 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5373 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5374 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5375 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.5376 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5377 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5378 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5379 = private unnamed_addr constant [14 x i8] c"the exit code\00" -@.str.5380 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5381 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5382 = private unnamed_addr constant [27 x i8] c"call i32 @fflush(ptr null)\00" -@.str.5383 = private unnamed_addr constant [21 x i8] c"call void @exit(i32 \00" -@.str.5384 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5385 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5386 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.5387 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5388 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5389 = private unnamed_addr constant [13 x i8] c"the question\00" -@.str.5390 = private unnamed_addr constant [28 x i8] c"call void @finch_input(ptr \00" -@.str.5391 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5392 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5393 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5394 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5395 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.5396 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5397 = private unnamed_addr constant [27 x i8] c"call ptr @finch_alloc(i64 \00" -@.str.5398 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5399 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.5400 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5401 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5402 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5403 = 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.5404 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5405 = private unnamed_addr constant [10 x i8] c"free.drop\00" -@.str.5406 = private unnamed_addr constant [10 x i8] c"free.done\00" -@.str.5407 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5408 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5409 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5410 = private unnamed_addr constant [21 x i8] c"call void @free(ptr \00" -@.str.5411 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5412 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5413 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5414 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5415 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5416 = private unnamed_addr constant [48 x i8] c"' is not generic, so it takes no type arguments\00" -@.str.5417 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5418 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5419 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5420 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5421 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5422 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5423 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5424 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5425 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5426 = private unnamed_addr constant [43 x i8] c"' is generic, so say which type it holds: \00" -@.str.5427 = private unnamed_addr constant [11 x i8] c"[int](...)\00" -@.str.5428 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5429 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5430 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5431 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5432 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5433 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5434 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5435 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5436 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5437 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5438 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5439 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5440 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5441 = private unnamed_addr constant [17 x i8] c"```finch\0Astruct \00" -@.str.5442 = private unnamed_addr constant [4 x i8] c" { \00" -@.str.5443 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5444 = private unnamed_addr constant [7 x i8] c" }\0A```\00" -@.str.5445 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5446 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5447 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5448 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5449 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5450 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5451 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5452 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5453 = private unnamed_addr constant [27 x i8] c"used .ci on a null pointer\00" -@.str.5454 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5455 = private unnamed_addr constant [2 x i8] c"C\00" -@.str.5456 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5457 = private unnamed_addr constant [32 x i8] c"' is a variable, not a function\00" -@.str.5458 = private unnamed_addr constant [29 x i8] c"there is no function named '\00" -@.str.5459 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5460 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5461 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5462 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5463 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.5464 = private unnamed_addr constant [53 x i8] c"main can't be called, it is where the program starts\00" -@.str.5465 = private unnamed_addr constant [5 x i8] c"ptr \00" -@.str.5466 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5467 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5468 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5469 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5470 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5471 = private unnamed_addr constant [11 x i8] c"argument '\00" -@.str.5472 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5473 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5474 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5475 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5476 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5477 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5478 = private unnamed_addr constant [32 x i8] c"used .ftarget on a null pointer\00" -@.str.5479 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5480 = private unnamed_addr constant [40 x i8] c"' can fail, so say what happens then: \00" -@.str.5481 = private unnamed_addr constant [20 x i8] c"(...) or , \00" -@.str.5482 = private unnamed_addr constant [28 x i8] c"(...) or { ... }, or try \00" -@.str.5483 = private unnamed_addr constant [6 x i8] c"(...)\00" -@.str.5484 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.5485 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5486 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.5487 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5488 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5489 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5490 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5491 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5492 = private unnamed_addr constant [8 x i8] c"xor i1 \00" -@.str.5493 = private unnamed_addr constant [7 x i8] c", true\00" -@.str.5494 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5495 = private unnamed_addr constant [32 x i8] c"used .ffailed on a null pointer\00" -@.str.5496 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5497 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5498 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5499 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5500 = private unnamed_addr constant [29 x i8] c"used .fmsg on a null pointer\00" -@.str.5501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5502 = private unnamed_addr constant [14 x i8] c"extractvalue \00" -@.str.5503 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5504 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5505 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5506 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5507 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5508 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5509 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5510 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.5511 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5512 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5513 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5514 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5515 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5516 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5517 = 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.5518 = private unnamed_addr constant [6 x i8] c" has \00" -@.str.5519 = private unnamed_addr constant [18 x i8] c" fields, but got \00" -@.str.5520 = private unnamed_addr constant [24 x i8] c" values (or name them: \00" -@.str.5521 = private unnamed_addr constant [16 x i8] c"(field: value))\00" -@.str.5522 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5523 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5524 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5525 = private unnamed_addr constant [16 x i8] c" has no field '\00" -@.str.5526 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5527 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5528 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5529 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5530 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5531 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5532 = private unnamed_addr constant [17 x i8] c"' is given twice\00" -@.str.5533 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5534 = private unnamed_addr constant [16 x i8] c"zeroinitializer\00" -@.str.5535 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5536 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5537 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5538 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5539 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5540 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5541 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5542 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5543 = private unnamed_addr constant [12 x i8] c"the field '\00" -@.str.5544 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5545 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5546 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5547 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5548 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5549 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5550 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5551 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5552 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5553 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5554 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5555 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5556 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5557 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5558 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5559 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5560 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5561 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5562 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5563 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5564 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5565 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5566 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5567 = private unnamed_addr constant [17 x i8] c"the default of '\00" -@.str.5568 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5569 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5570 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5571 = private unnamed_addr constant [31 x i8] c"used .module on a null pointer\00" -@.str.5572 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5573 = private unnamed_addr constant [31 x i8] c"used .tnames on a null pointer\00" -@.str.5574 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5575 = private unnamed_addr constant [30 x i8] c"used .targs on a null pointer\00" -@.str.5576 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5577 = private unnamed_addr constant [31 x i8] c"used .scopes on a null pointer\00" -@.str.5578 = private unnamed_addr constant [13 x i8] c"insertvalue \00" -@.str.5579 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5580 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5581 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5582 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5583 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5584 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5585 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.5586 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5587 = private unnamed_addr constant [12 x i8] c"src/gen.fch\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"var\00" -@.str.5590 = private unnamed_addr constant [39 x i8] c"there is no variable or module named '\00" -@.str.5591 = private unnamed_addr constant [33 x i8] c"' (to use a module, add import \00" -@.str.5592 = private unnamed_addr constant [14 x i8] c" at the top)\00" -@.str.5593 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5594 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5595 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5596 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5597 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5598 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5599 = private unnamed_addr constant [13 x i8] c"the module '\00" -@.str.5600 = private unnamed_addr constant [36 x i8] c"' has no function or struct named '\00" -@.str.5601 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.5602 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5603 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5604 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5605 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5606 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5607 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5608 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5609 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5610 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5611 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5612 = private unnamed_addr constant [6 x i8] c"array\00" -@.str.5613 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5614 = private unnamed_addr constant [64 x i8] c"() would change a temporary array; store it in a variable first\00" -@.str.5615 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5616 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5617 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.5618 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5619 = private unnamed_addr constant [62 x i8] c"() would change a temporary map; store it in a variable first\00" -@.str.5620 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5621 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5622 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5623 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5624 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5625 = private unnamed_addr constant [13 x i8] c"icmp eq ptr \00" -@.str.5626 = private unnamed_addr constant [7 x i8] c", null\00" -@.str.5627 = private unnamed_addr constant [9 x i8] c"called .\00" -@.str.5628 = private unnamed_addr constant [21 x i8] c"() on a null pointer\00" -@.str.5629 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5630 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5631 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5632 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5633 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5634 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5635 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5636 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5637 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5638 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5639 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5640 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5641 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5642 = private unnamed_addr constant [32 x i8] c"used .structs on a null pointer\00" -@.str.5643 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5644 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5645 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5646 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5647 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5648 = private unnamed_addr constant [35 x i8] c" has no methods; add one with fn \00" -@.str.5649 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5650 = private unnamed_addr constant [14 x i8] c"(...) { ... }\00" -@.str.5651 = private unnamed_addr constant [5 x i8] c"the \00" -@.str.5652 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5653 = private unnamed_addr constant [17 x i8] c" has no method '\00" -@.str.5654 = private unnamed_addr constant [12 x i8] c"' (it has: \00" -@.str.5655 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5656 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5657 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5658 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.5659 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5660 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.5661 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.5662 = private unnamed_addr constant [29 x i8] c"() would change a temporary \00" -@.str.5663 = private unnamed_addr constant [31 x i8] c"; store it in a variable first\00" -@.str.5664 = private unnamed_addr constant [20 x i8] c"the loop variable '\00" -@.str.5665 = private unnamed_addr constant [19 x i8] c"' can't be changed\00" -@.str.5666 = private unnamed_addr constant [2 x i8] c".\00" -@.str.5667 = private unnamed_addr constant [16 x i8] c" has no methods\00" -@.str.5668 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5669 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5670 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5671 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.5672 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5673 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5674 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5675 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5676 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5677 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5678 = private unnamed_addr constant [34 x i8] c"call void @finch_arr_reserve(ptr \00" -@.str.5679 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5680 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5681 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5682 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5683 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5684 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5685 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5686 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5687 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5688 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.5689 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5690 = private unnamed_addr constant [13 x i8] c"icmp eq i64 \00" -@.str.5691 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5692 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.5693 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5694 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5695 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5696 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5697 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5698 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5699 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5700 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.5701 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5702 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5703 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5704 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5705 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5706 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5707 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5708 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5709 = private unnamed_addr constant [22 x i8] c"the value to look for\00" -@.str.5710 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5711 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5712 = private unnamed_addr constant [3 x i8] c"-1\00" -@.str.5713 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5714 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5715 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5716 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5717 = private unnamed_addr constant [2 x i8] c"0\00" -@.str.5718 = private unnamed_addr constant [10 x i8] c"find.cond\00" -@.str.5719 = private unnamed_addr constant [10 x i8] c"find.body\00" -@.str.5720 = private unnamed_addr constant [9 x i8] c"find.hit\00" -@.str.5721 = private unnamed_addr constant [10 x i8] c"find.next\00" -@.str.5722 = private unnamed_addr constant [9 x i8] c"find.end\00" -@.str.5723 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5724 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5725 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5726 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5727 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5728 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5729 = private unnamed_addr constant [3 x i8] c"==\00" -@.str.5730 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5731 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5732 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5733 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5734 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5735 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5736 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5737 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5738 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5739 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5740 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.5741 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5742 = private unnamed_addr constant [32 x i8] c"join() works on an array of str\00" -@.str.5743 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5744 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.5745 = private unnamed_addr constant [31 x i8] c"call void @finch_str_join(ptr \00" -@.str.5746 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5747 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5748 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5749 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5750 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5751 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.5752 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5753 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5754 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5755 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5756 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5757 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5758 = private unnamed_addr constant [12 x i8] c"the element\00" -@.str.5759 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5760 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5761 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5762 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_insert_gap(ptr \00" -@.str.5763 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5764 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5765 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5766 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5767 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5768 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5769 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5770 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5771 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5772 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5773 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.5774 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5775 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5776 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5777 = private unnamed_addr constant [13 x i8] c"the position\00" -@.str.5778 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5779 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5780 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5781 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5782 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5783 = private unnamed_addr constant [37 x i8] c"call void @finch_arr_remove_gap(ptr \00" -@.str.5784 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5785 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5786 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5787 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.5788 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5789 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5790 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5791 = private unnamed_addr constant [15 x i8] c"the new length\00" -@.str.5792 = private unnamed_addr constant [33 x i8] c"call void @finch_arr_resize(ptr \00" -@.str.5793 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5794 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5795 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5796 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5797 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.5798 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5799 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5800 = private unnamed_addr constant [10 x i8] c"sdiv i64 \00" -@.str.5801 = private unnamed_addr constant [4 x i8] c", 2\00" -@.str.5802 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5803 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5804 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5805 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5806 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5807 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5808 = private unnamed_addr constant [4 x i8] c", 1\00" -@.str.5809 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5810 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5811 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5812 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5813 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5814 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5815 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.5816 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5817 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5818 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5819 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5820 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5821 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5822 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5823 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5824 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5825 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5826 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5827 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5828 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5829 = private unnamed_addr constant [14 x i8] c"icmp sgt i64 \00" -@.str.5830 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5831 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5832 = private unnamed_addr constant [7 x i8] c"or i1 \00" -@.str.5833 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5834 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5835 = private unnamed_addr constant [34 x i8] c"slice(start, end) is out of range\00" -@.str.5836 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5837 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5838 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5839 = private unnamed_addr constant [31 x i8] c"call void @finch_arr_make(ptr \00" -@.str.5840 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5841 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5842 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5843 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5844 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5845 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5846 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5847 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5848 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5849 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5850 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5851 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5852 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5853 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5854 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5855 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5856 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.5857 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.5858 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5859 = private unnamed_addr constant [48 x i8] c"sort() works on arrays of numbers, chars or str\00" -@.str.5860 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5861 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5862 = private unnamed_addr constant [22 x i8] c"call void @qsort(ptr \00" -@.str.5863 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5864 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5865 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5866 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5867 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.5868 = private unnamed_addr constant [25 x i8] c"an array has no method '\00" -@.str.5869 = private unnamed_addr constant [97 x i8] c"' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)\00" -@.str.5870 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5871 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.5872 = private unnamed_addr constant [47 x i8] c"getelementptr inbounds { ptr, i64, i64 }, ptr \00" -@.str.5873 = private unnamed_addr constant [15 x i8] c", i32 0, i32 1\00" -@.str.5874 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.5875 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5876 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5877 = private unnamed_addr constant [14 x i8] c"icmp slt i64 \00" -@.str.5878 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5879 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5880 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5881 = private unnamed_addr constant [11 x i8] c"select i1 \00" -@.str.5882 = private unnamed_addr constant [14 x i8] c", i64 0, i64 \00" -@.str.5883 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5884 = private unnamed_addr constant [9 x i8] c"sub i64 \00" -@.str.5885 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5886 = private unnamed_addr constant [24 x i8] c"getelementptr inbounds \00" -@.str.5887 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5888 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5889 = private unnamed_addr constant [9 x i8] c"add i64 \00" -@.str.5890 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5891 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5892 = private unnamed_addr constant [12 x i8] c"@finch.cmp.\00" -@.str.5893 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5894 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5895 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5896 = private unnamed_addr constant [29 x i8] c"used .done on a null pointer\00" -@.str.5897 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5898 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5899 = private unnamed_addr constant [40 x i8] c"call i64 @finch_str_cmp(ptr %x, ptr %y)\00" -@.str.5900 = private unnamed_addr constant [11 x i8] c"trunc i64 \00" -@.str.5901 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5902 = private unnamed_addr constant [3 x i8] c"%x\00" -@.str.5903 = private unnamed_addr constant [3 x i8] c"%y\00" -@.str.5904 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5905 = private unnamed_addr constant [1 x i8] c"\00" -@.str.5906 = private unnamed_addr constant [10 x i8] c"fcmp olt \00" -@.str.5907 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5908 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5909 = private unnamed_addr constant [10 x i8] c"fcmp ogt \00" -@.str.5910 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5911 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5912 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5913 = private unnamed_addr constant [2 x i8] c"<\00" -@.str.5914 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5915 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5916 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5917 = private unnamed_addr constant [6 x i8] c"icmp \00" -@.str.5918 = private unnamed_addr constant [2 x i8] c">\00" -@.str.5919 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5920 = private unnamed_addr constant [2 x i8] c" \00" -@.str.5921 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5922 = private unnamed_addr constant [9 x i8] c"sub i32 \00" -@.str.5923 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5924 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5925 = private unnamed_addr constant [3 x i8] c", \00" -@.str.5926 = private unnamed_addr constant [9 x i8] c"zext i1 \00" -@.str.5927 = private unnamed_addr constant [8 x i8] c" to i32\00" -@.str.5928 = private unnamed_addr constant [9 x i8] c"ret i32 \00" -@.str.5929 = private unnamed_addr constant [21 x i8] c"define internal i32 \00" -@.str.5930 = private unnamed_addr constant [17 x i8] c"(ptr %x, ptr %y)\00" -@.str.5931 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5932 = private unnamed_addr constant [30 x i8] c"used .files on a null pointer\00" -@.str.5933 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5934 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.5935 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5936 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5937 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5938 = private unnamed_addr constant [10 x i8] c"the start\00" -@.str.5939 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5940 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5941 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5942 = private unnamed_addr constant [8 x i8] c"the end\00" -@.str.5943 = private unnamed_addr constant [30 x i8] c"call void @finch_str_sub(ptr \00" -@.str.5944 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5945 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5946 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5947 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5948 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.5949 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5950 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5951 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5952 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5953 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5954 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.5955 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5956 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5957 = private unnamed_addr constant [21 x i8] c"the text to look for\00" -@.str.5958 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.5959 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5960 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5961 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5962 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.5963 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.5964 = private unnamed_addr constant [30 x i8] c"call i64 @finch_str_find(ptr \00" -@.str.5965 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5966 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5967 = private unnamed_addr constant [14 x i8] c"icmp sge i64 \00" -@.str.5968 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5969 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5970 = private unnamed_addr constant [18 x i8] c"@finch_str_starts\00" -@.str.5971 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.5972 = private unnamed_addr constant [16 x i8] c"@finch_str_ends\00" -@.str.5973 = private unnamed_addr constant [10 x i8] c"call i32 \00" -@.str.5974 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5975 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5976 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5977 = private unnamed_addr constant [13 x i8] c"icmp ne i32 \00" -@.str.5978 = private unnamed_addr constant [4 x i8] c", 0\00" -@.str.5979 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.5980 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.5981 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.5982 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.5983 = private unnamed_addr constant [22 x i8] c"call void @finch_str_\00" -@.str.5984 = private unnamed_addr constant [6 x i8] c"(ptr \00" -@.str.5985 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5986 = private unnamed_addr constant [2 x i8] c")\00" -@.str.5987 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.5988 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.5989 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.5990 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5991 = private unnamed_addr constant [20 x i8] c"the text to replace\00" -@.str.5992 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5993 = private unnamed_addr constant [32 x i8] c"used .pending on a null pointer\00" -@.str.5994 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.5995 = private unnamed_addr constant [13 x i8] c"the new text\00" -@.str.5996 = private unnamed_addr constant [34 x i8] c"call void @finch_str_replace(ptr \00" -@.str.5997 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5998 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.5999 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6000 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6001 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6002 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6003 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6004 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6005 = private unnamed_addr constant [14 x i8] c"the separator\00" -@.str.6006 = private unnamed_addr constant [32 x i8] c"call void @finch_str_split(ptr \00" -@.str.6007 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6008 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6009 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6010 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6011 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6012 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6013 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6014 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6015 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6016 = private unnamed_addr constant [10 x i8] c"the count\00" -@.str.6017 = private unnamed_addr constant [33 x i8] c"call void @finch_str_repeat(ptr \00" -@.str.6018 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6019 = private unnamed_addr constant [7 x i8] c", i64 \00" -@.str.6020 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6021 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6022 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6023 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6024 = private unnamed_addr constant [37 x i8] c"call void @finch_bytes_from_str(ptr \00" -@.str.6025 = private unnamed_addr constant [7 x i8] c", ptr \00" -@.str.6026 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6027 = private unnamed_addr constant [18 x i8] c"{ ptr, i64, i64 }\00" -@.str.6028 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6029 = private unnamed_addr constant [22 x i8] c"a str has no method '\00" -@.str.6030 = 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.6031 = private unnamed_addr constant [55 x i8] c"declare void @finch_panic(ptr, i64, ptr) noreturn cold\00" -@.str.6032 = private unnamed_addr constant [66 x i8] c"declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold\00" -@.str.6033 = private unnamed_addr constant [30 x i8] c"declare ptr @finch_alloc(i64)\00" -@.str.6034 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_copy(ptr, ptr)\00" -@.str.6035 = private unnamed_addr constant [34 x i8] c"declare void @finch_str_drop(ptr)\00" -@.str.6036 = private unnamed_addr constant [34 x i8] c"declare void @finch_arr_free(ptr)\00" -@.str.6037 = private unnamed_addr constant [34 x i8] c"declare void @finch_map_free(ptr)\00" -@.str.6038 = private unnamed_addr constant [33 x i8] c"declare void @finch_str_own(ptr)\00" -@.str.6039 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_concat(ptr, ptr, ptr)\00" -@.str.6040 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_str_eq(ptr, ptr)\00" -@.str.6041 = private unnamed_addr constant [37 x i8] c"declare i64 @finch_str_cmp(ptr, ptr)\00" -@.str.6042 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_add(ptr, ptr, i64)\00" -@.str.6043 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_int(ptr, i64)\00" -@.str.6044 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_uint(ptr, i64)\00" -@.str.6045 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_float(ptr, double)\00" -@.str.6046 = private unnamed_addr constant [39 x i8] c"declare void @finch_buf_bool(ptr, i32)\00" -@.str.6047 = private unnamed_addr constant [38 x i8] c"declare void @finch_buf_ptr(ptr, ptr)\00" -@.str.6048 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_char(ptr, i8, i32)\00" -@.str.6049 = private unnamed_addr constant [43 x i8] c"declare void @finch_buf_str(ptr, ptr, i32)\00" -@.str.6050 = private unnamed_addr constant [35 x i8] c"declare void @finch_buf_print(ptr)\00" -@.str.6051 = private unnamed_addr constant [43 x i8] c"declare void @finch_str_from_int(ptr, i64)\00" -@.str.6052 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_uint(ptr, i64)\00" -@.str.6053 = private unnamed_addr constant [48 x i8] c"declare void @finch_str_from_float(ptr, double)\00" -@.str.6054 = private unnamed_addr constant [51 x i8] c"declare void @finch_str_from_char(ptr, i8 signext)\00" -@.str.6055 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_from_bool(ptr, i32)\00" -@.str.6056 = private unnamed_addr constant [45 x i8] c"declare i64 @finch_str_to_int(ptr, ptr, i64)\00" -@.str.6057 = private unnamed_addr constant [50 x i8] c"declare double @finch_str_to_float(ptr, ptr, i64)\00" -@.str.6058 = private unnamed_addr constant [58 x i8] c"declare void @finch_str_sub(ptr, ptr, i64, i64, ptr, i64)\00" -@.str.6059 = private unnamed_addr constant [38 x i8] c"declare i64 @finch_str_find(ptr, ptr)\00" -@.str.6060 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_str_starts(ptr, ptr)\00" -@.str.6061 = private unnamed_addr constant [38 x i8] c"declare i32 @finch_str_ends(ptr, ptr)\00" -@.str.6062 = private unnamed_addr constant [39 x i8] c"declare void @finch_str_trim(ptr, ptr)\00" -@.str.6063 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_upper(ptr, ptr)\00" -@.str.6064 = private unnamed_addr constant [40 x i8] c"declare void @finch_str_lower(ptr, ptr)\00" -@.str.6065 = private unnamed_addr constant [52 x i8] c"declare void @finch_str_replace(ptr, ptr, ptr, ptr)\00" -@.str.6066 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_split(ptr, ptr, ptr)\00" -@.str.6067 = private unnamed_addr constant [44 x i8] c"declare void @finch_str_join(ptr, ptr, ptr)\00" -@.str.6068 = private unnamed_addr constant [46 x i8] c"declare void @finch_str_repeat(ptr, ptr, i64)\00" -@.str.6069 = private unnamed_addr constant [45 x i8] c"declare void @finch_bytes_from_str(ptr, ptr)\00" -@.str.6070 = private unnamed_addr constant [53 x i8] c"declare i64 @finch_map_find(ptr, ptr, i64, i64, i32)\00" -@.str.6071 = private unnamed_addr constant [58 x i8] c"declare i64 @finch_map_slot(ptr, ptr, i64, i64, i32, ptr)\00" -@.str.6072 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_remove_at(ptr, i64, i64)\00" -@.str.6073 = private unnamed_addr constant [35 x i8] c"declare void @finch_map_clear(ptr)\00" -@.str.6074 = private unnamed_addr constant [49 x i8] c"declare void @finch_map_clone_raw(ptr, ptr, i64)\00" -@.str.6075 = private unnamed_addr constant [61 x i8] c"declare void @finch_map_missing(ptr, i64, ptr) noreturn cold\00" -@.str.6076 = private unnamed_addr constant [56 x i8] c"declare void @finch_map_changed(ptr, i64) noreturn cold\00" -@.str.6077 = private unnamed_addr constant [47 x i8] c"declare void @finch_arr_reserve(ptr, i64, i64)\00" -@.str.6078 = private unnamed_addr constant [49 x i8] c"declare void @finch_arr_clone_raw(ptr, ptr, i64)\00" -@.str.6079 = private unnamed_addr constant [44 x i8] c"declare void @finch_arr_make(ptr, i64, i64)\00" -@.str.6080 = private unnamed_addr constant [46 x i8] c"declare void @finch_arr_resize(ptr, i64, i64)\00" -@.str.6081 = private unnamed_addr constant [60 x i8] c"declare void @finch_arr_insert_gap(ptr, i64, i64, ptr, i64)\00" -@.str.6082 = private unnamed_addr constant [50 x i8] c"declare void @finch_arr_remove_gap(ptr, i64, i64)\00" -@.str.6083 = private unnamed_addr constant [40 x i8] c"declare void @qsort(ptr, i64, i64, ptr)\00" -@.str.6084 = private unnamed_addr constant [40 x i8] c"declare void @finch_args(ptr, i32, ptr)\00" -@.str.6085 = private unnamed_addr constant [36 x i8] c"declare void @finch_input(ptr, ptr)\00" -@.str.6086 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_file_exists(ptr)\00" -@.str.6087 = private unnamed_addr constant [46 x i8] c"declare i32 @finch_str_try_int(ptr, ptr, ptr)\00" -@.str.6088 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_str_try_float(ptr, ptr, ptr)\00" -@.str.6089 = private unnamed_addr constant [48 x i8] c"declare i32 @finch_try_read_file(ptr, ptr, ptr)\00" -@.str.6090 = private unnamed_addr constant [49 x i8] c"declare i32 @finch_try_write_file(ptr, ptr, ptr)\00" -@.str.6091 = private unnamed_addr constant [45 x i8] c"declare i32 @finch_try_delete_file(ptr, ptr)\00" -@.str.6092 = private unnamed_addr constant [38 x i8] c"declare void @finch_report_error(ptr)\00" -@.str.6093 = private unnamed_addr constant [50 x i8] c"declare void @finch_read_file(ptr, ptr, ptr, i64)\00" -@.str.6094 = private unnamed_addr constant [40 x i8] c"declare i32 @finch_write_file(ptr, ptr)\00" -@.str.6095 = private unnamed_addr constant [30 x i8] c"declare i64 @finch_shell(ptr)\00" -@.str.6096 = private unnamed_addr constant [36 x i8] c"declare i32 @finch_delete_file(ptr)\00" -@.str.6097 = private unnamed_addr constant [30 x i8] c"declare i32 @printf(ptr, ...)\00" -@.str.6098 = private unnamed_addr constant [25 x i8] c"declare i32 @fflush(ptr)\00" -@.str.6099 = private unnamed_addr constant [41 x i8] c"declare void @finch_str_from_c(ptr, ptr)\00" -@.str.6100 = private unnamed_addr constant [34 x i8] c"declare void @finch_on_fatal(ptr)\00" -@.str.6101 = private unnamed_addr constant [35 x i8] c"declare ptr @finch_std_stream(i32)\00" -@.str.6102 = private unnamed_addr constant [45 x i8] c"declare void @finch_str_from_bytes(ptr, ptr)\00" -@.str.6103 = private unnamed_addr constant [33 x i8] c"declare void @exit(i32) noreturn\00" -@.str.6104 = private unnamed_addr constant [24 x i8] c"declare void @free(ptr)\00" -@.str.6105 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6106 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6107 = private unnamed_addr constant [53 x i8] c"; generated by the Finch compiler written in Finch\0A\0A\00" -@.str.6108 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6109 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6110 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6111 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6112 = private unnamed_addr constant [18 x i8] c"target triple = \22\00" -@.str.6113 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6114 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6115 = private unnamed_addr constant [4 x i8] c"\22\0A\0A\00" -@.str.6116 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6117 = private unnamed_addr constant [29 x i8] c"used .head on a null pointer\00" -@.str.6118 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6119 = private unnamed_addr constant [3 x i8] c"\0A\0A\00" -@.str.6120 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6121 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6122 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6123 = private unnamed_addr constant [63 x i8] c"declare void @llvm.dbg.declare(metadata, metadata, metadata)\0A\0A\00" -@.str.6124 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6125 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6126 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6127 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6128 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6129 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6130 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6131 = private unnamed_addr constant [30 x i8] c"used .debug on a null pointer\00" -@.str.6132 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6133 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6134 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6135 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6136 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6137 = private unnamed_addr constant [34 x i8] c"!{i32 7, !\22Dwarf Version\22, i32 4}\00" -@.str.6138 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6139 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6140 = private unnamed_addr constant [39 x i8] c"!{i32 2, !\22Debug Info Version\22, i32 3}\00" -@.str.6141 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6142 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6143 = private unnamed_addr constant [20 x i8] c"!DIFile(filename: \22\00" -@.str.6144 = private unnamed_addr constant [16 x i8] c"\22, directory: \22\00" -@.str.6145 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6146 = private unnamed_addr constant [28 x i8] c"used .cwd on a null pointer\00" -@.str.6147 = private unnamed_addr constant [3 x i8] c"\22)\00" -@.str.6148 = private unnamed_addr constant [53 x i8] c"distinct !DICompileUnit(language: DW_LANG_C, file: !\00" -@.str.6149 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6150 = private unnamed_addr constant [32 x i8] c"used .mdfiles on a null pointer\00" -@.str.6151 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6152 = private unnamed_addr constant [85 x i8] c", producer: \22finch\22, isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)\00" -@.str.6153 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6154 = private unnamed_addr constant [27 x i8] c"used .md on a null pointer\00" -@.str.6155 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6156 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6157 = private unnamed_addr constant [5 x i8] c"main\00" -@.str.6158 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6159 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6160 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6161 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6162 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6163 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6164 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6165 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6166 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6167 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6168 = 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.6169 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6170 = private unnamed_addr constant [65 x i8] c":1:1: error: there is no main function (add 'fn main() { ... }')\00" -@.str.6171 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6172 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6173 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6174 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6175 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6176 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6177 = private unnamed_addr constant [30 x i8] c"used .index on a null pointer\00" -@.str.6178 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6179 = private unnamed_addr constant [30 x i8] c"used .progs on a null pointer\00" -@.str.6180 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6181 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6182 = private unnamed_addr constant [28 x i8] c"used .idx on a null pointer\00" -@.str.6183 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6184 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6185 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6186 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6187 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6188 = private unnamed_addr constant [27 x i8] c"used .tg on a null pointer\00" -@.str.6189 = private unnamed_addr constant [11 x i8] c" dllexport\00" -@.str.6190 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6191 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6192 = private unnamed_addr constant [7 x i8] c"define\00" -@.str.6193 = 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.6194 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6195 = private unnamed_addr constant [29 x i8] c"used .sigs on a null pointer\00" -@.str.6196 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6197 = private unnamed_addr constant [6 x i8] c"call \00" -@.str.6198 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6199 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6200 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6201 = 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.6202 = private unnamed_addr constant [21 x i8] c"{ ptr, i64, i64 } %a\00" -@.str.6203 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6204 = private unnamed_addr constant [13 x i8] c" ret i32 0\0A\00" -@.str.6205 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6206 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6207 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6208 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6209 = private unnamed_addr constant [22 x i8] c" %ok = extractvalue \00" -@.str.6210 = 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.6211 = private unnamed_addr constant [21 x i8] c" %m = extractvalue \00" -@.str.6212 = 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.6213 = private unnamed_addr constant [63 x i8] c" call void @finch_report_error(ptr %mp)\0A ret i32 1\0Amain.ok:\0A\00" -@.str.6214 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6215 = private unnamed_addr constant [21 x i8] c" %v = extractvalue \00" -@.str.6216 = private unnamed_addr constant [54 x i8] c" %r, 1\0A %code = trunc i64 %v to i32\0A ret i32 %code\0A\00" -@.str.6217 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6218 = private unnamed_addr constant [6 x i8] c"%r = \00" -@.str.6219 = private unnamed_addr constant [47 x i8] c" %code = trunc i64 %r to i32\0A ret i32 %code\0A\00" -@.str.6220 = private unnamed_addr constant [12 x i8] c"src/gen.fch\00" -@.str.6221 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6222 = private unnamed_addr constant [49 x i8] c"define i32 @main(i32 %argc, ptr %argv) {\0Aentry:\0A\00" -@.str.6223 = private unnamed_addr constant [3 x i8] c" \00" -@.str.6224 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6225 = private unnamed_addr constant [3 x i8] c"}\0A\00" -@.str.6226 = private unnamed_addr constant [6 x i8] c"print\00" -@.str.6227 = private unnamed_addr constant [17 x i8] c"print(a, b, ...)\00" -@.str.6228 = private unnamed_addr constant [79 x i8] c"Prints the values separated by spaces, then a new line. Works with every type.\00" -@.str.6229 = private unnamed_addr constant [6 x i8] c"input\00" -@.str.6230 = private unnamed_addr constant [32 x i8] c"input(str question = \22\22) -> str\00" -@.str.6231 = private unnamed_addr constant [78 x i8] c"Shows the question and reads one line typed by the user, without the newline.\00" -@.str.6232 = private unnamed_addr constant [10 x i8] c"read_file\00" -@.str.6233 = private unnamed_addr constant [27 x i8] c"read_file(str path) -> str\00" -@.str.6234 = 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.6235 = private unnamed_addr constant [11 x i8] c"write_file\00" -@.str.6236 = private unnamed_addr constant [39 x i8] c"write_file(str path, str text) -> bool\00" -@.str.6237 = 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.6238 = private unnamed_addr constant [12 x i8] c"file_exists\00" -@.str.6239 = private unnamed_addr constant [30 x i8] c"file_exists(str path) -> bool\00" -@.str.6240 = private unnamed_addr constant [30 x i8] c"Is there a file at this path?\00" -@.str.6241 = private unnamed_addr constant [12 x i8] c"delete_file\00" -@.str.6242 = private unnamed_addr constant [30 x i8] c"delete_file(str path) -> bool\00" -@.str.6243 = 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.6244 = private unnamed_addr constant [6 x i8] c"error\00" -@.str.6245 = private unnamed_addr constant [19 x i8] c"error(str message)\00" -@.str.6246 = 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.6247 = private unnamed_addr constant [6 x i8] c"shell\00" -@.str.6248 = private unnamed_addr constant [26 x i8] c"shell(str command) -> int\00" -@.str.6249 = private unnamed_addr constant [67 x i8] c"Runs a command in the system's shell and gives back its exit code.\00" -@.str.6250 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.6251 = private unnamed_addr constant [15 x i8] c"exit(int code)\00" -@.str.6252 = private unnamed_addr constant [49 x i8] c"Ends the program right away with this exit code.\00" -@.str.6253 = private unnamed_addr constant [5 x i8] c"addr\00" -@.str.6254 = private unnamed_addr constant [18 x i8] c"addr(x) -> ptr[T]\00" -@.str.6255 = private unnamed_addr constant [78 x i8] c"A pointer to a variable, field or element. addr(function) gives C a callback.\00" -@.str.6256 = private unnamed_addr constant [4 x i8] c"new\00" -@.str.6257 = private unnamed_addr constant [21 x i8] c"new(value) -> ptr[T]\00" -@.str.6258 = private unnamed_addr constant [67 x i8] c"Puts a copy of the value on the heap. Give it back with free(...).\00" -@.str.6259 = private unnamed_addr constant [5 x i8] c"free\00" -@.str.6260 = private unnamed_addr constant [12 x i8] c"free(ptr p)\00" -@.str.6261 = private unnamed_addr constant [74 x i8] c"Gives back memory from new(...) (or from C), freeing what the value owns.\00" -@.str.6262 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6263 = private unnamed_addr constant [14 x i8] c"str(x) -> str\00" -@.str.6264 = private unnamed_addr constant [62 x i8] c"Turns a number, bool, char, []u8 or C char pointer into text.\00" -@.str.6265 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6266 = private unnamed_addr constant [14 x i8] c"int(x) -> int\00" -@.str.6267 = 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.6268 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6269 = private unnamed_addr constant [18 x i8] c"float(x) -> float\00" -@.str.6270 = 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.6271 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6272 = private unnamed_addr constant [20 x i8] c"char(int n) -> char\00" -@.str.6273 = private unnamed_addr constant [30 x i8] c"The character with this code.\00" -@.str.6274 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6275 = private unnamed_addr constant [20 x i8] c"bool(int n) -> bool\00" -@.str.6276 = private unnamed_addr constant [27 x i8] c"true for any number but 0.\00" -@.str.6277 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6278 = private unnamed_addr constant [14 x i8] c"ptr(x) -> ptr\00" -@.str.6279 = 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.6280 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6281 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6282 = private unnamed_addr constant [24 x i8] c"The number of elements.\00" -@.str.6283 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6284 = private unnamed_addr constant [15 x i8] c".ptr -> ptr[T]\00" -@.str.6285 = private unnamed_addr constant [41 x i8] c"The address of the first element, for C.\00" -@.str.6286 = private unnamed_addr constant [5 x i8] c"push\00" -@.str.6287 = private unnamed_addr constant [10 x i8] c"push(T x)\00" -@.str.6288 = private unnamed_addr constant [19 x i8] c"Adds x at the end.\00" -@.str.6289 = private unnamed_addr constant [4 x i8] c"pop\00" -@.str.6290 = private unnamed_addr constant [11 x i8] c"pop() -> T\00" -@.str.6291 = private unnamed_addr constant [44 x i8] c"Removes the last element and gives it back.\00" -@.str.6292 = private unnamed_addr constant [7 x i8] c"insert\00" -@.str.6293 = private unnamed_addr constant [19 x i8] c"insert(int i, T x)\00" -@.str.6294 = private unnamed_addr constant [39 x i8] c"Puts x at position i, moving the rest.\00" -@.str.6295 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6296 = private unnamed_addr constant [19 x i8] c"remove(int i) -> T\00" -@.str.6297 = private unnamed_addr constant [38 x i8] c"Removes position i and gives it back.\00" -@.str.6298 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6299 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6300 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6301 = private unnamed_addr constant [7 x i8] c"resize\00" -@.str.6302 = private unnamed_addr constant [14 x i8] c"resize(int n)\00" -@.str.6303 = private unnamed_addr constant [47 x i8] c"Makes the array n long; new elements are zero.\00" -@.str.6304 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6305 = private unnamed_addr constant [17 x i8] c"find(T x) -> int\00" -@.str.6306 = private unnamed_addr constant [23 x i8] c"The index of x, or -1.\00" -@.str.6307 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6308 = private unnamed_addr constant [22 x i8] c"contains(T x) -> bool\00" -@.str.6309 = private unnamed_addr constant [19 x i8] c"Is x in the array?\00" -@.str.6310 = private unnamed_addr constant [5 x i8] c"sort\00" -@.str.6311 = private unnamed_addr constant [7 x i8] c"sort()\00" -@.str.6312 = private unnamed_addr constant [38 x i8] c"Sorts in place (numbers, chars, str).\00" -@.str.6313 = private unnamed_addr constant [8 x i8] c"reverse\00" -@.str.6314 = private unnamed_addr constant [10 x i8] c"reverse()\00" -@.str.6315 = private unnamed_addr constant [19 x i8] c"Reverses in place.\00" -@.str.6316 = private unnamed_addr constant [6 x i8] c"slice\00" -@.str.6317 = private unnamed_addr constant [33 x i8] c"slice(int start, int end) -> []T\00" -@.str.6318 = private unnamed_addr constant [46 x i8] c"A new array with the elements start to end-1.\00" -@.str.6319 = private unnamed_addr constant [5 x i8] c"join\00" -@.str.6320 = private unnamed_addr constant [21 x i8] c"join(str sep) -> str\00" -@.str.6321 = private unnamed_addr constant [48 x i8] c"For []str: one text with sep between the parts.\00" -@.str.6322 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6323 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6324 = private unnamed_addr constant [21 x i8] c"The number of bytes.\00" -@.str.6325 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6326 = private unnamed_addr constant [18 x i8] c".ptr -> ptr[char]\00" -@.str.6327 = private unnamed_addr constant [60 x i8] c"The address of the text, for C (valid while the str lives).\00" -@.str.6328 = private unnamed_addr constant [4 x i8] c"sub\00" -@.str.6329 = private unnamed_addr constant [31 x i8] c"sub(int start, int end) -> str\00" -@.str.6330 = private unnamed_addr constant [30 x i8] c"The part from start to end-1.\00" -@.str.6331 = private unnamed_addr constant [5 x i8] c"find\00" -@.str.6332 = private unnamed_addr constant [19 x i8] c"find(str t) -> int\00" -@.str.6333 = private unnamed_addr constant [23 x i8] c"Where t starts, or -1.\00" -@.str.6334 = private unnamed_addr constant [9 x i8] c"contains\00" -@.str.6335 = private unnamed_addr constant [24 x i8] c"contains(str t) -> bool\00" -@.str.6336 = private unnamed_addr constant [25 x i8] c"Does the text contain t?\00" -@.str.6337 = private unnamed_addr constant [12 x i8] c"starts_with\00" -@.str.6338 = private unnamed_addr constant [27 x i8] c"starts_with(str t) -> bool\00" -@.str.6339 = private unnamed_addr constant [28 x i8] c"Does the text start with t?\00" -@.str.6340 = private unnamed_addr constant [10 x i8] c"ends_with\00" -@.str.6341 = private unnamed_addr constant [25 x i8] c"ends_with(str t) -> bool\00" -@.str.6342 = private unnamed_addr constant [26 x i8] c"Does the text end with t?\00" -@.str.6343 = private unnamed_addr constant [6 x i8] c"split\00" -@.str.6344 = private unnamed_addr constant [24 x i8] c"split(str sep) -> []str\00" -@.str.6345 = private unnamed_addr constant [63 x i8] c"The parts between each sep; split(\22\22) gives single characters.\00" -@.str.6346 = private unnamed_addr constant [5 x i8] c"trim\00" -@.str.6347 = private unnamed_addr constant [14 x i8] c"trim() -> str\00" -@.str.6348 = private unnamed_addr constant [42 x i8] c"Without spaces and newlines at both ends.\00" -@.str.6349 = private unnamed_addr constant [6 x i8] c"upper\00" -@.str.6350 = private unnamed_addr constant [15 x i8] c"upper() -> str\00" -@.str.6351 = private unnamed_addr constant [25 x i8] c"With a-z changed to A-Z.\00" -@.str.6352 = private unnamed_addr constant [6 x i8] c"lower\00" -@.str.6353 = private unnamed_addr constant [15 x i8] c"lower() -> str\00" -@.str.6354 = private unnamed_addr constant [25 x i8] c"With A-Z changed to a-z.\00" -@.str.6355 = private unnamed_addr constant [8 x i8] c"replace\00" -@.str.6356 = private unnamed_addr constant [33 x i8] c"replace(str from, str to) -> str\00" -@.str.6357 = private unnamed_addr constant [27 x i8] c"Every from replaced by to.\00" -@.str.6358 = private unnamed_addr constant [7 x i8] c"repeat\00" -@.str.6359 = private unnamed_addr constant [21 x i8] c"repeat(int n) -> str\00" -@.str.6360 = private unnamed_addr constant [18 x i8] c"The text n times.\00" -@.str.6361 = private unnamed_addr constant [6 x i8] c"bytes\00" -@.str.6362 = private unnamed_addr constant [16 x i8] c"bytes() -> []u8\00" -@.str.6363 = private unnamed_addr constant [23 x i8] c"The bytes of the text.\00" -@.str.6364 = private unnamed_addr constant [4 x i8] c"len\00" -@.str.6365 = private unnamed_addr constant [12 x i8] c".len -> int\00" -@.str.6366 = private unnamed_addr constant [20 x i8] c"The number of keys.\00" -@.str.6367 = private unnamed_addr constant [4 x i8] c"has\00" -@.str.6368 = private unnamed_addr constant [19 x i8] c"has(K key) -> bool\00" -@.str.6369 = private unnamed_addr constant [23 x i8] c"Is the key in the map?\00" -@.str.6370 = private unnamed_addr constant [4 x i8] c"get\00" -@.str.6371 = private unnamed_addr constant [27 x i8] c"get(K key, V default) -> V\00" -@.str.6372 = private unnamed_addr constant [54 x i8] c"The value for key, or default if the key isn't there.\00" -@.str.6373 = private unnamed_addr constant [7 x i8] c"remove\00" -@.str.6374 = private unnamed_addr constant [22 x i8] c"remove(K key) -> bool\00" -@.str.6375 = private unnamed_addr constant [53 x i8] c"Removes the key and its value; true if it was there.\00" -@.str.6376 = private unnamed_addr constant [6 x i8] c"clear\00" -@.str.6377 = private unnamed_addr constant [8 x i8] c"clear()\00" -@.str.6378 = private unnamed_addr constant [20 x i8] c"Removes everything.\00" -@.str.6379 = private unnamed_addr constant [5 x i8] c"keys\00" -@.str.6380 = private unnamed_addr constant [14 x i8] c"keys() -> []K\00" -@.str.6381 = private unnamed_addr constant [40 x i8] c"The keys, in the order they were added.\00" -@.str.6382 = private unnamed_addr constant [7 x i8] c"values\00" -@.str.6383 = private unnamed_addr constant [16 x i8] c"values() -> []V\00" -@.str.6384 = private unnamed_addr constant [48 x i8] c"The values, in the order their keys were added.\00" -@.str.6385 = private unnamed_addr constant [3 x i8] c"fn\00" -@.str.6386 = private unnamed_addr constant [7 x i8] c"return\00" -@.str.6387 = private unnamed_addr constant [3 x i8] c"if\00" -@.str.6388 = private unnamed_addr constant [5 x i8] c"else\00" -@.str.6389 = private unnamed_addr constant [6 x i8] c"while\00" -@.str.6390 = private unnamed_addr constant [4 x i8] c"for\00" -@.str.6391 = private unnamed_addr constant [3 x i8] c"in\00" -@.str.6392 = private unnamed_addr constant [6 x i8] c"break\00" -@.str.6393 = private unnamed_addr constant [9 x i8] c"continue\00" -@.str.6394 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.6395 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.6396 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.6397 = private unnamed_addr constant [7 x i8] c"import\00" -@.str.6398 = private unnamed_addr constant [5 x i8] c"link\00" -@.str.6399 = private unnamed_addr constant [7 x i8] c"struct\00" -@.str.6400 = private unnamed_addr constant [5 x i8] c"enum\00" -@.str.6401 = private unnamed_addr constant [6 x i8] c"match\00" -@.str.6402 = private unnamed_addr constant [7 x i8] c"export\00" -@.str.6403 = private unnamed_addr constant [6 x i8] c"defer\00" -@.str.6404 = private unnamed_addr constant [3 x i8] c"or\00" -@.str.6405 = private unnamed_addr constant [4 x i8] c"try\00" -@.str.6406 = private unnamed_addr constant [5 x i8] c"self\00" -@.str.6407 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6408 = private unnamed_addr constant [6 x i8] c"float\00" -@.str.6409 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6410 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6411 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6412 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6413 = private unnamed_addr constant [4 x i8] c"map\00" -@.str.6414 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6415 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6416 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6417 = private unnamed_addr constant [4 x i8] c"i64\00" -@.str.6418 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6419 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6420 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6421 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6422 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6423 = private unnamed_addr constant [4 x i8] c"f64\00" -@.str.6424 = private unnamed_addr constant [10 x i8] c"```finch\0A\00" -@.str.6425 = private unnamed_addr constant [6 x i8] c"\0A```\0A\00" -declare ptr @clang_getCString(ptr) -declare void @clang_disposeString(ptr) -@.str.6426 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6427 = private unnamed_addr constant [16 x i8] c"/finch_cc_dirs_\00" -@.str.6428 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6429 = private unnamed_addr constant [14 x i8] c"/finch_empty_\00" -@.str.6430 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6431 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6432 = private unnamed_addr constant [13 x i8] c" -E -v -x c \00" -@.str.6433 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6434 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6435 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6436 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6437 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6438 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6439 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6440 = private unnamed_addr constant [35 x i8] c"#include <...> search starts here:\00" -@.str.6441 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6442 = private unnamed_addr constant [20 x i8] c"End of search list.\00" -@.str.6443 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6444 = private unnamed_addr constant [23 x i8] c" (framework directory)\00" -@.str.6445 = private unnamed_addr constant [12 x i8] c"-iframework\00" -@.str.6446 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6447 = private unnamed_addr constant [9 x i8] c"-isystem\00" -declare void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16, ptr) -declare void @clang_getCursorUSR(ptr sret(%S.C.CXString) align 16, ptr) -@.str.6448 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6449 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6450 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6451 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6452 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -declare void @clang_getCursorSpelling(ptr sret(%S.C.CXString) align 16, ptr) -@.str.6453 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6454 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6455 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6456 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6457 = private unnamed_addr constant [13 x i8] c"anon_struct_\00" -@.str.6458 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6459 = private unnamed_addr constant [29 x i8] c"used .anon on a null pointer\00" -@.str.6460 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6461 = 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.6462 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6463 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6464 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6465 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -declare i64 @clang_Type_getSizeOf(ptr) -@.str.6466 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6467 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6468 = 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.6469 = private unnamed_addr constant [13 x i8] c"is a C union\00" -declare i32 @clang_Type_visitFields(ptr, ptr, ptr) -@.str.6470 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6471 = private unnamed_addr constant [33 x i8] c"used .defining on a null pointer\00" -@.str.6472 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6473 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6474 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6475 = 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.6476 = private unnamed_addr constant [15 x i8] c"has bit fields\00" -@.str.6477 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6478 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6479 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6480 = private unnamed_addr constant [36 x i8] c"used .unsupported on a null pointer\00" -@.str.6481 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6482 = private unnamed_addr constant [28 x i8] c"used .imp on a null pointer\00" -@.str.6483 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6484 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6485 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6486 = private unnamed_addr constant [34 x i8] c"used .hasHidden on a null pointer\00" -@.str.6487 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6488 = private unnamed_addr constant [26 x i8] c"used .s on a null pointer\00" -@.str.6489 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6490 = private unnamed_addr constant [31 x i8] c"used .fields on a null pointer\00" -@.str.6491 = private unnamed_addr constant [3 x i8] c"i8\00" -@.str.6492 = private unnamed_addr constant [3 x i8] c"u8\00" -@.str.6493 = private unnamed_addr constant [4 x i8] c"i16\00" -@.str.6494 = private unnamed_addr constant [4 x i8] c"u16\00" -@.str.6495 = private unnamed_addr constant [4 x i8] c"i32\00" -@.str.6496 = private unnamed_addr constant [4 x i8] c"u32\00" -@.str.6497 = private unnamed_addr constant [4 x i8] c"int\00" -@.str.6498 = private unnamed_addr constant [4 x i8] c"u64\00" -@.str.6499 = private unnamed_addr constant [8 x i8] c"uses a \00" -@.str.6500 = private unnamed_addr constant [12 x i8] c"-bit number\00" -@.str.6501 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6502 = private unnamed_addr constant [5 x i8] c"bool\00" -@.str.6503 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.6504 = private unnamed_addr constant [4 x i8] c"f32\00" -@.str.6505 = 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.6506 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.6507 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6508 = private unnamed_addr constant [5 x i8] c"void\00" -@.str.6509 = private unnamed_addr constant [6 x i8] c"fixed\00" -@.str.6510 = private unnamed_addr constant [4 x i8] c"ptr\00" -@.str.6511 = private unnamed_addr constant [24 x i8] c"uses a C union by value\00" -@.str.6512 = private unnamed_addr constant [37 x i8] c"uses an incomplete C struct by value\00" -@.str.6513 = private unnamed_addr constant [6 x i8] c"named\00" -@.str.6514 = 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.6515 = private unnamed_addr constant [17 x i8] c"uses long double\00" -@.str.6516 = private unnamed_addr constant [18 x i8] c"uses the C type '\00" -declare void @clang_getTypeSpelling(ptr sret(%S.C.CXString) align 16, ptr) -@.str.6517 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6518 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6519 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6520 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6521 = private unnamed_addr constant [3 x i8] c"0X\00" -@.str.6522 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6523 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6524 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6525 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6526 = private unnamed_addr constant [5 x i8] c"uUlL\00" -@.str.6527 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6528 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6529 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6530 = 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.6531 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6532 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare void @clang_getTokenSpelling(ptr sret(%S.C.CXString) align 16, ptr, ptr) -@.str.6533 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6534 = private unnamed_addr constant [27 x i8] c"used .tu on a null pointer\00" -declare void @clang_disposeTokens(ptr, ptr, i32) -@.str.6535 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6536 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.6537 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6538 = private unnamed_addr constant [2 x i8] c")\00" -@.str.6539 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6540 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6541 = private unnamed_addr constant [24 x i8] c"pop() on an empty array\00" -@.str.6542 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6543 = private unnamed_addr constant [2 x i8] c"-\00" -@.str.6544 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6545 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6546 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6547 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6548 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6549 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6550 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6551 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6552 = private unnamed_addr constant [2 x i8] c"e\00" -@.str.6553 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6554 = private unnamed_addr constant [2 x i8] c"E\00" -@.str.6555 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6556 = private unnamed_addr constant [3 x i8] c"0x\00" -@.str.6557 = private unnamed_addr constant [5 x i8] c"fFlL\00" -@.str.6558 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6559 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6560 = 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.6561 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6562 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6563 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6564 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6565 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6566 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6567 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6568 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6569 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6570 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6571 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6572 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6573 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6574 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6575 = private unnamed_addr constant [31 x i8] c"used .header on a null pointer\00" -declare i32 @clang_Cursor_getStorageClass(ptr) -@.str.6576 = private unnamed_addr constant [63 x i8] c"is a static inline C function (it has no code to link against)\00" -@.str.6577 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6578 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6579 = private unnamed_addr constant [43 x i8] c"has no parameter list in its C declaration\00" -@.str.6580 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6581 = 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.6582 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6583 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6584 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6585 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6586 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6587 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -declare i32 @clang_isCursorDefinition(ptr) -@.str.6588 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6589 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6590 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6591 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -@.str.6592 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6593 = private unnamed_addr constant [36 x i8] c"used .recordNames on a null pointer\00" -declare i32 @clang_visitChildren(ptr, ptr, ptr) -@.str.6594 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6595 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -declare i64 @clang_getEnumConstantDeclValue(ptr) -@.str.6596 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6597 = 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.6598 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6599 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6600 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6601 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.6602 = private unnamed_addr constant [3 x i8] c"-x\00" -@.str.6603 = private unnamed_addr constant [2 x i8] c"c\00" -@.str.6604 = private unnamed_addr constant [11 x i8] c"-std=gnu11\00" -@.str.6605 = private unnamed_addr constant [10 x i8] c"--target=\00" -@.str.6606 = private unnamed_addr constant [20 x i8] c"-D_USE_MATH_DEFINES\00" -@.str.6607 = private unnamed_addr constant [3 x i8] c"-I\00" -@.str.6608 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6609 = private unnamed_addr constant [1 x i8] c"\00" -declare ptr @clang_createIndex(i32, i32) -@.str.6610 = private unnamed_addr constant [11 x i8] c"#include \22\00" -@.str.6611 = private unnamed_addr constant [3 x i8] c"\22\0A\00" -@.str.6612 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6613 = private unnamed_addr constant [15 x i8] c"finch_import.c\00" -@.str.6614 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @clang_parseTranslationUnit2(ptr, ptr, ptr, i32, ptr, i32, i32, ptr) -@.str.6615 = private unnamed_addr constant [34 x i8] c": error: couldn't read C header '\00" -@.str.6616 = 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 void @clang_getDiagnosticSpelling(ptr sret(%S.C.CXString) align 16, ptr) -declare void @clang_disposeDiagnostic(ptr) -@.str.6617 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6618 = private unnamed_addr constant [15 x i8] c"file not found\00" -@.str.6619 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6620 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6621 = private unnamed_addr constant [16 x i8] c"src/cimport.fch\00" -@.str.6622 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6623 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6624 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6625 = private unnamed_addr constant [35 x i8] c": error: can't find the C header '\00" -@.str.6626 = private unnamed_addr constant [11 x i8] c"', which '\00" -@.str.6627 = private unnamed_addr constant [61 x i8] c"' includes (is its library's development package installed?)\00" -@.str.6628 = private unnamed_addr constant [20 x i8] c": error: C header '\00" -@.str.6629 = 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.6630 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6631 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6632 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6633 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6634 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6635 = private unnamed_addr constant [3 x i8] c"\5C\22\00" -@.str.6636 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6637 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6638 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6639 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.6640 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6641 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6642 = private unnamed_addr constant [4 x i8] c"NUL\00" -@.str.6643 = private unnamed_addr constant [5 x i8] c"TEMP\00" -@.str.6644 = private unnamed_addr constant [4 x i8] c"TMP\00" -@.str.6645 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6646 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6647 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.6648 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6649 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6650 = private unnamed_addr constant [2 x i8] c";\00" -declare i32 @getpid() -declare ptr @_getcwd(ptr, i32) -@.str.6651 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6652 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6653 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.6654 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6655 = private unnamed_addr constant [13 x i8] c"LOCALAPPDATA\00" -@.str.6656 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6657 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6658 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.6659 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6660 = private unnamed_addr constant [7 x i8] c"/finch\00" -@.str.6661 = private unnamed_addr constant [13 x i8] c"/finch-cache\00" -declare i32 @_setmode(i32, i32) -@.str.6662 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6663 = private unnamed_addr constant [2 x i8] c"\5C\00" -@.str.6664 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6665 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6666 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6667 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6668 = private unnamed_addr constant [2 x i8] c":\00" -@.str.6669 = private unnamed_addr constant [21 x i8] c"src/host_windows.fch\00" -@.str.6670 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @_mkdir(ptr) -@.str.6671 = private unnamed_addr constant [14 x i8] c"\22rmdir /s /q \00" -@.str.6672 = private unnamed_addr constant [9 x i8] c" 2> NUL\22\00" -@.str.6673 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6674 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @rename(ptr, ptr) -@.str.6675 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6676 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6677 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6678 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6679 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6680 = private unnamed_addr constant [15 x i8] c"/finch_triple_\00" -@.str.6681 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6682 = private unnamed_addr constant [22 x i8] c"clang -dumpmachine > \00" -@.str.6683 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6684 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6685 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6686 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6687 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6688 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6689 = private unnamed_addr constant [6 x i8] c"linux\00" -@.str.6690 = private unnamed_addr constant [25 x i8] c"x86_64-unknown-linux-gnu\00" -@.str.6691 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6692 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6693 = private unnamed_addr constant [12 x i8] c"linux-arm64\00" -@.str.6694 = private unnamed_addr constant [26 x i8] c"aarch64-unknown-linux-gnu\00" -@.str.6695 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6696 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6697 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6698 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6699 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6700 = private unnamed_addr constant [25 x i8] c"arm64-apple-macosx14.0.0\00" -@.str.6701 = private unnamed_addr constant [26 x i8] c"x86_64-apple-macosx14.0.0\00" -@.str.6702 = private unnamed_addr constant [23 x i8] c"x86_64-w64-windows-gnu\00" -@.str.6703 = private unnamed_addr constant [19 x i8] c"x86_64-w64-mingw32\00" -@.str.6704 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6705 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6706 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6707 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6708 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6709 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6710 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6711 = private unnamed_addr constant [6 x i8] c"win32\00" -@.str.6712 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6713 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6714 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6715 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6716 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6717 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6718 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6719 = private unnamed_addr constant [6 x i8] c"macos\00" -@.str.6720 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6721 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6722 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6723 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6724 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6725 = private unnamed_addr constant [8 x i8] c"aarch64\00" -@.str.6726 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6727 = private unnamed_addr constant [6 x i8] c"arm64\00" -@.str.6728 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6729 = private unnamed_addr constant [6 x i8] c"apple\00" -@.str.6730 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6731 = private unnamed_addr constant [7 x i8] c"darwin\00" -@.str.6732 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6733 = private unnamed_addr constant [8 x i8] c"windows\00" -@.str.6734 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6735 = private unnamed_addr constant [6 x i8] c"mingw\00" -@.str.6736 = private unnamed_addr constant [17 x i8] c"src/platform.fch\00" -@.str.6737 = private unnamed_addr constant [5 x i8] c"msvc\00" -@.str.6738 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6739 = private unnamed_addr constant [5 x i8] c".exe\00" -@.str.6740 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6741 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6742 = private unnamed_addr constant [23 x i8] c"x86_64-w64-mingw32-gcc\00" -@.str.6743 = private unnamed_addr constant [22 x i8] c"aarch64-linux-gnu-gcc\00" -@.str.6744 = private unnamed_addr constant [16 x i8] c"clang --target=\00" -@.str.6745 = private unnamed_addr constant [2 x i8] c";\00" -@.str.6746 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6747 = private unnamed_addr constant [3 x i8] c"cc\00" -@.str.6748 = private unnamed_addr constant [6 x i8] c"wine \00" -@.str.6749 = private unnamed_addr constant [14 x i8] c"qemu-aarch64 \00" -@.str.6750 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.6751 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6752 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6753 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6754 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6755 = private unnamed_addr constant [12 x i8] c"-framework \00" -@.str.6756 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6757 = private unnamed_addr constant [18 x i8] c"/finch_pkg_flags_\00" -@.str.6758 = private unnamed_addr constant [5 x i8] c".txt\00" -@.str.6759 = private unnamed_addr constant [19 x i8] c"pkg-config --libs \00" -@.str.6760 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6761 = private unnamed_addr constant [5 x i8] c" 2> \00" -@.str.6762 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6763 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6764 = private unnamed_addr constant [3 x i8] c"-l\00" -@.str.6765 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6766 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6767 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6768 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6769 = private unnamed_addr constant [2 x i8] c"/\00" -@.str.6770 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6771 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6772 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6773 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6774 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6775 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6776 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6777 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6778 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6779 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6780 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6781 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6782 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6783 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6784 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6785 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6786 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6787 = private unnamed_addr constant [25 x i8] c"undefined reference to `\00" -@.str.6788 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6789 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6790 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6791 = private unnamed_addr constant [19 x i8] c"undefined symbol: \00" -@.str.6792 = private unnamed_addr constant [3 x i8] c" \0A\00" -@.str.6793 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6794 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6795 = private unnamed_addr constant [28 x i8] c"unresolved external symbol \00" -@.str.6796 = private unnamed_addr constant [4 x i8] c" \0A\0D\00" -@.str.6797 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6798 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6799 = private unnamed_addr constant [15 x i8] c"cannot find -l\00" -@.str.6800 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6801 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6802 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6803 = private unnamed_addr constant [25 x i8] c"library not found for -l\00" -@.str.6804 = private unnamed_addr constant [5 x i8] c": \0A\0D\00" -@.str.6805 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6806 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6807 = private unnamed_addr constant [14 x i8] c"ld: library '\00" -@.str.6808 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6809 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6810 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6811 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6812 = private unnamed_addr constant [10 x i8] c"not found\00" -@.str.6813 = private unnamed_addr constant [12 x i8] c"framework '\00" -@.str.6814 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.6815 = private unnamed_addr constant [11 x i8] c".framework\00" -@.str.6816 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6817 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6818 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6819 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6820 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6821 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6822 = private unnamed_addr constant [20 x i8] c"\22, referenced from:\00" -@.str.6823 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6824 = private unnamed_addr constant [2 x i8] c"_\00" -@.str.6825 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6826 = private unnamed_addr constant [22 x i8] c"error: linking failed\00" -@.str.6827 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6828 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6829 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6830 = private unnamed_addr constant [21 x i8] c"error: the library '\00" -@.str.6831 = private unnamed_addr constant [63 x i8] c"' wasn't found. Is it installed? (on Nix: add it to shell.nix)\00" -@.str.6832 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6833 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6834 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6835 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6836 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6837 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6838 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6839 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6840 = private unnamed_addr constant [3 x i8] c", \00" -@.str.6841 = private unnamed_addr constant [6 x i8] c" and \00" -@.str.6842 = private unnamed_addr constant [6 x i8] c" more\00" -@.str.6843 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6844 = private unnamed_addr constant [26 x i8] c"error: no code found for \00" -@.str.6845 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6846 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6847 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6848 = private unnamed_addr constant [5 x i8] c"come\00" -@.str.6849 = private unnamed_addr constant [6 x i8] c"comes\00" -@.str.6850 = private unnamed_addr constant [8 x i8] c"error: \00" -@.str.6851 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6852 = private unnamed_addr constant [8 x i8] c" from \22\00" -@.str.6853 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6854 = private unnamed_addr constant [32 x i8] c"\22, but its library isn't linked\00" -@.str.6855 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6856 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6857 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6858 = private unnamed_addr constant [75 x i8] c" the header only says the functions exist; their code lives in a library.\00" -@.str.6859 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6860 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6861 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6862 = private unnamed_addr constant [67 x i8] c" add this at the top of your file (with the library's real name):\00" -@.str.6863 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6864 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6865 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6866 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6867 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6868 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6869 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6870 = private unnamed_addr constant [13 x i8] c" link \22\00" -@.str.6871 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6872 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.6873 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6874 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6875 = private unnamed_addr constant [2 x i8] c"\0A\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 [5 x i8] c"%.*s\00" -@.str.6879 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6880 = private unnamed_addr constant [5 x i8] c"/rt-\00" -@.str.6881 = private unnamed_addr constant [4 x i8] c"2.5\00" -@.str.6882 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6883 = private unnamed_addr constant [6 x i8] c".part\00" -@.str.6884 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6885 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6886 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6887 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6888 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6889 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6890 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6891 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6892 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6893 = private unnamed_addr constant [47 x i8] c"error: couldn't build the Finch runtime with '\00" -@.str.6894 = private unnamed_addr constant [31 x i8] c"' (is a C compiler installed?)\00" -@.str.6895 = private unnamed_addr constant [12 x i8] c"FINCH_CLANG\00" -@.str.6896 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6897 = private unnamed_addr constant [6 x i8] c"clang\00" -@.str.6898 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6899 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6900 = private unnamed_addr constant [9 x i8] c"FINCH_CC\00" -@.str.6901 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6902 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6903 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6904 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6905 = private unnamed_addr constant [4 x i8] c".ll\00" -@.str.6906 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6907 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6908 = private unnamed_addr constant [11 x i8] c" --target=\00" -@.str.6909 = private unnamed_addr constant [5 x i8] c".log\00" -@.str.6910 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6911 = private unnamed_addr constant [8 x i8] c" -w -c \00" -@.str.6912 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6913 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6914 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6915 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6916 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6917 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6918 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6919 = private unnamed_addr constant [47 x i8] c"error: clang couldn't compile the program's IR\00" -@.str.6920 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6921 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6922 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6923 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6924 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6925 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6926 = private unnamed_addr constant [5 x i8] c" -lm\00" -@.str.6927 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6928 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6929 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6930 = private unnamed_addr constant [14 x i8] c"FINCH_LDFLAGS\00" -@.str.6931 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6932 = private unnamed_addr constant [13 x i8] c" -dynamiclib\00" -@.str.6933 = private unnamed_addr constant [9 x i8] c" -shared\00" -@.str.6934 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6935 = private unnamed_addr constant [3 x i8] c".c\00" -@.str.6936 = private unnamed_addr constant [2 x i8] c".\00" -@.str.6937 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6938 = private unnamed_addr constant [7 x i8] c" -fPIC\00" -@.str.6939 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6940 = private unnamed_addr constant [5 x i8] c" -O2\00" -@.str.6941 = private unnamed_addr constant [5 x i8] c" -c \00" -@.str.6942 = private unnamed_addr constant [5 x i8] c" -o \00" -@.str.6943 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6944 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6945 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6946 = private unnamed_addr constant [25 x i8] c"error: couldn't compile \00" -@.str.6947 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6948 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6949 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6950 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6951 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6952 = private unnamed_addr constant [3 x i8] c".o\00" -@.str.6953 = private unnamed_addr constant [15 x i8] c"src/linker.fch\00" -@.str.6954 = private unnamed_addr constant [3 x i8] c".a\00" -@.str.6955 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6956 = private unnamed_addr constant [2 x i8] c" \00" -@.str.6957 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.6958 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.6959 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6960 = private unnamed_addr constant [43 x i8] c"error: no C compiler found to link with ('\00" -@.str.6961 = private unnamed_addr constant [33 x i8] c"'; install one, or set FINCH_CC)\00" -@.str.6962 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6963 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6964 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6965 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6966 = private unnamed_addr constant [5 x i8] c"%.*s\00" -@.str.6967 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6968 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6969 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6970 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6971 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6972 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6973 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6974 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6975 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6976 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6977 = private unnamed_addr constant [17 x i8] c"0123456789ABCDEF\00" -@.str.6978 = private unnamed_addr constant [8 x i8] c"file://\00" -@.str.6979 = private unnamed_addr constant [6 x i8] c"/-_.~\00" -@.str.6980 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6981 = private unnamed_addr constant [2 x i8] c"%\00" -@.str.6982 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6983 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6984 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6985 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6986 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6987 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6988 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6989 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6990 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6991 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6992 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.6993 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6994 = private unnamed_addr constant [1 x i8] c"\00" -declare i32 @getchar() -@.str.6995 = private unnamed_addr constant [1 x i8] c"\00" -@.str.6996 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.6997 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.6998 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -declare i32 @feof(ptr) -@.str.6999 = private unnamed_addr constant [33 x i8] c"the editor closed the connection\00" -@.str.7000 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7001 = private unnamed_addr constant [16 x i8] c"Content-Length:\00" -@.str.7002 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7003 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7004 = private unnamed_addr constant [26 x i8] c"the message was cut short\00" -@.str.7005 = private unnamed_addr constant [17 x i8] c"Content-Length: \00" -@.str.7006 = private unnamed_addr constant [5 x i8] c"\0D\0A\0D\0A\00" -@.str.7007 = private unnamed_addr constant [1 x i8] c"\00" -declare i64 @fwrite(ptr, i64, i64, ptr) -@.str.7008 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.7009 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.7010 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.7011 = private unnamed_addr constant [7 x i8] c"result\00" -@.str.7012 = private unnamed_addr constant [8 x i8] c"jsonrpc\00" -@.str.7013 = private unnamed_addr constant [4 x i8] c"2.0\00" -@.str.7014 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.7015 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.7016 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7017 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7018 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7019 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7020 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7021 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7022 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7023 = private unnamed_addr constant [10 x i8] c": error: \00" -@.str.7024 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7025 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7026 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7027 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7028 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7029 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7030 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7031 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7032 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7033 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7034 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7035 = private unnamed_addr constant [2 x i8] c"@\00" -@.str.7036 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7037 = private unnamed_addr constant [3 x i8] c"@R\00" -@.str.7038 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7039 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7040 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7041 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7042 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7043 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7044 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7045 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7046 = private unnamed_addr constant [3 x i8] c"@V\00" -@.str.7047 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7048 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7049 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7050 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7051 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7052 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7053 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7054 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7055 = private unnamed_addr constant [3 x i8] c"@F\00" -@.str.7056 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7057 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7058 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7059 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7060 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7061 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7062 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7063 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7064 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7065 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7066 = private unnamed_addr constant [2 x i8] c"|\00" -@.str.7067 = private unnamed_addr constant [3 x i8] c"@S\00" -@.str.7068 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7069 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7070 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7071 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7072 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7073 = private unnamed_addr constant [4 x i8] c"@SF\00" -@.str.7074 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7075 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7076 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7077 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7078 = private unnamed_addr constant [3 x i8] c"@E\00" -@.str.7079 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7080 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7081 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7082 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7083 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7084 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7085 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7086 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7087 = private unnamed_addr constant [3 x i8] c"@I\00" -@.str.7088 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7089 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7090 = private unnamed_addr constant [5 x i8] c"/doc\00" -@.str.7091 = private unnamed_addr constant [5 x i8] c".fch\00" -@.str.7092 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7093 = private unnamed_addr constant [12 x i8] c" --overlay \00" -@.str.7094 = private unnamed_addr constant [2 x i8] c"=\00" -@.str.7095 = private unnamed_addr constant [9 x i8] c"/out.txt\00" -@.str.7096 = private unnamed_addr constant [8 x i8] c" index \00" -@.str.7097 = private unnamed_addr constant [4 x i8] c" > \00" -@.str.7098 = private unnamed_addr constant [6 x i8] c" 2>&1\00" -@.str.7099 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7100 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7101 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7102 = private unnamed_addr constant [9 x i8] c"severity\00" -@.str.7103 = private unnamed_addr constant [7 x i8] c"source\00" -@.str.7104 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7105 = private unnamed_addr constant [8 x i8] c"message\00" -@.str.7106 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7107 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7108 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7109 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7110 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7111 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7112 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7113 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7114 = private unnamed_addr constant [9 x i8] c"contents\00" -@.str.7115 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7116 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7117 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7118 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7119 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7120 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7121 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7122 = private unnamed_addr constant [6 x i8] c"start\00" -@.str.7123 = private unnamed_addr constant [4 x i8] c"end\00" -@.str.7124 = private unnamed_addr constant [6 x i8] c"range\00" -@.str.7125 = private unnamed_addr constant [15 x i8] c"selectionRange\00" -@.str.7126 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7127 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7128 = private unnamed_addr constant [7 x i8] c"detail\00" -@.str.7129 = private unnamed_addr constant [5 x i8] c"kind\00" -@.str.7130 = private unnamed_addr constant [9 x i8] c"markdown\00" -@.str.7131 = private unnamed_addr constant [6 x i8] c"value\00" -@.str.7132 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7133 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7134 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7135 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7136 = private unnamed_addr constant [33 x i8] c"called .push() on a null pointer\00" -@.str.7137 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7138 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7139 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7140 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7141 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7142 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7143 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7144 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7145 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7146 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7147 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7148 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7149 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7150 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7151 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7152 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7153 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7154 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7155 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7156 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7157 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7158 = private unnamed_addr constant [5 x i8] c"char\00" -@.str.7159 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7160 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7161 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7162 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7163 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7164 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7165 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7166 = private unnamed_addr constant [4 x i8] c"str\00" -@.str.7167 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7168 = private unnamed_addr constant [5 x i8] c"map[\00" -@.str.7169 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7170 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7171 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7172 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7173 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7174 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7175 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7176 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7177 = private unnamed_addr constant [8 x i8] c"struct \00" -@.str.7178 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7179 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7180 = private unnamed_addr constant [6 x i8] c"enum \00" -@.str.7181 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7182 = private unnamed_addr constant [7 x i8] c"module\00" -@.str.7183 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7184 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7185 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7186 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7187 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7188 = private unnamed_addr constant [13 x i8] c"isIncomplete\00" -@.str.7189 = private unnamed_addr constant [6 x i8] c"items\00" -@.str.7190 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7191 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7192 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7193 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7194 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7195 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7196 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7197 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7198 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7199 = private unnamed_addr constant [5 x i8] c"ptr[\00" -@.str.7200 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7201 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7202 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7203 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7204 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7205 = private unnamed_addr constant [11 x i8] c"parameters\00" -@.str.7206 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7207 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7208 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7209 = private unnamed_addr constant [6 x i8] c"label\00" -@.str.7210 = private unnamed_addr constant [14 x i8] c"documentation\00" -@.str.7211 = private unnamed_addr constant [11 x i8] c"signatures\00" -@.str.7212 = private unnamed_addr constant [16 x i8] c"activeSignature\00" -@.str.7213 = private unnamed_addr constant [16 x i8] c"activeParameter\00" -@.str.7214 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7215 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7216 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7217 = private unnamed_addr constant [13 x i8] c"textDocument\00" -@.str.7218 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7219 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7220 = private unnamed_addr constant [7 x i8] c"method\00" -@.str.7221 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7222 = private unnamed_addr constant [7 x i8] c"params\00" -@.str.7223 = private unnamed_addr constant [3 x i8] c"id\00" -@.str.7224 = private unnamed_addr constant [11 x i8] c"initialize\00" -@.str.7225 = private unnamed_addr constant [17 x i8] c"textDocumentSync\00" -@.str.7226 = private unnamed_addr constant [14 x i8] c"hoverProvider\00" -@.str.7227 = private unnamed_addr constant [19 x i8] c"definitionProvider\00" -@.str.7228 = private unnamed_addr constant [23 x i8] c"documentSymbolProvider\00" -@.str.7229 = private unnamed_addr constant [2 x i8] c".\00" -@.str.7230 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7231 = private unnamed_addr constant [19 x i8] c"completionProvider\00" -@.str.7232 = private unnamed_addr constant [2 x i8] c"(\00" -@.str.7233 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7234 = private unnamed_addr constant [18 x i8] c"triggerCharacters\00" -@.str.7235 = private unnamed_addr constant [22 x i8] c"signatureHelpProvider\00" -@.str.7236 = private unnamed_addr constant [13 x i8] c"capabilities\00" -@.str.7237 = private unnamed_addr constant [5 x i8] c"name\00" -@.str.7238 = private unnamed_addr constant [6 x i8] c"finch\00" -@.str.7239 = private unnamed_addr constant [11 x i8] c"serverInfo\00" -@.str.7240 = private unnamed_addr constant [9 x i8] c"shutdown\00" -@.str.7241 = private unnamed_addr constant [5 x i8] c"exit\00" -@.str.7242 = private unnamed_addr constant [21 x i8] c"textDocument/didOpen\00" -@.str.7243 = private unnamed_addr constant [23 x i8] c"textDocument/didChange\00" -@.str.7244 = private unnamed_addr constant [15 x i8] c"contentChanges\00" -@.str.7245 = private unnamed_addr constant [5 x i8] c"text\00" -@.str.7246 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7247 = private unnamed_addr constant [21 x i8] c"textDocument/didSave\00" -@.str.7248 = private unnamed_addr constant [22 x i8] c"textDocument/didClose\00" -@.str.7249 = private unnamed_addr constant [4 x i8] c"uri\00" -@.str.7250 = private unnamed_addr constant [12 x i8] c"diagnostics\00" -@.str.7251 = private unnamed_addr constant [32 x i8] c"textDocument/publishDiagnostics\00" -@.str.7252 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7253 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7254 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7255 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7256 = private unnamed_addr constant [27 x i8] c"textDocument/signatureHelp\00" -@.str.7257 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7258 = private unnamed_addr constant [5 x i8] c"line\00" -@.str.7259 = private unnamed_addr constant [9 x i8] c"position\00" -@.str.7260 = private unnamed_addr constant [10 x i8] c"character\00" -@.str.7261 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7262 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7263 = private unnamed_addr constant [12 x i8] c"src/lsp.fch\00" -@.str.7264 = private unnamed_addr constant [19 x i8] c"textDocument/hover\00" -@.str.7265 = private unnamed_addr constant [24 x i8] c"textDocument/definition\00" -@.str.7266 = private unnamed_addr constant [24 x i8] c"textDocument/completion\00" -@.str.7267 = private unnamed_addr constant [28 x i8] c"textDocument/documentSymbol\00" -@.str.7268 = private unnamed_addr constant [12 x i8] c"/finch_lsp_\00" -@.str.7269 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7270 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7271 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7272 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7273 = private unnamed_addr constant [3 x i8] c"\5C\22\00" -@.str.7274 = private unnamed_addr constant [3 x i8] c"\5C\5C\00" -@.str.7275 = private unnamed_addr constant [3 x i8] c"\5Cn\00" -@.str.7276 = private unnamed_addr constant [3 x i8] c"\5Cr\00" -@.str.7277 = private unnamed_addr constant [3 x i8] c"\5Ct\00" -@.str.7278 = private unnamed_addr constant [5 x i8] c"\5Cu00\00" -@.str.7279 = private unnamed_addr constant [2 x i8] c"\22\00" -@.str.7280 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7281 = private unnamed_addr constant [17 x i8] c"0123456789abcdef\00" -@.str.7282 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7283 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7284 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7285 = private unnamed_addr constant [2 x i8] c",\00" -@.str.7286 = private unnamed_addr constant [2 x i8] c":\00" -@.str.7287 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7288 = private unnamed_addr constant [3 x i8] c": \00" -@.str.7289 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7290 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7291 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7292 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7293 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7294 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7295 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7296 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7297 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7298 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7299 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7300 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7301 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7302 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7303 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7304 = private unnamed_addr constant [3 x i8] c"[]\00" -@.str.7305 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7306 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7307 = private unnamed_addr constant [2 x i8] c"[\00" -@.str.7308 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7309 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7310 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7311 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7312 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7313 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7314 = private unnamed_addr constant [2 x i8] c"]\00" -@.str.7315 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7316 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7317 = private unnamed_addr constant [3 x i8] c"{}\00" -@.str.7318 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7319 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7320 = private unnamed_addr constant [2 x i8] c"{\00" -@.str.7321 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7322 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7323 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7324 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7325 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7326 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7327 = private unnamed_addr constant [28 x i8] c"used .out on a null pointer\00" -@.str.7328 = private unnamed_addr constant [2 x i8] c"}\00" -@.str.7329 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7330 = private unnamed_addr constant [36 x i8] c"no arm of this match fits the value\00" -@.str.7331 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7332 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7333 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7334 = private unnamed_addr constant [3 x i8] c" \00" -@.str.7335 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7336 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7337 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7338 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7339 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7340 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7341 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7342 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7343 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7344 = private unnamed_addr constant [6 x i8] c"line \00" -@.str.7345 = private unnamed_addr constant [10 x i8] c", column \00" -@.str.7346 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7347 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7348 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7349 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7350 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7351 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7352 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7353 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7354 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7355 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7356 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7357 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7358 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7359 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7360 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7361 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7362 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7363 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7364 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7365 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7366 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7367 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7368 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7369 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7370 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7371 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7372 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7373 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7374 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7375 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7376 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7377 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7378 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7379 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7380 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7381 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7382 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7383 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7384 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7385 = private unnamed_addr constant [27 x i8] c"json: the text ends where \00" -@.str.7386 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7387 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7388 = private unnamed_addr constant [14 x i8] c"json: found '\00" -@.str.7389 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7390 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7391 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7392 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7393 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7394 = private unnamed_addr constant [9 x i8] c"' where \00" -@.str.7395 = private unnamed_addr constant [13 x i8] c" should be (\00" -@.str.7396 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7397 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7398 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7399 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7400 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7401 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7402 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7403 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7404 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7405 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7406 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7407 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7408 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7409 = private unnamed_addr constant [2 x i8] c"'\00" -@.str.7410 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7411 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7412 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7413 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7414 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7415 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7416 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7417 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7418 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7419 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7420 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7421 = private unnamed_addr constant [20 x i8] c"a hexadecimal digit\00" -@.str.7422 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7423 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7424 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7425 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7426 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7427 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7428 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7429 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7430 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7431 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7432 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7433 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7434 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7435 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7436 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7437 = private unnamed_addr constant [31 x i8] c"json: a text is never closed (\00" -@.str.7438 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7439 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7440 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7441 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7442 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7443 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7444 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7445 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7446 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7447 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7448 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7449 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7450 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7451 = private unnamed_addr constant [1 x i8] c"\00" -@.str.7452 = private unnamed_addr constant [56 x i8] c"json: a line break or control character inside a text (\00" -@.str.7453 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7454 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7455 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7456 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7457 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7458 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7459 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7460 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7461 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7462 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7463 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7464 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7465 = private unnamed_addr constant [2 x i8] c"\0A\00" -@.str.7466 = private unnamed_addr constant [2 x i8] c"\09\00" -@.str.7467 = private unnamed_addr constant [2 x i8] c"\0D\00" -@.str.7468 = private unnamed_addr constant [3 x i8] c"\5Cu\00" -@.str.7469 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7470 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7471 = private unnamed_addr constant [23 x i8] c"json: unknown escape \5C\00" -@.str.7472 = private unnamed_addr constant [13 x i8] c" in a text (\00" -@.str.7473 = private unnamed_addr constant [2 x i8] c")\00" -@.str.7474 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7475 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7476 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7477 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7478 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7479 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7480 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7481 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7482 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7483 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7484 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7485 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7486 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7487 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7488 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7489 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7490 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7491 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7492 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7493 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7494 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7495 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7496 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7497 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7498 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7499 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7500 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7501 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7502 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7503 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7504 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7505 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7506 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7507 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7508 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7509 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7510 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7511 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7512 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7513 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7514 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7515 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7516 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7517 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7518 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7519 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7520 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7521 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7522 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7523 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7524 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7525 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7526 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7527 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7528 = private unnamed_addr constant [9 x i8] c"a number\00" -@.str.7529 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7530 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7531 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7532 = private unnamed_addr constant [28 x i8] c"used .src on a null pointer\00" -@.str.7533 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7534 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7535 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7536 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7537 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7538 = private unnamed_addr constant [16 x i8] c"a key in quotes\00" -@.str.7539 = private unnamed_addr constant [4 x i8] c"':'\00" -@.str.7540 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7541 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7542 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7543 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7544 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7545 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7546 = private unnamed_addr constant [11 x i8] c"',' or '}'\00" -@.str.7547 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7548 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7549 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7550 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7551 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7552 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7553 = private unnamed_addr constant [22 x i8] c"build/../std/json.fch\00" -@.str.7554 = private unnamed_addr constant [26 x i8] c"used .i on a null pointer\00" -@.str.7555 = private unnamed_addr constant [11 x i8] c"',' or ']'\00" -@.str.7556 = private unnamed_addr constant [5 x i8] c"true\00" -@.str.7557 = private unnamed_addr constant [6 x i8] c"false\00" -@.str.7558 = private unnamed_addr constant [5 x i8] c"null\00" -@.str.7559 = private unnamed_addr constant [8 x i8] c"a value\00" -@.str.7560 = private unnamed_addr constant [20 x i8] c"the end of the text\00" -@.str.7561 = private unnamed_addr constant [19 x i8] c"runtime/finch_rt.c\00" -@.str.7562 = private unnamed_addr constant [13 x i8] c"std/json.fch\00" -@.str.7563 = private unnamed_addr constant [13 x i8] c"std/path.fch\00" -@.str.7564 = private unnamed_addr constant [13 x i8] c"std/proc.fch\00" -@.str.7565 = private unnamed_addr constant [21 x i8] c"std/proc_windows.fch\00" -@.str.7566 = private unnamed_addr constant [13 x i8] c"std/time.fch\00" -@.str.7567 = private unnamed_addr constant [21 x i8] c"std/time_windows.fch\00" -@.str.7568 = private unnamed_addr constant [16 x i8] c"std/finch_win.h\00" -@.str.7569 = private unnamed_addr constant [24982 x i8] c"// The Finch runtime: string and array helpers, input, files and runtime errors.\0A// It is embedded in the compiler, compiled once into a cache folder, and linked\0A// statically into every Finch program. Everything here is plain C with no state.\0A//\0A// Layout shared with the compiler (src/codegen.cpp):\0A// str = { char *ptr; int64 len; int64 cap } ptr is always NUL-terminated\0A// cap > 0 : heap memory owned by the value (cap bytes allocated)\0A// cap == 0 : a string literal, valid forever, never written to\0A// cap == -1: borrowed from C, must be copied before it is kept\0A// []T = { T *ptr; int64 len; int64 cap } owns ptr when cap > 0\0A// map[K]V: see \22maps\22 below\0A\0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#include \0A#ifndef _WIN32\0A#include \0A#endif\0A\0Atypedef struct {\0A char *ptr;\0A int64_t len;\0A int64_t cap;\0A} FStr;\0A\0Atypedef struct {\0A void *ptr;\0A int64_t len;\0A int64_t cap;\0A} FArr;\0A\0Astatic char empty[1] = \22\22;\0A\0A// ---------- runtime errors ----------\0A\0A// A program that loads Finch libraries (finch build --shared) can take runtime errors over\0A// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler\0A// gets the message and must not return (longjmp out, or exit itself).\0Astatic void (*fatal_hook)(const char *msg);\0Avoid finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; }\0A\0Astatic __attribute__((noreturn)) void fatal(const char *msg) {\0A if (fatal_hook) fatal_hook(msg);\0A fflush(stdout);\0A fprintf(stderr, \22%s\5Cn\22, msg);\0A exit(1);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) {\0A char full[1024];\0A snprintf(full, sizeof full, \22%s:%lld: runtime error: %s\22, file, (long long)line, msg);\0A fflush(stdout);\0A fatal(full);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) {\0A char msg[128];\0A snprintf(msg, sizeof msg, \22index %lld is out of range (the length is %lld)\22, (long long)i, (long long)len);\0A finch_panic(file, line, msg);\0A}\0A\0Astatic void *must(void *p) {\0A if (!p) {\0A fflush(stdout);\0A fatal(\22runtime error: out of memory\22);\0A }\0A return p;\0A}\0A\0Avoid *finch_alloc(int64_t n) { return must(malloc(n ? (size_t)n : 1)); }\0Avoid *finch_zalloc(int64_t n) { return must(calloc(1, n ? (size_t)n : 1)); }\0A\0A// ---------- strings ----------\0A\0Astatic void str_heap(FStr *out, const char *p, int64_t len) {\0A char *m = finch_alloc(len + 1);\0A if (len) memcpy(m, p, (size_t)len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void str_static(FStr *out, const char *lit) {\0A out->ptr = (char *)lit;\0A out->len = (int64_t)strlen(lit);\0A out->cap = 0;\0A}\0A\0A// A copy that can be kept: literals are shared, everything else is duplicated.\0Avoid finch_str_copy(FStr *out, const FStr *s) {\0A if (s->cap == 0) *out = *s;\0A else str_heap(out, s->ptr, s->len);\0A}\0A\0A// Make `s` writable (before s[i] = c).\0Avoid finch_str_own(FStr *s) {\0A if (s->cap > 0) return;\0A FStr t;\0A str_heap(&t, s->ptr, s->len);\0A *s = t;\0A}\0A\0Avoid finch_str_drop(FStr *s) {\0A if (s->cap > 0) free(s->ptr);\0A}\0A\0Avoid finch_str_from_c(FStr *out, const char *p) {\0A if (!p) {\0A str_static(out, empty);\0A return;\0A }\0A out->ptr = (char *)p;\0A out->len = (int64_t)strlen(p);\0A out->cap = -1;\0A}\0A\0Avoid finch_str_concat(FStr *out, const FStr *a, const FStr *b) {\0A int64_t len = a->len + b->len;\0A char *m = finch_alloc(len + 1);\0A memcpy(m, a->ptr, (size_t)a->len);\0A memcpy(m + a->len, b->ptr, (size_t)b->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Aint finch_str_eq(const FStr *a, const FStr *b) {\0A return a->len == b->len && memcmp(a->ptr, b->ptr, (size_t)a->len) == 0;\0A}\0A\0Aint64_t finch_str_cmp(const FStr *a, const FStr *b) {\0A int64_t n = a->len < b->len ? a->len : b->len;\0A int c = memcmp(a->ptr, b->ptr, (size_t)n);\0A if (c) return c < 0 ? -1 : 1;\0A return a->len < b->len ? -1 : a->len > b->len;\0A}\0A\0Avoid finch_str_from_int(FStr *out, int64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%lld\22, (long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_uint(FStr *out, uint64_t v) {\0A char buf[32];\0A int n = snprintf(buf, sizeof buf, \22%llu\22, (unsigned long long)v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_float(FStr *out, double v) {\0A char buf[64];\0A int n = snprintf(buf, sizeof buf, \22%g\22, v);\0A str_heap(out, buf, n);\0A}\0A\0Avoid finch_str_from_char(FStr *out, char c) { str_heap(out, &c, 1); }\0A\0Avoid finch_str_from_bool(FStr *out, int b) { str_static(out, b ? \22true\22 : \22false\22); }\0A\0Astatic void number_error(char *msg, size_t size, const FStr *s, const char *kind) {\0A snprintf(msg, size, \22can't turn \5C\22%.*s\5C\22 into %s\22, (int)(s->len > 100 ? 100 : s->len), s->ptr ? s->ptr : \22\22, kind);\0A}\0A\0Astatic int parse_int(const FStr *s, int64_t *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A errno = 0;\0A long long v = strtoll(p, &end, 10);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end || errno == ERANGE);\0A}\0A\0Astatic int parse_float(const FStr *s, double *out) {\0A const char *p = s->ptr ? s->ptr : \22\22;\0A while (isspace((unsigned char)*p)) p++;\0A char *end;\0A double v = strtod(p, &end);\0A while (isspace((unsigned char)*end)) end++;\0A *out = v;\0A return !(end == p || *end);\0A}\0A\0Aint64_t finch_str_to_int(const FStr *s, const char *file, int64_t line) {\0A int64_t v;\0A if (!parse_int(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0Adouble finch_str_to_float(const FStr *s, const char *file, int64_t line) {\0A double v;\0A if (!parse_float(s, &v)) {\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A finch_panic(file, line, msg);\0A }\0A return v;\0A}\0A\0A// ---------- errors as values: int(s) or 0, try read_file(p) ... ----------\0A// Each gives back 1 on success; on failure 0, with the message in *err.\0A\0Astatic void set_error(FStr *err, const char *msg) { str_heap(err, msg, (int64_t)strlen(msg)); }\0A\0Aint finch_str_try_int(const FStr *s, int64_t *out, FStr *err) {\0A if (parse_int(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22int\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Aint finch_str_try_float(const FStr *s, double *out, FStr *err) {\0A if (parse_float(s, out)) return 1;\0A char msg[200];\0A number_error(msg, sizeof msg, s, \22float\22);\0A set_error(err, msg);\0A *out = 0;\0A return 0;\0A}\0A\0Astatic void file_error(FStr *err, const char *what, const FStr *path) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't %s the file \5C\22%.*s\5C\22: %s\22, what, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr ? path->ptr : \22\22, strerror(errno));\0A set_error(err, msg);\0A}\0A\0A// when `fn main() -> !` fails\0Avoid finch_report_error(const FStr *msg) {\0A fflush(stdout);\0A fprintf(stderr, \22error: %.*s\5Cn\22, (int)msg->len, msg->ptr ? msg->ptr : \22\22);\0A}\0A\0Avoid finch_str_sub(FStr *out, const FStr *s, int64_t start, int64_t end, const char *file, int64_t line) {\0A if (start < 0 || end > s->len || start > end) {\0A char msg[160];\0A snprintf(msg, sizeof msg, \22sub(%lld, %lld) is out of range (the length is %lld)\22, (long long)start,\0A (long long)end, (long long)s->len);\0A finch_panic(file, line, msg);\0A }\0A str_heap(out, s->ptr + start, end - start);\0A}\0A\0Aint64_t finch_str_find(const FStr *s, const FStr *t) {\0A if (t->len == 0) return 0;\0A for (int64_t i = 0; i + t->len <= s->len; i++)\0A if (s->ptr[i] == t->ptr[0] && memcmp(s->ptr + i, t->ptr, (size_t)t->len) == 0) return i;\0A return -1;\0A}\0A\0Aint finch_str_starts(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Aint finch_str_ends(const FStr *s, const FStr *t) {\0A return t->len <= s->len && memcmp(s->ptr + s->len - t->len, t->ptr, (size_t)t->len) == 0;\0A}\0A\0Avoid finch_str_trim(FStr *out, const FStr *s) {\0A int64_t a = 0, b = s->len;\0A while (a < b && isspace((unsigned char)s->ptr[a])) a++;\0A while (b > a && isspace((unsigned char)s->ptr[b - 1])) b--;\0A str_heap(out, s->ptr + a, b - a);\0A}\0A\0Avoid finch_str_upper(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)toupper((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_lower(FStr *out, const FStr *s) {\0A str_heap(out, s->ptr, s->len);\0A for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)tolower((unsigned char)out->ptr[i]);\0A}\0A\0Avoid finch_str_replace(FStr *out, const FStr *s, const FStr *from, const FStr *to) {\0A if (from->len == 0) {\0A str_heap(out, s->ptr, s->len);\0A return;\0A }\0A int64_t count = 0;\0A for (int64_t i = 0; i + from->len <= s->len;) {\0A if (memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A count++;\0A i += from->len;\0A } else {\0A i++;\0A }\0A }\0A int64_t len = s->len + count * (to->len - from->len);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < s->len;) {\0A if (i + from->len <= s->len && memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\0A memcpy(w, to->ptr, (size_t)to->len);\0A w += to->len;\0A i += from->len;\0A } else {\0A *w++ = s->ptr[i++];\0A }\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len);\0A\0A// \22a,b,,c\22.split(\22,\22) -> [\22a\22, \22b\22, \22\22, \22c\22]; split(\22\22) gives single characters.\0Avoid finch_str_split(FArr *out, const FStr *s, const FStr *sep) {\0A out->ptr = NULL;\0A out->len = out->cap = 0;\0A if (sep->len == 0) {\0A for (int64_t i = 0; i < s->len; i++) arr_push_str(out, s->ptr + i, 1);\0A return;\0A }\0A int64_t start = 0;\0A for (int64_t i = 0; i + sep->len <= s->len;) {\0A if (memcmp(s->ptr + i, sep->ptr, (size_t)sep->len) == 0) {\0A arr_push_str(out, s->ptr + start, i - start);\0A i += sep->len;\0A start = i;\0A } else {\0A i++;\0A }\0A }\0A arr_push_str(out, s->ptr + start, s->len - start);\0A}\0A\0Avoid finch_str_join(FStr *out, const FArr *parts, const FStr *sep) {\0A const FStr *p = parts->ptr;\0A int64_t len = 0;\0A for (int64_t i = 0; i < parts->len; i++) len += p[i].len + (i ? sep->len : 0);\0A char *m = finch_alloc(len + 1), *w = m;\0A for (int64_t i = 0; i < parts->len; i++) {\0A if (i) {\0A memcpy(w, sep->ptr, (size_t)sep->len);\0A w += sep->len;\0A }\0A memcpy(w, p[i].ptr, (size_t)p[i].len);\0A w += p[i].len;\0A }\0A *w = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_repeat(FStr *out, const FStr *s, int64_t n) {\0A if (n < 0) n = 0;\0A int64_t len = s->len * n;\0A char *m = finch_alloc(len + 1);\0A for (int64_t i = 0; i < n; i++) memcpy(m + i * s->len, s->ptr, (size_t)s->len);\0A m[len] = 0;\0A out->ptr = m;\0A out->len = len;\0A out->cap = len + 1;\0A}\0A\0Avoid finch_str_from_bytes(FStr *out, const FArr *bytes) { str_heap(out, bytes->ptr, bytes->len); }\0A\0A// ---------- building text: print(x) and str(x) of arrays, maps and structs ----------\0A// A buffer starts as an empty str and grows on the heap.\0A\0Avoid finch_buf_add(FStr *b, const char *p, int64_t n) {\0A if (b->len + n + 1 > b->cap) {\0A int64_t cap = b->cap > 0 ? b->cap * 2 : 32;\0A while (cap < b->len + n + 1) cap *= 2;\0A b->ptr = must(realloc(b->cap > 0 ? b->ptr : NULL, (size_t)cap));\0A b->cap = cap;\0A }\0A if (n) memcpy(b->ptr + b->len, p, (size_t)n);\0A b->len += n;\0A b->ptr[b->len] = 0;\0A}\0A\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\0Astatic void buf_fmt(FStr *b, const char *fmt, ...) {\0A char t[64];\0A va_list ap;\0A va_start(ap, fmt);\0A int n = vsnprintf(t, sizeof t, fmt, ap);\0A va_end(ap);\0A finch_buf_add(b, t, n);\0A}\0A\0Avoid finch_buf_int(FStr *b, int64_t v) { buf_fmt(b, \22%lld\22, (long long)v); }\0Avoid finch_buf_uint(FStr *b, uint64_t v) { buf_fmt(b, \22%llu\22, (unsigned long long)v); }\0Avoid finch_buf_float(FStr *b, double v) { buf_fmt(b, \22%g\22, v); }\0Avoid finch_buf_bool(FStr *b, int v) { finch_buf_add(b, v ? \22true\22 : \22false\22, v ? 4 : 5); }\0Avoid finch_buf_ptr(FStr *b, const void *p) {\0A if (p) buf_fmt(b, \220x%llx\22, (unsigned long long)(uintptr_t)p);\0A else finch_buf_add(b, \22null\22, 4);\0A}\0A\0Avoid finch_buf_char(FStr *b, char c, int quoted) {\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A finch_buf_add(b, &c, 1);\0A if (quoted) finch_buf_add(b, \22'\22, 1);\0A}\0A\0Avoid finch_buf_str(FStr *b, const FStr *s, int quoted) {\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A finch_buf_add(b, s->ptr, s->len);\0A if (quoted) finch_buf_add(b, \22\5C\22\22, 1);\0A}\0A\0A// print the buffer and free it\0Avoid finch_buf_print(FStr *b) {\0A if (b->len) fwrite(b->ptr, 1, (size_t)b->len, stdout);\0A if (b->cap > 0) free(b->ptr);\0A}\0A\0A// ---------- arrays ----------\0A\0Avoid finch_arr_reserve(FArr *a, int64_t need, int64_t es) {\0A if (need <= a->cap) return;\0A int64_t cap = a->cap * 2;\0A if (cap < 4) cap = 4;\0A if (cap < need) cap = need;\0A a->ptr = must(realloc(a->cap > 0 ? a->ptr : NULL, (size_t)(cap * es)));\0A a->cap = cap;\0A}\0A\0Avoid finch_arr_make(FArr *out, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A out->ptr = len ? finch_zalloc(len * es) : NULL;\0A out->len = len;\0A out->cap = len;\0A}\0A\0A// grow or shrink to `len`; new elements are zero\0Avoid finch_arr_resize(FArr *a, int64_t len, int64_t es) {\0A if (len < 0) len = 0;\0A finch_arr_reserve(a, len, es);\0A if (len > a->len) memset((char *)a->ptr + a->len * es, 0, (size_t)((len - a->len) * es));\0A a->len = len;\0A}\0A\0A// a byte-for-byte copy of the elements (the compiler deep-copies owning elements afterwards)\0Avoid finch_arr_clone_raw(FArr *out, const FArr *a, int64_t es) {\0A out->len = a->len;\0A out->cap = a->len;\0A out->ptr = a->len ? finch_alloc(a->len * es) : NULL;\0A if (a->len) memcpy(out->ptr, a->ptr, (size_t)(a->len * es));\0A}\0A\0Avoid finch_arr_free(FArr *a) {\0A if (a->cap > 0) free(a->ptr);\0A}\0A\0A// open a hole at i (0 <= i <= len), len grows by one\0Avoid finch_arr_insert_gap(FArr *a, int64_t i, int64_t es, const char *file, int64_t line) {\0A if (i < 0 || i > a->len) finch_panic_index(file, line, i, a->len);\0A finch_arr_reserve(a, a->len + 1, es);\0A char *p = a->ptr;\0A memmove(p + (i + 1) * es, p + i * es, (size_t)((a->len - i) * es));\0A a->len++;\0A}\0A\0A// close the hole at i (the element was already moved out), len shrinks by one\0Avoid finch_arr_remove_gap(FArr *a, int64_t i, int64_t es) {\0A char *p = a->ptr;\0A memmove(p + i * es, p + (i + 1) * es, (size_t)((a->len - i - 1) * es));\0A a->len--;\0A}\0A\0Astatic void arr_push_str(FArr *a, const char *p, int64_t len) {\0A finch_arr_reserve(a, a->len + 1, (int64_t)sizeof(FStr));\0A str_heap((FStr *)a->ptr + a->len, p, len);\0A a->len++;\0A}\0A\0Avoid finch_bytes_from_str(FArr *out, const FStr *s) {\0A out->len = out->cap = s->len;\0A out->ptr = s->len ? finch_alloc(s->len) : NULL;\0A if (s->len) memcpy(out->ptr, s->ptr, (size_t)s->len);\0A}\0A\0A// ---------- program arguments, input and files ----------\0A\0Avoid finch_args(FArr *out, int argc, char **argv) {\0A out->len = out->cap = argc;\0A out->ptr = finch_alloc((int64_t)sizeof(FStr) * (argc ? argc : 1));\0A for (int i = 0; i < argc; i++) str_heap((FStr *)out->ptr + i, argv[i], (int64_t)strlen(argv[i]));\0A}\0A\0A// input(\22Name? \22) prints the prompt and reads one line, without the newline.\0Avoid finch_input(FStr *out, const FStr *prompt) {\0A if (prompt->len) fwrite(prompt->ptr, 1, (size_t)prompt->len, stdout);\0A fflush(stdout);\0A // read one line of any length (getline isn't available everywhere)\0A size_t size = 128, n = 0;\0A char *line = finch_alloc((int64_t)size);\0A int c, got = 0;\0A while ((c = fgetc(stdin)) != EOF) {\0A got = 1;\0A if (c == '\5Cn') break;\0A if (n + 1 >= size) line = must(realloc(line, size *= 2));\0A line[n++] = (char)c;\0A }\0A if (!got) {\0A free(line);\0A str_static(out, empty);\0A return;\0A }\0A while (n > 0 && line[n - 1] == '\5Cr') n--;\0A line[n] = 0;\0A out->ptr = line;\0A out->len = (int64_t)n;\0A out->cap = (int64_t)size;\0A}\0A\0Aint finch_file_exists(const FStr *path) {\0A FILE *f = fopen(path->ptr, \22rb\22);\0A if (f) fclose(f);\0A return f != NULL;\0A}\0A\0Aint finch_try_read_file(FStr *out, const FStr *path, FStr *err) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A file_error(err, \22read\22, path);\0A return 0;\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A return 1;\0A}\0A\0Avoid finch_read_file(FStr *out, const FStr *path, const char *file, int64_t line) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22rb\22);\0A if (!f) {\0A char msg[300];\0A snprintf(msg, sizeof msg, \22can't read the file \5C\22%.*s\5C\22: %s\22, (int)(path->len > 200 ? 200 : path->len),\0A path->ptr, strerror(errno));\0A finch_panic(file, line, msg);\0A }\0A fseek(f, 0, SEEK_END);\0A long size = ftell(f);\0A fseek(f, 0, SEEK_SET);\0A char *m = finch_alloc(size + 1);\0A size_t got = fread(m, 1, (size_t)size, f);\0A fclose(f);\0A m[got] = 0;\0A out->ptr = m;\0A out->len = (int64_t)got;\0A out->cap = size + 1;\0A}\0A\0A// shell(\22ls -l\22): run a command, give back its exit code\0Aint64_t finch_shell(const FStr *cmd) {\0A fflush(stdout);\0A int status = system(cmd->ptr ? cmd->ptr : \22\22);\0A#ifdef _WIN32\0A return status; // Windows gives the exit code directly\0A#else\0A if (status == -1) return -1;\0A if (WIFEXITED(status)) return WEXITSTATUS(status);\0A return 128 + (WIFSIGNALED(status) ? WTERMSIG(status) : 0);\0A#endif\0A}\0A\0Aint finch_delete_file(const FStr *path) { return remove(path->ptr ? path->ptr : \22\22) == 0; }\0A\0Aint finch_try_delete_file(const FStr *path, FStr *err) {\0A if (remove(path->ptr ? path->ptr : \22\22) == 0) return 1;\0A file_error(err, \22delete\22, path);\0A return 0;\0A}\0A\0A// stdin/stdout/stderr are macros on some systems (Windows), so Finch asks for them here\0Avoid *finch_std_stream(int i) { return i == 0 ? (void *)stdin : i == 1 ? (void *)stdout : (void *)stderr; }\0A\0Aint finch_write_file(const FStr *path, const FStr *text) {\0A FILE *f = fopen(path->ptr ? path->ptr : \22\22, \22wb\22);\0A if (!f) return 0;\0A size_t put = text->len ? fwrite(text->ptr, 1, (size_t)text->len, f) : 0;\0A return fclose(f) == 0 && put == (size_t)text->len;\0A}\0A\0Aint finch_try_write_file(const FStr *path, const FStr *text, FStr *err) {\0A errno = 0;\0A if (finch_write_file(path, text)) return 1;\0A if (!errno) errno = EIO;\0A file_error(err, \22write\22, path);\0A return 0;\0A}\0A\0A// ---------- maps ----------\0A// map[K]V = { entries; len; used; cap; index; icap; adds }\0A// entries: `used` slots of es bytes, each { uint64 hash; K key; V value }, in insertion order.\0A// A removed entry keeps its slot (hash 0) until the next resize packs the slots.\0A// index: icap slots (a power of two, at least 2 * cap): -1 empty, -2 removed, else an entry number.\0A// adds: how many keys were ever added; a `for` over the map stops with an error if it changes.\0A// The compiler stores, copies and drops keys and values; the runtime only finds and places entries.\0A// Keys are compared byte for byte (numbers, chars, bools) or as text (kstr).\0A\0Atypedef struct {\0A char *entries;\0A int64_t len, used, cap;\0A int64_t *index;\0A int64_t icap;\0A int64_t adds;\0A} FMap;\0A\0Astatic uint64_t map_hash(const void *key, int64_t ks, int kstr) {\0A const unsigned char *p;\0A size_t n;\0A if (kstr) {\0A const FStr *s = key;\0A p = (const unsigned char *)s->ptr;\0A n = (size_t)s->len;\0A } else {\0A p = key;\0A n = (size_t)ks;\0A }\0A uint64_t h = 1469598103934665603ULL; // FNV-1a, then mixed so the low bits spread well\0A for (size_t i = 0; i < n; i++) {\0A h ^= p[i];\0A h *= 1099511628211ULL;\0A }\0A h ^= h >> 31;\0A h *= 0xbf58476d1ce4e5b9ULL;\0A h ^= h >> 29;\0A return h | 1; // 0 marks a removed entry\0A}\0A\0Astatic int map_key_eq(const char *a, const void *b, int64_t ks, int kstr) {\0A if (!kstr) return memcmp(a, b, (size_t)ks) == 0;\0A const FStr *x = (const FStr *)a, *y = b;\0A return x->len == y->len && (x->len == 0 || memcmp(x->ptr, y->ptr, (size_t)x->len) == 0);\0A}\0A\0Astatic void map_reindex(FMap *m, int64_t es) {\0A if (m->len != m->used) { // pack the slots of removed entries away\0A int64_t j = 0;\0A for (int64_t i = 0; i < m->used; i++) {\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == 0) continue;\0A if (i != j) memmove(m->entries + j * es, e, (size_t)es);\0A j++;\0A }\0A m->used = j;\0A }\0A int64_t icap = 16;\0A while (icap < m->cap * 2) icap *= 2;\0A free(m->index);\0A m->index = finch_alloc(icap * (int64_t)sizeof(int64_t));\0A memset(m->index, 0xff, (size_t)icap * sizeof(int64_t));\0A m->icap = icap;\0A for (int64_t i = 0; i < m->used; i++) {\0A uint64_t h = *(uint64_t *)(m->entries + i * es);\0A int64_t s = (int64_t)(h & (uint64_t)(icap - 1));\0A while (m->index[s] != -1) s = (s + 1) & (icap - 1);\0A m->index[s] = i;\0A }\0A}\0A\0A// the entry number of `key`, or -1\0Aint64_t finch_map_find(const FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr) {\0A if (m->len == 0) return -1;\0A uint64_t h = map_hash(key, ks, kstr);\0A for (int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));; s = (s + 1) & (m->icap - 1)) {\0A int64_t i = m->index[s];\0A if (i == -1) return -1;\0A if (i < 0) continue;\0A char *e = m->entries + i * es;\0A if (*(uint64_t *)e == h && map_key_eq(e + 8, key, ks, kstr)) return i;\0A }\0A}\0A\0A// The entry for `key`. A new one is zeroed except its hash (*added = 1); the compiler then stores the key.\0Aint64_t finch_map_slot(FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr, int32_t *added) {\0A int64_t i = finch_map_find(m, key, es, ks, kstr);\0A *added = i < 0;\0A if (i >= 0) return i;\0A if (m->used == m->cap) {\0A if (m->len * 4 < m->cap * 3) { // many removed slots: pack them instead of growing\0A map_reindex(m, es);\0A } else {\0A m->cap = m->cap ? m->cap * 2 : 8;\0A m->entries = must(realloc(m->entries, (size_t)(m->cap * es)));\0A map_reindex(m, es);\0A }\0A }\0A uint64_t h = map_hash(key, ks, kstr);\0A i = m->used++;\0A char *e = m->entries + i * es;\0A memset(e, 0, (size_t)es);\0A *(uint64_t *)e = h;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] >= 0) s = (s + 1) & (m->icap - 1);\0A m->index[s] = i;\0A m->len++;\0A m->adds++;\0A return i;\0A}\0A\0A// Forget entry i (its key and value were already dropped by the compiler).\0Avoid finch_map_remove_at(FMap *m, int64_t i, int64_t es) {\0A char *e = m->entries + i * es;\0A uint64_t h = *(uint64_t *)e;\0A int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\0A while (m->index[s] != i) s = (s + 1) & (m->icap - 1);\0A m->index[s] = -2;\0A *(uint64_t *)e = 0;\0A if (--m->len == 0) {\0A m->used = 0;\0A memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A }\0A}\0A\0Avoid finch_map_clear(FMap *m) {\0A m->len = m->used = 0;\0A if (m->index) memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0Avoid finch_map_free(FMap *m) {\0A free(m->entries);\0A free(m->index);\0A}\0A\0A// A copy of the slots and the index; the compiler then copies the keys and values that own memory.\0Avoid finch_map_clone_raw(FMap *out, const FMap *m, int64_t es) {\0A *out = *m;\0A if (!m->cap) return;\0A out->entries = finch_alloc(m->cap * es);\0A memcpy(out->entries, m->entries, (size_t)(m->used * es));\0A out->index = finch_alloc(m->icap * (int64_t)sizeof(int64_t));\0A memcpy(out->index, m->index, (size_t)m->icap * sizeof(int64_t));\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_changed(const char *file, int64_t line) {\0A finch_panic(file, line, \22a key was added to the map while looping over it (collect the new keys, and add them after the loop)\22);\0A}\0A\0A__attribute__((noreturn, cold)) void finch_map_missing(const char *file, int64_t line, const FStr *key) {\0A char msg[200];\0A snprintf(msg, sizeof msg, \22the key %.*s is not in the map (check with .has(key), or use .get(key, default))\22,\0A (int)(key->len > 100 ? 100 : key->len), key->ptr ? key->ptr : \22\22);\0A finch_panic(file, line, msg);\0A}\0A\00" -@.str.7570 = private unnamed_addr constant [12885 x i8] c"// JSON: read it, build it, write it.\0A//\0A// import json\0A//\0A// doc := try json.parse(\22{\5C\22name\5C\22: \5C\22Finch\5C\22, \5C\22tags\5C\22: [\5C\22fast\5C\22, \5C\22small\5C\22], \5C\22stars\5C\22: 5}\22)\0A// print(doc.get(\22name\22).str_or(\22\22)) Finch\0A// print(doc.get(\22tags\22).at(1).str_or(\22\22)) small\0A// print(doc.get(\22stars\22).int_or(0)) 5\0A// print(doc.get(\22missing\22).is_null()) true (a missing key is null, so chains never fail)\0A//\0A// out := json.new_object()\0A// out.set(\22ok\22, json.new_bool(true))\0A// list := json.new_list()\0A// list.push(json.new_number(1.5))\0A// out.set(\22values\22, list)\0A// print(json.stringify(out)) {\22ok\22:true,\22values\22:[1.5]}\0A// print(json.pretty(out)) the same, over several lines\0A\0Aenum Kind { Null, Bool, Number, Text, List, Object }\0A\0A// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number,\0A// text for Text, items for List, and items with keys (the same length, in the same order) for Object.\0Astruct Json {\0A Kind kind\0A bool flag\0A float num\0A str text\0A []Json items\0A []str keys\0A}\0A\0Afn new_null() -> Json {\0A return Json(kind: Kind.Null)\0A}\0A\0Afn new_bool(bool b) -> Json {\0A return Json(kind: Kind.Bool, flag: b)\0A}\0A\0Afn new_number(float n) -> Json {\0A return Json(kind: Kind.Number, num: n)\0A}\0A\0Afn new_text(str s) -> Json {\0A return Json(kind: Kind.Text, text: s)\0A}\0A\0Afn new_list() -> Json {\0A return Json(kind: Kind.List)\0A}\0A\0Afn new_object() -> Json {\0A return Json(kind: Kind.Object)\0A}\0A\0A// ---------- looking inside ----------\0A\0Afn Json.is_null() -> bool {\0A return self.kind == Kind.Null\0A}\0A\0A// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest\0Afn Json.len() -> int {\0A return match self.kind {\0A List, Object -> self.items.len\0A Text -> self.text.len\0A else -> 0\0A }\0A}\0A\0Afn Json.has(str key) -> bool {\0A return self.kind == Kind.Object && self.keys.contains(key)\0A}\0A\0A// the value of a key of an object; null if there is none (or this is not an object)\0Afn Json.get(str key) -> Json {\0A if self.kind != Kind.Object {\0A return new_null()\0A }\0A i := self.keys.find(key)\0A if i < 0 {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the element of a list; null if there is none\0Afn Json.at(int i) -> Json {\0A if self.kind != Kind.List || i < 0 || i >= self.items.len {\0A return new_null()\0A }\0A return self.items[i]\0A}\0A\0A// the value if it is of that kind, else what was given\0Afn Json.str_or(str fallback) -> str {\0A if self.kind == Kind.Text {\0A return self.text\0A }\0A return fallback\0A}\0A\0Afn Json.float_or(float fallback) -> float {\0A if self.kind == Kind.Number {\0A return self.num\0A }\0A return fallback\0A}\0A\0Afn Json.int_or(int fallback) -> int {\0A if self.kind == Kind.Number {\0A return int(self.num)\0A }\0A return fallback\0A}\0A\0Afn Json.bool_or(bool fallback) -> bool {\0A if self.kind == Kind.Bool {\0A return self.flag\0A }\0A return fallback\0A}\0A\0A// the keys of an object, in the order they were written\0Afn Json.names() -> []str {\0A return self.keys\0A}\0A\0A// ---------- building ----------\0A\0A// add to the end of a list\0Afn Json.push(Json v) {\0A self.items.push(v)\0A}\0A\0A// give a key a value in an object; a key that is already there is replaced\0Afn Json.set(str key, Json v) {\0A i := self.keys.find(key)\0A if i >= 0 {\0A self.items[i] = v\0A return\0A }\0A self.keys.push(key)\0A self.items.push(v)\0A}\0A\0A// ---------- writing ----------\0A\0Afn quote(str s) -> str {\0A []str parts = [\22\5C\22\22]\0A for c in s {\0A n := int(c)\0A if c == '\22' {\0A parts.push(\22\5C\5C\5C\22\22)\0A } else if c == '\5C\5C' {\0A parts.push(\22\5C\5C\5C\5C\22)\0A } else if c == '\5Cn' {\0A parts.push(\22\5C\5Cn\22)\0A } else if c == '\5Cr' {\0A parts.push(\22\5C\5Cr\22)\0A } else if c == '\5Ct' {\0A parts.push(\22\5C\5Ct\22)\0A } else if n < 32 {\0A parts.push(\22\5C\5Cu00\22 + hexdigit(n / 16) + hexdigit(n % 16))\0A } else {\0A parts.push(str(c))\0A }\0A }\0A parts.push(\22\5C\22\22)\0A return parts.join(\22\22)\0A}\0A\0Afn hexdigit(int n) -> str {\0A digits := \220123456789abcdef\22\0A return str(digits[n])\0A}\0A\0Afn number_text(float n) -> str {\0A if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 {\0A return str(int(n))\0A }\0A return str(n)\0A}\0A\0Astruct Writer {\0A []str out\0A}\0A\0Afn write(Json j, str indent, str pad, ptr[Writer] w) {\0A nl := \22\22\0A inner := \22\22\0A sep := \22,\22\0A colon := \22:\22\0A if indent.len > 0 {\0A nl = \22\5Cn\22\0A inner = pad + indent\0A colon = \22: \22\0A }\0A match j.kind {\0A Null -> w.out.push(\22null\22)\0A Bool -> {\0A if j.flag {\0A w.out.push(\22true\22)\0A } else {\0A w.out.push(\22false\22)\0A }\0A }\0A Number -> w.out.push(number_text(j.num))\0A Text -> w.out.push(quote(j.text))\0A List -> {\0A if j.items.len == 0 {\0A w.out.push(\22[]\22)\0A return\0A }\0A w.out.push(\22[\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22]\22)\0A }\0A Object -> {\0A if j.items.len == 0 {\0A w.out.push(\22{}\22)\0A return\0A }\0A w.out.push(\22{\22 + nl)\0A for i, item in j.items {\0A if i > 0 {\0A w.out.push(sep + nl)\0A }\0A w.out.push(inner + quote(j.keys[i]) + colon)\0A write(item, indent, inner, w)\0A }\0A w.out.push(nl + pad + \22}\22)\0A }\0A }\0A}\0A\0A// the value as text on one line\0Afn stringify(Json j) -> str {\0A w := Writer()\0A write(j, \22\22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// the value as text over several lines, indented by two spaces\0Afn pretty(Json j) -> str {\0A w := Writer()\0A write(j, \22 \22, \22\22, addr(w))\0A return w.out.join(\22\22)\0A}\0A\0A// ---------- reading ----------\0A\0Astruct Reader {\0A str src\0A int i\0A}\0A\0A// the line and column of a position, for a message\0Afn where(ptr[Reader] r) -> str {\0A line := 1\0A col := 1\0A for k in 0..r.i {\0A if k < r.src.len && r.src[k] == '\5Cn' {\0A line += 1\0A col = 1\0A } else {\0A col += 1\0A }\0A }\0A return \22line \22 + str(line) + \22, column \22 + str(col)\0A}\0A\0Afn peek(ptr[Reader] r) -> char {\0A if r.i < r.src.len {\0A return r.src[r.i]\0A }\0A return char(0)\0A}\0A\0Afn skip_space(ptr[Reader] r) {\0A while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\5Cn' || r.src[r.i] == '\5Ct' || r.src[r.i] == '\5Cr') {\0A r.i += 1\0A }\0A}\0A\0Afn unexpected(ptr[Reader] r, str wanted) -> str {\0A if r.i >= r.src.len {\0A return \22json: the text ends where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A }\0A return \22json: found '\22 + str(r.src[r.i]) + \22' where \22 + wanted + \22 should be (\22 + where(r) + \22)\22\0A}\0A\0A// does `word` come next?\0Afn comes(ptr[Reader] r, str word) -> bool {\0A return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word\0A}\0A\0Afn expect_word(ptr[Reader] r, str word) -> ! {\0A if !comes(r, word) {\0A return error(unexpected(r, \22'\22 + word + \22'\22))\0A }\0A r.i += word.len\0A}\0A\0Afn hex_value(char c) -> int {\0A if c >= '0' && c <= '9' {\0A return int(c) - int('0')\0A }\0A if c >= 'a' && c <= 'f' {\0A return int(c) - int('a') + 10\0A }\0A if c >= 'A' && c <= 'F' {\0A return int(c) - int('A') + 10\0A }\0A return -1\0A}\0A\0A// a code point as UTF-8\0Afn utf8(int cp) -> str {\0A []u8 b\0A if cp < 128 {\0A b.push(u8(cp))\0A } else if cp < 2048 {\0A b.push(u8(192 + cp / 64))\0A b.push(u8(128 + cp % 64))\0A } else if cp < 65536 {\0A b.push(u8(224 + cp / 4096))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A } else {\0A b.push(u8(240 + cp / 262144))\0A b.push(u8(128 + (cp / 4096) % 64))\0A b.push(u8(128 + (cp / 64) % 64))\0A b.push(u8(128 + cp % 64))\0A }\0A return str(b)\0A}\0A\0Afn read_hex4(ptr[Reader] r) -> int! {\0A n := 0\0A for k in 0..4 {\0A if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 {\0A return error(unexpected(r, \22a hexadecimal digit\22))\0A }\0A n = n * 16 + hex_value(r.src[r.i])\0A r.i += 1\0A }\0A return n\0A}\0A\0Afn read_string(ptr[Reader] r) -> str! {\0A r.i += 1 // the opening quote\0A []str parts\0A start := r.i\0A while true {\0A if r.i >= r.src.len {\0A return error(\22json: a text is never closed (\22 + where(r) + \22)\22)\0A }\0A c := r.src[r.i]\0A if c == '\22' {\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A return parts.join(\22\22)\0A }\0A if int(c) < 32 {\0A return error(\22json: a line break or control character inside a text (\22 + where(r) + \22)\22)\0A }\0A if c != '\5C\5C' {\0A r.i += 1\0A continue\0A }\0A parts.push(r.src.sub(start, r.i))\0A r.i += 1\0A e := peek(r)\0A r.i += 1\0A if e == 'n' {\0A parts.push(\22\5Cn\22)\0A } else if e == 't' {\0A parts.push(\22\5Ct\22)\0A } else if e == 'r' {\0A parts.push(\22\5Cr\22)\0A } else if e == 'b' {\0A parts.push(utf8(8))\0A } else if e == 'f' {\0A parts.push(utf8(12))\0A } else if e == '\22' || e == '\5C\5C' || e == '/' {\0A parts.push(str(e))\0A } else if e == 'u' {\0A cp := try read_hex4(r)\0A // a pair of \F0\9F\98\80 stands for one character above U+FFFF\0A if cp >= 55296 && cp < 56320 && comes(r, \22\5C\5Cu\22) {\0A r.i += 2\0A low := try read_hex4(r)\0A cp = 65536 + (cp - 55296) * 1024 + (low - 56320)\0A }\0A parts.push(utf8(cp))\0A } else {\0A return error(\22json: unknown escape \5C\5C\22 + str(e) + \22 in a text (\22 + where(r) + \22)\22)\0A }\0A start = r.i\0A }\0A}\0A\0Afn read_number(ptr[Reader] r) -> Json! {\0A start := r.i\0A if peek(r) == '-' {\0A r.i += 1\0A }\0A while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') {\0A r.i += 1\0A }\0A n := float(r.src.sub(start, r.i)) or {\0A r.i = start\0A return error(unexpected(r, \22a number\22))\0A }\0A return new_number(n)\0A}\0A\0Afn read_value(ptr[Reader] r) -> Json! {\0A skip_space(r)\0A c := peek(r)\0A if r.i >= r.src.len {\0A return error(unexpected(r, \22a value\22))\0A }\0A if c == '{' {\0A obj := new_object()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A while true {\0A skip_space(r)\0A if peek(r) != '\22' {\0A return error(unexpected(r, \22a key in quotes\22))\0A }\0A key := try read_string(r)\0A skip_space(r)\0A if peek(r) != ':' {\0A return error(unexpected(r, \22':'\22))\0A }\0A r.i += 1\0A v := try read_value(r)\0A obj.set(key, v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == '}' {\0A r.i += 1\0A return obj\0A }\0A return error(unexpected(r, \22',' or '}'\22))\0A }\0A }\0A if c == '[' {\0A list := new_list()\0A r.i += 1\0A skip_space(r)\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A while true {\0A v := try read_value(r)\0A list.push(v)\0A skip_space(r)\0A if peek(r) == ',' {\0A r.i += 1\0A continue\0A }\0A if peek(r) == ']' {\0A r.i += 1\0A return list\0A }\0A return error(unexpected(r, \22',' or ']'\22))\0A }\0A }\0A if c == '\22' {\0A s := try read_string(r)\0A return new_text(s)\0A }\0A if c == 't' {\0A try expect_word(r, \22true\22)\0A return new_bool(true)\0A }\0A if c == 'f' {\0A try expect_word(r, \22false\22)\0A return new_bool(false)\0A }\0A if c == 'n' {\0A try expect_word(r, \22null\22)\0A return new_null()\0A }\0A if c == '-' || (c >= '0' && c <= '9') {\0A return try read_number(r)\0A }\0A return error(unexpected(r, \22a value\22))\0A}\0A\0A// the JSON in `text`; an error with the line and column where it went wrong\0Afn parse(str text) -> Json! {\0A r := Reader(src: text)\0A v := try read_value(addr(r))\0A skip_space(addr(r))\0A if r.i < r.src.len {\0A return error(unexpected(addr(r), \22the end of the text\22))\0A }\0A return v\0A}\0A\00" -@.str.7571 = private unnamed_addr constant [2847 x i8] c"// Paths, as text. Elements are separated by \22/\22.\0A//\0A// import path\0A// path.join(\22a\22, \22b.txt\22) a/b.txt\0A// path.base(\22/tmp/x/a.tar.gz\22) a.tar.gz path.stem(...) a.tar path.ext(...) .gz\0A// path.dir(\22/tmp/x/a.txt\22) /tmp/x\0A// path.clean(\22a//b/../c/./d\22) a/c/d\0A\0A// a and b with one separator between; an absolute b replaces a\0Afn join(str a, str b) -> str {\0A if a.len == 0 {\0A return b\0A }\0A if b.len == 0 {\0A return a\0A }\0A if b[0] == '/' {\0A return b\0A }\0A if a[a.len - 1] == '/' {\0A return a + b\0A }\0A return a + \22/\22 + b\0A}\0A\0Afn is_abs(str p) -> bool {\0A return p.len > 0 && p[0] == '/'\0A}\0A\0A// the last element: \22a/b.txt\22 -> \22b.txt\22, \22a/b/\22 -> \22b\22, \22\22 -> \22.\22, \22/\22 -> \22/\22\0Afn base(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A if end == 1 && p[0] == '/' {\0A return \22/\22\0A }\0A start := end\0A while start > 0 && p[start - 1] != '/' {\0A start -= 1\0A }\0A return p.sub(start, end)\0A}\0A\0A// everything before the last element: \22a/b.txt\22 -> \22a\22, \22b.txt\22 -> \22.\22, \22/b\22 -> \22/\22\0Afn dir(str p) -> str {\0A end := p.len\0A while end > 1 && p[end - 1] == '/' {\0A end -= 1\0A }\0A i := end\0A while i > 0 && p[i - 1] != '/' {\0A i -= 1\0A }\0A if i == 0 {\0A return \22.\22\0A }\0A while i > 1 && p[i - 1] == '/' {\0A i -= 1\0A }\0A return p.sub(0, i)\0A}\0A\0A// the part of the last element from its last dot: \22a.tar.gz\22 -> \22.gz\22; \22\22 when there is none\0Afn ext(str p) -> str {\0A b := base(p)\0A i := b.len\0A while i > 0 && b[i - 1] != '.' {\0A i -= 1\0A }\0A if i <= 1 { // no dot, or a name that only starts with one (.bashrc)\0A return \22\22\0A }\0A return b.sub(i - 1, b.len)\0A}\0A\0A// the last element without its extension\0Afn stem(str p) -> str {\0A b := base(p)\0A e := ext(p)\0A return b.sub(0, b.len - e.len)\0A}\0A\0A// the elements of a path: \22/a/b/c\22 -> [\22a\22, \22b\22, \22c\22]\0Afn parts(str p) -> []str {\0A []str out\0A for piece in p.split(\22/\22) {\0A if piece.len > 0 {\0A out.push(piece)\0A }\0A }\0A return out\0A}\0A\0A// the shortest path with the same meaning: no \22//\22, no \22.\22, and \22..\22 resolved where it can be\0Afn clean(str p) -> str {\0A if p.len == 0 {\0A return \22.\22\0A }\0A abs := is_abs(p)\0A []str out\0A for piece in parts(p) {\0A if piece == \22.\22 {\0A continue\0A }\0A if piece == \22..\22 {\0A if out.len > 0 && out[out.len - 1] != \22..\22 {\0A out.pop()\0A } else if !abs {\0A out.push(\22..\22)\0A }\0A continue\0A }\0A out.push(piece)\0A }\0A joined := out.join(\22/\22)\0A if abs {\0A return \22/\22 + joined\0A }\0A if joined.len == 0 {\0A return \22.\22\0A }\0A return joined\0A}\0A\00" -@.str.7572 = private unnamed_addr constant [1407 x i8] c"// Programs: run a command, read what it printed, look at the environment.\0A//\0A// import proc\0A// code := proc.run(\22make\22) the exit code; what the command prints goes to the screen\0A// text := try proc.output(\22git describe\22) what the command printed; an error if it failed\0A// proc.env(\22HOME\22, \22/\22) an environment variable, or the second value if it is not set\0Aimport \22stdlib.h\22\0Aimport \22unistd.h\22\0Aimport \22time.h\22\0A\0A// run a command; its output goes to the screen. Gives its exit code.\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0A// run a command and give what it printed. Fails, with its output as the message, if it exits with an error.\0Afn output(str command) -> str! {\0A tmp := \22/tmp/finch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(\22(\22 + command + \22) > '\22 + tmp + \22' 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0A// the folder the program is running in\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7573 = private unnamed_addr constant [996 x i8] c"// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS).\0Aimport \22stdlib.h\22\0Aimport \22process.h\22\0Aimport \22direct.h\22\0Aimport \22time.h\22\0A\0Afn run(str command) -> int {\0A return shell(command)\0A}\0A\0Afn output(str command) -> str! {\0A tmp := proc_env(\22TEMP\22, \22.\22) + \22\5C\5Cfinch_out_\22 + str(getpid()) + \22_\22 + str(int(time(null)))\0A code := shell(command + \22 > \5C\22\22 + tmp + \22\5C\22 2>&1\22)\0A text := read_file(tmp) or \22\22\0A delete_file(tmp)\0A if code != 0 {\0A return error(\22'\22 + command + \22' exited with code \22 + str(code) + \22: \22 + text.trim())\0A }\0A return text\0A}\0A\0Afn proc_env(str name, str fallback) -> str {\0A v := getenv(name)\0A if v.len == 0 {\0A return fallback\0A }\0A return v\0A}\0A\0Afn env(str name, str fallback) -> str {\0A return proc_env(name, fallback)\0A}\0A\0Afn pid() -> int {\0A return int(getpid())\0A}\0A\0Afn cwd() -> str {\0A []char buf\0A for i in 0..4096 {\0A buf.push(char(0))\0A }\0A getcwd(buf.ptr, 4096)\0A return str(buf.ptr)\0A}\0A\00" -@.str.7574 = private unnamed_addr constant [2540 x i8] c"// Time: the clock, sleeping, and dates.\0A//\0A// import time\0A// start := time.millis() milliseconds from a clock that only goes forward (to measure with)\0A// time.sleep(250) wait a quarter of a second\0A// time.now() seconds since 1970-01-01 00:00 UTC\0A// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second\0A// time.format(time.now(), \22%Y-%m-%d %H:%M\22) as text, in the computer's time zone\0Aimport \22time.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0A// seconds since 1970-01-01 00:00 UTC\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward: for measuring how long something took\0Afn millis() -> int {\0A timespec ts\0A clock_gettime(CLOCK_MONOTONIC, addr(ts))\0A return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000\0A}\0A\0Afn sleep(int ms) {\0A timespec ts\0A ts.tv_sec = ms / 1000\0A ts.tv_nsec = (ms % 1000) * 1000000\0A nanosleep(addr(ts), null)\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0A// the date and time of a moment, in UTC\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A gmtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// the date and time of a moment, in the computer's time zone\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A return parts(t)\0A}\0A\0A// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second\0A// (the rest of C's strftime works too: %A weekday name, %B month name, ...)\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A localtime_r(addr(stamp), addr(t))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0A// the number of days in a month (month is 1 to 12)\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7575 = private unnamed_addr constant [1793 x i8] c"// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS).\0Aimport \22time.h\22\0Aimport \22finch_win.h\22\0A\0Astruct Date {\0A int year\0A int month // 1 to 12\0A int day // 1 to 31\0A int hour\0A int minute\0A int second\0A int weekday // 0 is Sunday\0A int yearday // 1 to 366\0A}\0A\0Afn now() -> int {\0A return int(time(null))\0A}\0A\0A// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms)\0Afn millis() -> int {\0A i64 count = 0\0A i64 freq = 1\0A QueryPerformanceFrequency(addr(freq))\0A QueryPerformanceCounter(addr(count))\0A return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq)\0A}\0A\0Afn sleep(int ms) {\0A Sleep(u32(ms))\0A}\0A\0Afn parts(tm t) -> Date {\0A return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\0A minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\0A}\0A\0Afn date(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _gmtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn local(int unix) -> Date {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A return parts(t)\0A}\0A\0Afn format(int unix, str pattern) -> str {\0A tm t\0A i64 stamp = unix\0A _localtime64_s(addr(t), addr(stamp))\0A []char buf\0A for i in 0..256 {\0A buf.push(char(0))\0A }\0A strftime(buf.ptr, 256, pattern, addr(t))\0A return str(buf.ptr)\0A}\0A\0Afn days_in_month(int year, int month) -> int {\0A if month == 2 {\0A if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\0A return 29\0A }\0A return 28\0A }\0A if month == 4 || month == 6 || month == 9 || month == 11 {\0A return 30\0A }\0A return 31\0A}\0A\00" -@.str.7576 = private unnamed_addr constant [366 x i8] c"/* The Windows functions std/time_windows.fch needs. Declared here, not by including :\0A libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */\0Aunsigned long long GetTickCount64(void);\0Avoid Sleep(unsigned long milliseconds);\0Aint QueryPerformanceCounter(long long *count);\0Aint QueryPerformanceFrequency(long long *frequency);\0A\00" - -declare void @finch_panic(ptr, i64, ptr) noreturn cold -declare void @finch_panic_index(ptr, i64, i64, i64) noreturn cold -declare ptr @finch_alloc(i64) -declare void @finch_str_copy(ptr, ptr) -declare void @finch_str_drop(ptr) -declare void @finch_arr_free(ptr) -declare void @finch_map_free(ptr) -declare void @finch_str_own(ptr) -declare void @finch_str_concat(ptr, ptr, ptr) -declare i32 @finch_str_eq(ptr, ptr) -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 22, 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 28) - %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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca i64, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - 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 - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = add i64 %t7, 1 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t11 = load i64, ptr %t10 - call void @finch_str_sub(ptr %a4, ptr %a3, i64 %t9, i64 %t11, ptr @.str.4, i64 32) - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - %t14 = load { ptr, i64, i64 }, ptr %a1 - %t15 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t15, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.5, i64 1, i64 0 }, ptr %a17 - %t18 = call i32 @finch_str_eq(ptr %a16, ptr %a17) - %t19 = icmp ne i32 %t18, 0 - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %logic.from13 -logic.from13: - br i1 %t19, label %logic.rhs14, label %logic.end15 -logic.rhs14: - %t21 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.7, i64 2, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_starts(ptr %a22, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - %t27 = xor i1 %t26, true - br label %logic.rend16 -logic.rend16: - br label %logic.end15 -logic.end15: - %t28 = phi i1 [ false, %logic.from13 ], [ %t27, %logic.rend16 ] - br i1 %t28, label %then17, label %endif19 -then17: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - %t33 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t32, ptr %a13 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif19 -endif19: - %t35 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.9, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a40 - %t41 = load i64, ptr %a40 - %t42 = icmp sgt i64 %t41, 0 - br i1 %t42, label %then20, label %endif22 -then20: - %t43 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t43, ptr %a44 - %t46 = load i64, ptr %a40 - call void @finch_str_sub(ptr %a45, ptr %a44, i64 0, i64 %t46, ptr @.str.10, i64 38) - %t47 = load { ptr, i64, i64 }, ptr %a45 - call void @finch_str_drop(ptr %a13) - ret { ptr, i64, i64 } %t47 -endif22: - %t48 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t48 -} - -define internal { ptr, i64, i64 } @finch.main.textOfFile(ptr %p0, { ptr, i64, i64 } %p1) { -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 55, 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 57, 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 57, i64 %t28, i64 %t30) - unreachable -inrange36: - %t32 = extractvalue { ptr, i64, i64 } %t29, 0 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 %t28 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_read_file(ptr %a36, ptr %a35, ptr @.str.16, i64 57) - %t37 = load { ptr, i64, i64 }, ptr %a36 - ret { ptr, i64, i64 } %t37 -endif32: - %t38 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_read_file(ptr %a40, ptr %a39, ptr @.str.17, i64 59) - %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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %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 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = 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 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - %t11 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t10, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t10, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.19, i64 4, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a22 - %t23 = load { ptr, i64, i64 }, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.20, i64 1, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.21, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic37, label %ok38 -panic37: - call void @finch_panic(ptr @.str.22, i64 67, ptr @.str.23) - unreachable -ok38: - %t43 = getelementptr inbounds %S.main.Loader, ptr %t41, i32 0, i32 3 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t40, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t40, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.24, i64 4, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = call i32 @finch_file_exists(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = icmp ne i32 %t56, 0 - br i1 %t58, label %then39, label %endif41 -then39: - %t59 = load { ptr, i64, i64 }, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.25, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t65, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.26, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load ptr, ptr %a1 - %t78 = icmp eq ptr %t77, null - br i1 %t78, label %panic42, label %ok43 -panic42: - call void @finch_panic(ptr @.str.27, i64 68, ptr @.str.28) - unreachable -ok43: - %t79 = getelementptr inbounds %S.main.Loader, ptr %t77, i32 0, i32 3 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t76, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t76, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.29, i64 4, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t90 -endif41: - %t91 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - br i1 %t94, label %then44, label %endif46 -then44: - %t95 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t95 -endif46: - %t96 = load ptr, ptr %a1 - %t97 = icmp eq ptr %t96, null - br i1 %t97, label %panic47, label %ok48 -panic47: - call void @finch_panic(ptr @.str.30, i64 73, ptr @.str.31) - unreachable -ok48: - %t98 = getelementptr inbounds %S.main.Loader, ptr %t96, i32 0, i32 5 - store i64 0, ptr %a99 - br label %each.cond49 -each.cond49: - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = load i64, ptr %a99 - %t103 = icmp slt i64 %t102, %t101 - br i1 %t103, label %each.body50, label %each.end52 -each.body50: - %t104 = load ptr, ptr %t98 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i64 %t102 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.32, i64 1, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a109 - %t113 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t112, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t112, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.33, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic53, label %ok54 -panic53: - call void @finch_panic(ptr @.str.34, i64 74, ptr @.str.35) - unreachable -ok54: - %t126 = getelementptr inbounds %S.main.Loader, ptr %t124, i32 0, i32 3 - %t127 = load { ptr, i64, i64 }, ptr %t126 - store { ptr, i64, i64 } %t123, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t123, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.36, i64 4, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a138 - %t139 = call i32 @finch_file_exists(ptr %a138) - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = icmp ne i32 %t139, 0 - br i1 %t141, label %then55, label %endif57 -then55: - %t142 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.37, i64 1, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - %t147 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t146, ptr %a149 - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.38, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic58, label %ok59 -panic58: - call void @finch_panic(ptr @.str.39, i64 75, ptr @.str.40) - unreachable -ok59: - %t160 = getelementptr inbounds %S.main.Loader, ptr %t158, i32 0, i32 3 - %t161 = load { ptr, i64, i64 }, ptr %t160 - store { ptr, i64, i64 } %t157, ptr %a163 - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t157, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.41, i64 4, i64 0 }, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t171 -endif57: - %t172 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t172, ptr %a174 - store { ptr, i64, i64 } { ptr @.str.42, i64 1, i64 0 }, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - %t177 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t176, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.43, i64 4, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t187, ptr %a188 - %t189 = call i32 @finch_file_exists(ptr %a188) - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = icmp ne i32 %t189, 0 - br i1 %t191, label %then60, label %endif62 -then60: - %t192 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.44, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - %t196 = load { ptr, i64, i64 }, ptr %a193 - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t196, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t196, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.45, i64 4, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t207 -endif62: - br label %each.step51 -each.step51: - %t208 = load i64, ptr %a99 - %t209 = add i64 %t208, 1 - store i64 %t209, ptr %a99 - br label %each.cond49 -each.end52: - %t210 = load ptr, ptr %a1 - %t211 = icmp eq ptr %t210, null - br i1 %t211, label %panic63, label %ok64 -panic63: - call void @finch_panic(ptr @.str.46, i64 81, ptr @.str.47) - unreachable -ok64: - %t212 = getelementptr inbounds %S.main.Loader, ptr %t210, i32 0, i32 4 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t214 = load i64, ptr %t213 - %t215 = icmp sgt i64 %t214, 0 - br i1 %t215, label %then65, label %endif67 -then65: - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic68, label %ok69 -panic68: - call void @finch_panic(ptr @.str.48, i64 82, ptr @.str.49) - unreachable -ok69: - %t218 = getelementptr inbounds %S.main.Loader, ptr %t216, i32 0, i32 4 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.50, i64 1, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t223, ptr %a226 - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t223, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - store { ptr, i64, i64 } %t229, ptr %a231 - store { ptr, i64, i64 } { ptr @.str.51, i64 1, i64 0 }, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t229, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic70, label %ok71 -panic70: - call void @finch_panic(ptr @.str.52, i64 82, ptr @.str.53) - unreachable -ok71: - %t237 = getelementptr inbounds %S.main.Loader, ptr %t235, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - store { ptr, i64, i64 } %t234, ptr %a240 - store { ptr, i64, i64 } %t238, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t234, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - store { ptr, i64, i64 } %t243, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.54, i64 4, i64 0 }, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t243, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a249 - %t250 = call i32 @finch_file_exists(ptr %a249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - %t252 = icmp ne i32 %t250, 0 - br i1 %t252, label %then72, label %endif74 -then72: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic75, label %ok76 -panic75: - call void @finch_panic(ptr @.str.55, i64 83, ptr @.str.56) - unreachable -ok76: - %t255 = getelementptr inbounds %S.main.Loader, ptr %t253, i32 0, i32 4 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.57, i64 1, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - %t260 = load { ptr, i64, i64 }, ptr %a257 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t260, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.58, i64 1, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic77, label %ok78 -panic77: - call void @finch_panic(ptr @.str.59, i64 83, ptr @.str.60) - unreachable -ok78: - %t274 = getelementptr inbounds %S.main.Loader, ptr %t272, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } %t271, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t271, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.61, i64 4, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t285 -endif74: - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic79, label %ok80 -panic79: - call void @finch_panic(ptr @.str.62, i64 85, ptr @.str.63) - unreachable -ok80: - %t288 = getelementptr inbounds %S.main.Loader, ptr %t286, i32 0, i32 4 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.64, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a290 - %t294 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t293, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.65, i64 4, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t304, ptr %a305 - %t306 = call i32 @finch_file_exists(ptr %a305) - store { ptr, i64, i64 } %t304, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = icmp ne i32 %t306, 0 - br i1 %t308, label %then81, label %endif83 -then81: - %t309 = load ptr, ptr %a1 - %t310 = icmp eq ptr %t309, null - br i1 %t310, label %panic84, label %ok85 -panic84: - call void @finch_panic(ptr @.str.66, i64 86, ptr @.str.67) - unreachable -ok85: - %t311 = getelementptr inbounds %S.main.Loader, ptr %t309, i32 0, i32 4 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.68, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t316, ptr %a319 - store { ptr, i64, i64 } %t317, ptr %a320 - call void @finch_str_concat(ptr %a318, ptr %a319, ptr %a320) - store { ptr, i64, i64 } %t316, ptr %a321 - call void @finch_str_drop(ptr %a321) - %t322 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.69, i64 4, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - store { ptr, i64, i64 } %t322, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t327 -endif83: - br label %endif67 -endif67: - %t328 = load { ptr, i64, i64 }, ptr %a22 - ret { ptr, i64, i64 } %t328 -} - -define internal void @finch.drop.S_lexer_Token(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_lexer_Token(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond107 -n.cond107: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body108, label %n.end109 -n.body108: - %t7 = getelementptr inbounds %S.lexer.Token, ptr %t1, i64 %t5 - call void @finch.drop.S_lexer_Token(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond107 -n.end109: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.copy.arr_str(ptr %dst, ptr %src) { -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.cond110 -n.cond110: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body111, label %n.end112 -n.body111: - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 %t6 - call void @finch_str_copy(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond110 -n.end112: - 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.cond118 -n.cond118: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body119, label %n.end120 -n.body119: - %t8 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t6 - %t9 = getelementptr inbounds %S.ast.Type, ptr %t2, i64 %t6 - call void @finch.copy.S_ast_Type(ptr %t8, ptr %t9) - %t10 = load i64, ptr %a5 - %t11 = add i64 %t10, 1 - store i64 %t11, ptr %a5 - br label %n.cond118 -n.end120: - 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.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.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.cond115 -n.end117: - 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.drop.arr_str(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond137 -n.cond137: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body138, label %n.end139 -n.body138: - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1, i64 %t5 - call void @finch_str_drop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond137 -n.end139: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Type(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond143 -n.cond143: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body144, label %n.end145 -n.body144: - %t7 = getelementptr inbounds %S.ast.Type, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Type(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond143 -n.end145: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Type(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Type, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.S_ast_Node(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 5 - call void @finch.drop.S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 9 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.arr_S_ast_Node(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond140 -n.cond140: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body141, label %n.end142 -n.body141: - %t7 = getelementptr inbounds %S.ast.Node, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Node(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond140 -n.end142: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_ast_Program(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_S_ast_Node(ptr %t7) - %t8 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Node(ptr %t8) - %t9 = getelementptr inbounds %S.ast.Program, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_S_ast_Node(ptr %t9) - ret void -} - -define internal void @finch.main.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Program, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.ast.Program, align 16 - %a139 = alloca %S.ast.Program, align 16 - %a145 = alloca i64, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca i64, align 16 - %a162 = alloca i64, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 93, 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) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t43, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.74, i64 1, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = extractvalue { ptr, i64, i64 } %t54, 1 - %t56 = trunc i64 %t55 to i32 - %t57 = extractvalue { ptr, i64, i64 } %t54, 0 - %t58 = icmp eq ptr %t57, null - %t59 = select i1 %t58, ptr @.str.75, ptr %t57 - %t60 = call i32 (ptr, ...) @printf(ptr @.str.76, i32 %t56, ptr %t59) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = call i32 (ptr, ...) @printf(ptr @.str.77) - br label %endif102 -else101: - %t63 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.78, i64 19, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.79, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = extractvalue { ptr, i64, i64 } %t72, 1 - %t74 = trunc i64 %t73 to i32 - %t75 = extractvalue { ptr, i64, i64 } %t72, 0 - %t76 = icmp eq ptr %t75, null - %t77 = select i1 %t76, ptr @.str.80, ptr %t75 - %t78 = call i32 (ptr, ...) @printf(ptr @.str.81, i32 %t74, ptr %t77) - store { ptr, i64, i64 } %t72, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = call i32 (ptr, ...) @printf(ptr @.str.82) - br label %endif102 -endif102: - %t81 = trunc i64 1 to i32 - %t82 = call i32 @fflush(ptr null) - call void @exit(i32 %t81) - br label %endif99 -endif99: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a2 - %t85 = call { ptr, i64, i64 } @finch.main.textOfFile(ptr %t83, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic103, label %ok104 -panic103: - call void @finch_panic(ptr @.str.83, i64 102, ptr @.str.84) - unreachable -ok104: - %t89 = getelementptr inbounds %S.main.Loader, ptr %t87, i32 0, i32 1 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 %t91, ptr %a92 - %t93 = load ptr, ptr %a1 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic105, label %ok106 -panic105: - call void @finch_panic(ptr @.str.85, i64 103, ptr @.str.86) - unreachable -ok106: - %t95 = getelementptr inbounds %S.main.Loader, ptr %t93, i32 0, i32 1 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load i64, ptr %t96 - %t102 = add i64 %t101, 1 - call void @finch_arr_reserve(ptr %t95, i64 %t102, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t103 = load ptr, ptr %t95 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i64 %t101 - store { ptr, i64, i64 } %t100, ptr %t104 - store i64 %t102, ptr %t96 - %t105 = load { ptr, i64, i64 }, ptr %a86 - %t106 = load { ptr, i64, i64 }, ptr %a2 - %t107 = call { ptr, i64, i64 } @finch.lexer.lex({ ptr, i64, i64 } %t105, { ptr, i64, i64 } %t106) - %t108 = load i64, ptr %a92 - %t109 = load { ptr, i64, i64 }, ptr %a2 - %t110 = call %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %t107, i64 %t108, { ptr, i64, i64 } %t109) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch.drop.arr_S_lexer_Token(ptr %a111) - store %S.ast.Program %t110, ptr %a112 - %t113 = load { ptr, i64, i64 }, ptr %a3 - %t114 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 0 - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t117, ptr %t114 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a2 - %t121 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 1 - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t124, ptr %t121 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = getelementptr inbounds %S.ast.Program, ptr %a112, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.copy.arr_str(ptr %a130, ptr %a129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t131, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic113, label %ok114 -panic113: - call void @finch_panic(ptr @.str.87, i64 108, ptr @.str.88) - unreachable -ok114: - %t135 = getelementptr inbounds %S.main.Loader, ptr %t133, i32 0, i32 0 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load %S.ast.Program, ptr %a112 - store %S.ast.Program %t137, ptr %a138 - call void @finch.copy.S_ast_Program(ptr %a139, ptr %a138) - %t140 = load %S.ast.Program, ptr %a139 - %t141 = load i64, ptr %t136 - %t142 = add i64 %t141, 1 - call void @finch_arr_reserve(ptr %t135, i64 %t142, i64 ptrtoint (ptr getelementptr (%S.ast.Program, ptr null, i32 1) to i64)) - %t143 = load ptr, ptr %t135 - %t144 = getelementptr inbounds %S.ast.Program, ptr %t143, i64 %t141 - store %S.ast.Program %t140, ptr %t144 - store i64 %t142, ptr %t136 - store i64 0, ptr %a145 - br label %each.cond121 -each.cond121: - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = load i64, ptr %a145 - %t149 = icmp slt i64 %t148, %t147 - br i1 %t149, label %each.body122, label %each.end124 -each.body122: - %t150 = load ptr, ptr %a132 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic125, label %ok126 -panic125: - call void @finch_panic(ptr @.str.89, i64 110, ptr @.str.90) - unreachable -ok126: - %t156 = getelementptr inbounds %S.main.Loader, ptr %t154, i32 0, i32 2 - %t157 = getelementptr inbounds { ptr, i64, i64 }, ptr %t156, i32 0, i32 1 - %t158 = load { ptr, i64, i64 }, ptr %a153 - store i64 -1, ptr %a159 - %t160 = load i64, ptr %t157 - %t161 = load ptr, ptr %t156 - store i64 0, ptr %a162 - br label %find.cond127 -find.cond127: - %t163 = load i64, ptr %a162 - %t164 = icmp slt i64 %t163, %t160 - br i1 %t164, label %find.body128, label %find.end131 -find.body128: - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i64 %t163 - %t166 = load { ptr, i64, i64 }, ptr %t165 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } %t158, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br i1 %t170, label %find.hit129, label %find.next130 -find.hit129: - store i64 %t163, ptr %a159 - br label %find.end131 -find.next130: - %t171 = add i64 %t163, 1 - store i64 %t171, ptr %a162 - br label %find.cond127 -find.end131: - %t172 = load i64, ptr %a159 - %t173 = icmp sge i64 %t172, 0 - %t174 = xor i1 %t173, true - br i1 %t174, label %then132, label %endif134 -then132: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic135, label %ok136 -panic135: - call void @finch_panic(ptr @.str.91, i64 111, ptr @.str.92) - unreachable -ok136: - %t177 = getelementptr inbounds %S.main.Loader, ptr %t175, i32 0, i32 2 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_copy(ptr %a181, ptr %a180) - %t182 = load { ptr, i64, i64 }, ptr %a181 - %t183 = load i64, ptr %t178 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t177, i64 %t184, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t177 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i64 %t183 - store { ptr, i64, i64 } %t182, ptr %t186 - store i64 %t184, ptr %t178 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a2 - %t190 = load { ptr, i64, i64 }, ptr %a153 - %t191 = call { ptr, i64, i64 } @finch.main.findModule(ptr %t188, { ptr, i64, i64 } %t189, { ptr, i64, i64 } %t190) - %t192 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.main.load(ptr %t187, { ptr, i64, i64 } %t191, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - br label %endif134 -endif134: - br label %each.step123 -each.step123: - %t194 = load i64, ptr %a145 - %t195 = add i64 %t194, 1 - store i64 %t195, ptr %a145 - br label %each.cond121 -each.end124: - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_ast_Program(ptr %a112) - call void @finch_str_drop(ptr %a86) - ret void -} - -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 { ptr, i64, i64 } @finch.main.unpack() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca i64, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.embedded.names() - store { ptr, i64, i64 } %t1, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.145, i64 7, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %a10, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.146, i64 1, i64 0 }, ptr %a12 - call void @finch_str_join(ptr %a13, ptr %a10, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.drop.arr_str(ptr %a10) - %t15 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t14) - store { ptr, i64, i64 } %t14, ptr %a16 - call void @finch_str_drop(ptr %a16) - store { ptr, i64, i64 } %t8, ptr %a18 - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t8, ptr %a20 - call void @finch_str_drop(ptr %a20) - store { ptr, i64, i64 } %t15, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.147, i64 5, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a29 - %t30 = call i32 @finch_file_exists(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = icmp ne i32 %t30, 0 - br i1 %t32, label %then146, label %endif148 -then146: - %t33 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t33 -endif148: - %t34 = call { ptr, i64, i64 } @finch.embedded.texts() - store { ptr, i64, i64 } %t34, ptr %a35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t37 = load i64, ptr %t36 - store i64 0, ptr %a38 - br label %for.cond149 -for.cond149: - %t39 = load i64, ptr %a38 - %t40 = icmp slt i64 %t39, %t37 - br i1 %t40, label %for.body150, label %for.end152 -for.body150: - %t41 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.148, i64 1, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a38 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = icmp uge i64 %t46, %t48 - br i1 %t49, label %range153, label %inrange154 -range153: - call void @finch_panic_index(ptr @.str.149, i64 144, i64 %t46, i64 %t48) - unreachable -inrange154: - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t46 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t45, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t45, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - %t58 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t57) - store { ptr, i64, i64 } %t57, ptr %a59 - call void @finch_str_drop(ptr %a59) - call void @finch.host.makeDirs({ ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.150, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = load i64, ptr %a38 - %t67 = load { ptr, i64, i64 }, ptr %a2 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range155, label %inrange156 -range155: - call void @finch_panic_index(ptr @.str.151, i64 145, i64 %t66, i64 %t68) - unreachable -inrange156: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i64 %t66 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t65, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t65, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load i64, ptr %a38 - %t79 = load { ptr, i64, i64 }, ptr %a35 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range157, label %inrange158 -range157: - call void @finch_panic_index(ptr @.str.152, i64 145, i64 %t78, i64 %t80) - unreachable -inrange158: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i64 %t78 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t77, ptr %a85 - store { ptr, i64, i64 } %t84, ptr %a86 - %t87 = call i32 @finch_write_file(ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t77, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = icmp ne i32 %t87, 0 - br label %for.step151 -for.step151: - %t90 = load i64, ptr %a38 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a38 - br label %for.cond149 -for.end152: - %t92 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.153, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.154, i64 0, i64 0 }, ptr %a98 - %t99 = call i32 @finch_write_file(ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = icmp ne i32 %t99, 0 - %t102 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a35) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t102 -} - -define internal void @finch.drop.S_cimport_Header(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Header, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_Header(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond403 -n.cond403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body404, label %n.end405 -n.body404: - %t7 = getelementptr inbounds %S.cimport.Header, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_Header(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond403 -n.end405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_ast_Program(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond406 -n.cond406: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body407, label %n.end408 -n.body407: - %t7 = getelementptr inbounds %S.ast.Program, ptr %t1, i64 %t5 - call void @finch.drop.S_ast_Program(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond406 -n.end408: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_main_Loader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t7) - %t8 = getelementptr inbounds %S.main.Loader, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_str(ptr %t8) - ret void -} - -define internal void @finch.drop.S_platform_Target(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 6 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.platform.Target, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.copy.S_platform_Target(ptr %dst, ptr %src) { -entry: - - %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 void @finch.drop.S_gen_Options(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Options, ptr %a, i32 0, i32 4 - call void @finch.drop.S_platform_Target(ptr %t2) - ret void -} - -define internal void @finch.drop.S_cimport_CFunc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_ast_Type(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CFunc, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CFunc(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond416 -n.cond416: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body417, label %n.end418 -n.body417: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live419, label %entry.next420 -entry.live419: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CFunc(ptr %t13) - br label %entry.next420 -entry.next420: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond416 -n.end418: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CConst(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CConst, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CConst(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond421 -n.cond421: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body422, label %n.end423 -n.body422: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live424, label %entry.next425 -entry.live424: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CConst(ptr %t13) - br label %entry.next425 -entry.next425: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond421 -n.end423: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_S_ast_Type(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond426 -n.cond426: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body427, label %n.end428 -n.body427: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live429, label %entry.next430 -entry.live429: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_ast_Type(ptr %t13) - br label %entry.next430 -entry.next430: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond426 -n.end428: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CField(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CField, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.drop.arr_S_cimport_CField(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond436 -n.cond436: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body437, label %n.end438 -n.body437: - %t7 = getelementptr inbounds %S.cimport.CField, ptr %t1, i64 %t5 - call void @finch.drop.S_cimport_CField(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond436 -n.end438: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CStruct(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_cimport_CField(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CStruct, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.map_str_S_cimport_CStruct(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond431 -n.cond431: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body432, label %n.end433 -n.body432: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live434, label %entry.next435 -entry.live434: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_cimport_CStruct(ptr %t13) - br label %entry.next435 -entry.next435: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond431 -n.end433: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_CImports(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 0 - call void @finch.drop.map_str_S_cimport_CFunc(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 1 - call void @finch.drop.map_str_S_cimport_CConst(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_S_ast_Type(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_cimport_CStruct(ptr %t4) - %t5 = getelementptr inbounds %S.cimport.CImports, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.S_linker_Build(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.linker.Build, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal i64 @finch.main.main({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.platform.Target, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = 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 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca %S.main.Loader, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca i64, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a615 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca i64, align 16 - %a653 = alloca %S.ast.Program, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a663 = alloca i64, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca i64, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca %S.cimport.CImports, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a866 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca %S.platform.Target, align 16 - %a876 = alloca %S.platform.Target, align 16 - %a880 = alloca %S.gen.Options, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a921 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca { ptr, i64, i64 }, align 16 - %a923 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a927 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a978 = 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 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a993 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca %S.linker.Build, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca i64, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1081 = 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 - %a1085 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca i64, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = icmp eq i64 %t3, 2 - br label %logic.from159 -logic.from159: - br i1 %t4, label %logic.rhs160, label %logic.end161 -logic.rhs160: - %t5 = load { ptr, i64, i64 }, ptr %a1 - %t6 = extractvalue { ptr, i64, i64 } %t5, 1 - %t7 = icmp uge i64 1, %t6 - br i1 %t7, label %range162, label %inrange163 -range162: - call void @finch_panic_index(ptr @.str.155, i64 152, i64 1, i64 %t6) - unreachable -inrange163: - %t8 = extractvalue { ptr, i64, i64 } %t5, 0 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i64 1 - %t10 = load { ptr, i64, i64 }, ptr %t9 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.156, i64 7, i64 0 }, ptr %a12 - %t13 = call i32 @finch_str_eq(ptr %a11, ptr %a12) - %t14 = icmp ne i32 %t13, 0 - br label %logic.from164 -logic.from164: - br i1 %t14, label %logic.end166, label %logic.rhs165 -logic.rhs165: - %t15 = load { ptr, i64, i64 }, ptr %a1 - %t16 = extractvalue { ptr, i64, i64 } %t15, 1 - %t17 = icmp uge i64 1, %t16 - br i1 %t17, label %range167, label %inrange168 -range167: - call void @finch_panic_index(ptr @.str.157, i64 152, i64 1, i64 %t16) - unreachable -inrange168: - %t18 = extractvalue { ptr, i64, i64 } %t15, 0 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.158, i64 9, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br label %logic.rend169 -logic.rend169: - br label %logic.end166 -logic.end166: - %t25 = phi i1 [ true, %logic.from164 ], [ %t24, %logic.rend169 ] - br label %logic.rend170 -logic.rend170: - br label %logic.end161 -logic.end161: - %t26 = phi i1 [ false, %logic.from159 ], [ %t25, %logic.rend170 ] - br i1 %t26, label %then171, label %endif173 -then171: - %t27 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 1 - %t28 = trunc i64 %t27 to i32 - %t29 = extractvalue { ptr, i64, i64 } { ptr @.str.159, i64 46, i64 0 }, 0 - %t30 = icmp eq ptr %t29, null - %t31 = select i1 %t30, ptr @.str.160, ptr %t29 - %t32 = call i32 (ptr, ...) @printf(ptr @.str.161, i32 %t28, ptr %t31) - %t33 = call i32 (ptr, ...) @printf(ptr @.str.162) - ret i64 0 -endif173: - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t35 = load i64, ptr %t34 - %t36 = icmp eq i64 %t35, 2 - br label %logic.from174 -logic.from174: - br i1 %t36, label %logic.rhs175, label %logic.end176 -logic.rhs175: - %t37 = load { ptr, i64, i64 }, ptr %a1 - %t38 = extractvalue { ptr, i64, i64 } %t37, 1 - %t39 = icmp uge i64 1, %t38 - br i1 %t39, label %range177, label %inrange178 -range177: - call void @finch_panic_index(ptr @.str.163, i64 156, i64 1, i64 %t38) - unreachable -inrange178: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.164, i64 3, i64 0 }, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - br label %logic.rend179 -logic.rend179: - br label %logic.end176 -logic.end176: - %t47 = phi i1 [ false, %logic.from174 ], [ %t46, %logic.rend179 ] - br i1 %t47, label %then180, label %endif182 -then180: - %t48 = load { ptr, i64, i64 }, ptr %a1 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 0, %t49 - br i1 %t50, label %range183, label %inrange184 -range183: - call void @finch_panic_index(ptr @.str.165, i64 157, i64 0, i64 %t49) - unreachable -inrange184: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = call i64 @finch.lsp.run({ ptr, i64, i64 } %t53) - ret i64 %t54 -endif182: - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t56 = load i64, ptr %t55 - %t57 = icmp slt i64 %t56, 3 - br i1 %t57, label %then185, label %endif187 -then185: - call void @finch.main.usage() - br label %endif187 -endif187: - %t58 = load { ptr, i64, i64 }, ptr %a1 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - %t60 = icmp uge i64 1, %t59 - br i1 %t60, label %range188, label %inrange189 -range188: - call void @finch_panic_index(ptr @.str.166, i64 162, i64 1, i64 %t59) - unreachable -inrange189: - %t61 = extractvalue { ptr, i64, i64 } %t58, 0 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t61, i64 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - 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 %range190, label %inrange191 -range190: - call void @finch_panic_index(ptr @.str.167, i64 163, i64 2, i64 %t69) - unreachable -inrange191: - %t71 = extractvalue { ptr, i64, i64 } %t68, 0 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - 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.168, i64 5, i64 0 }, ptr %a80 - %t81 = call i32 @finch_str_eq(ptr %a79, ptr %a80) - %t82 = icmp eq i32 %t81, 0 - br label %logic.from192 -logic.from192: - br i1 %t82, label %logic.rhs193, label %logic.end194 -logic.rhs193: - %t83 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t83, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.169, i64 3, i64 0 }, ptr %a85 - %t86 = call i32 @finch_str_eq(ptr %a84, ptr %a85) - %t87 = icmp eq i32 %t86, 0 - br label %logic.rend195 -logic.rend195: - br label %logic.end194 -logic.end194: - %t88 = phi i1 [ false, %logic.from192 ], [ %t87, %logic.rend195 ] - br label %logic.from196 -logic.from196: - br i1 %t88, label %logic.rhs197, label %logic.end198 -logic.rhs197: - %t89 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.170, i64 2, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp eq i32 %t92, 0 - br label %logic.rend199 -logic.rend199: - br label %logic.end198 -logic.end198: - %t94 = phi i1 [ false, %logic.from196 ], [ %t93, %logic.rend199 ] - br label %logic.from200 -logic.from200: - br i1 %t94, label %logic.rhs201, label %logic.end202 -logic.rhs201: - %t95 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.171, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp eq i32 %t98, 0 - br label %logic.rend203 -logic.rend203: - br label %logic.end202 -logic.end202: - %t100 = phi i1 [ false, %logic.from200 ], [ %t99, %logic.rend203 ] - br i1 %t100, label %then204, label %endif206 -then204: - call void @finch.main.usage() - br label %endif206 -endif206: - %t101 = load { ptr, i64, i64 }, ptr %a77 - %t102 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t102, ptr %a103 - store i1 false, ptr %a104 - store i1 false, ptr %a105 - store i1 false, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.172, i64 0, i64 0 }, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.173, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } zeroinitializer, ptr %a109 - store { ptr, i64, i64 } zeroinitializer, ptr %a110 - store { ptr, i64, i64 } zeroinitializer, ptr %a111 - store { ptr, i64, i64 } zeroinitializer, ptr %a112 - store { ptr, i64, i64 } zeroinitializer, ptr %a113 - store i64 3, ptr %a114 - br label %while.cond207 -while.cond207: - %t115 = load i64, ptr %a114 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t117 = load i64, ptr %t116 - %t118 = icmp slt i64 %t115, %t117 - br i1 %t118, label %while.body208, label %while.end209 -while.body208: - %t119 = load i64, ptr %a114 - %t120 = load { ptr, i64, i64 }, ptr %a1 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 %t119, %t121 - br i1 %t122, label %range210, label %inrange211 -range210: - call void @finch_panic_index(ptr @.str.174, i64 180, i64 %t119, i64 %t121) - unreachable -inrange211: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 %t119 - %t125 = load { ptr, i64, i64 }, ptr %t124 - 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.175, i64 3, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_eq(ptr %a131, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br label %logic.from212 -logic.from212: - br i1 %t134, label %logic.rhs213, label %logic.end214 -logic.rhs213: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = icmp sgt i64 %t136, 0 - br label %logic.rend215 -logic.rend215: - br label %logic.end214 -logic.end214: - %t138 = phi i1 [ false, %logic.from212 ], [ %t137, %logic.rend215 ] - br i1 %t138, label %then216, label %else217 -then216: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t140, ptr %a141 - 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 %endif218 -else217: - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.176, i64 2, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br label %logic.from219 -logic.from219: - br i1 %t152, label %logic.rhs220, label %logic.end221 -logic.rhs220: - %t153 = load i64, ptr %a114 - %t154 = add i64 %t153, 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp slt i64 %t154, %t156 - br label %logic.rend222 -logic.rend222: - br label %logic.end221 -logic.end221: - %t158 = phi i1 [ false, %logic.from219 ], [ %t157, %logic.rend222 ] - br label %logic.from223 -logic.from223: - br i1 %t158, label %logic.rhs224, label %logic.end225 -logic.rhs224: - %t159 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.177, i64 5, i64 0 }, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br label %logic.rend226 -logic.rend226: - br label %logic.end225 -logic.end225: - %t164 = phi i1 [ false, %logic.from223 ], [ %t163, %logic.rend226 ] - br i1 %t164, label %then227, label %else228 -then227: - %t165 = load i64, ptr %a114 - %t166 = add i64 %t165, 1 - %t167 = load { ptr, i64, i64 }, ptr %a1 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range230, label %inrange231 -range230: - call void @finch_panic_index(ptr @.str.178, i64 184, i64 %t166, i64 %t168) - unreachable -inrange231: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i64 %t166 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t175, ptr %a103 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - store i1 true, ptr %a104 - %t178 = load i64, ptr %a114 - %t179 = add i64 %t178, 1 - store i64 %t179, ptr %a114 - br label %endif229 -else228: - %t180 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t180, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.179, i64 8, i64 0 }, ptr %a182 - %t183 = call i32 @finch_str_eq(ptr %a181, ptr %a182) - %t184 = icmp ne i32 %t183, 0 - br label %logic.from232 -logic.from232: - br i1 %t184, label %logic.rhs233, label %logic.end234 -logic.rhs233: - %t185 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.180, i64 5, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.rend235 -logic.rend235: - br label %logic.end234 -logic.end234: - %t190 = phi i1 [ false, %logic.from232 ], [ %t189, %logic.rend235 ] - br i1 %t190, label %then236, label %else237 -then236: - store i1 true, ptr %a105 - br label %endif238 -else237: - %t191 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t191, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.181, i64 3, i64 0 }, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br i1 %t195, label %then239, label %else240 -then239: - %t196 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.182, i64 3, i64 0 }, ptr %a108 - store { ptr, i64, i64 } %t196, ptr %a197 - call void @finch_str_drop(ptr %a197) - br label %endif241 -else240: - %t198 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.183, i64 2, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from242 -logic.from242: - br i1 %t202, label %logic.rhs243, label %logic.end244 -logic.rhs243: - %t203 = load i64, ptr %a114 - %t204 = add i64 %t203, 1 - %t205 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t206 = load i64, ptr %t205 - %t207 = icmp slt i64 %t204, %t206 - br label %logic.rend245 -logic.rend245: - br label %logic.end244 -logic.end244: - %t208 = phi i1 [ false, %logic.from242 ], [ %t207, %logic.rend245 ] - br i1 %t208, label %then246, label %else247 -then246: - %t209 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t210 = load i64, ptr %a114 - %t211 = add i64 %t210, 1 - %t212 = load { ptr, i64, i64 }, ptr %a1 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range249, label %inrange250 -range249: - call void @finch_panic_index(ptr @.str.184, i64 192, i64 %t211, i64 %t213) - unreachable -inrange250: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds { ptr, i64, i64 }, ptr %t215, i64 %t211 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t217, ptr %a218 - call void @finch_str_copy(ptr %a219, ptr %a218) - %t220 = load { ptr, i64, i64 }, ptr %a219 - %t221 = load i64, ptr %t209 - %t222 = add i64 %t221, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t222, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t223 = load ptr, ptr %a109 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i64 %t221 - store { ptr, i64, i64 } %t220, ptr %t224 - store i64 %t222, ptr %t209 - %t225 = load i64, ptr %a114 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a114 - br label %endif248 -else247: - %t227 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t227, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.186, i64 2, i64 0 }, ptr %a230 - %t231 = call i32 @finch_str_starts(ptr %a228, ptr %a230) - %t232 = icmp ne i32 %t231, 0 - br label %logic.from251 -logic.from251: - br i1 %t232, label %logic.rhs252, label %logic.end253 -logic.rhs252: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t234 = load i64, ptr %t233 - %t235 = icmp sgt i64 %t234, 2 - br label %logic.rend254 -logic.rend254: - br label %logic.end253 -logic.end253: - %t236 = phi i1 [ false, %logic.from251 ], [ %t235, %logic.rend254 ] - br i1 %t236, label %then255, label %else256 -then255: - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %a109, i32 0, i32 1 - %t238 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t238, ptr %a239 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t242 = load i64, ptr %t241 - call void @finch_str_sub(ptr %a240, ptr %a239, i64 2, i64 %t242, ptr @.str.187, i64 195) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load i64, ptr %t237 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %a109, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %a109 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } %t243, ptr %t247 - store i64 %t245, ptr %t237 - br label %endif257 -else256: - %t248 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.188, i64 2, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br label %logic.from258 -logic.from258: - br i1 %t252, label %logic.rhs259, label %logic.end260 -logic.rhs259: - %t253 = load i64, ptr %a114 - %t254 = add i64 %t253, 1 - %t255 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t256 = load i64, ptr %t255 - %t257 = icmp slt i64 %t254, %t256 - br label %logic.rend261 -logic.rend261: - br label %logic.end260 -logic.end260: - %t258 = phi i1 [ false, %logic.from258 ], [ %t257, %logic.rend261 ] - br i1 %t258, label %then262, label %else263 -then262: - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %a110, i32 0, i32 1 - %t260 = load i64, ptr %a114 - %t261 = add i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %a1 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range265, label %inrange266 -range265: - call void @finch_panic_index(ptr @.str.189, i64 197, i64 %t261, i64 %t263) - unreachable -inrange266: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i64 %t261 - %t267 = load { ptr, i64, i64 }, ptr %t266 - store { ptr, i64, i64 } %t267, ptr %a268 - call void @finch_str_copy(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %a110, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %a110 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - %t275 = load i64, ptr %a114 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a114 - br label %endif264 -else263: - %t277 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t277, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.190, i64 9, i64 0 }, ptr %a279 - %t280 = call i32 @finch_str_eq(ptr %a278, ptr %a279) - %t281 = icmp ne i32 %t280, 0 - br label %logic.from267 -logic.from267: - br i1 %t281, label %logic.rhs268, label %logic.end269 -logic.rhs268: - %t282 = load i64, ptr %a114 - %t283 = add i64 %t282, 1 - %t284 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t285 = load i64, ptr %t284 - %t286 = icmp slt i64 %t283, %t285 - br label %logic.rend270 -logic.rend270: - br label %logic.end269 -logic.end269: - %t287 = phi i1 [ false, %logic.from267 ], [ %t286, %logic.rend270 ] - br i1 %t287, label %then271, label %else272 -then271: - %t288 = load i64, ptr %a114 - %t289 = add i64 %t288, 1 - %t290 = load { ptr, i64, i64 }, ptr %a1 - %t291 = extractvalue { ptr, i64, i64 } %t290, 1 - %t292 = icmp uge i64 %t289, %t291 - br i1 %t292, label %range274, label %inrange275 -range274: - call void @finch_panic_index(ptr @.str.191, i64 200, i64 %t289, i64 %t291) - unreachable -inrange275: - %t293 = extractvalue { ptr, i64, i64 } %t290, 0 - %t294 = getelementptr inbounds { ptr, i64, i64 }, ptr %t293, i64 %t289 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } %t295, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.193, i64 1, i64 0 }, ptr %a298 - call void @finch_str_split(ptr %a299, ptr %a296, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t300, ptr %a301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %a111, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %a301 - %t304 = extractvalue { ptr, i64, i64 } %t303, 1 - %t305 = icmp uge i64 0, %t304 - br i1 %t305, label %range276, label %inrange277 -range276: - call void @finch_panic_index(ptr @.str.194, i64 201, i64 0, i64 %t304) - unreachable -inrange277: - %t306 = extractvalue { ptr, i64, i64 } %t303, 0 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_copy(ptr %a310, ptr %a309) - %t311 = load { ptr, i64, i64 }, ptr %a310 - %t312 = load i64, ptr %t302 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %a111, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %a111 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t302 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %a112, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %a301 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 1, %t318 - br i1 %t319, label %range278, label %inrange279 -range278: - call void @finch_panic_index(ptr @.str.195, i64 202, i64 1, i64 %t318) - unreachable -inrange279: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i64 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a323 - call void @finch_str_copy(ptr %a324, ptr %a323) - %t325 = load { ptr, i64, i64 }, ptr %a324 - %t326 = load i64, ptr %t316 - %t327 = add i64 %t326, 1 - call void @finch_arr_reserve(ptr %a112, i64 %t327, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t328 = load ptr, ptr %a112 - %t329 = getelementptr inbounds { ptr, i64, i64 }, ptr %t328, i64 %t326 - store { ptr, i64, i64 } %t325, ptr %t329 - store i64 %t327, ptr %t316 - %t330 = load i64, ptr %a114 - %t331 = add i64 %t330, 1 - store i64 %t331, ptr %a114 - call void @finch.drop.arr_str(ptr %a301) - br label %endif273 -else272: - %t332 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t332, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.196, i64 2, i64 0 }, ptr %a334 - %t335 = call i32 @finch_str_eq(ptr %a333, ptr %a334) - %t336 = icmp ne i32 %t335, 0 - br i1 %t336, label %then280, label %else281 -then280: - store i1 true, ptr %a106 - br label %endif282 -else281: - %t337 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t337, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.197, i64 8, i64 0 }, ptr %a339 - %t340 = call i32 @finch_str_eq(ptr %a338, ptr %a339) - %t341 = icmp ne i32 %t340, 0 - br label %logic.from283 -logic.from283: - br i1 %t341, label %logic.rhs284, label %logic.end285 -logic.rhs284: - %t342 = load i64, ptr %a114 - %t343 = add i64 %t342, 1 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = icmp slt i64 %t343, %t345 - br label %logic.rend286 -logic.rend286: - br label %logic.end285 -logic.end285: - %t347 = phi i1 [ false, %logic.from283 ], [ %t346, %logic.rend286 ] - br i1 %t347, label %then287, label %else288 -then287: - %t348 = load i64, ptr %a114 - %t349 = add i64 %t348, 1 - %t350 = load { ptr, i64, i64 }, ptr %a1 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range290, label %inrange291 -range290: - call void @finch_panic_index(ptr @.str.198, i64 207, i64 %t349, i64 %t351) - unreachable -inrange291: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i64 %t349 - %t355 = load { ptr, i64, i64 }, ptr %t354 - store { ptr, i64, i64 } %t355, ptr %a356 - call void @finch_str_copy(ptr %a357, ptr %a356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - %t359 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t358, ptr %a107 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load i64, ptr %a114 - %t362 = add i64 %t361, 1 - store i64 %t362, ptr %a114 - br label %endif289 -else288: - %t363 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t363, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.199, i64 3, i64 0 }, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br i1 %t367, label %then292, label %else293 -then292: - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t369 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t369, ptr %a370 - call void @finch_str_copy(ptr %a371, ptr %a370) - %t372 = load { ptr, i64, i64 }, ptr %a371 - %t373 = load i64, ptr %t368 - %t374 = add i64 %t373, 1 - call void @finch_arr_reserve(ptr %a113, i64 %t374, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t375 = load ptr, ptr %a113 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t373 - store { ptr, i64, i64 } %t372, ptr %t376 - store i64 %t374, ptr %t368 - br label %endif294 -else293: - call void @finch.main.usage() - br label %endif294 -endif294: - br label %endif289 -endif289: - br label %endif282 -endif282: - br label %endif273 -endif273: - br label %endif264 -endif264: - br label %endif257 -endif257: - br label %endif248 -endif248: - br label %endif241 -endif241: - br label %endif238 -endif238: - br label %endif229 -endif229: - br label %endif218 -endif218: - %t377 = load i64, ptr %a114 - %t378 = add i64 %t377, 1 - store i64 %t378, ptr %a114 - call void @finch_str_drop(ptr %a129) - br label %while.cond207 -while.end209: - %t379 = load { ptr, i64, i64 }, ptr %a107 - %t380 = call %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %t379) - store %S.platform.Target %t380, ptr %a381 - %t382 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t382, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.200, i64 3, i64 0 }, ptr %a384 - %t385 = call i32 @finch_str_eq(ptr %a383, ptr %a384) - %t386 = icmp ne i32 %t385, 0 - br i1 %t386, label %then295, label %else296 -then295: - %t387 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.201, i64 11, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a394, i64 %t393) - %t395 = load { ptr, i64, i64 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t392, ptr %a399 - call void @finch_str_drop(ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.202, i64 1, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a77 - %t408 = call { ptr, i64, i64 } @finch.main.stem({ ptr, i64, i64 } %t407) - store { ptr, i64, i64 } %t406, ptr %a410 - store { ptr, i64, i64 } %t408, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t406, ptr %a412 - call void @finch_str_drop(ptr %a412) - store { ptr, i64, i64 } %t408, ptr %a413 - call void @finch_str_drop(ptr %a413) - %t414 = load { ptr, i64, i64 }, ptr %a409 - %t415 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t414, ptr %a418 - store { ptr, i64, i64 } %t416, ptr %a419 - call void @finch_str_concat(ptr %a417, ptr %a418, ptr %a419) - store { ptr, i64, i64 } %t414, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a417 - %t422 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t421, ptr %a103 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_drop(ptr %a423) - br label %endif297 -else296: - %t424 = load i1, ptr %a105 - br label %logic.from298 -logic.from298: - br i1 %t424, label %logic.rhs299, label %logic.end300 -logic.rhs299: - %t425 = load i1, ptr %a104 - %t426 = xor i1 %t425, true - br label %logic.rend301 -logic.rend301: - br label %logic.end300 -logic.end300: - %t427 = phi i1 [ false, %logic.from298 ], [ %t426, %logic.rend301 ] - br i1 %t427, label %then302, label %else303 -then302: - %t428 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t429 = load i1, ptr %t428 - br i1 %t429, label %then305, label %else306 -then305: - %t430 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.203, i64 4, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a431 - %t435 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t434, ptr %a103 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif307 -else306: - %t437 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t438 = load i1, ptr %t437 - br i1 %t438, label %then308, label %else309 -then308: - %t439 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.204, i64 3, i64 0 }, ptr %a441 - store { ptr, i64, i64 } %t439, ptr %a442 - call void @finch_str_concat(ptr %a440, ptr %a441, ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a440 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.205, i64 6, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t448, ptr %a103 - store { ptr, i64, i64 } %t449, ptr %a450 - call void @finch_str_drop(ptr %a450) - br label %endif310 -else309: - %t451 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.206, i64 3, i64 0 }, ptr %a453 - store { ptr, i64, i64 } %t451, ptr %a454 - call void @finch_str_concat(ptr %a452, ptr %a453, ptr %a454) - %t455 = load { ptr, i64, i64 }, ptr %a452 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.207, i64 3, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - store { ptr, i64, i64 } %t455, ptr %a459 - call void @finch_str_drop(ptr %a459) - %t460 = load { ptr, i64, i64 }, ptr %a456 - %t461 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t460, ptr %a103 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_drop(ptr %a462) - br label %endif310 -endif310: - br label %endif307 -endif307: - br label %endif304 -else303: - %t463 = load i1, ptr %a104 - %t464 = xor i1 %t463, true - br i1 %t464, label %then311, label %endif313 -then311: - %t465 = load { ptr, i64, i64 }, ptr %a103 - %t466 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 6 - %t467 = load { ptr, i64, i64 }, ptr %t466 - store { ptr, i64, i64 } %t465, ptr %a469 - store { ptr, i64, i64 } %t467, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t471, ptr %a103 - store { ptr, i64, i64 } %t472, ptr %a473 - call void @finch_str_drop(ptr %a473) - br label %endif313 -endif313: - br label %endif304 -endif304: - br label %endif297 -endif297: - store %S.main.Loader zeroinitializer, ptr %a474 - %t475 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t476 = load { ptr, i64, i64 }, ptr %t475 - store { ptr, i64, i64 } { ptr @.str.208, i64 5, i64 0 }, ptr %t475 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t479 = load i1, ptr %t478 - br i1 %t479, label %then314, label %else315 -then314: - %t480 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t481 = load { ptr, i64, i64 }, ptr %t480 - store { ptr, i64, i64 } { ptr @.str.209, i64 7, i64 0 }, ptr %t480 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif316 -else315: - %t483 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 3 - %t484 = load i1, ptr %t483 - br i1 %t484, label %then317, label %endif319 -then317: - %t485 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 3 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } { ptr @.str.210, i64 5, i64 0 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - call void @finch_str_drop(ptr %a487) - br label %endif319 -endif319: - br label %endif316 -endif316: - %t488 = load { ptr, i64, i64 }, ptr %a1 - %t489 = extractvalue { ptr, i64, i64 } %t488, 1 - %t490 = icmp uge i64 0, %t489 - br i1 %t490, label %range320, label %inrange321 -range320: - call void @finch_panic_index(ptr @.str.211, i64 238, i64 0, i64 %t489) - unreachable -inrange321: - %t491 = extractvalue { ptr, i64, i64 } %t488, 0 - %t492 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i64 0 - %t493 = load { ptr, i64, i64 }, ptr %t492 - %t494 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t493) - store { ptr, i64, i64 } %t494, ptr %a496 - store { ptr, i64, i64 } { ptr @.str.212, i64 7, i64 0 }, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t494, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - %t500 = load { ptr, i64, i64 }, ptr %a1 - %t501 = extractvalue { ptr, i64, i64 } %t500, 1 - %t502 = icmp uge i64 0, %t501 - br i1 %t502, label %range322, label %inrange323 -range322: - call void @finch_panic_index(ptr @.str.213, i64 238, i64 0, i64 %t501) - unreachable -inrange323: - %t503 = extractvalue { ptr, i64, i64 } %t500, 0 - %t504 = getelementptr inbounds { ptr, i64, i64 }, ptr %t503, i64 0 - %t505 = load { ptr, i64, i64 }, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t505) - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.214, i64 4, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = load { ptr, i64, i64 }, ptr %a1 - %t513 = extractvalue { ptr, i64, i64 } %t512, 1 - %t514 = icmp uge i64 0, %t513 - br i1 %t514, label %range324, label %inrange325 -range324: - call void @finch_panic_index(ptr @.str.215, i64 238, i64 0, i64 %t513) - unreachable -inrange325: - %t515 = extractvalue { ptr, i64, i64 } %t512, 0 - %t516 = getelementptr inbounds { ptr, i64, i64 }, ptr %t515, i64 0 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t517) - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.216, i64 19, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t525 = call ptr @finch_alloc(i64 %t524) - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 0 - store { ptr, i64, i64 } %t499, ptr %t526 - %t527 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 1 - store { ptr, i64, i64 } %t511, ptr %t527 - %t528 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 2 - store { ptr, i64, i64 } %t523, ptr %t528 - %t529 = getelementptr inbounds { ptr, i64, i64 }, ptr %t525, i64 3 - store { ptr, i64, i64 } { ptr @.str.217, i64 3, i64 0 }, ptr %t529 - %t530 = insertvalue { ptr, i64, i64 } undef, ptr %t525, 0 - %t531 = insertvalue { ptr, i64, i64 } %t530, i64 4, 1 - %t532 = insertvalue { ptr, i64, i64 } %t531, i64 4, 2 - store { ptr, i64, i64 } %t532, ptr %a533 - store i64 0, ptr %a534 - br label %each.cond326 -each.cond326: - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %a533, i32 0, i32 1 - %t536 = load i64, ptr %t535 - %t537 = load i64, ptr %a534 - %t538 = icmp slt i64 %t537, %t536 - br i1 %t538, label %each.body327, label %each.end329 -each.body327: - %t539 = load ptr, ptr %a533 - %t540 = getelementptr inbounds { ptr, i64, i64 }, ptr %t539, i64 %t537 - %t541 = load { ptr, i64, i64 }, ptr %t540 - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t544 = getelementptr inbounds { ptr, i64, i64 }, ptr %t543, i32 0, i32 1 - %t545 = load i64, ptr %t544 - %t546 = icmp eq i64 %t545, 0 - br label %logic.from330 -logic.from330: - br i1 %t546, label %logic.rhs331, label %logic.end332 -logic.rhs331: - %t547 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t547, ptr %a549 - store { ptr, i64, i64 } { ptr @.str.218, i64 9, i64 0 }, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a552 - %t553 = call i32 @finch_file_exists(ptr %a552) - store { ptr, i64, i64 } %t551, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = icmp ne i32 %t553, 0 - br label %logic.rend333 -logic.rend333: - br label %logic.end332 -logic.end332: - %t556 = phi i1 [ false, %logic.from330 ], [ %t555, %logic.rend333 ] - br i1 %t556, label %then334, label %endif336 -then334: - %t557 = load { ptr, i64, i64 }, ptr %a542 - %t558 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - store { ptr, i64, i64 } %t557, ptr %a559 - call void @finch_str_copy(ptr %a560, ptr %a559) - %t561 = load { ptr, i64, i64 }, ptr %a560 - %t562 = load { ptr, i64, i64 }, ptr %t558 - store { ptr, i64, i64 } %t561, ptr %t558 - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif336 -endif336: - br label %each.step328 -each.step328: - %t564 = load i64, ptr %a534 - %t565 = add i64 %t564, 1 - store i64 %t565, ptr %a534 - br label %each.cond326 -each.end329: - call void @finch.drop.arr_str(ptr %a533) - %t566 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t567 = getelementptr inbounds { ptr, i64, i64 }, ptr %t566, i32 0, i32 1 - %t568 = load i64, ptr %t567 - %t569 = icmp eq i64 %t568, 0 - br i1 %t569, label %then337, label %endif339 -then337: - %t570 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.219, i64 4, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 4 - %t577 = load { ptr, i64, i64 }, ptr %t576 - store { ptr, i64, i64 } %t575, ptr %t576 - store { ptr, i64, i64 } %t577, ptr %a578 - call void @finch_str_drop(ptr %a578) - br label %endif339 -endif339: - %t579 = load { ptr, i64, i64 }, ptr %a111 - %t580 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 6 - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch.copy.arr_str(ptr %a582, ptr %a581) - %t583 = load { ptr, i64, i64 }, ptr %a582 - %t584 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t583, ptr %t580 - store { ptr, i64, i64 } %t584, ptr %a585 - call void @finch.drop.arr_str(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a112 - %t587 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 7 - store { ptr, i64, i64 } %t586, ptr %a588 - call void @finch.copy.arr_str(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load { ptr, i64, i64 }, ptr %t587 - store { ptr, i64, i64 } %t590, ptr %t587 - store { ptr, i64, i64 } %t591, ptr %a592 - call void @finch.drop.arr_str(ptr %a592) - %t593 = extractvalue { ptr, i64, i64 } { ptr @.str.220, i64 10, i64 0 }, 0 - %t594 = icmp eq ptr %t593, null - %t595 = select i1 %t594, ptr @.str.221, ptr %t593 - %t596 = call ptr @getenv(ptr %t595) - store { ptr, i64, i64 } zeroinitializer, ptr %a597 - call void @finch_str_from_c(ptr %a597, ptr %t596) - %t598 = load { ptr, i64, i64 }, ptr %a597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t601 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t601, ptr %a602 - call void @finch_str_split(ptr %a603, ptr %a599, ptr %a602) - store { ptr, i64, i64 } %t601, ptr %a604 - call void @finch_str_drop(ptr %a604) - %t605 = load { ptr, i64, i64 }, ptr %a603 - store { ptr, i64, i64 } %t605, ptr %a606 - store i64 0, ptr %a607 - br label %each.cond340 -each.cond340: - %t608 = getelementptr inbounds { ptr, i64, i64 }, ptr %a606, i32 0, i32 1 - %t609 = load i64, ptr %t608 - %t610 = load i64, ptr %a607 - %t611 = icmp slt i64 %t610, %t609 - br i1 %t611, label %each.body341, label %each.end343 -each.body341: - %t612 = load ptr, ptr %a606 - %t613 = getelementptr inbounds { ptr, i64, i64 }, ptr %t612, i64 %t610 - %t614 = load { ptr, i64, i64 }, ptr %t613 - store { ptr, i64, i64 } %t614, ptr %a615 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %a615, i32 0, i32 1 - %t617 = load i64, ptr %t616 - %t618 = icmp sgt i64 %t617, 0 - br i1 %t618, label %then344, label %endif346 -then344: - %t619 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 5 - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %t619, i32 0, i32 1 - %t621 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t621, ptr %a622 - call void @finch_str_copy(ptr %a623, ptr %a622) - %t624 = load { ptr, i64, i64 }, ptr %a623 - %t625 = load i64, ptr %t620 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t619, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t619 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t620 - br label %endif346 -endif346: - br label %each.step342 -each.step342: - %t629 = load i64, ptr %a607 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a607 - br label %each.cond340 -each.end343: - call void @finch.drop.arr_str(ptr %a606) - %t631 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.main.load(ptr %a474, { ptr, i64, i64 } %t631, { ptr, i64, i64 } { ptr @.str.223, i64 0, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a632 - store { ptr, i64, i64 } zeroinitializer, ptr %a633 - %t634 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t634, ptr %a635 - call void @finch.copy.arr_str(ptr %a636, ptr %a635) - %t637 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t637, ptr %a638 - %t639 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t639, ptr %a640 - call void @finch.copy.arr_str(ptr %a641, ptr %a640) - %t642 = load { ptr, i64, i64 }, ptr %a641 - store { ptr, i64, i64 } %t642, ptr %a643 - %t644 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - store i64 0, ptr %a645 - br label %each.cond347 -each.cond347: - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t644, i32 0, i32 1 - %t647 = load i64, ptr %t646 - %t648 = load i64, ptr %a645 - %t649 = icmp slt i64 %t648, %t647 - br i1 %t649, label %each.body348, label %each.end350 -each.body348: - %t650 = load ptr, ptr %t644 - %t651 = getelementptr inbounds %S.ast.Program, ptr %t650, i64 %t648 - %t652 = load %S.ast.Program, ptr %t651 - store %S.ast.Program %t652, ptr %a653 - %t654 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 1 - %t655 = load { ptr, i64, i64 }, ptr %t654 - %t656 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t655) - store { ptr, i64, i64 } %t656, ptr %a657 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t659 = load { ptr, i64, i64 }, ptr %a657 - store i64 -1, ptr %a660 - %t661 = load i64, ptr %t658 - %t662 = load ptr, ptr %a638 - store i64 0, ptr %a663 - br label %find.cond351 -find.cond351: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t661 - br i1 %t665, label %find.body352, label %find.end355 -find.body352: - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t662, i64 %t664 - %t667 = load { ptr, i64, i64 }, ptr %t666 - store { ptr, i64, i64 } %t667, ptr %a668 - store { ptr, i64, i64 } %t659, ptr %a669 - %t670 = call i32 @finch_str_eq(ptr %a668, ptr %a669) - %t671 = icmp ne i32 %t670, 0 - br i1 %t671, label %find.hit353, label %find.next354 -find.hit353: - store i64 %t664, ptr %a660 - br label %find.end355 -find.next354: - %t672 = add i64 %t664, 1 - store i64 %t672, ptr %a663 - br label %find.cond351 -find.end355: - %t673 = load i64, ptr %a660 - %t674 = icmp sge i64 %t673, 0 - %t675 = xor i1 %t674, true - br i1 %t675, label %then356, label %endif358 -then356: - %t676 = getelementptr inbounds { ptr, i64, i64 }, ptr %a638, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t676 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a638, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a638 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t676 - br label %endif358 -endif358: - %t685 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t686 = getelementptr inbounds { ptr, i64, i64 }, ptr %t685, i32 0, i32 1 - %t687 = load i64, ptr %t686 - store i64 0, ptr %a688 - br label %for.cond359 -for.cond359: - %t689 = load i64, ptr %a688 - %t690 = icmp slt i64 %t689, %t687 - br i1 %t690, label %for.body360, label %for.end362 -for.body360: - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t692 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t693 = load i64, ptr %a688 - %t694 = load { ptr, i64, i64 }, ptr %t692 - %t695 = extractvalue { ptr, i64, i64 } %t694, 1 - %t696 = icmp uge i64 %t693, %t695 - br i1 %t696, label %range363, label %inrange364 -range363: - call void @finch_panic_index(ptr @.str.224, i64 266, i64 %t693, i64 %t695) - unreachable -inrange364: - %t697 = extractvalue { ptr, i64, i64 } %t694, 0 - %t698 = getelementptr inbounds { ptr, i64, i64 }, ptr %t697, i64 %t693 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t691 - %t702 = load ptr, ptr %a633 - store i64 0, ptr %a703 - br label %find.cond365 -find.cond365: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body366, label %find.end369 -find.body366: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit367, label %find.next368 -find.hit367: - store i64 %t704, ptr %a700 - br label %find.end369 -find.next368: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond365 -find.end369: - %t713 = load i64, ptr %a700 - %t714 = icmp sge i64 %t713, 0 - %t715 = xor i1 %t714, true - br i1 %t715, label %then370, label %endif372 -then370: - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a633, i32 0, i32 1 - %t717 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t718 = load i64, ptr %a688 - %t719 = load { ptr, i64, i64 }, ptr %t717 - %t720 = extractvalue { ptr, i64, i64 } %t719, 1 - %t721 = icmp uge i64 %t718, %t720 - br i1 %t721, label %range373, label %inrange374 -range373: - call void @finch_panic_index(ptr @.str.225, i64 267, i64 %t718, i64 %t720) - unreachable -inrange374: - %t722 = extractvalue { ptr, i64, i64 } %t719, 0 - %t723 = getelementptr inbounds { ptr, i64, i64 }, ptr %t722, i64 %t718 - %t724 = load { ptr, i64, i64 }, ptr %t723 - store { ptr, i64, i64 } %t724, ptr %a725 - call void @finch_str_copy(ptr %a726, ptr %a725) - %t727 = load { ptr, i64, i64 }, ptr %a726 - %t728 = load i64, ptr %t716 - %t729 = add i64 %t728, 1 - call void @finch_arr_reserve(ptr %a633, i64 %t729, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t730 = load ptr, ptr %a633 - %t731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t730, i64 %t728 - store { ptr, i64, i64 } %t727, ptr %t731 - store i64 %t729, ptr %t716 - %t732 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t733 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 3 - %t734 = load i64, ptr %a688 - %t735 = load { ptr, i64, i64 }, ptr %t733 - %t736 = extractvalue { ptr, i64, i64 } %t735, 1 - %t737 = icmp uge i64 %t734, %t736 - br i1 %t737, label %range375, label %inrange376 -range375: - call void @finch_panic_index(ptr @.str.226, i64 268, i64 %t734, i64 %t736) - unreachable -inrange376: - %t738 = extractvalue { ptr, i64, i64 } %t735, 0 - %t739 = getelementptr inbounds { ptr, i64, i64 }, ptr %t738, i64 %t734 - %t740 = load { ptr, i64, i64 }, ptr %t739 - store { ptr, i64, i64 } %t740, ptr %a741 - call void @finch_str_copy(ptr %a742, ptr %a741) - %t743 = load { ptr, i64, i64 }, ptr %a742 - %t744 = insertvalue %S.cimport.Header zeroinitializer, { ptr, i64, i64 } %t743, 0 - %t745 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 4 - %t746 = load i64, ptr %a688 - %t747 = load { ptr, i64, i64 }, ptr %t745 - %t748 = extractvalue { ptr, i64, i64 } %t747, 1 - %t749 = icmp uge i64 %t746, %t748 - br i1 %t749, label %range377, label %inrange378 -range377: - call void @finch_panic_index(ptr @.str.227, i64 268, i64 %t746, i64 %t748) - unreachable -inrange378: - %t750 = extractvalue { ptr, i64, i64 } %t747, 0 - %t751 = getelementptr inbounds { ptr, i64, i64 }, ptr %t750, i64 %t746 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - %t756 = insertvalue %S.cimport.Header %t744, { ptr, i64, i64 } %t755, 1 - %t757 = load i64, ptr %t732 - %t758 = add i64 %t757, 1 - call void @finch_arr_reserve(ptr %a632, i64 %t758, i64 ptrtoint (ptr getelementptr (%S.cimport.Header, ptr null, i32 1) to i64)) - %t759 = load ptr, ptr %a632 - %t760 = getelementptr inbounds %S.cimport.Header, ptr %t759, i64 %t757 - store %S.cimport.Header %t756, ptr %t760 - store i64 %t758, ptr %t732 - br label %endif372 -endif372: - br label %for.step361 -for.step361: - %t761 = load i64, ptr %a688 - %t762 = add i64 %t761, 1 - store i64 %t762, ptr %a688 - br label %for.cond359 -for.end362: - %t763 = getelementptr inbounds %S.ast.Program, ptr %a653, i32 0, i32 5 - store i64 0, ptr %a764 - br label %each.cond379 -each.cond379: - %t765 = getelementptr inbounds { ptr, i64, i64 }, ptr %t763, i32 0, i32 1 - %t766 = load i64, ptr %t765 - %t767 = load i64, ptr %a764 - %t768 = icmp slt i64 %t767, %t766 - br i1 %t768, label %each.body380, label %each.end382 -each.body380: - %t769 = load ptr, ptr %t763 - %t770 = getelementptr inbounds { ptr, i64, i64 }, ptr %t769, i64 %t767 - %t771 = load { ptr, i64, i64 }, ptr %t770 - store { ptr, i64, i64 } %t771, ptr %a772 - %t773 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t773, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.229, i64 2, i64 0 }, ptr %a776 - %t777 = call i32 @finch_str_ends(ptr %a774, ptr %a776) - %t778 = icmp ne i32 %t777, 0 - br label %logic.from383 -logic.from383: - br i1 %t778, label %logic.end385, label %logic.rhs384 -logic.rhs384: - %t779 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t779, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.231, i64 2, i64 0 }, ptr %a782 - %t783 = call i32 @finch_str_ends(ptr %a780, ptr %a782) - %t784 = icmp ne i32 %t783, 0 - br label %logic.rend386 -logic.rend386: - br label %logic.end385 -logic.end385: - %t785 = phi i1 [ true, %logic.from383 ], [ %t784, %logic.rend386 ] - br label %logic.from387 -logic.from387: - br i1 %t785, label %logic.end389, label %logic.rhs388 -logic.rhs388: - %t786 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t786, ptr %a787 - store { ptr, i64, i64 } { ptr @.str.233, i64 2, i64 0 }, ptr %a789 - %t790 = call i32 @finch_str_ends(ptr %a787, ptr %a789) - %t791 = icmp ne i32 %t790, 0 - br label %logic.rend390 -logic.rend390: - br label %logic.end389 -logic.end389: - %t792 = phi i1 [ true, %logic.from387 ], [ %t791, %logic.rend390 ] - br i1 %t792, label %then391, label %else392 -then391: - %t793 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t794 = load { ptr, i64, i64 }, ptr %a657 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.234, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a795 - %t799 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t798, ptr %a801 - store { ptr, i64, i64 } %t799, ptr %a802 - call void @finch_str_concat(ptr %a800, ptr %a801, ptr %a802) - store { ptr, i64, i64 } %t798, ptr %a803 - call void @finch_str_drop(ptr %a803) - %t804 = load { ptr, i64, i64 }, ptr %a800 - %t805 = load i64, ptr %t793 - %t806 = add i64 %t805, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t806, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t807 = load ptr, ptr %a643 - %t808 = getelementptr inbounds { ptr, i64, i64 }, ptr %t807, i64 %t805 - store { ptr, i64, i64 } %t804, ptr %t808 - store i64 %t806, ptr %t793 - br label %endif393 -else392: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a643, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %a772 - store { ptr, i64, i64 } %t810, ptr %a811 - call void @finch_str_copy(ptr %a812, ptr %a811) - %t813 = load { ptr, i64, i64 }, ptr %a812 - %t814 = load i64, ptr %t809 - %t815 = add i64 %t814, 1 - call void @finch_arr_reserve(ptr %a643, i64 %t815, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t816 = load ptr, ptr %a643 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t814 - store { ptr, i64, i64 } %t813, ptr %t817 - store i64 %t815, ptr %t809 - br label %endif393 -endif393: - br label %each.step381 -each.step381: - %t818 = load i64, ptr %a764 - %t819 = add i64 %t818, 1 - store i64 %t819, ptr %a764 - br label %each.cond379 -each.end382: - call void @finch_str_drop(ptr %a657) - br label %each.step349 -each.step349: - %t820 = load i64, ptr %a645 - %t821 = add i64 %t820, 1 - store i64 %t821, ptr %a645 - br label %each.cond347 -each.end350: - store { ptr, i64, i64 } { ptr @.str.235, i64 0, i64 0 }, ptr %a822 - %t823 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 5 - %t824 = load i1, ptr %t823 - br label %logic.from394 -logic.from394: - br i1 %t824, label %logic.end396, label %logic.rhs395 -logic.rhs395: - %t825 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t826 = load i1, ptr %t825 - br label %logic.rend397 -logic.rend397: - br label %logic.end396 -logic.end396: - %t827 = phi i1 [ true, %logic.from394 ], [ %t826, %logic.rend397 ] - br i1 %t827, label %then398, label %endif400 -then398: - %t828 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 0 - %t829 = load { ptr, i64, i64 }, ptr %t828 - store { ptr, i64, i64 } %t829, ptr %a830 - call void @finch_str_copy(ptr %a831, ptr %a830) - %t832 = load { ptr, i64, i64 }, ptr %a831 - %t833 = load { ptr, i64, i64 }, ptr %a822 - store { ptr, i64, i64 } %t832, ptr %a822 - store { ptr, i64, i64 } %t833, ptr %a834 - call void @finch_str_drop(ptr %a834) - br label %endif400 -endif400: - %t835 = load { ptr, i64, i64 }, ptr %a632 - %t836 = load { ptr, i64, i64 }, ptr %a638 - %t837 = load { ptr, i64, i64 }, ptr %a822 - %t838 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 1 - %t839 = load i1, ptr %t838 - %t840 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 7 - %t841 = load { ptr, i64, i64 }, ptr %t840 - %t842 = call { i1, %S.cimport.CImports, { ptr, i64, i64 } } @finch.cimport.importHeaders({ ptr, i64, i64 } %t835, { ptr, i64, i64 } %t836, { ptr, i64, i64 } %t837, i1 %t839, { ptr, i64, i64 } %t841) - %t843 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 0 - %t844 = xor i1 %t843, true - %t845 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 2 - %t846 = extractvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t842, 1 - br i1 %t844, label %or.failed401, label %or.ok402 -or.failed401: - store { ptr, i64, i64 } %t845, ptr %a847 - %t848 = load { ptr, i64, i64 }, ptr %a847 - %t849 = extractvalue { ptr, i64, i64 } %t848, 1 - %t850 = trunc i64 %t849 to i32 - %t851 = extractvalue { ptr, i64, i64 } %t848, 0 - %t852 = icmp eq ptr %t851, null - %t853 = select i1 %t852, ptr @.str.236, ptr %t851 - %t854 = call i32 (ptr, ...) @printf(ptr @.str.237, i32 %t850, ptr %t853) - %t855 = call i32 (ptr, ...) @printf(ptr @.str.238) - call void @finch_str_drop(ptr %a847) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -or.ok402: - store %S.cimport.CImports %t846, ptr %a856 - %t857 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 0 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = getelementptr inbounds %S.main.Loader, ptr %a474, i32 0, i32 1 - %t860 = load { ptr, i64, i64 }, ptr %t859 - %t861 = load %S.cimport.CImports, ptr %a856 - %t862 = load i1, ptr %a105 - %t863 = insertvalue %S.gen.Options zeroinitializer, i1 %t862, 0 - %t864 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t864, ptr %a865 - store { ptr, i64, i64 } { ptr @.str.239, i64 5, i64 0 }, ptr %a866 - %t867 = call i32 @finch_str_eq(ptr %a865, ptr %a866) - %t868 = icmp ne i32 %t867, 0 - %t869 = insertvalue %S.gen.Options %t863, i1 %t868, 1 - %t870 = load i1, ptr %a106 - %t871 = insertvalue %S.gen.Options %t869, i1 %t870, 2 - %t872 = call { ptr, i64, i64 } @finch.host.cwd() - %t873 = insertvalue %S.gen.Options %t871, { ptr, i64, i64 } %t872, 3 - %t874 = load %S.platform.Target, ptr %a381 - store %S.platform.Target %t874, ptr %a875 - call void @finch.copy.S_platform_Target(ptr %a876, ptr %a875) - %t877 = load %S.platform.Target, ptr %a876 - %t878 = insertvalue %S.gen.Options %t873, %S.platform.Target %t877, 4 - %t879 = call { ptr, i64, i64 } @finch.gen.generate({ ptr, i64, i64 } %t858, { ptr, i64, i64 } %t860, %S.cimport.CImports %t861, %S.gen.Options %t878) - store %S.gen.Options %t878, ptr %a880 - call void @finch.drop.S_gen_Options(ptr %a880) - store { ptr, i64, i64 } %t879, ptr %a881 - %t882 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t882, ptr %a883 - store { ptr, i64, i64 } { ptr @.str.240, i64 2, i64 0 }, ptr %a884 - %t885 = call i32 @finch_str_eq(ptr %a883, ptr %a884) - %t886 = icmp ne i32 %t885, 0 - br label %logic.from409 -logic.from409: - br i1 %t886, label %logic.end411, label %logic.rhs410 -logic.rhs410: - %t887 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t887, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.241, i64 5, i64 0 }, ptr %a889 - %t890 = call i32 @finch_str_eq(ptr %a888, ptr %a889) - %t891 = icmp ne i32 %t890, 0 - br label %logic.rend412 -logic.rend412: - br label %logic.end411 -logic.end411: - %t892 = phi i1 [ true, %logic.from409 ], [ %t891, %logic.rend412 ] - br i1 %t892, label %then413, label %endif415 -then413: - %t893 = load { ptr, i64, i64 }, ptr %a881 - %t894 = extractvalue { ptr, i64, i64 } %t893, 1 - %t895 = trunc i64 %t894 to i32 - %t896 = extractvalue { ptr, i64, i64 } %t893, 0 - %t897 = icmp eq ptr %t896, null - %t898 = select i1 %t897, ptr @.str.242, ptr %t896 - %t899 = call i32 (ptr, ...) @printf(ptr @.str.243, i32 %t895, ptr %t898) - %t900 = call i32 (ptr, ...) @printf(ptr @.str.244) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -endif415: - %t901 = extractvalue { ptr, i64, i64 } { ptr @.str.245, i64 8, i64 0 }, 0 - %t902 = icmp eq ptr %t901, null - %t903 = select i1 %t902, ptr @.str.246, ptr %t901 - %t904 = call ptr @getenv(ptr %t903) - store { ptr, i64, i64 } zeroinitializer, ptr %a905 - call void @finch_str_from_c(ptr %a905, ptr %t904) - %t906 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t906, ptr %a907 - call void @finch_str_copy(ptr %a908, ptr %a907) - %t909 = load { ptr, i64, i64 }, ptr %a908 - store { ptr, i64, i64 } %t909, ptr %a910 - %t911 = getelementptr inbounds { ptr, i64, i64 }, ptr %a910, i32 0, i32 1 - %t912 = load i64, ptr %t911 - %t913 = icmp eq i64 %t912, 0 - br i1 %t913, label %then439, label %endif441 -then439: - %t914 = load { ptr, i64, i64 }, ptr %a1 - %t915 = extractvalue { ptr, i64, i64 } %t914, 1 - %t916 = icmp uge i64 0, %t915 - br i1 %t916, label %range442, label %inrange443 -range442: - call void @finch_panic_index(ptr @.str.247, i64 296, i64 0, i64 %t915) - unreachable -inrange443: - %t917 = extractvalue { ptr, i64, i64 } %t914, 0 - %t918 = getelementptr inbounds { ptr, i64, i64 }, ptr %t917, i64 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - %t920 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t919) - store { ptr, i64, i64 } %t920, ptr %a922 - store { ptr, i64, i64 } { ptr @.str.248, i64 22, i64 0 }, ptr %a923 - call void @finch_str_concat(ptr %a921, ptr %a922, ptr %a923) - store { ptr, i64, i64 } %t920, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load { ptr, i64, i64 }, ptr %a921 - %t926 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t925, ptr %a910 - store { ptr, i64, i64 } %t926, ptr %a927 - call void @finch_str_drop(ptr %a927) - br label %endif441 -endif441: - %t928 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t928, ptr %a929 - %t930 = call i32 @finch_file_exists(ptr %a929) - %t931 = icmp ne i32 %t930, 0 - %t932 = xor i1 %t931, true - br i1 %t932, label %then444, label %endif446 -then444: - %t933 = load { ptr, i64, i64 }, ptr %a1 - %t934 = extractvalue { ptr, i64, i64 } %t933, 1 - %t935 = icmp uge i64 0, %t934 - br i1 %t935, label %range447, label %inrange448 -range447: - call void @finch_panic_index(ptr @.str.249, i64 299, i64 0, i64 %t934) - unreachable -inrange448: - %t936 = extractvalue { ptr, i64, i64 } %t933, 0 - %t937 = getelementptr inbounds { ptr, i64, i64 }, ptr %t936, i64 0 - %t938 = load { ptr, i64, i64 }, ptr %t937 - %t939 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t938) - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.250, i64 19, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t944, ptr %a910 - store { ptr, i64, i64 } %t945, ptr %a946 - call void @finch_str_drop(ptr %a946) - br label %endif446 -endif446: - %t947 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t947, ptr %a948 - %t949 = call i32 @finch_file_exists(ptr %a948) - %t950 = icmp ne i32 %t949, 0 - %t951 = xor i1 %t950, true - br i1 %t951, label %then449, label %endif451 -then449: - %t952 = load { ptr, i64, i64 }, ptr %a1 - %t953 = extractvalue { ptr, i64, i64 } %t952, 1 - %t954 = icmp uge i64 0, %t953 - br i1 %t954, label %range452, label %inrange453 -range452: - call void @finch_panic_index(ptr @.str.251, i64 302, i64 0, i64 %t953) - unreachable -inrange453: - %t955 = extractvalue { ptr, i64, i64 } %t952, 0 - %t956 = getelementptr inbounds { ptr, i64, i64 }, ptr %t955, i64 0 - %t957 = load { ptr, i64, i64 }, ptr %t956 - %t958 = call { ptr, i64, i64 } @finch.main.dirOf({ ptr, i64, i64 } %t957) - store { ptr, i64, i64 } %t958, ptr %a960 - store { ptr, i64, i64 } { ptr @.str.252, i64 34, i64 0 }, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t958, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - %t964 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t963, ptr %a910 - store { ptr, i64, i64 } %t964, ptr %a965 - call void @finch_str_drop(ptr %a965) - br label %endif451 -endif451: - %t966 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t966, ptr %a967 - %t968 = call i32 @finch_file_exists(ptr %a967) - %t969 = icmp ne i32 %t968, 0 - %t970 = xor i1 %t969, true - br label %logic.from454 -logic.from454: - br i1 %t970, label %logic.rhs455, label %logic.end456 -logic.rhs455: - store { ptr, i64, i64 } { ptr @.str.253, i64 18, i64 0 }, ptr %a971 - %t972 = call i32 @finch_file_exists(ptr %a971) - %t973 = icmp ne i32 %t972, 0 - br label %logic.rend457 -logic.rend457: - br label %logic.end456 -logic.end456: - %t974 = phi i1 [ false, %logic.from454 ], [ %t973, %logic.rend457 ] - br i1 %t974, label %then458, label %endif460 -then458: - %t975 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } { ptr @.str.254, i64 18, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t975, ptr %a976 - call void @finch_str_drop(ptr %a976) - br label %endif460 -endif460: - %t977 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t977, ptr %a978 - %t979 = call i32 @finch_file_exists(ptr %a978) - %t980 = icmp ne i32 %t979, 0 - %t981 = xor i1 %t980, true - br i1 %t981, label %then461, label %endif463 -then461: - %t982 = call { ptr, i64, i64 } @finch.main.unpack() - store { ptr, i64, i64 } %t982, ptr %a984 - store { ptr, i64, i64 } { ptr @.str.255, i64 19, i64 0 }, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - store { ptr, i64, i64 } %t982, ptr %a986 - call void @finch_str_drop(ptr %a986) - %t987 = load { ptr, i64, i64 }, ptr %a983 - %t988 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t987, ptr %a910 - store { ptr, i64, i64 } %t988, ptr %a989 - call void @finch_str_drop(ptr %a989) - br label %endif463 -endif463: - store { ptr, i64, i64 } { ptr @.str.256, i64 0, i64 0 }, ptr %a990 - %t991 = load i1, ptr %a105 - br i1 %t991, label %then464, label %endif466 -then464: - %t992 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.257, i64 6, i64 0 }, ptr %a990 - store { ptr, i64, i64 } %t992, ptr %a993 - call void @finch_str_drop(ptr %a993) - br label %endif466 -endif466: - %t994 = load i1, ptr %a106 - br i1 %t994, label %then467, label %endif469 -then467: - %t995 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t995, ptr %a997 - store { ptr, i64, i64 } { ptr @.str.258, i64 3, i64 0 }, ptr %a998 - call void @finch_str_concat(ptr %a996, ptr %a997, ptr %a998) - %t999 = load { ptr, i64, i64 }, ptr %a996 - %t1000 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t999, ptr %a990 - store { ptr, i64, i64 } %t1000, ptr %a1001 - call void @finch_str_drop(ptr %a1001) - br label %endif469 -endif469: - %t1002 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t1002, ptr %a1003 - call void @finch_str_copy(ptr %a1004, ptr %a1003) - %t1005 = load { ptr, i64, i64 }, ptr %a1004 - %t1006 = insertvalue %S.linker.Build zeroinitializer, { ptr, i64, i64 } %t1005, 0 - %t1007 = load { ptr, i64, i64 }, ptr %a881 - store { ptr, i64, i64 } %t1007, ptr %a1008 - call void @finch_str_copy(ptr %a1009, ptr %a1008) - %t1010 = load { ptr, i64, i64 }, ptr %a1009 - %t1011 = insertvalue %S.linker.Build %t1006, { ptr, i64, i64 } %t1010, 1 - %t1012 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t1012, ptr %a1013 - call void @finch_str_copy(ptr %a1014, ptr %a1013) - %t1015 = load { ptr, i64, i64 }, ptr %a1014 - %t1016 = insertvalue %S.linker.Build %t1011, { ptr, i64, i64 } %t1015, 2 - %t1017 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_copy(ptr %a1019, ptr %a1018) - %t1020 = load { ptr, i64, i64 }, ptr %a1019 - %t1021 = insertvalue %S.linker.Build %t1016, { ptr, i64, i64 } %t1020, 3 - %t1022 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t1022, ptr %a1023 - call void @finch_str_copy(ptr %a1024, ptr %a1023) - %t1025 = load { ptr, i64, i64 }, ptr %a1024 - %t1026 = insertvalue %S.linker.Build %t1021, { ptr, i64, i64 } %t1025, 4 - %t1027 = load i1, ptr %a105 - %t1028 = insertvalue %S.linker.Build %t1026, i1 %t1027, 5 - %t1029 = load { ptr, i64, i64 }, ptr %a643 - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch.copy.arr_str(ptr %a1031, ptr %a1030) - %t1032 = load { ptr, i64, i64 }, ptr %a1031 - %t1033 = insertvalue %S.linker.Build %t1028, { ptr, i64, i64 } %t1032, 6 - %t1034 = load %S.platform.Target, ptr %a381 - %t1035 = load %S.cimport.CImports, ptr %a856 - %t1036 = call i64 @finch.linker.build(%S.linker.Build %t1033, %S.platform.Target %t1034, %S.cimport.CImports %t1035) - store %S.linker.Build %t1033, ptr %a1037 - call void @finch.drop.S_linker_Build(ptr %a1037) - %t1038 = icmp ne i64 %t1036, 0 - br i1 %t1038, label %then470, label %endif472 -then470: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 1 -endif472: - %t1039 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t1039, ptr %a1040 - store { ptr, i64, i64 } { ptr @.str.259, i64 3, i64 0 }, ptr %a1041 - %t1042 = call i32 @finch_str_eq(ptr %a1040, ptr %a1041) - %t1043 = icmp ne i32 %t1042, 0 - br i1 %t1043, label %then473, label %endif475 -then473: - store { ptr, i64, i64 } zeroinitializer, ptr %a1044 - store i64 0, ptr %a1045 - br label %each.cond476 -each.cond476: - %t1046 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t1047 = load i64, ptr %t1046 - %t1048 = load i64, ptr %a1045 - %t1049 = icmp slt i64 %t1048, %t1047 - br i1 %t1049, label %each.body477, label %each.end479 -each.body477: - %t1050 = load ptr, ptr %a113 - %t1051 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1050, i64 %t1048 - %t1052 = load { ptr, i64, i64 }, ptr %t1051 - store { ptr, i64, i64 } %t1052, ptr %a1053 - %t1054 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - %t1055 = load { ptr, i64, i64 }, ptr %a1053 - %t1056 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1055) - %t1057 = load i64, ptr %t1054 - %t1058 = add i64 %t1057, 1 - call void @finch_arr_reserve(ptr %a1044, i64 %t1058, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1059 = load ptr, ptr %a1044 - %t1060 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1059, i64 %t1057 - store { ptr, i64, i64 } %t1056, ptr %t1060 - store i64 %t1058, ptr %t1054 - br label %each.step478 -each.step478: - %t1061 = load i64, ptr %a1045 - %t1062 = add i64 %t1061, 1 - store i64 %t1062, ptr %a1045 - br label %each.cond476 -each.end479: - %t1063 = getelementptr inbounds %S.platform.Target, ptr %a381, i32 0, i32 8 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - %t1065 = load { ptr, i64, i64 }, ptr %a103 - %t1066 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t1065) - store { ptr, i64, i64 } %t1064, ptr %a1068 - store { ptr, i64, i64 } %t1066, ptr %a1069 - call void @finch_str_concat(ptr %a1067, ptr %a1068, ptr %a1069) - store { ptr, i64, i64 } %t1066, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - %t1071 = load { ptr, i64, i64 }, ptr %a1067 - store { ptr, i64, i64 } %t1071, ptr %a1073 - store { ptr, i64, i64 } { ptr @.str.260, i64 1, i64 0 }, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1071, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1044, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.261, i64 1, i64 0 }, ptr %a1078 - call void @finch_str_join(ptr %a1079, ptr %a1044, ptr %a1078) - %t1080 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1076, ptr %a1082 - store { ptr, i64, i64 } %t1080, ptr %a1083 - call void @finch_str_concat(ptr %a1081, ptr %a1082, ptr %a1083) - store { ptr, i64, i64 } %t1076, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - store { ptr, i64, i64 } %t1080, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1081 - %t1087 = call i64 @finch.host.run({ ptr, i64, i64 } %t1086) - store { ptr, i64, i64 } %t1086, ptr %a1088 - call void @finch_str_drop(ptr %a1088) - store i64 %t1087, ptr %a1089 - %t1090 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.host.remove({ ptr, i64, i64 } %t1090) - %t1091 = load i64, ptr %a1089 - call void @finch.drop.arr_str(ptr %a1044) - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 %t1091 -endif475: - call void @finch_str_drop(ptr %a990) - call void @finch_str_drop(ptr %a910) - call void @finch_str_drop(ptr %a881) - call void @finch.drop.S_cimport_CImports(ptr %a856) - call void @finch_str_drop(ptr %a822) - call void @finch.drop.arr_str(ptr %a643) - call void @finch.drop.arr_str(ptr %a638) - call void @finch.drop.arr_str(ptr %a633) - call void @finch.drop.arr_S_cimport_Header(ptr %a632) - call void @finch.drop.S_main_Loader(ptr %a474) - call void @finch.drop.S_platform_Target(ptr %a381) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.arr_str(ptr %a112) - call void @finch.drop.arr_str(ptr %a111) - call void @finch.drop.arr_str(ptr %a110) - call void @finch.drop.arr_str(ptr %a109) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a103) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a67) - ret i64 0 -} - -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.from480 -logic.from480: - br i1 %t3, label %logic.rhs481, label %logic.end482 -logic.rhs481: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend483 -logic.rend483: - br label %logic.end482 -logic.end482: - %t6 = phi i1 [ false, %logic.from480 ], [ %t5, %logic.rend483 ] - br label %logic.from484 -logic.from484: - br i1 %t6, label %logic.end486, label %logic.rhs485 -logic.rhs485: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from487 -logic.from487: - br i1 %t8, label %logic.rhs488, label %logic.end489 -logic.rhs488: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend490 -logic.rend490: - br label %logic.end489 -logic.end489: - %t11 = phi i1 [ false, %logic.from487 ], [ %t10, %logic.rend490 ] - br label %logic.rend491 -logic.rend491: - br label %logic.end486 -logic.end486: - %t12 = phi i1 [ true, %logic.from484 ], [ %t11, %logic.rend491 ] - br label %logic.from492 -logic.from492: - br i1 %t12, label %logic.end494, label %logic.rhs493 -logic.rhs493: - %t13 = load i8, ptr %a1 - %t14 = icmp eq i8 %t13, 95 - br label %logic.rend495 -logic.rend495: - br label %logic.end494 -logic.end494: - %t15 = phi i1 [ true, %logic.from492 ], [ %t14, %logic.rend495 ] - 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.from496 -logic.from496: - br i1 %t3, label %logic.rhs497, label %logic.end498 -logic.rhs497: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend499 -logic.rend499: - br label %logic.end498 -logic.end498: - %t6 = phi i1 [ false, %logic.from496 ], [ %t5, %logic.rend499 ] - 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.from500 -logic.from500: - br i1 %t3, label %logic.end502, label %logic.rhs501 -logic.rhs501: - %t4 = load i8, ptr %a1 - %t5 = icmp uge i8 %t4, 97 - br label %logic.from503 -logic.from503: - br i1 %t5, label %logic.rhs504, label %logic.end505 -logic.rhs504: - %t6 = load i8, ptr %a1 - %t7 = icmp ule i8 %t6, 102 - br label %logic.rend506 -logic.rend506: - br label %logic.end505 -logic.end505: - %t8 = phi i1 [ false, %logic.from503 ], [ %t7, %logic.rend506 ] - br label %logic.rend507 -logic.rend507: - br label %logic.end502 -logic.end502: - %t9 = phi i1 [ true, %logic.from500 ], [ %t8, %logic.rend507 ] - br label %logic.from508 -logic.from508: - br i1 %t9, label %logic.end510, label %logic.rhs509 -logic.rhs509: - %t10 = load i8, ptr %a1 - %t11 = icmp uge i8 %t10, 65 - br label %logic.from511 -logic.from511: - br i1 %t11, label %logic.rhs512, label %logic.end513 -logic.rhs512: - %t12 = load i8, ptr %a1 - %t13 = icmp ule i8 %t12, 70 - br label %logic.rend514 -logic.rend514: - br label %logic.end513 -logic.end513: - %t14 = phi i1 [ false, %logic.from511 ], [ %t13, %logic.rend514 ] - br label %logic.rend515 -logic.rend515: - br label %logic.end510 -logic.end510: - %t15 = phi i1 [ true, %logic.from508 ], [ %t14, %logic.rend515 ] - 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.262, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.263, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.264, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.265, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.266, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.267, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.268, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.269, i64 5, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.270, i64 8, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.271, i64 4, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.272, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.273, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.274, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.275, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.276, i64 6, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.277, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.278, i64 2, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.279, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.280, i64 4, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.281, i64 5, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.282, i64 6, i64 0 }, ptr %t24 - %t25 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t26 = insertvalue { ptr, i64, i64 } %t25, i64 21, 1 - %t27 = insertvalue { ptr, i64, i64 } %t26, i64 21, 2 - 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.cond516 -find.cond516: - %t35 = load i64, ptr %a34 - %t36 = icmp slt i64 %t35, %t32 - br i1 %t36, label %find.body517, label %find.end520 -find.body517: - %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.hit518, label %find.next519 -find.hit518: - store i64 %t35, ptr %a31 - br label %find.end520 -find.next519: - %t43 = add i64 %t35, 1 - store i64 %t43, ptr %a34 - br label %find.cond516 -find.end520: - %t44 = load i64, ptr %a31 - %t45 = icmp sge i64 %t44, 0 - call void @finch.drop.arr_str(ptr %a28) - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic521, label %ok522 -panic521: - call void @finch_panic(ptr @.str.283, i64 41, ptr @.str.284) - unreachable -ok522: - %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.285, i64 1, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a9 - %t13 = load i64, ptr %a2 - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.286, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a28, i64 %t27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t26, ptr %a33 - call void @finch_str_drop(ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.287, i64 9, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = trunc i64 %t47 to i32 - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = icmp eq ptr %t49, null - %t51 = select i1 %t50, ptr @.str.288, ptr %t49 - %t52 = call i32 (ptr, ...) @printf(ptr @.str.289, i32 %t48, ptr %t51) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = call i32 (ptr, ...) @printf(ptr @.str.290) - %t55 = trunc i64 1 to i32 - %t56 = call i32 @fflush(ptr null) - call void @exit(i32 %t55) - ret void -} - -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 %panic523, label %ok524 -panic523: - call void @finch_panic(ptr @.str.291, i64 46, ptr @.str.292) - unreachable -ok524: - %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 %panic525, label %ok526 -panic525: - call void @finch_panic(ptr @.str.293, i64 46, ptr @.str.294) - unreachable -ok526: - %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 %then527, label %endif529 -then527: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic530, label %ok531 -panic530: - call void @finch_panic(ptr @.str.295, i64 47, ptr @.str.296) - unreachable -ok531: - %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 %panic532, label %ok533 -panic532: - call void @finch_panic(ptr @.str.297, i64 47, ptr @.str.298) - unreachable -ok533: - %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 %range534, label %inrange535 -range534: - call void @finch_panic_index(ptr @.str.299, i64 47, i64 %t23, i64 %t25) - unreachable -inrange535: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds i8, ptr %t27, i64 %t23 - %t29 = load i8, ptr %t28 - ret i8 %t29 -endif529: - %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 %panic536, label %ok537 -panic536: - call void @finch_panic(ptr @.str.300, i64 53, ptr @.str.301) - unreachable -ok537: - %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 %panic538, label %ok539 -panic538: - call void @finch_panic(ptr @.str.302, i64 53, ptr @.str.303) - unreachable -ok539: - %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 %range540, label %inrange541 -range540: - call void @finch_panic_index(ptr @.str.304, i64 53, i64 %t8, i64 %t10) - unreachable -inrange541: - %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 %then542, label %else543 -then542: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic545, label %ok546 -panic545: - call void @finch_panic(ptr @.str.305, i64 55, ptr @.str.306) - unreachable -ok546: - %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 %panic547, label %ok548 -panic547: - call void @finch_panic(ptr @.str.307, i64 56, ptr @.str.308) - unreachable -ok548: - %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 %panic549, label %ok550 -panic549: - call void @finch_panic(ptr @.str.309, i64 57, ptr @.str.310) - unreachable -ok550: - %t28 = getelementptr inbounds %S.lexer.Lexer, ptr %t26, i32 0, i32 5 - store i1 true, ptr %t28 - br label %endif544 -else543: - %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 %then551, label %endif553 -then551: - %t33 = load ptr, ptr %a1 - %t34 = icmp eq ptr %t33, null - br i1 %t34, label %panic554, label %ok555 -panic554: - call void @finch_panic(ptr @.str.311, i64 59, ptr @.str.312) - unreachable -ok555: - %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 %endif553 -endif553: - br label %endif544 -endif544: - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic556, label %ok557 -panic556: - call void @finch_panic(ptr @.str.313, i64 61, ptr @.str.314) - unreachable -ok557: - %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 - 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.315, i64 2, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.316, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.317, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.318, i64 2, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.319, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.320, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.321, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.322, i64 2, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.323, i64 2, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.324, i64 2, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.325, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.326, i64 2, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.327, i64 2, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.328, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.329, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.330, i64 2, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic558, label %ok559 -panic558: - call void @finch_panic(ptr @.str.331, i64 67, ptr @.str.332) - unreachable -ok559: - %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 %panic560, label %ok561 -panic560: - call void @finch_panic(ptr @.str.333, i64 67, ptr @.str.334) - unreachable -ok561: - %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 %then562, label %endif564 -then562: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic565, label %ok566 -panic565: - call void @finch_panic(ptr @.str.335, i64 68, ptr @.str.336) - unreachable -ok566: - %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 %panic567, label %ok568 -panic567: - call void @finch_panic(ptr @.str.338, i64 68, ptr @.str.339) - unreachable -ok568: - %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 %panic569, label %ok570 -panic569: - call void @finch_panic(ptr @.str.340, i64 68, ptr @.str.341) - unreachable -ok570: - %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.337, i64 68) - %t50 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a23, i32 0, i32 1 - %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.cond571 -find.cond571: - %t58 = load i64, ptr %a57 - %t59 = icmp slt i64 %t58, %t55 - br i1 %t59, label %find.body572, label %find.end575 -find.body572: - %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.hit573, label %find.next574 -find.hit573: - store i64 %t58, ptr %a54 - br label %find.end575 -find.next574: - %t66 = add i64 %t58, 1 - store i64 %t66, ptr %a57 - br label %find.cond571 -find.end575: - %t67 = load i64, ptr %a54 - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then576, label %endif578 -then576: - %t69 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t69 -endif578: - call void @finch_str_drop(ptr %a51) - br label %endif564 -endif564: - store { ptr, i64, i64 } { ptr @.str.342, i64 22, i64 0 }, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic579, label %ok580 -panic579: - call void @finch_panic(ptr @.str.343, i64 74, ptr @.str.344) - unreachable -ok580: - %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 %panic581, label %ok582 -panic581: - call void @finch_panic(ptr @.str.346, i64 74, ptr @.str.347) - unreachable -ok582: - %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 %panic583, label %ok584 -panic583: - call void @finch_panic(ptr @.str.348, i64 74, ptr @.str.349) - unreachable -ok584: - %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.345, 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 %then585, label %endif587 -then585: - %t95 = load { ptr, i64, i64 }, ptr %a87 - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } %t95 -endif587: - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a70) - call void @finch.drop.arr_str(ptr %a23) - ret { ptr, i64, i64 } { ptr @.str.351, i64 0, i64 0 } -} - -define internal i8 @finch.lexer.escape(ptr %p0, i8 %p1) { -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 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i8 %p1, ptr %a2 - %t3 = load i8, ptr %a2 - %t4 = icmp eq i8 %t3, 110 - br i1 %t4, label %then588, label %endif590 -then588: - ret i8 10 -endif590: - %t5 = load i8, ptr %a2 - %t6 = icmp eq i8 %t5, 116 - br i1 %t6, label %then591, label %endif593 -then591: - ret i8 9 -endif593: - %t7 = load i8, ptr %a2 - %t8 = icmp eq i8 %t7, 114 - br i1 %t8, label %then594, label %endif596 -then594: - ret i8 13 -endif596: - %t9 = load i8, ptr %a2 - %t10 = icmp eq i8 %t9, 48 - br i1 %t10, label %then597, label %endif599 -then597: - %t11 = trunc i64 0 to i8 - ret i8 %t11 -endif599: - %t12 = load i8, ptr %a2 - %t13 = icmp eq i8 %t12, 92 - br label %logic.from600 -logic.from600: - br i1 %t13, label %logic.end602, label %logic.rhs601 -logic.rhs601: - %t14 = load i8, ptr %a2 - %t15 = icmp eq i8 %t14, 34 - br label %logic.rend603 -logic.rend603: - br label %logic.end602 -logic.end602: - %t16 = phi i1 [ true, %logic.from600 ], [ %t15, %logic.rend603 ] - br label %logic.from604 -logic.from604: - br i1 %t16, label %logic.end606, label %logic.rhs605 -logic.rhs605: - %t17 = load i8, ptr %a2 - %t18 = icmp eq i8 %t17, 39 - br label %logic.rend607 -logic.rend607: - br label %logic.end606 -logic.end606: - %t19 = phi i1 [ true, %logic.from604 ], [ %t18, %logic.rend607 ] - br i1 %t19, label %then608, label %endif610 -then608: - %t20 = load i8, ptr %a2 - ret i8 %t20 -endif610: - %t21 = load ptr, ptr %a1 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic611, label %ok612 -panic611: - call void @finch_panic(ptr @.str.352, i64 97, ptr @.str.353) - unreachable -ok612: - %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 %panic613, label %ok614 -panic613: - call void @finch_panic(ptr @.str.354, i64 97, ptr @.str.355) - unreachable -ok614: - %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.356, i64 16, i64 0 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - call void @finch.lexer.fail(ptr %t21, i64 %t25, i64 %t30, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load i8, ptr %a2 - ret i8 %t40 -} - -define internal void @finch.copy.S_lexer_Token(ptr %dst, ptr %src) { -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.drop.S_lexer_Lexer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lexer.Lexer, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca i8, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca i8, align 16 - %a471 = alloca i8, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca i64, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca i64, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca %S.lexer.Token, align 16 - %a593 = alloca %S.lexer.Token, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond615 -while.cond615: - %t20 = load ptr, ptr %a18 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic618, label %ok619 -panic618: - call void @finch_panic(ptr @.str.357, i64 105, ptr @.str.358) - unreachable -ok619: - %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 %panic620, label %ok621 -panic620: - call void @finch_panic(ptr @.str.359, i64 105, ptr @.str.360) - unreachable -ok621: - %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.body616, label %while.end617 -while.body616: - %t30 = load ptr, ptr %a18 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic622, label %ok623 -panic622: - call void @finch_panic(ptr @.str.361, i64 106, ptr @.str.362) - unreachable -ok623: - %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 %panic624, label %ok625 -panic624: - call void @finch_panic(ptr @.str.363, i64 106, ptr @.str.364) - unreachable -ok625: - %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 %range626, label %inrange627 -range626: - call void @finch_panic_index(ptr @.str.365, i64 106, i64 %t36, i64 %t38) - unreachable -inrange627: - %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.from628 -logic.from628: - br i1 %t45, label %logic.end630, label %logic.rhs629 -logic.rhs629: - %t46 = load i8, ptr %a43 - %t47 = icmp eq i8 %t46, 9 - br label %logic.rend631 -logic.rend631: - br label %logic.end630 -logic.end630: - %t48 = phi i1 [ true, %logic.from628 ], [ %t47, %logic.rend631 ] - br label %logic.from632 -logic.from632: - br i1 %t48, label %logic.end634, label %logic.rhs633 -logic.rhs633: - %t49 = load i8, ptr %a43 - %t50 = icmp eq i8 %t49, 10 - br label %logic.rend635 -logic.rend635: - br label %logic.end634 -logic.end634: - %t51 = phi i1 [ true, %logic.from632 ], [ %t50, %logic.rend635 ] - br label %logic.from636 -logic.from636: - br i1 %t51, label %logic.end638, label %logic.rhs637 -logic.rhs637: - %t52 = load i8, ptr %a43 - %t53 = icmp eq i8 %t52, 13 - br label %logic.rend639 -logic.rend639: - br label %logic.end638 -logic.end638: - %t54 = phi i1 [ true, %logic.from636 ], [ %t53, %logic.rend639 ] - br i1 %t54, label %then640, label %endif642 -then640: - %t55 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t55) - br label %while.cond615 -endif642: - %t56 = load i8, ptr %a43 - %t57 = icmp eq i8 %t56, 47 - br label %logic.from643 -logic.from643: - br i1 %t57, label %logic.rhs644, label %logic.end645 -logic.rhs644: - %t58 = load ptr, ptr %a18 - %t59 = call i8 @finch.lexer.peek(ptr %t58, i64 1) - %t60 = icmp eq i8 %t59, 47 - br label %logic.rend646 -logic.rend646: - br label %logic.end645 -logic.end645: - %t61 = phi i1 [ false, %logic.from643 ], [ %t60, %logic.rend646 ] - br i1 %t61, label %then647, label %endif649 -then647: - br label %while.cond650 -while.cond650: - %t62 = load ptr, ptr %a18 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic653, label %ok654 -panic653: - call void @finch_panic(ptr @.str.366, i64 112, ptr @.str.367) - unreachable -ok654: - %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 %panic655, label %ok656 -panic655: - call void @finch_panic(ptr @.str.368, i64 112, ptr @.str.369) - unreachable -ok656: - %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.from657 -logic.from657: - br i1 %t71, label %logic.rhs658, label %logic.end659 -logic.rhs658: - %t72 = load ptr, ptr %a18 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic660, label %ok661 -panic660: - call void @finch_panic(ptr @.str.370, i64 112, ptr @.str.371) - unreachable -ok661: - %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 %panic662, label %ok663 -panic662: - call void @finch_panic(ptr @.str.372, i64 112, ptr @.str.373) - unreachable -ok663: - %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 %range664, label %inrange665 -range664: - call void @finch_panic_index(ptr @.str.374, i64 112, i64 %t78, i64 %t80) - unreachable -inrange665: - %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.rend666 -logic.rend666: - br label %logic.end659 -logic.end659: - %t86 = phi i1 [ false, %logic.from657 ], [ %t85, %logic.rend666 ] - br i1 %t86, label %while.body651, label %while.end652 -while.body651: - %t87 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t87) - br label %while.cond650 -while.end652: - br label %while.cond615 -endif649: - %t88 = load i8, ptr %a43 - %t89 = icmp eq i8 %t88, 47 - br label %logic.from667 -logic.from667: - br i1 %t89, label %logic.rhs668, label %logic.end669 -logic.rhs668: - %t90 = load ptr, ptr %a18 - %t91 = call i8 @finch.lexer.peek(ptr %t90, i64 1) - %t92 = icmp eq i8 %t91, 42 - br label %logic.rend670 -logic.rend670: - br label %logic.end669 -logic.end669: - %t93 = phi i1 [ false, %logic.from667 ], [ %t92, %logic.rend670 ] - br i1 %t93, label %then671, label %endif673 -then671: - %t94 = load ptr, ptr %a18 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic674, label %ok675 -panic674: - call void @finch_panic(ptr @.str.375, i64 118, ptr @.str.376) - unreachable -ok675: - %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 %panic676, label %ok677 -panic676: - call void @finch_panic(ptr @.str.377, i64 119, ptr @.str.378) - unreachable -ok677: - %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.cond678 -while.cond678: - %t106 = load ptr, ptr %a18 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic681, label %ok682 -panic681: - call void @finch_panic(ptr @.str.379, i64 122, ptr @.str.380) - unreachable -ok682: - %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 %panic683, label %ok684 -panic683: - call void @finch_panic(ptr @.str.381, i64 122, ptr @.str.382) - unreachable -ok684: - %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.from685 -logic.from685: - br i1 %t115, label %logic.rhs686, label %logic.end687 -logic.rhs686: - %t116 = load ptr, ptr %a18 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic688, label %ok689 -panic688: - call void @finch_panic(ptr @.str.383, i64 122, ptr @.str.384) - unreachable -ok689: - %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 %panic690, label %ok691 -panic690: - call void @finch_panic(ptr @.str.385, i64 122, ptr @.str.386) - unreachable -ok691: - %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 %range692, label %inrange693 -range692: - call void @finch_panic_index(ptr @.str.387, i64 122, i64 %t122, i64 %t124) - unreachable -inrange693: - %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.from694 -logic.from694: - br i1 %t129, label %logic.rhs695, label %logic.end696 -logic.rhs695: - %t130 = load ptr, ptr %a18 - %t131 = call i8 @finch.lexer.peek(ptr %t130, i64 1) - %t132 = icmp eq i8 %t131, 47 - br label %logic.rend697 -logic.rend697: - br label %logic.end696 -logic.end696: - %t133 = phi i1 [ false, %logic.from694 ], [ %t132, %logic.rend697 ] - %t134 = xor i1 %t133, true - br label %logic.rend698 -logic.rend698: - br label %logic.end687 -logic.end687: - %t135 = phi i1 [ false, %logic.from685 ], [ %t134, %logic.rend698 ] - br i1 %t135, label %while.body679, label %while.end680 -while.body679: - %t136 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t136) - br label %while.cond678 -while.end680: - %t137 = load ptr, ptr %a18 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic699, label %ok700 -panic699: - call void @finch_panic(ptr @.str.388, i64 125, ptr @.str.389) - unreachable -ok700: - %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 %panic701, label %ok702 -panic701: - call void @finch_panic(ptr @.str.390, i64 125, ptr @.str.391) - unreachable -ok702: - %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 %then703, label %endif705 -then703: - %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.392, i64 36, i64 0 }) - br label %endif705 -endif705: - %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.cond615 -endif673: - %t152 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.393, i64 0, i64 0 }, 0 - %t153 = insertvalue %S.lexer.Token %t152, { ptr, i64, i64 } { ptr @.str.394, i64 0, i64 0 }, 1 - %t154 = load ptr, ptr %a18 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic706, label %ok707 -panic706: - call void @finch_panic(ptr @.str.395, i64 133, ptr @.str.396) - unreachable -ok707: - %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 %panic708, label %ok709 -panic708: - call void @finch_panic(ptr @.str.397, i64 133, ptr @.str.398) - unreachable -ok709: - %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 %panic710, label %ok711 -panic710: - call void @finch_panic(ptr @.str.399, i64 133, ptr @.str.400) - unreachable -ok711: - %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 %panic712, label %ok713 -panic712: - call void @finch_panic(ptr @.str.401, i64 134, ptr @.str.402) - unreachable -ok713: - %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 %panic714, label %ok715 -panic714: - call void @finch_panic(ptr @.str.403, i64 135, ptr @.str.404) - unreachable -ok715: - %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 %then716, label %else717 -then716: - br label %while.cond719 -while.cond719: - %t180 = load ptr, ptr %a18 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic722, label %ok723 -panic722: - call void @finch_panic(ptr @.str.405, i64 137, ptr @.str.406) - unreachable -ok723: - %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 %panic724, label %ok725 -panic724: - call void @finch_panic(ptr @.str.407, i64 137, ptr @.str.408) - unreachable -ok725: - %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.from726 -logic.from726: - br i1 %t189, label %logic.rhs727, label %logic.end728 -logic.rhs727: - %t190 = load ptr, ptr %a18 - %t191 = icmp eq ptr %t190, null - br i1 %t191, label %panic729, label %ok730 -panic729: - call void @finch_panic(ptr @.str.409, i64 137, ptr @.str.410) - unreachable -ok730: - %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 %panic731, label %ok732 -panic731: - call void @finch_panic(ptr @.str.411, i64 137, ptr @.str.412) - unreachable -ok732: - %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 %range733, label %inrange734 -range733: - call void @finch_panic_index(ptr @.str.413, i64 137, i64 %t196, i64 %t198) - unreachable -inrange734: - %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.from735 -logic.from735: - br i1 %t203, label %logic.end737, label %logic.rhs736 -logic.rhs736: - %t204 = load ptr, ptr %a18 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic738, label %ok739 -panic738: - call void @finch_panic(ptr @.str.414, i64 137, ptr @.str.415) - unreachable -ok739: - %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 %panic740, label %ok741 -panic740: - call void @finch_panic(ptr @.str.416, i64 137, ptr @.str.417) - unreachable -ok741: - %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 %range742, label %inrange743 -range742: - call void @finch_panic_index(ptr @.str.418, i64 137, i64 %t210, i64 %t212) - unreachable -inrange743: - %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.rend744 -logic.rend744: - br label %logic.end737 -logic.end737: - %t218 = phi i1 [ true, %logic.from735 ], [ %t217, %logic.rend744 ] - br label %logic.rend745 -logic.rend745: - br label %logic.end728 -logic.end728: - %t219 = phi i1 [ false, %logic.from726 ], [ %t218, %logic.rend745 ] - br i1 %t219, label %while.body720, label %while.end721 -while.body720: - %t220 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t220) - br label %while.cond719 -while.end721: - %t221 = load ptr, ptr %a18 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic746, label %ok747 -panic746: - call void @finch_panic(ptr @.str.419, i64 140, ptr @.str.420) - unreachable -ok747: - %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 %panic748, label %ok749 -panic748: - call void @finch_panic(ptr @.str.422, i64 140, ptr @.str.423) - unreachable -ok749: - %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.421, i64 140) - %t232 = load { ptr, i64, i64 }, ptr %a226 - %t233 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t232, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } { ptr @.str.424, i64 5, i64 0 }, ptr %t236 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i1 @finch.lexer.isKeyword({ ptr, i64, i64 } %t240) - br i1 %t241, label %then750, label %endif752 -then750: - %t242 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t243, ptr %a245 - call void @finch_str_copy(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - %t248 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t247, ptr %t244 - store { ptr, i64, i64 } %t248, ptr %a249 - call void @finch_str_drop(ptr %a249) - br label %endif752 -endif752: - br label %endif718 -else717: - %t250 = load i8, ptr %a43 - %t251 = call i1 @finch.lexer.isDigit(i8 %t250) - br i1 %t251, label %then753, label %else754 -then753: - %t252 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } { ptr @.str.425, i64 3, i64 0 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load i8, ptr %a43 - %t256 = icmp eq i8 %t255, 48 - br label %logic.from756 -logic.from756: - br i1 %t256, label %logic.rhs757, label %logic.end758 -logic.rhs757: - %t257 = load ptr, ptr %a18 - %t258 = call i8 @finch.lexer.peek(ptr %t257, i64 1) - %t259 = icmp eq i8 %t258, 120 - br label %logic.from759 -logic.from759: - br i1 %t259, label %logic.end761, label %logic.rhs760 -logic.rhs760: - %t260 = load ptr, ptr %a18 - %t261 = call i8 @finch.lexer.peek(ptr %t260, i64 1) - %t262 = icmp eq i8 %t261, 88 - br label %logic.rend762 -logic.rend762: - br label %logic.end761 -logic.end761: - %t263 = phi i1 [ true, %logic.from759 ], [ %t262, %logic.rend762 ] - br label %logic.rend763 -logic.rend763: - br label %logic.end758 -logic.end758: - %t264 = phi i1 [ false, %logic.from756 ], [ %t263, %logic.rend763 ] - br i1 %t264, label %then764, label %else765 -then764: - %t265 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t265) - %t266 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t266) - br label %while.cond767 -while.cond767: - %t267 = load ptr, ptr %a18 - %t268 = icmp eq ptr %t267, null - br i1 %t268, label %panic770, label %ok771 -panic770: - call void @finch_panic(ptr @.str.426, i64 150, ptr @.str.427) - unreachable -ok771: - %t269 = getelementptr inbounds %S.lexer.Lexer, ptr %t267, i32 0, i32 2 - %t270 = load i64, ptr %t269 - %t271 = load ptr, ptr %a18 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic772, label %ok773 -panic772: - call void @finch_panic(ptr @.str.428, i64 150, ptr @.str.429) - unreachable -ok773: - %t273 = getelementptr inbounds %S.lexer.Lexer, ptr %t271, i32 0, i32 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load i64, ptr %t274 - %t276 = icmp slt i64 %t270, %t275 - br label %logic.from774 -logic.from774: - br i1 %t276, label %logic.rhs775, label %logic.end776 -logic.rhs775: - %t277 = load ptr, ptr %a18 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic777, label %ok778 -panic777: - call void @finch_panic(ptr @.str.430, i64 150, ptr @.str.431) - unreachable -ok778: - %t279 = getelementptr inbounds %S.lexer.Lexer, ptr %t277, i32 0, i32 0 - %t280 = load ptr, ptr %a18 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic779, label %ok780 -panic779: - call void @finch_panic(ptr @.str.432, i64 150, ptr @.str.433) - unreachable -ok780: - %t282 = getelementptr inbounds %S.lexer.Lexer, ptr %t280, i32 0, i32 2 - %t283 = load i64, ptr %t282 - %t284 = load { ptr, i64, i64 }, ptr %t279 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range781, label %inrange782 -range781: - call void @finch_panic_index(ptr @.str.434, i64 150, i64 %t283, i64 %t285) - unreachable -inrange782: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds i8, ptr %t287, i64 %t283 - %t289 = load i8, ptr %t288 - %t290 = call i1 @finch.lexer.isHex(i8 %t289) - br label %logic.from783 -logic.from783: - br i1 %t290, label %logic.end785, label %logic.rhs784 -logic.rhs784: - %t291 = load ptr, ptr %a18 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic786, label %ok787 -panic786: - call void @finch_panic(ptr @.str.435, i64 150, ptr @.str.436) - unreachable -ok787: - %t293 = getelementptr inbounds %S.lexer.Lexer, ptr %t291, i32 0, i32 0 - %t294 = load ptr, ptr %a18 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic788, label %ok789 -panic788: - call void @finch_panic(ptr @.str.437, i64 150, ptr @.str.438) - unreachable -ok789: - %t296 = getelementptr inbounds %S.lexer.Lexer, ptr %t294, i32 0, i32 2 - %t297 = load i64, ptr %t296 - %t298 = load { ptr, i64, i64 }, ptr %t293 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range790, label %inrange791 -range790: - call void @finch_panic_index(ptr @.str.439, i64 150, i64 %t297, i64 %t299) - unreachable -inrange791: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds i8, ptr %t301, i64 %t297 - %t303 = load i8, ptr %t302 - %t304 = icmp eq i8 %t303, 95 - br label %logic.rend792 -logic.rend792: - br label %logic.end785 -logic.end785: - %t305 = phi i1 [ true, %logic.from783 ], [ %t304, %logic.rend792 ] - br label %logic.rend793 -logic.rend793: - br label %logic.end776 -logic.end776: - %t306 = phi i1 [ false, %logic.from774 ], [ %t305, %logic.rend793 ] - br i1 %t306, label %while.body768, label %while.end769 -while.body768: - %t307 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t307) - br label %while.cond767 -while.end769: - br label %endif766 -else765: - br label %while.cond794 -while.cond794: - %t308 = load ptr, ptr %a18 - %t309 = icmp eq ptr %t308, null - br i1 %t309, label %panic797, label %ok798 -panic797: - call void @finch_panic(ptr @.str.440, i64 154, ptr @.str.441) - unreachable -ok798: - %t310 = getelementptr inbounds %S.lexer.Lexer, ptr %t308, i32 0, i32 2 - %t311 = load i64, ptr %t310 - %t312 = load ptr, ptr %a18 - %t313 = icmp eq ptr %t312, null - br i1 %t313, label %panic799, label %ok800 -panic799: - call void @finch_panic(ptr @.str.442, i64 154, ptr @.str.443) - unreachable -ok800: - %t314 = getelementptr inbounds %S.lexer.Lexer, ptr %t312, i32 0, i32 0 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = icmp slt i64 %t311, %t316 - br label %logic.from801 -logic.from801: - br i1 %t317, label %logic.rhs802, label %logic.end803 -logic.rhs802: - %t318 = load ptr, ptr %a18 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic804, label %ok805 -panic804: - call void @finch_panic(ptr @.str.444, i64 154, ptr @.str.445) - unreachable -ok805: - %t320 = getelementptr inbounds %S.lexer.Lexer, ptr %t318, i32 0, i32 0 - %t321 = load ptr, ptr %a18 - %t322 = icmp eq ptr %t321, null - br i1 %t322, label %panic806, label %ok807 -panic806: - call void @finch_panic(ptr @.str.446, i64 154, ptr @.str.447) - unreachable -ok807: - %t323 = getelementptr inbounds %S.lexer.Lexer, ptr %t321, i32 0, i32 2 - %t324 = load i64, ptr %t323 - %t325 = load { ptr, i64, i64 }, ptr %t320 - %t326 = extractvalue { ptr, i64, i64 } %t325, 1 - %t327 = icmp uge i64 %t324, %t326 - br i1 %t327, label %range808, label %inrange809 -range808: - call void @finch_panic_index(ptr @.str.448, i64 154, i64 %t324, i64 %t326) - unreachable -inrange809: - %t328 = extractvalue { ptr, i64, i64 } %t325, 0 - %t329 = getelementptr inbounds i8, ptr %t328, i64 %t324 - %t330 = load i8, ptr %t329 - %t331 = call i1 @finch.lexer.isDigit(i8 %t330) - br label %logic.from810 -logic.from810: - br i1 %t331, label %logic.end812, label %logic.rhs811 -logic.rhs811: - %t332 = load ptr, ptr %a18 - %t333 = icmp eq ptr %t332, null - br i1 %t333, label %panic813, label %ok814 -panic813: - call void @finch_panic(ptr @.str.449, i64 154, ptr @.str.450) - unreachable -ok814: - %t334 = getelementptr inbounds %S.lexer.Lexer, ptr %t332, i32 0, i32 0 - %t335 = load ptr, ptr %a18 - %t336 = icmp eq ptr %t335, null - br i1 %t336, label %panic815, label %ok816 -panic815: - call void @finch_panic(ptr @.str.451, i64 154, ptr @.str.452) - unreachable -ok816: - %t337 = getelementptr inbounds %S.lexer.Lexer, ptr %t335, i32 0, i32 2 - %t338 = load i64, ptr %t337 - %t339 = load { ptr, i64, i64 }, ptr %t334 - %t340 = extractvalue { ptr, i64, i64 } %t339, 1 - %t341 = icmp uge i64 %t338, %t340 - br i1 %t341, label %range817, label %inrange818 -range817: - call void @finch_panic_index(ptr @.str.453, i64 154, i64 %t338, i64 %t340) - unreachable -inrange818: - %t342 = extractvalue { ptr, i64, i64 } %t339, 0 - %t343 = getelementptr inbounds i8, ptr %t342, i64 %t338 - %t344 = load i8, ptr %t343 - %t345 = icmp eq i8 %t344, 95 - br label %logic.rend819 -logic.rend819: - br label %logic.end812 -logic.end812: - %t346 = phi i1 [ true, %logic.from810 ], [ %t345, %logic.rend819 ] - br label %logic.rend820 -logic.rend820: - br label %logic.end803 -logic.end803: - %t347 = phi i1 [ false, %logic.from801 ], [ %t346, %logic.rend820 ] - br i1 %t347, label %while.body795, label %while.end796 -while.body795: - %t348 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t348) - br label %while.cond794 -while.end796: - %t349 = load ptr, ptr %a18 - %t350 = call i8 @finch.lexer.peek(ptr %t349, i64 0) - %t351 = icmp eq i8 %t350, 46 - br label %logic.from821 -logic.from821: - br i1 %t351, label %logic.rhs822, label %logic.end823 -logic.rhs822: - %t352 = load ptr, ptr %a18 - %t353 = call i8 @finch.lexer.peek(ptr %t352, i64 1) - %t354 = call i1 @finch.lexer.isDigit(i8 %t353) - br label %logic.rend824 -logic.rend824: - br label %logic.end823 -logic.end823: - %t355 = phi i1 [ false, %logic.from821 ], [ %t354, %logic.rend824 ] - br i1 %t355, label %then825, label %endif827 -then825: - %t356 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t357 = load { ptr, i64, i64 }, ptr %t356 - store { ptr, i64, i64 } { ptr @.str.454, i64 5, i64 0 }, ptr %t356 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_drop(ptr %a358) - %t359 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t359) - br label %while.cond828 -while.cond828: - %t360 = load ptr, ptr %a18 - %t361 = icmp eq ptr %t360, null - br i1 %t361, label %panic831, label %ok832 -panic831: - call void @finch_panic(ptr @.str.455, i64 160, ptr @.str.456) - unreachable -ok832: - %t362 = getelementptr inbounds %S.lexer.Lexer, ptr %t360, i32 0, i32 2 - %t363 = load i64, ptr %t362 - %t364 = load ptr, ptr %a18 - %t365 = icmp eq ptr %t364, null - br i1 %t365, label %panic833, label %ok834 -panic833: - call void @finch_panic(ptr @.str.457, i64 160, ptr @.str.458) - unreachable -ok834: - %t366 = getelementptr inbounds %S.lexer.Lexer, ptr %t364, i32 0, i32 0 - %t367 = getelementptr inbounds { ptr, i64, i64 }, ptr %t366, i32 0, i32 1 - %t368 = load i64, ptr %t367 - %t369 = icmp slt i64 %t363, %t368 - br label %logic.from835 -logic.from835: - br i1 %t369, label %logic.rhs836, label %logic.end837 -logic.rhs836: - %t370 = load ptr, ptr %a18 - %t371 = icmp eq ptr %t370, null - br i1 %t371, label %panic838, label %ok839 -panic838: - call void @finch_panic(ptr @.str.459, i64 160, ptr @.str.460) - unreachable -ok839: - %t372 = getelementptr inbounds %S.lexer.Lexer, ptr %t370, i32 0, i32 0 - %t373 = load ptr, ptr %a18 - %t374 = icmp eq ptr %t373, null - br i1 %t374, label %panic840, label %ok841 -panic840: - call void @finch_panic(ptr @.str.461, i64 160, ptr @.str.462) - unreachable -ok841: - %t375 = getelementptr inbounds %S.lexer.Lexer, ptr %t373, i32 0, i32 2 - %t376 = load i64, ptr %t375 - %t377 = load { ptr, i64, i64 }, ptr %t372 - %t378 = extractvalue { ptr, i64, i64 } %t377, 1 - %t379 = icmp uge i64 %t376, %t378 - br i1 %t379, label %range842, label %inrange843 -range842: - call void @finch_panic_index(ptr @.str.463, i64 160, i64 %t376, i64 %t378) - unreachable -inrange843: - %t380 = extractvalue { ptr, i64, i64 } %t377, 0 - %t381 = getelementptr inbounds i8, ptr %t380, i64 %t376 - %t382 = load i8, ptr %t381 - %t383 = call i1 @finch.lexer.isDigit(i8 %t382) - br label %logic.from844 -logic.from844: - br i1 %t383, label %logic.end846, label %logic.rhs845 -logic.rhs845: - %t384 = load ptr, ptr %a18 - %t385 = icmp eq ptr %t384, null - br i1 %t385, label %panic847, label %ok848 -panic847: - call void @finch_panic(ptr @.str.464, i64 160, ptr @.str.465) - unreachable -ok848: - %t386 = getelementptr inbounds %S.lexer.Lexer, ptr %t384, i32 0, i32 0 - %t387 = load ptr, ptr %a18 - %t388 = icmp eq ptr %t387, null - br i1 %t388, label %panic849, label %ok850 -panic849: - call void @finch_panic(ptr @.str.466, i64 160, ptr @.str.467) - unreachable -ok850: - %t389 = getelementptr inbounds %S.lexer.Lexer, ptr %t387, i32 0, i32 2 - %t390 = load i64, ptr %t389 - %t391 = load { ptr, i64, i64 }, ptr %t386 - %t392 = extractvalue { ptr, i64, i64 } %t391, 1 - %t393 = icmp uge i64 %t390, %t392 - br i1 %t393, label %range851, label %inrange852 -range851: - call void @finch_panic_index(ptr @.str.468, i64 160, i64 %t390, i64 %t392) - unreachable -inrange852: - %t394 = extractvalue { ptr, i64, i64 } %t391, 0 - %t395 = getelementptr inbounds i8, ptr %t394, i64 %t390 - %t396 = load i8, ptr %t395 - %t397 = icmp eq i8 %t396, 95 - br label %logic.rend853 -logic.rend853: - br label %logic.end846 -logic.end846: - %t398 = phi i1 [ true, %logic.from844 ], [ %t397, %logic.rend853 ] - br label %logic.rend854 -logic.rend854: - br label %logic.end837 -logic.end837: - %t399 = phi i1 [ false, %logic.from835 ], [ %t398, %logic.rend854 ] - br i1 %t399, label %while.body829, label %while.end830 -while.body829: - %t400 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t400) - br label %while.cond828 -while.end830: - br label %endif827 -endif827: - br label %endif766 -endif766: - %t401 = load ptr, ptr %a18 - %t402 = icmp eq ptr %t401, null - br i1 %t402, label %panic855, label %ok856 -panic855: - call void @finch_panic(ptr @.str.469, i64 165, ptr @.str.470) - unreachable -ok856: - %t403 = getelementptr inbounds %S.lexer.Lexer, ptr %t401, i32 0, i32 0 - %t404 = load { ptr, i64, i64 }, ptr %t403 - store { ptr, i64, i64 } %t404, ptr %a405 - %t407 = load i64, ptr %a177 - %t408 = load ptr, ptr %a18 - %t409 = icmp eq ptr %t408, null - br i1 %t409, label %panic857, label %ok858 -panic857: - call void @finch_panic(ptr @.str.472, i64 165, ptr @.str.473) - unreachable -ok858: - %t410 = getelementptr inbounds %S.lexer.Lexer, ptr %t408, i32 0, i32 2 - %t411 = load i64, ptr %t410 - call void @finch_str_sub(ptr %a406, ptr %a405, i64 %t407, i64 %t411, ptr @.str.471, i64 165) - %t412 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.475, i64 1, i64 0 }, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.476, i64 0, i64 0 }, ptr %a416 - call void @finch_str_replace(ptr %a414, ptr %a413, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t412, ptr %a418 - call void @finch_str_drop(ptr %a418) - %t419 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t417, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - call void @finch_str_drop(ptr %a421) - br label %endif755 -else754: - %t422 = load i8, ptr %a43 - %t423 = icmp eq i8 %t422, 34 - br label %logic.from859 -logic.from859: - br i1 %t423, label %logic.end861, label %logic.rhs860 -logic.rhs860: - %t424 = load i8, ptr %a43 - %t425 = icmp eq i8 %t424, 39 - br label %logic.rend862 -logic.rend862: - br label %logic.end861 -logic.end861: - %t426 = phi i1 [ true, %logic.from859 ], [ %t425, %logic.rend862 ] - br i1 %t426, label %then863, label %else864 -then863: - %t427 = load i8, ptr %a43 - store i8 %t427, ptr %a428 - %t429 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t430 = load { ptr, i64, i64 }, ptr %t429 - store { ptr, i64, i64 } { ptr @.str.477, i64 6, i64 0 }, ptr %t429 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load i8, ptr %a428 - %t433 = icmp eq i8 %t432, 39 - br i1 %t433, label %then866, label %endif868 -then866: - %t434 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - %t435 = load { ptr, i64, i64 }, ptr %t434 - store { ptr, i64, i64 } { ptr @.str.478, i64 4, i64 0 }, ptr %t434 - store { ptr, i64, i64 } %t435, ptr %a436 - call void @finch_str_drop(ptr %a436) - br label %endif868 -endif868: - %t437 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - br label %while.cond869 -while.cond869: - %t439 = load ptr, ptr %a18 - %t440 = call i8 @finch.lexer.peek(ptr %t439, i64 0) - %t441 = load i8, ptr %a428 - %t442 = icmp ne i8 %t440, %t441 - br i1 %t442, label %while.body870, label %while.end871 -while.body870: - %t443 = load ptr, ptr %a18 - %t444 = call i8 @finch.lexer.peek(ptr %t443, i64 0) - %t445 = trunc i64 0 to i8 - %t446 = icmp eq i8 %t444, %t445 - br label %logic.from872 -logic.from872: - br i1 %t446, label %logic.end874, label %logic.rhs873 -logic.rhs873: - %t447 = load ptr, ptr %a18 - %t448 = call i8 @finch.lexer.peek(ptr %t447, i64 0) - %t449 = icmp eq i8 %t448, 10 - br label %logic.rend875 -logic.rend875: - br label %logic.end874 -logic.end874: - %t450 = phi i1 [ true, %logic.from872 ], [ %t449, %logic.rend875 ] - br i1 %t450, label %then876, label %endif878 -then876: - %t451 = load i8, ptr %a428 - %t452 = icmp eq i8 %t451, 34 - br i1 %t452, label %then879, label %endif881 -then879: - %t453 = load ptr, ptr %a18 - %t454 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t455 = load i64, ptr %t454 - %t456 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t457 = load i64, ptr %t456 - call void @finch.lexer.fail(ptr %t453, i64 %t455, i64 %t457, { ptr, i64, i64 } { ptr @.str.479, i64 34, i64 0 }) - br label %endif881 -endif881: - %t458 = load ptr, ptr %a18 - %t459 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t460 = load i64, ptr %t459 - %t461 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t462 = load i64, ptr %t461 - call void @finch.lexer.fail(ptr %t458, i64 %t460, i64 %t462, { ptr, i64, i64 } { ptr @.str.480, i64 32, i64 0 }) - br label %endif878 -endif878: - %t463 = load ptr, ptr %a18 - %t464 = call i8 @finch.lexer.peek(ptr %t463, i64 0) - store i8 %t464, ptr %a465 - %t466 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t466) - %t467 = load i8, ptr %a465 - %t468 = icmp eq i8 %t467, 92 - br i1 %t468, label %then882, label %endif884 -then882: - %t469 = load ptr, ptr %a18 - %t470 = call i8 @finch.lexer.peek(ptr %t469, i64 0) - store i8 %t470, ptr %a471 - %t472 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t472) - %t473 = load ptr, ptr %a18 - %t474 = load i8, ptr %a471 - %t475 = call i8 @finch.lexer.escape(ptr %t473, i8 %t474) - store i8 %t475, ptr %a465 - br label %endif884 -endif884: - %t476 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - %t477 = load i8, ptr %a465 - call void @finch_str_from_char(ptr %a478, i8 signext %t477) - %t479 = load { ptr, i64, i64 }, ptr %a478 - %t480 = load i64, ptr %t476 - %t481 = add i64 %t480, 1 - call void @finch_arr_reserve(ptr %a438, i64 %t481, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t482 = load ptr, ptr %a438 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i64 %t480 - store { ptr, i64, i64 } %t479, ptr %t483 - store i64 %t481, ptr %t476 - br label %while.cond869 -while.end871: - %t484 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t484) - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %a438, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.481, i64 0, i64 0 }, ptr %a486 - call void @finch_str_join(ptr %a487, ptr %a438, ptr %a486) - %t488 = load { ptr, i64, i64 }, ptr %a487 - %t489 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t490 = load { ptr, i64, i64 }, ptr %t489 - store { ptr, i64, i64 } %t488, ptr %t489 - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load i8, ptr %a428 - %t493 = icmp eq i8 %t492, 39 - br label %logic.from885 -logic.from885: - br i1 %t493, label %logic.rhs886, label %logic.end887 -logic.rhs886: - %t494 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i32 0, i32 1 - %t496 = load i64, ptr %t495 - %t497 = icmp ne i64 %t496, 1 - br label %logic.rend888 -logic.rend888: - br label %logic.end887 -logic.end887: - %t498 = phi i1 [ false, %logic.from885 ], [ %t497, %logic.rend888 ] - br i1 %t498, label %then889, label %endif891 -then889: - %t499 = load ptr, ptr %a18 - %t500 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t501 = load i64, ptr %t500 - %t502 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t503 = load i64, ptr %t502 - call void @finch.lexer.fail(ptr %t499, i64 %t501, i64 %t503, { ptr, i64, i64 } { ptr @.str.482, i64 44, i64 0 }) - br label %endif891 -endif891: - call void @finch.drop.arr_str(ptr %a438) - br label %endif865 -else864: - %t504 = load ptr, ptr %a18 - %t505 = call { ptr, i64, i64 } @finch.lexer.operator(ptr %t504) - store { ptr, i64, i64 } %t505, ptr %a506 - %t507 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t508 = load i64, ptr %t507 - %t509 = icmp eq i64 %t508, 0 - br i1 %t509, label %then892, label %endif894 -then892: - store i64 1, ptr %a510 - %t511 = load i8, ptr %a43 - %t512 = zext i8 %t511 to i64 - %t513 = and i64 %t512, 224 - %t514 = icmp eq i64 %t513, 192 - br i1 %t514, label %then895, label %else896 -then895: - store i64 2, ptr %a510 - br label %endif897 -else896: - %t515 = load i8, ptr %a43 - %t516 = zext i8 %t515 to i64 - %t517 = and i64 %t516, 240 - %t518 = icmp eq i64 %t517, 224 - br i1 %t518, label %then898, label %else899 -then898: - store i64 3, ptr %a510 - br label %endif900 -else899: - %t519 = load i8, ptr %a43 - %t520 = zext i8 %t519 to i64 - %t521 = and i64 %t520, 248 - %t522 = icmp eq i64 %t521, 240 - br i1 %t522, label %then901, label %endif903 -then901: - store i64 4, ptr %a510 - br label %endif903 -endif903: - br label %endif900 -endif900: - br label %endif897 -endif897: - store { ptr, i64, i64 } { ptr @.str.483, i64 0, i64 0 }, ptr %a523 - %t524 = load i8, ptr %a43 - %t525 = zext i8 %t524 to i64 - %t526 = icmp sge i64 %t525, 128 - br i1 %t526, label %then904, label %endif906 -then904: - %t527 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.484, i64 74, i64 0 }, ptr %a523 - store { ptr, i64, i64 } %t527, ptr %a528 - call void @finch_str_drop(ptr %a528) - br label %endif906 -endif906: - %t529 = load ptr, ptr %a18 - %t530 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 2 - %t531 = load i64, ptr %t530 - %t532 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 3 - %t533 = load i64, ptr %t532 - %t534 = load ptr, ptr %a18 - %t535 = icmp eq ptr %t534, null - br i1 %t535, label %panic907, label %ok908 -panic907: - call void @finch_panic(ptr @.str.486, i64 211, ptr @.str.487) - unreachable -ok908: - %t536 = getelementptr inbounds %S.lexer.Lexer, ptr %t534, i32 0, i32 0 - %t537 = load { ptr, i64, i64 }, ptr %t536 - store { ptr, i64, i64 } %t537, ptr %a538 - %t540 = load ptr, ptr %a18 - %t541 = icmp eq ptr %t540, null - br i1 %t541, label %panic909, label %ok910 -panic909: - call void @finch_panic(ptr @.str.489, i64 211, ptr @.str.490) - unreachable -ok910: - %t542 = getelementptr inbounds %S.lexer.Lexer, ptr %t540, i32 0, i32 2 - %t543 = load i64, ptr %t542 - %t544 = load ptr, ptr %a18 - %t545 = icmp eq ptr %t544, null - br i1 %t545, label %panic911, label %ok912 -panic911: - call void @finch_panic(ptr @.str.491, i64 211, ptr @.str.492) - unreachable -ok912: - %t546 = getelementptr inbounds %S.lexer.Lexer, ptr %t544, i32 0, i32 2 - %t547 = load i64, ptr %t546 - %t548 = load i64, ptr %a510 - %t549 = add i64 %t547, %t548 - call void @finch_str_sub(ptr %a539, ptr %a538, i64 %t543, i64 %t549, ptr @.str.488, i64 211) - %t550 = load { ptr, i64, i64 }, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.485, i64 22, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - store { ptr, i64, i64 } %t550, ptr %a554 - call void @finch_str_drop(ptr %a554) - %t555 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t555, ptr %a557 - store { ptr, i64, i64 } { ptr @.str.493, i64 1, i64 0 }, ptr %a558 - call void @finch_str_concat(ptr %a556, ptr %a557, ptr %a558) - store { ptr, i64, i64 } %t555, ptr %a559 - call void @finch_str_drop(ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a556 - %t561 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t560, ptr %a563 - store { ptr, i64, i64 } %t561, ptr %a564 - call void @finch_str_concat(ptr %a562, ptr %a563, ptr %a564) - store { ptr, i64, i64 } %t560, ptr %a565 - call void @finch_str_drop(ptr %a565) - %t566 = load { ptr, i64, i64 }, ptr %a562 - call void @finch.lexer.fail(ptr %t529, i64 %t531, i64 %t533, { ptr, i64, i64 } %t566) - store { ptr, i64, i64 } %t566, ptr %a567 - call void @finch_str_drop(ptr %a567) - call void @finch_str_drop(ptr %a523) - br label %endif894 -endif894: - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %a506, i32 0, i32 1 - %t569 = load i64, ptr %t568 - store i64 0, ptr %a570 - br label %for.cond913 -for.cond913: - %t571 = load i64, ptr %a570 - %t572 = icmp slt i64 %t571, %t569 - br i1 %t572, label %for.body914, label %for.end916 -for.body914: - %t573 = load ptr, ptr %a18 - call void @finch.lexer.advance(ptr %t573) - br label %for.step915 -for.step915: - %t574 = load i64, ptr %a570 - %t575 = add i64 %t574, 1 - store i64 %t575, ptr %a570 - br label %for.cond913 -for.end916: - %t576 = load { ptr, i64, i64 }, ptr %a506 - %t577 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 0 - store { ptr, i64, i64 } %t576, ptr %a578 - call void @finch_str_copy(ptr %a579, ptr %a578) - %t580 = load { ptr, i64, i64 }, ptr %a579 - %t581 = load { ptr, i64, i64 }, ptr %t577 - store { ptr, i64, i64 } %t580, ptr %t577 - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a506 - %t584 = getelementptr inbounds %S.lexer.Token, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t583, ptr %a585 - call void @finch_str_copy(ptr %a586, ptr %a585) - %t587 = load { ptr, i64, i64 }, ptr %a586 - %t588 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t587, ptr %t584 - store { ptr, i64, i64 } %t588, ptr %a589 - call void @finch_str_drop(ptr %a589) - call void @finch_str_drop(ptr %a506) - br label %endif865 -endif865: - br label %endif755 -endif755: - br label %endif718 -endif718: - %t590 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t591 = load %S.lexer.Token, ptr %a169 - store %S.lexer.Token %t591, ptr %a592 - call void @finch.copy.S_lexer_Token(ptr %a593, ptr %a592) - %t594 = load %S.lexer.Token, ptr %a593 - %t595 = load i64, ptr %t590 - %t596 = add i64 %t595, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t596, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t597 = load ptr, ptr %a19 - %t598 = getelementptr inbounds %S.lexer.Token, ptr %t597, i64 %t595 - store %S.lexer.Token %t594, ptr %t598 - store i64 %t596, ptr %t590 - call void @finch.drop.S_lexer_Token(ptr %a169) - br label %while.cond615 -while.end617: - %t599 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t600 = insertvalue %S.lexer.Token zeroinitializer, { ptr, i64, i64 } { ptr @.str.494, i64 3, i64 0 }, 0 - %t601 = insertvalue %S.lexer.Token %t600, { ptr, i64, i64 } { ptr @.str.495, i64 0, i64 0 }, 1 - %t602 = load ptr, ptr %a18 - %t603 = icmp eq ptr %t602, null - br i1 %t603, label %panic917, label %ok918 -panic917: - call void @finch_panic(ptr @.str.496, i64 221, ptr @.str.497) - unreachable -ok918: - %t604 = getelementptr inbounds %S.lexer.Lexer, ptr %t602, i32 0, i32 3 - %t605 = load i64, ptr %t604 - %t606 = insertvalue %S.lexer.Token %t601, i64 %t605, 2 - %t607 = load ptr, ptr %a18 - %t608 = icmp eq ptr %t607, null - br i1 %t608, label %panic919, label %ok920 -panic919: - call void @finch_panic(ptr @.str.498, i64 221, ptr @.str.499) - unreachable -ok920: - %t609 = getelementptr inbounds %S.lexer.Lexer, ptr %t607, i32 0, i32 4 - %t610 = load i64, ptr %t609 - %t611 = insertvalue %S.lexer.Token %t606, i64 %t610, 3 - %t612 = insertvalue %S.lexer.Token %t611, i1 true, 4 - %t613 = load i64, ptr %t599 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t614, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a19 - %t616 = getelementptr inbounds %S.lexer.Token, ptr %t615, i64 %t613 - store %S.lexer.Token %t612, ptr %t616 - store i64 %t614, ptr %t599 - %t617 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.S_lexer_Lexer(ptr %a17) - ret { ptr, i64, i64 } %t617 -} - -define internal %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %p0) { -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.500, i64 5, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 - 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.501, i64 3, i64 0 }, 0 - store %S.ast.Type %t3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %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 - ret %S.ast.Type %t25 -} - -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 - store %S.ast.Type %p0, ptr %a1 - %t2 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.502, i64 3, i64 0 }, 0 - store %S.ast.Type %t2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i32 0, i32 1 - %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 - ret %S.ast.Type %t14 -} - -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 %then921, label %endif923 -then921: - ret i1 false -endif923: - %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.503, i64 6, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp ne i32 %t15, 0 - br label %logic.from924 -logic.from924: - br i1 %t16, label %logic.end926, label %logic.rhs925 -logic.rhs925: - %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.504, i64 5, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br label %logic.rend927 -logic.rend927: - br label %logic.end926 -logic.end926: - %t23 = phi i1 [ true, %logic.from924 ], [ %t22, %logic.rend927 ] - br label %logic.from928 -logic.from928: - br i1 %t23, label %logic.end930, label %logic.rhs929 -logic.rhs929: - %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.505, i64 4, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br label %logic.rend931 -logic.rend931: - br label %logic.end930 -logic.end930: - %t30 = phi i1 [ true, %logic.from928 ], [ %t29, %logic.rend931 ] - br i1 %t30, label %then932, label %endif934 -then932: - %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.from935 -logic.from935: - br i1 %t38, label %logic.rhs936, label %logic.end937 -logic.rhs936: - %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.rend938 -logic.rend938: - br label %logic.end937 -logic.end937: - %t47 = phi i1 [ false, %logic.from935 ], [ %t46, %logic.rend938 ] - ret i1 %t47 -endif934: - %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.506, i64 5, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br label %logic.from939 -logic.from939: - br i1 %t53, label %logic.rhs940, label %logic.end941 -logic.rhs940: - %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.rend942 -logic.rend942: - br label %logic.end941 -logic.end941: - %t59 = phi i1 [ false, %logic.from939 ], [ %t58, %logic.rend942 ] - br i1 %t59, label %then943, label %endif945 -then943: - ret i1 false -endif945: - %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.507, i64 5, i64 0 }, ptr %a63 - %t64 = call i32 @finch_str_eq(ptr %a62, ptr %a63) - %t65 = icmp ne i32 %t64, 0 - br label %logic.from946 -logic.from946: - br i1 %t65, label %logic.end948, label %logic.rhs947 -logic.rhs947: - %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.508, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br label %logic.rend949 -logic.rend949: - br label %logic.end948 -logic.end948: - %t72 = phi i1 [ true, %logic.from946 ], [ %t71, %logic.rend949 ] - br label %logic.from950 -logic.from950: - br i1 %t72, label %logic.end952, label %logic.rhs951 -logic.rhs951: - %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.509, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br label %logic.rend953 -logic.rend953: - br label %logic.end952 -logic.end952: - %t79 = phi i1 [ true, %logic.from950 ], [ %t78, %logic.rend953 ] - br label %logic.from954 -logic.from954: - br i1 %t79, label %logic.end956, label %logic.rhs955 -logic.rhs955: - %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.510, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.rend957 -logic.rend957: - br label %logic.end956 -logic.end956: - %t86 = phi i1 [ true, %logic.from954 ], [ %t85, %logic.rend957 ] - br i1 %t86, label %then958, label %endif960 -then958: - %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 %then961, label %endif963 -then961: - ret i1 false -endif963: - %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.cond964 -for.cond964: - %t98 = load i64, ptr %a97 - %t99 = icmp slt i64 %t98, %t96 - br i1 %t99, label %for.body965, label %for.end967 -for.body965: - %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 %range968, label %inrange969 -range968: - call void @finch_panic_index(ptr @.str.511, i64 54, i64 %t101, i64 %t103) - unreachable -inrange969: - %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 %range970, label %inrange971 -range970: - call void @finch_panic_index(ptr @.str.512, i64 54, i64 %t109, i64 %t111) - unreachable -inrange971: - %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 %then972, label %endif974 -then972: - ret i1 false -endif974: - br label %for.step966 -for.step966: - %t118 = load i64, ptr %a97 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %a97 - br label %for.cond964 -for.end967: - ret i1 true -endif960: - 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 - %a19 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %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 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.513, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then975, label %endif977 -then975: - %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 %range978, label %inrange979 -range978: - call void @finch_panic_index(ptr @.str.515, i64 65, i64 0, i64 %t10) - unreachable -inrange979: - %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.514, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif977: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.516, i64 5, i64 0 }, ptr %a24 - %t25 = call i32 @finch_str_eq(ptr %a23, ptr %a24) - %t26 = icmp ne i32 %t25, 0 - br i1 %t26, label %then980, label %endif982 -then980: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 4 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.517, i64 1, i64 0 }, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.518, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 0, %t43 - br i1 %t44, label %range983, label %inrange984 -range983: - call void @finch_panic_index(ptr @.str.519, i64 68, i64 0, i64 %t43) - unreachable -inrange984: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Type, ptr %t45, i64 0 - %t47 = load %S.ast.Type, ptr %t46 - %t48 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t47) - store { ptr, i64, i64 } %t40, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t40, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - ret { ptr, i64, i64 } %t54 -endif982: - %t55 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.520, i64 3, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then985, label %endif987 -then985: - %t61 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 0, %t63 - br i1 %t64, label %range988, label %inrange989 -range988: - call void @finch_panic_index(ptr @.str.522, i64 71, i64 0, i64 %t63) - unreachable -inrange989: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds %S.ast.Type, ptr %t65, i64 0 - %t67 = load %S.ast.Type, ptr %t66 - %t68 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.521, i64 4, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.523, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = extractvalue { ptr, i64, i64 } %t80, 1 - %t82 = icmp uge i64 1, %t81 - br i1 %t82, label %range990, label %inrange991 -range990: - call void @finch_panic_index(ptr @.str.524, i64 71, i64 1, i64 %t81) - unreachable -inrange991: - %t83 = extractvalue { ptr, i64, i64 } %t80, 0 - %t84 = getelementptr inbounds %S.ast.Type, ptr %t83, i64 1 - %t85 = load %S.ast.Type, ptr %t84 - %t86 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t85) - store { ptr, i64, i64 } %t78, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t78, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - ret { ptr, i64, i64 } %t92 -endif987: - %t93 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t94 = load { ptr, i64, i64 }, ptr %t93 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.525, i64 3, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then992, label %endif994 -then992: - %t99 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = icmp eq i64 %t101, 0 - br i1 %t102, label %then995, label %endif997 -then995: - ret { ptr, i64, i64 } { ptr @.str.526, i64 3, i64 0 } -endif997: - %t103 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %t103 - %t105 = extractvalue { ptr, i64, i64 } %t104, 1 - %t106 = icmp uge i64 0, %t105 - br i1 %t106, label %range998, label %inrange999 -range998: - call void @finch_panic_index(ptr @.str.528, i64 77, i64 0, i64 %t105) - unreachable -inrange999: - %t107 = extractvalue { ptr, i64, i64 } %t104, 0 - %t108 = getelementptr inbounds %S.ast.Type, ptr %t107, i64 0 - %t109 = load %S.ast.Type, ptr %t108 - %t110 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t109) - store { ptr, i64, i64 } { ptr @.str.527, i64 4, i64 0 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.529, i64 1, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t120 -endif994: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t122, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.530, i64 6, i64 0 }, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.from1000 -logic.from1000: - br i1 %t126, label %logic.end1002, label %logic.rhs1001 -logic.rhs1001: - %t127 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.531, i64 5, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_eq(ptr %a129, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend1003 -logic.rend1003: - br label %logic.end1002 -logic.end1002: - %t133 = phi i1 [ true, %logic.from1000 ], [ %t132, %logic.rend1003 ] - br label %logic.from1004 -logic.from1004: - br i1 %t133, label %logic.end1006, label %logic.rhs1005 -logic.rhs1005: - %t134 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.532, i64 4, i64 0 }, ptr %a137 - %t138 = call i32 @finch_str_eq(ptr %a136, ptr %a137) - %t139 = icmp ne i32 %t138, 0 - br label %logic.rend1007 -logic.rend1007: - br label %logic.end1006 -logic.end1006: - %t140 = phi i1 [ true, %logic.from1004 ], [ %t139, %logic.rend1007 ] - br i1 %t140, label %then1008, label %endif1010 -then1008: - %t141 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = icmp sgt i64 %t143, 0 - br i1 %t144, label %then1011, label %endif1013 -then1011: - %t145 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t146 = load { ptr, i64, i64 }, ptr %t145 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.533, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a147 - %t151 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t150, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t150, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - ret { ptr, i64, i64 } %t157 -endif1013: - %t158 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - call void @finch_str_copy(ptr %a161, ptr %a160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - ret { ptr, i64, i64 } %t162 -endif1010: - %t163 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t164 = load { ptr, i64, i64 }, ptr %t163 - store { ptr, i64, i64 } %t164, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.534, i64 4, i64 0 }, ptr %a166 - %t167 = call i32 @finch_str_eq(ptr %a165, ptr %a166) - %t168 = icmp ne i32 %t167, 0 - br i1 %t168, label %then1014, label %endif1016 -then1014: - ret { ptr, i64, i64 } { ptr @.str.535, i64 7, i64 0 } -endif1016: - %t169 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - ret { ptr, i64, i64 } %t173 -} - -define internal void @finch.parser.fail(ptr %p0, %S.lexer.Token %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.lexer.Token %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1017, label %ok1018 -panic1017: - call void @finch_panic(ptr @.str.536, i64 14, ptr @.str.537) - unreachable -ok1018: - %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.538, i64 1, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a8 - %t12 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 2 - %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) - store { ptr, i64, i64 } %t11, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.539, i64 1, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = getelementptr inbounds %S.lexer.Token, ptr %a2, i32 0, i32 3 - %t28 = load i64, ptr %t27 - call void @finch_str_from_int(ptr %a29, i64 %t28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t26, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t26, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.540, i64 9, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t41, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = extractvalue { ptr, i64, i64 } %t47, 1 - %t49 = trunc i64 %t48 to i32 - %t50 = extractvalue { ptr, i64, i64 } %t47, 0 - %t51 = icmp eq ptr %t50, null - %t52 = select i1 %t51, ptr @.str.541, ptr %t50 - %t53 = call i32 (ptr, ...) @printf(ptr @.str.542, i32 %t49, ptr %t52) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = call i32 (ptr, ...) @printf(ptr @.str.543) - %t56 = trunc i64 1 to i32 - %t57 = call i32 @fflush(ptr null) - call void @exit(i32 %t56) - ret void -} - -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 %panic1019, label %ok1020 -panic1019: - call void @finch_panic(ptr @.str.544, i64 19, ptr @.str.545) - unreachable -ok1020: - %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 %panic1021, label %ok1022 -panic1021: - call void @finch_panic(ptr @.str.546, i64 19, ptr @.str.547) - unreachable -ok1022: - %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 %range1023, label %inrange1024 -range1023: - call void @finch_panic_index(ptr @.str.548, i64 19, i64 %t8, i64 %t10) - unreachable -inrange1024: - %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 %panic1025, label %ok1026 -panic1025: - call void @finch_panic(ptr @.str.549, i64 23, ptr @.str.550) - unreachable -ok1026: - %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 %panic1027, label %ok1028 -panic1027: - call void @finch_panic(ptr @.str.551, i64 23, ptr @.str.552) - unreachable -ok1028: - %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 %range1029, label %inrange1030 -range1029: - call void @finch_panic_index(ptr @.str.553, i64 23, i64 %t8, i64 %t10) - unreachable -inrange1030: - %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 %panic1031, label %ok1032 -panic1031: - call void @finch_panic(ptr @.str.554, i64 27, ptr @.str.555) - unreachable -ok1032: - %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 %panic1033, label %ok1034 -panic1033: - call void @finch_panic(ptr @.str.556, i64 28, ptr @.str.557) - unreachable -ok1034: - %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 %then1035, label %endif1037 -then1035: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic1038, label %ok1039 -panic1038: - call void @finch_panic(ptr @.str.558, i64 29, ptr @.str.559) - unreachable -ok1039: - %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 %endif1037 -endif1037: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic1040, label %ok1041 -panic1040: - call void @finch_panic(ptr @.str.560, i64 31, ptr @.str.561) - unreachable -ok1041: - %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 %range1042, label %inrange1043 -range1042: - call void @finch_panic_index(ptr @.str.562, i64 31, i64 %t26, i64 %t28) - unreachable -inrange1043: - %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 %panic1044, label %ok1045 -panic1044: - call void @finch_panic(ptr @.str.563, i64 35, ptr @.str.564) - unreachable -ok1045: - %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 %panic1046, label %ok1047 -panic1046: - call void @finch_panic(ptr @.str.565, i64 35, ptr @.str.566) - unreachable -ok1047: - %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 %range1048, label %inrange1049 -range1048: - call void @finch_panic_index(ptr @.str.567, i64 35, i64 %t9, i64 %t11) - unreachable -inrange1049: - %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 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic1050, label %ok1051 -panic1050: - call void @finch_panic(ptr @.str.568, i64 39, ptr @.str.569) - unreachable -ok1051: - %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 %panic1052, label %ok1053 -panic1052: - call void @finch_panic(ptr @.str.570, i64 39, ptr @.str.571) - unreachable -ok1053: - %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 %range1054, label %inrange1055 -range1054: - call void @finch_panic_index(ptr @.str.572, i64 39, i64 %t8, i64 %t10) - unreachable -inrange1055: - %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 %panic1056, label %ok1057 -panic1056: - call void @finch_panic(ptr @.str.573, i64 40, ptr @.str.574) - unreachable -ok1057: - %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 - ret %S.lexer.Token %t24 -} - -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 %then1058, label %endif1060 -then1058: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1061, label %ok1062 -panic1061: - call void @finch_panic(ptr @.str.575, i64 46, ptr @.str.576) - unreachable -ok1062: - %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 -endif1060: - 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 - %a17 = 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 - %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 - %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 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - store %S.lexer.Token %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.577, i64 5, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - br i1 %t7, label %then1063, label %endif1065 -then1063: - %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.578, i64 1, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.579, i64 1, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - ret { ptr, i64, i64 } %t18 -endif1065: - %t19 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t20 = load { ptr, i64, i64 }, ptr %t19 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.580, i64 3, i64 0 }, ptr %a22 - %t23 = call i32 @finch_str_eq(ptr %a21, ptr %a22) - %t24 = icmp ne i32 %t23, 0 - br i1 %t24, label %then1066, label %endif1068 -then1066: - ret { ptr, i64, i64 } { ptr @.str.581, i64 11, i64 0 } -endif1068: - %t25 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.582, i64 3, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - br label %logic.from1069 -logic.from1069: - br i1 %t30, label %logic.end1071, label %logic.rhs1070 -logic.rhs1070: - %t31 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.583, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.rend1072 -logic.rend1072: - br label %logic.end1071 -logic.end1071: - %t37 = phi i1 [ true, %logic.from1069 ], [ %t36, %logic.rend1072 ] - br i1 %t37, label %then1073, label %endif1075 -then1073: - ret { ptr, i64, i64 } { ptr @.str.584, i64 8, i64 0 } -endif1075: - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t39 = load { ptr, i64, i64 }, ptr %t38 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.585, i64 6, i64 0 }, ptr %a41 - %t42 = call i32 @finch_str_eq(ptr %a40, ptr %a41) - %t43 = icmp ne i32 %t42, 0 - br i1 %t43, label %then1076, label %endif1078 -then1076: - ret { ptr, i64, i64 } { ptr @.str.586, i64 8, i64 0 } -endif1078: - %t44 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.587, i64 4, i64 0 }, ptr %a47 - %t48 = call i32 @finch_str_eq(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - br i1 %t49, label %then1079, label %endif1081 -then1079: - ret { ptr, i64, i64 } { ptr @.str.588, i64 6, i64 0 } -endif1081: - %t50 = getelementptr inbounds %S.lexer.Token, ptr %a1, i32 0, i32 0 - %t51 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } { ptr @.str.589, i64 1, i64 0 }, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.590, i64 1, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - ret { ptr, i64, i64 } %t60 -} - -define internal %S.lexer.Token @finch.parser.expect(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then1082, label %endif1084 -then1082: - %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.591, i64 9, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.592, i64 8, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.cur(ptr %t21) - %t23 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t22) - store %S.lexer.Token %t22, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a26 - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t20, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t23, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.parser.fail(ptr %t8, %S.lexer.Token %t10, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t10, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1084 -endif1084: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - ret %S.lexer.Token %t34 -} - -define internal i1 @finch.parser.sameLine(ptr %p0) { -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 %panic1085, label %ok1086 -panic1085: - call void @finch_panic(ptr @.str.593, i64 79, ptr @.str.594) - unreachable -ok1086: - %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.from1087 -logic.from1087: - br i1 %t6, label %logic.end1089, label %logic.rhs1088 -logic.rhs1088: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic1090, label %ok1091 -panic1090: - call void @finch_panic(ptr @.str.595, i64 79, ptr @.str.596) - unreachable -ok1091: - %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 %panic1092, label %ok1093 -panic1092: - call void @finch_panic(ptr @.str.597, i64 79, ptr @.str.598) - unreachable -ok1093: - %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 %range1094, label %inrange1095 -range1094: - call void @finch_panic_index(ptr @.str.599, i64 79, i64 %t13, i64 %t15) - unreachable -inrange1095: - %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.rend1096 -logic.rend1096: - br label %logic.end1089 -logic.end1089: - %t22 = phi i1 [ true, %logic.from1087 ], [ %t21, %logic.rend1096 ] - 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 %panic1097, label %ok1098 -panic1097: - call void @finch_panic(ptr @.str.600, i64 83, ptr @.str.601) - unreachable -ok1098: - %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 %panic1099, label %ok1100 -panic1099: - call void @finch_panic(ptr @.str.602, i64 83, ptr @.str.603) - unreachable -ok1100: - %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 %range1101, label %inrange1102 -range1101: - call void @finch_panic_index(ptr @.str.604, i64 83, i64 %t9, i64 %t11) - unreachable -inrange1102: - %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 %panic1103, label %ok1104 -panic1103: - call void @finch_panic(ptr @.str.605, i64 84, ptr @.str.606) - unreachable -ok1104: - %t33 = getelementptr inbounds %S.parser.Parser, ptr %t31, i32 0, i32 3 - %t34 = load i64, ptr %t33 - %t35 = insertvalue %S.ast.Node %t30, i64 %t34, 13 - call void @finch.drop.S_lexer_Token(ptr %a19) - ret %S.ast.Node %t35 -} - -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.607, i64 3, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.608, i64 5, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.609, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.610, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.611, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.612, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.613, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.614, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.615, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.616, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.617, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.618, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.619, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.620, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.621, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.622, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t3, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 16, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 16, 2 - 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.cond1105 -find.cond1105: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body1106, label %find.end1109 -find.body1106: - %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.hit1107, label %find.next1108 -find.hit1107: - store i64 %t30, ptr %a26 - br label %find.end1109 -find.next1108: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond1105 -find.end1109: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - call void @finch.drop.arr_str(ptr %a23) - ret i1 %t40 -} - -define internal %S.ast.Type @finch.parser.parseType(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.lexer.Token, align 16 - %a10 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca %S.lexer.Token, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.lexer.Token, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a77 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.lexer.Token, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca %S.lexer.Token, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca %S.lexer.Token, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca %S.lexer.Token, align 16 - %a165 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.accept(ptr %t2, { ptr, i64, i64 } { ptr @.str.623, i64 1, i64 0 }) - br i1 %t3, label %then1110, label %endif1112 -then1110: - %t4 = load ptr, ptr %a1 - %t5 = call %S.lexer.Token @finch.parser.expect(ptr %t4, { ptr, i64, i64 } { ptr @.str.624, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.625, i64 36, i64 0 }) - store %S.lexer.Token %t5, ptr %a6 - call void @finch.drop.S_lexer_Token(ptr %a6) - %t7 = load ptr, ptr %a1 - %t8 = call %S.ast.Type @finch.parser.parseType(ptr %t7) - %t9 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t8) - store %S.ast.Type %t8, ptr %a10 - call void @finch.drop.S_ast_Type(ptr %a10) - ret %S.ast.Type %t9 -endif1112: - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.626, i64 5, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1113, label %endif1115 -then1113: - %t14 = load ptr, ptr %a1 - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.cur(ptr %t15) - %t17 = load ptr, ptr %a1 - %t18 = call %S.lexer.Token @finch.parser.cur(ptr %t17) - %t19 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t18) - store %S.lexer.Token %t18, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - store { ptr, i64, i64 } { ptr @.str.627, i64 11, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.628, i64 56, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.parser.fail(ptr %t14, %S.lexer.Token %t16, { ptr, i64, i64 } %t30) - store %S.lexer.Token %t16, ptr %a31 - call void @finch.drop.S_lexer_Token(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif1115 -endif1115: - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.next(ptr %t33) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.629, i64 3, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br label %logic.from1116 -logic.from1116: - br i1 %t45, label %logic.rhs1117, label %logic.end1118 -logic.rhs1117: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.630, i64 1, i64 0 }) - br label %logic.rend1119 -logic.rend1119: - br label %logic.end1118 -logic.end1118: - %t48 = phi i1 [ false, %logic.from1116 ], [ %t47, %logic.rend1119 ] - br i1 %t48, label %then1120, label %endif1122 -then1120: - %t49 = load ptr, ptr %a1 - %t50 = call %S.lexer.Token @finch.parser.next(ptr %t49) - store %S.lexer.Token %t50, ptr %a51 - call void @finch.drop.S_lexer_Token(ptr %a51) - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - store %S.ast.Type %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.expect(ptr %t55, { ptr, i64, i64 } { ptr @.str.631, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.632, i64 39, i64 0 }) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = load %S.ast.Type, ptr %a54 - %t59 = load ptr, ptr %a1 - %t60 = call %S.ast.Type @finch.parser.parseType(ptr %t59) - %t61 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t58, %S.ast.Type %t60) - store %S.ast.Type %t60, ptr %a62 - call void @finch.drop.S_ast_Type(ptr %a62) - call void @finch.drop.S_ast_Type(ptr %a54) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t61 -endif1122: - %t63 = load { ptr, i64, i64 }, ptr %a40 - %t64 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t63) - br i1 %t64, label %then1123, label %endif1125 -then1123: - %t65 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.633, i64 3, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.from1126 -logic.from1126: - br i1 %t69, label %logic.rhs1127, label %logic.end1128 -logic.rhs1127: - %t70 = load ptr, ptr %a1 - %t71 = call i1 @finch.parser.accept(ptr %t70, { ptr, i64, i64 } { ptr @.str.634, i64 1, i64 0 }) - br label %logic.rend1129 -logic.rend1129: - br label %logic.end1128 -logic.end1128: - %t72 = phi i1 [ false, %logic.from1126 ], [ %t71, %logic.rend1129 ] - br i1 %t72, label %then1130, label %endif1132 -then1130: - %t73 = load ptr, ptr %a1 - %t74 = call %S.ast.Type @finch.parser.parseType(ptr %t73) - %t75 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t74) - store %S.ast.Type %t74, ptr %a76 - call void @finch.drop.S_ast_Type(ptr %a76) - store %S.ast.Type %t75, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.expect(ptr %t78, { ptr, i64, i64 } { ptr @.str.635, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.636, i64 3, i64 0 }) - store %S.lexer.Token %t79, ptr %a80 - call void @finch.drop.S_lexer_Token(ptr %a80) - %t81 = load %S.ast.Type, ptr %a77 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t81 -endif1132: - %t82 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.637, i64 3, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then1133, label %endif1135 -then1133: - %t87 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.638, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t87 -endif1135: - %t88 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.639, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then1136, label %endif1138 -then1136: - %t93 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.640, i64 5, i64 0 }) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t93 -endif1138: - %t94 = load { ptr, i64, i64 }, ptr %a40 - %t95 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } %t94) - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t95 -endif1125: - %t96 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.641, i64 5, i64 0 }, 0 - %t97 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = insertvalue %S.ast.Type %t96, { ptr, i64, i64 } %t100, 2 - store %S.ast.Type %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.at(ptr %t103, { ptr, i64, i64 } { ptr @.str.642, i64 1, i64 0 }) - br label %logic.from1139 -logic.from1139: - br i1 %t104, label %logic.rhs1140, label %logic.end1141 -logic.rhs1140: - %t105 = load ptr, ptr %a1 - %t106 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t105, i64 1) - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.643, i64 5, i64 0 }, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - br label %logic.rend1142 -logic.rend1142: - br label %logic.end1141 -logic.end1141: - %t112 = phi i1 [ false, %logic.from1139 ], [ %t110, %logic.rend1142 ] - br i1 %t112, label %then1143, label %endif1145 -then1143: - %t113 = load ptr, ptr %a1 - %t114 = call %S.lexer.Token @finch.parser.next(ptr %t113) - store %S.lexer.Token %t114, ptr %a115 - call void @finch.drop.S_lexer_Token(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a40 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 3 - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t120, ptr %t117 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load ptr, ptr %a1 - %t124 = call %S.lexer.Token @finch.parser.next(ptr %t123) - %t125 = extractvalue %S.lexer.Token %t124, 1 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - store %S.lexer.Token %t124, ptr %a129 - call void @finch.drop.S_lexer_Token(ptr %a129) - %t130 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t128, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %endif1145 -endif1145: - %t133 = load ptr, ptr %a1 - %t134 = call i1 @finch.parser.at(ptr %t133, { ptr, i64, i64 } { ptr @.str.644, i64 1, i64 0 }) - br label %logic.from1146 -logic.from1146: - br i1 %t134, label %logic.rhs1147, label %logic.end1148 -logic.rhs1147: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1149 -logic.rend1149: - br label %logic.end1148 -logic.end1148: - %t140 = phi i1 [ false, %logic.from1146 ], [ %t139, %logic.rend1149 ] - br label %logic.from1150 -logic.from1150: - br i1 %t140, label %logic.rhs1151, label %logic.end1152 -logic.rhs1151: - %t141 = load ptr, ptr %a1 - %t142 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t141, i64 1) - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.645, i64 1, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_eq(ptr %a143, ptr %a144) - %t146 = icmp eq i32 %t145, 0 - store { ptr, i64, i64 } %t142, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %logic.rend1153 -logic.rend1153: - br label %logic.end1152 -logic.end1152: - %t148 = phi i1 [ false, %logic.from1150 ], [ %t146, %logic.rend1153 ] - br i1 %t148, label %then1154, label %endif1156 -then1154: - %t149 = load ptr, ptr %a1 - %t150 = call %S.lexer.Token @finch.parser.next(ptr %t149) - store %S.lexer.Token %t150, ptr %a151 - call void @finch.drop.S_lexer_Token(ptr %a151) - br label %while.cond1157 -while.cond1157: - br label %while.body1158 -while.body1158: - %t152 = getelementptr inbounds %S.ast.Type, ptr %a102, i32 0, i32 1 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i32 0, i32 1 - %t154 = load ptr, ptr %a1 - %t155 = call %S.ast.Type @finch.parser.parseType(ptr %t154) - %t156 = load i64, ptr %t153 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t152, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t152 - %t159 = getelementptr inbounds %S.ast.Type, ptr %t158, i64 %t156 - store %S.ast.Type %t155, ptr %t159 - store i64 %t157, ptr %t153 - %t160 = load ptr, ptr %a1 - %t161 = call i1 @finch.parser.accept(ptr %t160, { ptr, i64, i64 } { ptr @.str.646, i64 1, i64 0 }) - %t162 = xor i1 %t161, true - br i1 %t162, label %then1160, label %endif1162 -then1160: - br label %while.end1159 -endif1162: - br label %while.cond1157 -while.end1159: - %t163 = load ptr, ptr %a1 - %t164 = call %S.lexer.Token @finch.parser.expect(ptr %t163, { ptr, i64, i64 } { ptr @.str.647, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.648, i64 28, i64 0 }) - store %S.lexer.Token %t164, ptr %a165 - call void @finch.drop.S_lexer_Token(ptr %a165) - br label %endif1156 -endif1156: - %t166 = load %S.ast.Type, ptr %a102 - call void @finch_str_drop(ptr %a40) - ret %S.ast.Type %t166 -} - -define internal i1 @finch.parser.genericDeclAhead(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a27 = alloca i64, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.649, i64 5, i64 0 }) - %t4 = xor i1 %t3, true - br label %logic.from1163 -logic.from1163: - br i1 %t4, label %logic.end1165, label %logic.rhs1164 -logic.rhs1164: - %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.650, i64 1, i64 0 }, ptr %a8 - %t9 = call i32 @finch_str_eq(ptr %a7, ptr %a8) - %t10 = icmp eq i32 %t9, 0 - store { ptr, i64, i64 } %t6, ptr %a11 - call void @finch_str_drop(ptr %a11) - br label %logic.rend1166 -logic.rend1166: - br label %logic.end1165 -logic.end1165: - %t12 = phi i1 [ true, %logic.from1163 ], [ %t10, %logic.rend1166 ] - br label %logic.from1167 -logic.from1167: - br i1 %t12, label %logic.end1169, label %logic.rhs1168 -logic.rhs1168: - %t13 = load ptr, ptr %a1 - %t14 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t13, i64 2) - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.651, i64 1, i64 0 }, ptr %a16 - %t17 = call i32 @finch_str_eq(ptr %a15, ptr %a16) - %t18 = icmp ne i32 %t17, 0 - store { ptr, i64, i64 } %t14, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %logic.rend1170 -logic.rend1170: - br label %logic.end1169 -logic.end1169: - %t20 = phi i1 [ true, %logic.from1167 ], [ %t18, %logic.rend1170 ] - br i1 %t20, label %then1171, label %endif1173 -then1171: - ret i1 false -endif1173: - store i64 0, ptr %a21 - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1174, label %ok1175 -panic1174: - call void @finch_panic(ptr @.str.652, i64 148, ptr @.str.653) - unreachable -ok1175: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a27 - br label %while.cond1176 -while.cond1176: - %t28 = load i64, ptr %a27 - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic1179, label %ok1180 -panic1179: - call void @finch_panic(ptr @.str.654, i64 149, ptr @.str.655) - unreachable -ok1180: - %t31 = getelementptr inbounds %S.parser.Parser, ptr %t29, i32 0, i32 0 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = icmp slt i64 %t28, %t33 - br i1 %t34, label %while.body1177, label %while.end1178 -while.body1177: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1181, label %ok1182 -panic1181: - call void @finch_panic(ptr @.str.656, i64 150, ptr @.str.657) - unreachable -ok1182: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 0 - %t38 = load i64, ptr %a27 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range1183, label %inrange1184 -range1183: - call void @finch_panic_index(ptr @.str.658, i64 150, i64 %t38, i64 %t40) - unreachable -inrange1184: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds %S.lexer.Token, ptr %t42, i64 %t38 - %t44 = getelementptr inbounds %S.lexer.Token, ptr %t43, i32 0, i32 0 - %t45 = load { ptr, i64, i64 }, ptr %t44 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_copy(ptr %a47, ptr %a46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t48, ptr %a49 - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.659, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1185, label %else1186 -then1185: - %t55 = load i64, ptr %a21 - %t56 = add i64 %t55, 1 - store i64 %t56, ptr %a21 - br label %endif1187 -else1186: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.660, i64 1, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br i1 %t61, label %then1188, label %else1189 -then1188: - %t62 = load i64, ptr %a21 - %t63 = sub i64 %t62, 1 - store i64 %t63, ptr %a21 - %t64 = load i64, ptr %a21 - %t65 = icmp eq i64 %t64, 0 - br i1 %t65, label %then1191, label %endif1193 -then1191: - %t66 = load i64, ptr %a27 - %t67 = add i64 %t66, 1 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic1194, label %ok1195 -panic1194: - call void @finch_panic(ptr @.str.661, i64 156, ptr @.str.662) - unreachable -ok1195: - %t70 = getelementptr inbounds %S.parser.Parser, ptr %t68, i32 0, i32 0 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = icmp slt i64 %t67, %t72 - br label %logic.from1196 -logic.from1196: - br i1 %t73, label %logic.rhs1197, label %logic.end1198 -logic.rhs1197: - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic1199, label %ok1200 -panic1199: - call void @finch_panic(ptr @.str.663, i64 156, ptr @.str.664) - unreachable -ok1200: - %t76 = getelementptr inbounds %S.parser.Parser, ptr %t74, i32 0, i32 0 - %t77 = load i64, ptr %a27 - %t78 = add i64 %t77, 1 - %t79 = load { ptr, i64, i64 }, ptr %t76 - %t80 = extractvalue { ptr, i64, i64 } %t79, 1 - %t81 = icmp uge i64 %t78, %t80 - br i1 %t81, label %range1201, label %inrange1202 -range1201: - call void @finch_panic_index(ptr @.str.665, i64 156, i64 %t78, i64 %t80) - unreachable -inrange1202: - %t82 = extractvalue { ptr, i64, i64 } %t79, 0 - %t83 = getelementptr inbounds %S.lexer.Token, ptr %t82, i64 %t78 - %t84 = getelementptr inbounds %S.lexer.Token, ptr %t83, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.666, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.rend1203 -logic.rend1203: - br label %logic.end1198 -logic.end1198: - %t90 = phi i1 [ false, %logic.from1196 ], [ %t89, %logic.rend1203 ] - br label %logic.from1204 -logic.from1204: - br i1 %t90, label %logic.rhs1205, label %logic.end1206 -logic.rhs1205: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic1207, label %ok1208 -panic1207: - call void @finch_panic(ptr @.str.667, i64 156, ptr @.str.668) - unreachable -ok1208: - %t93 = getelementptr inbounds %S.parser.Parser, ptr %t91, i32 0, i32 0 - %t94 = load i64, ptr %a27 - %t95 = add i64 %t94, 1 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range1209, label %inrange1210 -range1209: - call void @finch_panic_index(ptr @.str.669, i64 156, i64 %t95, i64 %t97) - unreachable -inrange1210: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds %S.lexer.Token, ptr %t99, i64 %t95 - %t101 = getelementptr inbounds %S.lexer.Token, ptr %t100, i32 0, i32 4 - %t102 = load i1, ptr %t101 - %t103 = xor i1 %t102, true - br label %logic.rend1211 -logic.rend1211: - br label %logic.end1206 -logic.end1206: - %t104 = phi i1 [ false, %logic.from1204 ], [ %t103, %logic.rend1211 ] - call void @finch_str_drop(ptr %a49) - ret i1 %t104 -endif1193: - br label %endif1190 -else1189: - %t105 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t105, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.670, i64 3, i64 0 }, ptr %a107 - %t108 = call i32 @finch_str_eq(ptr %a106, ptr %a107) - %t109 = icmp ne i32 %t108, 0 - br label %logic.from1212 -logic.from1212: - br i1 %t109, label %logic.end1214, label %logic.rhs1213 -logic.rhs1213: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic1215, label %ok1216 -panic1215: - call void @finch_panic(ptr @.str.671, i64 158, ptr @.str.672) - unreachable -ok1216: - %t112 = getelementptr inbounds %S.parser.Parser, ptr %t110, i32 0, i32 0 - %t113 = load i64, ptr %a27 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range1217, label %inrange1218 -range1217: - call void @finch_panic_index(ptr @.str.673, i64 158, i64 %t113, i64 %t115) - unreachable -inrange1218: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.lexer.Token, ptr %t117, i64 %t113 - %t119 = getelementptr inbounds %S.lexer.Token, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.from1219 -logic.from1219: - br i1 %t120, label %logic.rhs1220, label %logic.end1221 -logic.rhs1220: - %t121 = load i64, ptr %a21 - %t122 = icmp eq i64 %t121, 0 - br label %logic.rend1222 -logic.rend1222: - br label %logic.end1221 -logic.end1221: - %t123 = phi i1 [ false, %logic.from1219 ], [ %t122, %logic.rend1222 ] - br label %logic.rend1223 -logic.rend1223: - br label %logic.end1214 -logic.end1214: - %t124 = phi i1 [ true, %logic.from1212 ], [ %t123, %logic.rend1223 ] - br i1 %t124, label %then1224, label %endif1226 -then1224: - call void @finch_str_drop(ptr %a49) - ret i1 false -endif1226: - br label %endif1190 -endif1190: - br label %endif1187 -endif1187: - %t125 = load i64, ptr %a27 - %t126 = add i64 %t125, 1 - store i64 %t126, ptr %a27 - call void @finch_str_drop(ptr %a49) - br label %while.cond1176 -while.end1178: - 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 %panic1227, label %ok1228 -panic1227: - call void @finch_panic(ptr @.str.674, i64 168, ptr @.str.675) - unreachable -ok1228: - %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 %panic1229, label %ok1230 -panic1229: - call void @finch_panic(ptr @.str.676, i64 170, ptr @.str.677) - unreachable -ok1230: - %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 - %a8 = 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 i64, align 16 - %a39 = alloca i64, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t2, i64 1) - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.678, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_eq(ptr %a4, ptr %a5) - %t7 = icmp eq i32 %t6, 0 - store { ptr, i64, i64 } %t3, ptr %a8 - call void @finch_str_drop(ptr %a8) - br label %logic.from1231 -logic.from1231: - br i1 %t7, label %logic.end1233, label %logic.rhs1232 -logic.rhs1232: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic1234, label %ok1235 -panic1234: - call void @finch_panic(ptr @.str.679, i64 176, ptr @.str.680) - unreachable -ok1235: - %t11 = getelementptr inbounds %S.parser.Parser, ptr %t9, i32 0, i32 0 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic1236, label %ok1237 -panic1236: - call void @finch_panic(ptr @.str.681, i64 176, ptr @.str.682) - unreachable -ok1237: - %t14 = getelementptr inbounds %S.parser.Parser, ptr %t12, i32 0, i32 1 - %t15 = load i64, ptr %t14 - %t16 = add i64 %t15, 1 - %t17 = load { ptr, i64, i64 }, ptr %t11 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range1238, label %inrange1239 -range1238: - call void @finch_panic_index(ptr @.str.683, i64 176, i64 %t16, i64 %t18) - unreachable -inrange1239: - %t20 = extractvalue { ptr, i64, i64 } %t17, 0 - %t21 = getelementptr inbounds %S.lexer.Token, ptr %t20, i64 %t16 - %t22 = getelementptr inbounds %S.lexer.Token, ptr %t21, i32 0, i32 4 - %t23 = load i1, ptr %t22 - br label %logic.rend1240 -logic.rend1240: - br label %logic.end1233 -logic.end1233: - %t24 = phi i1 [ true, %logic.from1231 ], [ %t23, %logic.rend1240 ] - br label %logic.from1241 -logic.from1241: - br i1 %t24, label %logic.end1243, label %logic.rhs1242 -logic.rhs1242: - %t25 = load ptr, ptr %a1 - %t26 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t25, i64 2) - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.684, i64 1, i64 0 }, ptr %a28 - %t29 = call i32 @finch_str_eq(ptr %a27, ptr %a28) - %t30 = icmp ne i32 %t29, 0 - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %logic.rend1244 -logic.rend1244: - br label %logic.end1243 -logic.end1243: - %t32 = phi i1 [ true, %logic.from1241 ], [ %t30, %logic.rend1244 ] - br i1 %t32, label %then1245, label %endif1247 -then1245: - ret i1 false -endif1247: - store i64 0, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic1248, label %ok1249 -panic1248: - call void @finch_panic(ptr @.str.685, i64 180, ptr @.str.686) - unreachable -ok1249: - %t36 = getelementptr inbounds %S.parser.Parser, ptr %t34, i32 0, i32 1 - %t37 = load i64, ptr %t36 - %t38 = add i64 %t37, 1 - store i64 %t38, ptr %a39 - br label %while.cond1250 -while.cond1250: - %t40 = load i64, ptr %a39 - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic1253, label %ok1254 -panic1253: - call void @finch_panic(ptr @.str.687, i64 181, ptr @.str.688) - unreachable -ok1254: - %t43 = getelementptr inbounds %S.parser.Parser, ptr %t41, i32 0, i32 0 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - %t46 = icmp slt i64 %t40, %t45 - br i1 %t46, label %while.body1251, label %while.end1252 -while.body1251: - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic1255, label %ok1256 -panic1255: - call void @finch_panic(ptr @.str.689, i64 182, ptr @.str.690) - unreachable -ok1256: - %t49 = getelementptr inbounds %S.parser.Parser, ptr %t47, i32 0, i32 0 - %t50 = load i64, ptr %a39 - %t51 = load { ptr, i64, i64 }, ptr %t49 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 %t50, %t52 - br i1 %t53, label %range1257, label %inrange1258 -range1257: - call void @finch_panic_index(ptr @.str.691, i64 182, i64 %t50, i64 %t52) - unreachable -inrange1258: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.lexer.Token, ptr %t54, i64 %t50 - %t56 = getelementptr inbounds %S.lexer.Token, ptr %t55, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_copy(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.692, i64 1, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then1259, label %else1260 -then1259: - %t67 = load i64, ptr %a33 - %t68 = add i64 %t67, 1 - store i64 %t68, ptr %a33 - br label %endif1261 -else1260: - %t69 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.693, i64 1, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp ne i32 %t72, 0 - br i1 %t73, label %then1262, label %else1263 -then1262: - %t74 = load i64, ptr %a33 - %t75 = sub i64 %t74, 1 - store i64 %t75, ptr %a33 - %t76 = load i64, ptr %a33 - %t77 = icmp eq i64 %t76, 0 - br i1 %t77, label %then1265, label %endif1267 -then1265: - %t78 = load i64, ptr %a39 - %t79 = add i64 %t78, 1 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic1268, label %ok1269 -panic1268: - call void @finch_panic(ptr @.str.694, i64 188, ptr @.str.695) - unreachable -ok1269: - %t82 = getelementptr inbounds %S.parser.Parser, ptr %t80, i32 0, i32 0 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - %t84 = load i64, ptr %t83 - %t85 = icmp slt i64 %t79, %t84 - br label %logic.from1270 -logic.from1270: - br i1 %t85, label %logic.rhs1271, label %logic.end1272 -logic.rhs1271: - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic1273, label %ok1274 -panic1273: - call void @finch_panic(ptr @.str.696, i64 188, ptr @.str.697) - unreachable -ok1274: - %t88 = getelementptr inbounds %S.parser.Parser, ptr %t86, i32 0, i32 0 - %t89 = load i64, ptr %a39 - %t90 = add i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %t88 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range1275, label %inrange1276 -range1275: - call void @finch_panic_index(ptr @.str.698, i64 188, i64 %t90, i64 %t92) - unreachable -inrange1276: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds %S.lexer.Token, ptr %t94, i64 %t90 - %t96 = getelementptr inbounds %S.lexer.Token, ptr %t95, i32 0, i32 0 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - store { ptr, i64, i64 } { ptr @.str.699, i64 1, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_eq(ptr %a98, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.rend1277 -logic.rend1277: - br label %logic.end1272 -logic.end1272: - %t102 = phi i1 [ false, %logic.from1270 ], [ %t101, %logic.rend1277 ] - br label %logic.from1278 -logic.from1278: - br i1 %t102, label %logic.rhs1279, label %logic.end1280 -logic.rhs1279: - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic1281, label %ok1282 -panic1281: - call void @finch_panic(ptr @.str.700, i64 188, ptr @.str.701) - unreachable -ok1282: - %t105 = getelementptr inbounds %S.parser.Parser, ptr %t103, i32 0, i32 0 - %t106 = load i64, ptr %a39 - %t107 = add i64 %t106, 1 - %t108 = load { ptr, i64, i64 }, ptr %t105 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 %t107, %t109 - br i1 %t110, label %range1283, label %inrange1284 -range1283: - call void @finch_panic_index(ptr @.str.702, i64 188, i64 %t107, i64 %t109) - unreachable -inrange1284: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.lexer.Token, ptr %t111, i64 %t107 - %t113 = getelementptr inbounds %S.lexer.Token, ptr %t112, i32 0, i32 4 - %t114 = load i1, ptr %t113 - %t115 = xor i1 %t114, true - br label %logic.rend1285 -logic.rend1285: - br label %logic.end1280 -logic.end1280: - %t116 = phi i1 [ false, %logic.from1278 ], [ %t115, %logic.rend1285 ] - call void @finch_str_drop(ptr %a61) - ret i1 %t116 -endif1267: - br label %endif1264 -else1263: - %t117 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.703, i64 3, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.from1286 -logic.from1286: - br i1 %t121, label %logic.end1288, label %logic.rhs1287 -logic.rhs1287: - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic1289, label %ok1290 -panic1289: - call void @finch_panic(ptr @.str.704, i64 190, ptr @.str.705) - unreachable -ok1290: - %t124 = getelementptr inbounds %S.parser.Parser, ptr %t122, i32 0, i32 0 - %t125 = load i64, ptr %a39 - %t126 = load { ptr, i64, i64 }, ptr %t124 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 %t125, %t127 - br i1 %t128, label %range1291, label %inrange1292 -range1291: - call void @finch_panic_index(ptr @.str.706, i64 190, i64 %t125, i64 %t127) - unreachable -inrange1292: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.lexer.Token, ptr %t129, i64 %t125 - %t131 = getelementptr inbounds %S.lexer.Token, ptr %t130, i32 0, i32 4 - %t132 = load i1, ptr %t131 - br label %logic.rend1293 -logic.rend1293: - br label %logic.end1288 -logic.end1288: - %t133 = phi i1 [ true, %logic.from1286 ], [ %t132, %logic.rend1293 ] - br i1 %t133, label %then1294, label %endif1296 -then1294: - call void @finch_str_drop(ptr %a61) - ret i1 false -endif1296: - br label %endif1264 -endif1264: - br label %endif1261 -endif1261: - %t134 = load i64, ptr %a39 - %t135 = add i64 %t134, 1 - store i64 %t135, ptr %a39 - call void @finch_str_drop(ptr %a61) - br label %while.cond1250 -while.end1252: - 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 - %a12 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.lexer.Token, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.lexer.Token, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.genericDeclAhead(ptr %t2) - br i1 %t3, label %then1297, label %endif1299 -then1297: - ret i1 true -endif1299: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.707, i64 1, i64 0 }) - br i1 %t5, label %then1300, label %endif1302 -then1300: - %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.708, i64 1, i64 0 }, ptr %a9 - %t10 = call i32 @finch_str_eq(ptr %a8, ptr %a9) - %t11 = icmp ne i32 %t10, 0 - store { ptr, i64, i64 } %t7, ptr %a12 - call void @finch_str_drop(ptr %a12) - ret i1 %t11 -endif1302: - %t13 = load ptr, ptr %a1 - %t14 = call i1 @finch.parser.at(ptr %t13, { ptr, i64, i64 } { ptr @.str.709, i64 5, i64 0 }) - %t15 = xor i1 %t14, true - br i1 %t15, label %then1303, label %endif1305 -then1303: - ret i1 false -endif1305: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t16, i64 1) - store { ptr, i64, i64 } %t17, ptr %a18 - %t19 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.710, i64 5, i64 0 }, ptr %a21 - %t22 = call i32 @finch_str_eq(ptr %a20, ptr %a21) - %t23 = icmp ne i32 %t22, 0 - br i1 %t23, label %then1306, label %endif1308 -then1306: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic1309, label %ok1310 -panic1309: - call void @finch_panic(ptr @.str.711, i64 210, ptr @.str.712) - unreachable -ok1310: - %t26 = getelementptr inbounds %S.parser.Parser, ptr %t24, i32 0, i32 0 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1311, label %ok1312 -panic1311: - call void @finch_panic(ptr @.str.713, i64 210, ptr @.str.714) - unreachable -ok1312: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = add i64 %t30, 1 - %t32 = load { ptr, i64, i64 }, ptr %t26 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range1313, label %inrange1314 -range1313: - call void @finch_panic_index(ptr @.str.715, i64 210, i64 %t31, i64 %t33) - unreachable -inrange1314: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.lexer.Token, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.lexer.Token, ptr %t36, i32 0, i32 4 - %t38 = load i1, ptr %t37 - %t39 = xor i1 %t38, true - call void @finch_str_drop(ptr %a18) - ret i1 %t39 -endif1308: - %t40 = load ptr, ptr %a1 - %t41 = call %S.lexer.Token @finch.parser.cur(ptr %t40) - %t42 = extractvalue %S.lexer.Token %t41, 1 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch_str_copy(ptr %a44, ptr %a43) - %t45 = load { ptr, i64, i64 }, ptr %a44 - store %S.lexer.Token %t41, ptr %a46 - call void @finch.drop.S_lexer_Token(ptr %a46) - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.716, i64 3, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - store { ptr, i64, i64 } %t45, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %logic.from1315 -logic.from1315: - br i1 %t50, label %logic.end1317, label %logic.rhs1316 -logic.rhs1316: - %t52 = load ptr, ptr %a1 - %t53 = call %S.lexer.Token @finch.parser.cur(ptr %t52) - %t54 = extractvalue %S.lexer.Token %t53, 1 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_copy(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store %S.lexer.Token %t53, ptr %a58 - call void @finch.drop.S_lexer_Token(ptr %a58) - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.717, i64 3, i64 0 }, ptr %a60 - %t61 = call i32 @finch_str_eq(ptr %a59, ptr %a60) - %t62 = icmp ne i32 %t61, 0 - store { ptr, i64, i64 } %t57, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %logic.rend1318 -logic.rend1318: - br label %logic.end1317 -logic.end1317: - %t64 = phi i1 [ true, %logic.from1315 ], [ %t62, %logic.rend1318 ] - br label %logic.from1319 -logic.from1319: - br i1 %t64, label %logic.rhs1320, label %logic.end1321 -logic.rhs1320: - %t65 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.718, i64 1, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br label %logic.rend1322 -logic.rend1322: - br label %logic.end1321 -logic.end1321: - %t70 = phi i1 [ false, %logic.from1319 ], [ %t69, %logic.rend1322 ] - br i1 %t70, label %then1323, label %endif1325 -then1323: - call void @finch_str_drop(ptr %a18) - ret i1 true -endif1325: - %t71 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t71, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.719, i64 1, i64 0 }, ptr %a73 - %t74 = call i32 @finch_str_eq(ptr %a72, ptr %a73) - %t75 = icmp ne i32 %t74, 0 - br label %logic.from1326 -logic.from1326: - br i1 %t75, label %logic.rhs1327, label %logic.end1328 -logic.rhs1327: - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t76, i64 2) - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.720, i64 5, i64 0 }, ptr %a79 - %t80 = call i32 @finch_str_eq(ptr %a78, ptr %a79) - %t81 = icmp ne i32 %t80, 0 - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %logic.rend1329 -logic.rend1329: - br label %logic.end1328 -logic.end1328: - %t83 = phi i1 [ false, %logic.from1326 ], [ %t81, %logic.rend1329 ] - br label %logic.from1330 -logic.from1330: - br i1 %t83, label %logic.rhs1331, label %logic.end1332 -logic.rhs1331: - %t84 = load ptr, ptr %a1 - %t85 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t84, i64 3) - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.721, i64 5, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %logic.rend1333 -logic.rend1333: - br label %logic.end1332 -logic.end1332: - %t91 = phi i1 [ false, %logic.from1330 ], [ %t89, %logic.rend1333 ] - br label %logic.from1334 -logic.from1334: - br i1 %t91, label %logic.rhs1335, label %logic.end1336 -logic.rhs1335: - %t92 = load ptr, ptr %a1 - %t93 = icmp eq ptr %t92, null - br i1 %t93, label %panic1337, label %ok1338 -panic1337: - call void @finch_panic(ptr @.str.722, i64 215, ptr @.str.723) - unreachable -ok1338: - %t94 = getelementptr inbounds %S.parser.Parser, ptr %t92, i32 0, i32 0 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic1339, label %ok1340 -panic1339: - call void @finch_panic(ptr @.str.724, i64 215, ptr @.str.725) - unreachable -ok1340: - %t97 = getelementptr inbounds %S.parser.Parser, ptr %t95, i32 0, i32 1 - %t98 = load i64, ptr %t97 - %t99 = add i64 %t98, 3 - %t100 = load { ptr, i64, i64 }, ptr %t94 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range1341, label %inrange1342 -range1341: - call void @finch_panic_index(ptr @.str.726, i64 215, i64 %t99, i64 %t101) - unreachable -inrange1342: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.lexer.Token, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.lexer.Token, ptr %t104, i32 0, i32 4 - %t106 = load i1, ptr %t105 - %t107 = xor i1 %t106, true - br label %logic.rend1343 -logic.rend1343: - br label %logic.end1336 -logic.end1336: - %t108 = phi i1 [ false, %logic.from1334 ], [ %t107, %logic.rend1343 ] - call void @finch_str_drop(ptr %a18) - ret i1 %t108 -} - -define internal void @finch.parser.endOfStatement(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a10 = alloca %S.lexer.Token, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.727, i64 1, i64 0 }) - br label %logic.from1344 -logic.from1344: - br i1 %t3, label %logic.end1346, label %logic.rhs1345 -logic.rhs1345: - %t4 = load ptr, ptr %a1 - %t5 = call i1 @finch.parser.at(ptr %t4, { ptr, i64, i64 } { ptr @.str.728, i64 3, i64 0 }) - br label %logic.rend1347 -logic.rend1347: - br label %logic.end1346 -logic.end1346: - %t6 = phi i1 [ true, %logic.from1344 ], [ %t5, %logic.rend1347 ] - br label %logic.from1348 -logic.from1348: - br i1 %t6, label %logic.end1350, label %logic.rhs1349 -logic.rhs1349: - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.cur(ptr %t7) - %t9 = extractvalue %S.lexer.Token %t8, 4 - store %S.lexer.Token %t8, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %logic.rend1351 -logic.rend1351: - br label %logic.end1350 -logic.end1350: - %t11 = phi i1 [ true, %logic.from1348 ], [ %t9, %logic.rend1351 ] - br i1 %t11, label %then1352, label %endif1354 -then1352: - ret void -endif1354: - %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 %S.lexer.Token %t16, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - store { ptr, i64, i64 } { ptr @.str.729, i64 11, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.730, i64 37, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.parser.fail(ptr %t12, %S.lexer.Token %t14, { ptr, i64, i64 } %t28) - store %S.lexer.Token %t14, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - call void @finch_str_drop(ptr %a30) - ret void -} - -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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca %S.lexer.Token, align 16 - %a87 = alloca %S.lexer.Token, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca %S.lexer.Token, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca i1, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca %S.ast.Node, align 16 - %a170 = alloca %S.ast.Node, align 16 - %a171 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Program zeroinitializer, ptr %a2 - br label %while.cond1355 -while.cond1355: - %t3 = load ptr, ptr %a1 - %t4 = call i1 @finch.parser.at(ptr %t3, { ptr, i64, i64 } { ptr @.str.731, i64 3, i64 0 }) - %t5 = xor i1 %t4, true - br i1 %t5, label %while.body1356, label %while.end1357 -while.body1356: - %t6 = load ptr, ptr %a1 - %t7 = call i1 @finch.parser.at(ptr %t6, { ptr, i64, i64 } { ptr @.str.732, i64 6, i64 0 }) - br i1 %t7, label %then1358, label %else1359 -then1358: - %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.733, i64 6, i64 0 }) - br i1 %t12, label %then1361, label %else1362 -then1361: - %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 %panic1364, label %ok1365 -panic1364: - call void @finch_panic(ptr @.str.734, i64 233, ptr @.str.735) - unreachable -ok1365: - %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.736, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - %t23 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 2 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.737, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.lexer.Token, ptr %a10, i32 0, i32 3 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - %t48 = load i64, ptr %t14 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t13, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t13 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t14 - %t52 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 3 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i32 0, i32 1 - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.next(ptr %t54) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load i64, ptr %t53 - %t62 = add i64 %t61, 1 - call void @finch_arr_reserve(ptr %t52, i64 %t62, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t63 = load ptr, ptr %t52 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i64 %t61 - store { ptr, i64, i64 } %t59, ptr %t64 - store i64 %t62, ptr %t53 - br label %endif1363 -else1362: - %t65 = load ptr, ptr %a1 - %t66 = call i1 @finch.parser.at(ptr %t65, { ptr, i64, i64 } { ptr @.str.738, i64 5, i64 0 }) - %t67 = xor i1 %t66, true - br i1 %t67, label %then1366, label %endif1368 -then1366: - %t68 = load ptr, ptr %a1 - %t69 = load %S.lexer.Token, ptr %a10 - call void @finch.parser.fail(ptr %t68, %S.lexer.Token %t69, { ptr, i64, i64 } { ptr @.str.739, i64 51, i64 0 }) - br label %endif1368 -endif1368: - %t70 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 2 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t70, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = call %S.lexer.Token @finch.parser.next(ptr %t72) - %t74 = extractvalue %S.lexer.Token %t73, 1 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_copy(ptr %a76, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store %S.lexer.Token %t73, ptr %a78 - call void @finch.drop.S_lexer_Token(ptr %a78) - %t79 = load i64, ptr %t71 - %t80 = add i64 %t79, 1 - call void @finch_arr_reserve(ptr %t70, i64 %t80, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t81 = load ptr, ptr %t70 - %t82 = getelementptr inbounds { ptr, i64, i64 }, ptr %t81, i64 %t79 - store { ptr, i64, i64 } %t77, ptr %t82 - store i64 %t80, ptr %t71 - br label %endif1363 -endif1363: - call void @finch.drop.S_lexer_Token(ptr %a10) - br label %endif1360 -else1359: - %t83 = load ptr, ptr %a1 - %t84 = call i1 @finch.parser.at(ptr %t83, { ptr, i64, i64 } { ptr @.str.740, i64 4, i64 0 }) - br i1 %t84, label %then1369, label %else1370 -then1369: - %t85 = load ptr, ptr %a1 - %t86 = call %S.lexer.Token @finch.parser.next(ptr %t85) - store %S.lexer.Token %t86, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = call %S.lexer.Token @finch.parser.expect(ptr %t88, { ptr, i64, i64 } { ptr @.str.741, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.742, i64 42, i64 0 }) - %t90 = extractvalue %S.lexer.Token %t89, 1 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_copy(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - store %S.lexer.Token %t89, ptr %a94 - call void @finch.drop.S_lexer_Token(ptr %a94) - store { ptr, i64, i64 } %t93, ptr %a95 - %t96 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.744, i64 2, i64 0 }, ptr %a99 - %t100 = call i32 @finch_str_ends(ptr %a97, ptr %a99) - %t101 = icmp ne i32 %t100, 0 - br label %logic.from1372 -logic.from1372: - br i1 %t101, label %logic.end1374, label %logic.rhs1373 -logic.rhs1373: - %t102 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.746, i64 2, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_ends(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.rend1375 -logic.rend1375: - br label %logic.end1374 -logic.end1374: - %t108 = phi i1 [ true, %logic.from1372 ], [ %t107, %logic.rend1375 ] - br label %logic.from1376 -logic.from1376: - br i1 %t108, label %logic.end1378, label %logic.rhs1377 -logic.rhs1377: - %t109 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.748, i64 2, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_ends(ptr %a110, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.rend1379 -logic.rend1379: - br label %logic.end1378 -logic.end1378: - %t115 = phi i1 [ true, %logic.from1376 ], [ %t114, %logic.rend1379 ] - store i1 %t115, ptr %a116 - %t117 = load i1, ptr %a116 - %t118 = xor i1 %t117, true - br label %logic.from1380 -logic.from1380: - br i1 %t118, label %logic.rhs1381, label %logic.end1382 -logic.rhs1381: - %t119 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.750, i64 3, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_starts(ptr %a120, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br label %logic.from1383 -logic.from1383: - br i1 %t124, label %logic.end1385, label %logic.rhs1384 -logic.rhs1384: - %t125 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.752, i64 3, i64 0 }, ptr %a128 - %t129 = call i64 @finch_str_find(ptr %a126, ptr %a128) - %t130 = icmp sge i64 %t129, 0 - br label %logic.rend1386 -logic.rend1386: - br label %logic.end1385 -logic.end1385: - %t131 = phi i1 [ true, %logic.from1383 ], [ %t130, %logic.rend1386 ] - br label %logic.from1387 -logic.from1387: - br i1 %t131, label %logic.end1389, label %logic.rhs1388 -logic.rhs1388: - %t132 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.754, i64 1, i64 0 }, ptr %a135 - %t136 = call i64 @finch_str_find(ptr %a133, ptr %a135) - %t137 = icmp sge i64 %t136, 0 - br label %logic.rend1390 -logic.rend1390: - br label %logic.end1389 -logic.end1389: - %t138 = phi i1 [ true, %logic.from1387 ], [ %t137, %logic.rend1390 ] - br label %logic.rend1391 -logic.rend1391: - br label %logic.end1382 -logic.end1382: - %t139 = phi i1 [ false, %logic.from1380 ], [ %t138, %logic.rend1391 ] - br i1 %t139, label %then1392, label %endif1394 -then1392: - %t140 = load ptr, ptr %a1 - %t141 = load %S.lexer.Token, ptr %a87 - call void @finch.parser.fail(ptr %t140, %S.lexer.Token %t141, { ptr, i64, i64 } { ptr @.str.755, i64 65, i64 0 }) - br label %endif1394 -endif1394: - %t142 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 5 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t142, i32 0, i32 1 - %t144 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t144, ptr %a145 - call void @finch_str_copy(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load i64, ptr %t143 - %t149 = add i64 %t148, 1 - call void @finch_arr_reserve(ptr %t142, i64 %t149, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t150 = load ptr, ptr %t142 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i64 %t148 - store { ptr, i64, i64 } %t147, ptr %t151 - store i64 %t149, ptr %t143 - call void @finch_str_drop(ptr %a95) - call void @finch.drop.S_lexer_Token(ptr %a87) - br label %endif1371 -else1370: - %t152 = load ptr, ptr %a1 - %t153 = call i1 @finch.parser.at(ptr %t152, { ptr, i64, i64 } { ptr @.str.756, i64 6, i64 0 }) - br i1 %t153, label %then1395, label %else1396 -then1395: - %t154 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.ast.Node @finch.parser.parseStruct(ptr %t156) - %t158 = load i64, ptr %t155 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t159, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %t154 - %t161 = getelementptr inbounds %S.ast.Node, ptr %t160, i64 %t158 - store %S.ast.Node %t157, ptr %t161 - store i64 %t159, ptr %t155 - br label %endif1397 -else1396: - %t162 = load ptr, ptr %a1 - %t163 = call i1 @finch.parser.at(ptr %t162, { ptr, i64, i64 } { ptr @.str.757, i64 4, i64 0 }) - br i1 %t163, label %then1398, label %else1399 -then1398: - %t164 = load ptr, ptr %a1 - %t165 = call %S.ast.Node @finch.parser.parseEnum(ptr %t164) - store %S.ast.Node %t165, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 7 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Node, ptr %a166 - store %S.ast.Node %t169, ptr %a170 - call void @finch.copy.S_ast_Node(ptr %a171, ptr %a170) - %t172 = load %S.ast.Node, ptr %a171 - %t173 = load i64, ptr %t168 - %t174 = add i64 %t173, 1 - call void @finch_arr_reserve(ptr %t167, i64 %t174, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t175 = load ptr, ptr %t167 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t173 - store %S.ast.Node %t172, ptr %t176 - store i64 %t174, ptr %t168 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a166, i32 0, i32 6 - %t178 = load i1, ptr %t177 - br i1 %t178, label %then1401, label %endif1403 -then1401: - %t179 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 6 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = load %S.ast.Node, ptr %a166 - %t182 = call %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %t181) - %t183 = load i64, ptr %t180 - %t184 = add i64 %t183, 1 - call void @finch_arr_reserve(ptr %t179, i64 %t184, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.ast.Node, ptr %t185, i64 %t183 - store %S.ast.Node %t182, ptr %t186 - store i64 %t184, ptr %t180 - br label %endif1403 -endif1403: - call void @finch.drop.S_ast_Node(ptr %a166) - br label %endif1400 -else1399: - %t187 = getelementptr inbounds %S.ast.Program, ptr %a2, i32 0, i32 8 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load ptr, ptr %a1 - %t190 = call %S.ast.Node @finch.parser.parseFn(ptr %t189) - %t191 = load i64, ptr %t188 - %t192 = add i64 %t191, 1 - call void @finch_arr_reserve(ptr %t187, i64 %t192, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t193 = load ptr, ptr %t187 - %t194 = getelementptr inbounds %S.ast.Node, ptr %t193, i64 %t191 - store %S.ast.Node %t190, ptr %t194 - store i64 %t192, ptr %t188 - br label %endif1400 -endif1400: - br label %endif1397 -endif1397: - br label %endif1371 -endif1371: - br label %endif1360 -endif1360: - br label %while.cond1355 -while.end1357: - %t195 = load %S.ast.Program, ptr %a2 - ret %S.ast.Program %t195 -} - -define internal %S.ast.Node @finch.parser.parseEnum(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.lexer.Token, align 16 - %a32 = alloca %S.ast.Node, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Type, align 16 - %a60 = alloca %S.ast.Node, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a72 = alloca %S.lexer.Token, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.lexer.Token, align 16 - %a113 = 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 - %a125 = alloca %S.lexer.Token, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.ast.Node, align 16 - %a138 = alloca %S.ast.Node, align 16 - %a150 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca i64, align 16 - %a182 = alloca %S.ast.Node, 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 - %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 - %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 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.lexer.Token, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.758, i64 4, i64 0 }) - store %S.ast.Node %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.lexer.Token @finch.parser.expect(ptr %t5, { ptr, i64, i64 } { ptr @.str.759, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.760, i64 6, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.761, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.762, i64 12, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call %S.lexer.Token @finch.parser.expect(ptr %t18, { ptr, i64, i64 } { ptr @.str.763, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.764, i64 3, i64 0 }) - store %S.lexer.Token %t19, ptr %a20 - call void @finch.drop.S_lexer_Token(ptr %a20) - br label %while.cond1404 -while.cond1404: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.765, i64 1, i64 0 }) - %t23 = xor i1 %t22, true - br i1 %t23, label %while.body1405, label %while.end1406 -while.body1405: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.766, i64 3, i64 0 }) - br i1 %t25, label %then1407, label %endif1409 -then1407: - %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.767, i64 37, i64 0 }) - store %S.lexer.Token %t28, ptr %a29 - call void @finch.drop.S_lexer_Token(ptr %a29) - br label %endif1409 -endif1409: - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.node(ptr %t30, { ptr, i64, i64 } { ptr @.str.768, i64 7, i64 0 }) - store %S.ast.Node %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = call %S.lexer.Token @finch.parser.expect(ptr %t33, { ptr, i64, i64 } { ptr @.str.769, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.770, i64 24, i64 0 }) - %t35 = extractvalue %S.lexer.Token %t34, 1 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - store %S.lexer.Token %t34, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t38, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = call i1 @finch.parser.accept(ptr %t43, { ptr, i64, i64 } { ptr @.str.771, i64 1, i64 0 }) - br i1 %t44, label %then1410, label %endif1412 -then1410: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - store i1 true, ptr %t45 - br label %while.cond1413 -while.cond1413: - %t46 = load ptr, ptr %a1 - %t47 = call i1 @finch.parser.at(ptr %t46, { ptr, i64, i64 } { ptr @.str.772, i64 1, i64 0 }) - %t48 = xor i1 %t47, true - br i1 %t48, label %while.body1414, label %while.end1415 -while.body1414: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.node(ptr %t49, { ptr, i64, i64 } { ptr @.str.773, i64 5, i64 0 }) - store %S.ast.Node %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call %S.ast.Type @finch.parser.parseType(ptr %t52) - %t54 = getelementptr inbounds %S.ast.Node, ptr %a51, i32 0, i32 5 - %t55 = load %S.ast.Type, ptr %t54 - store %S.ast.Type %t53, ptr %t54 - store %S.ast.Type %t55, ptr %a56 - call void @finch.drop.S_ast_Type(ptr %a56) - %t57 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = load %S.ast.Node, ptr %a51 - store %S.ast.Node %t59, ptr %a60 - call void @finch.copy.S_ast_Node(ptr %a61, ptr %a60) - %t62 = load %S.ast.Node, ptr %a61 - %t63 = load i64, ptr %t58 - %t64 = add i64 %t63, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t64, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t65 = load ptr, ptr %t57 - %t66 = getelementptr inbounds %S.ast.Node, ptr %t65, i64 %t63 - store %S.ast.Node %t62, ptr %t66 - store i64 %t64, ptr %t58 - %t67 = load ptr, ptr %a1 - %t68 = call i1 @finch.parser.accept(ptr %t67, { ptr, i64, i64 } { ptr @.str.774, i64 1, i64 0 }) - %t69 = xor i1 %t68, true - br i1 %t69, label %then1416, label %endif1418 -then1416: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.end1415 -endif1418: - call void @finch.drop.S_ast_Node(ptr %a51) - br label %while.cond1413 -while.end1415: - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.775, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.776, i64 35, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - %t73 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 9 - %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 %then1419, label %endif1421 -then1419: - %t77 = load ptr, ptr %a1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.lexer.Token @finch.parser.cur(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } { ptr @.str.777, i64 12, 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.778, i64 27, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t90, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t90, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.779, i64 20, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.parser.fail(ptr %t77, %S.lexer.Token %t79, { ptr, i64, i64 } %t102) - store %S.lexer.Token %t79, ptr %a103 - call void @finch.drop.S_lexer_Token(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1421 -endif1421: - br label %endif1412 -endif1412: - %t105 = load ptr, ptr %a1 - %t106 = call i1 @finch.parser.accept(ptr %t105, { ptr, i64, i64 } { ptr @.str.780, i64 1, i64 0 }) - br i1 %t106, label %then1422, label %endif1424 -then1422: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then1425, label %endif1427 -then1425: - %t109 = load ptr, ptr %a1 - %t110 = load ptr, ptr %a1 - %t111 = call %S.lexer.Token @finch.parser.cur(ptr %t110) - call void @finch.parser.fail(ptr %t109, %S.lexer.Token %t111, { ptr, i64, i64 } { ptr @.str.781, i64 52, i64 0 }) - store %S.lexer.Token %t111, ptr %a112 - call void @finch.drop.S_lexer_Token(ptr %a112) - br label %endif1427 -endif1427: - store { ptr, i64, i64 } { ptr @.str.782, i64 0, i64 0 }, ptr %a113 - %t114 = load ptr, ptr %a1 - %t115 = call i1 @finch.parser.accept(ptr %t114, { ptr, i64, i64 } { ptr @.str.783, i64 1, i64 0 }) - br i1 %t115, label %then1428, label %endif1430 -then1428: - %t116 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.784, i64 1, i64 0 }, ptr %a113 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif1430 -endif1430: - %t118 = load { ptr, i64, i64 }, ptr %a113 - %t119 = load ptr, ptr %a1 - %t120 = call %S.lexer.Token @finch.parser.expect(ptr %t119, { ptr, i64, i64 } { ptr @.str.785, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.786, i64 30, i64 0 }) - %t121 = extractvalue %S.lexer.Token %t120, 1 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch_str_copy(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - store %S.lexer.Token %t120, ptr %a125 - call void @finch.drop.S_lexer_Token(ptr %a125) - store { ptr, i64, i64 } %t118, ptr %a127 - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a32, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %t131 - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a113) - br label %endif1424 -endif1424: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load %S.ast.Node, ptr %a32 - store %S.ast.Node %t136, ptr %a137 - call void @finch.copy.S_ast_Node(ptr %a138, ptr %a137) - %t139 = load %S.ast.Node, 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 (%S.ast.Node, ptr null, i32 1) to i64)) - %t142 = load ptr, ptr %t134 - %t143 = getelementptr inbounds %S.ast.Node, ptr %t142, i64 %t140 - store %S.ast.Node %t139, ptr %t143 - store i64 %t141, ptr %t135 - %t144 = load ptr, ptr %a1 - %t145 = call i1 @finch.parser.accept(ptr %t144, { ptr, i64, i64 } { ptr @.str.787, i64 1, i64 0 }) - %t146 = xor i1 %t145, true - br i1 %t146, label %then1431, label %endif1433 -then1431: - %t147 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t147) - br label %endif1433 -endif1433: - call void @finch.drop.S_ast_Node(ptr %a32) - br label %while.cond1404 -while.end1406: - %t148 = load ptr, ptr %a1 - %t149 = call %S.lexer.Token @finch.parser.next(ptr %t148) - store %S.lexer.Token %t149, ptr %a150 - call void @finch.drop.S_lexer_Token(ptr %a150) - %t151 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = icmp eq i64 %t153, 0 - br i1 %t154, label %then1434, label %endif1436 -then1434: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = call %S.lexer.Token @finch.parser.cur(ptr %t156) - %t158 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } { ptr @.str.788, i64 9, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.789, i64 16, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.parser.fail(ptr %t155, %S.lexer.Token %t157, { ptr, i64, i64 } %t168) - store %S.lexer.Token %t157, ptr %a169 - call void @finch.drop.S_lexer_Token(ptr %a169) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1436 -endif1436: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 6 - %t172 = load i1, ptr %t171 - br i1 %t172, label %then1437, label %endif1439 -then1437: - %t173 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - store i64 0, ptr %a174 - br label %each.cond1440 -each.cond1440: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i32 0, i32 1 - %t176 = load i64, ptr %t175 - %t177 = load i64, ptr %a174 - %t178 = icmp slt i64 %t177, %t176 - br i1 %t178, label %each.body1441, label %each.end1443 -each.body1441: - %t179 = load ptr, ptr %t173 - %t180 = getelementptr inbounds %S.ast.Node, ptr %t179, i64 %t177 - %t181 = load %S.ast.Node, ptr %t180 - store %S.ast.Node %t181, ptr %a182 - %t183 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load i64, ptr %t184 - %t186 = icmp sgt i64 %t185, 0 - br i1 %t186, label %then1444, label %endif1446 -then1444: - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = call %S.lexer.Token @finch.parser.cur(ptr %t188) - %t190 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - store { ptr, i64, i64 } { ptr @.str.790, i64 54, i64 0 }, 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.791, i64 3, i64 0 }, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - %t201 = getelementptr inbounds %S.ast.Node, ptr %a182, i32 0, i32 4 - %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) - store { ptr, i64, i64 } %t200, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t207, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.792, i64 1, i64 0 }, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.parser.fail(ptr %t187, %S.lexer.Token %t189, { ptr, i64, i64 } %t212) - store %S.lexer.Token %t189, ptr %a213 - call void @finch.drop.S_lexer_Token(ptr %a213) - store { ptr, i64, i64 } %t212, ptr %a214 - call void @finch_str_drop(ptr %a214) - br label %endif1446 -endif1446: - br label %each.step1442 -each.step1442: - %t215 = load i64, ptr %a174 - %t216 = add i64 %t215, 1 - store i64 %t216, ptr %a174 - br label %each.cond1440 -each.end1443: - br label %endif1439 -endif1439: - %t217 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t217 -} - -define internal %S.ast.Node @finch.parser.sumStruct(%S.ast.Node %p0) { -entry: - %a1 = alloca %S.ast.Node, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca %S.ast.Node, align 16 - %a30 = alloca %S.ast.Node, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a46 = alloca i64, align 16 - %a54 = alloca %S.ast.Node, align 16 - %a58 = alloca 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 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a98 = alloca %S.ast.Type, align 16 - %a99 = alloca %S.ast.Type, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a107 = alloca %S.ast.Node, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.793, i64 6, i64 0 }, 0 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a1, 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 - %t8 = insertvalue %S.ast.Node %t2, { ptr, i64, i64 } %t7, 1 - %t9 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t10 = load i64, ptr %t9 - %t11 = insertvalue %S.ast.Node %t8, i64 %t10, 11 - %t12 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t13 = load i64, ptr %t12 - %t14 = insertvalue %S.ast.Node %t11, i64 %t13, 12 - %t15 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t16 = load i64, ptr %t15 - %t17 = insertvalue %S.ast.Node %t14, i64 %t16, 13 - store %S.ast.Node %t17, ptr %a18 - %t19 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.794, i64 5, i64 0 }, 0 - %t20 = insertvalue %S.ast.Node %t19, { ptr, i64, i64 } { ptr @.str.795, i64 3, i64 0 }, 1 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 11 - %t22 = load i64, ptr %t21 - %t23 = insertvalue %S.ast.Node %t20, i64 %t22, 11 - %t24 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t25 = load i64, ptr %t24 - %t26 = insertvalue %S.ast.Node %t23, i64 %t25, 12 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t28 = load i64, ptr %t27 - %t29 = insertvalue %S.ast.Node %t26, i64 %t28, 13 - store %S.ast.Node %t29, ptr %a30 - %t31 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.796, i64 3, i64 0 }) - %t32 = getelementptr inbounds %S.ast.Node, ptr %a30, i32 0, i32 5 - %t33 = load %S.ast.Type, ptr %t32 - store %S.ast.Type %t31, ptr %t32 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - %t35 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Node, ptr %a30 - store %S.ast.Node %t37, ptr %a38 - call void @finch.copy.S_ast_Node(ptr %a39, ptr %a38) - %t40 = load %S.ast.Node, ptr %a39 - %t41 = load i64, ptr %t36 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %t35, i64 %t42, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - store %S.ast.Node %t40, ptr %t44 - store i64 %t42, ptr %t36 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a46 - br label %each.cond1447 -each.cond1447: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t48 = load i64, ptr %t47 - %t49 = load i64, ptr %a46 - %t50 = icmp slt i64 %t49, %t48 - br i1 %t50, label %each.body1448, label %each.end1450 -each.body1448: - %t51 = load ptr, ptr %t45 - %t52 = getelementptr inbounds %S.ast.Node, ptr %t51, i64 %t49 - %t53 = load %S.ast.Node, ptr %t52 - store %S.ast.Node %t53, ptr %a54 - %t55 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i32 0, i32 1 - %t57 = load i64, ptr %t56 - store i64 0, ptr %a58 - br label %for.cond1451 -for.cond1451: - %t59 = load i64, ptr %a58 - %t60 = icmp slt i64 %t59, %t57 - br i1 %t60, label %for.body1452, label %for.end1454 -for.body1452: - %t61 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.797, i64 5, i64 0 }, 0 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 1 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.798, 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 = load i64, ptr %a58 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = insertvalue %S.ast.Node %t61, { ptr, i64, i64 } %t76, 1 - %t78 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 11 - %t79 = load i64, ptr %t78 - %t80 = insertvalue %S.ast.Node %t77, i64 %t79, 11 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 12 - %t82 = load i64, ptr %t81 - %t83 = insertvalue %S.ast.Node %t80, i64 %t82, 12 - %t84 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 13 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.ast.Node %t83, i64 %t85, 13 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a54, i32 0, i32 9 - %t89 = load i64, ptr %a58 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range1455, label %inrange1456 -range1455: - call void @finch_panic_index(ptr @.str.799, i64 333, i64 %t89, i64 %t91) - unreachable -inrange1456: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.ast.Node, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.ast.Node, ptr %t94, i32 0, i32 5 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - store %S.ast.Type %t96, ptr %a98 - call void @finch.copy.S_ast_Type(ptr %a99, ptr %a98) - %t100 = load %S.ast.Type, ptr %a99 - %t101 = load %S.ast.Type, ptr %t97 - store %S.ast.Type %t100, ptr %t97 - store %S.ast.Type %t101, ptr %a102 - call void @finch.drop.S_ast_Type(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a18, i32 0, i32 9 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load %S.ast.Node, ptr %a87 - store %S.ast.Node %t105, ptr %a106 - call void @finch.copy.S_ast_Node(ptr %a107, ptr %a106) - %t108 = load %S.ast.Node, ptr %a107 - %t109 = load i64, ptr %t104 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t103, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t103 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t104 - call void @finch.drop.S_ast_Node(ptr %a87) - br label %for.step1453 -for.step1453: - %t113 = load i64, ptr %a58 - %t114 = add i64 %t113, 1 - store i64 %t114, ptr %a58 - br label %for.cond1451 -for.end1454: - br label %each.step1449 -each.step1449: - %t115 = load i64, ptr %a46 - %t116 = add i64 %t115, 1 - store i64 %t116, ptr %a46 - br label %each.cond1447 -each.end1450: - %t117 = load %S.ast.Node, ptr %a18 - call void @finch.drop.S_ast_Node(ptr %a30) - ret %S.ast.Node %t117 -} - -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 - %a10 = alloca %S.lexer.Token, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a26 = alloca i64, align 16 - %a38 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.ast.Node, align 16 - %a44 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a63 = alloca %S.ast.Node, align 16 - %a71 = alloca %S.lexer.Token, align 16 - %a105 = alloca %S.ast.Node, align 16 - %a106 = alloca %S.ast.Node, align 16 - %a122 = alloca %S.lexer.Token, align 16 - %a130 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.ast.Node @finch.parser.node(ptr %t3, { ptr, i64, i64 } { ptr @.str.800, 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.801, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.802, i64 7, i64 0 }) - store %S.lexer.Token %t9, ptr %a10 - call void @finch.drop.S_lexer_Token(ptr %a10) - %t11 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t11, i32 0, i32 1 - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.parseExpr(ptr %t13) - %t15 = load i64, ptr %t12 - %t16 = add i64 %t15, 1 - call void @finch_arr_reserve(ptr %t11, i64 %t16, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t17 = load ptr, ptr %t11 - %t18 = getelementptr inbounds %S.ast.Node, ptr %t17, i64 %t15 - store %S.ast.Node %t14, ptr %t18 - store i64 %t16, ptr %t12 - %t19 = load ptr, ptr %a1 - %t20 = call %S.lexer.Token @finch.parser.expect(ptr %t19, { ptr, i64, i64 } { ptr @.str.803, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.804, i64 3, i64 0 }) - store %S.lexer.Token %t20, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = load ptr, ptr %a1 - %t23 = icmp eq ptr %t22, null - br i1 %t23, label %panic1457, label %ok1458 -panic1457: - call void @finch_panic(ptr @.str.805, i64 348, ptr @.str.806) - unreachable -ok1458: - %t24 = getelementptr inbounds %S.parser.Parser, ptr %t22, i32 0, i32 2 - %t25 = load i64, ptr %t24 - store i64 %t25, ptr %a26 - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1459, label %ok1460 -panic1459: - call void @finch_panic(ptr @.str.807, i64 349, ptr @.str.808) - unreachable -ok1460: - %t29 = getelementptr inbounds %S.parser.Parser, ptr %t27, i32 0, i32 2 - store i64 0, ptr %t29 - br label %while.cond1461 -while.cond1461: - %t30 = load ptr, ptr %a1 - %t31 = call i1 @finch.parser.at(ptr %t30, { ptr, i64, i64 } { ptr @.str.809, i64 1, i64 0 }) - %t32 = xor i1 %t31, true - br i1 %t32, label %while.body1462, label %while.end1463 -while.body1462: - %t33 = load ptr, ptr %a1 - %t34 = call i1 @finch.parser.at(ptr %t33, { ptr, i64, i64 } { ptr @.str.810, i64 3, i64 0 }) - br i1 %t34, label %then1464, label %endif1466 -then1464: - %t35 = load ptr, ptr %a1 - %t36 = load ptr, ptr %a1 - %t37 = call %S.lexer.Token @finch.parser.cur(ptr %t36) - call void @finch.parser.fail(ptr %t35, %S.lexer.Token %t37, { ptr, i64, i64 } { ptr @.str.811, i64 37, i64 0 }) - store %S.lexer.Token %t37, ptr %a38 - call void @finch.drop.S_lexer_Token(ptr %a38) - br label %endif1466 -endif1466: - %t39 = load ptr, ptr %a1 - %t40 = call %S.ast.Node @finch.parser.node(ptr %t39, { ptr, i64, i64 } { ptr @.str.812, i64 3, i64 0 }) - store %S.ast.Node %t40, ptr %a41 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.node(ptr %t42, { ptr, i64, i64 } { ptr @.str.813, i64 8, i64 0 }) - store %S.ast.Node %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = call i1 @finch.parser.accept(ptr %t45, { ptr, i64, i64 } { ptr @.str.814, i64 4, i64 0 }) - br i1 %t46, label %then1467, label %else1468 -then1467: - %t47 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 6 - store i1 true, ptr %t47 - br label %endif1469 -else1468: - br label %while.cond1470 -while.cond1470: - br label %while.body1471 -while.body1471: - %t48 = getelementptr inbounds %S.ast.Node, ptr %a44, i32 0, i32 9 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load ptr, ptr %a1 - %t51 = call %S.ast.Node @finch.parser.parseExpr(ptr %t50) - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t48 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 %t52 - store %S.ast.Node %t51, ptr %t55 - store i64 %t53, ptr %t49 - %t56 = load ptr, ptr %a1 - %t57 = call i1 @finch.parser.accept(ptr %t56, { ptr, i64, i64 } { ptr @.str.815, i64 1, i64 0 }) - %t58 = xor i1 %t57, true - br i1 %t58, label %then1473, label %endif1475 -then1473: - br label %while.end1472 -endif1475: - br label %while.cond1470 -while.end1472: - br label %endif1469 -endif1469: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t59, i32 0, i32 1 - %t61 = load %S.ast.Node, ptr %a44 - store %S.ast.Node %t61, ptr %a62 - call void @finch.copy.S_ast_Node(ptr %a63, ptr %a62) - %t64 = load %S.ast.Node, ptr %a63 - %t65 = load i64, ptr %t60 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %t59, i64 %t66, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %t59 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 %t65 - store %S.ast.Node %t64, ptr %t68 - store i64 %t66, ptr %t60 - %t69 = load ptr, ptr %a1 - %t70 = call %S.lexer.Token @finch.parser.expect(ptr %t69, { ptr, i64, i64 } { ptr @.str.816, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.817, i64 57, i64 0 }) - store %S.lexer.Token %t70, ptr %a71 - call void @finch.drop.S_lexer_Token(ptr %a71) - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.818, i64 1, i64 0 }) - br label %logic.from1476 -logic.from1476: - br i1 %t73, label %logic.rhs1477, label %logic.end1478 -logic.rhs1477: - %t74 = load i1, ptr %a2 - %t75 = xor i1 %t74, true - br label %logic.rend1479 -logic.rend1479: - br label %logic.end1478 -logic.end1478: - %t76 = phi i1 [ false, %logic.from1476 ], [ %t75, %logic.rend1479 ] - br i1 %t76, label %then1480, label %else1481 -then1480: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %t77, i32 0, i32 1 - %t79 = load ptr, ptr %a1 - %t80 = call %S.ast.Node @finch.parser.parseBlock(ptr %t79) - %t81 = load i64, ptr %t78 - %t82 = add i64 %t81, 1 - call void @finch_arr_reserve(ptr %t77, i64 %t82, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t83 = load ptr, ptr %t77 - %t84 = getelementptr inbounds %S.ast.Node, ptr %t83, i64 %t81 - store %S.ast.Node %t80, ptr %t84 - store i64 %t82, ptr %t78 - br label %endif1482 -else1481: - %t85 = load i1, ptr %a2 - br i1 %t85, label %then1483, label %else1484 -then1483: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load ptr, ptr %a1 - %t89 = call %S.ast.Node @finch.parser.parseExpr(ptr %t88) - %t90 = load i64, ptr %t87 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t91, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %t86 - %t93 = getelementptr inbounds %S.ast.Node, ptr %t92, i64 %t90 - store %S.ast.Node %t89, ptr %t93 - store i64 %t91, ptr %t87 - br label %endif1485 -else1484: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a41, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseStatement(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1485 -endif1485: - br label %endif1482 -endif1482: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i32 0, i32 1 - %t104 = load %S.ast.Node, ptr %a41 - store %S.ast.Node %t104, ptr %a105 - call void @finch.copy.S_ast_Node(ptr %a106, ptr %a105) - %t107 = load %S.ast.Node, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %t102, i64 %t109, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %t102 - %t111 = getelementptr inbounds %S.ast.Node, ptr %t110, i64 %t108 - store %S.ast.Node %t107, ptr %t111 - store i64 %t109, ptr %t103 - %t112 = load ptr, ptr %a1 - %t113 = call i1 @finch.parser.accept(ptr %t112, { ptr, i64, i64 } { ptr @.str.819, i64 1, i64 0 }) - %t114 = xor i1 %t113, true - br i1 %t114, label %then1486, label %endif1488 -then1486: - %t115 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t115) - br label %endif1488 -endif1488: - call void @finch.drop.S_ast_Node(ptr %a44) - call void @finch.drop.S_ast_Node(ptr %a41) - br label %while.cond1461 -while.end1463: - %t116 = load i64, ptr %a26 - %t117 = load ptr, ptr %a1 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic1489, label %ok1490 -panic1489: - call void @finch_panic(ptr @.str.820, i64 380, ptr @.str.821) - unreachable -ok1490: - %t119 = getelementptr inbounds %S.parser.Parser, ptr %t117, i32 0, i32 2 - store i64 %t116, ptr %t119 - %t120 = load ptr, ptr %a1 - %t121 = call %S.lexer.Token @finch.parser.next(ptr %t120) - store %S.lexer.Token %t121, ptr %a122 - call void @finch.drop.S_lexer_Token(ptr %a122) - %t123 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 9 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i32 0, i32 1 - %t125 = load i64, ptr %t124 - %t126 = icmp eq i64 %t125, 1 - br i1 %t126, label %then1491, label %endif1493 -then1491: - %t127 = load ptr, ptr %a1 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.cur(ptr %t128) - call void @finch.parser.fail(ptr %t127, %S.lexer.Token %t129, { ptr, i64, i64 } { ptr @.str.822, i64 30, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - br label %endif1493 -endif1493: - %t131 = load %S.ast.Node, ptr %a5 - ret %S.ast.Node %t131 -} - -define internal { ptr, i64, i64 } @finch.parser.parseTParams(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca %S.lexer.Token, align 16 - %a23 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.823, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.824, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - br label %while.cond1494 -while.cond1494: - br label %while.body1495 -while.body1495: - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t7 = load ptr, ptr %a1 - %t8 = call %S.lexer.Token @finch.parser.expect(ptr %t7, { ptr, i64, i64 } { ptr @.str.825, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.826, i64 29, i64 0 }) - %t9 = extractvalue %S.lexer.Token %t8, 1 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - store %S.lexer.Token %t8, ptr %a13 - call void @finch.drop.S_lexer_Token(ptr %a13) - %t14 = load i64, ptr %t6 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t15, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %a2 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 %t14 - store { ptr, i64, i64 } %t12, ptr %t17 - store i64 %t15, ptr %t6 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.accept(ptr %t18, { ptr, i64, i64 } { ptr @.str.827, i64 1, i64 0 }) - %t20 = xor i1 %t19, true - br i1 %t20, label %then1497, label %endif1499 -then1497: - br label %while.end1496 -endif1499: - br label %while.cond1494 -while.end1496: - %t21 = load ptr, ptr %a1 - %t22 = call %S.lexer.Token @finch.parser.expect(ptr %t21, { ptr, i64, i64 } { ptr @.str.828, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.829, i64 29, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t24 -} - -define internal %S.ast.Node @finch.parser.parseStruct(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca %S.lexer.Token, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca %S.lexer.Token, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.lexer.Token, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.ast.Type, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.lexer.Token, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.ast.Node, align 16 - %a100 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.830, 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.831, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.832, i64 8, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = call %S.lexer.Token @finch.parser.expect(ptr %t8, { ptr, i64, i64 } { ptr @.str.833, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.834, i64 13, i64 0 }) - %t10 = extractvalue %S.lexer.Token %t9, 1 - store { ptr, i64, i64 } %t10, ptr %a11 - call void @finch_str_copy(ptr %a12, ptr %a11) - %t13 = load { ptr, i64, i64 }, ptr %a12 - store %S.lexer.Token %t9, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t13, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.835, i64 1, i64 0 }) - br i1 %t19, label %then1500, label %endif1502 -then1500: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t20) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t21, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch.drop.arr_str(ptr %a24) - br label %endif1502 -endif1502: - %t25 = load ptr, ptr %a1 - %t26 = call %S.lexer.Token @finch.parser.expect(ptr %t25, { ptr, i64, i64 } { ptr @.str.836, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.837, i64 3, i64 0 }) - store %S.lexer.Token %t26, ptr %a27 - call void @finch.drop.S_lexer_Token(ptr %a27) - br label %while.cond1503 -while.cond1503: - %t28 = load ptr, ptr %a1 - %t29 = call i1 @finch.parser.at(ptr %t28, { ptr, i64, i64 } { ptr @.str.838, i64 1, i64 0 }) - %t30 = xor i1 %t29, true - br i1 %t30, label %while.body1504, label %while.end1505 -while.body1504: - %t31 = load ptr, ptr %a1 - %t32 = call i1 @finch.parser.at(ptr %t31, { ptr, i64, i64 } { ptr @.str.839, i64 3, i64 0 }) - br i1 %t32, label %then1506, label %endif1508 -then1506: - %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.840, i64 38, i64 0 }) - store %S.lexer.Token %t35, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - br label %endif1508 -endif1508: - %t37 = load ptr, ptr %a1 - %t38 = call %S.ast.Node @finch.parser.node(ptr %t37, { ptr, i64, i64 } { ptr @.str.841, i64 5, i64 0 }) - store %S.ast.Node %t38, ptr %a39 - %t40 = load ptr, ptr %a1 - %t41 = call i1 @finch.parser.atDeclaration(ptr %t40) - %t42 = xor i1 %t41, true - br i1 %t42, label %then1509, label %endif1511 -then1509: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = call %S.lexer.Token @finch.parser.cur(ptr %t44) - %t46 = load ptr, ptr %a1 - %t47 = call %S.lexer.Token @finch.parser.cur(ptr %t46) - %t48 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t47) - store %S.lexer.Token %t47, ptr %a49 - call void @finch.drop.S_lexer_Token(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.842, i64 11, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.843, i64 28, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - call void @finch.parser.fail(ptr %t43, %S.lexer.Token %t45, { ptr, i64, i64 } %t59) - store %S.lexer.Token %t45, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - br label %endif1511 -endif1511: - %t62 = load ptr, ptr %a1 - %t63 = call %S.ast.Type @finch.parser.parseType(ptr %t62) - %t64 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 5 - %t65 = load %S.ast.Type, ptr %t64 - store %S.ast.Type %t63, ptr %t64 - store %S.ast.Type %t65, ptr %a66 - call void @finch.drop.S_ast_Type(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = call %S.lexer.Token @finch.parser.expect(ptr %t67, { ptr, i64, i64 } { ptr @.str.844, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.845, i64 12, i64 0 }) - %t69 = extractvalue %S.lexer.Token %t68, 1 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_copy(ptr %a71, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - store %S.lexer.Token %t68, ptr %a73 - call void @finch.drop.S_lexer_Token(ptr %a73) - %t74 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 1 - %t75 = load { ptr, i64, i64 }, ptr %t74 - store { ptr, i64, i64 } %t72, ptr %t74 - store { ptr, i64, i64 } %t75, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load ptr, ptr %a1 - %t78 = call i1 @finch.parser.accept(ptr %t77, { ptr, i64, i64 } { ptr @.str.846, i64 1, i64 0 }) - br i1 %t78, label %then1512, label %endif1514 -then1512: - %t79 = getelementptr inbounds %S.ast.Node, ptr %a39, i32 0, i32 9 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load ptr, ptr %a1 - %t82 = call %S.ast.Node @finch.parser.parseExpr(ptr %t81) - %t83 = load i64, ptr %t80 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t79, i64 %t84, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t79 - %t86 = getelementptr inbounds %S.ast.Node, ptr %t85, i64 %t83 - store %S.ast.Node %t82, ptr %t86 - store i64 %t84, ptr %t80 - br label %endif1514 -endif1514: - %t87 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %t87, i32 0, i32 1 - %t89 = load %S.ast.Node, ptr %a39 - store %S.ast.Node %t89, ptr %a90 - call void @finch.copy.S_ast_Node(ptr %a91, ptr %a90) - %t92 = load %S.ast.Node, ptr %a91 - %t93 = load i64, ptr %t88 - %t94 = add i64 %t93, 1 - call void @finch_arr_reserve(ptr %t87, i64 %t94, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t95 = load ptr, ptr %t87 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 %t93 - store %S.ast.Node %t92, ptr %t96 - store i64 %t94, ptr %t88 - %t97 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t97) - call void @finch.drop.S_ast_Node(ptr %a39) - br label %while.cond1503 -while.end1505: - %t98 = load ptr, ptr %a1 - %t99 = call %S.lexer.Token @finch.parser.next(ptr %t98) - store %S.lexer.Token %t99, ptr %a100 - call void @finch.drop.S_lexer_Token(ptr %a100) - %t101 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t101 -} - -define internal %S.ast.Node @finch.parser.parseFn(ptr %p0) { -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 - %a16 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lexer.Token, align 16 - %a26 = alloca %S.lexer.Token, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca %S.lexer.Token, align 16 - %a77 = alloca %S.ast.Node, align 16 - %a82 = alloca %S.ast.Type, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca %S.lexer.Token, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - %a113 = alloca %S.lexer.Token, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca %S.lexer.Token, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.847, 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.848, 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.849, i64 5, i64 0 }) - br label %logic.from1515 -logic.from1515: - br i1 %t9, label %logic.rhs1516, label %logic.end1517 -logic.rhs1516: - %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 - store %S.lexer.Token %t11, ptr %a16 - call void @finch.drop.S_lexer_Token(ptr %a16) - %t17 = call i1 @finch.parser.isTypeName({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend1518 -logic.rend1518: - br label %logic.end1517 -logic.end1517: - %t19 = phi i1 [ false, %logic.from1515 ], [ %t17, %logic.rend1518 ] - br i1 %t19, label %then1519, label %endif1521 -then1519: - %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.850, i64 68, i64 0 }) - store %S.lexer.Token %t22, ptr %a23 - call void @finch.drop.S_lexer_Token(ptr %a23) - br label %endif1521 -endif1521: - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.expect(ptr %t24, { ptr, i64, i64 } { ptr @.str.851, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.852, i64 26, i64 0 }) - store %S.lexer.Token %t25, ptr %a26 - call void @finch.drop.S_lexer_Token(ptr %a26) - %t27 = load ptr, ptr %a1 - %t28 = call %S.lexer.Token @finch.parser.expect(ptr %t27, { ptr, i64, i64 } { ptr @.str.853, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.854, i64 15, i64 0 }) - %t29 = extractvalue %S.lexer.Token %t28, 1 - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_copy(ptr %a31, ptr %a30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store %S.lexer.Token %t28, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t32, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call i1 @finch.parser.at(ptr %t37, { ptr, i64, i64 } { ptr @.str.855, i64 1, i64 0 }) - br i1 %t38, label %then1522, label %endif1524 -then1522: - %t39 = load ptr, ptr %a1 - %t40 = call { ptr, i64, i64 } @finch.parser.parseTParams(ptr %t39) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 3 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t40, ptr %t41 - store { ptr, i64, i64 } %t42, ptr %a43 - call void @finch.drop.arr_str(ptr %a43) - br label %endif1524 -endif1524: - %t44 = load ptr, ptr %a1 - %t45 = call i1 @finch.parser.accept(ptr %t44, { ptr, i64, i64 } { ptr @.str.856, i64 1, i64 0 }) - br i1 %t45, label %then1525, label %endif1527 -then1525: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - %t48 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t47, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t51, ptr %t48 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = call %S.lexer.Token @finch.parser.expect(ptr %t54, { ptr, i64, i64 } { ptr @.str.857, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.858, i64 13, i64 0 }) - %t56 = extractvalue %S.lexer.Token %t55, 1 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - store %S.lexer.Token %t55, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t59, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_drop(ptr %a63) - br label %endif1527 -endif1527: - %t64 = load ptr, ptr %a1 - %t65 = call %S.lexer.Token @finch.parser.expect(ptr %t64, { ptr, i64, i64 } { ptr @.str.859, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.860, i64 3, i64 0 }) - store %S.lexer.Token %t65, ptr %a66 - call void @finch.drop.S_lexer_Token(ptr %a66) - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic1528, label %ok1529 -panic1528: - call void @finch_panic(ptr @.str.861, i64 446, ptr @.str.862) - unreachable -ok1529: - %t69 = getelementptr inbounds %S.parser.Parser, ptr %t67, i32 0, i32 2 - %t70 = load i64, ptr %t69 - %t71 = add i64 %t70, 1 - store i64 %t71, ptr %t69 - %t72 = load ptr, ptr %a1 - %t73 = call i1 @finch.parser.at(ptr %t72, { ptr, i64, i64 } { ptr @.str.863, i64 1, i64 0 }) - %t74 = xor i1 %t73, true - br i1 %t74, label %then1530, label %endif1532 -then1530: - br label %while.cond1533 -while.cond1533: - br label %while.body1534 -while.body1534: - %t75 = load ptr, ptr %a1 - %t76 = call %S.ast.Node @finch.parser.node(ptr %t75, { ptr, i64, i64 } { ptr @.str.864, i64 5, i64 0 }) - store %S.ast.Node %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Type @finch.parser.parseType(ptr %t78) - %t80 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 5 - %t81 = load %S.ast.Type, ptr %t80 - store %S.ast.Type %t79, ptr %t80 - store %S.ast.Type %t81, ptr %a82 - call void @finch.drop.S_ast_Type(ptr %a82) - %t83 = load ptr, ptr %a1 - %t84 = call %S.lexer.Token @finch.parser.expect(ptr %t83, { ptr, i64, i64 } { ptr @.str.865, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.866, i64 16, i64 0 }) - %t85 = extractvalue %S.lexer.Token %t84, 1 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_copy(ptr %a87, ptr %a86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store %S.lexer.Token %t84, ptr %a89 - call void @finch.drop.S_lexer_Token(ptr %a89) - %t90 = getelementptr inbounds %S.ast.Node, ptr %a77, i32 0, i32 1 - %t91 = load { ptr, i64, i64 }, ptr %t90 - store { ptr, i64, i64 } %t88, ptr %t90 - store { ptr, i64, i64 } %t91, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load %S.ast.Node, ptr %a77 - store %S.ast.Node %t95, ptr %a96 - call void @finch.copy.S_ast_Node(ptr %a97, ptr %a96) - %t98 = load %S.ast.Node, ptr %a97 - %t99 = load i64, ptr %t94 - %t100 = add i64 %t99, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t100, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t101 = load ptr, ptr %t93 - %t102 = getelementptr inbounds %S.ast.Node, ptr %t101, i64 %t99 - store %S.ast.Node %t98, ptr %t102 - store i64 %t100, ptr %t94 - %t103 = load ptr, ptr %a1 - %t104 = call i1 @finch.parser.accept(ptr %t103, { ptr, i64, i64 } { ptr @.str.867, i64 1, i64 0 }) - %t105 = xor i1 %t104, true - br i1 %t105, label %then1536, label %endif1538 -then1536: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.end1535 -endif1538: - call void @finch.drop.S_ast_Node(ptr %a77) - br label %while.cond1533 -while.end1535: - br label %endif1532 -endif1532: - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic1539, label %ok1540 -panic1539: - call void @finch_panic(ptr @.str.868, i64 458, ptr @.str.869) - unreachable -ok1540: - %t108 = getelementptr inbounds %S.parser.Parser, ptr %t106, i32 0, i32 2 - %t109 = load i64, ptr %t108 - %t110 = sub i64 %t109, 1 - store i64 %t110, ptr %t108 - %t111 = load ptr, ptr %a1 - %t112 = call %S.lexer.Token @finch.parser.expect(ptr %t111, { ptr, i64, i64 } { ptr @.str.870, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.871, i64 3, i64 0 }) - store %S.lexer.Token %t112, ptr %a113 - call void @finch.drop.S_lexer_Token(ptr %a113) - %t114 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.872, i64 4, i64 0 }) - %t115 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t116 = load %S.ast.Type, ptr %t115 - store %S.ast.Type %t114, ptr %t115 - store %S.ast.Type %t116, ptr %a117 - call void @finch.drop.S_ast_Type(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = call i1 @finch.parser.accept(ptr %t118, { ptr, i64, i64 } { ptr @.str.873, i64 2, i64 0 }) - br i1 %t119, label %then1541, label %endif1543 -then1541: - %t120 = load ptr, ptr %a1 - %t121 = call i1 @finch.parser.at(ptr %t120, { ptr, i64, i64 } { ptr @.str.874, i64 1, i64 0 }) - %t122 = xor i1 %t121, true - br i1 %t122, label %then1544, label %endif1546 -then1544: - %t123 = load ptr, ptr %a1 - %t124 = call %S.ast.Type @finch.parser.parseType(ptr %t123) - %t125 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t126 = load %S.ast.Type, ptr %t125 - store %S.ast.Type %t124, ptr %t125 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif1546 -endif1546: - %t128 = load ptr, ptr %a1 - %t129 = call i1 @finch.parser.accept(ptr %t128, { ptr, i64, i64 } { ptr @.str.875, i64 1, i64 0 }) - %t130 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - store i1 %t129, ptr %t130 - %t131 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 7 - %t132 = load i1, ptr %t131 - %t133 = xor i1 %t132, true - br label %logic.from1547 -logic.from1547: - br i1 %t133, label %logic.rhs1548, label %logic.end1549 -logic.rhs1548: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 5 - %t135 = getelementptr inbounds %S.ast.Type, ptr %t134, i32 0, i32 0 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t136, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.876, i64 4, i64 0 }, ptr %a138 - %t139 = call i32 @finch_str_eq(ptr %a137, ptr %a138) - %t140 = icmp ne i32 %t139, 0 - br label %logic.rend1550 -logic.rend1550: - br label %logic.end1549 -logic.end1549: - %t141 = phi i1 [ false, %logic.from1547 ], [ %t140, %logic.rend1550 ] - br i1 %t141, label %then1551, label %endif1553 -then1551: - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.lexer.Token @finch.parser.cur(ptr %t143) - %t145 = load ptr, ptr %a1 - %t146 = call %S.lexer.Token @finch.parser.cur(ptr %t145) - %t147 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t146) - store %S.lexer.Token %t146, ptr %a148 - call void @finch.drop.S_lexer_Token(ptr %a148) - store { ptr, i64, i64 } { ptr @.str.877, i64 11, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t147, ptr %a152 - call void @finch_str_drop(ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.878, i64 61, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - call void @finch.parser.fail(ptr %t142, %S.lexer.Token %t144, { ptr, i64, i64 } %t158) - store %S.lexer.Token %t144, ptr %a159 - call void @finch.drop.S_lexer_Token(ptr %a159) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - br label %endif1553 -endif1553: - br label %endif1543 -endif1543: - %t161 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %t161, i32 0, i32 1 - %t163 = load ptr, ptr %a1 - %t164 = call %S.ast.Node @finch.parser.parseBlock(ptr %t163) - %t165 = load i64, ptr %t162 - %t166 = add i64 %t165, 1 - call void @finch_arr_reserve(ptr %t161, i64 %t166, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t167 = load ptr, ptr %t161 - %t168 = getelementptr inbounds %S.ast.Node, ptr %t167, i64 %t165 - store %S.ast.Node %t164, ptr %t168 - store i64 %t166, ptr %t162 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = sub i64 %t172, 1 - %t174 = load { ptr, i64, i64 }, ptr %t169 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range1554, label %inrange1555 -range1554: - call void @finch_panic_index(ptr @.str.879, i64 471, i64 %t173, i64 %t175) - unreachable -inrange1555: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Node, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i32 0, i32 14 - %t180 = load i64, ptr %t179 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t180, ptr %t181 - %t182 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t182 -} - -define internal %S.ast.Node @finch.parser.parseBlock(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - %a12 = alloca i64, align 16 - %a24 = alloca %S.lexer.Token, align 16 - %a41 = alloca %S.lexer.Token, align 16 - %a45 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.880, 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.881, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.882, i64 3, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic1556, label %ok1557 -panic1556: - call void @finch_panic(ptr @.str.883, i64 480, ptr @.str.884) - unreachable -ok1557: - %t10 = getelementptr inbounds %S.parser.Parser, ptr %t8, i32 0, i32 2 - %t11 = load i64, ptr %t10 - store i64 %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic1558, label %ok1559 -panic1558: - call void @finch_panic(ptr @.str.885, i64 481, ptr @.str.886) - unreachable -ok1559: - %t15 = getelementptr inbounds %S.parser.Parser, ptr %t13, i32 0, i32 2 - store i64 0, ptr %t15 - br label %while.cond1560 -while.cond1560: - %t16 = load ptr, ptr %a1 - %t17 = call i1 @finch.parser.at(ptr %t16, { ptr, i64, i64 } { ptr @.str.887, i64 1, i64 0 }) - %t18 = xor i1 %t17, true - br i1 %t18, label %while.body1561, label %while.end1562 -while.body1561: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.888, i64 3, i64 0 }) - br i1 %t20, label %then1563, label %endif1565 -then1563: - %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.889, i64 35, i64 0 }) - store %S.lexer.Token %t23, ptr %a24 - call void @finch.drop.S_lexer_Token(ptr %a24) - br label %endif1565 -endif1565: - %t25 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.parseStatement(ptr %t27) - %t29 = load i64, ptr %t26 - %t30 = add i64 %t29, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t30, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t31 = load ptr, ptr %t25 - %t32 = getelementptr inbounds %S.ast.Node, ptr %t31, i64 %t29 - store %S.ast.Node %t28, ptr %t32 - store i64 %t30, ptr %t26 - %t33 = load ptr, ptr %a1 - call void @finch.parser.endOfStatement(ptr %t33) - br label %while.cond1560 -while.end1562: - %t34 = load i64, ptr %a12 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic1566, label %ok1567 -panic1566: - call void @finch_panic(ptr @.str.890, i64 489, ptr @.str.891) - unreachable -ok1567: - %t37 = getelementptr inbounds %S.parser.Parser, ptr %t35, i32 0, i32 2 - store i64 %t34, ptr %t37 - %t38 = load ptr, ptr %a1 - %t39 = call %S.lexer.Token @finch.parser.cur(ptr %t38) - %t40 = extractvalue %S.lexer.Token %t39, 2 - store %S.lexer.Token %t39, ptr %a41 - call void @finch.drop.S_lexer_Token(ptr %a41) - %t42 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 14 - store i64 %t40, ptr %t42 - %t43 = load ptr, ptr %a1 - %t44 = call %S.lexer.Token @finch.parser.next(ptr %t43) - store %S.lexer.Token %t44, ptr %a45 - call void @finch.drop.S_lexer_Token(ptr %a45) - %t46 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t46 -} - -define internal %S.ast.Node @finch.parser.parseStatement(ptr %p0) { -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 - %a22 = alloca %S.lexer.Token, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.ast.Node, align 16 - %a50 = alloca %S.lexer.Token, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca %S.lexer.Token, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.lexer.Token, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Node, align 16 - %a131 = alloca %S.lexer.Token, align 16 - %a138 = alloca %S.lexer.Token, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.ast.Node, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca %S.ast.Node, align 16 - %a186 = alloca %S.lexer.Token, align 16 - %a192 = alloca %S.lexer.Token, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.lexer.Token, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Node, align 16 - %a250 = alloca %S.ast.Type, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca %S.lexer.Token, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca %S.ast.Node, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca %S.lexer.Token, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.lexer.Token, align 16 - %a309 = alloca %S.lexer.Token, align 16 - %a312 = alloca %S.ast.Node, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca i64, align 16 - %a331 = alloca i64, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca %S.ast.Node, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca %S.lexer.Token, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca %S.ast.Node, align 16 - %a396 = alloca %S.ast.Node, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Node, align 16 - %a456 = alloca %S.ast.Node, align 16 - %a457 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t2) - store { ptr, i64, i64 } %t3, ptr %a4 - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.892, 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 %then1568, label %endif1570 -then1568: - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseIf(ptr %t10) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t11 -endif1570: - %t12 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.893, 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 %then1571, label %endif1573 -then1571: - %t17 = load ptr, ptr %a1 - %t18 = call %S.ast.Node @finch.parser.node(ptr %t17, { ptr, i64, i64 } { ptr @.str.894, 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) - store %S.lexer.Token %t21, ptr %a22 - call void @finch.drop.S_lexer_Token(ptr %a22) - %t23 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t23, i32 0, i32 1 - %t25 = load ptr, ptr %a1 - %t26 = call %S.ast.Node @finch.parser.parseExpr(ptr %t25) - %t27 = load i64, ptr %t24 - %t28 = add i64 %t27, 1 - call void @finch_arr_reserve(ptr %t23, i64 %t28, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t29 = load ptr, ptr %t23 - %t30 = getelementptr inbounds %S.ast.Node, ptr %t29, i64 %t27 - store %S.ast.Node %t26, ptr %t30 - store i64 %t28, ptr %t24 - %t31 = getelementptr inbounds %S.ast.Node, ptr %a19, i32 0, i32 9 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t31, i32 0, i32 1 - %t33 = load ptr, ptr %a1 - %t34 = call %S.ast.Node @finch.parser.parseBlock(ptr %t33) - %t35 = load i64, ptr %t32 - %t36 = add i64 %t35, 1 - call void @finch_arr_reserve(ptr %t31, i64 %t36, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t37 = load ptr, ptr %t31 - %t38 = getelementptr inbounds %S.ast.Node, ptr %t37, i64 %t35 - store %S.ast.Node %t34, ptr %t38 - store i64 %t36, ptr %t32 - %t39 = load %S.ast.Node, ptr %a19 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t39 -endif1573: - %t40 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.895, i64 3, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br i1 %t44, label %then1574, label %endif1576 -then1574: - %t45 = load ptr, ptr %a1 - %t46 = call %S.ast.Node @finch.parser.node(ptr %t45, { ptr, i64, i64 } { ptr @.str.896, i64 3, i64 0 }) - store %S.ast.Node %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = call %S.lexer.Token @finch.parser.next(ptr %t48) - store %S.lexer.Token %t49, ptr %a50 - call void @finch.drop.S_lexer_Token(ptr %a50) - %t51 = load ptr, ptr %a1 - %t52 = call %S.lexer.Token @finch.parser.expect(ptr %t51, { ptr, i64, i64 } { ptr @.str.897, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.898, i64 20, i64 0 }) - %t53 = extractvalue %S.lexer.Token %t52, 1 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch_str_copy(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store %S.lexer.Token %t52, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 1 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } %t56, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = call i1 @finch.parser.accept(ptr %t61, { ptr, i64, i64 } { ptr @.str.899, i64 1, i64 0 }) - br i1 %t62, label %then1577, label %endif1579 -then1577: - %t63 = load ptr, ptr %a1 - %t64 = call %S.lexer.Token @finch.parser.expect(ptr %t63, { ptr, i64, i64 } { ptr @.str.900, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.901, i64 27, i64 0 }) - %t65 = extractvalue %S.lexer.Token %t64, 1 - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_copy(ptr %a67, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store %S.lexer.Token %t64, ptr %a69 - call void @finch.drop.S_lexer_Token(ptr %a69) - %t70 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t68, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif1579 -endif1579: - %t73 = load ptr, ptr %a1 - %t74 = call %S.lexer.Token @finch.parser.expect(ptr %t73, { ptr, i64, i64 } { ptr @.str.902, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.903, i64 4, i64 0 }) - store %S.lexer.Token %t74, ptr %a75 - call void @finch.drop.S_lexer_Token(ptr %a75) - %t76 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = call i1 @finch.parser.accept(ptr %t84, { ptr, i64, i64 } { ptr @.str.904, i64 2, i64 0 }) - br i1 %t85, label %then1580, label %else1581 -then1580: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 4 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = icmp sgt i64 %t88, 0 - br i1 %t89, label %then1583, label %endif1585 -then1583: - %t90 = load ptr, ptr %a1 - %t91 = load ptr, ptr %a1 - %t92 = call %S.lexer.Token @finch.parser.cur(ptr %t91) - call void @finch.parser.fail(ptr %t90, %S.lexer.Token %t92, { ptr, i64, i64 } { ptr @.str.905, i64 55, i64 0 }) - store %S.lexer.Token %t92, ptr %a93 - call void @finch.drop.S_lexer_Token(ptr %a93) - br label %endif1585 -endif1585: - %t94 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load ptr, ptr %a1 - %t97 = call %S.ast.Node @finch.parser.parseExpr(ptr %t96) - %t98 = load i64, ptr %t95 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t99, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 %t98 - store %S.ast.Node %t97, ptr %t101 - store i64 %t99, ptr %t95 - br label %endif1582 -else1581: - %t102 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } { ptr @.str.906, i64 4, i64 0 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif1582 -endif1582: - %t105 = getelementptr inbounds %S.ast.Node, ptr %a47, i32 0, i32 9 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t105, i32 0, i32 1 - %t107 = load ptr, ptr %a1 - %t108 = call %S.ast.Node @finch.parser.parseBlock(ptr %t107) - %t109 = load i64, ptr %t106 - %t110 = add i64 %t109, 1 - call void @finch_arr_reserve(ptr %t105, i64 %t110, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t111 = load ptr, ptr %t105 - %t112 = getelementptr inbounds %S.ast.Node, ptr %t111, i64 %t109 - store %S.ast.Node %t108, ptr %t112 - store i64 %t110, ptr %t106 - %t113 = load %S.ast.Node, ptr %a47 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t113 -endif1576: - %t114 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.907, i64 5, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br i1 %t118, label %then1586, label %endif1588 -then1586: - %t119 = load ptr, ptr %a1 - %t120 = call %S.ast.Node @finch.parser.parseMatch(ptr %t119, i1 false) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t120 -endif1588: - %t121 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.908, i64 6, i64 0 }, ptr %a123 - %t124 = call i32 @finch_str_eq(ptr %a122, ptr %a123) - %t125 = icmp ne i32 %t124, 0 - br i1 %t125, label %then1589, label %endif1591 -then1589: - %t126 = load ptr, ptr %a1 - %t127 = call %S.ast.Node @finch.parser.node(ptr %t126, { ptr, i64, i64 } { ptr @.str.909, i64 6, i64 0 }) - store %S.ast.Node %t127, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = call %S.lexer.Token @finch.parser.next(ptr %t129) - store %S.lexer.Token %t130, ptr %a131 - call void @finch.drop.S_lexer_Token(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = call i1 @finch.parser.at(ptr %t132, { ptr, i64, i64 } { ptr @.str.910, i64 1, i64 0 }) - %t134 = xor i1 %t133, true - br label %logic.from1592 -logic.from1592: - br i1 %t134, label %logic.rhs1593, label %logic.end1594 -logic.rhs1593: - %t135 = load ptr, ptr %a1 - %t136 = call %S.lexer.Token @finch.parser.cur(ptr %t135) - %t137 = extractvalue %S.lexer.Token %t136, 4 - store %S.lexer.Token %t136, ptr %a138 - call void @finch.drop.S_lexer_Token(ptr %a138) - %t139 = xor i1 %t137, true - br label %logic.rend1595 -logic.rend1595: - br label %logic.end1594 -logic.end1594: - %t140 = phi i1 [ false, %logic.from1592 ], [ %t139, %logic.rend1595 ] - br i1 %t140, label %then1596, label %endif1598 -then1596: - %t141 = getelementptr inbounds %S.ast.Node, ptr %a128, i32 0, i32 9 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i32 0, i32 1 - %t143 = load ptr, ptr %a1 - %t144 = call %S.ast.Node @finch.parser.parseExpr(ptr %t143) - %t145 = load i64, ptr %t142 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t141, i64 %t146, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t141 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 %t145 - store %S.ast.Node %t144, ptr %t148 - store i64 %t146, ptr %t142 - br label %endif1598 -endif1598: - %t149 = load %S.ast.Node, ptr %a128 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t149 -endif1591: - %t150 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.911, 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.from1599 -logic.from1599: - br i1 %t154, label %logic.end1601, label %logic.rhs1600 -logic.rhs1600: - %t155 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t155, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.912, i64 8, i64 0 }, ptr %a157 - %t158 = call i32 @finch_str_eq(ptr %a156, ptr %a157) - %t159 = icmp ne i32 %t158, 0 - br label %logic.rend1602 -logic.rend1602: - br label %logic.end1601 -logic.end1601: - %t160 = phi i1 [ true, %logic.from1599 ], [ %t159, %logic.rend1602 ] - br i1 %t160, label %then1603, label %endif1605 -then1603: - %t161 = load ptr, ptr %a1 - %t162 = load { ptr, i64, i64 }, ptr %a4 - %t163 = call %S.ast.Node @finch.parser.node(ptr %t161, { ptr, i64, i64 } %t162) - store %S.ast.Node %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = load %S.ast.Node, ptr %a164 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t168 -endif1605: - %t169 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.913, i64 1, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then1606, label %endif1608 -then1606: - %t174 = load ptr, ptr %a1 - %t175 = call %S.ast.Node @finch.parser.parseBlock(ptr %t174) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t175 -endif1608: - %t176 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.914, i64 5, i64 0 }, ptr %a178 - %t179 = call i32 @finch_str_eq(ptr %a177, ptr %a178) - %t180 = icmp ne i32 %t179, 0 - br i1 %t180, label %then1609, label %endif1611 -then1609: - %t181 = load ptr, ptr %a1 - %t182 = call %S.ast.Node @finch.parser.node(ptr %t181, { ptr, i64, i64 } { ptr @.str.915, i64 5, i64 0 }) - store %S.ast.Node %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = call %S.lexer.Token @finch.parser.next(ptr %t184) - store %S.lexer.Token %t185, ptr %a186 - call void @finch.drop.S_lexer_Token(ptr %a186) - %t187 = load ptr, ptr %a1 - %t188 = call i1 @finch.parser.at(ptr %t187, { ptr, i64, i64 } { ptr @.str.916, i64 5, i64 0 }) - br i1 %t188, label %then1612, label %endif1614 -then1612: - %t189 = load ptr, ptr %a1 - %t190 = load ptr, ptr %a1 - %t191 = call %S.lexer.Token @finch.parser.cur(ptr %t190) - call void @finch.parser.fail(ptr %t189, %S.lexer.Token %t191, { ptr, i64, i64 } { ptr @.str.917, i64 33, i64 0 }) - store %S.lexer.Token %t191, ptr %a192 - call void @finch.drop.S_lexer_Token(ptr %a192) - br label %endif1614 -endif1614: - %t193 = getelementptr inbounds %S.ast.Node, ptr %a183, i32 0, i32 9 - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t193, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call %S.ast.Node @finch.parser.parseStatement(ptr %t195) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %t193, i64 %t198, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %t193 - %t200 = getelementptr inbounds %S.ast.Node, ptr %t199, i64 %t197 - store %S.ast.Node %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = load %S.ast.Node, ptr %a183 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t201 -endif1611: - %t202 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.918, i64 2, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.from1615 -logic.from1615: - br i1 %t206, label %logic.end1617, label %logic.rhs1616 -logic.rhs1616: - %t207 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.919, 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.rend1618 -logic.rend1618: - br label %logic.end1617 -logic.end1617: - %t212 = phi i1 [ true, %logic.from1615 ], [ %t211, %logic.rend1618 ] - br label %logic.from1619 -logic.from1619: - br i1 %t212, label %logic.end1621, label %logic.rhs1620 -logic.rhs1620: - %t213 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.920, i64 6, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br label %logic.rend1622 -logic.rend1622: - br label %logic.end1621 -logic.end1621: - %t218 = phi i1 [ true, %logic.from1619 ], [ %t217, %logic.rend1622 ] - br label %logic.from1623 -logic.from1623: - br i1 %t218, label %logic.end1625, label %logic.rhs1624 -logic.rhs1624: - %t219 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t219, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.921, i64 4, i64 0 }, ptr %a221 - %t222 = call i32 @finch_str_eq(ptr %a220, ptr %a221) - %t223 = icmp ne i32 %t222, 0 - br label %logic.rend1626 -logic.rend1626: - br label %logic.end1625 -logic.end1625: - %t224 = phi i1 [ true, %logic.from1623 ], [ %t223, %logic.rend1626 ] - br i1 %t224, label %then1627, label %endif1629 -then1627: - %t225 = load ptr, ptr %a1 - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.cur(ptr %t226) - %t228 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.922, i64 1, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.923, i64 48, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - call void @finch.parser.fail(ptr %t225, %S.lexer.Token %t227, { ptr, i64, i64 } %t237) - store %S.lexer.Token %t227, ptr %a238 - call void @finch.drop.S_lexer_Token(ptr %a238) - store { ptr, i64, i64 } %t237, ptr %a239 - call void @finch_str_drop(ptr %a239) - br label %endif1629 -endif1629: - %t240 = load ptr, ptr %a1 - %t241 = call i1 @finch.parser.atDeclaration(ptr %t240) - br i1 %t241, label %then1630, label %endif1632 -then1630: - %t242 = load ptr, ptr %a1 - %t243 = call %S.ast.Node @finch.parser.node(ptr %t242, { ptr, i64, i64 } { ptr @.str.924, i64 4, i64 0 }) - store %S.ast.Node %t243, ptr %a244 - %t245 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 6 - store i1 true, ptr %t245 - %t246 = load ptr, ptr %a1 - %t247 = call %S.ast.Type @finch.parser.parseType(ptr %t246) - %t248 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 5 - %t249 = load %S.ast.Type, ptr %t248 - store %S.ast.Type %t247, ptr %t248 - store %S.ast.Type %t249, ptr %a250 - call void @finch.drop.S_ast_Type(ptr %a250) - %t251 = load ptr, ptr %a1 - %t252 = call %S.lexer.Token @finch.parser.expect(ptr %t251, { ptr, i64, i64 } { ptr @.str.925, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.926, i64 15, i64 0 }) - %t253 = extractvalue %S.lexer.Token %t252, 1 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - store %S.lexer.Token %t252, ptr %a257 - call void @finch.drop.S_lexer_Token(ptr %a257) - %t258 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 1 - %t259 = load { ptr, i64, i64 }, ptr %t258 - store { ptr, i64, i64 } %t256, ptr %t258 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = call i1 @finch.parser.accept(ptr %t261, { ptr, i64, i64 } { ptr @.str.927, i64 1, i64 0 }) - br i1 %t262, label %then1633, label %endif1635 -then1633: - %t263 = getelementptr inbounds %S.ast.Node, ptr %a244, i32 0, i32 9 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load ptr, ptr %a1 - %t266 = call %S.ast.Node @finch.parser.parseExpr(ptr %t265) - %t267 = load i64, ptr %t264 - %t268 = add i64 %t267, 1 - call void @finch_arr_reserve(ptr %t263, i64 %t268, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t269 = load ptr, ptr %t263 - %t270 = getelementptr inbounds %S.ast.Node, ptr %t269, i64 %t267 - store %S.ast.Node %t266, ptr %t270 - store i64 %t268, ptr %t264 - br label %endif1635 -endif1635: - %t271 = load %S.ast.Node, ptr %a244 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t271 -endif1632: - %t272 = load ptr, ptr %a1 - %t273 = call i1 @finch.parser.at(ptr %t272, { ptr, i64, i64 } { ptr @.str.928, i64 5, i64 0 }) - br label %logic.from1636 -logic.from1636: - br i1 %t273, label %logic.rhs1637, label %logic.end1638 -logic.rhs1637: - %t274 = load ptr, ptr %a1 - %t275 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t274, i64 1) - store { ptr, i64, i64 } %t275, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.929, i64 2, i64 0 }, ptr %a277 - %t278 = call i32 @finch_str_eq(ptr %a276, ptr %a277) - %t279 = icmp ne i32 %t278, 0 - store { ptr, i64, i64 } %t275, ptr %a280 - call void @finch_str_drop(ptr %a280) - br label %logic.rend1639 -logic.rend1639: - br label %logic.end1638 -logic.end1638: - %t281 = phi i1 [ false, %logic.from1636 ], [ %t279, %logic.rend1639 ] - br i1 %t281, label %then1640, label %endif1642 -then1640: - %t282 = load ptr, ptr %a1 - %t283 = call %S.ast.Node @finch.parser.node(ptr %t282, { ptr, i64, i64 } { ptr @.str.930, i64 4, i64 0 }) - store %S.ast.Node %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = call %S.lexer.Token @finch.parser.next(ptr %t285) - %t287 = extractvalue %S.lexer.Token %t286, 1 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_copy(ptr %a289, ptr %a288) - %t290 = load { ptr, i64, i64 }, ptr %a289 - store %S.lexer.Token %t286, ptr %a291 - call void @finch.drop.S_lexer_Token(ptr %a291) - %t292 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 1 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } %t290, ptr %t292 - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load ptr, ptr %a1 - %t296 = call %S.lexer.Token @finch.parser.next(ptr %t295) - store %S.lexer.Token %t296, ptr %a297 - call void @finch.drop.S_lexer_Token(ptr %a297) - %t298 = getelementptr inbounds %S.ast.Node, ptr %a284, i32 0, i32 9 - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i32 0, i32 1 - %t300 = load ptr, ptr %a1 - %t301 = call %S.ast.Node @finch.parser.parseExpr(ptr %t300) - %t302 = load i64, ptr %t299 - %t303 = add i64 %t302, 1 - call void @finch_arr_reserve(ptr %t298, i64 %t303, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t304 = load ptr, ptr %t298 - %t305 = getelementptr inbounds %S.ast.Node, ptr %t304, i64 %t302 - store %S.ast.Node %t301, ptr %t305 - store i64 %t303, ptr %t299 - %t306 = load %S.ast.Node, ptr %a284 - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t306 -endif1642: - %t307 = load ptr, ptr %a1 - %t308 = call %S.lexer.Token @finch.parser.cur(ptr %t307) - store %S.lexer.Token %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = call %S.ast.Node @finch.parser.parseExpr(ptr %t310) - store %S.ast.Node %t311, ptr %a312 - %t313 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t314 = call ptr @finch_alloc(i64 %t313) - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 0 - store { ptr, i64, i64 } { ptr @.str.931, i64 1, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 1 - store { ptr, i64, i64 } { ptr @.str.932, i64 2, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 2 - store { ptr, i64, i64 } { ptr @.str.933, i64 2, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 3 - store { ptr, i64, i64 } { ptr @.str.934, i64 2, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 4 - store { ptr, i64, i64 } { ptr @.str.935, i64 2, i64 0 }, ptr %t319 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 5 - store { ptr, i64, i64 } { ptr @.str.936, i64 2, i64 0 }, ptr %t320 - %t321 = insertvalue { ptr, i64, i64 } undef, ptr %t314, 0 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 1 - %t323 = insertvalue { ptr, i64, i64 } %t322, i64 6, 2 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a324, i32 0, i32 1 - %t326 = load ptr, ptr %a1 - %t327 = call { ptr, i64, i64 } @finch.parser.curKind(ptr %t326) - store i64 -1, ptr %a328 - %t329 = load i64, ptr %t325 - %t330 = load ptr, ptr %a324 - store i64 0, ptr %a331 - br label %find.cond1643 -find.cond1643: - %t332 = load i64, ptr %a331 - %t333 = icmp slt i64 %t332, %t329 - br i1 %t333, label %find.body1644, label %find.end1647 -find.body1644: - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t330, i64 %t332 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } %t327, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %find.hit1645, label %find.next1646 -find.hit1645: - store i64 %t332, ptr %a328 - br label %find.end1647 -find.next1646: - %t340 = add i64 %t332, 1 - store i64 %t340, ptr %a331 - br label %find.cond1643 -find.end1647: - store { ptr, i64, i64 } %t327, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load i64, ptr %a328 - %t343 = icmp sge i64 %t342, 0 - br label %logic.from1648 -logic.from1648: - br i1 %t343, label %logic.rhs1649, label %logic.end1650 -logic.rhs1649: - %t344 = load ptr, ptr %a1 - %t345 = call i1 @finch.parser.sameLine(ptr %t344) - br label %logic.rend1651 -logic.rend1651: - br label %logic.end1650 -logic.end1650: - %t346 = phi i1 [ false, %logic.from1648 ], [ %t345, %logic.rend1651 ] - br i1 %t346, label %then1652, label %endif1654 -then1652: - %t347 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.937, i64 3, i64 0 }, ptr %a350 - %t351 = call i32 @finch_str_eq(ptr %a349, ptr %a350) - %t352 = icmp eq i32 %t351, 0 - br label %logic.from1655 -logic.from1655: - br i1 %t352, label %logic.rhs1656, label %logic.end1657 -logic.rhs1656: - %t353 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t354 = load { ptr, i64, i64 }, ptr %t353 - store { ptr, i64, i64 } %t354, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.938, i64 6, i64 0 }, ptr %a356 - %t357 = call i32 @finch_str_eq(ptr %a355, ptr %a356) - %t358 = icmp eq i32 %t357, 0 - br label %logic.rend1658 -logic.rend1658: - br label %logic.end1657 -logic.end1657: - %t359 = phi i1 [ false, %logic.from1655 ], [ %t358, %logic.rend1658 ] - br label %logic.from1659 -logic.from1659: - br i1 %t359, label %logic.rhs1660, label %logic.end1661 -logic.rhs1660: - %t360 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t361 = load { ptr, i64, i64 }, ptr %t360 - store { ptr, i64, i64 } %t361, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.939, i64 5, i64 0 }, ptr %a363 - %t364 = call i32 @finch_str_eq(ptr %a362, ptr %a363) - %t365 = icmp eq i32 %t364, 0 - br label %logic.rend1662 -logic.rend1662: - br label %logic.end1661 -logic.end1661: - %t366 = phi i1 [ false, %logic.from1659 ], [ %t365, %logic.rend1662 ] - br i1 %t366, label %then1663, label %endif1665 -then1663: - %t367 = load ptr, ptr %a1 - %t368 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t367, %S.lexer.Token %t368, { ptr, i64, i64 } { ptr @.str.940, i64 66, i64 0 }) - br label %endif1665 -endif1665: - %t369 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.941, i64 6, i64 0 }, 0 - %t370 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t371 = load i64, ptr %t370 - %t372 = insertvalue %S.ast.Node %t369, i64 %t371, 11 - %t373 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t374 = load i64, ptr %t373 - %t375 = insertvalue %S.ast.Node %t372, i64 %t374, 12 - %t376 = load ptr, ptr %a1 - %t377 = icmp eq ptr %t376, null - br i1 %t377, label %panic1666, label %ok1667 -panic1666: - call void @finch_panic(ptr @.str.942, i64 584, ptr @.str.943) - unreachable -ok1667: - %t378 = getelementptr inbounds %S.parser.Parser, ptr %t376, i32 0, i32 3 - %t379 = load i64, ptr %t378 - %t380 = insertvalue %S.ast.Node %t375, i64 %t379, 13 - store %S.ast.Node %t380, ptr %a381 - %t382 = load ptr, ptr %a1 - %t383 = call %S.lexer.Token @finch.parser.next(ptr %t382) - %t384 = extractvalue %S.lexer.Token %t383, 0 - store { ptr, i64, i64 } %t384, ptr %a385 - call void @finch_str_copy(ptr %a386, ptr %a385) - %t387 = load { ptr, i64, i64 }, ptr %a386 - store %S.lexer.Token %t383, ptr %a388 - call void @finch.drop.S_lexer_Token(ptr %a388) - %t389 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 1 - %t390 = load { ptr, i64, i64 }, ptr %t389 - store { ptr, i64, i64 } %t387, ptr %t389 - store { ptr, i64, i64 } %t390, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t393 = getelementptr inbounds { ptr, i64, i64 }, ptr %t392, i32 0, i32 1 - %t394 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t394, ptr %a395 - call void @finch.copy.S_ast_Node(ptr %a396, ptr %a395) - %t397 = load %S.ast.Node, ptr %a396 - %t398 = load i64, ptr %t393 - %t399 = add i64 %t398, 1 - call void @finch_arr_reserve(ptr %t392, i64 %t399, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t400 = load ptr, ptr %t392 - %t401 = getelementptr inbounds %S.ast.Node, ptr %t400, i64 %t398 - store %S.ast.Node %t397, ptr %t401 - store i64 %t399, ptr %t393 - %t402 = getelementptr inbounds %S.ast.Node, ptr %a381, i32 0, i32 9 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - %t404 = load ptr, ptr %a1 - %t405 = call %S.ast.Node @finch.parser.parseExpr(ptr %t404) - %t406 = load i64, ptr %t403 - %t407 = add i64 %t406, 1 - call void @finch_arr_reserve(ptr %t402, i64 %t407, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t408 = load ptr, ptr %t402 - %t409 = getelementptr inbounds %S.ast.Node, ptr %t408, i64 %t406 - store %S.ast.Node %t405, ptr %t409 - store i64 %t407, ptr %t403 - %t410 = load %S.ast.Node, ptr %a381 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t410 -endif1654: - %t411 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t412 = load { ptr, i64, i64 }, ptr %t411 - store { ptr, i64, i64 } %t412, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.944, i64 4, i64 0 }, ptr %a414 - %t415 = call i32 @finch_str_eq(ptr %a413, ptr %a414) - %t416 = icmp eq i32 %t415, 0 - br label %logic.from1668 -logic.from1668: - br i1 %t416, label %logic.rhs1669, label %logic.end1670 -logic.rhs1669: - %t417 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t418 = load { ptr, i64, i64 }, ptr %t417 - store { ptr, i64, i64 } %t418, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.945, i64 6, i64 0 }, ptr %a420 - %t421 = call i32 @finch_str_eq(ptr %a419, ptr %a420) - %t422 = icmp eq i32 %t421, 0 - br label %logic.rend1671 -logic.rend1671: - br label %logic.end1670 -logic.end1670: - %t423 = phi i1 [ false, %logic.from1668 ], [ %t422, %logic.rend1671 ] - br label %logic.from1672 -logic.from1672: - br i1 %t423, label %logic.rhs1673, label %logic.end1674 -logic.rhs1673: - %t424 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.946, i64 3, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br label %logic.rend1675 -logic.rend1675: - br label %logic.end1674 -logic.end1674: - %t430 = phi i1 [ false, %logic.from1672 ], [ %t429, %logic.rend1675 ] - br label %logic.from1676 -logic.from1676: - br i1 %t430, label %logic.rhs1677, label %logic.end1678 -logic.rhs1677: - %t431 = getelementptr inbounds %S.ast.Node, ptr %a312, i32 0, i32 0 - %t432 = load { ptr, i64, i64 }, ptr %t431 - store { ptr, i64, i64 } %t432, ptr %a433 - store { ptr, i64, i64 } { ptr @.str.947, i64 2, i64 0 }, ptr %a434 - %t435 = call i32 @finch_str_eq(ptr %a433, ptr %a434) - %t436 = icmp eq i32 %t435, 0 - br label %logic.rend1679 -logic.rend1679: - br label %logic.end1678 -logic.end1678: - %t437 = phi i1 [ false, %logic.from1676 ], [ %t436, %logic.rend1679 ] - br i1 %t437, label %then1680, label %endif1682 -then1680: - %t438 = load ptr, ptr %a1 - %t439 = load %S.lexer.Token, ptr %a309 - call void @finch.parser.fail(ptr %t438, %S.lexer.Token %t439, { ptr, i64, i64 } { ptr @.str.948, i64 37, i64 0 }) - br label %endif1682 -endif1682: - %t440 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.949, i64 4, i64 0 }, 0 - %t441 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 2 - %t442 = load i64, ptr %t441 - %t443 = insertvalue %S.ast.Node %t440, i64 %t442, 11 - %t444 = getelementptr inbounds %S.lexer.Token, ptr %a309, i32 0, i32 3 - %t445 = load i64, ptr %t444 - %t446 = insertvalue %S.ast.Node %t443, i64 %t445, 12 - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic1683, label %ok1684 -panic1683: - call void @finch_panic(ptr @.str.950, i64 593, ptr @.str.951) - unreachable -ok1684: - %t449 = getelementptr inbounds %S.parser.Parser, ptr %t447, i32 0, i32 3 - %t450 = load i64, ptr %t449 - %t451 = insertvalue %S.ast.Node %t446, i64 %t450, 13 - store %S.ast.Node %t451, ptr %a452 - %t453 = getelementptr inbounds %S.ast.Node, ptr %a452, i32 0, i32 9 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i32 0, i32 1 - %t455 = load %S.ast.Node, ptr %a312 - store %S.ast.Node %t455, ptr %a456 - call void @finch.copy.S_ast_Node(ptr %a457, ptr %a456) - %t458 = load %S.ast.Node, ptr %a457 - %t459 = load i64, ptr %t454 - %t460 = add i64 %t459, 1 - call void @finch_arr_reserve(ptr %t453, i64 %t460, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t461 = load ptr, ptr %t453 - %t462 = getelementptr inbounds %S.ast.Node, ptr %t461, i64 %t459 - store %S.ast.Node %t458, ptr %t462 - store i64 %t460, ptr %t454 - %t463 = load %S.ast.Node, ptr %a452 - call void @finch.drop.arr_str(ptr %a324) - call void @finch.drop.S_ast_Node(ptr %a312) - call void @finch.drop.S_lexer_Token(ptr %a309) - call void @finch_str_drop(ptr %a4) - ret %S.ast.Node %t463 -} - -define internal %S.ast.Node @finch.parser.parseIf(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a7 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.node(ptr %t2, { ptr, i64, i64 } { ptr @.str.952, 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.953, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.954, i64 4, i64 0 }) - store %S.lexer.Token %t6, ptr %a7 - call void @finch.drop.S_lexer_Token(ptr %a7) - %t8 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load ptr, ptr %a1 - %t11 = call %S.ast.Node @finch.parser.parseExpr(ptr %t10) - %t12 = load i64, ptr %t9 - %t13 = add i64 %t12, 1 - call void @finch_arr_reserve(ptr %t8, i64 %t13, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t14 = load ptr, ptr %t8 - %t15 = getelementptr inbounds %S.ast.Node, ptr %t14, i64 %t12 - store %S.ast.Node %t11, ptr %t15 - store i64 %t13, ptr %t9 - %t16 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i32 0, i32 1 - %t18 = load ptr, ptr %a1 - %t19 = call %S.ast.Node @finch.parser.parseBlock(ptr %t18) - %t20 = load i64, ptr %t17 - %t21 = add i64 %t20, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t21, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t22 = load ptr, ptr %t16 - %t23 = getelementptr inbounds %S.ast.Node, ptr %t22, i64 %t20 - store %S.ast.Node %t19, ptr %t23 - store i64 %t21, ptr %t17 - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.accept(ptr %t24, { ptr, i64, i64 } { ptr @.str.955, i64 4, i64 0 }) - br i1 %t25, label %then1685, label %endif1687 -then1685: - %t26 = load ptr, ptr %a1 - %t27 = call i1 @finch.parser.at(ptr %t26, { ptr, i64, i64 } { ptr @.str.956, i64 2, i64 0 }) - br i1 %t27, label %then1688, label %else1689 -then1688: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i32 0, i32 1 - %t30 = load ptr, ptr %a1 - %t31 = call %S.ast.Node @finch.parser.parseIf(ptr %t30) - %t32 = load i64, ptr %t29 - %t33 = add i64 %t32, 1 - call void @finch_arr_reserve(ptr %t28, i64 %t33, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t34 = load ptr, ptr %t28 - %t35 = getelementptr inbounds %S.ast.Node, ptr %t34, i64 %t32 - store %S.ast.Node %t31, ptr %t35 - store i64 %t33, ptr %t29 - br label %endif1690 -else1689: - %t36 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 9 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load ptr, ptr %a1 - %t39 = call %S.ast.Node @finch.parser.parseBlock(ptr %t38) - %t40 = load i64, ptr %t37 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t36 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t37 - br label %endif1690 -endif1690: - br label %endif1687 -endif1687: - %t44 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t44 -} - -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.957, 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 %then1691, label %endif1693 -then1691: - ret i64 1 -endif1693: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.958, 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 %then1694, label %endif1696 -then1694: - ret i64 2 -endif1696: - %t12 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.959, 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.from1697 -logic.from1697: - br i1 %t16, label %logic.end1699, label %logic.rhs1698 -logic.rhs1698: - %t17 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.960, 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.rend1700 -logic.rend1700: - br label %logic.end1699 -logic.end1699: - %t22 = phi i1 [ true, %logic.from1697 ], [ %t21, %logic.rend1700 ] - br label %logic.from1701 -logic.from1701: - br i1 %t22, label %logic.end1703, label %logic.rhs1702 -logic.rhs1702: - %t23 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.961, 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.rend1704 -logic.rend1704: - br label %logic.end1703 -logic.end1703: - %t28 = phi i1 [ true, %logic.from1701 ], [ %t27, %logic.rend1704 ] - br label %logic.from1705 -logic.from1705: - br i1 %t28, label %logic.end1707, label %logic.rhs1706 -logic.rhs1706: - %t29 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.962, 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.rend1708 -logic.rend1708: - br label %logic.end1707 -logic.end1707: - %t34 = phi i1 [ true, %logic.from1705 ], [ %t33, %logic.rend1708 ] - br label %logic.from1709 -logic.from1709: - br i1 %t34, label %logic.end1711, label %logic.rhs1710 -logic.rhs1710: - %t35 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.963, 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.rend1712 -logic.rend1712: - br label %logic.end1711 -logic.end1711: - %t40 = phi i1 [ true, %logic.from1709 ], [ %t39, %logic.rend1712 ] - br label %logic.from1713 -logic.from1713: - br i1 %t40, label %logic.end1715, label %logic.rhs1714 -logic.rhs1714: - %t41 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.964, 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.rend1716 -logic.rend1716: - br label %logic.end1715 -logic.end1715: - %t46 = phi i1 [ true, %logic.from1713 ], [ %t45, %logic.rend1716 ] - br i1 %t46, label %then1717, label %endif1719 -then1717: - ret i64 3 -endif1719: - %t47 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.965, 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.from1720 -logic.from1720: - br i1 %t51, label %logic.end1722, label %logic.rhs1721 -logic.rhs1721: - %t52 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.966, 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.rend1723 -logic.rend1723: - br label %logic.end1722 -logic.end1722: - %t57 = phi i1 [ true, %logic.from1720 ], [ %t56, %logic.rend1723 ] - br label %logic.from1724 -logic.from1724: - br i1 %t57, label %logic.end1726, label %logic.rhs1725 -logic.rhs1725: - %t58 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.967, 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.rend1727 -logic.rend1727: - br label %logic.end1726 -logic.end1726: - %t63 = phi i1 [ true, %logic.from1724 ], [ %t62, %logic.rend1727 ] - br label %logic.from1728 -logic.from1728: - br i1 %t63, label %logic.end1730, label %logic.rhs1729 -logic.rhs1729: - %t64 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.968, 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.rend1731 -logic.rend1731: - br label %logic.end1730 -logic.end1730: - %t69 = phi i1 [ true, %logic.from1728 ], [ %t68, %logic.rend1731 ] - br i1 %t69, label %then1732, label %endif1734 -then1732: - ret i64 4 -endif1734: - %t70 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.969, 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.from1735 -logic.from1735: - br i1 %t74, label %logic.end1737, label %logic.rhs1736 -logic.rhs1736: - %t75 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.970, 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.rend1738 -logic.rend1738: - br label %logic.end1737 -logic.end1737: - %t80 = phi i1 [ true, %logic.from1735 ], [ %t79, %logic.rend1738 ] - br label %logic.from1739 -logic.from1739: - br i1 %t80, label %logic.end1741, label %logic.rhs1740 -logic.rhs1740: - %t81 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.971, 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.rend1742 -logic.rend1742: - br label %logic.end1741 -logic.end1741: - %t86 = phi i1 [ true, %logic.from1739 ], [ %t85, %logic.rend1742 ] - br label %logic.from1743 -logic.from1743: - br i1 %t86, label %logic.end1745, label %logic.rhs1744 -logic.rhs1744: - %t87 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.972, 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.rend1746 -logic.rend1746: - br label %logic.end1745 -logic.end1745: - %t92 = phi i1 [ true, %logic.from1743 ], [ %t91, %logic.rend1746 ] - br label %logic.from1747 -logic.from1747: - br i1 %t92, label %logic.end1749, label %logic.rhs1748 -logic.rhs1748: - %t93 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t93, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.973, 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.rend1750 -logic.rend1750: - br label %logic.end1749 -logic.end1749: - %t98 = phi i1 [ true, %logic.from1747 ], [ %t97, %logic.rend1750 ] - br label %logic.from1751 -logic.from1751: - br i1 %t98, label %logic.end1753, label %logic.rhs1752 -logic.rhs1752: - %t99 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.974, 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.rend1754 -logic.rend1754: - br label %logic.end1753 -logic.end1753: - %t104 = phi i1 [ true, %logic.from1751 ], [ %t103, %logic.rend1754 ] - br i1 %t104, label %then1755, label %endif1757 -then1755: - ret i64 5 -endif1757: - 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 - %a15 = alloca %S.ast.Node, align 16 - %a18 = alloca %S.lexer.Token, align 16 - %a22 = alloca %S.ast.Node, align 16 - %a23 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parseBinary(ptr %t2, i64 1) - 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.from1758 -logic.from1758: - br i1 %t7, label %logic.end1760, label %logic.rhs1759 -logic.rhs1759: - %t8 = load ptr, ptr %a1 - %t9 = call i1 @finch.parser.at(ptr %t8, { ptr, i64, i64 } { ptr @.str.975, i64 2, i64 0 }) - %t10 = xor i1 %t9, true - br label %logic.rend1761 -logic.rend1761: - br label %logic.end1760 -logic.end1760: - %t11 = phi i1 [ true, %logic.from1758 ], [ %t10, %logic.rend1761 ] - br i1 %t11, label %then1762, label %endif1764 -then1762: - %t12 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t12 -endif1764: - %t13 = load ptr, ptr %a1 - %t14 = call %S.ast.Node @finch.parser.node(ptr %t13, { ptr, i64, i64 } { ptr @.str.976, i64 2, i64 0 }) - store %S.ast.Node %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = call %S.lexer.Token @finch.parser.next(ptr %t16) - store %S.lexer.Token %t17, ptr %a18 - call void @finch.drop.S_lexer_Token(ptr %a18) - %t19 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t21, ptr %a22 - call void @finch.copy.S_ast_Node(ptr %a23, ptr %a22) - %t24 = load %S.ast.Node, ptr %a23 - %t25 = load i64, ptr %t20 - %t26 = add i64 %t25, 1 - call void @finch_arr_reserve(ptr %t19, i64 %t26, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t27 = load ptr, ptr %t19 - %t28 = getelementptr inbounds %S.ast.Node, ptr %t27, i64 %t25 - store %S.ast.Node %t24, ptr %t28 - store i64 %t26, ptr %t20 - %t29 = load ptr, ptr %a1 - %t30 = call i1 @finch.parser.at(ptr %t29, { ptr, i64, i64 } { ptr @.str.977, i64 1, i64 0 }) - br i1 %t30, label %then1765, label %else1766 -then1765: - %t31 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 6 - store i1 true, ptr %t31 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i32 0, i32 1 - %t34 = load ptr, ptr %a1 - %t35 = call %S.ast.Node @finch.parser.parseBlock(ptr %t34) - %t36 = load i64, ptr %t33 - %t37 = add i64 %t36, 1 - call void @finch_arr_reserve(ptr %t32, i64 %t37, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t38 = load ptr, ptr %t32 - %t39 = getelementptr inbounds %S.ast.Node, ptr %t38, i64 %t36 - store %S.ast.Node %t35, ptr %t39 - store i64 %t37, ptr %t33 - br label %endif1767 -else1766: - %t40 = getelementptr inbounds %S.ast.Node, ptr %a15, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseExpr(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - br label %endif1767 -endif1767: - %t48 = load %S.ast.Node, ptr %a15 - call void @finch.drop.S_ast_Node(ptr %a4) - ret %S.ast.Node %t48 -} - -define internal %S.ast.Node @finch.parser.parseBinary(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a11 = alloca %S.ast.Node, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.ast.Node, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.lexer.Token, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a38 = alloca %S.ast.Node, align 16 - %a55 = alloca %S.ast.Node, align 16 - %a56 = alloca %S.ast.Node, align 16 - %a59 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load i64, ptr %a2 - %t4 = icmp sgt i64 %t3, 5 - br i1 %t4, label %then1768, label %endif1770 -then1768: - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.parseUnary(ptr %t5) - ret %S.ast.Node %t6 -endif1770: - %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.cond1771 -while.cond1771: - %t12 = load ptr, ptr %a1 - %t13 = call i1 @finch.parser.sameLine(ptr %t12) - br label %logic.from1774 -logic.from1774: - br i1 %t13, label %logic.rhs1775, label %logic.end1776 -logic.rhs1775: - %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) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load i64, ptr %a2 - %t19 = icmp eq i64 %t16, %t18 - br label %logic.rend1777 -logic.rend1777: - br label %logic.end1776 -logic.end1776: - %t20 = phi i1 [ false, %logic.from1774 ], [ %t19, %logic.rend1777 ] - br i1 %t20, label %while.body1772, label %while.end1773 -while.body1772: - %t21 = load ptr, ptr %a1 - %t22 = call %S.ast.Node @finch.parser.node(ptr %t21, { ptr, i64, i64 } { ptr @.str.978, i64 6, i64 0 }) - store %S.ast.Node %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = call %S.lexer.Token @finch.parser.next(ptr %t24) - %t26 = extractvalue %S.lexer.Token %t25, 0 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_copy(ptr %a28, ptr %a27) - %t29 = load { ptr, i64, i64 }, ptr %a28 - store %S.lexer.Token %t25, ptr %a30 - call void @finch.drop.S_lexer_Token(ptr %a30) - %t31 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t29, ptr %t31 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t34, i32 0, i32 1 - %t36 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t36, ptr %a37 - call void @finch.copy.S_ast_Node(ptr %a38, ptr %a37) - %t39 = load %S.ast.Node, ptr %a38 - %t40 = load i64, ptr %t35 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %t34, i64 %t41, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %t34 - %t43 = getelementptr inbounds %S.ast.Node, ptr %t42, i64 %t40 - store %S.ast.Node %t39, ptr %t43 - store i64 %t41, ptr %t35 - %t44 = getelementptr inbounds %S.ast.Node, ptr %a23, i32 0, i32 9 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a2 - %t48 = add i64 %t47, 1 - %t49 = call %S.ast.Node @finch.parser.parseBinary(ptr %t46, i64 %t48) - %t50 = load i64, ptr %t45 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t44, i64 %t51, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t44 - %t53 = getelementptr inbounds %S.ast.Node, ptr %t52, i64 %t50 - store %S.ast.Node %t49, ptr %t53 - store i64 %t51, ptr %t45 - %t54 = load %S.ast.Node, ptr %a23 - store %S.ast.Node %t54, ptr %a55 - call void @finch.copy.S_ast_Node(ptr %a56, ptr %a55) - %t57 = load %S.ast.Node, ptr %a56 - %t58 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t57, ptr %a11 - store %S.ast.Node %t58, ptr %a59 - call void @finch.drop.S_ast_Node(ptr %a59) - call void @finch.drop.S_ast_Node(ptr %a23) - br label %while.cond1771 -while.end1773: - %t60 = load %S.ast.Node, ptr %a11 - ret %S.ast.Node %t60 -} - -define internal %S.ast.Node @finch.parser.parseUnary(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a6 = alloca %S.ast.Node, align 16 - %a9 = alloca %S.lexer.Token, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca %S.lexer.Token, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call i1 @finch.parser.at(ptr %t2, { ptr, i64, i64 } { ptr @.str.979, i64 3, i64 0 }) - br i1 %t3, label %then1778, label %endif1780 -then1778: - %t4 = load ptr, ptr %a1 - %t5 = call %S.ast.Node @finch.parser.node(ptr %t4, { ptr, i64, i64 } { ptr @.str.980, 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) - store %S.lexer.Token %t8, ptr %a9 - call void @finch.drop.S_lexer_Token(ptr %a9) - %t10 = getelementptr inbounds %S.ast.Node, ptr %a6, i32 0, i32 9 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load ptr, ptr %a1 - %t13 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t12) - %t14 = load i64, ptr %t11 - %t15 = add i64 %t14, 1 - call void @finch_arr_reserve(ptr %t10, i64 %t15, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t16 = load ptr, ptr %t10 - %t17 = getelementptr inbounds %S.ast.Node, ptr %t16, i64 %t14 - store %S.ast.Node %t13, ptr %t17 - store i64 %t15, ptr %t11 - %t18 = load %S.ast.Node, ptr %a6 - ret %S.ast.Node %t18 -endif1780: - %t19 = load ptr, ptr %a1 - %t20 = call i1 @finch.parser.at(ptr %t19, { ptr, i64, i64 } { ptr @.str.981, i64 1, i64 0 }) - br label %logic.from1781 -logic.from1781: - br i1 %t20, label %logic.end1783, label %logic.rhs1782 -logic.rhs1782: - %t21 = load ptr, ptr %a1 - %t22 = call i1 @finch.parser.at(ptr %t21, { ptr, i64, i64 } { ptr @.str.982, i64 1, i64 0 }) - br label %logic.rend1784 -logic.rend1784: - br label %logic.end1783 -logic.end1783: - %t23 = phi i1 [ true, %logic.from1781 ], [ %t22, %logic.rend1784 ] - br label %logic.from1785 -logic.from1785: - br i1 %t23, label %logic.end1787, label %logic.rhs1786 -logic.rhs1786: - %t24 = load ptr, ptr %a1 - %t25 = call i1 @finch.parser.at(ptr %t24, { ptr, i64, i64 } { ptr @.str.983, i64 1, i64 0 }) - br label %logic.rend1788 -logic.rend1788: - br label %logic.end1787 -logic.end1787: - %t26 = phi i1 [ true, %logic.from1785 ], [ %t25, %logic.rend1788 ] - br i1 %t26, label %then1789, label %endif1791 -then1789: - %t27 = load ptr, ptr %a1 - %t28 = call %S.ast.Node @finch.parser.node(ptr %t27, { ptr, i64, i64 } { ptr @.str.984, i64 5, i64 0 }) - store %S.ast.Node %t28, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = call %S.lexer.Token @finch.parser.next(ptr %t30) - %t32 = extractvalue %S.lexer.Token %t31, 0 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_copy(ptr %a34, ptr %a33) - %t35 = load { ptr, i64, i64 }, ptr %a34 - store %S.lexer.Token %t31, ptr %a36 - call void @finch.drop.S_lexer_Token(ptr %a36) - %t37 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t35, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = getelementptr inbounds %S.ast.Node, ptr %a29, i32 0, i32 9 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load ptr, ptr %a1 - %t43 = call %S.ast.Node @finch.parser.parseUnary(ptr %t42) - %t44 = load i64, ptr %t41 - %t45 = add i64 %t44, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t45, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t46 = load ptr, ptr %t40 - %t47 = getelementptr inbounds %S.ast.Node, ptr %t46, i64 %t44 - store %S.ast.Node %t43, ptr %t47 - store i64 %t45, ptr %t41 - %t48 = load %S.ast.Node, ptr %a29 - ret %S.ast.Node %t48 -endif1791: - %t49 = load ptr, ptr %a1 - %t50 = call %S.ast.Node @finch.parser.parsePostfix(ptr %t49) - ret %S.ast.Node %t50 -} - -define internal void @finch.parser.parseArgs(ptr %p0, ptr %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca ptr, align 16 - %a5 = alloca %S.lexer.Token, align 16 - %a17 = 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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca %S.lexer.Token, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call %S.lexer.Token @finch.parser.expect(ptr %t3, { ptr, i64, i64 } { ptr @.str.985, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.986, i64 3, i64 0 }) - store %S.lexer.Token %t4, ptr %a5 - call void @finch.drop.S_lexer_Token(ptr %a5) - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic1792, label %ok1793 -panic1792: - call void @finch_panic(ptr @.str.987, i64 686, ptr @.str.988) - unreachable -ok1793: - %t8 = getelementptr inbounds %S.parser.Parser, ptr %t6, i32 0, i32 2 - %t9 = load i64, ptr %t8 - %t10 = add i64 %t9, 1 - store i64 %t10, ptr %t8 - %t11 = load ptr, ptr %a1 - %t12 = call i1 @finch.parser.at(ptr %t11, { ptr, i64, i64 } { ptr @.str.989, i64 1, i64 0 }) - %t13 = xor i1 %t12, true - br i1 %t13, label %then1794, label %endif1796 -then1794: - br label %while.cond1797 -while.cond1797: - %t14 = load ptr, ptr %a1 - %t15 = call i1 @finch.parser.at(ptr %t14, { ptr, i64, i64 } { ptr @.str.990, i64 1, i64 0 }) - %t16 = xor i1 %t15, true - br i1 %t16, label %while.body1798, label %while.end1799 -while.body1798: - store { ptr, i64, i64 } { ptr @.str.991, i64 0, i64 0 }, ptr %a17 - %t18 = load ptr, ptr %a1 - %t19 = call i1 @finch.parser.at(ptr %t18, { ptr, i64, i64 } { ptr @.str.992, i64 5, i64 0 }) - br label %logic.from1800 -logic.from1800: - br i1 %t19, label %logic.rhs1801, label %logic.end1802 -logic.rhs1801: - %t20 = load ptr, ptr %a1 - %t21 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t20, i64 1) - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.993, i64 1, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - br label %logic.rend1803 -logic.rend1803: - br label %logic.end1802 -logic.end1802: - %t27 = phi i1 [ false, %logic.from1800 ], [ %t25, %logic.rend1803 ] - br i1 %t27, label %then1804, label %endif1806 -then1804: - %t28 = load ptr, ptr %a1 - %t29 = call %S.lexer.Token @finch.parser.next(ptr %t28) - %t30 = extractvalue %S.lexer.Token %t29, 1 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_copy(ptr %a32, ptr %a31) - %t33 = load { ptr, i64, i64 }, ptr %a32 - store %S.lexer.Token %t29, ptr %a34 - call void @finch.drop.S_lexer_Token(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t33, ptr %a17 - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.next(ptr %t37) - store %S.lexer.Token %t38, ptr %a39 - call void @finch.drop.S_lexer_Token(ptr %a39) - br label %endif1806 -endif1806: - %t40 = load ptr, ptr %a2 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic1807, label %ok1808 -panic1807: - call void @finch_panic(ptr @.str.994, i64 694, ptr @.str.995) - unreachable -ok1808: - %t42 = getelementptr inbounds %S.ast.Node, ptr %t40, i32 0, i32 10 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - %t48 = load i64, ptr %t43 - %t49 = add i64 %t48, 1 - call void @finch_arr_reserve(ptr %t42, i64 %t49, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t50 = load ptr, ptr %t42 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t48 - store { ptr, i64, i64 } %t47, ptr %t51 - store i64 %t49, ptr %t43 - %t52 = load ptr, ptr %a2 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic1809, label %ok1810 -panic1809: - call void @finch_panic(ptr @.str.996, i64 695, ptr @.str.997) - unreachable -ok1810: - %t54 = getelementptr inbounds %S.ast.Node, ptr %t52, i32 0, i32 9 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i32 0, i32 1 - %t56 = load ptr, ptr %a1 - %t57 = call %S.ast.Node @finch.parser.parseExpr(ptr %t56) - %t58 = load i64, ptr %t55 - %t59 = add i64 %t58, 1 - call void @finch_arr_reserve(ptr %t54, i64 %t59, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t60 = load ptr, ptr %t54 - %t61 = getelementptr inbounds %S.ast.Node, ptr %t60, i64 %t58 - store %S.ast.Node %t57, ptr %t61 - store i64 %t59, ptr %t55 - %t62 = load ptr, ptr %a1 - %t63 = call i1 @finch.parser.accept(ptr %t62, { ptr, i64, i64 } { ptr @.str.998, i64 1, i64 0 }) - %t64 = xor i1 %t63, true - br i1 %t64, label %then1811, label %endif1813 -then1811: - call void @finch_str_drop(ptr %a17) - br label %while.end1799 -endif1813: - call void @finch_str_drop(ptr %a17) - br label %while.cond1797 -while.end1799: - br label %endif1796 -endif1796: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic1814, label %ok1815 -panic1814: - call void @finch_panic(ptr @.str.999, i64 701, ptr @.str.1000) - unreachable -ok1815: - %t67 = getelementptr inbounds %S.parser.Parser, ptr %t65, i32 0, i32 2 - %t68 = load i64, ptr %t67 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %t67 - %t70 = load ptr, ptr %a1 - %t71 = call %S.lexer.Token @finch.parser.expect(ptr %t70, { ptr, i64, i64 } { ptr @.str.1001, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1002, i64 3, i64 0 }) - store %S.lexer.Token %t71, ptr %a72 - call void @finch.drop.S_lexer_Token(ptr %a72) - 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 - %a14 = alloca %S.lexer.Token, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca %S.lexer.Token, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.ast.Node, align 16 - %a29 = alloca %S.ast.Node, align 16 - %a40 = alloca %S.lexer.Token, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca %S.ast.Node, align 16 - %a49 = alloca %S.ast.Node, align 16 - %a52 = alloca %S.ast.Node, align 16 - %a57 = alloca %S.ast.Node, align 16 - %a60 = alloca %S.lexer.Token, align 16 - %a69 = alloca %S.ast.Node, align 16 - %a70 = alloca %S.ast.Node, align 16 - %a91 = alloca %S.lexer.Token, align 16 - %a93 = alloca %S.ast.Node, align 16 - %a94 = alloca %S.ast.Node, align 16 - %a97 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.ast.Node @finch.parser.parsePrimary(ptr %t2) - store %S.ast.Node %t3, ptr %a4 - br label %while.cond1816 -while.cond1816: - %t5 = load ptr, ptr %a1 - %t6 = call i1 @finch.parser.sameLine(ptr %t5) - br i1 %t6, label %while.body1817, label %while.end1818 -while.body1817: - %t7 = load ptr, ptr %a1 - %t8 = call i1 @finch.parser.at(ptr %t7, { ptr, i64, i64 } { ptr @.str.1003, i64 1, i64 0 }) - br i1 %t8, label %then1819, label %else1820 -then1819: - %t9 = load ptr, ptr %a1 - %t10 = call %S.ast.Node @finch.parser.node(ptr %t9, { ptr, i64, i64 } { ptr @.str.1004, 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) - store %S.lexer.Token %t13, ptr %a14 - call void @finch.drop.S_lexer_Token(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = call %S.lexer.Token @finch.parser.expect(ptr %t15, { ptr, i64, i64 } { ptr @.str.1005, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.1006, i64 16, i64 0 }) - %t17 = extractvalue %S.lexer.Token %t16, 1 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_copy(ptr %a19, ptr %a18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store %S.lexer.Token %t16, ptr %a21 - call void @finch.drop.S_lexer_Token(ptr %a21) - %t22 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 1 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t20, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 9 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i32 0, i32 1 - %t27 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t27, ptr %a28 - call void @finch.copy.S_ast_Node(ptr %a29, ptr %a28) - %t30 = load %S.ast.Node, ptr %a29 - %t31 = load i64, ptr %t26 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t25, i64 %t32, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t25 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t31 - store %S.ast.Node %t30, ptr %t34 - store i64 %t32, ptr %t26 - %t35 = load ptr, ptr %a1 - %t36 = call i1 @finch.parser.at(ptr %t35, { ptr, i64, i64 } { ptr @.str.1007, i64 1, i64 0 }) - br label %logic.from1822 -logic.from1822: - br i1 %t36, label %logic.rhs1823, label %logic.end1824 -logic.rhs1823: - %t37 = load ptr, ptr %a1 - %t38 = call %S.lexer.Token @finch.parser.cur(ptr %t37) - %t39 = extractvalue %S.lexer.Token %t38, 4 - store %S.lexer.Token %t38, ptr %a40 - call void @finch.drop.S_lexer_Token(ptr %a40) - %t41 = xor i1 %t39, true - br label %logic.rend1825 -logic.rend1825: - br label %logic.end1824 -logic.end1824: - %t42 = phi i1 [ false, %logic.from1822 ], [ %t41, %logic.rend1825 ] - br i1 %t42, label %then1826, label %endif1828 -then1826: - %t43 = getelementptr inbounds %S.ast.Node, ptr %a11, i32 0, i32 0 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } { ptr @.str.1008, i64 6, i64 0 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t46, ptr %a11) - br label %endif1828 -endif1828: - %t47 = load %S.ast.Node, ptr %a11 - store %S.ast.Node %t47, ptr %a48 - call void @finch.copy.S_ast_Node(ptr %a49, ptr %a48) - %t50 = load %S.ast.Node, ptr %a49 - %t51 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t50, ptr %a4 - store %S.ast.Node %t51, ptr %a52 - call void @finch.drop.S_ast_Node(ptr %a52) - call void @finch.drop.S_ast_Node(ptr %a11) - br label %endif1821 -else1820: - %t53 = load ptr, ptr %a1 - %t54 = call i1 @finch.parser.at(ptr %t53, { ptr, i64, i64 } { ptr @.str.1009, i64 1, i64 0 }) - br i1 %t54, label %then1829, label %else1830 -then1829: - %t55 = load ptr, ptr %a1 - %t56 = call %S.ast.Node @finch.parser.node(ptr %t55, { ptr, i64, i64 } { ptr @.str.1010, i64 5, i64 0 }) - store %S.ast.Node %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = call %S.lexer.Token @finch.parser.next(ptr %t58) - store %S.lexer.Token %t59, ptr %a60 - call void @finch.drop.S_lexer_Token(ptr %a60) - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic1832, label %ok1833 -panic1832: - call void @finch_panic(ptr @.str.1011, i64 721, ptr @.str.1012) - unreachable -ok1833: - %t63 = getelementptr inbounds %S.parser.Parser, ptr %t61, i32 0, i32 2 - %t64 = load i64, ptr %t63 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %t63 - %t66 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i32 0, i32 1 - %t68 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t68, ptr %a69 - call void @finch.copy.S_ast_Node(ptr %a70, ptr %a69) - %t71 = load %S.ast.Node, ptr %a70 - %t72 = load i64, ptr %t67 - %t73 = add i64 %t72, 1 - call void @finch_arr_reserve(ptr %t66, i64 %t73, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t74 = load ptr, ptr %t66 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 %t72 - store %S.ast.Node %t71, ptr %t75 - store i64 %t73, ptr %t67 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a57, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load ptr, ptr %a1 - %t79 = call %S.ast.Node @finch.parser.parseExpr(ptr %t78) - %t80 = load i64, ptr %t77 - %t81 = add i64 %t80, 1 - call void @finch_arr_reserve(ptr %t76, i64 %t81, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t82 = load ptr, ptr %t76 - %t83 = getelementptr inbounds %S.ast.Node, ptr %t82, i64 %t80 - store %S.ast.Node %t79, ptr %t83 - store i64 %t81, ptr %t77 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic1834, label %ok1835 -panic1834: - call void @finch_panic(ptr @.str.1013, i64 724, ptr @.str.1014) - unreachable -ok1835: - %t86 = getelementptr inbounds %S.parser.Parser, ptr %t84, i32 0, i32 2 - %t87 = load i64, ptr %t86 - %t88 = sub i64 %t87, 1 - store i64 %t88, ptr %t86 - %t89 = load ptr, ptr %a1 - %t90 = call %S.lexer.Token @finch.parser.expect(ptr %t89, { ptr, i64, i64 } { ptr @.str.1015, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1016, i64 3, i64 0 }) - store %S.lexer.Token %t90, ptr %a91 - call void @finch.drop.S_lexer_Token(ptr %a91) - %t92 = load %S.ast.Node, ptr %a57 - store %S.ast.Node %t92, ptr %a93 - call void @finch.copy.S_ast_Node(ptr %a94, ptr %a93) - %t95 = load %S.ast.Node, ptr %a94 - %t96 = load %S.ast.Node, ptr %a4 - store %S.ast.Node %t95, ptr %a4 - store %S.ast.Node %t96, ptr %a97 - call void @finch.drop.S_ast_Node(ptr %a97) - call void @finch.drop.S_ast_Node(ptr %a57) - br label %endif1831 -else1830: - %t98 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t98 -endif1831: - br label %endif1821 -endif1821: - br label %while.cond1816 -while.end1818: - %t99 = load %S.ast.Node, ptr %a4 - ret %S.ast.Node %t99 -} - -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 - %a33 = alloca %S.lexer.Token, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.lexer.Token, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca %S.lexer.Token, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.lexer.Token, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.lexer.Token, align 16 - %a122 = alloca %S.ast.Node, align 16 - %a130 = alloca %S.lexer.Token, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca %S.lexer.Token, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca %S.lexer.Token, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.lexer.Token, align 16 - %a219 = alloca %S.lexer.Token, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca %S.lexer.Token, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca %S.lexer.Token, align 16 - %a268 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.lexer.Token, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca %S.lexer.Token, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = call %S.lexer.Token @finch.parser.cur(ptr %t2) - store %S.lexer.Token %t3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call %S.ast.Node @finch.parser.node(ptr %t5, { ptr, i64, i64 } { ptr @.str.1017, 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.1018, 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.from1836 -logic.from1836: - br i1 %t18, label %logic.end1838, label %logic.rhs1837 -logic.rhs1837: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1019, 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.rend1839 -logic.rend1839: - br label %logic.end1838 -logic.end1838: - %t24 = phi i1 [ true, %logic.from1836 ], [ %t23, %logic.rend1839 ] - br label %logic.from1840 -logic.from1840: - br i1 %t24, label %logic.end1842, label %logic.rhs1841 -logic.rhs1841: - %t25 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1020, 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.rend1843 -logic.rend1843: - br label %logic.end1842 -logic.end1842: - %t30 = phi i1 [ true, %logic.from1840 ], [ %t29, %logic.rend1843 ] - br i1 %t30, label %then1844, label %endif1846 -then1844: - %t31 = load ptr, ptr %a1 - %t32 = call %S.lexer.Token @finch.parser.next(ptr %t31) - store %S.lexer.Token %t32, ptr %a33 - call void @finch.drop.S_lexer_Token(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a13 - %t35 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - store { ptr, i64, i64 } %t34, ptr %a36 - call void @finch_str_copy(ptr %a37, ptr %a36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = load { ptr, i64, i64 }, ptr %t35 - store { ptr, i64, i64 } %t38, ptr %t35 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_copy(ptr %a45, ptr %a44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - %t47 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t46, ptr %t43 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t49 -endif1846: - %t50 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1021, i64 6, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then1847, label %endif1849 -then1847: - %t55 = load ptr, ptr %a1 - %t56 = call %S.lexer.Token @finch.parser.next(ptr %t55) - store %S.lexer.Token %t56, ptr %a57 - call void @finch.drop.S_lexer_Token(ptr %a57) - %t58 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } { ptr @.str.1022, i64 3, i64 0 }, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t62, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t66, ptr %t63 - store { ptr, i64, i64 } %t67, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t69 -endif1849: - %t70 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t70, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1023, i64 4, i64 0 }, ptr %a72 - %t73 = call i32 @finch_str_eq(ptr %a71, ptr %a72) - %t74 = icmp ne i32 %t73, 0 - br label %logic.from1850 -logic.from1850: - br i1 %t74, label %logic.end1852, label %logic.rhs1851 -logic.rhs1851: - %t75 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t75, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1024, i64 5, i64 0 }, ptr %a77 - %t78 = call i32 @finch_str_eq(ptr %a76, ptr %a77) - %t79 = icmp ne i32 %t78, 0 - br label %logic.rend1853 -logic.rend1853: - br label %logic.end1852 -logic.end1852: - %t80 = phi i1 [ true, %logic.from1850 ], [ %t79, %logic.rend1853 ] - br i1 %t80, label %then1854, label %endif1856 -then1854: - %t81 = load ptr, ptr %a1 - %t82 = call %S.lexer.Token @finch.parser.next(ptr %t81) - store %S.lexer.Token %t82, ptr %a83 - call void @finch.drop.S_lexer_Token(ptr %a83) - %t84 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } { ptr @.str.1025, i64 4, i64 0 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a13 - %t88 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 4 - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t94 -endif1856: - %t95 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.1026, i64 4, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then1857, label %endif1859 -then1857: - %t100 = load ptr, ptr %a1 - %t101 = call %S.lexer.Token @finch.parser.next(ptr %t100) - store %S.lexer.Token %t101, ptr %a102 - call void @finch.drop.S_lexer_Token(ptr %a102) - %t103 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } { ptr @.str.1027, i64 4, i64 0 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t106 -endif1859: - %t107 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1028, i64 1, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then1860, label %endif1862 -then1860: - %t112 = load ptr, ptr %a1 - %t113 = call %S.lexer.Token @finch.parser.next(ptr %t112) - store %S.lexer.Token %t113, ptr %a114 - call void @finch.drop.S_lexer_Token(ptr %a114) - %t115 = load ptr, ptr %a1 - %t116 = icmp eq ptr %t115, null - br i1 %t116, label %panic1863, label %ok1864 -panic1863: - call void @finch_panic(ptr @.str.1029, i64 763, ptr @.str.1030) - unreachable -ok1864: - %t117 = getelementptr inbounds %S.parser.Parser, ptr %t115, i32 0, i32 2 - %t118 = load i64, ptr %t117 - %t119 = add i64 %t118, 1 - store i64 %t119, ptr %t117 - %t120 = load ptr, ptr %a1 - %t121 = call %S.ast.Node @finch.parser.parseExpr(ptr %t120) - store %S.ast.Node %t121, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic1865, label %ok1866 -panic1865: - call void @finch_panic(ptr @.str.1031, i64 765, ptr @.str.1032) - unreachable -ok1866: - %t125 = getelementptr inbounds %S.parser.Parser, ptr %t123, i32 0, i32 2 - %t126 = load i64, ptr %t125 - %t127 = sub i64 %t126, 1 - store i64 %t127, ptr %t125 - %t128 = load ptr, ptr %a1 - %t129 = call %S.lexer.Token @finch.parser.expect(ptr %t128, { ptr, i64, i64 } { ptr @.str.1033, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1034, i64 3, i64 0 }) - store %S.lexer.Token %t129, ptr %a130 - call void @finch.drop.S_lexer_Token(ptr %a130) - %t131 = load %S.ast.Node, ptr %a122 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t131 -endif1862: - %t132 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t132, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1035, i64 5, i64 0 }, ptr %a134 - %t135 = call i32 @finch_str_eq(ptr %a133, ptr %a134) - %t136 = icmp ne i32 %t135, 0 - br i1 %t136, label %then1867, label %endif1869 -then1867: - %t137 = load ptr, ptr %a1 - %t138 = call %S.ast.Node @finch.parser.parseMatch(ptr %t137, i1 true) - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_ast_Node(ptr %a7) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t138 -endif1869: - %t139 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1036, i64 1, i64 0 }, ptr %a141 - %t142 = call i32 @finch_str_eq(ptr %a140, ptr %a141) - %t143 = icmp ne i32 %t142, 0 - br i1 %t143, label %then1870, label %endif1872 -then1870: - %t144 = load ptr, ptr %a1 - %t145 = call %S.lexer.Token @finch.parser.next(ptr %t144) - store %S.lexer.Token %t145, ptr %a146 - call void @finch.drop.S_lexer_Token(ptr %a146) - %t147 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.1037, i64 5, i64 0 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic1873, label %ok1874 -panic1873: - call void @finch_panic(ptr @.str.1038, i64 775, ptr @.str.1039) - unreachable -ok1874: - %t152 = getelementptr inbounds %S.parser.Parser, ptr %t150, i32 0, i32 2 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - store i64 %t154, ptr %t152 - %t155 = load ptr, ptr %a1 - %t156 = call i1 @finch.parser.at(ptr %t155, { ptr, i64, i64 } { ptr @.str.1040, i64 1, i64 0 }) - br label %logic.from1875 -logic.from1875: - br i1 %t156, label %logic.rhs1876, label %logic.end1877 -logic.rhs1876: - %t157 = load ptr, ptr %a1 - %t158 = call { ptr, i64, i64 } @finch.parser.peekKind(ptr %t157, i64 1) - store { ptr, i64, i64 } %t158, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.1041, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_eq(ptr %a159, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - br label %logic.rend1878 -logic.rend1878: - br label %logic.end1877 -logic.end1877: - %t164 = phi i1 [ false, %logic.from1875 ], [ %t162, %logic.rend1878 ] - br i1 %t164, label %then1879, label %endif1881 -then1879: - %t165 = load ptr, ptr %a1 - %t166 = call %S.lexer.Token @finch.parser.next(ptr %t165) - store %S.lexer.Token %t166, ptr %a167 - call void @finch.drop.S_lexer_Token(ptr %a167) - %t168 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } { ptr @.str.1042, i64 3, i64 0 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_drop(ptr %a170) - br label %endif1881 -endif1881: - br label %while.cond1882 -while.cond1882: - %t171 = load ptr, ptr %a1 - %t172 = call i1 @finch.parser.at(ptr %t171, { ptr, i64, i64 } { ptr @.str.1043, i64 1, i64 0 }) - %t173 = xor i1 %t172, true - br i1 %t173, label %while.body1883, label %while.end1884 -while.body1883: - %t174 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %t174, i32 0, i32 1 - %t176 = load ptr, ptr %a1 - %t177 = call %S.ast.Node @finch.parser.parseExpr(ptr %t176) - %t178 = load i64, ptr %t175 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t174, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t174 - %t181 = getelementptr inbounds %S.ast.Node, ptr %t180, i64 %t178 - store %S.ast.Node %t177, ptr %t181 - store i64 %t179, ptr %t175 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = icmp eq i64 %t184, 1 - br label %logic.from1885 -logic.from1885: - br i1 %t185, label %logic.rhs1886, label %logic.end1887 -logic.rhs1886: - %t186 = load ptr, ptr %a1 - %t187 = call i1 @finch.parser.at(ptr %t186, { ptr, i64, i64 } { ptr @.str.1044, i64 1, i64 0 }) - br label %logic.rend1888 -logic.rend1888: - br label %logic.end1887 -logic.end1887: - %t188 = phi i1 [ false, %logic.from1885 ], [ %t187, %logic.rend1888 ] - br i1 %t188, label %then1889, label %endif1891 -then1889: - %t189 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.1045, i64 3, i64 0 }, ptr %t189 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - br label %endif1891 -endif1891: - %t192 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.1046, i64 3, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then1892, label %endif1894 -then1892: - %t198 = load ptr, ptr %a1 - %t199 = call %S.lexer.Token @finch.parser.expect(ptr %t198, { ptr, i64, i64 } { ptr @.str.1047, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1048, i64 41, i64 0 }) - store %S.lexer.Token %t199, ptr %a200 - call void @finch.drop.S_lexer_Token(ptr %a200) - %t201 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 9 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load ptr, ptr %a1 - %t204 = call %S.ast.Node @finch.parser.parseExpr(ptr %t203) - %t205 = load i64, ptr %t202 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t201, i64 %t206, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t201 - %t208 = getelementptr inbounds %S.ast.Node, ptr %t207, i64 %t205 - store %S.ast.Node %t204, ptr %t208 - store i64 %t206, ptr %t202 - br label %endif1894 -endif1894: - %t209 = load ptr, ptr %a1 - %t210 = call i1 @finch.parser.accept(ptr %t209, { ptr, i64, i64 } { ptr @.str.1049, i64 1, i64 0 }) - %t211 = xor i1 %t210, true - br i1 %t211, label %then1895, label %endif1897 -then1895: - br label %while.end1884 -endif1897: - br label %while.cond1882 -while.end1884: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic1898, label %ok1899 -panic1898: - call void @finch_panic(ptr @.str.1050, i64 793, ptr @.str.1051) - unreachable -ok1899: - %t214 = getelementptr inbounds %S.parser.Parser, ptr %t212, i32 0, i32 2 - %t215 = load i64, ptr %t214 - %t216 = sub i64 %t215, 1 - store i64 %t216, ptr %t214 - %t217 = load ptr, ptr %a1 - %t218 = call %S.lexer.Token @finch.parser.expect(ptr %t217, { ptr, i64, i64 } { ptr @.str.1052, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1053, i64 3, i64 0 }) - store %S.lexer.Token %t218, ptr %a219 - call void @finch.drop.S_lexer_Token(ptr %a219) - %t220 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t220 -endif1872: - %t221 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t221, ptr %a222 - store { ptr, i64, i64 } { ptr @.str.1054, i64 5, i64 0 }, ptr %a223 - %t224 = call i32 @finch_str_eq(ptr %a222, ptr %a223) - %t225 = icmp ne i32 %t224, 0 - br i1 %t225, label %then1900, label %endif1902 -then1900: - %t226 = load ptr, ptr %a1 - %t227 = call %S.lexer.Token @finch.parser.next(ptr %t226) - store %S.lexer.Token %t227, ptr %a228 - call void @finch.drop.S_lexer_Token(ptr %a228) - %t229 = getelementptr inbounds %S.lexer.Token, ptr %a4, i32 0, i32 1 - %t230 = load { ptr, i64, i64 }, ptr %t229 - %t231 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } %t230, ptr %a232 - call void @finch_str_copy(ptr %a233, ptr %a232) - %t234 = load { ptr, i64, i64 }, ptr %a233 - %t235 = load { ptr, i64, i64 }, ptr %t231 - store { ptr, i64, i64 } %t234, ptr %t231 - store { ptr, i64, i64 } %t235, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load ptr, ptr %a1 - %t238 = call i1 @finch.parser.at(ptr %t237, { ptr, i64, i64 } { ptr @.str.1055, i64 1, i64 0 }) - br label %logic.from1903 -logic.from1903: - br i1 %t238, label %logic.rhs1904, label %logic.end1905 -logic.rhs1904: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic1906, label %ok1907 -panic1906: - call void @finch_panic(ptr @.str.1056, i64 800, ptr @.str.1057) - unreachable -ok1907: - %t241 = getelementptr inbounds %S.parser.Parser, ptr %t239, i32 0, i32 0 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic1908, label %ok1909 -panic1908: - call void @finch_panic(ptr @.str.1058, i64 800, ptr @.str.1059) - unreachable -ok1909: - %t244 = getelementptr inbounds %S.parser.Parser, ptr %t242, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = sub i64 %t245, 1 - %t247 = load { ptr, i64, i64 }, ptr %t241 - %t248 = extractvalue { ptr, i64, i64 } %t247, 1 - %t249 = icmp uge i64 %t246, %t248 - br i1 %t249, label %range1910, label %inrange1911 -range1910: - call void @finch_panic_index(ptr @.str.1060, i64 800, i64 %t246, i64 %t248) - unreachable -inrange1911: - %t250 = extractvalue { ptr, i64, i64 } %t247, 0 - %t251 = getelementptr inbounds %S.lexer.Token, ptr %t250, i64 %t246 - %t252 = getelementptr inbounds %S.lexer.Token, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.1061, i64 5, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br label %logic.rend1912 -logic.rend1912: - br label %logic.end1905 -logic.end1905: - %t258 = phi i1 [ false, %logic.from1903 ], [ %t257, %logic.rend1912 ] - br label %logic.from1913 -logic.from1913: - br i1 %t258, label %logic.rhs1914, label %logic.end1915 -logic.rhs1914: - %t259 = load ptr, ptr %a1 - %t260 = call i1 @finch.parser.genericCallAheadFrom(ptr %t259) - br label %logic.rend1916 -logic.rend1916: - br label %logic.end1915 -logic.end1915: - %t261 = phi i1 [ false, %logic.from1913 ], [ %t260, %logic.rend1916 ] - br i1 %t261, label %then1917, label %endif1919 -then1917: - %t262 = load ptr, ptr %a1 - %t263 = call %S.lexer.Token @finch.parser.next(ptr %t262) - store %S.lexer.Token %t263, ptr %a264 - call void @finch.drop.S_lexer_Token(ptr %a264) - %t265 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1062, i64 5, i64 0 }, 0 - %t266 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t267 = load %S.ast.Type, ptr %t266 - store %S.ast.Type %t265, ptr %t266 - store %S.ast.Type %t267, ptr %a268 - call void @finch.drop.S_ast_Type(ptr %a268) - br label %while.cond1920 -while.cond1920: - br label %while.body1921 -while.body1921: - %t269 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 5 - %t270 = getelementptr inbounds %S.ast.Type, ptr %t269, i32 0, i32 1 - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t270, i32 0, i32 1 - %t272 = load ptr, ptr %a1 - %t273 = call %S.ast.Type @finch.parser.parseType(ptr %t272) - %t274 = load i64, ptr %t271 - %t275 = add i64 %t274, 1 - call void @finch_arr_reserve(ptr %t270, i64 %t275, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t276 = load ptr, ptr %t270 - %t277 = getelementptr inbounds %S.ast.Type, ptr %t276, i64 %t274 - store %S.ast.Type %t273, ptr %t277 - store i64 %t275, ptr %t271 - %t278 = load ptr, ptr %a1 - %t279 = call i1 @finch.parser.accept(ptr %t278, { ptr, i64, i64 } { ptr @.str.1063, i64 1, i64 0 }) - %t280 = xor i1 %t279, true - br i1 %t280, label %then1923, label %endif1925 -then1923: - br label %while.end1922 -endif1925: - br label %while.cond1920 -while.end1922: - %t281 = load ptr, ptr %a1 - %t282 = call %S.lexer.Token @finch.parser.expect(ptr %t281, { ptr, i64, i64 } { ptr @.str.1064, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.1065, i64 28, i64 0 }) - store %S.lexer.Token %t282, ptr %a283 - call void @finch.drop.S_lexer_Token(ptr %a283) - %t284 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.1066, i64 4, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t287, ptr %a7) - %t288 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t288 -endif1919: - %t289 = load ptr, ptr %a1 - %t290 = call i1 @finch.parser.at(ptr %t289, { ptr, i64, i64 } { ptr @.str.1067, i64 1, i64 0 }) - br label %logic.from1926 -logic.from1926: - br i1 %t290, label %logic.rhs1927, label %logic.end1928 -logic.rhs1927: - %t291 = load ptr, ptr %a1 - %t292 = call %S.lexer.Token @finch.parser.cur(ptr %t291) - %t293 = extractvalue %S.lexer.Token %t292, 4 - store %S.lexer.Token %t292, ptr %a294 - call void @finch.drop.S_lexer_Token(ptr %a294) - %t295 = xor i1 %t293, true - br label %logic.rend1929 -logic.rend1929: - br label %logic.end1928 -logic.end1928: - %t296 = phi i1 [ false, %logic.from1926 ], [ %t295, %logic.rend1929 ] - br i1 %t296, label %then1930, label %endif1932 -then1930: - %t297 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } { ptr @.str.1068, i64 4, i64 0 }, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load ptr, ptr %a1 - call void @finch.parser.parseArgs(ptr %t300, ptr %a7) - %t301 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t301 -endif1932: - %t302 = getelementptr inbounds %S.ast.Node, ptr %a7, i32 0, i32 0 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store { ptr, i64, i64 } { ptr @.str.1069, i64 3, i64 0 }, ptr %t302 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t305 -endif1902: - %t306 = load ptr, ptr %a1 - %t307 = load %S.lexer.Token, ptr %a4 - %t308 = load %S.lexer.Token, ptr %a4 - %t309 = call { ptr, i64, i64 } @finch.parser.describe(%S.lexer.Token %t308) - store { ptr, i64, i64 } { ptr @.str.1070, i64 11, i64 0 }, ptr %a311 - store { ptr, i64, i64 } %t309, ptr %a312 - call void @finch_str_concat(ptr %a310, ptr %a311, ptr %a312) - store { ptr, i64, i64 } %t309, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a310 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.1071, i64 19, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - call void @finch.parser.fail(ptr %t306, %S.lexer.Token %t307, { ptr, i64, i64 } %t319) - store { ptr, i64, i64 } %t319, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load %S.ast.Node, ptr %a7 - call void @finch_str_drop(ptr %a13) - call void @finch.drop.S_lexer_Token(ptr %a4) - ret %S.ast.Node %t321 -} - -define internal void @finch.copy.arr_S_lexer_Token(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lexer.Token, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond1933 -n.cond1933: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body1934, label %n.end1935 -n.body1934: - %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.cond1933 -n.end1935: - ret void -} - -define internal void @finch.drop.S_parser_Parser(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lexer_Token(ptr %t1) - %t2 = getelementptr inbounds %S.parser.Parser, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal %S.ast.Program @finch.parser.parse({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2) { -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) - call void @finch.drop.S_parser_Parser(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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1073, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1074, 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.1076, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1077, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1079, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1080, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t18 -} - -define internal void @finch.gen.noteRef(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4, { ptr, i64, i64 } %p5, i64 %p6, i64 %p7) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic1936, label %ok1937 -panic1936: - call void @finch_panic(ptr @.str.1081, i64 232, ptr @.str.1082) - unreachable -ok1937: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - %t13 = xor i1 %t12, true - br i1 %t13, label %then1938, label %endif1940 -then1938: - ret void -endif1940: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic1941, label %ok1942 -panic1941: - call void @finch_panic(ptr @.str.1083, i64 235, ptr @.str.1084) - unreachable -ok1942: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 29 - %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 %panic1943, label %ok1944 -panic1943: - call void @finch_panic(ptr @.str.1086, i64 235, ptr @.str.1087) - unreachable -ok1944: - %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 %range1945, label %inrange1946 -range1945: - call void @finch_panic_index(ptr @.str.1088, i64 235, i64 %t22, i64 %t24) - unreachable -inrange1946: - %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.1085, 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.1089, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1090, i64 1, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a54, i64 %t53) - %t55 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.1091, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a68, i64 %t67) - %t69 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.1092, i64 1, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t86, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.1093, i64 1, i64 0 }, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a93, i64 %t92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t91, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1094, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t105, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1095, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a5 - %t121 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t120) - store { ptr, i64, i64 } %t119, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t119, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - %t128 = load i64, ptr %t17 - %t129 = add i64 %t128, 1 - call void @finch_arr_reserve(ptr %t16, i64 %t129, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t130 = load ptr, ptr %t16 - %t131 = getelementptr inbounds { ptr, i64, i64 }, ptr %t130, i64 %t128 - store { ptr, i64, i64 } %t127, ptr %t131 - store i64 %t129, ptr %t17 - ret void -} - -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %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 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - store %S.gen.FnSig %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 13 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond1947 -for.cond1947: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body1948, label %for.end1950 -for.body1948: - %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 %range1951, label %inrange1952 -range1951: - call void @finch_panic_index(ptr @.str.1096, i64 242, i64 %t11, i64 %t13) - unreachable -inrange1952: - %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.1097, i64 1, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 14 - %t25 = load i64, ptr %a6 - %t26 = load { ptr, i64, i64 }, ptr %t24 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 %t25, %t27 - br i1 %t28, label %range1953, label %inrange1954 -range1953: - call void @finch_panic_index(ptr @.str.1098, i64 242, i64 %t25, i64 %t27) - unreachable -inrange1954: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 %t25 - %t31 = load { ptr, i64, i64 }, ptr %t30 - store { ptr, i64, i64 } %t23, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t23, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = load i64, ptr %t9 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t38, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %a2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t37 - store { ptr, i64, i64 } %t36, ptr %t40 - store i64 %t38, ptr %t9 - br label %for.step1949 -for.step1949: - %t41 = load i64, ptr %a6 - %t42 = add i64 %t41, 1 - store i64 %t42, ptr %a6 - br label %for.cond1947 -for.end1950: - %t43 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t44 = load { ptr, i64, i64 }, ptr %t43 - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_copy(ptr %a46, ptr %a45) - %t47 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t47, ptr %a48 - %t49 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i32 0, i32 1 - %t51 = load i64, ptr %t50 - %t52 = icmp sgt i64 %t51, 0 - br i1 %t52, label %then1955, label %endif1957 -then1955: - %t53 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 2 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1099, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a55 - %t59 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t65, ptr %a48 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif1957 -endif1957: - %t68 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.1100, i64 3, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1101, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1102, i64 2, i64 0 }, ptr %a79 - call void @finch_str_join(ptr %a80, ptr %a2, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t77, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t77, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.1103, i64 1, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 9 - %t95 = load i1, ptr %t94 - br i1 %t95, label %then1958, label %else1959 -then1958: - %t96 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t97 = getelementptr inbounds %S.ast.Type, ptr %t96, i32 0, i32 0 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.1104, i64 4, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then1961, label %else1962 -then1961: - %t103 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1105, i64 5, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a104 - %t108 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t107, ptr %a93 - store { ptr, i64, i64 } %t108, ptr %a109 - call void @finch_str_drop(ptr %a109) - br label %endif1963 -else1962: - %t110 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.1106, i64 4, 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.FnSig, ptr %a1, i32 0, i32 12 - %t116 = load %S.ast.Type, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t116) - store { ptr, i64, i64 } %t114, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t114, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.1107, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t128, ptr %a93 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - br label %endif1963 -endif1963: - br label %endif1960 -else1959: - %t131 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.1108, i64 4, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp eq i32 %t136, 0 - br i1 %t137, label %then1964, label %endif1966 -then1964: - %t138 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1109, i64 4, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a139 - %t143 = getelementptr inbounds %S.gen.FnSig, ptr %a1, i32 0, i32 12 - %t144 = load %S.ast.Type, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t144) - store { ptr, i64, i64 } %t142, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t142, ptr %a149 - call void @finch_str_drop(ptr %a149) - store { ptr, i64, i64 } %t145, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a146 - %t152 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t151, ptr %a93 - store { ptr, i64, i64 } %t152, ptr %a153 - call void @finch_str_drop(ptr %a153) - br label %endif1966 -endif1966: - br label %endif1960 -endif1960: - %t154 = load { ptr, i64, i64 }, ptr %a93 - call void @finch_str_drop(ptr %a48) - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t154 -} - -define internal void @finch.gen.noteCall(ptr %p0, %S.ast.Node %p1, %S.gen.FnSig %p2) { -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic1967, label %ok1968 -panic1967: - call void @finch_panic(ptr @.str.1110, i64 263, ptr @.str.1111) - unreachable -ok1968: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then1969, label %endif1971 -then1969: - ret void -endif1971: - %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.1112, 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 %then1972, label %endif1974 -then1972: - %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 %endif1974 -endif1974: - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic1975, label %ok1976 -panic1975: - call void @finch_panic(ptr @.str.1113, i64 270, ptr @.str.1114) - unreachable -ok1976: - %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 %range1977, label %inrange1978 -range1977: - call void @finch_panic_index(ptr @.str.1115, i64 270, i64 %t25, i64 %t27) - unreachable -inrange1978: - %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 %range1979, label %inrange1980 -range1979: - call void @finch_panic_index(ptr @.str.1116, i64 270, i64 %t33, i64 %t35) - unreachable -inrange1980: - %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.from1981 -logic.from1981: - br i1 %t53, label %logic.rhs1982, label %logic.end1983 -logic.rhs1982: - %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.rend1984 -logic.rend1984: - br label %logic.end1983 -logic.end1983: - %t58 = phi i1 [ false, %logic.from1981 ], [ %t57, %logic.rend1984 ] - br i1 %t58, label %then1985, label %endif1987 -then1985: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_copy(ptr %a62, ptr %a61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - %t64 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t63, ptr %a49 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif1987 -endif1987: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a2 - %t68 = load i64, ptr %a11 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a49, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load %S.gen.FnSig, ptr %a3 - %t72 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t71) - store { ptr, i64, i64 } { ptr @.str.1117, i64 9, i64 0 }, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1118, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic1988, label %ok1989 -panic1988: - call void @finch_panic(ptr @.str.1119, i64 275, ptr @.str.1120) - unreachable -ok1989: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 13 - %t87 = load i64, ptr %t86 - %t88 = load { ptr, i64, i64 }, ptr %t85 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range1990, label %inrange1991 -range1990: - call void @finch_panic_index(ptr @.str.1121, i64 275, i64 %t87, i64 %t89) - unreachable -inrange1991: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t87 - %t93 = load { ptr, i64, i64 }, ptr %t92 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 11 - %t95 = load i64, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 12 - %t97 = load i64, ptr %t96 - %t98 = add i64 %t97, 3 - call void @finch.gen.noteRef(ptr %t66, %S.ast.Node %t67, i64 %t68, i64 %t70, { ptr, i64, i64 } %t82, { ptr, i64, i64 } %t93, i64 %t95, i64 %t98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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.drop.arr_bool(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_FnSig(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t6) - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t7) - %t8 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 11 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 12 - call void @finch.drop.S_ast_Type(ptr %t9) - %t10 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 13 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - %t11 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 14 - call void @finch.drop.arr_str(ptr %t11) - %t12 = getelementptr inbounds %S.gen.FnSig, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_bool(ptr %t12) - ret void -} - -define internal void @finch.copy.S_gen_Template(ptr %dst, ptr %src) { -entry: - - %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.drop.S_gen_Template(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Template, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.copy.arr_int(ptr %dst, ptr %src) { -entry: - - 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.drop.arr_int(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_StructDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 7 - call void @finch.drop.arr_S_ast_Type(ptr %t7) - %t8 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 8 - call void @finch_str_drop(ptr %t8) - %t9 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_str(ptr %t9) - %t10 = getelementptr inbounds %S.gen.StructDef, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_ast_Type(ptr %t10) - ret void -} - -define internal void @finch.gen.indexAll(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a257 = alloca %S.gen.Template, align 16 - %a258 = alloca %S.gen.Template, align 16 - %a260 = alloca %S.gen.Template, align 16 - %a282 = alloca %S.ast.Node, align 16 - %a283 = alloca %S.ast.Node, align 16 - %a285 = alloca %S.ast.Node, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca i64, align 16 - %a448 = alloca %S.gen.StructDef, align 16 - %a449 = alloca %S.gen.StructDef, align 16 - %a451 = alloca %S.gen.StructDef, align 16 - %a478 = alloca %S.ast.Node, align 16 - %a479 = alloca %S.ast.Node, align 16 - %a481 = alloca %S.ast.Node, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca i64, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca i64, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca %S.ast.Node, align 16 - %a660 = alloca %S.ast.Node, align 16 - %a662 = alloca %S.ast.Node, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca i64, align 16 - %a674 = alloca %S.ast.Node, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a778 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond1992 -each.cond1992: - %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.body1993, label %each.end1995 -each.body1993: - %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 %panic1996, label %ok1997 -panic1996: - call void @finch_panic(ptr @.str.1122, i64 281, ptr @.str.1123) - unreachable -ok1997: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 29 - %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.1124, 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.step1994 -each.step1994: - %t25 = load i64, ptr %a3 - %t26 = add i64 %t25, 1 - store i64 %t26, ptr %a3 - br label %each.cond1992 -each.end1995: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic1998, label %ok1999 -panic1998: - call void @finch_panic(ptr @.str.1125, i64 283, ptr @.str.1126) - unreachable -ok1999: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 15 - store i64 0, ptr %a30 - br label %each.cond2000 -each.cond2000: - %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.body2001, label %each.end2003 -each.body2001: - %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 %panic2004, label %ok2005 -panic2004: - call void @finch_panic(ptr @.str.1127, i64 284, ptr @.str.1128) - unreachable -ok2005: - %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 %range2006, label %inrange2007 -range2006: - call void @finch_panic_index(ptr @.str.1129, i64 284, i64 %t46, i64 %t48) - unreachable -inrange2007: - %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 %range2008, label %inrange2009 -range2008: - call void @finch_panic_index(ptr @.str.1130, i64 284, i64 %t54, i64 %t56) - unreachable -inrange2009: - %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 %then2010, label %endif2012 -then2010: - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -endif2012: - 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.cond2013 -for.cond2013: - %t74 = load i64, ptr %a73 - %t75 = icmp slt i64 %t74, %t72 - br i1 %t75, label %for.body2014, label %for.end2016 -for.body2014: - %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 %range2017, label %inrange2018 -range2017: - call void @finch_panic_index(ptr @.str.1131, i64 290, i64 %t78, i64 %t80) - unreachable -inrange2018: - %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.1132, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 14 - %t92 = load i64, ptr %a73 - %t93 = load { ptr, i64, i64 }, ptr %t91 - %t94 = extractvalue { ptr, i64, i64 } %t93, 1 - %t95 = icmp uge i64 %t92, %t94 - br i1 %t95, label %range2019, label %inrange2020 -range2019: - call void @finch_panic_index(ptr @.str.1133, i64 290, i64 %t92, i64 %t94) - unreachable -inrange2020: - %t96 = extractvalue { ptr, i64, i64 } %t93, 0 - %t97 = getelementptr inbounds { ptr, i64, i64 }, ptr %t96, i64 %t92 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t90, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t90, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = load i64, ptr %t76 - %t105 = add i64 %t104, 1 - call void @finch_arr_reserve(ptr %a69, i64 %t105, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t106 = load ptr, ptr %a69 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t106, i64 %t104 - store { ptr, i64, i64 } %t103, ptr %t107 - store i64 %t105, ptr %t76 - br label %for.step2015 -for.step2015: - %t108 = load i64, ptr %a73 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a73 - br label %for.cond2013 -for.end2016: - %t110 = load ptr, ptr %a1 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic2021, label %ok2022 -panic2021: - call void @finch_panic(ptr @.str.1134, i64 292, ptr @.str.1135) - unreachable -ok2022: - %t112 = getelementptr inbounds %S.gen.Gen, ptr %t110, i32 0, i32 29 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 0 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.1136, i64 3, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1137, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t124, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t124, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1138, i64 1, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = getelementptr inbounds %S.gen.FnSig, ptr %a41, i32 0, i32 2 - %t138 = load { ptr, i64, i64 }, ptr %t137 - store { ptr, i64, i64 } %t136, ptr %a140 - store { ptr, i64, i64 } %t138, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t136, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.1139, i64 1, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = load ptr, ptr %a1 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic2023, label %ok2024 -panic2023: - call void @finch_panic(ptr @.str.1140, i64 292, ptr @.str.1141) - unreachable -ok2024: - %t151 = getelementptr inbounds %S.gen.Gen, ptr %t149, i32 0, i32 1 - %t152 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 13 - %t153 = load i64, ptr %t152 - %t154 = load { ptr, i64, i64 }, ptr %t151 - %t155 = extractvalue { ptr, i64, i64 } %t154, 1 - %t156 = icmp uge i64 %t153, %t155 - br i1 %t156, label %range2025, label %inrange2026 -range2025: - call void @finch_panic_index(ptr @.str.1142, i64 292, i64 %t153, i64 %t155) - unreachable -inrange2026: - %t157 = extractvalue { ptr, i64, i64 } %t154, 0 - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t157, i64 %t153 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t148, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t148, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.1143, i64 1, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.1144, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 12 - %t186 = load i64, ptr %t185 - call void @finch_str_from_int(ptr %a187, i64 %t186) - %t188 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t184, ptr %a192 - call void @finch_str_drop(ptr %a192) - store { ptr, i64, i64 } %t188, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.1145, i64 1, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 14 - %t201 = load i64, ptr %t200 - call void @finch_str_from_int(ptr %a202, i64 %t201) - %t203 = load { ptr, i64, i64 }, ptr %a202 - store { ptr, i64, i64 } %t199, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t199, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } %t203, ptr %a208 - call void @finch_str_drop(ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t209, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.1146, i64 1, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = load %S.gen.FnSig, ptr %a41 - %t216 = call { ptr, i64, i64 } @finch.gen.sigText(%S.gen.FnSig %t215) - %t217 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - store { ptr, i64, i64 } %t214, ptr %a220 - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t214, ptr %a222 - call void @finch_str_drop(ptr %a222) - store { ptr, i64, i64 } %t217, ptr %a223 - call void @finch_str_drop(ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.1147, i64 1, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %a69, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1148, i64 1, i64 0 }, ptr %a231 - call void @finch_str_join(ptr %a232, ptr %a69, ptr %a231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t229, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t229, ptr %a237 - call void @finch_str_drop(ptr %a237) - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a234 - %t240 = load i64, ptr %t113 - %t241 = add i64 %t240, 1 - call void @finch_arr_reserve(ptr %t112, i64 %t241, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t242 = load ptr, ptr %t112 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i64 %t240 - store { ptr, i64, i64 } %t239, ptr %t243 - store i64 %t241, ptr %t113 - call void @finch.drop.arr_str(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a64) - call void @finch.drop.S_gen_FnSig(ptr %a41) - br label %each.step2002 -each.step2002: - %t244 = load i64, ptr %a30 - %t245 = add i64 %t244, 1 - store i64 %t245, ptr %a30 - br label %each.cond2000 -each.end2003: - %t246 = load ptr, ptr %a1 - %t247 = icmp eq ptr %t246, null - br i1 %t247, label %panic2027, label %ok2028 -panic2027: - call void @finch_panic(ptr @.str.1149, i64 294, ptr @.str.1150) - unreachable -ok2028: - %t248 = getelementptr inbounds %S.gen.Gen, ptr %t246, i32 0, i32 17 - store i64 0, ptr %a249 - br label %each.cond2029 -each.cond2029: - %t250 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t251 = load i64, ptr %t250 - %t252 = load i64, ptr %a249 - %t253 = icmp slt i64 %t252, %t251 - br i1 %t253, label %each.body2030, label %each.end2032 -each.body2030: - %t254 = load ptr, ptr %t248 - %t255 = getelementptr inbounds %S.gen.Template, ptr %t254, i64 %t252 - %t256 = load %S.gen.Template, ptr %t255 - store %S.gen.Template %t256, ptr %a257 - call void @finch.copy.S_gen_Template(ptr %a258, ptr %a257) - %t259 = load %S.gen.Template, ptr %a258 - store %S.gen.Template %t259, ptr %a260 - %t261 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 6 - %t262 = load i1, ptr %t261 - br i1 %t262, label %then2033, label %endif2035 -then2033: - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -endif2035: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic2036, label %ok2037 -panic2036: - call void @finch_panic(ptr @.str.1151, i64 298, ptr @.str.1152) - unreachable -ok2037: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 0 - %t266 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 4 - %t267 = load i64, ptr %t266 - %t268 = load { ptr, i64, i64 }, ptr %t265 - %t269 = extractvalue { ptr, i64, i64 } %t268, 1 - %t270 = icmp uge i64 %t267, %t269 - br i1 %t270, label %range2038, label %inrange2039 -range2038: - call void @finch_panic_index(ptr @.str.1153, i64 298, i64 %t267, i64 %t269) - unreachable -inrange2039: - %t271 = extractvalue { ptr, i64, i64 } %t268, 0 - %t272 = getelementptr inbounds %S.ast.Program, ptr %t271, i64 %t267 - %t273 = getelementptr inbounds %S.ast.Program, ptr %t272, i32 0, i32 8 - %t274 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 5 - %t275 = load i64, ptr %t274 - %t276 = load { ptr, i64, i64 }, ptr %t273 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range2040, label %inrange2041 -range2040: - call void @finch_panic_index(ptr @.str.1154, i64 298, i64 %t275, i64 %t277) - unreachable -inrange2041: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.ast.Node, ptr %t279, i64 %t275 - %t281 = load %S.ast.Node, ptr %t280 - store %S.ast.Node %t281, ptr %a282 - call void @finch.copy.S_ast_Node(ptr %a283, ptr %a282) - %t284 = load %S.ast.Node, ptr %a283 - store %S.ast.Node %t284, ptr %a285 - %t286 = load ptr, ptr %a1 - %t287 = icmp eq ptr %t286, null - br i1 %t287, label %panic2042, label %ok2043 -panic2042: - call void @finch_panic(ptr @.str.1155, i64 299, ptr @.str.1156) - unreachable -ok2043: - %t288 = getelementptr inbounds %S.gen.Gen, ptr %t286, i32 0, i32 29 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t288, i32 0, i32 1 - %t290 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 0 - %t291 = load { ptr, i64, i64 }, ptr %t290 - store { ptr, i64, i64 } { ptr @.str.1157, i64 3, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.1158, i64 1, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t300, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t300, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.1159, i64 1, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 2 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t312, ptr %a316 - store { ptr, i64, i64 } %t314, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.1160, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic2044, label %ok2045 -panic2044: - call void @finch_panic(ptr @.str.1161, i64 299, ptr @.str.1162) - unreachable -ok2045: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 13 - %t329 = load i64, ptr %t328 - %t330 = load { ptr, i64, i64 }, ptr %t327 - %t331 = extractvalue { ptr, i64, i64 } %t330, 1 - %t332 = icmp uge i64 %t329, %t331 - br i1 %t332, label %range2046, label %inrange2047 -range2046: - call void @finch_panic_index(ptr @.str.1163, i64 299, i64 %t329, i64 %t331) - unreachable -inrange2047: - %t333 = extractvalue { ptr, i64, i64 } %t330, 0 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i64 %t329 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t324, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t324, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.1164, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 11 - %t347 = load i64, ptr %t346 - call void @finch_str_from_int(ptr %a348, i64 %t347) - %t349 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t345, ptr %a351 - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t345, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t349, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t355, ptr %a357 - store { ptr, i64, i64 } { ptr @.str.1165, i64 1, i64 0 }, ptr %a358 - call void @finch_str_concat(ptr %a356, ptr %a357, ptr %a358) - store { ptr, i64, i64 } %t355, ptr %a359 - call void @finch_str_drop(ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a356 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 12 - %t362 = load i64, ptr %t361 - call void @finch_str_from_int(ptr %a363, i64 %t362) - %t364 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t360, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t360, ptr %a368 - call void @finch_str_drop(ptr %a368) - store { ptr, i64, i64 } %t364, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t370, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.1166, i64 1, i64 0 }, ptr %a373 - call void @finch_str_concat(ptr %a371, ptr %a372, ptr %a373) - store { ptr, i64, i64 } %t370, ptr %a374 - call void @finch_str_drop(ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = getelementptr inbounds %S.ast.Node, ptr %a285, i32 0, i32 14 - %t377 = load i64, ptr %t376 - call void @finch_str_from_int(ptr %a378, i64 %t377) - %t379 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t375, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t375, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t379, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.1167, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 1 - %t392 = load { ptr, i64, i64 }, ptr %t391 - store { ptr, i64, i64 } { ptr @.str.1168, i64 3, i64 0 }, ptr %a394 - store { ptr, i64, i64 } %t392, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a393 - store { ptr, i64, i64 } %t396, ptr %a398 - store { ptr, i64, i64 } { ptr @.str.1169, i64 1, i64 0 }, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t396, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - %t402 = getelementptr inbounds %S.gen.Template, ptr %a260, i32 0, i32 3 - %t403 = getelementptr inbounds { ptr, i64, i64 }, ptr %t402, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1170, i64 2, i64 0 }, ptr %a404 - call void @finch_str_join(ptr %a405, ptr %t402, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - store { ptr, i64, i64 } %t401, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t401, ptr %a410 - call void @finch_str_drop(ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.1171, i64 6, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = call { ptr, i64, i64 } @finch.gen.esc({ ptr, i64, i64 } %t417) - store { ptr, i64, i64 } %t417, ptr %a419 - call void @finch_str_drop(ptr %a419) - store { ptr, i64, i64 } %t390, ptr %a421 - store { ptr, i64, i64 } %t418, ptr %a422 - call void @finch_str_concat(ptr %a420, ptr %a421, ptr %a422) - store { ptr, i64, i64 } %t390, ptr %a423 - call void @finch_str_drop(ptr %a423) - store { ptr, i64, i64 } %t418, ptr %a424 - call void @finch_str_drop(ptr %a424) - %t425 = load { ptr, i64, i64 }, ptr %a420 - store { ptr, i64, i64 } %t425, ptr %a427 - store { ptr, i64, i64 } { ptr @.str.1172, i64 1, i64 0 }, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t425, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - %t431 = load i64, ptr %t289 - %t432 = add i64 %t431, 1 - call void @finch_arr_reserve(ptr %t288, i64 %t432, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t433 = load ptr, ptr %t288 - %t434 = getelementptr inbounds { ptr, i64, i64 }, ptr %t433, i64 %t431 - store { ptr, i64, i64 } %t430, ptr %t434 - store i64 %t432, ptr %t289 - call void @finch.drop.S_ast_Node(ptr %a285) - call void @finch.drop.S_gen_Template(ptr %a260) - br label %each.step2031 -each.step2031: - %t435 = load i64, ptr %a249 - %t436 = add i64 %t435, 1 - store i64 %t436, ptr %a249 - br label %each.cond2029 -each.end2032: - %t437 = load ptr, ptr %a1 - %t438 = icmp eq ptr %t437, null - br i1 %t438, label %panic2048, label %ok2049 -panic2048: - call void @finch_panic(ptr @.str.1173, i64 301, ptr @.str.1174) - unreachable -ok2049: - %t439 = getelementptr inbounds %S.gen.Gen, ptr %t437, i32 0, i32 16 - store i64 0, ptr %a440 - br label %each.cond2050 -each.cond2050: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t442 = load i64, ptr %t441 - %t443 = load i64, ptr %a440 - %t444 = icmp slt i64 %t443, %t442 - br i1 %t444, label %each.body2051, label %each.end2053 -each.body2051: - %t445 = load ptr, ptr %t439 - %t446 = getelementptr inbounds %S.gen.StructDef, ptr %t445, i64 %t443 - %t447 = load %S.gen.StructDef, ptr %t446 - store %S.gen.StructDef %t447, ptr %a448 - call void @finch.copy.S_gen_StructDef(ptr %a449, ptr %a448) - %t450 = load %S.gen.StructDef, ptr %a449 - store %S.gen.StructDef %t450, ptr %a451 - %t452 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 2 - %t453 = load i1, ptr %t452 - br label %logic.from2054 -logic.from2054: - br i1 %t453, label %logic.end2056, label %logic.rhs2055 -logic.rhs2055: - %t454 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 5 - %t455 = getelementptr inbounds { ptr, i64, i64 }, ptr %t454, i32 0, i32 1 - %t456 = load i64, ptr %t455 - %t457 = icmp sgt i64 %t456, 0 - br label %logic.rend2057 -logic.rend2057: - br label %logic.end2056 -logic.end2056: - %t458 = phi i1 [ true, %logic.from2054 ], [ %t457, %logic.rend2057 ] - br i1 %t458, label %then2058, label %endif2060 -then2058: - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -endif2060: - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic2061, label %ok2062 -panic2061: - call void @finch_panic(ptr @.str.1175, i64 305, ptr @.str.1176) - unreachable -ok2062: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 0 - %t462 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 13 - %t463 = load i64, ptr %t462 - %t464 = load { ptr, i64, i64 }, ptr %t461 - %t465 = extractvalue { ptr, i64, i64 } %t464, 1 - %t466 = icmp uge i64 %t463, %t465 - br i1 %t466, label %range2063, label %inrange2064 -range2063: - call void @finch_panic_index(ptr @.str.1177, i64 305, i64 %t463, i64 %t465) - unreachable -inrange2064: - %t467 = extractvalue { ptr, i64, i64 } %t464, 0 - %t468 = getelementptr inbounds %S.ast.Program, ptr %t467, i64 %t463 - %t469 = getelementptr inbounds %S.ast.Program, ptr %t468, i32 0, i32 6 - %t470 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 14 - %t471 = load i64, ptr %t470 - %t472 = load { ptr, i64, i64 }, ptr %t469 - %t473 = extractvalue { ptr, i64, i64 } %t472, 1 - %t474 = icmp uge i64 %t471, %t473 - br i1 %t474, label %range2065, label %inrange2066 -range2065: - call void @finch_panic_index(ptr @.str.1178, i64 305, i64 %t471, i64 %t473) - unreachable -inrange2066: - %t475 = extractvalue { ptr, i64, i64 } %t472, 0 - %t476 = getelementptr inbounds %S.ast.Node, ptr %t475, i64 %t471 - %t477 = load %S.ast.Node, ptr %t476 - store %S.ast.Node %t477, ptr %a478 - call void @finch.copy.S_ast_Node(ptr %a479, ptr %a478) - %t480 = load %S.ast.Node, ptr %a479 - store %S.ast.Node %t480, ptr %a481 - %t482 = load ptr, ptr %a1 - %t483 = icmp eq ptr %t482, null - br i1 %t483, label %panic2067, label %ok2068 -panic2067: - call void @finch_panic(ptr @.str.1179, i64 306, ptr @.str.1180) - unreachable -ok2068: - %t484 = getelementptr inbounds %S.gen.Gen, ptr %t482, i32 0, i32 29 - %t485 = getelementptr inbounds { ptr, i64, i64 }, ptr %t484, i32 0, i32 1 - %t486 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } { ptr @.str.1181, i64 3, i64 0 }, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.1182, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t498 = load { ptr, i64, i64 }, ptr %t497 - store { ptr, i64, i64 } %t496, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - store { ptr, i64, i64 } %t496, ptr %a502 - call void @finch_str_drop(ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a499 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.1183, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = load ptr, ptr %a1 - %t510 = icmp eq ptr %t509, null - br i1 %t510, label %panic2069, label %ok2070 -panic2069: - call void @finch_panic(ptr @.str.1184, i64 306, ptr @.str.1185) - unreachable -ok2070: - %t511 = getelementptr inbounds %S.gen.Gen, ptr %t509, i32 0, i32 1 - %t512 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 13 - %t513 = load i64, ptr %t512 - %t514 = load { ptr, i64, i64 }, ptr %t511 - %t515 = extractvalue { ptr, i64, i64 } %t514, 1 - %t516 = icmp uge i64 %t513, %t515 - br i1 %t516, label %range2071, label %inrange2072 -range2071: - call void @finch_panic_index(ptr @.str.1186, i64 306, i64 %t513, i64 %t515) - unreachable -inrange2072: - %t517 = extractvalue { ptr, i64, i64 } %t514, 0 - %t518 = getelementptr inbounds { ptr, i64, i64 }, ptr %t517, i64 %t513 - %t519 = load { ptr, i64, i64 }, ptr %t518 - store { ptr, i64, i64 } %t508, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a522 - call void @finch_str_concat(ptr %a520, ptr %a521, ptr %a522) - store { ptr, i64, i64 } %t508, ptr %a523 - call void @finch_str_drop(ptr %a523) - %t524 = load { ptr, i64, i64 }, ptr %a520 - store { ptr, i64, i64 } %t524, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.1187, i64 1, i64 0 }, ptr %a527 - call void @finch_str_concat(ptr %a525, ptr %a526, ptr %a527) - store { ptr, i64, i64 } %t524, ptr %a528 - call void @finch_str_drop(ptr %a528) - %t529 = load { ptr, i64, i64 }, ptr %a525 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 11 - %t531 = load i64, ptr %t530 - call void @finch_str_from_int(ptr %a532, i64 %t531) - %t533 = load { ptr, i64, i64 }, ptr %a532 - store { ptr, i64, i64 } %t529, ptr %a535 - store { ptr, i64, i64 } %t533, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t529, ptr %a537 - call void @finch_str_drop(ptr %a537) - store { ptr, i64, i64 } %t533, ptr %a538 - call void @finch_str_drop(ptr %a538) - %t539 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t539, ptr %a541 - store { ptr, i64, i64 } { ptr @.str.1188, i64 1, i64 0 }, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t539, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - %t545 = getelementptr inbounds %S.ast.Node, ptr %a481, i32 0, i32 12 - %t546 = load i64, ptr %t545 - call void @finch_str_from_int(ptr %a547, i64 %t546) - %t548 = load { ptr, i64, i64 }, ptr %a547 - store { ptr, i64, i64 } %t544, ptr %a550 - store { ptr, i64, i64 } %t548, ptr %a551 - call void @finch_str_concat(ptr %a549, ptr %a550, ptr %a551) - store { ptr, i64, i64 } %t544, ptr %a552 - call void @finch_str_drop(ptr %a552) - store { ptr, i64, i64 } %t548, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a549 - %t555 = load i64, ptr %t485 - %t556 = add i64 %t555, 1 - call void @finch_arr_reserve(ptr %t484, i64 %t556, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t557 = load ptr, ptr %t484 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i64 %t555 - store { ptr, i64, i64 } %t554, ptr %t558 - store i64 %t556, ptr %t485 - %t559 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load i64, ptr %t560 - store i64 0, ptr %a562 - br label %for.cond2073 -for.cond2073: - %t563 = load i64, ptr %a562 - %t564 = icmp slt i64 %t563, %t561 - br i1 %t564, label %for.body2074, label %for.end2076 -for.body2074: - %t565 = load ptr, ptr %a1 - %t566 = icmp eq ptr %t565, null - br i1 %t566, label %panic2077, label %ok2078 -panic2077: - call void @finch_panic(ptr @.str.1189, i64 308, ptr @.str.1190) - unreachable -ok2078: - %t567 = getelementptr inbounds %S.gen.Gen, ptr %t565, i32 0, i32 29 - %t568 = getelementptr inbounds { ptr, i64, i64 }, ptr %t567, i32 0, i32 1 - %t569 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 0 - %t570 = load { ptr, i64, i64 }, ptr %t569 - store { ptr, i64, i64 } { ptr @.str.1191, i64 4, i64 0 }, ptr %a572 - store { ptr, i64, i64 } %t570, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a571 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.1192, i64 1, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 1 - %t581 = load { ptr, i64, i64 }, ptr %t580 - store { ptr, i64, i64 } %t579, ptr %a583 - store { ptr, i64, i64 } %t581, ptr %a584 - call void @finch_str_concat(ptr %a582, ptr %a583, ptr %a584) - store { ptr, i64, i64 } %t579, ptr %a585 - call void @finch_str_drop(ptr %a585) - %t586 = load { ptr, i64, i64 }, ptr %a582 - store { ptr, i64, i64 } %t586, ptr %a588 - store { ptr, i64, i64 } { ptr @.str.1193, i64 1, i64 0 }, ptr %a589 - call void @finch_str_concat(ptr %a587, ptr %a588, ptr %a589) - store { ptr, i64, i64 } %t586, ptr %a590 - call void @finch_str_drop(ptr %a590) - %t591 = load { ptr, i64, i64 }, ptr %a587 - %t592 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 11 - %t593 = load i64, ptr %a562 - %t594 = load { ptr, i64, i64 }, ptr %t592 - %t595 = extractvalue { ptr, i64, i64 } %t594, 1 - %t596 = icmp uge i64 %t593, %t595 - br i1 %t596, label %range2079, label %inrange2080 -range2079: - call void @finch_panic_index(ptr @.str.1194, i64 308, i64 %t593, i64 %t595) - unreachable -inrange2080: - %t597 = extractvalue { ptr, i64, i64 } %t594, 0 - %t598 = getelementptr inbounds { ptr, i64, i64 }, ptr %t597, i64 %t593 - %t599 = load { ptr, i64, i64 }, ptr %t598 - store { ptr, i64, i64 } %t591, ptr %a601 - store { ptr, i64, i64 } %t599, ptr %a602 - call void @finch_str_concat(ptr %a600, ptr %a601, ptr %a602) - store { ptr, i64, i64 } %t591, ptr %a603 - call void @finch_str_drop(ptr %a603) - %t604 = load { ptr, i64, i64 }, ptr %a600 - store { ptr, i64, i64 } %t604, ptr %a606 - store { ptr, i64, i64 } { ptr @.str.1195, i64 1, i64 0 }, ptr %a607 - call void @finch_str_concat(ptr %a605, ptr %a606, ptr %a607) - store { ptr, i64, i64 } %t604, ptr %a608 - call void @finch_str_drop(ptr %a608) - %t609 = load { ptr, i64, i64 }, ptr %a605 - %t610 = getelementptr inbounds %S.gen.StructDef, ptr %a451, i32 0, i32 12 - %t611 = load i64, ptr %a562 - %t612 = load { ptr, i64, i64 }, ptr %t610 - %t613 = extractvalue { ptr, i64, i64 } %t612, 1 - %t614 = icmp uge i64 %t611, %t613 - br i1 %t614, label %range2081, label %inrange2082 -range2081: - call void @finch_panic_index(ptr @.str.1196, i64 308, i64 %t611, i64 %t613) - unreachable -inrange2082: - %t615 = extractvalue { ptr, i64, i64 } %t612, 0 - %t616 = getelementptr inbounds %S.ast.Type, ptr %t615, i64 %t611 - %t617 = load %S.ast.Type, ptr %t616 - %t618 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t617) - store { ptr, i64, i64 } %t609, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t609, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - %t625 = load i64, ptr %t568 - %t626 = add i64 %t625, 1 - call void @finch_arr_reserve(ptr %t567, i64 %t626, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t627 = load ptr, ptr %t567 - %t628 = getelementptr inbounds { ptr, i64, i64 }, ptr %t627, i64 %t625 - store { ptr, i64, i64 } %t624, ptr %t628 - store i64 %t626, ptr %t568 - br label %for.step2075 -for.step2075: - %t629 = load i64, ptr %a562 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a562 - br label %for.cond2073 -for.end2076: - call void @finch.drop.S_ast_Node(ptr %a481) - call void @finch.drop.S_gen_StructDef(ptr %a451) - br label %each.step2052 -each.step2052: - %t631 = load i64, ptr %a440 - %t632 = add i64 %t631, 1 - store i64 %t632, ptr %a440 - br label %each.cond2050 -each.end2053: - %t633 = load ptr, ptr %a1 - %t634 = icmp eq ptr %t633, null - br i1 %t634, label %panic2083, label %ok2084 -panic2083: - call void @finch_panic(ptr @.str.1197, i64 311, ptr @.str.1198) - unreachable -ok2084: - %t635 = getelementptr inbounds %S.gen.Gen, ptr %t633, i32 0, i32 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i32 0, i32 1 - %t637 = load i64, ptr %t636 - store i64 0, ptr %a638 - br label %for.cond2085 -for.cond2085: - %t639 = load i64, ptr %a638 - %t640 = icmp slt i64 %t639, %t637 - br i1 %t640, label %for.body2086, label %for.end2088 -for.body2086: - %t641 = load ptr, ptr %a1 - %t642 = icmp eq ptr %t641, null - br i1 %t642, label %panic2089, label %ok2090 -panic2089: - call void @finch_panic(ptr @.str.1199, i64 312, ptr @.str.1200) - unreachable -ok2090: - %t643 = getelementptr inbounds %S.gen.Gen, ptr %t641, i32 0, i32 0 - %t644 = load i64, ptr %a638 - %t645 = load { ptr, i64, i64 }, ptr %t643 - %t646 = extractvalue { ptr, i64, i64 } %t645, 1 - %t647 = icmp uge i64 %t644, %t646 - br i1 %t647, label %range2091, label %inrange2092 -range2091: - call void @finch_panic_index(ptr @.str.1201, i64 312, i64 %t644, i64 %t646) - unreachable -inrange2092: - %t648 = extractvalue { ptr, i64, i64 } %t645, 0 - %t649 = getelementptr inbounds %S.ast.Program, ptr %t648, i64 %t644 - %t650 = getelementptr inbounds %S.ast.Program, ptr %t649, i32 0, i32 7 - store i64 0, ptr %a651 - br label %each.cond2093 -each.cond2093: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %t650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body2094, label %each.end2096 -each.body2094: - %t656 = load ptr, ptr %t650 - %t657 = getelementptr inbounds %S.ast.Node, ptr %t656, i64 %t654 - %t658 = load %S.ast.Node, ptr %t657 - store %S.ast.Node %t658, ptr %a659 - call void @finch.copy.S_ast_Node(ptr %a660, ptr %a659) - %t661 = load %S.ast.Node, ptr %a660 - store %S.ast.Node %t661, ptr %a662 - store { ptr, i64, i64 } { ptr @.str.1202, i64 0, i64 0 }, ptr %a663 - store { ptr, i64, i64 } zeroinitializer, ptr %a664 - %t665 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 9 - store i64 0, ptr %a666 - br label %each.cond2097 -each.cond2097: - %t667 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t668 = load i64, ptr %t667 - %t669 = load i64, ptr %a666 - %t670 = icmp slt i64 %t669, %t668 - br i1 %t670, label %each.body2098, label %each.end2100 -each.body2098: - %t671 = load ptr, ptr %t665 - %t672 = getelementptr inbounds %S.ast.Node, ptr %t671, i64 %t669 - %t673 = load %S.ast.Node, ptr %t672 - store %S.ast.Node %t673, ptr %a674 - %t675 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - %t676 = getelementptr inbounds %S.ast.Node, ptr %a674, i32 0, i32 1 - %t677 = load { ptr, i64, i64 }, ptr %t676 - store { ptr, i64, i64 } %t677, ptr %a678 - call void @finch_str_copy(ptr %a679, ptr %a678) - %t680 = load { ptr, i64, i64 }, ptr %a679 - %t681 = load i64, ptr %t675 - %t682 = add i64 %t681, 1 - call void @finch_arr_reserve(ptr %a664, i64 %t682, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t683 = load ptr, ptr %a664 - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %t683, i64 %t681 - store { ptr, i64, i64 } %t680, ptr %t684 - store i64 %t682, ptr %t675 - br label %each.step2099 -each.step2099: - %t685 = load i64, ptr %a666 - %t686 = add i64 %t685, 1 - store i64 %t686, ptr %a666 - br label %each.cond2097 -each.end2100: - %t687 = getelementptr inbounds { ptr, i64, i64 }, ptr %a664, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1203, i64 1, i64 0 }, ptr %a688 - call void @finch_str_join(ptr %a689, ptr %a664, ptr %a688) - %t690 = load { ptr, i64, i64 }, ptr %a689 - %t691 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t690, ptr %a663 - store { ptr, i64, i64 } %t691, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load ptr, ptr %a1 - %t694 = icmp eq ptr %t693, null - br i1 %t694, label %panic2101, label %ok2102 -panic2101: - call void @finch_panic(ptr @.str.1204, i64 319, ptr @.str.1205) - unreachable -ok2102: - %t695 = getelementptr inbounds %S.gen.Gen, ptr %t693, i32 0, i32 29 - %t696 = getelementptr inbounds { ptr, i64, i64 }, ptr %t695, i32 0, i32 1 - %t697 = load ptr, ptr %a1 - %t698 = icmp eq ptr %t697, null - br i1 %t698, label %panic2103, label %ok2104 -panic2103: - call void @finch_panic(ptr @.str.1207, i64 319, ptr @.str.1208) - unreachable -ok2104: - %t699 = getelementptr inbounds %S.gen.Gen, ptr %t697, i32 0, i32 0 - %t700 = load i64, ptr %a638 - %t701 = load { ptr, i64, i64 }, ptr %t699 - %t702 = extractvalue { ptr, i64, i64 } %t701, 1 - %t703 = icmp uge i64 %t700, %t702 - br i1 %t703, label %range2105, label %inrange2106 -range2105: - call void @finch_panic_index(ptr @.str.1209, i64 319, i64 %t700, i64 %t702) - unreachable -inrange2106: - %t704 = extractvalue { ptr, i64, i64 } %t701, 0 - %t705 = getelementptr inbounds %S.ast.Program, ptr %t704, i64 %t700 - %t706 = getelementptr inbounds %S.ast.Program, ptr %t705, i32 0, i32 0 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } { ptr @.str.1206, i64 3, i64 0 }, ptr %a709 - store { ptr, i64, i64 } %t707, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - %t711 = load { ptr, i64, i64 }, ptr %a708 - store { ptr, i64, i64 } %t711, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.1210, i64 1, i64 0 }, ptr %a714 - call void @finch_str_concat(ptr %a712, ptr %a713, ptr %a714) - store { ptr, i64, i64 } %t711, ptr %a715 - call void @finch_str_drop(ptr %a715) - %t716 = load { ptr, i64, i64 }, ptr %a712 - %t717 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 1 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t716, ptr %a720 - store { ptr, i64, i64 } %t718, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t716, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - store { ptr, i64, i64 } %t723, ptr %a725 - store { ptr, i64, i64 } { ptr @.str.1211, i64 1, i64 0 }, ptr %a726 - call void @finch_str_concat(ptr %a724, ptr %a725, ptr %a726) - store { ptr, i64, i64 } %t723, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load { ptr, i64, i64 }, ptr %a724 - %t729 = load ptr, ptr %a1 - %t730 = icmp eq ptr %t729, null - br i1 %t730, label %panic2107, label %ok2108 -panic2107: - call void @finch_panic(ptr @.str.1212, i64 319, ptr @.str.1213) - unreachable -ok2108: - %t731 = getelementptr inbounds %S.gen.Gen, ptr %t729, i32 0, i32 1 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 13 - %t733 = load i64, ptr %t732 - %t734 = load { ptr, i64, i64 }, ptr %t731 - %t735 = extractvalue { ptr, i64, i64 } %t734, 1 - %t736 = icmp uge i64 %t733, %t735 - br i1 %t736, label %range2109, label %inrange2110 -range2109: - call void @finch_panic_index(ptr @.str.1214, i64 319, i64 %t733, i64 %t735) - unreachable -inrange2110: - %t737 = extractvalue { ptr, i64, i64 } %t734, 0 - %t738 = getelementptr inbounds { ptr, i64, i64 }, ptr %t737, i64 %t733 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t728, ptr %a741 - store { ptr, i64, i64 } %t739, ptr %a742 - call void @finch_str_concat(ptr %a740, ptr %a741, ptr %a742) - store { ptr, i64, i64 } %t728, ptr %a743 - call void @finch_str_drop(ptr %a743) - %t744 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } %t744, ptr %a746 - store { ptr, i64, i64 } { ptr @.str.1215, i64 1, i64 0 }, ptr %a747 - call void @finch_str_concat(ptr %a745, ptr %a746, ptr %a747) - store { ptr, i64, i64 } %t744, ptr %a748 - call void @finch_str_drop(ptr %a748) - %t749 = load { ptr, i64, i64 }, ptr %a745 - %t750 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 11 - %t751 = load i64, ptr %t750 - call void @finch_str_from_int(ptr %a752, i64 %t751) - %t753 = load { ptr, i64, i64 }, ptr %a752 - store { ptr, i64, i64 } %t749, ptr %a755 - store { ptr, i64, i64 } %t753, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t749, ptr %a757 - call void @finch_str_drop(ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.1216, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = getelementptr inbounds %S.ast.Node, ptr %a662, i32 0, i32 12 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t764, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t764, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - store { ptr, i64, i64 } %t774, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.1217, i64 1, i64 0 }, ptr %a777 - call void @finch_str_concat(ptr %a775, ptr %a776, ptr %a777) - store { ptr, i64, i64 } %t774, ptr %a778 - call void @finch_str_drop(ptr %a778) - %t779 = load { ptr, i64, i64 }, ptr %a775 - %t780 = load { ptr, i64, i64 }, ptr %a663 - store { ptr, i64, i64 } %t779, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t779, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = load { ptr, i64, i64 }, ptr %a781 - %t786 = load i64, ptr %t696 - %t787 = add i64 %t786, 1 - call void @finch_arr_reserve(ptr %t695, i64 %t787, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t788 = load ptr, ptr %t695 - %t789 = getelementptr inbounds { ptr, i64, i64 }, ptr %t788, i64 %t786 - store { ptr, i64, i64 } %t785, ptr %t789 - store i64 %t787, ptr %t696 - call void @finch.drop.arr_str(ptr %a664) - call void @finch_str_drop(ptr %a663) - call void @finch.drop.S_ast_Node(ptr %a662) - br label %each.step2095 -each.step2095: - %t790 = load i64, ptr %a651 - %t791 = add i64 %t790, 1 - store i64 %t791, ptr %a651 - br label %each.cond2093 -each.end2096: - br label %for.step2087 -for.step2087: - %t792 = load i64, ptr %a638 - %t793 = add i64 %t792, 1 - store i64 %t793, ptr %a638 - br label %for.cond2085 -for.end2088: - 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 - %a28 = 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 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2111, label %ok2112 -panic2111: - call void @finch_panic(ptr @.str.1218, i64 325, ptr @.str.1219) - unreachable -ok2112: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br label %logic.from2113 -logic.from2113: - br i1 %t7, label %logic.rhs2114, label %logic.end2115 -logic.rhs2114: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic2116, label %ok2117 -panic2116: - call void @finch_panic(ptr @.str.1220, i64 325, ptr @.str.1221) - unreachable -ok2117: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 29 - %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.rend2118 -logic.rend2118: - br label %logic.end2115 -logic.end2115: - %t14 = phi i1 [ false, %logic.from2113 ], [ %t13, %logic.rend2118 ] - br i1 %t14, label %then2119, label %endif2121 -then2119: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2122, label %ok2123 -panic2122: - call void @finch_panic(ptr @.str.1222, i64 326, ptr @.str.1223) - unreachable -ok2123: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 29 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1224, 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.1225, ptr %t24 - %t27 = call i32 (ptr, ...) @printf(ptr @.str.1226, i32 %t23, ptr %t26) - store { ptr, i64, i64 } %t21, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = call i32 (ptr, ...) @printf(ptr @.str.1227) - br label %endif2121 -endif2121: - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic2124, label %ok2125 -panic2124: - call void @finch_panic(ptr @.str.1228, i64 328, ptr @.str.1229) - unreachable -ok2125: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 1 - %t33 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t34 = load i64, ptr %t33 - %t35 = load { ptr, i64, i64 }, ptr %t32 - %t36 = extractvalue { ptr, i64, i64 } %t35, 1 - %t37 = icmp uge i64 %t34, %t36 - br i1 %t37, label %range2126, label %inrange2127 -range2126: - call void @finch_panic_index(ptr @.str.1230, i64 328, i64 %t34, i64 %t36) - unreachable -inrange2127: - %t38 = extractvalue { ptr, i64, i64 } %t35, 0 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i64 %t34 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1231, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a41 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t46 = load i64, ptr %t45 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t44, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t44, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1232, i64 1, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t61 = load i64, ptr %t60 - call void @finch_str_from_int(ptr %a62, i64 %t61) - %t63 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t59, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t59, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.1233, i64 9, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic2128, label %ok2129 -panic2128: - call void @finch_panic(ptr @.str.1234, i64 328, ptr @.str.1235) - unreachable -ok2129: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 20 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t80, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t80, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = trunc i64 %t90 to i32 - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = icmp eq ptr %t92, null - %t94 = select i1 %t93, ptr @.str.1236, ptr %t92 - %t95 = call i32 (ptr, ...) @printf(ptr @.str.1237, i32 %t91, ptr %t94) - store { ptr, i64, i64 } %t89, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = call i32 (ptr, ...) @printf(ptr @.str.1238) - %t98 = trunc i64 1 to i32 - %t99 = call i32 @fflush(ptr null) - call void @exit(i32 %t98) - 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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2130, label %ok2131 -panic2130: - call void @finch_panic(ptr @.str.1239, i64 334, ptr @.str.1240) - unreachable -ok2131: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 36 - %t6 = load i64, ptr %t5 - %t7 = icmp sge i64 %t6, 0 - br label %logic.from2132 -logic.from2132: - br i1 %t7, label %logic.rhs2133, label %logic.end2134 -logic.rhs2133: - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t8, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.1242, 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.rend2135 -logic.rend2135: - br label %logic.end2134 -logic.end2134: - %t14 = phi i1 [ false, %logic.from2132 ], [ %t13, %logic.rend2135 ] - br i1 %t14, label %then2136, label %endif2138 -then2136: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2139, label %ok2140 -panic2139: - call void @finch_panic(ptr @.str.1243, i64 335, ptr @.str.1244) - unreachable -ok2140: - %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.1245, 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.1246, i64 8, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = call i64 @finch.gen.dbgLocation(ptr %t29) - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = load i64, ptr %t18 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %t17, i64 %t40, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %t17 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i64 %t39 - store { ptr, i64, i64 } %t38, ptr %t42 - store i64 %t40, ptr %t18 - ret void -endif2138: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic2141, label %ok2142 -panic2141: - call void @finch_panic(ptr @.str.1247, i64 338, ptr @.str.1248) - unreachable -ok2142: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 4 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1249, i64 2, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a48 - %t52 = load i64, ptr %t46 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t45, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t45 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t46 - ret void -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2143, label %ok2144 -panic2143: - call void @finch_panic(ptr @.str.1250, i64 342, ptr @.str.1251) - unreachable -ok2144: - %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 %panic2145, label %ok2146 -panic2145: - call void @finch_panic(ptr @.str.1253, i64 343, ptr @.str.1254) - unreachable -ok2146: - %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.1252, i64 2, i64 0 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal { 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 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2147, label %ok2148 -panic2147: - call void @finch_panic(ptr @.str.1255, i64 347, ptr @.str.1256) - unreachable -ok2148: - %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 %panic2149, label %ok2150 -panic2149: - call void @finch_panic(ptr @.str.1257, i64 348, ptr @.str.1258) - unreachable -ok2150: - %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) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal void @finch.gen.label(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic2151, label %ok2152 -panic2151: - call void @finch_panic(ptr @.str.1259, i64 352, ptr @.str.1260) - unreachable -ok2152: - %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.1261, 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 %panic2153, label %ok2154 -panic2153: - call void @finch_panic(ptr @.str.1262, i64 353, ptr @.str.1263) - unreachable -ok2154: - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2155, label %ok2156 -panic2155: - call void @finch_panic(ptr @.str.1264, i64 357, ptr @.str.1265) - unreachable -ok2156: - %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 %then2157, label %endif2159 -then2157: - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1266, 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) - store { ptr, i64, i64 } %t13, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic2160, label %ok2161 -panic2160: - call void @finch_panic(ptr @.str.1267, i64 359, ptr @.str.1268) - unreachable -ok2161: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 9 - store i1 true, ptr %t17 - br label %endif2159 -endif2159: - 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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1269, 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.1270, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1271, i64 9, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic2162, label %ok2163 -panic2162: - call void @finch_panic(ptr @.str.1272, i64 365, ptr @.str.1273) - unreachable -ok2163: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 9 - store i1 true, ptr %t36 - 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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2164, label %ok2165 -panic2164: - call void @finch_panic(ptr @.str.1274, i64 369, ptr @.str.1275) - unreachable -ok2165: - %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 %panic2166, label %ok2167 -panic2166: - call void @finch_panic(ptr @.str.1277, i64 370, ptr @.str.1278) - unreachable -ok2167: - %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.1276, i64 2, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2168, label %ok2169 -panic2168: - call void @finch_panic(ptr @.str.1279, i64 371, ptr @.str.1280) - unreachable -ok2169: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 5 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1281, i64 2, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1282, i64 10, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1283, i64 10, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load i64, ptr %t23 - %t46 = add i64 %t45, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t46, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t47 = load ptr, ptr %t22 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t47, i64 %t45 - store { ptr, i64, i64 } %t44, ptr %t48 - store i64 %t46, ptr %t23 - %t49 = load { ptr, i64, i64 }, ptr %a19 - ret { ptr, i64, i64 } %t49 -} - -define internal { ptr, i64, i64 } @finch.gen.load(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { 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.1284, 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) - store { ptr, i64, i64 } %t12, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1285, i64 6, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t23, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.emit(ptr %t7, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t31 -} - -define internal void @finch.gen.store(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1286, 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.1287, i64 1, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t15, ptr %a18 - store { ptr, i64, i64 } %t16, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t21, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1288, i64 6, i64 0 }, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - %t27 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t26, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t5, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - ret void -} - -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 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a19 = 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 } %t7, ptr %a9 - call void @finch_str_drop(ptr %a9) - store { ptr, i64, i64 } %t8, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t14 = load %S.ast.Type, ptr %t13 - %t15 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t12, %S.ast.Type %t14) - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.store(ptr %t11, { ptr, i64, i64 } %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t20 -} - -define internal { ptr, i64, i64 } @finch.gen.op(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = 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.1289, 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) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.emit(ptr %t6, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a5 - ret { ptr, i64, i64 } %t19 -} - -define internal i1 @finch.gen.has({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -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.cond2170 -find.cond2170: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body2171, label %find.end2174 -find.body2171: - %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.hit2172, label %find.next2173 -find.hit2172: - store i64 %t9, ptr %a5 - br label %find.end2174 -find.next2173: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond2170 -find.end2174: - %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.1290, 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.from2175 -logic.from2175: - br i1 %t12, label %logic.end2177, label %logic.rhs2176 -logic.rhs2176: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1291, 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.rend2178 -logic.rend2178: - br label %logic.end2177 -logic.end2177: - %t18 = phi i1 [ true, %logic.from2175 ], [ %t17, %logic.rend2178 ] - br label %logic.from2179 -logic.from2179: - br i1 %t18, label %logic.end2181, label %logic.rhs2180 -logic.rhs2180: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1292, 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.rend2182 -logic.rend2182: - br label %logic.end2181 -logic.end2181: - %t24 = phi i1 [ true, %logic.from2179 ], [ %t23, %logic.rend2182 ] - br label %logic.from2183 -logic.from2183: - br i1 %t24, label %logic.end2185, label %logic.rhs2184 -logic.rhs2184: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1293, 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.rend2186 -logic.rend2186: - br label %logic.end2185 -logic.end2185: - %t30 = phi i1 [ true, %logic.from2183 ], [ %t29, %logic.rend2186 ] - call void @finch_str_drop(ptr %a7) - 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.1294, 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.from2187 -logic.from2187: - br i1 %t12, label %logic.end2189, label %logic.rhs2188 -logic.rhs2188: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1295, 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.rend2190 -logic.rend2190: - br label %logic.end2189 -logic.end2189: - %t18 = phi i1 [ true, %logic.from2187 ], [ %t17, %logic.rend2190 ] - br label %logic.from2191 -logic.from2191: - br i1 %t18, label %logic.end2193, label %logic.rhs2192 -logic.rhs2192: - %t19 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t19, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1296, 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.rend2194 -logic.rend2194: - br label %logic.end2193 -logic.end2193: - %t24 = phi i1 [ true, %logic.from2191 ], [ %t23, %logic.rend2194 ] - br label %logic.from2195 -logic.from2195: - br i1 %t24, label %logic.end2197, label %logic.rhs2196 -logic.rhs2196: - %t25 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.1297, 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.rend2198 -logic.rend2198: - br label %logic.end2197 -logic.end2197: - %t30 = phi i1 [ true, %logic.from2195 ], [ %t29, %logic.rend2198 ] - call void @finch_str_drop(ptr %a7) - 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.from2199 -logic.from2199: - br i1 %t3, label %logic.end2201, label %logic.rhs2200 -logic.rhs2200: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t4) - br label %logic.rend2202 -logic.rend2202: - br label %logic.end2201 -logic.end2201: - %t6 = phi i1 [ true, %logic.from2199 ], [ %t5, %logic.rend2202 ] - 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.1298, 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.from2203 -logic.from2203: - br i1 %t7, label %logic.end2205, label %logic.rhs2204 -logic.rhs2204: - %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.1299, 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.rend2206 -logic.rend2206: - br label %logic.end2205 -logic.end2205: - %t14 = phi i1 [ true, %logic.from2203 ], [ %t13, %logic.rend2206 ] - 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.from2207 -logic.from2207: - br i1 %t3, label %logic.end2209, label %logic.rhs2208 -logic.rhs2208: - %t4 = load %S.ast.Type, ptr %a1 - %t5 = call i1 @finch.gen.isFloat(%S.ast.Type %t4) - br label %logic.rend2210 -logic.rend2210: - br label %logic.end2209 -logic.end2209: - %t6 = phi i1 [ true, %logic.from2207 ], [ %t5, %logic.rend2210 ] - 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.1300, 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 %then2211, label %endif2213 -then2211: - call void @finch_str_drop(ptr %a7) - ret i64 1 -endif2213: - %t13 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1301, 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.from2214 -logic.from2214: - br i1 %t17, label %logic.end2216, label %logic.rhs2215 -logic.rhs2215: - %t18 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1302, 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.rend2217 -logic.rend2217: - br label %logic.end2216 -logic.end2216: - %t23 = phi i1 [ true, %logic.from2214 ], [ %t22, %logic.rend2217 ] - br label %logic.from2218 -logic.from2218: - br i1 %t23, label %logic.end2220, label %logic.rhs2219 -logic.rhs2219: - %t24 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t24, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1303, 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.rend2221 -logic.rend2221: - br label %logic.end2220 -logic.end2220: - %t29 = phi i1 [ true, %logic.from2218 ], [ %t28, %logic.rend2221 ] - br i1 %t29, label %then2222, label %endif2224 -then2222: - call void @finch_str_drop(ptr %a7) - ret i64 8 -endif2224: - %t30 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1304, 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.from2225 -logic.from2225: - br i1 %t34, label %logic.end2227, label %logic.rhs2226 -logic.rhs2226: - %t35 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1305, 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.rend2228 -logic.rend2228: - br label %logic.end2227 -logic.end2227: - %t40 = phi i1 [ true, %logic.from2225 ], [ %t39, %logic.rend2228 ] - br i1 %t40, label %then2229, label %endif2231 -then2229: - call void @finch_str_drop(ptr %a7) - ret i64 16 -endif2231: - %t41 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1306, 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.from2232 -logic.from2232: - br i1 %t45, label %logic.end2234, label %logic.rhs2233 -logic.rhs2233: - %t46 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1307, 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.rend2235 -logic.rend2235: - br label %logic.end2234 -logic.end2234: - %t51 = phi i1 [ true, %logic.from2232 ], [ %t50, %logic.rend2235 ] - br label %logic.from2236 -logic.from2236: - br i1 %t51, label %logic.end2238, label %logic.rhs2237 -logic.rhs2237: - %t52 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1308, 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.rend2239 -logic.rend2239: - br label %logic.end2238 -logic.end2238: - %t57 = phi i1 [ true, %logic.from2236 ], [ %t56, %logic.rend2239 ] - br i1 %t57, label %then2240, label %endif2242 -then2240: - call void @finch_str_drop(ptr %a7) - ret i64 32 -endif2242: - call void @finch_str_drop(ptr %a7) - 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.from2243 -logic.from2243: - br i1 %t5, label %logic.end2245, label %logic.rhs2244 -logic.rhs2244: - %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.rend2246 -logic.rend2246: - br label %logic.end2245 -logic.end2245: - %t9 = phi i1 [ true, %logic.from2243 ], [ %t8, %logic.rend2246 ] - br i1 %t9, label %then2247, label %endif2249 -then2247: - ret i1 false -endif2249: - %t10 = load %S.ast.Type, ptr %a1 - %t11 = call i1 @finch.gen.isSigned(%S.ast.Type %t10) - br label %logic.from2250 -logic.from2250: - br i1 %t11, label %logic.rhs2251, label %logic.end2252 -logic.rhs2251: - %t12 = load %S.ast.Type, ptr %a2 - %t13 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t12) - br label %logic.rend2253 -logic.rend2253: - br label %logic.end2252 -logic.end2252: - %t14 = phi i1 [ false, %logic.from2250 ], [ %t13, %logic.rend2253 ] - br i1 %t14, label %then2254, label %endif2256 -then2254: - ret i1 false -endif2256: - %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 %then2257, label %endif2259 -then2257: - ret i1 false -endif2259: - %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.1309, i64 464) - 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 %then2260, label %endif2262 -then2260: - %t16 = load %S.ast.Type, ptr %a3 - %t17 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t16) - br i1 %t17, label %then2263, label %endif2265 -then2263: - ret i1 false -endif2265: - %t18 = load i64, ptr %a13 - %t19 = icmp eq i64 %t18, 64 - br i1 %t19, label %then2266, label %endif2268 -then2266: - ret i1 true -endif2268: - %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 -endif2262: - %t26 = load i64, ptr %a13 - %t27 = icmp eq i64 %t26, 64 - br i1 %t27, label %then2269, label %endif2271 -then2269: - ret i1 true -endif2271: - %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 %then2272, label %endif2274 -then2272: - %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 %endif2274 -endif2274: - %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 %panic2275, label %ok2276 -panic2275: - call void @finch_panic(ptr @.str.1310, i64 486, ptr @.str.1311) - unreachable -ok2276: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 16 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2277 -for.cond2277: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2278, label %for.end2280 -for.body2278: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2281, label %ok2282 -panic2281: - call void @finch_panic(ptr @.str.1312, i64 487, ptr @.str.1313) - unreachable -ok2282: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2283, label %inrange2284 -range2283: - call void @finch_panic_index(ptr @.str.1314, i64 487, i64 %t15, i64 %t17) - unreachable -inrange2284: - %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.from2285 -logic.from2285: - br i1 %t27, label %logic.rhs2286, label %logic.end2287 -logic.rhs2286: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2288, label %ok2289 -panic2288: - call void @finch_panic(ptr @.str.1315, i64 487, ptr @.str.1316) - unreachable -ok2289: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2290, label %inrange2291 -range2290: - call void @finch_panic_index(ptr @.str.1317, i64 487, i64 %t31, i64 %t33) - unreachable -inrange2291: - %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.rend2292 -logic.rend2292: - br label %logic.end2287 -logic.end2287: - %t44 = phi i1 [ false, %logic.from2285 ], [ %t43, %logic.rend2292 ] - br i1 %t44, label %then2293, label %endif2295 -then2293: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2295: - br label %for.step2279 -for.step2279: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2277 -for.end2280: - 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 %panic2296, label %ok2297 -panic2296: - call void @finch_panic(ptr @.str.1318, i64 495, ptr @.str.1319) - unreachable -ok2297: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t8 = load i64, ptr %t7 - store i64 0, ptr %a9 - br label %for.cond2298 -for.cond2298: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2299, label %for.end2301 -for.body2299: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2302, label %ok2303 -panic2302: - call void @finch_panic(ptr @.str.1320, i64 496, ptr @.str.1321) - unreachable -ok2303: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 21 - %t15 = load i64, ptr %a9 - %t16 = load { ptr, i64, i64 }, ptr %t14 - %t17 = extractvalue { ptr, i64, i64 } %t16, 1 - %t18 = icmp uge i64 %t15, %t17 - br i1 %t18, label %range2304, label %inrange2305 -range2304: - call void @finch_panic_index(ptr @.str.1322, i64 496, i64 %t15, i64 %t17) - unreachable -inrange2305: - %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.from2306 -logic.from2306: - br i1 %t27, label %logic.rhs2307, label %logic.end2308 -logic.rhs2307: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2309, label %ok2310 -panic2309: - call void @finch_panic(ptr @.str.1323, i64 496, ptr @.str.1324) - unreachable -ok2310: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 21 - %t31 = load i64, ptr %a9 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range2311, label %inrange2312 -range2311: - call void @finch_panic_index(ptr @.str.1325, i64 496, i64 %t31, i64 %t33) - unreachable -inrange2312: - %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.rend2313 -logic.rend2313: - br label %logic.end2308 -logic.end2308: - %t44 = phi i1 [ false, %logic.from2306 ], [ %t43, %logic.rend2313 ] - br i1 %t44, label %then2314, label %endif2316 -then2314: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2316: - br label %for.step2300 -for.step2300: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2298 -for.end2301: - ret i64 -1 -} - -define internal i64 @finch.gen.findSum(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 %panic2317, label %ok2318 -panic2317: - call void @finch_panic(ptr @.str.1326, i64 504, ptr @.str.1327) - unreachable -ok2318: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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.cond2319 -for.cond2319: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body2320, label %for.end2322 -for.body2320: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic2323, label %ok2324 -panic2323: - call void @finch_panic(ptr @.str.1328, i64 505, ptr @.str.1329) - unreachable -ok2324: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 22 - %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 %range2325, label %inrange2326 -range2325: - call void @finch_panic_index(ptr @.str.1330, i64 505, i64 %t15, i64 %t17) - unreachable -inrange2326: - %t19 = extractvalue { ptr, i64, i64 } %t16, 0 - %t20 = getelementptr inbounds %S.gen.SumDef, ptr %t19, i64 %t15 - %t21 = getelementptr inbounds %S.gen.SumDef, 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.from2327 -logic.from2327: - br i1 %t27, label %logic.rhs2328, label %logic.end2329 -logic.rhs2328: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic2330, label %ok2331 -panic2330: - call void @finch_panic(ptr @.str.1331, i64 505, ptr @.str.1332) - unreachable -ok2331: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 22 - %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 %range2332, label %inrange2333 -range2332: - call void @finch_panic_index(ptr @.str.1333, i64 505, i64 %t31, i64 %t33) - unreachable -inrange2333: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds %S.gen.SumDef, ptr %t35, i64 %t31 - %t37 = getelementptr inbounds %S.gen.SumDef, 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.rend2334 -logic.rend2334: - br label %logic.end2329 -logic.end2329: - %t44 = phi i1 [ false, %logic.from2327 ], [ %t43, %logic.rend2334 ] - br i1 %t44, label %then2335, label %endif2337 -then2335: - %t45 = load i64, ptr %a9 - ret i64 %t45 -endif2337: - br label %for.step2321 -for.step2321: - %t46 = load i64, ptr %a9 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a9 - br label %for.cond2319 -for.end2322: - 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 %panic2338, label %ok2339 -panic2338: - call void @finch_panic(ptr @.str.1334, i64 513, ptr @.str.1335) - unreachable -ok2339: - %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.cond2340 -for.cond2340: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body2341, label %for.end2343 -for.body2341: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2344, label %ok2345 -panic2344: - call void @finch_panic(ptr @.str.1336, i64 514, ptr @.str.1337) - unreachable -ok2345: - %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 %range2346, label %inrange2347 -range2346: - call void @finch_panic_index(ptr @.str.1338, i64 514, i64 %t14, i64 %t16) - unreachable -inrange2347: - %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 %then2348, label %endif2350 -then2348: - %t27 = load i64, ptr %a8 - ret i64 %t27 -endif2350: - br label %for.step2342 -for.step2342: - %t28 = load i64, ptr %a8 - %t29 = add i64 %t28, 1 - store i64 %t29, ptr %a8 - br label %for.cond2340 -for.end2343: - 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 %panic2351, label %ok2352 -panic2351: - call void @finch_panic(ptr @.str.1339, i64 522, ptr @.str.1340) - unreachable -ok2352: - %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 %panic2353, label %ok2354 -panic2353: - call void @finch_panic(ptr @.str.1341, i64 522, ptr @.str.1342) - unreachable -ok2354: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 14 - %t10 = load { ptr, i64, i64 }, ptr %t9 - %t11 = call i64 @finch.gen.progOf(ptr %t6, { ptr, i64, i64 } %t10) - %t12 = load { ptr, i64, i64 }, ptr %t5 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range2355, label %inrange2356 -range2355: - call void @finch_panic_index(ptr @.str.1343, i64 522, i64 %t11, i64 %t13) - unreachable -inrange2356: - %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.cond2357 -find.cond2357: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t21 - br i1 %t25, label %find.body2358, label %find.end2361 -find.body2358: - %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.hit2359, label %find.next2360 -find.hit2359: - store i64 %t24, ptr %a20 - br label %find.end2361 -find.next2360: - %t32 = add i64 %t24, 1 - store i64 %t32, ptr %a23 - br label %find.cond2357 -find.end2361: - %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 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca %S.ast.Type, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca %S.ast.Type, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a155 = alloca %S.ast.Type, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a181 = alloca i64, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca i64, align 16 - %a209 = alloca i64, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.1344, 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 %then2362, label %endif2364 -then2362: - %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 %range2365, label %inrange2366 -range2365: - call void @finch_panic_index(ptr @.str.1345, i64 527, i64 0, i64 %t13) - unreachable -inrange2366: - %t15 = extractvalue { ptr, i64, i64 } %t12, 0 - %t16 = getelementptr inbounds %S.ast.Type, ptr %t15, i64 0 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = load %S.ast.Node, ptr %a3 - %t19 = call %S.ast.Type @finch.gen.resolve(ptr %t10, %S.ast.Type %t17, %S.ast.Node %t18) - %t20 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.ast.Type %t20 -endif2364: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1346, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then2367, label %endif2369 -then2367: - %t28 = load ptr, ptr %a1 - %t29 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t30 = load { ptr, i64, i64 }, ptr %t29 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 0, %t31 - br i1 %t32, label %range2370, label %inrange2371 -range2370: - call void @finch_panic_index(ptr @.str.1347, i64 530, i64 0, i64 %t31) - unreachable -inrange2371: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Type, ptr %t33, i64 0 - %t35 = load %S.ast.Type, ptr %t34 - %t36 = load %S.ast.Node, ptr %a3 - %t37 = call %S.ast.Type @finch.gen.resolve(ptr %t28, %S.ast.Type %t35, %S.ast.Node %t36) - store %S.ast.Type %t37, ptr %a38 - %t39 = load %S.ast.Type, ptr %a38 - %t40 = call i1 @finch.gen.isInt(%S.ast.Type %t39) - %t41 = xor i1 %t40, true - br label %logic.from2372 -logic.from2372: - br i1 %t41, label %logic.rhs2373, label %logic.end2374 -logic.rhs2373: - %t42 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.1348, i64 4, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp eq i32 %t46, 0 - br label %logic.rend2375 -logic.rend2375: - br label %logic.end2374 -logic.end2374: - %t48 = phi i1 [ false, %logic.from2372 ], [ %t47, %logic.rend2375 ] - br label %logic.from2376 -logic.from2376: - br i1 %t48, label %logic.rhs2377, label %logic.end2378 -logic.rhs2377: - %t49 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.1349, i64 4, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp eq i32 %t53, 0 - br label %logic.rend2379 -logic.rend2379: - br label %logic.end2378 -logic.end2378: - %t55 = phi i1 [ false, %logic.from2376 ], [ %t54, %logic.rend2379 ] - br label %logic.from2380 -logic.from2380: - br i1 %t55, label %logic.rhs2381, label %logic.end2382 -logic.rhs2381: - %t56 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1350, i64 3, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_eq(ptr %a58, ptr %a59) - %t61 = icmp eq i32 %t60, 0 - br label %logic.rend2383 -logic.rend2383: - br label %logic.end2382 -logic.end2382: - %t62 = phi i1 [ false, %logic.from2380 ], [ %t61, %logic.rend2383 ] - br label %logic.from2384 -logic.from2384: - br i1 %t62, label %logic.rhs2385, label %logic.end2386 -logic.rhs2385: - %t63 = getelementptr inbounds %S.ast.Type, ptr %a38, i32 0, i32 0 - %t64 = load { ptr, i64, i64 }, ptr %t63 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.1351, i64 4, i64 0 }, ptr %a66 - %t67 = call i32 @finch_str_eq(ptr %a65, ptr %a66) - %t68 = icmp eq i32 %t67, 0 - br label %logic.rend2387 -logic.rend2387: - br label %logic.end2386 -logic.end2386: - %t69 = phi i1 [ false, %logic.from2384 ], [ %t68, %logic.rend2387 ] - br i1 %t69, label %then2388, label %endif2390 -then2388: - %t70 = load ptr, ptr %a1 - %t71 = load %S.ast.Node, ptr %a3 - %t72 = load %S.ast.Type, ptr %a38 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } { ptr @.str.1352, i64 63, i64 0 }, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t71, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif2390 -endif2390: - %t80 = load ptr, ptr %a1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = extractvalue { ptr, i64, i64 } %t82, 1 - %t84 = icmp uge i64 1, %t83 - br i1 %t84, label %range2391, label %inrange2392 -range2391: - call void @finch_panic_index(ptr @.str.1353, i64 534, i64 1, i64 %t83) - unreachable -inrange2392: - %t85 = extractvalue { ptr, i64, i64 } %t82, 0 - %t86 = getelementptr inbounds %S.ast.Type, ptr %t85, i64 1 - %t87 = load %S.ast.Type, ptr %t86 - %t88 = load %S.ast.Node, ptr %a3 - %t89 = call %S.ast.Type @finch.gen.resolve(ptr %t80, %S.ast.Type %t87, %S.ast.Node %t88) - store %S.ast.Type %t89, ptr %a90 - %t91 = getelementptr inbounds %S.ast.Type, ptr %a90, i32 0, i32 0 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.1354, i64 4, i64 0 }, ptr %a94 - %t95 = call i32 @finch_str_eq(ptr %a93, ptr %a94) - %t96 = icmp ne i32 %t95, 0 - br i1 %t96, label %then2393, label %endif2395 -then2393: - %t97 = load ptr, ptr %a1 - %t98 = load %S.ast.Node, ptr %a3 - call void @finch.gen.fail(ptr %t97, %S.ast.Node %t98, { ptr, i64, i64 } { ptr @.str.1355, i64 41, i64 0 }) - br label %endif2395 -endif2395: - %t99 = load %S.ast.Type, ptr %a38 - %t100 = load %S.ast.Type, ptr %a90 - %t101 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t99, %S.ast.Type %t100) - call void @finch.drop.S_ast_Type(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.ast.Type %t101 -endif2369: - %t102 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t103 = load { ptr, i64, i64 }, ptr %t102 - store { ptr, i64, i64 } %t103, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1356, i64 5, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_eq(ptr %a104, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br i1 %t107, label %then2396, label %endif2398 -then2396: - %t108 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1357, i64 5, i64 0 }, 0 - %t109 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t110 = load i64, ptr %t109 - %t111 = insertvalue %S.ast.Type %t108, i64 %t110, 4 - store %S.ast.Type %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Type, ptr %a112, i32 0, i32 1 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 0, %t118 - br i1 %t119, label %range2399, label %inrange2400 -range2399: - call void @finch_panic_index(ptr @.str.1358, i64 542, i64 0, i64 %t118) - unreachable -inrange2400: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Type, ptr %t120, i64 0 - %t122 = load %S.ast.Type, ptr %t121 - %t123 = load %S.ast.Node, ptr %a3 - %t124 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t122, %S.ast.Node %t123) - %t125 = load i64, ptr %t114 - %t126 = add i64 %t125, 1 - call void @finch_arr_reserve(ptr %t113, i64 %t126, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t127 = load ptr, ptr %t113 - %t128 = getelementptr inbounds %S.ast.Type, ptr %t127, i64 %t125 - store %S.ast.Type %t124, ptr %t128 - store i64 %t126, ptr %t114 - %t129 = load %S.ast.Type, ptr %a112 - ret %S.ast.Type %t129 -endif2398: - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1359, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %then2401, label %endif2403 -then2401: - %t136 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br i1 %t139, label %then2404, label %endif2406 -then2404: - %t140 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - ret %S.ast.Type %t143 -endif2406: - %t144 = load ptr, ptr %a1 - %t145 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %t145 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 0, %t147 - br i1 %t148, label %range2407, label %inrange2408 -range2407: - call void @finch_panic_index(ptr @.str.1360, i64 549, i64 0, i64 %t147) - unreachable -inrange2408: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = load %S.ast.Node, ptr %a3 - %t153 = call %S.ast.Type @finch.gen.resolve(ptr %t144, %S.ast.Type %t151, %S.ast.Node %t152) - %t154 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t153) - store %S.ast.Type %t153, ptr %a155 - call void @finch.drop.S_ast_Type(ptr %a155) - ret %S.ast.Type %t154 -endif2403: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.1361, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br i1 %t161, label %then2409, label %endif2411 -then2409: - %t162 = load %S.ast.Type, ptr %a2 - store %S.ast.Type %t162, ptr %a163 - call void @finch.copy.S_ast_Type(ptr %a164, ptr %a163) - %t165 = load %S.ast.Type, ptr %a164 - ret %S.ast.Type %t165 -endif2411: - %t166 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = icmp eq i64 %t168, 0 - br label %logic.from2412 -logic.from2412: - br i1 %t169, label %logic.rhs2413, label %logic.end2414 -logic.rhs2413: - %t170 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t171 = getelementptr inbounds { ptr, i64, i64 }, ptr %t170, i32 0, i32 1 - %t172 = load i64, ptr %t171 - %t173 = icmp eq i64 %t172, 0 - br label %logic.rend2415 -logic.rend2415: - br label %logic.end2414 -logic.end2414: - %t174 = phi i1 [ false, %logic.from2412 ], [ %t173, %logic.rend2415 ] - br label %logic.from2416 -logic.from2416: - br i1 %t174, label %logic.rhs2417, label %logic.end2418 -logic.rhs2417: - %t175 = load ptr, ptr %a1 - %t176 = icmp eq ptr %t175, null - br i1 %t176, label %panic2419, label %ok2420 -panic2419: - call void @finch_panic(ptr @.str.1362, i64 555, ptr @.str.1363) - unreachable -ok2420: - %t177 = getelementptr inbounds %S.gen.Gen, ptr %t175, i32 0, i32 18 - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %t177, i32 0, i32 1 - %t179 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t180 = load { ptr, i64, i64 }, ptr %t179 - store i64 -1, ptr %a181 - %t182 = load i64, ptr %t178 - %t183 = load ptr, ptr %t177 - store i64 0, ptr %a184 - br label %find.cond2421 -find.cond2421: - %t185 = load i64, ptr %a184 - %t186 = icmp slt i64 %t185, %t182 - br i1 %t186, label %find.body2422, label %find.end2425 -find.body2422: - %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.hit2423, label %find.next2424 -find.hit2423: - store i64 %t185, ptr %a181 - br label %find.end2425 -find.next2424: - %t193 = add i64 %t185, 1 - store i64 %t193, ptr %a184 - br label %find.cond2421 -find.end2425: - %t194 = load i64, ptr %a181 - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend2426 -logic.rend2426: - br label %logic.end2418 -logic.end2418: - %t196 = phi i1 [ false, %logic.from2416 ], [ %t195, %logic.rend2426 ] - br i1 %t196, label %then2427, label %endif2429 -then2427: - %t197 = load ptr, ptr %a1 - %t198 = icmp eq ptr %t197, null - br i1 %t198, label %panic2430, label %ok2431 -panic2430: - call void @finch_panic(ptr @.str.1364, i64 556, ptr @.str.1365) - unreachable -ok2431: - %t199 = getelementptr inbounds %S.gen.Gen, ptr %t197, i32 0, i32 19 - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic2432, label %ok2433 -panic2432: - call void @finch_panic(ptr @.str.1366, i64 556, ptr @.str.1367) - unreachable -ok2433: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 18 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i32 0, i32 1 - %t204 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t205 = load { ptr, i64, i64 }, ptr %t204 - store i64 -1, ptr %a206 - %t207 = load i64, ptr %t203 - %t208 = load ptr, ptr %t202 - store i64 0, ptr %a209 - br label %find.cond2434 -find.cond2434: - %t210 = load i64, ptr %a209 - %t211 = icmp slt i64 %t210, %t207 - br i1 %t211, label %find.body2435, label %find.end2438 -find.body2435: - %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %t208, i64 %t210 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } %t205, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %find.hit2436, label %find.next2437 -find.hit2436: - store i64 %t210, ptr %a206 - br label %find.end2438 -find.next2437: - %t218 = add i64 %t210, 1 - store i64 %t218, ptr %a209 - br label %find.cond2434 -find.end2438: - %t219 = load i64, ptr %a206 - %t220 = load { ptr, i64, i64 }, ptr %t199 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range2439, label %inrange2440 -range2439: - call void @finch_panic_index(ptr @.str.1368, i64 556, i64 %t219, i64 %t221) - unreachable -inrange2440: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Type, ptr %t223, i64 %t219 - %t225 = load %S.ast.Type, ptr %t224 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - ret %S.ast.Type %t228 -endif2429: - %t229 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t231 = load i64, ptr %t230 - %t232 = icmp sgt i64 %t231, 0 - br i1 %t232, label %then2441, label %endif2443 -then2441: - store { ptr, i64, i64 } zeroinitializer, ptr %a233 - %t234 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - store i64 0, ptr %a235 - br label %each.cond2444 -each.cond2444: - %t236 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t237 = load i64, ptr %t236 - %t238 = load i64, ptr %a235 - %t239 = icmp slt i64 %t238, %t237 - br i1 %t239, label %each.body2445, label %each.end2447 -each.body2445: - %t240 = load ptr, ptr %t234 - %t241 = getelementptr inbounds %S.ast.Type, ptr %t240, i64 %t238 - %t242 = load %S.ast.Type, ptr %t241 - store %S.ast.Type %t242, ptr %a243 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a233, i32 0, i32 1 - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Type, ptr %a243 - %t247 = load %S.ast.Node, ptr %a3 - %t248 = call %S.ast.Type @finch.gen.resolve(ptr %t245, %S.ast.Type %t246, %S.ast.Node %t247) - %t249 = load i64, ptr %t244 - %t250 = add i64 %t249, 1 - call void @finch_arr_reserve(ptr %a233, i64 %t250, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t251 = load ptr, ptr %a233 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i64 %t249 - store %S.ast.Type %t248, ptr %t252 - store i64 %t250, ptr %t244 - br label %each.step2446 -each.step2446: - %t253 = load i64, ptr %a235 - %t254 = add i64 %t253, 1 - store i64 %t254, ptr %a235 - br label %each.cond2444 -each.end2447: - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic2448, label %ok2449 -panic2448: - call void @finch_panic(ptr @.str.1369, i64 564, ptr @.str.1370) - unreachable -ok2449: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 14 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - %t266 = icmp sgt i64 %t265, 0 - br i1 %t266, label %then2450, label %endif2452 -then2450: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = call i1 @finch.gen.imports(ptr %t267, { ptr, i64, i64 } %t269) - %t271 = xor i1 %t270, true - br i1 %t271, label %then2453, label %endif2455 -then2453: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a3 - %t274 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t275 = load { ptr, i64, i64 }, ptr %t274 - store { ptr, i64, i64 } { ptr @.str.1371, i64 1, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.1372, i64 36, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t286 = load { ptr, i64, i64 }, ptr %t285 - store { ptr, i64, i64 } %t284, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t284, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.1373, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t272, %S.ast.Node %t273, { ptr, i64, i64 } %t296) - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif2455 -endif2455: - %t298 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t299 = load { ptr, i64, i64 }, ptr %t298 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_copy(ptr %a301, ptr %a300) - %t302 = load { ptr, i64, i64 }, ptr %a301 - %t303 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t302, ptr %a262 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif2452 -endif2452: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a262 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = load { ptr, i64, i64 }, ptr %a233 - %t310 = load %S.ast.Node, ptr %a3 - %t311 = call %S.ast.Type @finch.gen.instStruct(ptr %t305, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t308, { ptr, i64, i64 } %t309, %S.ast.Node %t310) - call void @finch_str_drop(ptr %a262) - call void @finch.drop.arr_S_ast_Type(ptr %a233) - ret %S.ast.Type %t311 -endif2443: - %t312 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1374, i64 1, i64 0 }, ptr %a315 - %t316 = call i32 @finch_str_eq(ptr %a314, ptr %a315) - %t317 = icmp ne i32 %t316, 0 - br i1 %t317, label %then2456, label %endif2458 -then2456: - %t318 = load ptr, ptr %a1 - %t319 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t320 = load { ptr, i64, i64 }, ptr %t319 - %t321 = call i64 @finch.gen.findStruct(ptr %t318, { ptr, i64, i64 } { ptr @.str.1375, i64 1, i64 0 }, { ptr, i64, i64 } %t320) - %t322 = icmp slt i64 %t321, 0 - br i1 %t322, label %then2459, label %endif2461 -then2459: - %t323 = load ptr, ptr %a1 - %t324 = load %S.ast.Node, ptr %a3 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t326 = load { ptr, i64, i64 }, ptr %t325 - store { ptr, i64, i64 } { ptr @.str.1376, i64 28, i64 0 }, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - %t330 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t330, ptr %a332 - store { ptr, i64, i64 } { ptr @.str.1377, i64 1, i64 0 }, ptr %a333 - call void @finch_str_concat(ptr %a331, ptr %a332, ptr %a333) - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_drop(ptr %a334) - %t335 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.fail(ptr %t323, %S.ast.Node %t324, { ptr, i64, i64 } %t335) - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif2461 -endif2461: - %t337 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1378, i64 6, i64 0 }, 0 - %t338 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_copy(ptr %a341, ptr %a340) - %t342 = load { ptr, i64, i64 }, ptr %a341 - %t343 = insertvalue %S.ast.Type %t337, { ptr, i64, i64 } %t342, 2 - %t344 = insertvalue %S.ast.Type %t343, { ptr, i64, i64 } { ptr @.str.1379, i64 1, i64 0 }, 3 - ret %S.ast.Type %t344 -endif2458: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic2462, label %ok2463 -panic2462: - call void @finch_panic(ptr @.str.1380, i64 579, ptr @.str.1381) - unreachable -ok2463: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 14 - %t348 = load { ptr, i64, i64 }, ptr %t347 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_copy(ptr %a350, ptr %a349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t351, ptr %a352 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = getelementptr inbounds { ptr, i64, i64 }, ptr %t353, i32 0, i32 1 - %t355 = load i64, ptr %t354 - %t356 = icmp sgt i64 %t355, 0 - br i1 %t356, label %then2464, label %endif2466 -then2464: - %t357 = load ptr, ptr %a1 - %t358 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t359 = load { ptr, i64, i64 }, ptr %t358 - %t360 = call i1 @finch.gen.imports(ptr %t357, { ptr, i64, i64 } %t359) - %t361 = xor i1 %t360, true - br i1 %t361, label %then2467, label %endif2469 -then2467: - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Node, ptr %a3 - %t364 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.1382, i64 1, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1383, i64 36, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t376 = load { ptr, i64, i64 }, ptr %t375 - store { ptr, i64, i64 } %t374, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t374, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.1384, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - call void @finch.gen.fail(ptr %t362, %S.ast.Node %t363, { ptr, i64, i64 } %t386) - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif2469 -endif2469: - %t388 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch_str_copy(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - %t393 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t392, ptr %a352 - store { ptr, i64, i64 } %t393, ptr %a394 - call void @finch_str_drop(ptr %a394) - br label %endif2466 -endif2466: - %t395 = load ptr, ptr %a1 - %t396 = load { ptr, i64, i64 }, ptr %a352 - %t397 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t398 = load { ptr, i64, i64 }, ptr %t397 - %t399 = call i64 @finch.gen.findEnum(ptr %t395, { ptr, i64, i64 } %t396, { ptr, i64, i64 } %t398) - %t400 = icmp sge i64 %t399, 0 - br i1 %t400, label %then2470, label %endif2472 -then2470: - %t401 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1385, i64 4, i64 0 }, 0 - %t402 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - call void @finch_str_copy(ptr %a405, ptr %a404) - %t406 = load { ptr, i64, i64 }, ptr %a405 - %t407 = insertvalue %S.ast.Type %t401, { ptr, i64, i64 } %t406, 2 - %t408 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t408, ptr %a409 - call void @finch_str_copy(ptr %a410, ptr %a409) - %t411 = load { ptr, i64, i64 }, ptr %a410 - %t412 = insertvalue %S.ast.Type %t407, { ptr, i64, i64 } %t411, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t412 -endif2472: - %t413 = load ptr, ptr %a1 - %t414 = load { ptr, i64, i64 }, ptr %a352 - %t415 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call i64 @finch.gen.findStruct(ptr %t413, { ptr, i64, i64 } %t414, { ptr, i64, i64 } %t416) - %t418 = icmp slt i64 %t417, 0 - br i1 %t418, label %then2473, label %endif2475 -then2473: - %t419 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t420 = getelementptr inbounds { ptr, i64, i64 }, ptr %t419, i32 0, i32 1 - %t421 = load i64, ptr %t420 - %t422 = icmp eq i64 %t421, 0 - br label %logic.from2476 -logic.from2476: - br i1 %t422, label %logic.rhs2477, label %logic.end2478 -logic.rhs2477: - %t423 = load ptr, ptr %a1 - %t424 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t425 = load { ptr, i64, i64 }, ptr %t424 - %t426 = call i64 @finch.gen.findStruct(ptr %t423, { ptr, i64, i64 } { ptr @.str.1386, i64 1, i64 0 }, { ptr, i64, i64 } %t425) - %t427 = icmp sge i64 %t426, 0 - br label %logic.rend2479 -logic.rend2479: - br label %logic.end2478 -logic.end2478: - %t428 = phi i1 [ false, %logic.from2476 ], [ %t427, %logic.rend2479 ] - br i1 %t428, label %then2480, label %endif2482 -then2480: - %t429 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1387, i64 6, i64 0 }, 0 - %t430 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t431 = load { ptr, i64, i64 }, ptr %t430 - store { ptr, i64, i64 } %t431, ptr %a432 - call void @finch_str_copy(ptr %a433, ptr %a432) - %t434 = load { ptr, i64, i64 }, ptr %a433 - %t435 = insertvalue %S.ast.Type %t429, { ptr, i64, i64 } %t434, 2 - %t436 = insertvalue %S.ast.Type %t435, { ptr, i64, i64 } { ptr @.str.1388, i64 1, i64 0 }, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t436 -endif2482: - %t437 = load ptr, ptr %a1 - %t438 = load %S.ast.Node, ptr %a3 - %t439 = load %S.ast.Type, ptr %a2 - %t440 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t439) - store { ptr, i64, i64 } { ptr @.str.1389, i64 24, i64 0 }, ptr %a442 - store { ptr, i64, i64 } %t440, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - store { ptr, i64, i64 } %t445, ptr %a447 - store { ptr, i64, i64 } { ptr @.str.1390, i64 1, i64 0 }, ptr %a448 - call void @finch_str_concat(ptr %a446, ptr %a447, ptr %a448) - store { ptr, i64, i64 } %t445, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a446 - call void @finch.gen.fail(ptr %t437, %S.ast.Node %t438, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a451 - call void @finch_str_drop(ptr %a451) - br label %endif2475 -endif2475: - %t452 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.1391, i64 6, i64 0 }, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_copy(ptr %a456, ptr %a455) - %t457 = load { ptr, i64, i64 }, ptr %a456 - %t458 = insertvalue %S.ast.Type %t452, { ptr, i64, i64 } %t457, 2 - %t459 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t459, ptr %a460 - call void @finch_str_copy(ptr %a461, ptr %a460) - %t462 = load { ptr, i64, i64 }, ptr %a461 - %t463 = insertvalue %S.ast.Type %t458, { ptr, i64, i64 } %t462, 3 - call void @finch_str_drop(ptr %a352) - ret %S.ast.Type %t463 -} - -define internal { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %p0) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1393, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1394, 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.1396, i64 1, i64 0 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1397, 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 } %t7, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.1399, i64 1, i64 0 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1400, i64 1, i64 0 }, ptr %a17 - call void @finch_str_replace(ptr %a15, ptr %a14, ptr %a16, ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t18, ptr %a20 - store { ptr, i64, i64 } { ptr @.str.1402, i64 1, i64 0 }, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.1403, i64 0, i64 0 }, ptr %a23 - call void @finch_str_replace(ptr %a21, ptr %a20, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a25 - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t24 -} - -define internal { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %p0) { -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 %then2483, label %endif2485 -then2483: - ret { ptr, i64, i64 } { ptr @.str.1404, i64 4, i64 0 } -endif2485: - %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 - %a29 = 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 - %a38 = 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.1405, 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 %then2486, label %endif2488 -then2486: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1406, i64 2, i64 0 } -endif2488: - %t14 = load %S.ast.Type, ptr %a2 - %t15 = call i1 @finch.gen.isInt(%S.ast.Type %t14) - br label %logic.from2489 -logic.from2489: - br i1 %t15, label %logic.end2491, label %logic.rhs2490 -logic.rhs2490: - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - 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.rend2492 -logic.rend2492: - br label %logic.end2491 -logic.end2491: - %t21 = phi i1 [ true, %logic.from2489 ], [ %t20, %logic.rend2492 ] - br i1 %t21, label %then2493, label %endif2495 -then2493: - %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.1408, i64 1, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t30 -endif2495: - %t31 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1409, i64 5, i64 0 }, ptr %a33 - %t34 = call i32 @finch_str_eq(ptr %a32, ptr %a33) - %t35 = icmp ne i32 %t34, 0 - br i1 %t35, label %then2496, label %endif2498 -then2496: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1410, i64 6, i64 0 } -endif2498: - %t36 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.1411, i64 3, i64 0 }, ptr %a38 - %t39 = call i32 @finch_str_eq(ptr %a37, ptr %a38) - %t40 = icmp ne i32 %t39, 0 - br i1 %t40, label %then2499, label %endif2501 -then2499: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1412, i64 5, i64 0 } -endif2501: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1413, 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.from2502 -logic.from2502: - br i1 %t45, label %logic.end2504, label %logic.rhs2503 -logic.rhs2503: - %t46 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t46, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1414, i64 5, i64 0 }, ptr %a48 - %t49 = call i32 @finch_str_eq(ptr %a47, ptr %a48) - %t50 = icmp ne i32 %t49, 0 - br label %logic.rend2505 -logic.rend2505: - br label %logic.end2504 -logic.end2504: - %t51 = phi i1 [ true, %logic.from2502 ], [ %t50, %logic.rend2505 ] - br i1 %t51, label %then2506, label %endif2508 -then2506: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1415, i64 17, i64 0 } -endif2508: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1416, 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 %then2509, label %endif2511 -then2509: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1417, i64 37, i64 0 } -endif2511: - %t57 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t57, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1418, 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 %then2512, label %endif2514 -then2512: - %t62 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1419, i64 1, i64 0 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.1420, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = load ptr, ptr %a1 - %t77 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 0, %t79 - br i1 %t80, label %range2515, label %inrange2516 -range2515: - call void @finch_panic_index(ptr @.str.1421, i64 632, i64 0, i64 %t79) - unreachable -inrange2516: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Type, ptr %t81, i64 0 - %t83 = load %S.ast.Type, ptr %t82 - %t84 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t76, %S.ast.Type %t83) - store { ptr, i64, i64 } %t75, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t75, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.1422, i64 1, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t95 -endif2514: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.1423, i64 4, i64 0 }, ptr %a98 - %t99 = call i32 @finch_str_eq(ptr %a97, ptr %a98) - %t100 = icmp ne i32 %t99, 0 - br i1 %t100, label %then2517, label %endif2519 -then2517: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1424, i64 3, i64 0 } -endif2519: - %t101 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.1425, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.from2520 -logic.from2520: - br i1 %t105, label %logic.end2522, label %logic.rhs2521 -logic.rhs2521: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.1426, 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.rend2523 -logic.rend2523: - br label %logic.end2522 -logic.end2522: - %t111 = phi i1 [ true, %logic.from2520 ], [ %t110, %logic.rend2523 ] - br i1 %t111, label %then2524, label %endif2526 -then2524: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1427, i64 3, i64 0 } -endif2526: - %t112 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1428, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2527, label %endif2529 -then2527: - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.1429, i64 4, i64 0 } -endif2529: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t118) - store { ptr, i64, i64 } { ptr @.str.1430, i64 3, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.1431, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t131) - store { ptr, i64, i64 } %t129, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t132, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a133 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t138 -} - -define internal { ptr, i64, i64 } @finch.gen.retTy(ptr %p0, %S.gen.FnSig %p1) { -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 - %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 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then2530, label %endif2532 -then2530: - %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 -endif2532: - store { ptr, i64, i64 } { ptr @.str.1432, 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.1433, 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 %then2533, label %endif2535 -then2533: - %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) - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t21, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif2535 -endif2535: - %t24 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1434, 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.1435, i64 21, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %p0) { -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 - %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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Node %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.1436, 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) - store { ptr, i64, i64 } %t7, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.1437, i64 1, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 12 - %t24 = load i64, ptr %t23 - call void @finch_str_from_int(ptr %a25, i64 %t24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t22, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t22, ptr %a30 - call void @finch_str_drop(ptr %a30) - store { ptr, i64, i64 } %t26, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.1438, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 13 - %t39 = load i64, ptr %t38 - call void @finch_str_from_int(ptr %a40, i64 %t39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t37, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t37, ptr %a45 - call void @finch_str_drop(ptr %a45) - store { ptr, i64, i64 } %t41, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a42 - ret { ptr, i64, i64 } %t47 -} - -define internal { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %p0) { -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.from2536 -logic.from2536: - br i1 %t9, label %logic.end2538, label %logic.rhs2537 -logic.rhs2537: - %t10 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.1439, 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.rend2539 -logic.rend2539: - br label %logic.end2538 -logic.end2538: - %t15 = phi i1 [ true, %logic.from2536 ], [ %t14, %logic.rend2539 ] - br label %logic.from2540 -logic.from2540: - br i1 %t15, label %logic.end2542, label %logic.rhs2541 -logic.rhs2541: - %t16 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1440, 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.rend2543 -logic.rend2543: - br label %logic.end2542 -logic.end2542: - %t21 = phi i1 [ true, %logic.from2540 ], [ %t20, %logic.rend2543 ] - br i1 %t21, label %then2544, label %endif2546 -then2544: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1441, i64 1, i64 0 } -endif2546: - %t22 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1442, 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 %then2547, label %endif2549 -then2547: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1443, i64 5, i64 0 } -endif2549: - %t27 = load %S.ast.Type, ptr %a1 - %t28 = call i1 @finch.gen.isFloat(%S.ast.Type %t27) - br i1 %t28, label %then2550, label %endif2552 -then2550: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1444, i64 3, i64 0 } -endif2552: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1445, 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.from2553 -logic.from2553: - br i1 %t33, label %logic.end2555, label %logic.rhs2554 -logic.rhs2554: - %t34 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1446, 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.rend2556 -logic.rend2556: - br label %logic.end2555 -logic.end2555: - %t39 = phi i1 [ true, %logic.from2553 ], [ %t38, %logic.rend2556 ] - br i1 %t39, label %then2557, label %endif2559 -then2557: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1447, i64 4, i64 0 } -endif2559: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.1448, 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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.1449, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1450, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal i1 @finch.gen.owning(ptr %p0, %S.ast.Type %p1) { -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.1451, 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.from2560 -logic.from2560: - br i1 %t8, label %logic.end2562, label %logic.rhs2561 -logic.rhs2561: - %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.1452, 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.rend2563 -logic.rend2563: - br label %logic.end2562 -logic.end2562: - %t15 = phi i1 [ true, %logic.from2560 ], [ %t14, %logic.rend2563 ] - br label %logic.from2564 -logic.from2564: - br i1 %t15, label %logic.end2566, label %logic.rhs2565 -logic.rhs2565: - %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.1453, 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.rend2567 -logic.rend2567: - br label %logic.end2566 -logic.end2566: - %t22 = phi i1 [ true, %logic.from2564 ], [ %t21, %logic.rend2567 ] - br i1 %t22, label %then2568, label %endif2570 -then2568: - ret i1 true -endif2570: - %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.1454, 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 %then2571, label %endif2573 -then2571: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic2574, label %ok2575 -panic2574: - call void @finch_panic(ptr @.str.1455, i64 690, ptr @.str.1456) - unreachable -ok2575: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 16 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t34 = load { ptr, i64, i64 }, ptr %t33 - %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 %range2576, label %inrange2577 -range2576: - call void @finch_panic_index(ptr @.str.1457, i64 690, i64 %t37, i64 %t39) - unreachable -inrange2577: - %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 -endif2573: - 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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - store %S.ast.Type %p0, ptr %a1 - %t2 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.1458, 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 %then2578, label %endif2580 -then2578: - %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 %range2581, label %inrange2582 -range2581: - call void @finch_panic_index(ptr @.str.1460, i64 697, i64 0, i64 %t10) - unreachable -inrange2582: - %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.1459, i64 4, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - ret { ptr, i64, i64 } %t20 -endif2580: - %t21 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.1461, 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 %then2583, label %endif2585 -then2583: - %t27 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 0, %t29 - br i1 %t30, label %range2586, label %inrange2587 -range2586: - call void @finch_panic_index(ptr @.str.1463, i64 700, i64 0, i64 %t29) - unreachable -inrange2587: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds %S.ast.Type, ptr %t31, i64 0 - %t33 = load %S.ast.Type, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t33) - store { ptr, i64, i64 } { ptr @.str.1462, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1464, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range2588, label %inrange2589 -range2588: - call void @finch_panic_index(ptr @.str.1465, i64 700, i64 1, i64 %t47) - unreachable -inrange2589: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Type, ptr %t49, i64 1 - %t51 = load %S.ast.Type, ptr %t50 - %t52 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t51) - store { ptr, i64, i64 } %t44, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - store { ptr, i64, i64 } %t44, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - ret { ptr, i64, i64 } %t58 -endif2585: - %t59 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.1466, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then2590, label %endif2592 -then2590: - %t65 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t66 = load { ptr, i64, i64 }, ptr %t65 - %t67 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t66) - store { ptr, i64, i64 } { ptr @.str.1467, i64 2, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1468, i64 1, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t77, ptr %a81 - store { ptr, i64, i64 } %t79, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t77, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -endif2592: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1469, i64 6, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp ne i32 %t89, 0 - br i1 %t90, label %then2593, label %endif2595 -then2593: - %t91 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 3 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t92) - store { ptr, i64, i64 } { ptr @.str.1470, i64 2, i64 0 }, ptr %a95 - store { ptr, i64, i64 } %t93, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.1471, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t105) - store { ptr, i64, i64 } %t103, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t103, ptr %a110 - call void @finch_str_drop(ptr %a110) - store { ptr, i64, i64 } %t106, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a107 - ret { ptr, i64, i64 } %t112 -endif2595: - %t113 = getelementptr inbounds %S.ast.Type, ptr %a1, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_copy(ptr %a116, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - ret { ptr, i64, i64 } %t117 -} - -define internal { ptr, i64, i64 } @finch.gen.hex(i64 %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.1472, 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 %range2596, label %inrange2597 -range2596: - call void @finch_panic_index(ptr @.str.1473, i64 715, i64 %t4, i64 %t6) - unreachable -inrange2597: - %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 %range2598, label %inrange2599 -range2598: - call void @finch_panic_index(ptr @.str.1474, i64 715, i64 %t14, i64 %t16) - unreachable -inrange2599: - %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) - store { ptr, i64, i64 } %t12, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t28 -} - -define internal { ptr, i64, i64 } @finch.gen.strGlobal(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca i64, align 16 - %a29 = alloca i8, align 16 - %a32 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = 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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2600, label %ok2601 -panic2600: - call void @finch_panic(ptr @.str.1475, i64 719, ptr @.str.1476) - unreachable -ok2601: - %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 %panic2602, label %ok2603 -panic2602: - call void @finch_panic(ptr @.str.1478, i64 720, ptr @.str.1479) - unreachable -ok2603: - %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.1477, i64 6, i64 0 }, ptr %a15 - store { ptr, i64, i64 } %t13, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %each.cond2604 -each.cond2604: - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = load i64, ptr %a21 - %t25 = icmp slt i64 %t24, %t23 - br i1 %t25, label %each.body2605, label %each.end2607 -each.body2605: - %t26 = load ptr, ptr %a2 - %t27 = getelementptr inbounds i8, ptr %t26, i64 %t24 - %t28 = load i8, ptr %t27 - store i8 %t28, ptr %a29 - %t30 = load i8, ptr %a29 - %t31 = zext i8 %t30 to i64 - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then2608, label %endif2610 -then2608: - %t35 = load i64, ptr %a32 - %t36 = add i64 %t35, 256 - store i64 %t36, ptr %a32 - br label %endif2610 -endif2610: - %t37 = load i64, ptr %a32 - %t38 = icmp sge i64 %t37, 32 - br label %logic.from2611 -logic.from2611: - br i1 %t38, label %logic.rhs2612, label %logic.end2613 -logic.rhs2612: - %t39 = load i64, ptr %a32 - %t40 = icmp slt i64 %t39, 127 - br label %logic.rend2614 -logic.rend2614: - br label %logic.end2613 -logic.end2613: - %t41 = phi i1 [ false, %logic.from2611 ], [ %t40, %logic.rend2614 ] - br label %logic.from2615 -logic.from2615: - br i1 %t41, label %logic.rhs2616, label %logic.end2617 -logic.rhs2616: - %t42 = load i8, ptr %a29 - %t43 = icmp ne i8 %t42, 34 - br label %logic.rend2618 -logic.rend2618: - br label %logic.end2617 -logic.end2617: - %t44 = phi i1 [ false, %logic.from2615 ], [ %t43, %logic.rend2618 ] - br label %logic.from2619 -logic.from2619: - br i1 %t44, label %logic.rhs2620, label %logic.end2621 -logic.rhs2620: - %t45 = load i8, ptr %a29 - %t46 = icmp ne i8 %t45, 92 - br label %logic.rend2622 -logic.rend2622: - br label %logic.end2621 -logic.end2621: - %t47 = phi i1 [ false, %logic.from2619 ], [ %t46, %logic.rend2622 ] - br i1 %t47, label %then2623, label %else2624 -then2623: - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t49 = load i8, ptr %a29 - call void @finch_str_from_char(ptr %a50, i8 signext %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - %t52 = load i64, ptr %t48 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t53, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a20 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t54, i64 %t52 - store { ptr, i64, i64 } %t51, ptr %t55 - store i64 %t53, ptr %t48 - br label %endif2625 -else2624: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t57 = load i64, ptr %a32 - %t58 = call { ptr, i64, i64 } @finch.gen.hex(i64 %t57) - store { ptr, i64, i64 } { ptr @.str.1480, i64 1, i64 0 }, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = load i64, ptr %t56 - %t65 = add i64 %t64, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t65, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t66 = load ptr, ptr %a20 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t66, i64 %t64 - store { ptr, i64, i64 } %t63, ptr %t67 - store i64 %t65, ptr %t56 - br label %endif2625 -endif2625: - br label %each.step2606 -each.step2606: - %t68 = load i64, ptr %a21 - %t69 = add i64 %t68, 1 - store i64 %t69, ptr %a21 - br label %each.cond2604 -each.end2607: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic2626, label %ok2627 -panic2626: - call void @finch_panic(ptr @.str.1481, i64 733, ptr @.str.1482) - unreachable -ok2627: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 2 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1483, i64 34, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = add i64 %t80, 1 - call void @finch_str_from_int(ptr %a82, i64 %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t78, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t78, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1484, i64 9, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1485, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a20, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t94, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.1486, i64 4, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load i64, ptr %t73 - %t111 = add i64 %t110, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t111, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t112 = load ptr, ptr %t72 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 %t110 - store { ptr, i64, i64 } %t109, ptr %t113 - store i64 %t111, ptr %t73 - %t114 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_str(ptr %a20) - ret { ptr, i64, i64 } %t114 -} - -define internal %S.gen.Val @finch.gen.strConst(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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.1487, 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.1488, i64 6, i64 0 }, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t18 = load i64, ptr %t17 - call void @finch_str_from_int(ptr %a19, i64 %t18) - %t20 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t16, ptr %a24 - call void @finch_str_drop(ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1489, i64 9, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t31, 0 - %t33 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1490, i64 3, i64 0 }) - %t34 = insertvalue %S.gen.Val %t32, %S.ast.Type %t33, 1 - %t35 = insertvalue %S.gen.Val %t34, i1 true, 2 - call void @finch_str_drop(ptr %a6) - ret %S.gen.Val %t35 -} - -define internal void @finch.gen.panicIf(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1491, 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.1492, 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 %panic2628, label %ok2629 -panic2628: - call void @finch_panic(ptr @.str.1493, i64 749, ptr @.str.1494) - unreachable -ok2629: - %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 %range2630, label %inrange2631 -range2630: - call void @finch_panic_index(ptr @.str.1495, i64 749, i64 %t22, i64 %t24) - unreachable -inrange2631: - %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.1496, 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.1497, i64 6, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t47 = load i64, ptr %t46 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } %t45, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t45, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1498, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1499, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - call void @finch.gen.emit(ptr %t35, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t73, { ptr, i64, i64 } { ptr @.str.1500, i64 11, i64 0 }) - %t74 = load ptr, ptr %a1 - %t75 = icmp eq ptr %t74, null - br i1 %t75, label %panic2632, label %ok2633 -panic2632: - call void @finch_panic(ptr @.str.1501, i64 753, ptr @.str.1502) - unreachable -ok2633: - %t76 = getelementptr inbounds %S.gen.Gen, ptr %t74, i32 0, i32 9 - store i1 true, ptr %t76 - %t77 = load ptr, ptr %a1 - %t78 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t77, { ptr, i64, i64 } %t78) - call void @finch_str_drop(ptr %a34) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t5, { ptr, i64, i64 } { ptr @.str.1503, 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.1504, 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.1505, 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.1506, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t11, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = load { ptr, i64, i64 }, ptr %a30 - %t33 = load { ptr, i64, i64 }, ptr %a7 - %t34 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.condBr(ptr %t31, { ptr, i64, i64 } %t32, { ptr, i64, i64 } %t33, { ptr, i64, i64 } %t34) - %t35 = load ptr, ptr %a1 - %t36 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.gen.label(ptr %t35, { ptr, i64, i64 } %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic2634, label %ok2635 -panic2634: - call void @finch_panic(ptr @.str.1507, i64 763, ptr @.str.1508) - unreachable -ok2635: - %t40 = getelementptr inbounds %S.gen.Gen, ptr %t38, i32 0, i32 1 - %t41 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 13 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t40 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range2636, label %inrange2637 -range2636: - call void @finch_panic_index(ptr @.str.1509, i64 763, i64 %t42, i64 %t44) - unreachable -inrange2637: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i64 %t42 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t37, { ptr, i64, i64 } %t48) - store { ptr, i64, i64 } %t49, ptr %a50 - %t51 = load ptr, ptr %a1 - %t52 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.1510, i64 33, i64 0 }, ptr %a54 - store { ptr, i64, i64 } %t52, ptr %a55 - call void @finch_str_concat(ptr %a53, ptr %a54, ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.1511, i64 6, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = getelementptr inbounds %S.ast.Node, ptr %a4, i32 0, i32 11 - %t63 = load i64, ptr %t62 - call void @finch_str_from_int(ptr %a64, i64 %t63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t61, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t61, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t65, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1512, i64 6, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - %t77 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t76, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.1513, i64 6, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.1514, i64 1, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - call void @finch.gen.emit(ptr %t51, { ptr, i64, i64 } %t98) - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t100, { ptr, i64, i64 } { ptr @.str.1515, i64 11, i64 0 }) - %t101 = load ptr, ptr %a1 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic2638, label %ok2639 -panic2638: - call void @finch_panic(ptr @.str.1516, i64 766, ptr @.str.1517) - unreachable -ok2639: - %t103 = getelementptr inbounds %S.gen.Gen, ptr %t101, i32 0, i32 9 - store i1 true, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.label(ptr %t104, { ptr, i64, i64 } %t105) - call void @finch_str_drop(ptr %a50) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic2640, label %ok2641 -panic2640: - call void @finch_panic(ptr @.str.1518, i64 781, ptr @.str.1519) - unreachable -ok2641: - %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 %panic2642, label %ok2643 -panic2642: - call void @finch_panic(ptr @.str.1520, i64 781, ptr @.str.1521) - unreachable -ok2643: - %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 %panic2644, label %ok2645 -panic2644: - call void @finch_panic(ptr @.str.1522, i64 781, ptr @.str.1523) - unreachable -ok2645: - %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 %panic2646, label %ok2647 -panic2646: - call void @finch_panic(ptr @.str.1524, i64 781, ptr @.str.1525) - unreachable -ok2647: - %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 %panic2648, label %ok2649 -panic2648: - call void @finch_panic(ptr @.str.1526, i64 781, ptr @.str.1527) - unreachable -ok2649: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 36 - %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 %panic2650, label %ok2651 -panic2650: - call void @finch_panic(ptr @.str.1528, i64 782, ptr @.str.1529) - unreachable -ok2651: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 36 - 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 %panic2652, label %ok2653 -panic2652: - call void @finch_panic(ptr @.str.1530, i64 784, ptr @.str.1531) - unreachable -ok2653: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 4 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a37 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic2654, label %ok2655 -panic2654: - call void @finch_panic(ptr @.str.1532, i64 785, ptr @.str.1533) - unreachable -ok2655: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 5 - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch.copy.arr_str(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = load { ptr, i64, i64 }, ptr %t50 - store { ptr, i64, i64 } %t53, ptr %t50 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.drop.arr_str(ptr %a55) - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic2656, label %ok2657 -panic2656: - call void @finch_panic(ptr @.str.1534, i64 786, ptr @.str.1535) - unreachable -ok2657: - %t58 = getelementptr inbounds %S.gen.Gen, ptr %t56, i32 0, i32 6 - store i64 0, ptr %t58 - %t59 = load ptr, ptr %a1 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic2658, label %ok2659 -panic2658: - call void @finch_panic(ptr @.str.1536, i64 787, ptr @.str.1537) - unreachable -ok2659: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 9 - store i1 false, ptr %t61 - %t62 = load %S.gen.Saved, ptr %a33 - call void @finch.drop.arr_str(ptr %a37) - ret %S.gen.Saved %t62 -} - -define internal void @finch.gen.endHelper(ptr %p0, %S.gen.Saved %p1, { ptr, i64, i64 } %p2) { -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Saved %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic2660, label %ok2661 -panic2660: - call void @finch_panic(ptr @.str.1538, i64 792, ptr @.str.1539) - unreachable -ok2661: - %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.1540, 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 %panic2662, label %ok2663 -panic2662: - call void @finch_panic(ptr @.str.1541, i64 792, ptr @.str.1542) - unreachable -ok2663: - %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.1543, 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) - store { ptr, i64, i64 } %t12, ptr %a23 - call void @finch_str_drop(ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.1544, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic2664, label %ok2665 -panic2664: - call void @finch_panic(ptr @.str.1545, i64 792, ptr @.str.1546) - unreachable -ok2665: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 4 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1547, i64 1, i64 0 }, ptr %a35 - call void @finch_str_join(ptr %a36, ptr %t33, ptr %a35) - %t37 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t30, ptr %a39 - store { ptr, i64, i64 } %t37, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t30, ptr %a41 - call void @finch_str_drop(ptr %a41) - store { ptr, i64, i64 } %t37, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.1548, i64 3, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %t7 - %t50 = add i64 %t49, 1 - call void @finch_arr_reserve(ptr %t6, i64 %t50, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t51 = load ptr, ptr %t6 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t51, i64 %t49 - store { ptr, i64, i64 } %t48, ptr %t52 - store i64 %t50, ptr %t7 - %t53 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic2666, label %ok2667 -panic2666: - call void @finch_panic(ptr @.str.1549, i64 793, ptr @.str.1550) - unreachable -ok2667: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 4 - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch.copy.arr_str(ptr %a59, ptr %a58) - %t60 = load { ptr, i64, i64 }, ptr %a59 - %t61 = load { ptr, i64, i64 }, ptr %t57 - store { ptr, i64, i64 } %t60, ptr %t57 - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch.drop.arr_str(ptr %a62) - %t63 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 1 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic2668, label %ok2669 -panic2668: - call void @finch_panic(ptr @.str.1551, i64 794, ptr @.str.1552) - unreachable -ok2669: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 5 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch.copy.arr_str(ptr %a69, ptr %a68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - %t71 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t70, ptr %t67 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch.drop.arr_str(ptr %a72) - %t73 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 2 - %t74 = load i64, ptr %t73 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic2670, label %ok2671 -panic2670: - call void @finch_panic(ptr @.str.1553, i64 795, ptr @.str.1554) - unreachable -ok2671: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 6 - store i64 %t74, ptr %t77 - %t78 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 3 - %t79 = load i1, ptr %t78 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic2672, label %ok2673 -panic2672: - call void @finch_panic(ptr @.str.1555, i64 796, ptr @.str.1556) - unreachable -ok2673: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 9 - store i1 %t79, ptr %t82 - %t83 = getelementptr inbounds %S.gen.Saved, ptr %a2, i32 0, i32 4 - %t84 = load i64, ptr %t83 - %t85 = load ptr, ptr %a1 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic2674, label %ok2675 -panic2674: - call void @finch_panic(ptr @.str.1557, i64 797, ptr @.str.1558) - unreachable -ok2675: - %t87 = getelementptr inbounds %S.gen.Gen, ptr %t85, i32 0, i32 36 - store i64 %t84, ptr %t87 - 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - 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.1559, 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.1560, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1561, 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.1562, 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.1563, 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.1564, 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.1565, 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.1566, 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.1567, i64 2, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - %t42 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a44 - %t47 = load { ptr, i64, i64 }, ptr %a13 - %t48 = load { ptr, i64, i64 }, ptr %a16 - call void @finch.gen.condBr(ptr %t45, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t47, { ptr, i64, i64 } %t48) - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a13 - call void @finch.gen.label(ptr %t49, { ptr, i64, i64 } %t50) - %t51 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - %t55 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t59, ptr %a60 - call void @finch_str_copy(ptr %a61, ptr %a60) - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_copy(ptr %a65, ptr %a64) - %t66 = load { ptr, i64, i64 }, ptr %a65 - %t67 = mul i64 4, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t68 = call ptr @finch_alloc(i64 %t67) - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 0 - store { ptr, i64, i64 } %t54, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 1 - store { ptr, i64, i64 } %t58, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 2 - store { ptr, i64, i64 } %t62, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i64 3 - store { ptr, i64, i64 } %t66, ptr %t72 - %t73 = insertvalue { ptr, i64, i64 } undef, ptr %t68, 0 - %t74 = insertvalue { ptr, i64, i64 } %t73, i64 4, 1 - %t75 = insertvalue { ptr, i64, i64 } %t74, i64 4, 2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a16) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t75 -} - -define internal void @finch.gen.loopEnd(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range2676, label %inrange2677 -range2676: - call void @finch_panic_index(ptr @.str.1569, i64 817, i64 0, i64 %t5) - unreachable -inrange2677: - %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.1568, 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.1571, 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.1572, i64 3, i64 0 }, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a19 - %t24 = call { ptr, i64, i64 } @finch.gen.op(ptr %t13, { ptr, i64, i64 } %t23) - store { ptr, i64, i64 } %t23, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a2 - %t27 = extractvalue { ptr, i64, i64 } %t26, 1 - %t28 = icmp uge i64 0, %t27 - br i1 %t28, label %range2678, label %inrange2679 -range2678: - call void @finch_panic_index(ptr @.str.1573, i64 818, i64 0, i64 %t27) - unreachable -inrange2679: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 0 - %t31 = load { ptr, i64, i64 }, ptr %t30 - call void @finch.gen.store(ptr %t12, { ptr, i64, i64 } { ptr @.str.1570, i64 3, i64 0 }, { ptr, i64, i64 } %t24, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t24, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a2 - %t35 = extractvalue { ptr, i64, i64 } %t34, 1 - %t36 = icmp uge i64 1, %t35 - br i1 %t36, label %range2680, label %inrange2681 -range2680: - call void @finch_panic_index(ptr @.str.1574, i64 819, i64 1, i64 %t35) - unreachable -inrange2681: - %t37 = extractvalue { ptr, i64, i64 } %t34, 0 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i64 1 - %t39 = load { ptr, i64, i64 }, ptr %t38 - call void @finch.gen.br(ptr %t33, { ptr, i64, i64 } %t39) - %t40 = load ptr, ptr %a1 - %t41 = load { ptr, i64, i64 }, ptr %a2 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 2, %t42 - br i1 %t43, label %range2682, label %inrange2683 -range2682: - call void @finch_panic_index(ptr @.str.1575, i64 820, i64 2, i64 %t42) - unreachable -inrange2683: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 2 - %t46 = load { ptr, i64, i64 }, ptr %t45 - call void @finch.gen.label(ptr %t40, { ptr, i64, i64 } %t46) - call void @finch_str_drop(ptr %a11) - ret void -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1576, 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 %then2684, label %else2685 -then2684: - %t11 = load ptr, ptr %a1 - %t12 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1577, 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.1578, i64 6, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load { ptr, 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) - store { ptr, i64, i64 } %t21, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t27, ptr %a29 - store { ptr, i64, i64 } { ptr @.str.1579, i64 1, i64 0 }, ptr %a30 - call void @finch_str_concat(ptr %a28, ptr %a29, ptr %a30) - store { ptr, i64, i64 } %t27, ptr %a31 - call void @finch_str_drop(ptr %a31) - %t32 = load { ptr, i64, i64 }, ptr %a28 - call void @finch.gen.emit(ptr %t11, { ptr, i64, i64 } %t32) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif2686 -else2685: - %t34 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1580, i64 5, i64 0 }, ptr %a37 - %t38 = call i32 @finch_str_eq(ptr %a36, ptr %a37) - %t39 = icmp ne i32 %t38, 0 - br label %logic.from2687 -logic.from2687: - br i1 %t39, label %logic.end2689, label %logic.rhs2688 -logic.rhs2688: - %t40 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1581, 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.rend2690 -logic.rend2690: - br label %logic.end2689 -logic.end2689: - %t46 = phi i1 [ true, %logic.from2687 ], [ %t45, %logic.rend2690 ] - br label %logic.from2691 -logic.from2691: - br i1 %t46, label %logic.end2693, label %logic.rhs2692 -logic.rhs2692: - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 0 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.1582, i64 6, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from2694 -logic.from2694: - br i1 %t52, label %logic.rhs2695, label %logic.end2696 -logic.rhs2695: - %t53 = load ptr, ptr %a1 - %t54 = load %S.ast.Type, ptr %a4 - %t55 = call i1 @finch.gen.owning(ptr %t53, %S.ast.Type %t54) - br label %logic.rend2697 -logic.rend2697: - br label %logic.end2696 -logic.end2696: - %t56 = phi i1 [ false, %logic.from2694 ], [ %t55, %logic.rend2697 ] - br label %logic.rend2698 -logic.rend2698: - br label %logic.end2693 -logic.end2693: - %t57 = phi i1 [ true, %logic.from2691 ], [ %t56, %logic.rend2698 ] - br i1 %t57, label %then2699, label %else2700 -then2699: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = call { ptr, i64, i64 } @finch.gen.copyFn(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1583, i64 10, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1584, i64 5, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1585, i64 6, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t82, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.1586, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.emit(ptr %t58, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif2701 -else2700: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a4 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - %t99 = load ptr, ptr %a1 - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Type, ptr %a4 - %t102 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t100, %S.ast.Type %t101) - %t103 = load { ptr, i64, i64 }, ptr %a3 - %t104 = call { ptr, i64, i64 } @finch.gen.load(ptr %t99, { ptr, i64, i64 } %t102, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a2 - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t98, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t98, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2701 -endif2701: - br label %endif2686 -endif2686: - ret void -} - -define internal void @finch.drop.S_gen_Saved(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Saved, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - ret void -} - -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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.StructDef, align 16 - %a365 = alloca %S.gen.StructDef, align 16 - %a367 = alloca %S.gen.StructDef, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca i64, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1587, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2702, label %ok2703 -panic2702: - call void @finch_panic(ptr @.str.1588, i64 835, ptr @.str.1589) - unreachable -ok2703: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2704, label %endif2706 -then2704: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2706: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2707, label %ok2708 -panic2707: - call void @finch_panic(ptr @.str.1590, i64 838, ptr @.str.1591) - unreachable -ok2708: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1592, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2709, label %else2710 -then2709: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2712, label %inrange2713 -range2712: - call void @finch_panic_index(ptr @.str.1593, i64 841, i64 0, i64 %t41) - unreachable -inrange2713: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load ptr, ptr %a1 - %t52 = load %S.ast.Type, ptr %a49 - %t53 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t51, %S.ast.Type %t52) - store { ptr, i64, i64 } { ptr @.str.1594, i64 55, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.1595, i64 1, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.emit(ptr %t50, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Type, ptr %a49 - %t67 = call i1 @finch.gen.owning(ptr %t65, %S.ast.Type %t66) - br i1 %t67, label %then2714, label %endif2716 -then2714: - %t68 = load ptr, ptr %a1 - %t69 = call { ptr, i64, i64 } @finch.gen.load(ptr %t68, { ptr, i64, i64 } { ptr @.str.1596, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1597, i64 4, i64 0 }) - store { ptr, i64, i64 } %t69, ptr %a70 - %t71 = load ptr, ptr %a1 - %t72 = call { ptr, i64, i64 } @finch.gen.load(ptr %t71, { ptr, i64, i64 } { ptr @.str.1598, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1599, i64 4, i64 0 }) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t75, { ptr, i64, i64 } { ptr @.str.1601, i64 64, i64 0 }) - %t77 = call { ptr, i64, i64 } @finch.gen.load(ptr %t74, { ptr, i64, i64 } { ptr @.str.1600, i64 3, i64 0 }, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - store { ptr, i64, i64 } %t77, ptr %a79 - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a79 - %t82 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t80, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Type, ptr %a49 - %t87 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t85, %S.ast.Type %t86) - store { ptr, i64, i64 } { ptr @.str.1602, i64 23, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.1603, i64 6, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1604, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a83 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 3, %t110 - br i1 %t111, label %range2717, label %inrange2718 -range2717: - call void @finch_panic_index(ptr @.str.1605, i64 848, i64 3, i64 %t110) - unreachable -inrange2718: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i64 3 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t108, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t108, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t84, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Type, ptr %a49 - %t126 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t124, %S.ast.Type %t125) - store { ptr, i64, i64 } { ptr @.str.1606, i64 23, i64 0 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - store { ptr, i64, i64 } %t131, ptr %a133 - store { ptr, i64, i64 } { ptr @.str.1607, i64 6, i64 0 }, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - %t137 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t136, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t136, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t142, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.1608, i64 6, i64 0 }, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - store { ptr, i64, i64 } %t142, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a143 - %t148 = load { ptr, i64, i64 }, ptr %a83 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 3, %t149 - br i1 %t150, label %range2719, label %inrange2720 -range2719: - call void @finch_panic_index(ptr @.str.1609, i64 849, i64 3, i64 %t149) - unreachable -inrange2720: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 3 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t147, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t147, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = call { ptr, i64, i64 } @finch.gen.op(ptr %t123, { ptr, i64, i64 } %t158) - store { ptr, i64, i64 } %t158, ptr %a160 - call void @finch_str_drop(ptr %a160) - store { ptr, i64, i64 } %t159, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a122 - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load %S.ast.Type, ptr %a49 - call void @finch.gen.copyAt(ptr %t162, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t164, %S.ast.Type %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.loopEnd(ptr %t166, { ptr, i64, i64 } %t167) - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a122) - call void @finch.drop.arr_str(ptr %a83) - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a73) - call void @finch_str_drop(ptr %a70) - br label %endif2716 -endif2716: - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2711 -else2710: - %t168 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.1610, i64 3, i64 0 }, ptr %a171 - %t172 = call i32 @finch_str_eq(ptr %a170, ptr %a171) - %t173 = icmp ne i32 %t172, 0 - br i1 %t173, label %then2721, label %else2722 -then2721: - %t174 = load ptr, ptr %a1 - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Type, ptr %a2 - %t177 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t175, %S.ast.Type %t176) - store { ptr, i64, i64 } { ptr @.str.1611, i64 55, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - store { ptr, i64, i64 } %t177, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1612, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t174, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t191 = load { ptr, i64, i64 }, ptr %t190 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 0, %t192 - br i1 %t193, label %range2724, label %inrange2725 -range2724: - call void @finch_panic_index(ptr @.str.1613, i64 855, i64 0, i64 %t192) - unreachable -inrange2725: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Type, ptr %t194, i64 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = call i1 @finch.gen.owning(ptr %t189, %S.ast.Type %t196) - br label %logic.from2726 -logic.from2726: - br i1 %t197, label %logic.end2728, label %logic.rhs2727 -logic.rhs2727: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t200 = load { ptr, i64, i64 }, ptr %t199 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 1, %t201 - br i1 %t202, label %range2729, label %inrange2730 -range2729: - call void @finch_panic_index(ptr @.str.1614, i64 855, i64 1, i64 %t201) - unreachable -inrange2730: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.ast.Type, ptr %t203, i64 1 - %t205 = load %S.ast.Type, ptr %t204 - %t206 = call i1 @finch.gen.owning(ptr %t198, %S.ast.Type %t205) - br label %logic.rend2731 -logic.rend2731: - br label %logic.end2728 -logic.end2728: - %t207 = phi i1 [ true, %logic.from2726 ], [ %t206, %logic.rend2731 ] - br i1 %t207, label %then2732, label %endif2734 -then2732: - %t208 = load ptr, ptr %a1 - %t209 = load ptr, ptr %a1 - %t210 = load ptr, ptr %a1 - %t211 = load %S.ast.Type, ptr %a2 - %t212 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t210, %S.ast.Type %t211) - store { ptr, i64, i64 } { ptr @.str.1616, i64 23, i64 0 }, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.1617, i64 24, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = call { ptr, i64, i64 } @finch.gen.op(ptr %t209, { ptr, i64, i64 } %t222) - store { ptr, i64, i64 } %t222, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = call { ptr, i64, i64 } @finch.gen.load(ptr %t208, { ptr, i64, i64 } { ptr @.str.1615, i64 3, i64 0 }, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t225, ptr %a227 - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a227 - %t230 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t228, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a2 - %t234 = load { ptr, i64, i64 }, ptr %a231 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 3, %t235 - br i1 %t236, label %range2735, label %inrange2736 -range2735: - call void @finch_panic_index(ptr @.str.1619, i64 859, i64 3, i64 %t235) - unreachable -inrange2736: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 3 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } { ptr @.str.1618, i64 4, i64 0 }, %S.ast.Type %t233, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t240, ptr %a241 - %t242 = load ptr, ptr %a1 - %t243 = load %S.ast.Type, ptr %a2 - %t244 = load { ptr, i64, i64 }, ptr %a231 - %t245 = extractvalue { ptr, i64, i64 } %t244, 1 - %t246 = icmp uge i64 3, %t245 - br i1 %t246, label %range2737, label %inrange2738 -range2737: - call void @finch_panic_index(ptr @.str.1621, i64 860, i64 3, i64 %t245) - unreachable -inrange2738: - %t247 = extractvalue { ptr, i64, i64 } %t244, 0 - %t248 = getelementptr inbounds { ptr, i64, i64 }, ptr %t247, i64 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - %t250 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t242, { ptr, i64, i64 } { ptr @.str.1620, i64 4, i64 0 }, %S.ast.Type %t243, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t252, { ptr, i64, i64 } { ptr @.str.1622, i64 10, i64 0 }) - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t255, { ptr, i64, i64 } { ptr @.str.1623, i64 10, i64 0 }) - store { ptr, i64, i64 } %t256, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a1 - %t260 = load ptr, ptr %a1 - %t261 = load ptr, ptr %a1 - %t262 = load ptr, ptr %a1 - %t263 = load %S.ast.Type, ptr %a2 - %t264 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t262, %S.ast.Type %t263) - store { ptr, i64, i64 } { ptr @.str.1626, i64 23, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_drop(ptr %a268) - %t269 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t269, ptr %a271 - store { ptr, i64, i64 } { ptr @.str.1627, i64 6, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = load { ptr, i64, i64 }, ptr %a241 - store { ptr, i64, i64 } %t274, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - store { ptr, i64, i64 } %t274, ptr %a279 - call void @finch_str_drop(ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.1628, i64 14, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = call { ptr, i64, i64 } @finch.gen.op(ptr %t261, { ptr, i64, i64 } %t285) - store { ptr, i64, i64 } %t285, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = call { ptr, i64, i64 } @finch.gen.load(ptr %t260, { ptr, i64, i64 } { ptr @.str.1625, i64 3, i64 0 }, { ptr, i64, i64 } %t286) - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_drop(ptr %a289) - store { ptr, i64, i64 } { ptr @.str.1624, i64 12, i64 0 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1629, i64 3, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t259, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a254 - %t303 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.condBr(ptr %t258, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t302, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a254 - call void @finch.gen.label(ptr %t305, { ptr, i64, i64 } %t306) - %t307 = load ptr, ptr %a1 - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a251 - %t310 = load %S.ast.Type, ptr %a2 - %t311 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t308, { ptr, i64, i64 } %t309, %S.ast.Type %t310, i64 1) - %t312 = load ptr, ptr %a1 - %t313 = load { ptr, i64, i64 }, ptr %a241 - %t314 = load %S.ast.Type, ptr %a2 - %t315 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t312, { ptr, i64, i64 } %t313, %S.ast.Type %t314, i64 1) - %t316 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t317 = load { ptr, i64, i64 }, ptr %t316 - %t318 = extractvalue { ptr, i64, i64 } %t317, 1 - %t319 = icmp uge i64 0, %t318 - br i1 %t319, label %range2739, label %inrange2740 -range2739: - call void @finch_panic_index(ptr @.str.1630, i64 865, i64 0, i64 %t318) - unreachable -inrange2740: - %t320 = extractvalue { ptr, i64, i64 } %t317, 0 - %t321 = getelementptr inbounds %S.ast.Type, ptr %t320, i64 0 - %t322 = load %S.ast.Type, ptr %t321 - call void @finch.gen.copyAt(ptr %t307, { ptr, i64, i64 } %t311, { ptr, i64, i64 } %t315, %S.ast.Type %t322) - store { ptr, i64, i64 } %t311, ptr %a323 - call void @finch_str_drop(ptr %a323) - store { ptr, i64, i64 } %t315, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load ptr, ptr %a1 - %t326 = load ptr, ptr %a1 - %t327 = load { ptr, i64, i64 }, ptr %a251 - %t328 = load %S.ast.Type, ptr %a2 - %t329 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t326, { ptr, i64, i64 } %t327, %S.ast.Type %t328, i64 2) - %t330 = load ptr, ptr %a1 - %t331 = load { ptr, i64, i64 }, ptr %a241 - %t332 = load %S.ast.Type, ptr %a2 - %t333 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t330, { ptr, i64, i64 } %t331, %S.ast.Type %t332, i64 2) - %t334 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t335 = load { ptr, i64, i64 }, ptr %t334 - %t336 = extractvalue { ptr, i64, i64 } %t335, 1 - %t337 = icmp uge i64 1, %t336 - br i1 %t337, label %range2741, label %inrange2742 -range2741: - call void @finch_panic_index(ptr @.str.1631, i64 866, i64 1, i64 %t336) - unreachable -inrange2742: - %t338 = extractvalue { ptr, i64, i64 } %t335, 0 - %t339 = getelementptr inbounds %S.ast.Type, ptr %t338, i64 1 - %t340 = load %S.ast.Type, ptr %t339 - call void @finch.gen.copyAt(ptr %t325, { ptr, i64, i64 } %t329, { ptr, i64, i64 } %t333, %S.ast.Type %t340) - store { ptr, i64, i64 } %t329, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t333, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - %t344 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.br(ptr %t343, { ptr, i64, i64 } %t344) - %t345 = load ptr, ptr %a1 - %t346 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.label(ptr %t345, { ptr, i64, i64 } %t346) - %t347 = load ptr, ptr %a1 - %t348 = load { ptr, i64, i64 }, ptr %a231 - call void @finch.gen.loopEnd(ptr %t347, { ptr, i64, i64 } %t348) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a254) - call void @finch_str_drop(ptr %a251) - call void @finch_str_drop(ptr %a241) - call void @finch.drop.arr_str(ptr %a231) - call void @finch_str_drop(ptr %a227) - br label %endif2734 -endif2734: - br label %endif2723 -else2722: - %t349 = load ptr, ptr %a1 - %t350 = icmp eq ptr %t349, null - br i1 %t350, label %panic2743, label %ok2744 -panic2743: - call void @finch_panic(ptr @.str.1632, i64 872, ptr @.str.1633) - unreachable -ok2744: - %t351 = getelementptr inbounds %S.gen.Gen, ptr %t349, i32 0, i32 16 - %t352 = load ptr, ptr %a1 - %t353 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t354 = load { ptr, i64, i64 }, ptr %t353 - %t355 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t356 = load { ptr, i64, i64 }, ptr %t355 - %t357 = call i64 @finch.gen.findStruct(ptr %t352, { ptr, i64, i64 } %t354, { ptr, i64, i64 } %t356) - %t358 = load { ptr, i64, i64 }, ptr %t351 - %t359 = extractvalue { ptr, i64, i64 } %t358, 1 - %t360 = icmp uge i64 %t357, %t359 - br i1 %t360, label %range2745, label %inrange2746 -range2745: - call void @finch_panic_index(ptr @.str.1634, i64 872, i64 %t357, i64 %t359) - unreachable -inrange2746: - %t361 = extractvalue { ptr, i64, i64 } %t358, 0 - %t362 = getelementptr inbounds %S.gen.StructDef, ptr %t361, i64 %t357 - %t363 = load %S.gen.StructDef, ptr %t362 - store %S.gen.StructDef %t363, ptr %a364 - call void @finch.copy.S_gen_StructDef(ptr %a365, ptr %a364) - %t366 = load %S.gen.StructDef, ptr %a365 - store %S.gen.StructDef %t366, ptr %a367 - %t368 = load ptr, ptr %a1 - %t369 = load %S.ast.Type, ptr %a2 - %t370 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t368, %S.ast.Type %t369) - store { ptr, i64, i64 } %t370, ptr %a371 - %t372 = load ptr, ptr %a1 - %t373 = load { ptr, i64, i64 }, ptr %a371 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a371 - %t376 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } { ptr @.str.1635, i64 4, i64 0 }) - call void @finch.gen.store(ptr %t372, { ptr, i64, i64 } %t373, { ptr, i64, i64 } %t376, { ptr, i64, i64 } { ptr @.str.1636, i64 4, i64 0 }) - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t379 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t380 = load i64, ptr %t379 - store i64 0, ptr %a381 - br label %for.cond2747 -for.cond2747: - %t382 = load i64, ptr %a381 - %t383 = icmp slt i64 %t382, %t380 - br i1 %t383, label %for.body2748, label %for.end2750 -for.body2748: - %t384 = load ptr, ptr %a1 - %t385 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t386 = load i64, ptr %a381 - %t387 = load { ptr, i64, i64 }, ptr %t385 - %t388 = extractvalue { ptr, i64, i64 } %t387, 1 - %t389 = icmp uge i64 %t386, %t388 - br i1 %t389, label %range2751, label %inrange2752 -range2751: - call void @finch_panic_index(ptr @.str.1637, i64 876, i64 %t386, i64 %t388) - unreachable -inrange2752: - %t390 = extractvalue { ptr, i64, i64 } %t387, 0 - %t391 = getelementptr inbounds %S.ast.Type, ptr %t390, i64 %t386 - %t392 = load %S.ast.Type, ptr %t391 - %t393 = call i1 @finch.gen.owning(ptr %t384, %S.ast.Type %t392) - br i1 %t393, label %then2753, label %endif2755 -then2753: - %t394 = load ptr, ptr %a1 - %t395 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1638, i64 23, i64 0 }, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.1639, i64 23, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t406 = load i64, ptr %a381 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range2756, label %inrange2757 -range2756: - call void @finch_panic_index(ptr @.str.1640, i64 877, i64 %t406, i64 %t408) - unreachable -inrange2757: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds i64, ptr %t410, i64 %t406 - %t412 = load i64, ptr %t411 - call void @finch_str_from_int(ptr %a413, i64 %t412) - %t414 = load { ptr, i64, i64 }, ptr %a413 - store { ptr, i64, i64 } %t404, ptr %a416 - store { ptr, i64, i64 } %t414, ptr %a417 - call void @finch_str_concat(ptr %a415, ptr %a416, ptr %a417) - store { ptr, i64, i64 } %t404, ptr %a418 - call void @finch_str_drop(ptr %a418) - store { ptr, i64, i64 } %t414, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a415 - %t421 = call { ptr, i64, i64 } @finch.gen.op(ptr %t394, { ptr, i64, i64 } %t420) - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - store { ptr, i64, i64 } %t421, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1641, i64 23, i64 0 }, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.1642, i64 23, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 3 - %t436 = load i64, ptr %a381 - %t437 = load { ptr, i64, i64 }, ptr %t435 - %t438 = extractvalue { ptr, i64, i64 } %t437, 1 - %t439 = icmp uge i64 %t436, %t438 - br i1 %t439, label %range2758, label %inrange2759 -range2758: - call void @finch_panic_index(ptr @.str.1643, i64 878, i64 %t436, i64 %t438) - unreachable -inrange2759: - %t440 = extractvalue { ptr, i64, i64 } %t437, 0 - %t441 = getelementptr inbounds i64, ptr %t440, i64 %t436 - %t442 = load i64, ptr %t441 - call void @finch_str_from_int(ptr %a443, i64 %t442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a446 - store { ptr, i64, i64 } %t444, ptr %a447 - call void @finch_str_concat(ptr %a445, ptr %a446, ptr %a447) - store { ptr, i64, i64 } %t434, ptr %a448 - call void @finch_str_drop(ptr %a448) - store { ptr, i64, i64 } %t444, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = load { ptr, i64, i64 }, ptr %a445 - %t451 = call { ptr, i64, i64 } @finch.gen.op(ptr %t424, { ptr, i64, i64 } %t450) - store { ptr, i64, i64 } %t450, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t451, ptr %a453 - %t454 = load ptr, ptr %a1 - %t455 = load { ptr, i64, i64 }, ptr %a423 - %t456 = load { ptr, i64, i64 }, ptr %a453 - %t457 = getelementptr inbounds %S.gen.StructDef, ptr %a367, i32 0, i32 12 - %t458 = load i64, ptr %a381 - %t459 = load { ptr, i64, i64 }, ptr %t457 - %t460 = extractvalue { ptr, i64, i64 } %t459, 1 - %t461 = icmp uge i64 %t458, %t460 - br i1 %t461, label %range2760, label %inrange2761 -range2760: - call void @finch_panic_index(ptr @.str.1644, i64 879, i64 %t458, i64 %t460) - unreachable -inrange2761: - %t462 = extractvalue { ptr, i64, i64 } %t459, 0 - %t463 = getelementptr inbounds %S.ast.Type, ptr %t462, i64 %t458 - %t464 = load %S.ast.Type, ptr %t463 - call void @finch.gen.copyAt(ptr %t454, { ptr, i64, i64 } %t455, { ptr, i64, i64 } %t456, %S.ast.Type %t464) - call void @finch_str_drop(ptr %a453) - call void @finch_str_drop(ptr %a423) - br label %endif2755 -endif2755: - br label %for.step2749 -for.step2749: - %t465 = load i64, ptr %a381 - %t466 = add i64 %t465, 1 - store i64 %t466, ptr %a381 - br label %for.cond2747 -for.end2750: - call void @finch_str_drop(ptr %a371) - call void @finch.drop.S_gen_StructDef(ptr %a367) - br label %endif2723 -endif2723: - br label %endif2711 -endif2711: - %t467 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t467, { ptr, i64, i64 } { ptr @.str.1645, i64 8, i64 0 }) - %t468 = load ptr, ptr %a1 - %t469 = load %S.gen.Saved, ptr %a32 - %t470 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1646, i64 21, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.1647, i64 20, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - call void @finch.gen.endHelper(ptr %t468, %S.gen.Saved %t469, { ptr, i64, i64 } %t479) - store { ptr, i64, i64 } %t479, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t481 -} - -define internal void @finch.drop.S_gen_Val(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Val, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.copyValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -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 %S.gen.Val, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %then2762, label %endif2764 -then2762: - %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 -endif2764: - %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 %S.gen.Val %t22, ptr %a24 - call void @finch.drop.S_gen_Val(ptr %a24) - store { ptr, i64, i64 } %t23, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t27, %S.ast.Type %t28) - %t30 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t26, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t30, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load { ptr, i64, i64 }, ptr %a32 - %t35 = load { ptr, i64, i64 }, ptr %a25 - %t36 = load %S.ast.Type, ptr %a3 - call void @finch.gen.copyAt(ptr %t33, { ptr, i64, i64 } %t34, { ptr, i64, i64 } %t35, %S.ast.Type %t36) - %t37 = load ptr, ptr %a1 - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Type, ptr %a3 - %t40 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t38, %S.ast.Type %t39) - %t41 = load { ptr, i64, i64 }, ptr %a32 - %t42 = call { ptr, i64, i64 } @finch.gen.load(ptr %t37, { ptr, i64, i64 } %t40, { ptr, i64, i64 } %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_drop(ptr %a43) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a25) - ret { ptr, i64, i64 } %t42 -} - -define internal void @finch.gen.dropAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - %t7 = xor i1 %t6, true - br i1 %t7, label %then2765, label %endif2767 -then2765: - ret void -endif2767: - %t8 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t9 = load { ptr, i64, i64 }, ptr %t8 - store { ptr, i64, i64 } %t9, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1648, 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 %then2768, label %else2769 -then2768: - %t14 = load ptr, ptr %a1 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1649, i64 30, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.1650, i64 1, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.emit(ptr %t14, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2770 -else2769: - %t26 = load ptr, ptr %a1 - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Type, ptr %a3 - %t29 = call { ptr, i64, i64 } @finch.gen.dropFn(ptr %t27, %S.ast.Type %t28) - store { ptr, i64, i64 } { ptr @.str.1651, i64 10, i64 0 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } %t34, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.1652, i64 5, i64 0 }, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t39, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.1653, i64 1, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.emit(ptr %t26, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif2770 -endif2770: - ret void -} - -define internal void @finch.gen.dropValue(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a16 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.gen.Val, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2771, label %endif2773 -then2771: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t9, ptr %a10 - call void @finch_str_copy(ptr %a11, ptr %a10) - %t12 = load { ptr, i64, i64 }, ptr %a11 - %t13 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t12, 0 - %t14 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t14, ptr %a15 - call void @finch.copy.S_ast_Type(ptr %a16, ptr %a15) - %t17 = load %S.ast.Type, ptr %a16 - %t18 = insertvalue %S.gen.Val %t13, %S.ast.Type %t17, 1 - %t19 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t8, %S.gen.Val %t18) - store %S.gen.Val %t18, ptr %a20 - call void @finch.drop.S_gen_Val(ptr %a20) - %t21 = load %S.ast.Type, ptr %a3 - call void @finch.gen.dropAt(ptr %t7, { ptr, i64, i64 } %t19, %S.ast.Type %t21) - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_drop(ptr %a22) - br label %endif2773 -endif2773: - ret void -} - -define internal void @finch.gen.release(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2774 -logic.from2774: - br i1 %t4, label %logic.rhs2775, label %logic.end2776 -logic.rhs2775: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2777 -logic.rend2777: - br label %logic.end2776 -logic.end2776: - %t9 = phi i1 [ false, %logic.from2774 ], [ %t8, %logic.rend2777 ] - br label %logic.from2778 -logic.from2778: - br i1 %t9, label %logic.rhs2779, label %logic.end2780 -logic.rhs2779: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2781 -logic.rend2781: - br label %logic.end2780 -logic.end2780: - %t14 = phi i1 [ false, %logic.from2778 ], [ %t13, %logic.rend2781 ] - br label %logic.from2782 -logic.from2782: - br i1 %t14, label %logic.rhs2783, label %logic.end2784 -logic.rhs2783: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2785 -logic.rend2785: - br label %logic.end2784 -logic.end2784: - %t19 = phi i1 [ false, %logic.from2782 ], [ %t18, %logic.rend2785 ] - br i1 %t19, label %then2786, label %endif2788 -then2786: - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t24 = load %S.ast.Type, ptr %t23 - call void @finch.gen.dropValue(ptr %t20, { ptr, i64, i64 } %t22, %S.ast.Type %t24) - br label %endif2788 -endif2788: - ret void -} - -define internal i1 @finch.gen.isConstant({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1655, i64 1, i64 0 }, ptr %a5 - %t6 = call i32 @finch_str_starts(ptr %a3, ptr %a5) - %t7 = icmp ne i32 %t6, 0 - %t8 = xor i1 %t7, true - ret i1 %t8 -} - -define internal { ptr, i64, i64 } @finch.gen.dropFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a138 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.gen.StructDef, align 16 - %a249 = alloca %S.gen.StructDef, align 16 - %a251 = alloca %S.gen.StructDef, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca i64, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.1656, i64 12, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2789, label %ok2790 -panic2789: - call void @finch_panic(ptr @.str.1657, i64 930, ptr @.str.1658) - unreachable -ok2790: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2791, label %endif2793 -then2791: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2793: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2794, label %ok2795 -panic2794: - call void @finch_panic(ptr @.str.1659, i64 933, ptr @.str.1660) - unreachable -ok2795: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1661, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2796, label %else2797 -then2796: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2799, label %inrange2800 -range2799: - call void @finch_panic_index(ptr @.str.1662, i64 936, i64 0, i64 %t41) - unreachable -inrange2800: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = load %S.ast.Type, ptr %a49 - %t52 = call i1 @finch.gen.owning(ptr %t50, %S.ast.Type %t51) - br i1 %t52, label %then2801, label %endif2803 -then2801: - %t53 = load ptr, ptr %a1 - %t54 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1663, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1664, i64 2, i64 0 }) - store { ptr, i64, i64 } %t54, ptr %a55 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } { ptr @.str.1666, i64 62, i64 0 }) - %t59 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.1665, i64 3, i64 0 }, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t62, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load ptr, ptr %a1 - %t68 = load %S.ast.Type, ptr %a49 - %t69 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t67, %S.ast.Type %t68) - store { ptr, i64, i64 } { ptr @.str.1667, i64 23, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.1668, i64 6, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1669, i64 6, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load { ptr, i64, i64 }, ptr %a65 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 3, %t92 - br i1 %t93, label %range2804, label %inrange2805 -range2804: - call void @finch_panic_index(ptr @.str.1670, i64 941, i64 3, i64 %t92) - unreachable -inrange2805: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t66, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t102, ptr %a104 - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a104 - %t107 = load %S.ast.Type, ptr %a49 - call void @finch.gen.dropAt(ptr %t105, { ptr, i64, i64 } %t106, %S.ast.Type %t107) - %t108 = load ptr, ptr %a1 - %t109 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.loopEnd(ptr %t108, { ptr, i64, i64 } %t109) - call void @finch_str_drop(ptr %a104) - call void @finch.drop.arr_str(ptr %a65) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a55) - br label %endif2803 -endif2803: - %t110 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t110, { ptr, i64, i64 } { ptr @.str.1671, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2798 -else2797: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.1672, i64 3, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br i1 %t116, label %then2806, label %else2807 -then2806: - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 0, %t119 - br i1 %t120, label %range2809, label %inrange2810 -range2809: - call void @finch_panic_index(ptr @.str.1673, i64 947, i64 0, i64 %t119) - unreachable -inrange2810: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 0 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - store %S.ast.Type %t126, ptr %a127 - %t128 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = extractvalue { ptr, i64, i64 } %t129, 1 - %t131 = icmp uge i64 1, %t130 - br i1 %t131, label %range2811, label %inrange2812 -range2811: - call void @finch_panic_index(ptr @.str.1674, i64 948, i64 1, i64 %t130) - unreachable -inrange2812: - %t132 = extractvalue { ptr, i64, i64 } %t129, 0 - %t133 = getelementptr inbounds %S.ast.Type, ptr %t132, i64 1 - %t134 = load %S.ast.Type, ptr %t133 - store %S.ast.Type %t134, ptr %a135 - call void @finch.copy.S_ast_Type(ptr %a136, ptr %a135) - %t137 = load %S.ast.Type, ptr %a136 - store %S.ast.Type %t137, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Type, ptr %a127 - %t141 = call i1 @finch.gen.owning(ptr %t139, %S.ast.Type %t140) - br label %logic.from2813 -logic.from2813: - br i1 %t141, label %logic.end2815, label %logic.rhs2814 -logic.rhs2814: - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Type, ptr %a138 - %t144 = call i1 @finch.gen.owning(ptr %t142, %S.ast.Type %t143) - br label %logic.rend2816 -logic.rend2816: - br label %logic.end2815 -logic.end2815: - %t145 = phi i1 [ true, %logic.from2813 ], [ %t144, %logic.rend2816 ] - br i1 %t145, label %then2817, label %endif2819 -then2817: - %t146 = load ptr, ptr %a1 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load %S.ast.Type, ptr %a2 - %t150 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t148, %S.ast.Type %t149) - store { ptr, i64, i64 } { ptr @.str.1676, i64 23, i64 0 }, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t155, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1677, i64 22, i64 0 }, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t155, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a156 - %t161 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t160) - store { ptr, i64, i64 } %t160, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = call { ptr, i64, i64 } @finch.gen.load(ptr %t146, { ptr, i64, i64 } { ptr @.str.1675, i64 3, i64 0 }, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a164 - call void @finch_str_drop(ptr %a164) - store { ptr, i64, i64 } %t163, ptr %a165 - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a165 - %t168 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t166, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load %S.ast.Type, ptr %a2 - %t172 = load { ptr, i64, i64 }, ptr %a169 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 3, %t173 - br i1 %t174, label %range2820, label %inrange2821 -range2820: - call void @finch_panic_index(ptr @.str.1679, i64 952, i64 3, i64 %t173) - unreachable -inrange2821: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i64 3 - %t177 = load { ptr, i64, i64 }, ptr %t176 - %t178 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t170, { ptr, i64, i64 } { ptr @.str.1678, i64 2, i64 0 }, %S.ast.Type %t171, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1680, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1681, i64 10, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - %t186 = load ptr, ptr %a1 - %t187 = load ptr, ptr %a1 - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = load { ptr, i64, i64 }, ptr %a179 - %t191 = load %S.ast.Type, ptr %a2 - %t192 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t189, { ptr, i64, i64 } %t190, %S.ast.Type %t191, i64 0) - %t193 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } { ptr @.str.1683, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - store { ptr, i64, i64 } { ptr @.str.1682, i64 12, i64 0 }, ptr %a196 - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1684, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t204) - store { ptr, i64, i64 } %t204, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a182 - %t208 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.condBr(ptr %t186, { ptr, i64, i64 } %t205, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t210, { ptr, i64, i64 } %t211) - %t212 = load ptr, ptr %a1 - %t213 = load ptr, ptr %a1 - %t214 = load { ptr, i64, i64 }, ptr %a179 - %t215 = load %S.ast.Type, ptr %a2 - %t216 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t213, { ptr, i64, i64 } %t214, %S.ast.Type %t215, i64 1) - %t217 = load %S.ast.Type, ptr %a127 - call void @finch.gen.dropAt(ptr %t212, { ptr, i64, i64 } %t216, %S.ast.Type %t217) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load ptr, ptr %a1 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a179 - %t222 = load %S.ast.Type, ptr %a2 - %t223 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t220, { ptr, i64, i64 } %t221, %S.ast.Type %t222, i64 2) - %t224 = load %S.ast.Type, ptr %a138 - call void @finch.gen.dropAt(ptr %t219, { ptr, i64, i64 } %t223, %S.ast.Type %t224) - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t226, { ptr, i64, i64 } %t227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t228, { ptr, i64, i64 } %t229) - %t230 = load ptr, ptr %a1 - %t231 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.loopEnd(ptr %t230, { ptr, i64, i64 } %t231) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.arr_str(ptr %a169) - call void @finch_str_drop(ptr %a165) - br label %endif2819 -endif2819: - %t232 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t232, { ptr, i64, i64 } { ptr @.str.1685, i64 33, i64 0 }) - call void @finch.drop.S_ast_Type(ptr %a138) - call void @finch.drop.S_ast_Type(ptr %a127) - br label %endif2808 -else2807: - %t233 = load ptr, ptr %a1 - %t234 = icmp eq ptr %t233, null - br i1 %t234, label %panic2822, label %ok2823 -panic2822: - call void @finch_panic(ptr @.str.1686, i64 965, ptr @.str.1687) - unreachable -ok2823: - %t235 = getelementptr inbounds %S.gen.Gen, ptr %t233, i32 0, i32 16 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %t235 - %t243 = extractvalue { ptr, i64, i64 } %t242, 1 - %t244 = icmp uge i64 %t241, %t243 - br i1 %t244, label %range2824, label %inrange2825 -range2824: - call void @finch_panic_index(ptr @.str.1688, i64 965, i64 %t241, i64 %t243) - unreachable -inrange2825: - %t245 = extractvalue { ptr, i64, i64 } %t242, 0 - %t246 = getelementptr inbounds %S.gen.StructDef, ptr %t245, i64 %t241 - %t247 = load %S.gen.StructDef, ptr %t246 - store %S.gen.StructDef %t247, ptr %a248 - call void @finch.copy.S_gen_StructDef(ptr %a249, ptr %a248) - %t250 = load %S.gen.StructDef, ptr %a249 - store %S.gen.StructDef %t250, ptr %a251 - %t252 = load ptr, ptr %a1 - %t253 = load %S.ast.Type, ptr %a2 - %t254 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t252, %S.ast.Type %t253) - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t257 = getelementptr inbounds { ptr, i64, i64 }, ptr %t256, i32 0, i32 1 - %t258 = load i64, ptr %t257 - store i64 0, ptr %a259 - br label %for.cond2826 -for.cond2826: - %t260 = load i64, ptr %a259 - %t261 = icmp slt i64 %t260, %t258 - br i1 %t261, label %for.body2827, label %for.end2829 -for.body2827: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t264 = load i64, ptr %a259 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range2830, label %inrange2831 -range2830: - call void @finch_panic_index(ptr @.str.1689, i64 968, i64 %t264, i64 %t266) - unreachable -inrange2831: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.ast.Type, ptr %t268, i64 %t264 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t262, %S.ast.Type %t270) - br i1 %t271, label %then2832, label %endif2834 -then2832: - %t272 = load ptr, ptr %a1 - %t273 = load ptr, ptr %a1 - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } { ptr @.str.1690, i64 23, i64 0 }, ptr %a276 - store { ptr, i64, i64 } %t274, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.1691, i64 21, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 3 - %t285 = load i64, ptr %a259 - %t286 = load { ptr, i64, i64 }, ptr %t284 - %t287 = extractvalue { ptr, i64, i64 } %t286, 1 - %t288 = icmp uge i64 %t285, %t287 - br i1 %t288, label %range2835, label %inrange2836 -range2835: - call void @finch_panic_index(ptr @.str.1692, i64 969, i64 %t285, i64 %t287) - unreachable -inrange2836: - %t289 = extractvalue { ptr, i64, i64 } %t286, 0 - %t290 = getelementptr inbounds i64, ptr %t289, i64 %t285 - %t291 = load i64, ptr %t290 - call void @finch_str_from_int(ptr %a292, i64 %t291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t283, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - store { ptr, i64, i64 } %t283, ptr %a297 - call void @finch_str_drop(ptr %a297) - store { ptr, i64, i64 } %t293, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a294 - %t300 = call { ptr, i64, i64 } @finch.gen.op(ptr %t273, { ptr, i64, i64 } %t299) - store { ptr, i64, i64 } %t299, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = getelementptr inbounds %S.gen.StructDef, ptr %a251, i32 0, i32 12 - %t303 = load i64, ptr %a259 - %t304 = load { ptr, i64, i64 }, ptr %t302 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range2837, label %inrange2838 -range2837: - call void @finch_panic_index(ptr @.str.1693, i64 969, i64 %t303, i64 %t305) - unreachable -inrange2838: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Type, ptr %t307, i64 %t303 - %t309 = load %S.ast.Type, ptr %t308 - call void @finch.gen.dropAt(ptr %t272, { ptr, i64, i64 } %t300, %S.ast.Type %t309) - store { ptr, i64, i64 } %t300, ptr %a310 - call void @finch_str_drop(ptr %a310) - br label %endif2834 -endif2834: - br label %for.step2828 -for.step2828: - %t311 = load i64, ptr %a259 - %t312 = add i64 %t311, 1 - store i64 %t312, ptr %a259 - br label %for.cond2826 -for.end2829: - call void @finch_str_drop(ptr %a255) - call void @finch.drop.S_gen_StructDef(ptr %a251) - br label %endif2808 -endif2808: - br label %endif2798 -endif2798: - %t313 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t313, { ptr, i64, i64 } { ptr @.str.1694, i64 8, i64 0 }) - %t314 = load ptr, ptr %a1 - %t315 = load %S.gen.Saved, ptr %a32 - %t316 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1695, i64 21, i64 0 }, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.1696, i64 8, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - call void @finch.gen.endHelper(ptr %t314, %S.gen.Saved %t315, { ptr, i64, i64 } %t325) - store { ptr, i64, i64 } %t325, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t327 -} - -define internal void @finch.gen.hold(ptr %p0, %S.gen.Val %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.gen.Val, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.ast.Type, align 16 - %a33 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - %t3 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t4 = load i1, ptr %t3 - br label %logic.from2839 -logic.from2839: - br i1 %t4, label %logic.rhs2840, label %logic.end2841 -logic.rhs2840: - %t5 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = icmp sgt i64 %t7, 0 - br label %logic.rend2842 -logic.rend2842: - br label %logic.end2841 -logic.end2841: - %t9 = phi i1 [ false, %logic.from2839 ], [ %t8, %logic.rend2842 ] - br label %logic.from2843 -logic.from2843: - br i1 %t9, label %logic.rhs2844, label %logic.end2845 -logic.rhs2844: - %t10 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t11 = load { ptr, i64, i64 }, ptr %t10 - %t12 = call i1 @finch.gen.isConstant({ ptr, i64, i64 } %t11) - %t13 = xor i1 %t12, true - br label %logic.rend2846 -logic.rend2846: - br label %logic.end2845 -logic.end2845: - %t14 = phi i1 [ false, %logic.from2843 ], [ %t13, %logic.rend2846 ] - br label %logic.from2847 -logic.from2847: - br i1 %t14, label %logic.rhs2848, label %logic.end2849 -logic.rhs2848: - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call i1 @finch.gen.owning(ptr %t15, %S.ast.Type %t17) - br label %logic.rend2850 -logic.rend2850: - br label %logic.end2849 -logic.end2849: - %t19 = phi i1 [ false, %logic.from2847 ], [ %t18, %logic.rend2850 ] - br i1 %t19, label %then2851, label %endif2853 -then2851: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic2854, label %ok2855 -panic2854: - call void @finch_panic(ptr @.str.1697, i64 982, ptr @.str.1698) - unreachable -ok2855: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 11 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i32 0, i32 1 - %t24 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_copy(ptr %a27, ptr %a26) - %t28 = load { ptr, i64, i64 }, ptr %a27 - %t29 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t28, 0 - %t30 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t31 = load %S.ast.Type, ptr %t30 - store %S.ast.Type %t31, ptr %a32 - call void @finch.copy.S_ast_Type(ptr %a33, ptr %a32) - %t34 = load %S.ast.Type, ptr %a33 - %t35 = insertvalue %S.gen.Pending %t29, %S.ast.Type %t34, 1 - %t36 = insertvalue %S.gen.Pending %t35, i1 false, 2 - %t37 = load i64, ptr %t23 - %t38 = add i64 %t37, 1 - call void @finch_arr_reserve(ptr %t22, i64 %t38, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t39 = load ptr, ptr %t22 - %t40 = getelementptr inbounds %S.gen.Pending, ptr %t39, i64 %t37 - store %S.gen.Pending %t36, ptr %t40 - store i64 %t38, ptr %t23 - br label %endif2853 -endif2853: - ret void -} - -define internal void @finch.gen.holdAddr(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.owning(ptr %t4, %S.ast.Type %t5) - br i1 %t6, label %then2856, label %endif2858 -then2856: - %t7 = load ptr, ptr %a1 - %t8 = icmp eq ptr %t7, null - br i1 %t8, label %panic2859, label %ok2860 -panic2859: - call void @finch_panic(ptr @.str.1699, i64 988, ptr @.str.1700) - unreachable -ok2860: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 11 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t9, i32 0, i32 1 - %t11 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t11, ptr %a12 - call void @finch_str_copy(ptr %a13, ptr %a12) - %t14 = load { ptr, i64, i64 }, ptr %a13 - %t15 = insertvalue %S.gen.Pending zeroinitializer, { ptr, i64, i64 } %t14, 0 - %t16 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = insertvalue %S.gen.Pending %t15, %S.ast.Type %t19, 1 - %t21 = insertvalue %S.gen.Pending %t20, i1 true, 2 - %t22 = load i64, ptr %t10 - %t23 = add i64 %t22, 1 - call void @finch_arr_reserve(ptr %t9, i64 %t23, i64 ptrtoint (ptr getelementptr (%S.gen.Pending, ptr null, i32 1) to i64)) - %t24 = load ptr, ptr %t9 - %t25 = getelementptr inbounds %S.gen.Pending, ptr %t24, i64 %t22 - store %S.gen.Pending %t21, ptr %t25 - store i64 %t23, ptr %t10 - br label %endif2858 -endif2858: - ret void -} - -define internal void @finch.copy.S_gen_Pending(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Pending, ptr %src - store %S.gen.Pending %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Pending, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Pending, ptr %src, i32 0, i32 1 - call void @finch.copy.S_ast_Type(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.drop.S_gen_Pending(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Pending, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.dropPending(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a8 = alloca i64, align 16 - %a24 = alloca %S.gen.Pending, align 16 - %a25 = alloca %S.gen.Pending, align 16 - %a27 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2861, label %ok2862 -panic2861: - call void @finch_panic(ptr @.str.1701, i64 994, ptr @.str.1702) - unreachable -ok2862: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - store i64 %t7, ptr %a8 - br label %while.cond2863 -while.cond2863: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body2864, label %while.end2865 -while.body2864: - %t12 = load i64, ptr %a8 - %t13 = sub i64 %t12, 1 - store i64 %t13, ptr %a8 - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic2866, label %ok2867 -panic2866: - call void @finch_panic(ptr @.str.1703, i64 997, ptr @.str.1704) - unreachable -ok2867: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 11 - %t17 = load i64, ptr %a8 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range2868, label %inrange2869 -range2868: - call void @finch_panic_index(ptr @.str.1705, i64 997, i64 %t17, i64 %t19) - unreachable -inrange2869: - %t21 = extractvalue { ptr, i64, i64 } %t18, 0 - %t22 = getelementptr inbounds %S.gen.Pending, ptr %t21, i64 %t17 - %t23 = load %S.gen.Pending, ptr %t22 - store %S.gen.Pending %t23, ptr %a24 - call void @finch.copy.S_gen_Pending(ptr %a25, ptr %a24) - %t26 = load %S.gen.Pending, ptr %a25 - store %S.gen.Pending %t26, ptr %a27 - %t28 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 2 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then2870, label %else2871 -then2870: - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t32 = load { ptr, i64, i64 }, ptr %t31 - %t33 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t34 = load %S.ast.Type, ptr %t33 - call void @finch.gen.dropAt(ptr %t30, { ptr, i64, i64 } %t32, %S.ast.Type %t34) - br label %endif2872 -else2871: - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - %t38 = getelementptr inbounds %S.gen.Pending, ptr %a27, i32 0, i32 1 - %t39 = load %S.ast.Type, ptr %t38 - call void @finch.gen.dropValue(ptr %t35, { ptr, i64, i64 } %t37, %S.ast.Type %t39) - br label %endif2872 -endif2872: - call void @finch.drop.S_gen_Pending(ptr %a27) - br label %while.cond2863 -while.end2865: - ret void -} - -define internal void @finch.gen.heldEnd(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a20 = alloca %S.gen.Pending, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - br label %while.cond2873 -while.cond2873: - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic2876, label %ok2877 -panic2876: - call void @finch_panic(ptr @.str.1706, i64 1008, ptr @.str.1707) - unreachable -ok2877: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 11 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i32 0, i32 1 - %t7 = load i64, ptr %t6 - %t8 = load i64, ptr %a2 - %t9 = icmp sgt i64 %t7, %t8 - br i1 %t9, label %while.body2874, label %while.end2875 -while.body2874: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic2878, label %ok2879 -panic2878: - call void @finch_panic(ptr @.str.1708, i64 1009, ptr @.str.1709) - unreachable -ok2879: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 11 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp eq i64 %t14, 0 - br i1 %t15, label %panic2880, label %ok2881 -panic2880: - call void @finch_panic(ptr @.str.1710, i64 1009, ptr @.str.1711) - unreachable -ok2881: - %t16 = sub i64 %t14, 1 - %t17 = load ptr, ptr %t12 - %t18 = getelementptr inbounds %S.gen.Pending, ptr %t17, i64 %t16 - %t19 = load %S.gen.Pending, ptr %t18 - store i64 %t16, ptr %t13 - store %S.gen.Pending %t19, ptr %a20 - call void @finch.drop.S_gen_Pending(ptr %a20) - br label %while.cond2873 -while.end2875: - ret void -} - -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.from2882 -logic.from2882: - br i1 %t7, label %logic.end2884, label %logic.rhs2883 -logic.rhs2883: - %t8 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 2 - %t9 = load i1, ptr %t8 - br label %logic.rend2885 -logic.rend2885: - br label %logic.end2884 -logic.end2884: - %t10 = phi i1 [ true, %logic.from2882 ], [ %t9, %logic.rend2885 ] - br i1 %t10, label %then2886, label %endif2888 -then2886: - %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 -endif2888: - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.1712, 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 %then2889, label %endif2891 -then2889: - %t15 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1713, i64 2, i64 0 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t19, ptr %a11 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - br label %endif2891 -endif2891: - %t22 = load ptr, ptr %a1 - %t23 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1714, i64 35, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a24 - %t28 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t27, ptr %a30 - store { ptr, i64, i64 } %t28, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1715, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - call void @finch.gen.emit(ptr %t22, { ptr, i64, i64 } %t44) - store { ptr, i64, i64 } %t44, ptr %a45 - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a10) - call void @finch_str_drop(ptr %a7) - ret void -} - -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = 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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1716, 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.1717, i64 3, i64 0 }, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - %t14 = call { ptr, i64, i64 } @finch.gen.op(ptr %t3, { ptr, i64, i64 } %t13) - store { ptr, i64, i64 } %t13, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t14, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.1718, i64 12, i64 0 }, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t22, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.1719, i64 6, i64 0 }, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t22, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = load { ptr, i64, i64 }, ptr %a23 - %t28 = call { ptr, i64, i64 } @finch.gen.op(ptr %t17, { ptr, i64, i64 } %t27) - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - store { ptr, i64, i64 } %t28, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t31, { ptr, i64, i64 } { ptr @.str.1720, i64 0, i64 0 }) - store { ptr, i64, i64 } %t32, ptr %a33 - %t34 = load ptr, ptr %a1 - %t35 = load { ptr, i64, i64 }, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.1721, i64 10, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.1722, i64 6, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.1723, i64 6, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t34, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a30) - call void @finch_str_drop(ptr %a16) - ret { ptr, i64, i64 } %t62 -} - -define internal void @finch.gen.emitPrint(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i1 %p3) { -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 %S.ast.Type, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = 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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a153 = 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 - %a167 = 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 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then2892, label %else2893 -then2892: - %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.1726, 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 %S.ast.Type %t17, ptr %a19 - call void @finch.drop.S_ast_Type(ptr %a19) - store { ptr, i64, i64 } { ptr @.str.1725, i64 4, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t18, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.gen.printf(ptr %t13, { ptr, i64, i64 } { ptr @.str.1724, i64 4, i64 0 }, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_drop(ptr %a25) - br label %endif2894 -else2893: - %t26 = load %S.ast.Type, ptr %a3 - %t27 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t26) - br i1 %t27, label %then2895, label %else2896 -then2895: - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a2 - %t31 = load %S.ast.Type, ptr %a3 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1729, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } { ptr @.str.1728, i64 4, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - call void @finch.gen.printf(ptr %t28, { ptr, i64, i64 } { ptr @.str.1727, i64 4, i64 0 }, { ptr, i64, i64 } %t39) - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch_str_drop(ptr %a40) - br label %endif2897 -else2896: - %t41 = load %S.ast.Type, ptr %a3 - %t42 = call i1 @finch.gen.isFloat(%S.ast.Type %t41) - br i1 %t42, label %then2898, label %else2899 -then2898: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load { ptr, i64, i64 }, ptr %a2 - %t46 = load %S.ast.Type, ptr %a3 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1732, i64 5, i64 0 }) - %t48 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t44, { ptr, i64, i64 } %t45, %S.ast.Type %t46, %S.ast.Type %t47) - store %S.ast.Type %t47, ptr %a49 - call void @finch.drop.S_ast_Type(ptr %a49) - store { ptr, i64, i64 } { ptr @.str.1731, i64 7, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.gen.printf(ptr %t43, { ptr, i64, i64 } { ptr @.str.1730, i64 2, i64 0 }, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %endif2900 -else2899: - %t56 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.1733, i64 4, i64 0 }, ptr %a58 - %t59 = call i32 @finch_str_eq(ptr %a57, ptr %a58) - %t60 = icmp ne i32 %t59, 0 - br i1 %t60, label %then2901, label %else2902 -then2901: - %t61 = load ptr, ptr %a1 - %t62 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1734, i64 8, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1735, i64 7, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t71) - store { ptr, i64, i64 } %t71, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = load i1, ptr %a4 - br i1 %t75, label %then2904, label %else2905 -then2904: - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1737, i64 4, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.printf(ptr %t76, { ptr, i64, i64 } { ptr @.str.1736, i64 4, i64 0 }, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a82 - call void @finch_str_drop(ptr %a82) - br label %endif2906 -else2905: - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.1739, i64 4, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.gen.printf(ptr %t83, { ptr, i64, i64 } { ptr @.str.1738, i64 2, i64 0 }, { ptr, i64, i64 } %t88) - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif2906 -endif2906: - call void @finch_str_drop(ptr %a74) - br label %endif2903 -else2902: - %t90 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t90, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.1740, 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 %then2907, label %else2908 -then2907: - %t95 = load ptr, ptr %a1 - %t96 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t95, { ptr, i64, i64 } { ptr @.str.1741, i64 4, i64 0 }) - store { ptr, i64, i64 } %t96, ptr %a97 - %t98 = load ptr, ptr %a1 - %t99 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t98, { ptr, i64, i64 } { ptr @.str.1742, i64 5, i64 0 }) - store { ptr, i64, i64 } %t99, ptr %a100 - %t101 = load ptr, ptr %a1 - %t102 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1743, i64 10, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.1744, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t111, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.1745, i64 6, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t122, ptr %a125 - store { ptr, i64, i64 } %t123, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t101, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - %t132 = load ptr, ptr %a1 - %t133 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.1747, i64 4, i64 0 }, ptr %a135 - store { ptr, i64, i64 } %t133, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a134 - call void @finch.gen.printf(ptr %t132, { ptr, i64, i64 } { ptr @.str.1746, i64 2, i64 0 }, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a131) - call void @finch_str_drop(ptr %a100) - call void @finch_str_drop(ptr %a97) - br label %endif2909 -else2908: - %t139 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t139, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.1748, 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 %then2910, label %else2911 -then2910: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1749, i64 31, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.1750, i64 3, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t155, ptr %a157 - %t158 = load ptr, ptr %a1 - %t159 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.1751, i64 10, i64 0 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.1752, i64 7, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = call { ptr, i64, i64 } @finch.gen.op(ptr %t158, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a170 - call void @finch_str_drop(ptr %a170) - store { ptr, i64, i64 } %t169, ptr %a171 - %t172 = load ptr, ptr %a1 - %t173 = load { ptr, i64, i64 }, ptr %a2 - %t174 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t172, { ptr, i64, i64 } %t173) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load i1, ptr %a4 - br i1 %t176, label %then2913, label %else2914 -then2913: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1754, i64 4, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1755, i64 6, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - call void @finch.gen.printf(ptr %t177, { ptr, i64, i64 } { ptr @.str.1753, i64 6, i64 0 }, { ptr, i64, i64 } %t193) - store { ptr, i64, i64 } %t193, ptr %a194 - call void @finch_str_drop(ptr %a194) - br label %endif2915 -else2914: - %t195 = load ptr, ptr %a1 - %t196 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1757, i64 4, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.1758, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t205, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t205, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.printf(ptr %t195, { ptr, i64, i64 } { ptr @.str.1756, i64 4, i64 0 }, { ptr, i64, i64 } %t211) - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - br label %endif2915 -endif2915: - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a171) - call void @finch_str_drop(ptr %a157) - br label %endif2912 -else2911: - %t213 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t213, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.1759, i64 3, i64 0 }, ptr %a215 - %t216 = call i32 @finch_str_eq(ptr %a214, ptr %a215) - %t217 = icmp ne i32 %t216, 0 - br i1 %t217, label %then2916, label %else2917 -then2916: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1760, i64 12, i64 0 }, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1761, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t218, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t232, { ptr, i64, i64 } { ptr @.str.1762, i64 8, i64 0 }) - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t235, { ptr, i64, i64 } { ptr @.str.1763, i64 8, i64 0 }) - store { ptr, i64, i64 } %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t238, { ptr, i64, i64 } { ptr @.str.1764, i64 8, i64 0 }) - store { ptr, i64, i64 } %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load { ptr, i64, i64 }, ptr %a231 - %t243 = load { ptr, i64, i64 }, ptr %a234 - %t244 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.condBr(ptr %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t244) - %t245 = load ptr, ptr %a1 - %t246 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.label(ptr %t245, { ptr, i64, i64 } %t246) - %t247 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t247, { ptr, i64, i64 } { ptr @.str.1765, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1766, i64 0, i64 0 }) - %t248 = load ptr, ptr %a1 - %t249 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t248, { ptr, i64, i64 } %t249) - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.label(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = load ptr, ptr %a1 - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1769, i64 13, i64 0 }, ptr %a256 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t258, ptr %a260 - store { ptr, i64, i64 } { ptr @.str.1770, i64 7, i64 0 }, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - %t264 = call { ptr, i64, i64 } @finch.gen.op(ptr %t253, { ptr, i64, i64 } %t263) - store { ptr, i64, i64 } %t263, ptr %a265 - call void @finch_str_drop(ptr %a265) - store { ptr, i64, i64 } { ptr @.str.1768, i64 4, i64 0 }, ptr %a267 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - call void @finch.gen.printf(ptr %t252, { ptr, i64, i64 } { ptr @.str.1767, i64 6, i64 0 }, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load ptr, ptr %a1 - %t273 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.br(ptr %t272, { ptr, i64, i64 } %t273) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.label(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a240) - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a231) - br label %endif2918 -else2917: - %t276 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t276, ptr %a277 - store { ptr, i64, i64 } { ptr @.str.1771, i64 4, i64 0 }, ptr %a278 - %t279 = call i32 @finch_str_eq(ptr %a277, ptr %a278) - %t280 = icmp ne i32 %t279, 0 - br i1 %t280, label %then2919, label %else2920 -then2919: - %t281 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t281, { ptr, i64, i64 } { ptr @.str.1772, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1773, i64 0, i64 0 }) - br label %endif2921 -else2920: - %t282 = load ptr, ptr %a1 - %t283 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t282, { ptr, i64, i64 } { ptr @.str.1774, i64 17, i64 0 }) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a284 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } { ptr @.str.1775, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.1776, i64 15, i64 0 }, { ptr, i64, i64 } %t286) - %t287 = load ptr, ptr %a1 - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - %t290 = load %S.ast.Type, ptr %a3 - %t291 = load i1, ptr %a4 - call void @finch.gen.emitFormat(ptr %t287, { ptr, i64, i64 } %t288, { ptr, i64, i64 } %t289, %S.ast.Type %t290, i1 %t291) - %t292 = load ptr, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.1777, i64 31, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.1778, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - call void @finch.gen.emit(ptr %t292, { ptr, i64, i64 } %t302) - store { ptr, i64, i64 } %t302, ptr %a303 - call void @finch_str_drop(ptr %a303) - call void @finch_str_drop(ptr %a284) - br label %endif2921 -endif2921: - br label %endif2918 -endif2918: - br label %endif2912 -endif2912: - br label %endif2909 -endif2909: - br label %endif2903 -endif2903: - br label %endif2900 -endif2900: - br label %endif2897 -endif2897: - br label %endif2894 -endif2894: - call void @finch_str_drop(ptr %a10) - 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 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1779, 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.1780, i64 6, i64 0 }, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - %t15 = load ptr, ptr %a1 - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t15, { ptr, i64, i64 } %t16) - store { ptr, i64, i64 } %t14, ptr %a19 - store { ptr, i64, i64 } %t17, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t14, ptr %a21 - call void @finch_str_drop(ptr %a21) - store { ptr, i64, i64 } %t17, ptr %a22 - call void @finch_str_drop(ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1781, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t30 = load i64, ptr %t29 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t28, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t28, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.1782, i64 1, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.emit(ptr %t4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - ret void -} - -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 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.ast.Type, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { 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 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca %S.ast.Type, align 16 - %a213 = alloca %S.ast.Type, align 16 - %a217 = alloca %S.gen.Val, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %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 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.1783, i64 1, i64 0 }, ptr %a12 - %t13 = load i1, ptr %a5 - br i1 %t13, label %then2922, label %endif2924 -then2922: - %t14 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.1784, i64 1, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - br label %endif2924 -endif2924: - %t16 = load %S.ast.Type, ptr %a4 - %t17 = call i1 @finch.gen.isSigned(%S.ast.Type %t16) - br i1 %t17, label %then2925, label %else2926 -then2925: - %t18 = load ptr, ptr %a1 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1785, i64 29, i64 0 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - %t23 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t23, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.1786, i64 6, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - %t29 = load ptr, ptr %a1 - %t30 = load { ptr, i64, i64 }, ptr %a3 - %t31 = load %S.ast.Type, ptr %a4 - %t32 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1787, i64 3, i64 0 }) - %t33 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t29, { ptr, i64, i64 } %t30, %S.ast.Type %t31, %S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - store { ptr, i64, i64 } %t28, ptr %a36 - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t28, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1788, i64 1, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - call void @finch.gen.emit(ptr %t18, { ptr, i64, i64 } %t45) - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %endif2927 -else2926: - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t47) - br i1 %t48, label %then2928, label %else2929 -then2928: - %t49 = load ptr, ptr %a1 - %t50 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1789, i64 30, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.1790, i64 6, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a3 - %t62 = load %S.ast.Type, ptr %a4 - %t63 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1791, i64 3, i64 0 }) - %t64 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t60, { ptr, i64, i64 } %t61, %S.ast.Type %t62, %S.ast.Type %t63) - store %S.ast.Type %t63, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t59, ptr %a67 - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t59, ptr %a69 - call void @finch_str_drop(ptr %a69) - store { ptr, i64, i64 } %t64, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.1792, i64 1, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.emit(ptr %t49, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif2930 -else2929: - %t78 = load %S.ast.Type, ptr %a4 - %t79 = call i1 @finch.gen.isFloat(%S.ast.Type %t78) - br i1 %t79, label %then2931, label %else2932 -then2931: - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1793, i64 31, i64 0 }, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.1794, i64 9, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a3 - %t93 = load %S.ast.Type, ptr %a4 - %t94 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.1795, i64 5, i64 0 }) - %t95 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t91, { ptr, i64, i64 } %t92, %S.ast.Type %t93, %S.ast.Type %t94) - store %S.ast.Type %t94, ptr %a96 - call void @finch.drop.S_ast_Type(ptr %a96) - store { ptr, i64, i64 } %t90, ptr %a98 - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t90, ptr %a100 - call void @finch_str_drop(ptr %a100) - store { ptr, i64, i64 } %t95, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.1796, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.emit(ptr %t80, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - br label %endif2933 -else2932: - %t109 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1797, 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 %then2934, label %else2935 -then2934: - %t114 = load ptr, ptr %a1 - %t115 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1798, i64 30, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1799, i64 5, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t124, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.1800, i64 6, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t135, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t135, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.1801, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - call void @finch.gen.emit(ptr %t114, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - br label %endif2936 -else2935: - %t148 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.1802, i64 4, i64 0 }, ptr %a150 - %t151 = call i32 @finch_str_eq(ptr %a149, ptr %a150) - %t152 = icmp ne i32 %t151, 0 - br i1 %t152, label %then2937, label %else2938 -then2937: - %t153 = load ptr, ptr %a1 - %t154 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1803, i64 30, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.1804, i64 6, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.1805, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t169, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.1806, i64 7, i64 0 }, ptr %a172 - call void @finch_str_concat(ptr %a170, ptr %a171, ptr %a172) - store { ptr, i64, i64 } %t169, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a170 - %t175 = call { ptr, i64, i64 } @finch.gen.op(ptr %t164, { ptr, i64, i64 } %t174) - store { ptr, i64, i64 } %t174, ptr %a176 - call void @finch_str_drop(ptr %a176) - store { ptr, i64, i64 } %t163, ptr %a178 - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t163, ptr %a180 - call void @finch_str_drop(ptr %a180) - store { ptr, i64, i64 } %t175, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a177 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.1807, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - call void @finch.gen.emit(ptr %t153, { ptr, i64, i64 } %t187) - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - br label %endif2939 -else2938: - %t189 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.1808, 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 %then2940, label %else2941 -then2940: - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1809, i64 29, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.1810, i64 6, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t211, ptr %a212 - call void @finch.copy.S_ast_Type(ptr %a213, ptr %a212) - %t214 = load %S.ast.Type, ptr %a213 - %t215 = insertvalue %S.gen.Val %t210, %S.ast.Type %t214, 1 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t205, %S.gen.Val %t215) - store %S.gen.Val %t215, ptr %a217 - call void @finch.drop.S_gen_Val(ptr %a217) - store { ptr, i64, i64 } %t204, ptr %a219 - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t204, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t216, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.1811, i64 6, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t228, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t228, ptr %a233 - call void @finch_str_drop(ptr %a233) - %t234 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t234, ptr %a236 - store { ptr, i64, i64 } { ptr @.str.1812, i64 1, i64 0 }, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - call void @finch.gen.emit(ptr %t194, { ptr, i64, i64 } %t239) - store { ptr, i64, i64 } %t239, ptr %a240 - call void @finch_str_drop(ptr %a240) - br label %endif2942 -else2941: - %t241 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t241, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.1813, i64 3, i64 0 }, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from2943 -logic.from2943: - br i1 %t245, label %logic.end2945, label %logic.rhs2944 -logic.rhs2944: - %t246 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1814, i64 4, i64 0 }, ptr %a248 - %t249 = call i32 @finch_str_eq(ptr %a247, ptr %a248) - %t250 = icmp ne i32 %t249, 0 - br label %logic.rend2946 -logic.rend2946: - br label %logic.end2945 -logic.end2945: - %t251 = phi i1 [ true, %logic.from2943 ], [ %t250, %logic.rend2946 ] - br i1 %t251, label %then2947, label %else2948 -then2947: - %t252 = load ptr, ptr %a1 - %t253 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.1815, i64 29, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - %t257 = load { ptr, i64, i64 }, ptr %a254 - store { ptr, i64, i64 } %t257, ptr %a259 - store { ptr, i64, i64 } { ptr @.str.1816, i64 6, i64 0 }, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t257, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - %t263 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t262, ptr %a265 - store { ptr, i64, i64 } %t263, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t262, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.1817, i64 1, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.emit(ptr %t252, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif2949 -else2948: - %t275 = load ptr, ptr %a1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a4 - %t278 = call { ptr, i64, i64 } @finch.gen.formatFn(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.1818, i64 10, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.1819, i64 5, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t288, ptr %a291 - store { ptr, i64, i64 } %t289, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t288, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t294, ptr %a296 - store { ptr, i64, i64 } { ptr @.str.1820, i64 6, i64 0 }, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - store { ptr, i64, i64 } %t294, ptr %a298 - call void @finch_str_drop(ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a295 - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_copy(ptr %a303, ptr %a302) - %t304 = load { ptr, i64, i64 }, ptr %a303 - %t305 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t306 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t306, ptr %a307 - call void @finch.copy.S_ast_Type(ptr %a308, ptr %a307) - %t309 = load %S.ast.Type, ptr %a308 - %t310 = insertvalue %S.gen.Val %t305, %S.ast.Type %t309, 1 - %t311 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t300, %S.gen.Val %t310) - store %S.gen.Val %t310, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - store { ptr, i64, i64 } %t299, ptr %a314 - store { ptr, i64, i64 } %t311, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t299, ptr %a316 - call void @finch_str_drop(ptr %a316) - store { ptr, i64, i64 } %t311, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.1821, i64 1, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - call void @finch.gen.emit(ptr %t275, { ptr, i64, i64 } %t323) - store { ptr, i64, i64 } %t323, ptr %a324 - call void @finch_str_drop(ptr %a324) - br label %endif2949 -endif2949: - br label %endif2942 -endif2942: - br label %endif2939 -endif2939: - br label %endif2936 -endif2936: - br label %endif2933 -endif2933: - br label %endif2930 -endif2930: - br label %endif2927 -endif2927: - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a11) - 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 void @finch.drop.S_gen_EnumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.EnumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - ret void -} - -define internal void @finch.copy.S_gen_SumDef(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.SumDef, ptr %src - store %S.gen.SumDef %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_int(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_int(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_S_ast_Node(ptr %t12, ptr %t13) - ret void -} - -define internal void @finch.drop.S_gen_SumDef(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_int(ptr %t4) - %t5 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_int(ptr %t5) - %t6 = getelementptr inbounds %S.gen.SumDef, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_S_ast_Node(ptr %t6) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca %S.ast.Type, align 16 - %a47 = alloca %S.ast.Type, align 16 - %a49 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca %S.gen.EnumDef, align 16 - %a174 = alloca %S.gen.EnumDef, align 16 - %a176 = alloca %S.gen.EnumDef, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca i64, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca i64, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a342 = 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 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca %S.gen.SumDef, align 16 - %a538 = alloca %S.gen.SumDef, align 16 - %a540 = alloca %S.gen.SumDef, align 16 - %a556 = alloca %S.gen.StructDef, align 16 - %a557 = alloca %S.gen.StructDef, align 16 - %a559 = alloca %S.gen.StructDef, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca i64, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = 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 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca i64, align 16 - %a731 = alloca i64, align 16 - %a747 = alloca i64, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca %S.gen.StructDef, align 16 - %a839 = alloca %S.gen.StructDef, align 16 - %a841 = alloca %S.gen.StructDef, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca i64, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a879 = 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 - %a884 = 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 - %a891 = 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 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a938 = 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 - %a950 = 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 - 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.1822, i64 14, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic2950, label %ok2951 -panic2950: - call void @finch_panic(ptr @.str.1823, i64 1126, ptr @.str.1824) - unreachable -ok2951: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then2952, label %endif2954 -then2952: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif2954: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic2955, label %ok2956 -panic2955: - call void @finch_panic(ptr @.str.1825, i64 1129, ptr @.str.1826) - unreachable -ok2956: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - %t33 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.1827, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then2957, label %else2958 -then2957: - %t39 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = extractvalue { ptr, i64, i64 } %t40, 1 - %t42 = icmp uge i64 0, %t41 - br i1 %t42, label %range2960, label %inrange2961 -range2960: - call void @finch_panic_index(ptr @.str.1828, i64 1132, i64 0, i64 %t41) - unreachable -inrange2961: - %t43 = extractvalue { ptr, i64, i64 } %t40, 0 - %t44 = getelementptr inbounds %S.ast.Type, ptr %t43, i64 0 - %t45 = load %S.ast.Type, ptr %t44 - store %S.ast.Type %t45, ptr %a46 - call void @finch.copy.S_ast_Type(ptr %a47, ptr %a46) - %t48 = load %S.ast.Type, ptr %a47 - store %S.ast.Type %t48, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = call { ptr, i64, i64 } @finch.gen.load(ptr %t50, { ptr, i64, i64 } { ptr @.str.1829, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1830, i64 2, i64 0 }) - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load ptr, ptr %a1 - %t54 = load ptr, ptr %a1 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t54, { ptr, i64, i64 } { ptr @.str.1832, i64 62, i64 0 }) - %t56 = call { ptr, i64, i64 } @finch.gen.load(ptr %t53, { ptr, i64, i64 } { ptr @.str.1831, i64 3, i64 0 }, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - store { ptr, i64, i64 } %t56, ptr %a58 - %t59 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t59, { ptr, i64, i64 } { ptr @.str.1833, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1834, i64 1, i64 0 }) - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a58 - %t62 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t60, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t62, ptr %a63 - %t64 = load ptr, ptr %a1 - %t65 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t64, { ptr, i64, i64 } { ptr @.str.1835, i64 3, i64 0 }) - store { ptr, i64, i64 } %t65, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.1836, i64 4, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a63 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 3, %t72 - br i1 %t73, label %range2962, label %inrange2963 -range2962: - call void @finch_panic_index(ptr @.str.1838, i64 1139, i64 3, i64 %t72) - unreachable -inrange2963: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t74, i64 3 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.1837, i64 13, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.1839, i64 3, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t85) - store { ptr, i64, i64 } %t85, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t86, ptr %a88 - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a88 - %t91 = load { ptr, i64, i64 }, ptr %a66 - %t92 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.condBr(ptr %t89, { ptr, i64, i64 } %t90, { ptr, i64, i64 } %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t95, { ptr, i64, i64 } { ptr @.str.1840, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1841, i64 2, i64 0 }) - %t96 = load ptr, ptr %a1 - %t97 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t96, { ptr, i64, i64 } %t97) - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t98, { ptr, i64, i64 } %t99) - %t100 = load ptr, ptr %a1 - %t101 = load ptr, ptr %a1 - %t102 = load %S.ast.Type, ptr %a49 - %t103 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t101, %S.ast.Type %t102) - store { ptr, i64, i64 } { ptr @.str.1842, i64 23, i64 0 }, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t108, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.1843, i64 6, i64 0 }, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t108, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a109 - %t114 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.1844, i64 6, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load { ptr, i64, i64 }, ptr %a63 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 3, %t126 - br i1 %t127, label %range2964, label %inrange2965 -range2964: - call void @finch_panic_index(ptr @.str.1845, i64 1145, i64 3, i64 %t126) - unreachable -inrange2965: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i64 3 - %t130 = load { ptr, i64, i64 }, ptr %t129 - store { ptr, i64, i64 } %t124, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t124, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - %t136 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a137 - call void @finch_str_drop(ptr %a137) - store { ptr, i64, i64 } %t136, ptr %a138 - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = load %S.ast.Type, ptr %a49 - %t143 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t141, %S.ast.Type %t142) - %t144 = load { ptr, i64, i64 }, ptr %a138 - %t145 = call { ptr, i64, i64 } @finch.gen.load(ptr %t140, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t144) - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_drop(ptr %a146) - %t147 = load %S.ast.Type, ptr %a49 - call void @finch.gen.emitFormat(ptr %t139, { ptr, i64, i64 } { ptr @.str.1846, i64 4, i64 0 }, { ptr, i64, i64 } %t145, %S.ast.Type %t147, i1 true) - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load ptr, ptr %a1 - %t150 = load { ptr, i64, i64 }, ptr %a63 - call void @finch.gen.loopEnd(ptr %t149, { ptr, i64, i64 } %t150) - %t151 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t151, { ptr, i64, i64 } { ptr @.str.1847, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1848, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a138) - call void @finch_str_drop(ptr %a88) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_str(ptr %a63) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a52) - call void @finch.drop.S_ast_Type(ptr %a49) - br label %endif2959 -else2958: - %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.1849, i64 4, i64 0 }, ptr %a155 - %t156 = call i32 @finch_str_eq(ptr %a154, ptr %a155) - %t157 = icmp ne i32 %t156, 0 - br i1 %t157, label %then2966, label %else2967 -then2966: - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic2969, label %ok2970 -panic2969: - call void @finch_panic(ptr @.str.1850, i64 1151, ptr @.str.1851) - unreachable -ok2970: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 21 - %t161 = load ptr, ptr %a1 - %t162 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = call i64 @finch.gen.findEnum(ptr %t161, { ptr, i64, i64 } %t163, { ptr, i64, i64 } %t165) - %t167 = load { ptr, i64, i64 }, ptr %t160 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range2971, label %inrange2972 -range2971: - call void @finch_panic_index(ptr @.str.1852, i64 1151, i64 %t166, i64 %t168) - unreachable -inrange2972: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.EnumDef, ptr %t170, i64 %t166 - %t172 = load %S.gen.EnumDef, ptr %t171 - store %S.gen.EnumDef %t172, ptr %a173 - call void @finch.copy.S_gen_EnumDef(ptr %a174, ptr %a173) - %t175 = load %S.gen.EnumDef, ptr %a174 - store %S.gen.EnumDef %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.1853, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.1854, i64 2, i64 0 }) - store { ptr, i64, i64 } %t178, ptr %a179 - %t180 = load ptr, ptr %a1 - %t181 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t180, { ptr, i64, i64 } { ptr @.str.1855, i64 10, i64 0 }) - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = load ptr, ptr %a1 - %t184 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t183, { ptr, i64, i64 } { ptr @.str.1856, i64 9, i64 0 }) - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } zeroinitializer, ptr %a186 - store { ptr, i64, i64 } zeroinitializer, ptr %a187 - %t188 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - store i64 0, ptr %a191 - br label %for.cond2973 -for.cond2973: - %t192 = load i64, ptr %a191 - %t193 = icmp slt i64 %t192, %t190 - br i1 %t193, label %for.body2974, label %for.end2976 -for.body2974: - %t194 = getelementptr inbounds { ptr, i64, i64 }, ptr %a187, i32 0, i32 1 - %t195 = load ptr, ptr %a1 - %t196 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t195, { ptr, i64, i64 } { ptr @.str.1857, i64 6, i64 0 }) - %t197 = load i64, ptr %t194 - %t198 = add i64 %t197, 1 - call void @finch_arr_reserve(ptr %a187, i64 %t198, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t199 = load ptr, ptr %a187 - %t200 = getelementptr inbounds { ptr, i64, i64 }, ptr %t199, i64 %t197 - store { ptr, i64, i64 } %t196, ptr %t200 - store i64 %t198, ptr %t194 - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 3 - %t203 = load i64, ptr %a191 - %t204 = load { ptr, i64, i64 }, ptr %t202 - %t205 = extractvalue { ptr, i64, i64 } %t204, 1 - %t206 = icmp uge i64 %t203, %t205 - br i1 %t206, label %range2977, label %inrange2978 -range2977: - call void @finch_panic_index(ptr @.str.1859, i64 1159, i64 %t203, i64 %t205) - unreachable -inrange2978: - %t207 = extractvalue { ptr, i64, i64 } %t204, 0 - %t208 = getelementptr inbounds i64, ptr %t207, i64 %t203 - %t209 = load i64, ptr %t208 - call void @finch_str_from_int(ptr %a210, i64 %t209) - %t211 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.1858, i64 4, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t216, ptr %a218 - store { ptr, i64, i64 } { ptr @.str.1860, i64 9, i64 0 }, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - %t222 = load i64, ptr %a191 - %t223 = load { ptr, i64, i64 }, ptr %a187 - %t224 = extractvalue { ptr, i64, i64 } %t223, 1 - %t225 = icmp uge i64 %t222, %t224 - br i1 %t225, label %range2979, label %inrange2980 -range2979: - call void @finch_panic_index(ptr @.str.1861, i64 1159, i64 %t222, i64 %t224) - unreachable -inrange2980: - %t226 = extractvalue { ptr, i64, i64 } %t223, 0 - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 %t222 - %t228 = load { ptr, i64, i64 }, ptr %t227 - store { ptr, i64, i64 } %t221, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t221, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - %t234 = load i64, ptr %t201 - %t235 = add i64 %t234, 1 - call void @finch_arr_reserve(ptr %a186, i64 %t235, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t236 = load ptr, ptr %a186 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i64 %t234 - store { ptr, i64, i64 } %t233, ptr %t237 - store i64 %t235, ptr %t201 - br label %for.step2975 -for.step2975: - %t238 = load i64, ptr %a191 - %t239 = add i64 %t238, 1 - store i64 %t239, ptr %a191 - br label %for.cond2973 -for.end2976: - %t240 = load ptr, ptr %a1 - %t241 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1862, i64 11, i64 0 }, ptr %a243 - store { ptr, i64, i64 } %t241, ptr %a244 - call void @finch_str_concat(ptr %a242, ptr %a243, ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a242 - store { ptr, i64, i64 } %t245, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.1863, i64 9, i64 0 }, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t245, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - %t251 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t250, ptr %a253 - store { ptr, i64, i64 } %t251, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t250, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.1864, i64 3, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %a186, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1865, i64 1, i64 0 }, ptr %a263 - call void @finch_str_join(ptr %a264, ptr %a186, ptr %a263) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t261, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t261, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t265, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a266 - store { ptr, i64, i64 } %t271, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.1866, i64 2, i64 0 }, ptr %a274 - call void @finch_str_concat(ptr %a272, ptr %a273, ptr %a274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a272 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t276) - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load ptr, ptr %a1 - %t279 = icmp eq ptr %t278, null - br i1 %t279, label %panic2981, label %ok2982 -panic2981: - call void @finch_panic(ptr @.str.1867, i64 1162, ptr @.str.1868) - unreachable -ok2982: - %t280 = getelementptr inbounds %S.gen.Gen, ptr %t278, i32 0, i32 9 - store i1 true, ptr %t280 - %t281 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %t281, i32 0, i32 1 - %t283 = load i64, ptr %t282 - store i64 0, ptr %a284 - br label %for.cond2983 -for.cond2983: - %t285 = load i64, ptr %a284 - %t286 = icmp slt i64 %t285, %t283 - br i1 %t286, label %for.body2984, label %for.end2986 -for.body2984: - %t287 = load ptr, ptr %a1 - %t288 = load i64, ptr %a284 - %t289 = load { ptr, i64, i64 }, ptr %a187 - %t290 = extractvalue { ptr, i64, i64 } %t289, 1 - %t291 = icmp uge i64 %t288, %t290 - br i1 %t291, label %range2987, label %inrange2988 -range2987: - call void @finch_panic_index(ptr @.str.1869, i64 1164, i64 %t288, i64 %t290) - unreachable -inrange2988: - %t292 = extractvalue { ptr, i64, i64 } %t289, 0 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %t292, i64 %t288 - %t294 = load { ptr, i64, i64 }, ptr %t293 - call void @finch.gen.label(ptr %t287, { ptr, i64, i64 } %t294) - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 2 - %t297 = load i64, ptr %a284 - %t298 = load { ptr, i64, i64 }, ptr %t296 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 %t297, %t299 - br i1 %t300, label %range2989, label %inrange2990 -range2989: - call void @finch_panic_index(ptr @.str.1871, i64 1165, i64 %t297, i64 %t299) - unreachable -inrange2990: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 %t297 - %t303 = load { ptr, i64, i64 }, ptr %t302 - call void @finch.gen.bufText(ptr %t295, { ptr, i64, i64 } { ptr @.str.1870, i64 4, i64 0 }, { ptr, i64, i64 } %t303) - %t304 = load ptr, ptr %a1 - %t305 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t304, { ptr, i64, i64 } %t305) - br label %for.step2985 -for.step2985: - %t306 = load i64, ptr %a284 - %t307 = add i64 %t306, 1 - store i64 %t307, ptr %a284 - br label %for.cond2983 -for.end2986: - %t308 = load ptr, ptr %a1 - %t309 = load { ptr, i64, i64 }, ptr %a182 - call void @finch.gen.label(ptr %t308, { ptr, i64, i64 } %t309) - %t310 = load ptr, ptr %a1 - %t311 = getelementptr inbounds %S.gen.EnumDef, ptr %a176, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a314 - store { ptr, i64, i64 } { ptr @.str.1873, i64 1, i64 0 }, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - %t316 = load { ptr, i64, i64 }, ptr %a313 - call void @finch.gen.bufText(ptr %t310, { ptr, i64, i64 } { ptr @.str.1872, i64 4, i64 0 }, { ptr, i64, i64 } %t316) - store { ptr, i64, i64 } %t316, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.1875, i64 9, i64 0 }, ptr %a322 - store { ptr, i64, i64 } %t320, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a321 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.1876, i64 7, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = call { ptr, i64, i64 } @finch.gen.op(ptr %t319, { ptr, i64, i64 } %t329) - store { ptr, i64, i64 } %t329, ptr %a331 - call void @finch_str_drop(ptr %a331) - store { ptr, i64, i64 } { ptr @.str.1874, i64 39, i64 0 }, ptr %a333 - store { ptr, i64, i64 } %t330, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t330, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.1877, i64 1, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - call void @finch.gen.emit(ptr %t318, { ptr, i64, i64 } %t341) - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t343, { ptr, i64, i64 } { ptr @.str.1878, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1879, i64 1, i64 0 }) - %t344 = load ptr, ptr %a1 - %t345 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.br(ptr %t344, { ptr, i64, i64 } %t345) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a185 - call void @finch.gen.label(ptr %t346, { ptr, i64, i64 } %t347) - call void @finch.drop.arr_str(ptr %a187) - call void @finch.drop.arr_str(ptr %a186) - call void @finch_str_drop(ptr %a185) - call void @finch_str_drop(ptr %a182) - call void @finch_str_drop(ptr %a179) - call void @finch.drop.S_gen_EnumDef(ptr %a176) - br label %endif2968 -else2967: - %t348 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t349 = load { ptr, i64, i64 }, ptr %t348 - store { ptr, i64, i64 } %t349, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.1880, i64 3, i64 0 }, ptr %a351 - %t352 = call i32 @finch_str_eq(ptr %a350, ptr %a351) - %t353 = icmp ne i32 %t352, 0 - br i1 %t353, label %then2991, label %else2992 -then2991: - %t354 = load ptr, ptr %a1 - %t355 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t354, { ptr, i64, i64 } { ptr @.str.1881, i64 2, i64 0 }) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t357, { ptr, i64, i64 } { ptr @.str.1882, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1883, i64 4, i64 0 }, { ptr, i64, i64 } %t358) - %t359 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t359, { ptr, i64, i64 } { ptr @.str.1884, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1885, i64 1, i64 0 }) - %t360 = load ptr, ptr %a1 - %t361 = load ptr, ptr %a1 - %t362 = load ptr, ptr %a1 - %t363 = load %S.ast.Type, ptr %a2 - %t364 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t362, %S.ast.Type %t363) - store { ptr, i64, i64 } { ptr @.str.1887, i64 23, i64 0 }, ptr %a366 - store { ptr, i64, i64 } %t364, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.1888, i64 22, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t361, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = call { ptr, i64, i64 } @finch.gen.load(ptr %t360, { ptr, i64, i64 } { ptr @.str.1886, i64 3, i64 0 }, { ptr, i64, i64 } %t375) - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_drop(ptr %a378) - store { ptr, i64, i64 } %t377, ptr %a379 - %t380 = load ptr, ptr %a1 - %t381 = load { ptr, i64, i64 }, ptr %a379 - %t382 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t380, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t382, ptr %a383 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Type, ptr %a2 - %t386 = load { ptr, i64, i64 }, ptr %a383 - %t387 = extractvalue { ptr, i64, i64 } %t386, 1 - %t388 = icmp uge i64 3, %t387 - br i1 %t388, label %range2994, label %inrange2995 -range2994: - call void @finch_panic_index(ptr @.str.1890, i64 1181, i64 3, i64 %t387) - unreachable -inrange2995: - %t389 = extractvalue { ptr, i64, i64 } %t386, 0 - %t390 = getelementptr inbounds { ptr, i64, i64 }, ptr %t389, i64 3 - %t391 = load { ptr, i64, i64 }, ptr %t390 - %t392 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t384, { ptr, i64, i64 } { ptr @.str.1889, i64 2, i64 0 }, %S.ast.Type %t385, { ptr, i64, i64 } %t391) - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t394, { ptr, i64, i64 } { ptr @.str.1891, i64 10, i64 0 }) - store { ptr, i64, i64 } %t395, ptr %a396 - %t397 = load ptr, ptr %a1 - %t398 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t397, { ptr, i64, i64 } { ptr @.str.1892, i64 10, i64 0 }) - store { ptr, i64, i64 } %t398, ptr %a399 - %t400 = load ptr, ptr %a1 - %t401 = load ptr, ptr %a1 - %t402 = load ptr, ptr %a1 - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a393 - %t405 = load %S.ast.Type, ptr %a2 - %t406 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t403, { ptr, i64, i64 } %t404, %S.ast.Type %t405, i64 0) - %t407 = call { ptr, i64, i64 } @finch.gen.load(ptr %t402, { ptr, i64, i64 } { ptr @.str.1894, i64 3, i64 0 }, { ptr, i64, i64 } %t406) - store { ptr, i64, i64 } %t406, ptr %a408 - call void @finch_str_drop(ptr %a408) - store { ptr, i64, i64 } { ptr @.str.1893, i64 12, i64 0 }, ptr %a410 - store { ptr, i64, i64 } %t407, ptr %a411 - call void @finch_str_concat(ptr %a409, ptr %a410, ptr %a411) - store { ptr, i64, i64 } %t407, ptr %a412 - call void @finch_str_drop(ptr %a412) - %t413 = load { ptr, i64, i64 }, ptr %a409 - store { ptr, i64, i64 } %t413, ptr %a415 - store { ptr, i64, i64 } { ptr @.str.1895, i64 3, i64 0 }, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - store { ptr, i64, i64 } %t413, ptr %a417 - call void @finch_str_drop(ptr %a417) - %t418 = load { ptr, i64, i64 }, ptr %a414 - %t419 = call { ptr, i64, i64 } @finch.gen.op(ptr %t401, { ptr, i64, i64 } %t418) - store { ptr, i64, i64 } %t418, ptr %a420 - call void @finch_str_drop(ptr %a420) - %t421 = load { ptr, i64, i64 }, ptr %a396 - %t422 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.condBr(ptr %t400, { ptr, i64, i64 } %t419, { ptr, i64, i64 } %t421, { ptr, i64, i64 } %t422) - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a396 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t426, { ptr, i64, i64 } { ptr @.str.1896, i64 3, i64 0 }) - store { ptr, i64, i64 } %t427, ptr %a428 - %t429 = load ptr, ptr %a1 - %t430 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t429, { ptr, i64, i64 } { ptr @.str.1897, i64 4, i64 0 }) - store { ptr, i64, i64 } %t430, ptr %a431 - %t432 = load ptr, ptr %a1 - %t433 = load ptr, ptr %a1 - %t434 = load { ptr, i64, i64 }, ptr %a356 - %t435 = call { ptr, i64, i64 } @finch.gen.load(ptr %t433, { ptr, i64, i64 } { ptr @.str.1898, i64 2, i64 0 }, { ptr, i64, i64 } %t434) - %t436 = load { ptr, i64, i64 }, ptr %a431 - %t437 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.condBr(ptr %t432, { ptr, i64, i64 } %t435, { ptr, i64, i64 } %t436, { ptr, i64, i64 } %t437) - store { ptr, i64, i64 } %t435, ptr %a438 - call void @finch_str_drop(ptr %a438) - %t439 = load ptr, ptr %a1 - %t440 = load { ptr, i64, i64 }, ptr %a428 - call void @finch.gen.label(ptr %t439, { ptr, i64, i64 } %t440) - %t441 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t441, { ptr, i64, i64 } { ptr @.str.1899, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1900, i64 2, i64 0 }) - %t442 = load ptr, ptr %a1 - %t443 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.br(ptr %t442, { ptr, i64, i64 } %t443) - %t444 = load ptr, ptr %a1 - %t445 = load { ptr, i64, i64 }, ptr %a431 - call void @finch.gen.label(ptr %t444, { ptr, i64, i64 } %t445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a356 - call void @finch.gen.store(ptr %t446, { ptr, i64, i64 } { ptr @.str.1901, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.1902, i64 5, i64 0 }, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load ptr, ptr %a1 - %t450 = load ptr, ptr %a1 - %t451 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = extractvalue { ptr, i64, i64 } %t452, 1 - %t454 = icmp uge i64 0, %t453 - br i1 %t454, label %range2996, label %inrange2997 -range2996: - call void @finch_panic_index(ptr @.str.1904, i64 1194, i64 0, i64 %t453) - unreachable -inrange2997: - %t455 = extractvalue { ptr, i64, i64 } %t452, 0 - %t456 = getelementptr inbounds %S.ast.Type, ptr %t455, i64 0 - %t457 = load %S.ast.Type, ptr %t456 - %t458 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t450, %S.ast.Type %t457) - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a393 - %t461 = load %S.ast.Type, ptr %a2 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 1) - %t463 = call { ptr, i64, i64 } @finch.gen.load(ptr %t449, { ptr, i64, i64 } %t458, { ptr, i64, i64 } %t462) - store { ptr, i64, i64 } %t458, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t467 = load { ptr, i64, i64 }, ptr %t466 - %t468 = extractvalue { ptr, i64, i64 } %t467, 1 - %t469 = icmp uge i64 0, %t468 - br i1 %t469, label %range2998, label %inrange2999 -range2998: - call void @finch_panic_index(ptr @.str.1905, i64 1194, i64 0, i64 %t468) - unreachable -inrange2999: - %t470 = extractvalue { ptr, i64, i64 } %t467, 0 - %t471 = getelementptr inbounds %S.ast.Type, ptr %t470, i64 0 - %t472 = load %S.ast.Type, ptr %t471 - call void @finch.gen.emitFormat(ptr %t448, { ptr, i64, i64 } { ptr @.str.1903, i64 4, i64 0 }, { ptr, i64, i64 } %t463, %S.ast.Type %t472, i1 true) - store { ptr, i64, i64 } %t463, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t474, { ptr, i64, i64 } { ptr @.str.1906, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1907, i64 2, i64 0 }) - %t475 = load ptr, ptr %a1 - %t476 = load ptr, ptr %a1 - %t477 = load ptr, ptr %a1 - %t478 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t479 = load { ptr, i64, i64 }, ptr %t478 - %t480 = extractvalue { ptr, i64, i64 } %t479, 1 - %t481 = icmp uge i64 1, %t480 - br i1 %t481, label %range3000, label %inrange3001 -range3000: - call void @finch_panic_index(ptr @.str.1909, i64 1196, i64 1, i64 %t480) - unreachable -inrange3001: - %t482 = extractvalue { ptr, i64, i64 } %t479, 0 - %t483 = getelementptr inbounds %S.ast.Type, ptr %t482, i64 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t477, %S.ast.Type %t484) - %t486 = load ptr, ptr %a1 - %t487 = load { ptr, i64, i64 }, ptr %a393 - %t488 = load %S.ast.Type, ptr %a2 - %t489 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t486, { ptr, i64, i64 } %t487, %S.ast.Type %t488, i64 2) - %t490 = call { ptr, i64, i64 } @finch.gen.load(ptr %t476, { ptr, i64, i64 } %t485, { ptr, i64, i64 } %t489) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t494 = load { ptr, i64, i64 }, ptr %t493 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 1, %t495 - br i1 %t496, label %range3002, label %inrange3003 -range3002: - call void @finch_panic_index(ptr @.str.1910, i64 1196, i64 1, i64 %t495) - unreachable -inrange3003: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds %S.ast.Type, ptr %t497, i64 1 - %t499 = load %S.ast.Type, ptr %t498 - call void @finch.gen.emitFormat(ptr %t475, { ptr, i64, i64 } { ptr @.str.1908, i64 4, i64 0 }, { ptr, i64, i64 } %t490, %S.ast.Type %t499, i1 true) - store { ptr, i64, i64 } %t490, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load ptr, ptr %a1 - %t502 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.br(ptr %t501, { ptr, i64, i64 } %t502) - %t503 = load ptr, ptr %a1 - %t504 = load { ptr, i64, i64 }, ptr %a399 - call void @finch.gen.label(ptr %t503, { ptr, i64, i64 } %t504) - %t505 = load ptr, ptr %a1 - %t506 = load { ptr, i64, i64 }, ptr %a383 - call void @finch.gen.loopEnd(ptr %t505, { ptr, i64, i64 } %t506) - %t507 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t507, { ptr, i64, i64 } { ptr @.str.1911, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1912, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a431) - call void @finch_str_drop(ptr %a428) - call void @finch_str_drop(ptr %a399) - call void @finch_str_drop(ptr %a396) - call void @finch_str_drop(ptr %a393) - call void @finch.drop.arr_str(ptr %a383) - call void @finch_str_drop(ptr %a379) - call void @finch_str_drop(ptr %a356) - br label %endif2993 -else2992: - %t508 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t509 = load { ptr, i64, i64 }, ptr %t508 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.1913, i64 6, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.from3004 -logic.from3004: - br i1 %t513, label %logic.rhs3005, label %logic.end3006 -logic.rhs3005: - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t516 = load { ptr, i64, i64 }, ptr %t515 - %t517 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t518 = load { ptr, i64, i64 }, ptr %t517 - %t519 = call i64 @finch.gen.findSum(ptr %t514, { ptr, i64, i64 } %t516, { ptr, i64, i64 } %t518) - %t520 = icmp sge i64 %t519, 0 - br label %logic.rend3007 -logic.rend3007: - br label %logic.end3006 -logic.end3006: - %t521 = phi i1 [ false, %logic.from3004 ], [ %t520, %logic.rend3007 ] - br i1 %t521, label %then3008, label %else3009 -then3008: - %t522 = load ptr, ptr %a1 - %t523 = icmp eq ptr %t522, null - br i1 %t523, label %panic3011, label %ok3012 -panic3011: - call void @finch_panic(ptr @.str.1914, i64 1203, ptr @.str.1915) - unreachable -ok3012: - %t524 = getelementptr inbounds %S.gen.Gen, ptr %t522, i32 0, i32 22 - %t525 = load ptr, ptr %a1 - %t526 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t527 = load { ptr, i64, i64 }, ptr %t526 - %t528 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = call i64 @finch.gen.findSum(ptr %t525, { ptr, i64, i64 } %t527, { ptr, i64, i64 } %t529) - %t531 = load { ptr, i64, i64 }, ptr %t524 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range3013, label %inrange3014 -range3013: - call void @finch_panic_index(ptr @.str.1916, i64 1203, i64 %t530, i64 %t532) - unreachable -inrange3014: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.gen.SumDef, ptr %t534, i64 %t530 - %t536 = load %S.gen.SumDef, ptr %t535 - store %S.gen.SumDef %t536, ptr %a537 - call void @finch.copy.S_gen_SumDef(ptr %a538, ptr %a537) - %t539 = load %S.gen.SumDef, ptr %a538 - store %S.gen.SumDef %t539, ptr %a540 - %t541 = load ptr, ptr %a1 - %t542 = icmp eq ptr %t541, null - br i1 %t542, label %panic3015, label %ok3016 -panic3015: - call void @finch_panic(ptr @.str.1917, i64 1204, ptr @.str.1918) - unreachable -ok3016: - %t543 = getelementptr inbounds %S.gen.Gen, ptr %t541, i32 0, i32 16 - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t546 = load { ptr, i64, i64 }, ptr %t545 - %t547 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t548 = load { ptr, i64, i64 }, ptr %t547 - %t549 = call i64 @finch.gen.findStruct(ptr %t544, { ptr, i64, i64 } %t546, { ptr, i64, i64 } %t548) - %t550 = load { ptr, i64, i64 }, ptr %t543 - %t551 = extractvalue { ptr, i64, i64 } %t550, 1 - %t552 = icmp uge i64 %t549, %t551 - br i1 %t552, label %range3017, label %inrange3018 -range3017: - call void @finch_panic_index(ptr @.str.1919, i64 1204, i64 %t549, i64 %t551) - unreachable -inrange3018: - %t553 = extractvalue { ptr, i64, i64 } %t550, 0 - %t554 = getelementptr inbounds %S.gen.StructDef, ptr %t553, i64 %t549 - %t555 = load %S.gen.StructDef, ptr %t554 - store %S.gen.StructDef %t555, ptr %a556 - call void @finch.copy.S_gen_StructDef(ptr %a557, ptr %a556) - %t558 = load %S.gen.StructDef, ptr %a557 - store %S.gen.StructDef %t558, ptr %a559 - %t560 = load ptr, ptr %a1 - %t561 = load %S.ast.Type, ptr %a2 - %t562 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t560, %S.ast.Type %t561) - store { ptr, i64, i64 } %t562, ptr %a563 - %t564 = load ptr, ptr %a1 - %t565 = load ptr, ptr %a1 - %t566 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1921, i64 23, 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.1922, i64 21, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t577 = load { ptr, i64, i64 }, ptr %t576 - %t578 = extractvalue { ptr, i64, i64 } %t577, 1 - %t579 = icmp uge i64 0, %t578 - br i1 %t579, label %range3019, label %inrange3020 -range3019: - call void @finch_panic_index(ptr @.str.1923, i64 1206, i64 0, i64 %t578) - unreachable -inrange3020: - %t580 = extractvalue { ptr, i64, i64 } %t577, 0 - %t581 = getelementptr inbounds i64, ptr %t580, i64 0 - %t582 = load i64, ptr %t581 - call void @finch_str_from_int(ptr %a583, i64 %t582) - %t584 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t575, ptr %a586 - store { ptr, i64, i64 } %t584, ptr %a587 - call void @finch_str_concat(ptr %a585, ptr %a586, ptr %a587) - store { ptr, i64, i64 } %t575, ptr %a588 - call void @finch_str_drop(ptr %a588) - store { ptr, i64, i64 } %t584, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a585 - %t591 = call { ptr, i64, i64 } @finch.gen.op(ptr %t565, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = call { ptr, i64, i64 } @finch.gen.load(ptr %t564, { ptr, i64, i64 } { ptr @.str.1920, i64 3, i64 0 }, { ptr, i64, i64 } %t591) - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_drop(ptr %a594) - store { ptr, i64, i64 } %t593, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t596, { ptr, i64, i64 } { ptr @.str.1924, i64 9, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t599, { ptr, i64, i64 } { ptr @.str.1925, i64 8, i64 0 }) - store { ptr, i64, i64 } %t600, ptr %a601 - store { ptr, i64, i64 } zeroinitializer, ptr %a602 - store { ptr, i64, i64 } zeroinitializer, ptr %a603 - %t604 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i32 0, i32 1 - %t606 = load i64, ptr %t605 - store i64 0, ptr %a607 - br label %for.cond3021 -for.cond3021: - %t608 = load i64, ptr %a607 - %t609 = icmp slt i64 %t608, %t606 - br i1 %t609, label %for.body3022, label %for.end3024 -for.body3022: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a603, i32 0, i32 1 - %t611 = load ptr, ptr %a1 - %t612 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t611, { ptr, i64, i64 } { ptr @.str.1926, i64 5, i64 0 }) - %t613 = load i64, ptr %t610 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a603, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a603 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t610 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - %t618 = load i64, ptr %a607 - call void @finch_str_from_int(ptr %a619, i64 %t618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.1927, i64 4, i64 0 }, ptr %a622 - store { ptr, i64, i64 } %t620, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - store { ptr, i64, i64 } %t625, ptr %a627 - store { ptr, i64, i64 } { ptr @.str.1928, i64 9, i64 0 }, ptr %a628 - call void @finch_str_concat(ptr %a626, ptr %a627, ptr %a628) - store { ptr, i64, i64 } %t625, ptr %a629 - call void @finch_str_drop(ptr %a629) - %t630 = load { ptr, i64, i64 }, ptr %a626 - %t631 = load i64, ptr %a607 - %t632 = load { ptr, i64, i64 }, ptr %a603 - %t633 = extractvalue { ptr, i64, i64 } %t632, 1 - %t634 = icmp uge i64 %t631, %t633 - br i1 %t634, label %range3025, label %inrange3026 -range3025: - call void @finch_panic_index(ptr @.str.1929, i64 1213, i64 %t631, i64 %t633) - unreachable -inrange3026: - %t635 = extractvalue { ptr, i64, i64 } %t632, 0 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t631 - %t637 = load { ptr, i64, i64 }, ptr %t636 - store { ptr, i64, i64 } %t630, ptr %a639 - store { ptr, i64, i64 } %t637, ptr %a640 - call void @finch_str_concat(ptr %a638, ptr %a639, ptr %a640) - store { ptr, i64, i64 } %t630, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = load { ptr, i64, i64 }, ptr %a638 - %t643 = load i64, ptr %t617 - %t644 = add i64 %t643, 1 - call void @finch_arr_reserve(ptr %a602, i64 %t644, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t645 = load ptr, ptr %a602 - %t646 = getelementptr inbounds { ptr, i64, i64 }, ptr %t645, i64 %t643 - store { ptr, i64, i64 } %t642, ptr %t646 - store i64 %t644, ptr %t617 - br label %for.step3023 -for.step3023: - %t647 = load i64, ptr %a607 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a607 - br label %for.cond3021 -for.end3024: - %t649 = load ptr, ptr %a1 - %t650 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.1930, i64 11, i64 0 }, 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.1931, i64 9, i64 0 }, ptr %a657 - call void @finch_str_concat(ptr %a655, ptr %a656, ptr %a657) - store { ptr, i64, i64 } %t654, ptr %a658 - call void @finch_str_drop(ptr %a658) - %t659 = load { ptr, i64, i64 }, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %a598 - store { ptr, i64, i64 } %t659, ptr %a662 - store { ptr, i64, i64 } %t660, ptr %a663 - call void @finch_str_concat(ptr %a661, ptr %a662, ptr %a663) - store { ptr, i64, i64 } %t659, ptr %a664 - call void @finch_str_drop(ptr %a664) - %t665 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t665, ptr %a667 - store { ptr, i64, i64 } { ptr @.str.1932, i64 3, i64 0 }, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t665, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - %t671 = getelementptr inbounds { ptr, i64, i64 }, ptr %a602, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.1933, i64 1, i64 0 }, ptr %a672 - call void @finch_str_join(ptr %a673, ptr %a602, ptr %a672) - %t674 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t670, ptr %a676 - store { ptr, i64, i64 } %t674, ptr %a677 - call void @finch_str_concat(ptr %a675, ptr %a676, ptr %a677) - store { ptr, i64, i64 } %t670, ptr %a678 - call void @finch_str_drop(ptr %a678) - store { ptr, i64, i64 } %t674, ptr %a679 - call void @finch_str_drop(ptr %a679) - %t680 = load { ptr, i64, i64 }, ptr %a675 - store { ptr, i64, i64 } %t680, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.1934, i64 2, i64 0 }, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - store { ptr, i64, i64 } %t680, ptr %a684 - call void @finch_str_drop(ptr %a684) - %t685 = load { ptr, i64, i64 }, ptr %a681 - call void @finch.gen.emit(ptr %t649, { ptr, i64, i64 } %t685) - store { ptr, i64, i64 } %t685, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load ptr, ptr %a1 - %t688 = icmp eq ptr %t687, null - br i1 %t688, label %panic3027, label %ok3028 -panic3027: - call void @finch_panic(ptr @.str.1935, i64 1216, ptr @.str.1936) - unreachable -ok3028: - %t689 = getelementptr inbounds %S.gen.Gen, ptr %t687, i32 0, i32 9 - store i1 true, ptr %t689 - %t690 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t691 = getelementptr inbounds { ptr, i64, i64 }, ptr %t690, i32 0, i32 1 - %t692 = load i64, ptr %t691 - store i64 0, ptr %a693 - br label %for.cond3029 -for.cond3029: - %t694 = load i64, ptr %a693 - %t695 = icmp slt i64 %t694, %t692 - br i1 %t695, label %for.body3030, label %for.end3032 -for.body3030: - %t696 = load ptr, ptr %a1 - %t697 = load i64, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a603 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range3033, label %inrange3034 -range3033: - call void @finch_panic_index(ptr @.str.1937, i64 1218, i64 %t697, i64 %t699) - unreachable -inrange3034: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds { ptr, i64, i64 }, ptr %t701, i64 %t697 - %t703 = load { ptr, i64, i64 }, ptr %t702 - call void @finch.gen.label(ptr %t696, { ptr, i64, i64 } %t703) - %t704 = load ptr, ptr %a1 - %t705 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 2 - %t706 = load i64, ptr %a693 - %t707 = load { ptr, i64, i64 }, ptr %t705 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 %t706, %t708 - br i1 %t709, label %range3035, label %inrange3036 -range3035: - call void @finch_panic_index(ptr @.str.1939, i64 1219, i64 %t706, i64 %t708) - unreachable -inrange3036: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i64 %t706 - %t712 = load { ptr, i64, i64 }, ptr %t711 - call void @finch.gen.bufText(ptr %t704, { ptr, i64, i64 } { ptr @.str.1938, i64 4, i64 0 }, { ptr, i64, i64 } %t712) - %t713 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t714 = load i64, ptr %a693 - %t715 = load { ptr, i64, i64 }, ptr %t713 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 %t714, %t716 - br i1 %t717, label %range3037, label %inrange3038 -range3037: - call void @finch_panic_index(ptr @.str.1940, i64 1220, i64 %t714, i64 %t716) - unreachable -inrange3038: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds i64, ptr %t718, i64 %t714 - %t720 = load i64, ptr %t719 - %t721 = icmp sgt i64 %t720, 0 - br i1 %t721, label %then3039, label %endif3041 -then3039: - %t722 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t722, { ptr, i64, i64 } { ptr @.str.1941, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1942, i64 1, i64 0 }) - %t723 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 3 - %t724 = load i64, ptr %a693 - %t725 = load { ptr, i64, i64 }, ptr %t723 - %t726 = extractvalue { ptr, i64, i64 } %t725, 1 - %t727 = icmp uge i64 %t724, %t726 - br i1 %t727, label %range3042, label %inrange3043 -range3042: - call void @finch_panic_index(ptr @.str.1943, i64 1222, i64 %t724, i64 %t726) - unreachable -inrange3043: - %t728 = extractvalue { ptr, i64, i64 } %t725, 0 - %t729 = getelementptr inbounds i64, ptr %t728, i64 %t724 - %t730 = load i64, ptr %t729 - store i64 0, ptr %a731 - br label %for.cond3044 -for.cond3044: - %t732 = load i64, ptr %a731 - %t733 = icmp slt i64 %t732, %t730 - br i1 %t733, label %for.body3045, label %for.end3047 -for.body3045: - %t734 = load i64, ptr %a731 - %t735 = icmp sgt i64 %t734, 0 - br i1 %t735, label %then3048, label %endif3050 -then3048: - %t736 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t736, { ptr, i64, i64 } { ptr @.str.1944, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1945, i64 2, i64 0 }) - br label %endif3050 -endif3050: - %t737 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 4 - %t738 = load i64, ptr %a693 - %t739 = load { ptr, i64, i64 }, ptr %t737 - %t740 = extractvalue { ptr, i64, i64 } %t739, 1 - %t741 = icmp uge i64 %t738, %t740 - br i1 %t741, label %range3051, label %inrange3052 -range3051: - call void @finch_panic_index(ptr @.str.1946, i64 1226, i64 %t738, i64 %t740) - unreachable -inrange3052: - %t742 = extractvalue { ptr, i64, i64 } %t739, 0 - %t743 = getelementptr inbounds i64, ptr %t742, i64 %t738 - %t744 = load i64, ptr %t743 - %t745 = load i64, ptr %a731 - %t746 = add i64 %t744, %t745 - store i64 %t746, ptr %a747 - %t748 = load ptr, ptr %a1 - %t749 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.1947, i64 23, i64 0 }, 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.1948, i64 21, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - %t759 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 3 - %t760 = load i64, ptr %a747 - %t761 = load { ptr, i64, i64 }, ptr %t759 - %t762 = extractvalue { ptr, i64, i64 } %t761, 1 - %t763 = icmp uge i64 %t760, %t762 - br i1 %t763, label %range3053, label %inrange3054 -range3053: - call void @finch_panic_index(ptr @.str.1949, i64 1227, i64 %t760, i64 %t762) - unreachable -inrange3054: - %t764 = extractvalue { ptr, i64, i64 } %t761, 0 - %t765 = getelementptr inbounds i64, ptr %t764, i64 %t760 - %t766 = load i64, ptr %t765 - call void @finch_str_from_int(ptr %a767, i64 %t766) - %t768 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t758, ptr %a770 - store { ptr, i64, i64 } %t768, ptr %a771 - call void @finch_str_concat(ptr %a769, ptr %a770, ptr %a771) - store { ptr, i64, i64 } %t758, ptr %a772 - call void @finch_str_drop(ptr %a772) - store { ptr, i64, i64 } %t768, ptr %a773 - call void @finch_str_drop(ptr %a773) - %t774 = load { ptr, i64, i64 }, ptr %a769 - %t775 = call { ptr, i64, i64 } @finch.gen.op(ptr %t748, { ptr, i64, i64 } %t774) - store { ptr, i64, i64 } %t774, ptr %a776 - call void @finch_str_drop(ptr %a776) - store { ptr, i64, i64 } %t775, ptr %a777 - %t778 = load ptr, ptr %a1 - %t779 = load ptr, ptr %a1 - %t780 = load ptr, ptr %a1 - %t781 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t782 = load i64, ptr %a747 - %t783 = load { ptr, i64, i64 }, ptr %t781 - %t784 = extractvalue { ptr, i64, i64 } %t783, 1 - %t785 = icmp uge i64 %t782, %t784 - br i1 %t785, label %range3055, label %inrange3056 -range3055: - call void @finch_panic_index(ptr @.str.1951, i64 1228, i64 %t782, i64 %t784) - unreachable -inrange3056: - %t786 = extractvalue { ptr, i64, i64 } %t783, 0 - %t787 = getelementptr inbounds %S.ast.Type, ptr %t786, i64 %t782 - %t788 = load %S.ast.Type, ptr %t787 - %t789 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t780, %S.ast.Type %t788) - %t790 = load { ptr, i64, i64 }, ptr %a777 - %t791 = call { ptr, i64, i64 } @finch.gen.load(ptr %t779, { ptr, i64, i64 } %t789, { ptr, i64, i64 } %t790) - store { ptr, i64, i64 } %t789, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = getelementptr inbounds %S.gen.StructDef, ptr %a559, i32 0, i32 12 - %t794 = load i64, ptr %a747 - %t795 = load { ptr, i64, i64 }, ptr %t793 - %t796 = extractvalue { ptr, i64, i64 } %t795, 1 - %t797 = icmp uge i64 %t794, %t796 - br i1 %t797, label %range3057, label %inrange3058 -range3057: - call void @finch_panic_index(ptr @.str.1952, i64 1228, i64 %t794, i64 %t796) - unreachable -inrange3058: - %t798 = extractvalue { ptr, i64, i64 } %t795, 0 - %t799 = getelementptr inbounds %S.ast.Type, ptr %t798, i64 %t794 - %t800 = load %S.ast.Type, ptr %t799 - call void @finch.gen.emitFormat(ptr %t778, { ptr, i64, i64 } { ptr @.str.1950, i64 4, i64 0 }, { ptr, i64, i64 } %t791, %S.ast.Type %t800, i1 true) - store { ptr, i64, i64 } %t791, ptr %a801 - call void @finch_str_drop(ptr %a801) - call void @finch_str_drop(ptr %a777) - br label %for.step3046 -for.step3046: - %t802 = load i64, ptr %a731 - %t803 = add i64 %t802, 1 - store i64 %t803, ptr %a731 - br label %for.cond3044 -for.end3047: - %t804 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t804, { ptr, i64, i64 } { ptr @.str.1953, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1954, i64 1, i64 0 }) - br label %endif3041 -endif3041: - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t805, { ptr, i64, i64 } %t806) - br label %for.step3031 -for.step3031: - %t807 = load i64, ptr %a693 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a693 - br label %for.cond3029 -for.end3032: - %t809 = load ptr, ptr %a1 - %t810 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.label(ptr %t809, { ptr, i64, i64 } %t810) - %t811 = load ptr, ptr %a1 - %t812 = getelementptr inbounds %S.gen.SumDef, ptr %a540, i32 0, i32 1 - %t813 = load { ptr, i64, i64 }, ptr %t812 - store { ptr, i64, i64 } %t813, ptr %a815 - store { ptr, i64, i64 } { ptr @.str.1956, i64 3, i64 0 }, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - call void @finch.gen.bufText(ptr %t811, { ptr, i64, i64 } { ptr @.str.1955, i64 4, i64 0 }, { ptr, i64, i64 } %t817) - store { ptr, i64, i64 } %t817, ptr %a818 - call void @finch_str_drop(ptr %a818) - %t819 = load ptr, ptr %a1 - %t820 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.br(ptr %t819, { ptr, i64, i64 } %t820) - %t821 = load ptr, ptr %a1 - %t822 = load { ptr, i64, i64 }, ptr %a601 - call void @finch.gen.label(ptr %t821, { ptr, i64, i64 } %t822) - call void @finch.drop.arr_str(ptr %a603) - call void @finch.drop.arr_str(ptr %a602) - call void @finch_str_drop(ptr %a601) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a563) - call void @finch.drop.S_gen_StructDef(ptr %a559) - call void @finch.drop.S_gen_SumDef(ptr %a540) - br label %endif3010 -else3009: - %t823 = load ptr, ptr %a1 - %t824 = icmp eq ptr %t823, null - br i1 %t824, label %panic3059, label %ok3060 -panic3059: - call void @finch_panic(ptr @.str.1957, i64 1239, ptr @.str.1958) - unreachable -ok3060: - %t825 = getelementptr inbounds %S.gen.Gen, ptr %t823, i32 0, i32 16 - %t826 = load ptr, ptr %a1 - %t827 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t828 = load { ptr, i64, i64 }, ptr %t827 - %t829 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t830 = load { ptr, i64, i64 }, ptr %t829 - %t831 = call i64 @finch.gen.findStruct(ptr %t826, { ptr, i64, i64 } %t828, { ptr, i64, i64 } %t830) - %t832 = load { ptr, i64, i64 }, ptr %t825 - %t833 = extractvalue { ptr, i64, i64 } %t832, 1 - %t834 = icmp uge i64 %t831, %t833 - br i1 %t834, label %range3061, label %inrange3062 -range3061: - call void @finch_panic_index(ptr @.str.1959, i64 1239, i64 %t831, i64 %t833) - unreachable -inrange3062: - %t835 = extractvalue { ptr, i64, i64 } %t832, 0 - %t836 = getelementptr inbounds %S.gen.StructDef, ptr %t835, i64 %t831 - %t837 = load %S.gen.StructDef, ptr %t836 - store %S.gen.StructDef %t837, ptr %a838 - call void @finch.copy.S_gen_StructDef(ptr %a839, ptr %a838) - %t840 = load %S.gen.StructDef, ptr %a839 - store %S.gen.StructDef %t840, ptr %a841 - %t842 = load ptr, ptr %a1 - %t843 = load %S.ast.Type, ptr %a2 - %t844 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t842, %S.ast.Type %t843) - store { ptr, i64, i64 } %t844, ptr %a845 - %t846 = load ptr, ptr %a1 - %t847 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 1 - %t848 = load { ptr, i64, i64 }, ptr %t847 - store { ptr, i64, i64 } %t848, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.1961, i64 1, i64 0 }, ptr %a851 - call void @finch_str_concat(ptr %a849, ptr %a850, ptr %a851) - %t852 = load { ptr, i64, i64 }, ptr %a849 - call void @finch.gen.bufText(ptr %t846, { ptr, i64, i64 } { ptr @.str.1960, i64 4, i64 0 }, { ptr, i64, i64 } %t852) - store { ptr, i64, i64 } %t852, ptr %a853 - call void @finch_str_drop(ptr %a853) - %t854 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i32 0, i32 1 - %t856 = load i64, ptr %t855 - store i64 0, ptr %a857 - br label %for.cond3063 -for.cond3063: - %t858 = load i64, ptr %a857 - %t859 = icmp slt i64 %t858, %t856 - br i1 %t859, label %for.body3064, label %for.end3066 -for.body3064: - store { ptr, i64, i64 } { ptr @.str.1962, i64 2, i64 0 }, ptr %a860 - %t861 = load i64, ptr %a857 - %t862 = icmp eq i64 %t861, 0 - br i1 %t862, label %then3067, label %endif3069 -then3067: - %t863 = load { ptr, i64, i64 }, ptr %a860 - store { ptr, i64, i64 } { ptr @.str.1963, i64 0, i64 0 }, ptr %a860 - store { ptr, i64, i64 } %t863, ptr %a864 - call void @finch_str_drop(ptr %a864) - br label %endif3069 -endif3069: - %t865 = load ptr, ptr %a1 - %t866 = load { ptr, i64, i64 }, ptr %a860 - %t867 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 11 - %t868 = load i64, ptr %a857 - %t869 = load { ptr, i64, i64 }, ptr %t867 - %t870 = extractvalue { ptr, i64, i64 } %t869, 1 - %t871 = icmp uge i64 %t868, %t870 - br i1 %t871, label %range3070, label %inrange3071 -range3070: - call void @finch_panic_index(ptr @.str.1965, i64 1247, i64 %t868, i64 %t870) - unreachable -inrange3071: - %t872 = extractvalue { ptr, i64, i64 } %t869, 0 - %t873 = getelementptr inbounds { ptr, i64, i64 }, ptr %t872, i64 %t868 - %t874 = load { ptr, i64, i64 }, ptr %t873 - store { ptr, i64, i64 } %t866, ptr %a876 - store { ptr, i64, i64 } %t874, ptr %a877 - call void @finch_str_concat(ptr %a875, ptr %a876, ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a875 - store { ptr, i64, i64 } %t878, ptr %a880 - store { ptr, i64, i64 } { ptr @.str.1966, i64 2, i64 0 }, ptr %a881 - call void @finch_str_concat(ptr %a879, ptr %a880, ptr %a881) - store { ptr, i64, i64 } %t878, ptr %a882 - call void @finch_str_drop(ptr %a882) - %t883 = load { ptr, i64, i64 }, ptr %a879 - call void @finch.gen.bufText(ptr %t865, { ptr, i64, i64 } { ptr @.str.1964, i64 4, i64 0 }, { ptr, i64, i64 } %t883) - store { ptr, i64, i64 } %t883, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load ptr, ptr %a1 - %t886 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } { ptr @.str.1967, i64 23, i64 0 }, ptr %a888 - store { ptr, i64, i64 } %t886, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - %t890 = load { ptr, i64, i64 }, ptr %a887 - store { ptr, i64, i64 } %t890, ptr %a892 - store { ptr, i64, i64 } { ptr @.str.1968, i64 21, i64 0 }, ptr %a893 - call void @finch_str_concat(ptr %a891, ptr %a892, ptr %a893) - store { ptr, i64, i64 } %t890, ptr %a894 - call void @finch_str_drop(ptr %a894) - %t895 = load { ptr, i64, i64 }, ptr %a891 - %t896 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 3 - %t897 = load i64, ptr %a857 - %t898 = load { ptr, i64, i64 }, ptr %t896 - %t899 = extractvalue { ptr, i64, i64 } %t898, 1 - %t900 = icmp uge i64 %t897, %t899 - br i1 %t900, label %range3072, label %inrange3073 -range3072: - call void @finch_panic_index(ptr @.str.1969, i64 1248, i64 %t897, i64 %t899) - unreachable -inrange3073: - %t901 = extractvalue { ptr, i64, i64 } %t898, 0 - %t902 = getelementptr inbounds i64, ptr %t901, i64 %t897 - %t903 = load i64, ptr %t902 - call void @finch_str_from_int(ptr %a904, i64 %t903) - %t905 = load { ptr, i64, i64 }, ptr %a904 - store { ptr, i64, i64 } %t895, ptr %a907 - store { ptr, i64, i64 } %t905, ptr %a908 - call void @finch_str_concat(ptr %a906, ptr %a907, ptr %a908) - store { ptr, i64, i64 } %t895, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t905, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load { ptr, i64, i64 }, ptr %a906 - %t912 = call { ptr, i64, i64 } @finch.gen.op(ptr %t885, { ptr, i64, i64 } %t911) - store { ptr, i64, i64 } %t911, ptr %a913 - call void @finch_str_drop(ptr %a913) - store { ptr, i64, i64 } %t912, ptr %a914 - %t915 = load ptr, ptr %a1 - %t916 = load ptr, ptr %a1 - %t917 = load ptr, ptr %a1 - %t918 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t919 = load i64, ptr %a857 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3074, label %inrange3075 -range3074: - call void @finch_panic_index(ptr @.str.1971, i64 1249, i64 %t919, i64 %t921) - unreachable -inrange3075: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.ast.Type, ptr %t923, i64 %t919 - %t925 = load %S.ast.Type, ptr %t924 - %t926 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t917, %S.ast.Type %t925) - %t927 = load { ptr, i64, i64 }, ptr %a914 - %t928 = call { ptr, i64, i64 } @finch.gen.load(ptr %t916, { ptr, i64, i64 } %t926, { ptr, i64, i64 } %t927) - store { ptr, i64, i64 } %t926, ptr %a929 - call void @finch_str_drop(ptr %a929) - %t930 = getelementptr inbounds %S.gen.StructDef, ptr %a841, i32 0, i32 12 - %t931 = load i64, ptr %a857 - %t932 = load { ptr, i64, i64 }, ptr %t930 - %t933 = extractvalue { ptr, i64, i64 } %t932, 1 - %t934 = icmp uge i64 %t931, %t933 - br i1 %t934, label %range3076, label %inrange3077 -range3076: - call void @finch_panic_index(ptr @.str.1972, i64 1249, i64 %t931, i64 %t933) - unreachable -inrange3077: - %t935 = extractvalue { ptr, i64, i64 } %t932, 0 - %t936 = getelementptr inbounds %S.ast.Type, ptr %t935, i64 %t931 - %t937 = load %S.ast.Type, ptr %t936 - call void @finch.gen.emitFormat(ptr %t915, { ptr, i64, i64 } { ptr @.str.1970, i64 4, i64 0 }, { ptr, i64, i64 } %t928, %S.ast.Type %t937, i1 true) - store { ptr, i64, i64 } %t928, ptr %a938 - call void @finch_str_drop(ptr %a938) - call void @finch_str_drop(ptr %a914) - call void @finch_str_drop(ptr %a860) - br label %for.step3065 -for.step3065: - %t939 = load i64, ptr %a857 - %t940 = add i64 %t939, 1 - store i64 %t940, ptr %a857 - br label %for.cond3063 -for.end3066: - %t941 = load ptr, ptr %a1 - call void @finch.gen.bufText(ptr %t941, { ptr, i64, i64 } { ptr @.str.1973, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.1974, i64 1, i64 0 }) - call void @finch_str_drop(ptr %a845) - call void @finch.drop.S_gen_StructDef(ptr %a841) - br label %endif3010 -endif3010: - br label %endif2993 -endif2993: - br label %endif2968 -endif2968: - br label %endif2959 -endif2959: - %t942 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t942, { ptr, i64, i64 } { ptr @.str.1975, i64 8, i64 0 }) - %t943 = load ptr, ptr %a1 - %t944 = load %S.gen.Saved, ptr %a32 - %t945 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.1976, i64 21, i64 0 }, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t949, ptr %a951 - store { ptr, i64, i64 } { ptr @.str.1977, i64 18, i64 0 }, ptr %a952 - call void @finch_str_concat(ptr %a950, ptr %a951, ptr %a952) - store { ptr, i64, i64 } %t949, ptr %a953 - call void @finch_str_drop(ptr %a953) - %t954 = load { ptr, i64, i64 }, ptr %a950 - call void @finch.gen.endHelper(ptr %t943, %S.gen.Saved %t944, { ptr, i64, i64 } %t954) - store { ptr, i64, i64 } %t954, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t956 -} - -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3078, label %endif3080 -then3078: - %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 -endif3080: - %t18 = load i64, ptr %a10 - %t19 = load i64, ptr %a7 - %t20 = icmp slt i64 %t18, %t19 - br i1 %t20, label %then3081, label %endif3083 -then3081: - %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.1978, i64 6, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.1979, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.1980, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a4 - %t48 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t46, %S.ast.Type %t47) - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - %t55 = call { ptr, i64, i64 } @finch.gen.op(ptr %t21, { ptr, i64, i64 } %t54) - store { ptr, i64, i64 } %t54, ptr %a56 - call void @finch_str_drop(ptr %a56) - ret { ptr, i64, i64 } %t55 -endif3083: - %t57 = load %S.ast.Type, ptr %a3 - %t58 = call i1 @finch.gen.isSigned(%S.ast.Type %t57) - br i1 %t58, label %then3084, label %endif3086 -then3084: - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load %S.ast.Type, ptr %a3 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t60, %S.ast.Type %t61) - store { ptr, i64, i64 } { ptr @.str.1981, i64 5, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.1982, i64 1, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.1983, i64 4, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t78, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Type, ptr %a4 - %t86 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t84, %S.ast.Type %t85) - store { ptr, i64, i64 } %t83, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t83, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a87 - %t93 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a94 - call void @finch_str_drop(ptr %a94) - ret { ptr, i64, i64 } %t93 -endif3086: - %t95 = load ptr, ptr %a1 - %t96 = load ptr, ptr %a1 - %t97 = load %S.ast.Type, ptr %a3 - %t98 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t97) - store { ptr, i64, i64 } { ptr @.str.1984, i64 5, i64 0 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.1985, i64 1, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.1986, i64 4, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load ptr, ptr %a1 - %t121 = load %S.ast.Type, ptr %a4 - %t122 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t120, %S.ast.Type %t121) - store { ptr, i64, i64 } %t119, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t119, ptr %a126 - call void @finch_str_drop(ptr %a126) - store { ptr, i64, i64 } %t122, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a123 - %t129 = call { ptr, i64, i64 } @finch.gen.op(ptr %t95, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - ret { ptr, i64, i64 } %t129 -} - -define internal { ptr, i64, i64 } @finch.gen.floatCast(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3087, label %endif3089 -then3087: - %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 -endif3089: - %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 %then3090, label %endif3092 -then3090: - %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.1987, i64 6, i64 0 }, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.1988, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t35, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t35, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.1989, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.ast.Type, ptr %a4 - %t49 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t47, %S.ast.Type %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - %t56 = call { ptr, i64, i64 } @finch.gen.op(ptr %t22, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a57 - call void @finch_str_drop(ptr %a57) - ret { ptr, i64, i64 } %t56 -endif3092: - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Type, ptr %a3 - %t61 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t59, %S.ast.Type %t60) - store { ptr, i64, i64 } { ptr @.str.1990, i64 8, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.1991, i64 1, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.1992, i64 4, i64 0 }, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load ptr, ptr %a1 - %t84 = load %S.ast.Type, ptr %a4 - %t85 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t83, %S.ast.Type %t84) - store { ptr, i64, i64 } %t82, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t82, ptr %a89 - call void @finch_str_drop(ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a86 - %t92 = call { ptr, i64, i64 } @finch.gen.op(ptr %t58, { ptr, i64, i64 } %t91) - store { ptr, i64, i64 } %t91, ptr %a93 - call void @finch_str_drop(ptr %a93) - ret { ptr, i64, i64 } %t92 -} - -define internal { ptr, i64, i64 } @finch.gen.intToFloat(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - %t5 = load %S.ast.Type, ptr %a3 - %t6 = call i1 @finch.gen.isSigned(%S.ast.Type %t5) - br i1 %t6, label %then3093, label %endif3095 -then3093: - %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.1993, i64 7, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.1994, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t20, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.1995, i64 4, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = load %S.ast.Type, ptr %a4 - %t34 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t32, %S.ast.Type %t33) - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t7, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret { ptr, i64, i64 } %t41 -endif3095: - %t43 = load ptr, ptr %a1 - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Type, ptr %a3 - %t46 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t44, %S.ast.Type %t45) - store { ptr, i64, i64 } { ptr @.str.1996, i64 7, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.1997, i64 1, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t56, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.1998, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - store { ptr, i64, i64 } %t67, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t67, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - %t77 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a78 - call void @finch_str_drop(ptr %a78) - ret { ptr, i64, i64 } %t77 -} - -define internal void @finch.copy.S_gen_Val(ptr %dst, ptr %src) { -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 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a175 = alloca %S.ast.Type, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a203 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca %S.ast.Type, align 16 - %a233 = alloca %S.ast.Type, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca %S.gen.Val, align 16 - %a348 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.gen.Val %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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 %then3096, label %endif3098 -then3096: - %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 -endif3098: - %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.1999, 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.from3099 -logic.from3099: - br i1 %t20, label %logic.rhs3100, label %logic.end3101 -logic.rhs3100: - %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.2000, 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.rend3102 -logic.rend3102: - br label %logic.end3101 -logic.end3101: - %t27 = phi i1 [ false, %logic.from3099 ], [ %t26, %logic.rend3102 ] - br i1 %t27, label %then3103, label %endif3105 -then3103: - %t28 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.2001, 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 -endif3105: - %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.2002, 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.from3106 -logic.from3106: - br i1 %t40, label %logic.rhs3107, label %logic.end3108 -logic.rhs3107: - %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.2003, 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.rend3109 -logic.rend3109: - br label %logic.end3108 -logic.end3108: - %t47 = phi i1 [ false, %logic.from3106 ], [ %t46, %logic.rend3109 ] - br label %logic.from3110 -logic.from3110: - br i1 %t47, label %logic.rhs3111, label %logic.end3112 -logic.rhs3111: - %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.from3113 -logic.from3113: - br i1 %t52, label %logic.end3115, label %logic.rhs3114 -logic.rhs3114: - %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.rend3116 -logic.rend3116: - br label %logic.end3115 -logic.end3115: - %t57 = phi i1 [ true, %logic.from3113 ], [ %t56, %logic.rend3116 ] - br label %logic.rend3117 -logic.rend3117: - br label %logic.end3112 -logic.end3112: - %t58 = phi i1 [ false, %logic.from3110 ], [ %t57, %logic.rend3117 ] - br i1 %t58, label %then3118, label %endif3120 -then3118: - %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 -endif3120: - %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.from3121 -logic.from3121: - br i1 %t72, label %logic.rhs3122, label %logic.end3123 -logic.rhs3122: - %t73 = load %S.ast.Type, ptr %a3 - %t74 = call i1 @finch.gen.isInt(%S.ast.Type %t73) - br label %logic.rend3124 -logic.rend3124: - br label %logic.end3123 -logic.end3123: - %t75 = phi i1 [ false, %logic.from3121 ], [ %t74, %logic.rend3124 ] - br i1 %t75, label %then3125, label %endif3127 -then3125: - %t76 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t77 = load i1, ptr %t76 - br label %logic.from3128 -logic.from3128: - br i1 %t77, label %logic.rhs3129, label %logic.end3130 -logic.rhs3129: - %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.rend3131 -logic.rend3131: - br label %logic.end3130 -logic.end3130: - %t84 = phi i1 [ false, %logic.from3128 ], [ %t83, %logic.rend3131 ] - br i1 %t84, label %then3132, label %endif3134 -then3132: - %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 -endif3134: - %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 %then3135, label %endif3137 -then3135: - %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 -endif3137: - %t114 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t115 = load i1, ptr %t114 - br i1 %t115, label %then3138, label %endif3140 -then3138: - %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.2004, 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.2005, i64 16, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load %S.ast.Type, ptr %a3 - %t130 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } %t136) - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif3140 -endif3140: - br label %endif3127 -endif3127: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t139 = load %S.ast.Type, ptr %t138 - %t140 = call i1 @finch.gen.isInt(%S.ast.Type %t139) - br label %logic.from3141 -logic.from3141: - br i1 %t140, label %logic.rhs3142, label %logic.end3143 -logic.rhs3142: - %t141 = load %S.ast.Type, ptr %a3 - %t142 = call i1 @finch.gen.isFloat(%S.ast.Type %t141) - br label %logic.rend3144 -logic.rend3144: - br label %logic.end3143 -logic.end3143: - %t143 = phi i1 [ false, %logic.from3141 ], [ %t142, %logic.rend3144 ] - br i1 %t143, label %then3145, label %endif3147 -then3145: - %t144 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t145 = load i1, ptr %t144 - br label %logic.from3148 -logic.from3148: - br i1 %t145, label %logic.rhs3149, label %logic.end3150 -logic.rhs3149: - %t146 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.2006, i64 5, i64 0 }, ptr %a149 - %t150 = call i32 @finch_str_eq(ptr %a148, ptr %a149) - %t151 = icmp ne i32 %t150, 0 - br label %logic.rend3151 -logic.rend3151: - br label %logic.end3150 -logic.end3150: - %t152 = phi i1 [ false, %logic.from3148 ], [ %t151, %logic.rend3151 ] - br i1 %t152, label %then3152, label %endif3154 -then3152: - %t153 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t154 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.2007, i64 2, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t158, 0 - %t160 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - %t164 = insertvalue %S.gen.Val %t159, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 3 - ret %S.gen.Val %t165 -endif3154: - %t166 = load ptr, ptr %a1 - %t167 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = load %S.ast.Type, ptr %a3 - %t172 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t166, { ptr, i64, i64 } %t168, %S.ast.Type %t170, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t174, ptr %a175 - call void @finch.copy.S_ast_Type(ptr %a176, ptr %a175) - %t177 = load %S.ast.Type, ptr %a176 - %t178 = insertvalue %S.gen.Val %t173, %S.ast.Type %t177, 1 - ret %S.gen.Val %t178 -endif3147: - %t179 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i32 0, i32 0 - %t181 = load { ptr, i64, i64 }, ptr %t180 - store { ptr, i64, i64 } %t181, ptr %a182 - store { ptr, i64, i64 } { ptr @.str.2008, i64 3, i64 0 }, ptr %a183 - %t184 = call i32 @finch_str_eq(ptr %a182, ptr %a183) - %t185 = icmp ne i32 %t184, 0 - br label %logic.from3155 -logic.from3155: - br i1 %t185, label %logic.rhs3156, label %logic.end3157 -logic.rhs3156: - %t186 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t187, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.2009, i64 5, i64 0 }, ptr %a189 - %t190 = call i32 @finch_str_eq(ptr %a188, ptr %a189) - %t191 = icmp ne i32 %t190, 0 - br label %logic.rend3158 -logic.rend3158: - br label %logic.end3157 -logic.end3157: - %t192 = phi i1 [ false, %logic.from3155 ], [ %t191, %logic.rend3158 ] - br i1 %t192, label %then3159, label %endif3161 -then3159: - %t193 = load ptr, ptr %a1 - %t194 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t197 = load %S.ast.Type, ptr %t196 - %t198 = load %S.ast.Type, ptr %a3 - %t199 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t193, { ptr, i64, i64 } %t195, %S.ast.Type %t197, %S.ast.Type %t198) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t199, 0 - %t201 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t201, ptr %a202 - call void @finch.copy.S_ast_Type(ptr %a203, ptr %a202) - %t204 = load %S.ast.Type, ptr %a203 - %t205 = insertvalue %S.gen.Val %t200, %S.ast.Type %t204, 1 - ret %S.gen.Val %t205 -endif3161: - %t206 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t207 = getelementptr inbounds %S.ast.Type, ptr %t206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.2010, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br label %logic.from3162 -logic.from3162: - br i1 %t212, label %logic.rhs3163, label %logic.end3164 -logic.rhs3163: - %t213 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } { ptr @.str.2011, i64 3, i64 0 }, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br label %logic.rend3165 -logic.rend3165: - br label %logic.end3164 -logic.end3164: - %t219 = phi i1 [ false, %logic.from3162 ], [ %t218, %logic.rend3165 ] - br label %logic.from3166 -logic.from3166: - br i1 %t219, label %logic.rhs3167, label %logic.end3168 -logic.rhs3167: - %t220 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 3 - %t221 = load i1, ptr %t220 - br label %logic.rend3169 -logic.rend3169: - br label %logic.end3168 -logic.end3168: - %t222 = phi i1 [ false, %logic.from3166 ], [ %t221, %logic.rend3169 ] - br i1 %t222, label %then3170, label %endif3172 -then3170: - %t223 = load ptr, ptr %a1 - %t224 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - %t226 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t227 = load %S.ast.Type, ptr %t226 - %t228 = load %S.ast.Type, ptr %a3 - %t229 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t223, { ptr, i64, i64 } %t225, %S.ast.Type %t227, %S.ast.Type %t228) - %t230 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t231 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t231, ptr %a232 - call void @finch.copy.S_ast_Type(ptr %a233, ptr %a232) - %t234 = load %S.ast.Type, ptr %a233 - %t235 = insertvalue %S.gen.Val %t230, %S.ast.Type %t234, 1 - ret %S.gen.Val %t235 -endif3172: - %t236 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.2012, i64 9, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a237 - %t241 = load %S.ast.Type, ptr %a3 - %t242 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t241) - store { ptr, i64, i64 } %t240, ptr %a244 - store { ptr, i64, i64 } %t242, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t240, ptr %a246 - call void @finch_str_drop(ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2013, i64 14, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t253, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t253, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a263 - %t264 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t265 = load %S.ast.Type, ptr %t264 - %t266 = call i1 @finch.gen.isNumber(%S.ast.Type %t265) - br label %logic.from3173 -logic.from3173: - br i1 %t266, label %logic.rhs3174, label %logic.end3175 -logic.rhs3174: - %t267 = load %S.ast.Type, ptr %a3 - %t268 = call i1 @finch.gen.isNumber(%S.ast.Type %t267) - br label %logic.rend3176 -logic.rend3176: - br label %logic.end3175 -logic.end3175: - %t269 = phi i1 [ false, %logic.from3173 ], [ %t268, %logic.rend3176 ] - br i1 %t269, label %then3177, label %endif3179 -then3177: - %t270 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t270, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.2014, i64 6, i64 0 }, ptr %a273 - call void @finch_str_concat(ptr %a271, ptr %a272, ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a271 - %t275 = load %S.ast.Type, ptr %a3 - %t276 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t275) - store { ptr, i64, i64 } %t274, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t274, ptr %a280 - call void @finch_str_drop(ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t282, ptr %a284 - store { ptr, i64, i64 } { ptr @.str.2015, i64 16, i64 0 }, ptr %a285 - call void @finch_str_concat(ptr %a283, ptr %a284, ptr %a285) - store { ptr, i64, i64 } %t282, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a283 - %t288 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t287, ptr %a263 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t291 = load %S.ast.Type, ptr %t290 - %t292 = call i1 @finch.gen.isFloat(%S.ast.Type %t291) - br label %logic.from3180 -logic.from3180: - br i1 %t292, label %logic.rhs3181, label %logic.end3182 -logic.rhs3181: - %t293 = load %S.ast.Type, ptr %a3 - %t294 = call i1 @finch.gen.isInt(%S.ast.Type %t293) - br label %logic.rend3183 -logic.rend3183: - br label %logic.end3182 -logic.end3182: - %t295 = phi i1 [ false, %logic.from3180 ], [ %t294, %logic.rend3183 ] - br i1 %t295, label %then3184, label %endif3186 -then3184: - %t296 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.2016, i64 26, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t300, ptr %a263 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif3186 -endif3186: - %t303 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.2017, i64 1, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t307, ptr %a263 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif3179 -endif3179: - %t310 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.2018, i64 3, i64 0 }, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br label %logic.from3187 -logic.from3187: - br i1 %t315, label %logic.rhs3188, label %logic.end3189 -logic.rhs3188: - %t316 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t317 = load %S.ast.Type, ptr %t316 - %t318 = call i1 @finch.gen.isNumber(%S.ast.Type %t317) - br label %logic.from3190 -logic.from3190: - br i1 %t318, label %logic.end3192, label %logic.rhs3191 -logic.rhs3191: - %t319 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t320 = getelementptr inbounds %S.ast.Type, ptr %t319, i32 0, i32 0 - %t321 = load { ptr, i64, i64 }, ptr %t320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.2019, i64 4, i64 0 }, ptr %a323 - %t324 = call i32 @finch_str_eq(ptr %a322, ptr %a323) - %t325 = icmp ne i32 %t324, 0 - br label %logic.rend3193 -logic.rend3193: - br label %logic.end3192 -logic.end3192: - %t326 = phi i1 [ true, %logic.from3190 ], [ %t325, %logic.rend3193 ] - br label %logic.from3194 -logic.from3194: - br i1 %t326, label %logic.end3196, label %logic.rhs3195 -logic.rhs3195: - %t327 = getelementptr inbounds %S.gen.Val, ptr %a2, i32 0, i32 1 - %t328 = getelementptr inbounds %S.ast.Type, ptr %t327, i32 0, i32 0 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t329, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.2020, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_eq(ptr %a330, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.rend3197 -logic.rend3197: - br label %logic.end3196 -logic.end3196: - %t334 = phi i1 [ true, %logic.from3194 ], [ %t333, %logic.rend3197 ] - br label %logic.rend3198 -logic.rend3198: - br label %logic.end3189 -logic.end3189: - %t335 = phi i1 [ false, %logic.from3187 ], [ %t334, %logic.rend3198 ] - br i1 %t335, label %then3199, label %endif3201 -then3199: - %t336 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.2021, i64 34, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a337 - %t341 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t340, ptr %a263 - store { ptr, i64, i64 } %t341, ptr %a342 - call void @finch_str_drop(ptr %a342) - br label %endif3201 -endif3201: - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Node, ptr %a4 - %t345 = load { ptr, i64, i64 }, ptr %a263 - call void @finch.gen.fail(ptr %t343, %S.ast.Node %t344, { ptr, i64, i64 } %t345) - %t346 = load %S.gen.Val, ptr %a2 - store %S.gen.Val %t346, ptr %a347 - call void @finch.copy.S_gen_Val(ptr %a348, ptr %a347) - %t349 = load %S.gen.Val, ptr %a348 - call void @finch_str_drop(ptr %a263) - ret %S.gen.Val %t349 -} - -define internal i64 @finch.gen.lookup(ptr %p0, { ptr, i64, i64 } %p1) { -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 %panic3202, label %ok3203 -panic3202: - call void @finch_panic(ptr @.str.2022, i64 1346, ptr @.str.2023) - unreachable -ok3203: - %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.cond3204 -for.cond3204: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body3205, label %for.end3207 -for.body3205: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic3208, label %ok3209 -panic3208: - call void @finch_panic(ptr @.str.2024, i64 1347, ptr @.str.2025) - unreachable -ok3209: - %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 %panic3210, label %ok3211 -panic3210: - call void @finch_panic(ptr @.str.2026, i64 1348, ptr @.str.2027) - unreachable -ok3211: - %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 %range3212, label %inrange3213 -range3212: - call void @finch_panic_index(ptr @.str.2028, i64 1348, i64 %t23, i64 %t25) - unreachable -inrange3213: - %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.cond3214 -for.cond3214: - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, %t31 - br i1 %t34, label %for.body3215, label %for.end3217 -for.body3215: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic3218, label %ok3219 -panic3218: - call void @finch_panic(ptr @.str.2029, i64 1349, ptr @.str.2030) - unreachable -ok3219: - %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 %range3220, label %inrange3221 -range3220: - call void @finch_panic_index(ptr @.str.2031, i64 1349, i64 %t38, i64 %t40) - unreachable -inrange3221: - %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 %range3222, label %inrange3223 -range3222: - call void @finch_panic_index(ptr @.str.2032, i64 1349, i64 %t45, i64 %t47) - unreachable -inrange3223: - %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 %then3224, label %endif3226 -then3224: - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic3227, label %ok3228 -panic3227: - call void @finch_panic(ptr @.str.2033, i64 1350, ptr @.str.2034) - unreachable -ok3228: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 44 - %t61 = load i1, ptr %t60 - br label %logic.from3229 -logic.from3229: - br i1 %t61, label %logic.rhs3230, label %logic.end3231 -logic.rhs3230: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic3232, label %ok3233 -panic3232: - call void @finch_panic(ptr @.str.2035, i64 1350, ptr @.str.2036) - unreachable -ok3233: - %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 %range3234, label %inrange3235 -range3234: - call void @finch_panic_index(ptr @.str.2037, i64 1350, i64 %t65, i64 %t67) - unreachable -inrange3235: - %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 %range3236, label %inrange3237 -range3236: - call void @finch_panic_index(ptr @.str.2038, i64 1350, i64 %t72, i64 %t74) - unreachable -inrange3237: - %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 %panic3238, label %ok3239 -panic3238: - call void @finch_panic(ptr @.str.2039, i64 1350, ptr @.str.2040) - unreachable -ok3239: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 45 - %t83 = load i64, ptr %t82 - %t84 = icmp sge i64 %t79, %t83 - br label %logic.rend3240 -logic.rend3240: - br label %logic.end3231 -logic.end3231: - %t85 = phi i1 [ false, %logic.from3229 ], [ %t84, %logic.rend3240 ] - br i1 %t85, label %then3241, label %endif3243 -then3241: - br label %for.step3216 -endif3243: - %t86 = load i64, ptr %a19 - %t87 = mul i64 %t86, 100000 - %t88 = load i64, ptr %a32 - %t89 = add i64 %t87, %t88 - ret i64 %t89 -endif3226: - br label %for.step3216 -for.step3216: - %t90 = load i64, ptr %a32 - %t91 = add i64 %t90, 1 - store i64 %t91, ptr %a32 - br label %for.cond3214 -for.end3217: - br label %for.step3206 -for.step3206: - %t92 = load i64, ptr %a8 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a8 - br label %for.cond3204 -for.end3207: - 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 7 - %t9 = getelementptr inbounds %S.gen.Var, ptr %src, i32 0, i32 7 - 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 %panic3244, label %ok3245 -panic3244: - call void @finch_panic(ptr @.str.2041, i64 1361, ptr @.str.2042) - unreachable -ok3245: - %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 %range3246, label %inrange3247 -range3246: - call void @finch_panic_index(ptr @.str.2043, i64 1361, i64 %t7, i64 %t9) - unreachable -inrange3247: - %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 %range3248, label %inrange3249 -range3248: - call void @finch_panic_index(ptr @.str.2044, i64 1361, i64 %t15, i64 %t17) - unreachable -inrange3249: - %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 %panic3250, label %ok3251 -panic3250: - call void @finch_panic(ptr @.str.2045, i64 1365, ptr @.str.2046) - unreachable -ok3251: - %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.cond3252 -for.cond3252: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t8 - br i1 %t11, label %for.body3253, label %for.end3255 -for.body3253: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic3256, label %ok3257 -panic3256: - call void @finch_panic(ptr @.str.2047, i64 1366, ptr @.str.2048) - unreachable -ok3257: - %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 %range3258, label %inrange3259 -range3258: - call void @finch_panic_index(ptr @.str.2049, i64 1366, i64 %t15, i64 %t17) - unreachable -inrange3259: - %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.from3260 -logic.from3260: - br i1 %t27, label %logic.rhs3261, label %logic.end3262 -logic.rhs3261: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic3263, label %ok3264 -panic3263: - call void @finch_panic(ptr @.str.2050, i64 1366, ptr @.str.2051) - unreachable -ok3264: - %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 %range3265, label %inrange3266 -range3265: - call void @finch_panic_index(ptr @.str.2052, i64 1366, i64 %t31, i64 %t33) - unreachable -inrange3266: - %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.rend3267 -logic.rend3267: - br label %logic.end3262 -logic.end3262: - %t44 = phi i1 [ false, %logic.from3260 ], [ %t43, %logic.rend3267 ] - br label %logic.from3268 -logic.from3268: - br i1 %t44, label %logic.rhs3269, label %logic.end3270 -logic.rhs3269: - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic3271, label %ok3272 -panic3271: - call void @finch_panic(ptr @.str.2053, i64 1366, ptr @.str.2054) - unreachable -ok3272: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 15 - %t48 = load i64, ptr %a9 - %t49 = load { ptr, i64, i64 }, ptr %t47 - %t50 = extractvalue { ptr, i64, i64 } %t49, 1 - %t51 = icmp uge i64 %t48, %t50 - br i1 %t51, label %range3273, label %inrange3274 -range3273: - call void @finch_panic_index(ptr @.str.2055, i64 1366, i64 %t48, i64 %t50) - unreachable -inrange3274: - %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.rend3275 -logic.rend3275: - br label %logic.end3270 -logic.end3270: - %t58 = phi i1 [ false, %logic.from3268 ], [ %t57, %logic.rend3275 ] - br i1 %t58, label %then3276, label %endif3278 -then3276: - %t59 = load i64, ptr %a9 - ret i64 %t59 -endif3278: - br label %for.step3254 -for.step3254: - %t60 = load i64, ptr %a9 - %t61 = add i64 %t60, 1 - store i64 %t61, ptr %a9 - br label %for.cond3252 -for.end3255: - 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 %panic3279, label %ok3280 -panic3279: - call void @finch_panic(ptr @.str.2056, i64 1374, ptr @.str.2057) - unreachable -ok3280: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 15 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t7, i32 0, i32 1 - %t9 = load i64, ptr %t8 - store i64 0, ptr %a10 - br label %for.cond3281 -for.cond3281: - %t11 = load i64, ptr %a10 - %t12 = icmp slt i64 %t11, %t9 - br i1 %t12, label %for.body3282, label %for.end3284 -for.body3282: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic3285, label %ok3286 -panic3285: - call void @finch_panic(ptr @.str.2058, i64 1375, ptr @.str.2059) - unreachable -ok3286: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 15 - %t16 = load i64, ptr %a10 - %t17 = load { ptr, i64, i64 }, ptr %t15 - %t18 = extractvalue { ptr, i64, i64 } %t17, 1 - %t19 = icmp uge i64 %t16, %t18 - br i1 %t19, label %range3287, label %inrange3288 -range3287: - call void @finch_panic_index(ptr @.str.2060, i64 1375, i64 %t16, i64 %t18) - unreachable -inrange3288: - %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.from3289 -logic.from3289: - br i1 %t28, label %logic.rhs3290, label %logic.end3291 -logic.rhs3290: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3292, label %ok3293 -panic3292: - call void @finch_panic(ptr @.str.2061, i64 1375, ptr @.str.2062) - unreachable -ok3293: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 15 - %t32 = load i64, ptr %a10 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3294, label %inrange3295 -range3294: - call void @finch_panic_index(ptr @.str.2063, i64 1375, i64 %t32, i64 %t34) - unreachable -inrange3295: - %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.rend3296 -logic.rend3296: - br label %logic.end3291 -logic.end3291: - %t45 = phi i1 [ false, %logic.from3289 ], [ %t44, %logic.rend3296 ] - br label %logic.from3297 -logic.from3297: - br i1 %t45, label %logic.rhs3298, label %logic.end3299 -logic.rhs3298: - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic3300, label %ok3301 -panic3300: - call void @finch_panic(ptr @.str.2064, i64 1375, ptr @.str.2065) - unreachable -ok3301: - %t48 = getelementptr inbounds %S.gen.Gen, ptr %t46, i32 0, i32 15 - %t49 = load i64, ptr %a10 - %t50 = load { ptr, i64, i64 }, ptr %t48 - %t51 = extractvalue { ptr, i64, i64 } %t50, 1 - %t52 = icmp uge i64 %t49, %t51 - br i1 %t52, label %range3302, label %inrange3303 -range3302: - call void @finch_panic_index(ptr @.str.2066, i64 1375, i64 %t49, i64 %t51) - unreachable -inrange3303: - %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.rend3304 -logic.rend3304: - br label %logic.end3299 -logic.end3299: - %t62 = phi i1 [ false, %logic.from3297 ], [ %t61, %logic.rend3304 ] - br i1 %t62, label %then3305, label %endif3307 -then3305: - %t63 = load i64, ptr %a10 - ret i64 %t63 -endif3307: - br label %for.step3283 -for.step3283: - %t64 = load i64, ptr %a10 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a10 - br label %for.cond3281 -for.end3284: - 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.2067, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2068, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.2069, i64 3, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.2070, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.2071, i64 4, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.2072, i64 5, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.2073, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.2074, i64 9, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.2075, i64 10, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.2076, i64 11, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.2077, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.2078, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.2079, i64 5, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.2080, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.2081, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.2082, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.2083, i64 11, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.2084, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.2085, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.2086, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.2087, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.2088, i64 2, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.2089, i64 3, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 23 - store { ptr, i64, i64 } { ptr @.str.2090, i64 3, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 24 - store { ptr, i64, i64 } { ptr @.str.2091, i64 3, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 25 - store { ptr, i64, i64 } { ptr @.str.2092, i64 3, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 26 - store { ptr, i64, i64 } { ptr @.str.2093, i64 3, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 27 - store { ptr, i64, i64 } { ptr @.str.2094, 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.cond3308 -find.cond3308: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t39 - br i1 %t43, label %find.body3309, label %find.end3312 -find.body3309: - %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.hit3310, label %find.next3311 -find.hit3310: - store i64 %t42, ptr %a38 - br label %find.end3312 -find.next3311: - %t50 = add i64 %t42, 1 - store i64 %t50, ptr %a41 - br label %find.cond3308 -find.end3312: - %t51 = load i64, ptr %a38 - %t52 = icmp sge i64 %t51, 0 - call void @finch.drop.arr_str(ptr %a35) - ret i1 %t52 -} - -define internal { ptr, i64, i64 } @finch.gen.addVar(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4, i1 %p5, i1 %p6) { -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 - %a7 = alloca i1, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a93 = alloca i1, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca %S.ast.Type, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca %S.ast.Node, align 16 - %a238 = alloca %S.ast.Node, align 16 - %a240 = alloca %S.ast.Node, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %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 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } %p4, ptr %a5 - store i1 %p5, ptr %a6 - store i1 %p6, ptr %a7 - %t8 = load ptr, ptr %a1 - %t9 = load { ptr, i64, i64 }, ptr %a3 - %t10 = call i64 @finch.gen.lookup(ptr %t8, { ptr, i64, i64 } %t9) - %t11 = icmp sge i64 %t10, 0 - br label %logic.from3313 -logic.from3313: - br i1 %t11, label %logic.rhs3314, label %logic.end3315 -logic.rhs3314: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.2095, i64 3, i64 0 }, ptr %a14 - %t15 = call i32 @finch_str_eq(ptr %a13, ptr %a14) - %t16 = icmp eq i32 %t15, 0 - br label %logic.rend3316 -logic.rend3316: - br label %logic.end3315 -logic.end3315: - %t17 = phi i1 [ false, %logic.from3313 ], [ %t16, %logic.rend3316 ] - br i1 %t17, label %then3317, label %endif3319 -then3317: - %t18 = load ptr, ptr %a1 - %t19 = load %S.ast.Node, ptr %a2 - %t20 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2096, i64 18, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2097, i64 21, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t18, %S.ast.Node %t19, { ptr, i64, i64 } %t29) - store { ptr, i64, i64 } %t29, ptr %a30 - call void @finch_str_drop(ptr %a30) - br label %endif3319 -endif3319: - %t31 = load ptr, ptr %a1 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic3320, label %ok3321 -panic3320: - call void @finch_panic(ptr @.str.2098, i64 1393, ptr @.str.2099) - unreachable -ok3321: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 14 - %t35 = load { ptr, i64, i64 }, ptr %t34 - %t36 = load { ptr, i64, i64 }, ptr %a3 - %t37 = call i64 @finch.gen.findFn(ptr %t31, { ptr, i64, i64 } %t35, { ptr, i64, i64 } %t36) - %t38 = icmp sge i64 %t37, 0 - br i1 %t38, label %then3322, label %endif3324 -then3322: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - %t41 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2100, i64 1, i64 0 }, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t45, ptr %a47 - store { ptr, i64, i64 } { ptr @.str.2101, i64 35, i64 0 }, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t45, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t50) - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif3324 -endif3324: - %t52 = load { ptr, i64, i64 }, ptr %a3 - %t53 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t52) - br i1 %t53, label %then3325, label %endif3327 -then3325: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2102, i64 1, i64 0 }, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.2103, i64 38, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } %t65) - store { ptr, i64, i64 } %t65, ptr %a66 - call void @finch_str_drop(ptr %a66) - br label %endif3327 -endif3327: - %t67 = load ptr, ptr %a1 - %t68 = load ptr, ptr %a1 - %t69 = load %S.ast.Type, ptr %a4 - %t70 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t68, %S.ast.Type %t69) - %t71 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t67, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t71, ptr %a73 - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a4 - %t77 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t75, %S.ast.Type %t76) - %t78 = load { ptr, i64, i64 }, ptr %a5 - %t79 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.store(ptr %t74, { ptr, i64, i64 } %t77, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3328, label %ok3329 -panic3328: - call void @finch_panic(ptr @.str.2104, i64 1401, ptr @.str.2105) - unreachable -ok3329: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 10 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - store i64 %t86, ptr %a87 - %t88 = load i1, ptr %a7 - br label %logic.from3330 -logic.from3330: - br i1 %t88, label %logic.rhs3331, label %logic.end3332 -logic.rhs3331: - %t89 = load ptr, ptr %a1 - %t90 = load %S.ast.Type, ptr %a4 - %t91 = call i1 @finch.gen.owning(ptr %t89, %S.ast.Type %t90) - br label %logic.rend3333 -logic.rend3333: - br label %logic.end3332 -logic.end3332: - %t92 = phi i1 [ false, %logic.from3330 ], [ %t91, %logic.rend3333 ] - store i1 %t92, ptr %a93 - %t94 = load i1, ptr %a93 - br i1 %t94, label %then3334, label %endif3336 -then3334: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic3337, label %ok3338 -panic3337: - call void @finch_panic(ptr @.str.2106, i64 1404, ptr @.str.2107) - unreachable -ok3338: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 10 - %t98 = load i64, ptr %a87 - %t99 = load { ptr, i64, i64 }, ptr %t97 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range3339, label %inrange3340 -range3339: - call void @finch_panic_index(ptr @.str.2108, i64 1404, i64 %t98, i64 %t100) - unreachable -inrange3340: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.gen.Scope, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.gen.Scope, ptr %t103, i32 0, i32 3 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = insertvalue %S.gen.Cleanup zeroinitializer, i1 false, 0 - %t107 = load ptr, ptr %a1 - %t108 = icmp eq ptr %t107, null - br i1 %t108, label %panic3341, label %ok3342 -panic3341: - call void @finch_panic(ptr @.str.2109, i64 1404, ptr @.str.2110) - unreachable -ok3342: - %t109 = getelementptr inbounds %S.gen.Gen, ptr %t107, i32 0, i32 10 - %t110 = load i64, ptr %a87 - %t111 = load { ptr, i64, i64 }, ptr %t109 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range3343, label %inrange3344 -range3343: - call void @finch_panic_index(ptr @.str.2111, i64 1404, i64 %t110, i64 %t112) - unreachable -inrange3344: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.gen.Scope, ptr %t114, i64 %t110 - %t116 = getelementptr inbounds %S.gen.Scope, ptr %t115, i32 0, i32 0 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i32 0, i32 1 - %t118 = load i64, ptr %t117 - %t119 = insertvalue %S.gen.Cleanup %t106, i64 %t118, 1 - %t120 = load i64, ptr %t105 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t121, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %t104 - %t123 = getelementptr inbounds %S.gen.Cleanup, ptr %t122, i64 %t120 - store %S.gen.Cleanup %t119, ptr %t123 - store i64 %t121, ptr %t105 - br label %endif3336 -endif3336: - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic3345, label %ok3346 -panic3345: - call void @finch_panic(ptr @.str.2112, i64 1406, ptr @.str.2113) - unreachable -ok3346: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 10 - %t127 = load i64, ptr %a87 - %t128 = load { ptr, i64, i64 }, ptr %t126 - %t129 = extractvalue { ptr, i64, i64 } %t128, 1 - %t130 = icmp uge i64 %t127, %t129 - br i1 %t130, label %range3347, label %inrange3348 -range3347: - call void @finch_panic_index(ptr @.str.2114, i64 1406, i64 %t127, i64 %t129) - unreachable -inrange3348: - %t131 = extractvalue { ptr, i64, i64 } %t128, 0 - %t132 = getelementptr inbounds %S.gen.Scope, ptr %t131, i64 %t127 - %t133 = getelementptr inbounds %S.gen.Scope, ptr %t132, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } %t138, 0 - %t140 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t140, ptr %a141 - call void @finch.copy.S_ast_Type(ptr %a142, ptr %a141) - %t143 = load %S.ast.Type, ptr %a142 - %t144 = insertvalue %S.gen.Var %t139, %S.ast.Type %t143, 1 - %t145 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t145, ptr %a146 - call void @finch_str_copy(ptr %a147, ptr %a146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - %t149 = insertvalue %S.gen.Var %t144, { ptr, i64, i64 } %t148, 2 - %t150 = load i1, ptr %a6 - %t151 = insertvalue %S.gen.Var %t149, i1 %t150, 3 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic3349, label %ok3350 -panic3349: - call void @finch_panic(ptr @.str.2115, i64 1406, ptr @.str.2116) - unreachable -ok3350: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 25 - %t155 = load i64, ptr %t154 - %t156 = insertvalue %S.gen.Var %t151, i64 %t155, 4 - %t157 = load i1, ptr %a93 - %t158 = insertvalue %S.gen.Var %t156, i1 %t157, 5 - %t159 = load ptr, ptr %a1 - %t160 = icmp eq ptr %t159, null - br i1 %t160, label %panic3351, label %ok3352 -panic3351: - call void @finch_panic(ptr @.str.2117, i64 1406, ptr @.str.2118) - unreachable -ok3352: - %t161 = getelementptr inbounds %S.gen.Gen, ptr %t159, i32 0, i32 1 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t163 = load i64, ptr %t162 - %t164 = load { ptr, i64, i64 }, ptr %t161 - %t165 = extractvalue { ptr, i64, i64 } %t164, 1 - %t166 = icmp uge i64 %t163, %t165 - br i1 %t166, label %range3353, label %inrange3354 -range3353: - call void @finch_panic_index(ptr @.str.2119, i64 1406, i64 %t163, i64 %t165) - unreachable -inrange3354: - %t167 = extractvalue { ptr, i64, i64 } %t164, 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i64 %t163 - %t169 = load { ptr, i64, i64 }, ptr %t168 - store { ptr, i64, i64 } %t169, ptr %a170 - call void @finch_str_copy(ptr %a171, ptr %a170) - %t172 = load { ptr, i64, i64 }, ptr %a171 - %t173 = insertvalue %S.gen.Var %t158, { ptr, i64, i64 } %t172, 7 - %t174 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t175 = load i64, ptr %t174 - %t176 = insertvalue %S.gen.Var %t173, i64 %t175, 8 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t178 = load i64, ptr %t177 - %t179 = insertvalue %S.gen.Var %t176, i64 %t178, 9 - %t180 = load i64, ptr %t134 - %t181 = add i64 %t180, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t181, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t182 = load ptr, ptr %t133 - %t183 = getelementptr inbounds %S.gen.Var, ptr %t182, i64 %t180 - store %S.gen.Var %t179, ptr %t183 - store i64 %t181, ptr %t134 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3355, label %ok3356 -panic3355: - call void @finch_panic(ptr @.str.2120, i64 1407, ptr @.str.2121) - unreachable -ok3356: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 25 - %t187 = load i64, ptr %t186 - %t188 = add i64 %t187, 1 - store i64 %t188, ptr %t186 - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a3 - %t192 = load %S.ast.Type, ptr %a4 - %t193 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.gen.dbgVariable(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t191, %S.ast.Type %t192, { ptr, i64, i64 } %t193) - %t194 = load ptr, ptr %a1 - %t195 = icmp eq ptr %t194, null - br i1 %t195, label %panic3357, label %ok3358 -panic3357: - call void @finch_panic(ptr @.str.2122, i64 1409, ptr @.str.2123) - unreachable -ok3358: - %t196 = getelementptr inbounds %S.gen.Gen, ptr %t194, i32 0, i32 28 - %t197 = load i1, ptr %t196 - br label %logic.from3359 -logic.from3359: - br i1 %t197, label %logic.rhs3360, label %logic.end3361 -logic.rhs3360: - %t198 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2124, i64 3, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp eq i32 %t201, 0 - br label %logic.rend3362 -logic.rend3362: - br label %logic.end3361 -logic.end3361: - %t203 = phi i1 [ false, %logic.from3359 ], [ %t202, %logic.rend3362 ] - br label %logic.from3363 -logic.from3363: - br i1 %t203, label %logic.rhs3364, label %logic.end3365 -logic.rhs3364: - %t204 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t204, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.2126, i64 1, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_starts(ptr %a205, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - %t210 = xor i1 %t209, true - br label %logic.rend3366 -logic.rend3366: - br label %logic.end3365 -logic.end3365: - %t211 = phi i1 [ false, %logic.from3363 ], [ %t210, %logic.rend3366 ] - br i1 %t211, label %then3367, label %endif3369 -then3367: - %t212 = load ptr, ptr %a1 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic3370, label %ok3371 -panic3370: - call void @finch_panic(ptr @.str.2127, i64 1410, ptr @.str.2128) - unreachable -ok3371: - %t214 = getelementptr inbounds %S.gen.Gen, ptr %t212, i32 0, i32 0 - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic3372, label %ok3373 -panic3372: - call void @finch_panic(ptr @.str.2129, i64 1410, ptr @.str.2130) - unreachable -ok3373: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 13 - %t218 = getelementptr inbounds %S.gen.FnSig, ptr %t217, i32 0, i32 16 - %t219 = load i64, ptr %t218 - %t220 = load { ptr, i64, i64 }, ptr %t214 - %t221 = extractvalue { ptr, i64, i64 } %t220, 1 - %t222 = icmp uge i64 %t219, %t221 - br i1 %t222, label %range3374, label %inrange3375 -range3374: - call void @finch_panic_index(ptr @.str.2131, i64 1410, i64 %t219, i64 %t221) - unreachable -inrange3375: - %t223 = extractvalue { ptr, i64, i64 } %t220, 0 - %t224 = getelementptr inbounds %S.ast.Program, ptr %t223, i64 %t219 - %t225 = getelementptr inbounds %S.ast.Program, ptr %t224, i32 0, i32 8 - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic3376, label %ok3377 -panic3376: - call void @finch_panic(ptr @.str.2132, i64 1410, ptr @.str.2133) - unreachable -ok3377: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 13 - %t229 = getelementptr inbounds %S.gen.FnSig, ptr %t228, i32 0, i32 17 - %t230 = load i64, ptr %t229 - %t231 = load { ptr, i64, i64 }, ptr %t225 - %t232 = extractvalue { ptr, i64, i64 } %t231, 1 - %t233 = icmp uge i64 %t230, %t232 - br i1 %t233, label %range3378, label %inrange3379 -range3378: - call void @finch_panic_index(ptr @.str.2134, i64 1410, i64 %t230, i64 %t232) - unreachable -inrange3379: - %t234 = extractvalue { ptr, i64, i64 } %t231, 0 - %t235 = getelementptr inbounds %S.ast.Node, ptr %t234, i64 %t230 - %t236 = load %S.ast.Node, ptr %t235 - store %S.ast.Node %t236, ptr %a237 - call void @finch.copy.S_ast_Node(ptr %a238, ptr %a237) - %t239 = load %S.ast.Node, ptr %a238 - store %S.ast.Node %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = icmp eq ptr %t241, null - br i1 %t242, label %panic3380, label %ok3381 -panic3380: - call void @finch_panic(ptr @.str.2135, i64 1411, ptr @.str.2136) - unreachable -ok3381: - %t243 = getelementptr inbounds %S.gen.Gen, ptr %t241, i32 0, i32 29 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2137, i64 3, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.2138, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = load %S.ast.Type, ptr %a4 - %t256 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t255) - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.2139, i64 1, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic3382, label %ok3383 -panic3382: - call void @finch_panic(ptr @.str.2140, i64 1411, ptr @.str.2141) - unreachable -ok3383: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t272 = load i64, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %t270 - %t274 = extractvalue { ptr, i64, i64 } %t273, 1 - %t275 = icmp uge i64 %t272, %t274 - br i1 %t275, label %range3384, label %inrange3385 -range3384: - call void @finch_panic_index(ptr @.str.2142, i64 1411, i64 %t272, i64 %t274) - unreachable -inrange3385: - %t276 = extractvalue { ptr, i64, i64 } %t273, 0 - %t277 = getelementptr inbounds { ptr, i64, i64 }, ptr %t276, i64 %t272 - %t278 = load { ptr, i64, i64 }, ptr %t277 - store { ptr, i64, i64 } %t267, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t267, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.2143, i64 1, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t290 = load i64, ptr %t289 - call void @finch_str_from_int(ptr %a291, i64 %t290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } %t288, ptr %a294 - store { ptr, i64, i64 } %t292, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t288, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t292, ptr %a297 - call void @finch_str_drop(ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a293 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.2144, i64 1, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t305 = load i64, ptr %t304 - call void @finch_str_from_int(ptr %a306, i64 %t305) - %t307 = load { ptr, i64, i64 }, ptr %a306 - store { ptr, i64, i64 } %t303, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t303, ptr %a311 - call void @finch_str_drop(ptr %a311) - store { ptr, i64, i64 } %t307, ptr %a312 - call void @finch_str_drop(ptr %a312) - %t313 = load { ptr, i64, i64 }, ptr %a308 - store { ptr, i64, i64 } %t313, ptr %a315 - store { ptr, i64, i64 } { ptr @.str.2145, i64 1, i64 0 }, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t313, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic3386, label %ok3387 -panic3386: - call void @finch_panic(ptr @.str.2146, i64 1411, ptr @.str.2147) - unreachable -ok3387: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 1 - %t322 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 13 - %t323 = load i64, ptr %t322 - %t324 = load { ptr, i64, i64 }, ptr %t321 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range3388, label %inrange3389 -range3388: - call void @finch_panic_index(ptr @.str.2148, i64 1411, i64 %t323, i64 %t325) - unreachable -inrange3389: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i64 %t323 - %t329 = load { ptr, i64, i64 }, ptr %t328 - store { ptr, i64, i64 } %t318, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t318, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t334, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.2149, i64 1, i64 0 }, ptr %a337 - call void @finch_str_concat(ptr %a335, ptr %a336, ptr %a337) - store { ptr, i64, i64 } %t334, ptr %a338 - call void @finch_str_drop(ptr %a338) - %t339 = load { ptr, i64, i64 }, ptr %a335 - %t340 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 11 - %t341 = load i64, ptr %t340 - call void @finch_str_from_int(ptr %a342, i64 %t341) - %t343 = load { ptr, i64, i64 }, ptr %a342 - store { ptr, i64, i64 } %t339, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t339, ptr %a347 - call void @finch_str_drop(ptr %a347) - store { ptr, i64, i64 } %t343, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t349, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.2150, i64 1, i64 0 }, ptr %a352 - call void @finch_str_concat(ptr %a350, ptr %a351, ptr %a352) - store { ptr, i64, i64 } %t349, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a350 - %t355 = getelementptr inbounds %S.ast.Node, ptr %a240, i32 0, i32 14 - %t356 = load i64, ptr %t355 - call void @finch_str_from_int(ptr %a357, i64 %t356) - %t358 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t354, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - store { ptr, i64, i64 } %t354, ptr %a362 - call void @finch_str_drop(ptr %a362) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a359 - %t365 = load i64, ptr %t244 - %t366 = add i64 %t365, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t366, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t367 = load ptr, ptr %t243 - %t368 = getelementptr inbounds { ptr, i64, i64 }, ptr %t367, i64 %t365 - store { ptr, i64, i64 } %t364, ptr %t368 - store i64 %t366, ptr %t244 - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t372 = load i64, ptr %t371 - %t373 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t374 = load i64, ptr %t373 - %t375 = load %S.ast.Type, ptr %a4 - %t376 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t375) - store { ptr, i64, i64 } { ptr @.str.2151, i64 9, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - store { ptr, i64, i64 } %t376, ptr %a380 - call void @finch_str_drop(ptr %a380) - %t381 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t381, ptr %a383 - store { ptr, i64, i64 } { ptr @.str.2152, i64 1, i64 0 }, ptr %a384 - call void @finch_str_concat(ptr %a382, ptr %a383, ptr %a384) - store { ptr, i64, i64 } %t381, ptr %a385 - call void @finch_str_drop(ptr %a385) - %t386 = load { ptr, i64, i64 }, ptr %a382 - %t387 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t386, ptr %a389 - store { ptr, i64, i64 } %t387, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t386, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - store { ptr, i64, i64 } %t392, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2153, i64 4, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.noteRef(ptr %t369, %S.ast.Node %t370, i64 %t372, i64 %t374, { ptr, i64, i64 } %t397, { ptr, i64, i64 } { ptr @.str.2154, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - call void @finch.drop.S_ast_Node(ptr %a240) - br label %endif3369 -endif3369: - %t399 = load { ptr, i64, i64 }, ptr %a73 - ret { ptr, i64, i64 } %t399 -} - -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 %panic3390, label %ok3391 -panic3390: - call void @finch_panic(ptr @.str.2155, i64 1418, ptr @.str.2156) - unreachable -ok3391: - %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.drop.S_gen_Var(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Var, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_gen_Var(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond3403 -n.cond3403: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body3404, label %n.end3405 -n.body3404: - %t7 = getelementptr inbounds %S.gen.Var, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Var(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond3403 -n.end3405: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Cleanup(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Scope(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_gen_Var(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_int(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_gen_Cleanup(ptr %t4) - ret void -} - -define internal void @finch.gen.popScope(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a24 = alloca %S.gen.Scope, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic3392, label %ok3393 -panic3392: - call void @finch_panic(ptr @.str.2157, i64 1424, ptr @.str.2158) - unreachable -ok3393: - %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 %then3394, label %endif3396 -then3394: - %t7 = load ptr, ptr %a1 - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic3397, label %ok3398 -panic3397: - call void @finch_panic(ptr @.str.2159, i64 1425, ptr @.str.2160) - unreachable -ok3398: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i32 0, i32 1 - %t12 = load i64, ptr %t11 - %t13 = sub i64 %t12, 1 - call void @finch.gen.runCleanups(ptr %t7, i64 %t13) - br label %endif3396 -endif3396: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3399, label %ok3400 -panic3399: - call void @finch_panic(ptr @.str.2161, i64 1427, ptr @.str.2162) - unreachable -ok3400: - %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 %panic3401, label %ok3402 -panic3401: - call void @finch_panic(ptr @.str.2163, i64 1427, ptr @.str.2164) - unreachable -ok3402: - %t20 = sub i64 %t18, 1 - %t21 = load ptr, ptr %t16 - %t22 = getelementptr inbounds %S.gen.Scope, ptr %t21, i64 %t20 - %t23 = load %S.gen.Scope, ptr %t22 - store i64 %t20, ptr %t17 - store %S.gen.Scope %t23, ptr %a24 - call void @finch.drop.S_gen_Scope(ptr %a24) - ret void -} - -define internal void @finch.gen.runCleanups(ptr %p0, i64 %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a15 = alloca i64, align 16 - %a37 = alloca %S.gen.Cleanup, align 16 - %a59 = alloca %S.gen.Var, align 16 - %a60 = alloca %S.gen.Var, align 16 - %a62 = alloca %S.gen.Var, align 16 - %a75 = alloca i1, align 16 - %a80 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic3406, label %ok3407 -panic3406: - call void @finch_panic(ptr @.str.2165, i64 1432, ptr @.str.2166) - unreachable -ok3407: - %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 %range3408, label %inrange3409 -range3408: - call void @finch_panic_index(ptr @.str.2167, i64 1432, i64 %t6, i64 %t8) - unreachable -inrange3409: - %t10 = extractvalue { ptr, i64, i64 } %t7, 0 - %t11 = getelementptr inbounds %S.gen.Scope, ptr %t10, i64 %t6 - %t12 = getelementptr inbounds %S.gen.Scope, ptr %t11, i32 0, i32 3 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t12, i32 0, i32 1 - %t14 = load i64, ptr %t13 - store i64 %t14, ptr %a15 - br label %while.cond3410 -while.cond3410: - %t16 = load i64, ptr %a15 - %t17 = icmp sgt i64 %t16, 0 - br i1 %t17, label %while.body3411, label %while.end3412 -while.body3411: - %t18 = load i64, ptr %a15 - %t19 = sub i64 %t18, 1 - store i64 %t19, ptr %a15 - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic3413, label %ok3414 -panic3413: - call void @finch_panic(ptr @.str.2168, i64 1435, ptr @.str.2169) - unreachable -ok3414: - %t22 = getelementptr inbounds %S.gen.Gen, ptr %t20, i32 0, i32 10 - %t23 = load i64, ptr %a2 - %t24 = load { ptr, i64, i64 }, ptr %t22 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 %t23, %t25 - br i1 %t26, label %range3415, label %inrange3416 -range3415: - call void @finch_panic_index(ptr @.str.2170, i64 1435, i64 %t23, i64 %t25) - unreachable -inrange3416: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.gen.Scope, ptr %t27, i64 %t23 - %t29 = getelementptr inbounds %S.gen.Scope, ptr %t28, i32 0, i32 3 - %t30 = load i64, ptr %a15 - %t31 = load { ptr, i64, i64 }, ptr %t29 - %t32 = extractvalue { ptr, i64, i64 } %t31, 1 - %t33 = icmp uge i64 %t30, %t32 - br i1 %t33, label %range3417, label %inrange3418 -range3417: - call void @finch_panic_index(ptr @.str.2171, i64 1435, i64 %t30, i64 %t32) - unreachable -inrange3418: - %t34 = extractvalue { ptr, i64, i64 } %t31, 0 - %t35 = getelementptr inbounds %S.gen.Cleanup, ptr %t34, i64 %t30 - %t36 = load %S.gen.Cleanup, ptr %t35 - store %S.gen.Cleanup %t36, ptr %a37 - %t38 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 0 - %t39 = load i1, ptr %t38 - %t40 = xor i1 %t39, true - br i1 %t40, label %then3419, label %endif3421 -then3419: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic3422, label %ok3423 -panic3422: - call void @finch_panic(ptr @.str.2172, i64 1437, ptr @.str.2173) - unreachable -ok3423: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 10 - %t44 = load i64, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %t43 - %t46 = extractvalue { ptr, i64, i64 } %t45, 1 - %t47 = icmp uge i64 %t44, %t46 - br i1 %t47, label %range3424, label %inrange3425 -range3424: - call void @finch_panic_index(ptr @.str.2174, i64 1437, i64 %t44, i64 %t46) - unreachable -inrange3425: - %t48 = extractvalue { ptr, i64, i64 } %t45, 0 - %t49 = getelementptr inbounds %S.gen.Scope, ptr %t48, i64 %t44 - %t50 = getelementptr inbounds %S.gen.Scope, ptr %t49, i32 0, i32 0 - %t51 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = load { ptr, i64, i64 }, ptr %t50 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 %t52, %t54 - br i1 %t55, label %range3426, label %inrange3427 -range3426: - call void @finch_panic_index(ptr @.str.2175, i64 1437, i64 %t52, i64 %t54) - unreachable -inrange3427: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds %S.gen.Var, ptr %t56, i64 %t52 - %t58 = load %S.gen.Var, ptr %t57 - store %S.gen.Var %t58, ptr %a59 - call void @finch.copy.S_gen_Var(ptr %a60, ptr %a59) - %t61 = load %S.gen.Var, ptr %a60 - store %S.gen.Var %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 6 - %t64 = load i1, ptr %t63 - %t65 = xor i1 %t64, true - br i1 %t65, label %then3428, label %endif3430 -then3428: - %t66 = load ptr, ptr %a1 - %t67 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 2 - %t68 = load { ptr, i64, i64 }, ptr %t67 - %t69 = getelementptr inbounds %S.gen.Var, ptr %a62, i32 0, i32 1 - %t70 = load %S.ast.Type, ptr %t69 - call void @finch.gen.dropAt(ptr %t66, { ptr, i64, i64 } %t68, %S.ast.Type %t70) - br label %endif3430 -endif3430: - call void @finch.drop.S_gen_Var(ptr %a62) - br label %while.cond3410 -endif3421: - %t71 = load ptr, ptr %a1 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic3431, label %ok3432 -panic3431: - call void @finch_panic(ptr @.str.2176, i64 1443, ptr @.str.2177) - unreachable -ok3432: - %t73 = getelementptr inbounds %S.gen.Gen, ptr %t71, i32 0, i32 44 - %t74 = load i1, ptr %t73 - store i1 %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic3433, label %ok3434 -panic3433: - call void @finch_panic(ptr @.str.2178, i64 1444, ptr @.str.2179) - unreachable -ok3434: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 45 - %t79 = load i64, ptr %t78 - store i64 %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic3435, label %ok3436 -panic3435: - call void @finch_panic(ptr @.str.2180, i64 1445, ptr @.str.2181) - unreachable -ok3436: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 44 - store i1 true, ptr %t83 - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic3437, label %ok3438 -panic3437: - call void @finch_panic(ptr @.str.2182, i64 1446, ptr @.str.2183) - unreachable -ok3438: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 10 - %t87 = load i64, ptr %a2 - %t88 = load { ptr, i64, i64 }, ptr %t86 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 %t87, %t89 - br i1 %t90, label %range3439, label %inrange3440 -range3439: - call void @finch_panic_index(ptr @.str.2184, i64 1446, i64 %t87, i64 %t89) - unreachable -inrange3440: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.gen.Scope, ptr %t91, i64 %t87 - %t93 = getelementptr inbounds %S.gen.Scope, ptr %t92, i32 0, i32 2 - %t94 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t95 = load i64, ptr %t94 - %t96 = load { ptr, i64, i64 }, ptr %t93 - %t97 = extractvalue { ptr, i64, i64 } %t96, 1 - %t98 = icmp uge i64 %t95, %t97 - br i1 %t98, label %range3441, label %inrange3442 -range3441: - call void @finch_panic_index(ptr @.str.2185, i64 1446, i64 %t95, i64 %t97) - unreachable -inrange3442: - %t99 = extractvalue { ptr, i64, i64 } %t96, 0 - %t100 = getelementptr inbounds i64, ptr %t99, i64 %t95 - %t101 = load i64, ptr %t100 - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3443, label %ok3444 -panic3443: - call void @finch_panic(ptr @.str.2186, i64 1446, ptr @.str.2187) - unreachable -ok3444: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 45 - store i64 %t101, ptr %t104 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic3445, label %ok3446 -panic3445: - call void @finch_panic(ptr @.str.2188, i64 1447, ptr @.str.2189) - unreachable -ok3446: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 46 - %t108 = load i64, ptr %t107 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %t107 - %t110 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t110) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic3447, label %ok3448 -panic3447: - call void @finch_panic(ptr @.str.2190, i64 1449, ptr @.str.2191) - unreachable -ok3448: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 10 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range3449, label %inrange3450 -range3449: - call void @finch_panic_index(ptr @.str.2192, i64 1449, i64 %t115, i64 %t117) - unreachable -inrange3450: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.Scope, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.Scope, ptr %t120, i32 0, i32 1 - %t122 = getelementptr inbounds %S.gen.Cleanup, ptr %a37, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = load { ptr, i64, i64 }, ptr %t121 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 %t123, %t125 - br i1 %t126, label %range3451, label %inrange3452 -range3451: - call void @finch_panic_index(ptr @.str.2193, i64 1449, i64 %t123, i64 %t125) - unreachable -inrange3452: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds %S.ast.Node, ptr %t127, i64 %t123 - %t129 = load %S.ast.Node, ptr %t128 - call void @finch.gen.stmt(ptr %t111, %S.ast.Node %t129) - %t130 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t130) - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic3453, label %ok3454 -panic3453: - call void @finch_panic(ptr @.str.2194, i64 1451, ptr @.str.2195) - unreachable -ok3454: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 46 - %t134 = load i64, ptr %t133 - %t135 = sub i64 %t134, 1 - store i64 %t135, ptr %t133 - %t136 = load i1, ptr %a75 - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic3455, label %ok3456 -panic3455: - call void @finch_panic(ptr @.str.2196, i64 1452, ptr @.str.2197) - unreachable -ok3456: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 44 - store i1 %t136, ptr %t139 - %t140 = load i64, ptr %a80 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic3457, label %ok3458 -panic3457: - call void @finch_panic(ptr @.str.2198, i64 1453, ptr @.str.2199) - unreachable -ok3458: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 45 - store i64 %t140, ptr %t143 - br label %while.cond3410 -while.end3412: - 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 %panic3459, label %ok3460 -panic3459: - call void @finch_panic(ptr @.str.2200, i64 1459, ptr @.str.2201) - unreachable -ok3460: - %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.cond3461 -while.cond3461: - %t9 = load i64, ptr %a8 - %t10 = load i64, ptr %a2 - %t11 = icmp sgt i64 %t9, %t10 - br i1 %t11, label %while.body3462, label %while.end3463 -while.body3462: - %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.runCleanups(ptr %t14, i64 %t15) - br label %while.cond3461 -while.end3463: - 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 - call void @finch.gen.popScope(ptr %t2) - 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.2202, 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 %then3464, label %endif3466 -then3464: - %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 -endif3466: - %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.2203, 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.from3467 -logic.from3467: - br i1 %t18, label %logic.end3469, label %logic.rhs3468 -logic.rhs3468: - %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.2204, 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.rend3470 -logic.rend3470: - br label %logic.end3469 -logic.end3469: - %t25 = phi i1 [ true, %logic.from3467 ], [ %t24, %logic.rend3470 ] - br i1 %t25, label %then3471, label %endif3473 -then3471: - %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 %range3474, label %inrange3475 -range3474: - call void @finch_panic_index(ptr @.str.2205, i64 1477, i64 0, i64 %t28) - unreachable -inrange3475: - %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 -endif3473: - ret { ptr, i64, i64 } { ptr @.str.2206, 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 - %a37 = 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 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca i64, align 16 - %a72 = alloca i64, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = 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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a143 = alloca %S.ast.Node, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t5 = call ptr @finch_alloc(i64 %t4) - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 0 - store { ptr, i64, i64 } { ptr @.str.2207, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 1 - store { ptr, i64, i64 } { ptr @.str.2208, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 2 - store { ptr, i64, i64 } { ptr @.str.2209, i64 6, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 3 - store { ptr, i64, i64 } { ptr @.str.2210, i64 6, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 4 - store { ptr, i64, i64 } { ptr @.str.2211, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 5 - store { ptr, i64, i64 } { ptr @.str.2212, i64 6, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 6 - store { ptr, i64, i64 } { ptr @.str.2213, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 7 - store { ptr, i64, i64 } { ptr @.str.2214, 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.2215, 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.from3476 -logic.from3476: - br i1 %t23, label %logic.rhs3477, label %logic.end3478 -logic.rhs3477: - %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 %range3479, label %inrange3480 -range3479: - call void @finch_panic_index(ptr @.str.2216, i64 1484, i64 0, i64 %t26) - unreachable -inrange3480: - %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 - store { ptr, i64, i64 } %t31, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %logic.rend3481 -logic.rend3481: - br label %logic.end3478 -logic.end3478: - %t38 = phi i1 [ false, %logic.from3476 ], [ %t36, %logic.rend3481 ] - br i1 %t38, label %then3482, label %endif3484 -then3482: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3484: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.2217, i64 6, i64 0 }, ptr %a42 - %t43 = call i32 @finch_str_eq(ptr %a41, ptr %a42) - %t44 = icmp ne i32 %t43, 0 - br label %logic.from3485 -logic.from3485: - br i1 %t44, label %logic.rhs3486, label %logic.end3487 -logic.rhs3486: - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a17, i32 0, i32 1 - %t46 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t45 - %t50 = load ptr, ptr %a17 - store i64 0, ptr %a51 - br label %find.cond3488 -find.cond3488: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body3489, label %find.end3492 -find.body3489: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit3490, label %find.next3491 -find.hit3490: - store i64 %t52, ptr %a48 - br label %find.end3492 -find.next3491: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond3488 -find.end3492: - %t61 = load i64, ptr %a48 - %t62 = icmp sge i64 %t61, 0 - br label %logic.from3493 -logic.from3493: - br i1 %t62, label %logic.end3495, label %logic.rhs3494 -logic.rhs3494: - %t63 = load ptr, ptr %a1 - %t64 = icmp eq ptr %t63, null - br i1 %t64, label %panic3496, label %ok3497 -panic3496: - call void @finch_panic(ptr @.str.2218, i64 1490, ptr @.str.2219) - unreachable -ok3497: - %t65 = getelementptr inbounds %S.gen.Gen, ptr %t63, i32 0, i32 24 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t65, i32 0, i32 1 - %t67 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store i64 -1, ptr %a69 - %t70 = load i64, ptr %t66 - %t71 = load ptr, ptr %t65 - store i64 0, ptr %a72 - br label %find.cond3498 -find.cond3498: - %t73 = load i64, ptr %a72 - %t74 = icmp slt i64 %t73, %t70 - br i1 %t74, label %find.body3499, label %find.end3502 -find.body3499: - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i64 %t73 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } %t68, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br i1 %t80, label %find.hit3500, label %find.next3501 -find.hit3500: - store i64 %t73, ptr %a69 - br label %find.end3502 -find.next3501: - %t81 = add i64 %t73, 1 - store i64 %t81, ptr %a72 - br label %find.cond3498 -find.end3502: - %t82 = load i64, ptr %a69 - %t83 = icmp sge i64 %t82, 0 - br label %logic.rend3503 -logic.rend3503: - br label %logic.end3495 -logic.end3495: - %t84 = phi i1 [ true, %logic.from3493 ], [ %t83, %logic.rend3503 ] - br label %logic.rend3504 -logic.rend3504: - br label %logic.end3487 -logic.end3487: - %t85 = phi i1 [ false, %logic.from3485 ], [ %t84, %logic.rend3504 ] - br label %logic.from3505 -logic.from3505: - br i1 %t85, label %logic.rhs3506, label %logic.end3507 -logic.rhs3506: - %t86 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range3508, label %inrange3509 -range3508: - call void @finch_panic_index(ptr @.str.2220, i64 1490, i64 0, i64 %t88) - unreachable -inrange3509: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Node, ptr %t90, i64 0 - %t92 = load %S.ast.Node, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t92) - %t94 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } %t94, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - store { ptr, i64, i64 } %t93, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %logic.rend3510 -logic.rend3510: - br label %logic.end3507 -logic.end3507: - %t100 = phi i1 [ false, %logic.from3505 ], [ %t98, %logic.rend3510 ] - br i1 %t100, label %then3511, label %endif3513 -then3511: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3513: - %t101 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2221, i64 4, i64 0 }, ptr %a104 - %t105 = call i32 @finch_str_eq(ptr %a103, ptr %a104) - %t106 = icmp ne i32 %t105, 0 - br label %logic.from3514 -logic.from3514: - br i1 %t106, label %logic.rhs3515, label %logic.end3516 -logic.rhs3515: - %t107 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2222, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend3517 -logic.rend3517: - br label %logic.end3516 -logic.end3516: - %t113 = phi i1 [ false, %logic.from3514 ], [ %t112, %logic.rend3517 ] - br label %logic.from3518 -logic.from3518: - br i1 %t113, label %logic.rhs3519, label %logic.end3520 -logic.rhs3519: - %t114 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp eq i64 %t116, 1 - br label %logic.rend3521 -logic.rend3521: - br label %logic.end3520 -logic.end3520: - %t118 = phi i1 [ false, %logic.from3518 ], [ %t117, %logic.rend3521 ] - br label %logic.from3522 -logic.from3522: - br i1 %t118, label %logic.rhs3523, label %logic.end3524 -logic.rhs3523: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 0, %t121 - br i1 %t122, label %range3525, label %inrange3526 -range3525: - call void @finch_panic_index(ptr @.str.2223, i64 1493, i64 0, i64 %t121) - unreachable -inrange3526: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds %S.ast.Node, ptr %t123, i64 0 - %t125 = load %S.ast.Node, ptr %t124 - %t126 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t125) - %t127 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } %t127, ptr %a129 - %t130 = call i32 @finch_str_eq(ptr %a128, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - br label %logic.rend3527 -logic.rend3527: - br label %logic.end3524 -logic.end3524: - %t133 = phi i1 [ false, %logic.from3522 ], [ %t131, %logic.rend3527 ] - br i1 %t133, label %then3528, label %endif3530 -then3528: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3530: - %t134 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - store i64 0, ptr %a135 - br label %each.cond3531 -each.cond3531: - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = load i64, ptr %a135 - %t139 = icmp slt i64 %t138, %t137 - br i1 %t139, label %each.body3532, label %each.end3534 -each.body3532: - %t140 = load ptr, ptr %t134 - %t141 = getelementptr inbounds %S.ast.Node, ptr %t140, i64 %t138 - %t142 = load %S.ast.Node, ptr %t141 - store %S.ast.Node %t142, ptr %a143 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a2 - %t146 = load %S.ast.Node, ptr %a143 - %t147 = call i1 @finch.gen.mutates(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Node %t146) - br i1 %t147, label %then3535, label %endif3537 -then3535: - call void @finch.drop.arr_str(ptr %a17) - ret i1 true -endif3537: - br label %each.step3533 -each.step3533: - %t148 = load i64, ptr %a135 - %t149 = add i64 %t148, 1 - store i64 %t149, ptr %a135 - br label %each.cond3531 -each.end3534: - call void @finch.drop.arr_str(ptr %a17) - 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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a61 = alloca %S.ast.Node, align 16 - %a62 = alloca %S.ast.Node, align 16 - %a64 = alloca %S.ast.Node, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca i64, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca i64, align 16 - %a224 = alloca %S.ast.Node, align 16 - %a225 = alloca %S.ast.Node, align 16 - %a227 = alloca %S.ast.Node, align 16 - %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 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca %S.gen.SumDef, align 16 - %a278 = alloca i64, align 16 - %a280 = alloca i64, align 16 - %a288 = alloca %S.ast.Node, align 16 - %a293 = alloca i64, align 16 - %a296 = alloca i64, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca %S.gen.SumDef, align 16 - %a374 = alloca %S.gen.SumDef, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = 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 - %a427 = alloca %S.gen.EnumDef, align 16 - %a428 = alloca i64, align 16 - %a430 = alloca i64, align 16 - %a438 = alloca %S.ast.Node, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca i64, align 16 - %a454 = alloca i64, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca i64, align 16 - %a498 = alloca i64, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca %S.gen.EnumDef, align 16 - %a563 = alloca %S.gen.EnumDef, align 16 - %a579 = alloca i64, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca i64, align 16 - %a629 = alloca i64, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca i64, align 16 - %a683 = alloca %S.ast.Node, align 16 - %a684 = alloca %S.ast.Node, align 16 - %a686 = alloca %S.ast.Node, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = 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 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca i1, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca i64, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = 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 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a907 = alloca { ptr, i64, i64 }, align 16 - %a908 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a929 = alloca i64, align 16 - %a932 = alloca i64, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a969 = 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 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1006 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1009 = 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 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca %S.gen.FnSig, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1072 = 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 - %a1085 = 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 - %a1090 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1096 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca { ptr, i64, i64 }, align 16 - %a1102 = 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 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca %S.ast.Type, align 16 - %a1126 = alloca i64, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1158 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1223 = alloca %S.gen.FnSig, align 16 - %a1224 = alloca %S.gen.FnSig, align 16 - %a1234 = alloca i1, align 16 - %a1241 = alloca i64, align 16 - %a1307 = alloca %S.ast.Node, align 16 - %a1308 = alloca %S.ast.Node, align 16 - %a1310 = alloca %S.ast.Node, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1363 = alloca i64, align 16 - %a1376 = alloca %S.gen.Template, align 16 - %a1377 = alloca %S.gen.Template, align 16 - %a1379 = alloca %S.gen.Template, align 16 - %a1407 = alloca %S.ast.Node, align 16 - %a1408 = alloca %S.ast.Node, align 16 - %a1410 = alloca %S.ast.Node, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca i64, align 16 - %a1494 = alloca %S.ast.Node, align 16 - %a1495 = alloca %S.ast.Node, align 16 - %a1497 = alloca %S.ast.Node, align 16 - %a1509 = alloca %S.ast.Node, align 16 - %a1510 = alloca %S.ast.Node, align 16 - %a1512 = alloca %S.ast.Node, align 16 - %a1525 = alloca i64, align 16 - %a1545 = alloca %S.ast.Type, align 16 - %a1546 = alloca %S.ast.Type, align 16 - %a1548 = 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 %panic3538, label %ok3539 -panic3538: - call void @finch_panic(ptr @.str.2224, i64 1507, ptr @.str.2225) - unreachable -ok3539: - %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.cond3540 -for.cond3540: - %t8 = load i64, ptr %a7 - %t9 = icmp slt i64 %t8, %t6 - br i1 %t9, label %for.body3541, label %for.end3543 -for.body3541: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic3544, label %ok3545 -panic3544: - call void @finch_panic(ptr @.str.2226, i64 1508, ptr @.str.2227) - unreachable -ok3545: - %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 %range3546, label %inrange3547 -range3546: - call void @finch_panic_index(ptr @.str.2228, i64 1508, i64 %t13, i64 %t15) - unreachable -inrange3547: - %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 %panic3548, label %ok3549 -panic3548: - call void @finch_panic(ptr @.str.2229, i64 1508, ptr @.str.2230) - unreachable -ok3549: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 14 - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_copy(ptr %a25, ptr %a24) - %t26 = load { ptr, i64, i64 }, ptr %a25 - %t27 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t26, ptr %t23 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic3550, label %ok3551 -panic3550: - call void @finch_panic(ptr @.str.2231, i64 1509, ptr @.str.2232) - unreachable -ok3551: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 0 - %t32 = load i64, ptr %a7 - %t33 = load { ptr, i64, i64 }, ptr %t31 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 %t32, %t34 - br i1 %t35, label %range3552, label %inrange3553 -range3552: - call void @finch_panic_index(ptr @.str.2233, i64 1509, i64 %t32, i64 %t34) - unreachable -inrange3553: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Program, ptr %t36, i64 %t32 - %t38 = getelementptr inbounds %S.ast.Program, ptr %t37, i32 0, i32 6 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t38, i32 0, i32 1 - %t40 = load i64, ptr %t39 - store i64 0, ptr %a41 - br label %for.cond3554 -for.cond3554: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body3555, label %for.end3557 -for.body3555: - %t44 = load ptr, ptr %a1 - %t45 = icmp eq ptr %t44, null - br i1 %t45, label %panic3558, label %ok3559 -panic3558: - call void @finch_panic(ptr @.str.2234, i64 1510, ptr @.str.2235) - unreachable -ok3559: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 0 - %t47 = load i64, ptr %a7 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range3560, label %inrange3561 -range3560: - call void @finch_panic_index(ptr @.str.2236, i64 1510, i64 %t47, i64 %t49) - unreachable -inrange3561: - %t51 = extractvalue { ptr, i64, i64 } %t48, 0 - %t52 = getelementptr inbounds %S.ast.Program, ptr %t51, i64 %t47 - %t53 = getelementptr inbounds %S.ast.Program, ptr %t52, i32 0, i32 6 - %t54 = load i64, ptr %a41 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range3562, label %inrange3563 -range3562: - call void @finch_panic_index(ptr @.str.2237, i64 1510, i64 %t54, i64 %t56) - unreachable -inrange3563: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - store %S.ast.Node %t60, ptr %a61 - call void @finch.copy.S_ast_Node(ptr %a62, ptr %a61) - %t63 = load %S.ast.Node, ptr %a62 - store %S.ast.Node %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = icmp eq ptr %t66, null - br i1 %t67, label %panic3564, label %ok3565 -panic3564: - call void @finch_panic(ptr @.str.2238, i64 1511, ptr @.str.2239) - unreachable -ok3565: - %t68 = getelementptr inbounds %S.gen.Gen, ptr %t66, i32 0, i32 14 - %t69 = load { ptr, i64, i64 }, ptr %t68 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = call i64 @finch.gen.findStruct(ptr %t65, { ptr, i64, i64 } %t69, { ptr, i64, i64 } %t71) - %t73 = icmp sge i64 %t72, 0 - br label %logic.from3566 -logic.from3566: - br i1 %t73, label %logic.end3568, label %logic.rhs3567 -logic.rhs3567: - %t74 = load ptr, ptr %a1 - %t75 = load ptr, ptr %a1 - %t76 = icmp eq ptr %t75, null - br i1 %t76, label %panic3569, label %ok3570 -panic3569: - call void @finch_panic(ptr @.str.2240, i64 1511, ptr @.str.2241) - unreachable -ok3570: - %t77 = getelementptr inbounds %S.gen.Gen, ptr %t75, i32 0, i32 14 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t80 = load { ptr, i64, i64 }, ptr %t79 - %t81 = call i64 @finch.gen.findTemplate(ptr %t74, { ptr, i64, i64 } %t78, { ptr, i64, i64 } %t80, { ptr, i64, i64 } { ptr @.str.2242, i64 0, i64 0 }, i1 true) - %t82 = icmp sge i64 %t81, 0 - br label %logic.rend3571 -logic.rend3571: - br label %logic.end3568 -logic.end3568: - %t83 = phi i1 [ true, %logic.from3566 ], [ %t82, %logic.rend3571 ] - br i1 %t83, label %then3572, label %endif3574 -then3572: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a64 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.2243, i64 12, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2244, i64 18, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t84, %S.ast.Node %t85, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif3574 -endif3574: - %t98 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = icmp sgt i64 %t100, 0 - br i1 %t101, label %then3575, label %endif3577 -then3575: - %t102 = load ptr, ptr %a1 - %t103 = icmp eq ptr %t102, null - br i1 %t103, label %panic3578, label %ok3579 -panic3578: - call void @finch_panic(ptr @.str.2245, i64 1516, ptr @.str.2246) - unreachable -ok3579: - %t104 = getelementptr inbounds %S.gen.Gen, ptr %t102, i32 0, i32 17 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t106 = load ptr, ptr %a1 - %t107 = icmp eq ptr %t106, null - br i1 %t107, label %panic3580, label %ok3581 -panic3580: - call void @finch_panic(ptr @.str.2247, i64 1516, ptr @.str.2248) - unreachable -ok3581: - %t108 = getelementptr inbounds %S.gen.Gen, ptr %t106, i32 0, i32 14 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a110 - call void @finch_str_copy(ptr %a111, ptr %a110) - %t112 = load { ptr, i64, i64 }, ptr %a111 - %t113 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t112, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_copy(ptr %a117, ptr %a116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - %t119 = insertvalue %S.gen.Template %t113, { ptr, i64, i64 } %t118, 1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 3 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } %t121, ptr %a122 - call void @finch.copy.arr_str(ptr %a123, ptr %a122) - %t124 = load { ptr, i64, i64 }, ptr %a123 - %t125 = insertvalue %S.gen.Template %t119, { ptr, i64, i64 } %t124, 3 - %t126 = load i64, ptr %a7 - %t127 = insertvalue %S.gen.Template %t125, i64 %t126, 4 - %t128 = load i64, ptr %a41 - %t129 = insertvalue %S.gen.Template %t127, i64 %t128, 5 - %t130 = insertvalue %S.gen.Template %t129, i1 true, 6 - %t131 = load i64, ptr %t105 - %t132 = add i64 %t131, 1 - call void @finch_arr_reserve(ptr %t104, i64 %t132, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t133 = load ptr, ptr %t104 - %t134 = getelementptr inbounds %S.gen.Template, ptr %t133, i64 %t131 - store %S.gen.Template %t130, ptr %t134 - store i64 %t132, ptr %t105 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -endif3577: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic3582, label %ok3583 -panic3582: - call void @finch_panic(ptr @.str.2249, i64 1519, ptr @.str.2250) - unreachable -ok3583: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 16 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic3584, label %ok3585 -panic3584: - call void @finch_panic(ptr @.str.2251, i64 1519, ptr @.str.2252) - unreachable -ok3585: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 14 - %t142 = load { ptr, i64, i64 }, ptr %t141 - store { ptr, i64, i64 } %t142, ptr %a143 - call void @finch_str_copy(ptr %a144, ptr %a143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a64, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_copy(ptr %a150, ptr %a149) - %t151 = load { ptr, i64, i64 }, ptr %a150 - %t152 = insertvalue %S.gen.StructDef %t146, { ptr, i64, i64 } %t151, 1 - %t153 = load i64, ptr %a7 - %t154 = insertvalue %S.gen.StructDef %t152, i64 %t153, 13 - %t155 = load i64, ptr %a41 - %t156 = insertvalue %S.gen.StructDef %t154, i64 %t155, 14 - %t157 = load i64, ptr %t138 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t137, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t137 - %t160 = getelementptr inbounds %S.gen.StructDef, ptr %t159, i64 %t157 - store %S.gen.StructDef %t156, ptr %t160 - store i64 %t158, ptr %t138 - call void @finch.drop.S_ast_Node(ptr %a64) - br label %for.step3556 -for.step3556: - %t161 = load i64, ptr %a41 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a41 - br label %for.cond3554 -for.end3557: - br label %for.step3542 -for.step3542: - %t163 = load i64, ptr %a7 - %t164 = add i64 %t163, 1 - store i64 %t164, ptr %a7 - br label %for.cond3540 -for.end3543: - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic3586, label %ok3587 -panic3586: - call void @finch_panic(ptr @.str.2253, i64 1522, ptr @.str.2254) - unreachable -ok3587: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 0 - %t168 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t169 = load i64, ptr %t168 - store i64 0, ptr %a170 - br label %for.cond3588 -for.cond3588: - %t171 = load i64, ptr %a170 - %t172 = icmp slt i64 %t171, %t169 - br i1 %t172, label %for.body3589, label %for.end3591 -for.body3589: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic3592, label %ok3593 -panic3592: - call void @finch_panic(ptr @.str.2255, i64 1523, ptr @.str.2256) - unreachable -ok3593: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 0 - %t176 = load i64, ptr %a170 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range3594, label %inrange3595 -range3594: - call void @finch_panic_index(ptr @.str.2257, i64 1523, i64 %t176, i64 %t178) - unreachable -inrange3595: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.ast.Program, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.ast.Program, ptr %t181, i32 0, i32 0 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = load ptr, ptr %a1 - %t185 = icmp eq ptr %t184, null - br i1 %t185, label %panic3596, label %ok3597 -panic3596: - call void @finch_panic(ptr @.str.2258, i64 1523, ptr @.str.2259) - unreachable -ok3597: - %t186 = getelementptr inbounds %S.gen.Gen, ptr %t184, i32 0, i32 14 - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_copy(ptr %a188, ptr %a187) - %t189 = load { ptr, i64, i64 }, ptr %a188 - %t190 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } %t189, ptr %t186 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - %t193 = icmp eq ptr %t192, null - br i1 %t193, label %panic3598, label %ok3599 -panic3598: - call void @finch_panic(ptr @.str.2260, i64 1524, ptr @.str.2261) - unreachable -ok3599: - %t194 = getelementptr inbounds %S.gen.Gen, ptr %t192, i32 0, i32 0 - %t195 = load i64, ptr %a170 - %t196 = load { ptr, i64, i64 }, ptr %t194 - %t197 = extractvalue { ptr, i64, i64 } %t196, 1 - %t198 = icmp uge i64 %t195, %t197 - br i1 %t198, label %range3600, label %inrange3601 -range3600: - call void @finch_panic_index(ptr @.str.2262, i64 1524, i64 %t195, i64 %t197) - unreachable -inrange3601: - %t199 = extractvalue { ptr, i64, i64 } %t196, 0 - %t200 = getelementptr inbounds %S.ast.Program, ptr %t199, i64 %t195 - %t201 = getelementptr inbounds %S.ast.Program, ptr %t200, i32 0, i32 7 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i32 0, i32 1 - %t203 = load i64, ptr %t202 - store i64 0, ptr %a204 - br label %for.cond3602 -for.cond3602: - %t205 = load i64, ptr %a204 - %t206 = icmp slt i64 %t205, %t203 - br i1 %t206, label %for.body3603, label %for.end3605 -for.body3603: - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic3606, label %ok3607 -panic3606: - call void @finch_panic(ptr @.str.2263, i64 1525, ptr @.str.2264) - unreachable -ok3607: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 0 - %t210 = load i64, ptr %a170 - %t211 = load { ptr, i64, i64 }, ptr %t209 - %t212 = extractvalue { ptr, i64, i64 } %t211, 1 - %t213 = icmp uge i64 %t210, %t212 - br i1 %t213, label %range3608, label %inrange3609 -range3608: - call void @finch_panic_index(ptr @.str.2265, i64 1525, i64 %t210, i64 %t212) - unreachable -inrange3609: - %t214 = extractvalue { ptr, i64, i64 } %t211, 0 - %t215 = getelementptr inbounds %S.ast.Program, ptr %t214, i64 %t210 - %t216 = getelementptr inbounds %S.ast.Program, ptr %t215, i32 0, i32 7 - %t217 = load i64, ptr %a204 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range3610, label %inrange3611 -range3610: - call void @finch_panic_index(ptr @.str.2266, i64 1525, i64 %t217, i64 %t219) - unreachable -inrange3611: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.ast.Node, ptr %t221, i64 %t217 - %t223 = load %S.ast.Node, ptr %t222 - store %S.ast.Node %t223, ptr %a224 - call void @finch.copy.S_ast_Node(ptr %a225, ptr %a224) - %t226 = load %S.ast.Node, ptr %a225 - store %S.ast.Node %t226, ptr %a227 - %t228 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 6 - %t229 = load i1, ptr %t228 - br i1 %t229, label %then3612, label %endif3614 -then3612: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic3615, label %ok3616 -panic3615: - call void @finch_panic(ptr @.str.2267, i64 1527, ptr @.str.2268) - unreachable -ok3616: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 14 - %t234 = load { ptr, i64, i64 }, ptr %t233 - %t235 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t236 = load { ptr, i64, i64 }, ptr %t235 - %t237 = call i64 @finch.gen.findEnum(ptr %t230, { ptr, i64, i64 } %t234, { ptr, i64, i64 } %t236) - %t238 = icmp sge i64 %t237, 0 - br label %logic.from3617 -logic.from3617: - br i1 %t238, label %logic.end3619, label %logic.rhs3618 -logic.rhs3618: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic3620, label %ok3621 -panic3620: - call void @finch_panic(ptr @.str.2269, i64 1527, ptr @.str.2270) - unreachable -ok3621: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 14 - %t243 = load { ptr, i64, i64 }, ptr %t242 - %t244 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t245 = load { ptr, i64, i64 }, ptr %t244 - %t246 = call i64 @finch.gen.findSum(ptr %t239, { ptr, i64, i64 } %t243, { ptr, i64, i64 } %t245) - %t247 = icmp sge i64 %t246, 0 - br label %logic.rend3622 -logic.rend3622: - br label %logic.end3619 -logic.end3619: - %t248 = phi i1 [ true, %logic.from3617 ], [ %t247, %logic.rend3622 ] - br i1 %t248, label %then3623, label %endif3625 -then3623: - %t249 = load ptr, ptr %a1 - %t250 = load %S.ast.Node, ptr %a227 - %t251 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t252 = load { ptr, i64, i64 }, ptr %t251 - store { ptr, i64, i64 } { ptr @.str.2271, 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 - store { ptr, i64, i64 } %t256, ptr %a258 - store { ptr, i64, i64 } { ptr @.str.2272, i64 18, i64 0 }, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t256, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - call void @finch.gen.fail(ptr %t249, %S.ast.Node %t250, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a262 - call void @finch_str_drop(ptr %a262) - br label %endif3625 -endif3625: - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic3626, label %ok3627 -panic3626: - call void @finch_panic(ptr @.str.2273, i64 1530, ptr @.str.2274) - unreachable -ok3627: - %t265 = getelementptr inbounds %S.gen.Gen, ptr %t263, i32 0, i32 14 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_copy(ptr %a268, ptr %a267) - %t269 = load { ptr, i64, i64 }, ptr %a268 - %t270 = insertvalue %S.gen.SumDef zeroinitializer, { ptr, i64, i64 } %t269, 0 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - call void @finch_str_copy(ptr %a274, ptr %a273) - %t275 = load { ptr, i64, i64 }, ptr %a274 - %t276 = insertvalue %S.gen.SumDef %t270, { ptr, i64, i64 } %t275, 1 - store %S.gen.SumDef %t276, ptr %a277 - store i64 1, ptr %a278 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a280 - br label %each.cond3628 -each.cond3628: - %t281 = getelementptr inbounds { ptr, i64, i64 }, ptr %t279, i32 0, i32 1 - %t282 = load i64, ptr %t281 - %t283 = load i64, ptr %a280 - %t284 = icmp slt i64 %t283, %t282 - br i1 %t284, label %each.body3629, label %each.end3631 -each.body3629: - %t285 = load ptr, ptr %t279 - %t286 = getelementptr inbounds %S.ast.Node, ptr %t285, i64 %t283 - %t287 = load %S.ast.Node, ptr %t286 - store %S.ast.Node %t287, ptr %a288 - %t289 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store i64 -1, ptr %a293 - %t294 = load i64, ptr %t290 - %t295 = load ptr, ptr %t289 - store i64 0, ptr %a296 - br label %find.cond3632 -find.cond3632: - %t297 = load i64, ptr %a296 - %t298 = icmp slt i64 %t297, %t294 - br i1 %t298, label %find.body3633, label %find.end3636 -find.body3633: - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t295, i64 %t297 - %t300 = load { ptr, i64, i64 }, ptr %t299 - store { ptr, i64, i64 } %t300, ptr %a301 - store { ptr, i64, i64 } %t292, ptr %a302 - %t303 = call i32 @finch_str_eq(ptr %a301, ptr %a302) - %t304 = icmp ne i32 %t303, 0 - br i1 %t304, label %find.hit3634, label %find.next3635 -find.hit3634: - store i64 %t297, ptr %a293 - br label %find.end3636 -find.next3635: - %t305 = add i64 %t297, 1 - store i64 %t305, ptr %a296 - br label %find.cond3632 -find.end3636: - %t306 = load i64, ptr %a293 - %t307 = icmp sge i64 %t306, 0 - br i1 %t307, label %then3637, label %endif3639 -then3637: - %t308 = load ptr, ptr %a1 - %t309 = load %S.ast.Node, ptr %a288 - %t310 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } { ptr @.str.2275, i64 9, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2276, i64 17, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t320, ptr %a326 - call void @finch_str_drop(ptr %a326) - %t327 = load { ptr, i64, i64 }, ptr %a323 - store { ptr, i64, i64 } %t327, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.2277, i64 6, i64 0 }, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t327, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.fail(ptr %t308, %S.ast.Node %t309, { ptr, i64, i64 } %t332) - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - br label %endif3639 -endif3639: - %t334 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 2 - %t335 = getelementptr inbounds { ptr, i64, i64 }, ptr %t334, i32 0, i32 1 - %t336 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 1 - %t337 = load { ptr, i64, i64 }, ptr %t336 - store { ptr, i64, i64 } %t337, ptr %a338 - call void @finch_str_copy(ptr %a339, ptr %a338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - %t341 = load i64, ptr %t335 - %t342 = add i64 %t341, 1 - call void @finch_arr_reserve(ptr %t334, i64 %t342, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t343 = load ptr, ptr %t334 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %t343, i64 %t341 - store { ptr, i64, i64 } %t340, ptr %t344 - store i64 %t342, ptr %t335 - %t345 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 3 - %t346 = getelementptr inbounds { ptr, i64, i64 }, ptr %t345, i32 0, i32 1 - %t347 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t348 = getelementptr inbounds { ptr, i64, i64 }, ptr %t347, i32 0, i32 1 - %t349 = load i64, ptr %t348 - %t350 = load i64, ptr %t346 - %t351 = add i64 %t350, 1 - call void @finch_arr_reserve(ptr %t345, i64 %t351, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t352 = load ptr, ptr %t345 - %t353 = getelementptr inbounds i64, ptr %t352, i64 %t350 - store i64 %t349, ptr %t353 - store i64 %t351, ptr %t346 - %t354 = getelementptr inbounds %S.gen.SumDef, ptr %a277, i32 0, i32 4 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i32 0, i32 1 - %t356 = load i64, ptr %a278 - %t357 = load i64, ptr %t355 - %t358 = add i64 %t357, 1 - call void @finch_arr_reserve(ptr %t354, i64 %t358, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t359 = load ptr, ptr %t354 - %t360 = getelementptr inbounds i64, ptr %t359, i64 %t357 - store i64 %t356, ptr %t360 - store i64 %t358, ptr %t355 - %t361 = getelementptr inbounds %S.ast.Node, ptr %a288, i32 0, i32 9 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %t361, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = load i64, ptr %a278 - %t365 = add i64 %t364, %t363 - store i64 %t365, ptr %a278 - br label %each.step3630 -each.step3630: - %t366 = load i64, ptr %a280 - %t367 = add i64 %t366, 1 - store i64 %t367, ptr %a280 - br label %each.cond3628 -each.end3631: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic3640, label %ok3641 -panic3640: - call void @finch_panic(ptr @.str.2278, i64 1541, ptr @.str.2279) - unreachable -ok3641: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 22 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load %S.gen.SumDef, ptr %a277 - store %S.gen.SumDef %t372, ptr %a373 - call void @finch.copy.S_gen_SumDef(ptr %a374, ptr %a373) - %t375 = load %S.gen.SumDef, ptr %a374 - %t376 = load i64, ptr %t371 - %t377 = add i64 %t376, 1 - call void @finch_arr_reserve(ptr %t370, i64 %t377, i64 ptrtoint (ptr getelementptr (%S.gen.SumDef, ptr null, i32 1) to i64)) - %t378 = load ptr, ptr %t370 - %t379 = getelementptr inbounds %S.gen.SumDef, ptr %t378, i64 %t376 - store %S.gen.SumDef %t375, ptr %t379 - store i64 %t377, ptr %t371 - call void @finch.drop.S_gen_SumDef(ptr %a277) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -endif3614: - %t380 = load ptr, ptr %a1 - %t381 = load ptr, ptr %a1 - %t382 = icmp eq ptr %t381, null - br i1 %t382, label %panic3642, label %ok3643 -panic3642: - call void @finch_panic(ptr @.str.2280, i64 1544, ptr @.str.2281) - unreachable -ok3643: - %t383 = getelementptr inbounds %S.gen.Gen, ptr %t381, i32 0, i32 14 - %t384 = load { ptr, i64, i64 }, ptr %t383 - %t385 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t386 = load { ptr, i64, i64 }, ptr %t385 - %t387 = call i64 @finch.gen.findEnum(ptr %t380, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t386) - %t388 = icmp sge i64 %t387, 0 - br label %logic.from3644 -logic.from3644: - br i1 %t388, label %logic.end3646, label %logic.rhs3645 -logic.rhs3645: - %t389 = load ptr, ptr %a1 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic3647, label %ok3648 -panic3647: - call void @finch_panic(ptr @.str.2282, i64 1544, ptr @.str.2283) - unreachable -ok3648: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 14 - %t393 = load { ptr, i64, i64 }, ptr %t392 - %t394 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t395 = load { ptr, i64, i64 }, ptr %t394 - %t396 = call i64 @finch.gen.findStruct(ptr %t389, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t395) - %t397 = icmp sge i64 %t396, 0 - br label %logic.rend3649 -logic.rend3649: - br label %logic.end3646 -logic.end3646: - %t398 = phi i1 [ true, %logic.from3644 ], [ %t397, %logic.rend3649 ] - br i1 %t398, label %then3650, label %endif3652 -then3650: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a227 - %t401 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t402 = load { ptr, i64, i64 }, ptr %t401 - store { ptr, i64, i64 } { ptr @.str.2284, i64 1, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - store { ptr, i64, i64 } %t406, ptr %a408 - store { ptr, i64, i64 } { ptr @.str.2285, i64 18, i64 0 }, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t406, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.fail(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t411) - store { ptr, i64, i64 } %t411, ptr %a412 - call void @finch_str_drop(ptr %a412) - br label %endif3652 -endif3652: - %t413 = load ptr, ptr %a1 - %t414 = icmp eq ptr %t413, null - br i1 %t414, label %panic3653, label %ok3654 -panic3653: - call void @finch_panic(ptr @.str.2286, i64 1547, ptr @.str.2287) - unreachable -ok3654: - %t415 = getelementptr inbounds %S.gen.Gen, ptr %t413, i32 0, i32 14 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - call void @finch_str_copy(ptr %a418, ptr %a417) - %t419 = load { ptr, i64, i64 }, ptr %a418 - %t420 = insertvalue %S.gen.EnumDef zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - call void @finch_str_copy(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = insertvalue %S.gen.EnumDef %t420, { ptr, i64, i64 } %t425, 1 - store %S.gen.EnumDef %t426, ptr %a427 - store i64 0, ptr %a428 - %t429 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 9 - store i64 0, ptr %a430 - br label %each.cond3655 -each.cond3655: - %t431 = getelementptr inbounds { ptr, i64, i64 }, ptr %t429, i32 0, i32 1 - %t432 = load i64, ptr %t431 - %t433 = load i64, ptr %a430 - %t434 = icmp slt i64 %t433, %t432 - br i1 %t434, label %each.body3656, label %each.end3658 -each.body3656: - %t435 = load ptr, ptr %t429 - %t436 = getelementptr inbounds %S.ast.Node, ptr %t435, i64 %t433 - %t437 = load %S.ast.Node, ptr %t436 - store %S.ast.Node %t437, ptr %a438 - %t439 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t440 = getelementptr inbounds { ptr, i64, i64 }, ptr %t439, i32 0, i32 1 - %t441 = load i64, ptr %t440 - %t442 = icmp sgt i64 %t441, 0 - br i1 %t442, label %then3659, label %endif3661 -then3659: - %t443 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 4 - %t444 = load { ptr, i64, i64 }, ptr %t443 - store { ptr, i64, i64 } %t444, ptr %a445 - %t446 = call i64 @finch_str_to_int(ptr %a445, ptr @.str.2288, i64 1551) - store i64 %t446, ptr %a428 - br label %endif3661 -endif3661: - %t447 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t448 = getelementptr inbounds { ptr, i64, i64 }, ptr %t447, i32 0, i32 1 - %t449 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t450 = load { ptr, i64, i64 }, ptr %t449 - store i64 -1, ptr %a451 - %t452 = load i64, ptr %t448 - %t453 = load ptr, ptr %t447 - store i64 0, ptr %a454 - br label %find.cond3662 -find.cond3662: - %t455 = load i64, ptr %a454 - %t456 = icmp slt i64 %t455, %t452 - br i1 %t456, label %find.body3663, label %find.end3666 -find.body3663: - %t457 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t455 - %t458 = load { ptr, i64, i64 }, ptr %t457 - store { ptr, i64, i64 } %t458, ptr %a459 - store { ptr, i64, i64 } %t450, ptr %a460 - %t461 = call i32 @finch_str_eq(ptr %a459, ptr %a460) - %t462 = icmp ne i32 %t461, 0 - br i1 %t462, label %find.hit3664, label %find.next3665 -find.hit3664: - store i64 %t455, ptr %a451 - br label %find.end3666 -find.next3665: - %t463 = add i64 %t455, 1 - store i64 %t463, ptr %a454 - br label %find.cond3662 -find.end3666: - %t464 = load i64, ptr %a451 - %t465 = icmp sge i64 %t464, 0 - br i1 %t465, label %then3667, label %endif3669 -then3667: - %t466 = load ptr, ptr %a1 - %t467 = load %S.ast.Node, ptr %a438 - %t468 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t469 = load { ptr, i64, i64 }, ptr %t468 - store { ptr, i64, i64 } { ptr @.str.2289, i64 9, i64 0 }, ptr %a471 - store { ptr, i64, i64 } %t469, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a470 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.2290, i64 17, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - %t479 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t480 = load { ptr, i64, i64 }, ptr %t479 - store { ptr, i64, i64 } %t478, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t478, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.2291, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - call void @finch.gen.fail(ptr %t466, %S.ast.Node %t467, { ptr, i64, i64 } %t490) - store { ptr, i64, i64 } %t490, ptr %a491 - call void @finch_str_drop(ptr %a491) - br label %endif3669 -endif3669: - %t492 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t492, i32 0, i32 1 - %t494 = load i64, ptr %a428 - store i64 -1, ptr %a495 - %t496 = load i64, ptr %t493 - %t497 = load ptr, ptr %t492 - store i64 0, ptr %a498 - br label %find.cond3670 -find.cond3670: - %t499 = load i64, ptr %a498 - %t500 = icmp slt i64 %t499, %t496 - br i1 %t500, label %find.body3671, label %find.end3674 -find.body3671: - %t501 = getelementptr inbounds i64, ptr %t497, i64 %t499 - %t502 = load i64, ptr %t501 - %t503 = icmp eq i64 %t502, %t494 - br i1 %t503, label %find.hit3672, label %find.next3673 -find.hit3672: - store i64 %t499, ptr %a495 - br label %find.end3674 -find.next3673: - %t504 = add i64 %t499, 1 - store i64 %t504, ptr %a498 - br label %find.cond3670 -find.end3674: - %t505 = load i64, ptr %a495 - %t506 = icmp sge i64 %t505, 0 - br i1 %t506, label %then3675, label %endif3677 -then3675: - %t507 = load ptr, ptr %a1 - %t508 = load %S.ast.Node, ptr %a438 - %t509 = getelementptr inbounds %S.ast.Node, ptr %a227, i32 0, i32 1 - %t510 = load { ptr, i64, i64 }, ptr %t509 - store { ptr, i64, i64 } { ptr @.str.2292, i64 16, i64 0 }, ptr %a512 - store { ptr, i64, i64 } %t510, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a511 - store { ptr, i64, i64 } %t514, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.2293, i64 17, i64 0 }, ptr %a517 - call void @finch_str_concat(ptr %a515, ptr %a516, ptr %a517) - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_drop(ptr %a518) - %t519 = load { ptr, i64, i64 }, ptr %a515 - %t520 = load i64, ptr %a428 - call void @finch_str_from_int(ptr %a521, i64 %t520) - %t522 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } %t519, ptr %a524 - store { ptr, i64, i64 } %t522, ptr %a525 - call void @finch_str_concat(ptr %a523, ptr %a524, ptr %a525) - store { ptr, i64, i64 } %t519, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.2294, i64 20, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.fail(ptr %t507, %S.ast.Node %t508, { ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a534 - call void @finch_str_drop(ptr %a534) - br label %endif3677 -endif3677: - %t535 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 2 - %t536 = getelementptr inbounds { ptr, i64, i64 }, ptr %t535, i32 0, i32 1 - %t537 = getelementptr inbounds %S.ast.Node, ptr %a438, i32 0, i32 1 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - call void @finch_str_copy(ptr %a540, ptr %a539) - %t541 = load { ptr, i64, i64 }, ptr %a540 - %t542 = load i64, ptr %t536 - %t543 = add i64 %t542, 1 - call void @finch_arr_reserve(ptr %t535, i64 %t543, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t544 = load ptr, ptr %t535 - %t545 = getelementptr inbounds { ptr, i64, i64 }, ptr %t544, i64 %t542 - store { ptr, i64, i64 } %t541, ptr %t545 - store i64 %t543, ptr %t536 - %t546 = getelementptr inbounds %S.gen.EnumDef, ptr %a427, i32 0, i32 3 - %t547 = getelementptr inbounds { ptr, i64, i64 }, ptr %t546, i32 0, i32 1 - %t548 = load i64, ptr %a428 - %t549 = load i64, ptr %t547 - %t550 = add i64 %t549, 1 - call void @finch_arr_reserve(ptr %t546, i64 %t550, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t551 = load ptr, ptr %t546 - %t552 = getelementptr inbounds i64, ptr %t551, i64 %t549 - store i64 %t548, ptr %t552 - store i64 %t550, ptr %t547 - %t553 = load i64, ptr %a428 - %t554 = add i64 %t553, 1 - store i64 %t554, ptr %a428 - br label %each.step3657 -each.step3657: - %t555 = load i64, ptr %a430 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a430 - br label %each.cond3655 -each.end3658: - %t557 = load ptr, ptr %a1 - %t558 = icmp eq ptr %t557, null - br i1 %t558, label %panic3678, label %ok3679 -panic3678: - call void @finch_panic(ptr @.str.2295, i64 1563, ptr @.str.2296) - unreachable -ok3679: - %t559 = getelementptr inbounds %S.gen.Gen, ptr %t557, i32 0, i32 21 - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %t559, i32 0, i32 1 - %t561 = load %S.gen.EnumDef, ptr %a427 - store %S.gen.EnumDef %t561, ptr %a562 - call void @finch.copy.S_gen_EnumDef(ptr %a563, ptr %a562) - %t564 = load %S.gen.EnumDef, ptr %a563 - %t565 = load i64, ptr %t560 - %t566 = add i64 %t565, 1 - call void @finch_arr_reserve(ptr %t559, i64 %t566, i64 ptrtoint (ptr getelementptr (%S.gen.EnumDef, ptr null, i32 1) to i64)) - %t567 = load ptr, ptr %t559 - %t568 = getelementptr inbounds %S.gen.EnumDef, ptr %t567, i64 %t565 - store %S.gen.EnumDef %t564, ptr %t568 - store i64 %t566, ptr %t560 - call void @finch.drop.S_gen_EnumDef(ptr %a427) - call void @finch.drop.S_ast_Node(ptr %a227) - br label %for.step3604 -for.step3604: - %t569 = load i64, ptr %a204 - %t570 = add i64 %t569, 1 - store i64 %t570, ptr %a204 - br label %for.cond3602 -for.end3605: - br label %for.step3590 -for.step3590: - %t571 = load i64, ptr %a170 - %t572 = add i64 %t571, 1 - store i64 %t572, ptr %a170 - br label %for.cond3588 -for.end3591: - %t573 = load ptr, ptr %a1 - %t574 = icmp eq ptr %t573, null - br i1 %t574, label %panic3680, label %ok3681 -panic3680: - call void @finch_panic(ptr @.str.2297, i64 1566, ptr @.str.2298) - unreachable -ok3681: - %t575 = getelementptr inbounds %S.gen.Gen, ptr %t573, i32 0, i32 26 - %t576 = getelementptr inbounds %S.cimport.CImports, ptr %t575, i32 0, i32 4 - %t577 = getelementptr inbounds { ptr, i64, i64 }, ptr %t576, i32 0, i32 1 - %t578 = load i64, ptr %t577 - store i64 0, ptr %a579 - br label %for.cond3682 -for.cond3682: - %t580 = load i64, ptr %a579 - %t581 = icmp slt i64 %t580, %t578 - br i1 %t581, label %for.body3683, label %for.end3685 -for.body3683: - %t582 = load ptr, ptr %a1 - %t583 = icmp eq ptr %t582, null - br i1 %t583, label %panic3686, label %ok3687 -panic3686: - call void @finch_panic(ptr @.str.2299, i64 1567, ptr @.str.2300) - unreachable -ok3687: - %t584 = getelementptr inbounds %S.gen.Gen, ptr %t582, i32 0, i32 16 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i32 0, i32 1 - %t586 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } { ptr @.str.2301, i64 1, i64 0 }, 0 - %t587 = load ptr, ptr %a1 - %t588 = icmp eq ptr %t587, null - br i1 %t588, label %panic3688, label %ok3689 -panic3688: - call void @finch_panic(ptr @.str.2302, i64 1567, ptr @.str.2303) - unreachable -ok3689: - %t589 = getelementptr inbounds %S.gen.Gen, ptr %t587, i32 0, i32 26 - %t590 = getelementptr inbounds %S.cimport.CImports, ptr %t589, i32 0, i32 4 - %t591 = load i64, ptr %a579 - %t592 = load { ptr, i64, i64 }, ptr %t590 - %t593 = extractvalue { ptr, i64, i64 } %t592, 1 - %t594 = icmp uge i64 %t591, %t593 - br i1 %t594, label %range3690, label %inrange3691 -range3690: - call void @finch_panic_index(ptr @.str.2304, i64 1567, i64 %t591, i64 %t593) - unreachable -inrange3691: - %t595 = extractvalue { ptr, i64, i64 } %t592, 0 - %t596 = getelementptr inbounds { ptr, i64, i64 }, ptr %t595, i64 %t591 - %t597 = load { ptr, i64, i64 }, ptr %t596 - store { ptr, i64, i64 } %t597, ptr %a598 - call void @finch_str_copy(ptr %a599, ptr %a598) - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = insertvalue %S.gen.StructDef %t586, { ptr, i64, i64 } %t600, 1 - %t602 = insertvalue %S.gen.StructDef %t601, i1 true, 2 - %t603 = insertvalue %S.gen.StructDef %t602, i64 -1, 13 - %t604 = load i64, ptr %a579 - %t605 = insertvalue %S.gen.StructDef %t603, i64 %t604, 14 - %t606 = load i64, ptr %t585 - %t607 = add i64 %t606, 1 - call void @finch_arr_reserve(ptr %t584, i64 %t607, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t608 = load ptr, ptr %t584 - %t609 = getelementptr inbounds %S.gen.StructDef, ptr %t608, i64 %t606 - store %S.gen.StructDef %t605, ptr %t609 - store i64 %t607, ptr %t585 - br label %for.step3684 -for.step3684: - %t610 = load i64, ptr %a579 - %t611 = add i64 %t610, 1 - store i64 %t611, ptr %a579 - br label %for.cond3682 -for.end3685: - %t612 = load ptr, ptr %a1 - %t613 = icmp eq ptr %t612, null - br i1 %t613, label %panic3692, label %ok3693 -panic3692: - call void @finch_panic(ptr @.str.2305, i64 1569, ptr @.str.2306) - unreachable -ok3693: - %t614 = getelementptr inbounds %S.gen.Gen, ptr %t612, i32 0, i32 16 - %t615 = getelementptr inbounds { ptr, i64, i64 }, ptr %t614, i32 0, i32 1 - %t616 = load i64, ptr %t615 - store i64 0, ptr %a617 - br label %for.cond3694 -for.cond3694: - %t618 = load i64, ptr %a617 - %t619 = icmp slt i64 %t618, %t616 - br i1 %t619, label %for.body3695, label %for.end3697 -for.body3695: - %t620 = load ptr, ptr %a1 - %t621 = load i64, ptr %a617 - call void @finch.gen.resolveStruct(ptr %t620, i64 %t621) - br label %for.step3696 -for.step3696: - %t622 = load i64, ptr %a617 - %t623 = add i64 %t622, 1 - store i64 %t623, ptr %a617 - br label %for.cond3694 -for.end3697: - %t624 = load ptr, ptr %a1 - %t625 = icmp eq ptr %t624, null - br i1 %t625, label %panic3698, label %ok3699 -panic3698: - call void @finch_panic(ptr @.str.2307, i64 1572, ptr @.str.2308) - unreachable -ok3699: - %t626 = getelementptr inbounds %S.gen.Gen, ptr %t624, i32 0, i32 0 - %t627 = getelementptr inbounds { ptr, i64, i64 }, ptr %t626, i32 0, i32 1 - %t628 = load i64, ptr %t627 - store i64 0, ptr %a629 - br label %for.cond3700 -for.cond3700: - %t630 = load i64, ptr %a629 - %t631 = icmp slt i64 %t630, %t628 - br i1 %t631, label %for.body3701, label %for.end3703 -for.body3701: - %t632 = load ptr, ptr %a1 - %t633 = icmp eq ptr %t632, null - br i1 %t633, label %panic3704, label %ok3705 -panic3704: - call void @finch_panic(ptr @.str.2309, i64 1573, ptr @.str.2310) - unreachable -ok3705: - %t634 = getelementptr inbounds %S.gen.Gen, ptr %t632, i32 0, i32 0 - %t635 = load i64, ptr %a629 - %t636 = load { ptr, i64, i64 }, ptr %t634 - %t637 = extractvalue { ptr, i64, i64 } %t636, 1 - %t638 = icmp uge i64 %t635, %t637 - br i1 %t638, label %range3706, label %inrange3707 -range3706: - call void @finch_panic_index(ptr @.str.2311, i64 1573, i64 %t635, i64 %t637) - unreachable -inrange3707: - %t639 = extractvalue { ptr, i64, i64 } %t636, 0 - %t640 = getelementptr inbounds %S.ast.Program, ptr %t639, i64 %t635 - %t641 = getelementptr inbounds %S.ast.Program, ptr %t640, i32 0, i32 0 - %t642 = load { ptr, i64, i64 }, ptr %t641 - %t643 = load ptr, ptr %a1 - %t644 = icmp eq ptr %t643, null - br i1 %t644, label %panic3708, label %ok3709 -panic3708: - call void @finch_panic(ptr @.str.2312, i64 1573, ptr @.str.2313) - unreachable -ok3709: - %t645 = getelementptr inbounds %S.gen.Gen, ptr %t643, i32 0, i32 14 - store { ptr, i64, i64 } %t642, ptr %a646 - call void @finch_str_copy(ptr %a647, ptr %a646) - %t648 = load { ptr, i64, i64 }, ptr %a647 - %t649 = load { ptr, i64, i64 }, ptr %t645 - store { ptr, i64, i64 } %t648, ptr %t645 - store { ptr, i64, i64 } %t649, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load ptr, ptr %a1 - %t652 = icmp eq ptr %t651, null - br i1 %t652, label %panic3710, label %ok3711 -panic3710: - call void @finch_panic(ptr @.str.2314, i64 1574, ptr @.str.2315) - unreachable -ok3711: - %t653 = getelementptr inbounds %S.gen.Gen, ptr %t651, i32 0, i32 0 - %t654 = load i64, ptr %a629 - %t655 = load { ptr, i64, i64 }, ptr %t653 - %t656 = extractvalue { ptr, i64, i64 } %t655, 1 - %t657 = icmp uge i64 %t654, %t656 - br i1 %t657, label %range3712, label %inrange3713 -range3712: - call void @finch_panic_index(ptr @.str.2316, i64 1574, i64 %t654, i64 %t656) - unreachable -inrange3713: - %t658 = extractvalue { ptr, i64, i64 } %t655, 0 - %t659 = getelementptr inbounds %S.ast.Program, ptr %t658, i64 %t654 - %t660 = getelementptr inbounds %S.ast.Program, ptr %t659, i32 0, i32 8 - %t661 = getelementptr inbounds { ptr, i64, i64 }, ptr %t660, i32 0, i32 1 - %t662 = load i64, ptr %t661 - store i64 0, ptr %a663 - br label %for.cond3714 -for.cond3714: - %t664 = load i64, ptr %a663 - %t665 = icmp slt i64 %t664, %t662 - br i1 %t665, label %for.body3715, label %for.end3717 -for.body3715: - %t666 = load ptr, ptr %a1 - %t667 = icmp eq ptr %t666, null - br i1 %t667, label %panic3718, label %ok3719 -panic3718: - call void @finch_panic(ptr @.str.2317, i64 1575, ptr @.str.2318) - unreachable -ok3719: - %t668 = getelementptr inbounds %S.gen.Gen, ptr %t666, i32 0, i32 0 - %t669 = load i64, ptr %a629 - %t670 = load { ptr, i64, i64 }, ptr %t668 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range3720, label %inrange3721 -range3720: - call void @finch_panic_index(ptr @.str.2319, i64 1575, i64 %t669, i64 %t671) - unreachable -inrange3721: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.ast.Program, ptr %t673, i64 %t669 - %t675 = getelementptr inbounds %S.ast.Program, ptr %t674, i32 0, i32 8 - %t676 = load i64, ptr %a663 - %t677 = load { ptr, i64, i64 }, ptr %t675 - %t678 = extractvalue { ptr, i64, i64 } %t677, 1 - %t679 = icmp uge i64 %t676, %t678 - br i1 %t679, label %range3722, label %inrange3723 -range3722: - call void @finch_panic_index(ptr @.str.2320, i64 1575, i64 %t676, i64 %t678) - unreachable -inrange3723: - %t680 = extractvalue { ptr, i64, i64 } %t677, 0 - %t681 = getelementptr inbounds %S.ast.Node, ptr %t680, i64 %t676 - %t682 = load %S.ast.Node, ptr %t681 - store %S.ast.Node %t682, ptr %a683 - call void @finch.copy.S_ast_Node(ptr %a684, ptr %a683) - %t685 = load %S.ast.Node, ptr %a684 - store %S.ast.Node %t685, ptr %a686 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t688 = getelementptr inbounds { ptr, i64, i64 }, ptr %t687, i32 0, i32 1 - %t689 = load i64, ptr %t688 - %t690 = icmp sgt i64 %t689, 0 - br i1 %t690, label %then3724, label %endif3726 -then3724: - %t691 = load ptr, ptr %a1 - %t692 = load ptr, ptr %a1 - %t693 = icmp eq ptr %t692, null - br i1 %t693, label %panic3727, label %ok3728 -panic3727: - call void @finch_panic(ptr @.str.2321, i64 1578, ptr @.str.2322) - unreachable -ok3728: - %t694 = getelementptr inbounds %S.gen.Gen, ptr %t692, i32 0, i32 14 - %t695 = load { ptr, i64, i64 }, ptr %t694 - %t696 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t697 = load { ptr, i64, i64 }, ptr %t696 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t699 = load { ptr, i64, i64 }, ptr %t698 - %t700 = call i64 @finch.gen.findTemplate(ptr %t691, { ptr, i64, i64 } %t695, { ptr, i64, i64 } %t697, { ptr, i64, i64 } %t699, i1 false) - %t701 = icmp sge i64 %t700, 0 - br i1 %t701, label %then3729, label %endif3731 -then3729: - %t702 = load ptr, ptr %a1 - %t703 = load %S.ast.Node, ptr %a686 - %t704 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t705 = load { ptr, i64, i64 }, ptr %t704 - store { ptr, i64, i64 } { ptr @.str.2323, i64 10, i64 0 }, 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 - store { ptr, i64, i64 } %t709, ptr %a711 - store { ptr, i64, i64 } { ptr @.str.2324, i64 18, i64 0 }, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t709, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - call void @finch.gen.fail(ptr %t702, %S.ast.Node %t703, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a715 - call void @finch_str_drop(ptr %a715) - br label %endif3731 -endif3731: - %t716 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t717 = getelementptr inbounds { ptr, i64, i64 }, ptr %t716, i32 0, i32 1 - %t718 = load i64, ptr %t717 - %t719 = icmp sgt i64 %t718, 0 - br label %logic.from3732 -logic.from3732: - br i1 %t719, label %logic.rhs3733, label %logic.end3734 -logic.rhs3733: - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = icmp eq ptr %t721, null - br i1 %t722, label %panic3735, label %ok3736 -panic3735: - call void @finch_panic(ptr @.str.2325, i64 1581, ptr @.str.2326) - unreachable -ok3736: - %t723 = getelementptr inbounds %S.gen.Gen, ptr %t721, i32 0, i32 14 - %t724 = load { ptr, i64, i64 }, ptr %t723 - %t725 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t726 = load { ptr, i64, i64 }, ptr %t725 - %t727 = call i64 @finch.gen.findTemplate(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t726, { ptr, i64, i64 } { ptr @.str.2327, i64 0, i64 0 }, i1 true) - %t728 = icmp slt i64 %t727, 0 - br label %logic.rend3737 -logic.rend3737: - br label %logic.end3734 -logic.end3734: - %t729 = phi i1 [ false, %logic.from3732 ], [ %t728, %logic.rend3737 ] - br i1 %t729, label %then3738, label %endif3740 -then3738: - %t730 = load ptr, ptr %a1 - %t731 = load %S.ast.Node, ptr %a686 - %t732 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t733 = load { ptr, i64, i64 }, ptr %t732 - store { ptr, i64, i64 } { ptr @.str.2328, i64 34, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.2329, i64 53, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - call void @finch.gen.fail(ptr %t730, %S.ast.Node %t731, { ptr, i64, i64 } %t742) - store { ptr, i64, i64 } %t742, ptr %a743 - call void @finch_str_drop(ptr %a743) - br label %endif3740 -endif3740: - %t744 = load ptr, ptr %a1 - %t745 = icmp eq ptr %t744, null - br i1 %t745, label %panic3741, label %ok3742 -panic3741: - call void @finch_panic(ptr @.str.2330, i64 1584, ptr @.str.2331) - unreachable -ok3742: - %t746 = getelementptr inbounds %S.gen.Gen, ptr %t744, i32 0, i32 17 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i32 0, i32 1 - %t748 = load ptr, ptr %a1 - %t749 = icmp eq ptr %t748, null - br i1 %t749, label %panic3743, label %ok3744 -panic3743: - call void @finch_panic(ptr @.str.2332, i64 1584, ptr @.str.2333) - unreachable -ok3744: - %t750 = getelementptr inbounds %S.gen.Gen, ptr %t748, i32 0, i32 14 - %t751 = load { ptr, i64, i64 }, ptr %t750 - store { ptr, i64, i64 } %t751, ptr %a752 - call void @finch_str_copy(ptr %a753, ptr %a752) - %t754 = load { ptr, i64, i64 }, ptr %a753 - %t755 = insertvalue %S.gen.Template zeroinitializer, { ptr, i64, i64 } %t754, 0 - %t756 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t757 = load { ptr, i64, i64 }, ptr %t756 - store { ptr, i64, i64 } %t757, ptr %a758 - call void @finch_str_copy(ptr %a759, ptr %a758) - %t760 = load { ptr, i64, i64 }, ptr %a759 - %t761 = insertvalue %S.gen.Template %t755, { ptr, i64, i64 } %t760, 1 - %t762 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t763 = load { ptr, i64, i64 }, ptr %t762 - store { ptr, i64, i64 } %t763, ptr %a764 - call void @finch_str_copy(ptr %a765, ptr %a764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - %t767 = insertvalue %S.gen.Template %t761, { ptr, i64, i64 } %t766, 2 - %t768 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 3 - %t769 = load { ptr, i64, i64 }, ptr %t768 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch.copy.arr_str(ptr %a771, ptr %a770) - %t772 = load { ptr, i64, i64 }, ptr %a771 - %t773 = insertvalue %S.gen.Template %t767, { ptr, i64, i64 } %t772, 3 - %t774 = load i64, ptr %a629 - %t775 = insertvalue %S.gen.Template %t773, i64 %t774, 4 - %t776 = load i64, ptr %a663 - %t777 = insertvalue %S.gen.Template %t775, i64 %t776, 5 - %t778 = load i64, ptr %t747 - %t779 = add i64 %t778, 1 - call void @finch_arr_reserve(ptr %t746, i64 %t779, i64 ptrtoint (ptr getelementptr (%S.gen.Template, ptr null, i32 1) to i64)) - %t780 = load ptr, ptr %t746 - %t781 = getelementptr inbounds %S.gen.Template, ptr %t780, i64 %t778 - store %S.gen.Template %t777, ptr %t781 - store i64 %t779, ptr %t747 - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -endif3726: - %t782 = load ptr, ptr %a1 - %t783 = icmp eq ptr %t782, null - br i1 %t783, label %panic3745, label %ok3746 -panic3745: - call void @finch_panic(ptr @.str.2334, i64 1587, ptr @.str.2335) - unreachable -ok3746: - %t784 = getelementptr inbounds %S.gen.Gen, ptr %t782, i32 0, i32 14 - %t785 = load { ptr, i64, i64 }, ptr %t784 - store { ptr, i64, i64 } %t785, ptr %a786 - call void @finch_str_copy(ptr %a787, ptr %a786) - %t788 = load { ptr, i64, i64 }, ptr %a787 - store { ptr, i64, i64 } %t788, ptr %a789 - store i1 false, ptr %a790 - %t791 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t792 = getelementptr inbounds { ptr, i64, i64 }, ptr %t791, i32 0, i32 1 - %t793 = load i64, ptr %t792 - %t794 = icmp sgt i64 %t793, 0 - br label %logic.from3747 -logic.from3747: - br i1 %t794, label %logic.rhs3748, label %logic.end3749 -logic.rhs3748: - %t795 = load ptr, ptr %a1 - %t796 = load ptr, ptr %a1 - %t797 = icmp eq ptr %t796, null - br i1 %t797, label %panic3750, label %ok3751 -panic3750: - call void @finch_panic(ptr @.str.2336, i64 1589, ptr @.str.2337) - unreachable -ok3751: - %t798 = getelementptr inbounds %S.gen.Gen, ptr %t796, i32 0, i32 14 - %t799 = load { ptr, i64, i64 }, ptr %t798 - %t800 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - %t802 = call i64 @finch.gen.findEnum(ptr %t795, { ptr, i64, i64 } %t799, { ptr, i64, i64 } %t801) - %t803 = icmp sge i64 %t802, 0 - br label %logic.rend3752 -logic.rend3752: - br label %logic.end3749 -logic.end3749: - %t804 = phi i1 [ false, %logic.from3747 ], [ %t803, %logic.rend3752 ] - br i1 %t804, label %then3753, label %else3754 -then3753: - store i1 true, ptr %a790 - %t805 = load ptr, ptr %a1 - %t806 = load { ptr, i64, i64 }, ptr %a789 - %t807 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t808 = load { ptr, i64, i64 }, ptr %t807 - %t809 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t810 = load { ptr, i64, i64 }, ptr %t809 - %t811 = call i64 @finch.gen.findMethod(ptr %t805, { ptr, i64, i64 } %t806, { ptr, i64, i64 } %t808, { ptr, i64, i64 } %t810) - %t812 = icmp sge i64 %t811, 0 - br i1 %t812, label %then3756, label %endif3758 -then3756: - %t813 = load ptr, ptr %a1 - %t814 = load %S.ast.Node, ptr %a686 - %t815 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } { ptr @.str.2338, i64 11, i64 0 }, ptr %a818 - store { ptr, i64, i64 } %t816, ptr %a819 - call void @finch_str_concat(ptr %a817, ptr %a818, ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a817 - store { ptr, i64, i64 } %t820, ptr %a822 - store { ptr, i64, i64 } { ptr @.str.2339, i64 1, i64 0 }, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - store { ptr, i64, i64 } %t820, ptr %a824 - call void @finch_str_drop(ptr %a824) - %t825 = load { ptr, i64, i64 }, ptr %a821 - %t826 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t827 = load { ptr, i64, i64 }, ptr %t826 - store { ptr, i64, i64 } %t825, ptr %a829 - store { ptr, i64, i64 } %t827, ptr %a830 - call void @finch_str_concat(ptr %a828, ptr %a829, ptr %a830) - store { ptr, i64, i64 } %t825, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a828 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.2340, i64 17, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.fail(ptr %t813, %S.ast.Node %t814, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - br label %endif3758 -endif3758: - br label %endif3755 -else3754: - %t839 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t840 = getelementptr inbounds { ptr, i64, i64 }, ptr %t839, i32 0, i32 1 - %t841 = load i64, ptr %t840 - %t842 = icmp sgt i64 %t841, 0 - br i1 %t842, label %then3759, label %else3760 -then3759: - %t843 = load ptr, ptr %a1 - %t844 = load ptr, ptr %a1 - %t845 = icmp eq ptr %t844, null - br i1 %t845, label %panic3762, label %ok3763 -panic3762: - call void @finch_panic(ptr @.str.2341, i64 1595, ptr @.str.2342) - unreachable -ok3763: - %t846 = getelementptr inbounds %S.gen.Gen, ptr %t844, i32 0, i32 14 - %t847 = load { ptr, i64, i64 }, ptr %t846 - %t848 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t849 = load { ptr, i64, i64 }, ptr %t848 - %t850 = call i64 @finch.gen.findStruct(ptr %t843, { ptr, i64, i64 } %t847, { ptr, i64, i64 } %t849) - store i64 %t850, ptr %a851 - %t852 = load i64, ptr %a851 - %t853 = icmp slt i64 %t852, 0 - br label %logic.from3764 -logic.from3764: - br i1 %t853, label %logic.rhs3765, label %logic.end3766 -logic.rhs3765: - %t854 = load ptr, ptr %a1 - %t855 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t856 = load { ptr, i64, i64 }, ptr %t855 - %t857 = call i64 @finch.gen.findStruct(ptr %t854, { ptr, i64, i64 } { ptr @.str.2343, i64 1, i64 0 }, { ptr, i64, i64 } %t856) - %t858 = icmp sge i64 %t857, 0 - br label %logic.rend3767 -logic.rend3767: - br label %logic.end3766 -logic.end3766: - %t859 = phi i1 [ false, %logic.from3764 ], [ %t858, %logic.rend3767 ] - br i1 %t859, label %then3768, label %endif3770 -then3768: - %t860 = load ptr, ptr %a1 - %t861 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t862 = load { ptr, i64, i64 }, ptr %t861 - %t863 = call i64 @finch.gen.findStruct(ptr %t860, { ptr, i64, i64 } { ptr @.str.2344, i64 1, i64 0 }, { ptr, i64, i64 } %t862) - store i64 %t863, ptr %a851 - %t864 = load { ptr, i64, i64 }, ptr %a789 - store { ptr, i64, i64 } { ptr @.str.2345, i64 1, i64 0 }, ptr %a789 - store { ptr, i64, i64 } %t864, ptr %a865 - call void @finch_str_drop(ptr %a865) - br label %endif3770 -endif3770: - %t866 = load i64, ptr %a851 - %t867 = icmp slt i64 %t866, 0 - br i1 %t867, label %then3771, label %endif3773 -then3771: - %t868 = load ptr, ptr %a1 - %t869 = load %S.ast.Node, ptr %a686 - %t870 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t871 = load { ptr, i64, i64 }, ptr %t870 - store { ptr, i64, i64 } { ptr @.str.2346, i64 26, i64 0 }, ptr %a873 - store { ptr, i64, i64 } %t871, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a872 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.2347, i64 76, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.fail(ptr %t868, %S.ast.Node %t869, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - br label %endif3773 -endif3773: - %t882 = load ptr, ptr %a1 - %t883 = load { ptr, i64, i64 }, ptr %a789 - %t884 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t885 = load { ptr, i64, i64 }, ptr %t884 - %t886 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t887 = load { ptr, i64, i64 }, ptr %t886 - %t888 = call i64 @finch.gen.findMethod(ptr %t882, { ptr, i64, i64 } %t883, { ptr, i64, i64 } %t885, { ptr, i64, i64 } %t887) - %t889 = icmp sge i64 %t888, 0 - br i1 %t889, label %then3774, label %endif3776 -then3774: - %t890 = load ptr, ptr %a1 - %t891 = load %S.ast.Node, ptr %a686 - %t892 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t893 = load { ptr, i64, i64 }, ptr %t892 - store { ptr, i64, i64 } { ptr @.str.2348, i64 11, i64 0 }, 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.2349, i64 1, i64 0 }, ptr %a900 - call void @finch_str_concat(ptr %a898, ptr %a899, ptr %a900) - store { ptr, i64, i64 } %t897, ptr %a901 - call void @finch_str_drop(ptr %a901) - %t902 = load { ptr, i64, i64 }, ptr %a898 - %t903 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t902, ptr %a906 - store { ptr, i64, i64 } %t904, ptr %a907 - call void @finch_str_concat(ptr %a905, ptr %a906, ptr %a907) - store { ptr, i64, i64 } %t902, ptr %a908 - call void @finch_str_drop(ptr %a908) - %t909 = load { ptr, i64, i64 }, ptr %a905 - store { ptr, i64, i64 } %t909, ptr %a911 - store { ptr, i64, i64 } { ptr @.str.2350, i64 17, i64 0 }, ptr %a912 - call void @finch_str_concat(ptr %a910, ptr %a911, ptr %a912) - store { ptr, i64, i64 } %t909, ptr %a913 - call void @finch_str_drop(ptr %a913) - %t914 = load { ptr, i64, i64 }, ptr %a910 - call void @finch.gen.fail(ptr %t890, %S.ast.Node %t891, { ptr, i64, i64 } %t914) - store { ptr, i64, i64 } %t914, ptr %a915 - call void @finch_str_drop(ptr %a915) - br label %endif3776 -endif3776: - %t916 = load ptr, ptr %a1 - %t917 = icmp eq ptr %t916, null - br i1 %t917, label %panic3777, label %ok3778 -panic3777: - call void @finch_panic(ptr @.str.2351, i64 1606, ptr @.str.2352) - unreachable -ok3778: - %t918 = getelementptr inbounds %S.gen.Gen, ptr %t916, i32 0, i32 16 - %t919 = load i64, ptr %a851 - %t920 = load { ptr, i64, i64 }, ptr %t918 - %t921 = extractvalue { ptr, i64, i64 } %t920, 1 - %t922 = icmp uge i64 %t919, %t921 - br i1 %t922, label %range3779, label %inrange3780 -range3779: - call void @finch_panic_index(ptr @.str.2353, i64 1606, i64 %t919, i64 %t921) - unreachable -inrange3780: - %t923 = extractvalue { ptr, i64, i64 } %t920, 0 - %t924 = getelementptr inbounds %S.gen.StructDef, ptr %t923, i64 %t919 - %t925 = getelementptr inbounds %S.gen.StructDef, ptr %t924, i32 0, i32 11 - %t926 = getelementptr inbounds { ptr, i64, i64 }, ptr %t925, i32 0, i32 1 - %t927 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t928 = load { ptr, i64, i64 }, ptr %t927 - store i64 -1, ptr %a929 - %t930 = load i64, ptr %t926 - %t931 = load ptr, ptr %t925 - store i64 0, ptr %a932 - br label %find.cond3781 -find.cond3781: - %t933 = load i64, ptr %a932 - %t934 = icmp slt i64 %t933, %t930 - br i1 %t934, label %find.body3782, label %find.end3785 -find.body3782: - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t931, i64 %t933 - %t936 = load { ptr, i64, i64 }, ptr %t935 - store { ptr, i64, i64 } %t936, ptr %a937 - store { ptr, i64, i64 } %t928, ptr %a938 - %t939 = call i32 @finch_str_eq(ptr %a937, ptr %a938) - %t940 = icmp ne i32 %t939, 0 - br i1 %t940, label %find.hit3783, label %find.next3784 -find.hit3783: - store i64 %t933, ptr %a929 - br label %find.end3785 -find.next3784: - %t941 = add i64 %t933, 1 - store i64 %t941, ptr %a932 - br label %find.cond3781 -find.end3785: - %t942 = load i64, ptr %a929 - %t943 = icmp sge i64 %t942, 0 - br i1 %t943, label %then3786, label %endif3788 -then3786: - %t944 = load ptr, ptr %a1 - %t945 = load %S.ast.Node, ptr %a686 - %t946 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t947 = load { ptr, i64, i64 }, ptr %t946 - store { ptr, i64, i64 } { ptr @.str.2354, i64 11, i64 0 }, ptr %a949 - store { ptr, i64, i64 } %t947, ptr %a950 - call void @finch_str_concat(ptr %a948, ptr %a949, ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a948 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.2355, i64 28, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.2356, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - call void @finch.gen.fail(ptr %t944, %S.ast.Node %t945, { ptr, i64, i64 } %t968) - store { ptr, i64, i64 } %t968, ptr %a969 - call void @finch_str_drop(ptr %a969) - br label %endif3788 -endif3788: - br label %endif3761 -else3760: - %t970 = load ptr, ptr %a1 - %t971 = load ptr, ptr %a1 - %t972 = icmp eq ptr %t971, null - br i1 %t972, label %panic3789, label %ok3790 -panic3789: - call void @finch_panic(ptr @.str.2357, i64 1610, ptr @.str.2358) - unreachable -ok3790: - %t973 = getelementptr inbounds %S.gen.Gen, ptr %t971, i32 0, i32 14 - %t974 = load { ptr, i64, i64 }, ptr %t973 - %t975 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t976 = load { ptr, i64, i64 }, ptr %t975 - %t977 = call i64 @finch.gen.findFn(ptr %t970, { ptr, i64, i64 } %t974, { ptr, i64, i64 } %t976) - %t978 = icmp sge i64 %t977, 0 - br i1 %t978, label %then3791, label %endif3793 -then3791: - %t979 = load ptr, ptr %a1 - %t980 = load %S.ast.Node, ptr %a686 - %t981 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t982 = load { ptr, i64, i64 }, ptr %t981 - store { ptr, i64, i64 } { ptr @.str.2359, i64 10, i64 0 }, ptr %a984 - store { ptr, i64, i64 } %t982, ptr %a985 - call void @finch_str_concat(ptr %a983, ptr %a984, ptr %a985) - %t986 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } %t986, ptr %a988 - store { ptr, i64, i64 } { ptr @.str.2360, i64 18, i64 0 }, ptr %a989 - call void @finch_str_concat(ptr %a987, ptr %a988, ptr %a989) - store { ptr, i64, i64 } %t986, ptr %a990 - call void @finch_str_drop(ptr %a990) - %t991 = load { ptr, i64, i64 }, ptr %a987 - call void @finch.gen.fail(ptr %t979, %S.ast.Node %t980, { ptr, i64, i64 } %t991) - store { ptr, i64, i64 } %t991, ptr %a992 - call void @finch_str_drop(ptr %a992) - br label %endif3793 -endif3793: - %t993 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t994) - br i1 %t995, label %then3794, label %endif3796 -then3794: - %t996 = load ptr, ptr %a1 - %t997 = load %S.ast.Node, ptr %a686 - %t998 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t999 = load { ptr, i64, i64 }, ptr %t998 - store { ptr, i64, i64 } { ptr @.str.2361, i64 1, i64 0 }, ptr %a1001 - store { ptr, i64, i64 } %t999, ptr %a1002 - call void @finch_str_concat(ptr %a1000, ptr %a1001, ptr %a1002) - %t1003 = load { ptr, i64, i64 }, ptr %a1000 - store { ptr, i64, i64 } %t1003, ptr %a1005 - store { ptr, i64, i64 } { ptr @.str.2362, i64 43, i64 0 }, ptr %a1006 - call void @finch_str_concat(ptr %a1004, ptr %a1005, ptr %a1006) - store { ptr, i64, i64 } %t1003, ptr %a1007 - call void @finch_str_drop(ptr %a1007) - %t1008 = load { ptr, i64, i64 }, ptr %a1004 - call void @finch.gen.fail(ptr %t996, %S.ast.Node %t997, { ptr, i64, i64 } %t1008) - store { ptr, i64, i64 } %t1008, ptr %a1009 - call void @finch_str_drop(ptr %a1009) - br label %endif3796 -endif3796: - br label %endif3761 -endif3761: - br label %endif3755 -endif3755: - %t1010 = load ptr, ptr %a1 - %t1011 = icmp eq ptr %t1010, null - br i1 %t1011, label %panic3797, label %ok3798 -panic3797: - call void @finch_panic(ptr @.str.2363, i64 1617, ptr @.str.2364) - unreachable -ok3798: - %t1012 = getelementptr inbounds %S.gen.Gen, ptr %t1010, i32 0, i32 14 - %t1013 = load { ptr, i64, i64 }, ptr %t1012 - store { ptr, i64, i64 } %t1013, ptr %a1014 - call void @finch_str_copy(ptr %a1015, ptr %a1014) - %t1016 = load { ptr, i64, i64 }, ptr %a1015 - %t1017 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t1016, 0 - %t1018 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1019 = load { ptr, i64, i64 }, ptr %t1018 - store { ptr, i64, i64 } %t1019, ptr %a1020 - call void @finch_str_copy(ptr %a1021, ptr %a1020) - %t1022 = load { ptr, i64, i64 }, ptr %a1021 - %t1023 = insertvalue %S.gen.FnSig %t1017, { ptr, i64, i64 } %t1022, 1 - %t1024 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1025 = load { ptr, i64, i64 }, ptr %t1024 - store { ptr, i64, i64 } %t1025, ptr %a1026 - call void @finch_str_copy(ptr %a1027, ptr %a1026) - %t1028 = load { ptr, i64, i64 }, ptr %a1027 - %t1029 = insertvalue %S.gen.FnSig %t1023, { ptr, i64, i64 } %t1028, 2 - %t1030 = load { ptr, i64, i64 }, ptr %a789 - 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.FnSig %t1029, { ptr, i64, i64 } %t1033, 3 - %t1035 = load i1, ptr %a790 - %t1036 = insertvalue %S.gen.FnSig %t1034, i1 %t1035, 4 - %t1037 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1038 = load i1, ptr %t1037 - %t1039 = insertvalue %S.gen.FnSig %t1036, i1 %t1038, 5 - %t1040 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 7 - %t1041 = load i1, ptr %t1040 - %t1042 = insertvalue %S.gen.FnSig %t1039, i1 %t1041, 9 - %t1043 = load i64, ptr %a629 - %t1044 = insertvalue %S.gen.FnSig %t1042, i64 %t1043, 16 - %t1045 = load i64, ptr %a663 - %t1046 = insertvalue %S.gen.FnSig %t1044, i64 %t1045, 17 - store %S.gen.FnSig %t1046, ptr %a1047 - %t1048 = load ptr, ptr %a1 - %t1049 = icmp eq ptr %t1048, null - br i1 %t1049, label %panic3799, label %ok3800 -panic3799: - call void @finch_panic(ptr @.str.2366, i64 1618, ptr @.str.2367) - unreachable -ok3800: - %t1050 = getelementptr inbounds %S.gen.Gen, ptr %t1048, i32 0, i32 14 - %t1051 = load { ptr, i64, i64 }, ptr %t1050 - %t1052 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1051) - store { ptr, i64, i64 } { ptr @.str.2365, i64 7, i64 0 }, ptr %a1054 - store { ptr, i64, i64 } %t1052, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - store { ptr, i64, i64 } %t1057, ptr %a1059 - store { ptr, i64, i64 } { ptr @.str.2368, i64 1, i64 0 }, ptr %a1060 - call void @finch_str_concat(ptr %a1058, ptr %a1059, ptr %a1060) - store { ptr, i64, i64 } %t1057, ptr %a1061 - call void @finch_str_drop(ptr %a1061) - %t1062 = load { ptr, i64, i64 }, ptr %a1058 - %t1063 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1064 = load { ptr, i64, i64 }, ptr %t1063 - store { ptr, i64, i64 } %t1062, ptr %a1066 - store { ptr, i64, i64 } %t1064, ptr %a1067 - call void @finch_str_concat(ptr %a1065, ptr %a1066, ptr %a1067) - store { ptr, i64, i64 } %t1062, ptr %a1068 - call void @finch_str_drop(ptr %a1068) - %t1069 = load { ptr, i64, i64 }, ptr %a1065 - %t1070 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1069, ptr %t1070 - store { ptr, i64, i64 } %t1071, ptr %a1072 - call void @finch_str_drop(ptr %a1072) - %t1073 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1074 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1073, i32 0, i32 1 - %t1075 = load i64, ptr %t1074 - %t1076 = icmp sgt i64 %t1075, 0 - br i1 %t1076, label %then3801, label %endif3803 -then3801: - %t1077 = load ptr, ptr %a1 - %t1078 = icmp eq ptr %t1077, null - br i1 %t1078, label %panic3804, label %ok3805 -panic3804: - call void @finch_panic(ptr @.str.2370, i64 1620, ptr @.str.2371) - unreachable -ok3805: - %t1079 = getelementptr inbounds %S.gen.Gen, ptr %t1077, i32 0, i32 14 - %t1080 = load { ptr, i64, i64 }, ptr %t1079 - %t1081 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t1080) - store { ptr, i64, i64 } { ptr @.str.2369, i64 7, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - store { ptr, i64, i64 } %t1081, ptr %a1085 - call void @finch_str_drop(ptr %a1085) - %t1086 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1086, ptr %a1088 - store { ptr, i64, i64 } { ptr @.str.2372, i64 1, i64 0 }, ptr %a1089 - call void @finch_str_concat(ptr %a1087, ptr %a1088, ptr %a1089) - store { ptr, i64, i64 } %t1086, ptr %a1090 - call void @finch_str_drop(ptr %a1090) - %t1091 = load { ptr, i64, i64 }, ptr %a1087 - %t1092 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1093 = load { ptr, i64, i64 }, ptr %t1092 - store { ptr, i64, i64 } %t1091, ptr %a1095 - store { ptr, i64, i64 } %t1093, ptr %a1096 - call void @finch_str_concat(ptr %a1094, ptr %a1095, ptr %a1096) - store { ptr, i64, i64 } %t1091, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load { ptr, i64, i64 }, ptr %a1094 - store { ptr, i64, i64 } %t1098, ptr %a1100 - store { ptr, i64, i64 } { ptr @.str.2373, i64 1, i64 0 }, ptr %a1101 - call void @finch_str_concat(ptr %a1099, ptr %a1100, ptr %a1101) - store { ptr, i64, i64 } %t1098, ptr %a1102 - call void @finch_str_drop(ptr %a1102) - %t1103 = load { ptr, i64, i64 }, ptr %a1099 - %t1104 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 1 - %t1105 = load { ptr, i64, i64 }, ptr %t1104 - store { ptr, i64, i64 } %t1103, ptr %a1107 - store { ptr, i64, i64 } %t1105, ptr %a1108 - call void @finch_str_concat(ptr %a1106, ptr %a1107, ptr %a1108) - store { ptr, i64, i64 } %t1103, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - %t1110 = load { ptr, i64, i64 }, ptr %a1106 - %t1111 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 11 - %t1112 = load { ptr, i64, i64 }, ptr %t1111 - store { ptr, i64, i64 } %t1110, ptr %t1111 - store { ptr, i64, i64 } %t1112, ptr %a1113 - call void @finch_str_drop(ptr %a1113) - br label %endif3803 -endif3803: - %t1114 = load ptr, ptr %a1 - %t1115 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 5 - %t1116 = load %S.ast.Type, ptr %t1115 - %t1117 = load %S.ast.Node, ptr %a686 - %t1118 = call %S.ast.Type @finch.gen.resolve(ptr %t1114, %S.ast.Type %t1116, %S.ast.Node %t1117) - %t1119 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 12 - %t1120 = load %S.ast.Type, ptr %t1119 - store %S.ast.Type %t1118, ptr %t1119 - store %S.ast.Type %t1120, ptr %a1121 - call void @finch.drop.S_ast_Type(ptr %a1121) - %t1122 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1122, i32 0, i32 1 - %t1124 = load i64, ptr %t1123 - %t1125 = sub i64 %t1124, 1 - store i64 0, ptr %a1126 - br label %for.cond3806 -for.cond3806: - %t1127 = load i64, ptr %a1126 - %t1128 = icmp slt i64 %t1127, %t1125 - br i1 %t1128, label %for.body3807, label %for.end3809 -for.body3807: - %t1129 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1130 = load i64, ptr %a1126 - %t1131 = load { ptr, i64, i64 }, ptr %t1129 - %t1132 = extractvalue { ptr, i64, i64 } %t1131, 1 - %t1133 = icmp uge i64 %t1130, %t1132 - br i1 %t1133, label %range3810, label %inrange3811 -range3810: - call void @finch_panic_index(ptr @.str.2374, i64 1624, i64 %t1130, i64 %t1132) - unreachable -inrange3811: - %t1134 = extractvalue { ptr, i64, i64 } %t1131, 0 - %t1135 = getelementptr inbounds %S.ast.Node, ptr %t1134, i64 %t1130 - %t1136 = getelementptr inbounds %S.ast.Node, ptr %t1135, i32 0, i32 1 - %t1137 = load { ptr, i64, i64 }, ptr %t1136 - store { ptr, i64, i64 } %t1137, ptr %a1138 - store { ptr, i64, i64 } { ptr @.str.2375, i64 4, i64 0 }, ptr %a1139 - %t1140 = call i32 @finch_str_eq(ptr %a1138, ptr %a1139) - %t1141 = icmp ne i32 %t1140, 0 - br label %logic.from3812 -logic.from3812: - br i1 %t1141, label %logic.rhs3813, label %logic.end3814 -logic.rhs3813: - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1142, i32 0, i32 1 - %t1144 = load i64, ptr %t1143 - %t1145 = icmp sgt i64 %t1144, 0 - br label %logic.rend3815 -logic.rend3815: - br label %logic.end3814 -logic.end3814: - %t1146 = phi i1 [ false, %logic.from3812 ], [ %t1145, %logic.rend3815 ] - br i1 %t1146, label %then3816, label %endif3818 -then3816: - %t1147 = load ptr, ptr %a1 - %t1148 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1149 = load i64, ptr %a1126 - %t1150 = load { ptr, i64, i64 }, ptr %t1148 - %t1151 = extractvalue { ptr, i64, i64 } %t1150, 1 - %t1152 = icmp uge i64 %t1149, %t1151 - br i1 %t1152, label %range3819, label %inrange3820 -range3819: - call void @finch_panic_index(ptr @.str.2376, i64 1625, i64 %t1149, i64 %t1151) - unreachable -inrange3820: - %t1153 = extractvalue { ptr, i64, i64 } %t1150, 0 - %t1154 = getelementptr inbounds %S.ast.Node, ptr %t1153, i64 %t1149 - %t1155 = load %S.ast.Node, ptr %t1154 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 2 - %t1157 = load { ptr, i64, i64 }, ptr %t1156 - store { ptr, i64, i64 } { ptr @.str.2377, i64 22, i64 0 }, ptr %a1159 - store { ptr, i64, i64 } %t1157, ptr %a1160 - call void @finch_str_concat(ptr %a1158, ptr %a1159, ptr %a1160) - %t1161 = load { ptr, i64, i64 }, ptr %a1158 - store { ptr, i64, i64 } %t1161, ptr %a1163 - store { ptr, i64, i64 } { ptr @.str.2378, i64 24, i64 0 }, ptr %a1164 - call void @finch_str_concat(ptr %a1162, ptr %a1163, ptr %a1164) - store { ptr, i64, i64 } %t1161, ptr %a1165 - call void @finch_str_drop(ptr %a1165) - %t1166 = load { ptr, i64, i64 }, ptr %a1162 - call void @finch.gen.fail(ptr %t1147, %S.ast.Node %t1155, { ptr, i64, i64 } %t1166) - store { ptr, i64, i64 } %t1166, ptr %a1167 - call void @finch_str_drop(ptr %a1167) - br label %endif3818 -endif3818: - %t1168 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 13 - %t1169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1168, i32 0, i32 1 - %t1170 = load ptr, ptr %a1 - %t1171 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1172 = load i64, ptr %a1126 - %t1173 = load { ptr, i64, i64 }, ptr %t1171 - %t1174 = extractvalue { ptr, i64, i64 } %t1173, 1 - %t1175 = icmp uge i64 %t1172, %t1174 - br i1 %t1175, label %range3821, label %inrange3822 -range3821: - call void @finch_panic_index(ptr @.str.2379, i64 1627, i64 %t1172, i64 %t1174) - unreachable -inrange3822: - %t1176 = extractvalue { ptr, i64, i64 } %t1173, 0 - %t1177 = getelementptr inbounds %S.ast.Node, ptr %t1176, i64 %t1172 - %t1178 = getelementptr inbounds %S.ast.Node, ptr %t1177, i32 0, i32 5 - %t1179 = load %S.ast.Type, ptr %t1178 - %t1180 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1181 = load i64, ptr %a1126 - %t1182 = load { ptr, i64, i64 }, ptr %t1180 - %t1183 = extractvalue { ptr, i64, i64 } %t1182, 1 - %t1184 = icmp uge i64 %t1181, %t1183 - br i1 %t1184, label %range3823, label %inrange3824 -range3823: - call void @finch_panic_index(ptr @.str.2380, i64 1627, i64 %t1181, i64 %t1183) - unreachable -inrange3824: - %t1185 = extractvalue { ptr, i64, i64 } %t1182, 0 - %t1186 = getelementptr inbounds %S.ast.Node, ptr %t1185, i64 %t1181 - %t1187 = load %S.ast.Node, ptr %t1186 - %t1188 = call %S.ast.Type @finch.gen.resolve(ptr %t1170, %S.ast.Type %t1179, %S.ast.Node %t1187) - %t1189 = load i64, ptr %t1169 - %t1190 = add i64 %t1189, 1 - call void @finch_arr_reserve(ptr %t1168, i64 %t1190, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1191 = load ptr, ptr %t1168 - %t1192 = getelementptr inbounds %S.ast.Type, ptr %t1191, i64 %t1189 - store %S.ast.Type %t1188, ptr %t1192 - store i64 %t1190, ptr %t1169 - %t1193 = getelementptr inbounds %S.gen.FnSig, ptr %a1047, i32 0, i32 14 - %t1194 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1193, i32 0, i32 1 - %t1195 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 9 - %t1196 = load i64, ptr %a1126 - %t1197 = load { ptr, i64, i64 }, ptr %t1195 - %t1198 = extractvalue { ptr, i64, i64 } %t1197, 1 - %t1199 = icmp uge i64 %t1196, %t1198 - br i1 %t1199, label %range3825, label %inrange3826 -range3825: - call void @finch_panic_index(ptr @.str.2381, i64 1628, i64 %t1196, i64 %t1198) - unreachable -inrange3826: - %t1200 = extractvalue { ptr, i64, i64 } %t1197, 0 - %t1201 = getelementptr inbounds %S.ast.Node, ptr %t1200, i64 %t1196 - %t1202 = getelementptr inbounds %S.ast.Node, ptr %t1201, i32 0, i32 1 - %t1203 = load { ptr, i64, i64 }, ptr %t1202 - store { ptr, i64, i64 } %t1203, ptr %a1204 - call void @finch_str_copy(ptr %a1205, ptr %a1204) - %t1206 = load { ptr, i64, i64 }, ptr %a1205 - %t1207 = load i64, ptr %t1194 - %t1208 = add i64 %t1207, 1 - call void @finch_arr_reserve(ptr %t1193, i64 %t1208, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1209 = load ptr, ptr %t1193 - %t1210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1209, i64 %t1207 - store { ptr, i64, i64 } %t1206, ptr %t1210 - store i64 %t1208, ptr %t1194 - br label %for.step3808 -for.step3808: - %t1211 = load i64, ptr %a1126 - %t1212 = add i64 %t1211, 1 - store i64 %t1212, ptr %a1126 - br label %for.cond3806 -for.end3809: - %t1213 = getelementptr inbounds %S.ast.Node, ptr %a686, i32 0, i32 8 - %t1214 = load i1, ptr %t1213 - br i1 %t1214, label %then3827, label %endif3829 -then3827: - %t1215 = load ptr, ptr %a1 - %t1216 = load %S.ast.Node, ptr %a686 - %t1217 = load %S.gen.FnSig, ptr %a1047 - call void @finch.gen.checkExport(ptr %t1215, %S.ast.Node %t1216, %S.gen.FnSig %t1217) - br label %endif3829 -endif3829: - %t1218 = load ptr, ptr %a1 - %t1219 = icmp eq ptr %t1218, null - br i1 %t1219, label %panic3830, label %ok3831 -panic3830: - call void @finch_panic(ptr @.str.2382, i64 1633, ptr @.str.2383) - unreachable -ok3831: - %t1220 = getelementptr inbounds %S.gen.Gen, ptr %t1218, i32 0, i32 15 - %t1221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1220, i32 0, i32 1 - %t1222 = load %S.gen.FnSig, ptr %a1047 - store %S.gen.FnSig %t1222, ptr %a1223 - call void @finch.copy.S_gen_FnSig(ptr %a1224, ptr %a1223) - %t1225 = load %S.gen.FnSig, ptr %a1224 - %t1226 = load i64, ptr %t1221 - %t1227 = add i64 %t1226, 1 - call void @finch_arr_reserve(ptr %t1220, i64 %t1227, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t1228 = load ptr, ptr %t1220 - %t1229 = getelementptr inbounds %S.gen.FnSig, ptr %t1228, i64 %t1226 - store %S.gen.FnSig %t1225, ptr %t1229 - store i64 %t1227, ptr %t1221 - call void @finch.drop.S_gen_FnSig(ptr %a1047) - call void @finch_str_drop(ptr %a789) - call void @finch.drop.S_ast_Node(ptr %a686) - br label %for.step3716 -for.step3716: - %t1230 = load i64, ptr %a663 - %t1231 = add i64 %t1230, 1 - store i64 %t1231, ptr %a663 - br label %for.cond3714 -for.end3717: - br label %for.step3702 -for.step3702: - %t1232 = load i64, ptr %a629 - %t1233 = add i64 %t1232, 1 - store i64 %t1233, ptr %a629 - br label %for.cond3700 -for.end3703: - store i1 true, ptr %a1234 - br label %while.cond3832 -while.cond3832: - %t1235 = load i1, ptr %a1234 - br i1 %t1235, label %while.body3833, label %while.end3834 -while.body3833: - store i1 false, ptr %a1234 - %t1236 = load ptr, ptr %a1 - %t1237 = icmp eq ptr %t1236, null - br i1 %t1237, label %panic3835, label %ok3836 -panic3835: - call void @finch_panic(ptr @.str.2384, i64 1641, ptr @.str.2385) - unreachable -ok3836: - %t1238 = getelementptr inbounds %S.gen.Gen, ptr %t1236, i32 0, i32 15 - %t1239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1238, i32 0, i32 1 - %t1240 = load i64, ptr %t1239 - store i64 0, ptr %a1241 - br label %for.cond3837 -for.cond3837: - %t1242 = load i64, ptr %a1241 - %t1243 = icmp slt i64 %t1242, %t1240 - br i1 %t1243, label %for.body3838, label %for.end3840 -for.body3838: - %t1244 = load ptr, ptr %a1 - %t1245 = icmp eq ptr %t1244, null - br i1 %t1245, label %panic3841, label %ok3842 -panic3841: - call void @finch_panic(ptr @.str.2386, i64 1642, ptr @.str.2387) - unreachable -ok3842: - %t1246 = getelementptr inbounds %S.gen.Gen, ptr %t1244, i32 0, i32 15 - %t1247 = load i64, ptr %a1241 - %t1248 = load { ptr, i64, i64 }, ptr %t1246 - %t1249 = extractvalue { ptr, i64, i64 } %t1248, 1 - %t1250 = icmp uge i64 %t1247, %t1249 - br i1 %t1250, label %range3843, label %inrange3844 -range3843: - call void @finch_panic_index(ptr @.str.2388, i64 1642, i64 %t1247, i64 %t1249) - unreachable -inrange3844: - %t1251 = extractvalue { ptr, i64, i64 } %t1248, 0 - %t1252 = getelementptr inbounds %S.gen.FnSig, ptr %t1251, i64 %t1247 - %t1253 = getelementptr inbounds %S.gen.FnSig, ptr %t1252, i32 0, i32 2 - %t1254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1253, i32 0, i32 1 - %t1255 = load i64, ptr %t1254 - %t1256 = icmp sgt i64 %t1255, 0 - br label %logic.from3845 -logic.from3845: - br i1 %t1256, label %logic.rhs3846, label %logic.end3847 -logic.rhs3846: - %t1257 = load ptr, ptr %a1 - %t1258 = icmp eq ptr %t1257, null - br i1 %t1258, label %panic3848, label %ok3849 -panic3848: - call void @finch_panic(ptr @.str.2389, i64 1642, ptr @.str.2390) - unreachable -ok3849: - %t1259 = getelementptr inbounds %S.gen.Gen, ptr %t1257, i32 0, i32 15 - %t1260 = load i64, ptr %a1241 - %t1261 = load { ptr, i64, i64 }, ptr %t1259 - %t1262 = extractvalue { ptr, i64, i64 } %t1261, 1 - %t1263 = icmp uge i64 %t1260, %t1262 - br i1 %t1263, label %range3850, label %inrange3851 -range3850: - call void @finch_panic_index(ptr @.str.2391, i64 1642, i64 %t1260, i64 %t1262) - unreachable -inrange3851: - %t1264 = extractvalue { ptr, i64, i64 } %t1261, 0 - %t1265 = getelementptr inbounds %S.gen.FnSig, ptr %t1264, i64 %t1260 - %t1266 = getelementptr inbounds %S.gen.FnSig, ptr %t1265, i32 0, i32 10 - %t1267 = load i1, ptr %t1266 - %t1268 = xor i1 %t1267, true - br label %logic.rend3852 -logic.rend3852: - br label %logic.end3847 -logic.end3847: - %t1269 = phi i1 [ false, %logic.from3845 ], [ %t1268, %logic.rend3852 ] - br i1 %t1269, label %then3853, label %endif3855 -then3853: - %t1270 = load ptr, ptr %a1 - %t1271 = icmp eq ptr %t1270, null - br i1 %t1271, label %panic3856, label %ok3857 -panic3856: - call void @finch_panic(ptr @.str.2392, i64 1643, ptr @.str.2393) - unreachable -ok3857: - %t1272 = getelementptr inbounds %S.gen.Gen, ptr %t1270, i32 0, i32 0 - %t1273 = load ptr, ptr %a1 - %t1274 = icmp eq ptr %t1273, null - br i1 %t1274, label %panic3858, label %ok3859 -panic3858: - call void @finch_panic(ptr @.str.2394, i64 1643, ptr @.str.2395) - unreachable -ok3859: - %t1275 = getelementptr inbounds %S.gen.Gen, ptr %t1273, i32 0, i32 15 - %t1276 = load i64, ptr %a1241 - %t1277 = load { ptr, i64, i64 }, ptr %t1275 - %t1278 = extractvalue { ptr, i64, i64 } %t1277, 1 - %t1279 = icmp uge i64 %t1276, %t1278 - br i1 %t1279, label %range3860, label %inrange3861 -range3860: - call void @finch_panic_index(ptr @.str.2396, i64 1643, i64 %t1276, i64 %t1278) - unreachable -inrange3861: - %t1280 = extractvalue { ptr, i64, i64 } %t1277, 0 - %t1281 = getelementptr inbounds %S.gen.FnSig, ptr %t1280, i64 %t1276 - %t1282 = getelementptr inbounds %S.gen.FnSig, ptr %t1281, i32 0, i32 16 - %t1283 = load i64, ptr %t1282 - %t1284 = load { ptr, i64, i64 }, ptr %t1272 - %t1285 = extractvalue { ptr, i64, i64 } %t1284, 1 - %t1286 = icmp uge i64 %t1283, %t1285 - br i1 %t1286, label %range3862, label %inrange3863 -range3862: - call void @finch_panic_index(ptr @.str.2397, i64 1643, i64 %t1283, i64 %t1285) - unreachable -inrange3863: - %t1287 = extractvalue { ptr, i64, i64 } %t1284, 0 - %t1288 = getelementptr inbounds %S.ast.Program, ptr %t1287, i64 %t1283 - %t1289 = getelementptr inbounds %S.ast.Program, ptr %t1288, i32 0, i32 8 - %t1290 = load ptr, ptr %a1 - %t1291 = icmp eq ptr %t1290, null - br i1 %t1291, label %panic3864, label %ok3865 -panic3864: - call void @finch_panic(ptr @.str.2398, i64 1643, ptr @.str.2399) - unreachable -ok3865: - %t1292 = getelementptr inbounds %S.gen.Gen, ptr %t1290, i32 0, i32 15 - %t1293 = load i64, ptr %a1241 - %t1294 = load { ptr, i64, i64 }, ptr %t1292 - %t1295 = extractvalue { ptr, i64, i64 } %t1294, 1 - %t1296 = icmp uge i64 %t1293, %t1295 - br i1 %t1296, label %range3866, label %inrange3867 -range3866: - call void @finch_panic_index(ptr @.str.2400, i64 1643, i64 %t1293, i64 %t1295) - unreachable -inrange3867: - %t1297 = extractvalue { ptr, i64, i64 } %t1294, 0 - %t1298 = getelementptr inbounds %S.gen.FnSig, ptr %t1297, i64 %t1293 - %t1299 = getelementptr inbounds %S.gen.FnSig, ptr %t1298, i32 0, i32 17 - %t1300 = load i64, ptr %t1299 - %t1301 = load { ptr, i64, i64 }, ptr %t1289 - %t1302 = extractvalue { ptr, i64, i64 } %t1301, 1 - %t1303 = icmp uge i64 %t1300, %t1302 - br i1 %t1303, label %range3868, label %inrange3869 -range3868: - call void @finch_panic_index(ptr @.str.2401, i64 1643, i64 %t1300, i64 %t1302) - unreachable -inrange3869: - %t1304 = extractvalue { ptr, i64, i64 } %t1301, 0 - %t1305 = getelementptr inbounds %S.ast.Node, ptr %t1304, i64 %t1300 - %t1306 = load %S.ast.Node, ptr %t1305 - store %S.ast.Node %t1306, ptr %a1307 - call void @finch.copy.S_ast_Node(ptr %a1308, ptr %a1307) - %t1309 = load %S.ast.Node, ptr %a1308 - store %S.ast.Node %t1309, ptr %a1310 - %t1311 = load ptr, ptr %a1 - %t1312 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1313 = getelementptr inbounds %S.ast.Node, ptr %a1310, i32 0, i32 9 - %t1314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1313, i32 0, i32 1 - %t1315 = load i64, ptr %t1314 - %t1316 = sub i64 %t1315, 1 - %t1317 = load { ptr, i64, i64 }, ptr %t1312 - %t1318 = extractvalue { ptr, i64, i64 } %t1317, 1 - %t1319 = icmp uge i64 %t1316, %t1318 - br i1 %t1319, label %range3870, label %inrange3871 -range3870: - call void @finch_panic_index(ptr @.str.2403, i64 1644, i64 %t1316, i64 %t1318) - unreachable -inrange3871: - %t1320 = extractvalue { ptr, i64, i64 } %t1317, 0 - %t1321 = getelementptr inbounds %S.ast.Node, ptr %t1320, i64 %t1316 - %t1322 = load %S.ast.Node, ptr %t1321 - %t1323 = call i1 @finch.gen.mutates(ptr %t1311, { ptr, i64, i64 } { ptr @.str.2402, i64 4, i64 0 }, %S.ast.Node %t1322) - br i1 %t1323, label %then3872, label %endif3874 -then3872: - %t1324 = load ptr, ptr %a1 - %t1325 = icmp eq ptr %t1324, null - br i1 %t1325, label %panic3875, label %ok3876 -panic3875: - call void @finch_panic(ptr @.str.2404, i64 1645, ptr @.str.2405) - unreachable -ok3876: - %t1326 = getelementptr inbounds %S.gen.Gen, ptr %t1324, i32 0, i32 15 - %t1327 = load i64, ptr %a1241 - %t1328 = load { ptr, i64, i64 }, ptr %t1326 - %t1329 = extractvalue { ptr, i64, i64 } %t1328, 1 - %t1330 = icmp uge i64 %t1327, %t1329 - br i1 %t1330, label %range3877, label %inrange3878 -range3877: - call void @finch_panic_index(ptr @.str.2406, i64 1645, i64 %t1327, i64 %t1329) - unreachable -inrange3878: - %t1331 = extractvalue { ptr, i64, i64 } %t1328, 0 - %t1332 = getelementptr inbounds %S.gen.FnSig, ptr %t1331, i64 %t1327 - %t1333 = getelementptr inbounds %S.gen.FnSig, ptr %t1332, i32 0, i32 10 - store i1 true, ptr %t1333 - %t1334 = load ptr, ptr %a1 - %t1335 = icmp eq ptr %t1334, null - br i1 %t1335, label %panic3879, label %ok3880 -panic3879: - call void @finch_panic(ptr @.str.2407, i64 1646, ptr @.str.2408) - unreachable -ok3880: - %t1336 = getelementptr inbounds %S.gen.Gen, ptr %t1334, i32 0, i32 24 - %t1337 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1336, i32 0, i32 1 - %t1338 = load ptr, ptr %a1 - %t1339 = icmp eq ptr %t1338, null - br i1 %t1339, label %panic3881, label %ok3882 -panic3881: - call void @finch_panic(ptr @.str.2409, i64 1646, ptr @.str.2410) - unreachable -ok3882: - %t1340 = getelementptr inbounds %S.gen.Gen, ptr %t1338, i32 0, i32 15 - %t1341 = load i64, ptr %a1241 - %t1342 = load { ptr, i64, i64 }, ptr %t1340 - %t1343 = extractvalue { ptr, i64, i64 } %t1342, 1 - %t1344 = icmp uge i64 %t1341, %t1343 - br i1 %t1344, label %range3883, label %inrange3884 -range3883: - call void @finch_panic_index(ptr @.str.2411, i64 1646, i64 %t1341, i64 %t1343) - unreachable -inrange3884: - %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 1 - %t1348 = load { ptr, i64, i64 }, ptr %t1347 - store { ptr, i64, i64 } %t1348, ptr %a1349 - call void @finch_str_copy(ptr %a1350, ptr %a1349) - %t1351 = load { ptr, i64, i64 }, ptr %a1350 - %t1352 = load i64, ptr %t1337 - %t1353 = add i64 %t1352, 1 - call void @finch_arr_reserve(ptr %t1336, i64 %t1353, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1354 = load ptr, ptr %t1336 - %t1355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1354, i64 %t1352 - store { ptr, i64, i64 } %t1351, ptr %t1355 - store i64 %t1353, ptr %t1337 - store i1 true, ptr %a1234 - br label %endif3874 -endif3874: - call void @finch.drop.S_ast_Node(ptr %a1310) - br label %endif3855 -endif3855: - br label %for.step3839 -for.step3839: - %t1356 = load i64, ptr %a1241 - %t1357 = add i64 %t1356, 1 - store i64 %t1357, ptr %a1241 - br label %for.cond3837 -for.end3840: - %t1358 = load ptr, ptr %a1 - %t1359 = icmp eq ptr %t1358, null - br i1 %t1359, label %panic3885, label %ok3886 -panic3885: - call void @finch_panic(ptr @.str.2412, i64 1651, ptr @.str.2413) - unreachable -ok3886: - %t1360 = getelementptr inbounds %S.gen.Gen, ptr %t1358, i32 0, i32 17 - %t1361 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1360, i32 0, i32 1 - %t1362 = load i64, ptr %t1361 - store i64 0, ptr %a1363 - br label %for.cond3887 -for.cond3887: - %t1364 = load i64, ptr %a1363 - %t1365 = icmp slt i64 %t1364, %t1362 - br i1 %t1365, label %for.body3888, label %for.end3890 -for.body3888: - %t1366 = load ptr, ptr %a1 - %t1367 = icmp eq ptr %t1366, null - br i1 %t1367, label %panic3891, label %ok3892 -panic3891: - call void @finch_panic(ptr @.str.2414, i64 1652, ptr @.str.2415) - unreachable -ok3892: - %t1368 = getelementptr inbounds %S.gen.Gen, ptr %t1366, i32 0, i32 17 - %t1369 = load i64, ptr %a1363 - %t1370 = load { ptr, i64, i64 }, ptr %t1368 - %t1371 = extractvalue { ptr, i64, i64 } %t1370, 1 - %t1372 = icmp uge i64 %t1369, %t1371 - br i1 %t1372, label %range3893, label %inrange3894 -range3893: - call void @finch_panic_index(ptr @.str.2416, i64 1652, i64 %t1369, i64 %t1371) - unreachable -inrange3894: - %t1373 = extractvalue { ptr, i64, i64 } %t1370, 0 - %t1374 = getelementptr inbounds %S.gen.Template, ptr %t1373, i64 %t1369 - %t1375 = load %S.gen.Template, ptr %t1374 - store %S.gen.Template %t1375, ptr %a1376 - call void @finch.copy.S_gen_Template(ptr %a1377, ptr %a1376) - %t1378 = load %S.gen.Template, ptr %a1377 - store %S.gen.Template %t1378, ptr %a1379 - %t1380 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 2 - %t1381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1380, i32 0, i32 1 - %t1382 = load i64, ptr %t1381 - %t1383 = icmp sgt i64 %t1382, 0 - br label %logic.from3895 -logic.from3895: - br i1 %t1383, label %logic.rhs3896, label %logic.end3897 -logic.rhs3896: - %t1384 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 7 - %t1385 = load i1, ptr %t1384 - %t1386 = xor i1 %t1385, true - br label %logic.rend3898 -logic.rend3898: - br label %logic.end3897 -logic.end3897: - %t1387 = phi i1 [ false, %logic.from3895 ], [ %t1386, %logic.rend3898 ] - br i1 %t1387, label %then3899, label %endif3901 -then3899: - %t1388 = load ptr, ptr %a1 - %t1389 = icmp eq ptr %t1388, null - br i1 %t1389, label %panic3902, label %ok3903 -panic3902: - call void @finch_panic(ptr @.str.2417, i64 1654, ptr @.str.2418) - unreachable -ok3903: - %t1390 = getelementptr inbounds %S.gen.Gen, ptr %t1388, i32 0, i32 0 - %t1391 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 4 - %t1392 = load i64, ptr %t1391 - %t1393 = load { ptr, i64, i64 }, ptr %t1390 - %t1394 = extractvalue { ptr, i64, i64 } %t1393, 1 - %t1395 = icmp uge i64 %t1392, %t1394 - br i1 %t1395, label %range3904, label %inrange3905 -range3904: - call void @finch_panic_index(ptr @.str.2419, i64 1654, i64 %t1392, i64 %t1394) - unreachable -inrange3905: - %t1396 = extractvalue { ptr, i64, i64 } %t1393, 0 - %t1397 = getelementptr inbounds %S.ast.Program, ptr %t1396, i64 %t1392 - %t1398 = getelementptr inbounds %S.ast.Program, ptr %t1397, i32 0, i32 8 - %t1399 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 5 - %t1400 = load i64, ptr %t1399 - %t1401 = load { ptr, i64, i64 }, ptr %t1398 - %t1402 = extractvalue { ptr, i64, i64 } %t1401, 1 - %t1403 = icmp uge i64 %t1400, %t1402 - br i1 %t1403, label %range3906, label %inrange3907 -range3906: - call void @finch_panic_index(ptr @.str.2420, i64 1654, i64 %t1400, i64 %t1402) - unreachable -inrange3907: - %t1404 = extractvalue { ptr, i64, i64 } %t1401, 0 - %t1405 = getelementptr inbounds %S.ast.Node, ptr %t1404, i64 %t1400 - %t1406 = load %S.ast.Node, ptr %t1405 - store %S.ast.Node %t1406, ptr %a1407 - call void @finch.copy.S_ast_Node(ptr %a1408, ptr %a1407) - %t1409 = load %S.ast.Node, ptr %a1408 - store %S.ast.Node %t1409, ptr %a1410 - %t1411 = load ptr, ptr %a1 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1413 = getelementptr inbounds %S.ast.Node, ptr %a1410, i32 0, i32 9 - %t1414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1413, i32 0, i32 1 - %t1415 = load i64, ptr %t1414 - %t1416 = sub i64 %t1415, 1 - %t1417 = load { ptr, i64, i64 }, ptr %t1412 - %t1418 = extractvalue { ptr, i64, i64 } %t1417, 1 - %t1419 = icmp uge i64 %t1416, %t1418 - br i1 %t1419, label %range3908, label %inrange3909 -range3908: - call void @finch_panic_index(ptr @.str.2422, i64 1655, i64 %t1416, i64 %t1418) - unreachable -inrange3909: - %t1420 = extractvalue { ptr, i64, i64 } %t1417, 0 - %t1421 = getelementptr inbounds %S.ast.Node, ptr %t1420, i64 %t1416 - %t1422 = load %S.ast.Node, ptr %t1421 - %t1423 = call i1 @finch.gen.mutates(ptr %t1411, { ptr, i64, i64 } { ptr @.str.2421, i64 4, i64 0 }, %S.ast.Node %t1422) - br i1 %t1423, label %then3910, label %endif3912 -then3910: - %t1424 = load ptr, ptr %a1 - %t1425 = icmp eq ptr %t1424, null - br i1 %t1425, label %panic3913, label %ok3914 -panic3913: - call void @finch_panic(ptr @.str.2423, i64 1656, ptr @.str.2424) - unreachable -ok3914: - %t1426 = getelementptr inbounds %S.gen.Gen, ptr %t1424, i32 0, i32 17 - %t1427 = load i64, ptr %a1363 - %t1428 = load { ptr, i64, i64 }, ptr %t1426 - %t1429 = extractvalue { ptr, i64, i64 } %t1428, 1 - %t1430 = icmp uge i64 %t1427, %t1429 - br i1 %t1430, label %range3915, label %inrange3916 -range3915: - call void @finch_panic_index(ptr @.str.2425, i64 1656, i64 %t1427, i64 %t1429) - unreachable -inrange3916: - %t1431 = extractvalue { ptr, i64, i64 } %t1428, 0 - %t1432 = getelementptr inbounds %S.gen.Template, ptr %t1431, i64 %t1427 - %t1433 = getelementptr inbounds %S.gen.Template, ptr %t1432, i32 0, i32 7 - store i1 true, ptr %t1433 - %t1434 = load ptr, ptr %a1 - %t1435 = icmp eq ptr %t1434, null - br i1 %t1435, label %panic3917, label %ok3918 -panic3917: - call void @finch_panic(ptr @.str.2426, i64 1657, ptr @.str.2427) - unreachable -ok3918: - %t1436 = getelementptr inbounds %S.gen.Gen, ptr %t1434, i32 0, i32 24 - %t1437 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1436, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.gen.Template, ptr %a1379, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1439, ptr %a1440 - call void @finch_str_copy(ptr %a1441, ptr %a1440) - %t1442 = load { ptr, i64, i64 }, ptr %a1441 - %t1443 = load i64, ptr %t1437 - %t1444 = add i64 %t1443, 1 - call void @finch_arr_reserve(ptr %t1436, i64 %t1444, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t1445 = load ptr, ptr %t1436 - %t1446 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1445, i64 %t1443 - store { ptr, i64, i64 } %t1442, ptr %t1446 - store i64 %t1444, ptr %t1437 - store i1 true, ptr %a1234 - br label %endif3912 -endif3912: - call void @finch.drop.S_ast_Node(ptr %a1410) - br label %endif3901 -endif3901: - call void @finch.drop.S_gen_Template(ptr %a1379) - br label %for.step3889 -for.step3889: - %t1447 = load i64, ptr %a1363 - %t1448 = add i64 %t1447, 1 - store i64 %t1448, ptr %a1363 - br label %for.cond3887 -for.end3890: - br label %while.cond3832 -while.end3834: - %t1449 = load ptr, ptr %a1 - %t1450 = icmp eq ptr %t1449, null - br i1 %t1450, label %panic3919, label %ok3920 -panic3919: - call void @finch_panic(ptr @.str.2428, i64 1664, ptr @.str.2429) - unreachable -ok3920: - %t1451 = getelementptr inbounds %S.gen.Gen, ptr %t1449, i32 0, i32 15 - %t1452 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1451, i32 0, i32 1 - %t1453 = load i64, ptr %t1452 - store i64 0, ptr %a1454 - br label %for.cond3921 -for.cond3921: - %t1455 = load i64, ptr %a1454 - %t1456 = icmp slt i64 %t1455, %t1453 - br i1 %t1456, label %for.body3922, label %for.end3924 -for.body3922: - %t1457 = load ptr, ptr %a1 - %t1458 = icmp eq ptr %t1457, null - br i1 %t1458, label %panic3925, label %ok3926 -panic3925: - call void @finch_panic(ptr @.str.2430, i64 1665, ptr @.str.2431) - unreachable -ok3926: - %t1459 = getelementptr inbounds %S.gen.Gen, ptr %t1457, i32 0, i32 0 - %t1460 = load ptr, ptr %a1 - %t1461 = icmp eq ptr %t1460, null - br i1 %t1461, label %panic3927, label %ok3928 -panic3927: - call void @finch_panic(ptr @.str.2432, i64 1665, ptr @.str.2433) - unreachable -ok3928: - %t1462 = getelementptr inbounds %S.gen.Gen, ptr %t1460, i32 0, i32 15 - %t1463 = load i64, ptr %a1454 - %t1464 = load { ptr, i64, i64 }, ptr %t1462 - %t1465 = extractvalue { ptr, i64, i64 } %t1464, 1 - %t1466 = icmp uge i64 %t1463, %t1465 - br i1 %t1466, label %range3929, label %inrange3930 -range3929: - call void @finch_panic_index(ptr @.str.2434, i64 1665, i64 %t1463, i64 %t1465) - unreachable -inrange3930: - %t1467 = extractvalue { ptr, i64, i64 } %t1464, 0 - %t1468 = getelementptr inbounds %S.gen.FnSig, ptr %t1467, i64 %t1463 - %t1469 = getelementptr inbounds %S.gen.FnSig, ptr %t1468, i32 0, i32 16 - %t1470 = load i64, ptr %t1469 - %t1471 = load { ptr, i64, i64 }, ptr %t1459 - %t1472 = extractvalue { ptr, i64, i64 } %t1471, 1 - %t1473 = icmp uge i64 %t1470, %t1472 - br i1 %t1473, label %range3931, label %inrange3932 -range3931: - call void @finch_panic_index(ptr @.str.2435, i64 1665, i64 %t1470, i64 %t1472) - unreachable -inrange3932: - %t1474 = extractvalue { ptr, i64, i64 } %t1471, 0 - %t1475 = getelementptr inbounds %S.ast.Program, ptr %t1474, i64 %t1470 - %t1476 = getelementptr inbounds %S.ast.Program, ptr %t1475, i32 0, i32 8 - %t1477 = load ptr, ptr %a1 - %t1478 = icmp eq ptr %t1477, null - br i1 %t1478, label %panic3933, label %ok3934 -panic3933: - call void @finch_panic(ptr @.str.2436, i64 1665, ptr @.str.2437) - unreachable -ok3934: - %t1479 = getelementptr inbounds %S.gen.Gen, ptr %t1477, i32 0, i32 15 - %t1480 = load i64, ptr %a1454 - %t1481 = load { ptr, i64, i64 }, ptr %t1479 - %t1482 = extractvalue { ptr, i64, i64 } %t1481, 1 - %t1483 = icmp uge i64 %t1480, %t1482 - br i1 %t1483, label %range3935, label %inrange3936 -range3935: - call void @finch_panic_index(ptr @.str.2438, i64 1665, i64 %t1480, i64 %t1482) - unreachable -inrange3936: - %t1484 = extractvalue { ptr, i64, i64 } %t1481, 0 - %t1485 = getelementptr inbounds %S.gen.FnSig, ptr %t1484, i64 %t1480 - %t1486 = getelementptr inbounds %S.gen.FnSig, ptr %t1485, i32 0, i32 17 - %t1487 = load i64, ptr %t1486 - %t1488 = load { ptr, i64, i64 }, ptr %t1476 - %t1489 = extractvalue { ptr, i64, i64 } %t1488, 1 - %t1490 = icmp uge i64 %t1487, %t1489 - br i1 %t1490, label %range3937, label %inrange3938 -range3937: - call void @finch_panic_index(ptr @.str.2439, i64 1665, i64 %t1487, i64 %t1489) - unreachable -inrange3938: - %t1491 = extractvalue { ptr, i64, i64 } %t1488, 0 - %t1492 = getelementptr inbounds %S.ast.Node, ptr %t1491, i64 %t1487 - %t1493 = load %S.ast.Node, ptr %t1492 - store %S.ast.Node %t1493, ptr %a1494 - call void @finch.copy.S_ast_Node(ptr %a1495, ptr %a1494) - %t1496 = load %S.ast.Node, ptr %a1495 - store %S.ast.Node %t1496, ptr %a1497 - %t1498 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1499 = getelementptr inbounds %S.ast.Node, ptr %a1497, i32 0, i32 9 - %t1500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1499, i32 0, i32 1 - %t1501 = load i64, ptr %t1500 - %t1502 = sub i64 %t1501, 1 - %t1503 = load { ptr, i64, i64 }, ptr %t1498 - %t1504 = extractvalue { ptr, i64, i64 } %t1503, 1 - %t1505 = icmp uge i64 %t1502, %t1504 - br i1 %t1505, label %range3939, label %inrange3940 -range3939: - call void @finch_panic_index(ptr @.str.2440, i64 1666, i64 %t1502, i64 %t1504) - unreachable -inrange3940: - %t1506 = extractvalue { ptr, i64, i64 } %t1503, 0 - %t1507 = getelementptr inbounds %S.ast.Node, ptr %t1506, i64 %t1502 - %t1508 = load %S.ast.Node, ptr %t1507 - store %S.ast.Node %t1508, ptr %a1509 - call void @finch.copy.S_ast_Node(ptr %a1510, ptr %a1509) - %t1511 = load %S.ast.Node, ptr %a1510 - store %S.ast.Node %t1511, ptr %a1512 - %t1513 = load ptr, ptr %a1 - %t1514 = icmp eq ptr %t1513, null - br i1 %t1514, label %panic3941, label %ok3942 -panic3941: - call void @finch_panic(ptr @.str.2441, i64 1667, ptr @.str.2442) - unreachable -ok3942: - %t1515 = getelementptr inbounds %S.gen.Gen, ptr %t1513, i32 0, i32 15 - %t1516 = load i64, ptr %a1454 - %t1517 = load { ptr, i64, i64 }, ptr %t1515 - %t1518 = extractvalue { ptr, i64, i64 } %t1517, 1 - %t1519 = icmp uge i64 %t1516, %t1518 - br i1 %t1519, label %range3943, label %inrange3944 -range3943: - call void @finch_panic_index(ptr @.str.2443, i64 1667, i64 %t1516, i64 %t1518) - unreachable -inrange3944: - %t1520 = extractvalue { ptr, i64, i64 } %t1517, 0 - %t1521 = getelementptr inbounds %S.gen.FnSig, ptr %t1520, i64 %t1516 - %t1522 = getelementptr inbounds %S.gen.FnSig, ptr %t1521, i32 0, i32 13 - %t1523 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1522, i32 0, i32 1 - %t1524 = load i64, ptr %t1523 - store i64 0, ptr %a1525 - br label %for.cond3945 -for.cond3945: - %t1526 = load i64, ptr %a1525 - %t1527 = icmp slt i64 %t1526, %t1524 - br i1 %t1527, label %for.body3946, label %for.end3948 -for.body3946: - %t1528 = load ptr, ptr %a1 - %t1529 = icmp eq ptr %t1528, null - br i1 %t1529, label %panic3949, label %ok3950 -panic3949: - call void @finch_panic(ptr @.str.2444, i64 1668, ptr @.str.2445) - unreachable -ok3950: - %t1530 = getelementptr inbounds %S.gen.Gen, ptr %t1528, i32 0, i32 15 - %t1531 = load i64, ptr %a1454 - %t1532 = load { ptr, i64, i64 }, ptr %t1530 - %t1533 = extractvalue { ptr, i64, i64 } %t1532, 1 - %t1534 = icmp uge i64 %t1531, %t1533 - br i1 %t1534, label %range3951, label %inrange3952 -range3951: - call void @finch_panic_index(ptr @.str.2446, i64 1668, i64 %t1531, i64 %t1533) - unreachable -inrange3952: - %t1535 = extractvalue { ptr, i64, i64 } %t1532, 0 - %t1536 = getelementptr inbounds %S.gen.FnSig, ptr %t1535, i64 %t1531 - %t1537 = getelementptr inbounds %S.gen.FnSig, ptr %t1536, i32 0, i32 13 - %t1538 = load i64, ptr %a1525 - %t1539 = load { ptr, i64, i64 }, ptr %t1537 - %t1540 = extractvalue { ptr, i64, i64 } %t1539, 1 - %t1541 = icmp uge i64 %t1538, %t1540 - br i1 %t1541, label %range3953, label %inrange3954 -range3953: - call void @finch_panic_index(ptr @.str.2447, i64 1668, i64 %t1538, i64 %t1540) - unreachable -inrange3954: - %t1542 = extractvalue { ptr, i64, i64 } %t1539, 0 - %t1543 = getelementptr inbounds %S.ast.Type, ptr %t1542, i64 %t1538 - %t1544 = load %S.ast.Type, ptr %t1543 - store %S.ast.Type %t1544, ptr %a1545 - call void @finch.copy.S_ast_Type(ptr %a1546, ptr %a1545) - %t1547 = load %S.ast.Type, ptr %a1546 - store %S.ast.Type %t1547, ptr %a1548 - %t1549 = load ptr, ptr %a1 - %t1550 = icmp eq ptr %t1549, null - br i1 %t1550, label %panic3955, label %ok3956 -panic3955: - call void @finch_panic(ptr @.str.2448, i64 1669, ptr @.str.2449) - unreachable -ok3956: - %t1551 = getelementptr inbounds %S.gen.Gen, ptr %t1549, i32 0, i32 15 - %t1552 = load i64, ptr %a1454 - %t1553 = load { ptr, i64, i64 }, ptr %t1551 - %t1554 = extractvalue { ptr, i64, i64 } %t1553, 1 - %t1555 = icmp uge i64 %t1552, %t1554 - br i1 %t1555, label %range3957, label %inrange3958 -range3957: - call void @finch_panic_index(ptr @.str.2450, i64 1669, i64 %t1552, i64 %t1554) - unreachable -inrange3958: - %t1556 = extractvalue { ptr, i64, i64 } %t1553, 0 - %t1557 = getelementptr inbounds %S.gen.FnSig, ptr %t1556, i64 %t1552 - %t1558 = getelementptr inbounds %S.gen.FnSig, ptr %t1557, i32 0, i32 15 - %t1559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1558, i32 0, i32 1 - %t1560 = load ptr, ptr %a1 - %t1561 = load %S.ast.Type, ptr %a1548 - %t1562 = call i1 @finch.gen.owning(ptr %t1560, %S.ast.Type %t1561) - br label %logic.from3959 -logic.from3959: - br i1 %t1562, label %logic.rhs3960, label %logic.end3961 -logic.rhs3960: - %t1563 = load ptr, ptr %a1 - %t1564 = load ptr, ptr %a1 - %t1565 = icmp eq ptr %t1564, null - br i1 %t1565, label %panic3962, label %ok3963 -panic3962: - call void @finch_panic(ptr @.str.2451, i64 1669, ptr @.str.2452) - unreachable -ok3963: - %t1566 = getelementptr inbounds %S.gen.Gen, ptr %t1564, i32 0, i32 15 - %t1567 = load i64, ptr %a1454 - %t1568 = load { ptr, i64, i64 }, ptr %t1566 - %t1569 = extractvalue { ptr, i64, i64 } %t1568, 1 - %t1570 = icmp uge i64 %t1567, %t1569 - br i1 %t1570, label %range3964, label %inrange3965 -range3964: - call void @finch_panic_index(ptr @.str.2453, i64 1669, i64 %t1567, i64 %t1569) - unreachable -inrange3965: - %t1571 = extractvalue { ptr, i64, i64 } %t1568, 0 - %t1572 = getelementptr inbounds %S.gen.FnSig, ptr %t1571, i64 %t1567 - %t1573 = getelementptr inbounds %S.gen.FnSig, ptr %t1572, i32 0, i32 14 - %t1574 = load i64, ptr %a1525 - %t1575 = load { ptr, i64, i64 }, ptr %t1573 - %t1576 = extractvalue { ptr, i64, i64 } %t1575, 1 - %t1577 = icmp uge i64 %t1574, %t1576 - br i1 %t1577, label %range3966, label %inrange3967 -range3966: - call void @finch_panic_index(ptr @.str.2454, i64 1669, i64 %t1574, i64 %t1576) - unreachable -inrange3967: - %t1578 = extractvalue { ptr, i64, i64 } %t1575, 0 - %t1579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1578, i64 %t1574 - %t1580 = load { ptr, i64, i64 }, ptr %t1579 - %t1581 = load %S.ast.Node, ptr %a1512 - %t1582 = call i1 @finch.gen.mutates(ptr %t1563, { ptr, i64, i64 } %t1580, %S.ast.Node %t1581) - %t1583 = xor i1 %t1582, true - br label %logic.rend3968 -logic.rend3968: - br label %logic.end3961 -logic.end3961: - %t1584 = phi i1 [ false, %logic.from3959 ], [ %t1583, %logic.rend3968 ] - %t1585 = load i64, ptr %t1559 - %t1586 = add i64 %t1585, 1 - call void @finch_arr_reserve(ptr %t1558, i64 %t1586, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t1587 = load ptr, ptr %t1558 - %t1588 = getelementptr inbounds i1, ptr %t1587, i64 %t1585 - store i1 %t1584, ptr %t1588 - store i64 %t1586, ptr %t1559 - call void @finch.drop.S_ast_Type(ptr %a1548) - br label %for.step3947 -for.step3947: - %t1589 = load i64, ptr %a1525 - %t1590 = add i64 %t1589, 1 - store i64 %t1590, ptr %a1525 - br label %for.cond3945 -for.end3948: - call void @finch.drop.S_ast_Node(ptr %a1512) - call void @finch.drop.S_ast_Node(ptr %a1497) - br label %for.step3923 -for.step3923: - %t1591 = load i64, ptr %a1454 - %t1592 = add i64 %t1591, 1 - store i64 %t1592, ptr %a1454 - br label %for.cond3921 -for.end3924: - 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 %panic3969, label %ok3970 -panic3969: - call void @finch_panic(ptr @.str.2455, i64 1675, ptr @.str.2456) - unreachable -ok3970: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t8, i32 0, i32 1 - %t10 = load i64, ptr %t9 - store i64 0, ptr %a11 - br label %for.cond3971 -for.cond3971: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body3972, label %for.end3974 -for.body3972: - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic3975, label %ok3976 -panic3975: - call void @finch_panic(ptr @.str.2457, i64 1676, ptr @.str.2458) - unreachable -ok3976: - %t16 = getelementptr inbounds %S.gen.Gen, ptr %t14, i32 0, i32 17 - %t17 = load i64, ptr %a11 - %t18 = load { ptr, i64, i64 }, ptr %t16 - %t19 = extractvalue { ptr, i64, i64 } %t18, 1 - %t20 = icmp uge i64 %t17, %t19 - br i1 %t20, label %range3977, label %inrange3978 -range3977: - call void @finch_panic_index(ptr @.str.2459, i64 1676, i64 %t17, i64 %t19) - unreachable -inrange3978: - %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.from3979 -logic.from3979: - br i1 %t34, label %logic.rhs3980, label %logic.end3981 -logic.rhs3980: - %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.rend3982 -logic.rend3982: - br label %logic.end3981 -logic.end3981: - %t42 = phi i1 [ false, %logic.from3979 ], [ %t41, %logic.rend3982 ] - br label %logic.from3983 -logic.from3983: - br i1 %t42, label %logic.rhs3984, label %logic.end3985 -logic.rhs3984: - %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.rend3986 -logic.rend3986: - br label %logic.end3985 -logic.end3985: - %t50 = phi i1 [ false, %logic.from3983 ], [ %t49, %logic.rend3986 ] - br label %logic.from3987 -logic.from3987: - br i1 %t50, label %logic.rhs3988, label %logic.end3989 -logic.rhs3988: - %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.rend3990 -logic.rend3990: - br label %logic.end3989 -logic.end3989: - %t55 = phi i1 [ false, %logic.from3987 ], [ %t54, %logic.rend3990 ] - br i1 %t55, label %then3991, label %endif3993 -then3991: - %t56 = load i64, ptr %a11 - call void @finch.drop.S_gen_Template(ptr %a27) - ret i64 %t56 -endif3993: - call void @finch.drop.S_gen_Template(ptr %a27) - br label %for.step3973 -for.step3973: - %t57 = load i64, ptr %a11 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a11 - br label %for.cond3971 -for.end3974: - 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.cond3994 -each.cond3994: - %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.body3995, label %each.end3997 -each.body3995: - %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.step3996 -each.step3996: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %each.cond3994 -each.end3997: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2460, i64 2, i64 0 }, ptr %a22 - call void @finch_str_join(ptr %a23, ptr %a2, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t24 -} - -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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca %S.gen.Template, align 16 - %a48 = alloca %S.gen.Template, align 16 - %a50 = alloca %S.gen.Template, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.2461, 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 %then3998, label %endif4000 -then3998: - %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.2462, 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.2463, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t24, ptr %a27 - store { ptr, i64, i64 } %t25, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.2464, i64 34, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - call void @finch.gen.fail(ptr %t13, %S.ast.Node %t14, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a36 - call void @finch_str_drop(ptr %a36) - br label %endif4000 -endif4000: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic4001, label %ok4002 -panic4001: - call void @finch_panic(ptr @.str.2465, i64 1698, ptr @.str.2466) - unreachable -ok4002: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 17 - %t40 = load i64, ptr %a10 - %t41 = load { ptr, i64, i64 }, ptr %t39 - %t42 = extractvalue { ptr, i64, i64 } %t41, 1 - %t43 = icmp uge i64 %t40, %t42 - br i1 %t43, label %range4003, label %inrange4004 -range4003: - call void @finch_panic_index(ptr @.str.2467, i64 1698, i64 %t40, i64 %t42) - unreachable -inrange4004: - %t44 = extractvalue { ptr, i64, i64 } %t41, 0 - %t45 = getelementptr inbounds %S.gen.Template, ptr %t44, i64 %t40 - %t46 = load %S.gen.Template, ptr %t45 - store %S.gen.Template %t46, ptr %a47 - call void @finch.copy.S_gen_Template(ptr %a48, ptr %a47) - %t49 = load %S.gen.Template, ptr %a48 - store %S.gen.Template %t49, ptr %a50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t52 = load i64, ptr %t51 - %t53 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t53, i32 0, i32 1 - %t55 = load i64, ptr %t54 - %t56 = icmp ne i64 %t52, %t55 - br i1 %t56, label %then4005, label %endif4007 -then4005: - %t57 = load ptr, ptr %a1 - %t58 = load %S.ast.Node, ptr %a5 - %t59 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2468, i64 7, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a60 - %t64 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - %t66 = load i64, ptr %t65 - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.2469, i64 24, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - %t80 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t79, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t79, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.2470, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2471, i64 2, i64 0 }, ptr %a93 - call void @finch_str_join(ptr %a94, ptr %t91, ptr %a93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t90, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t90, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t101, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.2472, i64 11, i64 0 }, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t108 = load i64, ptr %t107 - call void @finch_str_from_int(ptr %a109, i64 %t108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t106, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t106, ptr %a114 - call void @finch_str_drop(ptr %a114) - store { ptr, i64, i64 } %t110, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t57, %S.ast.Node %t58, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - br label %endif4007 -endif4007: - %t118 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.2473, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a119 - %t123 = load { ptr, i64, i64 }, ptr %a4 - %t124 = call { ptr, i64, i64 } @finch.gen.shownTypes({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t130, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.2474, i64 1, i64 0 }, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a2 - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = call i64 @finch.gen.findStruct(ptr %t137, { ptr, i64, i64 } %t138, { ptr, i64, i64 } %t139) - %t141 = icmp slt i64 %t140, 0 - br i1 %t141, label %then4008, label %endif4010 -then4008: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4011, label %ok4012 -panic4011: - call void @finch_panic(ptr @.str.2475, i64 1704, ptr @.str.2476) - unreachable -ok4012: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 16 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_copy(ptr %a148, ptr %a147) - %t149 = load { ptr, i64, i64 }, ptr %a148 - %t150 = insertvalue %S.gen.StructDef zeroinitializer, { ptr, i64, i64 } %t149, 0 - %t151 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t151, ptr %a152 - call void @finch_str_copy(ptr %a153, ptr %a152) - %t154 = load { ptr, i64, i64 }, ptr %a153 - %t155 = insertvalue %S.gen.StructDef %t150, { ptr, i64, i64 } %t154, 1 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_copy(ptr %a158, ptr %a157) - %t159 = load { ptr, i64, i64 }, ptr %a158 - %t160 = insertvalue %S.gen.StructDef %t155, { ptr, i64, i64 } %t159, 5 - %t161 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 3 - %t162 = load { ptr, i64, i64 }, ptr %t161 - store { ptr, i64, i64 } %t162, ptr %a163 - call void @finch.copy.arr_str(ptr %a164, ptr %a163) - %t165 = load { ptr, i64, i64 }, ptr %a164 - %t166 = insertvalue %S.gen.StructDef %t160, { ptr, i64, i64 } %t165, 6 - %t167 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t167, ptr %a168 - call void @finch.copy.arr_S_ast_Type(ptr %a169, ptr %a168) - %t170 = load { ptr, i64, i64 }, ptr %a169 - %t171 = insertvalue %S.gen.StructDef %t166, { ptr, i64, i64 } %t170, 7 - %t172 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 4 - %t173 = load i64, ptr %t172 - %t174 = insertvalue %S.gen.StructDef %t171, i64 %t173, 13 - %t175 = getelementptr inbounds %S.gen.Template, ptr %a50, i32 0, i32 5 - %t176 = load i64, ptr %t175 - %t177 = insertvalue %S.gen.StructDef %t174, i64 %t176, 14 - %t178 = load i64, ptr %t145 - %t179 = add i64 %t178, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t179, i64 ptrtoint (ptr getelementptr (%S.gen.StructDef, ptr null, i32 1) to i64)) - %t180 = load ptr, ptr %t144 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t178 - store %S.gen.StructDef %t177, ptr %t181 - store i64 %t179, ptr %t145 - %t182 = load ptr, ptr %a1 - %t183 = load ptr, ptr %a1 - %t184 = icmp eq ptr %t183, null - br i1 %t184, label %panic4013, label %ok4014 -panic4013: - call void @finch_panic(ptr @.str.2477, i64 1705, ptr @.str.2478) - unreachable -ok4014: - %t185 = getelementptr inbounds %S.gen.Gen, ptr %t183, i32 0, i32 16 - %t186 = getelementptr inbounds { ptr, i64, i64 }, ptr %t185, i32 0, i32 1 - %t187 = load i64, ptr %t186 - %t188 = sub i64 %t187, 1 - call void @finch.gen.resolveStruct(ptr %t182, i64 %t188) - br label %endif4010 -endif4010: - %t189 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.2479, i64 6, i64 0 }, 0 - %t190 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_copy(ptr %a192, ptr %a191) - %t193 = load { ptr, i64, i64 }, ptr %a192 - %t194 = insertvalue %S.ast.Type %t189, { ptr, i64, i64 } %t193, 2 - %t195 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_copy(ptr %a197, ptr %a196) - %t198 = load { ptr, i64, i64 }, ptr %a197 - %t199 = insertvalue %S.ast.Type %t194, { ptr, i64, i64 } %t198, 3 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Template(ptr %a50) - ret %S.ast.Type %t199 -} - -define internal i64 @finch.gen.instFn(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, %S.ast.Node %p4) { -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 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca i64, align 16 - %a61 = alloca i64, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a85 = alloca %S.ast.Node, align 16 - %a87 = alloca %S.ast.Node, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca %S.gen.FnSig, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %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 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca %S.ast.Type, align 16 - %a327 = alloca %S.ast.Node, align 16 - %a328 = alloca %S.ast.Node, align 16 - %a330 = alloca %S.ast.Node, align 16 - %a335 = alloca i64, align 16 - %a357 = alloca %S.ast.Type, align 16 - %a361 = alloca %S.ast.Type, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.gen.FnSig, align 16 - %a453 = alloca %S.gen.FnSig, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4015, label %ok4016 -panic4015: - call void @finch_panic(ptr @.str.2480, i64 1712, ptr @.str.2481) - unreachable -ok4016: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4017, label %inrange4018 -range4017: - call void @finch_panic_index(ptr @.str.2482, i64 1712, i64 %t9, i64 %t11) - unreachable -inrange4018: - %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.2483, 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) - store { ptr, i64, i64 } %t25, ptr %a31 - call void @finch_str_drop(ptr %a31) - store { ptr, i64, i64 } %t27, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2484, i64 1, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then4019, label %else4020 -then4019: - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - %t51 = call i64 @finch.gen.findMethod(ptr %t44, { ptr, i64, i64 } %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t50) - store i64 %t51, ptr %a52 - %t53 = load i64, ptr %a52 - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4022, label %endif4024 -then4022: - %t55 = load i64, ptr %a52 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t55 -endif4024: - br label %endif4021 -else4020: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t58 = load { ptr, i64, i64 }, ptr %t57 - %t59 = load { ptr, i64, i64 }, ptr %a39 - %t60 = call i64 @finch.gen.findFn(ptr %t56, { ptr, i64, i64 } %t58, { ptr, i64, i64 } %t59) - store i64 %t60, ptr %a61 - %t62 = load i64, ptr %a61 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then4025, label %endif4027 -then4025: - %t64 = load i64, ptr %a61 - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t64 -endif4027: - br label %endif4021 -endif4021: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4028, label %ok4029 -panic4028: - call void @finch_panic(ptr @.str.2485, i64 1725, ptr @.str.2486) - unreachable -ok4029: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 0 - %t68 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t69 = load i64, ptr %t68 - %t70 = load { ptr, i64, i64 }, ptr %t67 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 %t69, %t71 - br i1 %t72, label %range4030, label %inrange4031 -range4030: - call void @finch_panic_index(ptr @.str.2487, i64 1725, i64 %t69, i64 %t71) - unreachable -inrange4031: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Program, ptr %t73, i64 %t69 - %t75 = getelementptr inbounds %S.ast.Program, ptr %t74, i32 0, i32 8 - %t76 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t77 = load i64, ptr %t76 - %t78 = load { ptr, i64, i64 }, ptr %t75 - %t79 = extractvalue { ptr, i64, i64 } %t78, 1 - %t80 = icmp uge i64 %t77, %t79 - br i1 %t80, label %range4032, label %inrange4033 -range4032: - call void @finch_panic_index(ptr @.str.2488, i64 1725, i64 %t77, i64 %t79) - unreachable -inrange4033: - %t81 = extractvalue { ptr, i64, i64 } %t78, 0 - %t82 = getelementptr inbounds %S.ast.Node, ptr %t81, i64 %t77 - %t83 = load %S.ast.Node, ptr %t82 - store %S.ast.Node %t83, ptr %a84 - call void @finch.copy.S_ast_Node(ptr %a85, ptr %a84) - %t86 = load %S.ast.Node, ptr %a85 - store %S.ast.Node %t86, ptr %a87 - %t88 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_copy(ptr %a91, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - %t93 = insertvalue %S.gen.FnSig zeroinitializer, { ptr, i64, i64 } %t92, 0 - %t94 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_copy(ptr %a96, ptr %a95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - %t98 = insertvalue %S.gen.FnSig %t93, { ptr, i64, i64 } %t97, 1 - %t99 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t100 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_copy(ptr %a102, ptr %a101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - %t104 = insertvalue %S.gen.FnSig %t98, { ptr, i64, i64 } %t103, 3 - %t105 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - store { ptr, i64, i64 } %t106, ptr %a107 - call void @finch.copy.arr_str(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = insertvalue %S.gen.FnSig %t104, { ptr, i64, i64 } %t109, 6 - %t111 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch.copy.arr_S_ast_Type(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.FnSig %t110, { ptr, i64, i64 } %t114, 7 - %t116 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_copy(ptr %a118, ptr %a117) - %t119 = load { ptr, i64, i64 }, ptr %a118 - %t120 = insertvalue %S.gen.FnSig %t115, { ptr, i64, i64 } %t119, 8 - %t121 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 7 - %t122 = load i1, ptr %t121 - %t123 = insertvalue %S.gen.FnSig %t120, i1 %t122, 9 - %t124 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 7 - %t125 = load i1, ptr %t124 - %t126 = insertvalue %S.gen.FnSig %t123, i1 %t125, 10 - %t127 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 4 - %t128 = load i64, ptr %t127 - %t129 = insertvalue %S.gen.FnSig %t126, i64 %t128, 16 - %t130 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 5 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.FnSig %t129, i64 %t131, 17 - store %S.gen.FnSig %t132, ptr %a133 - %t134 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t135) - store { ptr, i64, i64 } { ptr @.str.2489, i64 7, i64 0 }, ptr %a138 - store { ptr, i64, i64 } %t136, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t141, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.2490, i64 1, i64 0 }, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = load { ptr, i64, i64 }, ptr %a39 - %t148 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t146, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t146, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - %t155 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t156 = load { ptr, i64, i64 }, ptr %t155 - store { ptr, i64, i64 } %t154, ptr %t155 - store { ptr, i64, i64 } %t156, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 2 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i32 0, i32 1 - %t160 = load i64, ptr %t159 - %t161 = icmp sgt i64 %t160, 0 - br i1 %t161, label %then4034, label %endif4036 -then4034: - %t162 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 1 - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_copy(ptr %a166, ptr %a165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - %t168 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t167, ptr %t164 - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t171 = load { ptr, i64, i64 }, ptr %t170 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 2 - store { ptr, i64, i64 } %t171, ptr %a173 - call void @finch_str_copy(ptr %a174, ptr %a173) - %t175 = load { ptr, i64, i64 }, ptr %a174 - %t176 = load { ptr, i64, i64 }, ptr %t172 - store { ptr, i64, i64 } %t175, ptr %t172 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2491, i64 1, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a180 - %t184 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t183, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t183, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t190, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t195 = load { ptr, i64, i64 }, ptr %t194 - %t196 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t195) - store { ptr, i64, i64 } { ptr @.str.2492, i64 7, i64 0 }, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - store { ptr, i64, i64 } %t201, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.2493, i64 1, i64 0 }, ptr %a204 - call void @finch_str_concat(ptr %a202, ptr %a203, ptr %a204) - store { ptr, i64, i64 } %t201, ptr %a205 - call void @finch_str_drop(ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a202 - %t207 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 2 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t208) - store { ptr, i64, i64 } %t206, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t206, ptr %a213 - call void @finch_str_drop(ptr %a213) - store { ptr, i64, i64 } %t209, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.2494, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } %t220, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t220, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 11 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t227, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_drop(ptr %a230) - br label %endif4036 -endif4036: - %t231 = load ptr, ptr %a1 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic4037, label %ok4038 -panic4037: - call void @finch_panic(ptr @.str.2495, i64 1734, ptr @.str.2496) - unreachable -ok4038: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 18 - %t234 = load { ptr, i64, i64 }, ptr %t233 - store { ptr, i64, i64 } %t234, ptr %a235 - call void @finch.copy.arr_str(ptr %a236, ptr %a235) - %t237 = load { ptr, i64, i64 }, ptr %a236 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic4039, label %ok4040 -panic4039: - call void @finch_panic(ptr @.str.2497, i64 1735, ptr @.str.2498) - unreachable -ok4040: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 19 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - call void @finch.copy.arr_S_ast_Type(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t245, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = icmp eq ptr %t247, null - br i1 %t248, label %panic4041, label %ok4042 -panic4041: - call void @finch_panic(ptr @.str.2499, i64 1736, ptr @.str.2500) - unreachable -ok4042: - %t249 = getelementptr inbounds %S.gen.Gen, ptr %t247, i32 0, i32 14 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - call void @finch_str_copy(ptr %a252, ptr %a251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t253, ptr %a254 - %t255 = load ptr, ptr %a1 - %t256 = icmp eq ptr %t255, null - br i1 %t256, label %panic4043, label %ok4044 -panic4043: - call void @finch_panic(ptr @.str.2501, i64 1737, ptr @.str.2502) - unreachable -ok4044: - %t257 = getelementptr inbounds %S.gen.Gen, ptr %t255, i32 0, i32 20 - %t258 = load { ptr, i64, i64 }, ptr %t257 - store { ptr, i64, i64 } %t258, ptr %a259 - call void @finch_str_copy(ptr %a260, ptr %a259) - %t261 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t261, ptr %a262 - %t263 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = load ptr, ptr %a1 - %t266 = icmp eq ptr %t265, null - br i1 %t266, label %panic4045, label %ok4046 -panic4045: - call void @finch_panic(ptr @.str.2503, i64 1738, ptr @.str.2504) - unreachable -ok4046: - %t267 = getelementptr inbounds %S.gen.Gen, ptr %t265, i32 0, i32 18 - store { ptr, i64, i64 } %t264, ptr %a268 - call void @finch.copy.arr_str(ptr %a269, ptr %a268) - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t270, ptr %t267 - store { ptr, i64, i64 } %t271, ptr %a272 - call void @finch.drop.arr_str(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a3 - %t274 = load ptr, ptr %a1 - %t275 = icmp eq ptr %t274, null - br i1 %t275, label %panic4047, label %ok4048 -panic4047: - call void @finch_panic(ptr @.str.2505, i64 1739, ptr @.str.2506) - unreachable -ok4048: - %t276 = getelementptr inbounds %S.gen.Gen, ptr %t274, i32 0, i32 19 - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch.copy.arr_S_ast_Type(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch.drop.arr_S_ast_Type(ptr %a281) - %t282 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - %t284 = load ptr, ptr %a1 - %t285 = icmp eq ptr %t284, null - br i1 %t285, label %panic4049, label %ok4050 -panic4049: - call void @finch_panic(ptr @.str.2507, i64 1740, ptr @.str.2508) - unreachable -ok4050: - %t286 = getelementptr inbounds %S.gen.Gen, ptr %t284, i32 0, i32 14 - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_copy(ptr %a288, ptr %a287) - %t289 = load { ptr, i64, i64 }, ptr %a288 - %t290 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t289, ptr %t286 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 8 - %t293 = load { ptr, i64, i64 }, ptr %t292 - store { ptr, i64, i64 } { ptr @.str.2509, i64 17, i64 0 }, ptr %a295 - store { ptr, i64, i64 } %t293, ptr %a296 - call void @finch_str_concat(ptr %a294, ptr %a295, ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t297, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.2510, i64 1, i64 0 }, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t297, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - %t303 = load ptr, ptr %a1 - %t304 = icmp eq ptr %t303, null - br i1 %t304, label %panic4051, label %ok4052 -panic4051: - call void @finch_panic(ptr @.str.2511, i64 1741, ptr @.str.2512) - unreachable -ok4052: - %t305 = getelementptr inbounds %S.gen.Gen, ptr %t303, i32 0, i32 20 - %t306 = load { ptr, i64, i64 }, ptr %t305 - store { ptr, i64, i64 } %t302, ptr %t305 - store { ptr, i64, i64 } %t306, ptr %a307 - call void @finch_str_drop(ptr %a307) - %t308 = load ptr, ptr %a1 - %t309 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 5 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = load %S.ast.Node, ptr %a87 - %t312 = call %S.ast.Type @finch.gen.resolve(ptr %t308, %S.ast.Type %t310, %S.ast.Node %t311) - %t313 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 12 - %t314 = load %S.ast.Type, ptr %t313 - store %S.ast.Type %t312, ptr %t313 - store %S.ast.Type %t314, ptr %a315 - call void @finch.drop.S_ast_Type(ptr %a315) - %t316 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = sub i64 %t319, 1 - %t321 = load { ptr, i64, i64 }, ptr %t316 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range4053, label %inrange4054 -range4053: - call void @finch_panic_index(ptr @.str.2513, i64 1743, i64 %t320, i64 %t322) - unreachable -inrange4054: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds %S.ast.Node, ptr %t324, i64 %t320 - %t326 = load %S.ast.Node, ptr %t325 - store %S.ast.Node %t326, ptr %a327 - call void @finch.copy.S_ast_Node(ptr %a328, ptr %a327) - %t329 = load %S.ast.Node, ptr %a328 - store %S.ast.Node %t329, ptr %a330 - %t331 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = sub i64 %t333, 1 - store i64 0, ptr %a335 - br label %for.cond4055 -for.cond4055: - %t336 = load i64, ptr %a335 - %t337 = icmp slt i64 %t336, %t334 - br i1 %t337, label %for.body4056, label %for.end4058 -for.body4056: - %t338 = load ptr, ptr %a1 - %t339 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t340 = load i64, ptr %a335 - %t341 = load { ptr, i64, i64 }, ptr %t339 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range4059, label %inrange4060 -range4059: - call void @finch_panic_index(ptr @.str.2514, i64 1745, i64 %t340, i64 %t342) - unreachable -inrange4060: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Node, ptr %t344, i64 %t340 - %t346 = getelementptr inbounds %S.ast.Node, ptr %t345, i32 0, i32 5 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t349 = load i64, ptr %a335 - %t350 = load { ptr, i64, i64 }, ptr %t348 - %t351 = extractvalue { ptr, i64, i64 } %t350, 1 - %t352 = icmp uge i64 %t349, %t351 - br i1 %t352, label %range4061, label %inrange4062 -range4061: - call void @finch_panic_index(ptr @.str.2515, i64 1745, i64 %t349, i64 %t351) - unreachable -inrange4062: - %t353 = extractvalue { ptr, i64, i64 } %t350, 0 - %t354 = getelementptr inbounds %S.ast.Node, ptr %t353, i64 %t349 - %t355 = load %S.ast.Node, ptr %t354 - %t356 = call %S.ast.Type @finch.gen.resolve(ptr %t338, %S.ast.Type %t347, %S.ast.Node %t355) - store %S.ast.Type %t356, ptr %a357 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 13 - %t359 = getelementptr inbounds { ptr, i64, i64 }, ptr %t358, i32 0, i32 1 - %t360 = load %S.ast.Type, ptr %a357 - store %S.ast.Type %t360, ptr %a361 - call void @finch.copy.S_ast_Type(ptr %a362, ptr %a361) - %t363 = load %S.ast.Type, ptr %a362 - %t364 = load i64, ptr %t359 - %t365 = add i64 %t364, 1 - call void @finch_arr_reserve(ptr %t358, i64 %t365, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t366 = load ptr, ptr %t358 - %t367 = getelementptr inbounds %S.ast.Type, ptr %t366, i64 %t364 - store %S.ast.Type %t363, ptr %t367 - store i64 %t365, ptr %t359 - %t368 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 14 - %t369 = getelementptr inbounds { ptr, i64, i64 }, ptr %t368, i32 0, i32 1 - %t370 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t371 = load i64, ptr %a335 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4063, label %inrange4064 -range4063: - call void @finch_panic_index(ptr @.str.2516, i64 1747, i64 %t371, i64 %t373) - unreachable -inrange4064: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds %S.ast.Node, ptr %t375, i64 %t371 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i32 0, i32 1 - %t378 = load { ptr, i64, i64 }, ptr %t377 - store { ptr, i64, i64 } %t378, ptr %a379 - call void @finch_str_copy(ptr %a380, ptr %a379) - %t381 = load { ptr, i64, i64 }, ptr %a380 - %t382 = load i64, ptr %t369 - %t383 = add i64 %t382, 1 - call void @finch_arr_reserve(ptr %t368, i64 %t383, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t384 = load ptr, ptr %t368 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t382 - store { ptr, i64, i64 } %t381, ptr %t385 - store i64 %t383, ptr %t369 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %a133, i32 0, i32 15 - %t387 = getelementptr inbounds { ptr, i64, i64 }, ptr %t386, i32 0, i32 1 - %t388 = load ptr, ptr %a1 - %t389 = load %S.ast.Type, ptr %a357 - %t390 = call i1 @finch.gen.owning(ptr %t388, %S.ast.Type %t389) - br label %logic.from4065 -logic.from4065: - br i1 %t390, label %logic.rhs4066, label %logic.end4067 -logic.rhs4066: - %t391 = load ptr, ptr %a1 - %t392 = getelementptr inbounds %S.ast.Node, ptr %a87, i32 0, i32 9 - %t393 = load i64, ptr %a335 - %t394 = load { ptr, i64, i64 }, ptr %t392 - %t395 = extractvalue { ptr, i64, i64 } %t394, 1 - %t396 = icmp uge i64 %t393, %t395 - br i1 %t396, label %range4068, label %inrange4069 -range4068: - call void @finch_panic_index(ptr @.str.2517, i64 1748, i64 %t393, i64 %t395) - unreachable -inrange4069: - %t397 = extractvalue { ptr, i64, i64 } %t394, 0 - %t398 = getelementptr inbounds %S.ast.Node, ptr %t397, i64 %t393 - %t399 = getelementptr inbounds %S.ast.Node, ptr %t398, i32 0, i32 1 - %t400 = load { ptr, i64, i64 }, ptr %t399 - %t401 = load %S.ast.Node, ptr %a330 - %t402 = call i1 @finch.gen.mutates(ptr %t391, { ptr, i64, i64 } %t400, %S.ast.Node %t401) - %t403 = xor i1 %t402, true - br label %logic.rend4070 -logic.rend4070: - br label %logic.end4067 -logic.end4067: - %t404 = phi i1 [ false, %logic.from4065 ], [ %t403, %logic.rend4070 ] - %t405 = load i64, ptr %t387 - %t406 = add i64 %t405, 1 - call void @finch_arr_reserve(ptr %t386, i64 %t406, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t407 = load ptr, ptr %t386 - %t408 = getelementptr inbounds i1, ptr %t407, i64 %t405 - store i1 %t404, ptr %t408 - store i64 %t406, ptr %t387 - call void @finch.drop.S_ast_Type(ptr %a357) - br label %for.step4057 -for.step4057: - %t409 = load i64, ptr %a335 - %t410 = add i64 %t409, 1 - store i64 %t410, ptr %a335 - br label %for.cond4055 -for.end4058: - %t411 = load { ptr, i64, i64 }, ptr %a238 - %t412 = load ptr, ptr %a1 - %t413 = icmp eq ptr %t412, null - br i1 %t413, label %panic4071, label %ok4072 -panic4071: - call void @finch_panic(ptr @.str.2518, i64 1750, ptr @.str.2519) - unreachable -ok4072: - %t414 = getelementptr inbounds %S.gen.Gen, ptr %t412, i32 0, i32 18 - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch.copy.arr_str(ptr %a416, ptr %a415) - %t417 = load { ptr, i64, i64 }, ptr %a416 - %t418 = load { ptr, i64, i64 }, ptr %t414 - store { ptr, i64, i64 } %t417, ptr %t414 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch.drop.arr_str(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a246 - %t421 = load ptr, ptr %a1 - %t422 = icmp eq ptr %t421, null - br i1 %t422, label %panic4073, label %ok4074 -panic4073: - call void @finch_panic(ptr @.str.2520, i64 1751, ptr @.str.2521) - unreachable -ok4074: - %t423 = getelementptr inbounds %S.gen.Gen, ptr %t421, i32 0, i32 19 - store { ptr, i64, i64 } %t420, ptr %a424 - call void @finch.copy.arr_S_ast_Type(ptr %a425, ptr %a424) - %t426 = load { ptr, i64, i64 }, ptr %a425 - %t427 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t426, ptr %t423 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch.drop.arr_S_ast_Type(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a254 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic4075, label %ok4076 -panic4075: - call void @finch_panic(ptr @.str.2522, i64 1752, ptr @.str.2523) - unreachable -ok4076: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 14 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_copy(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a262 - %t439 = load ptr, ptr %a1 - %t440 = icmp eq ptr %t439, null - br i1 %t440, label %panic4077, label %ok4078 -panic4077: - call void @finch_panic(ptr @.str.2524, i64 1753, ptr @.str.2525) - unreachable -ok4078: - %t441 = getelementptr inbounds %S.gen.Gen, ptr %t439, i32 0, i32 20 - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - %t445 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t444, ptr %t441 - store { ptr, i64, i64 } %t445, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load ptr, ptr %a1 - %t448 = icmp eq ptr %t447, null - br i1 %t448, label %panic4079, label %ok4080 -panic4079: - call void @finch_panic(ptr @.str.2526, i64 1754, ptr @.str.2527) - unreachable -ok4080: - %t449 = getelementptr inbounds %S.gen.Gen, ptr %t447, i32 0, i32 15 - %t450 = getelementptr inbounds { ptr, i64, i64 }, ptr %t449, i32 0, i32 1 - %t451 = load %S.gen.FnSig, ptr %a133 - store %S.gen.FnSig %t451, ptr %a452 - call void @finch.copy.S_gen_FnSig(ptr %a453, ptr %a452) - %t454 = load %S.gen.FnSig, ptr %a453 - %t455 = load i64, ptr %t450 - %t456 = add i64 %t455, 1 - call void @finch_arr_reserve(ptr %t449, i64 %t456, i64 ptrtoint (ptr getelementptr (%S.gen.FnSig, ptr null, i32 1) to i64)) - %t457 = load ptr, ptr %t449 - %t458 = getelementptr inbounds %S.gen.FnSig, ptr %t457, i64 %t455 - store %S.gen.FnSig %t454, ptr %t458 - store i64 %t456, ptr %t450 - %t459 = load ptr, ptr %a1 - %t460 = icmp eq ptr %t459, null - br i1 %t460, label %panic4081, label %ok4082 -panic4081: - call void @finch_panic(ptr @.str.2528, i64 1755, ptr @.str.2529) - unreachable -ok4082: - %t461 = getelementptr inbounds %S.gen.Gen, ptr %t459, i32 0, i32 15 - %t462 = getelementptr inbounds { ptr, i64, i64 }, ptr %t461, i32 0, i32 1 - %t463 = load i64, ptr %t462 - %t464 = sub i64 %t463, 1 - call void @finch.drop.S_ast_Node(ptr %a330) - call void @finch_str_drop(ptr %a262) - call void @finch_str_drop(ptr %a254) - call void @finch.drop.arr_S_ast_Type(ptr %a246) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_gen_FnSig(ptr %a133) - call void @finch.drop.S_ast_Node(ptr %a87) - call void @finch_str_drop(ptr %a39) - call void @finch.drop.S_gen_Template(ptr %a19) - ret i64 %t464 -} - -define internal void @finch.gen.bindType(ptr %p0, %S.ast.Type %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3, ptr %p4) { -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 - %a84 = alloca %S.ast.Type, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca %S.gen.StructDef, align 16 - %a231 = alloca %S.gen.StructDef, align 16 - %a233 = alloca %S.gen.StructDef, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca i64, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.2530, 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.from4083 -logic.from4083: - br i1 %t11, label %logic.rhs4084, label %logic.end4085 -logic.rhs4084: - %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.rend4086 -logic.rend4086: - br label %logic.end4085 -logic.end4085: - %t16 = phi i1 [ false, %logic.from4083 ], [ %t15, %logic.rend4086 ] - br label %logic.from4087 -logic.from4087: - br i1 %t16, label %logic.rhs4088, label %logic.end4089 -logic.rhs4088: - %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.rend4090 -logic.rend4090: - br label %logic.end4089 -logic.end4089: - %t21 = phi i1 [ false, %logic.from4087 ], [ %t20, %logic.rend4090 ] - br label %logic.from4091 -logic.from4091: - br i1 %t21, label %logic.rhs4092, label %logic.end4093 -logic.rhs4092: - %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.cond4094 -find.cond4094: - %t29 = load i64, ptr %a28 - %t30 = icmp slt i64 %t29, %t26 - br i1 %t30, label %find.body4095, label %find.end4098 -find.body4095: - %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.hit4096, label %find.next4097 -find.hit4096: - store i64 %t29, ptr %a25 - br label %find.end4098 -find.next4097: - %t37 = add i64 %t29, 1 - store i64 %t37, ptr %a28 - br label %find.cond4094 -find.end4098: - %t38 = load i64, ptr %a25 - %t39 = icmp sge i64 %t38, 0 - br label %logic.rend4099 -logic.rend4099: - br label %logic.end4093 -logic.end4093: - %t40 = phi i1 [ false, %logic.from4091 ], [ %t39, %logic.rend4099 ] - br i1 %t40, label %then4100, label %endif4102 -then4100: - %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.cond4103 -find.cond4103: - %t48 = load i64, ptr %a47 - %t49 = icmp slt i64 %t48, %t45 - br i1 %t49, label %find.body4104, label %find.end4107 -find.body4104: - %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.hit4105, label %find.next4106 -find.hit4105: - store i64 %t48, ptr %a44 - br label %find.end4107 -find.next4106: - %t56 = add i64 %t48, 1 - store i64 %t56, ptr %a47 - br label %find.cond4103 -find.end4107: - %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 %panic4108, label %ok4109 -panic4108: - call void @finch_panic(ptr @.str.2531, i64 1762, ptr @.str.2532) - unreachable -ok4109: - %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 %range4110, label %inrange4111 -range4110: - call void @finch_panic_index(ptr @.str.2533, i64 1762, i64 %t62, i64 %t64) - unreachable -inrange4111: - %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 %then4112, label %endif4114 -then4112: - %t70 = load %S.ast.Type, ptr %a3 - %t71 = load ptr, ptr %a5 - %t72 = icmp eq ptr %t71, null - br i1 %t72, label %panic4115, label %ok4116 -panic4115: - call void @finch_panic(ptr @.str.2534, i64 1763, ptr @.str.2535) - unreachable -ok4116: - %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 %range4117, label %inrange4118 -range4117: - call void @finch_panic_index(ptr @.str.2536, i64 1763, i64 %t74, i64 %t76) - unreachable -inrange4118: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds %S.ast.Type, ptr %t78, i64 %t74 - store %S.ast.Type %t70, ptr %a80 - call void @finch.copy.S_ast_Type(ptr %a81, ptr %a80) - %t82 = load %S.ast.Type, ptr %a81 - %t83 = load %S.ast.Type, ptr %t79 - store %S.ast.Type %t82, ptr %t79 - store %S.ast.Type %t83, ptr %a84 - call void @finch.drop.S_ast_Type(ptr %a84) - %t85 = load ptr, ptr %a5 - %t86 = icmp eq ptr %t85, null - br i1 %t86, label %panic4119, label %ok4120 -panic4119: - call void @finch_panic(ptr @.str.2537, i64 1764, ptr @.str.2538) - unreachable -ok4120: - %t87 = getelementptr inbounds %S.gen.Binds, ptr %t85, i32 0, i32 1 - %t88 = load i64, ptr %a58 - %t89 = load { ptr, i64, i64 }, ptr %t87 - %t90 = extractvalue { ptr, i64, i64 } %t89, 1 - %t91 = icmp uge i64 %t88, %t90 - br i1 %t91, label %range4121, label %inrange4122 -range4121: - call void @finch_panic_index(ptr @.str.2539, i64 1764, i64 %t88, i64 %t90) - unreachable -inrange4122: - %t92 = extractvalue { ptr, i64, i64 } %t89, 0 - %t93 = getelementptr inbounds i1, ptr %t92, i64 %t88 - store i1 true, ptr %t93 - br label %endif4114 -endif4114: - ret void -endif4102: - %t94 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.2540, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br label %logic.from4123 -logic.from4123: - br i1 %t99, label %logic.end4125, label %logic.rhs4124 -logic.rhs4124: - %t100 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.2541, i64 3, i64 0 }, ptr %a103 - %t104 = call i32 @finch_str_eq(ptr %a102, ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend4126 -logic.rend4126: - br label %logic.end4125 -logic.end4125: - %t106 = phi i1 [ true, %logic.from4123 ], [ %t105, %logic.rend4126 ] - br label %logic.from4127 -logic.from4127: - br i1 %t106, label %logic.end4129, label %logic.rhs4128 -logic.rhs4128: - %t107 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t108 = load { ptr, i64, i64 }, ptr %t107 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2542, i64 5, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br label %logic.rend4130 -logic.rend4130: - br label %logic.end4129 -logic.end4129: - %t113 = phi i1 [ true, %logic.from4127 ], [ %t112, %logic.rend4130 ] - br label %logic.from4131 -logic.from4131: - br i1 %t113, label %logic.rhs4132, label %logic.end4133 -logic.rhs4132: - %t114 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i32 0, i32 1 - %t116 = load i64, ptr %t115 - %t117 = icmp sgt i64 %t116, 0 - br label %logic.rend4134 -logic.rend4134: - br label %logic.end4133 -logic.end4133: - %t118 = phi i1 [ false, %logic.from4131 ], [ %t117, %logic.rend4134 ] - br label %logic.from4135 -logic.from4135: - br i1 %t118, label %logic.rhs4136, label %logic.end4137 -logic.rhs4136: - %t119 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t122, ptr %a124 - %t125 = call i32 @finch_str_eq(ptr %a123, ptr %a124) - %t126 = icmp ne i32 %t125, 0 - br label %logic.rend4138 -logic.rend4138: - br label %logic.end4137 -logic.end4137: - %t127 = phi i1 [ false, %logic.from4135 ], [ %t126, %logic.rend4138 ] - br label %logic.from4139 -logic.from4139: - br i1 %t127, label %logic.rhs4140, label %logic.end4141 -logic.rhs4140: - %t128 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load i64, ptr %t129 - %t131 = icmp sgt i64 %t130, 0 - br label %logic.rend4142 -logic.rend4142: - br label %logic.end4141 -logic.end4141: - %t132 = phi i1 [ false, %logic.from4139 ], [ %t131, %logic.rend4142 ] - br i1 %t132, label %then4143, label %endif4145 -then4143: - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 0, %t136 - br i1 %t137, label %range4146, label %inrange4147 -range4146: - call void @finch_panic_index(ptr @.str.2543, i64 1769, i64 0, i64 %t136) - unreachable -inrange4147: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i64 0 - %t140 = load %S.ast.Type, ptr %t139 - %t141 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t142 = load { ptr, i64, i64 }, ptr %t141 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 0, %t143 - br i1 %t144, label %range4148, label %inrange4149 -range4148: - call void @finch_panic_index(ptr @.str.2544, i64 1769, i64 0, i64 %t143) - unreachable -inrange4149: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.ast.Type, ptr %t145, i64 0 - %t147 = load %S.ast.Type, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %a4 - %t149 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t133, %S.ast.Type %t140, %S.ast.Type %t147, { ptr, i64, i64 } %t148, ptr %t149) - ret void -endif4145: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t151 = load { ptr, i64, i64 }, ptr %t150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2545, i64 3, i64 0 }, ptr %a153 - %t154 = call i32 @finch_str_eq(ptr %a152, ptr %a153) - %t155 = icmp ne i32 %t154, 0 - br label %logic.from4150 -logic.from4150: - br i1 %t155, label %logic.rhs4151, label %logic.end4152 -logic.rhs4151: - %t156 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.2546, i64 3, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.rend4153 -logic.rend4153: - br label %logic.end4152 -logic.end4152: - %t162 = phi i1 [ false, %logic.from4150 ], [ %t161, %logic.rend4153 ] - br i1 %t162, label %then4154, label %endif4156 -then4154: - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - %t166 = extractvalue { ptr, i64, i64 } %t165, 1 - %t167 = icmp uge i64 0, %t166 - br i1 %t167, label %range4157, label %inrange4158 -range4157: - call void @finch_panic_index(ptr @.str.2547, i64 1773, i64 0, i64 %t166) - unreachable -inrange4158: - %t168 = extractvalue { ptr, i64, i64 } %t165, 0 - %t169 = getelementptr inbounds %S.ast.Type, ptr %t168, i64 0 - %t170 = load %S.ast.Type, ptr %t169 - %t171 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range4159, label %inrange4160 -range4159: - call void @finch_panic_index(ptr @.str.2548, i64 1773, i64 0, i64 %t173) - unreachable -inrange4160: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Type, ptr %t175, i64 0 - %t177 = load %S.ast.Type, ptr %t176 - %t178 = load { ptr, i64, i64 }, ptr %a4 - %t179 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t163, %S.ast.Type %t170, %S.ast.Type %t177, { ptr, i64, i64 } %t178, ptr %t179) - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 1, %t183 - br i1 %t184, label %range4161, label %inrange4162 -range4161: - call void @finch_panic_index(ptr @.str.2549, i64 1774, i64 1, i64 %t183) - unreachable -inrange4162: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds %S.ast.Type, ptr %t185, i64 1 - %t187 = load %S.ast.Type, ptr %t186 - %t188 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 1, %t190 - br i1 %t191, label %range4163, label %inrange4164 -range4163: - call void @finch_panic_index(ptr @.str.2550, i64 1774, i64 1, i64 %t190) - unreachable -inrange4164: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i64 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = load { ptr, i64, i64 }, ptr %a4 - %t196 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t180, %S.ast.Type %t187, %S.ast.Type %t194, { ptr, i64, i64 } %t195, ptr %t196) - ret void -endif4156: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t198 = load { ptr, i64, i64 }, ptr %t197 - store { ptr, i64, i64 } %t198, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.2551, i64 5, i64 0 }, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.from4165 -logic.from4165: - br i1 %t202, label %logic.rhs4166, label %logic.end4167 -logic.rhs4166: - %t203 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - %t206 = icmp sgt i64 %t205, 0 - br label %logic.rend4168 -logic.rend4168: - br label %logic.end4167 -logic.end4167: - %t207 = phi i1 [ false, %logic.from4165 ], [ %t206, %logic.rend4168 ] - br label %logic.from4169 -logic.from4169: - br i1 %t207, label %logic.rhs4170, label %logic.end4171 -logic.rhs4170: - %t208 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } %t209, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2552, i64 6, i64 0 }, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br label %logic.rend4172 -logic.rend4172: - br label %logic.end4171 -logic.end4171: - %t214 = phi i1 [ false, %logic.from4169 ], [ %t213, %logic.rend4172 ] - br i1 %t214, label %then4173, label %endif4175 -then4173: - %t215 = load ptr, ptr %a1 - %t216 = icmp eq ptr %t215, null - br i1 %t216, label %panic4176, label %ok4177 -panic4176: - call void @finch_panic(ptr @.str.2553, i64 1778, ptr @.str.2554) - unreachable -ok4177: - %t217 = getelementptr inbounds %S.gen.Gen, ptr %t215, i32 0, i32 16 - %t218 = load ptr, ptr %a1 - %t219 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t220 = load { ptr, i64, i64 }, ptr %t219 - %t221 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 2 - %t222 = load { ptr, i64, i64 }, ptr %t221 - %t223 = call i64 @finch.gen.findStruct(ptr %t218, { ptr, i64, i64 } %t220, { ptr, i64, i64 } %t222) - %t224 = load { ptr, i64, i64 }, ptr %t217 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 %t223, %t225 - br i1 %t226, label %range4178, label %inrange4179 -range4178: - call void @finch_panic_index(ptr @.str.2555, i64 1778, i64 %t223, i64 %t225) - unreachable -inrange4179: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.gen.StructDef, ptr %t227, i64 %t223 - %t229 = load %S.gen.StructDef, ptr %t228 - store %S.gen.StructDef %t229, ptr %a230 - call void @finch.copy.S_gen_StructDef(ptr %a231, ptr %a230) - %t232 = load %S.gen.StructDef, ptr %a231 - store %S.gen.StructDef %t232, ptr %a233 - %t234 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 5 - %t235 = load { ptr, i64, i64 }, ptr %t234 - %t236 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } %t235, ptr %a238 - store { ptr, i64, i64 } %t237, ptr %a239 - %t240 = call i32 @finch_str_eq(ptr %a238, ptr %a239) - %t241 = icmp ne i32 %t240, 0 - br label %logic.from4180 -logic.from4180: - br i1 %t241, label %logic.rhs4181, label %logic.end4182 -logic.rhs4181: - %t242 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %t245, i32 0, i32 1 - %t247 = load i64, ptr %t246 - %t248 = icmp eq i64 %t244, %t247 - br label %logic.rend4183 -logic.rend4183: - br label %logic.end4182 -logic.end4182: - %t249 = phi i1 [ false, %logic.from4180 ], [ %t248, %logic.rend4183 ] - br i1 %t249, label %then4184, label %endif4186 -then4184: - %t250 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t251 = getelementptr inbounds { ptr, i64, i64 }, ptr %t250, i32 0, i32 1 - %t252 = load i64, ptr %t251 - store i64 0, ptr %a253 - br label %for.cond4187 -for.cond4187: - %t254 = load i64, ptr %a253 - %t255 = icmp slt i64 %t254, %t252 - br i1 %t255, label %for.body4188, label %for.end4190 -for.body4188: - %t256 = load ptr, ptr %a1 - %t257 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t258 = load i64, ptr %a253 - %t259 = load { ptr, i64, i64 }, ptr %t257 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range4191, label %inrange4192 -range4191: - call void @finch_panic_index(ptr @.str.2556, i64 1781, i64 %t258, i64 %t260) - unreachable -inrange4192: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Type, ptr %t262, i64 %t258 - %t264 = load %S.ast.Type, ptr %t263 - %t265 = getelementptr inbounds %S.gen.StructDef, ptr %a233, i32 0, i32 7 - %t266 = load i64, ptr %a253 - %t267 = load { ptr, i64, i64 }, ptr %t265 - %t268 = extractvalue { ptr, i64, i64 } %t267, 1 - %t269 = icmp uge i64 %t266, %t268 - br i1 %t269, label %range4193, label %inrange4194 -range4193: - call void @finch_panic_index(ptr @.str.2557, i64 1781, i64 %t266, i64 %t268) - unreachable -inrange4194: - %t270 = extractvalue { ptr, i64, i64 } %t267, 0 - %t271 = getelementptr inbounds %S.ast.Type, ptr %t270, i64 %t266 - %t272 = load %S.ast.Type, ptr %t271 - %t273 = load { ptr, i64, i64 }, ptr %a4 - %t274 = load ptr, ptr %a5 - call void @finch.gen.bindType(ptr %t256, %S.ast.Type %t264, %S.ast.Type %t272, { ptr, i64, i64 } %t273, ptr %t274) - br label %for.step4189 -for.step4189: - %t275 = load i64, ptr %a253 - %t276 = add i64 %t275, 1 - store i64 %t276, ptr %a253 - br label %for.cond4187 -for.end4190: - br label %endif4186 -endif4186: - call void @finch.drop.S_gen_StructDef(ptr %a233) - br label %endif4175 -endif4175: - ret void -} - -define internal void @finch.drop.arr_S_gen_Val(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4271 -n.cond4271: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4272, label %n.end4273 -n.body4272: - %t7 = getelementptr inbounds %S.gen.Val, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Val(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4271 -n.end4273: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Binds(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Binds, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_bool(ptr %t2) - ret void -} - -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 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a137 = alloca %S.gen.Binds, align 16 - %a141 = alloca i64, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca i64, align 16 - %a167 = alloca i64, align 16 - %a182 = alloca %S.gen.Val, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca %S.gen.Val, align 16 - %a228 = alloca %S.gen.Val, align 16 - %a255 = alloca i64, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca i64, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a321 = alloca %S.gen.FnSig, align 16 - %a323 = alloca %S.gen.FnSig, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca i64, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca %S.gen.Val, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.gen.Val, align 16 - %a414 = alloca i64, align 16 - %a422 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %panic4195, label %ok4196 -panic4195: - call void @finch_panic(ptr @.str.2558, i64 1789, ptr @.str.2559) - unreachable -ok4196: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 17 - %t9 = load i64, ptr %a3 - %t10 = load { ptr, i64, i64 }, ptr %t8 - %t11 = extractvalue { ptr, i64, i64 } %t10, 1 - %t12 = icmp uge i64 %t9, %t11 - br i1 %t12, label %range4197, label %inrange4198 -range4197: - call void @finch_panic_index(ptr @.str.2560, i64 1789, i64 %t9, i64 %t11) - unreachable -inrange4198: - %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 %panic4199, label %ok4200 -panic4199: - call void @finch_panic(ptr @.str.2561, i64 1790, ptr @.str.2562) - unreachable -ok4200: - %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 %range4201, label %inrange4202 -range4201: - call void @finch_panic_index(ptr @.str.2563, i64 1790, i64 %t24, i64 %t26) - unreachable -inrange4202: - %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 %range4203, label %inrange4204 -range4203: - call void @finch_panic_index(ptr @.str.2564, i64 1790, i64 %t32, i64 %t34) - unreachable -inrange4204: - %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 %then4205, label %endif4207 -then4205: - %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 %then4208, label %endif4210 -then4208: - %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.2565, 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) - store { ptr, i64, i64 } %t73, ptr %a82 - call void @finch_str_drop(ptr %a82) - store { ptr, i64, i64 } %t78, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2566, i64 27, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i32 0, i32 1 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i32 0, i32 1 - %t93 = load i64, ptr %t92 - call void @finch_str_from_int(ptr %a94, i64 %t93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - store { ptr, i64, i64 } %t89, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t89, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.fail(ptr %t67, %S.ast.Node %t68, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif4210 -endif4210: - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t104 = getelementptr inbounds %S.ast.Type, ptr %t103, i32 0, i32 1 - store i64 0, ptr %a105 - br label %each.cond4211 -each.cond4211: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body4212, label %each.end4214 -each.body4212: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.ast.Type, ptr %t110, i64 %t108 - %t112 = load %S.ast.Type, ptr %t111 - store %S.ast.Type %t112, ptr %a113 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t115 = load ptr, ptr %a1 - %t116 = load %S.ast.Type, ptr %a113 - %t117 = load %S.ast.Node, ptr %a2 - %t118 = call %S.ast.Type @finch.gen.resolve(ptr %t115, %S.ast.Type %t116, %S.ast.Node %t117) - %t119 = load i64, ptr %t114 - %t120 = add i64 %t119, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t120, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t121 = load ptr, ptr %a53 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 %t119 - store %S.ast.Type %t118, ptr %t122 - store i64 %t120, ptr %t114 - br label %each.step4213 -each.step4213: - %t123 = load i64, ptr %a105 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a105 - br label %each.cond4211 -each.end4214: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = load i64, ptr %a3 - %t128 = load { ptr, i64, i64 }, ptr %a53 - %t129 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2567, i64 4, i64 0 }) - %t130 = load %S.ast.Node, ptr %a2 - %t131 = call i64 @finch.gen.instFn(ptr %t126, i64 %t127, { ptr, i64, i64 } %t128, %S.ast.Type %t129, %S.ast.Node %t130) - store %S.ast.Type %t129, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - %t133 = load %S.ast.Node, ptr %a2 - %t134 = load i64, ptr %a4 - %t135 = load { ptr, i64, i64 }, ptr %a5 - %t136 = call %S.gen.Val @finch.gen.callFn(ptr %t125, i64 %t131, %S.ast.Node %t133, i64 %t134, { ptr, i64, i64 } %t135, { ptr, i64, i64 } { ptr @.str.2568, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.2569, i64 0, i64 0 }) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t136 -endif4207: - store %S.gen.Binds zeroinitializer, ptr %a137 - %t138 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond4215 -for.cond4215: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body4216, label %for.end4218 -for.body4216: - %t144 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2570, i64 4, i64 0 }) - %t147 = load i64, ptr %t145 - %t148 = add i64 %t147, 1 - call void @finch_arr_reserve(ptr %t144, i64 %t148, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t149 = load ptr, ptr %t144 - %t150 = getelementptr inbounds %S.ast.Type, ptr %t149, i64 %t147 - store %S.ast.Type %t146, ptr %t150 - store i64 %t148, ptr %t145 - %t151 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load i64, ptr %t152 - %t154 = add i64 %t153, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t154, i64 ptrtoint (ptr getelementptr (i1, ptr null, i32 1) to i64)) - %t155 = load ptr, ptr %t151 - %t156 = getelementptr inbounds i1, ptr %t155, i64 %t153 - store i1 false, ptr %t156 - store i64 %t154, ptr %t152 - br label %for.step4217 -for.step4217: - %t157 = load i64, ptr %a141 - %t158 = add i64 %t157, 1 - store i64 %t158, ptr %a141 - br label %for.cond4215 -for.end4218: - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4219, label %ok4220 -panic4219: - call void @finch_panic(ptr @.str.2571, i64 1809, ptr @.str.2572) - unreachable -ok4220: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 11 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i32 0, i32 1 - %t164 = load i64, ptr %t163 - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a47 - store i64 0, ptr %a167 - br label %for.cond4221 -for.cond4221: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body4222, label %for.end4224 -for.body4222: - %t170 = load ptr, ptr %a1 - %t171 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t172 = load i64, ptr %a4 - %t173 = load i64, ptr %a167 - %t174 = add i64 %t172, %t173 - %t175 = load { ptr, i64, i64 }, ptr %t171 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range4225, label %inrange4226 -range4225: - call void @finch_panic_index(ptr @.str.2573, i64 1811, i64 %t174, i64 %t176) - unreachable -inrange4226: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.ast.Node, ptr %t178, i64 %t174 - %t180 = load %S.ast.Node, ptr %t179 - %t181 = call %S.gen.Val @finch.gen.expr(ptr %t170, %S.ast.Node %t180) - store %S.gen.Val %t181, ptr %a182 - %t183 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t184 = getelementptr inbounds %S.ast.Type, ptr %t183, i32 0, i32 0 - %t185 = load { ptr, i64, i64 }, ptr %t184 - store { ptr, i64, i64 } %t185, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.2574, i64 4, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br label %logic.from4227 -logic.from4227: - br i1 %t189, label %logic.end4229, label %logic.rhs4228 -logic.rhs4228: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t191 = getelementptr inbounds %S.ast.Type, ptr %t190, i32 0, i32 0 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store { ptr, i64, i64 } %t192, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.2575, i64 4, i64 0 }, ptr %a194 - %t195 = call i32 @finch_str_eq(ptr %a193, ptr %a194) - %t196 = icmp ne i32 %t195, 0 - br label %logic.rend4230 -logic.rend4230: - br label %logic.end4229 -logic.end4229: - %t197 = phi i1 [ true, %logic.from4227 ], [ %t196, %logic.rend4230 ] - br i1 %t197, label %then4231, label %endif4233 -then4231: - %t198 = load ptr, ptr %a1 - %t199 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t200 = load i64, ptr %a4 - %t201 = load i64, ptr %a167 - %t202 = add i64 %t200, %t201 - %t203 = load { ptr, i64, i64 }, ptr %t199 - %t204 = extractvalue { ptr, i64, i64 } %t203, 1 - %t205 = icmp uge i64 %t202, %t204 - br i1 %t205, label %range4234, label %inrange4235 -range4234: - call void @finch_panic_index(ptr @.str.2576, i64 1813, i64 %t202, i64 %t204) - unreachable -inrange4235: - %t206 = extractvalue { ptr, i64, i64 } %t203, 0 - %t207 = getelementptr inbounds %S.ast.Node, ptr %t206, i64 %t202 - %t208 = load %S.ast.Node, ptr %t207 - %t209 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2578, i64 2, i64 0 }, ptr %a211 - call void @finch_str_join(ptr %a212, ptr %t209, ptr %a211) - %t213 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.2577, i64 29, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t213, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.2579, i64 5, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t198, %S.ast.Node %t208, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - br label %endif4233 -endif4233: - %t225 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t226 = load %S.gen.Val, ptr %a182 - store %S.gen.Val %t226, ptr %a227 - call void @finch.copy.S_gen_Val(ptr %a228, ptr %a227) - %t229 = load %S.gen.Val, ptr %a228 - %t230 = load i64, ptr %t225 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %a159, i64 %t231, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %a159 - %t233 = getelementptr inbounds %S.gen.Val, ptr %t232, i64 %t230 - store %S.gen.Val %t229, ptr %t233 - store i64 %t231, ptr %t225 - %t234 = load ptr, ptr %a1 - %t235 = load %S.gen.Val, ptr %a182 - call void @finch.gen.hold(ptr %t234, %S.gen.Val %t235) - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.ast.Node, ptr %a42, i32 0, i32 9 - %t238 = load i64, ptr %a167 - %t239 = load { ptr, i64, i64 }, ptr %t237 - %t240 = extractvalue { ptr, i64, i64 } %t239, 1 - %t241 = icmp uge i64 %t238, %t240 - br i1 %t241, label %range4236, label %inrange4237 -range4236: - call void @finch_panic_index(ptr @.str.2580, i64 1817, i64 %t238, i64 %t240) - unreachable -inrange4237: - %t242 = extractvalue { ptr, i64, i64 } %t239, 0 - %t243 = getelementptr inbounds %S.ast.Node, ptr %t242, i64 %t238 - %t244 = getelementptr inbounds %S.ast.Node, ptr %t243, i32 0, i32 5 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.gen.Val, ptr %a182, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t249 = load { ptr, i64, i64 }, ptr %t248 - call void @finch.gen.bindType(ptr %t236, %S.ast.Type %t245, %S.ast.Type %t247, { ptr, i64, i64 } %t249, ptr %a137) - call void @finch.drop.S_gen_Val(ptr %a182) - br label %for.step4223 -for.step4223: - %t250 = load i64, ptr %a167 - %t251 = add i64 %t250, 1 - store i64 %t251, ptr %a167 - br label %for.cond4221 -for.end4224: - %t252 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t253 = getelementptr inbounds { ptr, i64, i64 }, ptr %t252, i32 0, i32 1 - %t254 = load i64, ptr %t253 - store i64 0, ptr %a255 - br label %for.cond4238 -for.cond4238: - %t256 = load i64, ptr %a255 - %t257 = icmp slt i64 %t256, %t254 - br i1 %t257, label %for.body4239, label %for.end4241 -for.body4239: - %t258 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 1 - %t259 = load i64, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %t258 - %t261 = extractvalue { ptr, i64, i64 } %t260, 1 - %t262 = icmp uge i64 %t259, %t261 - br i1 %t262, label %range4242, label %inrange4243 -range4242: - call void @finch_panic_index(ptr @.str.2581, i64 1820, i64 %t259, i64 %t261) - unreachable -inrange4243: - %t263 = extractvalue { ptr, i64, i64 } %t260, 0 - %t264 = getelementptr inbounds i1, ptr %t263, i64 %t259 - %t265 = load i1, ptr %t264 - %t266 = xor i1 %t265, true - br i1 %t266, label %then4244, label %endif4246 -then4244: - %t267 = load ptr, ptr %a1 - %t268 = load %S.ast.Node, ptr %a2 - %t269 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 3 - %t270 = load i64, ptr %a255 - %t271 = load { ptr, i64, i64 }, ptr %t269 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp uge i64 %t270, %t272 - br i1 %t273, label %range4247, label %inrange4248 -range4247: - call void @finch_panic_index(ptr @.str.2583, i64 1821, i64 %t270, i64 %t272) - unreachable -inrange4248: - %t274 = extractvalue { ptr, i64, i64 } %t271, 0 - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %t274, i64 %t270 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } { ptr @.str.2582, i64 16, i64 0 }, ptr %a278 - store { ptr, i64, i64 } %t276, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - %t280 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.2584, i64 24, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t280, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - %t286 = getelementptr inbounds %S.gen.Template, ptr %a19, i32 0, i32 1 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } %t285, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t285, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t292, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.2585, i64 10, i64 0 }, ptr %a295 - call void @finch_str_concat(ptr %a293, ptr %a294, ptr %a295) - store { ptr, i64, i64 } %t292, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a293 - call void @finch.gen.fail(ptr %t267, %S.ast.Node %t268, { ptr, i64, i64 } %t297) - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_drop(ptr %a298) - br label %endif4246 -endif4246: - br label %for.step4240 -for.step4240: - %t299 = load i64, ptr %a255 - %t300 = add i64 %t299, 1 - store i64 %t300, ptr %a255 - br label %for.cond4238 -for.end4241: - %t301 = load ptr, ptr %a1 - %t302 = load i64, ptr %a3 - %t303 = getelementptr inbounds %S.gen.Binds, ptr %a137, i32 0, i32 0 - %t304 = load { ptr, i64, i64 }, ptr %t303 - %t305 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.2586, i64 4, i64 0 }) - %t306 = load %S.ast.Node, ptr %a2 - %t307 = call i64 @finch.gen.instFn(ptr %t301, i64 %t302, { ptr, i64, i64 } %t304, %S.ast.Type %t305, %S.ast.Node %t306) - store %S.ast.Type %t305, ptr %a308 - call void @finch.drop.S_ast_Type(ptr %a308) - store i64 %t307, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = icmp eq ptr %t310, null - br i1 %t311, label %panic4249, label %ok4250 -panic4249: - call void @finch_panic(ptr @.str.2587, i64 1825, ptr @.str.2588) - unreachable -ok4250: - %t312 = getelementptr inbounds %S.gen.Gen, ptr %t310, i32 0, i32 15 - %t313 = load i64, ptr %a309 - %t314 = load { ptr, i64, i64 }, ptr %t312 - %t315 = extractvalue { ptr, i64, i64 } %t314, 1 - %t316 = icmp uge i64 %t313, %t315 - br i1 %t316, label %range4251, label %inrange4252 -range4251: - call void @finch_panic_index(ptr @.str.2589, i64 1825, i64 %t313, i64 %t315) - unreachable -inrange4252: - %t317 = extractvalue { ptr, i64, i64 } %t314, 0 - %t318 = getelementptr inbounds %S.gen.FnSig, ptr %t317, i64 %t313 - %t319 = load %S.gen.FnSig, ptr %t318 - store %S.gen.FnSig %t319, ptr %a320 - call void @finch.copy.S_gen_FnSig(ptr %a321, ptr %a320) - %t322 = load %S.gen.FnSig, ptr %a321 - store %S.gen.FnSig %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load %S.ast.Node, ptr %a2 - %t326 = load %S.gen.FnSig, ptr %a323 - call void @finch.gen.noteCall(ptr %t324, %S.ast.Node %t325, %S.gen.FnSig %t326) - store { ptr, i64, i64 } zeroinitializer, ptr %a327 - %t328 = load i64, ptr %a47 - store i64 0, ptr %a329 - br label %for.cond4253 -for.cond4253: - %t330 = load i64, ptr %a329 - %t331 = icmp slt i64 %t330, %t328 - br i1 %t331, label %for.body4254, label %for.end4256 -for.body4254: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a329 - %t334 = load { ptr, i64, i64 }, ptr %a159 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range4257, label %inrange4258 -range4257: - call void @finch_panic_index(ptr @.str.2590, i64 1829, i64 %t333, i64 %t335) - unreachable -inrange4258: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Val, ptr %t337, i64 %t333 - %t339 = load %S.gen.Val, ptr %t338 - %t340 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t341 = load i64, ptr %a329 - %t342 = load { ptr, i64, i64 }, ptr %t340 - %t343 = extractvalue { ptr, i64, i64 } %t342, 1 - %t344 = icmp uge i64 %t341, %t343 - br i1 %t344, label %range4259, label %inrange4260 -range4259: - call void @finch_panic_index(ptr @.str.2591, i64 1829, i64 %t341, i64 %t343) - unreachable -inrange4260: - %t345 = extractvalue { ptr, i64, i64 } %t342, 0 - %t346 = getelementptr inbounds %S.ast.Type, ptr %t345, i64 %t341 - %t347 = load %S.ast.Type, ptr %t346 - %t348 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t349 = load i64, ptr %a4 - %t350 = load i64, ptr %a329 - %t351 = add i64 %t349, %t350 - %t352 = load { ptr, i64, i64 }, ptr %t348 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range4261, label %inrange4262 -range4261: - call void @finch_panic_index(ptr @.str.2592, i64 1829, i64 %t351, i64 %t353) - unreachable -inrange4262: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds %S.ast.Node, ptr %t355, i64 %t351 - %t357 = load %S.ast.Node, ptr %t356 - %t358 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 14 - %t359 = load i64, ptr %a329 - %t360 = load { ptr, i64, i64 }, ptr %t358 - %t361 = extractvalue { ptr, i64, i64 } %t360, 1 - %t362 = icmp uge i64 %t359, %t361 - br i1 %t362, label %range4263, label %inrange4264 -range4263: - call void @finch_panic_index(ptr @.str.2594, i64 1829, i64 %t359, i64 %t361) - unreachable -inrange4264: - %t363 = extractvalue { ptr, i64, i64 } %t360, 0 - %t364 = getelementptr inbounds { ptr, i64, i64 }, ptr %t363, i64 %t359 - %t365 = load { ptr, i64, i64 }, ptr %t364 - store { ptr, i64, i64 } { ptr @.str.2593, i64 10, i64 0 }, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t369, ptr %a371 - store { ptr, i64, i64 } { ptr @.str.2595, i64 1, i64 0 }, ptr %a372 - call void @finch_str_concat(ptr %a370, ptr %a371, ptr %a372) - store { ptr, i64, i64 } %t369, ptr %a373 - call void @finch_str_drop(ptr %a373) - %t374 = load { ptr, i64, i64 }, ptr %a370 - %t375 = call %S.gen.Val @finch.gen.coerce(ptr %t332, %S.gen.Val %t339, %S.ast.Type %t347, %S.ast.Node %t357, { ptr, i64, i64 } %t374) - store { ptr, i64, i64 } %t374, ptr %a376 - call void @finch_str_drop(ptr %a376) - store %S.gen.Val %t375, ptr %a377 - %t378 = getelementptr inbounds { ptr, i64, i64 }, ptr %a327, i32 0, i32 1 - %t379 = load ptr, ptr %a1 - %t380 = getelementptr inbounds %S.gen.FnSig, ptr %a323, i32 0, i32 13 - %t381 = load i64, ptr %a329 - %t382 = load { ptr, i64, i64 }, ptr %t380 - %t383 = extractvalue { ptr, i64, i64 } %t382, 1 - %t384 = icmp uge i64 %t381, %t383 - br i1 %t384, label %range4265, label %inrange4266 -range4265: - call void @finch_panic_index(ptr @.str.2596, i64 1830, i64 %t381, i64 %t383) - unreachable -inrange4266: - %t385 = extractvalue { ptr, i64, i64 } %t382, 0 - %t386 = getelementptr inbounds %S.ast.Type, ptr %t385, i64 %t381 - %t387 = load %S.ast.Type, ptr %t386 - %t388 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t379, %S.ast.Type %t387) - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.2597, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = getelementptr inbounds %S.gen.Val, ptr %a377, i32 0, i32 0 - %t395 = load { ptr, i64, i64 }, ptr %t394 - store { ptr, i64, i64 } %t393, ptr %a397 - store { ptr, i64, i64 } %t395, ptr %a398 - call void @finch_str_concat(ptr %a396, ptr %a397, ptr %a398) - store { ptr, i64, i64 } %t393, ptr %a399 - call void @finch_str_drop(ptr %a399) - %t400 = load { ptr, i64, i64 }, ptr %a396 - %t401 = load i64, ptr %t378 - %t402 = add i64 %t401, 1 - call void @finch_arr_reserve(ptr %a327, i64 %t402, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t403 = load ptr, ptr %a327 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %t403, i64 %t401 - store { ptr, i64, i64 } %t400, ptr %t404 - store i64 %t402, ptr %t378 - call void @finch.drop.S_gen_Val(ptr %a377) - br label %for.step4255 -for.step4255: - %t405 = load i64, ptr %a329 - %t406 = add i64 %t405, 1 - store i64 %t406, ptr %a329 - br label %for.cond4253 -for.end4256: - %t407 = load ptr, ptr %a1 - %t408 = load %S.gen.FnSig, ptr %a323 - %t409 = load %S.ast.Node, ptr %a2 - %t410 = load { ptr, i64, i64 }, ptr %a327 - %t411 = load { ptr, i64, i64 }, ptr %a5 - %t412 = call %S.gen.Val @finch.gen.emitCall(ptr %t407, %S.gen.FnSig %t408, %S.ast.Node %t409, { ptr, i64, i64 } %t410, { ptr, i64, i64 } %t411) - store %S.gen.Val %t412, ptr %a413 - store i64 0, ptr %a414 - br label %each.cond4267 -each.cond4267: - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %a159, i32 0, i32 1 - %t416 = load i64, ptr %t415 - %t417 = load i64, ptr %a414 - %t418 = icmp slt i64 %t417, %t416 - br i1 %t418, label %each.body4268, label %each.end4270 -each.body4268: - %t419 = load ptr, ptr %a159 - %t420 = getelementptr inbounds %S.gen.Val, ptr %t419, i64 %t417 - %t421 = load %S.gen.Val, ptr %t420 - store %S.gen.Val %t421, ptr %a422 - %t423 = load ptr, ptr %a1 - %t424 = load %S.gen.Val, ptr %a422 - call void @finch.gen.release(ptr %t423, %S.gen.Val %t424) - br label %each.step4269 -each.step4269: - %t425 = load i64, ptr %a414 - %t426 = add i64 %t425, 1 - store i64 %t426, ptr %a414 - br label %each.cond4267 -each.end4270: - %t427 = load ptr, ptr %a1 - %t428 = load i64, ptr %a165 - call void @finch.gen.heldEnd(ptr %t427, i64 %t428) - %t429 = load %S.gen.Val, ptr %a413 - call void @finch.drop.arr_str(ptr %a327) - call void @finch.drop.S_gen_FnSig(ptr %a323) - call void @finch.drop.arr_S_gen_Val(ptr %a159) - call void @finch.drop.S_gen_Binds(ptr %a137) - call void @finch.drop.arr_S_ast_Type(ptr %a53) - call void @finch.drop.S_ast_Node(ptr %a42) - call void @finch.drop.S_gen_Template(ptr %a19) - ret %S.gen.Val %t429 -} - -define internal void @finch.copy.S_cimport_CField(ptr %dst, ptr %src) { -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.cond4282 -n.cond4282: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4283, label %n.end4284 -n.body4283: - %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.cond4282 -n.end4284: - 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 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4274, label %ok4275 -panic4274: - call void @finch_panic(ptr @.str.2598, i64 1843, ptr @.str.2599) - unreachable -ok4275: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 26 - %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 %panic4276, label %ok4277 -panic4276: - call void @finch_panic(ptr @.str.2600, i64 1843, ptr @.str.2601) - unreachable -ok4277: - %t9 = getelementptr inbounds %S.gen.Gen, ptr %t7, i32 0, i32 16 - %t10 = load i64, ptr %a2 - %t11 = load { ptr, i64, i64 }, ptr %t9 - %t12 = extractvalue { ptr, i64, i64 } %t11, 1 - %t13 = icmp uge i64 %t10, %t12 - br i1 %t13, label %range4278, label %inrange4279 -range4278: - call void @finch_panic_index(ptr @.str.2602, i64 1843, i64 %t10, i64 %t12) - unreachable -inrange4279: - %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.missing4280, label %map.found4281 -map.missing4280: - 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.2603, i64 1843, ptr %a21) - unreachable -map.found4281: - %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 %panic4285, label %ok4286 -panic4285: - call void @finch_panic(ptr @.str.2604, i64 1844, ptr @.str.2605) - unreachable -ok4286: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 16 - %t35 = load i64, ptr %a2 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4287, label %inrange4288 -range4287: - call void @finch_panic_index(ptr @.str.2606, i64 1844, i64 %t35, i64 %t37) - unreachable -inrange4288: - %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.cond4289 -each.cond4289: - %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.body4290, label %each.end4292 -each.body4290: - %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 %then4293, label %endif4295 -then4293: - br label %each.step4291 -endif4295: - %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.2607, 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 %then4296, label %endif4298 -then4296: - %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 %endif4298 -endif4298: - %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 %then4299, label %endif4301 -then4299: - %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.2608, i64 1, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.2609, i64 6, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load i64, ptr %t78 - %t96 = add i64 %t95, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t96, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t97 = load ptr, ptr %a43 - %t98 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i64 %t95 - store { ptr, i64, i64 } %t94, ptr %t98 - store i64 %t96, ptr %t78 - br label %endif4301 -endif4301: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic4302, label %ok4303 -panic4302: - call void @finch_panic(ptr @.str.2610, i64 1858, ptr @.str.2611) - unreachable -ok4303: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 16 - %t102 = load i64, ptr %a2 - %t103 = load { ptr, i64, i64 }, ptr %t101 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 %t102, %t104 - br i1 %t105, label %range4304, label %inrange4305 -range4304: - call void @finch_panic_index(ptr @.str.2612, i64 1858, i64 %t102, i64 %t104) - unreachable -inrange4305: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.gen.StructDef, ptr %t106, i64 %t102 - %t108 = getelementptr inbounds %S.gen.StructDef, ptr %t107, i32 0, i32 11 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t108, i32 0, i32 1 - %t110 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_copy(ptr %a113, ptr %a112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = load i64, ptr %t109 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t108, i64 %t116, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t108 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t117, i64 %t115 - store { ptr, i64, i64 } %t114, ptr %t118 - store i64 %t116, ptr %t109 - %t119 = load ptr, ptr %a1 - %t120 = icmp eq ptr %t119, null - br i1 %t120, label %panic4306, label %ok4307 -panic4306: - call void @finch_panic(ptr @.str.2613, i64 1859, ptr @.str.2614) - unreachable -ok4307: - %t121 = getelementptr inbounds %S.gen.Gen, ptr %t119, i32 0, i32 16 - %t122 = load i64, ptr %a2 - %t123 = load { ptr, i64, i64 }, ptr %t121 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 %t122, %t124 - br i1 %t125, label %range4308, label %inrange4309 -range4308: - call void @finch_panic_index(ptr @.str.2615, i64 1859, i64 %t122, i64 %t124) - unreachable -inrange4309: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %t126, i64 %t122 - %t128 = getelementptr inbounds %S.gen.StructDef, ptr %t127, i32 0, i32 12 - %t129 = getelementptr inbounds { ptr, i64, i64 }, ptr %t128, i32 0, i32 1 - %t130 = load %S.ast.Type, ptr %a60 - store %S.ast.Type %t130, ptr %a131 - call void @finch.copy.S_ast_Type(ptr %a132, ptr %a131) - %t133 = load %S.ast.Type, ptr %a132 - %t134 = load i64, ptr %t129 - %t135 = add i64 %t134, 1 - call void @finch_arr_reserve(ptr %t128, i64 %t135, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t136 = load ptr, ptr %t128 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 %t134 - store %S.ast.Type %t133, ptr %t137 - store i64 %t135, ptr %t129 - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic4310, label %ok4311 -panic4310: - call void @finch_panic(ptr @.str.2616, i64 1860, ptr @.str.2617) - unreachable -ok4311: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load i64, ptr %a2 - %t142 = load { ptr, i64, i64 }, ptr %t140 - %t143 = extractvalue { ptr, i64, i64 } %t142, 1 - %t144 = icmp uge i64 %t141, %t143 - br i1 %t144, label %range4312, label %inrange4313 -range4312: - call void @finch_panic_index(ptr @.str.2618, i64 1860, i64 %t141, i64 %t143) - unreachable -inrange4313: - %t145 = extractvalue { ptr, i64, i64 } %t142, 0 - %t146 = getelementptr inbounds %S.gen.StructDef, ptr %t145, i64 %t141 - %t147 = getelementptr inbounds %S.gen.StructDef, ptr %t146, i32 0, i32 3 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i32 0, i32 1 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = load i64, ptr %t148 - %t152 = add i64 %t151, 1 - call void @finch_arr_reserve(ptr %t147, i64 %t152, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t153 = load ptr, ptr %t147 - %t154 = getelementptr inbounds i64, ptr %t153, i64 %t151 - store i64 %t150, ptr %t154 - store i64 %t152, ptr %t148 - %t155 = load ptr, ptr %a1 - %t156 = icmp eq ptr %t155, null - br i1 %t156, label %panic4314, label %ok4315 -panic4314: - call void @finch_panic(ptr @.str.2619, i64 1861, ptr @.str.2620) - unreachable -ok4315: - %t157 = getelementptr inbounds %S.gen.Gen, ptr %t155, i32 0, i32 16 - %t158 = load i64, ptr %a2 - %t159 = load { ptr, i64, i64 }, ptr %t157 - %t160 = extractvalue { ptr, i64, i64 } %t159, 1 - %t161 = icmp uge i64 %t158, %t160 - br i1 %t161, label %range4316, label %inrange4317 -range4316: - call void @finch_panic_index(ptr @.str.2621, i64 1861, i64 %t158, i64 %t160) - unreachable -inrange4317: - %t162 = extractvalue { ptr, i64, i64 } %t159, 0 - %t163 = getelementptr inbounds %S.gen.StructDef, ptr %t162, i64 %t158 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %t163, i32 0, i32 4 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %t164, i32 0, i32 1 - %t166 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t167 = load i64, ptr %t166 - %t168 = load i64, ptr %t165 - %t169 = add i64 %t168, 1 - call void @finch_arr_reserve(ptr %t164, i64 %t169, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t170 = load ptr, ptr %t164 - %t171 = getelementptr inbounds i64, ptr %t170, i64 %t168 - store i64 %t167, ptr %t171 - store i64 %t169, ptr %t165 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a60 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = load i64, ptr %t172 - %t177 = add i64 %t176, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t177, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t178 = load ptr, ptr %a43 - %t179 = getelementptr inbounds { ptr, i64, i64 }, ptr %t178, i64 %t176 - store { ptr, i64, i64 } %t175, ptr %t179 - store i64 %t177, ptr %t172 - %t180 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 2 - %t181 = load i64, ptr %t180 - %t182 = getelementptr inbounds %S.cimport.CField, ptr %a53, i32 0, i32 3 - %t183 = load i64, ptr %t182 - %t184 = add i64 %t181, %t183 - store i64 %t184, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a60) - br label %each.step4291 -each.step4291: - %t185 = load i64, ptr %a45 - %t186 = add i64 %t185, 1 - store i64 %t186, ptr %a45 - br label %each.cond4289 -each.end4292: - %t187 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t188 = load i64, ptr %t187 - %t189 = load i64, ptr %a42 - %t190 = icmp sgt i64 %t188, %t189 - br i1 %t190, label %then4318, label %endif4320 -then4318: - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t192 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t193 = load i64, ptr %t192 - %t194 = load i64, ptr %a42 - %t195 = sub i64 %t193, %t194 - call void @finch_str_from_int(ptr %a196, i64 %t195) - %t197 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2622, i64 1, i64 0 }, ptr %a199 - store { ptr, i64, i64 } %t197, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t197, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.2623, i64 6, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = load i64, ptr %t191 - %t209 = add i64 %t208, 1 - call void @finch_arr_reserve(ptr %a43, i64 %t209, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t210 = load ptr, ptr %a43 - %t211 = getelementptr inbounds { ptr, i64, i64 }, ptr %t210, i64 %t208 - store { ptr, i64, i64 } %t207, ptr %t211 - store i64 %t209, ptr %t191 - br label %endif4320 -endif4320: - %t212 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t213 = load { ptr, i64, i64 }, ptr %t212 - %t214 = load ptr, ptr %a1 - %t215 = icmp eq ptr %t214, null - br i1 %t215, label %panic4321, label %ok4322 -panic4321: - call void @finch_panic(ptr @.str.2624, i64 1868, ptr @.str.2625) - unreachable -ok4322: - %t216 = getelementptr inbounds %S.gen.Gen, ptr %t214, i32 0, i32 16 - %t217 = load i64, ptr %a2 - %t218 = load { ptr, i64, i64 }, ptr %t216 - %t219 = extractvalue { ptr, i64, i64 } %t218, 1 - %t220 = icmp uge i64 %t217, %t219 - br i1 %t220, label %range4323, label %inrange4324 -range4323: - call void @finch_panic_index(ptr @.str.2626, i64 1868, i64 %t217, i64 %t219) - unreachable -inrange4324: - %t221 = extractvalue { ptr, i64, i64 } %t218, 0 - %t222 = getelementptr inbounds %S.gen.StructDef, ptr %t221, i64 %t217 - %t223 = getelementptr inbounds %S.gen.StructDef, ptr %t222, i32 0, i32 8 - store { ptr, i64, i64 } %t213, ptr %a224 - call void @finch_str_copy(ptr %a225, ptr %a224) - %t226 = load { ptr, i64, i64 }, ptr %a225 - %t227 = load { ptr, i64, i64 }, ptr %t223 - store { ptr, i64, i64 } %t226, ptr %t223 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 5 - %t230 = load i1, ptr %t229 - br label %logic.from4325 -logic.from4325: - br i1 %t230, label %logic.rhs4326, label %logic.end4327 -logic.rhs4326: - %t231 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 4 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i32 0, i32 1 - %t233 = load i64, ptr %t232 - %t234 = icmp eq i64 %t233, 0 - br label %logic.rend4328 -logic.rend4328: - br label %logic.end4327 -logic.end4327: - %t235 = phi i1 [ false, %logic.from4325 ], [ %t234, %logic.rend4328 ] - br i1 %t235, label %then4329, label %endif4331 -then4329: - %t236 = load ptr, ptr %a1 - %t237 = icmp eq ptr %t236, null - br i1 %t237, label %panic4332, label %ok4333 -panic4332: - call void @finch_panic(ptr @.str.2628, i64 1870, ptr @.str.2629) - unreachable -ok4333: - %t238 = getelementptr inbounds %S.gen.Gen, ptr %t236, i32 0, i32 16 - %t239 = load i64, ptr %a2 - %t240 = load { ptr, i64, i64 }, ptr %t238 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 %t239, %t241 - br i1 %t242, label %range4334, label %inrange4335 -range4334: - call void @finch_panic_index(ptr @.str.2630, i64 1870, i64 %t239, i64 %t241) - unreachable -inrange4335: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.gen.StructDef, ptr %t243, i64 %t239 - %t245 = getelementptr inbounds %S.gen.StructDef, ptr %t244, i32 0, i32 8 - %t246 = load { ptr, i64, i64 }, ptr %t245 - store { ptr, i64, i64 } { ptr @.str.2627, i64 49, i64 0 }, ptr %t245 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif4331 -endif4331: - %t248 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 2 - %t249 = load i64, ptr %t248 - %t250 = load ptr, ptr %a1 - %t251 = icmp eq ptr %t250, null - br i1 %t251, label %panic4336, label %ok4337 -panic4336: - call void @finch_panic(ptr @.str.2631, i64 1872, ptr @.str.2632) - unreachable -ok4337: - %t252 = getelementptr inbounds %S.gen.Gen, ptr %t250, i32 0, i32 16 - %t253 = load i64, ptr %a2 - %t254 = load { ptr, i64, i64 }, ptr %t252 - %t255 = extractvalue { ptr, i64, i64 } %t254, 1 - %t256 = icmp uge i64 %t253, %t255 - br i1 %t256, label %range4338, label %inrange4339 -range4338: - call void @finch_panic_index(ptr @.str.2633, i64 1872, i64 %t253, i64 %t255) - unreachable -inrange4339: - %t257 = extractvalue { ptr, i64, i64 } %t254, 0 - %t258 = getelementptr inbounds %S.gen.StructDef, ptr %t257, i64 %t253 - %t259 = getelementptr inbounds %S.gen.StructDef, ptr %t258, i32 0, i32 9 - store i64 %t249, ptr %t259 - %t260 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 3 - %t261 = load i64, ptr %t260 - %t262 = load ptr, ptr %a1 - %t263 = icmp eq ptr %t262, null - br i1 %t263, label %panic4340, label %ok4341 -panic4340: - call void @finch_panic(ptr @.str.2634, i64 1873, ptr @.str.2635) - unreachable -ok4341: - %t264 = getelementptr inbounds %S.gen.Gen, ptr %t262, i32 0, i32 16 - %t265 = load i64, ptr %a2 - %t266 = load { ptr, i64, i64 }, ptr %t264 - %t267 = extractvalue { ptr, i64, i64 } %t266, 1 - %t268 = icmp uge i64 %t265, %t267 - br i1 %t268, label %range4342, label %inrange4343 -range4342: - call void @finch_panic_index(ptr @.str.2636, i64 1873, i64 %t265, i64 %t267) - unreachable -inrange4343: - %t269 = extractvalue { ptr, i64, i64 } %t266, 0 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i64 %t265 - %t271 = getelementptr inbounds %S.gen.StructDef, ptr %t270, i32 0, i32 10 - store i64 %t261, ptr %t271 - %t272 = load ptr, ptr %a1 - %t273 = icmp eq ptr %t272, null - br i1 %t273, label %panic4344, label %ok4345 -panic4344: - call void @finch_panic(ptr @.str.2637, i64 1874, ptr @.str.2638) - unreachable -ok4345: - %t274 = getelementptr inbounds %S.gen.Gen, ptr %t272, i32 0, i32 16 - %t275 = load i64, ptr %a2 - %t276 = load { ptr, i64, i64 }, ptr %t274 - %t277 = extractvalue { ptr, i64, i64 } %t276, 1 - %t278 = icmp uge i64 %t275, %t277 - br i1 %t278, label %range4346, label %inrange4347 -range4346: - call void @finch_panic_index(ptr @.str.2639, i64 1874, i64 %t275, i64 %t277) - unreachable -inrange4347: - %t279 = extractvalue { ptr, i64, i64 } %t276, 0 - %t280 = getelementptr inbounds %S.gen.StructDef, ptr %t279, i64 %t275 - %t281 = getelementptr inbounds %S.gen.StructDef, ptr %t280, i32 0, i32 15 - store i64 2, ptr %t281 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic4348, label %ok4349 -panic4348: - call void @finch_panic(ptr @.str.2640, i64 1875, ptr @.str.2641) - unreachable -ok4349: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 2 - %t285 = getelementptr inbounds { ptr, i64, i64 }, ptr %t284, i32 0, i32 1 - %t286 = getelementptr inbounds %S.cimport.CStruct, ptr %a31, i32 0, i32 0 - %t287 = load { ptr, i64, i64 }, ptr %t286 - store { ptr, i64, i64 } { ptr @.str.2642, i64 5, i64 0 }, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a288 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2643, i64 10, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2644, i64 2, i64 0 }, ptr %a298 - call void @finch_str_join(ptr %a299, ptr %a43, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store { ptr, i64, i64 } %t296, ptr %a302 - store { ptr, i64, i64 } %t300, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t296, ptr %a304 - call void @finch_str_drop(ptr %a304) - store { ptr, i64, i64 } %t300, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a301 - store { ptr, i64, i64 } %t306, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.2645, i64 2, i64 0 }, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - store { ptr, i64, i64 } %t306, ptr %a310 - call void @finch_str_drop(ptr %a310) - %t311 = load { ptr, i64, i64 }, ptr %a307 - %t312 = load i64, ptr %t285 - %t313 = add i64 %t312, 1 - call void @finch_arr_reserve(ptr %t284, i64 %t313, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t314 = load ptr, ptr %t284 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i64 %t312 - store { ptr, i64, i64 } %t311, ptr %t315 - store i64 %t313, ptr %t285 - call void @finch.drop.arr_str(ptr %a43) - call void @finch.drop.S_cimport_CStruct(ptr %a31) - ret void -} - -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 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4350, label %ok4351 -panic4350: - call void @finch_panic(ptr @.str.2646, i64 1879, ptr @.str.2647) - unreachable -ok4351: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load i64, ptr %a2 - %t7 = load { ptr, i64, i64 }, ptr %t5 - %t8 = extractvalue { ptr, i64, i64 } %t7, 1 - %t9 = icmp uge i64 %t6, %t8 - br i1 %t9, label %range4352, label %inrange4353 -range4352: - call void @finch_panic_index(ptr @.str.2648, i64 1879, i64 %t6, i64 %t8) - unreachable -inrange4353: - %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 %then4354, label %endif4356 -then4354: - ret void -endif4356: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic4357, label %ok4358 -panic4357: - call void @finch_panic(ptr @.str.2649, i64 1882, ptr @.str.2650) - unreachable -ok4358: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 16 - %t18 = load i64, ptr %a2 - %t19 = load { ptr, i64, i64 }, ptr %t17 - %t20 = extractvalue { ptr, i64, i64 } %t19, 1 - %t21 = icmp uge i64 %t18, %t20 - br i1 %t21, label %range4359, label %inrange4360 -range4359: - call void @finch_panic_index(ptr @.str.2651, i64 1882, i64 %t18, i64 %t20) - unreachable -inrange4360: - %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 %then4361, label %endif4363 -then4361: - %t26 = load ptr, ptr %a1 - %t27 = load i64, ptr %a2 - call void @finch.gen.resolveCStruct(ptr %t26, i64 %t27) - ret void -endif4363: - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4364, label %ok4365 -panic4364: - call void @finch_panic(ptr @.str.2652, i64 1886, ptr @.str.2653) - unreachable -ok4365: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 16 - %t31 = load i64, ptr %a2 - %t32 = load { ptr, i64, i64 }, ptr %t30 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 %t31, %t33 - br i1 %t34, label %range4366, label %inrange4367 -range4366: - call void @finch_panic_index(ptr @.str.2654, i64 1886, i64 %t31, i64 %t33) - unreachable -inrange4367: - %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 %then4368, label %endif4370 -then4368: - %t41 = load ptr, ptr %a1 - %t42 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t41, i64 %t42) - ret void -endif4370: - %t43 = load ptr, ptr %a1 - %t44 = icmp eq ptr %t43, null - br i1 %t44, label %panic4371, label %ok4372 -panic4371: - call void @finch_panic(ptr @.str.2655, i64 1891, ptr @.str.2656) - unreachable -ok4372: - %t45 = getelementptr inbounds %S.gen.Gen, ptr %t43, i32 0, i32 18 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch.copy.arr_str(ptr %a48, ptr %a47) - %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 %panic4373, label %ok4374 -panic4373: - call void @finch_panic(ptr @.str.2657, i64 1892, ptr @.str.2658) - unreachable -ok4374: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 19 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %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 %panic4375, label %ok4376 -panic4375: - call void @finch_panic(ptr @.str.2659, i64 1893, ptr @.str.2660) - unreachable -ok4376: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 20 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %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 %panic4377, label %ok4378 -panic4377: - call void @finch_panic(ptr @.str.2661, i64 1894, ptr @.str.2662) - unreachable -ok4378: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 16 - %t70 = load i64, ptr %a2 - %t71 = load { ptr, i64, i64 }, ptr %t69 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 %t70, %t72 - br i1 %t73, label %range4379, label %inrange4380 -range4379: - call void @finch_panic_index(ptr @.str.2663, i64 1894, i64 %t70, i64 %t72) - unreachable -inrange4380: - %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 %panic4381, label %ok4382 -panic4381: - call void @finch_panic(ptr @.str.2664, i64 1894, ptr @.str.2665) - unreachable -ok4382: - %t80 = getelementptr inbounds %S.gen.Gen, ptr %t78, i32 0, i32 18 - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch.copy.arr_str(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t83, ptr %t80 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch.drop.arr_str(ptr %a85) - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4383, label %ok4384 -panic4383: - call void @finch_panic(ptr @.str.2666, i64 1895, ptr @.str.2667) - unreachable -ok4384: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 16 - %t89 = load i64, ptr %a2 - %t90 = load { ptr, i64, i64 }, ptr %t88 - %t91 = extractvalue { ptr, i64, i64 } %t90, 1 - %t92 = icmp uge i64 %t89, %t91 - br i1 %t92, label %range4385, label %inrange4386 -range4385: - call void @finch_panic_index(ptr @.str.2668, i64 1895, i64 %t89, i64 %t91) - unreachable -inrange4386: - %t93 = extractvalue { ptr, i64, i64 } %t90, 0 - %t94 = getelementptr inbounds %S.gen.StructDef, ptr %t93, i64 %t89 - %t95 = getelementptr inbounds %S.gen.StructDef, ptr %t94, i32 0, i32 7 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = load ptr, ptr %a1 - %t98 = icmp eq ptr %t97, null - br i1 %t98, label %panic4387, label %ok4388 -panic4387: - call void @finch_panic(ptr @.str.2669, i64 1895, ptr @.str.2670) - unreachable -ok4388: - %t99 = getelementptr inbounds %S.gen.Gen, ptr %t97, i32 0, i32 19 - store { ptr, i64, i64 } %t96, ptr %a100 - call void @finch.copy.arr_S_ast_Type(ptr %a101, ptr %a100) - %t102 = load { ptr, i64, i64 }, ptr %a101 - %t103 = load { ptr, i64, i64 }, ptr %t99 - store { ptr, i64, i64 } %t102, ptr %t99 - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch.drop.arr_S_ast_Type(ptr %a104) - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4389, label %ok4390 -panic4389: - call void @finch_panic(ptr @.str.2672, i64 1896, ptr @.str.2673) - unreachable -ok4390: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 16 - %t108 = load i64, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %t107 - %t110 = extractvalue { ptr, i64, i64 } %t109, 1 - %t111 = icmp uge i64 %t108, %t110 - br i1 %t111, label %range4391, label %inrange4392 -range4391: - call void @finch_panic_index(ptr @.str.2674, i64 1896, i64 %t108, i64 %t110) - unreachable -inrange4392: - %t112 = extractvalue { ptr, i64, i64 } %t109, 0 - %t113 = getelementptr inbounds %S.gen.StructDef, ptr %t112, i64 %t108 - %t114 = getelementptr inbounds %S.gen.StructDef, ptr %t113, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.2671, i64 17, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.2675, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = load ptr, ptr %a1 - %t126 = icmp eq ptr %t125, null - br i1 %t126, label %panic4393, label %ok4394 -panic4393: - call void @finch_panic(ptr @.str.2676, i64 1896, ptr @.str.2677) - unreachable -ok4394: - %t127 = getelementptr inbounds %S.gen.Gen, ptr %t125, i32 0, i32 20 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t124, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load ptr, ptr %a1 - %t131 = load i64, ptr %a2 - call void @finch.gen.resolveStructBody(ptr %t130, i64 %t131) - %t132 = load { ptr, i64, i64 }, ptr %a50 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic4395, label %ok4396 -panic4395: - call void @finch_panic(ptr @.str.2678, i64 1898, ptr @.str.2679) - unreachable -ok4396: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 18 - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch.copy.arr_str(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } %t138, ptr %t135 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch.drop.arr_str(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a58 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4397, label %ok4398 -panic4397: - call void @finch_panic(ptr @.str.2680, i64 1899, ptr @.str.2681) - unreachable -ok4398: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 19 - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch.copy.arr_S_ast_Type(ptr %a146, ptr %a145) - %t147 = load { ptr, i64, i64 }, ptr %a146 - %t148 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t147, ptr %t144 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_S_ast_Type(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a66 - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic4399, label %ok4400 -panic4399: - call void @finch_panic(ptr @.str.2682, i64 1900, ptr @.str.2683) - unreachable -ok4400: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 20 - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = load { ptr, i64, i64 }, ptr %t153 - store { ptr, i64, i64 } %t156, ptr %t153 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - call void @finch_str_drop(ptr %a66) - call void @finch.drop.arr_S_ast_Type(ptr %a58) - call void @finch.drop.arr_str(ptr %a50) - ret void -} - -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 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i1, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca i64, align 16 - %a142 = alloca %S.ast.Node, align 16 - %a148 = alloca %S.ast.Type, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca %S.ast.Type, align 16 - %a222 = alloca %S.ast.Type, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4401, label %ok4402 -panic4401: - call void @finch_panic(ptr @.str.2684, i64 1904, ptr @.str.2685) - unreachable -ok4402: - %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 %panic4403, label %ok4404 -panic4403: - call void @finch_panic(ptr @.str.2686, i64 1904, ptr @.str.2687) - unreachable -ok4404: - %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 %range4405, label %inrange4406 -range4405: - call void @finch_panic_index(ptr @.str.2688, i64 1904, i64 %t9, i64 %t11) - unreachable -inrange4406: - %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 %range4407, label %inrange4408 -range4407: - call void @finch_panic_index(ptr @.str.2689, i64 1904, i64 %t16, i64 %t18) - unreachable -inrange4408: - %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 %panic4409, label %ok4410 -panic4409: - call void @finch_panic(ptr @.str.2690, i64 1904, ptr @.str.2691) - unreachable -ok4410: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 16 - %t26 = load i64, ptr %a2 - %t27 = load { ptr, i64, i64 }, ptr %t25 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range4411, label %inrange4412 -range4411: - call void @finch_panic_index(ptr @.str.2692, i64 1904, i64 %t26, i64 %t28) - unreachable -inrange4412: - %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 %range4413, label %inrange4414 -range4413: - call void @finch_panic_index(ptr @.str.2693, i64 1904, i64 %t33, i64 %t35) - unreachable -inrange4414: - %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 %panic4415, label %ok4416 -panic4415: - call void @finch_panic(ptr @.str.2694, i64 1905, ptr @.str.2695) - unreachable -ok4416: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 16 - %t47 = load i64, ptr %a2 - %t48 = load { ptr, i64, i64 }, ptr %t46 - %t49 = extractvalue { ptr, i64, i64 } %t48, 1 - %t50 = icmp uge i64 %t47, %t49 - br i1 %t50, label %range4417, label %inrange4418 -range4417: - call void @finch_panic_index(ptr @.str.2696, i64 1905, i64 %t47, i64 %t49) - unreachable -inrange4418: - %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 %then4419, label %endif4421 -then4419: - %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.2697, 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.2698, i64 26, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } %t68, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t68, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.2699, i64 7, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 1 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t80, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t80, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2700, i64 15, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t87, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - call void @finch.gen.fail(ptr %t56, %S.ast.Node %t57, { ptr, i64, i64 } %t92) - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - br label %endif4421 -endif4421: - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4422, label %ok4423 -panic4422: - call void @finch_panic(ptr @.str.2701, i64 1908, ptr @.str.2702) - unreachable -ok4423: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 16 - %t97 = load i64, ptr %a2 - %t98 = load { ptr, i64, i64 }, ptr %t96 - %t99 = extractvalue { ptr, i64, i64 } %t98, 1 - %t100 = icmp uge i64 %t97, %t99 - br i1 %t100, label %range4424, label %inrange4425 -range4424: - call void @finch_panic_index(ptr @.str.2703, i64 1908, i64 %t97, i64 %t99) - unreachable -inrange4425: - %t101 = extractvalue { ptr, i64, i64 } %t98, 0 - %t102 = getelementptr inbounds %S.gen.StructDef, ptr %t101, i64 %t97 - %t103 = getelementptr inbounds %S.gen.StructDef, ptr %t102, i32 0, i32 15 - store i64 1, ptr %t103 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic4426, label %ok4427 -panic4426: - call void @finch_panic(ptr @.str.2704, i64 1909, ptr @.str.2705) - unreachable -ok4427: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 14 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_copy(ptr %a109, ptr %a108) - %t110 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic4428, label %ok4429 -panic4428: - call void @finch_panic(ptr @.str.2706, i64 1910, ptr @.str.2707) - unreachable -ok4429: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 16 - %t115 = load i64, ptr %a2 - %t116 = load { ptr, i64, i64 }, ptr %t114 - %t117 = extractvalue { ptr, i64, i64 } %t116, 1 - %t118 = icmp uge i64 %t115, %t117 - br i1 %t118, label %range4430, label %inrange4431 -range4430: - call void @finch_panic_index(ptr @.str.2708, i64 1910, i64 %t115, i64 %t117) - unreachable -inrange4431: - %t119 = extractvalue { ptr, i64, i64 } %t116, 0 - %t120 = getelementptr inbounds %S.gen.StructDef, ptr %t119, i64 %t115 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %t120, i32 0, i32 0 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = load ptr, ptr %a1 - %t124 = icmp eq ptr %t123, null - br i1 %t124, label %panic4432, label %ok4433 -panic4432: - call void @finch_panic(ptr @.str.2709, i64 1910, ptr @.str.2710) - unreachable -ok4433: - %t125 = getelementptr inbounds %S.gen.Gen, ptr %t123, i32 0, i32 14 - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_copy(ptr %a127, ptr %a126) - %t128 = load { ptr, i64, i64 }, ptr %a127 - %t129 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t128, ptr %t125 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i1 false, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.ast.Node, ptr %a43, i32 0, i32 9 - store i64 0, ptr %a134 - br label %each.cond4434 -each.cond4434: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = load i64, ptr %a134 - %t138 = icmp slt i64 %t137, %t136 - br i1 %t138, label %each.body4435, label %each.end4437 -each.body4435: - %t139 = load ptr, ptr %t133 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 %t137 - %t141 = load %S.ast.Node, ptr %t140 - store %S.ast.Node %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 5 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = load %S.ast.Node, ptr %a142 - %t147 = call %S.ast.Type @finch.gen.resolve(ptr %t143, %S.ast.Type %t145, %S.ast.Node %t146) - store %S.ast.Type %t147, ptr %a148 - %t149 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.2711, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp ne i32 %t153, 0 - br i1 %t154, label %then4438, label %endif4440 -then4438: - %t155 = load ptr, ptr %a1 - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 3 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.ast.Type, ptr %a148, i32 0, i32 2 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = call i64 @finch.gen.findStruct(ptr %t156, { ptr, i64, i64 } %t158, { ptr, i64, i64 } %t160) - call void @finch.gen.resolveStruct(ptr %t155, i64 %t161) - br label %endif4440 -endif4440: - %t162 = load ptr, ptr %a1 - %t163 = icmp eq ptr %t162, null - br i1 %t163, label %panic4441, label %ok4442 -panic4441: - call void @finch_panic(ptr @.str.2712, i64 1918, ptr @.str.2713) - unreachable -ok4442: - %t164 = getelementptr inbounds %S.gen.Gen, ptr %t162, i32 0, i32 16 - %t165 = load i64, ptr %a2 - %t166 = load { ptr, i64, i64 }, ptr %t164 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range4443, label %inrange4444 -range4443: - call void @finch_panic_index(ptr @.str.2714, i64 1918, i64 %t165, i64 %t167) - unreachable -inrange4444: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds %S.gen.StructDef, ptr %t169, i64 %t165 - %t171 = getelementptr inbounds %S.gen.StructDef, ptr %t170, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4445, label %ok4446 -panic4445: - call void @finch_panic(ptr @.str.2715, i64 1918, ptr @.str.2716) - unreachable -ok4446: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 16 - %t176 = load i64, ptr %a2 - %t177 = load { ptr, i64, i64 }, ptr %t175 - %t178 = extractvalue { ptr, i64, i64 } %t177, 1 - %t179 = icmp uge i64 %t176, %t178 - br i1 %t179, label %range4447, label %inrange4448 -range4447: - call void @finch_panic_index(ptr @.str.2717, i64 1918, i64 %t176, i64 %t178) - unreachable -inrange4448: - %t180 = extractvalue { ptr, i64, i64 } %t177, 0 - %t181 = getelementptr inbounds %S.gen.StructDef, ptr %t180, i64 %t176 - %t182 = getelementptr inbounds %S.gen.StructDef, ptr %t181, i32 0, i32 11 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - %t185 = load i64, ptr %t172 - %t186 = add i64 %t185, 1 - call void @finch_arr_reserve(ptr %t171, i64 %t186, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t187 = load ptr, ptr %t171 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t185 - store i64 %t184, ptr %t188 - store i64 %t186, ptr %t172 - %t189 = load ptr, ptr %a1 - %t190 = icmp eq ptr %t189, null - br i1 %t190, label %panic4449, label %ok4450 -panic4449: - call void @finch_panic(ptr @.str.2718, i64 1919, ptr @.str.2719) - unreachable -ok4450: - %t191 = getelementptr inbounds %S.gen.Gen, ptr %t189, i32 0, i32 16 - %t192 = load i64, ptr %a2 - %t193 = load { ptr, i64, i64 }, ptr %t191 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range4451, label %inrange4452 -range4451: - call void @finch_panic_index(ptr @.str.2720, i64 1919, i64 %t192, i64 %t194) - unreachable -inrange4452: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.gen.StructDef, ptr %t196, i64 %t192 - %t198 = getelementptr inbounds %S.gen.StructDef, ptr %t197, i32 0, i32 11 - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t198, i32 0, i32 1 - %t200 = getelementptr inbounds %S.ast.Node, ptr %a142, i32 0, i32 1 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_copy(ptr %a203, ptr %a202) - %t204 = load { ptr, i64, i64 }, ptr %a203 - %t205 = load i64, ptr %t199 - %t206 = add i64 %t205, 1 - call void @finch_arr_reserve(ptr %t198, i64 %t206, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t207 = load ptr, ptr %t198 - %t208 = getelementptr inbounds { ptr, i64, i64 }, ptr %t207, i64 %t205 - store { ptr, i64, i64 } %t204, ptr %t208 - store i64 %t206, ptr %t199 - %t209 = load ptr, ptr %a1 - %t210 = icmp eq ptr %t209, null - br i1 %t210, label %panic4453, label %ok4454 -panic4453: - call void @finch_panic(ptr @.str.2721, i64 1920, ptr @.str.2722) - unreachable -ok4454: - %t211 = getelementptr inbounds %S.gen.Gen, ptr %t209, i32 0, i32 16 - %t212 = load i64, ptr %a2 - %t213 = load { ptr, i64, i64 }, ptr %t211 - %t214 = extractvalue { ptr, i64, i64 } %t213, 1 - %t215 = icmp uge i64 %t212, %t214 - br i1 %t215, label %range4455, label %inrange4456 -range4455: - call void @finch_panic_index(ptr @.str.2723, i64 1920, i64 %t212, i64 %t214) - unreachable -inrange4456: - %t216 = extractvalue { ptr, i64, i64 } %t213, 0 - %t217 = getelementptr inbounds %S.gen.StructDef, ptr %t216, i64 %t212 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %t217, i32 0, i32 12 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %a148 - store %S.ast.Type %t220, ptr %a221 - call void @finch.copy.S_ast_Type(ptr %a222, ptr %a221) - %t223 = load %S.ast.Type, ptr %a222 - %t224 = load i64, ptr %t219 - %t225 = add i64 %t224, 1 - call void @finch_arr_reserve(ptr %t218, i64 %t225, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t226 = load ptr, ptr %t218 - %t227 = getelementptr inbounds %S.ast.Type, ptr %t226, i64 %t224 - store %S.ast.Type %t223, ptr %t227 - store i64 %t225, ptr %t219 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a148 - %t230 = call i1 @finch.gen.owning(ptr %t228, %S.ast.Type %t229) - br i1 %t230, label %then4457, label %endif4459 -then4457: - store i1 true, ptr %a131 - br label %endif4459 -endif4459: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a148 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - %t235 = load i64, ptr %t231 - %t236 = add i64 %t235, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t236, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t237 = load ptr, ptr %a132 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t235 - store { ptr, i64, i64 } %t234, ptr %t238 - store i64 %t236, ptr %t231 - call void @finch.drop.S_ast_Type(ptr %a148) - br label %each.step4436 -each.step4436: - %t239 = load i64, ptr %a134 - %t240 = add i64 %t239, 1 - store i64 %t240, ptr %a134 - br label %each.cond4434 -each.end4437: - %t241 = load i1, ptr %a131 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic4460, label %ok4461 -panic4460: - call void @finch_panic(ptr @.str.2724, i64 1926, ptr @.str.2725) - unreachable -ok4461: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 16 - %t245 = load i64, ptr %a2 - %t246 = load { ptr, i64, i64 }, ptr %t244 - %t247 = extractvalue { ptr, i64, i64 } %t246, 1 - %t248 = icmp uge i64 %t245, %t247 - br i1 %t248, label %range4462, label %inrange4463 -range4462: - call void @finch_panic_index(ptr @.str.2726, i64 1926, i64 %t245, i64 %t247) - unreachable -inrange4463: - %t249 = extractvalue { ptr, i64, i64 } %t246, 0 - %t250 = getelementptr inbounds %S.gen.StructDef, ptr %t249, i64 %t245 - %t251 = getelementptr inbounds %S.gen.StructDef, ptr %t250, i32 0, i32 16 - store i1 %t241, ptr %t251 - %t252 = load { ptr, i64, i64 }, ptr %a111 - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic4464, label %ok4465 -panic4464: - call void @finch_panic(ptr @.str.2727, i64 1927, ptr @.str.2728) - unreachable -ok4465: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 14 - store { ptr, i64, i64 } %t252, ptr %a256 - call void @finch_str_copy(ptr %a257, ptr %a256) - %t258 = load { ptr, i64, i64 }, ptr %a257 - %t259 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t258, ptr %t255 - store { ptr, i64, i64 } %t259, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic4466, label %ok4467 -panic4466: - call void @finch_panic(ptr @.str.2729, i64 1928, ptr @.str.2730) - unreachable -ok4467: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 16 - %t264 = load i64, ptr %a2 - %t265 = load { ptr, i64, i64 }, ptr %t263 - %t266 = extractvalue { ptr, i64, i64 } %t265, 1 - %t267 = icmp uge i64 %t264, %t266 - br i1 %t267, label %range4468, label %inrange4469 -range4468: - call void @finch_panic_index(ptr @.str.2731, i64 1928, i64 %t264, i64 %t266) - unreachable -inrange4469: - %t268 = extractvalue { ptr, i64, i64 } %t265, 0 - %t269 = getelementptr inbounds %S.gen.StructDef, ptr %t268, i64 %t264 - %t270 = getelementptr inbounds %S.gen.StructDef, ptr %t269, i32 0, i32 15 - store i64 2, ptr %t270 - %t271 = load ptr, ptr %a1 - %t272 = icmp eq ptr %t271, null - br i1 %t272, label %panic4470, label %ok4471 -panic4470: - call void @finch_panic(ptr @.str.2732, i64 1929, ptr @.str.2733) - unreachable -ok4471: - %t273 = getelementptr inbounds %S.gen.Gen, ptr %t271, i32 0, i32 2 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i32 0, i32 1 - %t275 = load ptr, ptr %a1 - %t276 = icmp eq ptr %t275, null - br i1 %t276, label %panic4472, label %ok4473 -panic4472: - call void @finch_panic(ptr @.str.2735, i64 1929, ptr @.str.2736) - unreachable -ok4473: - %t277 = getelementptr inbounds %S.gen.Gen, ptr %t275, i32 0, i32 16 - %t278 = load i64, ptr %a2 - %t279 = load { ptr, i64, i64 }, ptr %t277 - %t280 = extractvalue { ptr, i64, i64 } %t279, 1 - %t281 = icmp uge i64 %t278, %t280 - br i1 %t281, label %range4474, label %inrange4475 -range4474: - call void @finch_panic_index(ptr @.str.2737, i64 1929, i64 %t278, i64 %t280) - unreachable -inrange4475: - %t282 = extractvalue { ptr, i64, i64 } %t279, 0 - %t283 = getelementptr inbounds %S.gen.StructDef, ptr %t282, i64 %t278 - %t284 = getelementptr inbounds %S.gen.StructDef, ptr %t283, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.modName({ ptr, i64, i64 } %t285) - store { ptr, i64, i64 } { ptr @.str.2734, i64 3, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.2738, i64 1, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load ptr, ptr %a1 - %t298 = icmp eq ptr %t297, null - br i1 %t298, label %panic4476, label %ok4477 -panic4476: - call void @finch_panic(ptr @.str.2739, i64 1929, ptr @.str.2740) - unreachable -ok4477: - %t299 = getelementptr inbounds %S.gen.Gen, ptr %t297, i32 0, i32 16 - %t300 = load i64, ptr %a2 - %t301 = load { ptr, i64, i64 }, ptr %t299 - %t302 = extractvalue { ptr, i64, i64 } %t301, 1 - %t303 = icmp uge i64 %t300, %t302 - br i1 %t303, label %range4478, label %inrange4479 -range4478: - call void @finch_panic_index(ptr @.str.2741, i64 1929, i64 %t300, i64 %t302) - unreachable -inrange4479: - %t304 = extractvalue { ptr, i64, i64 } %t301, 0 - %t305 = getelementptr inbounds %S.gen.StructDef, ptr %t304, i64 %t300 - %t306 = getelementptr inbounds %S.gen.StructDef, ptr %t305, i32 0, i32 1 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = call { ptr, i64, i64 } @finch.gen.mangle({ ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t296, ptr %a310 - store { ptr, i64, i64 } %t308, ptr %a311 - call void @finch_str_concat(ptr %a309, ptr %a310, ptr %a311) - store { ptr, i64, i64 } %t296, ptr %a312 - call void @finch_str_drop(ptr %a312) - store { ptr, i64, i64 } %t308, ptr %a313 - call void @finch_str_drop(ptr %a313) - %t314 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } %t314, ptr %a316 - store { ptr, i64, i64 } { ptr @.str.2742, i64 10, i64 0 }, ptr %a317 - call void @finch_str_concat(ptr %a315, ptr %a316, ptr %a317) - store { ptr, i64, i64 } %t314, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a315 - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2743, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a132, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t319, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t319, ptr %a327 - call void @finch_str_drop(ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.2744, i64 2, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load i64, ptr %t274 - %t336 = add i64 %t335, 1 - call void @finch_arr_reserve(ptr %t273, i64 %t336, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t337 = load ptr, ptr %t273 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t335 - store { ptr, i64, i64 } %t334, ptr %t338 - store i64 %t336, ptr %t274 - call void @finch.drop.arr_str(ptr %a132) - call void @finch_str_drop(ptr %a111) - call void @finch.drop.S_ast_Node(ptr %a43) - ret void -} - -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 %panic4480, label %ok4481 -panic4480: - call void @finch_panic(ptr @.str.2745, i64 1938, ptr @.str.2746) - unreachable -ok4481: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 33 - %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 %panic4482, label %ok4483 -panic4482: - call void @finch_panic(ptr @.str.2747, i64 1939, ptr @.str.2748) - unreachable -ok4483: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 33 - %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 - %a10 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - %t2 = load i64, ptr %a1 - %t3 = icmp slt i64 %t2, 0 - br i1 %t3, label %then4484, label %endif4486 -then4484: - ret { ptr, i64, i64 } { ptr @.str.2749, i64 4, i64 0 } -endif4486: - %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.2750, i64 1, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a9 - call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) - store { ptr, i64, i64 } %t6, ptr %a10 - call void @finch_str_drop(ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a7 - ret { ptr, i64, i64 } %t11 -} - -define internal i64 @finch.gen.alignUp(i64 %p0, i64 %p1) { -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 %then4487, label %endif4489 -then4487: - %t5 = load i64, ptr %a1 - ret i64 %t5 -endif4489: - %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 %panic4490, label %ok4491 -panic4490: - call void @finch_panic(ptr @.str.2751, i64 1958, ptr @.str.2752) - unreachable -ok4491: - %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.2753, 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.from4492 -logic.from4492: - br i1 %t13, label %logic.end4494, label %logic.rhs4493 -logic.rhs4493: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2754, 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.rend4495 -logic.rend4495: - br label %logic.end4494 -logic.end4494: - %t19 = phi i1 [ true, %logic.from4492 ], [ %t18, %logic.rend4495 ] - br label %logic.from4496 -logic.from4496: - br i1 %t19, label %logic.end4498, label %logic.rhs4497 -logic.rhs4497: - %t20 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.2755, 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.rend4499 -logic.rend4499: - br label %logic.end4498 -logic.end4498: - %t25 = phi i1 [ true, %logic.from4496 ], [ %t24, %logic.rend4499 ] - br label %logic.from4500 -logic.from4500: - br i1 %t25, label %logic.end4502, label %logic.rhs4501 -logic.rhs4501: - %t26 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.2756, 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.rend4503 -logic.rend4503: - br label %logic.end4502 -logic.end4502: - %t31 = phi i1 [ true, %logic.from4500 ], [ %t30, %logic.rend4503 ] - br i1 %t31, label %then4504, label %endif4506 -then4504: - %t32 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 1, 0 - %t33 = insertvalue %S.gen.SizeAlign %t32, i64 1, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t33 -endif4506: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.2757, 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.from4507 -logic.from4507: - br i1 %t38, label %logic.end4509, label %logic.rhs4508 -logic.rhs4508: - %t39 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t39, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.2758, 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.rend4510 -logic.rend4510: - br label %logic.end4509 -logic.end4509: - %t44 = phi i1 [ true, %logic.from4507 ], [ %t43, %logic.rend4510 ] - br i1 %t44, label %then4511, label %endif4513 -then4511: - %t45 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 2, 0 - %t46 = insertvalue %S.gen.SizeAlign %t45, i64 2, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t46 -endif4513: - %t47 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.2759, 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.from4514 -logic.from4514: - br i1 %t51, label %logic.end4516, label %logic.rhs4515 -logic.rhs4515: - %t52 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.2760, 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.rend4517 -logic.rend4517: - br label %logic.end4516 -logic.end4516: - %t57 = phi i1 [ true, %logic.from4514 ], [ %t56, %logic.rend4517 ] - br label %logic.from4518 -logic.from4518: - br i1 %t57, label %logic.end4520, label %logic.rhs4519 -logic.rhs4519: - %t58 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t58, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.2761, 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.rend4521 -logic.rend4521: - br label %logic.end4520 -logic.end4520: - %t63 = phi i1 [ true, %logic.from4518 ], [ %t62, %logic.rend4521 ] - br label %logic.from4522 -logic.from4522: - br i1 %t63, label %logic.end4524, label %logic.rhs4523 -logic.rhs4523: - %t64 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t64, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.2762, 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.rend4525 -logic.rend4525: - br label %logic.end4524 -logic.end4524: - %t69 = phi i1 [ true, %logic.from4522 ], [ %t68, %logic.rend4525 ] - br i1 %t69, label %then4526, label %endif4528 -then4526: - %t70 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 4, 0 - %t71 = insertvalue %S.gen.SizeAlign %t70, i64 4, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t71 -endif4528: - %t72 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.2763, 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.from4529 -logic.from4529: - br i1 %t76, label %logic.end4531, label %logic.rhs4530 -logic.rhs4530: - %t77 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t77, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.2764, 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.rend4532 -logic.rend4532: - br label %logic.end4531 -logic.end4531: - %t82 = phi i1 [ true, %logic.from4529 ], [ %t81, %logic.rend4532 ] - br i1 %t82, label %then4533, label %endif4535 -then4533: - %t83 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 24, 0 - %t84 = insertvalue %S.gen.SizeAlign %t83, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t84 -endif4535: - %t85 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.2765, 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 %then4536, label %endif4538 -then4536: - %t90 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 56, 0 - %t91 = insertvalue %S.gen.SizeAlign %t90, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t91 -endif4538: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.2766, 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 %then4539, label %endif4541 -then4539: - %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 %range4542, label %inrange4543 -range4542: - call void @finch_panic_index(ptr @.str.2767, i64 1980, i64 0, i64 %t100) - unreachable -inrange4543: - %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 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t115 -endif4541: - %t116 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.2768, 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 %then4544, label %endif4546 -then4544: - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic4547, label %ok4548 -panic4547: - call void @finch_panic(ptr @.str.2769, i64 1984, ptr @.str.2770) - unreachable -ok4548: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 16 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %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 %range4549, label %inrange4550 -range4549: - call void @finch_panic_index(ptr @.str.2771, i64 1984, i64 %t129, i64 %t131) - unreachable -inrange4550: - %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 %then4551, label %endif4553 -then4551: - %t142 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 9 - %t143 = load i64, ptr %t142 - %t144 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t143, 0 - %t145 = getelementptr inbounds %S.gen.StructDef, ptr %a139, i32 0, i32 10 - %t146 = load i64, ptr %t145 - %t147 = insertvalue %S.gen.SizeAlign %t144, i64 %t146, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t147 -endif4553: - 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.cond4554 -each.cond4554: - %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.body4555, label %each.end4557 -each.body4555: - %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 %then4558, label %endif4560 -then4558: - %t175 = getelementptr inbounds %S.gen.SizeAlign, ptr %a163, i32 0, i32 1 - %t176 = load i64, ptr %t175 - store i64 %t176, ptr %a149 - br label %endif4560 -endif4560: - br label %each.step4556 -each.step4556: - %t177 = load i64, ptr %a151 - %t178 = add i64 %t177, 1 - store i64 %t178, ptr %a151 - br label %each.cond4554 -each.end4557: - %t179 = load i64, ptr %a148 - %t180 = load i64, ptr %a149 - %t181 = call i64 @finch.gen.alignUp(i64 %t179, i64 %t180) - %t182 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 %t181, 0 - %t183 = load i64, ptr %a149 - %t184 = insertvalue %S.gen.SizeAlign %t182, i64 %t183, 1 - call void @finch.drop.S_gen_StructDef(ptr %a139) - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t184 -endif4546: - %t185 = insertvalue %S.gen.SizeAlign zeroinitializer, i64 8, 0 - %t186 = insertvalue %S.gen.SizeAlign %t185, i64 8, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.SizeAlign %t186 -} - -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 - 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 %then4561, label %endif4563 -then4561: - %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 -endif4563: - 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.cond4564 -each.cond4564: - %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.body4565, label %each.end4567 -each.body4565: - %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.step4566 -each.step4566: - %t40 = load i64, ptr %a13 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a13 - br label %each.cond4564 -each.end4567: - %t42 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t42 -} - -define internal i64 @finch.gen.dbgMember(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3, i64 %p4, i64 %p5, i64 %p6, i64 %p7) { -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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.2772, 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.2773, i64 11, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a21, i64 %t20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - store { ptr, i64, i64 } %t19, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t22, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.2774, i64 9, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a35, i64 %t34) - %t36 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t33, ptr %a38 - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t33, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t36, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.2775, i64 8, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - %t48 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t47, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t47, ptr %a54 - call void @finch_str_drop(ptr %a54) - store { ptr, i64, i64 } %t50, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2776, i64 12, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = load i64, ptr %a6 - %t63 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t62) - store { ptr, i64, i64 } %t61, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.2777, i64 8, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load i64, ptr %a7 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.2778, i64 10, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a8 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2779, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = call i64 @finch.gen.md(ptr %t9, { ptr, i64, i64 } %t102) - store { ptr, i64, i64 } %t102, ptr %a104 - call void @finch_str_drop(ptr %a104) - ret i64 %t103 -} - -define internal i64 @finch.gen.basicType(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2, { ptr, i64, i64 } %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.2780, 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.2781, i64 9, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a17, i64 %t16) - %t18 = load { ptr, i64, i64 }, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.2782, i64 12, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.2783, i64 1, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = call i64 @finch.gen.md(ptr %t5, { ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - ret i64 %t41 -} - -define internal i64 @finch.gen.diType(ptr %p0, %S.ast.Type %p1) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a59 = alloca 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 - %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 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.EnumDef, align 16 - %a129 = alloca %S.gen.EnumDef, align 16 - %a131 = alloca %S.gen.EnumDef, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i64, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca i32, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca i64, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.gen.SizeAlign, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca %S.ast.Type, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca %S.ast.Type, align 16 - %a414 = alloca %S.ast.Type, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca i64, align 16 - %a439 = alloca %S.ast.Type, align 16 - %a440 = alloca i64, align 16 - %a446 = alloca i64, align 16 - %a452 = alloca i64, align 16 - %a458 = alloca i64, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca %S.ast.Type, align 16 - %a547 = alloca i64, align 16 - %a550 = alloca i64, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca i64, align 16 - %a569 = alloca i64, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca %S.gen.StructDef, align 16 - %a677 = alloca %S.gen.StructDef, align 16 - %a679 = alloca %S.gen.StructDef, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca %S.gen.SizeAlign, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca i64, align 16 - %a705 = alloca %S.gen.SizeAlign, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a743 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a806 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca i32, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %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.2784, 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.from4568 -logic.from4568: - br i1 %t13, label %logic.end4570, label %logic.rhs4569 -logic.rhs4569: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.2785, 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.rend4571 -logic.rend4571: - br label %logic.end4570 -logic.end4570: - %t19 = phi i1 [ true, %logic.from4568 ], [ %t18, %logic.rend4571 ] - br i1 %t19, label %then4572, label %endif4574 -then4572: - call void @finch_str_drop(ptr %a8) - ret i64 -1 -endif4574: - %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.2786, i64 2, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic4575, label %ok4576 -panic4575: - call void @finch_panic(ptr @.str.2787, i64 2033, ptr @.str.2788) - unreachable -ok4576: - %t30 = getelementptr inbounds %S.gen.Gen, ptr %t28, i32 0, i32 34 - %t31 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t31, ptr %a32 - %t33 = call i64 @finch_map_find(ptr %t30, ptr %a32, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t34 = icmp sge i64 %t33, 0 - br i1 %t34, label %then4577, label %endif4579 -then4577: - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4580, label %ok4581 -panic4580: - call void @finch_panic(ptr @.str.2789, i64 2034, ptr @.str.2790) - unreachable -ok4581: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 34 - %t38 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = call i64 @finch_map_find(ptr %t37, ptr %a39, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %map.missing4582, label %map.found4583 -map.missing4582: - store { ptr, i64, i64 } zeroinitializer, ptr %a42 - store { ptr, i64, i64 } %t38, ptr %a43 - call void @finch_buf_str(ptr %a42, ptr %a43, i32 1) - call void @finch_map_missing(ptr @.str.2791, i64 2034, ptr %a42) - unreachable -map.found4583: - %t44 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t37, i32 0, i32 0 - %t45 = load ptr, ptr %t44 - %t46 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t45, i64 %t40 - %t47 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t46, i32 0, i32 2 - %t48 = load i64, ptr %t47 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t48 -endif4579: - store i64 -1, ptr %a49 - %t50 = load ptr, ptr %a1 - %t51 = icmp eq ptr %t50, null - br i1 %t51, label %panic4584, label %ok4585 -panic4584: - call void @finch_panic(ptr @.str.2792, i64 2037, ptr @.str.2793) - unreachable -ok4585: - %t52 = getelementptr inbounds %S.gen.Gen, ptr %t50, i32 0, i32 35 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = extractvalue { ptr, i64, i64 } %t53, 1 - %t55 = icmp uge i64 0, %t54 - br i1 %t55, label %range4586, label %inrange4587 -range4586: - call void @finch_panic_index(ptr @.str.2794, i64 2037, i64 0, i64 %t54) - unreachable -inrange4587: - %t56 = extractvalue { ptr, i64, i64 } %t53, 0 - %t57 = getelementptr inbounds i64, ptr %t56, i64 0 - %t58 = load i64, ptr %t57 - store i64 %t58, ptr %a59 - %t60 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.2795, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %then4588, label %else4589 -then4588: - %t65 = load ptr, ptr %a1 - %t66 = call i64 @finch.gen.basicType(ptr %t65, { ptr, i64, i64 } { ptr @.str.2796, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2797, i64 14, i64 0 }) - store i64 %t66, ptr %a49 - br label %endif4590 -else4589: - %t67 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.2798, i64 4, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then4591, label %else4592 -then4591: - %t72 = load ptr, ptr %a1 - %t73 = call i64 @finch.gen.basicType(ptr %t72, { ptr, i64, i64 } { ptr @.str.2799, i64 4, i64 0 }, i64 8, { ptr, i64, i64 } { ptr @.str.2800, i64 18, i64 0 }) - store i64 %t73, ptr %a49 - br label %endif4593 -else4592: - %t74 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2801, i64 3, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br i1 %t78, label %then4594, label %else4595 -then4594: - %t79 = load ptr, ptr %a1 - %t80 = call i64 @finch.gen.basicType(ptr %t79, { ptr, i64, i64 } { ptr @.str.2802, i64 3, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2803, i64 13, i64 0 }) - store i64 %t80, ptr %a49 - br label %endif4596 -else4595: - %t81 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2804, i64 5, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %then4597, label %else4598 -then4597: - %t86 = load ptr, ptr %a1 - %t87 = call i64 @finch.gen.basicType(ptr %t86, { ptr, i64, i64 } { ptr @.str.2805, i64 5, i64 0 }, i64 64, { ptr, i64, i64 } { ptr @.str.2806, i64 12, i64 0 }) - store i64 %t87, ptr %a49 - br label %endif4599 -else4598: - %t88 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.2807, i64 3, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then4600, label %else4601 -then4600: - %t93 = load ptr, ptr %a1 - %t94 = call i64 @finch.gen.basicType(ptr %t93, { ptr, i64, i64 } { ptr @.str.2808, i64 3, i64 0 }, i64 32, { ptr, i64, i64 } { ptr @.str.2809, i64 12, i64 0 }) - store i64 %t94, ptr %a49 - br label %endif4602 -else4601: - %t95 = load %S.ast.Type, ptr %a2 - %t96 = call i1 @finch.gen.isInt(%S.ast.Type %t95) - br i1 %t96, label %then4603, label %else4604 -then4603: - store { ptr, i64, i64 } { ptr @.str.2810, i64 15, i64 0 }, ptr %a97 - %t98 = load %S.ast.Type, ptr %a2 - %t99 = call i1 @finch.gen.isSigned(%S.ast.Type %t98) - br i1 %t99, label %then4606, label %endif4608 -then4606: - %t100 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.2811, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif4608 -endif4608: - %t102 = load ptr, ptr %a1 - %t103 = load { ptr, i64, i64 }, ptr %a8 - %t104 = load %S.ast.Type, ptr %a2 - %t105 = call i64 @finch.gen.bitsOf(%S.ast.Type %t104) - %t106 = load { ptr, i64, i64 }, ptr %a97 - %t107 = call i64 @finch.gen.basicType(ptr %t102, { ptr, i64, i64 } %t103, i64 %t105, { ptr, i64, i64 } %t106) - store i64 %t107, ptr %a49 - call void @finch_str_drop(ptr %a97) - br label %endif4605 -else4604: - %t108 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2812, i64 4, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then4609, label %else4610 -then4609: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic4612, label %ok4613 -panic4612: - call void @finch_panic(ptr @.str.2813, i64 2055, ptr @.str.2814) - unreachable -ok4613: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 21 - %t116 = load ptr, ptr %a1 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t120 = load { ptr, i64, i64 }, ptr %t119 - %t121 = call i64 @finch.gen.findEnum(ptr %t116, { ptr, i64, i64 } %t118, { ptr, i64, i64 } %t120) - %t122 = load { ptr, i64, i64 }, ptr %t115 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 %t121, %t123 - br i1 %t124, label %range4614, label %inrange4615 -range4614: - call void @finch_panic_index(ptr @.str.2815, i64 2055, i64 %t121, i64 %t123) - unreachable -inrange4615: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.gen.EnumDef, ptr %t125, i64 %t121 - %t127 = load %S.gen.EnumDef, ptr %t126 - store %S.gen.EnumDef %t127, ptr %a128 - call void @finch.copy.S_gen_EnumDef(ptr %a129, ptr %a128) - %t130 = load %S.gen.EnumDef, ptr %a129 - store %S.gen.EnumDef %t130, ptr %a131 - store { ptr, i64, i64 } zeroinitializer, ptr %a132 - %t133 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - store i64 0, ptr %a136 - br label %for.cond4616 -for.cond4616: - %t137 = load i64, ptr %a136 - %t138 = icmp slt i64 %t137, %t135 - br i1 %t138, label %for.body4617, label %for.end4619 -for.body4617: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - %t140 = load ptr, ptr %a1 - %t141 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 2 - %t142 = load i64, ptr %a136 - %t143 = load { ptr, i64, i64 }, ptr %t141 - %t144 = extractvalue { ptr, i64, i64 } %t143, 1 - %t145 = icmp uge i64 %t142, %t144 - br i1 %t145, label %range4620, label %inrange4621 -range4620: - call void @finch_panic_index(ptr @.str.2817, i64 2058, i64 %t142, i64 %t144) - unreachable -inrange4621: - %t146 = extractvalue { ptr, i64, i64 } %t143, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i64 %t142 - %t148 = load { ptr, i64, i64 }, ptr %t147 - store { ptr, i64, i64 } { ptr @.str.2816, i64 21, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.2818, i64 10, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 3 - %t159 = load i64, ptr %a136 - %t160 = load { ptr, i64, i64 }, ptr %t158 - %t161 = extractvalue { ptr, i64, i64 } %t160, 1 - %t162 = icmp uge i64 %t159, %t161 - br i1 %t162, label %range4622, label %inrange4623 -range4622: - call void @finch_panic_index(ptr @.str.2819, i64 2058, i64 %t159, i64 %t161) - unreachable -inrange4623: - %t163 = extractvalue { ptr, i64, i64 } %t160, 0 - %t164 = getelementptr inbounds i64, ptr %t163, i64 %t159 - %t165 = load i64, ptr %t164 - call void @finch_str_from_int(ptr %a166, i64 %t165) - %t167 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t157, ptr %a169 - store { ptr, i64, i64 } %t167, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t157, ptr %a171 - call void @finch_str_drop(ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.2820, i64 1, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = call i64 @finch.gen.md(ptr %t140, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t178, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t179) - %t182 = load i64, ptr %t139 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a132, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a132 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t139 - br label %for.step4618 -for.step4618: - %t186 = load i64, ptr %a136 - %t187 = add i64 %t186, 1 - store i64 %t187, ptr %a136 - br label %for.cond4616 -for.end4619: - %t188 = load ptr, ptr %a1 - %t189 = getelementptr inbounds %S.gen.EnumDef, ptr %a131, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } { ptr @.str.2821, i64 54, i64 0 }, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t194, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.2822, i64 10, i64 0 }, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t194, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - %t200 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a201, i64 %t200) - %t202 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t199, ptr %a206 - call void @finch_str_drop(ptr %a206) - store { ptr, i64, i64 } %t202, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } { ptr @.str.2823, i64 24, i64 0 }, ptr %a211 - call void @finch_str_concat(ptr %a209, ptr %a210, ptr %a211) - store { ptr, i64, i64 } %t208, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a209 - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %a132, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2824, i64 2, i64 0 }, ptr %a215 - call void @finch_str_join(ptr %a216, ptr %a132, ptr %a215) - %t217 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t213, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t213, ptr %a221 - call void @finch_str_drop(ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.2825, i64 2, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call i64 @finch.gen.md(ptr %t188, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - store i64 %t229, ptr %a49 - call void @finch.drop.arr_str(ptr %a132) - call void @finch.drop.S_gen_EnumDef(ptr %a131) - br label %endif4611 -else4610: - %t231 = load ptr, ptr %a1 - %t232 = call i64 @finch.gen.md(ptr %t231, { ptr, i64, i64 } { ptr @.str.2826, i64 0, i64 0 }) - store i64 %t232, ptr %a49 - %t233 = load i64, ptr %a49 - %t234 = load ptr, ptr %a1 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic4624, label %ok4625 -panic4624: - call void @finch_panic(ptr @.str.2827, i64 2064, ptr @.str.2828) - unreachable -ok4625: - %t236 = getelementptr inbounds %S.gen.Gen, ptr %t234, i32 0, i32 34 - %t237 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t237, ptr %a238 - store i32 0, ptr %a239 - %t240 = call i64 @finch_map_slot(ptr %t236, ptr %a238, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a239) - %t241 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t236, i32 0, i32 0 - %t242 = load ptr, ptr %t241 - %t243 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t242, i64 %t240 - %t244 = load i32, ptr %a239 - %t245 = icmp ne i32 %t244, 0 - br i1 %t245, label %map.new4626, label %map.have4627 -map.new4626: - %t246 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 1 - call void @finch_str_copy(ptr %t246, ptr %a238) - %t247 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 0, ptr %t247 - br label %map.have4627 -map.have4627: - %t248 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t243, i32 0, i32 2 - store i64 %t233, ptr %t248 - %t249 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t249, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.2829, i64 3, i64 0 }, ptr %a251 - %t252 = call i32 @finch_str_eq(ptr %a250, ptr %a251) - %t253 = icmp ne i32 %t252, 0 - br i1 %t253, label %then4628, label %else4629 -then4628: - store i64 -1, ptr %a254 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t256 = getelementptr inbounds { ptr, i64, i64 }, ptr %t255, i32 0, i32 1 - %t257 = load i64, ptr %t256 - %t258 = icmp sgt i64 %t257, 0 - br i1 %t258, label %then4631, label %endif4633 -then4631: - %t259 = load ptr, ptr %a1 - %t260 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t261 = load { ptr, i64, i64 }, ptr %t260 - %t262 = extractvalue { ptr, i64, i64 } %t261, 1 - %t263 = icmp uge i64 0, %t262 - br i1 %t263, label %range4634, label %inrange4635 -range4634: - call void @finch_panic_index(ptr @.str.2830, i64 2068, i64 0, i64 %t262) - unreachable -inrange4635: - %t264 = extractvalue { ptr, i64, i64 } %t261, 0 - %t265 = getelementptr inbounds %S.ast.Type, ptr %t264, i64 0 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call i64 @finch.gen.diType(ptr %t259, %S.ast.Type %t266) - store i64 %t267, ptr %a254 - br label %endif4633 -endif4633: - %t268 = load i64, ptr %a254 - %t269 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t268) - store { ptr, i64, i64 } { ptr @.str.2831, i64 51, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.2832, i64 11, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic4636, label %ok4637 -panic4636: - call void @finch_panic(ptr @.str.2833, i64 2070, ptr @.str.2834) - unreachable -ok4637: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 33 - %t283 = load i64, ptr %a49 - %t284 = load { ptr, i64, i64 }, ptr %t282 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range4638, label %inrange4639 -range4638: - call void @finch_panic_index(ptr @.str.2835, i64 2070, i64 %t283, i64 %t285) - unreachable -inrange4639: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 %t283 - %t289 = load { ptr, i64, i64 }, ptr %t288 - store { ptr, i64, i64 } %t279, ptr %t288 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_drop(ptr %a290) - br label %endif4630 -else4629: - %t291 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t291, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.2836, i64 5, i64 0 }, ptr %a293 - %t294 = call i32 @finch_str_eq(ptr %a292, ptr %a293) - %t295 = icmp ne i32 %t294, 0 - br i1 %t295, label %then4640, label %else4641 -then4640: - %t296 = load ptr, ptr %a1 - %t297 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t298 = load { ptr, i64, i64 }, ptr %t297 - %t299 = extractvalue { ptr, i64, i64 } %t298, 1 - %t300 = icmp uge i64 0, %t299 - br i1 %t300, label %range4643, label %inrange4644 -range4643: - call void @finch_panic_index(ptr @.str.2837, i64 2072, i64 0, i64 %t299) - unreachable -inrange4644: - %t301 = extractvalue { ptr, i64, i64 } %t298, 0 - %t302 = getelementptr inbounds %S.ast.Type, ptr %t301, i64 0 - %t303 = load %S.ast.Type, ptr %t302 - %t304 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t296, %S.ast.Type %t303) - store %S.gen.SizeAlign %t304, ptr %a305 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t308 = load i64, ptr %t307 - call void @finch_str_from_int(ptr %a309, i64 %t308) - %t310 = load { ptr, i64, i64 }, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.2838, i64 19, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.2839, i64 1, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call i64 @finch.gen.md(ptr %t306, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store i64 %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %t325 - %t327 = extractvalue { ptr, i64, i64 } %t326, 1 - %t328 = icmp uge i64 0, %t327 - br i1 %t328, label %range4645, label %inrange4646 -range4645: - call void @finch_panic_index(ptr @.str.2841, i64 2074, i64 0, i64 %t327) - unreachable -inrange4646: - %t329 = extractvalue { ptr, i64, i64 } %t326, 0 - %t330 = getelementptr inbounds %S.ast.Type, ptr %t329, i64 0 - %t331 = load %S.ast.Type, ptr %t330 - %t332 = call i64 @finch.gen.diType(ptr %t324, %S.ast.Type %t331) - %t333 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t332) - store { ptr, i64, i64 } { ptr @.str.2840, i64 51, i64 0 }, ptr %a335 - store { ptr, i64, i64 } %t333, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - store { ptr, i64, i64 } %t338, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.2842, i64 8, i64 0 }, ptr %a341 - call void @finch_str_concat(ptr %a339, ptr %a340, ptr %a341) - store { ptr, i64, i64 } %t338, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a339 - %t344 = getelementptr inbounds %S.gen.SizeAlign, ptr %a305, i32 0, i32 0 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 4 - %t347 = load i64, ptr %t346 - %t348 = mul i64 %t345, %t347 - %t349 = mul i64 %t348, 8 - call void @finch_str_from_int(ptr %a350, i64 %t349) - %t351 = load { ptr, i64, i64 }, ptr %a350 - store { ptr, i64, i64 } %t343, ptr %a353 - store { ptr, i64, i64 } %t351, ptr %a354 - call void @finch_str_concat(ptr %a352, ptr %a353, ptr %a354) - store { ptr, i64, i64 } %t343, ptr %a355 - call void @finch_str_drop(ptr %a355) - store { ptr, i64, i64 } %t351, ptr %a356 - call void @finch_str_drop(ptr %a356) - %t357 = load { ptr, i64, i64 }, ptr %a352 - store { ptr, i64, i64 } %t357, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.2843, i64 15, i64 0 }, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t357, ptr %a361 - call void @finch_str_drop(ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a358 - %t363 = load i64, ptr %a323 - call void @finch_str_from_int(ptr %a364, i64 %t363) - %t365 = load { ptr, i64, i64 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a367 - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t362, ptr %a369 - call void @finch_str_drop(ptr %a369) - store { ptr, i64, i64 } %t365, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a366 - store { ptr, i64, i64 } %t371, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.2844, i64 2, i64 0 }, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t371, ptr %a375 - call void @finch_str_drop(ptr %a375) - %t376 = load { ptr, i64, i64 }, ptr %a372 - %t377 = load ptr, ptr %a1 - %t378 = icmp eq ptr %t377, null - br i1 %t378, label %panic4647, label %ok4648 -panic4647: - call void @finch_panic(ptr @.str.2845, i64 2074, ptr @.str.2846) - unreachable -ok4648: - %t379 = getelementptr inbounds %S.gen.Gen, ptr %t377, i32 0, i32 33 - %t380 = load i64, ptr %a49 - %t381 = load { ptr, i64, i64 }, ptr %t379 - %t382 = extractvalue { ptr, i64, i64 } %t381, 1 - %t383 = icmp uge i64 %t380, %t382 - br i1 %t383, label %range4649, label %inrange4650 -range4649: - call void @finch_panic_index(ptr @.str.2847, i64 2074, i64 %t380, i64 %t382) - unreachable -inrange4650: - %t384 = extractvalue { ptr, i64, i64 } %t381, 0 - %t385 = getelementptr inbounds { ptr, i64, i64 }, ptr %t384, i64 %t380 - %t386 = load { ptr, i64, i64 }, ptr %t385 - store { ptr, i64, i64 } %t376, ptr %t385 - store { ptr, i64, i64 } %t386, ptr %a387 - call void @finch_str_drop(ptr %a387) - br label %endif4642 -else4641: - %t388 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t388, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.2848, i64 3, i64 0 }, ptr %a390 - %t391 = call i32 @finch_str_eq(ptr %a389, ptr %a390) - %t392 = icmp ne i32 %t391, 0 - br label %logic.from4651 -logic.from4651: - br i1 %t392, label %logic.end4653, label %logic.rhs4652 -logic.rhs4652: - %t393 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t393, ptr %a394 - store { ptr, i64, i64 } { ptr @.str.2849, i64 5, i64 0 }, ptr %a395 - %t396 = call i32 @finch_str_eq(ptr %a394, ptr %a395) - %t397 = icmp ne i32 %t396, 0 - br label %logic.rend4654 -logic.rend4654: - br label %logic.end4653 -logic.end4653: - %t398 = phi i1 [ true, %logic.from4651 ], [ %t397, %logic.rend4654 ] - br i1 %t398, label %then4655, label %else4656 -then4655: - %t399 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2850, i64 4, i64 0 }) - store %S.ast.Type %t399, ptr %a400 - %t401 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t401, ptr %a402 - store { ptr, i64, i64 } { ptr @.str.2851, i64 5, i64 0 }, ptr %a403 - %t404 = call i32 @finch_str_eq(ptr %a402, ptr %a403) - %t405 = icmp ne i32 %t404, 0 - br i1 %t405, label %then4658, label %endif4660 -then4658: - %t406 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t407 = load { ptr, i64, i64 }, ptr %t406 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 0, %t408 - br i1 %t409, label %range4661, label %inrange4662 -range4661: - call void @finch_panic_index(ptr @.str.2852, i64 2078, i64 0, i64 %t408) - unreachable -inrange4662: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.ast.Type, ptr %t410, i64 0 - %t412 = load %S.ast.Type, ptr %t411 - store %S.ast.Type %t412, ptr %a413 - call void @finch.copy.S_ast_Type(ptr %a414, ptr %a413) - %t415 = load %S.ast.Type, ptr %a414 - %t416 = load %S.ast.Type, ptr %a400 - store %S.ast.Type %t415, ptr %a400 - store %S.ast.Type %t416, ptr %a417 - call void @finch.drop.S_ast_Type(ptr %a417) - br label %endif4660 -endif4660: - %t418 = load ptr, ptr %a1 - %t419 = load ptr, ptr %a1 - %t420 = load %S.ast.Type, ptr %a400 - %t421 = call i64 @finch.gen.diType(ptr %t419, %S.ast.Type %t420) - %t422 = call { ptr, i64, i64 } @finch.gen.mdRef(i64 %t421) - store { ptr, i64, i64 } { ptr @.str.2853, i64 51, i64 0 }, ptr %a424 - store { ptr, i64, i64 } %t422, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - store { ptr, i64, i64 } %t427, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.2854, i64 11, i64 0 }, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = call i64 @finch.gen.md(ptr %t418, { ptr, i64, i64 } %t432) - store { ptr, i64, i64 } %t432, ptr %a434 - call void @finch_str_drop(ptr %a434) - store i64 %t433, ptr %a435 - %t436 = load ptr, ptr %a1 - %t437 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2855, i64 3, i64 0 }) - %t438 = call i64 @finch.gen.diType(ptr %t436, %S.ast.Type %t437) - store %S.ast.Type %t437, ptr %a439 - call void @finch.drop.S_ast_Type(ptr %a439) - store i64 %t438, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = load i64, ptr %a49 - %t443 = load i64, ptr %a59 - %t444 = load i64, ptr %a435 - %t445 = call i64 @finch.gen.dbgMember(ptr %t441, { ptr, i64, i64 } { ptr @.str.2856, i64 3, i64 0 }, i64 %t442, i64 %t443, i64 0, i64 %t444, i64 64, i64 0) - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load i64, ptr %a49 - %t449 = load i64, ptr %a59 - %t450 = load i64, ptr %a440 - %t451 = call i64 @finch.gen.dbgMember(ptr %t447, { ptr, i64, i64 } { ptr @.str.2857, i64 3, i64 0 }, i64 %t448, i64 %t449, i64 0, i64 %t450, i64 64, i64 64) - store i64 %t451, ptr %a452 - %t453 = load ptr, ptr %a1 - %t454 = load i64, ptr %a49 - %t455 = load i64, ptr %a59 - %t456 = load i64, ptr %a440 - %t457 = call i64 @finch.gen.dbgMember(ptr %t453, { ptr, i64, i64 } { ptr @.str.2858, i64 3, i64 0 }, i64 %t454, i64 %t455, i64 0, i64 %t456, i64 64, i64 128) - store i64 %t457, ptr %a458 - %t459 = load %S.ast.Type, ptr %a2 - %t460 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.2859, i64 52, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.2860, i64 10, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a472, i64 %t471) - %t473 = load { ptr, i64, i64 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a475 - store { ptr, i64, i64 } %t473, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t470, ptr %a477 - call void @finch_str_drop(ptr %a477) - store { ptr, i64, i64 } %t473, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a474 - store { ptr, i64, i64 } %t479, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.2861, i64 37, i64 0 }, ptr %a482 - call void @finch_str_concat(ptr %a480, ptr %a481, ptr %a482) - store { ptr, i64, i64 } %t479, ptr %a483 - call void @finch_str_drop(ptr %a483) - %t484 = load { ptr, i64, i64 }, ptr %a480 - %t485 = load i64, ptr %a446 - call void @finch_str_from_int(ptr %a486, i64 %t485) - %t487 = load { ptr, i64, i64 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t484, ptr %a491 - call void @finch_str_drop(ptr %a491) - store { ptr, i64, i64 } %t487, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t493, ptr %a495 - store { ptr, i64, i64 } { ptr @.str.2862, i64 3, i64 0 }, ptr %a496 - call void @finch_str_concat(ptr %a494, ptr %a495, ptr %a496) - store { ptr, i64, i64 } %t493, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a494 - %t499 = load i64, ptr %a452 - call void @finch_str_from_int(ptr %a500, i64 %t499) - %t501 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t498, ptr %a503 - store { ptr, i64, i64 } %t501, ptr %a504 - call void @finch_str_concat(ptr %a502, ptr %a503, ptr %a504) - store { ptr, i64, i64 } %t498, ptr %a505 - call void @finch_str_drop(ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.2863, i64 3, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - %t513 = load i64, ptr %a458 - call void @finch_str_from_int(ptr %a514, i64 %t513) - %t515 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a517 - store { ptr, i64, i64 } %t515, ptr %a518 - call void @finch_str_concat(ptr %a516, ptr %a517, ptr %a518) - store { ptr, i64, i64 } %t512, ptr %a519 - call void @finch_str_drop(ptr %a519) - store { ptr, i64, i64 } %t515, ptr %a520 - call void @finch_str_drop(ptr %a520) - %t521 = load { ptr, i64, i64 }, ptr %a516 - store { ptr, i64, i64 } %t521, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.2864, i64 2, i64 0 }, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t521, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - %t527 = load ptr, ptr %a1 - %t528 = icmp eq ptr %t527, null - br i1 %t528, label %panic4663, label %ok4664 -panic4663: - call void @finch_panic(ptr @.str.2865, i64 2085, ptr @.str.2866) - unreachable -ok4664: - %t529 = getelementptr inbounds %S.gen.Gen, ptr %t527, i32 0, i32 33 - %t530 = load i64, ptr %a49 - %t531 = load { ptr, i64, i64 }, ptr %t529 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 %t530, %t532 - br i1 %t533, label %range4665, label %inrange4666 -range4665: - call void @finch_panic_index(ptr @.str.2867, i64 2085, i64 %t530, i64 %t532) - unreachable -inrange4666: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds { ptr, i64, i64 }, ptr %t534, i64 %t530 - %t536 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t526, ptr %t535 - store { ptr, i64, i64 } %t536, ptr %a537 - call void @finch_str_drop(ptr %a537) - call void @finch.drop.S_ast_Type(ptr %a400) - br label %endif4657 -else4656: - %t538 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.2868, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br i1 %t542, label %then4667, label %else4668 -then4667: - %t543 = load ptr, ptr %a1 - %t544 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.2869, i64 3, i64 0 }) - %t545 = call i64 @finch.gen.diType(ptr %t543, %S.ast.Type %t544) - store %S.ast.Type %t544, ptr %a546 - call void @finch.drop.S_ast_Type(ptr %a546) - store i64 %t545, ptr %a547 - %t548 = load ptr, ptr %a1 - %t549 = call i64 @finch.gen.md(ptr %t548, { ptr, i64, i64 } { ptr @.str.2870, i64 66, i64 0 }) - store i64 %t549, ptr %a550 - %t551 = mul i64 7, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t552 = call ptr @finch_alloc(i64 %t551) - %t553 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 0 - store { ptr, i64, i64 } { ptr @.str.2871, i64 7, i64 0 }, ptr %t553 - %t554 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 1 - store { ptr, i64, i64 } { ptr @.str.2872, i64 3, i64 0 }, ptr %t554 - %t555 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 2 - store { ptr, i64, i64 } { ptr @.str.2873, i64 4, i64 0 }, ptr %t555 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 3 - store { ptr, i64, i64 } { ptr @.str.2874, i64 3, i64 0 }, ptr %t556 - %t557 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 4 - store { ptr, i64, i64 } { ptr @.str.2875, i64 5, i64 0 }, ptr %t557 - %t558 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 5 - store { ptr, i64, i64 } { ptr @.str.2876, i64 4, i64 0 }, ptr %t558 - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t552, i64 6 - store { ptr, i64, i64 } { ptr @.str.2877, i64 4, i64 0 }, ptr %t559 - %t560 = insertvalue { ptr, i64, i64 } undef, ptr %t552, 0 - %t561 = insertvalue { ptr, i64, i64 } %t560, i64 7, 1 - %t562 = insertvalue { ptr, i64, i64 } %t561, i64 7, 2 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } zeroinitializer, ptr %a564 - store i64 0, ptr %a565 - br label %for.cond4670 -for.cond4670: - %t566 = load i64, ptr %a565 - %t567 = icmp slt i64 %t566, 7 - br i1 %t567, label %for.body4671, label %for.end4673 -for.body4671: - %t568 = load i64, ptr %a547 - store i64 %t568, ptr %a569 - %t570 = load i64, ptr %a565 - %t571 = icmp eq i64 %t570, 0 - br label %logic.from4674 -logic.from4674: - br i1 %t571, label %logic.end4676, label %logic.rhs4675 -logic.rhs4675: - %t572 = load i64, ptr %a565 - %t573 = icmp eq i64 %t572, 4 - br label %logic.rend4677 -logic.rend4677: - br label %logic.end4676 -logic.end4676: - %t574 = phi i1 [ true, %logic.from4674 ], [ %t573, %logic.rend4677 ] - br i1 %t574, label %then4678, label %endif4680 -then4678: - %t575 = load i64, ptr %a550 - store i64 %t575, ptr %a569 - br label %endif4680 -endif4680: - %t576 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - %t577 = load ptr, ptr %a1 - %t578 = load i64, ptr %a565 - %t579 = load { ptr, i64, i64 }, ptr %a563 - %t580 = extractvalue { ptr, i64, i64 } %t579, 1 - %t581 = icmp uge i64 %t578, %t580 - br i1 %t581, label %range4681, label %inrange4682 -range4681: - call void @finch_panic_index(ptr @.str.2879, i64 2096, i64 %t578, i64 %t580) - unreachable -inrange4682: - %t582 = extractvalue { ptr, i64, i64 } %t579, 0 - %t583 = getelementptr inbounds { ptr, i64, i64 }, ptr %t582, i64 %t578 - %t584 = load { ptr, i64, i64 }, ptr %t583 - %t585 = load i64, ptr %a49 - %t586 = load i64, ptr %a59 - %t587 = load i64, ptr %a569 - %t588 = load i64, ptr %a565 - %t589 = mul i64 64, %t588 - %t590 = call i64 @finch.gen.dbgMember(ptr %t577, { ptr, i64, i64 } %t584, i64 %t585, i64 %t586, i64 0, i64 %t587, i64 64, i64 %t589) - call void @finch_str_from_int(ptr %a591, i64 %t590) - %t592 = load { ptr, i64, i64 }, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.2878, i64 1, i64 0 }, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t592, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a593 - %t598 = load i64, ptr %t576 - %t599 = add i64 %t598, 1 - call void @finch_arr_reserve(ptr %a564, i64 %t599, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t600 = load ptr, ptr %a564 - %t601 = getelementptr inbounds { ptr, i64, i64 }, ptr %t600, i64 %t598 - store { ptr, i64, i64 } %t597, ptr %t601 - store i64 %t599, ptr %t576 - br label %for.step4672 -for.step4672: - %t602 = load i64, ptr %a565 - %t603 = add i64 %t602, 1 - store i64 %t603, ptr %a565 - br label %for.cond4670 -for.end4673: - %t604 = load %S.ast.Type, ptr %a2 - %t605 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.2880, i64 52, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.2881, i64 10, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a617, i64 %t616) - %t618 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t615, ptr %a620 - store { ptr, i64, i64 } %t618, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t615, ptr %a622 - call void @finch_str_drop(ptr %a622) - store { ptr, i64, i64 } %t618, ptr %a623 - call void @finch_str_drop(ptr %a623) - %t624 = load { ptr, i64, i64 }, ptr %a619 - store { ptr, i64, i64 } %t624, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.2882, i64 36, i64 0 }, ptr %a627 - call void @finch_str_concat(ptr %a625, ptr %a626, ptr %a627) - store { ptr, i64, i64 } %t624, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a625 - %t630 = getelementptr inbounds { ptr, i64, i64 }, ptr %a564, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2883, i64 2, i64 0 }, ptr %a631 - call void @finch_str_join(ptr %a632, ptr %a564, ptr %a631) - %t633 = load { ptr, i64, i64 }, ptr %a632 - store { ptr, i64, i64 } %t629, ptr %a635 - store { ptr, i64, i64 } %t633, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t629, ptr %a637 - call void @finch_str_drop(ptr %a637) - store { ptr, i64, i64 } %t633, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a634 - store { ptr, i64, i64 } %t639, ptr %a641 - store { ptr, i64, i64 } { ptr @.str.2884, i64 2, i64 0 }, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t639, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - %t645 = load ptr, ptr %a1 - %t646 = icmp eq ptr %t645, null - br i1 %t646, label %panic4683, label %ok4684 -panic4683: - call void @finch_panic(ptr @.str.2885, i64 2098, ptr @.str.2886) - unreachable -ok4684: - %t647 = getelementptr inbounds %S.gen.Gen, ptr %t645, i32 0, i32 33 - %t648 = load i64, ptr %a49 - %t649 = load { ptr, i64, i64 }, ptr %t647 - %t650 = extractvalue { ptr, i64, i64 } %t649, 1 - %t651 = icmp uge i64 %t648, %t650 - br i1 %t651, label %range4685, label %inrange4686 -range4685: - call void @finch_panic_index(ptr @.str.2887, i64 2098, i64 %t648, i64 %t650) - unreachable -inrange4686: - %t652 = extractvalue { ptr, i64, i64 } %t649, 0 - %t653 = getelementptr inbounds { ptr, i64, i64 }, ptr %t652, i64 %t648 - %t654 = load { ptr, i64, i64 }, ptr %t653 - store { ptr, i64, i64 } %t644, ptr %t653 - store { ptr, i64, i64 } %t654, ptr %a655 - call void @finch_str_drop(ptr %a655) - call void @finch.drop.arr_str(ptr %a564) - call void @finch.drop.arr_str(ptr %a563) - br label %endif4669 -else4668: - %t656 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t656, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.2888, i64 6, i64 0 }, ptr %a658 - %t659 = call i32 @finch_str_eq(ptr %a657, ptr %a658) - %t660 = icmp ne i32 %t659, 0 - br i1 %t660, label %then4687, label %else4688 -then4687: - %t661 = load ptr, ptr %a1 - %t662 = icmp eq ptr %t661, null - br i1 %t662, label %panic4690, label %ok4691 -panic4690: - call void @finch_panic(ptr @.str.2889, i64 2100, ptr @.str.2890) - unreachable -ok4691: - %t663 = getelementptr inbounds %S.gen.Gen, ptr %t661, i32 0, i32 16 - %t664 = load ptr, ptr %a1 - %t665 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t666 = load { ptr, i64, i64 }, ptr %t665 - %t667 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t668 = load { ptr, i64, i64 }, ptr %t667 - %t669 = call i64 @finch.gen.findStruct(ptr %t664, { ptr, i64, i64 } %t666, { ptr, i64, i64 } %t668) - %t670 = load { ptr, i64, i64 }, ptr %t663 - %t671 = extractvalue { ptr, i64, i64 } %t670, 1 - %t672 = icmp uge i64 %t669, %t671 - br i1 %t672, label %range4692, label %inrange4693 -range4692: - call void @finch_panic_index(ptr @.str.2891, i64 2100, i64 %t669, i64 %t671) - unreachable -inrange4693: - %t673 = extractvalue { ptr, i64, i64 } %t670, 0 - %t674 = getelementptr inbounds %S.gen.StructDef, ptr %t673, i64 %t669 - %t675 = load %S.gen.StructDef, ptr %t674 - store %S.gen.StructDef %t675, ptr %a676 - call void @finch.copy.S_gen_StructDef(ptr %a677, ptr %a676) - %t678 = load %S.gen.StructDef, ptr %a677 - store %S.gen.StructDef %t678, ptr %a679 - %t680 = load ptr, ptr %a1 - %t681 = load %S.gen.StructDef, ptr %a679 - %t682 = call { ptr, i64, i64 } @finch.gen.fieldOffsets(ptr %t680, %S.gen.StructDef %t681) - store { ptr, i64, i64 } %t682, ptr %a683 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a2 - %t686 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t684, %S.ast.Type %t685) - store %S.gen.SizeAlign %t686, ptr %a687 - store { ptr, i64, i64 } zeroinitializer, ptr %a688 - %t689 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t690 = getelementptr inbounds { ptr, i64, i64 }, ptr %t689, i32 0, i32 1 - %t691 = load i64, ptr %t690 - store i64 0, ptr %a692 - br label %for.cond4694 -for.cond4694: - %t693 = load i64, ptr %a692 - %t694 = icmp slt i64 %t693, %t691 - br i1 %t694, label %for.body4695, label %for.end4697 -for.body4695: - %t695 = load ptr, ptr %a1 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t697 = load i64, ptr %a692 - %t698 = load { ptr, i64, i64 }, ptr %t696 - %t699 = extractvalue { ptr, i64, i64 } %t698, 1 - %t700 = icmp uge i64 %t697, %t699 - br i1 %t700, label %range4698, label %inrange4699 -range4698: - call void @finch_panic_index(ptr @.str.2892, i64 2105, i64 %t697, i64 %t699) - unreachable -inrange4699: - %t701 = extractvalue { ptr, i64, i64 } %t698, 0 - %t702 = getelementptr inbounds %S.ast.Type, ptr %t701, i64 %t697 - %t703 = load %S.ast.Type, ptr %t702 - %t704 = call %S.gen.SizeAlign @finch.gen.sizeAlign(ptr %t695, %S.ast.Type %t703) - store %S.gen.SizeAlign %t704, ptr %a705 - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - %t707 = load ptr, ptr %a1 - %t708 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 11 - %t709 = load i64, ptr %a692 - %t710 = load { ptr, i64, i64 }, ptr %t708 - %t711 = extractvalue { ptr, i64, i64 } %t710, 1 - %t712 = icmp uge i64 %t709, %t711 - br i1 %t712, label %range4700, label %inrange4701 -range4700: - call void @finch_panic_index(ptr @.str.2894, i64 2106, i64 %t709, i64 %t711) - unreachable -inrange4701: - %t713 = extractvalue { ptr, i64, i64 } %t710, 0 - %t714 = getelementptr inbounds { ptr, i64, i64 }, ptr %t713, i64 %t709 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = load i64, ptr %a49 - %t717 = load i64, ptr %a59 - %t718 = load ptr, ptr %a1 - %t719 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 12 - %t720 = load i64, ptr %a692 - %t721 = load { ptr, i64, i64 }, ptr %t719 - %t722 = extractvalue { ptr, i64, i64 } %t721, 1 - %t723 = icmp uge i64 %t720, %t722 - br i1 %t723, label %range4702, label %inrange4703 -range4702: - call void @finch_panic_index(ptr @.str.2895, i64 2106, i64 %t720, i64 %t722) - unreachable -inrange4703: - %t724 = extractvalue { ptr, i64, i64 } %t721, 0 - %t725 = getelementptr inbounds %S.ast.Type, ptr %t724, i64 %t720 - %t726 = load %S.ast.Type, ptr %t725 - %t727 = call i64 @finch.gen.diType(ptr %t718, %S.ast.Type %t726) - %t728 = getelementptr inbounds %S.gen.SizeAlign, ptr %a705, i32 0, i32 0 - %t729 = load i64, ptr %t728 - %t730 = mul i64 %t729, 8 - %t731 = load i64, ptr %a692 - %t732 = load { ptr, i64, i64 }, ptr %a683 - %t733 = extractvalue { ptr, i64, i64 } %t732, 1 - %t734 = icmp uge i64 %t731, %t733 - br i1 %t734, label %range4704, label %inrange4705 -range4704: - call void @finch_panic_index(ptr @.str.2896, i64 2106, i64 %t731, i64 %t733) - unreachable -inrange4705: - %t735 = extractvalue { ptr, i64, i64 } %t732, 0 - %t736 = getelementptr inbounds i64, ptr %t735, i64 %t731 - %t737 = load i64, ptr %t736 - %t738 = mul i64 %t737, 8 - %t739 = call i64 @finch.gen.dbgMember(ptr %t707, { ptr, i64, i64 } %t715, i64 %t716, i64 %t717, i64 0, i64 %t727, i64 %t730, i64 %t738) - call void @finch_str_from_int(ptr %a740, i64 %t739) - %t741 = load { ptr, i64, i64 }, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.2893, i64 1, i64 0 }, ptr %a743 - store { ptr, i64, i64 } %t741, ptr %a744 - call void @finch_str_concat(ptr %a742, ptr %a743, ptr %a744) - store { ptr, i64, i64 } %t741, ptr %a745 - call void @finch_str_drop(ptr %a745) - %t746 = load { ptr, i64, i64 }, ptr %a742 - %t747 = load i64, ptr %t706 - %t748 = add i64 %t747, 1 - call void @finch_arr_reserve(ptr %a688, i64 %t748, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t749 = load ptr, ptr %a688 - %t750 = getelementptr inbounds { ptr, i64, i64 }, ptr %t749, i64 %t747 - store { ptr, i64, i64 } %t746, ptr %t750 - store i64 %t748, ptr %t706 - br label %for.step4696 -for.step4696: - %t751 = load i64, ptr %a692 - %t752 = add i64 %t751, 1 - store i64 %t752, ptr %a692 - br label %for.cond4694 -for.end4697: - %t753 = getelementptr inbounds %S.gen.StructDef, ptr %a679, i32 0, i32 1 - %t754 = load { ptr, i64, i64 }, ptr %t753 - store { ptr, i64, i64 } { ptr @.str.2897, i64 52, i64 0 }, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a755 - store { ptr, i64, i64 } %t758, ptr %a760 - store { ptr, i64, i64 } { ptr @.str.2898, i64 10, i64 0 }, ptr %a761 - call void @finch_str_concat(ptr %a759, ptr %a760, ptr %a761) - store { ptr, i64, i64 } %t758, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a759 - %t764 = load i64, ptr %a59 - call void @finch_str_from_int(ptr %a765, i64 %t764) - %t766 = load { ptr, i64, i64 }, ptr %a765 - store { ptr, i64, i64 } %t763, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t763, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.2899, i64 8, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.gen.SizeAlign, ptr %a687, i32 0, i32 0 - %t779 = load i64, ptr %t778 - %t780 = mul i64 %t779, 8 - call void @finch_str_from_int(ptr %a781, i64 %t780) - %t782 = load { ptr, i64, i64 }, ptr %a781 - store { ptr, i64, i64 } %t777, ptr %a784 - store { ptr, i64, i64 } %t782, ptr %a785 - call void @finch_str_concat(ptr %a783, ptr %a784, ptr %a785) - store { ptr, i64, i64 } %t777, ptr %a786 - call void @finch_str_drop(ptr %a786) - store { ptr, i64, i64 } %t782, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load { ptr, i64, i64 }, ptr %a783 - store { ptr, i64, i64 } %t788, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.2900, i64 24, i64 0 }, ptr %a791 - call void @finch_str_concat(ptr %a789, ptr %a790, ptr %a791) - store { ptr, i64, i64 } %t788, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a789 - %t794 = getelementptr inbounds { ptr, i64, i64 }, ptr %a688, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2901, i64 2, i64 0 }, ptr %a795 - call void @finch_str_join(ptr %a796, ptr %a688, ptr %a795) - %t797 = load { ptr, i64, i64 }, ptr %a796 - store { ptr, i64, i64 } %t793, ptr %a799 - store { ptr, i64, i64 } %t797, ptr %a800 - call void @finch_str_concat(ptr %a798, ptr %a799, ptr %a800) - store { ptr, i64, i64 } %t793, ptr %a801 - call void @finch_str_drop(ptr %a801) - store { ptr, i64, i64 } %t797, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t803, ptr %a805 - store { ptr, i64, i64 } { ptr @.str.2902, i64 2, i64 0 }, ptr %a806 - call void @finch_str_concat(ptr %a804, ptr %a805, ptr %a806) - store { ptr, i64, i64 } %t803, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a804 - %t809 = load ptr, ptr %a1 - %t810 = icmp eq ptr %t809, null - br i1 %t810, label %panic4706, label %ok4707 -panic4706: - call void @finch_panic(ptr @.str.2903, i64 2108, ptr @.str.2904) - unreachable -ok4707: - %t811 = getelementptr inbounds %S.gen.Gen, ptr %t809, i32 0, i32 33 - %t812 = load i64, ptr %a49 - %t813 = load { ptr, i64, i64 }, ptr %t811 - %t814 = extractvalue { ptr, i64, i64 } %t813, 1 - %t815 = icmp uge i64 %t812, %t814 - br i1 %t815, label %range4708, label %inrange4709 -range4708: - call void @finch_panic_index(ptr @.str.2905, i64 2108, i64 %t812, i64 %t814) - unreachable -inrange4709: - %t816 = extractvalue { ptr, i64, i64 } %t813, 0 - %t817 = getelementptr inbounds { ptr, i64, i64 }, ptr %t816, i64 %t812 - %t818 = load { ptr, i64, i64 }, ptr %t817 - store { ptr, i64, i64 } %t808, ptr %t817 - store { ptr, i64, i64 } %t818, ptr %a819 - call void @finch_str_drop(ptr %a819) - call void @finch.drop.arr_str(ptr %a688) - call void @finch.drop.arr_int(ptr %a683) - call void @finch.drop.S_gen_StructDef(ptr %a679) - br label %endif4689 -else4688: - %t820 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.2906, i64 20, i64 0 }, ptr %a822 - store { ptr, i64, i64 } %t820, ptr %a823 - call void @finch_str_concat(ptr %a821, ptr %a822, ptr %a823) - %t824 = load { ptr, i64, i64 }, ptr %a821 - store { ptr, i64, i64 } %t824, ptr %a826 - store { ptr, i64, i64 } { ptr @.str.2907, i64 39, i64 0 }, ptr %a827 - call void @finch_str_concat(ptr %a825, ptr %a826, ptr %a827) - store { ptr, i64, i64 } %t824, ptr %a828 - call void @finch_str_drop(ptr %a828) - %t829 = load { ptr, i64, i64 }, ptr %a825 - %t830 = load ptr, ptr %a1 - %t831 = icmp eq ptr %t830, null - br i1 %t831, label %panic4710, label %ok4711 -panic4710: - call void @finch_panic(ptr @.str.2908, i64 2110, ptr @.str.2909) - unreachable -ok4711: - %t832 = getelementptr inbounds %S.gen.Gen, ptr %t830, i32 0, i32 33 - %t833 = load i64, ptr %a49 - %t834 = load { ptr, i64, i64 }, ptr %t832 - %t835 = extractvalue { ptr, i64, i64 } %t834, 1 - %t836 = icmp uge i64 %t833, %t835 - br i1 %t836, label %range4712, label %inrange4713 -range4712: - call void @finch_panic_index(ptr @.str.2910, i64 2110, i64 %t833, i64 %t835) - unreachable -inrange4713: - %t837 = extractvalue { ptr, i64, i64 } %t834, 0 - %t838 = getelementptr inbounds { ptr, i64, i64 }, ptr %t837, i64 %t833 - %t839 = load { ptr, i64, i64 }, ptr %t838 - store { ptr, i64, i64 } %t829, ptr %t838 - store { ptr, i64, i64 } %t839, ptr %a840 - call void @finch_str_drop(ptr %a840) - br label %endif4689 -endif4689: - br label %endif4669 -endif4669: - br label %endif4657 -endif4657: - br label %endif4642 -endif4642: - br label %endif4630 -endif4630: - %t841 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t841 -endif4611: - br label %endif4605 -endif4605: - br label %endif4602 -endif4602: - br label %endif4599 -endif4599: - br label %endif4596 -endif4596: - br label %endif4593 -endif4593: - br label %endif4590 -endif4590: - %t842 = load i64, ptr %a49 - %t843 = load ptr, ptr %a1 - %t844 = icmp eq ptr %t843, null - br i1 %t844, label %panic4714, label %ok4715 -panic4714: - call void @finch_panic(ptr @.str.2911, i64 2114, ptr @.str.2912) - unreachable -ok4715: - %t845 = getelementptr inbounds %S.gen.Gen, ptr %t843, i32 0, i32 34 - %t846 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t846, ptr %a847 - store i32 0, ptr %a848 - %t849 = call i64 @finch_map_slot(ptr %t845, ptr %a847, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a848) - %t850 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t845, i32 0, i32 0 - %t851 = load ptr, ptr %t850 - %t852 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t851, i64 %t849 - %t853 = load i32, ptr %a848 - %t854 = icmp ne i32 %t853, 0 - br i1 %t854, label %map.new4716, label %map.have4717 -map.new4716: - %t855 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 1 - call void @finch_str_copy(ptr %t855, ptr %a847) - %t856 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 0, ptr %t856 - br label %map.have4717 -map.have4717: - %t857 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t852, i32 0, i32 2 - store i64 %t842, ptr %t857 - %t858 = load i64, ptr %a49 - call void @finch_str_drop(ptr %a27) - call void @finch_str_drop(ptr %a8) - ret i64 %t858 -} - -define internal i64 @finch.gen.dbgLocation(ptr %p0) { -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 - %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 - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca i32, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic4718, label %ok4719 -panic4718: - call void @finch_panic(ptr @.str.2914, i64 2119, ptr @.str.2915) - unreachable -ok4719: - %t4 = getelementptr inbounds %S.gen.Gen, ptr %t2, i32 0, i32 37 - %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.2913, i64 2, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.2916, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic4720, label %ok4721 -panic4720: - call void @finch_panic(ptr @.str.2917, i64 2119, ptr @.str.2918) - unreachable -ok4721: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 38 - %t21 = load i64, ptr %t20 - call void @finch_str_from_int(ptr %a22, i64 %t21) - %t23 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t17, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t17, ptr %a27 - call void @finch_str_drop(ptr %a27) - store { ptr, i64, i64 } %t23, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.2919, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic4722, label %ok4723 -panic4722: - call void @finch_panic(ptr @.str.2920, i64 2119, ptr @.str.2921) - unreachable -ok4723: - %t37 = getelementptr inbounds %S.gen.Gen, ptr %t35, i32 0, i32 36 - %t38 = load i64, ptr %t37 - call void @finch_str_from_int(ptr %a39, i64 %t38) - %t40 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t34, ptr %a42 - store { ptr, i64, i64 } %t40, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t34, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t40, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a47 - %t48 = load ptr, ptr %a1 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic4724, label %ok4725 -panic4724: - call void @finch_panic(ptr @.str.2922, i64 2120, ptr @.str.2923) - unreachable -ok4725: - %t50 = getelementptr inbounds %S.gen.Gen, ptr %t48, i32 0, i32 34 - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = call i64 @finch_map_find(ptr %t50, ptr %a52, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t54 = icmp sge i64 %t53, 0 - br i1 %t54, label %then4726, label %endif4728 -then4726: - %t55 = load ptr, ptr %a1 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic4729, label %ok4730 -panic4729: - call void @finch_panic(ptr @.str.2924, i64 2121, ptr @.str.2925) - unreachable -ok4730: - %t57 = getelementptr inbounds %S.gen.Gen, ptr %t55, i32 0, i32 34 - %t58 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t58, ptr %a59 - %t60 = call i64 @finch_map_find(ptr %t57, ptr %a59, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t61 = icmp slt i64 %t60, 0 - br i1 %t61, label %map.missing4731, label %map.found4732 -map.missing4731: - store { ptr, i64, i64 } zeroinitializer, ptr %a62 - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_buf_str(ptr %a62, ptr %a63, i32 1) - call void @finch_map_missing(ptr @.str.2926, i64 2121, ptr %a62) - unreachable -map.found4732: - %t64 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t57, i32 0, i32 0 - %t65 = load ptr, ptr %t64 - %t66 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t65, i64 %t60 - %t67 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t66, i32 0, i32 2 - %t68 = load i64, ptr %t67 - call void @finch_str_drop(ptr %a47) - ret i64 %t68 -endif4728: - %t69 = load ptr, ptr %a1 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4733, label %ok4734 -panic4733: - call void @finch_panic(ptr @.str.2928, i64 2123, ptr @.str.2929) - unreachable -ok4734: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 37 - %t73 = load i64, ptr %t72 - call void @finch_str_from_int(ptr %a74, i64 %t73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.2927, i64 18, i64 0 }, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.2930, i64 10, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4735, label %ok4736 -panic4735: - call void @finch_panic(ptr @.str.2931, i64 2123, ptr @.str.2932) - unreachable -ok4736: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 38 - %t89 = load i64, ptr %t88 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t85, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t85, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.2933, i64 10, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load ptr, ptr %a1 - %t104 = icmp eq ptr %t103, null - br i1 %t104, label %panic4737, label %ok4738 -panic4737: - call void @finch_panic(ptr @.str.2934, i64 2123, ptr @.str.2935) - unreachable -ok4738: - %t105 = getelementptr inbounds %S.gen.Gen, ptr %t103, i32 0, i32 36 - %t106 = load i64, ptr %t105 - call void @finch_str_from_int(ptr %a107, i64 %t106) - %t108 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t102, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t102, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.2936, i64 1, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = call i64 @finch.gen.md(ptr %t69, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store i64 %t120, ptr %a122 - %t123 = load i64, ptr %a122 - %t124 = load ptr, ptr %a1 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic4739, label %ok4740 -panic4739: - call void @finch_panic(ptr @.str.2937, i64 2124, ptr @.str.2938) - unreachable -ok4740: - %t126 = getelementptr inbounds %S.gen.Gen, ptr %t124, i32 0, i32 34 - %t127 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t127, ptr %a128 - store i32 0, ptr %a129 - %t130 = call i64 @finch_map_slot(ptr %t126, ptr %a128, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i64 }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a129) - %t131 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t126, i32 0, i32 0 - %t132 = load ptr, ptr %t131 - %t133 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t132, i64 %t130 - %t134 = load i32, ptr %a129 - %t135 = icmp ne i32 %t134, 0 - br i1 %t135, label %map.new4741, label %map.have4742 -map.new4741: - %t136 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 1 - call void @finch_str_copy(ptr %t136, ptr %a128) - %t137 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 0, ptr %t137 - br label %map.have4742 -map.have4742: - %t138 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t133, i32 0, i32 2 - store i64 %t123, ptr %t138 - %t139 = load i64, ptr %a122 - call void @finch_str_drop(ptr %a47) - ret i64 %t139 -} - -define internal i64 @finch.gen.dbgSubprogram(ptr %p0, %S.ast.Node %p1) { -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 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %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 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %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 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4743, label %ok4744 -panic4743: - call void @finch_panic(ptr @.str.2939, i64 2129, ptr @.str.2940) - unreachable -ok4744: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = load %S.gen.FnSig, ptr %t5 - store %S.gen.FnSig %t6, ptr %a7 - call void @finch.copy.S_gen_FnSig(ptr %a8, ptr %a7) - %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 %then4745, label %endif4747 -then4745: - %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.2941, i64 4, i64 0 }, ptr %t30 - store i64 %t28, ptr %t26 - br label %endif4747 -endif4747: - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 13 - store i64 0, ptr %a32 - br label %each.cond4748 -each.cond4748: - %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.body4749, label %each.end4751 -each.body4749: - %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.step4750 -each.step4750: - %t50 = load i64, ptr %a32 - %t51 = add i64 %t50, 1 - store i64 %t51, ptr %a32 - br label %each.cond4748 -each.end4751: - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4752, label %ok4753 -panic4752: - call void @finch_panic(ptr @.str.2942, i64 2138, ptr @.str.2943) - unreachable -ok4753: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 35 - %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 %range4754, label %inrange4755 -range4754: - call void @finch_panic_index(ptr @.str.2944, i64 2138, i64 %t56, i64 %t58) - unreachable -inrange4755: - %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.2946, 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.2945, i64 27, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.2947, i64 2, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = call i64 @finch.gen.md(ptr %t64, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 1 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } { ptr @.str.2948, i64 30, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2949, i64 17, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t95 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t95, ptr %a96 - %t98 = getelementptr inbounds %S.gen.FnSig, ptr %a10, i32 0, i32 11 - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t98, i32 0, i32 1 - %t100 = load i64, ptr %t99 - call void @finch_str_sub(ptr %a97, ptr %a96, i64 1, i64 %t100, ptr @.str.2950, i64 2140) - %t101 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t93, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t93, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t101, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.2951, i64 11, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a114, i64 %t113) - %t115 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t112, ptr %a119 - call void @finch_str_drop(ptr %a119) - store { ptr, i64, i64 } %t115, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.2952, i64 9, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load i64, ptr %a63 - call void @finch_str_from_int(ptr %a128, i64 %t127) - %t129 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t126, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t126, ptr %a133 - call void @finch_str_drop(ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.2953, i64 8, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t142 = load i64, ptr %t141 - call void @finch_str_from_int(ptr %a143, i64 %t142) - %t144 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t140, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t140, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.2954, i64 9, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load i64, ptr %a81 - call void @finch_str_from_int(ptr %a157, i64 %t156) - %t158 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t155, ptr %a162 - call void @finch_str_drop(ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.2955, i64 13, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t171 = load i64, ptr %t170 - call void @finch_str_from_int(ptr %a172, i64 %t171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t169, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t169, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.2956, i64 87, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = call i64 @finch.gen.md(ptr %t82, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t184, ptr %a186 - call void @finch_str_drop(ptr %a186) - call void @finch.drop.arr_str(ptr %a11) - call void @finch.drop.S_gen_FnSig(ptr %a10) - ret i64 %t185 -} - -define internal void @finch.gen.dbgVariable(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a38 = 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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca i64, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic4756, label %ok4757 -panic4756: - call void @finch_panic(ptr @.str.2957, i64 2144, ptr @.str.2958) - unreachable -ok4757: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 30 - %t9 = load i1, ptr %t8 - %t10 = xor i1 %t9, true - br label %logic.from4758 -logic.from4758: - br i1 %t10, label %logic.end4760, label %logic.rhs4759 -logic.rhs4759: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic4761, label %ok4762 -panic4761: - call void @finch_panic(ptr @.str.2959, i64 2144, ptr @.str.2960) - unreachable -ok4762: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 36 - %t14 = load i64, ptr %t13 - %t15 = icmp slt i64 %t14, 0 - br label %logic.rend4763 -logic.rend4763: - br label %logic.end4760 -logic.end4760: - %t16 = phi i1 [ true, %logic.from4758 ], [ %t15, %logic.rend4763 ] - br i1 %t16, label %then4764, label %endif4766 -then4764: - ret void -endif4766: - %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 %then4767, label %endif4769 -then4767: - ret void -endif4769: - store { ptr, i64, i64 } { ptr @.str.2961, i64 0, i64 0 }, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic4770, label %ok4771 -panic4770: - call void @finch_panic(ptr @.str.2962, i64 2152, ptr @.str.2963) - unreachable -ok4771: - %t26 = getelementptr inbounds %S.gen.Gen, ptr %t24, i32 0, i32 39 - %t27 = load i64, ptr %t26 - %t28 = icmp sgt i64 %t27, 0 - br i1 %t28, label %then4772, label %endif4774 -then4772: - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic4775, label %ok4776 -panic4775: - call void @finch_panic(ptr @.str.2965, i64 2153, ptr @.str.2966) - unreachable -ok4776: - %t31 = getelementptr inbounds %S.gen.Gen, ptr %t29, i32 0, i32 39 - %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.2964, i64 7, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - %t40 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t39, ptr %a23 - store { ptr, i64, i64 } %t40, ptr %a41 - call void @finch_str_drop(ptr %a41) - br label %endif4774 -endif4774: - %t42 = load ptr, ptr %a1 - %t43 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.2967, i64 24, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.2968, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic4777, label %ok4778 -panic4777: - call void @finch_panic(ptr @.str.2969, i64 2155, ptr @.str.2970) - unreachable -ok4778: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 36 - %t56 = load i64, ptr %t55 - call void @finch_str_from_int(ptr %a57, i64 %t56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t52, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t52, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.2971, i64 9, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic4779, label %ok4780 -panic4779: - call void @finch_panic(ptr @.str.2972, i64 2155, ptr @.str.2973) - unreachable -ok4780: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 35 - %t73 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t74 = load i64, ptr %t73 - %t75 = load { ptr, i64, i64 }, ptr %t72 - %t76 = extractvalue { ptr, i64, i64 } %t75, 1 - %t77 = icmp uge i64 %t74, %t76 - br i1 %t77, label %range4781, label %inrange4782 -range4781: - call void @finch_panic_index(ptr @.str.2974, i64 2155, i64 %t74, i64 %t76) - unreachable -inrange4782: - %t78 = extractvalue { ptr, i64, i64 } %t75, 0 - %t79 = getelementptr inbounds i64, ptr %t78, i64 %t74 - %t80 = load i64, ptr %t79 - call void @finch_str_from_int(ptr %a81, i64 %t80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t69, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t69, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.2975, i64 8, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t95 = load i64, ptr %t94 - call void @finch_str_from_int(ptr %a96, i64 %t95) - %t97 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t93, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t93, ptr %a101 - call void @finch_str_drop(ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.2976, i64 9, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load i64, ptr %a20 - call void @finch_str_from_int(ptr %a110, i64 %t109) - %t111 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t108, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t108, ptr %a115 - call void @finch_str_drop(ptr %a115) - store { ptr, i64, i64 } %t111, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t117, ptr %a120 - store { ptr, i64, i64 } %t118, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.2977, i64 1, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = call i64 @finch.gen.md(ptr %t42, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t128, ptr %a130 - call void @finch_str_drop(ptr %a130) - store i64 %t129, ptr %a131 - %t132 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t133 = load i64, ptr %t132 - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic4783, label %ok4784 -panic4783: - call void @finch_panic(ptr @.str.2978, i64 2156, ptr @.str.2979) - unreachable -ok4784: - %t136 = getelementptr inbounds %S.gen.Gen, ptr %t134, i32 0, i32 37 - store i64 %t133, ptr %t136 - %t137 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t138 = load i64, ptr %t137 - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4785, label %ok4786 -panic4785: - call void @finch_panic(ptr @.str.2980, i64 2157, ptr @.str.2981) - unreachable -ok4786: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 38 - store i64 %t138, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.2982, i64 41, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.2983, i64 12, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = load i64, ptr %a131 - call void @finch_str_from_int(ptr %a154, i64 %t153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t152, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.2984, i64 27, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - call void @finch.gen.emit(ptr %t142, { ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch_str_drop(ptr %a23) - ret void -} - -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %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 - %a60 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = mul i64 2, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.2985, i64 20, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.2986, 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 %panic4787, label %ok4788 -panic4787: - call void @finch_panic(ptr @.str.2987, i64 2164, ptr @.str.2988) - unreachable -ok4788: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 33 - %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.cond4789 -for.cond4789: - %t16 = load i64, ptr %a15 - %t17 = icmp slt i64 %t16, %t14 - br i1 %t17, label %for.body4790, label %for.end4792 -for.body4790: - %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.2989, i64 1, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.2990, i64 3, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic4793, label %ok4794 -panic4793: - call void @finch_panic(ptr @.str.2991, i64 2165, ptr @.str.2992) - unreachable -ok4794: - %t34 = getelementptr inbounds %S.gen.Gen, ptr %t32, i32 0, i32 33 - %t35 = load i64, ptr %a15 - %t36 = load { ptr, i64, i64 }, ptr %t34 - %t37 = extractvalue { ptr, i64, i64 } %t36, 1 - %t38 = icmp uge i64 %t35, %t37 - br i1 %t38, label %range4795, label %inrange4796 -range4795: - call void @finch_panic_index(ptr @.str.2993, i64 2165, i64 %t35, i64 %t37) - unreachable -inrange4796: - %t39 = extractvalue { ptr, i64, i64 } %t36, 0 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i64 %t35 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t31, ptr %a43 - store { ptr, i64, i64 } %t41, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t31, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load i64, ptr %t18 - %t48 = add i64 %t47, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t48, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t49 = load ptr, ptr %a9 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t49, i64 %t47 - store { ptr, i64, i64 } %t46, ptr %t50 - store i64 %t48, ptr %t18 - br label %for.step4791 -for.step4791: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %for.cond4789 -for.end4792: - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.2994, i64 1, i64 0 }, ptr %a54 - call void @finch_str_join(ptr %a55, ptr %a9, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t56, ptr %a58 - store { ptr, i64, i64 } { ptr @.str.2995, i64 1, i64 0 }, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t56, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t61 -} - -define internal void @finch.copy.arr_S_gen_Var(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond4868 -n.cond4868: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4869, label %n.end4870 -n.body4869: - %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.cond4868 -n.end4870: - ret void -} - -define internal void @finch.copy.arr_S_gen_Cleanup(ptr %dst, ptr %src) { -entry: - - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - ret void -} - -define internal void @finch.copy.S_gen_Scope(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.gen.Scope, ptr %src - store %S.gen.Scope %t1, ptr %dst - %t2 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_gen_Var(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_ast_Node(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_int(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.gen.Scope, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.gen.Scope, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_gen_Cleanup(ptr %t8, ptr %t9) - ret void -} - -define internal void @finch.copy.arr_S_gen_Scope(ptr %dst, ptr %src) { -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.cond4865 -n.cond4865: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body4866, label %n.end4867 -n.body4866: - %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.cond4865 -n.end4867: - ret void -} - -define internal void @finch.drop.arr_S_gen_Scope(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond4871 -n.cond4871: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body4872, label %n.end4873 -n.body4872: - %t7 = getelementptr inbounds %S.gen.Scope, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Scope(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond4871 -n.end4873: - call void @finch_arr_free(ptr %a) - 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 - %a20 = alloca %S.gen.FnSig, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca %S.ast.Node, align 16 - %a117 = alloca %S.ast.Node, align 16 - %a119 = alloca %S.ast.Node, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a247 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a270 = alloca i64, align 16 - %a284 = alloca %S.ast.Type, align 16 - %a285 = alloca %S.ast.Type, align 16 - %a287 = alloca %S.ast.Type, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %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 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a450 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic4797, label %ok4798 -panic4797: - call void @finch_panic(ptr @.str.2996, i64 2171, ptr @.str.2997) - unreachable -ok4798: - %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 %range4799, label %inrange4800 -range4799: - call void @finch_panic_index(ptr @.str.2998, i64 2171, i64 %t6, i64 %t8) - unreachable -inrange4800: - %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 %panic4801, label %ok4802 -panic4801: - call void @finch_panic(ptr @.str.2999, i64 2171, ptr @.str.3000) - unreachable -ok4802: - %t15 = getelementptr inbounds %S.gen.Gen, ptr %t13, i32 0, i32 13 - store %S.gen.FnSig %t12, ptr %a16 - call void @finch.copy.S_gen_FnSig(ptr %a17, ptr %a16) - %t18 = load %S.gen.FnSig, ptr %a17 - %t19 = load %S.gen.FnSig, ptr %t15 - store %S.gen.FnSig %t18, ptr %t15 - store %S.gen.FnSig %t19, ptr %a20 - call void @finch.drop.S_gen_FnSig(ptr %a20) - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic4803, label %ok4804 -panic4803: - call void @finch_panic(ptr @.str.3001, i64 2172, ptr @.str.3002) - unreachable -ok4804: - %t23 = getelementptr inbounds %S.gen.Gen, ptr %t21, i32 0, i32 13 - %t24 = getelementptr inbounds %S.gen.FnSig, ptr %t23, i32 0, i32 0 - %t25 = load { ptr, i64, i64 }, ptr %t24 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic4805, label %ok4806 -panic4805: - call void @finch_panic(ptr @.str.3003, i64 2172, ptr @.str.3004) - unreachable -ok4806: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 14 - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_copy(ptr %a30, ptr %a29) - %t31 = load { ptr, i64, i64 }, ptr %a30 - %t32 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t31, ptr %t28 - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load ptr, ptr %a1 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic4807, label %ok4808 -panic4807: - call void @finch_panic(ptr @.str.3005, i64 2173, ptr @.str.3006) - unreachable -ok4808: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 13 - %t37 = getelementptr inbounds %S.gen.FnSig, ptr %t36, i32 0, i32 6 - %t38 = load { ptr, i64, i64 }, ptr %t37 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic4809, label %ok4810 -panic4809: - call void @finch_panic(ptr @.str.3007, i64 2173, ptr @.str.3008) - unreachable -ok4810: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 18 - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch.copy.arr_str(ptr %a43, ptr %a42) - %t44 = load { ptr, i64, i64 }, ptr %a43 - %t45 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } %t44, ptr %t41 - store { ptr, i64, i64 } %t45, ptr %a46 - call void @finch.drop.arr_str(ptr %a46) - %t47 = load ptr, ptr %a1 - %t48 = icmp eq ptr %t47, null - br i1 %t48, label %panic4811, label %ok4812 -panic4811: - call void @finch_panic(ptr @.str.3009, i64 2174, ptr @.str.3010) - unreachable -ok4812: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 13 - %t50 = getelementptr inbounds %S.gen.FnSig, ptr %t49, i32 0, i32 7 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic4813, label %ok4814 -panic4813: - call void @finch_panic(ptr @.str.3011, i64 2174, ptr @.str.3012) - unreachable -ok4814: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 19 - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch.copy.arr_S_ast_Type(ptr %a56, ptr %a55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - %t58 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t57, ptr %t54 - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch.drop.arr_S_ast_Type(ptr %a59) - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic4815, label %ok4816 -panic4815: - call void @finch_panic(ptr @.str.3014, i64 2175, ptr @.str.3015) - unreachable -ok4816: - %t62 = getelementptr inbounds %S.gen.Gen, ptr %t60, i32 0, i32 20 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } { ptr @.str.3013, i64 0, i64 0 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic4817, label %ok4818 -panic4817: - call void @finch_panic(ptr @.str.3016, i64 2176, ptr @.str.3017) - unreachable -ok4818: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 13 - %t68 = getelementptr inbounds %S.gen.FnSig, ptr %t67, i32 0, i32 7 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t68, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = icmp sgt i64 %t70, 0 - br i1 %t71, label %then4819, label %endif4821 -then4819: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic4822, label %ok4823 -panic4822: - call void @finch_panic(ptr @.str.3019, i64 2177, ptr @.str.3020) - unreachable -ok4823: - %t74 = getelementptr inbounds %S.gen.Gen, ptr %t72, i32 0, i32 13 - %t75 = getelementptr inbounds %S.gen.FnSig, ptr %t74, i32 0, i32 8 - %t76 = load { ptr, i64, i64 }, ptr %t75 - store { ptr, i64, i64 } { ptr @.str.3018, i64 17, i64 0 }, ptr %a78 - store { ptr, i64, i64 } %t76, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a77 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3021, i64 1, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic4824, label %ok4825 -panic4824: - call void @finch_panic(ptr @.str.3022, i64 2177, ptr @.str.3023) - unreachable -ok4825: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 20 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t85, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - br label %endif4821 -endif4821: - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic4826, label %ok4827 -panic4826: - call void @finch_panic(ptr @.str.3024, i64 2179, ptr @.str.3025) - unreachable -ok4827: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 0 - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic4828, label %ok4829 -panic4828: - call void @finch_panic(ptr @.str.3026, i64 2179, ptr @.str.3027) - unreachable -ok4829: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 13 - %t97 = getelementptr inbounds %S.gen.FnSig, ptr %t96, i32 0, i32 16 - %t98 = load i64, ptr %t97 - %t99 = load { ptr, i64, i64 }, ptr %t93 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range4830, label %inrange4831 -range4830: - call void @finch_panic_index(ptr @.str.3028, i64 2179, i64 %t98, i64 %t100) - unreachable -inrange4831: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Program, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds %S.ast.Program, ptr %t103, i32 0, i32 8 - %t105 = load ptr, ptr %a1 - %t106 = icmp eq ptr %t105, null - br i1 %t106, label %panic4832, label %ok4833 -panic4832: - call void @finch_panic(ptr @.str.3029, i64 2179, ptr @.str.3030) - unreachable -ok4833: - %t107 = getelementptr inbounds %S.gen.Gen, ptr %t105, i32 0, i32 13 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %t107, i32 0, i32 17 - %t109 = load i64, ptr %t108 - %t110 = load { ptr, i64, i64 }, ptr %t104 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range4834, label %inrange4835 -range4834: - call void @finch_panic_index(ptr @.str.3031, i64 2179, i64 %t109, i64 %t111) - unreachable -inrange4835: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds %S.ast.Node, ptr %t113, i64 %t109 - %t115 = load %S.ast.Node, ptr %t114 - store %S.ast.Node %t115, ptr %a116 - call void @finch.copy.S_ast_Node(ptr %a117, ptr %a116) - %t118 = load %S.ast.Node, ptr %a117 - store %S.ast.Node %t118, ptr %a119 - store { ptr, i64, i64 } zeroinitializer, ptr %a120 - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = load ptr, ptr %a1 - %t123 = icmp eq ptr %t122, null - br i1 %t123, label %panic4836, label %ok4837 -panic4836: - call void @finch_panic(ptr @.str.3032, i64 2181, ptr @.str.3033) - unreachable -ok4837: - %t124 = getelementptr inbounds %S.gen.Gen, ptr %t122, i32 0, i32 4 - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch.copy.arr_str(ptr %a126, ptr %a125) - %t127 = load { ptr, i64, i64 }, ptr %a126 - %t128 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t127, ptr %t124 - store { ptr, i64, i64 } %t128, ptr %a129 - call void @finch.drop.arr_str(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a120 - %t131 = load ptr, ptr %a1 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic4838, label %ok4839 -panic4838: - call void @finch_panic(ptr @.str.3034, i64 2182, ptr @.str.3035) - unreachable -ok4839: - %t133 = getelementptr inbounds %S.gen.Gen, ptr %t131, i32 0, i32 5 - store { ptr, i64, i64 } %t130, ptr %a134 - call void @finch.copy.arr_str(ptr %a135, ptr %a134) - %t136 = load { ptr, i64, i64 }, ptr %a135 - %t137 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } %t136, ptr %t133 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch.drop.arr_str(ptr %a138) - %t139 = load ptr, ptr %a1 - %t140 = icmp eq ptr %t139, null - br i1 %t140, label %panic4840, label %ok4841 -panic4840: - call void @finch_panic(ptr @.str.3036, i64 2183, ptr @.str.3037) - unreachable -ok4841: - %t141 = getelementptr inbounds %S.gen.Gen, ptr %t139, i32 0, i32 6 - store i64 0, ptr %t141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic4842, label %ok4843 -panic4842: - call void @finch_panic(ptr @.str.3038, i64 2184, ptr @.str.3039) - unreachable -ok4843: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 9 - store i1 false, ptr %t144 - %t145 = load ptr, ptr %a1 - %t146 = icmp eq ptr %t145, null - br i1 %t146, label %panic4844, label %ok4845 -panic4844: - call void @finch_panic(ptr @.str.3040, i64 2185, ptr @.str.3041) - unreachable -ok4845: - %t147 = getelementptr inbounds %S.gen.Gen, ptr %t145, i32 0, i32 25 - store i64 0, ptr %t147 - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic4846, label %ok4847 -panic4846: - call void @finch_panic(ptr @.str.3042, i64 2186, ptr @.str.3043) - unreachable -ok4847: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 36 - store i64 -1, ptr %t150 - store i64 -1, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = icmp eq ptr %t152, null - br i1 %t153, label %panic4848, label %ok4849 -panic4848: - call void @finch_panic(ptr @.str.3044, i64 2188, ptr @.str.3045) - unreachable -ok4849: - %t154 = getelementptr inbounds %S.gen.Gen, ptr %t152, i32 0, i32 30 - %t155 = load i1, ptr %t154 - br i1 %t155, label %then4850, label %endif4852 -then4850: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a119 - %t158 = call i64 @finch.gen.dbgSubprogram(ptr %t156, %S.ast.Node %t157) - store i64 %t158, ptr %a151 - %t159 = load i64, ptr %a151 - %t160 = load ptr, ptr %a1 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic4853, label %ok4854 -panic4853: - call void @finch_panic(ptr @.str.3046, i64 2190, ptr @.str.3047) - unreachable -ok4854: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 36 - store i64 %t159, ptr %t162 - %t163 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 11 - %t164 = load i64, ptr %t163 - %t165 = load ptr, ptr %a1 - %t166 = icmp eq ptr %t165, null - br i1 %t166, label %panic4855, label %ok4856 -panic4855: - call void @finch_panic(ptr @.str.3048, i64 2191, ptr @.str.3049) - unreachable -ok4856: - %t167 = getelementptr inbounds %S.gen.Gen, ptr %t165, i32 0, i32 37 - store i64 %t164, ptr %t167 - %t168 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 12 - %t169 = load i64, ptr %t168 - %t170 = load ptr, ptr %a1 - %t171 = icmp eq ptr %t170, null - br i1 %t171, label %panic4857, label %ok4858 -panic4857: - call void @finch_panic(ptr @.str.3050, i64 2192, ptr @.str.3051) - unreachable -ok4858: - %t172 = getelementptr inbounds %S.gen.Gen, ptr %t170, i32 0, i32 38 - store i64 %t169, ptr %t172 - br label %endif4852 -endif4852: - %t173 = load ptr, ptr %a1 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic4859, label %ok4860 -panic4859: - call void @finch_panic(ptr @.str.3052, i64 2194, ptr @.str.3053) - unreachable -ok4860: - %t175 = getelementptr inbounds %S.gen.Gen, ptr %t173, i32 0, i32 44 - store i1 false, ptr %t175 - %t176 = load ptr, ptr %a1 - %t177 = icmp eq ptr %t176, null - br i1 %t177, label %panic4861, label %ok4862 -panic4861: - call void @finch_panic(ptr @.str.3054, i64 2195, ptr @.str.3055) - unreachable -ok4862: - %t178 = getelementptr inbounds %S.gen.Gen, ptr %t176, i32 0, i32 46 - store i64 0, ptr %t178 - store { ptr, i64, i64 } zeroinitializer, ptr %a179 - %t180 = load { ptr, i64, i64 }, ptr %a179 - %t181 = load ptr, ptr %a1 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic4863, label %ok4864 -panic4863: - call void @finch_panic(ptr @.str.3056, i64 2197, ptr @.str.3057) - unreachable -ok4864: - %t183 = getelementptr inbounds %S.gen.Gen, ptr %t181, i32 0, i32 10 - store { ptr, i64, i64 } %t180, ptr %a184 - call void @finch.copy.arr_S_gen_Scope(ptr %a185, ptr %a184) - %t186 = load { ptr, i64, i64 }, ptr %a185 - %t187 = load { ptr, i64, i64 }, ptr %t183 - store { ptr, i64, i64 } %t186, ptr %t183 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch.drop.arr_S_gen_Scope(ptr %a188) - %t189 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t189) - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic4874, label %ok4875 -panic4874: - call void @finch_panic(ptr @.str.3058, i64 2200, ptr @.str.3059) - unreachable -ok4875: - %t193 = getelementptr inbounds %S.gen.Gen, ptr %t191, i32 0, i32 13 - %t194 = getelementptr inbounds %S.gen.FnSig, ptr %t193, i32 0, i32 2 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = icmp sgt i64 %t196, 0 - br i1 %t197, label %then4876, label %endif4878 -then4876: - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = add i64 %t199, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t200, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t201 = load ptr, ptr %a190 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %t201, i64 %t199 - store { ptr, i64, i64 } { ptr @.str.3060, i64 9, i64 0 }, ptr %t202 - store i64 %t200, ptr %t198 - store { ptr, i64, i64 } { ptr @.str.3061, i64 6, i64 0 }, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic4879, label %ok4880 -panic4879: - call void @finch_panic(ptr @.str.3062, i64 2204, ptr @.str.3063) - unreachable -ok4880: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 13 - %t207 = getelementptr inbounds %S.gen.FnSig, ptr %t206, i32 0, i32 4 - %t208 = load i1, ptr %t207 - br i1 %t208, label %then4881, label %endif4883 -then4881: - %t209 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.3064, i64 4, i64 0 }, ptr %a203 - store { ptr, i64, i64 } %t209, ptr %a210 - call void @finch_str_drop(ptr %a210) - br label %endif4883 -endif4883: - %t211 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_copy(ptr %a213, ptr %a212) - %t214 = load { ptr, i64, i64 }, ptr %a213 - %t215 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } %t214, 0 - %t216 = load ptr, ptr %a1 - %t217 = icmp eq ptr %t216, null - br i1 %t217, label %panic4884, label %ok4885 -panic4884: - call void @finch_panic(ptr @.str.3065, i64 2207, ptr @.str.3066) - unreachable -ok4885: - %t218 = getelementptr inbounds %S.gen.Gen, ptr %t216, i32 0, i32 13 - %t219 = getelementptr inbounds %S.gen.FnSig, ptr %t218, i32 0, i32 2 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch_str_copy(ptr %a222, ptr %a221) - %t223 = load { ptr, i64, i64 }, ptr %a222 - %t224 = insertvalue %S.ast.Type %t215, { ptr, i64, i64 } %t223, 2 - %t225 = load ptr, ptr %a1 - %t226 = icmp eq ptr %t225, null - br i1 %t226, label %panic4886, label %ok4887 -panic4886: - call void @finch_panic(ptr @.str.3067, i64 2207, ptr @.str.3068) - unreachable -ok4887: - %t227 = getelementptr inbounds %S.gen.Gen, ptr %t225, i32 0, i32 13 - %t228 = getelementptr inbounds %S.gen.FnSig, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - store { ptr, i64, i64 } %t229, ptr %a230 - call void @finch_str_copy(ptr %a231, ptr %a230) - %t232 = load { ptr, i64, i64 }, ptr %a231 - %t233 = insertvalue %S.ast.Type %t224, { ptr, i64, i64 } %t232, 3 - store %S.ast.Type %t233, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic4888, label %ok4889 -panic4888: - call void @finch_panic(ptr @.str.3069, i64 2208, ptr @.str.3070) - unreachable -ok4889: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 10 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range4890, label %inrange4891 -range4890: - call void @finch_panic_index(ptr @.str.3071, i64 2208, i64 0, i64 %t239) - unreachable -inrange4891: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.gen.Scope, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.gen.Scope, ptr %t242, i32 0, i32 0 - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %t243, i32 0, i32 1 - %t245 = insertvalue %S.gen.Var zeroinitializer, { ptr, i64, i64 } { ptr @.str.3072, i64 4, i64 0 }, 0 - %t246 = load %S.ast.Type, ptr %a234 - store %S.ast.Type %t246, ptr %a247 - call void @finch.copy.S_ast_Type(ptr %a248, ptr %a247) - %t249 = load %S.ast.Type, ptr %a248 - %t250 = insertvalue %S.gen.Var %t245, %S.ast.Type %t249, 1 - %t251 = insertvalue %S.gen.Var %t250, { ptr, i64, i64 } { ptr @.str.3073, i64 5, i64 0 }, 2 - %t252 = insertvalue %S.gen.Var %t251, i1 false, 3 - %t253 = load i64, ptr %t244 - %t254 = add i64 %t253, 1 - call void @finch_arr_reserve(ptr %t243, i64 %t254, i64 ptrtoint (ptr getelementptr (%S.gen.Var, ptr null, i32 1) to i64)) - %t255 = load ptr, ptr %t243 - %t256 = getelementptr inbounds %S.gen.Var, ptr %t255, i64 %t253 - store %S.gen.Var %t252, ptr %t256 - store i64 %t254, ptr %t244 - %t257 = load ptr, ptr %a1 - %t258 = icmp eq ptr %t257, null - br i1 %t258, label %panic4892, label %ok4893 -panic4892: - call void @finch_panic(ptr @.str.3074, i64 2209, ptr @.str.3075) - unreachable -ok4893: - %t259 = getelementptr inbounds %S.gen.Gen, ptr %t257, i32 0, i32 30 - %t260 = load i1, ptr %t259 - br i1 %t260, label %then4894, label %endif4896 -then4894: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a119 - %t263 = load %S.ast.Type, ptr %a234 - call void @finch.gen.dbgVariable(ptr %t261, %S.ast.Node %t262, { ptr, i64, i64 } { ptr @.str.3076, i64 4, i64 0 }, %S.ast.Type %t263, { ptr, i64, i64 } { ptr @.str.3077, i64 5, i64 0 }) - br label %endif4896 -endif4896: - call void @finch.drop.S_ast_Type(ptr %a234) - call void @finch_str_drop(ptr %a203) - br label %endif4878 -endif4878: - %t264 = load ptr, ptr %a1 - %t265 = icmp eq ptr %t264, null - br i1 %t265, label %panic4897, label %ok4898 -panic4897: - call void @finch_panic(ptr @.str.3078, i64 2214, ptr @.str.3079) - unreachable -ok4898: - %t266 = getelementptr inbounds %S.gen.Gen, ptr %t264, i32 0, i32 13 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i32 0, i32 13 - %t268 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i32 0, i32 1 - %t269 = load i64, ptr %t268 - store i64 0, ptr %a270 - br label %for.cond4899 -for.cond4899: - %t271 = load i64, ptr %a270 - %t272 = icmp slt i64 %t271, %t269 - br i1 %t272, label %for.body4900, label %for.end4902 -for.body4900: - %t273 = load ptr, ptr %a1 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic4903, label %ok4904 -panic4903: - call void @finch_panic(ptr @.str.3080, i64 2215, ptr @.str.3081) - unreachable -ok4904: - %t275 = getelementptr inbounds %S.gen.Gen, ptr %t273, i32 0, i32 13 - %t276 = getelementptr inbounds %S.gen.FnSig, ptr %t275, i32 0, i32 13 - %t277 = load i64, ptr %a270 - %t278 = load { ptr, i64, i64 }, ptr %t276 - %t279 = extractvalue { ptr, i64, i64 } %t278, 1 - %t280 = icmp uge i64 %t277, %t279 - br i1 %t280, label %range4905, label %inrange4906 -range4905: - call void @finch_panic_index(ptr @.str.3082, i64 2215, i64 %t277, i64 %t279) - unreachable -inrange4906: - %t281 = extractvalue { ptr, i64, i64 } %t278, 0 - %t282 = getelementptr inbounds %S.ast.Type, ptr %t281, i64 %t277 - %t283 = load %S.ast.Type, ptr %t282 - store %S.ast.Type %t283, ptr %a284 - call void @finch.copy.S_ast_Type(ptr %a285, ptr %a284) - %t286 = load %S.ast.Type, ptr %a285 - store %S.ast.Type %t286, ptr %a287 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a287 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.3083, i64 3, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a298, i64 %t297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t296, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - %t306 = load i64, ptr %t288 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %a190, i64 %t307, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %a190 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t306 - store { ptr, i64, i64 } %t305, ptr %t309 - store i64 %t307, ptr %t288 - %t310 = load i64, ptr %a270 - call void @finch_str_from_int(ptr %a311, i64 %t310) - %t312 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } { ptr @.str.3084, i64 2, i64 0 }, ptr %a314 - store { ptr, i64, i64 } %t312, ptr %a315 - call void @finch_str_concat(ptr %a313, ptr %a314, ptr %a315) - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_drop(ptr %a316) - %t317 = load { ptr, i64, i64 }, ptr %a313 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Type, ptr %a287 - %t321 = call i1 @finch.gen.owning(ptr %t319, %S.ast.Type %t320) - br label %logic.from4907 -logic.from4907: - br i1 %t321, label %logic.rhs4908, label %logic.end4909 -logic.rhs4908: - %t322 = load ptr, ptr %a1 - %t323 = icmp eq ptr %t322, null - br i1 %t323, label %panic4910, label %ok4911 -panic4910: - call void @finch_panic(ptr @.str.3085, i64 2218, ptr @.str.3086) - unreachable -ok4911: - %t324 = getelementptr inbounds %S.gen.Gen, ptr %t322, i32 0, i32 13 - %t325 = getelementptr inbounds %S.gen.FnSig, ptr %t324, i32 0, i32 15 - %t326 = load i64, ptr %a270 - %t327 = load { ptr, i64, i64 }, ptr %t325 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range4912, label %inrange4913 -range4912: - call void @finch_panic_index(ptr @.str.3087, i64 2218, i64 %t326, i64 %t328) - unreachable -inrange4913: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds i1, ptr %t330, i64 %t326 - %t332 = load i1, ptr %t331 - %t333 = xor i1 %t332, true - br label %logic.rend4914 -logic.rend4914: - br label %logic.end4909 -logic.end4909: - %t334 = phi i1 [ false, %logic.from4907 ], [ %t333, %logic.rend4914 ] - br i1 %t334, label %then4915, label %endif4917 -then4915: - %t335 = load ptr, ptr %a1 - %t336 = load { ptr, i64, i64 }, ptr %a318 - %t337 = load %S.ast.Type, ptr %a287 - %t338 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t335, { ptr, i64, i64 } %t336, %S.ast.Type %t337) - %t339 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t338, ptr %a318 - store { ptr, i64, i64 } %t339, ptr %a340 - call void @finch_str_drop(ptr %a340) - br label %endif4917 -endif4917: - %t341 = load i64, ptr %a270 - %t342 = add i64 %t341, 1 - %t343 = load ptr, ptr %a1 - %t344 = icmp eq ptr %t343, null - br i1 %t344, label %panic4918, label %ok4919 -panic4918: - call void @finch_panic(ptr @.str.3088, i64 2221, ptr @.str.3089) - unreachable -ok4919: - %t345 = getelementptr inbounds %S.gen.Gen, ptr %t343, i32 0, i32 39 - store i64 %t342, ptr %t345 - %t346 = load ptr, ptr %a1 - %t347 = icmp eq ptr %t346, null - br i1 %t347, label %panic4920, label %ok4921 -panic4920: - call void @finch_panic(ptr @.str.3090, i64 2222, ptr @.str.3091) - unreachable -ok4921: - %t348 = getelementptr inbounds %S.gen.Gen, ptr %t346, i32 0, i32 13 - %t349 = getelementptr inbounds %S.gen.FnSig, ptr %t348, i32 0, i32 2 - %t350 = getelementptr inbounds { ptr, i64, i64 }, ptr %t349, i32 0, i32 1 - %t351 = load i64, ptr %t350 - %t352 = icmp sgt i64 %t351, 0 - br i1 %t352, label %then4922, label %endif4924 -then4922: - %t353 = load i64, ptr %a270 - %t354 = add i64 %t353, 2 - %t355 = load ptr, ptr %a1 - %t356 = icmp eq ptr %t355, null - br i1 %t356, label %panic4925, label %ok4926 -panic4925: - call void @finch_panic(ptr @.str.3092, i64 2223, ptr @.str.3093) - unreachable -ok4926: - %t357 = getelementptr inbounds %S.gen.Gen, ptr %t355, i32 0, i32 39 - store i64 %t354, ptr %t357 - br label %endif4924 -endif4924: - %t358 = load ptr, ptr %a1 - %t359 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t360 = load i64, ptr %a270 - %t361 = load { ptr, i64, i64 }, ptr %t359 - %t362 = extractvalue { ptr, i64, i64 } %t361, 1 - %t363 = icmp uge i64 %t360, %t362 - br i1 %t363, label %range4927, label %inrange4928 -range4927: - call void @finch_panic_index(ptr @.str.3094, i64 2225, i64 %t360, i64 %t362) - unreachable -inrange4928: - %t364 = extractvalue { ptr, i64, i64 } %t361, 0 - %t365 = getelementptr inbounds %S.ast.Node, ptr %t364, i64 %t360 - %t366 = load %S.ast.Node, ptr %t365 - %t367 = load ptr, ptr %a1 - %t368 = icmp eq ptr %t367, null - br i1 %t368, label %panic4929, label %ok4930 -panic4929: - call void @finch_panic(ptr @.str.3095, i64 2225, ptr @.str.3096) - unreachable -ok4930: - %t369 = getelementptr inbounds %S.gen.Gen, ptr %t367, i32 0, i32 13 - %t370 = getelementptr inbounds %S.gen.FnSig, ptr %t369, i32 0, i32 14 - %t371 = load i64, ptr %a270 - %t372 = load { ptr, i64, i64 }, ptr %t370 - %t373 = extractvalue { ptr, i64, i64 } %t372, 1 - %t374 = icmp uge i64 %t371, %t373 - br i1 %t374, label %range4931, label %inrange4932 -range4931: - call void @finch_panic_index(ptr @.str.3097, i64 2225, i64 %t371, i64 %t373) - unreachable -inrange4932: - %t375 = extractvalue { ptr, i64, i64 } %t372, 0 - %t376 = getelementptr inbounds { ptr, i64, i64 }, ptr %t375, i64 %t371 - %t377 = load { ptr, i64, i64 }, ptr %t376 - %t378 = load %S.ast.Type, ptr %a287 - %t379 = load { ptr, i64, i64 }, ptr %a318 - %t380 = load ptr, ptr %a1 - %t381 = load %S.ast.Type, ptr %a287 - %t382 = call i1 @finch.gen.owning(ptr %t380, %S.ast.Type %t381) - br label %logic.from4933 -logic.from4933: - br i1 %t382, label %logic.rhs4934, label %logic.end4935 -logic.rhs4934: - %t383 = load ptr, ptr %a1 - %t384 = icmp eq ptr %t383, null - br i1 %t384, label %panic4936, label %ok4937 -panic4936: - call void @finch_panic(ptr @.str.3098, i64 2225, ptr @.str.3099) - unreachable -ok4937: - %t385 = getelementptr inbounds %S.gen.Gen, ptr %t383, i32 0, i32 13 - %t386 = getelementptr inbounds %S.gen.FnSig, ptr %t385, i32 0, i32 15 - %t387 = load i64, ptr %a270 - %t388 = load { ptr, i64, i64 }, ptr %t386 - %t389 = extractvalue { ptr, i64, i64 } %t388, 1 - %t390 = icmp uge i64 %t387, %t389 - br i1 %t390, label %range4938, label %inrange4939 -range4938: - call void @finch_panic_index(ptr @.str.3100, i64 2225, i64 %t387, i64 %t389) - unreachable -inrange4939: - %t391 = extractvalue { ptr, i64, i64 } %t388, 0 - %t392 = getelementptr inbounds i1, ptr %t391, i64 %t387 - %t393 = load i1, ptr %t392 - %t394 = xor i1 %t393, true - br label %logic.rend4940 -logic.rend4940: - br label %logic.end4935 -logic.end4935: - %t395 = phi i1 [ false, %logic.from4933 ], [ %t394, %logic.rend4940 ] - %t396 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t358, %S.ast.Node %t366, { ptr, i64, i64 } %t377, %S.ast.Type %t378, { ptr, i64, i64 } %t379, i1 false, i1 %t395) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a1 - %t399 = icmp eq ptr %t398, null - br i1 %t399, label %panic4941, label %ok4942 -panic4941: - call void @finch_panic(ptr @.str.3101, i64 2226, ptr @.str.3102) - unreachable -ok4942: - %t400 = getelementptr inbounds %S.gen.Gen, ptr %t398, i32 0, i32 39 - store i64 0, ptr %t400 - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_ast_Type(ptr %a287) - br label %for.step4901 -for.step4901: - %t401 = load i64, ptr %a270 - %t402 = add i64 %t401, 1 - store i64 %t402, ptr %a270 - br label %for.cond4899 -for.end4902: - %t403 = load ptr, ptr %a1 - %t404 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t405 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 9 - %t406 = getelementptr inbounds { ptr, i64, i64 }, ptr %t405, i32 0, i32 1 - %t407 = load i64, ptr %t406 - %t408 = sub i64 %t407, 1 - %t409 = load { ptr, i64, i64 }, ptr %t404 - %t410 = extractvalue { ptr, i64, i64 } %t409, 1 - %t411 = icmp uge i64 %t408, %t410 - br i1 %t411, label %range4943, label %inrange4944 -range4943: - call void @finch_panic_index(ptr @.str.3103, i64 2228, i64 %t408, i64 %t410) - unreachable -inrange4944: - %t412 = extractvalue { ptr, i64, i64 } %t409, 0 - %t413 = getelementptr inbounds %S.ast.Node, ptr %t412, i64 %t408 - %t414 = load %S.ast.Node, ptr %t413 - call void @finch.gen.block(ptr %t403, %S.ast.Node %t414, i1 false) - %t415 = load ptr, ptr %a1 - %t416 = icmp eq ptr %t415, null - br i1 %t416, label %panic4945, label %ok4946 -panic4945: - call void @finch_panic(ptr @.str.3104, i64 2229, ptr @.str.3105) - unreachable -ok4946: - %t417 = getelementptr inbounds %S.gen.Gen, ptr %t415, i32 0, i32 9 - %t418 = load i1, ptr %t417 - %t419 = xor i1 %t418, true - br i1 %t419, label %then4947, label %endif4949 -then4947: - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic4950, label %ok4951 -panic4950: - call void @finch_panic(ptr @.str.3106, i64 2230, ptr @.str.3107) - unreachable -ok4951: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 13 - %t423 = getelementptr inbounds %S.gen.FnSig, ptr %t422, i32 0, i32 12 - %t424 = getelementptr inbounds %S.ast.Type, ptr %t423, i32 0, i32 0 - %t425 = load { ptr, i64, i64 }, ptr %t424 - store { ptr, i64, i64 } %t425, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.3108, i64 4, i64 0 }, ptr %a427 - %t428 = call i32 @finch_str_eq(ptr %a426, ptr %a427) - %t429 = icmp eq i32 %t428, 0 - br i1 %t429, label %then4952, label %endif4954 -then4952: - %t430 = load ptr, ptr %a1 - %t431 = load %S.ast.Node, ptr %a119 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a119, i32 0, i32 1 - %t433 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } { ptr @.str.3109, i64 10, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t433, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - %t437 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t437, ptr %a439 - store { ptr, i64, i64 } { ptr @.str.3110, i64 38, i64 0 }, ptr %a440 - call void @finch_str_concat(ptr %a438, ptr %a439, ptr %a440) - store { ptr, i64, i64 } %t437, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a438 - %t443 = load ptr, ptr %a1 - %t444 = icmp eq ptr %t443, null - br i1 %t444, label %panic4955, label %ok4956 -panic4955: - call void @finch_panic(ptr @.str.3111, i64 2231, ptr @.str.3112) - unreachable -ok4956: - %t445 = getelementptr inbounds %S.gen.Gen, ptr %t443, i32 0, i32 13 - %t446 = getelementptr inbounds %S.gen.FnSig, ptr %t445, i32 0, i32 12 - %t447 = load %S.ast.Type, ptr %t446 - %t448 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t447) - store { ptr, i64, i64 } %t442, ptr %a450 - store { ptr, i64, i64 } %t448, ptr %a451 - call void @finch_str_concat(ptr %a449, ptr %a450, ptr %a451) - store { ptr, i64, i64 } %t442, ptr %a452 - call void @finch_str_drop(ptr %a452) - store { ptr, i64, i64 } %t448, ptr %a453 - call void @finch_str_drop(ptr %a453) - %t454 = load { ptr, i64, i64 }, ptr %a449 - call void @finch.gen.fail(ptr %t430, %S.ast.Node %t431, { ptr, i64, i64 } %t454) - store { ptr, i64, i64 } %t454, ptr %a455 - call void @finch_str_drop(ptr %a455) - br label %endif4954 -endif4954: - %t456 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t456, i64 0) - %t457 = load ptr, ptr %a1 - %t458 = icmp eq ptr %t457, null - br i1 %t458, label %panic4957, label %ok4958 -panic4957: - call void @finch_panic(ptr @.str.3113, i64 2234, ptr @.str.3114) - unreachable -ok4958: - %t459 = getelementptr inbounds %S.gen.Gen, ptr %t457, i32 0, i32 13 - %t460 = getelementptr inbounds %S.gen.FnSig, ptr %t459, i32 0, i32 9 - %t461 = load i1, ptr %t460 - br i1 %t461, label %then4959, label %else4960 -then4959: - %t462 = load ptr, ptr %a1 - %t463 = load ptr, ptr %a1 - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic4962, label %ok4963 -panic4962: - call void @finch_panic(ptr @.str.3116, i64 2235, ptr @.str.3117) - unreachable -ok4963: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 13 - %t467 = load %S.gen.FnSig, ptr %t466 - %t468 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t463, %S.gen.FnSig %t467) - store { ptr, i64, i64 } { ptr @.str.3115, i64 4, i64 0 }, ptr %a470 - store { ptr, i64, i64 } %t468, ptr %a471 - call void @finch_str_concat(ptr %a469, ptr %a470, ptr %a471) - store { ptr, i64, i64 } %t468, ptr %a472 - call void @finch_str_drop(ptr %a472) - %t473 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t473, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.3118, i64 53, i64 0 }, ptr %a476 - call void @finch_str_concat(ptr %a474, ptr %a475, ptr %a476) - store { ptr, i64, i64 } %t473, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a474 - call void @finch.gen.emit(ptr %t462, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif4961 -else4960: - %t480 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t480, { ptr, i64, i64 } { ptr @.str.3119, i64 8, i64 0 }) - br label %endif4961 -endif4961: - br label %endif4949 -endif4949: - store { ptr, i64, i64 } { ptr @.str.3120, i64 0, i64 0 }, ptr %a481 - %t482 = load i64, ptr %a151 - %t483 = icmp sge i64 %t482, 0 - br i1 %t483, label %then4964, label %endif4966 -then4964: - %t484 = load i64, ptr %a151 - call void @finch_str_from_int(ptr %a485, i64 %t484) - %t486 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.3121, i64 7, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - %t492 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t491, ptr %a481 - store { ptr, i64, i64 } %t492, ptr %a493 - call void @finch_str_drop(ptr %a493) - br label %endif4966 -endif4966: - %t494 = load ptr, ptr %a1 - %t495 = icmp eq ptr %t494, null - br i1 %t495, label %panic4967, label %ok4968 -panic4967: - call void @finch_panic(ptr @.str.3122, i64 2244, ptr @.str.3123) - unreachable -ok4968: - %t496 = getelementptr inbounds %S.gen.Gen, ptr %t494, i32 0, i32 36 - store i64 -1, ptr %t496 - %t497 = load ptr, ptr %a1 - %t498 = icmp eq ptr %t497, null - br i1 %t498, label %panic4969, label %ok4970 -panic4969: - call void @finch_panic(ptr @.str.3124, i64 2245, ptr @.str.3125) - unreachable -ok4970: - %t499 = getelementptr inbounds %S.gen.Gen, ptr %t497, i32 0, i32 3 - %t500 = getelementptr inbounds { ptr, i64, i64 }, ptr %t499, i32 0, i32 1 - %t501 = load ptr, ptr %a1 - %t502 = load ptr, ptr %a1 - %t503 = icmp eq ptr %t502, null - br i1 %t503, label %panic4971, label %ok4972 -panic4971: - call void @finch_panic(ptr @.str.3127, i64 2245, ptr @.str.3128) - unreachable -ok4972: - %t504 = getelementptr inbounds %S.gen.Gen, ptr %t502, i32 0, i32 13 - %t505 = load %S.gen.FnSig, ptr %t504 - %t506 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t501, %S.gen.FnSig %t505) - store { ptr, i64, i64 } { ptr @.str.3126, i64 16, i64 0 }, ptr %a508 - store { ptr, i64, i64 } %t506, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - store { ptr, i64, i64 } %t511, ptr %a513 - store { ptr, i64, i64 } { ptr @.str.3129, i64 1, i64 0 }, ptr %a514 - call void @finch_str_concat(ptr %a512, ptr %a513, ptr %a514) - store { ptr, i64, i64 } %t511, ptr %a515 - call void @finch_str_drop(ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a512 - %t517 = load ptr, ptr %a1 - %t518 = icmp eq ptr %t517, null - br i1 %t518, label %panic4973, label %ok4974 -panic4973: - call void @finch_panic(ptr @.str.3130, i64 2245, ptr @.str.3131) - unreachable -ok4974: - %t519 = getelementptr inbounds %S.gen.Gen, ptr %t517, i32 0, i32 13 - %t520 = getelementptr inbounds %S.gen.FnSig, ptr %t519, i32 0, i32 11 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t516, ptr %a523 - store { ptr, i64, i64 } %t521, ptr %a524 - call void @finch_str_concat(ptr %a522, ptr %a523, ptr %a524) - store { ptr, i64, i64 } %t516, ptr %a525 - call void @finch_str_drop(ptr %a525) - %t526 = load { ptr, i64, i64 }, ptr %a522 - store { ptr, i64, i64 } %t526, ptr %a528 - store { ptr, i64, i64 } { ptr @.str.3132, i64 1, i64 0 }, ptr %a529 - call void @finch_str_concat(ptr %a527, ptr %a528, ptr %a529) - store { ptr, i64, i64 } %t526, ptr %a530 - call void @finch_str_drop(ptr %a530) - %t531 = load { ptr, i64, i64 }, ptr %a527 - %t532 = getelementptr inbounds { ptr, i64, i64 }, ptr %a190, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3133, i64 2, i64 0 }, ptr %a533 - call void @finch_str_join(ptr %a534, ptr %a190, ptr %a533) - %t535 = load { ptr, i64, i64 }, ptr %a534 - store { ptr, i64, i64 } %t531, ptr %a537 - store { ptr, i64, i64 } %t535, ptr %a538 - call void @finch_str_concat(ptr %a536, ptr %a537, ptr %a538) - store { ptr, i64, i64 } %t531, ptr %a539 - call void @finch_str_drop(ptr %a539) - store { ptr, i64, i64 } %t535, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a536 - store { ptr, i64, i64 } %t541, ptr %a543 - store { ptr, i64, i64 } { ptr @.str.3134, i64 1, i64 0 }, ptr %a544 - call void @finch_str_concat(ptr %a542, ptr %a543, ptr %a544) - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch_str_drop(ptr %a545) - %t546 = load { ptr, i64, i64 }, ptr %a542 - %t547 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t546, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t546, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.3135, i64 10, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - %t558 = load ptr, ptr %a1 - %t559 = icmp eq ptr %t558, null - br i1 %t559, label %panic4975, label %ok4976 -panic4975: - call void @finch_panic(ptr @.str.3136, i64 2246, ptr @.str.3137) - unreachable -ok4976: - %t560 = getelementptr inbounds %S.gen.Gen, ptr %t558, i32 0, i32 5 - %t561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t560, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3138, i64 1, i64 0 }, ptr %a562 - call void @finch_str_join(ptr %a563, ptr %t560, ptr %a562) - %t564 = load { ptr, i64, i64 }, ptr %a563 - store { ptr, i64, i64 } %t557, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - store { ptr, i64, i64 } %t557, ptr %a568 - call void @finch_str_drop(ptr %a568) - store { ptr, i64, i64 } %t564, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t570, ptr %a572 - store { ptr, i64, i64 } { ptr @.str.3139, i64 1, i64 0 }, ptr %a573 - call void @finch_str_concat(ptr %a571, ptr %a572, ptr %a573) - store { ptr, i64, i64 } %t570, ptr %a574 - call void @finch_str_drop(ptr %a574) - %t575 = load { ptr, i64, i64 }, ptr %a571 - %t576 = load ptr, ptr %a1 - %t577 = icmp eq ptr %t576, null - br i1 %t577, label %panic4977, label %ok4978 -panic4977: - call void @finch_panic(ptr @.str.3140, i64 2246, ptr @.str.3141) - unreachable -ok4978: - %t578 = getelementptr inbounds %S.gen.Gen, ptr %t576, i32 0, i32 4 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %t578, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3142, i64 1, i64 0 }, ptr %a580 - call void @finch_str_join(ptr %a581, ptr %t578, ptr %a580) - %t582 = load { ptr, i64, i64 }, ptr %a581 - store { ptr, i64, i64 } %t575, ptr %a584 - store { ptr, i64, i64 } %t582, ptr %a585 - call void @finch_str_concat(ptr %a583, ptr %a584, ptr %a585) - store { ptr, i64, i64 } %t575, ptr %a586 - call void @finch_str_drop(ptr %a586) - store { ptr, i64, i64 } %t582, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a583 - store { ptr, i64, i64 } %t588, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.3143, i64 3, i64 0 }, ptr %a591 - call void @finch_str_concat(ptr %a589, ptr %a590, ptr %a591) - store { ptr, i64, i64 } %t588, ptr %a592 - call void @finch_str_drop(ptr %a592) - %t593 = load { ptr, i64, i64 }, ptr %a589 - %t594 = load i64, ptr %t500 - %t595 = add i64 %t594, 1 - call void @finch_arr_reserve(ptr %t499, i64 %t595, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t596 = load ptr, ptr %t499 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - store { ptr, i64, i64 } %t593, ptr %t597 - store i64 %t595, ptr %t500 - call void @finch_str_drop(ptr %a481) - call void @finch.drop.arr_str(ptr %a190) - call void @finch.drop.arr_S_gen_Scope(ptr %a179) - call void @finch.drop.arr_str(ptr %a120) - call void @finch.drop.S_ast_Node(ptr %a119) - ret void -} - -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 %then4979, label %endif4981 -then4979: - %t5 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t5) - br label %endif4981 -endif4981: - %t6 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a7 - br label %each.cond4982 -each.cond4982: - %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.body4983, label %each.end4985 -each.body4983: - %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 %panic4986, label %ok4987 -panic4986: - call void @finch_panic(ptr @.str.3144, i64 2256, ptr @.str.3145) - unreachable -ok4987: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 9 - %t19 = load i1, ptr %t18 - br i1 %t19, label %then4988, label %endif4990 -then4988: - %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.3146, i64 66, i64 0 }) - br label %endif4990 -endif4990: - %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.step4984 -each.step4984: - %t24 = load i64, ptr %a7 - %t25 = add i64 %t24, 1 - store i64 %t25, ptr %a7 - br label %each.cond4982 -each.end4985: - %t26 = load i1, ptr %a3 - br i1 %t26, label %then4991, label %endif4993 -then4991: - %t27 = load ptr, ptr %a1 - call void @finch.gen.endScope(ptr %t27) - br label %endif4993 -endif4993: - 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.drop.S_gen_Loop(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Loop, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal void @finch.gen.stmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a67 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca %S.gen.Val, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a189 = alloca %S.ast.Node, align 16 - %a190 = alloca %S.ast.Node, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca %S.gen.Loop, align 16 - %a269 = alloca %S.gen.Loop, align 16 - %a271 = alloca %S.gen.Loop, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t4 = load i64, ptr %t3 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic4994, label %ok4995 -panic4994: - call void @finch_panic(ptr @.str.3147, i64 2267, ptr @.str.3148) - unreachable -ok4995: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 37 - 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 %panic4996, label %ok4997 -panic4996: - call void @finch_panic(ptr @.str.3149, i64 2268, ptr @.str.3150) - unreachable -ok4997: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 38 - 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.3151, 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 %then4998, label %else4999 -then4998: - %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 %endif5000 -else4999: - %t26 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t26, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3152, 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 %then5001, label %else5002 -then5001: - %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 %endif5003 -else5002: - %t33 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t33, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3153, 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 %then5004, label %else5005 -then5004: - %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 %endif5006 -else5005: - %t40 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3154, 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 %then5007, label %else5008 -then5007: - %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 %range5010, label %inrange5011 -range5010: - call void @finch_panic_index(ptr @.str.3155, i64 2277, i64 0, i64 %t47) - unreachable -inrange5011: - %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.3156, 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 %then5012, label %else5013 -then5012: - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = extractvalue { ptr, i64, i64 } %t60, 1 - %t62 = icmp uge i64 0, %t61 - br i1 %t62, label %range5015, label %inrange5016 -range5015: - call void @finch_panic_index(ptr @.str.3157, i64 2278, i64 0, i64 %t61) - unreachable -inrange5016: - %t63 = extractvalue { ptr, i64, i64 } %t60, 0 - %t64 = getelementptr inbounds %S.ast.Node, ptr %t63, i64 0 - %t65 = load %S.ast.Node, ptr %t64 - %t66 = call %S.gen.Val @finch.gen.orElse(ptr %t58, %S.ast.Node %t65, i1 true) - call void @finch.gen.release(ptr %t57, %S.gen.Val %t66) - store %S.gen.Val %t66, ptr %a67 - call void @finch.drop.S_gen_Val(ptr %a67) - br label %endif5014 -else5013: - %t68 = load ptr, ptr %a1 - %t69 = load ptr, ptr %a1 - %t70 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = extractvalue { ptr, i64, i64 } %t71, 1 - %t73 = icmp uge i64 0, %t72 - br i1 %t73, label %range5017, label %inrange5018 -range5017: - call void @finch_panic_index(ptr @.str.3158, i64 2280, i64 0, i64 %t72) - unreachable -inrange5018: - %t74 = extractvalue { ptr, i64, i64 } %t71, 0 - %t75 = getelementptr inbounds %S.ast.Node, ptr %t74, i64 0 - %t76 = load %S.ast.Node, ptr %t75 - %t77 = call %S.gen.Val @finch.gen.expr(ptr %t69, %S.ast.Node %t76) - call void @finch.gen.release(ptr %t68, %S.gen.Val %t77) - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - br label %endif5014 -endif5014: - br label %endif5009 -else5008: - %t79 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3159, i64 5, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp ne i32 %t82, 0 - br i1 %t83, label %then5019, label %else5020 -then5019: - %t84 = load ptr, ptr %a1 - %t85 = load %S.ast.Node, ptr %a2 - %t86 = call %S.gen.Val @finch.gen.matchGen(ptr %t84, %S.ast.Node %t85, i1 false) - store %S.gen.Val %t86, ptr %a87 - call void @finch.drop.S_gen_Val(ptr %a87) - br label %endif5021 -else5020: - %t88 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t88, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.3160, i64 2, i64 0 }, ptr %a90 - %t91 = call i32 @finch_str_eq(ptr %a89, ptr %a90) - %t92 = icmp ne i32 %t91, 0 - br i1 %t92, label %then5022, label %else5023 -then5022: - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Node, ptr %a2 - call void @finch.gen.ifStmt(ptr %t93, %S.ast.Node %t94) - br label %endif5024 -else5023: - %t95 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.3161, i64 5, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then5025, label %else5026 -then5025: - %t100 = load ptr, ptr %a1 - %t101 = load %S.ast.Node, ptr %a2 - call void @finch.gen.whileStmt(ptr %t100, %S.ast.Node %t101) - br label %endif5027 -else5026: - %t102 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.3162, 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 %then5028, label %else5029 -then5028: - %t107 = load ptr, ptr %a1 - %t108 = load %S.ast.Node, ptr %a2 - call void @finch.gen.forStmt(ptr %t107, %S.ast.Node %t108) - br label %endif5030 -else5029: - %t109 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t109, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.3163, 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 %then5031, label %else5032 -then5031: - %t114 = load ptr, ptr %a1 - %t115 = load %S.ast.Node, ptr %a2 - call void @finch.gen.eachStmt(ptr %t114, %S.ast.Node %t115) - br label %endif5033 -else5032: - %t116 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3164, 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 %then5034, label %else5035 -then5034: - %t121 = load ptr, ptr %a1 - %t122 = load %S.ast.Node, ptr %a2 - call void @finch.gen.returnStmt(ptr %t121, %S.ast.Node %t122) - br label %endif5036 -else5035: - %t123 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3165, i64 5, i64 0 }, ptr %a125 - %t126 = call i32 @finch_str_eq(ptr %a124, ptr %a125) - %t127 = icmp ne i32 %t126, 0 - br i1 %t127, label %then5037, label %else5038 -then5037: - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic5040, label %ok5041 -panic5040: - call void @finch_panic(ptr @.str.3166, i64 2295, ptr @.str.3167) - unreachable -ok5041: - %t130 = getelementptr inbounds %S.gen.Gen, ptr %t128, i32 0, i32 46 - %t131 = load i64, ptr %t130 - %t132 = icmp sgt i64 %t131, 0 - br i1 %t132, label %then5042, label %endif5044 -then5042: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } { ptr @.str.3168, i64 33, i64 0 }) - br label %endif5044 -endif5044: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic5045, label %ok5046 -panic5045: - call void @finch_panic(ptr @.str.3169, i64 2298, ptr @.str.3170) - unreachable -ok5046: - %t137 = getelementptr inbounds %S.gen.Gen, ptr %t135, i32 0, i32 10 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t139 = load i64, ptr %t138 - %t140 = sub i64 %t139, 1 - store i64 %t140, ptr %a141 - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic5047, label %ok5048 -panic5047: - call void @finch_panic(ptr @.str.3171, i64 2299, ptr @.str.3172) - unreachable -ok5048: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 10 - %t145 = load i64, ptr %a141 - %t146 = load { ptr, i64, i64 }, ptr %t144 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5049, label %inrange5050 -range5049: - call void @finch_panic_index(ptr @.str.3173, i64 2299, i64 %t145, i64 %t147) - unreachable -inrange5050: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.gen.Scope, ptr %t149, i64 %t145 - %t151 = getelementptr inbounds %S.gen.Scope, ptr %t150, i32 0, i32 3 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = insertvalue %S.gen.Cleanup zeroinitializer, i1 true, 0 - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic5051, label %ok5052 -panic5051: - call void @finch_panic(ptr @.str.3174, i64 2299, ptr @.str.3175) - unreachable -ok5052: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 10 - %t157 = load i64, ptr %a141 - %t158 = load { ptr, i64, i64 }, ptr %t156 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = icmp uge i64 %t157, %t159 - br i1 %t160, label %range5053, label %inrange5054 -range5053: - call void @finch_panic_index(ptr @.str.3176, i64 2299, i64 %t157, i64 %t159) - unreachable -inrange5054: - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = getelementptr inbounds %S.gen.Scope, ptr %t161, i64 %t157 - %t163 = getelementptr inbounds %S.gen.Scope, ptr %t162, i32 0, i32 1 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i32 0, i32 1 - %t165 = load i64, ptr %t164 - %t166 = insertvalue %S.gen.Cleanup %t153, i64 %t165, 1 - %t167 = load i64, ptr %t152 - %t168 = add i64 %t167, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t168, i64 ptrtoint (ptr getelementptr (%S.gen.Cleanup, ptr null, i32 1) to i64)) - %t169 = load ptr, ptr %t151 - %t170 = getelementptr inbounds %S.gen.Cleanup, ptr %t169, i64 %t167 - store %S.gen.Cleanup %t166, ptr %t170 - store i64 %t168, ptr %t152 - %t171 = load ptr, ptr %a1 - %t172 = icmp eq ptr %t171, null - br i1 %t172, label %panic5055, label %ok5056 -panic5055: - call void @finch_panic(ptr @.str.3177, i64 2300, ptr @.str.3178) - unreachable -ok5056: - %t173 = getelementptr inbounds %S.gen.Gen, ptr %t171, i32 0, i32 10 - %t174 = load i64, ptr %a141 - %t175 = load { ptr, i64, i64 }, ptr %t173 - %t176 = extractvalue { ptr, i64, i64 } %t175, 1 - %t177 = icmp uge i64 %t174, %t176 - br i1 %t177, label %range5057, label %inrange5058 -range5057: - call void @finch_panic_index(ptr @.str.3179, i64 2300, i64 %t174, i64 %t176) - unreachable -inrange5058: - %t178 = extractvalue { ptr, i64, i64 } %t175, 0 - %t179 = getelementptr inbounds %S.gen.Scope, ptr %t178, i64 %t174 - %t180 = getelementptr inbounds %S.gen.Scope, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t180, i32 0, i32 1 - %t182 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t183 = load { ptr, i64, i64 }, ptr %t182 - %t184 = extractvalue { ptr, i64, i64 } %t183, 1 - %t185 = icmp uge i64 0, %t184 - br i1 %t185, label %range5059, label %inrange5060 -range5059: - call void @finch_panic_index(ptr @.str.3180, i64 2300, i64 0, i64 %t184) - unreachable -inrange5060: - %t186 = extractvalue { ptr, i64, i64 } %t183, 0 - %t187 = getelementptr inbounds %S.ast.Node, ptr %t186, i64 0 - %t188 = load %S.ast.Node, ptr %t187 - store %S.ast.Node %t188, ptr %a189 - call void @finch.copy.S_ast_Node(ptr %a190, ptr %a189) - %t191 = load %S.ast.Node, ptr %a190 - %t192 = load i64, ptr %t181 - %t193 = add i64 %t192, 1 - call void @finch_arr_reserve(ptr %t180, i64 %t193, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t194 = load ptr, ptr %t180 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t192 - store %S.ast.Node %t191, ptr %t195 - store i64 %t193, ptr %t181 - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5061, label %ok5062 -panic5061: - call void @finch_panic(ptr @.str.3181, i64 2301, ptr @.str.3182) - unreachable -ok5062: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 10 - %t199 = load i64, ptr %a141 - %t200 = load { ptr, i64, i64 }, ptr %t198 - %t201 = extractvalue { ptr, i64, i64 } %t200, 1 - %t202 = icmp uge i64 %t199, %t201 - br i1 %t202, label %range5063, label %inrange5064 -range5063: - call void @finch_panic_index(ptr @.str.3183, i64 2301, i64 %t199, i64 %t201) - unreachable -inrange5064: - %t203 = extractvalue { ptr, i64, i64 } %t200, 0 - %t204 = getelementptr inbounds %S.gen.Scope, ptr %t203, i64 %t199 - %t205 = getelementptr inbounds %S.gen.Scope, ptr %t204, i32 0, i32 2 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i32 0, i32 1 - %t207 = load ptr, ptr %a1 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic5065, label %ok5066 -panic5065: - call void @finch_panic(ptr @.str.3184, i64 2301, ptr @.str.3185) - unreachable -ok5066: - %t209 = getelementptr inbounds %S.gen.Gen, ptr %t207, i32 0, i32 25 - %t210 = load i64, ptr %t209 - %t211 = load i64, ptr %t206 - %t212 = add i64 %t211, 1 - call void @finch_arr_reserve(ptr %t205, i64 %t212, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t213 = load ptr, ptr %t205 - %t214 = getelementptr inbounds i64, ptr %t213, i64 %t211 - store i64 %t210, ptr %t214 - store i64 %t212, ptr %t206 - br label %endif5039 -else5038: - %t215 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t215, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.3186, i64 5, i64 0 }, ptr %a217 - %t218 = call i32 @finch_str_eq(ptr %a216, ptr %a217) - %t219 = icmp ne i32 %t218, 0 - br label %logic.from5067 -logic.from5067: - br i1 %t219, label %logic.end5069, label %logic.rhs5068 -logic.rhs5068: - %t220 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t220, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3187, i64 8, i64 0 }, ptr %a222 - %t223 = call i32 @finch_str_eq(ptr %a221, ptr %a222) - %t224 = icmp ne i32 %t223, 0 - br label %logic.rend5070 -logic.rend5070: - br label %logic.end5069 -logic.end5069: - %t225 = phi i1 [ true, %logic.from5067 ], [ %t224, %logic.rend5070 ] - br i1 %t225, label %then5071, label %else5072 -then5071: - %t226 = load ptr, ptr %a1 - %t227 = icmp eq ptr %t226, null - br i1 %t227, label %panic5074, label %ok5075 -panic5074: - call void @finch_panic(ptr @.str.3188, i64 2303, ptr @.str.3189) - unreachable -ok5075: - %t228 = getelementptr inbounds %S.gen.Gen, ptr %t226, i32 0, i32 46 - %t229 = load i64, ptr %t228 - %t230 = icmp sgt i64 %t229, 0 - br i1 %t230, label %then5076, label %endif5078 -then5076: - %t231 = load ptr, ptr %a1 - %t232 = load %S.ast.Node, ptr %a2 - %t233 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3190, i64 27, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - call void @finch.gen.fail(ptr %t231, %S.ast.Node %t232, { ptr, i64, i64 } %t237) - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_drop(ptr %a238) - br label %endif5078 -endif5078: - %t239 = load ptr, ptr %a1 - %t240 = icmp eq ptr %t239, null - br i1 %t240, label %panic5079, label %ok5080 -panic5079: - call void @finch_panic(ptr @.str.3191, i64 2306, ptr @.str.3192) - unreachable -ok5080: - %t241 = getelementptr inbounds %S.gen.Gen, ptr %t239, i32 0, i32 12 - %t242 = getelementptr inbounds { ptr, i64, i64 }, ptr %t241, i32 0, i32 1 - %t243 = load i64, ptr %t242 - %t244 = icmp eq i64 %t243, 0 - br i1 %t244, label %then5081, label %endif5083 -then5081: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t247, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3193, i64 31, i64 0 }, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.fail(ptr %t245, %S.ast.Node %t246, { ptr, i64, i64 } %t251) - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_drop(ptr %a252) - br label %endif5083 -endif5083: - %t253 = load ptr, ptr %a1 - %t254 = icmp eq ptr %t253, null - br i1 %t254, label %panic5084, label %ok5085 -panic5084: - call void @finch_panic(ptr @.str.3194, i64 2309, ptr @.str.3195) - unreachable -ok5085: - %t255 = getelementptr inbounds %S.gen.Gen, ptr %t253, i32 0, i32 12 - %t256 = load ptr, ptr %a1 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic5086, label %ok5087 -panic5086: - call void @finch_panic(ptr @.str.3196, i64 2309, ptr @.str.3197) - unreachable -ok5087: - %t258 = getelementptr inbounds %S.gen.Gen, ptr %t256, i32 0, i32 12 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load i64, ptr %t259 - %t261 = sub i64 %t260, 1 - %t262 = load { ptr, i64, i64 }, ptr %t255 - %t263 = extractvalue { ptr, i64, i64 } %t262, 1 - %t264 = icmp uge i64 %t261, %t263 - br i1 %t264, label %range5088, label %inrange5089 -range5088: - call void @finch_panic_index(ptr @.str.3198, i64 2309, i64 %t261, i64 %t263) - unreachable -inrange5089: - %t265 = extractvalue { ptr, i64, i64 } %t262, 0 - %t266 = getelementptr inbounds %S.gen.Loop, ptr %t265, i64 %t261 - %t267 = load %S.gen.Loop, ptr %t266 - store %S.gen.Loop %t267, ptr %a268 - call void @finch.copy.S_gen_Loop(ptr %a269, ptr %a268) - %t270 = load %S.gen.Loop, ptr %a269 - store %S.gen.Loop %t270, ptr %a271 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 3 - %t274 = load i64, ptr %t273 - call void @finch.gen.dropPending(ptr %t272, i64 %t274) - %t275 = load ptr, ptr %a1 - %t276 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 2 - %t277 = load i64, ptr %t276 - call void @finch.gen.unwind(ptr %t275, i64 %t277) - %t278 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.3199, i64 5, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - br i1 %t282, label %then5090, label %else5091 -then5090: - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - call void @finch.gen.br(ptr %t283, { ptr, i64, i64 } %t285) - br label %endif5092 -else5091: - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Loop, ptr %a271, i32 0, i32 0 - %t288 = load { ptr, i64, i64 }, ptr %t287 - call void @finch.gen.br(ptr %t286, { ptr, i64, i64 } %t288) - br label %endif5092 -endif5092: - call void @finch.drop.S_gen_Loop(ptr %a271) - br label %endif5073 -else5072: - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Node, ptr %a2 - %t291 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3200, i64 18, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - call void @finch.gen.fail(ptr %t289, %S.ast.Node %t290, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - br label %endif5073 -endif5073: - br label %endif5039 -endif5039: - br label %endif5036 -endif5036: - br label %endif5033 -endif5033: - br label %endif5030 -endif5030: - br label %endif5027 -endif5027: - br label %endif5024 -endif5024: - br label %endif5021 -endif5021: - br label %endif5009 -endif5009: - br label %endif5006 -endif5006: - br label %endif5003 -endif5003: - br label %endif5000 -endif5000: - call void @finch_str_drop(ptr %a18) - 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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca %S.gen.Val, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.gen.Val, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 6 - %t4 = load i1, ptr %t3 - %t5 = xor i1 %t4, true - br i1 %t5, label %then5093, label %endif5095 -then5093: - %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 %range5096, label %inrange5097 -range5096: - call void @finch_panic_index(ptr @.str.3201, i64 2324, i64 0, i64 %t9) - unreachable -inrange5097: - %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.3202, 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 %then5098, label %endif5100 -then5098: - %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 %range5101, label %inrange5102 -range5101: - call void @finch_panic_index(ptr @.str.3203, i64 2326, i64 0, i64 %t26) - unreachable -inrange5102: - %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.3204, i64 46, i64 0 }) - br label %endif5100 -endif5100: - %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.3205, 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 %then5103, label %endif5105 -then5103: - %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 %range5106, label %inrange5107 -range5106: - call void @finch_panic_index(ptr @.str.3206, i64 2329, i64 0, i64 %t41) - unreachable -inrange5107: - %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.3207, 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.3208, i64 7, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t45, { ptr, i64, i64 } %t56) - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - br label %endif5105 -endif5105: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Val, ptr %a15, i32 0, i32 1 - %t63 = load %S.ast.Type, ptr %t62 - %t64 = load ptr, ptr %a1 - %t65 = load %S.gen.Val, ptr %a15 - %t66 = call { ptr, i64, i64 } @finch.gen.own(ptr %t64, %S.gen.Val %t65) - %t67 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t63, { ptr, i64, i64 } %t66, i1 false, i1 true) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - store { ptr, i64, i64 } %t67, ptr %a69 - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_gen_Val(ptr %a15) - ret void -endif5095: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = call %S.ast.Type @finch.gen.resolve(ptr %t70, %S.ast.Type %t72, %S.ast.Node %t73) - store %S.ast.Type %t74, ptr %a75 - %t76 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = load i64, ptr %t77 - %t79 = icmp eq i64 %t78, 0 - br i1 %t79, label %then5108, label %endif5110 -then5108: - %t80 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 0 - %t81 = load { ptr, i64, i64 }, ptr %t80 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.3209, i64 6, i64 0 }, ptr %a83 - %t84 = call i32 @finch_str_eq(ptr %a82, ptr %a83) - %t85 = icmp ne i32 %t84, 0 - br label %logic.from5111 -logic.from5111: - br i1 %t85, label %logic.rhs5112, label %logic.end5113 -logic.rhs5112: - %t86 = load ptr, ptr %a1 - %t87 = load %S.ast.Type, ptr %a75 - %t88 = call i1 @finch.gen.hasDefaults(ptr %t86, %S.ast.Type %t87) - br label %logic.rend5114 -logic.rend5114: - br label %logic.end5113 -logic.end5113: - %t89 = phi i1 [ false, %logic.from5111 ], [ %t88, %logic.rend5114 ] - br i1 %t89, label %then5115, label %endif5117 -then5115: - store { ptr, i64, i64 } zeroinitializer, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 3 - %t95 = load { ptr, i64, i64 }, ptr %t94 - %t96 = getelementptr inbounds %S.ast.Type, ptr %a75, i32 0, i32 2 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = call i64 @finch.gen.findStruct(ptr %t93, { ptr, i64, i64 } %t95, { ptr, i64, i64 } %t97) - %t99 = load { ptr, i64, i64 }, ptr %a90 - %t100 = load { ptr, i64, i64 }, ptr %a91 - %t101 = load %S.ast.Node, ptr %a2 - %t102 = call %S.gen.Val @finch.gen.construct(ptr %t92, i64 %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t100, %S.ast.Node %t101) - store %S.gen.Val %t102, ptr %a103 - %t104 = load ptr, ptr %a1 - %t105 = load %S.ast.Node, ptr %a2 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t107 = load { ptr, i64, i64 }, ptr %t106 - %t108 = load %S.ast.Type, ptr %a75 - %t109 = getelementptr inbounds %S.gen.Val, ptr %a103, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t104, %S.ast.Node %t105, { ptr, i64, i64 } %t107, %S.ast.Type %t108, { ptr, i64, i64 } %t110, i1 false, i1 true) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - call void @finch.drop.S_gen_Val(ptr %a103) - call void @finch.drop.arr_str(ptr %a91) - call void @finch.drop.arr_S_ast_Node(ptr %a90) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5117: - %t113 = load ptr, ptr %a1 - %t114 = load %S.ast.Node, ptr %a2 - %t115 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = load %S.ast.Type, ptr %a75 - %t118 = load %S.ast.Type, ptr %a75 - %t119 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t118) - %t120 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t113, %S.ast.Node %t114, { ptr, i64, i64 } %t116, %S.ast.Type %t117, { ptr, i64, i64 } %t119, i1 false, i1 true) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -endif5110: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a1 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = extractvalue { ptr, i64, i64 } %t126, 1 - %t128 = icmp uge i64 0, %t127 - br i1 %t128, label %range5118, label %inrange5119 -range5118: - call void @finch_panic_index(ptr @.str.3210, i64 2346, i64 0, i64 %t127) - unreachable -inrange5119: - %t129 = extractvalue { ptr, i64, i64 } %t126, 0 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 0 - %t131 = load %S.ast.Node, ptr %t130 - %t132 = load %S.ast.Type, ptr %a75 - %t133 = call %S.gen.Val @finch.gen.exprWant(ptr %t124, %S.ast.Node %t131, %S.ast.Type %t132) - %t134 = load %S.ast.Type, ptr %a75 - %t135 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t136 = load { ptr, i64, i64 }, ptr %t135 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 0, %t137 - br i1 %t138, label %range5120, label %inrange5121 -range5120: - call void @finch_panic_index(ptr @.str.3211, i64 2346, i64 0, i64 %t137) - unreachable -inrange5121: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds %S.ast.Node, ptr %t139, i64 0 - %t141 = load %S.ast.Node, ptr %t140 - %t142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t143 = load { ptr, i64, i64 }, ptr %t142 - store { ptr, i64, i64 } { ptr @.str.3212, i64 1, i64 0 }, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t147, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.3213, i64 1, i64 0 }, ptr %a150 - call void @finch_str_concat(ptr %a148, ptr %a149, ptr %a150) - store { ptr, i64, i64 } %t147, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a148 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t123, %S.gen.Val %t133, %S.ast.Type %t134, %S.ast.Node %t141, { ptr, i64, i64 } %t152) - store %S.gen.Val %t133, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_drop(ptr %a155) - store %S.gen.Val %t153, ptr %a156 - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a2 - %t159 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = load %S.ast.Type, ptr %a75 - %t162 = load ptr, ptr %a1 - %t163 = load %S.gen.Val, ptr %a156 - %t164 = call { ptr, i64, i64 } @finch.gen.own(ptr %t162, %S.gen.Val %t163) - %t165 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t160, %S.ast.Type %t161, { ptr, i64, i64 } %t164, i1 false, i1 true) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Val(ptr %a156) - call void @finch.drop.S_ast_Type(ptr %a75) - ret void -} - -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 %panic5122, label %ok5123 -panic5122: - call void @finch_panic(ptr @.str.3214, i64 2351, ptr @.str.3215) - unreachable -ok5123: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 16 - %t6 = load ptr, ptr %a1 - %t7 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t8 = load { ptr, i64, i64 }, ptr %t7 - %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 %range5124, label %inrange5125 -range5124: - call void @finch_panic_index(ptr @.str.3216, i64 2351, i64 %t11, i64 %t13) - unreachable -inrange5125: - %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 %then5126, label %endif5128 -then5126: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -endif5128: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic5129, label %ok5130 -panic5129: - call void @finch_panic(ptr @.str.3217, i64 2355, ptr @.str.3218) - unreachable -ok5130: - %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 %range5131, label %inrange5132 -range5131: - call void @finch_panic_index(ptr @.str.3219, i64 2355, i64 %t28, i64 %t30) - unreachable -inrange5132: - %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 %range5133, label %inrange5134 -range5133: - call void @finch_panic_index(ptr @.str.3220, i64 2355, i64 %t36, i64 %t38) - unreachable -inrange5134: - %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.cond5135 -each.cond5135: - %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.body5136, label %each.end5138 -each.body5136: - %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 %then5139, label %endif5141 -then5139: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 true -endif5141: - br label %each.step5137 -each.step5137: - %t56 = load i64, ptr %a43 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a43 - br label %each.cond5135 -each.end5138: - call void @finch.drop.S_gen_StructDef(ptr %a21) - ret i1 false -} - -define internal void @finch.drop.S_gen_Place(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Place, ptr %a, i32 0, i32 1 - call void @finch.drop.S_ast_Type(ptr %t2) - ret void -} - -define internal void @finch.gen.assignStmt(ptr %p0, %S.ast.Node %p1) { -entry: - %a1 = alloca ptr, align 16 - %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 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca %S.gen.Var, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %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 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca %S.ast.Type, align 16 - %a105 = alloca i1, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca i64, align 16 - %a122 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.gen.Var, align 16 - %a127 = alloca %S.ast.Type, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a141 = alloca %S.gen.Val, align 16 - %a152 = alloca %S.gen.Val, align 16 - %a158 = alloca i64, align 16 - %a164 = alloca %S.gen.Place, align 16 - %a179 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.gen.Val, align 16 - %a237 = alloca i64, align 16 - %a243 = alloca %S.gen.Place, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.gen.Val, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.gen.Val, align 16 - %a280 = alloca %S.gen.Val, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t4 = load { ptr, i64, i64 }, ptr %t3 - %t5 = extractvalue { ptr, i64, i64 } %t4, 1 - %t6 = icmp uge i64 0, %t5 - br i1 %t6, label %range5142, label %inrange5143 -range5142: - call void @finch_panic_index(ptr @.str.3221, i64 2364, i64 0, i64 %t5) - unreachable -inrange5143: - %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 %then5144, label %endif5146 -then5144: - %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.from5147 -logic.from5147: - br i1 %t25, label %logic.rhs5148, label %logic.end5149 -logic.rhs5148: - %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.3222, 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.rend5150 -logic.rend5150: - br label %logic.end5149 -logic.end5149: - %t32 = phi i1 [ false, %logic.from5147 ], [ %t31, %logic.rend5150 ] - br i1 %t32, label %then5151, label %endif5153 -then5151: - %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.3223, 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.3224, i64 18, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3225, i64 8, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.fail(ptr %t33, %S.ast.Node %t34, { ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_drop(ptr %a56) - br label %endif5153 -endif5153: - %t57 = load i64, ptr %a23 - %t58 = icmp sge i64 %t57, 0 - br label %logic.from5154 -logic.from5154: - br i1 %t58, label %logic.rhs5155, label %logic.end5156 -logic.rhs5155: - %t59 = load ptr, ptr %a1 - %t60 = load i64, ptr %a23 - %t61 = call %S.gen.Var @finch.gen.varAt(ptr %t59, i64 %t60) - %t62 = extractvalue %S.gen.Var %t61, 3 - store %S.gen.Var %t61, ptr %a63 - call void @finch.drop.S_gen_Var(ptr %a63) - br label %logic.rend5157 -logic.rend5157: - br label %logic.end5156 -logic.end5156: - %t64 = phi i1 [ false, %logic.from5154 ], [ %t62, %logic.rend5157 ] - br i1 %t64, label %then5158, label %endif5160 -then5158: - %t65 = load ptr, ptr %a1 - %t66 = load %S.ast.Node, ptr %a2 - %t67 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3226, i64 19, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.3227, i64 18, i64 0 }, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t71, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t65, %S.ast.Node %t66, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif5160 -endif5160: - br label %endif5146 -endif5146: - store { ptr, i64, i64 } { ptr @.str.3228, i64 9, i64 0 }, ptr %a78 - %t79 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3229, i64 3, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %then5161, label %endif5163 -then5161: - %t85 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3230, i64 1, i64 0 }, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3231, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - %t95 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t94, ptr %a78 - store { ptr, i64, i64 } %t95, ptr %a96 - call void @finch_str_drop(ptr %a96) - br label %endif5163 -endif5163: - %t97 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t98 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t98, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.3232, i64 1, i64 0 }, ptr %a100 - %t101 = call i32 @finch_str_eq(ptr %a99, ptr %a100) - %t102 = icmp ne i32 %t101, 0 - br i1 %t102, label %then5164, label %endif5166 -then5164: - %t103 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3233, i64 4, i64 0 }) - store %S.ast.Type %t103, ptr %a104 - store i1 false, ptr %a105 - %t106 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3234, i64 3, i64 0 }, ptr %a109 - %t110 = call i32 @finch_str_eq(ptr %a108, ptr %a109) - %t111 = icmp ne i32 %t110, 0 - br i1 %t111, label %then5167, label %endif5169 -then5167: - %t112 = load ptr, ptr %a1 - %t113 = load { ptr, i64, i64 }, ptr %a16 - %t114 = call i64 @finch.gen.lookup(ptr %t112, { ptr, i64, i64 } %t113) - store i64 %t114, ptr %a115 - %t116 = load i64, ptr %a115 - %t117 = icmp sge i64 %t116, 0 - br i1 %t117, label %then5170, label %endif5172 -then5170: - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a115 - %t120 = call %S.gen.Var @finch.gen.varAt(ptr %t118, i64 %t119) - %t121 = extractvalue %S.gen.Var %t120, 1 - store %S.ast.Type %t121, ptr %a122 - call void @finch.copy.S_ast_Type(ptr %a123, ptr %a122) - %t124 = load %S.ast.Type, ptr %a123 - store %S.gen.Var %t120, ptr %a125 - call void @finch.drop.S_gen_Var(ptr %a125) - %t126 = load %S.ast.Type, ptr %a104 - store %S.ast.Type %t124, ptr %a104 - store %S.ast.Type %t126, ptr %a127 - call void @finch.drop.S_ast_Type(ptr %a127) - store i1 true, ptr %a105 - br label %endif5172 -endif5172: - br label %endif5169 -endif5169: - store %S.gen.Val zeroinitializer, ptr %a128 - %t129 = load i1, ptr %a105 - br i1 %t129, label %then5173, label %else5174 -then5173: - %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 %range5176, label %inrange5177 -range5176: - call void @finch_panic_index(ptr @.str.3235, i64 2392, i64 1, i64 %t133) - unreachable -inrange5177: - %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 = load %S.ast.Type, ptr %a104 - %t139 = call %S.gen.Val @finch.gen.exprWant(ptr %t130, %S.ast.Node %t137, %S.ast.Type %t138) - %t140 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t139, ptr %a128 - store %S.gen.Val %t140, ptr %a141 - call void @finch.drop.S_gen_Val(ptr %a141) - br label %endif5175 -else5174: - %t142 = load ptr, ptr %a1 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load { ptr, i64, i64 }, ptr %t143 - %t145 = extractvalue { ptr, i64, i64 } %t144, 1 - %t146 = icmp uge i64 1, %t145 - br i1 %t146, label %range5178, label %inrange5179 -range5178: - call void @finch_panic_index(ptr @.str.3236, i64 2394, i64 1, i64 %t145) - unreachable -inrange5179: - %t147 = extractvalue { ptr, i64, i64 } %t144, 0 - %t148 = getelementptr inbounds %S.ast.Node, ptr %t147, i64 1 - %t149 = load %S.ast.Node, ptr %t148 - %t150 = call %S.gen.Val @finch.gen.expr(ptr %t142, %S.ast.Node %t149) - %t151 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t150, ptr %a128 - store %S.gen.Val %t151, ptr %a152 - call void @finch.drop.S_gen_Val(ptr %a152) - br label %endif5175 -endif5175: - %t153 = load ptr, ptr %a1 - %t154 = icmp eq ptr %t153, null - br i1 %t154, label %panic5180, label %ok5181 -panic5180: - call void @finch_panic(ptr @.str.3237, i64 2396, ptr @.str.3238) - unreachable -ok5181: - %t155 = getelementptr inbounds %S.gen.Gen, ptr %t153, i32 0, i32 11 - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %t155, i32 0, i32 1 - %t157 = load i64, ptr %t156 - store i64 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t159, %S.gen.Val %t160) - %t161 = load ptr, ptr %a1 - %t162 = load %S.ast.Node, ptr %a13 - %t163 = call %S.gen.Place @finch.gen.place(ptr %t161, %S.ast.Node %t162, i1 true) - store %S.gen.Place %t163, ptr %a164 - %t165 = load ptr, ptr %a1 - %t166 = load %S.gen.Val, ptr %a128 - %t167 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t168 = load %S.ast.Type, ptr %t167 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = load { ptr, i64, i64 }, ptr %t169 - %t171 = extractvalue { ptr, i64, i64 } %t170, 1 - %t172 = icmp uge i64 1, %t171 - br i1 %t172, label %range5182, label %inrange5183 -range5182: - call void @finch_panic_index(ptr @.str.3239, i64 2399, i64 1, i64 %t171) - unreachable -inrange5183: - %t173 = extractvalue { ptr, i64, i64 } %t170, 0 - %t174 = getelementptr inbounds %S.ast.Node, ptr %t173, i64 1 - %t175 = load %S.ast.Node, ptr %t174 - %t176 = load { ptr, i64, i64 }, ptr %a78 - %t177 = call %S.gen.Val @finch.gen.coerce(ptr %t165, %S.gen.Val %t166, %S.ast.Type %t168, %S.ast.Node %t175, { ptr, i64, i64 } %t176) - %t178 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t177, ptr %a128 - store %S.gen.Val %t178, ptr %a179 - call void @finch.drop.S_gen_Val(ptr %a179) - %t180 = load ptr, ptr %a1 - %t181 = load %S.gen.Val, ptr %a128 - %t182 = call { ptr, i64, i64 } @finch.gen.own(ptr %t180, %S.gen.Val %t181) - store { ptr, i64, i64 } %t182, ptr %a183 - %t184 = load ptr, ptr %a1 - %t185 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t186 = load %S.ast.Type, ptr %t185 - %t187 = call i1 @finch.gen.owning(ptr %t184, %S.ast.Type %t186) - br i1 %t187, label %then5184, label %else5185 -then5184: - %t188 = load ptr, ptr %a1 - %t189 = load ptr, ptr %a1 - %t190 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t191 = load %S.ast.Type, ptr %t190 - %t192 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t189, %S.ast.Type %t191) - %t193 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - %t195 = call { ptr, i64, i64 } @finch.gen.load(ptr %t188, { ptr, i64, i64 } %t192, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t195, ptr %a197 - %t198 = load ptr, ptr %a1 - %t199 = load ptr, ptr %a1 - %t200 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t201 = load %S.ast.Type, ptr %t200 - %t202 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t199, %S.ast.Type %t201) - %t203 = load { ptr, i64, i64 }, ptr %a183 - %t204 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t205 = load { ptr, i64, i64 }, ptr %t204 - call void @finch.gen.store(ptr %t198, { ptr, i64, i64 } %t202, { ptr, i64, i64 } %t203, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a197 - %t209 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t210 = load %S.ast.Type, ptr %t209 - call void @finch.gen.dropValue(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t210) - call void @finch_str_drop(ptr %a197) - br label %endif5186 -else5185: - %t211 = load ptr, ptr %a1 - %t212 = load ptr, ptr %a1 - %t213 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 1 - %t214 = load %S.ast.Type, ptr %t213 - %t215 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t212, %S.ast.Type %t214) - %t216 = load { ptr, i64, i64 }, ptr %a183 - %t217 = getelementptr inbounds %S.gen.Place, ptr %a164, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - call void @finch.gen.store(ptr %t211, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - br label %endif5186 -endif5186: - %t220 = load ptr, ptr %a1 - %t221 = load i64, ptr %a158 - call void @finch.gen.heldEnd(ptr %t220, i64 %t221) - call void @finch_str_drop(ptr %a183) - call void @finch.drop.S_gen_Place(ptr %a164) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Type(ptr %a104) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -endif5166: - %t222 = load ptr, ptr %a1 - %t223 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t224 = load { ptr, i64, i64 }, ptr %t223 - %t225 = extractvalue { ptr, i64, i64 } %t224, 1 - %t226 = icmp uge i64 1, %t225 - br i1 %t226, label %range5187, label %inrange5188 -range5187: - call void @finch_panic_index(ptr @.str.3240, i64 2411, i64 1, i64 %t225) - unreachable -inrange5188: - %t227 = extractvalue { ptr, i64, i64 } %t224, 0 - %t228 = getelementptr inbounds %S.ast.Node, ptr %t227, i64 1 - %t229 = load %S.ast.Node, ptr %t228 - %t230 = call %S.gen.Val @finch.gen.expr(ptr %t222, %S.ast.Node %t229) - store %S.gen.Val %t230, ptr %a231 - %t232 = load ptr, ptr %a1 - %t233 = icmp eq ptr %t232, null - br i1 %t233, label %panic5189, label %ok5190 -panic5189: - call void @finch_panic(ptr @.str.3241, i64 2412, ptr @.str.3242) - unreachable -ok5190: - %t234 = getelementptr inbounds %S.gen.Gen, ptr %t232, i32 0, i32 11 - %t235 = getelementptr inbounds { ptr, i64, i64 }, ptr %t234, i32 0, i32 1 - %t236 = load i64, ptr %t235 - store i64 %t236, ptr %a237 - %t238 = load ptr, ptr %a1 - %t239 = load %S.gen.Val, ptr %a231 - call void @finch.gen.hold(ptr %t238, %S.gen.Val %t239) - %t240 = load ptr, ptr %a1 - %t241 = load %S.ast.Node, ptr %a13 - %t242 = call %S.gen.Place @finch.gen.place(ptr %t240, %S.ast.Node %t241, i1 true) - store %S.gen.Place %t242, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load ptr, ptr %a1 - %t246 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t245, %S.ast.Type %t247) - %t249 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.load(ptr %t244, { ptr, i64, i64 } %t248, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t251, 0 - %t254 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t255 = load %S.ast.Type, ptr %t254 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t253, %S.ast.Type %t258, 1 - store %S.gen.Val %t259, ptr %a260 - %t261 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t262 = load { ptr, i64, i64 }, ptr %t261 - store { ptr, i64, i64 } %t262, ptr %a263 - call void @finch_str_sub(ptr %a264, ptr %a263, i64 0, i64 1, ptr @.str.3243, i64 2416) - %t265 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t265, ptr %a266 - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load { ptr, i64, i64 }, ptr %a266 - %t270 = load %S.gen.Val, ptr %a260 - %t271 = load %S.gen.Val, ptr %a231 - %t272 = load %S.ast.Node, ptr %a2 - %t273 = call %S.gen.Val @finch.gen.arith(ptr %t268, { ptr, i64, i64 } %t269, %S.gen.Val %t270, %S.gen.Val %t271, %S.ast.Node %t272) - %t274 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t275 = load %S.ast.Type, ptr %t274 - %t276 = load %S.ast.Node, ptr %a2 - %t277 = load { ptr, i64, i64 }, ptr %a78 - %t278 = call %S.gen.Val @finch.gen.coerce(ptr %t267, %S.gen.Val %t273, %S.ast.Type %t275, %S.ast.Node %t276, { ptr, i64, i64 } %t277) - store %S.gen.Val %t273, ptr %a279 - call void @finch.drop.S_gen_Val(ptr %a279) - store %S.gen.Val %t278, ptr %a280 - %t281 = load ptr, ptr %a1 - %t282 = load %S.gen.Val, ptr %a280 - %t283 = call { ptr, i64, i64 } @finch.gen.own(ptr %t281, %S.gen.Val %t282) - store { ptr, i64, i64 } %t283, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = load ptr, ptr %a1 - %t287 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t288 = load %S.ast.Type, ptr %t287 - %t289 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t286, %S.ast.Type %t288) - %t290 = load { ptr, i64, i64 }, ptr %a284 - %t291 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - call void @finch.gen.store(ptr %t285, { ptr, i64, i64 } %t289, { ptr, i64, i64 } %t290, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load ptr, ptr %a1 - %t295 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t296 = load %S.ast.Type, ptr %t295 - %t297 = call i1 @finch.gen.owning(ptr %t294, %S.ast.Type %t296) - br i1 %t297, label %then5191, label %endif5193 -then5191: - %t298 = load ptr, ptr %a1 - %t299 = getelementptr inbounds %S.gen.Val, ptr %a260, i32 0, i32 0 - %t300 = load { ptr, i64, i64 }, ptr %t299 - %t301 = getelementptr inbounds %S.gen.Place, ptr %a243, i32 0, i32 1 - %t302 = load %S.ast.Type, ptr %t301 - call void @finch.gen.dropValue(ptr %t298, { ptr, i64, i64 } %t300, %S.ast.Type %t302) - br label %endif5193 -endif5193: - %t303 = load ptr, ptr %a1 - %t304 = load i64, ptr %a237 - call void @finch.gen.heldEnd(ptr %t303, i64 %t304) - call void @finch_str_drop(ptr %a284) - call void @finch.drop.S_gen_Val(ptr %a280) - call void @finch_str_drop(ptr %a266) - call void @finch.drop.S_gen_Val(ptr %a260) - call void @finch.drop.S_gen_Place(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a231) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a16) - call void @finch.drop.S_ast_Node(ptr %a13) - ret void -} - -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 - %a10 = alloca %S.gen.Val, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load ptr, ptr %a1 - %t5 = load %S.ast.Node, ptr %a2 - %t6 = call %S.gen.Val @finch.gen.expr(ptr %t4, %S.ast.Node %t5) - %t7 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3244, 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.3245, i64 11, i64 0 }) - store %S.gen.Val %t6, ptr %a10 - call void @finch.drop.S_gen_Val(ptr %a10) - store %S.ast.Type %t7, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - %t12 = extractvalue %S.gen.Val %t9, 0 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store %S.gen.Val %t9, ptr %a16 - call void @finch.drop.S_gen_Val(ptr %a16) - ret { ptr, i64, i64 } %t15 -} - -define internal void @finch.gen.ifStmt(ptr %p0, %S.ast.Node %p1) { -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 %range5194, label %inrange5195 -range5194: - call void @finch_panic_index(ptr @.str.3246, i64 2431, i64 0, i64 %t6) - unreachable -inrange5195: - %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.3247, 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.3248, 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.3249, 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 %then5196, label %else5197 -then5196: - %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 %endif5198 -else5197: - %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 %endif5198 -endif5198: - %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 %range5199, label %inrange5200 -range5199: - call void @finch_panic_index(ptr @.str.3250, i64 2441, i64 1, i64 %t39) - unreachable -inrange5200: - %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 %panic5201, label %ok5202 -panic5201: - call void @finch_panic(ptr @.str.3251, i64 2442, ptr @.str.3252) - unreachable -ok5202: - %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 %then5203, label %else5204 -then5203: - %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 %range5206, label %inrange5207 -range5206: - call void @finch_panic_index(ptr @.str.3253, i64 2446, i64 2, i64 %t61) - unreachable -inrange5207: - %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.from5208 -logic.from5208: - br i1 %t66, label %logic.end5210, label %logic.rhs5209 -logic.rhs5209: - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic5211, label %ok5212 -panic5211: - call void @finch_panic(ptr @.str.3254, i64 2447, ptr @.str.3255) - unreachable -ok5212: - %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.rend5213 -logic.rend5213: - br label %logic.end5210 -logic.end5210: - %t72 = phi i1 [ true, %logic.from5208 ], [ %t71, %logic.rend5213 ] - 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 %endif5205 -else5204: - store i1 true, ptr %a49 - br label %endif5205 -endif5205: - %t75 = load i1, ptr %a49 - br i1 %t75, label %then5214, label %endif5216 -then5214: - %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 %endif5216 -endif5216: - call void @finch_str_drop(ptr %a21) - call void @finch_str_drop(ptr %a18) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a12) - ret void -} - -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 - %a99 = alloca i1, align 16 - %a118 = alloca %S.gen.Loop, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t3, { ptr, i64, i64 } { ptr @.str.3256, 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.3257, 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.3258, 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 %range5217, label %inrange5218 -range5217: - call void @finch_panic_index(ptr @.str.3259, i64 2463, i64 0, i64 %t18) - unreachable -inrange5218: - %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.3260, 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.from5219 -logic.from5219: - br i1 %t27, label %logic.rhs5220, label %logic.end5221 -logic.rhs5220: - %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 %range5222, label %inrange5223 -range5222: - call void @finch_panic_index(ptr @.str.3261, i64 2463, i64 0, i64 %t30) - unreachable -inrange5223: - %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.3262, 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.rend5224 -logic.rend5224: - br label %logic.end5221 -logic.end5221: - %t40 = phi i1 [ false, %logic.from5219 ], [ %t39, %logic.rend5224 ] - 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 %range5225, label %inrange5226 -range5225: - call void @finch_panic_index(ptr @.str.3263, i64 2464, i64 0, i64 %t45) - unreachable -inrange5226: - %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 %then5227, label %else5228 -then5227: - %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 %endif5229 -else5228: - %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 %endif5229 -endif5229: - %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 %panic5230, label %ok5231 -panic5230: - call void @finch_panic(ptr @.str.3264, i64 2471, ptr @.str.3265) - unreachable -ok5231: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 12 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t65, ptr %a66 - 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 %panic5232, label %ok5233 -panic5232: - call void @finch_panic(ptr @.str.3266, i64 2471, ptr @.str.3267) - unreachable -ok5233: - %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 ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic5234, label %ok5235 -panic5234: - call void @finch_panic(ptr @.str.3268, i64 2471, ptr @.str.3269) - unreachable -ok5235: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 11 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = insertvalue %S.gen.Loop %t80, i64 %t85, 3 - %t87 = load i64, ptr %t64 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t63, i64 %t88, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t63 - %t90 = getelementptr inbounds %S.gen.Loop, ptr %t89, i64 %t87 - store %S.gen.Loop %t86, ptr %t90 - store i64 %t88, ptr %t64 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 1, %t93 - br i1 %t94, label %range5236, label %inrange5237 -range5236: - call void @finch_panic_index(ptr @.str.3270, i64 2472, i64 1, i64 %t93) - unreachable -inrange5237: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 1 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i1 @finch.gen.countBreaks(%S.ast.Node %t97) - store i1 %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t102 = load { ptr, i64, i64 }, ptr %t101 - %t103 = extractvalue { ptr, i64, i64 } %t102, 1 - %t104 = icmp uge i64 1, %t103 - br i1 %t104, label %range5238, label %inrange5239 -range5238: - call void @finch_panic_index(ptr @.str.3271, i64 2473, i64 1, i64 %t103) - unreachable -inrange5239: - %t105 = extractvalue { ptr, i64, i64 } %t102, 0 - %t106 = getelementptr inbounds %S.ast.Node, ptr %t105, i64 1 - %t107 = load %S.ast.Node, ptr %t106 - call void @finch.gen.block(ptr %t100, %S.ast.Node %t107, i1 true) - %t108 = load ptr, ptr %a1 - %t109 = icmp eq ptr %t108, null - br i1 %t109, label %panic5240, label %ok5241 -panic5240: - call void @finch_panic(ptr @.str.3272, i64 2474, ptr @.str.3273) - unreachable -ok5241: - %t110 = getelementptr inbounds %S.gen.Gen, ptr %t108, i32 0, i32 12 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i32 0, i32 1 - %t112 = load i64, ptr %t111 - %t113 = icmp eq i64 %t112, 0 - br i1 %t113, label %panic5242, label %ok5243 -panic5242: - call void @finch_panic(ptr @.str.3274, i64 2474, ptr @.str.3275) - unreachable -ok5243: - %t114 = sub i64 %t112, 1 - %t115 = load ptr, ptr %t110 - %t116 = getelementptr inbounds %S.gen.Loop, ptr %t115, i64 %t114 - %t117 = load %S.gen.Loop, ptr %t116 - store i64 %t114, ptr %t111 - store %S.gen.Loop %t117, ptr %a118 - call void @finch.drop.S_gen_Loop(ptr %a118) - %t119 = load ptr, ptr %a1 - %t120 = load { ptr, i64, i64 }, ptr %a5 - call void @finch.gen.br(ptr %t119, { ptr, i64, i64 } %t120) - %t121 = load i1, ptr %a41 - %t122 = xor i1 %t121, true - br label %logic.from5244 -logic.from5244: - br i1 %t122, label %logic.end5246, label %logic.rhs5245 -logic.rhs5245: - %t123 = load i1, ptr %a99 - br label %logic.rend5247 -logic.rend5247: - br label %logic.end5246 -logic.end5246: - %t124 = phi i1 [ true, %logic.from5244 ], [ %t123, %logic.rend5247 ] - br i1 %t124, label %then5248, label %endif5250 -then5248: - %t125 = load ptr, ptr %a1 - %t126 = load { ptr, i64, i64 }, ptr %a11 - call void @finch.gen.label(ptr %t125, { ptr, i64, i64 } %t126) - br label %endif5250 -endif5250: - call void @finch_str_drop(ptr %a51) - call void @finch_str_drop(ptr %a11) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a5) - ret void -} - -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.3276, 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 %then5251, label %endif5253 -then5251: - ret i1 true -endif5253: - %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.3277, 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.from5254 -logic.from5254: - br i1 %t13, label %logic.end5256, label %logic.rhs5255 -logic.rhs5255: - %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.3278, 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.rend5257 -logic.rend5257: - br label %logic.end5256 -logic.end5256: - %t20 = phi i1 [ true, %logic.from5254 ], [ %t19, %logic.rend5257 ] - br label %logic.from5258 -logic.from5258: - br i1 %t20, label %logic.end5260, label %logic.rhs5259 -logic.rhs5259: - %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.3279, 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.rend5261 -logic.rend5261: - br label %logic.end5260 -logic.end5260: - %t27 = phi i1 [ true, %logic.from5258 ], [ %t26, %logic.rend5261 ] - br i1 %t27, label %then5262, label %endif5264 -then5262: - ret i1 false -endif5264: - %t28 = getelementptr inbounds %S.ast.Node, ptr %a1, i32 0, i32 9 - store i64 0, ptr %a29 - br label %each.cond5265 -each.cond5265: - %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.body5266, label %each.end5268 -each.body5266: - %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 %then5269, label %endif5271 -then5269: - ret i1 true -endif5271: - br label %each.step5267 -each.step5267: - %t40 = load i64, ptr %a29 - %t41 = add i64 %t40, 1 - store i64 %t41, ptr %a29 - br label %each.cond5265 -each.end5268: - 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 - %a22 = alloca %S.gen.Val, align 16 - %a23 = alloca %S.ast.Type, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca %S.gen.Val, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.gen.Val, align 16 - %a50 = alloca %S.ast.Type, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca %S.gen.Val, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca %S.gen.Loop, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5272, label %inrange5273 -range5272: - call void @finch_panic_index(ptr @.str.3280, i64 2498, i64 0, i64 %t7) - unreachable -inrange5273: - %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.3281, 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 %range5274, label %inrange5275 -range5274: - call void @finch_panic_index(ptr @.str.3282, i64 2498, i64 0, i64 %t16) - unreachable -inrange5275: - %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.3283, i64 20, i64 0 }) - store %S.gen.Val %t12, ptr %a22 - call void @finch.drop.S_gen_Val(ptr %a22) - store %S.ast.Type %t13, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - %t24 = extractvalue %S.gen.Val %t21, 0 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - store %S.gen.Val %t21, ptr %a28 - call void @finch.drop.S_gen_Val(ptr %a28) - store { ptr, i64, i64 } %t27, ptr %a29 - %t30 = load ptr, ptr %a1 - %t31 = load ptr, ptr %a1 - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t33 = load { ptr, i64, i64 }, ptr %t32 - %t34 = extractvalue { ptr, i64, i64 } %t33, 1 - %t35 = icmp uge i64 1, %t34 - br i1 %t35, label %range5276, label %inrange5277 -range5276: - call void @finch_panic_index(ptr @.str.3284, i64 2499, i64 1, i64 %t34) - unreachable -inrange5277: - %t36 = extractvalue { ptr, i64, i64 } %t33, 0 - %t37 = getelementptr inbounds %S.ast.Node, ptr %t36, i64 1 - %t38 = load %S.ast.Node, ptr %t37 - %t39 = call %S.gen.Val @finch.gen.expr(ptr %t31, %S.ast.Node %t38) - %t40 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3285, i64 3, i64 0 }) - %t41 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t42 = load { ptr, i64, i64 }, ptr %t41 - %t43 = extractvalue { ptr, i64, i64 } %t42, 1 - %t44 = icmp uge i64 1, %t43 - br i1 %t44, label %range5278, label %inrange5279 -range5278: - call void @finch_panic_index(ptr @.str.3286, i64 2499, i64 1, i64 %t43) - unreachable -inrange5279: - %t45 = extractvalue { ptr, i64, i64 } %t42, 0 - %t46 = getelementptr inbounds %S.ast.Node, ptr %t45, i64 1 - %t47 = load %S.ast.Node, ptr %t46 - %t48 = call %S.gen.Val @finch.gen.coerce(ptr %t30, %S.gen.Val %t39, %S.ast.Type %t40, %S.ast.Node %t47, { ptr, i64, i64 } { ptr @.str.3287, i64 18, i64 0 }) - store %S.gen.Val %t39, ptr %a49 - call void @finch.drop.S_gen_Val(ptr %a49) - store %S.ast.Type %t40, ptr %a50 - call void @finch.drop.S_ast_Type(ptr %a50) - %t51 = extractvalue %S.gen.Val %t48, 0 - store { ptr, i64, i64 } %t51, ptr %a52 - call void @finch_str_copy(ptr %a53, ptr %a52) - %t54 = load { ptr, i64, i64 }, ptr %a53 - store %S.gen.Val %t48, ptr %a55 - call void @finch.drop.S_gen_Val(ptr %a55) - store { ptr, i64, i64 } %t54, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t57) - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Node, ptr %a2 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3288, i64 3, i64 0 }) - %t63 = load { ptr, i64, i64 }, ptr %a29 - %t64 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t58, %S.ast.Node %t59, { ptr, i64, i64 } %t61, %S.ast.Type %t62, { ptr, i64, i64 } %t63, i1 true, i1 false) - store %S.ast.Type %t62, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - store { ptr, i64, i64 } %t64, ptr %a66 - %t67 = load ptr, ptr %a1 - %t68 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t67, { ptr, i64, i64 } { ptr @.str.3289, i64 8, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t70, { ptr, i64, i64 } { ptr @.str.3290, i64 8, i64 0 }) - store { ptr, i64, i64 } %t71, ptr %a72 - %t73 = load ptr, ptr %a1 - %t74 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t73, { ptr, i64, i64 } { ptr @.str.3291, i64 8, i64 0 }) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t76, { ptr, i64, i64 } { ptr @.str.3292, i64 7, i64 0 }) - store { ptr, i64, i64 } %t77, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t79, { ptr, i64, i64 } %t80) - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.label(ptr %t81, { ptr, i64, i64 } %t82) - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a66 - %t85 = call { ptr, i64, i64 } @finch.gen.load(ptr %t83, { ptr, i64, i64 } { ptr @.str.3293, i64 3, i64 0 }, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.3294, i64 13, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.3295, i64 2, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - %t104 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a105 - call void @finch_str_drop(ptr %a105) - store { ptr, i64, i64 } %t104, ptr %a106 - %t107 = load ptr, ptr %a1 - %t108 = load { ptr, i64, i64 }, ptr %a106 - %t109 = load { ptr, i64, i64 }, ptr %a72 - %t110 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.condBr(ptr %t107, { ptr, i64, i64 } %t108, { ptr, i64, i64 } %t109, { ptr, i64, i64 } %t110) - %t111 = load ptr, ptr %a1 - %t112 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.label(ptr %t111, { ptr, i64, i64 } %t112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic5280, label %ok5281 -panic5280: - call void @finch_panic(ptr @.str.3296, i64 2512, ptr @.str.3297) - unreachable -ok5281: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 12 - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i32 0, i32 1 - %t117 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_copy(ptr %a119, ptr %a118) - %t120 = load { ptr, i64, i64 }, ptr %a119 - %t121 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t120, 0 - %t122 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_copy(ptr %a124, ptr %a123) - %t125 = load { ptr, i64, i64 }, ptr %a124 - %t126 = insertvalue %S.gen.Loop %t121, { ptr, i64, i64 } %t125, 1 - %t127 = load ptr, ptr %a1 - %t128 = icmp eq ptr %t127, null - br i1 %t128, label %panic5282, label %ok5283 -panic5282: - call void @finch_panic(ptr @.str.3298, i64 2512, ptr @.str.3299) - unreachable -ok5283: - %t129 = getelementptr inbounds %S.gen.Gen, ptr %t127, i32 0, i32 10 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = insertvalue %S.gen.Loop %t126, i64 %t131, 2 - %t133 = load ptr, ptr %a1 - %t134 = icmp eq ptr %t133, null - br i1 %t134, label %panic5284, label %ok5285 -panic5284: - call void @finch_panic(ptr @.str.3300, i64 2512, ptr @.str.3301) - unreachable -ok5285: - %t135 = getelementptr inbounds %S.gen.Gen, ptr %t133, i32 0, i32 11 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t135, i32 0, i32 1 - %t137 = load i64, ptr %t136 - %t138 = insertvalue %S.gen.Loop %t132, i64 %t137, 3 - %t139 = load i64, ptr %t116 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t115, i64 %t140, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t115 - %t142 = getelementptr inbounds %S.gen.Loop, ptr %t141, i64 %t139 - store %S.gen.Loop %t138, ptr %t142 - store i64 %t140, ptr %t116 - %t143 = load ptr, ptr %a1 - %t144 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 2, %t146 - br i1 %t147, label %range5286, label %inrange5287 -range5286: - call void @finch_panic_index(ptr @.str.3302, i64 2513, i64 2, i64 %t146) - unreachable -inrange5287: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds %S.ast.Node, ptr %t148, i64 2 - %t150 = load %S.ast.Node, ptr %t149 - call void @finch.gen.block(ptr %t143, %S.ast.Node %t150, i1 true) - %t151 = load ptr, ptr %a1 - %t152 = icmp eq ptr %t151, null - br i1 %t152, label %panic5288, label %ok5289 -panic5288: - call void @finch_panic(ptr @.str.3303, i64 2514, ptr @.str.3304) - unreachable -ok5289: - %t153 = getelementptr inbounds %S.gen.Gen, ptr %t151, i32 0, i32 12 - %t154 = getelementptr inbounds { ptr, i64, i64 }, ptr %t153, i32 0, i32 1 - %t155 = load i64, ptr %t154 - %t156 = icmp eq i64 %t155, 0 - br i1 %t156, label %panic5290, label %ok5291 -panic5290: - call void @finch_panic(ptr @.str.3305, i64 2514, ptr @.str.3306) - unreachable -ok5291: - %t157 = sub i64 %t155, 1 - %t158 = load ptr, ptr %t153 - %t159 = getelementptr inbounds %S.gen.Loop, ptr %t158, i64 %t157 - %t160 = load %S.gen.Loop, ptr %t159 - store i64 %t157, ptr %t154 - store %S.gen.Loop %t160, ptr %a161 - call void @finch.drop.S_gen_Loop(ptr %a161) - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.br(ptr %t162, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.label(ptr %t164, { ptr, i64, i64 } %t165) - %t166 = load ptr, ptr %a1 - %t167 = load { ptr, i64, i64 }, ptr %a66 - %t168 = call { ptr, i64, i64 } @finch.gen.load(ptr %t166, { ptr, i64, i64 } { ptr @.str.3307, i64 3, i64 0 }, { ptr, i64, i64 } %t167) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3309, i64 8, i64 0 }, ptr %a174 - store { ptr, i64, i64 } %t172, ptr %a175 - call void @finch_str_concat(ptr %a173, ptr %a174, ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.3310, i64 3, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call { ptr, i64, i64 } @finch.gen.op(ptr %t171, { ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.store(ptr %t170, { ptr, i64, i64 } { ptr @.str.3308, i64 3, i64 0 }, { ptr, i64, i64 } %t182, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = load { ptr, i64, i64 }, ptr %a69 - call void @finch.gen.br(ptr %t186, { ptr, i64, i64 } %t187) - %t188 = load ptr, ptr %a1 - %t189 = load { ptr, i64, i64 }, ptr %a78 - call void @finch.gen.label(ptr %t188, { ptr, i64, i64 } %t189) - %t190 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t190) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a106) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a72) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a66) - call void @finch_str_drop(ptr %a56) - call void @finch_str_drop(ptr %a29) - ret void -} - -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 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i1, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = 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 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca %S.gen.Loop, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5292, label %inrange5293 -range5292: - call void @finch_panic_index(ptr @.str.3311, i64 2526, i64 0, i64 %t8) - unreachable -inrange5293: - %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 %range5294, label %inrange5295 -range5294: - call void @finch_panic_index(ptr @.str.3312, i64 2527, i64 1, i64 %t19) - unreachable -inrange5295: - %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.from5296 -logic.from5296: - br i1 %t28, label %logic.rhs5297, label %logic.end5298 -logic.rhs5297: - %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 %range5299, label %inrange5300 -range5299: - call void @finch_panic_index(ptr @.str.3313, i64 2528, i64 0, i64 %t32) - unreachable -inrange5300: - %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 %range5301, label %inrange5302 -range5301: - call void @finch_panic_index(ptr @.str.3314, i64 2528, i64 1, i64 %t40) - unreachable -inrange5302: - %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) - store { ptr, i64, i64 } %t37, ptr %a46 - call void @finch_str_drop(ptr %a46) - br label %logic.rend5303 -logic.rend5303: - br label %logic.end5298 -logic.end5298: - %t47 = phi i1 [ false, %logic.from5296 ], [ %t45, %logic.rend5303 ] - store i1 %t47, ptr %a48 - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.3315, i64 3, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.3316, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3317, i64 1, i64 0 }, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } { ptr @.str.3318, i64 0, i64 0 }, ptr %a54 - %t55 = load i1, ptr %a5 - br i1 %t55, label %then5304, label %endif5306 -then5304: - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a4 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } { ptr @.str.3320, i64 23, i64 0 }, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t65, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.3321, i64 6, i64 0 }, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t65, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - %t71 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t70, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a72 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.3322, i64 14, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = call { ptr, i64, i64 } @finch.gen.op(ptr %t57, { ptr, i64, i64 } %t81) - store { ptr, i64, i64 } %t81, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = call { ptr, i64, i64 } @finch.gen.load(ptr %t56, { ptr, i64, i64 } { ptr @.str.3319, i64 3, i64 0 }, { ptr, i64, i64 } %t82) - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t84, ptr %a54 - store { ptr, i64, i64 } %t86, ptr %a87 - call void @finch_str_drop(ptr %a87) - br label %endif5306 -endif5306: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3323, 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.3324, i64 9, i64 0 }) - store { ptr, i64, i64 } %t92, ptr %a93 - %t94 = load ptr, ptr %a1 - %t95 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t94, { ptr, i64, i64 } { ptr @.str.3325, i64 8, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a96 - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t97, { ptr, i64, i64 } { ptr @.str.3326, i64 8, i64 0 }) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t100, { ptr, i64, i64 } { ptr @.str.3327, i64 7, i64 0 }) - store { ptr, i64, i64 } %t101, ptr %a102 - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load i1, ptr %a5 - br label %logic.from5307 -logic.from5307: - br i1 %t107, label %logic.rhs5308, label %logic.end5309 -logic.rhs5308: - %t108 = load i1, ptr %a48 - br label %logic.rend5310 -logic.rend5310: - br label %logic.end5309 -logic.end5309: - %t109 = phi i1 [ false, %logic.from5307 ], [ %t108, %logic.rend5310 ] - br i1 %t109, label %then5311, label %endif5313 -then5311: - %t110 = load ptr, ptr %a1 - %t111 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t110, { ptr, i64, i64 } { ptr @.str.3328, i64 11, i64 0 }) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t113, { ptr, i64, i64 } { ptr @.str.3329, i64 8, i64 0 }) - store { ptr, i64, i64 } %t114, ptr %a115 - %t116 = load ptr, ptr %a1 - %t117 = load ptr, ptr %a1 - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Type, ptr %a4 - %t120 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t118, %S.ast.Type %t119) - store { ptr, i64, i64 } { ptr @.str.3331, i64 23, i64 0 }, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3332, i64 6, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.3333, i64 14, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call { ptr, i64, i64 } @finch.gen.op(ptr %t117, { ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = call { ptr, i64, i64 } @finch.gen.load(ptr %t116, { ptr, i64, i64 } { ptr @.str.3330, i64 3, i64 0 }, { ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.3334, i64 12, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t153, ptr %a155 - store { ptr, i64, i64 } { ptr @.str.3335, i64 2, i64 0 }, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - store { ptr, i64, i64 } %t153, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a154 - %t159 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t158, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t158, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t164) - store { ptr, i64, i64 } %t164, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a112 - %t168 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.condBr(ptr %t147, { ptr, i64, i64 } %t165, { ptr, i64, i64 } %t167, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t165, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load ptr, ptr %a1 - %t171 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.gen.label(ptr %t170, { ptr, i64, i64 } %t171) - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load ptr, ptr %a1 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic5314, label %ok5315 -panic5314: - call void @finch_panic(ptr @.str.3337, i64 2549, ptr @.str.3338) - unreachable -ok5315: - %t176 = getelementptr inbounds %S.gen.Gen, ptr %t174, i32 0, i32 1 - %t177 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t178 = load i64, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %t176 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range5316, label %inrange5317 -range5316: - call void @finch_panic_index(ptr @.str.3339, i64 2549, i64 %t178, i64 %t180) - unreachable -inrange5317: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %t182, i64 %t178 - %t184 = load { ptr, i64, i64 }, ptr %t183 - %t185 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t173, { ptr, i64, i64 } %t184) - store { ptr, i64, i64 } { ptr @.str.3336, i64 33, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } { ptr @.str.3340, i64 6, i64 0 }, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t190, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t197 = load i64, ptr %t196 - call void @finch_str_from_int(ptr %a198, i64 %t197) - %t199 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t195, ptr %a201 - store { ptr, i64, i64 } %t199, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t195, ptr %a203 - call void @finch_str_drop(ptr %a203) - store { ptr, i64, i64 } %t199, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.3341, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - call void @finch.gen.emit(ptr %t172, { ptr, i64, i64 } %t210) - store { ptr, i64, i64 } %t210, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t212, { ptr, i64, i64 } { ptr @.str.3342, i64 11, i64 0 }) - %t213 = load ptr, ptr %a1 - %t214 = icmp eq ptr %t213, null - br i1 %t214, label %panic5318, label %ok5319 -panic5318: - call void @finch_panic(ptr @.str.3343, i64 2551, ptr @.str.3344) - unreachable -ok5319: - %t215 = getelementptr inbounds %S.gen.Gen, ptr %t213, i32 0, i32 9 - store i1 true, ptr %t215 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a115 - call void @finch.gen.label(ptr %t216, { ptr, i64, i64 } %t217) - call void @finch_str_drop(ptr %a146) - call void @finch_str_drop(ptr %a115) - call void @finch_str_drop(ptr %a112) - br label %endif5313 -endif5313: - %t218 = load ptr, ptr %a1 - %t219 = load { ptr, i64, i64 }, ptr %a51 - %t220 = call { ptr, i64, i64 } @finch.gen.load(ptr %t218, { ptr, i64, i64 } { ptr @.str.3345, 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, ptr %a1 - %t225 = load %S.ast.Type, ptr %a4 - %t226 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t224, %S.ast.Type %t225) - store { ptr, i64, i64 } { ptr @.str.3347, i64 23, i64 0 }, ptr %a228 - store { ptr, i64, i64 } %t226, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3348, i64 6, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t236, ptr %a239 - store { ptr, i64, i64 } %t237, ptr %a240 - call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) - store { ptr, i64, i64 } %t236, ptr %a241 - call void @finch_str_drop(ptr %a241) - %t242 = load { ptr, i64, i64 }, ptr %a238 - store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.3349, i64 14, i64 0 }, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = load { ptr, i64, i64 }, ptr %a243 - %t248 = call { ptr, i64, i64 } @finch.gen.op(ptr %t223, { ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t247, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = call { ptr, i64, i64 } @finch.gen.load(ptr %t222, { ptr, i64, i64 } { ptr @.str.3346, i64 3, i64 0 }, { ptr, i64, i64 } %t248) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_drop(ptr %a251) - store { ptr, i64, i64 } %t250, ptr %a252 - %t253 = load ptr, ptr %a1 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.3350, i64 13, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.3351, i64 2, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t264, ptr %a267 - store { ptr, i64, i64 } %t265, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t264, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a93 - %t274 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.condBr(ptr %t253, { ptr, i64, i64 } %t271, { ptr, i64, i64 } %t273, { ptr, i64, i64 } %t274) - store { ptr, i64, i64 } %t271, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = load ptr, ptr %a1 - %t277 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.label(ptr %t276, { ptr, i64, i64 } %t277) - %t278 = load ptr, ptr %a1 - %t279 = load { ptr, i64, i64 }, ptr %a3 - %t280 = load %S.ast.Type, ptr %a4 - %t281 = load { ptr, i64, i64 }, ptr %a221 - %t282 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t278, { ptr, i64, i64 } %t279, %S.ast.Type %t280, { ptr, i64, i64 } %t281) - store { ptr, i64, i64 } %t282, ptr %a283 - %t284 = load ptr, ptr %a1 - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a283 - %t287 = load %S.ast.Type, ptr %a4 - %t288 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t285, { ptr, i64, i64 } %t286, %S.ast.Type %t287, i64 0) - %t289 = call { ptr, i64, i64 } @finch.gen.load(ptr %t284, { ptr, i64, i64 } { ptr @.str.3352, i64 3, i64 0 }, { ptr, i64, i64 } %t288) - store { ptr, i64, i64 } %t288, ptr %a290 - call void @finch_str_drop(ptr %a290) - store { ptr, i64, i64 } %t289, ptr %a291 - %t292 = load ptr, ptr %a1 - %t293 = load ptr, ptr %a1 - %t294 = load { ptr, i64, i64 }, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.3353, i64 12, i64 0 }, ptr %a296 - store { ptr, i64, i64 } %t294, ptr %a297 - call void @finch_str_concat(ptr %a295, ptr %a296, ptr %a297) - %t298 = load { ptr, i64, i64 }, ptr %a295 - store { ptr, i64, i64 } %t298, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.3354, i64 3, i64 0 }, ptr %a301 - call void @finch_str_concat(ptr %a299, ptr %a300, ptr %a301) - store { ptr, i64, i64 } %t298, ptr %a302 - call void @finch_str_drop(ptr %a302) - %t303 = load { ptr, i64, i64 }, ptr %a299 - %t304 = call { ptr, i64, i64 } @finch.gen.op(ptr %t293, { ptr, i64, i64 } %t303) - store { ptr, i64, i64 } %t303, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a99 - %t307 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.condBr(ptr %t292, { ptr, i64, i64 } %t304, { ptr, i64, i64 } %t306, { ptr, i64, i64 } %t307) - store { ptr, i64, i64 } %t304, ptr %a308 - call void @finch_str_drop(ptr %a308) - %t309 = load ptr, ptr %a1 - %t310 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.gen.label(ptr %t309, { ptr, i64, i64 } %t310) - %t311 = load ptr, ptr %a1 - %t312 = icmp eq ptr %t311, null - br i1 %t312, label %panic5320, label %ok5321 -panic5320: - call void @finch_panic(ptr @.str.3355, i64 2562, ptr @.str.3356) - unreachable -ok5321: - %t313 = getelementptr inbounds %S.gen.Gen, ptr %t311, i32 0, i32 12 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i32 0, i32 1 - %t315 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t315, ptr %a316 - call void @finch_str_copy(ptr %a317, ptr %a316) - %t318 = load { ptr, i64, i64 }, ptr %a317 - %t319 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t318, 0 - %t320 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_copy(ptr %a322, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - %t324 = insertvalue %S.gen.Loop %t319, { ptr, i64, i64 } %t323, 1 - %t325 = load ptr, ptr %a1 - %t326 = icmp eq ptr %t325, null - br i1 %t326, label %panic5322, label %ok5323 -panic5322: - call void @finch_panic(ptr @.str.3357, i64 2562, ptr @.str.3358) - unreachable -ok5323: - %t327 = getelementptr inbounds %S.gen.Gen, ptr %t325, i32 0, i32 10 - %t328 = getelementptr inbounds { ptr, i64, i64 }, ptr %t327, i32 0, i32 1 - %t329 = load i64, ptr %t328 - %t330 = insertvalue %S.gen.Loop %t324, i64 %t329, 2 - %t331 = load ptr, ptr %a1 - %t332 = icmp eq ptr %t331, null - br i1 %t332, label %panic5324, label %ok5325 -panic5324: - call void @finch_panic(ptr @.str.3359, i64 2562, ptr @.str.3360) - unreachable -ok5325: - %t333 = getelementptr inbounds %S.gen.Gen, ptr %t331, i32 0, i32 11 - %t334 = getelementptr inbounds { ptr, i64, i64 }, ptr %t333, i32 0, i32 1 - %t335 = load i64, ptr %t334 - %t336 = insertvalue %S.gen.Loop %t330, i64 %t335, 3 - %t337 = load i64, ptr %t314 - %t338 = add i64 %t337, 1 - call void @finch_arr_reserve(ptr %t313, i64 %t338, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t339 = load ptr, ptr %t313 - %t340 = getelementptr inbounds %S.gen.Loop, ptr %t339, i64 %t337 - store %S.gen.Loop %t336, ptr %t340 - store i64 %t338, ptr %t314 - %t341 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t341) - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a16 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - %t346 = load ptr, ptr %a1 - %t347 = load { ptr, i64, i64 }, ptr %a283 - %t348 = load %S.ast.Type, ptr %a4 - %t349 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t346, { ptr, i64, i64 } %t347, %S.ast.Type %t348, i64 1) - %t350 = call { ptr, i64, i64 } @finch.gen.load(ptr %t342, { ptr, i64, i64 } %t345, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t345, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t349, ptr %a352 - call void @finch_str_drop(ptr %a352) - store { ptr, i64, i64 } %t350, ptr %a353 - %t354 = load i1, ptr %a48 - br i1 %t354, label %then5326, label %endif5328 -then5326: - %t355 = load ptr, ptr %a1 - %t356 = load { ptr, i64, i64 }, ptr %a353 - %t357 = load %S.ast.Type, ptr %a16 - %t358 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t355, { ptr, i64, i64 } %t356, %S.ast.Type %t357) - %t359 = load { ptr, i64, i64 }, ptr %a353 - store { ptr, i64, i64 } %t358, ptr %a353 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif5328 -endif5328: - %t361 = load ptr, ptr %a1 - %t362 = load %S.ast.Node, ptr %a2 - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - %t365 = load %S.ast.Type, ptr %a16 - %t366 = load { ptr, i64, i64 }, ptr %a353 - %t367 = load i1, ptr %a48 - %t368 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t361, %S.ast.Node %t362, { ptr, i64, i64 } %t364, %S.ast.Type %t365, { ptr, i64, i64 } %t366, i1 true, i1 %t367) - store { ptr, i64, i64 } %t368, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t371 = getelementptr inbounds { ptr, i64, i64 }, ptr %t370, i32 0, i32 1 - %t372 = load i64, ptr %t371 - %t373 = icmp sgt i64 %t372, 0 - br i1 %t373, label %then5329, label %endif5331 -then5329: - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a27 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - %t378 = load ptr, ptr %a1 - %t379 = load { ptr, i64, i64 }, ptr %a283 - %t380 = load %S.ast.Type, ptr %a4 - %t381 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t378, { ptr, i64, i64 } %t379, %S.ast.Type %t380, i64 2) - %t382 = call { ptr, i64, i64 } @finch.gen.load(ptr %t374, { ptr, i64, i64 } %t377, { ptr, i64, i64 } %t381) - store { ptr, i64, i64 } %t377, ptr %a383 - call void @finch_str_drop(ptr %a383) - store { ptr, i64, i64 } %t381, ptr %a384 - call void @finch_str_drop(ptr %a384) - store { ptr, i64, i64 } %t382, ptr %a385 - %t386 = load i1, ptr %a48 - br i1 %t386, label %then5332, label %endif5334 -then5332: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a385 - %t389 = load %S.ast.Type, ptr %a27 - %t390 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t387, { ptr, i64, i64 } %t388, %S.ast.Type %t389) - %t391 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a385 - store { ptr, i64, i64 } %t391, ptr %a392 - call void @finch_str_drop(ptr %a392) - br label %endif5334 -endif5334: - %t393 = load ptr, ptr %a1 - %t394 = load %S.ast.Node, ptr %a2 - %t395 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = load %S.ast.Type, ptr %a27 - %t398 = load { ptr, i64, i64 }, ptr %a385 - %t399 = load i1, ptr %a48 - %t400 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t393, %S.ast.Node %t394, { ptr, i64, i64 } %t396, %S.ast.Type %t397, { ptr, i64, i64 } %t398, i1 true, i1 %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - call void @finch_str_drop(ptr %a401) - call void @finch_str_drop(ptr %a385) - br label %endif5331 -endif5331: - %t402 = load ptr, ptr %a1 - %t403 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t404 = load { ptr, i64, i64 }, ptr %t403 - %t405 = extractvalue { ptr, i64, i64 } %t404, 1 - %t406 = icmp uge i64 1, %t405 - br i1 %t406, label %range5335, label %inrange5336 -range5335: - call void @finch_panic_index(ptr @.str.3361, i64 2576, i64 1, i64 %t405) - unreachable -inrange5336: - %t407 = extractvalue { ptr, i64, i64 } %t404, 0 - %t408 = getelementptr inbounds %S.ast.Node, ptr %t407, i64 1 - %t409 = load %S.ast.Node, ptr %t408 - call void @finch.gen.block(ptr %t402, %S.ast.Node %t409, i1 true) - %t410 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t410) - %t411 = load ptr, ptr %a1 - %t412 = icmp eq ptr %t411, null - br i1 %t412, label %panic5337, label %ok5338 -panic5337: - call void @finch_panic(ptr @.str.3362, i64 2578, ptr @.str.3363) - unreachable -ok5338: - %t413 = getelementptr inbounds %S.gen.Gen, ptr %t411, i32 0, i32 12 - %t414 = getelementptr inbounds { ptr, i64, i64 }, ptr %t413, i32 0, i32 1 - %t415 = load i64, ptr %t414 - %t416 = icmp eq i64 %t415, 0 - br i1 %t416, label %panic5339, label %ok5340 -panic5339: - call void @finch_panic(ptr @.str.3364, i64 2578, ptr @.str.3365) - unreachable -ok5340: - %t417 = sub i64 %t415, 1 - %t418 = load ptr, ptr %t413 - %t419 = getelementptr inbounds %S.gen.Loop, ptr %t418, i64 %t417 - %t420 = load %S.gen.Loop, ptr %t419 - store i64 %t417, ptr %t414 - store %S.gen.Loop %t420, ptr %a421 - call void @finch.drop.S_gen_Loop(ptr %a421) - %t422 = load ptr, ptr %a1 - %t423 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.br(ptr %t422, { ptr, i64, i64 } %t423) - %t424 = load ptr, ptr %a1 - %t425 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.label(ptr %t424, { ptr, i64, i64 } %t425) - %t426 = load ptr, ptr %a1 - %t427 = load { ptr, i64, i64 }, ptr %a51 - %t428 = call { ptr, i64, i64 } @finch.gen.load(ptr %t426, { ptr, i64, i64 } { ptr @.str.3366, i64 3, i64 0 }, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t428, ptr %a429 - %t430 = load ptr, ptr %a1 - %t431 = load ptr, ptr %a1 - %t432 = load { ptr, i64, i64 }, ptr %a429 - store { ptr, i64, i64 } { ptr @.str.3368, i64 8, i64 0 }, ptr %a434 - store { ptr, i64, i64 } %t432, ptr %a435 - call void @finch_str_concat(ptr %a433, ptr %a434, ptr %a435) - %t436 = load { ptr, i64, i64 }, ptr %a433 - store { ptr, i64, i64 } %t436, ptr %a438 - store { ptr, i64, i64 } { ptr @.str.3369, i64 3, i64 0 }, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t436, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t431, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t430, { ptr, i64, i64 } { ptr @.str.3367, i64 3, i64 0 }, { ptr, i64, i64 } %t442, { ptr, i64, i64 } %t444) - store { ptr, i64, i64 } %t442, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load ptr, ptr %a1 - %t447 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t446, { ptr, i64, i64 } %t447) - %t448 = load ptr, ptr %a1 - %t449 = load { ptr, i64, i64 }, ptr %a102 - call void @finch.gen.label(ptr %t448, { ptr, i64, i64 } %t449) - call void @finch_str_drop(ptr %a429) - call void @finch_str_drop(ptr %a353) - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a283) - call void @finch_str_drop(ptr %a252) - call void @finch_str_drop(ptr %a221) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a96) - call void @finch_str_drop(ptr %a93) - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret void -} - -define internal void @finch.drop.S_gen_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 1 - call void @finch.drop.S_gen_Place(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Ref, ptr %a, i32 0, i32 2 - call void @finch.drop.S_gen_Val(ptr %t2) - ret void -} - -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.ast.Type, align 16 - %a31 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a39 = alloca %S.ast.Type, align 16 - %a42 = alloca %S.ast.Type, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.ast.Type, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca i1, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca %S.ast.Type, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca %S.gen.Loop, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - 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 %range5341, label %inrange5342 -range5341: - call void @finch_panic_index(ptr @.str.3370, i64 2589, i64 0, i64 %t7) - unreachable -inrange5342: - %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.3371, i64 0, i64 0 }, ptr %a14 - %t15 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3372, 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 %then5343, label %else5344 -then5343: - %t19 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t20 = getelementptr inbounds %S.gen.Place, ptr %t19, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - call void @finch_str_copy(ptr %a23, ptr %a22) - %t24 = load { ptr, i64, i64 }, ptr %a23 - %t25 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t24, ptr %a14 - store { ptr, i64, i64 } %t25, ptr %a26 - call void @finch_str_drop(ptr %a26) - %t27 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 1 - %t28 = getelementptr inbounds %S.gen.Place, ptr %t27, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - store %S.ast.Type %t29, ptr %a30 - call void @finch.copy.S_ast_Type(ptr %a31, ptr %a30) - %t32 = load %S.ast.Type, ptr %a31 - %t33 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t32, ptr %a16 - store %S.ast.Type %t33, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - br label %endif5345 -else5344: - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t36 = getelementptr inbounds %S.gen.Val, ptr %t35, i32 0, i32 1 - %t37 = load %S.ast.Type, ptr %t36 - store %S.ast.Type %t37, ptr %a38 - call void @finch.copy.S_ast_Type(ptr %a39, ptr %a38) - %t40 = load %S.ast.Type, ptr %a39 - %t41 = load %S.ast.Type, ptr %a16 - store %S.ast.Type %t40, ptr %a16 - store %S.ast.Type %t41, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load ptr, ptr %a1 - %t46 = icmp eq ptr %t45, null - br i1 %t46, label %panic5346, label %ok5347 -panic5346: - call void @finch_panic(ptr @.str.3374, i64 2597, ptr @.str.3375) - unreachable -ok5347: - %t47 = getelementptr inbounds %S.gen.Gen, ptr %t45, i32 0, i32 25 - %t48 = load i64, ptr %t47 - call void @finch_str_from_int(ptr %a49, i64 %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3373, i64 5, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load %S.ast.Type, ptr %a16 - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 2 - %t59 = load %S.gen.Val, ptr %t58 - %t60 = call { ptr, i64, i64 } @finch.gen.own(ptr %t57, %S.gen.Val %t59) - %t61 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t55, %S.ast.Type %t56, { ptr, i64, i64 } %t60, i1 false, i1 true) - store { ptr, i64, i64 } %t55, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t61, ptr %a14 - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif5345 -endif5345: - %t66 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t67 = load { ptr, i64, i64 }, ptr %t66 - store { ptr, i64, i64 } %t67, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.3376, i64 3, i64 0 }, ptr %a69 - %t70 = call i32 @finch_str_eq(ptr %a68, ptr %a69) - %t71 = icmp ne i32 %t70, 0 - br i1 %t71, label %then5348, label %endif5350 -then5348: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a2 - %t74 = load { ptr, i64, i64 }, ptr %a14 - %t75 = load %S.ast.Type, ptr %a16 - %t76 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t77 = load i1, ptr %t76 - call void @finch.gen.eachMap(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t74, %S.ast.Type %t75, i1 %t77) - %t78 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t78) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -endif5350: - %t79 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t80, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3377, i64 5, i64 0 }, ptr %a82 - %t83 = call i32 @finch_str_eq(ptr %a81, ptr %a82) - %t84 = icmp eq i32 %t83, 0 - br label %logic.from5351 -logic.from5351: - br i1 %t84, label %logic.rhs5352, label %logic.end5353 -logic.rhs5352: - %t85 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3378, i64 3, i64 0 }, ptr %a88 - %t89 = call i32 @finch_str_eq(ptr %a87, ptr %a88) - %t90 = icmp eq i32 %t89, 0 - br label %logic.rend5354 -logic.rend5354: - br label %logic.end5353 -logic.end5353: - %t91 = phi i1 [ false, %logic.from5351 ], [ %t90, %logic.rend5354 ] - br i1 %t91, label %then5355, label %endif5357 -then5355: - %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 %range5358, label %inrange5359 -range5358: - call void @finch_panic_index(ptr @.str.3379, i64 2605, i64 0, i64 %t95) - unreachable -inrange5359: - %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 = load %S.ast.Type, ptr %a16 - %t101 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t100) - store { ptr, i64, i64 } { ptr @.str.3380, i64 55, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t101, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.3381, i64 36, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.gen.fail(ptr %t92, %S.ast.Node %t99, { ptr, i64, i64 } %t111) - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif5357 -endif5357: - %t113 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3382, i64 4, i64 0 }) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.3383, i64 5, i64 0 }, ptr %a118 - %t119 = call i32 @finch_str_eq(ptr %a117, ptr %a118) - %t120 = icmp ne i32 %t119, 0 - br i1 %t120, label %then5360, label %endif5362 -then5360: - %t121 = getelementptr inbounds %S.ast.Type, ptr %a16, i32 0, i32 1 - %t122 = load { ptr, i64, i64 }, ptr %t121 - %t123 = extractvalue { ptr, i64, i64 } %t122, 1 - %t124 = icmp uge i64 0, %t123 - br i1 %t124, label %range5363, label %inrange5364 -range5363: - call void @finch_panic_index(ptr @.str.3384, i64 2609, i64 0, i64 %t123) - unreachable -inrange5364: - %t125 = extractvalue { ptr, i64, i64 } %t122, 0 - %t126 = getelementptr inbounds %S.ast.Type, ptr %t125, i64 0 - %t127 = load %S.ast.Type, ptr %t126 - store %S.ast.Type %t127, ptr %a128 - call void @finch.copy.S_ast_Type(ptr %a129, ptr %a128) - %t130 = load %S.ast.Type, ptr %a129 - %t131 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t130, ptr %a114 - store %S.ast.Type %t131, ptr %a132 - call void @finch.drop.S_ast_Type(ptr %a132) - br label %endif5362 -endif5362: - %t133 = getelementptr inbounds %S.gen.Ref, ptr %a13, i32 0, i32 0 - %t134 = load i1, ptr %t133 - br label %logic.from5365 -logic.from5365: - br i1 %t134, label %logic.rhs5366, label %logic.end5367 -logic.rhs5366: - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a114 - %t137 = call i1 @finch.gen.owning(ptr %t135, %S.ast.Type %t136) - br label %logic.rend5368 -logic.rend5368: - br label %logic.end5367 -logic.end5367: - %t138 = phi i1 [ false, %logic.from5365 ], [ %t137, %logic.rend5368 ] - br label %logic.from5369 -logic.from5369: - br i1 %t138, label %logic.rhs5370, label %logic.end5371 -logic.rhs5370: - %t139 = load ptr, ptr %a1 - %t140 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t141 = load { ptr, i64, i64 }, ptr %t140 - %t142 = extractvalue { ptr, i64, i64 } %t141, 1 - %t143 = icmp uge i64 0, %t142 - br i1 %t143, label %range5372, label %inrange5373 -range5372: - call void @finch_panic_index(ptr @.str.3385, i64 2611, i64 0, i64 %t142) - unreachable -inrange5373: - %t144 = extractvalue { ptr, i64, i64 } %t141, 0 - %t145 = getelementptr inbounds %S.ast.Node, ptr %t144, i64 0 - %t146 = load %S.ast.Node, ptr %t145 - %t147 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t146) - %t148 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t149 = load { ptr, i64, i64 }, ptr %t148 - %t150 = extractvalue { ptr, i64, i64 } %t149, 1 - %t151 = icmp uge i64 1, %t150 - br i1 %t151, label %range5374, label %inrange5375 -range5374: - call void @finch_panic_index(ptr @.str.3386, i64 2611, i64 1, i64 %t150) - unreachable -inrange5375: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 1 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = call i1 @finch.gen.mutates(ptr %t139, { ptr, i64, i64 } %t147, %S.ast.Node %t154) - store { ptr, i64, i64 } %t147, ptr %a156 - call void @finch_str_drop(ptr %a156) - br label %logic.rend5376 -logic.rend5376: - br label %logic.end5371 -logic.end5371: - %t157 = phi i1 [ false, %logic.from5369 ], [ %t155, %logic.rend5376 ] - store i1 %t157, ptr %a158 - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t159, { ptr, i64, i64 } { ptr @.str.3387, i64 3, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t162, { ptr, i64, i64 } { ptr @.str.3388, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3389, i64 1, i64 0 }, { ptr, i64, i64 } %t163) - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3390, i64 9, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t167, { ptr, i64, i64 } { ptr @.str.3391, i64 9, i64 0 }) - store { ptr, i64, i64 } %t168, ptr %a169 - %t170 = load ptr, ptr %a1 - %t171 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t170, { ptr, i64, i64 } { ptr @.str.3392, i64 9, i64 0 }) - store { ptr, i64, i64 } %t171, ptr %a172 - %t173 = load ptr, ptr %a1 - %t174 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t173, { ptr, i64, i64 } { ptr @.str.3393, i64 8, i64 0 }) - store { ptr, i64, i64 } %t174, ptr %a175 - %t176 = load ptr, ptr %a1 - %t177 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t176, { ptr, i64, i64 } %t177) - %t178 = load ptr, ptr %a1 - %t179 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t178, { ptr, i64, i64 } %t179) - %t180 = load ptr, ptr %a1 - %t181 = load ptr, ptr %a1 - %t182 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.3395, i64 46, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.3396, i64 14, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = call { ptr, i64, i64 } @finch.gen.op(ptr %t181, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t180, { ptr, i64, i64 } { ptr @.str.3394, i64 3, i64 0 }, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_drop(ptr %a195) - store { ptr, i64, i64 } %t194, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a161 - %t199 = call { ptr, i64, i64 } @finch.gen.load(ptr %t197, { ptr, i64, i64 } { ptr @.str.3397, i64 3, i64 0 }, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.3398, i64 13, i64 0 }, ptr %a204 - store { ptr, i64, i64 } %t202, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - %t206 = load { ptr, i64, i64 }, ptr %a203 - store { ptr, i64, i64 } %t206, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.3399, i64 2, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t211, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t201, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - store { ptr, i64, i64 } %t218, ptr %a220 - %t221 = load ptr, ptr %a1 - %t222 = load { ptr, i64, i64 }, ptr %a220 - %t223 = load { ptr, i64, i64 }, ptr %a169 - %t224 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.condBr(ptr %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223, { ptr, i64, i64 } %t224) - %t225 = load ptr, ptr %a1 - %t226 = load { ptr, i64, i64 }, ptr %a169 - call void @finch.gen.label(ptr %t225, { ptr, i64, i64 } %t226) - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a14 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } { ptr @.str.3400, i64 3, i64 0 }, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t229, ptr %a230 - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load %S.ast.Type, ptr %a114 - %t234 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t232, %S.ast.Type %t233) - store { ptr, i64, i64 } { ptr @.str.3401, i64 23, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3402, i64 6, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t239, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t244, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t244, ptr %a249 - call void @finch_str_drop(ptr %a249) - %t250 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.3403, i64 6, i64 0 }, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - store { ptr, i64, i64 } %t250, ptr %a254 - call void @finch_str_drop(ptr %a254) - %t255 = load { ptr, i64, i64 }, ptr %a251 - %t256 = load { ptr, i64, i64 }, ptr %a200 - store { ptr, i64, i64 } %t255, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - %t262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t261) - store { ptr, i64, i64 } %t261, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t262, ptr %a264 - %t265 = load ptr, ptr %a1 - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Type, ptr %a114 - %t268 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t266, %S.ast.Type %t267) - %t269 = load { ptr, i64, i64 }, ptr %a264 - %t270 = call { ptr, i64, i64 } @finch.gen.load(ptr %t265, { ptr, i64, i64 } %t268, { ptr, i64, i64 } %t269) - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_drop(ptr %a271) - store { ptr, i64, i64 } %t270, ptr %a272 - %t273 = load i1, ptr %a158 - br i1 %t273, label %then5377, label %endif5379 -then5377: - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a272 - %t276 = load %S.ast.Type, ptr %a114 - %t277 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276) - %t278 = load { ptr, i64, i64 }, ptr %a272 - store { ptr, i64, i64 } %t277, ptr %a272 - store { ptr, i64, i64 } %t278, ptr %a279 - call void @finch_str_drop(ptr %a279) - br label %endif5379 -endif5379: - %t280 = load ptr, ptr %a1 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic5380, label %ok5381 -panic5380: - call void @finch_panic(ptr @.str.3404, i64 2631, ptr @.str.3405) - unreachable -ok5381: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 12 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - %t284 = load { ptr, i64, i64 }, ptr %a172 - store { ptr, i64, i64 } %t284, ptr %a285 - call void @finch_str_copy(ptr %a286, ptr %a285) - %t287 = load { ptr, i64, i64 }, ptr %a286 - %t288 = insertvalue %S.gen.Loop zeroinitializer, { ptr, i64, i64 } %t287, 0 - %t289 = load { ptr, i64, i64 }, ptr %a175 - store { ptr, i64, i64 } %t289, ptr %a290 - call void @finch_str_copy(ptr %a291, ptr %a290) - %t292 = load { ptr, i64, i64 }, ptr %a291 - %t293 = insertvalue %S.gen.Loop %t288, { ptr, i64, i64 } %t292, 1 - %t294 = load ptr, ptr %a1 - %t295 = icmp eq ptr %t294, null - br i1 %t295, label %panic5382, label %ok5383 -panic5382: - call void @finch_panic(ptr @.str.3406, i64 2631, ptr @.str.3407) - unreachable -ok5383: - %t296 = getelementptr inbounds %S.gen.Gen, ptr %t294, i32 0, i32 10 - %t297 = getelementptr inbounds { ptr, i64, i64 }, ptr %t296, i32 0, i32 1 - %t298 = load i64, ptr %t297 - %t299 = insertvalue %S.gen.Loop %t293, i64 %t298, 2 - %t300 = load ptr, ptr %a1 - %t301 = icmp eq ptr %t300, null - br i1 %t301, label %panic5384, label %ok5385 -panic5384: - call void @finch_panic(ptr @.str.3408, i64 2631, ptr @.str.3409) - unreachable -ok5385: - %t302 = getelementptr inbounds %S.gen.Gen, ptr %t300, i32 0, i32 11 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t302, i32 0, i32 1 - %t304 = load i64, ptr %t303 - %t305 = insertvalue %S.gen.Loop %t299, i64 %t304, 3 - %t306 = load i64, ptr %t283 - %t307 = add i64 %t306, 1 - call void @finch_arr_reserve(ptr %t282, i64 %t307, i64 ptrtoint (ptr getelementptr (%S.gen.Loop, ptr null, i32 1) to i64)) - %t308 = load ptr, ptr %t282 - %t309 = getelementptr inbounds %S.gen.Loop, ptr %t308, i64 %t306 - store %S.gen.Loop %t305, ptr %t309 - store i64 %t307, ptr %t283 - %t310 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t310) - %t311 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t312 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t312, ptr %a313 - call void @finch_str_copy(ptr %a314, ptr %a313) - %t315 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i32 0, i32 1 - %t319 = load i64, ptr %t318 - %t320 = icmp sgt i64 %t319, 0 - br i1 %t320, label %then5386, label %endif5388 -then5386: - %t321 = load ptr, ptr %a1 - %t322 = load %S.ast.Node, ptr %a2 - %t323 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t324 = load { ptr, i64, i64 }, ptr %t323 - %t325 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3410, i64 3, i64 0 }) - %t326 = load { ptr, i64, i64 }, ptr %a200 - %t327 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t321, %S.ast.Node %t322, { ptr, i64, i64 } %t324, %S.ast.Type %t325, { ptr, i64, i64 } %t326, i1 true, i1 false) - store %S.ast.Type %t325, ptr %a328 - call void @finch.drop.S_ast_Type(ptr %a328) - store { ptr, i64, i64 } %t327, ptr %a329 - call void @finch_str_drop(ptr %a329) - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t331, ptr %a332 - call void @finch_str_copy(ptr %a333, ptr %a332) - %t334 = load { ptr, i64, i64 }, ptr %a333 - %t335 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t334, ptr %a316 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_drop(ptr %a336) - br label %endif5388 -endif5388: - %t337 = load ptr, ptr %a1 - %t338 = load %S.ast.Node, ptr %a2 - %t339 = load { ptr, i64, i64 }, ptr %a316 - %t340 = load %S.ast.Type, ptr %a114 - %t341 = load { ptr, i64, i64 }, ptr %a272 - %t342 = load i1, ptr %a158 - %t343 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t337, %S.ast.Node %t338, { ptr, i64, i64 } %t339, %S.ast.Type %t340, { ptr, i64, i64 } %t341, i1 true, i1 %t342) - store { ptr, i64, i64 } %t343, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load ptr, ptr %a1 - %t346 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t347 = load { ptr, i64, i64 }, ptr %t346 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 1, %t348 - br i1 %t349, label %range5389, label %inrange5390 -range5389: - call void @finch_panic_index(ptr @.str.3411, i64 2639, i64 1, i64 %t348) - unreachable -inrange5390: - %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 %panic5391, label %ok5392 -panic5391: - call void @finch_panic(ptr @.str.3412, i64 2641, ptr @.str.3413) - unreachable -ok5392: - %t356 = getelementptr inbounds %S.gen.Gen, ptr %t354, i32 0, i32 12 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %panic5393, label %ok5394 -panic5393: - call void @finch_panic(ptr @.str.3414, i64 2641, ptr @.str.3415) - unreachable -ok5394: - %t360 = sub i64 %t358, 1 - %t361 = load ptr, ptr %t356 - %t362 = getelementptr inbounds %S.gen.Loop, ptr %t361, i64 %t360 - %t363 = load %S.gen.Loop, ptr %t362 - store i64 %t360, ptr %t357 - store %S.gen.Loop %t363, ptr %a364 - call void @finch.drop.S_gen_Loop(ptr %a364) - %t365 = load ptr, ptr %a1 - %t366 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.br(ptr %t365, { ptr, i64, i64 } %t366) - %t367 = load ptr, ptr %a1 - %t368 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.label(ptr %t367, { ptr, i64, i64 } %t368) - %t369 = load ptr, ptr %a1 - %t370 = load { ptr, i64, i64 }, ptr %a161 - %t371 = call { ptr, i64, i64 } @finch.gen.load(ptr %t369, { ptr, i64, i64 } { ptr @.str.3416, i64 3, i64 0 }, { ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } { ptr @.str.3418, i64 8, i64 0 }, ptr %a377 - store { ptr, i64, i64 } %t375, ptr %a378 - call void @finch_str_concat(ptr %a376, ptr %a377, ptr %a378) - %t379 = load { ptr, i64, i64 }, ptr %a376 - store { ptr, i64, i64 } %t379, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.3419, i64 3, i64 0 }, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - store { ptr, i64, i64 } %t379, ptr %a383 - call void @finch_str_drop(ptr %a383) - %t384 = load { ptr, i64, i64 }, ptr %a380 - %t385 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t384) - store { ptr, i64, i64 } %t384, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.store(ptr %t373, { ptr, i64, i64 } { ptr @.str.3417, i64 3, i64 0 }, { ptr, i64, i64 } %t385, { ptr, i64, i64 } %t387) - store { ptr, i64, i64 } %t385, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load ptr, ptr %a1 - %t390 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t389, { ptr, i64, i64 } %t390) - %t391 = load ptr, ptr %a1 - %t392 = load { ptr, i64, i64 }, ptr %a175 - call void @finch.gen.label(ptr %t391, { ptr, i64, i64 } %t392) - %t393 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t393) - call void @finch_str_drop(ptr %a372) - call void @finch_str_drop(ptr %a316) - call void @finch_str_drop(ptr %a272) - call void @finch_str_drop(ptr %a264) - call void @finch_str_drop(ptr %a230) - call void @finch_str_drop(ptr %a220) - call void @finch_str_drop(ptr %a200) - call void @finch_str_drop(ptr %a196) - call void @finch_str_drop(ptr %a175) - call void @finch_str_drop(ptr %a172) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.S_ast_Type(ptr %a16) - call void @finch_str_drop(ptr %a14) - call void @finch.drop.S_gen_Ref(ptr %a13) - ret void -} - -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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a131 = alloca %S.ast.Type, align 16 - %a132 = alloca %S.gen.Val, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a329 = alloca i64, align 16 - %a342 = alloca i64, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca %S.gen.Var, align 16 - %a421 = alloca %S.gen.Var, align 16 - %a423 = alloca %S.gen.Var, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.gen.Val, align 16 - %a512 = alloca %S.gen.Val, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5395, label %ok5396 -panic5395: - call void @finch_panic(ptr @.str.3420, i64 2652, ptr @.str.3421) - unreachable -ok5396: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then5397, label %endif5399 -then5397: - %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.3422, i64 33, i64 0 }) - br label %endif5399 -endif5399: - %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.from5400 -logic.from5400: - br i1 %t13, label %logic.rhs5401, label %logic.end5402 -logic.rhs5401: - %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 %range5403, label %inrange5404 -range5403: - call void @finch_panic_index(ptr @.str.3423, i64 2656, i64 0, i64 %t16) - unreachable -inrange5404: - %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.3424, 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.rend5405 -logic.rend5405: - br label %logic.end5402 -logic.end5402: - %t26 = phi i1 [ false, %logic.from5400 ], [ %t25, %logic.rend5405 ] - br label %logic.from5406 -logic.from5406: - br i1 %t26, label %logic.rhs5407, label %logic.end5408 -logic.rhs5407: - %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 %range5409, label %inrange5410 -range5409: - call void @finch_panic_index(ptr @.str.3425, i64 2656, i64 0, i64 %t29) - unreachable -inrange5410: - %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.3426, 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.rend5411 -logic.rend5411: - br label %logic.end5408 -logic.end5408: - %t39 = phi i1 [ false, %logic.from5406 ], [ %t38, %logic.rend5411 ] - br i1 %t39, label %then5412, label %endif5414 -then5412: - %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 %range5415, label %inrange5416 -range5415: - call void @finch_panic_index(ptr @.str.3427, i64 2657, i64 0, i64 %t42) - unreachable -inrange5416: - %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 %panic5417, label %ok5418 -panic5417: - call void @finch_panic(ptr @.str.3428, i64 2658, ptr @.str.3429) - unreachable -ok5418: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 13 - %t54 = getelementptr inbounds %S.gen.FnSig, ptr %t53, i32 0, i32 9 - %t55 = load i1, ptr %t54 - %t56 = xor i1 %t55, true - br i1 %t56, label %then5419, label %endif5421 -then5419: - store { ptr, i64, i64 } { ptr @.str.3430, i64 1, i64 0 }, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic5422, label %ok5423 -panic5422: - call void @finch_panic(ptr @.str.3431, i64 2660, ptr @.str.3432) - unreachable -ok5423: - %t60 = getelementptr inbounds %S.gen.Gen, ptr %t58, i32 0, i32 13 - %t61 = getelementptr inbounds %S.gen.FnSig, ptr %t60, i32 0, i32 12 - %t62 = getelementptr inbounds %S.ast.Type, ptr %t61, i32 0, i32 0 - %t63 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.3433, 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 %then5424, label %endif5426 -then5424: - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic5427, label %ok5428 -panic5427: - call void @finch_panic(ptr @.str.3434, i64 2661, ptr @.str.3435) - unreachable -ok5428: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 13 - %t71 = getelementptr inbounds %S.gen.FnSig, ptr %t70, i32 0, i32 12 - %t72 = load %S.ast.Type, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t72) - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3436, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t78, ptr %a57 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif5426 -endif5426: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a50 - %t83 = load ptr, ptr %a1 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic5429, label %ok5430 -panic5429: - call void @finch_panic(ptr @.str.3438, i64 2663, ptr @.str.3439) - unreachable -ok5430: - %t85 = getelementptr inbounds %S.gen.Gen, ptr %t83, i32 0, i32 13 - %t86 = getelementptr inbounds %S.gen.FnSig, ptr %t85, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } { ptr @.str.3437, i64 1, i64 0 }, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3440, i64 64, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t96, ptr %a99 - store { ptr, i64, i64 } %t97, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t96, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t102, ptr %a104 - store { ptr, i64, i64 } { ptr @.str.3441, i64 1, i64 0 }, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t102, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - call void @finch.gen.fail(ptr %t81, %S.ast.Node %t82, { ptr, i64, i64 } %t107) - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a57) - br label %endif5421 -endif5421: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a50 - call void @finch.gen.checkArgs(ptr %t109, %S.ast.Node %t110, i64 0, i64 1, { ptr, i64, i64 } { ptr @.str.3442, i64 5, i64 0 }) - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t114 = load { ptr, i64, i64 }, ptr %t113 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 0, %t115 - br i1 %t116, label %range5431, label %inrange5432 -range5431: - call void @finch_panic_index(ptr @.str.3443, i64 2666, i64 0, i64 %t115) - unreachable -inrange5432: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds %S.ast.Node, ptr %t117, i64 0 - %t119 = load %S.ast.Node, ptr %t118 - %t120 = call %S.gen.Val @finch.gen.expr(ptr %t112, %S.ast.Node %t119) - %t121 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3444, i64 3, i64 0 }) - %t122 = getelementptr inbounds %S.ast.Node, ptr %a50, i32 0, i32 9 - %t123 = load { ptr, i64, i64 }, ptr %t122 - %t124 = extractvalue { ptr, i64, i64 } %t123, 1 - %t125 = icmp uge i64 0, %t124 - br i1 %t125, label %range5433, label %inrange5434 -range5433: - call void @finch_panic_index(ptr @.str.3445, i64 2666, i64 0, i64 %t124) - unreachable -inrange5434: - %t126 = extractvalue { ptr, i64, i64 } %t123, 0 - %t127 = getelementptr inbounds %S.ast.Node, ptr %t126, i64 0 - %t128 = load %S.ast.Node, ptr %t127 - %t129 = call %S.gen.Val @finch.gen.coerce(ptr %t111, %S.gen.Val %t120, %S.ast.Type %t121, %S.ast.Node %t128, { ptr, i64, i64 } { ptr @.str.3446, i64 17, i64 0 }) - store %S.gen.Val %t120, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - store %S.ast.Type %t121, ptr %a131 - call void @finch.drop.S_ast_Type(ptr %a131) - store %S.gen.Val %t129, ptr %a132 - %t133 = load ptr, ptr %a1 - %t134 = load %S.gen.Val, ptr %a132 - %t135 = call { ptr, i64, i64 } @finch.gen.own(ptr %t133, %S.gen.Val %t134) - store { ptr, i64, i64 } %t135, ptr %a136 - %t137 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t137, i64 0) - %t138 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t138, i64 0) - %t139 = load ptr, ptr %a1 - %t140 = load ptr, ptr %a1 - %t141 = load ptr, ptr %a1 - %t142 = icmp eq ptr %t141, null - br i1 %t142, label %panic5435, label %ok5436 -panic5435: - call void @finch_panic(ptr @.str.3448, i64 2670, ptr @.str.3449) - unreachable -ok5436: - %t143 = getelementptr inbounds %S.gen.Gen, ptr %t141, i32 0, i32 13 - %t144 = load %S.gen.FnSig, ptr %t143 - %t145 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t140, %S.gen.FnSig %t144) - store { ptr, i64, i64 } { ptr @.str.3447, i64 4, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t145, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.3450, i64 1, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load ptr, ptr %a1 - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic5437, label %ok5438 -panic5437: - call void @finch_panic(ptr @.str.3452, i64 2670, ptr @.str.3453) - unreachable -ok5438: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 13 - %t161 = load %S.gen.FnSig, ptr %t160 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t157, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.3451, i64 12, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.3454, i64 36, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.3455, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t156, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t155, ptr %a187 - store { ptr, i64, i64 } %t184, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t155, ptr %a189 - call void @finch_str_drop(ptr %a189) - store { ptr, i64, i64 } %t184, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t139, { ptr, i64, i64 } %t191) - store { ptr, i64, i64 } %t191, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5439, label %ok5440 -panic5439: - call void @finch_panic(ptr @.str.3456, i64 2671, ptr @.str.3457) - unreachable -ok5440: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_gen_Val(ptr %a132) - call void @finch.drop.S_ast_Node(ptr %a50) - ret void -endif5414: - %t196 = load ptr, ptr %a1 - %t197 = icmp eq ptr %t196, null - br i1 %t197, label %panic5441, label %ok5442 -panic5441: - call void @finch_panic(ptr @.str.3458, i64 2674, ptr @.str.3459) - unreachable -ok5442: - %t198 = getelementptr inbounds %S.gen.Gen, ptr %t196, i32 0, i32 13 - %t199 = getelementptr inbounds %S.gen.FnSig, ptr %t198, i32 0, i32 12 - %t200 = getelementptr inbounds %S.ast.Type, ptr %t199, i32 0, i32 0 - %t201 = load { ptr, i64, i64 }, ptr %t200 - store { ptr, i64, i64 } %t201, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.3460, i64 4, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %then5443, label %endif5445 -then5443: - %t206 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = load i64, ptr %t207 - %t209 = icmp sgt i64 %t208, 0 - br i1 %t209, label %then5446, label %endif5448 -then5446: - %t210 = load ptr, ptr %a1 - %t211 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t212 = load { ptr, i64, i64 }, ptr %t211 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 0, %t213 - br i1 %t214, label %range5449, label %inrange5450 -range5449: - call void @finch_panic_index(ptr @.str.3461, i64 2676, i64 0, i64 %t213) - unreachable -inrange5450: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 0 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic5451, label %ok5452 -panic5451: - call void @finch_panic(ptr @.str.3463, i64 2676, ptr @.str.3464) - unreachable -ok5452: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 13 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %t220, i32 0, i32 1 - %t222 = load { ptr, i64, i64 }, ptr %t221 - store { ptr, i64, i64 } { ptr @.str.3462, i64 1, i64 0 }, ptr %a224 - store { ptr, i64, i64 } %t222, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a223 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.3465, i64 46, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif5448 -endif5448: - %t233 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t233, i64 0) - %t234 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t234, i64 0) - %t235 = load ptr, ptr %a1 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic5453, label %ok5454 -panic5453: - call void @finch_panic(ptr @.str.3466, i64 2680, ptr @.str.3467) - unreachable -ok5454: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 13 - %t238 = getelementptr inbounds %S.gen.FnSig, ptr %t237, i32 0, i32 9 - %t239 = load i1, ptr %t238 - br i1 %t239, label %then5455, label %else5456 -then5455: - %t240 = load ptr, ptr %a1 - %t241 = load ptr, ptr %a1 - %t242 = load ptr, ptr %a1 - %t243 = icmp eq ptr %t242, null - br i1 %t243, label %panic5458, label %ok5459 -panic5458: - call void @finch_panic(ptr @.str.3469, i64 2681, ptr @.str.3470) - unreachable -ok5459: - %t244 = getelementptr inbounds %S.gen.Gen, ptr %t242, i32 0, i32 13 - %t245 = load %S.gen.FnSig, ptr %t244 - %t246 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t241, %S.gen.FnSig %t245) - store { ptr, i64, i64 } { ptr @.str.3468, i64 4, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.3471, i64 53, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t240, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif5457 -else5456: - %t258 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t258, { ptr, i64, i64 } { ptr @.str.3472, i64 8, i64 0 }) - br label %endif5457 -endif5457: - %t259 = load ptr, ptr %a1 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic5460, label %ok5461 -panic5460: - call void @finch_panic(ptr @.str.3473, i64 2685, ptr @.str.3474) - unreachable -ok5461: - %t261 = getelementptr inbounds %S.gen.Gen, ptr %t259, i32 0, i32 9 - store i1 true, ptr %t261 - ret void -endif5445: - %t262 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i32 0, i32 1 - %t264 = load i64, ptr %t263 - %t265 = icmp eq i64 %t264, 0 - br i1 %t265, label %then5462, label %endif5464 -then5462: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = load ptr, ptr %a1 - %t269 = icmp eq ptr %t268, null - br i1 %t269, label %panic5465, label %ok5466 -panic5465: - call void @finch_panic(ptr @.str.3476, i64 2689, ptr @.str.3477) - unreachable -ok5466: - %t270 = getelementptr inbounds %S.gen.Gen, ptr %t268, i32 0, i32 13 - %t271 = getelementptr inbounds %S.gen.FnSig, ptr %t270, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } { ptr @.str.3475, i64 1, i64 0 }, ptr %a274 - store { ptr, i64, i64 } %t272, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } %t276, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.3478, i64 14, i64 0 }, ptr %a279 - call void @finch_str_concat(ptr %a277, ptr %a278, ptr %a279) - store { ptr, i64, i64 } %t276, ptr %a280 - call void @finch_str_drop(ptr %a280) - %t281 = load { ptr, i64, i64 }, ptr %a277 - %t282 = load ptr, ptr %a1 - %t283 = icmp eq ptr %t282, null - br i1 %t283, label %panic5467, label %ok5468 -panic5467: - call void @finch_panic(ptr @.str.3479, i64 2689, ptr @.str.3480) - unreachable -ok5468: - %t284 = getelementptr inbounds %S.gen.Gen, ptr %t282, i32 0, i32 13 - %t285 = getelementptr inbounds %S.gen.FnSig, ptr %t284, i32 0, i32 12 - %t286 = load %S.ast.Type, ptr %t285 - %t287 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t286) - store { ptr, i64, i64 } %t281, ptr %a289 - store { ptr, i64, i64 } %t287, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t281, ptr %a291 - call void @finch_str_drop(ptr %a291) - store { ptr, i64, i64 } %t287, ptr %a292 - call void @finch_str_drop(ptr %a292) - %t293 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t293) - store { ptr, i64, i64 } %t293, ptr %a294 - call void @finch_str_drop(ptr %a294) - br label %endif5464 -endif5464: - %t295 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t296 = load { ptr, i64, i64 }, ptr %t295 - %t297 = extractvalue { ptr, i64, i64 } %t296, 1 - %t298 = icmp uge i64 0, %t297 - br i1 %t298, label %range5469, label %inrange5470 -range5469: - call void @finch_panic_index(ptr @.str.3481, i64 2692, i64 0, i64 %t297) - unreachable -inrange5470: - %t299 = extractvalue { ptr, i64, i64 } %t296, 0 - %t300 = getelementptr inbounds %S.ast.Node, ptr %t299, i64 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.3482, i64 3, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp ne i32 %t305, 0 - br i1 %t306, label %then5471, label %endif5473 -then5471: - %t307 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = extractvalue { ptr, i64, i64 } %t308, 1 - %t310 = icmp uge i64 0, %t309 - br i1 %t310, label %range5474, label %inrange5475 -range5474: - call void @finch_panic_index(ptr @.str.3483, i64 2693, i64 0, i64 %t309) - unreachable -inrange5475: - %t311 = extractvalue { ptr, i64, i64 } %t308, 0 - %t312 = getelementptr inbounds %S.ast.Node, ptr %t311, i64 0 - %t313 = getelementptr inbounds %S.ast.Node, ptr %t312, i32 0, i32 1 - %t314 = load { ptr, i64, i64 }, ptr %t313 - store { ptr, i64, i64 } %t314, ptr %a315 - call void @finch_str_copy(ptr %a316, ptr %a315) - %t317 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = icmp eq ptr %t319, null - br i1 %t320, label %panic5476, label %ok5477 -panic5476: - call void @finch_panic(ptr @.str.3484, i64 2694, ptr @.str.3485) - unreachable -ok5477: - %t321 = getelementptr inbounds %S.gen.Gen, ptr %t319, i32 0, i32 10 - %t322 = getelementptr inbounds { ptr, i64, i64 }, ptr %t321, i32 0, i32 1 - %t323 = load i64, ptr %t322 - store i64 %t323, ptr %a324 - br label %while.cond5478 -while.cond5478: - %t325 = load i64, ptr %a324 - %t326 = icmp sgt i64 %t325, 0 - br i1 %t326, label %while.body5479, label %while.end5480 -while.body5479: - %t327 = load i64, ptr %a324 - %t328 = sub i64 %t327, 1 - store i64 %t328, ptr %a324 - store i64 -1, ptr %a329 - %t330 = load ptr, ptr %a1 - %t331 = icmp eq ptr %t330, null - br i1 %t331, label %panic5481, label %ok5482 -panic5481: - call void @finch_panic(ptr @.str.3486, i64 2698, ptr @.str.3487) - unreachable -ok5482: - %t332 = getelementptr inbounds %S.gen.Gen, ptr %t330, i32 0, i32 10 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %t332 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range5483, label %inrange5484 -range5483: - call void @finch_panic_index(ptr @.str.3488, i64 2698, i64 %t333, i64 %t335) - unreachable -inrange5484: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds %S.gen.Scope, ptr %t337, i64 %t333 - %t339 = getelementptr inbounds %S.gen.Scope, ptr %t338, i32 0, i32 0 - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %t339, i32 0, i32 1 - %t341 = load i64, ptr %t340 - store i64 0, ptr %a342 - br label %for.cond5485 -for.cond5485: - %t343 = load i64, ptr %a342 - %t344 = icmp slt i64 %t343, %t341 - br i1 %t344, label %for.body5486, label %for.end5488 -for.body5486: - %t345 = load ptr, ptr %a1 - %t346 = icmp eq ptr %t345, null - br i1 %t346, label %panic5489, label %ok5490 -panic5489: - call void @finch_panic(ptr @.str.3489, i64 2699, ptr @.str.3490) - unreachable -ok5490: - %t347 = getelementptr inbounds %S.gen.Gen, ptr %t345, i32 0, i32 10 - %t348 = load i64, ptr %a324 - %t349 = load { ptr, i64, i64 }, ptr %t347 - %t350 = extractvalue { ptr, i64, i64 } %t349, 1 - %t351 = icmp uge i64 %t348, %t350 - br i1 %t351, label %range5491, label %inrange5492 -range5491: - call void @finch_panic_index(ptr @.str.3491, i64 2699, i64 %t348, i64 %t350) - unreachable -inrange5492: - %t352 = extractvalue { ptr, i64, i64 } %t349, 0 - %t353 = getelementptr inbounds %S.gen.Scope, ptr %t352, i64 %t348 - %t354 = getelementptr inbounds %S.gen.Scope, ptr %t353, i32 0, i32 0 - %t355 = load i64, ptr %a342 - %t356 = load { ptr, i64, i64 }, ptr %t354 - %t357 = extractvalue { ptr, i64, i64 } %t356, 1 - %t358 = icmp uge i64 %t355, %t357 - br i1 %t358, label %range5493, label %inrange5494 -range5493: - call void @finch_panic_index(ptr @.str.3492, i64 2699, i64 %t355, i64 %t357) - unreachable -inrange5494: - %t359 = extractvalue { ptr, i64, i64 } %t356, 0 - %t360 = getelementptr inbounds %S.gen.Var, ptr %t359, i64 %t355 - %t361 = getelementptr inbounds %S.gen.Var, ptr %t360, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - %t363 = load { ptr, i64, i64 }, ptr %a318 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } %t363, ptr %a365 - %t366 = call i32 @finch_str_eq(ptr %a364, ptr %a365) - %t367 = icmp ne i32 %t366, 0 - br label %logic.from5495 -logic.from5495: - br i1 %t367, label %logic.rhs5496, label %logic.end5497 -logic.rhs5496: - %t368 = load ptr, ptr %a1 - %t369 = icmp eq ptr %t368, null - br i1 %t369, label %panic5498, label %ok5499 -panic5498: - call void @finch_panic(ptr @.str.3493, i64 2699, ptr @.str.3494) - unreachable -ok5499: - %t370 = getelementptr inbounds %S.gen.Gen, ptr %t368, i32 0, i32 44 - %t371 = load i1, ptr %t370 - br label %logic.from5500 -logic.from5500: - br i1 %t371, label %logic.rhs5501, label %logic.end5502 -logic.rhs5501: - %t372 = load ptr, ptr %a1 - %t373 = icmp eq ptr %t372, null - br i1 %t373, label %panic5503, label %ok5504 -panic5503: - call void @finch_panic(ptr @.str.3495, i64 2699, ptr @.str.3496) - unreachable -ok5504: - %t374 = getelementptr inbounds %S.gen.Gen, ptr %t372, i32 0, i32 10 - %t375 = load i64, ptr %a324 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range5505, label %inrange5506 -range5505: - call void @finch_panic_index(ptr @.str.3497, i64 2699, i64 %t375, i64 %t377) - unreachable -inrange5506: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.gen.Scope, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.gen.Scope, ptr %t380, i32 0, i32 0 - %t382 = load i64, ptr %a342 - %t383 = load { ptr, i64, i64 }, ptr %t381 - %t384 = extractvalue { ptr, i64, i64 } %t383, 1 - %t385 = icmp uge i64 %t382, %t384 - br i1 %t385, label %range5507, label %inrange5508 -range5507: - call void @finch_panic_index(ptr @.str.3498, i64 2699, i64 %t382, i64 %t384) - unreachable -inrange5508: - %t386 = extractvalue { ptr, i64, i64 } %t383, 0 - %t387 = getelementptr inbounds %S.gen.Var, ptr %t386, i64 %t382 - %t388 = getelementptr inbounds %S.gen.Var, ptr %t387, i32 0, i32 4 - %t389 = load i64, ptr %t388 - %t390 = load ptr, ptr %a1 - %t391 = icmp eq ptr %t390, null - br i1 %t391, label %panic5509, label %ok5510 -panic5509: - call void @finch_panic(ptr @.str.3499, i64 2699, ptr @.str.3500) - unreachable -ok5510: - %t392 = getelementptr inbounds %S.gen.Gen, ptr %t390, i32 0, i32 45 - %t393 = load i64, ptr %t392 - %t394 = icmp sge i64 %t389, %t393 - br label %logic.rend5511 -logic.rend5511: - br label %logic.end5502 -logic.end5502: - %t395 = phi i1 [ false, %logic.from5500 ], [ %t394, %logic.rend5511 ] - %t396 = xor i1 %t395, true - br label %logic.rend5512 -logic.rend5512: - br label %logic.end5497 -logic.end5497: - %t397 = phi i1 [ false, %logic.from5495 ], [ %t396, %logic.rend5512 ] - br i1 %t397, label %then5513, label %endif5515 -then5513: - %t398 = load i64, ptr %a342 - store i64 %t398, ptr %a329 - br label %endif5515 -endif5515: - br label %for.step5487 -for.step5487: - %t399 = load i64, ptr %a342 - %t400 = add i64 %t399, 1 - store i64 %t400, ptr %a342 - br label %for.cond5485 -for.end5488: - %t401 = load i64, ptr %a329 - %t402 = icmp slt i64 %t401, 0 - br i1 %t402, label %then5516, label %endif5518 -then5516: - br label %while.cond5478 -endif5518: - %t403 = load ptr, ptr %a1 - %t404 = icmp eq ptr %t403, null - br i1 %t404, label %panic5519, label %ok5520 -panic5519: - call void @finch_panic(ptr @.str.3501, i64 2706, ptr @.str.3502) - unreachable -ok5520: - %t405 = getelementptr inbounds %S.gen.Gen, ptr %t403, i32 0, i32 10 - %t406 = load i64, ptr %a324 - %t407 = load { ptr, i64, i64 }, ptr %t405 - %t408 = extractvalue { ptr, i64, i64 } %t407, 1 - %t409 = icmp uge i64 %t406, %t408 - br i1 %t409, label %range5521, label %inrange5522 -range5521: - call void @finch_panic_index(ptr @.str.3503, i64 2706, i64 %t406, i64 %t408) - unreachable -inrange5522: - %t410 = extractvalue { ptr, i64, i64 } %t407, 0 - %t411 = getelementptr inbounds %S.gen.Scope, ptr %t410, i64 %t406 - %t412 = getelementptr inbounds %S.gen.Scope, ptr %t411, i32 0, i32 0 - %t413 = load i64, ptr %a329 - %t414 = load { ptr, i64, i64 }, ptr %t412 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5523, label %inrange5524 -range5523: - call void @finch_panic_index(ptr @.str.3504, i64 2706, i64 %t413, i64 %t415) - unreachable -inrange5524: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.gen.Var, ptr %t417, i64 %t413 - %t419 = load %S.gen.Var, ptr %t418 - store %S.gen.Var %t419, ptr %a420 - call void @finch.copy.S_gen_Var(ptr %a421, ptr %a420) - %t422 = load %S.gen.Var, ptr %a421 - store %S.gen.Var %t422, ptr %a423 - %t424 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 5 - %t425 = load i1, ptr %t424 - br label %logic.from5525 -logic.from5525: - br i1 %t425, label %logic.rhs5526, label %logic.end5527 -logic.rhs5526: - %t426 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t427 = load %S.ast.Type, ptr %t426 - %t428 = load ptr, ptr %a1 - %t429 = icmp eq ptr %t428, null - br i1 %t429, label %panic5528, label %ok5529 -panic5528: - call void @finch_panic(ptr @.str.3505, i64 2707, ptr @.str.3506) - unreachable -ok5529: - %t430 = getelementptr inbounds %S.gen.Gen, ptr %t428, i32 0, i32 13 - %t431 = getelementptr inbounds %S.gen.FnSig, ptr %t430, i32 0, i32 12 - %t432 = load %S.ast.Type, ptr %t431 - %t433 = call i1 @finch.ast.same(%S.ast.Type %t427, %S.ast.Type %t432) - br label %logic.rend5530 -logic.rend5530: - br label %logic.end5527 -logic.end5527: - %t434 = phi i1 [ false, %logic.from5525 ], [ %t433, %logic.rend5530 ] - br i1 %t434, label %then5531, label %endif5533 -then5531: - %t435 = load ptr, ptr %a1 - %t436 = load ptr, ptr %a1 - %t437 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 1 - %t438 = load %S.ast.Type, ptr %t437 - %t439 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t438) - %t440 = getelementptr inbounds %S.gen.Var, ptr %a423, i32 0, i32 2 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = call { ptr, i64, i64 } @finch.gen.load(ptr %t435, { ptr, i64, i64 } %t439, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch_str_drop(ptr %a443) - store { ptr, i64, i64 } %t442, ptr %a444 - %t445 = load ptr, ptr %a1 - %t446 = icmp eq ptr %t445, null - br i1 %t446, label %panic5534, label %ok5535 -panic5534: - call void @finch_panic(ptr @.str.3507, i64 2709, ptr @.str.3508) - unreachable -ok5535: - %t447 = getelementptr inbounds %S.gen.Gen, ptr %t445, i32 0, i32 10 - %t448 = load i64, ptr %a324 - %t449 = load { ptr, i64, i64 }, ptr %t447 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 %t448, %t450 - br i1 %t451, label %range5536, label %inrange5537 -range5536: - call void @finch_panic_index(ptr @.str.3509, i64 2709, i64 %t448, i64 %t450) - unreachable -inrange5537: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.gen.Scope, ptr %t452, i64 %t448 - %t454 = getelementptr inbounds %S.gen.Scope, ptr %t453, i32 0, i32 0 - %t455 = load i64, ptr %a329 - %t456 = load { ptr, i64, i64 }, ptr %t454 - %t457 = extractvalue { ptr, i64, i64 } %t456, 1 - %t458 = icmp uge i64 %t455, %t457 - br i1 %t458, label %range5538, label %inrange5539 -range5538: - call void @finch_panic_index(ptr @.str.3510, i64 2709, i64 %t455, i64 %t457) - unreachable -inrange5539: - %t459 = extractvalue { ptr, i64, i64 } %t456, 0 - %t460 = getelementptr inbounds %S.gen.Var, ptr %t459, i64 %t455 - %t461 = getelementptr inbounds %S.gen.Var, ptr %t460, i32 0, i32 6 - store i1 true, ptr %t461 - %t462 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t462, i64 0) - %t463 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t463, i64 0) - %t464 = load ptr, ptr %a1 - %t465 = icmp eq ptr %t464, null - br i1 %t465, label %panic5540, label %ok5541 -panic5540: - call void @finch_panic(ptr @.str.3511, i64 2712, ptr @.str.3512) - unreachable -ok5541: - %t466 = getelementptr inbounds %S.gen.Gen, ptr %t464, i32 0, i32 10 - %t467 = load i64, ptr %a324 - %t468 = load { ptr, i64, i64 }, ptr %t466 - %t469 = extractvalue { ptr, i64, i64 } %t468, 1 - %t470 = icmp uge i64 %t467, %t469 - br i1 %t470, label %range5542, label %inrange5543 -range5542: - call void @finch_panic_index(ptr @.str.3513, i64 2712, i64 %t467, i64 %t469) - unreachable -inrange5543: - %t471 = extractvalue { ptr, i64, i64 } %t468, 0 - %t472 = getelementptr inbounds %S.gen.Scope, ptr %t471, i64 %t467 - %t473 = getelementptr inbounds %S.gen.Scope, ptr %t472, i32 0, i32 0 - %t474 = load i64, ptr %a329 - %t475 = load { ptr, i64, i64 }, ptr %t473 - %t476 = extractvalue { ptr, i64, i64 } %t475, 1 - %t477 = icmp uge i64 %t474, %t476 - br i1 %t477, label %range5544, label %inrange5545 -range5544: - call void @finch_panic_index(ptr @.str.3514, i64 2712, i64 %t474, i64 %t476) - unreachable -inrange5545: - %t478 = extractvalue { ptr, i64, i64 } %t475, 0 - %t479 = getelementptr inbounds %S.gen.Var, ptr %t478, i64 %t474 - %t480 = getelementptr inbounds %S.gen.Var, ptr %t479, i32 0, i32 6 - store i1 false, ptr %t480 - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a444 - call void @finch.gen.finishReturn(ptr %t481, { ptr, i64, i64 } %t482) - call void @finch_str_drop(ptr %a444) - call void @finch.drop.S_gen_Var(ptr %a423) - call void @finch_str_drop(ptr %a318) - ret void -endif5533: - call void @finch.drop.S_gen_Var(ptr %a423) - br label %while.end5480 -while.end5480: - call void @finch_str_drop(ptr %a318) - br label %endif5473 -endif5473: - %t483 = load ptr, ptr %a1 - %t484 = load ptr, ptr %a1 - %t485 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range5546, label %inrange5547 -range5546: - call void @finch_panic_index(ptr @.str.3515, i64 2719, i64 0, i64 %t487) - unreachable -inrange5547: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = load ptr, ptr %a1 - %t493 = icmp eq ptr %t492, null - br i1 %t493, label %panic5548, label %ok5549 -panic5548: - call void @finch_panic(ptr @.str.3516, i64 2719, ptr @.str.3517) - unreachable -ok5549: - %t494 = getelementptr inbounds %S.gen.Gen, ptr %t492, i32 0, i32 13 - %t495 = getelementptr inbounds %S.gen.FnSig, ptr %t494, i32 0, i32 12 - %t496 = load %S.ast.Type, ptr %t495 - %t497 = call %S.gen.Val @finch.gen.exprWant(ptr %t484, %S.ast.Node %t491, %S.ast.Type %t496) - %t498 = load ptr, ptr %a1 - %t499 = icmp eq ptr %t498, null - br i1 %t499, label %panic5550, label %ok5551 -panic5550: - call void @finch_panic(ptr @.str.3518, i64 2719, ptr @.str.3519) - unreachable -ok5551: - %t500 = getelementptr inbounds %S.gen.Gen, ptr %t498, i32 0, i32 13 - %t501 = getelementptr inbounds %S.gen.FnSig, ptr %t500, i32 0, i32 12 - %t502 = load %S.ast.Type, ptr %t501 - %t503 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t504 = load { ptr, i64, i64 }, ptr %t503 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 0, %t505 - br i1 %t506, label %range5552, label %inrange5553 -range5552: - call void @finch_panic_index(ptr @.str.3520, i64 2719, i64 0, i64 %t505) - unreachable -inrange5553: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 0 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = call %S.gen.Val @finch.gen.coerce(ptr %t483, %S.gen.Val %t497, %S.ast.Type %t502, %S.ast.Node %t509, { ptr, i64, i64 } { ptr @.str.3521, i64 18, i64 0 }) - store %S.gen.Val %t497, ptr %a511 - call void @finch.drop.S_gen_Val(ptr %a511) - store %S.gen.Val %t510, ptr %a512 - %t513 = load ptr, ptr %a1 - %t514 = load %S.gen.Val, ptr %a512 - %t515 = call { ptr, i64, i64 } @finch.gen.own(ptr %t513, %S.gen.Val %t514) - store { ptr, i64, i64 } %t515, ptr %a516 - %t517 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t517, i64 0) - %t518 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t518, i64 0) - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a516 - call void @finch.gen.finishReturn(ptr %t519, { ptr, i64, i64 } %t520) - call void @finch_str_drop(ptr %a516) - call void @finch.drop.S_gen_Val(ptr %a512) - ret void -} - -define internal void @finch.gen.finishReturn(ptr %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic5554, label %ok5555 -panic5554: - call void @finch_panic(ptr @.str.3522, i64 2727, ptr @.str.3523) - unreachable -ok5555: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 13 - %t6 = getelementptr inbounds %S.gen.FnSig, ptr %t5, i32 0, i32 9 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then5556, label %else5557 -then5556: - %t8 = load ptr, ptr %a1 - %t9 = load ptr, ptr %a1 - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic5559, label %ok5560 -panic5559: - call void @finch_panic(ptr @.str.3525, i64 2728, ptr @.str.3526) - unreachable -ok5560: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = load %S.gen.FnSig, ptr %t12 - %t14 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t9, %S.gen.FnSig %t13) - store { ptr, i64, i64 } { ptr @.str.3524, i64 12, i64 0 }, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.3527, i64 28, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - %t25 = call { ptr, i64, i64 } @finch.gen.op(ptr %t8, { ptr, i64, i64 } %t24) - store { ptr, i64, i64 } %t24, ptr %a26 - call void @finch_str_drop(ptr %a26) - store { ptr, i64, i64 } %t25, ptr %a27 - %t28 = load ptr, ptr %a1 - %t29 = load ptr, ptr %a1 - %t30 = load ptr, ptr %a1 - %t31 = icmp eq ptr %t30, null - br i1 %t31, label %panic5561, label %ok5562 -panic5561: - call void @finch_panic(ptr @.str.3529, i64 2729, ptr @.str.3530) - unreachable -ok5562: - %t32 = getelementptr inbounds %S.gen.Gen, ptr %t30, i32 0, i32 13 - %t33 = load %S.gen.FnSig, ptr %t32 - %t34 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t29, %S.gen.FnSig %t33) - store { ptr, i64, i64 } { ptr @.str.3528, i64 12, i64 0 }, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t34, ptr %a38 - call void @finch_str_drop(ptr %a38) - %t39 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t39, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.3531, i64 1, i64 0 }, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - %t45 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t44, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - store { ptr, i64, i64 } %t44, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3532, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load ptr, ptr %a1 - %t57 = load ptr, ptr %a1 - %t58 = icmp eq ptr %t57, null - br i1 %t58, label %panic5563, label %ok5564 -panic5563: - call void @finch_panic(ptr @.str.3533, i64 2729, ptr @.str.3534) - unreachable -ok5564: - %t59 = getelementptr inbounds %S.gen.Gen, ptr %t57, i32 0, i32 13 - %t60 = getelementptr inbounds %S.gen.FnSig, ptr %t59, i32 0, i32 12 - %t61 = load %S.ast.Type, ptr %t60 - %t62 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t56, %S.ast.Type %t61) - store { ptr, i64, i64 } %t55, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t55, ptr %a66 - call void @finch_str_drop(ptr %a66) - store { ptr, i64, i64 } %t62, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t68, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.3535, i64 1, i64 0 }, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t73, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3536, i64 3, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = call { ptr, i64, i64 } @finch.gen.op(ptr %t28, { ptr, i64, i64 } %t84) - store { ptr, i64, i64 } %t84, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load ptr, ptr %a1 - %t90 = load ptr, ptr %a1 - %t91 = icmp eq ptr %t90, null - br i1 %t91, label %panic5565, label %ok5566 -panic5565: - call void @finch_panic(ptr @.str.3538, i64 2730, ptr @.str.3539) - unreachable -ok5566: - %t92 = getelementptr inbounds %S.gen.Gen, ptr %t90, i32 0, i32 13 - %t93 = load %S.gen.FnSig, ptr %t92 - %t94 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t89, %S.gen.FnSig %t93) - store { ptr, i64, i64 } { ptr @.str.3537, i64 4, i64 0 }, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3540, i64 1, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t104, ptr %a107 - store { ptr, i64, i64 } %t105, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a27) - br label %endif5558 -else5557: - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic5567, label %ok5568 -panic5567: - call void @finch_panic(ptr @.str.3542, i64 2732, ptr @.str.3543) - unreachable -ok5568: - %t116 = getelementptr inbounds %S.gen.Gen, ptr %t114, i32 0, i32 13 - %t117 = getelementptr inbounds %S.gen.FnSig, ptr %t116, i32 0, i32 12 - %t118 = load %S.ast.Type, ptr %t117 - %t119 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t113, %S.ast.Type %t118) - store { ptr, i64, i64 } { ptr @.str.3541, i64 4, i64 0 }, ptr %a121 - store { ptr, i64, i64 } %t119, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t124, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.3544, i64 1, i64 0 }, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a125 - %t130 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t129, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t129, ptr %a134 - call void @finch_str_drop(ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a131 - call void @finch.gen.emit(ptr %t112, { ptr, i64, i64 } %t135) - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - br label %endif5558 -endif5558: - %t137 = load ptr, ptr %a1 - %t138 = icmp eq ptr %t137, null - br i1 %t138, label %panic5569, label %ok5570 -panic5569: - call void @finch_panic(ptr @.str.3545, i64 2734, ptr @.str.3546) - unreachable -ok5570: - %t139 = getelementptr inbounds %S.gen.Gen, ptr %t137, i32 0, i32 9 - store i1 true, ptr %t139 - 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 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range5571, label %inrange5572 -range5571: - call void @finch_panic_index(ptr @.str.3548, i64 2746, i64 0, i64 %t6) - unreachable -inrange5572: - %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.3547, i64 7, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.3549, i64 2, i64 0 }, ptr %a19 - call void @finch_str_concat(ptr %a17, ptr %a18, ptr %a19) - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a17 - %t22 = load ptr, ptr %a1 - %t23 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 1 - %t24 = load { ptr, i64, i64 }, ptr %t23 - %t25 = extractvalue { ptr, i64, i64 } %t24, 1 - %t26 = icmp uge i64 1, %t25 - br i1 %t26, label %range5573, label %inrange5574 -range5573: - call void @finch_panic_index(ptr @.str.3550, i64 2746, i64 1, i64 %t25) - unreachable -inrange5574: - %t27 = extractvalue { ptr, i64, i64 } %t24, 0 - %t28 = getelementptr inbounds %S.ast.Type, ptr %t27, i64 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t22, %S.ast.Type %t29) - store { ptr, i64, i64 } %t21, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t21, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t30, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t36, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.3551, i64 2, i64 0 }, ptr %a39 - call void @finch_str_concat(ptr %a37, ptr %a38, ptr %a39) - store { ptr, i64, i64 } %t36, ptr %a40 - call void @finch_str_drop(ptr %a40) - %t41 = load { ptr, i64, i64 }, ptr %a37 - ret { ptr, i64, i64 } %t41 -} - -define internal { ptr, i64, i64 } @finch.gen.entrySize(ptr %p0, %S.ast.Type %p1) { -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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load %S.ast.Type, ptr %a2 - %t5 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t3, %S.ast.Type %t4) - store { ptr, i64, i64 } { ptr @.str.3552, i64 29, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t5, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t5, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.3553, i64 26, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - ret { ptr, i64, i64 } %t15 -} - -define internal { ptr, i64, i64 } @finch.gen.entryAt(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -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 - %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 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3555, i64 23, i64 0 }, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t9, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.3556, i64 6, i64 0 }, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t14, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t19, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t19, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.3557, i64 14, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = call { ptr, i64, i64 } @finch.gen.op(ptr %t6, { ptr, i64, i64 } %t30) - store { ptr, i64, i64 } %t30, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = call { ptr, i64, i64 } @finch.gen.load(ptr %t5, { ptr, i64, i64 } { ptr @.str.3554, i64 3, i64 0 }, { ptr, i64, i64 } %t31) - store { ptr, i64, i64 } %t31, ptr %a34 - call void @finch_str_drop(ptr %a34) - store { ptr, i64, i64 } %t33, ptr %a35 - %t36 = load ptr, ptr %a1 - %t37 = load ptr, ptr %a1 - %t38 = load %S.ast.Type, ptr %a3 - %t39 = call { ptr, i64, i64 } @finch.gen.entryTy(ptr %t37, %S.ast.Type %t38) - store { ptr, i64, i64 } { ptr @.str.3558, i64 23, i64 0 }, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t44, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.3559, i64 6, i64 0 }, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - store { ptr, i64, i64 } %t44, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t49, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.3560, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = call { ptr, i64, i64 } @finch.gen.op(ptr %t36, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a68 - call void @finch_str_drop(ptr %a68) - call void @finch_str_drop(ptr %a35) - ret { ptr, i64, i64 } %t67 -} - -define internal { ptr, i64, i64 } @finch.gen.entryField(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, i64 %p3) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3561, i64 23, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.3562, i64 6, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - %t19 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t18, ptr %a21 - store { ptr, i64, i64 } %t19, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3563, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - %t39 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - ret { ptr, i64, i64 } %t39 -} - -define internal { ptr, i64, i64 } @finch.gen.mapArgs(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %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 - %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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Type %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.3564, 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 %range5575, label %inrange5576 -range5575: - call void @finch_panic_index(ptr @.str.3565, i64 2766, i64 0, i64 %t8) - unreachable -inrange5576: - %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.3566, 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 %then5577, label %endif5579 -then5577: - %t18 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3567, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif5579 -endif5579: - %t20 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.3568, i64 4, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.3569, i64 6, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t29, ptr %a32 - store { ptr, i64, i64 } %t30, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t29, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t35, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.3570, i64 6, i64 0 }, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load ptr, ptr %a1 - %t42 = load %S.ast.Type, ptr %a4 - %t43 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t41, %S.ast.Type %t42) - store { ptr, i64, i64 } %t40, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t40, ptr %a47 - call void @finch_str_drop(ptr %a47) - store { ptr, i64, i64 } %t43, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3571, i64 6, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load ptr, ptr %a1 - %t56 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 1 - %t57 = load { ptr, i64, i64 }, ptr %t56 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 0, %t58 - br i1 %t59, label %range5580, label %inrange5581 -range5580: - call void @finch_panic_index(ptr @.str.3572, i64 2769, i64 0, i64 %t58) - unreachable -inrange5581: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i64 0 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t55, %S.ast.Type %t62) - store { ptr, i64, i64 } %t54, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t54, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.3573, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - call void @finch_str_drop(ptr %a5) - ret { ptr, i64, i64 } %t80 -} - -define internal { ptr, i64, i64 } @finch.gen.mapFind(ptr %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.3574, i64 25, i64 0 }, ptr %a12 - store { ptr, i64, i64 } %t10, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.3575, i64 1, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - %t21 = call { ptr, i64, i64 } @finch.gen.op(ptr %t5, { ptr, i64, i64 } %t20) - store { ptr, i64, i64 } %t20, ptr %a22 - call void @finch_str_drop(ptr %a22) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.gen.defaultVal(ptr %p0, %S.ast.Type %p1, %S.ast.Node %p2) { -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 - %a31 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3576, 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.from5582 -logic.from5582: - br i1 %t9, label %logic.rhs5583, label %logic.end5584 -logic.rhs5583: - %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.rend5585 -logic.rend5585: - br label %logic.end5584 -logic.end5584: - %t13 = phi i1 [ false, %logic.from5582 ], [ %t12, %logic.rend5585 ] - br i1 %t13, label %then5586, label %endif5588 -then5586: - 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 - store %S.gen.Val %t26, ptr %a31 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.arr_str(ptr %a15) - call void @finch.drop.arr_S_ast_Node(ptr %a14) - ret { ptr, i64, i64 } %t30 -endif5588: - %t32 = load %S.ast.Type, ptr %a2 - %t33 = call { ptr, i64, i64 } @finch.gen.zeroOf(%S.ast.Type %t32) - ret { ptr, i64, i64 } %t33 -} - -define internal { ptr, i64, i64 } @finch.gen.mapSlot(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, %S.gen.Val %p3, i1 %p4, %S.ast.Node %p5) { -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 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a130 = alloca %S.gen.Val, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - 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.3577, 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.3578, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3579, 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.3580, i64 25, i64 0 }, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - store { ptr, i64, i64 } %t21, ptr %a25 - call void @finch_str_drop(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.3581, i64 6, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3582, i64 1, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = call { ptr, i64, i64 } @finch.gen.op(ptr %t16, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t43, ptr %a45 - %t46 = load ptr, ptr %a1 - %t47 = load { ptr, i64, i64 }, ptr %a2 - %t48 = load %S.ast.Type, ptr %a3 - %t49 = load { ptr, i64, i64 }, ptr %a45 - %t50 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t46, { ptr, i64, i64 } %t47, %S.ast.Type %t48, { ptr, i64, i64 } %t49) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t52, { ptr, i64, i64 } { ptr @.str.3583, i64 7, i64 0 }) - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = load ptr, ptr %a1 - %t56 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t55, { ptr, i64, i64 } { ptr @.str.3584, i64 8, i64 0 }) - store { ptr, i64, i64 } %t56, ptr %a57 - %t58 = load ptr, ptr %a1 - %t59 = load ptr, ptr %a1 - %t60 = load ptr, ptr %a1 - %t61 = load { ptr, i64, i64 }, ptr %a13 - %t62 = call { ptr, i64, i64 } @finch.gen.load(ptr %t60, { ptr, i64, i64 } { ptr @.str.3586, i64 3, i64 0 }, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } { ptr @.str.3585, i64 12, i64 0 }, ptr %a64 - store { ptr, i64, i64 } %t62, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - store { ptr, i64, i64 } %t67, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.3587, i64 3, i64 0 }, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - %t73 = call { ptr, i64, i64 } @finch.gen.op(ptr %t59, { ptr, i64, i64 } %t72) - store { ptr, i64, i64 } %t72, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a54 - %t76 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.condBr(ptr %t58, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75, { ptr, i64, i64 } %t76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load ptr, ptr %a1 - %t79 = load { ptr, i64, i64 }, ptr %a54 - call void @finch.gen.label(ptr %t78, { ptr, i64, i64 } %t79) - %t80 = load ptr, ptr %a1 - %t81 = load ptr, ptr %a1 - %t82 = load { ptr, i64, i64 }, ptr %a51 - %t83 = load %S.ast.Type, ptr %a3 - %t84 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t81, { ptr, i64, i64 } %t82, %S.ast.Type %t83, i64 1) - %t85 = load { ptr, i64, i64 }, ptr %a10 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - %t88 = extractvalue { ptr, i64, i64 } %t87, 1 - %t89 = icmp uge i64 0, %t88 - br i1 %t89, label %range5589, label %inrange5590 -range5589: - call void @finch_panic_index(ptr @.str.3588, i64 2797, i64 0, i64 %t88) - unreachable -inrange5590: - %t90 = extractvalue { ptr, i64, i64 } %t87, 0 - %t91 = getelementptr inbounds %S.ast.Type, ptr %t90, i64 0 - %t92 = load %S.ast.Type, ptr %t91 - call void @finch.gen.copyAt(ptr %t80, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t85, %S.ast.Type %t92) - store { ptr, i64, i64 } %t84, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load i1, ptr %a5 - br i1 %t94, label %then5591, label %endif5593 -then5591: - %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 %range5594, label %inrange5595 -range5594: - call void @finch_panic_index(ptr @.str.3589, i64 2799, i64 1, i64 %t99) - unreachable -inrange5595: - %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 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t96, %S.ast.Type %t103) - %t105 = load ptr, ptr %a1 - %t106 = load ptr, ptr %a1 - %t107 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t108 = load { ptr, i64, i64 }, ptr %t107 - %t109 = extractvalue { ptr, i64, i64 } %t108, 1 - %t110 = icmp uge i64 1, %t109 - br i1 %t110, label %range5596, label %inrange5597 -range5596: - call void @finch_panic_index(ptr @.str.3590, i64 2799, i64 1, i64 %t109) - unreachable -inrange5597: - %t111 = extractvalue { ptr, i64, i64 } %t108, 0 - %t112 = getelementptr inbounds %S.ast.Type, ptr %t111, i64 1 - %t113 = load %S.ast.Type, ptr %t112 - %t114 = load %S.ast.Node, ptr %a6 - %t115 = call { ptr, i64, i64 } @finch.gen.defaultVal(ptr %t106, %S.ast.Type %t113, %S.ast.Node %t114) - %t116 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t115, 0 - %t117 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t118 = load { ptr, i64, i64 }, ptr %t117 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 1, %t119 - br i1 %t120, label %range5598, label %inrange5599 -range5598: - call void @finch_panic_index(ptr @.str.3591, i64 2799, i64 1, i64 %t119) - unreachable -inrange5599: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Type, ptr %t121, i64 1 - %t123 = load %S.ast.Type, ptr %t122 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t116, %S.ast.Type %t126, 1 - %t128 = insertvalue %S.gen.Val %t127, i1 true, 2 - %t129 = call { ptr, i64, i64 } @finch.gen.own(ptr %t105, %S.gen.Val %t128) - store %S.gen.Val %t128, ptr %a130 - call void @finch.drop.S_gen_Val(ptr %a130) - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a51 - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t131, { ptr, i64, i64 } %t132, %S.ast.Type %t133, i64 2) - call void @finch.gen.store(ptr %t95, { ptr, i64, i64 } %t104, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t134) - store { ptr, i64, i64 } %t104, ptr %a135 - call void @finch_str_drop(ptr %a135) - store { ptr, i64, i64 } %t129, ptr %a136 - call void @finch_str_drop(ptr %a136) - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif5593 -endif5593: - %t138 = load ptr, ptr %a1 - %t139 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.br(ptr %t138, { ptr, i64, i64 } %t139) - %t140 = load ptr, ptr %a1 - %t141 = load { ptr, i64, i64 }, ptr %a57 - call void @finch.gen.label(ptr %t140, { ptr, i64, i64 } %t141) - %t142 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a54) - call void @finch_str_drop(ptr %a45) - call void @finch_str_drop(ptr %a13) - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t142 -} - -define internal %S.gen.Ref @finch.gen.mapIndex(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, %S.ast.Type %p3, i1 %p4) { -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 - %a49 = alloca %S.gen.Val, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a242 = alloca %S.gen.Val, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a257 = alloca %S.ast.Type, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a268 = alloca %S.gen.Val, align 16 - %a269 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - 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 %range5600, label %inrange5601 -range5600: - call void @finch_panic_index(ptr @.str.3592, i64 2808, i64 0, i64 %t8) - unreachable -inrange5601: - %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 %range5602, label %inrange5603 -range5602: - call void @finch_panic_index(ptr @.str.3593, i64 2809, i64 1, i64 %t19) - unreachable -inrange5603: - %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 %range5604, label %inrange5605 -range5604: - call void @finch_panic_index(ptr @.str.3594, i64 2810, i64 1, i64 %t32) - unreachable -inrange5605: - %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 %range5606, label %inrange5607 -range5606: - call void @finch_panic_index(ptr @.str.3595, i64 2810, i64 1, i64 %t42) - unreachable -inrange5607: - %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.3596, i64 7, i64 0 }) - store %S.gen.Val %t38, ptr %a48 - call void @finch.drop.S_gen_Val(ptr %a48) - store %S.gen.Val %t47, ptr %a49 - %t50 = load i1, ptr %a5 - br i1 %t50, label %then5608, label %endif5610 -then5608: - %t51 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t52 = load i1, ptr %t51 - %t53 = xor i1 %t52, true - br i1 %t53, label %then5611, label %endif5613 -then5611: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t54, %S.ast.Node %t55, { ptr, i64, i64 } { ptr @.str.3597, i64 44, i64 0 }) - br label %endif5613 -endif5613: - %t56 = load ptr, ptr %a1 - %t57 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t58 = getelementptr inbounds %S.gen.Place, ptr %t57, i32 0, i32 0 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = load %S.ast.Type, ptr %a4 - %t61 = load %S.gen.Val, ptr %a49 - %t62 = load %S.ast.Node, ptr %a2 - %t63 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t56, { ptr, i64, i64 } %t59, %S.ast.Type %t60, %S.gen.Val %t61, i1 true, %S.ast.Node %t62) - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t65, %S.gen.Val %t66) - %t67 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t68 = load ptr, ptr %a1 - %t69 = load { ptr, i64, i64 }, ptr %a64 - %t70 = load %S.ast.Type, ptr %a4 - %t71 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t68, { ptr, i64, i64 } %t69, %S.ast.Type %t70, i64 2) - %t72 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t71, 0 - %t73 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t73, ptr %a74 - call void @finch.copy.S_ast_Type(ptr %a75, ptr %a74) - %t76 = load %S.ast.Type, ptr %a75 - %t77 = insertvalue %S.gen.Place %t72, %S.ast.Type %t76, 1 - %t78 = insertvalue %S.gen.Ref %t67, %S.gen.Place %t77, 1 - call void @finch_str_drop(ptr %a64) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t78 -endif5610: - store { ptr, i64, i64 } { ptr @.str.3598, i64 0, i64 0 }, ptr %a79 - %t80 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t81 = load i1, ptr %t80 - br i1 %t81, label %then5614, label %else5615 -then5614: - %t82 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t83 = getelementptr inbounds %S.gen.Place, ptr %t82, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - store { ptr, i64, i64 } %t84, ptr %a85 - call void @finch_str_copy(ptr %a86, ptr %a85) - %t87 = load { ptr, i64, i64 }, ptr %a86 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t87, ptr %a79 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %endif5616 -else5615: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t92 = load %S.gen.Val, ptr %t91 - %t93 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t90, %S.gen.Val %t92) - %t94 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t93, ptr %a79 - store { ptr, i64, i64 } %t94, ptr %a95 - call void @finch_str_drop(ptr %a95) - br label %endif5616 -endif5616: - %t96 = load ptr, ptr %a1 - %t97 = load %S.gen.Val, ptr %a49 - %t98 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t96, %S.gen.Val %t97) - store { ptr, i64, i64 } %t98, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a79 - %t102 = load { ptr, i64, i64 }, ptr %a99 - %t103 = load %S.ast.Type, ptr %a4 - %t104 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t100, { ptr, i64, i64 } %t101, { ptr, i64, i64 } %t102, %S.ast.Type %t103) - store { ptr, i64, i64 } %t104, ptr %a105 - %t106 = load ptr, ptr %a1 - %t107 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t106, { ptr, i64, i64 } { ptr @.str.3599, i64 11, i64 0 }) - store { ptr, i64, i64 } %t107, ptr %a108 - %t109 = load ptr, ptr %a1 - %t110 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t109, { ptr, i64, i64 } { ptr @.str.3600, i64 9, i64 0 }) - store { ptr, i64, i64 } %t110, ptr %a111 - %t112 = load ptr, ptr %a1 - %t113 = load ptr, ptr %a1 - %t114 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.3601, i64 13, i64 0 }, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.3602, i64 3, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t123, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a108 - %t127 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.condBr(ptr %t112, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } %t127) - store { ptr, i64, i64 } %t124, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a108 - call void @finch.gen.label(ptr %t129, { ptr, i64, i64 } %t130) - %t131 = load ptr, ptr %a1 - %t132 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t131, { ptr, i64, i64 } { ptr @.str.3603, i64 17, i64 0 }) - store { ptr, i64, i64 } %t132, ptr %a133 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.store(ptr %t134, { ptr, i64, i64 } { ptr @.str.3604, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3605, i64 15, i64 0 }, { ptr, i64, i64 } %t135) - %t136 = load ptr, ptr %a1 - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = getelementptr inbounds %S.gen.Val, ptr %a49, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - %t140 = load %S.ast.Type, ptr %a16 - call void @finch.gen.emitFormat(ptr %t136, { ptr, i64, i64 } %t137, { ptr, i64, i64 } %t139, %S.ast.Type %t140, i1 true) - %t141 = load ptr, ptr %a1 - %t142 = load ptr, ptr %a1 - %t143 = load ptr, ptr %a1 - %t144 = icmp eq ptr %t143, null - br i1 %t144, label %panic5617, label %ok5618 -panic5617: - call void @finch_panic(ptr @.str.3607, i64 2834, ptr @.str.3608) - unreachable -ok5618: - %t145 = getelementptr inbounds %S.gen.Gen, ptr %t143, i32 0, i32 1 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t147 = load i64, ptr %t146 - %t148 = load { ptr, i64, i64 }, ptr %t145 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 %t147, %t149 - br i1 %t150, label %range5619, label %inrange5620 -range5619: - call void @finch_panic_index(ptr @.str.3609, i64 2834, i64 %t147, i64 %t149) - unreachable -inrange5620: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i64 %t147 - %t153 = load { ptr, i64, i64 }, ptr %t152 - %t154 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t142, { ptr, i64, i64 } %t153) - store { ptr, i64, i64 } { ptr @.str.3606, i64 33, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t159, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3610, i64 6, i64 0 }, ptr %a162 - call void @finch_str_concat(ptr %a160, ptr %a161, ptr %a162) - store { ptr, i64, i64 } %t159, ptr %a163 - call void @finch_str_drop(ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a160 - %t165 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t166 = load i64, ptr %t165 - call void @finch_str_from_int(ptr %a167, i64 %t166) - %t168 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t164, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t164, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t168, ptr %a173 - call void @finch_str_drop(ptr %a173) - %t174 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t174, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.3611, i64 6, i64 0 }, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t174, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t179, ptr %a182 - store { ptr, i64, i64 } %t180, ptr %a183 - call void @finch_str_concat(ptr %a181, ptr %a182, ptr %a183) - store { ptr, i64, i64 } %t179, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load { ptr, i64, i64 }, ptr %a181 - store { ptr, i64, i64 } %t185, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.3612, i64 1, i64 0 }, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - store { ptr, i64, i64 } %t185, ptr %a189 - call void @finch_str_drop(ptr %a189) - %t190 = load { ptr, i64, i64 }, ptr %a186 - call void @finch.gen.emit(ptr %t141, { ptr, i64, i64 } %t190) - store { ptr, i64, i64 } %t190, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t192, { ptr, i64, i64 } { ptr @.str.3613, i64 11, i64 0 }) - %t193 = load ptr, ptr %a1 - %t194 = icmp eq ptr %t193, null - br i1 %t194, label %panic5621, label %ok5622 -panic5621: - call void @finch_panic(ptr @.str.3614, i64 2836, ptr @.str.3615) - unreachable -ok5622: - %t195 = getelementptr inbounds %S.gen.Gen, ptr %t193, i32 0, i32 9 - store i1 true, ptr %t195 - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load ptr, ptr %a1 - %t199 = load %S.gen.Val, ptr %a49 - call void @finch.gen.release(ptr %t198, %S.gen.Val %t199) - %t200 = load ptr, ptr %a1 - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a79 - %t203 = load %S.ast.Type, ptr %a4 - %t204 = load { ptr, i64, i64 }, ptr %a105 - %t205 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t201, { ptr, i64, i64 } %t202, %S.ast.Type %t203, { ptr, i64, i64 } %t204) - %t206 = load %S.ast.Type, ptr %a4 - %t207 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t200, { ptr, i64, i64 } %t205, %S.ast.Type %t206, i64 2) - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_drop(ptr %a208) - store { ptr, i64, i64 } %t207, ptr %a209 - %t210 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t211 = load i1, ptr %t210 - br i1 %t211, label %then5623, label %endif5625 -then5623: - %t212 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t213 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t213, ptr %a214 - call void @finch_str_copy(ptr %a215, ptr %a214) - %t216 = load { ptr, i64, i64 }, ptr %a215 - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t216, 0 - %t218 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t212, %S.gen.Place %t222, 1 - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t223 -endif5625: - %t224 = load ptr, ptr %a1 - %t225 = load ptr, ptr %a1 - %t226 = load %S.ast.Type, ptr %a27 - %t227 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t225, %S.ast.Type %t226) - %t228 = load { ptr, i64, i64 }, ptr %a209 - %t229 = call { ptr, i64, i64 } @finch.gen.load(ptr %t224, { ptr, i64, i64 } %t227, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - store { ptr, i64, i64 } %t229, ptr %a231 - %t232 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t232, ptr %a233 - call void @finch_str_copy(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t235, 0 - %t237 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - %t241 = insertvalue %S.gen.Val %t236, %S.ast.Type %t240, 1 - store %S.gen.Val %t241, ptr %a242 - %t243 = load ptr, ptr %a1 - %t244 = load %S.ast.Type, ptr %a27 - %t245 = call i1 @finch.gen.owning(ptr %t243, %S.ast.Type %t244) - br label %logic.from5626 -logic.from5626: - br i1 %t245, label %logic.rhs5627, label %logic.end5628 -logic.rhs5627: - %t246 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t247 = getelementptr inbounds %S.gen.Val, ptr %t246, i32 0, i32 2 - %t248 = load i1, ptr %t247 - br label %logic.rend5629 -logic.rend5629: - br label %logic.end5628 -logic.end5628: - %t249 = phi i1 [ false, %logic.from5626 ], [ %t248, %logic.rend5629 ] - br i1 %t249, label %then5630, label %endif5632 -then5630: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a231 - %t252 = load %S.ast.Type, ptr %a27 - %t253 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t250, { ptr, i64, i64 } %t251, %S.ast.Type %t252) - %t254 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t253, 0 - %t255 = load %S.ast.Type, ptr %a27 - store %S.ast.Type %t255, ptr %a256 - call void @finch.copy.S_ast_Type(ptr %a257, ptr %a256) - %t258 = load %S.ast.Type, ptr %a257 - %t259 = insertvalue %S.gen.Val %t254, %S.ast.Type %t258, 1 - %t260 = insertvalue %S.gen.Val %t259, i1 true, 2 - %t261 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t260, ptr %a242 - store %S.gen.Val %t261, ptr %a262 - call void @finch.drop.S_gen_Val(ptr %a262) - br label %endif5632 -endif5632: - %t263 = load ptr, ptr %a1 - %t264 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t265 = load %S.gen.Val, ptr %t264 - call void @finch.gen.release(ptr %t263, %S.gen.Val %t265) - %t266 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t267 = load %S.gen.Val, ptr %a242 - store %S.gen.Val %t267, ptr %a268 - call void @finch.copy.S_gen_Val(ptr %a269, ptr %a268) - %t270 = load %S.gen.Val, ptr %a269 - %t271 = insertvalue %S.gen.Ref %t266, %S.gen.Val %t270, 2 - call void @finch.drop.S_gen_Val(ptr %a242) - call void @finch_str_drop(ptr %a231) - call void @finch_str_drop(ptr %a209) - call void @finch_str_drop(ptr %a133) - call void @finch_str_drop(ptr %a111) - call void @finch_str_drop(ptr %a108) - call void @finch_str_drop(ptr %a105) - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a49) - call void @finch.drop.S_ast_Type(ptr %a27) - call void @finch.drop.S_ast_Type(ptr %a16) - ret %S.gen.Ref %t271 -} - -define internal %S.gen.Val @finch.gen.mapLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a71 = alloca %S.ast.Node, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca %S.gen.Val, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a159 = alloca %S.ast.Type, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca i64, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca i64, align 16 - %a208 = alloca %S.gen.Val, align 16 - %a209 = alloca %S.gen.Val, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a236 = alloca %S.gen.Val, align 16 - %a257 = alloca %S.gen.Val, align 16 - %a261 = alloca %S.gen.Val, align 16 - %a262 = alloca %S.gen.Val, align 16 - %a264 = alloca %S.gen.Val, align 16 - %a290 = alloca %S.gen.Val, align 16 - %a312 = alloca %S.gen.Val, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca %S.ast.Type, align 16 - %a369 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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.3616, 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 %then5633, label %endif5635 -then5633: - %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 %then5636, label %endif5638 -then5636: - %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.3617, i64 52, i64 0 }) - br label %endif5638 -endif5638: - 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.cond5639 -for.cond5639: - %t31 = load i64, ptr %a30 - %t32 = icmp slt i64 %t31, %t29 - br i1 %t32, label %for.body5640, label %for.end5642 -for.body5640: - %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 %range5643, label %inrange5644 -range5643: - call void @finch_panic_index(ptr @.str.3618, i64 2866, i64 %t36, i64 %t38) - unreachable -inrange5644: - %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.3619, 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.from5645 -logic.from5645: - br i1 %t52, label %logic.rhs5646, label %logic.end5647 -logic.rhs5646: - %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.3620, 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.rend5648 -logic.rend5648: - br label %logic.end5647 -logic.end5647: - %t59 = phi i1 [ false, %logic.from5645 ], [ %t58, %logic.rend5648 ] - br i1 %t59, label %then5649, label %endif5651 -then5649: - %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 %range5652, label %inrange5653 -range5652: - call void @finch_panic_index(ptr @.str.3621, i64 2868, i64 0, i64 %t62) - unreachable -inrange5653: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 0 - %t66 = load %S.ast.Node, ptr %t65 - store %S.ast.Node %t66, ptr %a67 - call void @finch.copy.S_ast_Node(ptr %a68, ptr %a67) - %t69 = load %S.ast.Node, ptr %a68 - %t70 = load %S.ast.Node, ptr %a46 - store %S.ast.Node %t69, ptr %a46 - store %S.ast.Node %t70, ptr %a71 - call void @finch.drop.S_ast_Node(ptr %a71) - br label %endif5651 -endif5651: - %t72 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.3622, i64 5, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then5654, label %else5655 -then5654: - store i1 true, ptr %a25 - br label %endif5656 -else5655: - %t78 = getelementptr inbounds %S.ast.Node, ptr %a46, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.3623, i64 3, i64 0 }, ptr %a81 - %t82 = call i32 @finch_str_eq(ptr %a80, ptr %a81) - %t83 = icmp eq i32 %t82, 0 - br i1 %t83, label %then5657, label %endif5659 -then5657: - store i1 false, ptr %a24 - br label %endif5659 -endif5659: - br label %endif5656 -endif5656: - call void @finch.drop.S_ast_Node(ptr %a46) - br label %for.step5641 -for.step5641: - %t84 = load i64, ptr %a30 - %t85 = add i64 %t84, 1 - store i64 %t85, ptr %a30 - br label %for.cond5639 -for.end5642: - %t86 = load ptr, ptr %a1 - %t87 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range5660, label %inrange5661 -range5660: - call void @finch_panic_index(ptr @.str.3624, i64 2876, i64 0, i64 %t89) - unreachable -inrange5661: - %t91 = extractvalue { ptr, i64, i64 } %t88, 0 - %t92 = getelementptr inbounds %S.ast.Node, ptr %t91, i64 0 - %t93 = load %S.ast.Node, ptr %t92 - %t94 = call %S.gen.Val @finch.gen.expr(ptr %t86, %S.ast.Node %t93) - %t95 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t94, ptr %a10 - store %S.gen.Val %t95, ptr %a96 - call void @finch.drop.S_gen_Val(ptr %a96) - %t97 = load ptr, ptr %a1 - %t98 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t99 = load { ptr, i64, i64 }, ptr %t98 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 1, %t100 - br i1 %t101, label %range5662, label %inrange5663 -range5662: - call void @finch_panic_index(ptr @.str.3625, i64 2877, i64 1, i64 %t100) - unreachable -inrange5663: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds %S.ast.Node, ptr %t102, i64 1 - %t104 = load %S.ast.Node, ptr %t103 - %t105 = call %S.gen.Val @finch.gen.expr(ptr %t97, %S.ast.Node %t104) - %t106 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t105, ptr %a11 - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - %t108 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3626, i64 4, i64 0 }, ptr %a112 - %t113 = call i32 @finch_str_eq(ptr %a111, ptr %a112) - %t114 = icmp ne i32 %t113, 0 - br label %logic.from5664 -logic.from5664: - br i1 %t114, label %logic.end5666, label %logic.rhs5665 -logic.rhs5665: - %t115 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Type, ptr %t115, i32 0, i32 0 - %t117 = load { ptr, i64, i64 }, ptr %t116 - store { ptr, i64, i64 } %t117, ptr %a118 - store { ptr, i64, i64 } { ptr @.str.3627, i64 4, i64 0 }, ptr %a119 - %t120 = call i32 @finch_str_eq(ptr %a118, ptr %a119) - %t121 = icmp ne i32 %t120, 0 - br label %logic.rend5667 -logic.rend5667: - br label %logic.end5666 -logic.end5666: - %t122 = phi i1 [ true, %logic.from5664 ], [ %t121, %logic.rend5667 ] - br i1 %t122, label %then5668, label %endif5670 -then5668: - %t123 = load ptr, ptr %a1 - %t124 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t125 = load { ptr, i64, i64 }, ptr %t124 - %t126 = extractvalue { ptr, i64, i64 } %t125, 1 - %t127 = icmp uge i64 0, %t126 - br i1 %t127, label %range5671, label %inrange5672 -range5671: - call void @finch_panic_index(ptr @.str.3628, i64 2879, i64 0, i64 %t126) - unreachable -inrange5672: - %t128 = extractvalue { ptr, i64, i64 } %t125, 0 - %t129 = getelementptr inbounds %S.ast.Node, ptr %t128, i64 0 - %t130 = load %S.ast.Node, ptr %t129 - call void @finch.gen.fail(ptr %t123, %S.ast.Node %t130, { ptr, i64, i64 } { ptr @.str.3629, i64 35, i64 0 }) - br label %endif5670 -endif5670: - %t131 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.3630, 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.from5673 -logic.from5673: - br i1 %t137, label %logic.end5675, label %logic.rhs5674 -logic.rhs5674: - %t138 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t139 = getelementptr inbounds %S.ast.Type, ptr %t138, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.3631, i64 4, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br label %logic.rend5676 -logic.rend5676: - br label %logic.end5675 -logic.end5675: - %t145 = phi i1 [ true, %logic.from5673 ], [ %t144, %logic.rend5676 ] - br i1 %t145, label %then5677, label %endif5679 -then5677: - %t146 = load ptr, ptr %a1 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 1, %t149 - br i1 %t150, label %range5680, label %inrange5681 -range5680: - call void @finch_panic_index(ptr @.str.3632, i64 2882, i64 1, i64 %t149) - unreachable -inrange5681: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds %S.ast.Node, ptr %t151, i64 1 - %t153 = load %S.ast.Node, ptr %t152 - call void @finch.gen.fail(ptr %t146, %S.ast.Node %t153, { ptr, i64, i64 } { ptr @.str.3633, i64 37, i64 0 }) - br label %endif5679 -endif5679: - %t154 = getelementptr inbounds %S.gen.Val, ptr %a11, i32 0, i32 1 - %t155 = load %S.ast.Type, ptr %t154 - store %S.ast.Type %t155, ptr %a156 - call void @finch.copy.S_ast_Type(ptr %a157, ptr %a156) - %t158 = load %S.ast.Type, ptr %a157 - store %S.ast.Type %t158, ptr %a159 - %t160 = load i1, ptr %a24 - br label %logic.from5682 -logic.from5682: - br i1 %t160, label %logic.rhs5683, label %logic.end5684 -logic.rhs5683: - %t161 = load i1, ptr %a25 - br label %logic.rend5685 -logic.rend5685: - br label %logic.end5684 -logic.end5684: - %t162 = phi i1 [ false, %logic.from5682 ], [ %t161, %logic.rend5685 ] - br i1 %t162, label %then5686, label %endif5688 -then5686: - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3634, i64 5, i64 0 }) - %t164 = load %S.ast.Type, ptr %a159 - store %S.ast.Type %t163, ptr %a159 - store %S.ast.Type %t164, ptr %a165 - call void @finch.drop.S_ast_Type(ptr %a165) - br label %endif5688 -endif5688: - %t166 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load %S.ast.Type, ptr %a159 - %t169 = call %S.ast.Type @finch.ast.mapOf(%S.ast.Type %t167, %S.ast.Type %t168) - %t170 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t169, ptr %a8 - store %S.ast.Type %t170, ptr %a171 - call void @finch.drop.S_ast_Type(ptr %a171) - store i1 true, ptr %a9 - call void @finch.drop.S_ast_Type(ptr %a159) - br label %endif5635 -endif5635: - %t172 = load ptr, ptr %a1 - %t173 = load ptr, ptr %a1 - %t174 = load %S.ast.Type, ptr %a8 - %t175 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t174) - %t176 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t172, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a177 - call void @finch_str_drop(ptr %a177) - store { ptr, i64, i64 } %t176, ptr %a178 - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = load %S.ast.Type, ptr %a8 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t181) - %t183 = load { ptr, i64, i64 }, ptr %a178 - call void @finch.gen.store(ptr %t179, { ptr, i64, i64 } %t182, { ptr, i64, i64 } { ptr @.str.3635, i64 15, i64 0 }, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t182, ptr %a184 - call void @finch_str_drop(ptr %a184) - %t185 = load ptr, ptr %a1 - %t186 = icmp eq ptr %t185, null - br i1 %t186, label %panic5689, label %ok5690 -panic5689: - call void @finch_panic(ptr @.str.3636, i64 2893, ptr @.str.3637) - unreachable -ok5690: - %t187 = getelementptr inbounds %S.gen.Gen, ptr %t185, i32 0, i32 11 - %t188 = getelementptr inbounds { ptr, i64, i64 }, ptr %t187, i32 0, i32 1 - %t189 = load i64, ptr %t188 - store i64 %t189, ptr %a190 - %t191 = load ptr, ptr %a1 - %t192 = load { ptr, i64, i64 }, ptr %a178 - %t193 = load %S.ast.Type, ptr %a8 - call void @finch.gen.holdAddr(ptr %t191, { ptr, i64, i64 } %t192, %S.ast.Type %t193) - %t194 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t195 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t196 = load i64, ptr %t195 - %t197 = sdiv i64 %t196, 2 - store i64 0, ptr %a198 - br label %for.cond5691 -for.cond5691: - %t199 = load i64, ptr %a198 - %t200 = icmp slt i64 %t199, %t197 - br i1 %t200, label %for.body5692, label %for.end5694 -for.body5692: - %t201 = load ptr, ptr %a1 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic5695, label %ok5696 -panic5695: - call void @finch_panic(ptr @.str.3638, i64 2896, ptr @.str.3639) - unreachable -ok5696: - %t203 = getelementptr inbounds %S.gen.Gen, ptr %t201, i32 0, i32 11 - %t204 = getelementptr inbounds { ptr, i64, i64 }, ptr %t203, i32 0, i32 1 - %t205 = load i64, ptr %t204 - store i64 %t205, ptr %a206 - %t207 = load %S.gen.Val, ptr %a10 - store %S.gen.Val %t207, ptr %a208 - call void @finch.copy.S_gen_Val(ptr %a209, ptr %a208) - %t210 = load %S.gen.Val, ptr %a209 - store %S.gen.Val %t210, ptr %a211 - %t212 = load i64, ptr %a198 - %t213 = icmp eq i64 %t212, 0 - br label %logic.from5697 -logic.from5697: - br i1 %t213, label %logic.rhs5698, label %logic.end5699 -logic.rhs5698: - %t214 = load i1, ptr %a9 - br label %logic.rend5700 -logic.rend5700: - br label %logic.end5699 -logic.end5699: - %t215 = phi i1 [ false, %logic.from5697 ], [ %t214, %logic.rend5700 ] - %t216 = xor i1 %t215, true - br i1 %t216, label %then5701, label %endif5703 -then5701: - %t217 = load ptr, ptr %a1 - %t218 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t219 = load i64, ptr %a198 - %t220 = mul i64 2, %t219 - %t221 = load { ptr, i64, i64 }, ptr %t218 - %t222 = extractvalue { ptr, i64, i64 } %t221, 1 - %t223 = icmp uge i64 %t220, %t222 - br i1 %t223, label %range5704, label %inrange5705 -range5704: - call void @finch_panic_index(ptr @.str.3640, i64 2899, i64 %t220, i64 %t222) - unreachable -inrange5705: - %t224 = extractvalue { ptr, i64, i64 } %t221, 0 - %t225 = getelementptr inbounds %S.ast.Node, ptr %t224, i64 %t220 - %t226 = load %S.ast.Node, ptr %t225 - %t227 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t228 = load { ptr, i64, i64 }, ptr %t227 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 0, %t229 - br i1 %t230, label %range5706, label %inrange5707 -range5706: - call void @finch_panic_index(ptr @.str.3641, i64 2899, i64 0, i64 %t229) - unreachable -inrange5707: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds %S.ast.Type, ptr %t231, i64 0 - %t233 = load %S.ast.Type, ptr %t232 - %t234 = call %S.gen.Val @finch.gen.exprWant(ptr %t217, %S.ast.Node %t226, %S.ast.Type %t233) - %t235 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t234, ptr %a211 - store %S.gen.Val %t235, ptr %a236 - call void @finch.drop.S_gen_Val(ptr %a236) - br label %endif5703 -endif5703: - %t237 = load ptr, ptr %a1 - %t238 = load %S.gen.Val, ptr %a211 - %t239 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = extractvalue { ptr, i64, i64 } %t240, 1 - %t242 = icmp uge i64 0, %t241 - br i1 %t242, label %range5708, label %inrange5709 -range5708: - call void @finch_panic_index(ptr @.str.3642, i64 2901, i64 0, i64 %t241) - unreachable -inrange5709: - %t243 = extractvalue { ptr, i64, i64 } %t240, 0 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i64 0 - %t245 = load %S.ast.Type, ptr %t244 - %t246 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t247 = load i64, ptr %a198 - %t248 = mul i64 2, %t247 - %t249 = load { ptr, i64, i64 }, ptr %t246 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5710, label %inrange5711 -range5710: - call void @finch_panic_index(ptr @.str.3643, i64 2901, i64 %t248, i64 %t250) - unreachable -inrange5711: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - %t255 = call %S.gen.Val @finch.gen.coerce(ptr %t237, %S.gen.Val %t238, %S.ast.Type %t245, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3644, i64 21, i64 0 }) - %t256 = load %S.gen.Val, ptr %a211 - store %S.gen.Val %t255, ptr %a211 - store %S.gen.Val %t256, ptr %a257 - call void @finch.drop.S_gen_Val(ptr %a257) - %t258 = load ptr, ptr %a1 - %t259 = load %S.gen.Val, ptr %a211 - call void @finch.gen.hold(ptr %t258, %S.gen.Val %t259) - %t260 = load %S.gen.Val, ptr %a11 - store %S.gen.Val %t260, ptr %a261 - call void @finch.copy.S_gen_Val(ptr %a262, ptr %a261) - %t263 = load %S.gen.Val, ptr %a262 - store %S.gen.Val %t263, ptr %a264 - %t265 = load i64, ptr %a198 - %t266 = icmp eq i64 %t265, 0 - br label %logic.from5712 -logic.from5712: - br i1 %t266, label %logic.rhs5713, label %logic.end5714 -logic.rhs5713: - %t267 = load i1, ptr %a9 - br label %logic.rend5715 -logic.rend5715: - br label %logic.end5714 -logic.end5714: - %t268 = phi i1 [ false, %logic.from5712 ], [ %t267, %logic.rend5715 ] - %t269 = xor i1 %t268, true - br i1 %t269, label %then5716, label %endif5718 -then5716: - %t270 = load ptr, ptr %a1 - %t271 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t272 = load i64, ptr %a198 - %t273 = mul i64 2, %t272 - %t274 = add i64 %t273, 1 - %t275 = load { ptr, i64, i64 }, ptr %t271 - %t276 = extractvalue { ptr, i64, i64 } %t275, 1 - %t277 = icmp uge i64 %t274, %t276 - br i1 %t277, label %range5719, label %inrange5720 -range5719: - call void @finch_panic_index(ptr @.str.3645, i64 2905, i64 %t274, i64 %t276) - unreachable -inrange5720: - %t278 = extractvalue { ptr, i64, i64 } %t275, 0 - %t279 = getelementptr inbounds %S.ast.Node, ptr %t278, i64 %t274 - %t280 = load %S.ast.Node, ptr %t279 - %t281 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t282 = load { ptr, i64, i64 }, ptr %t281 - %t283 = extractvalue { ptr, i64, i64 } %t282, 1 - %t284 = icmp uge i64 1, %t283 - br i1 %t284, label %range5721, label %inrange5722 -range5721: - call void @finch_panic_index(ptr @.str.3646, i64 2905, i64 1, i64 %t283) - unreachable -inrange5722: - %t285 = extractvalue { ptr, i64, i64 } %t282, 0 - %t286 = getelementptr inbounds %S.ast.Type, ptr %t285, i64 1 - %t287 = load %S.ast.Type, ptr %t286 - %t288 = call %S.gen.Val @finch.gen.exprWant(ptr %t270, %S.ast.Node %t280, %S.ast.Type %t287) - %t289 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t288, ptr %a264 - store %S.gen.Val %t289, ptr %a290 - call void @finch.drop.S_gen_Val(ptr %a290) - br label %endif5718 -endif5718: - %t291 = load ptr, ptr %a1 - %t292 = load %S.gen.Val, ptr %a264 - %t293 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t294 = load { ptr, i64, i64 }, ptr %t293 - %t295 = extractvalue { ptr, i64, i64 } %t294, 1 - %t296 = icmp uge i64 1, %t295 - br i1 %t296, label %range5723, label %inrange5724 -range5723: - call void @finch_panic_index(ptr @.str.3647, i64 2907, i64 1, i64 %t295) - unreachable -inrange5724: - %t297 = extractvalue { ptr, i64, i64 } %t294, 0 - %t298 = getelementptr inbounds %S.ast.Type, ptr %t297, i64 1 - %t299 = load %S.ast.Type, ptr %t298 - %t300 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t301 = load i64, ptr %a198 - %t302 = mul i64 2, %t301 - %t303 = add i64 %t302, 1 - %t304 = load { ptr, i64, i64 }, ptr %t300 - %t305 = extractvalue { ptr, i64, i64 } %t304, 1 - %t306 = icmp uge i64 %t303, %t305 - br i1 %t306, label %range5725, label %inrange5726 -range5725: - call void @finch_panic_index(ptr @.str.3648, i64 2907, i64 %t303, i64 %t305) - unreachable -inrange5726: - %t307 = extractvalue { ptr, i64, i64 } %t304, 0 - %t308 = getelementptr inbounds %S.ast.Node, ptr %t307, i64 %t303 - %t309 = load %S.ast.Node, ptr %t308 - %t310 = call %S.gen.Val @finch.gen.coerce(ptr %t291, %S.gen.Val %t292, %S.ast.Type %t299, %S.ast.Node %t309, { ptr, i64, i64 } { ptr @.str.3649, i64 23, i64 0 }) - %t311 = load %S.gen.Val, ptr %a264 - store %S.gen.Val %t310, ptr %a264 - store %S.gen.Val %t311, ptr %a312 - call void @finch.drop.S_gen_Val(ptr %a312) - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a264 - %t315 = call { ptr, i64, i64 } @finch.gen.own(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } %t315, ptr %a316 - %t317 = load ptr, ptr %a1 - %t318 = load { ptr, i64, i64 }, ptr %a178 - %t319 = load %S.ast.Type, ptr %a8 - %t320 = load %S.gen.Val, ptr %a211 - %t321 = load %S.ast.Node, ptr %a2 - %t322 = call { ptr, i64, i64 } @finch.gen.mapSlot(ptr %t317, { ptr, i64, i64 } %t318, %S.ast.Type %t319, %S.gen.Val %t320, i1 false, %S.ast.Node %t321) - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a323 - %t326 = load %S.ast.Type, ptr %a8 - %t327 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t324, { ptr, i64, i64 } %t325, %S.ast.Type %t326, i64 2) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = load { ptr, i64, i64 }, ptr %a328 - %t331 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t332 = load { ptr, i64, i64 }, ptr %t331 - %t333 = extractvalue { ptr, i64, i64 } %t332, 1 - %t334 = icmp uge i64 1, %t333 - br i1 %t334, label %range5727, label %inrange5728 -range5727: - call void @finch_panic_index(ptr @.str.3650, i64 2911, i64 1, i64 %t333) - unreachable -inrange5728: - %t335 = extractvalue { ptr, i64, i64 } %t332, 0 - %t336 = getelementptr inbounds %S.ast.Type, ptr %t335, i64 1 - %t337 = load %S.ast.Type, ptr %t336 - call void @finch.gen.dropAt(ptr %t329, { ptr, i64, i64 } %t330, %S.ast.Type %t337) - %t338 = load ptr, ptr %a1 - %t339 = load ptr, ptr %a1 - %t340 = getelementptr inbounds %S.ast.Type, ptr %a8, i32 0, i32 1 - %t341 = load { ptr, i64, i64 }, ptr %t340 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 1, %t342 - br i1 %t343, label %range5729, label %inrange5730 -range5729: - call void @finch_panic_index(ptr @.str.3651, i64 2912, i64 1, i64 %t342) - unreachable -inrange5730: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds %S.ast.Type, ptr %t344, i64 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t339, %S.ast.Type %t346) - %t348 = load { ptr, i64, i64 }, ptr %a316 - %t349 = load { ptr, i64, i64 }, ptr %a328 - call void @finch.gen.store(ptr %t338, { ptr, i64, i64 } %t347, { ptr, i64, i64 } %t348, { ptr, i64, i64 } %t349) - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load ptr, ptr %a1 - %t352 = load %S.gen.Val, ptr %a211 - call void @finch.gen.release(ptr %t351, %S.gen.Val %t352) - %t353 = load ptr, ptr %a1 - %t354 = load i64, ptr %a206 - call void @finch.gen.heldEnd(ptr %t353, i64 %t354) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a316) - call void @finch.drop.S_gen_Val(ptr %a264) - call void @finch.drop.S_gen_Val(ptr %a211) - br label %for.step5693 -for.step5693: - %t355 = load i64, ptr %a198 - %t356 = add i64 %t355, 1 - store i64 %t356, ptr %a198 - br label %for.cond5691 -for.end5694: - %t357 = load ptr, ptr %a1 - %t358 = load i64, ptr %a190 - call void @finch.gen.heldEnd(ptr %t357, i64 %t358) - %t359 = load ptr, ptr %a1 - %t360 = load ptr, ptr %a1 - %t361 = load %S.ast.Type, ptr %a8 - %t362 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t360, %S.ast.Type %t361) - %t363 = load { ptr, i64, i64 }, ptr %a178 - %t364 = call { ptr, i64, i64 } @finch.gen.load(ptr %t359, { ptr, i64, i64 } %t362, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t364, 0 - %t367 = load %S.ast.Type, ptr %a8 - store %S.ast.Type %t367, ptr %a368 - call void @finch.copy.S_ast_Type(ptr %a369, ptr %a368) - %t370 = load %S.ast.Type, ptr %a369 - %t371 = insertvalue %S.gen.Val %t366, %S.ast.Type %t370, 1 - %t372 = insertvalue %S.gen.Val %t371, i1 true, 2 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.S_gen_Val(ptr %a11) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.gen.Val %t372 -} - -define internal %S.gen.Val @finch.gen.mapMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3) { -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 - %a82 = alloca %S.gen.Val, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a278 = alloca %S.gen.Val, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca %S.ast.Type, align 16 - %a351 = alloca %S.ast.Type, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca i64, align 16 - %a501 = alloca %S.ast.Type, align 16 - %a502 = alloca %S.ast.Type, align 16 - %a504 = alloca %S.ast.Type, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a515 = alloca %S.ast.Type, align 16 - %a518 = alloca %S.ast.Type, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a543 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a663 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a712 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.ast.Type, align 16 - %a753 = alloca %S.ast.Type, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range5731, label %inrange5732 -range5731: - call void @finch_panic_index(ptr @.str.3652, i64 2922, i64 0, i64 %t13) - unreachable -inrange5732: - %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 %range5733, label %inrange5734 -range5733: - call void @finch_panic_index(ptr @.str.3653, i64 2923, i64 1, i64 %t24) - unreachable -inrange5734: - %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.3654, 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.from5735 -logic.from5735: - br i1 %t37, label %logic.end5737, label %logic.rhs5736 -logic.rhs5736: - %t38 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t38, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3655, 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.rend5738 -logic.rend5738: - br label %logic.end5737 -logic.end5737: - %t43 = phi i1 [ true, %logic.from5735 ], [ %t42, %logic.rend5738 ] - br label %logic.from5739 -logic.from5739: - br i1 %t43, label %logic.end5741, label %logic.rhs5740 -logic.rhs5740: - %t44 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t44, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.3656, 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.rend5742 -logic.rend5742: - br label %logic.end5741 -logic.end5741: - %t49 = phi i1 [ true, %logic.from5739 ], [ %t48, %logic.rend5742 ] - br i1 %t49, label %then5743, label %endif5745 -then5743: - %t50 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3657, 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 %then5746, label %else5747 -then5746: - %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 %endif5748 -else5747: - %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 %endif5748 -endif5748: - %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 %range5749, label %inrange5750 -range5749: - call void @finch_panic_index(ptr @.str.3658, i64 2930, i64 1, i64 %t65) - unreachable -inrange5750: - %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 %range5751, label %inrange5752 -range5751: - call void @finch_panic_index(ptr @.str.3659, i64 2930, i64 1, i64 %t75) - unreachable -inrange5752: - %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.3660, i64 7, i64 0 }) - store %S.gen.Val %t71, ptr %a81 - call void @finch.drop.S_gen_Val(ptr %a81) - store %S.gen.Val %t80, ptr %a82 - %t83 = load ptr, ptr %a1 - %t84 = load { ptr, i64, i64 }, ptr %a3 - %t85 = load ptr, ptr %a1 - %t86 = load %S.gen.Val, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t85, %S.gen.Val %t86) - %t88 = load %S.ast.Type, ptr %a4 - %t89 = call { ptr, i64, i64 } @finch.gen.mapFind(ptr %t83, { ptr, i64, i64 } %t84, { ptr, i64, i64 } %t87, %S.ast.Type %t88) - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_drop(ptr %a90) - store { ptr, i64, i64 } %t89, ptr %a91 - %t92 = load ptr, ptr %a1 - %t93 = load %S.gen.Val, ptr %a82 - call void @finch.gen.release(ptr %t92, %S.gen.Val %t93) - %t94 = load ptr, ptr %a1 - %t95 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.3661, i64 13, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t99, ptr %a101 - store { ptr, i64, i64 } { ptr @.str.3662, i64 3, i64 0 }, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - %t105 = call { ptr, i64, i64 } @finch.gen.op(ptr %t94, { ptr, i64, i64 } %t104) - store { ptr, i64, i64 } %t104, ptr %a106 - call void @finch_str_drop(ptr %a106) - store { ptr, i64, i64 } %t105, ptr %a107 - %t108 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.3663, i64 3, i64 0 }, ptr %a110 - %t111 = call i32 @finch_str_eq(ptr %a109, ptr %a110) - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %then5753, label %endif5755 -then5753: - %t113 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t113, ptr %a114 - call void @finch_str_copy(ptr %a115, ptr %a114) - %t116 = load { ptr, i64, i64 }, ptr %a115 - %t117 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t116, 0 - %t118 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3664, i64 4, i64 0 }) - %t119 = insertvalue %S.gen.Val %t117, %S.ast.Type %t118, 1 - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t119 -endif5755: - %t120 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.3665, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then5756, label %endif5758 -then5756: - %t125 = load ptr, ptr %a1 - %t126 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t125, { ptr, i64, i64 } { ptr @.str.3666, i64 10, i64 0 }) - store { ptr, i64, i64 } %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t128, { ptr, i64, i64 } { ptr @.str.3667, i64 10, i64 0 }) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a107 - %t133 = load { ptr, i64, i64 }, ptr %a127 - %t134 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.condBr(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t134) - %t135 = load ptr, ptr %a1 - %t136 = load { ptr, i64, i64 }, ptr %a127 - call void @finch.gen.label(ptr %t135, { ptr, i64, i64 } %t136) - %t137 = load ptr, ptr %a1 - %t138 = load { ptr, i64, i64 }, ptr %a3 - %t139 = load %S.ast.Type, ptr %a4 - %t140 = load { ptr, i64, i64 }, ptr %a91 - %t141 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t137, { ptr, i64, i64 } %t138, %S.ast.Type %t139, { ptr, i64, i64 } %t140) - store { ptr, i64, i64 } %t141, ptr %a142 - %t143 = load ptr, ptr %a1 - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a142 - %t146 = load %S.ast.Type, ptr %a4 - %t147 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t144, { ptr, i64, i64 } %t145, %S.ast.Type %t146, i64 1) - %t148 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t143, { ptr, i64, i64 } %t147, %S.ast.Type %t148) - store { ptr, i64, i64 } %t147, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load ptr, ptr %a1 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a142 - %t153 = load %S.ast.Type, ptr %a4 - %t154 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t151, { ptr, i64, i64 } %t152, %S.ast.Type %t153, i64 2) - %t155 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t150, { ptr, i64, i64 } %t154, %S.ast.Type %t155) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load ptr, ptr %a1 - %t158 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3668, i64 35, i64 0 }, ptr %a160 - store { ptr, i64, i64 } %t158, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t162, ptr %a164 - store { ptr, i64, i64 } { ptr @.str.3669, i64 6, i64 0 }, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - %t168 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t167, ptr %a170 - store { ptr, i64, i64 } %t168, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t167, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t173, ptr %a175 - store { ptr, i64, i64 } { ptr @.str.3670, i64 6, i64 0 }, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t173, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - %t179 = load ptr, ptr %a1 - %t180 = load %S.ast.Type, ptr %a4 - %t181 = call { ptr, i64, i64 } @finch.gen.entrySize(ptr %t179, %S.ast.Type %t180) - store { ptr, i64, i64 } %t178, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t178, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t181, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.3671, i64 1, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - call void @finch.gen.emit(ptr %t157, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load ptr, ptr %a1 - %t195 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.br(ptr %t194, { ptr, i64, i64 } %t195) - %t196 = load ptr, ptr %a1 - %t197 = load { ptr, i64, i64 }, ptr %a130 - call void @finch.gen.label(ptr %t196, { ptr, i64, i64 } %t197) - %t198 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t198, ptr %a199 - call void @finch_str_copy(ptr %a200, ptr %a199) - %t201 = load { ptr, i64, i64 }, ptr %a200 - %t202 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t201, 0 - %t203 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3672, i64 4, i64 0 }) - %t204 = insertvalue %S.gen.Val %t202, %S.ast.Type %t203, 1 - call void @finch_str_drop(ptr %a142) - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a127) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t204 -endif5758: - %t205 = load ptr, ptr %a1 - %t206 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t205, { ptr, i64, i64 } { ptr @.str.3673, i64 9, i64 0 }) - store { ptr, i64, i64 } %t206, ptr %a207 - %t208 = load ptr, ptr %a1 - %t209 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t208, { ptr, i64, i64 } { ptr @.str.3674, i64 11, i64 0 }) - store { ptr, i64, i64 } %t209, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t211, { ptr, i64, i64 } { ptr @.str.3675, i64 8, i64 0 }) - store { ptr, i64, i64 } %t212, ptr %a213 - %t214 = load ptr, ptr %a1 - %t215 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t214, { ptr, i64, i64 } { ptr @.str.3676, i64 8, i64 0 }) - store { ptr, i64, i64 } %t215, ptr %a216 - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t217, { ptr, i64, i64 } { ptr @.str.3677, i64 7, i64 0 }) - store { ptr, i64, i64 } %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load { ptr, i64, i64 }, ptr %a107 - %t222 = load { ptr, i64, i64 }, ptr %a207 - %t223 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.condBr(ptr %t220, { ptr, i64, i64 } %t221, { ptr, i64, i64 } %t222, { ptr, i64, i64 } %t223) - %t224 = load ptr, ptr %a1 - %t225 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.label(ptr %t224, { ptr, i64, i64 } %t225) - %t226 = load ptr, ptr %a1 - %t227 = load ptr, ptr %a1 - %t228 = load ptr, ptr %a1 - %t229 = load %S.ast.Type, ptr %a32 - %t230 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t228, %S.ast.Type %t229) - %t231 = load ptr, ptr %a1 - %t232 = load ptr, ptr %a1 - %t233 = load { ptr, i64, i64 }, ptr %a3 - %t234 = load %S.ast.Type, ptr %a4 - %t235 = load { ptr, i64, i64 }, ptr %a91 - %t236 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t232, { ptr, i64, i64 } %t233, %S.ast.Type %t234, { ptr, i64, i64 } %t235) - %t237 = load %S.ast.Type, ptr %a4 - %t238 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t231, { ptr, i64, i64 } %t236, %S.ast.Type %t237, i64 2) - store { ptr, i64, i64 } %t236, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = call { ptr, i64, i64 } @finch.gen.load(ptr %t227, { ptr, i64, i64 } %t230, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t230, ptr %a241 - call void @finch_str_drop(ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load %S.ast.Type, ptr %a32 - %t244 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t226, { ptr, i64, i64 } %t240, %S.ast.Type %t243) - store { ptr, i64, i64 } %t240, ptr %a245 - call void @finch_str_drop(ptr %a245) - store { ptr, i64, i64 } %t244, ptr %a246 - %t247 = load ptr, ptr %a1 - %t248 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.br(ptr %t247, { ptr, i64, i64 } %t248) - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a213 - call void @finch.gen.label(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a1 - %t252 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t251, { ptr, i64, i64 } %t252) - %t253 = load ptr, ptr %a1 - %t254 = load { ptr, i64, i64 }, ptr %a210 - call void @finch.gen.label(ptr %t253, { ptr, i64, i64 } %t254) - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load ptr, ptr %a1 - %t258 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t259 = load { ptr, i64, i64 }, ptr %t258 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 2, %t260 - br i1 %t261, label %range5759, label %inrange5760 -range5759: - call void @finch_panic_index(ptr @.str.3678, i64 2963, i64 2, i64 %t260) - unreachable -inrange5760: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds %S.ast.Node, ptr %t262, i64 2 - %t264 = load %S.ast.Node, ptr %t263 - %t265 = load %S.ast.Type, ptr %a32 - %t266 = call %S.gen.Val @finch.gen.exprWant(ptr %t257, %S.ast.Node %t264, %S.ast.Type %t265) - %t267 = load %S.ast.Type, ptr %a32 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t269 = load { ptr, i64, i64 }, ptr %t268 - %t270 = extractvalue { ptr, i64, i64 } %t269, 1 - %t271 = icmp uge i64 2, %t270 - br i1 %t271, label %range5761, label %inrange5762 -range5761: - call void @finch_panic_index(ptr @.str.3679, i64 2963, i64 2, i64 %t270) - unreachable -inrange5762: - %t272 = extractvalue { ptr, i64, i64 } %t269, 0 - %t273 = getelementptr inbounds %S.ast.Node, ptr %t272, i64 2 - %t274 = load %S.ast.Node, ptr %t273 - %t275 = call %S.gen.Val @finch.gen.coerce(ptr %t256, %S.gen.Val %t266, %S.ast.Type %t267, %S.ast.Node %t274, { ptr, i64, i64 } { ptr @.str.3680, i64 11, i64 0 }) - store %S.gen.Val %t266, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - %t277 = call { ptr, i64, i64 } @finch.gen.own(ptr %t255, %S.gen.Val %t275) - store %S.gen.Val %t275, ptr %a278 - call void @finch.drop.S_gen_Val(ptr %a278) - store { ptr, i64, i64 } %t277, ptr %a279 - %t280 = load ptr, ptr %a1 - %t281 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.br(ptr %t280, { ptr, i64, i64 } %t281) - %t282 = load ptr, ptr %a1 - %t283 = load { ptr, i64, i64 }, ptr %a216 - call void @finch.gen.label(ptr %t282, { ptr, i64, i64 } %t283) - %t284 = load ptr, ptr %a1 - %t285 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.br(ptr %t284, { ptr, i64, i64 } %t285) - %t286 = load ptr, ptr %a1 - %t287 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.label(ptr %t286, { ptr, i64, i64 } %t287) - %t288 = load ptr, ptr %a1 - %t289 = load ptr, ptr %a1 - %t290 = load %S.ast.Type, ptr %a32 - %t291 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t289, %S.ast.Type %t290) - store { ptr, i64, i64 } { ptr @.str.3681, i64 4, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.3682, i64 3, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t301, ptr %a304 - store { ptr, i64, i64 } %t302, ptr %a305 - call void @finch_str_concat(ptr %a303, ptr %a304, ptr %a305) - store { ptr, i64, i64 } %t301, ptr %a306 - call void @finch_str_drop(ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a303 - store { ptr, i64, i64 } %t307, ptr %a309 - store { ptr, i64, i64 } { ptr @.str.3683, i64 3, i64 0 }, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t307, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load { ptr, i64, i64 }, ptr %a213 - store { ptr, i64, i64 } %t312, ptr %a315 - store { ptr, i64, i64 } %t313, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t312, ptr %a317 - call void @finch_str_drop(ptr %a317) - %t318 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t318, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3684, i64 6, i64 0 }, ptr %a321 - call void @finch_str_concat(ptr %a319, ptr %a320, ptr %a321) - store { ptr, i64, i64 } %t318, ptr %a322 - call void @finch_str_drop(ptr %a322) - %t323 = load { ptr, i64, i64 }, ptr %a319 - %t324 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t323, ptr %a326 - store { ptr, i64, i64 } %t324, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t323, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - store { ptr, i64, i64 } %t329, ptr %a331 - store { ptr, i64, i64 } { ptr @.str.3685, i64 3, i64 0 }, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - store { ptr, i64, i64 } %t329, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = load { ptr, i64, i64 }, ptr %a330 - %t335 = load { ptr, i64, i64 }, ptr %a216 - store { ptr, i64, i64 } %t334, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t334, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.3686, i64 2, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - %t346 = call { ptr, i64, i64 } @finch.gen.op(ptr %t288, { ptr, i64, i64 } %t345) - store { ptr, i64, i64 } %t345, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t346, 0 - %t349 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t349, ptr %a350 - call void @finch.copy.S_ast_Type(ptr %a351, ptr %a350) - %t352 = load %S.ast.Type, ptr %a351 - %t353 = insertvalue %S.gen.Val %t348, %S.ast.Type %t352, 1 - %t354 = load ptr, ptr %a1 - %t355 = load %S.ast.Type, ptr %a32 - %t356 = call i1 @finch.gen.owning(ptr %t354, %S.ast.Type %t355) - %t357 = insertvalue %S.gen.Val %t353, i1 %t356, 2 - call void @finch_str_drop(ptr %a279) - call void @finch_str_drop(ptr %a246) - call void @finch_str_drop(ptr %a219) - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a213) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a207) - call void @finch_str_drop(ptr %a107) - call void @finch_str_drop(ptr %a91) - call void @finch.drop.S_gen_Val(ptr %a82) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t357 -endif5745: - %t358 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.3687, i64 5, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then5763, label %endif5765 -then5763: - %t363 = load ptr, ptr %a1 - %t364 = load %S.ast.Node, ptr %a2 - %t365 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t363, %S.ast.Node %t364, i64 1, i64 0, { ptr, i64, i64 } %t365) - %t366 = load ptr, ptr %a1 - %t367 = load %S.ast.Type, ptr %a21 - %t368 = call i1 @finch.gen.owning(ptr %t366, %S.ast.Type %t367) - br label %logic.from5766 -logic.from5766: - br i1 %t368, label %logic.end5768, label %logic.rhs5767 -logic.rhs5767: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Type, ptr %a32 - %t371 = call i1 @finch.gen.owning(ptr %t369, %S.ast.Type %t370) - br label %logic.rend5769 -logic.rend5769: - br label %logic.end5768 -logic.end5768: - %t372 = phi i1 [ true, %logic.from5766 ], [ %t371, %logic.rend5769 ] - br i1 %t372, label %then5770, label %endif5772 -then5770: - %t373 = load ptr, ptr %a1 - %t374 = load ptr, ptr %a1 - %t375 = load ptr, ptr %a1 - %t376 = load %S.ast.Type, ptr %a4 - %t377 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t375, %S.ast.Type %t376) - store { ptr, i64, i64 } { ptr @.str.3689, i64 23, i64 0 }, ptr %a379 - store { ptr, i64, i64 } %t377, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - store { ptr, i64, i64 } %t382, ptr %a384 - store { ptr, i64, i64 } { ptr @.str.3690, i64 6, i64 0 }, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - %t388 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t387, ptr %a390 - store { ptr, i64, i64 } %t388, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t387, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - store { ptr, i64, i64 } %t393, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.3691, i64 14, i64 0 }, ptr %a396 - call void @finch_str_concat(ptr %a394, ptr %a395, ptr %a396) - store { ptr, i64, i64 } %t393, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load { ptr, i64, i64 }, ptr %a394 - %t399 = call { ptr, i64, i64 } @finch.gen.op(ptr %t374, { ptr, i64, i64 } %t398) - store { ptr, i64, i64 } %t398, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = call { ptr, i64, i64 } @finch.gen.load(ptr %t373, { ptr, i64, i64 } { ptr @.str.3688, i64 3, i64 0 }, { ptr, i64, i64 } %t399) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store { ptr, i64, i64 } %t401, ptr %a403 - %t404 = load ptr, ptr %a1 - %t405 = load { ptr, i64, i64 }, ptr %a403 - %t406 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t404, { ptr, i64, i64 } %t405) - store { ptr, i64, i64 } %t406, ptr %a407 - %t408 = load ptr, ptr %a1 - %t409 = load { ptr, i64, i64 }, ptr %a3 - %t410 = load %S.ast.Type, ptr %a4 - %t411 = load { ptr, i64, i64 }, ptr %a407 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 3, %t412 - br i1 %t413, label %range5773, label %inrange5774 -range5773: - call void @finch_panic_index(ptr @.str.3692, i64 2975, i64 3, i64 %t412) - unreachable -inrange5774: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 3 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t408, { ptr, i64, i64 } %t409, %S.ast.Type %t410, { ptr, i64, i64 } %t416) - store { ptr, i64, i64 } %t417, ptr %a418 - %t419 = load ptr, ptr %a1 - %t420 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t419, { ptr, i64, i64 } { ptr @.str.3693, i64 10, i64 0 }) - store { ptr, i64, i64 } %t420, ptr %a421 - %t422 = load ptr, ptr %a1 - %t423 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t422, { ptr, i64, i64 } { ptr @.str.3694, i64 10, i64 0 }) - store { ptr, i64, i64 } %t423, ptr %a424 - %t425 = load ptr, ptr %a1 - %t426 = load ptr, ptr %a1 - %t427 = load ptr, ptr %a1 - %t428 = load ptr, ptr %a1 - %t429 = load { ptr, i64, i64 }, ptr %a418 - %t430 = load %S.ast.Type, ptr %a4 - %t431 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t428, { ptr, i64, i64 } %t429, %S.ast.Type %t430, i64 0) - %t432 = call { ptr, i64, i64 } @finch.gen.load(ptr %t427, { ptr, i64, i64 } { ptr @.str.3696, i64 3, i64 0 }, { ptr, i64, i64 } %t431) - store { ptr, i64, i64 } %t431, ptr %a433 - call void @finch_str_drop(ptr %a433) - store { ptr, i64, i64 } { ptr @.str.3695, i64 12, i64 0 }, ptr %a435 - store { ptr, i64, i64 } %t432, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t432, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.3697, i64 3, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - %t444 = call { ptr, i64, i64 } @finch.gen.op(ptr %t426, { ptr, i64, i64 } %t443) - store { ptr, i64, i64 } %t443, ptr %a445 - call void @finch_str_drop(ptr %a445) - %t446 = load { ptr, i64, i64 }, ptr %a421 - %t447 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.condBr(ptr %t425, { ptr, i64, i64 } %t444, { ptr, i64, i64 } %t446, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t444, ptr %a448 - call void @finch_str_drop(ptr %a448) - %t449 = load ptr, ptr %a1 - %t450 = load { ptr, i64, i64 }, ptr %a421 - call void @finch.gen.label(ptr %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load ptr, ptr %a1 - %t453 = load { ptr, i64, i64 }, ptr %a418 - %t454 = load %S.ast.Type, ptr %a4 - %t455 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t452, { ptr, i64, i64 } %t453, %S.ast.Type %t454, i64 1) - %t456 = load %S.ast.Type, ptr %a21 - call void @finch.gen.dropAt(ptr %t451, { ptr, i64, i64 } %t455, %S.ast.Type %t456) - store { ptr, i64, i64 } %t455, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load ptr, ptr %a1 - %t459 = load ptr, ptr %a1 - %t460 = load { ptr, i64, i64 }, ptr %a418 - %t461 = load %S.ast.Type, ptr %a4 - %t462 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t459, { ptr, i64, i64 } %t460, %S.ast.Type %t461, i64 2) - %t463 = load %S.ast.Type, ptr %a32 - call void @finch.gen.dropAt(ptr %t458, { ptr, i64, i64 } %t462, %S.ast.Type %t463) - store { ptr, i64, i64 } %t462, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load ptr, ptr %a1 - %t466 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.br(ptr %t465, { ptr, i64, i64 } %t466) - %t467 = load ptr, ptr %a1 - %t468 = load { ptr, i64, i64 }, ptr %a424 - call void @finch.gen.label(ptr %t467, { ptr, i64, i64 } %t468) - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a407 - call void @finch.gen.loopEnd(ptr %t469, { ptr, i64, i64 } %t470) - call void @finch_str_drop(ptr %a424) - call void @finch_str_drop(ptr %a421) - call void @finch_str_drop(ptr %a418) - call void @finch.drop.arr_str(ptr %a407) - call void @finch_str_drop(ptr %a403) - br label %endif5772 -endif5772: - %t471 = load ptr, ptr %a1 - %t472 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.3698, i64 31, i64 0 }, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - %t476 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t476, ptr %a478 - store { ptr, i64, i64 } { ptr @.str.3699, i64 1, i64 0 }, ptr %a479 - call void @finch_str_concat(ptr %a477, ptr %a478, ptr %a479) - store { ptr, i64, i64 } %t476, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a477 - call void @finch.gen.emit(ptr %t471, { ptr, i64, i64 } %t481) - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3700, i64 4, i64 0 }) - %t484 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t483, 1 - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t484 -endif5765: - %t485 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t485, ptr %a486 - store { ptr, i64, i64 } { ptr @.str.3701, i64 4, i64 0 }, ptr %a487 - %t488 = call i32 @finch_str_eq(ptr %a486, ptr %a487) - %t489 = icmp ne i32 %t488, 0 - br label %logic.from5775 -logic.from5775: - br i1 %t489, label %logic.end5777, label %logic.rhs5776 -logic.rhs5776: - %t490 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t490, ptr %a491 - store { ptr, i64, i64 } { ptr @.str.3702, i64 6, i64 0 }, ptr %a492 - %t493 = call i32 @finch_str_eq(ptr %a491, ptr %a492) - %t494 = icmp ne i32 %t493, 0 - br label %logic.rend5778 -logic.rend5778: - br label %logic.end5777 -logic.end5777: - %t495 = phi i1 [ true, %logic.from5775 ], [ %t494, %logic.rend5778 ] - br i1 %t495, label %then5779, label %endif5781 -then5779: - %t496 = load ptr, ptr %a1 - %t497 = load %S.ast.Node, ptr %a2 - %t498 = load { ptr, i64, i64 }, ptr %a10 - call void @finch.gen.checkArgs(ptr %t496, %S.ast.Node %t497, i64 1, i64 0, { ptr, i64, i64 } %t498) - store i64 1, ptr %a499 - %t500 = load %S.ast.Type, ptr %a21 - store %S.ast.Type %t500, ptr %a501 - call void @finch.copy.S_ast_Type(ptr %a502, ptr %a501) - %t503 = load %S.ast.Type, ptr %a502 - store %S.ast.Type %t503, ptr %a504 - %t505 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t505, ptr %a506 - store { ptr, i64, i64 } { ptr @.str.3703, i64 6, i64 0 }, ptr %a507 - %t508 = call i32 @finch_str_eq(ptr %a506, ptr %a507) - %t509 = icmp ne i32 %t508, 0 - br i1 %t509, label %then5782, label %endif5784 -then5782: - store i64 2, ptr %a499 - %t510 = load %S.ast.Type, ptr %a32 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = load %S.ast.Type, ptr %a504 - store %S.ast.Type %t513, ptr %a504 - store %S.ast.Type %t514, ptr %a515 - call void @finch.drop.S_ast_Type(ptr %a515) - br label %endif5784 -endif5784: - %t516 = load %S.ast.Type, ptr %a504 - %t517 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t516) - store %S.ast.Type %t517, ptr %a518 - %t519 = load ptr, ptr %a1 - %t520 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t519, { ptr, i64, i64 } { ptr @.str.3704, i64 17, i64 0 }) - store { ptr, i64, i64 } %t520, ptr %a521 - %t522 = load ptr, ptr %a1 - %t523 = load { ptr, i64, i64 }, ptr %a521 - call void @finch.gen.store(ptr %t522, { ptr, i64, i64 } { ptr @.str.3705, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.3706, i64 15, i64 0 }, { ptr, i64, i64 } %t523) - %t524 = load ptr, ptr %a1 - %t525 = load ptr, ptr %a1 - %t526 = load ptr, ptr %a1 - %t527 = load %S.ast.Type, ptr %a4 - %t528 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t526, %S.ast.Type %t527) - store { ptr, i64, i64 } { ptr @.str.3708, i64 23, i64 0 }, ptr %a530 - store { ptr, i64, i64 } %t528, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } %t533, ptr %a535 - store { ptr, i64, i64 } { ptr @.str.3709, i64 6, i64 0 }, ptr %a536 - call void @finch_str_concat(ptr %a534, ptr %a535, ptr %a536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = load { ptr, i64, i64 }, ptr %a534 - %t539 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t538, ptr %a541 - store { ptr, i64, i64 } %t539, ptr %a542 - call void @finch_str_concat(ptr %a540, ptr %a541, ptr %a542) - store { ptr, i64, i64 } %t538, ptr %a543 - call void @finch_str_drop(ptr %a543) - %t544 = load { ptr, i64, i64 }, ptr %a540 - store { ptr, i64, i64 } %t544, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.3710, i64 14, i64 0 }, ptr %a547 - call void @finch_str_concat(ptr %a545, ptr %a546, ptr %a547) - store { ptr, i64, i64 } %t544, ptr %a548 - call void @finch_str_drop(ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a545 - %t550 = call { ptr, i64, i64 } @finch.gen.op(ptr %t525, { ptr, i64, i64 } %t549) - store { ptr, i64, i64 } %t549, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = call { ptr, i64, i64 } @finch.gen.load(ptr %t524, { ptr, i64, i64 } { ptr @.str.3707, i64 3, i64 0 }, { ptr, i64, i64 } %t550) - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_drop(ptr %a553) - store { ptr, i64, i64 } %t552, ptr %a554 - %t555 = load ptr, ptr %a1 - %t556 = load { ptr, i64, i64 }, ptr %a521 - store { ptr, i64, i64 } { ptr @.str.3711, i64 30, i64 0 }, ptr %a558 - store { ptr, i64, i64 } %t556, ptr %a559 - call void @finch_str_concat(ptr %a557, ptr %a558, ptr %a559) - %t560 = load { ptr, i64, i64 }, ptr %a557 - store { ptr, i64, i64 } %t560, ptr %a562 - store { ptr, i64, i64 } { ptr @.str.3712, i64 6, i64 0 }, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t560, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - %t566 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t565, ptr %a568 - store { ptr, i64, i64 } %t566, ptr %a569 - call void @finch_str_concat(ptr %a567, ptr %a568, ptr %a569) - store { ptr, i64, i64 } %t565, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = load { ptr, i64, i64 }, ptr %a567 - store { ptr, i64, i64 } %t571, ptr %a573 - store { ptr, i64, i64 } { ptr @.str.3713, i64 6, i64 0 }, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t571, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - %t577 = load ptr, ptr %a1 - %t578 = load %S.ast.Type, ptr %a504 - %t579 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t577, %S.ast.Type %t578) - store { ptr, i64, i64 } %t576, ptr %a581 - store { ptr, i64, i64 } %t579, ptr %a582 - call void @finch_str_concat(ptr %a580, ptr %a581, ptr %a582) - store { ptr, i64, i64 } %t576, ptr %a583 - call void @finch_str_drop(ptr %a583) - store { ptr, i64, i64 } %t579, ptr %a584 - call void @finch_str_drop(ptr %a584) - %t585 = load { ptr, i64, i64 }, ptr %a580 - store { ptr, i64, i64 } %t585, ptr %a587 - store { ptr, i64, i64 } { ptr @.str.3714, i64 1, i64 0 }, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t585, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - call void @finch.gen.emit(ptr %t555, { ptr, i64, i64 } %t590) - store { ptr, i64, i64 } %t590, ptr %a591 - call void @finch_str_drop(ptr %a591) - %t592 = load ptr, ptr %a1 - %t593 = load { ptr, i64, i64 }, ptr %a521 - %t594 = call { ptr, i64, i64 } @finch.gen.load(ptr %t592, { ptr, i64, i64 } { ptr @.str.3715, i64 3, i64 0 }, { ptr, i64, i64 } %t593) - store { ptr, i64, i64 } %t594, ptr %a595 - %t596 = load ptr, ptr %a1 - %t597 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t596, { ptr, i64, i64 } { ptr @.str.3716, i64 3, i64 0 }) - store { ptr, i64, i64 } %t597, ptr %a598 - %t599 = load ptr, ptr %a1 - %t600 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t599, { ptr, i64, i64 } { ptr @.str.3717, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.3718, i64 1, i64 0 }, { ptr, i64, i64 } %t600) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = load ptr, ptr %a1 - %t604 = load %S.ast.Type, ptr %a4 - %t605 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t603, %S.ast.Type %t604) - store { ptr, i64, i64 } { ptr @.str.3720, i64 23, i64 0 }, ptr %a607 - store { ptr, i64, i64 } %t605, ptr %a608 - call void @finch_str_concat(ptr %a606, ptr %a607, ptr %a608) - store { ptr, i64, i64 } %t605, ptr %a609 - call void @finch_str_drop(ptr %a609) - %t610 = load { ptr, i64, i64 }, ptr %a606 - store { ptr, i64, i64 } %t610, ptr %a612 - store { ptr, i64, i64 } { ptr @.str.3721, i64 6, i64 0 }, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - %t616 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t615, ptr %a618 - store { ptr, i64, i64 } %t616, ptr %a619 - call void @finch_str_concat(ptr %a617, ptr %a618, ptr %a619) - store { ptr, i64, i64 } %t615, ptr %a620 - call void @finch_str_drop(ptr %a620) - %t621 = load { ptr, i64, i64 }, ptr %a617 - store { ptr, i64, i64 } %t621, ptr %a623 - store { ptr, i64, i64 } { ptr @.str.3722, i64 14, i64 0 }, ptr %a624 - call void @finch_str_concat(ptr %a622, ptr %a623, ptr %a624) - store { ptr, i64, i64 } %t621, ptr %a625 - call void @finch_str_drop(ptr %a625) - %t626 = load { ptr, i64, i64 }, ptr %a622 - %t627 = call { ptr, i64, i64 } @finch.gen.op(ptr %t602, { ptr, i64, i64 } %t626) - store { ptr, i64, i64 } %t626, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = call { ptr, i64, i64 } @finch.gen.load(ptr %t601, { ptr, i64, i64 } { ptr @.str.3719, i64 3, i64 0 }, { ptr, i64, i64 } %t627) - store { ptr, i64, i64 } %t627, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t629, ptr %a631 - %t632 = load ptr, ptr %a1 - %t633 = load { ptr, i64, i64 }, ptr %a631 - %t634 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t632, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t634, ptr %a635 - %t636 = load ptr, ptr %a1 - %t637 = load { ptr, i64, i64 }, ptr %a3 - %t638 = load %S.ast.Type, ptr %a4 - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = extractvalue { ptr, i64, i64 } %t639, 1 - %t641 = icmp uge i64 3, %t640 - br i1 %t641, label %range5785, label %inrange5786 -range5785: - call void @finch_panic_index(ptr @.str.3723, i64 3007, i64 3, i64 %t640) - unreachable -inrange5786: - %t642 = extractvalue { ptr, i64, i64 } %t639, 0 - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %t642, i64 3 - %t644 = load { ptr, i64, i64 }, ptr %t643 - %t645 = call { ptr, i64, i64 } @finch.gen.entryAt(ptr %t636, { ptr, i64, i64 } %t637, %S.ast.Type %t638, { ptr, i64, i64 } %t644) - store { ptr, i64, i64 } %t645, ptr %a646 - %t647 = load ptr, ptr %a1 - %t648 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t647, { ptr, i64, i64 } { ptr @.str.3724, i64 10, i64 0 }) - store { ptr, i64, i64 } %t648, ptr %a649 - %t650 = load ptr, ptr %a1 - %t651 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t650, { ptr, i64, i64 } { ptr @.str.3725, i64 10, i64 0 }) - store { ptr, i64, i64 } %t651, ptr %a652 - %t653 = load ptr, ptr %a1 - %t654 = load ptr, ptr %a1 - %t655 = load ptr, ptr %a1 - %t656 = load ptr, ptr %a1 - %t657 = load { ptr, i64, i64 }, ptr %a646 - %t658 = load %S.ast.Type, ptr %a4 - %t659 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t656, { ptr, i64, i64 } %t657, %S.ast.Type %t658, i64 0) - %t660 = call { ptr, i64, i64 } @finch.gen.load(ptr %t655, { ptr, i64, i64 } { ptr @.str.3727, i64 3, i64 0 }, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t659, ptr %a661 - call void @finch_str_drop(ptr %a661) - store { ptr, i64, i64 } { ptr @.str.3726, i64 12, i64 0 }, ptr %a663 - store { ptr, i64, i64 } %t660, ptr %a664 - call void @finch_str_concat(ptr %a662, ptr %a663, ptr %a664) - store { ptr, i64, i64 } %t660, ptr %a665 - call void @finch_str_drop(ptr %a665) - %t666 = load { ptr, i64, i64 }, ptr %a662 - store { ptr, i64, i64 } %t666, ptr %a668 - store { ptr, i64, i64 } { ptr @.str.3728, i64 3, i64 0 }, ptr %a669 - call void @finch_str_concat(ptr %a667, ptr %a668, ptr %a669) - store { ptr, i64, i64 } %t666, ptr %a670 - call void @finch_str_drop(ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a667 - %t672 = call { ptr, i64, i64 } @finch.gen.op(ptr %t654, { ptr, i64, i64 } %t671) - store { ptr, i64, i64 } %t671, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a649 - %t675 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.condBr(ptr %t653, { ptr, i64, i64 } %t672, { ptr, i64, i64 } %t674, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t672, ptr %a676 - call void @finch_str_drop(ptr %a676) - %t677 = load ptr, ptr %a1 - %t678 = load { ptr, i64, i64 }, ptr %a649 - call void @finch.gen.label(ptr %t677, { ptr, i64, i64 } %t678) - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a598 - %t681 = call { ptr, i64, i64 } @finch.gen.load(ptr %t679, { ptr, i64, i64 } { ptr @.str.3729, i64 3, i64 0 }, { ptr, i64, i64 } %t680) - store { ptr, i64, i64 } %t681, ptr %a682 - %t683 = load ptr, ptr %a1 - %t684 = load ptr, ptr %a1 - %t685 = load ptr, ptr %a1 - %t686 = load %S.ast.Type, ptr %a504 - %t687 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t685, %S.ast.Type %t686) - store { ptr, i64, i64 } { ptr @.str.3730, i64 23, i64 0 }, ptr %a689 - store { ptr, i64, i64 } %t687, ptr %a690 - call void @finch_str_concat(ptr %a688, ptr %a689, ptr %a690) - store { ptr, i64, i64 } %t687, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a688 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.3731, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a595 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.3732, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } %t708, ptr %a711 - store { ptr, i64, i64 } %t709, ptr %a712 - call void @finch_str_concat(ptr %a710, ptr %a711, ptr %a712) - store { ptr, i64, i64 } %t708, ptr %a713 - call void @finch_str_drop(ptr %a713) - %t714 = load { ptr, i64, i64 }, ptr %a710 - %t715 = call { ptr, i64, i64 } @finch.gen.op(ptr %t684, { ptr, i64, i64 } %t714) - store { ptr, i64, i64 } %t714, ptr %a716 - call void @finch_str_drop(ptr %a716) - %t717 = load ptr, ptr %a1 - %t718 = load { ptr, i64, i64 }, ptr %a646 - %t719 = load %S.ast.Type, ptr %a4 - %t720 = load i64, ptr %a499 - %t721 = call { ptr, i64, i64 } @finch.gen.entryField(ptr %t717, { ptr, i64, i64 } %t718, %S.ast.Type %t719, i64 %t720) - %t722 = load %S.ast.Type, ptr %a504 - call void @finch.gen.copyAt(ptr %t683, { ptr, i64, i64 } %t715, { ptr, i64, i64 } %t721, %S.ast.Type %t722) - store { ptr, i64, i64 } %t715, ptr %a723 - call void @finch_str_drop(ptr %a723) - store { ptr, i64, i64 } %t721, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load ptr, ptr %a1 - %t727 = load { ptr, i64, i64 }, ptr %a682 - store { ptr, i64, i64 } { ptr @.str.3734, i64 8, i64 0 }, ptr %a729 - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - %t731 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t731, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3735, i64 3, i64 0 }, ptr %a734 - call void @finch_str_concat(ptr %a732, ptr %a733, ptr %a734) - store { ptr, i64, i64 } %t731, ptr %a735 - call void @finch_str_drop(ptr %a735) - %t736 = load { ptr, i64, i64 }, ptr %a732 - %t737 = call { ptr, i64, i64 } @finch.gen.op(ptr %t726, { ptr, i64, i64 } %t736) - store { ptr, i64, i64 } %t736, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a598 - call void @finch.gen.store(ptr %t725, { ptr, i64, i64 } { ptr @.str.3733, i64 3, i64 0 }, { ptr, i64, i64 } %t737, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t737, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load ptr, ptr %a1 - %t742 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.br(ptr %t741, { ptr, i64, i64 } %t742) - %t743 = load ptr, ptr %a1 - %t744 = load { ptr, i64, i64 }, ptr %a652 - call void @finch.gen.label(ptr %t743, { ptr, i64, i64 } %t744) - %t745 = load ptr, ptr %a1 - %t746 = load { ptr, i64, i64 }, ptr %a635 - call void @finch.gen.loopEnd(ptr %t745, { ptr, i64, i64 } %t746) - %t747 = load ptr, ptr %a1 - %t748 = load { ptr, i64, i64 }, ptr %a521 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t747, { ptr, i64, i64 } { ptr @.str.3736, i64 17, i64 0 }, { ptr, i64, i64 } %t748) - %t750 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t749, 0 - %t751 = load %S.ast.Type, ptr %a518 - store %S.ast.Type %t751, ptr %a752 - call void @finch.copy.S_ast_Type(ptr %a753, ptr %a752) - %t754 = load %S.ast.Type, ptr %a753 - %t755 = insertvalue %S.gen.Val %t750, %S.ast.Type %t754, 1 - %t756 = insertvalue %S.gen.Val %t755, i1 true, 2 - call void @finch_str_drop(ptr %a682) - call void @finch_str_drop(ptr %a652) - call void @finch_str_drop(ptr %a649) - call void @finch_str_drop(ptr %a646) - call void @finch.drop.arr_str(ptr %a635) - call void @finch_str_drop(ptr %a631) - call void @finch_str_drop(ptr %a598) - call void @finch_str_drop(ptr %a595) - call void @finch_str_drop(ptr %a554) - call void @finch_str_drop(ptr %a521) - call void @finch.drop.S_ast_Type(ptr %a518) - call void @finch.drop.S_ast_Type(ptr %a504) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val %t756 -endif5781: - %t757 = load ptr, ptr %a1 - %t758 = load %S.ast.Node, ptr %a2 - %t759 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.3737, i64 21, i64 0 }, ptr %a761 - store { ptr, i64, i64 } %t759, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - %t763 = load { ptr, i64, i64 }, ptr %a760 - store { ptr, i64, i64 } %t763, ptr %a765 - store { ptr, i64, i64 } { ptr @.str.3738, i64 49, i64 0 }, ptr %a766 - call void @finch_str_concat(ptr %a764, ptr %a765, ptr %a766) - store { ptr, i64, i64 } %t763, ptr %a767 - call void @finch_str_drop(ptr %a767) - %t768 = load { ptr, i64, i64 }, ptr %a764 - call void @finch.gen.fail(ptr %t757, %S.ast.Node %t758, { ptr, i64, i64 } %t768) - store { ptr, i64, i64 } %t768, ptr %a769 - call void @finch_str_drop(ptr %a769) - call void @finch.drop.S_ast_Type(ptr %a32) - call void @finch.drop.S_ast_Type(ptr %a21) - call void @finch_str_drop(ptr %a10) - ret %S.gen.Val zeroinitializer -} - -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 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %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 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca %S.ast.Type, align 16 - %a118 = alloca %S.ast.Type, align 16 - %a129 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.3739, 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.from5787 -logic.from5787: - br i1 %t9, label %logic.rhs5788, label %logic.end5789 -logic.rhs5788: - %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.3740, 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.rend5790 -logic.rend5790: - br label %logic.end5789 -logic.end5789: - %t16 = phi i1 [ false, %logic.from5787 ], [ %t15, %logic.rend5790 ] - br label %logic.from5791 -logic.from5791: - br i1 %t16, label %logic.rhs5792, label %logic.end5793 -logic.rhs5792: - %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.rend5794 -logic.rend5794: - br label %logic.end5793 -logic.end5793: - %t22 = phi i1 [ false, %logic.from5791 ], [ %t21, %logic.rend5794 ] - br i1 %t22, label %then5795, label %endif5797 -then5795: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic5798, label %ok5799 -panic5798: - call void @finch_panic(ptr @.str.3741, i64 3029, ptr @.str.3742) - unreachable -ok5799: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 21 - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 3 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %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 %range5800, label %inrange5801 -range5800: - call void @finch_panic_index(ptr @.str.3743, i64 3029, i64 %t31, i64 %t33) - unreachable -inrange5801: - %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.cond5802 -find.cond5802: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t47 - br i1 %t51, label %find.body5803, label %find.end5806 -find.body5803: - %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.hit5804, label %find.next5805 -find.hit5804: - store i64 %t50, ptr %a46 - br label %find.end5806 -find.next5805: - %t58 = add i64 %t50, 1 - store i64 %t58, ptr %a49 - br label %find.cond5802 -find.end5806: - %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 %then5807, label %endif5809 -then5807: - %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.3744, 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.3745, i64 22, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 1 - %t77 = load { ptr, i64, i64 }, ptr %t76 - store { ptr, i64, i64 } %t75, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t75, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t82, ptr %a84 - store { ptr, i64, i64 } { ptr @.str.3746, i64 10, i64 0 }, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t82, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 2 - %t89 = getelementptr inbounds { ptr, i64, i64 }, ptr %t88, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3747, i64 2, i64 0 }, ptr %a90 - call void @finch_str_join(ptr %a91, ptr %t88, ptr %a90) - %t92 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t87, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t87, ptr %a96 - call void @finch_str_drop(ptr %a96) - store { ptr, i64, i64 } %t92, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.3748, i64 1, i64 0 }, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - call void @finch.gen.fail(ptr %t63, %S.ast.Node %t64, { ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t103, ptr %a104 - call void @finch_str_drop(ptr %a104) - br label %endif5809 -endif5809: - %t105 = getelementptr inbounds %S.gen.EnumDef, ptr %a41, i32 0, i32 3 - %t106 = load i64, ptr %a60 - %t107 = load { ptr, i64, i64 }, ptr %t105 - %t108 = extractvalue { ptr, i64, i64 } %t107, 1 - %t109 = icmp uge i64 %t106, %t108 - br i1 %t109, label %range5810, label %inrange5811 -range5810: - call void @finch_panic_index(ptr @.str.3749, i64 3034, i64 %t106, i64 %t108) - unreachable -inrange5811: - %t110 = extractvalue { ptr, i64, i64 } %t107, 0 - %t111 = getelementptr inbounds i64, ptr %t110, i64 %t106 - %t112 = load i64, ptr %t111 - call void @finch_str_from_int(ptr %a113, i64 %t112) - %t114 = load { ptr, i64, i64 }, ptr %a113 - %t115 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t114, 0 - %t116 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t116, ptr %a117 - call void @finch.copy.S_ast_Type(ptr %a118, ptr %a117) - %t119 = load %S.ast.Type, ptr %a118 - %t120 = insertvalue %S.gen.Val %t115, %S.ast.Type %t119, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a41) - ret %S.gen.Val %t120 -endif5797: - %t121 = load ptr, ptr %a1 - %t122 = load ptr, ptr %a1 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = load %S.ast.Type, ptr %a3 - %t125 = call %S.gen.Val @finch.gen.exprWant(ptr %t122, %S.ast.Node %t123, %S.ast.Type %t124) - %t126 = load %S.ast.Type, ptr %a3 - %t127 = load %S.ast.Node, ptr %a2 - %t128 = call %S.gen.Val @finch.gen.coerce(ptr %t121, %S.gen.Val %t125, %S.ast.Type %t126, %S.ast.Node %t127, { ptr, i64, i64 } { ptr @.str.3750, i64 12, i64 0 }) - store %S.gen.Val %t125, ptr %a129 - call void @finch.drop.S_gen_Val(ptr %a129) - ret %S.gen.Val %t128 -} - -define internal void @finch.drop.S_gen_SumPat(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.SumPat, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_ast_Node(ptr %t1) - ret void -} - -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 - %a46 = alloca i64, align 16 - %a49 = 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 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i1, align 16 - %a128 = alloca i1, 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 %S.ast.Type, align 16 - %a138 = alloca i64, align 16 - %a140 = alloca i64, align 16 - %a152 = alloca %S.ast.Node, align 16 - %a153 = alloca %S.ast.Node, align 16 - %a155 = alloca %S.ast.Node, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca i64, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca %S.gen.SumPat, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %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 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca %S.gen.Val, align 16 - %a303 = alloca i64, align 16 - %a306 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.gen.Val, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca i1, align 16 - %a404 = alloca %S.gen.StructDef, align 16 - %a405 = alloca %S.gen.StructDef, align 16 - %a407 = alloca %S.gen.StructDef, align 16 - %a410 = alloca i64, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca i64, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a454 = alloca %S.ast.Type, align 16 - %a456 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %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 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a525 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca %S.ast.Node, align 16 - %a536 = alloca %S.ast.Node, align 16 - %a538 = alloca %S.ast.Node, align 16 - %a543 = alloca %S.gen.Val, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca %S.ast.Type, align 16 - %a573 = alloca %S.ast.Type, align 16 - %a576 = alloca %S.ast.Type, align 16 - %a583 = alloca %S.gen.Val, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca i64, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca i64, align 16 - %a670 = alloca i64, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a703 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca %S.gen.EnumDef, align 16 - %a753 = alloca %S.gen.EnumDef, align 16 - %a755 = alloca %S.gen.EnumDef, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca i64, align 16 - %a772 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca i64, align 16 - %a777 = alloca i64, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a823 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a840 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a867 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a882 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a887 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca %S.ast.Type, align 16 - %a891 = alloca %S.ast.Type, align 16 - %a898 = 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 %range5812, label %inrange5813 -range5812: - call void @finch_panic_index(ptr @.str.3751, i64 3042, i64 0, i64 %t7) - unreachable -inrange5813: - %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.3752, 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.from5814 -logic.from5814: - br i1 %t25, label %logic.end5816, label %logic.rhs5815 -logic.rhs5815: - %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.3753, 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.rend5817 -logic.rend5817: - br label %logic.end5816 -logic.end5816: - %t32 = phi i1 [ true, %logic.from5814 ], [ %t31, %logic.rend5817 ] - br i1 %t32, label %then5818, label %endif5820 -then5818: - %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 %range5821, label %inrange5822 -range5821: - call void @finch_panic_index(ptr @.str.3754, i64 3045, i64 0, i64 %t36) - unreachable -inrange5822: - %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.3755, i64 30, i64 0 }) - br label %endif5820 -endif5820: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic5823, label %ok5824 -panic5823: - call void @finch_panic(ptr @.str.3756, i64 3047, ptr @.str.3757) - unreachable -ok5824: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 11 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - store i64 %t45, ptr %a46 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a13 - call void @finch.gen.hold(ptr %t47, %S.gen.Val %t48) - store i64 -1, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.3758, i64 0, i64 0 }, ptr %a50 - %t51 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.3759, i64 6, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then5825, label %endif5827 -then5825: - %t57 = load ptr, ptr %a1 - %t58 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t59 = load { ptr, i64, i64 }, ptr %t58 - %t60 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = call i64 @finch.gen.findSum(ptr %t57, { ptr, i64, i64 } %t59, { ptr, i64, i64 } %t61) - store i64 %t62, ptr %a49 - %t63 = load i64, ptr %a49 - %t64 = icmp sge i64 %t63, 0 - br i1 %t64, label %then5828, label %endif5830 -then5828: - %t65 = load ptr, ptr %a1 - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Type, ptr %a19 - %t68 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t66, %S.ast.Type %t67) - store { ptr, i64, i64 } { ptr @.str.3760, i64 13, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.3761, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.3762, i64 2, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = load ptr, ptr %a1 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic5831, label %ok5832 -panic5831: - call void @finch_panic(ptr @.str.3763, i64 3054, ptr @.str.3764) - unreachable -ok5832: - %t93 = getelementptr inbounds %S.gen.Gen, ptr %t91, i32 0, i32 16 - %t94 = load ptr, ptr %a1 - %t95 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t96 = load { ptr, i64, i64 }, ptr %t95 - %t97 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t98 = load { ptr, i64, i64 }, ptr %t97 - %t99 = call i64 @finch.gen.findStruct(ptr %t94, { ptr, i64, i64 } %t96, { ptr, i64, i64 } %t98) - %t100 = load { ptr, i64, i64 }, ptr %t93 - %t101 = extractvalue { ptr, i64, i64 } %t100, 1 - %t102 = icmp uge i64 %t99, %t101 - br i1 %t102, label %range5833, label %inrange5834 -range5833: - call void @finch_panic_index(ptr @.str.3765, i64 3054, i64 %t99, i64 %t101) - unreachable -inrange5834: - %t103 = extractvalue { ptr, i64, i64 } %t100, 0 - %t104 = getelementptr inbounds %S.gen.StructDef, ptr %t103, i64 %t99 - %t105 = getelementptr inbounds %S.gen.StructDef, ptr %t104, i32 0, i32 3 - %t106 = load { ptr, i64, i64 }, ptr %t105 - %t107 = extractvalue { ptr, i64, i64 } %t106, 1 - %t108 = icmp uge i64 0, %t107 - br i1 %t108, label %range5835, label %inrange5836 -range5835: - call void @finch_panic_index(ptr @.str.3766, i64 3054, i64 0, i64 %t107) - unreachable -inrange5836: - %t109 = extractvalue { ptr, i64, i64 } %t106, 0 - %t110 = getelementptr inbounds i64, ptr %t109, i64 0 - %t111 = load i64, ptr %t110 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t90, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t90, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t119) - store { ptr, i64, i64 } %t119, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t120, ptr %a50 - store { ptr, i64, i64 } %t122, ptr %a123 - call void @finch_str_drop(ptr %a123) - br label %endif5830 -endif5830: - br label %endif5827 -endif5827: - %t124 = load ptr, ptr %a1 - %t125 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t124, { ptr, i64, i64 } { ptr @.str.3767, i64 9, i64 0 }) - store { ptr, i64, i64 } %t125, ptr %a126 - store i1 false, ptr %a127 - store i1 false, ptr %a128 - store { ptr, i64, i64 } zeroinitializer, ptr %a129 - store { ptr, i64, i64 } zeroinitializer, ptr %a130 - store { ptr, i64, i64 } zeroinitializer, ptr %a131 - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3768, i64 4, i64 0 }) - store %S.ast.Type %t132, ptr %a133 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = sub i64 %t136, 1 - store i64 %t137, ptr %a138 - %t139 = load i64, ptr %a138 - store i64 0, ptr %a140 - br label %for.cond5837 -for.cond5837: - %t141 = load i64, ptr %a140 - %t142 = icmp slt i64 %t141, %t139 - br i1 %t142, label %for.body5838, label %for.end5840 -for.body5838: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t144 = load i64, ptr %a140 - %t145 = add i64 1, %t144 - %t146 = load { ptr, i64, i64 }, ptr %t143 - %t147 = extractvalue { ptr, i64, i64 } %t146, 1 - %t148 = icmp uge i64 %t145, %t147 - br i1 %t148, label %range5841, label %inrange5842 -range5841: - call void @finch_panic_index(ptr @.str.3769, i64 3066, i64 %t145, i64 %t147) - unreachable -inrange5842: - %t149 = extractvalue { ptr, i64, i64 } %t146, 0 - %t150 = getelementptr inbounds %S.ast.Node, ptr %t149, i64 %t145 - %t151 = load %S.ast.Node, ptr %t150 - store %S.ast.Node %t151, ptr %a152 - call void @finch.copy.S_ast_Node(ptr %a153, ptr %a152) - %t154 = load %S.ast.Node, ptr %a153 - store %S.ast.Node %t154, ptr %a155 - %t156 = load i1, ptr %a127 - br i1 %t156, label %then5843, label %endif5845 -then5843: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a155 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } { ptr @.str.3770, i64 72, i64 0 }) - br label %endif5845 -endif5845: - %t159 = load ptr, ptr %a1 - %t160 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t159, { ptr, i64, i64 } { ptr @.str.3771, i64 9, i64 0 }) - store { ptr, i64, i64 } %t160, ptr %a161 - %t162 = load ptr, ptr %a1 - %t163 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t162, { ptr, i64, i64 } { ptr @.str.3772, i64 10, i64 0 }) - store { ptr, i64, i64 } %t163, ptr %a164 - store { ptr, i64, i64 } zeroinitializer, ptr %a165 - store i64 -1, ptr %a166 - %t167 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t168 = load i1, ptr %t167 - br i1 %t168, label %then5846, label %else5847 -then5846: - store i1 true, ptr %a127 - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.br(ptr %t169, { ptr, i64, i64 } %t170) - br label %endif5848 -else5847: - %t171 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t172 = load { ptr, i64, i64 }, ptr %t171 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 0, %t173 - br i1 %t174, label %range5849, label %inrange5850 -range5849: - call void @finch_panic_index(ptr @.str.3773, i64 3078, i64 0, i64 %t173) - unreachable -inrange5850: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 0 - %t177 = getelementptr inbounds %S.ast.Node, ptr %t176, i32 0, i32 9 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t178, ptr %a179 - call void @finch.copy.arr_S_ast_Node(ptr %a180, ptr %a179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } %t181, ptr %a182 - %t183 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t184 = load i64, ptr %t183 - store i64 0, ptr %a185 - br label %for.cond5851 -for.cond5851: - %t186 = load i64, ptr %a185 - %t187 = icmp slt i64 %t186, %t184 - br i1 %t187, label %for.body5852, label %for.end5854 -for.body5852: - store { ptr, i64, i64 } { ptr @.str.3774, i64 0, i64 0 }, ptr %a188 - %t189 = load i64, ptr %a49 - %t190 = icmp sge i64 %t189, 0 - br i1 %t190, label %then5855, label %else5856 -then5855: - %t191 = load ptr, ptr %a1 - %t192 = load i64, ptr %a185 - %t193 = load { ptr, i64, i64 }, ptr %a182 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 %t192, %t194 - br i1 %t195, label %range5858, label %inrange5859 -range5858: - call void @finch_panic_index(ptr @.str.3775, i64 3082, i64 %t192, i64 %t194) - unreachable -inrange5859: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 %t192 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = load i64, ptr %a49 - %t200 = call %S.gen.SumPat @finch.gen.sumPattern(ptr %t191, %S.ast.Node %t198, i64 %t199) - store %S.gen.SumPat %t200, ptr %a201 - %t202 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t203 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t204 = load i64, ptr %t203 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store i64 -1, ptr %a207 - %t208 = load i64, ptr %t202 - %t209 = load ptr, ptr %a129 - store i64 0, ptr %a210 - br label %find.cond5860 -find.cond5860: - %t211 = load i64, ptr %a210 - %t212 = icmp slt i64 %t211, %t208 - br i1 %t212, label %find.body5861, label %find.end5864 -find.body5861: - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i64 %t211 - %t214 = load { ptr, i64, i64 }, ptr %t213 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } %t206, ptr %a216 - %t217 = call i32 @finch_str_eq(ptr %a215, ptr %a216) - %t218 = icmp ne i32 %t217, 0 - br i1 %t218, label %find.hit5862, label %find.next5863 -find.hit5862: - store i64 %t211, ptr %a207 - br label %find.end5864 -find.next5863: - %t219 = add i64 %t211, 1 - store i64 %t219, ptr %a210 - br label %find.cond5860 -find.end5864: - store { ptr, i64, i64 } %t206, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load i64, ptr %a207 - %t222 = icmp sge i64 %t221, 0 - br i1 %t222, label %then5865, label %endif5867 -then5865: - %t223 = load ptr, ptr %a1 - %t224 = load i64, ptr %a185 - %t225 = load { ptr, i64, i64 }, ptr %a182 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range5868, label %inrange5869 -range5868: - call void @finch_panic_index(ptr @.str.3776, i64 3084, i64 %t224, i64 %t226) - unreachable -inrange5869: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds %S.ast.Node, ptr %t228, i64 %t224 - %t230 = load %S.ast.Node, ptr %t229 - call void @finch.gen.fail(ptr %t223, %S.ast.Node %t230, { ptr, i64, i64 } { ptr @.str.3777, i64 49, i64 0 }) - br label %endif5867 -endif5867: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t232 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t233 = load i64, ptr %t232 - call void @finch_str_from_int(ptr %a234, i64 %t233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load i64, ptr %t231 - %t237 = add i64 %t236, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t237, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t238 = load ptr, ptr %a129 - %t239 = getelementptr inbounds { ptr, i64, i64 }, ptr %t238, i64 %t236 - store { ptr, i64, i64 } %t235, ptr %t239 - store i64 %t237, ptr %t231 - %t240 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i32 0, i32 1 - %t242 = load i64, ptr %t241 - %t243 = icmp sgt i64 %t242, 0 - br i1 %t243, label %then5870, label %endif5872 -then5870: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = icmp sgt i64 %t245, 1 - br i1 %t246, label %then5873, label %endif5875 -then5873: - %t247 = load ptr, ptr %a1 - %t248 = load i64, ptr %a185 - %t249 = load { ptr, i64, i64 }, ptr %a182 - %t250 = extractvalue { ptr, i64, i64 } %t249, 1 - %t251 = icmp uge i64 %t248, %t250 - br i1 %t251, label %range5876, label %inrange5877 -range5876: - call void @finch_panic_index(ptr @.str.3778, i64 3089, i64 %t248, i64 %t250) - unreachable -inrange5877: - %t252 = extractvalue { ptr, i64, i64 } %t249, 0 - %t253 = getelementptr inbounds %S.ast.Node, ptr %t252, i64 %t248 - %t254 = load %S.ast.Node, ptr %t253 - call void @finch.gen.fail(ptr %t247, %S.ast.Node %t254, { ptr, i64, i64 } { ptr @.str.3779, i64 52, i64 0 }) - br label %endif5875 -endif5875: - %t255 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.copy.arr_S_ast_Node(ptr %a258, ptr %a257) - %t259 = load { ptr, i64, i64 }, ptr %a258 - %t260 = load { ptr, i64, i64 }, ptr %a165 - store { ptr, i64, i64 } %t259, ptr %a165 - store { ptr, i64, i64 } %t260, ptr %a261 - call void @finch.drop.arr_S_ast_Node(ptr %a261) - %t262 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t263 = load i64, ptr %t262 - store i64 %t263, ptr %a166 - br label %endif5872 -endif5872: - %t264 = load ptr, ptr %a1 - %t265 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.3780, i64 12, 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.3781, i64 2, i64 0 }, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t269, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - %t275 = getelementptr inbounds %S.gen.SumPat, ptr %a201, i32 0, i32 0 - %t276 = load i64, ptr %t275 - call void @finch_str_from_int(ptr %a277, i64 %t276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - store { ptr, i64, i64 } %t274, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t274, ptr %a282 - call void @finch_str_drop(ptr %a282) - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a279 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t264, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t285, ptr %a188 - store { ptr, i64, i64 } %t287, ptr %a288 - call void @finch_str_drop(ptr %a288) - call void @finch.drop.S_gen_SumPat(ptr %a201) - br label %endif5857 -else5856: - %t289 = load ptr, ptr %a1 - %t290 = load i64, ptr %a185 - %t291 = load { ptr, i64, i64 }, ptr %a182 - %t292 = extractvalue { ptr, i64, i64 } %t291, 1 - %t293 = icmp uge i64 %t290, %t292 - br i1 %t293, label %range5878, label %inrange5879 -range5878: - call void @finch_panic_index(ptr @.str.3782, i64 3096, i64 %t290, i64 %t292) - unreachable -inrange5879: - %t294 = extractvalue { ptr, i64, i64 } %t291, 0 - %t295 = getelementptr inbounds %S.ast.Node, ptr %t294, i64 %t290 - %t296 = load %S.ast.Node, ptr %t295 - %t297 = load %S.ast.Type, ptr %a19 - %t298 = call %S.gen.Val @finch.gen.patternValue(ptr %t289, %S.ast.Node %t296, %S.ast.Type %t297) - store %S.gen.Val %t298, ptr %a299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t301 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store i64 -1, ptr %a303 - %t304 = load i64, ptr %t300 - %t305 = load ptr, ptr %a129 - store i64 0, ptr %a306 - br label %find.cond5880 -find.cond5880: - %t307 = load i64, ptr %a306 - %t308 = icmp slt i64 %t307, %t304 - br i1 %t308, label %find.body5881, label %find.end5884 -find.body5881: - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t305, i64 %t307 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - store { ptr, i64, i64 } %t302, ptr %a312 - %t313 = call i32 @finch_str_eq(ptr %a311, ptr %a312) - %t314 = icmp ne i32 %t313, 0 - br i1 %t314, label %find.hit5882, label %find.next5883 -find.hit5882: - store i64 %t307, ptr %a303 - br label %find.end5884 -find.next5883: - %t315 = add i64 %t307, 1 - store i64 %t315, ptr %a306 - br label %find.cond5880 -find.end5884: - %t316 = load i64, ptr %a303 - %t317 = icmp sge i64 %t316, 0 - br label %logic.from5885 -logic.from5885: - br i1 %t317, label %logic.rhs5886, label %logic.end5887 -logic.rhs5886: - %t318 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - store { ptr, i64, i64 } { ptr @.str.3783, i64 4, i64 0 }, ptr %a321 - %t322 = call i32 @finch_str_eq(ptr %a320, ptr %a321) - %t323 = icmp ne i32 %t322, 0 - br label %logic.rend5888 -logic.rend5888: - br label %logic.end5887 -logic.end5887: - %t324 = phi i1 [ false, %logic.from5885 ], [ %t323, %logic.rend5888 ] - br i1 %t324, label %then5889, label %endif5891 -then5889: - %t325 = load ptr, ptr %a1 - %t326 = load i64, ptr %a185 - %t327 = load { ptr, i64, i64 }, ptr %a182 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range5892, label %inrange5893 -range5892: - call void @finch_panic_index(ptr @.str.3784, i64 3098, i64 %t326, i64 %t328) - unreachable -inrange5893: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - call void @finch.gen.fail(ptr %t325, %S.ast.Node %t332, { ptr, i64, i64 } { ptr @.str.3785, i64 49, i64 0 }) - br label %endif5891 -endif5891: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t334 = getelementptr inbounds %S.gen.Val, ptr %a299, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - call void @finch_str_copy(ptr %a337, ptr %a336) - %t338 = load { ptr, i64, i64 }, ptr %a337 - %t339 = load i64, ptr %t333 - %t340 = add i64 %t339, 1 - call void @finch_arr_reserve(ptr %a129, i64 %t340, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t341 = load ptr, ptr %a129 - %t342 = getelementptr inbounds { ptr, i64, i64 }, ptr %t341, i64 %t339 - store { ptr, i64, i64 } %t338, ptr %t342 - store i64 %t340, ptr %t333 - %t343 = load ptr, ptr %a1 - %t344 = load %S.gen.Val, ptr %a13 - %t345 = load %S.gen.Val, ptr %a299 - %t346 = load i64, ptr %a185 - %t347 = load { ptr, i64, i64 }, ptr %a182 - %t348 = extractvalue { ptr, i64, i64 } %t347, 1 - %t349 = icmp uge i64 %t346, %t348 - br i1 %t349, label %range5894, label %inrange5895 -range5894: - call void @finch_panic_index(ptr @.str.3787, i64 3101, i64 %t346, i64 %t348) - unreachable -inrange5895: - %t350 = extractvalue { ptr, i64, i64 } %t347, 0 - %t351 = getelementptr inbounds %S.ast.Node, ptr %t350, i64 %t346 - %t352 = load %S.ast.Node, ptr %t351 - %t353 = call %S.gen.Val @finch.gen.compare(ptr %t343, { ptr, i64, i64 } { ptr @.str.3786, i64 2, i64 0 }, %S.gen.Val %t344, %S.gen.Val %t345, %S.ast.Node %t352) - %t354 = extractvalue %S.gen.Val %t353, 0 - store { ptr, i64, i64 } %t354, ptr %a355 - call void @finch_str_copy(ptr %a356, ptr %a355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store %S.gen.Val %t353, ptr %a358 - call void @finch.drop.S_gen_Val(ptr %a358) - %t359 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t357, ptr %a188 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - call void @finch.drop.S_gen_Val(ptr %a299) - br label %endif5857 -endif5857: - %t361 = load i64, ptr %a185 - %t362 = getelementptr inbounds { ptr, i64, i64 }, ptr %a182, i32 0, i32 1 - %t363 = load i64, ptr %t362 - %t364 = sub i64 %t363, 1 - %t365 = icmp eq i64 %t361, %t364 - br i1 %t365, label %then5896, label %else5897 -then5896: - %t366 = load ptr, ptr %a1 - %t367 = load { ptr, i64, i64 }, ptr %a188 - %t368 = load { ptr, i64, i64 }, ptr %a161 - %t369 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.condBr(ptr %t366, { ptr, i64, i64 } %t367, { ptr, i64, i64 } %t368, { ptr, i64, i64 } %t369) - br label %endif5898 -else5897: - %t370 = load ptr, ptr %a1 - %t371 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t370, { ptr, i64, i64 } { ptr @.str.3788, i64 8, i64 0 }) - store { ptr, i64, i64 } %t371, ptr %a372 - %t373 = load ptr, ptr %a1 - %t374 = load { ptr, i64, i64 }, ptr %a188 - %t375 = load { ptr, i64, i64 }, ptr %a161 - %t376 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.condBr(ptr %t373, { ptr, i64, i64 } %t374, { ptr, i64, i64 } %t375, { ptr, i64, i64 } %t376) - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a372 - call void @finch.gen.label(ptr %t377, { ptr, i64, i64 } %t378) - call void @finch_str_drop(ptr %a372) - br label %endif5898 -endif5898: - call void @finch_str_drop(ptr %a188) - br label %for.step5853 -for.step5853: - %t379 = load i64, ptr %a185 - %t380 = add i64 %t379, 1 - store i64 %t380, ptr %a185 - br label %for.cond5851 -for.end5854: - call void @finch.drop.arr_S_ast_Node(ptr %a182) - br label %endif5848 -endif5848: - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a161 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t384 = load i64, ptr %t383 - %t385 = icmp sgt i64 %t384, 0 - store i1 %t385, ptr %a386 - %t387 = load i1, ptr %a386 - br i1 %t387, label %then5899, label %endif5901 -then5899: - %t388 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t388) - %t389 = load ptr, ptr %a1 - %t390 = icmp eq ptr %t389, null - br i1 %t390, label %panic5902, label %ok5903 -panic5902: - call void @finch_panic(ptr @.str.3789, i64 3116, ptr @.str.3790) - unreachable -ok5903: - %t391 = getelementptr inbounds %S.gen.Gen, ptr %t389, i32 0, i32 16 - %t392 = load ptr, ptr %a1 - %t393 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t394 = load { ptr, i64, i64 }, ptr %t393 - %t395 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t396 = load { ptr, i64, i64 }, ptr %t395 - %t397 = call i64 @finch.gen.findStruct(ptr %t392, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t396) - %t398 = load { ptr, i64, i64 }, ptr %t391 - %t399 = extractvalue { ptr, i64, i64 } %t398, 1 - %t400 = icmp uge i64 %t397, %t399 - br i1 %t400, label %range5904, label %inrange5905 -range5904: - call void @finch_panic_index(ptr @.str.3791, i64 3116, i64 %t397, i64 %t399) - unreachable -inrange5905: - %t401 = extractvalue { ptr, i64, i64 } %t398, 0 - %t402 = getelementptr inbounds %S.gen.StructDef, ptr %t401, i64 %t397 - %t403 = load %S.gen.StructDef, ptr %t402 - store %S.gen.StructDef %t403, ptr %a404 - call void @finch.copy.S_gen_StructDef(ptr %a405, ptr %a404) - %t406 = load %S.gen.StructDef, ptr %a405 - store %S.gen.StructDef %t406, ptr %a407 - %t408 = getelementptr inbounds { ptr, i64, i64 }, ptr %a165, i32 0, i32 1 - %t409 = load i64, ptr %t408 - store i64 0, ptr %a410 - br label %for.cond5906 -for.cond5906: - %t411 = load i64, ptr %a410 - %t412 = icmp slt i64 %t411, %t409 - br i1 %t412, label %for.body5907, label %for.end5909 -for.body5907: - %t413 = load i64, ptr %a410 - %t414 = load { ptr, i64, i64 }, ptr %a165 - %t415 = extractvalue { ptr, i64, i64 } %t414, 1 - %t416 = icmp uge i64 %t413, %t415 - br i1 %t416, label %range5910, label %inrange5911 -range5910: - call void @finch_panic_index(ptr @.str.3792, i64 3118, i64 %t413, i64 %t415) - unreachable -inrange5911: - %t417 = extractvalue { ptr, i64, i64 } %t414, 0 - %t418 = getelementptr inbounds %S.ast.Node, ptr %t417, i64 %t413 - %t419 = getelementptr inbounds %S.ast.Node, ptr %t418, i32 0, i32 1 - %t420 = load { ptr, i64, i64 }, ptr %t419 - store { ptr, i64, i64 } %t420, ptr %a421 - store { ptr, i64, i64 } { ptr @.str.3793, i64 1, i64 0 }, ptr %a422 - %t423 = call i32 @finch_str_eq(ptr %a421, ptr %a422) - %t424 = icmp ne i32 %t423, 0 - br i1 %t424, label %then5912, label %endif5914 -then5912: - br label %for.step5908 -endif5914: - %t425 = load ptr, ptr %a1 - %t426 = icmp eq ptr %t425, null - br i1 %t426, label %panic5915, label %ok5916 -panic5915: - call void @finch_panic(ptr @.str.3794, i64 3121, ptr @.str.3795) - unreachable -ok5916: - %t427 = getelementptr inbounds %S.gen.Gen, ptr %t425, i32 0, i32 22 - %t428 = load i64, ptr %a49 - %t429 = load { ptr, i64, i64 }, ptr %t427 - %t430 = extractvalue { ptr, i64, i64 } %t429, 1 - %t431 = icmp uge i64 %t428, %t430 - br i1 %t431, label %range5917, label %inrange5918 -range5917: - call void @finch_panic_index(ptr @.str.3796, i64 3121, i64 %t428, i64 %t430) - unreachable -inrange5918: - %t432 = extractvalue { ptr, i64, i64 } %t429, 0 - %t433 = getelementptr inbounds %S.gen.SumDef, ptr %t432, i64 %t428 - %t434 = getelementptr inbounds %S.gen.SumDef, ptr %t433, i32 0, i32 4 - %t435 = load i64, ptr %a166 - %t436 = load { ptr, i64, i64 }, ptr %t434 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 %t435, %t437 - br i1 %t438, label %range5919, label %inrange5920 -range5919: - call void @finch_panic_index(ptr @.str.3797, i64 3121, i64 %t435, i64 %t437) - unreachable -inrange5920: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds i64, ptr %t439, i64 %t435 - %t441 = load i64, ptr %t440 - %t442 = load i64, ptr %a410 - %t443 = add i64 %t441, %t442 - store i64 %t443, ptr %a444 - %t445 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 12 - %t446 = load i64, ptr %a444 - %t447 = load { ptr, i64, i64 }, ptr %t445 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range5921, label %inrange5922 -range5921: - call void @finch_panic_index(ptr @.str.3798, i64 3122, i64 %t446, i64 %t448) - unreachable -inrange5922: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds %S.ast.Type, ptr %t450, i64 %t446 - %t452 = load %S.ast.Type, ptr %t451 - store %S.ast.Type %t452, ptr %a453 - call void @finch.copy.S_ast_Type(ptr %a454, ptr %a453) - %t455 = load %S.ast.Type, ptr %a454 - store %S.ast.Type %t455, ptr %a456 - %t457 = load ptr, ptr %a1 - %t458 = load ptr, ptr %a1 - %t459 = load %S.ast.Type, ptr %a19 - %t460 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t458, %S.ast.Type %t459) - store { ptr, i64, i64 } { ptr @.str.3799, i64 13, i64 0 }, ptr %a462 - store { ptr, i64, i64 } %t460, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t460, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t465, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.3800, i64 1, i64 0 }, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - store { ptr, i64, i64 } %t465, ptr %a469 - call void @finch_str_drop(ptr %a469) - %t470 = load { ptr, i64, i64 }, ptr %a466 - %t471 = getelementptr inbounds %S.gen.Val, ptr %a13, i32 0, i32 0 - %t472 = load { ptr, i64, i64 }, ptr %t471 - store { ptr, i64, i64 } %t470, ptr %a474 - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_concat(ptr %a473, ptr %a474, ptr %a475) - store { ptr, i64, i64 } %t470, ptr %a476 - call void @finch_str_drop(ptr %a476) - %t477 = load { ptr, i64, i64 }, ptr %a473 - store { ptr, i64, i64 } %t477, ptr %a479 - store { ptr, i64, i64 } { ptr @.str.3801, i64 2, i64 0 }, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t477, ptr %a481 - call void @finch_str_drop(ptr %a481) - %t482 = load { ptr, i64, i64 }, ptr %a478 - %t483 = getelementptr inbounds %S.gen.StructDef, ptr %a407, i32 0, i32 3 - %t484 = load i64, ptr %a444 - %t485 = load { ptr, i64, i64 }, ptr %t483 - %t486 = extractvalue { ptr, i64, i64 } %t485, 1 - %t487 = icmp uge i64 %t484, %t486 - br i1 %t487, label %range5923, label %inrange5924 -range5923: - call void @finch_panic_index(ptr @.str.3802, i64 3123, i64 %t484, i64 %t486) - unreachable -inrange5924: - %t488 = extractvalue { ptr, i64, i64 } %t485, 0 - %t489 = getelementptr inbounds i64, ptr %t488, i64 %t484 - %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 } %t482, ptr %a494 - store { ptr, i64, i64 } %t492, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t482, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t492, ptr %a497 - call void @finch_str_drop(ptr %a497) - %t498 = load { ptr, i64, i64 }, ptr %a493 - %t499 = call { ptr, i64, i64 } @finch.gen.op(ptr %t457, { ptr, i64, i64 } %t498) - store { ptr, i64, i64 } %t498, ptr %a500 - call void @finch_str_drop(ptr %a500) - store { ptr, i64, i64 } %t499, ptr %a501 - %t502 = load ptr, ptr %a1 - %t503 = load i64, ptr %a410 - %t504 = load { ptr, i64, i64 }, ptr %a165 - %t505 = extractvalue { ptr, i64, i64 } %t504, 1 - %t506 = icmp uge i64 %t503, %t505 - br i1 %t506, label %range5925, label %inrange5926 -range5925: - call void @finch_panic_index(ptr @.str.3803, i64 3124, i64 %t503, i64 %t505) - unreachable -inrange5926: - %t507 = extractvalue { ptr, i64, i64 } %t504, 0 - %t508 = getelementptr inbounds %S.ast.Node, ptr %t507, i64 %t503 - %t509 = load %S.ast.Node, ptr %t508 - %t510 = load i64, ptr %a410 - %t511 = load { ptr, i64, i64 }, ptr %a165 - %t512 = extractvalue { ptr, i64, i64 } %t511, 1 - %t513 = icmp uge i64 %t510, %t512 - br i1 %t513, label %range5927, label %inrange5928 -range5927: - call void @finch_panic_index(ptr @.str.3804, i64 3124, i64 %t510, i64 %t512) - unreachable -inrange5928: - %t514 = extractvalue { ptr, i64, i64 } %t511, 0 - %t515 = getelementptr inbounds %S.ast.Node, ptr %t514, i64 %t510 - %t516 = getelementptr inbounds %S.ast.Node, ptr %t515, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = load %S.ast.Type, ptr %a456 - %t519 = load ptr, ptr %a1 - %t520 = load { ptr, i64, i64 }, ptr %a501 - %t521 = load %S.ast.Type, ptr %a456 - %t522 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t519, { ptr, i64, i64 } %t520, %S.ast.Type %t521) - %t523 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t502, %S.ast.Node %t509, { ptr, i64, i64 } %t517, %S.ast.Type %t518, { ptr, i64, i64 } %t522, i1 true, i1 true) - store { ptr, i64, i64 } %t522, ptr %a524 - call void @finch_str_drop(ptr %a524) - store { ptr, i64, i64 } %t523, ptr %a525 - call void @finch_str_drop(ptr %a525) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a456) - br label %for.step5908 -for.step5908: - %t526 = load i64, ptr %a410 - %t527 = add i64 %t526, 1 - store i64 %t527, ptr %a410 - br label %for.cond5906 -for.end5909: - call void @finch.drop.S_gen_StructDef(ptr %a407) - br label %endif5901 -endif5901: - %t528 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 9 - %t529 = load { ptr, i64, i64 }, ptr %t528 - %t530 = extractvalue { ptr, i64, i64 } %t529, 1 - %t531 = icmp uge i64 1, %t530 - br i1 %t531, label %range5929, label %inrange5930 -range5929: - call void @finch_panic_index(ptr @.str.3805, i64 3127, i64 1, i64 %t530) - unreachable -inrange5930: - %t532 = extractvalue { ptr, i64, i64 } %t529, 0 - %t533 = getelementptr inbounds %S.ast.Node, ptr %t532, i64 1 - %t534 = load %S.ast.Node, ptr %t533 - store %S.ast.Node %t534, ptr %a535 - call void @finch.copy.S_ast_Node(ptr %a536, ptr %a535) - %t537 = load %S.ast.Node, ptr %a536 - store %S.ast.Node %t537, ptr %a538 - %t539 = load i1, ptr %a3 - br i1 %t539, label %then5931, label %else5932 -then5931: - %t540 = load ptr, ptr %a1 - %t541 = load %S.ast.Node, ptr %a538 - %t542 = call %S.gen.Val @finch.gen.expr(ptr %t540, %S.ast.Node %t541) - store %S.gen.Val %t542, ptr %a543 - %t544 = load i64, ptr %a140 - %t545 = icmp eq i64 %t544, 0 - br label %logic.from5934 -logic.from5934: - br i1 %t545, label %logic.end5936, label %logic.rhs5935 -logic.rhs5935: - %t546 = getelementptr inbounds %S.ast.Type, ptr %a133, i32 0, i32 0 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } %t547, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.3806, i64 4, i64 0 }, ptr %a549 - %t550 = call i32 @finch_str_eq(ptr %a548, ptr %a549) - %t551 = icmp ne i32 %t550, 0 - br label %logic.rend5937 -logic.rend5937: - br label %logic.end5936 -logic.end5936: - %t552 = phi i1 [ true, %logic.from5934 ], [ %t551, %logic.rend5937 ] - br i1 %t552, label %then5938, label %endif5940 -then5938: - %t553 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t554 = getelementptr inbounds %S.ast.Type, ptr %t553, i32 0, i32 0 - %t555 = load { ptr, i64, i64 }, ptr %t554 - store { ptr, i64, i64 } %t555, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.3807, i64 4, i64 0 }, ptr %a557 - %t558 = call i32 @finch_str_eq(ptr %a556, ptr %a557) - %t559 = icmp ne i32 %t558, 0 - br label %logic.from5941 -logic.from5941: - br i1 %t559, label %logic.end5943, label %logic.rhs5942 -logic.rhs5942: - %t560 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t561 = getelementptr inbounds %S.ast.Type, ptr %t560, i32 0, i32 0 - %t562 = load { ptr, i64, i64 }, ptr %t561 - store { ptr, i64, i64 } %t562, ptr %a563 - store { ptr, i64, i64 } { ptr @.str.3808, i64 4, i64 0 }, ptr %a564 - %t565 = call i32 @finch_str_eq(ptr %a563, ptr %a564) - %t566 = icmp ne i32 %t565, 0 - br label %logic.rend5944 -logic.rend5944: - br label %logic.end5943 -logic.end5943: - %t567 = phi i1 [ true, %logic.from5941 ], [ %t566, %logic.rend5944 ] - br i1 %t567, label %then5945, label %endif5947 -then5945: - %t568 = load ptr, ptr %a1 - %t569 = load %S.ast.Node, ptr %a538 - call void @finch.gen.fail(ptr %t568, %S.ast.Node %t569, { ptr, i64, i64 } { ptr @.str.3809, i64 52, i64 0 }) - br label %endif5947 -endif5947: - %t570 = getelementptr inbounds %S.gen.Val, ptr %a543, i32 0, i32 1 - %t571 = load %S.ast.Type, ptr %t570 - 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 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t574, ptr %a133 - store %S.ast.Type %t575, ptr %a576 - call void @finch.drop.S_ast_Type(ptr %a576) - br label %endif5940 -endif5940: - %t577 = load ptr, ptr %a1 - %t578 = load %S.gen.Val, ptr %a543 - %t579 = load %S.ast.Type, ptr %a133 - %t580 = load %S.ast.Node, ptr %a538 - %t581 = call %S.gen.Val @finch.gen.coerce(ptr %t577, %S.gen.Val %t578, %S.ast.Type %t579, %S.ast.Node %t580, { ptr, i64, i64 } { ptr @.str.3810, i64 57, i64 0 }) - %t582 = load %S.gen.Val, ptr %a543 - store %S.gen.Val %t581, ptr %a543 - store %S.gen.Val %t582, ptr %a583 - call void @finch.drop.S_gen_Val(ptr %a583) - %t584 = load ptr, ptr %a1 - %t585 = load %S.gen.Val, ptr %a543 - %t586 = call { ptr, i64, i64 } @finch.gen.own(ptr %t584, %S.gen.Val %t585) - store { ptr, i64, i64 } %t586, ptr %a587 - %t588 = load i1, ptr %a386 - br i1 %t588, label %then5948, label %endif5950 -then5948: - %t589 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t589) - br label %endif5950 -endif5950: - %t590 = load ptr, ptr %a1 - %t591 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t590, { ptr, i64, i64 } { ptr @.str.3811, i64 10, i64 0 }) - store { ptr, i64, i64 } %t591, ptr %a592 - %t593 = load ptr, ptr %a1 - %t594 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.br(ptr %t593, { ptr, i64, i64 } %t594) - %t595 = load ptr, ptr %a1 - %t596 = load { ptr, i64, i64 }, ptr %a592 - call void @finch.gen.label(ptr %t595, { ptr, i64, i64 } %t596) - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %a130, i32 0, i32 1 - %t598 = load { ptr, i64, i64 }, ptr %a587 - store { ptr, i64, i64 } %t598, ptr %a599 - call void @finch_str_copy(ptr %a600, ptr %a599) - %t601 = load { ptr, i64, i64 }, ptr %a600 - %t602 = load i64, ptr %t597 - %t603 = add i64 %t602, 1 - call void @finch_arr_reserve(ptr %a130, i64 %t603, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t604 = load ptr, ptr %a130 - %t605 = getelementptr inbounds { ptr, i64, i64 }, ptr %t604, i64 %t602 - store { ptr, i64, i64 } %t601, ptr %t605 - store i64 %t603, ptr %t597 - %t606 = getelementptr inbounds { ptr, i64, i64 }, ptr %a131, i32 0, i32 1 - %t607 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t607, ptr %a608 - call void @finch_str_copy(ptr %a609, ptr %a608) - %t610 = load { ptr, i64, i64 }, ptr %a609 - %t611 = load i64, ptr %t606 - %t612 = add i64 %t611, 1 - call void @finch_arr_reserve(ptr %a131, i64 %t612, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t613 = load ptr, ptr %a131 - %t614 = getelementptr inbounds { ptr, i64, i64 }, ptr %t613, i64 %t611 - store { ptr, i64, i64 } %t610, ptr %t614 - store i64 %t612, ptr %t606 - %t615 = load ptr, ptr %a1 - %t616 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t615, { ptr, i64, i64 } %t616) - store i1 true, ptr %a128 - call void @finch_str_drop(ptr %a592) - call void @finch_str_drop(ptr %a587) - call void @finch.drop.S_gen_Val(ptr %a543) - br label %endif5933 -else5932: - %t617 = getelementptr inbounds %S.ast.Node, ptr %a538, i32 0, i32 0 - %t618 = load { ptr, i64, i64 }, ptr %t617 - store { ptr, i64, i64 } %t618, ptr %a619 - store { ptr, i64, i64 } { ptr @.str.3812, i64 5, i64 0 }, ptr %a620 - %t621 = call i32 @finch_str_eq(ptr %a619, ptr %a620) - %t622 = icmp ne i32 %t621, 0 - br i1 %t622, label %then5951, label %else5952 -then5951: - %t623 = load ptr, ptr %a1 - %t624 = load %S.ast.Node, ptr %a538 - call void @finch.gen.block(ptr %t623, %S.ast.Node %t624, i1 true) - br label %endif5953 -else5952: - %t625 = load ptr, ptr %a1 - %t626 = load %S.ast.Node, ptr %a538 - call void @finch.gen.stmt(ptr %t625, %S.ast.Node %t626) - br label %endif5953 -endif5953: - %t627 = load ptr, ptr %a1 - %t628 = icmp eq ptr %t627, null - br i1 %t628, label %panic5954, label %ok5955 -panic5954: - call void @finch_panic(ptr @.str.3813, i64 3154, ptr @.str.3814) - unreachable -ok5955: - %t629 = getelementptr inbounds %S.gen.Gen, ptr %t627, i32 0, i32 9 - %t630 = load i1, ptr %t629 - %t631 = xor i1 %t630, true - br i1 %t631, label %then5956, label %endif5958 -then5956: - store i1 true, ptr %a128 - br label %endif5958 -endif5958: - %t632 = load i1, ptr %a386 - br i1 %t632, label %then5959, label %endif5961 -then5959: - %t633 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t633) - br label %endif5961 -endif5961: - %t634 = load ptr, ptr %a1 - %t635 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.br(ptr %t634, { ptr, i64, i64 } %t635) - br label %endif5933 -endif5933: - %t636 = getelementptr inbounds %S.ast.Node, ptr %a155, i32 0, i32 6 - %t637 = load i1, ptr %t636 - %t638 = xor i1 %t637, true - br i1 %t638, label %then5962, label %endif5964 -then5962: - %t639 = load ptr, ptr %a1 - %t640 = load { ptr, i64, i64 }, ptr %a164 - call void @finch.gen.label(ptr %t639, { ptr, i64, i64 } %t640) - br label %endif5964 -endif5964: - call void @finch.drop.S_ast_Node(ptr %a538) - call void @finch.drop.arr_S_ast_Node(ptr %a165) - call void @finch_str_drop(ptr %a164) - call void @finch_str_drop(ptr %a161) - call void @finch.drop.S_ast_Node(ptr %a155) - br label %for.step5839 -for.step5839: - %t641 = load i64, ptr %a140 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a140 - br label %for.cond5837 -for.end5840: - %t643 = load i1, ptr %a127 - %t644 = xor i1 %t643, true - br i1 %t644, label %then5965, label %endif5967 -then5965: - %t645 = load i64, ptr %a49 - %t646 = icmp sge i64 %t645, 0 - br i1 %t646, label %then5968, label %else5969 -then5968: - store { ptr, i64, i64 } zeroinitializer, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic5971, label %ok5972 -panic5971: - call void @finch_panic(ptr @.str.3815, i64 3169, ptr @.str.3816) - unreachable -ok5972: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 22 - %t651 = load i64, ptr %a49 - %t652 = load { ptr, i64, i64 }, ptr %t650 - %t653 = extractvalue { ptr, i64, i64 } %t652, 1 - %t654 = icmp uge i64 %t651, %t653 - br i1 %t654, label %range5973, label %inrange5974 -range5973: - call void @finch_panic_index(ptr @.str.3817, i64 3169, i64 %t651, i64 %t653) - unreachable -inrange5974: - %t655 = extractvalue { ptr, i64, i64 } %t652, 0 - %t656 = getelementptr inbounds %S.gen.SumDef, ptr %t655, i64 %t651 - %t657 = getelementptr inbounds %S.gen.SumDef, ptr %t656, i32 0, i32 2 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i32 0, i32 1 - %t659 = load i64, ptr %t658 - store i64 0, ptr %a660 - br label %for.cond5975 -for.cond5975: - %t661 = load i64, ptr %a660 - %t662 = icmp slt i64 %t661, %t659 - br i1 %t662, label %for.body5976, label %for.end5978 -for.body5976: - %t663 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t664 = load i64, ptr %a660 - call void @finch_str_from_int(ptr %a665, i64 %t664) - %t666 = load { ptr, i64, i64 }, ptr %a665 - store i64 -1, ptr %a667 - %t668 = load i64, ptr %t663 - %t669 = load ptr, ptr %a129 - store i64 0, ptr %a670 - br label %find.cond5979 -find.cond5979: - %t671 = load i64, ptr %a670 - %t672 = icmp slt i64 %t671, %t668 - br i1 %t672, label %find.body5980, label %find.end5983 -find.body5980: - %t673 = getelementptr inbounds { ptr, i64, i64 }, ptr %t669, i64 %t671 - %t674 = load { ptr, i64, i64 }, ptr %t673 - store { ptr, i64, i64 } %t674, ptr %a675 - store { ptr, i64, i64 } %t666, ptr %a676 - %t677 = call i32 @finch_str_eq(ptr %a675, ptr %a676) - %t678 = icmp ne i32 %t677, 0 - br i1 %t678, label %find.hit5981, label %find.next5982 -find.hit5981: - store i64 %t671, ptr %a667 - br label %find.end5983 -find.next5982: - %t679 = add i64 %t671, 1 - store i64 %t679, ptr %a670 - br label %find.cond5979 -find.end5983: - store { ptr, i64, i64 } %t666, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load i64, ptr %a667 - %t682 = icmp sge i64 %t681, 0 - %t683 = xor i1 %t682, true - br i1 %t683, label %then5984, label %endif5986 -then5984: - %t684 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t685 = load ptr, ptr %a1 - %t686 = icmp eq ptr %t685, null - br i1 %t686, label %panic5987, label %ok5988 -panic5987: - call void @finch_panic(ptr @.str.3818, i64 3171, ptr @.str.3819) - unreachable -ok5988: - %t687 = getelementptr inbounds %S.gen.Gen, ptr %t685, i32 0, i32 22 - %t688 = load i64, ptr %a49 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range5989, label %inrange5990 -range5989: - call void @finch_panic_index(ptr @.str.3820, i64 3171, i64 %t688, i64 %t690) - unreachable -inrange5990: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.gen.SumDef, ptr %t692, i64 %t688 - %t694 = getelementptr inbounds %S.gen.SumDef, ptr %t693, i32 0, i32 2 - %t695 = load i64, ptr %a660 - %t696 = load { ptr, i64, i64 }, ptr %t694 - %t697 = extractvalue { ptr, i64, i64 } %t696, 1 - %t698 = icmp uge i64 %t695, %t697 - br i1 %t698, label %range5991, label %inrange5992 -range5991: - call void @finch_panic_index(ptr @.str.3821, i64 3171, i64 %t695, i64 %t697) - unreachable -inrange5992: - %t699 = extractvalue { ptr, i64, i64 } %t696, 0 - %t700 = getelementptr inbounds { ptr, i64, i64 }, ptr %t699, i64 %t695 - %t701 = load { ptr, i64, i64 }, ptr %t700 - store { ptr, i64, i64 } %t701, ptr %a702 - call void @finch_str_copy(ptr %a703, ptr %a702) - %t704 = load { ptr, i64, i64 }, ptr %a703 - %t705 = load i64, ptr %t684 - %t706 = add i64 %t705, 1 - call void @finch_arr_reserve(ptr %a647, i64 %t706, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t707 = load ptr, ptr %a647 - %t708 = getelementptr inbounds { ptr, i64, i64 }, ptr %t707, i64 %t705 - store { ptr, i64, i64 } %t704, ptr %t708 - store i64 %t706, ptr %t684 - br label %endif5986 -endif5986: - br label %for.step5977 -for.step5977: - %t709 = load i64, ptr %a660 - %t710 = add i64 %t709, 1 - store i64 %t710, ptr %a660 - br label %for.cond5975 -for.end5978: - %t711 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - %t712 = load i64, ptr %t711 - %t713 = icmp sgt i64 %t712, 0 - br i1 %t713, label %then5993, label %endif5995 -then5993: - %t714 = load ptr, ptr %a1 - %t715 = load %S.ast.Node, ptr %a2 - %t716 = getelementptr inbounds { ptr, i64, i64 }, ptr %a647, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3823, i64 2, i64 0 }, ptr %a717 - call void @finch_str_join(ptr %a718, ptr %a647, ptr %a717) - %t719 = load { ptr, i64, i64 }, ptr %a718 - store { ptr, i64, i64 } { ptr @.str.3822, i64 26, i64 0 }, ptr %a721 - store { ptr, i64, i64 } %t719, ptr %a722 - call void @finch_str_concat(ptr %a720, ptr %a721, ptr %a722) - store { ptr, i64, i64 } %t719, ptr %a723 - call void @finch_str_drop(ptr %a723) - %t724 = load { ptr, i64, i64 }, ptr %a720 - store { ptr, i64, i64 } %t724, ptr %a726 - store { ptr, i64, i64 } { ptr @.str.3824, i64 29, i64 0 }, ptr %a727 - call void @finch_str_concat(ptr %a725, ptr %a726, ptr %a727) - store { ptr, i64, i64 } %t724, ptr %a728 - call void @finch_str_drop(ptr %a728) - %t729 = load { ptr, i64, i64 }, ptr %a725 - call void @finch.gen.fail(ptr %t714, %S.ast.Node %t715, { ptr, i64, i64 } %t729) - store { ptr, i64, i64 } %t729, ptr %a730 - call void @finch_str_drop(ptr %a730) - br label %endif5995 -endif5995: - call void @finch.drop.arr_str(ptr %a647) - br label %endif5970 -else5969: - %t731 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 0 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t732, ptr %a733 - store { ptr, i64, i64 } { ptr @.str.3825, i64 4, i64 0 }, ptr %a734 - %t735 = call i32 @finch_str_eq(ptr %a733, ptr %a734) - %t736 = icmp ne i32 %t735, 0 - br i1 %t736, label %then5996, label %else5997 -then5996: - %t737 = load ptr, ptr %a1 - %t738 = icmp eq ptr %t737, null - br i1 %t738, label %panic5999, label %ok6000 -panic5999: - call void @finch_panic(ptr @.str.3826, i64 3178, ptr @.str.3827) - unreachable -ok6000: - %t739 = getelementptr inbounds %S.gen.Gen, ptr %t737, i32 0, i32 21 - %t740 = load ptr, ptr %a1 - %t741 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 3 - %t742 = load { ptr, i64, i64 }, ptr %t741 - %t743 = getelementptr inbounds %S.ast.Type, ptr %a19, i32 0, i32 2 - %t744 = load { ptr, i64, i64 }, ptr %t743 - %t745 = call i64 @finch.gen.findEnum(ptr %t740, { ptr, i64, i64 } %t742, { ptr, i64, i64 } %t744) - %t746 = load { ptr, i64, i64 }, ptr %t739 - %t747 = extractvalue { ptr, i64, i64 } %t746, 1 - %t748 = icmp uge i64 %t745, %t747 - br i1 %t748, label %range6001, label %inrange6002 -range6001: - call void @finch_panic_index(ptr @.str.3828, i64 3178, i64 %t745, i64 %t747) - unreachable -inrange6002: - %t749 = extractvalue { ptr, i64, i64 } %t746, 0 - %t750 = getelementptr inbounds %S.gen.EnumDef, ptr %t749, i64 %t745 - %t751 = load %S.gen.EnumDef, ptr %t750 - store %S.gen.EnumDef %t751, ptr %a752 - call void @finch.copy.S_gen_EnumDef(ptr %a753, ptr %a752) - %t754 = load %S.gen.EnumDef, ptr %a753 - store %S.gen.EnumDef %t754, ptr %a755 - store { ptr, i64, i64 } zeroinitializer, ptr %a756 - %t757 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t758 = getelementptr inbounds { ptr, i64, i64 }, ptr %t757, i32 0, i32 1 - %t759 = load i64, ptr %t758 - store i64 0, ptr %a760 - br label %for.cond6003 -for.cond6003: - %t761 = load i64, ptr %a760 - %t762 = icmp slt i64 %t761, %t759 - br i1 %t762, label %for.body6004, label %for.end6006 -for.body6004: - %t763 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t764 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 3 - %t765 = load i64, ptr %a760 - %t766 = load { ptr, i64, i64 }, ptr %t764 - %t767 = extractvalue { ptr, i64, i64 } %t766, 1 - %t768 = icmp uge i64 %t765, %t767 - br i1 %t768, label %range6007, label %inrange6008 -range6007: - call void @finch_panic_index(ptr @.str.3829, i64 3181, i64 %t765, i64 %t767) - unreachable -inrange6008: - %t769 = extractvalue { ptr, i64, i64 } %t766, 0 - %t770 = getelementptr inbounds i64, ptr %t769, i64 %t765 - %t771 = load i64, ptr %t770 - call void @finch_str_from_int(ptr %a772, i64 %t771) - %t773 = load { ptr, i64, i64 }, ptr %a772 - store i64 -1, ptr %a774 - %t775 = load i64, ptr %t763 - %t776 = load ptr, ptr %a129 - store i64 0, ptr %a777 - br label %find.cond6009 -find.cond6009: - %t778 = load i64, ptr %a777 - %t779 = icmp slt i64 %t778, %t775 - br i1 %t779, label %find.body6010, label %find.end6013 -find.body6010: - %t780 = getelementptr inbounds { ptr, i64, i64 }, ptr %t776, i64 %t778 - %t781 = load { ptr, i64, i64 }, ptr %t780 - store { ptr, i64, i64 } %t781, ptr %a782 - store { ptr, i64, i64 } %t773, ptr %a783 - %t784 = call i32 @finch_str_eq(ptr %a782, ptr %a783) - %t785 = icmp ne i32 %t784, 0 - br i1 %t785, label %find.hit6011, label %find.next6012 -find.hit6011: - store i64 %t778, ptr %a774 - br label %find.end6013 -find.next6012: - %t786 = add i64 %t778, 1 - store i64 %t786, ptr %a777 - br label %find.cond6009 -find.end6013: - store { ptr, i64, i64 } %t773, ptr %a787 - call void @finch_str_drop(ptr %a787) - %t788 = load i64, ptr %a774 - %t789 = icmp sge i64 %t788, 0 - %t790 = xor i1 %t789, true - br i1 %t790, label %then6014, label %endif6016 -then6014: - %t791 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t792 = getelementptr inbounds %S.gen.EnumDef, ptr %a755, i32 0, i32 2 - %t793 = load i64, ptr %a760 - %t794 = load { ptr, i64, i64 }, ptr %t792 - %t795 = extractvalue { ptr, i64, i64 } %t794, 1 - %t796 = icmp uge i64 %t793, %t795 - br i1 %t796, label %range6017, label %inrange6018 -range6017: - call void @finch_panic_index(ptr @.str.3830, i64 3182, i64 %t793, i64 %t795) - unreachable -inrange6018: - %t797 = extractvalue { ptr, i64, i64 } %t794, 0 - %t798 = getelementptr inbounds { ptr, i64, i64 }, ptr %t797, i64 %t793 - %t799 = load { ptr, i64, i64 }, ptr %t798 - store { ptr, i64, i64 } %t799, ptr %a800 - call void @finch_str_copy(ptr %a801, ptr %a800) - %t802 = load { ptr, i64, i64 }, ptr %a801 - %t803 = load i64, ptr %t791 - %t804 = add i64 %t803, 1 - call void @finch_arr_reserve(ptr %a756, i64 %t804, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t805 = load ptr, ptr %a756 - %t806 = getelementptr inbounds { ptr, i64, i64 }, ptr %t805, i64 %t803 - store { ptr, i64, i64 } %t802, ptr %t806 - store i64 %t804, ptr %t791 - br label %endif6016 -endif6016: - br label %for.step6005 -for.step6005: - %t807 = load i64, ptr %a760 - %t808 = add i64 %t807, 1 - store i64 %t808, ptr %a760 - br label %for.cond6003 -for.end6006: - %t809 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - %t810 = load i64, ptr %t809 - %t811 = icmp sgt i64 %t810, 0 - br i1 %t811, label %then6019, label %endif6021 -then6019: - %t812 = load ptr, ptr %a1 - %t813 = load %S.ast.Node, ptr %a2 - %t814 = getelementptr inbounds { ptr, i64, i64 }, ptr %a756, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3832, i64 2, i64 0 }, ptr %a815 - call void @finch_str_join(ptr %a816, ptr %a756, ptr %a815) - %t817 = load { ptr, i64, i64 }, ptr %a816 - store { ptr, i64, i64 } { ptr @.str.3831, i64 26, i64 0 }, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t822, ptr %a824 - store { ptr, i64, i64 } { ptr @.str.3833, i64 29, i64 0 }, ptr %a825 - call void @finch_str_concat(ptr %a823, ptr %a824, ptr %a825) - store { ptr, i64, i64 } %t822, ptr %a826 - call void @finch_str_drop(ptr %a826) - %t827 = load { ptr, i64, i64 }, ptr %a823 - call void @finch.gen.fail(ptr %t812, %S.ast.Node %t813, { ptr, i64, i64 } %t827) - store { ptr, i64, i64 } %t827, ptr %a828 - call void @finch_str_drop(ptr %a828) - br label %endif6021 -endif6021: - call void @finch.drop.arr_str(ptr %a756) - call void @finch.drop.S_gen_EnumDef(ptr %a755) - br label %endif5998 -else5997: - %t829 = load ptr, ptr %a1 - %t830 = load %S.ast.Node, ptr %a2 - %t831 = load %S.ast.Type, ptr %a19 - %t832 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t831) - store { ptr, i64, i64 } { ptr @.str.3834, i64 11, i64 0 }, ptr %a834 - store { ptr, i64, i64 } %t832, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - store { ptr, i64, i64 } %t837, ptr %a839 - store { ptr, i64, i64 } { ptr @.str.3835, i64 54, i64 0 }, ptr %a840 - call void @finch_str_concat(ptr %a838, ptr %a839, ptr %a840) - store { ptr, i64, i64 } %t837, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = load { ptr, i64, i64 }, ptr %a838 - call void @finch.gen.fail(ptr %t829, %S.ast.Node %t830, { ptr, i64, i64 } %t842) - store { ptr, i64, i64 } %t842, ptr %a843 - call void @finch_str_drop(ptr %a843) - br label %endif5998 -endif5998: - br label %endif5970 -endif5970: - %t844 = load ptr, ptr %a1 - %t845 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t844, { ptr, i64, i64 } { ptr @.str.3836, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.3837, i64 35, i64 0 }, %S.ast.Node %t845) - %t846 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t846, { ptr, i64, i64 } { ptr @.str.3838, i64 11, i64 0 }) - %t847 = load ptr, ptr %a1 - %t848 = icmp eq ptr %t847, null - br i1 %t848, label %panic6022, label %ok6023 -panic6022: - call void @finch_panic(ptr @.str.3839, i64 3194, ptr @.str.3840) - unreachable -ok6023: - %t849 = getelementptr inbounds %S.gen.Gen, ptr %t847, i32 0, i32 9 - store i1 true, ptr %t849 - br label %endif5967 -endif5967: - %t850 = load ptr, ptr %a1 - %t851 = load i64, ptr %a46 - call void @finch.gen.heldEnd(ptr %t850, i64 %t851) - %t852 = load ptr, ptr %a1 - %t853 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.label(ptr %t852, { ptr, i64, i64 } %t853) - %t854 = load i1, ptr %a128 - %t855 = xor i1 %t854, true - br i1 %t855, label %then6024, label %endif6026 -then6024: - %t856 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t856, { ptr, i64, i64 } { ptr @.str.3841, i64 11, i64 0 }) - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic6027, label %ok6028 -panic6027: - call void @finch_panic(ptr @.str.3842, i64 3200, ptr @.str.3843) - unreachable -ok6028: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 9 - store i1 true, ptr %t859 - %t860 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3844, i64 4, i64 0 }) - %t861 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t860, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t861 -endif6026: - %t862 = load i1, ptr %a3 - br i1 %t862, label %then6029, label %endif6031 -then6029: - %t863 = load ptr, ptr %a1 - %t864 = load ptr, ptr %a1 - %t865 = load %S.ast.Type, ptr %a133 - %t866 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t864, %S.ast.Type %t865) - store { ptr, i64, i64 } { ptr @.str.3845, i64 4, i64 0 }, ptr %a868 - store { ptr, i64, i64 } %t866, ptr %a869 - call void @finch_str_concat(ptr %a867, ptr %a868, ptr %a869) - store { ptr, i64, i64 } %t866, ptr %a870 - call void @finch_str_drop(ptr %a870) - %t871 = load { ptr, i64, i64 }, ptr %a867 - store { ptr, i64, i64 } %t871, ptr %a873 - store { ptr, i64, i64 } { ptr @.str.3846, i64 1, i64 0 }, ptr %a874 - call void @finch_str_concat(ptr %a872, ptr %a873, ptr %a874) - store { ptr, i64, i64 } %t871, ptr %a875 - call void @finch_str_drop(ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a872 - %t877 = load { ptr, i64, i64 }, ptr %a130 - %t878 = load { ptr, i64, i64 }, ptr %a131 - %t879 = call { ptr, i64, i64 } @finch.gen.phiList({ ptr, i64, i64 } %t877, { ptr, i64, i64 } %t878) - store { ptr, i64, i64 } %t876, ptr %a881 - store { ptr, i64, i64 } %t879, ptr %a882 - call void @finch_str_concat(ptr %a880, ptr %a881, ptr %a882) - store { ptr, i64, i64 } %t876, ptr %a883 - call void @finch_str_drop(ptr %a883) - store { ptr, i64, i64 } %t879, ptr %a884 - call void @finch_str_drop(ptr %a884) - %t885 = load { ptr, i64, i64 }, ptr %a880 - %t886 = call { ptr, i64, i64 } @finch.gen.op(ptr %t863, { ptr, i64, i64 } %t885) - store { ptr, i64, i64 } %t885, ptr %a887 - call void @finch_str_drop(ptr %a887) - %t888 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t886, 0 - %t889 = load %S.ast.Type, ptr %a133 - store %S.ast.Type %t889, ptr %a890 - call void @finch.copy.S_ast_Type(ptr %a891, ptr %a890) - %t892 = load %S.ast.Type, ptr %a891 - %t893 = insertvalue %S.gen.Val %t888, %S.ast.Type %t892, 1 - %t894 = load ptr, ptr %a1 - %t895 = load %S.ast.Type, ptr %a133 - %t896 = call i1 @finch.gen.owning(ptr %t894, %S.ast.Type %t895) - %t897 = insertvalue %S.gen.Val %t893, i1 %t896, 2 - store %S.gen.Val %t897, ptr %a898 - %t899 = load ptr, ptr %a1 - %t900 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t899, %S.gen.Val %t900) - %t901 = load %S.gen.Val, ptr %a898 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t901 -endif6031: - %t902 = load ptr, ptr %a1 - %t903 = load %S.gen.Val, ptr %a13 - call void @finch.gen.release(ptr %t902, %S.gen.Val %t903) - %t904 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3847, i64 4, i64 0 }) - %t905 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t904, 1 - call void @finch.drop.S_ast_Type(ptr %a133) - call void @finch.drop.arr_str(ptr %a131) - call void @finch.drop.arr_str(ptr %a130) - call void @finch.drop.arr_str(ptr %a129) - call void @finch_str_drop(ptr %a126) - call void @finch_str_drop(ptr %a50) - call void @finch.drop.S_ast_Type(ptr %a19) - call void @finch.drop.S_gen_Val(ptr %a13) - ret %S.gen.Val %t905 -} - -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 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t5 = load i64, ptr %t4 - store i64 0, ptr %a6 - br label %for.cond6032 -for.cond6032: - %t7 = load i64, ptr %a6 - %t8 = icmp slt i64 %t7, %t5 - br i1 %t8, label %for.body6033, label %for.end6035 -for.body6033: - %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 %range6036, label %inrange6037 -range6036: - call void @finch_panic_index(ptr @.str.3849, i64 3215, i64 %t10, i64 %t12) - unreachable -inrange6037: - %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.3848, 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.3850, i64 3, i64 0 }, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - %t26 = load i64, ptr %a6 - %t27 = load { ptr, i64, i64 }, ptr %a2 - %t28 = extractvalue { ptr, i64, i64 } %t27, 1 - %t29 = icmp uge i64 %t26, %t28 - br i1 %t29, label %range6038, label %inrange6039 -range6038: - call void @finch_panic_index(ptr @.str.3851, i64 3215, i64 %t26, i64 %t28) - unreachable -inrange6039: - %t30 = extractvalue { ptr, i64, i64 } %t27, 0 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t26 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t25, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t25, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.3852, i64 2, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load i64, ptr %t9 - %t44 = add i64 %t43, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t44, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t45 = load ptr, ptr %a3 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t43 - store { ptr, i64, i64 } %t42, ptr %t46 - store i64 %t44, ptr %t9 - br label %for.step6034 -for.step6034: - %t47 = load i64, ptr %a6 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a6 - br label %for.cond6032 -for.end6035: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.3853, i64 2, i64 0 }, ptr %a50 - call void @finch_str_join(ptr %a51, ptr %a3, ptr %a50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t52 -} - -define internal %S.gen.Fallible @finch.gen.fallibleCall(ptr %p0, %S.ast.Node %p1) { -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 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a64 = alloca %S.gen.Val, align 16 - %a65 = alloca %S.gen.Val, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca %S.gen.Fallible, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = 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 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t4 = load { ptr, i64, i64 }, ptr %t3 - store { ptr, i64, i64 } %t4, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.3854, 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.from6040 -logic.from6040: - br i1 %t8, label %logic.rhs6041, label %logic.end6042 -logic.rhs6041: - %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.3855, 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.rend6043 -logic.rend6043: - br label %logic.end6042 -logic.end6042: - %t15 = phi i1 [ false, %logic.from6040 ], [ %t14, %logic.rend6043 ] - br i1 %t15, label %then6044, label %endif6046 -then6044: - %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.3856, i64 80, i64 0 }) - br label %endif6046 -endif6046: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6047, label %ok6048 -panic6047: - call void @finch_panic(ptr @.str.3857, i64 3233, ptr @.str.3858) - unreachable -ok6048: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 41 - %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 %panic6049, label %ok6050 -panic6049: - call void @finch_panic(ptr @.str.3859, i64 3234, ptr @.str.3860) - unreachable -ok6050: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 42 - %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 %panic6051, label %ok6052 -panic6051: - call void @finch_panic(ptr @.str.3861, i64 3235, ptr @.str.3862) - unreachable -ok6052: - %t36 = getelementptr inbounds %S.gen.Gen, ptr %t34, i32 0, i32 43 - %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 %panic6053, label %ok6054 -panic6053: - call void @finch_panic(ptr @.str.3863, i64 3236, ptr @.str.3864) - unreachable -ok6054: - %t46 = getelementptr inbounds %S.gen.Gen, ptr %t44, i32 0, i32 41 - %t47 = load { ptr, i64, i64 }, ptr %t46 - store { ptr, i64, i64 } %t43, ptr %t46 - store { ptr, i64, i64 } %t47, ptr %a48 - call void @finch_str_drop(ptr %a48) - %t49 = load ptr, ptr %a1 - %t50 = icmp eq ptr %t49, null - br i1 %t50, label %panic6055, label %ok6056 -panic6055: - call void @finch_panic(ptr @.str.3866, i64 3237, ptr @.str.3867) - unreachable -ok6056: - %t51 = getelementptr inbounds %S.gen.Gen, ptr %t49, i32 0, i32 42 - %t52 = load { ptr, i64, i64 }, ptr %t51 - store { ptr, i64, i64 } { ptr @.str.3865, i64 0, i64 0 }, ptr %t51 - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic6057, label %ok6058 -panic6057: - call void @finch_panic(ptr @.str.3869, i64 3238, ptr @.str.3870) - unreachable -ok6058: - %t56 = getelementptr inbounds %S.gen.Gen, ptr %t54, i32 0, i32 43 - %t57 = load { ptr, i64, i64 }, ptr %t56 - store { ptr, i64, i64 } { ptr @.str.3868, i64 0, i64 0 }, ptr %t56 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t59, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = load %S.gen.Val, ptr %a62 - store %S.gen.Val %t63, ptr %a64 - call void @finch.copy.S_gen_Val(ptr %a65, ptr %a64) - %t66 = load %S.gen.Val, ptr %a65 - %t67 = insertvalue %S.gen.Fallible zeroinitializer, %S.gen.Val %t66, 0 - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic6059, label %ok6060 -panic6059: - call void @finch_panic(ptr @.str.3871, i64 3240, ptr @.str.3872) - unreachable -ok6060: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 42 - %t71 = load { ptr, i64, i64 }, ptr %t70 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_copy(ptr %a73, ptr %a72) - %t74 = load { ptr, i64, i64 }, ptr %a73 - %t75 = insertvalue %S.gen.Fallible %t67, { ptr, i64, i64 } %t74, 1 - %t76 = load ptr, ptr %a1 - %t77 = icmp eq ptr %t76, null - br i1 %t77, label %panic6061, label %ok6062 -panic6061: - call void @finch_panic(ptr @.str.3873, i64 3240, ptr @.str.3874) - unreachable -ok6062: - %t78 = getelementptr inbounds %S.gen.Gen, ptr %t76, i32 0, i32 43 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_copy(ptr %a81, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - %t83 = insertvalue %S.gen.Fallible %t75, { ptr, i64, i64 } %t82, 2 - store %S.gen.Fallible %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a25 - %t86 = load ptr, ptr %a1 - %t87 = icmp eq ptr %t86, null - br i1 %t87, label %panic6063, label %ok6064 -panic6063: - call void @finch_panic(ptr @.str.3875, i64 3241, ptr @.str.3876) - unreachable -ok6064: - %t88 = getelementptr inbounds %S.gen.Gen, ptr %t86, i32 0, i32 41 - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_copy(ptr %a90, ptr %a89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - %t92 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t91, ptr %t88 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a33 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6065, label %ok6066 -panic6065: - call void @finch_panic(ptr @.str.3877, i64 3242, ptr @.str.3878) - unreachable -ok6066: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 42 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_copy(ptr %a99, ptr %a98) - %t100 = load { ptr, i64, i64 }, ptr %a99 - %t101 = load { ptr, i64, i64 }, ptr %t97 - store { ptr, i64, i64 } %t100, ptr %t97 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a41 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic6067, label %ok6068 -panic6067: - call void @finch_panic(ptr @.str.3879, i64 3243, ptr @.str.3880) - unreachable -ok6068: - %t106 = getelementptr inbounds %S.gen.Gen, ptr %t104, i32 0, i32 43 - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_copy(ptr %a108, ptr %a107) - %t109 = load { ptr, i64, i64 }, ptr %a108 - %t110 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t109, ptr %t106 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = getelementptr inbounds %S.gen.Fallible, ptr %a84, i32 0, i32 1 - %t113 = getelementptr inbounds { ptr, i64, i64 }, ptr %t112, i32 0, i32 1 - %t114 = load i64, ptr %t113 - %t115 = icmp eq i64 %t114, 0 - br i1 %t115, label %then6069, label %endif6071 -then6069: - %t116 = load ptr, ptr %a1 - %t117 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t116, %S.ast.Node %t117, { ptr, i64, i64 } { ptr @.str.3881, i64 50, i64 0 }) - br label %endif6071 -endif6071: - %t118 = load %S.gen.Fallible, ptr %a84 - call void @finch.drop.S_gen_Val(ptr %a62) - call void @finch_str_drop(ptr %a41) - call void @finch_str_drop(ptr %a33) - call void @finch_str_drop(ptr %a25) - ret %S.gen.Fallible %t118 -} - -define internal void @finch.drop.S_gen_Fallible(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Val(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Fallible, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Val @finch.gen.tryExpr(ptr %p0, %S.ast.Node %p1) { -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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca %S.gen.Fallible, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a156 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic6072, label %ok6073 -panic6072: - call void @finch_panic(ptr @.str.3882, i64 3252, ptr @.str.3883) - unreachable -ok6073: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 46 - %t6 = load i64, ptr %t5 - %t7 = icmp sgt i64 %t6, 0 - br i1 %t7, label %then6074, label %endif6076 -then6074: - %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.3884, i64 30, i64 0 }) - br label %endif6076 -endif6076: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic6077, label %ok6078 -panic6077: - call void @finch_panic(ptr @.str.3885, i64 3255, ptr @.str.3886) - unreachable -ok6078: - %t12 = getelementptr inbounds %S.gen.Gen, ptr %t10, i32 0, i32 13 - %t13 = getelementptr inbounds %S.gen.FnSig, ptr %t12, i32 0, i32 9 - %t14 = load i1, ptr %t13 - %t15 = xor i1 %t14, true - br i1 %t15, label %then6079, label %endif6081 -then6079: - store { ptr, i64, i64 } { ptr @.str.3887, i64 1, i64 0 }, ptr %a16 - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6082, label %ok6083 -panic6082: - call void @finch_panic(ptr @.str.3888, i64 3257, ptr @.str.3889) - unreachable -ok6083: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 13 - %t20 = getelementptr inbounds %S.gen.FnSig, ptr %t19, i32 0, i32 12 - %t21 = getelementptr inbounds %S.ast.Type, ptr %t20, i32 0, i32 0 - %t22 = load { ptr, i64, i64 }, ptr %t21 - store { ptr, i64, i64 } %t22, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.3890, 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 %then6084, label %endif6086 -then6084: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6087, label %ok6088 -panic6087: - call void @finch_panic(ptr @.str.3891, i64 3258, ptr @.str.3892) - unreachable -ok6088: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 13 - %t30 = getelementptr inbounds %S.gen.FnSig, ptr %t29, i32 0, i32 12 - %t31 = load %S.ast.Type, ptr %t30 - %t32 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t31) - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.3893, i64 1, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t32, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - %t38 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t37, ptr %a16 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %endif6086 -endif6086: - %t40 = load ptr, ptr %a1 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = load ptr, ptr %a1 - %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic6089, label %ok6090 -panic6089: - call void @finch_panic(ptr @.str.3895, i64 3260, ptr @.str.3896) - unreachable -ok6090: - %t44 = getelementptr inbounds %S.gen.Gen, ptr %t42, i32 0, i32 13 - %t45 = getelementptr inbounds %S.gen.FnSig, ptr %t44, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } { ptr @.str.3894, i64 29, i64 0 }, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - %t50 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.3897, i64 31, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3898, i64 55, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - call void @finch.gen.fail(ptr %t40, %S.ast.Node %t41, { ptr, i64, i64 } %t66) - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a16) - br label %endif6081 -endif6081: - %t68 = load ptr, ptr %a1 - %t69 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t70 = load { ptr, i64, i64 }, ptr %t69 - %t71 = extractvalue { ptr, i64, i64 } %t70, 1 - %t72 = icmp uge i64 0, %t71 - br i1 %t72, label %range6091, label %inrange6092 -range6091: - call void @finch_panic_index(ptr @.str.3899, i64 3262, i64 0, i64 %t71) - unreachable -inrange6092: - %t73 = extractvalue { ptr, i64, i64 } %t70, 0 - %t74 = getelementptr inbounds %S.ast.Node, ptr %t73, i64 0 - %t75 = load %S.ast.Node, ptr %t74 - %t76 = call %S.gen.Fallible @finch.gen.fallibleCall(ptr %t68, %S.ast.Node %t75) - store %S.gen.Fallible %t76, ptr %a77 - %t78 = load ptr, ptr %a1 - %t79 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t78, { ptr, i64, i64 } { ptr @.str.3900, i64 10, i64 0 }) - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = load ptr, ptr %a1 - %t82 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t81, { ptr, i64, i64 } { ptr @.str.3901, i64 6, i64 0 }) - store { ptr, i64, i64 } %t82, ptr %a83 - %t84 = load ptr, ptr %a1 - %t85 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 1 - %t86 = load { ptr, i64, i64 }, ptr %t85 - %t87 = load { ptr, i64, i64 }, ptr %a80 - %t88 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.condBr(ptr %t84, { ptr, i64, i64 } %t86, { ptr, i64, i64 } %t87, { ptr, i64, i64 } %t88) - %t89 = load ptr, ptr %a1 - %t90 = load { ptr, i64, i64 }, ptr %a80 - call void @finch.gen.label(ptr %t89, { ptr, i64, i64 } %t90) - %t91 = load ptr, ptr %a1 - call void @finch.gen.dropPending(ptr %t91, i64 0) - %t92 = load ptr, ptr %a1 - call void @finch.gen.unwind(ptr %t92, i64 0) - %t93 = load ptr, ptr %a1 - %t94 = load ptr, ptr %a1 - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic6093, label %ok6094 -panic6093: - call void @finch_panic(ptr @.str.3903, i64 3269, ptr @.str.3904) - unreachable -ok6094: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 13 - %t98 = load %S.gen.FnSig, ptr %t97 - %t99 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t94, %S.gen.FnSig %t98) - store { ptr, i64, i64 } { ptr @.str.3902, i64 4, i64 0 }, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t99, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.3905, i64 1, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load ptr, ptr %a1 - %t111 = load ptr, ptr %a1 - %t112 = load ptr, ptr %a1 - %t113 = icmp eq ptr %t112, null - br i1 %t113, label %panic6095, label %ok6096 -panic6095: - call void @finch_panic(ptr @.str.3907, i64 3269, ptr @.str.3908) - unreachable -ok6096: - %t114 = getelementptr inbounds %S.gen.Gen, ptr %t112, i32 0, i32 13 - %t115 = load %S.gen.FnSig, ptr %t114 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t111, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.3906, i64 12, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.3909, i64 36, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t126, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t126, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.3910, i64 3, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t110, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - store { ptr, i64, i64 } %t109, ptr %a142 - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t109, ptr %a144 - call void @finch_str_drop(ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a141 - call void @finch.gen.emit(ptr %t93, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load ptr, ptr %a1 - %t149 = icmp eq ptr %t148, null - br i1 %t149, label %panic6097, label %ok6098 -panic6097: - call void @finch_panic(ptr @.str.3911, i64 3270, ptr @.str.3912) - unreachable -ok6098: - %t150 = getelementptr inbounds %S.gen.Gen, ptr %t148, i32 0, i32 9 - store i1 true, ptr %t150 - %t151 = load ptr, ptr %a1 - %t152 = load { ptr, i64, i64 }, ptr %a83 - call void @finch.gen.label(ptr %t151, { ptr, i64, i64 } %t152) - %t153 = getelementptr inbounds %S.gen.Fallible, ptr %a77, i32 0, i32 0 - %t154 = load %S.gen.Val, ptr %t153 - store %S.gen.Val %t154, ptr %a155 - call void @finch.copy.S_gen_Val(ptr %a156, ptr %a155) - %t157 = load %S.gen.Val, ptr %a156 - call void @finch_str_drop(ptr %a83) - call void @finch_str_drop(ptr %a80) - call void @finch.drop.S_gen_Fallible(ptr %a77) - ret %S.gen.Val %t157 -} - -define internal %S.gen.Val @finch.gen.orElse(ptr %p0, %S.ast.Node %p1, i1 %p2) { -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 - %a42 = alloca %S.ast.Type, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca i1, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca %S.ast.Type, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Val, align 16 - %a155 = alloca %S.gen.Val, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.ast.Type, align 16 - %a245 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range6099, label %inrange6100 -range6099: - call void @finch_panic_index(ptr @.str.3913, i64 3277, i64 0, i64 %t7) - unreachable -inrange6100: - %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.3914, 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.3915, 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 %then6101, label %endif6103 -then6101: - %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.3917, 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.3916, i64 3, i64 0 }, %S.ast.Type %t38, { ptr, i64, i64 } %t40, i1 true, i1 true) - store %S.ast.Type %t38, ptr %a42 - call void @finch.drop.S_ast_Type(ptr %a42) - store { ptr, i64, i64 } %t41, ptr %a43 - call void @finch_str_drop(ptr %a43) - %t44 = load ptr, ptr %a1 - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t46 = load { ptr, i64, i64 }, ptr %t45 - %t47 = extractvalue { ptr, i64, i64 } %t46, 1 - %t48 = icmp uge i64 1, %t47 - br i1 %t48, label %range6104, label %inrange6105 -range6104: - call void @finch_panic_index(ptr @.str.3918, i64 3286, i64 1, i64 %t47) - unreachable -inrange6105: - %t49 = extractvalue { ptr, i64, i64 } %t46, 0 - %t50 = getelementptr inbounds %S.ast.Node, ptr %t49, i64 1 - %t51 = load %S.ast.Node, ptr %t50 - call void @finch.gen.block(ptr %t44, %S.ast.Node %t51, i1 true) - %t52 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic6106, label %ok6107 -panic6106: - call void @finch_panic(ptr @.str.3919, i64 3287, ptr @.str.3920) - unreachable -ok6107: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 9 - %t55 = load i1, ptr %t54 - store i1 %t55, ptr %a56 - %t57 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t57) - %t58 = load i1, ptr %a56 - %t59 = xor i1 %t58, true - br label %logic.from6108 -logic.from6108: - br i1 %t59, label %logic.rhs6109, label %logic.end6110 -logic.rhs6109: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.3921, i64 4, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp eq i32 %t65, 0 - br label %logic.rend6111 -logic.rend6111: - br label %logic.end6110 -logic.end6110: - %t67 = phi i1 [ false, %logic.from6108 ], [ %t66, %logic.rend6111 ] - br label %logic.from6112 -logic.from6112: - br i1 %t67, label %logic.rhs6113, label %logic.end6114 -logic.rhs6113: - %t68 = load i1, ptr %a3 - %t69 = xor i1 %t68, true - br label %logic.rend6115 -logic.rend6115: - br label %logic.end6114 -logic.end6114: - %t70 = phi i1 [ false, %logic.from6112 ], [ %t69, %logic.rend6115 ] - br i1 %t70, label %then6116, label %endif6118 -then6116: - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 1, %t74 - br i1 %t75, label %range6119, label %inrange6120 -range6119: - call void @finch_panic_index(ptr @.str.3922, i64 3290, i64 1, i64 %t74) - unreachable -inrange6120: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 1 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.3923, i64 142, i64 0 }) - br label %endif6118 -endif6118: - %t79 = load i1, ptr %a3 - br label %logic.from6121 -logic.from6121: - br i1 %t79, label %logic.rhs6122, label %logic.end6123 -logic.rhs6122: - %t80 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t81 = getelementptr inbounds %S.ast.Type, ptr %t80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.3924, i64 4, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp eq i32 %t85, 0 - br label %logic.rend6124 -logic.rend6124: - br label %logic.end6123 -logic.end6123: - %t87 = phi i1 [ false, %logic.from6121 ], [ %t86, %logic.rend6124 ] - br i1 %t87, label %then6125, label %endif6127 -then6125: - %t88 = load ptr, ptr %a1 - %t89 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t88, { ptr, i64, i64 } { ptr @.str.3925, i64 6, i64 0 }) - store { ptr, i64, i64 } %t89, ptr %a90 - %t91 = load ptr, ptr %a1 - %t92 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t91, { ptr, i64, i64 } %t92) - %t93 = load ptr, ptr %a1 - %t94 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t93, { ptr, i64, i64 } %t94) - %t95 = load ptr, ptr %a1 - %t96 = load %S.gen.Val, ptr %a19 - call void @finch.gen.release(ptr %t95, %S.gen.Val %t96) - %t97 = load ptr, ptr %a1 - %t98 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.br(ptr %t97, { ptr, i64, i64 } %t98) - %t99 = load ptr, ptr %a1 - %t100 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.gen.label(ptr %t99, { ptr, i64, i64 } %t100) - %t101 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3926, i64 4, i64 0 }) - %t102 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t101, 1 - call void @finch_str_drop(ptr %a90) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t102 -endif6127: - %t103 = load ptr, ptr %a1 - %t104 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.br(ptr %t103, { ptr, i64, i64 } %t104) - %t105 = load ptr, ptr %a1 - %t106 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t105, { ptr, i64, i64 } %t106) - %t107 = load %S.gen.Val, ptr %a19 - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t107 -endif6103: - %t108 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t109 = getelementptr inbounds %S.ast.Type, ptr %t108, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3927, 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 %then6128, label %endif6130 -then6128: - %t115 = load ptr, ptr %a1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load { ptr, i64, i64 }, ptr %t116 - %t118 = extractvalue { ptr, i64, i64 } %t117, 1 - %t119 = icmp uge i64 1, %t118 - br i1 %t119, label %range6131, label %inrange6132 -range6131: - call void @finch_panic_index(ptr @.str.3928, i64 3306, i64 1, i64 %t118) - unreachable -inrange6132: - %t120 = extractvalue { ptr, i64, i64 } %t117, 0 - %t121 = getelementptr inbounds %S.ast.Node, ptr %t120, i64 1 - %t122 = load %S.ast.Node, ptr %t121 - call void @finch.gen.fail(ptr %t115, %S.ast.Node %t122, { ptr, i64, i64 } { ptr @.str.3929, i64 98, i64 0 }) - br label %endif6130 -endif6130: - %t123 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t123) - %t124 = load ptr, ptr %a1 - %t125 = load %S.ast.Node, ptr %a2 - %t126 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3931, i64 3, i64 0 }) - %t127 = getelementptr inbounds %S.gen.Fallible, ptr %a13, i32 0, i32 2 - %t128 = load { ptr, i64, i64 }, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.addVar(ptr %t124, %S.ast.Node %t125, { ptr, i64, i64 } { ptr @.str.3930, i64 3, i64 0 }, %S.ast.Type %t126, { ptr, i64, i64 } %t128, i1 true, i1 true) - store %S.ast.Type %t126, ptr %a130 - call void @finch.drop.S_ast_Type(ptr %a130) - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load ptr, ptr %a1 - %t133 = load ptr, ptr %a1 - %t134 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t135 = load { ptr, i64, i64 }, ptr %t134 - %t136 = extractvalue { ptr, i64, i64 } %t135, 1 - %t137 = icmp uge i64 1, %t136 - br i1 %t137, label %range6133, label %inrange6134 -range6133: - call void @finch_panic_index(ptr @.str.3932, i64 3310, i64 1, i64 %t136) - unreachable -inrange6134: - %t138 = extractvalue { ptr, i64, i64 } %t135, 0 - %t139 = getelementptr inbounds %S.ast.Node, ptr %t138, i64 1 - %t140 = load %S.ast.Node, ptr %t139 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - %t143 = call %S.gen.Val @finch.gen.exprWant(ptr %t133, %S.ast.Node %t140, %S.ast.Type %t142) - %t144 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t145 = load %S.ast.Type, ptr %t144 - %t146 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t147 = load { ptr, i64, i64 }, ptr %t146 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 1, %t148 - br i1 %t149, label %range6135, label %inrange6136 -range6135: - call void @finch_panic_index(ptr @.str.3933, i64 3310, i64 1, i64 %t148) - unreachable -inrange6136: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.ast.Node, ptr %t150, i64 1 - %t152 = load %S.ast.Node, ptr %t151 - %t153 = call %S.gen.Val @finch.gen.coerce(ptr %t132, %S.gen.Val %t143, %S.ast.Type %t145, %S.ast.Node %t152, { ptr, i64, i64 } { ptr @.str.3934, i64 20, i64 0 }) - store %S.gen.Val %t143, ptr %a154 - call void @finch.drop.S_gen_Val(ptr %a154) - store %S.gen.Val %t153, ptr %a155 - %t156 = load ptr, ptr %a1 - %t157 = load %S.gen.Val, ptr %a155 - %t158 = call { ptr, i64, i64 } @finch.gen.own(ptr %t156, %S.gen.Val %t157) - store { ptr, i64, i64 } %t158, ptr %a159 - %t160 = load ptr, ptr %a1 - call void @finch.gen.popScope(ptr %t160) - %t161 = load ptr, ptr %a1 - %t162 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t161, { ptr, i64, i64 } { ptr @.str.3935, i64 7, i64 0 }) - store { ptr, i64, i64 } %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t164, { ptr, i64, i64 } { ptr @.str.3936, i64 6, i64 0 }) - store { ptr, i64, i64 } %t165, ptr %a166 - %t167 = load ptr, ptr %a1 - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.br(ptr %t167, { ptr, i64, i64 } %t168) - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.label(ptr %t169, { ptr, i64, i64 } %t170) - %t171 = load ptr, ptr %a1 - %t172 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t171, { ptr, i64, i64 } %t172) - %t173 = load ptr, ptr %a1 - %t174 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.label(ptr %t173, { ptr, i64, i64 } %t174) - %t175 = load ptr, ptr %a1 - %t176 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.br(ptr %t175, { ptr, i64, i64 } %t176) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a166 - call void @finch.gen.label(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - %t180 = load ptr, ptr %a1 - %t181 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t180, %S.ast.Type %t182) - store { ptr, i64, i64 } { ptr @.str.3937, i64 4, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - store { ptr, i64, i64 } %t183, ptr %a187 - call void @finch_str_drop(ptr %a187) - %t188 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t188, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.3938, i64 3, i64 0 }, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t188, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - %t194 = load { ptr, i64, i64 }, ptr %a159 - store { ptr, i64, i64 } %t193, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a195 - store { ptr, i64, i64 } %t199, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.3939, i64 3, i64 0 }, ptr %a202 - call void @finch_str_concat(ptr %a200, ptr %a201, ptr %a202) - store { ptr, i64, i64 } %t199, ptr %a203 - call void @finch_str_drop(ptr %a203) - %t204 = load { ptr, i64, i64 }, ptr %a200 - %t205 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t204, ptr %a207 - store { ptr, i64, i64 } %t205, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t204, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.3940, i64 6, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.3941, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.3942, i64 2, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t179, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t243 = load %S.ast.Type, ptr %t242 - store %S.ast.Type %t243, ptr %a244 - call void @finch.copy.S_ast_Type(ptr %a245, ptr %a244) - %t246 = load %S.ast.Type, ptr %a245 - %t247 = insertvalue %S.gen.Val %t241, %S.ast.Type %t246, 1 - %t248 = load ptr, ptr %a1 - %t249 = getelementptr inbounds %S.gen.Val, ptr %a19, i32 0, i32 1 - %t250 = load %S.ast.Type, ptr %t249 - %t251 = call i1 @finch.gen.owning(ptr %t248, %S.ast.Type %t250) - %t252 = insertvalue %S.gen.Val %t247, i1 %t251, 2 - call void @finch_str_drop(ptr %a166) - call void @finch_str_drop(ptr %a163) - call void @finch_str_drop(ptr %a159) - call void @finch.drop.S_gen_Val(ptr %a155) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a22) - call void @finch.drop.S_gen_Val(ptr %a19) - call void @finch.drop.S_gen_Fallible(ptr %a13) - ret %S.gen.Val %t252 -} - -define internal %S.gen.Val @finch.gen.exprWant(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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.3943, 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 %then6137, label %endif6139 -then6137: - %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 -endif6139: - %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.3944, 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 %then6140, label %endif6142 -then6140: - %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 -endif6142: - %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 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca %S.ast.Type, align 16 - %a205 = alloca %S.ast.Type, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = 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 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %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.3945, 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 %then6143, label %endif6145 -then6143: - %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.3947, 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.from6146 -logic.from6146: - br i1 %t20, label %logic.end6148, label %logic.rhs6147 -logic.rhs6147: - %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.3949, 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.rend6149 -logic.rend6149: - br label %logic.end6148 -logic.end6148: - %t28 = phi i1 [ true, %logic.from6146 ], [ %t27, %logic.rend6149 ] - br i1 %t28, label %then6150, label %endif6152 -then6150: - 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.3950, i64 3339) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - store i64 0, ptr %a39 - br label %each.cond6153 -each.cond6153: - %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.body6154, label %each.end6156 -each.body6154: - %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.from6157 -logic.from6157: - br i1 %t54, label %logic.rhs6158, label %logic.end6159 -logic.rhs6158: - %t55 = load i8, ptr %a47 - %t56 = icmp ule i8 %t55, 102 - br label %logic.rend6160 -logic.rend6160: - br label %logic.end6159 -logic.end6159: - %t57 = phi i1 [ false, %logic.from6157 ], [ %t56, %logic.rend6160 ] - br i1 %t57, label %then6161, label %endif6163 -then6161: - %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 %endif6163 -endif6163: - %t63 = load i8, ptr %a47 - %t64 = icmp uge i8 %t63, 65 - br label %logic.from6164 -logic.from6164: - br i1 %t64, label %logic.rhs6165, label %logic.end6166 -logic.rhs6165: - %t65 = load i8, ptr %a47 - %t66 = icmp ule i8 %t65, 70 - br label %logic.rend6167 -logic.rend6167: - br label %logic.end6166 -logic.end6166: - %t67 = phi i1 [ false, %logic.from6164 ], [ %t66, %logic.rend6167 ] - br i1 %t67, label %then6168, label %endif6170 -then6168: - %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 %endif6170 -endif6170: - %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.step6155 -each.step6155: - %t77 = load i64, ptr %a39 - %t78 = add i64 %t77, 1 - store i64 %t78, ptr %a39 - br label %each.cond6153 -each.end6156: - call void @finch_str_drop(ptr %a38) - %t79 = load i64, ptr %a29 - call void @finch_str_from_int(ptr %a80, i64 %t79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t81, 0 - %t83 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3951, i64 3, i64 0 }) - %t84 = insertvalue %S.gen.Val %t82, %S.ast.Type %t83, 1 - %t85 = insertvalue %S.gen.Val %t84, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t85 -endif6152: - %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.3952, i64 3351) - 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.3953, i64 3, i64 0 }) - %t94 = insertvalue %S.gen.Val %t92, %S.ast.Type %t93, 1 - %t95 = insertvalue %S.gen.Val %t94, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t95 -endif6145: - %t96 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t96, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.3954, 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 %then6171, label %endif6173 -then6171: - %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.3955, i64 5, i64 0 }) - %t108 = insertvalue %S.gen.Val %t106, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t109 -endif6173: - %t110 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t110, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.3956, 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 %then6174, label %endif6176 -then6174: - %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.3957, i64 4, i64 0 }) - %t122 = insertvalue %S.gen.Val %t120, %S.ast.Type %t121, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t122 -endif6176: - %t123 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.3958, 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 %then6177, label %endif6179 -then6177: - %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 %range6180, label %inrange6181 -range6180: - call void @finch_panic_index(ptr @.str.3959, i64 3360, i64 0, i64 %t130) - unreachable -inrange6181: - %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.3960, i64 4, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif6179: - %t143 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t143, ptr %a144 - store { ptr, i64, i64 } { ptr @.str.3961, 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 %then6182, label %endif6184 -then6182: - %t148 = load ptr, ptr %a1 - %t149 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 4 - %t150 = load { ptr, i64, i64 }, ptr %t149 - %t151 = call %S.gen.Val @finch.gen.strConst(ptr %t148, { ptr, i64, i64 } %t150) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t151 -endif6184: - %t152 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.3962, 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 %then6185, label %endif6187 -then6185: - %t157 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } { ptr @.str.3963, i64 4, i64 0 }, 0 - %t158 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3964, i64 4, i64 0 }) - %t159 = insertvalue %S.gen.Val %t157, %S.ast.Type %t158, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t159 -endif6187: - %t160 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t160, ptr %a161 - store { ptr, i64, i64 } { ptr @.str.3965, 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.from6188 -logic.from6188: - br i1 %t164, label %logic.end6190, label %logic.rhs6189 -logic.rhs6189: - %t165 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.3966, 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.rend6191 -logic.rend6191: - br label %logic.end6190 -logic.end6190: - %t170 = phi i1 [ true, %logic.from6188 ], [ %t169, %logic.rend6191 ] - br label %logic.from6192 -logic.from6192: - br i1 %t170, label %logic.end6194, label %logic.rhs6193 -logic.rhs6193: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.3967, 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.rend6195 -logic.rend6195: - br label %logic.end6194 -logic.end6194: - %t176 = phi i1 [ true, %logic.from6192 ], [ %t175, %logic.rend6195 ] - br i1 %t176, label %then6196, label %endif6198 -then6196: - %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 %then6199, label %endif6201 -then6199: - %t184 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 2 - %t185 = load %S.gen.Val, ptr %t184 - store %S.gen.Val %t185, ptr %a186 - call void @finch.copy.S_gen_Val(ptr %a187, ptr %a186) - %t188 = load %S.gen.Val, ptr %a187 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t188 -endif6201: - %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) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t198, 0 - %t201 = getelementptr inbounds %S.gen.Ref, ptr %a180, i32 0, i32 1 - %t202 = getelementptr inbounds %S.gen.Place, ptr %t201, i32 0, i32 1 - %t203 = load %S.ast.Type, ptr %t202 - store %S.ast.Type %t203, ptr %a204 - call void @finch.copy.S_ast_Type(ptr %a205, ptr %a204) - %t206 = load %S.ast.Type, ptr %a205 - %t207 = insertvalue %S.gen.Val %t200, %S.ast.Type %t206, 1 - call void @finch.drop.S_gen_Ref(ptr %a180) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t207 -endif6198: - %t208 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.3968, i64 5, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then6202, label %endif6204 -then6202: - %t213 = load ptr, ptr %a1 - %t214 = load %S.ast.Node, ptr %a2 - %t215 = call %S.gen.Val @finch.gen.matchGen(ptr %t213, %S.ast.Node %t214, i1 true) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t215 -endif6204: - %t216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t216, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.3969, i64 3, i64 0 }, ptr %a218 - %t219 = call i32 @finch_str_eq(ptr %a217, ptr %a218) - %t220 = icmp ne i32 %t219, 0 - br i1 %t220, label %then6205, label %endif6207 -then6205: - %t221 = load ptr, ptr %a1 - %t222 = load %S.ast.Node, ptr %a2 - %t223 = call %S.gen.Val @finch.gen.tryExpr(ptr %t221, %S.ast.Node %t222) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -endif6207: - %t224 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t224, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.3970, i64 2, i64 0 }, ptr %a226 - %t227 = call i32 @finch_str_eq(ptr %a225, ptr %a226) - %t228 = icmp ne i32 %t227, 0 - br i1 %t228, label %then6208, label %endif6210 -then6208: - %t229 = load ptr, ptr %a1 - %t230 = load %S.ast.Node, ptr %a2 - %t231 = call %S.gen.Val @finch.gen.orElse(ptr %t229, %S.ast.Node %t230, i1 false) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t231 -endif6210: - %t232 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t232, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.3971, i64 5, i64 0 }, ptr %a234 - %t235 = call i32 @finch_str_eq(ptr %a233, ptr %a234) - %t236 = icmp ne i32 %t235, 0 - br i1 %t236, label %then6211, label %endif6213 -then6211: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.gen.Val @finch.gen.unary(ptr %t237, %S.ast.Node %t238) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t239 -endif6213: - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t240, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.3972, i64 6, i64 0 }, ptr %a242 - %t243 = call i32 @finch_str_eq(ptr %a241, ptr %a242) - %t244 = icmp ne i32 %t243, 0 - br i1 %t244, label %then6214, label %endif6216 -then6214: - %t245 = load ptr, ptr %a1 - %t246 = load %S.ast.Node, ptr %a2 - %t247 = call %S.gen.Val @finch.gen.binary(ptr %t245, %S.ast.Node %t246) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t247 -endif6216: - %t248 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t248, ptr %a249 - store { ptr, i64, i64 } { ptr @.str.3973, i64 4, i64 0 }, ptr %a250 - %t251 = call i32 @finch_str_eq(ptr %a249, ptr %a250) - %t252 = icmp ne i32 %t251, 0 - br i1 %t252, label %then6217, label %endif6219 -then6217: - %t253 = load ptr, ptr %a1 - %t254 = load %S.ast.Node, ptr %a2 - %t255 = call %S.gen.Val @finch.gen.call(ptr %t253, %S.ast.Node %t254) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t255 -endif6219: - %t256 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t256, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.3974, i64 6, i64 0 }, ptr %a258 - %t259 = call i32 @finch_str_eq(ptr %a257, ptr %a258) - %t260 = icmp ne i32 %t259, 0 - br i1 %t260, label %then6220, label %endif6222 -then6220: - %t261 = load ptr, ptr %a1 - %t262 = load %S.ast.Node, ptr %a2 - %t263 = call %S.gen.Val @finch.gen.method(ptr %t261, %S.ast.Node %t262) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t263 -endif6222: - %t264 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t264, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.3975, i64 5, i64 0 }, ptr %a266 - %t267 = call i32 @finch_str_eq(ptr %a265, ptr %a266) - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %then6223, label %endif6225 -then6223: - %t269 = load ptr, ptr %a1 - %t270 = load %S.ast.Node, ptr %a2 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3976, i64 4, i64 0 }) - %t272 = call %S.gen.Val @finch.gen.arrayLit(ptr %t269, %S.ast.Node %t270, %S.ast.Type %t271) - store %S.ast.Type %t271, ptr %a273 - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t272 -endif6225: - %t274 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t274, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.3977, i64 3, i64 0 }, ptr %a276 - %t277 = call i32 @finch_str_eq(ptr %a275, ptr %a276) - %t278 = icmp ne i32 %t277, 0 - br i1 %t278, label %then6226, label %endif6228 -then6226: - %t279 = load ptr, ptr %a1 - %t280 = load %S.ast.Node, ptr %a2 - %t281 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3978, i64 4, i64 0 }) - %t282 = call %S.gen.Val @finch.gen.mapLit(ptr %t279, %S.ast.Node %t280, %S.ast.Type %t281) - store %S.ast.Type %t281, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t282 -endif6228: - %t284 = load ptr, ptr %a1 - %t285 = load %S.ast.Node, ptr %a2 - %t286 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.3979, i64 19, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - call void @finch.gen.fail(ptr %t284, %S.ast.Node %t285, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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.ast.Type, align 16 - %a31 = alloca %S.gen.Val, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a144 = alloca %S.ast.Type, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca %S.ast.Type, align 16 - %a158 = alloca %S.ast.Type, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca %S.ast.Type, align 16 - %a190 = alloca %S.ast.Type, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a224 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %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 %range6229, label %inrange6230 -range6229: - call void @finch_panic_index(ptr @.str.3980, i64 3408, i64 0, i64 %t6) - unreachable -inrange6230: - %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.3981, 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 %then6231, label %endif6233 -then6231: - %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.3982, 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 %range6234, label %inrange6235 -range6234: - call void @finch_panic_index(ptr @.str.3983, i64 3410, i64 0, i64 %t24) - unreachable -inrange6235: - %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.3984, i64 19, i64 0 }) - store %S.ast.Type %t21, ptr %a30 - call void @finch.drop.S_ast_Type(ptr %a30) - store %S.gen.Val %t29, ptr %a31 - %t32 = load ptr, ptr %a1 - %t33 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } { ptr @.str.3985, 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.3986, i64 6, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - %t44 = call { ptr, i64, i64 } @finch.gen.op(ptr %t32, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t44, 0 - %t47 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.3987, i64 4, i64 0 }) - %t48 = insertvalue %S.gen.Val %t46, %S.ast.Type %t47, 1 - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t48 -endif6233: - %t49 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.3988, i64 1, i64 0 }, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %then6236, label %endif6238 -then6236: - %t55 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t56 = load %S.ast.Type, ptr %t55 - %t57 = call i1 @finch.gen.isInt(%S.ast.Type %t56) - %t58 = xor i1 %t57, true - br i1 %t58, label %then6239, label %endif6241 -then6239: - %t59 = load ptr, ptr %a1 - %t60 = load %S.ast.Node, ptr %a2 - %t61 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t62 = load %S.ast.Type, ptr %t61 - %t63 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t62) - store { ptr, i64, i64 } { ptr @.str.3989, i64 45, i64 0 }, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.gen.fail(ptr %t59, %S.ast.Node %t60, { ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_drop(ptr %a69) - br label %endif6241 -endif6241: - %t70 = load ptr, ptr %a1 - %t71 = load ptr, ptr %a1 - %t72 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t73 = load %S.ast.Type, ptr %t72 - %t74 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t71, %S.ast.Type %t73) - store { ptr, i64, i64 } { ptr @.str.3990, i64 4, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t74, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.3991, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t86 = load { ptr, i64, i64 }, ptr %t85 - store { ptr, i64, i64 } %t84, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t84, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.3992, i64 4, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t70, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t97, 0 - %t100 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t101 = load %S.ast.Type, ptr %t100 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t99, %S.ast.Type %t104, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t105 -endif6238: - %t106 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t107 = load %S.ast.Type, ptr %t106 - %t108 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t107) - br i1 %t108, label %then6242, label %endif6244 -then6242: - %t109 = load ptr, ptr %a1 - %t110 = load %S.ast.Node, ptr %a2 - %t111 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t112 = load %S.ast.Type, ptr %t111 - %t113 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t112) - store { ptr, i64, i64 } %t113, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.3993, i64 34, i64 0 }, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t113, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t110, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif6244 -endif6244: - %t120 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.isSigned(%S.ast.Type %t121) - br i1 %t122, label %then6245, label %endif6247 -then6245: - %t123 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 3 - %t124 = load i1, ptr %t123 - br i1 %t124, label %then6248, label %endif6250 -then6248: - %t125 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.3995, i64 1, i64 0 }, ptr %a129 - %t130 = call i32 @finch_str_starts(ptr %a127, ptr %a129) - %t131 = icmp ne i32 %t130, 0 - br i1 %t131, label %then6251, label %endif6253 -then6251: - %t132 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - %t136 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t136, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a135, ptr %a134, i64 1, i64 %t138, ptr @.str.3996, i64 3425) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t142 = load %S.ast.Type, ptr %t141 - store %S.ast.Type %t142, ptr %a143 - call void @finch.copy.S_ast_Type(ptr %a144, ptr %a143) - %t145 = load %S.ast.Type, ptr %a144 - %t146 = insertvalue %S.gen.Val %t140, %S.ast.Type %t145, 1 - %t147 = insertvalue %S.gen.Val %t146, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t147 -endif6253: - %t148 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t149 = load { ptr, i64, i64 }, ptr %t148 - store { ptr, i64, i64 } { ptr @.str.3997, i64 1, i64 0 }, ptr %a151 - store { ptr, i64, i64 } %t149, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t153, 0 - %t155 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t156 = load %S.ast.Type, ptr %t155 - store %S.ast.Type %t156, ptr %a157 - call void @finch.copy.S_ast_Type(ptr %a158, ptr %a157) - %t159 = load %S.ast.Type, ptr %a158 - %t160 = insertvalue %S.gen.Val %t154, %S.ast.Type %t159, 1 - %t161 = insertvalue %S.gen.Val %t160, i1 true, 3 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t161 -endif6250: - %t162 = load ptr, ptr %a1 - %t163 = load ptr, ptr %a1 - %t164 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t165 = load %S.ast.Type, ptr %t164 - %t166 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t163, %S.ast.Type %t165) - store { ptr, i64, i64 } { ptr @.str.3998, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t166, ptr %a169 - call void @finch_str_concat(ptr %a167, ptr %a168, ptr %a169) - store { ptr, i64, i64 } %t166, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.3999, i64 4, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - %t177 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } %t176, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t176, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t162, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t184, 0 - %t187 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t188 = load %S.ast.Type, ptr %t187 - store %S.ast.Type %t188, ptr %a189 - call void @finch.copy.S_ast_Type(ptr %a190, ptr %a189) - %t191 = load %S.ast.Type, ptr %a190 - %t192 = insertvalue %S.gen.Val %t186, %S.ast.Type %t191, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t192 -endif6247: - %t193 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br i1 %t195, label %then6254, label %endif6256 -then6254: - %t196 = load ptr, ptr %a1 - %t197 = load ptr, ptr %a1 - %t198 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t199 = load %S.ast.Type, ptr %t198 - %t200 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t197, %S.ast.Type %t199) - store { ptr, i64, i64 } { ptr @.str.4000, i64 5, i64 0 }, ptr %a202 - store { ptr, i64, i64 } %t200, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4001, i64 1, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - store { ptr, i64, i64 } %t205, ptr %a209 - call void @finch_str_drop(ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a206 - %t211 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 0 - %t212 = load { ptr, i64, i64 }, ptr %t211 - store { ptr, i64, i64 } %t210, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t210, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = call { ptr, i64, i64 } @finch.gen.op(ptr %t196, { ptr, i64, i64 } %t217) - store { ptr, i64, i64 } %t217, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t218, 0 - %t221 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t222 = load %S.ast.Type, ptr %t221 - store %S.ast.Type %t222, ptr %a223 - call void @finch.copy.S_ast_Type(ptr %a224, ptr %a223) - %t225 = load %S.ast.Type, ptr %a224 - %t226 = insertvalue %S.gen.Val %t220, %S.ast.Type %t225, 1 - call void @finch.drop.S_gen_Val(ptr %a12) - ret %S.gen.Val %t226 -endif6256: - %t227 = load ptr, ptr %a1 - %t228 = load %S.ast.Node, ptr %a2 - %t229 = getelementptr inbounds %S.gen.Val, ptr %a12, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t230) - store { ptr, i64, i64 } { ptr @.str.4002, i64 26, i64 0 }, ptr %a233 - store { ptr, i64, i64 } %t231, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - call void @finch.gen.fail(ptr %t227, %S.ast.Node %t228, { ptr, i64, i64 } %t236) - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load %S.gen.Val, ptr %a12 - ret %S.gen.Val %t238 -} - -define internal void @finch.gen.badOperands(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - store %S.gen.Val %p3, ptr %a4 - store %S.ast.Node %p4, ptr %a5 - %t6 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.4003, 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.4004, i64 5, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t17 = load %S.ast.Type, ptr %t16 - %t18 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t17) - store { ptr, i64, i64 } %t15, ptr %a20 - store { ptr, i64, i64 } %t18, ptr %a21 - call void @finch_str_concat(ptr %a19, ptr %a20, ptr %a21) - store { ptr, i64, i64 } %t15, ptr %a22 - call void @finch_str_drop(ptr %a22) - store { ptr, i64, i64 } %t18, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t24, ptr %a25 - %t26 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t27 = load %S.ast.Type, ptr %t26 - %t28 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t29 = load %S.ast.Type, ptr %t28 - %t30 = call i1 @finch.ast.same(%S.ast.Type %t27, %S.ast.Type %t29) - %t31 = xor i1 %t30, true - br i1 %t31, label %then6257, label %endif6259 -then6257: - %t32 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t32, ptr %a34 - store { ptr, i64, i64 } { ptr @.str.4005, i64 5, i64 0 }, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a33 - %t37 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t38 = load %S.ast.Type, ptr %t37 - %t39 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t38) - store { ptr, i64, i64 } %t36, ptr %a41 - store { ptr, i64, i64 } %t39, ptr %a42 - call void @finch_str_concat(ptr %a40, ptr %a41, ptr %a42) - store { ptr, i64, i64 } %t36, ptr %a43 - call void @finch_str_drop(ptr %a43) - store { ptr, i64, i64 } %t39, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a40 - %t46 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t45, ptr %a25 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif6259 -endif6259: - %t48 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t48, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4006, i64 1, i64 0 }, ptr %a50 - %t51 = call i32 @finch_str_eq(ptr %a49, ptr %a50) - %t52 = icmp ne i32 %t51, 0 - br label %logic.from6260 -logic.from6260: - br i1 %t52, label %logic.rhs6261, label %logic.end6262 -logic.rhs6261: - %t53 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t54 = getelementptr inbounds %S.ast.Type, ptr %t53, i32 0, i32 0 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4007, 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.from6263 -logic.from6263: - br i1 %t59, label %logic.end6265, label %logic.rhs6264 -logic.rhs6264: - %t60 = getelementptr inbounds %S.gen.Val, ptr %a4, i32 0, i32 1 - %t61 = getelementptr inbounds %S.ast.Type, ptr %t60, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4008, i64 3, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br label %logic.rend6266 -logic.rend6266: - br label %logic.end6265 -logic.end6265: - %t67 = phi i1 [ true, %logic.from6263 ], [ %t66, %logic.rend6266 ] - br label %logic.rend6267 -logic.rend6267: - br label %logic.end6262 -logic.end6262: - %t68 = phi i1 [ false, %logic.from6260 ], [ %t67, %logic.rend6267 ] - br i1 %t68, label %then6268, label %endif6270 -then6268: - %t69 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4009, i64 48, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t73, ptr %a25 - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - br label %endif6270 -endif6270: - %t76 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.4010, i64 1, i64 0 }, ptr %a78 - %t79 = call i32 @finch_str_eq(ptr %a77, ptr %a78) - %t80 = icmp ne i32 %t79, 0 - br label %logic.from6271 -logic.from6271: - br i1 %t80, label %logic.end6273, label %logic.rhs6272 -logic.rhs6272: - %t81 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4011, 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.rend6274 -logic.rend6274: - br label %logic.end6273 -logic.end6273: - %t86 = phi i1 [ true, %logic.from6271 ], [ %t85, %logic.rend6274 ] - br label %logic.from6275 -logic.from6275: - br i1 %t86, label %logic.rhs6276, label %logic.end6277 -logic.rhs6276: - %t87 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t88 = getelementptr inbounds %S.ast.Type, ptr %t87, i32 0, i32 0 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4012, i64 4, i64 0 }, ptr %a91 - %t92 = call i32 @finch_str_eq(ptr %a90, ptr %a91) - %t93 = icmp ne i32 %t92, 0 - br label %logic.rend6278 -logic.rend6278: - br label %logic.end6277 -logic.end6277: - %t94 = phi i1 [ false, %logic.from6275 ], [ %t93, %logic.rend6278 ] - br i1 %t94, label %then6279, label %else6280 -then6279: - %t95 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t95, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4013, i64 1, i64 0 }, ptr %a97 - %t98 = call i32 @finch_str_eq(ptr %a96, ptr %a97) - %t99 = icmp ne i32 %t98, 0 - br i1 %t99, label %then6282, label %else6283 -then6282: - %t100 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4014, i64 26, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a101 - %t105 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t104, ptr %a25 - store { ptr, i64, i64 } %t105, ptr %a106 - call void @finch_str_drop(ptr %a106) - br label %endif6284 -else6283: - %t107 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.4015, i64 26, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - %t112 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t111, ptr %a25 - store { ptr, i64, i64 } %t112, ptr %a113 - call void @finch_str_drop(ptr %a113) - br label %endif6284 -endif6284: - br label %endif6281 -else6280: - %t114 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.4016, i64 1, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from6285 -logic.from6285: - br i1 %t118, label %logic.end6287, label %logic.rhs6286 -logic.rhs6286: - %t119 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4017, i64 1, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend6288 -logic.rend6288: - br label %logic.end6287 -logic.end6287: - %t124 = phi i1 [ true, %logic.from6285 ], [ %t123, %logic.rend6288 ] - br label %logic.from6289 -logic.from6289: - br i1 %t124, label %logic.end6291, label %logic.rhs6290 -logic.rhs6290: - %t125 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t125, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.4018, i64 1, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br label %logic.rend6292 -logic.rend6292: - br label %logic.end6291 -logic.end6291: - %t130 = phi i1 [ true, %logic.from6289 ], [ %t129, %logic.rend6292 ] - br label %logic.from6293 -logic.from6293: - br i1 %t130, label %logic.end6295, label %logic.rhs6294 -logic.rhs6294: - %t131 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4019, i64 2, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6296 -logic.rend6296: - br label %logic.end6295 -logic.end6295: - %t136 = phi i1 [ true, %logic.from6293 ], [ %t135, %logic.rend6296 ] - br label %logic.from6297 -logic.from6297: - br i1 %t136, label %logic.end6299, label %logic.rhs6298 -logic.rhs6298: - %t137 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t137, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.4020, i64 2, i64 0 }, ptr %a139 - %t140 = call i32 @finch_str_eq(ptr %a138, ptr %a139) - %t141 = icmp ne i32 %t140, 0 - br label %logic.rend6300 -logic.rend6300: - br label %logic.end6299 -logic.end6299: - %t142 = phi i1 [ true, %logic.from6297 ], [ %t141, %logic.rend6300 ] - br i1 %t142, label %then6301, label %endif6303 -then6301: - %t143 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.4021, i64 43, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - %t147 = load { ptr, i64, i64 }, ptr %a144 - %t148 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t147, ptr %a25 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch_str_drop(ptr %a149) - br label %endif6303 -endif6303: - br label %endif6281 -endif6281: - %t150 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t151 = getelementptr inbounds %S.ast.Type, ptr %t150, i32 0, i32 0 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - store { ptr, i64, i64 } { ptr @.str.4022, i64 6, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_eq(ptr %a153, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from6304 -logic.from6304: - br i1 %t156, label %logic.end6306, label %logic.rhs6305 -logic.rhs6305: - %t157 = getelementptr inbounds %S.gen.Val, ptr %a3, i32 0, i32 1 - %t158 = getelementptr inbounds %S.ast.Type, ptr %t157, i32 0, i32 0 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.4023, 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.rend6307 -logic.rend6307: - br label %logic.end6306 -logic.end6306: - %t164 = phi i1 [ true, %logic.from6304 ], [ %t163, %logic.rend6307 ] - br label %logic.from6308 -logic.from6308: - br i1 %t164, label %logic.rhs6309, label %logic.end6310 -logic.rhs6309: - %t165 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t165, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4024, i64 2, i64 0 }, ptr %a167 - %t168 = call i32 @finch_str_eq(ptr %a166, ptr %a167) - %t169 = icmp ne i32 %t168, 0 - br label %logic.from6311 -logic.from6311: - br i1 %t169, label %logic.end6313, label %logic.rhs6312 -logic.rhs6312: - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4025, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br label %logic.rend6314 -logic.rend6314: - br label %logic.end6313 -logic.end6313: - %t175 = phi i1 [ true, %logic.from6311 ], [ %t174, %logic.rend6314 ] - br label %logic.rend6315 -logic.rend6315: - br label %logic.end6310 -logic.end6310: - %t176 = phi i1 [ false, %logic.from6308 ], [ %t175, %logic.rend6315 ] - br i1 %t176, label %then6316, label %endif6318 -then6316: - %t177 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t177, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.4026, i64 31, i64 0 }, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - %t182 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t181, ptr %a25 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - br label %endif6318 -endif6318: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a5 - %t186 = load { ptr, i64, i64 }, ptr %a25 - call void @finch.gen.fail(ptr %t184, %S.ast.Node %t185, { ptr, i64, i64 } %t186) - call void @finch_str_drop(ptr %a25) - ret void -} - -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 - %a68 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca %S.ast.Type, align 16 - %a106 = alloca %S.ast.Type, align 16 - %a113 = alloca %S.gen.Val, align 16 - %a142 = alloca %S.ast.Type, align 16 - %a143 = alloca %S.ast.Type, align 16 - %a149 = alloca %S.gen.Val, align 16 - %a178 = alloca %S.ast.Type, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.gen.Val, align 16 - %a207 = alloca %S.ast.Node, align 16 - %a211 = alloca %S.gen.Val, align 16 - %a233 = alloca %S.ast.Node, align 16 - %a237 = alloca %S.gen.Val, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca %S.ast.Type, align 16 - %a276 = alloca %S.gen.Val, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a304 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store ptr %p1, ptr %a2 - store ptr %p2, ptr %a3 - %t4 = load ptr, ptr %a2 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6319, label %ok6320 -panic6319: - call void @finch_panic(ptr @.str.4027, i64 3462, ptr @.str.4028) - unreachable -ok6320: - %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 %panic6321, label %ok6322 -panic6321: - call void @finch_panic(ptr @.str.4029, i64 3462, ptr @.str.4030) - unreachable -ok6322: - %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 %then6323, label %endif6325 -then6323: - ret i1 true -endif6325: - %t13 = load ptr, ptr %a2 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic6326, label %ok6327 -panic6326: - call void @finch_panic(ptr @.str.4031, i64 3465, ptr @.str.4032) - unreachable -ok6327: - %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.from6328 -logic.from6328: - br i1 %t17, label %logic.rhs6329, label %logic.end6330 -logic.rhs6329: - %t18 = load ptr, ptr %a3 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic6331, label %ok6332 -panic6331: - call void @finch_panic(ptr @.str.4033, i64 3465, ptr @.str.4034) - unreachable -ok6332: - %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.rend6333 -logic.rend6333: - br label %logic.end6330 -logic.end6330: - %t23 = phi i1 [ false, %logic.from6328 ], [ %t22, %logic.rend6333 ] - br i1 %t23, label %then6334, label %endif6336 -then6334: - %t24 = load ptr, ptr %a2 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic6337, label %ok6338 -panic6337: - call void @finch_panic(ptr @.str.4035, i64 3468, ptr @.str.4036) - unreachable -ok6338: - %t26 = getelementptr inbounds %S.gen.Val, ptr %t24, i32 0, i32 3 - %t27 = load i1, ptr %t26 - br label %logic.from6339 -logic.from6339: - br i1 %t27, label %logic.rhs6340, label %logic.end6341 -logic.rhs6340: - %t28 = load ptr, ptr %a3 - %t29 = icmp eq ptr %t28, null - br i1 %t29, label %panic6342, label %ok6343 -panic6342: - call void @finch_panic(ptr @.str.4037, i64 3468, ptr @.str.4038) - unreachable -ok6343: - %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.rend6344 -logic.rend6344: - br label %logic.end6341 -logic.end6341: - %t33 = phi i1 [ false, %logic.from6339 ], [ %t32, %logic.rend6344 ] - br label %logic.from6345 -logic.from6345: - br i1 %t33, label %logic.rhs6346, label %logic.end6347 -logic.rhs6346: - %t34 = load ptr, ptr %a2 - %t35 = icmp eq ptr %t34, null - br i1 %t35, label %panic6348, label %ok6349 -panic6348: - call void @finch_panic(ptr @.str.4039, i64 3468, ptr @.str.4040) - unreachable -ok6349: - %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 %panic6350, label %ok6351 -panic6350: - call void @finch_panic(ptr @.str.4041, i64 3468, ptr @.str.4042) - unreachable -ok6351: - %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 %panic6352, label %ok6353 -panic6352: - call void @finch_panic(ptr @.str.4043, i64 3468, ptr @.str.4044) - unreachable -ok6353: - %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.rend6354 -logic.rend6354: - br label %logic.end6347 -logic.end6347: - %t47 = phi i1 [ false, %logic.from6345 ], [ %t46, %logic.rend6354 ] - br i1 %t47, label %then6355, label %endif6357 -then6355: - %t48 = load ptr, ptr %a2 - %t49 = icmp eq ptr %t48, null - br i1 %t49, label %panic6358, label %ok6359 -panic6358: - call void @finch_panic(ptr @.str.4045, i64 3469, ptr @.str.4046) - unreachable -ok6359: - %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 %panic6360, label %ok6361 -panic6360: - call void @finch_panic(ptr @.str.4047, i64 3469, ptr @.str.4048) - unreachable -ok6361: - %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 %panic6362, label %ok6363 -panic6362: - call void @finch_panic(ptr @.str.4049, i64 3469, ptr @.str.4050) - unreachable -ok6363: - %t67 = load %S.gen.Val, ptr %t65 - store %S.gen.Val %t64, ptr %t65 - store %S.gen.Val %t67, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - ret i1 true -endif6357: - %t69 = load ptr, ptr %a3 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic6364, label %ok6365 -panic6364: - call void @finch_panic(ptr @.str.4051, i64 3472, ptr @.str.4052) - unreachable -ok6365: - %t71 = getelementptr inbounds %S.gen.Val, ptr %t69, i32 0, i32 3 - %t72 = load i1, ptr %t71 - br label %logic.from6366 -logic.from6366: - br i1 %t72, label %logic.rhs6367, label %logic.end6368 -logic.rhs6367: - %t73 = load ptr, ptr %a2 - %t74 = icmp eq ptr %t73, null - br i1 %t74, label %panic6369, label %ok6370 -panic6369: - call void @finch_panic(ptr @.str.4053, i64 3472, ptr @.str.4054) - unreachable -ok6370: - %t75 = getelementptr inbounds %S.gen.Val, ptr %t73, i32 0, i32 3 - %t76 = load i1, ptr %t75 - %t77 = xor i1 %t76, true - br label %logic.rend6371 -logic.rend6371: - br label %logic.end6368 -logic.end6368: - %t78 = phi i1 [ false, %logic.from6366 ], [ %t77, %logic.rend6371 ] - br label %logic.from6372 -logic.from6372: - br i1 %t78, label %logic.rhs6373, label %logic.end6374 -logic.rhs6373: - %t79 = load ptr, ptr %a3 - %t80 = icmp eq ptr %t79, null - br i1 %t80, label %panic6375, label %ok6376 -panic6375: - call void @finch_panic(ptr @.str.4055, i64 3472, ptr @.str.4056) - unreachable -ok6376: - %t81 = getelementptr inbounds %S.gen.Val, ptr %t79, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - %t83 = load ptr, ptr %a3 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic6377, label %ok6378 -panic6377: - call void @finch_panic(ptr @.str.4057, i64 3472, ptr @.str.4058) - unreachable -ok6378: - %t85 = getelementptr inbounds %S.gen.Val, ptr %t83, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - %t87 = load ptr, ptr %a2 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic6379, label %ok6380 -panic6379: - call void @finch_panic(ptr @.str.4059, i64 3472, ptr @.str.4060) - unreachable -ok6380: - %t89 = getelementptr inbounds %S.gen.Val, ptr %t87, i32 0, i32 1 - %t90 = load %S.ast.Type, ptr %t89 - %t91 = call i1 @finch.gen.fits({ ptr, i64, i64 } %t82, %S.ast.Type %t86, %S.ast.Type %t90) - br label %logic.rend6381 -logic.rend6381: - br label %logic.end6374 -logic.end6374: - %t92 = phi i1 [ false, %logic.from6372 ], [ %t91, %logic.rend6381 ] - br i1 %t92, label %then6382, label %endif6384 -then6382: - %t93 = load ptr, ptr %a3 - %t94 = icmp eq ptr %t93, null - br i1 %t94, label %panic6385, label %ok6386 -panic6385: - call void @finch_panic(ptr @.str.4061, i64 3473, ptr @.str.4062) - unreachable -ok6386: - %t95 = getelementptr inbounds %S.gen.Val, ptr %t93, i32 0, i32 0 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load ptr, ptr %a2 - %t102 = icmp eq ptr %t101, null - br i1 %t102, label %panic6387, label %ok6388 -panic6387: - call void @finch_panic(ptr @.str.4063, i64 3473, ptr @.str.4064) - unreachable -ok6388: - %t103 = getelementptr inbounds %S.gen.Val, ptr %t101, i32 0, i32 1 - %t104 = load %S.ast.Type, ptr %t103 - store %S.ast.Type %t104, ptr %a105 - call void @finch.copy.S_ast_Type(ptr %a106, ptr %a105) - %t107 = load %S.ast.Type, ptr %a106 - %t108 = insertvalue %S.gen.Val %t100, %S.ast.Type %t107, 1 - %t109 = insertvalue %S.gen.Val %t108, i1 true, 3 - %t110 = load ptr, ptr %a3 - %t111 = icmp eq ptr %t110, null - br i1 %t111, label %panic6389, label %ok6390 -panic6389: - call void @finch_panic(ptr @.str.4065, i64 3473, ptr @.str.4066) - unreachable -ok6390: - %t112 = load %S.gen.Val, ptr %t110 - store %S.gen.Val %t109, ptr %t110 - store %S.gen.Val %t112, ptr %a113 - call void @finch.drop.S_gen_Val(ptr %a113) - ret i1 true -endif6384: - %t114 = load ptr, ptr %a2 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic6391, label %ok6392 -panic6391: - call void @finch_panic(ptr @.str.4067, i64 3476, ptr @.str.4068) - unreachable -ok6392: - %t116 = getelementptr inbounds %S.gen.Val, ptr %t114, i32 0, i32 1 - %t117 = load %S.ast.Type, ptr %t116 - %t118 = load ptr, ptr %a3 - %t119 = icmp eq ptr %t118, null - br i1 %t119, label %panic6393, label %ok6394 -panic6393: - call void @finch_panic(ptr @.str.4069, i64 3476, ptr @.str.4070) - unreachable -ok6394: - %t120 = getelementptr inbounds %S.gen.Val, ptr %t118, i32 0, i32 1 - %t121 = load %S.ast.Type, ptr %t120 - %t122 = call i1 @finch.gen.widens(%S.ast.Type %t117, %S.ast.Type %t121) - br i1 %t122, label %then6395, label %endif6397 -then6395: - %t123 = load ptr, ptr %a1 - %t124 = load ptr, ptr %a2 - %t125 = icmp eq ptr %t124, null - br i1 %t125, label %panic6398, label %ok6399 -panic6398: - call void @finch_panic(ptr @.str.4071, i64 3477, ptr @.str.4072) - unreachable -ok6399: - %t126 = getelementptr inbounds %S.gen.Val, ptr %t124, i32 0, i32 0 - %t127 = load { ptr, i64, i64 }, ptr %t126 - %t128 = load ptr, ptr %a2 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic6400, label %ok6401 -panic6400: - call void @finch_panic(ptr @.str.4073, i64 3477, ptr @.str.4074) - unreachable -ok6401: - %t130 = getelementptr inbounds %S.gen.Val, ptr %t128, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = load ptr, ptr %a3 - %t133 = icmp eq ptr %t132, null - br i1 %t133, label %panic6402, label %ok6403 -panic6402: - call void @finch_panic(ptr @.str.4075, i64 3477, ptr @.str.4076) - unreachable -ok6403: - %t134 = getelementptr inbounds %S.gen.Val, ptr %t132, i32 0, i32 1 - %t135 = load %S.ast.Type, ptr %t134 - %t136 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t123, { ptr, i64, i64 } %t127, %S.ast.Type %t131, %S.ast.Type %t135) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t136, 0 - %t138 = load ptr, ptr %a3 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic6404, label %ok6405 -panic6404: - call void @finch_panic(ptr @.str.4077, i64 3477, ptr @.str.4078) - unreachable -ok6405: - %t140 = getelementptr inbounds %S.gen.Val, ptr %t138, i32 0, i32 1 - %t141 = load %S.ast.Type, ptr %t140 - store %S.ast.Type %t141, ptr %a142 - call void @finch.copy.S_ast_Type(ptr %a143, ptr %a142) - %t144 = load %S.ast.Type, ptr %a143 - %t145 = insertvalue %S.gen.Val %t137, %S.ast.Type %t144, 1 - %t146 = load ptr, ptr %a2 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6406, label %ok6407 -panic6406: - call void @finch_panic(ptr @.str.4079, i64 3477, ptr @.str.4080) - unreachable -ok6407: - %t148 = load %S.gen.Val, ptr %t146 - store %S.gen.Val %t145, ptr %t146 - store %S.gen.Val %t148, ptr %a149 - call void @finch.drop.S_gen_Val(ptr %a149) - ret i1 true -endif6397: - %t150 = load ptr, ptr %a3 - %t151 = icmp eq ptr %t150, null - br i1 %t151, label %panic6408, label %ok6409 -panic6408: - call void @finch_panic(ptr @.str.4081, i64 3480, ptr @.str.4082) - unreachable -ok6409: - %t152 = getelementptr inbounds %S.gen.Val, ptr %t150, i32 0, i32 1 - %t153 = load %S.ast.Type, ptr %t152 - %t154 = load ptr, ptr %a2 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic6410, label %ok6411 -panic6410: - call void @finch_panic(ptr @.str.4083, i64 3480, ptr @.str.4084) - unreachable -ok6411: - %t156 = getelementptr inbounds %S.gen.Val, ptr %t154, i32 0, i32 1 - %t157 = load %S.ast.Type, ptr %t156 - %t158 = call i1 @finch.gen.widens(%S.ast.Type %t153, %S.ast.Type %t157) - br i1 %t158, label %then6412, label %endif6414 -then6412: - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a3 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic6415, label %ok6416 -panic6415: - call void @finch_panic(ptr @.str.4085, i64 3481, ptr @.str.4086) - unreachable -ok6416: - %t162 = getelementptr inbounds %S.gen.Val, ptr %t160, i32 0, i32 0 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = load ptr, ptr %a3 - %t165 = icmp eq ptr %t164, null - br i1 %t165, label %panic6417, label %ok6418 -panic6417: - call void @finch_panic(ptr @.str.4087, i64 3481, ptr @.str.4088) - unreachable -ok6418: - %t166 = getelementptr inbounds %S.gen.Val, ptr %t164, i32 0, i32 1 - %t167 = load %S.ast.Type, ptr %t166 - %t168 = load ptr, ptr %a2 - %t169 = icmp eq ptr %t168, null - br i1 %t169, label %panic6419, label %ok6420 -panic6419: - call void @finch_panic(ptr @.str.4089, i64 3481, ptr @.str.4090) - unreachable -ok6420: - %t170 = getelementptr inbounds %S.gen.Val, ptr %t168, i32 0, i32 1 - %t171 = load %S.ast.Type, ptr %t170 - %t172 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t159, { ptr, i64, i64 } %t163, %S.ast.Type %t167, %S.ast.Type %t171) - %t173 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t172, 0 - %t174 = load ptr, ptr %a2 - %t175 = icmp eq ptr %t174, null - br i1 %t175, label %panic6421, label %ok6422 -panic6421: - call void @finch_panic(ptr @.str.4091, i64 3481, ptr @.str.4092) - unreachable -ok6422: - %t176 = getelementptr inbounds %S.gen.Val, ptr %t174, i32 0, i32 1 - %t177 = load %S.ast.Type, ptr %t176 - store %S.ast.Type %t177, ptr %a178 - call void @finch.copy.S_ast_Type(ptr %a179, ptr %a178) - %t180 = load %S.ast.Type, ptr %a179 - %t181 = insertvalue %S.gen.Val %t173, %S.ast.Type %t180, 1 - %t182 = load ptr, ptr %a3 - %t183 = icmp eq ptr %t182, null - br i1 %t183, label %panic6423, label %ok6424 -panic6423: - call void @finch_panic(ptr @.str.4093, i64 3481, ptr @.str.4094) - unreachable -ok6424: - %t184 = load %S.gen.Val, ptr %t182 - store %S.gen.Val %t181, ptr %t182 - store %S.gen.Val %t184, ptr %a185 - call void @finch.drop.S_gen_Val(ptr %a185) - ret i1 true -endif6414: - ret i1 false -endif6336: - %t186 = load ptr, ptr %a2 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic6425, label %ok6426 -panic6425: - call void @finch_panic(ptr @.str.4095, i64 3486, ptr @.str.4096) - unreachable -ok6426: - %t188 = getelementptr inbounds %S.gen.Val, ptr %t186, i32 0, i32 1 - %t189 = load %S.ast.Type, ptr %t188 - %t190 = call i1 @finch.gen.isInt(%S.ast.Type %t189) - br label %logic.from6427 -logic.from6427: - br i1 %t190, label %logic.rhs6428, label %logic.end6429 -logic.rhs6428: - %t191 = load ptr, ptr %a3 - %t192 = icmp eq ptr %t191, null - br i1 %t192, label %panic6430, label %ok6431 -panic6430: - call void @finch_panic(ptr @.str.4097, i64 3486, ptr @.str.4098) - unreachable -ok6431: - %t193 = getelementptr inbounds %S.gen.Val, ptr %t191, i32 0, i32 1 - %t194 = load %S.ast.Type, ptr %t193 - %t195 = call i1 @finch.gen.isFloat(%S.ast.Type %t194) - br label %logic.rend6432 -logic.rend6432: - br label %logic.end6429 -logic.end6429: - %t196 = phi i1 [ false, %logic.from6427 ], [ %t195, %logic.rend6432 ] - br i1 %t196, label %then6433, label %endif6435 -then6433: - %t197 = load ptr, ptr %a1 - %t198 = load ptr, ptr %a2 - %t199 = icmp eq ptr %t198, null - br i1 %t199, label %panic6436, label %ok6437 -panic6436: - call void @finch_panic(ptr @.str.4099, i64 3487, ptr @.str.4100) - unreachable -ok6437: - %t200 = load %S.gen.Val, ptr %t198 - %t201 = load ptr, ptr %a3 - %t202 = icmp eq ptr %t201, null - br i1 %t202, label %panic6438, label %ok6439 -panic6438: - call void @finch_panic(ptr @.str.4101, i64 3487, ptr @.str.4102) - unreachable -ok6439: - %t203 = getelementptr inbounds %S.gen.Val, ptr %t201, i32 0, i32 1 - %t204 = load %S.ast.Type, ptr %t203 - %t205 = call %S.ast.Node @finch.gen.Node0() - %t206 = call %S.gen.Val @finch.gen.coerce(ptr %t197, %S.gen.Val %t200, %S.ast.Type %t204, %S.ast.Node %t205, { ptr, i64, i64 } { ptr @.str.4103, i64 0, i64 0 }) - store %S.ast.Node %t205, ptr %a207 - call void @finch.drop.S_ast_Node(ptr %a207) - %t208 = load ptr, ptr %a2 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic6440, label %ok6441 -panic6440: - call void @finch_panic(ptr @.str.4104, i64 3487, ptr @.str.4105) - unreachable -ok6441: - %t210 = load %S.gen.Val, ptr %t208 - store %S.gen.Val %t206, ptr %t208 - store %S.gen.Val %t210, ptr %a211 - call void @finch.drop.S_gen_Val(ptr %a211) - ret i1 true -endif6435: - %t212 = load ptr, ptr %a2 - %t213 = icmp eq ptr %t212, null - br i1 %t213, label %panic6442, label %ok6443 -panic6442: - call void @finch_panic(ptr @.str.4106, i64 3490, ptr @.str.4107) - unreachable -ok6443: - %t214 = getelementptr inbounds %S.gen.Val, ptr %t212, i32 0, i32 1 - %t215 = load %S.ast.Type, ptr %t214 - %t216 = call i1 @finch.gen.isFloat(%S.ast.Type %t215) - br label %logic.from6444 -logic.from6444: - br i1 %t216, label %logic.rhs6445, label %logic.end6446 -logic.rhs6445: - %t217 = load ptr, ptr %a3 - %t218 = icmp eq ptr %t217, null - br i1 %t218, label %panic6447, label %ok6448 -panic6447: - call void @finch_panic(ptr @.str.4108, i64 3490, ptr @.str.4109) - unreachable -ok6448: - %t219 = getelementptr inbounds %S.gen.Val, ptr %t217, i32 0, i32 1 - %t220 = load %S.ast.Type, ptr %t219 - %t221 = call i1 @finch.gen.isInt(%S.ast.Type %t220) - br label %logic.rend6449 -logic.rend6449: - br label %logic.end6446 -logic.end6446: - %t222 = phi i1 [ false, %logic.from6444 ], [ %t221, %logic.rend6449 ] - br i1 %t222, label %then6450, label %endif6452 -then6450: - %t223 = load ptr, ptr %a1 - %t224 = load ptr, ptr %a3 - %t225 = icmp eq ptr %t224, null - br i1 %t225, label %panic6453, label %ok6454 -panic6453: - call void @finch_panic(ptr @.str.4110, i64 3491, ptr @.str.4111) - unreachable -ok6454: - %t226 = load %S.gen.Val, ptr %t224 - %t227 = load ptr, ptr %a2 - %t228 = icmp eq ptr %t227, null - br i1 %t228, label %panic6455, label %ok6456 -panic6455: - call void @finch_panic(ptr @.str.4112, i64 3491, ptr @.str.4113) - unreachable -ok6456: - %t229 = getelementptr inbounds %S.gen.Val, ptr %t227, i32 0, i32 1 - %t230 = load %S.ast.Type, ptr %t229 - %t231 = call %S.ast.Node @finch.gen.Node0() - %t232 = call %S.gen.Val @finch.gen.coerce(ptr %t223, %S.gen.Val %t226, %S.ast.Type %t230, %S.ast.Node %t231, { ptr, i64, i64 } { ptr @.str.4114, i64 0, i64 0 }) - store %S.ast.Node %t231, ptr %a233 - call void @finch.drop.S_ast_Node(ptr %a233) - %t234 = load ptr, ptr %a3 - %t235 = icmp eq ptr %t234, null - br i1 %t235, label %panic6457, label %ok6458 -panic6457: - call void @finch_panic(ptr @.str.4115, i64 3491, ptr @.str.4116) - unreachable -ok6458: - %t236 = load %S.gen.Val, ptr %t234 - store %S.gen.Val %t232, ptr %t234 - store %S.gen.Val %t236, ptr %a237 - call void @finch.drop.S_gen_Val(ptr %a237) - ret i1 true -endif6452: - %t238 = load ptr, ptr %a2 - %t239 = icmp eq ptr %t238, null - br i1 %t239, label %panic6459, label %ok6460 -panic6459: - call void @finch_panic(ptr @.str.4117, i64 3494, ptr @.str.4118) - unreachable -ok6460: - %t240 = getelementptr inbounds %S.gen.Val, ptr %t238, i32 0, i32 1 - %t241 = load %S.ast.Type, ptr %t240 - %t242 = call i1 @finch.gen.isFloat(%S.ast.Type %t241) - br label %logic.from6461 -logic.from6461: - br i1 %t242, label %logic.rhs6462, label %logic.end6463 -logic.rhs6462: - %t243 = load ptr, ptr %a3 - %t244 = icmp eq ptr %t243, null - br i1 %t244, label %panic6464, label %ok6465 -panic6464: - call void @finch_panic(ptr @.str.4119, i64 3494, ptr @.str.4120) - unreachable -ok6465: - %t245 = getelementptr inbounds %S.gen.Val, ptr %t243, i32 0, i32 1 - %t246 = load %S.ast.Type, ptr %t245 - %t247 = call i1 @finch.gen.isFloat(%S.ast.Type %t246) - br label %logic.rend6466 -logic.rend6466: - br label %logic.end6463 -logic.end6463: - %t248 = phi i1 [ false, %logic.from6461 ], [ %t247, %logic.rend6466 ] - br i1 %t248, label %then6467, label %endif6469 -then6467: - %t249 = load ptr, ptr %a2 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic6470, label %ok6471 -panic6470: - call void @finch_panic(ptr @.str.4121, i64 3495, ptr @.str.4122) - unreachable -ok6471: - %t251 = getelementptr inbounds %S.gen.Val, ptr %t249, i32 0, i32 1 - %t252 = getelementptr inbounds %S.ast.Type, ptr %t251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4123, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp ne i32 %t256, 0 - br i1 %t257, label %then6472, label %endif6474 -then6472: - %t258 = load ptr, ptr %a1 - %t259 = load ptr, ptr %a2 - %t260 = icmp eq ptr %t259, null - br i1 %t260, label %panic6475, label %ok6476 -panic6475: - call void @finch_panic(ptr @.str.4124, i64 3496, ptr @.str.4125) - unreachable -ok6476: - %t261 = getelementptr inbounds %S.gen.Val, ptr %t259, i32 0, i32 0 - %t262 = load { ptr, i64, i64 }, ptr %t261 - %t263 = load ptr, ptr %a2 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic6477, label %ok6478 -panic6477: - call void @finch_panic(ptr @.str.4126, i64 3496, ptr @.str.4127) - unreachable -ok6478: - %t265 = getelementptr inbounds %S.gen.Val, ptr %t263, i32 0, i32 1 - %t266 = load %S.ast.Type, ptr %t265 - %t267 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4128, i64 5, i64 0 }) - %t268 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t258, { ptr, i64, i64 } %t262, %S.ast.Type %t266, %S.ast.Type %t267) - store %S.ast.Type %t267, ptr %a269 - call void @finch.drop.S_ast_Type(ptr %a269) - %t270 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t268, 0 - %t271 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4129, i64 5, i64 0 }) - %t272 = insertvalue %S.gen.Val %t270, %S.ast.Type %t271, 1 - %t273 = load ptr, ptr %a2 - %t274 = icmp eq ptr %t273, null - br i1 %t274, label %panic6479, label %ok6480 -panic6479: - call void @finch_panic(ptr @.str.4130, i64 3496, ptr @.str.4131) - unreachable -ok6480: - %t275 = load %S.gen.Val, ptr %t273 - store %S.gen.Val %t272, ptr %t273 - store %S.gen.Val %t275, ptr %a276 - call void @finch.drop.S_gen_Val(ptr %a276) - br label %endif6474 -endif6474: - %t277 = load ptr, ptr %a3 - %t278 = icmp eq ptr %t277, null - br i1 %t278, label %panic6481, label %ok6482 -panic6481: - call void @finch_panic(ptr @.str.4132, i64 3498, ptr @.str.4133) - unreachable -ok6482: - %t279 = getelementptr inbounds %S.gen.Val, ptr %t277, i32 0, i32 1 - %t280 = getelementptr inbounds %S.ast.Type, ptr %t279, i32 0, i32 0 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4134, i64 3, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br i1 %t285, label %then6483, label %endif6485 -then6483: - %t286 = load ptr, ptr %a1 - %t287 = load ptr, ptr %a3 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic6486, label %ok6487 -panic6486: - call void @finch_panic(ptr @.str.4135, i64 3499, ptr @.str.4136) - unreachable -ok6487: - %t289 = getelementptr inbounds %S.gen.Val, ptr %t287, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - %t291 = load ptr, ptr %a3 - %t292 = icmp eq ptr %t291, null - br i1 %t292, label %panic6488, label %ok6489 -panic6488: - call void @finch_panic(ptr @.str.4137, i64 3499, ptr @.str.4138) - unreachable -ok6489: - %t293 = getelementptr inbounds %S.gen.Val, ptr %t291, i32 0, i32 1 - %t294 = load %S.ast.Type, ptr %t293 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4139, i64 5, i64 0 }) - %t296 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t286, { ptr, i64, i64 } %t290, %S.ast.Type %t294, %S.ast.Type %t295) - store %S.ast.Type %t295, ptr %a297 - call void @finch.drop.S_ast_Type(ptr %a297) - %t298 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t296, 0 - %t299 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4140, i64 5, i64 0 }) - %t300 = insertvalue %S.gen.Val %t298, %S.ast.Type %t299, 1 - %t301 = load ptr, ptr %a3 - %t302 = icmp eq ptr %t301, null - br i1 %t302, label %panic6490, label %ok6491 -panic6490: - call void @finch_panic(ptr @.str.4141, i64 3499, ptr @.str.4142) - unreachable -ok6491: - %t303 = load %S.gen.Val, ptr %t301 - store %S.gen.Val %t300, ptr %t301 - store %S.gen.Val %t303, ptr %a304 - call void @finch.drop.S_gen_Val(ptr %a304) - br label %endif6485 -endif6485: - ret i1 true -endif6469: - 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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca i64, align 16 - %a155 = alloca i64, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca i64, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca i64, align 16 - %a313 = alloca i64, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca i64, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca %S.ast.Type, align 16 - %a384 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4143, 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.from6492 -logic.from6492: - br i1 %t16, label %logic.rhs6493, label %logic.end6494 -logic.rhs6493: - %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.4144, 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.rend6495 -logic.rend6495: - br label %logic.end6494 -logic.end6494: - %t24 = phi i1 [ false, %logic.from6492 ], [ %t23, %logic.rend6495 ] - br label %logic.from6496 -logic.from6496: - br i1 %t24, label %logic.rhs6497, label %logic.end6498 -logic.rhs6497: - %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.4145, 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.rend6499 -logic.rend6499: - br label %logic.end6498 -logic.end6498: - %t32 = phi i1 [ false, %logic.from6496 ], [ %t31, %logic.rend6499 ] - br i1 %t32, label %then6500, label %endif6502 -then6500: - %t33 = load ptr, ptr %a1 - %t34 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t33, { ptr, i64, i64 } { ptr @.str.4146, 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.4147, 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.4148, i64 6, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - store { ptr, i64, i64 } %t41, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a42 - %t47 = load ptr, ptr %a1 - %t48 = load %S.gen.Val, ptr %a6 - %t49 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t47, %S.gen.Val %t48) - store { ptr, i64, i64 } %t46, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t46, ptr %a53 - call void @finch_str_drop(ptr %a53) - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.4149, i64 6, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load ptr, ptr %a1 - %t62 = load %S.gen.Val, ptr %a10 - %t63 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t61, %S.gen.Val %t62) - store { ptr, i64, i64 } %t60, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t60, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4150, i64 1, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - call void @finch.gen.emit(ptr %t36, { ptr, i64, i64 } %t74) - store { ptr, i64, i64 } %t74, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load ptr, ptr %a1 - %t77 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t76, %S.gen.Val %t77) - %t78 = load ptr, ptr %a1 - %t79 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t78, %S.gen.Val %t79) - %t80 = load ptr, ptr %a1 - %t81 = load { ptr, i64, i64 }, ptr %a35 - %t82 = call { ptr, i64, i64 } @finch.gen.load(ptr %t80, { ptr, i64, i64 } { ptr @.str.4151, i64 17, i64 0 }, { ptr, i64, i64 } %t81) - %t83 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t82, 0 - %t84 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4152, i64 3, i64 0 }) - %t85 = insertvalue %S.gen.Val %t83, %S.ast.Type %t84, 1 - %t86 = insertvalue %S.gen.Val %t85, i1 true, 2 - call void @finch_str_drop(ptr %a35) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t86 -endif6502: - %t87 = load ptr, ptr %a1 - %t88 = call i1 @finch.gen.unify(ptr %t87, ptr %a6, ptr %a10) - %t89 = xor i1 %t88, true - br i1 %t89, label %then6503, label %endif6505 -then6503: - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a2 - %t92 = load %S.gen.Val, ptr %a6 - %t93 = load %S.gen.Val, ptr %a10 - %t94 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t90, { ptr, i64, i64 } %t91, %S.gen.Val %t92, %S.gen.Val %t93, %S.ast.Node %t94) - br label %endif6505 -endif6505: - %t95 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t96 = load %S.ast.Type, ptr %t95 - %t97 = call i1 @finch.gen.isInt(%S.ast.Type %t96) - br i1 %t97, label %then6506, label %endif6508 -then6506: - %t98 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t99 = call ptr @finch_alloc(i64 %t98) - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 0 - store { ptr, i64, i64 } { ptr @.str.4153, i64 1, i64 0 }, ptr %t100 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 1 - store { ptr, i64, i64 } { ptr @.str.4154, i64 1, i64 0 }, ptr %t101 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 2 - store { ptr, i64, i64 } { ptr @.str.4155, i64 1, i64 0 }, ptr %t102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 3 - store { ptr, i64, i64 } { ptr @.str.4156, i64 1, i64 0 }, ptr %t103 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 4 - store { ptr, i64, i64 } { ptr @.str.4157, i64 1, i64 0 }, ptr %t104 - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 5 - store { ptr, i64, i64 } { ptr @.str.4158, i64 1, i64 0 }, ptr %t105 - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 6 - store { ptr, i64, i64 } { ptr @.str.4159, i64 1, i64 0 }, ptr %t106 - %t107 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 7 - store { ptr, i64, i64 } { ptr @.str.4160, i64 1, i64 0 }, ptr %t107 - %t108 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 8 - store { ptr, i64, i64 } { ptr @.str.4161, i64 2, i64 0 }, ptr %t108 - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i64 9 - store { ptr, i64, i64 } { ptr @.str.4162, i64 2, i64 0 }, ptr %t109 - %t110 = insertvalue { ptr, i64, i64 } undef, ptr %t99, 0 - %t111 = insertvalue { ptr, i64, i64 } %t110, i64 10, 1 - %t112 = insertvalue { ptr, i64, i64 } %t111, i64 10, 2 - store { ptr, i64, i64 } %t112, ptr %a113 - %t114 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t115 = call ptr @finch_alloc(i64 %t114) - %t116 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 0 - store { ptr, i64, i64 } { ptr @.str.4163, i64 3, i64 0 }, ptr %t116 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 1 - store { ptr, i64, i64 } { ptr @.str.4164, i64 3, i64 0 }, ptr %t117 - %t118 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 2 - store { ptr, i64, i64 } { ptr @.str.4165, i64 3, i64 0 }, ptr %t118 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 3 - store { ptr, i64, i64 } { ptr @.str.4166, i64 4, i64 0 }, ptr %t119 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 4 - store { ptr, i64, i64 } { ptr @.str.4167, i64 4, i64 0 }, ptr %t120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 5 - store { ptr, i64, i64 } { ptr @.str.4168, i64 3, i64 0 }, ptr %t121 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 6 - store { ptr, i64, i64 } { ptr @.str.4169, i64 2, i64 0 }, ptr %t122 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 7 - store { ptr, i64, i64 } { ptr @.str.4170, i64 3, i64 0 }, ptr %t123 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 8 - store { ptr, i64, i64 } { ptr @.str.4171, i64 3, i64 0 }, ptr %t124 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t115, i64 9 - store { ptr, i64, i64 } { ptr @.str.4172, i64 4, i64 0 }, ptr %t125 - %t126 = insertvalue { ptr, i64, i64 } undef, ptr %t115, 0 - %t127 = insertvalue { ptr, i64, i64 } %t126, i64 10, 1 - %t128 = insertvalue { ptr, i64, i64 } %t127, i64 10, 2 - store { ptr, i64, i64 } %t128, ptr %a129 - %t130 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t131 = load %S.ast.Type, ptr %t130 - %t132 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t131) - br i1 %t132, label %then6509, label %endif6511 -then6509: - %t133 = mul i64 10, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t134 = call ptr @finch_alloc(i64 %t133) - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 0 - store { ptr, i64, i64 } { ptr @.str.4173, i64 3, i64 0 }, ptr %t135 - %t136 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 1 - store { ptr, i64, i64 } { ptr @.str.4174, i64 3, i64 0 }, ptr %t136 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 2 - store { ptr, i64, i64 } { ptr @.str.4175, i64 3, i64 0 }, ptr %t137 - %t138 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 3 - store { ptr, i64, i64 } { ptr @.str.4176, i64 4, i64 0 }, ptr %t138 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 4 - store { ptr, i64, i64 } { ptr @.str.4177, i64 4, i64 0 }, ptr %t139 - %t140 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 5 - store { ptr, i64, i64 } { ptr @.str.4178, i64 3, i64 0 }, ptr %t140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 6 - store { ptr, i64, i64 } { ptr @.str.4179, i64 2, i64 0 }, ptr %t141 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 7 - store { ptr, i64, i64 } { ptr @.str.4180, i64 3, i64 0 }, ptr %t142 - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 8 - store { ptr, i64, i64 } { ptr @.str.4181, i64 3, i64 0 }, ptr %t143 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t134, i64 9 - store { ptr, i64, i64 } { ptr @.str.4182, i64 4, i64 0 }, ptr %t144 - %t145 = insertvalue { ptr, i64, i64 } undef, ptr %t134, 0 - %t146 = insertvalue { ptr, i64, i64 } %t145, i64 10, 1 - %t147 = insertvalue { ptr, i64, i64 } %t146, i64 10, 2 - %t148 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t147, ptr %a129 - store { ptr, i64, i64 } %t148, ptr %a149 - call void @finch.drop.arr_str(ptr %a149) - br label %endif6511 -endif6511: - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %a113, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a152 - %t153 = load i64, ptr %t150 - %t154 = load ptr, ptr %a113 - store i64 0, ptr %a155 - br label %find.cond6512 -find.cond6512: - %t156 = load i64, ptr %a155 - %t157 = icmp slt i64 %t156, %t153 - br i1 %t157, label %find.body6513, label %find.end6516 -find.body6513: - %t158 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i64 %t156 - %t159 = load { ptr, i64, i64 }, ptr %t158 - store { ptr, i64, i64 } %t159, ptr %a160 - store { ptr, i64, i64 } %t151, ptr %a161 - %t162 = call i32 @finch_str_eq(ptr %a160, ptr %a161) - %t163 = icmp ne i32 %t162, 0 - br i1 %t163, label %find.hit6514, label %find.next6515 -find.hit6514: - store i64 %t156, ptr %a152 - br label %find.end6516 -find.next6515: - %t164 = add i64 %t156, 1 - store i64 %t164, ptr %a155 - br label %find.cond6512 -find.end6516: - %t165 = load i64, ptr %a152 - store i64 %t165, ptr %a166 - %t167 = load i64, ptr %a166 - %t168 = icmp slt i64 %t167, 0 - br i1 %t168, label %then6517, label %endif6519 -then6517: - %t169 = load ptr, ptr %a1 - %t170 = load { ptr, i64, i64 }, ptr %a2 - %t171 = load %S.gen.Val, ptr %a6 - %t172 = load %S.gen.Val, ptr %a10 - %t173 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t169, { ptr, i64, i64 } %t170, %S.gen.Val %t171, %S.gen.Val %t172, %S.ast.Node %t173) - br label %endif6519 -endif6519: - %t174 = load ptr, ptr %a1 - %t175 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t174, %S.ast.Type %t176) - store { ptr, i64, i64 } %t177, ptr %a178 - %t179 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4183, 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.from6520 -logic.from6520: - br i1 %t183, label %logic.end6522, label %logic.rhs6521 -logic.rhs6521: - %t184 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.4184, i64 1, i64 0 }, ptr %a186 - %t187 = call i32 @finch_str_eq(ptr %a185, ptr %a186) - %t188 = icmp ne i32 %t187, 0 - br label %logic.rend6523 -logic.rend6523: - br label %logic.end6522 -logic.end6522: - %t189 = phi i1 [ true, %logic.from6520 ], [ %t188, %logic.rend6523 ] - br i1 %t189, label %then6524, label %endif6526 -then6524: - %t190 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t191 = load i1, ptr %t190 - br label %logic.from6527 -logic.from6527: - br i1 %t191, label %logic.rhs6528, label %logic.end6529 -logic.rhs6528: - %t192 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4185, i64 1, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br label %logic.rend6530 -logic.rend6530: - br label %logic.end6529 -logic.end6529: - %t198 = phi i1 [ false, %logic.from6527 ], [ %t197, %logic.rend6530 ] - br i1 %t198, label %then6531, label %endif6533 -then6531: - %t199 = load ptr, ptr %a1 - %t200 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t199, %S.ast.Node %t200, { ptr, i64, i64 } { ptr @.str.4186, i64 16, i64 0 }) - br label %endif6533 -endif6533: - %t201 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 3 - %t202 = load i1, ptr %t201 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6534, label %endif6536 -then6534: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4187, i64 8, i64 0 }, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - %t210 = load { ptr, i64, i64 }, ptr %a207 - store { ptr, i64, i64 } %t210, ptr %a212 - store { ptr, i64, i64 } { ptr @.str.4188, i64 1, i64 0 }, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - %t216 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t215, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t215, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4189, i64 3, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = call { ptr, i64, i64 } @finch.gen.op(ptr %t205, { ptr, i64, i64 } %t227) - store { ptr, i64, i64 } %t227, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load %S.ast.Node, ptr %a11 - call void @finch.gen.panicIf(ptr %t204, { ptr, i64, i64 } %t228, { ptr, i64, i64 } { ptr @.str.4190, i64 16, i64 0 }, %S.ast.Node %t230) - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_drop(ptr %a231) - br label %endif6536 -endif6536: - br label %endif6526 -endif6526: - %t232 = load ptr, ptr %a1 - %t233 = load i64, ptr %a166 - %t234 = load { ptr, i64, i64 }, ptr %a129 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range6537, label %inrange6538 -range6537: - call void @finch_panic_index(ptr @.str.4191, i64 3540, i64 %t233, i64 %t235) - unreachable -inrange6538: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t233 - %t239 = load { ptr, i64, i64 }, ptr %t238 - store { ptr, i64, i64 } %t239, ptr %a241 - store { ptr, i64, i64 } { ptr @.str.4192, i64 1, i64 0 }, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a240 - %t244 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4193, i64 1, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t256 = load { ptr, i64, i64 }, ptr %t255 - store { ptr, i64, i64 } %t254, ptr %a258 - store { ptr, i64, i64 } %t256, ptr %a259 - call void @finch_str_concat(ptr %a257, ptr %a258, ptr %a259) - store { ptr, i64, i64 } %t254, ptr %a260 - call void @finch_str_drop(ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } %t261, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.4194, i64 2, i64 0 }, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - store { ptr, i64, i64 } %t261, ptr %a265 - call void @finch_str_drop(ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a262 - %t267 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t266, ptr %a270 - store { ptr, i64, i64 } %t268, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t266, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.op(ptr %t232, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a275 - call void @finch_str_drop(ptr %a275) - %t276 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t274, 0 - %t277 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = insertvalue %S.gen.Val %t276, %S.ast.Type %t281, 1 - call void @finch_str_drop(ptr %a178) - call void @finch.drop.arr_str(ptr %a129) - call void @finch.drop.arr_str(ptr %a113) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t282 -endif6508: - %t283 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t284 = load %S.ast.Type, ptr %t283 - %t285 = call i1 @finch.gen.isFloat(%S.ast.Type %t284) - br i1 %t285, label %then6539, label %endif6541 -then6539: - %t286 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t287 = call ptr @finch_alloc(i64 %t286) - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 0 - store { ptr, i64, i64 } { ptr @.str.4195, i64 1, i64 0 }, ptr %t288 - %t289 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 1 - store { ptr, i64, i64 } { ptr @.str.4196, i64 1, i64 0 }, ptr %t289 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 2 - store { ptr, i64, i64 } { ptr @.str.4197, i64 1, i64 0 }, ptr %t290 - %t291 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 3 - store { ptr, i64, i64 } { ptr @.str.4198, i64 1, i64 0 }, ptr %t291 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i64 4 - store { ptr, i64, i64 } { ptr @.str.4199, i64 1, i64 0 }, ptr %t292 - %t293 = insertvalue { ptr, i64, i64 } undef, ptr %t287, 0 - %t294 = insertvalue { ptr, i64, i64 } %t293, i64 5, 1 - %t295 = insertvalue { ptr, i64, i64 } %t294, i64 5, 2 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = mul i64 5, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t298 = call ptr @finch_alloc(i64 %t297) - %t299 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 0 - store { ptr, i64, i64 } { ptr @.str.4200, i64 4, i64 0 }, ptr %t299 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 1 - store { ptr, i64, i64 } { ptr @.str.4201, i64 4, i64 0 }, ptr %t300 - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 2 - store { ptr, i64, i64 } { ptr @.str.4202, i64 4, i64 0 }, ptr %t301 - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 3 - store { ptr, i64, i64 } { ptr @.str.4203, i64 4, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t298, i64 4 - store { ptr, i64, i64 } { ptr @.str.4204, i64 4, i64 0 }, ptr %t303 - %t304 = insertvalue { ptr, i64, i64 } undef, ptr %t298, 0 - %t305 = insertvalue { ptr, i64, i64 } %t304, i64 5, 1 - %t306 = insertvalue { ptr, i64, i64 } %t305, i64 5, 2 - store { ptr, i64, i64 } %t306, ptr %a307 - %t308 = getelementptr inbounds { ptr, i64, i64 }, ptr %a296, i32 0, i32 1 - %t309 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a310 - %t311 = load i64, ptr %t308 - %t312 = load ptr, ptr %a296 - store i64 0, ptr %a313 - br label %find.cond6542 -find.cond6542: - %t314 = load i64, ptr %a313 - %t315 = icmp slt i64 %t314, %t311 - br i1 %t315, label %find.body6543, label %find.end6546 -find.body6543: - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t312, i64 %t314 - %t317 = load { ptr, i64, i64 }, ptr %t316 - store { ptr, i64, i64 } %t317, ptr %a318 - store { ptr, i64, i64 } %t309, ptr %a319 - %t320 = call i32 @finch_str_eq(ptr %a318, ptr %a319) - %t321 = icmp ne i32 %t320, 0 - br i1 %t321, label %find.hit6544, label %find.next6545 -find.hit6544: - store i64 %t314, ptr %a310 - br label %find.end6546 -find.next6545: - %t322 = add i64 %t314, 1 - store i64 %t322, ptr %a313 - br label %find.cond6542 -find.end6546: - %t323 = load i64, ptr %a310 - store i64 %t323, ptr %a324 - %t325 = load i64, ptr %a324 - %t326 = icmp slt i64 %t325, 0 - br i1 %t326, label %then6547, label %endif6549 -then6547: - %t327 = load ptr, ptr %a1 - %t328 = load { ptr, i64, i64 }, ptr %a2 - %t329 = load %S.gen.Val, ptr %a6 - %t330 = load %S.gen.Val, ptr %a10 - %t331 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t327, { ptr, i64, i64 } %t328, %S.gen.Val %t329, %S.gen.Val %t330, %S.ast.Node %t331) - br label %endif6549 -endif6549: - %t332 = load ptr, ptr %a1 - %t333 = load i64, ptr %a324 - %t334 = load { ptr, i64, i64 }, ptr %a307 - %t335 = extractvalue { ptr, i64, i64 } %t334, 1 - %t336 = icmp uge i64 %t333, %t335 - br i1 %t336, label %range6550, label %inrange6551 -range6550: - call void @finch_panic_index(ptr @.str.4205, i64 3549, i64 %t333, i64 %t335) - unreachable -inrange6551: - %t337 = extractvalue { ptr, i64, i64 } %t334, 0 - %t338 = getelementptr inbounds { ptr, i64, i64 }, ptr %t337, i64 %t333 - %t339 = load { ptr, i64, i64 }, ptr %t338 - store { ptr, i64, i64 } %t339, ptr %a341 - store { ptr, i64, i64 } { ptr @.str.4206, i64 1, i64 0 }, ptr %a342 - call void @finch_str_concat(ptr %a340, ptr %a341, ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a340 - %t344 = load ptr, ptr %a1 - %t345 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t346 = load %S.ast.Type, ptr %t345 - %t347 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t344, %S.ast.Type %t346) - store { ptr, i64, i64 } %t343, ptr %a349 - store { ptr, i64, i64 } %t347, ptr %a350 - call void @finch_str_concat(ptr %a348, ptr %a349, ptr %a350) - store { ptr, i64, i64 } %t343, ptr %a351 - call void @finch_str_drop(ptr %a351) - store { ptr, i64, i64 } %t347, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t353, ptr %a355 - store { ptr, i64, i64 } { ptr @.str.4207, i64 1, i64 0 }, ptr %a356 - call void @finch_str_concat(ptr %a354, ptr %a355, ptr %a356) - store { ptr, i64, i64 } %t353, ptr %a357 - call void @finch_str_drop(ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t360 = load { ptr, i64, i64 }, ptr %t359 - store { ptr, i64, i64 } %t358, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t358, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4208, i64 2, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - %t378 = call { ptr, i64, i64 } @finch.gen.op(ptr %t332, { ptr, i64, i64 } %t377) - store { ptr, i64, i64 } %t377, ptr %a379 - call void @finch_str_drop(ptr %a379) - %t380 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t378, 0 - %t381 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t382 = load %S.ast.Type, ptr %t381 - store %S.ast.Type %t382, ptr %a383 - call void @finch.copy.S_ast_Type(ptr %a384, ptr %a383) - %t385 = load %S.ast.Type, ptr %a384 - %t386 = insertvalue %S.gen.Val %t380, %S.ast.Type %t385, 1 - call void @finch.drop.arr_str(ptr %a307) - call void @finch.drop.arr_str(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t386 -endif6541: - %t387 = load ptr, ptr %a1 - %t388 = load { ptr, i64, i64 }, ptr %a2 - %t389 = load %S.gen.Val, ptr %a6 - %t390 = load %S.gen.Val, ptr %a10 - %t391 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t387, { ptr, i64, i64 } %t388, %S.gen.Val %t389, %S.gen.Val %t390, %S.ast.Node %t391) - %t392 = load %S.gen.Val, ptr %a6 - call void @finch.drop.S_gen_Val(ptr %a10) - ret %S.gen.Val %t392 -} - -define internal %S.gen.Val @finch.gen.compare(ptr %p0, { ptr, i64, i64 } %p1, %S.gen.Val %p2, %S.gen.Val %p3, %S.ast.Node %p4) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %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 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca i64, align 16 - %a330 = alloca i64, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a520 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.gen.Val %p2, ptr %a3 - 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.4209, 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.from6552 -logic.from6552: - br i1 %t16, label %logic.end6554, label %logic.rhs6553 -logic.rhs6553: - %t17 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4210, 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.rend6555 -logic.rend6555: - br label %logic.end6554 -logic.end6554: - %t22 = phi i1 [ true, %logic.from6552 ], [ %t21, %logic.rend6555 ] - 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.4211, 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.from6556 -logic.from6556: - br i1 %t30, label %logic.end6558, label %logic.rhs6557 -logic.rhs6557: - %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.4212, 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.rend6559 -logic.rend6559: - br label %logic.end6558 -logic.end6558: - %t38 = phi i1 [ true, %logic.from6556 ], [ %t37, %logic.rend6559 ] - br label %logic.from6560 -logic.from6560: - br i1 %t38, label %logic.end6562, label %logic.rhs6561 -logic.rhs6561: - %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.4213, 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.rend6563 -logic.rend6563: - br label %logic.end6562 -logic.end6562: - %t46 = phi i1 [ true, %logic.from6560 ], [ %t45, %logic.rend6563 ] - br label %logic.from6564 -logic.from6564: - br i1 %t46, label %logic.end6566, label %logic.rhs6565 -logic.rhs6565: - %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.4214, 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.rend6567 -logic.rend6567: - br label %logic.end6566 -logic.end6566: - %t54 = phi i1 [ true, %logic.from6564 ], [ %t53, %logic.rend6567 ] - br i1 %t54, label %then6568, label %endif6570 -then6568: - %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.4215, 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.from6571 -logic.from6571: - br i1 %t61, label %logic.end6573, label %logic.rhs6572 -logic.rhs6572: - %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.4216, 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.rend6574 -logic.rend6574: - br label %logic.end6573 -logic.end6573: - %t69 = phi i1 [ true, %logic.from6571 ], [ %t68, %logic.rend6574 ] - br i1 %t69, label %then6575, label %endif6577 -then6575: - %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.4217, i64 59, i64 0 }) - br label %endif6577 -endif6577: - %t72 = load i1, ptr %a23 - %t73 = xor i1 %t72, true - br i1 %t73, label %then6578, label %endif6580 -then6578: - %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 %endif6580 -endif6580: - store { ptr, i64, i64 } { ptr @.str.4218, 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.4219, 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 %then6581, label %endif6583 -then6581: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4220, i64 2, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6583 -endif6583: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4221, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4222, i64 5, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4223, i64 2, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t111 = load { ptr, i64, i64 }, ptr %t110 - store { ptr, i64, i64 } %t109, ptr %a113 - store { ptr, i64, i64 } %t111, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t109, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t116, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t117, 0 - %t120 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4224, i64 4, i64 0 }) - %t121 = insertvalue %S.gen.Val %t119, %S.ast.Type %t120, 1 - call void @finch_str_drop(ptr %a79) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t121 -endif6570: - %t122 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t123 = getelementptr inbounds %S.ast.Type, ptr %t122, i32 0, i32 0 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.4225, 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.from6584 -logic.from6584: - br i1 %t128, label %logic.rhs6585, label %logic.end6586 -logic.rhs6585: - %t129 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 1 - %t130 = getelementptr inbounds %S.ast.Type, ptr %t129, i32 0, i32 0 - %t131 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t131, ptr %a132 - store { ptr, i64, i64 } { ptr @.str.4226, i64 3, i64 0 }, ptr %a133 - %t134 = call i32 @finch_str_eq(ptr %a132, ptr %a133) - %t135 = icmp ne i32 %t134, 0 - br label %logic.rend6587 -logic.rend6587: - br label %logic.end6586 -logic.end6586: - %t136 = phi i1 [ false, %logic.from6584 ], [ %t135, %logic.rend6587 ] - br i1 %t136, label %then6588, label %endif6590 -then6588: - %t137 = load i1, ptr %a23 - br i1 %t137, label %then6591, label %endif6593 -then6591: - %t138 = load ptr, ptr %a1 - %t139 = load ptr, ptr %a1 - %t140 = load %S.gen.Val, ptr %a6 - %t141 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t139, %S.gen.Val %t140) - store { ptr, i64, i64 } { ptr @.str.4227, i64 27, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4228, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a10 - %t154 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t152, %S.gen.Val %t153) - store { ptr, i64, i64 } %t151, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t151, ptr %a158 - call void @finch_str_drop(ptr %a158) - store { ptr, i64, i64 } %t154, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4229, i64 1, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - store { ptr, i64, i64 } %t160, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load { ptr, i64, i64 }, ptr %a161 - %t166 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t165) - store { ptr, i64, i64 } %t165, ptr %a167 - call void @finch_str_drop(ptr %a167) - store { ptr, i64, i64 } %t166, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4230, i64 2, i64 0 }, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.4231, i64 2, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then6594, label %endif6596 -then6594: - %t175 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4232, i64 2, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif6596 -endif6596: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4233, i64 5, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4234, i64 5, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - store { ptr, i64, i64 } %t187, ptr %a192 - call void @finch_str_drop(ptr %a192) - %t193 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t193, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4235, i64 3, i64 0 }, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t193, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t177, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - store { ptr, i64, i64 } %t199, ptr %a201 - %t202 = load ptr, ptr %a1 - %t203 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t202, %S.gen.Val %t203) - %t204 = load ptr, ptr %a1 - %t205 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t204, %S.gen.Val %t205) - %t206 = load { ptr, i64, i64 }, ptr %a201 - store { ptr, i64, i64 } %t206, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t209, 0 - %t211 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4236, i64 4, i64 0 }) - %t212 = insertvalue %S.gen.Val %t210, %S.ast.Type %t211, 1 - call void @finch_str_drop(ptr %a201) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t212 -endif6593: - %t213 = load ptr, ptr %a1 - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.Val, ptr %a6 - %t216 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t214, %S.gen.Val %t215) - store { ptr, i64, i64 } { ptr @.str.4237, i64 28, i64 0 }, ptr %a218 - store { ptr, i64, i64 } %t216, ptr %a219 - call void @finch_str_concat(ptr %a217, ptr %a218, ptr %a219) - store { ptr, i64, i64 } %t216, ptr %a220 - call void @finch_str_drop(ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a217 - store { ptr, i64, i64 } %t221, ptr %a223 - store { ptr, i64, i64 } { ptr @.str.4238, i64 6, i64 0 }, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t221, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - %t227 = load ptr, ptr %a1 - %t228 = load %S.gen.Val, ptr %a10 - %t229 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t227, %S.gen.Val %t228) - store { ptr, i64, i64 } %t226, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - store { ptr, i64, i64 } %t226, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t229, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.4239, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - %t241 = call { ptr, i64, i64 } @finch.gen.op(ptr %t213, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a242 - call void @finch_str_drop(ptr %a242) - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = load ptr, ptr %a1 - %t245 = load { ptr, i64, i64 }, ptr %a2 - %t246 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t245, i1 true) - store { ptr, i64, i64 } { ptr @.str.4240, i64 5, i64 0 }, ptr %a248 - store { ptr, i64, i64 } %t246, ptr %a249 - call void @finch_str_concat(ptr %a247, ptr %a248, ptr %a249) - store { ptr, i64, i64 } %t246, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4241, i64 5, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = load { ptr, i64, i64 }, ptr %a243 - store { ptr, i64, i64 } %t256, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - store { ptr, i64, i64 } %t256, ptr %a261 - call void @finch_str_drop(ptr %a261) - %t262 = load { ptr, i64, i64 }, ptr %a258 - store { ptr, i64, i64 } %t262, ptr %a264 - store { ptr, i64, i64 } { ptr @.str.4242, i64 3, i64 0 }, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t262, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - %t268 = call { ptr, i64, i64 } @finch.gen.op(ptr %t244, { ptr, i64, i64 } %t267) - store { ptr, i64, i64 } %t267, ptr %a269 - call void @finch_str_drop(ptr %a269) - store { ptr, i64, i64 } %t268, ptr %a270 - %t271 = load ptr, ptr %a1 - %t272 = load %S.gen.Val, ptr %a6 - call void @finch.gen.release(ptr %t271, %S.gen.Val %t272) - %t273 = load ptr, ptr %a1 - %t274 = load %S.gen.Val, ptr %a10 - call void @finch.gen.release(ptr %t273, %S.gen.Val %t274) - %t275 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_copy(ptr %a277, ptr %a276) - %t278 = load { ptr, i64, i64 }, ptr %a277 - %t279 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t278, 0 - %t280 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4243, i64 4, i64 0 }) - %t281 = insertvalue %S.gen.Val %t279, %S.ast.Type %t280, 1 - call void @finch_str_drop(ptr %a270) - call void @finch_str_drop(ptr %a243) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t281 -endif6590: - %t282 = load ptr, ptr %a1 - %t283 = call i1 @finch.gen.unify(ptr %t282, ptr %a6, ptr %a10) - %t284 = xor i1 %t283, true - br i1 %t284, label %then6597, label %endif6599 -then6597: - %t285 = load ptr, ptr %a1 - %t286 = load { ptr, i64, i64 }, ptr %a2 - %t287 = load %S.gen.Val, ptr %a6 - %t288 = load %S.gen.Val, ptr %a10 - %t289 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t285, { ptr, i64, i64 } %t286, %S.gen.Val %t287, %S.gen.Val %t288, %S.ast.Node %t289) - br label %endif6599 -endif6599: - %t290 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t291 = getelementptr inbounds %S.ast.Type, ptr %t290, i32 0, i32 0 - %t292 = load { ptr, i64, i64 }, ptr %t291 - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_copy(ptr %a294, ptr %a293) - %t295 = load { ptr, i64, i64 }, ptr %a294 - store { ptr, i64, i64 } %t295, ptr %a296 - %t297 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t298 = load %S.ast.Type, ptr %t297 - %t299 = call i1 @finch.gen.isFloat(%S.ast.Type %t298) - br i1 %t299, label %then6600, label %endif6602 -then6600: - %t300 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t301 = call ptr @finch_alloc(i64 %t300) - %t302 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 0 - store { ptr, i64, i64 } { ptr @.str.4244, i64 2, i64 0 }, ptr %t302 - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 1 - store { ptr, i64, i64 } { ptr @.str.4245, i64 2, i64 0 }, ptr %t303 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 2 - store { ptr, i64, i64 } { ptr @.str.4246, i64 1, i64 0 }, ptr %t304 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 3 - store { ptr, i64, i64 } { ptr @.str.4247, i64 2, i64 0 }, ptr %t305 - %t306 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 4 - store { ptr, i64, i64 } { ptr @.str.4248, i64 1, i64 0 }, ptr %t306 - %t307 = getelementptr inbounds { ptr, i64, i64 }, ptr %t301, i64 5 - store { ptr, i64, i64 } { ptr @.str.4249, i64 2, i64 0 }, ptr %t307 - %t308 = insertvalue { ptr, i64, i64 } undef, ptr %t301, 0 - %t309 = insertvalue { ptr, i64, i64 } %t308, i64 6, 1 - %t310 = insertvalue { ptr, i64, i64 } %t309, i64 6, 2 - store { ptr, i64, i64 } %t310, ptr %a311 - %t312 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t313 = call ptr @finch_alloc(i64 %t312) - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 0 - store { ptr, i64, i64 } { ptr @.str.4250, i64 3, i64 0 }, ptr %t314 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 1 - store { ptr, i64, i64 } { ptr @.str.4251, i64 3, i64 0 }, ptr %t315 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 2 - store { ptr, i64, i64 } { ptr @.str.4252, i64 3, i64 0 }, ptr %t316 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 3 - store { ptr, i64, i64 } { ptr @.str.4253, i64 3, i64 0 }, ptr %t317 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 4 - store { ptr, i64, i64 } { ptr @.str.4254, i64 3, i64 0 }, ptr %t318 - %t319 = getelementptr inbounds { ptr, i64, i64 }, ptr %t313, i64 5 - store { ptr, i64, i64 } { ptr @.str.4255, i64 3, i64 0 }, ptr %t319 - %t320 = insertvalue { ptr, i64, i64 } undef, ptr %t313, 0 - %t321 = insertvalue { ptr, i64, i64 } %t320, i64 6, 1 - %t322 = insertvalue { ptr, i64, i64 } %t321, i64 6, 2 - store { ptr, i64, i64 } %t322, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a311, i32 0, i32 1 - %t326 = load { ptr, i64, i64 }, ptr %a2 - store i64 -1, ptr %a327 - %t328 = load i64, ptr %t325 - %t329 = load ptr, ptr %a311 - store i64 0, ptr %a330 - br label %find.cond6603 -find.cond6603: - %t331 = load i64, ptr %a330 - %t332 = icmp slt i64 %t331, %t328 - br i1 %t332, label %find.body6604, label %find.end6607 -find.body6604: - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %t329, i64 %t331 - %t334 = load { ptr, i64, i64 }, ptr %t333 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } %t326, ptr %a336 - %t337 = call i32 @finch_str_eq(ptr %a335, ptr %a336) - %t338 = icmp ne i32 %t337, 0 - br i1 %t338, label %find.hit6605, label %find.next6606 -find.hit6605: - store i64 %t331, ptr %a327 - br label %find.end6607 -find.next6606: - %t339 = add i64 %t331, 1 - store i64 %t339, ptr %a330 - br label %find.cond6603 -find.end6607: - %t340 = load i64, ptr %a327 - %t341 = load { ptr, i64, i64 }, ptr %a323 - %t342 = extractvalue { ptr, i64, i64 } %t341, 1 - %t343 = icmp uge i64 %t340, %t342 - br i1 %t343, label %range6608, label %inrange6609 -range6608: - call void @finch_panic_index(ptr @.str.4257, i64 3595, i64 %t340, i64 %t342) - unreachable -inrange6609: - %t344 = extractvalue { ptr, i64, i64 } %t341, 0 - %t345 = getelementptr inbounds { ptr, i64, i64 }, ptr %t344, i64 %t340 - %t346 = load { ptr, i64, i64 }, ptr %t345 - store { ptr, i64, i64 } { ptr @.str.4256, i64 5, i64 0 }, ptr %a348 - store { ptr, i64, i64 } %t346, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4258, i64 1, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load ptr, ptr %a1 - %t357 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t358 = load %S.ast.Type, ptr %t357 - %t359 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t356, %S.ast.Type %t358) - store { ptr, i64, i64 } %t355, ptr %a361 - store { ptr, i64, i64 } %t359, ptr %a362 - call void @finch_str_concat(ptr %a360, ptr %a361, ptr %a362) - store { ptr, i64, i64 } %t355, ptr %a363 - call void @finch_str_drop(ptr %a363) - store { ptr, i64, i64 } %t359, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t365, ptr %a367 - store { ptr, i64, i64 } { ptr @.str.4259, i64 1, i64 0 }, ptr %a368 - call void @finch_str_concat(ptr %a366, ptr %a367, ptr %a368) - store { ptr, i64, i64 } %t365, ptr %a369 - call void @finch_str_drop(ptr %a369) - %t370 = load { ptr, i64, i64 }, ptr %a366 - %t371 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t370, ptr %a374 - store { ptr, i64, i64 } %t372, ptr %a375 - call void @finch_str_concat(ptr %a373, ptr %a374, ptr %a375) - store { ptr, i64, i64 } %t370, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.4260, i64 2, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t384 = load { ptr, i64, i64 }, ptr %t383 - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - %t389 = load { ptr, i64, i64 }, ptr %a385 - %t390 = call { ptr, i64, i64 } @finch.gen.op(ptr %t324, { ptr, i64, i64 } %t389) - store { ptr, i64, i64 } %t389, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t390, 0 - %t393 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4261, i64 4, i64 0 }) - %t394 = insertvalue %S.gen.Val %t392, %S.ast.Type %t393, 1 - call void @finch.drop.arr_str(ptr %a323) - call void @finch.drop.arr_str(ptr %a311) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t394 -endif6602: - %t395 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t395, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4262, i64 4, i64 0 }, ptr %a397 - %t398 = call i32 @finch_str_eq(ptr %a396, ptr %a397) - %t399 = icmp ne i32 %t398, 0 - br i1 %t399, label %then6610, label %endif6612 -then6610: - %t400 = load i1, ptr %a23 - %t401 = xor i1 %t400, true - br i1 %t401, label %then6613, label %endif6615 -then6613: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a11 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4263, i64 115, i64 0 }) - br label %endif6615 -endif6615: - store { ptr, i64, i64 } { ptr @.str.4264, i64 2, i64 0 }, ptr %a404 - %t405 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t405, ptr %a406 - store { ptr, i64, i64 } { ptr @.str.4265, i64 2, i64 0 }, ptr %a407 - %t408 = call i32 @finch_str_eq(ptr %a406, ptr %a407) - %t409 = icmp ne i32 %t408, 0 - br i1 %t409, label %then6616, label %endif6618 -then6616: - %t410 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4266, i64 2, i64 0 }, ptr %a404 - store { ptr, i64, i64 } %t410, ptr %a411 - call void @finch_str_drop(ptr %a411) - br label %endif6618 -endif6618: - %t412 = load ptr, ptr %a1 - %t413 = load { ptr, i64, i64 }, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4267, i64 5, i64 0 }, ptr %a415 - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_concat(ptr %a414, ptr %a415, ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a414 - store { ptr, i64, i64 } %t417, ptr %a419 - store { ptr, i64, i64 } { ptr @.str.4268, i64 5, i64 0 }, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t417, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - %t423 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t424 = load { ptr, i64, i64 }, ptr %t423 - store { ptr, i64, i64 } %t422, ptr %a426 - store { ptr, i64, i64 } %t424, ptr %a427 - call void @finch_str_concat(ptr %a425, ptr %a426, ptr %a427) - store { ptr, i64, i64 } %t422, ptr %a428 - call void @finch_str_drop(ptr %a428) - %t429 = load { ptr, i64, i64 }, ptr %a425 - store { ptr, i64, i64 } %t429, ptr %a431 - store { ptr, i64, i64 } { ptr @.str.4269, i64 2, i64 0 }, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t434, ptr %a438 - store { ptr, i64, i64 } %t436, ptr %a439 - call void @finch_str_concat(ptr %a437, ptr %a438, ptr %a439) - store { ptr, i64, i64 } %t434, ptr %a440 - call void @finch_str_drop(ptr %a440) - %t441 = load { ptr, i64, i64 }, ptr %a437 - %t442 = call { ptr, i64, i64 } @finch.gen.op(ptr %t412, { ptr, i64, i64 } %t441) - store { ptr, i64, i64 } %t441, ptr %a443 - call void @finch_str_drop(ptr %a443) - %t444 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t442, 0 - %t445 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4270, i64 4, i64 0 }) - %t446 = insertvalue %S.gen.Val %t444, %S.ast.Type %t445, 1 - call void @finch_str_drop(ptr %a404) - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t446 -endif6612: - %t447 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.4271, i64 4, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br label %logic.from6619 -logic.from6619: - br i1 %t451, label %logic.rhs6620, label %logic.end6621 -logic.rhs6620: - %t452 = load i1, ptr %a23 - %t453 = xor i1 %t452, true - br label %logic.rend6622 -logic.rend6622: - br label %logic.end6621 -logic.end6621: - %t454 = phi i1 [ false, %logic.from6619 ], [ %t453, %logic.rend6622 ] - br i1 %t454, label %then6623, label %endif6625 -then6623: - %t455 = load ptr, ptr %a1 - %t456 = load { ptr, i64, i64 }, ptr %a2 - %t457 = load %S.gen.Val, ptr %a6 - %t458 = load %S.gen.Val, ptr %a10 - %t459 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t455, { ptr, i64, i64 } %t456, %S.gen.Val %t457, %S.gen.Val %t458, %S.ast.Node %t459) - br label %endif6625 -endif6625: - %t460 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t461 = load %S.ast.Type, ptr %t460 - %t462 = call i1 @finch.gen.isInt(%S.ast.Type %t461) - %t463 = xor i1 %t462, true - br label %logic.from6626 -logic.from6626: - br i1 %t463, label %logic.rhs6627, label %logic.end6628 -logic.rhs6627: - %t464 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t464, ptr %a465 - store { ptr, i64, i64 } { ptr @.str.4272, i64 4, i64 0 }, ptr %a466 - %t467 = call i32 @finch_str_eq(ptr %a465, ptr %a466) - %t468 = icmp eq i32 %t467, 0 - br label %logic.rend6629 -logic.rend6629: - br label %logic.end6628 -logic.end6628: - %t469 = phi i1 [ false, %logic.from6626 ], [ %t468, %logic.rend6629 ] - br label %logic.from6630 -logic.from6630: - br i1 %t469, label %logic.rhs6631, label %logic.end6632 -logic.rhs6631: - %t470 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.4273, i64 4, i64 0 }, ptr %a472 - %t473 = call i32 @finch_str_eq(ptr %a471, ptr %a472) - %t474 = icmp eq i32 %t473, 0 - br label %logic.rend6633 -logic.rend6633: - br label %logic.end6632 -logic.end6632: - %t475 = phi i1 [ false, %logic.from6630 ], [ %t474, %logic.rend6633 ] - br i1 %t475, label %then6634, label %endif6636 -then6634: - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a2 - %t478 = load %S.gen.Val, ptr %a6 - %t479 = load %S.gen.Val, ptr %a10 - %t480 = load %S.ast.Node, ptr %a11 - call void @finch.gen.badOperands(ptr %t476, { ptr, i64, i64 } %t477, %S.gen.Val %t478, %S.gen.Val %t479, %S.ast.Node %t480) - br label %endif6636 -endif6636: - %t481 = load ptr, ptr %a1 - %t482 = load { ptr, i64, i64 }, ptr %a2 - %t483 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t484 = load %S.ast.Type, ptr %t483 - %t485 = call i1 @finch.gen.isSigned(%S.ast.Type %t484) - %t486 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %t482, i1 %t485) - store { ptr, i64, i64 } { ptr @.str.4274, i64 5, i64 0 }, ptr %a488 - store { ptr, i64, i64 } %t486, ptr %a489 - call void @finch_str_concat(ptr %a487, ptr %a488, ptr %a489) - store { ptr, i64, i64 } %t486, ptr %a490 - call void @finch_str_drop(ptr %a490) - %t491 = load { ptr, i64, i64 }, ptr %a487 - store { ptr, i64, i64 } %t491, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.4275, i64 1, i64 0 }, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t491, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - %t497 = load ptr, ptr %a1 - %t498 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 1 - %t499 = load %S.ast.Type, ptr %t498 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t497, %S.ast.Type %t499) - store { ptr, i64, i64 } %t496, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t496, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t506, ptr %a508 - store { ptr, i64, i64 } { ptr @.str.4276, i64 1, i64 0 }, ptr %a509 - call void @finch_str_concat(ptr %a507, ptr %a508, ptr %a509) - store { ptr, i64, i64 } %t506, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a507 - %t512 = getelementptr inbounds %S.gen.Val, ptr %a6, i32 0, i32 0 - %t513 = load { ptr, i64, i64 }, ptr %t512 - store { ptr, i64, i64 } %t511, ptr %a515 - store { ptr, i64, i64 } %t513, ptr %a516 - call void @finch_str_concat(ptr %a514, ptr %a515, ptr %a516) - store { ptr, i64, i64 } %t511, ptr %a517 - call void @finch_str_drop(ptr %a517) - %t518 = load { ptr, i64, i64 }, ptr %a514 - store { ptr, i64, i64 } %t518, ptr %a520 - store { ptr, i64, i64 } { ptr @.str.4277, i64 2, i64 0 }, ptr %a521 - call void @finch_str_concat(ptr %a519, ptr %a520, ptr %a521) - store { ptr, i64, i64 } %t518, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a519 - %t524 = getelementptr inbounds %S.gen.Val, ptr %a10, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t523, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t523, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = call { ptr, i64, i64 } @finch.gen.op(ptr %t481, { ptr, i64, i64 } %t530) - store { ptr, i64, i64 } %t530, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t531, 0 - %t534 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4278, i64 4, i64 0 }) - %t535 = insertvalue %S.gen.Val %t533, %S.ast.Type %t534, 1 - call void @finch_str_drop(ptr %a296) - call void @finch.drop.S_gen_Val(ptr %a10) - call void @finch.drop.S_gen_Val(ptr %a6) - ret %S.gen.Val %t535 -} - -define internal { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } %p0, i1 %p1) { -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 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca i64, align 16 - %a46 = alloca i64, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = mul i64 6, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t4 = call ptr @finch_alloc(i64 %t3) - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 0 - store { ptr, i64, i64 } { ptr @.str.4279, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 1 - store { ptr, i64, i64 } { ptr @.str.4280, i64 2, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 2 - store { ptr, i64, i64 } { ptr @.str.4281, i64 1, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 3 - store { ptr, i64, i64 } { ptr @.str.4282, i64 2, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 4 - store { ptr, i64, i64 } { ptr @.str.4283, i64 1, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t4, i64 5 - store { ptr, i64, i64 } { ptr @.str.4284, 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.4285, i64 2, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 1 - store { ptr, i64, i64 } { ptr @.str.4286, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 2 - store { ptr, i64, i64 } { ptr @.str.4287, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 3 - store { ptr, i64, i64 } { ptr @.str.4288, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 4 - store { ptr, i64, i64 } { ptr @.str.4289, i64 3, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 5 - store { ptr, i64, i64 } { ptr @.str.4290, 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 %then6637, label %endif6639 -then6637: - %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.4291, i64 2, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 1 - store { ptr, i64, i64 } { ptr @.str.4292, i64 2, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 2 - store { ptr, i64, i64 } { ptr @.str.4293, i64 3, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 3 - store { ptr, i64, i64 } { ptr @.str.4294, i64 3, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 4 - store { ptr, i64, i64 } { ptr @.str.4295, i64 3, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i64 5 - store { ptr, i64, i64 } { ptr @.str.4296, i64 3, i64 0 }, ptr %t35 - %t36 = insertvalue { ptr, i64, i64 } undef, ptr %t29, 0 - %t37 = insertvalue { ptr, i64, i64 } %t36, i64 6, 1 - %t38 = insertvalue { ptr, i64, i64 } %t37, i64 6, 2 - %t39 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t38, ptr %a26 - store { ptr, i64, i64 } %t39, ptr %a40 - call void @finch.drop.arr_str(ptr %a40) - br label %endif6639 -endif6639: - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %a1 - store i64 -1, ptr %a43 - %t44 = load i64, ptr %t41 - %t45 = load ptr, ptr %a14 - store i64 0, ptr %a46 - br label %find.cond6640 -find.cond6640: - %t47 = load i64, ptr %a46 - %t48 = icmp slt i64 %t47, %t44 - br i1 %t48, label %find.body6641, label %find.end6644 -find.body6641: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t45, i64 %t47 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - store { ptr, i64, i64 } %t42, ptr %a52 - %t53 = call i32 @finch_str_eq(ptr %a51, ptr %a52) - %t54 = icmp ne i32 %t53, 0 - br i1 %t54, label %find.hit6642, label %find.next6643 -find.hit6642: - store i64 %t47, ptr %a43 - br label %find.end6644 -find.next6643: - %t55 = add i64 %t47, 1 - store i64 %t55, ptr %a46 - br label %find.cond6640 -find.end6644: - %t56 = load i64, ptr %a43 - %t57 = load { ptr, i64, i64 }, ptr %a26 - %t58 = extractvalue { ptr, i64, i64 } %t57, 1 - %t59 = icmp uge i64 %t56, %t58 - br i1 %t59, label %range6645, label %inrange6646 -range6645: - call void @finch_panic_index(ptr @.str.4297, i64 3622, i64 %t56, i64 %t58) - unreachable -inrange6646: - %t60 = extractvalue { ptr, i64, i64 } %t57, 0 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i64 %t56 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - call void @finch.drop.arr_str(ptr %a26) - call void @finch.drop.arr_str(ptr %a14) - ret { ptr, i64, i64 } %t65 -} - -define internal %S.gen.Val @finch.gen.binary(ptr %p0, %S.ast.Node %p1) { -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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca %S.gen.Val, align 16 - %a151 = alloca i64, align 16 - %a163 = alloca %S.gen.Val, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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.4298, 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.from6647 -logic.from6647: - br i1 %t13, label %logic.end6649, label %logic.rhs6648 -logic.rhs6648: - %t14 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.4299, 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.rend6650 -logic.rend6650: - br label %logic.end6649 -logic.end6649: - %t19 = phi i1 [ true, %logic.from6647 ], [ %t18, %logic.rend6650 ] - br i1 %t19, label %then6651, label %endif6653 -then6651: - %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 %range6654, label %inrange6655 -range6654: - call void @finch_panic_index(ptr @.str.4300, i64 3628, i64 0, i64 %t23) - unreachable -inrange6655: - %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.4301, 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.4302, 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.4303, 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.4304, 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 %then6656, label %else6657 -then6656: - %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 %endif6658 -else6657: - %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 %endif6658 -endif6658: - %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 %range6659, label %inrange6660 -range6659: - call void @finch_panic_index(ptr @.str.4305, i64 3640, i64 1, i64 %t61) - unreachable -inrange6660: - %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.4306, 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.4307, 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.4308, 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 %then6661, label %endif6663 -then6661: - %t85 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4309, i64 5, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - br label %endif6663 -endif6663: - %t87 = load ptr, ptr %a1 - %t88 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } { ptr @.str.4310, i64 9, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4311, i64 3, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load { ptr, i64, i64 }, ptr %a32 - store { ptr, i64, i64 } %t97, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a101 - call void @finch_str_concat(ptr %a99, ptr %a100, ptr %a101) - store { ptr, i64, i64 } %t97, ptr %a102 - call void @finch_str_drop(ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } %t103, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.4312, i64 6, i64 0 }, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t103, ptr %a107 - call void @finch_str_drop(ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a104 - %t109 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t108, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t108, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4313, i64 3, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - store { ptr, i64, i64 } %t125, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4314, i64 2, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = call { ptr, i64, i64 } @finch.gen.op(ptr %t87, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t131, 0 - %t134 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4315, i64 4, i64 0 }) - %t135 = insertvalue %S.gen.Val %t133, %S.ast.Type %t134, 1 - call void @finch_str_drop(ptr %a79) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a38) - call void @finch_str_drop(ptr %a35) - call void @finch_str_drop(ptr %a32) - call void @finch_str_drop(ptr %a29) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t135 -endif6653: - %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 0, %t139 - br i1 %t140, label %range6664, label %inrange6665 -range6664: - call void @finch_panic_index(ptr @.str.4316, i64 3652, i64 0, i64 %t139) - unreachable -inrange6665: - %t141 = extractvalue { ptr, i64, i64 } %t138, 0 - %t142 = getelementptr inbounds %S.ast.Node, ptr %t141, i64 0 - %t143 = load %S.ast.Node, ptr %t142 - %t144 = call %S.gen.Val @finch.gen.expr(ptr %t136, %S.ast.Node %t143) - store %S.gen.Val %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = icmp eq ptr %t146, null - br i1 %t147, label %panic6666, label %ok6667 -panic6666: - call void @finch_panic(ptr @.str.4317, i64 3653, ptr @.str.4318) - unreachable -ok6667: - %t148 = getelementptr inbounds %S.gen.Gen, ptr %t146, i32 0, i32 11 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i32 0, i32 1 - %t150 = load i64, ptr %t149 - store i64 %t150, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load %S.gen.Val, ptr %a145 - call void @finch.gen.hold(ptr %t152, %S.gen.Val %t153) - %t154 = load ptr, ptr %a1 - %t155 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t156 = load { ptr, i64, i64 }, ptr %t155 - %t157 = extractvalue { ptr, i64, i64 } %t156, 1 - %t158 = icmp uge i64 1, %t157 - br i1 %t158, label %range6668, label %inrange6669 -range6668: - call void @finch_panic_index(ptr @.str.4319, i64 3655, i64 1, i64 %t157) - unreachable -inrange6669: - %t159 = extractvalue { ptr, i64, i64 } %t156, 0 - %t160 = getelementptr inbounds %S.ast.Node, ptr %t159, i64 1 - %t161 = load %S.ast.Node, ptr %t160 - %t162 = call %S.gen.Val @finch.gen.expr(ptr %t154, %S.ast.Node %t161) - store %S.gen.Val %t162, ptr %a163 - %t164 = load ptr, ptr %a1 - %t165 = load i64, ptr %a151 - call void @finch.gen.heldEnd(ptr %t164, i64 %t165) - %t166 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4320, i64 2, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from6670 -logic.from6670: - br i1 %t170, label %logic.end6672, label %logic.rhs6671 -logic.rhs6671: - %t171 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.4321, i64 2, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend6673 -logic.rend6673: - br label %logic.end6672 -logic.end6672: - %t176 = phi i1 [ true, %logic.from6670 ], [ %t175, %logic.rend6673 ] - br label %logic.from6674 -logic.from6674: - br i1 %t176, label %logic.end6676, label %logic.rhs6675 -logic.rhs6675: - %t177 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.4322, i64 1, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend6677 -logic.rend6677: - br label %logic.end6676 -logic.end6676: - %t182 = phi i1 [ true, %logic.from6674 ], [ %t181, %logic.rend6677 ] - br label %logic.from6678 -logic.from6678: - br i1 %t182, label %logic.end6680, label %logic.rhs6679 -logic.rhs6679: - %t183 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.4323, i64 2, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend6681 -logic.rend6681: - br label %logic.end6680 -logic.end6680: - %t188 = phi i1 [ true, %logic.from6678 ], [ %t187, %logic.rend6681 ] - br label %logic.from6682 -logic.from6682: - br i1 %t188, label %logic.end6684, label %logic.rhs6683 -logic.rhs6683: - %t189 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t189, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.4324, i64 1, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br label %logic.rend6685 -logic.rend6685: - br label %logic.end6684 -logic.end6684: - %t194 = phi i1 [ true, %logic.from6682 ], [ %t193, %logic.rend6685 ] - br label %logic.from6686 -logic.from6686: - br i1 %t194, label %logic.end6688, label %logic.rhs6687 -logic.rhs6687: - %t195 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t195, ptr %a196 - store { ptr, i64, i64 } { ptr @.str.4325, i64 2, i64 0 }, ptr %a197 - %t198 = call i32 @finch_str_eq(ptr %a196, ptr %a197) - %t199 = icmp ne i32 %t198, 0 - br label %logic.rend6689 -logic.rend6689: - br label %logic.end6688 -logic.end6688: - %t200 = phi i1 [ true, %logic.from6686 ], [ %t199, %logic.rend6689 ] - br i1 %t200, label %then6690, label %endif6692 -then6690: - %t201 = load ptr, ptr %a1 - %t202 = load { ptr, i64, i64 }, ptr %a8 - %t203 = load %S.gen.Val, ptr %a145 - %t204 = load %S.gen.Val, ptr %a163 - %t205 = load %S.ast.Node, ptr %a2 - %t206 = call %S.gen.Val @finch.gen.compare(ptr %t201, { ptr, i64, i64 } %t202, %S.gen.Val %t203, %S.gen.Val %t204, %S.ast.Node %t205) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t206 -endif6692: - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a8 - %t209 = load %S.gen.Val, ptr %a145 - %t210 = load %S.gen.Val, ptr %a163 - %t211 = load %S.ast.Node, ptr %a2 - %t212 = call %S.gen.Val @finch.gen.arith(ptr %t207, { ptr, i64, i64 } %t208, %S.gen.Val %t209, %S.gen.Val %t210, %S.ast.Node %t211) - call void @finch.drop.S_gen_Val(ptr %a163) - call void @finch.drop.S_gen_Val(ptr %a145) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t212 -} - -define internal %S.gen.Val @finch.gen.arrayLit(ptr %p0, %S.ast.Node %p1, %S.ast.Type %p2) { -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 - %a23 = alloca %S.ast.Type, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca i64, align 16 - %a38 = alloca i64, align 16 - %a46 = alloca %S.ast.Node, align 16 - %a47 = alloca %S.gen.Val, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca %S.gen.Val, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a62 = alloca %S.ast.Type, align 16 - %a65 = alloca %S.ast.Type, align 16 - %a71 = alloca %S.gen.Val, align 16 - %a78 = alloca %S.gen.Val, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca %S.ast.Type, align 16 - %a103 = alloca %S.ast.Type, align 16 - %a107 = alloca %S.gen.Val, align 16 - %a114 = alloca %S.ast.Type, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %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 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca %S.ast.Type, align 16 - %a290 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %t4 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4326, 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.4327, 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 %then6693, label %else6694 -then6693: - %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 %range6696, label %inrange6697 -range6696: - call void @finch_panic_index(ptr @.str.4328, i64 3666, i64 0, i64 %t14) - unreachable -inrange6697: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds %S.ast.Type, ptr %t16, i64 0 - %t18 = load %S.ast.Type, ptr %t17 - store %S.ast.Type %t18, ptr %a19 - call void @finch.copy.S_ast_Type(ptr %a20, ptr %a19) - %t21 = load %S.ast.Type, ptr %a20 - %t22 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t21, ptr %a5 - store %S.ast.Type %t22, ptr %a23 - call void @finch.drop.S_ast_Type(ptr %a23) - br label %endif6695 -else6694: - %t24 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t24, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = icmp eq i64 %t26, 0 - br i1 %t27, label %then6698, label %endif6700 -then6698: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t28, %S.ast.Node %t29, { ptr, i64, i64 } { ptr @.str.4329, i64 47, i64 0 }) - br label %endif6700 -endif6700: - br label %endif6695 -endif6695: - store { ptr, i64, i64 } zeroinitializer, ptr %a30 - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic6701, label %ok6702 -panic6701: - call void @finch_panic(ptr @.str.4330, i64 3671, ptr @.str.4331) - unreachable -ok6702: - %t33 = getelementptr inbounds %S.gen.Gen, ptr %t31, i32 0, i32 11 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i32 0, i32 1 - %t35 = load i64, ptr %t34 - store i64 %t35, ptr %a36 - %t37 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - store i64 0, ptr %a38 - br label %each.cond6703 -each.cond6703: - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t37, i32 0, i32 1 - %t40 = load i64, ptr %t39 - %t41 = load i64, ptr %a38 - %t42 = icmp slt i64 %t41, %t40 - br i1 %t42, label %each.body6704, label %each.end6706 -each.body6704: - %t43 = load ptr, ptr %t37 - %t44 = getelementptr inbounds %S.ast.Node, ptr %t43, i64 %t41 - %t45 = load %S.ast.Node, ptr %t44 - store %S.ast.Node %t45, ptr %a46 - store %S.gen.Val zeroinitializer, ptr %a47 - %t48 = getelementptr inbounds %S.ast.Type, ptr %a5, i32 0, i32 0 - %t49 = load { ptr, i64, i64 }, ptr %t48 - store { ptr, i64, i64 } %t49, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4332, i64 4, i64 0 }, ptr %a51 - %t52 = call i32 @finch_str_eq(ptr %a50, ptr %a51) - %t53 = icmp ne i32 %t52, 0 - br i1 %t53, label %then6707, label %else6708 -then6707: - %t54 = load ptr, ptr %a1 - %t55 = load %S.ast.Node, ptr %a46 - %t56 = call %S.gen.Val @finch.gen.expr(ptr %t54, %S.ast.Node %t55) - %t57 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t56, ptr %a47 - store %S.gen.Val %t57, ptr %a58 - call void @finch.drop.S_gen_Val(ptr %a58) - %t59 = getelementptr inbounds %S.gen.Val, ptr %a47, i32 0, i32 1 - %t60 = load %S.ast.Type, ptr %t59 - store %S.ast.Type %t60, ptr %a61 - call void @finch.copy.S_ast_Type(ptr %a62, ptr %a61) - %t63 = load %S.ast.Type, ptr %a62 - %t64 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t63, ptr %a5 - store %S.ast.Type %t64, ptr %a65 - call void @finch.drop.S_ast_Type(ptr %a65) - br label %endif6709 -else6708: - %t66 = load ptr, ptr %a1 - %t67 = load %S.ast.Node, ptr %a46 - %t68 = load %S.ast.Type, ptr %a5 - %t69 = call %S.gen.Val @finch.gen.exprWant(ptr %t66, %S.ast.Node %t67, %S.ast.Type %t68) - %t70 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t69, ptr %a47 - store %S.gen.Val %t70, ptr %a71 - call void @finch.drop.S_gen_Val(ptr %a71) - br label %endif6709 -endif6709: - %t72 = load ptr, ptr %a1 - %t73 = load %S.gen.Val, ptr %a47 - %t74 = load %S.ast.Type, ptr %a5 - %t75 = load %S.ast.Node, ptr %a46 - %t76 = call %S.gen.Val @finch.gen.coerce(ptr %t72, %S.gen.Val %t73, %S.ast.Type %t74, %S.ast.Node %t75, { ptr, i64, i64 } { ptr @.str.4333, i64 27, i64 0 }) - %t77 = load %S.gen.Val, ptr %a47 - store %S.gen.Val %t76, ptr %a47 - store %S.gen.Val %t77, ptr %a78 - call void @finch.drop.S_gen_Val(ptr %a78) - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t80 = load ptr, ptr %a1 - %t81 = load %S.gen.Val, ptr %a47 - %t82 = call { ptr, i64, i64 } @finch.gen.own(ptr %t80, %S.gen.Val %t81) - %t83 = load i64, ptr %t79 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %a30, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %a30 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t79 - %t87 = load ptr, ptr %a1 - %t88 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t89 = load i64, ptr %t88 - %t90 = sub i64 %t89, 1 - %t91 = load { ptr, i64, i64 }, ptr %a30 - %t92 = extractvalue { ptr, i64, i64 } %t91, 1 - %t93 = icmp uge i64 %t90, %t92 - br i1 %t93, label %range6710, label %inrange6711 -range6710: - call void @finch_panic_index(ptr @.str.4334, i64 3682, i64 %t90, i64 %t92) - unreachable -inrange6711: - %t94 = extractvalue { ptr, i64, i64 } %t91, 0 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i64 %t90 - %t96 = load { ptr, i64, i64 }, ptr %t95 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_copy(ptr %a98, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - %t100 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t99, 0 - %t101 = load %S.ast.Type, ptr %a5 - store %S.ast.Type %t101, ptr %a102 - call void @finch.copy.S_ast_Type(ptr %a103, ptr %a102) - %t104 = load %S.ast.Type, ptr %a103 - %t105 = insertvalue %S.gen.Val %t100, %S.ast.Type %t104, 1 - %t106 = insertvalue %S.gen.Val %t105, i1 true, 2 - call void @finch.gen.hold(ptr %t87, %S.gen.Val %t106) - store %S.gen.Val %t106, ptr %a107 - call void @finch.drop.S_gen_Val(ptr %a107) - call void @finch.drop.S_gen_Val(ptr %a47) - br label %each.step6705 -each.step6705: - %t108 = load i64, ptr %a38 - %t109 = add i64 %t108, 1 - store i64 %t109, ptr %a38 - br label %each.cond6703 -each.end6706: - %t110 = load ptr, ptr %a1 - %t111 = load i64, ptr %a36 - call void @finch.gen.heldEnd(ptr %t110, i64 %t111) - %t112 = load %S.ast.Type, ptr %a5 - %t113 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t112) - store %S.ast.Type %t113, ptr %a114 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t116 = load i64, ptr %t115 - call void @finch_str_from_int(ptr %a117, i64 %t116) - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4335, i64 4, i64 0 }, ptr %a120 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t122 = load i64, ptr %t121 - %t123 = icmp sgt i64 %t122, 0 - br i1 %t123, label %then6712, label %endif6714 -then6712: - %t124 = load ptr, ptr %a1 - %t125 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.4336, i64 8, i64 0 }, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - %t129 = load { ptr, i64, i64 }, ptr %a126 - store { ptr, i64, i64 } %t129, ptr %a131 - store { ptr, i64, i64 } { ptr @.str.4337, i64 2, i64 0 }, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - %t135 = load ptr, ptr %a1 - %t136 = load %S.ast.Type, ptr %a5 - %t137 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t135, %S.ast.Type %t136) - store { ptr, i64, i64 } %t134, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t134, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - %t144 = call { ptr, i64, i64 } @finch.gen.op(ptr %t124, { ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t143, ptr %a145 - call void @finch_str_drop(ptr %a145) - store { ptr, i64, i64 } %t144, ptr %a146 - %t147 = load ptr, ptr %a1 - %t148 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4338, i64 26, i64 0 }, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.4339, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - %t158 = call { ptr, i64, i64 } @finch.gen.op(ptr %t147, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t158, ptr %a120 - store { ptr, i64, i64 } %t160, ptr %a161 - call void @finch_str_drop(ptr %a161) - call void @finch_str_drop(ptr %a146) - br label %endif6714 -endif6714: - %t162 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t163 = load i64, ptr %t162 - store i64 0, ptr %a164 - br label %for.cond6715 -for.cond6715: - %t165 = load i64, ptr %a164 - %t166 = icmp slt i64 %t165, %t163 - br i1 %t166, label %for.body6716, label %for.end6718 -for.body6716: - %t167 = load ptr, ptr %a1 - %t168 = load ptr, ptr %a1 - %t169 = load %S.ast.Type, ptr %a5 - %t170 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t168, %S.ast.Type %t169) - store { ptr, i64, i64 } { ptr @.str.4340, i64 23, i64 0 }, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t175, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4341, i64 6, i64 0 }, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - store { ptr, i64, i64 } %t175, ptr %a179 - call void @finch_str_drop(ptr %a179) - %t180 = load { ptr, i64, i64 }, ptr %a176 - %t181 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t180, ptr %a183 - store { ptr, i64, i64 } %t181, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t180, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4342, i64 6, i64 0 }, ptr %a189 - call void @finch_str_concat(ptr %a187, ptr %a188, ptr %a189) - store { ptr, i64, i64 } %t186, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a187 - %t192 = load i64, ptr %a164 - call void @finch_str_from_int(ptr %a193, i64 %t192) - %t194 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t191, ptr %a196 - store { ptr, i64, i64 } %t194, ptr %a197 - call void @finch_str_concat(ptr %a195, ptr %a196, ptr %a197) - store { ptr, i64, i64 } %t191, ptr %a198 - call void @finch_str_drop(ptr %a198) - store { ptr, i64, i64 } %t194, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a195 - %t201 = call { ptr, i64, i64 } @finch.gen.op(ptr %t167, { ptr, i64, i64 } %t200) - store { ptr, i64, i64 } %t200, ptr %a202 - call void @finch_str_drop(ptr %a202) - store { ptr, i64, i64 } %t201, ptr %a203 - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.ast.Type, ptr %a5 - %t207 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t205, %S.ast.Type %t206) - %t208 = load i64, ptr %a164 - %t209 = load { ptr, i64, i64 }, ptr %a30 - %t210 = extractvalue { ptr, i64, i64 } %t209, 1 - %t211 = icmp uge i64 %t208, %t210 - br i1 %t211, label %range6719, label %inrange6720 -range6719: - call void @finch_panic_index(ptr @.str.4343, i64 3694, i64 %t208, i64 %t210) - unreachable -inrange6720: - %t212 = extractvalue { ptr, i64, i64 } %t209, 0 - %t213 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i64 %t208 - %t214 = load { ptr, i64, i64 }, ptr %t213 - %t215 = load { ptr, i64, i64 }, ptr %a203 - call void @finch.gen.store(ptr %t204, { ptr, i64, i64 } %t207, { ptr, i64, i64 } %t214, { ptr, i64, i64 } %t215) - store { ptr, i64, i64 } %t207, ptr %a216 - call void @finch_str_drop(ptr %a216) - call void @finch_str_drop(ptr %a203) - br label %for.step6717 -for.step6717: - %t217 = load i64, ptr %a164 - %t218 = add i64 %t217, 1 - store i64 %t218, ptr %a164 - br label %for.cond6715 -for.end6718: - %t219 = load ptr, ptr %a1 - %t220 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4344, i64 41, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - store { ptr, i64, i64 } %t224, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4345, i64 3, i64 0 }, ptr %a227 - call void @finch_str_concat(ptr %a225, ptr %a226, ptr %a227) - store { ptr, i64, i64 } %t224, ptr %a228 - call void @finch_str_drop(ptr %a228) - %t229 = load { ptr, i64, i64 }, ptr %a225 - %t230 = call { ptr, i64, i64 } @finch.gen.op(ptr %t219, { ptr, i64, i64 } %t229) - store { ptr, i64, i64 } %t229, ptr %a231 - call void @finch_str_drop(ptr %a231) - store { ptr, i64, i64 } %t230, ptr %a232 - %t233 = load ptr, ptr %a1 - %t234 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4346, i64 30, i64 0 }, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.4347, i64 6, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t243, ptr %a246 - store { ptr, i64, i64 } %t244, ptr %a247 - call void @finch_str_concat(ptr %a245, ptr %a246, ptr %a247) - store { ptr, i64, i64 } %t243, ptr %a248 - call void @finch_str_drop(ptr %a248) - %t249 = load { ptr, i64, i64 }, ptr %a245 - store { ptr, i64, i64 } %t249, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4348, i64 3, i64 0 }, ptr %a252 - call void @finch_str_concat(ptr %a250, ptr %a251, ptr %a252) - store { ptr, i64, i64 } %t249, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a250 - %t255 = call { ptr, i64, i64 } @finch.gen.op(ptr %t233, { ptr, i64, i64 } %t254) - store { ptr, i64, i64 } %t254, ptr %a256 - call void @finch_str_drop(ptr %a256) - store { ptr, i64, i64 } %t255, ptr %a257 - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a257 - store { ptr, i64, i64 } { ptr @.str.4349, i64 30, i64 0 }, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4350, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a119 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4351, i64 3, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t279) - store { ptr, i64, i64 } %t279, ptr %a281 - call void @finch_str_drop(ptr %a281) - store { ptr, i64, i64 } %t280, ptr %a282 - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t283, ptr %a284 - call void @finch_str_copy(ptr %a285, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - %t287 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t286, 0 - %t288 = load %S.ast.Type, ptr %a114 - store %S.ast.Type %t288, ptr %a289 - call void @finch.copy.S_ast_Type(ptr %a290, ptr %a289) - %t291 = load %S.ast.Type, ptr %a290 - %t292 = insertvalue %S.gen.Val %t287, %S.ast.Type %t291, 1 - %t293 = insertvalue %S.gen.Val %t292, i1 true, 2 - call void @finch_str_drop(ptr %a282) - call void @finch_str_drop(ptr %a257) - call void @finch_str_drop(ptr %a232) - call void @finch_str_drop(ptr %a120) - call void @finch_str_drop(ptr %a119) - call void @finch.drop.S_ast_Type(ptr %a114) - call void @finch.drop.arr_str(ptr %a30) - call void @finch.drop.S_ast_Type(ptr %a5) - ret %S.gen.Val %t293 -} - -define internal void @finch.copy.S_gen_Place(ptr %dst, ptr %src) { -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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca %S.gen.Ref, align 16 - %a42 = alloca %S.gen.Place, align 16 - %a43 = alloca %S.gen.Place, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4352, 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.from6721 -logic.from6721: - br i1 %t9, label %logic.rhs6722, label %logic.end6723 -logic.rhs6722: - %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.rend6724 -logic.rend6724: - br label %logic.end6723 -logic.end6723: - %t15 = phi i1 [ false, %logic.from6721 ], [ %t14, %logic.rend6724 ] - br i1 %t15, label %then6725, label %endif6727 -then6725: - %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.4353, 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.4354, i64 1, i64 0 }, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - call void @finch.gen.fail(ptr %t16, %S.ast.Node %t17, { ptr, i64, i64 } %t28) - store { ptr, i64, i64 } %t28, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %endif6727 -endif6727: - %t30 = load ptr, ptr %a1 - %t31 = load %S.ast.Node, ptr %a2 - %t32 = load i1, ptr %a3 - %t33 = call %S.gen.Ref @finch.gen.ref(ptr %t30, %S.ast.Node %t31, i1 %t32) - store %S.gen.Ref %t33, ptr %a34 - %t35 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 0 - %t36 = load i1, ptr %t35 - %t37 = xor i1 %t36, true - br i1 %t37, label %then6728, label %endif6730 -then6728: - %t38 = load ptr, ptr %a1 - %t39 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t38, %S.ast.Node %t39, { ptr, i64, i64 } { ptr @.str.4355, i64 60, i64 0 }) - br label %endif6730 -endif6730: - %t40 = getelementptr inbounds %S.gen.Ref, ptr %a34, i32 0, i32 1 - %t41 = load %S.gen.Place, ptr %t40 - store %S.gen.Place %t41, ptr %a42 - call void @finch.copy.S_gen_Place(ptr %a43, ptr %a42) - %t44 = load %S.gen.Place, ptr %a43 - call void @finch.drop.S_gen_Ref(ptr %a34) - ret %S.gen.Place %t44 -} - -define internal void @finch.copy.S_cimport_CConst(ptr %dst, ptr %src) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca %S.ast.Type, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca i64, align 16 - %a190 = alloca i64, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a256 = alloca %S.ast.Type, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca %S.gen.Var, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca %S.ast.Type, align 16 - %a359 = alloca %S.ast.Type, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %t4 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t5 = load { ptr, i64, i64 }, ptr %t4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4356, 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 %then6731, label %endif6733 -then6731: - %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.from6734 -logic.from6734: - br i1 %t16, label %logic.rhs6735, label %logic.end6736 -logic.rhs6735: - %t17 = load ptr, ptr %a1 - %t18 = icmp eq ptr %t17, null - br i1 %t18, label %panic6737, label %ok6738 -panic6737: - call void @finch_panic(ptr @.str.4357, i64 3718, ptr @.str.4358) - unreachable -ok6738: - %t19 = getelementptr inbounds %S.gen.Gen, ptr %t17, i32 0, i32 26 - %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.rend6739 -logic.rend6739: - br label %logic.end6736 -logic.end6736: - %t26 = phi i1 [ false, %logic.from6734 ], [ %t25, %logic.rend6739 ] - br i1 %t26, label %then6740, label %endif6742 -then6740: - %t27 = load ptr, ptr %a1 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic6743, label %ok6744 -panic6743: - call void @finch_panic(ptr @.str.4359, i64 3719, ptr @.str.4360) - unreachable -ok6744: - %t29 = getelementptr inbounds %S.gen.Gen, ptr %t27, i32 0, i32 26 - %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.missing6745, label %map.found6746 -map.missing6745: - 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.4361, i64 3719, ptr %a36) - unreachable -map.found6746: - %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 %then6747, label %endif6749 -then6747: - %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.4362, i64 5, i64 0 }) - %t55 = insertvalue %S.gen.Val %t53, %S.ast.Type %t54, 1 - %t56 = insertvalue %S.gen.Val %t55, i1 true, 3 - %t57 = insertvalue %S.gen.Ref %t49, %S.gen.Val %t56, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t57 -endif6749: - %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.4363, i64 3, i64 0 }) - %t65 = insertvalue %S.gen.Val %t63, %S.ast.Type %t64, 1 - %t66 = insertvalue %S.gen.Val %t65, i1 true, 3 - %t67 = insertvalue %S.gen.Ref %t58, %S.gen.Val %t66, 2 - call void @finch.drop.S_cimport_CConst(ptr %a46) - ret %S.gen.Ref %t67 -endif6742: - %t68 = load i64, ptr %a14 - %t69 = icmp slt i64 %t68, 0 - br label %logic.from6750 -logic.from6750: - br i1 %t69, label %logic.rhs6751, label %logic.end6752 -logic.rhs6751: - %t70 = load ptr, ptr %a1 - %t71 = icmp eq ptr %t70, null - br i1 %t71, label %panic6753, label %ok6754 -panic6753: - call void @finch_panic(ptr @.str.4364, i64 3726, ptr @.str.4365) - unreachable -ok6754: - %t72 = getelementptr inbounds %S.gen.Gen, ptr %t70, i32 0, i32 26 - %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.rend6755 -logic.rend6755: - br label %logic.end6752 -logic.end6752: - %t80 = phi i1 [ false, %logic.from6750 ], [ %t79, %logic.rend6755 ] - br label %logic.from6756 -logic.from6756: - br i1 %t80, label %logic.rhs6757, label %logic.end6758 -logic.rhs6757: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic6759, label %ok6760 -panic6759: - call void @finch_panic(ptr @.str.4366, i64 3726, ptr @.str.4367) - unreachable -ok6760: - %t83 = getelementptr inbounds %S.gen.Gen, ptr %t81, i32 0, i32 26 - %t84 = getelementptr inbounds %S.cimport.CImports, ptr %t83, i32 0, i32 0 - store { ptr, i64, i64 } { ptr @.str.4368, 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.rend6761 -logic.rend6761: - br label %logic.end6758 -logic.end6758: - %t88 = phi i1 [ false, %logic.from6756 ], [ %t87, %logic.rend6761 ] - br label %logic.from6762 -logic.from6762: - br i1 %t88, label %logic.rhs6763, label %logic.end6764 -logic.rhs6763: - %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.4369, 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.from6765 -logic.from6765: - br i1 %t94, label %logic.end6767, label %logic.rhs6766 -logic.rhs6766: - %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.4370, 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.rend6768 -logic.rend6768: - br label %logic.end6767 -logic.end6767: - %t101 = phi i1 [ true, %logic.from6765 ], [ %t100, %logic.rend6768 ] - br label %logic.from6769 -logic.from6769: - br i1 %t101, label %logic.end6771, label %logic.rhs6770 -logic.rhs6770: - %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.4371, 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.rend6772 -logic.rend6772: - br label %logic.end6771 -logic.end6771: - %t108 = phi i1 [ true, %logic.from6769 ], [ %t107, %logic.rend6772 ] - br label %logic.rend6773 -logic.rend6773: - br label %logic.end6764 -logic.end6764: - %t109 = phi i1 [ false, %logic.from6762 ], [ %t108, %logic.rend6773 ] - br i1 %t109, label %then6774, label %endif6776 -then6774: - store { ptr, i64, i64 } { ptr @.str.4372, 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.4373, 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 %then6777, label %else6778 -then6777: - %t117 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4374, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif6779 -else6778: - %t119 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t120 = load { ptr, i64, i64 }, ptr %t119 - store { ptr, i64, i64 } %t120, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.4375, i64 6, i64 0 }, ptr %a122 - %t123 = call i32 @finch_str_eq(ptr %a121, ptr %a122) - %t124 = icmp ne i32 %t123, 0 - br i1 %t124, label %then6780, label %endif6782 -then6780: - %t125 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4376, i64 1, i64 0 }, ptr %a110 - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - br label %endif6782 -endif6782: - br label %endif6779 -endif6779: - %t127 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t128 = load ptr, ptr %a1 - %t129 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } { ptr @.str.4377, i64 31, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t133, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.4378, i64 1, i64 0 }, ptr %a136 - call void @finch_str_concat(ptr %a134, ptr %a135, ptr %a136) - store { ptr, i64, i64 } %t133, ptr %a137 - call void @finch_str_drop(ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a134 - %t139 = call { ptr, i64, i64 } @finch.gen.op(ptr %t128, { ptr, i64, i64 } %t138) - store { ptr, i64, i64 } %t138, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t142 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4379, i64 3, i64 0 }) - %t143 = insertvalue %S.gen.Val %t141, %S.ast.Type %t142, 1 - %t144 = insertvalue %S.gen.Ref %t127, %S.gen.Val %t143, 2 - call void @finch_str_drop(ptr %a110) - ret %S.gen.Ref %t144 -endif6776: - %t145 = load i64, ptr %a14 - %t146 = icmp slt i64 %t145, 0 - br label %logic.from6783 -logic.from6783: - br i1 %t146, label %logic.rhs6784, label %logic.end6785 -logic.rhs6784: - %t147 = load ptr, ptr %a1 - %t148 = icmp eq ptr %t147, null - br i1 %t148, label %panic6786, label %ok6787 -panic6786: - call void @finch_panic(ptr @.str.4380, i64 3735, ptr @.str.4381) - unreachable -ok6787: - %t149 = getelementptr inbounds %S.gen.Gen, ptr %t147, i32 0, i32 26 - %t150 = getelementptr inbounds %S.cimport.CImports, ptr %t149, i32 0, i32 2 - %t151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t152 = load { ptr, i64, i64 }, ptr %t151 - store { ptr, i64, i64 } %t152, ptr %a153 - %t154 = call i64 @finch_map_find(ptr %t150, ptr %a153, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t155 = icmp sge i64 %t154, 0 - br label %logic.rend6788 -logic.rend6788: - br label %logic.end6785 -logic.end6785: - %t156 = phi i1 [ false, %logic.from6783 ], [ %t155, %logic.rend6788 ] - br i1 %t156, label %then6789, label %endif6791 -then6789: - %t157 = load ptr, ptr %a1 - %t158 = load ptr, ptr %a1 - %t159 = icmp eq ptr %t158, null - br i1 %t159, label %panic6792, label %ok6793 -panic6792: - call void @finch_panic(ptr @.str.4382, i64 3736, ptr @.str.4383) - unreachable -ok6793: - %t160 = getelementptr inbounds %S.gen.Gen, ptr %t158, i32 0, i32 26 - %t161 = getelementptr inbounds %S.cimport.CImports, ptr %t160, i32 0, i32 2 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - store { ptr, i64, i64 } %t163, ptr %a164 - %t165 = call i64 @finch_map_find(ptr %t161, ptr %a164, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.ast.Type }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t166 = icmp slt i64 %t165, 0 - br i1 %t166, label %map.missing6794, label %map.found6795 -map.missing6794: - store { ptr, i64, i64 } zeroinitializer, ptr %a167 - store { ptr, i64, i64 } %t163, ptr %a168 - call void @finch_buf_str(ptr %a167, ptr %a168, i32 1) - call void @finch_map_missing(ptr @.str.4384, i64 3736, ptr %a167) - unreachable -map.found6795: - %t169 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t161, i32 0, i32 0 - %t170 = load ptr, ptr %t169 - %t171 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t170, i64 %t165 - %t172 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t171, i32 0, i32 2 - %t173 = load %S.ast.Type, ptr %t172 - %t174 = load %S.ast.Node, ptr %a2 - %t175 = call %S.ast.Type @finch.gen.resolve(ptr %t157, %S.ast.Type %t173, %S.ast.Node %t174) - store %S.ast.Type %t175, ptr %a176 - %t177 = load ptr, ptr %a1 - %t178 = icmp eq ptr %t177, null - br i1 %t178, label %panic6796, label %ok6797 -panic6796: - call void @finch_panic(ptr @.str.4385, i64 3737, ptr @.str.4386) - unreachable -ok6797: - %t179 = getelementptr inbounds %S.gen.Gen, ptr %t177, i32 0, i32 40 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t181 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } { ptr @.str.4387, i64 2, i64 0 }, ptr %a184 - store { ptr, i64, i64 } %t182, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a183 - store i64 -1, ptr %a187 - %t188 = load i64, ptr %t180 - %t189 = load ptr, ptr %t179 - store i64 0, ptr %a190 - br label %find.cond6798 -find.cond6798: - %t191 = load i64, ptr %a190 - %t192 = icmp slt i64 %t191, %t188 - br i1 %t192, label %find.body6799, label %find.end6802 -find.body6799: - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t189, i64 %t191 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } %t186, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br i1 %t198, label %find.hit6800, label %find.next6801 -find.hit6800: - store i64 %t191, ptr %a187 - br label %find.end6802 -find.next6801: - %t199 = add i64 %t191, 1 - store i64 %t199, ptr %a190 - br label %find.cond6798 -find.end6802: - store { ptr, i64, i64 } %t186, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load i64, ptr %a187 - %t202 = icmp sge i64 %t201, 0 - %t203 = xor i1 %t202, true - br i1 %t203, label %then6803, label %endif6805 -then6803: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic6806, label %ok6807 -panic6806: - call void @finch_panic(ptr @.str.4388, i64 3738, ptr @.str.4389) - unreachable -ok6807: - %t206 = getelementptr inbounds %S.gen.Gen, ptr %t204, i32 0, i32 40 - %t207 = getelementptr inbounds { ptr, i64, i64 }, ptr %t206, i32 0, i32 1 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t209 = load { ptr, i64, i64 }, ptr %t208 - store { ptr, i64, i64 } { ptr @.str.4390, i64 2, i64 0 }, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - %t213 = load { ptr, i64, i64 }, ptr %a210 - %t214 = load i64, ptr %t207 - %t215 = add i64 %t214, 1 - call void @finch_arr_reserve(ptr %t206, i64 %t215, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t216 = load ptr, ptr %t206 - %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %t216, i64 %t214 - store { ptr, i64, i64 } %t213, ptr %t217 - store i64 %t215, ptr %t207 - %t218 = load ptr, ptr %a1 - %t219 = icmp eq ptr %t218, null - br i1 %t219, label %panic6808, label %ok6809 -panic6808: - call void @finch_panic(ptr @.str.4391, i64 3739, ptr @.str.4392) - unreachable -ok6809: - %t220 = getelementptr inbounds %S.gen.Gen, ptr %t218, i32 0, i32 2 - %t221 = getelementptr inbounds { ptr, i64, i64 }, ptr %t220, i32 0, i32 1 - %t222 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t223 = load { ptr, i64, i64 }, ptr %t222 - store { ptr, i64, i64 } { ptr @.str.4393, i64 1, i64 0 }, ptr %a225 - store { ptr, i64, i64 } %t223, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.4394, i64 19, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load ptr, ptr %a1 - %t234 = load %S.ast.Type, ptr %a176 - %t235 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t233, %S.ast.Type %t234) - store { ptr, i64, i64 } %t232, ptr %a237 - store { ptr, i64, i64 } %t235, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t232, ptr %a239 - call void @finch_str_drop(ptr %a239) - store { ptr, i64, i64 } %t235, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a236 - %t242 = load i64, ptr %t221 - %t243 = add i64 %t242, 1 - call void @finch_arr_reserve(ptr %t220, i64 %t243, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t244 = load ptr, ptr %t220 - %t245 = getelementptr inbounds { ptr, i64, i64 }, ptr %t244, i64 %t242 - store { ptr, i64, i64 } %t241, ptr %t245 - store i64 %t243, ptr %t221 - br label %endif6805 -endif6805: - %t246 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t247 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t248 = load { ptr, i64, i64 }, ptr %t247 - store { ptr, i64, i64 } { ptr @.str.4395, i64 1, i64 0 }, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - %t252 = load { ptr, i64, i64 }, ptr %a249 - %t253 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t252, 0 - %t254 = load %S.ast.Type, ptr %a176 - store %S.ast.Type %t254, ptr %a255 - call void @finch.copy.S_ast_Type(ptr %a256, ptr %a255) - %t257 = load %S.ast.Type, ptr %a256 - %t258 = insertvalue %S.gen.Place %t253, %S.ast.Type %t257, 1 - %t259 = insertvalue %S.gen.Ref %t246, %S.gen.Place %t258, 1 - call void @finch.drop.S_ast_Type(ptr %a176) - ret %S.gen.Ref %t259 -endif6791: - %t260 = load i64, ptr %a14 - %t261 = icmp slt i64 %t260, 0 - br i1 %t261, label %then6810, label %endif6812 -then6810: - %t262 = load ptr, ptr %a1 - %t263 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call i1 @finch.gen.imports(ptr %t262, { ptr, i64, i64 } %t264) - br i1 %t265, label %then6813, label %endif6815 -then6813: - %t266 = load ptr, ptr %a1 - %t267 = load %S.ast.Node, ptr %a2 - %t268 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t269 = load { ptr, i64, i64 }, ptr %t268 - store { ptr, i64, i64 } { ptr @.str.4396, i64 1, i64 0 }, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t273, ptr %a275 - store { ptr, i64, i64 } { ptr @.str.4397, i64 43, i64 0 }, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t273, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - %t279 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t280 = load { ptr, i64, i64 }, ptr %t279 - store { ptr, i64, i64 } %t278, ptr %a282 - store { ptr, i64, i64 } %t280, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a281 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.4398, i64 10, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.fail(ptr %t266, %S.ast.Node %t267, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif6815 -endif6815: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - %t294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t295 = load { ptr, i64, i64 }, ptr %t294 - store { ptr, i64, i64 } { ptr @.str.4399, i64 28, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t295, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - %t299 = load { ptr, i64, i64 }, ptr %a296 - store { ptr, i64, i64 } %t299, ptr %a301 - store { ptr, i64, i64 } { ptr @.str.4400, i64 1, i64 0 }, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t299, ptr %a303 - call void @finch_str_drop(ptr %a303) - %t304 = load { ptr, i64, i64 }, ptr %a300 - call void @finch.gen.fail(ptr %t292, %S.ast.Node %t293, { ptr, i64, i64 } %t304) - store { ptr, i64, i64 } %t304, ptr %a305 - call void @finch_str_drop(ptr %a305) - br label %endif6812 -endif6812: - %t306 = load ptr, ptr %a1 - %t307 = load i64, ptr %a14 - %t308 = call %S.gen.Var @finch.gen.varAt(ptr %t306, i64 %t307) - store %S.gen.Var %t308, ptr %a309 - %t310 = load ptr, ptr %a1 - %t311 = load %S.ast.Node, ptr %a2 - %t312 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t313 = load i64, ptr %t312 - %t314 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t315 = getelementptr inbounds { ptr, i64, i64 }, ptr %t314, i32 0, i32 1 - %t316 = load i64, ptr %t315 - %t317 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t318 = load %S.ast.Type, ptr %t317 - %t319 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t318) - store { ptr, i64, i64 } { ptr @.str.4401, i64 9, i64 0 }, ptr %a321 - store { ptr, i64, i64 } %t319, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t324, ptr %a326 - store { ptr, i64, i64 } { ptr @.str.4402, i64 1, i64 0 }, ptr %a327 - call void @finch_str_concat(ptr %a325, ptr %a326, ptr %a327) - store { ptr, i64, i64 } %t324, ptr %a328 - call void @finch_str_drop(ptr %a328) - %t329 = load { ptr, i64, i64 }, ptr %a325 - %t330 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t331 = load { ptr, i64, i64 }, ptr %t330 - store { ptr, i64, i64 } %t329, ptr %a333 - store { ptr, i64, i64 } %t331, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t329, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.4403, i64 4, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 7 - %t343 = load { ptr, i64, i64 }, ptr %t342 - %t344 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 8 - %t345 = load i64, ptr %t344 - %t346 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 9 - %t347 = load i64, ptr %t346 - call void @finch.gen.noteRef(ptr %t310, %S.ast.Node %t311, i64 %t313, i64 %t316, { ptr, i64, i64 } %t341, { ptr, i64, i64 } %t343, i64 %t345, i64 %t347) - store { ptr, i64, i64 } %t341, ptr %a348 - call void @finch_str_drop(ptr %a348) - %t349 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t350 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 2 - %t351 = load { ptr, i64, i64 }, ptr %t350 - store { ptr, i64, i64 } %t351, ptr %a352 - call void @finch_str_copy(ptr %a353, ptr %a352) - %t354 = load { ptr, i64, i64 }, ptr %a353 - %t355 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t354, 0 - %t356 = getelementptr inbounds %S.gen.Var, ptr %a309, i32 0, i32 1 - %t357 = load %S.ast.Type, ptr %t356 - store %S.ast.Type %t357, ptr %a358 - call void @finch.copy.S_ast_Type(ptr %a359, ptr %a358) - %t360 = load %S.ast.Type, ptr %a359 - %t361 = insertvalue %S.gen.Place %t355, %S.ast.Type %t360, 1 - %t362 = insertvalue %S.gen.Ref %t349, %S.gen.Place %t361, 1 - call void @finch.drop.S_gen_Var(ptr %a309) - ret %S.gen.Ref %t362 -endif6733: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4404, i64 6, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then6816, label %endif6818 -then6816: - %t369 = load ptr, ptr %a1 - %t370 = load %S.ast.Node, ptr %a2 - %t371 = load i1, ptr %a3 - %t372 = call %S.gen.Ref @finch.gen.member(ptr %t369, %S.ast.Node %t370, i1 %t371) - ret %S.gen.Ref %t372 -endif6818: - %t373 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t374 = load { ptr, i64, i64 }, ptr %t373 - store { ptr, i64, i64 } %t374, ptr %a375 - store { ptr, i64, i64 } { ptr @.str.4405, i64 5, i64 0 }, ptr %a376 - %t377 = call i32 @finch_str_eq(ptr %a375, ptr %a376) - %t378 = icmp ne i32 %t377, 0 - br i1 %t378, label %then6819, label %endif6821 -then6819: - %t379 = load ptr, ptr %a1 - %t380 = load %S.ast.Node, ptr %a2 - %t381 = load i1, ptr %a3 - %t382 = call %S.gen.Ref @finch.gen.index(ptr %t379, %S.ast.Node %t380, i1 %t381) - ret %S.gen.Ref %t382 -endif6821: - %t383 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t384 = load ptr, ptr %a1 - %t385 = load %S.ast.Node, ptr %a2 - %t386 = call %S.gen.Val @finch.gen.expr(ptr %t384, %S.ast.Node %t385) - %t387 = insertvalue %S.gen.Ref %t383, %S.gen.Val %t386, 2 - ret %S.gen.Ref %t387 -} - -define internal { ptr, i64, i64 } @finch.gen.llFloat({ ptr, i64, i64 } %p0) { -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 - %a21 = 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 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %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 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.4407, 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 %then6822, label %endif6824 -then6822: - %t13 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.4408, 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 - %t18 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t17, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_drop(ptr %a19) - br label %endif6824 -endif6824: - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.4410, i64 1, i64 0 }, ptr %a23 - %t24 = call i64 @finch_str_find(ptr %a21, ptr %a23) - %t25 = icmp sge i64 %t24, 0 - %t26 = xor i1 %t25, true - br i1 %t26, label %then6825, label %endif6827 -then6825: - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.4412, i64 1, i64 0 }, ptr %a30 - %t31 = call i64 @finch_str_find(ptr %a28, ptr %a30) - store i64 %t31, ptr %a32 - %t33 = load i64, ptr %a32 - %t34 = icmp slt i64 %t33, 0 - br i1 %t34, label %then6828, label %endif6830 -then6828: - %t35 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.4414, i64 1, i64 0 }, ptr %a38 - %t39 = call i64 @finch_str_find(ptr %a36, ptr %a38) - store i64 %t39, ptr %a32 - br label %endif6830 -endif6830: - %t40 = load i64, ptr %a32 - %t41 = icmp slt i64 %t40, 0 - br i1 %t41, label %then6831, label %endif6833 -then6831: - %t42 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t42, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.4415, i64 2, i64 0 }, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a43 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t46 -endif6833: - %t47 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t47, ptr %a48 - %t50 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a49, ptr %a48, i64 0, i64 %t50, ptr @.str.4416, i64 3776) - %t51 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4417, i64 2, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t57, ptr %a58 - %t60 = load i64, ptr %a32 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t62 = load i64, ptr %t61 - call void @finch_str_sub(ptr %a59, ptr %a58, i64 %t60, i64 %t62, ptr @.str.4418, i64 3776) - %t63 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t56, ptr %a65 - store { ptr, i64, i64 } %t63, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t56, ptr %a67 - call void @finch_str_drop(ptr %a67) - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a64 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t69 -endif6827: - %t70 = load { ptr, i64, i64 }, ptr %a6 - ret { ptr, i64, i64 } %t70 -} - -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.4419, 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.from6834 -logic.from6834: - br i1 %t8, label %logic.rhs6835, label %logic.end6836 -logic.rhs6835: - %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.rend6837 -logic.rend6837: - br label %logic.end6836 -logic.end6836: - %t14 = phi i1 [ false, %logic.from6834 ], [ %t13, %logic.rend6837 ] - br i1 %t14, label %then6838, label %endif6840 -then6838: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6841, label %ok6842 -panic6841: - call void @finch_panic(ptr @.str.4420, i64 3784, ptr @.str.4421) - unreachable -ok6842: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findEnum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6840: - %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.4422, 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.from6843 -logic.from6843: - br i1 %t28, label %logic.rhs6844, label %logic.end6845 -logic.rhs6844: - %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 %range6846, label %inrange6847 -range6846: - call void @finch_panic_index(ptr @.str.4423, i64 3786, i64 0, i64 %t31) - unreachable -inrange6847: - %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.4424, 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.rend6848 -logic.rend6848: - br label %logic.end6845 -logic.end6845: - %t41 = phi i1 [ false, %logic.from6843 ], [ %t40, %logic.rend6848 ] - br label %logic.from6849 -logic.from6849: - br i1 %t41, label %logic.rhs6850, label %logic.end6851 -logic.rhs6850: - %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 %range6852, label %inrange6853 -range6852: - call void @finch_panic_index(ptr @.str.4425, i64 3786, i64 0, i64 %t45) - unreachable -inrange6853: - %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.rend6854 -logic.rend6854: - br label %logic.end6851 -logic.end6851: - %t53 = phi i1 [ false, %logic.from6849 ], [ %t52, %logic.rend6854 ] - br label %logic.from6855 -logic.from6855: - br i1 %t53, label %logic.rhs6856, label %logic.end6857 -logic.rhs6856: - %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 %range6858, label %inrange6859 -range6858: - call void @finch_panic_index(ptr @.str.4426, i64 3786, i64 0, i64 %t57) - unreachable -inrange6859: - %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.rend6860 -logic.rend6860: - br label %logic.end6857 -logic.end6857: - %t64 = phi i1 [ false, %logic.from6855 ], [ %t63, %logic.rend6860 ] - br i1 %t64, label %then6861, label %endif6863 -then6861: - %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 %range6864, label %inrange6865 -range6864: - call void @finch_panic_index(ptr @.str.4427, i64 3787, i64 0, i64 %t68) - unreachable -inrange6865: - %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 -endif6863: - ret i64 -1 -} - -define internal i64 @finch.gen.sumNamed(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.4428, 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.from6866 -logic.from6866: - br i1 %t8, label %logic.rhs6867, label %logic.end6868 -logic.rhs6867: - %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.rend6869 -logic.rend6869: - br label %logic.end6868 -logic.end6868: - %t14 = phi i1 [ false, %logic.from6866 ], [ %t13, %logic.rend6869 ] - br i1 %t14, label %then6870, label %endif6872 -then6870: - %t15 = load ptr, ptr %a1 - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic6873, label %ok6874 -panic6873: - call void @finch_panic(ptr @.str.4429, i64 3795, ptr @.str.4430) - unreachable -ok6874: - %t18 = getelementptr inbounds %S.gen.Gen, ptr %t16, i32 0, i32 14 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %t20 - %t22 = call i64 @finch.gen.findSum(ptr %t15, { ptr, i64, i64 } %t19, { ptr, i64, i64 } %t21) - ret i64 %t22 -endif6872: - %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.4431, 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.from6875 -logic.from6875: - br i1 %t28, label %logic.rhs6876, label %logic.end6877 -logic.rhs6876: - %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 %range6878, label %inrange6879 -range6878: - call void @finch_panic_index(ptr @.str.4432, i64 3797, i64 0, i64 %t31) - unreachable -inrange6879: - %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.4433, 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.rend6880 -logic.rend6880: - br label %logic.end6877 -logic.end6877: - %t41 = phi i1 [ false, %logic.from6875 ], [ %t40, %logic.rend6880 ] - br label %logic.from6881 -logic.from6881: - br i1 %t41, label %logic.rhs6882, label %logic.end6883 -logic.rhs6882: - %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 %range6884, label %inrange6885 -range6884: - call void @finch_panic_index(ptr @.str.4434, i64 3797, i64 0, i64 %t45) - unreachable -inrange6885: - %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.rend6886 -logic.rend6886: - br label %logic.end6883 -logic.end6883: - %t53 = phi i1 [ false, %logic.from6881 ], [ %t52, %logic.rend6886 ] - br label %logic.from6887 -logic.from6887: - br i1 %t53, label %logic.rhs6888, label %logic.end6889 -logic.rhs6888: - %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 %range6890, label %inrange6891 -range6890: - call void @finch_panic_index(ptr @.str.4435, i64 3797, i64 0, i64 %t57) - unreachable -inrange6891: - %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.rend6892 -logic.rend6892: - br label %logic.end6889 -logic.end6889: - %t64 = phi i1 [ false, %logic.from6887 ], [ %t63, %logic.rend6892 ] - br i1 %t64, label %then6893, label %endif6895 -then6893: - %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 %range6896, label %inrange6897 -range6896: - call void @finch_panic_index(ptr @.str.4436, i64 3798, i64 0, i64 %t68) - unreachable -inrange6897: - %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.findSum(ptr %t65, { ptr, i64, i64 } %t73, { ptr, i64, i64 } %t75) - ret i64 %t76 -endif6895: - ret i64 -1 -} - -define internal i64 @finch.gen.sumVariant(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, %S.ast.Node %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca %S.ast.Node, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a16 = alloca %S.gen.SumDef, align 16 - %a18 = alloca %S.gen.SumDef, 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 - %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 - %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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store %S.ast.Node %p3, ptr %a4 - %t5 = load ptr, ptr %a1 - %t6 = icmp eq ptr %t5, null - br i1 %t6, label %panic6898, label %ok6899 -panic6898: - call void @finch_panic(ptr @.str.4437, i64 3804, ptr @.str.4438) - unreachable -ok6899: - %t7 = getelementptr inbounds %S.gen.Gen, ptr %t5, i32 0, i32 22 - %t8 = load i64, ptr %a2 - %t9 = load { ptr, i64, i64 }, ptr %t7 - %t10 = extractvalue { ptr, i64, i64 } %t9, 1 - %t11 = icmp uge i64 %t8, %t10 - br i1 %t11, label %range6900, label %inrange6901 -range6900: - call void @finch_panic_index(ptr @.str.4439, i64 3804, i64 %t8, i64 %t10) - unreachable -inrange6901: - %t12 = extractvalue { ptr, i64, i64 } %t9, 0 - %t13 = getelementptr inbounds %S.gen.SumDef, ptr %t12, i64 %t8 - %t14 = load %S.gen.SumDef, ptr %t13 - store %S.gen.SumDef %t14, ptr %a15 - call void @finch.copy.S_gen_SumDef(ptr %a16, ptr %a15) - %t17 = load %S.gen.SumDef, ptr %a16 - store %S.gen.SumDef %t17, ptr %a18 - %t19 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t19, i32 0, i32 1 - %t21 = load { ptr, i64, i64 }, ptr %a3 - store i64 -1, ptr %a22 - %t23 = load i64, ptr %t20 - %t24 = load ptr, ptr %t19 - store i64 0, ptr %a25 - br label %find.cond6902 -find.cond6902: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6903, label %find.end6906 -find.body6903: - %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.hit6904, label %find.next6905 -find.hit6904: - store i64 %t26, ptr %a22 - br label %find.end6906 -find.next6905: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6902 -find.end6906: - %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 %then6907, label %endif6909 -then6907: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a4 - %t41 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 1 - %t42 = load { ptr, i64, i64 }, ptr %t41 - store { ptr, i64, i64 } { ptr @.str.4440, 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.4441, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t57, ptr %a59 - store { ptr, i64, i64 } { ptr @.str.4442, i64 11, i64 0 }, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t57, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a58 - %t63 = getelementptr inbounds %S.gen.SumDef, ptr %a18, i32 0, i32 2 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4443, i64 2, 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 } %t62, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t62, ptr %a71 - call void @finch_str_drop(ptr %a71) - store { ptr, i64, i64 } %t67, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.4444, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif6909 -endif6909: - %t80 = load i64, ptr %a36 - call void @finch.drop.S_gen_SumDef(ptr %a18) - ret i64 %t80 -} - -define internal %S.gen.Val @finch.gen.sumMake(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.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, align 16 - %a19 = alloca %S.gen.SumDef, align 16 - %a25 = alloca 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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca i64, align 16 - %a178 = alloca %S.ast.Node, align 16 - %a179 = alloca %S.ast.Node, 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 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, 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 %panic6910, label %ok6911 -panic6910: - call void @finch_panic(ptr @.str.4445, i64 3814, ptr @.str.4446) - unreachable -ok6911: - %t8 = getelementptr inbounds %S.gen.Gen, ptr %t6, i32 0, i32 22 - %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 %range6912, label %inrange6913 -range6912: - call void @finch_panic_index(ptr @.str.4447, i64 3814, i64 %t9, i64 %t11) - unreachable -inrange6913: - %t13 = extractvalue { ptr, i64, i64 } %t10, 0 - %t14 = getelementptr inbounds %S.gen.SumDef, ptr %t13, i64 %t9 - %t15 = load %S.gen.SumDef, ptr %t14 - store %S.gen.SumDef %t15, ptr %a16 - call void @finch.copy.S_gen_SumDef(ptr %a17, ptr %a16) - %t18 = load %S.gen.SumDef, ptr %a17 - store %S.gen.SumDef %t18, ptr %a19 - %t20 = load ptr, ptr %a1 - %t21 = load i64, ptr %a2 - %t22 = load { ptr, i64, i64 }, ptr %a3 - %t23 = load %S.ast.Node, ptr %a5 - %t24 = call i64 @finch.gen.sumVariant(ptr %t20, i64 %t21, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t27 = load i64, ptr %t26 - %t28 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t29 = load i64, ptr %a25 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range6914, label %inrange6915 -range6914: - call void @finch_panic_index(ptr @.str.4448, i64 3816, i64 %t29, i64 %t31) - unreachable -inrange6915: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds i64, ptr %t33, i64 %t29 - %t35 = load i64, ptr %t34 - %t36 = icmp ne i64 %t27, %t35 - br i1 %t36, label %then6916, label %endif6918 -then6916: - %t37 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t38 = load i64, ptr %a25 - %t39 = load { ptr, i64, i64 }, ptr %t37 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range6919, label %inrange6920 -range6919: - call void @finch_panic_index(ptr @.str.4449, i64 3817, i64 %t38, i64 %t40) - unreachable -inrange6920: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i64, ptr %t42, i64 %t38 - %t44 = load i64, ptr %t43 - %t45 = icmp eq i64 %t44, 0 - br i1 %t45, label %then6921, label %endif6923 -then6921: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Node, ptr %a5 - %t48 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.4450, i64 22, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a49 - %t53 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t52, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t52, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4451, i64 1, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - %t65 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t64, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a68 - call void @finch_str_concat(ptr %a66, ptr %a67, ptr %a68) - store { ptr, i64, i64 } %t64, ptr %a69 - call void @finch_str_drop(ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a66 - call void @finch.gen.fail(ptr %t46, %S.ast.Node %t47, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif6923 -endif6923: - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Node, ptr %a5 - %t74 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4452, i64 7, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a75 - %t79 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 3 - %t80 = load i64, ptr %a25 - %t81 = load { ptr, i64, i64 }, ptr %t79 - %t82 = extractvalue { ptr, i64, i64 } %t81, 1 - %t83 = icmp uge i64 %t80, %t82 - br i1 %t83, label %range6924, label %inrange6925 -range6924: - call void @finch_panic_index(ptr @.str.4453, i64 3820, i64 %t80, i64 %t82) - unreachable -inrange6925: - %t84 = extractvalue { ptr, i64, i64 } %t81, 0 - %t85 = getelementptr inbounds i64, ptr %t84, i64 %t80 - %t86 = load i64, ptr %t85 - call void @finch_str_from_int(ptr %a87, i64 %t86) - %t88 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t78, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t78, ptr %a92 - call void @finch_str_drop(ptr %a92) - store { ptr, i64, i64 } %t88, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4454, i64 19, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t101 = load i64, ptr %t100 - call void @finch_str_from_int(ptr %a102, i64 %t101) - %t103 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t99, ptr %a105 - store { ptr, i64, i64 } %t103, ptr %a106 - call void @finch_str_concat(ptr %a104, ptr %a105, ptr %a106) - store { ptr, i64, i64 } %t99, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t103, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a104 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4455, i64 2, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - %t115 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %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) - store { ptr, i64, i64 } %t114, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.4456, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4457, i64 5, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - call void @finch.gen.fail(ptr %t72, %S.ast.Node %t73, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif6918 -endif6918: - store { ptr, i64, i64 } zeroinitializer, ptr %a139 - store { ptr, i64, i64 } zeroinitializer, ptr %a140 - %t141 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t142 = insertvalue %S.ast.Node zeroinitializer, { ptr, i64, i64 } { ptr @.str.4458, i64 3, i64 0 }, 0 - %t143 = load i64, ptr %a25 - call void @finch_str_from_int(ptr %a144, i64 %t143) - %t145 = load { ptr, i64, i64 }, ptr %a144 - %t146 = insertvalue %S.ast.Node %t142, { ptr, i64, i64 } %t145, 4 - %t147 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 11 - %t148 = load i64, ptr %t147 - %t149 = insertvalue %S.ast.Node %t146, i64 %t148, 11 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t151 = load i64, ptr %t150 - %t152 = insertvalue %S.ast.Node %t149, i64 %t151, 12 - %t153 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 13 - %t154 = load i64, ptr %t153 - %t155 = insertvalue %S.ast.Node %t152, i64 %t154, 13 - %t156 = load i64, ptr %t141 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t157, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %a139 - %t159 = getelementptr inbounds %S.ast.Node, ptr %t158, i64 %t156 - store %S.ast.Node %t155, ptr %t159 - store i64 %t157, ptr %t141 - %t160 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t161 = load i64, ptr %t160 - %t162 = add i64 %t161, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t162, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t163 = load ptr, ptr %a140 - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %t163, i64 %t161 - store { ptr, i64, i64 } { ptr @.str.4459, i64 3, i64 0 }, ptr %t164 - store i64 %t162, ptr %t160 - %t165 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t166 = load i64, ptr %t165 - store i64 0, ptr %a167 - br label %for.cond6926 -for.cond6926: - %t168 = load i64, ptr %a167 - %t169 = icmp slt i64 %t168, %t166 - br i1 %t169, label %for.body6927, label %for.end6929 -for.body6927: - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %a139, i32 0, i32 1 - %t171 = load i64, ptr %a167 - %t172 = load { ptr, i64, i64 }, ptr %a4 - %t173 = extractvalue { ptr, i64, i64 } %t172, 1 - %t174 = icmp uge i64 %t171, %t173 - br i1 %t174, label %range6930, label %inrange6931 -range6930: - call void @finch_panic_index(ptr @.str.4460, i64 3827, i64 %t171, i64 %t173) - unreachable -inrange6931: - %t175 = extractvalue { ptr, i64, i64 } %t172, 0 - %t176 = getelementptr inbounds %S.ast.Node, ptr %t175, i64 %t171 - %t177 = load %S.ast.Node, ptr %t176 - store %S.ast.Node %t177, ptr %a178 - call void @finch.copy.S_ast_Node(ptr %a179, ptr %a178) - %t180 = load %S.ast.Node, ptr %a179 - %t181 = load i64, ptr %t170 - %t182 = add i64 %t181, 1 - call void @finch_arr_reserve(ptr %a139, i64 %t182, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t183 = load ptr, ptr %a139 - %t184 = getelementptr inbounds %S.ast.Node, ptr %t183, i64 %t181 - store %S.ast.Node %t180, ptr %t184 - store i64 %t182, ptr %t170 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %a140, i32 0, i32 1 - %t186 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t186, ptr %a188 - store { ptr, i64, i64 } { ptr @.str.4461, i64 1, 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 %a167 - 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) - store { ptr, i64, i64 } %t190, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t193, ptr %a198 - call void @finch_str_drop(ptr %a198) - %t199 = load { ptr, i64, i64 }, ptr %a194 - %t200 = load i64, ptr %t185 - %t201 = add i64 %t200, 1 - call void @finch_arr_reserve(ptr %a140, i64 %t201, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t202 = load ptr, ptr %a140 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 %t200 - store { ptr, i64, i64 } %t199, ptr %t203 - store i64 %t201, ptr %t185 - br label %for.step6928 -for.step6928: - %t204 = load i64, ptr %a167 - %t205 = add i64 %t204, 1 - store i64 %t205, ptr %a167 - br label %for.cond6926 -for.end6929: - %t206 = load ptr, ptr %a1 - %t207 = load %S.ast.Node, ptr %a5 - %t208 = getelementptr inbounds %S.ast.Node, ptr %a5, i32 0, i32 12 - %t209 = load i64, ptr %t208 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t211 = load i64, ptr %t210 - %t212 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } { ptr @.str.4462, i64 9, i64 0 }, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t217, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4463, i64 1, i64 0 }, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - store { ptr, i64, i64 } %t217, ptr %a221 - call void @finch_str_drop(ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a218 - %t223 = load { ptr, i64, i64 }, ptr %a3 - 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) - store { ptr, i64, i64 } %t222, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - store { ptr, i64, i64 } %t228, ptr %a230 - store { ptr, i64, i64 } { ptr @.str.4464, i64 4, i64 0 }, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t228, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - call void @finch.gen.noteRef(ptr %t206, %S.ast.Node %t207, i64 %t209, i64 %t211, { ptr, i64, i64 } %t233, { ptr, i64, i64 } { ptr @.str.4465, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t233, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load ptr, ptr %a1 - %t236 = load ptr, ptr %a1 - %t237 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = getelementptr inbounds %S.gen.SumDef, ptr %a19, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = call i64 @finch.gen.findStruct(ptr %t236, { ptr, i64, i64 } %t238, { ptr, i64, i64 } %t240) - %t242 = load { ptr, i64, i64 }, ptr %a139 - %t243 = load { ptr, i64, i64 }, ptr %a140 - %t244 = load %S.ast.Node, ptr %a5 - %t245 = call %S.gen.Val @finch.gen.construct(ptr %t235, i64 %t241, { ptr, i64, i64 } %t242, { ptr, i64, i64 } %t243, %S.ast.Node %t244) - call void @finch.drop.arr_str(ptr %a140) - call void @finch.drop.arr_S_ast_Node(ptr %a139) - call void @finch.drop.S_gen_SumDef(ptr %a19) - ret %S.gen.Val %t245 -} - -define internal %S.gen.SumPat @finch.gen.sumPattern(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.SumDef, align 16 - %a15 = alloca %S.gen.SumDef, align 16 - %a17 = alloca %S.gen.SumDef, 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 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = 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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = 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 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = 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 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca i64, align 16 - %a124 = alloca %S.ast.Node, align 16 - %a125 = alloca %S.ast.Node, 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 - %a144 = 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 - %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 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %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 i64, align 16 - %a251 = alloca %S.ast.Node, 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 - 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 %panic6932, label %ok6933 -panic6932: - call void @finch_panic(ptr @.str.4466, i64 3836, ptr @.str.4467) - unreachable -ok6933: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 22 - %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 %range6934, label %inrange6935 -range6934: - call void @finch_panic_index(ptr @.str.4468, i64 3836, i64 %t7, i64 %t9) - unreachable -inrange6935: - %t11 = extractvalue { ptr, i64, i64 } %t8, 0 - %t12 = getelementptr inbounds %S.gen.SumDef, ptr %t11, i64 %t7 - %t13 = load %S.gen.SumDef, ptr %t12 - store %S.gen.SumDef %t13, ptr %a14 - call void @finch.copy.S_gen_SumDef(ptr %a15, ptr %a14) - %t16 = load %S.gen.SumDef, ptr %a15 - store %S.gen.SumDef %t16, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.4469, i64 0, i64 0 }, ptr %a18 - store { ptr, i64, i64 } zeroinitializer, ptr %a19 - %t20 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t21 = load { ptr, i64, i64 }, ptr %t20 - store { ptr, i64, i64 } %t21, ptr %a22 - store { ptr, i64, i64 } { ptr @.str.4470, i64 3, i64 0 }, ptr %a23 - %t24 = call i32 @finch_str_eq(ptr %a22, ptr %a23) - %t25 = icmp ne i32 %t24, 0 - br label %logic.from6936 -logic.from6936: - br i1 %t25, label %logic.rhs6937, label %logic.end6938 -logic.rhs6937: - %t26 = load ptr, ptr %a1 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t28 = load { ptr, i64, i64 }, ptr %t27 - %t29 = call i64 @finch.gen.lookup(ptr %t26, { ptr, i64, i64 } %t28) - %t30 = icmp slt i64 %t29, 0 - br label %logic.rend6939 -logic.rend6939: - br label %logic.end6938 -logic.end6938: - %t31 = phi i1 [ false, %logic.from6936 ], [ %t30, %logic.rend6939 ] - br i1 %t31, label %then6940, label %else6941 -then6940: - %t32 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 - %t37 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t36, ptr %a18 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif6942 -else6941: - %t39 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t40 = load { ptr, i64, i64 }, ptr %t39 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.4471, 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 %then6943, label %else6944 -then6943: - %t45 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t46 = load { ptr, i64, i64 }, ptr %t45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t49, ptr %a18 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - call void @finch.copy.arr_S_ast_Node(ptr %a55, ptr %a54) - %t56 = load { ptr, i64, i64 }, ptr %a55 - %t57 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t56, ptr %a19 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch.drop.arr_S_ast_Node(ptr %a58) - br label %endif6945 -else6944: - %t59 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.4472, i64 6, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br label %logic.from6946 -logic.from6946: - br i1 %t64, label %logic.rhs6947, label %logic.end6948 -logic.rhs6947: - %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 %range6949, label %inrange6950 -range6949: - call void @finch_panic_index(ptr @.str.4473, i64 3844, i64 0, i64 %t68) - unreachable -inrange6950: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds %S.ast.Node, ptr %t70, i64 0 - %t72 = load %S.ast.Node, ptr %t71 - %t73 = call i64 @finch.gen.sumNamed(ptr %t65, %S.ast.Node %t72) - %t74 = load i64, ptr %a3 - %t75 = icmp eq i64 %t73, %t74 - br label %logic.rend6951 -logic.rend6951: - br label %logic.end6948 -logic.end6948: - %t76 = phi i1 [ false, %logic.from6946 ], [ %t75, %logic.rend6951 ] - br i1 %t76, label %then6952, label %else6953 -then6952: - %t77 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_copy(ptr %a80, ptr %a79) - %t81 = load { ptr, i64, i64 }, ptr %a80 - %t82 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t81, ptr %a18 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif6954 -else6953: - %t84 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - store { ptr, i64, i64 } %t85, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.4474, i64 6, i64 0 }, ptr %a87 - %t88 = call i32 @finch_str_eq(ptr %a86, ptr %a87) - %t89 = icmp ne i32 %t88, 0 - br label %logic.from6955 -logic.from6955: - br i1 %t89, label %logic.rhs6956, label %logic.end6957 -logic.rhs6956: - %t90 = load ptr, ptr %a1 - %t91 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t92 = load { ptr, i64, i64 }, ptr %t91 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 0, %t93 - br i1 %t94, label %range6958, label %inrange6959 -range6958: - call void @finch_panic_index(ptr @.str.4475, i64 3846, i64 0, i64 %t93) - unreachable -inrange6959: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Node, ptr %t95, i64 0 - %t97 = load %S.ast.Node, ptr %t96 - %t98 = call i64 @finch.gen.sumNamed(ptr %t90, %S.ast.Node %t97) - %t99 = load i64, ptr %a3 - %t100 = icmp eq i64 %t98, %t99 - br label %logic.rend6960 -logic.rend6960: - br label %logic.end6957 -logic.end6957: - %t101 = phi i1 [ false, %logic.from6955 ], [ %t100, %logic.rend6960 ] - br i1 %t101, label %then6961, label %else6962 -then6961: - %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 - call void @finch_str_copy(ptr %a105, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - %t107 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t106, ptr %a18 - store { ptr, i64, i64 } %t107, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %t109, i32 0, i32 1 - %t111 = load i64, ptr %t110 - store i64 1, ptr %a112 - br label %for.cond6964 -for.cond6964: - %t113 = load i64, ptr %a112 - %t114 = icmp slt i64 %t113, %t111 - br i1 %t114, label %for.body6965, label %for.end6967 -for.body6965: - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t116 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t117 = load i64, ptr %a112 - %t118 = load { ptr, i64, i64 }, ptr %t116 - %t119 = extractvalue { ptr, i64, i64 } %t118, 1 - %t120 = icmp uge i64 %t117, %t119 - br i1 %t120, label %range6968, label %inrange6969 -range6968: - call void @finch_panic_index(ptr @.str.4476, i64 3849, i64 %t117, i64 %t119) - unreachable -inrange6969: - %t121 = extractvalue { ptr, i64, i64 } %t118, 0 - %t122 = getelementptr inbounds %S.ast.Node, ptr %t121, i64 %t117 - %t123 = load %S.ast.Node, ptr %t122 - store %S.ast.Node %t123, ptr %a124 - call void @finch.copy.S_ast_Node(ptr %a125, ptr %a124) - %t126 = load %S.ast.Node, ptr %a125 - %t127 = load i64, ptr %t115 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %a19, i64 %t128, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %a19 - %t130 = getelementptr inbounds %S.ast.Node, ptr %t129, i64 %t127 - store %S.ast.Node %t126, ptr %t130 - store i64 %t128, ptr %t115 - br label %for.step6966 -for.step6966: - %t131 = load i64, ptr %a112 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %a112 - br label %for.cond6964 -for.end6967: - br label %endif6963 -else6962: - %t133 = load ptr, ptr %a1 - %t134 = load %S.ast.Node, ptr %a2 - %t135 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 1 - %t136 = load { ptr, i64, i64 }, ptr %t135 - store { ptr, i64, i64 } { ptr @.str.4477, i64 33, 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.4478, i64 10, i64 0 }, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t140, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 2 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %t146, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4479, i64 2, i64 0 }, ptr %a148 - call void @finch_str_join(ptr %a149, ptr %t146, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t145, ptr %a152 - store { ptr, i64, i64 } %t150, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t145, ptr %a154 - call void @finch_str_drop(ptr %a154) - store { ptr, i64, i64 } %t150, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4480, i64 1, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - call void @finch.gen.fail(ptr %t133, %S.ast.Node %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a162 - call void @finch_str_drop(ptr %a162) - br label %endif6963 -endif6963: - br label %endif6954 -endif6954: - br label %endif6945 -endif6945: - br label %endif6942 -endif6942: - %t163 = load ptr, ptr %a1 - %t164 = load i64, ptr %a3 - %t165 = load { ptr, i64, i64 }, ptr %a18 - %t166 = load %S.ast.Node, ptr %a2 - %t167 = call i64 @finch.gen.sumVariant(ptr %t163, i64 %t164, { ptr, i64, i64 } %t165, %S.ast.Node %t166) - store i64 %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t172 = load i64, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %t171 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 %t172, %t174 - br i1 %t175, label %range6970, label %inrange6971 -range6970: - call void @finch_panic_index(ptr @.str.4481, i64 3855, i64 %t172, i64 %t174) - unreachable -inrange6971: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds i64, ptr %t176, i64 %t172 - %t178 = load i64, ptr %t177 - %t179 = icmp ne i64 %t170, %t178 - br i1 %t179, label %then6972, label %endif6974 -then6972: - %t180 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t181 = load i64, ptr %a168 - %t182 = load { ptr, i64, i64 }, ptr %t180 - %t183 = extractvalue { ptr, i64, i64 } %t182, 1 - %t184 = icmp uge i64 %t181, %t183 - br i1 %t184, label %range6975, label %inrange6976 -range6975: - call void @finch_panic_index(ptr @.str.4482, i64 3856, i64 %t181, i64 %t183) - unreachable -inrange6976: - %t185 = extractvalue { ptr, i64, i64 } %t182, 0 - %t186 = getelementptr inbounds i64, ptr %t185, i64 %t181 - %t187 = load i64, ptr %t186 - %t188 = icmp eq i64 %t187, 0 - br i1 %t188, label %then6977, label %endif6979 -then6977: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - %t191 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t191, ptr %a193 - store { ptr, i64, i64 } { ptr @.str.4483, i64 27, i64 0 }, ptr %a194 - call void @finch_str_concat(ptr %a192, ptr %a193, ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a192 - %t196 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t195, ptr %a198 - store { ptr, i64, i64 } %t196, ptr %a199 - call void @finch_str_concat(ptr %a197, ptr %a198, ptr %a199) - store { ptr, i64, i64 } %t195, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a197 - call void @finch.gen.fail(ptr %t189, %S.ast.Node %t190, { ptr, i64, i64 } %t201) - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif6979 -endif6979: - %t203 = load ptr, ptr %a1 - %t204 = load %S.ast.Node, ptr %a2 - %t205 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t205, ptr %a207 - store { ptr, i64, i64 } { ptr @.str.4484, i64 7, i64 0 }, ptr %a208 - call void @finch_str_concat(ptr %a206, ptr %a207, ptr %a208) - %t209 = load { ptr, i64, i64 }, ptr %a206 - %t210 = getelementptr inbounds %S.gen.SumDef, ptr %a17, i32 0, i32 3 - %t211 = load i64, ptr %a168 - %t212 = load { ptr, i64, i64 }, ptr %t210 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range6980, label %inrange6981 -range6980: - call void @finch_panic_index(ptr @.str.4485, i64 3859, i64 %t211, i64 %t213) - unreachable -inrange6981: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds i64, ptr %t215, i64 %t211 - %t217 = load i64, ptr %t216 - call void @finch_str_from_int(ptr %a218, i64 %t217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - store { ptr, i64, i64 } %t209, ptr %a221 - store { ptr, i64, i64 } %t219, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - store { ptr, i64, i64 } %t209, ptr %a223 - call void @finch_str_drop(ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a220 - store { ptr, i64, i64 } %t225, ptr %a227 - store { ptr, i64, i64 } { ptr @.str.4486, i64 27, i64 0 }, ptr %a228 - call void @finch_str_concat(ptr %a226, ptr %a227, ptr %a228) - store { ptr, i64, i64 } %t225, ptr %a229 - call void @finch_str_drop(ptr %a229) - %t230 = load { ptr, i64, i64 }, ptr %a226 - %t231 = load { ptr, i64, i64 }, ptr %a18 - 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) - store { ptr, i64, i64 } %t230, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.4487, i64 27, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - call void @finch.gen.fail(ptr %t203, %S.ast.Node %t204, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a242 - call void @finch_str_drop(ptr %a242) - br label %endif6974 -endif6974: - store i64 0, ptr %a243 - br label %each.cond6982 -each.cond6982: - %t244 = getelementptr inbounds { ptr, i64, i64 }, ptr %a19, i32 0, i32 1 - %t245 = load i64, ptr %t244 - %t246 = load i64, ptr %a243 - %t247 = icmp slt i64 %t246, %t245 - br i1 %t247, label %each.body6983, label %each.end6985 -each.body6983: - %t248 = load ptr, ptr %a19 - %t249 = getelementptr inbounds %S.ast.Node, ptr %t248, i64 %t246 - %t250 = load %S.ast.Node, ptr %t249 - store %S.ast.Node %t250, ptr %a251 - %t252 = getelementptr inbounds %S.ast.Node, ptr %a251, i32 0, i32 0 - %t253 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t253, ptr %a254 - store { ptr, i64, i64 } { ptr @.str.4488, i64 3, i64 0 }, ptr %a255 - %t256 = call i32 @finch_str_eq(ptr %a254, ptr %a255) - %t257 = icmp eq i32 %t256, 0 - br i1 %t257, label %then6986, label %endif6988 -then6986: - %t258 = load ptr, ptr %a1 - %t259 = load %S.ast.Node, ptr %a251 - call void @finch.gen.fail(ptr %t258, %S.ast.Node %t259, { ptr, i64, i64 } { ptr @.str.4489, i64 50, i64 0 }) - br label %endif6988 -endif6988: - br label %each.step6984 -each.step6984: - %t260 = load i64, ptr %a243 - %t261 = add i64 %t260, 1 - store i64 %t261, ptr %a243 - br label %each.cond6982 -each.end6985: - %t262 = load i64, ptr %a168 - %t263 = insertvalue %S.gen.SumPat zeroinitializer, i64 %t262, 0 - %t264 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch.copy.arr_S_ast_Node(ptr %a266, ptr %a265) - %t267 = load { ptr, i64, i64 }, ptr %a266 - %t268 = insertvalue %S.gen.SumPat %t263, { ptr, i64, i64 } %t267, 1 - call void @finch.drop.arr_S_ast_Node(ptr %a19) - call void @finch_str_drop(ptr %a18) - call void @finch.drop.S_gen_SumDef(ptr %a17) - ret %S.gen.SumPat %t268 -} - -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 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic6989, label %ok6990 -panic6989: - call void @finch_panic(ptr @.str.4490, i64 3871, ptr @.str.4491) - unreachable -ok6990: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range6991, label %inrange6992 -range6991: - call void @finch_panic_index(ptr @.str.4492, i64 3871, i64 %t7, i64 %t9) - unreachable -inrange6992: - %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.cond6993 -find.cond6993: - %t26 = load i64, ptr %a25 - %t27 = icmp slt i64 %t26, %t23 - br i1 %t27, label %find.body6994, label %find.end6997 -find.body6994: - %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.hit6995, label %find.next6996 -find.hit6995: - store i64 %t26, ptr %a22 - br label %find.end6997 -find.next6996: - %t34 = add i64 %t26, 1 - store i64 %t34, ptr %a25 - br label %find.cond6993 -find.end6997: - %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 %then6998, label %endif7000 -then6998: - %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.4493, 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.4494, i64 17, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - %t52 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t51, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t51, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4495, i64 11, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - %t64 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 2 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4496, i64 2, i64 0 }, ptr %a66 - call void @finch_str_join(ptr %a67, ptr %t64, ptr %a66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t63, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4497, i64 1, i64 0 }, ptr %a77 - call void @finch_str_concat(ptr %a75, ptr %a76, ptr %a77) - store { ptr, i64, i64 } %t74, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif7000 -endif7000: - %t81 = load ptr, ptr %a1 - %t82 = load %S.ast.Node, ptr %a2 - %t83 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t84 = load i64, ptr %t83 - %t85 = add i64 %t84, 1 - %t86 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i32 0, i32 1 - %t88 = load i64, ptr %t87 - %t89 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t90 = load { ptr, i64, i64 }, ptr %t89 - store { ptr, i64, i64 } { ptr @.str.4498, i64 9, i64 0 }, ptr %a92 - store { ptr, i64, i64 } %t90, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a91 - store { ptr, i64, i64 } %t94, ptr %a96 - store { ptr, i64, i64 } { ptr @.str.4499, i64 1, i64 0 }, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_drop(ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a95 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } %t99, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t99, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.4500, i64 3, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t113 = load i64, ptr %a36 - %t114 = load { ptr, i64, i64 }, ptr %t112 - %t115 = extractvalue { ptr, i64, i64 } %t114, 1 - %t116 = icmp uge i64 %t113, %t115 - br i1 %t116, label %range7001, label %inrange7002 -range7001: - call void @finch_panic_index(ptr @.str.4501, i64 3876, i64 %t113, i64 %t115) - unreachable -inrange7002: - %t117 = extractvalue { ptr, i64, i64 } %t114, 0 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t113 - %t119 = load i64, ptr %t118 - call void @finch_str_from_int(ptr %a120, i64 %t119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t111, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t111, ptr %a125 - call void @finch_str_drop(ptr %a125) - store { ptr, i64, i64 } %t121, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t127, ptr %a129 - store { ptr, i64, i64 } { ptr @.str.4502, i64 4, i64 0 }, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t127, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - call void @finch.gen.noteRef(ptr %t81, %S.ast.Node %t82, i64 %t85, i64 %t88, { ptr, i64, i64 } %t132, { ptr, i64, i64 } { ptr @.str.4503, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t132, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t135 = load i64, ptr %a36 - %t136 = load { ptr, i64, i64 }, ptr %t134 - %t137 = extractvalue { ptr, i64, i64 } %t136, 1 - %t138 = icmp uge i64 %t135, %t137 - br i1 %t138, label %range7003, label %inrange7004 -range7003: - call void @finch_panic_index(ptr @.str.4504, i64 3877, i64 %t135, i64 %t137) - unreachable -inrange7004: - %t139 = extractvalue { ptr, i64, i64 } %t136, 0 - %t140 = getelementptr inbounds i64, ptr %t139, i64 %t135 - %t141 = load i64, ptr %t140 - call void @finch_str_from_int(ptr %a142, i64 %t141) - %t143 = load { ptr, i64, i64 }, ptr %a142 - %t144 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t143, 0 - %t145 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4505, i64 4, i64 0 }, 0 - %t146 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t147 = load { ptr, i64, i64 }, ptr %t146 - store { ptr, i64, i64 } %t147, ptr %a148 - call void @finch_str_copy(ptr %a149, ptr %a148) - %t150 = load { ptr, i64, i64 }, ptr %a149 - %t151 = insertvalue %S.ast.Type %t145, { ptr, i64, i64 } %t150, 2 - %t152 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t153 = load { ptr, i64, i64 }, ptr %t152 - store { ptr, i64, i64 } %t153, ptr %a154 - call void @finch_str_copy(ptr %a155, ptr %a154) - %t156 = load { ptr, i64, i64 }, ptr %a155 - %t157 = insertvalue %S.ast.Type %t151, { ptr, i64, i64 } %t156, 3 - %t158 = insertvalue %S.gen.Val %t144, %S.ast.Type %t157, 1 - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t158 -} - -define internal %S.gen.Ref @finch.gen.member(ptr %p0, %S.ast.Node %p1, i1 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca i1, align 16 - %a13 = alloca i64, align 16 - %a25 = alloca i64, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca i64, align 16 - %a157 = alloca %S.gen.Ref, align 16 - %a161 = alloca %S.ast.Type, align 16 - %a162 = alloca %S.ast.Type, align 16 - %a164 = alloca %S.ast.Type, align 16 - %a170 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.ast.Type, align 16 - %a174 = alloca %S.ast.Type, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca %S.ast.Type, align 16 - %a239 = alloca %S.ast.Type, align 16 - %a241 = alloca %S.ast.Type, align 16 - %a242 = alloca i1, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca i64, align 16 - %a268 = alloca i64, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca %S.ast.Type, align 16 - %a297 = alloca %S.ast.Type, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.ast.Type, align 16 - %a335 = alloca %S.gen.Ref, align 16 - %a337 = alloca %S.ast.Type, align 16 - %a338 = alloca %S.ast.Type, align 16 - %a341 = alloca %S.ast.Type, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = 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 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = 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 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %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 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca %S.ast.Type, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a613 = alloca { ptr, i64, i64 }, align 16 - %a614 = alloca { ptr, i64, i64 }, align 16 - %a616 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a671 = 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 - %a692 = alloca %S.gen.StructDef, align 16 - %a693 = alloca %S.gen.StructDef, align 16 - %a695 = alloca %S.gen.StructDef, align 16 - %a700 = alloca i64, align 16 - %a703 = alloca i64, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca i64, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a726 = 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 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a748 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a769 = alloca %S.ast.Type, align 16 - %a771 = alloca %S.ast.Type, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a855 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca %S.ast.Type, align 16 - %a861 = alloca %S.ast.Type, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %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 - %a887 = 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 - %a900 = 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 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a912 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a917 = alloca %S.ast.Type, align 16 - %a918 = alloca %S.ast.Type, align 16 - %a921 = alloca %S.gen.Val, align 16 - %a935 = alloca %S.ast.Type, align 16 - %a936 = alloca %S.ast.Type, align 16 - %a941 = alloca %S.gen.Val, align 16 - %a947 = alloca %S.gen.Val, align 16 - %a948 = 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 %range7005, label %inrange7006 -range7005: - call void @finch_panic_index(ptr @.str.4506, i64 3881, i64 0, i64 %t7) - unreachable -inrange7006: - %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.sumNamed(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 %then7007, label %endif7009 -then7007: - %t16 = load i1, ptr %a3 - br i1 %t16, label %then7010, label %endif7012 -then7010: - %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.4507, i64 37, i64 0 }) - br label %endif7012 -endif7012: - %t19 = load ptr, ptr %a1 - %t20 = load i64, ptr %a13 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %t21 - %t23 = load %S.ast.Node, ptr %a2 - %t24 = call i64 @finch.gen.sumVariant(ptr %t19, i64 %t20, { ptr, i64, i64 } %t22, %S.ast.Node %t23) - store i64 %t24, ptr %a25 - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic7013, label %ok7014 -panic7013: - call void @finch_panic(ptr @.str.4508, i64 3887, ptr @.str.4509) - unreachable -ok7014: - %t28 = getelementptr inbounds %S.gen.Gen, ptr %t26, i32 0, i32 22 - %t29 = load i64, ptr %a13 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range7015, label %inrange7016 -range7015: - call void @finch_panic_index(ptr @.str.4510, i64 3887, i64 %t29, i64 %t31) - unreachable -inrange7016: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.gen.SumDef, ptr %t33, i64 %t29 - %t35 = getelementptr inbounds %S.gen.SumDef, ptr %t34, i32 0, i32 3 - %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 %range7017, label %inrange7018 -range7017: - call void @finch_panic_index(ptr @.str.4511, i64 3887, i64 %t36, i64 %t38) - unreachable -inrange7018: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds i64, ptr %t40, i64 %t36 - %t42 = load i64, ptr %t41 - %t43 = icmp sgt i64 %t42, 0 - br i1 %t43, label %then7019, label %endif7021 -then7019: - %t44 = load ptr, ptr %a1 - %t45 = load %S.ast.Node, ptr %a2 - %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 %a49 - store { ptr, i64, i64 } { ptr @.str.4512, 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 = load ptr, ptr %a1 - %t53 = icmp eq ptr %t52, null - br i1 %t53, label %panic7022, label %ok7023 -panic7022: - call void @finch_panic(ptr @.str.4513, i64 3888, ptr @.str.4514) - unreachable -ok7023: - %t54 = getelementptr inbounds %S.gen.Gen, ptr %t52, i32 0, i32 22 - %t55 = load i64, ptr %a13 - %t56 = load { ptr, i64, i64 }, ptr %t54 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range7024, label %inrange7025 -range7024: - call void @finch_panic_index(ptr @.str.4515, i64 3888, i64 %t55, i64 %t57) - unreachable -inrange7025: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds %S.gen.SumDef, ptr %t59, i64 %t55 - %t61 = getelementptr inbounds %S.gen.SumDef, ptr %t60, i32 0, i32 3 - %t62 = load i64, ptr %a25 - %t63 = load { ptr, i64, i64 }, ptr %t61 - %t64 = extractvalue { ptr, i64, i64 } %t63, 1 - %t65 = icmp uge i64 %t62, %t64 - br i1 %t65, label %range7026, label %inrange7027 -range7026: - call void @finch_panic_index(ptr @.str.4516, i64 3888, i64 %t62, i64 %t64) - unreachable -inrange7027: - %t66 = extractvalue { ptr, i64, i64 } %t63, 0 - %t67 = getelementptr inbounds i64, ptr %t66, i64 %t62 - %t68 = load i64, ptr %t67 - call void @finch_str_from_int(ptr %a69, i64 %t68) - %t70 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t51, ptr %a72 - store { ptr, i64, i64 } %t70, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t51, ptr %a74 - call void @finch_str_drop(ptr %a74) - store { ptr, i64, i64 } %t70, ptr %a75 - call void @finch_str_drop(ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t76, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.4517, i64 11, i64 0 }, ptr %a79 - call void @finch_str_concat(ptr %a77, ptr %a78, ptr %a79) - store { ptr, i64, i64 } %t76, ptr %a80 - call void @finch_str_drop(ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a77 - %t82 = load ptr, ptr %a1 - %t83 = icmp eq ptr %t82, null - br i1 %t83, label %panic7028, label %ok7029 -panic7028: - call void @finch_panic(ptr @.str.4518, i64 3888, ptr @.str.4519) - unreachable -ok7029: - %t84 = getelementptr inbounds %S.gen.Gen, ptr %t82, i32 0, i32 22 - %t85 = load i64, ptr %a13 - %t86 = load { ptr, i64, i64 }, ptr %t84 - %t87 = extractvalue { ptr, i64, i64 } %t86, 1 - %t88 = icmp uge i64 %t85, %t87 - br i1 %t88, label %range7030, label %inrange7031 -range7030: - call void @finch_panic_index(ptr @.str.4520, i64 3888, i64 %t85, i64 %t87) - unreachable -inrange7031: - %t89 = extractvalue { ptr, i64, i64 } %t86, 0 - %t90 = getelementptr inbounds %S.gen.SumDef, ptr %t89, i64 %t85 - %t91 = getelementptr inbounds %S.gen.SumDef, ptr %t90, i32 0, i32 1 - %t92 = load { ptr, i64, i64 }, ptr %t91 - store { ptr, i64, i64 } %t81, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t81, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4521, i64 1, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.4522, i64 5, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - store { ptr, i64, i64 } %t109, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a110 - call void @finch.gen.fail(ptr %t44, %S.ast.Node %t45, { ptr, i64, i64 } %t114) - store { ptr, i64, i64 } %t114, ptr %a115 - call void @finch_str_drop(ptr %a115) - br label %endif7021 -endif7021: - store { ptr, i64, i64 } zeroinitializer, ptr %a116 - %t117 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t118 = load ptr, ptr %a1 - %t119 = load i64, ptr %a13 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = load { ptr, i64, i64 }, ptr %a116 - %t123 = load %S.ast.Node, ptr %a2 - %t124 = call %S.gen.Val @finch.gen.sumMake(ptr %t118, i64 %t119, { ptr, i64, i64 } %t121, { ptr, i64, i64 } %t122, %S.ast.Node %t123) - %t125 = insertvalue %S.gen.Ref %t117, %S.gen.Val %t124, 2 - call void @finch.drop.arr_S_ast_Node(ptr %a116) - ret %S.gen.Ref %t125 -endif7009: - %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 %range7032, label %inrange7033 -range7032: - call void @finch_panic_index(ptr @.str.4523, i64 3893, i64 0, i64 %t129) - unreachable -inrange7033: - %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 i64 @finch.gen.enumNamed(ptr %t126, %S.ast.Node %t133) - store i64 %t134, ptr %a135 - %t136 = load i64, ptr %a135 - %t137 = icmp sge i64 %t136, 0 - br i1 %t137, label %then7034, label %endif7036 -then7034: - %t138 = load i1, ptr %a3 - br i1 %t138, label %then7037, label %endif7039 -then7037: - %t139 = load ptr, ptr %a1 - %t140 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t139, %S.ast.Node %t140, { ptr, i64, i64 } { ptr @.str.4524, i64 37, i64 0 }) - br label %endif7039 -endif7039: - %t141 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t142 = load ptr, ptr %a1 - %t143 = load %S.ast.Node, ptr %a2 - %t144 = load i64, ptr %a135 - %t145 = call %S.gen.Val @finch.gen.enumValue(ptr %t142, %S.ast.Node %t143, i64 %t144) - %t146 = insertvalue %S.gen.Ref %t141, %S.gen.Val %t145, 2 - ret %S.gen.Ref %t146 -endif7036: - %t147 = load ptr, ptr %a1 - %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 %range7040, label %inrange7041 -range7040: - call void @finch_panic_index(ptr @.str.4525, i64 3900, i64 0, i64 %t150) - unreachable -inrange7041: - %t152 = extractvalue { ptr, i64, i64 } %t149, 0 - %t153 = getelementptr inbounds %S.ast.Node, ptr %t152, i64 0 - %t154 = load %S.ast.Node, ptr %t153 - %t155 = load i1, ptr %a3 - %t156 = call %S.gen.Ref @finch.gen.ref(ptr %t147, %S.ast.Node %t154, i1 %t155) - store %S.gen.Ref %t156, ptr %a157 - %t158 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t159 = getelementptr inbounds %S.gen.Val, ptr %t158, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - store %S.ast.Type %t160, ptr %a161 - call void @finch.copy.S_ast_Type(ptr %a162, ptr %a161) - %t163 = load %S.ast.Type, ptr %a162 - store %S.ast.Type %t163, ptr %a164 - %t165 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t166 = load i1, ptr %t165 - br i1 %t166, label %then7042, label %endif7044 -then7042: - %t167 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t168 = getelementptr inbounds %S.gen.Place, ptr %t167, i32 0, i32 1 - %t169 = load %S.ast.Type, ptr %t168 - store %S.ast.Type %t169, ptr %a170 - call void @finch.copy.S_ast_Type(ptr %a171, ptr %a170) - %t172 = load %S.ast.Type, ptr %a171 - %t173 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t172, ptr %a164 - store %S.ast.Type %t173, ptr %a174 - call void @finch.drop.S_ast_Type(ptr %a174) - br label %endif7044 -endif7044: - %t175 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t176 = load { ptr, i64, i64 }, ptr %t175 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.4526, 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 %then7045, label %endif7047 -then7045: - %t181 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t182 = getelementptr inbounds %S.gen.Val, ptr %t181, i32 0, i32 0 - %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 - store { ptr, i64, i64 } %t186, ptr %a187 - %t188 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t189 = load i1, ptr %t188 - br i1 %t189, label %then7048, label %endif7050 -then7048: - %t190 = load ptr, ptr %a1 - %t191 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t192 = getelementptr inbounds %S.gen.Place, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = call { ptr, i64, i64 } @finch.gen.load(ptr %t190, { ptr, i64, i64 } { ptr @.str.4527, i64 3, i64 0 }, { ptr, i64, i64 } %t193) - %t195 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t194, ptr %a187 - store { ptr, i64, i64 } %t195, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %endif7050 -endif7050: - %t197 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = icmp eq i64 %t199, 0 - br i1 %t200, label %then7051, label %endif7053 -then7051: - %t201 = load ptr, ptr %a1 - %t202 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t201, %S.ast.Node %t202, { ptr, i64, i64 } { ptr @.str.4528, i64 57, i64 0 }) - br label %endif7053 -endif7053: - %t203 = load ptr, ptr %a1 - %t204 = load ptr, ptr %a1 - %t205 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4529, i64 12, 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.4530, i64 6, i64 0 }, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t209, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } { ptr @.str.4531, 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 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.4532, i64 18, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t203, { ptr, i64, i64 } %t215, { ptr, i64, i64 } %t227, %S.ast.Node %t228) - store { ptr, i64, i64 } %t215, ptr %a229 - call void @finch_str_drop(ptr %a229) - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = extractvalue { ptr, i64, i64 } %t232, 1 - %t234 = icmp uge i64 0, %t233 - br i1 %t234, label %range7054, label %inrange7055 -range7054: - call void @finch_panic_index(ptr @.str.4533, i64 3914, i64 0, i64 %t233) - unreachable -inrange7055: - %t235 = extractvalue { ptr, i64, i64 } %t232, 0 - %t236 = getelementptr inbounds %S.ast.Type, ptr %t235, i64 0 - %t237 = load %S.ast.Type, ptr %t236 - store %S.ast.Type %t237, ptr %a238 - call void @finch.copy.S_ast_Type(ptr %a239, ptr %a238) - %t240 = load %S.ast.Type, ptr %a239 - store %S.ast.Type %t240, ptr %a241 - store i1 false, ptr %a242 - %t243 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.4534, i64 6, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then7056, label %endif7058 -then7056: - %t249 = load ptr, ptr %a1 - %t250 = icmp eq ptr %t249, null - br i1 %t250, label %panic7059, label %ok7060 -panic7059: - call void @finch_panic(ptr @.str.4535, i64 3917, ptr @.str.4536) - unreachable -ok7060: - %t251 = getelementptr inbounds %S.gen.Gen, ptr %t249, i32 0, i32 16 - %t252 = load ptr, ptr %a1 - %t253 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 3 - %t254 = load { ptr, i64, i64 }, ptr %t253 - %t255 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 2 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = call i64 @finch.gen.findStruct(ptr %t252, { ptr, i64, i64 } %t254, { ptr, i64, i64 } %t256) - %t258 = load { ptr, i64, i64 }, ptr %t251 - %t259 = extractvalue { ptr, i64, i64 } %t258, 1 - %t260 = icmp uge i64 %t257, %t259 - br i1 %t260, label %range7061, label %inrange7062 -range7061: - call void @finch_panic_index(ptr @.str.4537, i64 3917, i64 %t257, i64 %t259) - unreachable -inrange7062: - %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 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - store i64 -1, ptr %a265 - %t266 = load i64, ptr %t264 - %t267 = load ptr, ptr %t263 - store i64 0, ptr %a268 - br label %find.cond7063 -find.cond7063: - %t269 = load i64, ptr %a268 - %t270 = icmp slt i64 %t269, %t266 - br i1 %t270, label %find.body7064, label %find.end7067 -find.body7064: - %t271 = getelementptr inbounds { ptr, i64, i64 }, ptr %t267, i64 %t269 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.4538, i64 5, i64 0 }, ptr %a274 - %t275 = call i32 @finch_str_eq(ptr %a273, ptr %a274) - %t276 = icmp ne i32 %t275, 0 - br i1 %t276, label %find.hit7065, label %find.next7066 -find.hit7065: - store i64 %t269, ptr %a265 - br label %find.end7067 -find.next7066: - %t277 = add i64 %t269, 1 - store i64 %t277, ptr %a268 - br label %find.cond7063 -find.end7067: - %t278 = load i64, ptr %a265 - %t279 = icmp sge i64 %t278, 0 - store i1 %t279, ptr %a242 - br label %endif7058 -endif7058: - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t281 = load { ptr, i64, i64 }, ptr %t280 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.4539, 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.from7068 -logic.from7068: - br i1 %t285, label %logic.rhs7069, label %logic.end7070 -logic.rhs7069: - %t286 = load i1, ptr %a242 - %t287 = xor i1 %t286, true - br label %logic.rend7071 -logic.rend7071: - br label %logic.end7070 -logic.end7070: - %t288 = phi i1 [ false, %logic.from7068 ], [ %t287, %logic.rend7071 ] - br i1 %t288, label %then7072, label %endif7074 -then7072: - %t289 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t290 = load { ptr, i64, i64 }, ptr %a187 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t295, ptr %a296 - call void @finch.copy.S_ast_Type(ptr %a297, ptr %a296) - %t298 = load %S.ast.Type, ptr %a297 - %t299 = insertvalue %S.gen.Place %t294, %S.ast.Type %t298, 1 - %t300 = insertvalue %S.gen.Ref %t289, %S.gen.Place %t299, 1 - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t300 -endif7074: - %t301 = getelementptr inbounds %S.ast.Type, ptr %a241, i32 0, i32 0 - %t302 = load { ptr, i64, i64 }, ptr %t301 - store { ptr, i64, i64 } %t302, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.4540, i64 6, i64 0 }, ptr %a304 - %t305 = call i32 @finch_str_eq(ptr %a303, ptr %a304) - %t306 = icmp eq i32 %t305, 0 - br i1 %t306, label %then7075, label %endif7077 -then7075: - %t307 = load ptr, ptr %a1 - %t308 = load %S.ast.Node, ptr %a2 - %t309 = load %S.ast.Type, ptr %a164 - %t310 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t309) - store { ptr, i64, i64 } { ptr @.str.4541, i64 2, i64 0 }, ptr %a312 - store { ptr, i64, i64 } %t310, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4542, i64 43, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - call void @finch.gen.fail(ptr %t307, %S.ast.Node %t308, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a321 - call void @finch_str_drop(ptr %a321) - br label %endif7077 -endif7077: - %t322 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t323 = load { ptr, i64, i64 }, ptr %a187 - 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.gen.Place zeroinitializer, { ptr, i64, i64 } %t326, 0 - %t328 = load %S.ast.Type, ptr %a241 - store %S.ast.Type %t328, ptr %a329 - call void @finch.copy.S_ast_Type(ptr %a330, ptr %a329) - %t331 = load %S.ast.Type, ptr %a330 - %t332 = insertvalue %S.gen.Place %t327, %S.ast.Type %t331, 1 - %t333 = insertvalue %S.gen.Ref %t322, %S.gen.Place %t332, 1 - %t334 = load %S.gen.Ref, ptr %a157 - store %S.gen.Ref %t333, ptr %a157 - store %S.gen.Ref %t334, ptr %a335 - call void @finch.drop.S_gen_Ref(ptr %a335) - %t336 = load %S.ast.Type, ptr %a241 - 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 = load %S.ast.Type, ptr %a164 - store %S.ast.Type %t339, ptr %a164 - store %S.ast.Type %t340, ptr %a341 - call void @finch.drop.S_ast_Type(ptr %a341) - call void @finch.drop.S_ast_Type(ptr %a241) - call void @finch_str_drop(ptr %a187) - br label %endif7047 -endif7047: - %t342 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t343, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.4543, i64 5, i64 0 }, ptr %a345 - %t346 = call i32 @finch_str_eq(ptr %a344, ptr %a345) - %t347 = icmp ne i32 %t346, 0 - br i1 %t347, label %then7078, label %endif7080 -then7078: - %t348 = load i1, ptr %a3 - br i1 %t348, label %then7081, label %endif7083 -then7081: - %t349 = load ptr, ptr %a1 - %t350 = load %S.ast.Node, ptr %a2 - %t351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t352 = load { ptr, i64, i64 }, ptr %t351 - store { ptr, i64, i64 } { ptr @.str.4544, i64 1, 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.4545, i64 26, i64 0 }, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t356, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - call void @finch.gen.fail(ptr %t349, %S.ast.Node %t350, { ptr, i64, i64 } %t361) - store { ptr, i64, i64 } %t361, ptr %a362 - call void @finch_str_drop(ptr %a362) - br label %endif7083 -endif7083: - %t363 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4546, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then7084, label %endif7086 -then7084: - %t369 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t370 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 4 - %t371 = load i64, ptr %t370 - call void @finch_str_from_int(ptr %a372, i64 %t371) - %t373 = load { ptr, i64, i64 }, ptr %a372 - %t374 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t373, 0 - %t375 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4547, i64 3, i64 0 }) - %t376 = insertvalue %S.gen.Val %t374, %S.ast.Type %t375, 1 - %t377 = insertvalue %S.gen.Val %t376, i1 true, 3 - %t378 = insertvalue %S.gen.Ref %t369, %S.gen.Val %t377, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t378 -endif7086: - %t379 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t380 = load { ptr, i64, i64 }, ptr %t379 - store { ptr, i64, i64 } %t380, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.4548, i64 3, i64 0 }, ptr %a382 - %t383 = call i32 @finch_str_eq(ptr %a381, ptr %a382) - %t384 = icmp eq i32 %t383, 0 - br i1 %t384, label %then7087, label %endif7089 -then7087: - %t385 = load ptr, ptr %a1 - %t386 = load %S.ast.Node, ptr %a2 - %t387 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t388 = load { ptr, i64, i64 }, ptr %t387 - store { ptr, i64, i64 } { ptr @.str.4549, i64 34, 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.4550, i64 1, i64 0 }, ptr %a395 - call void @finch_str_concat(ptr %a393, ptr %a394, ptr %a395) - store { ptr, i64, i64 } %t392, ptr %a396 - call void @finch_str_drop(ptr %a396) - %t397 = load { ptr, i64, i64 }, ptr %a393 - call void @finch.gen.fail(ptr %t385, %S.ast.Node %t386, { ptr, i64, i64 } %t397) - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_drop(ptr %a398) - br label %endif7089 -endif7089: - %t399 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t400 = load i1, ptr %t399 - %t401 = xor i1 %t400, true - br i1 %t401, label %then7090, label %endif7092 -then7090: - %t402 = load ptr, ptr %a1 - %t403 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t402, %S.ast.Node %t403, { ptr, i64, i64 } { ptr @.str.4551, i64 48, i64 0 }) - br label %endif7092 -endif7092: - %t404 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t405 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t406 = getelementptr inbounds %S.gen.Place, ptr %t405, i32 0, i32 0 - %t407 = load { ptr, i64, i64 }, ptr %t406 - store { ptr, i64, i64 } %t407, ptr %a408 - call void @finch_str_copy(ptr %a409, ptr %a408) - %t410 = load { ptr, i64, i64 }, ptr %a409 - %t411 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t410, 0 - %t412 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t413 = load { ptr, i64, i64 }, ptr %t412 - %t414 = extractvalue { ptr, i64, i64 } %t413, 1 - %t415 = icmp uge i64 0, %t414 - br i1 %t415, label %range7093, label %inrange7094 -range7093: - call void @finch_panic_index(ptr @.str.4552, i64 3941, i64 0, i64 %t414) - unreachable -inrange7094: - %t416 = extractvalue { ptr, i64, i64 } %t413, 0 - %t417 = getelementptr inbounds %S.ast.Type, ptr %t416, i64 0 - %t418 = load %S.ast.Type, ptr %t417 - %t419 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val %t411, %S.ast.Type %t419, 1 - %t421 = insertvalue %S.gen.Ref %t404, %S.gen.Val %t420, 2 - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t421 -endif7080: - %t422 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t423 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t423, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.4553, i64 5, i64 0 }, ptr %a425 - %t426 = call i32 @finch_str_eq(ptr %a424, ptr %a425) - %t427 = icmp ne i32 %t426, 0 - br label %logic.from7095 -logic.from7095: - br i1 %t427, label %logic.end7097, label %logic.rhs7096 -logic.rhs7096: - %t428 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.4554, i64 3, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.rend7098 -logic.rend7098: - br label %logic.end7097 -logic.end7097: - %t434 = phi i1 [ true, %logic.from7095 ], [ %t433, %logic.rend7098 ] - br label %logic.from7099 -logic.from7099: - br i1 %t434, label %logic.rhs7100, label %logic.end7101 -logic.rhs7100: - %t435 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - store { ptr, i64, i64 } %t436, ptr %a437 - store { ptr, i64, i64 } { ptr @.str.4555, i64 3, i64 0 }, ptr %a438 - %t439 = call i32 @finch_str_eq(ptr %a437, ptr %a438) - %t440 = icmp ne i32 %t439, 0 - br label %logic.rend7102 -logic.rend7102: - br label %logic.end7101 -logic.end7101: - %t441 = phi i1 [ false, %logic.from7099 ], [ %t440, %logic.rend7102 ] - br i1 %t441, label %then7103, label %endif7105 -then7103: - %t442 = load i1, ptr %a3 - br i1 %t442, label %then7106, label %endif7108 -then7106: - %t443 = load ptr, ptr %a1 - %t444 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t443, %S.ast.Node %t444, { ptr, i64, i64 } { ptr @.str.4556, i64 30, i64 0 }) - br label %endif7108 -endif7108: - %t445 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t446 = load i1, ptr %t445 - %t447 = xor i1 %t446, true - br label %logic.from7109 -logic.from7109: - br i1 %t447, label %logic.rhs7110, label %logic.end7111 -logic.rhs7110: - %t448 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t449 = getelementptr inbounds %S.gen.Val, ptr %t448, i32 0, i32 2 - %t450 = load i1, ptr %t449 - br label %logic.rend7112 -logic.rend7112: - br label %logic.end7111 -logic.end7111: - %t451 = phi i1 [ false, %logic.from7109 ], [ %t450, %logic.rend7112 ] - br label %logic.from7113 -logic.from7113: - br i1 %t451, label %logic.rhs7114, label %logic.end7115 -logic.rhs7114: - %t452 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t453 = getelementptr inbounds %S.gen.Val, ptr %t452, i32 0, i32 0 - %t454 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t454, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.4558, i64 1, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_starts(ptr %a455, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend7116 -logic.rend7116: - br label %logic.end7115 -logic.end7115: - %t460 = phi i1 [ false, %logic.from7113 ], [ %t459, %logic.rend7116 ] - br i1 %t460, label %then7117, label %endif7119 -then7117: - %t461 = load ptr, ptr %a1 - %t462 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t461, %S.ast.Node %t462, { ptr, i64, i64 } { ptr @.str.4559, i64 53, i64 0 }) - br label %endif7119 -endif7119: - %t463 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t464 = getelementptr inbounds %S.gen.Val, ptr %t463, i32 0, i32 0 - %t465 = load { ptr, i64, i64 }, ptr %t464 - store { ptr, i64, i64 } %t465, ptr %a466 - call void @finch_str_copy(ptr %a467, ptr %a466) - %t468 = load { ptr, i64, i64 }, ptr %a467 - store { ptr, i64, i64 } %t468, ptr %a469 - %t470 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t471 = load i1, ptr %t470 - br i1 %t471, label %then7120, label %endif7122 -then7120: - %t472 = load ptr, ptr %a1 - %t473 = load ptr, ptr %a1 - %t474 = load %S.ast.Type, ptr %a164 - %t475 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t473, %S.ast.Type %t474) - %t476 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t477 = getelementptr inbounds %S.gen.Place, ptr %t476, i32 0, i32 0 - %t478 = load { ptr, i64, i64 }, ptr %t477 - %t479 = call { ptr, i64, i64 } @finch.gen.load(ptr %t472, { ptr, i64, i64 } %t475, { ptr, i64, i64 } %t478) - store { ptr, i64, i64 } %t475, ptr %a480 - call void @finch_str_drop(ptr %a480) - %t481 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } %t479, ptr %a469 - store { ptr, i64, i64 } %t481, ptr %a482 - call void @finch_str_drop(ptr %a482) - br label %endif7122 -endif7122: - %t483 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - store { ptr, i64, i64 } %t484, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.4560, i64 3, i64 0 }, ptr %a486 - %t487 = call i32 @finch_str_eq(ptr %a485, ptr %a486) - %t488 = icmp ne i32 %t487, 0 - br i1 %t488, label %then7123, label %endif7125 -then7123: - %t489 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t490 = load ptr, ptr %a1 - %t491 = load { ptr, i64, i64 }, ptr %a469 - %t492 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t490, { ptr, i64, i64 } %t491) - %t493 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t492, 0 - %t494 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4561, i64 4, i64 0 }) - %t495 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t494) - store %S.ast.Type %t494, ptr %a496 - call void @finch.drop.S_ast_Type(ptr %a496) - %t497 = insertvalue %S.gen.Val %t493, %S.ast.Type %t495, 1 - %t498 = insertvalue %S.gen.Ref %t489, %S.gen.Val %t497, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t498 -endif7125: - %t499 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t500 = load ptr, ptr %a1 - %t501 = load { ptr, i64, i64 }, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4562, i64 31, i64 0 }, 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.4563, i64 3, i64 0 }, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t505, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - %t511 = call { ptr, i64, i64 } @finch.gen.op(ptr %t500, { ptr, i64, i64 } %t510) - store { ptr, i64, i64 } %t510, ptr %a512 - call void @finch_str_drop(ptr %a512) - %t513 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t511, 0 - %t514 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range7126, label %inrange7127 -range7126: - call void @finch_panic_index(ptr @.str.4564, i64 3959, i64 0, i64 %t516) - unreachable -inrange7127: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = load %S.ast.Type, ptr %t519 - %t521 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t520) - %t522 = insertvalue %S.gen.Val %t513, %S.ast.Type %t521, 1 - %t523 = insertvalue %S.gen.Ref %t499, %S.gen.Val %t522, 2 - call void @finch_str_drop(ptr %a469) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t523 -endif7105: - %t524 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t525 = load { ptr, i64, i64 }, ptr %t524 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.4565, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br label %logic.from7128 -logic.from7128: - br i1 %t529, label %logic.end7130, label %logic.rhs7129 -logic.rhs7129: - %t530 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t531 = load { ptr, i64, i64 }, ptr %t530 - store { ptr, i64, i64 } %t531, ptr %a532 - store { ptr, i64, i64 } { ptr @.str.4566, i64 3, i64 0 }, ptr %a533 - %t534 = call i32 @finch_str_eq(ptr %a532, ptr %a533) - %t535 = icmp ne i32 %t534, 0 - br label %logic.rend7131 -logic.rend7131: - br label %logic.end7130 -logic.end7130: - %t536 = phi i1 [ true, %logic.from7128 ], [ %t535, %logic.rend7131 ] - br label %logic.from7132 -logic.from7132: - br i1 %t536, label %logic.end7134, label %logic.rhs7133 -logic.rhs7133: - %t537 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t538 = load { ptr, i64, i64 }, ptr %t537 - store { ptr, i64, i64 } %t538, ptr %a539 - store { ptr, i64, i64 } { ptr @.str.4567, i64 3, i64 0 }, ptr %a540 - %t541 = call i32 @finch_str_eq(ptr %a539, ptr %a540) - %t542 = icmp ne i32 %t541, 0 - br label %logic.rend7135 -logic.rend7135: - br label %logic.end7134 -logic.end7134: - %t543 = phi i1 [ true, %logic.from7132 ], [ %t542, %logic.rend7135 ] - br i1 %t543, label %then7136, label %endif7138 -then7136: - %t544 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t545, ptr %a546 - store { ptr, i64, i64 } { ptr @.str.4568, i64 3, i64 0 }, ptr %a547 - %t548 = call i32 @finch_str_eq(ptr %a546, ptr %a547) - %t549 = icmp eq i32 %t548, 0 - br i1 %t549, label %then7139, label %endif7141 -then7139: - %t550 = load ptr, ptr %a1 - %t551 = load %S.ast.Node, ptr %a2 - %t552 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t553 = load { ptr, i64, i64 }, ptr %t552 - store { ptr, i64, i64 } { ptr @.str.4569, i64 37, i64 0 }, ptr %a555 - store { ptr, i64, i64 } %t553, ptr %a556 - call void @finch_str_concat(ptr %a554, ptr %a555, ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a554 - store { ptr, i64, i64 } %t557, ptr %a559 - store { ptr, i64, i64 } { ptr @.str.4570, i64 1, i64 0 }, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.gen.fail(ptr %t550, %S.ast.Node %t551, { ptr, i64, i64 } %t562) - store { ptr, i64, i64 } %t562, ptr %a563 - call void @finch_str_drop(ptr %a563) - br label %endif7141 -endif7141: - %t564 = load i1, ptr %a3 - br i1 %t564, label %then7142, label %endif7144 -then7142: - %t565 = load ptr, ptr %a1 - %t566 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t565, %S.ast.Node %t566, { ptr, i64, i64 } { ptr @.str.4571, i64 48, i64 0 }) - br label %endif7144 -endif7144: - %t567 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t568 = load i1, ptr %t567 - br i1 %t568, label %then7145, label %endif7147 -then7145: - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a164 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - store { ptr, i64, i64 } { ptr @.str.4572, i64 23, i64 0 }, ptr %a574 - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - store { ptr, i64, i64 } %t577, ptr %a579 - store { ptr, i64, i64 } { ptr @.str.4573, i64 6, i64 0 }, ptr %a580 - call void @finch_str_concat(ptr %a578, ptr %a579, ptr %a580) - store { ptr, i64, i64 } %t577, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = load { ptr, i64, i64 }, ptr %a578 - %t583 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t584 = getelementptr inbounds %S.gen.Place, ptr %t583, i32 0, i32 0 - %t585 = load { ptr, i64, i64 }, ptr %t584 - store { ptr, i64, i64 } %t582, ptr %a587 - store { ptr, i64, i64 } %t585, ptr %a588 - call void @finch_str_concat(ptr %a586, ptr %a587, ptr %a588) - store { ptr, i64, i64 } %t582, ptr %a589 - call void @finch_str_drop(ptr %a589) - %t590 = load { ptr, i64, i64 }, ptr %a586 - store { ptr, i64, i64 } %t590, ptr %a592 - store { ptr, i64, i64 } { ptr @.str.4574, i64 14, i64 0 }, ptr %a593 - call void @finch_str_concat(ptr %a591, ptr %a592, ptr %a593) - store { ptr, i64, i64 } %t590, ptr %a594 - call void @finch_str_drop(ptr %a594) - %t595 = load { ptr, i64, i64 }, ptr %a591 - %t596 = call { ptr, i64, i64 } @finch.gen.op(ptr %t569, { ptr, i64, i64 } %t595) - store { ptr, i64, i64 } %t595, ptr %a597 - call void @finch_str_drop(ptr %a597) - store { ptr, i64, i64 } %t596, ptr %a598 - %t599 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t600 = load ptr, ptr %a1 - %t601 = load { ptr, i64, i64 }, ptr %a598 - %t602 = call { ptr, i64, i64 } @finch.gen.load(ptr %t600, { ptr, i64, i64 } { ptr @.str.4575, i64 3, i64 0 }, { ptr, i64, i64 } %t601) - %t603 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t602, 0 - %t604 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4576, i64 3, i64 0 }) - %t605 = insertvalue %S.gen.Val %t603, %S.ast.Type %t604, 1 - %t606 = insertvalue %S.gen.Ref %t599, %S.gen.Val %t605, 2 - call void @finch_str_drop(ptr %a598) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t606 -endif7147: - %t607 = load ptr, ptr %a1 - %t608 = load ptr, ptr %a1 - %t609 = load %S.ast.Type, ptr %a164 - %t610 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t608, %S.ast.Type %t609) - store { ptr, i64, i64 } { ptr @.str.4577, i64 13, i64 0 }, ptr %a612 - store { ptr, i64, i64 } %t610, ptr %a613 - call void @finch_str_concat(ptr %a611, ptr %a612, ptr %a613) - store { ptr, i64, i64 } %t610, ptr %a614 - call void @finch_str_drop(ptr %a614) - %t615 = load { ptr, i64, i64 }, ptr %a611 - store { ptr, i64, i64 } %t615, ptr %a617 - store { ptr, i64, i64 } { ptr @.str.4578, i64 1, i64 0 }, ptr %a618 - call void @finch_str_concat(ptr %a616, ptr %a617, ptr %a618) - store { ptr, i64, i64 } %t615, ptr %a619 - call void @finch_str_drop(ptr %a619) - %t620 = load { ptr, i64, i64 }, ptr %a616 - %t621 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t622 = getelementptr inbounds %S.gen.Val, ptr %t621, i32 0, i32 0 - %t623 = load { ptr, i64, i64 }, ptr %t622 - store { ptr, i64, i64 } %t620, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t620, ptr %a627 - call void @finch_str_drop(ptr %a627) - %t628 = load { ptr, i64, i64 }, ptr %a624 - store { ptr, i64, i64 } %t628, ptr %a630 - store { ptr, i64, i64 } { ptr @.str.4579, i64 3, i64 0 }, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t628, ptr %a632 - call void @finch_str_drop(ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a629 - %t634 = call { ptr, i64, i64 } @finch.gen.op(ptr %t607, { ptr, i64, i64 } %t633) - store { ptr, i64, i64 } %t633, ptr %a635 - call void @finch_str_drop(ptr %a635) - store { ptr, i64, i64 } %t634, ptr %a636 - %t637 = load ptr, ptr %a1 - %t638 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t639 = load %S.gen.Val, ptr %t638 - call void @finch.gen.release(ptr %t637, %S.gen.Val %t639) - %t640 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t641 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t641, ptr %a642 - call void @finch_str_copy(ptr %a643, ptr %a642) - %t644 = load { ptr, i64, i64 }, ptr %a643 - %t645 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t644, 0 - %t646 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4580, i64 3, i64 0 }) - %t647 = insertvalue %S.gen.Val %t645, %S.ast.Type %t646, 1 - %t648 = insertvalue %S.gen.Ref %t640, %S.gen.Val %t647, 2 - call void @finch_str_drop(ptr %a636) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t648 -endif7138: - %t649 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 0 - %t650 = load { ptr, i64, i64 }, ptr %t649 - store { ptr, i64, i64 } %t650, ptr %a651 - store { ptr, i64, i64 } { ptr @.str.4581, i64 6, i64 0 }, ptr %a652 - %t653 = call i32 @finch_str_eq(ptr %a651, ptr %a652) - %t654 = icmp eq i32 %t653, 0 - br i1 %t654, label %then7148, label %endif7150 -then7148: - %t655 = load ptr, ptr %a1 - %t656 = load %S.ast.Node, ptr %a2 - %t657 = load %S.ast.Type, ptr %a164 - %t658 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t657) - store { ptr, i64, i64 } %t658, ptr %a660 - store { ptr, i64, i64 } { ptr @.str.4582, i64 21, i64 0 }, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t658, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - %t664 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } %t663, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - store { ptr, i64, i64 } %t663, ptr %a669 - call void @finch_str_drop(ptr %a669) - %t670 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t670, ptr %a672 - store { ptr, i64, i64 } { ptr @.str.4583, i64 2, i64 0 }, ptr %a673 - call void @finch_str_concat(ptr %a671, ptr %a672, ptr %a673) - store { ptr, i64, i64 } %t670, ptr %a674 - call void @finch_str_drop(ptr %a674) - %t675 = load { ptr, i64, i64 }, ptr %a671 - call void @finch.gen.fail(ptr %t655, %S.ast.Node %t656, { ptr, i64, i64 } %t675) - store { ptr, i64, i64 } %t675, ptr %a676 - call void @finch_str_drop(ptr %a676) - br label %endif7150 -endif7150: - %t677 = load ptr, ptr %a1 - %t678 = icmp eq ptr %t677, null - br i1 %t678, label %panic7151, label %ok7152 -panic7151: - call void @finch_panic(ptr @.str.4584, i64 3979, ptr @.str.4585) - unreachable -ok7152: - %t679 = getelementptr inbounds %S.gen.Gen, ptr %t677, i32 0, i32 16 - %t680 = load ptr, ptr %a1 - %t681 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 3 - %t682 = load { ptr, i64, i64 }, ptr %t681 - %t683 = getelementptr inbounds %S.ast.Type, ptr %a164, i32 0, i32 2 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findStruct(ptr %t680, { ptr, i64, i64 } %t682, { ptr, i64, i64 } %t684) - %t686 = load { ptr, i64, i64 }, ptr %t679 - %t687 = extractvalue { ptr, i64, i64 } %t686, 1 - %t688 = icmp uge i64 %t685, %t687 - br i1 %t688, label %range7153, label %inrange7154 -range7153: - call void @finch_panic_index(ptr @.str.4586, i64 3979, i64 %t685, i64 %t687) - unreachable -inrange7154: - %t689 = extractvalue { ptr, i64, i64 } %t686, 0 - %t690 = getelementptr inbounds %S.gen.StructDef, ptr %t689, i64 %t685 - %t691 = load %S.gen.StructDef, ptr %t690 - store %S.gen.StructDef %t691, ptr %a692 - call void @finch.copy.S_gen_StructDef(ptr %a693, ptr %a692) - %t694 = load %S.gen.StructDef, ptr %a693 - store %S.gen.StructDef %t694, ptr %a695 - %t696 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t697 = getelementptr inbounds { ptr, i64, i64 }, ptr %t696, i32 0, i32 1 - %t698 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store i64 -1, ptr %a700 - %t701 = load i64, ptr %t697 - %t702 = load ptr, ptr %t696 - store i64 0, ptr %a703 - br label %find.cond7155 -find.cond7155: - %t704 = load i64, ptr %a703 - %t705 = icmp slt i64 %t704, %t701 - br i1 %t705, label %find.body7156, label %find.end7159 -find.body7156: - %t706 = getelementptr inbounds { ptr, i64, i64 }, ptr %t702, i64 %t704 - %t707 = load { ptr, i64, i64 }, ptr %t706 - store { ptr, i64, i64 } %t707, ptr %a708 - store { ptr, i64, i64 } %t699, ptr %a709 - %t710 = call i32 @finch_str_eq(ptr %a708, ptr %a709) - %t711 = icmp ne i32 %t710, 0 - br i1 %t711, label %find.hit7157, label %find.next7158 -find.hit7157: - store i64 %t704, ptr %a700 - br label %find.end7159 -find.next7158: - %t712 = add i64 %t704, 1 - store i64 %t712, ptr %a703 - br label %find.cond7155 -find.end7159: - %t713 = load i64, ptr %a700 - store i64 %t713, ptr %a714 - %t715 = load i64, ptr %a714 - %t716 = icmp slt i64 %t715, 0 - br i1 %t716, label %then7160, label %endif7162 -then7160: - %t717 = load ptr, ptr %a1 - %t718 = load %S.ast.Node, ptr %a2 - %t719 = load %S.ast.Type, ptr %a164 - %t720 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t719) - store { ptr, i64, i64 } { ptr @.str.4587, i64 11, i64 0 }, ptr %a722 - store { ptr, i64, i64 } %t720, ptr %a723 - call void @finch_str_concat(ptr %a721, ptr %a722, ptr %a723) - store { ptr, i64, i64 } %t720, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load { ptr, i64, i64 }, ptr %a721 - store { ptr, i64, i64 } %t725, ptr %a727 - store { ptr, i64, i64 } { ptr @.str.4588, i64 15, i64 0 }, ptr %a728 - call void @finch_str_concat(ptr %a726, ptr %a727, ptr %a728) - store { ptr, i64, i64 } %t725, ptr %a729 - call void @finch_str_drop(ptr %a729) - %t730 = load { ptr, i64, i64 }, ptr %a726 - %t731 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t732 = load { ptr, i64, i64 }, ptr %t731 - store { ptr, i64, i64 } %t730, ptr %a734 - store { ptr, i64, i64 } %t732, ptr %a735 - call void @finch_str_concat(ptr %a733, ptr %a734, ptr %a735) - store { ptr, i64, i64 } %t730, ptr %a736 - call void @finch_str_drop(ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a733 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.4589, i64 11, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 11 - %t744 = getelementptr inbounds { ptr, i64, i64 }, ptr %t743, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4590, i64 2, i64 0 }, ptr %a745 - call void @finch_str_join(ptr %a746, ptr %t743, ptr %a745) - %t747 = load { ptr, i64, i64 }, ptr %a746 - store { ptr, i64, i64 } %t742, ptr %a749 - store { ptr, i64, i64 } %t747, ptr %a750 - call void @finch_str_concat(ptr %a748, ptr %a749, ptr %a750) - store { ptr, i64, i64 } %t742, ptr %a751 - call void @finch_str_drop(ptr %a751) - store { ptr, i64, i64 } %t747, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a748 - store { ptr, i64, i64 } %t753, ptr %a755 - store { ptr, i64, i64 } { ptr @.str.4591, i64 1, i64 0 }, ptr %a756 - call void @finch_str_concat(ptr %a754, ptr %a755, ptr %a756) - store { ptr, i64, i64 } %t753, ptr %a757 - call void @finch_str_drop(ptr %a757) - %t758 = load { ptr, i64, i64 }, ptr %a754 - call void @finch.gen.fail(ptr %t717, %S.ast.Node %t718, { ptr, i64, i64 } %t758) - store { ptr, i64, i64 } %t758, ptr %a759 - call void @finch_str_drop(ptr %a759) - br label %endif7162 -endif7162: - %t760 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 12 - %t761 = load i64, ptr %a714 - %t762 = load { ptr, i64, i64 }, ptr %t760 - %t763 = extractvalue { ptr, i64, i64 } %t762, 1 - %t764 = icmp uge i64 %t761, %t763 - br i1 %t764, label %range7163, label %inrange7164 -range7163: - call void @finch_panic_index(ptr @.str.4592, i64 3984, i64 %t761, i64 %t763) - unreachable -inrange7164: - %t765 = extractvalue { ptr, i64, i64 } %t762, 0 - %t766 = getelementptr inbounds %S.ast.Type, ptr %t765, i64 %t761 - %t767 = load %S.ast.Type, ptr %t766 - store %S.ast.Type %t767, ptr %a768 - call void @finch.copy.S_ast_Type(ptr %a769, ptr %a768) - %t770 = load %S.ast.Type, ptr %a769 - store %S.ast.Type %t770, ptr %a771 - %t772 = load ptr, ptr %a1 - %t773 = load %S.ast.Node, ptr %a2 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t775 = load i64, ptr %t774 - %t776 = add i64 %t775, 1 - %t777 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t778 = getelementptr inbounds { ptr, i64, i64 }, ptr %t777, i32 0, i32 1 - %t779 = load i64, ptr %t778 - %t780 = load %S.ast.Type, ptr %a771 - %t781 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t780) - store { ptr, i64, i64 } { ptr @.str.4593, i64 9, i64 0 }, ptr %a783 - store { ptr, i64, i64 } %t781, ptr %a784 - call void @finch_str_concat(ptr %a782, ptr %a783, ptr %a784) - store { ptr, i64, i64 } %t781, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a782 - store { ptr, i64, i64 } %t786, ptr %a788 - store { ptr, i64, i64 } { ptr @.str.4594, i64 1, i64 0 }, ptr %a789 - call void @finch_str_concat(ptr %a787, ptr %a788, ptr %a789) - store { ptr, i64, i64 } %t786, ptr %a790 - call void @finch_str_drop(ptr %a790) - %t791 = load { ptr, i64, i64 }, ptr %a787 - %t792 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t793 = load { ptr, i64, i64 }, ptr %t792 - store { ptr, i64, i64 } %t791, ptr %a795 - store { ptr, i64, i64 } %t793, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t791, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - store { ptr, i64, i64 } %t798, ptr %a800 - store { ptr, i64, i64 } { ptr @.str.4595, i64 4, i64 0 }, ptr %a801 - call void @finch_str_concat(ptr %a799, ptr %a800, ptr %a801) - store { ptr, i64, i64 } %t798, ptr %a802 - call void @finch_str_drop(ptr %a802) - %t803 = load { ptr, i64, i64 }, ptr %a799 - call void @finch.gen.noteRef(ptr %t772, %S.ast.Node %t773, i64 %t776, i64 %t779, { ptr, i64, i64 } %t803, { ptr, i64, i64 } { ptr @.str.4596, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t803, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 0 - %t806 = load i1, ptr %t805 - br i1 %t806, label %then7165, label %endif7167 -then7165: - %t807 = load ptr, ptr %a1 - %t808 = load ptr, ptr %a1 - %t809 = load %S.ast.Type, ptr %a164 - %t810 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t808, %S.ast.Type %t809) - store { ptr, i64, i64 } { ptr @.str.4597, i64 23, i64 0 }, ptr %a812 - store { ptr, i64, i64 } %t810, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - store { ptr, i64, i64 } %t815, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.4598, i64 6, i64 0 }, ptr %a818 - call void @finch_str_concat(ptr %a816, ptr %a817, ptr %a818) - store { ptr, i64, i64 } %t815, ptr %a819 - call void @finch_str_drop(ptr %a819) - %t820 = load { ptr, i64, i64 }, ptr %a816 - %t821 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 1 - %t822 = getelementptr inbounds %S.gen.Place, ptr %t821, i32 0, i32 0 - %t823 = load { ptr, i64, i64 }, ptr %t822 - store { ptr, i64, i64 } %t820, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t820, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.4599, i64 13, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t835 = load i64, ptr %a714 - %t836 = load { ptr, i64, i64 }, ptr %t834 - %t837 = extractvalue { ptr, i64, i64 } %t836, 1 - %t838 = icmp uge i64 %t835, %t837 - br i1 %t838, label %range7168, label %inrange7169 -range7168: - call void @finch_panic_index(ptr @.str.4600, i64 3987, i64 %t835, i64 %t837) - unreachable -inrange7169: - %t839 = extractvalue { ptr, i64, i64 } %t836, 0 - %t840 = getelementptr inbounds i64, ptr %t839, i64 %t835 - %t841 = load i64, ptr %t840 - call void @finch_str_from_int(ptr %a842, i64 %t841) - %t843 = load { ptr, i64, i64 }, ptr %a842 - store { ptr, i64, i64 } %t833, ptr %a845 - store { ptr, i64, i64 } %t843, ptr %a846 - call void @finch_str_concat(ptr %a844, ptr %a845, ptr %a846) - store { ptr, i64, i64 } %t833, ptr %a847 - call void @finch_str_drop(ptr %a847) - store { ptr, i64, i64 } %t843, ptr %a848 - call void @finch_str_drop(ptr %a848) - %t849 = load { ptr, i64, i64 }, ptr %a844 - %t850 = call { ptr, i64, i64 } @finch.gen.op(ptr %t807, { ptr, i64, i64 } %t849) - store { ptr, i64, i64 } %t849, ptr %a851 - call void @finch_str_drop(ptr %a851) - store { ptr, i64, i64 } %t850, ptr %a852 - %t853 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t854 = load { ptr, i64, i64 }, ptr %a852 - store { ptr, i64, i64 } %t854, ptr %a855 - call void @finch_str_copy(ptr %a856, ptr %a855) - %t857 = load { ptr, i64, i64 }, ptr %a856 - %t858 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t857, 0 - %t859 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t859, ptr %a860 - call void @finch.copy.S_ast_Type(ptr %a861, ptr %a860) - %t862 = load %S.ast.Type, ptr %a861 - %t863 = insertvalue %S.gen.Place %t858, %S.ast.Type %t862, 1 - %t864 = insertvalue %S.gen.Ref %t853, %S.gen.Place %t863, 1 - call void @finch_str_drop(ptr %a852) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t864 -endif7167: - %t865 = load ptr, ptr %a1 - %t866 = load ptr, ptr %a1 - %t867 = load %S.ast.Type, ptr %a164 - %t868 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t866, %S.ast.Type %t867) - store { ptr, i64, i64 } { ptr @.str.4601, i64 13, i64 0 }, ptr %a870 - store { ptr, i64, i64 } %t868, ptr %a871 - call void @finch_str_concat(ptr %a869, ptr %a870, ptr %a871) - store { ptr, i64, i64 } %t868, ptr %a872 - call void @finch_str_drop(ptr %a872) - %t873 = load { ptr, i64, i64 }, ptr %a869 - store { ptr, i64, i64 } %t873, ptr %a875 - store { ptr, i64, i64 } { ptr @.str.4602, i64 1, i64 0 }, ptr %a876 - call void @finch_str_concat(ptr %a874, ptr %a875, ptr %a876) - store { ptr, i64, i64 } %t873, ptr %a877 - call void @finch_str_drop(ptr %a877) - %t878 = load { ptr, i64, i64 }, ptr %a874 - %t879 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t880 = getelementptr inbounds %S.gen.Val, ptr %t879, i32 0, i32 0 - %t881 = load { ptr, i64, i64 }, ptr %t880 - store { ptr, i64, i64 } %t878, ptr %a883 - store { ptr, i64, i64 } %t881, ptr %a884 - call void @finch_str_concat(ptr %a882, ptr %a883, ptr %a884) - store { ptr, i64, i64 } %t878, ptr %a885 - call void @finch_str_drop(ptr %a885) - %t886 = load { ptr, i64, i64 }, ptr %a882 - store { ptr, i64, i64 } %t886, ptr %a888 - store { ptr, i64, i64 } { ptr @.str.4603, i64 2, i64 0 }, ptr %a889 - call void @finch_str_concat(ptr %a887, ptr %a888, ptr %a889) - store { ptr, i64, i64 } %t886, ptr %a890 - call void @finch_str_drop(ptr %a890) - %t891 = load { ptr, i64, i64 }, ptr %a887 - %t892 = getelementptr inbounds %S.gen.StructDef, ptr %a695, i32 0, i32 3 - %t893 = load i64, ptr %a714 - %t894 = load { ptr, i64, i64 }, ptr %t892 - %t895 = extractvalue { ptr, i64, i64 } %t894, 1 - %t896 = icmp uge i64 %t893, %t895 - br i1 %t896, label %range7170, label %inrange7171 -range7170: - call void @finch_panic_index(ptr @.str.4604, i64 3990, i64 %t893, i64 %t895) - unreachable -inrange7171: - %t897 = extractvalue { ptr, i64, i64 } %t894, 0 - %t898 = getelementptr inbounds i64, ptr %t897, i64 %t893 - %t899 = load i64, ptr %t898 - call void @finch_str_from_int(ptr %a900, i64 %t899) - %t901 = load { ptr, i64, i64 }, ptr %a900 - store { ptr, i64, i64 } %t891, ptr %a903 - store { ptr, i64, i64 } %t901, ptr %a904 - call void @finch_str_concat(ptr %a902, ptr %a903, ptr %a904) - store { ptr, i64, i64 } %t891, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t901, ptr %a906 - call void @finch_str_drop(ptr %a906) - %t907 = load { ptr, i64, i64 }, ptr %a902 - %t908 = call { ptr, i64, i64 } @finch.gen.op(ptr %t865, { ptr, i64, i64 } %t907) - store { ptr, i64, i64 } %t907, ptr %a909 - call void @finch_str_drop(ptr %a909) - store { ptr, i64, i64 } %t908, ptr %a910 - %t911 = load { ptr, i64, i64 }, ptr %a910 - store { ptr, i64, i64 } %t911, ptr %a912 - call void @finch_str_copy(ptr %a913, ptr %a912) - %t914 = load { ptr, i64, i64 }, ptr %a913 - %t915 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t914, 0 - %t916 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t916, ptr %a917 - call void @finch.copy.S_ast_Type(ptr %a918, ptr %a917) - %t919 = load %S.ast.Type, ptr %a918 - %t920 = insertvalue %S.gen.Val %t915, %S.ast.Type %t919, 1 - store %S.gen.Val %t920, ptr %a921 - %t922 = load ptr, ptr %a1 - %t923 = load %S.ast.Type, ptr %a771 - %t924 = call i1 @finch.gen.owning(ptr %t922, %S.ast.Type %t923) - br label %logic.from7172 -logic.from7172: - br i1 %t924, label %logic.rhs7173, label %logic.end7174 -logic.rhs7173: - %t925 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t926 = getelementptr inbounds %S.gen.Val, ptr %t925, i32 0, i32 2 - %t927 = load i1, ptr %t926 - br label %logic.rend7175 -logic.rend7175: - br label %logic.end7174 -logic.end7174: - %t928 = phi i1 [ false, %logic.from7172 ], [ %t927, %logic.rend7175 ] - br i1 %t928, label %then7176, label %endif7178 -then7176: - %t929 = load ptr, ptr %a1 - %t930 = load { ptr, i64, i64 }, ptr %a910 - %t931 = load %S.ast.Type, ptr %a771 - %t932 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t929, { ptr, i64, i64 } %t930, %S.ast.Type %t931) - %t933 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t932, 0 - %t934 = load %S.ast.Type, ptr %a771 - store %S.ast.Type %t934, ptr %a935 - call void @finch.copy.S_ast_Type(ptr %a936, ptr %a935) - %t937 = load %S.ast.Type, ptr %a936 - %t938 = insertvalue %S.gen.Val %t933, %S.ast.Type %t937, 1 - %t939 = insertvalue %S.gen.Val %t938, i1 true, 2 - %t940 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t939, ptr %a921 - store %S.gen.Val %t940, ptr %a941 - call void @finch.drop.S_gen_Val(ptr %a941) - br label %endif7178 -endif7178: - %t942 = load ptr, ptr %a1 - %t943 = getelementptr inbounds %S.gen.Ref, ptr %a157, i32 0, i32 2 - %t944 = load %S.gen.Val, ptr %t943 - call void @finch.gen.release(ptr %t942, %S.gen.Val %t944) - %t945 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t946 = load %S.gen.Val, ptr %a921 - store %S.gen.Val %t946, ptr %a947 - call void @finch.copy.S_gen_Val(ptr %a948, ptr %a947) - %t949 = load %S.gen.Val, ptr %a948 - %t950 = insertvalue %S.gen.Ref %t945, %S.gen.Val %t949, 2 - call void @finch.drop.S_gen_Val(ptr %a921) - call void @finch_str_drop(ptr %a910) - call void @finch.drop.S_ast_Type(ptr %a771) - call void @finch.drop.S_gen_StructDef(ptr %a695) - call void @finch.drop.S_ast_Type(ptr %a164) - call void @finch.drop.S_gen_Ref(ptr %a157) - ret %S.gen.Ref %t950 -} - -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 - %a20 = alloca i64, align 16 - %a32 = alloca %S.gen.Ref, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i1 %p2, ptr %a3 - %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 %range7179, label %inrange7180 -range7179: - call void @finch_panic_index(ptr @.str.4605, i64 4000, i64 0, i64 %t7) - unreachable -inrange7180: - %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 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic7181, label %ok7182 -panic7181: - call void @finch_panic(ptr @.str.4606, i64 4001, ptr @.str.4607) - unreachable -ok7182: - %t17 = getelementptr inbounds %S.gen.Gen, ptr %t15, i32 0, i32 11 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t17, i32 0, i32 1 - %t19 = load i64, ptr %t18 - store i64 %t19, ptr %a20 - %t21 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 0 - %t22 = load i1, ptr %t21 - %t23 = xor i1 %t22, true - br i1 %t23, label %then7183, label %endif7185 -then7183: - %t24 = load ptr, ptr %a1 - %t25 = getelementptr inbounds %S.gen.Ref, ptr %a14, i32 0, i32 2 - %t26 = load %S.gen.Val, ptr %t25 - call void @finch.gen.hold(ptr %t24, %S.gen.Val %t26) - br label %endif7185 -endif7185: - %t27 = load ptr, ptr %a1 - %t28 = load %S.ast.Node, ptr %a2 - %t29 = load %S.gen.Ref, ptr %a14 - %t30 = load i1, ptr %a3 - %t31 = call %S.gen.Ref @finch.gen.indexOf(ptr %t27, %S.ast.Node %t28, %S.gen.Ref %t29, i1 %t30) - store %S.gen.Ref %t31, ptr %a32 - %t33 = load ptr, ptr %a1 - %t34 = load i64, ptr %a20 - call void @finch.gen.heldEnd(ptr %t33, i64 %t34) - %t35 = load %S.gen.Ref, ptr %a32 - call void @finch.drop.S_gen_Ref(ptr %a14) - ret %S.gen.Ref %t35 -} - -define internal %S.gen.Ref @finch.gen.indexOf(ptr %p0, %S.ast.Node %p1, %S.gen.Ref %p2, i1 %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Node, align 16 - %a3 = alloca %S.gen.Ref, align 16 - %a4 = alloca i1, align 16 - %a8 = alloca %S.ast.Type, align 16 - %a9 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a18 = alloca %S.ast.Type, align 16 - %a21 = alloca %S.ast.Type, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca %S.ast.Type, align 16 - %a180 = alloca %S.ast.Type, align 16 - %a182 = alloca %S.ast.Type, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca %S.ast.Type, align 16 - %a263 = alloca %S.ast.Type, align 16 - %a266 = alloca %S.ast.Type, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a386 = alloca %S.ast.Type, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca %S.ast.Type, align 16 - %a405 = alloca %S.ast.Type, align 16 - %a408 = alloca %S.gen.Val, align 16 - %a422 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.ast.Type, align 16 - %a428 = alloca %S.gen.Val, align 16 - %a434 = alloca %S.gen.Val, align 16 - %a435 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.Ref %p2, ptr %a3 - store i1 %p3, ptr %a4 - %t5 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t6 = getelementptr inbounds %S.gen.Val, ptr %t5, i32 0, i32 1 - %t7 = load %S.ast.Type, ptr %t6 - store %S.ast.Type %t7, ptr %a8 - call void @finch.copy.S_ast_Type(ptr %a9, ptr %a8) - %t10 = load %S.ast.Type, ptr %a9 - store %S.ast.Type %t10, ptr %a11 - %t12 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t13 = load i1, ptr %t12 - br i1 %t13, label %then7186, label %endif7188 -then7186: - %t14 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t15 = getelementptr inbounds %S.gen.Place, ptr %t14, i32 0, i32 1 - %t16 = load %S.ast.Type, ptr %t15 - store %S.ast.Type %t16, ptr %a17 - call void @finch.copy.S_ast_Type(ptr %a18, ptr %a17) - %t19 = load %S.ast.Type, ptr %a18 - %t20 = load %S.ast.Type, ptr %a11 - store %S.ast.Type %t19, ptr %a11 - store %S.ast.Type %t20, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - br label %endif7188 -endif7188: - %t22 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t23, ptr %a24 - store { ptr, i64, i64 } { ptr @.str.4608, i64 3, i64 0 }, ptr %a25 - %t26 = call i32 @finch_str_eq(ptr %a24, ptr %a25) - %t27 = icmp ne i32 %t26, 0 - br i1 %t27, label %then7189, label %endif7191 -then7189: - %t28 = load ptr, ptr %a1 - %t29 = load %S.ast.Node, ptr %a2 - %t30 = load %S.gen.Ref, ptr %a3 - %t31 = load %S.ast.Type, ptr %a11 - %t32 = load i1, ptr %a4 - %t33 = call %S.gen.Ref @finch.gen.mapIndex(ptr %t28, %S.ast.Node %t29, %S.gen.Ref %t30, %S.ast.Type %t31, i1 %t32) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t33 -endif7191: - %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 %range7192, label %inrange7193 -range7192: - call void @finch_panic_index(ptr @.str.4609, i64 4018, i64 1, i64 %t38) - unreachable -inrange7193: - %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.4610, 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 %range7194, label %inrange7195 -range7194: - call void @finch_panic_index(ptr @.str.4611, i64 4018, i64 1, i64 %t47) - unreachable -inrange7195: - %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.4612, i64 8, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.4613, i64 5, i64 0 }, ptr %a64 - %t65 = call i32 @finch_str_eq(ptr %a63, ptr %a64) - %t66 = icmp ne i32 %t65, 0 - br i1 %t66, label %then7196, label %endif7198 -then7196: - store { ptr, i64, i64 } { ptr @.str.4614, i64 0, i64 0 }, ptr %a67 - %t68 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t69 = load i1, ptr %t68 - br i1 %t69, label %then7199, label %else7200 -then7199: - %t70 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t71 = getelementptr inbounds %S.gen.Place, ptr %t70, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a73 - call void @finch_str_copy(ptr %a74, ptr %a73) - %t75 = load { ptr, i64, i64 }, ptr %a74 - %t76 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t75, ptr %a67 - store { ptr, i64, i64 } %t76, ptr %a77 - call void @finch_str_drop(ptr %a77) - br label %endif7201 -else7200: - %t78 = load ptr, ptr %a1 - %t79 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t80 = load %S.gen.Val, ptr %t79 - %t81 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t78, %S.gen.Val %t80) - %t82 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t81, ptr %a67 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_drop(ptr %a83) - br label %endif7201 -endif7201: - %t84 = load ptr, ptr %a1 - %t85 = load { ptr, i64, i64 }, ptr %a60 - %t86 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 4 - %t87 = load i64, ptr %t86 - call void @finch_str_from_int(ptr %a88, i64 %t87) - %t89 = load { ptr, i64, i64 }, ptr %a88 - %t90 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t84, { ptr, i64, i64 } %t85, { ptr, i64, i64 } %t89, %S.ast.Node %t90) - store { ptr, i64, i64 } %t89, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load ptr, ptr %a1 - %t93 = load ptr, ptr %a1 - %t94 = load %S.ast.Type, ptr %a11 - %t95 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t93, %S.ast.Type %t94) - store { ptr, i64, i64 } { ptr @.str.4615, i64 23, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.4616, i64 6, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - %t106 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t105, ptr %a108 - store { ptr, i64, i64 } %t106, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t105, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4617, i64 13, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = call { ptr, i64, i64 } @finch.gen.op(ptr %t92, { ptr, i64, i64 } %t122) - store { ptr, i64, i64 } %t122, ptr %a124 - call void @finch_str_drop(ptr %a124) - store { ptr, i64, i64 } %t123, ptr %a125 - %t126 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t127 = load { ptr, i64, i64 }, ptr %a125 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_copy(ptr %a129, ptr %a128) - %t130 = load { ptr, i64, i64 }, ptr %a129 - %t131 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t130, 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t133 = load { ptr, i64, i64 }, ptr %t132 - %t134 = extractvalue { ptr, i64, i64 } %t133, 1 - %t135 = icmp uge i64 0, %t134 - br i1 %t135, label %range7202, label %inrange7203 -range7202: - call void @finch_panic_index(ptr @.str.4618, i64 4028, i64 0, i64 %t134) - unreachable -inrange7203: - %t136 = extractvalue { ptr, i64, i64 } %t133, 0 - %t137 = getelementptr inbounds %S.ast.Type, ptr %t136, i64 0 - %t138 = load %S.ast.Type, ptr %t137 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Place %t131, %S.ast.Type %t141, 1 - %t143 = insertvalue %S.gen.Ref %t126, %S.gen.Place %t142, 1 - call void @finch_str_drop(ptr %a125) - call void @finch_str_drop(ptr %a67) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t143 -endif7198: - %t144 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t145 = load { ptr, i64, i64 }, ptr %t144 - store { ptr, i64, i64 } %t145, ptr %a146 - store { ptr, i64, i64 } { ptr @.str.4619, i64 3, i64 0 }, ptr %a147 - %t148 = call i32 @finch_str_eq(ptr %a146, ptr %a147) - %t149 = icmp ne i32 %t148, 0 - br i1 %t149, label %then7204, label %endif7206 -then7204: - %t150 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %t150, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = icmp eq i64 %t152, 0 - br i1 %t153, label %then7207, label %endif7209 -then7207: - %t154 = load ptr, ptr %a1 - %t155 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t154, %S.ast.Node %t155, { ptr, i64, i64 } { ptr @.str.4620, i64 57, i64 0 }) - br label %endif7209 -endif7209: - %t156 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t157 = getelementptr inbounds %S.gen.Val, ptr %t156, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_copy(ptr %a160, ptr %a159) - %t161 = load { ptr, i64, i64 }, ptr %a160 - store { ptr, i64, i64 } %t161, ptr %a162 - %t163 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t164 = load i1, ptr %t163 - br i1 %t164, label %then7210, label %endif7212 -then7210: - %t165 = load ptr, ptr %a1 - %t166 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t167 = getelementptr inbounds %S.gen.Place, ptr %t166, i32 0, i32 0 - %t168 = load { ptr, i64, i64 }, ptr %t167 - %t169 = call { ptr, i64, i64 } @finch.gen.load(ptr %t165, { ptr, i64, i64 } { ptr @.str.4621, i64 3, i64 0 }, { ptr, i64, i64 } %t168) - %t170 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t169, ptr %a162 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7212 -endif7212: - %t172 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t173 = load { ptr, i64, i64 }, ptr %t172 - %t174 = extractvalue { ptr, i64, i64 } %t173, 1 - %t175 = icmp uge i64 0, %t174 - br i1 %t175, label %range7213, label %inrange7214 -range7213: - call void @finch_panic_index(ptr @.str.4622, i64 4038, i64 0, i64 %t174) - unreachable -inrange7214: - %t176 = extractvalue { ptr, i64, i64 } %t173, 0 - %t177 = getelementptr inbounds %S.ast.Type, ptr %t176, i64 0 - %t178 = load %S.ast.Type, ptr %t177 - store %S.ast.Type %t178, ptr %a179 - call void @finch.copy.S_ast_Type(ptr %a180, ptr %a179) - %t181 = load %S.ast.Type, ptr %a180 - store %S.ast.Type %t181, ptr %a182 - %t183 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t184 = load ptr, ptr %a1 - %t185 = load ptr, ptr %a1 - %t186 = load %S.ast.Type, ptr %a182 - %t187 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t185, %S.ast.Type %t186) - store { ptr, i64, i64 } { ptr @.str.4623, i64 23, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4624, i64 6, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.4625, i64 6, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - %t215 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t214) - store { ptr, i64, i64 } %t214, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t218 = load %S.ast.Type, ptr %a182 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Place %t217, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Ref %t183, %S.gen.Place %t222, 1 - call void @finch.drop.S_ast_Type(ptr %a182) - call void @finch_str_drop(ptr %a162) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t223 -endif7206: - %t224 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t225, ptr %a226 - store { ptr, i64, i64 } { ptr @.str.4626, i64 5, i64 0 }, ptr %a227 - %t228 = call i32 @finch_str_eq(ptr %a226, ptr %a227) - %t229 = icmp eq i32 %t228, 0 - br label %logic.from7215 -logic.from7215: - br i1 %t229, label %logic.rhs7216, label %logic.end7217 -logic.rhs7216: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4627, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp eq i32 %t234, 0 - br label %logic.rend7218 -logic.rend7218: - br label %logic.end7217 -logic.end7217: - %t236 = phi i1 [ false, %logic.from7215 ], [ %t235, %logic.rend7218 ] - br i1 %t236, label %then7219, label %endif7221 -then7219: - %t237 = load ptr, ptr %a1 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = load %S.ast.Type, ptr %a11 - %t240 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t239) - store { ptr, i64, i64 } { ptr @.str.4628, i64 46, i64 0 }, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - call void @finch.gen.fail(ptr %t237, %S.ast.Node %t238, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7221 -endif7221: - %t247 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4629, i64 4, i64 0 }) - store %S.ast.Type %t247, ptr %a248 - %t249 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a251 - store { ptr, i64, i64 } { ptr @.str.4630, i64 5, i64 0 }, ptr %a252 - %t253 = call i32 @finch_str_eq(ptr %a251, ptr %a252) - %t254 = icmp ne i32 %t253, 0 - br i1 %t254, label %then7222, label %endif7224 -then7222: - %t255 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 1 - %t256 = load { ptr, i64, i64 }, ptr %t255 - %t257 = extractvalue { ptr, i64, i64 } %t256, 1 - %t258 = icmp uge i64 0, %t257 - br i1 %t258, label %range7225, label %inrange7226 -range7225: - call void @finch_panic_index(ptr @.str.4631, i64 4046, i64 0, i64 %t257) - unreachable -inrange7226: - %t259 = extractvalue { ptr, i64, i64 } %t256, 0 - %t260 = getelementptr inbounds %S.ast.Type, ptr %t259, i64 0 - %t261 = load %S.ast.Type, ptr %t260 - store %S.ast.Type %t261, ptr %a262 - call void @finch.copy.S_ast_Type(ptr %a263, ptr %a262) - %t264 = load %S.ast.Type, ptr %a263 - %t265 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t264, ptr %a248 - store %S.ast.Type %t265, ptr %a266 - call void @finch.drop.S_ast_Type(ptr %a266) - br label %endif7224 -endif7224: - %t267 = getelementptr inbounds %S.ast.Type, ptr %a11, i32 0, i32 0 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4632, i64 3, i64 0 }, ptr %a270 - %t271 = call i32 @finch_str_eq(ptr %a269, ptr %a270) - %t272 = icmp ne i32 %t271, 0 - br label %logic.from7227 -logic.from7227: - br i1 %t272, label %logic.rhs7228, label %logic.end7229 -logic.rhs7228: - %t273 = load i1, ptr %a4 - br label %logic.rend7230 -logic.rend7230: - br label %logic.end7229 -logic.end7229: - %t274 = phi i1 [ false, %logic.from7227 ], [ %t273, %logic.rend7230 ] - br i1 %t274, label %then7231, label %endif7233 -then7231: - %t275 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t276 = load i1, ptr %t275 - %t277 = xor i1 %t276, true - br i1 %t277, label %then7234, label %endif7236 -then7234: - %t278 = load ptr, ptr %a1 - %t279 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t278, %S.ast.Node %t279, { ptr, i64, i64 } { ptr @.str.4633, i64 44, i64 0 }) - br label %endif7236 -endif7236: - %t280 = load ptr, ptr %a1 - %t281 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t282 = getelementptr inbounds %S.gen.Place, ptr %t281, i32 0, i32 0 - %t283 = load { ptr, i64, i64 }, ptr %t282 - store { ptr, i64, i64 } { ptr @.str.4634, i64 29, i64 0 }, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - %t287 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t287, ptr %a289 - store { ptr, i64, i64 } { ptr @.str.4635, i64 1, i64 0 }, ptr %a290 - call void @finch_str_concat(ptr %a288, ptr %a289, ptr %a290) - store { ptr, i64, i64 } %t287, ptr %a291 - call void @finch_str_drop(ptr %a291) - %t292 = load { ptr, i64, i64 }, ptr %a288 - call void @finch.gen.emit(ptr %t280, { ptr, i64, i64 } %t292) - store { ptr, i64, i64 } %t292, ptr %a293 - call void @finch_str_drop(ptr %a293) - br label %endif7233 -endif7233: - %t294 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t295 = getelementptr inbounds %S.gen.Val, ptr %t294, i32 0, i32 0 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_copy(ptr %a298, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t299, ptr %a300 - %t301 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t302 = load i1, ptr %t301 - br i1 %t302, label %then7237, label %endif7239 -then7237: - %t303 = load ptr, ptr %a1 - %t304 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 1 - %t305 = getelementptr inbounds %S.gen.Place, ptr %t304, i32 0, i32 0 - %t306 = load { ptr, i64, i64 }, ptr %t305 - %t307 = call { ptr, i64, i64 } @finch.gen.load(ptr %t303, { ptr, i64, i64 } { ptr @.str.4636, i64 17, i64 0 }, { ptr, i64, i64 } %t306) - %t308 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t307, ptr %a300 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif7239 -endif7239: - %t310 = load ptr, ptr %a1 - %t311 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4637, i64 31, i64 0 }, ptr %a313 - store { ptr, i64, i64 } %t311, ptr %a314 - call void @finch_str_concat(ptr %a312, ptr %a313, ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a312 - store { ptr, i64, i64 } %t315, ptr %a317 - store { ptr, i64, i64 } { ptr @.str.4638, i64 3, i64 0 }, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - %t321 = call { ptr, i64, i64 } @finch.gen.op(ptr %t310, { ptr, i64, i64 } %t320) - store { ptr, i64, i64 } %t320, ptr %a322 - call void @finch_str_drop(ptr %a322) - store { ptr, i64, i64 } %t321, ptr %a323 - %t324 = load ptr, ptr %a1 - %t325 = load { ptr, i64, i64 }, ptr %a60 - %t326 = load { ptr, i64, i64 }, ptr %a323 - %t327 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t324, { ptr, i64, i64 } %t325, { ptr, i64, i64 } %t326, %S.ast.Node %t327) - %t328 = load ptr, ptr %a1 - %t329 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } { ptr @.str.4639, i64 31, i64 0 }, ptr %a331 - store { ptr, i64, i64 } %t329, ptr %a332 - call void @finch_str_concat(ptr %a330, ptr %a331, ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a330 - store { ptr, i64, i64 } %t333, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.4640, i64 3, i64 0 }, ptr %a336 - call void @finch_str_concat(ptr %a334, ptr %a335, ptr %a336) - store { ptr, i64, i64 } %t333, ptr %a337 - call void @finch_str_drop(ptr %a337) - %t338 = load { ptr, i64, i64 }, ptr %a334 - %t339 = call { ptr, i64, i64 } @finch.gen.op(ptr %t328, { ptr, i64, i64 } %t338) - store { ptr, i64, i64 } %t338, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t339, ptr %a341 - %t342 = load ptr, ptr %a1 - %t343 = load ptr, ptr %a1 - %t344 = load %S.ast.Type, ptr %a248 - %t345 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t343, %S.ast.Type %t344) - store { ptr, i64, i64 } { ptr @.str.4641, i64 23, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t345, ptr %a348 - call void @finch_str_concat(ptr %a346, ptr %a347, ptr %a348) - store { ptr, i64, i64 } %t345, ptr %a349 - call void @finch_str_drop(ptr %a349) - %t350 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t350, ptr %a352 - store { ptr, i64, i64 } { ptr @.str.4642, i64 6, i64 0 }, ptr %a353 - call void @finch_str_concat(ptr %a351, ptr %a352, ptr %a353) - store { ptr, i64, i64 } %t350, ptr %a354 - call void @finch_str_drop(ptr %a354) - %t355 = load { ptr, i64, i64 }, ptr %a351 - %t356 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t355, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - store { ptr, i64, i64 } %t355, ptr %a360 - call void @finch_str_drop(ptr %a360) - %t361 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.4643, i64 6, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - store { ptr, i64, i64 } %t361, ptr %a365 - call void @finch_str_drop(ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a362 - %t367 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t366, ptr %a369 - store { ptr, i64, i64 } %t367, ptr %a370 - call void @finch_str_concat(ptr %a368, ptr %a369, ptr %a370) - store { ptr, i64, i64 } %t366, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = load { ptr, i64, i64 }, ptr %a368 - %t373 = call { ptr, i64, i64 } @finch.gen.op(ptr %t342, { ptr, i64, i64 } %t372) - store { ptr, i64, i64 } %t372, ptr %a374 - call void @finch_str_drop(ptr %a374) - store { ptr, i64, i64 } %t373, ptr %a375 - %t376 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 0 - %t377 = load i1, ptr %t376 - br i1 %t377, label %then7240, label %endif7242 -then7240: - %t378 = insertvalue %S.gen.Ref zeroinitializer, i1 true, 0 - %t379 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t379, ptr %a380 - call void @finch_str_copy(ptr %a381, ptr %a380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - %t383 = insertvalue %S.gen.Place zeroinitializer, { ptr, i64, i64 } %t382, 0 - %t384 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t384, ptr %a385 - call void @finch.copy.S_ast_Type(ptr %a386, ptr %a385) - %t387 = load %S.ast.Type, ptr %a386 - %t388 = insertvalue %S.gen.Place %t383, %S.ast.Type %t387, 1 - %t389 = insertvalue %S.gen.Ref %t378, %S.gen.Place %t388, 1 - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t389 -endif7242: - %t390 = load ptr, ptr %a1 - %t391 = load ptr, ptr %a1 - %t392 = load %S.ast.Type, ptr %a248 - %t393 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t391, %S.ast.Type %t392) - %t394 = load { ptr, i64, i64 }, ptr %a375 - %t395 = call { ptr, i64, i64 } @finch.gen.load(ptr %t390, { ptr, i64, i64 } %t393, { ptr, i64, i64 } %t394) - store { ptr, i64, i64 } %t393, ptr %a396 - call void @finch_str_drop(ptr %a396) - store { ptr, i64, i64 } %t395, ptr %a397 - %t398 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t398, ptr %a399 - call void @finch_str_copy(ptr %a400, ptr %a399) - %t401 = load { ptr, i64, i64 }, ptr %a400 - %t402 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t401, 0 - %t403 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t403, ptr %a404 - call void @finch.copy.S_ast_Type(ptr %a405, ptr %a404) - %t406 = load %S.ast.Type, ptr %a405 - %t407 = insertvalue %S.gen.Val %t402, %S.ast.Type %t406, 1 - store %S.gen.Val %t407, ptr %a408 - %t409 = load ptr, ptr %a1 - %t410 = load %S.ast.Type, ptr %a248 - %t411 = call i1 @finch.gen.owning(ptr %t409, %S.ast.Type %t410) - br label %logic.from7243 -logic.from7243: - br i1 %t411, label %logic.rhs7244, label %logic.end7245 -logic.rhs7244: - %t412 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t413 = getelementptr inbounds %S.gen.Val, ptr %t412, i32 0, i32 2 - %t414 = load i1, ptr %t413 - br label %logic.rend7246 -logic.rend7246: - br label %logic.end7245 -logic.end7245: - %t415 = phi i1 [ false, %logic.from7243 ], [ %t414, %logic.rend7246 ] - br i1 %t415, label %then7247, label %endif7249 -then7247: - %t416 = load ptr, ptr %a1 - %t417 = load { ptr, i64, i64 }, ptr %a397 - %t418 = load %S.ast.Type, ptr %a248 - %t419 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t416, { ptr, i64, i64 } %t417, %S.ast.Type %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = load %S.ast.Type, ptr %a248 - store %S.ast.Type %t421, ptr %a422 - call void @finch.copy.S_ast_Type(ptr %a423, ptr %a422) - %t424 = load %S.ast.Type, ptr %a423 - %t425 = insertvalue %S.gen.Val %t420, %S.ast.Type %t424, 1 - %t426 = insertvalue %S.gen.Val %t425, i1 true, 2 - %t427 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t426, ptr %a408 - store %S.gen.Val %t427, ptr %a428 - call void @finch.drop.S_gen_Val(ptr %a428) - br label %endif7249 -endif7249: - %t429 = load ptr, ptr %a1 - %t430 = getelementptr inbounds %S.gen.Ref, ptr %a3, i32 0, i32 2 - %t431 = load %S.gen.Val, ptr %t430 - call void @finch.gen.release(ptr %t429, %S.gen.Val %t431) - %t432 = insertvalue %S.gen.Ref zeroinitializer, i1 false, 0 - %t433 = load %S.gen.Val, ptr %a408 - store %S.gen.Val %t433, ptr %a434 - call void @finch.copy.S_gen_Val(ptr %a435, ptr %a434) - %t436 = load %S.gen.Val, ptr %a435 - %t437 = insertvalue %S.gen.Ref %t432, %S.gen.Val %t436, 2 - call void @finch.drop.S_gen_Val(ptr %a408) - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a375) - call void @finch_str_drop(ptr %a341) - call void @finch_str_drop(ptr %a323) - call void @finch_str_drop(ptr %a300) - call void @finch.drop.S_ast_Type(ptr %a248) - call void @finch_str_drop(ptr %a60) - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.gen.Ref %t437 -} - -define internal void @finch.gen.checkArgs(ptr %p0, %S.ast.Node %p1, i64 %p2, i64 %p3, { ptr, i64, i64 } %p4) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.cond7250 -each.cond7250: - %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.body7251, label %each.end7253 -each.body7251: - %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 %then7254, label %endif7256 -then7254: - %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.4644, 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.4645, i64 36, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - call void @finch.gen.fail(ptr %t25, %S.ast.Node %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %endif7256 -endif7256: - br label %each.step7252 -each.step7252: - %t38 = load i64, ptr %a13 - %t39 = add i64 %t38, 1 - store i64 %t39, ptr %a13 - br label %each.cond7250 -each.end7253: - %t40 = load i64, ptr %a11 - %t41 = load i64, ptr %a4 - %t42 = icmp ne i64 %t40, %t41 - br i1 %t42, label %then7257, label %endif7259 -then7257: - %t43 = load ptr, ptr %a1 - %t44 = load %S.ast.Node, ptr %a2 - %t45 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.4646, i64 1, i64 0 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a48 - call void @finch_str_concat(ptr %a46, ptr %a47, ptr %a48) - %t49 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t49, ptr %a51 - store { ptr, i64, i64 } { ptr @.str.4647, i64 8, i64 0 }, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - %t55 = load i64, ptr %a4 - call void @finch_str_from_int(ptr %a56, i64 %t55) - %t57 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a59 - store { ptr, i64, i64 } %t57, ptr %a60 - call void @finch_str_concat(ptr %a58, ptr %a59, ptr %a60) - store { ptr, i64, i64 } %t54, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } %t57, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t63, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.4648, i64 22, i64 0 }, ptr %a66 - call void @finch_str_concat(ptr %a64, ptr %a65, ptr %a66) - store { ptr, i64, i64 } %t63, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load { ptr, i64, i64 }, ptr %a64 - %t69 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a70, i64 %t69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a73 - store { ptr, i64, i64 } %t71, ptr %a74 - call void @finch_str_concat(ptr %a72, ptr %a73, ptr %a74) - store { ptr, i64, i64 } %t68, ptr %a75 - call void @finch_str_drop(ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a72 - call void @finch.gen.fail(ptr %t43, %S.ast.Node %t44, { ptr, i64, i64 } %t77) - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif7259 -endif7259: - 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 - %a12 = alloca %S.gen.Val, align 16 - %a13 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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.4649, i64 3, i64 0 }) - %t9 = load %S.ast.Node, ptr %a2 - %t10 = load { ptr, i64, i64 }, ptr %a3 - %t11 = call %S.gen.Val @finch.gen.coerce(ptr %t4, %S.gen.Val %t7, %S.ast.Type %t8, %S.ast.Node %t9, { ptr, i64, i64 } %t10) - store %S.gen.Val %t7, ptr %a12 - call void @finch.drop.S_gen_Val(ptr %a12) - store %S.ast.Type %t8, ptr %a13 - call void @finch.drop.S_ast_Type(ptr %a13) - ret %S.gen.Val %t11 -} - -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.4650, 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.4651, 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 %then7260, label %endif7262 -then7260: - ret { ptr, i64, i64 } { ptr @.str.4652, i64 3, i64 0 } -endif7262: - %t7 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t7, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.4653, 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 %then7263, label %endif7265 -then7263: - ret { ptr, i64, i64 } { ptr @.str.4654, i64 5, i64 0 } -endif7265: - %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.4655, i64 3, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 1 - store { ptr, i64, i64 } { ptr @.str.4656, i64 5, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 2 - store { ptr, i64, i64 } { ptr @.str.4657, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 3 - store { ptr, i64, i64 } { ptr @.str.4658, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 4 - store { ptr, i64, i64 } { ptr @.str.4659, i64 2, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 5 - store { ptr, i64, i64 } { ptr @.str.4660, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 6 - store { ptr, i64, i64 } { ptr @.str.4661, i64 3, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 7 - store { ptr, i64, i64 } { ptr @.str.4662, i64 2, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 8 - store { ptr, i64, i64 } { ptr @.str.4663, i64 3, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 9 - store { ptr, i64, i64 } { ptr @.str.4664, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 10 - store { ptr, i64, i64 } { ptr @.str.4665, i64 3, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 11 - store { ptr, i64, i64 } { ptr @.str.4666, i64 3, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t13, i64 12 - store { ptr, i64, i64 } { ptr @.str.4667, 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.cond7266 -find.cond7266: - %t37 = load i64, ptr %a36 - %t38 = icmp slt i64 %t37, %t34 - br i1 %t38, label %find.body7267, label %find.end7270 -find.body7267: - %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.hit7268, label %find.next7269 -find.hit7268: - store i64 %t37, ptr %a33 - br label %find.end7270 -find.next7269: - %t45 = add i64 %t37, 1 - store i64 %t45, ptr %a36 - br label %find.cond7266 -find.end7270: - %t46 = load i64, ptr %a33 - %t47 = icmp sge i64 %t46, 0 - br i1 %t47, label %then7271, label %endif7273 -then7271: - %t48 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_copy(ptr %a50, ptr %a49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t51 -endif7273: - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.4668, 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 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %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 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca %S.ast.Type, align 16 - %a139 = alloca %S.ast.Type, align 16 - %a140 = alloca %S.ast.Type, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca %S.ast.Type, align 16 - %a226 = alloca %S.ast.Type, align 16 - %a227 = alloca %S.ast.Type, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.ast.Type, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca %S.ast.Type, align 16 - %a365 = alloca %S.ast.Type, align 16 - %a366 = alloca %S.ast.Type, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a387 = alloca %S.ast.Type, align 16 - %a388 = alloca %S.ast.Type, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca %S.ast.Type, align 16 - %a418 = alloca %S.ast.Type, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %a452 = alloca %S.ast.Type, align 16 - %a453 = alloca %S.ast.Type, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca %S.ast.Type, align 16 - %a512 = alloca %S.ast.Type, align 16 - %a527 = alloca %S.ast.Type, align 16 - %a528 = alloca %S.ast.Type, align 16 - %a541 = alloca %S.ast.Type, align 16 - %a542 = alloca %S.ast.Type, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca %S.ast.Type, align 16 - %a585 = alloca %S.ast.Type, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.ast.Type, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca %S.ast.Type, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca %S.ast.Type, align 16 - %a651 = alloca %S.ast.Type, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca %S.ast.Type, align 16 - %a689 = alloca %S.ast.Type, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a726 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - %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 %range7274, label %inrange7275 -range7274: - call void @finch_panic_index(ptr @.str.4669, i64 4116, i64 0, i64 %t11) - unreachable -inrange7275: - %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 %then7276, label %endif7278 -then7276: - %t27 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t27 -endif7278: - %t28 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t29 = load { ptr, i64, i64 }, ptr %t28 - store { ptr, i64, i64 } %t29, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.4670, 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.from7279 -logic.from7279: - br i1 %t33, label %logic.rhs7280, label %logic.end7281 -logic.rhs7280: - %t34 = load %S.ast.Type, ptr %a3 - %t35 = call i1 @finch.gen.isNumber(%S.ast.Type %t34) - br label %logic.rend7282 -logic.rend7282: - br label %logic.end7281 -logic.end7281: - %t36 = phi i1 [ false, %logic.from7279 ], [ %t35, %logic.rend7282 ] - br label %logic.from7283 -logic.from7283: - br i1 %t36, label %logic.rhs7284, label %logic.end7285 -logic.rhs7284: - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic7286, label %ok7287 -panic7286: - call void @finch_panic(ptr @.str.4671, i64 4121, ptr @.str.4672) - unreachable -ok7287: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 41 - %t40 = load { ptr, i64, i64 }, ptr %t39 - %t41 = load %S.ast.Node, ptr %a2 - %t42 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t41) - store { ptr, i64, i64 } %t40, ptr %a43 - store { ptr, i64, i64 } %t42, ptr %a44 - %t45 = call i32 @finch_str_eq(ptr %a43, ptr %a44) - %t46 = icmp ne i32 %t45, 0 - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend7288 -logic.rend7288: - br label %logic.end7285 -logic.end7285: - %t48 = phi i1 [ false, %logic.from7283 ], [ %t46, %logic.rend7288 ] - br i1 %t48, label %then7289, label %endif7291 -then7289: - %t49 = load ptr, ptr %a1 - %t50 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t49, { ptr, i64, i64 } { ptr @.str.4673, i64 17, i64 0 }) - store { ptr, i64, i64 } %t50, ptr %a51 - %t52 = load ptr, ptr %a1 - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch.gen.store(ptr %t52, { ptr, i64, i64 } { ptr @.str.4674, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.4675, i64 15, i64 0 }, { ptr, i64, i64 } %t53) - %t54 = load %S.ast.Type, ptr %a3 - %t55 = call i1 @finch.gen.isInt(%S.ast.Type %t54) - br i1 %t55, label %then7292, label %endif7294 -then7292: - %t56 = load ptr, ptr %a1 - %t57 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t56, { ptr, i64, i64 } { ptr @.str.4676, i64 3, i64 0 }) - store { ptr, i64, i64 } %t57, ptr %a58 - %t59 = load ptr, ptr %a1 - %t60 = load { ptr, i64, i64 }, ptr %a58 - call void @finch.gen.store(ptr %t59, { ptr, i64, i64 } { ptr @.str.4677, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.4678, i64 1, i64 0 }, { ptr, i64, i64 } %t60) - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = load %S.gen.Val, ptr %a17 - %t64 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t62, %S.gen.Val %t63) - store { ptr, i64, i64 } { ptr @.str.4679, i64 32, i64 0 }, ptr %a66 - store { ptr, i64, i64 } %t64, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t69, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.4680, i64 6, i64 0 }, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t69, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a70 - %t75 = load { ptr, i64, i64 }, ptr %a58 - store { ptr, i64, i64 } %t74, ptr %a77 - store { ptr, i64, i64 } %t75, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t74, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t80, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.4681, i64 6, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.4682, i64 1, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - %t97 = call { ptr, i64, i64 } @finch.gen.op(ptr %t61, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t97, ptr %a99 - %t100 = load ptr, ptr %a1 - %t101 = load { ptr, i64, i64 }, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.4683, i64 12, i64 0 }, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4684, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t100, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t110, ptr %a112 - call void @finch_str_drop(ptr %a112) - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic7295, label %ok7296 -panic7295: - call void @finch_panic(ptr @.str.4685, i64 4129, ptr @.str.4686) - unreachable -ok7296: - %t115 = getelementptr inbounds %S.gen.Gen, ptr %t113, i32 0, i32 42 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t111, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load ptr, ptr %a1 - %t119 = load { ptr, i64, i64 }, ptr %a51 - %t120 = call { ptr, i64, i64 } @finch.gen.load(ptr %t118, { ptr, i64, i64 } { ptr @.str.4687, i64 17, i64 0 }, { ptr, i64, i64 } %t119) - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic7297, label %ok7298 -panic7297: - call void @finch_panic(ptr @.str.4688, i64 4130, ptr @.str.4689) - unreachable -ok7298: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 43 - %t124 = load { ptr, i64, i64 }, ptr %t123 - store { ptr, i64, i64 } %t120, ptr %t123 - store { ptr, i64, i64 } %t124, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load ptr, ptr %a1 - %t127 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t126, %S.gen.Val %t127) - %t128 = load ptr, ptr %a1 - %t129 = load ptr, ptr %a1 - %t130 = load { ptr, i64, i64 }, ptr %a58 - %t131 = call { ptr, i64, i64 } @finch.gen.load(ptr %t129, { ptr, i64, i64 } { ptr @.str.4690, i64 3, i64 0 }, { ptr, i64, i64 } %t130) - %t132 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4691, i64 3, i64 0 }) - %t133 = load %S.ast.Type, ptr %a3 - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t131, %S.ast.Type %t132, %S.ast.Type %t133) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - store %S.ast.Type %t132, ptr %a136 - call void @finch.drop.S_ast_Type(ptr %a136) - %t137 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t134, 0 - %t138 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t138, ptr %a139 - call void @finch.copy.S_ast_Type(ptr %a140, ptr %a139) - %t141 = load %S.ast.Type, ptr %a140 - %t142 = insertvalue %S.gen.Val %t137, %S.ast.Type %t141, 1 - call void @finch_str_drop(ptr %a99) - call void @finch_str_drop(ptr %a58) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t142 -endif7294: - %t143 = load ptr, ptr %a1 - %t144 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t143, { ptr, i64, i64 } { ptr @.str.4692, i64 6, i64 0 }) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = load ptr, ptr %a1 - %t147 = load { ptr, i64, i64 }, ptr %a145 - call void @finch.gen.store(ptr %t146, { ptr, i64, i64 } { ptr @.str.4693, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.4694, i64 3, i64 0 }, { ptr, i64, i64 } %t147) - %t148 = load ptr, ptr %a1 - %t149 = load ptr, ptr %a1 - %t150 = load %S.gen.Val, ptr %a17 - %t151 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t149, %S.gen.Val %t150) - store { ptr, i64, i64 } { ptr @.str.4695, i64 34, i64 0 }, ptr %a153 - store { ptr, i64, i64 } %t151, ptr %a154 - call void @finch_str_concat(ptr %a152, ptr %a153, ptr %a154) - store { ptr, i64, i64 } %t151, ptr %a155 - call void @finch_str_drop(ptr %a155) - %t156 = load { ptr, i64, i64 }, ptr %a152 - store { ptr, i64, i64 } %t156, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.4696, i64 6, i64 0 }, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t156, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t161, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t161, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4697, i64 6, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.4698, i64 1, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t148, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - store { ptr, i64, i64 } %t184, ptr %a186 - %t187 = load ptr, ptr %a1 - %t188 = load { ptr, i64, i64 }, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.4699, i64 12, i64 0 }, ptr %a190 - store { ptr, i64, i64 } %t188, ptr %a191 - call void @finch_str_concat(ptr %a189, ptr %a190, ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a189 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.4700, i64 3, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = call { ptr, i64, i64 } @finch.gen.op(ptr %t187, { ptr, i64, i64 } %t197) - store { ptr, i64, i64 } %t197, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load ptr, ptr %a1 - %t201 = icmp eq ptr %t200, null - br i1 %t201, label %panic7299, label %ok7300 -panic7299: - call void @finch_panic(ptr @.str.4701, i64 4137, ptr @.str.4702) - unreachable -ok7300: - %t202 = getelementptr inbounds %S.gen.Gen, ptr %t200, i32 0, i32 42 - %t203 = load { ptr, i64, i64 }, ptr %t202 - store { ptr, i64, i64 } %t198, ptr %t202 - store { ptr, i64, i64 } %t203, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load ptr, ptr %a1 - %t206 = load { ptr, i64, i64 }, ptr %a51 - %t207 = call { ptr, i64, i64 } @finch.gen.load(ptr %t205, { ptr, i64, i64 } { ptr @.str.4703, i64 17, i64 0 }, { ptr, i64, i64 } %t206) - %t208 = load ptr, ptr %a1 - %t209 = icmp eq ptr %t208, null - br i1 %t209, label %panic7301, label %ok7302 -panic7301: - call void @finch_panic(ptr @.str.4704, i64 4138, ptr @.str.4705) - unreachable -ok7302: - %t210 = getelementptr inbounds %S.gen.Gen, ptr %t208, i32 0, i32 43 - %t211 = load { ptr, i64, i64 }, ptr %t210 - store { ptr, i64, i64 } %t207, ptr %t210 - store { ptr, i64, i64 } %t211, ptr %a212 - call void @finch_str_drop(ptr %a212) - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t213, %S.gen.Val %t214) - %t215 = load ptr, ptr %a1 - %t216 = load ptr, ptr %a1 - %t217 = load { ptr, i64, i64 }, ptr %a145 - %t218 = call { ptr, i64, i64 } @finch.gen.load(ptr %t216, { ptr, i64, i64 } { ptr @.str.4706, i64 6, i64 0 }, { ptr, i64, i64 } %t217) - %t219 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4707, i64 5, i64 0 }) - %t220 = load %S.ast.Type, ptr %a3 - %t221 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t215, { ptr, i64, i64 } %t218, %S.ast.Type %t219, %S.ast.Type %t220) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - store %S.ast.Type %t219, ptr %a223 - call void @finch.drop.S_ast_Type(ptr %a223) - %t224 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t221, 0 - %t225 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t225, ptr %a226 - call void @finch.copy.S_ast_Type(ptr %a227, ptr %a226) - %t228 = load %S.ast.Type, ptr %a227 - %t229 = insertvalue %S.gen.Val %t224, %S.ast.Type %t228, 1 - call void @finch_str_drop(ptr %a186) - call void @finch_str_drop(ptr %a145) - call void @finch_str_drop(ptr %a51) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t229 -endif7291: - %t230 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.4708, i64 3, i64 0 }, ptr %a233 - %t234 = call i32 @finch_str_eq(ptr %a232, ptr %a233) - %t235 = icmp ne i32 %t234, 0 - br label %logic.from7303 -logic.from7303: - br i1 %t235, label %logic.rhs7304, label %logic.end7305 -logic.rhs7304: - %t236 = load %S.ast.Type, ptr %a3 - %t237 = call i1 @finch.gen.isNumber(%S.ast.Type %t236) - br label %logic.rend7306 -logic.rend7306: - br label %logic.end7305 -logic.end7305: - %t238 = phi i1 [ false, %logic.from7303 ], [ %t237, %logic.rend7306 ] - br i1 %t238, label %then7307, label %endif7309 -then7307: - %t239 = load ptr, ptr %a1 - %t240 = load ptr, ptr %a1 - %t241 = icmp eq ptr %t240, null - br i1 %t241, label %panic7310, label %ok7311 -panic7310: - call void @finch_panic(ptr @.str.4709, i64 4143, ptr @.str.4710) - unreachable -ok7311: - %t242 = getelementptr inbounds %S.gen.Gen, ptr %t240, i32 0, i32 1 - %t243 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t244 = load i64, ptr %t243 - %t245 = load { ptr, i64, i64 }, ptr %t242 - %t246 = extractvalue { ptr, i64, i64 } %t245, 1 - %t247 = icmp uge i64 %t244, %t246 - br i1 %t247, label %range7312, label %inrange7313 -range7312: - call void @finch_panic_index(ptr @.str.4711, i64 4143, i64 %t244, i64 %t246) - unreachable -inrange7313: - %t248 = extractvalue { ptr, i64, i64 } %t245, 0 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t244 - %t250 = load { ptr, i64, i64 }, ptr %t249 - %t251 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t239, { ptr, i64, i64 } %t250) - store { ptr, i64, i64 } %t251, ptr %a252 - %t253 = load %S.ast.Type, ptr %a3 - %t254 = call i1 @finch.gen.isInt(%S.ast.Type %t253) - br i1 %t254, label %then7314, label %endif7316 -then7314: - %t255 = load ptr, ptr %a1 - %t256 = load ptr, ptr %a1 - %t257 = load %S.gen.Val, ptr %a17 - %t258 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t256, %S.gen.Val %t257) - store { ptr, i64, i64 } { ptr @.str.4712, i64 31, i64 0 }, ptr %a260 - store { ptr, i64, i64 } %t258, ptr %a261 - call void @finch_str_concat(ptr %a259, ptr %a260, ptr %a261) - store { ptr, i64, i64 } %t258, ptr %a262 - call void @finch_str_drop(ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a259 - store { ptr, i64, i64 } %t263, ptr %a265 - store { ptr, i64, i64 } { ptr @.str.4713, i64 6, i64 0 }, ptr %a266 - call void @finch_str_concat(ptr %a264, ptr %a265, ptr %a266) - store { ptr, i64, i64 } %t263, ptr %a267 - call void @finch_str_drop(ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a264 - %t269 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t268, ptr %a271 - store { ptr, i64, i64 } %t269, ptr %a272 - call void @finch_str_concat(ptr %a270, ptr %a271, ptr %a272) - store { ptr, i64, i64 } %t268, ptr %a273 - call void @finch_str_drop(ptr %a273) - %t274 = load { ptr, i64, i64 }, ptr %a270 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.4714, i64 6, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - store { ptr, i64, i64 } %t274, ptr %a278 - call void @finch_str_drop(ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a275 - %t280 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t281 = load i64, ptr %t280 - call void @finch_str_from_int(ptr %a282, i64 %t281) - %t283 = load { ptr, i64, i64 }, ptr %a282 - store { ptr, i64, i64 } %t279, ptr %a285 - store { ptr, i64, i64 } %t283, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t279, ptr %a287 - call void @finch_str_drop(ptr %a287) - store { ptr, i64, i64 } %t283, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t289, ptr %a291 - store { ptr, i64, i64 } { ptr @.str.4715, i64 1, i64 0 }, ptr %a292 - call void @finch_str_concat(ptr %a290, ptr %a291, ptr %a292) - store { ptr, i64, i64 } %t289, ptr %a293 - call void @finch_str_drop(ptr %a293) - %t294 = load { ptr, i64, i64 }, ptr %a290 - %t295 = call { ptr, i64, i64 } @finch.gen.op(ptr %t255, { ptr, i64, i64 } %t294) - store { ptr, i64, i64 } %t294, ptr %a296 - call void @finch_str_drop(ptr %a296) - store { ptr, i64, i64 } %t295, ptr %a297 - %t298 = load ptr, ptr %a1 - %t299 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t298, %S.gen.Val %t299) - %t300 = load ptr, ptr %a1 - %t301 = load { ptr, i64, i64 }, ptr %a297 - %t302 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4716, i64 3, i64 0 }) - %t303 = load %S.ast.Type, ptr %a3 - %t304 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t300, { ptr, i64, i64 } %t301, %S.ast.Type %t302, %S.ast.Type %t303) - store %S.ast.Type %t302, ptr %a305 - call void @finch.drop.S_ast_Type(ptr %a305) - %t306 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t304, 0 - %t307 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t307, ptr %a308 - call void @finch.copy.S_ast_Type(ptr %a309, ptr %a308) - %t310 = load %S.ast.Type, ptr %a309 - %t311 = insertvalue %S.gen.Val %t306, %S.ast.Type %t310, 1 - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t311 -endif7316: - %t312 = load ptr, ptr %a1 - %t313 = load ptr, ptr %a1 - %t314 = load %S.gen.Val, ptr %a17 - %t315 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t313, %S.gen.Val %t314) - store { ptr, i64, i64 } { ptr @.str.4717, i64 36, i64 0 }, ptr %a317 - store { ptr, i64, i64 } %t315, ptr %a318 - call void @finch_str_concat(ptr %a316, ptr %a317, ptr %a318) - store { ptr, i64, i64 } %t315, ptr %a319 - call void @finch_str_drop(ptr %a319) - %t320 = load { ptr, i64, i64 }, ptr %a316 - store { ptr, i64, i64 } %t320, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.4718, i64 6, i64 0 }, ptr %a323 - call void @finch_str_concat(ptr %a321, ptr %a322, ptr %a323) - store { ptr, i64, i64 } %t320, ptr %a324 - call void @finch_str_drop(ptr %a324) - %t325 = load { ptr, i64, i64 }, ptr %a321 - %t326 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } %t325, ptr %a328 - store { ptr, i64, i64 } %t326, ptr %a329 - call void @finch_str_concat(ptr %a327, ptr %a328, ptr %a329) - store { ptr, i64, i64 } %t325, ptr %a330 - call void @finch_str_drop(ptr %a330) - %t331 = load { ptr, i64, i64 }, ptr %a327 - store { ptr, i64, i64 } %t331, ptr %a333 - store { ptr, i64, i64 } { ptr @.str.4719, i64 6, i64 0 }, ptr %a334 - call void @finch_str_concat(ptr %a332, ptr %a333, ptr %a334) - store { ptr, i64, i64 } %t331, ptr %a335 - call void @finch_str_drop(ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a332 - %t337 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t338 = load i64, ptr %t337 - call void @finch_str_from_int(ptr %a339, i64 %t338) - %t340 = load { ptr, i64, i64 }, ptr %a339 - store { ptr, i64, i64 } %t336, ptr %a342 - store { ptr, i64, i64 } %t340, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t336, ptr %a344 - call void @finch_str_drop(ptr %a344) - store { ptr, i64, i64 } %t340, ptr %a345 - call void @finch_str_drop(ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.4720, i64 1, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t312, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a17 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a354 - %t359 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4721, i64 5, i64 0 }) - %t360 = load %S.ast.Type, ptr %a3 - %t361 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359, %S.ast.Type %t360) - store %S.ast.Type %t359, ptr %a362 - call void @finch.drop.S_ast_Type(ptr %a362) - %t363 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t361, 0 - %t364 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t364, ptr %a365 - call void @finch.copy.S_ast_Type(ptr %a366, ptr %a365) - %t367 = load %S.ast.Type, ptr %a366 - %t368 = insertvalue %S.gen.Val %t363, %S.ast.Type %t367, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a252) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t368 -endif7309: - %t369 = load %S.ast.Type, ptr %a3 - %t370 = call i1 @finch.gen.isInt(%S.ast.Type %t369) - br label %logic.from7317 -logic.from7317: - br i1 %t370, label %logic.rhs7318, label %logic.end7319 -logic.rhs7318: - %t371 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t372 = load { ptr, i64, i64 }, ptr %t371 - store { ptr, i64, i64 } %t372, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.4722, i64 4, i64 0 }, ptr %a374 - %t375 = call i32 @finch_str_eq(ptr %a373, ptr %a374) - %t376 = icmp ne i32 %t375, 0 - br label %logic.rend7320 -logic.rend7320: - br label %logic.end7319 -logic.end7319: - %t377 = phi i1 [ false, %logic.from7317 ], [ %t376, %logic.rend7320 ] - br i1 %t377, label %then7321, label %endif7323 -then7321: - %t378 = load ptr, ptr %a1 - %t379 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4723, i64 3, i64 0 }) - %t382 = load %S.ast.Type, ptr %a3 - %t383 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t378, { ptr, i64, i64 } %t380, %S.ast.Type %t381, %S.ast.Type %t382) - store %S.ast.Type %t381, ptr %a384 - call void @finch.drop.S_ast_Type(ptr %a384) - %t385 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t383, 0 - %t386 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t386, ptr %a387 - call void @finch.copy.S_ast_Type(ptr %a388, ptr %a387) - %t389 = load %S.ast.Type, ptr %a388 - %t390 = insertvalue %S.gen.Val %t385, %S.ast.Type %t389, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t390 -endif7323: - %t391 = load %S.ast.Type, ptr %a3 - %t392 = call i1 @finch.gen.isInt(%S.ast.Type %t391) - br label %logic.from7324 -logic.from7324: - br i1 %t392, label %logic.end7326, label %logic.rhs7325 -logic.rhs7325: - %t393 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t394, ptr %a395 - store { ptr, i64, i64 } { ptr @.str.4724, i64 4, i64 0 }, ptr %a396 - %t397 = call i32 @finch_str_eq(ptr %a395, ptr %a396) - %t398 = icmp ne i32 %t397, 0 - br label %logic.rend7327 -logic.rend7327: - br label %logic.end7326 -logic.end7326: - %t399 = phi i1 [ true, %logic.from7324 ], [ %t398, %logic.rend7327 ] - br i1 %t399, label %then7328, label %endif7330 -then7328: - %t400 = load %S.ast.Type, ptr %a23 - %t401 = call i1 @finch.gen.isInt(%S.ast.Type %t400) - br label %logic.from7331 -logic.from7331: - br i1 %t401, label %logic.end7333, label %logic.rhs7332 -logic.rhs7332: - %t402 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t403 = load { ptr, i64, i64 }, ptr %t402 - store { ptr, i64, i64 } %t403, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.4725, i64 4, i64 0 }, ptr %a405 - %t406 = call i32 @finch_str_eq(ptr %a404, ptr %a405) - %t407 = icmp ne i32 %t406, 0 - br label %logic.rend7334 -logic.rend7334: - br label %logic.end7333 -logic.end7333: - %t408 = phi i1 [ true, %logic.from7331 ], [ %t407, %logic.rend7334 ] - br i1 %t408, label %then7335, label %endif7337 -then7335: - %t409 = load ptr, ptr %a1 - %t410 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t411 = load { ptr, i64, i64 }, ptr %t410 - %t412 = load %S.ast.Type, ptr %a23 - %t413 = load %S.ast.Type, ptr %a3 - %t414 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t409, { ptr, i64, i64 } %t411, %S.ast.Type %t412, %S.ast.Type %t413) - %t415 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t414, 0 - %t416 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t416, ptr %a417 - call void @finch.copy.S_ast_Type(ptr %a418, ptr %a417) - %t419 = load %S.ast.Type, ptr %a418 - %t420 = insertvalue %S.gen.Val %t415, %S.ast.Type %t419, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t420 -endif7337: - %t421 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t422 = load { ptr, i64, i64 }, ptr %t421 - store { ptr, i64, i64 } %t422, ptr %a423 - store { ptr, i64, i64 } { ptr @.str.4726, i64 4, i64 0 }, ptr %a424 - %t425 = call i32 @finch_str_eq(ptr %a423, ptr %a424) - %t426 = icmp ne i32 %t425, 0 - br i1 %t426, label %then7338, label %endif7340 -then7338: - %t427 = load ptr, ptr %a1 - %t428 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t429 = load { ptr, i64, i64 }, ptr %t428 - store { ptr, i64, i64 } { ptr @.str.4727, i64 8, i64 0 }, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - %t433 = load { ptr, i64, i64 }, ptr %a430 - store { ptr, i64, i64 } %t433, ptr %a435 - store { ptr, i64, i64 } { ptr @.str.4728, i64 4, i64 0 }, ptr %a436 - call void @finch_str_concat(ptr %a434, ptr %a435, ptr %a436) - store { ptr, i64, i64 } %t433, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a434 - %t439 = load ptr, ptr %a1 - %t440 = load %S.ast.Type, ptr %a3 - %t441 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t439, %S.ast.Type %t440) - store { ptr, i64, i64 } %t438, ptr %a443 - store { ptr, i64, i64 } %t441, ptr %a444 - call void @finch_str_concat(ptr %a442, ptr %a443, ptr %a444) - store { ptr, i64, i64 } %t438, ptr %a445 - call void @finch_str_drop(ptr %a445) - store { ptr, i64, i64 } %t441, ptr %a446 - call void @finch_str_drop(ptr %a446) - %t447 = load { ptr, i64, i64 }, ptr %a442 - %t448 = call { ptr, i64, i64 } @finch.gen.op(ptr %t427, { ptr, i64, i64 } %t447) - store { ptr, i64, i64 } %t447, ptr %a449 - call void @finch_str_drop(ptr %a449) - %t450 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t448, 0 - %t451 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t451, ptr %a452 - call void @finch.copy.S_ast_Type(ptr %a453, ptr %a452) - %t454 = load %S.ast.Type, ptr %a453 - %t455 = insertvalue %S.gen.Val %t450, %S.ast.Type %t454, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t455 -endif7340: - %t456 = load %S.ast.Type, ptr %a23 - %t457 = call i1 @finch.gen.isFloat(%S.ast.Type %t456) - br label %logic.from7341 -logic.from7341: - br i1 %t457, label %logic.rhs7342, label %logic.end7343 -logic.rhs7342: - %t458 = load %S.ast.Type, ptr %a3 - %t459 = call i1 @finch.gen.isInt(%S.ast.Type %t458) - br label %logic.rend7344 -logic.rend7344: - br label %logic.end7343 -logic.end7343: - %t460 = phi i1 [ false, %logic.from7341 ], [ %t459, %logic.rend7344 ] - br i1 %t460, label %then7345, label %endif7347 -then7345: - store { ptr, i64, i64 } { ptr @.str.4729, i64 6, i64 0 }, ptr %a461 - %t462 = load %S.ast.Type, ptr %a3 - %t463 = call i1 @finch.gen.isSigned(%S.ast.Type %t462) - br i1 %t463, label %then7348, label %endif7350 -then7348: - %t464 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } { ptr @.str.4730, i64 6, i64 0 }, ptr %a461 - store { ptr, i64, i64 } %t464, ptr %a465 - call void @finch_str_drop(ptr %a465) - br label %endif7350 -endif7350: - %t466 = load ptr, ptr %a1 - %t467 = load { ptr, i64, i64 }, ptr %a461 - store { ptr, i64, i64 } %t467, ptr %a469 - store { ptr, i64, i64 } { ptr @.str.4731, i64 1, i64 0 }, ptr %a470 - call void @finch_str_concat(ptr %a468, ptr %a469, ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a468 - %t472 = load ptr, ptr %a1 - %t473 = load %S.ast.Type, ptr %a23 - %t474 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t472, %S.ast.Type %t473) - store { ptr, i64, i64 } %t471, ptr %a476 - store { ptr, i64, i64 } %t474, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t471, ptr %a478 - call void @finch_str_drop(ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a475 - store { ptr, i64, i64 } %t480, ptr %a482 - store { ptr, i64, i64 } { ptr @.str.4732, i64 1, i64 0 }, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t480, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - %t486 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t487 = load { ptr, i64, i64 }, ptr %t486 - store { ptr, i64, i64 } %t485, ptr %a489 - store { ptr, i64, i64 } %t487, ptr %a490 - call void @finch_str_concat(ptr %a488, ptr %a489, ptr %a490) - store { ptr, i64, i64 } %t485, ptr %a491 - call void @finch_str_drop(ptr %a491) - %t492 = load { ptr, i64, i64 }, ptr %a488 - store { ptr, i64, i64 } %t492, ptr %a494 - store { ptr, i64, i64 } { ptr @.str.4733, i64 4, i64 0 }, ptr %a495 - call void @finch_str_concat(ptr %a493, ptr %a494, ptr %a495) - store { ptr, i64, i64 } %t492, ptr %a496 - call void @finch_str_drop(ptr %a496) - %t497 = load { ptr, i64, i64 }, ptr %a493 - %t498 = load ptr, ptr %a1 - %t499 = load %S.ast.Type, ptr %a3 - %t500 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t498, %S.ast.Type %t499) - store { ptr, i64, i64 } %t497, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a503 - call void @finch_str_concat(ptr %a501, ptr %a502, ptr %a503) - store { ptr, i64, i64 } %t497, ptr %a504 - call void @finch_str_drop(ptr %a504) - store { ptr, i64, i64 } %t500, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = load { ptr, i64, i64 }, ptr %a501 - %t507 = call { ptr, i64, i64 } @finch.gen.op(ptr %t466, { ptr, i64, i64 } %t506) - store { ptr, i64, i64 } %t506, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t507, 0 - %t510 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t510, ptr %a511 - call void @finch.copy.S_ast_Type(ptr %a512, ptr %a511) - %t513 = load %S.ast.Type, ptr %a512 - %t514 = insertvalue %S.gen.Val %t509, %S.ast.Type %t513, 1 - call void @finch_str_drop(ptr %a461) - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t514 -endif7347: - br label %endif7330 -endif7330: - %t515 = load %S.ast.Type, ptr %a3 - %t516 = call i1 @finch.gen.isFloat(%S.ast.Type %t515) - br i1 %t516, label %then7351, label %endif7353 -then7351: - %t517 = load %S.ast.Type, ptr %a23 - %t518 = call i1 @finch.gen.isInt(%S.ast.Type %t517) - br i1 %t518, label %then7354, label %endif7356 -then7354: - %t519 = load ptr, ptr %a1 - %t520 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - %t522 = load %S.ast.Type, ptr %a23 - %t523 = load %S.ast.Type, ptr %a3 - %t524 = call { ptr, i64, i64 } @finch.gen.intToFloat(ptr %t519, { ptr, i64, i64 } %t521, %S.ast.Type %t522, %S.ast.Type %t523) - %t525 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t524, 0 - %t526 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t526, ptr %a527 - call void @finch.copy.S_ast_Type(ptr %a528, ptr %a527) - %t529 = load %S.ast.Type, ptr %a528 - %t530 = insertvalue %S.gen.Val %t525, %S.ast.Type %t529, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t530 -endif7356: - %t531 = load %S.ast.Type, ptr %a23 - %t532 = call i1 @finch.gen.isFloat(%S.ast.Type %t531) - br i1 %t532, label %then7357, label %endif7359 -then7357: - %t533 = load ptr, ptr %a1 - %t534 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load %S.ast.Type, ptr %a23 - %t537 = load %S.ast.Type, ptr %a3 - %t538 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t533, { ptr, i64, i64 } %t535, %S.ast.Type %t536, %S.ast.Type %t537) - %t539 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t538, 0 - %t540 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t540, ptr %a541 - call void @finch.copy.S_ast_Type(ptr %a542, ptr %a541) - %t543 = load %S.ast.Type, ptr %a542 - %t544 = insertvalue %S.gen.Val %t539, %S.ast.Type %t543, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t544 -endif7359: - br label %endif7353 -endif7353: - %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.4734, i64 4, i64 0 }, ptr %a548 - %t549 = call i32 @finch_str_eq(ptr %a547, ptr %a548) - %t550 = icmp ne i32 %t549, 0 - br label %logic.from7360 -logic.from7360: - br i1 %t550, label %logic.rhs7361, label %logic.end7362 -logic.rhs7361: - %t551 = load %S.ast.Type, ptr %a23 - %t552 = call i1 @finch.gen.isInt(%S.ast.Type %t551) - br label %logic.rend7363 -logic.rend7363: - br label %logic.end7362 -logic.end7362: - %t553 = phi i1 [ false, %logic.from7360 ], [ %t552, %logic.rend7363 ] - br i1 %t553, label %then7364, label %endif7366 -then7364: - %t554 = load ptr, ptr %a1 - %t555 = load ptr, ptr %a1 - %t556 = load %S.ast.Type, ptr %a23 - %t557 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t555, %S.ast.Type %t556) - store { ptr, i64, i64 } { ptr @.str.4735, i64 8, i64 0 }, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t557, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.4736, i64 1, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t569 = load { ptr, i64, i64 }, ptr %t568 - store { ptr, i64, i64 } %t567, ptr %a571 - store { ptr, i64, i64 } %t569, ptr %a572 - call void @finch_str_concat(ptr %a570, ptr %a571, ptr %a572) - store { ptr, i64, i64 } %t567, ptr %a573 - call void @finch_str_drop(ptr %a573) - %t574 = load { ptr, i64, i64 }, ptr %a570 - store { ptr, i64, i64 } %t574, ptr %a576 - store { ptr, i64, i64 } { ptr @.str.4737, i64 3, i64 0 }, ptr %a577 - call void @finch_str_concat(ptr %a575, ptr %a576, ptr %a577) - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_drop(ptr %a578) - %t579 = load { ptr, i64, i64 }, ptr %a575 - %t580 = call { ptr, i64, i64 } @finch.gen.op(ptr %t554, { ptr, i64, i64 } %t579) - store { ptr, i64, i64 } %t579, ptr %a581 - call void @finch_str_drop(ptr %a581) - %t582 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t580, 0 - %t583 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t583, ptr %a584 - call void @finch.copy.S_ast_Type(ptr %a585, ptr %a584) - %t586 = load %S.ast.Type, ptr %a585 - %t587 = insertvalue %S.gen.Val %t582, %S.ast.Type %t586, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t587 -endif7366: - %t588 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t589 = load { ptr, i64, i64 }, ptr %t588 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.4738, i64 3, i64 0 }, ptr %a591 - %t592 = call i32 @finch_str_eq(ptr %a590, ptr %a591) - %t593 = icmp ne i32 %t592, 0 - br label %logic.from7367 -logic.from7367: - br i1 %t593, label %logic.rhs7368, label %logic.end7369 -logic.rhs7368: - %t594 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t595 = load { ptr, i64, i64 }, ptr %t594 - store { ptr, i64, i64 } %t595, ptr %a596 - store { ptr, i64, i64 } { ptr @.str.4739, i64 3, i64 0 }, ptr %a597 - %t598 = call i32 @finch_str_eq(ptr %a596, ptr %a597) - %t599 = icmp ne i32 %t598, 0 - br label %logic.from7370 -logic.from7370: - br i1 %t599, label %logic.end7372, label %logic.rhs7371 -logic.rhs7371: - %t600 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t601 = load { ptr, i64, i64 }, ptr %t600 - store { ptr, i64, i64 } %t601, ptr %a602 - store { ptr, i64, i64 } { ptr @.str.4740, i64 4, i64 0 }, ptr %a603 - %t604 = call i32 @finch_str_eq(ptr %a602, ptr %a603) - %t605 = icmp ne i32 %t604, 0 - br label %logic.rend7373 -logic.rend7373: - br label %logic.end7372 -logic.end7372: - %t606 = phi i1 [ true, %logic.from7370 ], [ %t605, %logic.rend7373 ] - br label %logic.rend7374 -logic.rend7374: - br label %logic.end7369 -logic.end7369: - %t607 = phi i1 [ false, %logic.from7367 ], [ %t606, %logic.rend7374 ] - br i1 %t607, label %then7375, label %endif7377 -then7375: - %t608 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t609 = load { ptr, i64, i64 }, ptr %t608 - store { ptr, i64, i64 } %t609, ptr %a610 - call void @finch_str_copy(ptr %a611, ptr %a610) - %t612 = load { ptr, i64, i64 }, ptr %a611 - %t613 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t612, 0 - %t614 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t614, ptr %a615 - call void @finch.copy.S_ast_Type(ptr %a616, ptr %a615) - %t617 = load %S.ast.Type, ptr %a616 - %t618 = insertvalue %S.gen.Val %t613, %S.ast.Type %t617, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t618 -endif7377: - %t619 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t620 = load { ptr, i64, i64 }, ptr %t619 - store { ptr, i64, i64 } %t620, ptr %a621 - store { ptr, i64, i64 } { ptr @.str.4741, i64 3, i64 0 }, ptr %a622 - %t623 = call i32 @finch_str_eq(ptr %a621, ptr %a622) - %t624 = icmp ne i32 %t623, 0 - br label %logic.from7378 -logic.from7378: - br i1 %t624, label %logic.rhs7379, label %logic.end7380 -logic.rhs7379: - %t625 = load %S.ast.Type, ptr %a23 - %t626 = call i1 @finch.gen.isInt(%S.ast.Type %t625) - br label %logic.rend7381 -logic.rend7381: - br label %logic.end7380 -logic.end7380: - %t627 = phi i1 [ false, %logic.from7378 ], [ %t626, %logic.rend7381 ] - br i1 %t627, label %then7382, label %endif7384 -then7382: - %t628 = load ptr, ptr %a1 - %t629 = load ptr, ptr %a1 - %t630 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t631 = load { ptr, i64, i64 }, ptr %t630 - %t632 = load %S.ast.Type, ptr %a23 - %t633 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4743, i64 3, i64 0 }) - %t634 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t629, { ptr, i64, i64 } %t631, %S.ast.Type %t632, %S.ast.Type %t633) - store %S.ast.Type %t633, ptr %a635 - call void @finch.drop.S_ast_Type(ptr %a635) - store { ptr, i64, i64 } { ptr @.str.4742, i64 13, i64 0 }, ptr %a637 - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_concat(ptr %a636, ptr %a637, ptr %a638) - store { ptr, i64, i64 } %t634, ptr %a639 - call void @finch_str_drop(ptr %a639) - %t640 = load { ptr, i64, i64 }, ptr %a636 - store { ptr, i64, i64 } %t640, ptr %a642 - store { ptr, i64, i64 } { ptr @.str.4744, i64 7, i64 0 }, ptr %a643 - call void @finch_str_concat(ptr %a641, ptr %a642, ptr %a643) - store { ptr, i64, i64 } %t640, ptr %a644 - call void @finch_str_drop(ptr %a644) - %t645 = load { ptr, i64, i64 }, ptr %a641 - %t646 = call { ptr, i64, i64 } @finch.gen.op(ptr %t628, { ptr, i64, i64 } %t645) - store { ptr, i64, i64 } %t645, ptr %a647 - call void @finch_str_drop(ptr %a647) - %t648 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t646, 0 - %t649 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t649, ptr %a650 - call void @finch.copy.S_ast_Type(ptr %a651, ptr %a650) - %t652 = load %S.ast.Type, ptr %a651 - %t653 = insertvalue %S.gen.Val %t648, %S.ast.Type %t652, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t653 -endif7384: - %t654 = load %S.ast.Type, ptr %a3 - %t655 = call i1 @finch.gen.isInt(%S.ast.Type %t654) - br label %logic.from7385 -logic.from7385: - br i1 %t655, label %logic.rhs7386, label %logic.end7387 -logic.rhs7386: - %t656 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t657 = load { ptr, i64, i64 }, ptr %t656 - store { ptr, i64, i64 } %t657, ptr %a658 - store { ptr, i64, i64 } { ptr @.str.4745, i64 3, i64 0 }, ptr %a659 - %t660 = call i32 @finch_str_eq(ptr %a658, ptr %a659) - %t661 = icmp ne i32 %t660, 0 - br label %logic.rend7388 -logic.rend7388: - br label %logic.end7387 -logic.end7387: - %t662 = phi i1 [ false, %logic.from7385 ], [ %t661, %logic.rend7388 ] - br i1 %t662, label %then7389, label %endif7391 -then7389: - %t663 = load ptr, ptr %a1 - %t664 = getelementptr inbounds %S.gen.Val, ptr %a17, i32 0, i32 0 - %t665 = load { ptr, i64, i64 }, ptr %t664 - store { ptr, i64, i64 } { ptr @.str.4746, i64 13, i64 0 }, ptr %a667 - store { ptr, i64, i64 } %t665, ptr %a668 - call void @finch_str_concat(ptr %a666, ptr %a667, ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a666 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.4747, i64 4, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = load ptr, ptr %a1 - %t676 = load %S.ast.Type, ptr %a3 - %t677 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t675, %S.ast.Type %t676) - store { ptr, i64, i64 } %t674, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t674, ptr %a681 - call void @finch_str_drop(ptr %a681) - store { ptr, i64, i64 } %t677, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a678 - %t684 = call { ptr, i64, i64 } @finch.gen.op(ptr %t663, { ptr, i64, i64 } %t683) - store { ptr, i64, i64 } %t683, ptr %a685 - call void @finch_str_drop(ptr %a685) - %t686 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t684, 0 - %t687 = load %S.ast.Type, ptr %a3 - store %S.ast.Type %t687, ptr %a688 - call void @finch.copy.S_ast_Type(ptr %a689, ptr %a688) - %t690 = load %S.ast.Type, ptr %a689 - %t691 = insertvalue %S.gen.Val %t686, %S.ast.Type %t690, 1 - call void @finch.drop.S_ast_Type(ptr %a23) - call void @finch.drop.S_gen_Val(ptr %a17) - ret %S.gen.Val %t691 -endif7391: - %t692 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 0 - %t693 = load { ptr, i64, i64 }, ptr %t692 - store { ptr, i64, i64 } %t693, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.4748, i64 3, i64 0 }, ptr %a695 - %t696 = call i32 @finch_str_eq(ptr %a694, ptr %a695) - %t697 = icmp ne i32 %t696, 0 - br label %logic.from7392 -logic.from7392: - br i1 %t697, label %logic.rhs7393, label %logic.end7394 -logic.rhs7393: - %t698 = getelementptr inbounds %S.ast.Type, ptr %a23, i32 0, i32 0 - %t699 = load { ptr, i64, i64 }, ptr %t698 - store { ptr, i64, i64 } %t699, ptr %a700 - store { ptr, i64, i64 } { ptr @.str.4749, i64 3, i64 0 }, ptr %a701 - %t702 = call i32 @finch_str_eq(ptr %a700, ptr %a701) - %t703 = icmp ne i32 %t702, 0 - br label %logic.rend7395 -logic.rend7395: - br label %logic.end7394 -logic.end7394: - %t704 = phi i1 [ false, %logic.from7392 ], [ %t703, %logic.rend7395 ] - br i1 %t704, label %then7396, label %endif7398 -then7396: - %t705 = load ptr, ptr %a1 - %t706 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t707 = load { ptr, i64, i64 }, ptr %t706 - %t708 = extractvalue { ptr, i64, i64 } %t707, 1 - %t709 = icmp uge i64 0, %t708 - br i1 %t709, label %range7399, label %inrange7400 -range7399: - call void @finch_panic_index(ptr @.str.4750, i64 4192, i64 0, i64 %t708) - unreachable -inrange7400: - %t710 = extractvalue { ptr, i64, i64 } %t707, 0 - %t711 = getelementptr inbounds %S.ast.Node, ptr %t710, i64 0 - %t712 = load %S.ast.Node, ptr %t711 - call void @finch.gen.fail(ptr %t705, %S.ast.Node %t712, { ptr, i64, i64 } { ptr @.str.4751, i64 70, i64 0 }) - br label %endif7398 -endif7398: - %t713 = load ptr, ptr %a1 - %t714 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t715 = load { ptr, i64, i64 }, ptr %t714 - %t716 = extractvalue { ptr, i64, i64 } %t715, 1 - %t717 = icmp uge i64 0, %t716 - br i1 %t717, label %range7401, label %inrange7402 -range7401: - call void @finch_panic_index(ptr @.str.4752, i64 4194, i64 0, i64 %t716) - unreachable -inrange7402: - %t718 = extractvalue { ptr, i64, i64 } %t715, 0 - %t719 = getelementptr inbounds %S.ast.Node, ptr %t718, i64 0 - %t720 = load %S.ast.Node, ptr %t719 - %t721 = load %S.ast.Type, ptr %a23 - %t722 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t721) - store { ptr, i64, i64 } { ptr @.str.4753, i64 11, i64 0 }, ptr %a724 - store { ptr, i64, i64 } %t722, ptr %a725 - call void @finch_str_concat(ptr %a723, ptr %a724, ptr %a725) - store { ptr, i64, i64 } %t722, ptr %a726 - call void @finch_str_drop(ptr %a726) - %t727 = load { ptr, i64, i64 }, ptr %a723 - store { ptr, i64, i64 } %t727, ptr %a729 - store { ptr, i64, i64 } { ptr @.str.4754, i64 6, i64 0 }, ptr %a730 - call void @finch_str_concat(ptr %a728, ptr %a729, ptr %a730) - store { ptr, i64, i64 } %t727, ptr %a731 - call void @finch_str_drop(ptr %a731) - %t732 = load { ptr, i64, i64 }, ptr %a728 - %t733 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } %t732, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - store { ptr, i64, i64 } %t732, ptr %a738 - call void @finch_str_drop(ptr %a738) - %t739 = load { ptr, i64, i64 }, ptr %a735 - call void @finch.gen.fail(ptr %t713, %S.ast.Node %t720, { ptr, i64, i64 } %t739) - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_drop(ptr %a740) - %t741 = load %S.gen.Val, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a23) - ret %S.gen.Val %t741 -} - -define internal i64 @finch.gen.sizeBytes(ptr %p0, %S.ast.Type %p1) { -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.4755, 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 %then7403, label %endif7405 -then7403: - %t9 = load ptr, ptr %a1 - %t10 = icmp eq ptr %t9, null - br i1 %t10, label %panic7406, label %ok7407 -panic7406: - call void @finch_panic(ptr @.str.4756, i64 4227, ptr @.str.4757) - unreachable -ok7407: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 16 - %t12 = load ptr, ptr %a1 - %t13 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %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 %range7408, label %inrange7409 -range7408: - call void @finch_panic_index(ptr @.str.4758, i64 4227, i64 %t17, i64 %t19) - unreachable -inrange7409: - %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 -endif7405: - %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.4759, 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 %then7410, label %endif7412 -then7410: - %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 %range7413, label %inrange7414 -range7413: - call void @finch_panic_index(ptr @.str.4760, i64 4230, i64 0, i64 %t36) - unreachable -inrange7414: - %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 -endif7412: - %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.4761, 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.from7415 -logic.from7415: - br i1 %t48, label %logic.end7417, label %logic.rhs7416 -logic.rhs7416: - %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.4762, 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.rend7418 -logic.rend7418: - br label %logic.end7417 -logic.end7417: - %t55 = phi i1 [ true, %logic.from7415 ], [ %t54, %logic.rend7418 ] - br i1 %t55, label %then7419, label %endif7421 -then7419: - ret i64 8 -endif7421: - %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.4763, 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 %then7422, label %endif7424 -then7422: - ret i64 8 -endif7424: - %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.4764, 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 %then7425, label %endif7427 -then7425: - ret i64 4 -endif7427: - %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.4765, 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 %then7428, label %endif7430 -then7428: - ret i64 1 -endif7430: - %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.drop.arr_S_gen_Leaf(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - 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 - 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.4766, 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 %then7431, label %else7432 -then7431: - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic7434, label %ok7435 -panic7434: - call void @finch_panic(ptr @.str.4767, i64 4251, ptr @.str.4768) - unreachable -ok7435: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 16 - %t14 = load ptr, ptr %a1 - %t15 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t16 = load { ptr, i64, i64 }, ptr %t15 - %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 %range7436, label %inrange7437 -range7436: - call void @finch_panic_index(ptr @.str.4769, i64 4251, i64 %t19, i64 %t21) - unreachable -inrange7437: - %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.cond7438 -for.cond7438: - %t34 = load i64, ptr %a33 - %t35 = icmp slt i64 %t34, %t32 - br i1 %t35, label %for.body7439, label %for.end7441 -for.body7439: - %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 %range7442, label %inrange7443 -range7442: - call void @finch_panic_index(ptr @.str.4770, i64 4253, i64 %t38, i64 %t40) - unreachable -inrange7443: - %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 %range7444, label %inrange7445 -range7444: - call void @finch_panic_index(ptr @.str.4771, i64 4253, i64 %t47, i64 %t49) - unreachable -inrange7445: - %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.cond7446 -each.cond7446: - %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.body7447, label %each.end7449 -each.body7447: - %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.step7448 -each.step7448: - %t72 = load i64, ptr %a57 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %a57 - br label %each.cond7446 -each.end7449: - call void @finch.drop.arr_S_gen_Leaf(ptr %a56) - br label %for.step7440 -for.step7440: - %t74 = load i64, ptr %a33 - %t75 = add i64 %t74, 1 - store i64 %t75, ptr %a33 - br label %for.cond7438 -for.end7441: - call void @finch.drop.S_gen_StructDef(ptr %a29) - br label %endif7433 -else7432: - %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.4772, 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 %then7450, label %else7451 -then7450: - %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 %range7453, label %inrange7454 -range7453: - call void @finch_panic_index(ptr @.str.4773, i64 4258, i64 0, i64 %t85) - unreachable -inrange7454: - %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.cond7455 -for.cond7455: - %t95 = load i64, ptr %a94 - %t96 = icmp slt i64 %t95, %t93 - br i1 %t96, label %for.body7456, label %for.end7458 -for.body7456: - %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 %range7459, label %inrange7460 -range7459: - call void @finch_panic_index(ptr @.str.4774, i64 4260, i64 0, i64 %t100) - unreachable -inrange7460: - %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.cond7461 -each.cond7461: - %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.body7462, label %each.end7464 -each.body7462: - %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.step7463 -each.step7463: - %t127 = load i64, ptr %a112 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a112 - br label %each.cond7461 -each.end7464: - call void @finch.drop.arr_S_gen_Leaf(ptr %a111) - br label %for.step7457 -for.step7457: - %t129 = load i64, ptr %a94 - %t130 = add i64 %t129, 1 - store i64 %t130, ptr %a94 - br label %for.cond7455 -for.end7458: - br label %endif7452 -else7451: - %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.4775, 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 %endif7452 -endif7452: - br label %endif7433 -endif7433: - %t152 = load { ptr, i64, i64 }, ptr %a4 - ret { ptr, i64, i64 } %t152 -} - -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 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca i64, align 16 - %a102 = alloca %S.gen.Leaf, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store %S.gen.Abi %p2, ptr %a3 - 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.from7465 -logic.from7465: - br i1 %t17, label %logic.rhs7466, label %logic.end7467 -logic.rhs7466: - %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.rend7468 -logic.rend7468: - br label %logic.end7467 -logic.end7467: - %t21 = phi i1 [ false, %logic.from7465 ], [ %t20, %logic.rend7468 ] - store i1 %t21, ptr %a22 - store i64 0, ptr %a23 - br label %each.cond7469 -each.cond7469: - %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.body7470, label %each.end7472 -each.body7470: - %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.from7473 -logic.from7473: - br i1 %t34, label %logic.end7475, label %logic.rhs7474 -logic.rhs7474: - %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 %range7476, label %inrange7477 -range7476: - call void @finch_panic_index(ptr @.str.4776, i64 4277, i64 0, i64 %t38) - unreachable -inrange7477: - %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.rend7478 -logic.rend7478: - br label %logic.end7475 -logic.end7475: - %t45 = phi i1 [ true, %logic.from7473 ], [ %t44, %logic.rend7478 ] - br i1 %t45, label %then7479, label %endif7481 -then7479: - store i1 false, ptr %a22 - br label %endif7481 -endif7481: - br label %each.step7471 -each.step7471: - %t46 = load i64, ptr %a23 - %t47 = add i64 %t46, 1 - store i64 %t47, ptr %a23 - br label %each.cond7469 -each.end7472: - %t48 = load i1, ptr %a22 - br i1 %t48, label %then7482, label %endif7484 -then7482: - store { ptr, i64, i64 } { ptr @.str.4777, 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 %range7485, label %inrange7486 -range7485: - call void @finch_panic_index(ptr @.str.4778, i64 4283, i64 0, i64 %t51) - unreachable -inrange7486: - %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 %then7487, label %endif7489 -then7487: - %t57 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.4779, i64 6, i64 0 }, ptr %a49 - store { ptr, i64, i64 } %t57, ptr %a58 - call void @finch_str_drop(ptr %a58) - br label %endif7489 -endif7489: - %t59 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } { ptr @.str.4780, i64 6, i64 0 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t62, i32 0, i32 1 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t65 = load i64, ptr %t64 - call void @finch_str_from_int(ptr %a66, i64 %t65) - %t67 = load { ptr, i64, i64 }, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4781, i64 1, i64 0 }, ptr %a69 - store { ptr, i64, i64 } %t67, ptr %a70 - call void @finch_str_concat(ptr %a68, ptr %a69, ptr %a70) - store { ptr, i64, i64 } %t67, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = load { ptr, i64, i64 }, ptr %a68 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.4782, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t72, ptr %a76 - call void @finch_str_drop(ptr %a76) - %t77 = load { ptr, i64, i64 }, ptr %a73 - %t78 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t77, ptr %a80 - store { ptr, i64, i64 } %t78, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a79 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4783, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %t63 - %t90 = add i64 %t89, 1 - call void @finch_arr_reserve(ptr %t62, i64 %t90, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t91 = load ptr, ptr %t62 - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %t91, i64 %t89 - store { ptr, i64, i64 } %t88, ptr %t92 - store i64 %t90, ptr %t63 - store { ptr, i64, i64 } zeroinitializer, ptr %a93 - store i64 0, ptr %a94 - br label %each.cond7490 -each.cond7490: - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t96 = load i64, ptr %t95 - %t97 = load i64, ptr %a94 - %t98 = icmp slt i64 %t97, %t96 - br i1 %t98, label %each.body7491, label %each.end7493 -each.body7491: - %t99 = load ptr, ptr %a14 - %t100 = getelementptr inbounds %S.gen.Leaf, ptr %t99, i64 %t97 - %t101 = load %S.gen.Leaf, ptr %t100 - store %S.gen.Leaf %t101, ptr %a102 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - %t104 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_copy(ptr %a106, ptr %a105) - %t107 = load { ptr, i64, i64 }, ptr %a106 - %t108 = load i64, ptr %t103 - %t109 = add i64 %t108, 1 - call void @finch_arr_reserve(ptr %a93, i64 %t109, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t110 = load ptr, ptr %a93 - %t111 = getelementptr inbounds { ptr, i64, i64 }, ptr %t110, i64 %t108 - store { ptr, i64, i64 } %t107, ptr %t111 - store i64 %t109, ptr %t103 - br label %each.step7492 -each.step7492: - %t112 = load i64, ptr %a94 - %t113 = add i64 %t112, 1 - store i64 %t113, ptr %a94 - br label %each.cond7490 -each.end7493: - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %a93, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4785, i64 2, i64 0 }, ptr %a115 - call void @finch_str_join(ptr %a116, ptr %a93, ptr %a115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.4784, i64 2, i64 0 }, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.4786, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t127, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_str(ptr %a93) - call void @finch_str_drop(ptr %a49) - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t131 -endif7484: - %t132 = load i64, ptr %a4 - %t133 = icmp sgt i64 %t132, 16 - br i1 %t133, label %then7494, label %endif7496 -then7494: - %t134 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t135 = load { ptr, i64, i64 }, ptr %t134 - store { ptr, i64, i64 } { ptr @.str.4787, i64 8, i64 0 }, ptr %t134 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t137 -endif7496: - %t138 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 0 - %t139 = load { ptr, i64, i64 }, ptr %t138 - store { ptr, i64, i64 } { ptr @.str.4788, i64 6, i64 0 }, ptr %t138 - store { ptr, i64, i64 } %t139, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load i64, ptr %a5 - %t142 = icmp sge i64 %t141, 16 - br i1 %t142, label %then7497, label %else7498 -then7497: - %t143 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t144 = getelementptr inbounds { ptr, i64, i64 }, ptr %t143, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - call void @finch_arr_reserve(ptr %t143, i64 %t146, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t147 = load ptr, ptr %t143 - %t148 = getelementptr inbounds { ptr, i64, i64 }, ptr %t147, i64 %t145 - store { ptr, i64, i64 } { ptr @.str.4789, i64 4, i64 0 }, ptr %t148 - store i64 %t146, ptr %t144 - %t149 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } { ptr @.str.4790, i64 4, i64 0 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif7499 -else7498: - %t152 = load i64, ptr %a4 - %t153 = icmp sle i64 %t152, 8 - br i1 %t153, label %then7500, label %else7501 -then7500: - %t154 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = add i64 %t156, 1 - call void @finch_arr_reserve(ptr %t154, i64 %t157, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t158 = load ptr, ptr %t154 - %t159 = getelementptr inbounds { ptr, i64, i64 }, ptr %t158, i64 %t156 - store { ptr, i64, i64 } { ptr @.str.4791, i64 3, i64 0 }, ptr %t159 - store i64 %t157, ptr %t155 - %t160 = load i64, ptr %a4 - %t161 = mul i64 %t160, 8 - call void @finch_str_from_int(ptr %a162, i64 %t161) - %t163 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.4792, i64 1, i64 0 }, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t168, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_drop(ptr %a171) - br label %endif7502 -else7501: - %t172 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 1 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i32 0, i32 1 - %t174 = load i64, ptr %t173 - %t175 = add i64 %t174, 1 - call void @finch_arr_reserve(ptr %t172, i64 %t175, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t176 = load ptr, ptr %t172 - %t177 = getelementptr inbounds { ptr, i64, i64 }, ptr %t176, i64 %t174 - store { ptr, i64, i64 } { ptr @.str.4793, i64 9, i64 0 }, ptr %t177 - store i64 %t175, ptr %t173 - %t178 = getelementptr inbounds %S.gen.Abi, ptr %a10, i32 0, i32 2 - %t179 = load { ptr, i64, i64 }, ptr %t178 - store { ptr, i64, i64 } { ptr @.str.4794, i64 9, i64 0 }, ptr %t178 - store { ptr, i64, i64 } %t179, ptr %a180 - call void @finch_str_drop(ptr %a180) - br label %endif7502 -endif7502: - br label %endif7499 -endif7499: - %t181 = load %S.gen.Abi, ptr %a10 - call void @finch.drop.arr_S_gen_Leaf(ptr %a14) - ret %S.gen.Abi %t181 -} - -define internal void @finch.drop.S_gen_Abi(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Abi, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal %S.gen.Abi @finch.gen.classify(ptr %p0, %S.ast.Type %p1) { -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 - %a27 = alloca %S.gen.StructDef, align 16 - %a28 = alloca %S.gen.StructDef, align 16 - %a30 = alloca %S.gen.StructDef, align 16 - %a33 = alloca i64, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca i64, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %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 { ptr, i64, i64 }, align 16 - %a164 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca i64, align 16 - %a210 = alloca i64, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %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 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = insertvalue %S.gen.Abi zeroinitializer, { ptr, i64, i64 } { ptr @.str.4795, 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.4796, 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 %then7503, label %endif7505 -then7503: - %t11 = load %S.gen.Abi, ptr %a4 - ret %S.gen.Abi %t11 -endif7505: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7506, label %ok7507 -panic7506: - call void @finch_panic(ptr @.str.4797, i64 4318, ptr @.str.4798) - unreachable -ok7507: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %t18 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 2 - %t19 = load { ptr, i64, i64 }, ptr %t18 - %t20 = call i64 @finch.gen.findStruct(ptr %t15, { ptr, i64, i64 } %t17, { ptr, i64, i64 } %t19) - %t21 = load { ptr, i64, i64 }, ptr %t14 - %t22 = extractvalue { ptr, i64, i64 } %t21, 1 - %t23 = icmp uge i64 %t20, %t22 - br i1 %t23, label %range7508, label %inrange7509 -range7508: - call void @finch_panic_index(ptr @.str.4799, i64 4318, i64 %t20, i64 %t22) - unreachable -inrange7509: - %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 9 - %t32 = load i64, ptr %t31 - store i64 %t32, ptr %a33 - %t34 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 8, ptr %t34 - %t35 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t36 = load i64, ptr %t35 - %t37 = icmp sgt i64 %t36, 8 - br i1 %t37, label %then7510, label %endif7512 -then7510: - %t38 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t39 = load i64, ptr %t38 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 3 - store i64 %t39, ptr %t40 - br label %endif7512 -endif7512: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic7513, label %ok7514 -panic7513: - call void @finch_panic(ptr @.str.4800, i64 4324, ptr @.str.4801) - unreachable -ok7514: - %t43 = getelementptr inbounds %S.gen.Gen, ptr %t41, i32 0, i32 31 - %t44 = getelementptr inbounds %S.platform.Target, ptr %t43, i32 0, i32 4 - %t45 = load i1, ptr %t44 - br i1 %t45, label %then7515, label %endif7517 -then7515: - %t46 = load ptr, ptr %a1 - %t47 = load %S.ast.Type, ptr %a2 - %t48 = load %S.gen.Abi, ptr %a4 - %t49 = load i64, ptr %a33 - %t50 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 10 - %t51 = load i64, ptr %t50 - %t52 = call %S.gen.Abi @finch.gen.classifyArm64(ptr %t46, %S.ast.Type %t47, %S.gen.Abi %t48, i64 %t49, i64 %t51) - call void @finch.drop.S_gen_StructDef(ptr %a30) - call void @finch.drop.S_gen_Abi(ptr %a4) - ret %S.gen.Abi %t52 -endif7517: - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic7518, label %ok7519 -panic7518: - call void @finch_panic(ptr @.str.4802, i64 4327, ptr @.str.4803) - unreachable -ok7519: - %t55 = getelementptr inbounds %S.gen.Gen, ptr %t53, i32 0, i32 31 - %t56 = getelementptr inbounds %S.platform.Target, ptr %t55, i32 0, i32 1 - %t57 = load i1, ptr %t56 - br i1 %t57, label %then7520, label %endif7522 -then7520: - %t58 = load i64, ptr %a33 - %t59 = icmp eq i64 %t58, 1 - br label %logic.from7523 -logic.from7523: - br i1 %t59, label %logic.end7525, label %logic.rhs7524 -logic.rhs7524: - %t60 = load i64, ptr %a33 - %t61 = icmp eq i64 %t60, 2 - br label %logic.rend7526 -logic.rend7526: - br label %logic.end7525 -logic.end7525: - %t62 = phi i1 [ true, %logic.from7523 ], [ %t61, %logic.rend7526 ] - br label %logic.from7527 -logic.from7527: - br i1 %t62, label %logic.end7529, label %logic.rhs7528 -logic.rhs7528: - %t63 = load i64, ptr %a33 - %t64 = icmp eq i64 %t63, 4 - br label %logic.rend7530 -logic.rend7530: - br label %logic.end7529 -logic.end7529: - %t65 = phi i1 [ true, %logic.from7527 ], [ %t64, %logic.rend7530 ] - br label %logic.from7531 -logic.from7531: - br i1 %t65, label %logic.end7533, label %logic.rhs7532 -logic.rhs7532: - %t66 = load i64, ptr %a33 - %t67 = icmp eq i64 %t66, 8 - br label %logic.rend7534 -logic.rend7534: - br label %logic.end7533 -logic.end7533: - %t68 = phi i1 [ true, %logic.from7531 ], [ %t67, %logic.rend7534 ] - br i1 %t68, label %then7535, label %else7536 -then7535: - %t69 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t70 = load { ptr, i64, i64 }, ptr %t69 - store { ptr, i64, i64 } { ptr @.str.4804, i64 6, i64 0 }, ptr %t69 - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - %t72 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i32 0, i32 1 - %t74 = load i64, ptr %a33 - %t75 = mul i64 %t74, 8 - call void @finch_str_from_int(ptr %a76, i64 %t75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.4805, i64 1, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t77, ptr %a81 - call void @finch_str_drop(ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a78 - %t83 = load i64, ptr %t73 - %t84 = add i64 %t83, 1 - call void @finch_arr_reserve(ptr %t72, i64 %t84, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t85 = load ptr, ptr %t72 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i64 %t83 - store { ptr, i64, i64 } %t82, ptr %t86 - store i64 %t84, ptr %t73 - %t87 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - %t89 = extractvalue { ptr, i64, i64 } %t88, 1 - %t90 = icmp uge i64 0, %t89 - br i1 %t90, label %range7538, label %inrange7539 -range7538: - call void @finch_panic_index(ptr @.str.4806, i64 4333, i64 0, i64 %t89) - unreachable -inrange7539: - %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 - %t98 = load { ptr, i64, i64 }, ptr %t94 - store { ptr, i64, i64 } %t97, ptr %t94 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_drop(ptr %a99) - br label %endif7537 -else7536: - %t100 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t101 = load { ptr, i64, i64 }, ptr %t100 - store { ptr, i64, i64 } { ptr @.str.4807, i64 8, i64 0 }, ptr %t100 - store { ptr, i64, i64 } %t101, ptr %a102 - call void @finch_str_drop(ptr %a102) - br label %endif7537 -endif7537: - %t103 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t103 -endif7522: - %t104 = load i64, ptr %a33 - %t105 = icmp sgt i64 %t104, 16 - br label %logic.from7540 -logic.from7540: - br i1 %t105, label %logic.end7542, label %logic.rhs7541 -logic.rhs7541: - %t106 = load i64, ptr %a33 - %t107 = icmp eq i64 %t106, 0 - br label %logic.rend7543 -logic.rend7543: - br label %logic.end7542 -logic.end7542: - %t108 = phi i1 [ true, %logic.from7540 ], [ %t107, %logic.rend7543 ] - br i1 %t108, label %then7544, label %endif7546 -then7544: - %t109 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } { ptr @.str.4808, i64 6, i64 0 }, ptr %t109 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t112 -endif7546: - %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 %a33 - %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.cond7547 -each.cond7547: - %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.body7548, label %each.end7550 -each.body7548: - %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 %then7551, label %endif7553 -then7551: - store i64 8, ptr %a148 - br label %endif7553 -endif7553: - %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 %panic7554, label %ok7555 -panic7554: - call void @finch_panic(ptr @.str.4809, i64 4352, ptr @.str.4810) - unreachable -ok7555: - %t155 = srem i64 %t152, %t153 - %t156 = icmp ne i64 %t155, 0 - br i1 %t156, label %then7556, label %endif7558 -then7556: - %t157 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - store { ptr, i64, i64 } { ptr @.str.4811, i64 6, i64 0 }, ptr %t157 - store { ptr, i64, i64 } %t158, ptr %a159 - call void @finch_str_drop(ptr %a159) - %t160 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t160 -endif7558: - %t161 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 0 - %t162 = load i64, ptr %t161 - %t163 = sdiv i64 %t162, 8 - store i64 %t163, ptr %a164 - %t165 = load i64, ptr %a164 - %t166 = load { ptr, i64, i64 }, ptr %a128 - %t167 = extractvalue { ptr, i64, i64 } %t166, 1 - %t168 = icmp uge i64 %t165, %t167 - br i1 %t168, label %range7559, label %inrange7560 -range7559: - call void @finch_panic_index(ptr @.str.4812, i64 4357, i64 %t165, i64 %t167) - unreachable -inrange7560: - %t169 = extractvalue { ptr, i64, i64 } %t166, 0 - %t170 = getelementptr inbounds i64, ptr %t169, i64 %t165 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 1 - br label %logic.from7561 -logic.from7561: - br i1 %t172, label %logic.end7563, label %logic.rhs7562 -logic.rhs7562: - %t173 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 2 - %t174 = load i1, ptr %t173 - %t175 = xor i1 %t174, true - br label %logic.rend7564 -logic.rend7564: - br label %logic.end7563 -logic.end7563: - %t176 = phi i1 [ true, %logic.from7561 ], [ %t175, %logic.rend7564 ] - br i1 %t176, label %then7565, label %else7566 -then7565: - %t177 = load i64, ptr %a164 - %t178 = load { ptr, i64, i64 }, ptr %a128 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range7568, label %inrange7569 -range7568: - call void @finch_panic_index(ptr @.str.4813, i64 4358, i64 %t177, i64 %t179) - unreachable -inrange7569: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds i64, ptr %t181, i64 %t177 - store i64 1, ptr %t182 - br label %endif7567 -else7566: - %t183 = load i64, ptr %a164 - %t184 = load { ptr, i64, i64 }, ptr %a128 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range7570, label %inrange7571 -range7570: - call void @finch_panic_index(ptr @.str.4814, i64 4360, i64 %t183, i64 %t185) - unreachable -inrange7571: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds i64, ptr %t187, i64 %t183 - store i64 2, ptr %t188 - br label %endif7567 -endif7567: - %t189 = getelementptr inbounds %S.gen.Leaf, ptr %a145, i32 0, i32 3 - %t190 = load i1, ptr %t189 - br i1 %t190, label %then7572, label %endif7574 -then7572: - %t191 = load i64, ptr %a164 - %t192 = load { ptr, i64, i64 }, ptr %a136 - %t193 = extractvalue { ptr, i64, i64 } %t192, 1 - %t194 = icmp uge i64 %t191, %t193 - br i1 %t194, label %range7575, label %inrange7576 -range7575: - call void @finch_panic_index(ptr @.str.4815, i64 4363, i64 %t191, i64 %t193) - unreachable -inrange7576: - %t195 = extractvalue { ptr, i64, i64 } %t192, 0 - %t196 = getelementptr inbounds i1, ptr %t195, i64 %t191 - store i1 true, ptr %t196 - br label %endif7574 -endif7574: - br label %each.step7549 -each.step7549: - %t197 = load i64, ptr %a137 - %t198 = add i64 %t197, 1 - store i64 %t198, ptr %a137 - br label %each.cond7547 -each.end7550: - %t199 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 0 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } { ptr @.str.4816, i64 6, i64 0 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - call void @finch_str_drop(ptr %a201) - %t202 = load i64, ptr %a120 - store i64 0, ptr %a203 - br label %for.cond7577 -for.cond7577: - %t204 = load i64, ptr %a203 - %t205 = icmp slt i64 %t204, %t202 - br i1 %t205, label %for.body7578, label %for.end7580 -for.body7578: - %t206 = load i64, ptr %a33 - %t207 = load i64, ptr %a203 - %t208 = mul i64 8, %t207 - %t209 = sub i64 %t206, %t208 - store i64 %t209, ptr %a210 - %t211 = load i64, ptr %a210 - %t212 = icmp sgt i64 %t211, 8 - br i1 %t212, label %then7581, label %endif7583 -then7581: - store i64 8, ptr %a210 - br label %endif7583 -endif7583: - %t213 = load i64, ptr %a203 - %t214 = load { ptr, i64, i64 }, ptr %a128 - %t215 = extractvalue { ptr, i64, i64 } %t214, 1 - %t216 = icmp uge i64 %t213, %t215 - br i1 %t216, label %range7584, label %inrange7585 -range7584: - call void @finch_panic_index(ptr @.str.4817, i64 4372, i64 %t213, i64 %t215) - unreachable -inrange7585: - %t217 = extractvalue { ptr, i64, i64 } %t214, 0 - %t218 = getelementptr inbounds i64, ptr %t217, i64 %t213 - %t219 = load i64, ptr %t218 - %t220 = icmp eq i64 %t219, 2 - br i1 %t220, label %then7586, label %else7587 -then7586: - %t221 = load i64, ptr %a203 - %t222 = load { ptr, i64, i64 }, ptr %a136 - %t223 = extractvalue { ptr, i64, i64 } %t222, 1 - %t224 = icmp uge i64 %t221, %t223 - br i1 %t224, label %range7589, label %inrange7590 -range7589: - call void @finch_panic_index(ptr @.str.4818, i64 4373, i64 %t221, i64 %t223) - unreachable -inrange7590: - %t225 = extractvalue { ptr, i64, i64 } %t222, 0 - %t226 = getelementptr inbounds i1, ptr %t225, i64 %t221 - %t227 = load i1, ptr %t226 - br i1 %t227, label %then7591, label %else7592 -then7591: - %t228 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i32 0, i32 1 - %t230 = load i64, ptr %t229 - %t231 = add i64 %t230, 1 - call void @finch_arr_reserve(ptr %t228, i64 %t231, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t232 = load ptr, ptr %t228 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t232, i64 %t230 - store { ptr, i64, i64 } { ptr @.str.4819, i64 6, i64 0 }, ptr %t233 - store i64 %t231, ptr %t229 - br label %endif7593 -else7592: - %t234 = load i64, ptr %a210 - %t235 = icmp sgt i64 %t234, 4 - br i1 %t235, label %then7594, label %else7595 -then7594: - %t236 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 - %t238 = load i64, ptr %t237 - %t239 = add i64 %t238, 1 - call void @finch_arr_reserve(ptr %t236, i64 %t239, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t240 = load ptr, ptr %t236 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t240, i64 %t238 - store { ptr, i64, i64 } { ptr @.str.4820, i64 11, i64 0 }, ptr %t241 - store i64 %t239, ptr %t237 - br label %endif7596 -else7595: - %t242 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t243 = getelementptr inbounds { ptr, i64, i64 }, ptr %t242, i32 0, i32 1 - %t244 = load i64, ptr %t243 - %t245 = add i64 %t244, 1 - call void @finch_arr_reserve(ptr %t242, i64 %t245, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t246 = load ptr, ptr %t242 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i64 %t244 - store { ptr, i64, i64 } { ptr @.str.4821, i64 5, i64 0 }, ptr %t247 - store i64 %t245, ptr %t243 - br label %endif7596 -endif7596: - br label %endif7593 -endif7593: - br label %endif7588 -else7587: - %t248 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i32 0, i32 1 - %t250 = load i64, ptr %a210 - %t251 = mul i64 %t250, 8 - call void @finch_str_from_int(ptr %a252, i64 %t251) - %t253 = load { ptr, i64, i64 }, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.4822, i64 1, i64 0 }, ptr %a255 - store { ptr, i64, i64 } %t253, ptr %a256 - call void @finch_str_concat(ptr %a254, ptr %a255, ptr %a256) - store { ptr, i64, i64 } %t253, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = load { ptr, i64, i64 }, ptr %a254 - %t259 = load i64, ptr %t249 - %t260 = add i64 %t259, 1 - call void @finch_arr_reserve(ptr %t248, i64 %t260, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t261 = load ptr, ptr %t248 - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t261, i64 %t259 - store { ptr, i64, i64 } %t258, ptr %t262 - store i64 %t260, ptr %t249 - br label %endif7588 -endif7588: - br label %for.step7579 -for.step7579: - %t263 = load i64, ptr %a203 - %t264 = add i64 %t263, 1 - store i64 %t264, ptr %a203 - br label %for.cond7577 -for.end7580: - %t265 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %t265, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = icmp eq i64 %t267, 1 - br i1 %t268, label %then7597, label %else7598 -then7597: - %t269 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t270 = load { ptr, i64, i64 }, ptr %t269 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 0, %t271 - br i1 %t272, label %range7600, label %inrange7601 -range7600: - call void @finch_panic_index(ptr @.str.4823, i64 4385, i64 0, i64 %t271) - unreachable -inrange7601: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 0 - %t275 = load { ptr, i64, i64 }, ptr %t274 - %t276 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t275, ptr %a277 - call void @finch_str_copy(ptr %a278, ptr %a277) - %t279 = load { ptr, i64, i64 }, ptr %a278 - %t280 = load { ptr, i64, i64 }, ptr %t276 - store { ptr, i64, i64 } %t279, ptr %t276 - store { ptr, i64, i64 } %t280, ptr %a281 - call void @finch_str_drop(ptr %a281) - br label %endif7599 -else7598: - %t282 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 1 - %t283 = getelementptr inbounds { ptr, i64, i64 }, ptr %t282, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4825, i64 2, i64 0 }, ptr %a284 - call void @finch_str_join(ptr %a285, ptr %t282, ptr %a284) - %t286 = load { ptr, i64, i64 }, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.4824, i64 2, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4826, i64 2, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = getelementptr inbounds %S.gen.Abi, ptr %a4, i32 0, i32 2 - %t298 = load { ptr, i64, i64 }, ptr %t297 - store { ptr, i64, i64 } %t296, ptr %t297 - store { ptr, i64, i64 } %t298, ptr %a299 - call void @finch_str_drop(ptr %a299) - br label %endif7599 -endif7599: - %t300 = load %S.gen.Abi, ptr %a4 - call void @finch.drop.arr_bool(ptr %a136) - call void @finch.drop.arr_int(ptr %a128) - call void @finch.drop.arr_S_gen_Leaf(ptr %a116) - call void @finch.drop.S_gen_StructDef(ptr %a30) - ret %S.gen.Abi %t300 -} - -define internal %S.gen.Plan @finch.gen.makePlan(ptr %p0, %S.ast.Type %p1, { ptr, i64, i64 } %p2) { -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 - %a12 = alloca %S.gen.Abi, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca i64, align 16 - %a76 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.gen.Abi, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca i64, align 16 - %a88 = alloca i64, align 16 - %a90 = alloca i64, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca %S.gen.Abi, align 16 - %a155 = alloca %S.gen.Abi, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 - %t11 = load %S.gen.Abi, ptr %t10 - store %S.gen.Abi %t9, ptr %t10 - store %S.gen.Abi %t11, ptr %a12 - call void @finch.drop.S_gen_Abi(ptr %a12) - %t13 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } { ptr @.str.4827, i64 4, i64 0 }, ptr %t13 - store { ptr, i64, i64 } %t14, ptr %a15 - call void @finch_str_drop(ptr %a15) - %t16 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t17 = load { ptr, i64, i64 }, ptr %t16 - store { ptr, i64, i64 } %t17, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.4828, i64 4, i64 0 }, ptr %a19 - %t20 = call i32 @finch_str_eq(ptr %a18, ptr %a19) - %t21 = icmp eq i32 %t20, 0 - br i1 %t21, label %then7602, label %endif7604 -then7602: - %t22 = load ptr, ptr %a1 - %t23 = load %S.ast.Type, ptr %a2 - %t24 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t22, %S.ast.Type %t23) - %t25 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t26 = load { ptr, i64, i64 }, ptr %t25 - store { ptr, i64, i64 } %t24, ptr %t25 - store { ptr, i64, i64 } %t26, ptr %a27 - call void @finch_str_drop(ptr %a27) - br label %endif7604 -endif7604: - %t28 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t29 = getelementptr inbounds %S.gen.Abi, ptr %t28, i32 0, i32 0 - %t30 = load { ptr, i64, i64 }, ptr %t29 - store { ptr, i64, i64 } %t30, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.4829, i64 8, i64 0 }, ptr %a32 - %t33 = call i32 @finch_str_eq(ptr %a31, ptr %a32) - %t34 = icmp ne i32 %t33, 0 - br i1 %t34, label %then7605, label %endif7607 -then7605: - %t35 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t36 = getelementptr inbounds %S.gen.Abi, ptr %t35, i32 0, i32 0 - %t37 = load { ptr, i64, i64 }, ptr %t36 - store { ptr, i64, i64 } { ptr @.str.4830, i64 6, i64 0 }, ptr %t36 - store { ptr, i64, i64 } %t37, ptr %a38 - call void @finch_str_drop(ptr %a38) - br label %endif7607 -endif7607: - %t39 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t40 = getelementptr inbounds %S.gen.Abi, ptr %t39, i32 0, i32 0 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.4831, i64 6, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then7608, label %else7609 -then7608: - %t46 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 3 - store i1 true, ptr %t46 - %t47 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - %t48 = load { ptr, i64, i64 }, ptr %t47 - store { ptr, i64, i64 } { ptr @.str.4832, i64 4, i64 0 }, ptr %t47 - store { ptr, i64, i64 } %t48, ptr %a49 - call void @finch_str_drop(ptr %a49) - %t50 = load i64, ptr %a5 - %t51 = sub i64 %t50, 1 - store i64 %t51, ptr %a5 - br label %endif7610 -else7609: - %t52 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t53 = getelementptr inbounds %S.gen.Abi, ptr %t52, i32 0, i32 0 - %t54 = load { ptr, i64, i64 }, ptr %t53 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.4833, i64 6, i64 0 }, ptr %a56 - %t57 = call i32 @finch_str_eq(ptr %a55, ptr %a56) - %t58 = icmp ne i32 %t57, 0 - br i1 %t58, label %then7611, label %endif7613 -then7611: - %t59 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 0 - %t60 = getelementptr inbounds %S.gen.Abi, ptr %t59, i32 0, i32 2 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 2 - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = load { ptr, i64, i64 }, ptr %t62 - store { ptr, i64, i64 } %t65, ptr %t62 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - br label %endif7613 -endif7613: - br label %endif7610 -endif7610: - store i64 0, ptr %a68 - br label %each.cond7614 -each.cond7614: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t70 = load i64, ptr %t69 - %t71 = load i64, ptr %a68 - %t72 = icmp slt i64 %t71, %t70 - br i1 %t72, label %each.body7615, label %each.end7617 -each.body7615: - %t73 = load ptr, ptr %a3 - %t74 = getelementptr inbounds %S.ast.Type, ptr %t73, i64 %t71 - %t75 = load %S.ast.Type, ptr %t74 - store %S.ast.Type %t75, ptr %a76 - %t77 = load ptr, ptr %a1 - %t78 = load %S.ast.Type, ptr %a76 - %t79 = call %S.gen.Abi @finch.gen.classify(ptr %t77, %S.ast.Type %t78) - store %S.gen.Abi %t79, ptr %a80 - %t81 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t82 = load { ptr, i64, i64 }, ptr %t81 - store { ptr, i64, i64 } %t82, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4834, i64 6, i64 0 }, ptr %a84 - %t85 = call i32 @finch_str_eq(ptr %a83, ptr %a84) - %t86 = icmp ne i32 %t85, 0 - br i1 %t86, label %then7618, label %else7619 -then7618: - store i64 0, ptr %a87 - store i64 0, ptr %a88 - %t89 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 1 - store i64 0, ptr %a90 - br label %each.cond7621 -each.cond7621: - %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.body7622, label %each.end7624 -each.body7622: - %t95 = load ptr, ptr %t89 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i64 %t93 - %t97 = load { ptr, i64, i64 }, ptr %t96 - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.4836, i64 1, i64 0 }, ptr %a102 - %t103 = call i32 @finch_str_starts(ptr %a100, ptr %a102) - %t104 = icmp ne i32 %t103, 0 - br i1 %t104, label %then7625, label %else7626 -then7625: - %t105 = load i64, ptr %a87 - %t106 = add i64 %t105, 1 - store i64 %t106, ptr %a87 - br label %endif7627 -else7626: - %t107 = load i64, ptr %a88 - %t108 = add i64 %t107, 1 - store i64 %t108, ptr %a88 - br label %endif7627 -endif7627: - br label %each.step7623 -each.step7623: - %t109 = load i64, ptr %a90 - %t110 = add i64 %t109, 1 - store i64 %t110, ptr %a90 - br label %each.cond7621 -each.end7624: - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic7628, label %ok7629 -panic7628: - call void @finch_panic(ptr @.str.4837, i64 4425, ptr @.str.4838) - unreachable -ok7629: - %t113 = getelementptr inbounds %S.gen.Gen, ptr %t111, i32 0, i32 31 - %t114 = getelementptr inbounds %S.platform.Target, ptr %t113, i32 0, i32 1 - %t115 = load i1, ptr %t114 - br label %logic.from7630 -logic.from7630: - br i1 %t115, label %logic.end7632, label %logic.rhs7631 -logic.rhs7631: - %t116 = load ptr, ptr %a1 - %t117 = icmp eq ptr %t116, null - br i1 %t117, label %panic7633, label %ok7634 -panic7633: - call void @finch_panic(ptr @.str.4839, i64 4425, ptr @.str.4840) - unreachable -ok7634: - %t118 = getelementptr inbounds %S.gen.Gen, ptr %t116, i32 0, i32 31 - %t119 = getelementptr inbounds %S.platform.Target, ptr %t118, i32 0, i32 4 - %t120 = load i1, ptr %t119 - br label %logic.rend7635 -logic.rend7635: - br label %logic.end7632 -logic.end7632: - %t121 = phi i1 [ true, %logic.from7630 ], [ %t120, %logic.rend7635 ] - br label %logic.from7636 -logic.from7636: - br i1 %t121, label %logic.end7638, label %logic.rhs7637 -logic.rhs7637: - %t122 = load i64, ptr %a87 - %t123 = load i64, ptr %a5 - %t124 = icmp sle i64 %t122, %t123 - br label %logic.from7639 -logic.from7639: - br i1 %t124, label %logic.rhs7640, label %logic.end7641 -logic.rhs7640: - %t125 = load i64, ptr %a88 - %t126 = load i64, ptr %a6 - %t127 = icmp sle i64 %t125, %t126 - br label %logic.rend7642 -logic.rend7642: - br label %logic.end7641 -logic.end7641: - %t128 = phi i1 [ false, %logic.from7639 ], [ %t127, %logic.rend7642 ] - br label %logic.rend7643 -logic.rend7643: - br label %logic.end7638 -logic.end7638: - %t129 = phi i1 [ true, %logic.from7636 ], [ %t128, %logic.rend7643 ] - br i1 %t129, label %then7644, label %else7645 -then7644: - %t130 = load i64, ptr %a87 - %t131 = load i64, ptr %a5 - %t132 = sub i64 %t131, %t130 - store i64 %t132, ptr %a5 - %t133 = load i64, ptr %a88 - %t134 = load i64, ptr %a6 - %t135 = sub i64 %t134, %t133 - store i64 %t135, ptr %a6 - br label %endif7646 -else7645: - %t136 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t137 = load { ptr, i64, i64 }, ptr %t136 - store { ptr, i64, i64 } { ptr @.str.4841, i64 6, i64 0 }, ptr %t136 - store { ptr, i64, i64 } %t137, ptr %a138 - call void @finch_str_drop(ptr %a138) - br label %endif7646 -endif7646: - br label %endif7620 -else7619: - %t139 = getelementptr inbounds %S.gen.Abi, ptr %a80, i32 0, i32 0 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t140, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.4842, i64 6, i64 0 }, ptr %a142 - %t143 = call i32 @finch_str_eq(ptr %a141, ptr %a142) - %t144 = icmp ne i32 %t143, 0 - br i1 %t144, label %then7647, label %endif7649 -then7647: - %t145 = load %S.ast.Type, ptr %a76 - %t146 = call i1 @finch.gen.isFloat(%S.ast.Type %t145) - br i1 %t146, label %then7650, label %else7651 -then7650: - %t147 = load i64, ptr %a6 - %t148 = sub i64 %t147, 1 - store i64 %t148, ptr %a6 - br label %endif7652 -else7651: - %t149 = load i64, ptr %a5 - %t150 = sub i64 %t149, 1 - store i64 %t150, ptr %a5 - br label %endif7652 -endif7652: - br label %endif7649 -endif7649: - br label %endif7620 -endif7620: - %t151 = getelementptr inbounds %S.gen.Plan, ptr %a4, i32 0, i32 1 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load %S.gen.Abi, ptr %a80 - store %S.gen.Abi %t153, ptr %a154 - call void @finch.copy.S_gen_Abi(ptr %a155, ptr %a154) - %t156 = load %S.gen.Abi, ptr %a155 - %t157 = load i64, ptr %t152 - %t158 = add i64 %t157, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t158, i64 ptrtoint (ptr getelementptr (%S.gen.Abi, ptr null, i32 1) to i64)) - %t159 = load ptr, ptr %t151 - %t160 = getelementptr inbounds %S.gen.Abi, ptr %t159, i64 %t157 - store %S.gen.Abi %t156, ptr %t160 - store i64 %t158, ptr %t152 - call void @finch.drop.S_gen_Abi(ptr %a80) - br label %each.step7616 -each.step7616: - %t161 = load i64, ptr %a68 - %t162 = add i64 %t161, 1 - store i64 %t162, ptr %a68 - br label %each.cond7614 -each.end7617: - %t163 = load %S.gen.Plan, ptr %a4 - ret %S.gen.Plan %t163 -} - -define internal void @finch.gen.checkByValue(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2, %S.ast.Type %p3, { ptr, i64, i64 } %p4) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = 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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.4843, 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 %then7653, label %endif7655 -then7653: - ret void -endif7655: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic7656, label %ok7657 -panic7656: - call void @finch_panic(ptr @.str.4844, i64 4447, ptr @.str.4845) - unreachable -ok7657: - %t14 = getelementptr inbounds %S.gen.Gen, ptr %t12, i32 0, i32 16 - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds %S.ast.Type, ptr %a4, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %t16 - %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 %range7658, label %inrange7659 -range7658: - call void @finch_panic_index(ptr @.str.4846, i64 4447, i64 %t20, i64 %t22) - unreachable -inrange7659: - %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 %then7660, label %endif7662 -then7660: - %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.4847, 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.4848, i64 2, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t45, ptr %a48 - store { ptr, i64, i64 } %t46, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t45, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.4849, i64 18, i64 0 }, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t51, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a52 - %t57 = load %S.ast.Type, ptr %a4 - %t58 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t57) - store { ptr, i64, i64 } %t56, ptr %a60 - store { ptr, i64, i64 } %t58, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t56, ptr %a62 - call void @finch_str_drop(ptr %a62) - store { ptr, i64, i64 } %t58, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a59 - store { ptr, i64, i64 } %t64, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.4850, i64 20, i64 0 }, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - call void @finch.gen.fail(ptr %t34, %S.ast.Node %t35, { ptr, i64, i64 } %t69) - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif7662 -endif7662: - %t71 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t71, i32 0, i32 1 - %t73 = load i64, ptr %t72 - %t74 = icmp sgt i64 %t73, 0 - br i1 %t74, label %then7663, label %endif7665 -then7663: - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Node, ptr %a2 - %t77 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.4851, i64 16, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.4852, i64 2, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t86, ptr %a89 - store { ptr, i64, i64 } %t87, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - store { ptr, i64, i64 } %t86, ptr %a91 - call void @finch_str_drop(ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a88 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4853, i64 12, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - %t98 = load %S.ast.Type, ptr %a4 - %t99 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t98) - store { ptr, i64, i64 } %t97, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t97, ptr %a103 - call void @finch_str_drop(ptr %a103) - store { ptr, i64, i64 } %t99, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4854, i64 40, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = getelementptr inbounds %S.gen.StructDef, ptr %a30, i32 0, i32 8 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a114 - store { ptr, i64, i64 } %t112, ptr %a115 - call void @finch_str_concat(ptr %a113, ptr %a114, ptr %a115) - store { ptr, i64, i64 } %t110, ptr %a116 - call void @finch_str_drop(ptr %a116) - %t117 = load { ptr, i64, i64 }, ptr %a113 - call void @finch.gen.fail(ptr %t75, %S.ast.Node %t76, { ptr, i64, i64 } %t117) - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - br label %endif7665 -endif7665: - call void @finch.drop.S_gen_StructDef(ptr %a30) - 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.from7666 -logic.from7666: - br i1 %t3, label %logic.end7668, label %logic.rhs7667 -logic.rhs7667: - %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.4855, 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.rend7669 -logic.rend7669: - br label %logic.end7668 -logic.end7668: - %t10 = phi i1 [ true, %logic.from7666 ], [ %t9, %logic.rend7669 ] - br label %logic.from7670 -logic.from7670: - br i1 %t10, label %logic.end7672, label %logic.rhs7671 -logic.rhs7671: - %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.4856, 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.rend7673 -logic.rend7673: - br label %logic.end7672 -logic.end7672: - %t17 = phi i1 [ true, %logic.from7670 ], [ %t16, %logic.rend7673 ] - br label %logic.from7674 -logic.from7674: - br i1 %t17, label %logic.end7676, label %logic.rhs7675 -logic.rhs7675: - %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.4857, 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.rend7677 -logic.rend7677: - br label %logic.end7676 -logic.end7676: - %t24 = phi i1 [ true, %logic.from7674 ], [ %t23, %logic.rend7677 ] - 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 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca i64, align 16 - %a106 = alloca %S.gen.FnSig, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.gen.FnSig %p2, ptr %a3 - %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 %then7678, label %endif7680 -then7678: - %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.4858, i64 59, i64 0 }) - br label %endif7680 -endif7680: - %t10 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 7 - %t11 = load i1, ptr %t10 - br i1 %t11, label %then7681, label %endif7683 -then7681: - %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.4859, i64 74, i64 0 }) - br label %endif7683 -endif7683: - %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 %then7684, label %endif7686 -then7684: - %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.4860, i64 29, i64 0 }) - br label %endif7686 -endif7686: - %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.cond7687 -for.cond7687: - %t24 = load i64, ptr %a23 - %t25 = icmp slt i64 %t24, %t22 - br i1 %t25, label %for.body7688, label %for.end7690 -for.body7688: - %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 %range7691, label %inrange7692 -range7691: - call void @finch_panic_index(ptr @.str.4861, i64 4472, i64 %t27, i64 %t29) - unreachable -inrange7692: - %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 %then7693, label %endif7695 -then7693: - %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 %range7696, label %inrange7697 -range7696: - call void @finch_panic_index(ptr @.str.4862, i64 4473, i64 %t38, i64 %t40) - unreachable -inrange7697: - %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 %range7698, label %inrange7699 -range7698: - call void @finch_panic_index(ptr @.str.4864, i64 4473, i64 %t46, i64 %t48) - unreachable -inrange7699: - %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.4863, i64 66, i64 0 }, ptr %a55 - store { ptr, i64, i64 } %t53, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - store { ptr, i64, i64 } %t58, ptr %a60 - store { ptr, i64, i64 } { ptr @.str.4865, i64 50, i64 0 }, ptr %a61 - call void @finch_str_concat(ptr %a59, ptr %a60, ptr %a61) - store { ptr, i64, i64 } %t58, ptr %a62 - call void @finch_str_drop(ptr %a62) - %t63 = load { ptr, i64, i64 }, ptr %a59 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t44, { ptr, i64, i64 } %t63) - store { ptr, i64, i64 } %t63, ptr %a64 - call void @finch_str_drop(ptr %a64) - br label %endif7695 -endif7695: - br label %for.step7689 -for.step7689: - %t65 = load i64, ptr %a23 - %t66 = add i64 %t65, 1 - store i64 %t66, ptr %a23 - br label %for.cond7687 -for.end7690: - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t68 = getelementptr inbounds %S.ast.Type, ptr %t67, i32 0, i32 0 - %t69 = load { ptr, i64, i64 }, ptr %t68 - store { ptr, i64, i64 } %t69, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.4866, i64 4, i64 0 }, ptr %a71 - %t72 = call i32 @finch_str_eq(ptr %a70, ptr %a71) - %t73 = icmp eq i32 %t72, 0 - br label %logic.from7700 -logic.from7700: - br i1 %t73, label %logic.rhs7701, label %logic.end7702 -logic.rhs7701: - %t74 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t75 = load %S.ast.Type, ptr %t74 - %t76 = call i1 @finch.gen.cPlain(%S.ast.Type %t75) - %t77 = xor i1 %t76, true - br label %logic.rend7703 -logic.rend7703: - br label %logic.end7702 -logic.end7702: - %t78 = phi i1 [ false, %logic.from7700 ], [ %t77, %logic.rend7703 ] - br i1 %t78, label %then7704, label %endif7706 -then7704: - %t79 = load ptr, ptr %a1 - %t80 = load %S.ast.Node, ptr %a2 - %t81 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 12 - %t82 = load %S.ast.Type, ptr %t81 - %t83 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t82) - store { ptr, i64, i64 } { ptr @.str.4867, i64 69, i64 0 }, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.4868, i64 1, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.fail(ptr %t79, %S.ast.Node %t80, { ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %endif7706 -endif7706: - %t95 = load ptr, ptr %a1 - %t96 = icmp eq ptr %t95, null - br i1 %t96, label %panic7707, label %ok7708 -panic7707: - call void @finch_panic(ptr @.str.4869, i64 4479, ptr @.str.4870) - unreachable -ok7708: - %t97 = getelementptr inbounds %S.gen.Gen, ptr %t95, i32 0, i32 15 - store i64 0, ptr %a98 - br label %each.cond7709 -each.cond7709: - %t99 = getelementptr inbounds { ptr, i64, i64 }, ptr %t97, i32 0, i32 1 - %t100 = load i64, ptr %t99 - %t101 = load i64, ptr %a98 - %t102 = icmp slt i64 %t101, %t100 - br i1 %t102, label %each.body7710, label %each.end7712 -each.body7710: - %t103 = load ptr, ptr %t97 - %t104 = getelementptr inbounds %S.gen.FnSig, ptr %t103, i64 %t101 - %t105 = load %S.gen.FnSig, ptr %t104 - store %S.gen.FnSig %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 5 - %t108 = load i1, ptr %t107 - br label %logic.from7713 -logic.from7713: - br i1 %t108, label %logic.rhs7714, label %logic.end7715 -logic.rhs7714: - %t109 = getelementptr inbounds %S.gen.FnSig, ptr %a106, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - %t111 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t110, ptr %a113 - store { ptr, i64, i64 } %t112, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7716 -logic.rend7716: - br label %logic.end7715 -logic.end7715: - %t117 = phi i1 [ false, %logic.from7713 ], [ %t116, %logic.rend7716 ] - br i1 %t117, label %then7717, label %endif7719 -then7717: - %t118 = load ptr, ptr %a1 - %t119 = load %S.ast.Node, ptr %a2 - %t120 = getelementptr inbounds %S.gen.FnSig, ptr %a3, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - store { ptr, i64, i64 } { ptr @.str.4871, 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.4872, i64 38, i64 0 }, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t125, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - call void @finch.gen.fail(ptr %t118, %S.ast.Node %t119, { ptr, i64, i64 } %t130) - store { ptr, i64, i64 } %t130, ptr %a131 - call void @finch_str_drop(ptr %a131) - br label %endif7719 -endif7719: - br label %each.step7711 -each.step7711: - %t132 = load i64, ptr %a98 - %t133 = add i64 %t132, 1 - store i64 %t133, ptr %a98 - br label %each.cond7709 -each.end7712: - 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 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %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 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %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 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a3 - 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.cond7720 -for.cond7720: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t10 - br i1 %t13, label %for.body7721, label %for.end7723 -for.body7721: - %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 %range7724, label %inrange7725 -range7724: - call void @finch_panic_index(ptr @.str.4873, i64 4492, i64 %t15, i64 %t17) - unreachable -inrange7725: - %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.4874, 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 %then7726, label %else7727 -then7726: - %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.4875, i64 13, i64 0 }, ptr %a37 - store { ptr, i64, i64 } %t35, ptr %a38 - call void @finch_str_concat(ptr %a36, ptr %a37, ptr %a38) - store { ptr, i64, i64 } %t35, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a36 - %t41 = load i64, ptr %t32 - %t42 = add i64 %t41, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t42, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t43 = load ptr, ptr %a3 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t43, i64 %t41 - store { ptr, i64, i64 } %t40, ptr %t44 - store i64 %t42, ptr %t32 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t46 = load ptr, ptr %a1 - %t47 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a48, i64 %t47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.4877, i64 13, i64 0 }, ptr %a51 - store { ptr, i64, i64 } %t49, ptr %a52 - call void @finch_str_concat(ptr %a50, ptr %a51, ptr %a52) - store { ptr, i64, i64 } %t49, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.4878, i64 3, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - %t60 = call { ptr, i64, i64 } @finch.gen.op(ptr %t46, { ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t59, ptr %a61 - call void @finch_str_drop(ptr %a61) - store { ptr, i64, i64 } { ptr @.str.4876, i64 3, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %t45 - %t68 = add i64 %t67, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t68, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t69 = load ptr, ptr %a4 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i64 %t67 - store { ptr, i64, i64 } %t66, ptr %t70 - store i64 %t68, ptr %t45 - br label %endif7728 -else7727: - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t72 = load ptr, ptr %a1 - %t73 = load %S.ast.Type, ptr %a25 - %t74 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t72, %S.ast.Type %t73) - %t75 = load ptr, ptr %a1 - %t76 = load %S.ast.Type, ptr %a25 - %t77 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t75, %S.ast.Type %t76) - store { ptr, i64, i64 } %t74, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - store { ptr, i64, i64 } %t74, ptr %a81 - call void @finch_str_drop(ptr %a81) - store { ptr, i64, i64 } %t77, ptr %a82 - call void @finch_str_drop(ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.4879, i64 3, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t83, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a84 - %t89 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a90, i64 %t89) - %t91 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t88, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a92 - %t98 = load i64, ptr %t71 - %t99 = add i64 %t98, 1 - call void @finch_arr_reserve(ptr %a3, i64 %t99, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t100 = load ptr, ptr %a3 - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t100, i64 %t98 - store { ptr, i64, i64 } %t97, ptr %t101 - store i64 %t99, ptr %t71 - %t102 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t103 = load ptr, ptr %a1 - %t104 = load %S.ast.Type, ptr %a25 - %t105 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t103, %S.ast.Type %t104) - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.4880, i64 3, i64 0 }, ptr %a108 - call void @finch_str_concat(ptr %a106, ptr %a107, ptr %a108) - store { ptr, i64, i64 } %t105, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = load i64, ptr %a11 - call void @finch_str_from_int(ptr %a112, i64 %t111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t110, ptr %a117 - call void @finch_str_drop(ptr %a117) - store { ptr, i64, i64 } %t113, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a114 - %t120 = load i64, ptr %t102 - %t121 = add i64 %t120, 1 - call void @finch_arr_reserve(ptr %a4, i64 %t121, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t122 = load ptr, ptr %a4 - %t123 = getelementptr inbounds { ptr, i64, i64 }, ptr %t122, i64 %t120 - store { ptr, i64, i64 } %t119, ptr %t123 - store i64 %t121, ptr %t102 - br label %endif7728 -endif7728: - call void @finch.drop.S_ast_Type(ptr %a25) - br label %for.step7722 -for.step7722: - %t124 = load i64, ptr %a11 - %t125 = add i64 %t124, 1 - store i64 %t125, ptr %a11 - br label %for.cond7720 -for.end7723: - %t126 = load ptr, ptr %a1 - %t127 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t128 = load %S.ast.Type, ptr %t127 - %t129 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t126, %S.ast.Type %t128) - store { ptr, i64, i64 } { ptr @.str.4881, i64 5, i64 0 }, ptr %a131 - store { ptr, i64, i64 } %t129, ptr %a132 - call void @finch_str_concat(ptr %a130, ptr %a131, ptr %a132) - store { ptr, i64, i64 } %t129, ptr %a133 - call void @finch_str_drop(ptr %a133) - %t134 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4882, i64 1, i64 0 }, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - store { ptr, i64, i64 } %t134, ptr %a138 - call void @finch_str_drop(ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a135 - %t140 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t139, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t139, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.4883, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4884, i64 2, i64 0 }, ptr %a153 - call void @finch_str_join(ptr %a154, ptr %a4, ptr %a153) - %t155 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t151, ptr %a157 - store { ptr, i64, i64 } %t155, ptr %a158 - call void @finch_str_concat(ptr %a156, ptr %a157, ptr %a158) - store { ptr, i64, i64 } %t151, ptr %a159 - call void @finch_str_drop(ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a156 - store { ptr, i64, i64 } %t161, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.4885, i64 1, i64 0 }, ptr %a164 - call void @finch_str_concat(ptr %a162, ptr %a163, ptr %a164) - store { ptr, i64, i64 } %t161, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = load { ptr, i64, i64 }, ptr %a162 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.4886, i64 4, i64 0 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4887, i64 0, i64 0 }, ptr %a169 - %t170 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t171 = getelementptr inbounds %S.ast.Type, ptr %t170, i32 0, i32 0 - %t172 = load { ptr, i64, i64 }, ptr %t171 - store { ptr, i64, i64 } %t172, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.4888, i64 4, i64 0 }, ptr %a174 - %t175 = call i32 @finch_str_eq(ptr %a173, ptr %a174) - %t176 = icmp ne i32 %t175, 0 - br i1 %t176, label %then7729, label %else7730 -then7729: - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a167 - call void @finch.gen.emit(ptr %t177, { ptr, i64, i64 } %t178) - %t179 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t179, { ptr, i64, i64 } { ptr @.str.4889, i64 8, i64 0 }) - br label %endif7731 -else7730: - %t180 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t181 = getelementptr inbounds %S.ast.Type, ptr %t180, i32 0, i32 0 - %t182 = load { ptr, i64, i64 }, ptr %t181 - store { ptr, i64, i64 } %t182, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.4890, i64 4, i64 0 }, ptr %a184 - %t185 = call i32 @finch_str_eq(ptr %a183, ptr %a184) - %t186 = icmp ne i32 %t185, 0 - br i1 %t186, label %then7732, label %else7733 -then7732: - %t187 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4891, i64 2, i64 0 }, ptr %a168 - store { ptr, i64, i64 } %t187, ptr %a188 - call void @finch_str_drop(ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.4892, i64 8, i64 0 }, ptr %a169 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = load ptr, ptr %a1 - %t192 = load ptr, ptr %a1 - %t193 = load ptr, ptr %a1 - %t194 = load { ptr, i64, i64 }, ptr %a167 - %t195 = call { ptr, i64, i64 } @finch.gen.op(ptr %t193, { ptr, i64, i64 } %t194) - store { ptr, i64, i64 } { ptr @.str.4894, i64 8, i64 0 }, ptr %a197 - store { ptr, i64, i64 } %t195, ptr %a198 - call void @finch_str_concat(ptr %a196, ptr %a197, ptr %a198) - store { ptr, i64, i64 } %t195, ptr %a199 - call void @finch_str_drop(ptr %a199) - %t200 = load { ptr, i64, i64 }, ptr %a196 - store { ptr, i64, i64 } %t200, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.4895, i64 6, i64 0 }, ptr %a203 - call void @finch_str_concat(ptr %a201, ptr %a202, ptr %a203) - store { ptr, i64, i64 } %t200, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = load { ptr, i64, i64 }, ptr %a201 - %t206 = call { ptr, i64, i64 } @finch.gen.op(ptr %t192, { ptr, i64, i64 } %t205) - store { ptr, i64, i64 } %t205, ptr %a207 - call void @finch_str_drop(ptr %a207) - store { ptr, i64, i64 } { ptr @.str.4893, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.gen.emit(ptr %t191, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7734 -else7733: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t214, %S.ast.Type %t216) - %t218 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t217, ptr %a168 - store { ptr, i64, i64 } %t218, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load ptr, ptr %a1 - %t221 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t222 = load %S.ast.Type, ptr %t221 - %t223 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t220, %S.ast.Type %t222) - %t224 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t223, ptr %a169 - store { ptr, i64, i64 } %t224, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load ptr, ptr %a1 - %t227 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } { ptr @.str.4896, i64 4, i64 0 }, ptr %a229 - store { ptr, i64, i64 } %t227, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a228 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.4897, i64 1, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - store { ptr, i64, i64 } %t231, ptr %a235 - call void @finch_str_drop(ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a232 - %t237 = load ptr, ptr %a1 - %t238 = load { ptr, i64, i64 }, ptr %a167 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t237, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t236, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t236, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a240 - call void @finch.gen.emit(ptr %t226, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a246 - call void @finch_str_drop(ptr %a246) - br label %endif7734 -endif7734: - br label %endif7731 -endif7731: - store { ptr, i64, i64 } { ptr @.str.4898, i64 0, i64 0 }, ptr %a247 - %t248 = load ptr, ptr %a1 - %t249 = icmp eq ptr %t248, null - br i1 %t249, label %panic7735, label %ok7736 -panic7735: - call void @finch_panic(ptr @.str.4899, i64 4517, ptr @.str.4900) - unreachable -ok7736: - %t250 = getelementptr inbounds %S.gen.Gen, ptr %t248, i32 0, i32 31 - %t251 = getelementptr inbounds %S.platform.Target, ptr %t250, i32 0, i32 1 - %t252 = load i1, ptr %t251 - br i1 %t252, label %then7737, label %endif7739 -then7737: - %t253 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4901, i64 10, i64 0 }, ptr %a247 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - br label %endif7739 -endif7739: - %t255 = load ptr, ptr %a1 - %t256 = load %S.gen.Saved, ptr %a7 - %t257 = load { ptr, i64, i64 }, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.4902, i64 6, i64 0 }, ptr %a259 - store { ptr, i64, i64 } %t257, ptr %a260 - call void @finch_str_concat(ptr %a258, ptr %a259, ptr %a260) - %t261 = load { ptr, i64, i64 }, ptr %a258 - %t262 = load { ptr, i64, i64 }, ptr %a169 - store { ptr, i64, i64 } %t261, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - store { ptr, i64, i64 } %t261, ptr %a266 - call void @finch_str_drop(ptr %a266) - %t267 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t267, ptr %a269 - store { ptr, i64, i64 } { ptr @.str.4903, i64 1, i64 0 }, ptr %a270 - call void @finch_str_concat(ptr %a268, ptr %a269, ptr %a270) - store { ptr, i64, i64 } %t267, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a268 - %t273 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t272, ptr %a275 - store { ptr, i64, i64 } %t273, ptr %a276 - call void @finch_str_concat(ptr %a274, ptr %a275, ptr %a276) - store { ptr, i64, i64 } %t272, ptr %a277 - call void @finch_str_drop(ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a274 - store { ptr, i64, i64 } %t278, ptr %a280 - store { ptr, i64, i64 } { ptr @.str.4904, i64 2, i64 0 }, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t283, ptr %a287 - store { ptr, i64, i64 } %t285, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t283, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.4905, i64 1, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4906, i64 2, i64 0 }, ptr %a297 - call void @finch_str_join(ptr %a298, ptr %a3, ptr %a297) - %t299 = load { ptr, i64, i64 }, ptr %a298 - store { ptr, i64, i64 } %t295, ptr %a301 - store { ptr, i64, i64 } %t299, ptr %a302 - call void @finch_str_concat(ptr %a300, ptr %a301, ptr %a302) - store { ptr, i64, i64 } %t295, ptr %a303 - call void @finch_str_drop(ptr %a303) - store { ptr, i64, i64 } %t299, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a300 - store { ptr, i64, i64 } %t305, ptr %a307 - store { ptr, i64, i64 } { ptr @.str.4907, i64 1, i64 0 }, ptr %a308 - call void @finch_str_concat(ptr %a306, ptr %a307, ptr %a308) - store { ptr, i64, i64 } %t305, ptr %a309 - call void @finch_str_drop(ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a306 - call void @finch.gen.endHelper(ptr %t255, %S.gen.Saved %t256, { ptr, i64, i64 } %t310) - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 1 - %t313 = load { ptr, i64, i64 }, ptr %t312 - store { ptr, i64, i64 } %t313, ptr %a314 - call void @finch_str_copy(ptr %a315, ptr %a314) - %t316 = load { ptr, i64, i64 }, ptr %a315 - call void @finch_str_drop(ptr %a247) - call void @finch_str_drop(ptr %a169) - call void @finch_str_drop(ptr %a168) - call void @finch_str_drop(ptr %a167) - call void @finch.drop.S_gen_Saved(ptr %a7) - call void @finch.drop.arr_str(ptr %a4) - call void @finch.drop.arr_str(ptr %a3) - ret { ptr, i64, i64 } %t316 -} - -define internal void @finch.drop.arr_S_gen_Abi(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond7862 -n.cond7862: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body7863, label %n.end7864 -n.body7863: - %t7 = getelementptr inbounds %S.gen.Abi, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Abi(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond7862 -n.end7864: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Plan(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 0 - call void @finch.drop.S_gen_Abi(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_gen_Abi(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Plan, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cThunk(ptr %p0, i64 %p1, %S.ast.Node %p2) { -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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a51 = alloca i64, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca i64, align 16 - %a108 = alloca %S.ast.Type, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = 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 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca %S.gen.Plan, align 16 - %a276 = alloca %S.gen.Saved, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca i64, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca i64, align 16 - %a318 = alloca %S.ast.Type, align 16 - %a319 = alloca %S.ast.Type, align 16 - %a321 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.gen.Abi, align 16 - %a331 = alloca %S.gen.Abi, align 16 - %a333 = alloca %S.gen.Abi, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca i64, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a528 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a534 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a544 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a602 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a660 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a662 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a729 = alloca { ptr, i64, i64 }, align 16 - %a730 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a742 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a793 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a808 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a813 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a828 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7740, label %ok7741 -panic7740: - call void @finch_panic(ptr @.str.4908, i64 4526, ptr @.str.4909) - unreachable -ok7741: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 15 - %t7 = load i64, ptr %a2 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7742, label %inrange7743 -range7742: - call void @finch_panic_index(ptr @.str.4910, i64 4526, i64 %t7, i64 %t9) - unreachable -inrange7743: - %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.4911, i64 9, i64 0 }, ptr %a22 - store { ptr, i64, i64 } %t20, ptr %a23 - call void @finch_str_concat(ptr %a21, ptr %a22, ptr %a23) - store { ptr, i64, i64 } %t20, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.4912, i64 1, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - %t31 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t32 = load { ptr, i64, i64 }, ptr %t31 - store { ptr, i64, i64 } %t30, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t30, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a38 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic7744, label %ok7745 -panic7744: - call void @finch_panic(ptr @.str.4913, i64 4528, ptr @.str.4914) - unreachable -ok7745: - %t41 = getelementptr inbounds %S.gen.Gen, ptr %t39, i32 0, i32 40 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t41, i32 0, i32 1 - %t43 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4915, i64 2, i64 0 }, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a44 - store i64 -1, ptr %a48 - %t49 = load i64, ptr %t42 - %t50 = load ptr, ptr %t41 - store i64 0, ptr %a51 - br label %find.cond7746 -find.cond7746: - %t52 = load i64, ptr %a51 - %t53 = icmp slt i64 %t52, %t49 - br i1 %t53, label %find.body7747, label %find.end7750 -find.body7747: - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t50, i64 %t52 - %t55 = load { ptr, i64, i64 }, ptr %t54 - store { ptr, i64, i64 } %t55, ptr %a56 - store { ptr, i64, i64 } %t47, ptr %a57 - %t58 = call i32 @finch_str_eq(ptr %a56, ptr %a57) - %t59 = icmp ne i32 %t58, 0 - br i1 %t59, label %find.hit7748, label %find.next7749 -find.hit7748: - store i64 %t52, ptr %a48 - br label %find.end7750 -find.next7749: - %t60 = add i64 %t52, 1 - store i64 %t60, ptr %a51 - br label %find.cond7746 -find.end7750: - store { ptr, i64, i64 } %t47, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load i64, ptr %a48 - %t63 = icmp sge i64 %t62, 0 - br i1 %t63, label %then7751, label %endif7753 -then7751: - %t64 = load { ptr, i64, i64 }, ptr %a38 - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t64 -endif7753: - %t65 = load ptr, ptr %a1 - %t66 = icmp eq ptr %t65, null - br i1 %t66, label %panic7754, label %ok7755 -panic7754: - call void @finch_panic(ptr @.str.4916, i64 4531, ptr @.str.4917) - unreachable -ok7755: - %t67 = getelementptr inbounds %S.gen.Gen, ptr %t65, i32 0, i32 40 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.4918, i64 2, i64 0 }, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a70 - %t74 = load i64, ptr %t68 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t67, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t67 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t68 - %t78 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 2 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i32 0, i32 1 - %t80 = load i64, ptr %t79 - %t81 = icmp sgt i64 %t80, 0 - br label %logic.from7756 -logic.from7756: - br i1 %t81, label %logic.end7758, label %logic.rhs7757 -logic.rhs7757: - %t82 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 9 - %t83 = load i1, ptr %t82 - br label %logic.rend7759 -logic.rend7759: - br label %logic.end7758 -logic.end7758: - %t84 = phi i1 [ true, %logic.from7756 ], [ %t83, %logic.rend7759 ] - br i1 %t84, label %then7760, label %endif7762 -then7760: - %t85 = load ptr, ptr %a1 - %t86 = load %S.ast.Node, ptr %a3 - %t87 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t88 = load { ptr, i64, i64 }, ptr %t87 - store { ptr, i64, i64 } { ptr @.str.4919, i64 5, i64 0 }, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - %t92 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t92, ptr %a94 - store { ptr, i64, i64 } { ptr @.str.4920, i64 81, i64 0 }, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t92, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - call void @finch.gen.fail(ptr %t85, %S.ast.Node %t86, { ptr, i64, i64 } %t97) - store { ptr, i64, i64 } %t97, ptr %a98 - call void @finch_str_drop(ptr %a98) - br label %endif7762 -endif7762: - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - store i64 0, ptr %a100 - br label %each.cond7763 -each.cond7763: - %t101 = getelementptr inbounds { ptr, i64, i64 }, ptr %t99, i32 0, i32 1 - %t102 = load i64, ptr %t101 - %t103 = load i64, ptr %a100 - %t104 = icmp slt i64 %t103, %t102 - br i1 %t104, label %each.body7764, label %each.end7766 -each.body7764: - %t105 = load ptr, ptr %t99 - %t106 = getelementptr inbounds %S.ast.Type, ptr %t105, i64 %t103 - %t107 = load %S.ast.Type, ptr %t106 - store %S.ast.Type %t107, ptr %a108 - %t109 = load %S.ast.Type, ptr %a108 - %t110 = call i1 @finch.gen.isNumber(%S.ast.Type %t109) - br label %logic.from7767 -logic.from7767: - br i1 %t110, label %logic.end7769, label %logic.rhs7768 -logic.rhs7768: - %t111 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t112 = load { ptr, i64, i64 }, ptr %t111 - store { ptr, i64, i64 } %t112, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.4921, i64 4, i64 0 }, ptr %a114 - %t115 = call i32 @finch_str_eq(ptr %a113, ptr %a114) - %t116 = icmp ne i32 %t115, 0 - br label %logic.rend7770 -logic.rend7770: - br label %logic.end7769 -logic.end7769: - %t117 = phi i1 [ true, %logic.from7767 ], [ %t116, %logic.rend7770 ] - br label %logic.from7771 -logic.from7771: - br i1 %t117, label %logic.end7773, label %logic.rhs7772 -logic.rhs7772: - %t118 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t119 = load { ptr, i64, i64 }, ptr %t118 - store { ptr, i64, i64 } %t119, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.4922, i64 4, i64 0 }, ptr %a121 - %t122 = call i32 @finch_str_eq(ptr %a120, ptr %a121) - %t123 = icmp ne i32 %t122, 0 - br label %logic.rend7774 -logic.rend7774: - br label %logic.end7773 -logic.end7773: - %t124 = phi i1 [ true, %logic.from7771 ], [ %t123, %logic.rend7774 ] - br label %logic.from7775 -logic.from7775: - br i1 %t124, label %logic.end7777, label %logic.rhs7776 -logic.rhs7776: - %t125 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t126 = load { ptr, i64, i64 }, ptr %t125 - store { ptr, i64, i64 } %t126, ptr %a127 - store { ptr, i64, i64 } { ptr @.str.4923, i64 3, i64 0 }, ptr %a128 - %t129 = call i32 @finch_str_eq(ptr %a127, ptr %a128) - %t130 = icmp ne i32 %t129, 0 - br label %logic.rend7778 -logic.rend7778: - br label %logic.end7777 -logic.end7777: - %t131 = phi i1 [ true, %logic.from7775 ], [ %t130, %logic.rend7778 ] - br label %logic.from7779 -logic.from7779: - br i1 %t131, label %logic.end7781, label %logic.rhs7780 -logic.rhs7780: - %t132 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.4924, i64 6, i64 0 }, ptr %a135 - %t136 = call i32 @finch_str_eq(ptr %a134, ptr %a135) - %t137 = icmp ne i32 %t136, 0 - br label %logic.from7782 -logic.from7782: - br i1 %t137, label %logic.rhs7783, label %logic.end7784 -logic.rhs7783: - %t138 = load ptr, ptr %a1 - %t139 = icmp eq ptr %t138, null - br i1 %t139, label %panic7785, label %ok7786 -panic7785: - call void @finch_panic(ptr @.str.4925, i64 4536, ptr @.str.4926) - unreachable -ok7786: - %t140 = getelementptr inbounds %S.gen.Gen, ptr %t138, i32 0, i32 16 - %t141 = load ptr, ptr %a1 - %t142 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 3 - %t143 = load { ptr, i64, i64 }, ptr %t142 - %t144 = getelementptr inbounds %S.ast.Type, ptr %a108, i32 0, i32 2 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = call i64 @finch.gen.findStruct(ptr %t141, { ptr, i64, i64 } %t143, { ptr, i64, i64 } %t145) - %t147 = load { ptr, i64, i64 }, ptr %t140 - %t148 = extractvalue { ptr, i64, i64 } %t147, 1 - %t149 = icmp uge i64 %t146, %t148 - br i1 %t149, label %range7787, label %inrange7788 -range7787: - call void @finch_panic_index(ptr @.str.4927, i64 4536, i64 %t146, i64 %t148) - unreachable -inrange7788: - %t150 = extractvalue { ptr, i64, i64 } %t147, 0 - %t151 = getelementptr inbounds %S.gen.StructDef, ptr %t150, i64 %t146 - %t152 = getelementptr inbounds %S.gen.StructDef, ptr %t151, i32 0, i32 2 - %t153 = load i1, ptr %t152 - br label %logic.rend7789 -logic.rend7789: - br label %logic.end7784 -logic.end7784: - %t154 = phi i1 [ false, %logic.from7782 ], [ %t153, %logic.rend7789 ] - br label %logic.rend7790 -logic.rend7790: - br label %logic.end7781 -logic.end7781: - %t155 = phi i1 [ true, %logic.from7779 ], [ %t154, %logic.rend7790 ] - %t156 = xor i1 %t155, true - br i1 %t156, label %then7791, label %endif7793 -then7791: - %t157 = load ptr, ptr %a1 - %t158 = load %S.ast.Node, ptr %a3 - %t159 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } { ptr @.str.4928, i64 5, i64 0 }, ptr %a162 - store { ptr, i64, i64 } %t160, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t164, ptr %a166 - store { ptr, i64, i64 } { ptr @.str.4929, i64 95, i64 0 }, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t164, ptr %a168 - call void @finch_str_drop(ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a165 - %t170 = load %S.ast.Type, ptr %a108 - %t171 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t170) - store { ptr, i64, i64 } %t169, ptr %a173 - store { ptr, i64, i64 } %t171, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t169, ptr %a175 - call void @finch_str_drop(ptr %a175) - store { ptr, i64, i64 } %t171, ptr %a176 - call void @finch_str_drop(ptr %a176) - %t177 = load { ptr, i64, i64 }, ptr %a172 - call void @finch.gen.fail(ptr %t157, %S.ast.Node %t158, { ptr, i64, i64 } %t177) - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - br label %endif7793 -endif7793: - br label %each.step7765 -each.step7765: - %t179 = load i64, ptr %a100 - %t180 = add i64 %t179, 1 - store i64 %t180, ptr %a100 - br label %each.cond7763 -each.end7766: - %t181 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t182 = load %S.ast.Type, ptr %t181 - %t183 = call i1 @finch.gen.isNumber(%S.ast.Type %t182) - br label %logic.from7794 -logic.from7794: - br i1 %t183, label %logic.end7796, label %logic.rhs7795 -logic.rhs7795: - %t184 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t185 = getelementptr inbounds %S.ast.Type, ptr %t184, i32 0, i32 0 - %t186 = load { ptr, i64, i64 }, ptr %t185 - store { ptr, i64, i64 } %t186, ptr %a187 - store { ptr, i64, i64 } { ptr @.str.4930, i64 4, i64 0 }, ptr %a188 - %t189 = call i32 @finch_str_eq(ptr %a187, ptr %a188) - %t190 = icmp ne i32 %t189, 0 - br label %logic.rend7797 -logic.rend7797: - br label %logic.end7796 -logic.end7796: - %t191 = phi i1 [ true, %logic.from7794 ], [ %t190, %logic.rend7797 ] - br label %logic.from7798 -logic.from7798: - br i1 %t191, label %logic.end7800, label %logic.rhs7799 -logic.rhs7799: - %t192 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t193 = getelementptr inbounds %S.ast.Type, ptr %t192, i32 0, i32 0 - %t194 = load { ptr, i64, i64 }, ptr %t193 - store { ptr, i64, i64 } %t194, ptr %a195 - store { ptr, i64, i64 } { ptr @.str.4931, i64 4, i64 0 }, ptr %a196 - %t197 = call i32 @finch_str_eq(ptr %a195, ptr %a196) - %t198 = icmp ne i32 %t197, 0 - br label %logic.rend7801 -logic.rend7801: - br label %logic.end7800 -logic.end7800: - %t199 = phi i1 [ true, %logic.from7798 ], [ %t198, %logic.rend7801 ] - br label %logic.from7802 -logic.from7802: - br i1 %t199, label %logic.end7804, label %logic.rhs7803 -logic.rhs7803: - %t200 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - store { ptr, i64, i64 } { ptr @.str.4932, i64 3, i64 0 }, ptr %a204 - %t205 = call i32 @finch_str_eq(ptr %a203, ptr %a204) - %t206 = icmp ne i32 %t205, 0 - br label %logic.rend7805 -logic.rend7805: - br label %logic.end7804 -logic.end7804: - %t207 = phi i1 [ true, %logic.from7802 ], [ %t206, %logic.rend7805 ] - br label %logic.from7806 -logic.from7806: - br i1 %t207, label %logic.end7808, label %logic.rhs7807 -logic.rhs7807: - %t208 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t209 = getelementptr inbounds %S.ast.Type, ptr %t208, i32 0, i32 0 - %t210 = load { ptr, i64, i64 }, ptr %t209 - store { ptr, i64, i64 } %t210, ptr %a211 - store { ptr, i64, i64 } { ptr @.str.4933, i64 4, i64 0 }, ptr %a212 - %t213 = call i32 @finch_str_eq(ptr %a211, ptr %a212) - %t214 = icmp ne i32 %t213, 0 - br label %logic.rend7809 -logic.rend7809: - br label %logic.end7808 -logic.end7808: - %t215 = phi i1 [ true, %logic.from7806 ], [ %t214, %logic.rend7809 ] - br label %logic.from7810 -logic.from7810: - br i1 %t215, label %logic.end7812, label %logic.rhs7811 -logic.rhs7811: - %t216 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t217 = getelementptr inbounds %S.ast.Type, ptr %t216, i32 0, i32 0 - %t218 = load { ptr, i64, i64 }, ptr %t217 - store { ptr, i64, i64 } %t218, ptr %a219 - store { ptr, i64, i64 } { ptr @.str.4934, i64 6, i64 0 }, ptr %a220 - %t221 = call i32 @finch_str_eq(ptr %a219, ptr %a220) - %t222 = icmp ne i32 %t221, 0 - br label %logic.from7813 -logic.from7813: - br i1 %t222, label %logic.rhs7814, label %logic.end7815 -logic.rhs7814: - %t223 = load ptr, ptr %a1 - %t224 = icmp eq ptr %t223, null - br i1 %t224, label %panic7816, label %ok7817 -panic7816: - call void @finch_panic(ptr @.str.4935, i64 4540, ptr @.str.4936) - unreachable -ok7817: - %t225 = getelementptr inbounds %S.gen.Gen, ptr %t223, i32 0, i32 16 - %t226 = load ptr, ptr %a1 - %t227 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t228 = getelementptr inbounds %S.ast.Type, ptr %t227, i32 0, i32 3 - %t229 = load { ptr, i64, i64 }, ptr %t228 - %t230 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t231 = getelementptr inbounds %S.ast.Type, ptr %t230, i32 0, i32 2 - %t232 = load { ptr, i64, i64 }, ptr %t231 - %t233 = call i64 @finch.gen.findStruct(ptr %t226, { ptr, i64, i64 } %t229, { ptr, i64, i64 } %t232) - %t234 = load { ptr, i64, i64 }, ptr %t225 - %t235 = extractvalue { ptr, i64, i64 } %t234, 1 - %t236 = icmp uge i64 %t233, %t235 - br i1 %t236, label %range7818, label %inrange7819 -range7818: - call void @finch_panic_index(ptr @.str.4937, i64 4540, i64 %t233, i64 %t235) - unreachable -inrange7819: - %t237 = extractvalue { ptr, i64, i64 } %t234, 0 - %t238 = getelementptr inbounds %S.gen.StructDef, ptr %t237, i64 %t233 - %t239 = getelementptr inbounds %S.gen.StructDef, ptr %t238, i32 0, i32 2 - %t240 = load i1, ptr %t239 - br label %logic.rend7820 -logic.rend7820: - br label %logic.end7815 -logic.end7815: - %t241 = phi i1 [ false, %logic.from7813 ], [ %t240, %logic.rend7820 ] - br label %logic.rend7821 -logic.rend7821: - br label %logic.end7812 -logic.end7812: - %t242 = phi i1 [ true, %logic.from7810 ], [ %t241, %logic.rend7821 ] - %t243 = xor i1 %t242, true - br i1 %t243, label %then7822, label %endif7824 -then7822: - %t244 = load ptr, ptr %a1 - %t245 = load %S.ast.Node, ptr %a3 - %t246 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 1 - %t247 = load { ptr, i64, i64 }, ptr %t246 - store { ptr, i64, i64 } { ptr @.str.4938, i64 5, i64 0 }, ptr %a249 - store { ptr, i64, i64 } %t247, ptr %a250 - call void @finch_str_concat(ptr %a248, ptr %a249, ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.4939, i64 38, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - %t257 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t258 = load %S.ast.Type, ptr %t257 - %t259 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t258) - store { ptr, i64, i64 } %t256, ptr %a261 - store { ptr, i64, i64 } %t259, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t256, ptr %a263 - call void @finch_str_drop(ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a260 - call void @finch.gen.fail(ptr %t244, %S.ast.Node %t245, { ptr, i64, i64 } %t265) - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_drop(ptr %a266) - br label %endif7824 -endif7824: - %t267 = load ptr, ptr %a1 - %t268 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t269 = load %S.ast.Type, ptr %t268 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t271 = load { ptr, i64, i64 }, ptr %t270 - %t272 = call %S.gen.Plan @finch.gen.makePlan(ptr %t267, %S.ast.Type %t269, { ptr, i64, i64 } %t271) - store %S.gen.Plan %t272, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t274) - store %S.gen.Saved %t275, ptr %a276 - store { ptr, i64, i64 } zeroinitializer, ptr %a277 - store i64 0, ptr %a278 - store { ptr, i64, i64 } { ptr @.str.4940, i64 0, i64 0 }, ptr %a279 - %t280 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t281 = load i1, ptr %t280 - br i1 %t281, label %then7825, label %endif7827 -then7825: - %t282 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t283 = load ptr, ptr %a1 - %t284 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t285 = load %S.ast.Type, ptr %t284 - %t286 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t283, %S.ast.Type %t285) - store { ptr, i64, i64 } { ptr @.str.4941, i64 9, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t286, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.4942, i64 14, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load i64, ptr %t282 - %t298 = add i64 %t297, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t298, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t299 = load ptr, ptr %a277 - %t300 = getelementptr inbounds { ptr, i64, i64 }, ptr %t299, i64 %t297 - store { ptr, i64, i64 } %t296, ptr %t300 - store i64 %t298, ptr %t282 - %t301 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.4943, i64 3, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - store i64 1, ptr %a278 - br label %endif7827 -endif7827: - store { ptr, i64, i64 } zeroinitializer, ptr %a303 - %t304 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t305 = getelementptr inbounds { ptr, i64, i64 }, ptr %t304, i32 0, i32 1 - %t306 = load i64, ptr %t305 - store i64 0, ptr %a307 - br label %for.cond7828 -for.cond7828: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t306 - br i1 %t309, label %for.body7829, label %for.end7831 -for.body7829: - %t310 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 13 - %t311 = load i64, ptr %a307 - %t312 = load { ptr, i64, i64 }, ptr %t310 - %t313 = extractvalue { ptr, i64, i64 } %t312, 1 - %t314 = icmp uge i64 %t311, %t313 - br i1 %t314, label %range7832, label %inrange7833 -range7832: - call void @finch_panic_index(ptr @.str.4944, i64 4555, i64 %t311, i64 %t313) - unreachable -inrange7833: - %t315 = extractvalue { ptr, i64, i64 } %t312, 0 - %t316 = getelementptr inbounds %S.ast.Type, ptr %t315, i64 %t311 - %t317 = load %S.ast.Type, ptr %t316 - store %S.ast.Type %t317, ptr %a318 - call void @finch.copy.S_ast_Type(ptr %a319, ptr %a318) - %t320 = load %S.ast.Type, ptr %a319 - store %S.ast.Type %t320, ptr %a321 - %t322 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 1 - %t323 = load i64, ptr %a307 - %t324 = load { ptr, i64, i64 }, ptr %t322 - %t325 = extractvalue { ptr, i64, i64 } %t324, 1 - %t326 = icmp uge i64 %t323, %t325 - br i1 %t326, label %range7834, label %inrange7835 -range7834: - call void @finch_panic_index(ptr @.str.4945, i64 4556, i64 %t323, i64 %t325) - unreachable -inrange7835: - %t327 = extractvalue { ptr, i64, i64 } %t324, 0 - %t328 = getelementptr inbounds %S.gen.Abi, ptr %t327, i64 %t323 - %t329 = load %S.gen.Abi, ptr %t328 - store %S.gen.Abi %t329, ptr %a330 - call void @finch.copy.S_gen_Abi(ptr %a331, ptr %a330) - %t332 = load %S.gen.Abi, ptr %a331 - store %S.gen.Abi %t332, ptr %a333 - %t334 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t335, ptr %a336 - store { ptr, i64, i64 } { ptr @.str.4946, i64 6, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_eq(ptr %a336, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br i1 %t339, label %then7836, label %else7837 -then7836: - %t340 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t341 = load ptr, ptr %a1 - %t342 = load %S.ast.Type, ptr %a321 - %t343 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t341, %S.ast.Type %t342) - store { ptr, i64, i64 } { ptr @.str.4947, i64 10, i64 0 }, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.4948, i64 8, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - %t354 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 3 - %t355 = load i64, ptr %t354 - call void @finch_str_from_int(ptr %a356, i64 %t355) - %t357 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t353, ptr %a359 - store { ptr, i64, i64 } %t357, ptr %a360 - call void @finch_str_concat(ptr %a358, ptr %a359, ptr %a360) - store { ptr, i64, i64 } %t353, ptr %a361 - call void @finch_str_drop(ptr %a361) - store { ptr, i64, i64 } %t357, ptr %a362 - call void @finch_str_drop(ptr %a362) - %t363 = load { ptr, i64, i64 }, ptr %a358 - store { ptr, i64, i64 } %t363, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.4949, i64 3, i64 0 }, ptr %a366 - call void @finch_str_concat(ptr %a364, ptr %a365, ptr %a366) - store { ptr, i64, i64 } %t363, ptr %a367 - call void @finch_str_drop(ptr %a367) - %t368 = load { ptr, i64, i64 }, ptr %a364 - %t369 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a370, i64 %t369) - %t371 = load { ptr, i64, i64 }, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t368, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - %t378 = load i64, ptr %t340 - %t379 = add i64 %t378, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t379, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t380 = load ptr, ptr %a277 - %t381 = getelementptr inbounds { ptr, i64, i64 }, ptr %t380, i64 %t378 - store { ptr, i64, i64 } %t377, ptr %t381 - store i64 %t379, ptr %t340 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t383 = load ptr, ptr %a1 - %t384 = load %S.ast.Type, ptr %a321 - %t385 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t383, %S.ast.Type %t384) - store { ptr, i64, i64 } %t385, ptr %a387 - store { ptr, i64, i64 } { ptr @.str.4950, i64 1, i64 0 }, ptr %a388 - call void @finch_str_concat(ptr %a386, ptr %a387, ptr %a388) - store { ptr, i64, i64 } %t385, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a386 - %t391 = load ptr, ptr %a1 - %t392 = load ptr, ptr %a1 - %t393 = load %S.ast.Type, ptr %a321 - %t394 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t392, %S.ast.Type %t393) - %t395 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a396, i64 %t395) - %t397 = load { ptr, i64, i64 }, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.4951, i64 2, i64 0 }, ptr %a399 - store { ptr, i64, i64 } %t397, ptr %a400 - call void @finch_str_concat(ptr %a398, ptr %a399, ptr %a400) - store { ptr, i64, i64 } %t397, ptr %a401 - call void @finch_str_drop(ptr %a401) - %t402 = load { ptr, i64, i64 }, ptr %a398 - %t403 = call { ptr, i64, i64 } @finch.gen.load(ptr %t391, { ptr, i64, i64 } %t394, { ptr, i64, i64 } %t402) - store { ptr, i64, i64 } %t394, ptr %a404 - call void @finch_str_drop(ptr %a404) - store { ptr, i64, i64 } %t402, ptr %a405 - call void @finch_str_drop(ptr %a405) - store { ptr, i64, i64 } %t390, ptr %a407 - store { ptr, i64, i64 } %t403, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t390, ptr %a409 - call void @finch_str_drop(ptr %a409) - store { ptr, i64, i64 } %t403, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a406 - %t412 = load i64, ptr %t382 - %t413 = add i64 %t412, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t413, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t414 = load ptr, ptr %a303 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t412 - store { ptr, i64, i64 } %t411, ptr %t415 - store i64 %t413, ptr %t382 - %t416 = load i64, ptr %a278 - %t417 = add i64 %t416, 1 - store i64 %t417, ptr %a278 - br label %endif7838 -else7837: - %t418 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t419 = load { ptr, i64, i64 }, ptr %t418 - store { ptr, i64, i64 } %t419, ptr %a420 - store { ptr, i64, i64 } { ptr @.str.4952, i64 8, i64 0 }, ptr %a421 - %t422 = call i32 @finch_str_eq(ptr %a420, ptr %a421) - %t423 = icmp ne i32 %t422, 0 - br i1 %t423, label %then7839, label %else7840 -then7839: - %t424 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t425 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a426, i64 %t425) - %t427 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } { ptr @.str.4953, i64 6, i64 0 }, ptr %a429 - store { ptr, i64, i64 } %t427, ptr %a430 - call void @finch_str_concat(ptr %a428, ptr %a429, ptr %a430) - store { ptr, i64, i64 } %t427, ptr %a431 - call void @finch_str_drop(ptr %a431) - %t432 = load { ptr, i64, i64 }, ptr %a428 - %t433 = load i64, ptr %t424 - %t434 = add i64 %t433, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t434, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t435 = load ptr, ptr %a277 - %t436 = getelementptr inbounds { ptr, i64, i64 }, ptr %t435, i64 %t433 - store { ptr, i64, i64 } %t432, ptr %t436 - store i64 %t434, ptr %t424 - %t437 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t438 = load ptr, ptr %a1 - %t439 = load %S.ast.Type, ptr %a321 - %t440 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t438, %S.ast.Type %t439) - store { ptr, i64, i64 } %t440, ptr %a442 - store { ptr, i64, i64 } { ptr @.str.4954, i64 1, i64 0 }, ptr %a443 - call void @finch_str_concat(ptr %a441, ptr %a442, ptr %a443) - store { ptr, i64, i64 } %t440, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = load { ptr, i64, i64 }, ptr %a441 - %t446 = load ptr, ptr %a1 - %t447 = load ptr, ptr %a1 - %t448 = load %S.ast.Type, ptr %a321 - %t449 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t447, %S.ast.Type %t448) - %t450 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } { ptr @.str.4955, i64 2, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t452, ptr %a456 - call void @finch_str_drop(ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a453 - %t458 = call { ptr, i64, i64 } @finch.gen.load(ptr %t446, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t449, ptr %a459 - call void @finch_str_drop(ptr %a459) - store { ptr, i64, i64 } %t457, ptr %a460 - call void @finch_str_drop(ptr %a460) - store { ptr, i64, i64 } %t445, ptr %a462 - store { ptr, i64, i64 } %t458, ptr %a463 - call void @finch_str_concat(ptr %a461, ptr %a462, ptr %a463) - store { ptr, i64, i64 } %t445, ptr %a464 - call void @finch_str_drop(ptr %a464) - store { ptr, i64, i64 } %t458, ptr %a465 - call void @finch_str_drop(ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a461 - %t467 = load i64, ptr %t437 - %t468 = add i64 %t467, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t468, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t469 = load ptr, ptr %a303 - %t470 = getelementptr inbounds { ptr, i64, i64 }, ptr %t469, i64 %t467 - store { ptr, i64, i64 } %t466, ptr %t470 - store i64 %t468, ptr %t437 - %t471 = load i64, ptr %a278 - %t472 = add i64 %t471, 1 - store i64 %t472, ptr %a278 - br label %endif7841 -else7840: - %t473 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 0 - %t474 = load { ptr, i64, i64 }, ptr %t473 - store { ptr, i64, i64 } %t474, ptr %a475 - store { ptr, i64, i64 } { ptr @.str.4956, i64 6, i64 0 }, ptr %a476 - %t477 = call i32 @finch_str_eq(ptr %a475, ptr %a476) - %t478 = icmp ne i32 %t477, 0 - br i1 %t478, label %then7842, label %else7843 -then7842: - %t479 = load ptr, ptr %a1 - %t480 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t479, { ptr, i64, i64 } { ptr @.str.4957, i64 9, i64 0 }) - store { ptr, i64, i64 } %t480, ptr %a481 - %t482 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load i64, ptr %t483 - store i64 0, ptr %a485 - br label %for.cond7845 -for.cond7845: - %t486 = load i64, ptr %a485 - %t487 = icmp slt i64 %t486, %t484 - br i1 %t487, label %for.body7846, label %for.end7848 -for.body7846: - %t488 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t489 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t490 = load i64, ptr %a485 - %t491 = load { ptr, i64, i64 }, ptr %t489 - %t492 = extractvalue { ptr, i64, i64 } %t491, 1 - %t493 = icmp uge i64 %t490, %t492 - br i1 %t493, label %range7849, label %inrange7850 -range7849: - call void @finch_panic_index(ptr @.str.4958, i64 4568, i64 %t490, i64 %t492) - unreachable -inrange7850: - %t494 = extractvalue { ptr, i64, i64 } %t491, 0 - %t495 = getelementptr inbounds { ptr, i64, i64 }, ptr %t494, i64 %t490 - %t496 = load { ptr, i64, i64 }, ptr %t495 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.4959, i64 3, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - %t500 = load { ptr, i64, i64 }, ptr %a497 - %t501 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a502, i64 %t501) - %t503 = load { ptr, i64, i64 }, ptr %a502 - store { ptr, i64, i64 } %t500, ptr %a505 - store { ptr, i64, i64 } %t503, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t500, ptr %a507 - call void @finch_str_drop(ptr %a507) - store { ptr, i64, i64 } %t503, ptr %a508 - call void @finch_str_drop(ptr %a508) - %t509 = load { ptr, i64, i64 }, ptr %a504 - %t510 = load i64, ptr %t488 - %t511 = add i64 %t510, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t511, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t512 = load ptr, ptr %a277 - %t513 = getelementptr inbounds { ptr, i64, i64 }, ptr %t512, i64 %t510 - store { ptr, i64, i64 } %t509, ptr %t513 - store i64 %t511, ptr %t488 - %t514 = load ptr, ptr %a1 - %t515 = getelementptr inbounds %S.gen.Abi, ptr %a333, i32 0, i32 1 - %t516 = load i64, ptr %a485 - %t517 = load { ptr, i64, i64 }, ptr %t515 - %t518 = extractvalue { ptr, i64, i64 } %t517, 1 - %t519 = icmp uge i64 %t516, %t518 - br i1 %t519, label %range7851, label %inrange7852 -range7851: - call void @finch_panic_index(ptr @.str.4960, i64 4569, i64 %t516, i64 %t518) - unreachable -inrange7852: - %t520 = extractvalue { ptr, i64, i64 } %t517, 0 - %t521 = getelementptr inbounds { ptr, i64, i64 }, ptr %t520, i64 %t516 - %t522 = load { ptr, i64, i64 }, ptr %t521 - %t523 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a524, i64 %t523) - %t525 = load { ptr, i64, i64 }, ptr %a524 - store { ptr, i64, i64 } { ptr @.str.4961, i64 2, i64 0 }, ptr %a527 - store { ptr, i64, i64 } %t525, ptr %a528 - call void @finch_str_concat(ptr %a526, ptr %a527, ptr %a528) - store { ptr, i64, i64 } %t525, ptr %a529 - call void @finch_str_drop(ptr %a529) - %t530 = load { ptr, i64, i64 }, ptr %a526 - %t531 = load ptr, ptr %a1 - %t532 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } { ptr @.str.4962, i64 31, i64 0 }, ptr %a534 - store { ptr, i64, i64 } %t532, ptr %a535 - call void @finch_str_concat(ptr %a533, ptr %a534, ptr %a535) - %t536 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t536, ptr %a538 - store { ptr, i64, i64 } { ptr @.str.4963, i64 6, i64 0 }, ptr %a539 - call void @finch_str_concat(ptr %a537, ptr %a538, ptr %a539) - store { ptr, i64, i64 } %t536, ptr %a540 - call void @finch_str_drop(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a537 - %t542 = load i64, ptr %a485 - %t543 = mul i64 8, %t542 - call void @finch_str_from_int(ptr %a544, i64 %t543) - %t545 = load { ptr, i64, i64 }, ptr %a544 - store { ptr, i64, i64 } %t541, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - store { ptr, i64, i64 } %t541, ptr %a549 - call void @finch_str_drop(ptr %a549) - store { ptr, i64, i64 } %t545, ptr %a550 - call void @finch_str_drop(ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a546 - %t552 = call { ptr, i64, i64 } @finch.gen.op(ptr %t531, { ptr, i64, i64 } %t551) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.gen.store(ptr %t514, { ptr, i64, i64 } %t522, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t552) - store { ptr, i64, i64 } %t530, ptr %a554 - call void @finch_str_drop(ptr %a554) - store { ptr, i64, i64 } %t552, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load i64, ptr %a278 - %t557 = add i64 %t556, 1 - store i64 %t557, ptr %a278 - br label %for.step7847 -for.step7847: - %t558 = load i64, ptr %a485 - %t559 = add i64 %t558, 1 - store i64 %t559, ptr %a485 - br label %for.cond7845 -for.end7848: - %t560 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t561 = load ptr, ptr %a1 - %t562 = load %S.ast.Type, ptr %a321 - %t563 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t561, %S.ast.Type %t562) - store { ptr, i64, i64 } %t563, ptr %a565 - store { ptr, i64, i64 } { ptr @.str.4964, i64 1, i64 0 }, ptr %a566 - call void @finch_str_concat(ptr %a564, ptr %a565, ptr %a566) - store { ptr, i64, i64 } %t563, ptr %a567 - call void @finch_str_drop(ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a564 - %t569 = load ptr, ptr %a1 - %t570 = load ptr, ptr %a1 - %t571 = load %S.ast.Type, ptr %a321 - %t572 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t570, %S.ast.Type %t571) - %t573 = load { ptr, i64, i64 }, ptr %a481 - %t574 = call { ptr, i64, i64 } @finch.gen.load(ptr %t569, { ptr, i64, i64 } %t572, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t572, ptr %a575 - call void @finch_str_drop(ptr %a575) - store { ptr, i64, i64 } %t568, ptr %a577 - store { ptr, i64, i64 } %t574, ptr %a578 - call void @finch_str_concat(ptr %a576, ptr %a577, ptr %a578) - store { ptr, i64, i64 } %t568, ptr %a579 - call void @finch_str_drop(ptr %a579) - store { ptr, i64, i64 } %t574, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a576 - %t582 = load i64, ptr %t560 - %t583 = add i64 %t582, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t583, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t584 = load ptr, ptr %a303 - %t585 = getelementptr inbounds { ptr, i64, i64 }, ptr %t584, i64 %t582 - store { ptr, i64, i64 } %t581, ptr %t585 - store i64 %t583, ptr %t560 - call void @finch_str_drop(ptr %a481) - br label %endif7844 -else7843: - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - %t587 = load ptr, ptr %a1 - %t588 = load %S.ast.Type, ptr %a321 - %t589 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t587, %S.ast.Type %t588) - %t590 = load ptr, ptr %a1 - %t591 = load %S.ast.Type, ptr %a321 - %t592 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t590, %S.ast.Type %t591) - store { ptr, i64, i64 } %t589, ptr %a594 - store { ptr, i64, i64 } %t592, ptr %a595 - call void @finch_str_concat(ptr %a593, ptr %a594, ptr %a595) - store { ptr, i64, i64 } %t589, ptr %a596 - call void @finch_str_drop(ptr %a596) - store { ptr, i64, i64 } %t592, ptr %a597 - call void @finch_str_drop(ptr %a597) - %t598 = load { ptr, i64, i64 }, ptr %a593 - store { ptr, i64, i64 } %t598, ptr %a600 - store { ptr, i64, i64 } { ptr @.str.4965, i64 3, i64 0 }, ptr %a601 - call void @finch_str_concat(ptr %a599, ptr %a600, ptr %a601) - store { ptr, i64, i64 } %t598, ptr %a602 - call void @finch_str_drop(ptr %a602) - %t603 = load { ptr, i64, i64 }, ptr %a599 - %t604 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a605, i64 %t604) - %t606 = load { ptr, i64, i64 }, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a608 - store { ptr, i64, i64 } %t606, ptr %a609 - call void @finch_str_concat(ptr %a607, ptr %a608, ptr %a609) - store { ptr, i64, i64 } %t603, ptr %a610 - call void @finch_str_drop(ptr %a610) - store { ptr, i64, i64 } %t606, ptr %a611 - call void @finch_str_drop(ptr %a611) - %t612 = load { ptr, i64, i64 }, ptr %a607 - %t613 = load i64, ptr %t586 - %t614 = add i64 %t613, 1 - call void @finch_arr_reserve(ptr %a277, i64 %t614, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t615 = load ptr, ptr %a277 - %t616 = getelementptr inbounds { ptr, i64, i64 }, ptr %t615, i64 %t613 - store { ptr, i64, i64 } %t612, ptr %t616 - store i64 %t614, ptr %t586 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - %t618 = load ptr, ptr %a1 - %t619 = load %S.ast.Type, ptr %a321 - %t620 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t618, %S.ast.Type %t619) - store { ptr, i64, i64 } %t620, ptr %a622 - store { ptr, i64, i64 } { ptr @.str.4966, i64 3, i64 0 }, ptr %a623 - call void @finch_str_concat(ptr %a621, ptr %a622, ptr %a623) - store { ptr, i64, i64 } %t620, ptr %a624 - call void @finch_str_drop(ptr %a624) - %t625 = load { ptr, i64, i64 }, ptr %a621 - %t626 = load i64, ptr %a278 - call void @finch_str_from_int(ptr %a627, i64 %t626) - %t628 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t625, ptr %a630 - store { ptr, i64, i64 } %t628, ptr %a631 - call void @finch_str_concat(ptr %a629, ptr %a630, ptr %a631) - store { ptr, i64, i64 } %t625, ptr %a632 - call void @finch_str_drop(ptr %a632) - store { ptr, i64, i64 } %t628, ptr %a633 - call void @finch_str_drop(ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a629 - %t635 = load i64, ptr %t617 - %t636 = add i64 %t635, 1 - call void @finch_arr_reserve(ptr %a303, i64 %t636, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t637 = load ptr, ptr %a303 - %t638 = getelementptr inbounds { ptr, i64, i64 }, ptr %t637, i64 %t635 - store { ptr, i64, i64 } %t634, ptr %t638 - store i64 %t636, ptr %t617 - %t639 = load i64, ptr %a278 - %t640 = add i64 %t639, 1 - store i64 %t640, ptr %a278 - br label %endif7844 -endif7844: - br label %endif7841 -endif7841: - br label %endif7838 -endif7838: - call void @finch.drop.S_gen_Abi(ptr %a333) - call void @finch.drop.S_ast_Type(ptr %a321) - br label %for.step7830 -for.step7830: - %t641 = load i64, ptr %a307 - %t642 = add i64 %t641, 1 - store i64 %t642, ptr %a307 - br label %for.cond7828 -for.end7831: - %t643 = load ptr, ptr %a1 - %t644 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t645 = load %S.ast.Type, ptr %t644 - %t646 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t643, %S.ast.Type %t645) - store { ptr, i64, i64 } { ptr @.str.4967, i64 5, i64 0 }, ptr %a648 - store { ptr, i64, i64 } %t646, ptr %a649 - call void @finch_str_concat(ptr %a647, ptr %a648, ptr %a649) - store { ptr, i64, i64 } %t646, ptr %a650 - call void @finch_str_drop(ptr %a650) - %t651 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } %t651, ptr %a653 - store { ptr, i64, i64 } { ptr @.str.4968, i64 1, i64 0 }, ptr %a654 - call void @finch_str_concat(ptr %a652, ptr %a653, ptr %a654) - store { ptr, i64, i64 } %t651, ptr %a655 - call void @finch_str_drop(ptr %a655) - %t656 = load { ptr, i64, i64 }, ptr %a652 - %t657 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 11 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t656, ptr %a660 - store { ptr, i64, i64 } %t658, ptr %a661 - call void @finch_str_concat(ptr %a659, ptr %a660, ptr %a661) - store { ptr, i64, i64 } %t656, ptr %a662 - call void @finch_str_drop(ptr %a662) - %t663 = load { ptr, i64, i64 }, ptr %a659 - store { ptr, i64, i64 } %t663, ptr %a665 - store { ptr, i64, i64 } { ptr @.str.4969, i64 1, i64 0 }, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t663, ptr %a667 - call void @finch_str_drop(ptr %a667) - %t668 = load { ptr, i64, i64 }, ptr %a664 - %t669 = getelementptr inbounds { ptr, i64, i64 }, ptr %a303, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4970, i64 2, i64 0 }, ptr %a670 - call void @finch_str_join(ptr %a671, ptr %a303, ptr %a670) - %t672 = load { ptr, i64, i64 }, ptr %a671 - store { ptr, i64, i64 } %t668, ptr %a674 - store { ptr, i64, i64 } %t672, ptr %a675 - call void @finch_str_concat(ptr %a673, ptr %a674, ptr %a675) - store { ptr, i64, i64 } %t668, ptr %a676 - call void @finch_str_drop(ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a673 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.4971, i64 1, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - store { ptr, i64, i64 } %t683, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.4972, i64 0, i64 0 }, ptr %a685 - %t686 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t687 = getelementptr inbounds %S.ast.Type, ptr %t686, i32 0, i32 0 - %t688 = load { ptr, i64, i64 }, ptr %t687 - store { ptr, i64, i64 } %t688, ptr %a689 - store { ptr, i64, i64 } { ptr @.str.4973, 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 %then7853, label %else7854 -then7853: - %t693 = load ptr, ptr %a1 - %t694 = load { ptr, i64, i64 }, ptr %a684 - call void @finch.gen.emit(ptr %t693, { ptr, i64, i64 } %t694) - %t695 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t695, { ptr, i64, i64 } { ptr @.str.4974, i64 8, i64 0 }) - br label %endif7855 -else7854: - %t696 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 3 - %t697 = load i1, ptr %t696 - br i1 %t697, label %then7856, label %else7857 -then7856: - %t698 = load ptr, ptr %a1 - %t699 = load ptr, ptr %a1 - %t700 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t701 = load %S.ast.Type, ptr %t700 - %t702 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t699, %S.ast.Type %t701) - %t703 = load ptr, ptr %a1 - %t704 = load { ptr, i64, i64 }, ptr %a684 - %t705 = call { ptr, i64, i64 } @finch.gen.op(ptr %t703, { ptr, i64, i64 } %t704) - %t706 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.store(ptr %t698, { ptr, i64, i64 } %t702, { ptr, i64, i64 } %t705, { ptr, i64, i64 } %t706) - store { ptr, i64, i64 } %t702, ptr %a707 - call void @finch_str_drop(ptr %a707) - store { ptr, i64, i64 } %t705, ptr %a708 - call void @finch_str_drop(ptr %a708) - %t709 = load ptr, ptr %a1 - call void @finch.gen.emit(ptr %t709, { ptr, i64, i64 } { ptr @.str.4975, i64 8, i64 0 }) - br label %endif7858 -else7857: - %t710 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t711 = getelementptr inbounds %S.gen.Abi, ptr %t710, i32 0, i32 0 - %t712 = load { ptr, i64, i64 }, ptr %t711 - store { ptr, i64, i64 } %t712, ptr %a713 - store { ptr, i64, i64 } { ptr @.str.4976, i64 6, i64 0 }, ptr %a714 - %t715 = call i32 @finch_str_eq(ptr %a713, ptr %a714) - %t716 = icmp ne i32 %t715, 0 - br i1 %t716, label %then7859, label %else7860 -then7859: - %t717 = load ptr, ptr %a1 - %t718 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t717, { ptr, i64, i64 } { ptr @.str.4977, i64 9, i64 0 }) - store { ptr, i64, i64 } %t718, ptr %a719 - %t720 = load ptr, ptr %a1 - %t721 = load ptr, ptr %a1 - %t722 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t723 = load %S.ast.Type, ptr %t722 - %t724 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t721, %S.ast.Type %t723) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a684 - %t727 = call { ptr, i64, i64 } @finch.gen.op(ptr %t725, { ptr, i64, i64 } %t726) - %t728 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.store(ptr %t720, { ptr, i64, i64 } %t724, { ptr, i64, i64 } %t727, { ptr, i64, i64 } %t728) - store { ptr, i64, i64 } %t724, ptr %a729 - call void @finch_str_drop(ptr %a729) - store { ptr, i64, i64 } %t727, ptr %a730 - call void @finch_str_drop(ptr %a730) - %t731 = load ptr, ptr %a1 - %t732 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t733 = getelementptr inbounds %S.gen.Abi, ptr %t732, i32 0, i32 2 - %t734 = load { ptr, i64, i64 }, ptr %t733 - store { ptr, i64, i64 } { ptr @.str.4978, i64 4, i64 0 }, ptr %a736 - store { ptr, i64, i64 } %t734, ptr %a737 - call void @finch_str_concat(ptr %a735, ptr %a736, ptr %a737) - %t738 = load { ptr, i64, i64 }, ptr %a735 - store { ptr, i64, i64 } %t738, ptr %a740 - store { ptr, i64, i64 } { ptr @.str.4979, i64 1, i64 0 }, ptr %a741 - call void @finch_str_concat(ptr %a739, ptr %a740, ptr %a741) - store { ptr, i64, i64 } %t738, ptr %a742 - call void @finch_str_drop(ptr %a742) - %t743 = load { ptr, i64, i64 }, ptr %a739 - %t744 = load ptr, ptr %a1 - %t745 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 0 - %t746 = getelementptr inbounds %S.gen.Abi, ptr %t745, i32 0, i32 2 - %t747 = load { ptr, i64, i64 }, ptr %t746 - %t748 = load { ptr, i64, i64 }, ptr %a719 - %t749 = call { ptr, i64, i64 } @finch.gen.load(ptr %t744, { ptr, i64, i64 } %t747, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t743, ptr %a751 - store { ptr, i64, i64 } %t749, ptr %a752 - call void @finch_str_concat(ptr %a750, ptr %a751, ptr %a752) - store { ptr, i64, i64 } %t743, ptr %a753 - call void @finch_str_drop(ptr %a753) - store { ptr, i64, i64 } %t749, ptr %a754 - call void @finch_str_drop(ptr %a754) - %t755 = load { ptr, i64, i64 }, ptr %a750 - call void @finch.gen.emit(ptr %t731, { ptr, i64, i64 } %t755) - store { ptr, i64, i64 } %t755, ptr %a756 - call void @finch_str_drop(ptr %a756) - call void @finch_str_drop(ptr %a719) - br label %endif7861 -else7860: - %t757 = load ptr, ptr %a1 - %t758 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t759 = load %S.ast.Type, ptr %t758 - %t760 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t757, %S.ast.Type %t759) - %t761 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } %t760, ptr %a685 - store { ptr, i64, i64 } %t761, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = load ptr, ptr %a1 - %t764 = load ptr, ptr %a1 - %t765 = getelementptr inbounds %S.gen.FnSig, ptr %a17, i32 0, i32 12 - %t766 = load %S.ast.Type, ptr %t765 - %t767 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t764, %S.ast.Type %t766) - store { ptr, i64, i64 } { ptr @.str.4980, i64 4, i64 0 }, ptr %a769 - store { ptr, i64, i64 } %t767, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.4981, i64 1, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = load ptr, ptr %a1 - %t779 = load { ptr, i64, i64 }, ptr %a684 - %t780 = call { ptr, i64, i64 } @finch.gen.op(ptr %t778, { ptr, i64, i64 } %t779) - store { ptr, i64, i64 } %t777, ptr %a782 - store { ptr, i64, i64 } %t780, ptr %a783 - call void @finch_str_concat(ptr %a781, ptr %a782, ptr %a783) - store { ptr, i64, i64 } %t777, ptr %a784 - call void @finch_str_drop(ptr %a784) - store { ptr, i64, i64 } %t780, ptr %a785 - call void @finch_str_drop(ptr %a785) - %t786 = load { ptr, i64, i64 }, ptr %a781 - call void @finch.gen.emit(ptr %t763, { ptr, i64, i64 } %t786) - store { ptr, i64, i64 } %t786, ptr %a787 - call void @finch_str_drop(ptr %a787) - br label %endif7861 -endif7861: - br label %endif7858 -endif7858: - br label %endif7855 -endif7855: - %t788 = load ptr, ptr %a1 - %t789 = load %S.gen.Saved, ptr %a276 - %t790 = load { ptr, i64, i64 }, ptr %a685 - store { ptr, i64, i64 } { ptr @.str.4982, i64 15, i64 0 }, ptr %a792 - store { ptr, i64, i64 } %t790, ptr %a793 - call void @finch_str_concat(ptr %a791, ptr %a792, ptr %a793) - %t794 = load { ptr, i64, i64 }, ptr %a791 - store { ptr, i64, i64 } %t794, ptr %a796 - store { ptr, i64, i64 } { ptr @.str.4983, i64 1, i64 0 }, ptr %a797 - call void @finch_str_concat(ptr %a795, ptr %a796, ptr %a797) - store { ptr, i64, i64 } %t794, ptr %a798 - call void @finch_str_drop(ptr %a798) - %t799 = load { ptr, i64, i64 }, ptr %a795 - %t800 = getelementptr inbounds %S.gen.Plan, ptr %a273, i32 0, i32 2 - %t801 = load { ptr, i64, i64 }, ptr %t800 - store { ptr, i64, i64 } %t799, ptr %a803 - store { ptr, i64, i64 } %t801, ptr %a804 - call void @finch_str_concat(ptr %a802, ptr %a803, ptr %a804) - store { ptr, i64, i64 } %t799, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load { ptr, i64, i64 }, ptr %a802 - store { ptr, i64, i64 } %t806, ptr %a808 - store { ptr, i64, i64 } { ptr @.str.4984, i64 1, i64 0 }, ptr %a809 - call void @finch_str_concat(ptr %a807, ptr %a808, ptr %a809) - store { ptr, i64, i64 } %t806, ptr %a810 - call void @finch_str_drop(ptr %a810) - %t811 = load { ptr, i64, i64 }, ptr %a807 - %t812 = load { ptr, i64, i64 }, ptr %a38 - store { ptr, i64, i64 } %t811, ptr %a814 - store { ptr, i64, i64 } %t812, ptr %a815 - call void @finch_str_concat(ptr %a813, ptr %a814, ptr %a815) - store { ptr, i64, i64 } %t811, ptr %a816 - call void @finch_str_drop(ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a813 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.4985, i64 1, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = getelementptr inbounds { ptr, i64, i64 }, ptr %a277, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.4986, i64 2, i64 0 }, ptr %a824 - call void @finch_str_join(ptr %a825, ptr %a277, ptr %a824) - %t826 = load { ptr, i64, i64 }, ptr %a825 - store { ptr, i64, i64 } %t822, ptr %a828 - store { ptr, i64, i64 } %t826, ptr %a829 - call void @finch_str_concat(ptr %a827, ptr %a828, ptr %a829) - store { ptr, i64, i64 } %t822, ptr %a830 - call void @finch_str_drop(ptr %a830) - store { ptr, i64, i64 } %t826, ptr %a831 - call void @finch_str_drop(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a827 - store { ptr, i64, i64 } %t832, ptr %a834 - store { ptr, i64, i64 } { ptr @.str.4987, i64 1, i64 0 }, ptr %a835 - call void @finch_str_concat(ptr %a833, ptr %a834, ptr %a835) - store { ptr, i64, i64 } %t832, ptr %a836 - call void @finch_str_drop(ptr %a836) - %t837 = load { ptr, i64, i64 }, ptr %a833 - call void @finch.gen.endHelper(ptr %t788, %S.gen.Saved %t789, { ptr, i64, i64 } %t837) - store { ptr, i64, i64 } %t837, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a38 - call void @finch_str_drop(ptr %a685) - call void @finch_str_drop(ptr %a684) - call void @finch.drop.arr_str(ptr %a303) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.arr_str(ptr %a277) - call void @finch.drop.S_gen_Saved(ptr %a276) - call void @finch.drop.S_gen_Plan(ptr %a273) - call void @finch.drop.S_gen_FnSig(ptr %a17) - ret { ptr, i64, i64 } %t839 -} - -define internal %S.gen.Val @finch.gen.enumFrom(ptr %p0, %S.ast.Node %p1, i64 %p2) { -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 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca %S.ast.Type, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca i64, align 16 - %a85 = alloca i64, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.ast.Type, align 16 - %a125 = alloca %S.ast.Type, align 16 - %a135 = alloca %S.ast.Type, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca i64, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %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 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca %S.ast.Type, align 16 - %a244 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store i64 %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7865, label %ok7866 -panic7865: - call void @finch_panic(ptr @.str.4988, i64 4601, ptr @.str.4989) - unreachable -ok7866: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 21 - %t7 = load i64, ptr %a3 - %t8 = load { ptr, i64, i64 }, ptr %t6 - %t9 = extractvalue { ptr, i64, i64 } %t8, 1 - %t10 = icmp uge i64 %t7, %t9 - br i1 %t10, label %range7867, label %inrange7868 -range7867: - call void @finch_panic_index(ptr @.str.4990, i64 4601, i64 %t7, i64 %t9) - unreachable -inrange7868: - %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 %range7869, label %inrange7870 -range7869: - call void @finch_panic_index(ptr @.str.4991, i64 4603, i64 0, i64 %t25) - unreachable -inrange7870: - %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 %then7871, label %endif7873 -then7871: - %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 %range7874, label %inrange7875 -range7874: - call void @finch_panic_index(ptr @.str.4992, i64 4605, i64 0, i64 %t39) - unreachable -inrange7875: - %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.4993, 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) - store { ptr, i64, i64 } %t49, ptr %a56 - call void @finch_str_drop(ptr %a56) - store { ptr, i64, i64 } %t52, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a53 - call void @finch.gen.fail(ptr %t36, %S.ast.Node %t43, { ptr, i64, i64 } %t58) - store { ptr, i64, i64 } %t58, ptr %a59 - call void @finch_str_drop(ptr %a59) - br label %endif7873 -endif7873: - %t60 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.4994, i64 4, i64 0 }, 0 - %t61 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t62 = load { ptr, i64, i64 }, ptr %t61 - store { ptr, i64, i64 } %t62, ptr %a63 - call void @finch_str_copy(ptr %a64, ptr %a63) - %t65 = load { ptr, i64, i64 }, ptr %a64 - %t66 = insertvalue %S.ast.Type %t60, { ptr, i64, i64 } %t65, 2 - %t67 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t68, ptr %a69 - call void @finch_str_copy(ptr %a70, ptr %a69) - %t71 = load { ptr, i64, i64 }, ptr %a70 - %t72 = insertvalue %S.ast.Type %t66, { ptr, i64, i64 } %t71, 3 - store %S.ast.Type %t72, ptr %a73 - %t74 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 3 - %t75 = load i1, ptr %t74 - br i1 %t75, label %then7876, label %endif7878 -then7876: - %t76 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i32 0, i32 1 - %t78 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = call i64 @finch_str_to_int(ptr %a80, ptr @.str.4995, i64 4609) - store i64 -1, ptr %a82 - %t83 = load i64, ptr %t77 - %t84 = load ptr, ptr %t76 - store i64 0, ptr %a85 - br label %find.cond7879 -find.cond7879: - %t86 = load i64, ptr %a85 - %t87 = icmp slt i64 %t86, %t83 - br i1 %t87, label %find.body7880, label %find.end7883 -find.body7880: - %t88 = getelementptr inbounds i64, ptr %t84, i64 %t86 - %t89 = load i64, ptr %t88 - %t90 = icmp eq i64 %t89, %t81 - br i1 %t90, label %find.hit7881, label %find.next7882 -find.hit7881: - store i64 %t86, ptr %a82 - br label %find.end7883 -find.next7882: - %t91 = add i64 %t86, 1 - store i64 %t91, ptr %a85 - br label %find.cond7879 -find.end7883: - %t92 = load i64, ptr %a82 - %t93 = icmp sge i64 %t92, 0 - %t94 = xor i1 %t93, true - br i1 %t94, label %then7884, label %endif7886 -then7884: - %t95 = load ptr, ptr %a1 - %t96 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t97 = load { ptr, i64, i64 }, ptr %t96 - %t98 = extractvalue { ptr, i64, i64 } %t97, 1 - %t99 = icmp uge i64 0, %t98 - br i1 %t99, label %range7887, label %inrange7888 -range7887: - call void @finch_panic_index(ptr @.str.4996, i64 4610, i64 0, i64 %t98) - unreachable -inrange7888: - %t100 = extractvalue { ptr, i64, i64 } %t97, 0 - %t101 = getelementptr inbounds %S.ast.Node, ptr %t100, i64 0 - %t102 = load %S.ast.Node, ptr %t101 - %t103 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.4997, i64 37, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - %t108 = load { ptr, i64, i64 }, ptr %a105 - %t109 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %t109 - store { ptr, i64, i64 } %t108, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t108, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - call void @finch.gen.fail(ptr %t95, %S.ast.Node %t102, { ptr, i64, i64 } %t115) - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_drop(ptr %a116) - br label %endif7886 -endif7886: - %t117 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t118 = load { ptr, i64, i64 }, ptr %t117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_copy(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - %t122 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t121, 0 - %t123 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t123, ptr %a124 - call void @finch.copy.S_ast_Type(ptr %a125, ptr %a124) - %t126 = load %S.ast.Type, ptr %a125 - %t127 = insertvalue %S.gen.Val %t122, %S.ast.Type %t126, 1 - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t127 -endif7878: - %t128 = load ptr, ptr %a1 - %t129 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 0 - %t130 = load { ptr, i64, i64 }, ptr %t129 - %t131 = getelementptr inbounds %S.gen.Val, ptr %a31, i32 0, i32 1 - %t132 = load %S.ast.Type, ptr %t131 - %t133 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.4998, i64 3, i64 0 }) - %t134 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t128, { ptr, i64, i64 } %t130, %S.ast.Type %t132, %S.ast.Type %t133) - store %S.ast.Type %t133, ptr %a135 - call void @finch.drop.S_ast_Type(ptr %a135) - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.4999, i64 0, i64 0 }, ptr %a137 - %t138 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i32 0, i32 1 - %t140 = load i64, ptr %t139 - store i64 0, ptr %a141 - br label %for.cond7889 -for.cond7889: - %t142 = load i64, ptr %a141 - %t143 = icmp slt i64 %t142, %t140 - br i1 %t143, label %for.body7890, label %for.end7892 -for.body7890: - %t144 = load ptr, ptr %a1 - %t145 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5000, i64 12, i64 0 }, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5001, i64 2, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 3 - %t156 = load i64, ptr %a141 - %t157 = load { ptr, i64, i64 }, ptr %t155 - %t158 = extractvalue { ptr, i64, i64 } %t157, 1 - %t159 = icmp uge i64 %t156, %t158 - br i1 %t159, label %range7893, label %inrange7894 -range7893: - call void @finch_panic_index(ptr @.str.5002, i64 4617, i64 %t156, i64 %t158) - unreachable -inrange7894: - %t160 = extractvalue { ptr, i64, i64 } %t157, 0 - %t161 = getelementptr inbounds i64, ptr %t160, i64 %t156 - %t162 = load i64, ptr %t161 - call void @finch_str_from_int(ptr %a163, i64 %t162) - %t164 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t154, ptr %a166 - store { ptr, i64, i64 } %t164, ptr %a167 - call void @finch_str_concat(ptr %a165, ptr %a166, ptr %a167) - store { ptr, i64, i64 } %t154, ptr %a168 - call void @finch_str_drop(ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a165 - %t171 = call { ptr, i64, i64 } @finch.gen.op(ptr %t144, { ptr, i64, i64 } %t170) - store { ptr, i64, i64 } %t170, ptr %a172 - call void @finch_str_drop(ptr %a172) - store { ptr, i64, i64 } %t171, ptr %a173 - %t174 = load i64, ptr %a141 - %t175 = icmp eq i64 %t174, 0 - br i1 %t175, label %then7895, label %else7896 -then7895: - %t176 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t176, ptr %a177 - call void @finch_str_copy(ptr %a178, ptr %a177) - %t179 = load { ptr, i64, i64 }, ptr %a178 - %t180 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t179, ptr %a137 - store { ptr, i64, i64 } %t180, ptr %a181 - call void @finch_str_drop(ptr %a181) - br label %endif7897 -else7896: - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5003, i64 6, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5004, i64 2, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = load { ptr, i64, i64 }, ptr %a173 - store { ptr, i64, i64 } %t192, ptr %a195 - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_concat(ptr %a194, ptr %a195, ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a194 - %t199 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t198) - store { ptr, i64, i64 } %t198, ptr %a200 - call void @finch_str_drop(ptr %a200) - %t201 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } %t199, ptr %a137 - store { ptr, i64, i64 } %t201, ptr %a202 - call void @finch_str_drop(ptr %a202) - br label %endif7897 -endif7897: - call void @finch_str_drop(ptr %a173) - br label %for.step7891 -for.step7891: - %t203 = load i64, ptr %a141 - %t204 = add i64 %t203, 1 - store i64 %t204, ptr %a141 - br label %for.cond7889 -for.end7892: - %t205 = load ptr, ptr %a1 - %t206 = load ptr, ptr %a1 - %t207 = load { ptr, i64, i64 }, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5005, i64 7, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a213 - store { ptr, i64, i64 } { ptr @.str.5006, i64 6, i64 0 }, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - store { ptr, i64, i64 } %t211, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a212 - %t217 = call { ptr, i64, i64 } @finch.gen.op(ptr %t206, { ptr, i64, i64 } %t216) - store { ptr, i64, i64 } %t216, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = getelementptr inbounds %S.gen.EnumDef, ptr %a17, i32 0, i32 1 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } { ptr @.str.5007, i64 32, i64 0 }, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - %t224 = load { ptr, i64, i64 }, ptr %a221 - %t225 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t205, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t224, %S.ast.Node %t225) - store { ptr, i64, i64 } %t217, ptr %a226 - call void @finch_str_drop(ptr %a226) - store { ptr, i64, i64 } %t224, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load ptr, ptr %a1 - %t229 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5008, i64 10, i64 0 }, ptr %a231 - store { ptr, i64, i64 } %t229, ptr %a232 - call void @finch_str_concat(ptr %a230, ptr %a231, ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a230 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5009, i64 7, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = call { ptr, i64, i64 } @finch.gen.op(ptr %t228, { ptr, i64, i64 } %t238) - store { ptr, i64, i64 } %t238, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t239, 0 - %t242 = load %S.ast.Type, ptr %a73 - store %S.ast.Type %t242, ptr %a243 - call void @finch.copy.S_ast_Type(ptr %a244, ptr %a243) - %t245 = load %S.ast.Type, ptr %a244 - %t246 = insertvalue %S.gen.Val %t241, %S.ast.Type %t245, 1 - call void @finch_str_drop(ptr %a137) - call void @finch_str_drop(ptr %a136) - call void @finch.drop.S_ast_Type(ptr %a73) - call void @finch.drop.S_gen_Val(ptr %a31) - call void @finch.drop.S_gen_EnumDef(ptr %a17) - ret %S.gen.Val %t246 -} - -define internal { ptr, i64, i64 } @finch.gen.cExt(ptr %p0, %S.ast.Type %p1) { -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.5010, 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.from7898 -logic.from7898: - br i1 %t8, label %logic.end7900, label %logic.rhs7899 -logic.rhs7899: - %t9 = load %S.ast.Type, ptr %a2 - %t10 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t9) - br label %logic.rend7901 -logic.rend7901: - br label %logic.end7900 -logic.end7900: - %t11 = phi i1 [ true, %logic.from7898 ], [ %t10, %logic.rend7901 ] - br i1 %t11, label %then7902, label %endif7904 -then7902: - %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 %then7905, label %endif7907 -then7905: - ret { ptr, i64, i64 } { ptr @.str.5011, i64 8, i64 0 } -endif7907: - br label %endif7904 -endif7904: - %t15 = load %S.ast.Type, ptr %a2 - %t16 = call i1 @finch.gen.isSigned(%S.ast.Type %t15) - br label %logic.from7908 -logic.from7908: - br i1 %t16, label %logic.end7910, label %logic.rhs7909 -logic.rhs7909: - %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.5012, 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.from7911 -logic.from7911: - br i1 %t22, label %logic.rhs7912, label %logic.end7913 -logic.rhs7912: - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic7914, label %ok7915 -panic7914: - call void @finch_panic(ptr @.str.5013, i64 4637, ptr @.str.5014) - unreachable -ok7915: - %t25 = getelementptr inbounds %S.gen.Gen, ptr %t23, i32 0, i32 31 - %t26 = load %S.platform.Target, ptr %t25 - %t27 = call i1 @finch.platform.charIsSigned(%S.platform.Target %t26) - br label %logic.rend7916 -logic.rend7916: - br label %logic.end7913 -logic.end7913: - %t28 = phi i1 [ false, %logic.from7911 ], [ %t27, %logic.rend7916 ] - br label %logic.rend7917 -logic.rend7917: - br label %logic.end7910 -logic.end7910: - %t29 = phi i1 [ true, %logic.from7908 ], [ %t28, %logic.rend7917 ] - br label %logic.from7918 -logic.from7918: - br i1 %t29, label %logic.rhs7919, label %logic.end7920 -logic.rhs7919: - %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.rend7921 -logic.rend7921: - br label %logic.end7920 -logic.end7920: - %t33 = phi i1 [ false, %logic.from7918 ], [ %t32, %logic.rend7921 ] - br i1 %t33, label %then7922, label %endif7924 -then7922: - ret { ptr, i64, i64 } { ptr @.str.5015, i64 8, i64 0 } -endif7924: - %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.5016, 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.from7925 -logic.from7925: - br i1 %t39, label %logic.rhs7926, label %logic.end7927 -logic.rhs7926: - %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.rend7928 -logic.rend7928: - br label %logic.end7927 -logic.end7927: - %t43 = phi i1 [ false, %logic.from7925 ], [ %t42, %logic.rend7928 ] - br i1 %t43, label %then7929, label %endif7931 -then7929: - ret { ptr, i64, i64 } { ptr @.str.5017, i64 8, i64 0 } -endif7931: - ret { ptr, i64, i64 } { ptr @.str.5018, 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.5019, 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 %then7932, label %endif7934 -then7932: - ret { ptr, i64, i64 } { ptr @.str.5020, i64 3, i64 0 } -endif7934: - %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 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %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 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = 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 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca i64, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a240 = alloca %S.ast.Type, align 16 - %a248 = alloca %S.ast.Type, align 16 - %a249 = alloca %S.ast.Type, align 16 - %a261 = alloca %S.gen.Plan, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca i64, align 16 - %a327 = alloca i64, align 16 - %a342 = alloca %S.ast.Type, align 16 - %a343 = alloca %S.ast.Type, align 16 - %a345 = alloca %S.ast.Type, align 16 - %a354 = alloca %S.gen.Abi, align 16 - %a355 = alloca %S.gen.Abi, align 16 - %a357 = alloca %S.gen.Abi, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca %S.gen.Val, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca %S.gen.Val, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a407 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a435 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a451 = alloca { ptr, i64, i64 }, align 16 - %a453 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca i64, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a589 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a629 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a649 = alloca { ptr, i64, i64 }, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a667 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca %S.gen.Val, align 16 - %a699 = alloca %S.ast.Type, align 16 - %a700 = alloca %S.ast.Type, align 16 - %a702 = alloca %S.ast.Type, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca %S.gen.Val, align 16 - %a721 = alloca %S.gen.Val, align 16 - %a731 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a737 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca %S.ast.Type, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca %S.ast.Type, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a784 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca %S.ast.Type, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a801 = alloca { ptr, i64, i64 }, align 16 - %a802 = alloca { ptr, i64, i64 }, align 16 - %a803 = alloca { ptr, i64, i64 }, align 16 - %a804 = alloca { ptr, i64, i64 }, align 16 - %a807 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a812 = alloca %S.ast.Type, align 16 - %a817 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca %S.ast.Type, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca %S.ast.Type, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = 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 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a869 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a893 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca i64, align 16 - %a900 = alloca i64, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a910 = 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 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a939 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a944 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a950 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a955 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a964 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a973 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a981 = alloca { ptr, i64, i64 }, align 16 - %a982 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a988 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a998 = alloca { ptr, i64, i64 }, align 16 - %a999 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1002 = alloca { ptr, i64, i64 }, align 16 - %a1003 = alloca { ptr, i64, i64 }, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = 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 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1031 = alloca { ptr, i64, i64 }, align 16 - %a1032 = alloca { ptr, i64, i64 }, align 16 - %a1033 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1039 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1042 = alloca { ptr, i64, i64 }, align 16 - %a1043 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1048 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1068 = alloca { ptr, i64, i64 }, align 16 - %a1069 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1077 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca %S.ast.Type, align 16 - %a1087 = alloca %S.ast.Type, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca %S.ast.Type, align 16 - %a1107 = alloca %S.ast.Type, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1121 = alloca { ptr, i64, i64 }, align 16 - %a1126 = alloca { ptr, i64, i64 }, align 16 - %a1139 = alloca { ptr, i64, i64 }, align 16 - %a1142 = alloca %S.ast.Type, align 16 - %a1143 = alloca %S.ast.Type, align 16 - %a1148 = alloca { ptr, i64, i64 }, align 16 - %a1149 = alloca { ptr, i64, i64 }, align 16 - %a1154 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca { ptr, i64, i64 }, align 16 - %a1160 = alloca { ptr, i64, i64 }, align 16 - %a1161 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1164 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1174 = alloca { ptr, i64, i64 }, align 16 - %a1175 = alloca { ptr, i64, i64 }, align 16 - %a1176 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca %S.ast.Type, align 16 - %a1186 = alloca %S.ast.Type, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca %S.ast.Type, align 16 - %a1196 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store %S.cimport.CFunc %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic7935, label %ok7936 -panic7935: - call void @finch_panic(ptr @.str.5021, i64 4654, ptr @.str.5022) - unreachable -ok7936: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - br i1 %t7, label %then7937, label %endif7939 -then7937: - 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.cond7940 -each.cond7940: - %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.body7941, label %each.end7943 -each.body7941: - %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.step7942 -each.step7942: - %t26 = load i64, ptr %a10 - %t27 = add i64 %t26, 1 - store i64 %t27, ptr %a10 - br label %each.cond7940 -each.end7943: - %t28 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t29 = load i1, ptr %t28 - br i1 %t29, label %then7944, label %endif7946 -then7944: - %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.5023, i64 3, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif7946 -endif7946: - %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.5024, 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.5025, i64 7, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t54 = load %S.ast.Type, ptr %t53 - %t55 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t54) - store { ptr, i64, i64 } %t52, ptr %a57 - store { ptr, i64, i64 } %t55, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t52, ptr %a59 - call void @finch_str_drop(ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a56 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.5026, i64 1, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t68 = load { ptr, i64, i64 }, ptr %t67 - store { ptr, i64, i64 } %t66, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t66, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5027, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5028, i64 2, i64 0 }, ptr %a80 - call void @finch_str_join(ptr %a81, ptr %a8, ptr %a80) - %t82 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t78, ptr %a84 - store { ptr, i64, i64 } %t82, ptr %a85 - call void @finch_str_concat(ptr %a83, ptr %a84, ptr %a85) - store { ptr, i64, i64 } %t78, ptr %a86 - call void @finch_str_drop(ptr %a86) - store { ptr, i64, i64 } %t82, ptr %a87 - call void @finch_str_drop(ptr %a87) - %t88 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t88, ptr %a90 - store { ptr, i64, i64 } { ptr @.str.5029, i64 5, i64 0 }, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t88, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - call void @finch.gen.noteRef(ptr %t35, %S.ast.Node %t36, i64 %t38, i64 %t41, { ptr, i64, i64 } %t93, { ptr, i64, i64 } { ptr @.str.5030, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - call void @finch.drop.arr_str(ptr %a8) - br label %endif7939 -endif7939: - %t95 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t95, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = icmp sgt i64 %t97, 0 - br i1 %t98, label %then7947, label %endif7949 -then7947: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } { ptr @.str.5031, i64 16, i64 0 }, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5032, i64 35, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 5 - %t113 = load { ptr, i64, i64 }, ptr %t112 - store { ptr, i64, i64 } %t111, ptr %a115 - store { ptr, i64, i64 } %t113, ptr %a116 - call void @finch_str_concat(ptr %a114, ptr %a115, ptr %a116) - store { ptr, i64, i64 } %t111, ptr %a117 - call void @finch_str_drop(ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a114 - call void @finch.gen.fail(ptr %t99, %S.ast.Node %t100, { ptr, i64, i64 } %t118) - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_drop(ptr %a119) - br label %endif7949 -endif7949: - %t120 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t121 = getelementptr inbounds { ptr, i64, i64 }, ptr %t120, i32 0, i32 1 - %t122 = load i64, ptr %t121 - store i64 %t122, ptr %a123 - %t124 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t125 = load i1, ptr %t124 - br i1 %t125, label %then7950, label %else7951 -then7950: - %t126 = load i64, ptr %a123 - %t127 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t127, i32 0, i32 1 - %t129 = load i64, ptr %t128 - %t130 = icmp slt i64 %t126, %t129 - br i1 %t130, label %then7953, label %endif7955 -then7953: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t134 = load { ptr, i64, i64 }, ptr %t133 - store { ptr, i64, i64 } { ptr @.str.5033, i64 1, i64 0 }, ptr %a136 - store { ptr, i64, i64 } %t134, ptr %a137 - call void @finch_str_concat(ptr %a135, ptr %a136, ptr %a137) - %t138 = load { ptr, i64, i64 }, ptr %a135 - store { ptr, i64, i64 } %t138, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5034, i64 17, i64 0 }, ptr %a141 - call void @finch_str_concat(ptr %a139, ptr %a140, ptr %a141) - store { ptr, i64, i64 } %t138, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a139 - %t144 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t145 = getelementptr inbounds { ptr, i64, i64 }, ptr %t144, i32 0, i32 1 - %t146 = load i64, ptr %t145 - call void @finch_str_from_int(ptr %a147, i64 %t146) - %t148 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t143, ptr %a150 - store { ptr, i64, i64 } %t148, ptr %a151 - call void @finch_str_concat(ptr %a149, ptr %a150, ptr %a151) - store { ptr, i64, i64 } %t143, ptr %a152 - call void @finch_str_drop(ptr %a152) - store { ptr, i64, i64 } %t148, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a149 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.5035, i64 22, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a161, i64 %t160) - %t162 = load { ptr, i64, i64 }, ptr %a161 - store { ptr, i64, i64 } %t159, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t159, ptr %a166 - call void @finch_str_drop(ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a163 - call void @finch.gen.fail(ptr %t131, %S.ast.Node %t132, { ptr, i64, i64 } %t168) - store { ptr, i64, i64 } %t168, ptr %a169 - call void @finch_str_drop(ptr %a169) - br label %endif7955 -endif7955: - br label %endif7952 -else7951: - %t170 = load i64, ptr %a123 - %t171 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %t171, i32 0, i32 1 - %t173 = load i64, ptr %t172 - %t174 = icmp ne i64 %t170, %t173 - br i1 %t174, label %then7956, label %endif7958 -then7956: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - %t177 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - store { ptr, i64, i64 } { ptr @.str.5036, i64 1, i64 0 }, ptr %a180 - store { ptr, i64, i64 } %t178, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a179 - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5037, i64 8, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i32 0, i32 1 - %t190 = load i64, ptr %t189 - call void @finch_str_from_int(ptr %a191, i64 %t190) - %t192 = load { ptr, i64, i64 }, ptr %a191 - store { ptr, i64, i64 } %t187, ptr %a194 - store { ptr, i64, i64 } %t192, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t187, ptr %a196 - call void @finch_str_drop(ptr %a196) - store { ptr, i64, i64 } %t192, ptr %a197 - call void @finch_str_drop(ptr %a197) - %t198 = load { ptr, i64, i64 }, ptr %a193 - store { ptr, i64, i64 } %t198, ptr %a200 - store { ptr, i64, i64 } { ptr @.str.5038, i64 22, i64 0 }, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t198, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - %t204 = load i64, ptr %a123 - call void @finch_str_from_int(ptr %a205, i64 %t204) - %t206 = load { ptr, i64, i64 }, ptr %a205 - store { ptr, i64, i64 } %t203, ptr %a208 - store { ptr, i64, i64 } %t206, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t203, ptr %a210 - call void @finch_str_drop(ptr %a210) - store { ptr, i64, i64 } %t206, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a207 - call void @finch.gen.fail(ptr %t175, %S.ast.Node %t176, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t212, ptr %a213 - call void @finch_str_drop(ptr %a213) - br label %endif7958 -endif7958: - br label %endif7952 -endif7952: - %t214 = load ptr, ptr %a1 - %t215 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 2 - %t216 = load %S.ast.Type, ptr %t215 - %t217 = load %S.ast.Node, ptr %a2 - %t218 = call %S.ast.Type @finch.gen.resolve(ptr %t214, %S.ast.Type %t216, %S.ast.Node %t217) - store %S.ast.Type %t218, ptr %a219 - %t220 = load ptr, ptr %a1 - %t221 = load %S.ast.Node, ptr %a2 - %t222 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = load %S.ast.Type, ptr %a219 - call void @finch.gen.checkByValue(ptr %t220, %S.ast.Node %t221, { ptr, i64, i64 } %t223, %S.ast.Type %t224, { ptr, i64, i64 } { ptr @.str.5039, i64 7, i64 0 }) - store { ptr, i64, i64 } zeroinitializer, ptr %a225 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - store i64 0, ptr %a227 - br label %each.cond7959 -each.cond7959: - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i32 0, i32 1 - %t229 = load i64, ptr %t228 - %t230 = load i64, ptr %a227 - %t231 = icmp slt i64 %t230, %t229 - br i1 %t231, label %each.body7960, label %each.end7962 -each.body7960: - %t232 = load ptr, ptr %t226 - %t233 = getelementptr inbounds %S.ast.Type, ptr %t232, i64 %t230 - %t234 = load %S.ast.Type, ptr %t233 - store %S.ast.Type %t234, ptr %a235 - %t236 = load ptr, ptr %a1 - %t237 = load %S.ast.Type, ptr %a235 - %t238 = load %S.ast.Node, ptr %a2 - %t239 = call %S.ast.Type @finch.gen.resolve(ptr %t236, %S.ast.Type %t237, %S.ast.Node %t238) - store %S.ast.Type %t239, ptr %a240 - %t241 = load ptr, ptr %a1 - %t242 = load %S.ast.Node, ptr %a2 - %t243 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t244 = load { ptr, i64, i64 }, ptr %t243 - %t245 = load %S.ast.Type, ptr %a240 - call void @finch.gen.checkByValue(ptr %t241, %S.ast.Node %t242, { ptr, i64, i64 } %t244, %S.ast.Type %t245, { ptr, i64, i64 } { ptr @.str.5040, i64 5, i64 0 }) - %t246 = getelementptr inbounds { ptr, i64, i64 }, ptr %a225, i32 0, i32 1 - %t247 = load %S.ast.Type, ptr %a240 - store %S.ast.Type %t247, ptr %a248 - call void @finch.copy.S_ast_Type(ptr %a249, ptr %a248) - %t250 = load %S.ast.Type, ptr %a249 - %t251 = load i64, ptr %t246 - %t252 = add i64 %t251, 1 - call void @finch_arr_reserve(ptr %a225, i64 %t252, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t253 = load ptr, ptr %a225 - %t254 = getelementptr inbounds %S.ast.Type, ptr %t253, i64 %t251 - store %S.ast.Type %t250, ptr %t254 - store i64 %t252, ptr %t246 - call void @finch.drop.S_ast_Type(ptr %a240) - br label %each.step7961 -each.step7961: - %t255 = load i64, ptr %a227 - %t256 = add i64 %t255, 1 - store i64 %t256, ptr %a227 - br label %each.cond7959 -each.end7962: - %t257 = load ptr, ptr %a1 - %t258 = load %S.ast.Type, ptr %a219 - %t259 = load { ptr, i64, i64 }, ptr %a225 - %t260 = call %S.gen.Plan @finch.gen.makePlan(ptr %t257, %S.ast.Type %t258, { ptr, i64, i64 } %t259) - store %S.gen.Plan %t260, ptr %a261 - store { ptr, i64, i64 } zeroinitializer, ptr %a262 - store { ptr, i64, i64 } zeroinitializer, ptr %a263 - store { ptr, i64, i64 } { ptr @.str.5041, i64 0, i64 0 }, ptr %a264 - %t265 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t266 = load i1, ptr %t265 - br i1 %t266, label %then7963, label %endif7965 -then7963: - %t267 = load ptr, ptr %a1 - %t268 = load ptr, ptr %a1 - %t269 = load %S.ast.Type, ptr %a219 - %t270 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t268, %S.ast.Type %t269) - %t271 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t267, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t271, ptr %a264 - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t276 = load ptr, ptr %a1 - %t277 = load %S.ast.Type, ptr %a219 - %t278 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t276, %S.ast.Type %t277) - store { ptr, i64, i64 } { ptr @.str.5042, i64 9, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_drop(ptr %a282) - %t283 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } %t283, ptr %a285 - store { ptr, i64, i64 } { ptr @.str.5043, i64 10, i64 0 }, ptr %a286 - call void @finch_str_concat(ptr %a284, ptr %a285, ptr %a286) - store { ptr, i64, i64 } %t283, ptr %a287 - call void @finch_str_drop(ptr %a287) - %t288 = load { ptr, i64, i64 }, ptr %a284 - %t289 = load i64, ptr %t275 - %t290 = add i64 %t289, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t290, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t291 = load ptr, ptr %a262 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i64 %t289 - store { ptr, i64, i64 } %t288, ptr %t292 - store i64 %t290, ptr %t275 - %t293 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t294 = load ptr, ptr %a1 - %t295 = load %S.ast.Type, ptr %a219 - %t296 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t294, %S.ast.Type %t295) - store { ptr, i64, i64 } { ptr @.str.5044, i64 9, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - store { ptr, i64, i64 } %t296, ptr %a300 - call void @finch_str_drop(ptr %a300) - %t301 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t301, ptr %a303 - store { ptr, i64, i64 } { ptr @.str.5045, i64 11, i64 0 }, ptr %a304 - call void @finch_str_concat(ptr %a302, ptr %a303, ptr %a304) - store { ptr, i64, i64 } %t301, ptr %a305 - call void @finch_str_drop(ptr %a305) - %t306 = load { ptr, i64, i64 }, ptr %a302 - %t307 = load { ptr, i64, i64 }, ptr %a264 - store { ptr, i64, i64 } %t306, ptr %a309 - store { ptr, i64, i64 } %t307, ptr %a310 - call void @finch_str_concat(ptr %a308, ptr %a309, ptr %a310) - store { ptr, i64, i64 } %t306, ptr %a311 - call void @finch_str_drop(ptr %a311) - %t312 = load { ptr, i64, i64 }, ptr %a308 - %t313 = load i64, ptr %t293 - %t314 = add i64 %t313, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t314, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t315 = load ptr, ptr %a263 - %t316 = getelementptr inbounds { ptr, i64, i64 }, ptr %t315, i64 %t313 - store { ptr, i64, i64 } %t312, ptr %t316 - store i64 %t314, ptr %t293 - br label %endif7965 -endif7965: - store { ptr, i64, i64 } zeroinitializer, ptr %a317 - %t318 = load ptr, ptr %a1 - %t319 = icmp eq ptr %t318, null - br i1 %t319, label %panic7966, label %ok7967 -panic7966: - call void @finch_panic(ptr @.str.5046, i64 4693, ptr @.str.5047) - unreachable -ok7967: - %t320 = getelementptr inbounds %S.gen.Gen, ptr %t318, i32 0, i32 11 - %t321 = getelementptr inbounds { ptr, i64, i64 }, ptr %t320, i32 0, i32 1 - %t322 = load i64, ptr %t321 - store i64 %t322, ptr %a323 - %t324 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %t324, i32 0, i32 1 - %t326 = load i64, ptr %t325 - store i64 0, ptr %a327 - br label %for.cond7968 -for.cond7968: - %t328 = load i64, ptr %a327 - %t329 = icmp slt i64 %t328, %t326 - br i1 %t329, label %for.body7969, label %for.end7971 -for.body7969: - %t330 = load i64, ptr %a327 - %t331 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 3 - %t332 = getelementptr inbounds { ptr, i64, i64 }, ptr %t331, i32 0, i32 1 - %t333 = load i64, ptr %t332 - %t334 = icmp slt i64 %t330, %t333 - br i1 %t334, label %then7972, label %endif7974 -then7972: - %t335 = load i64, ptr %a327 - %t336 = load { ptr, i64, i64 }, ptr %a225 - %t337 = extractvalue { ptr, i64, i64 } %t336, 1 - %t338 = icmp uge i64 %t335, %t337 - br i1 %t338, label %range7975, label %inrange7976 -range7975: - call void @finch_panic_index(ptr @.str.5048, i64 4696, i64 %t335, i64 %t337) - unreachable -inrange7976: - %t339 = extractvalue { ptr, i64, i64 } %t336, 0 - %t340 = getelementptr inbounds %S.ast.Type, ptr %t339, i64 %t335 - %t341 = load %S.ast.Type, ptr %t340 - store %S.ast.Type %t341, ptr %a342 - call void @finch.copy.S_ast_Type(ptr %a343, ptr %a342) - %t344 = load %S.ast.Type, ptr %a343 - store %S.ast.Type %t344, ptr %a345 - %t346 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 1 - %t347 = load i64, ptr %a327 - %t348 = load { ptr, i64, i64 }, ptr %t346 - %t349 = extractvalue { ptr, i64, i64 } %t348, 1 - %t350 = icmp uge i64 %t347, %t349 - br i1 %t350, label %range7977, label %inrange7978 -range7977: - call void @finch_panic_index(ptr @.str.5049, i64 4697, i64 %t347, i64 %t349) - unreachable -inrange7978: - %t351 = extractvalue { ptr, i64, i64 } %t348, 0 - %t352 = getelementptr inbounds %S.gen.Abi, ptr %t351, i64 %t347 - %t353 = load %S.gen.Abi, ptr %t352 - store %S.gen.Abi %t353, ptr %a354 - call void @finch.copy.S_gen_Abi(ptr %a355, ptr %a354) - %t356 = load %S.gen.Abi, ptr %a355 - store %S.gen.Abi %t356, ptr %a357 - %t358 = load ptr, ptr %a1 - %t359 = load ptr, ptr %a1 - %t360 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t361 = load i64, ptr %a327 - %t362 = load { ptr, i64, i64 }, ptr %t360 - %t363 = extractvalue { ptr, i64, i64 } %t362, 1 - %t364 = icmp uge i64 %t361, %t363 - br i1 %t364, label %range7979, label %inrange7980 -range7979: - call void @finch_panic_index(ptr @.str.5050, i64 4698, i64 %t361, i64 %t363) - unreachable -inrange7980: - %t365 = extractvalue { ptr, i64, i64 } %t362, 0 - %t366 = getelementptr inbounds %S.ast.Node, ptr %t365, i64 %t361 - %t367 = load %S.ast.Node, ptr %t366 - %t368 = load %S.ast.Type, ptr %a345 - %t369 = call %S.gen.Val @finch.gen.exprWant(ptr %t359, %S.ast.Node %t367, %S.ast.Type %t368) - %t370 = load %S.ast.Type, ptr %a345 - %t371 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t372 = load i64, ptr %a327 - %t373 = load { ptr, i64, i64 }, ptr %t371 - %t374 = extractvalue { ptr, i64, i64 } %t373, 1 - %t375 = icmp uge i64 %t372, %t374 - br i1 %t375, label %range7981, label %inrange7982 -range7981: - call void @finch_panic_index(ptr @.str.5051, i64 4698, i64 %t372, i64 %t374) - unreachable -inrange7982: - %t376 = extractvalue { ptr, i64, i64 } %t373, 0 - %t377 = getelementptr inbounds %S.ast.Node, ptr %t376, i64 %t372 - %t378 = load %S.ast.Node, ptr %t377 - %t379 = load i64, ptr %a327 - %t380 = add i64 %t379, 1 - call void @finch_str_from_int(ptr %a381, i64 %t380) - %t382 = load { ptr, i64, i64 }, ptr %a381 - store { ptr, i64, i64 } { ptr @.str.5052, i64 9, i64 0 }, ptr %a384 - store { ptr, i64, i64 } %t382, ptr %a385 - call void @finch_str_concat(ptr %a383, ptr %a384, ptr %a385) - store { ptr, i64, i64 } %t382, ptr %a386 - call void @finch_str_drop(ptr %a386) - %t387 = load { ptr, i64, i64 }, ptr %a383 - store { ptr, i64, i64 } %t387, ptr %a389 - store { ptr, i64, i64 } { ptr @.str.5053, i64 4, i64 0 }, ptr %a390 - call void @finch_str_concat(ptr %a388, ptr %a389, ptr %a390) - store { ptr, i64, i64 } %t387, ptr %a391 - call void @finch_str_drop(ptr %a391) - %t392 = load { ptr, i64, i64 }, ptr %a388 - %t393 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t394 = load { ptr, i64, i64 }, ptr %t393 - store { ptr, i64, i64 } %t392, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t392, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = call %S.gen.Val @finch.gen.coerce(ptr %t358, %S.gen.Val %t369, %S.ast.Type %t370, %S.ast.Node %t378, { ptr, i64, i64 } %t399) - store %S.gen.Val %t369, ptr %a401 - call void @finch.drop.S_gen_Val(ptr %a401) - store { ptr, i64, i64 } %t399, ptr %a402 - call void @finch_str_drop(ptr %a402) - store %S.gen.Val %t400, ptr %a403 - %t404 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t405 = load %S.gen.Val, ptr %a403 - store %S.gen.Val %t405, ptr %a406 - call void @finch.copy.S_gen_Val(ptr %a407, ptr %a406) - %t408 = load %S.gen.Val, ptr %a407 - %t409 = load i64, ptr %t404 - %t410 = add i64 %t409, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t410, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t411 = load ptr, ptr %a317 - %t412 = getelementptr inbounds %S.gen.Val, ptr %t411, i64 %t409 - store %S.gen.Val %t408, ptr %t412 - store i64 %t410, ptr %t404 - %t413 = load ptr, ptr %a1 - %t414 = load %S.gen.Val, ptr %a403 - call void @finch.gen.hold(ptr %t413, %S.gen.Val %t414) - %t415 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5054, i64 6, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then7983, label %else7984 -then7983: - %t421 = load ptr, ptr %a1 - %t422 = load ptr, ptr %a1 - %t423 = load %S.ast.Type, ptr %a345 - %t424 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t422, %S.ast.Type %t423) - %t425 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t421, { ptr, i64, i64 } %t424) - store { ptr, i64, i64 } %t424, ptr %a426 - call void @finch_str_drop(ptr %a426) - store { ptr, i64, i64 } %t425, ptr %a427 - %t428 = load ptr, ptr %a1 - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Type, ptr %a345 - %t431 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t429, %S.ast.Type %t430) - %t432 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = load { ptr, i64, i64 }, ptr %a427 - call void @finch.gen.store(ptr %t428, { ptr, i64, i64 } %t431, { ptr, i64, i64 } %t433, { ptr, i64, i64 } %t434) - store { ptr, i64, i64 } %t431, ptr %a435 - call void @finch_str_drop(ptr %a435) - %t436 = load ptr, ptr %a1 - %t437 = load %S.ast.Type, ptr %a345 - %t438 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t436, %S.ast.Type %t437) - store { ptr, i64, i64 } { ptr @.str.5055, i64 10, i64 0 }, ptr %a440 - store { ptr, i64, i64 } %t438, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - store { ptr, i64, i64 } %t438, ptr %a442 - call void @finch_str_drop(ptr %a442) - %t443 = load { ptr, i64, i64 }, ptr %a439 - store { ptr, i64, i64 } %t443, ptr %a445 - store { ptr, i64, i64 } { ptr @.str.5056, i64 8, i64 0 }, ptr %a446 - call void @finch_str_concat(ptr %a444, ptr %a445, ptr %a446) - store { ptr, i64, i64 } %t443, ptr %a447 - call void @finch_str_drop(ptr %a447) - %t448 = load { ptr, i64, i64 }, ptr %a444 - %t449 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 3 - %t450 = load i64, ptr %t449 - call void @finch_str_from_int(ptr %a451, i64 %t450) - %t452 = load { ptr, i64, i64 }, ptr %a451 - store { ptr, i64, i64 } %t448, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - store { ptr, i64, i64 } %t448, ptr %a456 - call void @finch_str_drop(ptr %a456) - store { ptr, i64, i64 } %t452, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t458, ptr %a459 - %t460 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t461 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t461, ptr %a462 - call void @finch_str_copy(ptr %a463, ptr %a462) - %t464 = load { ptr, i64, i64 }, ptr %a463 - %t465 = load i64, ptr %t460 - %t466 = add i64 %t465, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t466, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t467 = load ptr, ptr %a262 - %t468 = getelementptr inbounds { ptr, i64, i64 }, ptr %t467, i64 %t465 - store { ptr, i64, i64 } %t464, ptr %t468 - store i64 %t466, ptr %t460 - %t469 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t470 = load { ptr, i64, i64 }, ptr %a459 - store { ptr, i64, i64 } %t470, ptr %a472 - store { ptr, i64, i64 } { ptr @.str.5057, i64 1, i64 0 }, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - %t475 = load { ptr, i64, i64 }, ptr %a427 - store { ptr, i64, i64 } %t474, ptr %a477 - store { ptr, i64, i64 } %t475, ptr %a478 - call void @finch_str_concat(ptr %a476, ptr %a477, ptr %a478) - store { ptr, i64, i64 } %t474, ptr %a479 - call void @finch_str_drop(ptr %a479) - %t480 = load { ptr, i64, i64 }, ptr %a476 - %t481 = load i64, ptr %t469 - %t482 = add i64 %t481, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t482, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t483 = load ptr, ptr %a263 - %t484 = getelementptr inbounds { ptr, i64, i64 }, ptr %t483, i64 %t481 - store { ptr, i64, i64 } %t480, ptr %t484 - store i64 %t482, ptr %t469 - call void @finch_str_drop(ptr %a459) - call void @finch_str_drop(ptr %a427) - br label %endif7985 -else7984: - %t485 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t486 = load { ptr, i64, i64 }, ptr %t485 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5058, i64 8, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then7986, label %else7987 -then7986: - %t491 = load ptr, ptr %a1 - %t492 = load ptr, ptr %a1 - %t493 = load %S.ast.Type, ptr %a345 - %t494 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t492, %S.ast.Type %t493) - %t495 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t491, { ptr, i64, i64 } %t494) - store { ptr, i64, i64 } %t494, ptr %a496 - call void @finch_str_drop(ptr %a496) - store { ptr, i64, i64 } %t495, ptr %a497 - %t498 = load ptr, ptr %a1 - %t499 = load ptr, ptr %a1 - %t500 = load %S.ast.Type, ptr %a345 - %t501 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t499, %S.ast.Type %t500) - %t502 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t503 = load { ptr, i64, i64 }, ptr %t502 - %t504 = load { ptr, i64, i64 }, ptr %a497 - call void @finch.gen.store(ptr %t498, { ptr, i64, i64 } %t501, { ptr, i64, i64 } %t503, { ptr, i64, i64 } %t504) - store { ptr, i64, i64 } %t501, ptr %a505 - call void @finch_str_drop(ptr %a505) - %t506 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t507 = load i64, ptr %t506 - %t508 = add i64 %t507, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t508, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t509 = load ptr, ptr %a262 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i64 %t507 - store { ptr, i64, i64 } { ptr @.str.5059, i64 3, i64 0 }, ptr %t510 - store i64 %t508, ptr %t506 - %t511 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t512 = load { ptr, i64, i64 }, ptr %a497 - store { ptr, i64, i64 } { ptr @.str.5060, i64 4, i64 0 }, ptr %a514 - store { ptr, i64, i64 } %t512, ptr %a515 - call void @finch_str_concat(ptr %a513, ptr %a514, ptr %a515) - %t516 = load { ptr, i64, i64 }, ptr %a513 - %t517 = load i64, ptr %t511 - %t518 = add i64 %t517, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t518, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t519 = load ptr, ptr %a263 - %t520 = getelementptr inbounds { ptr, i64, i64 }, ptr %t519, i64 %t517 - store { ptr, i64, i64 } %t516, ptr %t520 - store i64 %t518, ptr %t511 - call void @finch_str_drop(ptr %a497) - br label %endif7988 -else7987: - %t521 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5061, i64 6, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp ne i32 %t525, 0 - br i1 %t526, label %then7989, label %else7990 -then7989: - %t527 = load ptr, ptr %a1 - %t528 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t527, { ptr, i64, i64 } { ptr @.str.5062, i64 9, i64 0 }) - store { ptr, i64, i64 } %t528, ptr %a529 - %t530 = load ptr, ptr %a1 - %t531 = load ptr, ptr %a1 - %t532 = load %S.ast.Type, ptr %a345 - %t533 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t531, %S.ast.Type %t532) - %t534 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - %t536 = load { ptr, i64, i64 }, ptr %a529 - call void @finch.gen.store(ptr %t530, { ptr, i64, i64 } %t533, { ptr, i64, i64 } %t535, { ptr, i64, i64 } %t536) - store { ptr, i64, i64 } %t533, ptr %a537 - call void @finch_str_drop(ptr %a537) - %t538 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t539 = getelementptr inbounds { ptr, i64, i64 }, ptr %t538, i32 0, i32 1 - %t540 = load i64, ptr %t539 - store i64 0, ptr %a541 - br label %for.cond7992 -for.cond7992: - %t542 = load i64, ptr %a541 - %t543 = icmp slt i64 %t542, %t540 - br i1 %t543, label %for.body7993, label %for.end7995 -for.body7993: - %t544 = load ptr, ptr %a1 - %t545 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t546 = load i64, ptr %a541 - %t547 = load { ptr, i64, i64 }, ptr %t545 - %t548 = extractvalue { ptr, i64, i64 } %t547, 1 - %t549 = icmp uge i64 %t546, %t548 - br i1 %t549, label %range7996, label %inrange7997 -range7996: - call void @finch_panic_index(ptr @.str.5063, i64 4716, i64 %t546, i64 %t548) - unreachable -inrange7997: - %t550 = extractvalue { ptr, i64, i64 } %t547, 0 - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %t550, i64 %t546 - %t552 = load { ptr, i64, i64 }, ptr %t551 - %t553 = load ptr, ptr %a1 - %t554 = load { ptr, i64, i64 }, ptr %a529 - store { ptr, i64, i64 } { ptr @.str.5064, i64 31, i64 0 }, ptr %a556 - store { ptr, i64, i64 } %t554, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - %t558 = load { ptr, i64, i64 }, ptr %a555 - store { ptr, i64, i64 } %t558, ptr %a560 - store { ptr, i64, i64 } { ptr @.str.5065, i64 6, i64 0 }, ptr %a561 - call void @finch_str_concat(ptr %a559, ptr %a560, ptr %a561) - store { ptr, i64, i64 } %t558, ptr %a562 - call void @finch_str_drop(ptr %a562) - %t563 = load { ptr, i64, i64 }, ptr %a559 - %t564 = load i64, ptr %a541 - %t565 = mul i64 8, %t564 - call void @finch_str_from_int(ptr %a566, i64 %t565) - %t567 = load { ptr, i64, i64 }, ptr %a566 - store { ptr, i64, i64 } %t563, ptr %a569 - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_concat(ptr %a568, ptr %a569, ptr %a570) - store { ptr, i64, i64 } %t563, ptr %a571 - call void @finch_str_drop(ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a568 - %t574 = call { ptr, i64, i64 } @finch.gen.op(ptr %t553, { ptr, i64, i64 } %t573) - store { ptr, i64, i64 } %t573, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = call { ptr, i64, i64 } @finch.gen.load(ptr %t544, { ptr, i64, i64 } %t552, { ptr, i64, i64 } %t574) - store { ptr, i64, i64 } %t574, ptr %a577 - call void @finch_str_drop(ptr %a577) - store { ptr, i64, i64 } %t576, ptr %a578 - %t579 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t580 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t581 = load i64, ptr %a541 - %t582 = load { ptr, i64, i64 }, ptr %t580 - %t583 = extractvalue { ptr, i64, i64 } %t582, 1 - %t584 = icmp uge i64 %t581, %t583 - br i1 %t584, label %range7998, label %inrange7999 -range7998: - call void @finch_panic_index(ptr @.str.5066, i64 4717, i64 %t581, i64 %t583) - unreachable -inrange7999: - %t585 = extractvalue { ptr, i64, i64 } %t582, 0 - %t586 = getelementptr inbounds { ptr, i64, i64 }, ptr %t585, i64 %t581 - %t587 = load { ptr, i64, i64 }, ptr %t586 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_copy(ptr %a589, ptr %a588) - %t590 = load { ptr, i64, i64 }, ptr %a589 - %t591 = load i64, ptr %t579 - %t592 = add i64 %t591, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t592, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t593 = load ptr, ptr %a262 - %t594 = getelementptr inbounds { ptr, i64, i64 }, ptr %t593, i64 %t591 - store { ptr, i64, i64 } %t590, ptr %t594 - store i64 %t592, ptr %t579 - %t595 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t596 = getelementptr inbounds %S.gen.Abi, ptr %a357, i32 0, i32 1 - %t597 = load i64, ptr %a541 - %t598 = load { ptr, i64, i64 }, ptr %t596 - %t599 = extractvalue { ptr, i64, i64 } %t598, 1 - %t600 = icmp uge i64 %t597, %t599 - br i1 %t600, label %range8000, label %inrange8001 -range8000: - call void @finch_panic_index(ptr @.str.5067, i64 4718, i64 %t597, i64 %t599) - unreachable -inrange8001: - %t601 = extractvalue { ptr, i64, i64 } %t598, 0 - %t602 = getelementptr inbounds { ptr, i64, i64 }, ptr %t601, i64 %t597 - %t603 = load { ptr, i64, i64 }, ptr %t602 - store { ptr, i64, i64 } %t603, ptr %a605 - store { ptr, i64, i64 } { ptr @.str.5068, i64 1, i64 0 }, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - %t607 = load { ptr, i64, i64 }, ptr %a604 - %t608 = load { ptr, i64, i64 }, ptr %a578 - store { ptr, i64, i64 } %t607, ptr %a610 - store { ptr, i64, i64 } %t608, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t607, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = load i64, ptr %t595 - %t615 = add i64 %t614, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t615, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t616 = load ptr, ptr %a263 - %t617 = getelementptr inbounds { ptr, i64, i64 }, ptr %t616, i64 %t614 - store { ptr, i64, i64 } %t613, ptr %t617 - store i64 %t615, ptr %t595 - call void @finch_str_drop(ptr %a578) - br label %for.step7994 -for.step7994: - %t618 = load i64, ptr %a541 - %t619 = add i64 %t618, 1 - store i64 %t619, ptr %a541 - br label %for.cond7992 -for.end7995: - call void @finch_str_drop(ptr %a529) - br label %endif7991 -else7990: - %t620 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t621 = load ptr, ptr %a1 - %t622 = load %S.ast.Type, ptr %a345 - %t623 = call { ptr, i64, i64 } @finch.gen.cLL(ptr %t621, %S.ast.Type %t622) - %t624 = load ptr, ptr %a1 - %t625 = load %S.ast.Type, ptr %a345 - %t626 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t624, %S.ast.Type %t625) - store { ptr, i64, i64 } %t623, ptr %a628 - store { ptr, i64, i64 } %t626, ptr %a629 - call void @finch_str_concat(ptr %a627, ptr %a628, ptr %a629) - store { ptr, i64, i64 } %t623, ptr %a630 - call void @finch_str_drop(ptr %a630) - store { ptr, i64, i64 } %t626, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a627 - %t633 = load i64, ptr %t620 - %t634 = add i64 %t633, 1 - call void @finch_arr_reserve(ptr %a262, i64 %t634, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t635 = load ptr, ptr %a262 - %t636 = getelementptr inbounds { ptr, i64, i64 }, ptr %t635, i64 %t633 - store { ptr, i64, i64 } %t632, ptr %t636 - store i64 %t634, ptr %t620 - %t637 = getelementptr inbounds %S.ast.Type, ptr %a345, i32 0, i32 0 - %t638 = load { ptr, i64, i64 }, ptr %t637 - store { ptr, i64, i64 } %t638, ptr %a639 - store { ptr, i64, i64 } { ptr @.str.5069, i64 3, i64 0 }, ptr %a640 - %t641 = call i32 @finch_str_eq(ptr %a639, ptr %a640) - %t642 = icmp ne i32 %t641, 0 - br i1 %t642, label %then8002, label %else8003 -then8002: - %t643 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t644 = load ptr, ptr %a1 - %t645 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t646 = load { ptr, i64, i64 }, ptr %t645 - %t647 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t644, { ptr, i64, i64 } %t646) - store { ptr, i64, i64 } { ptr @.str.5070, i64 4, i64 0 }, ptr %a649 - store { ptr, i64, i64 } %t647, ptr %a650 - call void @finch_str_concat(ptr %a648, ptr %a649, ptr %a650) - store { ptr, i64, i64 } %t647, ptr %a651 - call void @finch_str_drop(ptr %a651) - %t652 = load { ptr, i64, i64 }, ptr %a648 - %t653 = load i64, ptr %t643 - %t654 = add i64 %t653, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t654, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t655 = load ptr, ptr %a263 - %t656 = getelementptr inbounds { ptr, i64, i64 }, ptr %t655, i64 %t653 - store { ptr, i64, i64 } %t652, ptr %t656 - store i64 %t654, ptr %t643 - br label %endif8004 -else8003: - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t658 = load ptr, ptr %a1 - %t659 = load %S.ast.Type, ptr %a345 - %t660 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t658, %S.ast.Type %t659) - %t661 = load ptr, ptr %a1 - %t662 = load %S.ast.Type, ptr %a345 - %t663 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t661, %S.ast.Type %t662) - store { ptr, i64, i64 } %t660, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - store { ptr, i64, i64 } %t660, ptr %a667 - call void @finch_str_drop(ptr %a667) - store { ptr, i64, i64 } %t663, ptr %a668 - call void @finch_str_drop(ptr %a668) - %t669 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t669, ptr %a671 - store { ptr, i64, i64 } { ptr @.str.5071, i64 1, i64 0 }, ptr %a672 - call void @finch_str_concat(ptr %a670, ptr %a671, ptr %a672) - store { ptr, i64, i64 } %t669, ptr %a673 - call void @finch_str_drop(ptr %a673) - %t674 = load { ptr, i64, i64 }, ptr %a670 - %t675 = getelementptr inbounds %S.gen.Val, ptr %a403, i32 0, i32 0 - %t676 = load { ptr, i64, i64 }, ptr %t675 - store { ptr, i64, i64 } %t674, ptr %a678 - store { ptr, i64, i64 } %t676, ptr %a679 - call void @finch_str_concat(ptr %a677, ptr %a678, ptr %a679) - store { ptr, i64, i64 } %t674, ptr %a680 - call void @finch_str_drop(ptr %a680) - %t681 = load { ptr, i64, i64 }, ptr %a677 - %t682 = load i64, ptr %t657 - %t683 = add i64 %t682, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t683, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t684 = load ptr, ptr %a263 - %t685 = getelementptr inbounds { ptr, i64, i64 }, ptr %t684, i64 %t682 - store { ptr, i64, i64 } %t681, ptr %t685 - store i64 %t683, ptr %t657 - br label %endif8004 -endif8004: - br label %endif7991 -endif7991: - br label %endif7988 -endif7988: - br label %endif7985 -endif7985: - call void @finch.drop.S_gen_Val(ptr %a403) - call void @finch.drop.S_gen_Abi(ptr %a357) - call void @finch.drop.S_ast_Type(ptr %a345) - br label %for.step7970 -endif7974: - %t686 = load ptr, ptr %a1 - %t687 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t688 = load i64, ptr %a327 - %t689 = load { ptr, i64, i64 }, ptr %t687 - %t690 = extractvalue { ptr, i64, i64 } %t689, 1 - %t691 = icmp uge i64 %t688, %t690 - br i1 %t691, label %range8005, label %inrange8006 -range8005: - call void @finch_panic_index(ptr @.str.5072, i64 4731, i64 %t688, i64 %t690) - unreachable -inrange8006: - %t692 = extractvalue { ptr, i64, i64 } %t689, 0 - %t693 = getelementptr inbounds %S.ast.Node, ptr %t692, i64 %t688 - %t694 = load %S.ast.Node, ptr %t693 - %t695 = call %S.gen.Val @finch.gen.expr(ptr %t686, %S.ast.Node %t694) - store %S.gen.Val %t695, ptr %a696 - %t697 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 1 - %t698 = load %S.ast.Type, ptr %t697 - store %S.ast.Type %t698, ptr %a699 - call void @finch.copy.S_ast_Type(ptr %a700, ptr %a699) - %t701 = load %S.ast.Type, ptr %a700 - store %S.ast.Type %t701, ptr %a702 - %t703 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t704 = load { ptr, i64, i64 }, ptr %t703 - store { ptr, i64, i64 } %t704, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5073, i64 4, i64 0 }, ptr %a706 - %t707 = call i32 @finch_str_eq(ptr %a705, ptr %a706) - %t708 = icmp ne i32 %t707, 0 - br i1 %t708, label %then8007, label %endif8009 -then8007: - %t709 = load ptr, ptr %a1 - %t710 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t711 = load i64, ptr %a327 - %t712 = load { ptr, i64, i64 }, ptr %t710 - %t713 = extractvalue { ptr, i64, i64 } %t712, 1 - %t714 = icmp uge i64 %t711, %t713 - br i1 %t714, label %range8010, label %inrange8011 -range8010: - call void @finch_panic_index(ptr @.str.5074, i64 4734, i64 %t711, i64 %t713) - unreachable -inrange8011: - %t715 = extractvalue { ptr, i64, i64 } %t712, 0 - %t716 = getelementptr inbounds %S.ast.Node, ptr %t715, i64 %t711 - %t717 = load %S.ast.Node, ptr %t716 - call void @finch.gen.fail(ptr %t709, %S.ast.Node %t717, { ptr, i64, i64 } { ptr @.str.5075, i64 23, i64 0 }) - br label %endif8009 -endif8009: - %t718 = getelementptr inbounds { ptr, i64, i64 }, ptr %a317, i32 0, i32 1 - %t719 = load %S.gen.Val, ptr %a696 - store %S.gen.Val %t719, ptr %a720 - call void @finch.copy.S_gen_Val(ptr %a721, ptr %a720) - %t722 = load %S.gen.Val, ptr %a721 - %t723 = load i64, ptr %t718 - %t724 = add i64 %t723, 1 - call void @finch_arr_reserve(ptr %a317, i64 %t724, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t725 = load ptr, ptr %a317 - %t726 = getelementptr inbounds %S.gen.Val, ptr %t725, i64 %t723 - store %S.gen.Val %t722, ptr %t726 - store i64 %t724, ptr %t718 - %t727 = load ptr, ptr %a1 - %t728 = load %S.gen.Val, ptr %a696 - call void @finch.gen.hold(ptr %t727, %S.gen.Val %t728) - %t729 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t730 = load { ptr, i64, i64 }, ptr %t729 - store { ptr, i64, i64 } %t730, ptr %a731 - store { ptr, i64, i64 } { ptr @.str.5076, i64 6, i64 0 }, ptr %a732 - %t733 = call i32 @finch_str_eq(ptr %a731, ptr %a732) - %t734 = icmp ne i32 %t733, 0 - br label %logic.from8012 -logic.from8012: - br i1 %t734, label %logic.end8014, label %logic.rhs8013 -logic.rhs8013: - %t735 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t736 = load { ptr, i64, i64 }, ptr %t735 - store { ptr, i64, i64 } %t736, ptr %a737 - store { ptr, i64, i64 } { ptr @.str.5077, i64 5, i64 0 }, ptr %a738 - %t739 = call i32 @finch_str_eq(ptr %a737, ptr %a738) - %t740 = icmp ne i32 %t739, 0 - br label %logic.rend8015 -logic.rend8015: - br label %logic.end8014 -logic.end8014: - %t741 = phi i1 [ true, %logic.from8012 ], [ %t740, %logic.rend8015 ] - br i1 %t741, label %then8016, label %endif8018 -then8016: - %t742 = load ptr, ptr %a1 - %t743 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t744 = load i64, ptr %a327 - %t745 = load { ptr, i64, i64 }, ptr %t743 - %t746 = extractvalue { ptr, i64, i64 } %t745, 1 - %t747 = icmp uge i64 %t744, %t746 - br i1 %t747, label %range8019, label %inrange8020 -range8019: - call void @finch_panic_index(ptr @.str.5078, i64 4739, i64 %t744, i64 %t746) - unreachable -inrange8020: - %t748 = extractvalue { ptr, i64, i64 } %t745, 0 - %t749 = getelementptr inbounds %S.ast.Node, ptr %t748, i64 %t744 - %t750 = load %S.ast.Node, ptr %t749 - call void @finch.gen.fail(ptr %t742, %S.ast.Node %t750, { ptr, i64, i64 } { ptr @.str.5079, i64 68, i64 0 }) - br label %endif8018 -endif8018: - %t751 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t752 = load { ptr, i64, i64 }, ptr %t751 - store { ptr, i64, i64 } %t752, ptr %a753 - call void @finch_str_copy(ptr %a754, ptr %a753) - %t755 = load { ptr, i64, i64 }, ptr %a754 - store { ptr, i64, i64 } %t755, ptr %a756 - %t757 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t758 = load { ptr, i64, i64 }, ptr %t757 - store { ptr, i64, i64 } %t758, ptr %a759 - store { ptr, i64, i64 } { ptr @.str.5080, i64 3, i64 0 }, ptr %a760 - %t761 = call i32 @finch_str_eq(ptr %a759, ptr %a760) - %t762 = icmp ne i32 %t761, 0 - br i1 %t762, label %then8021, label %else8022 -then8021: - %t763 = load ptr, ptr %a1 - %t764 = load { ptr, i64, i64 }, ptr %a756 - %t765 = load %S.ast.Type, ptr %a702 - %t766 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5081, i64 5, i64 0 }) - %t767 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t763, { ptr, i64, i64 } %t764, %S.ast.Type %t765, %S.ast.Type %t766) - store %S.ast.Type %t766, ptr %a768 - call void @finch.drop.S_ast_Type(ptr %a768) - %t769 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t767, ptr %a756 - store { ptr, i64, i64 } %t769, ptr %a770 - call void @finch_str_drop(ptr %a770) - %t771 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5082, i64 5, i64 0 }) - %t772 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t771, ptr %a702 - store %S.ast.Type %t772, ptr %a773 - call void @finch.drop.S_ast_Type(ptr %a773) - br label %endif8023 -else8022: - %t774 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t775 = load { ptr, i64, i64 }, ptr %t774 - store { ptr, i64, i64 } %t775, ptr %a776 - store { ptr, i64, i64 } { ptr @.str.5083, i64 3, i64 0 }, ptr %a777 - %t778 = call i32 @finch_str_eq(ptr %a776, ptr %a777) - %t779 = icmp ne i32 %t778, 0 - br i1 %t779, label %then8024, label %else8025 -then8024: - %t780 = load ptr, ptr %a1 - %t781 = load { ptr, i64, i64 }, ptr %a756 - %t782 = call { ptr, i64, i64 } @finch.gen.cstr(ptr %t780, { ptr, i64, i64 } %t781) - %t783 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t782, ptr %a756 - store { ptr, i64, i64 } %t783, ptr %a784 - call void @finch_str_drop(ptr %a784) - %t785 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5084, i64 3, i64 0 }) - %t786 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t785, ptr %a702 - store %S.ast.Type %t786, ptr %a787 - call void @finch.drop.S_ast_Type(ptr %a787) - br label %endif8026 -else8025: - %t788 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t789 = load { ptr, i64, i64 }, ptr %t788 - store { ptr, i64, i64 } %t789, ptr %a790 - store { ptr, i64, i64 } { ptr @.str.5085, i64 4, i64 0 }, ptr %a791 - %t792 = call i32 @finch_str_eq(ptr %a790, ptr %a791) - %t793 = icmp ne i32 %t792, 0 - br i1 %t793, label %then8027, label %else8028 -then8027: - %t794 = load ptr, ptr %a1 - %t795 = getelementptr inbounds %S.gen.Val, ptr %a696, i32 0, i32 0 - %t796 = load { ptr, i64, i64 }, ptr %t795 - store { ptr, i64, i64 } { ptr @.str.5086, i64 8, i64 0 }, ptr %a798 - store { ptr, i64, i64 } %t796, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - %t800 = load { ptr, i64, i64 }, ptr %a797 - store { ptr, i64, i64 } %t800, ptr %a802 - store { ptr, i64, i64 } { ptr @.str.5087, i64 7, i64 0 }, ptr %a803 - call void @finch_str_concat(ptr %a801, ptr %a802, ptr %a803) - store { ptr, i64, i64 } %t800, ptr %a804 - call void @finch_str_drop(ptr %a804) - %t805 = load { ptr, i64, i64 }, ptr %a801 - %t806 = call { ptr, i64, i64 } @finch.gen.op(ptr %t794, { ptr, i64, i64 } %t805) - store { ptr, i64, i64 } %t805, ptr %a807 - call void @finch_str_drop(ptr %a807) - %t808 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t806, ptr %a756 - store { ptr, i64, i64 } %t808, ptr %a809 - call void @finch_str_drop(ptr %a809) - %t810 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5088, i64 3, i64 0 }) - %t811 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t810, ptr %a702 - store %S.ast.Type %t811, ptr %a812 - call void @finch.drop.S_ast_Type(ptr %a812) - br label %endif8029 -else8028: - %t813 = load %S.ast.Type, ptr %a702 - %t814 = call i1 @finch.gen.isInt(%S.ast.Type %t813) - br label %logic.from8030 -logic.from8030: - br i1 %t814, label %logic.end8032, label %logic.rhs8031 -logic.rhs8031: - %t815 = getelementptr inbounds %S.ast.Type, ptr %a702, i32 0, i32 0 - %t816 = load { ptr, i64, i64 }, ptr %t815 - store { ptr, i64, i64 } %t816, ptr %a817 - store { ptr, i64, i64 } { ptr @.str.5089, i64 4, i64 0 }, ptr %a818 - %t819 = call i32 @finch_str_eq(ptr %a817, ptr %a818) - %t820 = icmp ne i32 %t819, 0 - br label %logic.rend8033 -logic.rend8033: - br label %logic.end8032 -logic.end8032: - %t821 = phi i1 [ true, %logic.from8030 ], [ %t820, %logic.rend8033 ] - br label %logic.from8034 -logic.from8034: - br i1 %t821, label %logic.rhs8035, label %logic.end8036 -logic.rhs8035: - %t822 = load %S.ast.Type, ptr %a702 - %t823 = call i64 @finch.gen.bitsOf(%S.ast.Type %t822) - %t824 = icmp slt i64 %t823, 32 - br label %logic.rend8037 -logic.rend8037: - br label %logic.end8036 -logic.end8036: - %t825 = phi i1 [ false, %logic.from8034 ], [ %t824, %logic.rend8037 ] - br i1 %t825, label %then8038, label %endif8040 -then8038: - %t826 = load ptr, ptr %a1 - %t827 = load { ptr, i64, i64 }, ptr %a756 - %t828 = load %S.ast.Type, ptr %a702 - %t829 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5090, i64 3, i64 0 }) - %t830 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t826, { ptr, i64, i64 } %t827, %S.ast.Type %t828, %S.ast.Type %t829) - store %S.ast.Type %t829, ptr %a831 - call void @finch.drop.S_ast_Type(ptr %a831) - %t832 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t830, ptr %a756 - store { ptr, i64, i64 } %t832, ptr %a833 - call void @finch_str_drop(ptr %a833) - %t834 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5091, i64 3, i64 0 }) - %t835 = load %S.ast.Type, ptr %a702 - store %S.ast.Type %t834, ptr %a702 - store %S.ast.Type %t835, ptr %a836 - call void @finch.drop.S_ast_Type(ptr %a836) - br label %endif8040 -endif8040: - br label %endif8029 -endif8029: - br label %endif8026 -endif8026: - br label %endif8023 -endif8023: - %t837 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - %t838 = load ptr, ptr %a1 - %t839 = load %S.ast.Type, ptr %a702 - %t840 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t838, %S.ast.Type %t839) - store { ptr, i64, i64 } %t840, ptr %a842 - store { ptr, i64, i64 } { ptr @.str.5092, i64 1, i64 0 }, ptr %a843 - call void @finch_str_concat(ptr %a841, ptr %a842, ptr %a843) - store { ptr, i64, i64 } %t840, ptr %a844 - call void @finch_str_drop(ptr %a844) - %t845 = load { ptr, i64, i64 }, ptr %a841 - %t846 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t845, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - store { ptr, i64, i64 } %t845, ptr %a850 - call void @finch_str_drop(ptr %a850) - %t851 = load { ptr, i64, i64 }, ptr %a847 - %t852 = load i64, ptr %t837 - %t853 = add i64 %t852, 1 - call void @finch_arr_reserve(ptr %a263, i64 %t853, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t854 = load ptr, ptr %a263 - %t855 = getelementptr inbounds { ptr, i64, i64 }, ptr %t854, i64 %t852 - store { ptr, i64, i64 } %t851, ptr %t855 - store i64 %t853, ptr %t837 - call void @finch_str_drop(ptr %a756) - call void @finch.drop.S_ast_Type(ptr %a702) - call void @finch.drop.S_gen_Val(ptr %a696) - br label %for.step7970 -for.step7970: - %t856 = load i64, ptr %a327 - %t857 = add i64 %t856, 1 - store i64 %t857, ptr %a327 - br label %for.cond7968 -for.end7971: - %t858 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 2 - %t859 = load { ptr, i64, i64 }, ptr %t858 - store { ptr, i64, i64 } %t859, ptr %a860 - call void @finch_str_copy(ptr %a861, ptr %a860) - %t862 = load { ptr, i64, i64 }, ptr %a861 - store { ptr, i64, i64 } %t862, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5093, i64 0, i64 0 }, ptr %a864 - %t865 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t866 = getelementptr inbounds %S.gen.Abi, ptr %t865, i32 0, i32 0 - %t867 = load { ptr, i64, i64 }, ptr %t866 - store { ptr, i64, i64 } %t867, ptr %a868 - store { ptr, i64, i64 } { ptr @.str.5094, i64 6, i64 0 }, ptr %a869 - %t870 = call i32 @finch_str_eq(ptr %a868, ptr %a869) - %t871 = icmp ne i32 %t870, 0 - br i1 %t871, label %then8041, label %endif8043 -then8041: - %t872 = load ptr, ptr %a1 - %t873 = load %S.ast.Type, ptr %a219 - %t874 = call { ptr, i64, i64 } @finch.gen.cExt(ptr %t872, %S.ast.Type %t873) - %t875 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } %t874, ptr %a864 - store { ptr, i64, i64 } %t875, ptr %a876 - call void @finch_str_drop(ptr %a876) - br label %endif8043 -endif8043: - store { ptr, i64, i64 } { ptr @.str.5095, i64 0, i64 0 }, ptr %a877 - %t878 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t879 = load i1, ptr %t878 - br i1 %t879, label %then8044, label %endif8046 -then8044: - %t880 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5096, i64 5, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - %t883 = load i64, ptr %t882 - %t884 = icmp eq i64 %t883, 0 - br i1 %t884, label %then8047, label %endif8049 -then8047: - %t885 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5097, i64 3, i64 0 }, ptr %a877 - store { ptr, i64, i64 } %t885, ptr %a886 - call void @finch_str_drop(ptr %a886) - br label %endif8049 -endif8049: - br label %endif8046 -endif8046: - %t887 = load ptr, ptr %a1 - %t888 = icmp eq ptr %t887, null - br i1 %t888, label %panic8050, label %ok8051 -panic8050: - call void @finch_panic(ptr @.str.5098, i64 4770, ptr @.str.5099) - unreachable -ok8051: - %t889 = getelementptr inbounds %S.gen.Gen, ptr %t887, i32 0, i32 40 - %t890 = getelementptr inbounds { ptr, i64, i64 }, ptr %t889, i32 0, i32 1 - %t891 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t892 = load { ptr, i64, i64 }, ptr %t891 - store { ptr, i64, i64 } { ptr @.str.5100, i64 2, i64 0 }, ptr %a894 - store { ptr, i64, i64 } %t892, ptr %a895 - call void @finch_str_concat(ptr %a893, ptr %a894, ptr %a895) - %t896 = load { ptr, i64, i64 }, ptr %a893 - store i64 -1, ptr %a897 - %t898 = load i64, ptr %t890 - %t899 = load ptr, ptr %t889 - store i64 0, ptr %a900 - br label %find.cond8052 -find.cond8052: - %t901 = load i64, ptr %a900 - %t902 = icmp slt i64 %t901, %t898 - br i1 %t902, label %find.body8053, label %find.end8056 -find.body8053: - %t903 = getelementptr inbounds { ptr, i64, i64 }, ptr %t899, i64 %t901 - %t904 = load { ptr, i64, i64 }, ptr %t903 - store { ptr, i64, i64 } %t904, ptr %a905 - store { ptr, i64, i64 } %t896, ptr %a906 - %t907 = call i32 @finch_str_eq(ptr %a905, ptr %a906) - %t908 = icmp ne i32 %t907, 0 - br i1 %t908, label %find.hit8054, label %find.next8055 -find.hit8054: - store i64 %t901, ptr %a897 - br label %find.end8056 -find.next8055: - %t909 = add i64 %t901, 1 - store i64 %t909, ptr %a900 - br label %find.cond8052 -find.end8056: - store { ptr, i64, i64 } %t896, ptr %a910 - call void @finch_str_drop(ptr %a910) - %t911 = load i64, ptr %a897 - %t912 = icmp sge i64 %t911, 0 - %t913 = xor i1 %t912, true - br i1 %t913, label %then8057, label %endif8059 -then8057: - %t914 = load ptr, ptr %a1 - %t915 = icmp eq ptr %t914, null - br i1 %t915, label %panic8060, label %ok8061 -panic8060: - call void @finch_panic(ptr @.str.5101, i64 4771, ptr @.str.5102) - unreachable -ok8061: - %t916 = getelementptr inbounds %S.gen.Gen, ptr %t914, i32 0, i32 40 - %t917 = getelementptr inbounds { ptr, i64, i64 }, ptr %t916, i32 0, i32 1 - %t918 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t919 = load { ptr, i64, i64 }, ptr %t918 - store { ptr, i64, i64 } { ptr @.str.5103, i64 2, i64 0 }, ptr %a921 - store { ptr, i64, i64 } %t919, ptr %a922 - call void @finch_str_concat(ptr %a920, ptr %a921, ptr %a922) - %t923 = load { ptr, i64, i64 }, ptr %a920 - %t924 = load i64, ptr %t917 - %t925 = add i64 %t924, 1 - call void @finch_arr_reserve(ptr %t916, i64 %t925, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t926 = load ptr, ptr %t916 - %t927 = getelementptr inbounds { ptr, i64, i64 }, ptr %t926, i64 %t924 - store { ptr, i64, i64 } %t923, ptr %t927 - store i64 %t925, ptr %t917 - %t928 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t929 = load { ptr, i64, i64 }, ptr %t928 - %t930 = call i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %t929) - %t931 = xor i1 %t930, true - br i1 %t931, label %then8062, label %endif8064 -then8062: - %t932 = load ptr, ptr %a1 - %t933 = icmp eq ptr %t932, null - br i1 %t933, label %panic8065, label %ok8066 -panic8065: - call void @finch_panic(ptr @.str.5104, i64 4773, ptr @.str.5105) - unreachable -ok8066: - %t934 = getelementptr inbounds %S.gen.Gen, ptr %t932, i32 0, i32 2 - %t935 = getelementptr inbounds { ptr, i64, i64 }, ptr %t934, i32 0, i32 1 - %t936 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5106, i64 7, i64 0 }, ptr %a938 - store { ptr, i64, i64 } %t936, ptr %a939 - call void @finch_str_concat(ptr %a937, ptr %a938, ptr %a939) - %t940 = load { ptr, i64, i64 }, ptr %a937 - store { ptr, i64, i64 } %t940, ptr %a942 - store { ptr, i64, i64 } { ptr @.str.5107, i64 1, i64 0 }, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - store { ptr, i64, i64 } %t940, ptr %a944 - call void @finch_str_drop(ptr %a944) - %t945 = load { ptr, i64, i64 }, ptr %a941 - %t946 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t945, ptr %a948 - store { ptr, i64, i64 } %t946, ptr %a949 - call void @finch_str_concat(ptr %a947, ptr %a948, ptr %a949) - store { ptr, i64, i64 } %t945, ptr %a950 - call void @finch_str_drop(ptr %a950) - %t951 = load { ptr, i64, i64 }, ptr %a947 - store { ptr, i64, i64 } %t951, ptr %a953 - store { ptr, i64, i64 } { ptr @.str.5108, i64 2, i64 0 }, ptr %a954 - call void @finch_str_concat(ptr %a952, ptr %a953, ptr %a954) - store { ptr, i64, i64 } %t951, ptr %a955 - call void @finch_str_drop(ptr %a955) - %t956 = load { ptr, i64, i64 }, ptr %a952 - %t957 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t958 = load { ptr, i64, i64 }, ptr %t957 - store { ptr, i64, i64 } %t956, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t956, ptr %a962 - call void @finch_str_drop(ptr %a962) - %t963 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t963, ptr %a965 - store { ptr, i64, i64 } { ptr @.str.5109, i64 1, i64 0 }, ptr %a966 - call void @finch_str_concat(ptr %a964, ptr %a965, ptr %a966) - store { ptr, i64, i64 } %t963, ptr %a967 - call void @finch_str_drop(ptr %a967) - %t968 = load { ptr, i64, i64 }, ptr %a964 - %t969 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5110, i64 2, i64 0 }, ptr %a970 - call void @finch_str_join(ptr %a971, ptr %a262, ptr %a970) - %t972 = load { ptr, i64, i64 }, ptr %a971 - store { ptr, i64, i64 } %t968, ptr %a974 - store { ptr, i64, i64 } %t972, ptr %a975 - call void @finch_str_concat(ptr %a973, ptr %a974, ptr %a975) - store { ptr, i64, i64 } %t968, ptr %a976 - call void @finch_str_drop(ptr %a976) - store { ptr, i64, i64 } %t972, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a973 - %t979 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t978, ptr %a981 - store { ptr, i64, i64 } %t979, ptr %a982 - call void @finch_str_concat(ptr %a980, ptr %a981, ptr %a982) - store { ptr, i64, i64 } %t978, ptr %a983 - call void @finch_str_drop(ptr %a983) - %t984 = load { ptr, i64, i64 }, ptr %a980 - store { ptr, i64, i64 } %t984, ptr %a986 - store { ptr, i64, i64 } { ptr @.str.5111, i64 1, i64 0 }, ptr %a987 - call void @finch_str_concat(ptr %a985, ptr %a986, ptr %a987) - store { ptr, i64, i64 } %t984, ptr %a988 - call void @finch_str_drop(ptr %a988) - %t989 = load { ptr, i64, i64 }, ptr %a985 - %t990 = load i64, ptr %t935 - %t991 = add i64 %t990, 1 - call void @finch_arr_reserve(ptr %t934, i64 %t991, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t992 = load ptr, ptr %t934 - %t993 = getelementptr inbounds { ptr, i64, i64 }, ptr %t992, i64 %t990 - store { ptr, i64, i64 } %t989, ptr %t993 - store i64 %t991, ptr %t935 - br label %endif8064 -endif8064: - br label %endif8059 -endif8059: - store { ptr, i64, i64 } { ptr @.str.5112, i64 0, i64 0 }, ptr %a994 - %t995 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 4 - %t996 = load i1, ptr %t995 - br i1 %t996, label %then8067, label %endif8069 -then8067: - %t997 = getelementptr inbounds { ptr, i64, i64 }, ptr %a262, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5114, i64 2, i64 0 }, ptr %a998 - call void @finch_str_join(ptr %a999, ptr %a262, ptr %a998) - %t1000 = load { ptr, i64, i64 }, ptr %a999 - store { ptr, i64, i64 } { ptr @.str.5113, i64 2, i64 0 }, ptr %a1002 - store { ptr, i64, i64 } %t1000, ptr %a1003 - call void @finch_str_concat(ptr %a1001, ptr %a1002, ptr %a1003) - store { ptr, i64, i64 } %t1000, ptr %a1004 - call void @finch_str_drop(ptr %a1004) - %t1005 = load { ptr, i64, i64 }, ptr %a1001 - %t1006 = load { ptr, i64, i64 }, ptr %a877 - store { ptr, i64, i64 } %t1005, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - store { ptr, i64, i64 } %t1005, ptr %a1010 - call void @finch_str_drop(ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5115, i64 1, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1016, ptr %a994 - store { ptr, i64, i64 } %t1017, ptr %a1018 - call void @finch_str_drop(ptr %a1018) - br label %endif8069 -endif8069: - %t1019 = load { ptr, i64, i64 }, ptr %a864 - store { ptr, i64, i64 } { ptr @.str.5116, i64 4, i64 0 }, ptr %a1021 - store { ptr, i64, i64 } %t1019, ptr %a1022 - call void @finch_str_concat(ptr %a1020, ptr %a1021, ptr %a1022) - %t1023 = load { ptr, i64, i64 }, ptr %a1020 - store { ptr, i64, i64 } %t1023, ptr %a1025 - store { ptr, i64, i64 } { ptr @.str.5117, i64 1, i64 0 }, ptr %a1026 - call void @finch_str_concat(ptr %a1024, ptr %a1025, ptr %a1026) - store { ptr, i64, i64 } %t1023, ptr %a1027 - call void @finch_str_drop(ptr %a1027) - %t1028 = load { ptr, i64, i64 }, ptr %a1024 - %t1029 = load { ptr, i64, i64 }, ptr %a863 - store { ptr, i64, i64 } %t1028, ptr %a1031 - store { ptr, i64, i64 } %t1029, ptr %a1032 - call void @finch_str_concat(ptr %a1030, ptr %a1031, ptr %a1032) - store { ptr, i64, i64 } %t1028, ptr %a1033 - call void @finch_str_drop(ptr %a1033) - %t1034 = load { ptr, i64, i64 }, ptr %a1030 - %t1035 = load { ptr, i64, i64 }, ptr %a994 - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1035, ptr %a1038 - call void @finch_str_concat(ptr %a1036, ptr %a1037, ptr %a1038) - store { ptr, i64, i64 } %t1034, ptr %a1039 - call void @finch_str_drop(ptr %a1039) - %t1040 = load { ptr, i64, i64 }, ptr %a1036 - store { ptr, i64, i64 } %t1040, ptr %a1042 - store { ptr, i64, i64 } { ptr @.str.5118, i64 2, i64 0 }, ptr %a1043 - call void @finch_str_concat(ptr %a1041, ptr %a1042, ptr %a1043) - store { ptr, i64, i64 } %t1040, ptr %a1044 - call void @finch_str_drop(ptr %a1044) - %t1045 = load { ptr, i64, i64 }, ptr %a1041 - %t1046 = getelementptr inbounds %S.cimport.CFunc, ptr %a3, i32 0, i32 0 - %t1047 = load { ptr, i64, i64 }, ptr %t1046 - store { ptr, i64, i64 } %t1045, ptr %a1049 - store { ptr, i64, i64 } %t1047, ptr %a1050 - call void @finch_str_concat(ptr %a1048, ptr %a1049, ptr %a1050) - store { ptr, i64, i64 } %t1045, ptr %a1051 - call void @finch_str_drop(ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1048 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5119, i64 1, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = getelementptr inbounds { ptr, i64, i64 }, ptr %a263, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5120, i64 2, i64 0 }, ptr %a1059 - call void @finch_str_join(ptr %a1060, ptr %a263, ptr %a1059) - %t1061 = load { ptr, i64, i64 }, ptr %a1060 - store { ptr, i64, i64 } %t1057, ptr %a1063 - store { ptr, i64, i64 } %t1061, ptr %a1064 - call void @finch_str_concat(ptr %a1062, ptr %a1063, ptr %a1064) - store { ptr, i64, i64 } %t1057, ptr %a1065 - call void @finch_str_drop(ptr %a1065) - store { ptr, i64, i64 } %t1061, ptr %a1066 - call void @finch_str_drop(ptr %a1066) - %t1067 = load { ptr, i64, i64 }, ptr %a1062 - store { ptr, i64, i64 } %t1067, ptr %a1069 - store { ptr, i64, i64 } { ptr @.str.5121, i64 1, i64 0 }, ptr %a1070 - call void @finch_str_concat(ptr %a1068, ptr %a1069, ptr %a1070) - store { ptr, i64, i64 } %t1067, ptr %a1071 - call void @finch_str_drop(ptr %a1071) - %t1072 = load { ptr, i64, i64 }, ptr %a1068 - store { ptr, i64, i64 } %t1072, ptr %a1073 - %t1074 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1075 = load { ptr, i64, i64 }, ptr %t1074 - store { ptr, i64, i64 } %t1075, ptr %a1076 - store { ptr, i64, i64 } { ptr @.str.5122, i64 4, i64 0 }, ptr %a1077 - %t1078 = call i32 @finch_str_eq(ptr %a1076, ptr %a1077) - %t1079 = icmp ne i32 %t1078, 0 - br i1 %t1079, label %then8070, label %endif8072 -then8070: - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1080, { ptr, i64, i64 } %t1081) - %t1082 = load ptr, ptr %a1 - %t1083 = load { ptr, i64, i64 }, ptr %a317 - %t1084 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1082, { ptr, i64, i64 } %t1083, i64 %t1084) - %t1085 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1085, ptr %a1086 - call void @finch.copy.S_ast_Type(ptr %a1087, ptr %a1086) - %t1088 = load %S.ast.Type, ptr %a1087 - %t1089 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1088, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1089 -endif8072: - %t1090 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 3 - %t1091 = load i1, ptr %t1090 - br i1 %t1091, label %then8073, label %endif8075 -then8073: - %t1092 = load ptr, ptr %a1 - %t1093 = load { ptr, i64, i64 }, ptr %a1073 - call void @finch.gen.emit(ptr %t1092, { ptr, i64, i64 } %t1093) - %t1094 = load ptr, ptr %a1 - %t1095 = load { ptr, i64, i64 }, ptr %a317 - %t1096 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1094, { ptr, i64, i64 } %t1095, i64 %t1096) - %t1097 = load ptr, ptr %a1 - %t1098 = load ptr, ptr %a1 - %t1099 = load %S.ast.Type, ptr %a219 - %t1100 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1098, %S.ast.Type %t1099) - %t1101 = load { ptr, i64, i64 }, ptr %a264 - %t1102 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1097, { ptr, i64, i64 } %t1100, { ptr, i64, i64 } %t1101) - store { ptr, i64, i64 } %t1100, ptr %a1103 - call void @finch_str_drop(ptr %a1103) - %t1104 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1102, 0 - %t1105 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1105, ptr %a1106 - call void @finch.copy.S_ast_Type(ptr %a1107, ptr %a1106) - %t1108 = load %S.ast.Type, ptr %a1107 - %t1109 = insertvalue %S.gen.Val %t1104, %S.ast.Type %t1108, 1 - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1109 -endif8075: - %t1110 = load ptr, ptr %a1 - %t1111 = load { ptr, i64, i64 }, ptr %a1073 - %t1112 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1110, { ptr, i64, i64 } %t1111) - store { ptr, i64, i64 } %t1112, ptr %a1113 - %t1114 = load ptr, ptr %a1 - %t1115 = load { ptr, i64, i64 }, ptr %a317 - %t1116 = load i64, ptr %a323 - call void @finch.gen.releaseAll(ptr %t1114, { ptr, i64, i64 } %t1115, i64 %t1116) - %t1117 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1118 = getelementptr inbounds %S.gen.Abi, ptr %t1117, i32 0, i32 0 - %t1119 = load { ptr, i64, i64 }, ptr %t1118 - store { ptr, i64, i64 } %t1119, ptr %a1120 - store { ptr, i64, i64 } { ptr @.str.5123, i64 6, i64 0 }, ptr %a1121 - %t1122 = call i32 @finch_str_eq(ptr %a1120, ptr %a1121) - %t1123 = icmp ne i32 %t1122, 0 - br i1 %t1123, label %then8076, label %endif8078 -then8076: - %t1124 = load ptr, ptr %a1 - %t1125 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1124, { ptr, i64, i64 } { ptr @.str.5124, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1125, ptr %a1126 - %t1127 = load ptr, ptr %a1 - %t1128 = getelementptr inbounds %S.gen.Plan, ptr %a261, i32 0, i32 0 - %t1129 = getelementptr inbounds %S.gen.Abi, ptr %t1128, i32 0, i32 2 - %t1130 = load { ptr, i64, i64 }, ptr %t1129 - %t1131 = load { ptr, i64, i64 }, ptr %a1113 - %t1132 = load { ptr, i64, i64 }, ptr %a1126 - call void @finch.gen.store(ptr %t1127, { ptr, i64, i64 } %t1130, { ptr, i64, i64 } %t1131, { ptr, i64, i64 } %t1132) - %t1133 = load ptr, ptr %a1 - %t1134 = load ptr, ptr %a1 - %t1135 = load %S.ast.Type, ptr %a219 - %t1136 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1134, %S.ast.Type %t1135) - %t1137 = load { ptr, i64, i64 }, ptr %a1126 - %t1138 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1133, { ptr, i64, i64 } %t1136, { ptr, i64, i64 } %t1137) - store { ptr, i64, i64 } %t1136, ptr %a1139 - call void @finch_str_drop(ptr %a1139) - %t1140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1138, 0 - %t1141 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1141, ptr %a1142 - call void @finch.copy.S_ast_Type(ptr %a1143, ptr %a1142) - %t1144 = load %S.ast.Type, ptr %a1143 - %t1145 = insertvalue %S.gen.Val %t1140, %S.ast.Type %t1144, 1 - call void @finch_str_drop(ptr %a1126) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1145 -endif8078: - %t1146 = getelementptr inbounds %S.ast.Type, ptr %a219, i32 0, i32 0 - %t1147 = load { ptr, i64, i64 }, ptr %t1146 - store { ptr, i64, i64 } %t1147, ptr %a1148 - store { ptr, i64, i64 } { ptr @.str.5125, i64 3, i64 0 }, ptr %a1149 - %t1150 = call i32 @finch_str_eq(ptr %a1148, ptr %a1149) - %t1151 = icmp ne i32 %t1150, 0 - br i1 %t1151, label %then8079, label %endif8081 -then8079: - %t1152 = load ptr, ptr %a1 - %t1153 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1152) - store { ptr, i64, i64 } %t1153, ptr %a1154 - %t1155 = load ptr, ptr %a1 - %t1156 = load { ptr, i64, i64 }, ptr %a1154 - call void @finch.gen.store(ptr %t1155, { ptr, i64, i64 } { ptr @.str.5126, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5127, i64 15, i64 0 }, { ptr, i64, i64 } %t1156) - %t1157 = load ptr, ptr %a1 - %t1158 = load { ptr, i64, i64 }, ptr %a1154 - store { ptr, i64, i64 } { ptr @.str.5128, i64 32, i64 0 }, ptr %a1160 - store { ptr, i64, i64 } %t1158, ptr %a1161 - call void @finch_str_concat(ptr %a1159, ptr %a1160, ptr %a1161) - %t1162 = load { ptr, i64, i64 }, ptr %a1159 - store { ptr, i64, i64 } %t1162, ptr %a1164 - store { ptr, i64, i64 } { ptr @.str.5129, i64 6, i64 0 }, ptr %a1165 - call void @finch_str_concat(ptr %a1163, ptr %a1164, ptr %a1165) - store { ptr, i64, i64 } %t1162, ptr %a1166 - call void @finch_str_drop(ptr %a1166) - %t1167 = load { ptr, i64, i64 }, ptr %a1163 - %t1168 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1167, ptr %a1170 - store { ptr, i64, i64 } %t1168, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1167, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - store { ptr, i64, i64 } %t1173, ptr %a1175 - store { ptr, i64, i64 } { ptr @.str.5130, i64 1, i64 0 }, ptr %a1176 - call void @finch_str_concat(ptr %a1174, ptr %a1175, ptr %a1176) - store { ptr, i64, i64 } %t1173, ptr %a1177 - call void @finch_str_drop(ptr %a1177) - %t1178 = load { ptr, i64, i64 }, ptr %a1174 - call void @finch.gen.emit(ptr %t1157, { ptr, i64, i64 } %t1178) - store { ptr, i64, i64 } %t1178, ptr %a1179 - call void @finch_str_drop(ptr %a1179) - %t1180 = load ptr, ptr %a1 - %t1181 = load { ptr, i64, i64 }, ptr %a1154 - %t1182 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1180, { ptr, i64, i64 } { ptr @.str.5131, i64 17, i64 0 }, { ptr, i64, i64 } %t1181) - %t1183 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1182, 0 - %t1184 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1184, ptr %a1185 - call void @finch.copy.S_ast_Type(ptr %a1186, ptr %a1185) - %t1187 = load %S.ast.Type, ptr %a1186 - %t1188 = insertvalue %S.gen.Val %t1183, %S.ast.Type %t1187, 1 - call void @finch_str_drop(ptr %a1154) - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1188 -endif8081: - %t1189 = load { ptr, i64, i64 }, ptr %a1113 - store { ptr, i64, i64 } %t1189, ptr %a1190 - call void @finch_str_copy(ptr %a1191, ptr %a1190) - %t1192 = load { ptr, i64, i64 }, ptr %a1191 - %t1193 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1192, 0 - %t1194 = load %S.ast.Type, ptr %a219 - store %S.ast.Type %t1194, ptr %a1195 - call void @finch.copy.S_ast_Type(ptr %a1196, ptr %a1195) - %t1197 = load %S.ast.Type, ptr %a1196 - %t1198 = insertvalue %S.gen.Val %t1193, %S.ast.Type %t1197, 1 - call void @finch_str_drop(ptr %a1113) - call void @finch_str_drop(ptr %a1073) - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a877) - call void @finch_str_drop(ptr %a864) - call void @finch_str_drop(ptr %a863) - call void @finch.drop.arr_S_gen_Val(ptr %a317) - call void @finch_str_drop(ptr %a264) - call void @finch.drop.arr_str(ptr %a263) - call void @finch.drop.arr_str(ptr %a262) - call void @finch.drop.S_gen_Plan(ptr %a261) - call void @finch.drop.arr_S_ast_Type(ptr %a225) - call void @finch.drop.S_ast_Type(ptr %a219) - ret %S.gen.Val %t1198 -} - -define internal void @finch.gen.releaseAll(ptr %p0, { ptr, i64, i64 } %p1, i64 %p2) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca i64, align 16 - %a4 = alloca i64, align 16 - %a12 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - store i64 0, ptr %a4 - br label %each.cond8082 -each.cond8082: - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t6 = load i64, ptr %t5 - %t7 = load i64, ptr %a4 - %t8 = icmp slt i64 %t7, %t6 - br i1 %t8, label %each.body8083, label %each.end8085 -each.body8083: - %t9 = load ptr, ptr %a2 - %t10 = getelementptr inbounds %S.gen.Val, ptr %t9, i64 %t7 - %t11 = load %S.gen.Val, ptr %t10 - store %S.gen.Val %t11, ptr %a12 - %t13 = load ptr, ptr %a1 - %t14 = load %S.gen.Val, ptr %a12 - call void @finch.gen.release(ptr %t13, %S.gen.Val %t14) - br label %each.step8084 -each.step8084: - %t15 = load i64, ptr %a4 - %t16 = add i64 %t15, 1 - store i64 %t16, ptr %a4 - br label %each.cond8082 -each.end8085: - %t17 = load ptr, ptr %a1 - %t18 = load i64, ptr %a3 - call void @finch.gen.heldEnd(ptr %t17, i64 %t18) - ret void -} - -define internal i1 @finch.gen.runtimeDeclares({ ptr, i64, i64 } %p0) { -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.5132, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5133, i64 6, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5134, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5135, i64 4, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5136, 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.cond8086 -find.cond8086: - %t19 = load i64, ptr %a18 - %t20 = icmp slt i64 %t19, %t16 - br i1 %t20, label %find.body8087, label %find.end8090 -find.body8087: - %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.hit8088, label %find.next8089 -find.hit8088: - store i64 %t19, ptr %a15 - br label %find.end8090 -find.next8089: - %t27 = add i64 %t19, 1 - store i64 %t27, ptr %a18 - br label %find.cond8086 -find.end8090: - %t28 = load i64, ptr %a15 - %t29 = icmp sge i64 %t28, 0 - call void @finch.drop.arr_str(ptr %a12) - 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 - %a93 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 23, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.5137, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 1 - store { ptr, i64, i64 } { ptr @.str.5138, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 2 - store { ptr, i64, i64 } { ptr @.str.5139, i64 7, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 3 - store { ptr, i64, i64 } { ptr @.str.5140, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 4 - store { ptr, i64, i64 } { ptr @.str.5141, i64 5, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 5 - store { ptr, i64, i64 } { ptr @.str.5142, i64 7, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 6 - store { ptr, i64, i64 } { ptr @.str.5143, i64 4, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 7 - store { ptr, i64, i64 } { ptr @.str.5144, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 8 - store { ptr, i64, i64 } { ptr @.str.5145, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 9 - store { ptr, i64, i64 } { ptr @.str.5146, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 10 - store { ptr, i64, i64 } { ptr @.str.5147, i64 5, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 11 - store { ptr, i64, i64 } { ptr @.str.5148, i64 4, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 12 - store { ptr, i64, i64 } { ptr @.str.5149, i64 6, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 13 - store { ptr, i64, i64 } { ptr @.str.5150, i64 4, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 14 - store { ptr, i64, i64 } { ptr @.str.5151, i64 5, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 15 - store { ptr, i64, i64 } { ptr @.str.5152, i64 3, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 16 - store { ptr, i64, i64 } { ptr @.str.5153, i64 4, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 17 - store { ptr, i64, i64 } { ptr @.str.5154, i64 6, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 18 - store { ptr, i64, i64 } { ptr @.str.5155, i64 6, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 19 - store { ptr, i64, i64 } { ptr @.str.5156, i64 6, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 20 - store { ptr, i64, i64 } { ptr @.str.5157, i64 4, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 21 - store { ptr, i64, i64 } { ptr @.str.5158, i64 5, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 22 - store { ptr, i64, i64 } { ptr @.str.5159, 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.5160, i64 7, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 1 - store { ptr, i64, i64 } { ptr @.str.5161, i64 7, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 2 - store { ptr, i64, i64 } { ptr @.str.5162, i64 7, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 3 - store { ptr, i64, i64 } { ptr @.str.5163, i64 7, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 4 - store { ptr, i64, i64 } { ptr @.str.5164, i64 7, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 5 - store { ptr, i64, i64 } { ptr @.str.5165, i64 7, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 6 - store { ptr, i64, i64 } { ptr @.str.5166, i64 6, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 7 - store { ptr, i64, i64 } { ptr @.str.5167, i64 6, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 8 - store { ptr, i64, i64 } { ptr @.str.5168, i64 6, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 9 - store { ptr, i64, i64 } { ptr @.str.5169, i64 6, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 10 - store { ptr, i64, i64 } { ptr @.str.5170, i64 6, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 11 - store { ptr, i64, i64 } { ptr @.str.5171, i64 6, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 12 - store { ptr, i64, i64 } { ptr @.str.5172, i64 8, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 13 - store { ptr, i64, i64 } { ptr @.str.5173, i64 8, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 14 - store { ptr, i64, i64 } { ptr @.str.5174, i64 8, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 15 - store { ptr, i64, i64 } { ptr @.str.5175, i64 8, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 16 - store { ptr, i64, i64 } { ptr @.str.5176, i64 8, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 17 - store { ptr, i64, i64 } { ptr @.str.5177, i64 8, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 18 - store { ptr, i64, i64 } { ptr @.str.5178, i64 8, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 19 - store { ptr, i64, i64 } { ptr @.str.5179, i64 8, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 20 - store { ptr, i64, i64 } { ptr @.str.5180, i64 6, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 21 - store { ptr, i64, i64 } { ptr @.str.5181, i64 8, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t32, i64 22 - store { ptr, i64, i64 } { ptr @.str.5182, 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.cond8091 -find.cond8091: - %t66 = load i64, ptr %a65 - %t67 = icmp slt i64 %t66, %t63 - br i1 %t67, label %find.body8092, label %find.end8095 -find.body8092: - %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.hit8093, label %find.next8094 -find.hit8093: - store i64 %t66, ptr %a62 - br label %find.end8095 -find.next8094: - %t74 = add i64 %t66, 1 - store i64 %t74, ptr %a65 - br label %find.cond8091 -find.end8095: - %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 %then8096, label %endif8098 -then8096: - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } { ptr @.str.5183, i64 0, i64 0 } -endif8098: - %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 %range8099, label %inrange8100 -range8099: - call void @finch_panic_index(ptr @.str.5185, i64 4830, i64 %t79, i64 %t81) - unreachable -inrange8100: - %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.5184, 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.5186, i64 14, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a59) - call void @finch.drop.arr_str(ptr %a30) - ret { ptr, i64, i64 } %t94 -} - -define internal void @finch.drop.S_docs_Doc(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.docs.Doc, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_docs_Doc(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond8110 -n.cond8110: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body8111, label %n.end8112 -n.body8111: - %t7 = getelementptr inbounds %S.docs.Doc, ptr %t1, i64 %t5 - call void @finch.drop.S_docs_Doc(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond8110 -n.end8112: - call void @finch_arr_free(ptr %a) - ret void -} - -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 { ptr, i64, i64 }, align 16 - %a20 = alloca %S.docs.Doc, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i64, align 16 - %a62 = alloca %S.gen.Val, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca %S.ast.Node, align 16 - %a110 = alloca %S.ast.Node, align 16 - %a112 = alloca %S.ast.Node, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca i64, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca %S.gen.Place, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca %S.gen.Val, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i1, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca %S.ast.Type, align 16 - %a220 = alloca %S.ast.Type, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a303 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca %S.ast.Type, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a420 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = 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 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a517 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a603 = alloca %S.gen.Val, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %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 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a638 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a672 = alloca { ptr, i64, i64 }, align 16 - %a673 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a684 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca { ptr, i64, i64 }, align 16 - %a709 = alloca { ptr, i64, i64 }, align 16 - %a710 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a727 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a753 = alloca { ptr, i64, i64 }, align 16 - %a754 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a759 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a764 = alloca { ptr, i64, i64 }, align 16 - %a765 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a777 = alloca { ptr, i64, i64 }, align 16 - %a779 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a789 = alloca { ptr, i64, i64 }, align 16 - %a790 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca { ptr, i64, i64 }, align 16 - %a792 = alloca { ptr, i64, i64 }, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a796 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca { ptr, i64, i64 }, align 16 - %a799 = alloca { ptr, i64, i64 }, align 16 - %a810 = alloca { ptr, i64, i64 }, align 16 - %a811 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca %S.gen.Val, align 16 - %a832 = alloca i64, align 16 - %a844 = alloca %S.gen.Val, align 16 - %a850 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a861 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a868 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a875 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a880 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a885 = alloca { ptr, i64, i64 }, align 16 - %a886 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca { ptr, i64, i64 }, align 16 - %a889 = alloca { ptr, i64, i64 }, align 16 - %a890 = alloca { ptr, i64, i64 }, align 16 - %a891 = alloca { ptr, i64, i64 }, align 16 - %a894 = alloca { ptr, i64, i64 }, align 16 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a900 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a905 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a910 = alloca { ptr, i64, i64 }, align 16 - %a911 = alloca { ptr, i64, i64 }, align 16 - %a913 = alloca { ptr, i64, i64 }, align 16 - %a914 = alloca { ptr, i64, i64 }, align 16 - %a915 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca { ptr, i64, i64 }, align 16 - %a919 = alloca { ptr, i64, i64 }, align 16 - %a924 = alloca { ptr, i64, i64 }, align 16 - %a932 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a945 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a956 = alloca { ptr, i64, i64 }, align 16 - %a957 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a971 = alloca { ptr, i64, i64 }, align 16 - %a972 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a976 = alloca { ptr, i64, i64 }, align 16 - %a977 = alloca { ptr, i64, i64 }, align 16 - %a980 = alloca { ptr, i64, i64 }, align 16 - %a985 = alloca { ptr, i64, i64 }, align 16 - %a986 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca %S.gen.Val, align 16 - %a1004 = alloca { ptr, i64, i64 }, align 16 - %a1007 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1011 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1022 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1027 = alloca { ptr, i64, i64 }, align 16 - %a1028 = alloca { ptr, i64, i64 }, align 16 - %a1030 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1038 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1044 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1053 = alloca { ptr, i64, i64 }, align 16 - %a1054 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1060 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1065 = alloca { ptr, i64, i64 }, align 16 - %a1066 = alloca { ptr, i64, i64 }, align 16 - %a1067 = alloca { ptr, i64, i64 }, align 16 - %a1070 = alloca { ptr, i64, i64 }, align 16 - %a1071 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1076 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1080 = alloca { ptr, i64, i64 }, align 16 - %a1081 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1101 = alloca %S.ast.Type, align 16 - %a1108 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1112 = alloca { ptr, i64, i64 }, align 16 - %a1113 = alloca { ptr, i64, i64 }, align 16 - %a1114 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1118 = alloca { ptr, i64, i64 }, align 16 - %a1119 = alloca { ptr, i64, i64 }, align 16 - %a1123 = alloca %S.ast.Type, align 16 - %a1128 = alloca { ptr, i64, i64 }, align 16 - %a1129 = alloca { ptr, i64, i64 }, align 16 - %a1130 = alloca { ptr, i64, i64 }, align 16 - %a1132 = alloca { ptr, i64, i64 }, align 16 - %a1133 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1138 = alloca { ptr, i64, i64 }, align 16 - %a1143 = alloca { ptr, i64, i64 }, align 16 - %a1144 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca { ptr, i64, i64 }, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1167 = alloca { ptr, i64, i64 }, align 16 - %a1169 = alloca { ptr, i64, i64 }, align 16 - %a1170 = alloca { ptr, i64, i64 }, align 16 - %a1171 = alloca { ptr, i64, i64 }, align 16 - %a1172 = alloca { ptr, i64, i64 }, align 16 - %a1177 = alloca { ptr, i64, i64 }, align 16 - %a1178 = alloca { ptr, i64, i64 }, align 16 - %a1179 = alloca { ptr, i64, i64 }, align 16 - %a1180 = alloca { ptr, i64, i64 }, align 16 - %a1181 = alloca { ptr, i64, i64 }, align 16 - %a1183 = alloca { ptr, i64, i64 }, align 16 - %a1184 = alloca { ptr, i64, i64 }, align 16 - %a1185 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca { ptr, i64, i64 }, align 16 - %a1188 = alloca { ptr, i64, i64 }, align 16 - %a1191 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca { ptr, i64, i64 }, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1195 = alloca { ptr, i64, i64 }, align 16 - %a1196 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1198 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca %S.ast.Type, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1217 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1243 = alloca %S.gen.Val, align 16 - %a1244 = alloca %S.ast.Type, align 16 - %a1245 = alloca %S.gen.Val, align 16 - %a1249 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1253 = alloca { ptr, i64, i64 }, align 16 - %a1254 = alloca { ptr, i64, i64 }, align 16 - %a1255 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1259 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1270 = alloca { ptr, i64, i64 }, align 16 - %a1271 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca %S.gen.Val, align 16 - %a1303 = alloca %S.gen.Val, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1309 = alloca { ptr, i64, i64 }, align 16 - %a1310 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1313 = alloca { ptr, i64, i64 }, align 16 - %a1314 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1316 = alloca { ptr, i64, i64 }, align 16 - %a1321 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1327 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1332 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1359 = alloca %S.gen.Val, align 16 - %a1365 = alloca { ptr, i64, i64 }, align 16 - %a1366 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1370 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1376 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1387 = alloca { ptr, i64, i64 }, align 16 - %a1388 = alloca { ptr, i64, i64 }, align 16 - %a1390 = alloca { ptr, i64, i64 }, align 16 - %a1391 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca %S.gen.Val, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1452 = alloca { ptr, i64, i64 }, align 16 - %a1457 = alloca { ptr, i64, i64 }, align 16 - %a1458 = alloca { ptr, i64, i64 }, align 16 - %a1459 = alloca { ptr, i64, i64 }, align 16 - %a1461 = alloca { ptr, i64, i64 }, align 16 - %a1462 = alloca { ptr, i64, i64 }, align 16 - %a1463 = alloca { ptr, i64, i64 }, align 16 - %a1464 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca { ptr, i64, i64 }, align 16 - %a1470 = alloca { ptr, i64, i64 }, align 16 - %a1491 = alloca { ptr, i64, i64 }, align 16 - %a1492 = alloca { ptr, i64, i64 }, align 16 - %a1493 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1497 = alloca { ptr, i64, i64 }, align 16 - %a1498 = alloca { ptr, i64, i64 }, align 16 - %a1500 = alloca { ptr, i64, i64 }, align 16 - %a1510 = alloca i64, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1525 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1530 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca i64, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1577 = alloca { ptr, i64, i64 }, align 16 - %a1578 = alloca { ptr, i64, i64 }, align 16 - %a1579 = alloca { ptr, i64, i64 }, align 16 - %a1580 = alloca { ptr, i64, i64 }, align 16 - %a1582 = alloca { ptr, i64, i64 }, align 16 - %a1583 = alloca { ptr, i64, i64 }, align 16 - %a1584 = alloca { ptr, i64, i64 }, align 16 - %a1585 = alloca { ptr, i64, i64 }, align 16 - %a1587 = alloca { ptr, i64, i64 }, align 16 - %a1588 = alloca { ptr, i64, i64 }, align 16 - %a1591 = alloca i64, align 16 - %a1599 = alloca %S.ast.Type, align 16 - %a1620 = alloca %S.ast.Type, align 16 - %a1641 = alloca i64, align 16 - %a1654 = alloca %S.gen.StructDef, align 16 - %a1655 = alloca %S.gen.StructDef, align 16 - %a1657 = alloca %S.gen.StructDef, align 16 - %a1685 = alloca %S.ast.Node, align 16 - %a1686 = alloca %S.ast.Node, align 16 - %a1688 = alloca %S.ast.Node, align 16 - %a1697 = alloca { ptr, i64, i64 }, align 16 - %a1698 = alloca { ptr, i64, i64 }, align 16 - %a1699 = alloca { ptr, i64, i64 }, align 16 - %a1701 = alloca { ptr, i64, i64 }, align 16 - %a1702 = alloca { ptr, i64, i64 }, align 16 - %a1703 = alloca { ptr, i64, i64 }, align 16 - %a1704 = alloca { ptr, i64, i64 }, align 16 - %a1708 = alloca { ptr, i64, i64 }, align 16 - %a1709 = alloca { ptr, i64, i64 }, align 16 - %a1711 = alloca { ptr, i64, i64 }, align 16 - %a1712 = alloca { ptr, i64, i64 }, align 16 - %a1713 = alloca { ptr, i64, i64 }, align 16 - %a1714 = alloca { ptr, i64, i64 }, align 16 - %a1715 = alloca { ptr, i64, i64 }, align 16 - %a1717 = alloca { ptr, i64, i64 }, align 16 - %a1718 = alloca { ptr, i64, i64 }, align 16 - %a1719 = alloca { ptr, i64, i64 }, align 16 - %a1720 = alloca { ptr, i64, i64 }, align 16 - %a1737 = alloca { ptr, i64, i64 }, align 16 - %a1753 = alloca i64, align 16 - %a1765 = alloca { ptr, i64, i64 }, align 16 - %a1775 = alloca { ptr, i64, i64 }, align 16 - %a1778 = alloca { ptr, i64, i64 }, align 16 - %a1779 = alloca { ptr, i64, i64 }, align 16 - %a1806 = alloca { ptr, i64, i64 }, align 16 - %a1807 = alloca { ptr, i64, i64 }, align 16 - %a1808 = alloca { ptr, i64, i64 }, align 16 - %a1810 = alloca { ptr, i64, i64 }, align 16 - %a1811 = alloca { ptr, i64, i64 }, align 16 - %a1812 = alloca { ptr, i64, i64 }, align 16 - %a1813 = alloca { ptr, i64, i64 }, align 16 - %a1815 = alloca { ptr, i64, i64 }, align 16 - %a1819 = alloca { ptr, i64, i64 }, align 16 - %a1820 = alloca { ptr, i64, i64 }, align 16 - %a1821 = alloca { ptr, i64, i64 }, align 16 - %a1823 = alloca { ptr, i64, i64 }, align 16 - %a1824 = alloca { ptr, i64, i64 }, align 16 - %a1825 = alloca { ptr, i64, i64 }, align 16 - %a1826 = alloca { ptr, i64, i64 }, align 16 - %a1830 = alloca { ptr, i64, i64 }, align 16 - %a1831 = alloca { ptr, i64, i64 }, align 16 - %a1832 = alloca { ptr, i64, i64 }, align 16 - %a1833 = alloca { ptr, i64, i64 }, align 16 - %a1834 = alloca { ptr, i64, i64 }, align 16 - %a1836 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - %t3 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %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 %panic8101, label %ok8102 -panic8101: - call void @finch_panic(ptr @.str.5187, i64 4835, ptr @.str.5188) - unreachable -ok8102: - %t11 = getelementptr inbounds %S.gen.Gen, ptr %t9, i32 0, i32 28 - %t12 = load i1, ptr %t11 - br label %logic.from8103 -logic.from8103: - br i1 %t12, label %logic.rhs8104, label %logic.end8105 -logic.rhs8104: - %t13 = load { ptr, i64, i64 }, ptr %a8 - %t14 = call i1 @finch.gen.isBuiltin({ ptr, i64, i64 } %t13) - br label %logic.rend8106 -logic.rend8106: - br label %logic.end8105 -logic.end8105: - %t15 = phi i1 [ false, %logic.from8103 ], [ %t14, %logic.rend8106 ] - br i1 %t15, label %then8107, label %endif8109 -then8107: - %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 { ptr, i64, i64 } %t16, ptr %a19 - call void @finch.drop.arr_S_docs_Doc(ptr %a19) - store %S.docs.Doc %t18, ptr %a20 - %t21 = getelementptr inbounds %S.docs.Doc, ptr %a20, i32 0, i32 0 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = icmp sgt i64 %t23, 0 - br i1 %t24, label %then8113, label %endif8115 -then8113: - %t25 = load ptr, ptr %a1 - %t26 = load %S.ast.Node, ptr %a2 - %t27 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t28 = load i64, ptr %t27 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = load %S.docs.Doc, ptr %a20 - %t32 = call { ptr, i64, i64 } @finch.docs.hover(%S.docs.Doc %t31) - call void @finch.gen.noteRef(ptr %t25, %S.ast.Node %t26, i64 %t28, i64 %t30, { ptr, i64, i64 } %t32, { ptr, i64, i64 } { ptr @.str.5189, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t32, ptr %a33 - call void @finch_str_drop(ptr %a33) - br label %endif8115 -endif8115: - call void @finch.drop.S_docs_Doc(ptr %a20) - br label %endif8109 -endif8109: - %t34 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t34, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.5190, i64 5, i64 0 }, ptr %a36 - %t37 = call i32 @finch_str_eq(ptr %a35, ptr %a36) - %t38 = icmp ne i32 %t37, 0 - br i1 %t38, label %then8116, label %endif8118 -then8116: - %t39 = load ptr, ptr %a1 - %t40 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t39, %S.ast.Node %t40, { ptr, i64, i64 } { ptr @.str.5191, i64 86, i64 0 }) - br label %endif8118 -endif8118: - %t41 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t41, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5192, i64 5, i64 0 }, ptr %a43 - %t44 = call i32 @finch_str_eq(ptr %a42, ptr %a43) - %t45 = icmp ne i32 %t44, 0 - br i1 %t45, label %then8119, label %endif8121 -then8119: - %t46 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load i64, ptr %t47 - store i64 0, ptr %a49 - br label %for.cond8122 -for.cond8122: - %t50 = load i64, ptr %a49 - %t51 = icmp slt i64 %t50, %t48 - br i1 %t51, label %for.body8123, label %for.end8125 -for.body8123: - %t52 = load ptr, ptr %a1 - %t53 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t54 = load i64, ptr %a49 - %t55 = load { ptr, i64, i64 }, ptr %t53 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range8126, label %inrange8127 -range8126: - call void @finch_panic_index(ptr @.str.5193, i64 4846, i64 %t54, i64 %t56) - unreachable -inrange8127: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds %S.ast.Node, ptr %t58, i64 %t54 - %t60 = load %S.ast.Node, ptr %t59 - %t61 = call %S.gen.Val @finch.gen.expr(ptr %t52, %S.ast.Node %t60) - store %S.gen.Val %t61, ptr %a62 - %t63 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t64 = getelementptr inbounds %S.ast.Type, ptr %t63, i32 0, i32 0 - %t65 = load { ptr, i64, i64 }, ptr %t64 - store { ptr, i64, i64 } %t65, ptr %a66 - store { ptr, i64, i64 } { ptr @.str.5194, i64 4, i64 0 }, ptr %a67 - %t68 = call i32 @finch_str_eq(ptr %a66, ptr %a67) - %t69 = icmp ne i32 %t68, 0 - br i1 %t69, label %then8128, label %endif8130 -then8128: - %t70 = load ptr, ptr %a1 - %t71 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t72 = load i64, ptr %a49 - %t73 = load { ptr, i64, i64 }, ptr %t71 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range8131, label %inrange8132 -range8131: - call void @finch_panic_index(ptr @.str.5195, i64 4848, i64 %t72, i64 %t74) - unreachable -inrange8132: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 %t72 - %t78 = load %S.ast.Node, ptr %t77 - call void @finch.gen.fail(ptr %t70, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5196, i64 53, i64 0 }) - br label %endif8130 -endif8130: - %t79 = load i64, ptr %a49 - %t80 = icmp sgt i64 %t79, 0 - br i1 %t80, label %then8133, label %endif8135 -then8133: - %t81 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t81, { ptr, i64, i64 } { ptr @.str.5197, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5198, i64 0, i64 0 }) - br label %endif8135 -endif8135: - %t82 = load ptr, ptr %a1 - %t83 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 0 - %t84 = load { ptr, i64, i64 }, ptr %t83 - %t85 = getelementptr inbounds %S.gen.Val, ptr %a62, i32 0, i32 1 - %t86 = load %S.ast.Type, ptr %t85 - call void @finch.gen.emitPrint(ptr %t82, { ptr, i64, i64 } %t84, %S.ast.Type %t86, i1 false) - %t87 = load ptr, ptr %a1 - %t88 = load %S.gen.Val, ptr %a62 - call void @finch.gen.release(ptr %t87, %S.gen.Val %t88) - call void @finch.drop.S_gen_Val(ptr %a62) - br label %for.step8124 -for.step8124: - %t89 = load i64, ptr %a49 - %t90 = add i64 %t89, 1 - store i64 %t90, ptr %a49 - br label %for.cond8122 -for.end8125: - %t91 = load ptr, ptr %a1 - call void @finch.gen.printf(ptr %t91, { ptr, i64, i64 } { ptr @.str.5199, i64 1, i64 0 }, { ptr, i64, i64 } { ptr @.str.5200, i64 0, i64 0 }) - %t92 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5201, i64 4, i64 0 }) - %t93 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t92, 1 - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t93 -endif8121: - %t94 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t94, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5202, i64 4, i64 0 }, ptr %a96 - %t97 = call i32 @finch_str_eq(ptr %a95, ptr %a96) - %t98 = icmp ne i32 %t97, 0 - br i1 %t98, label %then8136, label %endif8138 -then8136: - %t99 = load ptr, ptr %a1 - %t100 = load %S.ast.Node, ptr %a2 - %t101 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t99, %S.ast.Node %t100, i64 0, i64 1, { ptr, i64, i64 } %t101) - %t102 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t103 = load { ptr, i64, i64 }, ptr %t102 - %t104 = extractvalue { ptr, i64, i64 } %t103, 1 - %t105 = icmp uge i64 0, %t104 - br i1 %t105, label %range8139, label %inrange8140 -range8139: - call void @finch_panic_index(ptr @.str.5203, i64 4861, i64 0, i64 %t104) - unreachable -inrange8140: - %t106 = extractvalue { ptr, i64, i64 } %t103, 0 - %t107 = getelementptr inbounds %S.ast.Node, ptr %t106, i64 0 - %t108 = load %S.ast.Node, ptr %t107 - store %S.ast.Node %t108, ptr %a109 - call void @finch.copy.S_ast_Node(ptr %a110, ptr %a109) - %t111 = load %S.ast.Node, ptr %a110 - store %S.ast.Node %t111, ptr %a112 - %t113 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t114 = load { ptr, i64, i64 }, ptr %t113 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.5204, i64 3, i64 0 }, ptr %a116 - %t117 = call i32 @finch_str_eq(ptr %a115, ptr %a116) - %t118 = icmp ne i32 %t117, 0 - br label %logic.from8141 -logic.from8141: - br i1 %t118, label %logic.rhs8142, label %logic.end8143 -logic.rhs8142: - %t119 = load ptr, ptr %a1 - %t120 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %t120 - %t122 = call i64 @finch.gen.lookup(ptr %t119, { ptr, i64, i64 } %t121) - %t123 = icmp slt i64 %t122, 0 - br label %logic.rend8144 -logic.rend8144: - br label %logic.end8143 -logic.end8143: - %t124 = phi i1 [ false, %logic.from8141 ], [ %t123, %logic.rend8144 ] - br i1 %t124, label %then8145, label %endif8147 -then8145: - %t125 = load ptr, ptr %a1 - %t126 = load ptr, ptr %a1 - %t127 = icmp eq ptr %t126, null - br i1 %t127, label %panic8148, label %ok8149 -panic8148: - call void @finch_panic(ptr @.str.5205, i64 4863, ptr @.str.5206) - unreachable -ok8149: - %t128 = getelementptr inbounds %S.gen.Gen, ptr %t126, i32 0, i32 14 - %t129 = load { ptr, i64, i64 }, ptr %t128 - %t130 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 1 - %t131 = load { ptr, i64, i64 }, ptr %t130 - %t132 = call i64 @finch.gen.findFn(ptr %t125, { ptr, i64, i64 } %t129, { ptr, i64, i64 } %t131) - store i64 %t132, ptr %a133 - %t134 = load i64, ptr %a133 - %t135 = icmp sge i64 %t134, 0 - br i1 %t135, label %then8150, label %endif8152 -then8150: - %t136 = load ptr, ptr %a1 - %t137 = load i64, ptr %a133 - %t138 = load %S.ast.Node, ptr %a112 - %t139 = call { ptr, i64, i64 } @finch.gen.cThunk(ptr %t136, i64 %t137, %S.ast.Node %t138) - %t140 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t139, 0 - %t141 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5207, i64 3, i64 0 }) - %t142 = insertvalue %S.gen.Val %t140, %S.ast.Type %t141, 1 - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t142 -endif8152: - br label %endif8147 -endif8147: - %t143 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t144 = load { ptr, i64, i64 }, ptr %t143 - store { ptr, i64, i64 } %t144, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5208, i64 3, i64 0 }, ptr %a146 - %t147 = call i32 @finch_str_eq(ptr %a145, ptr %a146) - %t148 = icmp eq i32 %t147, 0 - br label %logic.from8153 -logic.from8153: - br i1 %t148, label %logic.rhs8154, label %logic.end8155 -logic.rhs8154: - %t149 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.5209, i64 6, i64 0 }, ptr %a152 - %t153 = call i32 @finch_str_eq(ptr %a151, ptr %a152) - %t154 = icmp eq i32 %t153, 0 - br label %logic.rend8156 -logic.rend8156: - br label %logic.end8155 -logic.end8155: - %t155 = phi i1 [ false, %logic.from8153 ], [ %t154, %logic.rend8156 ] - br label %logic.from8157 -logic.from8157: - br i1 %t155, label %logic.rhs8158, label %logic.end8159 -logic.rhs8158: - %t156 = getelementptr inbounds %S.ast.Node, ptr %a112, i32 0, i32 0 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.5210, i64 5, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_eq(ptr %a158, ptr %a159) - %t161 = icmp eq i32 %t160, 0 - br label %logic.rend8160 -logic.rend8160: - br label %logic.end8159 -logic.end8159: - %t162 = phi i1 [ false, %logic.from8157 ], [ %t161, %logic.rend8160 ] - br i1 %t162, label %then8161, label %endif8163 -then8161: - %t163 = load ptr, ptr %a1 - %t164 = load %S.ast.Node, ptr %a112 - call void @finch.gen.fail(ptr %t163, %S.ast.Node %t164, { ptr, i64, i64 } { ptr @.str.5211, i64 63, i64 0 }) - br label %endif8163 -endif8163: - %t165 = load ptr, ptr %a1 - %t166 = load %S.ast.Node, ptr %a112 - %t167 = call %S.gen.Place @finch.gen.place(ptr %t165, %S.ast.Node %t166, i1 true) - store %S.gen.Place %t167, ptr %a168 - %t169 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %t169 - store { ptr, i64, i64 } %t170, ptr %a171 - call void @finch_str_copy(ptr %a172, ptr %a171) - %t173 = load { ptr, i64, i64 }, ptr %a172 - %t174 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t173, 0 - %t175 = getelementptr inbounds %S.gen.Place, ptr %a168, i32 0, i32 1 - %t176 = load %S.ast.Type, ptr %t175 - %t177 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t176) - %t178 = insertvalue %S.gen.Val %t174, %S.ast.Type %t177, 1 - call void @finch.drop.S_gen_Place(ptr %a168) - call void @finch.drop.S_ast_Node(ptr %a112) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t178 -endif8138: - %t179 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t179, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5212, i64 3, i64 0 }, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then8164, label %endif8166 -then8164: - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Node, ptr %a2 - %t186 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t184, %S.ast.Node %t185, i64 0, i64 1, { ptr, i64, i64 } %t186) - %t187 = load ptr, ptr %a1 - %t188 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t189 = load { ptr, i64, i64 }, ptr %t188 - %t190 = extractvalue { ptr, i64, i64 } %t189, 1 - %t191 = icmp uge i64 0, %t190 - br i1 %t191, label %range8167, label %inrange8168 -range8167: - call void @finch_panic_index(ptr @.str.5213, i64 4876, i64 0, i64 %t190) - unreachable -inrange8168: - %t192 = extractvalue { ptr, i64, i64 } %t189, 0 - %t193 = getelementptr inbounds %S.ast.Node, ptr %t192, i64 0 - %t194 = load %S.ast.Node, ptr %t193 - %t195 = call %S.gen.Val @finch.gen.expr(ptr %t187, %S.ast.Node %t194) - store %S.gen.Val %t195, ptr %a196 - %t197 = load ptr, ptr %a1 - %t198 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t197) - store { ptr, i64, i64 } %t198, ptr %a199 - %t200 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t201 = getelementptr inbounds %S.ast.Type, ptr %t200, i32 0, i32 0 - %t202 = load { ptr, i64, i64 }, ptr %t201 - store { ptr, i64, i64 } %t202, ptr %a203 - call void @finch_str_copy(ptr %a204, ptr %a203) - %t205 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t205, ptr %a206 - store i1 false, ptr %a207 - %t208 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.5214, i64 3, i64 0 }, ptr %a210 - %t211 = call i32 @finch_str_eq(ptr %a209, ptr %a210) - %t212 = icmp ne i32 %t211, 0 - br i1 %t212, label %then8169, label %else8170 -then8169: - %t213 = load ptr, ptr %a1 - %t214 = load %S.gen.Val, ptr %a196 - %t215 = call { ptr, i64, i64 } @finch.gen.own(ptr %t213, %S.gen.Val %t214) - %t216 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t215, 0 - %t217 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t218 = load %S.ast.Type, ptr %t217 - store %S.ast.Type %t218, ptr %a219 - call void @finch.copy.S_ast_Type(ptr %a220, ptr %a219) - %t221 = load %S.ast.Type, ptr %a220 - %t222 = insertvalue %S.gen.Val %t216, %S.ast.Type %t221, 1 - %t223 = insertvalue %S.gen.Val %t222, i1 true, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t223 -else8170: - %t224 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t225 = load %S.ast.Type, ptr %t224 - %t226 = call i1 @finch.gen.isSigned(%S.ast.Type %t225) - br i1 %t226, label %then8172, label %else8173 -then8172: - %t227 = load ptr, ptr %a1 - %t228 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5215, i64 34, i64 0 }, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t232, ptr %a234 - store { ptr, i64, i64 } { ptr @.str.5216, i64 6, i64 0 }, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - store { ptr, i64, i64 } %t232, ptr %a236 - call void @finch_str_drop(ptr %a236) - %t237 = load { ptr, i64, i64 }, ptr %a233 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t242 = load %S.ast.Type, ptr %t241 - %t243 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5217, i64 3, i64 0 }) - %t244 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t238, { ptr, i64, i64 } %t240, %S.ast.Type %t242, %S.ast.Type %t243) - store %S.ast.Type %t243, ptr %a245 - call void @finch.drop.S_ast_Type(ptr %a245) - store { ptr, i64, i64 } %t237, ptr %a247 - store { ptr, i64, i64 } %t244, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t237, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t244, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.5218, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.gen.emit(ptr %t227, { ptr, i64, i64 } %t256) - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch_str_drop(ptr %a257) - br label %endif8174 -else8173: - %t258 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t259 = load %S.ast.Type, ptr %t258 - %t260 = call i1 @finch.gen.isUnsigned(%S.ast.Type %t259) - br i1 %t260, label %then8175, label %else8176 -then8175: - %t261 = load ptr, ptr %a1 - %t262 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5219, i64 35, i64 0 }, ptr %a264 - store { ptr, i64, i64 } %t262, ptr %a265 - call void @finch_str_concat(ptr %a263, ptr %a264, ptr %a265) - %t266 = load { ptr, i64, i64 }, ptr %a263 - store { ptr, i64, i64 } %t266, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5220, i64 6, i64 0 }, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t266, ptr %a270 - call void @finch_str_drop(ptr %a270) - %t271 = load { ptr, i64, i64 }, ptr %a267 - %t272 = load ptr, ptr %a1 - %t273 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t274 = load { ptr, i64, i64 }, ptr %t273 - %t275 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t276 = load %S.ast.Type, ptr %t275 - %t277 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5221, i64 3, i64 0 }) - %t278 = call { ptr, i64, i64 } @finch.gen.intCast(ptr %t272, { ptr, i64, i64 } %t274, %S.ast.Type %t276, %S.ast.Type %t277) - store %S.ast.Type %t277, ptr %a279 - call void @finch.drop.S_ast_Type(ptr %a279) - store { ptr, i64, i64 } %t271, ptr %a281 - store { ptr, i64, i64 } %t278, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t271, ptr %a283 - call void @finch_str_drop(ptr %a283) - store { ptr, i64, i64 } %t278, ptr %a284 - call void @finch_str_drop(ptr %a284) - %t285 = load { ptr, i64, i64 }, ptr %a280 - store { ptr, i64, i64 } %t285, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5222, i64 1, i64 0 }, ptr %a288 - call void @finch_str_concat(ptr %a286, ptr %a287, ptr %a288) - store { ptr, i64, i64 } %t285, ptr %a289 - call void @finch_str_drop(ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a286 - call void @finch.gen.emit(ptr %t261, { ptr, i64, i64 } %t290) - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif8177 -else8176: - %t292 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t293 = load %S.ast.Type, ptr %t292 - %t294 = call i1 @finch.gen.isFloat(%S.ast.Type %t293) - br i1 %t294, label %then8178, label %else8179 -then8178: - %t295 = load ptr, ptr %a1 - %t296 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5223, i64 36, i64 0 }, ptr %a298 - store { ptr, i64, i64 } %t296, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } %t300, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.5224, i64 9, i64 0 }, ptr %a303 - call void @finch_str_concat(ptr %a301, ptr %a302, ptr %a303) - store { ptr, i64, i64 } %t300, ptr %a304 - call void @finch_str_drop(ptr %a304) - %t305 = load { ptr, i64, i64 }, ptr %a301 - %t306 = load ptr, ptr %a1 - %t307 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t308 = load { ptr, i64, i64 }, ptr %t307 - %t309 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t310 = load %S.ast.Type, ptr %t309 - %t311 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5225, i64 5, i64 0 }) - %t312 = call { ptr, i64, i64 } @finch.gen.floatCast(ptr %t306, { ptr, i64, i64 } %t308, %S.ast.Type %t310, %S.ast.Type %t311) - store %S.ast.Type %t311, ptr %a313 - call void @finch.drop.S_ast_Type(ptr %a313) - store { ptr, i64, i64 } %t305, ptr %a315 - store { ptr, i64, i64 } %t312, ptr %a316 - call void @finch_str_concat(ptr %a314, ptr %a315, ptr %a316) - store { ptr, i64, i64 } %t305, ptr %a317 - call void @finch_str_drop(ptr %a317) - store { ptr, i64, i64 } %t312, ptr %a318 - call void @finch_str_drop(ptr %a318) - %t319 = load { ptr, i64, i64 }, ptr %a314 - store { ptr, i64, i64 } %t319, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.5226, i64 1, i64 0 }, ptr %a322 - call void @finch_str_concat(ptr %a320, ptr %a321, ptr %a322) - store { ptr, i64, i64 } %t319, ptr %a323 - call void @finch_str_drop(ptr %a323) - %t324 = load { ptr, i64, i64 }, ptr %a320 - call void @finch.gen.emit(ptr %t295, { ptr, i64, i64 } %t324) - store { ptr, i64, i64 } %t324, ptr %a325 - call void @finch_str_drop(ptr %a325) - br label %endif8180 -else8179: - %t326 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t326, ptr %a327 - store { ptr, i64, i64 } { ptr @.str.5227, i64 4, i64 0 }, ptr %a328 - %t329 = call i32 @finch_str_eq(ptr %a327, ptr %a328) - %t330 = icmp ne i32 %t329, 0 - br i1 %t330, label %then8181, label %else8182 -then8181: - %t331 = load ptr, ptr %a1 - %t332 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5228, i64 35, i64 0 }, ptr %a334 - store { ptr, i64, i64 } %t332, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - %t336 = load { ptr, i64, i64 }, ptr %a333 - store { ptr, i64, i64 } %t336, ptr %a338 - store { ptr, i64, i64 } { ptr @.str.5229, i64 13, i64 0 }, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t336, ptr %a340 - call void @finch_str_drop(ptr %a340) - %t341 = load { ptr, i64, i64 }, ptr %a337 - %t342 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t343 = load { ptr, i64, i64 }, ptr %t342 - store { ptr, i64, i64 } %t341, ptr %a345 - store { ptr, i64, i64 } %t343, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t341, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - store { ptr, i64, i64 } %t348, ptr %a350 - store { ptr, i64, i64 } { ptr @.str.5230, i64 1, i64 0 }, ptr %a351 - call void @finch_str_concat(ptr %a349, ptr %a350, ptr %a351) - store { ptr, i64, i64 } %t348, ptr %a352 - call void @finch_str_drop(ptr %a352) - %t353 = load { ptr, i64, i64 }, ptr %a349 - call void @finch.gen.emit(ptr %t331, { ptr, i64, i64 } %t353) - store { ptr, i64, i64 } %t353, ptr %a354 - call void @finch_str_drop(ptr %a354) - br label %endif8183 -else8182: - %t355 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t355, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5231, i64 4, i64 0 }, ptr %a357 - %t358 = call i32 @finch_str_eq(ptr %a356, ptr %a357) - %t359 = icmp ne i32 %t358, 0 - br i1 %t359, label %then8184, label %else8185 -then8184: - %t360 = load ptr, ptr %a1 - %t361 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t362 = load { ptr, i64, i64 }, ptr %t361 - store { ptr, i64, i64 } { ptr @.str.5232, i64 8, i64 0 }, ptr %a364 - store { ptr, i64, i64 } %t362, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - %t366 = load { ptr, i64, i64 }, ptr %a363 - store { ptr, i64, i64 } %t366, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.5233, i64 7, i64 0 }, ptr %a369 - call void @finch_str_concat(ptr %a367, ptr %a368, ptr %a369) - store { ptr, i64, i64 } %t366, ptr %a370 - call void @finch_str_drop(ptr %a370) - %t371 = load { ptr, i64, i64 }, ptr %a367 - %t372 = call { ptr, i64, i64 } @finch.gen.op(ptr %t360, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a373 - call void @finch_str_drop(ptr %a373) - store { ptr, i64, i64 } %t372, ptr %a374 - %t375 = load ptr, ptr %a1 - %t376 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5234, i64 35, i64 0 }, ptr %a378 - store { ptr, i64, i64 } %t376, ptr %a379 - call void @finch_str_concat(ptr %a377, ptr %a378, ptr %a379) - %t380 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t380, ptr %a382 - store { ptr, i64, i64 } { ptr @.str.5235, i64 6, i64 0 }, ptr %a383 - call void @finch_str_concat(ptr %a381, ptr %a382, ptr %a383) - store { ptr, i64, i64 } %t380, ptr %a384 - call void @finch_str_drop(ptr %a384) - %t385 = load { ptr, i64, i64 }, ptr %a381 - %t386 = load { ptr, i64, i64 }, ptr %a374 - store { ptr, i64, i64 } %t385, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - store { ptr, i64, i64 } %t385, ptr %a390 - call void @finch_str_drop(ptr %a390) - %t391 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t391, ptr %a393 - store { ptr, i64, i64 } { ptr @.str.5236, i64 1, i64 0 }, ptr %a394 - call void @finch_str_concat(ptr %a392, ptr %a393, ptr %a394) - store { ptr, i64, i64 } %t391, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a392 - call void @finch.gen.emit(ptr %t375, { ptr, i64, i64 } %t396) - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - call void @finch_str_drop(ptr %a374) - br label %endif8186 -else8185: - %t398 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t398, ptr %a399 - store { ptr, i64, i64 } { ptr @.str.5237, i64 3, i64 0 }, ptr %a400 - %t401 = call i32 @finch_str_eq(ptr %a399, ptr %a400) - %t402 = icmp ne i32 %t401, 0 - br i1 %t402, label %then8187, label %else8188 -then8187: - %t403 = load ptr, ptr %a1 - %t404 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t403, { ptr, i64, i64 } { ptr @.str.5238, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5239, i64 15, i64 0 }, { ptr, i64, i64 } %t404) - %t405 = load ptr, ptr %a1 - %t406 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5240, i64 32, i64 0 }, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5241, i64 6, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - %t416 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t417 = load { ptr, i64, i64 }, ptr %t416 - store { ptr, i64, i64 } %t415, ptr %a419 - store { ptr, i64, i64 } %t417, ptr %a420 - call void @finch_str_concat(ptr %a418, ptr %a419, ptr %a420) - store { ptr, i64, i64 } %t415, ptr %a421 - call void @finch_str_drop(ptr %a421) - %t422 = load { ptr, i64, i64 }, ptr %a418 - store { ptr, i64, i64 } %t422, ptr %a424 - store { ptr, i64, i64 } { ptr @.str.5242, i64 1, i64 0 }, ptr %a425 - call void @finch_str_concat(ptr %a423, ptr %a424, ptr %a425) - store { ptr, i64, i64 } %t422, ptr %a426 - call void @finch_str_drop(ptr %a426) - %t427 = load { ptr, i64, i64 }, ptr %a423 - call void @finch.gen.emit(ptr %t405, { ptr, i64, i64 } %t427) - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_drop(ptr %a428) - store i1 true, ptr %a207 - br label %endif8189 -else8188: - %t429 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t429, ptr %a430 - store { ptr, i64, i64 } { ptr @.str.5243, i64 5, i64 0 }, ptr %a431 - %t432 = call i32 @finch_str_eq(ptr %a430, ptr %a431) - %t433 = icmp ne i32 %t432, 0 - br label %logic.from8190 -logic.from8190: - br i1 %t433, label %logic.rhs8191, label %logic.end8192 -logic.rhs8191: - %t434 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t435 = getelementptr inbounds %S.ast.Type, ptr %t434, i32 0, i32 1 - %t436 = load { ptr, i64, i64 }, ptr %t435 - %t437 = extractvalue { ptr, i64, i64 } %t436, 1 - %t438 = icmp uge i64 0, %t437 - br i1 %t438, label %range8193, label %inrange8194 -range8193: - call void @finch_panic_index(ptr @.str.5244, i64 4898, i64 0, i64 %t437) - unreachable -inrange8194: - %t439 = extractvalue { ptr, i64, i64 } %t436, 0 - %t440 = getelementptr inbounds %S.ast.Type, ptr %t439, i64 0 - %t441 = getelementptr inbounds %S.ast.Type, ptr %t440, i32 0, i32 0 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } { ptr @.str.5245, i64 2, i64 0 }, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br label %logic.from8195 -logic.from8195: - br i1 %t446, label %logic.end8197, label %logic.rhs8196 -logic.rhs8196: - %t447 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t448 = getelementptr inbounds %S.ast.Type, ptr %t447, i32 0, i32 1 - %t449 = load { ptr, i64, i64 }, ptr %t448 - %t450 = extractvalue { ptr, i64, i64 } %t449, 1 - %t451 = icmp uge i64 0, %t450 - br i1 %t451, label %range8198, label %inrange8199 -range8198: - call void @finch_panic_index(ptr @.str.5246, i64 4898, i64 0, i64 %t450) - unreachable -inrange8199: - %t452 = extractvalue { ptr, i64, i64 } %t449, 0 - %t453 = getelementptr inbounds %S.ast.Type, ptr %t452, i64 0 - %t454 = getelementptr inbounds %S.ast.Type, ptr %t453, i32 0, i32 0 - %t455 = load { ptr, i64, i64 }, ptr %t454 - store { ptr, i64, i64 } %t455, ptr %a456 - store { ptr, i64, i64 } { ptr @.str.5247, i64 4, i64 0 }, ptr %a457 - %t458 = call i32 @finch_str_eq(ptr %a456, ptr %a457) - %t459 = icmp ne i32 %t458, 0 - br label %logic.rend8200 -logic.rend8200: - br label %logic.end8197 -logic.end8197: - %t460 = phi i1 [ true, %logic.from8195 ], [ %t459, %logic.rend8200 ] - br label %logic.rend8201 -logic.rend8201: - br label %logic.end8192 -logic.end8192: - %t461 = phi i1 [ false, %logic.from8190 ], [ %t460, %logic.rend8201 ] - br i1 %t461, label %then8202, label %else8203 -then8202: - %t462 = load ptr, ptr %a1 - %t463 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t462, { ptr, i64, i64 } { ptr @.str.5248, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5249, i64 15, i64 0 }, { ptr, i64, i64 } %t463) - %t464 = load ptr, ptr %a1 - %t465 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } { ptr @.str.5250, i64 36, i64 0 }, ptr %a467 - store { ptr, i64, i64 } %t465, ptr %a468 - call void @finch_str_concat(ptr %a466, ptr %a467, ptr %a468) - %t469 = load { ptr, i64, i64 }, ptr %a466 - store { ptr, i64, i64 } %t469, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.5251, i64 6, i64 0 }, ptr %a472 - call void @finch_str_concat(ptr %a470, ptr %a471, ptr %a472) - store { ptr, i64, i64 } %t469, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a470 - %t475 = load ptr, ptr %a1 - %t476 = load %S.gen.Val, ptr %a196 - %t477 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t475, %S.gen.Val %t476) - store { ptr, i64, i64 } %t474, ptr %a479 - store { ptr, i64, i64 } %t477, ptr %a480 - call void @finch_str_concat(ptr %a478, ptr %a479, ptr %a480) - store { ptr, i64, i64 } %t474, ptr %a481 - call void @finch_str_drop(ptr %a481) - store { ptr, i64, i64 } %t477, ptr %a482 - call void @finch_str_drop(ptr %a482) - %t483 = load { ptr, i64, i64 }, ptr %a478 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5252, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - store { ptr, i64, i64 } %t483, ptr %a487 - call void @finch_str_drop(ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a484 - call void @finch.gen.emit(ptr %t464, { ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t488, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load ptr, ptr %a1 - %t491 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t490, %S.gen.Val %t491) - br label %endif8204 -else8203: - %t492 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t492, ptr %a493 - store { ptr, i64, i64 } { ptr @.str.5253, i64 4, i64 0 }, ptr %a494 - %t495 = call i32 @finch_str_eq(ptr %a493, ptr %a494) - %t496 = icmp ne i32 %t495, 0 - br label %logic.from8205 -logic.from8205: - br i1 %t496, label %logic.end8207, label %logic.rhs8206 -logic.rhs8206: - %t497 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t497, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5254, i64 4, i64 0 }, ptr %a499 - %t500 = call i32 @finch_str_eq(ptr %a498, ptr %a499) - %t501 = icmp ne i32 %t500, 0 - br label %logic.rend8208 -logic.rend8208: - br label %logic.end8207 -logic.end8207: - %t502 = phi i1 [ true, %logic.from8205 ], [ %t501, %logic.rend8208 ] - br label %logic.from8209 -logic.from8209: - br i1 %t502, label %logic.end8211, label %logic.rhs8210 -logic.rhs8210: - %t503 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t503, ptr %a504 - store { ptr, i64, i64 } { ptr @.str.5255, i64 5, i64 0 }, ptr %a505 - %t506 = call i32 @finch_str_eq(ptr %a504, ptr %a505) - %t507 = icmp ne i32 %t506, 0 - br label %logic.rend8212 -logic.rend8212: - br label %logic.end8211 -logic.end8211: - %t508 = phi i1 [ true, %logic.from8209 ], [ %t507, %logic.rend8212 ] - br label %logic.from8213 -logic.from8213: - br i1 %t508, label %logic.end8215, label %logic.rhs8214 -logic.rhs8214: - %t509 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t509, ptr %a510 - store { ptr, i64, i64 } { ptr @.str.5256, i64 3, i64 0 }, ptr %a511 - %t512 = call i32 @finch_str_eq(ptr %a510, ptr %a511) - %t513 = icmp ne i32 %t512, 0 - br label %logic.rend8216 -logic.rend8216: - br label %logic.end8215 -logic.end8215: - %t514 = phi i1 [ true, %logic.from8213 ], [ %t513, %logic.rend8216 ] - br label %logic.from8217 -logic.from8217: - br i1 %t514, label %logic.end8219, label %logic.rhs8218 -logic.rhs8218: - %t515 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t515, ptr %a516 - store { ptr, i64, i64 } { ptr @.str.5257, i64 6, i64 0 }, ptr %a517 - %t518 = call i32 @finch_str_eq(ptr %a516, ptr %a517) - %t519 = icmp ne i32 %t518, 0 - br label %logic.rend8220 -logic.rend8220: - br label %logic.end8219 -logic.end8219: - %t520 = phi i1 [ true, %logic.from8217 ], [ %t519, %logic.rend8220 ] - br label %logic.from8221 -logic.from8221: - br i1 %t520, label %logic.end8223, label %logic.rhs8222 -logic.rhs8222: - %t521 = load { ptr, i64, i64 }, ptr %a206 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5258, i64 4, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8224 -logic.rend8224: - br label %logic.end8223 -logic.end8223: - %t526 = phi i1 [ true, %logic.from8221 ], [ %t525, %logic.rend8224 ] - br i1 %t526, label %then8225, label %else8226 -then8225: - %t527 = load ptr, ptr %a1 - %t528 = load { ptr, i64, i64 }, ptr %a199 - call void @finch.gen.store(ptr %t527, { ptr, i64, i64 } { ptr @.str.5259, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5260, i64 15, i64 0 }, { ptr, i64, i64 } %t528) - %t529 = load ptr, ptr %a1 - %t530 = load { ptr, i64, i64 }, ptr %a199 - %t531 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 0 - %t532 = load { ptr, i64, i64 }, ptr %t531 - %t533 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t534 = load %S.ast.Type, ptr %t533 - call void @finch.gen.emitFormat(ptr %t529, { ptr, i64, i64 } %t530, { ptr, i64, i64 } %t532, %S.ast.Type %t534, i1 false) - %t535 = load ptr, ptr %a1 - %t536 = load %S.gen.Val, ptr %a196 - call void @finch.gen.release(ptr %t535, %S.gen.Val %t536) - br label %endif8227 -else8226: - %t537 = load ptr, ptr %a1 - %t538 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = extractvalue { ptr, i64, i64 } %t539, 1 - %t541 = icmp uge i64 0, %t540 - br i1 %t541, label %range8228, label %inrange8229 -range8228: - call void @finch_panic_index(ptr @.str.5261, i64 4908, i64 0, i64 %t540) - unreachable -inrange8229: - %t542 = extractvalue { ptr, i64, i64 } %t539, 0 - %t543 = getelementptr inbounds %S.ast.Node, ptr %t542, i64 0 - %t544 = load %S.ast.Node, ptr %t543 - %t545 = getelementptr inbounds %S.gen.Val, ptr %a196, i32 0, i32 1 - %t546 = load %S.ast.Type, ptr %t545 - %t547 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t546) - store { ptr, i64, i64 } { ptr @.str.5262, i64 11, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - store { ptr, i64, i64 } %t547, ptr %a551 - call void @finch_str_drop(ptr %a551) - %t552 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t552, ptr %a554 - store { ptr, i64, i64 } { ptr @.str.5263, i64 9, i64 0 }, ptr %a555 - call void @finch_str_concat(ptr %a553, ptr %a554, ptr %a555) - store { ptr, i64, i64 } %t552, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = load { ptr, i64, i64 }, ptr %a553 - call void @finch.gen.fail(ptr %t537, %S.ast.Node %t544, { ptr, i64, i64 } %t557) - store { ptr, i64, i64 } %t557, ptr %a558 - call void @finch_str_drop(ptr %a558) - br label %endif8227 -endif8227: - br label %endif8204 -endif8204: - br label %endif8189 -endif8189: - br label %endif8186 -endif8186: - br label %endif8183 -endif8183: - br label %endif8180 -endif8180: - br label %endif8177 -endif8177: - br label %endif8174 -endif8174: - br label %endif8171 -endif8171: - %t559 = load ptr, ptr %a1 - %t560 = load { ptr, i64, i64 }, ptr %a199 - %t561 = call { ptr, i64, i64 } @finch.gen.load(ptr %t559, { ptr, i64, i64 } { ptr @.str.5264, i64 17, i64 0 }, { ptr, i64, i64 } %t560) - %t562 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t561, 0 - %t563 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5265, i64 3, i64 0 }) - %t564 = insertvalue %S.gen.Val %t562, %S.ast.Type %t563, 1 - %t565 = load i1, ptr %a207 - %t566 = xor i1 %t565, true - %t567 = insertvalue %S.gen.Val %t564, i1 %t566, 2 - call void @finch_str_drop(ptr %a206) - call void @finch_str_drop(ptr %a199) - call void @finch.drop.S_gen_Val(ptr %a196) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t567 -endif8166: - %t568 = load { ptr, i64, i64 }, ptr %a8 - %t569 = call { ptr, i64, i64 } @finch.gen.numType({ ptr, i64, i64 } %t568) - store { ptr, i64, i64 } %t569, ptr %a570 - %t571 = getelementptr inbounds { ptr, i64, i64 }, ptr %a570, i32 0, i32 1 - %t572 = load i64, ptr %t571 - %t573 = icmp sgt i64 %t572, 0 - br i1 %t573, label %then8230, label %endif8232 -then8230: - %t574 = load ptr, ptr %a1 - %t575 = load %S.ast.Node, ptr %a2 - %t576 = load { ptr, i64, i64 }, ptr %a570 - %t577 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } %t576) - %t578 = call %S.gen.Val @finch.gen.convert(ptr %t574, %S.ast.Node %t575, %S.ast.Type %t577) - store %S.ast.Type %t577, ptr %a579 - call void @finch.drop.S_ast_Type(ptr %a579) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t578 -endif8232: - %t580 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t580, ptr %a581 - store { ptr, i64, i64 } { ptr @.str.5266, i64 9, i64 0 }, ptr %a582 - %t583 = call i32 @finch_str_eq(ptr %a581, ptr %a582) - %t584 = icmp ne i32 %t583, 0 - br label %logic.from8233 -logic.from8233: - br i1 %t584, label %logic.end8235, label %logic.rhs8234 -logic.rhs8234: - %t585 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t585, ptr %a586 - store { ptr, i64, i64 } { ptr @.str.5267, i64 11, i64 0 }, ptr %a587 - %t588 = call i32 @finch_str_eq(ptr %a586, ptr %a587) - %t589 = icmp ne i32 %t588, 0 - br label %logic.rend8236 -logic.rend8236: - br label %logic.end8235 -logic.end8235: - %t590 = phi i1 [ true, %logic.from8233 ], [ %t589, %logic.rend8236 ] - br i1 %t590, label %then8237, label %endif8239 -then8237: - %t591 = load ptr, ptr %a1 - %t592 = load %S.ast.Node, ptr %a2 - %t593 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t591, %S.ast.Node %t592, i64 0, i64 1, { ptr, i64, i64 } %t593) - %t594 = load ptr, ptr %a1 - %t595 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t596 = load { ptr, i64, i64 }, ptr %t595 - %t597 = extractvalue { ptr, i64, i64 } %t596, 1 - %t598 = icmp uge i64 0, %t597 - br i1 %t598, label %range8240, label %inrange8241 -range8240: - call void @finch_panic_index(ptr @.str.5268, i64 4918, i64 0, i64 %t597) - unreachable -inrange8241: - %t599 = extractvalue { ptr, i64, i64 } %t596, 0 - %t600 = getelementptr inbounds %S.ast.Node, ptr %t599, i64 0 - %t601 = load %S.ast.Node, ptr %t600 - %t602 = call %S.gen.Val @finch.gen.strArg(ptr %t594, %S.ast.Node %t601, { ptr, i64, i64 } { ptr @.str.5269, i64 13, i64 0 }) - store %S.gen.Val %t602, ptr %a603 - %t604 = load ptr, ptr %a1 - %t605 = load %S.gen.Val, ptr %a603 - %t606 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t604, %S.gen.Val %t605) - store { ptr, i64, i64 } %t606, ptr %a607 - %t608 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t608, ptr %a609 - store { ptr, i64, i64 } { ptr @.str.5270, i64 11, i64 0 }, ptr %a610 - %t611 = call i32 @finch_str_eq(ptr %a609, ptr %a610) - %t612 = icmp ne i32 %t611, 0 - br i1 %t612, label %then8242, label %endif8244 -then8242: - %t613 = load ptr, ptr %a1 - %t614 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } { ptr @.str.5271, i64 32, i64 0 }, ptr %a616 - store { ptr, i64, i64 } %t614, ptr %a617 - call void @finch_str_concat(ptr %a615, ptr %a616, ptr %a617) - %t618 = load { ptr, i64, i64 }, ptr %a615 - store { ptr, i64, i64 } %t618, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5272, i64 1, i64 0 }, ptr %a621 - call void @finch_str_concat(ptr %a619, ptr %a620, ptr %a621) - store { ptr, i64, i64 } %t618, ptr %a622 - call void @finch_str_drop(ptr %a622) - %t623 = load { ptr, i64, i64 }, ptr %a619 - %t624 = call { ptr, i64, i64 } @finch.gen.op(ptr %t613, { ptr, i64, i64 } %t623) - store { ptr, i64, i64 } %t623, ptr %a625 - call void @finch_str_drop(ptr %a625) - store { ptr, i64, i64 } %t624, ptr %a626 - %t627 = load ptr, ptr %a1 - %t628 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t627, %S.gen.Val %t628) - %t629 = load ptr, ptr %a1 - %t630 = load { ptr, i64, i64 }, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5273, i64 12, i64 0 }, ptr %a632 - store { ptr, i64, i64 } %t630, ptr %a633 - call void @finch_str_concat(ptr %a631, ptr %a632, ptr %a633) - %t634 = load { ptr, i64, i64 }, ptr %a631 - store { ptr, i64, i64 } %t634, ptr %a636 - store { ptr, i64, i64 } { ptr @.str.5274, i64 3, i64 0 }, ptr %a637 - call void @finch_str_concat(ptr %a635, ptr %a636, ptr %a637) - store { ptr, i64, i64 } %t634, ptr %a638 - call void @finch_str_drop(ptr %a638) - %t639 = load { ptr, i64, i64 }, ptr %a635 - %t640 = call { ptr, i64, i64 } @finch.gen.op(ptr %t629, { ptr, i64, i64 } %t639) - store { ptr, i64, i64 } %t639, ptr %a641 - call void @finch_str_drop(ptr %a641) - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t640, 0 - %t643 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5275, i64 4, i64 0 }) - %t644 = insertvalue %S.gen.Val %t642, %S.ast.Type %t643, 1 - call void @finch_str_drop(ptr %a626) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t644 -endif8244: - %t645 = load ptr, ptr %a1 - %t646 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t645) - store { ptr, i64, i64 } %t646, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = icmp eq ptr %t648, null - br i1 %t649, label %panic8245, label %ok8246 -panic8245: - call void @finch_panic(ptr @.str.5276, i64 4926, ptr @.str.5277) - unreachable -ok8246: - %t650 = getelementptr inbounds %S.gen.Gen, ptr %t648, i32 0, i32 41 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = load %S.ast.Node, ptr %a2 - %t653 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t652) - store { ptr, i64, i64 } %t651, ptr %a654 - store { ptr, i64, i64 } %t653, ptr %a655 - %t656 = call i32 @finch_str_eq(ptr %a654, ptr %a655) - %t657 = icmp ne i32 %t656, 0 - store { ptr, i64, i64 } %t653, ptr %a658 - call void @finch_str_drop(ptr %a658) - br i1 %t657, label %then8247, label %endif8249 -then8247: - %t659 = load ptr, ptr %a1 - %t660 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t659, { ptr, i64, i64 } { ptr @.str.5278, i64 17, i64 0 }) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a647 - call void @finch.gen.store(ptr %t662, { ptr, i64, i64 } { ptr @.str.5279, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5280, i64 15, i64 0 }, { ptr, i64, i64 } %t663) - %t664 = load ptr, ptr %a1 - %t665 = load { ptr, i64, i64 }, ptr %a661 - call void @finch.gen.store(ptr %t664, { ptr, i64, i64 } { ptr @.str.5281, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5282, i64 15, i64 0 }, { ptr, i64, i64 } %t665) - %t666 = load ptr, ptr %a1 - %t667 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5283, i64 34, i64 0 }, ptr %a669 - store { ptr, i64, i64 } %t667, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - %t671 = load { ptr, i64, i64 }, ptr %a668 - store { ptr, i64, i64 } %t671, ptr %a673 - store { ptr, i64, i64 } { ptr @.str.5284, i64 6, i64 0 }, ptr %a674 - call void @finch_str_concat(ptr %a672, ptr %a673, ptr %a674) - store { ptr, i64, i64 } %t671, ptr %a675 - call void @finch_str_drop(ptr %a675) - %t676 = load { ptr, i64, i64 }, ptr %a672 - %t677 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t676, ptr %a679 - store { ptr, i64, i64 } %t677, ptr %a680 - call void @finch_str_concat(ptr %a678, ptr %a679, ptr %a680) - store { ptr, i64, i64 } %t676, ptr %a681 - call void @finch_str_drop(ptr %a681) - %t682 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } %t682, ptr %a684 - store { ptr, i64, i64 } { ptr @.str.5285, i64 6, i64 0 }, ptr %a685 - call void @finch_str_concat(ptr %a683, ptr %a684, ptr %a685) - store { ptr, i64, i64 } %t682, ptr %a686 - call void @finch_str_drop(ptr %a686) - %t687 = load { ptr, i64, i64 }, ptr %a683 - %t688 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t687, ptr %a690 - store { ptr, i64, i64 } %t688, ptr %a691 - call void @finch_str_concat(ptr %a689, ptr %a690, ptr %a691) - store { ptr, i64, i64 } %t687, ptr %a692 - call void @finch_str_drop(ptr %a692) - %t693 = load { ptr, i64, i64 }, ptr %a689 - store { ptr, i64, i64 } %t693, ptr %a695 - store { ptr, i64, i64 } { ptr @.str.5286, i64 1, i64 0 }, ptr %a696 - call void @finch_str_concat(ptr %a694, ptr %a695, ptr %a696) - store { ptr, i64, i64 } %t693, ptr %a697 - call void @finch_str_drop(ptr %a697) - %t698 = load { ptr, i64, i64 }, ptr %a694 - %t699 = call { ptr, i64, i64 } @finch.gen.op(ptr %t666, { ptr, i64, i64 } %t698) - store { ptr, i64, i64 } %t698, ptr %a700 - call void @finch_str_drop(ptr %a700) - store { ptr, i64, i64 } %t699, ptr %a701 - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a701 - store { ptr, i64, i64 } { ptr @.str.5287, i64 12, i64 0 }, ptr %a705 - store { ptr, i64, i64 } %t703, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - %t707 = load { ptr, i64, i64 }, ptr %a704 - store { ptr, i64, i64 } %t707, ptr %a709 - store { ptr, i64, i64 } { ptr @.str.5288, i64 3, i64 0 }, ptr %a710 - call void @finch_str_concat(ptr %a708, ptr %a709, ptr %a710) - store { ptr, i64, i64 } %t707, ptr %a711 - call void @finch_str_drop(ptr %a711) - %t712 = load { ptr, i64, i64 }, ptr %a708 - %t713 = call { ptr, i64, i64 } @finch.gen.op(ptr %t702, { ptr, i64, i64 } %t712) - store { ptr, i64, i64 } %t712, ptr %a714 - call void @finch_str_drop(ptr %a714) - %t715 = load ptr, ptr %a1 - %t716 = icmp eq ptr %t715, null - br i1 %t716, label %panic8250, label %ok8251 -panic8250: - call void @finch_panic(ptr @.str.5289, i64 4931, ptr @.str.5290) - unreachable -ok8251: - %t717 = getelementptr inbounds %S.gen.Gen, ptr %t715, i32 0, i32 42 - %t718 = load { ptr, i64, i64 }, ptr %t717 - store { ptr, i64, i64 } %t713, ptr %t717 - store { ptr, i64, i64 } %t718, ptr %a719 - call void @finch_str_drop(ptr %a719) - %t720 = load ptr, ptr %a1 - %t721 = load { ptr, i64, i64 }, ptr %a661 - %t722 = call { ptr, i64, i64 } @finch.gen.load(ptr %t720, { ptr, i64, i64 } { ptr @.str.5291, i64 17, i64 0 }, { ptr, i64, i64 } %t721) - %t723 = load ptr, ptr %a1 - %t724 = icmp eq ptr %t723, null - br i1 %t724, label %panic8252, label %ok8253 -panic8252: - call void @finch_panic(ptr @.str.5292, i64 4932, ptr @.str.5293) - unreachable -ok8253: - %t725 = getelementptr inbounds %S.gen.Gen, ptr %t723, i32 0, i32 43 - %t726 = load { ptr, i64, i64 }, ptr %t725 - store { ptr, i64, i64 } %t722, ptr %t725 - store { ptr, i64, i64 } %t726, ptr %a727 - call void @finch_str_drop(ptr %a727) - %t728 = load ptr, ptr %a1 - %t729 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t728, %S.gen.Val %t729) - %t730 = load ptr, ptr %a1 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = call { ptr, i64, i64 } @finch.gen.load(ptr %t730, { ptr, i64, i64 } { ptr @.str.5294, i64 17, i64 0 }, { ptr, i64, i64 } %t731) - %t733 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t732, 0 - %t734 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5295, i64 3, i64 0 }) - %t735 = insertvalue %S.gen.Val %t733, %S.ast.Type %t734, 1 - %t736 = insertvalue %S.gen.Val %t735, i1 true, 2 - call void @finch_str_drop(ptr %a701) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t736 -endif8249: - %t737 = load ptr, ptr %a1 - %t738 = load ptr, ptr %a1 - %t739 = icmp eq ptr %t738, null - br i1 %t739, label %panic8254, label %ok8255 -panic8254: - call void @finch_panic(ptr @.str.5296, i64 4936, ptr @.str.5297) - unreachable -ok8255: - %t740 = getelementptr inbounds %S.gen.Gen, ptr %t738, i32 0, i32 1 - %t741 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t742 = load i64, ptr %t741 - %t743 = load { ptr, i64, i64 }, ptr %t740 - %t744 = extractvalue { ptr, i64, i64 } %t743, 1 - %t745 = icmp uge i64 %t742, %t744 - br i1 %t745, label %range8256, label %inrange8257 -range8256: - call void @finch_panic_index(ptr @.str.5298, i64 4936, i64 %t742, i64 %t744) - unreachable -inrange8257: - %t746 = extractvalue { ptr, i64, i64 } %t743, 0 - %t747 = getelementptr inbounds { ptr, i64, i64 }, ptr %t746, i64 %t742 - %t748 = load { ptr, i64, i64 }, ptr %t747 - %t749 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t737, { ptr, i64, i64 } %t748) - store { ptr, i64, i64 } %t749, ptr %a750 - %t751 = load ptr, ptr %a1 - %t752 = load { ptr, i64, i64 }, ptr %a647 - store { ptr, i64, i64 } { ptr @.str.5299, i64 31, i64 0 }, ptr %a754 - store { ptr, i64, i64 } %t752, ptr %a755 - call void @finch_str_concat(ptr %a753, ptr %a754, ptr %a755) - %t756 = load { ptr, i64, i64 }, ptr %a753 - store { ptr, i64, i64 } %t756, ptr %a758 - store { ptr, i64, i64 } { ptr @.str.5300, i64 6, i64 0 }, ptr %a759 - call void @finch_str_concat(ptr %a757, ptr %a758, ptr %a759) - store { ptr, i64, i64 } %t756, ptr %a760 - call void @finch_str_drop(ptr %a760) - %t761 = load { ptr, i64, i64 }, ptr %a757 - %t762 = load { ptr, i64, i64 }, ptr %a607 - store { ptr, i64, i64 } %t761, ptr %a764 - store { ptr, i64, i64 } %t762, ptr %a765 - call void @finch_str_concat(ptr %a763, ptr %a764, ptr %a765) - store { ptr, i64, i64 } %t761, ptr %a766 - call void @finch_str_drop(ptr %a766) - %t767 = load { ptr, i64, i64 }, ptr %a763 - store { ptr, i64, i64 } %t767, ptr %a769 - store { ptr, i64, i64 } { ptr @.str.5301, i64 6, i64 0 }, ptr %a770 - call void @finch_str_concat(ptr %a768, ptr %a769, ptr %a770) - store { ptr, i64, i64 } %t767, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a768 - %t773 = load { ptr, i64, i64 }, ptr %a750 - store { ptr, i64, i64 } %t772, ptr %a775 - store { ptr, i64, i64 } %t773, ptr %a776 - call void @finch_str_concat(ptr %a774, ptr %a775, ptr %a776) - store { ptr, i64, i64 } %t772, ptr %a777 - call void @finch_str_drop(ptr %a777) - %t778 = load { ptr, i64, i64 }, ptr %a774 - store { ptr, i64, i64 } %t778, ptr %a780 - store { ptr, i64, i64 } { ptr @.str.5302, i64 6, i64 0 }, ptr %a781 - call void @finch_str_concat(ptr %a779, ptr %a780, ptr %a781) - store { ptr, i64, i64 } %t778, ptr %a782 - call void @finch_str_drop(ptr %a782) - %t783 = load { ptr, i64, i64 }, ptr %a779 - %t784 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t785 = load i64, ptr %t784 - call void @finch_str_from_int(ptr %a786, i64 %t785) - %t787 = load { ptr, i64, i64 }, ptr %a786 - store { ptr, i64, i64 } %t783, ptr %a789 - store { ptr, i64, i64 } %t787, ptr %a790 - call void @finch_str_concat(ptr %a788, ptr %a789, ptr %a790) - store { ptr, i64, i64 } %t783, ptr %a791 - call void @finch_str_drop(ptr %a791) - store { ptr, i64, i64 } %t787, ptr %a792 - call void @finch_str_drop(ptr %a792) - %t793 = load { ptr, i64, i64 }, ptr %a788 - store { ptr, i64, i64 } %t793, ptr %a795 - store { ptr, i64, i64 } { ptr @.str.5303, i64 1, i64 0 }, ptr %a796 - call void @finch_str_concat(ptr %a794, ptr %a795, ptr %a796) - store { ptr, i64, i64 } %t793, ptr %a797 - call void @finch_str_drop(ptr %a797) - %t798 = load { ptr, i64, i64 }, ptr %a794 - call void @finch.gen.emit(ptr %t751, { ptr, i64, i64 } %t798) - store { ptr, i64, i64 } %t798, ptr %a799 - call void @finch_str_drop(ptr %a799) - %t800 = load ptr, ptr %a1 - %t801 = load %S.gen.Val, ptr %a603 - call void @finch.gen.release(ptr %t800, %S.gen.Val %t801) - %t802 = load ptr, ptr %a1 - %t803 = load { ptr, i64, i64 }, ptr %a647 - %t804 = call { ptr, i64, i64 } @finch.gen.load(ptr %t802, { ptr, i64, i64 } { ptr @.str.5304, i64 17, i64 0 }, { ptr, i64, i64 } %t803) - %t805 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t804, 0 - %t806 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5305, i64 3, i64 0 }) - %t807 = insertvalue %S.gen.Val %t805, %S.ast.Type %t806, 1 - %t808 = insertvalue %S.gen.Val %t807, i1 true, 2 - call void @finch_str_drop(ptr %a750) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a607) - call void @finch.drop.S_gen_Val(ptr %a603) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t808 -endif8239: - %t809 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t809, ptr %a810 - store { ptr, i64, i64 } { ptr @.str.5306, i64 10, i64 0 }, ptr %a811 - %t812 = call i32 @finch_str_eq(ptr %a810, ptr %a811) - %t813 = icmp ne i32 %t812, 0 - br i1 %t813, label %then8258, label %endif8260 -then8258: - %t814 = load ptr, ptr %a1 - %t815 = load %S.ast.Node, ptr %a2 - %t816 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t814, %S.ast.Node %t815, i64 0, i64 2, { ptr, i64, i64 } %t816) - %t817 = load ptr, ptr %a1 - %t818 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t819 = load { ptr, i64, i64 }, ptr %t818 - %t820 = extractvalue { ptr, i64, i64 } %t819, 1 - %t821 = icmp uge i64 0, %t820 - br i1 %t821, label %range8261, label %inrange8262 -range8261: - call void @finch_panic_index(ptr @.str.5307, i64 4943, i64 0, i64 %t820) - unreachable -inrange8262: - %t822 = extractvalue { ptr, i64, i64 } %t819, 0 - %t823 = getelementptr inbounds %S.ast.Node, ptr %t822, i64 0 - %t824 = load %S.ast.Node, ptr %t823 - %t825 = call %S.gen.Val @finch.gen.strArg(ptr %t817, %S.ast.Node %t824, { ptr, i64, i64 } { ptr @.str.5308, i64 13, i64 0 }) - store %S.gen.Val %t825, ptr %a826 - %t827 = load ptr, ptr %a1 - %t828 = icmp eq ptr %t827, null - br i1 %t828, label %panic8263, label %ok8264 -panic8263: - call void @finch_panic(ptr @.str.5309, i64 4944, ptr @.str.5310) - unreachable -ok8264: - %t829 = getelementptr inbounds %S.gen.Gen, ptr %t827, i32 0, i32 11 - %t830 = getelementptr inbounds { ptr, i64, i64 }, ptr %t829, i32 0, i32 1 - %t831 = load i64, ptr %t830 - store i64 %t831, ptr %a832 - %t833 = load ptr, ptr %a1 - %t834 = load %S.gen.Val, ptr %a826 - call void @finch.gen.hold(ptr %t833, %S.gen.Val %t834) - %t835 = load ptr, ptr %a1 - %t836 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t837 = load { ptr, i64, i64 }, ptr %t836 - %t838 = extractvalue { ptr, i64, i64 } %t837, 1 - %t839 = icmp uge i64 1, %t838 - br i1 %t839, label %range8265, label %inrange8266 -range8265: - call void @finch_panic_index(ptr @.str.5311, i64 4946, i64 1, i64 %t838) - unreachable -inrange8266: - %t840 = extractvalue { ptr, i64, i64 } %t837, 0 - %t841 = getelementptr inbounds %S.ast.Node, ptr %t840, i64 1 - %t842 = load %S.ast.Node, ptr %t841 - %t843 = call %S.gen.Val @finch.gen.strArg(ptr %t835, %S.ast.Node %t842, { ptr, i64, i64 } { ptr @.str.5312, i64 8, i64 0 }) - store %S.gen.Val %t843, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load i64, ptr %a832 - call void @finch.gen.heldEnd(ptr %t845, i64 %t846) - %t847 = load ptr, ptr %a1 - %t848 = load %S.gen.Val, ptr %a826 - %t849 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t847, %S.gen.Val %t848) - store { ptr, i64, i64 } %t849, ptr %a850 - %t851 = load ptr, ptr %a1 - %t852 = load %S.gen.Val, ptr %a844 - %t853 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t851, %S.gen.Val %t852) - store { ptr, i64, i64 } %t853, ptr %a854 - %t855 = load ptr, ptr %a1 - %t856 = icmp eq ptr %t855, null - br i1 %t856, label %panic8267, label %ok8268 -panic8267: - call void @finch_panic(ptr @.str.5313, i64 4950, ptr @.str.5314) - unreachable -ok8268: - %t857 = getelementptr inbounds %S.gen.Gen, ptr %t855, i32 0, i32 41 - %t858 = load { ptr, i64, i64 }, ptr %t857 - %t859 = load %S.ast.Node, ptr %a2 - %t860 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t859) - store { ptr, i64, i64 } %t858, ptr %a861 - store { ptr, i64, i64 } %t860, ptr %a862 - %t863 = call i32 @finch_str_eq(ptr %a861, ptr %a862) - %t864 = icmp ne i32 %t863, 0 - store { ptr, i64, i64 } %t860, ptr %a865 - call void @finch_str_drop(ptr %a865) - br i1 %t864, label %then8269, label %endif8271 -then8269: - %t866 = load ptr, ptr %a1 - %t867 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t866, { ptr, i64, i64 } { ptr @.str.5315, i64 17, i64 0 }) - store { ptr, i64, i64 } %t867, ptr %a868 - %t869 = load ptr, ptr %a1 - %t870 = load { ptr, i64, i64 }, ptr %a868 - call void @finch.gen.store(ptr %t869, { ptr, i64, i64 } { ptr @.str.5316, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5317, i64 15, i64 0 }, { ptr, i64, i64 } %t870) - %t871 = load ptr, ptr %a1 - %t872 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5318, i64 35, i64 0 }, ptr %a874 - store { ptr, i64, i64 } %t872, ptr %a875 - call void @finch_str_concat(ptr %a873, ptr %a874, ptr %a875) - %t876 = load { ptr, i64, i64 }, ptr %a873 - store { ptr, i64, i64 } %t876, ptr %a878 - store { ptr, i64, i64 } { ptr @.str.5319, i64 6, i64 0 }, ptr %a879 - call void @finch_str_concat(ptr %a877, ptr %a878, ptr %a879) - store { ptr, i64, i64 } %t876, ptr %a880 - call void @finch_str_drop(ptr %a880) - %t881 = load { ptr, i64, i64 }, ptr %a877 - %t882 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t881, ptr %a884 - store { ptr, i64, i64 } %t882, ptr %a885 - call void @finch_str_concat(ptr %a883, ptr %a884, ptr %a885) - store { ptr, i64, i64 } %t881, ptr %a886 - call void @finch_str_drop(ptr %a886) - %t887 = load { ptr, i64, i64 }, ptr %a883 - store { ptr, i64, i64 } %t887, ptr %a889 - store { ptr, i64, i64 } { ptr @.str.5320, i64 6, i64 0 }, ptr %a890 - call void @finch_str_concat(ptr %a888, ptr %a889, ptr %a890) - store { ptr, i64, i64 } %t887, ptr %a891 - call void @finch_str_drop(ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a888 - %t893 = load { ptr, i64, i64 }, ptr %a868 - store { ptr, i64, i64 } %t892, ptr %a895 - store { ptr, i64, i64 } %t893, ptr %a896 - call void @finch_str_concat(ptr %a894, ptr %a895, ptr %a896) - store { ptr, i64, i64 } %t892, ptr %a897 - call void @finch_str_drop(ptr %a897) - %t898 = load { ptr, i64, i64 }, ptr %a894 - store { ptr, i64, i64 } %t898, ptr %a900 - store { ptr, i64, i64 } { ptr @.str.5321, i64 1, i64 0 }, ptr %a901 - call void @finch_str_concat(ptr %a899, ptr %a900, ptr %a901) - store { ptr, i64, i64 } %t898, ptr %a902 - call void @finch_str_drop(ptr %a902) - %t903 = load { ptr, i64, i64 }, ptr %a899 - %t904 = call { ptr, i64, i64 } @finch.gen.op(ptr %t871, { ptr, i64, i64 } %t903) - store { ptr, i64, i64 } %t903, ptr %a905 - call void @finch_str_drop(ptr %a905) - store { ptr, i64, i64 } %t904, ptr %a906 - %t907 = load ptr, ptr %a1 - %t908 = load { ptr, i64, i64 }, ptr %a906 - store { ptr, i64, i64 } { ptr @.str.5322, i64 12, i64 0 }, ptr %a910 - store { ptr, i64, i64 } %t908, ptr %a911 - call void @finch_str_concat(ptr %a909, ptr %a910, ptr %a911) - %t912 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } %t912, ptr %a914 - store { ptr, i64, i64 } { ptr @.str.5323, i64 3, i64 0 }, ptr %a915 - call void @finch_str_concat(ptr %a913, ptr %a914, ptr %a915) - store { ptr, i64, i64 } %t912, ptr %a916 - call void @finch_str_drop(ptr %a916) - %t917 = load { ptr, i64, i64 }, ptr %a913 - %t918 = call { ptr, i64, i64 } @finch.gen.op(ptr %t907, { ptr, i64, i64 } %t917) - store { ptr, i64, i64 } %t917, ptr %a919 - call void @finch_str_drop(ptr %a919) - %t920 = load ptr, ptr %a1 - %t921 = icmp eq ptr %t920, null - br i1 %t921, label %panic8272, label %ok8273 -panic8272: - call void @finch_panic(ptr @.str.5324, i64 4954, ptr @.str.5325) - unreachable -ok8273: - %t922 = getelementptr inbounds %S.gen.Gen, ptr %t920, i32 0, i32 42 - %t923 = load { ptr, i64, i64 }, ptr %t922 - store { ptr, i64, i64 } %t918, ptr %t922 - store { ptr, i64, i64 } %t923, ptr %a924 - call void @finch_str_drop(ptr %a924) - %t925 = load ptr, ptr %a1 - %t926 = load { ptr, i64, i64 }, ptr %a868 - %t927 = call { ptr, i64, i64 } @finch.gen.load(ptr %t925, { ptr, i64, i64 } { ptr @.str.5326, i64 17, i64 0 }, { ptr, i64, i64 } %t926) - %t928 = load ptr, ptr %a1 - %t929 = icmp eq ptr %t928, null - br i1 %t929, label %panic8274, label %ok8275 -panic8274: - call void @finch_panic(ptr @.str.5327, i64 4955, ptr @.str.5328) - unreachable -ok8275: - %t930 = getelementptr inbounds %S.gen.Gen, ptr %t928, i32 0, i32 43 - %t931 = load { ptr, i64, i64 }, ptr %t930 - store { ptr, i64, i64 } %t927, ptr %t930 - store { ptr, i64, i64 } %t931, ptr %a932 - call void @finch_str_drop(ptr %a932) - %t933 = load ptr, ptr %a1 - %t934 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t933, %S.gen.Val %t934) - %t935 = load ptr, ptr %a1 - %t936 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t935, %S.gen.Val %t936) - %t937 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5329, i64 4, i64 0 }) - %t938 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t937, 1 - call void @finch_str_drop(ptr %a906) - call void @finch_str_drop(ptr %a868) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t938 -endif8271: - %t939 = load ptr, ptr %a1 - %t940 = load { ptr, i64, i64 }, ptr %a850 - store { ptr, i64, i64 } { ptr @.str.5330, i64 31, i64 0 }, ptr %a942 - store { ptr, i64, i64 } %t940, ptr %a943 - call void @finch_str_concat(ptr %a941, ptr %a942, ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a941 - store { ptr, i64, i64 } %t944, ptr %a946 - store { ptr, i64, i64 } { ptr @.str.5331, i64 6, i64 0 }, ptr %a947 - call void @finch_str_concat(ptr %a945, ptr %a946, ptr %a947) - store { ptr, i64, i64 } %t944, ptr %a948 - call void @finch_str_drop(ptr %a948) - %t949 = load { ptr, i64, i64 }, ptr %a945 - %t950 = load { ptr, i64, i64 }, ptr %a854 - store { ptr, i64, i64 } %t949, ptr %a952 - store { ptr, i64, i64 } %t950, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t949, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - store { ptr, i64, i64 } %t955, ptr %a957 - store { ptr, i64, i64 } { ptr @.str.5332, i64 1, i64 0 }, ptr %a958 - call void @finch_str_concat(ptr %a956, ptr %a957, ptr %a958) - store { ptr, i64, i64 } %t955, ptr %a959 - call void @finch_str_drop(ptr %a959) - %t960 = load { ptr, i64, i64 }, ptr %a956 - %t961 = call { ptr, i64, i64 } @finch.gen.op(ptr %t939, { ptr, i64, i64 } %t960) - store { ptr, i64, i64 } %t960, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t961, ptr %a963 - %t964 = load ptr, ptr %a1 - %t965 = load %S.gen.Val, ptr %a826 - call void @finch.gen.release(ptr %t964, %S.gen.Val %t965) - %t966 = load ptr, ptr %a1 - %t967 = load %S.gen.Val, ptr %a844 - call void @finch.gen.release(ptr %t966, %S.gen.Val %t967) - %t968 = load ptr, ptr %a1 - %t969 = load { ptr, i64, i64 }, ptr %a963 - store { ptr, i64, i64 } { ptr @.str.5333, i64 12, i64 0 }, ptr %a971 - store { ptr, i64, i64 } %t969, ptr %a972 - call void @finch_str_concat(ptr %a970, ptr %a971, ptr %a972) - %t973 = load { ptr, i64, i64 }, ptr %a970 - store { ptr, i64, i64 } %t973, ptr %a975 - store { ptr, i64, i64 } { ptr @.str.5334, i64 3, i64 0 }, ptr %a976 - call void @finch_str_concat(ptr %a974, ptr %a975, ptr %a976) - store { ptr, i64, i64 } %t973, ptr %a977 - call void @finch_str_drop(ptr %a977) - %t978 = load { ptr, i64, i64 }, ptr %a974 - %t979 = call { ptr, i64, i64 } @finch.gen.op(ptr %t968, { ptr, i64, i64 } %t978) - store { ptr, i64, i64 } %t978, ptr %a980 - call void @finch_str_drop(ptr %a980) - %t981 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t979, 0 - %t982 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5335, i64 4, i64 0 }) - %t983 = insertvalue %S.gen.Val %t981, %S.ast.Type %t982, 1 - call void @finch_str_drop(ptr %a963) - call void @finch_str_drop(ptr %a854) - call void @finch_str_drop(ptr %a850) - call void @finch.drop.S_gen_Val(ptr %a844) - call void @finch.drop.S_gen_Val(ptr %a826) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t983 -endif8260: - %t984 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t984, ptr %a985 - store { ptr, i64, i64 } { ptr @.str.5336, i64 11, i64 0 }, ptr %a986 - %t987 = call i32 @finch_str_eq(ptr %a985, ptr %a986) - %t988 = icmp ne i32 %t987, 0 - br i1 %t988, label %then8276, label %endif8278 -then8276: - %t989 = load ptr, ptr %a1 - %t990 = load %S.ast.Node, ptr %a2 - %t991 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t989, %S.ast.Node %t990, i64 0, i64 1, { ptr, i64, i64 } %t991) - %t992 = load ptr, ptr %a1 - %t993 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t994 = load { ptr, i64, i64 }, ptr %t993 - %t995 = extractvalue { ptr, i64, i64 } %t994, 1 - %t996 = icmp uge i64 0, %t995 - br i1 %t996, label %range8279, label %inrange8280 -range8279: - call void @finch_panic_index(ptr @.str.5337, i64 4967, i64 0, i64 %t995) - unreachable -inrange8280: - %t997 = extractvalue { ptr, i64, i64 } %t994, 0 - %t998 = getelementptr inbounds %S.ast.Node, ptr %t997, i64 0 - %t999 = load %S.ast.Node, ptr %t998 - %t1000 = call %S.gen.Val @finch.gen.strArg(ptr %t992, %S.ast.Node %t999, { ptr, i64, i64 } { ptr @.str.5338, i64 13, i64 0 }) - store %S.gen.Val %t1000, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1002) - store { ptr, i64, i64 } %t1003, ptr %a1004 - %t1005 = load ptr, ptr %a1 - %t1006 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5339, i64 30, i64 0 }, ptr %a1008 - store { ptr, i64, i64 } %t1006, ptr %a1009 - call void @finch_str_concat(ptr %a1007, ptr %a1008, ptr %a1009) - %t1010 = load { ptr, i64, i64 }, ptr %a1007 - store { ptr, i64, i64 } %t1010, ptr %a1012 - store { ptr, i64, i64 } { ptr @.str.5340, i64 6, i64 0 }, ptr %a1013 - call void @finch_str_concat(ptr %a1011, ptr %a1012, ptr %a1013) - store { ptr, i64, i64 } %t1010, ptr %a1014 - call void @finch_str_drop(ptr %a1014) - %t1015 = load { ptr, i64, i64 }, ptr %a1011 - %t1016 = load ptr, ptr %a1 - %t1017 = load %S.gen.Val, ptr %a1001 - %t1018 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1016, %S.gen.Val %t1017) - store { ptr, i64, i64 } %t1015, ptr %a1020 - store { ptr, i64, i64 } %t1018, ptr %a1021 - call void @finch_str_concat(ptr %a1019, ptr %a1020, ptr %a1021) - store { ptr, i64, i64 } %t1015, ptr %a1022 - call void @finch_str_drop(ptr %a1022) - store { ptr, i64, i64 } %t1018, ptr %a1023 - call void @finch_str_drop(ptr %a1023) - %t1024 = load { ptr, i64, i64 }, ptr %a1019 - store { ptr, i64, i64 } %t1024, ptr %a1026 - store { ptr, i64, i64 } { ptr @.str.5341, i64 1, i64 0 }, ptr %a1027 - call void @finch_str_concat(ptr %a1025, ptr %a1026, ptr %a1027) - store { ptr, i64, i64 } %t1024, ptr %a1028 - call void @finch_str_drop(ptr %a1028) - %t1029 = load { ptr, i64, i64 }, ptr %a1025 - call void @finch.gen.emit(ptr %t1005, { ptr, i64, i64 } %t1029) - store { ptr, i64, i64 } %t1029, ptr %a1030 - call void @finch_str_drop(ptr %a1030) - %t1031 = load ptr, ptr %a1 - %t1032 = icmp eq ptr %t1031, null - br i1 %t1032, label %panic8281, label %ok8282 -panic8281: - call void @finch_panic(ptr @.str.5342, i64 4970, ptr @.str.5343) - unreachable -ok8282: - %t1033 = getelementptr inbounds %S.gen.Gen, ptr %t1031, i32 0, i32 41 - %t1034 = load { ptr, i64, i64 }, ptr %t1033 - %t1035 = load %S.ast.Node, ptr %a2 - %t1036 = call { ptr, i64, i64 } @finch.gen.nodeKey(%S.ast.Node %t1035) - store { ptr, i64, i64 } %t1034, ptr %a1037 - store { ptr, i64, i64 } %t1036, ptr %a1038 - %t1039 = call i32 @finch_str_eq(ptr %a1037, ptr %a1038) - %t1040 = icmp ne i32 %t1039, 0 - store { ptr, i64, i64 } %t1036, ptr %a1041 - call void @finch_str_drop(ptr %a1041) - br i1 %t1040, label %then8283, label %endif8285 -then8283: - %t1042 = load ptr, ptr %a1 - %t1043 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1042, { ptr, i64, i64 } { ptr @.str.5344, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1043, ptr %a1044 - %t1045 = load ptr, ptr %a1 - %t1046 = load { ptr, i64, i64 }, ptr %a1044 - call void @finch.gen.store(ptr %t1045, { ptr, i64, i64 } { ptr @.str.5345, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.5346, i64 15, i64 0 }, { ptr, i64, i64 } %t1046) - %t1047 = load ptr, ptr %a1 - %t1048 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5347, i64 36, i64 0 }, ptr %a1050 - store { ptr, i64, i64 } %t1048, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - %t1052 = load { ptr, i64, i64 }, ptr %a1049 - store { ptr, i64, i64 } %t1052, ptr %a1054 - store { ptr, i64, i64 } { ptr @.str.5348, i64 6, i64 0 }, ptr %a1055 - call void @finch_str_concat(ptr %a1053, ptr %a1054, ptr %a1055) - store { ptr, i64, i64 } %t1052, ptr %a1056 - call void @finch_str_drop(ptr %a1056) - %t1057 = load { ptr, i64, i64 }, ptr %a1053 - %t1058 = load { ptr, i64, i64 }, ptr %a1044 - store { ptr, i64, i64 } %t1057, ptr %a1060 - store { ptr, i64, i64 } %t1058, ptr %a1061 - call void @finch_str_concat(ptr %a1059, ptr %a1060, ptr %a1061) - store { ptr, i64, i64 } %t1057, ptr %a1062 - call void @finch_str_drop(ptr %a1062) - %t1063 = load { ptr, i64, i64 }, ptr %a1059 - store { ptr, i64, i64 } %t1063, ptr %a1065 - store { ptr, i64, i64 } { ptr @.str.5349, i64 1, i64 0 }, ptr %a1066 - call void @finch_str_concat(ptr %a1064, ptr %a1065, ptr %a1066) - store { ptr, i64, i64 } %t1063, ptr %a1067 - call void @finch_str_drop(ptr %a1067) - %t1068 = load { ptr, i64, i64 }, ptr %a1064 - %t1069 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1047, { ptr, i64, i64 } %t1068) - store { ptr, i64, i64 } %t1068, ptr %a1070 - call void @finch_str_drop(ptr %a1070) - store { ptr, i64, i64 } %t1069, ptr %a1071 - %t1072 = load ptr, ptr %a1 - %t1073 = load { ptr, i64, i64 }, ptr %a1071 - store { ptr, i64, i64 } { ptr @.str.5350, i64 12, i64 0 }, ptr %a1075 - store { ptr, i64, i64 } %t1073, ptr %a1076 - call void @finch_str_concat(ptr %a1074, ptr %a1075, ptr %a1076) - %t1077 = load { ptr, i64, i64 }, ptr %a1074 - store { ptr, i64, i64 } %t1077, ptr %a1079 - store { ptr, i64, i64 } { ptr @.str.5351, i64 3, i64 0 }, ptr %a1080 - call void @finch_str_concat(ptr %a1078, ptr %a1079, ptr %a1080) - store { ptr, i64, i64 } %t1077, ptr %a1081 - call void @finch_str_drop(ptr %a1081) - %t1082 = load { ptr, i64, i64 }, ptr %a1078 - %t1083 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1072, { ptr, i64, i64 } %t1082) - store { ptr, i64, i64 } %t1082, ptr %a1084 - call void @finch_str_drop(ptr %a1084) - %t1085 = load ptr, ptr %a1 - %t1086 = icmp eq ptr %t1085, null - br i1 %t1086, label %panic8286, label %ok8287 -panic8286: - call void @finch_panic(ptr @.str.5352, i64 4974, ptr @.str.5353) - unreachable -ok8287: - %t1087 = getelementptr inbounds %S.gen.Gen, ptr %t1085, i32 0, i32 42 - %t1088 = load { ptr, i64, i64 }, ptr %t1087 - store { ptr, i64, i64 } %t1083, ptr %t1087 - store { ptr, i64, i64 } %t1088, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load ptr, ptr %a1 - %t1091 = load { ptr, i64, i64 }, ptr %a1044 - %t1092 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1090, { ptr, i64, i64 } { ptr @.str.5354, i64 17, i64 0 }, { ptr, i64, i64 } %t1091) - %t1093 = load ptr, ptr %a1 - %t1094 = icmp eq ptr %t1093, null - br i1 %t1094, label %panic8288, label %ok8289 -panic8288: - call void @finch_panic(ptr @.str.5355, i64 4975, ptr @.str.5356) - unreachable -ok8289: - %t1095 = getelementptr inbounds %S.gen.Gen, ptr %t1093, i32 0, i32 43 - %t1096 = load { ptr, i64, i64 }, ptr %t1095 - store { ptr, i64, i64 } %t1092, ptr %t1095 - store { ptr, i64, i64 } %t1096, ptr %a1097 - call void @finch_str_drop(ptr %a1097) - %t1098 = load ptr, ptr %a1 - %t1099 = load { ptr, i64, i64 }, ptr %a1004 - %t1100 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5357, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1098, { ptr, i64, i64 } %t1099, %S.ast.Type %t1100) - store %S.ast.Type %t1100, ptr %a1101 - call void @finch.drop.S_ast_Type(ptr %a1101) - %t1102 = load ptr, ptr %a1 - %t1103 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1102, %S.gen.Val %t1103) - %t1104 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5358, i64 4, i64 0 }) - %t1105 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1104, 1 - call void @finch_str_drop(ptr %a1071) - call void @finch_str_drop(ptr %a1044) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1105 -endif8285: - %t1106 = load ptr, ptr %a1 - %t1107 = load { ptr, i64, i64 }, ptr %a1004 - store { ptr, i64, i64 } { ptr @.str.5359, i64 32, i64 0 }, ptr %a1109 - store { ptr, i64, i64 } %t1107, ptr %a1110 - call void @finch_str_concat(ptr %a1108, ptr %a1109, ptr %a1110) - %t1111 = load { ptr, i64, i64 }, ptr %a1108 - store { ptr, i64, i64 } %t1111, ptr %a1113 - store { ptr, i64, i64 } { ptr @.str.5360, i64 1, i64 0 }, ptr %a1114 - call void @finch_str_concat(ptr %a1112, ptr %a1113, ptr %a1114) - store { ptr, i64, i64 } %t1111, ptr %a1115 - call void @finch_str_drop(ptr %a1115) - %t1116 = load { ptr, i64, i64 }, ptr %a1112 - %t1117 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1106, { ptr, i64, i64 } %t1116) - store { ptr, i64, i64 } %t1116, ptr %a1118 - call void @finch_str_drop(ptr %a1118) - store { ptr, i64, i64 } %t1117, ptr %a1119 - %t1120 = load ptr, ptr %a1 - %t1121 = load { ptr, i64, i64 }, ptr %a1004 - %t1122 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5361, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1120, { ptr, i64, i64 } %t1121, %S.ast.Type %t1122) - store %S.ast.Type %t1122, ptr %a1123 - call void @finch.drop.S_ast_Type(ptr %a1123) - %t1124 = load ptr, ptr %a1 - %t1125 = load %S.gen.Val, ptr %a1001 - call void @finch.gen.release(ptr %t1124, %S.gen.Val %t1125) - %t1126 = load ptr, ptr %a1 - %t1127 = load { ptr, i64, i64 }, ptr %a1119 - store { ptr, i64, i64 } { ptr @.str.5362, i64 12, i64 0 }, ptr %a1129 - store { ptr, i64, i64 } %t1127, ptr %a1130 - call void @finch_str_concat(ptr %a1128, ptr %a1129, ptr %a1130) - %t1131 = load { ptr, i64, i64 }, ptr %a1128 - store { ptr, i64, i64 } %t1131, ptr %a1133 - store { ptr, i64, i64 } { ptr @.str.5363, i64 3, i64 0 }, ptr %a1134 - call void @finch_str_concat(ptr %a1132, ptr %a1133, ptr %a1134) - store { ptr, i64, i64 } %t1131, ptr %a1135 - call void @finch_str_drop(ptr %a1135) - %t1136 = load { ptr, i64, i64 }, ptr %a1132 - %t1137 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1126, { ptr, i64, i64 } %t1136) - store { ptr, i64, i64 } %t1136, ptr %a1138 - call void @finch_str_drop(ptr %a1138) - %t1139 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1137, 0 - %t1140 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5364, i64 4, i64 0 }) - %t1141 = insertvalue %S.gen.Val %t1139, %S.ast.Type %t1140, 1 - call void @finch_str_drop(ptr %a1119) - call void @finch_str_drop(ptr %a1004) - call void @finch.drop.S_gen_Val(ptr %a1001) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1141 -endif8278: - %t1142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1142, ptr %a1143 - store { ptr, i64, i64 } { ptr @.str.5365, i64 5, i64 0 }, ptr %a1144 - %t1145 = call i32 @finch_str_eq(ptr %a1143, ptr %a1144) - %t1146 = icmp ne i32 %t1145, 0 - br i1 %t1146, label %then8290, label %endif8292 -then8290: - %t1147 = load ptr, ptr %a1 - %t1148 = load %S.ast.Node, ptr %a2 - %t1149 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1147, %S.ast.Node %t1148, i64 0, i64 1, { ptr, i64, i64 } %t1149) - %t1150 = load ptr, ptr %a1 - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 0, %t1153 - br i1 %t1154, label %range8293, label %inrange8294 -range8293: - call void @finch_panic_index(ptr @.str.5366, i64 4987, i64 0, i64 %t1153) - unreachable -inrange8294: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 0 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.strArg(ptr %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5367, i64 11, i64 0 }) - store %S.gen.Val %t1158, ptr %a1159 - %t1160 = load ptr, ptr %a1 - %t1161 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1160) - store { ptr, i64, i64 } %t1161, ptr %a1162 - %t1163 = load ptr, ptr %a1 - %t1164 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5368, i64 30, i64 0 }, ptr %a1166 - store { ptr, i64, i64 } %t1164, ptr %a1167 - call void @finch_str_concat(ptr %a1165, ptr %a1166, ptr %a1167) - %t1168 = load { ptr, i64, i64 }, ptr %a1165 - store { ptr, i64, i64 } %t1168, ptr %a1170 - store { ptr, i64, i64 } { ptr @.str.5369, i64 6, i64 0 }, ptr %a1171 - call void @finch_str_concat(ptr %a1169, ptr %a1170, ptr %a1171) - store { ptr, i64, i64 } %t1168, ptr %a1172 - call void @finch_str_drop(ptr %a1172) - %t1173 = load { ptr, i64, i64 }, ptr %a1169 - %t1174 = load ptr, ptr %a1 - %t1175 = load %S.gen.Val, ptr %a1159 - %t1176 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1174, %S.gen.Val %t1175) - store { ptr, i64, i64 } %t1173, ptr %a1178 - store { ptr, i64, i64 } %t1176, ptr %a1179 - call void @finch_str_concat(ptr %a1177, ptr %a1178, ptr %a1179) - store { ptr, i64, i64 } %t1173, ptr %a1180 - call void @finch_str_drop(ptr %a1180) - store { ptr, i64, i64 } %t1176, ptr %a1181 - call void @finch_str_drop(ptr %a1181) - %t1182 = load { ptr, i64, i64 }, ptr %a1177 - store { ptr, i64, i64 } %t1182, ptr %a1184 - store { ptr, i64, i64 } { ptr @.str.5370, i64 1, i64 0 }, ptr %a1185 - call void @finch_str_concat(ptr %a1183, ptr %a1184, ptr %a1185) - store { ptr, i64, i64 } %t1182, ptr %a1186 - call void @finch_str_drop(ptr %a1186) - %t1187 = load { ptr, i64, i64 }, ptr %a1183 - call void @finch.gen.emit(ptr %t1163, { ptr, i64, i64 } %t1187) - store { ptr, i64, i64 } %t1187, ptr %a1188 - call void @finch_str_drop(ptr %a1188) - %t1189 = load ptr, ptr %a1 - %t1190 = load { ptr, i64, i64 }, ptr %a1162 - store { ptr, i64, i64 } { ptr @.str.5371, i64 26, i64 0 }, ptr %a1192 - store { ptr, i64, i64 } %t1190, ptr %a1193 - call void @finch_str_concat(ptr %a1191, ptr %a1192, ptr %a1193) - %t1194 = load { ptr, i64, i64 }, ptr %a1191 - store { ptr, i64, i64 } %t1194, ptr %a1196 - store { ptr, i64, i64 } { ptr @.str.5372, i64 1, i64 0 }, ptr %a1197 - call void @finch_str_concat(ptr %a1195, ptr %a1196, ptr %a1197) - store { ptr, i64, i64 } %t1194, ptr %a1198 - call void @finch_str_drop(ptr %a1198) - %t1199 = load { ptr, i64, i64 }, ptr %a1195 - %t1200 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1189, { ptr, i64, i64 } %t1199) - store { ptr, i64, i64 } %t1199, ptr %a1201 - call void @finch_str_drop(ptr %a1201) - store { ptr, i64, i64 } %t1200, ptr %a1202 - %t1203 = load ptr, ptr %a1 - %t1204 = load { ptr, i64, i64 }, ptr %a1162 - %t1205 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5373, i64 3, i64 0 }) - call void @finch.gen.dropAt(ptr %t1203, { ptr, i64, i64 } %t1204, %S.ast.Type %t1205) - store %S.ast.Type %t1205, ptr %a1206 - call void @finch.drop.S_ast_Type(ptr %a1206) - %t1207 = load ptr, ptr %a1 - %t1208 = load %S.gen.Val, ptr %a1159 - call void @finch.gen.release(ptr %t1207, %S.gen.Val %t1208) - %t1209 = load { ptr, i64, i64 }, ptr %a1202 - store { ptr, i64, i64 } %t1209, ptr %a1210 - call void @finch_str_copy(ptr %a1211, ptr %a1210) - %t1212 = load { ptr, i64, i64 }, ptr %a1211 - %t1213 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1212, 0 - %t1214 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5374, i64 3, i64 0 }) - %t1215 = insertvalue %S.gen.Val %t1213, %S.ast.Type %t1214, 1 - call void @finch_str_drop(ptr %a1202) - call void @finch_str_drop(ptr %a1162) - call void @finch.drop.S_gen_Val(ptr %a1159) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1215 -endif8292: - %t1216 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1216, ptr %a1217 - store { ptr, i64, i64 } { ptr @.str.5375, i64 4, i64 0 }, ptr %a1218 - %t1219 = call i32 @finch_str_eq(ptr %a1217, ptr %a1218) - %t1220 = icmp ne i32 %t1219, 0 - br i1 %t1220, label %then8295, label %endif8297 -then8295: - %t1221 = load ptr, ptr %a1 - %t1222 = load %S.ast.Node, ptr %a2 - %t1223 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1221, %S.ast.Node %t1222, i64 0, i64 1, { ptr, i64, i64 } %t1223) - %t1224 = load ptr, ptr %a1 - %t1225 = load ptr, ptr %a1 - %t1226 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1227 = load { ptr, i64, i64 }, ptr %t1226 - %t1228 = extractvalue { ptr, i64, i64 } %t1227, 1 - %t1229 = icmp uge i64 0, %t1228 - br i1 %t1229, label %range8298, label %inrange8299 -range8298: - call void @finch_panic_index(ptr @.str.5376, i64 4997, i64 0, i64 %t1228) - unreachable -inrange8299: - %t1230 = extractvalue { ptr, i64, i64 } %t1227, 0 - %t1231 = getelementptr inbounds %S.ast.Node, ptr %t1230, i64 0 - %t1232 = load %S.ast.Node, ptr %t1231 - %t1233 = call %S.gen.Val @finch.gen.expr(ptr %t1225, %S.ast.Node %t1232) - %t1234 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5377, i64 3, i64 0 }) - %t1235 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1236 = load { ptr, i64, i64 }, ptr %t1235 - %t1237 = extractvalue { ptr, i64, i64 } %t1236, 1 - %t1238 = icmp uge i64 0, %t1237 - br i1 %t1238, label %range8300, label %inrange8301 -range8300: - call void @finch_panic_index(ptr @.str.5378, i64 4997, i64 0, i64 %t1237) - unreachable -inrange8301: - %t1239 = extractvalue { ptr, i64, i64 } %t1236, 0 - %t1240 = getelementptr inbounds %S.ast.Node, ptr %t1239, i64 0 - %t1241 = load %S.ast.Node, ptr %t1240 - %t1242 = call %S.gen.Val @finch.gen.coerce(ptr %t1224, %S.gen.Val %t1233, %S.ast.Type %t1234, %S.ast.Node %t1241, { ptr, i64, i64 } { ptr @.str.5379, i64 13, i64 0 }) - store %S.gen.Val %t1233, ptr %a1243 - call void @finch.drop.S_gen_Val(ptr %a1243) - store %S.ast.Type %t1234, ptr %a1244 - call void @finch.drop.S_ast_Type(ptr %a1244) - store %S.gen.Val %t1242, ptr %a1245 - %t1246 = load ptr, ptr %a1 - %t1247 = getelementptr inbounds %S.gen.Val, ptr %a1245, i32 0, i32 0 - %t1248 = load { ptr, i64, i64 }, ptr %t1247 - store { ptr, i64, i64 } { ptr @.str.5380, i64 10, i64 0 }, ptr %a1250 - store { ptr, i64, i64 } %t1248, ptr %a1251 - call void @finch_str_concat(ptr %a1249, ptr %a1250, ptr %a1251) - %t1252 = load { ptr, i64, i64 }, ptr %a1249 - store { ptr, i64, i64 } %t1252, ptr %a1254 - store { ptr, i64, i64 } { ptr @.str.5381, i64 7, i64 0 }, ptr %a1255 - call void @finch_str_concat(ptr %a1253, ptr %a1254, ptr %a1255) - store { ptr, i64, i64 } %t1252, ptr %a1256 - call void @finch_str_drop(ptr %a1256) - %t1257 = load { ptr, i64, i64 }, ptr %a1253 - %t1258 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1246, { ptr, i64, i64 } %t1257) - store { ptr, i64, i64 } %t1257, ptr %a1259 - call void @finch_str_drop(ptr %a1259) - store { ptr, i64, i64 } %t1258, ptr %a1260 - %t1261 = load ptr, ptr %a1 - %t1262 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1261, { ptr, i64, i64 } { ptr @.str.5382, i64 26, i64 0 }) - store { ptr, i64, i64 } %t1262, ptr %a1263 - %t1264 = load ptr, ptr %a1 - %t1265 = load { ptr, i64, i64 }, ptr %a1260 - store { ptr, i64, i64 } { ptr @.str.5383, i64 20, i64 0 }, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - %t1269 = load { ptr, i64, i64 }, ptr %a1266 - store { ptr, i64, i64 } %t1269, ptr %a1271 - store { ptr, i64, i64 } { ptr @.str.5384, i64 1, i64 0 }, ptr %a1272 - call void @finch_str_concat(ptr %a1270, ptr %a1271, ptr %a1272) - store { ptr, i64, i64 } %t1269, ptr %a1273 - call void @finch_str_drop(ptr %a1273) - %t1274 = load { ptr, i64, i64 }, ptr %a1270 - call void @finch.gen.emit(ptr %t1264, { ptr, i64, i64 } %t1274) - store { ptr, i64, i64 } %t1274, ptr %a1275 - call void @finch_str_drop(ptr %a1275) - %t1276 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5385, i64 4, i64 0 }) - %t1277 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1276, 1 - call void @finch_str_drop(ptr %a1263) - call void @finch_str_drop(ptr %a1260) - call void @finch.drop.S_gen_Val(ptr %a1245) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1277 -endif8297: - %t1278 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1278, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5386, i64 5, i64 0 }, ptr %a1280 - %t1281 = call i32 @finch_str_eq(ptr %a1279, ptr %a1280) - %t1282 = icmp ne i32 %t1281, 0 - br i1 %t1282, label %then8302, label %endif8304 -then8302: - %t1283 = load ptr, ptr %a1 - %t1284 = call %S.gen.Val @finch.gen.strConst(ptr %t1283, { ptr, i64, i64 } { ptr @.str.5387, i64 0, i64 0 }) - store %S.gen.Val %t1284, ptr %a1285 - %t1286 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1287 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1286, i32 0, i32 1 - %t1288 = load i64, ptr %t1287 - %t1289 = icmp sgt i64 %t1288, 0 - br i1 %t1289, label %then8305, label %endif8307 -then8305: - %t1290 = load ptr, ptr %a1 - %t1291 = load %S.ast.Node, ptr %a2 - %t1292 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1290, %S.ast.Node %t1291, i64 0, i64 1, { ptr, i64, i64 } %t1292) - %t1293 = load ptr, ptr %a1 - %t1294 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1295 = load { ptr, i64, i64 }, ptr %t1294 - %t1296 = extractvalue { ptr, i64, i64 } %t1295, 1 - %t1297 = icmp uge i64 0, %t1296 - br i1 %t1297, label %range8308, label %inrange8309 -range8308: - call void @finch_panic_index(ptr @.str.5388, i64 5007, i64 0, i64 %t1296) - unreachable -inrange8309: - %t1298 = extractvalue { ptr, i64, i64 } %t1295, 0 - %t1299 = getelementptr inbounds %S.ast.Node, ptr %t1298, i64 0 - %t1300 = load %S.ast.Node, ptr %t1299 - %t1301 = call %S.gen.Val @finch.gen.strArg(ptr %t1293, %S.ast.Node %t1300, { ptr, i64, i64 } { ptr @.str.5389, i64 12, i64 0 }) - %t1302 = load %S.gen.Val, ptr %a1285 - store %S.gen.Val %t1301, ptr %a1285 - store %S.gen.Val %t1302, ptr %a1303 - call void @finch.drop.S_gen_Val(ptr %a1303) - br label %endif8307 -endif8307: - %t1304 = load ptr, ptr %a1 - %t1305 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t1304) - store { ptr, i64, i64 } %t1305, ptr %a1306 - %t1307 = load ptr, ptr %a1 - %t1308 = load { ptr, i64, i64 }, ptr %a1306 - store { ptr, i64, i64 } { ptr @.str.5390, i64 27, i64 0 }, ptr %a1310 - store { ptr, i64, i64 } %t1308, ptr %a1311 - call void @finch_str_concat(ptr %a1309, ptr %a1310, ptr %a1311) - %t1312 = load { ptr, i64, i64 }, ptr %a1309 - store { ptr, i64, i64 } %t1312, ptr %a1314 - store { ptr, i64, i64 } { ptr @.str.5391, i64 6, i64 0 }, ptr %a1315 - call void @finch_str_concat(ptr %a1313, ptr %a1314, ptr %a1315) - store { ptr, i64, i64 } %t1312, ptr %a1316 - call void @finch_str_drop(ptr %a1316) - %t1317 = load { ptr, i64, i64 }, ptr %a1313 - %t1318 = load ptr, ptr %a1 - %t1319 = load %S.gen.Val, ptr %a1285 - %t1320 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t1318, %S.gen.Val %t1319) - store { ptr, i64, i64 } %t1317, ptr %a1322 - store { ptr, i64, i64 } %t1320, ptr %a1323 - call void @finch_str_concat(ptr %a1321, ptr %a1322, ptr %a1323) - store { ptr, i64, i64 } %t1317, ptr %a1324 - call void @finch_str_drop(ptr %a1324) - store { ptr, i64, i64 } %t1320, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1321 - store { ptr, i64, i64 } %t1326, ptr %a1328 - store { ptr, i64, i64 } { ptr @.str.5392, i64 1, i64 0 }, ptr %a1329 - call void @finch_str_concat(ptr %a1327, ptr %a1328, ptr %a1329) - store { ptr, i64, i64 } %t1326, ptr %a1330 - call void @finch_str_drop(ptr %a1330) - %t1331 = load { ptr, i64, i64 }, ptr %a1327 - call void @finch.gen.emit(ptr %t1307, { ptr, i64, i64 } %t1331) - store { ptr, i64, i64 } %t1331, ptr %a1332 - call void @finch_str_drop(ptr %a1332) - %t1333 = load ptr, ptr %a1 - %t1334 = load %S.gen.Val, ptr %a1285 - call void @finch.gen.release(ptr %t1333, %S.gen.Val %t1334) - %t1335 = load ptr, ptr %a1 - %t1336 = load { ptr, i64, i64 }, ptr %a1306 - %t1337 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1335, { ptr, i64, i64 } { ptr @.str.5393, i64 17, i64 0 }, { ptr, i64, i64 } %t1336) - %t1338 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1337, 0 - %t1339 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5394, i64 3, i64 0 }) - %t1340 = insertvalue %S.gen.Val %t1338, %S.ast.Type %t1339, 1 - %t1341 = insertvalue %S.gen.Val %t1340, i1 true, 2 - call void @finch_str_drop(ptr %a1306) - call void @finch.drop.S_gen_Val(ptr %a1285) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1341 -endif8304: - %t1342 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1342, ptr %a1343 - store { ptr, i64, i64 } { ptr @.str.5395, i64 3, i64 0 }, ptr %a1344 - %t1345 = call i32 @finch_str_eq(ptr %a1343, ptr %a1344) - %t1346 = icmp ne i32 %t1345, 0 - br i1 %t1346, label %then8310, label %endif8312 -then8310: - %t1347 = load ptr, ptr %a1 - %t1348 = load %S.ast.Node, ptr %a2 - %t1349 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1347, %S.ast.Node %t1348, i64 0, i64 1, { ptr, i64, i64 } %t1349) - %t1350 = load ptr, ptr %a1 - %t1351 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1352 = load { ptr, i64, i64 }, ptr %t1351 - %t1353 = extractvalue { ptr, i64, i64 } %t1352, 1 - %t1354 = icmp uge i64 0, %t1353 - br i1 %t1354, label %range8313, label %inrange8314 -range8313: - call void @finch_panic_index(ptr @.str.5396, i64 5016, i64 0, i64 %t1353) - unreachable -inrange8314: - %t1355 = extractvalue { ptr, i64, i64 } %t1352, 0 - %t1356 = getelementptr inbounds %S.ast.Node, ptr %t1355, i64 0 - %t1357 = load %S.ast.Node, ptr %t1356 - %t1358 = call %S.gen.Val @finch.gen.expr(ptr %t1350, %S.ast.Node %t1357) - store %S.gen.Val %t1358, ptr %a1359 - %t1360 = load ptr, ptr %a1 - %t1361 = load ptr, ptr %a1 - %t1362 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1363 = load %S.ast.Type, ptr %t1362 - %t1364 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1361, %S.ast.Type %t1363) - store { ptr, i64, i64 } { ptr @.str.5397, i64 26, i64 0 }, ptr %a1366 - store { ptr, i64, i64 } %t1364, ptr %a1367 - call void @finch_str_concat(ptr %a1365, ptr %a1366, ptr %a1367) - store { ptr, i64, i64 } %t1364, ptr %a1368 - call void @finch_str_drop(ptr %a1368) - %t1369 = load { ptr, i64, i64 }, ptr %a1365 - store { ptr, i64, i64 } %t1369, ptr %a1371 - store { ptr, i64, i64 } { ptr @.str.5398, i64 1, i64 0 }, ptr %a1372 - call void @finch_str_concat(ptr %a1370, ptr %a1371, ptr %a1372) - store { ptr, i64, i64 } %t1369, ptr %a1373 - call void @finch_str_drop(ptr %a1373) - %t1374 = load { ptr, i64, i64 }, ptr %a1370 - %t1375 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1360, { ptr, i64, i64 } %t1374) - store { ptr, i64, i64 } %t1374, ptr %a1376 - call void @finch_str_drop(ptr %a1376) - store { ptr, i64, i64 } %t1375, ptr %a1377 - %t1378 = load ptr, ptr %a1 - %t1379 = load ptr, ptr %a1 - %t1380 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1381 = load %S.ast.Type, ptr %t1380 - %t1382 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t1379, %S.ast.Type %t1381) - %t1383 = load ptr, ptr %a1 - %t1384 = load %S.gen.Val, ptr %a1359 - %t1385 = call { ptr, i64, i64 } @finch.gen.own(ptr %t1383, %S.gen.Val %t1384) - %t1386 = load { ptr, i64, i64 }, ptr %a1377 - call void @finch.gen.store(ptr %t1378, { ptr, i64, i64 } %t1382, { ptr, i64, i64 } %t1385, { ptr, i64, i64 } %t1386) - store { ptr, i64, i64 } %t1382, ptr %a1387 - call void @finch_str_drop(ptr %a1387) - store { ptr, i64, i64 } %t1385, ptr %a1388 - call void @finch_str_drop(ptr %a1388) - %t1389 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1389, ptr %a1390 - call void @finch_str_copy(ptr %a1391, ptr %a1390) - %t1392 = load { ptr, i64, i64 }, ptr %a1391 - %t1393 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1392, 0 - %t1394 = getelementptr inbounds %S.gen.Val, ptr %a1359, i32 0, i32 1 - %t1395 = load %S.ast.Type, ptr %t1394 - %t1396 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t1395) - %t1397 = insertvalue %S.gen.Val %t1393, %S.ast.Type %t1396, 1 - call void @finch_str_drop(ptr %a1377) - call void @finch.drop.S_gen_Val(ptr %a1359) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1397 -endif8312: - %t1398 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1398, ptr %a1399 - store { ptr, i64, i64 } { ptr @.str.5399, i64 4, i64 0 }, ptr %a1400 - %t1401 = call i32 @finch_str_eq(ptr %a1399, ptr %a1400) - %t1402 = icmp ne i32 %t1401, 0 - br i1 %t1402, label %then8315, label %endif8317 -then8315: - %t1403 = load ptr, ptr %a1 - %t1404 = load %S.ast.Node, ptr %a2 - %t1405 = load { ptr, i64, i64 }, ptr %a8 - call void @finch.gen.checkArgs(ptr %t1403, %S.ast.Node %t1404, i64 0, i64 1, { ptr, i64, i64 } %t1405) - %t1406 = load ptr, ptr %a1 - %t1407 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1408 = load { ptr, i64, i64 }, ptr %t1407 - %t1409 = extractvalue { ptr, i64, i64 } %t1408, 1 - %t1410 = icmp uge i64 0, %t1409 - br i1 %t1410, label %range8318, label %inrange8319 -range8318: - call void @finch_panic_index(ptr @.str.5400, i64 5023, i64 0, i64 %t1409) - unreachable -inrange8319: - %t1411 = extractvalue { ptr, i64, i64 } %t1408, 0 - %t1412 = getelementptr inbounds %S.ast.Node, ptr %t1411, i64 0 - %t1413 = load %S.ast.Node, ptr %t1412 - %t1414 = call %S.gen.Val @finch.gen.expr(ptr %t1406, %S.ast.Node %t1413) - store %S.gen.Val %t1414, ptr %a1415 - %t1416 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1417 = getelementptr inbounds %S.ast.Type, ptr %t1416, i32 0, i32 0 - %t1418 = load { ptr, i64, i64 }, ptr %t1417 - store { ptr, i64, i64 } %t1418, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5401, i64 3, i64 0 }, ptr %a1420 - %t1421 = call i32 @finch_str_eq(ptr %a1419, ptr %a1420) - %t1422 = icmp eq i32 %t1421, 0 - br i1 %t1422, label %then8320, label %endif8322 -then8320: - %t1423 = load ptr, ptr %a1 - %t1424 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1425 = load { ptr, i64, i64 }, ptr %t1424 - %t1426 = extractvalue { ptr, i64, i64 } %t1425, 1 - %t1427 = icmp uge i64 0, %t1426 - br i1 %t1427, label %range8323, label %inrange8324 -range8323: - call void @finch_panic_index(ptr @.str.5402, i64 5025, i64 0, i64 %t1426) - unreachable -inrange8324: - %t1428 = extractvalue { ptr, i64, i64 } %t1425, 0 - %t1429 = getelementptr inbounds %S.ast.Node, ptr %t1428, i64 0 - %t1430 = load %S.ast.Node, ptr %t1429 - call void @finch.gen.fail(ptr %t1423, %S.ast.Node %t1430, { ptr, i64, i64 } { ptr @.str.5403, i64 119, i64 0 }) - br label %endif8322 -endif8322: - %t1431 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1432 = getelementptr inbounds %S.ast.Type, ptr %t1431, i32 0, i32 1 - %t1433 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1432, i32 0, i32 1 - %t1434 = load i64, ptr %t1433 - %t1435 = icmp sgt i64 %t1434, 0 - br label %logic.from8325 -logic.from8325: - br i1 %t1435, label %logic.rhs8326, label %logic.end8327 -logic.rhs8326: - %t1436 = load ptr, ptr %a1 - %t1437 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1438 = getelementptr inbounds %S.ast.Type, ptr %t1437, i32 0, i32 1 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - %t1440 = extractvalue { ptr, i64, i64 } %t1439, 1 - %t1441 = icmp uge i64 0, %t1440 - br i1 %t1441, label %range8328, label %inrange8329 -range8328: - call void @finch_panic_index(ptr @.str.5404, i64 5027, i64 0, i64 %t1440) - unreachable -inrange8329: - %t1442 = extractvalue { ptr, i64, i64 } %t1439, 0 - %t1443 = getelementptr inbounds %S.ast.Type, ptr %t1442, i64 0 - %t1444 = load %S.ast.Type, ptr %t1443 - %t1445 = call i1 @finch.gen.owning(ptr %t1436, %S.ast.Type %t1444) - br label %logic.rend8330 -logic.rend8330: - br label %logic.end8327 -logic.end8327: - %t1446 = phi i1 [ false, %logic.from8325 ], [ %t1445, %logic.rend8330 ] - br i1 %t1446, label %then8331, label %endif8333 -then8331: - %t1447 = load ptr, ptr %a1 - %t1448 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1447, { ptr, i64, i64 } { ptr @.str.5405, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1448, ptr %a1449 - %t1450 = load ptr, ptr %a1 - %t1451 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t1450, { ptr, i64, i64 } { ptr @.str.5406, i64 9, i64 0 }) - store { ptr, i64, i64 } %t1451, ptr %a1452 - %t1453 = load ptr, ptr %a1 - %t1454 = load ptr, ptr %a1 - %t1455 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1456 = load { ptr, i64, i64 }, ptr %t1455 - store { ptr, i64, i64 } { ptr @.str.5407, i64 12, i64 0 }, ptr %a1458 - store { ptr, i64, i64 } %t1456, ptr %a1459 - call void @finch_str_concat(ptr %a1457, ptr %a1458, ptr %a1459) - %t1460 = load { ptr, i64, i64 }, ptr %a1457 - store { ptr, i64, i64 } %t1460, ptr %a1462 - store { ptr, i64, i64 } { ptr @.str.5408, i64 6, i64 0 }, ptr %a1463 - call void @finch_str_concat(ptr %a1461, ptr %a1462, ptr %a1463) - store { ptr, i64, i64 } %t1460, ptr %a1464 - call void @finch_str_drop(ptr %a1464) - %t1465 = load { ptr, i64, i64 }, ptr %a1461 - %t1466 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1454, { ptr, i64, i64 } %t1465) - store { ptr, i64, i64 } %t1465, ptr %a1467 - call void @finch_str_drop(ptr %a1467) - %t1468 = load { ptr, i64, i64 }, ptr %a1452 - %t1469 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.condBr(ptr %t1453, { ptr, i64, i64 } %t1466, { ptr, i64, i64 } %t1468, { ptr, i64, i64 } %t1469) - store { ptr, i64, i64 } %t1466, ptr %a1470 - call void @finch_str_drop(ptr %a1470) - %t1471 = load ptr, ptr %a1 - %t1472 = load { ptr, i64, i64 }, ptr %a1449 - call void @finch.gen.label(ptr %t1471, { ptr, i64, i64 } %t1472) - %t1473 = load ptr, ptr %a1 - %t1474 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1475 = load { ptr, i64, i64 }, ptr %t1474 - %t1476 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 1 - %t1477 = getelementptr inbounds %S.ast.Type, ptr %t1476, i32 0, i32 1 - %t1478 = load { ptr, i64, i64 }, ptr %t1477 - %t1479 = extractvalue { ptr, i64, i64 } %t1478, 1 - %t1480 = icmp uge i64 0, %t1479 - br i1 %t1480, label %range8334, label %inrange8335 -range8334: - call void @finch_panic_index(ptr @.str.5409, i64 5032, i64 0, i64 %t1479) - unreachable -inrange8335: - %t1481 = extractvalue { ptr, i64, i64 } %t1478, 0 - %t1482 = getelementptr inbounds %S.ast.Type, ptr %t1481, i64 0 - %t1483 = load %S.ast.Type, ptr %t1482 - call void @finch.gen.dropAt(ptr %t1473, { ptr, i64, i64 } %t1475, %S.ast.Type %t1483) - %t1484 = load ptr, ptr %a1 - %t1485 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.br(ptr %t1484, { ptr, i64, i64 } %t1485) - %t1486 = load ptr, ptr %a1 - %t1487 = load { ptr, i64, i64 }, ptr %a1452 - call void @finch.gen.label(ptr %t1486, { ptr, i64, i64 } %t1487) - call void @finch_str_drop(ptr %a1452) - call void @finch_str_drop(ptr %a1449) - br label %endif8333 -endif8333: - %t1488 = load ptr, ptr %a1 - %t1489 = getelementptr inbounds %S.gen.Val, ptr %a1415, i32 0, i32 0 - %t1490 = load { ptr, i64, i64 }, ptr %t1489 - store { ptr, i64, i64 } { ptr @.str.5410, i64 20, i64 0 }, ptr %a1492 - store { ptr, i64, i64 } %t1490, ptr %a1493 - call void @finch_str_concat(ptr %a1491, ptr %a1492, ptr %a1493) - %t1494 = load { ptr, i64, i64 }, ptr %a1491 - store { ptr, i64, i64 } %t1494, ptr %a1496 - store { ptr, i64, i64 } { ptr @.str.5411, i64 1, i64 0 }, ptr %a1497 - call void @finch_str_concat(ptr %a1495, ptr %a1496, ptr %a1497) - store { ptr, i64, i64 } %t1494, ptr %a1498 - call void @finch_str_drop(ptr %a1498) - %t1499 = load { ptr, i64, i64 }, ptr %a1495 - call void @finch.gen.emit(ptr %t1488, { ptr, i64, i64 } %t1499) - store { ptr, i64, i64 } %t1499, ptr %a1500 - call void @finch_str_drop(ptr %a1500) - %t1501 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5412, i64 4, i64 0 }) - %t1502 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1501, 1 - call void @finch.drop.S_gen_Val(ptr %a1415) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1502 -endif8317: - %t1503 = load ptr, ptr %a1 - %t1504 = load ptr, ptr %a1 - %t1505 = icmp eq ptr %t1504, null - br i1 %t1505, label %panic8336, label %ok8337 -panic8336: - call void @finch_panic(ptr @.str.5413, i64 5039, ptr @.str.5414) - unreachable -ok8337: - %t1506 = getelementptr inbounds %S.gen.Gen, ptr %t1504, i32 0, i32 14 - %t1507 = load { ptr, i64, i64 }, ptr %t1506 - %t1508 = load { ptr, i64, i64 }, ptr %a8 - %t1509 = call i64 @finch.gen.findFn(ptr %t1503, { ptr, i64, i64 } %t1507, { ptr, i64, i64 } %t1508) - store i64 %t1509, ptr %a1510 - %t1511 = load i64, ptr %a1510 - %t1512 = icmp sge i64 %t1511, 0 - br i1 %t1512, label %then8338, label %endif8340 -then8338: - %t1513 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1514 = getelementptr inbounds %S.ast.Type, ptr %t1513, i32 0, i32 1 - %t1515 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1514, i32 0, i32 1 - %t1516 = load i64, ptr %t1515 - %t1517 = icmp sgt i64 %t1516, 0 - br i1 %t1517, label %then8341, label %endif8343 -then8341: - %t1518 = load ptr, ptr %a1 - %t1519 = load %S.ast.Node, ptr %a2 - %t1520 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5415, i64 1, i64 0 }, ptr %a1522 - store { ptr, i64, i64 } %t1520, ptr %a1523 - call void @finch_str_concat(ptr %a1521, ptr %a1522, ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1521 - store { ptr, i64, i64 } %t1524, ptr %a1526 - store { ptr, i64, i64 } { ptr @.str.5416, i64 47, i64 0 }, ptr %a1527 - call void @finch_str_concat(ptr %a1525, ptr %a1526, ptr %a1527) - store { ptr, i64, i64 } %t1524, ptr %a1528 - call void @finch_str_drop(ptr %a1528) - %t1529 = load { ptr, i64, i64 }, ptr %a1525 - call void @finch.gen.fail(ptr %t1518, %S.ast.Node %t1519, { ptr, i64, i64 } %t1529) - store { ptr, i64, i64 } %t1529, ptr %a1530 - call void @finch_str_drop(ptr %a1530) - br label %endif8343 -endif8343: - %t1531 = load ptr, ptr %a1 - %t1532 = load i64, ptr %a1510 - %t1533 = load %S.ast.Node, ptr %a2 - %t1534 = load { ptr, i64, i64 }, ptr %a8 - %t1535 = call %S.gen.Val @finch.gen.callFn(ptr %t1531, i64 %t1532, %S.ast.Node %t1533, i64 0, { ptr, i64, i64 } %t1534, { ptr, i64, i64 } { ptr @.str.5417, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5418, i64 0, i64 0 }) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1535 -endif8340: - %t1536 = load ptr, ptr %a1 - %t1537 = load ptr, ptr %a1 - %t1538 = icmp eq ptr %t1537, null - br i1 %t1538, label %panic8344, label %ok8345 -panic8344: - call void @finch_panic(ptr @.str.5419, i64 5046, ptr @.str.5420) - unreachable -ok8345: - %t1539 = getelementptr inbounds %S.gen.Gen, ptr %t1537, i32 0, i32 14 - %t1540 = load { ptr, i64, i64 }, ptr %t1539 - %t1541 = load { ptr, i64, i64 }, ptr %a8 - %t1542 = call i64 @finch.gen.findTemplate(ptr %t1536, { ptr, i64, i64 } %t1540, { ptr, i64, i64 } %t1541, { ptr, i64, i64 } { ptr @.str.5421, i64 0, i64 0 }, i1 false) - store i64 %t1542, ptr %a1543 - %t1544 = load i64, ptr %a1543 - %t1545 = icmp sge i64 %t1544, 0 - br i1 %t1545, label %then8346, label %endif8348 -then8346: - %t1546 = load ptr, ptr %a1 - %t1547 = load %S.ast.Node, ptr %a2 - %t1548 = load i64, ptr %a1543 - %t1549 = load { ptr, i64, i64 }, ptr %a8 - %t1550 = call %S.gen.Val @finch.gen.genericCall(ptr %t1546, %S.ast.Node %t1547, i64 %t1548, i64 0, { ptr, i64, i64 } %t1549) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1550 -endif8348: - %t1551 = load ptr, ptr %a1 - %t1552 = load ptr, ptr %a1 - %t1553 = icmp eq ptr %t1552, null - br i1 %t1553, label %panic8349, label %ok8350 -panic8349: - call void @finch_panic(ptr @.str.5422, i64 5050, ptr @.str.5423) - unreachable -ok8350: - %t1554 = getelementptr inbounds %S.gen.Gen, ptr %t1552, i32 0, i32 14 - %t1555 = load { ptr, i64, i64 }, ptr %t1554 - %t1556 = load { ptr, i64, i64 }, ptr %a8 - %t1557 = call i64 @finch.gen.findTemplate(ptr %t1551, { ptr, i64, i64 } %t1555, { ptr, i64, i64 } %t1556, { ptr, i64, i64 } { ptr @.str.5424, i64 0, i64 0 }, i1 true) - %t1558 = icmp sge i64 %t1557, 0 - br i1 %t1558, label %then8351, label %endif8353 -then8351: - %t1559 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1560 = getelementptr inbounds %S.ast.Type, ptr %t1559, i32 0, i32 1 - %t1561 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1560, i32 0, i32 1 - %t1562 = load i64, ptr %t1561 - %t1563 = icmp eq i64 %t1562, 0 - br i1 %t1563, label %then8354, label %endif8356 -then8354: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5425, i64 1, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5426, i64 42, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - %t1576 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1575, ptr %a1578 - store { ptr, i64, i64 } %t1576, ptr %a1579 - call void @finch_str_concat(ptr %a1577, ptr %a1578, ptr %a1579) - store { ptr, i64, i64 } %t1575, ptr %a1580 - call void @finch_str_drop(ptr %a1580) - %t1581 = load { ptr, i64, i64 }, ptr %a1577 - store { ptr, i64, i64 } %t1581, ptr %a1583 - store { ptr, i64, i64 } { ptr @.str.5427, i64 10, i64 0 }, ptr %a1584 - call void @finch_str_concat(ptr %a1582, ptr %a1583, ptr %a1584) - store { ptr, i64, i64 } %t1581, ptr %a1585 - call void @finch_str_drop(ptr %a1585) - %t1586 = load { ptr, i64, i64 }, ptr %a1582 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1586) - store { ptr, i64, i64 } %t1586, ptr %a1587 - call void @finch_str_drop(ptr %a1587) - br label %endif8356 -endif8356: - store { ptr, i64, i64 } zeroinitializer, ptr %a1588 - %t1589 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 5 - %t1590 = getelementptr inbounds %S.ast.Type, ptr %t1589, i32 0, i32 1 - store i64 0, ptr %a1591 - br label %each.cond8357 -each.cond8357: - %t1592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1590, i32 0, i32 1 - %t1593 = load i64, ptr %t1592 - %t1594 = load i64, ptr %a1591 - %t1595 = icmp slt i64 %t1594, %t1593 - br i1 %t1595, label %each.body8358, label %each.end8360 -each.body8358: - %t1596 = load ptr, ptr %t1590 - %t1597 = getelementptr inbounds %S.ast.Type, ptr %t1596, i64 %t1594 - %t1598 = load %S.ast.Type, ptr %t1597 - store %S.ast.Type %t1598, ptr %a1599 - %t1600 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1588, i32 0, i32 1 - %t1601 = load ptr, ptr %a1 - %t1602 = load %S.ast.Type, ptr %a1599 - %t1603 = load %S.ast.Node, ptr %a2 - %t1604 = call %S.ast.Type @finch.gen.resolve(ptr %t1601, %S.ast.Type %t1602, %S.ast.Node %t1603) - %t1605 = load i64, ptr %t1600 - %t1606 = add i64 %t1605, 1 - call void @finch_arr_reserve(ptr %a1588, i64 %t1606, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t1607 = load ptr, ptr %a1588 - %t1608 = getelementptr inbounds %S.ast.Type, ptr %t1607, i64 %t1605 - store %S.ast.Type %t1604, ptr %t1608 - store i64 %t1606, ptr %t1600 - br label %each.step8359 -each.step8359: - %t1609 = load i64, ptr %a1591 - %t1610 = add i64 %t1609, 1 - store i64 %t1610, ptr %a1591 - br label %each.cond8357 -each.end8360: - %t1611 = load ptr, ptr %a1 - %t1612 = load ptr, ptr %a1 - %t1613 = icmp eq ptr %t1612, null - br i1 %t1613, label %panic8361, label %ok8362 -panic8361: - call void @finch_panic(ptr @.str.5428, i64 5059, ptr @.str.5429) - unreachable -ok8362: - %t1614 = getelementptr inbounds %S.gen.Gen, ptr %t1612, i32 0, i32 14 - %t1615 = load { ptr, i64, i64 }, ptr %t1614 - %t1616 = load { ptr, i64, i64 }, ptr %a8 - %t1617 = load { ptr, i64, i64 }, ptr %a1588 - %t1618 = load %S.ast.Node, ptr %a2 - %t1619 = call %S.ast.Type @finch.gen.instStruct(ptr %t1611, { ptr, i64, i64 } %t1615, { ptr, i64, i64 } %t1616, { ptr, i64, i64 } %t1617, %S.ast.Node %t1618) - store %S.ast.Type %t1619, ptr %a1620 - %t1621 = load ptr, ptr %a1 - %t1622 = load ptr, ptr %a1 - %t1623 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 3 - %t1624 = load { ptr, i64, i64 }, ptr %t1623 - %t1625 = getelementptr inbounds %S.ast.Type, ptr %a1620, i32 0, i32 2 - %t1626 = load { ptr, i64, i64 }, ptr %t1625 - %t1627 = call i64 @finch.gen.findStruct(ptr %t1622, { ptr, i64, i64 } %t1624, { ptr, i64, i64 } %t1626) - %t1628 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1629 = load { ptr, i64, i64 }, ptr %t1628 - %t1630 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1631 = load { ptr, i64, i64 }, ptr %t1630 - %t1632 = load %S.ast.Node, ptr %a2 - %t1633 = call %S.gen.Val @finch.gen.construct(ptr %t1621, i64 %t1627, { ptr, i64, i64 } %t1629, { ptr, i64, i64 } %t1631, %S.ast.Node %t1632) - call void @finch.drop.S_ast_Type(ptr %a1620) - call void @finch.drop.arr_S_ast_Type(ptr %a1588) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1633 -endif8353: - %t1634 = load ptr, ptr %a1 - %t1635 = load ptr, ptr %a1 - %t1636 = icmp eq ptr %t1635, null - br i1 %t1636, label %panic8363, label %ok8364 -panic8363: - call void @finch_panic(ptr @.str.5430, i64 5062, ptr @.str.5431) - unreachable -ok8364: - %t1637 = getelementptr inbounds %S.gen.Gen, ptr %t1635, i32 0, i32 14 - %t1638 = load { ptr, i64, i64 }, ptr %t1637 - %t1639 = load { ptr, i64, i64 }, ptr %a8 - %t1640 = call i64 @finch.gen.findStruct(ptr %t1634, { ptr, i64, i64 } %t1638, { ptr, i64, i64 } %t1639) - store i64 %t1640, ptr %a1641 - %t1642 = load i64, ptr %a1641 - %t1643 = icmp sge i64 %t1642, 0 - br i1 %t1643, label %then8365, label %endif8367 -then8365: - %t1644 = load ptr, ptr %a1 - %t1645 = icmp eq ptr %t1644, null - br i1 %t1645, label %panic8368, label %ok8369 -panic8368: - call void @finch_panic(ptr @.str.5432, i64 5064, ptr @.str.5433) - unreachable -ok8369: - %t1646 = getelementptr inbounds %S.gen.Gen, ptr %t1644, i32 0, i32 16 - %t1647 = load i64, ptr %a1641 - %t1648 = load { ptr, i64, i64 }, ptr %t1646 - %t1649 = extractvalue { ptr, i64, i64 } %t1648, 1 - %t1650 = icmp uge i64 %t1647, %t1649 - br i1 %t1650, label %range8370, label %inrange8371 -range8370: - call void @finch_panic_index(ptr @.str.5434, i64 5064, i64 %t1647, i64 %t1649) - unreachable -inrange8371: - %t1651 = extractvalue { ptr, i64, i64 } %t1648, 0 - %t1652 = getelementptr inbounds %S.gen.StructDef, ptr %t1651, i64 %t1647 - %t1653 = load %S.gen.StructDef, ptr %t1652 - store %S.gen.StructDef %t1653, ptr %a1654 - call void @finch.copy.S_gen_StructDef(ptr %a1655, ptr %a1654) - %t1656 = load %S.gen.StructDef, ptr %a1655 - store %S.gen.StructDef %t1656, ptr %a1657 - %t1658 = load ptr, ptr %a1 - %t1659 = icmp eq ptr %t1658, null - br i1 %t1659, label %panic8372, label %ok8373 -panic8372: - call void @finch_panic(ptr @.str.5435, i64 5065, ptr @.str.5436) - unreachable -ok8373: - %t1660 = getelementptr inbounds %S.gen.Gen, ptr %t1658, i32 0, i32 28 - %t1661 = load i1, ptr %t1660 - br label %logic.from8374 -logic.from8374: - br i1 %t1661, label %logic.rhs8375, label %logic.end8376 -logic.rhs8375: - %t1662 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 2 - %t1663 = load i1, ptr %t1662 - %t1664 = xor i1 %t1663, true - br label %logic.rend8377 -logic.rend8377: - br label %logic.end8376 -logic.end8376: - %t1665 = phi i1 [ false, %logic.from8374 ], [ %t1664, %logic.rend8377 ] - br i1 %t1665, label %then8378, label %endif8380 -then8378: - %t1666 = load ptr, ptr %a1 - %t1667 = icmp eq ptr %t1666, null - br i1 %t1667, label %panic8381, label %ok8382 -panic8381: - call void @finch_panic(ptr @.str.5437, i64 5066, ptr @.str.5438) - unreachable -ok8382: - %t1668 = getelementptr inbounds %S.gen.Gen, ptr %t1666, i32 0, i32 0 - %t1669 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 13 - %t1670 = load i64, ptr %t1669 - %t1671 = load { ptr, i64, i64 }, ptr %t1668 - %t1672 = extractvalue { ptr, i64, i64 } %t1671, 1 - %t1673 = icmp uge i64 %t1670, %t1672 - br i1 %t1673, label %range8383, label %inrange8384 -range8383: - call void @finch_panic_index(ptr @.str.5439, i64 5066, i64 %t1670, i64 %t1672) - unreachable -inrange8384: - %t1674 = extractvalue { ptr, i64, i64 } %t1671, 0 - %t1675 = getelementptr inbounds %S.ast.Program, ptr %t1674, i64 %t1670 - %t1676 = getelementptr inbounds %S.ast.Program, ptr %t1675, i32 0, i32 6 - %t1677 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 14 - %t1678 = load i64, ptr %t1677 - %t1679 = load { ptr, i64, i64 }, ptr %t1676 - %t1680 = extractvalue { ptr, i64, i64 } %t1679, 1 - %t1681 = icmp uge i64 %t1678, %t1680 - br i1 %t1681, label %range8385, label %inrange8386 -range8385: - call void @finch_panic_index(ptr @.str.5440, i64 5066, i64 %t1678, i64 %t1680) - unreachable -inrange8386: - %t1682 = extractvalue { ptr, i64, i64 } %t1679, 0 - %t1683 = getelementptr inbounds %S.ast.Node, ptr %t1682, i64 %t1678 - %t1684 = load %S.ast.Node, ptr %t1683 - store %S.ast.Node %t1684, ptr %a1685 - call void @finch.copy.S_ast_Node(ptr %a1686, ptr %a1685) - %t1687 = load %S.ast.Node, ptr %a1686 - store %S.ast.Node %t1687, ptr %a1688 - %t1689 = load ptr, ptr %a1 - %t1690 = load %S.ast.Node, ptr %a2 - %t1691 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 12 - %t1692 = load i64, ptr %t1691 - %t1693 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t1694 = load i64, ptr %t1693 - %t1695 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 1 - %t1696 = load { ptr, i64, i64 }, ptr %t1695 - store { ptr, i64, i64 } { ptr @.str.5441, i64 16, i64 0 }, ptr %a1698 - store { ptr, i64, i64 } %t1696, ptr %a1699 - call void @finch_str_concat(ptr %a1697, ptr %a1698, ptr %a1699) - %t1700 = load { ptr, i64, i64 }, ptr %a1697 - store { ptr, i64, i64 } %t1700, ptr %a1702 - store { ptr, i64, i64 } { ptr @.str.5442, i64 3, i64 0 }, ptr %a1703 - call void @finch_str_concat(ptr %a1701, ptr %a1702, ptr %a1703) - store { ptr, i64, i64 } %t1700, ptr %a1704 - call void @finch_str_drop(ptr %a1704) - %t1705 = load { ptr, i64, i64 }, ptr %a1701 - %t1706 = getelementptr inbounds %S.gen.StructDef, ptr %a1657, i32 0, i32 11 - %t1707 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1706, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5443, i64 2, i64 0 }, ptr %a1708 - call void @finch_str_join(ptr %a1709, ptr %t1706, ptr %a1708) - %t1710 = load { ptr, i64, i64 }, ptr %a1709 - store { ptr, i64, i64 } %t1705, ptr %a1712 - store { ptr, i64, i64 } %t1710, ptr %a1713 - call void @finch_str_concat(ptr %a1711, ptr %a1712, ptr %a1713) - store { ptr, i64, i64 } %t1705, ptr %a1714 - call void @finch_str_drop(ptr %a1714) - store { ptr, i64, i64 } %t1710, ptr %a1715 - call void @finch_str_drop(ptr %a1715) - %t1716 = load { ptr, i64, i64 }, ptr %a1711 - store { ptr, i64, i64 } %t1716, ptr %a1718 - store { ptr, i64, i64 } { ptr @.str.5444, i64 6, i64 0 }, ptr %a1719 - call void @finch_str_concat(ptr %a1717, ptr %a1718, ptr %a1719) - store { ptr, i64, i64 } %t1716, ptr %a1720 - call void @finch_str_drop(ptr %a1720) - %t1721 = load { ptr, i64, i64 }, ptr %a1717 - %t1722 = load ptr, ptr %a1 - %t1723 = icmp eq ptr %t1722, null - br i1 %t1723, label %panic8387, label %ok8388 -panic8387: - call void @finch_panic(ptr @.str.5445, i64 5067, ptr @.str.5446) - unreachable -ok8388: - %t1724 = getelementptr inbounds %S.gen.Gen, ptr %t1722, i32 0, i32 1 - %t1725 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 13 - %t1726 = load i64, ptr %t1725 - %t1727 = load { ptr, i64, i64 }, ptr %t1724 - %t1728 = extractvalue { ptr, i64, i64 } %t1727, 1 - %t1729 = icmp uge i64 %t1726, %t1728 - br i1 %t1729, label %range8389, label %inrange8390 -range8389: - call void @finch_panic_index(ptr @.str.5447, i64 5067, i64 %t1726, i64 %t1728) - unreachable -inrange8390: - %t1730 = extractvalue { ptr, i64, i64 } %t1727, 0 - %t1731 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1730, i64 %t1726 - %t1732 = load { ptr, i64, i64 }, ptr %t1731 - %t1733 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 11 - %t1734 = load i64, ptr %t1733 - %t1735 = getelementptr inbounds %S.ast.Node, ptr %a1688, i32 0, i32 12 - %t1736 = load i64, ptr %t1735 - call void @finch.gen.noteRef(ptr %t1689, %S.ast.Node %t1690, i64 %t1692, i64 %t1694, { ptr, i64, i64 } %t1721, { ptr, i64, i64 } %t1732, i64 %t1734, i64 %t1736) - store { ptr, i64, i64 } %t1721, ptr %a1737 - call void @finch_str_drop(ptr %a1737) - call void @finch.drop.S_ast_Node(ptr %a1688) - br label %endif8380 -endif8380: - %t1738 = load ptr, ptr %a1 - %t1739 = load i64, ptr %a1641 - %t1740 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1741 = load { ptr, i64, i64 }, ptr %t1740 - %t1742 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1743 = load { ptr, i64, i64 }, ptr %t1742 - %t1744 = load %S.ast.Node, ptr %a2 - %t1745 = call %S.gen.Val @finch.gen.construct(ptr %t1738, i64 %t1739, { ptr, i64, i64 } %t1741, { ptr, i64, i64 } %t1743, %S.ast.Node %t1744) - call void @finch.drop.S_gen_StructDef(ptr %a1657) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1745 -endif8367: - %t1746 = load ptr, ptr %a1 - %t1747 = load ptr, ptr %a1 - %t1748 = icmp eq ptr %t1747, null - br i1 %t1748, label %panic8391, label %ok8392 -panic8391: - call void @finch_panic(ptr @.str.5448, i64 5071, ptr @.str.5449) - unreachable -ok8392: - %t1749 = getelementptr inbounds %S.gen.Gen, ptr %t1747, i32 0, i32 14 - %t1750 = load { ptr, i64, i64 }, ptr %t1749 - %t1751 = load { ptr, i64, i64 }, ptr %a8 - %t1752 = call i64 @finch.gen.findEnum(ptr %t1746, { ptr, i64, i64 } %t1750, { ptr, i64, i64 } %t1751) - store i64 %t1752, ptr %a1753 - %t1754 = load i64, ptr %a1753 - %t1755 = icmp sge i64 %t1754, 0 - br i1 %t1755, label %then8393, label %endif8395 -then8393: - %t1756 = load ptr, ptr %a1 - %t1757 = load %S.ast.Node, ptr %a2 - %t1758 = load i64, ptr %a1753 - %t1759 = call %S.gen.Val @finch.gen.enumFrom(ptr %t1756, %S.ast.Node %t1757, i64 %t1758) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1759 -endif8395: - %t1760 = load ptr, ptr %a1 - %t1761 = icmp eq ptr %t1760, null - br i1 %t1761, label %panic8396, label %ok8397 -panic8396: - call void @finch_panic(ptr @.str.5450, i64 5075, ptr @.str.5451) - unreachable -ok8397: - %t1762 = getelementptr inbounds %S.gen.Gen, ptr %t1760, i32 0, i32 26 - %t1763 = getelementptr inbounds %S.cimport.CImports, ptr %t1762, i32 0, i32 0 - %t1764 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1764, ptr %a1765 - %t1766 = call i64 @finch_map_find(ptr %t1763, ptr %a1765, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1767 = icmp sge i64 %t1766, 0 - br i1 %t1767, label %then8398, label %endif8400 -then8398: - %t1768 = load ptr, ptr %a1 - %t1769 = load %S.ast.Node, ptr %a2 - %t1770 = load ptr, ptr %a1 - %t1771 = icmp eq ptr %t1770, null - br i1 %t1771, label %panic8401, label %ok8402 -panic8401: - call void @finch_panic(ptr @.str.5452, i64 5076, ptr @.str.5453) - unreachable -ok8402: - %t1772 = getelementptr inbounds %S.gen.Gen, ptr %t1770, i32 0, i32 26 - %t1773 = getelementptr inbounds %S.cimport.CImports, ptr %t1772, i32 0, i32 0 - %t1774 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t1774, ptr %a1775 - %t1776 = call i64 @finch_map_find(ptr %t1773, ptr %a1775, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t1777 = icmp slt i64 %t1776, 0 - br i1 %t1777, label %map.missing8403, label %map.found8404 -map.missing8403: - store { ptr, i64, i64 } zeroinitializer, ptr %a1778 - store { ptr, i64, i64 } %t1774, ptr %a1779 - call void @finch_buf_str(ptr %a1778, ptr %a1779, i32 1) - call void @finch_map_missing(ptr @.str.5454, i64 5076, ptr %a1778) - unreachable -map.found8404: - %t1780 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t1773, i32 0, i32 0 - %t1781 = load ptr, ptr %t1780 - %t1782 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1781, i64 %t1776 - %t1783 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t1782, i32 0, i32 2 - %t1784 = load %S.cimport.CFunc, ptr %t1783 - %t1785 = call %S.gen.Val @finch.gen.callC(ptr %t1768, %S.ast.Node %t1769, %S.cimport.CFunc %t1784) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1785 -endif8400: - %t1786 = load ptr, ptr %a1 - %t1787 = load { ptr, i64, i64 }, ptr %a8 - %t1788 = call i64 @finch.gen.findStruct(ptr %t1786, { ptr, i64, i64 } { ptr @.str.5455, i64 1, i64 0 }, { ptr, i64, i64 } %t1787) - store i64 %t1788, ptr %a1641 - %t1789 = load i64, ptr %a1641 - %t1790 = icmp sge i64 %t1789, 0 - br i1 %t1790, label %then8405, label %endif8407 -then8405: - %t1791 = load ptr, ptr %a1 - %t1792 = load i64, ptr %a1641 - %t1793 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1794 = load { ptr, i64, i64 }, ptr %t1793 - %t1795 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t1796 = load { ptr, i64, i64 }, ptr %t1795 - %t1797 = load %S.ast.Node, ptr %a2 - %t1798 = call %S.gen.Val @finch.gen.construct(ptr %t1791, i64 %t1792, { ptr, i64, i64 } %t1794, { ptr, i64, i64 } %t1796, %S.ast.Node %t1797) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val %t1798 -endif8407: - %t1799 = load ptr, ptr %a1 - %t1800 = load { ptr, i64, i64 }, ptr %a8 - %t1801 = call i64 @finch.gen.lookup(ptr %t1799, { ptr, i64, i64 } %t1800) - %t1802 = icmp sge i64 %t1801, 0 - br i1 %t1802, label %then8408, label %endif8410 -then8408: - %t1803 = load ptr, ptr %a1 - %t1804 = load %S.ast.Node, ptr %a2 - %t1805 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5456, i64 1, i64 0 }, ptr %a1807 - store { ptr, i64, i64 } %t1805, ptr %a1808 - call void @finch_str_concat(ptr %a1806, ptr %a1807, ptr %a1808) - %t1809 = load { ptr, i64, i64 }, ptr %a1806 - store { ptr, i64, i64 } %t1809, ptr %a1811 - store { ptr, i64, i64 } { ptr @.str.5457, i64 31, i64 0 }, ptr %a1812 - call void @finch_str_concat(ptr %a1810, ptr %a1811, ptr %a1812) - store { ptr, i64, i64 } %t1809, ptr %a1813 - call void @finch_str_drop(ptr %a1813) - %t1814 = load { ptr, i64, i64 }, ptr %a1810 - call void @finch.gen.fail(ptr %t1803, %S.ast.Node %t1804, { ptr, i64, i64 } %t1814) - store { ptr, i64, i64 } %t1814, ptr %a1815 - call void @finch_str_drop(ptr %a1815) - br label %endif8410 -endif8410: - %t1816 = load ptr, ptr %a1 - %t1817 = load %S.ast.Node, ptr %a2 - %t1818 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.5458, i64 28, i64 0 }, ptr %a1820 - store { ptr, i64, i64 } %t1818, ptr %a1821 - call void @finch_str_concat(ptr %a1819, ptr %a1820, ptr %a1821) - %t1822 = load { ptr, i64, i64 }, ptr %a1819 - store { ptr, i64, i64 } %t1822, ptr %a1824 - store { ptr, i64, i64 } { ptr @.str.5459, i64 1, i64 0 }, ptr %a1825 - call void @finch_str_concat(ptr %a1823, ptr %a1824, ptr %a1825) - store { ptr, i64, i64 } %t1822, ptr %a1826 - call void @finch_str_drop(ptr %a1826) - %t1827 = load { ptr, i64, i64 }, ptr %a1823 - %t1828 = load { ptr, i64, i64 }, ptr %a8 - %t1829 = call { ptr, i64, i64 } @finch.gen.headerHint({ ptr, i64, i64 } %t1828) - store { ptr, i64, i64 } %t1827, ptr %a1831 - store { ptr, i64, i64 } %t1829, ptr %a1832 - call void @finch_str_concat(ptr %a1830, ptr %a1831, ptr %a1832) - store { ptr, i64, i64 } %t1827, ptr %a1833 - call void @finch_str_drop(ptr %a1833) - store { ptr, i64, i64 } %t1829, ptr %a1834 - call void @finch_str_drop(ptr %a1834) - %t1835 = load { ptr, i64, i64 }, ptr %a1830 - call void @finch.gen.fail(ptr %t1816, %S.ast.Node %t1817, { ptr, i64, i64 } %t1835) - store { ptr, i64, i64 } %t1835, ptr %a1836 - call void @finch_str_drop(ptr %a1836) - call void @finch_str_drop(ptr %a570) - call void @finch_str_drop(ptr %a8) - ret %S.gen.Val zeroinitializer -} - -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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca i64, align 16 - %a70 = alloca i64, align 16 - %a83 = alloca %S.ast.Node, align 16 - %a84 = alloca %S.ast.Node, align 16 - %a86 = alloca %S.ast.Node, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca %S.gen.Val, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca %S.gen.Val, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca %S.ast.Type, align 16 - %a166 = alloca %S.ast.Type, align 16 - %a171 = alloca %S.gen.Val, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca %S.gen.Val, align 16 - %a204 = alloca %S.gen.Val, align 16 - %a220 = alloca %S.gen.Val, align 16 - %a221 = alloca i64, align 16 - %a229 = alloca %S.gen.Val, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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 %panic8411, label %ok8412 -panic8411: - call void @finch_panic(ptr @.str.5460, i64 5090, ptr @.str.5461) - unreachable -ok8412: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 15 - %t11 = load i64, ptr %a2 - %t12 = load { ptr, i64, i64 }, ptr %t10 - %t13 = extractvalue { ptr, i64, i64 } %t12, 1 - %t14 = icmp uge i64 %t11, %t13 - br i1 %t14, label %range8413, label %inrange8414 -range8413: - call void @finch_panic_index(ptr @.str.5462, i64 5090, i64 %t11, i64 %t13) - unreachable -inrange8414: - %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.from8415 -logic.from8415: - br i1 %t25, label %logic.rhs8416, label %logic.end8417 -logic.rhs8416: - %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.5463, 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.rend8418 -logic.rend8418: - br label %logic.end8417 -logic.end8417: - %t32 = phi i1 [ false, %logic.from8415 ], [ %t31, %logic.rend8418 ] - br i1 %t32, label %then8419, label %endif8421 -then8419: - %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.5464, i64 52, i64 0 }) - br label %endif8421 -endif8421: - %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 %then8422, label %endif8424 -then8422: - %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.5465, 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 %endif8424 -endif8424: - store { ptr, i64, i64 } zeroinitializer, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = icmp eq ptr %t61, null - br i1 %t62, label %panic8425, label %ok8426 -panic8425: - call void @finch_panic(ptr @.str.5466, i64 5101, ptr @.str.5467) - unreachable -ok8426: - %t63 = getelementptr inbounds %S.gen.Gen, ptr %t61, i32 0, i32 11 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t63, i32 0, i32 1 - %t65 = load i64, ptr %t64 - store i64 %t65, ptr %a66 - %t67 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i32 0, i32 1 - %t69 = load i64, ptr %t68 - store i64 0, ptr %a70 - br label %for.cond8427 -for.cond8427: - %t71 = load i64, ptr %a70 - %t72 = icmp slt i64 %t71, %t69 - br i1 %t72, label %for.body8428, label %for.end8430 -for.body8428: - %t73 = getelementptr inbounds %S.ast.Node, ptr %a3, i32 0, i32 9 - %t74 = load i64, ptr %a4 - %t75 = load i64, ptr %a70 - %t76 = add i64 %t74, %t75 - %t77 = load { ptr, i64, i64 }, ptr %t73 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range8431, label %inrange8432 -range8431: - call void @finch_panic_index(ptr @.str.5468, i64 5103, i64 %t76, i64 %t78) - unreachable -inrange8432: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds %S.ast.Node, ptr %t80, i64 %t76 - %t82 = load %S.ast.Node, ptr %t81 - store %S.ast.Node %t82, ptr %a83 - call void @finch.copy.S_ast_Node(ptr %a84, ptr %a83) - %t85 = load %S.ast.Node, ptr %a84 - store %S.ast.Node %t85, ptr %a86 - %t87 = load ptr, ptr %a1 - %t88 = load ptr, ptr %a1 - %t89 = load %S.ast.Node, ptr %a86 - %t90 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t91 = load i64, ptr %a70 - %t92 = load { ptr, i64, i64 }, ptr %t90 - %t93 = extractvalue { ptr, i64, i64 } %t92, 1 - %t94 = icmp uge i64 %t91, %t93 - br i1 %t94, label %range8433, label %inrange8434 -range8433: - call void @finch_panic_index(ptr @.str.5469, i64 5104, i64 %t91, i64 %t93) - unreachable -inrange8434: - %t95 = extractvalue { ptr, i64, i64 } %t92, 0 - %t96 = getelementptr inbounds %S.ast.Type, ptr %t95, i64 %t91 - %t97 = load %S.ast.Type, ptr %t96 - %t98 = call %S.gen.Val @finch.gen.exprWant(ptr %t88, %S.ast.Node %t89, %S.ast.Type %t97) - %t99 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t100 = load i64, ptr %a70 - %t101 = load { ptr, i64, i64 }, ptr %t99 - %t102 = extractvalue { ptr, i64, i64 } %t101, 1 - %t103 = icmp uge i64 %t100, %t102 - br i1 %t103, label %range8435, label %inrange8436 -range8435: - call void @finch_panic_index(ptr @.str.5470, i64 5104, i64 %t100, i64 %t102) - unreachable -inrange8436: - %t104 = extractvalue { ptr, i64, i64 } %t101, 0 - %t105 = getelementptr inbounds %S.ast.Type, ptr %t104, i64 %t100 - %t106 = load %S.ast.Type, ptr %t105 - %t107 = load %S.ast.Node, ptr %a86 - %t108 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 14 - %t109 = load i64, ptr %a70 - %t110 = load { ptr, i64, i64 }, ptr %t108 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range8437, label %inrange8438 -range8437: - call void @finch_panic_index(ptr @.str.5472, i64 5104, i64 %t109, i64 %t111) - unreachable -inrange8438: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i64 %t109 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } { ptr @.str.5471, i64 10, i64 0 }, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t119, ptr %a121 - store { ptr, i64, i64 } { ptr @.str.5473, i64 1, i64 0 }, ptr %a122 - call void @finch_str_concat(ptr %a120, ptr %a121, ptr %a122) - store { ptr, i64, i64 } %t119, ptr %a123 - call void @finch_str_drop(ptr %a123) - %t124 = load { ptr, i64, i64 }, ptr %a120 - %t125 = call %S.gen.Val @finch.gen.coerce(ptr %t87, %S.gen.Val %t98, %S.ast.Type %t106, %S.ast.Node %t107, { ptr, i64, i64 } %t124) - store %S.gen.Val %t98, ptr %a126 - call void @finch.drop.S_gen_Val(ptr %a126) - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_drop(ptr %a127) - store %S.gen.Val %t125, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t131 = load i64, ptr %a70 - %t132 = load { ptr, i64, i64 }, ptr %t130 - %t133 = extractvalue { ptr, i64, i64 } %t132, 1 - %t134 = icmp uge i64 %t131, %t133 - br i1 %t134, label %range8439, label %inrange8440 -range8439: - call void @finch_panic_index(ptr @.str.5474, i64 5106, i64 %t131, i64 %t133) - unreachable -inrange8440: - %t135 = extractvalue { ptr, i64, i64 } %t132, 0 - %t136 = getelementptr inbounds %S.ast.Type, ptr %t135, i64 %t131 - %t137 = load %S.ast.Type, ptr %t136 - %t138 = call i1 @finch.gen.owning(ptr %t129, %S.ast.Type %t137) - br label %logic.from8441 -logic.from8441: - br i1 %t138, label %logic.rhs8442, label %logic.end8443 -logic.rhs8442: - %t139 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t140 = load i1, ptr %t139 - %t141 = xor i1 %t140, true - br label %logic.rend8444 -logic.rend8444: - br label %logic.end8443 -logic.end8443: - %t142 = phi i1 [ false, %logic.from8441 ], [ %t141, %logic.rend8444 ] - br label %logic.from8445 -logic.from8445: - br i1 %t142, label %logic.rhs8446, label %logic.end8447 -logic.rhs8446: - %t143 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t144 = load i64, ptr %t143 - %t145 = icmp sgt i64 %t144, 0 - br label %logic.rend8448 -logic.rend8448: - br label %logic.end8447 -logic.end8447: - %t146 = phi i1 [ false, %logic.from8445 ], [ %t145, %logic.rend8448 ] - br label %logic.from8449 -logic.from8449: - br i1 %t146, label %logic.rhs8450, label %logic.end8451 -logic.rhs8450: - %t147 = load %S.ast.Node, ptr %a86 - %t148 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t147) - %t149 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - store { ptr, i64, i64 } %t148, ptr %a154 - call void @finch_str_drop(ptr %a154) - br label %logic.rend8452 -logic.rend8452: - br label %logic.end8451 -logic.end8451: - %t155 = phi i1 [ false, %logic.from8449 ], [ %t153, %logic.rend8452 ] - br i1 %t155, label %then8453, label %endif8455 -then8453: - %t156 = load ptr, ptr %a1 - %t157 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t158 = load { ptr, i64, i64 }, ptr %t157 - %t159 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t160 = load %S.ast.Type, ptr %t159 - %t161 = call { ptr, i64, i64 } @finch.gen.copyValue(ptr %t156, { ptr, i64, i64 } %t158, %S.ast.Type %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 1 - %t164 = load %S.ast.Type, ptr %t163 - store %S.ast.Type %t164, ptr %a165 - call void @finch.copy.S_ast_Type(ptr %a166, ptr %a165) - %t167 = load %S.ast.Type, ptr %a166 - %t168 = insertvalue %S.gen.Val %t162, %S.ast.Type %t167, 1 - %t169 = insertvalue %S.gen.Val %t168, i1 true, 2 - %t170 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t169, ptr %a128 - store %S.gen.Val %t170, ptr %a171 - call void @finch.drop.S_gen_Val(ptr %a171) - br label %endif8455 -endif8455: - %t172 = getelementptr inbounds { ptr, i64, i64 }, ptr %a45, i32 0, i32 1 - %t173 = load ptr, ptr %a1 - %t174 = getelementptr inbounds %S.gen.FnSig, ptr %a21, i32 0, i32 13 - %t175 = load i64, ptr %a70 - %t176 = load { ptr, i64, i64 }, ptr %t174 - %t177 = extractvalue { ptr, i64, i64 } %t176, 1 - %t178 = icmp uge i64 %t175, %t177 - br i1 %t178, label %range8456, label %inrange8457 -range8456: - call void @finch_panic_index(ptr @.str.5475, i64 5109, i64 %t175, i64 %t177) - unreachable -inrange8457: - %t179 = extractvalue { ptr, i64, i64 } %t176, 0 - %t180 = getelementptr inbounds %S.ast.Type, ptr %t179, i64 %t175 - %t181 = load %S.ast.Type, ptr %t180 - %t182 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t173, %S.ast.Type %t181) - store { ptr, i64, i64 } %t182, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5476, i64 1, i64 0 }, ptr %a185 - call void @finch_str_concat(ptr %a183, ptr %a184, ptr %a185) - store { ptr, i64, i64 } %t182, ptr %a186 - call void @finch_str_drop(ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a183 - %t188 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 0 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t187, ptr %a191 - store { ptr, i64, i64 } %t189, ptr %a192 - call void @finch_str_concat(ptr %a190, ptr %a191, ptr %a192) - store { ptr, i64, i64 } %t187, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = load { ptr, i64, i64 }, ptr %a190 - %t195 = load i64, ptr %t172 - %t196 = add i64 %t195, 1 - call void @finch_arr_reserve(ptr %a45, i64 %t196, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t197 = load ptr, ptr %a45 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i64 %t195 - store { ptr, i64, i64 } %t194, ptr %t198 - store i64 %t196, ptr %t172 - %t199 = getelementptr inbounds %S.gen.Val, ptr %a128, i32 0, i32 2 - %t200 = load i1, ptr %t199 - br i1 %t200, label %then8458, label %endif8460 -then8458: - %t201 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t202 = load %S.gen.Val, ptr %a128 - store %S.gen.Val %t202, ptr %a203 - call void @finch.copy.S_gen_Val(ptr %a204, ptr %a203) - %t205 = load %S.gen.Val, ptr %a204 - %t206 = load i64, ptr %t201 - %t207 = add i64 %t206, 1 - call void @finch_arr_reserve(ptr %a60, i64 %t207, i64 ptrtoint (ptr getelementptr (%S.gen.Val, ptr null, i32 1) to i64)) - %t208 = load ptr, ptr %a60 - %t209 = getelementptr inbounds %S.gen.Val, ptr %t208, i64 %t206 - store %S.gen.Val %t205, ptr %t209 - store i64 %t207, ptr %t201 - br label %endif8460 -endif8460: - %t210 = load ptr, ptr %a1 - %t211 = load %S.gen.Val, ptr %a128 - call void @finch.gen.hold(ptr %t210, %S.gen.Val %t211) - call void @finch.drop.S_gen_Val(ptr %a128) - call void @finch.drop.S_ast_Node(ptr %a86) - br label %for.step8429 -for.step8429: - %t212 = load i64, ptr %a70 - %t213 = add i64 %t212, 1 - store i64 %t213, ptr %a70 - br label %for.cond8427 -for.end8430: - %t214 = load ptr, ptr %a1 - %t215 = load %S.gen.FnSig, ptr %a21 - %t216 = load %S.ast.Node, ptr %a3 - %t217 = load { ptr, i64, i64 }, ptr %a45 - %t218 = load { ptr, i64, i64 }, ptr %a5 - %t219 = call %S.gen.Val @finch.gen.emitCall(ptr %t214, %S.gen.FnSig %t215, %S.ast.Node %t216, { ptr, i64, i64 } %t217, { ptr, i64, i64 } %t218) - store %S.gen.Val %t219, ptr %a220 - store i64 0, ptr %a221 - br label %each.cond8461 -each.cond8461: - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a60, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = load i64, ptr %a221 - %t225 = icmp slt i64 %t224, %t223 - br i1 %t225, label %each.body8462, label %each.end8464 -each.body8462: - %t226 = load ptr, ptr %a60 - %t227 = getelementptr inbounds %S.gen.Val, ptr %t226, i64 %t224 - %t228 = load %S.gen.Val, ptr %t227 - store %S.gen.Val %t228, ptr %a229 - %t230 = load ptr, ptr %a1 - %t231 = load %S.gen.Val, ptr %a229 - call void @finch.gen.release(ptr %t230, %S.gen.Val %t231) - br label %each.step8463 -each.step8463: - %t232 = load i64, ptr %a221 - %t233 = add i64 %t232, 1 - store i64 %t233, ptr %a221 - br label %each.cond8461 -each.end8464: - %t234 = load ptr, ptr %a1 - %t235 = load i64, ptr %a66 - call void @finch.gen.heldEnd(ptr %t234, i64 %t235) - %t236 = load %S.gen.Val, ptr %a220 - call void @finch.drop.arr_S_gen_Val(ptr %a60) - call void @finch.drop.arr_str(ptr %a45) - call void @finch.drop.S_gen_FnSig(ptr %a21) - ret %S.gen.Val %t236 -} - -define internal %S.gen.Val @finch.gen.emitCall(ptr %p0, %S.gen.FnSig %p1, %S.ast.Node %p2, { ptr, i64, i64 } %p3, { ptr, i64, i64 } %p4) { -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 - %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 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a106 = 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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %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 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a185 = 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 - %a200 = alloca %S.ast.Type, align 16 - %a201 = alloca %S.ast.Type, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca %S.ast.Type, align 16 - %a235 = alloca %S.ast.Type, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca %S.ast.Type, align 16 - %a255 = alloca %S.ast.Type, align 16 - %a264 = alloca %S.ast.Type, align 16 - %a265 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store %S.gen.FnSig %p1, ptr %a2 - store %S.ast.Node %p2, ptr %a3 - 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.from8465 -logic.from8465: - br i1 %t7, label %logic.rhs8466, label %logic.end8467 -logic.rhs8466: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic8468, label %ok8469 -panic8468: - call void @finch_panic(ptr @.str.5477, i64 5125, ptr @.str.5478) - unreachable -ok8469: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 41 - %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 - store { ptr, i64, i64 } %t13, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %logic.rend8470 -logic.rend8470: - br label %logic.end8467 -logic.end8467: - %t19 = phi i1 [ false, %logic.from8465 ], [ %t17, %logic.rend8470 ] - br i1 %t19, label %then8471, label %endif8473 -then8471: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Node, ptr %a3 - %t22 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.5479, i64 1, i64 0 }, ptr %a24 - store { ptr, i64, i64 } %t22, ptr %a25 - call void @finch_str_concat(ptr %a23, ptr %a24, ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.5480, i64 39, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t31, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t31, ptr %a36 - call void @finch_str_drop(ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t37, ptr %a39 - store { ptr, i64, i64 } { ptr @.str.5481, i64 19, i64 0 }, ptr %a40 - call void @finch_str_concat(ptr %a38, ptr %a39, ptr %a40) - store { ptr, i64, i64 } %t37, ptr %a41 - call void @finch_str_drop(ptr %a41) - %t42 = load { ptr, i64, i64 }, ptr %a38 - %t43 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t42, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t42, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5482, i64 27, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5483, i64 5, i64 0 }, ptr %a62 - call void @finch_str_concat(ptr %a60, ptr %a61, ptr %a62) - store { ptr, i64, i64 } %t59, ptr %a63 - call void @finch_str_drop(ptr %a63) - %t64 = load { ptr, i64, i64 }, ptr %a60 - call void @finch.gen.fail(ptr %t20, %S.ast.Node %t21, { ptr, i64, i64 } %t64) - store { ptr, i64, i64 } %t64, ptr %a65 - call void @finch_str_drop(ptr %a65) - br label %endif8473 -endif8473: - %t66 = load ptr, ptr %a1 - %t67 = load %S.gen.FnSig, ptr %a2 - %t68 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t66, %S.gen.FnSig %t67) - store { ptr, i64, i64 } { ptr @.str.5484, i64 5, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t73, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5485, i64 1, i64 0 }, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t73, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a74 - %t79 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 11 - %t80 = load { ptr, i64, i64 }, ptr %t79 - store { ptr, i64, i64 } %t78, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t78, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t85, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.5486, i64 1, i64 0 }, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t85, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - %t91 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5487, i64 2, i64 0 }, ptr %a92 - call void @finch_str_join(ptr %a93, ptr %a4, ptr %a92) - %t94 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t90, ptr %a96 - store { ptr, i64, i64 } %t94, ptr %a97 - call void @finch_str_concat(ptr %a95, ptr %a96, ptr %a97) - store { ptr, i64, i64 } %t90, ptr %a98 - call void @finch_str_drop(ptr %a98) - store { ptr, i64, i64 } %t94, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a95 - store { ptr, i64, i64 } %t100, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.5488, i64 1, i64 0 }, ptr %a103 - call void @finch_str_concat(ptr %a101, ptr %a102, ptr %a103) - store { ptr, i64, i64 } %t100, ptr %a104 - call void @finch_str_drop(ptr %a104) - %t105 = load { ptr, i64, i64 }, ptr %a101 - store { ptr, i64, i64 } %t105, ptr %a106 - %t107 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 9 - %t108 = load i1, ptr %t107 - br i1 %t108, label %then8474, label %endif8476 -then8474: - %t109 = load ptr, ptr %a1 - %t110 = load { ptr, i64, i64 }, ptr %a106 - %t111 = call { ptr, i64, i64 } @finch.gen.op(ptr %t109, { ptr, i64, i64 } %t110) - store { ptr, i64, i64 } %t111, ptr %a112 - %t113 = load ptr, ptr %a1 - %t114 = load ptr, ptr %a1 - %t115 = load %S.gen.FnSig, ptr %a2 - %t116 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t114, %S.gen.FnSig %t115) - store { ptr, i64, i64 } { ptr @.str.5489, i64 13, i64 0 }, ptr %a118 - store { ptr, i64, i64 } %t116, ptr %a119 - call void @finch_str_concat(ptr %a117, ptr %a118, ptr %a119) - store { ptr, i64, i64 } %t116, ptr %a120 - call void @finch_str_drop(ptr %a120) - %t121 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t121, ptr %a123 - store { ptr, i64, i64 } { ptr @.str.5490, i64 1, i64 0 }, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t121, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - %t127 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t126, ptr %a129 - store { ptr, i64, i64 } %t127, ptr %a130 - call void @finch_str_concat(ptr %a128, ptr %a129, ptr %a130) - store { ptr, i64, i64 } %t126, ptr %a131 - call void @finch_str_drop(ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t132, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.5491, i64 3, i64 0 }, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t132, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - %t138 = call { ptr, i64, i64 } @finch.gen.op(ptr %t113, { ptr, i64, i64 } %t137) - store { ptr, i64, i64 } %t137, ptr %a139 - call void @finch_str_drop(ptr %a139) - store { ptr, i64, i64 } %t138, ptr %a140 - %t141 = load ptr, ptr %a1 - %t142 = load { ptr, i64, i64 }, ptr %a140 - store { ptr, i64, i64 } { ptr @.str.5492, i64 7, i64 0 }, ptr %a144 - store { ptr, i64, i64 } %t142, ptr %a145 - call void @finch_str_concat(ptr %a143, ptr %a144, ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a143 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5493, i64 6, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = call { ptr, i64, i64 } @finch.gen.op(ptr %t141, { ptr, i64, i64 } %t151) - store { ptr, i64, i64 } %t151, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load ptr, ptr %a1 - %t155 = icmp eq ptr %t154, null - br i1 %t155, label %panic8477, label %ok8478 -panic8477: - call void @finch_panic(ptr @.str.5494, i64 5132, ptr @.str.5495) - unreachable -ok8478: - %t156 = getelementptr inbounds %S.gen.Gen, ptr %t154, i32 0, i32 42 - %t157 = load { ptr, i64, i64 }, ptr %t156 - store { ptr, i64, i64 } %t152, ptr %t156 - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load ptr, ptr %a1 - %t161 = load %S.gen.FnSig, ptr %a2 - %t162 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t160, %S.gen.FnSig %t161) - store { ptr, i64, i64 } { ptr @.str.5496, i64 13, i64 0 }, ptr %a164 - store { ptr, i64, i64 } %t162, ptr %a165 - call void @finch_str_concat(ptr %a163, ptr %a164, ptr %a165) - store { ptr, i64, i64 } %t162, ptr %a166 - call void @finch_str_drop(ptr %a166) - %t167 = load { ptr, i64, i64 }, ptr %a163 - store { ptr, i64, i64 } %t167, ptr %a169 - store { ptr, i64, i64 } { ptr @.str.5497, i64 1, i64 0 }, ptr %a170 - call void @finch_str_concat(ptr %a168, ptr %a169, ptr %a170) - store { ptr, i64, i64 } %t167, ptr %a171 - call void @finch_str_drop(ptr %a171) - %t172 = load { ptr, i64, i64 }, ptr %a168 - %t173 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t172, ptr %a175 - store { ptr, i64, i64 } %t173, ptr %a176 - call void @finch_str_concat(ptr %a174, ptr %a175, ptr %a176) - store { ptr, i64, i64 } %t172, ptr %a177 - call void @finch_str_drop(ptr %a177) - %t178 = load { ptr, i64, i64 }, ptr %a174 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5498, i64 3, i64 0 }, ptr %a181 - call void @finch_str_concat(ptr %a179, ptr %a180, ptr %a181) - store { ptr, i64, i64 } %t178, ptr %a182 - call void @finch_str_drop(ptr %a182) - %t183 = load { ptr, i64, i64 }, ptr %a179 - %t184 = call { ptr, i64, i64 } @finch.gen.op(ptr %t159, { ptr, i64, i64 } %t183) - store { ptr, i64, i64 } %t183, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load ptr, ptr %a1 - %t187 = icmp eq ptr %t186, null - br i1 %t187, label %panic8479, label %ok8480 -panic8479: - call void @finch_panic(ptr @.str.5499, i64 5133, ptr @.str.5500) - unreachable -ok8480: - %t188 = getelementptr inbounds %S.gen.Gen, ptr %t186, i32 0, i32 43 - %t189 = load { ptr, i64, i64 }, ptr %t188 - store { ptr, i64, i64 } %t184, ptr %t188 - store { ptr, i64, i64 } %t189, ptr %a190 - call void @finch_str_drop(ptr %a190) - %t191 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t192 = getelementptr inbounds %S.ast.Type, ptr %t191, i32 0, i32 0 - %t193 = load { ptr, i64, i64 }, ptr %t192 - store { ptr, i64, i64 } %t193, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5501, i64 4, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %then8481, label %endif8483 -then8481: - %t198 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t199 = load %S.ast.Type, ptr %t198 - store %S.ast.Type %t199, ptr %a200 - call void @finch.copy.S_ast_Type(ptr %a201, ptr %a200) - %t202 = load %S.ast.Type, ptr %a201 - %t203 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t202, 1 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t203 -endif8483: - %t204 = load ptr, ptr %a1 - %t205 = load ptr, ptr %a1 - %t206 = load %S.gen.FnSig, ptr %a2 - %t207 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t205, %S.gen.FnSig %t206) - store { ptr, i64, i64 } { ptr @.str.5502, i64 13, i64 0 }, ptr %a209 - store { ptr, i64, i64 } %t207, ptr %a210 - call void @finch_str_concat(ptr %a208, ptr %a209, ptr %a210) - store { ptr, i64, i64 } %t207, ptr %a211 - call void @finch_str_drop(ptr %a211) - %t212 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t212, ptr %a214 - store { ptr, i64, i64 } { ptr @.str.5503, i64 1, i64 0 }, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - store { ptr, i64, i64 } %t212, ptr %a216 - call void @finch_str_drop(ptr %a216) - %t217 = load { ptr, i64, i64 }, ptr %a213 - %t218 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t217, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t217, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t223, ptr %a225 - store { ptr, i64, i64 } { ptr @.str.5504, i64 3, i64 0 }, ptr %a226 - call void @finch_str_concat(ptr %a224, ptr %a225, ptr %a226) - store { ptr, i64, i64 } %t223, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a224 - %t229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t204, { ptr, i64, i64 } %t228) - store { ptr, i64, i64 } %t228, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t229, 0 - %t232 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t233 = load %S.ast.Type, ptr %t232 - store %S.ast.Type %t233, ptr %a234 - call void @finch.copy.S_ast_Type(ptr %a235, ptr %a234) - %t236 = load %S.ast.Type, ptr %a235 - %t237 = insertvalue %S.gen.Val %t231, %S.ast.Type %t236, 1 - %t238 = load ptr, ptr %a1 - %t239 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t240 = load %S.ast.Type, ptr %t239 - %t241 = call i1 @finch.gen.owning(ptr %t238, %S.ast.Type %t240) - %t242 = insertvalue %S.gen.Val %t237, i1 %t241, 2 - call void @finch_str_drop(ptr %a140) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t242 -endif8476: - %t243 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t244 = getelementptr inbounds %S.ast.Type, ptr %t243, i32 0, i32 0 - %t245 = load { ptr, i64, i64 }, ptr %t244 - store { ptr, i64, i64 } %t245, ptr %a246 - store { ptr, i64, i64 } { ptr @.str.5505, i64 4, i64 0 }, ptr %a247 - %t248 = call i32 @finch_str_eq(ptr %a246, ptr %a247) - %t249 = icmp ne i32 %t248, 0 - br i1 %t249, label %then8484, label %endif8486 -then8484: - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a106 - call void @finch.gen.emit(ptr %t250, { ptr, i64, i64 } %t251) - %t252 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t253 = load %S.ast.Type, ptr %t252 - store %S.ast.Type %t253, ptr %a254 - call void @finch.copy.S_ast_Type(ptr %a255, ptr %a254) - %t256 = load %S.ast.Type, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t256, 1 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t257 -endif8486: - %t258 = load ptr, ptr %a1 - %t259 = load { ptr, i64, i64 }, ptr %a106 - %t260 = call { ptr, i64, i64 } @finch.gen.op(ptr %t258, { ptr, i64, i64 } %t259) - %t261 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t260, 0 - %t262 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t263 = load %S.ast.Type, ptr %t262 - store %S.ast.Type %t263, ptr %a264 - call void @finch.copy.S_ast_Type(ptr %a265, ptr %a264) - %t266 = load %S.ast.Type, ptr %a265 - %t267 = insertvalue %S.gen.Val %t261, %S.ast.Type %t266, 1 - %t268 = load ptr, ptr %a1 - %t269 = getelementptr inbounds %S.gen.FnSig, ptr %a2, i32 0, i32 12 - %t270 = load %S.ast.Type, ptr %t269 - %t271 = call i1 @finch.gen.owning(ptr %t268, %S.ast.Type %t270) - %t272 = insertvalue %S.gen.Val %t267, i1 %t271, 2 - call void @finch_str_drop(ptr %a106) - ret %S.gen.Val %t272 -} - -define internal %S.gen.Val @finch.gen.construct(ptr %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3, %S.ast.Node %p4) { -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 - %a47 = alloca %S.ast.Node, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca %S.ast.Type, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca i1, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca i64, align 16 - %a95 = alloca i64, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = 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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca i64, align 16 - %a196 = alloca i64, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca i64, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca i64, align 16 - %a294 = alloca i64, align 16 - %a305 = alloca %S.ast.Type, align 16 - %a306 = alloca %S.ast.Type, align 16 - %a308 = alloca %S.ast.Type, align 16 - %a309 = alloca %S.gen.Val, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca %S.gen.Val, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca %S.gen.Val, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a438 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a447 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca %S.gen.Val, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca %S.gen.Val, align 16 - %a518 = alloca { ptr, i64, i64 }, align 16 - %a519 = alloca { ptr, i64, i64 }, align 16 - %a522 = 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 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca %S.ast.Type, align 16 - %a562 = alloca %S.ast.Type, align 16 - %a566 = alloca %S.gen.Val, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a593 = alloca { ptr, i64, i64 }, align 16 - %a594 = alloca { ptr, i64, i64 }, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a600 = alloca { ptr, i64, i64 }, align 16 - %a601 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca { ptr, i64, i64 }, align 16 - %a605 = alloca { ptr, i64, i64 }, align 16 - %a606 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca { ptr, i64, i64 }, align 16 - %a610 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a612 = alloca { ptr, i64, i64 }, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a625 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a628 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.ast.Type, align 16 - %a645 = alloca %S.ast.Type, align 16 - store ptr %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %panic8487, label %ok8488 -panic8487: - call void @finch_panic(ptr @.str.5506, i64 5147, ptr @.str.5507) - unreachable -ok8488: - %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 %range8489, label %inrange8490 -range8489: - call void @finch_panic_index(ptr @.str.5508, i64 5147, i64 %t9, i64 %t11) - unreachable -inrange8490: - %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 %then8491, label %endif8493 -then8491: - %t24 = load ptr, ptr %a1 - %t25 = icmp eq ptr %t24, null - br i1 %t25, label %panic8494, label %ok8495 -panic8494: - call void @finch_panic(ptr @.str.5509, i64 5150, ptr @.str.5510) - unreachable -ok8495: - %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 %range8496, label %inrange8497 -range8496: - call void @finch_panic_index(ptr @.str.5511, i64 5150, i64 %t28, i64 %t30) - unreachable -inrange8497: - %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 %range8498, label %inrange8499 -range8498: - call void @finch_panic_index(ptr @.str.5512, i64 5150, i64 %t36, i64 %t38) - unreachable -inrange8499: - %t40 = extractvalue { ptr, i64, i64 } %t37, 0 - %t41 = getelementptr inbounds %S.ast.Node, ptr %t40, i64 %t36 - %t42 = load %S.ast.Node, ptr %t41 - store %S.ast.Node %t42, ptr %a43 - call void @finch.copy.S_ast_Node(ptr %a44, ptr %a43) - %t45 = load %S.ast.Node, ptr %a44 - %t46 = load %S.ast.Node, ptr %a20 - store %S.ast.Node %t45, ptr %a20 - store %S.ast.Node %t46, ptr %a47 - call void @finch.drop.S_ast_Node(ptr %a47) - br label %endif8493 -endif8493: - %t48 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.5513, i64 6, i64 0 }, 0 - %t49 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t50 = load { ptr, i64, i64 }, ptr %t49 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_copy(ptr %a52, ptr %a51) - %t53 = load { ptr, i64, i64 }, ptr %a52 - %t54 = insertvalue %S.ast.Type %t48, { ptr, i64, i64 } %t53, 2 - %t55 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_copy(ptr %a58, ptr %a57) - %t59 = load { ptr, i64, i64 }, ptr %a58 - %t60 = insertvalue %S.ast.Type %t54, { ptr, i64, i64 } %t59, 3 - store %S.ast.Type %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load %S.ast.Type, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t62, %S.ast.Type %t63) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t67 = load i64, ptr %t66 - %t68 = icmp sgt i64 %t67, 0 - br label %logic.from8500 -logic.from8500: - br i1 %t68, label %logic.rhs8501, label %logic.end8502 -logic.rhs8501: - %t69 = load { ptr, i64, i64 }, ptr %a4 - %t70 = extractvalue { ptr, i64, i64 } %t69, 1 - %t71 = icmp uge i64 0, %t70 - br i1 %t71, label %range8503, label %inrange8504 -range8503: - call void @finch_panic_index(ptr @.str.5514, i64 5154, i64 0, i64 %t70) - unreachable -inrange8504: - %t72 = extractvalue { ptr, i64, i64 } %t69, 0 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i64 0 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t73, i32 0, i32 1 - %t75 = load i64, ptr %t74 - %t76 = icmp sgt i64 %t75, 0 - br label %logic.rend8505 -logic.rend8505: - br label %logic.end8502 -logic.end8502: - %t77 = phi i1 [ false, %logic.from8500 ], [ %t76, %logic.rend8505 ] - store i1 %t77, ptr %a78 - store { ptr, i64, i64 } zeroinitializer, ptr %a79 - %t80 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %t80, i32 0, i32 1 - %t82 = load i64, ptr %t81 - store i64 0, ptr %a83 - br label %for.cond8506 -for.cond8506: - %t84 = load i64, ptr %a83 - %t85 = icmp slt i64 %t84, %t82 - br i1 %t85, label %for.body8507, label %for.end8509 -for.body8507: - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %a79, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %a79, i64 %t88, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %a79 - %t90 = getelementptr inbounds i64, ptr %t89, i64 %t87 - store i64 -1, ptr %t90 - store i64 %t88, ptr %t86 - br label %for.step8508 -for.step8508: - %t91 = load i64, ptr %a83 - %t92 = add i64 %t91, 1 - store i64 %t92, ptr %a83 - br label %for.cond8506 -for.end8509: - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t94 = load i64, ptr %t93 - store i64 0, ptr %a95 - br label %for.cond8510 -for.cond8510: - %t96 = load i64, ptr %a95 - %t97 = icmp slt i64 %t96, %t94 - br i1 %t97, label %for.body8511, label %for.end8513 -for.body8511: - %t98 = load i64, ptr %a95 - %t99 = load { ptr, i64, i64 }, ptr %a4 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 %t98, %t100 - br i1 %t101, label %range8514, label %inrange8515 -range8514: - call void @finch_panic_index(ptr @.str.5515, i64 5160, i64 %t98, i64 %t100) - unreachable -inrange8515: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t98 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %t103, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp sgt i64 %t105, 0 - %t107 = load i1, ptr %a78 - %t108 = icmp ne i1 %t106, %t107 - br i1 %t108, label %then8516, label %endif8518 -then8516: - %t109 = load ptr, ptr %a1 - %t110 = load i64, ptr %a95 - %t111 = load { ptr, i64, i64 }, ptr %a3 - %t112 = extractvalue { ptr, i64, i64 } %t111, 1 - %t113 = icmp uge i64 %t110, %t112 - br i1 %t113, label %range8519, label %inrange8520 -range8519: - call void @finch_panic_index(ptr @.str.5516, i64 5161, i64 %t110, i64 %t112) - unreachable -inrange8520: - %t114 = extractvalue { ptr, i64, i64 } %t111, 0 - %t115 = getelementptr inbounds %S.ast.Node, ptr %t114, i64 %t110 - %t116 = load %S.ast.Node, ptr %t115 - call void @finch.gen.fail(ptr %t109, %S.ast.Node %t116, { ptr, i64, i64 } { ptr @.str.5517, i64 69, i64 0 }) - br label %endif8518 -endif8518: - %t117 = load i1, ptr %a78 - %t118 = xor i1 %t117, true - br i1 %t118, label %then8521, label %endif8523 -then8521: - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t120 = load i64, ptr %t119 - %t121 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t122 = getelementptr inbounds { ptr, i64, i64 }, ptr %t121, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = icmp ne i64 %t120, %t123 - br i1 %t124, label %then8524, label %endif8526 -then8524: - %t125 = load ptr, ptr %a1 - %t126 = load %S.ast.Node, ptr %a5 - %t127 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t128 = load { ptr, i64, i64 }, ptr %t127 - store { ptr, i64, i64 } %t128, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.5518, i64 5, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - %t132 = load { ptr, i64, i64 }, ptr %a129 - %t133 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load i64, ptr %t134 - call void @finch_str_from_int(ptr %a136, i64 %t135) - %t137 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t132, ptr %a139 - store { ptr, i64, i64 } %t137, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t132, ptr %a141 - call void @finch_str_drop(ptr %a141) - store { ptr, i64, i64 } %t137, ptr %a142 - call void @finch_str_drop(ptr %a142) - %t143 = load { ptr, i64, i64 }, ptr %a138 - store { ptr, i64, i64 } %t143, ptr %a145 - store { ptr, i64, i64 } { ptr @.str.5519, i64 17, i64 0 }, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t143, ptr %a147 - call void @finch_str_drop(ptr %a147) - %t148 = load { ptr, i64, i64 }, ptr %a144 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t150 = load i64, ptr %t149 - call void @finch_str_from_int(ptr %a151, i64 %t150) - %t152 = load { ptr, i64, i64 }, ptr %a151 - store { ptr, i64, i64 } %t148, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t148, ptr %a156 - call void @finch_str_drop(ptr %a156) - store { ptr, i64, i64 } %t152, ptr %a157 - call void @finch_str_drop(ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.5520, i64 23, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %t164 - store { ptr, i64, i64 } %t163, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t163, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5521, i64 15, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch.gen.fail(ptr %t125, %S.ast.Node %t126, { ptr, i64, i64 } %t175) - store { ptr, i64, i64 } %t175, ptr %a176 - call void @finch_str_drop(ptr %a176) - br label %endif8526 -endif8526: - %t177 = load i64, ptr %a95 - %t178 = load i64, ptr %a95 - %t179 = load { ptr, i64, i64 }, ptr %a79 - %t180 = extractvalue { ptr, i64, i64 } %t179, 1 - %t181 = icmp uge i64 %t178, %t180 - br i1 %t181, label %range8527, label %inrange8528 -range8527: - call void @finch_panic_index(ptr @.str.5522, i64 5167, i64 %t178, i64 %t180) - unreachable -inrange8528: - %t182 = extractvalue { ptr, i64, i64 } %t179, 0 - %t183 = getelementptr inbounds i64, ptr %t182, i64 %t178 - store i64 %t177, ptr %t183 - br label %for.step8512 -endif8523: - %t184 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i32 0, i32 1 - %t186 = load i64, ptr %a95 - %t187 = load { ptr, i64, i64 }, ptr %a4 - %t188 = extractvalue { ptr, i64, i64 } %t187, 1 - %t189 = icmp uge i64 %t186, %t188 - br i1 %t189, label %range8529, label %inrange8530 -range8529: - call void @finch_panic_index(ptr @.str.5523, i64 5170, i64 %t186, i64 %t188) - unreachable -inrange8530: - %t190 = extractvalue { ptr, i64, i64 } %t187, 0 - %t191 = getelementptr inbounds { ptr, i64, i64 }, ptr %t190, i64 %t186 - %t192 = load { ptr, i64, i64 }, ptr %t191 - store i64 -1, ptr %a193 - %t194 = load i64, ptr %t185 - %t195 = load ptr, ptr %t184 - store i64 0, ptr %a196 - br label %find.cond8531 -find.cond8531: - %t197 = load i64, ptr %a196 - %t198 = icmp slt i64 %t197, %t194 - br i1 %t198, label %find.body8532, label %find.end8535 -find.body8532: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t195, i64 %t197 - %t200 = load { ptr, i64, i64 }, ptr %t199 - store { ptr, i64, i64 } %t200, ptr %a201 - store { ptr, i64, i64 } %t192, ptr %a202 - %t203 = call i32 @finch_str_eq(ptr %a201, ptr %a202) - %t204 = icmp ne i32 %t203, 0 - br i1 %t204, label %find.hit8533, label %find.next8534 -find.hit8533: - store i64 %t197, ptr %a193 - br label %find.end8535 -find.next8534: - %t205 = add i64 %t197, 1 - store i64 %t205, ptr %a196 - br label %find.cond8531 -find.end8535: - %t206 = load i64, ptr %a193 - store i64 %t206, ptr %a207 - %t208 = load i64, ptr %a207 - %t209 = icmp slt i64 %t208, 0 - br i1 %t209, label %then8536, label %endif8538 -then8536: - %t210 = load ptr, ptr %a1 - %t211 = load i64, ptr %a95 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = extractvalue { ptr, i64, i64 } %t212, 1 - %t214 = icmp uge i64 %t211, %t213 - br i1 %t214, label %range8539, label %inrange8540 -range8539: - call void @finch_panic_index(ptr @.str.5524, i64 5172, i64 %t211, i64 %t213) - unreachable -inrange8540: - %t215 = extractvalue { ptr, i64, i64 } %t212, 0 - %t216 = getelementptr inbounds %S.ast.Node, ptr %t215, i64 %t211 - %t217 = load %S.ast.Node, ptr %t216 - %t218 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 1 - %t219 = load { ptr, i64, i64 }, ptr %t218 - store { ptr, i64, i64 } %t219, ptr %a221 - store { ptr, i64, i64 } { ptr @.str.5525, i64 15, i64 0 }, ptr %a222 - call void @finch_str_concat(ptr %a220, ptr %a221, ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a220 - %t224 = load i64, ptr %a95 - %t225 = load { ptr, i64, i64 }, ptr %a4 - %t226 = extractvalue { ptr, i64, i64 } %t225, 1 - %t227 = icmp uge i64 %t224, %t226 - br i1 %t227, label %range8541, label %inrange8542 -range8541: - call void @finch_panic_index(ptr @.str.5526, i64 5172, i64 %t224, i64 %t226) - unreachable -inrange8542: - %t228 = extractvalue { ptr, i64, i64 } %t225, 0 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t228, i64 %t224 - %t230 = load { ptr, i64, i64 }, ptr %t229 - store { ptr, i64, i64 } %t223, ptr %a232 - store { ptr, i64, i64 } %t230, ptr %a233 - call void @finch_str_concat(ptr %a231, ptr %a232, ptr %a233) - store { ptr, i64, i64 } %t223, ptr %a234 - call void @finch_str_drop(ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a231 - store { ptr, i64, i64 } %t235, ptr %a237 - store { ptr, i64, i64 } { ptr @.str.5527, i64 1, i64 0 }, ptr %a238 - call void @finch_str_concat(ptr %a236, ptr %a237, ptr %a238) - store { ptr, i64, i64 } %t235, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a236 - call void @finch.gen.fail(ptr %t210, %S.ast.Node %t217, { ptr, i64, i64 } %t240) - store { ptr, i64, i64 } %t240, ptr %a241 - call void @finch_str_drop(ptr %a241) - br label %endif8538 -endif8538: - %t242 = load i64, ptr %a207 - %t243 = load { ptr, i64, i64 }, ptr %a79 - %t244 = extractvalue { ptr, i64, i64 } %t243, 1 - %t245 = icmp uge i64 %t242, %t244 - br i1 %t245, label %range8543, label %inrange8544 -range8543: - call void @finch_panic_index(ptr @.str.5528, i64 5174, i64 %t242, i64 %t244) - unreachable -inrange8544: - %t246 = extractvalue { ptr, i64, i64 } %t243, 0 - %t247 = getelementptr inbounds i64, ptr %t246, i64 %t242 - %t248 = load i64, ptr %t247 - %t249 = icmp sge i64 %t248, 0 - br i1 %t249, label %then8545, label %endif8547 -then8545: - %t250 = load ptr, ptr %a1 - %t251 = load i64, ptr %a95 - %t252 = load { ptr, i64, i64 }, ptr %a3 - %t253 = extractvalue { ptr, i64, i64 } %t252, 1 - %t254 = icmp uge i64 %t251, %t253 - br i1 %t254, label %range8548, label %inrange8549 -range8548: - call void @finch_panic_index(ptr @.str.5529, i64 5175, i64 %t251, i64 %t253) - unreachable -inrange8549: - %t255 = extractvalue { ptr, i64, i64 } %t252, 0 - %t256 = getelementptr inbounds %S.ast.Node, ptr %t255, i64 %t251 - %t257 = load %S.ast.Node, ptr %t256 - %t258 = load i64, ptr %a95 - %t259 = load { ptr, i64, i64 }, ptr %a4 - %t260 = extractvalue { ptr, i64, i64 } %t259, 1 - %t261 = icmp uge i64 %t258, %t260 - br i1 %t261, label %range8550, label %inrange8551 -range8550: - call void @finch_panic_index(ptr @.str.5531, i64 5175, i64 %t258, i64 %t260) - unreachable -inrange8551: - %t262 = extractvalue { ptr, i64, i64 } %t259, 0 - %t263 = getelementptr inbounds { ptr, i64, i64 }, ptr %t262, i64 %t258 - %t264 = load { ptr, i64, i64 }, ptr %t263 - store { ptr, i64, i64 } { ptr @.str.5530, i64 11, i64 0 }, ptr %a266 - store { ptr, i64, i64 } %t264, ptr %a267 - call void @finch_str_concat(ptr %a265, ptr %a266, ptr %a267) - %t268 = load { ptr, i64, i64 }, ptr %a265 - store { ptr, i64, i64 } %t268, ptr %a270 - store { ptr, i64, i64 } { ptr @.str.5532, i64 16, i64 0 }, ptr %a271 - call void @finch_str_concat(ptr %a269, ptr %a270, ptr %a271) - store { ptr, i64, i64 } %t268, ptr %a272 - call void @finch_str_drop(ptr %a272) - %t273 = load { ptr, i64, i64 }, ptr %a269 - call void @finch.gen.fail(ptr %t250, %S.ast.Node %t257, { ptr, i64, i64 } %t273) - store { ptr, i64, i64 } %t273, ptr %a274 - call void @finch_str_drop(ptr %a274) - br label %endif8547 -endif8547: - %t275 = load i64, ptr %a95 - %t276 = load i64, ptr %a207 - %t277 = load { ptr, i64, i64 }, ptr %a79 - %t278 = extractvalue { ptr, i64, i64 } %t277, 1 - %t279 = icmp uge i64 %t276, %t278 - br i1 %t279, label %range8552, label %inrange8553 -range8552: - call void @finch_panic_index(ptr @.str.5533, i64 5177, i64 %t276, i64 %t278) - unreachable -inrange8553: - %t280 = extractvalue { ptr, i64, i64 } %t277, 0 - %t281 = getelementptr inbounds i64, ptr %t280, i64 %t276 - store i64 %t275, ptr %t281 - br label %for.step8512 -for.step8512: - %t282 = load i64, ptr %a95 - %t283 = add i64 %t282, 1 - store i64 %t283, ptr %a95 - br label %for.cond8510 -for.end8513: - store { ptr, i64, i64 } { ptr @.str.5534, i64 15, i64 0 }, ptr %a284 - %t285 = load ptr, ptr %a1 - %t286 = icmp eq ptr %t285, null - br i1 %t286, label %panic8554, label %ok8555 -panic8554: - call void @finch_panic(ptr @.str.5535, i64 5180, ptr @.str.5536) - unreachable -ok8555: - %t287 = getelementptr inbounds %S.gen.Gen, ptr %t285, i32 0, i32 11 - %t288 = getelementptr inbounds { ptr, i64, i64 }, ptr %t287, i32 0, i32 1 - %t289 = load i64, ptr %t288 - store i64 %t289, ptr %a290 - %t291 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t292 = getelementptr inbounds { ptr, i64, i64 }, ptr %t291, i32 0, i32 1 - %t293 = load i64, ptr %t292 - store i64 0, ptr %a294 - br label %for.cond8556 -for.cond8556: - %t295 = load i64, ptr %a294 - %t296 = icmp slt i64 %t295, %t293 - br i1 %t296, label %for.body8557, label %for.end8559 -for.body8557: - %t297 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 12 - %t298 = load i64, ptr %a294 - %t299 = load { ptr, i64, i64 }, ptr %t297 - %t300 = extractvalue { ptr, i64, i64 } %t299, 1 - %t301 = icmp uge i64 %t298, %t300 - br i1 %t301, label %range8560, label %inrange8561 -range8560: - call void @finch_panic_index(ptr @.str.5537, i64 5182, i64 %t298, i64 %t300) - unreachable -inrange8561: - %t302 = extractvalue { ptr, i64, i64 } %t299, 0 - %t303 = getelementptr inbounds %S.ast.Type, ptr %t302, i64 %t298 - %t304 = load %S.ast.Type, ptr %t303 - store %S.ast.Type %t304, ptr %a305 - call void @finch.copy.S_ast_Type(ptr %a306, ptr %a305) - %t307 = load %S.ast.Type, ptr %a306 - store %S.ast.Type %t307, ptr %a308 - store %S.gen.Val zeroinitializer, ptr %a309 - %t310 = load i64, ptr %a294 - %t311 = load { ptr, i64, i64 }, ptr %a79 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range8562, label %inrange8563 -range8562: - call void @finch_panic_index(ptr @.str.5538, i64 5184, i64 %t310, i64 %t312) - unreachable -inrange8563: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds i64, ptr %t314, i64 %t310 - %t316 = load i64, ptr %t315 - %t317 = icmp sge i64 %t316, 0 - br i1 %t317, label %then8564, label %else8565 -then8564: - %t318 = load ptr, ptr %a1 - %t319 = load ptr, ptr %a1 - %t320 = load i64, ptr %a294 - %t321 = load { ptr, i64, i64 }, ptr %a79 - %t322 = extractvalue { ptr, i64, i64 } %t321, 1 - %t323 = icmp uge i64 %t320, %t322 - br i1 %t323, label %range8567, label %inrange8568 -range8567: - call void @finch_panic_index(ptr @.str.5539, i64 5185, i64 %t320, i64 %t322) - unreachable -inrange8568: - %t324 = extractvalue { ptr, i64, i64 } %t321, 0 - %t325 = getelementptr inbounds i64, ptr %t324, i64 %t320 - %t326 = load i64, ptr %t325 - %t327 = load { ptr, i64, i64 }, ptr %a3 - %t328 = extractvalue { ptr, i64, i64 } %t327, 1 - %t329 = icmp uge i64 %t326, %t328 - br i1 %t329, label %range8569, label %inrange8570 -range8569: - call void @finch_panic_index(ptr @.str.5540, i64 5185, i64 %t326, i64 %t328) - unreachable -inrange8570: - %t330 = extractvalue { ptr, i64, i64 } %t327, 0 - %t331 = getelementptr inbounds %S.ast.Node, ptr %t330, i64 %t326 - %t332 = load %S.ast.Node, ptr %t331 - %t333 = load %S.ast.Type, ptr %a308 - %t334 = call %S.gen.Val @finch.gen.exprWant(ptr %t319, %S.ast.Node %t332, %S.ast.Type %t333) - %t335 = load %S.ast.Type, ptr %a308 - %t336 = load i64, ptr %a294 - %t337 = load { ptr, i64, i64 }, ptr %a79 - %t338 = extractvalue { ptr, i64, i64 } %t337, 1 - %t339 = icmp uge i64 %t336, %t338 - br i1 %t339, label %range8571, label %inrange8572 -range8571: - call void @finch_panic_index(ptr @.str.5541, i64 5185, i64 %t336, i64 %t338) - unreachable -inrange8572: - %t340 = extractvalue { ptr, i64, i64 } %t337, 0 - %t341 = getelementptr inbounds i64, ptr %t340, i64 %t336 - %t342 = load i64, ptr %t341 - %t343 = load { ptr, i64, i64 }, ptr %a3 - %t344 = extractvalue { ptr, i64, i64 } %t343, 1 - %t345 = icmp uge i64 %t342, %t344 - br i1 %t345, label %range8573, label %inrange8574 -range8573: - call void @finch_panic_index(ptr @.str.5542, i64 5185, i64 %t342, i64 %t344) - unreachable -inrange8574: - %t346 = extractvalue { ptr, i64, i64 } %t343, 0 - %t347 = getelementptr inbounds %S.ast.Node, ptr %t346, i64 %t342 - %t348 = load %S.ast.Node, ptr %t347 - %t349 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t350 = load i64, ptr %a294 - %t351 = load { ptr, i64, i64 }, ptr %t349 - %t352 = extractvalue { ptr, i64, i64 } %t351, 1 - %t353 = icmp uge i64 %t350, %t352 - br i1 %t353, label %range8575, label %inrange8576 -range8575: - call void @finch_panic_index(ptr @.str.5544, i64 5185, i64 %t350, i64 %t352) - unreachable -inrange8576: - %t354 = extractvalue { ptr, i64, i64 } %t351, 0 - %t355 = getelementptr inbounds { ptr, i64, i64 }, ptr %t354, i64 %t350 - %t356 = load { ptr, i64, i64 }, ptr %t355 - store { ptr, i64, i64 } { ptr @.str.5543, i64 11, i64 0 }, ptr %a358 - store { ptr, i64, i64 } %t356, ptr %a359 - call void @finch_str_concat(ptr %a357, ptr %a358, ptr %a359) - %t360 = load { ptr, i64, i64 }, ptr %a357 - store { ptr, i64, i64 } %t360, ptr %a362 - store { ptr, i64, i64 } { ptr @.str.5545, i64 1, i64 0 }, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - store { ptr, i64, i64 } %t360, ptr %a364 - call void @finch_str_drop(ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a361 - %t366 = call %S.gen.Val @finch.gen.coerce(ptr %t318, %S.gen.Val %t334, %S.ast.Type %t335, %S.ast.Node %t348, { ptr, i64, i64 } %t365) - store %S.gen.Val %t334, ptr %a367 - call void @finch.drop.S_gen_Val(ptr %a367) - store { ptr, i64, i64 } %t365, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t366, ptr %a309 - store %S.gen.Val %t369, ptr %a370 - call void @finch.drop.S_gen_Val(ptr %a370) - br label %endif8566 -else8565: - %t371 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 2 - %t372 = load i1, ptr %t371 - %t373 = xor i1 %t372, true - br label %logic.from8577 -logic.from8577: - br i1 %t373, label %logic.rhs8578, label %logic.end8579 -logic.rhs8578: - %t374 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t375 = load i64, ptr %a294 - %t376 = load { ptr, i64, i64 }, ptr %t374 - %t377 = extractvalue { ptr, i64, i64 } %t376, 1 - %t378 = icmp uge i64 %t375, %t377 - br i1 %t378, label %range8580, label %inrange8581 -range8580: - call void @finch_panic_index(ptr @.str.5546, i64 5186, i64 %t375, i64 %t377) - unreachable -inrange8581: - %t379 = extractvalue { ptr, i64, i64 } %t376, 0 - %t380 = getelementptr inbounds %S.ast.Node, ptr %t379, i64 %t375 - %t381 = getelementptr inbounds %S.ast.Node, ptr %t380, i32 0, i32 9 - %t382 = getelementptr inbounds { ptr, i64, i64 }, ptr %t381, i32 0, i32 1 - %t383 = load i64, ptr %t382 - %t384 = icmp sgt i64 %t383, 0 - br label %logic.rend8582 -logic.rend8582: - br label %logic.end8579 -logic.end8579: - %t385 = phi i1 [ false, %logic.from8577 ], [ %t384, %logic.rend8582 ] - br i1 %t385, label %then8583, label %else8584 -then8583: - %t386 = load ptr, ptr %a1 - %t387 = icmp eq ptr %t386, null - br i1 %t387, label %panic8586, label %ok8587 -panic8586: - call void @finch_panic(ptr @.str.5547, i64 5188, ptr @.str.5548) - unreachable -ok8587: - %t388 = getelementptr inbounds %S.gen.Gen, ptr %t386, i32 0, i32 10 - %t389 = load { ptr, i64, i64 }, ptr %t388 - store { ptr, i64, i64 } %t389, ptr %a390 - call void @finch.copy.arr_S_gen_Scope(ptr %a391, ptr %a390) - %t392 = load { ptr, i64, i64 }, ptr %a391 - store { ptr, i64, i64 } %t392, ptr %a393 - %t394 = load ptr, ptr %a1 - %t395 = icmp eq ptr %t394, null - br i1 %t395, label %panic8588, label %ok8589 -panic8588: - call void @finch_panic(ptr @.str.5549, i64 5189, ptr @.str.5550) - unreachable -ok8589: - %t396 = getelementptr inbounds %S.gen.Gen, ptr %t394, i32 0, i32 14 - %t397 = load { ptr, i64, i64 }, ptr %t396 - store { ptr, i64, i64 } %t397, ptr %a398 - call void @finch_str_copy(ptr %a399, ptr %a398) - %t400 = load { ptr, i64, i64 }, ptr %a399 - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load ptr, ptr %a1 - %t403 = icmp eq ptr %t402, null - br i1 %t403, label %panic8590, label %ok8591 -panic8590: - call void @finch_panic(ptr @.str.5551, i64 5190, ptr @.str.5552) - unreachable -ok8591: - %t404 = getelementptr inbounds %S.gen.Gen, ptr %t402, i32 0, i32 18 - %t405 = load { ptr, i64, i64 }, ptr %t404 - store { ptr, i64, i64 } %t405, ptr %a406 - call void @finch.copy.arr_str(ptr %a407, ptr %a406) - %t408 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t408, ptr %a409 - %t410 = load ptr, ptr %a1 - %t411 = icmp eq ptr %t410, null - br i1 %t411, label %panic8592, label %ok8593 -panic8592: - call void @finch_panic(ptr @.str.5553, i64 5191, ptr @.str.5554) - unreachable -ok8593: - %t412 = getelementptr inbounds %S.gen.Gen, ptr %t410, i32 0, i32 19 - %t413 = load { ptr, i64, i64 }, ptr %t412 - store { ptr, i64, i64 } %t413, ptr %a414 - call void @finch.copy.arr_S_ast_Type(ptr %a415, ptr %a414) - %t416 = load { ptr, i64, i64 }, ptr %a415 - store { ptr, i64, i64 } %t416, ptr %a417 - %t418 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 6 - %t419 = load { ptr, i64, i64 }, ptr %t418 - %t420 = load ptr, ptr %a1 - %t421 = icmp eq ptr %t420, null - br i1 %t421, label %panic8594, label %ok8595 -panic8594: - call void @finch_panic(ptr @.str.5555, i64 5192, ptr @.str.5556) - unreachable -ok8595: - %t422 = getelementptr inbounds %S.gen.Gen, ptr %t420, i32 0, i32 18 - store { ptr, i64, i64 } %t419, ptr %a423 - call void @finch.copy.arr_str(ptr %a424, ptr %a423) - %t425 = load { ptr, i64, i64 }, ptr %a424 - %t426 = load { ptr, i64, i64 }, ptr %t422 - store { ptr, i64, i64 } %t425, ptr %t422 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch.drop.arr_str(ptr %a427) - %t428 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 7 - %t429 = load { ptr, i64, i64 }, ptr %t428 - %t430 = load ptr, ptr %a1 - %t431 = icmp eq ptr %t430, null - br i1 %t431, label %panic8596, label %ok8597 -panic8596: - call void @finch_panic(ptr @.str.5557, i64 5193, ptr @.str.5558) - unreachable -ok8597: - %t432 = getelementptr inbounds %S.gen.Gen, ptr %t430, i32 0, i32 19 - store { ptr, i64, i64 } %t429, ptr %a433 - call void @finch.copy.arr_S_ast_Type(ptr %a434, ptr %a433) - %t435 = load { ptr, i64, i64 }, ptr %a434 - %t436 = load { ptr, i64, i64 }, ptr %t432 - store { ptr, i64, i64 } %t435, ptr %t432 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch.drop.arr_S_ast_Type(ptr %a437) - store { ptr, i64, i64 } zeroinitializer, ptr %a438 - %t439 = load { ptr, i64, i64 }, ptr %a438 - %t440 = load ptr, ptr %a1 - %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic8598, label %ok8599 -panic8598: - call void @finch_panic(ptr @.str.5559, i64 5195, ptr @.str.5560) - unreachable -ok8599: - %t442 = getelementptr inbounds %S.gen.Gen, ptr %t440, i32 0, i32 10 - store { ptr, i64, i64 } %t439, ptr %a443 - call void @finch.copy.arr_S_gen_Scope(ptr %a444, ptr %a443) - %t445 = load { ptr, i64, i64 }, ptr %a444 - %t446 = load { ptr, i64, i64 }, ptr %t442 - store { ptr, i64, i64 } %t445, ptr %t442 - store { ptr, i64, i64 } %t446, ptr %a447 - call void @finch.drop.arr_S_gen_Scope(ptr %a447) - %t448 = load ptr, ptr %a1 - call void @finch.gen.pushScope(ptr %t448) - %t449 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 0 - %t450 = load { ptr, i64, i64 }, ptr %t449 - %t451 = load ptr, ptr %a1 - %t452 = icmp eq ptr %t451, null - br i1 %t452, label %panic8600, label %ok8601 -panic8600: - call void @finch_panic(ptr @.str.5561, i64 5197, ptr @.str.5562) - unreachable -ok8601: - %t453 = getelementptr inbounds %S.gen.Gen, ptr %t451, i32 0, i32 14 - store { ptr, i64, i64 } %t450, ptr %a454 - call void @finch_str_copy(ptr %a455, ptr %a454) - %t456 = load { ptr, i64, i64 }, ptr %a455 - %t457 = load { ptr, i64, i64 }, ptr %t453 - store { ptr, i64, i64 } %t456, ptr %t453 - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - %t459 = load ptr, ptr %a1 - %t460 = load ptr, ptr %a1 - %t461 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t462 = load i64, ptr %a294 - %t463 = load { ptr, i64, i64 }, ptr %t461 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = icmp uge i64 %t462, %t464 - br i1 %t465, label %range8602, label %inrange8603 -range8602: - call void @finch_panic_index(ptr @.str.5563, i64 5198, i64 %t462, i64 %t464) - unreachable -inrange8603: - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = getelementptr inbounds %S.ast.Node, ptr %t466, i64 %t462 - %t468 = getelementptr inbounds %S.ast.Node, ptr %t467, i32 0, i32 9 - %t469 = load { ptr, i64, i64 }, ptr %t468 - %t470 = extractvalue { ptr, i64, i64 } %t469, 1 - %t471 = icmp uge i64 0, %t470 - br i1 %t471, label %range8604, label %inrange8605 -range8604: - call void @finch_panic_index(ptr @.str.5564, i64 5198, i64 0, i64 %t470) - unreachable -inrange8605: - %t472 = extractvalue { ptr, i64, i64 } %t469, 0 - %t473 = getelementptr inbounds %S.ast.Node, ptr %t472, i64 0 - %t474 = load %S.ast.Node, ptr %t473 - %t475 = load %S.ast.Type, ptr %a308 - %t476 = call %S.gen.Val @finch.gen.exprWant(ptr %t460, %S.ast.Node %t474, %S.ast.Type %t475) - %t477 = load %S.ast.Type, ptr %a308 - %t478 = getelementptr inbounds %S.ast.Node, ptr %a20, i32 0, i32 9 - %t479 = load i64, ptr %a294 - %t480 = load { ptr, i64, i64 }, ptr %t478 - %t481 = extractvalue { ptr, i64, i64 } %t480, 1 - %t482 = icmp uge i64 %t479, %t481 - br i1 %t482, label %range8606, label %inrange8607 -range8606: - call void @finch_panic_index(ptr @.str.5565, i64 5198, i64 %t479, i64 %t481) - unreachable -inrange8607: - %t483 = extractvalue { ptr, i64, i64 } %t480, 0 - %t484 = getelementptr inbounds %S.ast.Node, ptr %t483, i64 %t479 - %t485 = getelementptr inbounds %S.ast.Node, ptr %t484, i32 0, i32 9 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = extractvalue { ptr, i64, i64 } %t486, 1 - %t488 = icmp uge i64 0, %t487 - br i1 %t488, label %range8608, label %inrange8609 -range8608: - call void @finch_panic_index(ptr @.str.5566, i64 5198, i64 0, i64 %t487) - unreachable -inrange8609: - %t489 = extractvalue { ptr, i64, i64 } %t486, 0 - %t490 = getelementptr inbounds %S.ast.Node, ptr %t489, i64 0 - %t491 = load %S.ast.Node, ptr %t490 - %t492 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 11 - %t493 = load i64, ptr %a294 - %t494 = load { ptr, i64, i64 }, ptr %t492 - %t495 = extractvalue { ptr, i64, i64 } %t494, 1 - %t496 = icmp uge i64 %t493, %t495 - br i1 %t496, label %range8610, label %inrange8611 -range8610: - call void @finch_panic_index(ptr @.str.5568, i64 5198, i64 %t493, i64 %t495) - unreachable -inrange8611: - %t497 = extractvalue { ptr, i64, i64 } %t494, 0 - %t498 = getelementptr inbounds { ptr, i64, i64 }, ptr %t497, i64 %t493 - %t499 = load { ptr, i64, i64 }, ptr %t498 - store { ptr, i64, i64 } { ptr @.str.5567, i64 16, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5569, i64 1, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call %S.gen.Val @finch.gen.coerce(ptr %t459, %S.gen.Val %t476, %S.ast.Type %t477, %S.ast.Node %t491, { ptr, i64, i64 } %t508) - store %S.gen.Val %t476, ptr %a510 - call void @finch.drop.S_gen_Val(ptr %a510) - store { ptr, i64, i64 } %t508, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load %S.gen.Val, ptr %a309 - store %S.gen.Val %t509, ptr %a309 - store %S.gen.Val %t512, ptr %a513 - call void @finch.drop.S_gen_Val(ptr %a513) - %t514 = load { ptr, i64, i64 }, ptr %a401 - %t515 = load ptr, ptr %a1 - %t516 = icmp eq ptr %t515, null - br i1 %t516, label %panic8612, label %ok8613 -panic8612: - call void @finch_panic(ptr @.str.5570, i64 5199, ptr @.str.5571) - unreachable -ok8613: - %t517 = getelementptr inbounds %S.gen.Gen, ptr %t515, i32 0, i32 14 - store { ptr, i64, i64 } %t514, ptr %a518 - call void @finch_str_copy(ptr %a519, ptr %a518) - %t520 = load { ptr, i64, i64 }, ptr %a519 - %t521 = load { ptr, i64, i64 }, ptr %t517 - store { ptr, i64, i64 } %t520, ptr %t517 - store { ptr, i64, i64 } %t521, ptr %a522 - call void @finch_str_drop(ptr %a522) - %t523 = load { ptr, i64, i64 }, ptr %a409 - %t524 = load ptr, ptr %a1 - %t525 = icmp eq ptr %t524, null - br i1 %t525, label %panic8614, label %ok8615 -panic8614: - call void @finch_panic(ptr @.str.5572, i64 5200, ptr @.str.5573) - unreachable -ok8615: - %t526 = getelementptr inbounds %S.gen.Gen, ptr %t524, i32 0, i32 18 - store { ptr, i64, i64 } %t523, ptr %a527 - call void @finch.copy.arr_str(ptr %a528, ptr %a527) - %t529 = load { ptr, i64, i64 }, ptr %a528 - %t530 = load { ptr, i64, i64 }, ptr %t526 - store { ptr, i64, i64 } %t529, ptr %t526 - store { ptr, i64, i64 } %t530, ptr %a531 - call void @finch.drop.arr_str(ptr %a531) - %t532 = load { ptr, i64, i64 }, ptr %a417 - %t533 = load ptr, ptr %a1 - %t534 = icmp eq ptr %t533, null - br i1 %t534, label %panic8616, label %ok8617 -panic8616: - call void @finch_panic(ptr @.str.5574, i64 5201, ptr @.str.5575) - unreachable -ok8617: - %t535 = getelementptr inbounds %S.gen.Gen, ptr %t533, i32 0, i32 19 - store { ptr, i64, i64 } %t532, ptr %a536 - call void @finch.copy.arr_S_ast_Type(ptr %a537, ptr %a536) - %t538 = load { ptr, i64, i64 }, ptr %a537 - %t539 = load { ptr, i64, i64 }, ptr %t535 - store { ptr, i64, i64 } %t538, ptr %t535 - store { ptr, i64, i64 } %t539, ptr %a540 - call void @finch.drop.arr_S_ast_Type(ptr %a540) - %t541 = load { ptr, i64, i64 }, ptr %a393 - %t542 = load ptr, ptr %a1 - %t543 = icmp eq ptr %t542, null - br i1 %t543, label %panic8618, label %ok8619 -panic8618: - call void @finch_panic(ptr @.str.5576, i64 5202, ptr @.str.5577) - unreachable -ok8619: - %t544 = getelementptr inbounds %S.gen.Gen, ptr %t542, i32 0, i32 10 - store { ptr, i64, i64 } %t541, ptr %a545 - call void @finch.copy.arr_S_gen_Scope(ptr %a546, ptr %a545) - %t547 = load { ptr, i64, i64 }, ptr %a546 - %t548 = load { ptr, i64, i64 }, ptr %t544 - store { ptr, i64, i64 } %t547, ptr %t544 - store { ptr, i64, i64 } %t548, ptr %a549 - call void @finch.drop.arr_S_gen_Scope(ptr %a549) - call void @finch.drop.arr_S_gen_Scope(ptr %a438) - call void @finch.drop.arr_S_ast_Type(ptr %a417) - call void @finch.drop.arr_str(ptr %a409) - call void @finch_str_drop(ptr %a401) - call void @finch.drop.arr_S_gen_Scope(ptr %a393) - br label %endif8585 -else8584: - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -endif8585: - br label %endif8566 -endif8566: - %t550 = load ptr, ptr %a1 - %t551 = load %S.gen.Val, ptr %a309 - %t552 = call { ptr, i64, i64 } @finch.gen.own(ptr %t550, %S.gen.Val %t551) - store { ptr, i64, i64 } %t552, ptr %a553 - %t554 = load ptr, ptr %a1 - %t555 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t555, ptr %a556 - call void @finch_str_copy(ptr %a557, ptr %a556) - %t558 = load { ptr, i64, i64 }, ptr %a557 - %t559 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t558, 0 - %t560 = load %S.ast.Type, ptr %a308 - store %S.ast.Type %t560, ptr %a561 - call void @finch.copy.S_ast_Type(ptr %a562, ptr %a561) - %t563 = load %S.ast.Type, ptr %a562 - %t564 = insertvalue %S.gen.Val %t559, %S.ast.Type %t563, 1 - %t565 = insertvalue %S.gen.Val %t564, i1 true, 2 - call void @finch.gen.hold(ptr %t554, %S.gen.Val %t565) - store %S.gen.Val %t565, ptr %a566 - call void @finch.drop.S_gen_Val(ptr %a566) - %t567 = load ptr, ptr %a1 - %t568 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } { ptr @.str.5578, i64 12, i64 0 }, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - %t572 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t572, ptr %a574 - store { ptr, i64, i64 } { ptr @.str.5579, i64 1, i64 0 }, ptr %a575 - call void @finch_str_concat(ptr %a573, ptr %a574, ptr %a575) - store { ptr, i64, i64 } %t572, ptr %a576 - call void @finch_str_drop(ptr %a576) - %t577 = load { ptr, i64, i64 }, ptr %a573 - %t578 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t577, ptr %a580 - store { ptr, i64, i64 } %t578, ptr %a581 - call void @finch_str_concat(ptr %a579, ptr %a580, ptr %a581) - store { ptr, i64, i64 } %t577, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a579 - store { ptr, i64, i64 } %t583, ptr %a585 - store { ptr, i64, i64 } { ptr @.str.5580, i64 2, i64 0 }, ptr %a586 - call void @finch_str_concat(ptr %a584, ptr %a585, ptr %a586) - store { ptr, i64, i64 } %t583, ptr %a587 - call void @finch_str_drop(ptr %a587) - %t588 = load { ptr, i64, i64 }, ptr %a584 - %t589 = load ptr, ptr %a1 - %t590 = load %S.ast.Type, ptr %a308 - %t591 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t589, %S.ast.Type %t590) - store { ptr, i64, i64 } %t588, ptr %a593 - store { ptr, i64, i64 } %t591, ptr %a594 - call void @finch_str_concat(ptr %a592, ptr %a593, ptr %a594) - store { ptr, i64, i64 } %t588, ptr %a595 - call void @finch_str_drop(ptr %a595) - store { ptr, i64, i64 } %t591, ptr %a596 - call void @finch_str_drop(ptr %a596) - %t597 = load { ptr, i64, i64 }, ptr %a592 - store { ptr, i64, i64 } %t597, ptr %a599 - store { ptr, i64, i64 } { ptr @.str.5581, i64 1, i64 0 }, ptr %a600 - call void @finch_str_concat(ptr %a598, ptr %a599, ptr %a600) - store { ptr, i64, i64 } %t597, ptr %a601 - call void @finch_str_drop(ptr %a601) - %t602 = load { ptr, i64, i64 }, ptr %a598 - %t603 = load { ptr, i64, i64 }, ptr %a553 - store { ptr, i64, i64 } %t602, ptr %a605 - store { ptr, i64, i64 } %t603, ptr %a606 - call void @finch_str_concat(ptr %a604, ptr %a605, ptr %a606) - store { ptr, i64, i64 } %t602, ptr %a607 - call void @finch_str_drop(ptr %a607) - %t608 = load { ptr, i64, i64 }, ptr %a604 - store { ptr, i64, i64 } %t608, ptr %a610 - store { ptr, i64, i64 } { ptr @.str.5582, i64 2, i64 0 }, ptr %a611 - call void @finch_str_concat(ptr %a609, ptr %a610, ptr %a611) - store { ptr, i64, i64 } %t608, ptr %a612 - call void @finch_str_drop(ptr %a612) - %t613 = load { ptr, i64, i64 }, ptr %a609 - %t614 = getelementptr inbounds %S.gen.StructDef, ptr %a19, i32 0, i32 3 - %t615 = load i64, ptr %a294 - %t616 = load { ptr, i64, i64 }, ptr %t614 - %t617 = extractvalue { ptr, i64, i64 } %t616, 1 - %t618 = icmp uge i64 %t615, %t617 - br i1 %t618, label %range8620, label %inrange8621 -range8620: - call void @finch_panic_index(ptr @.str.5583, i64 5208, i64 %t615, i64 %t617) - unreachable -inrange8621: - %t619 = extractvalue { ptr, i64, i64 } %t616, 0 - %t620 = getelementptr inbounds i64, ptr %t619, i64 %t615 - %t621 = load i64, ptr %t620 - call void @finch_str_from_int(ptr %a622, i64 %t621) - %t623 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t613, ptr %a625 - store { ptr, i64, i64 } %t623, ptr %a626 - call void @finch_str_concat(ptr %a624, ptr %a625, ptr %a626) - store { ptr, i64, i64 } %t613, ptr %a627 - call void @finch_str_drop(ptr %a627) - store { ptr, i64, i64 } %t623, ptr %a628 - call void @finch_str_drop(ptr %a628) - %t629 = load { ptr, i64, i64 }, ptr %a624 - %t630 = call { ptr, i64, i64 } @finch.gen.op(ptr %t567, { ptr, i64, i64 } %t629) - store { ptr, i64, i64 } %t629, ptr %a631 - call void @finch_str_drop(ptr %a631) - %t632 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t630, ptr %a284 - store { ptr, i64, i64 } %t632, ptr %a633 - call void @finch_str_drop(ptr %a633) - call void @finch_str_drop(ptr %a553) - call void @finch.drop.S_gen_Val(ptr %a309) - call void @finch.drop.S_ast_Type(ptr %a308) - br label %for.step8558 -for.step8558: - %t634 = load i64, ptr %a294 - %t635 = add i64 %t634, 1 - store i64 %t635, ptr %a294 - br label %for.cond8556 -for.end8559: - %t636 = load ptr, ptr %a1 - %t637 = load i64, ptr %a290 - call void @finch.gen.heldEnd(ptr %t636, i64 %t637) - %t638 = load { ptr, i64, i64 }, ptr %a284 - store { ptr, i64, i64 } %t638, ptr %a639 - call void @finch_str_copy(ptr %a640, ptr %a639) - %t641 = load { ptr, i64, i64 }, ptr %a640 - %t642 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t641, 0 - %t643 = load %S.ast.Type, ptr %a61 - store %S.ast.Type %t643, ptr %a644 - call void @finch.copy.S_ast_Type(ptr %a645, ptr %a644) - %t646 = load %S.ast.Type, ptr %a645 - %t647 = insertvalue %S.gen.Val %t642, %S.ast.Type %t646, 1 - %t648 = load ptr, ptr %a1 - %t649 = load %S.ast.Type, ptr %a61 - %t650 = call i1 @finch.gen.owning(ptr %t648, %S.ast.Type %t649) - %t651 = insertvalue %S.gen.Val %t647, i1 %t650, 2 - call void @finch_str_drop(ptr %a284) - call void @finch.drop.arr_int(ptr %a79) - call void @finch_str_drop(ptr %a65) - call void @finch.drop.S_ast_Type(ptr %a61) - call void @finch.drop.S_ast_Node(ptr %a20) - call void @finch.drop.S_gen_StructDef(ptr %a19) - ret %S.gen.Val %t651 -} - -define internal void @finch.gen.noteMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic8622, label %ok8623 -panic8622: - call void @finch_panic(ptr @.str.5584, i64 5218, ptr @.str.5585) - unreachable -ok8623: - %t6 = getelementptr inbounds %S.gen.Gen, ptr %t4, i32 0, i32 28 - %t7 = load i1, ptr %t6 - %t8 = xor i1 %t7, true - br i1 %t8, label %then8624, label %endif8626 -then8624: - ret void -endif8626: - %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 %then8627, label %endif8629 -then8627: - %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.5586, i64 0, i64 0 }, i64 0, i64 0) - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif8629 -endif8629: - call void @finch.drop.S_docs_Doc(ptr %a13) - 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 - %a17 = alloca i64, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca i64, align 16 - %a36 = alloca %S.ast.Node, align 16 - %a37 = alloca %S.ast.Node, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = 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 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca i64, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca i64, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca i64, align 16 - %a165 = alloca i64, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca i64, align 16 - %a184 = alloca %S.ast.Node, align 16 - %a185 = alloca %S.ast.Node, 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 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a238 = 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 - %a260 = alloca %S.gen.Ref, align 16 - %a266 = alloca i64, align 16 - %a270 = alloca %S.ast.Type, align 16 - %a271 = alloca %S.ast.Type, align 16 - %a273 = alloca %S.ast.Type, align 16 - %a279 = alloca %S.ast.Type, align 16 - %a280 = alloca %S.ast.Type, align 16 - %a283 = alloca %S.ast.Type, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca i64, align 16 - %a307 = alloca i64, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = 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 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca %S.gen.Val, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca %S.gen.Val, align 16 - %a372 = alloca %S.gen.Val, align 16 - %a374 = alloca %S.gen.Val, align 16 - %a384 = alloca %S.ast.Type, align 16 - %a385 = alloca %S.ast.Type, align 16 - %a389 = alloca %S.gen.Val, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca %S.gen.Val, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a418 = alloca { ptr, i64, i64 }, align 16 - %a421 = 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 - %a435 = alloca i64, align 16 - %a438 = alloca i64, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a444 = 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 - %a458 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a480 = alloca %S.gen.Val, align 16 - %a497 = alloca %S.ast.Type, align 16 - %a498 = alloca %S.ast.Type, align 16 - %a500 = alloca %S.ast.Type, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca i1, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a522 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a533 = alloca { ptr, i64, i64 }, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a546 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca %S.ast.Type, align 16 - %a579 = alloca %S.ast.Type, align 16 - %a582 = alloca %S.ast.Type, align 16 - %a584 = alloca { ptr, i64, i64 }, align 16 - %a585 = alloca { ptr, i64, i64 }, align 16 - %a588 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a592 = alloca { ptr, i64, i64 }, align 16 - %a597 = alloca { ptr, i64, i64 }, align 16 - %a598 = alloca { ptr, i64, i64 }, align 16 - %a607 = alloca { ptr, i64, i64 }, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a611 = alloca { ptr, i64, i64 }, align 16 - %a617 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca { ptr, i64, i64 }, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a639 = alloca i64, align 16 - %a644 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a655 = alloca i64, align 16 - %a686 = alloca i64, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca i64, align 16 - %a719 = alloca %S.gen.FnSig, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a725 = alloca { ptr, i64, i64 }, align 16 - %a732 = alloca { ptr, i64, i64 }, align 16 - %a733 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a760 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a763 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a768 = alloca { ptr, i64, i64 }, align 16 - %a769 = alloca { ptr, i64, i64 }, align 16 - %a770 = alloca { ptr, i64, i64 }, align 16 - %a771 = alloca { ptr, i64, i64 }, align 16 - %a773 = alloca { ptr, i64, i64 }, align 16 - %a774 = alloca { ptr, i64, i64 }, align 16 - %a775 = alloca { ptr, i64, i64 }, align 16 - %a776 = alloca { ptr, i64, i64 }, align 16 - %a780 = alloca { ptr, i64, i64 }, align 16 - %a781 = alloca { ptr, i64, i64 }, align 16 - %a782 = alloca { ptr, i64, i64 }, align 16 - %a783 = alloca { ptr, i64, i64 }, align 16 - %a785 = alloca { ptr, i64, i64 }, align 16 - %a786 = alloca { ptr, i64, i64 }, align 16 - %a787 = alloca { ptr, i64, i64 }, align 16 - %a788 = alloca { ptr, i64, i64 }, align 16 - %a792 = 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 - %a800 = alloca { ptr, i64, i64 }, align 16 - %a802 = 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 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a822 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a833 = alloca { ptr, i64, i64 }, align 16 - %a834 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a839 = alloca { ptr, i64, i64 }, align 16 - %a842 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a845 = alloca { ptr, i64, i64 }, align 16 - %a846 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a856 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = 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 - %a895 = alloca { ptr, i64, i64 }, align 16 - %a896 = alloca { ptr, i64, i64 }, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a899 = alloca { ptr, i64, i64 }, align 16 - %a901 = alloca { ptr, i64, i64 }, align 16 - %a902 = alloca { ptr, i64, i64 }, align 16 - %a903 = alloca { ptr, i64, i64 }, align 16 - %a904 = alloca { ptr, i64, i64 }, align 16 - %a906 = alloca { ptr, i64, i64 }, align 16 - %a909 = alloca { ptr, i64, i64 }, align 16 - %a916 = alloca i64, align 16 - %a923 = alloca %S.gen.Var, 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 - %a935 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a958 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a969 = alloca %S.gen.Val, align 16 - %a989 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - 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 %range8630, label %inrange8631 -range8630: - call void @finch_panic_index(ptr @.str.5587, i64 5228, i64 0, i64 %t5) - unreachable -inrange8631: - %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 ptr, ptr %a1 - %t15 = load %S.ast.Node, ptr %a13 - %t16 = call i64 @finch.gen.sumNamed(ptr %t14, %S.ast.Node %t15) - store i64 %t16, ptr %a17 - %t18 = load i64, ptr %a17 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then8632, label %endif8634 -then8632: - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - %t21 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t21, i32 0, i32 1 - %t23 = load i64, ptr %t22 - store i64 1, ptr %a24 - br label %for.cond8635 -for.cond8635: - %t25 = load i64, ptr %a24 - %t26 = icmp slt i64 %t25, %t23 - br i1 %t26, label %for.body8636, label %for.end8638 -for.body8636: - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - %t28 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t29 = load i64, ptr %a24 - %t30 = load { ptr, i64, i64 }, ptr %t28 - %t31 = extractvalue { ptr, i64, i64 } %t30, 1 - %t32 = icmp uge i64 %t29, %t31 - br i1 %t32, label %range8639, label %inrange8640 -range8639: - call void @finch_panic_index(ptr @.str.5588, i64 5233, i64 %t29, i64 %t31) - unreachable -inrange8640: - %t33 = extractvalue { ptr, i64, i64 } %t30, 0 - %t34 = getelementptr inbounds %S.ast.Node, ptr %t33, i64 %t29 - %t35 = load %S.ast.Node, ptr %t34 - store %S.ast.Node %t35, ptr %a36 - call void @finch.copy.S_ast_Node(ptr %a37, ptr %a36) - %t38 = load %S.ast.Node, ptr %a37 - %t39 = load i64, ptr %t27 - %t40 = add i64 %t39, 1 - call void @finch_arr_reserve(ptr %a20, i64 %t40, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t41 = load ptr, ptr %a20 - %t42 = getelementptr inbounds %S.ast.Node, ptr %t41, i64 %t39 - store %S.ast.Node %t38, ptr %t42 - store i64 %t40, ptr %t27 - br label %for.step8637 -for.step8637: - %t43 = load i64, ptr %a24 - %t44 = add i64 %t43, 1 - store i64 %t44, ptr %a24 - br label %for.cond8635 -for.end8638: - %t45 = load ptr, ptr %a1 - %t46 = load i64, ptr %a17 - %t47 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t48 = load { ptr, i64, i64 }, ptr %t47 - %t49 = load { ptr, i64, i64 }, ptr %a20 - %t50 = load %S.ast.Node, ptr %a2 - %t51 = call %S.gen.Val @finch.gen.sumMake(ptr %t45, i64 %t46, { ptr, i64, i64 } %t48, { ptr, i64, i64 } %t49, %S.ast.Node %t50) - call void @finch.drop.arr_S_ast_Node(ptr %a20) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t51 -endif8634: - %t52 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 0 - %t53 = load { ptr, i64, i64 }, ptr %t52 - store { ptr, i64, i64 } %t53, ptr %a54 - store { ptr, i64, i64 } { ptr @.str.5589, i64 3, i64 0 }, ptr %a55 - %t56 = call i32 @finch_str_eq(ptr %a54, ptr %a55) - %t57 = icmp ne i32 %t56, 0 - br label %logic.from8641 -logic.from8641: - br i1 %t57, label %logic.rhs8642, label %logic.end8643 -logic.rhs8642: - %t58 = load ptr, ptr %a1 - %t59 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %t60 = load { ptr, i64, i64 }, ptr %t59 - %t61 = call i64 @finch.gen.lookup(ptr %t58, { ptr, i64, i64 } %t60) - %t62 = icmp slt i64 %t61, 0 - br label %logic.rend8644 -logic.rend8644: - br label %logic.end8643 -logic.end8643: - %t63 = phi i1 [ false, %logic.from8641 ], [ %t62, %logic.rend8644 ] - br i1 %t63, label %then8645, label %endif8647 -then8645: - %t64 = getelementptr inbounds %S.ast.Node, ptr %a13, i32 0, i32 1 - %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 - store { ptr, i64, i64 } %t68, ptr %a69 - %t70 = load ptr, ptr %a1 - %t71 = load { ptr, i64, i64 }, ptr %a69 - %t72 = call i1 @finch.gen.imports(ptr %t70, { ptr, i64, i64 } %t71) - %t73 = xor i1 %t72, true - br i1 %t73, label %then8648, label %endif8650 -then8648: - %t74 = load ptr, ptr %a1 - %t75 = load %S.ast.Node, ptr %a13 - %t76 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5590, i64 38, 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.5591, i64 32, i64 0 }, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - store { ptr, i64, i64 } %t80, ptr %a84 - call void @finch_str_drop(ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a81 - %t86 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t85, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t91, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.5592, i64 13, i64 0 }, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - store { ptr, i64, i64 } %t91, ptr %a95 - call void @finch_str_drop(ptr %a95) - %t96 = load { ptr, i64, i64 }, ptr %a92 - call void @finch.gen.fail(ptr %t74, %S.ast.Node %t75, { ptr, i64, i64 } %t96) - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif8650 -endif8650: - %t98 = load ptr, ptr %a1 - %t99 = load { ptr, i64, i64 }, ptr %a69 - %t100 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t101 = load { ptr, i64, i64 }, ptr %t100 - %t102 = call i64 @finch.gen.findFn(ptr %t98, { ptr, i64, i64 } %t99, { ptr, i64, i64 } %t101) - store i64 %t102, ptr %a103 - %t104 = load i64, ptr %a103 - %t105 = icmp sge i64 %t104, 0 - br i1 %t105, label %then8651, label %endif8653 -then8651: - %t106 = load ptr, ptr %a1 - %t107 = load i64, ptr %a103 - %t108 = load %S.ast.Node, ptr %a2 - %t109 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.5593, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t115 = load { ptr, i64, i64 }, ptr %t114 - store { ptr, i64, i64 } %t113, ptr %a117 - store { ptr, i64, i64 } %t115, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t113, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = call %S.gen.Val @finch.gen.callFn(ptr %t106, i64 %t107, %S.ast.Node %t108, i64 1, { ptr, i64, i64 } %t120, { ptr, i64, i64 } { ptr @.str.5594, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.5595, i64 0, i64 0 }) - store { ptr, i64, i64 } %t120, ptr %a122 - call void @finch_str_drop(ptr %a122) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t121 -endif8653: - %t123 = load ptr, ptr %a1 - %t124 = load { ptr, i64, i64 }, ptr %a69 - %t125 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %t125 - %t127 = call i64 @finch.gen.findTemplate(ptr %t123, { ptr, i64, i64 } %t124, { ptr, i64, i64 } %t126, { ptr, i64, i64 } { ptr @.str.5596, i64 0, i64 0 }, i1 false) - store i64 %t127, ptr %a128 - %t129 = load i64, ptr %a128 - %t130 = icmp sge i64 %t129, 0 - br i1 %t130, label %then8654, label %endif8656 -then8654: - %t131 = load ptr, ptr %a1 - %t132 = load %S.ast.Node, ptr %a2 - %t133 = load i64, ptr %a128 - %t134 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t134, ptr %a136 - store { ptr, i64, i64 } { ptr @.str.5597, 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 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t140 = load { ptr, i64, i64 }, ptr %t139 - store { ptr, i64, i64 } %t138, ptr %a142 - store { ptr, i64, i64 } %t140, ptr %a143 - call void @finch_str_concat(ptr %a141, ptr %a142, ptr %a143) - store { ptr, i64, i64 } %t138, ptr %a144 - call void @finch_str_drop(ptr %a144) - %t145 = load { ptr, i64, i64 }, ptr %a141 - %t146 = call %S.gen.Val @finch.gen.genericCall(ptr %t131, %S.ast.Node %t132, i64 %t133, i64 1, { ptr, i64, i64 } %t145) - store { ptr, i64, i64 } %t145, ptr %a147 - call void @finch_str_drop(ptr %a147) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t146 -endif8656: - %t148 = load ptr, ptr %a1 - %t149 = load { ptr, i64, i64 }, ptr %a69 - %t150 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t151 = load { ptr, i64, i64 }, ptr %t150 - %t152 = call i64 @finch.gen.findEnum(ptr %t148, { ptr, i64, i64 } %t149, { ptr, i64, i64 } %t151) - store i64 %t152, ptr %a153 - %t154 = load i64, ptr %a153 - %t155 = icmp sge i64 %t154, 0 - br i1 %t155, label %then8657, label %endif8659 -then8657: - %t156 = load ptr, ptr %a1 - %t157 = load %S.ast.Node, ptr %a2 - %t158 = load i64, ptr %a153 - %t159 = call %S.gen.Val @finch.gen.enumFrom(ptr %t156, %S.ast.Node %t157, i64 %t158) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t159 -endif8659: - %t160 = load ptr, ptr %a1 - %t161 = load { ptr, i64, i64 }, ptr %a69 - %t162 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t163 = load { ptr, i64, i64 }, ptr %t162 - %t164 = call i64 @finch.gen.findStruct(ptr %t160, { ptr, i64, i64 } %t161, { ptr, i64, i64 } %t163) - store i64 %t164, ptr %a165 - %t166 = load i64, ptr %a165 - %t167 = icmp sge i64 %t166, 0 - br i1 %t167, label %then8660, label %endif8662 -then8660: - store { ptr, i64, i64 } zeroinitializer, ptr %a168 - %t169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - store i64 1, ptr %a172 - br label %for.cond8663 -for.cond8663: - %t173 = load i64, ptr %a172 - %t174 = icmp slt i64 %t173, %t171 - br i1 %t174, label %for.body8664, label %for.end8666 -for.body8664: - %t175 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t176 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t177 = load i64, ptr %a172 - %t178 = load { ptr, i64, i64 }, ptr %t176 - %t179 = extractvalue { ptr, i64, i64 } %t178, 1 - %t180 = icmp uge i64 %t177, %t179 - br i1 %t180, label %range8667, label %inrange8668 -range8667: - call void @finch_panic_index(ptr @.str.5598, i64 5258, i64 %t177, i64 %t179) - unreachable -inrange8668: - %t181 = extractvalue { ptr, i64, i64 } %t178, 0 - %t182 = getelementptr inbounds %S.ast.Node, ptr %t181, i64 %t177 - %t183 = load %S.ast.Node, ptr %t182 - store %S.ast.Node %t183, ptr %a184 - call void @finch.copy.S_ast_Node(ptr %a185, ptr %a184) - %t186 = load %S.ast.Node, ptr %a185 - %t187 = load i64, ptr %t175 - %t188 = add i64 %t187, 1 - call void @finch_arr_reserve(ptr %a168, i64 %t188, i64 ptrtoint (ptr getelementptr (%S.ast.Node, ptr null, i32 1) to i64)) - %t189 = load ptr, ptr %a168 - %t190 = getelementptr inbounds %S.ast.Node, ptr %t189, i64 %t187 - store %S.ast.Node %t186, ptr %t190 - store i64 %t188, ptr %t175 - br label %for.step8665 -for.step8665: - %t191 = load i64, ptr %a172 - %t192 = add i64 %t191, 1 - store i64 %t192, ptr %a172 - br label %for.cond8663 -for.end8666: - %t193 = load ptr, ptr %a1 - %t194 = load i64, ptr %a165 - %t195 = load { ptr, i64, i64 }, ptr %a168 - %t196 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 10 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load %S.ast.Node, ptr %a2 - %t199 = call %S.gen.Val @finch.gen.construct(ptr %t193, i64 %t194, { ptr, i64, i64 } %t195, { ptr, i64, i64 } %t197, %S.ast.Node %t198) - call void @finch.drop.arr_S_ast_Node(ptr %a168) - call void @finch_str_drop(ptr %a69) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t199 -endif8662: - %t200 = load ptr, ptr %a1 - %t201 = load %S.ast.Node, ptr %a2 - %t202 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5599, i64 12, 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.5600, i64 35, i64 0 }, ptr %a209 - call void @finch_str_concat(ptr %a207, ptr %a208, ptr %a209) - store { ptr, i64, i64 } %t206, ptr %a210 - call void @finch_str_drop(ptr %a210) - %t211 = load { ptr, i64, i64 }, ptr %a207 - %t212 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t213 = load { ptr, i64, i64 }, ptr %t212 - store { ptr, i64, i64 } %t211, ptr %a215 - store { ptr, i64, i64 } %t213, ptr %a216 - call void @finch_str_concat(ptr %a214, ptr %a215, ptr %a216) - store { ptr, i64, i64 } %t211, ptr %a217 - call void @finch_str_drop(ptr %a217) - %t218 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t218, ptr %a220 - store { ptr, i64, i64 } { ptr @.str.5601, i64 1, i64 0 }, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - store { ptr, i64, i64 } %t218, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = load { ptr, i64, i64 }, ptr %a219 - call void @finch.gen.fail(ptr %t200, %S.ast.Node %t201, { ptr, i64, i64 } %t223) - store { ptr, i64, i64 } %t223, ptr %a224 - call void @finch_str_drop(ptr %a224) - call void @finch_str_drop(ptr %a69) - br label %endif8647 -endif8647: - %t225 = mul i64 8, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t226 = call ptr @finch_alloc(i64 %t225) - %t227 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 0 - store { ptr, i64, i64 } { ptr @.str.5602, i64 4, i64 0 }, ptr %t227 - %t228 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 1 - store { ptr, i64, i64 } { ptr @.str.5603, i64 3, i64 0 }, ptr %t228 - %t229 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 2 - store { ptr, i64, i64 } { ptr @.str.5604, i64 6, i64 0 }, ptr %t229 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 3 - store { ptr, i64, i64 } { ptr @.str.5605, i64 6, i64 0 }, ptr %t230 - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 4 - store { ptr, i64, i64 } { ptr @.str.5606, i64 5, i64 0 }, ptr %t231 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 5 - store { ptr, i64, i64 } { ptr @.str.5607, i64 6, i64 0 }, ptr %t232 - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 6 - store { ptr, i64, i64 } { ptr @.str.5608, i64 4, i64 0 }, ptr %t233 - %t234 = getelementptr inbounds { ptr, i64, i64 }, ptr %t226, i64 7 - store { ptr, i64, i64 } { ptr @.str.5609, i64 7, i64 0 }, ptr %t234 - %t235 = insertvalue { ptr, i64, i64 } undef, ptr %t226, 0 - %t236 = insertvalue { ptr, i64, i64 } %t235, i64 8, 1 - %t237 = insertvalue { ptr, i64, i64 } %t236, i64 8, 2 - store { ptr, i64, i64 } %t237, ptr %a238 - %t239 = load ptr, ptr %a1 - %t240 = load %S.ast.Node, ptr %a13 - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, 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 %a238 - store i64 0, ptr %a247 - br label %find.cond8669 -find.cond8669: - %t248 = load i64, ptr %a247 - %t249 = icmp slt i64 %t248, %t245 - br i1 %t249, label %find.body8670, label %find.end8673 -find.body8670: - %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.hit8671, label %find.next8672 -find.hit8671: - store i64 %t248, ptr %a244 - br label %find.end8673 -find.next8672: - %t256 = add i64 %t248, 1 - store i64 %t256, ptr %a247 - br label %find.cond8669 -find.end8673: - %t257 = load i64, ptr %a244 - %t258 = icmp sge i64 %t257, 0 - %t259 = call %S.gen.Ref @finch.gen.ref(ptr %t239, %S.ast.Node %t240, i1 %t258) - store %S.gen.Ref %t259, ptr %a260 - %t261 = load ptr, ptr %a1 - %t262 = icmp eq ptr %t261, null - br i1 %t262, label %panic8674, label %ok8675 -panic8674: - call void @finch_panic(ptr @.str.5610, i64 5266, ptr @.str.5611) - unreachable -ok8675: - %t263 = getelementptr inbounds %S.gen.Gen, ptr %t261, i32 0, i32 11 - %t264 = getelementptr inbounds { ptr, i64, i64 }, ptr %t263, i32 0, i32 1 - %t265 = load i64, ptr %t264 - store i64 %t265, ptr %a266 - %t267 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t268 = getelementptr inbounds %S.gen.Val, ptr %t267, i32 0, i32 1 - %t269 = load %S.ast.Type, ptr %t268 - store %S.ast.Type %t269, ptr %a270 - call void @finch.copy.S_ast_Type(ptr %a271, ptr %a270) - %t272 = load %S.ast.Type, ptr %a271 - store %S.ast.Type %t272, ptr %a273 - %t274 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t275 = load i1, ptr %t274 - br i1 %t275, label %then8676, label %endif8678 -then8676: - %t276 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t277 = getelementptr inbounds %S.gen.Place, ptr %t276, i32 0, i32 1 - %t278 = load %S.ast.Type, ptr %t277 - store %S.ast.Type %t278, ptr %a279 - call void @finch.copy.S_ast_Type(ptr %a280, ptr %a279) - %t281 = load %S.ast.Type, ptr %a280 - %t282 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t281, ptr %a273 - store %S.ast.Type %t282, ptr %a283 - call void @finch.drop.S_ast_Type(ptr %a283) - br label %endif8678 -endif8678: - %t284 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - store { ptr, i64, i64 } { ptr @.str.5612, i64 5, i64 0 }, ptr %a287 - %t288 = call i32 @finch_str_eq(ptr %a286, ptr %a287) - %t289 = icmp ne i32 %t288, 0 - br i1 %t289, label %then8679, label %endif8681 -then8679: - store { ptr, i64, i64 } { ptr @.str.5613, i64 0, i64 0 }, ptr %a290 - %t291 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t292 = load i1, ptr %t291 - br i1 %t292, label %then8682, label %else8683 -then8682: - %t293 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t294 = getelementptr inbounds %S.gen.Place, ptr %t293, 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 - %t299 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t298, ptr %a290 - store { ptr, i64, i64 } %t299, ptr %a300 - call void @finch_str_drop(ptr %a300) - br label %endif8684 -else8683: - %t301 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t302 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t303 = load { ptr, i64, i64 }, ptr %t302 - store i64 -1, ptr %a304 - %t305 = load i64, ptr %t301 - %t306 = load ptr, ptr %a238 - store i64 0, ptr %a307 - br label %find.cond8685 -find.cond8685: - %t308 = load i64, ptr %a307 - %t309 = icmp slt i64 %t308, %t305 - br i1 %t309, label %find.body8686, label %find.end8689 -find.body8686: - %t310 = getelementptr inbounds { ptr, i64, i64 }, ptr %t306, i64 %t308 - %t311 = load { ptr, i64, i64 }, ptr %t310 - store { ptr, i64, i64 } %t311, ptr %a312 - store { ptr, i64, i64 } %t303, ptr %a313 - %t314 = call i32 @finch_str_eq(ptr %a312, ptr %a313) - %t315 = icmp ne i32 %t314, 0 - br i1 %t315, label %find.hit8687, label %find.next8688 -find.hit8687: - store i64 %t308, ptr %a304 - br label %find.end8689 -find.next8688: - %t316 = add i64 %t308, 1 - store i64 %t316, ptr %a307 - br label %find.cond8685 -find.end8689: - %t317 = load i64, ptr %a304 - %t318 = icmp sge i64 %t317, 0 - br i1 %t318, label %then8690, label %endif8692 -then8690: - %t319 = load ptr, ptr %a1 - %t320 = load %S.ast.Node, ptr %a2 - %t321 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t322 = load { ptr, i64, i64 }, ptr %t321 - store { ptr, i64, i64 } %t322, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.5614, i64 63, i64 0 }, ptr %a325 - call void @finch_str_concat(ptr %a323, ptr %a324, ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a323 - call void @finch.gen.fail(ptr %t319, %S.ast.Node %t320, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif8692 -endif8692: - %t328 = load ptr, ptr %a1 - %t329 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t330 = load %S.gen.Val, ptr %t329 - %t331 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t328, %S.gen.Val %t330) - %t332 = load { ptr, i64, i64 }, ptr %a290 - store { ptr, i64, i64 } %t331, ptr %a290 - store { ptr, i64, i64 } %t332, ptr %a333 - call void @finch_str_drop(ptr %a333) - %t334 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t335 = getelementptr inbounds %S.gen.Val, ptr %t334, i32 0, i32 2 - %t336 = load i1, ptr %t335 - br i1 %t336, label %then8693, label %endif8695 -then8693: - %t337 = load ptr, ptr %a1 - %t338 = load { ptr, i64, i64 }, ptr %a290 - %t339 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t337, { ptr, i64, i64 } %t338, %S.ast.Type %t339) - br label %endif8695 -endif8695: - br label %endif8684 -endif8684: - %t340 = load ptr, ptr %a1 - %t341 = load %S.ast.Node, ptr %a2 - %t342 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.gen.noteMethod(ptr %t340, %S.ast.Node %t341, { ptr, i64, i64 } %t342) - store { ptr, i64, i64 } %t342, ptr %a343 - call void @finch.drop.arr_S_docs_Doc(ptr %a343) - %t344 = load ptr, ptr %a1 - %t345 = load %S.ast.Node, ptr %a2 - %t346 = load { ptr, i64, i64 }, ptr %a290 - %t347 = load %S.ast.Type, ptr %a273 - %t348 = call %S.gen.Val @finch.gen.arrayMethod(ptr %t344, %S.ast.Node %t345, { ptr, i64, i64 } %t346, %S.ast.Type %t347) - store %S.gen.Val %t348, ptr %a349 - %t350 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t351 = load i1, ptr %t350 - %t352 = xor i1 %t351, true - br label %logic.from8696 -logic.from8696: - br i1 %t352, label %logic.rhs8697, label %logic.end8698 -logic.rhs8697: - %t353 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t354 = getelementptr inbounds %S.gen.Val, ptr %t353, i32 0, i32 2 - %t355 = load i1, ptr %t354 - br label %logic.rend8699 -logic.rend8699: - br label %logic.end8698 -logic.end8698: - %t356 = phi i1 [ false, %logic.from8696 ], [ %t355, %logic.rend8699 ] - br i1 %t356, label %then8700, label %endif8702 -then8700: - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a290 - %t359 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t357, { ptr, i64, i64 } %t358, %S.ast.Type %t359) - br label %endif8702 -endif8702: - %t360 = load ptr, ptr %a1 - %t361 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t360, i64 %t361) - %t362 = load %S.gen.Val, ptr %a349 - call void @finch_str_drop(ptr %a290) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t362 -endif8681: - %t363 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t364 = load { ptr, i64, i64 }, ptr %t363 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5615, i64 3, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br i1 %t368, label %then8703, label %endif8705 -then8703: - %t369 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t370 = load %S.gen.Val, ptr %t369 - store %S.gen.Val %t370, ptr %a371 - call void @finch.copy.S_gen_Val(ptr %a372, ptr %a371) - %t373 = load %S.gen.Val, ptr %a372 - store %S.gen.Val %t373, ptr %a374 - %t375 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t376 = load i1, ptr %t375 - br i1 %t376, label %then8706, label %endif8708 -then8706: - %t377 = load ptr, ptr %a1 - %t378 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t379 = getelementptr inbounds %S.gen.Place, ptr %t378, i32 0, i32 0 - %t380 = load { ptr, i64, i64 }, ptr %t379 - %t381 = call { ptr, i64, i64 } @finch.gen.load(ptr %t377, { ptr, i64, i64 } { ptr @.str.5616, i64 17, i64 0 }, { ptr, i64, i64 } %t380) - %t382 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t381, 0 - %t383 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t383, ptr %a384 - call void @finch.copy.S_ast_Type(ptr %a385, ptr %a384) - %t386 = load %S.ast.Type, ptr %a385 - %t387 = insertvalue %S.gen.Val %t382, %S.ast.Type %t386, 1 - %t388 = load %S.gen.Val, ptr %a374 - store %S.gen.Val %t387, ptr %a374 - store %S.gen.Val %t388, ptr %a389 - call void @finch.drop.S_gen_Val(ptr %a389) - br label %endif8708 -endif8708: - %t390 = load ptr, ptr %a1 - %t391 = load %S.ast.Node, ptr %a2 - %t392 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.gen.noteMethod(ptr %t390, %S.ast.Node %t391, { ptr, i64, i64 } %t392) - store { ptr, i64, i64 } %t392, ptr %a393 - call void @finch.drop.arr_S_docs_Doc(ptr %a393) - %t394 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t395 = load i1, ptr %t394 - %t396 = xor i1 %t395, true - br i1 %t396, label %then8709, label %endif8711 -then8709: - %t397 = load ptr, ptr %a1 - %t398 = load %S.gen.Val, ptr %a374 - call void @finch.gen.hold(ptr %t397, %S.gen.Val %t398) - br label %endif8711 -endif8711: - %t399 = load ptr, ptr %a1 - %t400 = load %S.ast.Node, ptr %a2 - %t401 = load ptr, ptr %a1 - %t402 = load %S.gen.Val, ptr %a374 - %t403 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t401, %S.gen.Val %t402) - %t404 = call %S.gen.Val @finch.gen.strMethod(ptr %t399, %S.ast.Node %t400, { ptr, i64, i64 } %t403) - store { ptr, i64, i64 } %t403, ptr %a405 - call void @finch_str_drop(ptr %a405) - store %S.gen.Val %t404, ptr %a406 - %t407 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t408 = load i1, ptr %t407 - %t409 = xor i1 %t408, true - br i1 %t409, label %then8712, label %endif8714 -then8712: - %t410 = load ptr, ptr %a1 - %t411 = load %S.gen.Val, ptr %a374 - call void @finch.gen.release(ptr %t410, %S.gen.Val %t411) - br label %endif8714 -endif8714: - %t412 = load ptr, ptr %a1 - %t413 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t412, i64 %t413) - %t414 = load %S.gen.Val, ptr %a406 - call void @finch.drop.S_gen_Val(ptr %a374) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t414 -endif8705: - %t415 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t416 = load { ptr, i64, i64 }, ptr %t415 - store { ptr, i64, i64 } %t416, ptr %a417 - store { ptr, i64, i64 } { ptr @.str.5617, i64 3, i64 0 }, ptr %a418 - %t419 = call i32 @finch_str_eq(ptr %a417, ptr %a418) - %t420 = icmp ne i32 %t419, 0 - br i1 %t420, label %then8715, label %endif8717 -then8715: - store { ptr, i64, i64 } { ptr @.str.5618, i64 0, i64 0 }, ptr %a421 - %t422 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t423 = load i1, ptr %t422 - br i1 %t423, label %then8718, label %else8719 -then8718: - %t424 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t425 = getelementptr inbounds %S.gen.Place, ptr %t424, i32 0, i32 0 - %t426 = load { ptr, i64, i64 }, ptr %t425 - store { ptr, i64, i64 } %t426, ptr %a427 - call void @finch_str_copy(ptr %a428, ptr %a427) - %t429 = load { ptr, i64, i64 }, ptr %a428 - %t430 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t429, ptr %a421 - store { ptr, i64, i64 } %t430, ptr %a431 - call void @finch_str_drop(ptr %a431) - br label %endif8720 -else8719: - %t432 = getelementptr inbounds { ptr, i64, i64 }, ptr %a238, i32 0, i32 1 - %t433 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t434 = load { ptr, i64, i64 }, ptr %t433 - store i64 -1, ptr %a435 - %t436 = load i64, ptr %t432 - %t437 = load ptr, ptr %a238 - store i64 0, ptr %a438 - br label %find.cond8721 -find.cond8721: - %t439 = load i64, ptr %a438 - %t440 = icmp slt i64 %t439, %t436 - br i1 %t440, label %find.body8722, label %find.end8725 -find.body8722: - %t441 = getelementptr inbounds { ptr, i64, i64 }, ptr %t437, i64 %t439 - %t442 = load { ptr, i64, i64 }, ptr %t441 - store { ptr, i64, i64 } %t442, ptr %a443 - store { ptr, i64, i64 } %t434, ptr %a444 - %t445 = call i32 @finch_str_eq(ptr %a443, ptr %a444) - %t446 = icmp ne i32 %t445, 0 - br i1 %t446, label %find.hit8723, label %find.next8724 -find.hit8723: - store i64 %t439, ptr %a435 - br label %find.end8725 -find.next8724: - %t447 = add i64 %t439, 1 - store i64 %t447, ptr %a438 - br label %find.cond8721 -find.end8725: - %t448 = load i64, ptr %a435 - %t449 = icmp sge i64 %t448, 0 - br i1 %t449, label %then8726, label %endif8728 -then8726: - %t450 = load ptr, ptr %a1 - %t451 = load %S.ast.Node, ptr %a2 - %t452 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t453 = load { ptr, i64, i64 }, ptr %t452 - store { ptr, i64, i64 } %t453, ptr %a455 - store { ptr, i64, i64 } { ptr @.str.5619, i64 61, i64 0 }, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - %t457 = load { ptr, i64, i64 }, ptr %a454 - call void @finch.gen.fail(ptr %t450, %S.ast.Node %t451, { ptr, i64, i64 } %t457) - store { ptr, i64, i64 } %t457, ptr %a458 - call void @finch_str_drop(ptr %a458) - br label %endif8728 -endif8728: - %t459 = load ptr, ptr %a1 - %t460 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t461 = load %S.gen.Val, ptr %t460 - %t462 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t459, %S.gen.Val %t461) - %t463 = load { ptr, i64, i64 }, ptr %a421 - store { ptr, i64, i64 } %t462, ptr %a421 - store { ptr, i64, i64 } %t463, ptr %a464 - call void @finch_str_drop(ptr %a464) - %t465 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t466 = getelementptr inbounds %S.gen.Val, ptr %t465, i32 0, i32 2 - %t467 = load i1, ptr %t466 - br i1 %t467, label %then8729, label %endif8731 -then8729: - %t468 = load ptr, ptr %a1 - %t469 = load { ptr, i64, i64 }, ptr %a421 - %t470 = load %S.ast.Type, ptr %a273 - call void @finch.gen.holdAddr(ptr %t468, { ptr, i64, i64 } %t469, %S.ast.Type %t470) - br label %endif8731 -endif8731: - br label %endif8720 -endif8720: - %t471 = load ptr, ptr %a1 - %t472 = load %S.ast.Node, ptr %a2 - %t473 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.gen.noteMethod(ptr %t471, %S.ast.Node %t472, { ptr, i64, i64 } %t473) - store { ptr, i64, i64 } %t473, ptr %a474 - call void @finch.drop.arr_S_docs_Doc(ptr %a474) - %t475 = load ptr, ptr %a1 - %t476 = load %S.ast.Node, ptr %a2 - %t477 = load { ptr, i64, i64 }, ptr %a421 - %t478 = load %S.ast.Type, ptr %a273 - %t479 = call %S.gen.Val @finch.gen.mapMethod(ptr %t475, %S.ast.Node %t476, { ptr, i64, i64 } %t477, %S.ast.Type %t478) - store %S.gen.Val %t479, ptr %a480 - %t481 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t482 = load i1, ptr %t481 - %t483 = xor i1 %t482, true - br label %logic.from8732 -logic.from8732: - br i1 %t483, label %logic.rhs8733, label %logic.end8734 -logic.rhs8733: - %t484 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t485 = getelementptr inbounds %S.gen.Val, ptr %t484, i32 0, i32 2 - %t486 = load i1, ptr %t485 - br label %logic.rend8735 -logic.rend8735: - br label %logic.end8734 -logic.end8734: - %t487 = phi i1 [ false, %logic.from8732 ], [ %t486, %logic.rend8735 ] - br i1 %t487, label %then8736, label %endif8738 -then8736: - %t488 = load ptr, ptr %a1 - %t489 = load { ptr, i64, i64 }, ptr %a421 - %t490 = load %S.ast.Type, ptr %a273 - call void @finch.gen.dropAt(ptr %t488, { ptr, i64, i64 } %t489, %S.ast.Type %t490) - br label %endif8738 -endif8738: - %t491 = load ptr, ptr %a1 - %t492 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t491, i64 %t492) - %t493 = load %S.gen.Val, ptr %a480 - call void @finch_str_drop(ptr %a421) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t493 -endif8717: - %t494 = load ptr, ptr %a1 - %t495 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t494, i64 %t495) - %t496 = load %S.ast.Type, ptr %a273 - store %S.ast.Type %t496, ptr %a497 - call void @finch.copy.S_ast_Type(ptr %a498, ptr %a497) - %t499 = load %S.ast.Type, ptr %a498 - store %S.ast.Type %t499, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.5620, i64 0, i64 0 }, ptr %a501 - store i1 false, ptr %a502 - %t503 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t504 = load { ptr, i64, i64 }, ptr %t503 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5621, i64 3, i64 0 }, ptr %a506 - %t507 = call i32 @finch_str_eq(ptr %a505, ptr %a506) - %t508 = icmp ne i32 %t507, 0 - br label %logic.from8739 -logic.from8739: - br i1 %t508, label %logic.rhs8740, label %logic.end8741 -logic.rhs8740: - %t509 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t510 = getelementptr inbounds { ptr, i64, i64 }, ptr %t509, i32 0, i32 1 - %t511 = load i64, ptr %t510 - %t512 = icmp sgt i64 %t511, 0 - br label %logic.rend8742 -logic.rend8742: - br label %logic.end8741 -logic.end8741: - %t513 = phi i1 [ false, %logic.from8739 ], [ %t512, %logic.rend8742 ] - br label %logic.from8743 -logic.from8743: - br i1 %t513, label %logic.rhs8744, label %logic.end8745 -logic.rhs8744: - %t514 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t515 = load { ptr, i64, i64 }, ptr %t514 - %t516 = extractvalue { ptr, i64, i64 } %t515, 1 - %t517 = icmp uge i64 0, %t516 - br i1 %t517, label %range8746, label %inrange8747 -range8746: - call void @finch_panic_index(ptr @.str.5622, i64 5333, i64 0, i64 %t516) - unreachable -inrange8747: - %t518 = extractvalue { ptr, i64, i64 } %t515, 0 - %t519 = getelementptr inbounds %S.ast.Type, ptr %t518, i64 0 - %t520 = getelementptr inbounds %S.ast.Type, ptr %t519, i32 0, i32 0 - %t521 = load { ptr, i64, i64 }, ptr %t520 - store { ptr, i64, i64 } %t521, ptr %a522 - store { ptr, i64, i64 } { ptr @.str.5623, i64 6, i64 0 }, ptr %a523 - %t524 = call i32 @finch_str_eq(ptr %a522, ptr %a523) - %t525 = icmp ne i32 %t524, 0 - br label %logic.rend8748 -logic.rend8748: - br label %logic.end8745 -logic.end8745: - %t526 = phi i1 [ false, %logic.from8743 ], [ %t525, %logic.rend8748 ] - br i1 %t526, label %then8749, label %else8750 -then8749: - %t527 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t528 = getelementptr inbounds %S.gen.Val, ptr %t527, i32 0, i32 0 - %t529 = load { ptr, i64, i64 }, ptr %t528 - store { ptr, i64, i64 } %t529, ptr %a530 - call void @finch_str_copy(ptr %a531, ptr %a530) - %t532 = load { ptr, i64, i64 }, ptr %a531 - store { ptr, i64, i64 } %t532, ptr %a533 - %t534 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t535 = load i1, ptr %t534 - br i1 %t535, label %then8752, label %endif8754 -then8752: - %t536 = load ptr, ptr %a1 - %t537 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t538 = getelementptr inbounds %S.gen.Place, ptr %t537, i32 0, i32 0 - %t539 = load { ptr, i64, i64 }, ptr %t538 - %t540 = call { ptr, i64, i64 } @finch.gen.load(ptr %t536, { ptr, i64, i64 } { ptr @.str.5624, i64 3, i64 0 }, { ptr, i64, i64 } %t539) - %t541 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t540, ptr %a533 - store { ptr, i64, i64 } %t541, ptr %a542 - call void @finch_str_drop(ptr %a542) - br label %endif8754 -endif8754: - %t543 = load ptr, ptr %a1 - %t544 = load ptr, ptr %a1 - %t545 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } { ptr @.str.5625, i64 12, i64 0 }, ptr %a547 - store { ptr, i64, i64 } %t545, ptr %a548 - call void @finch_str_concat(ptr %a546, ptr %a547, ptr %a548) - %t549 = load { ptr, i64, i64 }, ptr %a546 - store { ptr, i64, i64 } %t549, ptr %a551 - store { ptr, i64, i64 } { ptr @.str.5626, i64 6, i64 0 }, ptr %a552 - call void @finch_str_concat(ptr %a550, ptr %a551, ptr %a552) - store { ptr, i64, i64 } %t549, ptr %a553 - call void @finch_str_drop(ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a550 - %t555 = call { ptr, i64, i64 } @finch.gen.op(ptr %t544, { ptr, i64, i64 } %t554) - store { ptr, i64, i64 } %t554, ptr %a556 - call void @finch_str_drop(ptr %a556) - %t557 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t558 = load { ptr, i64, i64 }, ptr %t557 - store { ptr, i64, i64 } { ptr @.str.5627, i64 8, i64 0 }, 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.5628, i64 20, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t543, { ptr, i64, i64 } %t555, { ptr, i64, i64 } %t567, %S.ast.Node %t568) - store { ptr, i64, i64 } %t555, ptr %a569 - call void @finch_str_drop(ptr %a569) - store { ptr, i64, i64 } %t567, ptr %a570 - call void @finch_str_drop(ptr %a570) - %t571 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 1 - %t572 = load { ptr, i64, i64 }, ptr %t571 - %t573 = extractvalue { ptr, i64, i64 } %t572, 1 - %t574 = icmp uge i64 0, %t573 - br i1 %t574, label %range8755, label %inrange8756 -range8755: - call void @finch_panic_index(ptr @.str.5629, i64 5339, i64 0, i64 %t573) - unreachable -inrange8756: - %t575 = extractvalue { ptr, i64, i64 } %t572, 0 - %t576 = getelementptr inbounds %S.ast.Type, ptr %t575, i64 0 - %t577 = load %S.ast.Type, ptr %t576 - store %S.ast.Type %t577, ptr %a578 - call void @finch.copy.S_ast_Type(ptr %a579, ptr %a578) - %t580 = load %S.ast.Type, ptr %a579 - %t581 = load %S.ast.Type, ptr %a500 - store %S.ast.Type %t580, ptr %a500 - store %S.ast.Type %t581, ptr %a582 - call void @finch.drop.S_ast_Type(ptr %a582) - %t583 = load { ptr, i64, i64 }, ptr %a533 - store { ptr, i64, i64 } %t583, ptr %a584 - call void @finch_str_copy(ptr %a585, ptr %a584) - %t586 = load { ptr, i64, i64 }, ptr %a585 - %t587 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t586, ptr %a501 - store { ptr, i64, i64 } %t587, ptr %a588 - call void @finch_str_drop(ptr %a588) - call void @finch_str_drop(ptr %a533) - br label %endif8751 -else8750: - %t589 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t590 = load { ptr, i64, i64 }, ptr %t589 - store { ptr, i64, i64 } %t590, ptr %a591 - store { ptr, i64, i64 } { ptr @.str.5630, i64 6, i64 0 }, ptr %a592 - %t593 = call i32 @finch_str_eq(ptr %a591, ptr %a592) - %t594 = icmp ne i32 %t593, 0 - br label %logic.from8757 -logic.from8757: - br i1 %t594, label %logic.end8759, label %logic.rhs8758 -logic.rhs8758: - %t595 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t596 = load { ptr, i64, i64 }, ptr %t595 - store { ptr, i64, i64 } %t596, ptr %a597 - store { ptr, i64, i64 } { ptr @.str.5631, i64 4, i64 0 }, ptr %a598 - %t599 = call i32 @finch_str_eq(ptr %a597, ptr %a598) - %t600 = icmp ne i32 %t599, 0 - br label %logic.rend8760 -logic.rend8760: - br label %logic.end8759 -logic.end8759: - %t601 = phi i1 [ true, %logic.from8757 ], [ %t600, %logic.rend8760 ] - br i1 %t601, label %then8761, label %endif8763 -then8761: - %t602 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t603 = load i1, ptr %t602 - br i1 %t603, label %then8764, label %else8765 -then8764: - %t604 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 1 - %t605 = getelementptr inbounds %S.gen.Place, ptr %t604, i32 0, i32 0 - %t606 = load { ptr, i64, i64 }, ptr %t605 - store { ptr, i64, i64 } %t606, ptr %a607 - call void @finch_str_copy(ptr %a608, ptr %a607) - %t609 = load { ptr, i64, i64 }, ptr %a608 - %t610 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t609, ptr %a501 - store { ptr, i64, i64 } %t610, ptr %a611 - call void @finch_str_drop(ptr %a611) - br label %endif8766 -else8765: - %t612 = load ptr, ptr %a1 - %t613 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t614 = load %S.gen.Val, ptr %t613 - %t615 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t612, %S.gen.Val %t614) - %t616 = load { ptr, i64, i64 }, ptr %a501 - store { ptr, i64, i64 } %t615, ptr %a501 - store { ptr, i64, i64 } %t616, ptr %a617 - call void @finch_str_drop(ptr %a617) - store i1 true, ptr %a502 - br label %endif8766 -endif8766: - br label %endif8763 -endif8763: - br label %endif8751 -endif8751: - %t618 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - store { ptr, i64, i64 } %t619, ptr %a620 - store { ptr, i64, i64 } { ptr @.str.5632, i64 6, i64 0 }, ptr %a621 - %t622 = call i32 @finch_str_eq(ptr %a620, ptr %a621) - %t623 = icmp ne i32 %t622, 0 - br label %logic.from8767 -logic.from8767: - br i1 %t623, label %logic.end8769, label %logic.rhs8768 -logic.rhs8768: - %t624 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t625 = load { ptr, i64, i64 }, ptr %t624 - store { ptr, i64, i64 } %t625, ptr %a626 - store { ptr, i64, i64 } { ptr @.str.5633, i64 4, i64 0 }, ptr %a627 - %t628 = call i32 @finch_str_eq(ptr %a626, ptr %a627) - %t629 = icmp ne i32 %t628, 0 - br label %logic.rend8770 -logic.rend8770: - br label %logic.end8769 -logic.end8769: - %t630 = phi i1 [ true, %logic.from8767 ], [ %t629, %logic.rend8770 ] - br i1 %t630, label %then8771, label %endif8773 -then8771: - %t631 = load ptr, ptr %a1 - %t632 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t633 = load { ptr, i64, i64 }, ptr %t632 - %t634 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t635 = load { ptr, i64, i64 }, ptr %t634 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = call i64 @finch.gen.findMethod(ptr %t631, { ptr, i64, i64 } %t633, { ptr, i64, i64 } %t635, { ptr, i64, i64 } %t637) - store i64 %t638, ptr %a639 - %t640 = load i64, ptr %a639 - %t641 = icmp slt i64 %t640, 0 - br label %logic.from8774 -logic.from8774: - br i1 %t641, label %logic.rhs8775, label %logic.end8776 -logic.rhs8775: - %t642 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t643 = load { ptr, i64, i64 }, ptr %t642 - store { ptr, i64, i64 } %t643, ptr %a644 - store { ptr, i64, i64 } { ptr @.str.5634, i64 6, i64 0 }, ptr %a645 - %t646 = call i32 @finch_str_eq(ptr %a644, ptr %a645) - %t647 = icmp ne i32 %t646, 0 - br label %logic.rend8777 -logic.rend8777: - br label %logic.end8776 -logic.end8776: - %t648 = phi i1 [ false, %logic.from8774 ], [ %t647, %logic.rend8777 ] - br i1 %t648, label %then8778, label %endif8780 -then8778: - %t649 = load ptr, ptr %a1 - %t650 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t651 = load { ptr, i64, i64 }, ptr %t650 - %t652 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t653 = load { ptr, i64, i64 }, ptr %t652 - %t654 = call i64 @finch.gen.findStruct(ptr %t649, { ptr, i64, i64 } %t651, { ptr, i64, i64 } %t653) - store i64 %t654, ptr %a655 - %t656 = load ptr, ptr %a1 - %t657 = icmp eq ptr %t656, null - br i1 %t657, label %panic8781, label %ok8782 -panic8781: - call void @finch_panic(ptr @.str.5635, i64 5353, ptr @.str.5636) - unreachable -ok8782: - %t658 = getelementptr inbounds %S.gen.Gen, ptr %t656, i32 0, i32 16 - %t659 = load i64, ptr %a655 - %t660 = load { ptr, i64, i64 }, ptr %t658 - %t661 = extractvalue { ptr, i64, i64 } %t660, 1 - %t662 = icmp uge i64 %t659, %t661 - br i1 %t662, label %range8783, label %inrange8784 -range8783: - call void @finch_panic_index(ptr @.str.5637, i64 5353, i64 %t659, i64 %t661) - unreachable -inrange8784: - %t663 = extractvalue { ptr, i64, i64 } %t660, 0 - %t664 = getelementptr inbounds %S.gen.StructDef, ptr %t663, i64 %t659 - %t665 = getelementptr inbounds %S.gen.StructDef, ptr %t664, i32 0, i32 5 - %t666 = getelementptr inbounds { ptr, i64, i64 }, ptr %t665, i32 0, i32 1 - %t667 = load i64, ptr %t666 - %t668 = icmp sgt i64 %t667, 0 - br i1 %t668, label %then8785, label %endif8787 -then8785: - %t669 = load ptr, ptr %a1 - %t670 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t671 = load { ptr, i64, i64 }, ptr %t670 - %t672 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t673 = load { ptr, i64, i64 }, ptr %t672 - %t674 = load ptr, ptr %a1 - %t675 = icmp eq ptr %t674, null - br i1 %t675, label %panic8788, label %ok8789 -panic8788: - call void @finch_panic(ptr @.str.5638, i64 5354, ptr @.str.5639) - unreachable -ok8789: - %t676 = getelementptr inbounds %S.gen.Gen, ptr %t674, i32 0, i32 16 - %t677 = load i64, ptr %a655 - %t678 = load { ptr, i64, i64 }, ptr %t676 - %t679 = extractvalue { ptr, i64, i64 } %t678, 1 - %t680 = icmp uge i64 %t677, %t679 - br i1 %t680, label %range8790, label %inrange8791 -range8790: - call void @finch_panic_index(ptr @.str.5640, i64 5354, i64 %t677, i64 %t679) - unreachable -inrange8791: - %t681 = extractvalue { ptr, i64, i64 } %t678, 0 - %t682 = getelementptr inbounds %S.gen.StructDef, ptr %t681, i64 %t677 - %t683 = getelementptr inbounds %S.gen.StructDef, ptr %t682, i32 0, i32 5 - %t684 = load { ptr, i64, i64 }, ptr %t683 - %t685 = call i64 @finch.gen.findTemplate(ptr %t669, { ptr, i64, i64 } %t671, { ptr, i64, i64 } %t673, { ptr, i64, i64 } %t684, i1 false) - store i64 %t685, ptr %a686 - %t687 = load i64, ptr %a686 - %t688 = icmp sge i64 %t687, 0 - br i1 %t688, label %then8792, label %endif8794 -then8792: - %t689 = load ptr, ptr %a1 - %t690 = load i64, ptr %a686 - %t691 = load ptr, ptr %a1 - %t692 = icmp eq ptr %t691, null - br i1 %t692, label %panic8795, label %ok8796 -panic8795: - call void @finch_panic(ptr @.str.5641, i64 5356, ptr @.str.5642) - unreachable -ok8796: - %t693 = getelementptr inbounds %S.gen.Gen, ptr %t691, i32 0, i32 16 - %t694 = load i64, ptr %a655 - %t695 = load { ptr, i64, i64 }, ptr %t693 - %t696 = extractvalue { ptr, i64, i64 } %t695, 1 - %t697 = icmp uge i64 %t694, %t696 - br i1 %t697, label %range8797, label %inrange8798 -range8797: - call void @finch_panic_index(ptr @.str.5643, i64 5356, i64 %t694, i64 %t696) - unreachable -inrange8798: - %t698 = extractvalue { ptr, i64, i64 } %t695, 0 - %t699 = getelementptr inbounds %S.gen.StructDef, ptr %t698, i64 %t694 - %t700 = getelementptr inbounds %S.gen.StructDef, ptr %t699, i32 0, i32 7 - %t701 = load { ptr, i64, i64 }, ptr %t700 - %t702 = load %S.ast.Type, ptr %a500 - %t703 = load %S.ast.Node, ptr %a2 - %t704 = call i64 @finch.gen.instFn(ptr %t689, i64 %t690, { ptr, i64, i64 } %t701, %S.ast.Type %t702, %S.ast.Node %t703) - store i64 %t704, ptr %a639 - br label %endif8794 -endif8794: - br label %endif8787 -endif8787: - br label %endif8780 -endif8780: - %t705 = load i64, ptr %a639 - %t706 = icmp slt i64 %t705, 0 - br i1 %t706, label %then8799, label %endif8801 -then8799: - store { ptr, i64, i64 } zeroinitializer, ptr %a707 - %t708 = load ptr, ptr %a1 - %t709 = icmp eq ptr %t708, null - br i1 %t709, label %panic8802, label %ok8803 -panic8802: - call void @finch_panic(ptr @.str.5644, i64 5362, ptr @.str.5645) - unreachable -ok8803: - %t710 = getelementptr inbounds %S.gen.Gen, ptr %t708, i32 0, i32 15 - store i64 0, ptr %a711 - br label %each.cond8804 -each.cond8804: - %t712 = getelementptr inbounds { ptr, i64, i64 }, ptr %t710, i32 0, i32 1 - %t713 = load i64, ptr %t712 - %t714 = load i64, ptr %a711 - %t715 = icmp slt i64 %t714, %t713 - br i1 %t715, label %each.body8805, label %each.end8807 -each.body8805: - %t716 = load ptr, ptr %t710 - %t717 = getelementptr inbounds %S.gen.FnSig, ptr %t716, i64 %t714 - %t718 = load %S.gen.FnSig, ptr %t717 - store %S.gen.FnSig %t718, ptr %a719 - %t720 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 2 - %t721 = load { ptr, i64, i64 }, ptr %t720 - %t722 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t723 = load { ptr, i64, i64 }, ptr %t722 - store { ptr, i64, i64 } %t721, ptr %a724 - store { ptr, i64, i64 } %t723, ptr %a725 - %t726 = call i32 @finch_str_eq(ptr %a724, ptr %a725) - %t727 = icmp ne i32 %t726, 0 - br label %logic.from8808 -logic.from8808: - br i1 %t727, label %logic.rhs8809, label %logic.end8810 -logic.rhs8809: - %t728 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 3 - %t729 = load { ptr, i64, i64 }, ptr %t728 - %t730 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 3 - %t731 = load { ptr, i64, i64 }, ptr %t730 - store { ptr, i64, i64 } %t729, ptr %a732 - store { ptr, i64, i64 } %t731, ptr %a733 - %t734 = call i32 @finch_str_eq(ptr %a732, ptr %a733) - %t735 = icmp ne i32 %t734, 0 - br label %logic.rend8811 -logic.rend8811: - br label %logic.end8810 -logic.end8810: - %t736 = phi i1 [ false, %logic.from8808 ], [ %t735, %logic.rend8811 ] - br i1 %t736, label %then8812, label %endif8814 -then8812: - %t737 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t738 = getelementptr inbounds %S.gen.FnSig, ptr %a719, i32 0, i32 1 - %t739 = load { ptr, i64, i64 }, ptr %t738 - store { ptr, i64, i64 } %t739, ptr %a740 - call void @finch_str_copy(ptr %a741, ptr %a740) - %t742 = load { ptr, i64, i64 }, ptr %a741 - %t743 = load i64, ptr %t737 - %t744 = add i64 %t743, 1 - call void @finch_arr_reserve(ptr %a707, i64 %t744, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t745 = load ptr, ptr %a707 - %t746 = getelementptr inbounds { ptr, i64, i64 }, ptr %t745, i64 %t743 - store { ptr, i64, i64 } %t742, ptr %t746 - store i64 %t744, ptr %t737 - br label %endif8814 -endif8814: - br label %each.step8806 -each.step8806: - %t747 = load i64, ptr %a711 - %t748 = add i64 %t747, 1 - store i64 %t748, ptr %a711 - br label %each.cond8804 -each.end8807: - %t749 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - %t750 = load i64, ptr %t749 - %t751 = icmp eq i64 %t750, 0 - br i1 %t751, label %then8815, label %endif8817 -then8815: - %t752 = load ptr, ptr %a1 - %t753 = load %S.ast.Node, ptr %a2 - %t754 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t755 = load { ptr, i64, i64 }, ptr %t754 - store { ptr, i64, i64 } { ptr @.str.5646, i64 4, i64 0 }, ptr %a757 - store { ptr, i64, i64 } %t755, ptr %a758 - call void @finch_str_concat(ptr %a756, ptr %a757, ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a756 - store { ptr, i64, i64 } %t759, ptr %a761 - store { ptr, i64, i64 } { ptr @.str.5647, i64 1, i64 0 }, ptr %a762 - call void @finch_str_concat(ptr %a760, ptr %a761, ptr %a762) - store { ptr, i64, i64 } %t759, ptr %a763 - call void @finch_str_drop(ptr %a763) - %t764 = load { ptr, i64, i64 }, ptr %a760 - %t765 = load %S.ast.Type, ptr %a500 - %t766 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t765) - store { ptr, i64, i64 } %t764, ptr %a768 - store { ptr, i64, i64 } %t766, ptr %a769 - call void @finch_str_concat(ptr %a767, ptr %a768, ptr %a769) - store { ptr, i64, i64 } %t764, ptr %a770 - call void @finch_str_drop(ptr %a770) - store { ptr, i64, i64 } %t766, ptr %a771 - call void @finch_str_drop(ptr %a771) - %t772 = load { ptr, i64, i64 }, ptr %a767 - store { ptr, i64, i64 } %t772, ptr %a774 - store { ptr, i64, i64 } { ptr @.str.5648, i64 34, i64 0 }, ptr %a775 - call void @finch_str_concat(ptr %a773, ptr %a774, ptr %a775) - store { ptr, i64, i64 } %t772, ptr %a776 - call void @finch_str_drop(ptr %a776) - %t777 = load { ptr, i64, i64 }, ptr %a773 - %t778 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 2 - %t779 = load { ptr, i64, i64 }, ptr %t778 - store { ptr, i64, i64 } %t777, ptr %a781 - store { ptr, i64, i64 } %t779, ptr %a782 - call void @finch_str_concat(ptr %a780, ptr %a781, ptr %a782) - store { ptr, i64, i64 } %t777, ptr %a783 - call void @finch_str_drop(ptr %a783) - %t784 = load { ptr, i64, i64 }, ptr %a780 - store { ptr, i64, i64 } %t784, ptr %a786 - store { ptr, i64, i64 } { ptr @.str.5649, i64 1, i64 0 }, ptr %a787 - call void @finch_str_concat(ptr %a785, ptr %a786, ptr %a787) - store { ptr, i64, i64 } %t784, ptr %a788 - call void @finch_str_drop(ptr %a788) - %t789 = load { ptr, i64, i64 }, ptr %a785 - %t790 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t791 = load { ptr, i64, i64 }, ptr %t790 - store { ptr, i64, i64 } %t789, ptr %a793 - store { ptr, i64, i64 } %t791, ptr %a794 - call void @finch_str_concat(ptr %a792, ptr %a793, ptr %a794) - store { ptr, i64, i64 } %t789, ptr %a795 - call void @finch_str_drop(ptr %a795) - %t796 = load { ptr, i64, i64 }, ptr %a792 - store { ptr, i64, i64 } %t796, ptr %a798 - store { ptr, i64, i64 } { ptr @.str.5650, i64 13, i64 0 }, ptr %a799 - call void @finch_str_concat(ptr %a797, ptr %a798, ptr %a799) - store { ptr, i64, i64 } %t796, ptr %a800 - call void @finch_str_drop(ptr %a800) - %t801 = load { ptr, i64, i64 }, ptr %a797 - call void @finch.gen.fail(ptr %t752, %S.ast.Node %t753, { ptr, i64, i64 } %t801) - store { ptr, i64, i64 } %t801, ptr %a802 - call void @finch_str_drop(ptr %a802) - br label %endif8817 -endif8817: - %t803 = load ptr, ptr %a1 - %t804 = load %S.ast.Node, ptr %a2 - %t805 = getelementptr inbounds %S.ast.Type, ptr %a500, i32 0, i32 0 - %t806 = load { ptr, i64, i64 }, ptr %t805 - store { ptr, i64, i64 } { ptr @.str.5651, i64 4, 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.5652, i64 1, i64 0 }, ptr %a813 - call void @finch_str_concat(ptr %a811, ptr %a812, ptr %a813) - store { ptr, i64, i64 } %t810, ptr %a814 - call void @finch_str_drop(ptr %a814) - %t815 = load { ptr, i64, i64 }, ptr %a811 - %t816 = load %S.ast.Type, ptr %a500 - %t817 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t816) - store { ptr, i64, i64 } %t815, ptr %a819 - store { ptr, i64, i64 } %t817, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t815, ptr %a821 - call void @finch_str_drop(ptr %a821) - store { ptr, i64, i64 } %t817, ptr %a822 - call void @finch_str_drop(ptr %a822) - %t823 = load { ptr, i64, i64 }, ptr %a818 - store { ptr, i64, i64 } %t823, ptr %a825 - store { ptr, i64, i64 } { ptr @.str.5653, i64 16, i64 0 }, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t823, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - %t829 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t830 = load { ptr, i64, i64 }, ptr %t829 - store { ptr, i64, i64 } %t828, ptr %a832 - store { ptr, i64, i64 } %t830, ptr %a833 - call void @finch_str_concat(ptr %a831, ptr %a832, ptr %a833) - store { ptr, i64, i64 } %t828, ptr %a834 - call void @finch_str_drop(ptr %a834) - %t835 = load { ptr, i64, i64 }, ptr %a831 - store { ptr, i64, i64 } %t835, ptr %a837 - store { ptr, i64, i64 } { ptr @.str.5654, i64 11, i64 0 }, ptr %a838 - call void @finch_str_concat(ptr %a836, ptr %a837, ptr %a838) - store { ptr, i64, i64 } %t835, ptr %a839 - call void @finch_str_drop(ptr %a839) - %t840 = load { ptr, i64, i64 }, ptr %a836 - %t841 = getelementptr inbounds { ptr, i64, i64 }, ptr %a707, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.5655, i64 2, i64 0 }, ptr %a842 - call void @finch_str_join(ptr %a843, ptr %a707, ptr %a842) - %t844 = load { ptr, i64, i64 }, ptr %a843 - store { ptr, i64, i64 } %t840, ptr %a846 - store { ptr, i64, i64 } %t844, ptr %a847 - call void @finch_str_concat(ptr %a845, ptr %a846, ptr %a847) - store { ptr, i64, i64 } %t840, ptr %a848 - call void @finch_str_drop(ptr %a848) - store { ptr, i64, i64 } %t844, ptr %a849 - call void @finch_str_drop(ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a845 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5656, i64 1, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - call void @finch.gen.fail(ptr %t803, %S.ast.Node %t804, { ptr, i64, i64 } %t855) - store { ptr, i64, i64 } %t855, ptr %a856 - call void @finch_str_drop(ptr %a856) - call void @finch.drop.arr_str(ptr %a707) - br label %endif8801 -endif8801: - %t857 = load ptr, ptr %a1 - %t858 = icmp eq ptr %t857, null - br i1 %t858, label %panic8818, label %ok8819 -panic8818: - call void @finch_panic(ptr @.str.5657, i64 5373, ptr @.str.5658) - unreachable -ok8819: - %t859 = getelementptr inbounds %S.gen.Gen, ptr %t857, i32 0, i32 15 - %t860 = load i64, ptr %a639 - %t861 = load { ptr, i64, i64 }, ptr %t859 - %t862 = extractvalue { ptr, i64, i64 } %t861, 1 - %t863 = icmp uge i64 %t860, %t862 - br i1 %t863, label %range8820, label %inrange8821 -range8820: - call void @finch_panic_index(ptr @.str.5659, i64 5373, i64 %t860, i64 %t862) - unreachable -inrange8821: - %t864 = extractvalue { ptr, i64, i64 } %t861, 0 - %t865 = getelementptr inbounds %S.gen.FnSig, ptr %t864, i64 %t860 - %t866 = getelementptr inbounds %S.gen.FnSig, ptr %t865, i32 0, i32 10 - %t867 = load i1, ptr %t866 - br label %logic.from8822 -logic.from8822: - br i1 %t867, label %logic.rhs8823, label %logic.end8824 -logic.rhs8823: - %t868 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t869 = load { ptr, i64, i64 }, ptr %t868 - store { ptr, i64, i64 } %t869, ptr %a870 - store { ptr, i64, i64 } { ptr @.str.5660, i64 6, i64 0 }, ptr %a871 - %t872 = call i32 @finch_str_eq(ptr %a870, ptr %a871) - %t873 = icmp ne i32 %t872, 0 - br label %logic.from8825 -logic.from8825: - br i1 %t873, label %logic.end8827, label %logic.rhs8826 -logic.rhs8826: - %t874 = getelementptr inbounds %S.ast.Type, ptr %a273, i32 0, i32 0 - %t875 = load { ptr, i64, i64 }, ptr %t874 - store { ptr, i64, i64 } %t875, ptr %a876 - store { ptr, i64, i64 } { ptr @.str.5661, i64 4, i64 0 }, ptr %a877 - %t878 = call i32 @finch_str_eq(ptr %a876, ptr %a877) - %t879 = icmp ne i32 %t878, 0 - br label %logic.rend8828 -logic.rend8828: - br label %logic.end8827 -logic.end8827: - %t880 = phi i1 [ true, %logic.from8825 ], [ %t879, %logic.rend8828 ] - br label %logic.rend8829 -logic.rend8829: - br label %logic.end8824 -logic.end8824: - %t881 = phi i1 [ false, %logic.from8822 ], [ %t880, %logic.rend8829 ] - br i1 %t881, label %then8830, label %endif8832 -then8830: - %t882 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 0 - %t883 = load i1, ptr %t882 - %t884 = xor i1 %t883, true - br i1 %t884, label %then8833, label %endif8835 -then8833: - %t885 = load ptr, ptr %a1 - %t886 = load %S.ast.Node, ptr %a2 - %t887 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t888 = load { ptr, i64, i64 }, ptr %t887 - store { ptr, i64, i64 } %t888, ptr %a890 - store { ptr, i64, i64 } { ptr @.str.5662, i64 28, i64 0 }, ptr %a891 - call void @finch_str_concat(ptr %a889, ptr %a890, ptr %a891) - %t892 = load { ptr, i64, i64 }, ptr %a889 - %t893 = load %S.ast.Type, ptr %a500 - %t894 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t893) - store { ptr, i64, i64 } %t892, ptr %a896 - store { ptr, i64, i64 } %t894, ptr %a897 - call void @finch_str_concat(ptr %a895, ptr %a896, ptr %a897) - store { ptr, i64, i64 } %t892, ptr %a898 - call void @finch_str_drop(ptr %a898) - store { ptr, i64, i64 } %t894, ptr %a899 - call void @finch_str_drop(ptr %a899) - %t900 = load { ptr, i64, i64 }, ptr %a895 - store { ptr, i64, i64 } %t900, ptr %a902 - store { ptr, i64, i64 } { ptr @.str.5663, i64 30, i64 0 }, ptr %a903 - call void @finch_str_concat(ptr %a901, ptr %a902, ptr %a903) - store { ptr, i64, i64 } %t900, ptr %a904 - call void @finch_str_drop(ptr %a904) - %t905 = load { ptr, i64, i64 }, ptr %a901 - call void @finch.gen.fail(ptr %t885, %S.ast.Node %t886, { ptr, i64, i64 } %t905) - store { ptr, i64, i64 } %t905, ptr %a906 - call void @finch_str_drop(ptr %a906) - br label %endif8835 -endif8835: - %t907 = load %S.ast.Node, ptr %a13 - %t908 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t907) - store { ptr, i64, i64 } %t908, ptr %a909 - %t910 = getelementptr inbounds { ptr, i64, i64 }, ptr %a909, i32 0, i32 1 - %t911 = load i64, ptr %t910 - %t912 = icmp sgt i64 %t911, 0 - br i1 %t912, label %then8836, label %endif8838 -then8836: - %t913 = load ptr, ptr %a1 - %t914 = load { ptr, i64, i64 }, ptr %a909 - %t915 = call i64 @finch.gen.lookup(ptr %t913, { ptr, i64, i64 } %t914) - store i64 %t915, ptr %a916 - %t917 = load i64, ptr %a916 - %t918 = icmp sge i64 %t917, 0 - br label %logic.from8839 -logic.from8839: - br i1 %t918, label %logic.rhs8840, label %logic.end8841 -logic.rhs8840: - %t919 = load ptr, ptr %a1 - %t920 = load i64, ptr %a916 - %t921 = call %S.gen.Var @finch.gen.varAt(ptr %t919, i64 %t920) - %t922 = extractvalue %S.gen.Var %t921, 3 - store %S.gen.Var %t921, ptr %a923 - call void @finch.drop.S_gen_Var(ptr %a923) - br label %logic.rend8842 -logic.rend8842: - br label %logic.end8841 -logic.end8841: - %t924 = phi i1 [ false, %logic.from8839 ], [ %t922, %logic.rend8842 ] - br i1 %t924, label %then8843, label %endif8845 -then8843: - %t925 = load ptr, ptr %a1 - %t926 = load %S.ast.Node, ptr %a2 - %t927 = load { ptr, i64, i64 }, ptr %a909 - store { ptr, i64, i64 } { ptr @.str.5664, i64 19, i64 0 }, 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.5665, i64 18, i64 0 }, ptr %a934 - call void @finch_str_concat(ptr %a932, ptr %a933, ptr %a934) - store { ptr, i64, i64 } %t931, ptr %a935 - call void @finch_str_drop(ptr %a935) - %t936 = load { ptr, i64, i64 }, ptr %a932 - call void @finch.gen.fail(ptr %t925, %S.ast.Node %t926, { ptr, i64, i64 } %t936) - store { ptr, i64, i64 } %t936, ptr %a937 - call void @finch_str_drop(ptr %a937) - br label %endif8845 -endif8845: - br label %endif8838 -endif8838: - call void @finch_str_drop(ptr %a909) - br label %endif8832 -endif8832: - %t938 = load i1, ptr %a502 - br label %logic.from8846 -logic.from8846: - br i1 %t938, label %logic.rhs8847, label %logic.end8848 -logic.rhs8847: - %t939 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t940 = getelementptr inbounds %S.gen.Val, ptr %t939, i32 0, i32 2 - %t941 = load i1, ptr %t940 - br label %logic.rend8849 -logic.rend8849: - br label %logic.end8848 -logic.end8848: - %t942 = phi i1 [ false, %logic.from8846 ], [ %t941, %logic.rend8849 ] - br i1 %t942, label %then8850, label %endif8852 -then8850: - %t943 = load ptr, ptr %a1 - %t944 = load { ptr, i64, i64 }, ptr %a501 - %t945 = load %S.ast.Type, ptr %a500 - call void @finch.gen.holdAddr(ptr %t943, { ptr, i64, i64 } %t944, %S.ast.Type %t945) - br label %endif8852 -endif8852: - %t946 = load ptr, ptr %a1 - %t947 = load i64, ptr %a639 - %t948 = load %S.ast.Node, ptr %a2 - %t949 = load %S.ast.Type, ptr %a500 - %t950 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t949) - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5666, i64 1, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 1 - %t957 = load { ptr, i64, i64 }, ptr %t956 - store { ptr, i64, i64 } %t955, ptr %a959 - store { ptr, i64, i64 } %t957, ptr %a960 - call void @finch_str_concat(ptr %a958, ptr %a959, ptr %a960) - store { ptr, i64, i64 } %t955, ptr %a961 - call void @finch_str_drop(ptr %a961) - %t962 = load { ptr, i64, i64 }, ptr %a958 - %t963 = load { ptr, i64, i64 }, ptr %a501 - %t964 = load %S.ast.Node, ptr %a13 - %t965 = call { ptr, i64, i64 } @finch.gen.rootVar(%S.ast.Node %t964) - %t966 = call %S.gen.Val @finch.gen.callFn(ptr %t946, i64 %t947, %S.ast.Node %t948, i64 1, { ptr, i64, i64 } %t962, { ptr, i64, i64 } %t963, { ptr, i64, i64 } %t965) - store { ptr, i64, i64 } %t962, ptr %a967 - call void @finch_str_drop(ptr %a967) - store { ptr, i64, i64 } %t965, ptr %a968 - call void @finch_str_drop(ptr %a968) - store %S.gen.Val %t966, ptr %a969 - %t970 = load i1, ptr %a502 - br label %logic.from8853 -logic.from8853: - br i1 %t970, label %logic.rhs8854, label %logic.end8855 -logic.rhs8854: - %t971 = getelementptr inbounds %S.gen.Ref, ptr %a260, i32 0, i32 2 - %t972 = getelementptr inbounds %S.gen.Val, ptr %t971, i32 0, i32 2 - %t973 = load i1, ptr %t972 - br label %logic.rend8856 -logic.rend8856: - br label %logic.end8855 -logic.end8855: - %t974 = phi i1 [ false, %logic.from8853 ], [ %t973, %logic.rend8856 ] - br label %logic.from8857 -logic.from8857: - br i1 %t974, label %logic.rhs8858, label %logic.end8859 -logic.rhs8858: - %t975 = load ptr, ptr %a1 - %t976 = load %S.ast.Type, ptr %a500 - %t977 = call i1 @finch.gen.owning(ptr %t975, %S.ast.Type %t976) - br label %logic.rend8860 -logic.rend8860: - br label %logic.end8859 -logic.end8859: - %t978 = phi i1 [ false, %logic.from8857 ], [ %t977, %logic.rend8860 ] - br i1 %t978, label %then8861, label %endif8863 -then8861: - %t979 = load ptr, ptr %a1 - %t980 = load { ptr, i64, i64 }, ptr %a501 - %t981 = load %S.ast.Type, ptr %a500 - call void @finch.gen.dropAt(ptr %t979, { ptr, i64, i64 } %t980, %S.ast.Type %t981) - br label %endif8863 -endif8863: - %t982 = load ptr, ptr %a1 - %t983 = load i64, ptr %a266 - call void @finch.gen.heldEnd(ptr %t982, i64 %t983) - %t984 = load %S.gen.Val, ptr %a969 - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - ret %S.gen.Val %t984 -endif8773: - %t985 = load ptr, ptr %a1 - %t986 = load %S.ast.Node, ptr %a2 - %t987 = load %S.ast.Type, ptr %a273 - %t988 = call { ptr, i64, i64 } @finch.ast.show(%S.ast.Type %t987) - store { ptr, i64, i64 } %t988, ptr %a990 - store { ptr, i64, i64 } { ptr @.str.5667, i64 15, i64 0 }, ptr %a991 - call void @finch_str_concat(ptr %a989, ptr %a990, ptr %a991) - store { ptr, i64, i64 } %t988, ptr %a992 - call void @finch_str_drop(ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a989 - call void @finch.gen.fail(ptr %t985, %S.ast.Node %t986, { ptr, i64, i64 } %t993) - store { ptr, i64, i64 } %t993, ptr %a994 - call void @finch_str_drop(ptr %a994) - call void @finch_str_drop(ptr %a501) - call void @finch.drop.S_ast_Type(ptr %a500) - call void @finch.drop.S_ast_Type(ptr %a273) - call void @finch.drop.S_gen_Ref(ptr %a260) - call void @finch.drop.arr_str(ptr %a238) - call void @finch.drop.S_ast_Node(ptr %a13) - 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 - %a35 = 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 - %a68 = alloca %S.gen.Val, align 16 - %a70 = alloca %S.gen.Val, align 16 - %a71 = 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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %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 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = 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 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a210 = 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 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca %S.ast.Type, align 16 - %a260 = alloca %S.ast.Type, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.gen.Val, align 16 - %a315 = alloca %S.gen.Val, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %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 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a388 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a394 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a399 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca %S.ast.Type, align 16 - %a420 = alloca %S.ast.Type, align 16 - %a423 = alloca %S.gen.Val, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca %S.ast.Type, align 16 - %a435 = alloca %S.ast.Type, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a442 = alloca { ptr, i64, i64 }, align 16 - %a443 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.gen.Val, align 16 - %a446 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a515 = alloca { ptr, i64, i64 }, align 16 - %a516 = alloca { ptr, i64, i64 }, align 16 - %a523 = alloca { ptr, i64, i64 }, align 16 - %a524 = alloca { ptr, i64, i64 }, align 16 - %a538 = alloca %S.gen.Val, align 16 - %a542 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a559 = alloca { ptr, i64, i64 }, align 16 - %a560 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a576 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a590 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca { ptr, i64, i64 }, align 16 - %a615 = alloca %S.gen.Val, align 16 - %a616 = alloca %S.ast.Type, align 16 - %a618 = alloca { ptr, i64, i64 }, align 16 - %a619 = alloca { ptr, i64, i64 }, align 16 - %a621 = alloca %S.gen.Val, align 16 - %a622 = alloca { ptr, i64, i64 }, align 16 - %a644 = alloca %S.gen.Val, align 16 - %a646 = alloca %S.gen.Val, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca { ptr, i64, i64 }, align 16 - %a665 = alloca { ptr, i64, i64 }, align 16 - %a666 = alloca { ptr, i64, i64 }, align 16 - %a668 = alloca { ptr, i64, i64 }, align 16 - %a669 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a674 = alloca { ptr, i64, i64 }, align 16 - %a675 = alloca { ptr, i64, i64 }, align 16 - %a676 = alloca { ptr, i64, i64 }, align 16 - %a677 = alloca { ptr, i64, i64 }, align 16 - %a679 = alloca { ptr, i64, i64 }, align 16 - %a680 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a689 = alloca { ptr, i64, i64 }, align 16 - %a690 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a695 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a700 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a702 = alloca { ptr, i64, i64 }, align 16 - %a704 = alloca { ptr, i64, i64 }, align 16 - %a705 = alloca { ptr, i64, i64 }, align 16 - %a706 = alloca { ptr, i64, i64 }, align 16 - %a707 = alloca { ptr, i64, i64 }, align 16 - %a711 = alloca { ptr, i64, i64 }, align 16 - %a713 = alloca { ptr, i64, i64 }, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a717 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a722 = alloca { ptr, i64, i64 }, align 16 - %a724 = alloca { ptr, i64, i64 }, align 16 - %a728 = alloca { ptr, i64, i64 }, align 16 - %a734 = alloca { ptr, i64, i64 }, align 16 - %a735 = alloca { ptr, i64, i64 }, align 16 - %a736 = alloca { ptr, i64, i64 }, align 16 - %a738 = alloca { ptr, i64, i64 }, align 16 - %a739 = alloca { ptr, i64, i64 }, align 16 - %a740 = alloca { ptr, i64, i64 }, align 16 - %a741 = alloca { ptr, i64, i64 }, align 16 - %a744 = alloca { ptr, i64, i64 }, align 16 - %a745 = alloca { ptr, i64, i64 }, align 16 - %a746 = alloca { ptr, i64, i64 }, align 16 - %a747 = alloca { ptr, i64, i64 }, align 16 - %a749 = alloca { ptr, i64, i64 }, align 16 - %a750 = alloca { ptr, i64, i64 }, align 16 - %a751 = alloca { ptr, i64, i64 }, align 16 - %a752 = alloca { ptr, i64, i64 }, align 16 - %a755 = alloca { ptr, i64, i64 }, align 16 - %a756 = alloca { ptr, i64, i64 }, align 16 - %a757 = alloca { ptr, i64, i64 }, align 16 - %a758 = alloca { ptr, i64, i64 }, align 16 - %a761 = alloca { ptr, i64, i64 }, align 16 - %a762 = alloca { ptr, i64, i64 }, align 16 - %a766 = alloca { ptr, i64, i64 }, align 16 - %a767 = alloca { ptr, i64, i64 }, align 16 - %a791 = alloca %S.gen.Val, align 16 - %a792 = alloca %S.ast.Type, align 16 - %a794 = alloca { ptr, i64, i64 }, align 16 - %a795 = alloca { ptr, i64, i64 }, align 16 - %a797 = alloca %S.gen.Val, align 16 - %a798 = alloca { ptr, i64, i64 }, align 16 - %a805 = alloca { ptr, i64, i64 }, align 16 - %a809 = alloca { ptr, i64, i64 }, align 16 - %a814 = alloca { ptr, i64, i64 }, align 16 - %a815 = alloca { ptr, i64, i64 }, align 16 - %a816 = alloca { ptr, i64, i64 }, align 16 - %a818 = alloca { ptr, i64, i64 }, align 16 - %a819 = alloca { ptr, i64, i64 }, align 16 - %a820 = alloca { ptr, i64, i64 }, align 16 - %a821 = alloca { ptr, i64, i64 }, align 16 - %a824 = alloca { ptr, i64, i64 }, align 16 - %a825 = alloca { ptr, i64, i64 }, align 16 - %a826 = alloca { ptr, i64, i64 }, align 16 - %a827 = alloca { ptr, i64, i64 }, align 16 - %a829 = alloca { ptr, i64, i64 }, align 16 - %a830 = alloca { ptr, i64, i64 }, align 16 - %a831 = alloca { ptr, i64, i64 }, align 16 - %a832 = alloca { ptr, i64, i64 }, align 16 - %a835 = alloca { ptr, i64, i64 }, align 16 - %a836 = alloca { ptr, i64, i64 }, align 16 - %a837 = alloca { ptr, i64, i64 }, align 16 - %a838 = alloca { ptr, i64, i64 }, align 16 - %a841 = alloca { ptr, i64, i64 }, align 16 - %a843 = alloca { ptr, i64, i64 }, align 16 - %a844 = alloca { ptr, i64, i64 }, align 16 - %a847 = alloca { ptr, i64, i64 }, align 16 - %a848 = alloca { ptr, i64, i64 }, align 16 - %a849 = alloca { ptr, i64, i64 }, align 16 - %a851 = alloca { ptr, i64, i64 }, align 16 - %a852 = alloca { ptr, i64, i64 }, align 16 - %a853 = alloca { ptr, i64, i64 }, align 16 - %a854 = alloca { ptr, i64, i64 }, align 16 - %a857 = alloca { ptr, i64, i64 }, align 16 - %a858 = alloca { ptr, i64, i64 }, align 16 - %a859 = alloca { ptr, i64, i64 }, align 16 - %a860 = alloca { ptr, i64, i64 }, align 16 - %a862 = alloca { ptr, i64, i64 }, align 16 - %a863 = alloca { ptr, i64, i64 }, align 16 - %a864 = alloca { ptr, i64, i64 }, align 16 - %a865 = alloca { ptr, i64, i64 }, align 16 - %a870 = alloca { ptr, i64, i64 }, align 16 - %a871 = alloca { ptr, i64, i64 }, align 16 - %a872 = alloca { ptr, i64, i64 }, align 16 - %a873 = alloca { ptr, i64, i64 }, align 16 - %a874 = alloca { ptr, i64, i64 }, align 16 - %a876 = alloca { ptr, i64, i64 }, align 16 - %a877 = alloca { ptr, i64, i64 }, align 16 - %a878 = alloca { ptr, i64, i64 }, align 16 - %a879 = alloca { ptr, i64, i64 }, align 16 - %a881 = alloca { ptr, i64, i64 }, align 16 - %a883 = alloca { ptr, i64, i64 }, align 16 - %a884 = alloca { ptr, i64, i64 }, align 16 - %a888 = alloca %S.ast.Type, align 16 - %a889 = alloca %S.ast.Type, align 16 - %a897 = alloca { ptr, i64, i64 }, align 16 - %a898 = alloca { ptr, i64, i64 }, align 16 - %a922 = alloca %S.gen.Val, align 16 - %a923 = alloca %S.ast.Type, align 16 - %a925 = alloca { ptr, i64, i64 }, align 16 - %a926 = alloca { ptr, i64, i64 }, align 16 - %a928 = alloca %S.gen.Val, align 16 - %a929 = alloca { ptr, i64, i64 }, align 16 - %a936 = alloca { ptr, i64, i64 }, align 16 - %a937 = alloca { ptr, i64, i64 }, align 16 - %a938 = alloca { ptr, i64, i64 }, align 16 - %a940 = alloca { ptr, i64, i64 }, align 16 - %a941 = alloca { ptr, i64, i64 }, align 16 - %a942 = alloca { ptr, i64, i64 }, align 16 - %a943 = alloca { ptr, i64, i64 }, align 16 - %a946 = alloca { ptr, i64, i64 }, align 16 - %a947 = alloca { ptr, i64, i64 }, align 16 - %a948 = alloca { ptr, i64, i64 }, align 16 - %a949 = alloca { ptr, i64, i64 }, align 16 - %a951 = alloca { ptr, i64, i64 }, align 16 - %a952 = alloca { ptr, i64, i64 }, align 16 - %a953 = alloca { ptr, i64, i64 }, align 16 - %a954 = alloca { ptr, i64, i64 }, align 16 - %a959 = alloca { ptr, i64, i64 }, align 16 - %a960 = alloca { ptr, i64, i64 }, align 16 - %a961 = alloca { ptr, i64, i64 }, align 16 - %a962 = alloca { ptr, i64, i64 }, align 16 - %a963 = alloca { ptr, i64, i64 }, align 16 - %a965 = alloca { ptr, i64, i64 }, align 16 - %a966 = alloca { ptr, i64, i64 }, align 16 - %a967 = alloca { ptr, i64, i64 }, align 16 - %a968 = alloca { ptr, i64, i64 }, align 16 - %a970 = alloca { ptr, i64, i64 }, align 16 - %a974 = alloca { ptr, i64, i64 }, align 16 - %a975 = alloca { ptr, i64, i64 }, align 16 - %a983 = alloca { ptr, i64, i64 }, align 16 - %a987 = alloca { ptr, i64, i64 }, align 16 - %a990 = alloca { ptr, i64, i64 }, align 16 - %a991 = alloca { ptr, i64, i64 }, align 16 - %a992 = alloca { ptr, i64, i64 }, align 16 - %a994 = alloca { ptr, i64, i64 }, align 16 - %a995 = alloca { ptr, i64, i64 }, align 16 - %a996 = alloca { ptr, i64, i64 }, align 16 - %a997 = alloca { ptr, i64, i64 }, align 16 - %a1000 = alloca { ptr, i64, i64 }, align 16 - %a1001 = alloca { ptr, i64, i64 }, align 16 - %a1005 = alloca { ptr, i64, i64 }, align 16 - %a1008 = alloca { ptr, i64, i64 }, align 16 - %a1009 = alloca { ptr, i64, i64 }, align 16 - %a1010 = alloca { ptr, i64, i64 }, align 16 - %a1012 = alloca { ptr, i64, i64 }, align 16 - %a1013 = alloca { ptr, i64, i64 }, align 16 - %a1014 = alloca { ptr, i64, i64 }, align 16 - %a1015 = alloca { ptr, i64, i64 }, align 16 - %a1018 = alloca { ptr, i64, i64 }, align 16 - %a1019 = alloca { ptr, i64, i64 }, align 16 - %a1020 = alloca { ptr, i64, i64 }, align 16 - %a1021 = alloca { ptr, i64, i64 }, align 16 - %a1023 = alloca { ptr, i64, i64 }, align 16 - %a1024 = alloca { ptr, i64, i64 }, align 16 - %a1025 = alloca { ptr, i64, i64 }, align 16 - %a1026 = alloca { ptr, i64, i64 }, align 16 - %a1034 = alloca { ptr, i64, i64 }, align 16 - %a1035 = alloca { ptr, i64, i64 }, align 16 - %a1036 = alloca { ptr, i64, i64 }, align 16 - %a1037 = alloca { ptr, i64, i64 }, align 16 - %a1040 = alloca { ptr, i64, i64 }, align 16 - %a1041 = alloca { ptr, i64, i64 }, align 16 - %a1045 = alloca { ptr, i64, i64 }, align 16 - %a1046 = alloca { ptr, i64, i64 }, align 16 - %a1047 = alloca { ptr, i64, i64 }, align 16 - %a1049 = alloca { ptr, i64, i64 }, align 16 - %a1050 = alloca { ptr, i64, i64 }, align 16 - %a1051 = alloca { ptr, i64, i64 }, align 16 - %a1052 = alloca { ptr, i64, i64 }, align 16 - %a1055 = alloca { ptr, i64, i64 }, align 16 - %a1056 = alloca { ptr, i64, i64 }, align 16 - %a1057 = alloca { ptr, i64, i64 }, align 16 - %a1058 = alloca { ptr, i64, i64 }, align 16 - %a1059 = alloca { ptr, i64, i64 }, align 16 - %a1061 = alloca { ptr, i64, i64 }, align 16 - %a1062 = alloca { ptr, i64, i64 }, align 16 - %a1063 = alloca { ptr, i64, i64 }, align 16 - %a1064 = alloca { ptr, i64, i64 }, align 16 - %a1072 = alloca { ptr, i64, i64 }, align 16 - %a1073 = alloca { ptr, i64, i64 }, align 16 - %a1074 = alloca { ptr, i64, i64 }, align 16 - %a1075 = alloca { ptr, i64, i64 }, align 16 - %a1078 = alloca { ptr, i64, i64 }, align 16 - %a1079 = alloca { ptr, i64, i64 }, align 16 - %a1082 = alloca { ptr, i64, i64 }, align 16 - %a1083 = alloca { ptr, i64, i64 }, align 16 - %a1084 = alloca { ptr, i64, i64 }, align 16 - %a1086 = alloca { ptr, i64, i64 }, align 16 - %a1087 = alloca { ptr, i64, i64 }, align 16 - %a1088 = alloca { ptr, i64, i64 }, align 16 - %a1089 = alloca { ptr, i64, i64 }, align 16 - %a1092 = alloca { ptr, i64, i64 }, align 16 - %a1093 = alloca { ptr, i64, i64 }, align 16 - %a1094 = alloca { ptr, i64, i64 }, align 16 - %a1095 = alloca { ptr, i64, i64 }, align 16 - %a1097 = alloca { ptr, i64, i64 }, align 16 - %a1098 = alloca { ptr, i64, i64 }, align 16 - %a1099 = alloca { ptr, i64, i64 }, align 16 - %a1100 = alloca { ptr, i64, i64 }, align 16 - %a1103 = alloca { ptr, i64, i64 }, align 16 - %a1104 = alloca { ptr, i64, i64 }, align 16 - %a1105 = alloca { ptr, i64, i64 }, align 16 - %a1106 = alloca { ptr, i64, i64 }, align 16 - %a1109 = alloca { ptr, i64, i64 }, align 16 - %a1110 = alloca { ptr, i64, i64 }, align 16 - %a1115 = alloca { ptr, i64, i64 }, align 16 - %a1120 = alloca { ptr, i64, i64 }, align 16 - %a1134 = alloca { ptr, i64, i64 }, align 16 - %a1135 = alloca { ptr, i64, i64 }, align 16 - %a1159 = alloca %S.gen.Val, align 16 - %a1160 = alloca %S.ast.Type, align 16 - %a1162 = alloca { ptr, i64, i64 }, align 16 - %a1163 = alloca { ptr, i64, i64 }, align 16 - %a1165 = alloca %S.gen.Val, align 16 - %a1166 = alloca { ptr, i64, i64 }, align 16 - %a1186 = alloca %S.gen.Val, align 16 - %a1187 = alloca %S.ast.Type, align 16 - %a1189 = alloca { ptr, i64, i64 }, align 16 - %a1190 = alloca { ptr, i64, i64 }, align 16 - %a1192 = alloca %S.gen.Val, align 16 - %a1193 = alloca { ptr, i64, i64 }, align 16 - %a1197 = alloca { ptr, i64, i64 }, align 16 - %a1200 = alloca { ptr, i64, i64 }, align 16 - %a1201 = alloca { ptr, i64, i64 }, align 16 - %a1202 = alloca { ptr, i64, i64 }, align 16 - %a1204 = alloca { ptr, i64, i64 }, align 16 - %a1205 = alloca { ptr, i64, i64 }, align 16 - %a1206 = alloca { ptr, i64, i64 }, align 16 - %a1207 = alloca { ptr, i64, i64 }, align 16 - %a1210 = alloca { ptr, i64, i64 }, align 16 - %a1211 = alloca { ptr, i64, i64 }, align 16 - %a1214 = alloca { ptr, i64, i64 }, align 16 - %a1215 = alloca { ptr, i64, i64 }, align 16 - %a1216 = alloca { ptr, i64, i64 }, align 16 - %a1218 = alloca { ptr, i64, i64 }, align 16 - %a1219 = alloca { ptr, i64, i64 }, align 16 - %a1220 = alloca { ptr, i64, i64 }, align 16 - %a1221 = alloca { ptr, i64, i64 }, align 16 - %a1224 = alloca { ptr, i64, i64 }, align 16 - %a1225 = alloca { ptr, i64, i64 }, align 16 - %a1226 = alloca { ptr, i64, i64 }, align 16 - %a1227 = alloca { ptr, i64, i64 }, align 16 - %a1230 = alloca { ptr, i64, i64 }, align 16 - %a1231 = alloca { ptr, i64, i64 }, align 16 - %a1234 = alloca { ptr, i64, i64 }, align 16 - %a1235 = alloca { ptr, i64, i64 }, align 16 - %a1236 = alloca { ptr, i64, i64 }, align 16 - %a1238 = alloca { ptr, i64, i64 }, align 16 - %a1239 = alloca { ptr, i64, i64 }, align 16 - %a1240 = alloca { ptr, i64, i64 }, align 16 - %a1241 = alloca { ptr, i64, i64 }, align 16 - %a1244 = alloca { ptr, i64, i64 }, align 16 - %a1245 = alloca { ptr, i64, i64 }, align 16 - %a1246 = alloca { ptr, i64, i64 }, align 16 - %a1247 = alloca { ptr, i64, i64 }, align 16 - %a1250 = alloca { ptr, i64, i64 }, align 16 - %a1251 = alloca { ptr, i64, i64 }, align 16 - %a1256 = alloca { ptr, i64, i64 }, align 16 - %a1257 = alloca { ptr, i64, i64 }, align 16 - %a1258 = alloca { ptr, i64, i64 }, align 16 - %a1260 = alloca { ptr, i64, i64 }, align 16 - %a1261 = alloca { ptr, i64, i64 }, align 16 - %a1262 = alloca { ptr, i64, i64 }, align 16 - %a1263 = alloca { ptr, i64, i64 }, align 16 - %a1266 = alloca { ptr, i64, i64 }, align 16 - %a1267 = alloca { ptr, i64, i64 }, align 16 - %a1268 = alloca { ptr, i64, i64 }, align 16 - %a1269 = alloca { ptr, i64, i64 }, align 16 - %a1272 = alloca { ptr, i64, i64 }, align 16 - %a1273 = alloca { ptr, i64, i64 }, align 16 - %a1274 = alloca { ptr, i64, i64 }, align 16 - %a1275 = alloca { ptr, i64, i64 }, align 16 - %a1276 = alloca { ptr, i64, i64 }, align 16 - %a1278 = alloca { ptr, i64, i64 }, align 16 - %a1279 = alloca { ptr, i64, i64 }, align 16 - %a1280 = alloca { ptr, i64, i64 }, align 16 - %a1281 = alloca { ptr, i64, i64 }, align 16 - %a1284 = alloca { ptr, i64, i64 }, align 16 - %a1285 = alloca { ptr, i64, i64 }, align 16 - %a1286 = alloca { ptr, i64, i64 }, align 16 - %a1287 = alloca { ptr, i64, i64 }, align 16 - %a1290 = alloca { ptr, i64, i64 }, align 16 - %a1292 = alloca { ptr, i64, i64 }, align 16 - %a1295 = alloca { ptr, i64, i64 }, align 16 - %a1296 = alloca { ptr, i64, i64 }, align 16 - %a1297 = alloca { ptr, i64, i64 }, align 16 - %a1299 = alloca { ptr, i64, i64 }, align 16 - %a1300 = alloca { ptr, i64, i64 }, align 16 - %a1301 = alloca { ptr, i64, i64 }, align 16 - %a1302 = alloca { ptr, i64, i64 }, align 16 - %a1305 = alloca { ptr, i64, i64 }, align 16 - %a1306 = alloca { ptr, i64, i64 }, align 16 - %a1307 = alloca { ptr, i64, i64 }, align 16 - %a1308 = alloca { ptr, i64, i64 }, align 16 - %a1311 = alloca { ptr, i64, i64 }, align 16 - %a1312 = alloca { ptr, i64, i64 }, align 16 - %a1315 = alloca { ptr, i64, i64 }, align 16 - %a1318 = alloca { ptr, i64, i64 }, align 16 - %a1319 = alloca { ptr, i64, i64 }, align 16 - %a1320 = alloca { ptr, i64, i64 }, align 16 - %a1322 = alloca { ptr, i64, i64 }, align 16 - %a1323 = alloca { ptr, i64, i64 }, align 16 - %a1324 = alloca { ptr, i64, i64 }, align 16 - %a1325 = alloca { ptr, i64, i64 }, align 16 - %a1328 = alloca { ptr, i64, i64 }, align 16 - %a1329 = alloca { ptr, i64, i64 }, align 16 - %a1330 = alloca { ptr, i64, i64 }, align 16 - %a1331 = alloca { ptr, i64, i64 }, align 16 - %a1333 = alloca { ptr, i64, i64 }, align 16 - %a1334 = alloca { ptr, i64, i64 }, align 16 - %a1335 = alloca { ptr, i64, i64 }, align 16 - %a1336 = alloca { ptr, i64, i64 }, align 16 - %a1341 = alloca { ptr, i64, i64 }, align 16 - %a1342 = alloca { ptr, i64, i64 }, align 16 - %a1343 = alloca { ptr, i64, i64 }, align 16 - %a1344 = alloca { ptr, i64, i64 }, align 16 - %a1345 = alloca { ptr, i64, i64 }, align 16 - %a1347 = alloca { ptr, i64, i64 }, align 16 - %a1348 = alloca { ptr, i64, i64 }, align 16 - %a1349 = alloca { ptr, i64, i64 }, align 16 - %a1350 = alloca { ptr, i64, i64 }, align 16 - %a1352 = alloca { ptr, i64, i64 }, align 16 - %a1356 = alloca { ptr, i64, i64 }, align 16 - %a1360 = alloca { ptr, i64, i64 }, align 16 - %a1364 = alloca { ptr, i64, i64 }, align 16 - %a1367 = alloca { ptr, i64, i64 }, align 16 - %a1368 = alloca { ptr, i64, i64 }, align 16 - %a1369 = alloca { ptr, i64, i64 }, align 16 - %a1371 = alloca { ptr, i64, i64 }, align 16 - %a1372 = alloca { ptr, i64, i64 }, align 16 - %a1373 = alloca { ptr, i64, i64 }, align 16 - %a1374 = alloca { ptr, i64, i64 }, align 16 - %a1377 = alloca { ptr, i64, i64 }, align 16 - %a1378 = alloca { ptr, i64, i64 }, align 16 - %a1379 = alloca { ptr, i64, i64 }, align 16 - %a1380 = alloca { ptr, i64, i64 }, align 16 - %a1382 = alloca { ptr, i64, i64 }, align 16 - %a1383 = alloca { ptr, i64, i64 }, align 16 - %a1384 = alloca { ptr, i64, i64 }, align 16 - %a1385 = alloca { ptr, i64, i64 }, align 16 - %a1393 = alloca { ptr, i64, i64 }, align 16 - %a1394 = alloca { ptr, i64, i64 }, align 16 - %a1395 = alloca { ptr, i64, i64 }, align 16 - %a1396 = alloca { ptr, i64, i64 }, align 16 - %a1399 = alloca { ptr, i64, i64 }, align 16 - %a1400 = alloca { ptr, i64, i64 }, align 16 - %a1403 = alloca { ptr, i64, i64 }, align 16 - %a1404 = alloca { ptr, i64, i64 }, align 16 - %a1405 = alloca { ptr, i64, i64 }, align 16 - %a1407 = alloca { ptr, i64, i64 }, align 16 - %a1408 = alloca { ptr, i64, i64 }, align 16 - %a1409 = alloca { ptr, i64, i64 }, align 16 - %a1410 = alloca { ptr, i64, i64 }, align 16 - %a1413 = alloca { ptr, i64, i64 }, align 16 - %a1414 = alloca { ptr, i64, i64 }, align 16 - %a1415 = alloca { ptr, i64, i64 }, align 16 - %a1416 = alloca { ptr, i64, i64 }, align 16 - %a1418 = alloca { ptr, i64, i64 }, align 16 - %a1419 = alloca { ptr, i64, i64 }, align 16 - %a1420 = alloca { ptr, i64, i64 }, align 16 - %a1421 = alloca { ptr, i64, i64 }, align 16 - %a1425 = alloca { ptr, i64, i64 }, align 16 - %a1426 = alloca { ptr, i64, i64 }, align 16 - %a1427 = alloca { ptr, i64, i64 }, align 16 - %a1429 = alloca { ptr, i64, i64 }, align 16 - %a1430 = alloca { ptr, i64, i64 }, align 16 - %a1431 = alloca { ptr, i64, i64 }, align 16 - %a1432 = alloca { ptr, i64, i64 }, align 16 - %a1440 = alloca { ptr, i64, i64 }, align 16 - %a1441 = alloca { ptr, i64, i64 }, align 16 - %a1442 = alloca { ptr, i64, i64 }, align 16 - %a1443 = alloca { ptr, i64, i64 }, align 16 - %a1446 = alloca { ptr, i64, i64 }, align 16 - %a1447 = alloca { ptr, i64, i64 }, align 16 - %a1448 = alloca { ptr, i64, i64 }, align 16 - %a1449 = alloca { ptr, i64, i64 }, align 16 - %a1450 = alloca { ptr, i64, i64 }, align 16 - %a1451 = alloca { ptr, i64, i64 }, align 16 - %a1454 = alloca { ptr, i64, i64 }, align 16 - %a1455 = alloca { ptr, i64, i64 }, align 16 - %a1467 = alloca %S.ast.Type, align 16 - %a1468 = alloca %S.ast.Type, align 16 - %a1473 = alloca { ptr, i64, i64 }, align 16 - %a1474 = alloca { ptr, i64, i64 }, align 16 - %a1481 = alloca { ptr, i64, i64 }, align 16 - %a1482 = alloca { ptr, i64, i64 }, align 16 - %a1484 = alloca { ptr, i64, i64 }, align 16 - %a1489 = alloca { ptr, i64, i64 }, align 16 - %a1490 = alloca { ptr, i64, i64 }, align 16 - %a1495 = alloca { ptr, i64, i64 }, align 16 - %a1496 = alloca { ptr, i64, i64 }, align 16 - %a1505 = alloca { ptr, i64, i64 }, align 16 - %a1509 = alloca { ptr, i64, i64 }, align 16 - %a1513 = alloca { ptr, i64, i64 }, align 16 - %a1516 = alloca { ptr, i64, i64 }, align 16 - %a1517 = alloca { ptr, i64, i64 }, align 16 - %a1518 = alloca { ptr, i64, i64 }, align 16 - %a1520 = alloca { ptr, i64, i64 }, align 16 - %a1521 = alloca { ptr, i64, i64 }, align 16 - %a1522 = alloca { ptr, i64, i64 }, align 16 - %a1523 = alloca { ptr, i64, i64 }, align 16 - %a1526 = alloca { ptr, i64, i64 }, align 16 - %a1527 = alloca { ptr, i64, i64 }, align 16 - %a1528 = alloca { ptr, i64, i64 }, align 16 - %a1529 = alloca { ptr, i64, i64 }, align 16 - %a1531 = alloca { ptr, i64, i64 }, align 16 - %a1532 = alloca { ptr, i64, i64 }, align 16 - %a1533 = alloca { ptr, i64, i64 }, align 16 - %a1534 = alloca { ptr, i64, i64 }, align 16 - %a1539 = alloca { ptr, i64, i64 }, align 16 - %a1540 = alloca { ptr, i64, i64 }, align 16 - %a1541 = alloca { ptr, i64, i64 }, align 16 - %a1542 = alloca { ptr, i64, i64 }, align 16 - %a1543 = alloca { ptr, i64, i64 }, align 16 - %a1545 = alloca { ptr, i64, i64 }, align 16 - %a1546 = alloca { ptr, i64, i64 }, align 16 - %a1547 = alloca { ptr, i64, i64 }, align 16 - %a1548 = alloca { ptr, i64, i64 }, align 16 - %a1551 = alloca { ptr, i64, i64 }, align 16 - %a1552 = alloca { ptr, i64, i64 }, align 16 - %a1553 = alloca { ptr, i64, i64 }, align 16 - %a1554 = alloca { ptr, i64, i64 }, align 16 - %a1556 = alloca { ptr, i64, i64 }, align 16 - %a1557 = alloca { ptr, i64, i64 }, align 16 - %a1558 = alloca { ptr, i64, i64 }, align 16 - %a1559 = alloca { ptr, i64, i64 }, align 16 - %a1561 = alloca { ptr, i64, i64 }, align 16 - %a1567 = alloca { ptr, i64, i64 }, align 16 - %a1568 = alloca { ptr, i64, i64 }, align 16 - %a1569 = alloca { ptr, i64, i64 }, align 16 - %a1571 = alloca { ptr, i64, i64 }, align 16 - %a1572 = alloca { ptr, i64, i64 }, align 16 - %a1573 = alloca { ptr, i64, i64 }, align 16 - %a1574 = alloca { ptr, i64, i64 }, align 16 - %a1576 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %range8864, label %inrange8865 -range8864: - call void @finch_panic_index(ptr @.str.5668, i64 5404, i64 0, i64 %t7) - unreachable -inrange8865: - %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.5669, 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.5670, i64 14, i64 0 }, ptr %a34 - call void @finch_str_concat(ptr %a32, ptr %a33, ptr %a34) - store { ptr, i64, i64 } %t31, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load { ptr, i64, i64 }, ptr %a32 - %t37 = call { ptr, i64, i64 } @finch.gen.op(ptr %t26, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t37, ptr %a39 - %t40 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t40, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.5671, 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 %then8866, label %endif8868 -then8866: - %t45 = load ptr, ptr %a1 - %t46 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t45, %S.ast.Node %t46, i64 1) - %t47 = load ptr, ptr %a1 - %t48 = load ptr, ptr %a1 - %t49 = load ptr, ptr %a1 - %t50 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t51 = load { ptr, i64, i64 }, ptr %t50 - %t52 = extractvalue { ptr, i64, i64 } %t51, 1 - %t53 = icmp uge i64 1, %t52 - br i1 %t53, label %range8869, label %inrange8870 -range8869: - call void @finch_panic_index(ptr @.str.5672, i64 5410, i64 1, i64 %t52) - unreachable -inrange8870: - %t54 = extractvalue { ptr, i64, i64 } %t51, 0 - %t55 = getelementptr inbounds %S.ast.Node, ptr %t54, i64 1 - %t56 = load %S.ast.Node, ptr %t55 - %t57 = load %S.ast.Type, ptr %a15 - %t58 = call %S.gen.Val @finch.gen.exprWant(ptr %t49, %S.ast.Node %t56, %S.ast.Type %t57) - %t59 = load %S.ast.Type, ptr %a15 - %t60 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t61 = load { ptr, i64, i64 }, ptr %t60 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 1, %t62 - br i1 %t63, label %range8871, label %inrange8872 -range8871: - call void @finch_panic_index(ptr @.str.5673, i64 5410, i64 1, i64 %t62) - unreachable -inrange8872: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds %S.ast.Node, ptr %t64, i64 1 - %t66 = load %S.ast.Node, ptr %t65 - %t67 = call %S.gen.Val @finch.gen.coerce(ptr %t48, %S.gen.Val %t58, %S.ast.Type %t59, %S.ast.Node %t66, { ptr, i64, i64 } { ptr @.str.5674, i64 11, i64 0 }) - store %S.gen.Val %t58, ptr %a68 - call void @finch.drop.S_gen_Val(ptr %a68) - %t69 = call { ptr, i64, i64 } @finch.gen.own(ptr %t47, %S.gen.Val %t67) - store %S.gen.Val %t67, ptr %a70 - call void @finch.drop.S_gen_Val(ptr %a70) - store { ptr, i64, i64 } %t69, ptr %a71 - %t72 = load ptr, ptr %a1 - %t73 = load { ptr, i64, i64 }, ptr %a39 - %t74 = call { ptr, i64, i64 } @finch.gen.load(ptr %t72, { ptr, i64, i64 } { ptr @.str.5675, i64 3, i64 0 }, { ptr, i64, i64 } %t73) - store { ptr, i64, i64 } %t74, ptr %a75 - %t76 = load ptr, ptr %a1 - %t77 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.5676, i64 8, i64 0 }, ptr %a79 - store { ptr, i64, i64 } %t77, ptr %a80 - call void @finch_str_concat(ptr %a78, ptr %a79, ptr %a80) - %t81 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.5677, i64 3, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t81, ptr %a85 - call void @finch_str_drop(ptr %a85) - %t86 = load { ptr, i64, i64 }, ptr %a82 - %t87 = call { ptr, i64, i64 } @finch.gen.op(ptr %t76, { ptr, i64, i64 } %t86) - store { ptr, i64, i64 } %t86, ptr %a88 - call void @finch_str_drop(ptr %a88) - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5678, i64 33, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5679, i64 6, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a89 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t106, ptr %a108 - store { ptr, i64, i64 } { ptr @.str.5680, i64 6, i64 0 }, ptr %a109 - call void @finch_str_concat(ptr %a107, ptr %a108, ptr %a109) - store { ptr, i64, i64 } %t106, ptr %a110 - call void @finch_str_drop(ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a107 - %t112 = load ptr, ptr %a1 - %t113 = load %S.ast.Type, ptr %a15 - %t114 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t112, %S.ast.Type %t113) - store { ptr, i64, i64 } %t111, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t111, ptr %a118 - call void @finch_str_drop(ptr %a118) - store { ptr, i64, i64 } %t114, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t120, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.5681, i64 1, i64 0 }, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t120, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - call void @finch.gen.emit(ptr %t90, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load ptr, ptr %a1 - %t128 = load { ptr, i64, i64 }, ptr %a3 - %t129 = call { ptr, i64, i64 } @finch.gen.load(ptr %t127, { ptr, i64, i64 } { ptr @.str.5682, i64 3, i64 0 }, { ptr, i64, i64 } %t128) - store { ptr, i64, i64 } %t129, ptr %a130 - %t131 = load ptr, ptr %a1 - %t132 = load { ptr, i64, i64 }, ptr %a19 - %t133 = load { ptr, i64, i64 }, ptr %a71 - %t134 = load ptr, ptr %a1 - %t135 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5683, i64 23, i64 0 }, ptr %a137 - store { ptr, i64, i64 } %t135, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - %t139 = load { ptr, i64, i64 }, ptr %a136 - store { ptr, i64, i64 } %t139, ptr %a141 - store { ptr, i64, i64 } { ptr @.str.5684, i64 6, i64 0 }, ptr %a142 - call void @finch_str_concat(ptr %a140, ptr %a141, ptr %a142) - store { ptr, i64, i64 } %t139, ptr %a143 - call void @finch_str_drop(ptr %a143) - %t144 = load { ptr, i64, i64 }, ptr %a140 - %t145 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } %t144, ptr %a147 - store { ptr, i64, i64 } %t145, ptr %a148 - call void @finch_str_concat(ptr %a146, ptr %a147, ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a146 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.5685, i64 6, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t155, ptr %a158 - store { ptr, i64, i64 } %t156, ptr %a159 - call void @finch_str_concat(ptr %a157, ptr %a158, ptr %a159) - store { ptr, i64, i64 } %t155, ptr %a160 - call void @finch_str_drop(ptr %a160) - %t161 = load { ptr, i64, i64 }, ptr %a157 - %t162 = call { ptr, i64, i64 } @finch.gen.op(ptr %t134, { ptr, i64, i64 } %t161) - store { ptr, i64, i64 } %t161, ptr %a163 - call void @finch_str_drop(ptr %a163) - call void @finch.gen.store(ptr %t131, { ptr, i64, i64 } %t132, { ptr, i64, i64 } %t133, { ptr, i64, i64 } %t162) - store { ptr, i64, i64 } %t162, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load ptr, ptr %a1 - %t166 = load { ptr, i64, i64 }, ptr %a89 - %t167 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t165, { ptr, i64, i64 } { ptr @.str.5686, i64 3, i64 0 }, { ptr, i64, i64 } %t166, { ptr, i64, i64 } %t167) - %t168 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5687, i64 4, i64 0 }) - %t169 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t168, 1 - call void @finch_str_drop(ptr %a130) - call void @finch_str_drop(ptr %a89) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t169 -endif8868: - %t170 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.5688, i64 3, i64 0 }, ptr %a172 - %t173 = call i32 @finch_str_eq(ptr %a171, ptr %a172) - %t174 = icmp ne i32 %t173, 0 - br i1 %t174, label %then8873, label %endif8875 -then8873: - %t175 = load ptr, ptr %a1 - %t176 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t175, %S.ast.Node %t176, i64 0) - %t177 = load ptr, ptr %a1 - %t178 = load { ptr, i64, i64 }, ptr %a39 - %t179 = call { ptr, i64, i64 } @finch.gen.load(ptr %t177, { ptr, i64, i64 } { ptr @.str.5689, i64 3, i64 0 }, { ptr, i64, i64 } %t178) - store { ptr, i64, i64 } %t179, ptr %a180 - %t181 = load ptr, ptr %a1 - %t182 = load ptr, ptr %a1 - %t183 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5690, i64 12, i64 0 }, ptr %a185 - store { ptr, i64, i64 } %t183, ptr %a186 - call void @finch_str_concat(ptr %a184, ptr %a185, ptr %a186) - %t187 = load { ptr, i64, i64 }, ptr %a184 - store { ptr, i64, i64 } %t187, ptr %a189 - store { ptr, i64, i64 } { ptr @.str.5691, i64 3, i64 0 }, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - %t193 = call { ptr, i64, i64 } @finch.gen.op(ptr %t182, { ptr, i64, i64 } %t192) - store { ptr, i64, i64 } %t192, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t181, { ptr, i64, i64 } %t193, { ptr, i64, i64 } { ptr @.str.5692, i64 23, i64 0 }, %S.ast.Node %t195) - store { ptr, i64, i64 } %t193, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load ptr, ptr %a1 - %t198 = load { ptr, i64, i64 }, ptr %a180 - store { ptr, i64, i64 } { ptr @.str.5693, i64 8, i64 0 }, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - %t202 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t202, ptr %a204 - store { ptr, i64, i64 } { ptr @.str.5694, i64 3, i64 0 }, ptr %a205 - call void @finch_str_concat(ptr %a203, ptr %a204, ptr %a205) - store { ptr, i64, i64 } %t202, ptr %a206 - call void @finch_str_drop(ptr %a206) - %t207 = load { ptr, i64, i64 }, ptr %a203 - %t208 = call { ptr, i64, i64 } @finch.gen.op(ptr %t197, { ptr, i64, i64 } %t207) - store { ptr, i64, i64 } %t207, ptr %a209 - call void @finch_str_drop(ptr %a209) - store { ptr, i64, i64 } %t208, ptr %a210 - %t211 = load ptr, ptr %a1 - %t212 = load { ptr, i64, i64 }, ptr %a3 - %t213 = call { ptr, i64, i64 } @finch.gen.load(ptr %t211, { ptr, i64, i64 } { ptr @.str.5695, i64 3, i64 0 }, { ptr, i64, i64 } %t212) - store { ptr, i64, i64 } %t213, ptr %a214 - %t215 = load ptr, ptr %a1 - %t216 = load { ptr, i64, i64 }, ptr %a19 - %t217 = load ptr, ptr %a1 - %t218 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5696, i64 23, i64 0 }, ptr %a220 - store { ptr, i64, i64 } %t218, ptr %a221 - call void @finch_str_concat(ptr %a219, ptr %a220, ptr %a221) - %t222 = load { ptr, i64, i64 }, ptr %a219 - store { ptr, i64, i64 } %t222, ptr %a224 - store { ptr, i64, i64 } { ptr @.str.5697, i64 6, i64 0 }, ptr %a225 - call void @finch_str_concat(ptr %a223, ptr %a224, ptr %a225) - store { ptr, i64, i64 } %t222, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a223 - %t228 = load { ptr, i64, i64 }, ptr %a214 - store { ptr, i64, i64 } %t227, ptr %a230 - store { ptr, i64, i64 } %t228, ptr %a231 - call void @finch_str_concat(ptr %a229, ptr %a230, ptr %a231) - store { ptr, i64, i64 } %t227, ptr %a232 - call void @finch_str_drop(ptr %a232) - %t233 = load { ptr, i64, i64 }, ptr %a229 - store { ptr, i64, i64 } %t233, ptr %a235 - store { ptr, i64, i64 } { ptr @.str.5698, i64 6, i64 0 }, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - %t239 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t238, ptr %a241 - store { ptr, i64, i64 } %t239, ptr %a242 - call void @finch_str_concat(ptr %a240, ptr %a241, ptr %a242) - store { ptr, i64, i64 } %t238, ptr %a243 - call void @finch_str_drop(ptr %a243) - %t244 = load { ptr, i64, i64 }, ptr %a240 - %t245 = call { ptr, i64, i64 } @finch.gen.op(ptr %t217, { ptr, i64, i64 } %t244) - store { ptr, i64, i64 } %t244, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = call { ptr, i64, i64 } @finch.gen.load(ptr %t215, { ptr, i64, i64 } %t216, { ptr, i64, i64 } %t245) - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_drop(ptr %a248) - store { ptr, i64, i64 } %t247, ptr %a249 - %t250 = load ptr, ptr %a1 - %t251 = load { ptr, i64, i64 }, ptr %a210 - %t252 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t250, { ptr, i64, i64 } { ptr @.str.5699, i64 3, i64 0 }, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t256, 0 - %t258 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t258, ptr %a259 - call void @finch.copy.S_ast_Type(ptr %a260, ptr %a259) - %t261 = load %S.ast.Type, ptr %a260 - %t262 = insertvalue %S.gen.Val %t257, %S.ast.Type %t261, 1 - %t263 = load ptr, ptr %a1 - %t264 = load %S.ast.Type, ptr %a15 - %t265 = call i1 @finch.gen.owning(ptr %t263, %S.ast.Type %t264) - %t266 = insertvalue %S.gen.Val %t262, i1 %t265, 2 - call void @finch_str_drop(ptr %a249) - call void @finch_str_drop(ptr %a214) - call void @finch_str_drop(ptr %a210) - call void @finch_str_drop(ptr %a180) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t266 -endif8875: - %t267 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t267, ptr %a268 - store { ptr, i64, i64 } { ptr @.str.5700, i64 5, i64 0 }, ptr %a269 - %t270 = call i32 @finch_str_eq(ptr %a268, ptr %a269) - %t271 = icmp ne i32 %t270, 0 - br i1 %t271, label %then8876, label %endif8878 -then8876: - %t272 = load ptr, ptr %a1 - %t273 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t272, %S.ast.Node %t273, i64 0) - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a3 - %t276 = load %S.ast.Type, ptr %a4 - call void @finch.gen.dropFrom(ptr %t274, { ptr, i64, i64 } %t275, %S.ast.Type %t276, { ptr, i64, i64 } { ptr @.str.5701, i64 1, i64 0 }) - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a39 - call void @finch.gen.store(ptr %t277, { ptr, i64, i64 } { ptr @.str.5702, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5703, i64 1, i64 0 }, { ptr, i64, i64 } %t278) - %t279 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5704, i64 4, i64 0 }) - %t280 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t279, 1 - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t280 -endif8878: - %t281 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t281, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.5705, i64 4, i64 0 }, ptr %a283 - %t284 = call i32 @finch_str_eq(ptr %a282, ptr %a283) - %t285 = icmp ne i32 %t284, 0 - br label %logic.from8879 -logic.from8879: - br i1 %t285, label %logic.end8881, label %logic.rhs8880 -logic.rhs8880: - %t286 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t286, ptr %a287 - store { ptr, i64, i64 } { ptr @.str.5706, i64 8, i64 0 }, ptr %a288 - %t289 = call i32 @finch_str_eq(ptr %a287, ptr %a288) - %t290 = icmp ne i32 %t289, 0 - br label %logic.rend8882 -logic.rend8882: - br label %logic.end8881 -logic.end8881: - %t291 = phi i1 [ true, %logic.from8879 ], [ %t290, %logic.rend8882 ] - br i1 %t291, label %then8883, label %endif8885 -then8883: - %t292 = load ptr, ptr %a1 - %t293 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t292, %S.ast.Node %t293, i64 1) - %t294 = load ptr, ptr %a1 - %t295 = load ptr, ptr %a1 - %t296 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t297 = load { ptr, i64, i64 }, ptr %t296 - %t298 = extractvalue { ptr, i64, i64 } %t297, 1 - %t299 = icmp uge i64 1, %t298 - br i1 %t299, label %range8886, label %inrange8887 -range8886: - call void @finch_panic_index(ptr @.str.5707, i64 5437, i64 1, i64 %t298) - unreachable -inrange8887: - %t300 = extractvalue { ptr, i64, i64 } %t297, 0 - %t301 = getelementptr inbounds %S.ast.Node, ptr %t300, i64 1 - %t302 = load %S.ast.Node, ptr %t301 - %t303 = load %S.ast.Type, ptr %a15 - %t304 = call %S.gen.Val @finch.gen.exprWant(ptr %t295, %S.ast.Node %t302, %S.ast.Type %t303) - %t305 = load %S.ast.Type, ptr %a15 - %t306 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t307 = load { ptr, i64, i64 }, ptr %t306 - %t308 = extractvalue { ptr, i64, i64 } %t307, 1 - %t309 = icmp uge i64 1, %t308 - br i1 %t309, label %range8888, label %inrange8889 -range8888: - call void @finch_panic_index(ptr @.str.5708, i64 5437, i64 1, i64 %t308) - unreachable -inrange8889: - %t310 = extractvalue { ptr, i64, i64 } %t307, 0 - %t311 = getelementptr inbounds %S.ast.Node, ptr %t310, i64 1 - %t312 = load %S.ast.Node, ptr %t311 - %t313 = call %S.gen.Val @finch.gen.coerce(ptr %t294, %S.gen.Val %t304, %S.ast.Type %t305, %S.ast.Node %t312, { ptr, i64, i64 } { ptr @.str.5709, i64 21, i64 0 }) - store %S.gen.Val %t304, ptr %a314 - call void @finch.drop.S_gen_Val(ptr %a314) - store %S.gen.Val %t313, ptr %a315 - %t316 = load ptr, ptr %a1 - %t317 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t316, { ptr, i64, i64 } { ptr @.str.5710, i64 3, i64 0 }) - store { ptr, i64, i64 } %t317, ptr %a318 - %t319 = load ptr, ptr %a1 - %t320 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t319, { ptr, i64, i64 } { ptr @.str.5711, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5712, i64 2, i64 0 }, { ptr, i64, i64 } %t320) - %t321 = load ptr, ptr %a1 - %t322 = load { ptr, i64, i64 }, ptr %a39 - %t323 = call { ptr, i64, i64 } @finch.gen.load(ptr %t321, { ptr, i64, i64 } { ptr @.str.5713, i64 3, i64 0 }, { ptr, i64, i64 } %t322) - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = load ptr, ptr %a1 - %t326 = load { ptr, i64, i64 }, ptr %a3 - %t327 = call { ptr, i64, i64 } @finch.gen.load(ptr %t325, { ptr, i64, i64 } { ptr @.str.5714, i64 3, i64 0 }, { ptr, i64, i64 } %t326) - store { ptr, i64, i64 } %t327, ptr %a328 - %t329 = load ptr, ptr %a1 - %t330 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t329, { ptr, i64, i64 } { ptr @.str.5715, i64 3, i64 0 }) - store { ptr, i64, i64 } %t330, ptr %a331 - %t332 = load ptr, ptr %a1 - %t333 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t332, { ptr, i64, i64 } { ptr @.str.5716, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.5717, i64 1, i64 0 }, { ptr, i64, i64 } %t333) - %t334 = load ptr, ptr %a1 - %t335 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t334, { ptr, i64, i64 } { ptr @.str.5718, i64 9, i64 0 }) - store { ptr, i64, i64 } %t335, ptr %a336 - %t337 = load ptr, ptr %a1 - %t338 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t337, { ptr, i64, i64 } { ptr @.str.5719, i64 9, i64 0 }) - store { ptr, i64, i64 } %t338, ptr %a339 - %t340 = load ptr, ptr %a1 - %t341 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t340, { ptr, i64, i64 } { ptr @.str.5720, i64 8, i64 0 }) - store { ptr, i64, i64 } %t341, ptr %a342 - %t343 = load ptr, ptr %a1 - %t344 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t343, { ptr, i64, i64 } { ptr @.str.5721, i64 9, i64 0 }) - store { ptr, i64, i64 } %t344, ptr %a345 - %t346 = load ptr, ptr %a1 - %t347 = call { ptr, i64, i64 } @finch.gen.newLabel(ptr %t346, { ptr, i64, i64 } { ptr @.str.5722, i64 8, i64 0 }) - store { ptr, i64, i64 } %t347, ptr %a348 - %t349 = load ptr, ptr %a1 - %t350 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t349, { ptr, i64, i64 } %t350) - %t351 = load ptr, ptr %a1 - %t352 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.label(ptr %t351, { ptr, i64, i64 } %t352) - %t353 = load ptr, ptr %a1 - %t354 = load { ptr, i64, i64 }, ptr %a331 - %t355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t353, { ptr, i64, i64 } { ptr @.str.5723, i64 3, i64 0 }, { ptr, i64, i64 } %t354) - store { ptr, i64, i64 } %t355, ptr %a356 - %t357 = load ptr, ptr %a1 - %t358 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5724, i64 13, i64 0 }, ptr %a360 - store { ptr, i64, i64 } %t358, ptr %a361 - call void @finch_str_concat(ptr %a359, ptr %a360, ptr %a361) - %t362 = load { ptr, i64, i64 }, ptr %a359 - store { ptr, i64, i64 } %t362, ptr %a364 - store { ptr, i64, i64 } { ptr @.str.5725, i64 2, i64 0 }, ptr %a365 - call void @finch_str_concat(ptr %a363, ptr %a364, ptr %a365) - store { ptr, i64, i64 } %t362, ptr %a366 - call void @finch_str_drop(ptr %a366) - %t367 = load { ptr, i64, i64 }, ptr %a363 - %t368 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t367, ptr %a370 - store { ptr, i64, i64 } %t368, ptr %a371 - call void @finch_str_concat(ptr %a369, ptr %a370, ptr %a371) - store { ptr, i64, i64 } %t367, ptr %a372 - call void @finch_str_drop(ptr %a372) - %t373 = load { ptr, i64, i64 }, ptr %a369 - %t374 = call { ptr, i64, i64 } @finch.gen.op(ptr %t357, { ptr, i64, i64 } %t373) - store { ptr, i64, i64 } %t373, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t374, ptr %a376 - %t377 = load ptr, ptr %a1 - %t378 = load { ptr, i64, i64 }, ptr %a376 - %t379 = load { ptr, i64, i64 }, ptr %a339 - %t380 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.condBr(ptr %t377, { ptr, i64, i64 } %t378, { ptr, i64, i64 } %t379, { ptr, i64, i64 } %t380) - %t381 = load ptr, ptr %a1 - %t382 = load { ptr, i64, i64 }, ptr %a339 - call void @finch.gen.label(ptr %t381, { ptr, i64, i64 } %t382) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a19 - %t385 = load ptr, ptr %a1 - %t386 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5726, i64 23, i64 0 }, ptr %a388 - store { ptr, i64, i64 } %t386, ptr %a389 - call void @finch_str_concat(ptr %a387, ptr %a388, ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a387 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.5727, i64 6, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t395, ptr %a398 - store { ptr, i64, i64 } %t396, ptr %a399 - call void @finch_str_concat(ptr %a397, ptr %a398, ptr %a399) - store { ptr, i64, i64 } %t395, ptr %a400 - call void @finch_str_drop(ptr %a400) - %t401 = load { ptr, i64, i64 }, ptr %a397 - store { ptr, i64, i64 } %t401, ptr %a403 - store { ptr, i64, i64 } { ptr @.str.5728, i64 6, i64 0 }, ptr %a404 - call void @finch_str_concat(ptr %a402, ptr %a403, ptr %a404) - store { ptr, i64, i64 } %t401, ptr %a405 - call void @finch_str_drop(ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a402 - %t407 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - %t413 = call { ptr, i64, i64 } @finch.gen.op(ptr %t385, { ptr, i64, i64 } %t412) - store { ptr, i64, i64 } %t412, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = call { ptr, i64, i64 } @finch.gen.load(ptr %t383, { ptr, i64, i64 } %t384, { ptr, i64, i64 } %t413) - store { ptr, i64, i64 } %t413, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t415, 0 - %t418 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t418, ptr %a419 - call void @finch.copy.S_ast_Type(ptr %a420, ptr %a419) - %t421 = load %S.ast.Type, ptr %a420 - %t422 = insertvalue %S.gen.Val %t417, %S.ast.Type %t421, 1 - store %S.gen.Val %t422, ptr %a423 - %t424 = load ptr, ptr %a1 - %t425 = load %S.gen.Val, ptr %a423 - %t426 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 0 - %t427 = load { ptr, i64, i64 }, ptr %t426 - store { ptr, i64, i64 } %t427, ptr %a428 - call void @finch_str_copy(ptr %a429, ptr %a428) - %t430 = load { ptr, i64, i64 }, ptr %a429 - %t431 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t430, 0 - %t432 = getelementptr inbounds %S.gen.Val, ptr %a315, i32 0, i32 1 - %t433 = load %S.ast.Type, ptr %t432 - store %S.ast.Type %t433, ptr %a434 - call void @finch.copy.S_ast_Type(ptr %a435, ptr %a434) - %t436 = load %S.ast.Type, ptr %a435 - %t437 = insertvalue %S.gen.Val %t431, %S.ast.Type %t436, 1 - %t438 = load %S.ast.Node, ptr %a2 - %t439 = call %S.gen.Val @finch.gen.compare(ptr %t424, { ptr, i64, i64 } { ptr @.str.5729, i64 2, i64 0 }, %S.gen.Val %t425, %S.gen.Val %t437, %S.ast.Node %t438) - store %S.gen.Val %t437, ptr %a440 - call void @finch.drop.S_gen_Val(ptr %a440) - %t441 = extractvalue %S.gen.Val %t439, 0 - store { ptr, i64, i64 } %t441, ptr %a442 - call void @finch_str_copy(ptr %a443, ptr %a442) - %t444 = load { ptr, i64, i64 }, ptr %a443 - store %S.gen.Val %t439, ptr %a445 - call void @finch.drop.S_gen_Val(ptr %a445) - store { ptr, i64, i64 } %t444, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load { ptr, i64, i64 }, ptr %a446 - %t449 = load { ptr, i64, i64 }, ptr %a342 - %t450 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.condBr(ptr %t447, { ptr, i64, i64 } %t448, { ptr, i64, i64 } %t449, { ptr, i64, i64 } %t450) - %t451 = load ptr, ptr %a1 - %t452 = load { ptr, i64, i64 }, ptr %a342 - call void @finch.gen.label(ptr %t451, { ptr, i64, i64 } %t452) - %t453 = load ptr, ptr %a1 - %t454 = load { ptr, i64, i64 }, ptr %a356 - %t455 = load { ptr, i64, i64 }, ptr %a318 - call void @finch.gen.store(ptr %t453, { ptr, i64, i64 } { ptr @.str.5730, i64 3, i64 0 }, { ptr, i64, i64 } %t454, { ptr, i64, i64 } %t455) - %t456 = load ptr, ptr %a1 - %t457 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.br(ptr %t456, { ptr, i64, i64 } %t457) - %t458 = load ptr, ptr %a1 - %t459 = load { ptr, i64, i64 }, ptr %a345 - call void @finch.gen.label(ptr %t458, { ptr, i64, i64 } %t459) - %t460 = load ptr, ptr %a1 - %t461 = load ptr, ptr %a1 - %t462 = load { ptr, i64, i64 }, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.5732, i64 8, i64 0 }, ptr %a464 - store { ptr, i64, i64 } %t462, ptr %a465 - call void @finch_str_concat(ptr %a463, ptr %a464, ptr %a465) - %t466 = load { ptr, i64, i64 }, ptr %a463 - store { ptr, i64, i64 } %t466, ptr %a468 - store { ptr, i64, i64 } { ptr @.str.5733, i64 3, i64 0 }, ptr %a469 - call void @finch_str_concat(ptr %a467, ptr %a468, ptr %a469) - store { ptr, i64, i64 } %t466, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = load { ptr, i64, i64 }, ptr %a467 - %t472 = call { ptr, i64, i64 } @finch.gen.op(ptr %t461, { ptr, i64, i64 } %t471) - store { ptr, i64, i64 } %t471, ptr %a473 - call void @finch_str_drop(ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a331 - call void @finch.gen.store(ptr %t460, { ptr, i64, i64 } { ptr @.str.5731, i64 3, i64 0 }, { ptr, i64, i64 } %t472, { ptr, i64, i64 } %t474) - store { ptr, i64, i64 } %t472, ptr %a475 - call void @finch_str_drop(ptr %a475) - %t476 = load ptr, ptr %a1 - %t477 = load { ptr, i64, i64 }, ptr %a336 - call void @finch.gen.br(ptr %t476, { ptr, i64, i64 } %t477) - %t478 = load ptr, ptr %a1 - %t479 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.gen.label(ptr %t478, { ptr, i64, i64 } %t479) - %t480 = load ptr, ptr %a1 - %t481 = load %S.gen.Val, ptr %a315 - call void @finch.gen.release(ptr %t480, %S.gen.Val %t481) - %t482 = load ptr, ptr %a1 - %t483 = load { ptr, i64, i64 }, ptr %a318 - %t484 = call { ptr, i64, i64 } @finch.gen.load(ptr %t482, { ptr, i64, i64 } { ptr @.str.5734, i64 3, i64 0 }, { ptr, i64, i64 } %t483) - store { ptr, i64, i64 } %t484, ptr %a485 - %t486 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t486, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5735, i64 4, i64 0 }, ptr %a488 - %t489 = call i32 @finch_str_eq(ptr %a487, ptr %a488) - %t490 = icmp ne i32 %t489, 0 - br i1 %t490, label %then8890, label %endif8892 -then8890: - %t491 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t491, ptr %a492 - call void @finch_str_copy(ptr %a493, ptr %a492) - %t494 = load { ptr, i64, i64 }, ptr %a493 - %t495 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t494, 0 - %t496 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5736, i64 3, i64 0 }) - %t497 = insertvalue %S.gen.Val %t495, %S.ast.Type %t496, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t497 -endif8892: - %t498 = load ptr, ptr %a1 - %t499 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.5737, i64 13, i64 0 }, ptr %a501 - store { ptr, i64, i64 } %t499, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - %t503 = load { ptr, i64, i64 }, ptr %a500 - store { ptr, i64, i64 } %t503, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.5738, i64 3, i64 0 }, ptr %a506 - call void @finch_str_concat(ptr %a504, ptr %a505, ptr %a506) - store { ptr, i64, i64 } %t503, ptr %a507 - call void @finch_str_drop(ptr %a507) - %t508 = load { ptr, i64, i64 }, ptr %a504 - %t509 = call { ptr, i64, i64 } @finch.gen.op(ptr %t498, { ptr, i64, i64 } %t508) - store { ptr, i64, i64 } %t508, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t509, 0 - %t512 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5739, i64 4, i64 0 }) - %t513 = insertvalue %S.gen.Val %t511, %S.ast.Type %t512, 1 - call void @finch_str_drop(ptr %a485) - call void @finch_str_drop(ptr %a446) - call void @finch.drop.S_gen_Val(ptr %a423) - call void @finch_str_drop(ptr %a376) - call void @finch_str_drop(ptr %a356) - call void @finch_str_drop(ptr %a348) - call void @finch_str_drop(ptr %a345) - call void @finch_str_drop(ptr %a342) - call void @finch_str_drop(ptr %a339) - call void @finch_str_drop(ptr %a336) - call void @finch_str_drop(ptr %a331) - call void @finch_str_drop(ptr %a328) - call void @finch_str_drop(ptr %a324) - call void @finch_str_drop(ptr %a318) - call void @finch.drop.S_gen_Val(ptr %a315) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t513 -endif8885: - %t514 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t514, ptr %a515 - store { ptr, i64, i64 } { ptr @.str.5740, i64 4, i64 0 }, ptr %a516 - %t517 = call i32 @finch_str_eq(ptr %a515, ptr %a516) - %t518 = icmp ne i32 %t517, 0 - br i1 %t518, label %then8893, label %endif8895 -then8893: - %t519 = load ptr, ptr %a1 - %t520 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t519, %S.ast.Node %t520, i64 1) - %t521 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t522 = load { ptr, i64, i64 }, ptr %t521 - store { ptr, i64, i64 } %t522, ptr %a523 - store { ptr, i64, i64 } { ptr @.str.5741, i64 3, i64 0 }, ptr %a524 - %t525 = call i32 @finch_str_eq(ptr %a523, ptr %a524) - %t526 = icmp eq i32 %t525, 0 - br i1 %t526, label %then8896, label %endif8898 -then8896: - %t527 = load ptr, ptr %a1 - %t528 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t527, %S.ast.Node %t528, { ptr, i64, i64 } { ptr @.str.5742, i64 31, i64 0 }) - br label %endif8898 -endif8898: - %t529 = load ptr, ptr %a1 - %t530 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t531 = load { ptr, i64, i64 }, ptr %t530 - %t532 = extractvalue { ptr, i64, i64 } %t531, 1 - %t533 = icmp uge i64 1, %t532 - br i1 %t533, label %range8899, label %inrange8900 -range8899: - call void @finch_panic_index(ptr @.str.5743, i64 5477, i64 1, i64 %t532) - unreachable -inrange8900: - %t534 = extractvalue { ptr, i64, i64 } %t531, 0 - %t535 = getelementptr inbounds %S.ast.Node, ptr %t534, i64 1 - %t536 = load %S.ast.Node, ptr %t535 - %t537 = call %S.gen.Val @finch.gen.strArg(ptr %t529, %S.ast.Node %t536, { ptr, i64, i64 } { ptr @.str.5744, i64 13, i64 0 }) - store %S.gen.Val %t537, ptr %a538 - %t539 = load ptr, ptr %a1 - %t540 = load %S.gen.Val, ptr %a538 - %t541 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t539, %S.gen.Val %t540) - store { ptr, i64, i64 } %t541, ptr %a542 - %t543 = load ptr, ptr %a1 - %t544 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } { ptr @.str.5745, i64 30, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } %t551, ptr %a553 - store { ptr, i64, i64 } { ptr @.str.5746, i64 6, i64 0 }, ptr %a554 - call void @finch_str_concat(ptr %a552, ptr %a553, ptr %a554) - store { ptr, i64, i64 } %t551, ptr %a555 - call void @finch_str_drop(ptr %a555) - %t556 = load { ptr, i64, i64 }, ptr %a552 - %t557 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t556, ptr %a559 - store { ptr, i64, i64 } %t557, ptr %a560 - call void @finch_str_concat(ptr %a558, ptr %a559, ptr %a560) - store { ptr, i64, i64 } %t556, ptr %a561 - call void @finch_str_drop(ptr %a561) - %t562 = load { ptr, i64, i64 }, ptr %a558 - store { ptr, i64, i64 } %t562, ptr %a564 - store { ptr, i64, i64 } { ptr @.str.5747, i64 6, i64 0 }, ptr %a565 - call void @finch_str_concat(ptr %a563, ptr %a564, ptr %a565) - store { ptr, i64, i64 } %t562, ptr %a566 - call void @finch_str_drop(ptr %a566) - %t567 = load { ptr, i64, i64 }, ptr %a563 - %t568 = load { ptr, i64, i64 }, ptr %a542 - store { ptr, i64, i64 } %t567, ptr %a570 - store { ptr, i64, i64 } %t568, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t567, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - store { ptr, i64, i64 } %t573, ptr %a575 - store { ptr, i64, i64 } { ptr @.str.5748, i64 1, i64 0 }, ptr %a576 - call void @finch_str_concat(ptr %a574, ptr %a575, ptr %a576) - store { ptr, i64, i64 } %t573, ptr %a577 - call void @finch_str_drop(ptr %a577) - %t578 = load { ptr, i64, i64 }, ptr %a574 - call void @finch.gen.emit(ptr %t546, { ptr, i64, i64 } %t578) - store { ptr, i64, i64 } %t578, ptr %a579 - call void @finch_str_drop(ptr %a579) - %t580 = load ptr, ptr %a1 - %t581 = load %S.gen.Val, ptr %a538 - call void @finch.gen.release(ptr %t580, %S.gen.Val %t581) - %t582 = load ptr, ptr %a1 - %t583 = load { ptr, i64, i64 }, ptr %a545 - %t584 = call { ptr, i64, i64 } @finch.gen.load(ptr %t582, { ptr, i64, i64 } { ptr @.str.5749, i64 17, i64 0 }, { ptr, i64, i64 } %t583) - %t585 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t584, 0 - %t586 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5750, i64 3, i64 0 }) - %t587 = insertvalue %S.gen.Val %t585, %S.ast.Type %t586, 1 - %t588 = insertvalue %S.gen.Val %t587, i1 true, 2 - call void @finch_str_drop(ptr %a545) - call void @finch_str_drop(ptr %a542) - call void @finch.drop.S_gen_Val(ptr %a538) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t588 -endif8895: - %t589 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t589, ptr %a590 - store { ptr, i64, i64 } { ptr @.str.5751, 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 %then8901, label %endif8903 -then8901: - %t594 = load ptr, ptr %a1 - %t595 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t594, %S.ast.Node %t595, i64 2) - %t596 = load ptr, ptr %a1 - %t597 = load ptr, ptr %a1 - %t598 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t599 = load { ptr, i64, i64 }, ptr %t598 - %t600 = extractvalue { ptr, i64, i64 } %t599, 1 - %t601 = icmp uge i64 1, %t600 - br i1 %t601, label %range8904, label %inrange8905 -range8904: - call void @finch_panic_index(ptr @.str.5752, i64 5486, i64 1, i64 %t600) - unreachable -inrange8905: - %t602 = extractvalue { ptr, i64, i64 } %t599, 0 - %t603 = getelementptr inbounds %S.ast.Node, ptr %t602, i64 1 - %t604 = load %S.ast.Node, ptr %t603 - %t605 = call %S.gen.Val @finch.gen.expr(ptr %t597, %S.ast.Node %t604) - %t606 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5753, i64 3, i64 0 }) - %t607 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t608 = load { ptr, i64, i64 }, ptr %t607 - %t609 = extractvalue { ptr, i64, i64 } %t608, 1 - %t610 = icmp uge i64 1, %t609 - br i1 %t610, label %range8906, label %inrange8907 -range8906: - call void @finch_panic_index(ptr @.str.5754, i64 5486, i64 1, i64 %t609) - unreachable -inrange8907: - %t611 = extractvalue { ptr, i64, i64 } %t608, 0 - %t612 = getelementptr inbounds %S.ast.Node, ptr %t611, i64 1 - %t613 = load %S.ast.Node, ptr %t612 - %t614 = call %S.gen.Val @finch.gen.coerce(ptr %t596, %S.gen.Val %t605, %S.ast.Type %t606, %S.ast.Node %t613, { ptr, i64, i64 } { ptr @.str.5755, i64 12, i64 0 }) - store %S.gen.Val %t605, ptr %a615 - call void @finch.drop.S_gen_Val(ptr %a615) - store %S.ast.Type %t606, ptr %a616 - call void @finch.drop.S_ast_Type(ptr %a616) - %t617 = extractvalue %S.gen.Val %t614, 0 - store { ptr, i64, i64 } %t617, ptr %a618 - call void @finch_str_copy(ptr %a619, ptr %a618) - %t620 = load { ptr, i64, i64 }, ptr %a619 - store %S.gen.Val %t614, ptr %a621 - call void @finch.drop.S_gen_Val(ptr %a621) - store { ptr, i64, i64 } %t620, ptr %a622 - %t623 = load ptr, ptr %a1 - %t624 = load ptr, ptr %a1 - %t625 = load ptr, ptr %a1 - %t626 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t627 = load { ptr, i64, i64 }, ptr %t626 - %t628 = extractvalue { ptr, i64, i64 } %t627, 1 - %t629 = icmp uge i64 2, %t628 - br i1 %t629, label %range8908, label %inrange8909 -range8908: - call void @finch_panic_index(ptr @.str.5756, i64 5487, i64 2, i64 %t628) - unreachable -inrange8909: - %t630 = extractvalue { ptr, i64, i64 } %t627, 0 - %t631 = getelementptr inbounds %S.ast.Node, ptr %t630, i64 2 - %t632 = load %S.ast.Node, ptr %t631 - %t633 = load %S.ast.Type, ptr %a15 - %t634 = call %S.gen.Val @finch.gen.exprWant(ptr %t625, %S.ast.Node %t632, %S.ast.Type %t633) - %t635 = load %S.ast.Type, ptr %a15 - %t636 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t637 = load { ptr, i64, i64 }, ptr %t636 - %t638 = extractvalue { ptr, i64, i64 } %t637, 1 - %t639 = icmp uge i64 2, %t638 - br i1 %t639, label %range8910, label %inrange8911 -range8910: - call void @finch_panic_index(ptr @.str.5757, i64 5487, i64 2, i64 %t638) - unreachable -inrange8911: - %t640 = extractvalue { ptr, i64, i64 } %t637, 0 - %t641 = getelementptr inbounds %S.ast.Node, ptr %t640, i64 2 - %t642 = load %S.ast.Node, ptr %t641 - %t643 = call %S.gen.Val @finch.gen.coerce(ptr %t624, %S.gen.Val %t634, %S.ast.Type %t635, %S.ast.Node %t642, { ptr, i64, i64 } { ptr @.str.5758, i64 11, i64 0 }) - store %S.gen.Val %t634, ptr %a644 - call void @finch.drop.S_gen_Val(ptr %a644) - %t645 = call { ptr, i64, i64 } @finch.gen.own(ptr %t623, %S.gen.Val %t643) - store %S.gen.Val %t643, ptr %a646 - call void @finch.drop.S_gen_Val(ptr %a646) - store { ptr, i64, i64 } %t645, ptr %a647 - %t648 = load ptr, ptr %a1 - %t649 = load ptr, ptr %a1 - %t650 = icmp eq ptr %t649, null - br i1 %t650, label %panic8912, label %ok8913 -panic8912: - call void @finch_panic(ptr @.str.5759, i64 5488, ptr @.str.5760) - unreachable -ok8913: - %t651 = getelementptr inbounds %S.gen.Gen, ptr %t649, i32 0, i32 1 - %t652 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 13 - %t653 = load i64, ptr %t652 - %t654 = load { ptr, i64, i64 }, ptr %t651 - %t655 = extractvalue { ptr, i64, i64 } %t654, 1 - %t656 = icmp uge i64 %t653, %t655 - br i1 %t656, label %range8914, label %inrange8915 -range8914: - call void @finch_panic_index(ptr @.str.5761, i64 5488, i64 %t653, i64 %t655) - unreachable -inrange8915: - %t657 = extractvalue { ptr, i64, i64 } %t654, 0 - %t658 = getelementptr inbounds { ptr, i64, i64 }, ptr %t657, i64 %t653 - %t659 = load { ptr, i64, i64 }, ptr %t658 - %t660 = call { ptr, i64, i64 } @finch.gen.strGlobal(ptr %t648, { ptr, i64, i64 } %t659) - store { ptr, i64, i64 } %t660, ptr %a661 - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5762, i64 36, i64 0 }, ptr %a665 - store { ptr, i64, i64 } %t663, ptr %a666 - call void @finch_str_concat(ptr %a664, ptr %a665, ptr %a666) - %t667 = load { ptr, i64, i64 }, ptr %a664 - store { ptr, i64, i64 } %t667, ptr %a669 - store { ptr, i64, i64 } { ptr @.str.5763, i64 6, i64 0 }, ptr %a670 - call void @finch_str_concat(ptr %a668, ptr %a669, ptr %a670) - store { ptr, i64, i64 } %t667, ptr %a671 - call void @finch_str_drop(ptr %a671) - %t672 = load { ptr, i64, i64 }, ptr %a668 - %t673 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t672, ptr %a675 - store { ptr, i64, i64 } %t673, ptr %a676 - call void @finch_str_concat(ptr %a674, ptr %a675, ptr %a676) - store { ptr, i64, i64 } %t672, ptr %a677 - call void @finch_str_drop(ptr %a677) - %t678 = load { ptr, i64, i64 }, ptr %a674 - store { ptr, i64, i64 } %t678, ptr %a680 - store { ptr, i64, i64 } { ptr @.str.5764, i64 6, i64 0 }, ptr %a681 - call void @finch_str_concat(ptr %a679, ptr %a680, ptr %a681) - store { ptr, i64, i64 } %t678, ptr %a682 - call void @finch_str_drop(ptr %a682) - %t683 = load { ptr, i64, i64 }, ptr %a679 - %t684 = load ptr, ptr %a1 - %t685 = load %S.ast.Type, ptr %a15 - %t686 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t684, %S.ast.Type %t685) - store { ptr, i64, i64 } %t683, ptr %a688 - store { ptr, i64, i64 } %t686, ptr %a689 - call void @finch_str_concat(ptr %a687, ptr %a688, ptr %a689) - store { ptr, i64, i64 } %t683, ptr %a690 - call void @finch_str_drop(ptr %a690) - store { ptr, i64, i64 } %t686, ptr %a691 - call void @finch_str_drop(ptr %a691) - %t692 = load { ptr, i64, i64 }, ptr %a687 - store { ptr, i64, i64 } %t692, ptr %a694 - store { ptr, i64, i64 } { ptr @.str.5765, i64 6, i64 0 }, ptr %a695 - call void @finch_str_concat(ptr %a693, ptr %a694, ptr %a695) - store { ptr, i64, i64 } %t692, ptr %a696 - call void @finch_str_drop(ptr %a696) - %t697 = load { ptr, i64, i64 }, ptr %a693 - %t698 = load { ptr, i64, i64 }, ptr %a661 - store { ptr, i64, i64 } %t697, ptr %a700 - store { ptr, i64, i64 } %t698, ptr %a701 - call void @finch_str_concat(ptr %a699, ptr %a700, ptr %a701) - store { ptr, i64, i64 } %t697, ptr %a702 - call void @finch_str_drop(ptr %a702) - %t703 = load { ptr, i64, i64 }, ptr %a699 - store { ptr, i64, i64 } %t703, ptr %a705 - store { ptr, i64, i64 } { ptr @.str.5766, i64 6, i64 0 }, ptr %a706 - call void @finch_str_concat(ptr %a704, ptr %a705, ptr %a706) - store { ptr, i64, i64 } %t703, ptr %a707 - call void @finch_str_drop(ptr %a707) - %t708 = load { ptr, i64, i64 }, ptr %a704 - %t709 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t710 = load i64, ptr %t709 - call void @finch_str_from_int(ptr %a711, i64 %t710) - %t712 = load { ptr, i64, i64 }, ptr %a711 - store { ptr, i64, i64 } %t708, ptr %a714 - store { ptr, i64, i64 } %t712, ptr %a715 - call void @finch_str_concat(ptr %a713, ptr %a714, ptr %a715) - store { ptr, i64, i64 } %t708, ptr %a716 - call void @finch_str_drop(ptr %a716) - store { ptr, i64, i64 } %t712, ptr %a717 - call void @finch_str_drop(ptr %a717) - %t718 = load { ptr, i64, i64 }, ptr %a713 - store { ptr, i64, i64 } %t718, ptr %a720 - store { ptr, i64, i64 } { ptr @.str.5767, i64 1, i64 0 }, ptr %a721 - call void @finch_str_concat(ptr %a719, ptr %a720, ptr %a721) - store { ptr, i64, i64 } %t718, ptr %a722 - call void @finch_str_drop(ptr %a722) - %t723 = load { ptr, i64, i64 }, ptr %a719 - call void @finch.gen.emit(ptr %t662, { ptr, i64, i64 } %t723) - store { ptr, i64, i64 } %t723, ptr %a724 - call void @finch_str_drop(ptr %a724) - %t725 = load ptr, ptr %a1 - %t726 = load { ptr, i64, i64 }, ptr %a3 - %t727 = call { ptr, i64, i64 } @finch.gen.load(ptr %t725, { ptr, i64, i64 } { ptr @.str.5768, i64 3, i64 0 }, { ptr, i64, i64 } %t726) - store { ptr, i64, i64 } %t727, ptr %a728 - %t729 = load ptr, ptr %a1 - %t730 = load { ptr, i64, i64 }, ptr %a19 - %t731 = load { ptr, i64, i64 }, ptr %a647 - %t732 = load ptr, ptr %a1 - %t733 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5769, i64 23, i64 0 }, ptr %a735 - store { ptr, i64, i64 } %t733, ptr %a736 - call void @finch_str_concat(ptr %a734, ptr %a735, ptr %a736) - %t737 = load { ptr, i64, i64 }, ptr %a734 - store { ptr, i64, i64 } %t737, ptr %a739 - store { ptr, i64, i64 } { ptr @.str.5770, i64 6, i64 0 }, ptr %a740 - call void @finch_str_concat(ptr %a738, ptr %a739, ptr %a740) - store { ptr, i64, i64 } %t737, ptr %a741 - call void @finch_str_drop(ptr %a741) - %t742 = load { ptr, i64, i64 }, ptr %a738 - %t743 = load { ptr, i64, i64 }, ptr %a728 - store { ptr, i64, i64 } %t742, ptr %a745 - store { ptr, i64, i64 } %t743, ptr %a746 - call void @finch_str_concat(ptr %a744, ptr %a745, ptr %a746) - store { ptr, i64, i64 } %t742, ptr %a747 - call void @finch_str_drop(ptr %a747) - %t748 = load { ptr, i64, i64 }, ptr %a744 - store { ptr, i64, i64 } %t748, ptr %a750 - store { ptr, i64, i64 } { ptr @.str.5771, i64 6, i64 0 }, ptr %a751 - call void @finch_str_concat(ptr %a749, ptr %a750, ptr %a751) - store { ptr, i64, i64 } %t748, ptr %a752 - call void @finch_str_drop(ptr %a752) - %t753 = load { ptr, i64, i64 }, ptr %a749 - %t754 = load { ptr, i64, i64 }, ptr %a622 - store { ptr, i64, i64 } %t753, ptr %a756 - store { ptr, i64, i64 } %t754, ptr %a757 - call void @finch_str_concat(ptr %a755, ptr %a756, ptr %a757) - store { ptr, i64, i64 } %t753, ptr %a758 - call void @finch_str_drop(ptr %a758) - %t759 = load { ptr, i64, i64 }, ptr %a755 - %t760 = call { ptr, i64, i64 } @finch.gen.op(ptr %t732, { ptr, i64, i64 } %t759) - store { ptr, i64, i64 } %t759, ptr %a761 - call void @finch_str_drop(ptr %a761) - call void @finch.gen.store(ptr %t729, { ptr, i64, i64 } %t730, { ptr, i64, i64 } %t731, { ptr, i64, i64 } %t760) - store { ptr, i64, i64 } %t760, ptr %a762 - call void @finch_str_drop(ptr %a762) - %t763 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5772, i64 4, i64 0 }) - %t764 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t763, 1 - call void @finch_str_drop(ptr %a728) - call void @finch_str_drop(ptr %a661) - call void @finch_str_drop(ptr %a647) - call void @finch_str_drop(ptr %a622) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t764 -endif8903: - %t765 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t765, ptr %a766 - store { ptr, i64, i64 } { ptr @.str.5773, i64 6, i64 0 }, ptr %a767 - %t768 = call i32 @finch_str_eq(ptr %a766, ptr %a767) - %t769 = icmp ne i32 %t768, 0 - br i1 %t769, label %then8916, label %endif8918 -then8916: - %t770 = load ptr, ptr %a1 - %t771 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t770, %S.ast.Node %t771, i64 1) - %t772 = load ptr, ptr %a1 - %t773 = load ptr, ptr %a1 - %t774 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t775 = load { ptr, i64, i64 }, ptr %t774 - %t776 = extractvalue { ptr, i64, i64 } %t775, 1 - %t777 = icmp uge i64 1, %t776 - br i1 %t777, label %range8919, label %inrange8920 -range8919: - call void @finch_panic_index(ptr @.str.5774, i64 5496, i64 1, i64 %t776) - unreachable -inrange8920: - %t778 = extractvalue { ptr, i64, i64 } %t775, 0 - %t779 = getelementptr inbounds %S.ast.Node, ptr %t778, i64 1 - %t780 = load %S.ast.Node, ptr %t779 - %t781 = call %S.gen.Val @finch.gen.expr(ptr %t773, %S.ast.Node %t780) - %t782 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5775, i64 3, i64 0 }) - %t783 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t784 = load { ptr, i64, i64 }, ptr %t783 - %t785 = extractvalue { ptr, i64, i64 } %t784, 1 - %t786 = icmp uge i64 1, %t785 - br i1 %t786, label %range8921, label %inrange8922 -range8921: - call void @finch_panic_index(ptr @.str.5776, i64 5496, i64 1, i64 %t785) - unreachable -inrange8922: - %t787 = extractvalue { ptr, i64, i64 } %t784, 0 - %t788 = getelementptr inbounds %S.ast.Node, ptr %t787, i64 1 - %t789 = load %S.ast.Node, ptr %t788 - %t790 = call %S.gen.Val @finch.gen.coerce(ptr %t772, %S.gen.Val %t781, %S.ast.Type %t782, %S.ast.Node %t789, { ptr, i64, i64 } { ptr @.str.5777, i64 12, i64 0 }) - store %S.gen.Val %t781, ptr %a791 - call void @finch.drop.S_gen_Val(ptr %a791) - store %S.ast.Type %t782, ptr %a792 - call void @finch.drop.S_ast_Type(ptr %a792) - %t793 = extractvalue %S.gen.Val %t790, 0 - store { ptr, i64, i64 } %t793, ptr %a794 - call void @finch_str_copy(ptr %a795, ptr %a794) - %t796 = load { ptr, i64, i64 }, ptr %a795 - store %S.gen.Val %t790, ptr %a797 - call void @finch.drop.S_gen_Val(ptr %a797) - store { ptr, i64, i64 } %t796, ptr %a798 - %t799 = load ptr, ptr %a1 - %t800 = load { ptr, i64, i64 }, ptr %a798 - %t801 = load ptr, ptr %a1 - %t802 = load { ptr, i64, i64 }, ptr %a39 - %t803 = call { ptr, i64, i64 } @finch.gen.load(ptr %t801, { ptr, i64, i64 } { ptr @.str.5778, i64 3, i64 0 }, { ptr, i64, i64 } %t802) - %t804 = load %S.ast.Node, ptr %a2 - call void @finch.gen.boundsCheck(ptr %t799, { ptr, i64, i64 } %t800, { ptr, i64, i64 } %t803, %S.ast.Node %t804) - store { ptr, i64, i64 } %t803, ptr %a805 - call void @finch_str_drop(ptr %a805) - %t806 = load ptr, ptr %a1 - %t807 = load { ptr, i64, i64 }, ptr %a3 - %t808 = call { ptr, i64, i64 } @finch.gen.load(ptr %t806, { ptr, i64, i64 } { ptr @.str.5779, i64 3, i64 0 }, { ptr, i64, i64 } %t807) - store { ptr, i64, i64 } %t808, ptr %a809 - %t810 = load ptr, ptr %a1 - %t811 = load { ptr, i64, i64 }, ptr %a19 - %t812 = load ptr, ptr %a1 - %t813 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5780, i64 23, i64 0 }, ptr %a815 - store { ptr, i64, i64 } %t813, ptr %a816 - call void @finch_str_concat(ptr %a814, ptr %a815, ptr %a816) - %t817 = load { ptr, i64, i64 }, ptr %a814 - store { ptr, i64, i64 } %t817, ptr %a819 - store { ptr, i64, i64 } { ptr @.str.5781, i64 6, i64 0 }, ptr %a820 - call void @finch_str_concat(ptr %a818, ptr %a819, ptr %a820) - store { ptr, i64, i64 } %t817, ptr %a821 - call void @finch_str_drop(ptr %a821) - %t822 = load { ptr, i64, i64 }, ptr %a818 - %t823 = load { ptr, i64, i64 }, ptr %a809 - store { ptr, i64, i64 } %t822, ptr %a825 - store { ptr, i64, i64 } %t823, ptr %a826 - call void @finch_str_concat(ptr %a824, ptr %a825, ptr %a826) - store { ptr, i64, i64 } %t822, ptr %a827 - call void @finch_str_drop(ptr %a827) - %t828 = load { ptr, i64, i64 }, ptr %a824 - store { ptr, i64, i64 } %t828, ptr %a830 - store { ptr, i64, i64 } { ptr @.str.5782, i64 6, i64 0 }, ptr %a831 - call void @finch_str_concat(ptr %a829, ptr %a830, ptr %a831) - store { ptr, i64, i64 } %t828, ptr %a832 - call void @finch_str_drop(ptr %a832) - %t833 = load { ptr, i64, i64 }, ptr %a829 - %t834 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t833, ptr %a836 - store { ptr, i64, i64 } %t834, ptr %a837 - call void @finch_str_concat(ptr %a835, ptr %a836, ptr %a837) - store { ptr, i64, i64 } %t833, ptr %a838 - call void @finch_str_drop(ptr %a838) - %t839 = load { ptr, i64, i64 }, ptr %a835 - %t840 = call { ptr, i64, i64 } @finch.gen.op(ptr %t812, { ptr, i64, i64 } %t839) - store { ptr, i64, i64 } %t839, ptr %a841 - call void @finch_str_drop(ptr %a841) - %t842 = call { ptr, i64, i64 } @finch.gen.load(ptr %t810, { ptr, i64, i64 } %t811, { ptr, i64, i64 } %t840) - store { ptr, i64, i64 } %t840, ptr %a843 - call void @finch_str_drop(ptr %a843) - store { ptr, i64, i64 } %t842, ptr %a844 - %t845 = load ptr, ptr %a1 - %t846 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5783, i64 36, i64 0 }, ptr %a848 - store { ptr, i64, i64 } %t846, ptr %a849 - call void @finch_str_concat(ptr %a847, ptr %a848, ptr %a849) - %t850 = load { ptr, i64, i64 }, ptr %a847 - store { ptr, i64, i64 } %t850, ptr %a852 - store { ptr, i64, i64 } { ptr @.str.5784, i64 6, i64 0 }, ptr %a853 - call void @finch_str_concat(ptr %a851, ptr %a852, ptr %a853) - store { ptr, i64, i64 } %t850, ptr %a854 - call void @finch_str_drop(ptr %a854) - %t855 = load { ptr, i64, i64 }, ptr %a851 - %t856 = load { ptr, i64, i64 }, ptr %a798 - store { ptr, i64, i64 } %t855, ptr %a858 - store { ptr, i64, i64 } %t856, ptr %a859 - call void @finch_str_concat(ptr %a857, ptr %a858, ptr %a859) - store { ptr, i64, i64 } %t855, ptr %a860 - call void @finch_str_drop(ptr %a860) - %t861 = load { ptr, i64, i64 }, ptr %a857 - store { ptr, i64, i64 } %t861, ptr %a863 - store { ptr, i64, i64 } { ptr @.str.5785, i64 6, i64 0 }, ptr %a864 - call void @finch_str_concat(ptr %a862, ptr %a863, ptr %a864) - store { ptr, i64, i64 } %t861, ptr %a865 - call void @finch_str_drop(ptr %a865) - %t866 = load { ptr, i64, i64 }, ptr %a862 - %t867 = load ptr, ptr %a1 - %t868 = load %S.ast.Type, ptr %a15 - %t869 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t867, %S.ast.Type %t868) - store { ptr, i64, i64 } %t866, ptr %a871 - store { ptr, i64, i64 } %t869, ptr %a872 - call void @finch_str_concat(ptr %a870, ptr %a871, ptr %a872) - store { ptr, i64, i64 } %t866, ptr %a873 - call void @finch_str_drop(ptr %a873) - store { ptr, i64, i64 } %t869, ptr %a874 - call void @finch_str_drop(ptr %a874) - %t875 = load { ptr, i64, i64 }, ptr %a870 - store { ptr, i64, i64 } %t875, ptr %a877 - store { ptr, i64, i64 } { ptr @.str.5786, i64 1, i64 0 }, ptr %a878 - call void @finch_str_concat(ptr %a876, ptr %a877, ptr %a878) - store { ptr, i64, i64 } %t875, ptr %a879 - call void @finch_str_drop(ptr %a879) - %t880 = load { ptr, i64, i64 }, ptr %a876 - call void @finch.gen.emit(ptr %t845, { ptr, i64, i64 } %t880) - store { ptr, i64, i64 } %t880, ptr %a881 - call void @finch_str_drop(ptr %a881) - %t882 = load { ptr, i64, i64 }, ptr %a844 - store { ptr, i64, i64 } %t882, ptr %a883 - call void @finch_str_copy(ptr %a884, ptr %a883) - %t885 = load { ptr, i64, i64 }, ptr %a884 - %t886 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t885, 0 - %t887 = load %S.ast.Type, ptr %a15 - store %S.ast.Type %t887, ptr %a888 - call void @finch.copy.S_ast_Type(ptr %a889, ptr %a888) - %t890 = load %S.ast.Type, ptr %a889 - %t891 = insertvalue %S.gen.Val %t886, %S.ast.Type %t890, 1 - %t892 = load ptr, ptr %a1 - %t893 = load %S.ast.Type, ptr %a15 - %t894 = call i1 @finch.gen.owning(ptr %t892, %S.ast.Type %t893) - %t895 = insertvalue %S.gen.Val %t891, i1 %t894, 2 - call void @finch_str_drop(ptr %a844) - call void @finch_str_drop(ptr %a809) - call void @finch_str_drop(ptr %a798) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t895 -endif8918: - %t896 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t896, ptr %a897 - store { ptr, i64, i64 } { ptr @.str.5787, i64 6, i64 0 }, ptr %a898 - %t899 = call i32 @finch_str_eq(ptr %a897, ptr %a898) - %t900 = icmp ne i32 %t899, 0 - br i1 %t900, label %then8923, label %endif8925 -then8923: - %t901 = load ptr, ptr %a1 - %t902 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t901, %S.ast.Node %t902, i64 1) - %t903 = load ptr, ptr %a1 - %t904 = load ptr, ptr %a1 - %t905 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t906 = load { ptr, i64, i64 }, ptr %t905 - %t907 = extractvalue { ptr, i64, i64 } %t906, 1 - %t908 = icmp uge i64 1, %t907 - br i1 %t908, label %range8926, label %inrange8927 -range8926: - call void @finch_panic_index(ptr @.str.5788, i64 5505, i64 1, i64 %t907) - unreachable -inrange8927: - %t909 = extractvalue { ptr, i64, i64 } %t906, 0 - %t910 = getelementptr inbounds %S.ast.Node, ptr %t909, i64 1 - %t911 = load %S.ast.Node, ptr %t910 - %t912 = call %S.gen.Val @finch.gen.expr(ptr %t904, %S.ast.Node %t911) - %t913 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5789, i64 3, i64 0 }) - %t914 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t915 = load { ptr, i64, i64 }, ptr %t914 - %t916 = extractvalue { ptr, i64, i64 } %t915, 1 - %t917 = icmp uge i64 1, %t916 - br i1 %t917, label %range8928, label %inrange8929 -range8928: - call void @finch_panic_index(ptr @.str.5790, i64 5505, i64 1, i64 %t916) - unreachable -inrange8929: - %t918 = extractvalue { ptr, i64, i64 } %t915, 0 - %t919 = getelementptr inbounds %S.ast.Node, ptr %t918, i64 1 - %t920 = load %S.ast.Node, ptr %t919 - %t921 = call %S.gen.Val @finch.gen.coerce(ptr %t903, %S.gen.Val %t912, %S.ast.Type %t913, %S.ast.Node %t920, { ptr, i64, i64 } { ptr @.str.5791, i64 14, i64 0 }) - store %S.gen.Val %t912, ptr %a922 - call void @finch.drop.S_gen_Val(ptr %a922) - store %S.ast.Type %t913, ptr %a923 - call void @finch.drop.S_ast_Type(ptr %a923) - %t924 = extractvalue %S.gen.Val %t921, 0 - store { ptr, i64, i64 } %t924, ptr %a925 - call void @finch_str_copy(ptr %a926, ptr %a925) - %t927 = load { ptr, i64, i64 }, ptr %a926 - store %S.gen.Val %t921, ptr %a928 - call void @finch.drop.S_gen_Val(ptr %a928) - store { ptr, i64, i64 } %t927, ptr %a929 - %t930 = load ptr, ptr %a1 - %t931 = load { ptr, i64, i64 }, ptr %a3 - %t932 = load %S.ast.Type, ptr %a4 - %t933 = load { ptr, i64, i64 }, ptr %a929 - call void @finch.gen.dropFrom(ptr %t930, { ptr, i64, i64 } %t931, %S.ast.Type %t932, { ptr, i64, i64 } %t933) - %t934 = load ptr, ptr %a1 - %t935 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5792, i64 32, i64 0 }, ptr %a937 - store { ptr, i64, i64 } %t935, ptr %a938 - call void @finch_str_concat(ptr %a936, ptr %a937, ptr %a938) - %t939 = load { ptr, i64, i64 }, ptr %a936 - store { ptr, i64, i64 } %t939, ptr %a941 - store { ptr, i64, i64 } { ptr @.str.5793, i64 6, i64 0 }, ptr %a942 - call void @finch_str_concat(ptr %a940, ptr %a941, ptr %a942) - store { ptr, i64, i64 } %t939, ptr %a943 - call void @finch_str_drop(ptr %a943) - %t944 = load { ptr, i64, i64 }, ptr %a940 - %t945 = load { ptr, i64, i64 }, ptr %a929 - store { ptr, i64, i64 } %t944, ptr %a947 - store { ptr, i64, i64 } %t945, ptr %a948 - call void @finch_str_concat(ptr %a946, ptr %a947, ptr %a948) - store { ptr, i64, i64 } %t944, ptr %a949 - call void @finch_str_drop(ptr %a949) - %t950 = load { ptr, i64, i64 }, ptr %a946 - store { ptr, i64, i64 } %t950, ptr %a952 - store { ptr, i64, i64 } { ptr @.str.5794, i64 6, i64 0 }, ptr %a953 - call void @finch_str_concat(ptr %a951, ptr %a952, ptr %a953) - store { ptr, i64, i64 } %t950, ptr %a954 - call void @finch_str_drop(ptr %a954) - %t955 = load { ptr, i64, i64 }, ptr %a951 - %t956 = load ptr, ptr %a1 - %t957 = load %S.ast.Type, ptr %a15 - %t958 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t956, %S.ast.Type %t957) - store { ptr, i64, i64 } %t955, ptr %a960 - store { ptr, i64, i64 } %t958, ptr %a961 - call void @finch_str_concat(ptr %a959, ptr %a960, ptr %a961) - store { ptr, i64, i64 } %t955, ptr %a962 - call void @finch_str_drop(ptr %a962) - store { ptr, i64, i64 } %t958, ptr %a963 - call void @finch_str_drop(ptr %a963) - %t964 = load { ptr, i64, i64 }, ptr %a959 - store { ptr, i64, i64 } %t964, ptr %a966 - store { ptr, i64, i64 } { ptr @.str.5795, i64 1, i64 0 }, ptr %a967 - call void @finch_str_concat(ptr %a965, ptr %a966, ptr %a967) - store { ptr, i64, i64 } %t964, ptr %a968 - call void @finch_str_drop(ptr %a968) - %t969 = load { ptr, i64, i64 }, ptr %a965 - call void @finch.gen.emit(ptr %t934, { ptr, i64, i64 } %t969) - store { ptr, i64, i64 } %t969, ptr %a970 - call void @finch_str_drop(ptr %a970) - %t971 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5796, i64 4, i64 0 }) - %t972 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t971, 1 - call void @finch_str_drop(ptr %a929) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t972 -endif8925: - %t973 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t973, ptr %a974 - store { ptr, i64, i64 } { ptr @.str.5797, i64 7, i64 0 }, ptr %a975 - %t976 = call i32 @finch_str_eq(ptr %a974, ptr %a975) - %t977 = icmp ne i32 %t976, 0 - br i1 %t977, label %then8930, label %endif8932 -then8930: - %t978 = load ptr, ptr %a1 - %t979 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t978, %S.ast.Node %t979, i64 0) - %t980 = load ptr, ptr %a1 - %t981 = load { ptr, i64, i64 }, ptr %a39 - %t982 = call { ptr, i64, i64 } @finch.gen.load(ptr %t980, { ptr, i64, i64 } { ptr @.str.5798, i64 3, i64 0 }, { ptr, i64, i64 } %t981) - store { ptr, i64, i64 } %t982, ptr %a983 - %t984 = load ptr, ptr %a1 - %t985 = load { ptr, i64, i64 }, ptr %a3 - %t986 = call { ptr, i64, i64 } @finch.gen.load(ptr %t984, { ptr, i64, i64 } { ptr @.str.5799, i64 3, i64 0 }, { ptr, i64, i64 } %t985) - store { ptr, i64, i64 } %t986, ptr %a987 - %t988 = load ptr, ptr %a1 - %t989 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5800, i64 9, i64 0 }, ptr %a991 - store { ptr, i64, i64 } %t989, ptr %a992 - call void @finch_str_concat(ptr %a990, ptr %a991, ptr %a992) - %t993 = load { ptr, i64, i64 }, ptr %a990 - store { ptr, i64, i64 } %t993, ptr %a995 - store { ptr, i64, i64 } { ptr @.str.5801, i64 3, i64 0 }, ptr %a996 - call void @finch_str_concat(ptr %a994, ptr %a995, ptr %a996) - store { ptr, i64, i64 } %t993, ptr %a997 - call void @finch_str_drop(ptr %a997) - %t998 = load { ptr, i64, i64 }, ptr %a994 - %t999 = call { ptr, i64, i64 } @finch.gen.op(ptr %t988, { ptr, i64, i64 } %t998) - store { ptr, i64, i64 } %t998, ptr %a1000 - call void @finch_str_drop(ptr %a1000) - store { ptr, i64, i64 } %t999, ptr %a1001 - %t1002 = load ptr, ptr %a1 - %t1003 = load { ptr, i64, i64 }, ptr %a1001 - %t1004 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1002, { ptr, i64, i64 } %t1003) - store { ptr, i64, i64 } %t1004, ptr %a1005 - %t1006 = load ptr, ptr %a1 - %t1007 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5802, i64 23, i64 0 }, ptr %a1009 - store { ptr, i64, i64 } %t1007, ptr %a1010 - call void @finch_str_concat(ptr %a1008, ptr %a1009, ptr %a1010) - %t1011 = load { ptr, i64, i64 }, ptr %a1008 - store { ptr, i64, i64 } %t1011, ptr %a1013 - store { ptr, i64, i64 } { ptr @.str.5803, i64 6, i64 0 }, ptr %a1014 - call void @finch_str_concat(ptr %a1012, ptr %a1013, ptr %a1014) - store { ptr, i64, i64 } %t1011, ptr %a1015 - call void @finch_str_drop(ptr %a1015) - %t1016 = load { ptr, i64, i64 }, ptr %a1012 - %t1017 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1016, ptr %a1019 - store { ptr, i64, i64 } %t1017, ptr %a1020 - call void @finch_str_concat(ptr %a1018, ptr %a1019, ptr %a1020) - store { ptr, i64, i64 } %t1016, ptr %a1021 - call void @finch_str_drop(ptr %a1021) - %t1022 = load { ptr, i64, i64 }, ptr %a1018 - store { ptr, i64, i64 } %t1022, ptr %a1024 - store { ptr, i64, i64 } { ptr @.str.5804, i64 6, i64 0 }, ptr %a1025 - call void @finch_str_concat(ptr %a1023, ptr %a1024, ptr %a1025) - store { ptr, i64, i64 } %t1022, ptr %a1026 - call void @finch_str_drop(ptr %a1026) - %t1027 = load { ptr, i64, i64 }, ptr %a1023 - %t1028 = load { ptr, i64, i64 }, ptr %a1005 - %t1029 = extractvalue { ptr, i64, i64 } %t1028, 1 - %t1030 = icmp uge i64 3, %t1029 - br i1 %t1030, label %range8933, label %inrange8934 -range8933: - call void @finch_panic_index(ptr @.str.5805, i64 5516, i64 3, i64 %t1029) - unreachable -inrange8934: - %t1031 = extractvalue { ptr, i64, i64 } %t1028, 0 - %t1032 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1031, i64 3 - %t1033 = load { ptr, i64, i64 }, ptr %t1032 - store { ptr, i64, i64 } %t1027, ptr %a1035 - store { ptr, i64, i64 } %t1033, ptr %a1036 - call void @finch_str_concat(ptr %a1034, ptr %a1035, ptr %a1036) - store { ptr, i64, i64 } %t1027, ptr %a1037 - call void @finch_str_drop(ptr %a1037) - %t1038 = load { ptr, i64, i64 }, ptr %a1034 - %t1039 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1006, { ptr, i64, i64 } %t1038) - store { ptr, i64, i64 } %t1038, ptr %a1040 - call void @finch_str_drop(ptr %a1040) - store { ptr, i64, i64 } %t1039, ptr %a1041 - %t1042 = load ptr, ptr %a1 - %t1043 = load ptr, ptr %a1 - %t1044 = load { ptr, i64, i64 }, ptr %a983 - store { ptr, i64, i64 } { ptr @.str.5807, i64 8, i64 0 }, ptr %a1046 - store { ptr, i64, i64 } %t1044, ptr %a1047 - call void @finch_str_concat(ptr %a1045, ptr %a1046, ptr %a1047) - %t1048 = load { ptr, i64, i64 }, ptr %a1045 - store { ptr, i64, i64 } %t1048, ptr %a1050 - store { ptr, i64, i64 } { ptr @.str.5808, i64 3, i64 0 }, ptr %a1051 - call void @finch_str_concat(ptr %a1049, ptr %a1050, ptr %a1051) - store { ptr, i64, i64 } %t1048, ptr %a1052 - call void @finch_str_drop(ptr %a1052) - %t1053 = load { ptr, i64, i64 }, ptr %a1049 - %t1054 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1043, { ptr, i64, i64 } %t1053) - store { ptr, i64, i64 } %t1053, ptr %a1055 - call void @finch_str_drop(ptr %a1055) - store { ptr, i64, i64 } { ptr @.str.5806, i64 8, i64 0 }, ptr %a1057 - store { ptr, i64, i64 } %t1054, ptr %a1058 - call void @finch_str_concat(ptr %a1056, ptr %a1057, ptr %a1058) - store { ptr, i64, i64 } %t1054, ptr %a1059 - call void @finch_str_drop(ptr %a1059) - %t1060 = load { ptr, i64, i64 }, ptr %a1056 - store { ptr, i64, i64 } %t1060, ptr %a1062 - store { ptr, i64, i64 } { ptr @.str.5809, i64 2, i64 0 }, ptr %a1063 - call void @finch_str_concat(ptr %a1061, ptr %a1062, ptr %a1063) - store { ptr, i64, i64 } %t1060, ptr %a1064 - call void @finch_str_drop(ptr %a1064) - %t1065 = load { ptr, i64, i64 }, ptr %a1061 - %t1066 = load { ptr, i64, i64 }, ptr %a1005 - %t1067 = extractvalue { ptr, i64, i64 } %t1066, 1 - %t1068 = icmp uge i64 3, %t1067 - br i1 %t1068, label %range8935, label %inrange8936 -range8935: - call void @finch_panic_index(ptr @.str.5810, i64 5517, i64 3, i64 %t1067) - unreachable -inrange8936: - %t1069 = extractvalue { ptr, i64, i64 } %t1066, 0 - %t1070 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1069, i64 3 - %t1071 = load { ptr, i64, i64 }, ptr %t1070 - store { ptr, i64, i64 } %t1065, ptr %a1073 - store { ptr, i64, i64 } %t1071, ptr %a1074 - call void @finch_str_concat(ptr %a1072, ptr %a1073, ptr %a1074) - store { ptr, i64, i64 } %t1065, ptr %a1075 - call void @finch_str_drop(ptr %a1075) - %t1076 = load { ptr, i64, i64 }, ptr %a1072 - %t1077 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1042, { ptr, i64, i64 } %t1076) - store { ptr, i64, i64 } %t1076, ptr %a1078 - call void @finch_str_drop(ptr %a1078) - store { ptr, i64, i64 } %t1077, ptr %a1079 - %t1080 = load ptr, ptr %a1 - %t1081 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5811, i64 23, i64 0 }, ptr %a1083 - store { ptr, i64, i64 } %t1081, ptr %a1084 - call void @finch_str_concat(ptr %a1082, ptr %a1083, ptr %a1084) - %t1085 = load { ptr, i64, i64 }, ptr %a1082 - store { ptr, i64, i64 } %t1085, ptr %a1087 - store { ptr, i64, i64 } { ptr @.str.5812, i64 6, i64 0 }, ptr %a1088 - call void @finch_str_concat(ptr %a1086, ptr %a1087, ptr %a1088) - store { ptr, i64, i64 } %t1085, ptr %a1089 - call void @finch_str_drop(ptr %a1089) - %t1090 = load { ptr, i64, i64 }, ptr %a1086 - %t1091 = load { ptr, i64, i64 }, ptr %a987 - store { ptr, i64, i64 } %t1090, ptr %a1093 - store { ptr, i64, i64 } %t1091, ptr %a1094 - call void @finch_str_concat(ptr %a1092, ptr %a1093, ptr %a1094) - store { ptr, i64, i64 } %t1090, ptr %a1095 - call void @finch_str_drop(ptr %a1095) - %t1096 = load { ptr, i64, i64 }, ptr %a1092 - store { ptr, i64, i64 } %t1096, ptr %a1098 - store { ptr, i64, i64 } { ptr @.str.5813, i64 6, i64 0 }, ptr %a1099 - call void @finch_str_concat(ptr %a1097, ptr %a1098, ptr %a1099) - store { ptr, i64, i64 } %t1096, ptr %a1100 - call void @finch_str_drop(ptr %a1100) - %t1101 = load { ptr, i64, i64 }, ptr %a1097 - %t1102 = load { ptr, i64, i64 }, ptr %a1079 - store { ptr, i64, i64 } %t1101, ptr %a1104 - store { ptr, i64, i64 } %t1102, ptr %a1105 - call void @finch_str_concat(ptr %a1103, ptr %a1104, ptr %a1105) - store { ptr, i64, i64 } %t1101, ptr %a1106 - call void @finch_str_drop(ptr %a1106) - %t1107 = load { ptr, i64, i64 }, ptr %a1103 - %t1108 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1080, { ptr, i64, i64 } %t1107) - store { ptr, i64, i64 } %t1107, ptr %a1109 - call void @finch_str_drop(ptr %a1109) - store { ptr, i64, i64 } %t1108, ptr %a1110 - %t1111 = load ptr, ptr %a1 - %t1112 = load { ptr, i64, i64 }, ptr %a19 - %t1113 = load { ptr, i64, i64 }, ptr %a1041 - %t1114 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1111, { ptr, i64, i64 } %t1112, { ptr, i64, i64 } %t1113) - store { ptr, i64, i64 } %t1114, ptr %a1115 - %t1116 = load ptr, ptr %a1 - %t1117 = load { ptr, i64, i64 }, ptr %a19 - %t1118 = load { ptr, i64, i64 }, ptr %a1110 - %t1119 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1116, { ptr, i64, i64 } %t1117, { ptr, i64, i64 } %t1118) - store { ptr, i64, i64 } %t1119, ptr %a1120 - %t1121 = load ptr, ptr %a1 - %t1122 = load { ptr, i64, i64 }, ptr %a19 - %t1123 = load { ptr, i64, i64 }, ptr %a1120 - %t1124 = load { ptr, i64, i64 }, ptr %a1041 - call void @finch.gen.store(ptr %t1121, { ptr, i64, i64 } %t1122, { ptr, i64, i64 } %t1123, { ptr, i64, i64 } %t1124) - %t1125 = load ptr, ptr %a1 - %t1126 = load { ptr, i64, i64 }, ptr %a19 - %t1127 = load { ptr, i64, i64 }, ptr %a1115 - %t1128 = load { ptr, i64, i64 }, ptr %a1110 - call void @finch.gen.store(ptr %t1125, { ptr, i64, i64 } %t1126, { ptr, i64, i64 } %t1127, { ptr, i64, i64 } %t1128) - %t1129 = load ptr, ptr %a1 - %t1130 = load { ptr, i64, i64 }, ptr %a1005 - call void @finch.gen.loopEnd(ptr %t1129, { ptr, i64, i64 } %t1130) - %t1131 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5814, i64 4, i64 0 }) - %t1132 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1131, 1 - call void @finch_str_drop(ptr %a1120) - call void @finch_str_drop(ptr %a1115) - call void @finch_str_drop(ptr %a1110) - call void @finch_str_drop(ptr %a1079) - call void @finch_str_drop(ptr %a1041) - call void @finch.drop.arr_str(ptr %a1005) - call void @finch_str_drop(ptr %a1001) - call void @finch_str_drop(ptr %a987) - call void @finch_str_drop(ptr %a983) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1132 -endif8932: - %t1133 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1133, ptr %a1134 - store { ptr, i64, i64 } { ptr @.str.5815, i64 5, i64 0 }, ptr %a1135 - %t1136 = call i32 @finch_str_eq(ptr %a1134, ptr %a1135) - %t1137 = icmp ne i32 %t1136, 0 - br i1 %t1137, label %then8937, label %endif8939 -then8937: - %t1138 = load ptr, ptr %a1 - %t1139 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1138, %S.ast.Node %t1139, i64 2) - %t1140 = load ptr, ptr %a1 - %t1141 = load ptr, ptr %a1 - %t1142 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1143 = load { ptr, i64, i64 }, ptr %t1142 - %t1144 = extractvalue { ptr, i64, i64 } %t1143, 1 - %t1145 = icmp uge i64 1, %t1144 - br i1 %t1145, label %range8940, label %inrange8941 -range8940: - call void @finch_panic_index(ptr @.str.5816, i64 5528, i64 1, i64 %t1144) - unreachable -inrange8941: - %t1146 = extractvalue { ptr, i64, i64 } %t1143, 0 - %t1147 = getelementptr inbounds %S.ast.Node, ptr %t1146, i64 1 - %t1148 = load %S.ast.Node, ptr %t1147 - %t1149 = call %S.gen.Val @finch.gen.expr(ptr %t1141, %S.ast.Node %t1148) - %t1150 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5817, i64 3, i64 0 }) - %t1151 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1152 = load { ptr, i64, i64 }, ptr %t1151 - %t1153 = extractvalue { ptr, i64, i64 } %t1152, 1 - %t1154 = icmp uge i64 1, %t1153 - br i1 %t1154, label %range8942, label %inrange8943 -range8942: - call void @finch_panic_index(ptr @.str.5818, i64 5528, i64 1, i64 %t1153) - unreachable -inrange8943: - %t1155 = extractvalue { ptr, i64, i64 } %t1152, 0 - %t1156 = getelementptr inbounds %S.ast.Node, ptr %t1155, i64 1 - %t1157 = load %S.ast.Node, ptr %t1156 - %t1158 = call %S.gen.Val @finch.gen.coerce(ptr %t1140, %S.gen.Val %t1149, %S.ast.Type %t1150, %S.ast.Node %t1157, { ptr, i64, i64 } { ptr @.str.5819, i64 9, i64 0 }) - store %S.gen.Val %t1149, ptr %a1159 - call void @finch.drop.S_gen_Val(ptr %a1159) - store %S.ast.Type %t1150, ptr %a1160 - call void @finch.drop.S_ast_Type(ptr %a1160) - %t1161 = extractvalue %S.gen.Val %t1158, 0 - store { ptr, i64, i64 } %t1161, ptr %a1162 - call void @finch_str_copy(ptr %a1163, ptr %a1162) - %t1164 = load { ptr, i64, i64 }, ptr %a1163 - store %S.gen.Val %t1158, ptr %a1165 - call void @finch.drop.S_gen_Val(ptr %a1165) - store { ptr, i64, i64 } %t1164, ptr %a1166 - %t1167 = load ptr, ptr %a1 - %t1168 = load ptr, ptr %a1 - %t1169 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1170 = load { ptr, i64, i64 }, ptr %t1169 - %t1171 = extractvalue { ptr, i64, i64 } %t1170, 1 - %t1172 = icmp uge i64 2, %t1171 - br i1 %t1172, label %range8944, label %inrange8945 -range8944: - call void @finch_panic_index(ptr @.str.5820, i64 5529, i64 2, i64 %t1171) - unreachable -inrange8945: - %t1173 = extractvalue { ptr, i64, i64 } %t1170, 0 - %t1174 = getelementptr inbounds %S.ast.Node, ptr %t1173, i64 2 - %t1175 = load %S.ast.Node, ptr %t1174 - %t1176 = call %S.gen.Val @finch.gen.expr(ptr %t1168, %S.ast.Node %t1175) - %t1177 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5821, i64 3, i64 0 }) - %t1178 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t1179 = load { ptr, i64, i64 }, ptr %t1178 - %t1180 = extractvalue { ptr, i64, i64 } %t1179, 1 - %t1181 = icmp uge i64 2, %t1180 - br i1 %t1181, label %range8946, label %inrange8947 -range8946: - call void @finch_panic_index(ptr @.str.5822, i64 5529, i64 2, i64 %t1180) - unreachable -inrange8947: - %t1182 = extractvalue { ptr, i64, i64 } %t1179, 0 - %t1183 = getelementptr inbounds %S.ast.Node, ptr %t1182, i64 2 - %t1184 = load %S.ast.Node, ptr %t1183 - %t1185 = call %S.gen.Val @finch.gen.coerce(ptr %t1167, %S.gen.Val %t1176, %S.ast.Type %t1177, %S.ast.Node %t1184, { ptr, i64, i64 } { ptr @.str.5823, i64 7, i64 0 }) - store %S.gen.Val %t1176, ptr %a1186 - call void @finch.drop.S_gen_Val(ptr %a1186) - store %S.ast.Type %t1177, ptr %a1187 - call void @finch.drop.S_ast_Type(ptr %a1187) - %t1188 = extractvalue %S.gen.Val %t1185, 0 - store { ptr, i64, i64 } %t1188, ptr %a1189 - call void @finch_str_copy(ptr %a1190, ptr %a1189) - %t1191 = load { ptr, i64, i64 }, ptr %a1190 - store %S.gen.Val %t1185, ptr %a1192 - call void @finch.drop.S_gen_Val(ptr %a1192) - store { ptr, i64, i64 } %t1191, ptr %a1193 - %t1194 = load ptr, ptr %a1 - %t1195 = load { ptr, i64, i64 }, ptr %a39 - %t1196 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1194, { ptr, i64, i64 } { ptr @.str.5824, i64 3, i64 0 }, { ptr, i64, i64 } %t1195) - store { ptr, i64, i64 } %t1196, ptr %a1197 - %t1198 = load ptr, ptr %a1 - %t1199 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5825, i64 13, i64 0 }, ptr %a1201 - store { ptr, i64, i64 } %t1199, ptr %a1202 - call void @finch_str_concat(ptr %a1200, ptr %a1201, ptr %a1202) - %t1203 = load { ptr, i64, i64 }, ptr %a1200 - store { ptr, i64, i64 } %t1203, ptr %a1205 - store { ptr, i64, i64 } { ptr @.str.5826, i64 3, i64 0 }, ptr %a1206 - call void @finch_str_concat(ptr %a1204, ptr %a1205, ptr %a1206) - store { ptr, i64, i64 } %t1203, ptr %a1207 - call void @finch_str_drop(ptr %a1207) - %t1208 = load { ptr, i64, i64 }, ptr %a1204 - %t1209 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1198, { ptr, i64, i64 } %t1208) - store { ptr, i64, i64 } %t1208, ptr %a1210 - call void @finch_str_drop(ptr %a1210) - store { ptr, i64, i64 } %t1209, ptr %a1211 - %t1212 = load ptr, ptr %a1 - %t1213 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5827, i64 13, i64 0 }, ptr %a1215 - store { ptr, i64, i64 } %t1213, ptr %a1216 - call void @finch_str_concat(ptr %a1214, ptr %a1215, ptr %a1216) - %t1217 = load { ptr, i64, i64 }, ptr %a1214 - store { ptr, i64, i64 } %t1217, ptr %a1219 - store { ptr, i64, i64 } { ptr @.str.5828, i64 2, i64 0 }, ptr %a1220 - call void @finch_str_concat(ptr %a1218, ptr %a1219, ptr %a1220) - store { ptr, i64, i64 } %t1217, ptr %a1221 - call void @finch_str_drop(ptr %a1221) - %t1222 = load { ptr, i64, i64 }, ptr %a1218 - %t1223 = load { ptr, i64, i64 }, ptr %a1197 - store { ptr, i64, i64 } %t1222, ptr %a1225 - store { ptr, i64, i64 } %t1223, ptr %a1226 - call void @finch_str_concat(ptr %a1224, ptr %a1225, ptr %a1226) - store { ptr, i64, i64 } %t1222, ptr %a1227 - call void @finch_str_drop(ptr %a1227) - %t1228 = load { ptr, i64, i64 }, ptr %a1224 - %t1229 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1212, { ptr, i64, i64 } %t1228) - store { ptr, i64, i64 } %t1228, ptr %a1230 - call void @finch_str_drop(ptr %a1230) - store { ptr, i64, i64 } %t1229, ptr %a1231 - %t1232 = load ptr, ptr %a1 - %t1233 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5829, i64 13, i64 0 }, ptr %a1235 - store { ptr, i64, i64 } %t1233, ptr %a1236 - call void @finch_str_concat(ptr %a1234, ptr %a1235, ptr %a1236) - %t1237 = load { ptr, i64, i64 }, ptr %a1234 - store { ptr, i64, i64 } %t1237, ptr %a1239 - store { ptr, i64, i64 } { ptr @.str.5830, i64 2, i64 0 }, ptr %a1240 - call void @finch_str_concat(ptr %a1238, ptr %a1239, ptr %a1240) - store { ptr, i64, i64 } %t1237, ptr %a1241 - call void @finch_str_drop(ptr %a1241) - %t1242 = load { ptr, i64, i64 }, ptr %a1238 - %t1243 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } %t1242, ptr %a1245 - store { ptr, i64, i64 } %t1243, ptr %a1246 - call void @finch_str_concat(ptr %a1244, ptr %a1245, ptr %a1246) - store { ptr, i64, i64 } %t1242, ptr %a1247 - call void @finch_str_drop(ptr %a1247) - %t1248 = load { ptr, i64, i64 }, ptr %a1244 - %t1249 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1232, { ptr, i64, i64 } %t1248) - store { ptr, i64, i64 } %t1248, ptr %a1250 - call void @finch_str_drop(ptr %a1250) - store { ptr, i64, i64 } %t1249, ptr %a1251 - %t1252 = load ptr, ptr %a1 - %t1253 = load ptr, ptr %a1 - %t1254 = load ptr, ptr %a1 - %t1255 = load { ptr, i64, i64 }, ptr %a1211 - store { ptr, i64, i64 } { ptr @.str.5832, i64 6, i64 0 }, ptr %a1257 - store { ptr, i64, i64 } %t1255, ptr %a1258 - call void @finch_str_concat(ptr %a1256, ptr %a1257, ptr %a1258) - %t1259 = load { ptr, i64, i64 }, ptr %a1256 - store { ptr, i64, i64 } %t1259, ptr %a1261 - store { ptr, i64, i64 } { ptr @.str.5833, i64 2, i64 0 }, ptr %a1262 - call void @finch_str_concat(ptr %a1260, ptr %a1261, ptr %a1262) - store { ptr, i64, i64 } %t1259, ptr %a1263 - call void @finch_str_drop(ptr %a1263) - %t1264 = load { ptr, i64, i64 }, ptr %a1260 - %t1265 = load { ptr, i64, i64 }, ptr %a1231 - store { ptr, i64, i64 } %t1264, ptr %a1267 - store { ptr, i64, i64 } %t1265, ptr %a1268 - call void @finch_str_concat(ptr %a1266, ptr %a1267, ptr %a1268) - store { ptr, i64, i64 } %t1264, ptr %a1269 - call void @finch_str_drop(ptr %a1269) - %t1270 = load { ptr, i64, i64 }, ptr %a1266 - %t1271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1254, { ptr, i64, i64 } %t1270) - store { ptr, i64, i64 } %t1270, ptr %a1272 - call void @finch_str_drop(ptr %a1272) - store { ptr, i64, i64 } { ptr @.str.5831, i64 6, i64 0 }, ptr %a1274 - store { ptr, i64, i64 } %t1271, ptr %a1275 - call void @finch_str_concat(ptr %a1273, ptr %a1274, ptr %a1275) - store { ptr, i64, i64 } %t1271, ptr %a1276 - call void @finch_str_drop(ptr %a1276) - %t1277 = load { ptr, i64, i64 }, ptr %a1273 - store { ptr, i64, i64 } %t1277, ptr %a1279 - store { ptr, i64, i64 } { ptr @.str.5834, i64 2, i64 0 }, ptr %a1280 - call void @finch_str_concat(ptr %a1278, ptr %a1279, ptr %a1280) - store { ptr, i64, i64 } %t1277, ptr %a1281 - call void @finch_str_drop(ptr %a1281) - %t1282 = load { ptr, i64, i64 }, ptr %a1278 - %t1283 = load { ptr, i64, i64 }, ptr %a1251 - store { ptr, i64, i64 } %t1282, ptr %a1285 - store { ptr, i64, i64 } %t1283, ptr %a1286 - call void @finch_str_concat(ptr %a1284, ptr %a1285, ptr %a1286) - store { ptr, i64, i64 } %t1282, ptr %a1287 - call void @finch_str_drop(ptr %a1287) - %t1288 = load { ptr, i64, i64 }, ptr %a1284 - %t1289 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1253, { ptr, i64, i64 } %t1288) - store { ptr, i64, i64 } %t1288, ptr %a1290 - call void @finch_str_drop(ptr %a1290) - %t1291 = load %S.ast.Node, ptr %a2 - call void @finch.gen.panicIf(ptr %t1252, { ptr, i64, i64 } %t1289, { ptr, i64, i64 } { ptr @.str.5835, i64 33, i64 0 }, %S.ast.Node %t1291) - store { ptr, i64, i64 } %t1289, ptr %a1292 - call void @finch_str_drop(ptr %a1292) - %t1293 = load ptr, ptr %a1 - %t1294 = load { ptr, i64, i64 }, ptr %a1193 - store { ptr, i64, i64 } { ptr @.str.5836, i64 8, i64 0 }, ptr %a1296 - store { ptr, i64, i64 } %t1294, ptr %a1297 - call void @finch_str_concat(ptr %a1295, ptr %a1296, ptr %a1297) - %t1298 = load { ptr, i64, i64 }, ptr %a1295 - store { ptr, i64, i64 } %t1298, ptr %a1300 - store { ptr, i64, i64 } { ptr @.str.5837, i64 2, i64 0 }, ptr %a1301 - call void @finch_str_concat(ptr %a1299, ptr %a1300, ptr %a1301) - store { ptr, i64, i64 } %t1298, ptr %a1302 - call void @finch_str_drop(ptr %a1302) - %t1303 = load { ptr, i64, i64 }, ptr %a1299 - %t1304 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } %t1303, ptr %a1306 - store { ptr, i64, i64 } %t1304, ptr %a1307 - call void @finch_str_concat(ptr %a1305, ptr %a1306, ptr %a1307) - store { ptr, i64, i64 } %t1303, ptr %a1308 - call void @finch_str_drop(ptr %a1308) - %t1309 = load { ptr, i64, i64 }, ptr %a1305 - %t1310 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1293, { ptr, i64, i64 } %t1309) - store { ptr, i64, i64 } %t1309, ptr %a1311 - call void @finch_str_drop(ptr %a1311) - store { ptr, i64, i64 } %t1310, ptr %a1312 - %t1313 = load ptr, ptr %a1 - %t1314 = call { ptr, i64, i64 } @finch.gen.alloca(ptr %t1313, { ptr, i64, i64 } { ptr @.str.5838, i64 17, i64 0 }) - store { ptr, i64, i64 } %t1314, ptr %a1315 - %t1316 = load ptr, ptr %a1 - %t1317 = load { ptr, i64, i64 }, ptr %a1315 - store { ptr, i64, i64 } { ptr @.str.5839, i64 30, i64 0 }, ptr %a1319 - store { ptr, i64, i64 } %t1317, ptr %a1320 - call void @finch_str_concat(ptr %a1318, ptr %a1319, ptr %a1320) - %t1321 = load { ptr, i64, i64 }, ptr %a1318 - store { ptr, i64, i64 } %t1321, ptr %a1323 - store { ptr, i64, i64 } { ptr @.str.5840, i64 6, i64 0 }, ptr %a1324 - call void @finch_str_concat(ptr %a1322, ptr %a1323, ptr %a1324) - store { ptr, i64, i64 } %t1321, ptr %a1325 - call void @finch_str_drop(ptr %a1325) - %t1326 = load { ptr, i64, i64 }, ptr %a1322 - %t1327 = load { ptr, i64, i64 }, ptr %a1312 - store { ptr, i64, i64 } %t1326, ptr %a1329 - store { ptr, i64, i64 } %t1327, ptr %a1330 - call void @finch_str_concat(ptr %a1328, ptr %a1329, ptr %a1330) - store { ptr, i64, i64 } %t1326, ptr %a1331 - call void @finch_str_drop(ptr %a1331) - %t1332 = load { ptr, i64, i64 }, ptr %a1328 - store { ptr, i64, i64 } %t1332, ptr %a1334 - store { ptr, i64, i64 } { ptr @.str.5841, i64 6, i64 0 }, ptr %a1335 - call void @finch_str_concat(ptr %a1333, ptr %a1334, ptr %a1335) - store { ptr, i64, i64 } %t1332, ptr %a1336 - call void @finch_str_drop(ptr %a1336) - %t1337 = load { ptr, i64, i64 }, ptr %a1333 - %t1338 = load ptr, ptr %a1 - %t1339 = load %S.ast.Type, ptr %a15 - %t1340 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1338, %S.ast.Type %t1339) - store { ptr, i64, i64 } %t1337, ptr %a1342 - store { ptr, i64, i64 } %t1340, ptr %a1343 - call void @finch_str_concat(ptr %a1341, ptr %a1342, ptr %a1343) - store { ptr, i64, i64 } %t1337, ptr %a1344 - call void @finch_str_drop(ptr %a1344) - store { ptr, i64, i64 } %t1340, ptr %a1345 - call void @finch_str_drop(ptr %a1345) - %t1346 = load { ptr, i64, i64 }, ptr %a1341 - store { ptr, i64, i64 } %t1346, ptr %a1348 - store { ptr, i64, i64 } { ptr @.str.5842, i64 1, i64 0 }, ptr %a1349 - call void @finch_str_concat(ptr %a1347, ptr %a1348, ptr %a1349) - store { ptr, i64, i64 } %t1346, ptr %a1350 - call void @finch_str_drop(ptr %a1350) - %t1351 = load { ptr, i64, i64 }, ptr %a1347 - call void @finch.gen.emit(ptr %t1316, { ptr, i64, i64 } %t1351) - store { ptr, i64, i64 } %t1351, ptr %a1352 - call void @finch_str_drop(ptr %a1352) - %t1353 = load ptr, ptr %a1 - %t1354 = load { ptr, i64, i64 }, ptr %a3 - %t1355 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1353, { ptr, i64, i64 } { ptr @.str.5843, i64 3, i64 0 }, { ptr, i64, i64 } %t1354) - store { ptr, i64, i64 } %t1355, ptr %a1356 - %t1357 = load ptr, ptr %a1 - %t1358 = load { ptr, i64, i64 }, ptr %a1315 - %t1359 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1357, { ptr, i64, i64 } { ptr @.str.5844, i64 3, i64 0 }, { ptr, i64, i64 } %t1358) - store { ptr, i64, i64 } %t1359, ptr %a1360 - %t1361 = load ptr, ptr %a1 - %t1362 = load { ptr, i64, i64 }, ptr %a1312 - %t1363 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t1361, { ptr, i64, i64 } %t1362) - store { ptr, i64, i64 } %t1363, ptr %a1364 - %t1365 = load ptr, ptr %a1 - %t1366 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5845, i64 23, i64 0 }, ptr %a1368 - store { ptr, i64, i64 } %t1366, ptr %a1369 - call void @finch_str_concat(ptr %a1367, ptr %a1368, ptr %a1369) - %t1370 = load { ptr, i64, i64 }, ptr %a1367 - store { ptr, i64, i64 } %t1370, ptr %a1372 - store { ptr, i64, i64 } { ptr @.str.5846, i64 6, i64 0 }, ptr %a1373 - call void @finch_str_concat(ptr %a1371, ptr %a1372, ptr %a1373) - store { ptr, i64, i64 } %t1370, ptr %a1374 - call void @finch_str_drop(ptr %a1374) - %t1375 = load { ptr, i64, i64 }, ptr %a1371 - %t1376 = load { ptr, i64, i64 }, ptr %a1360 - store { ptr, i64, i64 } %t1375, ptr %a1378 - store { ptr, i64, i64 } %t1376, ptr %a1379 - call void @finch_str_concat(ptr %a1377, ptr %a1378, ptr %a1379) - store { ptr, i64, i64 } %t1375, ptr %a1380 - call void @finch_str_drop(ptr %a1380) - %t1381 = load { ptr, i64, i64 }, ptr %a1377 - store { ptr, i64, i64 } %t1381, ptr %a1383 - store { ptr, i64, i64 } { ptr @.str.5847, i64 6, i64 0 }, ptr %a1384 - call void @finch_str_concat(ptr %a1382, ptr %a1383, ptr %a1384) - store { ptr, i64, i64 } %t1381, ptr %a1385 - call void @finch_str_drop(ptr %a1385) - %t1386 = load { ptr, i64, i64 }, ptr %a1382 - %t1387 = load { ptr, i64, i64 }, ptr %a1364 - %t1388 = extractvalue { ptr, i64, i64 } %t1387, 1 - %t1389 = icmp uge i64 3, %t1388 - br i1 %t1389, label %range8948, label %inrange8949 -range8948: - call void @finch_panic_index(ptr @.str.5848, i64 5541, i64 3, i64 %t1388) - unreachable -inrange8949: - %t1390 = extractvalue { ptr, i64, i64 } %t1387, 0 - %t1391 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1390, i64 3 - %t1392 = load { ptr, i64, i64 }, ptr %t1391 - store { ptr, i64, i64 } %t1386, ptr %a1394 - store { ptr, i64, i64 } %t1392, ptr %a1395 - call void @finch_str_concat(ptr %a1393, ptr %a1394, ptr %a1395) - store { ptr, i64, i64 } %t1386, ptr %a1396 - call void @finch_str_drop(ptr %a1396) - %t1397 = load { ptr, i64, i64 }, ptr %a1393 - %t1398 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1365, { ptr, i64, i64 } %t1397) - store { ptr, i64, i64 } %t1397, ptr %a1399 - call void @finch_str_drop(ptr %a1399) - store { ptr, i64, i64 } %t1398, ptr %a1400 - %t1401 = load ptr, ptr %a1 - %t1402 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.5849, i64 23, i64 0 }, ptr %a1404 - store { ptr, i64, i64 } %t1402, ptr %a1405 - call void @finch_str_concat(ptr %a1403, ptr %a1404, ptr %a1405) - %t1406 = load { ptr, i64, i64 }, ptr %a1403 - store { ptr, i64, i64 } %t1406, ptr %a1408 - store { ptr, i64, i64 } { ptr @.str.5850, i64 6, i64 0 }, ptr %a1409 - call void @finch_str_concat(ptr %a1407, ptr %a1408, ptr %a1409) - store { ptr, i64, i64 } %t1406, ptr %a1410 - call void @finch_str_drop(ptr %a1410) - %t1411 = load { ptr, i64, i64 }, ptr %a1407 - %t1412 = load { ptr, i64, i64 }, ptr %a1356 - store { ptr, i64, i64 } %t1411, ptr %a1414 - store { ptr, i64, i64 } %t1412, ptr %a1415 - call void @finch_str_concat(ptr %a1413, ptr %a1414, ptr %a1415) - store { ptr, i64, i64 } %t1411, ptr %a1416 - call void @finch_str_drop(ptr %a1416) - %t1417 = load { ptr, i64, i64 }, ptr %a1413 - store { ptr, i64, i64 } %t1417, ptr %a1419 - store { ptr, i64, i64 } { ptr @.str.5851, i64 6, i64 0 }, ptr %a1420 - call void @finch_str_concat(ptr %a1418, ptr %a1419, ptr %a1420) - store { ptr, i64, i64 } %t1417, ptr %a1421 - call void @finch_str_drop(ptr %a1421) - %t1422 = load { ptr, i64, i64 }, ptr %a1418 - %t1423 = load ptr, ptr %a1 - %t1424 = load { ptr, i64, i64 }, ptr %a1166 - store { ptr, i64, i64 } { ptr @.str.5852, i64 8, i64 0 }, ptr %a1426 - store { ptr, i64, i64 } %t1424, ptr %a1427 - call void @finch_str_concat(ptr %a1425, ptr %a1426, ptr %a1427) - %t1428 = load { ptr, i64, i64 }, ptr %a1425 - store { ptr, i64, i64 } %t1428, ptr %a1430 - store { ptr, i64, i64 } { ptr @.str.5853, i64 2, i64 0 }, ptr %a1431 - call void @finch_str_concat(ptr %a1429, ptr %a1430, ptr %a1431) - store { ptr, i64, i64 } %t1428, ptr %a1432 - call void @finch_str_drop(ptr %a1432) - %t1433 = load { ptr, i64, i64 }, ptr %a1429 - %t1434 = load { ptr, i64, i64 }, ptr %a1364 - %t1435 = extractvalue { ptr, i64, i64 } %t1434, 1 - %t1436 = icmp uge i64 3, %t1435 - br i1 %t1436, label %range8950, label %inrange8951 -range8950: - call void @finch_panic_index(ptr @.str.5854, i64 5542, i64 3, i64 %t1435) - unreachable -inrange8951: - %t1437 = extractvalue { ptr, i64, i64 } %t1434, 0 - %t1438 = getelementptr inbounds { ptr, i64, i64 }, ptr %t1437, i64 3 - %t1439 = load { ptr, i64, i64 }, ptr %t1438 - store { ptr, i64, i64 } %t1433, ptr %a1441 - store { ptr, i64, i64 } %t1439, ptr %a1442 - call void @finch_str_concat(ptr %a1440, ptr %a1441, ptr %a1442) - store { ptr, i64, i64 } %t1433, ptr %a1443 - call void @finch_str_drop(ptr %a1443) - %t1444 = load { ptr, i64, i64 }, ptr %a1440 - %t1445 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1423, { ptr, i64, i64 } %t1444) - store { ptr, i64, i64 } %t1444, ptr %a1446 - call void @finch_str_drop(ptr %a1446) - store { ptr, i64, i64 } %t1422, ptr %a1448 - store { ptr, i64, i64 } %t1445, ptr %a1449 - call void @finch_str_concat(ptr %a1447, ptr %a1448, ptr %a1449) - store { ptr, i64, i64 } %t1422, ptr %a1450 - call void @finch_str_drop(ptr %a1450) - store { ptr, i64, i64 } %t1445, ptr %a1451 - call void @finch_str_drop(ptr %a1451) - %t1452 = load { ptr, i64, i64 }, ptr %a1447 - %t1453 = call { ptr, i64, i64 } @finch.gen.op(ptr %t1401, { ptr, i64, i64 } %t1452) - store { ptr, i64, i64 } %t1452, ptr %a1454 - call void @finch_str_drop(ptr %a1454) - store { ptr, i64, i64 } %t1453, ptr %a1455 - %t1456 = load ptr, ptr %a1 - %t1457 = load { ptr, i64, i64 }, ptr %a1400 - %t1458 = load { ptr, i64, i64 }, ptr %a1455 - %t1459 = load %S.ast.Type, ptr %a15 - call void @finch.gen.copyAt(ptr %t1456, { ptr, i64, i64 } %t1457, { ptr, i64, i64 } %t1458, %S.ast.Type %t1459) - %t1460 = load ptr, ptr %a1 - %t1461 = load { ptr, i64, i64 }, ptr %a1364 - call void @finch.gen.loopEnd(ptr %t1460, { ptr, i64, i64 } %t1461) - %t1462 = load ptr, ptr %a1 - %t1463 = load { ptr, i64, i64 }, ptr %a1315 - %t1464 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1462, { ptr, i64, i64 } { ptr @.str.5855, i64 17, i64 0 }, { ptr, i64, i64 } %t1463) - %t1465 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t1464, 0 - %t1466 = load %S.ast.Type, ptr %a4 - store %S.ast.Type %t1466, ptr %a1467 - call void @finch.copy.S_ast_Type(ptr %a1468, ptr %a1467) - %t1469 = load %S.ast.Type, ptr %a1468 - %t1470 = insertvalue %S.gen.Val %t1465, %S.ast.Type %t1469, 1 - %t1471 = insertvalue %S.gen.Val %t1470, i1 true, 2 - call void @finch_str_drop(ptr %a1455) - call void @finch_str_drop(ptr %a1400) - call void @finch.drop.arr_str(ptr %a1364) - call void @finch_str_drop(ptr %a1360) - call void @finch_str_drop(ptr %a1356) - call void @finch_str_drop(ptr %a1315) - call void @finch_str_drop(ptr %a1312) - call void @finch_str_drop(ptr %a1251) - call void @finch_str_drop(ptr %a1231) - call void @finch_str_drop(ptr %a1211) - call void @finch_str_drop(ptr %a1197) - call void @finch_str_drop(ptr %a1193) - call void @finch_str_drop(ptr %a1166) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1471 -endif8939: - %t1472 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t1472, ptr %a1473 - store { ptr, i64, i64 } { ptr @.str.5856, i64 4, i64 0 }, ptr %a1474 - %t1475 = call i32 @finch_str_eq(ptr %a1473, ptr %a1474) - %t1476 = icmp ne i32 %t1475, 0 - br i1 %t1476, label %then8952, label %endif8954 -then8952: - %t1477 = load ptr, ptr %a1 - %t1478 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t1477, %S.ast.Node %t1478, i64 0) - %t1479 = getelementptr inbounds %S.ast.Type, ptr %a15, i32 0, i32 0 - %t1480 = load { ptr, i64, i64 }, ptr %t1479 - store { ptr, i64, i64 } %t1480, ptr %a1481 - call void @finch_str_copy(ptr %a1482, ptr %a1481) - %t1483 = load { ptr, i64, i64 }, ptr %a1482 - store { ptr, i64, i64 } %t1483, ptr %a1484 - %t1485 = load %S.ast.Type, ptr %a15 - %t1486 = call i1 @finch.gen.isNumber(%S.ast.Type %t1485) - %t1487 = xor i1 %t1486, true - br label %logic.from8955 -logic.from8955: - br i1 %t1487, label %logic.rhs8956, label %logic.end8957 -logic.rhs8956: - %t1488 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1488, ptr %a1489 - store { ptr, i64, i64 } { ptr @.str.5857, i64 4, i64 0 }, ptr %a1490 - %t1491 = call i32 @finch_str_eq(ptr %a1489, ptr %a1490) - %t1492 = icmp eq i32 %t1491, 0 - br label %logic.rend8958 -logic.rend8958: - br label %logic.end8957 -logic.end8957: - %t1493 = phi i1 [ false, %logic.from8955 ], [ %t1492, %logic.rend8958 ] - br label %logic.from8959 -logic.from8959: - br i1 %t1493, label %logic.rhs8960, label %logic.end8961 -logic.rhs8960: - %t1494 = load { ptr, i64, i64 }, ptr %a1484 - store { ptr, i64, i64 } %t1494, ptr %a1495 - store { ptr, i64, i64 } { ptr @.str.5858, i64 3, i64 0 }, ptr %a1496 - %t1497 = call i32 @finch_str_eq(ptr %a1495, ptr %a1496) - %t1498 = icmp eq i32 %t1497, 0 - br label %logic.rend8962 -logic.rend8962: - br label %logic.end8961 -logic.end8961: - %t1499 = phi i1 [ false, %logic.from8959 ], [ %t1498, %logic.rend8962 ] - br i1 %t1499, label %then8963, label %endif8965 -then8963: - %t1500 = load ptr, ptr %a1 - %t1501 = load %S.ast.Node, ptr %a2 - call void @finch.gen.fail(ptr %t1500, %S.ast.Node %t1501, { ptr, i64, i64 } { ptr @.str.5859, i64 47, i64 0 }) - br label %endif8965 -endif8965: - %t1502 = load ptr, ptr %a1 - %t1503 = load %S.ast.Type, ptr %a15 - %t1504 = call { ptr, i64, i64 } @finch.gen.cmpFn(ptr %t1502, %S.ast.Type %t1503) - store { ptr, i64, i64 } %t1504, ptr %a1505 - %t1506 = load ptr, ptr %a1 - %t1507 = load { ptr, i64, i64 }, ptr %a39 - %t1508 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1506, { ptr, i64, i64 } { ptr @.str.5860, i64 3, i64 0 }, { ptr, i64, i64 } %t1507) - store { ptr, i64, i64 } %t1508, ptr %a1509 - %t1510 = load ptr, ptr %a1 - %t1511 = load { ptr, i64, i64 }, ptr %a3 - %t1512 = call { ptr, i64, i64 } @finch.gen.load(ptr %t1510, { ptr, i64, i64 } { ptr @.str.5861, i64 3, i64 0 }, { ptr, i64, i64 } %t1511) - store { ptr, i64, i64 } %t1512, ptr %a1513 - %t1514 = load ptr, ptr %a1 - %t1515 = load { ptr, i64, i64 }, ptr %a1513 - store { ptr, i64, i64 } { ptr @.str.5862, i64 21, i64 0 }, ptr %a1517 - store { ptr, i64, i64 } %t1515, ptr %a1518 - call void @finch_str_concat(ptr %a1516, ptr %a1517, ptr %a1518) - %t1519 = load { ptr, i64, i64 }, ptr %a1516 - store { ptr, i64, i64 } %t1519, ptr %a1521 - store { ptr, i64, i64 } { ptr @.str.5863, i64 6, i64 0 }, ptr %a1522 - call void @finch_str_concat(ptr %a1520, ptr %a1521, ptr %a1522) - store { ptr, i64, i64 } %t1519, ptr %a1523 - call void @finch_str_drop(ptr %a1523) - %t1524 = load { ptr, i64, i64 }, ptr %a1520 - %t1525 = load { ptr, i64, i64 }, ptr %a1509 - store { ptr, i64, i64 } %t1524, ptr %a1527 - store { ptr, i64, i64 } %t1525, ptr %a1528 - call void @finch_str_concat(ptr %a1526, ptr %a1527, ptr %a1528) - store { ptr, i64, i64 } %t1524, ptr %a1529 - call void @finch_str_drop(ptr %a1529) - %t1530 = load { ptr, i64, i64 }, ptr %a1526 - store { ptr, i64, i64 } %t1530, ptr %a1532 - store { ptr, i64, i64 } { ptr @.str.5864, i64 6, i64 0 }, ptr %a1533 - call void @finch_str_concat(ptr %a1531, ptr %a1532, ptr %a1533) - store { ptr, i64, i64 } %t1530, ptr %a1534 - call void @finch_str_drop(ptr %a1534) - %t1535 = load { ptr, i64, i64 }, ptr %a1531 - %t1536 = load ptr, ptr %a1 - %t1537 = load %S.ast.Type, ptr %a15 - %t1538 = call { ptr, i64, i64 } @finch.gen.sizeOf(ptr %t1536, %S.ast.Type %t1537) - store { ptr, i64, i64 } %t1535, ptr %a1540 - store { ptr, i64, i64 } %t1538, ptr %a1541 - call void @finch_str_concat(ptr %a1539, ptr %a1540, ptr %a1541) - store { ptr, i64, i64 } %t1535, ptr %a1542 - call void @finch_str_drop(ptr %a1542) - store { ptr, i64, i64 } %t1538, ptr %a1543 - call void @finch_str_drop(ptr %a1543) - %t1544 = load { ptr, i64, i64 }, ptr %a1539 - store { ptr, i64, i64 } %t1544, ptr %a1546 - store { ptr, i64, i64 } { ptr @.str.5865, i64 6, i64 0 }, ptr %a1547 - call void @finch_str_concat(ptr %a1545, ptr %a1546, ptr %a1547) - store { ptr, i64, i64 } %t1544, ptr %a1548 - call void @finch_str_drop(ptr %a1548) - %t1549 = load { ptr, i64, i64 }, ptr %a1545 - %t1550 = load { ptr, i64, i64 }, ptr %a1505 - store { ptr, i64, i64 } %t1549, ptr %a1552 - store { ptr, i64, i64 } %t1550, ptr %a1553 - call void @finch_str_concat(ptr %a1551, ptr %a1552, ptr %a1553) - store { ptr, i64, i64 } %t1549, ptr %a1554 - call void @finch_str_drop(ptr %a1554) - %t1555 = load { ptr, i64, i64 }, ptr %a1551 - store { ptr, i64, i64 } %t1555, ptr %a1557 - store { ptr, i64, i64 } { ptr @.str.5866, i64 1, i64 0 }, ptr %a1558 - call void @finch_str_concat(ptr %a1556, ptr %a1557, ptr %a1558) - store { ptr, i64, i64 } %t1555, ptr %a1559 - call void @finch_str_drop(ptr %a1559) - %t1560 = load { ptr, i64, i64 }, ptr %a1556 - call void @finch.gen.emit(ptr %t1514, { ptr, i64, i64 } %t1560) - store { ptr, i64, i64 } %t1560, ptr %a1561 - call void @finch_str_drop(ptr %a1561) - %t1562 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5867, i64 4, i64 0 }) - %t1563 = insertvalue %S.gen.Val zeroinitializer, %S.ast.Type %t1562, 1 - call void @finch_str_drop(ptr %a1513) - call void @finch_str_drop(ptr %a1509) - call void @finch_str_drop(ptr %a1505) - call void @finch_str_drop(ptr %a1484) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val %t1563 -endif8954: - %t1564 = load ptr, ptr %a1 - %t1565 = load %S.ast.Node, ptr %a2 - %t1566 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } { ptr @.str.5868, i64 24, i64 0 }, ptr %a1568 - store { ptr, i64, i64 } %t1566, ptr %a1569 - call void @finch_str_concat(ptr %a1567, ptr %a1568, ptr %a1569) - %t1570 = load { ptr, i64, i64 }, ptr %a1567 - store { ptr, i64, i64 } %t1570, ptr %a1572 - store { ptr, i64, i64 } { ptr @.str.5869, i64 96, i64 0 }, ptr %a1573 - call void @finch_str_concat(ptr %a1571, ptr %a1572, ptr %a1573) - store { ptr, i64, i64 } %t1570, ptr %a1574 - call void @finch_str_drop(ptr %a1574) - %t1575 = load { ptr, i64, i64 }, ptr %a1571 - call void @finch.gen.fail(ptr %t1564, %S.ast.Node %t1565, { ptr, i64, i64 } %t1575) - store { ptr, i64, i64 } %t1575, ptr %a1576 - call void @finch_str_drop(ptr %a1576) - call void @finch_str_drop(ptr %a39) - call void @finch_str_drop(ptr %a25) - call void @finch_str_drop(ptr %a19) - call void @finch.drop.S_ast_Type(ptr %a15) - ret %S.gen.Val zeroinitializer -} - -define internal void @finch.gen.dropFrom(ptr %p0, { ptr, i64, i64 } %p1, %S.ast.Type %p2, { ptr, i64, i64 } %p3) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca %S.ast.Type, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca %S.ast.Type, align 16 - %a13 = alloca %S.ast.Type, align 16 - %a15 = alloca %S.ast.Type, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.ast.Type %p2, ptr %a3 - store { ptr, i64, i64 } %p3, ptr %a4 - %t5 = getelementptr inbounds %S.ast.Type, ptr %a3, i32 0, i32 1 - %t6 = load { ptr, i64, i64 }, ptr %t5 - %t7 = extractvalue { ptr, i64, i64 } %t6, 1 - %t8 = icmp uge i64 0, %t7 - br i1 %t8, label %range8966, label %inrange8967 -range8966: - call void @finch_panic_index(ptr @.str.5870, i64 5565, i64 0, i64 %t7) - unreachable -inrange8967: - %t9 = extractvalue { ptr, i64, i64 } %t6, 0 - %t10 = getelementptr inbounds %S.ast.Type, ptr %t9, i64 0 - %t11 = load %S.ast.Type, ptr %t10 - store %S.ast.Type %t11, ptr %a12 - call void @finch.copy.S_ast_Type(ptr %a13, ptr %a12) - %t14 = load %S.ast.Type, ptr %a13 - store %S.ast.Type %t14, ptr %a15 - %t16 = load ptr, ptr %a1 - %t17 = load %S.ast.Type, ptr %a15 - %t18 = call i1 @finch.gen.owning(ptr %t16, %S.ast.Type %t17) - %t19 = xor i1 %t18, true - br i1 %t19, label %then8968, label %endif8970 -then8968: - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -endif8970: - %t20 = load ptr, ptr %a1 - %t21 = load %S.ast.Type, ptr %a15 - %t22 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t20, %S.ast.Type %t21) - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = load ptr, ptr %a1 - %t25 = load ptr, ptr %a1 - %t26 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.5872, i64 46, i64 0 }, ptr %a28 - store { ptr, i64, i64 } %t26, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a27 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5873, i64 14, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - %t36 = call { ptr, i64, i64 } @finch.gen.op(ptr %t25, { ptr, i64, i64 } %t35) - store { ptr, i64, i64 } %t35, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = call { ptr, i64, i64 } @finch.gen.load(ptr %t24, { ptr, i64, i64 } { ptr @.str.5871, i64 3, i64 0 }, { ptr, i64, i64 } %t36) - store { ptr, i64, i64 } %t36, ptr %a39 - call void @finch_str_drop(ptr %a39) - store { ptr, i64, i64 } %t38, ptr %a40 - %t41 = load ptr, ptr %a1 - %t42 = load { ptr, i64, i64 }, ptr %a2 - %t43 = call { ptr, i64, i64 } @finch.gen.load(ptr %t41, { ptr, i64, i64 } { ptr @.str.5874, i64 3, i64 0 }, { ptr, i64, i64 } %t42) - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load ptr, ptr %a1 - %t46 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5875, 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.5876, i64 2, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - %t56 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t55, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t55, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a57 - %t62 = call { ptr, i64, i64 } @finch.gen.op(ptr %t45, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a63 - call void @finch_str_drop(ptr %a63) - store { ptr, i64, i64 } %t62, ptr %a64 - %t65 = load ptr, ptr %a1 - %t66 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.5877, i64 13, i64 0 }, ptr %a68 - store { ptr, i64, i64 } %t66, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - %t70 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t70, ptr %a72 - store { ptr, i64, i64 } { ptr @.str.5878, i64 3, i64 0 }, ptr %a73 - call void @finch_str_concat(ptr %a71, ptr %a72, ptr %a73) - store { ptr, i64, i64 } %t70, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a71 - %t76 = call { ptr, i64, i64 } @finch.gen.op(ptr %t65, { ptr, i64, i64 } %t75) - store { ptr, i64, i64 } %t75, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t76, ptr %a78 - %t79 = load ptr, ptr %a1 - %t80 = load { ptr, i64, i64 }, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.5879, i64 10, i64 0 }, ptr %a82 - store { ptr, i64, i64 } %t80, ptr %a83 - call void @finch_str_concat(ptr %a81, ptr %a82, ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a81 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.5880, i64 6, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - %t90 = load ptr, ptr %a1 - %t91 = load { ptr, i64, i64 }, ptr %a78 - store { ptr, i64, i64 } { ptr @.str.5881, i64 10, i64 0 }, ptr %a93 - store { ptr, i64, i64 } %t91, ptr %a94 - call void @finch_str_concat(ptr %a92, ptr %a93, ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.5882, i64 13, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - %t101 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t100, ptr %a103 - store { ptr, i64, i64 } %t101, ptr %a104 - call void @finch_str_concat(ptr %a102, ptr %a103, ptr %a104) - store { ptr, i64, i64 } %t100, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load { ptr, i64, i64 }, ptr %a102 - %t107 = call { ptr, i64, i64 } @finch.gen.op(ptr %t90, { ptr, i64, i64 } %t106) - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t89, ptr %a110 - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_concat(ptr %a109, ptr %a110, ptr %a111) - store { ptr, i64, i64 } %t89, ptr %a112 - call void @finch_str_drop(ptr %a112) - store { ptr, i64, i64 } %t107, ptr %a113 - call void @finch_str_drop(ptr %a113) - %t114 = load { ptr, i64, i64 }, ptr %a109 - store { ptr, i64, i64 } %t114, ptr %a116 - store { ptr, i64, i64 } { ptr @.str.5883, i64 6, i64 0 }, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - store { ptr, i64, i64 } %t114, ptr %a118 - call void @finch_str_drop(ptr %a118) - %t119 = load { ptr, i64, i64 }, ptr %a115 - %t120 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } %t119, ptr %a122 - store { ptr, i64, i64 } %t120, ptr %a123 - call void @finch_str_concat(ptr %a121, ptr %a122, ptr %a123) - store { ptr, i64, i64 } %t119, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a121 - %t126 = call { ptr, i64, i64 } @finch.gen.op(ptr %t79, { ptr, i64, i64 } %t125) - store { ptr, i64, i64 } %t125, ptr %a127 - call void @finch_str_drop(ptr %a127) - store { ptr, i64, i64 } %t126, ptr %a128 - %t129 = load ptr, ptr %a1 - %t130 = load ptr, ptr %a1 - %t131 = load { ptr, i64, i64 }, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.5884, i64 8, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - %t135 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t135, ptr %a137 - store { ptr, i64, i64 } { ptr @.str.5885, i64 2, i64 0 }, ptr %a138 - call void @finch_str_concat(ptr %a136, ptr %a137, ptr %a138) - store { ptr, i64, i64 } %t135, ptr %a139 - call void @finch_str_drop(ptr %a139) - %t140 = load { ptr, i64, i64 }, ptr %a136 - %t141 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } %t140, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t140, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - %t147 = call { ptr, i64, i64 } @finch.gen.op(ptr %t130, { ptr, i64, i64 } %t146) - store { ptr, i64, i64 } %t146, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = call { ptr, i64, i64 } @finch.gen.loopStart(ptr %t129, { ptr, i64, i64 } %t147) - store { ptr, i64, i64 } %t147, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = load ptr, ptr %a1 - %t153 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.5886, i64 23, i64 0 }, ptr %a155 - store { ptr, i64, i64 } %t153, ptr %a156 - call void @finch_str_concat(ptr %a154, ptr %a155, ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a154 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5887, i64 6, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5888, i64 6, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load ptr, ptr %a1 - %t175 = load { ptr, i64, i64 }, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5889, i64 8, i64 0 }, ptr %a177 - store { ptr, i64, i64 } %t175, ptr %a178 - call void @finch_str_concat(ptr %a176, ptr %a177, ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } %t179, ptr %a181 - store { ptr, i64, i64 } { ptr @.str.5890, i64 2, i64 0 }, ptr %a182 - call void @finch_str_concat(ptr %a180, ptr %a181, ptr %a182) - store { ptr, i64, i64 } %t179, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load { ptr, i64, i64 }, ptr %a180 - %t185 = load { ptr, i64, i64 }, ptr %a151 - %t186 = extractvalue { ptr, i64, i64 } %t185, 1 - %t187 = icmp uge i64 3, %t186 - br i1 %t187, label %range8971, label %inrange8972 -range8971: - call void @finch_panic_index(ptr @.str.5891, i64 5576, i64 3, i64 %t186) - unreachable -inrange8972: - %t188 = extractvalue { ptr, i64, i64 } %t185, 0 - %t189 = getelementptr inbounds { ptr, i64, i64 }, ptr %t188, i64 3 - %t190 = load { ptr, i64, i64 }, ptr %t189 - store { ptr, i64, i64 } %t184, ptr %a192 - store { ptr, i64, i64 } %t190, ptr %a193 - call void @finch_str_concat(ptr %a191, ptr %a192, ptr %a193) - store { ptr, i64, i64 } %t184, ptr %a194 - call void @finch_str_drop(ptr %a194) - %t195 = load { ptr, i64, i64 }, ptr %a191 - %t196 = call { ptr, i64, i64 } @finch.gen.op(ptr %t174, { ptr, i64, i64 } %t195) - store { ptr, i64, i64 } %t195, ptr %a197 - call void @finch_str_drop(ptr %a197) - store { ptr, i64, i64 } %t173, ptr %a199 - store { ptr, i64, i64 } %t196, ptr %a200 - call void @finch_str_concat(ptr %a198, ptr %a199, ptr %a200) - store { ptr, i64, i64 } %t173, ptr %a201 - call void @finch_str_drop(ptr %a201) - store { ptr, i64, i64 } %t196, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a198 - %t204 = call { ptr, i64, i64 } @finch.gen.op(ptr %t152, { ptr, i64, i64 } %t203) - store { ptr, i64, i64 } %t203, ptr %a205 - call void @finch_str_drop(ptr %a205) - store { ptr, i64, i64 } %t204, ptr %a206 - %t207 = load ptr, ptr %a1 - %t208 = load { ptr, i64, i64 }, ptr %a206 - %t209 = load %S.ast.Type, ptr %a15 - call void @finch.gen.dropAt(ptr %t207, { ptr, i64, i64 } %t208, %S.ast.Type %t209) - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a151 - call void @finch.gen.loopEnd(ptr %t210, { ptr, i64, i64 } %t211) - call void @finch_str_drop(ptr %a206) - call void @finch.drop.arr_str(ptr %a151) - call void @finch_str_drop(ptr %a128) - call void @finch_str_drop(ptr %a78) - call void @finch_str_drop(ptr %a64) - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a40) - call void @finch_str_drop(ptr %a23) - call void @finch.drop.S_ast_Type(ptr %a15) - ret void -} - -define internal { ptr, i64, i64 } @finch.gen.cmpFn(ptr %p0, %S.ast.Type %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.ast.Type, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca %S.gen.Saved, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %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 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = 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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a201 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Type %p1, ptr %a2 - %t3 = load %S.ast.Type, ptr %a2 - %t4 = call { ptr, i64, i64 } @finch.gen.typeKey(%S.ast.Type %t3) - store { ptr, i64, i64 } { ptr @.str.5892, i64 11, i64 0 }, ptr %a6 - store { ptr, i64, i64 } %t4, ptr %a7 - call void @finch_str_concat(ptr %a5, ptr %a6, ptr %a7) - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_drop(ptr %a8) - %t9 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t9, ptr %a10 - %t11 = load ptr, ptr %a1 - %t12 = icmp eq ptr %t11, null - br i1 %t12, label %panic8973, label %ok8974 -panic8973: - call void @finch_panic(ptr @.str.5893, i64 5584, ptr @.str.5894) - unreachable -ok8974: - %t13 = getelementptr inbounds %S.gen.Gen, ptr %t11, i32 0, i32 23 - %t14 = load { ptr, i64, i64 }, ptr %t13 - %t15 = load { ptr, i64, i64 }, ptr %a10 - %t16 = call i1 @finch.gen.has({ ptr, i64, i64 } %t14, { ptr, i64, i64 } %t15) - br i1 %t16, label %then8975, label %endif8977 -then8975: - %t17 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t17 -endif8977: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic8978, label %ok8979 -panic8978: - call void @finch_panic(ptr @.str.5895, i64 5587, ptr @.str.5896) - unreachable -ok8979: - %t20 = getelementptr inbounds %S.gen.Gen, ptr %t18, i32 0, i32 23 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i32 0, i32 1 - %t22 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_copy(ptr %a24, ptr %a23) - %t25 = load { ptr, i64, i64 }, ptr %a24 - %t26 = load i64, ptr %t21 - %t27 = add i64 %t26, 1 - call void @finch_arr_reserve(ptr %t20, i64 %t27, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t28 = load ptr, ptr %t20 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t28, i64 %t26 - store { ptr, i64, i64 } %t25, ptr %t29 - store i64 %t27, ptr %t21 - %t30 = load ptr, ptr %a1 - %t31 = call %S.gen.Saved @finch.gen.beginHelper(ptr %t30) - store %S.gen.Saved %t31, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.5897, i64 0, i64 0 }, ptr %a33 - %t34 = getelementptr inbounds %S.ast.Type, ptr %a2, i32 0, i32 0 - %t35 = load { ptr, i64, i64 }, ptr %t34 - store { ptr, i64, i64 } %t35, ptr %a36 - store { ptr, i64, i64 } { ptr @.str.5898, 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 %then8980, label %else8981 -then8980: - %t40 = load ptr, ptr %a1 - %t41 = call { ptr, i64, i64 } @finch.gen.op(ptr %t40, { ptr, i64, i64 } { ptr @.str.5899, i64 39, i64 0 }) - store { ptr, i64, i64 } %t41, ptr %a42 - %t43 = load ptr, ptr %a1 - %t44 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.5900, i64 10, i64 0 }, ptr %a46 - store { ptr, i64, i64 } %t44, ptr %a47 - call void @finch_str_concat(ptr %a45, ptr %a46, ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.5901, i64 7, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.op(ptr %t43, { ptr, i64, i64 } %t53) - store { ptr, i64, i64 } %t53, ptr %a55 - call void @finch_str_drop(ptr %a55) - %t56 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t54, ptr %a33 - store { ptr, i64, i64 } %t56, ptr %a57 - call void @finch_str_drop(ptr %a57) - call void @finch_str_drop(ptr %a42) - br label %endif8982 -else8981: - %t58 = load ptr, ptr %a1 - %t59 = load %S.ast.Type, ptr %a2 - %t60 = call { ptr, i64, i64 } @finch.gen.llty(ptr %t58, %S.ast.Type %t59) - store { ptr, i64, i64 } %t60, ptr %a61 - %t62 = load ptr, ptr %a1 - %t63 = load { ptr, i64, i64 }, ptr %a61 - %t64 = call { ptr, i64, i64 } @finch.gen.load(ptr %t62, { ptr, i64, i64 } %t63, { ptr, i64, i64 } { ptr @.str.5902, i64 2, i64 0 }) - store { ptr, i64, i64 } %t64, ptr %a65 - %t66 = load ptr, ptr %a1 - %t67 = load { ptr, i64, i64 }, ptr %a61 - %t68 = call { ptr, i64, i64 } @finch.gen.load(ptr %t66, { ptr, i64, i64 } %t67, { ptr, i64, i64 } { ptr @.str.5903, i64 2, i64 0 }) - store { ptr, i64, i64 } %t68, ptr %a69 - store { ptr, i64, i64 } { ptr @.str.5904, i64 0, i64 0 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5905, i64 0, i64 0 }, ptr %a71 - %t72 = load %S.ast.Type, ptr %a2 - %t73 = call i1 @finch.gen.isFloat(%S.ast.Type %t72) - br i1 %t73, label %then8983, label %else8984 -then8983: - %t74 = load ptr, ptr %a1 - %t75 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5906, 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.5907, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - %t85 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t84, ptr %a87 - store { ptr, i64, i64 } %t85, ptr %a88 - call void @finch_str_concat(ptr %a86, ptr %a87, ptr %a88) - store { ptr, i64, i64 } %t84, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t90, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.5908, i64 2, i64 0 }, ptr %a93 - call void @finch_str_concat(ptr %a91, ptr %a92, ptr %a93) - store { ptr, i64, i64 } %t90, ptr %a94 - call void @finch_str_drop(ptr %a94) - %t95 = load { ptr, i64, i64 }, ptr %a91 - %t96 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t95, ptr %a98 - store { ptr, i64, i64 } %t96, ptr %a99 - call void @finch_str_concat(ptr %a97, ptr %a98, ptr %a99) - store { ptr, i64, i64 } %t95, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a97 - %t102 = call { ptr, i64, i64 } @finch.gen.op(ptr %t74, { ptr, i64, i64 } %t101) - store { ptr, i64, i64 } %t101, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t102, ptr %a70 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - %t106 = load ptr, ptr %a1 - %t107 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.5909, i64 9, i64 0 }, ptr %a109 - store { ptr, i64, i64 } %t107, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - %t111 = load { ptr, i64, i64 }, ptr %a108 - store { ptr, i64, i64 } %t111, ptr %a113 - store { ptr, i64, i64 } { ptr @.str.5910, i64 1, i64 0 }, ptr %a114 - call void @finch_str_concat(ptr %a112, ptr %a113, ptr %a114) - store { ptr, i64, i64 } %t111, ptr %a115 - call void @finch_str_drop(ptr %a115) - %t116 = load { ptr, i64, i64 }, ptr %a112 - %t117 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t116, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t116, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t122, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.5911, i64 2, i64 0 }, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - store { ptr, i64, i64 } %t122, ptr %a126 - call void @finch_str_drop(ptr %a126) - %t127 = load { ptr, i64, i64 }, ptr %a123 - %t128 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t127, ptr %a130 - store { ptr, i64, i64 } %t128, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t127, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - %t134 = call { ptr, i64, i64 } @finch.gen.op(ptr %t106, { ptr, i64, i64 } %t133) - store { ptr, i64, i64 } %t133, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t134, ptr %a71 - store { ptr, i64, i64 } %t136, ptr %a137 - call void @finch_str_drop(ptr %a137) - br label %endif8985 -else8984: - %t138 = load ptr, ptr %a1 - %t139 = load %S.ast.Type, ptr %a2 - %t140 = call i1 @finch.gen.isSigned(%S.ast.Type %t139) - %t141 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5913, i64 1, i64 0 }, i1 %t140) - store { ptr, i64, i64 } { ptr @.str.5912, i64 5, i64 0 }, ptr %a143 - store { ptr, i64, i64 } %t141, ptr %a144 - call void @finch_str_concat(ptr %a142, ptr %a143, ptr %a144) - store { ptr, i64, i64 } %t141, ptr %a145 - call void @finch_str_drop(ptr %a145) - %t146 = load { ptr, i64, i64 }, ptr %a142 - store { ptr, i64, i64 } %t146, ptr %a148 - store { ptr, i64, i64 } { ptr @.str.5914, i64 1, i64 0 }, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t146, ptr %a150 - call void @finch_str_drop(ptr %a150) - %t151 = load { ptr, i64, i64 }, ptr %a147 - %t152 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t151, ptr %a154 - store { ptr, i64, i64 } %t152, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t151, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - store { ptr, i64, i64 } %t157, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.5915, i64 1, i64 0 }, ptr %a160 - call void @finch_str_concat(ptr %a158, ptr %a159, ptr %a160) - store { ptr, i64, i64 } %t157, ptr %a161 - call void @finch_str_drop(ptr %a161) - %t162 = load { ptr, i64, i64 }, ptr %a158 - %t163 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t162, ptr %a165 - store { ptr, i64, i64 } %t163, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t162, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - store { ptr, i64, i64 } %t168, ptr %a170 - store { ptr, i64, i64 } { ptr @.str.5916, i64 2, i64 0 }, ptr %a171 - call void @finch_str_concat(ptr %a169, ptr %a170, ptr %a171) - store { ptr, i64, i64 } %t168, ptr %a172 - call void @finch_str_drop(ptr %a172) - %t173 = load { ptr, i64, i64 }, ptr %a169 - %t174 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t173, ptr %a176 - store { ptr, i64, i64 } %t174, ptr %a177 - call void @finch_str_concat(ptr %a175, ptr %a176, ptr %a177) - store { ptr, i64, i64 } %t173, ptr %a178 - call void @finch_str_drop(ptr %a178) - %t179 = load { ptr, i64, i64 }, ptr %a175 - %t180 = call { ptr, i64, i64 } @finch.gen.op(ptr %t138, { ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - %t182 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t180, ptr %a70 - store { ptr, i64, i64 } %t182, ptr %a183 - call void @finch_str_drop(ptr %a183) - %t184 = load ptr, ptr %a1 - %t185 = load %S.ast.Type, ptr %a2 - %t186 = call i1 @finch.gen.isSigned(%S.ast.Type %t185) - %t187 = call { ptr, i64, i64 } @finch.gen.intPred({ ptr, i64, i64 } { ptr @.str.5918, i64 1, i64 0 }, i1 %t186) - store { ptr, i64, i64 } { ptr @.str.5917, i64 5, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - store { ptr, i64, i64 } %t187, ptr %a191 - call void @finch_str_drop(ptr %a191) - %t192 = load { ptr, i64, i64 }, ptr %a188 - store { ptr, i64, i64 } %t192, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.5919, i64 1, i64 0 }, ptr %a195 - call void @finch_str_concat(ptr %a193, ptr %a194, ptr %a195) - store { ptr, i64, i64 } %t192, ptr %a196 - call void @finch_str_drop(ptr %a196) - %t197 = load { ptr, i64, i64 }, ptr %a193 - %t198 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t197, ptr %a200 - store { ptr, i64, i64 } %t198, ptr %a201 - call void @finch_str_concat(ptr %a199, ptr %a200, ptr %a201) - store { ptr, i64, i64 } %t197, ptr %a202 - call void @finch_str_drop(ptr %a202) - %t203 = load { ptr, i64, i64 }, ptr %a199 - store { ptr, i64, i64 } %t203, ptr %a205 - store { ptr, i64, i64 } { ptr @.str.5920, i64 1, i64 0 }, ptr %a206 - call void @finch_str_concat(ptr %a204, ptr %a205, ptr %a206) - store { ptr, i64, i64 } %t203, ptr %a207 - call void @finch_str_drop(ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a204 - %t209 = load { ptr, i64, i64 }, ptr %a65 - store { ptr, i64, i64 } %t208, ptr %a211 - store { ptr, i64, i64 } %t209, ptr %a212 - call void @finch_str_concat(ptr %a210, ptr %a211, ptr %a212) - store { ptr, i64, i64 } %t208, ptr %a213 - call void @finch_str_drop(ptr %a213) - %t214 = load { ptr, i64, i64 }, ptr %a210 - store { ptr, i64, i64 } %t214, ptr %a216 - store { ptr, i64, i64 } { ptr @.str.5921, i64 2, i64 0 }, ptr %a217 - call void @finch_str_concat(ptr %a215, ptr %a216, ptr %a217) - store { ptr, i64, i64 } %t214, ptr %a218 - call void @finch_str_drop(ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a215 - %t220 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t219, ptr %a222 - store { ptr, i64, i64 } %t220, ptr %a223 - call void @finch_str_concat(ptr %a221, ptr %a222, ptr %a223) - store { ptr, i64, i64 } %t219, ptr %a224 - call void @finch_str_drop(ptr %a224) - %t225 = load { ptr, i64, i64 }, ptr %a221 - %t226 = call { ptr, i64, i64 } @finch.gen.op(ptr %t184, { ptr, i64, i64 } %t225) - store { ptr, i64, i64 } %t225, ptr %a227 - call void @finch_str_drop(ptr %a227) - %t228 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } %t226, ptr %a71 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch_str_drop(ptr %a229) - br label %endif8985 -endif8985: - %t230 = load ptr, ptr %a1 - %t231 = load ptr, ptr %a1 - %t232 = load { ptr, i64, i64 }, ptr %a71 - store { ptr, i64, i64 } { ptr @.str.5923, i64 8, i64 0 }, ptr %a234 - store { ptr, i64, i64 } %t232, ptr %a235 - call void @finch_str_concat(ptr %a233, ptr %a234, ptr %a235) - %t236 = load { ptr, i64, i64 }, ptr %a233 - store { ptr, i64, i64 } %t236, ptr %a238 - store { ptr, i64, i64 } { ptr @.str.5924, i64 7, i64 0 }, ptr %a239 - call void @finch_str_concat(ptr %a237, ptr %a238, ptr %a239) - store { ptr, i64, i64 } %t236, ptr %a240 - call void @finch_str_drop(ptr %a240) - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = call { ptr, i64, i64 } @finch.gen.op(ptr %t231, { ptr, i64, i64 } %t241) - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_drop(ptr %a243) - store { ptr, i64, i64 } { ptr @.str.5922, i64 8, i64 0 }, ptr %a245 - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_concat(ptr %a244, ptr %a245, ptr %a246) - store { ptr, i64, i64 } %t242, ptr %a247 - call void @finch_str_drop(ptr %a247) - %t248 = load { ptr, i64, i64 }, ptr %a244 - store { ptr, i64, i64 } %t248, ptr %a250 - store { ptr, i64, i64 } { ptr @.str.5925, i64 2, i64 0 }, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t248, ptr %a252 - call void @finch_str_drop(ptr %a252) - %t253 = load { ptr, i64, i64 }, ptr %a249 - %t254 = load ptr, ptr %a1 - %t255 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } { ptr @.str.5926, i64 8, i64 0 }, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.5927, i64 7, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - store { ptr, i64, i64 } %t259, ptr %a263 - call void @finch_str_drop(ptr %a263) - %t264 = load { ptr, i64, i64 }, ptr %a260 - %t265 = call { ptr, i64, i64 } @finch.gen.op(ptr %t254, { ptr, i64, i64 } %t264) - store { ptr, i64, i64 } %t264, ptr %a266 - call void @finch_str_drop(ptr %a266) - store { ptr, i64, i64 } %t253, ptr %a268 - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_concat(ptr %a267, ptr %a268, ptr %a269) - store { ptr, i64, i64 } %t253, ptr %a270 - call void @finch_str_drop(ptr %a270) - store { ptr, i64, i64 } %t265, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a267 - %t273 = call { ptr, i64, i64 } @finch.gen.op(ptr %t230, { ptr, i64, i64 } %t272) - store { ptr, i64, i64 } %t272, ptr %a274 - call void @finch_str_drop(ptr %a274) - %t275 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t273, ptr %a33 - store { ptr, i64, i64 } %t275, ptr %a276 - call void @finch_str_drop(ptr %a276) - call void @finch_str_drop(ptr %a71) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a69) - call void @finch_str_drop(ptr %a65) - call void @finch_str_drop(ptr %a61) - br label %endif8982 -endif8982: - %t277 = load ptr, ptr %a1 - %t278 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.5928, i64 8, i64 0 }, ptr %a280 - store { ptr, i64, i64 } %t278, ptr %a281 - call void @finch_str_concat(ptr %a279, ptr %a280, ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a279 - call void @finch.gen.emit(ptr %t277, { ptr, i64, i64 } %t282) - store { ptr, i64, i64 } %t282, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load ptr, ptr %a1 - %t285 = load %S.gen.Saved, ptr %a32 - %t286 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } { ptr @.str.5929, i64 20, i64 0 }, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a292 - store { ptr, i64, i64 } { ptr @.str.5930, i64 16, i64 0 }, ptr %a293 - call void @finch_str_concat(ptr %a291, ptr %a292, ptr %a293) - store { ptr, i64, i64 } %t290, ptr %a294 - call void @finch_str_drop(ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a291 - call void @finch.gen.endHelper(ptr %t284, %S.gen.Saved %t285, { ptr, i64, i64 } %t295) - store { ptr, i64, i64 } %t295, ptr %a296 - call void @finch_str_drop(ptr %a296) - %t297 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a33) - call void @finch.drop.S_gen_Saved(ptr %a32) - ret { ptr, i64, i64 } %t297 -} - -define internal %S.gen.Val @finch.gen.strMethod(ptr %p0, %S.ast.Node %p1, { ptr, i64, i64 } %p2) { -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 - %a53 = alloca %S.gen.Val, align 16 - %a54 = alloca %S.ast.Type, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca %S.gen.Val, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca %S.gen.Val, align 16 - %a81 = alloca %S.ast.Type, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca %S.gen.Val, 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 - %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 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a154 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca %S.gen.Val, align 16 - %a204 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a308 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a319 = alloca { ptr, i64, i64 }, align 16 - %a320 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a323 = alloca { ptr, i64, i64 }, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a328 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a333 = alloca { ptr, i64, i64 }, align 16 - %a334 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a348 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a358 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a370 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a400 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a406 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca %S.gen.Val, align 16 - %a446 = alloca i64, align 16 - %a458 = alloca %S.gen.Val, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a476 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a481 = alloca { ptr, i64, i64 }, align 16 - %a482 = alloca { ptr, i64, i64 }, align 16 - %a483 = alloca { ptr, i64, i64 }, align 16 - %a484 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a499 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a504 = alloca { ptr, i64, i64 }, align 16 - %a505 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a541 = alloca %S.gen.Val, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a551 = alloca { ptr, i64, i64 }, align 16 - %a552 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a555 = alloca { ptr, i64, i64 }, align 16 - %a556 = alloca { ptr, i64, i64 }, align 16 - %a557 = alloca { ptr, i64, i64 }, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a561 = alloca { ptr, i64, i64 }, align 16 - %a562 = alloca { ptr, i64, i64 }, align 16 - %a563 = alloca { ptr, i64, i64 }, align 16 - %a564 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a568 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a573 = alloca { ptr, i64, i64 }, align 16 - %a574 = alloca { ptr, i64, i64 }, align 16 - %a575 = alloca { ptr, i64, i64 }, align 16 - %a577 = alloca { ptr, i64, i64 }, align 16 - %a578 = alloca { ptr, i64, i64 }, align 16 - %a579 = alloca { ptr, i64, i64 }, align 16 - %a580 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a591 = alloca %S.ast.Type, align 16 - %a595 = alloca { ptr, i64, i64 }, align 16 - %a596 = alloca { ptr, i64, i64 }, align 16 - %a620 = alloca %S.gen.Val, align 16 - %a621 = alloca %S.ast.Type, align 16 - %a623 = alloca { ptr, i64, i64 }, align 16 - %a624 = alloca { ptr, i64, i64 }, align 16 - %a626 = alloca %S.gen.Val, align 16 - %a627 = alloca { ptr, i64, i64 }, align 16 - %a630 = alloca { ptr, i64, i64 }, align 16 - %a631 = alloca { ptr, i64, i64 }, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a634 = alloca { ptr, i64, i64 }, align 16 - %a635 = alloca { ptr, i64, i64 }, align 16 - %a636 = alloca { ptr, i64, i64 }, align 16 - %a637 = alloca { ptr, i64, i64 }, align 16 - %a640 = alloca { ptr, i64, i64 }, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a642 = alloca { ptr, i64, i64 }, align 16 - %a643 = alloca { ptr, i64, i64 }, align 16 - %a645 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca { ptr, i64, i64 }, align 16 - %a647 = alloca { ptr, i64, i64 }, align 16 - %a648 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca { ptr, i64, i64 }, align 16 - %a652 = alloca { ptr, i64, i64 }, align 16 - %a653 = alloca { ptr, i64, i64 }, align 16 - %a654 = alloca { ptr, i64, i64 }, align 16 - %a656 = alloca { ptr, i64, i64 }, align 16 - %a657 = alloca { ptr, i64, i64 }, align 16 - %a658 = alloca { ptr, i64, i64 }, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a661 = alloca { ptr, i64, i64 }, align 16 - %a670 = alloca { ptr, i64, i64 }, align 16 - %a671 = alloca { ptr, i64, i64 }, align 16 - %a678 = alloca { ptr, i64, i64 }, align 16 - %a681 = alloca { ptr, i64, i64 }, align 16 - %a682 = alloca { ptr, i64, i64 }, align 16 - %a683 = alloca { ptr, i64, i64 }, align 16 - %a685 = alloca { ptr, i64, i64 }, align 16 - %a686 = alloca { ptr, i64, i64 }, align 16 - %a687 = alloca { ptr, i64, i64 }, align 16 - %a688 = alloca { ptr, i64, i64 }, align 16 - %a691 = alloca { ptr, i64, i64 }, align 16 - %a692 = alloca { ptr, i64, i64 }, align 16 - %a693 = alloca { ptr, i64, i64 }, align 16 - %a694 = alloca { ptr, i64, i64 }, align 16 - %a696 = alloca { ptr, i64, i64 }, align 16 - %a697 = alloca { ptr, i64, i64 }, align 16 - %a698 = alloca { ptr, i64, i64 }, align 16 - %a699 = alloca { ptr, i64, i64 }, align 16 - %a701 = alloca { ptr, i64, i64 }, align 16 - %a708 = alloca %S.ast.Type, align 16 - %a714 = alloca { ptr, i64, i64 }, align 16 - %a715 = alloca { ptr, i64, i64 }, align 16 - %a716 = alloca { ptr, i64, i64 }, align 16 - %a718 = alloca { ptr, i64, i64 }, align 16 - %a719 = alloca { ptr, i64, i64 }, align 16 - %a720 = alloca { ptr, i64, i64 }, align 16 - %a721 = alloca { ptr, i64, i64 }, align 16 - %a723 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store %S.ast.Node %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %panic8986, label %ok8987 -panic8986: - call void @finch_panic(ptr @.str.5931, i64 5616, ptr @.str.5932) - unreachable -ok8987: - %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 %range8988, label %inrange8989 -range8988: - call void @finch_panic_index(ptr @.str.5933, i64 5616, i64 %t18, i64 %t20) - unreachable -inrange8989: - %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.5934, 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 %then8990, label %endif8992 -then8990: - %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 %range8993, label %inrange8994 -range8993: - call void @finch_panic_index(ptr @.str.5935, i64 5619, i64 1, i64 %t38) - unreachable -inrange8994: - %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.5936, 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 %range8995, label %inrange8996 -range8995: - call void @finch_panic_index(ptr @.str.5937, i64 5619, i64 1, i64 %t47) - unreachable -inrange8996: - %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.5938, i64 9, i64 0 }) - store %S.gen.Val %t43, ptr %a53 - call void @finch.drop.S_gen_Val(ptr %a53) - store %S.ast.Type %t44, ptr %a54 - call void @finch.drop.S_ast_Type(ptr %a54) - %t55 = extractvalue %S.gen.Val %t52, 0 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_copy(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - store %S.gen.Val %t52, ptr %a59 - call void @finch.drop.S_gen_Val(ptr %a59) - store { ptr, i64, i64 } %t58, ptr %a60 - %t61 = load ptr, ptr %a1 - %t62 = load ptr, ptr %a1 - %t63 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t64 = load { ptr, i64, i64 }, ptr %t63 - %t65 = extractvalue { ptr, i64, i64 } %t64, 1 - %t66 = icmp uge i64 2, %t65 - br i1 %t66, label %range8997, label %inrange8998 -range8997: - call void @finch_panic_index(ptr @.str.5939, i64 5620, i64 2, i64 %t65) - unreachable -inrange8998: - %t67 = extractvalue { ptr, i64, i64 } %t64, 0 - %t68 = getelementptr inbounds %S.ast.Node, ptr %t67, i64 2 - %t69 = load %S.ast.Node, ptr %t68 - %t70 = call %S.gen.Val @finch.gen.expr(ptr %t62, %S.ast.Node %t69) - %t71 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5940, i64 3, i64 0 }) - %t72 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t73 = load { ptr, i64, i64 }, ptr %t72 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 2, %t74 - br i1 %t75, label %range8999, label %inrange9000 -range8999: - call void @finch_panic_index(ptr @.str.5941, i64 5620, i64 2, i64 %t74) - unreachable -inrange9000: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds %S.ast.Node, ptr %t76, i64 2 - %t78 = load %S.ast.Node, ptr %t77 - %t79 = call %S.gen.Val @finch.gen.coerce(ptr %t61, %S.gen.Val %t70, %S.ast.Type %t71, %S.ast.Node %t78, { ptr, i64, i64 } { ptr @.str.5942, i64 7, i64 0 }) - store %S.gen.Val %t70, ptr %a80 - call void @finch.drop.S_gen_Val(ptr %a80) - store %S.ast.Type %t71, ptr %a81 - call void @finch.drop.S_ast_Type(ptr %a81) - %t82 = extractvalue %S.gen.Val %t79, 0 - store { ptr, i64, i64 } %t82, ptr %a83 - call void @finch_str_copy(ptr %a84, ptr %a83) - %t85 = load { ptr, i64, i64 }, ptr %a84 - store %S.gen.Val %t79, ptr %a86 - call void @finch.drop.S_gen_Val(ptr %a86) - store { ptr, i64, i64 } %t85, ptr %a87 - %t88 = load ptr, ptr %a1 - %t89 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5943, i64 29, i64 0 }, ptr %a91 - store { ptr, i64, i64 } %t89, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a90 - store { ptr, i64, i64 } %t93, ptr %a95 - store { ptr, i64, i64 } { ptr @.str.5944, i64 6, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t98, ptr %a101 - store { ptr, i64, i64 } %t99, ptr %a102 - call void @finch_str_concat(ptr %a100, ptr %a101, ptr %a102) - store { ptr, i64, i64 } %t98, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t104, ptr %a106 - store { ptr, i64, i64 } { ptr @.str.5945, i64 6, i64 0 }, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t104, ptr %a108 - call void @finch_str_drop(ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a105 - %t110 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t109, ptr %a112 - store { ptr, i64, i64 } %t110, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t109, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - store { ptr, i64, i64 } %t115, ptr %a117 - store { ptr, i64, i64 } { ptr @.str.5946, i64 6, i64 0 }, ptr %a118 - call void @finch_str_concat(ptr %a116, ptr %a117, ptr %a118) - store { ptr, i64, i64 } %t115, ptr %a119 - call void @finch_str_drop(ptr %a119) - %t120 = load { ptr, i64, i64 }, ptr %a116 - %t121 = load { ptr, i64, i64 }, ptr %a87 - store { ptr, i64, i64 } %t120, ptr %a123 - store { ptr, i64, i64 } %t121, ptr %a124 - call void @finch_str_concat(ptr %a122, ptr %a123, ptr %a124) - store { ptr, i64, i64 } %t120, ptr %a125 - call void @finch_str_drop(ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t126, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.5947, i64 6, i64 0 }, ptr %a129 - call void @finch_str_concat(ptr %a127, ptr %a128, ptr %a129) - store { ptr, i64, i64 } %t126, ptr %a130 - call void @finch_str_drop(ptr %a130) - %t131 = load { ptr, i64, i64 }, ptr %a127 - %t132 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t131, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t131, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.5948, i64 6, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 11 - %t144 = load i64, ptr %t143 - call void @finch_str_from_int(ptr %a145, i64 %t144) - %t146 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t142, ptr %a148 - store { ptr, i64, i64 } %t146, ptr %a149 - call void @finch_str_concat(ptr %a147, ptr %a148, ptr %a149) - store { ptr, i64, i64 } %t142, ptr %a150 - call void @finch_str_drop(ptr %a150) - store { ptr, i64, i64 } %t146, ptr %a151 - call void @finch_str_drop(ptr %a151) - %t152 = load { ptr, i64, i64 }, ptr %a147 - store { ptr, i64, i64 } %t152, ptr %a154 - store { ptr, i64, i64 } { ptr @.str.5949, i64 1, i64 0 }, ptr %a155 - call void @finch_str_concat(ptr %a153, ptr %a154, ptr %a155) - store { ptr, i64, i64 } %t152, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a153 - call void @finch.gen.emit(ptr %t88, { ptr, i64, i64 } %t157) - store { ptr, i64, i64 } %t157, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load ptr, ptr %a1 - %t160 = load { ptr, i64, i64 }, ptr %a12 - %t161 = call { ptr, i64, i64 } @finch.gen.load(ptr %t159, { ptr, i64, i64 } { ptr @.str.5950, i64 17, i64 0 }, { ptr, i64, i64 } %t160) - %t162 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t161, 0 - %t163 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5951, i64 3, i64 0 }) - %t164 = insertvalue %S.gen.Val %t162, %S.ast.Type %t163, 1 - %t165 = insertvalue %S.gen.Val %t164, i1 true, 2 - call void @finch_str_drop(ptr %a87) - call void @finch_str_drop(ptr %a60) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t165 -endif8992: - %t166 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t166, ptr %a167 - store { ptr, i64, i64 } { ptr @.str.5952, i64 4, i64 0 }, ptr %a168 - %t169 = call i32 @finch_str_eq(ptr %a167, ptr %a168) - %t170 = icmp ne i32 %t169, 0 - br label %logic.from9001 -logic.from9001: - br i1 %t170, label %logic.end9003, label %logic.rhs9002 -logic.rhs9002: - %t171 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.5953, i64 8, i64 0 }, ptr %a173 - %t174 = call i32 @finch_str_eq(ptr %a172, ptr %a173) - %t175 = icmp ne i32 %t174, 0 - br label %logic.rend9004 -logic.rend9004: - br label %logic.end9003 -logic.end9003: - %t176 = phi i1 [ true, %logic.from9001 ], [ %t175, %logic.rend9004 ] - br label %logic.from9005 -logic.from9005: - br i1 %t176, label %logic.end9007, label %logic.rhs9006 -logic.rhs9006: - %t177 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t177, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.5954, i64 11, i64 0 }, ptr %a179 - %t180 = call i32 @finch_str_eq(ptr %a178, ptr %a179) - %t181 = icmp ne i32 %t180, 0 - br label %logic.rend9008 -logic.rend9008: - br label %logic.end9007 -logic.end9007: - %t182 = phi i1 [ true, %logic.from9005 ], [ %t181, %logic.rend9008 ] - br label %logic.from9009 -logic.from9009: - br i1 %t182, label %logic.end9011, label %logic.rhs9010 -logic.rhs9010: - %t183 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t183, ptr %a184 - store { ptr, i64, i64 } { ptr @.str.5955, i64 9, i64 0 }, ptr %a185 - %t186 = call i32 @finch_str_eq(ptr %a184, ptr %a185) - %t187 = icmp ne i32 %t186, 0 - br label %logic.rend9012 -logic.rend9012: - br label %logic.end9011 -logic.end9011: - %t188 = phi i1 [ true, %logic.from9009 ], [ %t187, %logic.rend9012 ] - br i1 %t188, label %then9013, label %endif9015 -then9013: - %t189 = load ptr, ptr %a1 - %t190 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t189, %S.ast.Node %t190, i64 1) - %t191 = load ptr, ptr %a1 - %t192 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t193 = load { ptr, i64, i64 }, ptr %t192 - %t194 = extractvalue { ptr, i64, i64 } %t193, 1 - %t195 = icmp uge i64 1, %t194 - br i1 %t195, label %range9016, label %inrange9017 -range9016: - call void @finch_panic_index(ptr @.str.5956, i64 5626, i64 1, i64 %t194) - unreachable -inrange9017: - %t196 = extractvalue { ptr, i64, i64 } %t193, 0 - %t197 = getelementptr inbounds %S.ast.Node, ptr %t196, i64 1 - %t198 = load %S.ast.Node, ptr %t197 - %t199 = call %S.gen.Val @finch.gen.strArg(ptr %t191, %S.ast.Node %t198, { ptr, i64, i64 } { ptr @.str.5957, i64 20, i64 0 }) - store %S.gen.Val %t199, ptr %a200 - %t201 = load ptr, ptr %a1 - %t202 = load %S.gen.Val, ptr %a200 - %t203 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t201, %S.gen.Val %t202) - store { ptr, i64, i64 } %t203, ptr %a204 - %t205 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t205, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.5958, i64 4, i64 0 }, ptr %a207 - %t208 = call i32 @finch_str_eq(ptr %a206, ptr %a207) - %t209 = icmp ne i32 %t208, 0 - br i1 %t209, label %then9018, label %endif9020 -then9018: - %t210 = load ptr, ptr %a1 - %t211 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5959, i64 29, i64 0 }, ptr %a213 - store { ptr, i64, i64 } %t211, ptr %a214 - call void @finch_str_concat(ptr %a212, ptr %a213, ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a212 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.5960, i64 6, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t220, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t220, ptr %a225 - call void @finch_str_drop(ptr %a225) - %t226 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t226, ptr %a228 - store { ptr, i64, i64 } { ptr @.str.5961, i64 1, i64 0 }, ptr %a229 - call void @finch_str_concat(ptr %a227, ptr %a228, ptr %a229) - store { ptr, i64, i64 } %t226, ptr %a230 - call void @finch_str_drop(ptr %a230) - %t231 = load { ptr, i64, i64 }, ptr %a227 - %t232 = call { ptr, i64, i64 } @finch.gen.op(ptr %t210, { ptr, i64, i64 } %t231) - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch_str_drop(ptr %a233) - store { ptr, i64, i64 } %t232, ptr %a234 - %t235 = load ptr, ptr %a1 - %t236 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t235, %S.gen.Val %t236) - %t237 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t237, ptr %a238 - call void @finch_str_copy(ptr %a239, ptr %a238) - %t240 = load { ptr, i64, i64 }, ptr %a239 - %t241 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t240, 0 - %t242 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5962, i64 3, i64 0 }) - %t243 = insertvalue %S.gen.Val %t241, %S.ast.Type %t242, 1 - call void @finch_str_drop(ptr %a234) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t243 -endif9020: - %t244 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t244, ptr %a245 - store { ptr, i64, i64 } { ptr @.str.5963, i64 8, i64 0 }, ptr %a246 - %t247 = call i32 @finch_str_eq(ptr %a245, ptr %a246) - %t248 = icmp ne i32 %t247, 0 - br i1 %t248, label %then9021, label %endif9023 -then9021: - %t249 = load ptr, ptr %a1 - %t250 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.5964, i64 29, i64 0 }, ptr %a252 - store { ptr, i64, i64 } %t250, ptr %a253 - call void @finch_str_concat(ptr %a251, ptr %a252, ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a251 - store { ptr, i64, i64 } %t254, ptr %a256 - store { ptr, i64, i64 } { ptr @.str.5965, i64 6, i64 0 }, ptr %a257 - call void @finch_str_concat(ptr %a255, ptr %a256, ptr %a257) - store { ptr, i64, i64 } %t254, ptr %a258 - call void @finch_str_drop(ptr %a258) - %t259 = load { ptr, i64, i64 }, ptr %a255 - %t260 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t259, ptr %a262 - store { ptr, i64, i64 } %t260, ptr %a263 - call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) - store { ptr, i64, i64 } %t259, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a261 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.5966, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = call { ptr, i64, i64 } @finch.gen.op(ptr %t249, { ptr, i64, i64 } %t270) - store { ptr, i64, i64 } %t270, ptr %a272 - call void @finch_str_drop(ptr %a272) - store { ptr, i64, i64 } %t271, ptr %a273 - %t274 = load ptr, ptr %a1 - %t275 = load { ptr, i64, i64 }, ptr %a273 - store { ptr, i64, i64 } { ptr @.str.5967, i64 13, i64 0 }, ptr %a277 - store { ptr, i64, i64 } %t275, ptr %a278 - call void @finch_str_concat(ptr %a276, ptr %a277, ptr %a278) - %t279 = load { ptr, i64, i64 }, ptr %a276 - store { ptr, i64, i64 } %t279, ptr %a281 - store { ptr, i64, i64 } { ptr @.str.5968, i64 3, i64 0 }, ptr %a282 - call void @finch_str_concat(ptr %a280, ptr %a281, ptr %a282) - store { ptr, i64, i64 } %t279, ptr %a283 - call void @finch_str_drop(ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a280 - %t285 = call { ptr, i64, i64 } @finch.gen.op(ptr %t274, { ptr, i64, i64 } %t284) - store { ptr, i64, i64 } %t284, ptr %a286 - call void @finch_str_drop(ptr %a286) - store { ptr, i64, i64 } %t285, ptr %a287 - %t288 = load ptr, ptr %a1 - %t289 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t288, %S.gen.Val %t289) - %t290 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_copy(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - %t294 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t293, 0 - %t295 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5969, i64 4, i64 0 }) - %t296 = insertvalue %S.gen.Val %t294, %S.ast.Type %t295, 1 - call void @finch_str_drop(ptr %a287) - call void @finch_str_drop(ptr %a273) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t296 -endif9023: - store { ptr, i64, i64 } { ptr @.str.5970, i64 17, i64 0 }, ptr %a297 - %t298 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t298, ptr %a299 - store { ptr, i64, i64 } { ptr @.str.5971, i64 9, i64 0 }, ptr %a300 - %t301 = call i32 @finch_str_eq(ptr %a299, ptr %a300) - %t302 = icmp ne i32 %t301, 0 - br i1 %t302, label %then9024, label %endif9026 -then9024: - %t303 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5972, i64 15, i64 0 }, ptr %a297 - store { ptr, i64, i64 } %t303, ptr %a304 - call void @finch_str_drop(ptr %a304) - br label %endif9026 -endif9026: - %t305 = load ptr, ptr %a1 - %t306 = load { ptr, i64, i64 }, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.5973, i64 9, i64 0 }, ptr %a308 - store { ptr, i64, i64 } %t306, ptr %a309 - call void @finch_str_concat(ptr %a307, ptr %a308, ptr %a309) - %t310 = load { ptr, i64, i64 }, ptr %a307 - store { ptr, i64, i64 } %t310, ptr %a312 - store { ptr, i64, i64 } { ptr @.str.5974, i64 5, i64 0 }, ptr %a313 - call void @finch_str_concat(ptr %a311, ptr %a312, ptr %a313) - store { ptr, i64, i64 } %t310, ptr %a314 - call void @finch_str_drop(ptr %a314) - %t315 = load { ptr, i64, i64 }, ptr %a311 - %t316 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t315, ptr %a318 - store { ptr, i64, i64 } %t316, ptr %a319 - call void @finch_str_concat(ptr %a317, ptr %a318, ptr %a319) - store { ptr, i64, i64 } %t315, ptr %a320 - call void @finch_str_drop(ptr %a320) - %t321 = load { ptr, i64, i64 }, ptr %a317 - store { ptr, i64, i64 } %t321, ptr %a323 - store { ptr, i64, i64 } { ptr @.str.5975, i64 6, i64 0 }, ptr %a324 - call void @finch_str_concat(ptr %a322, ptr %a323, ptr %a324) - store { ptr, i64, i64 } %t321, ptr %a325 - call void @finch_str_drop(ptr %a325) - %t326 = load { ptr, i64, i64 }, ptr %a322 - %t327 = load { ptr, i64, i64 }, ptr %a204 - store { ptr, i64, i64 } %t326, ptr %a329 - store { ptr, i64, i64 } %t327, ptr %a330 - call void @finch_str_concat(ptr %a328, ptr %a329, ptr %a330) - store { ptr, i64, i64 } %t326, ptr %a331 - call void @finch_str_drop(ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a328 - store { ptr, i64, i64 } %t332, ptr %a334 - store { ptr, i64, i64 } { ptr @.str.5976, i64 1, i64 0 }, ptr %a335 - call void @finch_str_concat(ptr %a333, ptr %a334, ptr %a335) - store { ptr, i64, i64 } %t332, ptr %a336 - call void @finch_str_drop(ptr %a336) - %t337 = load { ptr, i64, i64 }, ptr %a333 - %t338 = call { ptr, i64, i64 } @finch.gen.op(ptr %t305, { ptr, i64, i64 } %t337) - store { ptr, i64, i64 } %t337, ptr %a339 - call void @finch_str_drop(ptr %a339) - store { ptr, i64, i64 } %t338, ptr %a340 - %t341 = load ptr, ptr %a1 - %t342 = load { ptr, i64, i64 }, ptr %a340 - store { ptr, i64, i64 } { ptr @.str.5977, i64 12, i64 0 }, ptr %a344 - store { ptr, i64, i64 } %t342, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - %t346 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t346, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.5978, i64 3, i64 0 }, ptr %a349 - call void @finch_str_concat(ptr %a347, ptr %a348, ptr %a349) - store { ptr, i64, i64 } %t346, ptr %a350 - call void @finch_str_drop(ptr %a350) - %t351 = load { ptr, i64, i64 }, ptr %a347 - %t352 = call { ptr, i64, i64 } @finch.gen.op(ptr %t341, { ptr, i64, i64 } %t351) - store { ptr, i64, i64 } %t351, ptr %a353 - call void @finch_str_drop(ptr %a353) - store { ptr, i64, i64 } %t352, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = load %S.gen.Val, ptr %a200 - call void @finch.gen.release(ptr %t355, %S.gen.Val %t356) - %t357 = load { ptr, i64, i64 }, ptr %a354 - store { ptr, i64, i64 } %t357, ptr %a358 - call void @finch_str_copy(ptr %a359, ptr %a358) - %t360 = load { ptr, i64, i64 }, ptr %a359 - %t361 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t360, 0 - %t362 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5979, i64 4, i64 0 }) - %t363 = insertvalue %S.gen.Val %t361, %S.ast.Type %t362, 1 - call void @finch_str_drop(ptr %a354) - call void @finch_str_drop(ptr %a340) - call void @finch_str_drop(ptr %a297) - call void @finch_str_drop(ptr %a204) - call void @finch.drop.S_gen_Val(ptr %a200) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t363 -endif9015: - %t364 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t364, ptr %a365 - store { ptr, i64, i64 } { ptr @.str.5980, i64 4, i64 0 }, ptr %a366 - %t367 = call i32 @finch_str_eq(ptr %a365, ptr %a366) - %t368 = icmp ne i32 %t367, 0 - br label %logic.from9027 -logic.from9027: - br i1 %t368, label %logic.end9029, label %logic.rhs9028 -logic.rhs9028: - %t369 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t369, ptr %a370 - store { ptr, i64, i64 } { ptr @.str.5981, i64 5, i64 0 }, ptr %a371 - %t372 = call i32 @finch_str_eq(ptr %a370, ptr %a371) - %t373 = icmp ne i32 %t372, 0 - br label %logic.rend9030 -logic.rend9030: - br label %logic.end9029 -logic.end9029: - %t374 = phi i1 [ true, %logic.from9027 ], [ %t373, %logic.rend9030 ] - br label %logic.from9031 -logic.from9031: - br i1 %t374, label %logic.end9033, label %logic.rhs9032 -logic.rhs9032: - %t375 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t375, ptr %a376 - store { ptr, i64, i64 } { ptr @.str.5982, i64 5, i64 0 }, ptr %a377 - %t378 = call i32 @finch_str_eq(ptr %a376, ptr %a377) - %t379 = icmp ne i32 %t378, 0 - br label %logic.rend9034 -logic.rend9034: - br label %logic.end9033 -logic.end9033: - %t380 = phi i1 [ true, %logic.from9031 ], [ %t379, %logic.rend9034 ] - br i1 %t380, label %then9035, label %endif9037 -then9035: - %t381 = load ptr, ptr %a1 - %t382 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t381, %S.ast.Node %t382, i64 0) - %t383 = load ptr, ptr %a1 - %t384 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.5983, i64 21, i64 0 }, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.5984, i64 5, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t393, ptr %a396 - store { ptr, i64, i64 } %t394, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t393, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - store { ptr, i64, i64 } %t399, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.5985, i64 6, i64 0 }, ptr %a402 - call void @finch_str_concat(ptr %a400, ptr %a401, ptr %a402) - store { ptr, i64, i64 } %t399, ptr %a403 - call void @finch_str_drop(ptr %a403) - %t404 = load { ptr, i64, i64 }, ptr %a400 - %t405 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t404, ptr %a407 - store { ptr, i64, i64 } %t405, ptr %a408 - call void @finch_str_concat(ptr %a406, ptr %a407, ptr %a408) - store { ptr, i64, i64 } %t404, ptr %a409 - call void @finch_str_drop(ptr %a409) - %t410 = load { ptr, i64, i64 }, ptr %a406 - store { ptr, i64, i64 } %t410, ptr %a412 - store { ptr, i64, i64 } { ptr @.str.5986, i64 1, i64 0 }, ptr %a413 - call void @finch_str_concat(ptr %a411, ptr %a412, ptr %a413) - store { ptr, i64, i64 } %t410, ptr %a414 - call void @finch_str_drop(ptr %a414) - %t415 = load { ptr, i64, i64 }, ptr %a411 - call void @finch.gen.emit(ptr %t383, { ptr, i64, i64 } %t415) - store { ptr, i64, i64 } %t415, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load ptr, ptr %a1 - %t418 = load { ptr, i64, i64 }, ptr %a12 - %t419 = call { ptr, i64, i64 } @finch.gen.load(ptr %t417, { ptr, i64, i64 } { ptr @.str.5987, i64 17, i64 0 }, { ptr, i64, i64 } %t418) - %t420 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t419, 0 - %t421 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.5988, i64 3, i64 0 }) - %t422 = insertvalue %S.gen.Val %t420, %S.ast.Type %t421, 1 - %t423 = insertvalue %S.gen.Val %t422, i1 true, 2 - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t423 -endif9037: - %t424 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t424, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.5989, i64 7, i64 0 }, ptr %a426 - %t427 = call i32 @finch_str_eq(ptr %a425, ptr %a426) - %t428 = icmp ne i32 %t427, 0 - br i1 %t428, label %then9038, label %endif9040 -then9038: - %t429 = load ptr, ptr %a1 - %t430 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t429, %S.ast.Node %t430, i64 2) - %t431 = load ptr, ptr %a1 - %t432 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t433 = load { ptr, i64, i64 }, ptr %t432 - %t434 = extractvalue { ptr, i64, i64 } %t433, 1 - %t435 = icmp uge i64 1, %t434 - br i1 %t435, label %range9041, label %inrange9042 -range9041: - call void @finch_panic_index(ptr @.str.5990, i64 5655, i64 1, i64 %t434) - unreachable -inrange9042: - %t436 = extractvalue { ptr, i64, i64 } %t433, 0 - %t437 = getelementptr inbounds %S.ast.Node, ptr %t436, i64 1 - %t438 = load %S.ast.Node, ptr %t437 - %t439 = call %S.gen.Val @finch.gen.strArg(ptr %t431, %S.ast.Node %t438, { ptr, i64, i64 } { ptr @.str.5991, i64 19, i64 0 }) - store %S.gen.Val %t439, ptr %a440 - %t441 = load ptr, ptr %a1 - %t442 = icmp eq ptr %t441, null - br i1 %t442, label %panic9043, label %ok9044 -panic9043: - call void @finch_panic(ptr @.str.5992, i64 5656, ptr @.str.5993) - unreachable -ok9044: - %t443 = getelementptr inbounds %S.gen.Gen, ptr %t441, i32 0, i32 11 - %t444 = getelementptr inbounds { ptr, i64, i64 }, ptr %t443, i32 0, i32 1 - %t445 = load i64, ptr %t444 - store i64 %t445, ptr %a446 - %t447 = load ptr, ptr %a1 - %t448 = load %S.gen.Val, ptr %a440 - call void @finch.gen.hold(ptr %t447, %S.gen.Val %t448) - %t449 = load ptr, ptr %a1 - %t450 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t451 = load { ptr, i64, i64 }, ptr %t450 - %t452 = extractvalue { ptr, i64, i64 } %t451, 1 - %t453 = icmp uge i64 2, %t452 - br i1 %t453, label %range9045, label %inrange9046 -range9045: - call void @finch_panic_index(ptr @.str.5994, i64 5658, i64 2, i64 %t452) - unreachable -inrange9046: - %t454 = extractvalue { ptr, i64, i64 } %t451, 0 - %t455 = getelementptr inbounds %S.ast.Node, ptr %t454, i64 2 - %t456 = load %S.ast.Node, ptr %t455 - %t457 = call %S.gen.Val @finch.gen.strArg(ptr %t449, %S.ast.Node %t456, { ptr, i64, i64 } { ptr @.str.5995, i64 12, i64 0 }) - store %S.gen.Val %t457, ptr %a458 - %t459 = load ptr, ptr %a1 - %t460 = load i64, ptr %a446 - call void @finch.gen.heldEnd(ptr %t459, i64 %t460) - %t461 = load ptr, ptr %a1 - %t462 = load %S.gen.Val, ptr %a440 - %t463 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t461, %S.gen.Val %t462) - store { ptr, i64, i64 } %t463, ptr %a464 - %t465 = load ptr, ptr %a1 - %t466 = load %S.gen.Val, ptr %a458 - %t467 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t465, %S.gen.Val %t466) - store { ptr, i64, i64 } %t467, ptr %a468 - %t469 = load ptr, ptr %a1 - %t470 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.5996, i64 33, i64 0 }, ptr %a472 - store { ptr, i64, i64 } %t470, ptr %a473 - call void @finch_str_concat(ptr %a471, ptr %a472, ptr %a473) - %t474 = load { ptr, i64, i64 }, ptr %a471 - store { ptr, i64, i64 } %t474, ptr %a476 - store { ptr, i64, i64 } { ptr @.str.5997, i64 6, i64 0 }, ptr %a477 - call void @finch_str_concat(ptr %a475, ptr %a476, ptr %a477) - store { ptr, i64, i64 } %t474, ptr %a478 - call void @finch_str_drop(ptr %a478) - %t479 = load { ptr, i64, i64 }, ptr %a475 - %t480 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t479, ptr %a482 - store { ptr, i64, i64 } %t480, ptr %a483 - call void @finch_str_concat(ptr %a481, ptr %a482, ptr %a483) - store { ptr, i64, i64 } %t479, ptr %a484 - call void @finch_str_drop(ptr %a484) - %t485 = load { ptr, i64, i64 }, ptr %a481 - store { ptr, i64, i64 } %t485, ptr %a487 - store { ptr, i64, i64 } { ptr @.str.5998, i64 6, i64 0 }, ptr %a488 - call void @finch_str_concat(ptr %a486, ptr %a487, ptr %a488) - store { ptr, i64, i64 } %t485, ptr %a489 - call void @finch_str_drop(ptr %a489) - %t490 = load { ptr, i64, i64 }, ptr %a486 - %t491 = load { ptr, i64, i64 }, ptr %a464 - store { ptr, i64, i64 } %t490, ptr %a493 - store { ptr, i64, i64 } %t491, ptr %a494 - call void @finch_str_concat(ptr %a492, ptr %a493, ptr %a494) - store { ptr, i64, i64 } %t490, ptr %a495 - call void @finch_str_drop(ptr %a495) - %t496 = load { ptr, i64, i64 }, ptr %a492 - store { ptr, i64, i64 } %t496, ptr %a498 - store { ptr, i64, i64 } { ptr @.str.5999, i64 6, i64 0 }, ptr %a499 - call void @finch_str_concat(ptr %a497, ptr %a498, ptr %a499) - store { ptr, i64, i64 } %t496, ptr %a500 - call void @finch_str_drop(ptr %a500) - %t501 = load { ptr, i64, i64 }, ptr %a497 - %t502 = load { ptr, i64, i64 }, ptr %a468 - store { ptr, i64, i64 } %t501, ptr %a504 - store { ptr, i64, i64 } %t502, ptr %a505 - call void @finch_str_concat(ptr %a503, ptr %a504, ptr %a505) - store { ptr, i64, i64 } %t501, ptr %a506 - call void @finch_str_drop(ptr %a506) - %t507 = load { ptr, i64, i64 }, ptr %a503 - store { ptr, i64, i64 } %t507, ptr %a509 - store { ptr, i64, i64 } { ptr @.str.6000, i64 1, i64 0 }, ptr %a510 - call void @finch_str_concat(ptr %a508, ptr %a509, ptr %a510) - store { ptr, i64, i64 } %t507, ptr %a511 - call void @finch_str_drop(ptr %a511) - %t512 = load { ptr, i64, i64 }, ptr %a508 - call void @finch.gen.emit(ptr %t469, { ptr, i64, i64 } %t512) - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - %t514 = load ptr, ptr %a1 - %t515 = load %S.gen.Val, ptr %a440 - call void @finch.gen.release(ptr %t514, %S.gen.Val %t515) - %t516 = load ptr, ptr %a1 - %t517 = load %S.gen.Val, ptr %a458 - call void @finch.gen.release(ptr %t516, %S.gen.Val %t517) - %t518 = load ptr, ptr %a1 - %t519 = load { ptr, i64, i64 }, ptr %a12 - %t520 = call { ptr, i64, i64 } @finch.gen.load(ptr %t518, { ptr, i64, i64 } { ptr @.str.6001, i64 17, i64 0 }, { ptr, i64, i64 } %t519) - %t521 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t520, 0 - %t522 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6002, i64 3, i64 0 }) - %t523 = insertvalue %S.gen.Val %t521, %S.ast.Type %t522, 1 - %t524 = insertvalue %S.gen.Val %t523, i1 true, 2 - call void @finch_str_drop(ptr %a468) - call void @finch_str_drop(ptr %a464) - call void @finch.drop.S_gen_Val(ptr %a458) - call void @finch.drop.S_gen_Val(ptr %a440) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t524 -endif9040: - %t525 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t525, ptr %a526 - store { ptr, i64, i64 } { ptr @.str.6003, i64 5, i64 0 }, ptr %a527 - %t528 = call i32 @finch_str_eq(ptr %a526, ptr %a527) - %t529 = icmp ne i32 %t528, 0 - br i1 %t529, label %then9047, label %endif9049 -then9047: - %t530 = load ptr, ptr %a1 - %t531 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t530, %S.ast.Node %t531, i64 1) - %t532 = load ptr, ptr %a1 - %t533 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t534 = load { ptr, i64, i64 }, ptr %t533 - %t535 = extractvalue { ptr, i64, i64 } %t534, 1 - %t536 = icmp uge i64 1, %t535 - br i1 %t536, label %range9050, label %inrange9051 -range9050: - call void @finch_panic_index(ptr @.str.6004, i64 5669, i64 1, i64 %t535) - unreachable -inrange9051: - %t537 = extractvalue { ptr, i64, i64 } %t534, 0 - %t538 = getelementptr inbounds %S.ast.Node, ptr %t537, i64 1 - %t539 = load %S.ast.Node, ptr %t538 - %t540 = call %S.gen.Val @finch.gen.strArg(ptr %t532, %S.ast.Node %t539, { ptr, i64, i64 } { ptr @.str.6005, i64 13, i64 0 }) - store %S.gen.Val %t540, ptr %a541 - %t542 = load ptr, ptr %a1 - %t543 = load %S.gen.Val, ptr %a541 - %t544 = call { ptr, i64, i64 } @finch.gen.spill(ptr %t542, %S.gen.Val %t543) - store { ptr, i64, i64 } %t544, ptr %a545 - %t546 = load ptr, ptr %a1 - %t547 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t546) - store { ptr, i64, i64 } %t547, ptr %a548 - %t549 = load ptr, ptr %a1 - %t550 = load { ptr, i64, i64 }, ptr %a548 - store { ptr, i64, i64 } { ptr @.str.6006, i64 31, i64 0 }, ptr %a552 - store { ptr, i64, i64 } %t550, ptr %a553 - call void @finch_str_concat(ptr %a551, ptr %a552, ptr %a553) - %t554 = load { ptr, i64, i64 }, ptr %a551 - store { ptr, i64, i64 } %t554, ptr %a556 - store { ptr, i64, i64 } { ptr @.str.6007, i64 6, i64 0 }, ptr %a557 - call void @finch_str_concat(ptr %a555, ptr %a556, ptr %a557) - store { ptr, i64, i64 } %t554, ptr %a558 - call void @finch_str_drop(ptr %a558) - %t559 = load { ptr, i64, i64 }, ptr %a555 - %t560 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t559, ptr %a562 - store { ptr, i64, i64 } %t560, ptr %a563 - call void @finch_str_concat(ptr %a561, ptr %a562, ptr %a563) - store { ptr, i64, i64 } %t559, ptr %a564 - call void @finch_str_drop(ptr %a564) - %t565 = load { ptr, i64, i64 }, ptr %a561 - store { ptr, i64, i64 } %t565, ptr %a567 - store { ptr, i64, i64 } { ptr @.str.6008, i64 6, i64 0 }, ptr %a568 - call void @finch_str_concat(ptr %a566, ptr %a567, ptr %a568) - store { ptr, i64, i64 } %t565, ptr %a569 - call void @finch_str_drop(ptr %a569) - %t570 = load { ptr, i64, i64 }, ptr %a566 - %t571 = load { ptr, i64, i64 }, ptr %a545 - store { ptr, i64, i64 } %t570, ptr %a573 - store { ptr, i64, i64 } %t571, ptr %a574 - call void @finch_str_concat(ptr %a572, ptr %a573, ptr %a574) - store { ptr, i64, i64 } %t570, ptr %a575 - call void @finch_str_drop(ptr %a575) - %t576 = load { ptr, i64, i64 }, ptr %a572 - store { ptr, i64, i64 } %t576, ptr %a578 - store { ptr, i64, i64 } { ptr @.str.6009, i64 1, i64 0 }, ptr %a579 - call void @finch_str_concat(ptr %a577, ptr %a578, ptr %a579) - store { ptr, i64, i64 } %t576, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = load { ptr, i64, i64 }, ptr %a577 - call void @finch.gen.emit(ptr %t549, { ptr, i64, i64 } %t581) - store { ptr, i64, i64 } %t581, ptr %a582 - call void @finch_str_drop(ptr %a582) - %t583 = load ptr, ptr %a1 - %t584 = load %S.gen.Val, ptr %a541 - call void @finch.gen.release(ptr %t583, %S.gen.Val %t584) - %t585 = load ptr, ptr %a1 - %t586 = load { ptr, i64, i64 }, ptr %a548 - %t587 = call { ptr, i64, i64 } @finch.gen.load(ptr %t585, { ptr, i64, i64 } { ptr @.str.6010, i64 17, i64 0 }, { ptr, i64, i64 } %t586) - %t588 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t587, 0 - %t589 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6011, i64 3, i64 0 }) - %t590 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t589) - store %S.ast.Type %t589, ptr %a591 - call void @finch.drop.S_ast_Type(ptr %a591) - %t592 = insertvalue %S.gen.Val %t588, %S.ast.Type %t590, 1 - %t593 = insertvalue %S.gen.Val %t592, i1 true, 2 - call void @finch_str_drop(ptr %a548) - call void @finch_str_drop(ptr %a545) - call void @finch.drop.S_gen_Val(ptr %a541) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t593 -endif9049: - %t594 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t594, ptr %a595 - store { ptr, i64, i64 } { ptr @.str.6012, i64 6, i64 0 }, ptr %a596 - %t597 = call i32 @finch_str_eq(ptr %a595, ptr %a596) - %t598 = icmp ne i32 %t597, 0 - br i1 %t598, label %then9052, label %endif9054 -then9052: - %t599 = load ptr, ptr %a1 - %t600 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t599, %S.ast.Node %t600, i64 1) - %t601 = load ptr, ptr %a1 - %t602 = load ptr, ptr %a1 - %t603 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t604 = load { ptr, i64, i64 }, ptr %t603 - %t605 = extractvalue { ptr, i64, i64 } %t604, 1 - %t606 = icmp uge i64 1, %t605 - br i1 %t606, label %range9055, label %inrange9056 -range9055: - call void @finch_panic_index(ptr @.str.6013, i64 5678, i64 1, i64 %t605) - unreachable -inrange9056: - %t607 = extractvalue { ptr, i64, i64 } %t604, 0 - %t608 = getelementptr inbounds %S.ast.Node, ptr %t607, i64 1 - %t609 = load %S.ast.Node, ptr %t608 - %t610 = call %S.gen.Val @finch.gen.expr(ptr %t602, %S.ast.Node %t609) - %t611 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6014, i64 3, i64 0 }) - %t612 = getelementptr inbounds %S.ast.Node, ptr %a2, i32 0, i32 9 - %t613 = load { ptr, i64, i64 }, ptr %t612 - %t614 = extractvalue { ptr, i64, i64 } %t613, 1 - %t615 = icmp uge i64 1, %t614 - br i1 %t615, label %range9057, label %inrange9058 -range9057: - call void @finch_panic_index(ptr @.str.6015, i64 5678, i64 1, i64 %t614) - unreachable -inrange9058: - %t616 = extractvalue { ptr, i64, i64 } %t613, 0 - %t617 = getelementptr inbounds %S.ast.Node, ptr %t616, i64 1 - %t618 = load %S.ast.Node, ptr %t617 - %t619 = call %S.gen.Val @finch.gen.coerce(ptr %t601, %S.gen.Val %t610, %S.ast.Type %t611, %S.ast.Node %t618, { ptr, i64, i64 } { ptr @.str.6016, i64 9, i64 0 }) - store %S.gen.Val %t610, ptr %a620 - call void @finch.drop.S_gen_Val(ptr %a620) - store %S.ast.Type %t611, ptr %a621 - call void @finch.drop.S_ast_Type(ptr %a621) - %t622 = extractvalue %S.gen.Val %t619, 0 - store { ptr, i64, i64 } %t622, ptr %a623 - call void @finch_str_copy(ptr %a624, ptr %a623) - %t625 = load { ptr, i64, i64 }, ptr %a624 - store %S.gen.Val %t619, ptr %a626 - call void @finch.drop.S_gen_Val(ptr %a626) - store { ptr, i64, i64 } %t625, ptr %a627 - %t628 = load ptr, ptr %a1 - %t629 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.6017, i64 32, i64 0 }, ptr %a631 - store { ptr, i64, i64 } %t629, ptr %a632 - call void @finch_str_concat(ptr %a630, ptr %a631, ptr %a632) - %t633 = load { ptr, i64, i64 }, ptr %a630 - store { ptr, i64, i64 } %t633, ptr %a635 - store { ptr, i64, i64 } { ptr @.str.6018, i64 6, i64 0 }, ptr %a636 - call void @finch_str_concat(ptr %a634, ptr %a635, ptr %a636) - store { ptr, i64, i64 } %t633, ptr %a637 - call void @finch_str_drop(ptr %a637) - %t638 = load { ptr, i64, i64 }, ptr %a634 - %t639 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t638, ptr %a641 - store { ptr, i64, i64 } %t639, ptr %a642 - call void @finch_str_concat(ptr %a640, ptr %a641, ptr %a642) - store { ptr, i64, i64 } %t638, ptr %a643 - call void @finch_str_drop(ptr %a643) - %t644 = load { ptr, i64, i64 }, ptr %a640 - store { ptr, i64, i64 } %t644, ptr %a646 - store { ptr, i64, i64 } { ptr @.str.6019, i64 6, i64 0 }, ptr %a647 - call void @finch_str_concat(ptr %a645, ptr %a646, ptr %a647) - store { ptr, i64, i64 } %t644, ptr %a648 - call void @finch_str_drop(ptr %a648) - %t649 = load { ptr, i64, i64 }, ptr %a645 - %t650 = load { ptr, i64, i64 }, ptr %a627 - store { ptr, i64, i64 } %t649, ptr %a652 - store { ptr, i64, i64 } %t650, ptr %a653 - call void @finch_str_concat(ptr %a651, ptr %a652, ptr %a653) - store { ptr, i64, i64 } %t649, ptr %a654 - call void @finch_str_drop(ptr %a654) - %t655 = load { ptr, i64, i64 }, ptr %a651 - store { ptr, i64, i64 } %t655, ptr %a657 - store { ptr, i64, i64 } { ptr @.str.6020, i64 1, i64 0 }, ptr %a658 - call void @finch_str_concat(ptr %a656, ptr %a657, ptr %a658) - store { ptr, i64, i64 } %t655, ptr %a659 - call void @finch_str_drop(ptr %a659) - %t660 = load { ptr, i64, i64 }, ptr %a656 - call void @finch.gen.emit(ptr %t628, { ptr, i64, i64 } %t660) - store { ptr, i64, i64 } %t660, ptr %a661 - call void @finch_str_drop(ptr %a661) - %t662 = load ptr, ptr %a1 - %t663 = load { ptr, i64, i64 }, ptr %a12 - %t664 = call { ptr, i64, i64 } @finch.gen.load(ptr %t662, { ptr, i64, i64 } { ptr @.str.6021, i64 17, i64 0 }, { ptr, i64, i64 } %t663) - %t665 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t664, 0 - %t666 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6022, i64 3, i64 0 }) - %t667 = insertvalue %S.gen.Val %t665, %S.ast.Type %t666, 1 - %t668 = insertvalue %S.gen.Val %t667, i1 true, 2 - call void @finch_str_drop(ptr %a627) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t668 -endif9054: - %t669 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t669, ptr %a670 - store { ptr, i64, i64 } { ptr @.str.6023, i64 5, i64 0 }, ptr %a671 - %t672 = call i32 @finch_str_eq(ptr %a670, ptr %a671) - %t673 = icmp ne i32 %t672, 0 - br i1 %t673, label %then9059, label %endif9061 -then9059: - %t674 = load ptr, ptr %a1 - %t675 = load %S.ast.Node, ptr %a2 - call void @finch.gen.need(ptr %t674, %S.ast.Node %t675, i64 0) - %t676 = load ptr, ptr %a1 - %t677 = call { ptr, i64, i64 } @finch.gen.strOut(ptr %t676) - store { ptr, i64, i64 } %t677, ptr %a678 - %t679 = load ptr, ptr %a1 - %t680 = load { ptr, i64, i64 }, ptr %a678 - store { ptr, i64, i64 } { ptr @.str.6024, i64 36, i64 0 }, ptr %a682 - store { ptr, i64, i64 } %t680, ptr %a683 - call void @finch_str_concat(ptr %a681, ptr %a682, ptr %a683) - %t684 = load { ptr, i64, i64 }, ptr %a681 - store { ptr, i64, i64 } %t684, ptr %a686 - store { ptr, i64, i64 } { ptr @.str.6025, i64 6, i64 0 }, ptr %a687 - call void @finch_str_concat(ptr %a685, ptr %a686, ptr %a687) - store { ptr, i64, i64 } %t684, ptr %a688 - call void @finch_str_drop(ptr %a688) - %t689 = load { ptr, i64, i64 }, ptr %a685 - %t690 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t689, ptr %a692 - store { ptr, i64, i64 } %t690, ptr %a693 - call void @finch_str_concat(ptr %a691, ptr %a692, ptr %a693) - store { ptr, i64, i64 } %t689, ptr %a694 - call void @finch_str_drop(ptr %a694) - %t695 = load { ptr, i64, i64 }, ptr %a691 - store { ptr, i64, i64 } %t695, ptr %a697 - store { ptr, i64, i64 } { ptr @.str.6026, i64 1, i64 0 }, ptr %a698 - call void @finch_str_concat(ptr %a696, ptr %a697, ptr %a698) - store { ptr, i64, i64 } %t695, ptr %a699 - call void @finch_str_drop(ptr %a699) - %t700 = load { ptr, i64, i64 }, ptr %a696 - call void @finch.gen.emit(ptr %t679, { ptr, i64, i64 } %t700) - store { ptr, i64, i64 } %t700, ptr %a701 - call void @finch_str_drop(ptr %a701) - %t702 = load ptr, ptr %a1 - %t703 = load { ptr, i64, i64 }, ptr %a678 - %t704 = call { ptr, i64, i64 } @finch.gen.load(ptr %t702, { ptr, i64, i64 } { ptr @.str.6027, i64 17, i64 0 }, { ptr, i64, i64 } %t703) - %t705 = insertvalue %S.gen.Val zeroinitializer, { ptr, i64, i64 } %t704, 0 - %t706 = call %S.ast.Type @finch.gen.T({ ptr, i64, i64 } { ptr @.str.6028, i64 2, i64 0 }) - %t707 = call %S.ast.Type @finch.ast.arrayOf(%S.ast.Type %t706) - store %S.ast.Type %t706, ptr %a708 - call void @finch.drop.S_ast_Type(ptr %a708) - %t709 = insertvalue %S.gen.Val %t705, %S.ast.Type %t707, 1 - %t710 = insertvalue %S.gen.Val %t709, i1 true, 2 - call void @finch_str_drop(ptr %a678) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val %t710 -endif9061: - %t711 = load ptr, ptr %a1 - %t712 = load %S.ast.Node, ptr %a2 - %t713 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.6029, i64 21, i64 0 }, ptr %a715 - store { ptr, i64, i64 } %t713, ptr %a716 - call void @finch_str_concat(ptr %a714, ptr %a715, ptr %a716) - %t717 = load { ptr, i64, i64 }, ptr %a714 - store { ptr, i64, i64 } %t717, ptr %a719 - store { ptr, i64, i64 } { ptr @.str.6030, i64 106, i64 0 }, ptr %a720 - call void @finch_str_concat(ptr %a718, ptr %a719, ptr %a720) - store { ptr, i64, i64 } %t717, ptr %a721 - call void @finch_str_drop(ptr %a721) - %t722 = load { ptr, i64, i64 }, ptr %a718 - call void @finch.gen.fail(ptr %t711, %S.ast.Node %t712, { ptr, i64, i64 } %t722) - store { ptr, i64, i64 } %t722, ptr %a723 - call void @finch_str_drop(ptr %a723) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a12) - call void @finch_str_drop(ptr %a9) - ret %S.gen.Val zeroinitializer -} - -define internal { ptr, i64, i64 } @finch.gen.runtimeDecls() { -entry: - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %t1 = mul i64 74, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t2 = call ptr @finch_alloc(i64 %t1) - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 0 - store { ptr, i64, i64 } { ptr @.str.6031, i64 54, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6032, i64 65, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6033, i64 29, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6034, i64 38, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6035, i64 33, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6036, i64 33, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6037, i64 33, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6038, i64 32, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6039, i64 45, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6040, i64 35, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6041, i64 36, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6042, i64 42, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6043, i64 37, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6044, i64 38, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6045, i64 42, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6046, i64 38, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6047, i64 37, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6048, i64 42, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6049, i64 42, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6050, i64 34, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6051, i64 42, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6052, i64 43, i64 0 }, ptr %t24 - %t25 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 22 - store { ptr, i64, i64 } { ptr @.str.6053, i64 47, i64 0 }, ptr %t25 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 23 - store { ptr, i64, i64 } { ptr @.str.6054, i64 50, i64 0 }, ptr %t26 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 24 - store { ptr, i64, i64 } { ptr @.str.6055, i64 43, i64 0 }, ptr %t27 - %t28 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 25 - store { ptr, i64, i64 } { ptr @.str.6056, i64 44, i64 0 }, ptr %t28 - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 26 - store { ptr, i64, i64 } { ptr @.str.6057, i64 49, i64 0 }, ptr %t29 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 27 - store { ptr, i64, i64 } { ptr @.str.6058, i64 57, i64 0 }, ptr %t30 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 28 - store { ptr, i64, i64 } { ptr @.str.6059, i64 37, i64 0 }, ptr %t31 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 29 - store { ptr, i64, i64 } { ptr @.str.6060, i64 39, i64 0 }, ptr %t32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 30 - store { ptr, i64, i64 } { ptr @.str.6061, i64 37, i64 0 }, ptr %t33 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 31 - store { ptr, i64, i64 } { ptr @.str.6062, i64 38, i64 0 }, ptr %t34 - %t35 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 32 - store { ptr, i64, i64 } { ptr @.str.6063, i64 39, i64 0 }, ptr %t35 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 33 - store { ptr, i64, i64 } { ptr @.str.6064, i64 39, i64 0 }, ptr %t36 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 34 - store { ptr, i64, i64 } { ptr @.str.6065, i64 51, i64 0 }, ptr %t37 - %t38 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 35 - store { ptr, i64, i64 } { ptr @.str.6066, i64 44, i64 0 }, ptr %t38 - %t39 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 36 - store { ptr, i64, i64 } { ptr @.str.6067, i64 43, i64 0 }, ptr %t39 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 37 - store { ptr, i64, i64 } { ptr @.str.6068, i64 45, i64 0 }, ptr %t40 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 38 - store { ptr, i64, i64 } { ptr @.str.6069, i64 44, i64 0 }, ptr %t41 - %t42 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 39 - store { ptr, i64, i64 } { ptr @.str.6070, i64 52, i64 0 }, ptr %t42 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 40 - store { ptr, i64, i64 } { ptr @.str.6071, i64 57, i64 0 }, ptr %t43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 41 - store { ptr, i64, i64 } { ptr @.str.6072, i64 48, i64 0 }, ptr %t44 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 42 - store { ptr, i64, i64 } { ptr @.str.6073, i64 34, i64 0 }, ptr %t45 - %t46 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 43 - store { ptr, i64, i64 } { ptr @.str.6074, i64 48, i64 0 }, ptr %t46 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 44 - store { ptr, i64, i64 } { ptr @.str.6075, i64 60, i64 0 }, ptr %t47 - %t48 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 45 - store { ptr, i64, i64 } { ptr @.str.6076, i64 55, i64 0 }, ptr %t48 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 46 - store { ptr, i64, i64 } { ptr @.str.6077, i64 46, i64 0 }, ptr %t49 - %t50 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 47 - store { ptr, i64, i64 } { ptr @.str.6078, i64 48, i64 0 }, ptr %t50 - %t51 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 48 - store { ptr, i64, i64 } { ptr @.str.6079, i64 43, i64 0 }, ptr %t51 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 49 - store { ptr, i64, i64 } { ptr @.str.6080, i64 45, i64 0 }, ptr %t52 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 50 - store { ptr, i64, i64 } { ptr @.str.6081, i64 59, i64 0 }, ptr %t53 - %t54 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 51 - store { ptr, i64, i64 } { ptr @.str.6082, i64 49, i64 0 }, ptr %t54 - %t55 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 52 - store { ptr, i64, i64 } { ptr @.str.6083, i64 39, i64 0 }, ptr %t55 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 53 - store { ptr, i64, i64 } { ptr @.str.6084, i64 39, i64 0 }, ptr %t56 - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 54 - store { ptr, i64, i64 } { ptr @.str.6085, i64 35, i64 0 }, ptr %t57 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 55 - store { ptr, i64, i64 } { ptr @.str.6086, i64 35, i64 0 }, ptr %t58 - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 56 - store { ptr, i64, i64 } { ptr @.str.6087, i64 45, i64 0 }, ptr %t59 - %t60 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 57 - store { ptr, i64, i64 } { ptr @.str.6088, i64 47, i64 0 }, ptr %t60 - %t61 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 58 - store { ptr, i64, i64 } { ptr @.str.6089, i64 47, i64 0 }, ptr %t61 - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 59 - store { ptr, i64, i64 } { ptr @.str.6090, i64 48, i64 0 }, ptr %t62 - %t63 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 60 - store { ptr, i64, i64 } { ptr @.str.6091, i64 44, i64 0 }, ptr %t63 - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 61 - store { ptr, i64, i64 } { ptr @.str.6092, i64 37, i64 0 }, ptr %t64 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 62 - store { ptr, i64, i64 } { ptr @.str.6093, i64 49, i64 0 }, ptr %t65 - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 63 - store { ptr, i64, i64 } { ptr @.str.6094, i64 39, i64 0 }, ptr %t66 - %t67 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 64 - store { ptr, i64, i64 } { ptr @.str.6095, i64 29, i64 0 }, ptr %t67 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 65 - store { ptr, i64, i64 } { ptr @.str.6096, i64 35, i64 0 }, ptr %t68 - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 66 - store { ptr, i64, i64 } { ptr @.str.6097, i64 29, i64 0 }, ptr %t69 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 67 - store { ptr, i64, i64 } { ptr @.str.6098, i64 24, i64 0 }, ptr %t70 - %t71 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 68 - store { ptr, i64, i64 } { ptr @.str.6099, i64 40, i64 0 }, ptr %t71 - %t72 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 69 - store { ptr, i64, i64 } { ptr @.str.6100, i64 33, i64 0 }, ptr %t72 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 70 - store { ptr, i64, i64 } { ptr @.str.6101, i64 34, i64 0 }, ptr %t73 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 71 - store { ptr, i64, i64 } { ptr @.str.6102, i64 44, i64 0 }, ptr %t74 - %t75 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 72 - store { ptr, i64, i64 } { ptr @.str.6103, i64 32, i64 0 }, ptr %t75 - %t76 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 73 - store { ptr, i64, i64 } { ptr @.str.6104, i64 23, i64 0 }, ptr %t76 - %t77 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t78 = insertvalue { ptr, i64, i64 } %t77, i64 74, 1 - %t79 = insertvalue { ptr, i64, i64 } %t78, i64 74, 2 - store { ptr, i64, i64 } %t79, ptr %a80 - %t81 = getelementptr inbounds { ptr, i64, i64 }, ptr %a80, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6105, i64 1, i64 0 }, ptr %a82 - call void @finch_str_join(ptr %a83, ptr %a80, ptr %a82) - %t84 = load { ptr, i64, i64 }, ptr %a83 - store { ptr, i64, i64 } %t84, ptr %a86 - store { ptr, i64, i64 } { ptr @.str.6106, i64 1, i64 0 }, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - call void @finch.drop.arr_str(ptr %a80) - ret { ptr, i64, i64 } %t89 -} - -define internal { ptr, i64, i64 } @finch.gen.assemble(ptr %p0) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %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 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6107, i64 52, i64 0 }, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic9062, label %ok9063 -panic9062: - call void @finch_panic(ptr @.str.6108, i64 5776, ptr @.str.6109) - unreachable -ok9063: - %t5 = getelementptr inbounds %S.gen.Gen, ptr %t3, i32 0, i32 31 - %t6 = getelementptr inbounds %S.platform.Target, ptr %t5, i32 0, i32 5 - %t7 = load i1, ptr %t6 - br label %logic.from9064 -logic.from9064: - br i1 %t7, label %logic.end9066, label %logic.rhs9065 -logic.rhs9065: - %t8 = load ptr, ptr %a1 - %t9 = icmp eq ptr %t8, null - br i1 %t9, label %panic9067, label %ok9068 -panic9067: - call void @finch_panic(ptr @.str.6110, i64 5776, ptr @.str.6111) - unreachable -ok9068: - %t10 = getelementptr inbounds %S.gen.Gen, ptr %t8, i32 0, i32 31 - %t11 = getelementptr inbounds %S.platform.Target, ptr %t10, i32 0, i32 1 - %t12 = load i1, ptr %t11 - br label %logic.rend9069 -logic.rend9069: - br label %logic.end9066 -logic.end9066: - %t13 = phi i1 [ true, %logic.from9064 ], [ %t12, %logic.rend9069 ] - br i1 %t13, label %then9070, label %endif9072 -then9070: - %t14 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a16 - store { ptr, i64, i64 } { ptr @.str.6112, i64 17, 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, ptr %a1 - %t20 = icmp eq ptr %t19, null - br i1 %t20, label %panic9073, label %ok9074 -panic9073: - call void @finch_panic(ptr @.str.6113, i64 5777, ptr @.str.6114) - unreachable -ok9074: - %t21 = getelementptr inbounds %S.gen.Gen, ptr %t19, i32 0, i32 31 - %t22 = getelementptr inbounds %S.platform.Target, ptr %t21, i32 0, i32 0 - %t23 = load { ptr, i64, i64 }, ptr %t22 - store { ptr, i64, i64 } %t18, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t18, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6115, i64 3, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t33, ptr %a2 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif9072 -endif9072: - %t36 = load { ptr, i64, i64 }, ptr %a2 - %t37 = load ptr, ptr %a1 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic9075, label %ok9076 -panic9075: - call void @finch_panic(ptr @.str.6116, i64 5779, ptr @.str.6117) - unreachable -ok9076: - %t39 = getelementptr inbounds %S.gen.Gen, ptr %t37, i32 0, i32 2 - %t40 = getelementptr inbounds { ptr, i64, i64 }, ptr %t39, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6118, i64 1, i64 0 }, ptr %a41 - call void @finch_str_join(ptr %a42, ptr %t39, ptr %a41) - %t43 = load { ptr, i64, i64 }, ptr %a42 - store { ptr, i64, i64 } %t36, ptr %a45 - store { ptr, i64, i64 } %t43, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t48, ptr %a50 - store { ptr, i64, i64 } { ptr @.str.6119, i64 2, i64 0 }, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - %t54 = call { ptr, i64, i64 } @finch.gen.runtimeDecls() - store { ptr, i64, i64 } %t53, ptr %a56 - store { ptr, i64, i64 } %t54, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t53, ptr %a58 - call void @finch_str_drop(ptr %a58) - store { ptr, i64, i64 } %t54, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t60, ptr %a62 - store { ptr, i64, i64 } { ptr @.str.6120, i64 1, i64 0 }, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t60, ptr %a64 - call void @finch_str_drop(ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a61 - %t66 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t65, ptr %a2 - store { ptr, i64, i64 } %t66, ptr %a67 - call void @finch_str_drop(ptr %a67) - %t68 = load ptr, ptr %a1 - %t69 = icmp eq ptr %t68, null - br i1 %t69, label %panic9077, label %ok9078 -panic9077: - call void @finch_panic(ptr @.str.6121, i64 5780, ptr @.str.6122) - unreachable -ok9078: - %t70 = getelementptr inbounds %S.gen.Gen, ptr %t68, i32 0, i32 30 - %t71 = load i1, ptr %t70 - br i1 %t71, label %then9079, label %endif9081 -then9079: - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6123, i64 62, 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, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t76, ptr %a2 - store { ptr, i64, i64 } %t77, ptr %a78 - call void @finch_str_drop(ptr %a78) - br label %endif9081 -endif9081: - %t79 = load { ptr, i64, i64 }, ptr %a2 - %t80 = load ptr, ptr %a1 - %t81 = icmp eq ptr %t80, null - br i1 %t81, label %panic9082, label %ok9083 -panic9082: - call void @finch_panic(ptr @.str.6124, i64 5783, ptr @.str.6125) - unreachable -ok9083: - %t82 = getelementptr inbounds %S.gen.Gen, ptr %t80, i32 0, i32 3 - %t83 = getelementptr inbounds { ptr, i64, i64 }, ptr %t82, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6126, i64 1, 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 } %t79, ptr %a88 - store { ptr, i64, i64 } %t86, ptr %a89 - call void @finch_str_concat(ptr %a87, ptr %a88, ptr %a89) - store { ptr, i64, i64 } %t86, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a87 - %t92 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t91, ptr %a2 - store { ptr, i64, i64 } %t92, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load ptr, ptr %a1 - %t95 = icmp eq ptr %t94, null - br i1 %t95, label %panic9084, label %ok9085 -panic9084: - call void @finch_panic(ptr @.str.6127, i64 5784, ptr @.str.6128) - unreachable -ok9085: - %t96 = getelementptr inbounds %S.gen.Gen, ptr %t94, i32 0, i32 30 - %t97 = load i1, ptr %t96 - br i1 %t97, label %then9086, label %endif9088 -then9086: - %t98 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t98, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6129, i64 1, 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 = call { ptr, i64, i64 } @finch.gen.dbgModule(ptr %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) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - %t111 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t110, ptr %a2 - store { ptr, i64, i64 } %t111, ptr %a112 - call void @finch_str_drop(ptr %a112) - br label %endif9088 -endif9088: - %t113 = load { ptr, i64, i64 }, ptr %a2 - ret { ptr, i64, i64 } %t113 -} - -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.cond9089 -n.cond9089: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body9090, label %n.end9091 -n.body9090: - %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.cond9089 -n.end9091: - 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.cond9092 -n.cond9092: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9093, label %n.end9094 -n.body9093: - %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.live9095, label %entry.next9096 -entry.live9095: - %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.next9096 -entry.next9096: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9092 -n.end9094: - 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.cond9097 -n.cond9097: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9098, label %n.end9099 -n.body9098: - %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.live9100, label %entry.next9101 -entry.live9100: - %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.next9101 -entry.next9101: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9097 -n.end9099: - 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.cond9102 -n.cond9102: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9103, label %n.end9104 -n.body9103: - %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.live9105, label %entry.next9106 -entry.live9105: - %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.next9106 -entry.next9106: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9102 -n.end9104: - 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.cond9107 -n.cond9107: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9108, label %n.end9109 -n.body9108: - %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.live9110, label %entry.next9111 -entry.live9110: - %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.next9111 -entry.next9111: - %t19 = load i64, ptr %a3 - %t20 = add i64 %t19, 1 - store i64 %t20, ptr %a3 - br label %n.cond9107 -n.end9109: - 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 void @finch.drop.arr_S_gen_Pending(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9180 -n.cond9180: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9181, label %n.end9182 -n.body9181: - %t7 = getelementptr inbounds %S.gen.Pending, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Pending(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9180 -n.end9182: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Loop(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9183 -n.cond9183: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9184, label %n.end9185 -n.body9184: - %t7 = getelementptr inbounds %S.gen.Loop, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Loop(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9183 -n.end9185: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_FnSig(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9186 -n.cond9186: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9187, label %n.end9188 -n.body9187: - %t7 = getelementptr inbounds %S.gen.FnSig, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_FnSig(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9186 -n.end9188: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_StructDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9189 -n.cond9189: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9190, label %n.end9191 -n.body9190: - %t7 = getelementptr inbounds %S.gen.StructDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_StructDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9189 -n.end9191: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_Template(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9192 -n.cond9192: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9193, label %n.end9194 -n.body9193: - %t7 = getelementptr inbounds %S.gen.Template, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_Template(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9192 -n.end9194: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_EnumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9195 -n.cond9195: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9196, label %n.end9197 -n.body9196: - %t7 = getelementptr inbounds %S.gen.EnumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_EnumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9195 -n.end9197: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.arr_S_gen_SumDef(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond9198 -n.cond9198: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body9199, label %n.end9200 -n.body9199: - %t7 = getelementptr inbounds %S.gen.SumDef, ptr %t1, i64 %t5 - call void @finch.drop.S_gen_SumDef(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond9198 -n.end9200: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_int(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9201 -n.cond9201: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9202, label %n.end9203 -n.body9202: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9204, label %entry.next9205 -entry.live9204: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i64 }, ptr %t8, i32 0, i32 2 - br label %entry.next9205 -entry.next9205: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9201 -n.end9203: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_gen_Gen(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_ast_Program(ptr %t1) - %t2 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_str(ptr %t2) - %t3 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_str(ptr %t3) - %t4 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_str(ptr %t5) - %t6 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 10 - call void @finch.drop.arr_S_gen_Scope(ptr %t7) - %t8 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 11 - call void @finch.drop.arr_S_gen_Pending(ptr %t8) - %t9 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 12 - call void @finch.drop.arr_S_gen_Loop(ptr %t9) - %t10 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 13 - call void @finch.drop.S_gen_FnSig(ptr %t10) - %t11 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 14 - call void @finch_str_drop(ptr %t11) - %t12 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 15 - call void @finch.drop.arr_S_gen_FnSig(ptr %t12) - %t13 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 16 - call void @finch.drop.arr_S_gen_StructDef(ptr %t13) - %t14 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 17 - call void @finch.drop.arr_S_gen_Template(ptr %t14) - %t15 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 18 - call void @finch.drop.arr_str(ptr %t15) - %t16 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 19 - call void @finch.drop.arr_S_ast_Type(ptr %t16) - %t17 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 20 - call void @finch_str_drop(ptr %t17) - %t18 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 21 - call void @finch.drop.arr_S_gen_EnumDef(ptr %t18) - %t19 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 22 - call void @finch.drop.arr_S_gen_SumDef(ptr %t19) - %t20 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 23 - call void @finch.drop.arr_str(ptr %t20) - %t21 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 24 - call void @finch.drop.arr_str(ptr %t21) - %t22 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 26 - call void @finch.drop.S_cimport_CImports(ptr %t22) - %t23 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 29 - call void @finch.drop.arr_str(ptr %t23) - %t24 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 31 - call void @finch.drop.S_platform_Target(ptr %t24) - %t25 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 32 - call void @finch_str_drop(ptr %t25) - %t26 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 33 - call void @finch.drop.arr_str(ptr %t26) - %t27 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 34 - call void @finch.drop.map_str_int(ptr %t27) - %t28 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 35 - call void @finch.drop.arr_int(ptr %t28) - %t29 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 40 - call void @finch.drop.arr_str(ptr %t29) - %t30 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 41 - call void @finch_str_drop(ptr %t30) - %t31 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 42 - call void @finch_str_drop(ptr %t31) - %t32 = getelementptr inbounds %S.gen.Gen, ptr %a, i32 0, i32 43 - call void @finch_str_drop(ptr %t32) - 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 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca i64, align 16 - %a205 = alloca { ptr, i64, i64 }, align 16 - %a206 = alloca { ptr, i64, i64 }, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca i64, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca %S.gen.FnSig, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a296 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca %S.gen.FnSig, align 16 - %a318 = alloca %S.gen.FnSig, align 16 - %a320 = alloca %S.gen.FnSig, align 16 - %a324 = alloca { ptr, i64, i64 }, align 16 - %a325 = alloca { ptr, i64, i64 }, align 16 - %a326 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a332 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a355 = alloca { ptr, i64, i64 }, align 16 - %a356 = alloca { ptr, i64, i64 }, align 16 - %a357 = 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 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a389 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a401 = alloca { ptr, i64, i64 }, align 16 - %a403 = alloca { ptr, i64, i64 }, align 16 - %a404 = alloca { ptr, i64, i64 }, align 16 - %a405 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a419 = alloca { ptr, i64, i64 }, align 16 - %a421 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a428 = alloca { ptr, i64, i64 }, align 16 - %a429 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a434 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a439 = alloca { ptr, i64, i64 }, align 16 - %a440 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a444 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = alloca { ptr, i64, i64 }, align 16 - %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 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a467 = alloca { ptr, i64, i64 }, align 16 - %a468 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a479 = alloca { ptr, i64, i64 }, align 16 - %a485 = alloca { ptr, i64, i64 }, align 16 - %a486 = alloca { ptr, i64, i64 }, align 16 - %a487 = alloca { ptr, i64, i64 }, align 16 - %a489 = alloca { ptr, i64, i64 }, align 16 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a495 = alloca { ptr, i64, i64 }, align 16 - %a496 = alloca { ptr, i64, i64 }, align 16 - %a497 = alloca { ptr, i64, i64 }, align 16 - %a498 = alloca { ptr, i64, i64 }, align 16 - %a500 = alloca { ptr, i64, i64 }, align 16 - %a501 = alloca { ptr, i64, i64 }, align 16 - %a502 = alloca { ptr, i64, i64 }, align 16 - %a503 = alloca { ptr, i64, i64 }, align 16 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a511 = alloca { ptr, i64, i64 }, align 16 - %a512 = alloca { ptr, i64, i64 }, align 16 - %a513 = alloca { ptr, i64, i64 }, align 16 - %a514 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store %S.cimport.CImports %p2, ptr %a3 - 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, 26 - %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, 27 - %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, 28 - %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, 30 - %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, 31 - %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, 32 - %t44 = insertvalue %S.gen.Gen %t43, i64 -1, 36 - 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 %panic9112, label %ok9113 -panic9112: - call void @finch_panic(ptr @.str.6130, i64 5794, ptr @.str.6131) - unreachable -ok9113: - %t49 = getelementptr inbounds %S.gen.Gen, ptr %t47, i32 0, i32 30 - %t50 = load i1, ptr %t49 - br i1 %t50, label %then9114, label %endif9116 -then9114: - %t51 = load ptr, ptr %a46 - %t52 = icmp eq ptr %t51, null - br i1 %t52, label %panic9117, label %ok9118 -panic9117: - call void @finch_panic(ptr @.str.6132, i64 5796, ptr @.str.6133) - unreachable -ok9118: - %t53 = getelementptr inbounds %S.gen.Gen, ptr %t51, i32 0, i32 33 - %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.6134, 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 %panic9119, label %ok9120 -panic9119: - call void @finch_panic(ptr @.str.6135, i64 5797, ptr @.str.6136) - unreachable -ok9120: - %t61 = getelementptr inbounds %S.gen.Gen, ptr %t59, i32 0, i32 33 - %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.6137, 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 %panic9121, label %ok9122 -panic9121: - call void @finch_panic(ptr @.str.6138, i64 5798, ptr @.str.6139) - unreachable -ok9122: - %t69 = getelementptr inbounds %S.gen.Gen, ptr %t67, i32 0, i32 33 - %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.6140, i64 38, i64 0 }, ptr %t74 - store i64 %t72, ptr %t70 - store i64 0, ptr %a75 - br label %each.cond9123 -each.cond9123: - %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.body9124, label %each.end9126 -each.body9124: - %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 %panic9127, label %ok9128 -panic9127: - call void @finch_panic(ptr @.str.6141, i64 5800, ptr @.str.6142) - unreachable -ok9128: - %t86 = getelementptr inbounds %S.gen.Gen, ptr %t84, i32 0, i32 35 - %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.6143, 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.6144, i64 15, i64 0 }, ptr %a96 - call void @finch_str_concat(ptr %a94, ptr %a95, ptr %a96) - store { ptr, i64, i64 } %t93, ptr %a97 - call void @finch_str_drop(ptr %a97) - %t98 = load { ptr, i64, i64 }, ptr %a94 - %t99 = load ptr, ptr %a46 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic9129, label %ok9130 -panic9129: - call void @finch_panic(ptr @.str.6145, i64 5800, ptr @.str.6146) - unreachable -ok9130: - %t101 = getelementptr inbounds %S.gen.Gen, ptr %t99, i32 0, i32 32 - %t102 = load { ptr, i64, i64 }, ptr %t101 - store { ptr, i64, i64 } %t98, ptr %a104 - store { ptr, i64, i64 } %t102, ptr %a105 - call void @finch_str_concat(ptr %a103, ptr %a104, ptr %a105) - store { ptr, i64, i64 } %t98, ptr %a106 - call void @finch_str_drop(ptr %a106) - %t107 = load { ptr, i64, i64 }, ptr %a103 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6147, i64 2, i64 0 }, ptr %a110 - call void @finch_str_concat(ptr %a108, ptr %a109, ptr %a110) - store { ptr, i64, i64 } %t107, ptr %a111 - call void @finch_str_drop(ptr %a111) - %t112 = load { ptr, i64, i64 }, ptr %a108 - %t113 = call i64 @finch.gen.md(ptr %t88, { ptr, i64, i64 } %t112) - store { ptr, i64, i64 } %t112, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load i64, ptr %t87 - %t116 = add i64 %t115, 1 - call void @finch_arr_reserve(ptr %t86, i64 %t116, i64 ptrtoint (ptr getelementptr (i64, ptr null, i32 1) to i64)) - %t117 = load ptr, ptr %t86 - %t118 = getelementptr inbounds i64, ptr %t117, i64 %t115 - store i64 %t113, ptr %t118 - store i64 %t116, ptr %t87 - br label %each.step9125 -each.step9125: - %t119 = load i64, ptr %a75 - %t120 = add i64 %t119, 1 - store i64 %t120, ptr %a75 - br label %each.cond9123 -each.end9126: - %t121 = load ptr, ptr %a46 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic9131, label %ok9132 -panic9131: - call void @finch_panic(ptr @.str.6149, i64 5802, ptr @.str.6150) - unreachable -ok9132: - %t123 = getelementptr inbounds %S.gen.Gen, ptr %t121, i32 0, i32 35 - %t124 = load { ptr, i64, i64 }, ptr %t123 - %t125 = extractvalue { ptr, i64, i64 } %t124, 1 - %t126 = icmp uge i64 0, %t125 - br i1 %t126, label %range9133, label %inrange9134 -range9133: - call void @finch_panic_index(ptr @.str.6151, i64 5802, i64 0, i64 %t125) - unreachable -inrange9134: - %t127 = extractvalue { ptr, i64, i64 } %t124, 0 - %t128 = getelementptr inbounds i64, ptr %t127, i64 0 - %t129 = load i64, ptr %t128 - call void @finch_str_from_int(ptr %a130, i64 %t129) - %t131 = load { ptr, i64, i64 }, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6148, i64 52, i64 0 }, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t131, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6152, i64 84, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load ptr, ptr %a46 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic9135, label %ok9136 -panic9135: - call void @finch_panic(ptr @.str.6153, i64 5802, ptr @.str.6154) - unreachable -ok9136: - %t144 = getelementptr inbounds %S.gen.Gen, ptr %t142, i32 0, i32 33 - %t145 = load { ptr, i64, i64 }, ptr %t144 - %t146 = extractvalue { ptr, i64, i64 } %t145, 1 - %t147 = icmp uge i64 0, %t146 - br i1 %t147, label %range9137, label %inrange9138 -range9137: - call void @finch_panic_index(ptr @.str.6155, i64 5802, i64 0, i64 %t146) - unreachable -inrange9138: - %t148 = extractvalue { ptr, i64, i64 } %t145, 0 - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %t148, i64 0 - %t150 = load { ptr, i64, i64 }, ptr %t149 - store { ptr, i64, i64 } %t141, ptr %t149 - store { ptr, i64, i64 } %t150, ptr %a151 - call void @finch_str_drop(ptr %a151) - br label %endif9116 -endif9116: - %t152 = load ptr, ptr %a46 - call void @finch.gen.declare(ptr %t152) - %t153 = load ptr, ptr %a46 - %t154 = call i64 @finch.gen.findFn(ptr %t153, { ptr, i64, i64 } { ptr @.str.6156, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.6157, i64 4, i64 0 }) - store i64 %t154, ptr %a155 - %t156 = load i1, ptr %a7 - br i1 %t156, label %then9139, label %else9140 -then9139: - %t157 = load i64, ptr %a155 - %t158 = icmp sge i64 %t157, 0 - br i1 %t158, label %then9142, label %endif9144 -then9142: - %t159 = load ptr, ptr %a46 - %t160 = load ptr, ptr %a46 - %t161 = icmp eq ptr %t160, null - br i1 %t161, label %panic9145, label %ok9146 -panic9145: - call void @finch_panic(ptr @.str.6158, i64 5808, ptr @.str.6159) - unreachable -ok9146: - %t162 = getelementptr inbounds %S.gen.Gen, ptr %t160, i32 0, i32 0 - %t163 = load ptr, ptr %a46 - %t164 = icmp eq ptr %t163, null - br i1 %t164, label %panic9147, label %ok9148 -panic9147: - call void @finch_panic(ptr @.str.6160, i64 5808, ptr @.str.6161) - unreachable -ok9148: - %t165 = getelementptr inbounds %S.gen.Gen, ptr %t163, i32 0, i32 15 - %t166 = load i64, ptr %a155 - %t167 = load { ptr, i64, i64 }, ptr %t165 - %t168 = extractvalue { ptr, i64, i64 } %t167, 1 - %t169 = icmp uge i64 %t166, %t168 - br i1 %t169, label %range9149, label %inrange9150 -range9149: - call void @finch_panic_index(ptr @.str.6162, i64 5808, i64 %t166, i64 %t168) - unreachable -inrange9150: - %t170 = extractvalue { ptr, i64, i64 } %t167, 0 - %t171 = getelementptr inbounds %S.gen.FnSig, ptr %t170, i64 %t166 - %t172 = getelementptr inbounds %S.gen.FnSig, ptr %t171, i32 0, i32 16 - %t173 = load i64, ptr %t172 - %t174 = load { ptr, i64, i64 }, ptr %t162 - %t175 = extractvalue { ptr, i64, i64 } %t174, 1 - %t176 = icmp uge i64 %t173, %t175 - br i1 %t176, label %range9151, label %inrange9152 -range9151: - call void @finch_panic_index(ptr @.str.6163, i64 5808, i64 %t173, i64 %t175) - unreachable -inrange9152: - %t177 = extractvalue { ptr, i64, i64 } %t174, 0 - %t178 = getelementptr inbounds %S.ast.Program, ptr %t177, i64 %t173 - %t179 = getelementptr inbounds %S.ast.Program, ptr %t178, i32 0, i32 8 - %t180 = load ptr, ptr %a46 - %t181 = icmp eq ptr %t180, null - br i1 %t181, label %panic9153, label %ok9154 -panic9153: - call void @finch_panic(ptr @.str.6164, i64 5808, ptr @.str.6165) - unreachable -ok9154: - %t182 = getelementptr inbounds %S.gen.Gen, ptr %t180, i32 0, i32 15 - %t183 = load i64, ptr %a155 - %t184 = load { ptr, i64, i64 }, ptr %t182 - %t185 = extractvalue { ptr, i64, i64 } %t184, 1 - %t186 = icmp uge i64 %t183, %t185 - br i1 %t186, label %range9155, label %inrange9156 -range9155: - call void @finch_panic_index(ptr @.str.6166, i64 5808, i64 %t183, i64 %t185) - unreachable -inrange9156: - %t187 = extractvalue { ptr, i64, i64 } %t184, 0 - %t188 = getelementptr inbounds %S.gen.FnSig, ptr %t187, i64 %t183 - %t189 = getelementptr inbounds %S.gen.FnSig, ptr %t188, i32 0, i32 17 - %t190 = load i64, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %t179 - %t192 = extractvalue { ptr, i64, i64 } %t191, 1 - %t193 = icmp uge i64 %t190, %t192 - br i1 %t193, label %range9157, label %inrange9158 -range9157: - call void @finch_panic_index(ptr @.str.6167, i64 5808, i64 %t190, i64 %t192) - unreachable -inrange9158: - %t194 = extractvalue { ptr, i64, i64 } %t191, 0 - %t195 = getelementptr inbounds %S.ast.Node, ptr %t194, i64 %t190 - %t196 = load %S.ast.Node, ptr %t195 - call void @finch.gen.fail(ptr %t159, %S.ast.Node %t196, { ptr, i64, i64 } { ptr @.str.6168, i64 82, i64 0 }) - br label %endif9144 -endif9144: - br label %endif9141 -else9140: - %t197 = load i64, ptr %a155 - %t198 = icmp slt i64 %t197, 0 - br i1 %t198, label %then9159, label %endif9161 -then9159: - %t199 = load { ptr, i64, i64 }, ptr %a2 - %t200 = extractvalue { ptr, i64, i64 } %t199, 1 - %t201 = icmp uge i64 0, %t200 - br i1 %t201, label %range9162, label %inrange9163 -range9162: - call void @finch_panic_index(ptr @.str.6169, i64 5811, i64 0, i64 %t200) - unreachable -inrange9163: - %t202 = extractvalue { ptr, i64, i64 } %t199, 0 - %t203 = getelementptr inbounds { ptr, i64, i64 }, ptr %t202, i64 0 - %t204 = load { ptr, i64, i64 }, ptr %t203 - store { ptr, i64, i64 } %t204, ptr %a206 - store { ptr, i64, i64 } { ptr @.str.6170, i64 64, i64 0 }, ptr %a207 - call void @finch_str_concat(ptr %a205, ptr %a206, ptr %a207) - %t208 = load { ptr, i64, i64 }, ptr %a205 - %t209 = extractvalue { ptr, i64, i64 } %t208, 1 - %t210 = trunc i64 %t209 to i32 - %t211 = extractvalue { ptr, i64, i64 } %t208, 0 - %t212 = icmp eq ptr %t211, null - %t213 = select i1 %t212, ptr @.str.6171, ptr %t211 - %t214 = call i32 (ptr, ...) @printf(ptr @.str.6172, i32 %t210, ptr %t213) - store { ptr, i64, i64 } %t208, ptr %a215 - call void @finch_str_drop(ptr %a215) - %t216 = call i32 (ptr, ...) @printf(ptr @.str.6173) - %t217 = trunc i64 1 to i32 - %t218 = call i32 @fflush(ptr null) - call void @exit(i32 %t217) - br label %endif9161 -endif9161: - br label %endif9141 -endif9141: - store i64 0, ptr %a219 - br label %while.cond9164 -while.cond9164: - %t220 = load i64, ptr %a219 - %t221 = load ptr, ptr %a46 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic9167, label %ok9168 -panic9167: - call void @finch_panic(ptr @.str.6174, i64 5816, ptr @.str.6175) - unreachable -ok9168: - %t223 = getelementptr inbounds %S.gen.Gen, ptr %t221, i32 0, i32 15 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load i64, ptr %t224 - %t226 = icmp slt i64 %t220, %t225 - br i1 %t226, label %while.body9165, label %while.end9166 -while.body9165: - %t227 = load ptr, ptr %a46 - %t228 = load i64, ptr %a219 - call void @finch.gen.define(ptr %t227, i64 %t228) - %t229 = load i64, ptr %a219 - %t230 = add i64 %t229, 1 - store i64 %t230, ptr %a219 - br label %while.cond9164 -while.end9166: - %t231 = load ptr, ptr %a46 - %t232 = icmp eq ptr %t231, null - br i1 %t232, label %panic9169, label %ok9170 -panic9169: - call void @finch_panic(ptr @.str.6176, i64 5820, ptr @.str.6177) - unreachable -ok9170: - %t233 = getelementptr inbounds %S.gen.Gen, ptr %t231, i32 0, i32 28 - %t234 = load i1, ptr %t233 - br i1 %t234, label %then9171, label %endif9173 -then9171: - %t235 = load ptr, ptr %a46 - %t236 = icmp eq ptr %t235, null - br i1 %t236, label %panic9174, label %ok9175 -panic9174: - call void @finch_panic(ptr @.str.6178, i64 5821, ptr @.str.6179) - unreachable -ok9175: - %t237 = getelementptr inbounds %S.gen.Gen, ptr %t235, i32 0, i32 0 - %t238 = load { ptr, i64, i64 }, ptr %t237 - %t239 = extractvalue { ptr, i64, i64 } %t238, 1 - %t240 = icmp uge i64 0, %t239 - br i1 %t240, label %range9176, label %inrange9177 -range9176: - call void @finch_panic_index(ptr @.str.6180, i64 5821, i64 0, i64 %t239) - unreachable -inrange9177: - %t241 = extractvalue { ptr, i64, i64 } %t238, 0 - %t242 = getelementptr inbounds %S.ast.Program, ptr %t241, i64 0 - %t243 = getelementptr inbounds %S.ast.Program, ptr %t242, i32 0, i32 2 - %t244 = load { ptr, i64, i64 }, ptr %t243 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.copy.arr_str(ptr %a246, ptr %a245) - %t247 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t247, ptr %a248 - %t249 = load ptr, ptr %a46 - %t250 = load { ptr, i64, i64 }, ptr %a248 - call void @finch.gen.indexAll(ptr %t249, { ptr, i64, i64 } %t250) - %t251 = load ptr, ptr %a46 - %t252 = icmp eq ptr %t251, null - br i1 %t252, label %panic9178, label %ok9179 -panic9178: - call void @finch_panic(ptr @.str.6181, i64 5823, ptr @.str.6182) - unreachable -ok9179: - %t253 = getelementptr inbounds %S.gen.Gen, ptr %t251, i32 0, i32 29 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6183, i64 1, i64 0 }, ptr %a255 - call void @finch_str_join(ptr %a256, ptr %t253, ptr %a255) - %t257 = load { ptr, i64, i64 }, ptr %a256 - call void @finch.drop.arr_str(ptr %a248) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t257 -endif9173: - %t258 = load ptr, ptr %a46 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic9206, label %ok9207 -panic9206: - call void @finch_panic(ptr @.str.6184, i64 5825, ptr @.str.6185) - unreachable -ok9207: - %t260 = getelementptr inbounds %S.gen.Gen, ptr %t258, i32 0, i32 15 - store i64 0, ptr %a261 - br label %each.cond9208 -each.cond9208: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body9209, label %each.end9211 -each.body9209: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds %S.gen.FnSig, ptr %t266, i64 %t264 - %t268 = load %S.gen.FnSig, ptr %t267 - store %S.gen.FnSig %t268, ptr %a269 - %t270 = getelementptr inbounds %S.gen.FnSig, ptr %a269, i32 0, i32 5 - %t271 = load i1, ptr %t270 - br i1 %t271, label %then9212, label %endif9214 -then9212: - %t272 = load ptr, ptr %a46 - %t273 = load %S.gen.FnSig, ptr %a269 - %t274 = call { ptr, i64, i64 } @finch.gen.exportWrapper(ptr %t272, %S.gen.FnSig %t273) - store { ptr, i64, i64 } %t274, ptr %a275 - call void @finch_str_drop(ptr %a275) - br label %endif9214 -endif9214: - br label %each.step9210 -each.step9210: - %t276 = load i64, ptr %a261 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a261 - br label %each.cond9208 -each.end9211: - %t278 = load i1, ptr %a7 - br i1 %t278, label %then9215, label %endif9217 -then9215: - store { ptr, i64, i64 } { ptr @.str.6186, i64 0, i64 0 }, ptr %a279 - %t280 = load ptr, ptr %a46 - %t281 = icmp eq ptr %t280, null - br i1 %t281, label %panic9218, label %ok9219 -panic9218: - call void @finch_panic(ptr @.str.6187, i64 5833, ptr @.str.6188) - unreachable -ok9219: - %t282 = getelementptr inbounds %S.gen.Gen, ptr %t280, i32 0, i32 31 - %t283 = getelementptr inbounds %S.platform.Target, ptr %t282, i32 0, i32 1 - %t284 = load i1, ptr %t283 - br i1 %t284, label %then9220, label %endif9222 -then9220: - %t285 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6189, i64 10, i64 0 }, ptr %a279 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif9222 -endif9222: - %t287 = load ptr, ptr %a46 - %t288 = icmp eq ptr %t287, null - br i1 %t288, label %panic9223, label %ok9224 -panic9223: - call void @finch_panic(ptr @.str.6190, i64 5836, ptr @.str.6191) - unreachable -ok9224: - %t289 = getelementptr inbounds %S.gen.Gen, ptr %t287, i32 0, i32 3 - %t290 = getelementptr inbounds { ptr, i64, i64 }, ptr %t289, i32 0, i32 1 - %t291 = load { ptr, i64, i64 }, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6192, i64 6, i64 0 }, ptr %a293 - store { ptr, i64, i64 } %t291, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - %t295 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t295, ptr %a297 - store { ptr, i64, i64 } { ptr @.str.6193, i64 107, i64 0 }, ptr %a298 - call void @finch_str_concat(ptr %a296, ptr %a297, ptr %a298) - store { ptr, i64, i64 } %t295, ptr %a299 - call void @finch_str_drop(ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a296 - %t301 = load i64, ptr %t290 - %t302 = add i64 %t301, 1 - call void @finch_arr_reserve(ptr %t289, i64 %t302, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t303 = load ptr, ptr %t289 - %t304 = getelementptr inbounds { ptr, i64, i64 }, ptr %t303, i64 %t301 - store { ptr, i64, i64 } %t300, ptr %t304 - store i64 %t302, ptr %t290 - %t305 = load ptr, ptr %a46 - %t306 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t305) - call void @finch_str_drop(ptr %a279) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t306 -endif9217: - %t307 = load ptr, ptr %a46 - %t308 = icmp eq ptr %t307, null - br i1 %t308, label %panic9225, label %ok9226 -panic9225: - call void @finch_panic(ptr @.str.6194, i64 5840, ptr @.str.6195) - unreachable -ok9226: - %t309 = getelementptr inbounds %S.gen.Gen, ptr %t307, i32 0, i32 15 - %t310 = load i64, ptr %a155 - %t311 = load { ptr, i64, i64 }, ptr %t309 - %t312 = extractvalue { ptr, i64, i64 } %t311, 1 - %t313 = icmp uge i64 %t310, %t312 - br i1 %t313, label %range9227, label %inrange9228 -range9227: - call void @finch_panic_index(ptr @.str.6196, i64 5840, i64 %t310, i64 %t312) - unreachable -inrange9228: - %t314 = extractvalue { ptr, i64, i64 } %t311, 0 - %t315 = getelementptr inbounds %S.gen.FnSig, ptr %t314, i64 %t310 - %t316 = load %S.gen.FnSig, ptr %t315 - store %S.gen.FnSig %t316, ptr %a317 - call void @finch.copy.S_gen_FnSig(ptr %a318, ptr %a317) - %t319 = load %S.gen.FnSig, ptr %a318 - store %S.gen.FnSig %t319, ptr %a320 - %t321 = load ptr, ptr %a46 - %t322 = load %S.gen.FnSig, ptr %a320 - %t323 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t321, %S.gen.FnSig %t322) - store { ptr, i64, i64 } { ptr @.str.6197, i64 5, i64 0 }, ptr %a325 - store { ptr, i64, i64 } %t323, ptr %a326 - call void @finch_str_concat(ptr %a324, ptr %a325, ptr %a326) - store { ptr, i64, i64 } %t323, ptr %a327 - call void @finch_str_drop(ptr %a327) - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6198, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - store { ptr, i64, i64 } %t328, ptr %a332 - call void @finch_str_drop(ptr %a332) - %t333 = load { ptr, i64, i64 }, ptr %a329 - %t334 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 11 - %t335 = load { ptr, i64, i64 }, ptr %t334 - store { ptr, i64, i64 } %t333, ptr %a337 - store { ptr, i64, i64 } %t335, ptr %a338 - call void @finch_str_concat(ptr %a336, ptr %a337, ptr %a338) - store { ptr, i64, i64 } %t333, ptr %a339 - call void @finch_str_drop(ptr %a339) - %t340 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t340, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.6199, i64 1, i64 0 }, ptr %a343 - call void @finch_str_concat(ptr %a341, ptr %a342, ptr %a343) - store { ptr, i64, i64 } %t340, ptr %a344 - call void @finch_str_drop(ptr %a344) - %t345 = load { ptr, i64, i64 }, ptr %a341 - store { ptr, i64, i64 } %t345, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6200, i64 0, i64 0 }, ptr %a347 - %t348 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 13 - %t349 = getelementptr inbounds { ptr, i64, i64 }, ptr %t348, i32 0, i32 1 - %t350 = load i64, ptr %t349 - %t351 = icmp eq i64 %t350, 1 - br i1 %t351, label %then9229, label %endif9231 -then9229: - %t352 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6201, i64 133, i64 0 }, ptr %a347 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - %t354 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6202, i64 20, i64 0 }, ptr %a357 - call void @finch_str_concat(ptr %a355, ptr %a356, ptr %a357) - %t358 = load { ptr, i64, i64 }, ptr %a355 - %t359 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t358, ptr %a346 - store { ptr, i64, i64 } %t359, ptr %a360 - call void @finch_str_drop(ptr %a360) - br label %endif9231 -endif9231: - %t361 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t361, ptr %a363 - store { ptr, i64, i64 } { ptr @.str.6203, i64 1, i64 0 }, ptr %a364 - call void @finch_str_concat(ptr %a362, ptr %a363, ptr %a364) - %t365 = load { ptr, i64, i64 }, ptr %a362 - %t366 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t365, ptr %a346 - store { ptr, i64, i64 } %t366, ptr %a367 - call void @finch_str_drop(ptr %a367) - store { ptr, i64, i64 } { ptr @.str.6204, i64 12, i64 0 }, ptr %a368 - %t369 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 9 - %t370 = load i1, ptr %t369 - br i1 %t370, label %then9232, label %else9233 -then9232: - %t371 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6205, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - %t375 = load { ptr, i64, i64 }, ptr %a372 - %t376 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t375, ptr %a346 - store { ptr, i64, i64 } %t376, ptr %a377 - call void @finch_str_drop(ptr %a377) - %t378 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t378, ptr %a380 - store { ptr, i64, i64 } { ptr @.str.6206, i64 2, i64 0 }, ptr %a381 - call void @finch_str_concat(ptr %a379, ptr %a380, ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a379 - %t383 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t382, ptr %a385 - store { ptr, i64, i64 } %t383, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t382, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - store { ptr, i64, i64 } %t388, ptr %a390 - store { ptr, i64, i64 } { ptr @.str.6207, i64 1, i64 0 }, ptr %a391 - call void @finch_str_concat(ptr %a389, ptr %a390, ptr %a391) - store { ptr, i64, i64 } %t388, ptr %a392 - call void @finch_str_drop(ptr %a392) - %t393 = load { ptr, i64, i64 }, ptr %a389 - %t394 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t393, ptr %a347 - store { ptr, i64, i64 } %t394, ptr %a395 - call void @finch_str_drop(ptr %a395) - %t396 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6208, i64 0, i64 0 }, ptr %a346 - store { ptr, i64, i64 } %t396, ptr %a397 - call void @finch_str_drop(ptr %a397) - %t398 = load ptr, ptr %a46 - %t399 = load %S.gen.FnSig, ptr %a320 - %t400 = call { ptr, i64, i64 } @finch.gen.retTy(ptr %t398, %S.gen.FnSig %t399) - store { ptr, i64, i64 } %t400, ptr %a401 - %t402 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t402, ptr %a404 - store { ptr, i64, i64 } { ptr @.str.6209, i64 21, i64 0 }, ptr %a405 - call void @finch_str_concat(ptr %a403, ptr %a404, ptr %a405) - %t406 = load { ptr, i64, i64 }, ptr %a403 - %t407 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t406, ptr %a409 - store { ptr, i64, i64 } %t407, ptr %a410 - call void @finch_str_concat(ptr %a408, ptr %a409, ptr %a410) - store { ptr, i64, i64 } %t406, ptr %a411 - call void @finch_str_drop(ptr %a411) - %t412 = load { ptr, i64, i64 }, ptr %a408 - store { ptr, i64, i64 } %t412, ptr %a414 - store { ptr, i64, i64 } { ptr @.str.6210, i64 62, i64 0 }, ptr %a415 - call void @finch_str_concat(ptr %a413, ptr %a414, ptr %a415) - store { ptr, i64, i64 } %t412, ptr %a416 - call void @finch_str_drop(ptr %a416) - %t417 = load { ptr, i64, i64 }, ptr %a413 - %t418 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t417, ptr %a347 - store { ptr, i64, i64 } %t418, ptr %a419 - call void @finch_str_drop(ptr %a419) - %t420 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t420, ptr %a422 - store { ptr, i64, i64 } { ptr @.str.6211, i64 20, i64 0 }, ptr %a423 - call void @finch_str_concat(ptr %a421, ptr %a422, ptr %a423) - %t424 = load { ptr, i64, i64 }, ptr %a421 - %t425 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } %t424, ptr %a427 - store { ptr, i64, i64 } %t425, ptr %a428 - call void @finch_str_concat(ptr %a426, ptr %a427, ptr %a428) - store { ptr, i64, i64 } %t424, ptr %a429 - call void @finch_str_drop(ptr %a429) - %t430 = load { ptr, i64, i64 }, ptr %a426 - store { ptr, i64, i64 } %t430, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.6212, i64 78, i64 0 }, ptr %a433 - call void @finch_str_concat(ptr %a431, ptr %a432, ptr %a433) - store { ptr, i64, i64 } %t430, ptr %a434 - call void @finch_str_drop(ptr %a434) - %t435 = load { ptr, i64, i64 }, ptr %a431 - %t436 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t435, ptr %a347 - store { ptr, i64, i64 } %t436, ptr %a437 - call void @finch_str_drop(ptr %a437) - %t438 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t438, ptr %a440 - store { ptr, i64, i64 } { ptr @.str.6213, i64 62, i64 0 }, ptr %a441 - call void @finch_str_concat(ptr %a439, ptr %a440, ptr %a441) - %t442 = load { ptr, i64, i64 }, ptr %a439 - %t443 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } %t442, ptr %a347 - store { ptr, i64, i64 } %t443, ptr %a444 - call void @finch_str_drop(ptr %a444) - %t445 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t446 = getelementptr inbounds %S.ast.Type, ptr %t445, i32 0, i32 0 - %t447 = load { ptr, i64, i64 }, ptr %t446 - store { ptr, i64, i64 } %t447, ptr %a448 - store { ptr, i64, i64 } { ptr @.str.6214, i64 3, i64 0 }, ptr %a449 - %t450 = call i32 @finch_str_eq(ptr %a448, ptr %a449) - %t451 = icmp ne i32 %t450, 0 - br i1 %t451, label %then9235, label %endif9237 -then9235: - %t452 = load { ptr, i64, i64 }, ptr %a401 - store { ptr, i64, i64 } { ptr @.str.6215, i64 20, i64 0 }, ptr %a454 - store { ptr, i64, i64 } %t452, ptr %a455 - call void @finch_str_concat(ptr %a453, ptr %a454, ptr %a455) - %t456 = load { ptr, i64, i64 }, ptr %a453 - store { ptr, i64, i64 } %t456, ptr %a458 - store { ptr, i64, i64 } { ptr @.str.6216, i64 53, i64 0 }, ptr %a459 - call void @finch_str_concat(ptr %a457, ptr %a458, ptr %a459) - store { ptr, i64, i64 } %t456, ptr %a460 - call void @finch_str_drop(ptr %a460) - %t461 = load { ptr, i64, i64 }, ptr %a457 - %t462 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t461, ptr %a368 - store { ptr, i64, i64 } %t462, ptr %a463 - call void @finch_str_drop(ptr %a463) - br label %endif9237 -endif9237: - call void @finch_str_drop(ptr %a401) - br label %endif9234 -else9233: - %t464 = getelementptr inbounds %S.gen.FnSig, ptr %a320, i32 0, i32 12 - %t465 = getelementptr inbounds %S.ast.Type, ptr %t464, i32 0, i32 0 - %t466 = load { ptr, i64, i64 }, ptr %t465 - store { ptr, i64, i64 } %t466, ptr %a467 - store { ptr, i64, i64 } { ptr @.str.6217, i64 3, i64 0 }, ptr %a468 - %t469 = call i32 @finch_str_eq(ptr %a467, ptr %a468) - %t470 = icmp ne i32 %t469, 0 - br i1 %t470, label %then9238, label %endif9240 -then9238: - %t471 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } { ptr @.str.6218, i64 5, i64 0 }, ptr %a473 - store { ptr, i64, i64 } %t471, ptr %a474 - call void @finch_str_concat(ptr %a472, ptr %a473, ptr %a474) - %t475 = load { ptr, i64, i64 }, ptr %a472 - %t476 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t475, ptr %a346 - store { ptr, i64, i64 } %t476, ptr %a477 - call void @finch_str_drop(ptr %a477) - %t478 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } { ptr @.str.6219, i64 46, i64 0 }, ptr %a368 - store { ptr, i64, i64 } %t478, ptr %a479 - call void @finch_str_drop(ptr %a479) - br label %endif9240 -endif9240: - br label %endif9234 -endif9234: - %t480 = load ptr, ptr %a46 - %t481 = icmp eq ptr %t480, null - br i1 %t481, label %panic9241, label %ok9242 -panic9241: - call void @finch_panic(ptr @.str.6220, i64 5865, ptr @.str.6221) - unreachable -ok9242: - %t482 = getelementptr inbounds %S.gen.Gen, ptr %t480, i32 0, i32 3 - %t483 = getelementptr inbounds { ptr, i64, i64 }, ptr %t482, i32 0, i32 1 - %t484 = load { ptr, i64, i64 }, ptr %a347 - store { ptr, i64, i64 } { ptr @.str.6222, i64 48, i64 0 }, ptr %a486 - store { ptr, i64, i64 } %t484, ptr %a487 - call void @finch_str_concat(ptr %a485, ptr %a486, ptr %a487) - %t488 = load { ptr, i64, i64 }, ptr %a485 - store { ptr, i64, i64 } %t488, ptr %a490 - store { ptr, i64, i64 } { ptr @.str.6223, i64 2, i64 0 }, ptr %a491 - call void @finch_str_concat(ptr %a489, ptr %a490, ptr %a491) - store { ptr, i64, i64 } %t488, ptr %a492 - call void @finch_str_drop(ptr %a492) - %t493 = load { ptr, i64, i64 }, ptr %a489 - %t494 = load { ptr, i64, i64 }, ptr %a346 - store { ptr, i64, i64 } %t493, ptr %a496 - store { ptr, i64, i64 } %t494, ptr %a497 - call void @finch_str_concat(ptr %a495, ptr %a496, ptr %a497) - store { ptr, i64, i64 } %t493, ptr %a498 - call void @finch_str_drop(ptr %a498) - %t499 = load { ptr, i64, i64 }, ptr %a495 - store { ptr, i64, i64 } %t499, ptr %a501 - store { ptr, i64, i64 } { ptr @.str.6224, i64 1, i64 0 }, ptr %a502 - call void @finch_str_concat(ptr %a500, ptr %a501, ptr %a502) - store { ptr, i64, i64 } %t499, ptr %a503 - call void @finch_str_drop(ptr %a503) - %t504 = load { ptr, i64, i64 }, ptr %a500 - %t505 = load { ptr, i64, i64 }, ptr %a368 - store { ptr, i64, i64 } %t504, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t504, ptr %a509 - call void @finch_str_drop(ptr %a509) - %t510 = load { ptr, i64, i64 }, ptr %a506 - store { ptr, i64, i64 } %t510, ptr %a512 - store { ptr, i64, i64 } { ptr @.str.6225, i64 2, i64 0 }, ptr %a513 - call void @finch_str_concat(ptr %a511, ptr %a512, ptr %a513) - store { ptr, i64, i64 } %t510, ptr %a514 - call void @finch_str_drop(ptr %a514) - %t515 = load { ptr, i64, i64 }, ptr %a511 - %t516 = load i64, ptr %t483 - %t517 = add i64 %t516, 1 - call void @finch_arr_reserve(ptr %t482, i64 %t517, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t518 = load ptr, ptr %t482 - %t519 = getelementptr inbounds { ptr, i64, i64 }, ptr %t518, i64 %t516 - store { ptr, i64, i64 } %t515, ptr %t519 - store i64 %t517, ptr %t483 - %t520 = load ptr, ptr %a46 - %t521 = call { ptr, i64, i64 } @finch.gen.assemble(ptr %t520) - call void @finch_str_drop(ptr %a368) - call void @finch_str_drop(ptr %a347) - call void @finch_str_drop(ptr %a346) - call void @finch.drop.S_gen_FnSig(ptr %a320) - call void @finch.drop.S_gen_Gen(ptr %a45) - ret { ptr, i64, i64 } %t521 -} - -define internal %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2) { -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.6226, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6227, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6228, i64 78, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6229, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6230, i64 31, i64 0 }, { ptr, i64, i64 } { ptr @.str.6231, i64 77, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6232, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6233, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6234, i64 121, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6235, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6236, i64 38, i64 0 }, { ptr, i64, i64 } { ptr @.str.6237, i64 83, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6238, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6239, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6240, i64 29, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6241, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6242, i64 29, i64 0 }, { ptr, i64, i64 } { ptr @.str.6243, i64 73, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6244, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6245, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6246, i64 98, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6247, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6248, i64 25, i64 0 }, { ptr, i64, i64 } { ptr @.str.6249, i64 66, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6250, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6251, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6252, i64 48, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6253, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6254, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6255, i64 77, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6256, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6257, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6258, i64 66, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6259, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6260, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6261, i64 73, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6262, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6263, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6264, i64 61, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6265, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6266, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6267, i64 130, i64 0 }) - %t15 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6268, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6269, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6270, i64 75, i64 0 }) - %t16 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6271, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6272, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6273, i64 29, i64 0 }) - %t17 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6274, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6275, i64 19, i64 0 }, { ptr, i64, i64 } { ptr @.str.6276, i64 26, i64 0 }) - %t18 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6277, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6278, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6279, 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.6280, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6281, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6282, i64 23, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6283, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6284, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6285, i64 40, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6286, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6287, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6288, i64 18, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6289, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6290, i64 10, i64 0 }, { ptr, i64, i64 } { ptr @.str.6291, i64 43, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6292, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6293, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6294, i64 38, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6295, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6296, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6297, i64 37, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6298, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6299, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6300, i64 19, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6301, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6302, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6303, i64 46, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6304, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6305, i64 16, i64 0 }, { ptr, i64, i64 } { ptr @.str.6306, i64 22, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6307, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6308, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6309, i64 18, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6310, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6311, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6312, i64 37, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6313, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6314, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6315, i64 18, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6316, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6317, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6318, i64 45, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6319, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6320, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6321, 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.6322, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6323, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6324, i64 20, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6325, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6326, i64 17, i64 0 }, { ptr, i64, i64 } { ptr @.str.6327, i64 59, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6328, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6329, i64 30, i64 0 }, { ptr, i64, i64 } { ptr @.str.6330, i64 29, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6331, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6332, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6333, i64 22, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6334, i64 8, i64 0 }, { ptr, i64, i64 } { ptr @.str.6335, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6336, i64 24, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6337, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6338, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6339, i64 27, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6340, i64 9, i64 0 }, { ptr, i64, i64 } { ptr @.str.6341, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6342, i64 25, i64 0 }) - %t8 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6343, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6344, i64 23, i64 0 }, { ptr, i64, i64 } { ptr @.str.6345, i64 62, i64 0 }) - %t9 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6346, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6347, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6348, i64 41, i64 0 }) - %t10 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6349, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6350, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6351, i64 24, i64 0 }) - %t11 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6352, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6353, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6354, i64 24, i64 0 }) - %t12 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6355, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6356, i64 32, i64 0 }, { ptr, i64, i64 } { ptr @.str.6357, i64 26, i64 0 }) - %t13 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6358, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6359, i64 20, i64 0 }, { ptr, i64, i64 } { ptr @.str.6360, i64 17, i64 0 }) - %t14 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6361, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6362, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6363, 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.6364, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6365, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6366, i64 19, i64 0 }) - %t2 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6367, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6368, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6369, i64 22, i64 0 }) - %t3 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6370, i64 3, i64 0 }, { ptr, i64, i64 } { ptr @.str.6371, i64 26, i64 0 }, { ptr, i64, i64 } { ptr @.str.6372, i64 53, i64 0 }) - %t4 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6373, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6374, i64 21, i64 0 }, { ptr, i64, i64 } { ptr @.str.6375, i64 52, i64 0 }) - %t5 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6376, i64 5, i64 0 }, { ptr, i64, i64 } { ptr @.str.6377, i64 7, i64 0 }, { ptr, i64, i64 } { ptr @.str.6378, i64 19, i64 0 }) - %t6 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6379, i64 4, i64 0 }, { ptr, i64, i64 } { ptr @.str.6380, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6381, i64 39, i64 0 }) - %t7 = call %S.docs.Doc @finch.docs.doc({ ptr, i64, i64 } { ptr @.str.6382, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.6383, i64 15, i64 0 }, { ptr, i64, i64 } { ptr @.str.6384, 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.6385, i64 2, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6386, i64 6, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6387, i64 2, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6388, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6389, i64 5, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6390, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6391, i64 2, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6392, i64 5, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6393, i64 8, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6394, i64 4, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6395, i64 5, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6396, i64 4, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6397, i64 6, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6398, i64 4, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6399, i64 6, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6400, i64 4, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6401, i64 5, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 17 - store { ptr, i64, i64 } { ptr @.str.6402, i64 6, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 18 - store { ptr, i64, i64 } { ptr @.str.6403, i64 5, i64 0 }, ptr %t21 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 19 - store { ptr, i64, i64 } { ptr @.str.6404, i64 2, i64 0 }, ptr %t22 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 20 - store { ptr, i64, i64 } { ptr @.str.6405, i64 3, i64 0 }, ptr %t23 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 21 - store { ptr, i64, i64 } { ptr @.str.6406, 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.6407, i64 3, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6408, i64 5, i64 0 }, ptr %t4 - %t5 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 2 - store { ptr, i64, i64 } { ptr @.str.6409, i64 4, i64 0 }, ptr %t5 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 3 - store { ptr, i64, i64 } { ptr @.str.6410, i64 4, i64 0 }, ptr %t6 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 4 - store { ptr, i64, i64 } { ptr @.str.6411, i64 3, i64 0 }, ptr %t7 - %t8 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 5 - store { ptr, i64, i64 } { ptr @.str.6412, i64 3, i64 0 }, ptr %t8 - %t9 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 6 - store { ptr, i64, i64 } { ptr @.str.6413, i64 3, i64 0 }, ptr %t9 - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 7 - store { ptr, i64, i64 } { ptr @.str.6414, i64 2, i64 0 }, ptr %t10 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 8 - store { ptr, i64, i64 } { ptr @.str.6415, i64 3, i64 0 }, ptr %t11 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 9 - store { ptr, i64, i64 } { ptr @.str.6416, i64 3, i64 0 }, ptr %t12 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 10 - store { ptr, i64, i64 } { ptr @.str.6417, i64 3, i64 0 }, ptr %t13 - %t14 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 11 - store { ptr, i64, i64 } { ptr @.str.6418, i64 2, i64 0 }, ptr %t14 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 12 - store { ptr, i64, i64 } { ptr @.str.6419, i64 3, i64 0 }, ptr %t15 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 13 - store { ptr, i64, i64 } { ptr @.str.6420, i64 3, i64 0 }, ptr %t16 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 14 - store { ptr, i64, i64 } { ptr @.str.6421, i64 3, i64 0 }, ptr %t17 - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 15 - store { ptr, i64, i64 } { ptr @.str.6422, i64 3, i64 0 }, ptr %t18 - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 16 - store { ptr, i64, i64 } { ptr @.str.6423, i64 3, i64 0 }, ptr %t19 - %t20 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t21 = insertvalue { ptr, i64, i64 } %t20, i64 17, 1 - %t22 = insertvalue { ptr, i64, i64 } %t21, i64 17, 2 - ret { ptr, i64, i64 } %t22 -} - -define internal void @finch.copy.S_docs_Doc(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.docs.Doc, ptr %src - store %S.docs.Doc %t1, ptr %dst - %t2 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.docs.Doc, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.docs.Doc, ptr %src, i32 0, i32 2 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca %S.docs.Doc, align 16 - %a21 = alloca %S.docs.Doc, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond9243 -each.cond9243: - %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.body9244, label %each.end9246 -each.body9244: - %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 %then9247, label %endif9249 -then9247: - %t19 = load %S.docs.Doc, ptr %a11 - store %S.docs.Doc %t19, ptr %a20 - call void @finch.copy.S_docs_Doc(ptr %a21, ptr %a20) - %t22 = load %S.docs.Doc, ptr %a21 - ret %S.docs.Doc %t22 -endif9249: - br label %each.step9245 -each.step9245: - %t23 = load i64, ptr %a3 - %t24 = add i64 %t23, 1 - store i64 %t24, ptr %a3 - br label %each.cond9243 -each.end9246: - 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 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - store %S.docs.Doc %p0, ptr %a1 - %t2 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - store { ptr, i64, i64 } { ptr @.str.6424, 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.6425, i64 5, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = getelementptr inbounds %S.docs.Doc, ptr %a1, i32 0, i32 2 - %t14 = load { ptr, i64, i64 }, ptr %t13 - store { ptr, i64, i64 } %t12, ptr %a16 - store { ptr, i64, i64 } %t14, ptr %a17 - call void @finch_str_concat(ptr %a15, ptr %a16, ptr %a17) - store { ptr, i64, i64 } %t12, ptr %a18 - call void @finch_str_drop(ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a15 - ret { ptr, i64, i64 } %t19 -} - -define internal { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %p0) { -entry: - %a1 = alloca %S.C.CXString, align 16 - %a3 = alloca %S.C.CXString, align 16 - %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 - %a12 = alloca %S.C.CXString, align 16 - store %S.C.CXString %p0, ptr %a1 - %t2 = load %S.C.CXString, ptr %a1 - store %S.C.CXString %t2, ptr %a3 - %t4 = call ptr @clang_getCString(ptr %a3) - 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 = load %S.C.CXString, ptr %a1 - store %S.C.CXString %t11, ptr %a12 - call void @clang_disposeString(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a10 - ret { ptr, i64, i64 } %t13 -} - -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 - store %S.ast.Type %p0, ptr %a1 - store i64 %p1, ptr %a2 - %t3 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6426, 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 - ret %S.ast.Type %t17 -} - -define internal { ptr, i64, i64 } @finch.cimport.systemIncludeArgs({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %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 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca i1, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a104 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca i64, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - %t3 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t3, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6427, i64 15, i64 0 }, ptr %a6 - call void @finch_str_concat(ptr %a4, ptr %a5, ptr %a6) - store { ptr, i64, i64 } %t3, ptr %a7 - call void @finch_str_drop(ptr %a7) - %t8 = load { ptr, i64, i64 }, ptr %a4 - %t9 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a10, i64 %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a13 - store { ptr, i64, i64 } %t11, ptr %a14 - call void @finch_str_concat(ptr %a12, ptr %a13, ptr %a14) - store { ptr, i64, i64 } %t8, ptr %a15 - call void @finch_str_drop(ptr %a15) - store { ptr, i64, i64 } %t11, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a12 - store { ptr, i64, i64 } %t17, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6428, i64 4, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t24, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6429, i64 13, i64 0 }, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - %t30 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a31, i64 %t30) - %t32 = load { ptr, i64, i64 }, ptr %a31 - store { ptr, i64, i64 } %t29, ptr %a34 - store { ptr, i64, i64 } %t32, ptr %a35 - call void @finch_str_concat(ptr %a33, ptr %a34, ptr %a35) - store { ptr, i64, i64 } %t29, ptr %a36 - call void @finch_str_drop(ptr %a36) - store { ptr, i64, i64 } %t32, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t38, ptr %a40 - store { ptr, i64, i64 } { ptr @.str.6430, i64 2, i64 0 }, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a44 - %t45 = load { ptr, i64, i64 }, ptr %a44 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6431, i64 0, i64 0 }, ptr %a47 - %t48 = call i32 @finch_write_file(ptr %a46, ptr %a47) - %t49 = icmp ne i32 %t48, 0 - %t50 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t50, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6432, i64 12, i64 0 }, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a51 - %t55 = load { ptr, i64, i64 }, ptr %a44 - %t56 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t55) - store { ptr, i64, i64 } %t54, ptr %a58 - store { ptr, i64, i64 } %t56, ptr %a59 - call void @finch_str_concat(ptr %a57, ptr %a58, ptr %a59) - store { ptr, i64, i64 } %t54, ptr %a60 - call void @finch_str_drop(ptr %a60) - store { ptr, i64, i64 } %t56, ptr %a61 - call void @finch_str_drop(ptr %a61) - %t62 = load { ptr, i64, i64 }, ptr %a57 - store { ptr, i64, i64 } %t62, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6433, i64 4, i64 0 }, ptr %a65 - call void @finch_str_concat(ptr %a63, ptr %a64, ptr %a65) - store { ptr, i64, i64 } %t62, ptr %a66 - call void @finch_str_drop(ptr %a66) - %t67 = load { ptr, i64, i64 }, ptr %a63 - %t68 = load { ptr, i64, i64 }, ptr %a23 - %t69 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t68) - store { ptr, i64, i64 } %t67, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t67, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - store { ptr, i64, i64 } %t75, ptr %a77 - store { ptr, i64, i64 } { ptr @.str.6434, i64 3, i64 0 }, ptr %a78 - call void @finch_str_concat(ptr %a76, ptr %a77, ptr %a78) - store { ptr, i64, i64 } %t75, ptr %a79 - call void @finch_str_drop(ptr %a79) - %t80 = load { ptr, i64, i64 }, ptr %a76 - %t81 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t80, ptr %a83 - store { ptr, i64, i64 } %t81, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - store { ptr, i64, i64 } %t80, ptr %a85 - call void @finch_str_drop(ptr %a85) - store { ptr, i64, i64 } %t81, ptr %a86 - call void @finch_str_drop(ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a82 - %t88 = call i64 @finch.host.run({ ptr, i64, i64 } %t87) - store { ptr, i64, i64 } %t87, ptr %a89 - call void @finch_str_drop(ptr %a89) - %t90 = load { ptr, i64, i64 }, ptr %a44 - call void @finch.host.remove({ ptr, i64, i64 } %t90) - %t91 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t91, ptr %a92 - %t93 = call i32 @finch_file_exists(ptr %a92) - %t94 = icmp ne i32 %t93, 0 - %t95 = xor i1 %t94, true - br i1 %t95, label %then9250, label %endif9252 -then9250: - %t96 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t96 -endif9252: - store i1 false, ptr %a97 - %t98 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_read_file(ptr %a100, ptr %a99, ptr @.str.6435, i64 114) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t101, ptr %a102 - store { ptr, i64, i64 } { ptr @.str.6437, i64 1, i64 0 }, ptr %a104 - call void @finch_str_split(ptr %a105, ptr %a102, ptr %a104) - %t106 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t101, ptr %a107 - call void @finch_str_drop(ptr %a107) - store { ptr, i64, i64 } %t106, ptr %a108 - store i64 0, ptr %a109 - br label %each.cond9253 -each.cond9253: - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a108, i32 0, i32 1 - %t111 = load i64, ptr %t110 - %t112 = load i64, ptr %a109 - %t113 = icmp slt i64 %t112, %t111 - br i1 %t113, label %each.body9254, label %each.end9256 -each.body9254: - %t114 = load ptr, ptr %a108 - %t115 = getelementptr inbounds { ptr, i64, i64 }, ptr %t114, i64 %t112 - %t116 = load { ptr, i64, i64 }, ptr %t115 - store { ptr, i64, i64 } %t116, ptr %a117 - %t118 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t118, ptr %a119 - call void @finch_str_trim(ptr %a120, ptr %a119) - %t121 = load { ptr, i64, i64 }, ptr %a120 - store { ptr, i64, i64 } %t121, ptr %a122 - %t123 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t123, ptr %a124 - store { ptr, i64, i64 } { ptr @.str.6440, i64 34, i64 0 }, ptr %a126 - %t127 = call i32 @finch_str_starts(ptr %a124, ptr %a126) - %t128 = icmp ne i32 %t127, 0 - br i1 %t128, label %then9257, label %endif9259 -then9257: - store i1 true, ptr %a97 - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9259: - %t129 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } { ptr @.str.6442, i64 19, i64 0 }, ptr %a132 - %t133 = call i32 @finch_str_starts(ptr %a130, ptr %a132) - %t134 = icmp ne i32 %t133, 0 - br i1 %t134, label %then9260, label %endif9262 -then9260: - call void @finch_str_drop(ptr %a122) - br label %each.end9256 -endif9262: - %t135 = load i1, ptr %a97 - %t136 = xor i1 %t135, true - br label %logic.from9263 -logic.from9263: - br i1 %t136, label %logic.end9265, label %logic.rhs9264 -logic.rhs9264: - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t138 = load i64, ptr %t137 - %t139 = icmp eq i64 %t138, 0 - br label %logic.rend9266 -logic.rend9266: - br label %logic.end9265 -logic.end9265: - %t140 = phi i1 [ true, %logic.from9263 ], [ %t139, %logic.rend9266 ] - br i1 %t140, label %then9267, label %endif9269 -then9267: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -endif9269: - %t141 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6444, i64 22, i64 0 }, ptr %a144 - %t145 = call i32 @finch_str_ends(ptr %a142, ptr %a144) - %t146 = icmp ne i32 %t145, 0 - br i1 %t146, label %then9270, label %else9271 -then9270: - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t148 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } %t148, ptr %a149 - %t151 = getelementptr inbounds { ptr, i64, i64 }, ptr %a122, i32 0, i32 1 - %t152 = load i64, ptr %t151 - %t153 = sub i64 %t152, 22 - call void @finch_str_sub(ptr %a150, ptr %a149, i64 0, i64 %t153, ptr @.str.6446, i64 128) - %t154 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } { ptr @.str.6445, i64 11, i64 0 }, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - store { ptr, i64, i64 } %t154, ptr %a158 - call void @finch_str_drop(ptr %a158) - %t159 = load { ptr, i64, i64 }, ptr %a155 - %t160 = load i64, ptr %t147 - %t161 = add i64 %t160, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t161, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t162 = load ptr, ptr %a2 - %t163 = getelementptr inbounds { ptr, i64, i64 }, ptr %t162, i64 %t160 - store { ptr, i64, i64 } %t159, ptr %t163 - store i64 %t161, ptr %t147 - br label %endif9272 -else9271: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t165 = load { ptr, i64, i64 }, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6447, i64 8, i64 0 }, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - %t169 = load { ptr, i64, i64 }, ptr %a166 - %t170 = load i64, ptr %t164 - %t171 = add i64 %t170, 1 - call void @finch_arr_reserve(ptr %a2, i64 %t171, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t172 = load ptr, ptr %a2 - %t173 = getelementptr inbounds { ptr, i64, i64 }, ptr %t172, i64 %t170 - store { ptr, i64, i64 } %t169, ptr %t173 - store i64 %t171, ptr %t164 - br label %endif9272 -endif9272: - call void @finch_str_drop(ptr %a122) - br label %each.step9255 -each.step9255: - %t174 = load i64, ptr %a109 - %t175 = add i64 %t174, 1 - store i64 %t175, ptr %a109 - br label %each.cond9253 -each.end9256: - call void @finch.drop.arr_str(ptr %a108) - %t176 = load { ptr, i64, i64 }, ptr %a23 - call void @finch.host.remove({ ptr, i64, i64 } %t176) - %t177 = load { ptr, i64, i64 }, ptr %a2 - call void @finch_str_drop(ptr %a44) - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t177 -} - -define internal { ptr, i64, i64 } @finch.cimport.recordName(ptr %p0, %S.C.CXType %p1) { -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 - %a8 = alloca %S.C.CXString, align 16 - %a10 = alloca %S.C.CXCursor, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a18 = 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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca %S.C.CXString, align 16 - %a40 = alloca %S.C.CXCursor, align 16 - %a43 = 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 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca i32, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = 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 - %t9 = load %S.C.CXCursor, ptr %a7 - store %S.C.CXCursor %t9, ptr %a10 - call void @clang_getCursorUSR(ptr sret(%S.C.CXString) align 16 %a8, ptr %a10) - %t11 = load %S.C.CXString, ptr %a8 - %t12 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t11) - store { ptr, i64, i64 } %t12, ptr %a13 - %t14 = load ptr, ptr %a1 - %t15 = icmp eq ptr %t14, null - br i1 %t15, label %panic9273, label %ok9274 -panic9273: - call void @finch_panic(ptr @.str.6448, i64 143, ptr @.str.6449) - unreachable -ok9274: - %t16 = getelementptr inbounds %S.cimport.Importer, ptr %t14, i32 0, i32 3 - %t17 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t17, ptr %a18 - %t19 = call i64 @finch_map_find(ptr %t16, ptr %a18, 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) - %t20 = icmp sge i64 %t19, 0 - br i1 %t20, label %then9275, label %endif9277 -then9275: - %t21 = load ptr, ptr %a1 - %t22 = icmp eq ptr %t21, null - br i1 %t22, label %panic9278, label %ok9279 -panic9278: - call void @finch_panic(ptr @.str.6450, i64 144, ptr @.str.6451) - unreachable -ok9279: - %t23 = getelementptr inbounds %S.cimport.Importer, ptr %t21, i32 0, i32 3 - %t24 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t24, ptr %a25 - %t26 = call i64 @finch_map_find(ptr %t23, ptr %a25, 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) - %t27 = icmp slt i64 %t26, 0 - br i1 %t27, label %map.missing9280, label %map.found9281 -map.missing9280: - store { ptr, i64, i64 } zeroinitializer, ptr %a28 - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_buf_str(ptr %a28, ptr %a29, i32 1) - call void @finch_map_missing(ptr @.str.6452, i64 144, ptr %a28) - unreachable -map.found9281: - %t30 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t23, i32 0, i32 0 - %t31 = load ptr, ptr %t30 - %t32 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t31, i64 %t26 - %t33 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t32, i32 0, i32 2 - %t34 = load { ptr, i64, i64 }, ptr %t33 - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_copy(ptr %a36, ptr %a35) - %t37 = load { ptr, i64, i64 }, ptr %a36 - call void @finch_str_drop(ptr %a13) - ret { ptr, i64, i64 } %t37 -endif9277: - %t39 = load %S.C.CXCursor, ptr %a7 - store %S.C.CXCursor %t39, ptr %a40 - call void @clang_getCursorSpelling(ptr sret(%S.C.CXString) align 16 %a38, ptr %a40) - %t41 = load %S.C.CXString, ptr %a38 - %t42 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t41) - store { ptr, i64, i64 } %t42, ptr %a43 - %t44 = getelementptr inbounds { ptr, i64, i64 }, ptr %a43, i32 0, i32 1 - %t45 = load i64, ptr %t44 - %t46 = icmp eq i64 %t45, 0 - br label %logic.from9282 -logic.from9282: - br i1 %t46, label %logic.end9284, label %logic.rhs9283 -logic.rhs9283: - %t47 = load { ptr, i64, i64 }, ptr %a43 - store { ptr, i64, i64 } %t47, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.6454, i64 1, i64 0 }, ptr %a50 - %t51 = call i64 @finch_str_find(ptr %a48, ptr %a50) - %t52 = icmp sge i64 %t51, 0 - br label %logic.rend9285 -logic.rend9285: - br label %logic.end9284 -logic.end9284: - %t53 = phi i1 [ true, %logic.from9282 ], [ %t52, %logic.rend9285 ] - br i1 %t53, label %then9286, label %endif9288 -then9286: - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic9289, label %ok9290 -panic9289: - call void @finch_panic(ptr @.str.6455, i64 148, ptr @.str.6456) - unreachable -ok9290: - %t56 = getelementptr inbounds %S.cimport.Importer, ptr %t54, i32 0, i32 5 - %t57 = load i64, ptr %t56 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %t56 - %t59 = load ptr, ptr %a1 - %t60 = icmp eq ptr %t59, null - br i1 %t60, label %panic9291, label %ok9292 -panic9291: - call void @finch_panic(ptr @.str.6458, i64 149, ptr @.str.6459) - unreachable -ok9292: - %t61 = getelementptr inbounds %S.cimport.Importer, ptr %t59, i32 0, i32 5 - %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.6457, i64 12, i64 0 }, ptr %a66 - store { ptr, i64, i64 } %t64, ptr %a67 - call void @finch_str_concat(ptr %a65, ptr %a66, ptr %a67) - store { ptr, i64, i64 } %t64, ptr %a68 - call void @finch_str_drop(ptr %a68) - %t69 = load { ptr, i64, i64 }, ptr %a65 - %t70 = load { ptr, i64, i64 }, ptr %a43 - store { ptr, i64, i64 } %t69, ptr %a43 - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif9288 -endif9288: - %t72 = load { ptr, i64, i64 }, ptr %a43 - %t73 = load ptr, ptr %a1 - %t74 = icmp eq ptr %t73, null - br i1 %t74, label %panic9293, label %ok9294 -panic9293: - call void @finch_panic(ptr @.str.6460, i64 151, ptr @.str.6461) - unreachable -ok9294: - %t75 = getelementptr inbounds %S.cimport.Importer, ptr %t73, i32 0, i32 3 - %t76 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t76, ptr %a77 - store i32 0, ptr %a78 - %t79 = call i64 @finch_map_slot(ptr %t75, ptr %a77, 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 %a78) - %t80 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t75, i32 0, i32 0 - %t81 = load ptr, ptr %t80 - %t82 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t81, i64 %t79 - %t83 = load i32, ptr %a78 - %t84 = icmp ne i32 %t83, 0 - br i1 %t84, label %map.new9295, label %map.have9296 -map.new9295: - %t85 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i32 0, i32 1 - call void @finch_str_copy(ptr %t85, ptr %a77) - %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t86 - br label %map.have9296 -map.have9296: - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i32 0, i32 2 - store { ptr, i64, i64 } %t72, ptr %a88 - call void @finch_str_copy(ptr %a89, ptr %a88) - %t90 = load { ptr, i64, i64 }, ptr %a89 - %t91 = load { ptr, i64, i64 }, ptr %t87 - store { ptr, i64, i64 } %t90, ptr %t87 - store { ptr, i64, i64 } %t91, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a43 - call void @finch_str_drop(ptr %a13) - 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 - %a13 = alloca %S.C.CXString, align 16 - %a15 = alloca %S.C.CXCursor, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca %S.C.CXType, align 16 - %a43 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca i32, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca %S.C.CXType, align 16 - %a72 = alloca %S.cimport.CStruct, align 16 - %a74 = alloca %S.C.CXCursor, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca %S.cimport.FieldCtx, align 16 - %a85 = alloca %S.C.CXType, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca i32, align 16 - %a116 = alloca %S.cimport.CStruct, align 16 - %a117 = alloca %S.cimport.CStruct, align 16 - %a120 = alloca %S.cimport.CStruct, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = 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 - %t14 = load %S.C.CXCursor, ptr %a12 - store %S.C.CXCursor %t14, ptr %a15 - call void @clang_getCursorUSR(ptr sret(%S.C.CXString) align 16 %a13, ptr %a15) - %t16 = load %S.C.CXString, ptr %a13 - %t17 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t16) - store { ptr, i64, i64 } %t17, ptr %a18 - %t19 = load ptr, ptr %a1 - %t20 = load %S.C.CXType, ptr %a7 - %t21 = call { ptr, i64, i64 } @finch.cimport.recordName(ptr %t19, %S.C.CXType %t20) - store { ptr, i64, i64 } %t21, ptr %a22 - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic9297, label %ok9298 -panic9297: - call void @finch_panic(ptr @.str.6462, i64 161, ptr @.str.6463) - unreachable -ok9298: - %t25 = getelementptr inbounds %S.cimport.Importer, ptr %t23, i32 0, i32 0 - %t26 = getelementptr inbounds %S.cimport.CImports, ptr %t25, i32 0, i32 3 - %t27 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t27, ptr %a28 - %t29 = call i64 @finch_map_find(ptr %t26, ptr %a28, 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) - %t30 = icmp sge i64 %t29, 0 - br label %logic.from9299 -logic.from9299: - br i1 %t30, label %logic.end9301, label %logic.rhs9300 -logic.rhs9300: - %t31 = load ptr, ptr %a1 - %t32 = icmp eq ptr %t31, null - br i1 %t32, label %panic9302, label %ok9303 -panic9302: - call void @finch_panic(ptr @.str.6464, i64 161, ptr @.str.6465) - unreachable -ok9303: - %t33 = getelementptr inbounds %S.cimport.Importer, ptr %t31, i32 0, i32 4 - %t34 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t34, ptr %a35 - %t36 = call i64 @finch_map_find(ptr %t33, ptr %a35, 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) - %t37 = icmp sge i64 %t36, 0 - br label %logic.rend9304 -logic.rend9304: - br label %logic.end9301 -logic.end9301: - %t38 = phi i1 [ true, %logic.from9299 ], [ %t37, %logic.rend9304 ] - br i1 %t38, label %then9305, label %endif9307 -then9305: - %t39 = load { ptr, i64, i64 }, ptr %a22 - call void @finch_str_drop(ptr %a18) - ret { ptr, i64, i64 } %t39 -endif9307: - %t40 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t40, ptr %a41 - %t42 = call i64 @clang_Type_getSizeOf(ptr %a41) - store i64 %t42, ptr %a43 - %t44 = load i64, ptr %a43 - %t45 = icmp slt i64 %t44, 0 - br i1 %t45, label %then9308, label %endif9310 -then9308: - call void @finch_str_drop(ptr %a22) - call void @finch_str_drop(ptr %a18) - ret { ptr, i64, i64 } { ptr @.str.6466, i64 0, i64 0 } -endif9310: - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic9311, label %ok9312 -panic9311: - call void @finch_panic(ptr @.str.6467, i64 168, ptr @.str.6468) - unreachable -ok9312: - %t48 = getelementptr inbounds %S.cimport.Importer, ptr %t46, i32 0, i32 4 - %t49 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t49, ptr %a50 - store i32 0, ptr %a51 - %t52 = call i64 @finch_map_slot(ptr %t48, ptr %a50, 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 %a51) - %t53 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t48, i32 0, i32 0 - %t54 = load ptr, ptr %t53 - %t55 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t54, i64 %t52 - %t56 = load i32, ptr %a51 - %t57 = icmp ne i32 %t56, 0 - br i1 %t57, label %map.new9313, label %map.have9314 -map.new9313: - %t58 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i32 0, i32 1 - call void @finch_str_copy(ptr %t58, ptr %a50) - %t59 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i32 0, i32 2 - store i1 false, ptr %t59 - br label %map.have9314 -map.have9314: - %t60 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t55, i32 0, i32 2 - store i1 true, ptr %t60 - %t61 = load { ptr, i64, i64 }, ptr %a22 - 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.cimport.CStruct zeroinitializer, { ptr, i64, i64 } %t64, 0 - %t66 = load i64, ptr %a43 - %t67 = insertvalue %S.cimport.CStruct %t65, i64 %t66, 2 - %t68 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t68, ptr %a69 - %t70 = call i64 @clang_Type_getAlignOf(ptr %a69) - %t71 = insertvalue %S.cimport.CStruct %t67, i64 %t70, 3 - store %S.cimport.CStruct %t71, ptr %a72 - %t73 = load %S.C.CXCursor, ptr %a12 - store %S.C.CXCursor %t73, ptr %a74 - %t75 = call i32 @clang_getCursorKind(ptr %a74) - %t76 = icmp eq i32 %t75, 3 - br i1 %t76, label %then9315, label %endif9317 -then9315: - %t77 = getelementptr inbounds %S.cimport.CStruct, ptr %a72, i32 0, i32 4 - %t78 = load { ptr, i64, i64 }, ptr %t77 - store { ptr, i64, i64 } { ptr @.str.6469, i64 12, i64 0 }, ptr %t77 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif9317 -endif9317: - %t80 = load ptr, ptr %a1 - %t81 = insertvalue %S.cimport.FieldCtx zeroinitializer, ptr %t80, 0 - %t82 = insertvalue %S.cimport.FieldCtx %t81, ptr %a72, 1 - store %S.cimport.FieldCtx %t82, ptr %a83 - %t84 = load %S.C.CXType, ptr %a7 - store %S.C.CXType %t84, ptr %a85 - %t86 = call i32 @clang_Type_visitFields(ptr %a85, ptr @finch.c.cimport.visitField, ptr %a83) - %t87 = load ptr, ptr %a1 - %t88 = icmp eq ptr %t87, null - br i1 %t88, label %panic9318, label %ok9319 -panic9318: - call void @finch_panic(ptr @.str.6470, i64 176, ptr @.str.6471) - unreachable -ok9319: - %t89 = getelementptr inbounds %S.cimport.Importer, ptr %t87, i32 0, i32 4 - %t90 = load { ptr, i64, i64 }, ptr %a18 - store { ptr, i64, i64 } %t90, ptr %a91 - %t92 = call i64 @finch_map_find(ptr %t89, ptr %a91, 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) - %t93 = icmp sge i64 %t92, 0 - br i1 %t93, label %remove.hit9320, label %remove.end9321 -remove.hit9320: - %t94 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t89, i32 0, i32 0 - %t95 = load ptr, ptr %t94 - %t96 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t95, i64 %t92 - %t97 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t96, i32 0, i32 1 - call void @finch_str_drop(ptr %t97) - %t98 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t96, i32 0, i32 2 - call void @finch_map_remove_at(ptr %t89, i64 %t92, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, i1 }, ptr null, i32 1) to i64)) - br label %remove.end9321 -remove.end9321: - %t99 = load %S.cimport.CStruct, ptr %a72 - %t100 = load ptr, ptr %a1 - %t101 = icmp eq ptr %t100, null - br i1 %t101, label %panic9322, label %ok9323 -panic9322: - call void @finch_panic(ptr @.str.6472, i64 177, ptr @.str.6473) - unreachable -ok9323: - %t102 = getelementptr inbounds %S.cimport.Importer, ptr %t100, i32 0, i32 0 - %t103 = getelementptr inbounds %S.cimport.CImports, ptr %t102, i32 0, i32 3 - %t104 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t104, ptr %a105 - store i32 0, ptr %a106 - %t107 = call i64 @finch_map_slot(ptr %t103, ptr %a105, 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 %a106) - %t108 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t103, i32 0, i32 0 - %t109 = load ptr, ptr %t108 - %t110 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t109, i64 %t107 - %t111 = load i32, ptr %a106 - %t112 = icmp ne i32 %t111, 0 - br i1 %t112, label %map.new9324, label %map.have9325 -map.new9324: - %t113 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i32 0, i32 1 - call void @finch_str_copy(ptr %t113, ptr %a105) - %t114 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i32 0, i32 2 - store %S.cimport.CStruct zeroinitializer, ptr %t114 - br label %map.have9325 -map.have9325: - %t115 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CStruct }, ptr %t110, i32 0, i32 2 - store %S.cimport.CStruct %t99, ptr %a116 - call void @finch.copy.S_cimport_CStruct(ptr %a117, ptr %a116) - %t118 = load %S.cimport.CStruct, ptr %a117 - %t119 = load %S.cimport.CStruct, ptr %t115 - store %S.cimport.CStruct %t118, ptr %t115 - store %S.cimport.CStruct %t119, ptr %a120 - call void @finch.drop.S_cimport_CStruct(ptr %a120) - %t121 = load ptr, ptr %a1 - %t122 = icmp eq ptr %t121, null - br i1 %t122, label %panic9326, label %ok9327 -panic9326: - call void @finch_panic(ptr @.str.6474, i64 178, ptr @.str.6475) - unreachable -ok9327: - %t123 = getelementptr inbounds %S.cimport.Importer, ptr %t121, i32 0, i32 0 - %t124 = getelementptr inbounds %S.cimport.CImports, ptr %t123, i32 0, i32 4 - %t125 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i32 0, i32 1 - %t126 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t126, ptr %a127 - call void @finch_str_copy(ptr %a128, ptr %a127) - %t129 = load { ptr, i64, i64 }, 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 ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t132 = load ptr, ptr %t124 - %t133 = getelementptr inbounds { ptr, i64, i64 }, ptr %t132, i64 %t130 - store { ptr, i64, i64 } %t129, ptr %t133 - store i64 %t131, ptr %t125 - %t134 = load { ptr, i64, i64 }, ptr %a22 - call void @finch.drop.S_cimport_CStruct(ptr %a72) - call void @finch_str_drop(ptr %a18) - ret { ptr, i64, i64 } %t134 -} - -define internal void @finch.drop.S_cimport_Mapped(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 0 - call void @finch.drop.S_ast_Type(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Mapped, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - ret void -} - -define internal i32 @finch.cimport.visitField(%S.C.CXCursor %p0, ptr %p1) { -entry: - %a1 = alloca %S.C.CXCursor, align 16 - %a2 = alloca ptr, align 16 - %a4 = alloca ptr, align 16 - %a5 = alloca %S.C.CXString, align 16 - %a7 = alloca %S.C.CXCursor, align 16 - %a11 = alloca %S.cimport.CField, align 16 - %a12 = alloca %S.C.CXType, align 16 - %a13 = alloca %S.C.CXType, align 16 - %a15 = alloca %S.C.CXCursor, align 16 - %a17 = alloca %S.C.CXType, align 16 - %a19 = alloca %S.C.CXType, align 16 - %a21 = alloca %S.C.CXCursor, align 16 - %a26 = alloca %S.C.CXType, align 16 - %a30 = alloca %S.C.CXType, align 16 - %a34 = alloca %S.C.CXCursor, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.C.CXCursor, align 16 - %a51 = alloca %S.C.CXType, align 16 - %a53 = alloca %S.C.CXCursor, align 16 - %a64 = alloca %S.cimport.Mapped, align 16 - %a70 = alloca %S.ast.Type, align 16 - %a71 = alloca %S.ast.Type, align 16 - %a74 = alloca %S.ast.Type, align 16 - %a97 = alloca %S.cimport.CField, align 16 - %a98 = 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 - %t6 = load %S.C.CXCursor, ptr %a1 - store %S.C.CXCursor %t6, ptr %a7 - call void @clang_getCursorSpelling(ptr sret(%S.C.CXString) align 16 %a5, ptr %a7) - %t8 = load %S.C.CXString, ptr %a5 - %t9 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t8) - %t10 = insertvalue %S.cimport.CField zeroinitializer, { ptr, i64, i64 } %t9, 0 - store %S.cimport.CField %t10, ptr %a11 - %t14 = load %S.C.CXCursor, ptr %a1 - store %S.C.CXCursor %t14, ptr %a15 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a13, ptr %a15) - %t16 = load %S.C.CXType, ptr %a13 - store %S.C.CXType %t16, ptr %a17 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a12, ptr %a17) - %t18 = load %S.C.CXType, ptr %a12 - store %S.C.CXType %t18, ptr %a19 - %t20 = load %S.C.CXCursor, ptr %a1 - store %S.C.CXCursor %t20, ptr %a21 - %t22 = call i64 @clang_Cursor_getOffsetOfField(ptr %a21) - %t23 = sdiv i64 %t22, 8 - %t24 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 2 - store i64 %t23, ptr %t24 - %t25 = load %S.C.CXType, ptr %a19 - store %S.C.CXType %t25, ptr %a26 - %t27 = call i64 @clang_Type_getSizeOf(ptr %a26) - %t28 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 3 - store i64 %t27, ptr %t28 - %t29 = load %S.C.CXType, ptr %a19 - store %S.C.CXType %t29, ptr %a30 - %t31 = call i64 @clang_Type_getAlignOf(ptr %a30) - %t32 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 4 - store i64 %t31, ptr %t32 - %t33 = load %S.C.CXCursor, ptr %a1 - store %S.C.CXCursor %t33, ptr %a34 - %t35 = call i32 @clang_Cursor_isBitField(ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br i1 %t36, label %then9328, label %else9329 -then9328: - %t37 = load ptr, ptr %a4 - %t38 = icmp eq ptr %t37, null - br i1 %t38, label %panic9331, label %ok9332 -panic9331: - call void @finch_panic(ptr @.str.6477, i64 195, ptr @.str.6478) - unreachable -ok9332: - %t39 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t37, i32 0, i32 1 - %t40 = load ptr, ptr %t39 - %t41 = icmp eq ptr %t40, null - br i1 %t41, label %panic9333, label %ok9334 -panic9333: - call void @finch_panic(ptr @.str.6479, i64 195, ptr @.str.6480) - unreachable -ok9334: - %t42 = getelementptr inbounds %S.cimport.CStruct, ptr %t40, i32 0, i32 4 - %t43 = load { ptr, i64, i64 }, ptr %t42 - store { ptr, i64, i64 } { ptr @.str.6476, i64 14, i64 0 }, ptr %t42 - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 5 - store i1 true, ptr %t45 - br label %endif9330 -else9329: - %t46 = getelementptr inbounds %S.C.CXType, ptr %a19, i32 0, i32 0 - %t47 = load i32, ptr %t46 - %t48 = icmp eq i32 %t47, 105 - br label %logic.from9335 -logic.from9335: - br i1 %t48, label %logic.rhs9336, label %logic.end9337 -logic.rhs9336: - %t50 = load %S.C.CXType, ptr %a19 - store %S.C.CXType %t50, ptr %a51 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a49, ptr %a51) - %t52 = load %S.C.CXCursor, ptr %a49 - store %S.C.CXCursor %t52, ptr %a53 - %t54 = call i32 @clang_getCursorKind(ptr %a53) - %t55 = icmp eq i32 %t54, 3 - br label %logic.rend9338 -logic.rend9338: - br label %logic.end9337 -logic.end9337: - %t56 = phi i1 [ false, %logic.from9335 ], [ %t55, %logic.rend9338 ] - br i1 %t56, label %then9339, label %else9340 -then9339: - %t57 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 5 - store i1 true, ptr %t57 - br label %endif9341 -else9340: - %t58 = load ptr, ptr %a4 - %t59 = icmp eq ptr %t58, null - br i1 %t59, label %panic9342, label %ok9343 -panic9342: - call void @finch_panic(ptr @.str.6481, i64 200, ptr @.str.6482) - unreachable -ok9343: - %t60 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t58, i32 0, i32 0 - %t61 = load ptr, ptr %t60 - %t62 = load %S.C.CXType, ptr %a19 - %t63 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t61, %S.C.CXType %t62, i1 false, i1 false) - store %S.cimport.Mapped %t63, ptr %a64 - %t65 = getelementptr inbounds %S.cimport.Mapped, ptr %a64, i32 0, i32 2 - %t66 = load i1, ptr %t65 - br i1 %t66, label %then9344, label %else9345 -then9344: - %t67 = getelementptr inbounds %S.cimport.Mapped, ptr %a64, i32 0, i32 0 - %t68 = load %S.ast.Type, ptr %t67 - %t69 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 1 - store %S.ast.Type %t68, ptr %a70 - call void @finch.copy.S_ast_Type(ptr %a71, ptr %a70) - %t72 = load %S.ast.Type, ptr %a71 - %t73 = load %S.ast.Type, ptr %t69 - store %S.ast.Type %t72, ptr %t69 - store %S.ast.Type %t73, ptr %a74 - call void @finch.drop.S_ast_Type(ptr %a74) - br label %endif9346 -else9345: - %t75 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 5 - store i1 true, ptr %t75 - br label %endif9346 -endif9346: - call void @finch.drop.S_cimport_Mapped(ptr %a64) - br label %endif9341 -endif9341: - br label %endif9330 -endif9330: - %t76 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 5 - %t77 = load i1, ptr %t76 - br i1 %t77, label %then9347, label %endif9349 -then9347: - %t78 = load ptr, ptr %a4 - %t79 = icmp eq ptr %t78, null - br i1 %t79, label %panic9350, label %ok9351 -panic9350: - call void @finch_panic(ptr @.str.6483, i64 208, ptr @.str.6484) - unreachable -ok9351: - %t80 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t78, i32 0, i32 1 - %t81 = load ptr, ptr %t80 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic9352, label %ok9353 -panic9352: - call void @finch_panic(ptr @.str.6485, i64 208, ptr @.str.6486) - unreachable -ok9353: - %t83 = getelementptr inbounds %S.cimport.CStruct, ptr %t81, i32 0, i32 5 - store i1 true, ptr %t83 - br label %endif9349 -endif9349: - %t84 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 0 - %t85 = getelementptr inbounds { ptr, i64, i64 }, ptr %t84, i32 0, i32 1 - %t86 = load i64, ptr %t85 - %t87 = icmp eq i64 %t86, 0 - br i1 %t87, label %then9354, label %endif9356 -then9354: - %t88 = getelementptr inbounds %S.cimport.CField, ptr %a11, i32 0, i32 5 - store i1 true, ptr %t88 - br label %endif9356 -endif9356: - %t89 = load ptr, ptr %a4 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic9357, label %ok9358 -panic9357: - call void @finch_panic(ptr @.str.6487, i64 213, ptr @.str.6488) - unreachable -ok9358: - %t91 = getelementptr inbounds %S.cimport.FieldCtx, ptr %t89, i32 0, i32 1 - %t92 = load ptr, ptr %t91 - %t93 = icmp eq ptr %t92, null - br i1 %t93, label %panic9359, label %ok9360 -panic9359: - call void @finch_panic(ptr @.str.6489, i64 213, ptr @.str.6490) - unreachable -ok9360: - %t94 = getelementptr inbounds %S.cimport.CStruct, ptr %t92, i32 0, i32 1 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t96 = load %S.cimport.CField, ptr %a11 - store %S.cimport.CField %t96, ptr %a97 - call void @finch.copy.S_cimport_CField(ptr %a98, ptr %a97) - %t99 = load %S.cimport.CField, ptr %a98 - %t100 = load i64, ptr %t95 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %t94, i64 %t101, i64 ptrtoint (ptr getelementptr (%S.cimport.CField, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %t94 - %t103 = getelementptr inbounds %S.cimport.CField, ptr %t102, i64 %t100 - store %S.cimport.CField %t99, ptr %t103 - store i64 %t101, ptr %t95 - call void @finch.drop.S_cimport_CField(ptr %a11) - 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 - %a8 = alloca %S.ast.Type, align 16 - %a11 = alloca %S.ast.Type, align 16 - %a17 = alloca %S.ast.Type, align 16 - %a20 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a29 = alloca %S.ast.Type, align 16 - %a35 = alloca %S.ast.Type, align 16 - %a38 = alloca %S.ast.Type, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - store i64 %p0, ptr %a1 - store i1 %p1, ptr %a2 - %t3 = load i64, ptr %a1 - %t4 = icmp eq i64 %t3, 1 - br i1 %t4, label %then9361, label %endif9363 -then9361: - %t5 = load i1, ptr %a2 - br i1 %t5, label %then9364, label %endif9366 -then9364: - %t6 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6491, i64 2, i64 0 }) - %t7 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t6) - store %S.ast.Type %t6, ptr %a8 - call void @finch.drop.S_ast_Type(ptr %a8) - ret %S.cimport.Mapped %t7 -endif9366: - %t9 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6492, i64 2, i64 0 }) - %t10 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t9) - store %S.ast.Type %t9, ptr %a11 - call void @finch.drop.S_ast_Type(ptr %a11) - ret %S.cimport.Mapped %t10 -endif9363: - %t12 = load i64, ptr %a1 - %t13 = icmp eq i64 %t12, 2 - br i1 %t13, label %then9367, label %endif9369 -then9367: - %t14 = load i1, ptr %a2 - br i1 %t14, label %then9370, label %endif9372 -then9370: - %t15 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6493, i64 3, i64 0 }) - %t16 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t15) - store %S.ast.Type %t15, ptr %a17 - call void @finch.drop.S_ast_Type(ptr %a17) - ret %S.cimport.Mapped %t16 -endif9372: - %t18 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6494, i64 3, i64 0 }) - %t19 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t18) - store %S.ast.Type %t18, ptr %a20 - call void @finch.drop.S_ast_Type(ptr %a20) - ret %S.cimport.Mapped %t19 -endif9369: - %t21 = load i64, ptr %a1 - %t22 = icmp eq i64 %t21, 4 - br i1 %t22, label %then9373, label %endif9375 -then9373: - %t23 = load i1, ptr %a2 - br i1 %t23, label %then9376, label %endif9378 -then9376: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6495, i64 3, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9378: - %t27 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6496, i64 3, i64 0 }) - %t28 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t27) - store %S.ast.Type %t27, ptr %a29 - call void @finch.drop.S_ast_Type(ptr %a29) - ret %S.cimport.Mapped %t28 -endif9375: - %t30 = load i64, ptr %a1 - %t31 = icmp eq i64 %t30, 8 - br i1 %t31, label %then9379, label %endif9381 -then9379: - %t32 = load i1, ptr %a2 - br i1 %t32, label %then9382, label %endif9384 -then9382: - %t33 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6497, i64 3, i64 0 }) - %t34 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t33) - store %S.ast.Type %t33, ptr %a35 - call void @finch.drop.S_ast_Type(ptr %a35) - ret %S.cimport.Mapped %t34 -endif9384: - %t36 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6498, i64 3, i64 0 }) - %t37 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t36) - store %S.ast.Type %t36, ptr %a38 - call void @finch.drop.S_ast_Type(ptr %a38) - ret %S.cimport.Mapped %t37 -endif9381: - %t39 = load i64, ptr %a1 - %t40 = mul i64 %t39, 8 - call void @finch_str_from_int(ptr %a41, i64 %t40) - %t42 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } { ptr @.str.6499, i64 7, i64 0 }, ptr %a44 - store { ptr, i64, i64 } %t42, ptr %a45 - call void @finch_str_concat(ptr %a43, ptr %a44, ptr %a45) - store { ptr, i64, i64 } %t42, ptr %a46 - call void @finch_str_drop(ptr %a46) - %t47 = load { ptr, i64, i64 }, ptr %a43 - store { ptr, i64, i64 } %t47, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.6500, i64 11, i64 0 }, ptr %a50 - call void @finch_str_concat(ptr %a48, ptr %a49, ptr %a50) - store { ptr, i64, i64 } %t47, ptr %a51 - call void @finch_str_drop(ptr %a51) - %t52 = load { ptr, i64, i64 }, ptr %a48 - %t53 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a54 - call void @finch_str_drop(ptr %a54) - ret %S.cimport.Mapped %t53 -} - -define internal %S.cimport.Mapped @finch.cimport.mapType(ptr %p0, %S.C.CXType %p1, i1 %p2, i1 %p3) { -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 - %a21 = alloca %S.ast.Type, align 16 - %a26 = alloca %S.ast.Type, align 16 - %a34 = alloca %S.ast.Type, align 16 - %a75 = alloca %S.ast.Type, align 16 - %a80 = alloca %S.ast.Type, align 16 - %a83 = alloca %S.C.CXType, align 16 - %a84 = alloca %S.C.CXType, align 16 - %a86 = alloca %S.C.CXType, align 16 - %a88 = alloca %S.C.CXType, align 16 - %a90 = alloca %S.C.CXType, align 16 - %a103 = alloca %S.C.CXType, align 16 - %a109 = alloca %S.ast.Type, align 16 - %a123 = alloca %S.ast.Type, align 16 - %a127 = alloca %S.cimport.Mapped, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a142 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca %S.ast.Type, align 16 - %a154 = alloca %S.ast.Type, align 16 - %a157 = alloca %S.C.CXCursor, align 16 - %a159 = alloca %S.C.CXType, align 16 - %a161 = alloca %S.C.CXCursor, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca %S.ast.Type, align 16 - %a185 = alloca %S.C.CXType, align 16 - %a187 = alloca %S.C.CXType, align 16 - %a190 = alloca %S.cimport.Mapped, align 16 - %a198 = alloca %S.C.CXType, align 16 - %a202 = alloca %S.ast.Type, align 16 - %a206 = alloca %S.C.CXString, align 16 - %a208 = alloca %S.C.CXType, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a222 = 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 %then9385, label %endif9387 -then9385: - %t19 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6501, i64 4, i64 0 }) - %t20 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t19) - store %S.ast.Type %t19, ptr %a21 - call void @finch.drop.S_ast_Type(ptr %a21) - ret %S.cimport.Mapped %t20 -endif9387: - %t22 = load i32, ptr %a16 - %t23 = icmp eq i32 %t22, 3 - br i1 %t23, label %then9388, label %endif9390 -then9388: - %t24 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6502, i64 4, i64 0 }) - %t25 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t24) - store %S.ast.Type %t24, ptr %a26 - call void @finch.drop.S_ast_Type(ptr %a26) - ret %S.cimport.Mapped %t25 -endif9390: - %t27 = load i32, ptr %a16 - %t28 = icmp eq i32 %t27, 13 - br label %logic.from9391 -logic.from9391: - br i1 %t28, label %logic.end9393, label %logic.rhs9392 -logic.rhs9392: - %t29 = load i32, ptr %a16 - %t30 = icmp eq i32 %t29, 4 - br label %logic.rend9394 -logic.rend9394: - br label %logic.end9393 -logic.end9393: - %t31 = phi i1 [ true, %logic.from9391 ], [ %t30, %logic.rend9394 ] - br i1 %t31, label %then9395, label %endif9397 -then9395: - %t32 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6503, i64 4, i64 0 }) - %t33 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t32) - store %S.ast.Type %t32, ptr %a34 - call void @finch.drop.S_ast_Type(ptr %a34) - ret %S.cimport.Mapped %t33 -endif9397: - %t35 = load i32, ptr %a16 - %t36 = icmp eq i32 %t35, 14 - br label %logic.from9398 -logic.from9398: - br i1 %t36, label %logic.end9400, label %logic.rhs9399 -logic.rhs9399: - %t37 = load i32, ptr %a16 - %t38 = icmp eq i32 %t37, 16 - br label %logic.rend9401 -logic.rend9401: - br label %logic.end9400 -logic.end9400: - %t39 = phi i1 [ true, %logic.from9398 ], [ %t38, %logic.rend9401 ] - br label %logic.from9402 -logic.from9402: - br i1 %t39, label %logic.end9404, label %logic.rhs9403 -logic.rhs9403: - %t40 = load i32, ptr %a16 - %t41 = icmp eq i32 %t40, 17 - br label %logic.rend9405 -logic.rend9405: - br label %logic.end9404 -logic.end9404: - %t42 = phi i1 [ true, %logic.from9402 ], [ %t41, %logic.rend9405 ] - br label %logic.from9406 -logic.from9406: - br i1 %t42, label %logic.end9408, label %logic.rhs9407 -logic.rhs9407: - %t43 = load i32, ptr %a16 - %t44 = icmp eq i32 %t43, 18 - br label %logic.rend9409 -logic.rend9409: - br label %logic.end9408 -logic.end9408: - %t45 = phi i1 [ true, %logic.from9406 ], [ %t44, %logic.rend9409 ] - br label %logic.from9410 -logic.from9410: - br i1 %t45, label %logic.end9412, label %logic.rhs9411 -logic.rhs9411: - %t46 = load i32, ptr %a16 - %t47 = icmp eq i32 %t46, 19 - br label %logic.rend9413 -logic.rend9413: - br label %logic.end9412 -logic.end9412: - %t48 = phi i1 [ true, %logic.from9410 ], [ %t47, %logic.rend9413 ] - br i1 %t48, label %then9414, label %endif9416 -then9414: - %t49 = load i64, ptr %a13 - %t50 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t49, i1 true) - ret %S.cimport.Mapped %t50 -endif9416: - %t51 = load i32, ptr %a16 - %t52 = icmp eq i32 %t51, 5 - br label %logic.from9417 -logic.from9417: - br i1 %t52, label %logic.end9419, label %logic.rhs9418 -logic.rhs9418: - %t53 = load i32, ptr %a16 - %t54 = icmp eq i32 %t53, 8 - br label %logic.rend9420 -logic.rend9420: - br label %logic.end9419 -logic.end9419: - %t55 = phi i1 [ true, %logic.from9417 ], [ %t54, %logic.rend9420 ] - br label %logic.from9421 -logic.from9421: - br i1 %t55, label %logic.end9423, label %logic.rhs9422 -logic.rhs9422: - %t56 = load i32, ptr %a16 - %t57 = icmp eq i32 %t56, 9 - br label %logic.rend9424 -logic.rend9424: - br label %logic.end9423 -logic.end9423: - %t58 = phi i1 [ true, %logic.from9421 ], [ %t57, %logic.rend9424 ] - br label %logic.from9425 -logic.from9425: - br i1 %t58, label %logic.end9427, label %logic.rhs9426 -logic.rhs9426: - %t59 = load i32, ptr %a16 - %t60 = icmp eq i32 %t59, 10 - br label %logic.rend9428 -logic.rend9428: - br label %logic.end9427 -logic.end9427: - %t61 = phi i1 [ true, %logic.from9425 ], [ %t60, %logic.rend9428 ] - br label %logic.from9429 -logic.from9429: - br i1 %t61, label %logic.end9431, label %logic.rhs9430 -logic.rhs9430: - %t62 = load i32, ptr %a16 - %t63 = icmp eq i32 %t62, 11 - br label %logic.rend9432 -logic.rend9432: - br label %logic.end9431 -logic.end9431: - %t64 = phi i1 [ true, %logic.from9429 ], [ %t63, %logic.rend9432 ] - br i1 %t64, label %then9433, label %endif9435 -then9433: - %t65 = load i64, ptr %a13 - %t66 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t65, i1 false) - ret %S.cimport.Mapped %t66 -endif9435: - %t67 = load i32, ptr %a16 - %t68 = icmp eq i32 %t67, 106 - br i1 %t68, label %then9436, label %endif9438 -then9436: - %t69 = load i64, ptr %a13 - %t70 = call %S.cimport.Mapped @finch.cimport.sized(i64 %t69, i1 true) - ret %S.cimport.Mapped %t70 -endif9438: - %t71 = load i32, ptr %a16 - %t72 = icmp eq i32 %t71, 21 - br i1 %t72, label %then9439, label %endif9441 -then9439: - %t73 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6504, i64 3, i64 0 }) - %t74 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t73) - store %S.ast.Type %t73, ptr %a75 - call void @finch.drop.S_ast_Type(ptr %a75) - ret %S.cimport.Mapped %t74 -endif9441: - %t76 = load i32, ptr %a16 - %t77 = icmp eq i32 %t76, 22 - br i1 %t77, label %then9442, label %endif9444 -then9442: - %t78 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6505, i64 5, i64 0 }) - %t79 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t78) - store %S.ast.Type %t78, ptr %a80 - call void @finch.drop.S_ast_Type(ptr %a80) - ret %S.cimport.Mapped %t79 -endif9444: - %t81 = load i32, ptr %a16 - %t82 = icmp eq i32 %t81, 101 - br i1 %t82, label %then9445, label %endif9447 -then9445: - %t85 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t85, ptr %a86 - call void @clang_getPointeeType(ptr sret(%S.C.CXType) align 16 %a84, ptr %a86) - %t87 = load %S.C.CXType, ptr %a84 - store %S.C.CXType %t87, ptr %a88 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a83, ptr %a88) - %t89 = load %S.C.CXType, ptr %a83 - store %S.C.CXType %t89, ptr %a90 - %t91 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t92 = load i32, ptr %t91 - %t93 = icmp eq i32 %t92, 13 - br label %logic.from9448 -logic.from9448: - br i1 %t93, label %logic.end9450, label %logic.rhs9449 -logic.rhs9449: - %t94 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t95 = load i32, ptr %t94 - %t96 = icmp eq i32 %t95, 4 - br label %logic.rend9451 -logic.rend9451: - br label %logic.end9450 -logic.end9450: - %t97 = phi i1 [ true, %logic.from9448 ], [ %t96, %logic.rend9451 ] - br label %logic.from9452 -logic.from9452: - br i1 %t97, label %logic.rhs9453, label %logic.end9454 -logic.rhs9453: - %t98 = load i1, ptr %a3 - br label %logic.rend9455 -logic.rend9455: - br label %logic.end9454 -logic.end9454: - %t99 = phi i1 [ false, %logic.from9452 ], [ %t98, %logic.rend9455 ] - br i1 %t99, label %then9456, label %endif9458 -then9456: - %t100 = load i1, ptr %a4 - %t101 = xor i1 %t100, true - br label %logic.from9459 -logic.from9459: - br i1 %t101, label %logic.end9461, label %logic.rhs9460 -logic.rhs9460: - %t102 = load %S.C.CXType, ptr %a90 - store %S.C.CXType %t102, ptr %a103 - %t104 = call i32 @clang_isConstQualifiedType(ptr %a103) - %t105 = icmp ne i32 %t104, 0 - br label %logic.rend9462 -logic.rend9462: - br label %logic.end9461 -logic.end9461: - %t106 = phi i1 [ true, %logic.from9459 ], [ %t105, %logic.rend9462 ] - br i1 %t106, label %then9463, label %endif9465 -then9463: - %t107 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6506, i64 3, i64 0 }) - %t108 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t107) - store %S.ast.Type %t107, ptr %a109 - call void @finch.drop.S_ast_Type(ptr %a109) - ret %S.cimport.Mapped %t108 -endif9465: - br label %endif9458 -endif9458: - %t110 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t111 = load i32, ptr %t110 - %t112 = icmp eq i32 %t111, 2 - br label %logic.from9466 -logic.from9466: - br i1 %t112, label %logic.end9468, label %logic.rhs9467 -logic.rhs9467: - %t113 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t114 = load i32, ptr %t113 - %t115 = icmp eq i32 %t114, 111 - br label %logic.rend9469 -logic.rend9469: - br label %logic.end9468 -logic.end9468: - %t116 = phi i1 [ true, %logic.from9466 ], [ %t115, %logic.rend9469 ] - br label %logic.from9470 -logic.from9470: - br i1 %t116, label %logic.end9472, label %logic.rhs9471 -logic.rhs9471: - %t117 = getelementptr inbounds %S.C.CXType, ptr %a90, i32 0, i32 0 - %t118 = load i32, ptr %t117 - %t119 = icmp eq i32 %t118, 110 - br label %logic.rend9473 -logic.rend9473: - br label %logic.end9472 -logic.end9472: - %t120 = phi i1 [ true, %logic.from9470 ], [ %t119, %logic.rend9473 ] - br i1 %t120, label %then9474, label %endif9476 -then9474: - %t121 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6507, i64 3, i64 0 }) - %t122 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t121) - store %S.ast.Type %t121, ptr %a123 - call void @finch.drop.S_ast_Type(ptr %a123) - ret %S.cimport.Mapped %t122 -endif9476: - %t124 = load ptr, ptr %a1 - %t125 = load %S.C.CXType, ptr %a90 - %t126 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t124, %S.C.CXType %t125, i1 false, i1 false) - store %S.cimport.Mapped %t126, ptr %a127 - %t128 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 2 - %t129 = load i1, ptr %t128 - %t130 = xor i1 %t129, true - br label %logic.from9477 -logic.from9477: - br i1 %t130, label %logic.end9479, label %logic.rhs9478 -logic.rhs9478: - %t131 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t132 = getelementptr inbounds %S.ast.Type, ptr %t131, i32 0, i32 0 - %t133 = load { ptr, i64, i64 }, ptr %t132 - store { ptr, i64, i64 } %t133, ptr %a134 - store { ptr, i64, i64 } { ptr @.str.6508, 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.rend9480 -logic.rend9480: - br label %logic.end9479 -logic.end9479: - %t138 = phi i1 [ true, %logic.from9477 ], [ %t137, %logic.rend9480 ] - br label %logic.from9481 -logic.from9481: - br i1 %t138, label %logic.end9483, label %logic.rhs9482 -logic.rhs9482: - %t139 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t140 = getelementptr inbounds %S.ast.Type, ptr %t139, i32 0, i32 0 - %t141 = load { ptr, i64, i64 }, ptr %t140 - store { ptr, i64, i64 } %t141, ptr %a142 - store { ptr, i64, i64 } { ptr @.str.6509, i64 5, i64 0 }, ptr %a143 - %t144 = call i32 @finch_str_eq(ptr %a142, ptr %a143) - %t145 = icmp ne i32 %t144, 0 - br label %logic.rend9484 -logic.rend9484: - br label %logic.end9483 -logic.end9483: - %t146 = phi i1 [ true, %logic.from9481 ], [ %t145, %logic.rend9484 ] - br i1 %t146, label %then9485, label %endif9487 -then9485: - %t147 = call %S.ast.Type @finch.ast.simple({ ptr, i64, i64 } { ptr @.str.6510, i64 3, i64 0 }) - %t148 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t147) - store %S.ast.Type %t147, ptr %a149 - call void @finch.drop.S_ast_Type(ptr %a149) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t148 -endif9487: - %t150 = getelementptr inbounds %S.cimport.Mapped, ptr %a127, i32 0, i32 0 - %t151 = load %S.ast.Type, ptr %t150 - %t152 = call %S.ast.Type @finch.ast.ptrTo(%S.ast.Type %t151) - %t153 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t152) - store %S.ast.Type %t152, ptr %a154 - call void @finch.drop.S_ast_Type(ptr %a154) - call void @finch.drop.S_cimport_Mapped(ptr %a127) - ret %S.cimport.Mapped %t153 -endif9447: - %t155 = load i32, ptr %a16 - %t156 = icmp eq i32 %t155, 105 - br i1 %t156, label %then9488, label %endif9490 -then9488: - %t158 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t158, ptr %a159 - call void @clang_getTypeDeclaration(ptr sret(%S.C.CXCursor) align 16 %a157, ptr %a159) - %t160 = load %S.C.CXCursor, ptr %a157 - store %S.C.CXCursor %t160, ptr %a161 - %t162 = call i32 @clang_getCursorKind(ptr %a161) - %t163 = icmp eq i32 %t162, 3 - br i1 %t163, label %then9491, label %endif9493 -then9491: - %t164 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6511, i64 23, i64 0 }) - ret %S.cimport.Mapped %t164 -endif9493: - %t165 = load ptr, ptr %a1 - %t166 = load %S.C.CXType, ptr %a9 - %t167 = call { ptr, i64, i64 } @finch.cimport.defineRecord(ptr %t165, %S.C.CXType %t166) - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %a168, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = icmp eq i64 %t170, 0 - br i1 %t171, label %then9494, label %endif9496 -then9494: - %t172 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6512, i64 36, i64 0 }) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t172 -endif9496: - %t173 = insertvalue %S.ast.Type zeroinitializer, { ptr, i64, i64 } { ptr @.str.6513, i64 5, i64 0 }, 0 - %t174 = load { ptr, i64, i64 }, ptr %a168 - store { ptr, i64, i64 } %t174, ptr %a175 - call void @finch_str_copy(ptr %a176, ptr %a175) - %t177 = load { ptr, i64, i64 }, ptr %a176 - %t178 = insertvalue %S.ast.Type %t173, { ptr, i64, i64 } %t177, 2 - %t179 = insertvalue %S.ast.Type %t178, { ptr, i64, i64 } { ptr @.str.6514, i64 1, i64 0 }, 3 - %t180 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t179) - store %S.ast.Type %t179, ptr %a181 - call void @finch.drop.S_ast_Type(ptr %a181) - call void @finch_str_drop(ptr %a168) - ret %S.cimport.Mapped %t180 -endif9490: - %t182 = load i32, ptr %a16 - %t183 = icmp eq i32 %t182, 112 - br i1 %t183, label %then9497, label %endif9499 -then9497: - %t184 = load ptr, ptr %a1 - %t186 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t186, ptr %a187 - call void @clang_getArrayElementType(ptr sret(%S.C.CXType) align 16 %a185, ptr %a187) - %t188 = load %S.C.CXType, ptr %a185 - %t189 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t184, %S.C.CXType %t188, i1 false, i1 false) - store %S.cimport.Mapped %t189, ptr %a190 - %t191 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 2 - %t192 = load i1, ptr %t191 - %t193 = xor i1 %t192, true - br i1 %t193, label %then9500, label %endif9502 -then9500: - %t194 = load %S.cimport.Mapped, ptr %a190 - ret %S.cimport.Mapped %t194 -endif9502: - %t195 = getelementptr inbounds %S.cimport.Mapped, ptr %a190, i32 0, i32 0 - %t196 = load %S.ast.Type, ptr %t195 - %t197 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t197, ptr %a198 - %t199 = call i64 @clang_getArraySize(ptr %a198) - %t200 = call %S.ast.Type @finch.cimport.fixed(%S.ast.Type %t196, i64 %t199) - %t201 = call %S.cimport.Mapped @finch.cimport.ok(%S.ast.Type %t200) - store %S.ast.Type %t200, ptr %a202 - call void @finch.drop.S_ast_Type(ptr %a202) - call void @finch.drop.S_cimport_Mapped(ptr %a190) - ret %S.cimport.Mapped %t201 -endif9499: - %t203 = load i32, ptr %a16 - %t204 = icmp eq i32 %t203, 23 - br i1 %t204, label %then9503, label %endif9505 -then9503: - %t205 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } { ptr @.str.6515, i64 16, i64 0 }) - ret %S.cimport.Mapped %t205 -endif9505: - %t207 = load %S.C.CXType, ptr %a9 - store %S.C.CXType %t207, ptr %a208 - call void @clang_getTypeSpelling(ptr sret(%S.C.CXString) align 16 %a206, ptr %a208) - %t209 = load %S.C.CXString, ptr %a206 - %t210 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t209) - store { ptr, i64, i64 } { ptr @.str.6516, i64 17, i64 0 }, ptr %a212 - store { ptr, i64, i64 } %t210, ptr %a213 - call void @finch_str_concat(ptr %a211, ptr %a212, ptr %a213) - store { ptr, i64, i64 } %t210, ptr %a214 - call void @finch_str_drop(ptr %a214) - %t215 = load { ptr, i64, i64 }, ptr %a211 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.6517, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - store { ptr, i64, i64 } %t215, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = call %S.cimport.Mapped @finch.cimport.no({ ptr, i64, i64 } %t220) - store { ptr, i64, i64 } %t220, ptr %a222 - call void @finch_str_drop(ptr %a222) - ret %S.cimport.Mapped %t221 -} - -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 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca i64, align 16 - %a49 = alloca i1, align 16 - %a50 = alloca i64, align 16 - %a62 = alloca i8, align 16 - %a63 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6519, 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.from9506 -logic.from9506: - br i1 %t13, label %logic.end9508, label %logic.rhs9507 -logic.rhs9507: - %t14 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6521, 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.rend9509 -logic.rend9509: - br label %logic.end9508 -logic.end9508: - %t20 = phi i1 [ true, %logic.from9506 ], [ %t19, %logic.rend9509 ] - br i1 %t20, label %then9510, label %else9511 -then9510: - 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.6522, i64 331) - %t26 = load { ptr, i64, i64 }, ptr %a23 - %t27 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t26, ptr %a6 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_drop(ptr %a28) - br label %endif9512 -else9511: - %t29 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t30 = load i64, ptr %t29 - %t31 = icmp sgt i64 %t30, 1 - br label %logic.from9513 -logic.from9513: - br i1 %t31, label %logic.rhs9514, label %logic.end9515 -logic.rhs9514: - %t32 = load { ptr, i64, i64 }, ptr %a6 - %t33 = extractvalue { ptr, i64, i64 } %t32, 1 - %t34 = icmp uge i64 0, %t33 - br i1 %t34, label %range9516, label %inrange9517 -range9516: - call void @finch_panic_index(ptr @.str.6523, i64 332, i64 0, i64 %t33) - unreachable -inrange9517: - %t35 = extractvalue { ptr, i64, i64 } %t32, 0 - %t36 = getelementptr inbounds i8, ptr %t35, i64 0 - %t37 = load i8, ptr %t36 - %t38 = icmp eq i8 %t37, 48 - br label %logic.rend9518 -logic.rend9518: - br label %logic.end9515 -logic.end9515: - %t39 = phi i1 [ false, %logic.from9513 ], [ %t38, %logic.rend9518 ] - br i1 %t39, label %then9519, label %endif9521 -then9519: - store i64 8, ptr %a7 - %t40 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t40, ptr %a41 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t44 = load i64, ptr %t43 - call void @finch_str_sub(ptr %a42, ptr %a41, i64 1, i64 %t44, ptr @.str.6524, i64 334) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t45, ptr %a6 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif9521 -endif9521: - br label %endif9512 -endif9512: - store i64 0, ptr %a48 - store i1 false, ptr %a49 - store i64 0, ptr %a50 - br label %while.cond9522 -while.cond9522: - %t51 = load i64, ptr %a50 - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t53 = load i64, ptr %t52 - %t54 = icmp slt i64 %t51, %t53 - br i1 %t54, label %while.body9523, label %while.end9524 -while.body9523: - %t55 = load i64, ptr %a50 - %t56 = load { ptr, i64, i64 }, ptr %a6 - %t57 = extractvalue { ptr, i64, i64 } %t56, 1 - %t58 = icmp uge i64 %t55, %t57 - br i1 %t58, label %range9525, label %inrange9526 -range9525: - call void @finch_panic_index(ptr @.str.6525, i64 340, i64 %t55, i64 %t57) - unreachable -inrange9526: - %t59 = extractvalue { ptr, i64, i64 } %t56, 0 - %t60 = getelementptr inbounds i8, ptr %t59, i64 %t55 - %t61 = load i8, ptr %t60 - store i8 %t61, ptr %a62 - store i64 99, ptr %a63 - %t64 = load i8, ptr %a62 - %t65 = icmp uge i8 %t64, 48 - br label %logic.from9527 -logic.from9527: - br i1 %t65, label %logic.rhs9528, label %logic.end9529 -logic.rhs9528: - %t66 = load i8, ptr %a62 - %t67 = icmp ule i8 %t66, 57 - br label %logic.rend9530 -logic.rend9530: - br label %logic.end9529 -logic.end9529: - %t68 = phi i1 [ false, %logic.from9527 ], [ %t67, %logic.rend9530 ] - br i1 %t68, label %then9531, label %else9532 -then9531: - %t69 = load i8, ptr %a62 - %t70 = zext i8 %t69 to i64 - %t71 = zext i8 48 to i64 - %t72 = sub i64 %t70, %t71 - store i64 %t72, ptr %a63 - br label %endif9533 -else9532: - %t73 = load i8, ptr %a62 - %t74 = icmp uge i8 %t73, 97 - br label %logic.from9534 -logic.from9534: - br i1 %t74, label %logic.rhs9535, label %logic.end9536 -logic.rhs9535: - %t75 = load i8, ptr %a62 - %t76 = icmp ule i8 %t75, 102 - br label %logic.rend9537 -logic.rend9537: - br label %logic.end9536 -logic.end9536: - %t77 = phi i1 [ false, %logic.from9534 ], [ %t76, %logic.rend9537 ] - br i1 %t77, label %then9538, label %else9539 -then9538: - %t78 = load i8, ptr %a62 - %t79 = zext i8 %t78 to i64 - %t80 = zext i8 97 to i64 - %t81 = sub i64 %t79, %t80 - %t82 = add i64 %t81, 10 - store i64 %t82, ptr %a63 - br label %endif9540 -else9539: - %t83 = load i8, ptr %a62 - %t84 = icmp uge i8 %t83, 65 - br label %logic.from9541 -logic.from9541: - br i1 %t84, label %logic.rhs9542, label %logic.end9543 -logic.rhs9542: - %t85 = load i8, ptr %a62 - %t86 = icmp ule i8 %t85, 70 - br label %logic.rend9544 -logic.rend9544: - br label %logic.end9543 -logic.end9543: - %t87 = phi i1 [ false, %logic.from9541 ], [ %t86, %logic.rend9544 ] - br i1 %t87, label %then9545, label %endif9547 -then9545: - %t88 = load i8, ptr %a62 - %t89 = zext i8 %t88 to i64 - %t90 = zext i8 65 to i64 - %t91 = sub i64 %t89, %t90 - %t92 = add i64 %t91, 10 - store i64 %t92, ptr %a63 - br label %endif9547 -endif9547: - br label %endif9540 -endif9540: - br label %endif9533 -endif9533: - %t93 = load i64, ptr %a63 - %t94 = load i64, ptr %a7 - %t95 = icmp sge i64 %t93, %t94 - br i1 %t95, label %then9548, label %endif9550 -then9548: - br label %while.end9524 -endif9550: - %t96 = load i64, ptr %a48 - %t97 = load i64, ptr %a7 - %t98 = mul i64 %t96, %t97 - %t99 = load i64, ptr %a63 - %t100 = add i64 %t98, %t99 - store i64 %t100, ptr %a48 - store i1 true, ptr %a49 - %t101 = load i64, ptr %a50 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %a50 - br label %while.cond9522 -while.end9524: - br label %while.cond9551 -while.cond9551: - %t103 = load i64, ptr %a50 - %t104 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t105 = load i64, ptr %t104 - %t106 = icmp slt i64 %t103, %t105 - br i1 %t106, label %while.body9552, label %while.end9553 -while.body9552: - store { ptr, i64, i64 } { ptr @.str.6526, i64 4, i64 0 }, ptr %a107 - %t109 = load i64, ptr %a50 - %t110 = load { ptr, i64, i64 }, ptr %a6 - %t111 = extractvalue { ptr, i64, i64 } %t110, 1 - %t112 = icmp uge i64 %t109, %t111 - br i1 %t112, label %range9554, label %inrange9555 -range9554: - call void @finch_panic_index(ptr @.str.6528, i64 358, i64 %t109, i64 %t111) - unreachable -inrange9555: - %t113 = extractvalue { ptr, i64, i64 } %t110, 0 - %t114 = getelementptr inbounds i8, ptr %t113, i64 %t109 - %t115 = load i8, ptr %t114 - call void @finch_str_from_char(ptr %a116, i8 signext %t115) - %t117 = load { ptr, i64, i64 }, ptr %a116 - store { ptr, i64, i64 } %t117, ptr %a118 - %t119 = call i64 @finch_str_find(ptr %a107, ptr %a118) - %t120 = icmp sge i64 %t119, 0 - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = xor i1 %t120, true - br i1 %t122, label %then9556, label %endif9558 -then9556: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9558: - %t123 = load i64, ptr %a50 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %a50 - br label %while.cond9551 -while.end9553: - %t125 = load i1, ptr %a49 - %t126 = xor i1 %t125, true - br label %logic.from9559 -logic.from9559: - br i1 %t126, label %logic.rhs9560, label %logic.end9561 -logic.rhs9560: - %t127 = load i64, ptr %a7 - %t128 = icmp ne i64 %t127, 8 - br label %logic.rend9562 -logic.rend9562: - br label %logic.end9561 -logic.end9561: - %t129 = phi i1 [ false, %logic.from9559 ], [ %t128, %logic.rend9562 ] - br i1 %t129, label %then9563, label %endif9565 -then9563: - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number zeroinitializer -endif9565: - %t130 = load i64, ptr %a48 - %t131 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t130, 1 - %t132 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t131, 0 - %t133 = insertvalue %S.cimport.Number %t132, i1 true, 1 - call void @finch_str_drop(ptr %a6) - ret %S.cimport.Number %t133 -} - -define internal %S.cimport.Number @finch.cimport.macroValue(ptr %p0, %S.C.CXCursor %p1) { -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 - %a28 = alloca %S.C.CXString, align 16 - %a37 = alloca %S.C.CXToken, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca i1, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a116 = 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 - %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 - %a172 = 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 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca i1, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = 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 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a216 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca double, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca double, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a248 = 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 %panic9566, label %ok9567 -panic9566: - call void @finch_panic(ptr @.str.6529, i64 373, ptr @.str.6530) - unreachable -ok9567: - %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.cond9568 -for.cond9568: - %t18 = load i64, ptr %a17 - %t19 = icmp slt i64 %t18, %t16 - br i1 %t19, label %for.body9569, label %for.end9571 -for.body9569: - %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 %then9572, label %endif9574 -then9572: - br label %for.step9570 -endif9574: - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t29 = load ptr, ptr %a1 - %t30 = icmp eq ptr %t29, null - br i1 %t30, label %panic9575, label %ok9576 -panic9575: - call void @finch_panic(ptr @.str.6531, i64 379, ptr @.str.6532) - unreachable -ok9576: - %t31 = getelementptr inbounds %S.cimport.Importer, ptr %t29, i32 0, i32 1 - %t32 = load ptr, ptr %t31 - %t33 = load i64, ptr %a17 - %t34 = load ptr, ptr %a3 - %t35 = getelementptr inbounds %S.C.CXToken, ptr %t34, i64 %t33 - %t36 = load %S.C.CXToken, ptr %t35 - store %S.C.CXToken %t36, ptr %a37 - call void @clang_getTokenSpelling(ptr sret(%S.C.CXString) align 16 %a28, ptr %t32, ptr %a37) - %t38 = load %S.C.CXString, ptr %a28 - %t39 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t38) - %t40 = load i64, ptr %t27 - %t41 = add i64 %t40, 1 - call void @finch_arr_reserve(ptr %a14, i64 %t41, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t42 = load ptr, ptr %a14 - %t43 = getelementptr inbounds { ptr, i64, i64 }, ptr %t42, i64 %t40 - store { ptr, i64, i64 } %t39, ptr %t43 - store i64 %t41, ptr %t27 - br label %for.step9570 -for.step9570: - %t44 = load i64, ptr %a17 - %t45 = add i64 %t44, 1 - store i64 %t45, ptr %a17 - br label %for.cond9568 -for.end9571: - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic9577, label %ok9578 -panic9577: - call void @finch_panic(ptr @.str.6533, i64 381, ptr @.str.6534) - unreachable -ok9578: - %t48 = getelementptr inbounds %S.cimport.Importer, ptr %t46, i32 0, i32 1 - %t49 = load ptr, ptr %t48 - %t50 = load ptr, ptr %a3 - %t51 = load i32, ptr %a4 - call void @clang_disposeTokens(ptr %t49, ptr %t50, i32 %t51) - br label %while.cond9579 -while.cond9579: - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t53 = load i64, ptr %t52 - %t54 = icmp sge i64 %t53, 2 - br label %logic.from9582 -logic.from9582: - br i1 %t54, label %logic.rhs9583, label %logic.end9584 -logic.rhs9583: - %t55 = load { ptr, i64, i64 }, ptr %a14 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 0, %t56 - br i1 %t57, label %range9585, label %inrange9586 -range9585: - call void @finch_panic_index(ptr @.str.6535, i64 383, i64 0, i64 %t56) - unreachable -inrange9586: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %t58, i64 0 - %t60 = load { ptr, i64, i64 }, ptr %t59 - store { ptr, i64, i64 } %t60, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.6536, 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.rend9587 -logic.rend9587: - br label %logic.end9584 -logic.end9584: - %t65 = phi i1 [ false, %logic.from9582 ], [ %t64, %logic.rend9587 ] - br label %logic.from9588 -logic.from9588: - br i1 %t65, label %logic.rhs9589, label %logic.end9590 -logic.rhs9589: - %t66 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t67 = load i64, ptr %t66 - %t68 = sub i64 %t67, 1 - %t69 = load { ptr, i64, i64 }, ptr %a14 - %t70 = extractvalue { ptr, i64, i64 } %t69, 1 - %t71 = icmp uge i64 %t68, %t70 - br i1 %t71, label %range9591, label %inrange9592 -range9591: - call void @finch_panic_index(ptr @.str.6537, i64 383, i64 %t68, i64 %t70) - unreachable -inrange9592: - %t72 = extractvalue { ptr, i64, i64 } %t69, 0 - %t73 = getelementptr inbounds { ptr, i64, i64 }, ptr %t72, i64 %t68 - %t74 = load { ptr, i64, i64 }, ptr %t73 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.6538, i64 1, i64 0 }, ptr %a76 - %t77 = call i32 @finch_str_eq(ptr %a75, ptr %a76) - %t78 = icmp ne i32 %t77, 0 - br label %logic.rend9593 -logic.rend9593: - br label %logic.end9590 -logic.end9590: - %t79 = phi i1 [ false, %logic.from9588 ], [ %t78, %logic.rend9593 ] - br i1 %t79, label %while.body9580, label %while.end9581 -while.body9580: - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t81 = load i64, ptr %t80 - %t82 = icmp uge i64 0, %t81 - br i1 %t82, label %range9594, label %inrange9595 -range9594: - call void @finch_panic_index(ptr @.str.6539, i64 384, i64 0, i64 %t81) - unreachable -inrange9595: - %t83 = load ptr, ptr %a14 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %t83, i64 0 - %t85 = load { ptr, i64, i64 }, ptr %t84 - call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - store { ptr, i64, i64 } %t85, ptr %a86 - call void @finch_str_drop(ptr %a86) - %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 %panic9596, label %ok9597 -panic9596: - call void @finch_panic(ptr @.str.6540, i64 385, ptr @.str.6541) - unreachable -ok9597: - %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 - store { ptr, i64, i64 } %t93, ptr %a94 - call void @finch_str_drop(ptr %a94) - br label %while.cond9579 -while.end9581: - store i1 false, ptr %a95 - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = icmp eq i64 %t97, 2 - br label %logic.from9598 -logic.from9598: - br i1 %t98, label %logic.rhs9599, label %logic.end9600 -logic.rhs9599: - %t99 = load { ptr, i64, i64 }, ptr %a14 - %t100 = extractvalue { ptr, i64, i64 } %t99, 1 - %t101 = icmp uge i64 0, %t100 - br i1 %t101, label %range9601, label %inrange9602 -range9601: - call void @finch_panic_index(ptr @.str.6542, i64 388, i64 0, i64 %t100) - unreachable -inrange9602: - %t102 = extractvalue { ptr, i64, i64 } %t99, 0 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 0 - %t104 = load { ptr, i64, i64 }, ptr %t103 - store { ptr, i64, i64 } %t104, ptr %a105 - store { ptr, i64, i64 } { ptr @.str.6543, i64 1, i64 0 }, ptr %a106 - %t107 = call i32 @finch_str_eq(ptr %a105, ptr %a106) - %t108 = icmp ne i32 %t107, 0 - br label %logic.rend9603 -logic.rend9603: - br label %logic.end9600 -logic.end9600: - %t109 = phi i1 [ false, %logic.from9598 ], [ %t108, %logic.rend9603 ] - br i1 %t109, label %then9604, label %endif9606 -then9604: - store i1 true, ptr %a95 - %t110 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t111 = load i64, ptr %t110 - %t112 = icmp uge i64 0, %t111 - br i1 %t112, label %range9607, label %inrange9608 -range9607: - call void @finch_panic_index(ptr @.str.6544, i64 390, i64 0, i64 %t111) - unreachable -inrange9608: - %t113 = load ptr, ptr %a14 - %t114 = getelementptr inbounds { ptr, i64, i64 }, ptr %t113, i64 0 - %t115 = load { ptr, i64, i64 }, ptr %t114 - call void @finch_arr_remove_gap(ptr %a14, i64 0, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - store { ptr, i64, i64 } %t115, ptr %a116 - call void @finch_str_drop(ptr %a116) - br label %endif9606 -endif9606: - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %a14, i32 0, i32 1 - %t118 = load i64, ptr %t117 - %t119 = icmp ne i64 %t118, 1 - br i1 %t119, label %then9609, label %endif9611 -then9609: - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9611: - %t120 = load { ptr, i64, i64 }, ptr %a14 - %t121 = extractvalue { ptr, i64, i64 } %t120, 1 - %t122 = icmp uge i64 0, %t121 - br i1 %t122, label %range9612, label %inrange9613 -range9612: - call void @finch_panic_index(ptr @.str.6545, i64 395, i64 0, i64 %t121) - unreachable -inrange9613: - %t123 = extractvalue { ptr, i64, i64 } %t120, 0 - %t124 = getelementptr inbounds { ptr, i64, i64 }, ptr %t123, i64 0 - %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 = getelementptr inbounds { ptr, i64, i64 }, ptr %a129, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = icmp eq i64 %t131, 0 - br label %logic.from9614 -logic.from9614: - br i1 %t132, label %logic.end9616, label %logic.rhs9615 -logic.rhs9615: - %t133 = load { ptr, i64, i64 }, ptr %a129 - %t134 = extractvalue { ptr, i64, i64 } %t133, 1 - %t135 = icmp uge i64 0, %t134 - br i1 %t135, label %range9617, label %inrange9618 -range9617: - call void @finch_panic_index(ptr @.str.6546, i64 396, i64 0, i64 %t134) - unreachable -inrange9618: - %t136 = extractvalue { ptr, i64, i64 } %t133, 0 - %t137 = getelementptr inbounds i8, ptr %t136, i64 0 - %t138 = load i8, ptr %t137 - %t139 = icmp uge i8 %t138, 48 - br label %logic.from9619 -logic.from9619: - br i1 %t139, label %logic.rhs9620, label %logic.end9621 -logic.rhs9620: - %t140 = load { ptr, i64, i64 }, ptr %a129 - %t141 = extractvalue { ptr, i64, i64 } %t140, 1 - %t142 = icmp uge i64 0, %t141 - br i1 %t142, label %range9622, label %inrange9623 -range9622: - call void @finch_panic_index(ptr @.str.6547, i64 396, i64 0, i64 %t141) - unreachable -inrange9623: - %t143 = extractvalue { ptr, i64, i64 } %t140, 0 - %t144 = getelementptr inbounds i8, ptr %t143, i64 0 - %t145 = load i8, ptr %t144 - %t146 = icmp ule i8 %t145, 57 - br label %logic.rend9624 -logic.rend9624: - br label %logic.end9621 -logic.end9621: - %t147 = phi i1 [ false, %logic.from9619 ], [ %t146, %logic.rend9624 ] - br label %logic.from9625 -logic.from9625: - br i1 %t147, label %logic.end9627, label %logic.rhs9626 -logic.rhs9626: - %t148 = load { ptr, i64, i64 }, ptr %a129 - %t149 = extractvalue { ptr, i64, i64 } %t148, 1 - %t150 = icmp uge i64 0, %t149 - br i1 %t150, label %range9628, label %inrange9629 -range9628: - call void @finch_panic_index(ptr @.str.6548, i64 396, i64 0, i64 %t149) - unreachable -inrange9629: - %t151 = extractvalue { ptr, i64, i64 } %t148, 0 - %t152 = getelementptr inbounds i8, ptr %t151, i64 0 - %t153 = load i8, ptr %t152 - %t154 = icmp eq i8 %t153, 46 - br label %logic.rend9630 -logic.rend9630: - br label %logic.end9627 -logic.end9627: - %t155 = phi i1 [ true, %logic.from9625 ], [ %t154, %logic.rend9630 ] - %t156 = xor i1 %t155, true - br label %logic.rend9631 -logic.rend9631: - br label %logic.end9616 -logic.end9616: - %t157 = phi i1 [ true, %logic.from9614 ], [ %t156, %logic.rend9631 ] - br i1 %t157, label %then9632, label %endif9634 -then9632: - call void @finch_str_drop(ptr %a129) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -endif9634: - %t158 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t158, ptr %a159 - store { ptr, i64, i64 } { ptr @.str.6550, i64 1, i64 0 }, ptr %a161 - %t162 = call i64 @finch_str_find(ptr %a159, ptr %a161) - %t163 = icmp sge i64 %t162, 0 - br label %logic.from9635 -logic.from9635: - br i1 %t163, label %logic.end9637, label %logic.rhs9636 -logic.rhs9636: - %t164 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t164, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.6552, i64 1, i64 0 }, ptr %a167 - %t168 = call i64 @finch_str_find(ptr %a165, ptr %a167) - %t169 = icmp sge i64 %t168, 0 - br label %logic.rend9638 -logic.rend9638: - br label %logic.end9637 -logic.end9637: - %t170 = phi i1 [ true, %logic.from9635 ], [ %t169, %logic.rend9638 ] - br label %logic.from9639 -logic.from9639: - br i1 %t170, label %logic.end9641, label %logic.rhs9640 -logic.rhs9640: - %t171 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t171, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.6554, i64 1, i64 0 }, ptr %a174 - %t175 = call i64 @finch_str_find(ptr %a172, ptr %a174) - %t176 = icmp sge i64 %t175, 0 - br label %logic.rend9642 -logic.rend9642: - br label %logic.end9641 -logic.end9641: - %t177 = phi i1 [ true, %logic.from9639 ], [ %t176, %logic.rend9642 ] - br label %logic.from9643 -logic.from9643: - br i1 %t177, label %logic.rhs9644, label %logic.end9645 -logic.rhs9644: - %t178 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t178, ptr %a179 - store { ptr, i64, i64 } { ptr @.str.6556, i64 2, i64 0 }, ptr %a181 - %t182 = call i32 @finch_str_starts(ptr %a179, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - %t184 = xor i1 %t183, true - br label %logic.rend9646 -logic.rend9646: - br label %logic.end9645 -logic.end9645: - %t185 = phi i1 [ false, %logic.from9643 ], [ %t184, %logic.rend9646 ] - store i1 %t185, ptr %a186 - %t187 = load i1, ptr %a186 - br i1 %t187, label %then9647, label %endif9649 -then9647: - %t188 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t188, ptr %a189 - call void @finch_str_copy(ptr %a190, ptr %a189) - %t191 = load { ptr, i64, i64 }, ptr %a190 - store { ptr, i64, i64 } %t191, ptr %a192 - br label %while.cond9650 -while.cond9650: - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %a192, i32 0, i32 1 - %t194 = load i64, ptr %t193 - %t195 = icmp sgt i64 %t194, 0 - br label %logic.from9653 -logic.from9653: - br i1 %t195, label %logic.rhs9654, label %logic.end9655 -logic.rhs9654: - store { ptr, i64, i64 } { ptr @.str.6557, i64 4, i64 0 }, ptr %a196 - %t198 = getelementptr inbounds { ptr, i64, i64 }, ptr %a192, i32 0, i32 1 - %t199 = load i64, ptr %t198 - %t200 = sub i64 %t199, 1 - %t201 = load { ptr, i64, i64 }, ptr %a192 - %t202 = extractvalue { ptr, i64, i64 } %t201, 1 - %t203 = icmp uge i64 %t200, %t202 - br i1 %t203, label %range9656, label %inrange9657 -range9656: - call void @finch_panic_index(ptr @.str.6559, i64 402, i64 %t200, i64 %t202) - unreachable -inrange9657: - %t204 = extractvalue { ptr, i64, i64 } %t201, 0 - %t205 = getelementptr inbounds i8, ptr %t204, i64 %t200 - %t206 = load i8, ptr %t205 - call void @finch_str_from_char(ptr %a207, i8 signext %t206) - %t208 = load { ptr, i64, i64 }, ptr %a207 - store { ptr, i64, i64 } %t208, ptr %a209 - %t210 = call i64 @finch_str_find(ptr %a196, ptr %a209) - %t211 = icmp sge i64 %t210, 0 - store { ptr, i64, i64 } %t208, ptr %a212 - call void @finch_str_drop(ptr %a212) - br label %logic.rend9658 -logic.rend9658: - br label %logic.end9655 -logic.end9655: - %t213 = phi i1 [ false, %logic.from9653 ], [ %t211, %logic.rend9658 ] - br i1 %t213, label %while.body9651, label %while.end9652 -while.body9651: - %t214 = load { ptr, i64, i64 }, ptr %a192 - store { ptr, i64, i64 } %t214, ptr %a215 - %t217 = getelementptr inbounds { ptr, i64, i64 }, ptr %a192, i32 0, i32 1 - %t218 = load i64, ptr %t217 - %t219 = sub i64 %t218, 1 - call void @finch_str_sub(ptr %a216, ptr %a215, i64 0, i64 %t219, ptr @.str.6560, i64 403) - %t220 = load { ptr, i64, i64 }, ptr %a216 - %t221 = load { ptr, i64, i64 }, ptr %a192 - store { ptr, i64, i64 } %t220, ptr %a192 - store { ptr, i64, i64 } %t221, ptr %a222 - call void @finch_str_drop(ptr %a222) - br label %while.cond9650 -while.end9652: - %t223 = load { ptr, i64, i64 }, ptr %a192 - store { ptr, i64, i64 } zeroinitializer, ptr %a224 - store double 0.0, ptr %a225 - store { ptr, i64, i64 } %t223, ptr %a226 - %t227 = call i32 @finch_str_try_float(ptr %a226, ptr %a225, ptr %a224) - %t228 = icmp eq i32 %t227, 0 - %t229 = load { ptr, i64, i64 }, ptr %a224 - %t230 = load double, ptr %a225 - br i1 %t228, label %or.failed9659, label %or.ok9660 -or.failed9659: - store { ptr, i64, i64 } %t229, ptr %a231 - call void @finch_str_drop(ptr %a231) - call void @finch_str_drop(ptr %a192) - call void @finch_str_drop(ptr %a129) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number zeroinitializer -or.ok9660: - store double %t230, ptr %a232 - %t233 = load i1, ptr %a95 - br i1 %t233, label %then9661, label %endif9663 -then9661: - %t234 = load double, ptr %a232 - %t235 = fsub double 0.0, %t234 - store double %t235, ptr %a232 - br label %endif9663 -endif9663: - %t236 = insertvalue %S.cimport.CConst zeroinitializer, i1 true, 0 - %t237 = load double, ptr %a232 - %t238 = insertvalue %S.cimport.CConst %t236, double %t237, 2 - %t239 = load { ptr, i64, i64 }, ptr %a192 - store { ptr, i64, i64 } %t239, ptr %a240 - call void @finch_str_copy(ptr %a241, ptr %a240) - %t242 = load { ptr, i64, i64 }, ptr %a241 - %t243 = insertvalue %S.cimport.CConst %t238, { ptr, i64, i64 } %t242, 3 - %t244 = insertvalue %S.cimport.Number zeroinitializer, %S.cimport.CConst %t243, 0 - %t245 = insertvalue %S.cimport.Number %t244, i1 true, 1 - call void @finch_str_drop(ptr %a192) - call void @finch_str_drop(ptr %a129) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t245 -endif9649: - %t246 = load { ptr, i64, i64 }, ptr %a129 - %t247 = call %S.cimport.Number @finch.cimport.parseInt({ ptr, i64, i64 } %t246) - store %S.cimport.Number %t247, ptr %a248 - %t249 = getelementptr inbounds %S.cimport.Number, ptr %a248, i32 0, i32 1 - %t250 = load i1, ptr %t249 - br label %logic.from9664 -logic.from9664: - br i1 %t250, label %logic.rhs9665, label %logic.end9666 -logic.rhs9665: - %t251 = load i1, ptr %a95 - br label %logic.rend9667 -logic.rend9667: - br label %logic.end9666 -logic.end9666: - %t252 = phi i1 [ false, %logic.from9664 ], [ %t251, %logic.rend9667 ] - br i1 %t252, label %then9668, label %endif9670 -then9668: - %t253 = getelementptr inbounds %S.cimport.Number, ptr %a248, i32 0, i32 0 - %t254 = getelementptr inbounds %S.cimport.CConst, ptr %t253, i32 0, i32 1 - %t255 = load i64, ptr %t254 - %t256 = sub i64 0, %t255 - %t257 = getelementptr inbounds %S.cimport.Number, ptr %a248, i32 0, i32 0 - %t258 = getelementptr inbounds %S.cimport.CConst, ptr %t257, i32 0, i32 1 - store i64 %t256, ptr %t258 - br label %endif9670 -endif9670: - %t259 = load %S.cimport.Number, ptr %a248 - call void @finch_str_drop(ptr %a129) - call void @finch.drop.arr_str(ptr %a14) - ret %S.cimport.Number %t259 -} - -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.drop.S_cimport_Number(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Number, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CConst(ptr %t1) - ret void -} - -define internal void @finch.cimport.visit(ptr %p0, %S.C.CXCursor %p1) { -entry: - %a1 = alloca ptr, align 16 - %a2 = alloca %S.C.CXCursor, align 16 - %a3 = alloca %S.C.CXString, align 16 - %a5 = alloca %S.C.CXCursor, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca %S.C.CXCursor, align 16 - %a12 = alloca i32, align 16 - %a15 = alloca %S.C.CXType, align 16 - %a16 = alloca %S.C.CXType, align 16 - %a18 = alloca %S.C.CXCursor, align 16 - %a20 = alloca %S.C.CXType, align 16 - %a22 = alloca %S.C.CXType, align 16 - %a26 = alloca %S.C.CXString, align 16 - %a27 = alloca %S.C.CXCursor, align 16 - %a29 = alloca %S.C.CXType, align 16 - %a31 = alloca %S.C.CXCursor, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a39 = 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 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca i1, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca i32, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a97 = 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 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca i32, align 16 - %a146 = alloca %S.cimport.CFunc, align 16 - %a147 = alloca %S.cimport.CFunc, align 16 - %a150 = alloca %S.cimport.CFunc, align 16 - %a151 = alloca %S.C.CXType, align 16 - %a152 = alloca %S.C.CXType, align 16 - %a154 = alloca %S.C.CXCursor, align 16 - %a156 = alloca %S.C.CXType, align 16 - %a158 = alloca %S.C.CXType, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca i32, align 16 - %a182 = alloca %S.cimport.CFunc, align 16 - %a183 = alloca %S.cimport.CFunc, align 16 - %a186 = alloca %S.cimport.CFunc, align 16 - %a188 = alloca %S.C.CXType, align 16 - %a190 = alloca %S.C.CXType, align 16 - %a193 = alloca %S.cimport.Mapped, align 16 - %a199 = alloca %S.ast.Type, align 16 - %a200 = alloca %S.ast.Type, align 16 - %a203 = alloca %S.ast.Type, align 16 - %a207 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a213 = alloca %S.C.CXType, align 16 - %a216 = alloca i64, align 16 - %a218 = alloca i64, align 16 - %a226 = alloca %S.C.CXType, align 16 - %a228 = alloca %S.C.CXType, align 16 - %a233 = alloca %S.cimport.Mapped, align 16 - %a240 = alloca %S.ast.Type, align 16 - %a241 = alloca %S.ast.Type, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca %S.C.CXType, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca i32, align 16 - %a279 = alloca %S.cimport.CFunc, align 16 - %a280 = alloca %S.cimport.CFunc, align 16 - %a283 = alloca %S.cimport.CFunc, align 16 - %a287 = alloca %S.C.CXCursor, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca %S.C.CXType, align 16 - %a302 = alloca %S.C.CXCursor, align 16 - %a305 = alloca %S.cimport.Mapped, align 16 - %a315 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca i32, align 16 - %a326 = alloca %S.ast.Type, align 16 - %a327 = alloca %S.ast.Type, align 16 - %a330 = alloca %S.ast.Type, align 16 - %a334 = alloca %S.C.CXCursor, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca %S.C.CXString, align 16 - %a351 = alloca %S.C.CXCursor, align 16 - %a354 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a369 = alloca i32, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a383 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca %S.C.CXCursor, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a402 = alloca %S.C.CXCursor, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca i32, align 16 - %a422 = alloca %S.cimport.CConst, align 16 - %a426 = alloca %S.C.CXCursor, align 16 - %a430 = alloca %S.C.CXCursor, align 16 - %a437 = alloca %S.cimport.Number, align 16 - %a445 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a458 = alloca i32, align 16 - %a468 = alloca %S.cimport.CConst, align 16 - %a469 = alloca %S.cimport.CConst, align 16 - %a472 = alloca %S.cimport.CConst, align 16 - store ptr %p0, ptr %a1 - store %S.C.CXCursor %p1, ptr %a2 - %t4 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t4, ptr %a5 - call void @clang_getCursorSpelling(ptr sret(%S.C.CXString) align 16 %a3, ptr %a5) - %t6 = load %S.C.CXString, ptr %a3 - %t7 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t6) - store { ptr, i64, i64 } %t7, ptr %a8 - %t9 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t9, ptr %a10 - %t11 = call i32 @clang_getCursorKind(ptr %a10) - store i32 %t11, ptr %a12 - %t13 = load i32, ptr %a12 - %t14 = icmp eq i32 %t13, 20 - br i1 %t14, label %then9671, label %else9672 -then9671: - %t17 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t17, ptr %a18 - call void @clang_getTypedefDeclUnderlyingType(ptr sret(%S.C.CXType) align 16 %a16, ptr %a18) - %t19 = load %S.C.CXType, ptr %a16 - store %S.C.CXType %t19, ptr %a20 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a15, ptr %a20) - %t21 = load %S.C.CXType, ptr %a15 - store %S.C.CXType %t21, ptr %a22 - %t23 = getelementptr inbounds %S.C.CXType, ptr %a22, i32 0, i32 0 - %t24 = load i32, ptr %t23 - %t25 = icmp eq i32 %t24, 105 - br i1 %t25, label %then9674, label %endif9676 -then9674: - %t28 = load %S.C.CXType, ptr %a22 - 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 - call void @clang_getCursorUSR(ptr sret(%S.C.CXString) align 16 %a26, ptr %a31) - %t32 = load %S.C.CXString, ptr %a26 - %t33 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t32) - store { ptr, i64, i64 } %t33, ptr %a34 - %t35 = load ptr, ptr %a1 - %t36 = icmp eq ptr %t35, null - br i1 %t36, label %panic9677, label %ok9678 -panic9677: - call void @finch_panic(ptr @.str.6561, i64 437, ptr @.str.6562) - unreachable -ok9678: - %t37 = getelementptr inbounds %S.cimport.Importer, ptr %t35, i32 0, i32 3 - %t38 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = call i64 @finch_map_find(ptr %t37, ptr %a39, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t41 = icmp sge i64 %t40, 0 - br label %logic.from9679 -logic.from9679: - br i1 %t41, label %logic.rhs9680, label %logic.end9681 -logic.rhs9680: - %t42 = load ptr, ptr %a1 - %t43 = icmp eq ptr %t42, null - br i1 %t43, label %panic9682, label %ok9683 -panic9682: - call void @finch_panic(ptr @.str.6563, i64 437, ptr @.str.6564) - unreachable -ok9683: - %t44 = getelementptr inbounds %S.cimport.Importer, ptr %t42, i32 0, i32 0 - %t45 = getelementptr inbounds %S.cimport.CImports, ptr %t44, i32 0, i32 3 - %t46 = load ptr, ptr %a1 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic9684, label %ok9685 -panic9684: - call void @finch_panic(ptr @.str.6565, i64 437, ptr @.str.6566) - unreachable -ok9685: - %t48 = getelementptr inbounds %S.cimport.Importer, ptr %t46, i32 0, i32 3 - %t49 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t49, ptr %a50 - %t51 = call i64 @finch_map_find(ptr %t48, ptr %a50, 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) - %t52 = icmp slt i64 %t51, 0 - br i1 %t52, label %map.missing9686, label %map.found9687 -map.missing9686: - store { ptr, i64, i64 } zeroinitializer, ptr %a53 - store { ptr, i64, i64 } %t49, ptr %a54 - call void @finch_buf_str(ptr %a53, ptr %a54, i32 1) - call void @finch_map_missing(ptr @.str.6567, i64 437, ptr %a53) - unreachable -map.found9687: - %t55 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t48, i32 0, i32 0 - %t56 = load ptr, ptr %t55 - %t57 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t56, i64 %t51 - %t58 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t57, i32 0, i32 2 - %t59 = load { ptr, i64, i64 }, ptr %t58 - store { ptr, i64, i64 } %t59, ptr %a60 - %t61 = call i64 @finch_map_find(ptr %t45, ptr %a60, 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) - %t62 = icmp sge i64 %t61, 0 - br label %logic.rend9688 -logic.rend9688: - br label %logic.end9681 -logic.end9681: - %t63 = phi i1 [ false, %logic.from9679 ], [ %t62, %logic.rend9688 ] - store i1 %t63, ptr %a64 - %t65 = load i1, ptr %a64 - %t66 = xor i1 %t65, true - br label %logic.from9689 -logic.from9689: - br i1 %t66, label %logic.rhs9690, label %logic.end9691 -logic.rhs9690: - %t67 = load ptr, ptr %a1 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic9692, label %ok9693 -panic9692: - call void @finch_panic(ptr @.str.6568, i64 438, ptr @.str.6569) - unreachable -ok9693: - %t69 = getelementptr inbounds %S.cimport.Importer, ptr %t67, i32 0, i32 0 - %t70 = getelementptr inbounds %S.cimport.CImports, ptr %t69, i32 0, i32 3 - %t71 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t71, ptr %a72 - %t73 = call i64 @finch_map_find(ptr %t70, ptr %a72, 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) - %t74 = icmp sge i64 %t73, 0 - %t75 = xor i1 %t74, true - br label %logic.rend9694 -logic.rend9694: - br label %logic.end9691 -logic.end9691: - %t76 = phi i1 [ false, %logic.from9689 ], [ %t75, %logic.rend9694 ] - br i1 %t76, label %then9695, label %endif9697 -then9695: - %t77 = load { ptr, i64, i64 }, ptr %a8 - %t78 = load ptr, ptr %a1 - %t79 = icmp eq ptr %t78, null - br i1 %t79, label %panic9698, label %ok9699 -panic9698: - call void @finch_panic(ptr @.str.6570, i64 439, ptr @.str.6571) - unreachable -ok9699: - %t80 = getelementptr inbounds %S.cimport.Importer, ptr %t78, i32 0, i32 3 - %t81 = load { ptr, i64, i64 }, ptr %a34 - store { ptr, i64, i64 } %t81, ptr %a82 - store i32 0, ptr %a83 - %t84 = call i64 @finch_map_slot(ptr %t80, ptr %a82, 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 %a83) - %t85 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t80, i32 0, i32 0 - %t86 = load ptr, ptr %t85 - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t86, i64 %t84 - %t88 = load i32, ptr %a83 - %t89 = icmp ne i32 %t88, 0 - br i1 %t89, label %map.new9700, label %map.have9701 -map.new9700: - %t90 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t87, i32 0, i32 1 - call void @finch_str_copy(ptr %t90, ptr %a82) - %t91 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t87, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t91 - br label %map.have9701 -map.have9701: - %t92 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t87, i32 0, i32 2 - store { ptr, i64, i64 } %t77, ptr %a93 - call void @finch_str_copy(ptr %a94, ptr %a93) - %t95 = load { ptr, i64, i64 }, ptr %a94 - %t96 = load { ptr, i64, i64 }, ptr %t92 - store { ptr, i64, i64 } %t95, ptr %t92 - store { ptr, i64, i64 } %t96, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %endif9697 -endif9697: - call void @finch_str_drop(ptr %a34) - br label %endif9676 -endif9676: - br label %endif9673 -else9672: - %t98 = load i32, ptr %a12 - %t99 = icmp eq i32 %t98, 8 - br i1 %t99, label %then9702, label %else9703 -then9702: - %t100 = load ptr, ptr %a1 - %t101 = icmp eq ptr %t100, null - br i1 %t101, label %panic9705, label %ok9706 -panic9705: - call void @finch_panic(ptr @.str.6572, i64 443, ptr @.str.6573) - unreachable -ok9706: - %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 %a8 - 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 %then9707, label %endif9709 -then9707: - call void @finch_str_drop(ptr %a8) - ret void -endif9709: - %t108 = load { ptr, i64, i64 }, ptr %a8 - 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 %panic9710, label %ok9711 -panic9710: - call void @finch_panic(ptr @.str.6574, i64 446, ptr @.str.6575) - unreachable -ok9711: - %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 %then9712, label %endif9714 -then9712: - %t126 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - %t127 = load { ptr, i64, i64 }, ptr %t126 - store { ptr, i64, i64 } { ptr @.str.6576, i64 62, i64 0 }, ptr %t126 - store { ptr, i64, i64 } %t127, ptr %a128 - call void @finch_str_drop(ptr %a128) - %t129 = load %S.cimport.CFunc, ptr %a121 - %t130 = load ptr, ptr %a1 - %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic9715, label %ok9716 -panic9715: - call void @finch_panic(ptr @.str.6577, i64 449, ptr @.str.6578) - unreachable -ok9716: - %t132 = getelementptr inbounds %S.cimport.Importer, ptr %t130, i32 0, i32 0 - %t133 = getelementptr inbounds %S.cimport.CImports, ptr %t132, i32 0, i32 0 - %t134 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t134, ptr %a135 - store i32 0, ptr %a136 - %t137 = call i64 @finch_map_slot(ptr %t133, ptr %a135, 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 %a136) - %t138 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t133, i32 0, i32 0 - %t139 = load ptr, ptr %t138 - %t140 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t139, i64 %t137 - %t141 = load i32, ptr %a136 - %t142 = icmp ne i32 %t141, 0 - br i1 %t142, label %map.new9717, label %map.have9718 -map.new9717: - %t143 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t140, i32 0, i32 1 - call void @finch_str_copy(ptr %t143, ptr %a135) - %t144 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t140, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t144 - br label %map.have9718 -map.have9718: - %t145 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t140, i32 0, i32 2 - store %S.cimport.CFunc %t129, ptr %a146 - call void @finch.copy.S_cimport_CFunc(ptr %a147, ptr %a146) - %t148 = load %S.cimport.CFunc, ptr %a147 - %t149 = load %S.cimport.CFunc, ptr %t145 - store %S.cimport.CFunc %t148, ptr %t145 - store %S.cimport.CFunc %t149, ptr %a150 - call void @finch.drop.S_cimport_CFunc(ptr %a150) - call void @finch.drop.S_cimport_CFunc(ptr %a121) - call void @finch_str_drop(ptr %a8) - ret void -endif9714: - %t153 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t153, ptr %a154 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a152, ptr %a154) - %t155 = load %S.C.CXType, ptr %a152 - store %S.C.CXType %t155, ptr %a156 - call void @clang_getCanonicalType(ptr sret(%S.C.CXType) align 16 %a151, ptr %a156) - %t157 = load %S.C.CXType, ptr %a151 - store %S.C.CXType %t157, ptr %a158 - %t159 = getelementptr inbounds %S.C.CXType, ptr %a158, i32 0, i32 0 - %t160 = load i32, ptr %t159 - %t161 = icmp eq i32 %t160, 110 - br i1 %t161, label %then9719, label %endif9721 -then9719: - %t162 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - %t163 = load { ptr, i64, i64 }, ptr %t162 - store { ptr, i64, i64 } { ptr @.str.6579, i64 42, i64 0 }, ptr %t162 - store { ptr, i64, i64 } %t163, ptr %a164 - call void @finch_str_drop(ptr %a164) - %t165 = load %S.cimport.CFunc, ptr %a121 - %t166 = load ptr, ptr %a1 - %t167 = icmp eq ptr %t166, null - br i1 %t167, label %panic9722, label %ok9723 -panic9722: - call void @finch_panic(ptr @.str.6580, i64 455, ptr @.str.6581) - unreachable -ok9723: - %t168 = getelementptr inbounds %S.cimport.Importer, ptr %t166, i32 0, i32 0 - %t169 = getelementptr inbounds %S.cimport.CImports, ptr %t168, i32 0, i32 0 - %t170 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t170, ptr %a171 - store i32 0, ptr %a172 - %t173 = call i64 @finch_map_slot(ptr %t169, ptr %a171, 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 %a172) - %t174 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t169, i32 0, i32 0 - %t175 = load ptr, ptr %t174 - %t176 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t175, i64 %t173 - %t177 = load i32, ptr %a172 - %t178 = icmp ne i32 %t177, 0 - br i1 %t178, label %map.new9724, label %map.have9725 -map.new9724: - %t179 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t176, i32 0, i32 1 - call void @finch_str_copy(ptr %t179, ptr %a171) - %t180 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t176, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t180 - br label %map.have9725 -map.have9725: - %t181 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t176, i32 0, i32 2 - store %S.cimport.CFunc %t165, ptr %a182 - call void @finch.copy.S_cimport_CFunc(ptr %a183, ptr %a182) - %t184 = load %S.cimport.CFunc, ptr %a183 - %t185 = load %S.cimport.CFunc, ptr %t181 - store %S.cimport.CFunc %t184, ptr %t181 - store %S.cimport.CFunc %t185, ptr %a186 - call void @finch.drop.S_cimport_CFunc(ptr %a186) - call void @finch.drop.S_cimport_CFunc(ptr %a121) - call void @finch_str_drop(ptr %a8) - ret void -endif9721: - %t187 = load ptr, ptr %a1 - %t189 = load %S.C.CXType, ptr %a158 - store %S.C.CXType %t189, ptr %a190 - call void @clang_getResultType(ptr sret(%S.C.CXType) align 16 %a188, ptr %a190) - %t191 = load %S.C.CXType, ptr %a188 - %t192 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t187, %S.C.CXType %t191, i1 true, i1 false) - store %S.cimport.Mapped %t192, ptr %a193 - %t194 = getelementptr inbounds %S.cimport.Mapped, ptr %a193, i32 0, i32 2 - %t195 = load i1, ptr %t194 - br i1 %t195, label %then9726, label %else9727 -then9726: - %t196 = getelementptr inbounds %S.cimport.Mapped, ptr %a193, i32 0, i32 0 - %t197 = load %S.ast.Type, ptr %t196 - %t198 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 2 - store %S.ast.Type %t197, ptr %a199 - call void @finch.copy.S_ast_Type(ptr %a200, ptr %a199) - %t201 = load %S.ast.Type, ptr %a200 - %t202 = load %S.ast.Type, ptr %t198 - store %S.ast.Type %t201, ptr %t198 - store %S.ast.Type %t202, ptr %a203 - call void @finch.drop.S_ast_Type(ptr %a203) - br label %endif9728 -else9727: - %t204 = getelementptr inbounds %S.cimport.Mapped, ptr %a193, i32 0, i32 1 - %t205 = load { ptr, i64, i64 }, ptr %t204 - %t206 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - store { ptr, i64, i64 } %t205, ptr %a207 - call void @finch_str_copy(ptr %a208, ptr %a207) - %t209 = load { ptr, i64, i64 }, ptr %a208 - %t210 = load { ptr, i64, i64 }, ptr %t206 - store { ptr, i64, i64 } %t209, ptr %t206 - store { ptr, i64, i64 } %t210, ptr %a211 - call void @finch_str_drop(ptr %a211) - br label %endif9728 -endif9728: - %t212 = load %S.C.CXType, ptr %a158 - store %S.C.CXType %t212, ptr %a213 - %t214 = call i32 @clang_getNumArgTypes(ptr %a213) - %t215 = sext i32 %t214 to i64 - store i64 %t215, ptr %a216 - %t217 = load i64, ptr %a216 - store i64 0, ptr %a218 - br label %for.cond9729 -for.cond9729: - %t219 = load i64, ptr %a218 - %t220 = icmp slt i64 %t219, %t217 - br i1 %t220, label %for.body9730, label %for.end9732 -for.body9730: - %t221 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %t221, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = icmp sgt i64 %t223, 0 - br i1 %t224, label %then9733, label %endif9735 -then9733: - br label %for.end9732 -endif9735: - %t225 = load ptr, ptr %a1 - %t227 = load %S.C.CXType, ptr %a158 - store %S.C.CXType %t227, ptr %a228 - %t229 = load i64, ptr %a218 - %t230 = trunc i64 %t229 to i32 - call void @clang_getArgType(ptr sret(%S.C.CXType) align 16 %a226, ptr %a228, i32 %t230) - %t231 = load %S.C.CXType, ptr %a226 - %t232 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t225, %S.C.CXType %t231, i1 true, i1 true) - store %S.cimport.Mapped %t232, ptr %a233 - %t234 = getelementptr inbounds %S.cimport.Mapped, ptr %a233, i32 0, i32 2 - %t235 = load i1, ptr %t234 - br i1 %t235, label %then9736, label %else9737 -then9736: - %t236 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 3 - %t237 = getelementptr inbounds { ptr, i64, i64 }, ptr %t236, i32 0, i32 1 - %t238 = getelementptr inbounds %S.cimport.Mapped, ptr %a233, i32 0, i32 0 - %t239 = load %S.ast.Type, ptr %t238 - store %S.ast.Type %t239, ptr %a240 - call void @finch.copy.S_ast_Type(ptr %a241, ptr %a240) - %t242 = load %S.ast.Type, ptr %a241 - %t243 = load i64, ptr %t237 - %t244 = add i64 %t243, 1 - call void @finch_arr_reserve(ptr %t236, i64 %t244, i64 ptrtoint (ptr getelementptr (%S.ast.Type, ptr null, i32 1) to i64)) - %t245 = load ptr, ptr %t236 - %t246 = getelementptr inbounds %S.ast.Type, ptr %t245, i64 %t243 - store %S.ast.Type %t242, ptr %t246 - store i64 %t244, ptr %t237 - br label %endif9738 -else9737: - %t247 = getelementptr inbounds %S.cimport.Mapped, ptr %a233, i32 0, i32 1 - %t248 = load { ptr, i64, i64 }, ptr %t247 - %t249 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 5 - store { ptr, i64, i64 } %t248, ptr %a250 - call void @finch_str_copy(ptr %a251, ptr %a250) - %t252 = load { ptr, i64, i64 }, ptr %a251 - %t253 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t252, ptr %t249 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_drop(ptr %a254) - br label %endif9738 -endif9738: - call void @finch.drop.S_cimport_Mapped(ptr %a233) - br label %for.step9731 -for.step9731: - %t255 = load i64, ptr %a218 - %t256 = add i64 %t255, 1 - store i64 %t256, ptr %a218 - br label %for.cond9729 -for.end9732: - %t257 = load %S.C.CXType, ptr %a158 - store %S.C.CXType %t257, ptr %a258 - %t259 = call i32 @clang_isFunctionTypeVariadic(ptr %a258) - %t260 = icmp ne i32 %t259, 0 - %t261 = getelementptr inbounds %S.cimport.CFunc, ptr %a121, i32 0, i32 4 - store i1 %t260, ptr %t261 - %t262 = load %S.cimport.CFunc, ptr %a121 - %t263 = load ptr, ptr %a1 - %t264 = icmp eq ptr %t263, null - br i1 %t264, label %panic9739, label %ok9740 -panic9739: - call void @finch_panic(ptr @.str.6582, i64 477, ptr @.str.6583) - unreachable -ok9740: - %t265 = getelementptr inbounds %S.cimport.Importer, ptr %t263, i32 0, i32 0 - %t266 = getelementptr inbounds %S.cimport.CImports, ptr %t265, i32 0, i32 0 - %t267 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t267, ptr %a268 - store i32 0, ptr %a269 - %t270 = call i64 @finch_map_slot(ptr %t266, ptr %a268, 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 %a269) - %t271 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t266, i32 0, i32 0 - %t272 = load ptr, ptr %t271 - %t273 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t272, i64 %t270 - %t274 = load i32, ptr %a269 - %t275 = icmp ne i32 %t274, 0 - br i1 %t275, label %map.new9741, label %map.have9742 -map.new9741: - %t276 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t273, i32 0, i32 1 - call void @finch_str_copy(ptr %t276, ptr %a268) - %t277 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t273, i32 0, i32 2 - store %S.cimport.CFunc zeroinitializer, ptr %t277 - br label %map.have9742 -map.have9742: - %t278 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t273, i32 0, i32 2 - store %S.cimport.CFunc %t262, ptr %a279 - call void @finch.copy.S_cimport_CFunc(ptr %a280, ptr %a279) - %t281 = load %S.cimport.CFunc, ptr %a280 - %t282 = load %S.cimport.CFunc, ptr %t278 - store %S.cimport.CFunc %t281, ptr %t278 - store %S.cimport.CFunc %t282, ptr %a283 - call void @finch.drop.S_cimport_CFunc(ptr %a283) - call void @finch.drop.S_cimport_Mapped(ptr %a193) - call void @finch.drop.S_cimport_CFunc(ptr %a121) - br label %endif9704 -else9703: - %t284 = load i32, ptr %a12 - %t285 = icmp eq i32 %t284, 9 - br i1 %t285, label %then9743, label %else9744 -then9743: - %t286 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t286, ptr %a287 - %t288 = call i32 @clang_Cursor_getStorageClass(ptr %a287) - %t289 = icmp ne i32 %t288, 2 - br label %logic.from9746 -logic.from9746: - br i1 %t289, label %logic.end9748, label %logic.rhs9747 -logic.rhs9747: - %t290 = load ptr, ptr %a1 - %t291 = icmp eq ptr %t290, null - br i1 %t291, label %panic9749, label %ok9750 -panic9749: - call void @finch_panic(ptr @.str.6584, i64 479, ptr @.str.6585) - unreachable -ok9750: - %t292 = getelementptr inbounds %S.cimport.Importer, ptr %t290, i32 0, i32 0 - %t293 = getelementptr inbounds %S.cimport.CImports, ptr %t292, i32 0, i32 2 - %t294 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t294, ptr %a295 - %t296 = call i64 @finch_map_find(ptr %t293, ptr %a295, 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) - %t297 = icmp sge i64 %t296, 0 - br label %logic.rend9751 -logic.rend9751: - br label %logic.end9748 -logic.end9748: - %t298 = phi i1 [ true, %logic.from9746 ], [ %t297, %logic.rend9751 ] - br i1 %t298, label %then9752, label %endif9754 -then9752: - call void @finch_str_drop(ptr %a8) - ret void -endif9754: - %t299 = load ptr, ptr %a1 - %t301 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t301, ptr %a302 - call void @clang_getCursorType(ptr sret(%S.C.CXType) align 16 %a300, ptr %a302) - %t303 = load %S.C.CXType, ptr %a300 - %t304 = call %S.cimport.Mapped @finch.cimport.mapType(ptr %t299, %S.C.CXType %t303, i1 false, i1 false) - store %S.cimport.Mapped %t304, ptr %a305 - %t306 = getelementptr inbounds %S.cimport.Mapped, ptr %a305, i32 0, i32 2 - %t307 = load i1, ptr %t306 - br i1 %t307, label %then9755, label %endif9757 -then9755: - %t308 = getelementptr inbounds %S.cimport.Mapped, ptr %a305, i32 0, i32 0 - %t309 = load %S.ast.Type, ptr %t308 - %t310 = load ptr, ptr %a1 - %t311 = icmp eq ptr %t310, null - br i1 %t311, label %panic9758, label %ok9759 -panic9758: - call void @finch_panic(ptr @.str.6586, i64 484, ptr @.str.6587) - unreachable -ok9759: - %t312 = getelementptr inbounds %S.cimport.Importer, ptr %t310, i32 0, i32 0 - %t313 = getelementptr inbounds %S.cimport.CImports, ptr %t312, i32 0, i32 2 - %t314 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t314, ptr %a315 - store i32 0, ptr %a316 - %t317 = call i64 @finch_map_slot(ptr %t313, ptr %a315, 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 %a316) - %t318 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t313, i32 0, i32 0 - %t319 = load ptr, ptr %t318 - %t320 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t319, i64 %t317 - %t321 = load i32, ptr %a316 - %t322 = icmp ne i32 %t321, 0 - br i1 %t322, label %map.new9760, label %map.have9761 -map.new9760: - %t323 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t320, i32 0, i32 1 - call void @finch_str_copy(ptr %t323, ptr %a315) - %t324 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t320, i32 0, i32 2 - store %S.ast.Type zeroinitializer, ptr %t324 - br label %map.have9761 -map.have9761: - %t325 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.ast.Type }, ptr %t320, i32 0, i32 2 - store %S.ast.Type %t309, ptr %a326 - call void @finch.copy.S_ast_Type(ptr %a327, ptr %a326) - %t328 = load %S.ast.Type, ptr %a327 - %t329 = load %S.ast.Type, ptr %t325 - store %S.ast.Type %t328, ptr %t325 - store %S.ast.Type %t329, ptr %a330 - call void @finch.drop.S_ast_Type(ptr %a330) - br label %endif9757 -endif9757: - call void @finch.drop.S_cimport_Mapped(ptr %a305) - br label %endif9745 -else9744: - %t331 = load i32, ptr %a12 - %t332 = icmp eq i32 %t331, 2 - br i1 %t332, label %then9762, label %else9763 -then9762: - %t333 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t333, ptr %a334 - %t335 = call i32 @clang_isCursorDefinition(ptr %a334) - %t336 = icmp ne i32 %t335, 0 - br label %logic.from9765 -logic.from9765: - br i1 %t336, label %logic.rhs9766, label %logic.end9767 -logic.rhs9766: - %t337 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t338 = load i64, ptr %t337 - %t339 = icmp sgt i64 %t338, 0 - br label %logic.rend9768 -logic.rend9768: - br label %logic.end9767 -logic.end9767: - %t340 = phi i1 [ false, %logic.from9765 ], [ %t339, %logic.rend9768 ] - br label %logic.from9769 -logic.from9769: - br i1 %t340, label %logic.rhs9770, label %logic.end9771 -logic.rhs9770: - %t341 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t341, ptr %a342 - store { ptr, i64, i64 } { ptr @.str.6589, i64 1, i64 0 }, ptr %a344 - %t345 = call i64 @finch_str_find(ptr %a342, ptr %a344) - %t346 = icmp sge i64 %t345, 0 - %t347 = xor i1 %t346, true - br label %logic.rend9772 -logic.rend9772: - br label %logic.end9771 -logic.end9771: - %t348 = phi i1 [ false, %logic.from9769 ], [ %t347, %logic.rend9772 ] - br i1 %t348, label %then9773, label %endif9775 -then9773: - %t350 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t350, ptr %a351 - call void @clang_getCursorUSR(ptr sret(%S.C.CXString) align 16 %a349, ptr %a351) - %t352 = load %S.C.CXString, ptr %a349 - %t353 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t352) - store { ptr, i64, i64 } %t353, ptr %a354 - %t355 = load ptr, ptr %a1 - %t356 = icmp eq ptr %t355, null - br i1 %t356, label %panic9776, label %ok9777 -panic9776: - call void @finch_panic(ptr @.str.6590, i64 489, ptr @.str.6591) - unreachable -ok9777: - %t357 = getelementptr inbounds %S.cimport.Importer, ptr %t355, i32 0, i32 3 - %t358 = load { ptr, i64, i64 }, ptr %a354 - store { ptr, i64, i64 } %t358, ptr %a359 - %t360 = call i64 @finch_map_find(ptr %t357, ptr %a359, 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) - %t361 = icmp sge i64 %t360, 0 - %t362 = xor i1 %t361, true - br i1 %t362, label %then9778, label %endif9780 -then9778: - %t363 = load { ptr, i64, i64 }, ptr %a8 - %t364 = load ptr, ptr %a1 - %t365 = icmp eq ptr %t364, null - br i1 %t365, label %panic9781, label %ok9782 -panic9781: - call void @finch_panic(ptr @.str.6592, i64 490, ptr @.str.6593) - unreachable -ok9782: - %t366 = getelementptr inbounds %S.cimport.Importer, ptr %t364, i32 0, i32 3 - %t367 = load { ptr, i64, i64 }, ptr %a354 - store { ptr, i64, i64 } %t367, ptr %a368 - store i32 0, ptr %a369 - %t370 = call i64 @finch_map_slot(ptr %t366, ptr %a368, 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 %a369) - %t371 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t366, i32 0, i32 0 - %t372 = load ptr, ptr %t371 - %t373 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t372, i64 %t370 - %t374 = load i32, ptr %a369 - %t375 = icmp ne i32 %t374, 0 - br i1 %t375, label %map.new9783, label %map.have9784 -map.new9783: - %t376 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t373, i32 0, i32 1 - call void @finch_str_copy(ptr %t376, ptr %a368) - %t377 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t373, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t377 - br label %map.have9784 -map.have9784: - %t378 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t373, i32 0, i32 2 - store { ptr, i64, i64 } %t363, ptr %a379 - call void @finch_str_copy(ptr %a380, ptr %a379) - %t381 = load { ptr, i64, i64 }, ptr %a380 - %t382 = load { ptr, i64, i64 }, ptr %t378 - store { ptr, i64, i64 } %t381, ptr %t378 - store { ptr, i64, i64 } %t382, ptr %a383 - call void @finch_str_drop(ptr %a383) - br label %endif9780 -endif9780: - call void @finch_str_drop(ptr %a354) - br label %endif9775 -endif9775: - br label %endif9764 -else9763: - %t384 = load i32, ptr %a12 - %t385 = icmp eq i32 %t384, 5 - br i1 %t385, label %then9785, label %else9786 -then9785: - %t386 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t386, ptr %a387 - %t388 = load ptr, ptr %a1 - %t389 = call i32 @clang_visitChildren(ptr %a387, ptr @finch.c.cimport.visitTop, ptr %t388) - br label %endif9787 -else9786: - %t390 = load i32, ptr %a12 - %t391 = icmp eq i32 %t390, 7 - br i1 %t391, label %then9788, label %else9789 -then9788: - %t392 = load ptr, ptr %a1 - %t393 = icmp eq ptr %t392, null - br i1 %t393, label %panic9791, label %ok9792 -panic9791: - call void @finch_panic(ptr @.str.6594, i64 496, ptr @.str.6595) - unreachable -ok9792: - %t394 = getelementptr inbounds %S.cimport.Importer, ptr %t392, i32 0, i32 0 - %t395 = getelementptr inbounds %S.cimport.CImports, ptr %t394, i32 0, i32 1 - %t396 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t396, ptr %a397 - %t398 = call i64 @finch_map_find(ptr %t395, ptr %a397, 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) - %t399 = icmp sge i64 %t398, 0 - %t400 = xor i1 %t399, true - br i1 %t400, label %then9793, label %endif9795 -then9793: - %t401 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t401, ptr %a402 - %t403 = call i64 @clang_getEnumConstantDeclValue(ptr %a402) - %t404 = insertvalue %S.cimport.CConst zeroinitializer, i64 %t403, 1 - %t405 = load ptr, ptr %a1 - %t406 = icmp eq ptr %t405, null - br i1 %t406, label %panic9796, label %ok9797 -panic9796: - call void @finch_panic(ptr @.str.6596, i64 497, ptr @.str.6597) - unreachable -ok9797: - %t407 = getelementptr inbounds %S.cimport.Importer, ptr %t405, i32 0, i32 0 - %t408 = getelementptr inbounds %S.cimport.CImports, ptr %t407, i32 0, i32 1 - %t409 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t409, ptr %a410 - store i32 0, ptr %a411 - %t412 = call i64 @finch_map_slot(ptr %t408, ptr %a410, 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 %a411) - %t413 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t408, i32 0, i32 0 - %t414 = load ptr, ptr %t413 - %t415 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t414, i64 %t412 - %t416 = load i32, ptr %a411 - %t417 = icmp ne i32 %t416, 0 - br i1 %t417, label %map.new9798, label %map.have9799 -map.new9798: - %t418 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t415, i32 0, i32 1 - call void @finch_str_copy(ptr %t418, ptr %a410) - %t419 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t415, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t419 - br label %map.have9799 -map.have9799: - %t420 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t415, i32 0, i32 2 - %t421 = load %S.cimport.CConst, ptr %t420 - store %S.cimport.CConst %t404, ptr %t420 - store %S.cimport.CConst %t421, ptr %a422 - call void @finch.drop.S_cimport_CConst(ptr %a422) - br label %endif9795 -endif9795: - br label %endif9790 -else9789: - %t423 = load i32, ptr %a12 - %t424 = icmp eq i32 %t423, 501 - br i1 %t424, label %then9800, label %endif9802 -then9800: - %t425 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t425, ptr %a426 - %t427 = call i32 @clang_Cursor_isMacroBuiltin(ptr %a426) - %t428 = icmp ne i32 %t427, 0 - br label %logic.from9803 -logic.from9803: - br i1 %t428, label %logic.end9805, label %logic.rhs9804 -logic.rhs9804: - %t429 = load %S.C.CXCursor, ptr %a2 - store %S.C.CXCursor %t429, ptr %a430 - %t431 = call i32 @clang_Cursor_isMacroFunctionLike(ptr %a430) - %t432 = icmp ne i32 %t431, 0 - br label %logic.rend9806 -logic.rend9806: - br label %logic.end9805 -logic.end9805: - %t433 = phi i1 [ true, %logic.from9803 ], [ %t432, %logic.rend9806 ] - br i1 %t433, label %then9807, label %endif9809 -then9807: - call void @finch_str_drop(ptr %a8) - ret void -endif9809: - %t434 = load ptr, ptr %a1 - %t435 = load %S.C.CXCursor, ptr %a2 - %t436 = call %S.cimport.Number @finch.cimport.macroValue(ptr %t434, %S.C.CXCursor %t435) - store %S.cimport.Number %t436, ptr %a437 - %t438 = getelementptr inbounds %S.cimport.Number, ptr %a437, i32 0, i32 1 - %t439 = load i1, ptr %t438 - br label %logic.from9810 -logic.from9810: - br i1 %t439, label %logic.rhs9811, label %logic.end9812 -logic.rhs9811: - %t440 = load ptr, ptr %a1 - %t441 = icmp eq ptr %t440, null - br i1 %t441, label %panic9813, label %ok9814 -panic9813: - call void @finch_panic(ptr @.str.6598, i64 504, ptr @.str.6599) - unreachable -ok9814: - %t442 = getelementptr inbounds %S.cimport.Importer, ptr %t440, i32 0, i32 0 - %t443 = getelementptr inbounds %S.cimport.CImports, ptr %t442, i32 0, i32 1 - %t444 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t444, ptr %a445 - %t446 = call i64 @finch_map_find(ptr %t443, ptr %a445, 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) - %t447 = icmp sge i64 %t446, 0 - %t448 = xor i1 %t447, true - br label %logic.rend9815 -logic.rend9815: - br label %logic.end9812 -logic.end9812: - %t449 = phi i1 [ false, %logic.from9810 ], [ %t448, %logic.rend9815 ] - br i1 %t449, label %then9816, label %endif9818 -then9816: - %t450 = getelementptr inbounds %S.cimport.Number, ptr %a437, i32 0, i32 0 - %t451 = load %S.cimport.CConst, ptr %t450 - %t452 = load ptr, ptr %a1 - %t453 = icmp eq ptr %t452, null - br i1 %t453, label %panic9819, label %ok9820 -panic9819: - call void @finch_panic(ptr @.str.6600, i64 505, ptr @.str.6601) - unreachable -ok9820: - %t454 = getelementptr inbounds %S.cimport.Importer, ptr %t452, i32 0, i32 0 - %t455 = getelementptr inbounds %S.cimport.CImports, ptr %t454, i32 0, i32 1 - %t456 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t456, ptr %a457 - store i32 0, ptr %a458 - %t459 = call i64 @finch_map_slot(ptr %t455, ptr %a457, 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 %a458) - %t460 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t455, i32 0, i32 0 - %t461 = load ptr, ptr %t460 - %t462 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t461, i64 %t459 - %t463 = load i32, ptr %a458 - %t464 = icmp ne i32 %t463, 0 - br i1 %t464, label %map.new9821, label %map.have9822 -map.new9821: - %t465 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t462, i32 0, i32 1 - call void @finch_str_copy(ptr %t465, ptr %a457) - %t466 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t462, i32 0, i32 2 - store %S.cimport.CConst zeroinitializer, ptr %t466 - br label %map.have9822 -map.have9822: - %t467 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CConst }, ptr %t462, i32 0, i32 2 - store %S.cimport.CConst %t451, ptr %a468 - call void @finch.copy.S_cimport_CConst(ptr %a469, ptr %a468) - %t470 = load %S.cimport.CConst, ptr %a469 - %t471 = load %S.cimport.CConst, ptr %t467 - store %S.cimport.CConst %t470, ptr %t467 - store %S.cimport.CConst %t471, ptr %a472 - call void @finch.drop.S_cimport_CConst(ptr %a472) - br label %endif9818 -endif9818: - call void @finch.drop.S_cimport_Number(ptr %a437) - br label %endif9802 -endif9802: - br label %endif9790 -endif9790: - br label %endif9787 -endif9787: - br label %endif9764 -endif9764: - br label %endif9745 -endif9745: - br label %endif9704 -endif9704: - br label %endif9673 -endif9673: - call void @finch_str_drop(ptr %a8) - ret void -} - -define internal void @finch.drop.map_str_str(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9826 -n.cond9826: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9827, label %n.end9828 -n.body9827: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9829, label %entry.next9830 -entry.live9829: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t8, i32 0, i32 2 - call void @finch_str_drop(ptr %t13) - br label %entry.next9830 -entry.next9830: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9826 -n.end9828: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.map_str_bool(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond9831 -n.cond9831: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body9832, label %n.end9833 -n.body9832: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live9834, label %entry.next9835 -entry.live9834: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, i1 }, ptr %t8, i32 0, i32 2 - br label %entry.next9835 -entry.next9835: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond9831 -n.end9833: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_cimport_Importer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 0 - call void @finch.drop.S_cimport_CImports(ptr %t1) - %t2 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.cimport.Importer, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_bool(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_ptr(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -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 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca %S.C.CXUnsavedFile, align 16 - %a138 = alloca ptr, align 16 - %a140 = alloca i64, align 16 - %a153 = alloca i32, 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 - %a170 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca i64, align 16 - %a183 = alloca i64, align 16 - %a190 = alloca ptr, align 16 - %a194 = alloca %S.C.CXString, align 16 - %a198 = 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 - %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 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a227 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a258 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a271 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a276 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a287 = alloca { ptr, i64, i64 }, align 16 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a290 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a300 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a316 = alloca { ptr, i64, i64 }, align 16 - %a317 = alloca %S.C.CXCursor, align 16 - %a320 = alloca %S.C.CXCursor, align 16 - %a328 = alloca %S.cimport.CImports, align 16 - %a329 = 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 %then9823, label %endif9825 -then9823: - %t10 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t11 = load %S.cimport.CImports, ptr %t10 - store %S.cimport.CImports %t11, ptr %a12 - call void @finch.copy.S_cimport_CImports(ptr %a13, ptr %a12) - %t14 = load %S.cimport.CImports, ptr %a13 - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t15 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t16 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t15, %S.cimport.CImports %t14, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t16 -endif9825: - %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.6602, i64 2, i64 0 }, ptr %t19 - %t20 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 1 - store { ptr, i64, i64 } { ptr @.str.6603, i64 1, i64 0 }, ptr %t20 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t18, i64 2 - store { ptr, i64, i64 } { ptr @.str.6604, 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 %then9836, label %endif9838 -then9836: - %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.6605, 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 %endif9838 -endif9838: - %t39 = load i1, ptr %a4 - br i1 %t39, label %then9839, label %endif9841 -then9839: - %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.6606, i64 19, i64 0 }, ptr %t44 - store i64 %t42, ptr %t40 - br label %endif9841 -endif9841: - store i64 0, ptr %a45 - br label %each.cond9842 -each.cond9842: - %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.body9843, label %each.end9845 -each.body9843: - %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.6607, 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.step9844 -each.step9844: - %t64 = load i64, ptr %a45 - %t65 = add i64 %t64, 1 - store i64 %t65, ptr %a45 - br label %each.cond9842 -each.end9845: - %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.cond9846 -each.cond9846: - %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.body9847, label %each.end9849 -each.body9847: - %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.step9848 -each.step9848: - %t87 = load i64, ptr %a69 - %t88 = add i64 %t87, 1 - store i64 %t88, ptr %a69 - br label %each.cond9846 -each.end9849: - call void @finch.drop.arr_str(ptr %a68) - store { ptr, i64, i64 } zeroinitializer, ptr %a89 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 - %t91 = load i64, ptr %t90 - store i64 0, ptr %a92 - br label %for.cond9850 -for.cond9850: - %t93 = load i64, ptr %a92 - %t94 = icmp slt i64 %t93, %t91 - br i1 %t94, label %for.body9851, label %for.end9853 -for.body9851: - %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 %range9854, label %inrange9855 -range9854: - call void @finch_panic_index(ptr @.str.6608, i64 532, i64 %t96, i64 %t98) - unreachable -inrange9855: - %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.6609, 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.step9852 -for.step9852: - %t110 = load i64, ptr %a92 - %t111 = add i64 %t110, 1 - store i64 %t111, ptr %a92 - br label %for.cond9850 -for.end9853: - %t112 = call ptr @clang_createIndex(i32 0, i32 0) - store ptr %t112, ptr %a113 - store i64 0, ptr %a114 - br label %each.cond9856 -each.cond9856: - %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.body9857, label %each.end9859 -each.body9857: - %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.6610, 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.6611, i64 2, i64 0 }, ptr %a131 - call void @finch_str_concat(ptr %a129, ptr %a130, ptr %a131) - store { ptr, i64, i64 } %t128, ptr %a132 - call void @finch_str_drop(ptr %a132) - %t133 = load { ptr, i64, i64 }, ptr %a129 - store { ptr, i64, i64 } %t133, ptr %a134 - %t135 = load { ptr, i64, i64 }, ptr %a134 - %t136 = call %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } { ptr @.str.6612, i64 14, i64 0 }, { ptr, i64, i64 } %t135) - store %S.C.CXUnsavedFile %t136, ptr %a137 - store ptr null, ptr %a138 - %t139 = or i64 1, 64 - store i64 %t139, ptr %a140 - %t141 = load ptr, ptr %a113 - %t142 = extractvalue { ptr, i64, i64 } { ptr @.str.6613, i64 14, i64 0 }, 0 - %t143 = icmp eq ptr %t142, null - %t144 = select i1 %t143, ptr @.str.6614, ptr %t142 - %t145 = load { ptr, i64, i64 }, ptr %a89 - %t146 = extractvalue { ptr, i64, i64 } %t145, 0 - %t147 = getelementptr inbounds { ptr, i64, i64 }, ptr %a89, i32 0, i32 1 - %t148 = load i64, ptr %t147 - %t149 = trunc i64 %t148 to i32 - %t150 = load i64, ptr %a140 - %t151 = trunc i64 %t150 to i32 - %t152 = call i32 @clang_parseTranslationUnit2(ptr %t141, ptr %t144, ptr %t146, i32 %t149, ptr %a137, i32 1, i32 %t151, ptr %a138) - store i32 %t152, ptr %a153 - %t154 = load i32, ptr %a153 - %t155 = icmp ne i32 %t154, 0 - br label %logic.from9860 -logic.from9860: - br i1 %t155, label %logic.end9862, label %logic.rhs9861 -logic.rhs9861: - %t156 = load ptr, ptr %a138 - %t157 = icmp eq ptr %t156, null - br label %logic.rend9863 -logic.rend9863: - br label %logic.end9862 -logic.end9862: - %t158 = phi i1 [ true, %logic.from9860 ], [ %t157, %logic.rend9863 ] - br i1 %t158, label %then9864, label %endif9866 -then9864: - %t159 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6615, i64 33, 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.cimport.Header, ptr %a122, i32 0, i32 0 - %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) - store { ptr, i64, i64 } %t164, ptr %a170 - call void @finch_str_drop(ptr %a170) - %t171 = load { ptr, i64, i64 }, ptr %a167 - store { ptr, i64, i64 } %t171, ptr %a173 - store { ptr, i64, i64 } { ptr @.str.6616, i64 1, i64 0 }, ptr %a174 - call void @finch_str_concat(ptr %a172, ptr %a173, ptr %a174) - store { ptr, i64, i64 } %t171, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a172 - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t177 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t176, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t177 -endif9866: - %t178 = load ptr, ptr %a138 - %t179 = call i32 @clang_getNumDiagnostics(ptr %t178) - %t180 = zext i32 %t179 to i64 - store i64 %t180, ptr %a181 - %t182 = load i64, ptr %a181 - store i64 0, ptr %a183 - br label %for.cond9867 -for.cond9867: - %t184 = load i64, ptr %a183 - %t185 = icmp slt i64 %t184, %t182 - br i1 %t185, label %for.body9868, label %for.end9870 -for.body9868: - %t186 = load ptr, ptr %a138 - %t187 = load i64, ptr %a183 - %t188 = trunc i64 %t187 to i32 - %t189 = call ptr @clang_getDiagnostic(ptr %t186, i32 %t188) - store ptr %t189, ptr %a190 - %t191 = load ptr, ptr %a190 - %t192 = call i32 @clang_getDiagnosticSeverity(ptr %t191) - %t193 = icmp sge i32 %t192, 3 - br i1 %t193, label %then9871, label %endif9873 -then9871: - %t195 = load ptr, ptr %a190 - call void @clang_getDiagnosticSpelling(ptr sret(%S.C.CXString) align 16 %a194, ptr %t195) - %t196 = load %S.C.CXString, ptr %a194 - %t197 = call { ptr, i64, i64 } @finch.cimport.text(%S.C.CXString %t196) - store { ptr, i64, i64 } %t197, ptr %a198 - %t199 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t199) - %t200 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t200, ptr %a201 - store { ptr, i64, i64 } { ptr @.str.6618, i64 14, i64 0 }, ptr %a203 - %t204 = call i64 @finch_str_find(ptr %a201, ptr %a203) - %t205 = icmp sge i64 %t204, 0 - br i1 %t205, label %then9874, label %endif9876 -then9874: - %t206 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t206, ptr %a207 - %t209 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t209, ptr %a210 - %t212 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 - %t213 = load i64, ptr %t212 - call void @finch_str_sub(ptr %a211, ptr %a210, i64 1, i64 %t213, ptr @.str.6620, i64 552) - %t214 = load { ptr, i64, i64 }, ptr %a211 - store { ptr, i64, i64 } %t214, ptr %a215 - store { ptr, i64, i64 } { ptr @.str.6622, i64 1, i64 0 }, ptr %a217 - %t218 = call i64 @finch_str_find(ptr %a215, ptr %a217) - store { ptr, i64, i64 } %t214, ptr %a219 - call void @finch_str_drop(ptr %a219) - %t220 = add i64 %t218, 1 - call void @finch_str_sub(ptr %a208, ptr %a207, i64 1, i64 %t220, ptr @.str.6619, i64 552) - %t221 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t221, ptr %a222 - %t223 = load { ptr, i64, i64 }, ptr %a222 - %t224 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t225 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t223, ptr %a226 - store { ptr, i64, i64 } %t225, ptr %a227 - %t228 = call i32 @finch_str_eq(ptr %a226, ptr %a227) - %t229 = icmp ne i32 %t228, 0 - br i1 %t229, label %then9877, label %endif9879 -then9877: - %t230 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t231 = load { ptr, i64, i64 }, ptr %t230 - store { ptr, i64, i64 } %t231, ptr %a233 - store { ptr, i64, i64 } { ptr @.str.6623, i64 34, i64 0 }, ptr %a234 - call void @finch_str_concat(ptr %a232, ptr %a233, ptr %a234) - %t235 = load { ptr, i64, i64 }, ptr %a232 - %t236 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t237 = load { ptr, i64, i64 }, ptr %t236 - store { ptr, i64, i64 } %t235, ptr %a239 - store { ptr, i64, i64 } %t237, ptr %a240 - call void @finch_str_concat(ptr %a238, ptr %a239, ptr %a240) - store { ptr, i64, i64 } %t235, ptr %a241 - call void @finch_str_drop(ptr %a241) - %t242 = load { ptr, i64, i64 }, ptr %a238 - store { ptr, i64, i64 } %t242, ptr %a244 - store { ptr, i64, i64 } { ptr @.str.6624, i64 1, i64 0 }, ptr %a245 - call void @finch_str_concat(ptr %a243, ptr %a244, ptr %a245) - store { ptr, i64, i64 } %t242, ptr %a246 - call void @finch_str_drop(ptr %a246) - %t247 = load { ptr, i64, i64 }, ptr %a243 - call void @finch_str_drop(ptr %a222) - call void @finch_str_drop(ptr %a198) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t248 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t247, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t248 -endif9879: - %t249 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t250 = load { ptr, i64, i64 }, ptr %t249 - store { ptr, i64, i64 } %t250, ptr %a252 - store { ptr, i64, i64 } { ptr @.str.6625, i64 34, 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, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t254, ptr %a257 - store { ptr, i64, i64 } %t255, ptr %a258 - call void @finch_str_concat(ptr %a256, ptr %a257, ptr %a258) - store { ptr, i64, i64 } %t254, ptr %a259 - call void @finch_str_drop(ptr %a259) - %t260 = load { ptr, i64, i64 }, ptr %a256 - store { ptr, i64, i64 } %t260, ptr %a262 - store { ptr, i64, i64 } { ptr @.str.6626, i64 10, i64 0 }, ptr %a263 - call void @finch_str_concat(ptr %a261, ptr %a262, ptr %a263) - store { ptr, i64, i64 } %t260, ptr %a264 - call void @finch_str_drop(ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a261 - %t266 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t267 = load { ptr, i64, i64 }, ptr %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) - store { ptr, i64, i64 } %t265, ptr %a271 - call void @finch_str_drop(ptr %a271) - %t272 = load { ptr, i64, i64 }, ptr %a268 - store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.6627, i64 60, i64 0 }, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - store { ptr, i64, i64 } %t272, ptr %a276 - call void @finch_str_drop(ptr %a276) - %t277 = load { ptr, i64, i64 }, ptr %a273 - call void @finch_str_drop(ptr %a222) - call void @finch_str_drop(ptr %a198) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t278 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t277, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t278 -endif9876: - %t279 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 1 - %t280 = load { ptr, i64, i64 }, ptr %t279 - store { ptr, i64, i64 } %t280, ptr %a282 - store { ptr, i64, i64 } { ptr @.str.6628, i64 19, i64 0 }, ptr %a283 - call void @finch_str_concat(ptr %a281, ptr %a282, ptr %a283) - %t284 = load { ptr, i64, i64 }, ptr %a281 - %t285 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t286 = load { ptr, i64, i64 }, ptr %t285 - store { ptr, i64, i64 } %t284, ptr %a288 - store { ptr, i64, i64 } %t286, ptr %a289 - call void @finch_str_concat(ptr %a287, ptr %a288, ptr %a289) - store { ptr, i64, i64 } %t284, ptr %a290 - call void @finch_str_drop(ptr %a290) - %t291 = load { ptr, i64, i64 }, ptr %a287 - store { ptr, i64, i64 } %t291, ptr %a293 - store { ptr, i64, i64 } { ptr @.str.6629, i64 16, i64 0 }, ptr %a294 - call void @finch_str_concat(ptr %a292, ptr %a293, ptr %a294) - store { ptr, i64, i64 } %t291, ptr %a295 - call void @finch_str_drop(ptr %a295) - %t296 = load { ptr, i64, i64 }, ptr %a292 - %t297 = load { ptr, i64, i64 }, ptr %a198 - store { ptr, i64, i64 } %t296, ptr %a299 - store { ptr, i64, i64 } %t297, ptr %a300 - call void @finch_str_concat(ptr %a298, ptr %a299, ptr %a300) - store { ptr, i64, i64 } %t296, ptr %a301 - call void @finch_str_drop(ptr %a301) - %t302 = load { ptr, i64, i64 }, ptr %a298 - call void @finch_str_drop(ptr %a198) - call void @finch_str_drop(ptr %a134) - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t303 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t302, 2 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t303 -endif9873: - %t304 = load ptr, ptr %a190 - call void @clang_disposeDiagnostic(ptr %t304) - br label %for.step9869 -for.step9869: - %t305 = load i64, ptr %a183 - %t306 = add i64 %t305, 1 - store i64 %t306, ptr %a183 - br label %for.cond9867 -for.end9870: - %t307 = load ptr, ptr %a138 - %t308 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 1 - store ptr %t307, ptr %t308 - %t309 = getelementptr inbounds %S.cimport.Header, ptr %a122, i32 0, i32 0 - %t310 = load { ptr, i64, i64 }, ptr %t309 - %t311 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 2 - store { ptr, i64, i64 } %t310, ptr %a312 - call void @finch_str_copy(ptr %a313, ptr %a312) - %t314 = load { ptr, i64, i64 }, ptr %a313 - %t315 = load { ptr, i64, i64 }, ptr %t311 - store { ptr, i64, i64 } %t314, ptr %t311 - store { ptr, i64, i64 } %t315, ptr %a316 - call void @finch_str_drop(ptr %a316) - %t318 = load ptr, ptr %a138 - call void @clang_getTranslationUnitCursor(ptr sret(%S.C.CXCursor) align 16 %a317, ptr %t318) - %t319 = load %S.C.CXCursor, ptr %a317 - store %S.C.CXCursor %t319, ptr %a320 - %t321 = call i32 @clang_visitChildren(ptr %a320, ptr @finch.c.cimport.visitTop, ptr %a6) - %t322 = load ptr, ptr %a138 - call void @clang_disposeTranslationUnit(ptr %t322) - call void @finch_str_drop(ptr %a134) - br label %each.step9858 -each.step9858: - %t323 = load i64, ptr %a114 - %t324 = add i64 %t323, 1 - store i64 %t324, ptr %a114 - br label %each.cond9856 -each.end9859: - %t325 = load ptr, ptr %a113 - call void @clang_disposeIndex(ptr %t325) - %t326 = getelementptr inbounds %S.cimport.Importer, ptr %a6, i32 0, i32 0 - %t327 = load %S.cimport.CImports, ptr %t326 - store %S.cimport.CImports %t327, ptr %a328 - call void @finch.copy.S_cimport_CImports(ptr %a329, ptr %a328) - %t330 = load %S.cimport.CImports, ptr %a329 - call void @finch.drop.arr_ptr(ptr %a89) - call void @finch.drop.arr_str(ptr %a25) - call void @finch.drop.S_cimport_Importer(ptr %a6) - %t331 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t332 = insertvalue { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t331, %S.cimport.CImports %t330, 1 - ret { i1, %S.cimport.CImports, { ptr, i64, i64 } } %t332 -} - -define internal %S.C.CXUnsavedFile @finch.host.unsavedFile({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - %t4 = extractvalue { ptr, i64, i64 } %t3, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6630, ptr %t4 - %t7 = insertvalue %S.C.CXUnsavedFile zeroinitializer, ptr %t6, 0 - %t8 = load { ptr, i64, i64 }, ptr %a2 - %t9 = extractvalue { ptr, i64, i64 } %t8, 0 - %t10 = icmp eq ptr %t9, null - %t11 = select i1 %t10, ptr @.str.6631, ptr %t9 - %t12 = insertvalue %S.C.CXUnsavedFile %t7, ptr %t11, 1 - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = trunc i64 %t14 to i32 - %t16 = insertvalue %S.C.CXUnsavedFile %t12, i32 %t15, 2 - ret %S.C.CXUnsavedFile %t16 -} - -define internal { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a6 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6634, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6635, 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 } { ptr @.str.6632, i64 1, i64 0 }, ptr %a9 - store { ptr, i64, i64 } %t7, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t12, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6636, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - ret { ptr, i64, i64 } %t17 -} - -define internal { ptr, i64, i64 } @finch.host.native({ 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.6638, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6639, 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 - ret { ptr, i64, i64 } %t7 -} - -define internal i64 @finch.host.run({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6640, i64 1, 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.6641, i64 1, i64 0 }, ptr %a9 - call void @finch_str_concat(ptr %a7, ptr %a8, ptr %a9) - store { ptr, i64, i64 } %t6, ptr %a10 - call void @finch_str_drop(ptr %a10) - %t11 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t11, ptr %a13 - call void @finch_str_copy(ptr %a12, ptr %a13) - %t14 = call i64 @finch_shell(ptr %a12) - call void @finch_str_drop(ptr %a12) - store { ptr, i64, i64 } %t11, ptr %a15 - call void @finch_str_drop(ptr %a15) - ret i64 %t14 -} - -define internal { ptr, i64, i64 } @finch.host.nullDevice() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6642, i64 3, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.tempDir() { -entry: - %a8 = alloca { ptr, i64, i64 }, align 16 - %a9 = alloca 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 - %a36 = alloca { ptr, i64, i64 }, align 16 - %t1 = mul i64 2, 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.6643, i64 4, i64 0 }, ptr %t3 - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t2, i64 1 - store { ptr, i64, i64 } { ptr @.str.6644, i64 3, i64 0 }, ptr %t4 - %t5 = insertvalue { ptr, i64, i64 } undef, ptr %t2, 0 - %t6 = insertvalue { ptr, i64, i64 } %t5, i64 2, 1 - %t7 = insertvalue { ptr, i64, i64 } %t6, i64 2, 2 - store { ptr, i64, i64 } %t7, ptr %a8 - store i64 0, ptr %a9 - br label %each.cond9880 -each.cond9880: - %t10 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, 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.body9881, label %each.end9883 -each.body9881: - %t14 = load ptr, ptr %a8 - %t15 = getelementptr inbounds { ptr, i64, i64 }, ptr %t14, i64 %t12 - %t16 = load { ptr, i64, i64 }, ptr %t15 - store { ptr, i64, i64 } %t16, ptr %a17 - %t18 = load { ptr, i64, i64 }, ptr %a17 - %t19 = extractvalue { ptr, i64, i64 } %t18, 0 - %t20 = icmp eq ptr %t19, null - %t21 = select i1 %t20, ptr @.str.6645, 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 %then9884, label %endif9886 -then9884: - %t32 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.6647, i64 1, i64 0 }, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.6648, i64 1, i64 0 }, ptr %a36 - call void @finch_str_replace(ptr %a34, ptr %a33, ptr %a35, ptr %a36) - %t37 = load { ptr, i64, i64 }, ptr %a34 - call void @finch_str_drop(ptr %a28) - call void @finch.drop.arr_str(ptr %a8) - ret { ptr, i64, i64 } %t37 -endif9886: - call void @finch_str_drop(ptr %a28) - br label %each.step9882 -each.step9882: - %t38 = load i64, ptr %a9 - %t39 = add i64 %t38, 1 - store i64 %t39, ptr %a9 - br label %each.cond9880 -each.end9883: - call void @finch.drop.arr_str(ptr %a8) - ret { ptr, i64, i64 } { ptr @.str.6649, i64 1, i64 0 } -} - -define internal { ptr, i64, i64 } @finch.host.pathSeparator() { -entry: - - ret { ptr, i64, i64 } { ptr @.str.6650, i64 1, i64 0 } -} - -define internal i64 @finch.host.pid() { -entry: - - %t1 = call i32 @getpid() - %t2 = sext i32 %t1 to i64 - ret i64 %t2 -} - -define internal { ptr, i64, i64 } @finch.host.cwd() { -entry: - %a2 = 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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %t1 = call ptr @_getcwd(ptr null, i32 0) - store { ptr, i64, i64 } zeroinitializer, ptr %a2 - call void @finch_str_from_c(ptr %a2, ptr %t1) - %t3 = load { ptr, i64, i64 }, ptr %a2 - 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 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t9 = load i64, ptr %t8 - %t10 = icmp eq i64 %t9, 0 - br i1 %t10, label %then9887, label %endif9889 -then9887: - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } { ptr @.str.6651, i64 1, i64 0 } -endif9889: - %t11 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t11, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.6653, i64 1, i64 0 }, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.6654, i64 1, i64 0 }, ptr %a15 - call void @finch_str_replace(ptr %a13, ptr %a12, ptr %a14, ptr %a15) - %t16 = load { ptr, i64, i64 }, ptr %a13 - call void @finch_str_drop(ptr %a7) - ret { ptr, i64, i64 } %t16 -} - -define internal { ptr, i64, i64 } @finch.host.cacheDir() { -entry: - %a5 = alloca { ptr, i64, i64 }, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %t1 = extractvalue { ptr, i64, i64 } { ptr @.str.6655, i64 12, i64 0 }, 0 - %t2 = icmp eq ptr %t1, null - %t3 = select i1 %t2, ptr @.str.6656, 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 %then9890, label %endif9892 -then9890: - %t14 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t14, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.6658, i64 1, i64 0 }, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.6659, i64 1, i64 0 }, ptr %a18 - call void @finch_str_replace(ptr %a16, ptr %a15, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t19, ptr %a21 - store { ptr, i64, i64 } { ptr @.str.6660, i64 6, i64 0 }, ptr %a22 - call void @finch_str_concat(ptr %a20, ptr %a21, ptr %a22) - store { ptr, i64, i64 } %t19, ptr %a23 - call void @finch_str_drop(ptr %a23) - %t24 = load { ptr, i64, i64 }, ptr %a20 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t24 -endif9892: - %t25 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t25, ptr %a27 - store { ptr, i64, i64 } { ptr @.str.6661, i64 12, i64 0 }, ptr %a28 - call void @finch_str_concat(ptr %a26, ptr %a27, ptr %a28) - store { ptr, i64, i64 } %t25, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a26 - call void @finch_str_drop(ptr %a10) - ret { ptr, i64, i64 } %t30 -} - -define internal void @finch.host.binaryStdio() { -entry: - - %t1 = call i32 @_setmode(i32 0, i32 32768) - %t2 = call i32 @_setmode(i32 1, i32 32768) - ret void -} - -define internal void @finch.host.makeDirs({ 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 i64, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca i64, align 16 - %a25 = 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 - %a49 = 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.6663, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.6664, 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 i64 0, ptr %a9 - %t10 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t10, ptr %a11 - store { ptr, i64, i64 } { ptr @.str.6666, i64 1, i64 0 }, ptr %a13 - call void @finch_str_split(ptr %a14, ptr %a11, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t15, ptr %a16 - store i64 0, ptr %a17 - br label %each.cond9893 -each.cond9893: - %t18 = getelementptr inbounds { ptr, i64, i64 }, ptr %a16, i32 0, i32 1 - %t19 = load i64, ptr %t18 - %t20 = load i64, ptr %a17 - %t21 = icmp slt i64 %t20, %t19 - br i1 %t21, label %each.body9894, label %each.end9896 -each.body9894: - %t22 = load ptr, ptr %a16 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t20 - %t24 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t24, ptr %a25 - %t26 = load i64, ptr %a9 - %t27 = icmp sgt i64 %t26, 0 - br i1 %t27, label %then9897, label %endif9899 -then9897: - %t28 = load i64, ptr %a9 - %t29 = add i64 %t28, 1 - store i64 %t29, ptr %a9 - br label %endif9899 -endif9899: - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 - %t31 = load i64, ptr %t30 - %t32 = load i64, ptr %a9 - %t33 = add i64 %t32, %t31 - store i64 %t33, ptr %a9 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %a25, i32 0, i32 1 - %t35 = load i64, ptr %t34 - %t36 = icmp eq i64 %t35, 0 - br label %logic.from9900 -logic.from9900: - br i1 %t36, label %logic.end9902, label %logic.rhs9901 -logic.rhs9901: - %t37 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.6668, i64 1, i64 0 }, ptr %a40 - %t41 = call i32 @finch_str_ends(ptr %a38, ptr %a40) - %t42 = icmp ne i32 %t41, 0 - br label %logic.rend9903 -logic.rend9903: - br label %logic.end9902 -logic.end9902: - %t43 = phi i1 [ true, %logic.from9900 ], [ %t42, %logic.rend9903 ] - br i1 %t43, label %then9904, label %endif9906 -then9904: - br label %each.step9895 -endif9906: - %t44 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t44, ptr %a45 - %t47 = load i64, ptr %a9 - call void @finch_str_sub(ptr %a46, ptr %a45, i64 0, i64 %t47, ptr @.str.6669, i64 87) - %t48 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t48, ptr %a49 - %t50 = load { ptr, i64, i64 }, ptr %a49 - %t51 = extractvalue { ptr, i64, i64 } %t50, 0 - %t52 = icmp eq ptr %t51, null - %t53 = select i1 %t52, ptr @.str.6670, ptr %t51 - %t54 = call i32 @_mkdir(ptr %t53) - call void @finch_str_drop(ptr %a49) - br label %each.step9895 -each.step9895: - %t55 = load i64, ptr %a17 - %t56 = add i64 %t55, 1 - store i64 %t56, ptr %a17 - br label %each.cond9893 -each.end9896: - call void @finch.drop.arr_str(ptr %a16) - call void @finch_str_drop(ptr %a8) - ret void -} - -define internal void @finch.host.remove({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a4 - call void @finch_str_copy(ptr %a3, ptr %a4) - %t5 = call i32 @finch_delete_file(ptr %a3) - call void @finch_str_drop(ptr %a3) - %t6 = icmp ne i32 %t5, 0 - ret void -} - -define internal void @finch.host.removeTree({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a9 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.native({ ptr, i64, i64 } %t2) - %t4 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } %t3, ptr %a5 - call void @finch_str_drop(ptr %a5) - store { ptr, i64, i64 } { ptr @.str.6671, i64 13, i64 0 }, ptr %a7 - store { ptr, i64, i64 } %t4, ptr %a8 - call void @finch_str_concat(ptr %a6, ptr %a7, ptr %a8) - store { ptr, i64, i64 } %t4, ptr %a9 - call void @finch_str_drop(ptr %a9) - %t10 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t10, ptr %a12 - store { ptr, i64, i64 } { ptr @.str.6672, i64 8, i64 0 }, ptr %a13 - call void @finch_str_concat(ptr %a11, ptr %a12, ptr %a13) - store { ptr, i64, i64 } %t10, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a11 - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_copy(ptr %a16, ptr %a17) - %t18 = call i64 @finch_shell(ptr %a16) - call void @finch_str_drop(ptr %a16) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - ret void -} - -define internal void @finch.host.move({ ptr, i64, i64 } %p0, { ptr, i64, i64 } %p1) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a2 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = 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 %a2 - store { ptr, i64, i64 } %t3, ptr %a5 - call void @finch_str_copy(ptr %a4, ptr %a5) - %t6 = call i32 @finch_delete_file(ptr %a4) - call void @finch_str_drop(ptr %a4) - %t7 = icmp ne i32 %t6, 0 - %t8 = load { ptr, i64, i64 }, ptr %a1 - %t9 = extractvalue { ptr, i64, i64 } %t8, 0 - %t10 = icmp eq ptr %t9, null - %t11 = select i1 %t10, ptr @.str.6673, ptr %t9 - %t12 = load { ptr, i64, i64 }, ptr %a2 - %t13 = extractvalue { ptr, i64, i64 } %t12, 0 - %t14 = icmp eq ptr %t13, null - %t15 = select i1 %t14, ptr @.str.6674, ptr %t13 - %t16 = call i32 @rename(ptr %t11, ptr %t15) - ret void -} - -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_trim(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t5, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.6677, 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 } %t5, ptr %a11 - call void @finch_str_drop(ptr %a11) - store { ptr, i64, i64 } %t10, ptr %a12 - %t13 = load { ptr, i64, i64 }, ptr %a12 - %t14 = extractvalue { ptr, i64, i64 } %t13, 1 - %t15 = icmp uge i64 0, %t14 - br i1 %t15, label %range9907, label %inrange9908 -range9907: - call void @finch_panic_index(ptr @.str.6678, i64 21, i64 0, i64 %t14) - unreachable -inrange9908: - %t16 = extractvalue { ptr, i64, i64 } %t13, 0 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %t16, i64 0 - %t18 = load { ptr, i64, i64 }, ptr %t17 - store { ptr, i64, i64 } %t18, ptr %a19 - call void @finch_str_trim(ptr %a20, ptr %a19) - %t21 = load { ptr, i64, i64 }, ptr %a20 - call void @finch.drop.arr_str(ptr %a12) - ret { ptr, i64, i64 } %t21 -} - -define internal { ptr, i64, i64 } @finch.platform.hostTriple() { -entry: - %a2 = alloca { ptr, i64, i64 }, align 16 - %a3 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca { ptr, i64, i64 }, align 16 - %a8 = alloca { ptr, i64, i64 }, align 16 - %a10 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca { ptr, i64, i64 }, align 16 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a13 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %t1 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t1, ptr %a3 - store { ptr, i64, i64 } { ptr @.str.6680, i64 14, i64 0 }, ptr %a4 - call void @finch_str_concat(ptr %a2, ptr %a3, ptr %a4) - store { ptr, i64, i64 } %t1, ptr %a5 - call void @finch_str_drop(ptr %a5) - %t6 = load { ptr, i64, i64 }, ptr %a2 - %t7 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a8, i64 %t7) - %t9 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t6, ptr %a11 - store { ptr, i64, i64 } %t9, ptr %a12 - call void @finch_str_concat(ptr %a10, ptr %a11, ptr %a12) - store { ptr, i64, i64 } %t6, ptr %a13 - call void @finch_str_drop(ptr %a13) - store { ptr, i64, i64 } %t9, ptr %a14 - call void @finch_str_drop(ptr %a14) - %t15 = load { ptr, i64, i64 }, ptr %a10 - store { ptr, i64, i64 } %t15, ptr %a17 - store { ptr, i64, i64 } { ptr @.str.6681, i64 4, i64 0 }, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t15, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = load { ptr, i64, i64 }, ptr %a16 - store { ptr, i64, i64 } %t20, ptr %a21 - %t22 = load { ptr, i64, i64 }, ptr %a21 - %t23 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t22) - store { ptr, i64, i64 } { ptr @.str.6682, i64 21, i64 0 }, ptr %a25 - store { ptr, i64, i64 } %t23, ptr %a26 - call void @finch_str_concat(ptr %a24, ptr %a25, ptr %a26) - store { ptr, i64, i64 } %t23, ptr %a27 - call void @finch_str_drop(ptr %a27) - %t28 = load { ptr, i64, i64 }, ptr %a24 - store { ptr, i64, i64 } %t28, ptr %a30 - store { ptr, i64, i64 } { ptr @.str.6683, i64 4, i64 0 }, ptr %a31 - call void @finch_str_concat(ptr %a29, ptr %a30, ptr %a31) - store { ptr, i64, i64 } %t28, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - %t34 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t33, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t33, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - %t41 = call i64 @finch.host.run({ ptr, i64, i64 } %t40) - store { ptr, i64, i64 } %t40, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - store { ptr, i64, i64 } zeroinitializer, ptr %a46 - %t47 = call i32 @finch_try_read_file(ptr %a45, ptr %a44, ptr %a46) - %t48 = icmp eq i32 %t47, 0 - %t49 = load { ptr, i64, i64 }, ptr %a46 - %t50 = load { ptr, i64, i64 }, ptr %a45 - br i1 %t48, label %or.failed9909, label %or.ok9910 -or.failed9909: - store { ptr, i64, i64 } %t49, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %or.bend9911 -or.bend9911: - br label %or.end9912 -or.ok9910: - br label %or.end9912 -or.end9912: - %t52 = phi { ptr, i64, i64 } [ { ptr @.str.6684, i64 0, i64 0 }, %or.bend9911 ], [ %t50, %or.ok9910 ] - store { ptr, i64, i64 } %t52, ptr %a53 - %t54 = load { ptr, i64, i64 }, ptr %a21 - call void @finch.host.remove({ ptr, i64, i64 } %t54) - %t55 = load { ptr, i64, i64 }, ptr %a53 - store { ptr, i64, i64 } %t55, ptr %a56 - call void @finch_str_trim(ptr %a57, ptr %a56) - %t58 = load { ptr, i64, i64 }, ptr %a57 - %t59 = extractvalue { ptr, i64, i64 } %t58, 1 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_drop(ptr %a60) - %t61 = icmp eq i64 %t59, 0 - br i1 %t61, label %then9913, label %endif9915 -then9913: - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } { ptr @.str.6686, i64 24, i64 0 } -endif9915: - %t62 = load { ptr, i64, i64 }, ptr %a53 - %t63 = call { ptr, i64, i64 } @finch.platform.firstLine({ ptr, i64, i64 } %t62) - call void @finch_str_drop(ptr %a53) - call void @finch_str_drop(ptr %a21) - ret { ptr, i64, i64 } %t63 -} - -define internal %S.platform.Target @finch.platform.select({ ptr, i64, i64 } %p0) { -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 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a50 = 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 - %a59 = 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 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca %S.platform.Target, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a94 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %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 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = 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 - %a135 = 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 - %a145 = 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 - %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 - %a169 = alloca i1, 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 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca i1, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a192 = 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 - %a204 = alloca i1, align 16 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a227 = 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 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a255 = 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 - %a277 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a286 = alloca { ptr, i64, i64 }, align 16 - %a289 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = call { ptr, i64, i64 } @finch.platform.hostTriple() - store { ptr, i64, i64 } %t2, ptr %a3 - %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 %then9916, label %else9917 -then9916: - %t12 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_copy(ptr %a14, ptr %a13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - %t16 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t15, ptr %a8 - store { ptr, i64, i64 } %t16, ptr %a17 - call void @finch_str_drop(ptr %a17) - br label %endif9918 -else9917: - %t18 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t18, ptr %a19 - store { ptr, i64, i64 } { ptr @.str.6687, i64 7, i64 0 }, ptr %a20 - %t21 = call i32 @finch_str_eq(ptr %a19, ptr %a20) - %t22 = icmp ne i32 %t21, 0 - br i1 %t22, label %then9919, label %else9920 -then9919: - %t23 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6688, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - br label %endif9921 -else9920: - %t25 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6689, i64 5, i64 0 }, ptr %a27 - %t28 = call i32 @finch_str_eq(ptr %a26, ptr %a27) - %t29 = icmp ne i32 %t28, 0 - br i1 %t29, label %then9922, label %else9923 -then9922: - %t30 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6690, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t30, ptr %a31 - call void @finch_str_drop(ptr %a31) - br label %endif9924 -else9923: - %t32 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t32, ptr %a33 - store { ptr, i64, i64 } { ptr @.str.6691, i64 5, i64 0 }, ptr %a34 - %t35 = call i32 @finch_str_eq(ptr %a33, ptr %a34) - %t36 = icmp ne i32 %t35, 0 - br label %logic.from9925 -logic.from9925: - br i1 %t36, label %logic.end9927, label %logic.rhs9926 -logic.rhs9926: - %t37 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t37, ptr %a38 - store { ptr, i64, i64 } { ptr @.str.6692, i64 7, i64 0 }, ptr %a39 - %t40 = call i32 @finch_str_eq(ptr %a38, ptr %a39) - %t41 = icmp ne i32 %t40, 0 - br label %logic.rend9928 -logic.rend9928: - br label %logic.end9927 -logic.end9927: - %t42 = phi i1 [ true, %logic.from9925 ], [ %t41, %logic.rend9928 ] - br label %logic.from9929 -logic.from9929: - br i1 %t42, label %logic.end9931, label %logic.rhs9930 -logic.rhs9930: - %t43 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t43, ptr %a44 - store { ptr, i64, i64 } { ptr @.str.6693, i64 11, i64 0 }, ptr %a45 - %t46 = call i32 @finch_str_eq(ptr %a44, ptr %a45) - %t47 = icmp ne i32 %t46, 0 - br label %logic.rend9932 -logic.rend9932: - br label %logic.end9931 -logic.end9931: - %t48 = phi i1 [ true, %logic.from9929 ], [ %t47, %logic.rend9932 ] - br i1 %t48, label %then9933, label %else9934 -then9933: - %t49 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6694, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t49, ptr %a50 - call void @finch_str_drop(ptr %a50) - br label %endif9935 -else9934: - %t51 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t51, ptr %a52 - store { ptr, i64, i64 } { ptr @.str.6695, i64 5, i64 0 }, ptr %a53 - %t54 = call i32 @finch_str_eq(ptr %a52, ptr %a53) - %t55 = icmp ne i32 %t54, 0 - br i1 %t55, label %then9936, label %endif9938 -then9936: - %t56 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t56, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.6697, i64 7, i64 0 }, ptr %a59 - %t60 = call i32 @finch_str_starts(ptr %a57, ptr %a59) - %t61 = icmp ne i32 %t60, 0 - br label %logic.from9939 -logic.from9939: - br i1 %t61, label %logic.end9941, label %logic.rhs9940 -logic.rhs9940: - %t62 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t62, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6699, i64 5, i64 0 }, ptr %a65 - %t66 = call i32 @finch_str_starts(ptr %a63, ptr %a65) - %t67 = icmp ne i32 %t66, 0 - br label %logic.rend9942 -logic.rend9942: - br label %logic.end9941 -logic.end9941: - %t68 = phi i1 [ true, %logic.from9939 ], [ %t67, %logic.rend9942 ] - br i1 %t68, label %then9943, label %else9944 -then9943: - %t69 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6700, i64 24, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t69, ptr %a70 - call void @finch_str_drop(ptr %a70) - br label %endif9945 -else9944: - %t71 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6701, i64 25, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t71, ptr %a72 - call void @finch_str_drop(ptr %a72) - br label %endif9945 -endif9945: - br label %endif9938 -endif9938: - br label %endif9935 -endif9935: - br label %endif9924 -endif9924: - br label %endif9921 -endif9921: - br label %endif9918 -endif9918: - %t73 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t73, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6702, i64 22, i64 0 }, ptr %a75 - %t76 = call i32 @finch_str_eq(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - br i1 %t77, label %then9946, label %endif9948 -then9946: - %t78 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6703, i64 18, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t78, ptr %a79 - call void @finch_str_drop(ptr %a79) - br label %endif9948 -endif9948: - %t80 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t80, ptr %a81 - call void @finch_str_copy(ptr %a82, ptr %a81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = insertvalue %S.platform.Target zeroinitializer, { ptr, i64, i64 } %t83, 0 - store %S.platform.Target %t84, ptr %a85 - %t86 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t86, ptr %a87 - store { ptr, i64, i64 } { ptr @.str.6705, i64 7, i64 0 }, ptr %a89 - %t90 = call i64 @finch_str_find(ptr %a87, ptr %a89) - %t91 = icmp sge i64 %t90, 0 - br label %logic.from9949 -logic.from9949: - br i1 %t91, label %logic.end9951, label %logic.rhs9950 -logic.rhs9950: - %t92 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t92, ptr %a93 - store { ptr, i64, i64 } { ptr @.str.6707, i64 5, i64 0 }, ptr %a95 - %t96 = call i64 @finch_str_find(ptr %a93, ptr %a95) - %t97 = icmp sge i64 %t96, 0 - br label %logic.rend9952 -logic.rend9952: - br label %logic.end9951 -logic.end9951: - %t98 = phi i1 [ true, %logic.from9949 ], [ %t97, %logic.rend9952 ] - br label %logic.from9953 -logic.from9953: - br i1 %t98, label %logic.end9955, label %logic.rhs9954 -logic.rhs9954: - %t99 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t99, ptr %a100 - store { ptr, i64, i64 } { ptr @.str.6709, i64 4, i64 0 }, ptr %a102 - %t103 = call i64 @finch_str_find(ptr %a100, ptr %a102) - %t104 = icmp sge i64 %t103, 0 - br label %logic.rend9956 -logic.rend9956: - br label %logic.end9955 -logic.end9955: - %t105 = phi i1 [ true, %logic.from9953 ], [ %t104, %logic.rend9956 ] - br label %logic.from9957 -logic.from9957: - br i1 %t105, label %logic.end9959, label %logic.rhs9958 -logic.rhs9958: - %t106 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t106, ptr %a107 - store { ptr, i64, i64 } { ptr @.str.6711, i64 5, i64 0 }, ptr %a109 - %t110 = call i64 @finch_str_find(ptr %a107, ptr %a109) - %t111 = icmp sge i64 %t110, 0 - br label %logic.rend9960 -logic.rend9960: - br label %logic.end9959 -logic.end9959: - %t112 = phi i1 [ true, %logic.from9957 ], [ %t111, %logic.rend9960 ] - %t113 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - store i1 %t112, ptr %t113 - %t114 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t114, ptr %a115 - store { ptr, i64, i64 } { ptr @.str.6713, i64 4, i64 0 }, ptr %a117 - %t118 = call i64 @finch_str_find(ptr %a115, ptr %a117) - %t119 = icmp sge i64 %t118, 0 - %t120 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 2 - store i1 %t119, ptr %t120 - %t121 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.6715, i64 5, i64 0 }, ptr %a124 - %t125 = call i64 @finch_str_find(ptr %a122, ptr %a124) - %t126 = icmp sge i64 %t125, 0 - br label %logic.from9961 -logic.from9961: - br i1 %t126, label %logic.end9963, label %logic.rhs9962 -logic.rhs9962: - %t127 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6717, i64 6, i64 0 }, ptr %a130 - %t131 = call i64 @finch_str_find(ptr %a128, ptr %a130) - %t132 = icmp sge i64 %t131, 0 - br label %logic.rend9964 -logic.rend9964: - br label %logic.end9963 -logic.end9963: - %t133 = phi i1 [ true, %logic.from9961 ], [ %t132, %logic.rend9964 ] - br label %logic.from9965 -logic.from9965: - br i1 %t133, label %logic.end9967, label %logic.rhs9966 -logic.rhs9966: - %t134 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t134, ptr %a135 - store { ptr, i64, i64 } { ptr @.str.6719, i64 5, i64 0 }, ptr %a137 - %t138 = call i64 @finch_str_find(ptr %a135, ptr %a137) - %t139 = icmp sge i64 %t138, 0 - br label %logic.rend9968 -logic.rend9968: - br label %logic.end9967 -logic.end9967: - %t140 = phi i1 [ true, %logic.from9965 ], [ %t139, %logic.rend9968 ] - %t141 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - store i1 %t140, ptr %t141 - %t142 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t142, ptr %a143 - store { ptr, i64, i64 } { ptr @.str.6721, i64 7, i64 0 }, ptr %a145 - %t146 = call i32 @finch_str_starts(ptr %a143, ptr %a145) - %t147 = icmp ne i32 %t146, 0 - br label %logic.from9969 -logic.from9969: - br i1 %t147, label %logic.end9971, label %logic.rhs9970 -logic.rhs9970: - %t148 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t148, ptr %a149 - store { ptr, i64, i64 } { ptr @.str.6723, i64 5, i64 0 }, ptr %a151 - %t152 = call i32 @finch_str_starts(ptr %a149, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.rend9972 -logic.rend9972: - br label %logic.end9971 -logic.end9971: - %t154 = phi i1 [ true, %logic.from9969 ], [ %t153, %logic.rend9972 ] - %t155 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - store i1 %t154, ptr %t155 - %t156 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t156, ptr %a157 - store { ptr, i64, i64 } { ptr @.str.6725, i64 7, i64 0 }, ptr %a159 - %t160 = call i32 @finch_str_starts(ptr %a157, ptr %a159) - %t161 = icmp ne i32 %t160, 0 - br label %logic.from9973 -logic.from9973: - br i1 %t161, label %logic.end9975, label %logic.rhs9974 -logic.rhs9974: - %t162 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t162, ptr %a163 - store { ptr, i64, i64 } { ptr @.str.6727, i64 5, i64 0 }, ptr %a165 - %t166 = call i32 @finch_str_starts(ptr %a163, ptr %a165) - %t167 = icmp ne i32 %t166, 0 - br label %logic.rend9976 -logic.rend9976: - br label %logic.end9975 -logic.end9975: - %t168 = phi i1 [ true, %logic.from9973 ], [ %t167, %logic.rend9976 ] - store i1 %t168, ptr %a169 - %t170 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t170, ptr %a171 - store { ptr, i64, i64 } { ptr @.str.6729, i64 5, i64 0 }, ptr %a173 - %t174 = call i64 @finch_str_find(ptr %a171, ptr %a173) - %t175 = icmp sge i64 %t174, 0 - br label %logic.from9977 -logic.from9977: - br i1 %t175, label %logic.end9979, label %logic.rhs9978 -logic.rhs9978: - %t176 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t176, ptr %a177 - store { ptr, i64, i64 } { ptr @.str.6731, i64 6, i64 0 }, ptr %a179 - %t180 = call i64 @finch_str_find(ptr %a177, ptr %a179) - %t181 = icmp sge i64 %t180, 0 - br label %logic.rend9980 -logic.rend9980: - br label %logic.end9979 -logic.end9979: - %t182 = phi i1 [ true, %logic.from9977 ], [ %t181, %logic.rend9980 ] - store i1 %t182, ptr %a183 - %t184 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t184, ptr %a185 - store { ptr, i64, i64 } { ptr @.str.6733, i64 7, i64 0 }, ptr %a187 - %t188 = call i64 @finch_str_find(ptr %a185, ptr %a187) - %t189 = icmp sge i64 %t188, 0 - br label %logic.from9981 -logic.from9981: - br i1 %t189, label %logic.end9983, label %logic.rhs9982 -logic.rhs9982: - %t190 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t190, ptr %a191 - store { ptr, i64, i64 } { ptr @.str.6735, i64 5, i64 0 }, ptr %a193 - %t194 = call i64 @finch_str_find(ptr %a191, ptr %a193) - %t195 = icmp sge i64 %t194, 0 - br label %logic.rend9984 -logic.rend9984: - br label %logic.end9983 -logic.end9983: - %t196 = phi i1 [ true, %logic.from9981 ], [ %t195, %logic.rend9984 ] - br label %logic.from9985 -logic.from9985: - br i1 %t196, label %logic.end9987, label %logic.rhs9986 -logic.rhs9986: - %t197 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t197, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.6737, i64 4, i64 0 }, ptr %a200 - %t201 = call i64 @finch_str_find(ptr %a198, ptr %a200) - %t202 = icmp sge i64 %t201, 0 - br label %logic.rend9988 -logic.rend9988: - br label %logic.end9987 -logic.end9987: - %t203 = phi i1 [ true, %logic.from9985 ], [ %t202, %logic.rend9988 ] - store i1 %t203, ptr %a204 - %t205 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t206 = load i1, ptr %t205 - %t207 = load i1, ptr %a204 - %t208 = icmp ne i1 %t206, %t207 - br label %logic.from9989 -logic.from9989: - br i1 %t208, label %logic.end9991, label %logic.rhs9990 -logic.rhs9990: - %t209 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t210 = load i1, ptr %t209 - %t211 = load i1, ptr %a183 - %t212 = icmp ne i1 %t210, %t211 - br label %logic.rend9992 -logic.rend9992: - br label %logic.end9991 -logic.end9991: - %t213 = phi i1 [ true, %logic.from9989 ], [ %t212, %logic.rend9992 ] - br label %logic.from9993 -logic.from9993: - br i1 %t213, label %logic.end9995, label %logic.rhs9994 -logic.rhs9994: - %t214 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t215 = load i1, ptr %t214 - %t216 = load i1, ptr %a169 - %t217 = icmp ne i1 %t215, %t216 - br label %logic.rend9996 -logic.rend9996: - br label %logic.end9995 -logic.end9995: - %t218 = phi i1 [ true, %logic.from9993 ], [ %t217, %logic.rend9996 ] - %t219 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - store i1 %t218, ptr %t219 - %t220 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t221 = load { ptr, i64, i64 }, ptr %t220 - store { ptr, i64, i64 } { ptr @.str.6738, i64 0, i64 0 }, ptr %t220 - store { ptr, i64, i64 } %t221, ptr %a222 - call void @finch_str_drop(ptr %a222) - %t223 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t224 = load i1, ptr %t223 - br i1 %t224, label %then9997, label %endif9999 -then9997: - %t225 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 6 - %t226 = load { ptr, i64, i64 }, ptr %t225 - store { ptr, i64, i64 } { ptr @.str.6739, i64 4, i64 0 }, ptr %t225 - store { ptr, i64, i64 } %t226, ptr %a227 - call void @finch_str_drop(ptr %a227) - br label %endif9999 -endif9999: - %t228 = extractvalue { ptr, i64, i64 } { ptr @.str.6740, i64 8, i64 0 }, 0 - %t229 = icmp eq ptr %t228, null - %t230 = select i1 %t229, ptr @.str.6741, ptr %t228 - %t231 = call ptr @getenv(ptr %t230) - store { ptr, i64, i64 } zeroinitializer, ptr %a232 - call void @finch_str_from_c(ptr %a232, ptr %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - 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 %a237 - %t238 = getelementptr inbounds { ptr, i64, i64 }, ptr %a237, i32 0, i32 1 - %t239 = load i64, ptr %t238 - %t240 = icmp sgt i64 %t239, 0 - br i1 %t240, label %then10000, label %else10001 -then10000: - %t241 = load { ptr, i64, i64 }, ptr %a237 - %t242 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - store { ptr, i64, i64 } %t241, ptr %a243 - call void @finch_str_copy(ptr %a244, ptr %a243) - %t245 = load { ptr, i64, i64 }, ptr %a244 - %t246 = load { ptr, i64, i64 }, ptr %t242 - store { ptr, i64, i64 } %t245, ptr %t242 - store { ptr, i64, i64 } %t246, ptr %a247 - call void @finch_str_drop(ptr %a247) - br label %endif10002 -else10001: - %t248 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t249 = load i1, ptr %t248 - br label %logic.from10003 -logic.from10003: - br i1 %t249, label %logic.rhs10004, label %logic.end10005 -logic.rhs10004: - %t250 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t251 = load i1, ptr %t250 - br label %logic.rend10006 -logic.rend10006: - br label %logic.end10005 -logic.end10005: - %t252 = phi i1 [ false, %logic.from10003 ], [ %t251, %logic.rend10006 ] - br i1 %t252, label %then10007, label %else10008 -then10007: - %t253 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t254 = load { ptr, i64, i64 }, ptr %t253 - store { ptr, i64, i64 } { ptr @.str.6742, i64 22, i64 0 }, ptr %t253 - store { ptr, i64, i64 } %t254, ptr %a255 - call void @finch_str_drop(ptr %a255) - br label %endif10009 -else10008: - %t256 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t257 = load i1, ptr %t256 - br label %logic.from10010 -logic.from10010: - br i1 %t257, label %logic.rhs10011, label %logic.end10012 -logic.rhs10011: - %t258 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t259 = load i1, ptr %t258 - br label %logic.rend10013 -logic.rend10013: - br label %logic.end10012 -logic.end10012: - %t260 = phi i1 [ false, %logic.from10010 ], [ %t259, %logic.rend10013 ] - br label %logic.from10014 -logic.from10014: - br i1 %t260, label %logic.rhs10015, label %logic.end10016 -logic.rhs10015: - %t261 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t262 = load i1, ptr %t261 - %t263 = xor i1 %t262, true - br label %logic.rend10017 -logic.rend10017: - br label %logic.end10016 -logic.end10016: - %t264 = phi i1 [ false, %logic.from10014 ], [ %t263, %logic.rend10017 ] - br i1 %t264, label %then10018, label %else10019 -then10018: - %t265 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t266 = load { ptr, i64, i64 }, ptr %t265 - store { ptr, i64, i64 } { ptr @.str.6743, i64 21, i64 0 }, ptr %t265 - store { ptr, i64, i64 } %t266, ptr %a267 - call void @finch_str_drop(ptr %a267) - br label %endif10020 -else10019: - %t268 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t269 = load i1, ptr %t268 - br i1 %t269, label %then10021, label %else10022 -then10021: - %t270 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.6744, i64 15, i64 0 }, 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 - %t275 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t276 = load { ptr, i64, i64 }, ptr %t275 - store { ptr, i64, i64 } %t274, ptr %t275 - store { ptr, i64, i64 } %t276, ptr %a277 - call void @finch_str_drop(ptr %a277) - br label %endif10023 -else10022: - %t278 = call { ptr, i64, i64 } @finch.host.pathSeparator() - store { ptr, i64, i64 } %t278, ptr %a279 - store { ptr, i64, i64 } { ptr @.str.6745, i64 1, i64 0 }, ptr %a280 - %t281 = call i32 @finch_str_eq(ptr %a279, ptr %a280) - %t282 = icmp ne i32 %t281, 0 - store { ptr, i64, i64 } %t278, ptr %a283 - call void @finch_str_drop(ptr %a283) - br i1 %t282, label %then10024, label %else10025 -then10024: - %t284 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t285 = load { ptr, i64, i64 }, ptr %t284 - store { ptr, i64, i64 } { ptr @.str.6746, i64 5, i64 0 }, ptr %t284 - store { ptr, i64, i64 } %t285, ptr %a286 - call void @finch_str_drop(ptr %a286) - br label %endif10026 -else10025: - %t287 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 7 - %t288 = load { ptr, i64, i64 }, ptr %t287 - store { ptr, i64, i64 } { ptr @.str.6747, i64 2, i64 0 }, ptr %t287 - store { ptr, i64, i64 } %t288, ptr %a289 - call void @finch_str_drop(ptr %a289) - br label %endif10026 -endif10026: - br label %endif10023 -endif10023: - br label %endif10020 -endif10020: - br label %endif10009 -endif10009: - br label %endif10002 -endif10002: - %t290 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t291 = load i1, ptr %t290 - br label %logic.from10027 -logic.from10027: - br i1 %t291, label %logic.rhs10028, label %logic.end10029 -logic.rhs10028: - %t292 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 1 - %t293 = load i1, ptr %t292 - br label %logic.rend10030 -logic.rend10030: - br label %logic.end10029 -logic.end10029: - %t294 = phi i1 [ false, %logic.from10027 ], [ %t293, %logic.rend10030 ] - br i1 %t294, label %then10031, label %else10032 -then10031: - %t295 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t296 = load { ptr, i64, i64 }, ptr %t295 - store { ptr, i64, i64 } { ptr @.str.6748, i64 5, i64 0 }, ptr %t295 - store { ptr, i64, i64 } %t296, ptr %a297 - call void @finch_str_drop(ptr %a297) - br label %endif10033 -else10032: - %t298 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 5 - %t299 = load i1, ptr %t298 - br label %logic.from10034 -logic.from10034: - br i1 %t299, label %logic.rhs10035, label %logic.end10036 -logic.rhs10035: - %t300 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 4 - %t301 = load i1, ptr %t300 - br label %logic.rend10037 -logic.rend10037: - br label %logic.end10036 -logic.end10036: - %t302 = phi i1 [ false, %logic.from10034 ], [ %t301, %logic.rend10037 ] - br label %logic.from10038 -logic.from10038: - br i1 %t302, label %logic.rhs10039, label %logic.end10040 -logic.rhs10039: - %t303 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 3 - %t304 = load i1, ptr %t303 - %t305 = xor i1 %t304, true - br label %logic.rend10041 -logic.rend10041: - br label %logic.end10040 -logic.end10040: - %t306 = phi i1 [ false, %logic.from10038 ], [ %t305, %logic.rend10041 ] - br i1 %t306, label %then10042, label %endif10044 -then10042: - %t307 = getelementptr inbounds %S.platform.Target, ptr %a85, i32 0, i32 8 - %t308 = load { ptr, i64, i64 }, ptr %t307 - store { ptr, i64, i64 } { ptr @.str.6749, i64 13, i64 0 }, ptr %t307 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10044 -endif10044: - br label %endif10033 -endif10033: - %t310 = load %S.platform.Target, ptr %a85 - call void @finch_str_drop(ptr %a237) - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a3) - ret %S.platform.Target %t310 -} - -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.from10045 -logic.from10045: - br i1 %t4, label %logic.end10047, label %logic.rhs10046 -logic.rhs10046: - %t5 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 3 - %t6 = load i1, ptr %t5 - br label %logic.rend10048 -logic.rend10048: - br label %logic.end10047 -logic.end10047: - %t7 = phi i1 [ true, %logic.from10045 ], [ %t6, %logic.rend10048 ] - br label %logic.from10049 -logic.from10049: - br i1 %t7, label %logic.end10051, label %logic.rhs10050 -logic.rhs10050: - %t8 = getelementptr inbounds %S.platform.Target, ptr %a1, i32 0, i32 1 - %t9 = load i1, ptr %t8 - br label %logic.rend10052 -logic.rend10052: - br label %logic.end10051 -logic.end10051: - %t10 = phi i1 [ true, %logic.from10049 ], [ %t9, %logic.rend10052 ] - 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.cond10053 -each.cond10053: - %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.body10054, label %each.end10056 -each.body10054: - %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.step10055 -each.step10055: - %t17 = load i64, ptr %a3 - %t18 = add i64 %t17, 1 - store i64 %t18, ptr %a3 - br label %each.cond10053 -each.end10056: - store { ptr, i64, i64 } { ptr @.str.6750, i64 16, i64 0 }, ptr %a19 - store { ptr, i64, i64 } zeroinitializer, ptr %a20 - store i64 0, ptr %a21 - br label %for.cond10057 -for.cond10057: - %t22 = load i64, ptr %a21 - %t23 = icmp slt i64 %t22, 8 - br i1 %t23, label %for.body10058, label %for.end10060 -for.body10058: - %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 %range10061, label %inrange10062 -range10061: - call void @finch_panic_index(ptr @.str.6751, i64 16, i64 %t32, i64 %t34) - unreachable -inrange10062: - %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.step10059 -for.step10059: - %t45 = load i64, ptr %a21 - %t46 = add i64 %t45, 1 - store i64 %t46, ptr %a21 - br label %for.cond10057 -for.end10060: - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %a20, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6752, i64 0, i64 0 }, ptr %a48 - call void @finch_str_join(ptr %a49, ptr %a20, ptr %a48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - call void @finch.drop.arr_str(ptr %a20) - call void @finch_str_drop(ptr %a19) - ret { ptr, i64, i64 } %t50 -} - -define internal { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t2) - ret { ptr, i64, i64 } %t3 -} - -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca i64, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a102 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a115 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.platform.Target %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.6754, 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 %then10063, label %endif10065 -then10063: - %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.6756, i64 28) - %t15 = load { ptr, i64, i64 }, ptr %a11 - %t16 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t15) - store { ptr, i64, i64 } %t15, ptr %a17 - call void @finch_str_drop(ptr %a17) - store { ptr, i64, i64 } { ptr @.str.6755, i64 11, i64 0 }, ptr %a19 - store { ptr, i64, i64 } %t16, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t16, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - ret { ptr, i64, i64 } %t22 -endif10065: - %t23 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t24 = load i1, ptr %t23 - %t25 = xor i1 %t24, true - br i1 %t25, label %then10066, label %endif10068 -then10066: - %t26 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t26, ptr %a28 - store { ptr, i64, i64 } { ptr @.str.6757, i64 17, i64 0 }, ptr %a29 - call void @finch_str_concat(ptr %a27, ptr %a28, ptr %a29) - store { ptr, i64, i64 } %t26, ptr %a30 - call void @finch_str_drop(ptr %a30) - %t31 = load { ptr, i64, i64 }, ptr %a27 - %t32 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a33, i64 %t32) - %t34 = load { ptr, i64, i64 }, ptr %a33 - store { ptr, i64, i64 } %t31, ptr %a36 - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_concat(ptr %a35, ptr %a36, ptr %a37) - store { ptr, i64, i64 } %t31, ptr %a38 - call void @finch_str_drop(ptr %a38) - store { ptr, i64, i64 } %t34, ptr %a39 - call void @finch_str_drop(ptr %a39) - %t40 = load { ptr, i64, i64 }, ptr %a35 - store { ptr, i64, i64 } %t40, ptr %a42 - store { ptr, i64, i64 } { ptr @.str.6758, i64 4, i64 0 }, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t45, ptr %a46 - %t47 = load { ptr, i64, i64 }, ptr %a1 - %t48 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t47) - store { ptr, i64, i64 } { ptr @.str.6759, i64 18, i64 0 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t48, ptr %a52 - call void @finch_str_drop(ptr %a52) - %t53 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t53, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6760, i64 3, i64 0 }, ptr %a56 - call void @finch_str_concat(ptr %a54, ptr %a55, ptr %a56) - store { ptr, i64, i64 } %t53, ptr %a57 - call void @finch_str_drop(ptr %a57) - %t58 = load { ptr, i64, i64 }, ptr %a54 - %t59 = load { ptr, i64, i64 }, ptr %a46 - %t60 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t59) - store { ptr, i64, i64 } %t58, ptr %a62 - store { ptr, i64, i64 } %t60, ptr %a63 - call void @finch_str_concat(ptr %a61, ptr %a62, ptr %a63) - store { ptr, i64, i64 } %t58, ptr %a64 - call void @finch_str_drop(ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a61 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.6761, i64 4, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = call { ptr, i64, i64 } @finch.host.nullDevice() - store { ptr, i64, i64 } %t71, ptr %a74 - store { ptr, i64, i64 } %t72, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - store { ptr, i64, i64 } %t71, ptr %a76 - call void @finch_str_drop(ptr %a76) - store { ptr, i64, i64 } %t72, ptr %a77 - call void @finch_str_drop(ptr %a77) - %t78 = load { ptr, i64, i64 }, ptr %a73 - %t79 = call i64 @finch.host.run({ ptr, i64, i64 } %t78) - store { ptr, i64, i64 } %t78, ptr %a80 - call void @finch_str_drop(ptr %a80) - store i64 %t79, ptr %a81 - %t82 = load i64, ptr %a81 - %t83 = icmp eq i64 %t82, 0 - br label %logic.from10069 -logic.from10069: - br i1 %t83, label %logic.rhs10070, label %logic.end10071 -logic.rhs10070: - %t84 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t84, ptr %a85 - %t86 = call i32 @finch_file_exists(ptr %a85) - %t87 = icmp ne i32 %t86, 0 - br label %logic.rend10072 -logic.rend10072: - br label %logic.end10071 -logic.end10071: - %t88 = phi i1 [ false, %logic.from10069 ], [ %t87, %logic.rend10072 ] - br i1 %t88, label %then10073, label %endif10075 -then10073: - %t89 = load { ptr, i64, i64 }, ptr %a46 - store { ptr, i64, i64 } %t89, ptr %a90 - store { ptr, i64, i64 } zeroinitializer, ptr %a91 - store { ptr, i64, i64 } zeroinitializer, ptr %a92 - %t93 = call i32 @finch_try_read_file(ptr %a91, ptr %a90, ptr %a92) - %t94 = icmp eq i32 %t93, 0 - %t95 = load { ptr, i64, i64 }, ptr %a92 - %t96 = load { ptr, i64, i64 }, ptr %a91 - br i1 %t94, label %or.failed10076, label %or.ok10077 -or.failed10076: - store { ptr, i64, i64 } %t95, ptr %a97 - call void @finch_str_drop(ptr %a97) - br label %or.bend10078 -or.bend10078: - br label %or.end10079 -or.ok10077: - br label %or.end10079 -or.end10079: - %t98 = phi { ptr, i64, i64 } [ { ptr @.str.6762, i64 0, i64 0 }, %or.bend10078 ], [ %t96, %or.ok10077 ] - store { ptr, i64, i64 } %t98, ptr %a99 - call void @finch_str_trim(ptr %a100, ptr %a99) - %t101 = load { ptr, i64, i64 }, ptr %a100 - store { ptr, i64, i64 } %t98, ptr %a102 - call void @finch_str_drop(ptr %a102) - store { ptr, i64, i64 } %t101, ptr %a103 - %t104 = load { ptr, i64, i64 }, ptr %a46 - call void @finch.host.remove({ ptr, i64, i64 } %t104) - %t105 = getelementptr inbounds { ptr, i64, i64 }, ptr %a103, i32 0, i32 1 - %t106 = load i64, ptr %t105 - %t107 = icmp sgt i64 %t106, 0 - br i1 %t107, label %then10080, label %endif10082 -then10080: - %t108 = load { ptr, i64, i64 }, ptr %a103 - call void @finch_str_drop(ptr %a46) - ret { ptr, i64, i64 } %t108 -endif10082: - call void @finch_str_drop(ptr %a103) - br label %endif10075 -endif10075: - call void @finch_str_drop(ptr %a46) - br label %endif10068 -endif10068: - %t109 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6764, i64 2, i64 0 }, ptr %a111 - store { ptr, i64, i64 } %t109, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - %t114 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t113) - store { ptr, i64, i64 } %t113, ptr %a115 - call void @finch_str_drop(ptr %a115) - ret { ptr, i64, i64 } %t114 -} - -define internal { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %p0) { -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 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca i64, align 16 - %a35 = alloca i64, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6766, i64 1, i64 0 }, ptr %a10 - %t11 = call i64 @finch_str_find(ptr %a8, ptr %a10) - store i64 %t11, ptr %a12 - br label %while.cond10083 -while.cond10083: - %t13 = load i64, ptr %a12 - %t14 = icmp sge i64 %t13, 0 - br i1 %t14, label %while.body10084, label %while.end10085 -while.body10084: - %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.6767, i64 49) - %t22 = load { ptr, i64, i64 }, ptr %a17 - %t23 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t22, ptr %a6 - store { ptr, i64, i64 } %t23, ptr %a24 - call void @finch_str_drop(ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t25, ptr %a26 - store { ptr, i64, i64 } { ptr @.str.6769, i64 1, i64 0 }, ptr %a28 - %t29 = call i64 @finch_str_find(ptr %a26, ptr %a28) - store i64 %t29, ptr %a12 - br label %while.cond10083 -while.end10085: - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t31 = load i64, ptr %t30 - store i64 %t31, ptr %a32 - %t33 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t34 = load i64, ptr %t33 - store i64 0, ptr %a35 - br label %for.cond10086 -for.cond10086: - %t36 = load i64, ptr %a35 - %t37 = icmp slt i64 %t36, %t34 - br i1 %t37, label %for.body10087, label %for.end10089 -for.body10087: - %t38 = load i64, ptr %a35 - %t39 = load { ptr, i64, i64 }, ptr %a6 - %t40 = extractvalue { ptr, i64, i64 } %t39, 1 - %t41 = icmp uge i64 %t38, %t40 - br i1 %t41, label %range10090, label %inrange10091 -range10090: - call void @finch_panic_index(ptr @.str.6770, i64 54, i64 %t38, i64 %t40) - unreachable -inrange10091: - %t42 = extractvalue { ptr, i64, i64 } %t39, 0 - %t43 = getelementptr inbounds i8, ptr %t42, i64 %t38 - %t44 = load i8, ptr %t43 - %t45 = icmp eq i8 %t44, 46 - br i1 %t45, label %then10092, label %endif10094 -then10092: - %t46 = load i64, ptr %a35 - store i64 %t46, ptr %a32 - br label %endif10094 -endif10094: - br label %for.step10088 -for.step10088: - %t47 = load i64, ptr %a35 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a35 - br label %for.cond10086 -for.end10089: - %t49 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a32 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6771, i64 58) - %t53 = load { ptr, i64, i64 }, ptr %a51 - %t54 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t53, ptr %a6 - store { ptr, i64, i64 } %t54, ptr %a55 - call void @finch_str_drop(ptr %a55) - br label %while.cond10095 -while.cond10095: - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t57 = load i64, ptr %t56 - %t58 = icmp sgt i64 %t57, 0 - br label %logic.from10098 -logic.from10098: - br i1 %t58, label %logic.rhs10099, label %logic.end10100 -logic.rhs10099: - %t59 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t60 = load i64, ptr %t59 - %t61 = sub i64 %t60, 1 - %t62 = load { ptr, i64, i64 }, ptr %a6 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = icmp uge i64 %t61, %t63 - br i1 %t64, label %range10101, label %inrange10102 -range10101: - call void @finch_panic_index(ptr @.str.6772, i64 59, i64 %t61, i64 %t63) - unreachable -inrange10102: - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = getelementptr inbounds i8, ptr %t65, i64 %t61 - %t67 = load i8, ptr %t66 - %t68 = icmp uge i8 %t67, 48 - br label %logic.rend10103 -logic.rend10103: - br label %logic.end10100 -logic.end10100: - %t69 = phi i1 [ false, %logic.from10098 ], [ %t68, %logic.rend10103 ] - br label %logic.from10104 -logic.from10104: - br i1 %t69, label %logic.rhs10105, label %logic.end10106 -logic.rhs10105: - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t71 = load i64, ptr %t70 - %t72 = sub i64 %t71, 1 - %t73 = load { ptr, i64, i64 }, ptr %a6 - %t74 = extractvalue { ptr, i64, i64 } %t73, 1 - %t75 = icmp uge i64 %t72, %t74 - br i1 %t75, label %range10107, label %inrange10108 -range10107: - call void @finch_panic_index(ptr @.str.6773, i64 59, i64 %t72, i64 %t74) - unreachable -inrange10108: - %t76 = extractvalue { ptr, i64, i64 } %t73, 0 - %t77 = getelementptr inbounds i8, ptr %t76, i64 %t72 - %t78 = load i8, ptr %t77 - %t79 = icmp ule i8 %t78, 57 - br label %logic.rend10109 -logic.rend10109: - br label %logic.end10106 -logic.end10106: - %t80 = phi i1 [ false, %logic.from10104 ], [ %t79, %logic.rend10109 ] - br i1 %t80, label %while.body10096, label %while.end10097 -while.body10096: - %t81 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t81, ptr %a82 - %t84 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t85 = load i64, ptr %t84 - %t86 = sub i64 %t85, 1 - call void @finch_str_sub(ptr %a83, ptr %a82, i64 0, i64 %t86, ptr @.str.6774, i64 60) - %t87 = load { ptr, i64, i64 }, ptr %a83 - %t88 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t87, ptr %a6 - store { ptr, i64, i64 } %t88, ptr %a89 - call void @finch_str_drop(ptr %a89) - br label %while.cond10095 -while.end10097: - %t90 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t90, ptr %a91 - call void @finch_str_lower(ptr %a92, ptr %a91) - %t93 = load { ptr, i64, i64 }, ptr %a92 - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t93 -} - -define internal void @finch.linker.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.from10110 -logic.from10110: - br i1 %t4, label %logic.rhs10111, label %logic.end10112 -logic.rhs10111: - %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.cond10113 -find.cond10113: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body10114, label %find.end10117 -find.body10114: - %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.hit10115, label %find.next10116 -find.hit10115: - store i64 %t12, ptr %a8 - br label %find.end10117 -find.next10116: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond10113 -find.end10117: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - %t23 = xor i1 %t22, true - br label %logic.rend10118 -logic.rend10118: - br label %logic.end10112 -logic.end10112: - %t24 = phi i1 [ false, %logic.from10110 ], [ %t23, %logic.rend10118 ] - br i1 %t24, label %then10119, label %endif10121 -then10119: - %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 %endif10121 -endif10121: - 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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - %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 %then10122, label %endif10124 -then10122: - ret { ptr, i64, i64 } { ptr @.str.6777, i64 0, i64 0 } -endif10124: - %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.6778, i64 81) - %t22 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t22, ptr %a23 - store i64 0, ptr %a24 - br label %while.cond10125 -while.cond10125: - %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.from10128 -logic.from10128: - br i1 %t28, label %logic.rhs10129, label %logic.end10130 -logic.rhs10129: - %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 %range10131, label %inrange10132 -range10131: - call void @finch_panic_index(ptr @.str.6780, i64 83, i64 %t32, i64 %t34) - unreachable -inrange10132: - %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 - store { ptr, i64, i64 } %t40, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = xor i1 %t43, true - br label %logic.rend10133 -logic.rend10133: - br label %logic.end10130 -logic.end10130: - %t46 = phi i1 [ false, %logic.from10128 ], [ %t45, %logic.rend10133 ] - br i1 %t46, label %while.body10126, label %while.end10127 -while.body10126: - %t47 = load i64, ptr %a24 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a24 - br label %while.cond10125 -while.end10127: - %t49 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a50 - %t52 = load i64, ptr %a24 - call void @finch_str_sub(ptr %a51, ptr %a50, i64 0, i64 %t52, ptr @.str.6781, i64 86) - %t53 = load { ptr, i64, i64 }, ptr %a51 - call void @finch_str_drop(ptr %a23) - ret { ptr, i64, i64 } %t53 -} - -define internal void @finch.drop.S_linker_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.linker.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal void @finch.drop.arr_S_linker_Names(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10237 -n.cond10237: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10238, label %n.end10239 -n.body10238: - %t7 = getelementptr inbounds %S.linker.Names, ptr %t1, i64 %t5 - call void @finch.drop.S_linker_Names(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10237 -n.end10239: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal i64 @finch.linker.linkFailed({ ptr, i64, i64 } %p0, %S.cimport.CImports %p1, %S.platform.Target %p2) { -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 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a38 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a66 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %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 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca { ptr, i64, i64 }, align 16 - %a185 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a197 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca i64, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a209 = alloca { ptr, i64, i64 }, align 16 - %a212 = alloca { ptr, i64, i64 }, align 16 - %a217 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca i64, align 16 - %a238 = alloca i64, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca i64, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca i64, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a292 = alloca { ptr, i64, i64 }, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca i64, align 16 - %a311 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = alloca { ptr, i64, i64 }, align 16 - %a347 = alloca { ptr, i64, i64 }, align 16 - %a350 = alloca { ptr, i64, i64 }, align 16 - %a361 = alloca { ptr, i64, i64 }, align 16 - %a362 = alloca { ptr, i64, i64 }, align 16 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a371 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a382 = alloca { ptr, i64, i64 }, align 16 - %a384 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %a387 = alloca { ptr, i64, i64 }, align 16 - %a390 = alloca { ptr, i64, i64 }, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a393 = alloca { ptr, i64, i64 }, align 16 - %a395 = alloca { ptr, i64, i64 }, align 16 - %a396 = alloca { ptr, i64, i64 }, align 16 - %a397 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca { ptr, i64, i64 }, align 16 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a408 = alloca { ptr, i64, i64 }, align 16 - %a409 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a412 = alloca { ptr, i64, i64 }, align 16 - %a413 = alloca { ptr, i64, i64 }, align 16 - %a414 = alloca { ptr, i64, i64 }, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a423 = alloca { ptr, i64, i64 }, align 16 - %a454 = alloca { ptr, i64, i64 }, align 16 - %a455 = alloca { ptr, i64, i64 }, align 16 - %a456 = alloca { ptr, i64, i64 }, align 16 - %a457 = alloca { ptr, i64, i64 }, align 16 - %a459 = alloca { ptr, i64, i64 }, align 16 - %a460 = alloca { ptr, i64, i64 }, align 16 - %a461 = alloca { ptr, i64, i64 }, align 16 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a470 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.cimport.CImports %p1, ptr %a2 - store %S.platform.Target %p2, ptr %a3 - 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.6783, 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.cond10134 -each.cond10134: - %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.body10135, label %each.end10137 -each.body10135: - %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.6786, 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 %then10138, label %else10139 -then10138: - %t33 = load { ptr, i64, i64 }, ptr %a26 - %t34 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t33, { ptr, i64, i64 } { ptr @.str.6787, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6788, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t34) - store { ptr, i64, i64 } %t34, ptr %a35 - call void @finch_str_drop(ptr %a35) - br label %endif10140 -else10139: - %t36 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t36, ptr %a37 - store { ptr, i64, i64 } { ptr @.str.6790, i64 18, i64 0 }, ptr %a39 - %t40 = call i64 @finch_str_find(ptr %a37, ptr %a39) - %t41 = icmp sge i64 %t40, 0 - br i1 %t41, label %then10141, label %else10142 -then10141: - %t42 = load { ptr, i64, i64 }, ptr %a26 - %t43 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t42, { ptr, i64, i64 } { ptr @.str.6791, i64 18, i64 0 }, { ptr, i64, i64 } { ptr @.str.6792, i64 2, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t43) - store { ptr, i64, i64 } %t43, ptr %a44 - call void @finch_str_drop(ptr %a44) - br label %endif10143 -else10142: - %t45 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t45, ptr %a46 - store { ptr, i64, i64 } { ptr @.str.6794, i64 27, i64 0 }, ptr %a48 - %t49 = call i64 @finch_str_find(ptr %a46, ptr %a48) - %t50 = icmp sge i64 %t49, 0 - br i1 %t50, label %then10144, label %else10145 -then10144: - %t51 = load { ptr, i64, i64 }, ptr %a26 - %t52 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t51, { ptr, i64, i64 } { ptr @.str.6795, i64 27, i64 0 }, { ptr, i64, i64 } { ptr @.str.6796, i64 3, i64 0 }) - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t52) - store { ptr, i64, i64 } %t52, ptr %a53 - call void @finch_str_drop(ptr %a53) - br label %endif10146 -else10145: - %t54 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t54, ptr %a55 - store { ptr, i64, i64 } { ptr @.str.6798, i64 14, i64 0 }, ptr %a57 - %t58 = call i64 @finch_str_find(ptr %a55, ptr %a57) - %t59 = icmp sge i64 %t58, 0 - br i1 %t59, label %then10147, label %else10148 -then10147: - %t60 = load { ptr, i64, i64 }, ptr %a26 - %t61 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t60, { ptr, i64, i64 } { ptr @.str.6799, i64 14, i64 0 }, { ptr, i64, i64 } { ptr @.str.6800, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t61) - store { ptr, i64, i64 } %t61, ptr %a62 - call void @finch_str_drop(ptr %a62) - br label %endif10149 -else10148: - %t63 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t63, ptr %a64 - store { ptr, i64, i64 } { ptr @.str.6802, i64 24, i64 0 }, ptr %a66 - %t67 = call i64 @finch_str_find(ptr %a64, ptr %a66) - %t68 = icmp sge i64 %t67, 0 - br i1 %t68, label %then10150, label %else10151 -then10150: - %t69 = load { ptr, i64, i64 }, ptr %a26 - %t70 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t69, { ptr, i64, i64 } { ptr @.str.6803, i64 24, i64 0 }, { ptr, i64, i64 } { ptr @.str.6804, i64 4, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t70) - store { ptr, i64, i64 } %t70, ptr %a71 - call void @finch_str_drop(ptr %a71) - br label %endif10152 -else10151: - %t72 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t72, ptr %a73 - store { ptr, i64, i64 } { ptr @.str.6806, i64 13, i64 0 }, ptr %a75 - %t76 = call i64 @finch_str_find(ptr %a73, ptr %a75) - %t77 = icmp sge i64 %t76, 0 - br i1 %t77, label %then10153, label %else10154 -then10153: - %t78 = load { ptr, i64, i64 }, ptr %a26 - %t79 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t78, { ptr, i64, i64 } { ptr @.str.6807, i64 13, i64 0 }, { ptr, i64, i64 } { ptr @.str.6808, i64 1, i64 0 }) - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t79) - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10155 -else10154: - %t81 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t81, ptr %a82 - store { ptr, i64, i64 } { ptr @.str.6810, i64 11, i64 0 }, ptr %a84 - %t85 = call i64 @finch_str_find(ptr %a82, ptr %a84) - %t86 = icmp sge i64 %t85, 0 - br label %logic.from10156 -logic.from10156: - br i1 %t86, label %logic.rhs10157, label %logic.end10158 -logic.rhs10157: - %t87 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t87, ptr %a88 - store { ptr, i64, i64 } { ptr @.str.6812, i64 9, i64 0 }, ptr %a90 - %t91 = call i64 @finch_str_find(ptr %a88, ptr %a90) - %t92 = icmp sge i64 %t91, 0 - br label %logic.rend10159 -logic.rend10159: - br label %logic.end10158 -logic.end10158: - %t93 = phi i1 [ false, %logic.from10156 ], [ %t92, %logic.rend10159 ] - br i1 %t93, label %then10160, label %else10161 -then10160: - %t94 = load { ptr, i64, i64 }, ptr %a26 - %t95 = call { ptr, i64, i64 } @finch.linker.between({ ptr, i64, i64 } %t94, { ptr, i64, i64 } { ptr @.str.6813, i64 11, i64 0 }, { ptr, i64, i64 } { ptr @.str.6814, i64 1, i64 0 }) - store { ptr, i64, i64 } %t95, ptr %a97 - store { ptr, i64, i64 } { ptr @.str.6815, i64 10, i64 0 }, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t95, ptr %a99 - call void @finch_str_drop(ptr %a99) - %t100 = load { ptr, i64, i64 }, ptr %a96 - call void @finch.linker.Names.add(ptr %a5, { ptr, i64, i64 } %t100) - store { ptr, i64, i64 } %t100, ptr %a101 - call void @finch_str_drop(ptr %a101) - br label %endif10162 -else10161: - %t102 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t102, ptr %a103 - store { ptr, i64, i64 } { ptr @.str.6817, i64 1, i64 0 }, ptr %a105 - %t106 = call i32 @finch_str_starts(ptr %a103, ptr %a105) - %t107 = icmp ne i32 %t106, 0 - br label %logic.from10163 -logic.from10163: - br i1 %t107, label %logic.rhs10164, label %logic.end10165 -logic.rhs10164: - %t108 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t108, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6819, i64 19, i64 0 }, ptr %a111 - %t112 = call i64 @finch_str_find(ptr %a109, ptr %a111) - %t113 = icmp sge i64 %t112, 0 - br label %logic.rend10166 -logic.rend10166: - br label %logic.end10165 -logic.end10165: - %t114 = phi i1 [ false, %logic.from10163 ], [ %t113, %logic.rend10166 ] - br i1 %t114, label %then10167, label %endif10169 -then10167: - %t115 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t115, ptr %a116 - %t118 = load { ptr, i64, i64 }, ptr %a26 - store { ptr, i64, i64 } %t118, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.6822, i64 19, i64 0 }, ptr %a121 - %t122 = call i64 @finch_str_find(ptr %a119, ptr %a121) - call void @finch_str_sub(ptr %a117, ptr %a116, i64 1, i64 %t122, ptr @.str.6820, i64 111) - %t123 = load { ptr, i64, i64 }, ptr %a117 - store { ptr, i64, i64 } %t123, ptr %a124 - %t125 = getelementptr inbounds %S.platform.Target, ptr %a3, i32 0, i32 3 - %t126 = load i1, ptr %t125 - br label %logic.from10170 -logic.from10170: - br i1 %t126, label %logic.rhs10171, label %logic.end10172 -logic.rhs10171: - %t127 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t127, ptr %a128 - store { ptr, i64, i64 } { ptr @.str.6824, i64 1, i64 0 }, ptr %a130 - %t131 = call i32 @finch_str_starts(ptr %a128, ptr %a130) - %t132 = icmp ne i32 %t131, 0 - br label %logic.rend10173 -logic.rend10173: - br label %logic.end10172 -logic.end10172: - %t133 = phi i1 [ false, %logic.from10170 ], [ %t132, %logic.rend10173 ] - br i1 %t133, label %then10174, label %endif10176 -then10174: - %t134 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t134, ptr %a135 - %t137 = getelementptr inbounds { ptr, i64, i64 }, ptr %a124, i32 0, i32 1 - %t138 = load i64, ptr %t137 - call void @finch_str_sub(ptr %a136, ptr %a135, i64 1, i64 %t138, ptr @.str.6825, i64 113) - %t139 = load { ptr, i64, i64 }, ptr %a136 - %t140 = load { ptr, i64, i64 }, ptr %a124 - store { ptr, i64, i64 } %t139, ptr %a124 - store { ptr, i64, i64 } %t140, ptr %a141 - call void @finch_str_drop(ptr %a141) - br label %endif10176 -endif10176: - %t142 = load { ptr, i64, i64 }, ptr %a124 - call void @finch.linker.Names.add(ptr %a4, { ptr, i64, i64 } %t142) - call void @finch_str_drop(ptr %a124) - br label %endif10169 -endif10169: - br label %endif10162 -endif10162: - br label %endif10155 -endif10155: - br label %endif10152 -endif10152: - br label %endif10149 -endif10149: - br label %endif10146 -endif10146: - br label %endif10143 -endif10143: - br label %endif10140 -endif10140: - call void @finch_str_drop(ptr %a26) - br label %each.step10136 -each.step10136: - %t143 = load i64, ptr %a13 - %t144 = add i64 %t143, 1 - store i64 %t144, ptr %a13 - br label %each.cond10134 -each.end10137: - call void @finch.drop.arr_str(ptr %a12) - %t145 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i32 0, i32 1 - %t147 = load i64, ptr %t146 - %t148 = icmp eq i64 %t147, 0 - br label %logic.from10177 -logic.from10177: - br i1 %t148, label %logic.rhs10178, label %logic.end10179 -logic.rhs10178: - %t149 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - %t150 = getelementptr inbounds { ptr, i64, i64 }, ptr %t149, i32 0, i32 1 - %t151 = load i64, ptr %t150 - %t152 = icmp eq i64 %t151, 0 - br label %logic.rend10180 -logic.rend10180: - br label %logic.end10179 -logic.end10179: - %t153 = phi i1 [ false, %logic.from10177 ], [ %t152, %logic.rend10180 ] - br i1 %t153, label %then10181, label %endif10183 -then10181: - %t154 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t154, ptr %a156 - store { ptr, i64, i64 } { ptr @.str.6826, i64 21, i64 0 }, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - %t159 = extractvalue { ptr, i64, i64 } %t158, 1 - %t160 = trunc i64 %t159 to i32 - %t161 = extractvalue { ptr, i64, i64 } %t158, 0 - %t162 = icmp eq ptr %t161, null - %t163 = select i1 %t162, ptr @.str.6827, ptr %t161 - %t164 = call i32 (ptr, ...) @printf(ptr @.str.6828, i32 %t160, ptr %t163) - store { ptr, i64, i64 } %t158, ptr %a165 - call void @finch_str_drop(ptr %a165) - %t166 = call i32 (ptr, ...) @printf(ptr @.str.6829) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -endif10183: - %t167 = getelementptr inbounds %S.linker.Names, ptr %a5, i32 0, i32 0 - store i64 0, ptr %a168 - br label %each.cond10184 -each.cond10184: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10185, label %each.end10187 -each.body10185: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds { ptr, i64, i64 }, ptr %t173, i64 %t171 - %t175 = load { ptr, i64, i64 }, ptr %t174 - store { ptr, i64, i64 } %t175, ptr %a176 - %t177 = load { ptr, i64, i64 }, ptr %a176 - store { ptr, i64, i64 } { ptr @.str.6830, i64 20, i64 0 }, ptr %a179 - store { ptr, i64, i64 } %t177, ptr %a180 - call void @finch_str_concat(ptr %a178, ptr %a179, ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a178 - store { ptr, i64, i64 } %t181, ptr %a183 - store { ptr, i64, i64 } { ptr @.str.6831, i64 62, i64 0 }, ptr %a184 - call void @finch_str_concat(ptr %a182, ptr %a183, ptr %a184) - store { ptr, i64, i64 } %t181, ptr %a185 - call void @finch_str_drop(ptr %a185) - %t186 = load { ptr, i64, i64 }, ptr %a182 - %t187 = extractvalue { ptr, i64, i64 } %t186, 1 - %t188 = trunc i64 %t187 to i32 - %t189 = extractvalue { ptr, i64, i64 } %t186, 0 - %t190 = icmp eq ptr %t189, null - %t191 = select i1 %t190, ptr @.str.6832, ptr %t189 - %t192 = call i32 (ptr, ...) @printf(ptr @.str.6833, i32 %t188, ptr %t191) - store { ptr, i64, i64 } %t186, ptr %a193 - call void @finch_str_drop(ptr %a193) - %t194 = call i32 (ptr, ...) @printf(ptr @.str.6834) - br label %each.step10186 -each.step10186: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10184 -each.end10187: - store { ptr, i64, i64 } zeroinitializer, ptr %a197 - store { ptr, i64, i64 } zeroinitializer, ptr %a198 - %t199 = getelementptr inbounds %S.linker.Names, ptr %a4, i32 0, i32 0 - store i64 0, ptr %a200 - br label %each.cond10188 -each.cond10188: - %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.body10189, label %each.end10191 -each.body10189: - %t205 = load ptr, ptr %t199 - %t206 = getelementptr inbounds { ptr, i64, i64 }, ptr %t205, i64 %t203 - %t207 = load { ptr, i64, i64 }, ptr %t206 - store { ptr, i64, i64 } %t207, ptr %a208 - store { ptr, i64, i64 } { ptr @.str.6835, i64 0, i64 0 }, ptr %a209 - %t210 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t211 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t211, ptr %a212 - %t213 = call i64 @finch_map_find(ptr %t210, ptr %a212, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t214 = icmp sge i64 %t213, 0 - br i1 %t214, label %then10192, label %endif10194 -then10192: - %t215 = getelementptr inbounds %S.cimport.CImports, ptr %a2, i32 0, i32 0 - %t216 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t216, ptr %a217 - %t218 = call i64 @finch_map_find(ptr %t215, ptr %a217, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t219 = icmp slt i64 %t218, 0 - br i1 %t219, label %map.missing10195, label %map.found10196 -map.missing10195: - store { ptr, i64, i64 } zeroinitializer, ptr %a220 - store { ptr, i64, i64 } %t216, ptr %a221 - call void @finch_buf_str(ptr %a220, ptr %a221, i32 1) - call void @finch_map_missing(ptr @.str.6836, i64 131, ptr %a220) - unreachable -map.found10196: - %t222 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t215, i32 0, i32 0 - %t223 = load ptr, ptr %t222 - %t224 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t223, i64 %t218 - %t225 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.cimport.CFunc }, ptr %t224, i32 0, i32 2 - %t226 = getelementptr inbounds %S.cimport.CFunc, ptr %t225, i32 0, i32 1 - %t227 = load { ptr, i64, i64 }, ptr %t226 - store { ptr, i64, i64 } %t227, ptr %a228 - call void @finch_str_copy(ptr %a229, ptr %a228) - %t230 = load { ptr, i64, i64 }, ptr %a229 - %t231 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t230, ptr %a209 - store { ptr, i64, i64 } %t231, ptr %a232 - call void @finch_str_drop(ptr %a232) - br label %endif10194 -endif10194: - %t233 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t234 = load { ptr, i64, i64 }, ptr %a209 - store i64 -1, ptr %a235 - %t236 = load i64, ptr %t233 - %t237 = load ptr, ptr %a197 - store i64 0, ptr %a238 - br label %find.cond10197 -find.cond10197: - %t239 = load i64, ptr %a238 - %t240 = icmp slt i64 %t239, %t236 - br i1 %t240, label %find.body10198, label %find.end10201 -find.body10198: - %t241 = getelementptr inbounds { ptr, i64, i64 }, ptr %t237, i64 %t239 - %t242 = load { ptr, i64, i64 }, ptr %t241 - store { ptr, i64, i64 } %t242, ptr %a243 - store { ptr, i64, i64 } %t234, ptr %a244 - %t245 = call i32 @finch_str_eq(ptr %a243, ptr %a244) - %t246 = icmp ne i32 %t245, 0 - br i1 %t246, label %find.hit10199, label %find.next10200 -find.hit10199: - store i64 %t239, ptr %a235 - br label %find.end10201 -find.next10200: - %t247 = add i64 %t239, 1 - store i64 %t247, ptr %a238 - br label %find.cond10197 -find.end10201: - %t248 = load i64, ptr %a235 - store i64 %t248, ptr %a249 - %t250 = load i64, ptr %a249 - %t251 = icmp slt i64 %t250, 0 - br i1 %t251, label %then10202, label %endif10204 -then10202: - %t252 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t253 = load { ptr, i64, i64 }, ptr %a209 - store { ptr, i64, i64 } %t253, ptr %a254 - call void @finch_str_copy(ptr %a255, ptr %a254) - %t256 = load { ptr, i64, i64 }, ptr %a255 - %t257 = load i64, ptr %t252 - %t258 = add i64 %t257, 1 - call void @finch_arr_reserve(ptr %a197, i64 %t258, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t259 = load ptr, ptr %a197 - %t260 = getelementptr inbounds { ptr, i64, i64 }, ptr %t259, i64 %t257 - store { ptr, i64, i64 } %t256, ptr %t260 - store i64 %t258, ptr %t252 - %t261 = getelementptr inbounds { ptr, i64, i64 }, ptr %a198, i32 0, i32 1 - %t262 = load i64, ptr %t261 - %t263 = add i64 %t262, 1 - call void @finch_arr_reserve(ptr %a198, i64 %t263, i64 ptrtoint (ptr getelementptr (%S.linker.Names, ptr null, i32 1) to i64)) - %t264 = load ptr, ptr %a198 - %t265 = getelementptr inbounds %S.linker.Names, ptr %t264, i64 %t262 - store %S.linker.Names zeroinitializer, ptr %t265 - store i64 %t263, ptr %t261 - %t266 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t267 = load i64, ptr %t266 - %t268 = sub i64 %t267, 1 - store i64 %t268, ptr %a249 - br label %endif10204 -endif10204: - %t269 = load i64, ptr %a249 - %t270 = load { ptr, i64, i64 }, ptr %a198 - %t271 = extractvalue { ptr, i64, i64 } %t270, 1 - %t272 = icmp uge i64 %t269, %t271 - br i1 %t272, label %range10205, label %inrange10206 -range10205: - call void @finch_panic_index(ptr @.str.6837, i64 139, i64 %t269, i64 %t271) - unreachable -inrange10206: - %t273 = extractvalue { ptr, i64, i64 } %t270, 0 - %t274 = getelementptr inbounds %S.linker.Names, ptr %t273, i64 %t269 - %t275 = load { ptr, i64, i64 }, ptr %a208 - call void @finch.linker.Names.add(ptr %t274, { ptr, i64, i64 } %t275) - call void @finch_str_drop(ptr %a209) - br label %each.step10190 -each.step10190: - %t276 = load i64, ptr %a200 - %t277 = add i64 %t276, 1 - store i64 %t277, ptr %a200 - br label %each.cond10188 -each.end10191: - %t278 = getelementptr inbounds { ptr, i64, i64 }, ptr %a197, i32 0, i32 1 - %t279 = load i64, ptr %t278 - store i64 0, ptr %a280 - br label %for.cond10207 -for.cond10207: - %t281 = load i64, ptr %a280 - %t282 = icmp slt i64 %t281, %t279 - br i1 %t282, label %for.body10208, label %for.end10210 -for.body10208: - %t283 = load i64, ptr %a280 - %t284 = load { ptr, i64, i64 }, ptr %a198 - %t285 = extractvalue { ptr, i64, i64 } %t284, 1 - %t286 = icmp uge i64 %t283, %t285 - br i1 %t286, label %range10211, label %inrange10212 -range10211: - call void @finch_panic_index(ptr @.str.6838, i64 142, i64 %t283, i64 %t285) - unreachable -inrange10212: - %t287 = extractvalue { ptr, i64, i64 } %t284, 0 - %t288 = getelementptr inbounds %S.linker.Names, ptr %t287, i64 %t283 - %t289 = getelementptr inbounds %S.linker.Names, ptr %t288, i32 0, i32 0 - %t290 = load { ptr, i64, i64 }, ptr %t289 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch.copy.arr_str(ptr %a292, ptr %a291) - %t293 = load { ptr, i64, i64 }, ptr %a292 - store { ptr, i64, i64 } %t293, ptr %a294 - store { ptr, i64, i64 } zeroinitializer, ptr %a295 - %t296 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t297 = load i64, ptr %t296 - store i64 0, ptr %a298 - br label %for.cond10213 -for.cond10213: - %t299 = load i64, ptr %a298 - %t300 = icmp slt i64 %t299, %t297 - br i1 %t300, label %for.body10214, label %for.end10216 -for.body10214: - %t301 = load i64, ptr %a298 - %t302 = icmp slt i64 %t301, 3 - br i1 %t302, label %then10217, label %endif10219 -then10217: - %t303 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - %t304 = load i64, ptr %a298 - %t305 = load { ptr, i64, i64 }, ptr %a294 - %t306 = extractvalue { ptr, i64, i64 } %t305, 1 - %t307 = icmp uge i64 %t304, %t306 - br i1 %t307, label %range10220, label %inrange10221 -range10220: - call void @finch_panic_index(ptr @.str.6839, i64 146, i64 %t304, i64 %t306) - unreachable -inrange10221: - %t308 = extractvalue { ptr, i64, i64 } %t305, 0 - %t309 = getelementptr inbounds { ptr, i64, i64 }, ptr %t308, i64 %t304 - %t310 = load { ptr, i64, i64 }, ptr %t309 - store { ptr, i64, i64 } %t310, ptr %a311 - call void @finch_str_copy(ptr %a312, ptr %a311) - %t313 = load { ptr, i64, i64 }, ptr %a312 - %t314 = load i64, ptr %t303 - %t315 = add i64 %t314, 1 - call void @finch_arr_reserve(ptr %a295, i64 %t315, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t316 = load ptr, ptr %a295 - %t317 = getelementptr inbounds { ptr, i64, i64 }, ptr %t316, i64 %t314 - store { ptr, i64, i64 } %t313, ptr %t317 - store i64 %t315, ptr %t303 - br label %endif10219 -endif10219: - br label %for.step10215 -for.step10215: - %t318 = load i64, ptr %a298 - %t319 = add i64 %t318, 1 - store i64 %t319, ptr %a298 - br label %for.cond10213 -for.end10216: - %t320 = getelementptr inbounds { ptr, i64, i64 }, ptr %a295, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6840, i64 2, i64 0 }, ptr %a321 - call void @finch_str_join(ptr %a322, ptr %a295, ptr %a321) - %t323 = load { ptr, i64, i64 }, ptr %a322 - store { ptr, i64, i64 } %t323, ptr %a324 - %t325 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t326 = load i64, ptr %t325 - %t327 = icmp sgt i64 %t326, 3 - br i1 %t327, label %then10222, label %endif10224 -then10222: - %t328 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6841, i64 5, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t334 = load i64, ptr %t333 - %t335 = sub i64 %t334, 3 - call void @finch_str_from_int(ptr %a336, i64 %t335) - %t337 = load { ptr, i64, i64 }, ptr %a336 - store { ptr, i64, i64 } %t332, ptr %a339 - store { ptr, i64, i64 } %t337, ptr %a340 - call void @finch_str_concat(ptr %a338, ptr %a339, ptr %a340) - store { ptr, i64, i64 } %t332, ptr %a341 - call void @finch_str_drop(ptr %a341) - store { ptr, i64, i64 } %t337, ptr %a342 - call void @finch_str_drop(ptr %a342) - %t343 = load { ptr, i64, i64 }, ptr %a338 - store { ptr, i64, i64 } %t343, ptr %a345 - store { ptr, i64, i64 } { ptr @.str.6842, i64 5, i64 0 }, ptr %a346 - call void @finch_str_concat(ptr %a344, ptr %a345, ptr %a346) - store { ptr, i64, i64 } %t343, ptr %a347 - call void @finch_str_drop(ptr %a347) - %t348 = load { ptr, i64, i64 }, ptr %a344 - %t349 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } %t348, ptr %a324 - store { ptr, i64, i64 } %t349, ptr %a350 - call void @finch_str_drop(ptr %a350) - br label %endif10224 -endif10224: - %t351 = load i64, ptr %a280 - %t352 = load { ptr, i64, i64 }, ptr %a197 - %t353 = extractvalue { ptr, i64, i64 } %t352, 1 - %t354 = icmp uge i64 %t351, %t353 - br i1 %t354, label %range10225, label %inrange10226 -range10225: - call void @finch_panic_index(ptr @.str.6843, i64 153, i64 %t351, i64 %t353) - unreachable -inrange10226: - %t355 = extractvalue { ptr, i64, i64 } %t352, 0 - %t356 = getelementptr inbounds { ptr, i64, i64 }, ptr %t355, i64 %t351 - %t357 = getelementptr inbounds { ptr, i64, i64 }, ptr %t356, i32 0, i32 1 - %t358 = load i64, ptr %t357 - %t359 = icmp eq i64 %t358, 0 - br i1 %t359, label %then10227, label %endif10229 -then10227: - %t360 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6844, i64 25, i64 0 }, ptr %a362 - store { ptr, i64, i64 } %t360, ptr %a363 - call void @finch_str_concat(ptr %a361, ptr %a362, ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a361 - %t365 = extractvalue { ptr, i64, i64 } %t364, 1 - %t366 = trunc i64 %t365 to i32 - %t367 = extractvalue { ptr, i64, i64 } %t364, 0 - %t368 = icmp eq ptr %t367, null - %t369 = select i1 %t368, ptr @.str.6845, ptr %t367 - %t370 = call i32 (ptr, ...) @printf(ptr @.str.6846, i32 %t366, ptr %t369) - store { ptr, i64, i64 } %t364, ptr %a371 - call void @finch_str_drop(ptr %a371) - %t372 = call i32 (ptr, ...) @printf(ptr @.str.6847) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10209 -endif10229: - store { ptr, i64, i64 } { ptr @.str.6848, i64 4, i64 0 }, ptr %a373 - %t374 = getelementptr inbounds { ptr, i64, i64 }, ptr %a294, i32 0, i32 1 - %t375 = load i64, ptr %t374 - %t376 = icmp eq i64 %t375, 1 - br i1 %t376, label %then10230, label %endif10232 -then10230: - %t377 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } { ptr @.str.6849, i64 5, i64 0 }, ptr %a373 - store { ptr, i64, i64 } %t377, ptr %a378 - call void @finch_str_drop(ptr %a378) - br label %endif10232 -endif10232: - %t379 = load { ptr, i64, i64 }, ptr %a324 - store { ptr, i64, i64 } { ptr @.str.6850, i64 7, i64 0 }, ptr %a381 - store { ptr, i64, i64 } %t379, ptr %a382 - call void @finch_str_concat(ptr %a380, ptr %a381, ptr %a382) - %t383 = load { ptr, i64, i64 }, ptr %a380 - store { ptr, i64, i64 } %t383, ptr %a385 - store { ptr, i64, i64 } { ptr @.str.6851, i64 1, i64 0 }, ptr %a386 - call void @finch_str_concat(ptr %a384, ptr %a385, ptr %a386) - store { ptr, i64, i64 } %t383, ptr %a387 - call void @finch_str_drop(ptr %a387) - %t388 = load { ptr, i64, i64 }, ptr %a384 - %t389 = load { ptr, i64, i64 }, ptr %a373 - store { ptr, i64, i64 } %t388, ptr %a391 - store { ptr, i64, i64 } %t389, ptr %a392 - call void @finch_str_concat(ptr %a390, ptr %a391, ptr %a392) - store { ptr, i64, i64 } %t388, ptr %a393 - call void @finch_str_drop(ptr %a393) - %t394 = load { ptr, i64, i64 }, ptr %a390 - store { ptr, i64, i64 } %t394, ptr %a396 - store { ptr, i64, i64 } { ptr @.str.6852, i64 7, i64 0 }, ptr %a397 - call void @finch_str_concat(ptr %a395, ptr %a396, ptr %a397) - store { ptr, i64, i64 } %t394, ptr %a398 - call void @finch_str_drop(ptr %a398) - %t399 = load { ptr, i64, i64 }, ptr %a395 - %t400 = load i64, ptr %a280 - %t401 = load { ptr, i64, i64 }, ptr %a197 - %t402 = extractvalue { ptr, i64, i64 } %t401, 1 - %t403 = icmp uge i64 %t400, %t402 - br i1 %t403, label %range10233, label %inrange10234 -range10233: - call void @finch_panic_index(ptr @.str.6853, i64 161, i64 %t400, i64 %t402) - unreachable -inrange10234: - %t404 = extractvalue { ptr, i64, i64 } %t401, 0 - %t405 = getelementptr inbounds { ptr, i64, i64 }, ptr %t404, i64 %t400 - %t406 = load { ptr, i64, i64 }, ptr %t405 - store { ptr, i64, i64 } %t399, ptr %a408 - store { ptr, i64, i64 } %t406, ptr %a409 - call void @finch_str_concat(ptr %a407, ptr %a408, ptr %a409) - store { ptr, i64, i64 } %t399, ptr %a410 - call void @finch_str_drop(ptr %a410) - %t411 = load { ptr, i64, i64 }, ptr %a407 - store { ptr, i64, i64 } %t411, ptr %a413 - store { ptr, i64, i64 } { ptr @.str.6854, i64 31, i64 0 }, ptr %a414 - call void @finch_str_concat(ptr %a412, ptr %a413, ptr %a414) - store { ptr, i64, i64 } %t411, ptr %a415 - call void @finch_str_drop(ptr %a415) - %t416 = load { ptr, i64, i64 }, ptr %a412 - %t417 = extractvalue { ptr, i64, i64 } %t416, 1 - %t418 = trunc i64 %t417 to i32 - %t419 = extractvalue { ptr, i64, i64 } %t416, 0 - %t420 = icmp eq ptr %t419, null - %t421 = select i1 %t420, ptr @.str.6855, ptr %t419 - %t422 = call i32 (ptr, ...) @printf(ptr @.str.6856, i32 %t418, ptr %t421) - store { ptr, i64, i64 } %t416, ptr %a423 - call void @finch_str_drop(ptr %a423) - %t424 = call i32 (ptr, ...) @printf(ptr @.str.6857) - %t425 = extractvalue { ptr, i64, i64 } { ptr @.str.6858, i64 74, i64 0 }, 1 - %t426 = trunc i64 %t425 to i32 - %t427 = extractvalue { ptr, i64, i64 } { ptr @.str.6858, i64 74, i64 0 }, 0 - %t428 = icmp eq ptr %t427, null - %t429 = select i1 %t428, ptr @.str.6859, ptr %t427 - %t430 = call i32 (ptr, ...) @printf(ptr @.str.6860, i32 %t426, ptr %t429) - %t431 = call i32 (ptr, ...) @printf(ptr @.str.6861) - %t432 = extractvalue { ptr, i64, i64 } { ptr @.str.6862, i64 66, i64 0 }, 1 - %t433 = trunc i64 %t432 to i32 - %t434 = extractvalue { ptr, i64, i64 } { ptr @.str.6862, i64 66, i64 0 }, 0 - %t435 = icmp eq ptr %t434, null - %t436 = select i1 %t435, ptr @.str.6863, ptr %t434 - %t437 = call i32 (ptr, ...) @printf(ptr @.str.6864, i32 %t433, ptr %t436) - %t438 = call i32 (ptr, ...) @printf(ptr @.str.6865) - %t439 = extractvalue { ptr, i64, i64 } { ptr @.str.6866, i64 0, i64 0 }, 1 - %t440 = trunc i64 %t439 to i32 - %t441 = extractvalue { ptr, i64, i64 } { ptr @.str.6866, i64 0, i64 0 }, 0 - %t442 = icmp eq ptr %t441, null - %t443 = select i1 %t442, ptr @.str.6867, ptr %t441 - %t444 = call i32 (ptr, ...) @printf(ptr @.str.6868, i32 %t440, ptr %t443) - %t445 = call i32 (ptr, ...) @printf(ptr @.str.6869) - %t446 = load i64, ptr %a280 - %t447 = load { ptr, i64, i64 }, ptr %a197 - %t448 = extractvalue { ptr, i64, i64 } %t447, 1 - %t449 = icmp uge i64 %t446, %t448 - br i1 %t449, label %range10235, label %inrange10236 -range10235: - call void @finch_panic_index(ptr @.str.6871, i64 165, i64 %t446, i64 %t448) - unreachable -inrange10236: - %t450 = extractvalue { ptr, i64, i64 } %t447, 0 - %t451 = getelementptr inbounds { ptr, i64, i64 }, ptr %t450, i64 %t446 - %t452 = load { ptr, i64, i64 }, ptr %t451 - %t453 = call { ptr, i64, i64 } @finch.linker.guessLib({ ptr, i64, i64 } %t452) - store { ptr, i64, i64 } { ptr @.str.6870, i64 12, i64 0 }, ptr %a455 - store { ptr, i64, i64 } %t453, ptr %a456 - call void @finch_str_concat(ptr %a454, ptr %a455, ptr %a456) - store { ptr, i64, i64 } %t453, ptr %a457 - call void @finch_str_drop(ptr %a457) - %t458 = load { ptr, i64, i64 }, ptr %a454 - store { ptr, i64, i64 } %t458, ptr %a460 - store { ptr, i64, i64 } { ptr @.str.6872, i64 1, i64 0 }, ptr %a461 - call void @finch_str_concat(ptr %a459, ptr %a460, ptr %a461) - store { ptr, i64, i64 } %t458, ptr %a462 - call void @finch_str_drop(ptr %a462) - %t463 = load { ptr, i64, i64 }, ptr %a459 - %t464 = extractvalue { ptr, i64, i64 } %t463, 1 - %t465 = trunc i64 %t464 to i32 - %t466 = extractvalue { ptr, i64, i64 } %t463, 0 - %t467 = icmp eq ptr %t466, null - %t468 = select i1 %t467, ptr @.str.6873, ptr %t466 - %t469 = call i32 (ptr, ...) @printf(ptr @.str.6874, i32 %t465, ptr %t468) - store { ptr, i64, i64 } %t463, ptr %a470 - call void @finch_str_drop(ptr %a470) - %t471 = call i32 (ptr, ...) @printf(ptr @.str.6875) - %t472 = extractvalue { ptr, i64, i64 } { ptr @.str.6876, i64 0, i64 0 }, 1 - %t473 = trunc i64 %t472 to i32 - %t474 = extractvalue { ptr, i64, i64 } { ptr @.str.6876, i64 0, i64 0 }, 0 - %t475 = icmp eq ptr %t474, null - %t476 = select i1 %t475, ptr @.str.6877, ptr %t474 - %t477 = call i32 (ptr, ...) @printf(ptr @.str.6878, i32 %t473, ptr %t476) - %t478 = call i32 (ptr, ...) @printf(ptr @.str.6879) - call void @finch_str_drop(ptr %a373) - call void @finch_str_drop(ptr %a324) - call void @finch.drop.arr_str(ptr %a295) - call void @finch.drop.arr_str(ptr %a294) - br label %for.step10209 -for.step10209: - %t479 = load i64, ptr %a280 - %t480 = add i64 %t479, 1 - store i64 %t480, ptr %a280 - br label %for.cond10207 -for.end10210: - call void @finch.drop.arr_S_linker_Names(ptr %a198) - call void @finch.drop.arr_str(ptr %a197) - call void @finch.drop.S_linker_Names(ptr %a5) - call void @finch.drop.S_linker_Names(ptr %a4) - ret i64 1 -} - -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 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a36 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a101 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca { ptr, i64, i64 }, align 16 - %a106 = alloca { ptr, i64, i64 }, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a143 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca i64, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - 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.failed10240, label %try.ok10241 -try.failed10240: - %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.ok10241: - store { ptr, i64, i64 } %t11, ptr %a13 - %t14 = call { ptr, i64, i64 } @finch.host.cacheDir() - store { ptr, i64, i64 } %t14, ptr %a15 - %t16 = load { ptr, i64, i64 }, ptr %a15 - store { ptr, i64, i64 } %t16, ptr %a18 - store { ptr, i64, i64 } { ptr @.str.6880, 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) - store { ptr, i64, i64 } %t26, ptr %a32 - call void @finch_str_drop(ptr %a32) - %t33 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t33, ptr %a35 - store { ptr, i64, i64 } { ptr @.str.6881, i64 3, i64 0 }, ptr %a36 - call void @finch_str_concat(ptr %a34, ptr %a35, ptr %a36) - store { ptr, i64, i64 } %t33, ptr %a37 - call void @finch_str_drop(ptr %a37) - %t38 = load { ptr, i64, i64 }, ptr %a34 - %t39 = call { ptr, i64, i64 } @finch.linker.fingerprint({ ptr, i64, i64 } %t38) - store { ptr, i64, i64 } %t38, ptr %a40 - call void @finch_str_drop(ptr %a40) - store { ptr, i64, i64 } %t20, ptr %a42 - store { ptr, i64, i64 } %t39, ptr %a43 - call void @finch_str_concat(ptr %a41, ptr %a42, ptr %a43) - store { ptr, i64, i64 } %t20, ptr %a44 - call void @finch_str_drop(ptr %a44) - store { ptr, i64, i64 } %t39, ptr %a45 - call void @finch_str_drop(ptr %a45) - %t46 = load { ptr, i64, i64 }, ptr %a41 - store { ptr, i64, i64 } %t46, ptr %a48 - store { ptr, i64, i64 } { ptr @.str.6882, i64 2, i64 0 }, ptr %a49 - call void @finch_str_concat(ptr %a47, ptr %a48, ptr %a49) - store { ptr, i64, i64 } %t46, ptr %a50 - call void @finch_str_drop(ptr %a50) - %t51 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t51, ptr %a52 - %t53 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t53, ptr %a54 - %t55 = call i32 @finch_file_exists(ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %then10242, label %endif10244 -then10242: - %t57 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t58 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t59 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t58, { ptr, i64, i64 } %t57, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t59 -endif10244: - %t60 = load { ptr, i64, i64 }, ptr %a15 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t60) - %t61 = load { ptr, i64, i64 }, ptr %a52 - store { ptr, i64, i64 } %t61, ptr %a63 - store { ptr, i64, i64 } { ptr @.str.6883, i64 5, i64 0 }, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - %t65 = load { ptr, i64, i64 }, ptr %a62 - %t66 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a67, i64 %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } %t65, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t65, ptr %a72 - call void @finch_str_drop(ptr %a72) - store { ptr, i64, i64 } %t68, ptr %a73 - call void @finch_str_drop(ptr %a73) - %t74 = load { ptr, i64, i64 }, ptr %a69 - store { ptr, i64, i64 } %t74, ptr %a75 - store { ptr, i64, i64 } { ptr @.str.6884, i64 6, i64 0 }, ptr %a76 - %t77 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t78 = load i1, ptr %t77 - br i1 %t78, label %then10245, label %endif10247 -then10245: - %t79 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } { ptr @.str.6885, i64 0, i64 0 }, ptr %a76 - store { ptr, i64, i64 } %t79, ptr %a80 - call void @finch_str_drop(ptr %a80) - br label %endif10247 -endif10247: - %t81 = load { ptr, i64, i64 }, ptr %a75 - store { ptr, i64, i64 } %t81, ptr %a83 - store { ptr, i64, i64 } { ptr @.str.6886, i64 4, i64 0 }, ptr %a84 - call void @finch_str_concat(ptr %a82, ptr %a83, ptr %a84) - %t85 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t85, ptr %a86 - %t87 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t87, ptr %a89 - store { ptr, i64, i64 } { ptr @.str.6887, i64 4, i64 0 }, ptr %a90 - call void @finch_str_concat(ptr %a88, ptr %a89, ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a88 - %t92 = load { ptr, i64, i64 }, ptr %a76 - store { ptr, i64, i64 } %t91, ptr %a94 - store { ptr, i64, i64 } %t92, ptr %a95 - call void @finch_str_concat(ptr %a93, ptr %a94, ptr %a95) - store { ptr, i64, i64 } %t91, ptr %a96 - call void @finch_str_drop(ptr %a96) - %t97 = load { ptr, i64, i64 }, ptr %a93 - store { ptr, i64, i64 } %t97, ptr %a99 - store { ptr, i64, i64 } { ptr @.str.6888, i64 4, i64 0 }, ptr %a100 - call void @finch_str_concat(ptr %a98, ptr %a99, ptr %a100) - store { ptr, i64, i64 } %t97, ptr %a101 - call void @finch_str_drop(ptr %a101) - %t102 = load { ptr, i64, i64 }, ptr %a98 - %t103 = load { ptr, i64, i64 }, ptr %a1 - %t104 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t103) - store { ptr, i64, i64 } %t102, ptr %a106 - store { ptr, i64, i64 } %t104, ptr %a107 - call void @finch_str_concat(ptr %a105, ptr %a106, ptr %a107) - store { ptr, i64, i64 } %t102, ptr %a108 - call void @finch_str_drop(ptr %a108) - store { ptr, i64, i64 } %t104, ptr %a109 - call void @finch_str_drop(ptr %a109) - %t110 = load { ptr, i64, i64 }, ptr %a105 - store { ptr, i64, i64 } %t110, ptr %a112 - store { ptr, i64, i64 } { ptr @.str.6889, i64 4, i64 0 }, ptr %a113 - call void @finch_str_concat(ptr %a111, ptr %a112, ptr %a113) - store { ptr, i64, i64 } %t110, ptr %a114 - call void @finch_str_drop(ptr %a114) - %t115 = load { ptr, i64, i64 }, ptr %a111 - %t116 = load { ptr, i64, i64 }, ptr %a75 - %t117 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t115, ptr %a119 - store { ptr, i64, i64 } %t117, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t115, ptr %a121 - call void @finch_str_drop(ptr %a121) - store { ptr, i64, i64 } %t117, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a118 - store { ptr, i64, i64 } %t123, ptr %a125 - store { ptr, i64, i64 } { ptr @.str.6890, i64 3, i64 0 }, ptr %a126 - call void @finch_str_concat(ptr %a124, ptr %a125, ptr %a126) - store { ptr, i64, i64 } %t123, ptr %a127 - call void @finch_str_drop(ptr %a127) - %t128 = load { ptr, i64, i64 }, ptr %a124 - %t129 = load { ptr, i64, i64 }, ptr %a86 - %t130 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t129) - store { ptr, i64, i64 } %t128, ptr %a132 - store { ptr, i64, i64 } %t130, ptr %a133 - call void @finch_str_concat(ptr %a131, ptr %a132, ptr %a133) - store { ptr, i64, i64 } %t128, ptr %a134 - call void @finch_str_drop(ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a131 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.6891, i64 5, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = call i64 @finch.host.run({ ptr, i64, i64 } %t141) - store { ptr, i64, i64 } %t141, ptr %a143 - call void @finch_str_drop(ptr %a143) - store i64 %t142, ptr %a144 - %t145 = load i64, ptr %a144 - %t146 = icmp ne i64 %t145, 0 - br i1 %t146, label %then10248, label %endif10250 -then10248: - %t147 = load { ptr, i64, i64 }, ptr %a86 - store { ptr, i64, i64 } %t147, ptr %a148 - store { ptr, i64, i64 } zeroinitializer, ptr %a149 - store { ptr, i64, i64 } zeroinitializer, ptr %a150 - %t151 = call i32 @finch_try_read_file(ptr %a149, ptr %a148, ptr %a150) - %t152 = icmp eq i32 %t151, 0 - %t153 = load { ptr, i64, i64 }, ptr %a150 - %t154 = load { ptr, i64, i64 }, ptr %a149 - br i1 %t152, label %or.failed10251, label %or.ok10252 -or.failed10251: - store { ptr, i64, i64 } %t153, ptr %a155 - call void @finch_str_drop(ptr %a155) - br label %or.bend10253 -or.bend10253: - br label %or.end10254 -or.ok10252: - br label %or.end10254 -or.end10254: - %t156 = phi { ptr, i64, i64 } [ { ptr @.str.6892, i64 0, i64 0 }, %or.bend10253 ], [ %t154, %or.ok10252 ] - store { ptr, i64, i64 } %t156, ptr %a157 - %t158 = load { ptr, i64, i64 }, ptr %a75 - call void @finch.host.remove({ ptr, i64, i64 } %t158) - %t159 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t159) - %t160 = load { ptr, i64, i64 }, ptr %a157 - store { ptr, i64, i64 } %t160, ptr %a162 - store { ptr, i64, i64 } { ptr @.str.6893, i64 46, i64 0 }, ptr %a163 - call void @finch_str_concat(ptr %a161, ptr %a162, ptr %a163) - %t164 = load { ptr, i64, i64 }, ptr %a161 - %t165 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t164, ptr %a167 - store { ptr, i64, i64 } %t165, ptr %a168 - call void @finch_str_concat(ptr %a166, ptr %a167, ptr %a168) - store { ptr, i64, i64 } %t164, ptr %a169 - call void @finch_str_drop(ptr %a169) - %t170 = load { ptr, i64, i64 }, ptr %a166 - store { ptr, i64, i64 } %t170, ptr %a172 - store { ptr, i64, i64 } { ptr @.str.6894, i64 30, i64 0 }, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t170, ptr %a174 - call void @finch_str_drop(ptr %a174) - %t175 = load { ptr, i64, i64 }, ptr %a171 - call void @finch_str_drop(ptr %a157) - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a52) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t176 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t175, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t176 -endif10250: - %t177 = load { ptr, i64, i64 }, ptr %a86 - call void @finch.host.remove({ ptr, i64, i64 } %t177) - %t178 = load { ptr, i64, i64 }, ptr %a75 - %t179 = load { ptr, i64, i64 }, ptr %a52 - call void @finch.host.move({ ptr, i64, i64 } %t178, { ptr, i64, i64 } %t179) - %t180 = load { ptr, i64, i64 }, ptr %a52 - call void @finch_str_drop(ptr %a86) - call void @finch_str_drop(ptr %a76) - call void @finch_str_drop(ptr %a75) - call void @finch_str_drop(ptr %a15) - call void @finch_str_drop(ptr %a13) - %t181 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t182 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t181, { ptr, i64, i64 } %t180, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t182 -} - -define internal i64 @finch.linker.build(%S.linker.Build %p0, %S.platform.Target %p1, %S.cimport.CImports %p2) { -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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a48 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %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 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a92 = 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 - %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 - %a115 = alloca { ptr, i64, i64 }, align 16 - %a116 = alloca { ptr, i64, i64 }, align 16 - %a117 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a141 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a149 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a167 = alloca { ptr, i64, i64 }, align 16 - %a171 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a173 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a179 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a183 = alloca { ptr, i64, i64 }, align 16 - %a184 = alloca i64, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a196 = alloca { ptr, i64, i64 }, align 16 - %a204 = 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 - %a222 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a228 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a230 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = 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 - %a265 = alloca { ptr, i64, i64 }, align 16 - %a270 = 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 - %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 - %a288 = alloca { ptr, i64, i64 }, align 16 - %a291 = alloca { ptr, i64, i64 }, align 16 - %a297 = alloca { ptr, i64, i64 }, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a304 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a309 = alloca { ptr, i64, i64 }, align 16 - %a310 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca 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 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a338 = alloca { ptr, i64, i64 }, align 16 - %a339 = alloca { ptr, i64, i64 }, align 16 - %a340 = alloca { ptr, i64, i64 }, align 16 - %a341 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a344 = alloca { ptr, i64, i64 }, align 16 - %a345 = alloca { ptr, i64, i64 }, align 16 - %a346 = 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 - %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 - %a363 = alloca { ptr, i64, i64 }, align 16 - %a365 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a373 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a376 = alloca { ptr, i64, i64 }, align 16 - %a378 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca { ptr, i64, i64 }, align 16 - %a380 = alloca { ptr, i64, i64 }, align 16 - %a381 = alloca { ptr, i64, i64 }, align 16 - %a385 = alloca { ptr, i64, i64 }, align 16 - %a386 = alloca { ptr, i64, i64 }, align 16 - %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 - %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 - %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 - %a407 = alloca { ptr, i64, i64 }, align 16 - %a410 = alloca { ptr, i64, i64 }, align 16 - %a411 = alloca i64, align 16 - %a415 = alloca { ptr, i64, i64 }, align 16 - %a416 = alloca { ptr, i64, i64 }, align 16 - %a417 = alloca { ptr, i64, i64 }, align 16 - %a422 = alloca { ptr, i64, i64 }, align 16 - %a424 = alloca { ptr, i64, i64 }, align 16 - %a425 = alloca { ptr, i64, i64 }, align 16 - %a426 = alloca { ptr, i64, i64 }, align 16 - %a427 = alloca { ptr, i64, i64 }, align 16 - %a430 = alloca { ptr, i64, i64 }, align 16 - %a431 = alloca { ptr, i64, i64 }, align 16 - %a432 = alloca { ptr, i64, i64 }, align 16 - %a433 = alloca { ptr, i64, i64 }, align 16 - %a441 = alloca { ptr, i64, i64 }, align 16 - %a448 = alloca { ptr, i64, i64 }, align 16 - %a449 = 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 - %a462 = alloca { ptr, i64, i64 }, align 16 - %a463 = alloca { ptr, i64, i64 }, align 16 - %a464 = alloca { ptr, i64, i64 }, align 16 - %a465 = alloca { ptr, i64, i64 }, align 16 - %a466 = alloca { ptr, i64, i64 }, align 16 - %a469 = alloca { ptr, i64, i64 }, align 16 - %a471 = alloca { ptr, i64, i64 }, align 16 - %a472 = alloca { ptr, i64, i64 }, align 16 - %a473 = alloca { ptr, i64, i64 }, align 16 - %a477 = alloca { ptr, i64, i64 }, align 16 - %a478 = alloca { ptr, i64, i64 }, align 16 - %a479 = 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 - %a490 = alloca { ptr, i64, i64 }, align 16 - %a491 = alloca { ptr, i64, i64 }, align 16 - %a492 = alloca { ptr, i64, i64 }, align 16 - %a493 = alloca { ptr, i64, i64 }, align 16 - %a494 = alloca { ptr, i64, i64 }, align 16 - %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 - %a506 = alloca { ptr, i64, i64 }, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a509 = alloca { ptr, i64, i64 }, align 16 - %a510 = alloca { ptr, i64, i64 }, align 16 - %a513 = 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 - %a526 = alloca { ptr, i64, i64 }, align 16 - %a527 = alloca { ptr, i64, i64 }, align 16 - %a529 = alloca { ptr, i64, i64 }, align 16 - %a530 = alloca { ptr, i64, i64 }, align 16 - %a531 = alloca { ptr, i64, i64 }, align 16 - %a532 = alloca { ptr, i64, i64 }, align 16 - %a535 = alloca { ptr, i64, i64 }, align 16 - %a536 = alloca i64, align 16 - %a538 = alloca { ptr, i64, i64 }, align 16 - %a539 = alloca { ptr, i64, i64 }, align 16 - %a540 = alloca { ptr, i64, i64 }, align 16 - %a545 = alloca { ptr, i64, i64 }, align 16 - %a547 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca i64, align 16 - %a558 = alloca { ptr, i64, i64 }, align 16 - %a565 = alloca { ptr, i64, i64 }, align 16 - %a566 = alloca { ptr, i64, i64 }, align 16 - %a567 = alloca { ptr, i64, i64 }, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a571 = alloca { ptr, i64, i64 }, align 16 - %a572 = alloca { ptr, i64, i64 }, align 16 - %a580 = 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.6895, i64 11, i64 0 }, 0 - %t5 = icmp eq ptr %t4, null - %t6 = select i1 %t5, ptr @.str.6896, 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 %then10255, label %endif10257 -then10255: - %t17 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } { ptr @.str.6897, i64 5, i64 0 }, ptr %a13 - store { ptr, i64, i64 } %t17, ptr %a18 - call void @finch_str_drop(ptr %a18) - br label %endif10257 -endif10257: - %t19 = load { ptr, i64, i64 }, ptr %a13 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_copy(ptr %a21, ptr %a20) - %t22 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } %t22, ptr %a23 - %t24 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t25 = load i1, ptr %t24 - br i1 %t25, label %then10258, label %else10259 -then10258: - %t26 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 7 - %t27 = load { ptr, i64, i64 }, ptr %t26 - store { ptr, i64, i64 } %t27, ptr %a28 - call void @finch_str_copy(ptr %a29, ptr %a28) - %t30 = load { ptr, i64, i64 }, ptr %a29 - %t31 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t30, ptr %a23 - store { ptr, i64, i64 } %t31, ptr %a32 - call void @finch_str_drop(ptr %a32) - br label %endif10260 -else10259: - %t33 = extractvalue { ptr, i64, i64 } { ptr @.str.6898, i64 8, i64 0 }, 0 - %t34 = icmp eq ptr %t33, null - %t35 = select i1 %t34, ptr @.str.6899, ptr %t33 - %t36 = call ptr @getenv(ptr %t35) - store { ptr, i64, i64 } zeroinitializer, ptr %a37 - call void @finch_str_from_c(ptr %a37, ptr %t36) - %t38 = load { ptr, i64, i64 }, ptr %a37 - %t39 = extractvalue { ptr, i64, i64 } %t38, 1 - %t40 = icmp sgt i64 %t39, 0 - br i1 %t40, label %then10261, label %endif10263 -then10261: - %t41 = extractvalue { ptr, i64, i64 } { ptr @.str.6900, i64 8, i64 0 }, 0 - %t42 = icmp eq ptr %t41, null - %t43 = select i1 %t42, ptr @.str.6901, ptr %t41 - %t44 = call ptr @getenv(ptr %t43) - store { ptr, i64, i64 } zeroinitializer, ptr %a45 - call void @finch_str_from_c(ptr %a45, ptr %t44) - %t46 = load { ptr, i64, i64 }, ptr %a45 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_copy(ptr %a48, ptr %a47) - %t49 = load { ptr, i64, i64 }, ptr %a48 - %t50 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t49, ptr %a23 - store { ptr, i64, i64 } %t50, ptr %a51 - call void @finch_str_drop(ptr %a51) - br label %endif10263 -endif10263: - br label %endif10260 -endif10260: - %t52 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 2 - %t53 = load { ptr, i64, i64 }, ptr %t52 - %t54 = load %S.platform.Target, ptr %a2 - %t55 = load { ptr, i64, i64 }, ptr %a23 - %t56 = call { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } @finch.linker.runtimeObject({ ptr, i64, i64 } %t53, %S.platform.Target %t54, { ptr, i64, i64 } %t55) - %t57 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 0 - %t58 = xor i1 %t57, true - %t59 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 2 - %t60 = extractvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t56, 1 - br i1 %t58, label %or.failed10264, label %or.ok10265 -or.failed10264: - store { ptr, i64, i64 } %t59, ptr %a61 - %t62 = load { ptr, i64, i64 }, ptr %a61 - %t63 = extractvalue { ptr, i64, i64 } %t62, 1 - %t64 = trunc i64 %t63 to i32 - %t65 = extractvalue { ptr, i64, i64 } %t62, 0 - %t66 = icmp eq ptr %t65, null - %t67 = select i1 %t66, ptr @.str.6902, ptr %t65 - %t68 = call i32 (ptr, ...) @printf(ptr @.str.6903, i32 %t64, ptr %t67) - %t69 = call i32 (ptr, ...) @printf(ptr @.str.6904) - call void @finch_str_drop(ptr %a61) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -or.ok10265: - store { ptr, i64, i64 } %t60, ptr %a70 - %t71 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t72 = load { ptr, i64, i64 }, ptr %t71 - store { ptr, i64, i64 } %t72, ptr %a74 - store { ptr, i64, i64 } { ptr @.str.6905, i64 3, i64 0 }, ptr %a75 - call void @finch_str_concat(ptr %a73, ptr %a74, ptr %a75) - %t76 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t76, ptr %a77 - %t78 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t79 = load { ptr, i64, i64 }, ptr %t78 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.6906, i64 2, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - %t83 = load { ptr, i64, i64 }, ptr %a80 - store { ptr, i64, i64 } %t83, ptr %a84 - %t85 = load { ptr, i64, i64 }, ptr %a77 - %t86 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 1 - %t87 = load { ptr, i64, i64 }, ptr %t86 - store { ptr, i64, i64 } %t85, ptr %a88 - store { ptr, i64, i64 } %t87, ptr %a89 - %t90 = call i32 @finch_write_file(ptr %a88, ptr %a89) - %t91 = icmp ne i32 %t90, 0 - store { ptr, i64, i64 } { ptr @.str.6907, i64 0, i64 0 }, ptr %a92 - %t93 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 5 - %t94 = load i1, ptr %t93 - br label %logic.from10266 -logic.from10266: - br i1 %t94, label %logic.end10268, label %logic.rhs10267 -logic.rhs10267: - %t95 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t96 = load i1, ptr %t95 - br label %logic.rend10269 -logic.rend10269: - br label %logic.end10268 -logic.end10268: - %t97 = phi i1 [ true, %logic.from10266 ], [ %t96, %logic.rend10269 ] - br i1 %t97, label %then10270, label %endif10272 -then10270: - %t98 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 0 - %t99 = load { ptr, i64, i64 }, ptr %t98 - store { ptr, i64, i64 } { ptr @.str.6908, i64 10, i64 0 }, 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 - %t104 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t103, ptr %a92 - store { ptr, i64, i64 } %t104, ptr %a105 - call void @finch_str_drop(ptr %a105) - br label %endif10272 -endif10272: - %t106 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a109 - store { ptr, i64, i64 } { ptr @.str.6909, i64 4, i64 0 }, 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 %a112 - %t113 = load { ptr, i64, i64 }, ptr %a13 - %t114 = load { ptr, i64, i64 }, ptr %a92 - store { ptr, i64, i64 } %t113, ptr %a116 - store { ptr, i64, i64 } %t114, ptr %a117 - call void @finch_str_concat(ptr %a115, ptr %a116, ptr %a117) - %t118 = load { ptr, i64, i64 }, ptr %a115 - store { ptr, i64, i64 } %t118, ptr %a120 - store { ptr, i64, i64 } { ptr @.str.6910, i64 1, i64 0 }, ptr %a121 - call void @finch_str_concat(ptr %a119, ptr %a120, ptr %a121) - store { ptr, i64, i64 } %t118, ptr %a122 - call void @finch_str_drop(ptr %a122) - %t123 = load { ptr, i64, i64 }, ptr %a119 - %t124 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 3 - %t125 = load { ptr, i64, i64 }, ptr %t124 - store { ptr, i64, i64 } %t123, ptr %a127 - store { ptr, i64, i64 } %t125, ptr %a128 - call void @finch_str_concat(ptr %a126, ptr %a127, ptr %a128) - store { ptr, i64, i64 } %t123, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a126 - %t131 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 4 - %t132 = load { ptr, i64, i64 }, ptr %t131 - store { ptr, i64, i64 } %t130, ptr %a134 - store { ptr, i64, i64 } %t132, ptr %a135 - call void @finch_str_concat(ptr %a133, ptr %a134, ptr %a135) - store { ptr, i64, i64 } %t130, ptr %a136 - call void @finch_str_drop(ptr %a136) - %t137 = load { ptr, i64, i64 }, ptr %a133 - store { ptr, i64, i64 } %t137, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.6911, i64 7, i64 0 }, ptr %a140 - call void @finch_str_concat(ptr %a138, ptr %a139, ptr %a140) - store { ptr, i64, i64 } %t137, ptr %a141 - call void @finch_str_drop(ptr %a141) - %t142 = load { ptr, i64, i64 }, ptr %a138 - %t143 = load { ptr, i64, i64 }, ptr %a77 - %t144 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t143) - store { ptr, i64, i64 } %t142, ptr %a146 - store { ptr, i64, i64 } %t144, ptr %a147 - call void @finch_str_concat(ptr %a145, ptr %a146, ptr %a147) - store { ptr, i64, i64 } %t142, ptr %a148 - call void @finch_str_drop(ptr %a148) - store { ptr, i64, i64 } %t144, ptr %a149 - call void @finch_str_drop(ptr %a149) - %t150 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t150, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.6912, i64 4, i64 0 }, ptr %a153 - call void @finch_str_concat(ptr %a151, ptr %a152, ptr %a153) - store { ptr, i64, i64 } %t150, ptr %a154 - call void @finch_str_drop(ptr %a154) - %t155 = load { ptr, i64, i64 }, ptr %a151 - %t156 = load { ptr, i64, i64 }, ptr %a84 - %t157 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t155, ptr %a161 - call void @finch_str_drop(ptr %a161) - store { ptr, i64, i64 } %t157, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a158 - store { ptr, i64, i64 } %t163, ptr %a165 - store { ptr, i64, i64 } { ptr @.str.6913, i64 3, i64 0 }, ptr %a166 - call void @finch_str_concat(ptr %a164, ptr %a165, ptr %a166) - store { ptr, i64, i64 } %t163, ptr %a167 - call void @finch_str_drop(ptr %a167) - %t168 = load { ptr, i64, i64 }, ptr %a164 - %t169 = load { ptr, i64, i64 }, ptr %a112 - %t170 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t169) - store { ptr, i64, i64 } %t168, ptr %a172 - store { ptr, i64, i64 } %t170, ptr %a173 - call void @finch_str_concat(ptr %a171, ptr %a172, ptr %a173) - store { ptr, i64, i64 } %t168, ptr %a174 - call void @finch_str_drop(ptr %a174) - store { ptr, i64, i64 } %t170, ptr %a175 - call void @finch_str_drop(ptr %a175) - %t176 = load { ptr, i64, i64 }, ptr %a171 - store { ptr, i64, i64 } %t176, ptr %a178 - store { ptr, i64, i64 } { ptr @.str.6914, i64 5, i64 0 }, ptr %a179 - call void @finch_str_concat(ptr %a177, ptr %a178, ptr %a179) - store { ptr, i64, i64 } %t176, ptr %a180 - call void @finch_str_drop(ptr %a180) - %t181 = load { ptr, i64, i64 }, ptr %a177 - %t182 = call i64 @finch.host.run({ ptr, i64, i64 } %t181) - store { ptr, i64, i64 } %t181, ptr %a183 - call void @finch_str_drop(ptr %a183) - store i64 %t182, ptr %a184 - %t185 = load { ptr, i64, i64 }, ptr %a77 - call void @finch.host.remove({ ptr, i64, i64 } %t185) - %t186 = load i64, ptr %a184 - %t187 = icmp ne i64 %t186, 0 - br i1 %t187, label %then10273, label %endif10275 -then10273: - %t188 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t188, ptr %a189 - store { ptr, i64, i64 } zeroinitializer, ptr %a190 - store { ptr, i64, i64 } zeroinitializer, ptr %a191 - %t192 = call i32 @finch_try_read_file(ptr %a190, ptr %a189, ptr %a191) - %t193 = icmp eq i32 %t192, 0 - %t194 = load { ptr, i64, i64 }, ptr %a191 - %t195 = load { ptr, i64, i64 }, ptr %a190 - br i1 %t193, label %or.failed10276, label %or.ok10277 -or.failed10276: - store { ptr, i64, i64 } %t194, ptr %a196 - call void @finch_str_drop(ptr %a196) - br label %or.bend10278 -or.bend10278: - br label %or.end10279 -or.ok10277: - br label %or.end10279 -or.end10279: - %t197 = phi { ptr, i64, i64 } [ { ptr @.str.6915, i64 0, i64 0 }, %or.bend10278 ], [ %t195, %or.ok10277 ] - %t198 = extractvalue { ptr, i64, i64 } %t197, 1 - %t199 = trunc i64 %t198 to i32 - %t200 = extractvalue { ptr, i64, i64 } %t197, 0 - %t201 = icmp eq ptr %t200, null - %t202 = select i1 %t201, ptr @.str.6916, ptr %t200 - %t203 = call i32 (ptr, ...) @printf(ptr @.str.6917, i32 %t199, ptr %t202) - store { ptr, i64, i64 } %t197, ptr %a204 - call void @finch_str_drop(ptr %a204) - %t205 = call i32 (ptr, ...) @printf(ptr @.str.6918) - %t206 = extractvalue { ptr, i64, i64 } { ptr @.str.6919, i64 46, i64 0 }, 1 - %t207 = trunc i64 %t206 to i32 - %t208 = extractvalue { ptr, i64, i64 } { ptr @.str.6919, i64 46, i64 0 }, 0 - %t209 = icmp eq ptr %t208, null - %t210 = select i1 %t209, ptr @.str.6920, ptr %t208 - %t211 = call i32 (ptr, ...) @printf(ptr @.str.6921, i32 %t207, ptr %t210) - %t212 = call i32 (ptr, ...) @printf(ptr @.str.6922) - %t213 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t213) - %t214 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t214) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10275: - %t215 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t215, ptr %a217 - store { ptr, i64, i64 } { ptr @.str.6923, i64 1, i64 0 }, ptr %a218 - call void @finch_str_concat(ptr %a216, ptr %a217, ptr %a218) - %t219 = load { ptr, i64, i64 }, ptr %a216 - %t220 = load { ptr, i64, i64 }, ptr %a84 - %t221 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t220) - store { ptr, i64, i64 } %t219, ptr %a223 - store { ptr, i64, i64 } %t221, ptr %a224 - call void @finch_str_concat(ptr %a222, ptr %a223, ptr %a224) - store { ptr, i64, i64 } %t219, ptr %a225 - call void @finch_str_drop(ptr %a225) - store { ptr, i64, i64 } %t221, ptr %a226 - call void @finch_str_drop(ptr %a226) - %t227 = load { ptr, i64, i64 }, ptr %a222 - store { ptr, i64, i64 } %t227, ptr %a229 - store { ptr, i64, i64 } { ptr @.str.6924, i64 1, i64 0 }, ptr %a230 - call void @finch_str_concat(ptr %a228, ptr %a229, ptr %a230) - store { ptr, i64, i64 } %t227, ptr %a231 - call void @finch_str_drop(ptr %a231) - %t232 = load { ptr, i64, i64 }, ptr %a228 - %t233 = load { ptr, i64, i64 }, ptr %a70 - %t234 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t232, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t232, ptr %a238 - call void @finch_str_drop(ptr %a238) - store { ptr, i64, i64 } %t234, ptr %a239 - call void @finch_str_drop(ptr %a239) - %t240 = load { ptr, i64, i64 }, ptr %a235 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } { ptr @.str.6925, i64 4, i64 0 }, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t240, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t247 = load { ptr, i64, i64 }, ptr %t246 - %t248 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t247) - store { ptr, i64, i64 } %t245, ptr %a250 - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch_str_concat(ptr %a249, ptr %a250, ptr %a251) - store { ptr, i64, i64 } %t245, ptr %a252 - call void @finch_str_drop(ptr %a252) - store { ptr, i64, i64 } %t248, ptr %a253 - call void @finch_str_drop(ptr %a253) - %t254 = load { ptr, i64, i64 }, ptr %a249 - store { ptr, i64, i64 } %t254, ptr %a255 - %t256 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 2 - %t257 = load i1, ptr %t256 - %t258 = xor i1 %t257, true - br i1 %t258, label %then10280, label %endif10282 -then10280: - %t259 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t259, ptr %a261 - store { ptr, i64, i64 } { ptr @.str.6926, i64 4, i64 0 }, ptr %a262 - call void @finch_str_concat(ptr %a260, ptr %a261, ptr %a262) - %t263 = load { ptr, i64, i64 }, ptr %a260 - %t264 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t263, ptr %a255 - store { ptr, i64, i64 } %t264, ptr %a265 - call void @finch_str_drop(ptr %a265) - br label %endif10282 -endif10282: - %t266 = extractvalue { ptr, i64, i64 } { ptr @.str.6927, i64 13, i64 0 }, 0 - %t267 = icmp eq ptr %t266, null - %t268 = select i1 %t267, ptr @.str.6928, ptr %t266 - %t269 = call ptr @getenv(ptr %t268) - store { ptr, i64, i64 } zeroinitializer, ptr %a270 - call void @finch_str_from_c(ptr %a270, ptr %t269) - %t271 = load { ptr, i64, i64 }, ptr %a270 - %t272 = extractvalue { ptr, i64, i64 } %t271, 1 - %t273 = icmp sgt i64 %t272, 0 - br i1 %t273, label %then10283, label %endif10285 -then10283: - %t274 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t274, ptr %a276 - store { ptr, i64, i64 } { ptr @.str.6929, i64 1, i64 0 }, ptr %a277 - call void @finch_str_concat(ptr %a275, ptr %a276, ptr %a277) - %t278 = load { ptr, i64, i64 }, ptr %a275 - %t279 = extractvalue { ptr, i64, i64 } { ptr @.str.6930, i64 13, i64 0 }, 0 - %t280 = icmp eq ptr %t279, null - %t281 = select i1 %t280, ptr @.str.6931, ptr %t279 - %t282 = call ptr @getenv(ptr %t281) - store { ptr, i64, i64 } zeroinitializer, ptr %a283 - call void @finch_str_from_c(ptr %a283, ptr %t282) - %t284 = load { ptr, i64, i64 }, ptr %a283 - store { ptr, i64, i64 } %t278, ptr %a286 - store { ptr, i64, i64 } %t284, ptr %a287 - call void @finch_str_concat(ptr %a285, ptr %a286, ptr %a287) - store { ptr, i64, i64 } %t278, ptr %a288 - call void @finch_str_drop(ptr %a288) - %t289 = load { ptr, i64, i64 }, ptr %a285 - %t290 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t289, ptr %a255 - store { ptr, i64, i64 } %t290, ptr %a291 - call void @finch_str_drop(ptr %a291) - br label %endif10285 -endif10285: - %t292 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 5 - %t293 = load i1, ptr %t292 - br i1 %t293, label %then10286, label %endif10288 -then10286: - %t294 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 3 - %t295 = load i1, ptr %t294 - br i1 %t295, label %then10289, label %else10290 -then10289: - %t296 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t296, ptr %a298 - store { ptr, i64, i64 } { ptr @.str.6932, i64 12, i64 0 }, ptr %a299 - call void @finch_str_concat(ptr %a297, ptr %a298, ptr %a299) - %t300 = load { ptr, i64, i64 }, ptr %a297 - %t301 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t300, ptr %a255 - store { ptr, i64, i64 } %t301, ptr %a302 - call void @finch_str_drop(ptr %a302) - br label %endif10291 -else10290: - %t303 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t303, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.6933, i64 8, i64 0 }, ptr %a306 - call void @finch_str_concat(ptr %a304, ptr %a305, ptr %a306) - %t307 = load { ptr, i64, i64 }, ptr %a304 - %t308 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t307, ptr %a255 - store { ptr, i64, i64 } %t308, ptr %a309 - call void @finch_str_drop(ptr %a309) - br label %endif10291 -endif10291: - br label %endif10288 -endif10288: - store { ptr, i64, i64 } zeroinitializer, ptr %a310 - %t311 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 6 - store i64 0, ptr %a312 - br label %each.cond10292 -each.cond10292: - %t313 = getelementptr inbounds { ptr, i64, i64 }, ptr %t311, i32 0, i32 1 - %t314 = load i64, ptr %t313 - %t315 = load i64, ptr %a312 - %t316 = icmp slt i64 %t315, %t314 - br i1 %t316, label %each.body10293, label %each.end10295 -each.body10293: - %t317 = load ptr, ptr %t311 - %t318 = getelementptr inbounds { ptr, i64, i64 }, ptr %t317, i64 %t315 - %t319 = load { ptr, i64, i64 }, ptr %t318 - store { ptr, i64, i64 } %t319, ptr %a320 - %t321 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t321, ptr %a322 - store { ptr, i64, i64 } { ptr @.str.6935, i64 2, i64 0 }, ptr %a324 - %t325 = call i32 @finch_str_ends(ptr %a322, ptr %a324) - %t326 = icmp ne i32 %t325, 0 - br i1 %t326, label %then10296, label %else10297 -then10296: - %t327 = getelementptr inbounds %S.linker.Build, ptr %a1, i32 0, i32 0 - %t328 = load { ptr, i64, i64 }, ptr %t327 - store { ptr, i64, i64 } %t328, ptr %a330 - store { ptr, i64, i64 } { ptr @.str.6936, i64 1, i64 0 }, ptr %a331 - call void @finch_str_concat(ptr %a329, ptr %a330, ptr %a331) - %t332 = load { ptr, i64, i64 }, ptr %a329 - %t333 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t334 = load i64, ptr %t333 - call void @finch_str_from_int(ptr %a335, i64 %t334) - %t336 = load { ptr, i64, i64 }, ptr %a335 - store { ptr, i64, i64 } %t332, ptr %a338 - store { ptr, i64, i64 } %t336, ptr %a339 - call void @finch_str_concat(ptr %a337, ptr %a338, ptr %a339) - store { ptr, i64, i64 } %t332, ptr %a340 - call void @finch_str_drop(ptr %a340) - store { ptr, i64, i64 } %t336, ptr %a341 - call void @finch_str_drop(ptr %a341) - %t342 = load { ptr, i64, i64 }, ptr %a337 - store { ptr, i64, i64 } %t342, ptr %a344 - store { ptr, i64, i64 } { ptr @.str.6937, i64 2, i64 0 }, ptr %a345 - call void @finch_str_concat(ptr %a343, ptr %a344, ptr %a345) - store { ptr, i64, i64 } %t342, ptr %a346 - call void @finch_str_drop(ptr %a346) - %t347 = load { ptr, i64, i64 }, ptr %a343 - store { ptr, i64, i64 } %t347, ptr %a348 - store { ptr, i64, i64 } { ptr @.str.6938, i64 6, i64 0 }, ptr %a349 - %t350 = getelementptr inbounds %S.platform.Target, ptr %a2, i32 0, i32 1 - %t351 = load i1, ptr %t350 - br i1 %t351, label %then10299, label %endif10301 -then10299: - %t352 = load { ptr, i64, i64 }, ptr %a349 - store { ptr, i64, i64 } { ptr @.str.6939, i64 0, i64 0 }, ptr %a349 - store { ptr, i64, i64 } %t352, ptr %a353 - call void @finch_str_drop(ptr %a353) - br label %endif10301 -endif10301: - %t354 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } %t354, ptr %a356 - store { ptr, i64, i64 } { ptr @.str.6940, i64 4, 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 %a349 - 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) - store { ptr, i64, i64 } %t358, ptr %a363 - call void @finch_str_drop(ptr %a363) - %t364 = load { ptr, i64, i64 }, ptr %a360 - store { ptr, i64, i64 } %t364, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.6941, i64 4, i64 0 }, ptr %a367 - call void @finch_str_concat(ptr %a365, ptr %a366, ptr %a367) - store { ptr, i64, i64 } %t364, ptr %a368 - call void @finch_str_drop(ptr %a368) - %t369 = load { ptr, i64, i64 }, ptr %a365 - %t370 = load { ptr, i64, i64 }, ptr %a320 - %t371 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t370) - store { ptr, i64, i64 } %t369, ptr %a373 - store { ptr, i64, i64 } %t371, ptr %a374 - call void @finch_str_concat(ptr %a372, ptr %a373, ptr %a374) - store { ptr, i64, i64 } %t369, ptr %a375 - call void @finch_str_drop(ptr %a375) - store { ptr, i64, i64 } %t371, ptr %a376 - call void @finch_str_drop(ptr %a376) - %t377 = load { ptr, i64, i64 }, ptr %a372 - store { ptr, i64, i64 } %t377, ptr %a379 - store { ptr, i64, i64 } { ptr @.str.6942, i64 4, i64 0 }, ptr %a380 - call void @finch_str_concat(ptr %a378, ptr %a379, ptr %a380) - store { ptr, i64, i64 } %t377, ptr %a381 - call void @finch_str_drop(ptr %a381) - %t382 = load { ptr, i64, i64 }, ptr %a378 - %t383 = load { ptr, i64, i64 }, ptr %a348 - %t384 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t383) - store { ptr, i64, i64 } %t382, ptr %a386 - store { ptr, i64, i64 } %t384, ptr %a387 - call void @finch_str_concat(ptr %a385, ptr %a386, ptr %a387) - store { ptr, i64, i64 } %t382, ptr %a388 - call void @finch_str_drop(ptr %a388) - store { ptr, i64, i64 } %t384, ptr %a389 - call void @finch_str_drop(ptr %a389) - %t390 = load { ptr, i64, i64 }, ptr %a385 - store { ptr, i64, i64 } %t390, ptr %a392 - store { ptr, i64, i64 } { ptr @.str.6943, i64 3, i64 0 }, ptr %a393 - call void @finch_str_concat(ptr %a391, ptr %a392, ptr %a393) - store { ptr, i64, i64 } %t390, ptr %a394 - call void @finch_str_drop(ptr %a394) - %t395 = load { ptr, i64, i64 }, ptr %a391 - %t396 = load { ptr, i64, i64 }, ptr %a112 - %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) - store { ptr, i64, i64 } %t395, ptr %a401 - call void @finch_str_drop(ptr %a401) - store { ptr, i64, i64 } %t397, ptr %a402 - call void @finch_str_drop(ptr %a402) - %t403 = load { ptr, i64, i64 }, ptr %a398 - store { ptr, i64, i64 } %t403, ptr %a405 - store { ptr, i64, i64 } { ptr @.str.6944, i64 5, i64 0 }, ptr %a406 - call void @finch_str_concat(ptr %a404, ptr %a405, ptr %a406) - store { ptr, i64, i64 } %t403, ptr %a407 - call void @finch_str_drop(ptr %a407) - %t408 = load { ptr, i64, i64 }, ptr %a404 - %t409 = call i64 @finch.host.run({ ptr, i64, i64 } %t408) - store { ptr, i64, i64 } %t408, ptr %a410 - call void @finch_str_drop(ptr %a410) - store i64 %t409, ptr %a411 - %t412 = load i64, ptr %a411 - %t413 = icmp ne i64 %t412, 0 - br i1 %t413, label %then10302, label %endif10304 -then10302: - %t414 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t414, ptr %a415 - store { ptr, i64, i64 } zeroinitializer, ptr %a416 - store { ptr, i64, i64 } zeroinitializer, ptr %a417 - %t418 = call i32 @finch_try_read_file(ptr %a416, ptr %a415, ptr %a417) - %t419 = icmp eq i32 %t418, 0 - %t420 = load { ptr, i64, i64 }, ptr %a417 - %t421 = load { ptr, i64, i64 }, ptr %a416 - br i1 %t419, label %or.failed10305, label %or.ok10306 -or.failed10305: - store { ptr, i64, i64 } %t420, ptr %a422 - call void @finch_str_drop(ptr %a422) - br label %or.bend10307 -or.bend10307: - br label %or.end10308 -or.ok10306: - br label %or.end10308 -or.end10308: - %t423 = phi { ptr, i64, i64 } [ { ptr @.str.6945, i64 0, i64 0 }, %or.bend10307 ], [ %t421, %or.ok10306 ] - store { ptr, i64, i64 } %t423, ptr %a425 - store { ptr, i64, i64 } { ptr @.str.6946, i64 24, i64 0 }, ptr %a426 - call void @finch_str_concat(ptr %a424, ptr %a425, ptr %a426) - store { ptr, i64, i64 } %t423, ptr %a427 - call void @finch_str_drop(ptr %a427) - %t428 = load { ptr, i64, i64 }, ptr %a424 - %t429 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t428, ptr %a431 - store { ptr, i64, i64 } %t429, ptr %a432 - call void @finch_str_concat(ptr %a430, ptr %a431, ptr %a432) - store { ptr, i64, i64 } %t428, ptr %a433 - call void @finch_str_drop(ptr %a433) - %t434 = load { ptr, i64, i64 }, ptr %a430 - %t435 = extractvalue { ptr, i64, i64 } %t434, 1 - %t436 = trunc i64 %t435 to i32 - %t437 = extractvalue { ptr, i64, i64 } %t434, 0 - %t438 = icmp eq ptr %t437, null - %t439 = select i1 %t438, ptr @.str.6947, ptr %t437 - %t440 = call i32 (ptr, ...) @printf(ptr @.str.6948, i32 %t436, ptr %t439) - store { ptr, i64, i64 } %t434, ptr %a441 - call void @finch_str_drop(ptr %a441) - %t442 = call i32 (ptr, ...) @printf(ptr @.str.6949) - %t443 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t443) - %t444 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t444) - %t445 = load { ptr, i64, i64 }, ptr %a348 - call void @finch.host.remove({ ptr, i64, i64 } %t445) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10304: - %t446 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t447 = load { ptr, i64, i64 }, ptr %a348 - store { ptr, i64, i64 } %t447, ptr %a448 - call void @finch_str_copy(ptr %a449, ptr %a448) - %t450 = load { ptr, i64, i64 }, ptr %a449 - %t451 = load i64, ptr %t446 - %t452 = add i64 %t451, 1 - call void @finch_arr_reserve(ptr %a310, i64 %t452, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t453 = load ptr, ptr %a310 - %t454 = getelementptr inbounds { ptr, i64, i64 }, ptr %t453, i64 %t451 - store { ptr, i64, i64 } %t450, ptr %t454 - store i64 %t452, ptr %t446 - %t455 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t455, ptr %a457 - store { ptr, i64, i64 } { ptr @.str.6950, i64 1, i64 0 }, ptr %a458 - call void @finch_str_concat(ptr %a456, ptr %a457, ptr %a458) - %t459 = load { ptr, i64, i64 }, ptr %a456 - %t460 = load { ptr, i64, i64 }, ptr %a348 - %t461 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t460) - store { ptr, i64, i64 } %t459, ptr %a463 - store { ptr, i64, i64 } %t461, ptr %a464 - call void @finch_str_concat(ptr %a462, ptr %a463, ptr %a464) - store { ptr, i64, i64 } %t459, ptr %a465 - call void @finch_str_drop(ptr %a465) - store { ptr, i64, i64 } %t461, ptr %a466 - call void @finch_str_drop(ptr %a466) - %t467 = load { ptr, i64, i64 }, ptr %a462 - %t468 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t467, ptr %a255 - store { ptr, i64, i64 } %t468, ptr %a469 - call void @finch_str_drop(ptr %a469) - call void @finch_str_drop(ptr %a349) - call void @finch_str_drop(ptr %a348) - br label %endif10298 -else10297: - %t470 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t470, ptr %a471 - store { ptr, i64, i64 } { ptr @.str.6952, i64 2, i64 0 }, ptr %a473 - %t474 = call i32 @finch_str_ends(ptr %a471, ptr %a473) - %t475 = icmp ne i32 %t474, 0 - br label %logic.from10309 -logic.from10309: - br i1 %t475, label %logic.end10311, label %logic.rhs10310 -logic.rhs10310: - %t476 = load { ptr, i64, i64 }, ptr %a320 - store { ptr, i64, i64 } %t476, ptr %a477 - store { ptr, i64, i64 } { ptr @.str.6954, i64 2, i64 0 }, ptr %a479 - %t480 = call i32 @finch_str_ends(ptr %a477, ptr %a479) - %t481 = icmp ne i32 %t480, 0 - br label %logic.rend10312 -logic.rend10312: - br label %logic.end10311 -logic.end10311: - %t482 = phi i1 [ true, %logic.from10309 ], [ %t481, %logic.rend10312 ] - br i1 %t482, label %then10313, label %else10314 -then10313: - %t483 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t483, ptr %a485 - store { ptr, i64, i64 } { ptr @.str.6955, i64 1, i64 0 }, ptr %a486 - call void @finch_str_concat(ptr %a484, ptr %a485, ptr %a486) - %t487 = load { ptr, i64, i64 }, ptr %a484 - %t488 = load { ptr, i64, i64 }, ptr %a320 - %t489 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %t488) - store { ptr, i64, i64 } %t487, ptr %a491 - store { ptr, i64, i64 } %t489, ptr %a492 - call void @finch_str_concat(ptr %a490, ptr %a491, ptr %a492) - store { ptr, i64, i64 } %t487, ptr %a493 - call void @finch_str_drop(ptr %a493) - store { ptr, i64, i64 } %t489, ptr %a494 - call void @finch_str_drop(ptr %a494) - %t495 = load { ptr, i64, i64 }, ptr %a490 - %t496 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t495, ptr %a255 - store { ptr, i64, i64 } %t496, ptr %a497 - call void @finch_str_drop(ptr %a497) - br label %endif10315 -else10314: - %t498 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t498, ptr %a500 - store { ptr, i64, i64 } { ptr @.str.6956, i64 1, i64 0 }, ptr %a501 - call void @finch_str_concat(ptr %a499, ptr %a500, ptr %a501) - %t502 = load { ptr, i64, i64 }, ptr %a499 - %t503 = load { ptr, i64, i64 }, ptr %a320 - %t504 = load %S.platform.Target, ptr %a2 - %t505 = call { ptr, i64, i64 } @finch.linker.libFlags({ ptr, i64, i64 } %t503, %S.platform.Target %t504) - store { ptr, i64, i64 } %t502, ptr %a507 - store { ptr, i64, i64 } %t505, ptr %a508 - call void @finch_str_concat(ptr %a506, ptr %a507, ptr %a508) - store { ptr, i64, i64 } %t502, ptr %a509 - call void @finch_str_drop(ptr %a509) - store { ptr, i64, i64 } %t505, ptr %a510 - call void @finch_str_drop(ptr %a510) - %t511 = load { ptr, i64, i64 }, ptr %a506 - %t512 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t511, ptr %a255 - store { ptr, i64, i64 } %t512, ptr %a513 - call void @finch_str_drop(ptr %a513) - br label %endif10315 -endif10315: - br label %endif10298 -endif10298: - br label %each.step10294 -each.step10294: - %t514 = load i64, ptr %a312 - %t515 = add i64 %t514, 1 - store i64 %t515, ptr %a312 - br label %each.cond10292 -each.end10295: - %t516 = load { ptr, i64, i64 }, ptr %a255 - store { ptr, i64, i64 } %t516, ptr %a518 - store { ptr, i64, i64 } { ptr @.str.6957, i64 3, 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, i64, i64 }, ptr %a112 - %t522 = call { ptr, i64, i64 } @finch.linker.quote({ ptr, i64, i64 } %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) - store { ptr, i64, i64 } %t520, ptr %a526 - call void @finch_str_drop(ptr %a526) - store { ptr, i64, i64 } %t522, ptr %a527 - call void @finch_str_drop(ptr %a527) - %t528 = load { ptr, i64, i64 }, ptr %a523 - store { ptr, i64, i64 } %t528, ptr %a530 - store { ptr, i64, i64 } { ptr @.str.6958, i64 5, i64 0 }, ptr %a531 - call void @finch_str_concat(ptr %a529, ptr %a530, ptr %a531) - store { ptr, i64, i64 } %t528, ptr %a532 - call void @finch_str_drop(ptr %a532) - %t533 = load { ptr, i64, i64 }, ptr %a529 - %t534 = call i64 @finch.host.run({ ptr, i64, i64 } %t533) - store { ptr, i64, i64 } %t533, ptr %a535 - call void @finch_str_drop(ptr %a535) - store i64 %t534, ptr %a536 - %t537 = load { ptr, i64, i64 }, ptr %a112 - store { ptr, i64, i64 } %t537, ptr %a538 - store { ptr, i64, i64 } zeroinitializer, ptr %a539 - store { ptr, i64, i64 } zeroinitializer, ptr %a540 - %t541 = call i32 @finch_try_read_file(ptr %a539, ptr %a538, ptr %a540) - %t542 = icmp eq i32 %t541, 0 - %t543 = load { ptr, i64, i64 }, ptr %a540 - %t544 = load { ptr, i64, i64 }, ptr %a539 - br i1 %t542, label %or.failed10316, label %or.ok10317 -or.failed10316: - store { ptr, i64, i64 } %t543, ptr %a545 - call void @finch_str_drop(ptr %a545) - br label %or.bend10318 -or.bend10318: - br label %or.end10319 -or.ok10317: - br label %or.end10319 -or.end10319: - %t546 = phi { ptr, i64, i64 } [ { ptr @.str.6959, i64 0, i64 0 }, %or.bend10318 ], [ %t544, %or.ok10317 ] - store { ptr, i64, i64 } %t546, ptr %a547 - %t548 = load { ptr, i64, i64 }, ptr %a84 - call void @finch.host.remove({ ptr, i64, i64 } %t548) - %t549 = load { ptr, i64, i64 }, ptr %a112 - call void @finch.host.remove({ ptr, i64, i64 } %t549) - store i64 0, ptr %a550 - br label %each.cond10320 -each.cond10320: - %t551 = getelementptr inbounds { ptr, i64, i64 }, ptr %a310, i32 0, i32 1 - %t552 = load i64, ptr %t551 - %t553 = load i64, ptr %a550 - %t554 = icmp slt i64 %t553, %t552 - br i1 %t554, label %each.body10321, label %each.end10323 -each.body10321: - %t555 = load ptr, ptr %a310 - %t556 = getelementptr inbounds { ptr, i64, i64 }, ptr %t555, i64 %t553 - %t557 = load { ptr, i64, i64 }, ptr %t556 - store { ptr, i64, i64 } %t557, ptr %a558 - %t559 = load { ptr, i64, i64 }, ptr %a558 - call void @finch.host.remove({ ptr, i64, i64 } %t559) - br label %each.step10322 -each.step10322: - %t560 = load i64, ptr %a550 - %t561 = add i64 %t560, 1 - store i64 %t561, ptr %a550 - br label %each.cond10320 -each.end10323: - %t562 = load i64, ptr %a536 - %t563 = icmp eq i64 %t562, 127 - br i1 %t563, label %then10324, label %endif10326 -then10324: - %t564 = load { ptr, i64, i64 }, ptr %a23 - store { ptr, i64, i64 } { ptr @.str.6960, i64 42, i64 0 }, ptr %a566 - store { ptr, i64, i64 } %t564, ptr %a567 - call void @finch_str_concat(ptr %a565, ptr %a566, ptr %a567) - %t568 = load { ptr, i64, i64 }, ptr %a565 - store { ptr, i64, i64 } %t568, ptr %a570 - store { ptr, i64, i64 } { ptr @.str.6961, i64 32, i64 0 }, ptr %a571 - call void @finch_str_concat(ptr %a569, ptr %a570, ptr %a571) - store { ptr, i64, i64 } %t568, ptr %a572 - call void @finch_str_drop(ptr %a572) - %t573 = load { ptr, i64, i64 }, ptr %a569 - %t574 = extractvalue { ptr, i64, i64 } %t573, 1 - %t575 = trunc i64 %t574 to i32 - %t576 = extractvalue { ptr, i64, i64 } %t573, 0 - %t577 = icmp eq ptr %t576, null - %t578 = select i1 %t577, ptr @.str.6962, ptr %t576 - %t579 = call i32 (ptr, ...) @printf(ptr @.str.6963, i32 %t575, ptr %t578) - store { ptr, i64, i64 } %t573, ptr %a580 - call void @finch_str_drop(ptr %a580) - %t581 = call i32 (ptr, ...) @printf(ptr @.str.6964) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 1 -endif10326: - %t582 = load i64, ptr %a536 - %t583 = icmp ne i64 %t582, 0 - br i1 %t583, label %then10327, label %endif10329 -then10327: - %t584 = load { ptr, i64, i64 }, ptr %a547 - %t585 = load %S.cimport.CImports, ptr %a3 - %t586 = load %S.platform.Target, ptr %a2 - %t587 = call i64 @finch.linker.linkFailed({ ptr, i64, i64 } %t584, %S.cimport.CImports %t585, %S.platform.Target %t586) - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 %t587 -endif10329: - %t588 = getelementptr inbounds { ptr, i64, i64 }, ptr %a547, i32 0, i32 1 - %t589 = load i64, ptr %t588 - %t590 = icmp sgt i64 %t589, 0 - br i1 %t590, label %then10330, label %endif10332 -then10330: - %t591 = load { ptr, i64, i64 }, ptr %a547 - %t592 = extractvalue { ptr, i64, i64 } %t591, 1 - %t593 = trunc i64 %t592 to i32 - %t594 = extractvalue { ptr, i64, i64 } %t591, 0 - %t595 = icmp eq ptr %t594, null - %t596 = select i1 %t595, ptr @.str.6965, ptr %t594 - %t597 = call i32 (ptr, ...) @printf(ptr @.str.6966, i32 %t593, ptr %t596) - %t598 = call i32 (ptr, ...) @printf(ptr @.str.6967) - br label %endif10332 -endif10332: - call void @finch_str_drop(ptr %a547) - call void @finch.drop.arr_str(ptr %a310) - call void @finch_str_drop(ptr %a255) - call void @finch_str_drop(ptr %a112) - call void @finch_str_drop(ptr %a92) - call void @finch_str_drop(ptr %a84) - call void @finch_str_drop(ptr %a77) - call void @finch_str_drop(ptr %a70) - call void @finch_str_drop(ptr %a23) - call void @finch_str_drop(ptr %a13) - ret i64 0 -} - -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.from10333 -logic.from10333: - br i1 %t3, label %logic.rhs10334, label %logic.end10335 -logic.rhs10334: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend10336 -logic.rend10336: - br label %logic.end10335 -logic.end10335: - %t6 = phi i1 [ false, %logic.from10333 ], [ %t5, %logic.rend10336 ] - br i1 %t6, label %then10337, label %endif10339 -then10337: - %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 -endif10339: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from10340 -logic.from10340: - br i1 %t12, label %logic.rhs10341, label %logic.end10342 -logic.rhs10341: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend10343 -logic.rend10343: - br label %logic.end10342 -logic.end10342: - %t15 = phi i1 [ false, %logic.from10340 ], [ %t14, %logic.rend10343 ] - br i1 %t15, label %then10344, label %endif10346 -then10344: - %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 -endif10346: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from10347 -logic.from10347: - br i1 %t22, label %logic.rhs10348, label %logic.end10349 -logic.rhs10348: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend10350 -logic.rend10350: - br label %logic.end10349 -logic.end10349: - %t25 = phi i1 [ false, %logic.from10347 ], [ %t24, %logic.rend10350 ] - br i1 %t25, label %then10351, label %endif10353 -then10351: - %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 -endif10353: - ret i64 -1 -} - -define internal void @finch.drop.arr_u8(ptr %a) { -entry: - - call void @finch_arr_free(ptr %a) - ret void -} - -define internal { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca i64, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - 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.6969, 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 %then10354, label %endif10356 -then10354: - %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.6970, i64 114) - %t18 = load { ptr, i64, i64 }, ptr %a15 - %t19 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t18, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a20 - call void @finch_str_drop(ptr %a20) - br label %endif10356 -endif10356: - store { ptr, i64, i64 } zeroinitializer, ptr %a21 - store i64 0, ptr %a22 - br label %while.cond10357 -while.cond10357: - %t23 = load i64, ptr %a22 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t25 = load i64, ptr %t24 - %t26 = icmp slt i64 %t23, %t25 - br i1 %t26, label %while.body10358, label %while.end10359 -while.body10358: - %t27 = load i64, ptr %a22 - %t28 = load { ptr, i64, i64 }, ptr %a6 - %t29 = extractvalue { ptr, i64, i64 } %t28, 1 - %t30 = icmp uge i64 %t27, %t29 - br i1 %t30, label %range10360, label %inrange10361 -range10360: - call void @finch_panic_index(ptr @.str.6971, i64 119, i64 %t27, i64 %t29) - unreachable -inrange10361: - %t31 = extractvalue { ptr, i64, i64 } %t28, 0 - %t32 = getelementptr inbounds i8, ptr %t31, i64 %t27 - %t33 = load i8, ptr %t32 - %t34 = icmp eq i8 %t33, 37 - br label %logic.from10362 -logic.from10362: - br i1 %t34, label %logic.rhs10363, label %logic.end10364 -logic.rhs10363: - %t35 = load i64, ptr %a22 - %t36 = add i64 %t35, 2 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a6, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 0 - %t40 = icmp slt i64 %t36, %t39 - br label %logic.rend10365 -logic.rend10365: - br label %logic.end10364 -logic.end10364: - %t41 = phi i1 [ false, %logic.from10362 ], [ %t40, %logic.rend10365 ] - br label %logic.from10366 -logic.from10366: - br i1 %t41, label %logic.rhs10367, label %logic.end10368 -logic.rhs10367: - %t42 = load i64, ptr %a22 - %t43 = add i64 %t42, 1 - %t44 = load { ptr, i64, i64 }, ptr %a6 - %t45 = extractvalue { ptr, i64, i64 } %t44, 1 - %t46 = icmp uge i64 %t43, %t45 - br i1 %t46, label %range10369, label %inrange10370 -range10369: - call void @finch_panic_index(ptr @.str.6972, i64 119, i64 %t43, i64 %t45) - unreachable -inrange10370: - %t47 = extractvalue { ptr, i64, i64 } %t44, 0 - %t48 = getelementptr inbounds i8, ptr %t47, i64 %t43 - %t49 = load i8, ptr %t48 - %t50 = call i64 @finch.lsp.hexval(i8 %t49) - %t51 = icmp sge i64 %t50, 0 - br label %logic.rend10371 -logic.rend10371: - br label %logic.end10368 -logic.end10368: - %t52 = phi i1 [ false, %logic.from10366 ], [ %t51, %logic.rend10371 ] - br label %logic.from10372 -logic.from10372: - br i1 %t52, label %logic.rhs10373, label %logic.end10374 -logic.rhs10373: - %t53 = load i64, ptr %a22 - %t54 = add i64 %t53, 2 - %t55 = load { ptr, i64, i64 }, ptr %a6 - %t56 = extractvalue { ptr, i64, i64 } %t55, 1 - %t57 = icmp uge i64 %t54, %t56 - br i1 %t57, label %range10375, label %inrange10376 -range10375: - call void @finch_panic_index(ptr @.str.6973, i64 119, i64 %t54, i64 %t56) - unreachable -inrange10376: - %t58 = extractvalue { ptr, i64, i64 } %t55, 0 - %t59 = getelementptr inbounds i8, ptr %t58, i64 %t54 - %t60 = load i8, ptr %t59 - %t61 = call i64 @finch.lsp.hexval(i8 %t60) - %t62 = icmp sge i64 %t61, 0 - br label %logic.rend10377 -logic.rend10377: - br label %logic.end10374 -logic.end10374: - %t63 = phi i1 [ false, %logic.from10372 ], [ %t62, %logic.rend10377 ] - br i1 %t63, label %then10378, label %else10379 -then10378: - %t64 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t65 = load i64, ptr %a22 - %t66 = add i64 %t65, 1 - %t67 = load { ptr, i64, i64 }, ptr %a6 - %t68 = extractvalue { ptr, i64, i64 } %t67, 1 - %t69 = icmp uge i64 %t66, %t68 - br i1 %t69, label %range10381, label %inrange10382 -range10381: - call void @finch_panic_index(ptr @.str.6974, i64 120, i64 %t66, i64 %t68) - unreachable -inrange10382: - %t70 = extractvalue { ptr, i64, i64 } %t67, 0 - %t71 = getelementptr inbounds i8, ptr %t70, i64 %t66 - %t72 = load i8, ptr %t71 - %t73 = call i64 @finch.lsp.hexval(i8 %t72) - %t74 = mul i64 %t73, 16 - %t75 = load i64, ptr %a22 - %t76 = add i64 %t75, 2 - %t77 = load { ptr, i64, i64 }, ptr %a6 - %t78 = extractvalue { ptr, i64, i64 } %t77, 1 - %t79 = icmp uge i64 %t76, %t78 - br i1 %t79, label %range10383, label %inrange10384 -range10383: - call void @finch_panic_index(ptr @.str.6975, i64 120, i64 %t76, i64 %t78) - unreachable -inrange10384: - %t80 = extractvalue { ptr, i64, i64 } %t77, 0 - %t81 = getelementptr inbounds i8, ptr %t80, i64 %t76 - %t82 = load i8, ptr %t81 - %t83 = call i64 @finch.lsp.hexval(i8 %t82) - %t84 = add i64 %t74, %t83 - %t85 = trunc i64 %t84 to i8 - %t86 = load i64, ptr %t64 - %t87 = add i64 %t86, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t87, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t88 = load ptr, ptr %a21 - %t89 = getelementptr inbounds i8, ptr %t88, i64 %t86 - store i8 %t85, ptr %t89 - store i64 %t87, ptr %t64 - %t90 = load i64, ptr %a22 - %t91 = add i64 %t90, 3 - store i64 %t91, ptr %a22 - br label %endif10380 -else10379: - %t92 = getelementptr inbounds { ptr, i64, i64 }, ptr %a21, i32 0, i32 1 - %t93 = load i64, ptr %a22 - %t94 = load { ptr, i64, i64 }, ptr %a6 - %t95 = extractvalue { ptr, i64, i64 } %t94, 1 - %t96 = icmp uge i64 %t93, %t95 - br i1 %t96, label %range10385, label %inrange10386 -range10385: - call void @finch_panic_index(ptr @.str.6976, i64 123, i64 %t93, i64 %t95) - unreachable -inrange10386: - %t97 = extractvalue { ptr, i64, i64 } %t94, 0 - %t98 = getelementptr inbounds i8, ptr %t97, i64 %t93 - %t99 = load i8, ptr %t98 - %t100 = load i64, ptr %t92 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %a21, i64 %t101, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %a21 - %t103 = getelementptr inbounds i8, ptr %t102, i64 %t100 - store i8 %t99, ptr %t103 - store i64 %t101, ptr %t92 - %t104 = load i64, ptr %a22 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a22 - br label %endif10380 -endif10380: - br label %while.cond10357 -while.end10359: - %t106 = load { ptr, i64, i64 }, ptr %a21 - store { ptr, i64, i64 } zeroinitializer, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - call void @finch_str_from_bytes(ptr %a107, ptr %a108) - %t109 = load { ptr, i64, i64 }, ptr %a107 - call void @finch.drop.arr_u8(ptr %a21) - call void @finch_str_drop(ptr %a6) - ret { ptr, i64, i64 } %t109 -} - -define internal { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %p0) { -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 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store { ptr, i64, i64 } { ptr @.str.6977, 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.6978, 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.cond10387 -each.cond10387: - %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.body10388, label %each.end10390 -each.body10388: - %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.from10391 -logic.from10391: - br i1 %t23, label %logic.rhs10392, label %logic.end10393 -logic.rhs10392: - %t24 = load i8, ptr %a18 - %t25 = icmp ule i8 %t24, 122 - br label %logic.rend10394 -logic.rend10394: - br label %logic.end10393 -logic.end10393: - %t26 = phi i1 [ false, %logic.from10391 ], [ %t25, %logic.rend10394 ] - br label %logic.from10395 -logic.from10395: - br i1 %t26, label %logic.end10397, label %logic.rhs10396 -logic.rhs10396: - %t27 = load i8, ptr %a18 - %t28 = icmp uge i8 %t27, 65 - br label %logic.from10398 -logic.from10398: - br i1 %t28, label %logic.rhs10399, label %logic.end10400 -logic.rhs10399: - %t29 = load i8, ptr %a18 - %t30 = icmp ule i8 %t29, 90 - br label %logic.rend10401 -logic.rend10401: - br label %logic.end10400 -logic.end10400: - %t31 = phi i1 [ false, %logic.from10398 ], [ %t30, %logic.rend10401 ] - br label %logic.rend10402 -logic.rend10402: - br label %logic.end10397 -logic.end10397: - %t32 = phi i1 [ true, %logic.from10395 ], [ %t31, %logic.rend10402 ] - br label %logic.from10403 -logic.from10403: - br i1 %t32, label %logic.end10405, label %logic.rhs10404 -logic.rhs10404: - %t33 = load i8, ptr %a18 - %t34 = icmp uge i8 %t33, 48 - br label %logic.from10406 -logic.from10406: - br i1 %t34, label %logic.rhs10407, label %logic.end10408 -logic.rhs10407: - %t35 = load i8, ptr %a18 - %t36 = icmp ule i8 %t35, 57 - br label %logic.rend10409 -logic.rend10409: - br label %logic.end10408 -logic.end10408: - %t37 = phi i1 [ false, %logic.from10406 ], [ %t36, %logic.rend10409 ] - br label %logic.rend10410 -logic.rend10410: - br label %logic.end10405 -logic.end10405: - %t38 = phi i1 [ true, %logic.from10403 ], [ %t37, %logic.rend10410 ] - br label %logic.from10411 -logic.from10411: - br i1 %t38, label %logic.end10413, label %logic.rhs10412 -logic.rhs10412: - store { ptr, i64, i64 } { ptr @.str.6979, 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 - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %logic.rend10414 -logic.rend10414: - br label %logic.end10413 -logic.end10413: - %t48 = phi i1 [ true, %logic.from10411 ], [ %t46, %logic.rend10414 ] - br i1 %t48, label %then10415, label %else10416 -then10415: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t50 = load i8, ptr %a18 - call void @finch_str_from_char(ptr %a51, i8 signext %t50) - %t52 = load { ptr, i64, i64 }, ptr %a51 - %t53 = load i64, ptr %t49 - %t54 = add i64 %t53, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t54, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t55 = load ptr, ptr %a9 - %t56 = getelementptr inbounds { ptr, i64, i64 }, ptr %t55, i64 %t53 - store { ptr, i64, i64 } %t52, ptr %t56 - store i64 %t54, ptr %t49 - br label %endif10417 -else10416: - %t57 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t58 = load i64, ptr %a21 - %t59 = sdiv i64 %t58, 16 - %t60 = srem i64 %t59, 16 - %t61 = load { ptr, i64, i64 }, ptr %a2 - %t62 = extractvalue { ptr, i64, i64 } %t61, 1 - %t63 = icmp uge i64 %t60, %t62 - br i1 %t63, label %range10418, label %inrange10419 -range10418: - call void @finch_panic_index(ptr @.str.6982, i64 138, i64 %t60, i64 %t62) - unreachable -inrange10419: - %t64 = extractvalue { ptr, i64, i64 } %t61, 0 - %t65 = getelementptr inbounds i8, ptr %t64, i64 %t60 - %t66 = load i8, ptr %t65 - call void @finch_str_from_char(ptr %a67, i8 signext %t66) - %t68 = load { ptr, i64, i64 }, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.6981, i64 1, i64 0 }, ptr %a70 - store { ptr, i64, i64 } %t68, ptr %a71 - call void @finch_str_concat(ptr %a69, ptr %a70, ptr %a71) - store { ptr, i64, i64 } %t68, ptr %a72 - call void @finch_str_drop(ptr %a72) - %t73 = load { ptr, i64, i64 }, ptr %a69 - %t74 = load i64, ptr %a21 - %t75 = srem i64 %t74, 16 - %t76 = load { ptr, i64, i64 }, ptr %a2 - %t77 = extractvalue { ptr, i64, i64 } %t76, 1 - %t78 = icmp uge i64 %t75, %t77 - br i1 %t78, label %range10420, label %inrange10421 -range10420: - call void @finch_panic_index(ptr @.str.6983, i64 138, i64 %t75, i64 %t77) - unreachable -inrange10421: - %t79 = extractvalue { ptr, i64, i64 } %t76, 0 - %t80 = getelementptr inbounds i8, ptr %t79, i64 %t75 - %t81 = load i8, ptr %t80 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - store { ptr, i64, i64 } %t73, ptr %a85 - store { ptr, i64, i64 } %t83, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - store { ptr, i64, i64 } %t73, ptr %a87 - call void @finch_str_drop(ptr %a87) - store { ptr, i64, i64 } %t83, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a84 - %t90 = load i64, ptr %t57 - %t91 = add i64 %t90, 1 - call void @finch_arr_reserve(ptr %a9, i64 %t91, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t92 = load ptr, ptr %a9 - %t93 = getelementptr inbounds { ptr, i64, i64 }, ptr %t92, i64 %t90 - store { ptr, i64, i64 } %t89, ptr %t93 - store i64 %t91, ptr %t57 - br label %endif10417 -endif10417: - br label %each.step10389 -each.step10389: - %t94 = load i64, ptr %a10 - %t95 = add i64 %t94, 1 - store i64 %t95, ptr %a10 - br label %each.cond10387 -each.end10390: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6984, i64 0, i64 0 }, ptr %a97 - call void @finch_str_join(ptr %a98, ptr %a9, ptr %a97) - %t99 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.drop.arr_str(ptr %a9) - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t99 -} - -define internal { ptr, i64, i64 } @finch.lsp.unesc({ ptr, i64, i64 } %p0) { -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.cond10422 -while.cond10422: - %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.body10423, label %while.end10424 -while.body10423: - %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 %range10425, label %inrange10426 -range10425: - call void @finch_panic_index(ptr @.str.6985, i64 149, i64 %t8, i64 %t10) - unreachable -inrange10426: - %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.from10427 -logic.from10427: - br i1 %t15, label %logic.rhs10428, label %logic.end10429 -logic.rhs10428: - %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.rend10430 -logic.rend10430: - br label %logic.end10429 -logic.end10429: - %t21 = phi i1 [ false, %logic.from10427 ], [ %t20, %logic.rend10430 ] - br i1 %t21, label %then10431, label %else10432 -then10431: - %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 %range10434, label %inrange10435 -range10434: - call void @finch_panic_index(ptr @.str.6986, i64 150, i64 %t23, i64 %t25) - unreachable -inrange10435: - %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 %then10436, label %else10437 -then10436: - %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.6987, i64 1, i64 0 }, ptr %t35 - store i64 %t33, ptr %t31 - br label %endif10438 -else10437: - %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 %range10439, label %inrange10440 -range10439: - call void @finch_panic_index(ptr @.str.6988, i64 153, i64 %t38, i64 %t40) - unreachable -inrange10440: - %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 %endif10438 -endif10438: - %t51 = load i64, ptr %a3 - %t52 = add i64 %t51, 2 - store i64 %t52, ptr %a3 - br label %endif10433 -else10432: - %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 %range10441, label %inrange10442 -range10441: - call void @finch_panic_index(ptr @.str.6989, i64 157, i64 %t54, i64 %t56) - unreachable -inrange10442: - %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 %endif10433 -endif10433: - br label %while.cond10422 -while.end10424: - %t69 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.6990, i64 0, i64 0 }, ptr %a70 - call void @finch_str_join(ptr %a71, ptr %a2, ptr %a70) - %t72 = load { ptr, i64, i64 }, ptr %a71 - call void @finch.drop.arr_str(ptr %a2) - ret { ptr, i64, i64 } %t72 -} - -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.6992, 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.from10443 -logic.from10443: - br i1 %t11, label %logic.rhs10444, label %logic.end10445 -logic.rhs10444: - %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.rend10446 -logic.rend10446: - br label %logic.end10445 -logic.end10445: - %t16 = phi i1 [ false, %logic.from10443 ], [ %t15, %logic.rend10446 ] - br i1 %t16, label %then10447, label %endif10449 -then10447: - %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 %range10450, label %inrange10451 -range10450: - call void @finch_panic_index(ptr @.str.6993, i64 167, i64 %t18, i64 %t20) - unreachable -inrange10451: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds { ptr, i64, i64 }, ptr %t22, i64 %t18 - %t24 = load { ptr, i64, i64 }, ptr %t23 - store { ptr, i64, i64 } %t24, ptr %a25 - call void @finch_str_copy(ptr %a26, ptr %a25) - %t27 = load { ptr, i64, i64 }, ptr %a26 - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } %t27 -endif10449: - call void @finch.drop.arr_str(ptr %a9) - ret { ptr, i64, i64 } { ptr @.str.6994, 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 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - br label %while.cond10452 -while.cond10452: - br label %while.body10453 -while.body10453: - %t2 = call i32 @getchar() - store i32 %t2, ptr %a3 - %t4 = load i32, ptr %a3 - %t5 = icmp slt i32 %t4, 0 - br i1 %t5, label %then10455, label %endif10457 -then10455: - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } { ptr @.str.6995, i64 0, i64 0 } -endif10457: - %t6 = load i32, ptr %a3 - %t7 = icmp eq i32 %t6, 10 - br i1 %t7, label %then10458, label %endif10460 -then10458: - br label %while.end10454 -endif10460: - %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.cond10452 -while.end10454: - %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.6997, 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 %then10461, label %endif10463 -then10461: - %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.6998, i64 188) - %t32 = load { ptr, i64, i64 }, ptr %a28 - %t33 = load { ptr, i64, i64 }, ptr %a19 - store { ptr, i64, i64 } %t32, ptr %a19 - store { ptr, i64, i64 } %t33, ptr %a34 - call void @finch_str_drop(ptr %a34) - br label %endif10463 -endif10463: - %t35 = load { ptr, i64, i64 }, ptr %a19 - call void @finch.drop.arr_u8(ptr %a1) - ret { ptr, i64, i64 } %t35 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() { -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 { ptr, i64, i64 }, align 16 - %a30 = alloca i64, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a35 = alloca { ptr, i64, i64 }, align 16 - %a37 = alloca { ptr, i64, i64 }, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a41 = alloca i64, align 16 - %a45 = alloca i32, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - store i64 0, ptr %a1 - br label %while.cond10464 -while.cond10464: - br label %while.body10465 -while.body10465: - %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 %then10467, label %endif10469 -then10467: - %t7 = load i64, ptr %a1 - %t8 = icmp sgt i64 %t7, 0 - br i1 %t8, label %then10470, label %endif10472 -then10470: - call void @finch_str_drop(ptr %a3) - br label %while.end10466 -endif10472: - %t9 = call ptr @finch_std_stream(i32 0) - %t10 = call i32 @feof(ptr %t9) - %t11 = icmp ne i32 %t10, 0 - br i1 %t11, label %then10473, label %endif10475 -then10473: - call void @finch_str_drop(ptr %a3) - %t12 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.6999, i64 32, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t12 -endif10475: - call void @finch_str_drop(ptr %a3) - br label %while.cond10464 -endif10469: - %t13 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t13, ptr %a14 - store { ptr, i64, i64 } { ptr @.str.7001, 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 %then10476, label %endif10478 -then10476: - %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.7002, 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 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } zeroinitializer, ptr %a29 - store i64 0, ptr %a30 - store { ptr, i64, i64 } %t27, ptr %a31 - %t32 = call i32 @finch_str_try_int(ptr %a31, ptr %a30, ptr %a29) - %t33 = icmp eq i32 %t32, 0 - %t34 = load { ptr, i64, i64 }, ptr %a29 - store { ptr, i64, i64 } %t27, ptr %a35 - call void @finch_str_drop(ptr %a35) - %t36 = load i64, ptr %a30 - br i1 %t33, label %or.failed10479, label %or.ok10480 -or.failed10479: - store { ptr, i64, i64 } %t34, ptr %a37 - call void @finch_str_drop(ptr %a37) - br label %or.bend10481 -or.bend10481: - br label %or.end10482 -or.ok10480: - br label %or.end10482 -or.end10482: - %t38 = phi i64 [ 0, %or.bend10481 ], [ %t36, %or.ok10480 ] - store i64 %t38, ptr %a1 - br label %endif10478 -endif10478: - call void @finch_str_drop(ptr %a3) - br label %while.cond10464 -while.end10466: - store { ptr, i64, i64 } zeroinitializer, ptr %a39 - %t40 = load i64, ptr %a1 - store i64 0, ptr %a41 - br label %for.cond10483 -for.cond10483: - %t42 = load i64, ptr %a41 - %t43 = icmp slt i64 %t42, %t40 - br i1 %t43, label %for.body10484, label %for.end10486 -for.body10484: - %t44 = call i32 @getchar() - store i32 %t44, ptr %a45 - %t46 = load i32, ptr %a45 - %t47 = icmp slt i32 %t46, 0 - br i1 %t47, label %then10487, label %endif10489 -then10487: - call void @finch.drop.arr_u8(ptr %a39) - %t48 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } { ptr @.str.7004, i64 25, i64 0 }, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t48 -endif10489: - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %a39, i32 0, i32 1 - %t50 = load i32, ptr %a45 - %t51 = trunc i32 %t50 to i8 - %t52 = load i64, ptr %t49 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %a39, i64 %t53, i64 ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %a39 - %t55 = getelementptr inbounds i8, ptr %t54, i64 %t52 - store i8 %t51, ptr %t55 - store i64 %t53, ptr %t49 - br label %for.step10485 -for.step10485: - %t56 = load i64, ptr %a41 - %t57 = add i64 %t56, 1 - store i64 %t57, ptr %a41 - br label %for.cond10483 -for.end10486: - %t58 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } zeroinitializer, ptr %a59 - store { ptr, i64, i64 } %t58, ptr %a60 - call void @finch_str_from_bytes(ptr %a59, ptr %a60) - %t61 = load { ptr, i64, i64 }, ptr %a59 - %t62 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %t61) - %t63 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 0 - %t64 = xor i1 %t63, true - %t65 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 2 - %t66 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t62, 1 - store { ptr, i64, i64 } %t61, ptr %a67 - call void @finch_str_drop(ptr %a67) - br i1 %t64, label %try.failed10490, label %try.ok10491 -try.failed10490: - call void @finch.drop.arr_u8(ptr %a39) - %t68 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t65, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t68 -try.ok10491: - call void @finch.drop.arr_u8(ptr %a39) - %t69 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t70 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t69, %S.json.Json %t66, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t70 -} - -define internal void @finch.lsp.send(%S.json.Json %p0) { -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 - %a12 = alloca { ptr, i64, i64 }, align 16 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a15 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a22 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a24 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = load %S.json.Json, ptr %a1 - %t3 = call { ptr, i64, i64 } @finch.json.stringify(%S.json.Json %t2) - 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.7005, i64 16, i64 0 }, ptr %a10 - store { ptr, i64, i64 } %t8, ptr %a11 - call void @finch_str_concat(ptr %a9, ptr %a10, ptr %a11) - store { ptr, i64, i64 } %t8, ptr %a12 - call void @finch_str_drop(ptr %a12) - %t13 = load { ptr, i64, i64 }, ptr %a9 - store { ptr, i64, i64 } %t13, ptr %a15 - store { ptr, i64, i64 } { ptr @.str.7006, i64 4, i64 0 }, ptr %a16 - call void @finch_str_concat(ptr %a14, ptr %a15, ptr %a16) - store { ptr, i64, i64 } %t13, ptr %a17 - call void @finch_str_drop(ptr %a17) - %t18 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t18, ptr %a19 - %t20 = load { ptr, i64, i64 }, ptr %a19 - %t21 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t20, ptr %a23 - store { ptr, i64, i64 } %t21, ptr %a24 - call void @finch_str_concat(ptr %a22, ptr %a23, ptr %a24) - %t25 = load { ptr, i64, i64 }, ptr %a22 - store { ptr, i64, i64 } %t25, ptr %a26 - %t27 = load { ptr, i64, i64 }, ptr %a26 - %t28 = extractvalue { ptr, i64, i64 } %t27, 0 - %t29 = icmp eq ptr %t28, null - %t30 = select i1 %t29, ptr @.str.7007, ptr %t28 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %a26, i32 0, i32 1 - %t32 = load i64, ptr %t31 - %t33 = call ptr @finch_std_stream(i32 1) - %t34 = call i64 @fwrite(ptr %t30, i64 1, i64 %t32, ptr %t33) - %t35 = call ptr @finch_std_stream(i32 1) - %t36 = call i32 @fflush(ptr %t35) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a19) - call void @finch_str_drop(ptr %a4) - ret void -} - -define internal void @finch.drop.arr_S_json_Json(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10492 -n.cond10492: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10493, label %n.end10494 -n.body10493: - %t7 = getelementptr inbounds %S.json.Json, ptr %t1, i64 %t5 - call void @finch.drop.S_json_Json(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10492 -n.end10494: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_json_Json(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_json_Json(ptr %t2) - %t3 = getelementptr inbounds %S.json.Json, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t3) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7009, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7008, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7010, i64 2, i64 0 }, %S.json.Json %t7) - %t8 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7011, i64 6, i64 0 }, %S.json.Json %t8) - %t9 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t9) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 - %a6 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t3, ptr %a4 - %t5 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7013, i64 3, i64 0 }) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7012, i64 7, i64 0 }, %S.json.Json %t5) - store %S.json.Json %t5, ptr %a6 - call void @finch.drop.S_json_Json(ptr %a6) - %t7 = load { ptr, i64, i64 }, ptr %a1 - %t8 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t7) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7014, i64 6, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load %S.json.Json, ptr %a2 - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7015, i64 6, i64 0 }, %S.json.Json %t10) - %t11 = load %S.json.Json, ptr %a4 - call void @finch.lsp.send(%S.json.Json %t11) - call void @finch.drop.S_json_Json(ptr %a4) - ret void -} - -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 %S.json.Json @finch.lsp.position(i64 %p0, i64 %p1) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a4 = alloca %S.json.Json, align 16 - %a7 = alloca %S.json.Json, align 16 - %a10 = alloca %S.json.Json, align 16 - 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.7016, i64 4, i64 0 }, %S.json.Json %t6) - store %S.json.Json %t6, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a7) - %t8 = load i64, ptr %a2 - %t9 = call %S.json.Json @finch.lsp.num(i64 %t8) - call void @finch.json.Json.set(ptr %a4, { ptr, i64, i64 } { ptr @.str.7017, i64 9, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t11 -} - -define internal %S.json.Json @finch.lsp.range(i64 %p0, i64 %p1, i64 %p2) { -entry: - %a1 = alloca i64, align 16 - %a2 = alloca i64, align 16 - %a3 = alloca i64, align 16 - %a5 = alloca %S.json.Json, align 16 - %a9 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - 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.7018, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a1 - %t11 = load i64, ptr %a3 - %t12 = call %S.json.Json @finch.lsp.position(i64 %t10, i64 %t11) - call void @finch.json.Json.set(ptr %a5, { ptr, i64, i64 } { ptr @.str.7019, i64 3, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = load %S.json.Json, ptr %a5 - ret %S.json.Json %t14 -} - -define internal { ptr, i64, i64 } @finch.lsp.splitTabs({ ptr, i64, i64 } %p0) { -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.7021, 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.failed10495, label %or.ok10496 -or.failed10495: - store { ptr, i64, i64 } %t8, ptr %a10 - call void @finch_str_drop(ptr %a10) - br label %or.bend10497 -or.bend10497: - br label %or.end10498 -or.ok10496: - br label %or.end10498 -or.end10498: - %t11 = phi i64 [ 0, %or.bend10497 ], [ %t9, %or.ok10496 ] - 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.7023, 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 %then10499, label %endif10501 -then10499: - ret %S.lsp.Diag zeroinitializer -endif10501: - %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.7024, 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.7025, 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.7027, 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 %then10502, label %endif10504 -then10502: - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag zeroinitializer -endif10504: - %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 %range10505, label %inrange10506 -range10505: - call void @finch_panic_index(ptr @.str.7028, i64 287, i64 %t37, i64 %t39) - unreachable -inrange10506: - %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 %range10507, label %inrange10508 -range10507: - call void @finch_panic_index(ptr @.str.7029, i64 288, i64 %t48, i64 %t50) - unreachable -inrange10508: - %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.cond10509 -for.cond10509: - %t62 = load i64, ptr %a61 - %t63 = icmp slt i64 %t62, %t60 - br i1 %t63, label %for.body10510, label %for.end10512 -for.body10510: - %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 %range10513, label %inrange10514 -range10513: - call void @finch_panic_index(ptr @.str.7030, i64 291, i64 %t65, i64 %t67) - unreachable -inrange10514: - %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.step10511 -for.step10511: - %t79 = load i64, ptr %a61 - %t80 = add i64 %t79, 1 - store i64 %t80, ptr %a61 - br label %for.cond10509 -for.end10512: - %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.7031, 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 - call void @finch.drop.arr_str(ptr %a57) - call void @finch.drop.arr_str(ptr %a31) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a15) - ret %S.lsp.Diag %t95 -} - -define internal void @finch.drop.S_lsp_Diag(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - ret void -} - -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 - %a536 = alloca %S.lsp.Diag, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis zeroinitializer, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7033, 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.cond10515 -each.cond10515: - %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.body10516, label %each.end10518 -each.body10516: - %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.7035, 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 %then10519, label %else10520 -then10519: - %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 %range10522, label %inrange10523 -range10522: - call void @finch_panic_index(ptr @.str.7036, i64 301, i64 0, i64 %t29) - unreachable -inrange10523: - %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.7037, 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.from10524 -logic.from10524: - br i1 %t42, label %logic.rhs10525, label %logic.end10526 -logic.rhs10525: - %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.rend10527 -logic.rend10527: - br label %logic.end10526 -logic.end10526: - %t46 = phi i1 [ false, %logic.from10524 ], [ %t45, %logic.rend10527 ] - br i1 %t46, label %then10528, label %else10529 -then10528: - %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 %range10531, label %inrange10532 -range10531: - call void @finch_panic_index(ptr @.str.7038, i64 303, i64 1, i64 %t50) - unreachable -inrange10532: - %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 %range10533, label %inrange10534 -range10533: - call void @finch_panic_index(ptr @.str.7039, i64 303, i64 2, i64 %t60) - unreachable -inrange10534: - %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 %range10535, label %inrange10536 -range10535: - call void @finch_panic_index(ptr @.str.7040, i64 303, i64 3, i64 %t68) - unreachable -inrange10536: - %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 %range10537, label %inrange10538 -range10537: - call void @finch_panic_index(ptr @.str.7041, i64 303, i64 4, i64 %t76) - unreachable -inrange10538: - %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 %range10539, label %inrange10540 -range10539: - call void @finch_panic_index(ptr @.str.7042, i64 303, i64 5, i64 %t84) - unreachable -inrange10540: - %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 %range10541, label %inrange10542 -range10541: - call void @finch_panic_index(ptr @.str.7043, i64 303, i64 6, i64 %t94) - unreachable -inrange10542: - %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 %range10543, label %inrange10544 -range10543: - call void @finch_panic_index(ptr @.str.7044, i64 303, i64 7, i64 %t102) - unreachable -inrange10544: - %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 %range10545, label %inrange10546 -range10545: - call void @finch_panic_index(ptr @.str.7045, i64 303, i64 8, i64 %t110) - unreachable -inrange10546: - %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 %endif10530 -else10529: - %t121 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t121, ptr %a122 - store { ptr, i64, i64 } { ptr @.str.7046, 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.from10547 -logic.from10547: - br i1 %t125, label %logic.rhs10548, label %logic.end10549 -logic.rhs10548: - %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.rend10550 -logic.rend10550: - br label %logic.end10549 -logic.end10549: - %t129 = phi i1 [ false, %logic.from10547 ], [ %t128, %logic.rend10550 ] - br i1 %t129, label %then10551, label %else10552 -then10551: - %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 %range10554, label %inrange10555 -range10554: - call void @finch_panic_index(ptr @.str.7047, i64 305, i64 1, i64 %t133) - unreachable -inrange10555: - %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 %range10556, label %inrange10557 -range10556: - call void @finch_panic_index(ptr @.str.7048, i64 305, i64 2, i64 %t143) - unreachable -inrange10557: - %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 %range10558, label %inrange10559 -range10558: - call void @finch_panic_index(ptr @.str.7049, i64 305, i64 3, i64 %t153) - unreachable -inrange10559: - %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 %range10560, label %inrange10561 -range10560: - call void @finch_panic_index(ptr @.str.7050, i64 305, i64 4, i64 %t163) - unreachable -inrange10561: - %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 %range10562, label %inrange10563 -range10562: - call void @finch_panic_index(ptr @.str.7051, i64 305, i64 5, i64 %t171) - unreachable -inrange10563: - %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 %range10564, label %inrange10565 -range10564: - call void @finch_panic_index(ptr @.str.7052, i64 305, i64 6, i64 %t179) - unreachable -inrange10565: - %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 %range10566, label %inrange10567 -range10566: - call void @finch_panic_index(ptr @.str.7053, i64 305, i64 7, i64 %t189) - unreachable -inrange10567: - %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 %range10568, label %inrange10569 -range10568: - call void @finch_panic_index(ptr @.str.7054, i64 305, i64 8, i64 %t197) - unreachable -inrange10569: - %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 %endif10553 -else10552: - %t208 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t208, ptr %a209 - store { ptr, i64, i64 } { ptr @.str.7055, 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.from10570 -logic.from10570: - br i1 %t212, label %logic.rhs10571, label %logic.end10572 -logic.rhs10571: - %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.rend10573 -logic.rend10573: - br label %logic.end10572 -logic.end10572: - %t216 = phi i1 [ false, %logic.from10570 ], [ %t215, %logic.rend10573 ] - br i1 %t216, label %then10574, label %else10575 -then10574: - %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 %range10577, label %inrange10578 -range10577: - call void @finch_panic_index(ptr @.str.7056, i64 307, i64 1, i64 %t220) - unreachable -inrange10578: - %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 %range10579, label %inrange10580 -range10579: - call void @finch_panic_index(ptr @.str.7057, i64 307, i64 2, i64 %t230) - unreachable -inrange10580: - %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 %range10581, label %inrange10582 -range10581: - call void @finch_panic_index(ptr @.str.7058, i64 307, i64 3, i64 %t240) - unreachable -inrange10582: - %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 %range10583, label %inrange10584 -range10583: - call void @finch_panic_index(ptr @.str.7059, i64 307, i64 4, i64 %t250) - unreachable -inrange10584: - %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 %range10585, label %inrange10586 -range10585: - call void @finch_panic_index(ptr @.str.7060, i64 307, i64 5, i64 %t260) - unreachable -inrange10586: - %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 %range10587, label %inrange10588 -range10587: - call void @finch_panic_index(ptr @.str.7061, i64 307, i64 6, i64 %t268) - unreachable -inrange10588: - %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 %range10589, label %inrange10590 -range10589: - call void @finch_panic_index(ptr @.str.7062, i64 307, i64 7, i64 %t276) - unreachable -inrange10590: - %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 %range10591, label %inrange10592 -range10591: - call void @finch_panic_index(ptr @.str.7063, i64 307, i64 8, i64 %t284) - unreachable -inrange10592: - %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 %range10593, label %inrange10594 -range10593: - call void @finch_panic_index(ptr @.str.7064, i64 307, i64 9, i64 %t292) - unreachable -inrange10594: - %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.7066, 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 %endif10576 -else10575: - %t307 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t307, ptr %a308 - store { ptr, i64, i64 } { ptr @.str.7067, 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.from10595 -logic.from10595: - br i1 %t311, label %logic.rhs10596, label %logic.end10597 -logic.rhs10596: - %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.rend10598 -logic.rend10598: - br label %logic.end10597 -logic.end10597: - %t315 = phi i1 [ false, %logic.from10595 ], [ %t314, %logic.rend10598 ] - br i1 %t315, label %then10599, label %else10600 -then10599: - %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 %range10602, label %inrange10603 -range10602: - call void @finch_panic_index(ptr @.str.7068, i64 309, i64 1, i64 %t319) - unreachable -inrange10603: - %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 %range10604, label %inrange10605 -range10604: - call void @finch_panic_index(ptr @.str.7069, i64 309, i64 2, i64 %t329) - unreachable -inrange10605: - %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 %range10606, label %inrange10607 -range10606: - call void @finch_panic_index(ptr @.str.7070, i64 309, i64 3, i64 %t339) - unreachable -inrange10607: - %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 %range10608, label %inrange10609 -range10608: - call void @finch_panic_index(ptr @.str.7071, i64 309, i64 4, i64 %t349) - unreachable -inrange10609: - %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 %range10610, label %inrange10611 -range10610: - call void @finch_panic_index(ptr @.str.7072, i64 309, i64 5, i64 %t357) - unreachable -inrange10611: - %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 %endif10601 -else10600: - %t368 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t368, ptr %a369 - store { ptr, i64, i64 } { ptr @.str.7073, 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.from10612 -logic.from10612: - br i1 %t372, label %logic.rhs10613, label %logic.end10614 -logic.rhs10613: - %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.rend10615 -logic.rend10615: - br label %logic.end10614 -logic.end10614: - %t376 = phi i1 [ false, %logic.from10612 ], [ %t375, %logic.rend10615 ] - br label %logic.from10616 -logic.from10616: - br i1 %t376, label %logic.rhs10617, label %logic.end10618 -logic.rhs10617: - %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.rend10619 -logic.rend10619: - br label %logic.end10618 -logic.end10618: - %t381 = phi i1 [ false, %logic.from10616 ], [ %t380, %logic.rend10619 ] - br i1 %t381, label %then10620, label %else10621 -then10620: - %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 %range10623, label %inrange10624 -range10623: - call void @finch_panic_index(ptr @.str.7074, i64 312, i64 %t388, i64 %t390) - unreachable -inrange10624: - %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 %range10625, label %inrange10626 -range10625: - call void @finch_panic_index(ptr @.str.7075, i64 312, i64 3, i64 %t397) - unreachable -inrange10626: - %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 %range10627, label %inrange10628 -range10627: - call void @finch_panic_index(ptr @.str.7076, i64 313, i64 %t410, i64 %t412) - unreachable -inrange10628: - %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 %range10629, label %inrange10630 -range10629: - call void @finch_panic_index(ptr @.str.7077, i64 313, i64 4, i64 %t419) - unreachable -inrange10630: - %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 %endif10622 -else10621: - %t431 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t431, ptr %a432 - store { ptr, i64, i64 } { ptr @.str.7078, 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.from10631 -logic.from10631: - br i1 %t435, label %logic.rhs10632, label %logic.end10633 -logic.rhs10632: - %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.rend10634 -logic.rend10634: - br label %logic.end10633 -logic.end10633: - %t439 = phi i1 [ false, %logic.from10631 ], [ %t438, %logic.rend10634 ] - br i1 %t439, label %then10635, label %else10636 -then10635: - %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 %range10638, label %inrange10639 -range10638: - call void @finch_panic_index(ptr @.str.7079, i64 315, i64 1, i64 %t443) - unreachable -inrange10639: - %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 %range10640, label %inrange10641 -range10640: - call void @finch_panic_index(ptr @.str.7080, i64 315, i64 2, i64 %t453) - unreachable -inrange10641: - %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 %range10642, label %inrange10643 -range10642: - call void @finch_panic_index(ptr @.str.7081, i64 315, i64 3, i64 %t463) - unreachable -inrange10643: - %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 %range10644, label %inrange10645 -range10644: - call void @finch_panic_index(ptr @.str.7082, i64 315, i64 4, i64 %t473) - unreachable -inrange10645: - %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 %range10646, label %inrange10647 -range10646: - call void @finch_panic_index(ptr @.str.7083, i64 315, i64 5, i64 %t481) - unreachable -inrange10647: - %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 %range10648, label %inrange10649 -range10648: - call void @finch_panic_index(ptr @.str.7084, i64 315, i64 6, i64 %t489) - unreachable -inrange10649: - %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.7086, 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 %endif10637 -else10636: - %t504 = load { ptr, i64, i64 }, ptr %a37 - store { ptr, i64, i64 } %t504, ptr %a505 - store { ptr, i64, i64 } { ptr @.str.7087, 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.from10650 -logic.from10650: - br i1 %t508, label %logic.rhs10651, label %logic.end10652 -logic.rhs10651: - %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.rend10653 -logic.rend10653: - br label %logic.end10652 -logic.end10652: - %t512 = phi i1 [ false, %logic.from10650 ], [ %t511, %logic.rend10653 ] - br i1 %t512, label %then10654, label %endif10656 -then10654: - %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 %range10657, label %inrange10658 -range10657: - call void @finch_panic_index(ptr @.str.7088, i64 317, i64 1, i64 %t516) - unreachable -inrange10658: - %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 %endif10656 -endif10656: - br label %endif10637 -endif10637: - br label %endif10622 -endif10622: - br label %endif10601 -endif10601: - br label %endif10576 -endif10576: - br label %endif10553 -endif10553: - br label %endif10530 -endif10530: - call void @finch_str_drop(ptr %a37) - call void @finch.drop.arr_str(ptr %a27) - br label %endif10521 -else10520: - %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 %then10659, label %endif10661 -then10659: - %t532 = load { ptr, i64, i64 }, ptr %a18 - %t533 = call %S.lsp.Diag @finch.lsp.parseDiag({ ptr, i64, i64 } %t532) - %t534 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t535 = load %S.lsp.Diag, ptr %t534 - store %S.lsp.Diag %t533, ptr %t534 - store %S.lsp.Diag %t535, ptr %a536 - call void @finch.drop.S_lsp_Diag(ptr %a536) - br label %endif10661 -endif10661: - br label %endif10521 -endif10521: - br label %each.step10517 -each.step10517: - %t537 = load i64, ptr %a10 - %t538 = add i64 %t537, 1 - store i64 %t538, ptr %a10 - br label %each.cond10515 -each.end10518: - call void @finch.drop.arr_str(ptr %a9) - %t539 = load %S.lsp.Analysis, ptr %a2 - ret %S.lsp.Analysis %t539 -} - -define internal void @finch.copy.S_lsp_Ref(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Ref, ptr %src - store %S.lsp.Ref %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 0 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Ref, ptr %dst, i32 0, i32 7 - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %src, i32 0, i32 7 - call void @finch_str_copy(ptr %t6, ptr %t7) - ret void -} - -define internal void @finch.copy.arr_S_lsp_Ref(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.lsp.Ref, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond10682 -n.cond10682: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10683, label %n.end10684 -n.body10683: - %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.cond10682 -n.end10684: - 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.cond10685 -n.cond10685: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10686, label %n.end10687 -n.body10686: - %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.cond10685 -n.end10687: - 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.cond10688 -n.cond10688: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10689, label %n.end10690 -n.body10689: - %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.cond10688 -n.end10690: - 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.cond10691 -n.cond10691: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10692, label %n.end10693 -n.body10692: - %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.cond10691 -n.end10693: - 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.cond10694 -n.cond10694: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body10695, label %n.end10696 -n.body10695: - %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.cond10694 -n.end10696: - ret void -} - -define internal void @finch.copy.S_lsp_Diag(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Diag, ptr %src - store %S.lsp.Diag %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 1 - %t3 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 1 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Diag, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.lsp.Diag, ptr %src, i32 0, i32 4 - call void @finch_str_copy(ptr %t4, ptr %t5) - ret void -} - -define internal void @finch.copy.S_lsp_Analysis(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.lsp.Analysis, ptr %src - store %S.lsp.Analysis %t1, ptr %dst - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 0 - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 0 - call void @finch.copy.arr_S_lsp_Ref(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 1 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 1 - call void @finch.copy.arr_S_lsp_VarRec(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 2 - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 2 - call void @finch.copy.arr_S_lsp_FnRec(ptr %t6, ptr %t7) - %t8 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 3 - %t9 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 3 - call void @finch.copy.arr_S_lsp_StructRec(ptr %t8, ptr %t9) - %t10 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 4 - %t11 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %t10, ptr %t11) - %t12 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 5 - %t13 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t12, ptr %t13) - %t14 = getelementptr inbounds %S.lsp.Analysis, ptr %dst, i32 0, i32 6 - %t15 = getelementptr inbounds %S.lsp.Analysis, ptr %src, i32 0, i32 6 - call void @finch.copy.S_lsp_Diag(ptr %t14, ptr %t15) - ret void -} - -define internal void @finch.drop.S_lsp_Ref(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 4 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Ref, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t3) - ret void -} - -define internal void @finch.drop.arr_S_lsp_Ref(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10697 -n.cond10697: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10698, label %n.end10699 -n.body10698: - %t7 = getelementptr inbounds %S.lsp.Ref, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_Ref(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10697 -n.end10699: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_VarRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.VarRec, ptr %a, i32 0, i32 5 - call void @finch_str_drop(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_VarRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10700 -n.cond10700: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10701, label %n.end10702 -n.body10701: - %t7 = getelementptr inbounds %S.lsp.VarRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_VarRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10700 -n.end10702: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_FnRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 3 - call void @finch_str_drop(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 7 - call void @finch_str_drop(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.FnRec, ptr %a, i32 0, i32 8 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -define internal void @finch.drop.arr_S_lsp_FnRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10703 -n.cond10703: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10704, label %n.end10705 -n.body10704: - %t7 = getelementptr inbounds %S.lsp.FnRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_FnRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10703 -n.end10705: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_StructRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.StructRec, ptr %a, i32 0, i32 6 - call void @finch.drop.arr_str(ptr %t5) - ret void -} - -define internal void @finch.drop.arr_S_lsp_StructRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10706 -n.cond10706: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10707, label %n.end10708 -n.body10707: - %t7 = getelementptr inbounds %S.lsp.StructRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_StructRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10706 -n.end10708: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_EnumRec(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 2 - call void @finch_str_drop(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.EnumRec, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t4) - ret void -} - -define internal void @finch.drop.arr_S_lsp_EnumRec(ptr %a) { -entry: - %a4 = alloca i64, align 16 - %t1 = load ptr, ptr %a - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a, i32 0, i32 1 - %t3 = load i64, ptr %t2 - store i64 0, ptr %a4 - br label %n.cond10709 -n.cond10709: - %t5 = load i64, ptr %a4 - %t6 = icmp slt i64 %t5, %t3 - br i1 %t6, label %n.body10710, label %n.end10711 -n.body10710: - %t7 = getelementptr inbounds %S.lsp.EnumRec, ptr %t1, i64 %t5 - call void @finch.drop.S_lsp_EnumRec(ptr %t7) - %t8 = load i64, ptr %a4 - %t9 = add i64 %t8, 1 - store i64 %t9, ptr %a4 - br label %n.cond10709 -n.end10711: - call void @finch_arr_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Analysis(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_S_lsp_Ref(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 1 - call void @finch.drop.arr_S_lsp_VarRec(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 2 - call void @finch.drop.arr_S_lsp_FnRec(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 3 - call void @finch.drop.arr_S_lsp_StructRec(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 4 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - %t7 = getelementptr inbounds %S.lsp.Analysis, ptr %a, i32 0, i32 6 - call void @finch.drop.S_lsp_Diag(ptr %t7) - ret void -} - -define internal void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %a4 = alloca { ptr, i64, i64 }, align 16 - %a5 = alloca i64, align 16 - %a7 = alloca { ptr, i64, i64 }, align 16 - %a11 = alloca i64, align 16 - %a14 = alloca i64, align 16 - %a30 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca i64, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a43 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a50 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca { ptr, i64, i64 }, align 16 - %a64 = 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 - %a79 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a84 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a89 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a95 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a99 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca { ptr, i64, i64 }, align 16 - %a103 = alloca { ptr, i64, i64 }, align 16 - %a110 = alloca { ptr, i64, i64 }, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a114 = alloca { ptr, i64, i64 }, align 16 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca { ptr, i64, i64 }, align 16 - %a120 = alloca { ptr, i64, i64 }, align 16 - %a121 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a128 = alloca { ptr, i64, i64 }, align 16 - %a129 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a133 = alloca { ptr, i64, i64 }, align 16 - %a134 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a144 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a146 = alloca { ptr, i64, i64 }, align 16 - %a147 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a169 = alloca %S.lsp.Analysis, align 16 - %a177 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca i32, align 16 - %a188 = alloca %S.lsp.Analysis, align 16 - %a189 = alloca %S.lsp.Analysis, align 16 - %a192 = alloca %S.lsp.Analysis, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %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 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca { ptr, i64, i64 }, align 16 - %a229 = alloca { ptr, i64, i64 }, align 16 - %a233 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a245 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca i32, align 16 - %a272 = alloca %S.lsp.Analysis, align 16 - %a273 = alloca %S.lsp.Analysis, align 16 - %a276 = alloca %S.lsp.Analysis, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t3 = load { ptr, i64, i64 }, ptr %t2 - call void @finch.host.makeDirs({ ptr, i64, i64 } %t3) - store { ptr, i64, i64 } { ptr @.str.7089, i64 0, i64 0 }, ptr %a4 - store i64 0, ptr %a5 - %t6 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %a7 - %t8 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 1 - %t9 = load i64, ptr %t8 - call void @finch_arr_make(ptr %a7, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a7 - store i64 0, ptr %a11 - %t12 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 2 - %t13 = load i64, ptr %t12 - store i64 0, ptr %a14 - br label %n.cond10662 -n.cond10662: - %t15 = load i64, ptr %a14 - %t16 = icmp slt i64 %t15, %t13 - br i1 %t16, label %n.body10663, label %n.end10664 -n.body10663: - %t17 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t6, i32 0, i32 0 - %t18 = load ptr, ptr %t17 - %t19 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t18, i64 %t15 - %t20 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 0 - %t21 = load i64, ptr %t20 - %t22 = icmp ne i64 %t21, 0 - br i1 %t22, label %entry.live10665, label %entry.next10666 -entry.live10665: - %t23 = load i64, ptr %a11 - %t24 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t23 - %t25 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t19, i32 0, i32 1 - call void @finch_str_copy(ptr %t24, ptr %t25) - %t26 = add i64 %t23, 1 - store i64 %t26, ptr %a11 - br label %entry.next10666 -entry.next10666: - %t27 = load i64, ptr %a14 - %t28 = add i64 %t27, 1 - store i64 %t28, ptr %a14 - br label %n.cond10662 -n.end10664: - %t29 = load { ptr, i64, i64 }, ptr %a7 - store { ptr, i64, i64 } %t29, ptr %a30 - store i64 0, ptr %a31 - br label %each.cond10667 -each.cond10667: - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a30, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = load i64, ptr %a31 - %t35 = icmp slt i64 %t34, %t33 - br i1 %t35, label %each.body10668, label %each.end10670 -each.body10668: - %t36 = load ptr, ptr %a30 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i64 %t34 - %t38 = load { ptr, i64, i64 }, ptr %t37 - store { ptr, i64, i64 } %t38, ptr %a39 - %t40 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t41 = load { ptr, i64, i64 }, ptr %t40 - store { ptr, i64, i64 } %t41, ptr %a43 - store { ptr, i64, i64 } { ptr @.str.7090, i64 4, i64 0 }, ptr %a44 - call void @finch_str_concat(ptr %a42, ptr %a43, ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a42 - %t46 = load i64, ptr %a5 - call void @finch_str_from_int(ptr %a47, i64 %t46) - %t48 = load { ptr, i64, i64 }, ptr %a47 - store { ptr, i64, i64 } %t45, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a51 - call void @finch_str_concat(ptr %a49, ptr %a50, ptr %a51) - store { ptr, i64, i64 } %t45, ptr %a52 - call void @finch_str_drop(ptr %a52) - store { ptr, i64, i64 } %t48, ptr %a53 - call void @finch_str_drop(ptr %a53) - %t54 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } %t54, ptr %a56 - store { ptr, i64, i64 } { ptr @.str.7091, i64 4, i64 0 }, ptr %a57 - call void @finch_str_concat(ptr %a55, ptr %a56, ptr %a57) - store { ptr, i64, i64 } %t54, ptr %a58 - call void @finch_str_drop(ptr %a58) - %t59 = load { ptr, i64, i64 }, ptr %a55 - store { ptr, i64, i64 } %t59, ptr %a60 - %t61 = load { ptr, i64, i64 }, ptr %a60 - %t62 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t63 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t63, ptr %a64 - %t65 = call i64 @finch_map_find(ptr %t62, ptr %a64, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t66 = icmp slt i64 %t65, 0 - br i1 %t66, label %map.missing10671, label %map.found10672 -map.missing10671: - store { ptr, i64, i64 } zeroinitializer, ptr %a67 - store { ptr, i64, i64 } %t63, ptr %a68 - call void @finch_buf_str(ptr %a67, ptr %a68, i32 1) - call void @finch_map_missing(ptr @.str.7092, i64 333, ptr %a67) - unreachable -map.found10672: - %t69 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t62, i32 0, i32 0 - %t70 = load ptr, ptr %t69 - %t71 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t70, i64 %t65 - %t72 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t71, i32 0, i32 2 - %t73 = load { ptr, i64, i64 }, ptr %t72 - store { ptr, i64, i64 } %t61, ptr %a74 - store { ptr, i64, i64 } %t73, ptr %a75 - %t76 = call i32 @finch_write_file(ptr %a74, ptr %a75) - %t77 = icmp ne i32 %t76, 0 - %t78 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t78, ptr %a80 - store { ptr, i64, i64 } { ptr @.str.7093, i64 11, i64 0 }, ptr %a81 - call void @finch_str_concat(ptr %a79, ptr %a80, ptr %a81) - %t82 = load { ptr, i64, i64 }, ptr %a79 - %t83 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t83, ptr %a85 - store { ptr, i64, i64 } { ptr @.str.7094, i64 1, i64 0 }, ptr %a86 - call void @finch_str_concat(ptr %a84, ptr %a85, ptr %a86) - %t87 = load { ptr, i64, i64 }, ptr %a84 - %t88 = load { ptr, i64, i64 }, ptr %a60 - store { ptr, i64, i64 } %t87, ptr %a90 - store { ptr, i64, i64 } %t88, ptr %a91 - call void @finch_str_concat(ptr %a89, ptr %a90, ptr %a91) - store { ptr, i64, i64 } %t87, ptr %a92 - call void @finch_str_drop(ptr %a92) - %t93 = load { ptr, i64, i64 }, ptr %a89 - %t94 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t93) - store { ptr, i64, i64 } %t93, ptr %a95 - call void @finch_str_drop(ptr %a95) - store { ptr, i64, i64 } %t82, ptr %a97 - store { ptr, i64, i64 } %t94, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - store { ptr, i64, i64 } %t82, ptr %a99 - call void @finch_str_drop(ptr %a99) - store { ptr, i64, i64 } %t94, ptr %a100 - call void @finch_str_drop(ptr %a100) - %t101 = load { ptr, i64, i64 }, ptr %a96 - %t102 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t101, ptr %a4 - store { ptr, i64, i64 } %t102, ptr %a103 - call void @finch_str_drop(ptr %a103) - %t104 = load i64, ptr %a5 - %t105 = add i64 %t104, 1 - store i64 %t105, ptr %a5 - call void @finch_str_drop(ptr %a60) - br label %each.step10669 -each.step10669: - %t106 = load i64, ptr %a31 - %t107 = add i64 %t106, 1 - store i64 %t107, ptr %a31 - br label %each.cond10667 -each.end10670: - call void @finch.drop.arr_str(ptr %a30) - %t108 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 1 - %t109 = load { ptr, i64, i64 }, ptr %t108 - store { ptr, i64, i64 } %t109, ptr %a111 - store { ptr, i64, i64 } { ptr @.str.7095, i64 8, i64 0 }, ptr %a112 - call void @finch_str_concat(ptr %a110, ptr %a111, ptr %a112) - %t113 = load { ptr, i64, i64 }, ptr %a110 - store { ptr, i64, i64 } %t113, ptr %a114 - %t115 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 0 - %t116 = load { ptr, i64, i64 }, ptr %t115 - %t117 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t116) - store { ptr, i64, i64 } %t117, ptr %a119 - store { ptr, i64, i64 } { ptr @.str.7096, i64 7, i64 0 }, ptr %a120 - call void @finch_str_concat(ptr %a118, ptr %a119, ptr %a120) - store { ptr, i64, i64 } %t117, ptr %a121 - call void @finch_str_drop(ptr %a121) - %t122 = load { ptr, i64, i64 }, ptr %a118 - %t123 = load { ptr, i64, i64 }, ptr %a1 - %t124 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t123) - store { ptr, i64, i64 } %t122, ptr %a126 - store { ptr, i64, i64 } %t124, ptr %a127 - call void @finch_str_concat(ptr %a125, ptr %a126, ptr %a127) - store { ptr, i64, i64 } %t122, ptr %a128 - call void @finch_str_drop(ptr %a128) - store { ptr, i64, i64 } %t124, ptr %a129 - call void @finch_str_drop(ptr %a129) - %t130 = load { ptr, i64, i64 }, ptr %a125 - %t131 = load { ptr, i64, i64 }, ptr %a4 - store { ptr, i64, i64 } %t130, ptr %a133 - store { ptr, i64, i64 } %t131, ptr %a134 - call void @finch_str_concat(ptr %a132, ptr %a133, ptr %a134) - store { ptr, i64, i64 } %t130, ptr %a135 - call void @finch_str_drop(ptr %a135) - %t136 = load { ptr, i64, i64 }, ptr %a132 - store { ptr, i64, i64 } %t136, ptr %a138 - store { ptr, i64, i64 } { ptr @.str.7097, i64 3, i64 0 }, ptr %a139 - call void @finch_str_concat(ptr %a137, ptr %a138, ptr %a139) - store { ptr, i64, i64 } %t136, ptr %a140 - call void @finch_str_drop(ptr %a140) - %t141 = load { ptr, i64, i64 }, ptr %a137 - %t142 = load { ptr, i64, i64 }, ptr %a114 - %t143 = call { ptr, i64, i64 } @finch.host.quote({ ptr, i64, i64 } %t142) - store { ptr, i64, i64 } %t141, ptr %a145 - store { ptr, i64, i64 } %t143, ptr %a146 - call void @finch_str_concat(ptr %a144, ptr %a145, ptr %a146) - store { ptr, i64, i64 } %t141, ptr %a147 - call void @finch_str_drop(ptr %a147) - store { ptr, i64, i64 } %t143, ptr %a148 - call void @finch_str_drop(ptr %a148) - %t149 = load { ptr, i64, i64 }, ptr %a144 - store { ptr, i64, i64 } %t149, ptr %a151 - store { ptr, i64, i64 } { ptr @.str.7098, i64 5, i64 0 }, ptr %a152 - call void @finch_str_concat(ptr %a150, ptr %a151, ptr %a152) - store { ptr, i64, i64 } %t149, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load { ptr, i64, i64 }, ptr %a150 - %t155 = call i64 @finch.host.run({ ptr, i64, i64 } %t154) - store { ptr, i64, i64 } %t154, ptr %a156 - call void @finch_str_drop(ptr %a156) - %t157 = load { ptr, i64, i64 }, ptr %a114 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } zeroinitializer, ptr %a159 - store { ptr, i64, i64 } zeroinitializer, ptr %a160 - %t161 = call i32 @finch_try_read_file(ptr %a159, ptr %a158, ptr %a160) - %t162 = icmp eq i32 %t161, 0 - %t163 = load { ptr, i64, i64 }, ptr %a160 - %t164 = load { ptr, i64, i64 }, ptr %a159 - br i1 %t162, label %or.failed10673, label %or.ok10674 -or.failed10673: - store { ptr, i64, i64 } %t163, ptr %a165 - call void @finch_str_drop(ptr %a165) - br label %or.bend10675 -or.bend10675: - br label %or.end10676 -or.ok10674: - br label %or.end10676 -or.end10676: - %t166 = phi { ptr, i64, i64 } [ { ptr @.str.7099, i64 0, i64 0 }, %or.bend10675 ], [ %t164, %or.ok10674 ] - %t167 = call %S.lsp.Analysis @finch.lsp.parseOutput({ ptr, i64, i64 } %t166) - store { ptr, i64, i64 } %t166, ptr %a168 - call void @finch_str_drop(ptr %a168) - store %S.lsp.Analysis %t167, ptr %a169 - %t170 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 6 - %t171 = getelementptr inbounds %S.lsp.Diag, ptr %t170, i32 0, i32 0 - %t172 = load i1, ptr %t171 - %t173 = xor i1 %t172, true - br i1 %t173, label %then10677, label %else10678 -then10677: - %t174 = load %S.lsp.Analysis, ptr %a169 - %t175 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t176 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t176, ptr %a177 - store i32 0, ptr %a178 - %t179 = call i64 @finch_map_slot(ptr %t175, ptr %a177, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a178) - %t180 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t175, i32 0, i32 0 - %t181 = load ptr, ptr %t180 - %t182 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t181, i64 %t179 - %t183 = load i32, ptr %a178 - %t184 = icmp ne i32 %t183, 0 - br i1 %t184, label %map.new10680, label %map.have10681 -map.new10680: - %t185 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 1 - call void @finch_str_copy(ptr %t185, ptr %a177) - %t186 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t186 - br label %map.have10681 -map.have10681: - %t187 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t182, i32 0, i32 2 - store %S.lsp.Analysis %t174, ptr %a188 - call void @finch.copy.S_lsp_Analysis(ptr %a189, ptr %a188) - %t190 = load %S.lsp.Analysis, ptr %a189 - %t191 = load %S.lsp.Analysis, ptr %t187 - store %S.lsp.Analysis %t190, ptr %t187 - store %S.lsp.Analysis %t191, ptr %a192 - call void @finch.drop.S_lsp_Analysis(ptr %a192) - br label %endif10679 -else10678: - %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 %then10712, label %endif10714 -then10712: - %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.missing10715, label %map.found10716 -map.missing10715: - 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.7100, i64 344, ptr %a203) - unreachable -map.found10716: - %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 %a169, i32 0, i32 2 - store { ptr, i64, i64 } %t215, ptr %a217 - call void @finch.copy.arr_S_lsp_FnRec(ptr %a218, ptr %a217) - %t219 = load { ptr, i64, i64 }, ptr %a218 - %t220 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } %t219, ptr %t216 - store { ptr, i64, i64 } %t220, ptr %a221 - call void @finch.drop.arr_S_lsp_FnRec(ptr %a221) - %t222 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 3 - %t223 = load { ptr, i64, i64 }, ptr %t222 - %t224 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 3 - store { ptr, i64, i64 } %t223, ptr %a225 - call void @finch.copy.arr_S_lsp_StructRec(ptr %a226, ptr %a225) - %t227 = load { ptr, i64, i64 }, ptr %a226 - %t228 = load { ptr, i64, i64 }, ptr %t224 - store { ptr, i64, i64 } %t227, ptr %t224 - store { ptr, i64, i64 } %t228, ptr %a229 - call void @finch.drop.arr_S_lsp_StructRec(ptr %a229) - %t230 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 4 - %t231 = load { ptr, i64, i64 }, ptr %t230 - %t232 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 4 - store { ptr, i64, i64 } %t231, ptr %a233 - call void @finch.copy.arr_S_lsp_EnumRec(ptr %a234, ptr %a233) - %t235 = load { ptr, i64, i64 }, ptr %a234 - %t236 = load { ptr, i64, i64 }, ptr %t232 - store { ptr, i64, i64 } %t235, ptr %t232 - store { ptr, i64, i64 } %t236, ptr %a237 - call void @finch.drop.arr_S_lsp_EnumRec(ptr %a237) - %t238 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 1 - %t239 = load { ptr, i64, i64 }, ptr %t238 - %t240 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 1 - store { ptr, i64, i64 } %t239, ptr %a241 - call void @finch.copy.arr_S_lsp_VarRec(ptr %a242, ptr %a241) - %t243 = load { ptr, i64, i64 }, ptr %a242 - %t244 = load { ptr, i64, i64 }, ptr %t240 - store { ptr, i64, i64 } %t243, ptr %t240 - store { ptr, i64, i64 } %t244, ptr %a245 - call void @finch.drop.arr_S_lsp_VarRec(ptr %a245) - %t246 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - %t247 = getelementptr inbounds { ptr, i64, i64 }, ptr %t246, i32 0, i32 1 - %t248 = load i64, ptr %t247 - %t249 = icmp eq i64 %t248, 0 - br i1 %t249, label %then10717, label %endif10719 -then10717: - %t250 = getelementptr inbounds %S.lsp.Analysis, ptr %a213, i32 0, i32 5 - %t251 = load { ptr, i64, i64 }, ptr %t250 - %t252 = getelementptr inbounds %S.lsp.Analysis, ptr %a169, i32 0, i32 5 - store { ptr, i64, i64 } %t251, ptr %a253 - call void @finch.copy.arr_str(ptr %a254, ptr %a253) - %t255 = load { ptr, i64, i64 }, ptr %a254 - %t256 = load { ptr, i64, i64 }, ptr %t252 - store { ptr, i64, i64 } %t255, ptr %t252 - store { ptr, i64, i64 } %t256, ptr %a257 - call void @finch.drop.arr_str(ptr %a257) - br label %endif10719 -endif10719: - call void @finch.drop.S_lsp_Analysis(ptr %a213) - br label %endif10714 -endif10714: - br label %endif10679 -endif10679: - %t258 = load %S.lsp.Analysis, ptr %a169 - %t259 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t260 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t260, ptr %a261 - store i32 0, ptr %a262 - %t263 = call i64 @finch_map_slot(ptr %t259, ptr %a261, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a262) - %t264 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t259, i32 0, i32 0 - %t265 = load ptr, ptr %t264 - %t266 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t265, i64 %t263 - %t267 = load i32, ptr %a262 - %t268 = icmp ne i32 %t267, 0 - br i1 %t268, label %map.new10720, label %map.have10721 -map.new10720: - %t269 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 1 - call void @finch_str_copy(ptr %t269, ptr %a261) - %t270 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis zeroinitializer, ptr %t270 - br label %map.have10721 -map.have10721: - %t271 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t266, i32 0, i32 2 - store %S.lsp.Analysis %t258, ptr %a272 - call void @finch.copy.S_lsp_Analysis(ptr %a273, ptr %a272) - %t274 = load %S.lsp.Analysis, ptr %a273 - %t275 = load %S.lsp.Analysis, ptr %t271 - store %S.lsp.Analysis %t274, ptr %t271 - store %S.lsp.Analysis %t275, ptr %a276 - call void @finch.drop.S_lsp_Analysis(ptr %a276) - %t277 = load { ptr, i64, i64 }, ptr %a1 - %t278 = load %S.lsp.Analysis, ptr %a169 - call void @finch.lsp.Server.publish(ptr %self, { ptr, i64, i64 } %t277, %S.lsp.Analysis %t278) - call void @finch.drop.S_lsp_Analysis(ptr %a169) - call void @finch_str_drop(ptr %a114) - call void @finch_str_drop(ptr %a4) - ret void -} - -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 - %a98 = alloca %S.json.Json, align 16 - %a100 = alloca %S.json.Json, align 16 - %a102 = alloca %S.json.Json, align 16 - %a107 = alloca %S.json.Json, align 16 - %a111 = alloca { ptr, i64, i64 }, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a119 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca %S.json.Json, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.lsp.Analysis %p1, ptr %a2 - %t3 = load { ptr, i64, i64 }, ptr %a1 - 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.cond10722 -each.cond10722: - %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.body10723, label %each.end10725 -each.body10723: - %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.cond10726 -find.cond10726: - %t30 = load i64, ptr %a29 - %t31 = icmp slt i64 %t30, %t27 - br i1 %t31, label %find.body10727, label %find.end10730 -find.body10727: - %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.hit10728, label %find.next10729 -find.hit10728: - store i64 %t30, ptr %a26 - br label %find.end10730 -find.next10729: - %t38 = add i64 %t30, 1 - store i64 %t38, ptr %a29 - br label %find.cond10726 -find.end10730: - %t39 = load i64, ptr %a26 - %t40 = icmp sge i64 %t39, 0 - %t41 = xor i1 %t40, true - br i1 %t41, label %then10731, label %endif10733 -then10731: - %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 %endif10733 -endif10733: - br label %each.step10724 -each.step10724: - %t51 = load i64, ptr %a15 - %t52 = add i64 %t51, 1 - store i64 %t52, ptr %a15 - br label %each.cond10722 -each.end10725: - store { ptr, i64, i64 } zeroinitializer, ptr %a53 - store i64 0, ptr %a54 - br label %each.cond10734 -each.cond10734: - %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.body10735, label %each.end10737 -each.body10735: - %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.from10738 -logic.from10738: - br i1 %t67, label %logic.rhs10739, label %logic.end10740 -logic.rhs10739: - %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.rend10741 -logic.rend10741: - br label %logic.end10740 -logic.end10740: - %t76 = phi i1 [ false, %logic.from10738 ], [ %t75, %logic.rend10741 ] - br i1 %t76, label %then10742, label %endif10744 -then10742: - %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 %then10745, label %endif10747 -then10745: - store i64 0, ptr %a81 - br label %endif10747 -endif10747: - %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 %then10748, label %endif10750 -then10748: - store i64 0, ptr %a88 - br label %endif10750 -endif10750: - %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.7101, i64 5, i64 0 }, %S.json.Json %t97) - store %S.json.Json %t97, ptr %a98 - call void @finch.drop.S_json_Json(ptr %a98) - %t99 = call %S.json.Json @finch.lsp.num(i64 1) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7102, i64 8, i64 0 }, %S.json.Json %t99) - store %S.json.Json %t99, ptr %a100 - call void @finch.drop.S_json_Json(ptr %a100) - %t101 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7104, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7103, i64 6, i64 0 }, %S.json.Json %t101) - store %S.json.Json %t101, ptr %a102 - call void @finch.drop.S_json_Json(ptr %a102) - %t103 = getelementptr inbounds %S.lsp.Analysis, ptr %a2, i32 0, i32 6 - %t104 = getelementptr inbounds %S.lsp.Diag, ptr %t103, i32 0, i32 4 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t105) - call void @finch.json.Json.set(ptr %a92, { ptr, i64, i64 } { ptr @.str.7105, i64 7, i64 0 }, %S.json.Json %t106) - store %S.json.Json %t106, ptr %a107 - call void @finch.drop.S_json_Json(ptr %a107) - %t108 = load %S.json.Json, ptr %a92 - call void @finch.json.Json.push(ptr %a64, %S.json.Json %t108) - %t109 = getelementptr inbounds { ptr, i64, i64 }, ptr %a53, i32 0, i32 1 - %t110 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t110, ptr %a111 - call void @finch_str_copy(ptr %a112, ptr %a111) - %t113 = load { ptr, i64, i64 }, ptr %a112 - %t114 = load i64, ptr %t109 - %t115 = add i64 %t114, 1 - call void @finch_arr_reserve(ptr %a53, i64 %t115, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t116 = load ptr, ptr %a53 - %t117 = getelementptr inbounds { ptr, i64, i64 }, ptr %t116, i64 %t114 - store { ptr, i64, i64 } %t113, ptr %t117 - store i64 %t115, ptr %t109 - call void @finch.drop.S_json_Json(ptr %a92) - br label %endif10744 -endif10744: - %t118 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t118, ptr %a119 - %t120 = load { ptr, i64, i64 }, ptr %a62 - %t121 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t120) - %t122 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t121) - store { ptr, i64, i64 } %t121, ptr %a123 - call void @finch_str_drop(ptr %a123) - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7106, i64 3, i64 0 }, %S.json.Json %t122) - store %S.json.Json %t122, ptr %a124 - call void @finch.drop.S_json_Json(ptr %a124) - %t125 = load %S.json.Json, ptr %a64 - call void @finch.json.Json.set(ptr %a119, { ptr, i64, i64 } { ptr @.str.7107, i64 11, i64 0 }, %S.json.Json %t125) - %t126 = load %S.json.Json, ptr %a119 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7108, i64 31, i64 0 }, %S.json.Json %t126) - call void @finch.drop.S_json_Json(ptr %a119) - call void @finch.drop.S_json_Json(ptr %a64) - br label %each.step10736 -each.step10736: - %t127 = load i64, ptr %a54 - %t128 = add i64 %t127, 1 - store i64 %t128, ptr %a54 - br label %each.cond10734 -each.end10737: - %t129 = load { ptr, i64, i64 }, ptr %a53 - %t130 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 5 - store { ptr, i64, i64 } %t129, ptr %a131 - call void @finch.copy.arr_str(ptr %a132, ptr %a131) - %t133 = load { ptr, i64, i64 }, ptr %a132 - %t134 = load { ptr, i64, i64 }, ptr %t130 - store { ptr, i64, i64 } %t133, ptr %t130 - store { ptr, i64, i64 } %t134, ptr %a135 - call void @finch.drop.arr_str(ptr %a135) - call void @finch.drop.arr_str(ptr %a53) - call void @finch.drop.arr_str(ptr %a13) - ret void -} - -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.cond10751 -for.cond10751: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body10752, label %for.end10754 -for.body10752: - %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 %range10755, label %inrange10756 -range10755: - call void @finch_panic_index(ptr @.str.7109, i64 397, i64 %t12, i64 %t14) - unreachable -inrange10756: - %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.from10757 -logic.from10757: - br i1 %t26, label %logic.rhs10758, label %logic.end10759 -logic.rhs10758: - %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.rend10760 -logic.rend10760: - br label %logic.end10759 -logic.end10759: - %t31 = phi i1 [ false, %logic.from10757 ], [ %t30, %logic.rend10760 ] - br label %logic.from10761 -logic.from10761: - br i1 %t31, label %logic.rhs10762, label %logic.end10763 -logic.rhs10762: - %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.rend10764 -logic.rend10764: - br label %logic.end10763 -logic.end10763: - %t39 = phi i1 [ false, %logic.from10761 ], [ %t38, %logic.rend10764 ] - br label %logic.from10765 -logic.from10765: - br i1 %t39, label %logic.rhs10766, label %logic.end10767 -logic.rhs10766: - %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.rend10768 -logic.rend10768: - br label %logic.end10767 -logic.end10767: - %t47 = phi i1 [ false, %logic.from10765 ], [ %t46, %logic.rend10768 ] - br i1 %t47, label %then10769, label %endif10771 -then10769: - %t48 = load i64, ptr %a8 - call void @finch.drop.S_lsp_Ref(ptr %a22) - ret i64 %t48 -endif10771: - call void @finch.drop.S_lsp_Ref(ptr %a22) - br label %for.step10753 -for.step10753: - %t49 = load i64, ptr %a8 - %t50 = add i64 %t49, 1 - store i64 %t50, ptr %a8 - br label %for.cond10751 -for.end10754: - 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 - %a17 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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 %then10772, label %endif10774 -then10772: - %t13 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t13 -endif10774: - %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.7111, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7110, i64 4, i64 0 }, %S.json.Json %t16) - store %S.json.Json %t16, ptr %a17 - call void @finch.drop.S_json_Json(ptr %a17) - %t18 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 0 - %t19 = load i64, ptr %a10 - %t20 = load { ptr, i64, i64 }, ptr %t18 - %t21 = extractvalue { ptr, i64, i64 } %t20, 1 - %t22 = icmp uge i64 %t19, %t21 - br i1 %t22, label %range10775, label %inrange10776 -range10775: - call void @finch_panic_index(ptr @.str.7113, i64 412, i64 %t19, i64 %t21) - unreachable -inrange10776: - %t23 = extractvalue { ptr, i64, i64 } %t20, 0 - %t24 = getelementptr inbounds %S.lsp.Ref, ptr %t23, i64 %t19 - %t25 = getelementptr inbounds %S.lsp.Ref, ptr %t24, i32 0, i32 7 - %t26 = load { ptr, i64, i64 }, ptr %t25 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7112, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t29, ptr %a30 - %t31 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a30, { ptr, i64, i64 } { ptr @.str.7114, i64 8, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, i64 %p2, i64 %p3) { -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca %S.json.Json, align 16 - %a56 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - 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.from10777 -logic.from10777: - br i1 %t12, label %logic.end10779, label %logic.rhs10778 -logic.rhs10778: - %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 %range10780, label %inrange10781 -range10780: - call void @finch_panic_index(ptr @.str.7115, i64 420, i64 %t14, i64 %t16) - unreachable -inrange10781: - %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.rend10782 -logic.rend10782: - br label %logic.end10779 -logic.end10779: - %t24 = phi i1 [ true, %logic.from10777 ], [ %t23, %logic.rend10782 ] - br i1 %t24, label %then10783, label %endif10785 -then10783: - %t25 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t25 -endif10785: - %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 %range10786, label %inrange10787 -range10786: - call void @finch_panic_index(ptr @.str.7116, i64 423, i64 %t27, i64 %t29) - unreachable -inrange10787: - %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) - store { ptr, i64, i64 } %t42, ptr %a44 - call void @finch_str_drop(ptr %a44) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7117, i64 3, i64 0 }, %S.json.Json %t43) - store %S.json.Json %t43, ptr %a45 - call void @finch.drop.S_json_Json(ptr %a45) - %t46 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 5 - %t47 = load i64, ptr %t46 - %t48 = sub i64 %t47, 1 - %t49 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t50 = load i64, ptr %t49 - %t51 = sub i64 %t50, 1 - %t52 = getelementptr inbounds %S.lsp.Ref, ptr %a37, i32 0, i32 6 - %t53 = load i64, ptr %t52 - %t54 = sub i64 %t53, 1 - %t55 = call %S.json.Json @finch.lsp.range(i64 %t48, i64 %t51, i64 %t54) - call void @finch.json.Json.set(ptr %a39, { ptr, i64, i64 } { ptr @.str.7118, i64 5, i64 0 }, %S.json.Json %t55) - store %S.json.Json %t55, ptr %a56 - call void @finch.drop.S_json_Json(ptr %a56) - %t57 = load %S.json.Json, ptr %a39 - call void @finch.drop.S_lsp_Ref(ptr %a37) - ret %S.json.Json %t57 -} - -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 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca %S.json.Json, align 16 - %a61 = alloca i64, align 16 - %a69 = alloca %S.lsp.StructRec, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca %S.json.Json, align 16 - %a95 = alloca i64, align 16 - %a103 = alloca %S.lsp.EnumRec, align 16 - %a107 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t3, ptr %a4 - %t5 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a6 - br label %each.cond10788 -each.cond10788: - %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.body10789, label %each.end10791 -each.body10789: - %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 %then10792, label %endif10794 -then10792: - br label %each.step10790 -endif10794: - 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 %then10795, label %endif10797 -then10795: - 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.7119, 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) - store { ptr, i64, i64 } %t38, ptr %a44 - call void @finch_str_drop(ptr %a44) - %t45 = load { ptr, i64, i64 }, ptr %a41 - %t46 = load { ptr, i64, i64 }, ptr %a28 - store { ptr, i64, i64 } %t45, ptr %a28 - store { ptr, i64, i64 } %t46, ptr %a47 - call void @finch_str_drop(ptr %a47) - br label %endif10797 -endif10797: - %t48 = load { ptr, i64, i64 }, ptr %a28 - %t49 = load i64, ptr %a22 - %t50 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 4 - %t51 = load i64, ptr %t50 - %t52 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 5 - %t53 = load i64, ptr %t52 - %t54 = getelementptr inbounds %S.lsp.FnRec, ptr %a14, i32 0, i32 6 - %t55 = load i64, ptr %t54 - %t56 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t48, i64 %t49, i64 %t51, i64 %t53, i64 %t55) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t56) - store %S.json.Json %t56, ptr %a57 - call void @finch.drop.S_json_Json(ptr %a57) - call void @finch_str_drop(ptr %a28) - br label %each.step10790 -each.step10790: - %t58 = load i64, ptr %a6 - %t59 = add i64 %t58, 1 - store i64 %t59, ptr %a6 - br label %each.cond10788 -each.end10791: - %t60 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a61 - br label %each.cond10798 -each.cond10798: - %t62 = getelementptr inbounds { ptr, i64, i64 }, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - %t64 = load i64, ptr %a61 - %t65 = icmp slt i64 %t64, %t63 - br i1 %t65, label %each.body10799, label %each.end10801 -each.body10799: - %t66 = load ptr, ptr %t60 - %t67 = getelementptr inbounds %S.lsp.StructRec, ptr %t66, i64 %t64 - %t68 = load %S.lsp.StructRec, ptr %t67 - store %S.lsp.StructRec %t68, ptr %a69 - %t70 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 2 - %t71 = load { ptr, i64, i64 }, ptr %t70 - %t72 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t71, ptr %a73 - store { ptr, i64, i64 } %t72, ptr %a74 - %t75 = call i32 @finch_str_eq(ptr %a73, ptr %a74) - %t76 = icmp ne i32 %t75, 0 - br i1 %t76, label %then10802, label %endif10804 -then10802: - %t77 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 1 - %t78 = load { ptr, i64, i64 }, ptr %t77 - %t79 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t80 = load i64, ptr %t79 - %t81 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 4 - %t82 = load i64, ptr %t81 - %t83 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 3 - %t84 = load i64, ptr %t83 - %t85 = getelementptr inbounds %S.lsp.StructRec, ptr %a69, i32 0, i32 5 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t84, %t87 - %t89 = add i64 %t88, 1 - %t90 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t78, i64 23, i64 %t80, i64 %t82, i64 %t89) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t90) - store %S.json.Json %t90, ptr %a91 - call void @finch.drop.S_json_Json(ptr %a91) - br label %endif10804 -endif10804: - br label %each.step10800 -each.step10800: - %t92 = load i64, ptr %a61 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %a61 - br label %each.cond10798 -each.end10801: - %t94 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a95 - br label %each.cond10805 -each.cond10805: - %t96 = getelementptr inbounds { ptr, i64, i64 }, ptr %t94, i32 0, i32 1 - %t97 = load i64, ptr %t96 - %t98 = load i64, ptr %a95 - %t99 = icmp slt i64 %t98, %t97 - br i1 %t99, label %each.body10806, label %each.end10808 -each.body10806: - %t100 = load ptr, ptr %t94 - %t101 = getelementptr inbounds %S.lsp.EnumRec, ptr %t100, i64 %t98 - %t102 = load %S.lsp.EnumRec, ptr %t101 - store %S.lsp.EnumRec %t102, ptr %a103 - %t104 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 2 - %t105 = load { ptr, i64, i64 }, ptr %t104 - %t106 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t105, ptr %a107 - store { ptr, i64, i64 } %t106, ptr %a108 - %t109 = call i32 @finch_str_eq(ptr %a107, ptr %a108) - %t110 = icmp ne i32 %t109, 0 - br i1 %t110, label %then10809, label %endif10811 -then10809: - %t111 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 1 - %t112 = load { ptr, i64, i64 }, ptr %t111 - %t113 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t114 = load i64, ptr %t113 - %t115 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 4 - %t116 = load i64, ptr %t115 - %t117 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 3 - %t118 = load i64, ptr %t117 - %t119 = getelementptr inbounds %S.lsp.EnumRec, ptr %a103, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load i64, ptr %t120 - %t122 = add i64 %t118, %t121 - %t123 = add i64 %t122, 1 - %t124 = call %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %t112, i64 10, i64 %t114, i64 %t116, i64 %t123) - call void @finch.json.Json.push(ptr %a4, %S.json.Json %t124) - store %S.json.Json %t124, ptr %a125 - call void @finch.drop.S_json_Json(ptr %a125) - br label %endif10811 -endif10811: - br label %each.step10807 -each.step10807: - %t126 = load i64, ptr %a95 - %t127 = add i64 %t126, 1 - store i64 %t127, ptr %a95 - br label %each.cond10805 -each.end10808: - %t128 = load %S.json.Json, ptr %a4 - ret %S.json.Json %t128 -} - -define internal %S.json.Json @finch.lsp.symbol({ ptr, i64, i64 } %p0, i64 %p1, i64 %p2, i64 %p3, i64 %p4) { -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 - %a10 = alloca %S.json.Json, align 16 - %a13 = alloca %S.json.Json, align 16 - %a15 = alloca %S.json.Json, align 16 - %a19 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a31 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store i64 %p2, ptr %a3 - 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.7120, i64 4, i64 0 }, %S.json.Json %t9) - store %S.json.Json %t9, ptr %a10 - call void @finch.drop.S_json_Json(ptr %a10) - %t11 = load i64, ptr %a2 - %t12 = call %S.json.Json @finch.lsp.num(i64 %t11) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7121, i64 4, i64 0 }, %S.json.Json %t12) - store %S.json.Json %t12, ptr %a13 - call void @finch.drop.S_json_Json(ptr %a13) - %t14 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t14, ptr %a15 - %t16 = load i64, ptr %a3 - %t17 = sub i64 %t16, 1 - %t18 = call %S.json.Json @finch.lsp.position(i64 %t17, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7122, i64 5, i64 0 }, %S.json.Json %t18) - store %S.json.Json %t18, ptr %a19 - call void @finch.drop.S_json_Json(ptr %a19) - %t20 = load i64, ptr %a5 - %t21 = call %S.json.Json @finch.lsp.position(i64 %t20, i64 0) - call void @finch.json.Json.set(ptr %a15, { ptr, i64, i64 } { ptr @.str.7123, i64 3, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = load %S.json.Json, ptr %a15 - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7124, i64 5, i64 0 }, %S.json.Json %t23) - %t24 = load i64, ptr %a3 - %t25 = sub i64 %t24, 1 - %t26 = load i64, ptr %a4 - %t27 = sub i64 %t26, 1 - %t28 = load i64, ptr %a4 - %t29 = sub i64 %t28, 1 - %t30 = call %S.json.Json @finch.lsp.range(i64 %t25, i64 %t27, i64 %t29) - call void @finch.json.Json.set(ptr %a7, { ptr, i64, i64 } { ptr @.str.7125, i64 14, i64 0 }, %S.json.Json %t30) - store %S.json.Json %t30, ptr %a31 - call void @finch.drop.S_json_Json(ptr %a31) - %t32 = load %S.json.Json, ptr %a7 - call void @finch.drop.S_json_Json(ptr %a15) - ret %S.json.Json %t32 -} - -define internal %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %p0, i64 %p1, { ptr, i64, i64 } %p2, { ptr, i64, i64 } %p3) { -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 - %a9 = alloca %S.json.Json, align 16 - %a12 = alloca %S.json.Json, align 16 - %a18 = alloca %S.json.Json, align 16 - %a23 = alloca %S.json.Json, align 16 - %a25 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store i64 %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.7126, i64 5, i64 0 }, %S.json.Json %t8) - store %S.json.Json %t8, ptr %a9 - call void @finch.drop.S_json_Json(ptr %a9) - %t10 = load i64, ptr %a2 - %t11 = call %S.json.Json @finch.lsp.num(i64 %t10) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7127, i64 4, i64 0 }, %S.json.Json %t11) - store %S.json.Json %t11, ptr %a12 - call void @finch.drop.S_json_Json(ptr %a12) - %t13 = getelementptr inbounds { ptr, i64, i64 }, ptr %a3, i32 0, i32 1 - %t14 = load i64, ptr %t13 - %t15 = icmp sgt i64 %t14, 0 - br i1 %t15, label %then10812, label %endif10814 -then10812: - %t16 = load { ptr, i64, i64 }, ptr %a3 - %t17 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t16) - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7128, i64 6, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - br label %endif10814 -endif10814: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a4, i32 0, i32 1 - %t20 = load i64, ptr %t19 - %t21 = icmp sgt i64 %t20, 0 - br i1 %t21, label %then10815, label %endif10817 -then10815: - %t22 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t22, ptr %a23 - %t24 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7130, i64 8, i64 0 }) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7129, i64 4, i64 0 }, %S.json.Json %t24) - store %S.json.Json %t24, ptr %a25 - call void @finch.drop.S_json_Json(ptr %a25) - %t26 = load { ptr, i64, i64 }, ptr %a4 - %t27 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t26) - call void @finch.json.Json.set(ptr %a23, { ptr, i64, i64 } { ptr @.str.7131, i64 5, i64 0 }, %S.json.Json %t27) - store %S.json.Json %t27, ptr %a28 - call void @finch.drop.S_json_Json(ptr %a28) - %t29 = load %S.json.Json, ptr %a23 - call void @finch.json.Json.set(ptr %a6, { ptr, i64, i64 } { ptr @.str.7132, i64 13, i64 0 }, %S.json.Json %t29) - call void @finch.drop.S_json_Json(ptr %a23) - br label %endif10817 -endif10817: - %t30 = load %S.json.Json, ptr %a6 - ret %S.json.Json %t30 -} - -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.from10818 -logic.from10818: - br i1 %t3, label %logic.rhs10819, label %logic.end10820 -logic.rhs10819: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 122 - br label %logic.rend10821 -logic.rend10821: - br label %logic.end10820 -logic.end10820: - %t6 = phi i1 [ false, %logic.from10818 ], [ %t5, %logic.rend10821 ] - br label %logic.from10822 -logic.from10822: - br i1 %t6, label %logic.end10824, label %logic.rhs10823 -logic.rhs10823: - %t7 = load i8, ptr %a1 - %t8 = icmp uge i8 %t7, 65 - br label %logic.from10825 -logic.from10825: - br i1 %t8, label %logic.rhs10826, label %logic.end10827 -logic.rhs10826: - %t9 = load i8, ptr %a1 - %t10 = icmp ule i8 %t9, 90 - br label %logic.rend10828 -logic.rend10828: - br label %logic.end10827 -logic.end10827: - %t11 = phi i1 [ false, %logic.from10825 ], [ %t10, %logic.rend10828 ] - br label %logic.rend10829 -logic.rend10829: - br label %logic.end10824 -logic.end10824: - %t12 = phi i1 [ true, %logic.from10822 ], [ %t11, %logic.rend10829 ] - br label %logic.from10830 -logic.from10830: - br i1 %t12, label %logic.end10832, label %logic.rhs10831 -logic.rhs10831: - %t13 = load i8, ptr %a1 - %t14 = icmp uge i8 %t13, 48 - br label %logic.from10833 -logic.from10833: - br i1 %t14, label %logic.rhs10834, label %logic.end10835 -logic.rhs10834: - %t15 = load i8, ptr %a1 - %t16 = icmp ule i8 %t15, 57 - br label %logic.rend10836 -logic.rend10836: - br label %logic.end10835 -logic.end10835: - %t17 = phi i1 [ false, %logic.from10833 ], [ %t16, %logic.rend10836 ] - br label %logic.rend10837 -logic.rend10837: - br label %logic.end10832 -logic.end10832: - %t18 = phi i1 [ true, %logic.from10830 ], [ %t17, %logic.rend10837 ] - br label %logic.from10838 -logic.from10838: - br i1 %t18, label %logic.end10840, label %logic.rhs10839 -logic.rhs10839: - %t19 = load i8, ptr %a1 - %t20 = icmp eq i8 %t19, 95 - br label %logic.rend10841 -logic.rend10841: - br label %logic.end10840 -logic.end10840: - %t21 = phi i1 [ true, %logic.from10838 ], [ %t20, %logic.rend10841 ] - 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 - %a30 = alloca %S.json.Json, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store i64 0, ptr %a3 - br label %each.cond10842 -each.cond10842: - %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.body10843, label %each.end10845 -each.body10843: - %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.7134, 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 %then10846, label %endif10848 -then10846: - store i64 5, ptr %a12 - br label %endif10848 -endif10848: - %t20 = load ptr, ptr %a1 - %t21 = icmp eq ptr %t20, null - br i1 %t21, label %panic10849, label %ok10850 -panic10849: - call void @finch_panic(ptr @.str.7135, i64 497, ptr @.str.7136) - unreachable -ok10850: - %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) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - br label %each.step10844 -each.step10844: - %t31 = load i64, ptr %a3 - %t32 = add i64 %t31, 1 - store i64 %t32, ptr %a3 - br label %each.cond10842 -each.end10845: - 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 - %a47 = alloca %S.lsp.VarRec, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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.cond10851 -each.cond10851: - %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.body10852, label %each.end10854 -each.body10852: - %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.from10855 -logic.from10855: - br i1 %t22, label %logic.rhs10856, label %logic.end10857 -logic.rhs10856: - %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.rend10858 -logic.rend10858: - br label %logic.end10857 -logic.end10857: - %t27 = phi i1 [ false, %logic.from10855 ], [ %t26, %logic.rend10858 ] - br label %logic.from10859 -logic.from10859: - br i1 %t27, label %logic.rhs10860, label %logic.end10861 -logic.rhs10860: - %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.rend10862 -logic.rend10862: - br label %logic.end10861 -logic.end10861: - %t33 = phi i1 [ false, %logic.from10859 ], [ %t32, %logic.rend10862 ] - br label %logic.from10863 -logic.from10863: - br i1 %t33, label %logic.rhs10864, label %logic.end10865 -logic.rhs10864: - %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.rend10866 -logic.rend10866: - br label %logic.end10865 -logic.end10865: - %t41 = phi i1 [ false, %logic.from10863 ], [ %t40, %logic.rend10866 ] - br i1 %t41, label %then10867, label %endif10869 -then10867: - %t42 = load %S.lsp.VarRec, ptr %a15 - store %S.lsp.VarRec %t42, ptr %a43 - call void @finch.copy.S_lsp_VarRec(ptr %a44, ptr %a43) - %t45 = load %S.lsp.VarRec, ptr %a44 - %t46 = load %S.lsp.VarRec, ptr %a5 - store %S.lsp.VarRec %t45, ptr %a5 - store %S.lsp.VarRec %t46, ptr %a47 - call void @finch.drop.S_lsp_VarRec(ptr %a47) - br label %endif10869 -endif10869: - br label %each.step10853 -each.step10853: - %t48 = load i64, ptr %a7 - %t49 = add i64 %t48, 1 - store i64 %t49, ptr %a7 - br label %each.cond10851 -each.end10854: - %t50 = load %S.lsp.VarRec, ptr %a5 - ret %S.lsp.VarRec %t50 -} - -define internal void @finch.drop.S_lsp_Names(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Names, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -define internal %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 - %a118 = alloca { ptr, i64, i64 }, align 16 - %a122 = alloca i64, align 16 - %a125 = alloca i64, align 16 - %a130 = alloca { ptr, i64, i64 }, align 16 - %a131 = alloca { ptr, i64, i64 }, align 16 - %a138 = alloca i64, align 16 - %a146 = alloca %S.lsp.FnRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a151 = alloca { ptr, i64, i64 }, align 16 - %a164 = alloca %S.json.Json, align 16 - %a168 = alloca i64, align 16 - %a176 = alloca %S.lsp.StructRec, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a189 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca %S.json.Json, align 16 - %a198 = alloca i64, align 16 - %a206 = alloca %S.lsp.EnumRec, align 16 - %a210 = alloca { ptr, i64, i64 }, align 16 - %a211 = alloca { ptr, i64, i64 }, align 16 - %a218 = alloca { ptr, i64, i64 }, align 16 - %a219 = alloca { ptr, i64, i64 }, align 16 - %a220 = alloca { ptr, i64, i64 }, align 16 - %a223 = alloca { ptr, i64, i64 }, align 16 - %a224 = alloca %S.json.Json, align 16 - %a230 = alloca i64, align 16 - %a238 = alloca %S.lsp.EnumRec, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca %S.lsp.VarRec, align 16 - %a257 = alloca { ptr, i64, i64 }, align 16 - %a261 = alloca i64, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a274 = alloca { ptr, i64, i64 }, align 16 - %a275 = alloca { ptr, i64, i64 }, align 16 - %a278 = alloca { ptr, i64, i64 }, align 16 - %a279 = alloca { ptr, i64, i64 }, align 16 - %a280 = alloca { ptr, i64, i64 }, align 16 - %a281 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a285 = alloca %S.json.Json, align 16 - %a298 = alloca { ptr, i64, i64 }, align 16 - %a299 = alloca { ptr, i64, i64 }, align 16 - %a301 = alloca %S.lsp.VarRec, align 16 - %a302 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca { ptr, i64, i64 }, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a312 = alloca { ptr, i64, i64 }, align 16 - %a313 = alloca { ptr, i64, i64 }, align 16 - %a318 = alloca { ptr, i64, i64 }, align 16 - %a321 = alloca { ptr, i64, i64 }, align 16 - %a322 = alloca { ptr, i64, i64 }, align 16 - %a327 = alloca { ptr, i64, i64 }, align 16 - %a329 = alloca { ptr, i64, i64 }, align 16 - %a330 = alloca { ptr, i64, i64 }, align 16 - %a331 = alloca { ptr, i64, i64 }, align 16 - %a335 = alloca { ptr, i64, i64 }, align 16 - %a336 = alloca { ptr, i64, i64 }, align 16 - %a337 = alloca { ptr, i64, i64 }, align 16 - %a342 = alloca { ptr, i64, i64 }, align 16 - %a343 = alloca { ptr, i64, i64 }, align 16 - %a349 = alloca { ptr, i64, i64 }, align 16 - %a351 = alloca { ptr, i64, i64 }, align 16 - %a352 = alloca { ptr, i64, i64 }, align 16 - %a353 = alloca { ptr, i64, i64 }, align 16 - %a357 = alloca { ptr, i64, i64 }, align 16 - %a359 = alloca { ptr, i64, i64 }, align 16 - %a360 = alloca { ptr, i64, i64 }, align 16 - %a364 = alloca { ptr, i64, i64 }, align 16 - %a366 = alloca { ptr, i64, i64 }, align 16 - %a367 = alloca { ptr, i64, i64 }, align 16 - %a368 = alloca { ptr, i64, i64 }, align 16 - %a372 = alloca { ptr, i64, i64 }, align 16 - %a374 = alloca { ptr, i64, i64 }, align 16 - %a375 = alloca { ptr, i64, i64 }, align 16 - %a377 = alloca { ptr, i64, i64 }, align 16 - %a379 = alloca i64, align 16 - %a387 = alloca %S.lsp.StructRec, align 16 - %a391 = alloca { ptr, i64, i64 }, align 16 - %a392 = alloca { ptr, i64, i64 }, align 16 - %a398 = alloca i64, align 16 - %a418 = alloca %S.json.Json, align 16 - %a424 = alloca i64, align 16 - %a432 = alloca %S.lsp.FnRec, align 16 - %a436 = alloca { ptr, i64, i64 }, align 16 - %a437 = alloca { ptr, i64, i64 }, align 16 - %a445 = alloca %S.json.Json, align 16 - %a450 = alloca %S.lsp.Names, align 16 - %a452 = alloca i64, align 16 - %a460 = alloca %S.lsp.VarRec, align 16 - %a474 = alloca { ptr, i64, i64 }, align 16 - %a475 = alloca { ptr, i64, i64 }, align 16 - %a488 = alloca %S.json.Json, align 16 - %a492 = alloca i64, align 16 - %a500 = alloca %S.lsp.FnRec, align 16 - %a507 = alloca { ptr, i64, i64 }, align 16 - %a508 = alloca { ptr, i64, i64 }, align 16 - %a521 = alloca %S.json.Json, align 16 - %a525 = alloca i64, align 16 - %a533 = alloca %S.lsp.StructRec, align 16 - %a536 = alloca { ptr, i64, i64 }, align 16 - %a537 = alloca { ptr, i64, i64 }, align 16 - %a548 = alloca { ptr, i64, i64 }, align 16 - %a549 = alloca { ptr, i64, i64 }, align 16 - %a550 = alloca { ptr, i64, i64 }, align 16 - %a553 = alloca { ptr, i64, i64 }, align 16 - %a554 = alloca %S.json.Json, align 16 - %a558 = alloca i64, align 16 - %a566 = alloca %S.lsp.EnumRec, align 16 - %a569 = alloca { ptr, i64, i64 }, align 16 - %a570 = alloca { ptr, i64, i64 }, align 16 - %a581 = alloca { ptr, i64, i64 }, align 16 - %a582 = alloca { ptr, i64, i64 }, align 16 - %a583 = alloca { ptr, i64, i64 }, align 16 - %a586 = alloca { ptr, i64, i64 }, align 16 - %a587 = alloca %S.json.Json, align 16 - %a591 = alloca i64, align 16 - %a599 = alloca { ptr, i64, i64 }, align 16 - %a604 = alloca %S.json.Json, align 16 - %a608 = alloca { ptr, i64, i64 }, align 16 - %a609 = alloca i64, align 16 - %a617 = alloca %S.docs.Doc, align 16 - %a628 = alloca %S.json.Json, align 16 - %a632 = alloca { ptr, i64, i64 }, align 16 - %a633 = alloca i64, align 16 - %a641 = alloca { ptr, i64, i64 }, align 16 - %a646 = alloca %S.json.Json, align 16 - %a650 = alloca { ptr, i64, i64 }, align 16 - %a651 = alloca i64, align 16 - %a659 = alloca { ptr, i64, i64 }, align 16 - %a664 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then10870, label %endif10872 -then10870: - %t19 = getelementptr inbounds { ptr, i64, i64 }, ptr %a11, i32 0, i32 1 - %t20 = load i64, ptr %t19 - store i64 %t20, ptr %a14 - br label %endif10872 -endif10872: - %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.7137, 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.cond10873 -while.cond10873: - %t30 = load i64, ptr %a29 - %t31 = icmp sgt i64 %t30, 0 - br label %logic.from10876 -logic.from10876: - br i1 %t31, label %logic.rhs10877, label %logic.end10878 -logic.rhs10877: - %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 %range10879, label %inrange10880 -range10879: - call void @finch_panic_index(ptr @.str.7138, i64 522, i64 %t33, i64 %t35) - unreachable -inrange10880: - %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.rend10881 -logic.rend10881: - br label %logic.end10878 -logic.end10878: - %t41 = phi i1 [ false, %logic.from10876 ], [ %t40, %logic.rend10881 ] - br i1 %t41, label %while.body10874, label %while.end10875 -while.body10874: - %t42 = load i64, ptr %a29 - %t43 = sub i64 %t42, 1 - store i64 %t43, ptr %a29 - br label %while.cond10873 -while.end10875: - %t44 = load i64, ptr %a29 - %t45 = icmp sgt i64 %t44, 0 - br label %logic.from10882 -logic.from10882: - br i1 %t45, label %logic.rhs10883, label %logic.end10884 -logic.rhs10883: - %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 %range10885, label %inrange10886 -range10885: - call void @finch_panic_index(ptr @.str.7139, i64 525, i64 %t47, i64 %t49) - unreachable -inrange10886: - %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.rend10887 -logic.rend10887: - br label %logic.end10884 -logic.end10884: - %t55 = phi i1 [ false, %logic.from10882 ], [ %t54, %logic.rend10887 ] - store i1 %t55, ptr %a56 - %t57 = load i1, ptr %a56 - br i1 %t57, label %then10888, label %endif10890 -then10888: - %t58 = load i64, ptr %a29 - %t59 = sub i64 %t58, 1 - store i64 %t59, ptr %a60 - br label %while.cond10891 -while.cond10891: - %t61 = load i64, ptr %a60 - %t62 = icmp sgt i64 %t61, 0 - br label %logic.from10894 -logic.from10894: - br i1 %t62, label %logic.rhs10895, label %logic.end10896 -logic.rhs10895: - %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 %range10897, label %inrange10898 -range10897: - call void @finch_panic_index(ptr @.str.7140, i64 528, i64 %t64, i64 %t66) - unreachable -inrange10898: - %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.from10899 -logic.from10899: - br i1 %t71, label %logic.end10901, label %logic.rhs10900 -logic.rhs10900: - %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 %range10902, label %inrange10903 -range10902: - call void @finch_panic_index(ptr @.str.7141, i64 528, i64 %t73, i64 %t75) - unreachable -inrange10903: - %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.rend10904 -logic.rend10904: - br label %logic.end10901 -logic.end10901: - %t81 = phi i1 [ true, %logic.from10899 ], [ %t80, %logic.rend10904 ] - br label %logic.from10905 -logic.from10905: - br i1 %t81, label %logic.end10907, label %logic.rhs10906 -logic.rhs10906: - %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 %range10908, label %inrange10909 -range10908: - call void @finch_panic_index(ptr @.str.7142, i64 528, i64 %t83, i64 %t85) - unreachable -inrange10909: - %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.rend10910 -logic.rend10910: - br label %logic.end10907 -logic.end10907: - %t91 = phi i1 [ true, %logic.from10905 ], [ %t90, %logic.rend10910 ] - br label %logic.rend10911 -logic.rend10911: - br label %logic.end10896 -logic.end10896: - %t92 = phi i1 [ false, %logic.from10894 ], [ %t91, %logic.rend10911 ] - br i1 %t92, label %while.body10892, label %while.end10893 -while.body10892: - %t93 = load i64, ptr %a60 - %t94 = sub i64 %t93, 1 - store i64 %t94, ptr %a60 - br label %while.cond10891 -while.end10893: - %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.7143, 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.7145, 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 %then10912, label %endif10914 -then10912: - %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.7146, i64 535) - %t116 = load { ptr, i64, i64 }, ptr %a114 - %t117 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t116, ptr %a102 - store { ptr, i64, i64 } %t117, ptr %a118 - call void @finch_str_drop(ptr %a118) - store i1 true, ptr %a103 - br label %endif10914 -endif10914: - %t119 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a102 - store i64 -1, ptr %a122 - %t123 = load i64, ptr %t120 - %t124 = load ptr, ptr %t119 - store i64 0, ptr %a125 - br label %find.cond10915 -find.cond10915: - %t126 = load i64, ptr %a125 - %t127 = icmp slt i64 %t126, %t123 - br i1 %t127, label %find.body10916, label %find.end10919 -find.body10916: - %t128 = getelementptr inbounds { ptr, i64, i64 }, ptr %t124, i64 %t126 - %t129 = load { ptr, i64, i64 }, ptr %t128 - store { ptr, i64, i64 } %t129, ptr %a130 - store { ptr, i64, i64 } %t121, ptr %a131 - %t132 = call i32 @finch_str_eq(ptr %a130, ptr %a131) - %t133 = icmp ne i32 %t132, 0 - br i1 %t133, label %find.hit10917, label %find.next10918 -find.hit10917: - store i64 %t126, ptr %a122 - br label %find.end10919 -find.next10918: - %t134 = add i64 %t126, 1 - store i64 %t134, ptr %a125 - br label %find.cond10915 -find.end10919: - %t135 = load i64, ptr %a122 - %t136 = icmp sge i64 %t135, 0 - br i1 %t136, label %then10920, label %endif10922 -then10920: - %t137 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a138 - br label %each.cond10923 -each.cond10923: - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t137, i32 0, i32 1 - %t140 = load i64, ptr %t139 - %t141 = load i64, ptr %a138 - %t142 = icmp slt i64 %t141, %t140 - br i1 %t142, label %each.body10924, label %each.end10926 -each.body10924: - %t143 = load ptr, ptr %t137 - %t144 = getelementptr inbounds %S.lsp.FnRec, ptr %t143, i64 %t141 - %t145 = load %S.lsp.FnRec, ptr %t144 - store %S.lsp.FnRec %t145, ptr %a146 - %t147 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 0 - %t148 = load { ptr, i64, i64 }, ptr %t147 - %t149 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t148, ptr %a150 - store { ptr, i64, i64 } %t149, ptr %a151 - %t152 = call i32 @finch_str_eq(ptr %a150, ptr %a151) - %t153 = icmp ne i32 %t152, 0 - br label %logic.from10927 -logic.from10927: - br i1 %t153, label %logic.rhs10928, label %logic.end10929 -logic.rhs10928: - %t154 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 2 - %t155 = getelementptr inbounds { ptr, i64, i64 }, ptr %t154, i32 0, i32 1 - %t156 = load i64, ptr %t155 - %t157 = icmp eq i64 %t156, 0 - br label %logic.rend10930 -logic.rend10930: - br label %logic.end10929 -logic.end10929: - %t158 = phi i1 [ false, %logic.from10927 ], [ %t157, %logic.rend10930 ] - br i1 %t158, label %then10931, label %endif10933 -then10931: - %t159 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 1 - %t160 = load { ptr, i64, i64 }, ptr %t159 - %t161 = getelementptr inbounds %S.lsp.FnRec, ptr %a146, i32 0, i32 7 - %t162 = load { ptr, i64, i64 }, ptr %t161 - %t163 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t160, i64 3, { ptr, i64, i64 } %t162, { ptr, i64, i64 } { ptr @.str.7147, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t163) - store %S.json.Json %t163, ptr %a164 - call void @finch.drop.S_json_Json(ptr %a164) - br label %endif10933 -endif10933: - br label %each.step10925 -each.step10925: - %t165 = load i64, ptr %a138 - %t166 = add i64 %t165, 1 - store i64 %t166, ptr %a138 - br label %each.cond10923 -each.end10926: - %t167 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a168 - br label %each.cond10934 -each.cond10934: - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t167, i32 0, i32 1 - %t170 = load i64, ptr %t169 - %t171 = load i64, ptr %a168 - %t172 = icmp slt i64 %t171, %t170 - br i1 %t172, label %each.body10935, label %each.end10937 -each.body10935: - %t173 = load ptr, ptr %t167 - %t174 = getelementptr inbounds %S.lsp.StructRec, ptr %t173, i64 %t171 - %t175 = load %S.lsp.StructRec, ptr %t174 - store %S.lsp.StructRec %t175, ptr %a176 - %t177 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 0 - %t178 = load { ptr, i64, i64 }, ptr %t177 - %t179 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t178, ptr %a180 - store { ptr, i64, i64 } %t179, ptr %a181 - %t182 = call i32 @finch_str_eq(ptr %a180, ptr %a181) - %t183 = icmp ne i32 %t182, 0 - br i1 %t183, label %then10938, label %endif10940 -then10938: - %t184 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %t184 - %t186 = getelementptr inbounds %S.lsp.StructRec, ptr %a176, i32 0, i32 1 - %t187 = load { ptr, i64, i64 }, ptr %t186 - store { ptr, i64, i64 } { ptr @.str.7148, i64 7, i64 0 }, ptr %a189 - store { ptr, i64, i64 } %t187, ptr %a190 - call void @finch_str_concat(ptr %a188, ptr %a189, ptr %a190) - %t191 = load { ptr, i64, i64 }, ptr %a188 - %t192 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t185, i64 22, { ptr, i64, i64 } %t191, { ptr, i64, i64 } { ptr @.str.7149, i64 0, i64 0 }) - store { ptr, i64, i64 } %t191, ptr %a193 - call void @finch_str_drop(ptr %a193) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t192) - store %S.json.Json %t192, ptr %a194 - call void @finch.drop.S_json_Json(ptr %a194) - br label %endif10940 -endif10940: - br label %each.step10936 -each.step10936: - %t195 = load i64, ptr %a168 - %t196 = add i64 %t195, 1 - store i64 %t196, ptr %a168 - br label %each.cond10934 -each.end10937: - %t197 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a198 - br label %each.cond10941 -each.cond10941: - %t199 = getelementptr inbounds { ptr, i64, i64 }, ptr %t197, i32 0, i32 1 - %t200 = load i64, ptr %t199 - %t201 = load i64, ptr %a198 - %t202 = icmp slt i64 %t201, %t200 - br i1 %t202, label %each.body10942, label %each.end10944 -each.body10942: - %t203 = load ptr, ptr %t197 - %t204 = getelementptr inbounds %S.lsp.EnumRec, ptr %t203, i64 %t201 - %t205 = load %S.lsp.EnumRec, ptr %t204 - store %S.lsp.EnumRec %t205, ptr %a206 - %t207 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 0 - %t208 = load { ptr, i64, i64 }, ptr %t207 - %t209 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t208, ptr %a210 - store { ptr, i64, i64 } %t209, ptr %a211 - %t212 = call i32 @finch_str_eq(ptr %a210, ptr %a211) - %t213 = icmp ne i32 %t212, 0 - br i1 %t213, label %then10945, label %endif10947 -then10945: - %t214 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t215 = load { ptr, i64, i64 }, ptr %t214 - %t216 = getelementptr inbounds %S.lsp.EnumRec, ptr %a206, i32 0, i32 1 - %t217 = load { ptr, i64, i64 }, ptr %t216 - store { ptr, i64, i64 } { ptr @.str.7150, i64 5, i64 0 }, ptr %a219 - store { ptr, i64, i64 } %t217, ptr %a220 - call void @finch_str_concat(ptr %a218, ptr %a219, ptr %a220) - %t221 = load { ptr, i64, i64 }, ptr %a218 - %t222 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t215, i64 13, { ptr, i64, i64 } %t221, { ptr, i64, i64 } { ptr @.str.7151, i64 0, i64 0 }) - store { ptr, i64, i64 } %t221, ptr %a223 - call void @finch_str_drop(ptr %a223) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t222) - store %S.json.Json %t222, ptr %a224 - call void @finch.drop.S_json_Json(ptr %a224) - br label %endif10947 -endif10947: - br label %each.step10943 -each.step10943: - %t225 = load i64, ptr %a198 - %t226 = add i64 %t225, 1 - store i64 %t226, ptr %a198 - br label %each.cond10941 -each.end10944: - %t227 = load %S.json.Json, ptr %a7 - %t228 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t227) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t228 -endif10922: - %t229 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a230 - br label %each.cond10948 -each.cond10948: - %t231 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i32 0, i32 1 - %t232 = load i64, ptr %t231 - %t233 = load i64, ptr %a230 - %t234 = icmp slt i64 %t233, %t232 - br i1 %t234, label %each.body10949, label %each.end10951 -each.body10949: - %t235 = load ptr, ptr %t229 - %t236 = getelementptr inbounds %S.lsp.EnumRec, ptr %t235, i64 %t233 - %t237 = load %S.lsp.EnumRec, ptr %t236 - store %S.lsp.EnumRec %t237, ptr %a238 - %t239 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t240 = load { ptr, i64, i64 }, ptr %t239 - %t241 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t240, ptr %a242 - store { ptr, i64, i64 } %t241, ptr %a243 - %t244 = call i32 @finch_str_eq(ptr %a242, ptr %a243) - %t245 = icmp ne i32 %t244, 0 - br label %logic.from10952 -logic.from10952: - br i1 %t245, label %logic.rhs10953, label %logic.end10954 -logic.rhs10953: - %t246 = load %S.lsp.Analysis, ptr %a1 - %t247 = load { ptr, i64, i64 }, ptr %a3 - %t248 = load { ptr, i64, i64 }, ptr %a102 - %t249 = load i64, ptr %a4 - %t250 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t246, { ptr, i64, i64 } %t247, { ptr, i64, i64 } %t248, i64 %t249) - %t251 = extractvalue %S.lsp.VarRec %t250, 0 - store { ptr, i64, i64 } %t251, ptr %a252 - call void @finch_str_copy(ptr %a253, ptr %a252) - %t254 = load { ptr, i64, i64 }, ptr %a253 - store %S.lsp.VarRec %t250, ptr %a255 - call void @finch.drop.S_lsp_VarRec(ptr %a255) - %t256 = extractvalue { ptr, i64, i64 } %t254, 1 - store { ptr, i64, i64 } %t254, ptr %a257 - call void @finch_str_drop(ptr %a257) - %t258 = icmp eq i64 %t256, 0 - br label %logic.rend10955 -logic.rend10955: - br label %logic.end10954 -logic.end10954: - %t259 = phi i1 [ false, %logic.from10952 ], [ %t258, %logic.rend10955 ] - br i1 %t259, label %then10956, label %endif10958 -then10956: - %t260 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 5 - store i64 0, ptr %a261 - br label %each.cond10959 -each.cond10959: - %t262 = getelementptr inbounds { ptr, i64, i64 }, ptr %t260, i32 0, i32 1 - %t263 = load i64, ptr %t262 - %t264 = load i64, ptr %a261 - %t265 = icmp slt i64 %t264, %t263 - br i1 %t265, label %each.body10960, label %each.end10962 -each.body10960: - %t266 = load ptr, ptr %t260 - %t267 = getelementptr inbounds { ptr, i64, i64 }, ptr %t266, i64 %t264 - %t268 = load { ptr, i64, i64 }, ptr %t267 - store { ptr, i64, i64 } %t268, ptr %a269 - %t270 = load { ptr, i64, i64 }, ptr %a269 - %t271 = getelementptr inbounds %S.lsp.EnumRec, ptr %a238, i32 0, i32 1 - %t272 = load { ptr, i64, i64 }, ptr %t271 - store { ptr, i64, i64 } %t272, ptr %a274 - store { ptr, i64, i64 } { ptr @.str.7152, i64 1, i64 0 }, ptr %a275 - call void @finch_str_concat(ptr %a273, ptr %a274, ptr %a275) - %t276 = load { ptr, i64, i64 }, ptr %a273 - %t277 = load { ptr, i64, i64 }, ptr %a269 - store { ptr, i64, i64 } %t276, ptr %a279 - store { ptr, i64, i64 } %t277, ptr %a280 - call void @finch_str_concat(ptr %a278, ptr %a279, ptr %a280) - store { ptr, i64, i64 } %t276, ptr %a281 - call void @finch_str_drop(ptr %a281) - %t282 = load { ptr, i64, i64 }, ptr %a278 - %t283 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t270, i64 20, { ptr, i64, i64 } %t282, { ptr, i64, i64 } { ptr @.str.7153, i64 0, i64 0 }) - store { ptr, i64, i64 } %t282, ptr %a284 - call void @finch_str_drop(ptr %a284) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t283) - store %S.json.Json %t283, ptr %a285 - call void @finch.drop.S_json_Json(ptr %a285) - br label %each.step10961 -each.step10961: - %t286 = load i64, ptr %a261 - %t287 = add i64 %t286, 1 - store i64 %t287, ptr %a261 - br label %each.cond10959 -each.end10962: - %t288 = load %S.json.Json, ptr %a7 - %t289 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t288) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t289 -endif10958: - br label %each.step10950 -each.step10950: - %t290 = load i64, ptr %a230 - %t291 = add i64 %t290, 1 - store i64 %t291, ptr %a230 - br label %each.cond10948 -each.end10951: - %t292 = load %S.lsp.Analysis, ptr %a1 - %t293 = load { ptr, i64, i64 }, ptr %a3 - %t294 = load { ptr, i64, i64 }, ptr %a102 - %t295 = load i64, ptr %a4 - %t296 = call %S.lsp.VarRec @finch.lsp.varNamed(%S.lsp.Analysis %t292, { ptr, i64, i64 } %t293, { ptr, i64, i64 } %t294, i64 %t295) - %t297 = extractvalue %S.lsp.VarRec %t296, 1 - store { ptr, i64, i64 } %t297, ptr %a298 - call void @finch_str_copy(ptr %a299, ptr %a298) - %t300 = load { ptr, i64, i64 }, ptr %a299 - store %S.lsp.VarRec %t296, ptr %a301 - call void @finch.drop.S_lsp_VarRec(ptr %a301) - store { ptr, i64, i64 } %t300, ptr %a302 - %t303 = load i1, ptr %a103 - br label %logic.from10963 -logic.from10963: - br i1 %t303, label %logic.rhs10964, label %logic.end10965 -logic.rhs10964: - %t304 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t304, ptr %a305 - store { ptr, i64, i64 } { ptr @.str.7155, i64 2, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_starts(ptr %a305, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br label %logic.rend10966 -logic.rend10966: - br label %logic.end10965 -logic.end10965: - %t310 = phi i1 [ false, %logic.from10963 ], [ %t309, %logic.rend10966 ] - br i1 %t310, label %then10967, label %else10968 -then10967: - %t311 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t311, ptr %a312 - %t314 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t315 = load i64, ptr %t314 - call void @finch_str_sub(ptr %a313, ptr %a312, i64 2, i64 %t315, ptr @.str.7156, i64 569) - %t316 = load { ptr, i64, i64 }, ptr %a313 - %t317 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t316, ptr %a302 - store { ptr, i64, i64 } %t317, ptr %a318 - call void @finch_str_drop(ptr %a318) - br label %endif10969 -else10968: - %t319 = load i1, ptr %a103 - br label %logic.from10970 -logic.from10970: - br i1 %t319, label %logic.rhs10971, label %logic.end10972 -logic.rhs10971: - %t320 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t320, ptr %a321 - store { ptr, i64, i64 } { ptr @.str.7157, i64 3, i64 0 }, ptr %a322 - %t323 = call i32 @finch_str_eq(ptr %a321, ptr %a322) - %t324 = icmp ne i32 %t323, 0 - br label %logic.rend10973 -logic.rend10973: - br label %logic.end10972 -logic.end10972: - %t325 = phi i1 [ false, %logic.from10970 ], [ %t324, %logic.rend10973 ] - br i1 %t325, label %then10974, label %endif10976 -then10974: - %t326 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } { ptr @.str.7158, i64 4, i64 0 }, ptr %a302 - store { ptr, i64, i64 } %t326, ptr %a327 - call void @finch_str_drop(ptr %a327) - br label %endif10976 -endif10976: - br label %endif10969 -endif10969: - %t328 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t328, ptr %a329 - store { ptr, i64, i64 } { ptr @.str.7160, i64 4, i64 0 }, ptr %a331 - %t332 = call i32 @finch_str_starts(ptr %a329, ptr %a331) - %t333 = icmp ne i32 %t332, 0 - br label %logic.from10977 -logic.from10977: - br i1 %t333, label %logic.rhs10978, label %logic.end10979 -logic.rhs10978: - %t334 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t334, ptr %a335 - store { ptr, i64, i64 } { ptr @.str.7162, i64 1, i64 0 }, ptr %a337 - %t338 = call i32 @finch_str_ends(ptr %a335, ptr %a337) - %t339 = icmp ne i32 %t338, 0 - br label %logic.rend10980 -logic.rend10980: - br label %logic.end10979 -logic.end10979: - %t340 = phi i1 [ false, %logic.from10977 ], [ %t339, %logic.rend10980 ] - br i1 %t340, label %then10981, label %endif10983 -then10981: - %t341 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t341, ptr %a342 - %t344 = getelementptr inbounds { ptr, i64, i64 }, ptr %a302, i32 0, i32 1 - %t345 = load i64, ptr %t344 - %t346 = sub i64 %t345, 1 - call void @finch_str_sub(ptr %a343, ptr %a342, i64 4, i64 %t346, ptr @.str.7163, i64 574) - %t347 = load { ptr, i64, i64 }, ptr %a343 - %t348 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t347, ptr %a302 - store { ptr, i64, i64 } %t348, ptr %a349 - call void @finch_str_drop(ptr %a349) - br label %endif10983 -endif10983: - %t350 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t350, ptr %a351 - store { ptr, i64, i64 } { ptr @.str.7165, i64 2, i64 0 }, ptr %a353 - %t354 = call i32 @finch_str_starts(ptr %a351, ptr %a353) - %t355 = icmp ne i32 %t354, 0 - br i1 %t355, label %then10984, label %else10985 -then10984: - %t356 = call { ptr, i64, i64 } @finch.docs.arrayMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t356) - store { ptr, i64, i64 } %t356, ptr %a357 - call void @finch.drop.arr_S_docs_Doc(ptr %a357) - br label %endif10986 -else10985: - %t358 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t358, ptr %a359 - store { ptr, i64, i64 } { ptr @.str.7166, i64 3, i64 0 }, ptr %a360 - %t361 = call i32 @finch_str_eq(ptr %a359, ptr %a360) - %t362 = icmp ne i32 %t361, 0 - br i1 %t362, label %then10987, label %else10988 -then10987: - %t363 = call { ptr, i64, i64 } @finch.docs.strMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t363) - store { ptr, i64, i64 } %t363, ptr %a364 - call void @finch.drop.arr_S_docs_Doc(ptr %a364) - br label %endif10989 -else10988: - %t365 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t365, ptr %a366 - store { ptr, i64, i64 } { ptr @.str.7168, i64 4, i64 0 }, ptr %a368 - %t369 = call i32 @finch_str_starts(ptr %a366, ptr %a368) - %t370 = icmp ne i32 %t369, 0 - br i1 %t370, label %then10990, label %else10991 -then10990: - %t371 = call { ptr, i64, i64 } @finch.docs.mapMethods() - call void @finch.lsp.methodItems(ptr %a7, { ptr, i64, i64 } %t371) - store { ptr, i64, i64 } %t371, ptr %a372 - call void @finch.drop.arr_S_docs_Doc(ptr %a372) - br label %endif10992 -else10991: - %t373 = load { ptr, i64, i64 }, ptr %a302 - store { ptr, i64, i64 } %t373, ptr %a374 - call void @finch_str_copy(ptr %a375, ptr %a374) - %t376 = load { ptr, i64, i64 }, ptr %a375 - store { ptr, i64, i64 } %t376, ptr %a377 - %t378 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a379 - br label %each.cond10993 -each.cond10993: - %t380 = getelementptr inbounds { ptr, i64, i64 }, ptr %t378, i32 0, i32 1 - %t381 = load i64, ptr %t380 - %t382 = load i64, ptr %a379 - %t383 = icmp slt i64 %t382, %t381 - br i1 %t383, label %each.body10994, label %each.end10996 -each.body10994: - %t384 = load ptr, ptr %t378 - %t385 = getelementptr inbounds %S.lsp.StructRec, ptr %t384, i64 %t382 - %t386 = load %S.lsp.StructRec, ptr %t385 - store %S.lsp.StructRec %t386, ptr %a387 - %t388 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 1 - %t389 = load { ptr, i64, i64 }, ptr %t388 - %t390 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t389, ptr %a391 - store { ptr, i64, i64 } %t390, ptr %a392 - %t393 = call i32 @finch_str_eq(ptr %a391, ptr %a392) - %t394 = icmp ne i32 %t393, 0 - br i1 %t394, label %then10997, label %endif10999 -then10997: - %t395 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t396 = getelementptr inbounds { ptr, i64, i64 }, ptr %t395, i32 0, i32 1 - %t397 = load i64, ptr %t396 - store i64 0, ptr %a398 - br label %for.cond11000 -for.cond11000: - %t399 = load i64, ptr %a398 - %t400 = icmp slt i64 %t399, %t397 - br i1 %t400, label %for.body11001, label %for.end11003 -for.body11001: - %t401 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 5 - %t402 = load i64, ptr %a398 - %t403 = load { ptr, i64, i64 }, ptr %t401 - %t404 = extractvalue { ptr, i64, i64 } %t403, 1 - %t405 = icmp uge i64 %t402, %t404 - br i1 %t405, label %range11004, label %inrange11005 -range11004: - call void @finch_panic_index(ptr @.str.7169, i64 587, i64 %t402, i64 %t404) - unreachable -inrange11005: - %t406 = extractvalue { ptr, i64, i64 } %t403, 0 - %t407 = getelementptr inbounds { ptr, i64, i64 }, ptr %t406, i64 %t402 - %t408 = load { ptr, i64, i64 }, ptr %t407 - %t409 = getelementptr inbounds %S.lsp.StructRec, ptr %a387, i32 0, i32 6 - %t410 = load i64, ptr %a398 - %t411 = load { ptr, i64, i64 }, ptr %t409 - %t412 = extractvalue { ptr, i64, i64 } %t411, 1 - %t413 = icmp uge i64 %t410, %t412 - br i1 %t413, label %range11006, label %inrange11007 -range11006: - call void @finch_panic_index(ptr @.str.7170, i64 587, i64 %t410, i64 %t412) - unreachable -inrange11007: - %t414 = extractvalue { ptr, i64, i64 } %t411, 0 - %t415 = getelementptr inbounds { ptr, i64, i64 }, ptr %t414, i64 %t410 - %t416 = load { ptr, i64, i64 }, ptr %t415 - %t417 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t408, i64 5, { ptr, i64, i64 } %t416, { ptr, i64, i64 } { ptr @.str.7171, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t417) - store %S.json.Json %t417, ptr %a418 - call void @finch.drop.S_json_Json(ptr %a418) - br label %for.step11002 -for.step11002: - %t419 = load i64, ptr %a398 - %t420 = add i64 %t419, 1 - store i64 %t420, ptr %a398 - br label %for.cond11000 -for.end11003: - br label %endif10999 -endif10999: - br label %each.step10995 -each.step10995: - %t421 = load i64, ptr %a379 - %t422 = add i64 %t421, 1 - store i64 %t422, ptr %a379 - br label %each.cond10993 -each.end10996: - %t423 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a424 - br label %each.cond11008 -each.cond11008: - %t425 = getelementptr inbounds { ptr, i64, i64 }, ptr %t423, i32 0, i32 1 - %t426 = load i64, ptr %t425 - %t427 = load i64, ptr %a424 - %t428 = icmp slt i64 %t427, %t426 - br i1 %t428, label %each.body11009, label %each.end11011 -each.body11009: - %t429 = load ptr, ptr %t423 - %t430 = getelementptr inbounds %S.lsp.FnRec, ptr %t429, i64 %t427 - %t431 = load %S.lsp.FnRec, ptr %t430 - store %S.lsp.FnRec %t431, ptr %a432 - %t433 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 2 - %t434 = load { ptr, i64, i64 }, ptr %t433 - %t435 = load { ptr, i64, i64 }, ptr %a377 - store { ptr, i64, i64 } %t434, ptr %a436 - store { ptr, i64, i64 } %t435, ptr %a437 - %t438 = call i32 @finch_str_eq(ptr %a436, ptr %a437) - %t439 = icmp ne i32 %t438, 0 - br i1 %t439, label %then11012, label %endif11014 -then11012: - %t440 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 1 - %t441 = load { ptr, i64, i64 }, ptr %t440 - %t442 = getelementptr inbounds %S.lsp.FnRec, ptr %a432, i32 0, i32 7 - %t443 = load { ptr, i64, i64 }, ptr %t442 - %t444 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t441, i64 2, { ptr, i64, i64 } %t443, { ptr, i64, i64 } { ptr @.str.7172, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t444) - store %S.json.Json %t444, ptr %a445 - call void @finch.drop.S_json_Json(ptr %a445) - br label %endif11014 -endif11014: - br label %each.step11010 -each.step11010: - %t446 = load i64, ptr %a424 - %t447 = add i64 %t446, 1 - store i64 %t447, ptr %a424 - br label %each.cond11008 -each.end11011: - call void @finch_str_drop(ptr %a377) - br label %endif10992 -endif10992: - br label %endif10989 -endif10989: - br label %endif10986 -endif10986: - %t448 = load %S.json.Json, ptr %a7 - %t449 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t448) - call void @finch_str_drop(ptr %a302) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t449 -endif10890: - store %S.lsp.Names zeroinitializer, ptr %a450 - %t451 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 1 - store i64 0, ptr %a452 - br label %each.cond11015 -each.cond11015: - %t453 = getelementptr inbounds { ptr, i64, i64 }, ptr %t451, i32 0, i32 1 - %t454 = load i64, ptr %t453 - %t455 = load i64, ptr %a452 - %t456 = icmp slt i64 %t455, %t454 - br i1 %t456, label %each.body11016, label %each.end11018 -each.body11016: - %t457 = load ptr, ptr %t451 - %t458 = getelementptr inbounds %S.lsp.VarRec, ptr %t457, i64 %t455 - %t459 = load %S.lsp.VarRec, ptr %t458 - store %S.lsp.VarRec %t459, ptr %a460 - %t461 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 3 - %t462 = load i64, ptr %t461 - %t463 = load i64, ptr %a4 - %t464 = icmp sle i64 %t462, %t463 - br label %logic.from11019 -logic.from11019: - br i1 %t464, label %logic.rhs11020, label %logic.end11021 -logic.rhs11020: - %t465 = load i64, ptr %a4 - %t466 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 7 - %t467 = load i64, ptr %t466 - %t468 = add i64 %t467, 1 - %t469 = icmp sle i64 %t465, %t468 - br label %logic.rend11022 -logic.rend11022: - br label %logic.end11021 -logic.end11021: - %t470 = phi i1 [ false, %logic.from11019 ], [ %t469, %logic.rend11022 ] - br label %logic.from11023 -logic.from11023: - br i1 %t470, label %logic.rhs11024, label %logic.end11025 -logic.rhs11024: - %t471 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 5 - %t472 = load { ptr, i64, i64 }, ptr %t471 - %t473 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t472, ptr %a474 - store { ptr, i64, i64 } %t473, ptr %a475 - %t476 = call i32 @finch_str_eq(ptr %a474, ptr %a475) - %t477 = icmp ne i32 %t476, 0 - br label %logic.rend11026 -logic.rend11026: - br label %logic.end11025 -logic.end11025: - %t478 = phi i1 [ false, %logic.from11023 ], [ %t477, %logic.rend11026 ] - br label %logic.from11027 -logic.from11027: - br i1 %t478, label %logic.rhs11028, label %logic.end11029 -logic.rhs11028: - %t479 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t480 = load { ptr, i64, i64 }, ptr %t479 - %t481 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t480) - br label %logic.rend11030 -logic.rend11030: - br label %logic.end11029 -logic.end11029: - %t482 = phi i1 [ false, %logic.from11027 ], [ %t481, %logic.rend11030 ] - br i1 %t482, label %then11031, label %endif11033 -then11031: - %t483 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 0 - %t484 = load { ptr, i64, i64 }, ptr %t483 - %t485 = getelementptr inbounds %S.lsp.VarRec, ptr %a460, i32 0, i32 1 - %t486 = load { ptr, i64, i64 }, ptr %t485 - %t487 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t484, i64 6, { ptr, i64, i64 } %t486, { ptr, i64, i64 } { ptr @.str.7173, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t487) - store %S.json.Json %t487, ptr %a488 - call void @finch.drop.S_json_Json(ptr %a488) - br label %endif11033 -endif11033: - br label %each.step11017 -each.step11017: - %t489 = load i64, ptr %a452 - %t490 = add i64 %t489, 1 - store i64 %t490, ptr %a452 - br label %each.cond11015 -each.end11018: - %t491 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a492 - br label %each.cond11034 -each.cond11034: - %t493 = getelementptr inbounds { ptr, i64, i64 }, ptr %t491, i32 0, i32 1 - %t494 = load i64, ptr %t493 - %t495 = load i64, ptr %a492 - %t496 = icmp slt i64 %t495, %t494 - br i1 %t496, label %each.body11035, label %each.end11037 -each.body11035: - %t497 = load ptr, ptr %t491 - %t498 = getelementptr inbounds %S.lsp.FnRec, ptr %t497, i64 %t495 - %t499 = load %S.lsp.FnRec, ptr %t498 - store %S.lsp.FnRec %t499, ptr %a500 - %t501 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 2 - %t502 = getelementptr inbounds { ptr, i64, i64 }, ptr %t501, i32 0, i32 1 - %t503 = load i64, ptr %t502 - %t504 = icmp eq i64 %t503, 0 - br label %logic.from11038 -logic.from11038: - br i1 %t504, label %logic.rhs11039, label %logic.end11040 -logic.rhs11039: - %t505 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 0 - %t506 = load { ptr, i64, i64 }, ptr %t505 - store { ptr, i64, i64 } %t506, ptr %a507 - store { ptr, i64, i64 } { ptr @.str.7174, i64 0, i64 0 }, ptr %a508 - %t509 = call i32 @finch_str_eq(ptr %a507, ptr %a508) - %t510 = icmp ne i32 %t509, 0 - br label %logic.rend11041 -logic.rend11041: - br label %logic.end11040 -logic.end11040: - %t511 = phi i1 [ false, %logic.from11038 ], [ %t510, %logic.rend11041 ] - br label %logic.from11042 -logic.from11042: - br i1 %t511, label %logic.rhs11043, label %logic.end11044 -logic.rhs11043: - %t512 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t513 = load { ptr, i64, i64 }, ptr %t512 - %t514 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t513) - br label %logic.rend11045 -logic.rend11045: - br label %logic.end11044 -logic.end11044: - %t515 = phi i1 [ false, %logic.from11042 ], [ %t514, %logic.rend11045 ] - br i1 %t515, label %then11046, label %endif11048 -then11046: - %t516 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 1 - %t517 = load { ptr, i64, i64 }, ptr %t516 - %t518 = getelementptr inbounds %S.lsp.FnRec, ptr %a500, i32 0, i32 7 - %t519 = load { ptr, i64, i64 }, ptr %t518 - %t520 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t517, i64 3, { ptr, i64, i64 } %t519, { ptr, i64, i64 } { ptr @.str.7175, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t520) - store %S.json.Json %t520, ptr %a521 - call void @finch.drop.S_json_Json(ptr %a521) - br label %endif11048 -endif11048: - br label %each.step11036 -each.step11036: - %t522 = load i64, ptr %a492 - %t523 = add i64 %t522, 1 - store i64 %t523, ptr %a492 - br label %each.cond11034 -each.end11037: - %t524 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 3 - store i64 0, ptr %a525 - br label %each.cond11049 -each.cond11049: - %t526 = getelementptr inbounds { ptr, i64, i64 }, ptr %t524, i32 0, i32 1 - %t527 = load i64, ptr %t526 - %t528 = load i64, ptr %a525 - %t529 = icmp slt i64 %t528, %t527 - br i1 %t529, label %each.body11050, label %each.end11052 -each.body11050: - %t530 = load ptr, ptr %t524 - %t531 = getelementptr inbounds %S.lsp.StructRec, ptr %t530, i64 %t528 - %t532 = load %S.lsp.StructRec, ptr %t531 - store %S.lsp.StructRec %t532, ptr %a533 - %t534 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 0 - %t535 = load { ptr, i64, i64 }, ptr %t534 - store { ptr, i64, i64 } %t535, ptr %a536 - store { ptr, i64, i64 } { ptr @.str.7176, i64 0, i64 0 }, ptr %a537 - %t538 = call i32 @finch_str_eq(ptr %a536, ptr %a537) - %t539 = icmp ne i32 %t538, 0 - br label %logic.from11053 -logic.from11053: - br i1 %t539, label %logic.rhs11054, label %logic.end11055 -logic.rhs11054: - %t540 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t541 = load { ptr, i64, i64 }, ptr %t540 - %t542 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t541) - br label %logic.rend11056 -logic.rend11056: - br label %logic.end11055 -logic.end11055: - %t543 = phi i1 [ false, %logic.from11053 ], [ %t542, %logic.rend11056 ] - br i1 %t543, label %then11057, label %endif11059 -then11057: - %t544 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t545 = load { ptr, i64, i64 }, ptr %t544 - %t546 = getelementptr inbounds %S.lsp.StructRec, ptr %a533, i32 0, i32 1 - %t547 = load { ptr, i64, i64 }, ptr %t546 - store { ptr, i64, i64 } { ptr @.str.7177, i64 7, i64 0 }, ptr %a549 - store { ptr, i64, i64 } %t547, ptr %a550 - call void @finch_str_concat(ptr %a548, ptr %a549, ptr %a550) - %t551 = load { ptr, i64, i64 }, ptr %a548 - %t552 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t545, i64 22, { ptr, i64, i64 } %t551, { ptr, i64, i64 } { ptr @.str.7178, i64 0, i64 0 }) - store { ptr, i64, i64 } %t551, ptr %a553 - call void @finch_str_drop(ptr %a553) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t552) - store %S.json.Json %t552, ptr %a554 - call void @finch.drop.S_json_Json(ptr %a554) - br label %endif11059 -endif11059: - br label %each.step11051 -each.step11051: - %t555 = load i64, ptr %a525 - %t556 = add i64 %t555, 1 - store i64 %t556, ptr %a525 - br label %each.cond11049 -each.end11052: - %t557 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a558 - br label %each.cond11060 -each.cond11060: - %t559 = getelementptr inbounds { ptr, i64, i64 }, ptr %t557, i32 0, i32 1 - %t560 = load i64, ptr %t559 - %t561 = load i64, ptr %a558 - %t562 = icmp slt i64 %t561, %t560 - br i1 %t562, label %each.body11061, label %each.end11063 -each.body11061: - %t563 = load ptr, ptr %t557 - %t564 = getelementptr inbounds %S.lsp.EnumRec, ptr %t563, i64 %t561 - %t565 = load %S.lsp.EnumRec, ptr %t564 - store %S.lsp.EnumRec %t565, ptr %a566 - %t567 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 0 - %t568 = load { ptr, i64, i64 }, ptr %t567 - store { ptr, i64, i64 } %t568, ptr %a569 - store { ptr, i64, i64 } { ptr @.str.7179, i64 0, i64 0 }, ptr %a570 - %t571 = call i32 @finch_str_eq(ptr %a569, ptr %a570) - %t572 = icmp ne i32 %t571, 0 - br label %logic.from11064 -logic.from11064: - br i1 %t572, label %logic.rhs11065, label %logic.end11066 -logic.rhs11065: - %t573 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t574 = load { ptr, i64, i64 }, ptr %t573 - %t575 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t574) - br label %logic.rend11067 -logic.rend11067: - br label %logic.end11066 -logic.end11066: - %t576 = phi i1 [ false, %logic.from11064 ], [ %t575, %logic.rend11067 ] - br i1 %t576, label %then11068, label %endif11070 -then11068: - %t577 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t578 = load { ptr, i64, i64 }, ptr %t577 - %t579 = getelementptr inbounds %S.lsp.EnumRec, ptr %a566, i32 0, i32 1 - %t580 = load { ptr, i64, i64 }, ptr %t579 - store { ptr, i64, i64 } { ptr @.str.7180, i64 5, i64 0 }, ptr %a582 - store { ptr, i64, i64 } %t580, ptr %a583 - call void @finch_str_concat(ptr %a581, ptr %a582, ptr %a583) - %t584 = load { ptr, i64, i64 }, ptr %a581 - %t585 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t578, i64 13, { ptr, i64, i64 } %t584, { ptr, i64, i64 } { ptr @.str.7181, i64 0, i64 0 }) - store { ptr, i64, i64 } %t584, ptr %a586 - call void @finch_str_drop(ptr %a586) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t585) - store %S.json.Json %t585, ptr %a587 - call void @finch.drop.S_json_Json(ptr %a587) - br label %endif11070 -endif11070: - br label %each.step11062 -each.step11062: - %t588 = load i64, ptr %a558 - %t589 = add i64 %t588, 1 - store i64 %t589, ptr %a558 - br label %each.cond11060 -each.end11063: - %t590 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 5 - store i64 0, ptr %a591 - br label %each.cond11071 -each.cond11071: - %t592 = getelementptr inbounds { ptr, i64, i64 }, ptr %t590, i32 0, i32 1 - %t593 = load i64, ptr %t592 - %t594 = load i64, ptr %a591 - %t595 = icmp slt i64 %t594, %t593 - br i1 %t595, label %each.body11072, label %each.end11074 -each.body11072: - %t596 = load ptr, ptr %t590 - %t597 = getelementptr inbounds { ptr, i64, i64 }, ptr %t596, i64 %t594 - %t598 = load { ptr, i64, i64 }, ptr %t597 - store { ptr, i64, i64 } %t598, ptr %a599 - %t600 = load { ptr, i64, i64 }, ptr %a599 - %t601 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t600) - br i1 %t601, label %then11075, label %endif11077 -then11075: - %t602 = load { ptr, i64, i64 }, ptr %a599 - %t603 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t602, i64 9, { ptr, i64, i64 } { ptr @.str.7182, i64 6, i64 0 }, { ptr, i64, i64 } { ptr @.str.7183, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t603) - store %S.json.Json %t603, ptr %a604 - call void @finch.drop.S_json_Json(ptr %a604) - br label %endif11077 -endif11077: - br label %each.step11073 -each.step11073: - %t605 = load i64, ptr %a591 - %t606 = add i64 %t605, 1 - store i64 %t606, ptr %a591 - br label %each.cond11071 -each.end11074: - %t607 = call { ptr, i64, i64 } @finch.docs.builtins() - store { ptr, i64, i64 } %t607, ptr %a608 - store i64 0, ptr %a609 - br label %each.cond11078 -each.cond11078: - %t610 = getelementptr inbounds { ptr, i64, i64 }, ptr %a608, i32 0, i32 1 - %t611 = load i64, ptr %t610 - %t612 = load i64, ptr %a609 - %t613 = icmp slt i64 %t612, %t611 - br i1 %t613, label %each.body11079, label %each.end11081 -each.body11079: - %t614 = load ptr, ptr %a608 - %t615 = getelementptr inbounds %S.docs.Doc, ptr %t614, i64 %t612 - %t616 = load %S.docs.Doc, ptr %t615 - store %S.docs.Doc %t616, ptr %a617 - %t618 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t619 = load { ptr, i64, i64 }, ptr %t618 - %t620 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t619) - br i1 %t620, label %then11082, label %endif11084 -then11082: - %t621 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 0 - %t622 = load { ptr, i64, i64 }, ptr %t621 - %t623 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 1 - %t624 = load { ptr, i64, i64 }, ptr %t623 - %t625 = getelementptr inbounds %S.docs.Doc, ptr %a617, i32 0, i32 2 - %t626 = load { ptr, i64, i64 }, ptr %t625 - %t627 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t622, i64 3, { ptr, i64, i64 } %t624, { ptr, i64, i64 } %t626) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t627) - store %S.json.Json %t627, ptr %a628 - call void @finch.drop.S_json_Json(ptr %a628) - br label %endif11084 -endif11084: - br label %each.step11080 -each.step11080: - %t629 = load i64, ptr %a609 - %t630 = add i64 %t629, 1 - store i64 %t630, ptr %a609 - br label %each.cond11078 -each.end11081: - call void @finch.drop.arr_S_docs_Doc(ptr %a608) - %t631 = call { ptr, i64, i64 } @finch.docs.keywords() - store { ptr, i64, i64 } %t631, ptr %a632 - store i64 0, ptr %a633 - br label %each.cond11085 -each.cond11085: - %t634 = getelementptr inbounds { ptr, i64, i64 }, ptr %a632, i32 0, i32 1 - %t635 = load i64, ptr %t634 - %t636 = load i64, ptr %a633 - %t637 = icmp slt i64 %t636, %t635 - br i1 %t637, label %each.body11086, label %each.end11088 -each.body11086: - %t638 = load ptr, ptr %a632 - %t639 = getelementptr inbounds { ptr, i64, i64 }, ptr %t638, i64 %t636 - %t640 = load { ptr, i64, i64 }, ptr %t639 - store { ptr, i64, i64 } %t640, ptr %a641 - %t642 = load { ptr, i64, i64 }, ptr %a641 - %t643 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t642) - br i1 %t643, label %then11089, label %endif11091 -then11089: - %t644 = load { ptr, i64, i64 }, ptr %a641 - %t645 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t644, i64 14, { ptr, i64, i64 } { ptr @.str.7184, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7185, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t645) - store %S.json.Json %t645, ptr %a646 - call void @finch.drop.S_json_Json(ptr %a646) - br label %endif11091 -endif11091: - br label %each.step11087 -each.step11087: - %t647 = load i64, ptr %a633 - %t648 = add i64 %t647, 1 - store i64 %t648, ptr %a633 - br label %each.cond11085 -each.end11088: - call void @finch.drop.arr_str(ptr %a632) - %t649 = call { ptr, i64, i64 } @finch.docs.typeNames() - store { ptr, i64, i64 } %t649, ptr %a650 - store i64 0, ptr %a651 - br label %each.cond11092 -each.cond11092: - %t652 = getelementptr inbounds { ptr, i64, i64 }, ptr %a650, i32 0, i32 1 - %t653 = load i64, ptr %t652 - %t654 = load i64, ptr %a651 - %t655 = icmp slt i64 %t654, %t653 - br i1 %t655, label %each.body11093, label %each.end11095 -each.body11093: - %t656 = load ptr, ptr %a650 - %t657 = getelementptr inbounds { ptr, i64, i64 }, ptr %t656, i64 %t654 - %t658 = load { ptr, i64, i64 }, ptr %t657 - store { ptr, i64, i64 } %t658, ptr %a659 - %t660 = load { ptr, i64, i64 }, ptr %a659 - %t661 = call i1 @finch.lsp.Names.add(ptr %a450, { ptr, i64, i64 } %t660) - br i1 %t661, label %then11096, label %endif11098 -then11096: - %t662 = load { ptr, i64, i64 }, ptr %a659 - %t663 = call %S.json.Json @finch.lsp.item({ ptr, i64, i64 } %t662, i64 25, { ptr, i64, i64 } { ptr @.str.7186, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7187, i64 0, i64 0 }) - call void @finch.json.Json.push(ptr %a7, %S.json.Json %t663) - store %S.json.Json %t663, ptr %a664 - call void @finch.drop.S_json_Json(ptr %a664) - br label %endif11098 -endif11098: - br label %each.step11094 -each.step11094: - %t665 = load i64, ptr %a651 - %t666 = add i64 %t665, 1 - store i64 %t666, ptr %a651 - br label %each.cond11092 -each.end11095: - call void @finch.drop.arr_str(ptr %a650) - %t667 = load %S.json.Json, ptr %a7 - %t668 = call %S.json.Json @finch.lsp.completionList(%S.json.Json %t667) - call void @finch.drop.S_lsp_Names(ptr %a450) - call void @finch_str_drop(ptr %a26) - call void @finch_str_drop(ptr %a11) - call void @finch.drop.S_json_Json(ptr %a7) - ret %S.json.Json %t668 -} - -define internal i1 @finch.lsp.Names.add(ptr %self, { ptr, i64, i64 } %p0) { -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.cond11099 -find.cond11099: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t6 - br i1 %t10, label %find.body11100, label %find.end11103 -find.body11100: - %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.hit11101, label %find.next11102 -find.hit11101: - store i64 %t9, ptr %a5 - br label %find.end11103 -find.next11102: - %t17 = add i64 %t9, 1 - store i64 %t17, ptr %a8 - br label %find.cond11099 -find.end11103: - %t18 = load i64, ptr %a5 - %t19 = icmp sge i64 %t18, 0 - br i1 %t19, label %then11104, label %endif11106 -then11104: - ret i1 false -endif11106: - %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 - %a5 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t2, ptr %a3 - %t4 = call %S.json.Json @finch.json.new_bool(i1 false) - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7188, i64 12, i64 0 }, %S.json.Json %t4) - store %S.json.Json %t4, ptr %a5 - call void @finch.drop.S_json_Json(ptr %a5) - %t6 = load %S.json.Json, ptr %a1 - call void @finch.json.Json.set(ptr %a3, { ptr, i64, i64 } { ptr @.str.7189, i64 5, i64 0 }, %S.json.Json %t6) - %t7 = load %S.json.Json, ptr %a3 - ret %S.json.Json %t7 -} - -define internal %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %p0, { ptr, i64, i64 } %p1, { ptr, i64, i64 } %p2, i64 %p3, i64 %p4) { -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 %S.lsp.VarRec, align 16 - %a150 = alloca { ptr, i64, i64 }, align 16 - %a152 = alloca { ptr, i64, i64 }, align 16 - %a153 = alloca { ptr, i64, i64 }, align 16 - %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 - %a165 = alloca { ptr, i64, i64 }, align 16 - %a166 = alloca { ptr, i64, i64 }, align 16 - %a172 = alloca { ptr, i64, i64 }, align 16 - %a174 = alloca { ptr, i64, i64 }, align 16 - %a175 = alloca { ptr, i64, i64 }, align 16 - %a178 = alloca { ptr, i64, i64 }, align 16 - %a180 = alloca i64, align 16 - %a188 = alloca %S.lsp.FnRec, align 16 - %a192 = alloca { ptr, i64, i64 }, align 16 - %a193 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a200 = alloca { ptr, i64, i64 }, align 16 - %a205 = alloca %S.json.Json, align 16 - %a209 = alloca %S.json.Json, align 16 - %a211 = alloca %S.json.Json, align 16 - %a213 = alloca i64, align 16 - %a221 = alloca { ptr, i64, i64 }, align 16 - %a226 = alloca %S.json.Json, align 16 - %a229 = alloca %S.json.Json, align 16 - %a235 = alloca %S.json.Json, align 16 - %a238 = alloca %S.json.Json, align 16 - %a241 = alloca %S.json.Json, align 16 - %a244 = alloca %S.json.Json, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca %S.docs.Doc, align 16 - %a258 = alloca %S.json.Json, align 16 - %a262 = alloca %S.json.Json, align 16 - %a266 = alloca %S.json.Json, align 16 - %a268 = alloca %S.json.Json, align 16 - %a271 = alloca %S.json.Json, align 16 - %a274 = alloca %S.json.Json, align 16 - %a277 = alloca %S.json.Json, align 16 - store %S.lsp.Analysis %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - 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 %then11107, label %endif11109 -then11107: - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a9, i32 0, i32 1 - %t18 = load i64, ptr %t17 - store i64 %t18, ptr %a12 - br label %endif11109 -endif11109: - %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.7190, 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.cond11110 -while.cond11110: - %t32 = load i64, ptr %a31 - %t33 = icmp sge i64 %t32, 0 - br i1 %t33, label %while.body11111, label %while.end11112 -while.body11111: - %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 %range11113, label %inrange11114 -range11113: - call void @finch_panic_index(ptr @.str.7191, i64 678, i64 %t34, i64 %t36) - unreachable -inrange11114: - %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.from11115 -logic.from11115: - br i1 %t43, label %logic.end11117, label %logic.rhs11116 -logic.rhs11116: - %t44 = load i8, ptr %a41 - %t45 = icmp eq i8 %t44, 93 - br label %logic.rend11118 -logic.rend11118: - br label %logic.end11117 -logic.end11117: - %t46 = phi i1 [ true, %logic.from11115 ], [ %t45, %logic.rend11118 ] - br i1 %t46, label %then11119, label %else11120 -then11119: - %t47 = load i64, ptr %a25 - %t48 = add i64 %t47, 1 - store i64 %t48, ptr %a25 - br label %endif11121 -else11120: - %t49 = load i8, ptr %a41 - %t50 = icmp eq i8 %t49, 40 - br label %logic.from11122 -logic.from11122: - br i1 %t50, label %logic.end11124, label %logic.rhs11123 -logic.rhs11123: - %t51 = load i8, ptr %a41 - %t52 = icmp eq i8 %t51, 91 - br label %logic.rend11125 -logic.rend11125: - br label %logic.end11124 -logic.end11124: - %t53 = phi i1 [ true, %logic.from11122 ], [ %t52, %logic.rend11125 ] - br i1 %t53, label %then11126, label %else11127 -then11126: - %t54 = load i64, ptr %a25 - %t55 = icmp eq i64 %t54, 0 - br i1 %t55, label %then11129, label %else11130 -then11129: - %t56 = load i8, ptr %a41 - %t57 = icmp eq i8 %t56, 40 - br i1 %t57, label %then11132, label %endif11134 -then11132: - %t58 = load i64, ptr %a31 - store i64 %t58, ptr %a27 - br label %while.end11112 -endif11134: - br label %endif11131 -else11130: - %t59 = load i64, ptr %a25 - %t60 = sub i64 %t59, 1 - store i64 %t60, ptr %a25 - br label %endif11131 -endif11131: - br label %endif11128 -else11127: - %t61 = load i8, ptr %a41 - %t62 = icmp eq i8 %t61, 44 - br label %logic.from11135 -logic.from11135: - br i1 %t62, label %logic.rhs11136, label %logic.end11137 -logic.rhs11136: - %t63 = load i64, ptr %a25 - %t64 = icmp eq i64 %t63, 0 - br label %logic.rend11138 -logic.rend11138: - br label %logic.end11137 -logic.end11137: - %t65 = phi i1 [ false, %logic.from11135 ], [ %t64, %logic.rend11138 ] - br i1 %t65, label %then11139, label %endif11141 -then11139: - %t66 = load i64, ptr %a26 - %t67 = add i64 %t66, 1 - store i64 %t67, ptr %a26 - br label %endif11141 -endif11141: - br label %endif11128 -endif11128: - br label %endif11121 -endif11121: - %t68 = load i64, ptr %a31 - %t69 = sub i64 %t68, 1 - store i64 %t69, ptr %a31 - br label %while.cond11110 -while.end11112: - %t70 = load i64, ptr %a27 - %t71 = icmp slt i64 %t70, 0 - br i1 %t71, label %then11142, label %endif11144 -then11142: - %t72 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t72 -endif11144: - %t73 = load i64, ptr %a27 - store i64 %t73, ptr %a74 - %t75 = load i64, ptr %a74 - store i64 %t75, ptr %a76 - br label %while.cond11145 -while.cond11145: - %t77 = load i64, ptr %a76 - %t78 = icmp sgt i64 %t77, 0 - br label %logic.from11148 -logic.from11148: - br i1 %t78, label %logic.rhs11149, label %logic.end11150 -logic.rhs11149: - %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 %range11151, label %inrange11152 -range11151: - call void @finch_panic_index(ptr @.str.7192, i64 700, i64 %t80, i64 %t82) - unreachable -inrange11152: - %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.rend11153 -logic.rend11153: - br label %logic.end11150 -logic.end11150: - %t88 = phi i1 [ false, %logic.from11148 ], [ %t87, %logic.rend11153 ] - br i1 %t88, label %while.body11146, label %while.end11147 -while.body11146: - %t89 = load i64, ptr %a76 - %t90 = sub i64 %t89, 1 - store i64 %t90, ptr %a76 - br label %while.cond11145 -while.end11147: - %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.7193, 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 %then11154, label %endif11156 -then11154: - %t101 = call %S.json.Json @finch.json.new_null() - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t101 -endif11156: - store { ptr, i64, i64 } { ptr @.str.7194, i64 0, i64 0 }, ptr %a102 - %t103 = load i64, ptr %a76 - %t104 = icmp sgt i64 %t103, 0 - br label %logic.from11157 -logic.from11157: - br i1 %t104, label %logic.rhs11158, label %logic.end11159 -logic.rhs11158: - %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 %range11160, label %inrange11161 -range11160: - call void @finch_panic_index(ptr @.str.7195, i64 708, i64 %t106, i64 %t108) - unreachable -inrange11161: - %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.rend11162 -logic.rend11162: - br label %logic.end11159 -logic.end11159: - %t114 = phi i1 [ false, %logic.from11157 ], [ %t113, %logic.rend11162 ] - br i1 %t114, label %then11163, label %endif11165 -then11163: - %t115 = load i64, ptr %a76 - %t116 = sub i64 %t115, 1 - store i64 %t116, ptr %a117 - br label %while.cond11166 -while.cond11166: - %t118 = load i64, ptr %a117 - %t119 = icmp sgt i64 %t118, 0 - br label %logic.from11169 -logic.from11169: - br i1 %t119, label %logic.rhs11170, label %logic.end11171 -logic.rhs11170: - %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 %range11172, label %inrange11173 -range11172: - call void @finch_panic_index(ptr @.str.7196, i64 711, i64 %t121, i64 %t123) - unreachable -inrange11173: - %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.rend11174 -logic.rend11174: - br label %logic.end11171 -logic.end11171: - %t129 = phi i1 [ false, %logic.from11169 ], [ %t128, %logic.rend11174 ] - br i1 %t129, label %while.body11167, label %while.end11168 -while.body11167: - %t130 = load i64, ptr %a117 - %t131 = sub i64 %t130, 1 - store i64 %t131, ptr %a117 - br label %while.cond11166 -while.end11168: - %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.7197, 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 %S.lsp.VarRec %t144, ptr %a149 - call void @finch.drop.S_lsp_VarRec(ptr %a149) - store { ptr, i64, i64 } %t148, ptr %a150 - %t151 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t151, ptr %a152 - store { ptr, i64, i64 } { ptr @.str.7199, i64 4, i64 0 }, ptr %a154 - %t155 = call i32 @finch_str_starts(ptr %a152, ptr %a154) - %t156 = icmp ne i32 %t155, 0 - br label %logic.from11175 -logic.from11175: - br i1 %t156, label %logic.rhs11176, label %logic.end11177 -logic.rhs11176: - %t157 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t157, ptr %a158 - store { ptr, i64, i64 } { ptr @.str.7201, i64 1, i64 0 }, ptr %a160 - %t161 = call i32 @finch_str_ends(ptr %a158, ptr %a160) - %t162 = icmp ne i32 %t161, 0 - br label %logic.rend11178 -logic.rend11178: - br label %logic.end11177 -logic.end11177: - %t163 = phi i1 [ false, %logic.from11175 ], [ %t162, %logic.rend11178 ] - br i1 %t163, label %then11179, label %endif11181 -then11179: - %t164 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t164, ptr %a165 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %a150, i32 0, i32 1 - %t168 = load i64, ptr %t167 - %t169 = sub i64 %t168, 1 - call void @finch_str_sub(ptr %a166, ptr %a165, i64 4, i64 %t169, ptr @.str.7202, i64 717) - %t170 = load { ptr, i64, i64 }, ptr %a166 - %t171 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t170, ptr %a150 - store { ptr, i64, i64 } %t171, ptr %a172 - call void @finch_str_drop(ptr %a172) - br label %endif11181 -endif11181: - %t173 = load { ptr, i64, i64 }, ptr %a150 - store { ptr, i64, i64 } %t173, ptr %a174 - call void @finch_str_copy(ptr %a175, ptr %a174) - %t176 = load { ptr, i64, i64 }, ptr %a175 - %t177 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t176, ptr %a102 - store { ptr, i64, i64 } %t177, ptr %a178 - call void @finch_str_drop(ptr %a178) - call void @finch_str_drop(ptr %a150) - call void @finch_str_drop(ptr %a139) - br label %endif11165 -endif11165: - %t179 = getelementptr inbounds %S.lsp.Analysis, ptr %a1, i32 0, i32 2 - store i64 0, ptr %a180 - br label %each.cond11182 -each.cond11182: - %t181 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i32 0, i32 1 - %t182 = load i64, ptr %t181 - %t183 = load i64, ptr %a180 - %t184 = icmp slt i64 %t183, %t182 - br i1 %t184, label %each.body11183, label %each.end11185 -each.body11183: - %t185 = load ptr, ptr %t179 - %t186 = getelementptr inbounds %S.lsp.FnRec, ptr %t185, i64 %t183 - %t187 = load %S.lsp.FnRec, ptr %t186 - store %S.lsp.FnRec %t187, ptr %a188 - %t189 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 1 - %t190 = load { ptr, i64, i64 }, ptr %t189 - %t191 = load { ptr, i64, i64 }, ptr %a97 - store { ptr, i64, i64 } %t190, ptr %a192 - store { ptr, i64, i64 } %t191, ptr %a193 - %t194 = call i32 @finch_str_eq(ptr %a192, ptr %a193) - %t195 = icmp ne i32 %t194, 0 - br label %logic.from11186 -logic.from11186: - br i1 %t195, label %logic.rhs11187, label %logic.end11188 -logic.rhs11187: - %t196 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 2 - %t197 = load { ptr, i64, i64 }, ptr %t196 - %t198 = load { ptr, i64, i64 }, ptr %a102 - store { ptr, i64, i64 } %t197, ptr %a199 - store { ptr, i64, i64 } %t198, ptr %a200 - %t201 = call i32 @finch_str_eq(ptr %a199, ptr %a200) - %t202 = icmp ne i32 %t201, 0 - br label %logic.rend11189 -logic.rend11189: - br label %logic.end11188 -logic.end11188: - %t203 = phi i1 [ false, %logic.from11186 ], [ %t202, %logic.rend11189 ] - br i1 %t203, label %then11190, label %endif11192 -then11190: - %t204 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t204, ptr %a205 - %t206 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 7 - %t207 = load { ptr, i64, i64 }, ptr %t206 - %t208 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t207) - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7203, i64 5, i64 0 }, %S.json.Json %t208) - store %S.json.Json %t208, ptr %a209 - call void @finch.drop.S_json_Json(ptr %a209) - %t210 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t210, ptr %a211 - %t212 = getelementptr inbounds %S.lsp.FnRec, ptr %a188, i32 0, i32 8 - store i64 0, ptr %a213 - br label %each.cond11193 -each.cond11193: - %t214 = getelementptr inbounds { ptr, i64, i64 }, ptr %t212, i32 0, i32 1 - %t215 = load i64, ptr %t214 - %t216 = load i64, ptr %a213 - %t217 = icmp slt i64 %t216, %t215 - br i1 %t217, label %each.body11194, label %each.end11196 -each.body11194: - %t218 = load ptr, ptr %t212 - %t219 = getelementptr inbounds { ptr, i64, i64 }, ptr %t218, i64 %t216 - %t220 = load { ptr, i64, i64 }, ptr %t219 - store { ptr, i64, i64 } %t220, ptr %a221 - %t222 = getelementptr inbounds { ptr, i64, i64 }, ptr %a221, i32 0, i32 1 - %t223 = load i64, ptr %t222 - %t224 = icmp sgt i64 %t223, 0 - br i1 %t224, label %then11197, label %endif11199 -then11197: - %t225 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t225, ptr %a226 - %t227 = load { ptr, i64, i64 }, ptr %a221 - %t228 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t227) - call void @finch.json.Json.set(ptr %a226, { ptr, i64, i64 } { ptr @.str.7204, i64 5, i64 0 }, %S.json.Json %t228) - store %S.json.Json %t228, ptr %a229 - call void @finch.drop.S_json_Json(ptr %a229) - %t230 = load %S.json.Json, ptr %a226 - call void @finch.json.Json.push(ptr %a211, %S.json.Json %t230) - call void @finch.drop.S_json_Json(ptr %a226) - br label %endif11199 -endif11199: - br label %each.step11195 -each.step11195: - %t231 = load i64, ptr %a213 - %t232 = add i64 %t231, 1 - store i64 %t232, ptr %a213 - br label %each.cond11193 -each.end11196: - %t233 = load %S.json.Json, ptr %a211 - call void @finch.json.Json.set(ptr %a205, { ptr, i64, i64 } { ptr @.str.7205, i64 10, i64 0 }, %S.json.Json %t233) - %t234 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t234, ptr %a235 - %t236 = load %S.json.Json, ptr %a205 - call void @finch.json.Json.push(ptr %a235, %S.json.Json %t236) - %t237 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t237, ptr %a238 - %t239 = load %S.json.Json, ptr %a235 - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7206, i64 10, i64 0 }, %S.json.Json %t239) - %t240 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7207, i64 15, i64 0 }, %S.json.Json %t240) - store %S.json.Json %t240, ptr %a241 - call void @finch.drop.S_json_Json(ptr %a241) - %t242 = load i64, ptr %a26 - %t243 = call %S.json.Json @finch.lsp.num(i64 %t242) - call void @finch.json.Json.set(ptr %a238, { ptr, i64, i64 } { ptr @.str.7208, i64 15, i64 0 }, %S.json.Json %t243) - store %S.json.Json %t243, ptr %a244 - call void @finch.drop.S_json_Json(ptr %a244) - %t245 = load %S.json.Json, ptr %a238 - call void @finch.drop.S_json_Json(ptr %a235) - call void @finch.drop.S_json_Json(ptr %a211) - call void @finch.drop.S_json_Json(ptr %a205) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t245 -endif11192: - br label %each.step11184 -each.step11184: - %t246 = load i64, ptr %a180 - %t247 = add i64 %t246, 1 - store i64 %t247, ptr %a180 - br label %each.cond11182 -each.end11185: - %t248 = call { ptr, i64, i64 } @finch.docs.builtins() - %t249 = load { ptr, i64, i64 }, ptr %a97 - %t250 = call %S.docs.Doc @finch.docs.find({ ptr, i64, i64 } %t248, { ptr, i64, i64 } %t249) - store { ptr, i64, i64 } %t248, ptr %a251 - call void @finch.drop.arr_S_docs_Doc(ptr %a251) - store %S.docs.Doc %t250, ptr %a252 - %t253 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 0 - %t254 = getelementptr inbounds { ptr, i64, i64 }, ptr %t253, i32 0, i32 1 - %t255 = load i64, ptr %t254 - %t256 = icmp sgt i64 %t255, 0 - br i1 %t256, label %then11200, label %endif11202 -then11200: - %t257 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t257, ptr %a258 - %t259 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %t259 - %t261 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t260) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7209, i64 5, i64 0 }, %S.json.Json %t261) - store %S.json.Json %t261, ptr %a262 - call void @finch.drop.S_json_Json(ptr %a262) - %t263 = getelementptr inbounds %S.docs.Doc, ptr %a252, i32 0, i32 2 - %t264 = load { ptr, i64, i64 }, ptr %t263 - %t265 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t264) - call void @finch.json.Json.set(ptr %a258, { ptr, i64, i64 } { ptr @.str.7210, i64 13, i64 0 }, %S.json.Json %t265) - store %S.json.Json %t265, ptr %a266 - call void @finch.drop.S_json_Json(ptr %a266) - %t267 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t267, ptr %a268 - %t269 = load %S.json.Json, ptr %a258 - call void @finch.json.Json.push(ptr %a268, %S.json.Json %t269) - %t270 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t270, ptr %a271 - %t272 = load %S.json.Json, ptr %a268 - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7211, i64 10, i64 0 }, %S.json.Json %t272) - %t273 = call %S.json.Json @finch.lsp.num(i64 0) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7212, i64 15, i64 0 }, %S.json.Json %t273) - store %S.json.Json %t273, ptr %a274 - call void @finch.drop.S_json_Json(ptr %a274) - %t275 = load i64, ptr %a26 - %t276 = call %S.json.Json @finch.lsp.num(i64 %t275) - call void @finch.json.Json.set(ptr %a271, { ptr, i64, i64 } { ptr @.str.7213, i64 15, i64 0 }, %S.json.Json %t276) - store %S.json.Json %t276, ptr %a277 - call void @finch.drop.S_json_Json(ptr %a277) - %t278 = load %S.json.Json, ptr %a271 - call void @finch.drop.S_json_Json(ptr %a268) - call void @finch.drop.S_json_Json(ptr %a258) - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t278 -endif11202: - %t279 = call %S.json.Json @finch.json.new_null() - call void @finch.drop.S_docs_Doc(ptr %a252) - call void @finch_str_drop(ptr %a102) - call void @finch_str_drop(ptr %a97) - call void @finch_str_drop(ptr %a24) - call void @finch_str_drop(ptr %a9) - ret %S.json.Json %t279 -} - -define internal { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %p0) { -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.7214, 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.7215, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7216, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - 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 - %a8 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7217, 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.7218, i64 3, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store %S.json.Json %t4, ptr %a5 - %t6 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a5, { ptr, i64, i64 } { ptr @.str.7219, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a5) - %t7 = call { ptr, i64, i64 } @finch.lsp.uriToPath({ ptr, i64, i64 } %t6) - store { ptr, i64, i64 } %t6, ptr %a8 - call void @finch_str_drop(ptr %a8) - ret { ptr, i64, i64 } %t7 -} - -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 - %a18 = alloca %S.json.Json, align 16 - %a20 = alloca %S.json.Json, align 16 - %a22 = alloca %S.json.Json, align 16 - %a24 = alloca %S.json.Json, align 16 - %a26 = alloca %S.json.Json, align 16 - %a28 = alloca %S.json.Json, align 16 - %a30 = alloca %S.json.Json, align 16 - %a34 = alloca %S.json.Json, align 16 - %a36 = alloca %S.json.Json, align 16 - %a38 = alloca %S.json.Json, align 16 - %a40 = alloca %S.json.Json, align 16 - %a44 = alloca %S.json.Json, align 16 - %a47 = alloca %S.json.Json, align 16 - %a49 = alloca %S.json.Json, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a60 = alloca %S.json.Json, align 16 - %a61 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a79 = alloca i32, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a100 = alloca %S.json.Json, align 16 - %a106 = alloca %S.json.Json, align 16 - %a108 = alloca %S.json.Json, align 16 - %a112 = alloca { ptr, i64, i64 }, align 16 - %a113 = alloca i32, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a126 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca { ptr, i64, i64 }, align 16 - %a132 = alloca { ptr, i64, i64 }, align 16 - %a135 = alloca { ptr, i64, i64 }, align 16 - %a139 = alloca { ptr, i64, i64 }, align 16 - %a140 = alloca { ptr, i64, i64 }, align 16 - %a145 = alloca { ptr, i64, i64 }, align 16 - %a148 = alloca { ptr, i64, i64 }, align 16 - %a158 = alloca { ptr, i64, i64 }, align 16 - %a168 = alloca { ptr, i64, i64 }, align 16 - %a177 = alloca %S.json.Json, align 16 - %a181 = alloca { ptr, i64, i64 }, align 16 - %a182 = alloca %S.json.Json, align 16 - %a184 = alloca %S.json.Json, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a190 = alloca { ptr, i64, i64 }, align 16 - %a191 = alloca { ptr, i64, i64 }, align 16 - %a194 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca { ptr, i64, i64 }, align 16 - %a198 = alloca { ptr, i64, i64 }, align 16 - %a199 = alloca { ptr, i64, i64 }, align 16 - %a202 = alloca { ptr, i64, i64 }, align 16 - %a203 = alloca { ptr, i64, i64 }, align 16 - %a208 = alloca { ptr, i64, i64 }, align 16 - %a210 = alloca %S.json.Json, align 16 - %a212 = alloca %S.json.Json, align 16 - %a215 = alloca i64, align 16 - %a217 = alloca %S.json.Json, align 16 - %a219 = alloca %S.json.Json, align 16 - %a222 = alloca i64, align 16 - %a225 = alloca { ptr, i64, i64 }, align 16 - %a231 = alloca %S.json.Json, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca %S.lsp.Analysis, align 16 - %a245 = alloca %S.lsp.Analysis, align 16 - %a247 = alloca %S.lsp.Analysis, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a251 = alloca { ptr, i64, i64 }, align 16 - %a256 = alloca { ptr, i64, i64 }, align 16 - %a259 = alloca { ptr, i64, i64 }, align 16 - %a260 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a270 = alloca { ptr, i64, i64 }, align 16 - %a272 = alloca { ptr, i64, i64 }, align 16 - %a273 = alloca { ptr, i64, i64 }, align 16 - %a282 = alloca %S.json.Json, align 16 - %a283 = alloca { ptr, i64, i64 }, align 16 - %a284 = alloca { ptr, i64, i64 }, align 16 - %a293 = alloca %S.json.Json, align 16 - %a294 = alloca { ptr, i64, i64 }, align 16 - %a295 = alloca { ptr, i64, i64 }, align 16 - %a305 = alloca %S.json.Json, align 16 - %a306 = alloca { ptr, i64, i64 }, align 16 - %a307 = alloca { ptr, i64, i64 }, align 16 - %a314 = alloca %S.json.Json, align 16 - %a322 = alloca %S.json.Json, align 16 - %a328 = alloca %S.json.Json, align 16 - store %S.json.Json %p0, ptr %a1 - %t2 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7220, 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.7221, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a3) - store { ptr, i64, i64 } %t4, ptr %a5 - %t6 = call %S.json.Json @finch.json.Json.get(ptr %a1, { ptr, i64, i64 } { ptr @.str.7222, 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.7223, 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.7224, 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.arm11204, label %match.next11205 -match.arm11204: - %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.7225, i64 16, i64 0 }, %S.json.Json %t17) - store %S.json.Json %t17, ptr %a18 - call void @finch.drop.S_json_Json(ptr %a18) - %t19 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7226, i64 13, i64 0 }, %S.json.Json %t19) - store %S.json.Json %t19, ptr %a20 - call void @finch.drop.S_json_Json(ptr %a20) - %t21 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7227, i64 18, i64 0 }, %S.json.Json %t21) - store %S.json.Json %t21, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a22) - %t23 = call %S.json.Json @finch.json.new_bool(i1 true) - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7228, i64 22, i64 0 }, %S.json.Json %t23) - store %S.json.Json %t23, ptr %a24 - call void @finch.drop.S_json_Json(ptr %a24) - %t25 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t25, ptr %a26 - %t27 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t27, ptr %a28 - %t29 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7229, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a28, %S.json.Json %t29) - store %S.json.Json %t29, ptr %a30 - call void @finch.drop.S_json_Json(ptr %a30) - %t31 = load %S.json.Json, ptr %a28 - call void @finch.json.Json.set(ptr %a26, { ptr, i64, i64 } { ptr @.str.7230, i64 17, i64 0 }, %S.json.Json %t31) - %t32 = load %S.json.Json, ptr %a26 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7231, i64 18, i64 0 }, %S.json.Json %t32) - %t33 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t33, ptr %a34 - %t35 = call %S.json.Json @finch.json.new_list() - store %S.json.Json %t35, ptr %a36 - %t37 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7232, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t37) - store %S.json.Json %t37, ptr %a38 - call void @finch.drop.S_json_Json(ptr %a38) - %t39 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7233, i64 1, i64 0 }) - call void @finch.json.Json.push(ptr %a36, %S.json.Json %t39) - store %S.json.Json %t39, ptr %a40 - call void @finch.drop.S_json_Json(ptr %a40) - %t41 = load %S.json.Json, ptr %a36 - call void @finch.json.Json.set(ptr %a34, { ptr, i64, i64 } { ptr @.str.7234, i64 17, i64 0 }, %S.json.Json %t41) - %t42 = load %S.json.Json, ptr %a34 - call void @finch.json.Json.set(ptr %a16, { ptr, i64, i64 } { ptr @.str.7235, i64 21, i64 0 }, %S.json.Json %t42) - %t43 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t43, ptr %a44 - %t45 = load %S.json.Json, ptr %a16 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7236, i64 12, i64 0 }, %S.json.Json %t45) - %t46 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t46, ptr %a47 - %t48 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } { ptr @.str.7238, i64 5, i64 0 }) - call void @finch.json.Json.set(ptr %a47, { ptr, i64, i64 } { ptr @.str.7237, i64 4, i64 0 }, %S.json.Json %t48) - store %S.json.Json %t48, ptr %a49 - call void @finch.drop.S_json_Json(ptr %a49) - %t50 = load %S.json.Json, ptr %a47 - call void @finch.json.Json.set(ptr %a44, { ptr, i64, i64 } { ptr @.str.7239, i64 10, i64 0 }, %S.json.Json %t50) - %t51 = load %S.json.Json, ptr %a9 - %t52 = load %S.json.Json, ptr %a44 - call void @finch.lsp.reply(%S.json.Json %t51, %S.json.Json %t52) - call void @finch.drop.S_json_Json(ptr %a47) - call void @finch.drop.S_json_Json(ptr %a44) - call void @finch.drop.S_json_Json(ptr %a36) - call void @finch.drop.S_json_Json(ptr %a34) - call void @finch.drop.S_json_Json(ptr %a28) - call void @finch.drop.S_json_Json(ptr %a26) - call void @finch.drop.S_json_Json(ptr %a16) - br label %match.end11203 -match.next11205: - store { ptr, i64, i64 } %t10, ptr %a53 - store { ptr, i64, i64 } { ptr @.str.7240, i64 8, i64 0 }, ptr %a54 - %t55 = call i32 @finch_str_eq(ptr %a53, ptr %a54) - %t56 = icmp ne i32 %t55, 0 - br i1 %t56, label %match.arm11206, label %match.next11207 -match.arm11206: - %t57 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 6 - store i1 true, ptr %t57 - %t58 = load %S.json.Json, ptr %a9 - %t59 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t58, %S.json.Json %t59) - store %S.json.Json %t59, ptr %a60 - call void @finch.drop.S_json_Json(ptr %a60) - br label %match.end11203 -match.next11207: - store { ptr, i64, i64 } %t10, ptr %a61 - store { ptr, i64, i64 } { ptr @.str.7241, i64 4, i64 0 }, ptr %a62 - %t63 = call i32 @finch_str_eq(ptr %a61, ptr %a62) - %t64 = icmp ne i32 %t63, 0 - br i1 %t64, label %match.arm11208, label %match.next11209 -match.arm11208: - %t65 = trunc i64 0 to i32 - %t66 = call i32 @fflush(ptr null) - call void @exit(i32 %t65) - br label %match.end11203 -match.next11209: - store { ptr, i64, i64 } %t10, ptr %a67 - store { ptr, i64, i64 } { ptr @.str.7242, i64 20, i64 0 }, ptr %a68 - %t69 = call i32 @finch_str_eq(ptr %a67, ptr %a68) - %t70 = icmp ne i32 %t69, 0 - br i1 %t70, label %match.arm11210, label %match.next11211 -match.arm11210: - %t71 = load %S.json.Json, ptr %a7 - %t72 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t71) - store { ptr, i64, i64 } %t72, ptr %a73 - %t74 = load %S.json.Json, ptr %a7 - %t75 = call { ptr, i64, i64 } @finch.lsp.textOf(%S.json.Json %t74) - %t76 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t77 = load { ptr, i64, i64 }, ptr %a73 - store { ptr, i64, i64 } %t77, ptr %a78 - store i32 0, ptr %a79 - %t80 = call i64 @finch_map_slot(ptr %t76, ptr %a78, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a79) - %t81 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t76, i32 0, i32 0 - %t82 = load ptr, ptr %t81 - %t83 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t82, i64 %t80 - %t84 = load i32, ptr %a79 - %t85 = icmp ne i32 %t84, 0 - br i1 %t85, label %map.new11212, label %map.have11213 -map.new11212: - %t86 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 1 - call void @finch_str_copy(ptr %t86, ptr %a78) - %t87 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t87 - br label %map.have11213 -map.have11213: - %t88 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t83, i32 0, i32 2 - %t89 = load { ptr, i64, i64 }, ptr %t88 - store { ptr, i64, i64 } %t75, ptr %t88 - store { ptr, i64, i64 } %t89, ptr %a90 - call void @finch_str_drop(ptr %a90) - %t91 = load { ptr, i64, i64 }, ptr %a73 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t91) - call void @finch_str_drop(ptr %a73) - br label %match.end11203 -match.next11211: - store { ptr, i64, i64 } %t10, ptr %a92 - store { ptr, i64, i64 } { ptr @.str.7243, i64 22, i64 0 }, ptr %a93 - %t94 = call i32 @finch_str_eq(ptr %a92, ptr %a93) - %t95 = icmp ne i32 %t94, 0 - br i1 %t95, label %match.arm11214, label %match.next11215 -match.arm11214: - %t96 = load %S.json.Json, ptr %a7 - %t97 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t96) - store { ptr, i64, i64 } %t97, ptr %a98 - %t99 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7244, i64 14, i64 0 }) - store %S.json.Json %t99, ptr %a100 - %t101 = call i64 @finch.json.Json.len(ptr %a100) - %t102 = icmp sgt i64 %t101, 0 - br i1 %t102, label %then11216, label %endif11218 -then11216: - %t103 = call i64 @finch.json.Json.len(ptr %a100) - %t104 = sub i64 %t103, 1 - %t105 = call %S.json.Json @finch.json.Json.at(ptr %a100, i64 %t104) - store %S.json.Json %t105, ptr %a106 - %t107 = call %S.json.Json @finch.json.Json.get(ptr %a106, { ptr, i64, i64 } { ptr @.str.7245, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a106) - store %S.json.Json %t107, ptr %a108 - %t109 = call { ptr, i64, i64 } @finch.json.Json.str_or(ptr %a108, { ptr, i64, i64 } { ptr @.str.7246, i64 0, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a108) - %t110 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t111 = load { ptr, i64, i64 }, ptr %a98 - store { ptr, i64, i64 } %t111, ptr %a112 - store i32 0, ptr %a113 - %t114 = call i64 @finch_map_slot(ptr %t110, ptr %a112, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1, ptr %a113) - %t115 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t110, i32 0, i32 0 - %t116 = load ptr, ptr %t115 - %t117 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t116, i64 %t114 - %t118 = load i32, ptr %a113 - %t119 = icmp ne i32 %t118, 0 - br i1 %t119, label %map.new11219, label %map.have11220 -map.new11219: - %t120 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 1 - call void @finch_str_copy(ptr %t120, ptr %a112) - %t121 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - store { ptr, i64, i64 } zeroinitializer, ptr %t121 - br label %map.have11220 -map.have11220: - %t122 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t117, i32 0, i32 2 - %t123 = load { ptr, i64, i64 }, ptr %t122 - store { ptr, i64, i64 } %t109, ptr %t122 - store { ptr, i64, i64 } %t123, ptr %a124 - call void @finch_str_drop(ptr %a124) - %t125 = load { ptr, i64, i64 }, ptr %a98 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t125) - br label %endif11218 -endif11218: - call void @finch.drop.S_json_Json(ptr %a100) - call void @finch_str_drop(ptr %a98) - br label %match.end11203 -match.next11215: - store { ptr, i64, i64 } %t10, ptr %a126 - store { ptr, i64, i64 } { ptr @.str.7247, i64 20, i64 0 }, ptr %a127 - %t128 = call i32 @finch_str_eq(ptr %a126, ptr %a127) - %t129 = icmp ne i32 %t128, 0 - br i1 %t129, label %match.arm11221, label %match.next11222 -match.arm11221: - %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 %then11223, label %endif11225 -then11223: - %t138 = load { ptr, i64, i64 }, ptr %a132 - call void @finch.lsp.Server.analyse(ptr %self, { ptr, i64, i64 } %t138) - br label %endif11225 -endif11225: - call void @finch_str_drop(ptr %a132) - br label %match.end11203 -match.next11222: - store { ptr, i64, i64 } %t10, ptr %a139 - store { ptr, i64, i64 } { ptr @.str.7248, i64 21, i64 0 }, ptr %a140 - %t141 = call i32 @finch_str_eq(ptr %a139, ptr %a140) - %t142 = icmp ne i32 %t141, 0 - br i1 %t142, label %match.arm11226, label %match.next11227 -match.arm11226: - %t143 = load %S.json.Json, ptr %a7 - %t144 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t143) - store { ptr, i64, i64 } %t144, ptr %a145 - %t146 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t147 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t147, ptr %a148 - %t149 = call i64 @finch_map_find(ptr %t146, ptr %a148, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t150 = icmp sge i64 %t149, 0 - br i1 %t150, label %remove.hit11228, label %remove.end11229 -remove.hit11228: - %t151 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t146, i32 0, i32 0 - %t152 = load ptr, ptr %t151 - %t153 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t152, i64 %t149 - %t154 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 1 - call void @finch_str_drop(ptr %t154) - %t155 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t153, i32 0, i32 2 - call void @finch_str_drop(ptr %t155) - call void @finch_map_remove_at(ptr %t146, i64 %t149, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64)) - br label %remove.end11229 -remove.end11229: - %t156 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t157 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t157, ptr %a158 - %t159 = call i64 @finch_map_find(ptr %t156, ptr %a158, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t160 = icmp sge i64 %t159, 0 - br i1 %t160, label %remove.hit11230, label %remove.end11231 -remove.hit11230: - %t161 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t156, i32 0, i32 0 - %t162 = load ptr, ptr %t161 - %t163 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t162, i64 %t159 - %t164 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 1 - call void @finch_str_drop(ptr %t164) - %t165 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t163, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t165) - call void @finch_map_remove_at(ptr %t156, i64 %t159, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11231 -remove.end11231: - %t166 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 4 - %t167 = load { ptr, i64, i64 }, ptr %a145 - store { ptr, i64, i64 } %t167, ptr %a168 - %t169 = call i64 @finch_map_find(ptr %t166, ptr %a168, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t170 = icmp sge i64 %t169, 0 - br i1 %t170, label %remove.hit11232, label %remove.end11233 -remove.hit11232: - %t171 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t166, i32 0, i32 0 - %t172 = load ptr, ptr %t171 - %t173 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t172, i64 %t169 - %t174 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 1 - call void @finch_str_drop(ptr %t174) - %t175 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t173, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t175) - call void @finch_map_remove_at(ptr %t166, i64 %t169, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64)) - br label %remove.end11233 -remove.end11233: - %t176 = call %S.json.Json @finch.json.new_object() - store %S.json.Json %t176, ptr %a177 - %t178 = load { ptr, i64, i64 }, ptr %a145 - %t179 = call { ptr, i64, i64 } @finch.lsp.pathToUri({ ptr, i64, i64 } %t178) - %t180 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t179) - store { ptr, i64, i64 } %t179, ptr %a181 - call void @finch_str_drop(ptr %a181) - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7249, i64 3, i64 0 }, %S.json.Json %t180) - store %S.json.Json %t180, ptr %a182 - call void @finch.drop.S_json_Json(ptr %a182) - %t183 = call %S.json.Json @finch.json.new_list() - call void @finch.json.Json.set(ptr %a177, { ptr, i64, i64 } { ptr @.str.7250, i64 11, i64 0 }, %S.json.Json %t183) - store %S.json.Json %t183, ptr %a184 - call void @finch.drop.S_json_Json(ptr %a184) - %t185 = load %S.json.Json, ptr %a177 - call void @finch.lsp.notify({ ptr, i64, i64 } { ptr @.str.7251, i64 31, i64 0 }, %S.json.Json %t185) - call void @finch.drop.S_json_Json(ptr %a177) - call void @finch_str_drop(ptr %a145) - br label %match.end11203 -match.next11227: - store { ptr, i64, i64 } %t10, ptr %a186 - store { ptr, i64, i64 } { ptr @.str.7252, i64 18, i64 0 }, ptr %a187 - %t188 = call i32 @finch_str_eq(ptr %a186, ptr %a187) - %t189 = icmp ne i32 %t188, 0 - br i1 %t189, label %match.arm11234, label %match.or11236 -match.or11236: - store { ptr, i64, i64 } %t10, ptr %a190 - store { ptr, i64, i64 } { ptr @.str.7253, i64 23, i64 0 }, ptr %a191 - %t192 = call i32 @finch_str_eq(ptr %a190, ptr %a191) - %t193 = icmp ne i32 %t192, 0 - br i1 %t193, label %match.arm11234, label %match.or11237 -match.or11237: - store { ptr, i64, i64 } %t10, ptr %a194 - store { ptr, i64, i64 } { ptr @.str.7254, i64 23, i64 0 }, ptr %a195 - %t196 = call i32 @finch_str_eq(ptr %a194, ptr %a195) - %t197 = icmp ne i32 %t196, 0 - br i1 %t197, label %match.arm11234, label %match.or11238 -match.or11238: - store { ptr, i64, i64 } %t10, ptr %a198 - store { ptr, i64, i64 } { ptr @.str.7255, i64 27, i64 0 }, ptr %a199 - %t200 = call i32 @finch_str_eq(ptr %a198, ptr %a199) - %t201 = icmp ne i32 %t200, 0 - br i1 %t201, label %match.arm11234, label %match.or11239 -match.or11239: - store { ptr, i64, i64 } %t10, ptr %a202 - store { ptr, i64, i64 } { ptr @.str.7256, i64 26, i64 0 }, ptr %a203 - %t204 = call i32 @finch_str_eq(ptr %a202, ptr %a203) - %t205 = icmp ne i32 %t204, 0 - br i1 %t205, label %match.arm11234, label %match.next11235 -match.arm11234: - %t206 = load %S.json.Json, ptr %a7 - %t207 = call { ptr, i64, i64 } @finch.lsp.pathOf(%S.json.Json %t206) - store { ptr, i64, i64 } %t207, ptr %a208 - %t209 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7257, i64 8, i64 0 }) - store %S.json.Json %t209, ptr %a210 - %t211 = call %S.json.Json @finch.json.Json.get(ptr %a210, { ptr, i64, i64 } { ptr @.str.7258, i64 4, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a210) - store %S.json.Json %t211, ptr %a212 - %t213 = call i64 @finch.json.Json.int_or(ptr %a212, i64 0) - call void @finch.drop.S_json_Json(ptr %a212) - %t214 = add i64 %t213, 1 - store i64 %t214, ptr %a215 - %t216 = call %S.json.Json @finch.json.Json.get(ptr %a7, { ptr, i64, i64 } { ptr @.str.7259, i64 8, i64 0 }) - store %S.json.Json %t216, ptr %a217 - %t218 = call %S.json.Json @finch.json.Json.get(ptr %a217, { ptr, i64, i64 } { ptr @.str.7260, i64 9, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a217) - store %S.json.Json %t218, ptr %a219 - %t220 = call i64 @finch.json.Json.int_or(ptr %a219, i64 0) - call void @finch.drop.S_json_Json(ptr %a219) - %t221 = add i64 %t220, 1 - store i64 %t221, ptr %a222 - %t223 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t224 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t224, ptr %a225 - %t226 = call i64 @finch_map_find(ptr %t223, ptr %a225, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t227 = icmp sge i64 %t226, 0 - %t228 = xor i1 %t227, true - br i1 %t228, label %then11240, label %endif11242 -then11240: - %t229 = load %S.json.Json, ptr %a9 - %t230 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t229, %S.json.Json %t230) - store %S.json.Json %t230, ptr %a231 - call void @finch.drop.S_json_Json(ptr %a231) - call void @finch_str_drop(ptr %a208) - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -endif11242: - %t232 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 3 - %t233 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t233, ptr %a234 - %t235 = call i64 @finch_map_find(ptr %t232, ptr %a234, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t236 = icmp slt i64 %t235, 0 - br i1 %t236, label %map.missing11243, label %map.found11244 -map.missing11243: - store { ptr, i64, i64 } zeroinitializer, ptr %a237 - store { ptr, i64, i64 } %t233, ptr %a238 - call void @finch_buf_str(ptr %a237, ptr %a238, i32 1) - call void @finch_map_missing(ptr @.str.7261, i64 842, ptr %a237) - unreachable -map.found11244: - %t239 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t232, i32 0, i32 0 - %t240 = load ptr, ptr %t239 - %t241 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t240, i64 %t235 - %t242 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t241, i32 0, i32 2 - %t243 = load %S.lsp.Analysis, ptr %t242 - store %S.lsp.Analysis %t243, ptr %a244 - call void @finch.copy.S_lsp_Analysis(ptr %a245, ptr %a244) - %t246 = load %S.lsp.Analysis, ptr %a245 - store %S.lsp.Analysis %t246, ptr %a247 - store { ptr, i64, i64 } { ptr @.str.7262, i64 0, i64 0 }, ptr %a248 - %t249 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t250 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t250, ptr %a251 - %t252 = call i64 @finch_map_find(ptr %t249, ptr %a251, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t253 = icmp sge i64 %t252, 0 - br i1 %t253, label %then11245, label %endif11247 -then11245: - %t254 = getelementptr inbounds %S.lsp.Server, ptr %self, i32 0, i32 2 - %t255 = load { ptr, i64, i64 }, ptr %a208 - store { ptr, i64, i64 } %t255, ptr %a256 - %t257 = call i64 @finch_map_find(ptr %t254, ptr %a256, i64 ptrtoint (ptr getelementptr ({ i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr null, i32 1) to i64), i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64), i32 1) - %t258 = icmp slt i64 %t257, 0 - br i1 %t258, label %map.missing11248, label %map.found11249 -map.missing11248: - store { ptr, i64, i64 } zeroinitializer, ptr %a259 - store { ptr, i64, i64 } %t255, ptr %a260 - call void @finch_buf_str(ptr %a259, ptr %a260, i32 1) - call void @finch_map_missing(ptr @.str.7263, i64 845, ptr %a259) - unreachable -map.found11249: - %t261 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %t254, i32 0, i32 0 - %t262 = load ptr, ptr %t261 - %t263 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t262, i64 %t257 - %t264 = getelementptr inbounds { i64, { ptr, i64, i64 }, { ptr, i64, i64 } }, ptr %t263, i32 0, i32 2 - %t265 = load { ptr, i64, i64 }, ptr %t264 - store { ptr, i64, i64 } %t265, ptr %a266 - call void @finch_str_copy(ptr %a267, ptr %a266) - %t268 = load { ptr, i64, i64 }, ptr %a267 - %t269 = load { ptr, i64, i64 }, ptr %a248 - store { ptr, i64, i64 } %t268, ptr %a248 - store { ptr, i64, i64 } %t269, ptr %a270 - call void @finch_str_drop(ptr %a270) - br label %endif11247 -endif11247: - %t271 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t271, ptr %a272 - store { ptr, i64, i64 } { ptr @.str.7264, i64 18, i64 0 }, ptr %a273 - %t274 = call i32 @finch_str_eq(ptr %a272, ptr %a273) - %t275 = icmp ne i32 %t274, 0 - br i1 %t275, label %match.arm11251, label %match.next11252 -match.arm11251: - %t276 = load %S.json.Json, ptr %a9 - %t277 = load %S.lsp.Analysis, ptr %a247 - %t278 = load { ptr, i64, i64 }, ptr %a208 - %t279 = load i64, ptr %a215 - %t280 = load i64, ptr %a222 - %t281 = call %S.json.Json @finch.lsp.hoverAt(%S.lsp.Analysis %t277, { ptr, i64, i64 } %t278, i64 %t279, i64 %t280) - call void @finch.lsp.reply(%S.json.Json %t276, %S.json.Json %t281) - store %S.json.Json %t281, ptr %a282 - call void @finch.drop.S_json_Json(ptr %a282) - br label %match.end11250 -match.next11252: - store { ptr, i64, i64 } %t271, ptr %a283 - store { ptr, i64, i64 } { ptr @.str.7265, i64 23, i64 0 }, ptr %a284 - %t285 = call i32 @finch_str_eq(ptr %a283, ptr %a284) - %t286 = icmp ne i32 %t285, 0 - br i1 %t286, label %match.arm11253, label %match.next11254 -match.arm11253: - %t287 = load %S.json.Json, ptr %a9 - %t288 = load %S.lsp.Analysis, ptr %a247 - %t289 = load { ptr, i64, i64 }, ptr %a208 - %t290 = load i64, ptr %a215 - %t291 = load i64, ptr %a222 - %t292 = call %S.json.Json @finch.lsp.definitionAt(%S.lsp.Analysis %t288, { ptr, i64, i64 } %t289, i64 %t290, i64 %t291) - call void @finch.lsp.reply(%S.json.Json %t287, %S.json.Json %t292) - store %S.json.Json %t292, ptr %a293 - call void @finch.drop.S_json_Json(ptr %a293) - br label %match.end11250 -match.next11254: - store { ptr, i64, i64 } %t271, ptr %a294 - store { ptr, i64, i64 } { ptr @.str.7266, i64 23, i64 0 }, ptr %a295 - %t296 = call i32 @finch_str_eq(ptr %a294, ptr %a295) - %t297 = icmp ne i32 %t296, 0 - br i1 %t297, label %match.arm11255, label %match.next11256 -match.arm11255: - %t298 = load %S.json.Json, ptr %a9 - %t299 = load %S.lsp.Analysis, ptr %a247 - %t300 = load { ptr, i64, i64 }, ptr %a248 - %t301 = load { ptr, i64, i64 }, ptr %a208 - %t302 = load i64, ptr %a215 - %t303 = load i64, ptr %a222 - %t304 = call %S.json.Json @finch.lsp.completionAt(%S.lsp.Analysis %t299, { ptr, i64, i64 } %t300, { ptr, i64, i64 } %t301, i64 %t302, i64 %t303) - call void @finch.lsp.reply(%S.json.Json %t298, %S.json.Json %t304) - store %S.json.Json %t304, ptr %a305 - call void @finch.drop.S_json_Json(ptr %a305) - br label %match.end11250 -match.next11256: - store { ptr, i64, i64 } %t271, ptr %a306 - store { ptr, i64, i64 } { ptr @.str.7267, i64 27, i64 0 }, ptr %a307 - %t308 = call i32 @finch_str_eq(ptr %a306, ptr %a307) - %t309 = icmp ne i32 %t308, 0 - br i1 %t309, label %match.arm11257, label %match.next11258 -match.arm11257: - %t310 = load %S.json.Json, ptr %a9 - %t311 = load %S.lsp.Analysis, ptr %a247 - %t312 = load { ptr, i64, i64 }, ptr %a208 - %t313 = call %S.json.Json @finch.lsp.symbolsOf(%S.lsp.Analysis %t311, { ptr, i64, i64 } %t312) - call void @finch.lsp.reply(%S.json.Json %t310, %S.json.Json %t313) - store %S.json.Json %t313, ptr %a314 - call void @finch.drop.S_json_Json(ptr %a314) - br label %match.end11250 -match.next11258: - br label %match.arm11259 -match.arm11259: - %t315 = load %S.json.Json, ptr %a9 - %t316 = load %S.lsp.Analysis, ptr %a247 - %t317 = load { ptr, i64, i64 }, ptr %a248 - %t318 = load { ptr, i64, i64 }, ptr %a208 - %t319 = load i64, ptr %a215 - %t320 = load i64, ptr %a222 - %t321 = call %S.json.Json @finch.lsp.signatureAt(%S.lsp.Analysis %t316, { ptr, i64, i64 } %t317, { ptr, i64, i64 } %t318, i64 %t319, i64 %t320) - call void @finch.lsp.reply(%S.json.Json %t315, %S.json.Json %t321) - store %S.json.Json %t321, ptr %a322 - call void @finch.drop.S_json_Json(ptr %a322) - br label %match.end11250 -match.end11250: - call void @finch_str_drop(ptr %a248) - call void @finch.drop.S_lsp_Analysis(ptr %a247) - call void @finch_str_drop(ptr %a208) - br label %match.end11203 -match.next11235: - br label %match.arm11261 -match.arm11261: - %t323 = getelementptr inbounds %S.json.Json, ptr %a9, i32 0, i32 0 - %t324 = load i32, ptr %t323 - %t325 = icmp ne i32 %t324, 0 - br i1 %t325, label %then11263, label %endif11265 -then11263: - %t326 = load %S.json.Json, ptr %a9 - %t327 = call %S.json.Json @finch.json.new_null() - call void @finch.lsp.reply(%S.json.Json %t326, %S.json.Json %t327) - store %S.json.Json %t327, ptr %a328 - call void @finch.drop.S_json_Json(ptr %a328) - br label %endif11265 -endif11265: - br label %match.end11203 -match.end11203: - call void @finch.drop.S_json_Json(ptr %a9) - call void @finch.drop.S_json_Json(ptr %a7) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.map_str_S_lsp_Analysis(ptr %a) { -entry: - %a3 = alloca i64, align 16 - %t1 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 2 - %t2 = load i64, ptr %t1 - store i64 0, ptr %a3 - br label %n.cond11271 -n.cond11271: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, %t2 - br i1 %t5, label %n.body11272, label %n.end11273 -n.body11272: - %t6 = getelementptr inbounds { ptr, i64, i64, i64, ptr, i64, i64 }, ptr %a, i32 0, i32 0 - %t7 = load ptr, ptr %t6 - %t8 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t7, i64 %t4 - %t9 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 0 - %t10 = load i64, ptr %t9 - %t11 = icmp ne i64 %t10, 0 - br i1 %t11, label %entry.live11274, label %entry.next11275 -entry.live11274: - %t12 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 1 - call void @finch_str_drop(ptr %t12) - %t13 = getelementptr inbounds { i64, { ptr, i64, i64 }, %S.lsp.Analysis }, ptr %t8, i32 0, i32 2 - call void @finch.drop.S_lsp_Analysis(ptr %t13) - br label %entry.next11275 -entry.next11275: - %t14 = load i64, ptr %a3 - %t15 = add i64 %t14, 1 - store i64 %t15, ptr %a3 - br label %n.cond11271 -n.end11273: - call void @finch_map_free(ptr %a) - ret void -} - -define internal void @finch.drop.S_lsp_Server(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - %t2 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 1 - call void @finch_str_drop(ptr %t2) - %t3 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 2 - call void @finch.drop.map_str_str(ptr %t3) - %t4 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 3 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t4) - %t5 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 4 - call void @finch.drop.map_str_S_lsp_Analysis(ptr %t5) - %t6 = getelementptr inbounds %S.lsp.Server, ptr %a, i32 0, i32 5 - call void @finch.drop.arr_str(ptr %t6) - ret void -} - -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 - %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 - %a14 = alloca { ptr, i64, i64 }, align 16 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a17 = alloca { ptr, i64, i64 }, align 16 - %a18 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - %a20 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca %S.lsp.Server, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a30 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - call void @finch.host.binaryStdio() - %t2 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t2, ptr %a3 - call void @finch_str_copy(ptr %a4, ptr %a3) - %t5 = load { ptr, i64, i64 }, ptr %a4 - %t6 = insertvalue %S.lsp.Server zeroinitializer, { ptr, i64, i64 } %t5, 0 - %t7 = call { ptr, i64, i64 } @finch.host.tempDir() - store { ptr, i64, i64 } %t7, ptr %a9 - store { ptr, i64, i64 } { ptr @.str.7268, i64 11, i64 0 }, ptr %a10 - call void @finch_str_concat(ptr %a8, ptr %a9, ptr %a10) - store { ptr, i64, i64 } %t7, ptr %a11 - call void @finch_str_drop(ptr %a11) - %t12 = load { ptr, i64, i64 }, ptr %a8 - %t13 = call i64 @finch.host.pid() - call void @finch_str_from_int(ptr %a14, i64 %t13) - %t15 = load { ptr, i64, i64 }, ptr %a14 - store { ptr, i64, i64 } %t12, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - store { ptr, i64, i64 } %t12, ptr %a19 - call void @finch_str_drop(ptr %a19) - store { ptr, i64, i64 } %t15, ptr %a20 - call void @finch_str_drop(ptr %a20) - %t21 = load { ptr, i64, i64 }, ptr %a16 - %t22 = insertvalue %S.lsp.Server %t6, { ptr, i64, i64 } %t21, 1 - store %S.lsp.Server %t22, ptr %a23 - br label %while.cond11266 -while.cond11266: - br label %while.body11267 -while.body11267: - %t24 = call { i1, %S.json.Json, { ptr, i64, i64 } } @finch.lsp.readMessage() - %t25 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 0 - %t26 = xor i1 %t25, true - %t27 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 2 - %t28 = extractvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, 1 - br i1 %t26, label %or.failed11269, label %or.ok11270 -or.failed11269: - store { ptr, i64, i64 } %t27, ptr %a29 - call void @finch_str_drop(ptr %a29) - br label %while.end11268 -or.ok11270: - store %S.json.Json %t28, ptr %a30 - %t31 = load %S.json.Json, ptr %a30 - call void @finch.lsp.Server.answer(ptr %a23, %S.json.Json %t31) - call void @finch.drop.S_json_Json(ptr %a30) - br label %while.cond11266 -while.end11268: - %t32 = getelementptr inbounds %S.lsp.Server, ptr %a23, i32 0, i32 1 - %t33 = load { ptr, i64, i64 }, ptr %t32 - call void @finch.host.removeTree({ ptr, i64, i64 } %t33) - call void @finch.drop.S_lsp_Server(ptr %a23) - ret i64 0 -} - -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.arm11277, label %match.or11279 -match.or11279: - %t4 = icmp eq i32 %t2, 5 - br i1 %t4, label %match.arm11277, label %match.next11278 -match.arm11277: - %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.from11280 -match.from11280: - br label %match.end11276 -match.next11278: - %t8 = icmp eq i32 %t2, 3 - br i1 %t8, label %match.arm11281, label %match.next11282 -match.arm11281: - %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.from11283 -match.from11283: - br label %match.end11276 -match.next11282: - br label %match.arm11284 -match.arm11284: - br label %match.from11286 -match.from11286: - br label %match.end11276 -match.end11276: - %t12 = phi i64 [ %t7, %match.from11280 ], [ %t11, %match.from11283 ], [ 0, %match.from11286 ] - 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.from11287 -logic.from11287: - br i1 %t4, label %logic.rhs11288, label %logic.end11289 -logic.rhs11288: - %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.cond11290 -find.cond11290: - %t12 = load i64, ptr %a11 - %t13 = icmp slt i64 %t12, %t9 - br i1 %t13, label %find.body11291, label %find.end11294 -find.body11291: - %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.hit11292, label %find.next11293 -find.hit11292: - store i64 %t12, ptr %a8 - br label %find.end11294 -find.next11293: - %t20 = add i64 %t12, 1 - store i64 %t20, ptr %a11 - br label %find.cond11290 -find.end11294: - %t21 = load i64, ptr %a8 - %t22 = icmp sge i64 %t21, 0 - br label %logic.rend11295 -logic.rend11295: - br label %logic.end11289 -logic.end11289: - %t23 = phi i1 [ false, %logic.from11287 ], [ %t22, %logic.rend11295 ] - ret i1 %t23 -} - -define internal void @finch.copy.arr_S_json_Json(ptr %dst, ptr %src) { -entry: - %a5 = alloca i64, align 16 - call void @finch_arr_clone_raw(ptr %dst, ptr %src, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t1 = load ptr, ptr %dst - %t2 = load ptr, ptr %src - %t3 = getelementptr inbounds { ptr, i64, i64 }, ptr %src, i32 0, i32 1 - %t4 = load i64, ptr %t3 - store i64 0, ptr %a5 - br label %n.cond11309 -n.cond11309: - %t6 = load i64, ptr %a5 - %t7 = icmp slt i64 %t6, %t4 - br i1 %t7, label %n.body11310, label %n.end11311 -n.body11310: - %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.cond11309 -n.end11311: - ret void -} - -define internal void @finch.copy.S_json_Json(ptr %dst, ptr %src) { -entry: - - %t1 = load %S.json.Json, ptr %src - store %S.json.Json %t1, ptr %dst - %t2 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 3 - %t3 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 3 - call void @finch_str_copy(ptr %t2, ptr %t3) - %t4 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 4 - %t5 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 4 - call void @finch.copy.arr_S_json_Json(ptr %t4, ptr %t5) - %t6 = getelementptr inbounds %S.json.Json, ptr %dst, i32 0, i32 5 - %t7 = getelementptr inbounds %S.json.Json, ptr %src, i32 0, i32 5 - call void @finch.copy.arr_str(ptr %t6, ptr %t7) - ret void -} - -define internal %S.json.Json @finch.json.Json.get(ptr %self, { ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 %then11296, label %endif11298 -then11296: - %t5 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t5 -endif11298: - %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.cond11299 -find.cond11299: - %t13 = load i64, ptr %a12 - %t14 = icmp slt i64 %t13, %t10 - br i1 %t14, label %find.body11300, label %find.end11303 -find.body11300: - %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.hit11301, label %find.next11302 -find.hit11301: - store i64 %t13, ptr %a9 - br label %find.end11303 -find.next11302: - %t21 = add i64 %t13, 1 - store i64 %t21, ptr %a12 - br label %find.cond11299 -find.end11303: - %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 %then11304, label %endif11306 -then11304: - %t26 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t26 -endif11306: - %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 %range11307, label %inrange11308 -range11307: - call void @finch_panic_index(ptr @.str.7269, i64 84, i64 %t28, i64 %t30) - unreachable -inrange11308: - %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.from11312 -logic.from11312: - br i1 %t4, label %logic.end11314, label %logic.rhs11313 -logic.rhs11313: - %t5 = load i64, ptr %a1 - %t6 = icmp slt i64 %t5, 0 - br label %logic.rend11315 -logic.rend11315: - br label %logic.end11314 -logic.end11314: - %t7 = phi i1 [ true, %logic.from11312 ], [ %t6, %logic.rend11315 ] - br label %logic.from11316 -logic.from11316: - br i1 %t7, label %logic.end11318, label %logic.rhs11317 -logic.rhs11317: - %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.rend11319 -logic.rend11319: - br label %logic.end11318 -logic.end11318: - %t13 = phi i1 [ true, %logic.from11316 ], [ %t12, %logic.rend11319 ] - br i1 %t13, label %then11320, label %endif11322 -then11320: - %t14 = call %S.json.Json @finch.json.new_null() - ret %S.json.Json %t14 -endif11322: - %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 %range11323, label %inrange11324 -range11323: - call void @finch_panic_index(ptr @.str.7270, i64 92, i64 %t16, i64 %t18) - unreachable -inrange11324: - %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 %then11325, label %endif11327 -then11325: - %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 -endif11327: - %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 %then11328, label %endif11330 -then11328: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 2 - %t6 = load double, ptr %t5 - ret double %t6 -endif11330: - %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 %then11331, label %endif11333 -then11331: - %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 -endif11333: - %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 %then11334, label %endif11336 -then11334: - %t5 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 1 - %t6 = load i1, ptr %t5 - ret i1 %t6 -endif11336: - %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 - %a35 = alloca %S.json.Json, align 16 - %a39 = alloca { ptr, i64, i64 }, align 16 - %a40 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca %S.json.Json, align 16 - %a50 = alloca %S.json.Json, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - store %S.json.Json %p1, ptr %a2 - %t3 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %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.cond11337 -find.cond11337: - %t10 = load i64, ptr %a9 - %t11 = icmp slt i64 %t10, %t7 - br i1 %t11, label %find.body11338, label %find.end11341 -find.body11338: - %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.hit11339, label %find.next11340 -find.hit11339: - store i64 %t10, ptr %a6 - br label %find.end11341 -find.next11340: - %t18 = add i64 %t10, 1 - store i64 %t18, ptr %a9 - br label %find.cond11337 -find.end11341: - %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 %then11342, label %endif11344 -then11342: - %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 %range11345, label %inrange11346 -range11345: - call void @finch_panic_index(ptr @.str.7271, i64 140, i64 %t25, i64 %t27) - unreachable -inrange11346: - %t29 = extractvalue { ptr, i64, i64 } %t26, 0 - %t30 = getelementptr inbounds %S.json.Json, ptr %t29, i64 %t25 - store %S.json.Json %t23, ptr %a31 - call void @finch.copy.S_json_Json(ptr %a32, ptr %a31) - %t33 = load %S.json.Json, ptr %a32 - %t34 = load %S.json.Json, ptr %t30 - store %S.json.Json %t33, ptr %t30 - store %S.json.Json %t34, ptr %a35 - call void @finch.drop.S_json_Json(ptr %a35) - ret void -endif11344: - %t36 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 5 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %t36, i32 0, i32 1 - %t38 = load { ptr, i64, i64 }, ptr %a1 - store { ptr, i64, i64 } %t38, ptr %a39 - call void @finch_str_copy(ptr %a40, ptr %a39) - %t41 = load { ptr, i64, i64 }, ptr %a40 - %t42 = load i64, ptr %t37 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t36, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t36 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } %t41, ptr %t45 - store i64 %t43, ptr %t37 - %t46 = getelementptr inbounds %S.json.Json, ptr %self, i32 0, i32 4 - %t47 = getelementptr inbounds { ptr, i64, i64 }, ptr %t46, i32 0, i32 1 - %t48 = load %S.json.Json, ptr %a2 - store %S.json.Json %t48, ptr %a49 - call void @finch.copy.S_json_Json(ptr %a50, ptr %a49) - %t51 = load %S.json.Json, ptr %a50 - %t52 = load i64, ptr %t47 - %t53 = add i64 %t52, 1 - call void @finch_arr_reserve(ptr %t46, i64 %t53, i64 ptrtoint (ptr getelementptr (%S.json.Json, ptr null, i32 1) to i64)) - %t54 = load ptr, ptr %t46 - %t55 = getelementptr inbounds %S.json.Json, ptr %t54, i64 %t52 - store %S.json.Json %t51, ptr %t55 - store i64 %t53, ptr %t47 - ret void -} - -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 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a71 = alloca { ptr, i64, i64 }, align 16 - %a72 = alloca { ptr, i64, i64 }, align 16 - %a73 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } %p0, ptr %a1 - %t2 = mul i64 1, ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64) - %t3 = call ptr @finch_alloc(i64 %t2) - %t4 = getelementptr inbounds { ptr, i64, i64 }, ptr %t3, i64 0 - store { ptr, i64, i64 } { ptr @.str.7272, 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.cond11347 -each.cond11347: - %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.body11348, label %each.end11350 -each.body11348: - %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 %then11351, label %else11352 -then11351: - %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.7273, i64 2, i64 0 }, ptr %t27 - store i64 %t25, ptr %t23 - br label %endif11353 -else11352: - %t28 = load i8, ptr %a17 - %t29 = icmp eq i8 %t28, 92 - br i1 %t29, label %then11354, label %else11355 -then11354: - %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.7274, i64 2, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %endif11356 -else11355: - %t35 = load i8, ptr %a17 - %t36 = icmp eq i8 %t35, 10 - br i1 %t36, label %then11357, label %else11358 -then11357: - %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.7275, i64 2, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - br label %endif11359 -else11358: - %t42 = load i8, ptr %a17 - %t43 = icmp eq i8 %t42, 13 - br i1 %t43, label %then11360, label %else11361 -then11360: - %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.7276, i64 2, i64 0 }, ptr %t48 - store i64 %t46, ptr %t44 - br label %endif11362 -else11361: - %t49 = load i8, ptr %a17 - %t50 = icmp eq i8 %t49, 9 - br i1 %t50, label %then11363, label %else11364 -then11363: - %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.7277, i64 2, i64 0 }, ptr %t55 - store i64 %t53, ptr %t51 - br label %endif11365 -else11364: - %t56 = load i64, ptr %a20 - %t57 = icmp slt i64 %t56, 32 - br i1 %t57, label %then11366, label %else11367 -then11366: - %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.7278, i64 4, i64 0 }, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t61, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - %t67 = load i64, ptr %a20 - %t68 = srem i64 %t67, 16 - %t69 = call { ptr, i64, i64 } @finch.json.hexdigit(i64 %t68) - store { ptr, i64, i64 } %t66, ptr %a71 - store { ptr, i64, i64 } %t69, ptr %a72 - call void @finch_str_concat(ptr %a70, ptr %a71, ptr %a72) - store { ptr, i64, i64 } %t66, ptr %a73 - call void @finch_str_drop(ptr %a73) - store { ptr, i64, i64 } %t69, ptr %a74 - call void @finch_str_drop(ptr %a74) - %t75 = load { ptr, i64, i64 }, ptr %a70 - %t76 = load i64, ptr %t58 - %t77 = add i64 %t76, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t77, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t78 = load ptr, ptr %a8 - %t79 = getelementptr inbounds { ptr, i64, i64 }, ptr %t78, i64 %t76 - store { ptr, i64, i64 } %t75, ptr %t79 - store i64 %t77, ptr %t58 - br label %endif11368 -else11367: - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t81 = load i8, ptr %a17 - call void @finch_str_from_char(ptr %a82, i8 signext %t81) - %t83 = load { ptr, i64, i64 }, ptr %a82 - %t84 = load i64, ptr %t80 - %t85 = add i64 %t84, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t85, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t86 = load ptr, ptr %a8 - %t87 = getelementptr inbounds { ptr, i64, i64 }, ptr %t86, i64 %t84 - store { ptr, i64, i64 } %t83, ptr %t87 - store i64 %t85, ptr %t80 - br label %endif11368 -endif11368: - br label %endif11365 -endif11365: - br label %endif11362 -endif11362: - br label %endif11359 -endif11359: - br label %endif11356 -endif11356: - br label %endif11353 -endif11353: - br label %each.step11349 -each.step11349: - %t88 = load i64, ptr %a9 - %t89 = add i64 %t88, 1 - store i64 %t89, ptr %a9 - br label %each.cond11347 -each.end11350: - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - %t91 = load i64, ptr %t90 - %t92 = add i64 %t91, 1 - call void @finch_arr_reserve(ptr %a8, i64 %t92, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t93 = load ptr, ptr %a8 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i64 %t91 - store { ptr, i64, i64 } { ptr @.str.7279, i64 1, i64 0 }, ptr %t94 - store i64 %t92, ptr %t90 - %t95 = getelementptr inbounds { ptr, i64, i64 }, ptr %a8, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7280, i64 0, i64 0 }, ptr %a96 - call void @finch_str_join(ptr %a97, ptr %a8, ptr %a96) - %t98 = load { ptr, i64, i64 }, ptr %a97 - call void @finch.drop.arr_str(ptr %a8) - ret { ptr, i64, i64 } %t98 -} - -define internal { ptr, i64, i64 } @finch.json.hexdigit(i64 %p0) { -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.7281, 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 %range11369, label %inrange11370 -range11369: - call void @finch_panic_index(ptr @.str.7282, i64 175, i64 %t3, i64 %t5) - unreachable -inrange11370: - %t7 = extractvalue { ptr, i64, i64 } %t4, 0 - %t8 = getelementptr inbounds i8, ptr %t7, i64 %t3 - %t9 = load i8, ptr %t8 - call void @finch_str_from_char(ptr %a10, i8 signext %t9) - %t11 = load { ptr, i64, i64 }, ptr %a10 - call void @finch_str_drop(ptr %a2) - ret { ptr, i64, i64 } %t11 -} - -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.from11371 -logic.from11371: - br i1 %t6, label %logic.rhs11372, label %logic.end11373 -logic.rhs11372: - %t7 = load double, ptr %a1 - %t8 = fneg double 1000000000000000.0 - %t9 = fcmp ogt double %t7, %t8 - br label %logic.rend11374 -logic.rend11374: - br label %logic.end11373 -logic.end11373: - %t10 = phi i1 [ false, %logic.from11371 ], [ %t9, %logic.rend11374 ] - br label %logic.from11375 -logic.from11375: - br i1 %t10, label %logic.rhs11376, label %logic.end11377 -logic.rhs11376: - %t11 = load double, ptr %a1 - %t12 = fcmp olt double %t11, 1000000000000000.0 - br label %logic.rend11378 -logic.rend11378: - br label %logic.end11377 -logic.end11377: - %t13 = phi i1 [ false, %logic.from11375 ], [ %t12, %logic.rend11378 ] - br i1 %t13, label %then11379, label %endif11381 -then11379: - %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 -endif11381: - %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 - %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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a23 = alloca { ptr, i64, i64 }, align 16 - %a96 = alloca { ptr, i64, i64 }, align 16 - %a97 = alloca { ptr, i64, i64 }, align 16 - %a98 = alloca { ptr, i64, i64 }, align 16 - %a105 = alloca i64, align 16 - %a113 = alloca i64, align 16 - %a114 = alloca %S.json.Json, align 16 - %a123 = alloca { ptr, i64, i64 }, align 16 - %a124 = alloca { ptr, i64, i64 }, align 16 - %a125 = alloca { ptr, i64, i64 }, align 16 - %a136 = alloca { ptr, i64, i64 }, align 16 - %a137 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a156 = alloca { ptr, i64, i64 }, align 16 - %a157 = alloca { ptr, i64, i64 }, align 16 - %a159 = alloca { ptr, i64, i64 }, align 16 - %a160 = alloca { ptr, i64, i64 }, align 16 - %a161 = alloca { ptr, i64, i64 }, align 16 - %a162 = alloca { ptr, i64, i64 }, align 16 - %a186 = alloca { ptr, i64, i64 }, align 16 - %a187 = alloca { ptr, i64, i64 }, align 16 - %a188 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a203 = alloca i64, align 16 - %a204 = alloca %S.json.Json, align 16 - %a213 = alloca { ptr, i64, i64 }, align 16 - %a214 = alloca { ptr, i64, i64 }, align 16 - %a215 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a238 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a243 = alloca { ptr, i64, i64 }, align 16 - %a244 = alloca { ptr, i64, i64 }, align 16 - %a262 = alloca { ptr, i64, i64 }, align 16 - %a263 = alloca { ptr, i64, i64 }, align 16 - %a264 = alloca { ptr, i64, i64 }, align 16 - %a266 = alloca { ptr, i64, i64 }, align 16 - %a267 = alloca { ptr, i64, i64 }, align 16 - %a268 = alloca { ptr, i64, i64 }, align 16 - %a269 = alloca { ptr, i64, i64 }, align 16 - store %S.json.Json %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - store { ptr, i64, i64 } %p2, ptr %a3 - store ptr %p3, ptr %a4 - store { ptr, i64, i64 } { ptr @.str.7283, i64 0, i64 0 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7284, i64 0, i64 0 }, ptr %a6 - store { ptr, i64, i64 } { ptr @.str.7285, i64 1, i64 0 }, ptr %a7 - store { ptr, i64, i64 } { ptr @.str.7286, 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 %then11382, label %endif11384 -then11382: - %t12 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7287, i64 1, i64 0 }, ptr %a5 - store { ptr, i64, i64 } %t12, ptr %a13 - call void @finch_str_drop(ptr %a13) - %t14 = load { ptr, i64, i64 }, ptr %a3 - %t15 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t14, ptr %a17 - store { ptr, i64, i64 } %t15, ptr %a18 - call void @finch_str_concat(ptr %a16, ptr %a17, ptr %a18) - %t19 = load { ptr, i64, i64 }, ptr %a16 - %t20 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t19, ptr %a6 - store { ptr, i64, i64 } %t20, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } { ptr @.str.7288, i64 2, i64 0 }, ptr %a8 - store { ptr, i64, i64 } %t22, ptr %a23 - call void @finch_str_drop(ptr %a23) - br label %endif11384 -endif11384: - %t24 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 0 - %t25 = load i32, ptr %t24 - %t26 = icmp eq i32 %t25, 0 - br i1 %t26, label %match.arm11386, label %match.next11387 -match.arm11386: - %t27 = load ptr, ptr %a4 - %t28 = icmp eq ptr %t27, null - br i1 %t28, label %panic11388, label %ok11389 -panic11388: - call void @finch_panic(ptr @.str.7289, i64 200, ptr @.str.7290) - unreachable -ok11389: - %t29 = getelementptr inbounds %S.json.Writer, ptr %t27, i32 0, i32 0 - %t30 = getelementptr inbounds { ptr, i64, i64 }, ptr %t29, i32 0, i32 1 - %t31 = load i64, ptr %t30 - %t32 = add i64 %t31, 1 - call void @finch_arr_reserve(ptr %t29, i64 %t32, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t33 = load ptr, ptr %t29 - %t34 = getelementptr inbounds { ptr, i64, i64 }, ptr %t33, i64 %t31 - store { ptr, i64, i64 } { ptr @.str.7291, i64 4, i64 0 }, ptr %t34 - store i64 %t32, ptr %t30 - br label %match.end11385 -match.next11387: - %t35 = icmp eq i32 %t25, 1 - br i1 %t35, label %match.arm11390, label %match.next11391 -match.arm11390: - %t36 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 1 - %t37 = load i1, ptr %t36 - br i1 %t37, label %then11392, label %else11393 -then11392: - %t38 = load ptr, ptr %a4 - %t39 = icmp eq ptr %t38, null - br i1 %t39, label %panic11395, label %ok11396 -panic11395: - call void @finch_panic(ptr @.str.7292, i64 203, ptr @.str.7293) - unreachable -ok11396: - %t40 = getelementptr inbounds %S.json.Writer, ptr %t38, i32 0, i32 0 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = add i64 %t42, 1 - call void @finch_arr_reserve(ptr %t40, i64 %t43, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t44 = load ptr, ptr %t40 - %t45 = getelementptr inbounds { ptr, i64, i64 }, ptr %t44, i64 %t42 - store { ptr, i64, i64 } { ptr @.str.7294, i64 4, i64 0 }, ptr %t45 - store i64 %t43, ptr %t41 - br label %endif11394 -else11393: - %t46 = load ptr, ptr %a4 - %t47 = icmp eq ptr %t46, null - br i1 %t47, label %panic11397, label %ok11398 -panic11397: - call void @finch_panic(ptr @.str.7295, i64 205, ptr @.str.7296) - unreachable -ok11398: - %t48 = getelementptr inbounds %S.json.Writer, ptr %t46, i32 0, i32 0 - %t49 = getelementptr inbounds { ptr, i64, i64 }, ptr %t48, i32 0, i32 1 - %t50 = load i64, ptr %t49 - %t51 = add i64 %t50, 1 - call void @finch_arr_reserve(ptr %t48, i64 %t51, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t52 = load ptr, ptr %t48 - %t53 = getelementptr inbounds { ptr, i64, i64 }, ptr %t52, i64 %t50 - store { ptr, i64, i64 } { ptr @.str.7297, i64 5, i64 0 }, ptr %t53 - store i64 %t51, ptr %t49 - br label %endif11394 -endif11394: - br label %match.end11385 -match.next11391: - %t54 = icmp eq i32 %t25, 2 - br i1 %t54, label %match.arm11399, label %match.next11400 -match.arm11399: - %t55 = load ptr, ptr %a4 - %t56 = icmp eq ptr %t55, null - br i1 %t56, label %panic11401, label %ok11402 -panic11401: - call void @finch_panic(ptr @.str.7298, i64 208, ptr @.str.7299) - unreachable -ok11402: - %t57 = getelementptr inbounds %S.json.Writer, ptr %t55, i32 0, i32 0 - %t58 = getelementptr inbounds { ptr, i64, i64 }, ptr %t57, i32 0, i32 1 - %t59 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 2 - %t60 = load double, ptr %t59 - %t61 = call { ptr, i64, i64 } @finch.json.number_text(double %t60) - %t62 = load i64, ptr %t58 - %t63 = add i64 %t62, 1 - call void @finch_arr_reserve(ptr %t57, i64 %t63, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t64 = load ptr, ptr %t57 - %t65 = getelementptr inbounds { ptr, i64, i64 }, ptr %t64, i64 %t62 - store { ptr, i64, i64 } %t61, ptr %t65 - store i64 %t63, ptr %t58 - br label %match.end11385 -match.next11400: - %t66 = icmp eq i32 %t25, 3 - br i1 %t66, label %match.arm11403, label %match.next11404 -match.arm11403: - %t67 = load ptr, ptr %a4 - %t68 = icmp eq ptr %t67, null - br i1 %t68, label %panic11405, label %ok11406 -panic11405: - call void @finch_panic(ptr @.str.7300, i64 209, ptr @.str.7301) - unreachable -ok11406: - %t69 = getelementptr inbounds %S.json.Writer, ptr %t67, i32 0, i32 0 - %t70 = getelementptr inbounds { ptr, i64, i64 }, ptr %t69, i32 0, i32 1 - %t71 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 3 - %t72 = load { ptr, i64, i64 }, ptr %t71 - %t73 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t72) - %t74 = load i64, ptr %t70 - %t75 = add i64 %t74, 1 - call void @finch_arr_reserve(ptr %t69, i64 %t75, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t76 = load ptr, ptr %t69 - %t77 = getelementptr inbounds { ptr, i64, i64 }, ptr %t76, i64 %t74 - store { ptr, i64, i64 } %t73, ptr %t77 - store i64 %t75, ptr %t70 - br label %match.end11385 -match.next11404: - %t78 = icmp eq i32 %t25, 4 - br i1 %t78, label %match.arm11407, label %match.next11408 -match.arm11407: - %t79 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t80 = getelementptr inbounds { ptr, i64, i64 }, ptr %t79, i32 0, i32 1 - %t81 = load i64, ptr %t80 - %t82 = icmp eq i64 %t81, 0 - br i1 %t82, label %then11409, label %endif11411 -then11409: - %t83 = load ptr, ptr %a4 - %t84 = icmp eq ptr %t83, null - br i1 %t84, label %panic11412, label %ok11413 -panic11412: - call void @finch_panic(ptr @.str.7302, i64 212, ptr @.str.7303) - unreachable -ok11413: - %t85 = getelementptr inbounds %S.json.Writer, ptr %t83, i32 0, i32 0 - %t86 = getelementptr inbounds { ptr, i64, i64 }, ptr %t85, i32 0, i32 1 - %t87 = load i64, ptr %t86 - %t88 = add i64 %t87, 1 - call void @finch_arr_reserve(ptr %t85, i64 %t88, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t89 = load ptr, ptr %t85 - %t90 = getelementptr inbounds { ptr, i64, i64 }, ptr %t89, i64 %t87 - store { ptr, i64, i64 } { ptr @.str.7304, i64 2, i64 0 }, ptr %t90 - store i64 %t88, ptr %t86 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11411: - %t91 = load ptr, ptr %a4 - %t92 = icmp eq ptr %t91, null - br i1 %t92, label %panic11414, label %ok11415 -panic11414: - call void @finch_panic(ptr @.str.7305, i64 215, ptr @.str.7306) - unreachable -ok11415: - %t93 = getelementptr inbounds %S.json.Writer, ptr %t91, i32 0, i32 0 - %t94 = getelementptr inbounds { ptr, i64, i64 }, ptr %t93, i32 0, i32 1 - %t95 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7307, i64 1, i64 0 }, ptr %a97 - store { ptr, i64, i64 } %t95, ptr %a98 - call void @finch_str_concat(ptr %a96, ptr %a97, ptr %a98) - %t99 = load { ptr, i64, i64 }, ptr %a96 - %t100 = load i64, ptr %t94 - %t101 = add i64 %t100, 1 - call void @finch_arr_reserve(ptr %t93, i64 %t101, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t102 = load ptr, ptr %t93 - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %t102, i64 %t100 - store { ptr, i64, i64 } %t99, ptr %t103 - store i64 %t101, ptr %t94 - %t104 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a105 - br label %each.cond11416 -each.cond11416: - %t106 = getelementptr inbounds { ptr, i64, i64 }, ptr %t104, i32 0, i32 1 - %t107 = load i64, ptr %t106 - %t108 = load i64, ptr %a105 - %t109 = icmp slt i64 %t108, %t107 - br i1 %t109, label %each.body11417, label %each.end11419 -each.body11417: - %t110 = load ptr, ptr %t104 - %t111 = getelementptr inbounds %S.json.Json, ptr %t110, i64 %t108 - %t112 = load %S.json.Json, ptr %t111 - store i64 %t108, ptr %a113 - store %S.json.Json %t112, ptr %a114 - %t115 = load i64, ptr %a113 - %t116 = icmp sgt i64 %t115, 0 - br i1 %t116, label %then11420, label %endif11422 -then11420: - %t117 = load ptr, ptr %a4 - %t118 = icmp eq ptr %t117, null - br i1 %t118, label %panic11423, label %ok11424 -panic11423: - call void @finch_panic(ptr @.str.7308, i64 218, ptr @.str.7309) - unreachable -ok11424: - %t119 = getelementptr inbounds %S.json.Writer, ptr %t117, i32 0, i32 0 - %t120 = getelementptr inbounds { ptr, i64, i64 }, ptr %t119, i32 0, i32 1 - %t121 = load { ptr, i64, i64 }, ptr %a7 - %t122 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t121, ptr %a124 - store { ptr, i64, i64 } %t122, ptr %a125 - call void @finch_str_concat(ptr %a123, ptr %a124, ptr %a125) - %t126 = load { ptr, i64, i64 }, ptr %a123 - %t127 = load i64, ptr %t120 - %t128 = add i64 %t127, 1 - call void @finch_arr_reserve(ptr %t119, i64 %t128, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t129 = load ptr, ptr %t119 - %t130 = getelementptr inbounds { ptr, i64, i64 }, ptr %t129, i64 %t127 - store { ptr, i64, i64 } %t126, ptr %t130 - store i64 %t128, ptr %t120 - br label %endif11422 -endif11422: - %t131 = load ptr, ptr %a4 - %t132 = icmp eq ptr %t131, null - br i1 %t132, label %panic11425, label %ok11426 -panic11425: - call void @finch_panic(ptr @.str.7310, i64 220, ptr @.str.7311) - unreachable -ok11426: - %t133 = getelementptr inbounds %S.json.Writer, ptr %t131, i32 0, i32 0 - %t134 = getelementptr inbounds { ptr, i64, i64 }, ptr %t133, i32 0, i32 1 - %t135 = load { ptr, i64, i64 }, ptr %a6 - store { ptr, i64, i64 } %t135, ptr %a136 - call void @finch_str_copy(ptr %a137, ptr %a136) - %t138 = load { ptr, i64, i64 }, ptr %a137 - %t139 = load i64, ptr %t134 - %t140 = add i64 %t139, 1 - call void @finch_arr_reserve(ptr %t133, i64 %t140, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t141 = load ptr, ptr %t133 - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %t141, i64 %t139 - store { ptr, i64, i64 } %t138, ptr %t142 - store i64 %t140, ptr %t134 - %t143 = load %S.json.Json, ptr %a114 - %t144 = load { ptr, i64, i64 }, ptr %a2 - %t145 = load { ptr, i64, i64 }, ptr %a6 - %t146 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t143, { ptr, i64, i64 } %t144, { ptr, i64, i64 } %t145, ptr %t146) - br label %each.step11418 -each.step11418: - %t147 = load i64, ptr %a105 - %t148 = add i64 %t147, 1 - store i64 %t148, ptr %a105 - br label %each.cond11416 -each.end11419: - %t149 = load ptr, ptr %a4 - %t150 = icmp eq ptr %t149, null - br i1 %t150, label %panic11427, label %ok11428 -panic11427: - call void @finch_panic(ptr @.str.7312, i64 223, ptr @.str.7313) - unreachable -ok11428: - %t151 = getelementptr inbounds %S.json.Writer, ptr %t149, i32 0, i32 0 - %t152 = getelementptr inbounds { ptr, i64, i64 }, ptr %t151, i32 0, i32 1 - %t153 = load { ptr, i64, i64 }, ptr %a5 - %t154 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t153, ptr %a156 - store { ptr, i64, i64 } %t154, ptr %a157 - call void @finch_str_concat(ptr %a155, ptr %a156, ptr %a157) - %t158 = load { ptr, i64, i64 }, ptr %a155 - store { ptr, i64, i64 } %t158, ptr %a160 - store { ptr, i64, i64 } { ptr @.str.7314, i64 1, i64 0 }, ptr %a161 - call void @finch_str_concat(ptr %a159, ptr %a160, ptr %a161) - store { ptr, i64, i64 } %t158, ptr %a162 - call void @finch_str_drop(ptr %a162) - %t163 = load { ptr, i64, i64 }, ptr %a159 - %t164 = load i64, ptr %t152 - %t165 = add i64 %t164, 1 - call void @finch_arr_reserve(ptr %t151, i64 %t165, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t166 = load ptr, ptr %t151 - %t167 = getelementptr inbounds { ptr, i64, i64 }, ptr %t166, i64 %t164 - store { ptr, i64, i64 } %t163, ptr %t167 - store i64 %t165, ptr %t152 - br label %match.end11385 -match.next11408: - %t168 = icmp eq i32 %t25, 5 - br i1 %t168, label %match.arm11429, label %match.next11430 -match.arm11429: - %t169 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - %t170 = getelementptr inbounds { ptr, i64, i64 }, ptr %t169, i32 0, i32 1 - %t171 = load i64, ptr %t170 - %t172 = icmp eq i64 %t171, 0 - br i1 %t172, label %then11431, label %endif11433 -then11431: - %t173 = load ptr, ptr %a4 - %t174 = icmp eq ptr %t173, null - br i1 %t174, label %panic11434, label %ok11435 -panic11434: - call void @finch_panic(ptr @.str.7315, i64 227, ptr @.str.7316) - unreachable -ok11435: - %t175 = getelementptr inbounds %S.json.Writer, ptr %t173, i32 0, i32 0 - %t176 = getelementptr inbounds { ptr, i64, i64 }, ptr %t175, i32 0, i32 1 - %t177 = load i64, ptr %t176 - %t178 = add i64 %t177, 1 - call void @finch_arr_reserve(ptr %t175, i64 %t178, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t179 = load ptr, ptr %t175 - %t180 = getelementptr inbounds { ptr, i64, i64 }, ptr %t179, i64 %t177 - store { ptr, i64, i64 } { ptr @.str.7317, i64 2, i64 0 }, ptr %t180 - store i64 %t178, ptr %t176 - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -endif11433: - %t181 = load ptr, ptr %a4 - %t182 = icmp eq ptr %t181, null - br i1 %t182, label %panic11436, label %ok11437 -panic11436: - call void @finch_panic(ptr @.str.7318, i64 230, ptr @.str.7319) - unreachable -ok11437: - %t183 = getelementptr inbounds %S.json.Writer, ptr %t181, i32 0, i32 0 - %t184 = getelementptr inbounds { ptr, i64, i64 }, ptr %t183, i32 0, i32 1 - %t185 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } { ptr @.str.7320, i64 1, i64 0 }, ptr %a187 - store { ptr, i64, i64 } %t185, ptr %a188 - call void @finch_str_concat(ptr %a186, ptr %a187, ptr %a188) - %t189 = load { ptr, i64, i64 }, ptr %a186 - %t190 = load i64, ptr %t184 - %t191 = add i64 %t190, 1 - call void @finch_arr_reserve(ptr %t183, i64 %t191, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t192 = load ptr, ptr %t183 - %t193 = getelementptr inbounds { ptr, i64, i64 }, ptr %t192, i64 %t190 - store { ptr, i64, i64 } %t189, ptr %t193 - store i64 %t191, ptr %t184 - %t194 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 4 - store i64 0, ptr %a195 - br label %each.cond11438 -each.cond11438: - %t196 = getelementptr inbounds { ptr, i64, i64 }, ptr %t194, i32 0, i32 1 - %t197 = load i64, ptr %t196 - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, %t197 - br i1 %t199, label %each.body11439, label %each.end11441 -each.body11439: - %t200 = load ptr, ptr %t194 - %t201 = getelementptr inbounds %S.json.Json, ptr %t200, i64 %t198 - %t202 = load %S.json.Json, ptr %t201 - store i64 %t198, ptr %a203 - store %S.json.Json %t202, ptr %a204 - %t205 = load i64, ptr %a203 - %t206 = icmp sgt i64 %t205, 0 - br i1 %t206, label %then11442, label %endif11444 -then11442: - %t207 = load ptr, ptr %a4 - %t208 = icmp eq ptr %t207, null - br i1 %t208, label %panic11445, label %ok11446 -panic11445: - call void @finch_panic(ptr @.str.7321, i64 233, ptr @.str.7322) - unreachable -ok11446: - %t209 = getelementptr inbounds %S.json.Writer, ptr %t207, i32 0, i32 0 - %t210 = getelementptr inbounds { ptr, i64, i64 }, ptr %t209, i32 0, i32 1 - %t211 = load { ptr, i64, i64 }, ptr %a7 - %t212 = load { ptr, i64, i64 }, ptr %a5 - store { ptr, i64, i64 } %t211, ptr %a214 - store { ptr, i64, i64 } %t212, ptr %a215 - call void @finch_str_concat(ptr %a213, ptr %a214, ptr %a215) - %t216 = load { ptr, i64, i64 }, ptr %a213 - %t217 = load i64, ptr %t210 - %t218 = add i64 %t217, 1 - call void @finch_arr_reserve(ptr %t209, i64 %t218, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t219 = load ptr, ptr %t209 - %t220 = getelementptr inbounds { ptr, i64, i64 }, ptr %t219, i64 %t217 - store { ptr, i64, i64 } %t216, ptr %t220 - store i64 %t218, ptr %t210 - br label %endif11444 -endif11444: - %t221 = load ptr, ptr %a4 - %t222 = icmp eq ptr %t221, null - br i1 %t222, label %panic11447, label %ok11448 -panic11447: - call void @finch_panic(ptr @.str.7323, i64 235, ptr @.str.7324) - unreachable -ok11448: - %t223 = getelementptr inbounds %S.json.Writer, ptr %t221, i32 0, i32 0 - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %t223, i32 0, i32 1 - %t225 = load { ptr, i64, i64 }, ptr %a6 - %t226 = getelementptr inbounds %S.json.Json, ptr %a1, i32 0, i32 5 - %t227 = load i64, ptr %a203 - %t228 = load { ptr, i64, i64 }, ptr %t226 - %t229 = extractvalue { ptr, i64, i64 } %t228, 1 - %t230 = icmp uge i64 %t227, %t229 - br i1 %t230, label %range11449, label %inrange11450 -range11449: - call void @finch_panic_index(ptr @.str.7325, i64 235, i64 %t227, i64 %t229) - unreachable -inrange11450: - %t231 = extractvalue { ptr, i64, i64 } %t228, 0 - %t232 = getelementptr inbounds { ptr, i64, i64 }, ptr %t231, i64 %t227 - %t233 = load { ptr, i64, i64 }, ptr %t232 - %t234 = call { ptr, i64, i64 } @finch.json.quote({ ptr, i64, i64 } %t233) - store { ptr, i64, i64 } %t225, ptr %a236 - store { ptr, i64, i64 } %t234, ptr %a237 - call void @finch_str_concat(ptr %a235, ptr %a236, ptr %a237) - store { ptr, i64, i64 } %t234, ptr %a238 - call void @finch_str_drop(ptr %a238) - %t239 = load { ptr, i64, i64 }, ptr %a235 - %t240 = load { ptr, i64, i64 }, ptr %a8 - store { ptr, i64, i64 } %t239, ptr %a242 - store { ptr, i64, i64 } %t240, ptr %a243 - call void @finch_str_concat(ptr %a241, ptr %a242, ptr %a243) - store { ptr, i64, i64 } %t239, ptr %a244 - call void @finch_str_drop(ptr %a244) - %t245 = load { ptr, i64, i64 }, ptr %a241 - %t246 = load i64, ptr %t224 - %t247 = add i64 %t246, 1 - call void @finch_arr_reserve(ptr %t223, i64 %t247, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t248 = load ptr, ptr %t223 - %t249 = getelementptr inbounds { ptr, i64, i64 }, ptr %t248, i64 %t246 - store { ptr, i64, i64 } %t245, ptr %t249 - store i64 %t247, ptr %t224 - %t250 = load %S.json.Json, ptr %a204 - %t251 = load { ptr, i64, i64 }, ptr %a2 - %t252 = load { ptr, i64, i64 }, ptr %a6 - %t253 = load ptr, ptr %a4 - call void @finch.json.write(%S.json.Json %t250, { ptr, i64, i64 } %t251, { ptr, i64, i64 } %t252, ptr %t253) - br label %each.step11440 -each.step11440: - %t254 = load i64, ptr %a195 - %t255 = add i64 %t254, 1 - store i64 %t255, ptr %a195 - br label %each.cond11438 -each.end11441: - %t256 = load ptr, ptr %a4 - %t257 = icmp eq ptr %t256, null - br i1 %t257, label %panic11451, label %ok11452 -panic11451: - call void @finch_panic(ptr @.str.7326, i64 238, ptr @.str.7327) - unreachable -ok11452: - %t258 = getelementptr inbounds %S.json.Writer, ptr %t256, i32 0, i32 0 - %t259 = getelementptr inbounds { ptr, i64, i64 }, ptr %t258, i32 0, i32 1 - %t260 = load { ptr, i64, i64 }, ptr %a5 - %t261 = load { ptr, i64, i64 }, ptr %a3 - store { ptr, i64, i64 } %t260, ptr %a263 - store { ptr, i64, i64 } %t261, ptr %a264 - call void @finch_str_concat(ptr %a262, ptr %a263, ptr %a264) - %t265 = load { ptr, i64, i64 }, ptr %a262 - store { ptr, i64, i64 } %t265, ptr %a267 - store { ptr, i64, i64 } { ptr @.str.7328, i64 1, i64 0 }, ptr %a268 - call void @finch_str_concat(ptr %a266, ptr %a267, ptr %a268) - store { ptr, i64, i64 } %t265, ptr %a269 - call void @finch_str_drop(ptr %a269) - %t270 = load { ptr, i64, i64 }, ptr %a266 - %t271 = load i64, ptr %t259 - %t272 = add i64 %t271, 1 - call void @finch_arr_reserve(ptr %t258, i64 %t272, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t273 = load ptr, ptr %t258 - %t274 = getelementptr inbounds { ptr, i64, i64 }, ptr %t273, i64 %t271 - store { ptr, i64, i64 } %t270, ptr %t274 - store i64 %t272, ptr %t259 - br label %match.end11385 -match.next11430: - br i1 true, label %panic11453, label %ok11454 -panic11453: - call void @finch_panic(ptr @.str.7329, i64 199, ptr @.str.7330) - unreachable -ok11454: - unreachable -match.end11385: - call void @finch_str_drop(ptr %a8) - call void @finch_str_drop(ptr %a7) - call void @finch_str_drop(ptr %a6) - call void @finch_str_drop(ptr %a5) - ret void -} - -define internal void @finch.drop.S_json_Writer(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Writer, ptr %a, i32 0, i32 0 - call void @finch.drop.arr_str(ptr %t1) - ret void -} - -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.7331, i64 0, i64 0 }, { ptr, i64, i64 } { ptr @.str.7332, 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.7333, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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.7334, i64 2, i64 0 }, { ptr, i64, i64 } { ptr @.str.7335, 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.7336, i64 0, i64 0 }, ptr %a6 - call void @finch_str_join(ptr %a7, ptr %t4, ptr %a6) - %t8 = load { ptr, i64, i64 }, ptr %a7 - call void @finch.drop.S_json_Writer(ptr %a2) - ret { ptr, i64, i64 } %t8 -} - -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 - %a42 = alloca { ptr, i64, i64 }, align 16 - %a44 = alloca { ptr, i64, i64 }, align 16 - %a45 = alloca { ptr, i64, i64 }, align 16 - %a46 = alloca { ptr, i64, i64 }, align 16 - %a47 = alloca { ptr, i64, i64 }, align 16 - %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 - %a55 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store i64 1, ptr %a2 - store i64 1, ptr %a3 - %t4 = load ptr, ptr %a1 - %t5 = icmp eq ptr %t4, null - br i1 %t5, label %panic11455, label %ok11456 -panic11455: - call void @finch_panic(ptr @.str.7337, i64 268, ptr @.str.7338) - unreachable -ok11456: - %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.cond11457 -for.cond11457: - %t9 = load i64, ptr %a8 - %t10 = icmp slt i64 %t9, %t7 - br i1 %t10, label %for.body11458, label %for.end11460 -for.body11458: - %t11 = load i64, ptr %a8 - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11461, label %ok11462 -panic11461: - call void @finch_panic(ptr @.str.7339, i64 269, ptr @.str.7340) - unreachable -ok11462: - %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.from11463 -logic.from11463: - br i1 %t17, label %logic.rhs11464, label %logic.end11465 -logic.rhs11464: - %t18 = load ptr, ptr %a1 - %t19 = icmp eq ptr %t18, null - br i1 %t19, label %panic11466, label %ok11467 -panic11466: - call void @finch_panic(ptr @.str.7341, i64 269, ptr @.str.7342) - unreachable -ok11467: - %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 %range11468, label %inrange11469 -range11468: - call void @finch_panic_index(ptr @.str.7343, i64 269, i64 %t21, i64 %t23) - unreachable -inrange11469: - %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.rend11470 -logic.rend11470: - br label %logic.end11465 -logic.end11465: - %t29 = phi i1 [ false, %logic.from11463 ], [ %t28, %logic.rend11470 ] - br i1 %t29, label %then11471, label %else11472 -then11471: - %t30 = load i64, ptr %a2 - %t31 = add i64 %t30, 1 - store i64 %t31, ptr %a2 - store i64 1, ptr %a3 - br label %endif11473 -else11472: - %t32 = load i64, ptr %a3 - %t33 = add i64 %t32, 1 - store i64 %t33, ptr %a3 - br label %endif11473 -endif11473: - br label %for.step11459 -for.step11459: - %t34 = load i64, ptr %a8 - %t35 = add i64 %t34, 1 - store i64 %t35, ptr %a8 - br label %for.cond11457 -for.end11460: - %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.7344, i64 5, i64 0 }, ptr %a40 - store { ptr, i64, i64 } %t38, ptr %a41 - call void @finch_str_concat(ptr %a39, ptr %a40, ptr %a41) - store { ptr, i64, i64 } %t38, ptr %a42 - call void @finch_str_drop(ptr %a42) - %t43 = load { ptr, i64, i64 }, ptr %a39 - store { ptr, i64, i64 } %t43, ptr %a45 - store { ptr, i64, i64 } { ptr @.str.7345, i64 9, i64 0 }, ptr %a46 - call void @finch_str_concat(ptr %a44, ptr %a45, ptr %a46) - store { ptr, i64, i64 } %t43, ptr %a47 - call void @finch_str_drop(ptr %a47) - %t48 = load { ptr, i64, i64 }, ptr %a44 - %t49 = load i64, ptr %a3 - call void @finch_str_from_int(ptr %a50, i64 %t49) - %t51 = load { ptr, i64, i64 }, ptr %a50 - store { ptr, i64, i64 } %t48, ptr %a53 - store { ptr, i64, i64 } %t51, ptr %a54 - call void @finch_str_concat(ptr %a52, ptr %a53, ptr %a54) - store { ptr, i64, i64 } %t48, ptr %a55 - call void @finch_str_drop(ptr %a55) - store { ptr, i64, i64 } %t51, ptr %a56 - call void @finch_str_drop(ptr %a56) - %t57 = load { ptr, i64, i64 }, ptr %a52 - ret { ptr, i64, i64 } %t57 -} - -define internal i8 @finch.json.peek(ptr %p0) { -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 %panic11474, label %ok11475 -panic11474: - call void @finch_panic(ptr @.str.7346, i64 280, ptr @.str.7347) - unreachable -ok11475: - %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 %panic11476, label %ok11477 -panic11476: - call void @finch_panic(ptr @.str.7348, i64 280, ptr @.str.7349) - unreachable -ok11477: - %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 %then11478, label %endif11480 -then11478: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11481, label %ok11482 -panic11481: - call void @finch_panic(ptr @.str.7350, i64 281, ptr @.str.7351) - unreachable -ok11482: - %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 %panic11483, label %ok11484 -panic11483: - call void @finch_panic(ptr @.str.7352, i64 281, ptr @.str.7353) - unreachable -ok11484: - %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 %range11485, label %inrange11486 -range11485: - call void @finch_panic_index(ptr @.str.7354, i64 281, i64 %t18, i64 %t20) - unreachable -inrange11486: - %t22 = extractvalue { ptr, i64, i64 } %t19, 0 - %t23 = getelementptr inbounds i8, ptr %t22, i64 %t18 - %t24 = load i8, ptr %t23 - ret i8 %t24 -endif11480: - %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.cond11487 -while.cond11487: - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11490, label %ok11491 -panic11490: - call void @finch_panic(ptr @.str.7355, i64 287, ptr @.str.7356) - unreachable -ok11491: - %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 %panic11492, label %ok11493 -panic11492: - call void @finch_panic(ptr @.str.7357, i64 287, ptr @.str.7358) - unreachable -ok11493: - %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.from11494 -logic.from11494: - br i1 %t11, label %logic.rhs11495, label %logic.end11496 -logic.rhs11495: - %t12 = load ptr, ptr %a1 - %t13 = icmp eq ptr %t12, null - br i1 %t13, label %panic11497, label %ok11498 -panic11497: - call void @finch_panic(ptr @.str.7359, i64 287, ptr @.str.7360) - unreachable -ok11498: - %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 %panic11499, label %ok11500 -panic11499: - call void @finch_panic(ptr @.str.7361, i64 287, ptr @.str.7362) - unreachable -ok11500: - %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 %range11501, label %inrange11502 -range11501: - call void @finch_panic_index(ptr @.str.7363, i64 287, i64 %t18, i64 %t20) - unreachable -inrange11502: - %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.from11503 -logic.from11503: - br i1 %t25, label %logic.end11505, label %logic.rhs11504 -logic.rhs11504: - %t26 = load ptr, ptr %a1 - %t27 = icmp eq ptr %t26, null - br i1 %t27, label %panic11506, label %ok11507 -panic11506: - call void @finch_panic(ptr @.str.7364, i64 287, ptr @.str.7365) - unreachable -ok11507: - %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 %panic11508, label %ok11509 -panic11508: - call void @finch_panic(ptr @.str.7366, i64 287, ptr @.str.7367) - unreachable -ok11509: - %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 %range11510, label %inrange11511 -range11510: - call void @finch_panic_index(ptr @.str.7368, i64 287, i64 %t32, i64 %t34) - unreachable -inrange11511: - %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.rend11512 -logic.rend11512: - br label %logic.end11505 -logic.end11505: - %t40 = phi i1 [ true, %logic.from11503 ], [ %t39, %logic.rend11512 ] - br label %logic.from11513 -logic.from11513: - br i1 %t40, label %logic.end11515, label %logic.rhs11514 -logic.rhs11514: - %t41 = load ptr, ptr %a1 - %t42 = icmp eq ptr %t41, null - br i1 %t42, label %panic11516, label %ok11517 -panic11516: - call void @finch_panic(ptr @.str.7369, i64 287, ptr @.str.7370) - unreachable -ok11517: - %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 %panic11518, label %ok11519 -panic11518: - call void @finch_panic(ptr @.str.7371, i64 287, ptr @.str.7372) - unreachable -ok11519: - %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 %range11520, label %inrange11521 -range11520: - call void @finch_panic_index(ptr @.str.7373, i64 287, i64 %t47, i64 %t49) - unreachable -inrange11521: - %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.rend11522 -logic.rend11522: - br label %logic.end11515 -logic.end11515: - %t55 = phi i1 [ true, %logic.from11513 ], [ %t54, %logic.rend11522 ] - br label %logic.from11523 -logic.from11523: - br i1 %t55, label %logic.end11525, label %logic.rhs11524 -logic.rhs11524: - %t56 = load ptr, ptr %a1 - %t57 = icmp eq ptr %t56, null - br i1 %t57, label %panic11526, label %ok11527 -panic11526: - call void @finch_panic(ptr @.str.7374, i64 287, ptr @.str.7375) - unreachable -ok11527: - %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 %panic11528, label %ok11529 -panic11528: - call void @finch_panic(ptr @.str.7376, i64 287, ptr @.str.7377) - unreachable -ok11529: - %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 %range11530, label %inrange11531 -range11530: - call void @finch_panic_index(ptr @.str.7378, i64 287, i64 %t62, i64 %t64) - unreachable -inrange11531: - %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.rend11532 -logic.rend11532: - br label %logic.end11525 -logic.end11525: - %t70 = phi i1 [ true, %logic.from11523 ], [ %t69, %logic.rend11532 ] - br label %logic.rend11533 -logic.rend11533: - br label %logic.end11496 -logic.end11496: - %t71 = phi i1 [ false, %logic.from11494 ], [ %t70, %logic.rend11533 ] - br i1 %t71, label %while.body11488, label %while.end11489 -while.body11488: - %t72 = load ptr, ptr %a1 - %t73 = icmp eq ptr %t72, null - br i1 %t73, label %panic11534, label %ok11535 -panic11534: - call void @finch_panic(ptr @.str.7379, i64 288, ptr @.str.7380) - unreachable -ok11535: - %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.cond11487 -while.end11489: - 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 - %a21 = alloca { ptr, i64, i64 }, align 16 - %a25 = alloca { ptr, i64, i64 }, align 16 - %a26 = alloca { ptr, i64, i64 }, align 16 - %a27 = alloca { ptr, i64, i64 }, align 16 - %a28 = alloca { ptr, i64, i64 }, align 16 - %a29 = alloca { ptr, i64, i64 }, align 16 - %a31 = alloca { ptr, i64, i64 }, align 16 - %a32 = alloca { ptr, i64, i64 }, align 16 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a34 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca { ptr, i64, i64 }, align 16 - %a51 = alloca { ptr, i64, i64 }, align 16 - %a52 = alloca { ptr, i64, i64 }, align 16 - %a53 = alloca { ptr, i64, i64 }, align 16 - %a54 = alloca { ptr, i64, i64 }, align 16 - %a56 = alloca { ptr, i64, i64 }, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a59 = alloca { ptr, i64, i64 }, align 16 - %a62 = alloca { ptr, i64, i64 }, align 16 - %a63 = alloca { ptr, i64, i64 }, align 16 - %a64 = alloca { ptr, i64, i64 }, align 16 - %a65 = alloca { ptr, i64, i64 }, align 16 - %a67 = alloca { ptr, i64, i64 }, align 16 - %a68 = alloca { ptr, i64, i64 }, align 16 - %a69 = alloca { ptr, i64, i64 }, align 16 - %a70 = alloca { ptr, i64, i64 }, align 16 - %a74 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a77 = alloca { ptr, i64, i64 }, align 16 - %a78 = alloca { ptr, i64, i64 }, align 16 - %a80 = alloca { ptr, i64, i64 }, align 16 - %a81 = alloca { ptr, i64, i64 }, align 16 - %a82 = alloca { ptr, i64, i64 }, align 16 - %a83 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11536, label %ok11537 -panic11536: - call void @finch_panic(ptr @.str.7381, i64 293, ptr @.str.7382) - unreachable -ok11537: - %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 %panic11538, label %ok11539 -panic11538: - call void @finch_panic(ptr @.str.7383, i64 293, ptr @.str.7384) - unreachable -ok11539: - %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 %then11540, label %endif11542 -then11540: - %t13 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7385, 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.7386, i64 12, i64 0 }, ptr %a20 - call void @finch_str_concat(ptr %a18, ptr %a19, ptr %a20) - store { ptr, i64, i64 } %t17, ptr %a21 - call void @finch_str_drop(ptr %a21) - %t22 = load { ptr, i64, i64 }, ptr %a18 - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } %t22, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t22, ptr %a28 - call void @finch_str_drop(ptr %a28) - store { ptr, i64, i64 } %t24, ptr %a29 - call void @finch_str_drop(ptr %a29) - %t30 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t30, ptr %a32 - store { ptr, i64, i64 } { ptr @.str.7387, i64 1, i64 0 }, ptr %a33 - call void @finch_str_concat(ptr %a31, ptr %a32, ptr %a33) - store { ptr, i64, i64 } %t30, ptr %a34 - call void @finch_str_drop(ptr %a34) - %t35 = load { ptr, i64, i64 }, ptr %a31 - ret { ptr, i64, i64 } %t35 -endif11542: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11543, label %ok11544 -panic11543: - call void @finch_panic(ptr @.str.7389, i64 296, ptr @.str.7390) - unreachable -ok11544: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11545, label %ok11546 -panic11545: - call void @finch_panic(ptr @.str.7391, i64 296, ptr @.str.7392) - unreachable -ok11546: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11547, label %inrange11548 -range11547: - call void @finch_panic_index(ptr @.str.7393, i64 296, i64 %t42, i64 %t44) - unreachable -inrange11548: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - call void @finch_str_from_char(ptr %a49, i8 signext %t48) - %t50 = load { ptr, i64, i64 }, ptr %a49 - store { ptr, i64, i64 } { ptr @.str.7388, i64 13, i64 0 }, ptr %a52 - store { ptr, i64, i64 } %t50, ptr %a53 - call void @finch_str_concat(ptr %a51, ptr %a52, ptr %a53) - store { ptr, i64, i64 } %t50, ptr %a54 - call void @finch_str_drop(ptr %a54) - %t55 = load { ptr, i64, i64 }, ptr %a51 - store { ptr, i64, i64 } %t55, ptr %a57 - store { ptr, i64, i64 } { ptr @.str.7394, i64 8, i64 0 }, ptr %a58 - call void @finch_str_concat(ptr %a56, ptr %a57, ptr %a58) - store { ptr, i64, i64 } %t55, ptr %a59 - call void @finch_str_drop(ptr %a59) - %t60 = load { ptr, i64, i64 }, ptr %a56 - %t61 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } %t60, ptr %a63 - store { ptr, i64, i64 } %t61, ptr %a64 - call void @finch_str_concat(ptr %a62, ptr %a63, ptr %a64) - store { ptr, i64, i64 } %t60, ptr %a65 - call void @finch_str_drop(ptr %a65) - %t66 = load { ptr, i64, i64 }, ptr %a62 - store { ptr, i64, i64 } %t66, ptr %a68 - store { ptr, i64, i64 } { ptr @.str.7395, i64 12, i64 0 }, ptr %a69 - call void @finch_str_concat(ptr %a67, ptr %a68, ptr %a69) - store { ptr, i64, i64 } %t66, ptr %a70 - call void @finch_str_drop(ptr %a70) - %t71 = load { ptr, i64, i64 }, ptr %a67 - %t72 = load ptr, ptr %a1 - %t73 = call { ptr, i64, i64 } @finch.json.where(ptr %t72) - store { ptr, i64, i64 } %t71, ptr %a75 - store { ptr, i64, i64 } %t73, ptr %a76 - call void @finch_str_concat(ptr %a74, ptr %a75, ptr %a76) - store { ptr, i64, i64 } %t71, ptr %a77 - call void @finch_str_drop(ptr %a77) - store { ptr, i64, i64 } %t73, ptr %a78 - call void @finch_str_drop(ptr %a78) - %t79 = load { ptr, i64, i64 }, ptr %a74 - store { ptr, i64, i64 } %t79, ptr %a81 - store { ptr, i64, i64 } { ptr @.str.7396, i64 1, i64 0 }, ptr %a82 - call void @finch_str_concat(ptr %a80, ptr %a81, ptr %a82) - store { ptr, i64, i64 } %t79, ptr %a83 - call void @finch_str_drop(ptr %a83) - %t84 = load { ptr, i64, i64 }, ptr %a80 - ret { ptr, i64, i64 } %t84 -} - -define internal i1 @finch.json.comes(ptr %p0, { ptr, i64, i64 } %p1) { -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 - %a39 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = icmp eq ptr %t3, null - br i1 %t4, label %panic11549, label %ok11550 -panic11549: - call void @finch_panic(ptr @.str.7397, i64 301, ptr @.str.7398) - unreachable -ok11550: - %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 %panic11551, label %ok11552 -panic11551: - call void @finch_panic(ptr @.str.7399, i64 301, ptr @.str.7400) - unreachable -ok11552: - %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.from11553 -logic.from11553: - br i1 %t15, label %logic.rhs11554, label %logic.end11555 -logic.rhs11554: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11556, label %ok11557 -panic11556: - call void @finch_panic(ptr @.str.7401, i64 301, ptr @.str.7402) - unreachable -ok11557: - %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 %panic11558, label %ok11559 -panic11558: - call void @finch_panic(ptr @.str.7404, i64 301, ptr @.str.7405) - unreachable -ok11559: - %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 %panic11560, label %ok11561 -panic11560: - call void @finch_panic(ptr @.str.7406, i64 301, ptr @.str.7407) - unreachable -ok11561: - %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.7403, 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 - store { ptr, i64, i64 } %t33, ptr %a39 - call void @finch_str_drop(ptr %a39) - br label %logic.rend11562 -logic.rend11562: - br label %logic.end11555 -logic.end11555: - %t40 = phi i1 [ false, %logic.from11553 ], [ %t38, %logic.rend11562 ] - ret i1 %t40 -} - -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 - %a16 = alloca { ptr, i64, i64 }, align 16 - %a19 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - store { ptr, i64, i64 } %p1, ptr %a2 - %t3 = load ptr, ptr %a1 - %t4 = load { ptr, i64, i64 }, ptr %a2 - %t5 = call i1 @finch.json.comes(ptr %t3, { ptr, i64, i64 } %t4) - %t6 = xor i1 %t5, true - br i1 %t6, label %then11563, label %endif11565 -then11563: - %t7 = load ptr, ptr %a1 - %t8 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } { ptr @.str.7408, 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.7409, i64 1, i64 0 }, ptr %a15 - call void @finch_str_concat(ptr %a13, ptr %a14, ptr %a15) - store { ptr, i64, i64 } %t12, ptr %a16 - call void @finch_str_drop(ptr %a16) - %t17 = load { ptr, i64, i64 }, ptr %a13 - %t18 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t7, { ptr, i64, i64 } %t17) - store { ptr, i64, i64 } %t17, ptr %a19 - call void @finch_str_drop(ptr %a19) - %t20 = insertvalue { i1, i8, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t18, 2 - ret { i1, i8, { ptr, i64, i64 } } %t20 -endif11565: - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %a2, i32 0, i32 1 - %t22 = load i64, ptr %t21 - %t23 = load ptr, ptr %a1 - %t24 = icmp eq ptr %t23, null - br i1 %t24, label %panic11566, label %ok11567 -panic11566: - call void @finch_panic(ptr @.str.7410, i64 308, ptr @.str.7411) - unreachable -ok11567: - %t25 = getelementptr inbounds %S.json.Reader, ptr %t23, i32 0, i32 1 - %t26 = load i64, ptr %t25 - %t27 = add i64 %t26, %t22 - store i64 %t27, ptr %t25 - ret { i1, i8, { ptr, i64, i64 } } { i1 true, i8 0, { ptr, i64, i64 } zeroinitializer } -} - -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.from11568 -logic.from11568: - br i1 %t3, label %logic.rhs11569, label %logic.end11570 -logic.rhs11569: - %t4 = load i8, ptr %a1 - %t5 = icmp ule i8 %t4, 57 - br label %logic.rend11571 -logic.rend11571: - br label %logic.end11570 -logic.end11570: - %t6 = phi i1 [ false, %logic.from11568 ], [ %t5, %logic.rend11571 ] - br i1 %t6, label %then11572, label %endif11574 -then11572: - %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 -endif11574: - %t11 = load i8, ptr %a1 - %t12 = icmp uge i8 %t11, 97 - br label %logic.from11575 -logic.from11575: - br i1 %t12, label %logic.rhs11576, label %logic.end11577 -logic.rhs11576: - %t13 = load i8, ptr %a1 - %t14 = icmp ule i8 %t13, 102 - br label %logic.rend11578 -logic.rend11578: - br label %logic.end11577 -logic.end11577: - %t15 = phi i1 [ false, %logic.from11575 ], [ %t14, %logic.rend11578 ] - br i1 %t15, label %then11579, label %endif11581 -then11579: - %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 -endif11581: - %t21 = load i8, ptr %a1 - %t22 = icmp uge i8 %t21, 65 - br label %logic.from11582 -logic.from11582: - br i1 %t22, label %logic.rhs11583, label %logic.end11584 -logic.rhs11583: - %t23 = load i8, ptr %a1 - %t24 = icmp ule i8 %t23, 70 - br label %logic.rend11585 -logic.rend11585: - br label %logic.end11584 -logic.end11584: - %t25 = phi i1 [ false, %logic.from11582 ], [ %t24, %logic.rend11585 ] - br i1 %t25, label %then11586, label %endif11588 -then11586: - %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 -endif11588: - 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 %then11589, label %else11590 -then11589: - %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 %endif11591 -else11590: - %t12 = load i64, ptr %a1 - %t13 = icmp slt i64 %t12, 2048 - br i1 %t13, label %then11592, label %else11593 -then11592: - %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 %endif11594 -else11593: - %t32 = load i64, ptr %a1 - %t33 = icmp slt i64 %t32, 65536 - br i1 %t33, label %then11595, label %else11596 -then11595: - %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 %endif11597 -else11596: - %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 %endif11597 -endif11597: - br label %endif11594 -endif11594: - br label %endif11591 -endif11591: - %t100 = load { ptr, i64, i64 }, ptr %a2 - store { ptr, i64, i64 } zeroinitializer, ptr %a101 - store { ptr, i64, i64 } %t100, ptr %a102 - call void @finch_str_from_bytes(ptr %a101, ptr %a102) - %t103 = load { ptr, i64, i64 }, ptr %a101 - call void @finch.drop.arr_u8(ptr %a2) - ret { ptr, i64, i64 } %t103 -} - -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.cond11598 -for.cond11598: - %t4 = load i64, ptr %a3 - %t5 = icmp slt i64 %t4, 4 - br i1 %t5, label %for.body11599, label %for.end11601 -for.body11599: - %t6 = load ptr, ptr %a1 - %t7 = icmp eq ptr %t6, null - br i1 %t7, label %panic11602, label %ok11603 -panic11602: - call void @finch_panic(ptr @.str.7412, i64 348, ptr @.str.7413) - unreachable -ok11603: - %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 %panic11604, label %ok11605 -panic11604: - call void @finch_panic(ptr @.str.7414, i64 348, ptr @.str.7415) - unreachable -ok11605: - %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.from11606 -logic.from11606: - br i1 %t15, label %logic.end11608, label %logic.rhs11607 -logic.rhs11607: - %t16 = load ptr, ptr %a1 - %t17 = icmp eq ptr %t16, null - br i1 %t17, label %panic11609, label %ok11610 -panic11609: - call void @finch_panic(ptr @.str.7416, i64 348, ptr @.str.7417) - unreachable -ok11610: - %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 %panic11611, label %ok11612 -panic11611: - call void @finch_panic(ptr @.str.7418, i64 348, ptr @.str.7419) - unreachable -ok11612: - %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 %range11613, label %inrange11614 -range11613: - call void @finch_panic_index(ptr @.str.7420, i64 348, i64 %t22, i64 %t24) - unreachable -inrange11614: - %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.rend11615 -logic.rend11615: - br label %logic.end11608 -logic.end11608: - %t31 = phi i1 [ true, %logic.from11606 ], [ %t30, %logic.rend11615 ] - br i1 %t31, label %then11616, label %endif11618 -then11616: - %t32 = load ptr, ptr %a1 - %t33 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t32, { ptr, i64, i64 } { ptr @.str.7421, i64 19, i64 0 }) - %t34 = insertvalue { i1, i64, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t33, 2 - ret { i1, i64, { ptr, i64, i64 } } %t34 -endif11618: - %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 %panic11619, label %ok11620 -panic11619: - call void @finch_panic(ptr @.str.7422, i64 351, ptr @.str.7423) - unreachable -ok11620: - %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 %panic11621, label %ok11622 -panic11621: - call void @finch_panic(ptr @.str.7424, i64 351, ptr @.str.7425) - unreachable -ok11622: - %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 %range11623, label %inrange11624 -range11623: - call void @finch_panic_index(ptr @.str.7426, i64 351, i64 %t43, i64 %t45) - unreachable -inrange11624: - %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 %panic11625, label %ok11626 -panic11625: - call void @finch_panic(ptr @.str.7427, i64 352, ptr @.str.7428) - unreachable -ok11626: - %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.step11600 -for.step11600: - %t57 = load i64, ptr %a3 - %t58 = add i64 %t57, 1 - store i64 %t58, ptr %a3 - br label %for.cond11598 -for.end11601: - %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 - %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 - %a33 = alloca { ptr, i64, i64 }, align 16 - %a49 = alloca i8, align 16 - %a57 = alloca { ptr, i64, i64 }, align 16 - %a58 = alloca { ptr, i64, i64 }, align 16 - %a75 = alloca { ptr, i64, i64 }, align 16 - %a76 = alloca { ptr, i64, i64 }, align 16 - %a85 = alloca { ptr, i64, i64 }, align 16 - %a86 = alloca { ptr, i64, i64 }, align 16 - %a87 = alloca { ptr, i64, i64 }, align 16 - %a88 = alloca { ptr, i64, i64 }, align 16 - %a90 = alloca { ptr, i64, i64 }, align 16 - %a91 = alloca { ptr, i64, i64 }, align 16 - %a92 = alloca { ptr, i64, i64 }, align 16 - %a93 = alloca { ptr, i64, i64 }, align 16 - %a108 = alloca { ptr, i64, i64 }, align 16 - %a109 = alloca { ptr, i64, i64 }, align 16 - %a127 = alloca i8, align 16 - %a180 = alloca { ptr, i64, i64 }, align 16 - %a195 = alloca i64, align 16 - %a216 = alloca i64, align 16 - %a232 = alloca { ptr, i64, i64 }, align 16 - %a234 = alloca { ptr, i64, i64 }, align 16 - %a235 = alloca { ptr, i64, i64 }, align 16 - %a236 = alloca { ptr, i64, i64 }, align 16 - %a237 = alloca { ptr, i64, i64 }, align 16 - %a239 = alloca { ptr, i64, i64 }, align 16 - %a240 = alloca { ptr, i64, i64 }, align 16 - %a241 = alloca { ptr, i64, i64 }, align 16 - %a242 = alloca { ptr, i64, i64 }, align 16 - %a246 = alloca { ptr, i64, i64 }, align 16 - %a247 = alloca { ptr, i64, i64 }, align 16 - %a248 = alloca { ptr, i64, i64 }, align 16 - %a249 = alloca { ptr, i64, i64 }, align 16 - %a250 = alloca { ptr, i64, i64 }, align 16 - %a252 = alloca { ptr, i64, i64 }, align 16 - %a253 = alloca { ptr, i64, i64 }, align 16 - %a254 = alloca { ptr, i64, i64 }, align 16 - %a255 = alloca { ptr, i64, i64 }, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11627, label %ok11628 -panic11627: - call void @finch_panic(ptr @.str.7429, i64 358, ptr @.str.7430) - unreachable -ok11628: - %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 %panic11629, label %ok11630 -panic11629: - call void @finch_panic(ptr @.str.7431, i64 360, ptr @.str.7432) - unreachable -ok11630: - %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.cond11631 -while.cond11631: - br label %while.body11632 -while.body11632: - %t13 = load ptr, ptr %a1 - %t14 = icmp eq ptr %t13, null - br i1 %t14, label %panic11634, label %ok11635 -panic11634: - call void @finch_panic(ptr @.str.7433, i64 362, ptr @.str.7434) - unreachable -ok11635: - %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 %panic11636, label %ok11637 -panic11636: - call void @finch_panic(ptr @.str.7435, i64 362, ptr @.str.7436) - unreachable -ok11637: - %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 %then11638, label %endif11640 -then11638: - %t23 = load ptr, ptr %a1 - %t24 = call { ptr, i64, i64 } @finch.json.where(ptr %t23) - store { ptr, i64, i64 } { ptr @.str.7437, i64 30, i64 0 }, ptr %a26 - store { ptr, i64, i64 } %t24, ptr %a27 - call void @finch_str_concat(ptr %a25, ptr %a26, ptr %a27) - store { ptr, i64, i64 } %t24, ptr %a28 - call void @finch_str_drop(ptr %a28) - %t29 = load { ptr, i64, i64 }, ptr %a25 - store { ptr, i64, i64 } %t29, ptr %a31 - store { ptr, i64, i64 } { ptr @.str.7438, i64 1, i64 0 }, ptr %a32 - call void @finch_str_concat(ptr %a30, ptr %a31, ptr %a32) - store { ptr, i64, i64 } %t29, ptr %a33 - call void @finch_str_drop(ptr %a33) - %t34 = load { ptr, i64, i64 }, ptr %a30 - call void @finch.drop.arr_str(ptr %a7) - %t35 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t34, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t35 -endif11640: - %t36 = load ptr, ptr %a1 - %t37 = icmp eq ptr %t36, null - br i1 %t37, label %panic11641, label %ok11642 -panic11641: - call void @finch_panic(ptr @.str.7439, i64 365, ptr @.str.7440) - unreachable -ok11642: - %t38 = getelementptr inbounds %S.json.Reader, ptr %t36, i32 0, i32 0 - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11643, label %ok11644 -panic11643: - call void @finch_panic(ptr @.str.7441, i64 365, ptr @.str.7442) - unreachable -ok11644: - %t41 = getelementptr inbounds %S.json.Reader, ptr %t39, i32 0, i32 1 - %t42 = load i64, ptr %t41 - %t43 = load { ptr, i64, i64 }, ptr %t38 - %t44 = extractvalue { ptr, i64, i64 } %t43, 1 - %t45 = icmp uge i64 %t42, %t44 - br i1 %t45, label %range11645, label %inrange11646 -range11645: - call void @finch_panic_index(ptr @.str.7443, i64 365, i64 %t42, i64 %t44) - unreachable -inrange11646: - %t46 = extractvalue { ptr, i64, i64 } %t43, 0 - %t47 = getelementptr inbounds i8, ptr %t46, i64 %t42 - %t48 = load i8, ptr %t47 - store i8 %t48, ptr %a49 - %t50 = load i8, ptr %a49 - %t51 = icmp eq i8 %t50, 34 - br i1 %t51, label %then11647, label %endif11649 -then11647: - %t52 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t53 = load ptr, ptr %a1 - %t54 = icmp eq ptr %t53, null - br i1 %t54, label %panic11650, label %ok11651 -panic11650: - call void @finch_panic(ptr @.str.7444, i64 367, ptr @.str.7445) - unreachable -ok11651: - %t55 = getelementptr inbounds %S.json.Reader, ptr %t53, i32 0, i32 0 - %t56 = load { ptr, i64, i64 }, ptr %t55 - store { ptr, i64, i64 } %t56, ptr %a57 - %t59 = load i64, ptr %a12 - %t60 = load ptr, ptr %a1 - %t61 = icmp eq ptr %t60, null - br i1 %t61, label %panic11652, label %ok11653 -panic11652: - call void @finch_panic(ptr @.str.7447, i64 367, ptr @.str.7448) - unreachable -ok11653: - %t62 = getelementptr inbounds %S.json.Reader, ptr %t60, i32 0, i32 1 - %t63 = load i64, ptr %t62 - call void @finch_str_sub(ptr %a58, ptr %a57, i64 %t59, i64 %t63, ptr @.str.7446, i64 367) - %t64 = load { ptr, i64, i64 }, ptr %a58 - %t65 = load i64, ptr %t52 - %t66 = add i64 %t65, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t66, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t67 = load ptr, ptr %a7 - %t68 = getelementptr inbounds { ptr, i64, i64 }, ptr %t67, i64 %t65 - store { ptr, i64, i64 } %t64, ptr %t68 - store i64 %t66, ptr %t52 - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11654, label %ok11655 -panic11654: - call void @finch_panic(ptr @.str.7449, i64 368, ptr @.str.7450) - unreachable -ok11655: - %t71 = getelementptr inbounds %S.json.Reader, ptr %t69, i32 0, i32 1 - %t72 = load i64, ptr %t71 - %t73 = add i64 %t72, 1 - store i64 %t73, ptr %t71 - %t74 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - store { ptr, i64, i64 } { ptr @.str.7451, i64 0, i64 0 }, ptr %a75 - call void @finch_str_join(ptr %a76, ptr %a7, ptr %a75) - %t77 = load { ptr, i64, i64 }, ptr %a76 - call void @finch.drop.arr_str(ptr %a7) - %t78 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t79 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t78, { ptr, i64, i64 } %t77, 1 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t79 -endif11649: - %t80 = load i8, ptr %a49 - %t81 = zext i8 %t80 to i64 - %t82 = icmp slt i64 %t81, 32 - br i1 %t82, label %then11656, label %endif11658 -then11656: - %t83 = load ptr, ptr %a1 - %t84 = call { ptr, i64, i64 } @finch.json.where(ptr %t83) - store { ptr, i64, i64 } { ptr @.str.7452, i64 55, i64 0 }, ptr %a86 - store { ptr, i64, i64 } %t84, ptr %a87 - call void @finch_str_concat(ptr %a85, ptr %a86, ptr %a87) - store { ptr, i64, i64 } %t84, ptr %a88 - call void @finch_str_drop(ptr %a88) - %t89 = load { ptr, i64, i64 }, ptr %a85 - store { ptr, i64, i64 } %t89, ptr %a91 - store { ptr, i64, i64 } { ptr @.str.7453, i64 1, i64 0 }, ptr %a92 - call void @finch_str_concat(ptr %a90, ptr %a91, ptr %a92) - store { ptr, i64, i64 } %t89, ptr %a93 - call void @finch_str_drop(ptr %a93) - %t94 = load { ptr, i64, i64 }, ptr %a90 - call void @finch.drop.arr_str(ptr %a7) - %t95 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t94, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t95 -endif11658: - %t96 = load i8, ptr %a49 - %t97 = icmp ne i8 %t96, 92 - br i1 %t97, label %then11659, label %endif11661 -then11659: - %t98 = load ptr, ptr %a1 - %t99 = icmp eq ptr %t98, null - br i1 %t99, label %panic11662, label %ok11663 -panic11662: - call void @finch_panic(ptr @.str.7454, i64 375, ptr @.str.7455) - unreachable -ok11663: - %t100 = getelementptr inbounds %S.json.Reader, ptr %t98, i32 0, i32 1 - %t101 = load i64, ptr %t100 - %t102 = add i64 %t101, 1 - store i64 %t102, ptr %t100 - br label %while.cond11631 -endif11661: - %t103 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t104 = load ptr, ptr %a1 - %t105 = icmp eq ptr %t104, null - br i1 %t105, label %panic11664, label %ok11665 -panic11664: - call void @finch_panic(ptr @.str.7456, i64 378, ptr @.str.7457) - unreachable -ok11665: - %t106 = getelementptr inbounds %S.json.Reader, ptr %t104, i32 0, i32 0 - %t107 = load { ptr, i64, i64 }, ptr %t106 - store { ptr, i64, i64 } %t107, ptr %a108 - %t110 = load i64, ptr %a12 - %t111 = load ptr, ptr %a1 - %t112 = icmp eq ptr %t111, null - br i1 %t112, label %panic11666, label %ok11667 -panic11666: - call void @finch_panic(ptr @.str.7459, i64 378, ptr @.str.7460) - unreachable -ok11667: - %t113 = getelementptr inbounds %S.json.Reader, ptr %t111, i32 0, i32 1 - %t114 = load i64, ptr %t113 - call void @finch_str_sub(ptr %a109, ptr %a108, i64 %t110, i64 %t114, ptr @.str.7458, i64 378) - %t115 = load { ptr, i64, i64 }, ptr %a109 - %t116 = load i64, ptr %t103 - %t117 = add i64 %t116, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t117, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t118 = load ptr, ptr %a7 - %t119 = getelementptr inbounds { ptr, i64, i64 }, ptr %t118, i64 %t116 - store { ptr, i64, i64 } %t115, ptr %t119 - store i64 %t117, ptr %t103 - %t120 = load ptr, ptr %a1 - %t121 = icmp eq ptr %t120, null - br i1 %t121, label %panic11668, label %ok11669 -panic11668: - call void @finch_panic(ptr @.str.7461, i64 379, ptr @.str.7462) - unreachable -ok11669: - %t122 = getelementptr inbounds %S.json.Reader, ptr %t120, i32 0, i32 1 - %t123 = load i64, ptr %t122 - %t124 = add i64 %t123, 1 - store i64 %t124, ptr %t122 - %t125 = load ptr, ptr %a1 - %t126 = call i8 @finch.json.peek(ptr %t125) - store i8 %t126, ptr %a127 - %t128 = load ptr, ptr %a1 - %t129 = icmp eq ptr %t128, null - br i1 %t129, label %panic11670, label %ok11671 -panic11670: - call void @finch_panic(ptr @.str.7463, i64 381, ptr @.str.7464) - unreachable -ok11671: - %t130 = getelementptr inbounds %S.json.Reader, ptr %t128, i32 0, i32 1 - %t131 = load i64, ptr %t130 - %t132 = add i64 %t131, 1 - store i64 %t132, ptr %t130 - %t133 = load i8, ptr %a127 - %t134 = icmp eq i8 %t133, 110 - br i1 %t134, label %then11672, label %else11673 -then11672: - %t135 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t136 = load i64, ptr %t135 - %t137 = add i64 %t136, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t137, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t138 = load ptr, ptr %a7 - %t139 = getelementptr inbounds { ptr, i64, i64 }, ptr %t138, i64 %t136 - store { ptr, i64, i64 } { ptr @.str.7465, i64 1, i64 0 }, ptr %t139 - store i64 %t137, ptr %t135 - br label %endif11674 -else11673: - %t140 = load i8, ptr %a127 - %t141 = icmp eq i8 %t140, 116 - br i1 %t141, label %then11675, label %else11676 -then11675: - %t142 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t143 = load i64, ptr %t142 - %t144 = add i64 %t143, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t144, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t145 = load ptr, ptr %a7 - %t146 = getelementptr inbounds { ptr, i64, i64 }, ptr %t145, i64 %t143 - store { ptr, i64, i64 } { ptr @.str.7466, i64 1, i64 0 }, ptr %t146 - store i64 %t144, ptr %t142 - br label %endif11677 -else11676: - %t147 = load i8, ptr %a127 - %t148 = icmp eq i8 %t147, 114 - br i1 %t148, label %then11678, label %else11679 -then11678: - %t149 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t150 = load i64, ptr %t149 - %t151 = add i64 %t150, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t151, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t152 = load ptr, ptr %a7 - %t153 = getelementptr inbounds { ptr, i64, i64 }, ptr %t152, i64 %t150 - store { ptr, i64, i64 } { ptr @.str.7467, i64 1, i64 0 }, ptr %t153 - store i64 %t151, ptr %t149 - br label %endif11680 -else11679: - %t154 = load i8, ptr %a127 - %t155 = icmp eq i8 %t154, 98 - br i1 %t155, label %then11681, label %else11682 -then11681: - %t156 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t157 = call { ptr, i64, i64 } @finch.json.utf8(i64 8) - %t158 = load i64, ptr %t156 - %t159 = add i64 %t158, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t159, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t160 = load ptr, ptr %a7 - %t161 = getelementptr inbounds { ptr, i64, i64 }, ptr %t160, i64 %t158 - store { ptr, i64, i64 } %t157, ptr %t161 - store i64 %t159, ptr %t156 - br label %endif11683 -else11682: - %t162 = load i8, ptr %a127 - %t163 = icmp eq i8 %t162, 102 - br i1 %t163, label %then11684, label %else11685 -then11684: - %t164 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t165 = call { ptr, i64, i64 } @finch.json.utf8(i64 12) - %t166 = load i64, ptr %t164 - %t167 = add i64 %t166, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t167, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t168 = load ptr, ptr %a7 - %t169 = getelementptr inbounds { ptr, i64, i64 }, ptr %t168, i64 %t166 - store { ptr, i64, i64 } %t165, ptr %t169 - store i64 %t167, ptr %t164 - br label %endif11686 -else11685: - %t170 = load i8, ptr %a127 - %t171 = icmp eq i8 %t170, 34 - br label %logic.from11687 -logic.from11687: - br i1 %t171, label %logic.end11689, label %logic.rhs11688 -logic.rhs11688: - %t172 = load i8, ptr %a127 - %t173 = icmp eq i8 %t172, 92 - br label %logic.rend11690 -logic.rend11690: - br label %logic.end11689 -logic.end11689: - %t174 = phi i1 [ true, %logic.from11687 ], [ %t173, %logic.rend11690 ] - br label %logic.from11691 -logic.from11691: - br i1 %t174, label %logic.end11693, label %logic.rhs11692 -logic.rhs11692: - %t175 = load i8, ptr %a127 - %t176 = icmp eq i8 %t175, 47 - br label %logic.rend11694 -logic.rend11694: - br label %logic.end11693 -logic.end11693: - %t177 = phi i1 [ true, %logic.from11691 ], [ %t176, %logic.rend11694 ] - br i1 %t177, label %then11695, label %else11696 -then11695: - %t178 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t179 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a180, i8 signext %t179) - %t181 = load { ptr, i64, i64 }, ptr %a180 - %t182 = load i64, ptr %t178 - %t183 = add i64 %t182, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t183, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t184 = load ptr, ptr %a7 - %t185 = getelementptr inbounds { ptr, i64, i64 }, ptr %t184, i64 %t182 - store { ptr, i64, i64 } %t181, ptr %t185 - store i64 %t183, ptr %t178 - br label %endif11697 -else11696: - %t186 = load i8, ptr %a127 - %t187 = icmp eq i8 %t186, 117 - br i1 %t187, label %then11698, label %else11699 -then11698: - %t188 = load ptr, ptr %a1 - %t189 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t188) - %t190 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 0 - %t191 = xor i1 %t190, true - %t192 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 2 - %t193 = extractvalue { i1, i64, { ptr, i64, i64 } } %t189, 1 - br i1 %t191, label %try.failed11701, label %try.ok11702 -try.failed11701: - call void @finch.drop.arr_str(ptr %a7) - %t194 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t192, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t194 -try.ok11702: - store i64 %t193, ptr %a195 - %t196 = load i64, ptr %a195 - %t197 = icmp sge i64 %t196, 55296 - br label %logic.from11703 -logic.from11703: - br i1 %t197, label %logic.rhs11704, label %logic.end11705 -logic.rhs11704: - %t198 = load i64, ptr %a195 - %t199 = icmp slt i64 %t198, 56320 - br label %logic.rend11706 -logic.rend11706: - br label %logic.end11705 -logic.end11705: - %t200 = phi i1 [ false, %logic.from11703 ], [ %t199, %logic.rend11706 ] - br label %logic.from11707 -logic.from11707: - br i1 %t200, label %logic.rhs11708, label %logic.end11709 -logic.rhs11708: - %t201 = load ptr, ptr %a1 - %t202 = call i1 @finch.json.comes(ptr %t201, { ptr, i64, i64 } { ptr @.str.7468, i64 2, i64 0 }) - br label %logic.rend11710 -logic.rend11710: - br label %logic.end11709 -logic.end11709: - %t203 = phi i1 [ false, %logic.from11707 ], [ %t202, %logic.rend11710 ] - br i1 %t203, label %then11711, label %endif11713 -then11711: - %t204 = load ptr, ptr %a1 - %t205 = icmp eq ptr %t204, null - br i1 %t205, label %panic11714, label %ok11715 -panic11714: - call void @finch_panic(ptr @.str.7469, i64 398, ptr @.str.7470) - unreachable -ok11715: - %t206 = getelementptr inbounds %S.json.Reader, ptr %t204, i32 0, i32 1 - %t207 = load i64, ptr %t206 - %t208 = add i64 %t207, 2 - store i64 %t208, ptr %t206 - %t209 = load ptr, ptr %a1 - %t210 = call { i1, i64, { ptr, i64, i64 } } @finch.json.read_hex4(ptr %t209) - %t211 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 0 - %t212 = xor i1 %t211, true - %t213 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 2 - %t214 = extractvalue { i1, i64, { ptr, i64, i64 } } %t210, 1 - br i1 %t212, label %try.failed11716, label %try.ok11717 -try.failed11716: - call void @finch.drop.arr_str(ptr %a7) - %t215 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t213, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t215 -try.ok11717: - store i64 %t214, ptr %a216 - %t217 = load i64, ptr %a195 - %t218 = sub i64 %t217, 55296 - %t219 = mul i64 %t218, 1024 - %t220 = add i64 65536, %t219 - %t221 = load i64, ptr %a216 - %t222 = sub i64 %t221, 56320 - %t223 = add i64 %t220, %t222 - store i64 %t223, ptr %a195 - br label %endif11713 -endif11713: - %t224 = getelementptr inbounds { ptr, i64, i64 }, ptr %a7, i32 0, i32 1 - %t225 = load i64, ptr %a195 - %t226 = call { ptr, i64, i64 } @finch.json.utf8(i64 %t225) - %t227 = load i64, ptr %t224 - %t228 = add i64 %t227, 1 - call void @finch_arr_reserve(ptr %a7, i64 %t228, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t229 = load ptr, ptr %a7 - %t230 = getelementptr inbounds { ptr, i64, i64 }, ptr %t229, i64 %t227 - store { ptr, i64, i64 } %t226, ptr %t230 - store i64 %t228, ptr %t224 - br label %endif11700 -else11699: - %t231 = load i8, ptr %a127 - call void @finch_str_from_char(ptr %a232, i8 signext %t231) - %t233 = load { ptr, i64, i64 }, ptr %a232 - store { ptr, i64, i64 } { ptr @.str.7471, i64 22, i64 0 }, ptr %a235 - store { ptr, i64, i64 } %t233, ptr %a236 - call void @finch_str_concat(ptr %a234, ptr %a235, ptr %a236) - store { ptr, i64, i64 } %t233, ptr %a237 - call void @finch_str_drop(ptr %a237) - %t238 = load { ptr, i64, i64 }, ptr %a234 - store { ptr, i64, i64 } %t238, ptr %a240 - store { ptr, i64, i64 } { ptr @.str.7472, i64 12, i64 0 }, ptr %a241 - call void @finch_str_concat(ptr %a239, ptr %a240, ptr %a241) - store { ptr, i64, i64 } %t238, ptr %a242 - call void @finch_str_drop(ptr %a242) - %t243 = load { ptr, i64, i64 }, ptr %a239 - %t244 = load ptr, ptr %a1 - %t245 = call { ptr, i64, i64 } @finch.json.where(ptr %t244) - store { ptr, i64, i64 } %t243, ptr %a247 - store { ptr, i64, i64 } %t245, ptr %a248 - call void @finch_str_concat(ptr %a246, ptr %a247, ptr %a248) - store { ptr, i64, i64 } %t243, ptr %a249 - call void @finch_str_drop(ptr %a249) - store { ptr, i64, i64 } %t245, ptr %a250 - call void @finch_str_drop(ptr %a250) - %t251 = load { ptr, i64, i64 }, ptr %a246 - store { ptr, i64, i64 } %t251, ptr %a253 - store { ptr, i64, i64 } { ptr @.str.7473, i64 1, i64 0 }, ptr %a254 - call void @finch_str_concat(ptr %a252, ptr %a253, ptr %a254) - store { ptr, i64, i64 } %t251, ptr %a255 - call void @finch_str_drop(ptr %a255) - %t256 = load { ptr, i64, i64 }, ptr %a252 - call void @finch.drop.arr_str(ptr %a7) - %t257 = insertvalue { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t256, 2 - ret { i1, { ptr, i64, i64 }, { ptr, i64, i64 } } %t257 -endif11700: - br label %endif11697 -endif11697: - br label %endif11686 -endif11686: - br label %endif11683 -endif11683: - br label %endif11680 -endif11680: - br label %endif11677 -endif11677: - br label %endif11674 -endif11674: - %t258 = load ptr, ptr %a1 - %t259 = icmp eq ptr %t258, null - br i1 %t259, label %panic11718, label %ok11719 -panic11718: - call void @finch_panic(ptr @.str.7474, i64 406, ptr @.str.7475) - unreachable -ok11719: - %t260 = getelementptr inbounds %S.json.Reader, ptr %t258, i32 0, i32 1 - %t261 = load i64, ptr %t260 - store i64 %t261, ptr %a12 - br label %while.cond11631 -} - -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 - %a153 = alloca { ptr, i64, i64 }, align 16 - %a155 = alloca { ptr, i64, i64 }, align 16 - %a163 = alloca double, align 16 - store ptr %p0, ptr %a1 - %t2 = load ptr, ptr %a1 - %t3 = icmp eq ptr %t2, null - br i1 %t3, label %panic11720, label %ok11721 -panic11720: - call void @finch_panic(ptr @.str.7476, i64 411, ptr @.str.7477) - unreachable -ok11721: - %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 %then11722, label %endif11724 -then11722: - %t10 = load ptr, ptr %a1 - %t11 = icmp eq ptr %t10, null - br i1 %t11, label %panic11725, label %ok11726 -panic11725: - call void @finch_panic(ptr @.str.7478, i64 413, ptr @.str.7479) - unreachable -ok11726: - %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 %endif11724 -endif11724: - br label %while.cond11727 -while.cond11727: - %t15 = load ptr, ptr %a1 - %t16 = icmp eq ptr %t15, null - br i1 %t16, label %panic11730, label %ok11731 -panic11730: - call void @finch_panic(ptr @.str.7480, i64 415, ptr @.str.7481) - unreachable -ok11731: - %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 %panic11732, label %ok11733 -panic11732: - call void @finch_panic(ptr @.str.7482, i64 415, ptr @.str.7483) - unreachable -ok11733: - %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.from11734 -logic.from11734: - br i1 %t24, label %logic.rhs11735, label %logic.end11736 -logic.rhs11735: - %t25 = load ptr, ptr %a1 - %t26 = icmp eq ptr %t25, null - br i1 %t26, label %panic11737, label %ok11738 -panic11737: - call void @finch_panic(ptr @.str.7484, i64 415, ptr @.str.7485) - unreachable -ok11738: - %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 %panic11739, label %ok11740 -panic11739: - call void @finch_panic(ptr @.str.7486, i64 415, ptr @.str.7487) - unreachable -ok11740: - %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 %range11741, label %inrange11742 -range11741: - call void @finch_panic_index(ptr @.str.7488, i64 415, i64 %t31, i64 %t33) - unreachable -inrange11742: - %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.from11743 -logic.from11743: - br i1 %t38, label %logic.rhs11744, label %logic.end11745 -logic.rhs11744: - %t39 = load ptr, ptr %a1 - %t40 = icmp eq ptr %t39, null - br i1 %t40, label %panic11746, label %ok11747 -panic11746: - call void @finch_panic(ptr @.str.7489, i64 415, ptr @.str.7490) - unreachable -ok11747: - %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 %panic11748, label %ok11749 -panic11748: - call void @finch_panic(ptr @.str.7491, i64 415, ptr @.str.7492) - unreachable -ok11749: - %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 %range11750, label %inrange11751 -range11750: - call void @finch_panic_index(ptr @.str.7493, i64 415, i64 %t45, i64 %t47) - unreachable -inrange11751: - %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.rend11752 -logic.rend11752: - br label %logic.end11745 -logic.end11745: - %t53 = phi i1 [ false, %logic.from11743 ], [ %t52, %logic.rend11752 ] - br label %logic.from11753 -logic.from11753: - br i1 %t53, label %logic.end11755, label %logic.rhs11754 -logic.rhs11754: - %t54 = load ptr, ptr %a1 - %t55 = icmp eq ptr %t54, null - br i1 %t55, label %panic11756, label %ok11757 -panic11756: - call void @finch_panic(ptr @.str.7494, i64 415, ptr @.str.7495) - unreachable -ok11757: - %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 %panic11758, label %ok11759 -panic11758: - call void @finch_panic(ptr @.str.7496, i64 415, ptr @.str.7497) - unreachable -ok11759: - %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 %range11760, label %inrange11761 -range11760: - call void @finch_panic_index(ptr @.str.7498, i64 415, i64 %t60, i64 %t62) - unreachable -inrange11761: - %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.rend11762 -logic.rend11762: - br label %logic.end11755 -logic.end11755: - %t68 = phi i1 [ true, %logic.from11753 ], [ %t67, %logic.rend11762 ] - br label %logic.from11763 -logic.from11763: - br i1 %t68, label %logic.end11765, label %logic.rhs11764 -logic.rhs11764: - %t69 = load ptr, ptr %a1 - %t70 = icmp eq ptr %t69, null - br i1 %t70, label %panic11766, label %ok11767 -panic11766: - call void @finch_panic(ptr @.str.7499, i64 415, ptr @.str.7500) - unreachable -ok11767: - %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 %panic11768, label %ok11769 -panic11768: - call void @finch_panic(ptr @.str.7501, i64 415, ptr @.str.7502) - unreachable -ok11769: - %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 %range11770, label %inrange11771 -range11770: - call void @finch_panic_index(ptr @.str.7503, i64 415, i64 %t75, i64 %t77) - unreachable -inrange11771: - %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.rend11772 -logic.rend11772: - br label %logic.end11765 -logic.end11765: - %t83 = phi i1 [ true, %logic.from11763 ], [ %t82, %logic.rend11772 ] - br label %logic.from11773 -logic.from11773: - br i1 %t83, label %logic.end11775, label %logic.rhs11774 -logic.rhs11774: - %t84 = load ptr, ptr %a1 - %t85 = icmp eq ptr %t84, null - br i1 %t85, label %panic11776, label %ok11777 -panic11776: - call void @finch_panic(ptr @.str.7504, i64 415, ptr @.str.7505) - unreachable -ok11777: - %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 %panic11778, label %ok11779 -panic11778: - call void @finch_panic(ptr @.str.7506, i64 415, ptr @.str.7507) - unreachable -ok11779: - %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 %range11780, label %inrange11781 -range11780: - call void @finch_panic_index(ptr @.str.7508, i64 415, i64 %t90, i64 %t92) - unreachable -inrange11781: - %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.rend11782 -logic.rend11782: - br label %logic.end11775 -logic.end11775: - %t98 = phi i1 [ true, %logic.from11773 ], [ %t97, %logic.rend11782 ] - br label %logic.from11783 -logic.from11783: - br i1 %t98, label %logic.end11785, label %logic.rhs11784 -logic.rhs11784: - %t99 = load ptr, ptr %a1 - %t100 = icmp eq ptr %t99, null - br i1 %t100, label %panic11786, label %ok11787 -panic11786: - call void @finch_panic(ptr @.str.7509, i64 415, ptr @.str.7510) - unreachable -ok11787: - %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 %panic11788, label %ok11789 -panic11788: - call void @finch_panic(ptr @.str.7511, i64 415, ptr @.str.7512) - unreachable -ok11789: - %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 %range11790, label %inrange11791 -range11790: - call void @finch_panic_index(ptr @.str.7513, i64 415, i64 %t105, i64 %t107) - unreachable -inrange11791: - %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.rend11792 -logic.rend11792: - br label %logic.end11785 -logic.end11785: - %t113 = phi i1 [ true, %logic.from11783 ], [ %t112, %logic.rend11792 ] - br label %logic.from11793 -logic.from11793: - br i1 %t113, label %logic.end11795, label %logic.rhs11794 -logic.rhs11794: - %t114 = load ptr, ptr %a1 - %t115 = icmp eq ptr %t114, null - br i1 %t115, label %panic11796, label %ok11797 -panic11796: - call void @finch_panic(ptr @.str.7514, i64 415, ptr @.str.7515) - unreachable -ok11797: - %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 %panic11798, label %ok11799 -panic11798: - call void @finch_panic(ptr @.str.7516, i64 415, ptr @.str.7517) - unreachable -ok11799: - %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 %range11800, label %inrange11801 -range11800: - call void @finch_panic_index(ptr @.str.7518, i64 415, i64 %t120, i64 %t122) - unreachable -inrange11801: - %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.rend11802 -logic.rend11802: - br label %logic.end11795 -logic.end11795: - %t128 = phi i1 [ true, %logic.from11793 ], [ %t127, %logic.rend11802 ] - br label %logic.rend11803 -logic.rend11803: - br label %logic.end11736 -logic.end11736: - %t129 = phi i1 [ false, %logic.from11734 ], [ %t128, %logic.rend11803 ] - br i1 %t129, label %while.body11728, label %while.end11729 -while.body11728: - %t130 = load ptr, ptr %a1 - %t131 = icmp eq ptr %t130, null - br i1 %t131, label %panic11804, label %ok11805 -panic11804: - call void @finch_panic(ptr @.str.7519, i64 416, ptr @.str.7520) - unreachable -ok11805: - %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.cond11727 -while.end11729: - %t135 = load ptr, ptr %a1 - %t136 = icmp eq ptr %t135, null - br i1 %t136, label %panic11806, label %ok11807 -panic11806: - call void @finch_panic(ptr @.str.7521, i64 418, ptr @.str.7522) - unreachable -ok11807: - %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 %panic11808, label %ok11809 -panic11808: - call void @finch_panic(ptr @.str.7524, i64 418, ptr @.str.7525) - unreachable -ok11809: - %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.7523, 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 - store { ptr, i64, i64 } %t146, ptr %a153 - call void @finch_str_drop(ptr %a153) - %t154 = load double, ptr %a148 - br i1 %t151, label %or.failed11810, label %or.ok11811 -or.failed11810: - store { ptr, i64, i64 } %t152, ptr %a155 - %t156 = load i64, ptr %a6 - %t157 = load ptr, ptr %a1 - %t158 = icmp eq ptr %t157, null - br i1 %t158, label %panic11812, label %ok11813 -panic11812: - call void @finch_panic(ptr @.str.7526, i64 419, ptr @.str.7527) - unreachable -ok11813: - %t159 = getelementptr inbounds %S.json.Reader, ptr %t157, i32 0, i32 1 - store i64 %t156, ptr %t159 - %t160 = load ptr, ptr %a1 - %t161 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t160, { ptr, i64, i64 } { ptr @.str.7528, i64 8, i64 0 }) - call void @finch_str_drop(ptr %a155) - %t162 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t161, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t162 -or.ok11811: - store double %t154, ptr %a163 - %t164 = load double, ptr %a163 - %t165 = call %S.json.Json @finch.json.new_number(double %t164) - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t167 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t166, %S.json.Json %t165, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t167 -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.read_value(ptr %p0) { -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 %panic11814, label %ok11815 -panic11814: - call void @finch_panic(ptr @.str.7529, i64 428, ptr @.str.7530) - unreachable -ok11815: - %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 %panic11816, label %ok11817 -panic11816: - call void @finch_panic(ptr @.str.7531, i64 428, ptr @.str.7532) - unreachable -ok11817: - %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 %then11818, label %endif11820 -then11818: - %t16 = load ptr, ptr %a1 - %t17 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t16, { ptr, i64, i64 } { ptr @.str.7533, 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 -endif11820: - %t19 = load i8, ptr %a5 - %t20 = icmp eq i8 %t19, 123 - br i1 %t20, label %then11821, label %endif11823 -then11821: - %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 %panic11824, label %ok11825 -panic11824: - call void @finch_panic(ptr @.str.7534, i64 433, ptr @.str.7535) - unreachable -ok11825: - %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 %then11826, label %endif11828 -then11826: - %t32 = load ptr, ptr %a1 - %t33 = icmp eq ptr %t32, null - br i1 %t33, label %panic11829, label %ok11830 -panic11829: - call void @finch_panic(ptr @.str.7536, i64 436, ptr @.str.7537) - unreachable -ok11830: - %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 -endif11828: - br label %while.cond11831 -while.cond11831: - br label %while.body11832 -while.body11832: - %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 %then11834, label %endif11836 -then11834: - %t44 = load ptr, ptr %a1 - %t45 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t44, { ptr, i64, i64 } { ptr @.str.7538, i64 15, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a22) - %t46 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t45, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t46 -endif11836: - %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.failed11837, label %try.ok11838 -try.failed11837: - call void @finch.drop.S_json_Json(ptr %a22) - %t53 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t51, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t53 -try.ok11838: - 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 %then11839, label %endif11841 -then11839: - %t59 = load ptr, ptr %a1 - %t60 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t59, { ptr, i64, i64 } { ptr @.str.7539, i64 3, i64 0 }) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t61 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t60, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t61 -endif11841: - %t62 = load ptr, ptr %a1 - %t63 = icmp eq ptr %t62, null - br i1 %t63, label %panic11842, label %ok11843 -panic11842: - call void @finch_panic(ptr @.str.7540, i64 449, ptr @.str.7541) - unreachable -ok11843: - %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.failed11844, label %try.ok11845 -try.failed11844: - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t73 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t71, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t73 -try.ok11845: - 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 %then11846, label %endif11848 -then11846: - %t81 = load ptr, ptr %a1 - %t82 = icmp eq ptr %t81, null - br i1 %t82, label %panic11849, label %ok11850 -panic11849: - call void @finch_panic(ptr @.str.7542, i64 454, ptr @.str.7543) - unreachable -ok11850: - %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 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - br label %while.cond11831 -endif11848: - %t86 = load ptr, ptr %a1 - %t87 = call i8 @finch.json.peek(ptr %t86) - %t88 = icmp eq i8 %t87, 125 - br i1 %t88, label %then11851, label %endif11853 -then11851: - %t89 = load ptr, ptr %a1 - %t90 = icmp eq ptr %t89, null - br i1 %t90, label %panic11854, label %ok11855 -panic11854: - call void @finch_panic(ptr @.str.7544, i64 458, ptr @.str.7545) - unreachable -ok11855: - %t91 = getelementptr inbounds %S.json.Reader, ptr %t89, i32 0, i32 1 - %t92 = load i64, ptr %t91 - %t93 = add i64 %t92, 1 - store i64 %t93, ptr %t91 - %t94 = load %S.json.Json, ptr %a22 - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - %t95 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t96 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t95, %S.json.Json %t94, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t96 -endif11853: - %t97 = load ptr, ptr %a1 - %t98 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t97, { ptr, i64, i64 } { ptr @.str.7546, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a74) - call void @finch_str_drop(ptr %a54) - call void @finch.drop.S_json_Json(ptr %a22) - %t99 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t98, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t99 -endif11823: - %t100 = load i8, ptr %a5 - %t101 = icmp eq i8 %t100, 91 - br i1 %t101, label %then11856, label %endif11858 -then11856: - %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 %panic11859, label %ok11860 -panic11859: - call void @finch_panic(ptr @.str.7547, i64 466, ptr @.str.7548) - unreachable -ok11860: - %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 %then11861, label %endif11863 -then11861: - %t113 = load ptr, ptr %a1 - %t114 = icmp eq ptr %t113, null - br i1 %t114, label %panic11864, label %ok11865 -panic11864: - call void @finch_panic(ptr @.str.7549, i64 469, ptr @.str.7550) - unreachable -ok11865: - %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 -endif11863: - br label %while.cond11866 -while.cond11866: - br label %while.body11867 -while.body11867: - %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.failed11869, label %try.ok11870 -try.failed11869: - call void @finch.drop.S_json_Json(ptr %a103) - %t127 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t125, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t127 -try.ok11870: - 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 %then11871, label %endif11873 -then11871: - %t134 = load ptr, ptr %a1 - %t135 = icmp eq ptr %t134, null - br i1 %t135, label %panic11874, label %ok11875 -panic11874: - call void @finch_panic(ptr @.str.7551, i64 477, ptr @.str.7552) - unreachable -ok11875: - %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 - call void @finch.drop.S_json_Json(ptr %a128) - br label %while.cond11866 -endif11873: - %t139 = load ptr, ptr %a1 - %t140 = call i8 @finch.json.peek(ptr %t139) - %t141 = icmp eq i8 %t140, 93 - br i1 %t141, label %then11876, label %endif11878 -then11876: - %t142 = load ptr, ptr %a1 - %t143 = icmp eq ptr %t142, null - br i1 %t143, label %panic11879, label %ok11880 -panic11879: - call void @finch_panic(ptr @.str.7553, i64 481, ptr @.str.7554) - unreachable -ok11880: - %t144 = getelementptr inbounds %S.json.Reader, ptr %t142, i32 0, i32 1 - %t145 = load i64, ptr %t144 - %t146 = add i64 %t145, 1 - store i64 %t146, ptr %t144 - %t147 = load %S.json.Json, ptr %a103 - call void @finch.drop.S_json_Json(ptr %a128) - %t148 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t149 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t148, %S.json.Json %t147, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t149 -endif11878: - %t150 = load ptr, ptr %a1 - %t151 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t150, { ptr, i64, i64 } { ptr @.str.7555, i64 10, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a128) - call void @finch.drop.S_json_Json(ptr %a103) - %t152 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t151, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t152 -endif11858: - %t153 = load i8, ptr %a5 - %t154 = icmp eq i8 %t153, 34 - br i1 %t154, label %then11881, label %endif11883 -then11881: - %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.failed11884, label %try.ok11885 -try.failed11884: - %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.ok11885: - store { ptr, i64, i64 } %t160, ptr %a162 - %t163 = load { ptr, i64, i64 }, ptr %a162 - %t164 = call %S.json.Json @finch.json.new_text({ ptr, i64, i64 } %t163) - call void @finch_str_drop(ptr %a162) - %t165 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t166 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t165, %S.json.Json %t164, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t166 -endif11883: - %t167 = load i8, ptr %a5 - %t168 = icmp eq i8 %t167, 116 - br i1 %t168, label %then11886, label %endif11888 -then11886: - %t169 = load ptr, ptr %a1 - %t170 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t169, { ptr, i64, i64 } { ptr @.str.7556, 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.failed11889, label %try.ok11890 -try.failed11889: - %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.ok11890: - %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 -endif11888: - %t178 = load i8, ptr %a5 - %t179 = icmp eq i8 %t178, 102 - br i1 %t179, label %then11891, label %endif11893 -then11891: - %t180 = load ptr, ptr %a1 - %t181 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t180, { ptr, i64, i64 } { ptr @.str.7557, 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.failed11894, label %try.ok11895 -try.failed11894: - %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.ok11895: - %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 -endif11893: - %t189 = load i8, ptr %a5 - %t190 = icmp eq i8 %t189, 110 - br i1 %t190, label %then11896, label %endif11898 -then11896: - %t191 = load ptr, ptr %a1 - %t192 = call { i1, i8, { ptr, i64, i64 } } @finch.json.expect_word(ptr %t191, { ptr, i64, i64 } { ptr @.str.7558, 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.failed11899, label %try.ok11900 -try.failed11899: - %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.ok11900: - %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 -endif11898: - %t200 = load i8, ptr %a5 - %t201 = icmp eq i8 %t200, 45 - br label %logic.from11901 -logic.from11901: - br i1 %t201, label %logic.end11903, label %logic.rhs11902 -logic.rhs11902: - %t202 = load i8, ptr %a5 - %t203 = icmp uge i8 %t202, 48 - br label %logic.from11904 -logic.from11904: - br i1 %t203, label %logic.rhs11905, label %logic.end11906 -logic.rhs11905: - %t204 = load i8, ptr %a5 - %t205 = icmp ule i8 %t204, 57 - br label %logic.rend11907 -logic.rend11907: - br label %logic.end11906 -logic.end11906: - %t206 = phi i1 [ false, %logic.from11904 ], [ %t205, %logic.rend11907 ] - br label %logic.rend11908 -logic.rend11908: - br label %logic.end11903 -logic.end11903: - %t207 = phi i1 [ true, %logic.from11901 ], [ %t206, %logic.rend11908 ] - br i1 %t207, label %then11909, label %endif11911 -then11909: - %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.failed11912, label %try.ok11913 -try.failed11912: - %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.ok11913: - %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 -endif11911: - %t217 = load ptr, ptr %a1 - %t218 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %t217, { ptr, i64, i64 } { ptr @.str.7559, i64 7, i64 0 }) - %t219 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t218, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t219 -} - -define internal void @finch.drop.S_json_Reader(ptr %a) { -entry: - - %t1 = getelementptr inbounds %S.json.Reader, ptr %a, i32 0, i32 0 - call void @finch_str_drop(ptr %t1) - ret void -} - -define internal { i1, %S.json.Json, { ptr, i64, i64 } } @finch.json.parse({ ptr, i64, i64 } %p0) { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - %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 - 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.failed11914, label %try.ok11915 -try.failed11914: - call void @finch.drop.S_json_Reader(ptr %a7) - %t13 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t11, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t13 -try.ok11915: - 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 %then11916, label %endif11918 -then11916: - %t21 = call { ptr, i64, i64 } @finch.json.unexpected(ptr %a7, { ptr, i64, i64 } { ptr @.str.7560, i64 19, i64 0 }) - call void @finch.drop.S_json_Json(ptr %a14) - call void @finch.drop.S_json_Reader(ptr %a7) - %t22 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, { ptr, i64, i64 } %t21, 2 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t22 -endif11918: - %t23 = load %S.json.Json, ptr %a14 - call void @finch.drop.S_json_Reader(ptr %a7) - %t24 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } zeroinitializer, i1 true, 0 - %t25 = insertvalue { i1, %S.json.Json, { ptr, i64, i64 } } %t24, %S.json.Json %t23, 1 - ret { i1, %S.json.Json, { ptr, i64, i64 } } %t25 -} - -define internal { ptr, i64, i64 } @finch.embedded.names() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7561, i64 18, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7562, i64 12, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7563, i64 12, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7564, i64 12, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7565, i64 20, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7566, i64 12, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7567, i64 20, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7568, i64 15, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define internal { ptr, i64, i64 } @finch.embedded.texts() { -entry: - %a1 = alloca { ptr, i64, i64 }, align 16 - store { ptr, i64, i64 } zeroinitializer, ptr %a1 - %t2 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t3 = load i64, ptr %t2 - %t4 = add i64 %t3, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t4, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t5 = load ptr, ptr %a1 - %t6 = getelementptr inbounds { ptr, i64, i64 }, ptr %t5, i64 %t3 - store { ptr, i64, i64 } { ptr @.str.7569, i64 24981, i64 0 }, ptr %t6 - store i64 %t4, ptr %t2 - %t7 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t8 = load i64, ptr %t7 - %t9 = add i64 %t8, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t9, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t10 = load ptr, ptr %a1 - %t11 = getelementptr inbounds { ptr, i64, i64 }, ptr %t10, i64 %t8 - store { ptr, i64, i64 } { ptr @.str.7570, i64 12884, i64 0 }, ptr %t11 - store i64 %t9, ptr %t7 - %t12 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t13 = load i64, ptr %t12 - %t14 = add i64 %t13, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t14, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t15 = load ptr, ptr %a1 - %t16 = getelementptr inbounds { ptr, i64, i64 }, ptr %t15, i64 %t13 - store { ptr, i64, i64 } { ptr @.str.7571, i64 2846, i64 0 }, ptr %t16 - store i64 %t14, ptr %t12 - %t17 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t18 = load i64, ptr %t17 - %t19 = add i64 %t18, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t19, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t20 = load ptr, ptr %a1 - %t21 = getelementptr inbounds { ptr, i64, i64 }, ptr %t20, i64 %t18 - store { ptr, i64, i64 } { ptr @.str.7572, i64 1406, i64 0 }, ptr %t21 - store i64 %t19, ptr %t17 - %t22 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t23 = load i64, ptr %t22 - %t24 = add i64 %t23, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t24, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t25 = load ptr, ptr %a1 - %t26 = getelementptr inbounds { ptr, i64, i64 }, ptr %t25, i64 %t23 - store { ptr, i64, i64 } { ptr @.str.7573, i64 995, i64 0 }, ptr %t26 - store i64 %t24, ptr %t22 - %t27 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t28 = load i64, ptr %t27 - %t29 = add i64 %t28, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t29, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t30 = load ptr, ptr %a1 - %t31 = getelementptr inbounds { ptr, i64, i64 }, ptr %t30, i64 %t28 - store { ptr, i64, i64 } { ptr @.str.7574, i64 2539, i64 0 }, ptr %t31 - store i64 %t29, ptr %t27 - %t32 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t33 = load i64, ptr %t32 - %t34 = add i64 %t33, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t34, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t35 = load ptr, ptr %a1 - %t36 = getelementptr inbounds { ptr, i64, i64 }, ptr %t35, i64 %t33 - store { ptr, i64, i64 } { ptr @.str.7575, i64 1792, i64 0 }, ptr %t36 - store i64 %t34, ptr %t32 - %t37 = getelementptr inbounds { ptr, i64, i64 }, ptr %a1, i32 0, i32 1 - %t38 = load i64, ptr %t37 - %t39 = add i64 %t38, 1 - call void @finch_arr_reserve(ptr %a1, i64 %t39, i64 ptrtoint (ptr getelementptr ({ ptr, i64, i64 }, ptr null, i32 1) to i64)) - %t40 = load ptr, ptr %a1 - %t41 = getelementptr inbounds { ptr, i64, i64 }, ptr %t40, i64 %t38 - store { ptr, i64, i64 } { ptr @.str.7576, i64 365, i64 0 }, ptr %t41 - store i64 %t39, ptr %t37 - %t42 = load { ptr, i64, i64 }, ptr %a1 - ret { ptr, i64, i64 } %t42 -} - -define i32 @main(i32 %argc, ptr %argv) { -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/winseed.sh b/bootstrap/winseed.sh deleted file mode 100755 index 10215ef..0000000 --- a/bootstrap/winseed.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -# Makes bootstrap/windows-x86_64.ll from Linux, with a Linux-hosted llvm-mingw (MinGW headers) and the headers of an -# official LLVM for Windows (clang-c/Index.h): -# bootstrap/winseed.sh -set -eu -cd "$(dirname "$0")/.." -finch=$1; mingw=$2; llvm=$3 -PATH="$mingw/bin:$PATH" FINCH_CC="$mingw/bin/x86_64-w64-mingw32-clang" "$finch" ir src/main.fch --target windows -I "$llvm/include" > bootstrap/windows-x86_64.ll -echo "wrote bootstrap/windows-x86_64.ll" diff --git a/docs/en/cheatsheet.md b/docs/en/cheatsheet.md index 4bc41ca..a9f7408 100644 --- a/docs/en/cheatsheet.md +++ b/docs/en/cheatsheet.md @@ -12,7 +12,6 @@ Everything in Finch on one page. For explanations, see the [guides](../../README |---|---| | `finch run file.fch [args…]` | compile and run (args go to the program) | | `finch build file.fch [-o name]` | make a program (`name.exe` on Windows) | -| `finch build file.fch --shared [-I dir]` | make a library (`libfile.so`, `file.dll`) that a C program loads; its `export fn`s are its C functions (numbers, bool, char, pointers) | | `finch ir file.fch` | print the LLVM IR | | `finch lsp` | the language server (editors use it) | | `finch version` | version | @@ -371,35 +370,7 @@ Any LSP editor: `finch lsp`. --- -## Enums and `match` - -``` -enum Color { Red, Green, Blue } enum Status { Ok = 200, NotFound = 404 } -c := Color.Green int(c) Color(2) c == Color.Red // == and != only; Color(7) is an error -fn Color.next() -> Color { ... } // methods work - -match c { Red -> ... Green, Blue -> { ... } else -> ... } // bare variant names; every variant or else -x := match n { 1, 2 -> "few" else -> "many" } // an expression: every arm the same type -``` - -## Generics - -``` -fn max[T](T a, T b) -> T { ... } max(3, 9) max[float](1, 2.5) // worked out, or written out -struct Stack[T] { []T items } fn Stack[T].push(T x) { ... } // the type goes with it: -s := Stack[int]() Stack[int] t Pair[str, int]("age", 31) // never just Stack() -``` - -## Standard library (`import name`; your own file of that name wins) - -| | | -|---|---| -| `path` | `join(a, b)` `base(p)` `dir(p)` `ext(p)` `stem(p)` `parts(p)` `clean(p)` `is_abs(p)` | -| `time` | `now()` `millis()` `sleep(ms)` `date(t)` `local(t)` `format(t, fmt)` `days_in_month(y, m)` | -| `proc` | `run(cmd)` `output(cmd)` (fails with its output) `env(name, fallback)` `pid()` `cwd()` | -| `json` | `parse(text)` `stringify(v)` `pretty(v)` `new_text/number/bool/null/list/object` `v.get(k)` `v.at(i)` `v.set(k, x)` `v.push(x)` `v.has(k)` `v.str_or(d)` `v.int_or(d)` `v.float_or(d)` `v.bool_or(d)` | - ## Keywords -`fn return if else while for in break continue true false null import link struct enum match defer or try` +`fn return if else while for in break continue true false null import link struct defer or try` (and `self` inside methods) diff --git a/docs/en/for-beginners.md b/docs/en/for-beginners.md index 60f32b4..179f48e 100644 --- a/docs/en/for-beginners.md +++ b/docs/en/for-beginners.md @@ -63,7 +63,8 @@ these lines one by one, pressing **Enter** after each: git clone https://github.com/Nexoniarz/Finch.git cd Finch nix-shell -bootstrap/build.sh +cmake -S . -B build -G Ninja +ninja -C build ``` If the last line finishes without the word `error`, Finch is ready. @@ -76,7 +77,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-engineers.md b/docs/en/for-engineers.md index a1b08b8..5d3d628 100644 --- a/docs/en/for-engineers.md +++ b/docs/en/for-engineers.md @@ -1,13 +1,14 @@ # Finch for Engineers -**The internals of Finch 2.4, whose compiler is written in Finch.** How source becomes tokens, an AST and LLVM IR *as text*, -which `clang` compiles and links with a small C runtime; how C headers are read with libclang from Finch itself and how -the C calling conventions are reproduced by hand; the type and ownership rules; how the compiler builds itself from a -seed; and the language server. +**The complete internals of Finch 2.0.** How source becomes tokens, tokens an AST, and the AST +LLVM IR, which is then optimized, emitted and linked against a small C runtime. The exact type +rules; the ownership model and how it lowers to copies and drops; how every construct becomes IR +(with real compiler output); how C headers, C structs and the System V ABI are handled; modules, +debug info, and the self-hosted compiler in `boot/`. Every function in the compiler is listed with +what it does and how it differs from its neighbours. -Assumed: you can read Finch (see the [technicians' guide](for-technicians.md)) and have at least seen LLVM IR. -The compiler's first version, in C++ on LLVM's C++ API, is kept on the `before-bootstrap` branch; this guide describes -the Finch one. +Assumed: you know C/C++ and have at least seen LLVM IR. +For the language from a user's point of view, see the [technicians' guide](for-technicians.md). > 🇵🇱 Polska wersja: [dla-inzynierow.md](../pl/dla-inzynierow.md) @@ -17,51 +18,71 @@ the Finch one. 1. [Architecture](#1-architecture) 2. [Source tree](#2-source-tree) -3. [Front end: lexer, parser, modules](#3-front-end-lexer-parser-modules) -4. [Code generation](#4-code-generation) -5. [C import and the C ABI](#5-c-import-and-the-c-abi) -6. [Driver, linking and targets](#6-driver-linking-and-targets) -7. [Type system](#7-type-system) -8. [Ownership and memory](#8-ownership-and-memory) -9. [Generics, enums and match](#9-generics-enums-and-match) -10. [Bootstrapping](#10-bootstrapping) -11. [The language server](#11-the-language-server) -12. [Semantics vs. C](#12-semantics-vs-c) -13. [Known limitations](#13-known-limitations) +3. [Lexer](#3-lexer) +4. [Grammar and parser](#4-grammar-and-parser) +5. [AST](#5-ast) +6. [Loading: files and modules](#6-loading-files-and-modules) +7. [Semantic model](#7-semantic-model) +8. [Type system](#8-type-system) +9. [Ownership and memory](#9-ownership-and-memory) +10. [Code generation](#10-code-generation) +11. [Runtime checks](#11-runtime-checks) +12. [The C runtime](#12-the-c-runtime) +13. [C interop: headers, structs, ABI](#13-c-interop-headers-structs-abi) +14. [Optimization, emission, linking](#14-optimization-emission-linking) +15. [Debug info](#15-debug-info) +16. [Diagnostics](#16-diagnostics) +17. [The self-hosted compiler (boot/)](#17-the-self-hosted-compiler-boot) +18. [Build system](#18-build-system) +19. [Testing](#19-testing) +20. [Semantics vs. C](#20-semantics-vs-c) +21. [Function reference](#21-function-reference) +22. [Extending the compiler](#22-extending-the-compiler) +23. [Targets: Windows, macOS, ARM64](#23-targets-windows-macos-arm64) +24. [The language server](#24-the-language-server) +25. [Editor integrations](#25-editor-integrations) +26. [Known limitations](#26-known-limitations) --- ## 1. Architecture -The compiler has no LLVM library inside it. It writes LLVM IR as **text** and lets `clang` do optimisation, code -generation and linking. That is what makes it small (about 8k lines) and what lets it be written in Finch itself. +Finch is a single-pass front end in front of LLVM: type checking and IR generation are one walk +over the AST, with no intermediate representation of its own. ``` - main.fch ─► loader ── lex ── parse ──► Program (+ every imported module, recursively) - │ - `import "x.h"` ─► cimport.fch (libclang, called from Finch) ─► C functions, structs, constants - │ - ▼ - gen.fch ─► generate(): declare structs, declare functions, define bodies - type check and emit IR in one walk; ABI classification for C calls - │ (IR text) - ▼ - linker.fch ─► clang -c prog.ll ─► clang prog.o rt-.o [your .c/.o/.a] -lm [pkg-config / -l] - │ - ▼ - executable (finch run: run from a temp file, then delete it) + main.fch ──► Loader::load() ── lex() ── parse() ──► Program (+ each imported module, recursively) + │ + all `import "x.h"` ──► importHeaders() (libclang) ──► CImports + │ + hostMachine() ──► TargetMachine (triple + data layout)│ + ▼ + generate(progs, cimports, tm, debug) ──► Codegen::run() + declareStructs() all Finch + C structs, LLVM struct bodies, cycle check + declareFns() every function's signature (+ "borrow" analysis of parameters) + define() each body: type check + IRBuilder, scopes, drops, runtime checks + defineMainWrapper the C `main(argc, argv)` + DIBuilder::finalize (with -g) ; verifyModule + ▼ + optimize() PassBuilder default (skipped with -O0) + emitObject() legacy PM + addPassesToEmitFile ──► prog.o + link() cc prog.o ~/.cache/finch/rt-.o [your .c/.o/.a] -lm [pkg-config/-l…] + ▼ + executable (finch run: executed from a temp file with the remaining arguments, then deleted) ``` Design decisions that shape the rest: -- **Fail fast.** The first error prints `file:line:col: error: …` with the source line and a caret, and the compiler stops. - No error recovery, so later phases never see half-valid input. -- **One walk.** `gen.fch` type checks and emits IR in one pass over the AST. Each expression yields an IR operand, its - Finch type (a string kind: `int`, `f32`, `str`, `array`, `map`, `struct`, `enum`, `named`…) and flags. -- **Let clang do the work.** Locals are `alloca`s promoted by `mem2reg`. Optimisation is clang's `-O2` (or `-O0` with `-g`). -- **Values, not references.** Arrays, strings and structs have value semantics; ownership is decided at compile time (§8). -- **A tiny C runtime** (`runtime/finch_rt.c`, ~760 lines) does what is tedious in IR: strings, array growth, maps, input, - files, panics. It is compiled once and cached in `~/.cache/finch`. +- **Fail fast.** The first error prints a diagnostic and exits (`failAt()` in `src/error.h`). No error + recovery, so later phases never see half-valid input. +- **One walk.** `Codegen` carries scopes, loops, the current function and module. Each expression + returns its IR value, its Finch type and two flags (`Value_`, §8). +- **Let LLVM do the work.** Locals are `alloca`s promoted by `mem2reg`/SROA. Finch builds φ-nodes by + hand only for `&&`/`||`. +- **Values, not references.** Arrays, strings and structs have value semantics: assignment copies, the + end of a block drops. Ownership is decided at compile time with no reference counting (§9). +- **A tiny C runtime** (`runtime/finch_rt.c`, ~430 lines) does what would be tedious in IR: string + operations, array growth, input, files, panics. It is embedded in the compiler and cached. --- @@ -69,96 +90,221 @@ Design decisions that shape the rest: | File | Lines | Responsibility | |---|---|---| -| `src/lexer.fch` | 220 | Tokens, positions, indentation-free layout | -| `src/ast.fch` | 120 | One `Node` struct with a `kind` string, children, type names, positions (`line`, `endLine`) | -| `src/parser.fch` | 780 | Recursive descent: declarations, statements, expressions, generics (`[T]`), `enum`, `match`, `export`, `link` | -| `src/gen.fch` | 5200 | Type check + IR: structs, functions, methods, scopes and drops, statements, expressions, built-ins, maps, errors as values, generics (monomorphisation), enums and `match`, `-g` debug metadata, the `index` mode | -| `src/cimport.fch` | 560 | libclang: functions, structs (fields, offsets, padding), enums, constants, globals, macros | -| `src/platform.fch` | 90 | `Target`: triple, data layout, C compiler, signedness of `char` per system | -| `src/linker.fch` | 300 | The cache, runtime object, libraries (`link`, pkg-config), link-error advice | -| `src/main.fch` | 310 | Driver: CLI, loader with module lookup and overlays, `build/run/ir/index/lsp` | -| `src/lsp.fch` | 875 | The language server (§11) | -| `src/docs.fch` | 110 | One description of the built-ins, shared by hover and completion | -| `std/*.fch` | 900 | `json`, `path`, `time` (+`_windows`), `proc` (+`_windows`) | -| `runtime/finch_rt.c` | 760 | The C runtime | -| `bootstrap/` | | `build.sh`, `install.sh`, the seeds (§10) | +| `src/error.h` | 50 | `g_files` (all sources), `failAt(file, line, col, msg)`, `fail(line, col, msg)`, `FinchError` | +| `src/lexer.h/.cpp` | 250 | `Tok`, `Token`, `lex(fileIndex)`, `tokName()` | +| `src/ast.h` | 360 | `Type` (incl. Array, Map, Fixed, Struct, Named), all `Expr`/`Stmt` nodes, `FnDecl`, `StructDecl`, `Import`, `Link`, `Program` | +| `src/parser.h/.cpp` | 610 | Recursive-descent `Parser`, `typeFromName()` | +| `src/loader.h/.cpp` | 90 | Reading files and modules (`Loader`), `FINCH_PATH` | +| `src/target.h/.cpp` | 210 | `g_target`: triple, C compiler, processes, paths; backend initialisation | +| `src/cimport.h/.cpp` | 430 | libclang import: functions, C structs (fields, offsets), constants, globals | +| `src/codegen.h` | 15 | `generate()` | +| `src/codegen_impl.h` | 310 | The `Codegen` class and its helper structs, shared by the files below | +| `src/codegen.cpp` | 1460 | Program, declarations (functions, methods), scopes and cleanups, statements, expressions, places (`ref`), operators, errors as values, mutation analysis | +| `src/codegen_types.cpp` | 580 | LLVM types, type resolution, struct layout, coercions, ownership (copy/drop helpers), text formatting, debug types | +| `src/codegen_builtins.cpp` | 890 | Calls, methods, constructors, built-ins, conversions, array and str methods, runtime declarations, panics | +| `src/codegen_map.cpp` | 240 | Maps: indexing, literals, methods, iteration | +| `src/abi.cpp` | 370 | C calling conventions (System V x86-64, Microsoft x64, AAPCS64), C calls with structs by value, C-callable thunks | +| `src/lsp.cpp`, `src/index.h`, `src/builtins_doc.h` | 700 | The language server (§24) | +| `src/main.cpp` | 350 | Driver: CLI, target machine, O2, object emission, runtime cache, linking, link-error advice, `run` | +| `runtime/finch_rt.c` | 740 | The runtime library (§12) | +| `boot/*.fch` | 3100 | The self-hosted compiler (§17) | --- -## 3. Front end: lexer, parser, modules +## 3. Lexer -**Lexer.** Newlines end statements; there is no indentation rule. Tokens carry file, line and column, which every error uses. +`lex(file)` makes one pass over `g_files[file].text` and returns `std::vector` ending in `Tok::End`. -**Parser.** Recursive descent, one function per construct. Notable points: types are parsed into a name string -(`[]str`, `map[str]int`, `ptr[char]`, `Stack[int]`); `fn Type.method` declares a method; `fn name[T]` and `struct Name[T]` -declare templates; `enum` and `match` have their own nodes; `export fn` marks a C-visible function; a block records -its `endLine` (used by the language server). The old `fn name(...) type` order is a parse error with a hint. +```cpp +struct Token { Tok kind; std::string text; int line, col; bool newlineBefore; }; +``` -**Modules.** `import name` looks, in order, at `name_.fch` next to the importing file (`windows`, `linux`, `macos`), -`name.fch` there, the folders of `FINCH_PATH`, then the standard library `std/`. Each module is parsed once; its names -are used as `module.name`. `import "x.h"` goes to the C importer instead. +- **Newlines are not tokens.** Each token records `newlineBefore`; the parser decides what it means (§4). + This keeps newline handling out of every list rule in the grammar. +- **Positions:** 1-based; `col` counts characters (UTF-8 continuation bytes don't advance it), so + carets line up under `"Błąd"`. A stray non-ASCII character is reported whole, with a hint that names are ASCII-only. +- **Identifiers / keywords:** `[A-Za-z_][A-Za-z0-9_]*`. Keywords: + `fn return if else while for in break continue true false null import link struct defer or try`. + (`self` and `map` are ordinary identifiers with a meaning in context: inside a method, before `[`.) + **Type names are not keywords**: `int`, `u8`, `ptr`… are `Ident`s recognised by the parser through + `typeFromName()`, so `u8(x)` is an ordinary call and the lexer doesn't depend on the type list. +- **Numbers:** decimal or `0x` hex with `_` separators. No octal (`010` is 10). A `.` belongs to a number + only when a digit follows, so `0..10` is `Int DotDot Int`. +- **Strings / chars:** escapes `\n \t \r \0 \\ \" \'`. No newline inside a literal. +- **Operators:** maximal munch (`->` before `-`, `<<`/`<=` before `<`, `&&` before `&`, `..` before `.`, + `:=` before `:`). `:` alone is a token (named arguments). +- **Comments:** `//` and non-nesting `/* */`. --- -## 4. Code generation +## 4. Grammar and parser -`gen.fch` is one big `Gen` struct plus functions over it. The passes are: +`Parser` (`src/parser.cpp`) is hand-written recursive descent with one token of lookahead, plus up to +three in `atDeclaration()`. -1. `declareStructs`: every Finch and C struct gets an LLVM type (C structs with their real padding); recursive-by-value - structs are refused. -2. `declareFns`: signatures, with a *borrow analysis* for parameters (a parameter that is never stored is passed without - a copy). -3. `define`: each body, type checked and emitted. Scopes track what must be dropped when they end (`defer` runs first). -4. `defineMainWrapper`: the C `main(argc, argv)`, and `finch_on_fatal` for embedders. -5. With `-g`, DWARF metadata is attached as the IR is written (use `-O0`). +```ebnf +program = { import | link | struct | function } ; +import = "import" ( STRING | IDENT ) ; (* "x.h" = C header, name = Finch module *) +link = "link" STRING ; (* "glfw" | "file.c" | "file.o" | "lib.a" *) +struct = "struct" IDENT "{" { type IDENT [ "=" expr ] NEWLINE } "}" ; +function = "fn" IDENT [ "." IDENT ] "(" [ param { "," param } ] ")" [ "->" ( type [ "!" ] | "!" ) ] block ; + (* fn Point.move: a method; "!": can fail *) +param = type IDENT ; +type = "[" "]" type | "map" "[" type "]" type | "ptr" [ "[" type "]" ] + | TYPENAME | IDENT [ "." IDENT ] ; -Generics are **monomorphised**: a call `max(1, 2)` infers `T`, then the template's AST is generated again with `T` bound, -under a mangled name (`max$int`). `match` over an enum is exhaustive (a missing variant is an error, `else` covers the -rest); on a value it is a chain of comparisons. Enum values are `i32`; `Color(n)` is range checked; printing uses a -generated name table. +block = "{" { statement TERMINATOR } "}" ; +statement = if | while | for | return | "break" | "continue" | "defer" statement | block + | type IDENT [ "=" expr ] (* declaration, see atDeclaration *) + | IDENT ":=" expr + | target assignop expr (* target: var, field, element, p.value *) + | call | method | try | orelse ; +for = "for" IDENT [ "," IDENT ] "in" expr ( ".." expr block | block ) ; (* range | for-each *) +assignop = "=" | "+=" | "-=" | "*=" | "/=" | "%=" ; -Errors as values: `-> T!` returns a pair (value, error text); `try` returns early on error, `or` handles it, `error("…")` -makes one. +expr = or [ "or" ( block | expr ) ] ; (* f(x) or 0, f(x) or { ... }: lowest, right to left *) +or = and { "||" and } ; and = cmp { "&&" cmp } ; +cmp = add { ( "==" | "!=" | "<" | "<=" | ">" | ">=" ) add } ; +add = mul { ( "+" | "-" | "|" | "^" ) mul } ; +mul = unary { ( "*" | "/" | "%" | "<<" | ">>" | "&" ) unary } ; +unary = ( "-" | "!" | "~" ) unary | "try" postfix | postfix ; +postfix = primary { "." IDENT [ args ] | "[" expr "]" } ; +primary = INT | FLOAT | STRING | CHAR | "true" | "false" | "null" + | IDENT [ args ] | "(" expr ")" | "[" [ expr { "," expr } [","] ] "]" + | "[" ":" "]" | "[" expr ":" expr { "," expr ":" expr } [","] "]" ; (* maps *) +args = "(" [ arg { "," arg } [","] ] ")" ; arg = [ IDENT ":" ] expr ; +``` + +**Statement termination.** After a statement, `endOfStatement()` requires `}`, end of file, or a token +with `newlineBefore`. Inside expressions `sameLine()` (`parenDepth > 0 || !newlineBefore`) decides whether +an operator, `.`, `[` or a call's `(` continues the expression. `parenDepth` grows inside `( )` and `[ ]` +and is saved/reset to 0 when entering `{ }`. + +**Precedence is Go's**, not C's: `&` binds like `*`, and `|`/`^` like `+`, all above comparisons, so +`x & MASK == 0` means `(x & MASK) == 0`. + +**Recognising statements.** `atDeclaration()` is true for `[` `]` (an array type), `TYPE IDENT`, +`ptr [`, and `IDENT . IDENT IDENT` (a module's type). Otherwise the parser **parses a whole expression, +then looks at the next token**: an assignment operator makes it a target (it must be a `Var`, `Member` or +`Index`), otherwise it must be a call or method call, or it's `this value is computed but never used`. + +**Struct literals are calls**: `Point(1, 2)` or `Point(x: 1, y: 2)`. Brace-based literals (`Point{…}`) +would be ambiguous with blocks (`if done {`); a call needs no special grammar, and named arguments +(`IDENT ":"` in `args()`) are only accepted by constructors at code generation time. --- -## 5. C import and the C ABI +## 5. AST -`cimport.fch` calls **libclang** directly from Finch (it is itself written with `import "clang-c/Index.h"`), parses the -header with the target's flags, and walks the cursors. Types map as: `const char *` parameters → `str`, other -`char *` → `ptr[char]`, a `char *` result → `str`; integer types by size and signedness (`char` is unsigned on ARM64 -Linux); structs and enums by layout. +All nodes are in `src/ast.h`: small class hierarchies with an explicit `kind`, dispatched with +`switch` + `static_cast`. -LLVM IR does not do the C calling convention for you, so `gen.fch` reproduces it: +| ExprKind | Node | Fields | +|---|---|---| +| `Int` `Float` `Bool` `Char` `Str` | literals | `value` | +| `Null` | `NullExpr` | | +| `Var` | `VarExpr` | `name` | +| `Unary` | `UnaryExpr` | `op` (`- ! ~`), `operand` | +| `Binary` | `BinaryExpr` | `BinOp op`, `lhs`, `rhs` | +| `Call` | `CallExpr` | `callee` (a name), `args`, `argNames` | +| `Member` | `MemberExpr` | `obj`, `field` (`.x`, `.len`, `.ptr`, `.value`) | +| `Index` | `IndexExpr` | `obj`, `index` | +| `ArrayLit` | `ArrayLitExpr` | `elems` | +| `Method` | `MethodExpr` | `obj`, `name`, `args`, `argNames`; also `module.fn(...)` and `p.method(...)` | +| `MapLit` | `MapLitExpr` | `keys`, `values` (`[:]` has none) | +| `Try` | `TryExpr` | `call` | +| `OrElse` | `OrElseExpr` | `call`, and either `fallback` (an expression) or `block` | -- `classify` – System V x86-64: a struct up to 16 bytes goes in registers by eightbyte class (INTEGER/SSE), larger in memory; -- `classifyArm64` – AAPCS64, including homogeneous float aggregates (HFA); -- the Microsoft x64 rules (1, 2, 4, 8-byte structs by value in a register, the rest by pointer); -- `makePlan` turns the classification into a call plan; `cThunk` makes `addr(fn)` callable from C (callbacks). +| StmtKind | Node | +|---|---| +| `Block` `VarDecl` `Assign` `Expr` `If` `While` `For` `ForEach` `Return` `Break` `Continue` `Defer` | as named; `ForEachStmt` has `var`, `var2` (`for i, x` / `for k, v`), `list`, `body`; `DeferStmt` holds one statement | -The same code is what lets the compiler call libclang, whose API passes `CXCursor`, `CXType` and `CXString` by value. +`FnDecl` has `recv` (the struct of a method, `""` otherwise) and `fallible` (`-> T!`). + +`math.sqrt(x)` parses as a `MethodExpr` on `VarExpr("math")`; whether `math` is a module or a variable +is decided during code generation. Calls name their callee instead of holding an expression: Finch has +no first-class functions, and resolving the name late lets one `CallExpr` be a built-in, a conversion +(`u8(x)`), a struct constructor, a Finch function or a C function. + +There is no "load" node: whether `x` means its address or its value depends on context (`ref()` vs +`expr()`, §10.2). + +### `Type` + +```cpp +struct Type { + enum Kind { Void, Bool, Char, I8, I16, I32, I64, U8, U16, U32, U64, F32, F64, + Str, Ptr, Null, Array, Map, Fixed, Struct, Named }; + Kind kind; + std::shared_ptr elem; // Ptr (null = untyped `ptr`), Array, Fixed; Map: the value + std::shared_ptr key; // Map + long long count; // Fixed + std::string name, module; // Named (as written) / Struct (resolved) + StructInfo *info; // Struct +}; +``` + +The parser produces `Named` for struct names; `Codegen::resolve()` turns them into `Struct` with an +`info` pointer. `Fixed` (`[N]T`) only comes from C struct fields. `int` is `I64` and `float` is `F64`. +Equality is structural; two `Struct`s are equal iff they share `info`. --- -## 6. Driver, linking and targets +## 6. Loading: files and modules -`finch build|run|ir|index file.fch [-o out] [-O0] [-g] [-l lib] [-I dir] [--target t] [--shared] [--overlay path=file]`. -`ir` prints the IR; `index` prints the records the language server uses (§11); `--shared` makes a shared library of the -`export fn`s. +`Loader::load(path, module, from)` in `main.cpp` reads a file, appends it to `g_files` (positions carry +the file index in `Pos::file`), lexes and parses it, then loads each `import name` that wasn't seen yet: +`name.fch` next to the importing file, or in a `FINCH_PATH` folder. The result is a `std::vector`, +main file first. Cycles are fine: a module is marked loaded before its own imports are followed. -`--target windows|linux|arm64|macos|` changes the triple and data layout, the C `char` signedness, the ABI rules -above, the OS variant of modules (`name_windows.fch`), and the C compiler: `FINCH_CC` or `clang --target=…`. Linking -asks `pkg-config` for flags for `link "lib"`; when the linker fails the output is analysed and the likely missing -`link "…"` is suggested. The runtime object is keyed by a hash of its source and the target. - -Environment: `FINCH_PATH` (module folders), `FINCH_RT` (runtime source), `FINCH_CC` (C compiler/linker; the IR is always -compiled by `clang`, never by `CC`), `FINCH_LIBCLANG` (for `bootstrap/build.sh`). - -The compiler finds `runtime/` and `std/` next to itself (`../`, `./`) or under `../share/finch/` (`bootstrap/install.sh`). +All files become **one LLVM module**. Each Finch module has a `ModuleScope` (functions, structs, the set +of modules it imports). Names are looked up in the current module; another module's names are reachable +only qualified (`geometry.length`, `geometry.Vec`) and only if imported there. Functions are emitted as +`finch..` (`finch.` in the main file), struct types as `finch..`. --- -## 7. Type system +## 7. Semantic model + +### Declaration order + +`Codegen::run()` first declares **all structs** of all modules plus all imported C structs, resolves +every field type and sets the LLVM bodies (`declareStructs` → `resolveStruct`), then declares **all +function signatures** (`declare`), then defines bodies. So order inside a file and across modules never +matters, and recursion (also mutual, also across modules) works. + +`resolveStruct` detects by-value cycles with a three-state flag (`struct A { A inner }` is an error with +the advice to use `ptr[A]` or `[]A`). Pointers and arrays of a struct don't need its layout, so +`struct Node { []Node kids; ptr[Node] parent }` is fine: they resolve the name "shallowly" (`resolveT(…, deep=false)`). + +### Scopes and variables + +```cpp +struct Var { Value *slot; FType type; bool readonly; std::string readonlyWhy; + bool owned; int order; bool moved; }; +struct Cleanup { bool isDefer; std::string var; const Stmt *body; int order; }; +struct Scope { unordered_map vars; vector cleanups; }; +``` + +A scope is pushed for the function's parameters, each `{ }`, each `for` (holds `i`), each `for … in` +(the hidden list temporary) and each iteration of it (holds `x`). + +- **No shadowing:** `addVar()` rejects a name found in *any* enclosing scope, a function of the module, + an imported module name or a built-in. +- **Read-only:** range and for-each variables (`readonlyWhy` gives the specific message). +- `order` numbers declarations; `defer` uses it to hide variables declared after it (§9.5). + +### Name resolution + +Value position `x`: local variable → C constant → C global → (module name: error with a hint) → error. +Call `n(...)`: built-ins (`print addr input new free exit shell read_file write_file file_exists`) → +type names (conversion) → function of the current module → struct of the current module / C struct +(constructor) → C function → error (with a hint if the function exists in another module, or a +`headerHint` for well-known libc names). + +--- + +## 8. Type system ### LLVM representation @@ -168,13 +314,13 @@ The compiler finds `runtime/` and `std/` next to itself (`../`, `./`) or under ` | `char` `i8` `u8` / `i16` `u16` / `i32` `u32` / `int` `u64` | `i8` / `i16` / `i32` / `i64` | | `f32` / `float` | `float` / `double` | | `str`, `[]T` | `{ ptr, i64, i64 }` (pointer, length, capacity) | -| `map[K]V` | `{ ptr, i64, i64, i64, ptr, i64 }` (entries, len, used, cap, index, icap; see src/gen.fch) | +| `map[K]V` | `{ ptr, i64, i64, i64, ptr, i64 }` (entries, len, used, cap, index, icap; §10.12) | | `ptr`, `ptr[T]`, `null` | `ptr` (opaque) | | `[N]T` | `[N x T]` | | Finch struct | named struct type, natural layout | | a method's `self` | `ptr` (the first parameter) | | the result of `-> T!` | `{ i1 ok, T value, str error }` (`i8` in place of `T` for `-> !`) | -| C struct | named **packed** struct with explicit padding bytes (§5) | +| C struct | named **packed** struct with explicit padding bytes (§13.2) | Signedness lives only in the Finch type and selects `sdiv/udiv`, `ashr/lshr`, `icmp s*/u*`, `sext/zext`, `sitofp/uitofp`, `fptosi/fptoui`. @@ -189,7 +335,7 @@ struct Value_ { Value *v; FType type; bool literal; bool fresh; }; it fits (`fits()`), or `f32`. It survives unary minus and literal-only arithmetic that folds to a constant; explicit conversions clear it (`u8(250)` is a typed constant, so `u8(250) + 10` wraps to 4). - **`fresh`**: an owning value (str/array/owning struct) that nobody holds yet: the result of a call, - a literal, a concatenation, a constructor. It must be stored (moved) or released (§8). + a literal, a concatenation, a constructor. It must be stored (moved) or released (§9). ### Implicit conversions: `coerce(v, want)` @@ -228,9 +374,7 @@ signedness (char unsigned). Bool: equality only. Arrays/structs: error. --- ---- - -## 8. Ownership and memory +## 9. Ownership and memory ### 9.1 The model @@ -350,54 +494,375 @@ iteration, nested arrays of structs, and C struct passing. --- ---- +## 10. Code generation -## 9. Generics, enums and match +### 10.1 Variables -See §4 for how they are generated. For the rules a user sees, read sections 23 and 24 of the -[technicians' guide](for-technicians.md). The tests are `tests/new/generics.fch`, `tests/new/enums.fch` and their refusals -in `tests/new/fail/`. +Every variable, including parameters, gets an `alloca` at the top of the entry block (`slot()`; +C structs get their C alignment). `addVar()` stores the initial value, registers the variable, adds a +drop cleanup if it owns its value, and (with `-g`) declares it to the debugger. ---- +### 10.2 Places: `ref()`, `place()`, `expr()` -## 10. Bootstrapping - -The compiler is built from a **seed**: its own IR, committed as `bootstrap/.ll` (see -[bootstrap/README.md](../../bootstrap/README.md)). `bootstrap/build.sh`: - -``` -seed .ll ──clang──► finch0 ──builds src/──► finch1 ──builds src/──► build/finch +```cpp +struct LRef { bool isPlace; Place pl; Value_ val; }; // an address, or (if none) a value ``` -and stops unless `finch1` and `finch` produce byte-identical IR (a fixpoint: the compiler compiles itself the same way -whatever built it). `bootstrap/build.sh seed` rewrites the seed from the current compiler; do it whenever the compiler's -own source starts to use a feature the committed seed lacks. +`ref(e, forWrite)` walks a `Var`/`Member`/`Index` chain and returns an **address** when one exists: -A seed is per system because the C calling convention for the libclang calls is baked into it (§5). -Linux x86-64 and Linux ARM64 have seeds. macOS and Windows would need seeds made with Apple's and Microsoft's headers. +- `Var` → its `alloca` (or a C global). +- `.field` on a struct place → `getelementptr` to the field (`llvmIndex`; C structs skip padding elements). +- through a pointer (`p.value`, `p.field`, `p[i]`) → load the pointer, check it isn't null, address the target. + `p.value` on a pointer to a struct that has its own `value` field means that field. +- `a[i]` on an array/str place → load `{ptr,len,cap}`, `boundsCheck(i, len)`, `getelementptr`. For + `forWrite` on a `str`, `finch_str_own` first (copy-on-write for literals). `[N]T` checks against `N`. +- `.len` / `.ptr` → values. +- a temporary (call result…) has no address: its field/element is extracted, copied if owning, and the + temporary released. ---- +`expr()` on these kinds calls `ref()` and loads from the address: this is where every `load` of a +variable, field or element comes from. `place()` demands an address (assignment targets, `addr()`). -## 11. The language server +### 10.3 Assignment -`finch lsp` speaks JSON-RPC over stdin/stdout (`Content-Length` framing, `std/json`). It does not type check; it runs -`finch index file.fch --overlay path=copy …` for every change, where the overlays are the editor's unsaved text. In `index` -mode the compiler prints, besides IR-free output, tab-separated records: +`x = v`: evaluate `v` **first** (it may reallocate memory the target lives in: `a[0] = f()` where `f` +pushes to `a`), then `place(target, forWrite)`, `coerce`, `own`, load the old value, store, drop the old +one. Compound `x += v`: evaluate `v`, load the target, `arith()`, store, drop the old value (for `str +=`). -| Record | Meaning | +### 10.4 Functions and `main` + +Functions are `internal` with their natural LLVM signature (aggregates by value). Owning parameters are +copied at entry only if `borrowParam` is false. Methods (§10.10) get `self`'s address as an extra first +parameter; fallible functions (§10.11) return `{ i1, T, str }`. `fn main() -> !` / `-> int!` makes the +wrapper print `error: ` to stderr and exit with 1 on failure. `fn main` is the internal `finch.main`; a separate +external `i32 main(i32, ptr)` (`defineMainWrapper`) builds `[]str args` with `finch_args` if requested, +calls it, drops the arguments and returns the exit code. A function that falls off its end gets the +scope cleanups and `ret void`, or the error `can reach its end without returning T`. + +### 10.5 Control flow + +The builder's current block is the source of truth for reachability (`terminated()`): statements after +a terminator are errors (`this code can never run`). `continueAt()` deletes a merge block nobody jumps +to. `if`/`while`/`for` are the classic block layouts; `while true` without `break` leaves the function +terminated (no `return` needed after it). `for i in a..b` evaluates both ends once; `continue` goes to +`for.step`. `for x in list` reads the list's length from its address **every round** (pushing inside the +loop is safe) and keeps the index in a stack slot. `break`/`continue` emit the cleanups of the scopes +opened inside the loop (`Loop::scopeDepth`) before jumping. + +### 10.6 Short-circuit `&&` / `||` + +The only hand-built φ: the left side ends in block `from`, the right side in `rhsEnd`; +`phi i1 [!isAnd, from], [rhs, rhsEnd]`. + +### 10.7 Calls + +`callFinch()` coerces arguments to parameter types (array literals via `exprWant`), passes owning ones +shallowly, calls, then releases fresh arguments. Results of owning type are fresh. +`construct()` builds a struct from `zeroinitializer` with `insertvalue`: positional (all fields) or named +(missing ones take the field's default expression, evaluated in the struct's module with the caller's +scopes swapped out, or zero). C calls are in §13. + +### 10.8 Printing + +`print` emits `printf` per scalar argument with a format chosen by type (`%lld`, `%llu`, `%g`, `%c`, +`%.*s` for `str` with its length), separated by spaces, then `\n`. Everything else (pointers, arrays, +fixed arrays, maps, structs) is first **formatted** into a heap `str` buffer by `emitFormat()` and +printed with `finch_buf_print`. Composite types get a generated helper `finch.format.(buf, value*)` +that appends `[1, 2]` / `{"a": 1}` / `Point(x: 1, y: 2)`, quoting strings and chars inside. `str(x)` of +an array, map or struct runs the same helper, so `str(x)` is always what `print(x)` shows. + +### 10.9 Array and str methods + +Arrays: `push` (`finch_arr_reserve` + store + len++), `pop`/`remove` (move out, `remove_gap`), +`insert` (`insert_gap`), `clear`/`resize` (drop the elements that go away, `finch_arr_resize`), +`find`/`contains` (a loop with `compare(Eq)`), `slice` (new array, `copyAt` per element), `reverse` +(swap loop), `sort` (libc `qsort` with a generated comparator `finch.cmp.`), `join` (runtime). +Methods that change the array require an address (a variable/field/element). +Strings: `sub find contains starts_with ends_with split trim upper lower replace repeat bytes`, all in the runtime. +`for i, x in list` adds a read-only `int` index variable next to the element. + +### 10.10 Methods + +`fn Point.move(int dx)` is declared like a function named `finch.[module.]Point.move` with a leading +`ptr` parameter and stored in `Codegen::methods[StructInfo*]` (so methods follow the struct into every +module that uses it, and C structs can have methods too). In `define()`, `self` is a `Var` whose `slot` +**is that pointer argument**: `self.x` is a GEP from the caller's own struct, and `self = …` writes the +caller's value. No copy happens, ever. + +At a call `obj.m(args)` (`structMethod()`), `ref(obj)` gives an address when `obj` is a place (a variable, +field, element, `m[key]`), the loaded pointer for a `ptr[T]` (null-checked), or a stack temporary for a +value (`Point(1, 2).length()`), which is dropped after the call. Two safety rules come from the mutation +analysis: a method that changes `self` can't be called on a read-only loop variable, and if such a method +is given an argument that lives inside the receiver (`c.merge(c)`, `p.add(p.items)`), the argument is +copied first, so `self` can't free memory the argument still points to. + +### 10.11 Errors as values + +A fallible function (`-> T!`) returns `{ i1 ok, T value, str error }`; on failure `value` is zero, so the +caller never has to drop it. `return v` wraps `{1, v, zero}` (`retValue()`); `return error(msg)` evaluates +the message, runs the cleanups and returns `{0, zero, msg}` (`retError()`). + +Calling a fallible function is only allowed as the operand of `or` / `try`. `fallible(call)` sets +`fallibleTarget` to the call expression; `callFinch()` (and the fallible built-ins) compare their own +`CallExpr`/`MethodExpr` against it, and if it matches, leave `fallibleFailed` (`i1`) and `fallibleMsg` +(`str`) for the caller; if a fallible call doesn't match, it's the compile error *'f' can fail, so say what +happens then*. Nested handlers save and restore the three fields. + +| Form | Lowering | |---|---| -| `@R file line col len defFile defLine defCol hover` | a reference: what hover shows and where the definition is | -| `@V name type file line col fnFile fnLine fnEnd` | a variable and the function it lives in | -| `@F module name recv file line col endLine signature params` | a function or method | -| `@S` / `@SF`, `@E`, `@I` | structs (and fields), enums, imports | +| `f(x) or fallback` | `br failed, or.failed, or.ok`; the failed block drops the message and evaluates the fallback (only there); a φ joins the two values | +| `f(x) or { … }` | the failed block declares `err` (owning the message) and runs the block. If the value is used, the block must end in a terminator; as a statement it may fall through, and the success path releases the unused value | +| `try f(x)` | the failed block runs `emitCleanups(0)` and returns `{0, zero, msg}` from the current function, which must be fallible | -The first error is printed as `path:line:col: error: message` and becomes a diagnostic. When code does not compile, the -server keeps answering completion and signature help from the last version that did. `tests/lsp_test.py` is the acceptance -test (22 checks). +Built-ins with a failure mode check `&call == fallibleTarget` and switch to `finch_str_try_int`, +`finch_str_try_float`, `finch_try_read_file`, `finch_try_write_file`, `finch_try_delete_file`, which +return 1 / 0 and fill an error `str` instead of panicking. The cost on success is one predictable branch; +nothing is allocated unless a failure happens. + +### 10.12 Maps + +The runtime (§12) keeps an insertion-ordered hash table, in the style of CPython's `dict`: an `entries` +array of `{ i64 hash, K key, V value }` slots in insertion order (hash 0 = removed), plus an `index` of +`icap` slots (power of two, ≥ 2 × cap) with linear probing (−1 empty, −2 removed, else an entry number). +The runtime only hashes (FNV-1a + a 64-bit mix; text keys by content, others by bytes), finds and places +entries; the compiler stores, copies and drops keys and values, exactly like array elements. + +| Code | Lowering | +|---|---| +| `m[k]` read | `finch_map_find`; −1 → `finch_map_missing` (noreturn, with the key as text); else a place at `entry.value` | +| `m[k]` write (`=`, `+=`, a changing method, `addr`) | `mapSlot()`: `finch_map_slot` returns the entry, adding it if missing; a new entry gets a copy of the key and the value type's default | +| `["a": 1, …]` | a zeroed map + `mapSlot` per entry (the first entry decides the types; number values are all `float` if one has a dot) | +| `has`, `get`, `remove`, `clear`, `keys`, `values` | `codegen_map.cpp`; `get`'s default is evaluated only when the key is missing | +| `for k, v in m` | a loop over `0..used` that skips removed slots, re-reading `entries` and `used` every round | +| copy / drop / format | helpers like arrays': `finch_map_clone_raw` then deep copies of owning keys and values; drop each live entry, then `finch_map_free` | + +Removing marks the slot (and the index entry) removed; slots are packed when the table would grow while +at least a quarter of them are removed. Removing the last key resets the table. --- -## 12. Semantics vs. C +## 11. Runtime checks + +All runtime errors go through `finch_panic(file, line, msg)` / `finch_panic_index(file, line, i, len)` +(declared `noreturn cold`), so the failing branch is laid out cold and the check costs a compare and a +well-predicted branch. LLVM removes checks it can prove (constant indexes in range, loop-hoisted bounds). + +| Check | Where | +|---|---| +| division/remainder by zero (constant zero: compile error) | `checkDivisor()` | +| `MIN / -1` for signed types | `checkDivisor()` | +| array/str/fixed-array index out of range (`icmp uge`, so negative indexes too) | `boundsCheck()` | +| `.value`, `.field`, `[i]` through null | `member()`, `index()` | +| `pop()` on empty, `slice()`/`sub()` out of range | methods, runtime | +| bad text in `int(s)`/`float(s)`, unreadable file in `read_file` (without `or` / `try`) | runtime | +| `m[key]` read with a missing key | `mapIndex()` | +| a method called through a null `ptr[T]` | `structMethod()` | + +A 20-million-element sieve with a bounds check on every access runs as fast as the same C (≈0.09 s): +the checks are hoisted or folded. + +--- + +## 12. The C runtime + +`runtime/finch_rt.c` is plain C with no global state. CMake embeds it into the compiler as a raw string +(`rt_source.inc`); on first use `runtimeObject()` compiles it with `$CC -O2 -fPIC -c` into +`~/.cache/finch/rt-.o`, where the hash covers the source, the Finch version and the C compiler. +It is linked statically into every program. + +The shared layout: + +```c +typedef struct { char *ptr; int64_t len; int64_t cap; } FStr; // ptr always NUL-terminated +typedef struct { void *ptr; int64_t len; int64_t cap; } FArr; +// str cap: > 0 heap (owned), 0 literal (static), -1 borrowed from C (copy before keeping) +``` + +Functions take and return these **by pointer**, so their C ABI is trivial (no struct classification): +string building (`concat`, `from_int/uint/float/char/bool`, `sub`, `trim`, `upper`, `lower`, `replace`, +`split`, `join`, `repeat`, `from_bytes`), comparison (`eq`, `cmp`, `find`, `starts`, `ends`), ownership +(`copy`, `own`, `drop`, `from_c`), arrays (`reserve`, `make`, `resize`, `clone_raw`, `free`, +`insert_gap`, `remove_gap`), maps (`map_find`, `map_slot`, `map_remove_at`, `map_clear`, `map_free`, +`map_clone_raw`, `map_missing`; §10.12), text buffers for `print`/`str` (`buf_add`, `buf_int`, …, +`buf_print`), the fallible variants (`str_try_int`, `str_try_float`, `try_read_file`, `try_write_file`, +`try_delete_file`, `report_error`), `args`, `input`, files, `shell`, and the panics. Allocation failure +prints `out of memory` and exits. + +--- + +## 13. C interop: headers, structs, ABI + +### 13.1 Importing headers + +`importHeaders(imports, dirs)` parses each `import "x.h"` as its own translation unit from an in-memory +`#include "x.h"`, with `-x c -std=gnu11`, `-I` for every `.fch` file's folder, and `-isystem` for each +directory the system C compiler searches (read from `$CC -E -v -x c /dev/null`, which is what makes it work +on NixOS). `gnu11` because glibc hides `M_PI` and friends in strict ISO mode. + +The `Importer` visits top-level cursors: + +| Cursor | Result | +|---|---| +| `FunctionDecl` | `CFunc` (signature mapped in **signature context**; `static` and K&R functions recorded as unsupported) | +| `TypedefDecl` of a record | names the record (`typedef struct {…} CXCursor` → `CXCursor`) | +| `StructDecl` (definition) | names the record by its tag | +| `VarDecl` `extern` | `CGlobal` (mapped in **data context**) | +| `EnumConstantDecl`, numeric `MacroDefinition` | `CConst` (literal) | + +`mapType()` works on canonical types and maps integers by size. The context decides `char *`: a `str` +in function signatures (Finch converts at the call), but `ptr[char]` inside structs, globals and behind +pointers (where the memory layout must stay a single pointer). Records by value become +`Named{name, "C"}` and are defined with `defineRecord()`: every field (`clang_Type_visitFields`) with its +byte offset, size and alignment, nested records, constant arrays (`Fixed`). Unions and bit fields are kept +as hidden bytes and mark the struct unsupported for by-value calls; pointers to anything else (void, +functions, incomplete structs) become `ptr`. + +### 13.2 Laying out C structs + +`resolveStruct()` builds a **packed** LLVM struct that mirrors C byte for byte: an `[n x i8]` pad before +each field whose offset is ahead of the current position, the field itself (only if its LLVM size matches +C's), and tail padding up to C's `sizeof`. Field accesses use the recorded `llvmIndex`. Packing makes the +layout exact regardless of LLVM's alignment rules; allocas and temporaries get the C alignment explicitly. + +### 13.3 The System V x86-64 calling convention + +`classify(T)` (in `abi.cpp`) flattens a struct into scalar leaves with byte offsets (through nested +structs and fixed arrays) and: + +- **MEMORY** if it is larger than 16 bytes or has a misaligned leaf: passed as a pointer with + `byval(T) align ≥8`, returned through a hidden first `sret(T)` pointer. +- otherwise each eightbyte is **INTEGER** if any leaf in it is an integer/pointer, else **SSE**. Parts: + INTEGER → `iN` for the bytes that are left (`i32` for a 4-byte `Color`), SSE → `double`, `<2 x float>` + or `float`. One part is passed as is; two parts as two arguments, or returned as `{a, b}`. + +`makePlan()` walks the parameters counting the 6 integer and 8 SSE argument registers; a struct whose +parts don't fit any more goes to the stack (MEMORY) as a whole, like clang does. Small integer +parameters get `signext`/`zeroext`. `emitCCall()` stores each struct argument into a slot big enough for +both the struct and its register form, loads the parts at offsets 0 and 8, calls with the planned function +type and attributes, and rebuilds struct results the same way. + +`cThunk(fn)` is the reverse for `addr(fn)`: an internal function with the C signature that reassembles +struct parameters from registers or `byval` memory, calls the Finch function and lowers its result. Only +C-compatible signatures are accepted. + +`tests/run/c_structs.fch` exercises `{float,float}`, `{float,float,float}`, `{u8×4}`, `{double,int}`, +`{i64,i64}`, a 24-byte struct, a struct with a `char[8]`, nested structs, register exhaustion with 13 +struct arguments, and callbacks taking and returning structs, against a C library compiled with +`link "abi.c"`. The results match the same calls made from C. + +### 13.4 Linking C code + +`link "name"` tries `pkg-config --libs name`, then `-lname`. `link "file.c"` compiles the file (relative +to the `.fch` file) with `$CC -O2 -fPIC -c` into a temporary object; `.o` and `.a` files are passed +through. When linking fails, `linkFailed()` maps undefined symbols back to the header that declared them +and prints the `link` line to add. + +--- + +## 14. Optimization, emission, linking + +- **Target:** `sys::getDefaultTargetTriple()`, CPU `generic`, `Reloc::PIC_`. The data layout is set on the + module before any IR is built (alignment of loads/stores depends on it). +- **Optimization:** `PassBuilder::buildPerModuleDefaultPipeline(O2)`: clang's `-O2` middle end. `-O0` + skips it (`finch ir file.fch -O0` shows `Codegen`'s raw output). +- **Emission:** legacy `PassManager` + `addPassesToEmitFile(ObjectFile)`. +- **Linking:** `$CC prog.o rt.o [user objects] -lm [libs]`. On Nix the cc wrapper turns `-L` paths into + `RPATH`, so programs run without `LD_LIBRARY_PATH`. +- **`run`:** a temporary executable, run with the remaining command-line arguments, deleted afterwards; + a signal is reported as `the program crashed: ` with exit status `128 + n`. + +Performance notes: user functions are `internal`, so LLVM inlines and specializes them freely +(recursive `fib(40)`: ≈0.19 s vs. ≈0.23 s for `clang -O2` on the same C on the author's machine); +bounds-checked array code matches C on a sieve. + +--- + +## 15. Debug info + +With `-g`, `Codegen` creates a `DIBuilder`, a compile unit (`DW_LANG_C`, so gdb's C expression syntax +works for `print p.x`), a `DIFile` per source file, a `DISubprogram` per function, parameter variables +(`createParameterVariable`, so `bt` shows `length (v=…)`) and local variables (`insertDeclare` on their +allocas), and a `DILocation` per statement and call (`setLoc`). Types: basic types with Finch names +(`int`, `u8`, `float`), `str`/arrays as `{ptr, len, cap}` structs, pointers, fixed arrays, and structs with +member offsets from the LLVM `StructLayout`. Recursive structs use a replaceable forward declaration. +Generated helpers carry no locations. Use `-g -O0` for the best experience; with O2 some variables are optimized out. + +--- + +## 16. Diagnostics + +`failAt(file, line, col, msg)` prints `path:line:col: error: msg` and the source line with a caret +(tabs preserved, columns counted in characters), then exits with 1. Conventions: binary operators report +the operator, calls the callee, argument errors the argument. Messages say what is wrong and, when +there's an obvious fix, how to fix it. There are no warnings. An LLVM verifier failure prints +`internal compiler error (please report)` and exits with 2. + +--- + +## 17. The self-hosted compiler (`boot/`) + +`boot/` is a second Finch compiler written in Finch (≈3,100 lines): + +| File | Contents | +|---|---| +| `boot/lexer.fch` | the lexer (tokens are `{kind, text, line, col, nl}`; kinds are words, keywords and operators are their own kind) | +| `boot/ast.fch` | `Type` (`kind`, `elem` as a 0/1-element array, `name`, `module`), one generic `Node` for everything, `Program` | +| `boot/parser.fch` | the same grammar and newline rules as the C++ parser, precedence climbing for binary operators | +| `boot/gen.fch` | type checker + **textual LLVM IR** generator: scopes, places, coercions, copies, helpers, printing, runtime checks, array/str methods | +| `boot/main.fch` | loader for modules and the driver: writes `.ll`, runs `clang -O2 file.ll runtime/finch_rt.c` | + +It supports the core language: `int float bool char str`, `[]T`, structs (defaults, named/positional +constructors), `ptr[T]`/`addr`/`new`/`free`/`null`, all statements except `defer`, modules, and the +built-ins and methods the C++ compiler has, minus C imports, sized integers and `defer`. +It implements the same value semantics and borrow analysis (copies where the main compiler copies) but +**never frees**: as a bootstrap compiler it leaves memory to the operating system. + +The compiler state is one `Gen` struct passed as `ptr[Gen]`: Finch has no globals, and passing a +pointer is how a function changes its caller's value. Without `defer` or a map type, scopes are arrays of +arrays searched linearly; helper functions (copy/print/compare per type) are generated by temporarily +swapping the output buffers (`beginHelper`/`endHelper`). + +**The fixpoint.** `tests/boot.sh`: + +1. `build/finch` (C++) compiles `boot/` → **stage 1**, +2. stage 1 compiles `boot/` → **stage 2** (and its IR), +3. stage 2 compiles `boot/` → **stage 3** IR, + +and requires the stage 2 and stage 3 IR to be **byte-identical** (≈32,000 lines). It then compiles every +test in `tests/run` that stays within the subset with the self-hosted compiler and compares the output +with the expected one. It takes about 2.3 s for the self-hosted compiler to compile itself. + +--- + +## 18. Build system + +- `find_package(LLVM CONFIG)`; **if the shared `LLVM` target exists Finch links that single library.** + `libclang.so` links `libLLVM.so` itself; linking the static component libraries as well put two copies of + LLVM in one process, and the duplicated global objects crashed at exit (a double free in a global + destructor). It also made the binary 82 MB instead of ~20 MB. +- libclang: `find_path(clang-c/Index.h)` + `find_library(clang)`. +- `runtime/finch_rt.c` is read at configure time into `build/rt_source.inc` as a raw string literal; + `CMAKE_CONFIGURE_DEPENDS` re-runs the configure step when it changes. +- `FINCH_VERSION` from `project(VERSION 2.4.0)`. C++17, `-Wall -Wextra` (MSVC: `/W3`), warning-free. +- `shell.nix` lists `llvmPackages.clang` before `llvmPackages.libclang`: the latter also ships an + unwrapped `clang` that can't find the system headers. + +--- + +## 19. Testing + +- `tests/run.sh`: every `tests/run/*.fch` with `fn main` must print exactly its `.out` (stdin from `.in` + if present); files without `main` are modules or helpers. Every `tests/fail/*.fch` must fail with the text + from its `// expect:` line. Currently **74 passed, 0 failed**. +- `MEMCHECK=1 tests/run.sh`: the same, plus valgrind on every program (no leaks, no invalid access). +- `tests/boot.sh`: the self-hosting fixpoint and the subset run (§17). +- `tests/cross.sh windows|arm64`: every test built with `--target` and run under Wine / QEMU. +- `python3 tests/lsp_test.py`: the language server, driven like an editor. +- CI (`.github/workflows/ci.yml`) runs all of it on Linux x86-64, Linux ARM64, macOS ARM64 and Windows. + +--- + +## 20. Semantics vs. C | Situation | C | Finch 2.0 | |---|---|---| @@ -417,15 +882,242 @@ test (22 checks). --- +## 21. Function reference + +### Driver (`main.cpp`) + +| Function | Does | +|---|---| +| `Loader::load` / `findModule` | read, lex, parse a file and recursively its modules / locate `name.fch` | +| `hostMachine`, `optimize`, `emitObject` | target machine, O2 pipeline, object file | +| `runtimeObject` | compile and cache the runtime | +| `capture`, `libFlags`, `link` | run a command / pkg-config or `-l` / the link step, compiling `link "x.c"` files | +| `linkFailed`, `guessLib` | turn linker output into advice | + +### Lexer and parser + +| Function | Does | Differs from | +|---|---|---| +| `lex` / `tokName` | text → tokens / names for messages | | +| `accept` / `expect` / `unexpected` | consume if it matches / consume or fail / fail with context | | +| `sameLine` / `endOfStatement` | may this token continue the expression? / did the statement end? | | +| `atDeclaration` / `type` | lookahead for a declaration / parse a type | | +| `args` | `( [name:] expr, … )` for calls, methods and constructors | | +| `postfix` | `.field`, `.method(…)`, `[i]` chains | `primary` parses the start of a chain | + +### Codegen: program and statements (`codegen.cpp`) + +| Function | Does | Differs from | +|---|---|---| +| `declareStructs` / `declareFns` / `declare` | all types / all signatures / one signature + borrow analysis | | +| `define` / `defineMainWrapper` | one body / the C entry point | | +| `pushScope` / `popScope` | open / close a scope (`popScope` emits its cleanups if reachable) | | +| `emitCleanups(downTo)` / `emitScopeCleanups(i)` | cleanups of several scopes without popping (return/break) / of one scope | | +| `slot` / `tmpOf` / `tmp` | a variable's alloca / an anonymous one / an anonymous one holding a value | | +| `lookup` / `addVar` | find a visible variable (respects `deferLimit`) / declare one | | +| `stmt`, `varDecl`, `assign`, `ifStmt`, `whileStmt`, `forStmt`, `forEachStmt`, `returnStmt`, `jump` | statements | | +| `rootVar` / `mutates` / `mutatesExpr` | the variable an l-value starts from / does a statement or expression change it? | | + +### Codegen: expressions + +| Function | Does | Differs from | +|---|---|---| +| `expr` / `exprWant` | an r-value / the same, with an expected type for array literals | | +| `ref` / `place` | an address if any, else a value / an address or an error | `expr` loads from `ref` | +| `member` / `index` | `.x`, `.len`, `.ptr`, `.value`, auto-deref / `[i]` with bounds checks and copy-on-write | | +| `arrayLit` | `[…]` → heap array | | +| `unary`, `binary`, `arith`/`arithOp`, `compare`, `logic` | operators (`arith` adds the literal flag) | | +| `unify` / `coerce` / `convert` | two operands toward each other / one value into a slot / explicit `T(x)` | | + +### Codegen: types and ownership (`codegen_types.cpp`) + +| Function | Does | +|---|---| +| `ty`, `resolve`/`resolveT`, `findStruct`, `resolveStruct` | LLVM type; Named → Struct (deep or shallow); struct lookup; layout + cycle check | +| `owning`, `zero`, `defaultValue` | does a type own memory; zero constant; zero or the struct's defaults | +| `own` / `release` | something storable (move or copy) / drop an unkept fresh value | +| `copyValue`, `dropValue`, `copyAt`, `dropAt`, `copyFn`, `dropFn`, `typeKey` | copying and dropping by value, by address, and the per-type helpers | +| `forN` | an internal `for i in 0..n` loop used by helpers | +| `strConst`, `cstr`, `strFromC`, `elemSize` | literal str constant; str → `char*`; `char*` → borrowed str; element size | +| `emitPrint`, `printFn`, `printf_` | printing | +| `diType`, `setLoc` | debug info | + +### Codegen: calls (`codegen_builtins.cpp`) and ABI (`abi.cpp`) + +| Function | Does | +|---|---| +| `call` / `method` | resolve a call / a method or module-qualified call | +| `callFinch` / `construct` / `callC` | Finch function or method / struct constructor / C function | +| `structMethod` | `obj.m(...)`: the receiver's address, safety checks, the call | +| `print`, `addrOf`, `convert`, `arrayMethod` | built-ins | +| `fallible`, `tryExpr`, `orElse`, `retValue`, `retError` (`codegen.cpp`) | errors as values (§10.11) | +| `mapIndex`, `mapLit`, `mapMethod`, `mapSlot`, `forEachEntry` (`codegen_map.cpp`) | maps (§10.12) | +| `rt` / `libc` | declare a runtime / libc function | +| `fileName`, `panicIf`, `boundsCheck`, `checkDivisor` | runtime checks | +| `classify`, `makePlan`, `declareC`, `emitCCall`, `cThunk` | ABI classification (System V, Microsoft x64, AAPCS64), register plan, declaration, call, callback thunk | + --- -## 13. Known limitations +## 22. Extending the compiler -- The compiler runs on Linux x86-64 and ARM64 only (no seed for macOS or Windows yet). Programs can be built for all three. -- macOS output is only checked as IR; Windows and ARM64 are run under Wine and qemu in CI. -- One error per run, no recovery. -- `-g` debug info is best with `-O0`. -- The driver uses `sh` utilities (`rm`, `mkdir`), so it needs a POSIX shell. -- Generics are monomorphised (code size grows with instantiations); there are no trait bounds, a wrong use is an error - inside the instantiated body. +**A built-in function:** add the name to `isBuiltin()`, handle it in `call()`, implement it (in IR, or as +a runtime function declared in `rt()`'s table), add `tests/run/` and `tests/fail/` cases. If it should +exist in the self-hosted compiler too, add it to `boot/gen.fch`'s `call()` and `runtimeDecls()`. +**An array or str method:** add a branch in `arrayMethod()` or the str part of `method()`; if it changes +the array, add its name to the `changing` sets in `method()` and `mutatesExpr()`, so borrowing stays correct. + +**An operator:** lexer token + `tokName`, `BinOp`, the right precedence function in the parser, `opName`, +emission in `arithOp`/`compare`, an explanation in `badOperands`. + +**A statement:** `StmtKind` + node, `Parser::statement`, `Codegen::stmt`; if it transfers control, respect +`terminated()`, use `continueAt()` for merge blocks, and emit cleanups (`emitCleanups`) before jumping out of scopes. + +**A new owning type:** extend `owning()`, `dropAt`/`copyAt` (and their helpers), `emitPrint`, `diType`. + +--- + +## 23. Targets: Windows, macOS, ARM64 + +`src/target.h` holds `g_target`: the LLVM triple, `windows` / `msvc` / `darwin` / `cross` flags, the C +compiler (`cc`) and the executable suffix. `setTarget()` maps `windows`, `linux`, `arm64`, `macos` (or a full +triple) to a triple and picks the C compiler: `FINCH_CC`, else `CC` (not when cross-compiling), else +`x86_64-w64-mingw32-gcc` / `aarch64-linux-gnu-gcc` for Windows / ARM64 Linux from another system, +`clang --target=` for other cross targets, `clang` on Windows, `cc` on Unix. `initTargets()` +registers the X86 and AArch64 backends (whichever this LLVM has; CMake defines `FINCH_TARGET_X86` / +`FINCH_TARGET_AARCH64` and links their libraries). Everything platform-dependent goes through it: + +- **Headers:** libclang parses with `--target=` (so `long` is 32 bits on Windows and the right + headers are used) and, on Windows, `-D_USE_MATH_DEFINES`. Include folders come from ` -E -v`. +- **Processes:** `capture()` / `runCommand()` wrap `popen` / `system` (`_popen` on Windows) and decode exit + statuses (POSIX `WIFEXITED`/signals, or Windows exit codes and NTSTATUS crashes like `0xC0000005`). + `shellQuote()` quotes for `sh` (`'…'`) or `cmd.exe` (`"…"`); a command line handed to `cmd /c` that + starts with a quote gets one extra pair of quotes. +- **Linking:** no `-lm` with MSVC; `.exe` names; the runtime cache key includes the triple and the C compiler. + MSVC linker messages (`LNK2019 unresolved external symbol`, `LNK1104`/`LNK1181 cannot open file`) are + translated like GNU ld's. +- **Running:** `runPrefix()`: a Windows program built on Linux runs with `wine`, an ARM64 Linux one + elsewhere with `qemu-aarch64`. +- **macOS:** ` -E -v` lists `(framework directory)` entries; they become `-iframework` for libclang, + so `import "OpenGL/gl.h"` works. `link "Cocoa.framework"` becomes `-framework Cocoa`. Apple's linker + messages (`Undefined symbols for architecture arm64: "_f"`, `ld: library 'x' not found`, + `framework 'X' not found`) are translated like the others, without Mach-O's leading `_`. +- **Debug info:** CodeView for MSVC targets, DWARF elsewhere. +- **Runtime:** no `getline` or `sys/wait.h` on Windows; `stdin`/`stdout`/`stderr` are macros there, so + `finch_std_stream(i)` gives them to Finch when a header has no `extern` variable for them. +- **Printing pointers** is the same everywhere: `null` or `0x…`. + +### The Microsoft x64 calling convention + +`classify()` switches on `g_target.windows`. A struct of exactly 1, 2, 4 or 8 bytes travels as **one +integer** of that size, even if it holds floats (`{float, float}` → `i64`). Any other struct is +**Indirect**: the caller copies it to its own stack and passes the copy's address (no `byval`: the callee +receives a plain pointer). Results of 1/2/4/8 bytes come back in `rax` as an integer; anything else +through a hidden `sret` pointer. Each argument takes one slot, so there is no register counting. +`cThunk()` mirrors this for callbacks. + +`tests/cross.sh windows` builds every test with `--target windows`, runs it with Wine and compares the output: +all of them pass, including `c_structs` (which then exercises the Microsoft rules against a C library built +with MinGW). CI additionally builds `finch.exe` with MSVC on Windows Server and runs `tests/run.sh` there. + +### AAPCS64 (ARM64 Linux and Apple) + +`classify()` mirrors clang's AArch64 lowering: + +- A **homogeneous floating-point aggregate** (1–4 members, all `float` or all `double`, nested structs + and arrays flattened) goes in vector registers: passed as `[n x float]` / `[n x double]`, returned as + `{ float, … }`. On Linux the argument also gets `alignstack(8)`, as clang does; Apple doesn't. +- Any other struct of up to 16 bytes goes in general registers: `i64` (≤ 8 bytes) or `[2 x i64]` + (`i128` if its alignment is 16); it is returned as an integer of its exact size or `[2 x i64]`. +- Bigger structs are **Indirect**: a copy on the caller's stack, passed by address (no `byval`); returned + through `sret`. +- There is no register counting: the backend places each part. +- C's plain `char` is **unsigned** on ARM64 Linux and signed on Apple and x86, which matters for the + sign/zero extension of `char` arguments and results (`charIsSigned()`). +- Apple passes the variadic part of `printf(...)` on the stack; LLVM does that from the `...` in the + function type. + +`tests/cross.sh arm64` runs the whole suite (including the struct ABI test against a C library built by +GCC) under QEMU, and CI runs it natively on ARM64 Linux and Apple Silicon. + +### Building finch.exe + +CI uses Visual Studio 2022, Ninja and the official `clang+llvm-21.x-x86_64-pc-windows-msvc` package +(static libraries, `/MT`, so `CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded`). Two Windows details in +`CMakeLists.txt`: that package names the DIA SDK library at the path of the machine LLVM was built on, so +it is redirected to the installed Visual Studio; and the embedded runtime is written as several raw +string pieces, because MSVC limits one literal to 16 KB. LLVM is initialized with the native target only, +so the static build doesn't pull in every backend. + +--- + +## 24. The language server + +`finch lsp` (`src/lsp.cpp`) speaks LSP over stdin/stdout with `llvm::json`. On `didOpen`/`didChange` +it runs the real front end on the document: `Loader` (with the open documents' text as overrides), +`importHeaders` (cached per set of imports, since reading headers is the slow part), and `generate()` +without optimizing or emitting. Two switches make the compiler usable inside a server: + +- `g_throwErrors`: `failAt()` throws `FinchError{file, line, col, msg}` instead of printing and exiting. + The server publishes it as a diagnostic (for the right file, also inside an imported module) and clears + diagnostics that disappeared. +- `g_index`: while generating code, `Codegen::note()` records a `SymRef` for every name it resolves + (variables, parameters, fields, functions, constructors, C functions and constants, built-ins, methods, + module members): its span, a markdown hover, and the definition position. `define()` and + `declareStructs()` add `FnInfo` / `StructIndex`; `addVar()` adds `VarInfo` with the enclosing function's + line range. Positions of names come from `namePos` fields the parser records. + +Requests use that index: + +| Request | From | +|---|---| +| hover, definition | the `SymRef` under the cursor | +| completion | keywords, types, built-ins, variables of the enclosing function, functions, structs, imported modules, C names matching the typed prefix; after `name.`: struct fields (also through `ptr[T]`), array/str methods, or a module's members | +| signatureHelp | scans back to the unmatched `(`, counts top-level commas, looks up the Finch / C / built-in signature | +| documentSymbol | functions and structs (with fields) of the file | + +Half-typed code (`p.`, `add(1, `) doesn't compile, so the server keeps the **last successful** analysis of +each document and merges its functions, structs and variables in for completion and signature help. +`tests/lsp_test.py` drives the server like an editor and checks every feature. + +`src/builtins_doc.h` is the single description of built-ins and methods, used for hover, completion and +signature help (and mirrored by the cheat sheets). + +--- + +## 25. Editor integrations + +### Kate + +`editors/kate/finch.xml` is a KSyntaxHighlighting definition (the engine of Kate, KWrite and KDevelop): +keyword lists that match `builtins_doc.h`, a context for `fn Type.method`, strings with escapes, and +folding regions for `{ }` and block comments. `lspclient.json` is the entry for Kate's LSP +client (`highlightingModeRegex: ^Finch$`); `install.sh` copies the definition and merges the entry into +`~/.config/kate/lspclient/settings.json`. Kate sends more requests than VS Code (`documentHighlight`, +`foldingRange`, …); the server answers every request it doesn't implement with `MethodNotFound`, so no +client waits. + +### VS Code + +`editors/vscode` is a plain JavaScript extension: `extension.js` starts `finch lsp` through +`vscode-languageclient` (path from the `finch.path` setting) and adds **Run** / **Build** as +`ProcessExecution` tasks (no shell quoting, the `$finch` problem matcher turns `file:line:col: error:` +lines into Problems). `syntaxes/finch.tmLanguage.json` is the TextMate grammar, tested by `npm test` with +`vscode-textmate` + `vscode-oniguruma` (the engine VS Code itself uses); +`language-configuration.json` gives comments, brackets, auto-closing and indentation; `snippets/` the +templates. CI packages it with `vsce` into `finch-lang.vsix`. + +## 26. Known limitations + +- No generics, interfaces, `match`, closures or Finch-side enums. +- Strings are bytes: `.len`, `s[i]`, `upper()` are not Unicode-aware. +- Changing a map's keys inside a `for` over the same map is not detected (it is memory-safe, but entries + may be skipped or seen twice). +- A `try` / `or` failure in the middle of an expression doesn't release fresh temporaries computed + earlier in that expression (a small leak on the failure path only). +- Dangling pointers (`addr` of a local that went away, use after `free`) are not detected. +- Shift amounts and float→int conversions are not range-checked (LLVM poison, as in C). +- C: unions and bit-field structs by value, function-like macros, `long double`. +- Targets: x86-64 and ARM64 (Linux, macOS, Windows on x86-64). No Windows on ARM64, 32-bit, or WebAssembly. +- The self-hosted compiler has no C imports, sized integers, `defer`, maps, methods or errors as values, + and doesn't free memory. diff --git a/docs/en/for-technicians.md b/docs/en/for-technicians.md index bdc368c..78b7666 100644 --- a/docs/en/for-technicians.md +++ b/docs/en/for-technicians.md @@ -33,10 +33,7 @@ compiler works inside. For that, see the [guide for engineers](for-engineers.md) 20. [Debugging](#20-debugging) 21. [Troubleshooting](#21-troubleshooting) 22. [Project layout and tests](#22-project-layout-and-tests) -23. [Enums and match](#23-enums-and-match) -24. [Generics](#24-generics) -25. [The standard library](#25-the-standard-library) -26. [Current limits](#26-current-limits) +23. [Current limits](#23-current-limits) --- @@ -63,40 +60,78 @@ messages that tell you how to fix the problem. ## 2. Installing -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. +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 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. +### Windows -### Option A: a ready build (Linux) +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`. -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: +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). -| 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 | +### macOS -### Option B: build it yourself +```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) ```sh git clone https://github.com/Nexoniarz/Finch.git cd Finch -nix-shell # clang, libclang, pkg-config (or install them with your distribution) -bootstrap/build.sh # build/finch -./build/finch version +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) ``` -`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`. +### 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 +``` ### Building for another system @@ -122,13 +157,12 @@ On Nix the compilers are `pkgsCross.mingwW64.buildPackages.gcc` and ### Putting `finch` on your PATH (optional) ```sh -sudo bootstrap/install.sh # /usr/local/bin/finch, and /usr/local/share/finch/{runtime,std} -bootstrap/install.sh ~/.local # or into your own folder +sudo cp build/finch /usr/local/bin/ finch version ``` -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. +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. --- @@ -901,156 +935,37 @@ Visual Studio debugger and WinDbg read. ``` Finch/ -├── 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) +├── 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) ├── examples/ hello, tour, types, structs, todo, guess, c_import, window, opengl, vulkan, raylib, llvm ├── tests/ -│ ├── 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/ programs + the exact output they must print (.out), input (.in) +│ ├── fail/ programs that must fail, with the expected error in line 1 │ ├── run.sh the test runner (MEMCHECK=1 also checks memory with valgrind) -│ ├── 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 +│ └── boot.sh builds the self-hosted compiler with itself and compares ├── 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 +├── shell.nix the Nix development environment +└── CMakeLists.txt ``` ```sh -tests/run.sh # programs, refusals, -g builds, a shared library, the language server +tests/run.sh # → 74 passed, 0 failed 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 ``` -### Variants that hold values - -A variant can carry values. Make one with `Shape.Circle(2.0)`, take them out with `match`, which names them: - -```c -enum Shape { - Circle(float) - Rect(float, float) - Point -} - -fn Shape.area() -> float { - return match self { - Circle(r) -> 3.14 * r * r - Rect(w, h) -> w * h - Point -> 0.0 - } -} -``` - -`_` ignores a value. `match` must handle every variant (or end with `else`). Printing shows `Rect(2, 3.5)`. Such an enum is -copied and freed like a struct; it can't be compared with `==` (match on it). Variants of these enums can't have numbers. - --- -## 23. Enums and match - -An **enum** is a type with a short list of named values. - -``` -enum Color { Red, Green, Blue } -enum Status { Ok = 200, NotFound = 404 } // give a variant a number if it needs one - -c := Color.Green -print(c) // Green -print(int(Status.NotFound)) // 404 -print(Color(2)) // Blue: a number turned into the enum (checked: Color(7) is an error) -``` - -Variants are written `Color.Red`. They can be compared with `==` and `!=` (not with `<`), used as map keys, -struct fields and array elements, and an enum can have methods like a struct: `fn Color.next() -> Color { ... }`. - -**match** picks what to do from a value, instead of a ladder of `if`: - -``` -match c { - Red -> print("warm") // inside a match on an enum, the bare name is enough - Green, Blue -> print("cool") // several values for one arm -} - -size := match n { // as an expression: it gives a value - 1, 2, 3 -> "small" - 4, 5 -> "medium" - else -> "large" -} - -match word { - "quit" -> { - print("bye") - return - } - else -> print("what?") -} -``` - -`match` works on enums, whole numbers, chars, text and bools. The arms are tried in order. A match on an enum has to -handle **every variant** or end with `else` (the compiler says which are missing); any other match needs `else`. -In an expression, every arm gives the same type. - -## 24. Generics - -Write a function or a struct once for any type, with the type as a name in square brackets: - -``` -fn max[T](T a, T b) -> T { - if a > b { - return a - } - return b -} - -struct Stack[T] { - []T items -} - -fn Stack[T].push(T x) { - self.items.push(x) -} - -print(max(3, 9), max("apple", "pear")) // T is worked out from the arguments -print(max[float](1, 2.5)) // or written out, where it can't be worked out -s := Stack[int]() // a generic struct is always written with its type -s.push(7) -``` - -Several parameters work (`struct Pair[A, B]`), and so do nested types (`Stack[Pair[int, str]]`). Each use makes its -own copy of the code, so a generic is as fast as code written by hand. There are no constraints: if `T` can't do -what the function does (`a > b` on a struct), the error says so and tells which version it was building, like -`(while building bigger[Point])`. - -## 25. The standard library - -Modules that come with Finch, written in Finch. `import json` finds `json.fch` next to your file first, and the -library's second, so your own file of the same name wins. - -| Module | What it does | -|---|---| -| `path` | `join`, `base`, `dir`, `ext`, `stem`, `parts`, `clean`, `is_abs`: paths as text, separated by `/` | -| `time` | `now()`, `millis()` (a clock for measuring), `sleep(ms)`, `date(t)`, `local(t)`, `format(t, "%Y-%m-%d")`, `days_in_month` | -| `proc` | `run(cmd)` (the exit code), `output(cmd)` (what it printed; an error if it failed), `env(name, fallback)`, `pid()`, `cwd()` | -| `json` | `parse(text)`, `stringify(v)`, `pretty(v)`, and the value type `Json` with `get`, `at`, `set`, `push`, `has`, `str_or`, `int_or` ... | - -``` -import json -import path - -doc := try json.parse(read_file("config.json")) -name := doc.get("name").str_or("unnamed") // a missing key is null, so chains never fail -doc.set("name", json.new_text(name + "!")) -write_file(path.join("out", "config.json"), json.pretty(doc)) -``` - -## 26. Current limits +## 23. Current limits Not there yet: -- Interfaces. +- Generics (your own `List[T]`), interfaces, `match`, enums written in Finch. - Unicode-aware text: `.len`, `s[i]` and `upper()` work on bytes / ASCII. - Threads. - Windows on ARM64, 32-bit systems, WebAssembly. diff --git a/docs/pl/dla-inzynierow.md b/docs/pl/dla-inzynierow.md index 6378e6d..0c17234 100644 --- a/docs/pl/dla-inzynierow.md +++ b/docs/pl/dla-inzynierow.md @@ -1,12 +1,14 @@ # Finch dla inżynierów -**Wnętrze Fincha 2.4, którego kompilator jest napisany w Finchu.** Jak kod źródłowy staje się tokenami, drzewem AST i -LLVM IR *jako tekstem*, który `clang` kompiluje i linkuje z małym runtime'em w C; jak nagłówki C czyta libclang wywoływany -z samego Fincha i jak ręcznie odtwarzane są konwencje wywołań C; reguły typów i własności; jak kompilator buduje sam siebie -z ziarna; oraz serwer języka. +**Kompletny opis wnętrza Fincha 2.0.** Jak kod źródłowy staje się tokenami, tokeny drzewem AST, +a AST kodem LLVM IR, który potem jest optymalizowany, zapisywany i linkowany z małym runtime'em w C. +Dokładne reguły typów; model własności i to, jak tłumaczy się na kopie i zwolnienia; jak każda +konstrukcja staje się IR (z prawdziwym wyjściem kompilatora); obsługa nagłówków C, struktur C i ABI +System V; moduły, informacje dla debuggera i kompilator samohostujący z `boot/`. Każda funkcja +kompilatora jest opisana razem z tym, czym różni się od sąsiednich. -Zakładam, że czytasz Fincha (zobacz [przewodnik dla techników](dla-technikow.md)) i widziałeś już LLVM IR. -Pierwsza wersja kompilatora, w C++ na API C++ LLVM, jest w gałęzi `before-bootstrap`; ten przewodnik opisuje wersję w Finchu. +Zakładam, że znasz C/C++ i widziałeś już LLVM IR. +Język z perspektywy użytkownika opisuje [przewodnik dla techników](dla-technikow.md). > 🇬🇧 English version: [for-engineers.md](../en/for-engineers.md) @@ -15,143 +17,297 @@ Pierwsza wersja kompilatora, w C++ na API C++ LLVM, jest w gałęzi `before-boot ## Spis treści 1. [Architektura](#1-architektura) -2. [Drzewo źródeł](#2-drzewo-źródeł) -3. [Front end: lekser, parser, moduły](#3-front-end-lekser-parser-moduły) -4. [Generowanie kodu](#4-generowanie-kodu) -5. [Import C i ABI C](#5-import-c-i-abi-c) -6. [Sterownik, linkowanie i cele](#6-sterownik-linkowanie-i-cele) -7. [System typów](#7-system-typów) -8. [Własność i pamięć](#8-własność-i-pamięć) -9. [Generyki, enumy i match](#9-generyki-enumy-i-match) -10. [Bootstrap](#10-bootstrap) -11. [Serwer języka](#11-serwer-języka) -12. [Semantyka a C](#12-semantyka-a-c) -13. [Znane ograniczenia](#13-znane-ograniczenia) +2. [Pliki źródłowe](#2-pliki-źródłowe) +3. [Lekser](#3-lekser) +4. [Gramatyka i parser](#4-gramatyka-i-parser) +5. [AST](#5-ast) +6. [Wczytywanie: pliki i moduły](#6-wczytywanie-pliki-i-moduły) +7. [Model semantyczny](#7-model-semantyczny) +8. [System typów](#8-system-typów) +9. [Własność i pamięć](#9-własność-i-pamięć) +10. [Generowanie kodu](#10-generowanie-kodu) +11. [Kontrole w czasie działania](#11-kontrole-w-czasie-działania) +12. [Runtime w C](#12-runtime-w-c) +13. [Współpraca z C: nagłówki, struktury, ABI](#13-współpraca-z-c-nagłówki-struktury-abi) +14. [Optymalizacja, emisja, linkowanie](#14-optymalizacja-emisja-linkowanie) +15. [Informacje dla debuggera](#15-informacje-dla-debuggera) +16. [Diagnostyka](#16-diagnostyka) +17. [Kompilator samohostujący (boot/)](#17-kompilator-samohostujący-boot) +18. [System budowania](#18-system-budowania) +19. [Testy](#19-testy) +20. [Semantyka a C](#20-semantyka-a-c) +21. [Spis funkcji](#21-spis-funkcji) +22. [Rozbudowa kompilatora](#22-rozbudowa-kompilatora) +23. [Platformy: Windows, macOS, ARM64](#23-platformy-windows-macos-arm64) +24. [Serwer języka](#24-serwer-języka) +25. [Integracje z edytorami](#25-integracje-z-edytorami) +26. [Znane ograniczenia](#26-znane-ograniczenia) --- ## 1. Architektura -W kompilatorze nie ma biblioteki LLVM. Pisze LLVM IR jako **tekst**, a optymalizację, generowanie kodu i linkowanie zostawia -`clangowi`. Dzięki temu jest mały (ok. 8 tys. linii) i może być napisany w samym Finchu. +Finch to jednoprzebiegowy front-end przed LLVM: sprawdzanie typów i generowanie IR to jedno przejście +po AST, bez własnej reprezentacji pośredniej. ``` - main.fch ─► loader ── lex ── parse ──► Program (+ każdy importowany moduł, rekurencyjnie) - │ - `import "x.h"` ─► cimport.fch (libclang wołany z Fincha) ─► funkcje, struktury, stałe C - │ - ▼ - gen.fch ─► generate(): struktury, sygnatury, ciała funkcji - kontrola typów i IR w jednym przejściu; klasyfikacja ABI wywołań C - │ (tekst IR) - ▼ - linker.fch ─► clang -c prog.ll ─► clang prog.o rt-.o [twoje .c/.o/.a] -lm [pkg-config / -l] - │ - ▼ - plik wykonywalny (finch run: uruchamiany z pliku tymczasowego, potem usuwany) + main.fch ──► Loader::load() ── lex() ── parse() ──► Program (+ każdy importowany moduł, rekurencyjnie) + │ + wszystkie `import "x.h"` ──► importHeaders() (libclang) ──► CImports + │ + hostMachine() ──► TargetMachine (triple + data layout)│ + ▼ + generate(progs, cimports, tm, debug) ──► Codegen::run() + declareStructs() wszystkie struktury Fincha i C, ciała typów LLVM, kontrola cykli + declareFns() sygnatura każdej funkcji (+ analiza „pożyczania” parametrów) + define() każde ciało: typy + IRBuilder, zasięgi, zwalnianie, kontrole + defineMainWrapper C-owe `main(argc, argv)` + DIBuilder::finalize (z -g) ; verifyModule + ▼ + optimize() PassBuilder default (pomijane przy -O0) + emitObject() legacy PM + addPassesToEmitFile ──► prog.o + link() cc prog.o ~/.cache/finch/rt-.o [twoje .c/.o/.a] -lm [pkg-config/-l…] + ▼ + plik wykonywalny (finch run: uruchamiany z pliku tymczasowego z resztą argumentów, potem usuwany) ``` -Decyzje projektowe: +Decyzje, które kształtują resztę: -- **Szybko się przerywa.** Pierwszy błąd wypisuje `plik:linia:kol: error: …` z linią źródła i strzałką, i kompilator kończy. - Bez odzyskiwania po błędach, więc kolejne fazy nie widzą półpoprawnych danych. -- **Jedno przejście.** `gen.fch` sprawdza typy i emituje IR jednym przejściem po AST. Wyrażenie daje operand IR, typ Fincha - (napis: `int`, `f32`, `str`, `array`, `map`, `struct`, `enum`, `named`…) i flagi. -- **Niech clang pracuje.** Zmienne lokalne to `alloca`, zamieniane przez `mem2reg`. Optymalizacja to `-O2` clanga (albo `-O0` z `-g`). -- **Wartości, nie referencje.** Tablice, teksty i struktury mają semantykę wartości; własność ustala się w czasie kompilacji (§8). -- **Malutki runtime w C** (`runtime/finch_rt.c`, ok. 760 linii) robi to, co w IR jest uciążliwe: teksty, rośnięcie tablic, mapy, - wejście, pliki, paniki. Kompilowany raz i trzymany w `~/.cache/finch`. +- **Szybka porażka.** Pierwszy błąd wypisuje diagnostykę i kończy proces (`failAt()` w `src/error.h`). + Bez odtwarzania po błędach, więc dalsze fazy nigdy nie widzą częściowo poprawnego wejścia. +- **Jedno przejście.** `Codegen` niesie zasięgi, pętle, bieżącą funkcję i moduł. Każde wyrażenie zwraca + wartość IR, typ Fincha i dwie flagi (`Value_`, §8). +- **Niech LLVM robi robotę.** Zmienne lokalne to `alloca`, które `mem2reg`/SROA zamieniają na rejestry. + Węzły φ Finch buduje ręcznie tylko dla `&&`/`||`. +- **Wartości, nie referencje.** Tablice, teksty i struktury mają semantykę wartości: przypisanie kopiuje, + koniec bloku zwalnia. Własność rozstrzyga się w czasie kompilacji, bez liczenia referencji (§9). +- **Malutki runtime w C** (`runtime/finch_rt.c`, ok. 430 linii) robi to, co w IR byłoby żmudne: operacje na + tekstach, wzrost tablic, wejście, pliki, panic. Jest wbudowany w kompilator i trzymany w cache. --- -## 2. Drzewo źródeł +## 2. Pliki źródłowe -| Plik | Linie | Zadanie | +| Plik | Linie | Odpowiedzialność | |---|---|---| -| `src/lexer.fch` | 220 | Tokeny i pozycje | -| `src/ast.fch` | 120 | Jedna struktura `Node` z napisem `kind`, dziećmi, nazwami typów, pozycjami (`line`, `endLine`) | -| `src/parser.fch` | 780 | Zejście rekurencyjne: deklaracje, instrukcje, wyrażenia, generyki (`[T]`), `enum`, `match`, `export`, `link` | -| `src/gen.fch` | 5200 | Kontrola typów + IR: struktury, funkcje, metody, zakresy i zwolnienia, instrukcje, wyrażenia, wbudowane, mapy, błędy jako wartości, generyki (monomorfizacja), enumy i `match`, metadane `-g`, tryb `index` | -| `src/cimport.fch` | 560 | libclang: funkcje, struktury (pola, offsety, wypełnienie), enumy, stałe, globalne, makra | -| `src/platform.fch` | 90 | `Target`: triple, układ danych, kompilator C, znak `char` zależnie od systemu | -| `src/linker.fch` | 300 | Pamięć podręczna, obiekt runtime'u, biblioteki (`link`, pkg-config), podpowiedzi przy błędach linkera | -| `src/main.fch` | 310 | Sterownik: CLI, loader z wyszukiwaniem modułów i nakładkami, `build/run/ir/index/lsp` | -| `src/lsp.fch` | 875 | Serwer języka (§11) | -| `src/docs.fch` | 110 | Jeden opis wbudowanych funkcji dla podpowiedzi i uzupełniania | -| `std/*.fch` | 900 | `json`, `path`, `time` (+`_windows`), `proc` (+`_windows`) | -| `runtime/finch_rt.c` | 760 | Runtime w C | -| `bootstrap/` | | `build.sh`, `install.sh`, ziarna (§10) | +| `src/error.h` | 50 | `g_files` (wszystkie źródła), `failAt(file, line, col, msg)`, `fail(line, col, msg)`, `FinchError` | +| `src/lexer.h/.cpp` | 250 | `Tok`, `Token`, `lex(indeksPliku)`, `tokName()` | +| `src/ast.h` | 360 | `Type` (z Array, Map, Fixed, Struct, Named), wszystkie węzły `Expr`/`Stmt`, `FnDecl`, `StructDecl`, `Import`, `Link`, `Program` | +| `src/parser.h/.cpp` | 610 | Parser zstępujący `Parser`, `typeFromName()` | +| `src/loader.h/.cpp` | 90 | Wczytywanie plików i modułów (`Loader`), `FINCH_PATH` | +| `src/target.h/.cpp` | 210 | `g_target`: triple, kompilator C, procesy, ścieżki; inicjalizacja backendów | +| `src/cimport.h/.cpp` | 430 | Import przez libclang: funkcje, struktury C (pola, przesunięcia), stałe, zmienne globalne | +| `src/codegen.h` | 15 | `generate()` | +| `src/codegen_impl.h` | 310 | Klasa `Codegen` i jej struktury pomocnicze, wspólne dla plików poniżej | +| `src/codegen.cpp` | 1460 | Program, deklaracje (funkcje, metody), zasięgi i sprzątanie, instrukcje, wyrażenia, miejsca (`ref`), operatory, błędy jako wartości, analiza modyfikacji | +| `src/codegen_types.cpp` | 580 | Typy LLVM, rozwiązywanie typów, układ struktur, konwersje, własność (helpery kopiowania/zwalniania), zamiana na tekst, typy dla debuggera | +| `src/codegen_builtins.cpp` | 890 | Wywołania, metody, konstruktory, funkcje wbudowane, konwersje, metody tablic i tekstów, deklaracje runtime'u, panic | +| `src/codegen_map.cpp` | 240 | Mapy: indeksowanie, literały, metody, przechodzenie | +| `src/abi.cpp` | 370 | Konwencje wywołań C (System V x86-64, Microsoft x64, AAPCS64), wywołania C ze strukturami przez wartość, wrappery wywoływalne z C | +| `src/lsp.cpp`, `src/index.h`, `src/builtins_doc.h` | 700 | Serwer języka (§24) | +| `src/main.cpp` | 350 | Sterownik: CLI, maszyna docelowa, O2, emisja, cache runtime'u, linkowanie, porady przy błędach linkera, `run` | +| `runtime/finch_rt.c` | 740 | Biblioteka uruchomieniowa (§12) | +| `boot/*.fch` | 3100 | Kompilator samohostujący (§17) | --- -## 3. Front end: lekser, parser, moduły +## 3. Lekser -**Lekser.** Koniec linii kończy instrukcję; wcięcia nic nie znaczą. Tokeny niosą plik, linię i kolumnę, z których korzysta każdy błąd. +`lex(file)` przechodzi raz przez `g_files[file].text` i zwraca `std::vector` zakończony `Tok::End`. -**Parser.** Zejście rekurencyjne, jedna funkcja na konstrukcję. Typy są parsowane do napisu (`[]str`, `map[str]int`, -`ptr[char]`, `Stack[int]`); `fn Typ.metoda` deklaruje metodę; `fn nazwa[T]` i `struct Nazwa[T]` to szablony; `enum` i `match` -mają własne węzły; `export fn` oznacza funkcję widoczną dla C; blok zapamiętuje `endLine` (dla serwera języka). Stara -kolejność `fn nazwa(...) typ` to błąd składni z podpowiedzią. +```cpp +struct Token { Tok kind; std::string text; int line, col; bool newlineBefore; }; +``` -**Moduły.** `import nazwa` szuka kolejno `nazwa_.fch` obok importującego pliku (`windows`, `linux`, `macos`), `nazwa.fch`, -katalogów z `FINCH_PATH`, potem biblioteki standardowej `std/`. Każdy moduł jest parsowany raz; jego nazwy są używane jako -`modul.nazwa`. `import "x.h"` trafia do importera C. +- **Nowe linie nie są tokenami.** Każdy token zapamiętuje `newlineBefore`, a o znaczeniu decyduje + parser (§4). Dzięki temu obsługa nowych linii nie zaśmieca każdej reguły listowej w gramatyce. +- **Pozycje:** od 1; `col` liczy znaki (bajty kontynuacji UTF-8 jej nie zwiększają), więc `^` trafia + pod `"Błąd"`. Zabłąkany znak spoza ASCII jest pokazywany w całości z podpowiedzią, że nazwy są tylko ASCII. +- **Identyfikatory / słowa kluczowe:** `[A-Za-z_][A-Za-z0-9_]*`. Słowa kluczowe: + `fn return if else while for in break continue true false null import link struct defer or try`. + (`self` i `map` to zwykłe identyfikatory ze znaczeniem zależnym od miejsca: w metodzie, przed `[`.) + **Nazwy typów nie są słowami kluczowymi**: `int`, `u8`, `ptr`… to `Ident`, rozpoznawane przez parser + za pomocą `typeFromName()`, więc `u8(x)` jest zwykłym wywołaniem, a lekser nie zależy od listy typów. +- **Liczby:** dziesiętne albo `0x` szesnastkowe z separatorami `_`. Bez ósemkowych (`010` to 10). + `.` należy do liczby tylko wtedy, gdy po niej jest cyfra, więc `0..10` to `Int DotDot Int`. +- **Teksty / znaki:** sekwencje `\n \t \r \0 \\ \" \'`. Bez nowej linii w literale. +- **Operatory:** najdłuższe dopasowanie (`->` przed `-`, `<<`/`<=` przed `<`, `&&` przed `&`, `..` przed `.`, + `:=` przed `:`). Samotny `:` to token (argumenty nazwane). +- **Komentarze:** `//` i niezagnieżdżane `/* */`. --- -## 4. Generowanie kodu +## 4. Gramatyka i parser -`gen.fch` to jedna duża struktura `Gen` i funkcje na niej. Przejścia: +`Parser` (`src/parser.cpp`) to ręcznie pisany parser zstępujący z jednym tokenem wyprzedzenia, a w +`atDeclaration()` z maksymalnie trzema. -1. `declareStructs`: każda struktura Fincha i C dostaje typ LLVM (struktury C z prawdziwym wypełnieniem); rekurencja przez wartość jest odrzucana. -2. `declareFns`: sygnatury, z *analizą pożyczania* parametrów (parametr, który nigdzie nie jest zapisywany, jest przekazywany bez kopii). -3. `define`: każde ciało, sprawdzone i wyemitowane. Zakresy pamiętają, co zwolnić na końcu (`defer` działa pierwszy). -4. `defineMainWrapper`: C-owe `main(argc, argv)` i `finch_on_fatal` dla osadzających. -5. Z `-g` metadane DWARF dokładane są w trakcie pisania IR (używaj `-O0`). +```ebnf +program = { import | link | struct | function } ; +import = "import" ( STRING | IDENT ) ; (* "x.h" = nagłówek C, nazwa = moduł Fincha *) +link = "link" STRING ; (* "glfw" | "plik.c" | "plik.o" | "lib.a" *) +struct = "struct" IDENT "{" { type IDENT [ "=" expr ] NOWA_LINIA } "}" ; +function = "fn" IDENT [ "." IDENT ] "(" [ param { "," param } ] ")" [ "->" ( type [ "!" ] | "!" ) ] block ; + (* fn Punkt.przesun: metoda; "!": może się nie udać *) +param = type IDENT ; +type = "[" "]" type | "map" "[" type "]" type | "ptr" [ "[" type "]" ] + | TYPENAME | IDENT [ "." IDENT ] ; -Generyki są **monomorfizowane**: wywołanie `max(1, 2)` wnioskuje `T`, potem AST szablonu generowane jest ponownie z -przypisanym `T`, pod zmangowaną nazwą (`max$int`). `match` na enumie jest wyczerpujący (brak wariantu to błąd, `else` łapie -resztę); na wartości to ciąg porównań. Wartości enuma to `i32`; `Color(n)` jest sprawdzane; wypisywanie używa wygenerowanej tabeli nazw. +block = "{" { statement TERMINATOR } "}" ; +statement = if | while | for | return | "break" | "continue" | "defer" statement | block + | type IDENT [ "=" expr ] (* deklaracja, zobacz atDeclaration *) + | IDENT ":=" expr + | target assignop expr (* cel: zmienna, pole, element, p.value *) + | call | method | try | orelse ; +for = "for" IDENT [ "," IDENT ] "in" expr ( ".." expr block | block ) ; (* zakres | po elementach *) +assignop = "=" | "+=" | "-=" | "*=" | "/=" | "%=" ; -Błędy jako wartości: `-> T!` zwraca parę (wartość, tekst błędu); `try` wraca wcześniej przy błędzie, `or` go obsługuje, `error("…")` go tworzy. +expr = or [ "or" ( block | expr ) ] ; (* f(x) or 0, f(x) or { ... }: najniższy, od prawej *) +or = and { "||" and } ; and = cmp { "&&" cmp } ; +cmp = add { ( "==" | "!=" | "<" | "<=" | ">" | ">=" ) add } ; +add = mul { ( "+" | "-" | "|" | "^" ) mul } ; +mul = unary { ( "*" | "/" | "%" | "<<" | ">>" | "&" ) unary } ; +unary = ( "-" | "!" | "~" ) unary | "try" postfix | postfix ; +postfix = primary { "." IDENT [ args ] | "[" expr "]" } ; +primary = INT | FLOAT | STRING | CHAR | "true" | "false" | "null" + | IDENT [ args ] | "(" expr ")" | "[" [ expr { "," expr } [","] ] "]" + | "[" ":" "]" | "[" expr ":" expr { "," expr ":" expr } [","] "]" ; (* mapy *) +args = "(" [ arg { "," arg } [","] ] ")" ; arg = [ IDENT ":" ] expr ; +``` + +**Koniec instrukcji.** Po instrukcji `endOfStatement()` wymaga `}`, końca pliku albo tokenu +z `newlineBefore`. Wewnątrz wyrażeń `sameLine()` (`parenDepth > 0 || !newlineBefore`) decyduje, czy +operator, `.`, `[` albo `(` wywołania kontynuuje wyrażenie. `parenDepth` rośnie w `( )` i `[ ]`, +a przy wejściu do `{ }` jest zapamiętywany i zerowany. + +**Priorytety są jak w Go**, nie jak w C: `&` wiąże jak `*`, a `|`/`^` jak `+`, wszystkie powyżej porównań, +więc `x & MASKA == 0` znaczy `(x & MASKA) == 0`. + +**Rozpoznawanie instrukcji.** `atDeclaration()` zwraca prawdę dla `[` `]` (typ tablicowy), `TYP IDENT`, +`ptr [` i `IDENT . IDENT IDENT` (typ z modułu). W pozostałych przypadkach parser **parsuje całe +wyrażenie, a potem patrzy na następny token**: operator przypisania robi z niego cel (musi być `Var`, +`Member` albo `Index`), a inaczej musi to być wywołanie funkcji lub metody, w przeciwnym razie +`this value is computed but never used`. + +**Literały struktur to wywołania**: `Punkt(1, 2)` albo `Punkt(x: 1, y: 2)`. Literały w klamrach +(`Punkt{…}`) byłyby niejednoznaczne z blokami (`if gotowe {`); wywołanie nie potrzebuje specjalnej +gramatyki, a argumenty nazwane (`IDENT ":"` w `args()`) są akceptowane tylko przez konstruktory na etapie generowania kodu. --- -## 5. Import C i ABI C +## 5. AST -`cimport.fch` woła **libclang** wprost z Fincha (sam jest napisany z `import "clang-c/Index.h"`), parsuje nagłówek z flagami -celu i przechodzi po kursorach. Typy: parametr `const char *` → `str`, inny `char *` → `ptr[char]`, wynik `char *` → `str`; -liczby całkowite według rozmiaru i znaku (`char` jest bez znaku na ARM64 Linux); struktury i enumy według układu. +Wszystkie węzły są w `src/ast.h`: małe hierarchie klas z jawnym `kind`, rozgałęziane przez +`switch` + `static_cast`. -LLVM IR nie realizuje za ciebie konwencji wywołań C, więc `gen.fch` ją odtwarza: +| ExprKind | Węzeł | Pola | +|---|---|---| +| `Int` `Float` `Bool` `Char` `Str` | literały | `value` | +| `Null` | `NullExpr` | | +| `Var` | `VarExpr` | `name` | +| `Unary` | `UnaryExpr` | `op` (`- ! ~`), `operand` | +| `Binary` | `BinaryExpr` | `BinOp op`, `lhs`, `rhs` | +| `Call` | `CallExpr` | `callee` (nazwa), `args`, `argNames` | +| `Member` | `MemberExpr` | `obj`, `field` (`.x`, `.len`, `.ptr`, `.value`) | +| `Index` | `IndexExpr` | `obj`, `index` | +| `ArrayLit` | `ArrayLitExpr` | `elems` | +| `Method` | `MethodExpr` | `obj`, `name`, `args`, `argNames`; także `modul.fn(...)` i `p.metoda(...)` | +| `MapLit` | `MapLitExpr` | `keys`, `values` (`[:]` nie ma żadnych) | +| `Try` | `TryExpr` | `call` | +| `OrElse` | `OrElseExpr` | `call` oraz `fallback` (wyrażenie) albo `block` | -- `classify`: System V x86-64: struktura do 16 bajtów idzie w rejestrach według klas ośmiobajtów (INTEGER/SSE), większa w pamięci; -- `classifyArm64`: AAPCS64, z jednorodnymi agregatami zmiennoprzecinkowymi (HFA); -- reguły Microsoft x64 (struktury 1, 2, 4, 8 bajtów w rejestrze, reszta przez wskaźnik); -- `makePlan` zamienia klasyfikację w plan wywołania; `cThunk` robi z `addr(fn)` coś, co C może wywołać (callbacki). +| StmtKind | Węzeł | +|---|---| +| `Block` `VarDecl` `Assign` `Expr` `If` `While` `For` `ForEach` `Return` `Break` `Continue` `Defer` | jak w nazwie; `ForEachStmt` ma `var`, `var2` (`for i, x` / `for k, v`), `list`, `body`; `DeferStmt` trzyma jedną instrukcję | -Ten sam kod pozwala kompilatorowi wołać libclang, którego API przekazuje `CXCursor`, `CXType` i `CXString` przez wartość. +`FnDecl` ma `recv` (struktura metody, w innych przypadkach `""`) i `fallible` (`-> T!`). + +`math.sqrt(x)` parsuje się jako `MethodExpr` na `VarExpr("math")`; to, czy `math` jest modułem, czy zmienną, +rozstrzyga się przy generowaniu kodu. Wywołania nazywają funkcję, zamiast trzymać wyrażenie: Finch nie ma +funkcji jako wartości, a późne rozwiązywanie nazwy pozwala, by jeden `CallExpr` był funkcją wbudowaną, +konwersją (`u8(x)`), konstruktorem struktury, funkcją Fincha albo funkcją C. + +Nie ma węzła „load”: to, czy `x` znaczy adres, czy wartość, zależy od kontekstu (`ref()` kontra `expr()`, §10.2). + +### `Type` + +```cpp +struct Type { + enum Kind { Void, Bool, Char, I8, I16, I32, I64, U8, U16, U32, U64, F32, F64, + Str, Ptr, Null, Array, Map, Fixed, Struct, Named }; + Kind kind; + std::shared_ptr elem; // Ptr (null = `ptr` bez typu), Array, Fixed; Map: wartość + std::shared_ptr key; // Map + long long count; // Fixed + std::string name, module; // Named (jak napisano) / Struct (rozwiązany) + StructInfo *info; // Struct +}; +``` + +Parser tworzy `Named` dla nazw struktur; `Codegen::resolve()` zamienia je na `Struct` ze wskaźnikiem +`info`. `Fixed` (`[N]T`) pochodzi tylko z pól struktur C. `int` to `I64`, a `float` to `F64`. +Równość jest strukturalna; dwa `Struct` są równe, gdy mają to samo `info`. --- -## 6. Sterownik, linkowanie i cele +## 6. Wczytywanie: pliki i moduły -`finch build|run|ir|index plik.fch [-o wyjście] [-O0] [-g] [-l biblioteka] [-I katalog] [--target cel] [--shared] [--overlay ścieżka=plik]`. -`ir` wypisuje IR; `index` wypisuje rekordy dla serwera języka (§11); `--shared` robi bibliotekę współdzieloną z `export fn`. +`Loader::load(path, module, from)` w `main.cpp` czyta plik, dopisuje go do `g_files` (pozycje niosą +indeks pliku w `Pos::file`), leksuje go i parsuje, a potem wczytuje każdy jeszcze niewidziany `import nazwa`: +`nazwa.fch` obok importującego pliku albo w folderze z `FINCH_PATH`. Wynik to `std::vector`, +z głównym plikiem na początku. Cykle nie przeszkadzają: moduł jest oznaczany jako wczytany, zanim +zaczniemy podążać za jego importami. -`--target windows|linux|arm64|macos|` zmienia triple i układ danych, znak `char`, reguły ABI powyżej, wariant OS -modułów (`nazwa_windows.fch`) i kompilator C: `FINCH_CC` albo `clang --target=…`. Przy linkowaniu `pkg-config` podaje flagi -dla `link "biblioteka"`; gdy linker zawiedzie, wynik jest analizowany i podpowiadane jest brakujące `link "…"`. Obiekt -runtime'u jest kluczowany skrótem jego źródła i celu. - -Zmienne środowiskowe: `FINCH_PATH` (katalogi modułów), `FINCH_RT` (źródło runtime'u), `FINCH_CC` (kompilator/linker C; IR -zawsze kompiluje `clang`, nigdy `CC`), `FINCH_LIBCLANG` (dla `bootstrap/build.sh`). - -Kompilator znajduje `runtime/` i `std/` obok siebie (`../`, `./`) albo w `../share/finch/` (`bootstrap/install.sh`). +Wszystkie pliki trafiają do **jednego modułu LLVM**. Każdy moduł Fincha ma `ModuleScope` (funkcje, +struktury, zbiór modułów, które importuje). Nazwy szuka się w bieżącym module; nazwy innego modułu +są dostępne tylko z kwalifikatorem (`geometry.length`, `geometry.Vec`) i tylko tam, gdzie moduł +zaimportowano. Funkcje są emitowane jako `finch..` (`finch.` w głównym pliku), +typy struktur jako `finch..`. --- -## 7. System typów +## 7. Model semantyczny + +### Kolejność deklaracji + +`Codegen::run()` najpierw deklaruje **wszystkie struktury** wszystkich modułów i zaimportowane struktury C, +rozwiązuje typy pól i ustawia ciała typów LLVM (`declareStructs` → `resolveStruct`), potem deklaruje +**wszystkie sygnatury funkcji** (`declare`), a dopiero potem definiuje ciała. Kolejność w pliku i między +modułami nigdy więc nie ma znaczenia, a rekurencja (także wzajemna i między modułami) działa. + +`resolveStruct` wykrywa cykle przez wartość trójstanową flagą (`struct A { A inner }` to błąd z radą, +by użyć `ptr[A]` albo `[]A`). Wskaźniki i tablice struktury nie potrzebują jej układu, więc +`struct Wezel { []Wezel dzieci; ptr[Wezel] rodzic }` jest w porządku: rozwiązują nazwę „płytko” +(`resolveT(…, deep=false)`). + +### Zasięgi i zmienne + +```cpp +struct Var { Value *slot; FType type; bool readonly; std::string readonlyWhy; + bool owned; int order; bool moved; }; +struct Cleanup { bool isDefer; std::string var; const Stmt *body; int order; }; +struct Scope { unordered_map vars; vector cleanups; }; +``` + +Zasięg jest otwierany dla parametrów funkcji, każdego `{ }`, każdego `for` (trzyma `i`), każdego `for … in` +(ukryta tymczasowa lista) i każdej jego iteracji (trzyma `x`). + +- **Bez przesłaniania:** `addVar()` odrzuca nazwę znalezioną w *dowolnym* zewnętrznym zasięgu, + funkcję modułu, nazwę zaimportowanego modułu i funkcję wbudowaną. +- **Tylko do odczytu:** zmienne pętli zakresowej i pętli po elementach (`readonlyWhy` daje konkretny komunikat). +- `order` numeruje deklaracje; `defer` używa go, by ukryć zmienne zadeklarowane po nim (§9.5). + +### Rozwiązywanie nazw + +`x` w pozycji wartości: zmienna lokalna → stała C → zmienna globalna C → (nazwa modułu: błąd z podpowiedzią) → błąd. +Wywołanie `n(...)`: funkcje wbudowane (`print addr input new free exit shell read_file write_file file_exists`) → +nazwy typów (konwersja) → funkcja bieżącego modułu → struktura bieżącego modułu / struktura C +(konstruktor) → funkcja C → błąd (z podpowiedzią, jeśli funkcja istnieje w innym module, albo z +`headerHint` dla znanych nazw z libc). + +--- + +## 8. System typów ### Reprezentacja w LLVM @@ -161,13 +317,13 @@ Kompilator znajduje `runtime/` i `std/` obok siebie (`../`, `./`) albo w `../sha | `char` `i8` `u8` / `i16` `u16` / `i32` `u32` / `int` `u64` | `i8` / `i16` / `i32` / `i64` | | `f32` / `float` | `float` / `double` | | `str`, `[]T` | `{ ptr, i64, i64 }` (wskaźnik, długość, pojemność) | -| `map[K]V` | `{ ptr, i64, i64, i64, ptr, i64 }` (entries, len, used, cap, index, icap; zob. src/gen.fch) | +| `map[K]V` | `{ ptr, i64, i64, i64, ptr, i64 }` (entries, len, used, cap, index, icap; §10.12) | | `ptr`, `ptr[T]`, `null` | `ptr` (nieprzezroczysty) | | `[N]T` | `[N x T]` | | struktura Fincha | nazwany typ struct, naturalny układ | | `self` metody | `ptr` (pierwszy parametr) | | wynik `-> T!` | `{ i1 ok, T value, str error }` (`i8` w miejscu `T` dla `-> !`) | -| struktura C | nazwany **upakowany** (packed) struct z jawnymi bajtami wypełnienia (§5) | +| struktura C | nazwany **upakowany** (packed) struct z jawnymi bajtami wypełnienia (§13.2) | Znakowość istnieje tylko w typie Fincha i wybiera `sdiv/udiv`, `ashr/lshr`, `icmp s*/u*`, `sext/zext`, `sitofp/uitofp`, `fptosi/fptoui`. @@ -182,7 +338,7 @@ struct Value_ { Value *v; FType type; bool literal; bool fresh; }; w którym się mieści (`fits()`), albo `f32`. Przechodzi przez minus jednoargumentowy i arytmetykę samych literałów zwijaną do stałej; jawne konwersje ją kasują (`u8(250)` to stała z typem, więc `u8(250) + 10` zawija się do 4). - **`fresh`**: wartość posiadająca pamięć (str/tablica/struktura z takimi polami), której nikt jeszcze nie - trzyma: wynik wywołania, literał, sklejenie, konstruktor. Trzeba ją zapisać (przenieść) albo zwolnić (§8). + trzyma: wynik wywołania, literał, sklejenie, konstruktor. Trzeba ją zapisać (przenieść) albo zwolnić (§9). ### Konwersje niejawne: `coerce(v, want)` @@ -222,9 +378,7 @@ Całkowite i znaki wg znakowości (char bez znaku). Bool: tylko równość. Tabl --- ---- - -## 8. Własność i pamięć +## 9. Własność i pamięć ### 9.1 Model @@ -345,52 +499,382 @@ podczas iteracji, zagnieżdżonych tablicach struktur i przekazywaniu struktur C --- ---- +## 10. Generowanie kodu -## 9. Generyki, enumy i match +### 10.1 Zmienne -Jak są generowane, opisuje §4. Reguły widoczne dla użytkownika: sekcje 23 i 24 [przewodnika dla techników](dla-technikow.md). -Testy: `tests/new/generics.fch`, `tests/new/enums.fch` i odmowy w `tests/new/fail/`. +Każda zmienna, łącznie z parametrami, dostaje `alloca` na początku bloku wejściowego (`slot()`; +struktury C dostają wyrównanie z C). `addVar()` zapisuje wartość początkową, rejestruje zmienną, +dokłada sprzątanie, jeśli zmienna posiada pamięć, i (z `-g`) zgłasza ją debuggerowi. ---- +### 10.2 Miejsca: `ref()`, `place()`, `expr()` -## 10. Bootstrap - -Kompilator budowany jest z **ziarna**: własnego IR zapisanego jako `bootstrap/.ll` (zobacz -[bootstrap/README.md](../../bootstrap/README.md)). `bootstrap/build.sh`: - -``` -ziarno .ll ──clang──► finch0 ──buduje src/──► finch1 ──buduje src/──► build/finch +```cpp +struct LRef { bool isPlace; Place pl; Value_ val; }; // adres albo (jeśli go nie ma) wartość ``` -i przerywa, jeśli `finch1` i `finch` nie dają identycznego IR (punkt stały: kompilator kompiluje siebie tak samo, niezależnie -od tego, kto go zbudował). `bootstrap/build.sh seed` przepisuje ziarno z bieżącego kompilatora; rób to, gdy źródło -kompilatora zacznie używać czegoś, czego zatwierdzone ziarno nie ma. +`ref(e, forWrite)` przechodzi łańcuch `Var`/`Member`/`Index` i zwraca **adres**, jeśli istnieje: -Ziarno jest na system, bo zapieczono w nim konwencję wywołań C dla wywołań libclang (§5). Linux x86-64 i Linux ARM64 mają -ziarna. Dla macOS i Windowsa trzeba by ziaren zrobionych z nagłówkami Apple i Microsoftu. +- `Var` → jej `alloca` (albo zmienna globalna C). +- `.pole` na miejscu-strukturze → `getelementptr` do pola (`llvmIndex`; struktury C pomijają elementy wypełnienia). +- przez wskaźnik (`p.value`, `p.pole`, `p[i]`) → wczytanie wskaźnika, kontrola null, adres celu. + `p.value` na wskaźniku do struktury z własnym polem `value` oznacza to pole. +- `a[i]` na miejscu-tablicy/tekście → wczytanie `{ptr,len,cap}`, `boundsCheck(i, len)`, `getelementptr`. + Przy `forWrite` na `str` najpierw `finch_str_own` (kopiowanie przy zapisie dla literałów). `[N]T` sprawdza względem `N`. +- `.len` / `.ptr` → wartości. +- wartość tymczasowa (wynik wywołania…) nie ma adresu: jej pole/element jest wyciągany, kopiowany + (jeśli posiada pamięć), a sama wartość zwalniana. ---- +`expr()` dla tych rodzajów woła `ref()` i wczytuje spod adresu: stąd bierze się każdy `load` zmiennej, +pola albo elementu. `place()` wymaga adresu (cele przypisań, `addr()`). -## 11. Serwer języka +### 10.3 Przypisanie -`finch lsp` mówi JSON-RPC przez stdin/stdout (ramki `Content-Length`, `std/json`). Sam nie sprawdza typów: przy każdej zmianie -uruchamia `finch index plik.fch --overlay ścieżka=kopia …`, gdzie nakładki to niezapisany tekst edytora. W trybie `index` -kompilator wypisuje rekordy rozdzielone tabulatorami: +`x = v`: **najpierw** liczone jest `v` (może przenieść pamięć, w której żyje cel: `a[0] = f()`, gdzie `f` +robi `push` do `a`), potem `place(cel, forWrite)`, `coerce`, `own`, wczytanie starej wartości, zapis i +zwolnienie starej. Złożone `x += v`: liczenie `v`, wczytanie celu, `arith()`, zapis, zwolnienie starej +wartości (dla `str +=`). -| Rekord | Znaczenie | +### 10.4 Funkcje i `main` + +Funkcje są `internal` z naturalną sygnaturą LLVM (agregaty przez wartość). Parametry posiadające +pamięć są kopiowane na wejściu tylko wtedy, gdy `borrowParam` jest fałszywe. Metody (§10.10) dostają adres +`self` jako dodatkowy pierwszy parametr; funkcje, które mogą się nie udać (§10.11), zwracają `{ i1, T, str }`. +`fn main() -> !` / `-> int!` sprawia, że wrapper przy porażce wypisuje `error: ` na stderr +i kończy z kodem 1. `fn main` to wewnętrzna +`finch.main`; osobna zewnętrzna `i32 main(i32, ptr)` (`defineMainWrapper`) buduje `[]str args` przez +`finch_args`, jeśli trzeba, woła ją, zwalnia argumenty i zwraca kod wyjścia. Funkcja, która dochodzi do +swojego końca, dostaje sprzątanie zasięgów i `ret void` albo błąd `can reach its end without returning T`. + +### 10.5 Sterowanie przebiegiem + +Bieżący blok buildera jest źródłem prawdy o osiągalności (`terminated()`): instrukcje po terminatorze to +błąd (`this code can never run`). `continueAt()` usuwa blok łączący, do którego nikt nie skacze. +`if`/`while`/`for` mają klasyczny układ bloków; `while true` bez `break` zostawia funkcję zakończoną +(nie trzeba po nim `return`). `for i in a..b` liczy oba końce raz; `continue` idzie do `for.step`. +`for x in lista` czyta długość listy z jej adresu **w każdej rundzie** (`push` w środku pętli jest bezpieczny) +i trzyma indeks w slocie na stosie. `break`/`continue` emitują sprzątanie zasięgów otwartych wewnątrz pętli +(`Loop::scopeDepth`) przed skokiem. + +### 10.6 Skrócone `&&` / `||` + +Jedyne ręcznie budowane φ: lewa strona kończy się w bloku `from`, prawa w `rhsEnd`; +`phi i1 [!isAnd, from], [rhs, rhsEnd]`. + +### 10.7 Wywołania + +`callFinch()` konwertuje argumenty na typy parametrów (literały tablic przez `exprWant`), przekazuje +posiadające płytko, woła, a potem zwalnia argumenty fresh. Wyniki typów posiadających są fresh. +`construct()` buduje strukturę od `zeroinitializer` przez `insertvalue`: pozycyjnie (wszystkie pola) +albo po nazwie (brakujące biorą wyrażenie domyślne pola, liczone w module struktury z podmienionymi +zasięgami wywołującego, albo zero). Wywołania C opisuje §13. + +### 10.8 Wypisywanie + +`print` emituje `printf` dla każdego argumentu skalarnego z formatem wybranym wg typu (`%lld`, `%llu`, +`%g`, `%c`, `%.*s` dla `str` z jego długością), oddzielając spacjami, a na końcu `\n`. Wszystko inne +(wskaźniki, tablice, tablice o stałym rozmiarze, mapy, struktury) jest najpierw **zamieniane na tekst** +w buforze `str` na stercie przez `emitFormat()` i wypisywane przez `finch_buf_print`. Typy złożone dostają +generowany helper `finch.format.(buf, wartość*)`, który dopisuje `[1, 2]` / `{"a": 1}` / +`Punkt(x: 1, y: 2)`, biorąc teksty i znaki w środku w cudzysłów. `str(x)` tablicy, mapy albo struktury +używa tego samego helpera, więc `str(x)` to zawsze to, co pokazuje `print(x)`. + +### 10.9 Metody tablic i tekstów + +Tablice: `push` (`finch_arr_reserve` + zapis + len++), `pop`/`remove` (przeniesienie na zewnątrz, +`remove_gap`), `insert` (`insert_gap`), `clear`/`resize` (zwolnienie znikających elementów, +`finch_arr_resize`), `find`/`contains` (pętla z `compare(Eq)`), `slice` (nowa tablica, `copyAt` na element), +`reverse` (pętla zamian), `sort` (`qsort` z libc z generowaną porównywarką `finch.cmp.`), `join` (runtime). +Metody zmieniające tablicę wymagają adresu (zmienna/pole/element). +Teksty: `sub find contains starts_with ends_with split trim upper lower replace repeat bytes`, wszystkie w runtime. +`for i, x in lista` dodaje obok elementu zmienną-indeks typu `int` tylko do odczytu. + +### 10.10 Metody + +`fn Punkt.przesun(int dx)` jest deklarowana jak funkcja `finch.[modul.]Punkt.przesun` z dodatkowym +pierwszym parametrem `ptr` i trzymana w `Codegen::methods[StructInfo*]` (więc metody idą za strukturą do +każdego modułu, który jej używa, a struktury z C też mogą mieć metody). W `define()` `self` to `Var`, którego +`slot` **jest tym argumentem-wskaźnikiem**: `self.x` to GEP od struktury samego wywołującego, a `self = …` +zapisuje wartość wywołującego. Nigdy nie ma kopii. + +Przy wywołaniu `obj.m(args)` (`structMethod()`) `ref(obj)` daje adres, gdy `obj` jest miejscem (zmienna, +pole, element, `m[klucz]`), wczytany wskaźnik dla `ptr[T]` (sprawdzany na null) albo tymczasowe miejsce na +stosie dla wartości (`Punkt(1, 2).dlugosc()`), zwalniane po wywołaniu. Z analizy modyfikacji wynikają dwie +reguły bezpieczeństwa: metody zmieniającej `self` nie można wywołać na zmiennej pętli (tylko do odczytu), +a jeśli taka metoda dostaje argument żyjący wewnątrz odbiorcy (`c.merge(c)`, `p.add(p.items)`), argument +jest najpierw kopiowany, żeby `self` nie mógł zwolnić pamięci, na którą argument wciąż wskazuje. + +### 10.11 Błędy jako wartości + +Funkcja, która może się nie udać (`-> T!`), zwraca `{ i1 ok, T value, str error }`; przy porażce `value` +jest zerem, więc wywołujący nigdy nie musi go zwalniać. `return v` opakowuje `{1, v, zero}` (`retValue()`); +`return error(msg)` liczy komunikat, wykonuje sprzątanie i zwraca `{0, zero, msg}` (`retError()`). + +Wywołanie takiej funkcji jest dozwolone tylko jako argument `or` / `try`. `fallible(wywołanie)` ustawia +`fallibleTarget` na wyrażenie wywołania; `callFinch()` (i funkcje wbudowane, które mogą się nie udać) +porównują z nim swoje `CallExpr`/`MethodExpr` i jeśli pasuje, zostawiają `fallibleFailed` (`i1`) +i `fallibleMsg` (`str`) dla wywołującego; jeśli wywołanie takiej funkcji nie pasuje, to błąd kompilacji +*'f' can fail, so say what happens then*. Zagnieżdżone obsługi zapisują i przywracają te trzy pola. + +| Forma | Tłumaczenie | |---|---| -| `@R plik linia kol dł plikDef liniaDef kolDef podpowiedź` | odwołanie: co pokazuje hover i gdzie jest definicja | -| `@V nazwa typ plik linia kol plikFn liniaFn koniecFn` | zmienna i funkcja, w której żyje | -| `@F moduł nazwa odb plik linia kol koniec sygnatura parametry` | funkcja lub metoda | -| `@S` / `@SF`, `@E`, `@I` | struktury (i pola), enumy, importy | +| `f(x) or zapasowa` | `br failed, or.failed, or.ok`; blok porażki zwalnia komunikat i liczy wartość zapasową (tylko tam); φ łączy obie wartości | +| `f(x) or { … }` | blok porażki deklaruje `err` (właściciel komunikatu) i wykonuje blok. Jeśli wartość jest używana, blok musi kończyć się skokiem; jako instrukcja może przejść dalej, a ścieżka sukcesu zwalnia nieużytą wartość | +| `try f(x)` | blok porażki wykonuje `emitCleanups(0)` i zwraca `{0, zero, msg}` z bieżącej funkcji, która też musi móc się nie udać | -Pierwszy błąd wypisywany jest jako `ścieżka:linia:kol: error: komunikat` i staje się diagnostyką. Gdy kod się nie kompiluje, -serwer podpowiada dalej z ostatniej wersji, która się skompilowała. Test akceptacyjny: `tests/lsp_test.py` (22 sprawdzenia). +Funkcje wbudowane z trybem porażki sprawdzają `&wywołanie == fallibleTarget` i przełączają się na +`finch_str_try_int`, `finch_str_try_float`, `finch_try_read_file`, `finch_try_write_file`, +`finch_try_delete_file`, które zwracają 1 / 0 i wypełniają `str` z błędem zamiast robić panic. Koszt przy +sukcesie to jedna przewidywalna gałąź; nic nie jest alokowane, dopóki nie zdarzy się porażka. + +### 10.12 Mapy + +Runtime (§12) trzyma tablicę haszującą zachowującą kolejność wstawiania, w stylu `dict` z CPythona: +tablica `entries` z miejscami `{ i64 hash, K key, V value }` w kolejności wstawiania (hash 0 = usunięte) +oraz `index` z `icap` miejscami (potęga dwójki, ≥ 2 × cap) z sondowaniem liniowym (−1 puste, −2 usunięte, +w innym razie numer wpisu). Runtime tylko haszuje (FNV-1a + 64-bitowe mieszanie; klucze tekstowe po treści, +pozostałe po bajtach), znajduje i umieszcza wpisy; kompilator zapisuje, kopiuje i zwalnia klucze i wartości, +dokładnie tak jak elementy tablic. + +| Kod | Tłumaczenie | +|---|---| +| odczyt `m[k]` | `finch_map_find`; −1 → `finch_map_missing` (noreturn, z kluczem jako tekst); w innym razie miejsce `entry.value` | +| zapis `m[k]` (`=`, `+=`, metoda zmieniająca, `addr`) | `mapSlot()`: `finch_map_slot` zwraca wpis, dodając go, jeśli go nie ma; nowy wpis dostaje kopię klucza i wartość domyślną typu | +| `["a": 1, …]` | wyzerowana mapa + `mapSlot` dla każdego wpisu (pierwszy wpis ustala typy; liczbowe wartości są wszystkie `float`, jeśli któraś ma kropkę) | +| `has`, `get`, `remove`, `clear`, `keys`, `values` | `codegen_map.cpp`; wartość domyślna `get` jest liczona tylko wtedy, gdy klucza brak | +| `for k, v in m` | pętla po `0..used` pomijająca usunięte miejsca, wczytująca `entries` i `used` w każdym obrocie | +| kopia / zwolnienie / tekst | helpery jak dla tablic: `finch_map_clone_raw`, a potem głębokie kopie posiadających kluczy i wartości; zwolnienie każdego żywego wpisu, potem `finch_map_free` | + +Usunięcie oznacza miejsce (i wpis w indeksie) jako usunięte; miejsca są upychane, gdy tablica miałaby +urosnąć, a co najmniej ćwierć z nich jest usunięta. Usunięcie ostatniego klucza resetuje tablicę. --- -## 12. Semantyka a C +## 11. Kontrole w czasie działania + +Wszystkie błędy w czasie działania idą przez `finch_panic(plik, linia, msg)` / +`finch_panic_index(plik, linia, i, len)` (zadeklarowane `noreturn cold`), więc gałąź błędu jest układana +jako zimna, a kontrola kosztuje porównanie i dobrze przewidywany skok. LLVM usuwa kontrole, które potrafi +udowodnić (stałe indeksy w zakresie, kontrole wyciągnięte z pętli). + +| Kontrola | Gdzie | +|---|---| +| dzielenie/reszta przez zero (stałe zero: błąd kompilacji) | `checkDivisor()` | +| `MIN / -1` dla typów ze znakiem | `checkDivisor()` | +| indeks tablicy/tekstu/tablicy stałej poza zakresem (`icmp uge`, więc także ujemne) | `boundsCheck()` | +| `.value`, `.pole`, `[i]` przez null | `member()`, `index()` | +| `pop()` na pustej, `slice()`/`sub()` poza zakresem | metody, runtime | +| zły tekst w `int(s)`/`float(s)`, nieczytelny plik w `read_file` (bez `or` / `try`) | runtime | +| odczyt `m[klucz]` z brakującym kluczem | `mapIndex()` | +| metoda wywołana przez `null` w `ptr[T]` | `structMethod()` | + +Sito na 20 milionów elementów z kontrolą zakresu przy każdym dostępie działa tak szybko jak to samo w C +(ok. 0,09 s): kontrole są wyciągane z pętli albo zwijane. + +--- + +## 12. Runtime w C + +`runtime/finch_rt.c` to zwykłe C bez stanu globalnego. CMake wbudowuje go w kompilator jako surowy +napis (`rt_source.inc`); przy pierwszym użyciu `runtimeObject()` kompiluje go przez `$CC -O2 -fPIC -c` +do `~/.cache/finch/rt-.o`, gdzie hash obejmuje źródło, wersję Fincha i kompilator C. +Jest linkowany statycznie do każdego programu. + +Wspólny układ: + +```c +typedef struct { char *ptr; int64_t len; int64_t cap; } FStr; // ptr zawsze zakończony zerem +typedef struct { void *ptr; int64_t len; int64_t cap; } FArr; +// cap tekstu: > 0 sterta (posiadany), 0 literał (statyczny), -1 pożyczony z C (skopiuj, zanim zatrzymasz) +``` + +Funkcje przyjmują i zwracają te struktury **przez wskaźnik**, więc ich ABI jest trywialne (bez klasyfikacji +struktur): budowanie tekstów (`concat`, `from_int/uint/float/char/bool`, `sub`, `trim`, `upper`, `lower`, +`replace`, `split`, `join`, `repeat`, `from_bytes`), porównania (`eq`, `cmp`, `find`, `starts`, `ends`), +własność (`copy`, `own`, `drop`, `from_c`), tablice (`reserve`, `make`, `resize`, `clone_raw`, `free`, +`insert_gap`, `remove_gap`), mapy (`map_find`, `map_slot`, `map_remove_at`, `map_clear`, `map_free`, +`map_clone_raw`, `map_missing`; §10.12), bufory tekstu dla `print`/`str` (`buf_add`, `buf_int`, …, +`buf_print`), warianty mogące się nie udać (`str_try_int`, `str_try_float`, `try_read_file`, +`try_write_file`, `try_delete_file`, `report_error`), `args`, `input`, pliki, `shell` i panic. Brak pamięci +wypisuje `out of memory` i kończy proces. + +--- + +## 13. Współpraca z C: nagłówki, struktury, ABI + +### 13.1 Import nagłówków + +`importHeaders(imports, dirs)` parsuje każdy `import "x.h"` jako osobną jednostkę translacji z pliku +w pamięci `#include "x.h"`, z `-x c -std=gnu11`, `-I` dla folderu każdego pliku `.fch` i `-isystem` dla +każdego katalogu przeszukiwanego przez systemowy kompilator C (odczytanego z `$CC -E -v -x c /dev/null`, +dzięki czemu działa to na NixOS). `gnu11`, bo glibc w trybie ścisłego ISO ukrywa `M_PI` i podobne. + +`Importer` odwiedza kursory najwyższego poziomu: + +| Kursor | Wynik | +|---|---| +| `FunctionDecl` | `CFunc` (sygnatura mapowana w **kontekście sygnatury**; funkcje `static` i K&R zapisywane jako nieobsługiwane) | +| `TypedefDecl` rekordu | nazywa rekord (`typedef struct {…} CXCursor` → `CXCursor`) | +| `StructDecl` (definicja) | nazywa rekord jego tagiem | +| `VarDecl` `extern` | `CGlobal` (mapowany w **kontekście danych**) | +| `EnumConstantDecl`, liczbowe `MacroDefinition` | `CConst` (literał) | + +`mapType()` działa na typach kanonicznych i mapuje liczby całkowite wg rozmiaru. Kontekst decyduje o +`char *`: w sygnaturach funkcji to `str` (Finch konwertuje przy wywołaniu), ale w strukturach, zmiennych +globalnych i za wskaźnikami to `ptr[char]` (tam układ pamięci musi zostać pojedynczym wskaźnikiem). +Rekordy przez wartość stają się `Named{nazwa, "C"}` i są definiowane przez `defineRecord()`: każde pole +(`clang_Type_visitFields`) z przesunięciem w bajtach, rozmiarem i wyrównaniem, zagnieżdżone rekordy, +tablice stałe (`Fixed`). Unie i pola bitowe zostają jako ukryte bajty i oznaczają strukturę jako +nieobsługiwaną przy wywołaniach przez wartość; wskaźniki na wszystko inne (void, funkcje, niekompletne +struktury) stają się `ptr`. + +### 13.2 Układ struktur C + +`resolveStruct()` buduje **upakowany** struct LLVM, który odwzorowuje C bajt w bajt: wypełnienie +`[n x i8]` przed każdym polem, którego przesunięcie wyprzedza bieżącą pozycję, samo pole (tylko jeśli jego +rozmiar w LLVM zgadza się z C) i wypełnienie końcowe do `sizeof` z C. Dostęp do pól używa zapisanego +`llvmIndex`. Upakowanie czyni układ dokładnym niezależnie od reguł wyrównania LLVM; alokacje i wartości +tymczasowe dostają wyrównanie z C jawnie. + +### 13.3 Konwencja wywołań System V x86-64 + +`classify(T)` (w `abi.cpp`) spłaszcza strukturę do skalarnych liści z przesunięciami w bajtach (przez +zagnieżdżone struktury i tablice stałe) i: + +- **MEMORY**, jeśli jest większa niż 16 bajtów albo ma niewyrównany liść: przekazywana jako wskaźnik z + `byval(T) align ≥8`, zwracana przez ukryty pierwszy wskaźnik `sret(T)`. +- w przeciwnym razie każdy eightbyte jest **INTEGER**, jeśli którykolwiek liść w nim jest liczbą + całkowitą/wskaźnikiem, a inaczej **SSE**. Części: INTEGER → `iN` dla pozostałych bajtów (`i32` dla + 4-bajtowego `Color`), SSE → `double`, `<2 x float>` albo `float`. Jedna część idzie wprost; dwie jako + dwa argumenty albo zwracane jako `{a, b}`. + +`makePlan()` przechodzi parametry, licząc 6 rejestrów całkowitych i 8 SSE; struktura, której części już się +nie mieszczą, idzie w całości na stos (MEMORY), tak jak robi to clang. Małe parametry całkowite dostają +`signext`/`zeroext`. `emitCCall()` zapisuje każdy argument-strukturę do slotu wystarczająco dużego dla +struktury i jej postaci rejestrowej, wczytuje części z przesunięć 0 i 8, woła z zaplanowanym typem funkcji +i atrybutami, a wyniki-struktury odbudowuje w ten sam sposób. + +`cThunk(fn)` to odwrotność dla `addr(fn)`: wewnętrzna funkcja z sygnaturą C, która składa parametry-struktury +z rejestrów albo pamięci `byval`, woła funkcję Fincha i obniża jej wynik. Akceptowane są tylko sygnatury zgodne z C. + +`tests/run/c_structs.fch` sprawdza `{float,float}`, `{float,float,float}`, `{u8×4}`, `{double,int}`, +`{i64,i64}`, strukturę 24-bajtową, strukturę z `char[8]`, zagnieżdżone struktury, wyczerpanie rejestrów +przy 13 argumentach-strukturach oraz wywołania zwrotne przyjmujące i zwracające struktury, na bibliotece C +kompilowanej przez `link "abi.c"`. Wyniki zgadzają się z tymi samymi wywołaniami zrobionymi z C. + +### 13.4 Linkowanie kodu C + +`link "nazwa"` próbuje `pkg-config --libs nazwa`, a potem `-lnazwa`. `link "plik.c"` kompiluje plik +(względem pliku `.fch`) przez `$CC -O2 -fPIC -c` do tymczasowego obiektu; pliki `.o` i `.a` przechodzą +bez zmian. Gdy linkowanie się nie uda, `linkFailed()` mapuje niezdefiniowane symbole na nagłówek, który +je zadeklarował, i wypisuje linijkę `link` do dopisania. + +--- + +## 14. Optymalizacja, emisja, linkowanie + +- **Cel:** `sys::getDefaultTargetTriple()`, CPU `generic`, `Reloc::PIC_`. Data layout jest ustawiany na + module, zanim powstanie jakikolwiek IR (od niego zależy wyrównanie loadów i store'ów). +- **Optymalizacja:** `PassBuilder::buildPerModuleDefaultPipeline(O2)`: środkowa część `-O2` z clanga. + `-O0` ją pomija (`finch ir plik.fch -O0` pokazuje surowe wyjście `Codegen`). +- **Emisja:** stary `PassManager` + `addPassesToEmitFile(ObjectFile)`. +- **Linkowanie:** `$CC prog.o rt.o [obiekty użytkownika] -lm [biblioteki]`. Na Niksie wrapper cc zamienia + ścieżki `-L` na `RPATH`, więc programy działają bez `LD_LIBRARY_PATH`. +- **`run`:** tymczasowy plik wykonywalny uruchamiany z resztą argumentów i potem usuwany; sygnał jest + zgłaszany jako `the program crashed: ` z kodem wyjścia `128 + n`. + +Uwagi o wydajności: funkcje użytkownika są `internal`, więc LLVM swobodnie je wstawia i specjalizuje +(rekurencyjne `fib(40)`: ok. 0,19 s wobec ok. 0,23 s dla `clang -O2` na tym samym kodzie C na maszynie +autora); kod tablicowy z kontrolą zakresu dorównuje C na sicie. + +--- + +## 15. Informacje dla debuggera + +Z `-g` `Codegen` tworzy `DIBuilder`, jednostkę kompilacji (`DW_LANG_C`, więc składnia wyrażeń C w gdb +działa dla `print p.x`), `DIFile` na plik źródłowy, `DISubprogram` na funkcję, zmienne-parametry +(`createParameterVariable`, więc `bt` pokazuje `length (v=…)`), zmienne lokalne (`insertDeclare` na ich +`alloca`) i `DILocation` na każdą instrukcję i wywołanie (`setLoc`). Typy: podstawowe z nazwami Fincha +(`int`, `u8`, `float`), `str`/tablice jako struktury `{ptr, len, cap}`, wskaźniki, tablice stałe i struktury +z przesunięciami pól z `StructLayout` LLVM. Struktury rekurencyjne używają zastępowalnej deklaracji +wyprzedzającej. Generowane helpery nie mają lokacji. Najlepiej działa `-g -O0`; przy O2 część zmiennych jest usuwana. + +--- + +## 16. Diagnostyka + +`failAt(plik, linia, kol, msg)` wypisuje `ścieżka:linia:kol: error: msg` i linijkę źródła ze znakiem `^` +(tabulatory zachowane, kolumny liczone w znakach), a potem kończy proces z kodem 1. Konwencje: operatory +binarne raportują operator, wywołania nazwę funkcji, błędy argumentów pozycję argumentu. Komunikaty mówią, +co jest źle, a gdy naprawa jest oczywista, także jak to naprawić. Ostrzeżeń nie ma. Błąd weryfikatora LLVM +wypisuje `internal compiler error (please report)` i kończy proces z kodem 2. + +--- + +## 17. Kompilator samohostujący (`boot/`) + +`boot/` to drugi kompilator Fincha napisany w Finchu (ok. 3100 linii): + +| Plik | Zawartość | +|---|---| +| `boot/lexer.fch` | lekser (tokeny to `{kind, text, line, col, nl}`; rodzaje to słowa, a słowa kluczowe i operatory są swoim własnym rodzajem) | +| `boot/ast.fch` | `Type` (`kind`, `elem` jako tablica 0/1 elementów, `name`, `module`), jeden ogólny `Node` na wszystko, `Program` | +| `boot/parser.fch` | ta sama gramatyka i reguły nowych linii co parser C++, wspinanie się po priorytetach dla operatorów binarnych | +| `boot/gen.fch` | sprawdzanie typów + generator **tekstowego LLVM IR**: zasięgi, miejsca, konwersje, kopie, helpery, wypisywanie, kontrole, metody tablic i tekstów | +| `boot/main.fch` | ładowanie modułów i sterownik: zapisuje `.ll`, uruchamia `clang -O2 plik.ll runtime/finch_rt.c` | + +Obsługuje rdzeń języka: `int float bool char str`, `[]T`, struktury (wartości domyślne, konstruktory po +nazwie i po kolei), `ptr[T]`/`addr`/`new`/`free`/`null`, wszystkie instrukcje poza `defer`, moduły oraz +funkcje wbudowane i metody kompilatora C++, bez importu C, liczb z rozmiarem i `defer`. Ma tę samą +semantykę wartości i analizę pożyczania (kopiuje tam, gdzie główny kompilator), ale **nigdy nie zwalnia**: +jako kompilator bootstrapowy zostawia pamięć systemowi operacyjnemu. + +Stan kompilatora to jedna struktura `Gen` przekazywana jako `ptr[Gen]`: Finch nie ma zmiennych globalnych, +a przekazanie wskaźnika to sposób, w jaki funkcja zmienia wartość wywołującego. Bez `defer` i typu map zasięgi +to tablice tablic przeszukiwane liniowo; funkcje pomocnicze (kopiowanie/wypisywanie/porównywanie na typ) +są generowane przez tymczasową podmianę buforów wyjścia (`beginHelper`/`endHelper`). + +**Punkt stały.** `tests/boot.sh`: + +1. `build/finch` (C++) kompiluje `boot/` → **stage 1**, +2. stage 1 kompiluje `boot/` → **stage 2** (i jego IR), +3. stage 2 kompiluje `boot/` → IR **stage 3**, + +i wymaga, żeby IR ze stage 2 i stage 3 był **identyczny co do bajtu** (ok. 32 000 linii). Potem kompiluje +kompilatorem samohostującym każdy test z `tests/run`, który mieści się w podzbiorze języka, i porównuje +wynik z oczekiwanym. Kompilacja samego siebie zajmuje kompilatorowi samohostującemu ok. 2,3 s. + +--- + +## 18. System budowania + +- `find_package(LLVM CONFIG)`; **jeśli istnieje współdzielony cel `LLVM`, Finch linkuje tę jedną bibliotekę.** + `libclang.so` sam linkuje `libLLVM.so`; linkowanie dodatkowo statycznych bibliotek komponentów wprowadzało + do procesu dwie kopie LLVM, a zduplikowane obiekty globalne wywracały program przy wyjściu (podwójne + zwolnienie w globalnym destruktorze). Do tego binarka miała 82 MB zamiast ok. 20 MB. +- libclang: `find_path(clang-c/Index.h)` + `find_library(clang)`. +- `runtime/finch_rt.c` jest wczytywany przy konfiguracji do `build/rt_source.inc` jako surowy literał + napisowy; `CMAKE_CONFIGURE_DEPENDS` ponawia konfigurację, gdy plik się zmieni. +- `FINCH_VERSION` z `project(VERSION 2.4.0)`. C++17, `-Wall -Wextra` (MSVC: `/W3`), bez ostrzeżeń. +- `shell.nix` wymienia `llvmPackages.clang` przed `llvmPackages.libclang`: ten drugi dostarcza też + „gołego” `clang`, który nie widzi nagłówków systemowych. + +--- + +## 19. Testy + +- `tests/run.sh`: każdy `tests/run/*.fch` z `fn main` musi wypisać dokładnie swój `.out` (stdin z `.in`, jeśli + jest); pliki bez `main` to moduły albo pliki pomocnicze. Każdy `tests/fail/*.fch` musi się nie udać z tekstem + z linijki `// expect:`. Obecnie **74 passed, 0 failed**. +- `MEMCHECK=1 tests/run.sh`: to samo plus valgrind na każdym programie (bez wycieków i złych dostępów). +- `tests/boot.sh`: punkt stały samohostowania i przebieg na podzbiorze (§17). +- `tests/cross.sh windows|arm64`: każdy test zbudowany z `--target` i uruchomiony w Wine / QEMU. +- `python3 tests/lsp_test.py`: serwer języka, sterowany jak przez edytor. +- CI (`.github/workflows/ci.yml`) uruchamia to wszystko na Linuksie x86-64, Linuksie ARM64, macOS ARM64 i Windowsie. + +--- + +## 20. Semantyka a C | Sytuacja | C | Finch 2.0 | |---|---|---| @@ -410,15 +894,246 @@ serwer podpowiada dalej z ostatniej wersji, która się skompilowała. Test akce --- +## 21. Spis funkcji + +### Sterownik (`main.cpp`) + +| Funkcja | Robi | +|---|---| +| `Loader::load` / `findModule` | czyta, leksuje i parsuje plik oraz rekurencyjnie jego moduły / szuka `nazwa.fch` | +| `hostMachine`, `optimize`, `emitObject` | maszyna docelowa, potok O2, plik obiektowy | +| `runtimeObject` | kompiluje runtime i trzyma go w cache | +| `capture`, `libFlags`, `link` | uruchamia polecenie / pkg-config albo `-l` / linkowanie, z kompilacją plików z `link "x.c"` | +| `linkFailed`, `guessLib` | zamieniają wyjście linkera na porady | + +### Lekser i parser + +| Funkcja | Robi | Różni się od | +|---|---|---| +| `lex` / `tokName` | tekst → tokeny / nazwy do komunikatów | | +| `accept` / `expect` / `unexpected` | konsumuje, jeśli pasuje / konsumuje albo zgłasza błąd / błąd z kontekstem | | +| `sameLine` / `endOfStatement` | czy ten token może kontynuować wyrażenie? / czy instrukcja się skończyła? | | +| `atDeclaration` / `type` | podgląd deklaracji / parsowanie typu | | +| `args` | `( [nazwa:] expr, … )` dla wywołań, metod i konstruktorów | | +| `postfix` | łańcuchy `.pole`, `.metoda(…)`, `[i]` | `primary` parsuje początek łańcucha | + +### Codegen: program i instrukcje (`codegen.cpp`) + +| Funkcja | Robi | Różni się od | +|---|---|---| +| `declareStructs` / `declareFns` / `declare` | wszystkie typy / wszystkie sygnatury / jedna sygnatura + analiza pożyczania | | +| `define` / `defineMainWrapper` | jedno ciało / punkt wejścia C | | +| `pushScope` / `popScope` | otwiera / zamyka zasięg (`popScope` emituje jego sprzątanie, jeśli osiągalne) | | +| `emitCleanups(downTo)` / `emitScopeCleanups(i)` | sprzątanie kilku zasięgów bez zamykania (return/break) / jednego zasięgu | | +| `slot` / `tmpOf` / `tmp` | `alloca` zmiennej / anonimowa / anonimowa z wartością | | +| `lookup` / `addVar` | szuka widocznej zmiennej (respektuje `deferLimit`) / deklaruje zmienną | | +| `stmt`, `varDecl`, `assign`, `ifStmt`, `whileStmt`, `forStmt`, `forEachStmt`, `returnStmt`, `jump` | instrukcje | | +| `rootVar` / `mutates` / `mutatesExpr` | zmienna, od której zaczyna się l-wartość / czy instrukcja albo wyrażenie ją zmienia? | | + +### Codegen: wyrażenia + +| Funkcja | Robi | Różni się od | +|---|---|---| +| `expr` / `exprWant` | r-wartość / to samo z oczekiwanym typem dla literałów tablic | | +| `ref` / `place` | adres, jeśli jest, inaczej wartość / adres albo błąd | `expr` wczytuje z `ref` | +| `member` / `index` | `.x`, `.len`, `.ptr`, `.value`, auto-dereferencja / `[i]` z kontrolą zakresu i kopiowaniem przy zapisie | | +| `arrayLit` | `[…]` → tablica na stercie | | +| `unary`, `binary`, `arith`/`arithOp`, `compare`, `logic` | operatory (`arith` dokłada flagę literału) | | +| `unify` / `coerce` / `convert` | dwa argumenty do siebie / jedna wartość do miejsca / jawne `T(x)` | | + +### Codegen: typy i własność (`codegen_types.cpp`) + +| Funkcja | Robi | +|---|---| +| `ty`, `resolve`/`resolveT`, `findStruct`, `resolveStruct` | typ LLVM; Named → Struct (głęboko albo płytko); szukanie struktury; układ + kontrola cykli | +| `owning`, `zero`, `defaultValue` | czy typ posiada pamięć; stała zerowa; zero albo wartości domyślne struktury | +| `own` / `release` | coś do zapisania (przeniesienie albo kopia) / zwolnienie niezatrzymanej wartości fresh | +| `copyValue`, `dropValue`, `copyAt`, `dropAt`, `copyFn`, `dropFn`, `typeKey` | kopiowanie i zwalnianie przez wartość, przez adres i helpery na typ | +| `forN` | wewnętrzna pętla `for i in 0..n` używana przez helpery | +| `strConst`, `cstr`, `strFromC`, `elemSize` | stała-literał str; str → `char*`; `char*` → pożyczony str; rozmiar elementu | +| `emitPrint`, `printFn`, `printf_` | wypisywanie | +| `diType`, `setLoc` | informacje dla debuggera | + +### Codegen: wywołania (`codegen_builtins.cpp`) i ABI (`abi.cpp`) + +| Funkcja | Robi | +|---|---| +| `call` / `method` | rozwiązuje wywołanie / metodę albo wywołanie z modułu | +| `callFinch` / `construct` / `callC` | funkcja lub metoda Fincha / konstruktor struktury / funkcja C | +| `structMethod` | `obj.m(...)`: adres odbiorcy, kontrole bezpieczeństwa, wywołanie | +| `print`, `addrOf`, `convert`, `arrayMethod` | funkcje wbudowane | +| `fallible`, `tryExpr`, `orElse`, `retValue`, `retError` (`codegen.cpp`) | błędy jako wartości (§10.11) | +| `mapIndex`, `mapLit`, `mapMethod`, `mapSlot`, `forEachEntry` (`codegen_map.cpp`) | mapy (§10.12) | +| `rt` / `libc` | deklaruje funkcję runtime'u / libc | +| `fileName`, `panicIf`, `boundsCheck`, `checkDivisor` | kontrole w czasie działania | +| `classify`, `makePlan`, `declareC`, `emitCCall`, `cThunk` | klasyfikacja ABI (System V, Microsoft x64, AAPCS64), plan rejestrów, deklaracja, wywołanie, wrapper dla callbacków | + --- -## 13. Znane ograniczenia +## 22. Rozbudowa kompilatora -- Kompilator działa tylko na Linuksie x86-64 i ARM64 (brak ziarna dla macOS i Windowsa). Programy można budować na wszystkie trzy. -- Wynik dla macOS jest sprawdzany tylko jako IR; Windows i ARM64 uruchamiane są w CI pod Wine i qemu. -- Jeden błąd na uruchomienie, bez odzyskiwania. -- Informacje `-g` najlepiej z `-O0`. -- Sterownik używa narzędzi `sh` (`rm`, `mkdir`), więc wymaga powłoki POSIX. -- Generyki są monomorfizowane (kod rośnie z liczbą instancji); nie ma ograniczeń na typy, błędne użycie to błąd wewnątrz - wygenerowanego ciała. +**Funkcja wbudowana:** dodaj nazwę do `isBuiltin()`, obsłuż ją w `call()`, zaimplementuj (w IR albo jako +funkcję runtime'u zadeklarowaną w tabeli `rt()`), dodaj przypadki w `tests/run/` i `tests/fail/`. Jeśli ma +istnieć też w kompilatorze samohostującym, dodaj ją do `call()` i `runtimeDecls()` w `boot/gen.fch`. +**Metoda tablicy albo tekstu:** dodaj gałąź w `arrayMethod()` albo w części `str` w `method()`; jeśli +zmienia tablicę, dopisz jej nazwę do zbiorów `changing` w `method()` i `mutatesExpr()`, żeby pożyczanie +dalej było poprawne. + +**Operator:** token leksera + `tokName`, `BinOp`, właściwa funkcja priorytetu w parserze, `opName`, emisja +w `arithOp`/`compare` i wyjaśnienie w `badOperands`. + +**Instrukcja:** `StmtKind` + węzeł, `Parser::statement`, `Codegen::stmt`; jeśli przenosi sterowanie, +respektuj `terminated()`, używaj `continueAt()` dla bloków łączących i emituj sprzątanie (`emitCleanups`) +przed wyskokiem z zasięgów. + +**Nowy typ posiadający pamięć:** rozszerz `owning()`, `dropAt`/`copyAt` (i ich helpery), `emitPrint`, `diType`. + +--- + +## 23. Platformy: Windows, macOS, ARM64 + +`src/target.h` trzyma `g_target`: triple LLVM, flagi `windows` / `msvc` / `darwin` / `cross`, kompilator C +(`cc`) i rozszerzenie plików wykonywalnych. `setTarget()` zamienia `windows`, `linux`, `arm64`, `macos` +(albo pełny triple) na triple i wybiera kompilator C: `FINCH_CC`, potem `CC` (nie przy kompilacji +krzyżowej), potem `x86_64-w64-mingw32-gcc` / `aarch64-linux-gnu-gcc` dla Windowsa / Linuksa ARM64 z innego +systemu, `clang --target=` dla pozostałych celów krzyżowych, `clang` na Windowsie, `cc` na Uniksie. +`initTargets()` rejestruje backendy X86 i AArch64 (te, które ma dany LLVM; CMake definiuje +`FINCH_TARGET_X86` / `FINCH_TARGET_AARCH64` i linkuje ich biblioteki). Przez tę warstwę idzie wszystko, +co zależy od platformy: + +- **Nagłówki:** libclang parsuje z `--target=` (więc `long` ma 32 bity na Windowsie i używane są + właściwe nagłówki), a na Windowsie z `-D_USE_MATH_DEFINES`. Katalogi nagłówków pochodzą z ` -E -v`. +- **Procesy:** `capture()` / `runCommand()` opakowują `popen` / `system` (`_popen` na Windowsie) i dekodują + kody wyjścia (POSIX `WIFEXITED`/sygnały albo kody Windowsa i wyjątki NTSTATUS, np. `0xC0000005`). + `shellQuote()` cytuje dla `sh` (`'…'`) albo `cmd.exe` (`"…"`); linia polecenia dla `cmd /c`, która + zaczyna się od cudzysłowu, dostaje dodatkową parę cudzysłowów. +- **Linkowanie:** bez `-lm` przy MSVC; nazwy `.exe`; klucz cache runtime'u obejmuje triple i kompilator C. + Komunikaty linkera MSVC (`LNK2019 unresolved external symbol`, `LNK1104`/`LNK1181 cannot open file`) są + tłumaczone tak jak komunikaty GNU ld. +- **Uruchamianie:** `runPrefix()`: program dla Windowsa zbudowany na Linuksie uruchamia się przez `wine`, + program dla Linuksa ARM64 na innym procesorze przez `qemu-aarch64`. +- **macOS:** ` -E -v` wypisuje wpisy `(framework directory)`; zamieniają się w `-iframework` dla + libclang, więc `import "OpenGL/gl.h"` działa. `link "Cocoa.framework"` daje `-framework Cocoa`. Komunikaty + linkera Apple (`Undefined symbols for architecture arm64: "_f"`, `ld: library 'x' not found`, + `framework 'X' not found`) są tłumaczone jak pozostałe, bez wiodącego `_` z Mach-O. +- **Informacje dla debuggera:** CodeView dla celów MSVC, DWARF w pozostałych. +- **Runtime:** na Windowsie nie ma `getline` ani `sys/wait.h`; `stdin`/`stdout`/`stderr` są tam makrami, + więc `finch_std_stream(i)` udostępnia je Finchowi, gdy nagłówek nie ma dla nich zmiennej `extern`. +- **Wypisywanie wskaźników** jest wszędzie takie samo: `null` albo `0x…`. + +### Konwencja wywołań Microsoft x64 + +`classify()` rozgałęzia się po `g_target.windows`. Struktura o rozmiarze dokładnie 1, 2, 4 albo 8 bajtów +idzie jako **jedna liczba całkowita** tego rozmiaru, nawet jeśli zawiera floaty (`{float, float}` → `i64`). +Każda inna struktura jest **pośrednia (Indirect)**: wywołujący kopiuje ją na swój stos i przekazuje adres +kopii (bez `byval`: funkcja dostaje zwykły wskaźnik). Wyniki 1/2/4/8-bajtowe wracają w `rax` jako liczba; +wszystko inne przez ukryty wskaźnik `sret`. Każdy argument zajmuje jedno miejsce, więc nie ma liczenia +rejestrów. `cThunk()` robi to samo w drugą stronę dla callbacków. + +`tests/cross.sh windows` buduje każdy test z `--target windows`, uruchamia go w Wine i porównuje wynik: przechodzą +wszystkie, łącznie z `c_structs` (który wtedy sprawdza reguły Microsoftu na bibliotece C zbudowanej MinGW). +CI dodatkowo buduje `finch.exe` przez MSVC na Windows Server i uruchamia tam `tests/run.sh`. + +### AAPCS64 (Linux ARM64 i Apple) + +`classify()` odwzorowuje to, jak clang tłumaczy wywołania na AArch64: + +- **Jednorodny agregat zmiennoprzecinkowy** (1–4 elementy, wszystkie `float` albo wszystkie `double`, + zagnieżdżone struktury i tablice spłaszczone) idzie w rejestrach wektorowych: przekazywany jako + `[n x float]` / `[n x double]`, zwracany jako `{ float, … }`. Na Linuksie argument dostaje też + `alignstack(8)`, tak jak u clanga; Apple tego nie robi. +- Każda inna struktura do 16 bajtów idzie w rejestrach ogólnych: `i64` (≤ 8 bajtów) albo `[2 x i64]` + (`i128`, jeśli jej wyrównanie to 16); zwracana jest jako liczba całkowita dokładnie jej rozmiaru albo `[2 x i64]`. +- Większe struktury są **pośrednie (Indirect)**: kopia na stosie wywołującego, przekazana przez adres + (bez `byval`); zwracane przez `sret`. +- Nie ma liczenia rejestrów: każdą część rozmieszcza backend. +- Zwykły `char` w C jest **bez znaku** na Linuksie ARM64, a ze znakiem na Apple i x86, co ma znaczenie przy + rozszerzaniu argumentów i wyników typu `char` (`charIsSigned()`). +- Apple przekazuje zmienną część `printf(...)` przez stos; LLVM robi to na podstawie `...` w typie funkcji. + +`tests/cross.sh arm64` uruchamia cały zestaw testów (łącznie z testem ABI struktur na bibliotece C +zbudowanej GCC) w QEMU, a CI robi to natywnie na Linuksie ARM64 i Apple Silicon. + +### Budowanie finch.exe + +CI używa Visual Studio 2022, Ninja i oficjalnego pakietu `clang+llvm-21.x-x86_64-pc-windows-msvc` +(biblioteki statyczne, `/MT`, więc `CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded`). Dwa szczegóły Windowsa +w `CMakeLists.txt`: ten pakiet podaje ścieżkę do biblioteki DIA SDK z maszyny, na której zbudowano LLVM, +więc jest ona przekierowywana na zainstalowane Visual Studio; a osadzony runtime jest zapisywany jako +kilka surowych napisów, bo MSVC ogranicza jeden literał do 16 KB. LLVM jest inicjalizowany tylko z +natywnym backendem, żeby budowanie statyczne nie wciągało wszystkich architektur. + +--- + +## 24. Serwer języka + +`finch lsp` (`src/lsp.cpp`) mówi protokołem LSP przez stdin/stdout, używając `llvm::json`. Przy +`didOpen`/`didChange` uruchamia na dokumencie prawdziwy front-end: `Loader` (z tekstem otwartych +dokumentów jako nadpisaniem plików), `importHeaders` (w cache na zestaw importów, bo czytanie nagłówków +jest najwolniejsze) i `generate()` bez optymalizacji i emisji. Dwa przełączniki pozwalają użyć +kompilatora wewnątrz serwera: + +- `g_throwErrors`: `failAt()` rzuca `FinchError{file, line, col, msg}` zamiast wypisywać i kończyć proces. + Serwer publikuje to jako diagnostykę (dla właściwego pliku, także wewnątrz importowanego modułu) i czyści + diagnostyki, które zniknęły. +- `g_index`: podczas generowania kodu `Codegen::note()` zapisuje `SymRef` dla każdej rozwiązywanej nazwy + (zmienne, parametry, pola, funkcje, konstruktory, funkcje i stałe C, funkcje wbudowane, metody, elementy + modułów): jej zakres, opis w markdownie i pozycję definicji. `define()` i `declareStructs()` dokładają + `FnInfo` / `StructIndex`; `addVar()` dokłada `VarInfo` z zakresem linii otaczającej funkcji. Pozycje nazw + pochodzą z pól `namePos`, które zapisuje parser. + +Zapytania korzystają z tego indeksu: + +| Zapytanie | Źródło | +|---|---| +| hover, definition | `SymRef` pod kursorem | +| completion | słowa kluczowe, typy, funkcje wbudowane, zmienne otaczającej funkcji, funkcje, struktury, importowane moduły, nazwy z C pasujące do wpisanego początku; po `nazwa.`: pola struktury (także przez `ptr[T]`), metody tablic/tekstów albo zawartość modułu | +| signatureHelp | cofa się do niezamkniętego `(`, liczy przecinki na najwyższym poziomie i szuka sygnatury Fincha / C / wbudowanej | +| documentSymbol | funkcje i struktury (z polami) z pliku | + +Kod w trakcie pisania (`p.`, `add(1, `) się nie kompiluje, więc serwer trzyma **ostatnią udaną** analizę +każdego dokumentu i dołącza z niej funkcje, struktury i zmienne do podpowiedzi. `tests/lsp_test.py` +steruje serwerem tak jak edytor i sprawdza każdą funkcję. + +`src/builtins_doc.h` to jedyny opis funkcji wbudowanych i metod, używany przy hover, podpowiedziach +i podpowiedziach parametrów (i odwzorowany w ściągach). + +--- + +## 25. Integracje z edytorami + +### Kate + +`editors/kate/finch.xml` to definicja KSyntaxHighlighting (silnika Kate, KWrite i KDevelop): listy słów +kluczowych zgodne z `builtins_doc.h`, kontekst dla `fn Typ.metoda`, teksty ze znakami specjalnymi oraz +regiony zwijania dla `{ }` i komentarzy blokowych. `lspclient.json` to wpis dla klienta LSP w Kate +(`highlightingModeRegex: ^Finch$`); `install.sh` kopiuje definicję i dołącza wpis do +`~/.config/kate/lspclient/settings.json`. Kate wysyła więcej zapytań niż VS Code (`documentHighlight`, +`foldingRange`, …); serwer odpowiada na każde nieobsługiwane zapytanie błędem `MethodNotFound`, więc żaden +klient nie czeka. + +### VS Code + +`editors/vscode` to zwykłe rozszerzenie w JavaScripcie: `extension.js` uruchamia `finch lsp` przez +`vscode-languageclient` (ścieżka z ustawienia `finch.path`) i dodaje **Run** / **Build** jako zadania +`ProcessExecution` (bez cytowania dla powłoki; matcher `$finch` zamienia linie `plik:linia:kol: error:` +w wpisy w Problems). `syntaxes/finch.tmLanguage.json` to gramatyka TextMate, testowana przez `npm test` +z `vscode-textmate` + `vscode-oniguruma` (tym samym silnikiem, którego używa VS Code); +`language-configuration.json` daje komentarze, nawiasy, automatyczne domykanie i wcięcia; `snippets/` +szablony. CI pakuje je przez `vsce` do `finch-lang.vsix`. + +## 26. Znane ograniczenia + +- Brak typów generycznych, interfejsów, `match`, domknięć i enumów pisanych w Finchu. +- Teksty to bajty: `.len`, `s[i]`, `upper()` nie znają Unicode. +- Zmiana kluczy mapy wewnątrz `for` po tej samej mapie nie jest wykrywana (jest bezpieczna dla pamięci, + ale wpisy mogą zostać pominięte albo odwiedzone dwa razy). +- Porażka `try` / `or` w środku wyrażenia nie zwalnia świeżych wartości tymczasowych policzonych wcześniej + w tym wyrażeniu (mały wyciek, tylko na ścieżce porażki). +- Wiszące wskaźniki (`addr` zmiennej, która zniknęła, użycie po `free`) nie są wykrywane. +- Wielkość przesunięć i konwersje float→int nie są sprawdzane (poison w LLVM, jak w C). +- C: unie i struktury z polami bitowymi przez wartość, makra-funkcje, `long double`. +- Cele: x86-64 i ARM64 (Linux, macOS; Windows na x86-64). Bez Windowsa na ARM64, systemów 32-bitowych i WebAssembly. +- Kompilator samohostujący nie ma importu C, liczb z rozmiarem, `defer`, map, metod ani błędów jako + wartości i nie zwalnia pamięci. diff --git a/docs/pl/dla-poczatkujacych.md b/docs/pl/dla-poczatkujacych.md index a0d5355..6718f54 100644 --- a/docs/pl/dla-poczatkujacych.md +++ b/docs/pl/dla-poczatkujacych.md @@ -63,7 +63,8 @@ i wpisz te linijki po kolei, naciskając **Enter** po każdej: git clone https://github.com/Nexoniarz/Finch.git cd Finch nix-shell -bootstrap/build.sh +cmake -S . -B build -G Ninja +ninja -C build ``` 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 506792d..97d7a95 100644 --- a/docs/pl/dla-technikow.md +++ b/docs/pl/dla-technikow.md @@ -33,10 +33,7 @@ kompilator działa w środku. Do tego służy [przewodnik dla inżynierów](dla- 20. [Debugowanie](#20-debugowanie) 21. [Rozwiązywanie problemów](#21-rozwiązywanie-problemów) 22. [Struktura projektu i testy](#22-struktura-projektu-i-testy) -23. [Enumy i match](#23-enumy-i-match) -24. [Typy generyczne](#24-typy-generyczne) -25. [Biblioteka standardowa](#25-biblioteka-standardowa) -26. [Obecne ograniczenia](#26-obecne-ograniczenia) +23. [Obecne ograniczenia](#23-obecne-ograniczenia) --- @@ -63,40 +60,77 @@ i komunikaty błędów, które mówią, jak problem naprawić. ## 2. Instalacja -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. +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 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`. +### Windows -### Opcja A: gotowa wersja (Linux) +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`. -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: +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). -| 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 | +### macOS -### Opcja B: zbuduj sam +```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) ```sh git clone https://github.com/Nexoniarz/Finch.git cd Finch -nix-shell # clang, libclang, pkg-config (albo zainstaluj z dystrybucji) -bootstrap/build.sh # build/finch -./build/finch version +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) ``` -`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`. +### 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 +``` ### Budowanie na inny system @@ -122,14 +156,13 @@ Na Niksie te kompilatory to `pkgsCross.mingwW64.buildPackages.gcc` i ### Dodanie `finch` do PATH (opcjonalnie) ```sh -sudo bootstrap/install.sh # /usr/local/bin/finch oraz /usr/local/share/finch/{runtime,std} -bootstrap/install.sh ~/.local # albo do własnego katalogu +sudo cp build/finch /usr/local/bin/ finch version ``` -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. +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`. --- @@ -905,156 +938,37 @@ CodeView, który czyta debugger Visual Studio i WinDbg. ``` Finch/ -├── 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) +├── 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) ├── examples/ hello, tour, types, structs, todo, guess, c_import, window, opengl, vulkan, raylib, llvm ├── tests/ -│ ├── 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/ 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.sh uruchamia testy (MEMCHECK=1 sprawdza też pamięć valgrindem) -│ ├── 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 +│ └── boot.sh buduje kompilator samohostujący nim samym i porównuje ├── 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 +├── shell.nix środowisko deweloperskie Nix +└── CMakeLists.txt ``` ```sh -tests/run.sh # programy, odmowy, buildy z -g, biblioteka współdzielona, serwer języka +tests/run.sh # → 74 passed, 0 failed 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 ``` -### Warianty z wartościami - -Wariant może nieść wartości. Tworzysz go przez `Shape.Circle(2.0)`, a wyciągasz `match`-em, który je nazywa: - -```c -enum Shape { - Circle(float) - Rect(float, float) - Point -} - -fn Shape.area() -> float { - return match self { - Circle(r) -> 3.14 * r * r - Rect(w, h) -> w * h - Point -> 0.0 - } -} -``` - -`_` pomija wartość. `match` musi obsłużyć każdy wariant (albo kończyć się `else`). Wypisanie pokazuje `Rect(2, 3.5)`. Taki enum -jest kopiowany i zwalniany jak struktura; nie da się go porównać przez `==` (użyj `match`). Warianty takich enumów nie mają numerów. - --- -## 23. Enumy i match - -**Enum** to typ z krótką listą nazwanych wartości. - -``` -enum Kolor { Czerwony, Zielony, Niebieski } -enum Status { Ok = 200, Brak = 404 } // wariantowi można nadać numer - -k := Kolor.Zielony -print(k) // Zielony -print(int(Status.Brak)) // 404 -print(Kolor(2)) // Niebieski: liczba zamieniona na enum (sprawdzana: Kolor(7) to błąd) -``` - -Warianty pisze się `Kolor.Czerwony`. Można je porównywać przez `==` i `!=` (nie przez `<`), używać jako klucze map, -pola struktur i elementy tablic, a enum może mieć metody jak struktura: `fn Kolor.nastepny() -> Kolor { ... }`. - -**match** wybiera, co zrobić, na podstawie wartości — zamiast drabinki `if`: - -``` -match k { - Czerwony -> print("ciepły") // w matchu na enumie wystarczy sama nazwa - Zielony, Niebieski -> print("zimny") // kilka wartości w jednej gałęzi -} - -rozmiar := match n { // jako wyrażenie: daje wartość - 1, 2, 3 -> "mały" - 4, 5 -> "średni" - else -> "duży" -} - -match slowo { - "koniec" -> { - print("pa") - return - } - else -> print("co?") -} -``` - -`match` działa na enumach, liczbach całkowitych, znakach, tekście i bool. Gałęzie sprawdzane są po kolei. Match na -enumie musi obsłużyć **każdy wariant** albo kończyć się `else` (kompilator wskaże brakujące); każdy inny match -potrzebuje `else`. W wyrażeniu wszystkie gałęzie dają ten sam typ. - -## 24. Typy generyczne - -Napisz funkcję lub strukturę raz dla dowolnego typu, z typem jako nazwą w nawiasach kwadratowych: - -``` -fn max[T](T a, T b) -> T { - if a > b { - return a - } - return b -} - -struct Stos[T] { - []T elementy -} - -fn Stos[T].dodaj(T x) { - self.elementy.push(x) -} - -print(max(3, 9), max("jabłko", "gruszka")) // T wynika z argumentów -print(max[float](1, 2.5)) // albo zapisane wprost, gdzie nie da się go ustalić -s := Stos[int]() // generyczną strukturę zawsze pisze się z typem -s.dodaj(7) -``` - -Parametrów może być kilka (`struct Para[A, B]`), typy można zagnieżdżać (`Stos[Para[int, str]]`). Każde użycie tworzy -własną kopię kodu, więc generyk jest tak szybki jak kod napisany ręcznie. Nie ma ograniczeń: jeśli `T` nie potrafi -tego, co robi funkcja (`a > b` na strukturze), błąd mówi o tym i podaje, którą wersję budowano, np. -`(while building wiekszy[Punkt])`. - -## 25. Biblioteka standardowa - -Moduły dołączone do Fincha, napisane w Finchu. `import json` szuka najpierw `json.fch` obok Twojego pliku, potem w -bibliotece — więc Twój własny plik o tej nazwie ma pierwszeństwo. - -| Moduł | Co robi | -|---|---| -| `path` | `join`, `base`, `dir`, `ext`, `stem`, `parts`, `clean`, `is_abs`: ścieżki jako tekst, rozdzielone `/` | -| `time` | `now()`, `millis()` (zegar do mierzenia), `sleep(ms)`, `date(t)`, `local(t)`, `format(t, "%Y-%m-%d")`, `days_in_month` | -| `proc` | `run(cmd)` (kod wyjścia), `output(cmd)` (co wypisało; błąd, jeśli się nie udało), `env(nazwa, domyślna)`, `pid()`, `cwd()` | -| `json` | `parse(tekst)`, `stringify(v)`, `pretty(v)` oraz typ wartości `Json` z `get`, `at`, `set`, `push`, `has`, `str_or`, `int_or` ... | - -``` -import json -import path - -dok := try json.parse(read_file("config.json")) -nazwa := dok.get("name").str_or("bez nazwy") // brakujący klucz to null, więc łańcuch nigdy się nie psuje -dok.set("name", json.new_text(nazwa + "!")) -write_file(path.join("out", "config.json"), json.pretty(dok)) -``` - -## 26. Obecne ograniczenia +## 23. Obecne ograniczenia Jeszcze nie ma: -- Interfejsów. +- Typów generycznych (własnego `Lista[T]`), interfejsów, `match`, enumów pisanych w Finchu. - Tekstu świadomego Unicode: `.len`, `s[i]` i `upper()` działają na bajtach / ASCII. - Wątków. - Windowsa na ARM64, systemów 32-bitowych, WebAssembly. diff --git a/docs/pl/sciaga.md b/docs/pl/sciaga.md index 3ef9bba..8f31f26 100644 --- a/docs/pl/sciaga.md +++ b/docs/pl/sciaga.md @@ -370,34 +370,6 @@ Każdy edytor z LSP: `finch lsp`. --- -## Enumy i `match` - -``` -enum Kolor { Czerwony, Zielony } enum Status { Ok = 200, Brak = 404 } -k := Kolor.Zielony int(k) Kolor(1) k == Kolor.Czerwony // tylko == i !=; Kolor(7) to błąd -fn Kolor.nastepny() -> Kolor { ... } // metody działają - -match k { Czerwony -> ... Zielony -> { ... } else -> ... } // same nazwy wariantów; każdy wariant albo else -x := match n { 1, 2 -> "mało" else -> "dużo" } // wyrażenie: gałęzie tego samego typu -``` - -## Typy generyczne - -``` -fn max[T](T a, T b) -> T { ... } max(3, 9) max[float](1, 2.5) // wynika z argumentów albo zapisane -struct Stos[T] { []T elementy } fn Stos[T].dodaj(T x) { ... } // typ zawsze podaje się przy tworzeniu: -s := Stos[int]() Stos[int] t Para[str, int]("wiek", 31) // nigdy samo Stos() -``` - -## Biblioteka standardowa (`import nazwa`; własny plik o tej nazwie ma pierwszeństwo) - -| | | -|---|---| -| `path` | `join(a, b)` `base(p)` `dir(p)` `ext(p)` `stem(p)` `parts(p)` `clean(p)` `is_abs(p)` | -| `time` | `now()` `millis()` `sleep(ms)` `date(t)` `local(t)` `format(t, fmt)` `days_in_month(r, m)` | -| `proc` | `run(cmd)` `output(cmd)` (błąd z jego wyjściem) `env(nazwa, domyślna)` `pid()` `cwd()` | -| `json` | `parse(tekst)` `stringify(v)` `pretty(v)` `new_text/number/bool/null/list/object` `v.get(k)` `v.at(i)` `v.set(k, x)` `v.push(x)` `v.has(k)` `v.str_or(d)` `v.int_or(d)` `v.float_or(d)` `v.bool_or(d)` | - ## Słowa kluczowe | Słowo | Po polsku | @@ -411,8 +383,6 @@ s := Stos[int]() Stos[int] t Para[str, int]("wiek", 31) // ni | `true` / `false` / `null` | prawda / fałsz / nic | | `import` / `link` | zaimportuj / dolinkuj | | `struct` | struktura | -| `enum` | wyliczenie | -| `match` | dopasuj | | `defer` | odłóż (na koniec bloku) | | `or` | albo (co zrobić przy porażce) | | `try` | spróbuj (porażkę przekaż dalej) | diff --git a/editors/kate/finch.xml b/editors/kate/finch.xml index 5651fad..9de46e1 100644 --- a/editors/kate/finch.xml +++ b/editors/kate/finch.xml @@ -11,8 +11,6 @@ fn struct - enum - export if @@ -26,7 +24,6 @@ defer or try - match import diff --git a/editors/vscode/snippets/finch.json b/editors/vscode/snippets/finch.json index 9457fef..363076e 100644 --- a/editors/vscode/snippets/finch.json +++ b/editors/vscode/snippets/finch.json @@ -156,43 +156,5 @@ "}" ], "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 d377758..3246326 100644 --- a/editors/vscode/syntaxes/finch.tmLanguage.json +++ b/editors/vscode/syntaxes/finch.tmLanguage.json @@ -74,7 +74,7 @@ ] }, "struct": { - "match": "\\b(struct|enum)\\s+([A-Za-z_][A-Za-z0-9_]*)", + "match": "\\b(struct)\\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|match)\\b" + "match": "\\b(if|else|while|for|in|break|continue|return|defer|or|try)\\b" }, { "name": "storage.type.function.finch", @@ -125,11 +125,7 @@ }, { "name": "storage.type.struct.finch", - "match": "\\b(struct|enum)\\b" - }, - { - "name": "storage.modifier.finch", - "match": "\\bexport\\b" + "match": "\\bstruct\\b" }, { "name": "constant.language.finch", diff --git a/notatka.txt b/notatka.txt new file mode 100644 index 0000000..1044ac2 --- /dev/null +++ b/notatka.txt @@ -0,0 +1 @@ +Kupić mleko \ No newline at end of file diff --git a/note.txt b/note.txt new file mode 100644 index 0000000..7d2e267 --- /dev/null +++ b/note.txt @@ -0,0 +1 @@ +Buy milk \ No newline at end of file diff --git a/runtime/finch_rt.c b/runtime/finch_rt.c index d825f64..4cb2d13 100644 --- a/runtime/finch_rt.c +++ b/runtime/finch_rt.c @@ -37,24 +37,10 @@ static char empty[1] = ""; // ---------- runtime errors ---------- -// A program that loads Finch libraries (finch build --shared) can take runtime errors over -// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler -// gets the message and must not return (longjmp out, or exit itself). -static void (*fatal_hook)(const char *msg); -void finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; } - -static __attribute__((noreturn)) void fatal(const char *msg) { - if (fatal_hook) fatal_hook(msg); - fflush(stdout); - fprintf(stderr, "%s\n", msg); - exit(1); -} - __attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) { - char full[1024]; - snprintf(full, sizeof full, "%s:%lld: runtime error: %s", file, (long long)line, msg); fflush(stdout); - fatal(full); + fprintf(stderr, "%s:%lld: runtime error: %s\n", file, (long long)line, msg); + exit(1); } __attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) { @@ -66,7 +52,8 @@ __attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t static void *must(void *p) { if (!p) { fflush(stdout); - fatal("runtime error: out of memory"); + fprintf(stderr, "runtime error: out of memory\n"); + exit(1); } return p; } diff --git a/shell.nix b/shell.nix index 1e3655a..41460f3 100644 --- a/shell.nix +++ b/shell.nix @@ -4,9 +4,11 @@ pkgs.mkShell { packages = with pkgs; [ # building Finch (the clang wrapper first, so `clang` finds the system headers) llvmPackages.clang + llvmPackages.llvm llvmPackages.libclang # reads C headers for `import "stdio.h"` + cmake + ninja pkg-config # finds the right flags for `link "..."` - python3 # tests/lsp_test.py # for the graphics examples (window, opengl, raylib, vulkan) glfw diff --git a/src/abi.cpp b/src/abi.cpp new file mode 100644 index 0000000..7209102 --- /dev/null +++ b/src/abi.cpp @@ -0,0 +1,367 @@ +// The C calling convention for structs passed and returned by value, the way clang does it: +// System V x86-64 (Linux, macOS): small structs split into eightbytes, INTEGER or SSE registers +// Microsoft x64 (Windows): 1/2/4/8 bytes in one register, everything else by address +// AAPCS64 (ARM64 Linux, Apple): float groups in vector registers, else up to 16 bytes in x registers + +#include "codegen_impl.h" +#include "target.h" + +using namespace llvm; + +namespace finch { + +namespace { + +enum Class { None, Integer, Sse }; + +struct Leaf { + uint64_t offset; + uint64_t size; + bool isFloat; + bool isDouble; +}; + +} // namespace + +// Flatten a value into its scalar pieces with byte offsets. +static void leaves(Codegen &cg, const FType &t, uint64_t base, std::vector &out) { + switch (t.kind) { + case FType::Struct: { + const StructLayout *lay = cg.dl->getStructLayout(t.info->llvm); + for (auto &f : t.info->fields) leaves(cg, f.type, base + lay->getElementOffset(f.llvmIndex), out); + break; + } + case FType::Fixed: { + uint64_t es = cg.dl->getTypeAllocSize(cg.ty(*t.elem)); + for (long long i = 0; i < t.count; i++) leaves(cg, *t.elem, base + i * es, out); + break; + } + default: + out.push_back({base, cg.dl->getTypeAllocSize(cg.ty(t)), t.kind == FType::F32 || t.kind == FType::F64, + t.kind == FType::F64}); + } +} + +AbiArg Codegen::classify(const FType &t) { + AbiArg a; + if (t.kind != FType::Struct) return a; // Direct + uint64_t size = dl->getTypeAllocSize(ty(t)); + if (g_target.triple.isAArch64()) { + // A homogeneous float aggregate (1-4 floats or 1-4 doubles) travels in vector registers. + std::vector ls; + leaves(*this, t, 0, ls); + bool hfa = !ls.empty() && ls.size() <= 4; + for (const Leaf &l : ls) hfa &= l.isFloat && l.isDouble == ls[0].isDouble; + if (hfa) { + llvm::Type *ft = ls[0].isDouble ? (llvm::Type *)b.getDoubleTy() : b.getFloatTy(); + a.kind = AbiArg::Expand; + a.parts.push_back(ArrayType::get(ft, ls.size())); + a.coerced = StructType::get(ctx, std::vector(ls.size(), ft)); + a.stackAlign8 = !g_target.triple.isOSDarwin(); + return a; + } + if (size > 16) { + a.kind = AbiArg::Indirect; // a copy, passed by address; returned through sret + return a; + } + // up to 16 bytes in general registers: i64 or [2 x i64]; returned as an exact-size integer + uint64_t align = dl->getABITypeAlign(ty(t)).value(); + a.kind = AbiArg::Expand; + if (align >= 16) { + a.parts.push_back(b.getInt128Ty()); + a.coerced = b.getInt128Ty(); + } else if (size <= 8) { + a.parts.push_back(b.getInt64Ty()); + a.coerced = b.getIntNTy(size * 8); + } else { + a.parts.push_back(ArrayType::get(b.getInt64Ty(), 2)); + a.coerced = a.parts[0]; + } + return a; + } + if (g_target.windows) { + // Microsoft x64: 1, 2, 4 or 8 bytes travel as one integer (even if they hold floats); + // anything else is copied by the caller and passed by address + if (size == 1 || size == 2 || size == 4 || size == 8) { + a.kind = AbiArg::Expand; + a.parts.push_back(b.getIntNTy(size * 8)); + a.coerced = a.parts[0]; + } else { + a.kind = AbiArg::Indirect; + } + return a; + } + if (size > 16 || size == 0) { + a.kind = AbiArg::Memory; + return a; + } + std::vector ls; + leaves(*this, t, 0, ls); + unsigned n = (size + 7) / 8; + Class cls[2] = {None, None}; + bool hasDouble[2] = {false, false}; + for (const Leaf &l : ls) { + if (l.offset % std::min(l.size, 8) != 0) { // misaligned field (packed struct): memory + a.kind = AbiArg::Memory; + return a; + } + unsigned k = l.offset / 8; + cls[k] = (cls[k] == Integer || !l.isFloat) ? Integer : Sse; + hasDouble[k] |= l.isDouble; + } + a.kind = AbiArg::Expand; + for (unsigned k = 0; k < n; k++) { + uint64_t bytes = std::min(8, size - 8 * k); + if (cls[k] == Sse) { + if (hasDouble[k]) a.parts.push_back(b.getDoubleTy()); + else if (bytes > 4) a.parts.push_back(FixedVectorType::get(b.getFloatTy(), 2)); + else a.parts.push_back(b.getFloatTy()); + } else { + a.parts.push_back(b.getIntNTy(bytes * 8)); + } + } + a.coerced = a.parts.size() == 1 ? a.parts[0] : StructType::get(ctx, a.parts); + return a; +} + +namespace { + +struct Plan { + AbiArg ret; + std::vector params; + llvm::FunctionType *fty = nullptr; +}; + +} // namespace + +// Decide how every parameter travels, counting the 6 integer and 8 SSE argument registers. +static Plan makePlan(Codegen &cg, const FType &ret, const std::vector ¶ms, bool variadic, + std::vector *extraTypes = nullptr) { + Plan pl; + int intRegs = 6, sseRegs = 8; + std::vector types; + llvm::Type *retTy = cg.ty(ret); + if (ret.kind == FType::Str) retTy = cg.b.getPtrTy(); + pl.ret = cg.classify(ret); + if (pl.ret.kind == AbiArg::Indirect) pl.ret.kind = AbiArg::Memory; // returned through a hidden pointer + if (pl.ret.kind == AbiArg::Memory) { + types.push_back(cg.b.getPtrTy()); // sret + retTy = cg.b.getVoidTy(); + intRegs--; + } else if (pl.ret.kind == AbiArg::Expand) { + retTy = pl.ret.coerced; + } + for (const FType &t : params) { + AbiArg a = cg.classify(t); + if (a.kind == AbiArg::Expand) { + int ni = 0, ns = 0; + for (llvm::Type *p : a.parts) (p->isIntegerTy() ? ni : ns)++; + // only System V counts registers here; elsewhere the backend places each part + if (g_target.windows || g_target.triple.isAArch64() || (ni <= intRegs && ns <= sseRegs)) { + intRegs -= ni; + sseRegs -= ns; + for (llvm::Type *p : a.parts) types.push_back(p); + } else { + a.kind = AbiArg::Memory; // out of registers: the whole struct goes on the stack + } + } + if (a.kind == AbiArg::Memory || a.kind == AbiArg::Indirect) types.push_back(cg.b.getPtrTy()); + if (a.kind == AbiArg::Direct) { + if (t.isFloat()) sseRegs--; + else intRegs--; + types.push_back(t.kind == FType::Str ? cg.b.getPtrTy() : cg.ty(t)); + } + pl.params.push_back(a); + } + (void)extraTypes; + pl.fty = FunctionType::get(retTy, types, variadic); + return pl; +} + +// Is C's plain `char` signed? Yes on x86 and Apple; no on ARM64 Linux. +static bool charIsSigned() { + return !g_target.triple.isAArch64() || g_target.triple.isOSDarwin() || g_target.triple.isOSWindows(); +} + +static Attribute::AttrKind extAttr(const FType &t) { + if (t.bits() >= 32 || !(t.isInt() || t.kind == FType::Bool || t.kind == FType::Char)) return Attribute::None; + if (t.kind == FType::Char) return charIsSigned() ? Attribute::SExt : Attribute::ZExt; + return t.isSigned() ? Attribute::SExt : Attribute::ZExt; +} + +// Attributes that tell LLVM how C passes each piece: sret, byval, signext/zeroext. +static AttributeList attrsFor(Codegen &cg, const Plan &pl, const FType &ret, const std::vector ¶ms) { + LLVMContext &ctx = cg.ctx; + AttributeList al; + unsigned idx = 0; + if (pl.ret.kind == AbiArg::Memory) { + al = al.addParamAttribute(ctx, idx, Attribute::getWithStructRetType(ctx, cg.ty(ret))); + idx++; + } else if (Attribute::AttrKind k = extAttr(ret); k != Attribute::None) { + al = al.addRetAttribute(ctx, k); + } + for (size_t i = 0; i < params.size(); i++) { + const AbiArg &a = pl.params[i]; + if (a.kind == AbiArg::Memory) { + uint64_t align = std::max(8, params[i].info->isC ? params[i].info->cstruct->align : 8); + al = al.addParamAttribute(ctx, idx, Attribute::getWithByValType(ctx, cg.ty(params[i]))); + al = al.addParamAttribute(ctx, idx, Attribute::getWithAlignment(ctx, Align(align))); + idx++; + } else if (a.kind == AbiArg::Indirect) { + idx++; + } else if (a.kind == AbiArg::Expand) { + if (a.stackAlign8) al = al.addParamAttribute(ctx, idx, Attribute::getWithStackAlignment(ctx, Align(8))); + idx += a.parts.size(); + } else { + if (Attribute::AttrKind k = extAttr(params[i]); k != Attribute::None) al = al.addParamAttribute(ctx, idx, k); + idx++; + } + } + return al; +} + +static std::vector resolvedParams(Codegen &cg, const CFunc &f) { + std::vector ps; + for (const FType &t : f.params) ps.push_back(cg.resolve(t, Pos{})); + return ps; +} + +Function *Codegen::declareC(const CFunc &f) { + if (Function *fn = mod->getFunction(f.name)) return fn; + FType ret = resolve(f.ret, Pos{}); + std::vector ps = resolvedParams(*this, f); + for (const FType &t : ps) + if (t.kind == FType::Struct && !t.info->unsupported.empty()) return nullptr; + Plan pl = makePlan(*this, ret, ps, f.variadic); + Function *fn = Function::Create(pl.fty, Function::ExternalLinkage, f.name, mod.get()); + fn->setAttributes(attrsFor(*this, pl, ret, ps)); + return fn; +} + +// A stack slot big enough for both the struct and its register form. +static Value *abiSlot(Codegen &cg, const FType &t, const AbiArg &a) { + llvm::Type *st = cg.ty(t); + llvm::Type *big = a.coerced && cg.dl->getTypeAllocSize(a.coerced) > cg.dl->getTypeAllocSize(st) ? a.coerced : st; + return cg.tmpOf(big); +} + +Value_ Codegen::emitCCall(const CFunc &f, Function *fn, std::vector args, Pos p) { + FType ret = resolve(f.ret, p); + std::vector ps = resolvedParams(*this, f); + for (const FType &t : ps) + if (t.kind == FType::Struct && !t.info->unsupported.empty()) + failAt(p.file, p.line, p.col, "the C function '" + f.name + "' takes the struct " + t.info->name + + " by value, which Finch can't pass yet: it " + t.info->unsupported); + if (ret.kind == FType::Struct && !ret.info->unsupported.empty()) + failAt(p.file, p.line, p.col, "the C function '" + f.name + "' returns the struct " + ret.info->name + + " by value, which Finch can't receive yet: it " + ret.info->unsupported); + Plan pl = makePlan(*this, ret, ps, f.variadic); + + std::vector ll; + Value *sret = nullptr; + if (pl.ret.kind == AbiArg::Memory) { + sret = tmpOf(ty(ret)); + cast(sret)->setAlignment(Align(16)); + ll.push_back(sret); + } + for (size_t i = 0; i < args.size(); i++) { + const Value_ &v = args[i]; + if (i >= ps.size()) { // the '...' part: C's default promotions + const FType &t = v.type; + Value *x = v.v; + if (t.kind == FType::F32) x = b.CreateFPExt(x, b.getDoubleTy()); + else if (t.kind == FType::Str) x = cstr(x); + else if (t.kind == FType::Bool || ((t.isInt() || t.kind == FType::Char) && t.bits() < 32)) + x = b.CreateIntCast(x, b.getInt32Ty(), t.isSigned() || (t.kind == FType::Char && charIsSigned())); + ll.push_back(x); + continue; + } + const AbiArg &a = pl.params[i]; + if (ps[i].kind == FType::Str) { + ll.push_back(cstr(v.v)); + } else if (a.kind == AbiArg::Memory || a.kind == AbiArg::Indirect) { + Value *s = tmpOf(ty(ps[i])); // a copy the callee may change + cast(s)->setAlignment(Align(16)); + b.CreateStore(v.v, s); + ll.push_back(s); + } else if (a.kind == AbiArg::Expand) { + Value *s = abiSlot(*this, ps[i], a); + b.CreateStore(v.v, s); + for (size_t k = 0; k < a.parts.size(); k++) + ll.push_back(b.CreateLoad(a.parts[k], b.CreateConstInBoundsGEP1_64(b.getInt8Ty(), s, 8 * k))); + } else { + ll.push_back(v.v); + } + } + CallInst *call = b.CreateCall(pl.fty, fn, ll); + AttributeList al = attrsFor(*this, pl, ret, ps); + call->setAttributes(al); + + if (ret.kind == FType::Void) return {nullptr, FType::Void}; + if (pl.ret.kind == AbiArg::Memory) return {b.CreateLoad(ty(ret), sret), ret}; + if (pl.ret.kind == AbiArg::Expand) { + Value *s = abiSlot(*this, ret, pl.ret); + b.CreateStore(call, s); + return {b.CreateLoad(ty(ret), s), ret}; + } + if (ret.kind == FType::Str) return strFromC(call); // borrowed: copied if it is kept + return {call, ret}; +} + +// A C-callable door into a Finch function, for addr(fn) (callbacks like qsort's or libclang's). +Function *Codegen::cThunk(Fn &fn, Pos p) { + if (fn.cThunk) return fn.cThunk; + auto cOk = [](const FType &t) { + return t.isNumber() || t.kind == FType::Bool || t.kind == FType::Char || t.isPtr() || t.kind == FType::Void || + (t.kind == FType::Struct && t.info->isC); + }; + for (const FType &t : fn.params) + if (!cOk(t)) + failAt(p.file, p.line, p.col, "addr(" + fn.decl->name + ") gives C a function pointer, so its parameters must be C types (numbers, ptr, C structs), not " + t.show()); + if (!cOk(fn.ret)) failAt(p.file, p.line, p.col, "addr(" + fn.decl->name + "): a function given to C can't return " + fn.ret.show()); + + Plan pl = makePlan(*this, fn.ret, fn.params, false); + Function *th = Function::Create(pl.fty, Function::InternalLinkage, "finch.c." + fn.decl->name, mod.get()); + th->setAttributes(attrsFor(*this, pl, fn.ret, fn.params)); + fn.cThunk = th; + + IRBuilderBase::InsertPointGuard guard(b); + DISubprogram *savedFn = diFn; + diFn = nullptr; + b.SetInsertPoint(BasicBlock::Create(ctx, "entry", th)); + b.SetCurrentDebugLocation(DebugLoc()); + unsigned ai = 0; + Value *sret = nullptr; + if (pl.ret.kind == AbiArg::Memory) sret = th->getArg(ai++); + std::vector args; + for (size_t i = 0; i < fn.params.size(); i++) { + const AbiArg &a = pl.params[i]; + if (a.kind == AbiArg::Memory || a.kind == AbiArg::Indirect) { + args.push_back(b.CreateLoad(ty(fn.params[i]), th->getArg(ai++))); + } else if (a.kind == AbiArg::Expand) { + Value *s = abiSlot(*this, fn.params[i], a); + for (size_t k = 0; k < a.parts.size(); k++) + b.CreateStore(th->getArg(ai++), b.CreateConstInBoundsGEP1_64(b.getInt8Ty(), s, 8 * k)); + args.push_back(b.CreateLoad(ty(fn.params[i]), s)); + } else { + args.push_back(th->getArg(ai++)); + } + } + Value *r = b.CreateCall(fn.llvm, args); + if (fn.ret.kind == FType::Void) { + b.CreateRetVoid(); + } else if (pl.ret.kind == AbiArg::Memory) { + b.CreateStore(r, sret); + b.CreateRetVoid(); + } else if (pl.ret.kind == AbiArg::Expand) { + Value *s = abiSlot(*this, fn.ret, pl.ret); + b.CreateStore(r, s); + b.CreateRet(b.CreateLoad(pl.ret.coerced, s)); + } else { + b.CreateRet(r); + } + diFn = savedFn; + return th; +} + +} // namespace finch diff --git a/src/ast.h b/src/ast.h new file mode 100644 index 0000000..87c3828 --- /dev/null +++ b/src/ast.h @@ -0,0 +1,356 @@ +#pragma once + +#include +#include +#include + +struct StructInfo; // filled in by codegen: fields, LLVM type, ownership + +struct Type { + enum Kind { + Void, Bool, Char, I8, I16, I32, I64, U8, U16, U32, U64, F32, F64, + Str, Ptr, Null, + Array, // []T: growable, owns its elements + Map, // map[K]V: a hash map that keeps insertion order, owns its keys and values + Fixed, // [N]T: only inside C structs + Struct, // a resolved struct + Named, // a struct name as written, before codegen resolves it + }; + Kind kind = Void; + std::shared_ptr elem; // Ptr (null = untyped `ptr`), Array, Fixed; Map: the value + std::shared_ptr key; // Map + long long count = 0; // Fixed + std::string name; // Named / Struct + std::string module; // Named: written qualifier ("" = none); Struct: defining module + StructInfo *info = nullptr; // Struct + + Type() = default; + Type(Kind k) : kind(k) {} + static Type ptrTo(const Type &t) { + Type p(Ptr); + p.elem = std::make_shared(t); + return p; + } + static Type arrayOf(const Type &t) { + Type a(Array); + a.elem = std::make_shared(t); + return a; + } + static Type mapOf(const Type &k, const Type &v) { + Type m(Map); + m.key = std::make_shared(k); + m.elem = std::make_shared(v); + return m; + } + + bool isInt() const { return kind >= I8 && kind <= U64; } + bool isSigned() const { return kind >= I8 && kind <= I64; } + bool isUnsigned() const { return kind >= U8 && kind <= U64; } + bool isFloat() const { return kind == F32 || kind == F64; } + bool isNumber() const { return isInt() || isFloat(); } + bool isPtr() const { return kind == Ptr; } + int bits() const { + switch (kind) { + case Bool: return 1; + case Char: case I8: case U8: return 8; + case I16: case U16: return 16; + case I32: case U32: case F32: return 32; + default: return 64; + } + } + + bool operator==(const Type &o) const { + if (kind != o.kind) return false; + switch (kind) { + case Ptr: + if (!elem || !o.elem) return !elem && !o.elem; + return *elem == *o.elem; + case Array: return *elem == *o.elem; + case Map: return *key == *o.key && *elem == *o.elem; + case Fixed: return count == o.count && *elem == *o.elem; + case Struct: return info == o.info; + case Named: return name == o.name && module == o.module; + default: return true; + } + } + bool operator!=(const Type &o) const { return !(*this == o); } + + // How the type is written in Finch, for error messages. + std::string show() const { + switch (kind) { + case Void: return "nothing"; + case Bool: return "bool"; + case Char: return "char"; + case I8: return "i8"; + case I16: return "i16"; + case I32: return "i32"; + case I64: return "int"; + case U8: return "u8"; + case U16: return "u16"; + case U32: return "u32"; + case U64: return "u64"; + case F32: return "f32"; + case F64: return "float"; + case Str: return "str"; + case Ptr: return elem ? "ptr[" + elem->show() + "]" : "ptr"; + case Null: return "null"; + case Array: return "[]" + elem->show(); + case Map: return "map[" + key->show() + "]" + elem->show(); + case Fixed: return "[" + std::to_string(count) + "]" + elem->show(); + case Struct: + case Named: return module.empty() ? name : module + "." + name; + } + return "?"; + } +}; + +// Built-in type names. `int` is i64 and `float` is f64: the everyday defaults. +bool typeFromName(const std::string &name, Type &out); + +struct Pos { + int line = 0, col = 0; + int file = 0; // index into the list of source files (see error.h) +}; + +// ---------- expressions ---------- + +enum class ExprKind { Int, Float, Bool, Char, Str, Null, Var, Unary, Binary, Call, Member, Index, ArrayLit, Method, + MapLit, Try, OrElse }; + +struct Expr { + ExprKind kind; + Pos pos; + Expr(ExprKind k, Pos p) : kind(k), pos(p) {} + virtual ~Expr() = default; +}; +using ExprPtr = std::unique_ptr; + +struct IntExpr : Expr { + long long value; + IntExpr(Pos p, long long v) : Expr(ExprKind::Int, p), value(v) {} +}; +struct FloatExpr : Expr { + double value; + FloatExpr(Pos p, double v) : Expr(ExprKind::Float, p), value(v) {} +}; +struct BoolExpr : Expr { + bool value; + BoolExpr(Pos p, bool v) : Expr(ExprKind::Bool, p), value(v) {} +}; +struct CharExpr : Expr { + char value; + CharExpr(Pos p, char v) : Expr(ExprKind::Char, p), value(v) {} +}; +struct StrExpr : Expr { + std::string value; + StrExpr(Pos p, std::string v) : Expr(ExprKind::Str, p), value(std::move(v)) {} +}; +struct NullExpr : Expr { + explicit NullExpr(Pos p) : Expr(ExprKind::Null, p) {} +}; +struct VarExpr : Expr { + std::string name; + VarExpr(Pos p, std::string n) : Expr(ExprKind::Var, p), name(std::move(n)) {} +}; +struct UnaryExpr : Expr { + char op; // '-', '!' or '~' + ExprPtr operand; + UnaryExpr(Pos p, char o, ExprPtr e) : Expr(ExprKind::Unary, p), op(o), operand(std::move(e)) {} +}; +enum class BinOp { + Add, Sub, Mul, Div, Mod, + BitAnd, BitOr, BitXor, Shl, Shr, + Eq, NotEq, Less, LessEq, Greater, GreaterEq, + And, Or, +}; +struct BinaryExpr : Expr { + BinOp op; + ExprPtr lhs, rhs; + BinaryExpr(Pos p, BinOp o, ExprPtr l, ExprPtr r) + : Expr(ExprKind::Binary, p), op(o), lhs(std::move(l)), rhs(std::move(r)) {} +}; +// name(args): a function, a built-in, a conversion or a struct constructor. +struct CallExpr : Expr { + std::string callee; + std::vector args; + std::vector argNames; // "" for positional; Point(x: 1, y: 2) + CallExpr(Pos p, std::string c) : Expr(ExprKind::Call, p), callee(std::move(c)) {} +}; +struct MemberExpr : Expr { // obj.field, p.value, a.len + ExprPtr obj; + std::string field; + MemberExpr(Pos p, ExprPtr o, std::string f) + : Expr(ExprKind::Member, p), obj(std::move(o)), field(std::move(f)) {} +}; +struct IndexExpr : Expr { // a[i] + ExprPtr obj, index; + IndexExpr(Pos p, ExprPtr o, ExprPtr i) : Expr(ExprKind::Index, p), obj(std::move(o)), index(std::move(i)) {} +}; +struct ArrayLitExpr : Expr { // [1, 2, 3] + std::vector elems; + explicit ArrayLitExpr(Pos p) : Expr(ExprKind::ArrayLit, p) {} +}; +struct MapLitExpr : Expr { // ["a": 1, "b": 2], or [:] for an empty map + std::vector keys, values; + explicit MapLitExpr(Pos p) : Expr(ExprKind::MapLit, p) {} +}; +// obj.name(args): a.push(x), s.find("x"), p.move(1, 2), and math.sqrt(2) / math.Vec(1, 2) for modules +struct MethodExpr : Expr { + ExprPtr obj; + std::string name; + std::vector args; + std::vector argNames; + MethodExpr(Pos p, ExprPtr o, std::string n) : Expr(ExprKind::Method, p), obj(std::move(o)), name(std::move(n)) {} +}; + +struct BlockStmt; +// try f(x): if f fails, the current function fails with the same error +struct TryExpr : Expr { + ExprPtr call; + TryExpr(Pos p, ExprPtr c) : Expr(ExprKind::Try, p), call(std::move(c)) {} +}; +// f(x) or fallback, f(x) or { ...err... } +struct OrElseExpr : Expr { + ExprPtr call; + ExprPtr fallback; // or a value + std::unique_ptr block; // or a block that sees `err` + OrElseExpr(Pos p, ExprPtr c) : Expr(ExprKind::OrElse, p), call(std::move(c)) {} + ~OrElseExpr() override; +}; + +// ---------- statements ---------- + +enum class StmtKind { VarDecl, Assign, Expr, If, While, For, ForEach, Return, Break, Continue, Block, Defer }; + +struct Stmt { + StmtKind kind; + Pos pos; + Stmt(StmtKind k, Pos p) : kind(k), pos(p) {} + virtual ~Stmt() = default; +}; +using StmtPtr = std::unique_ptr; + +struct BlockStmt : Stmt { + std::vector body; + Pos end; // the closing '}' + explicit BlockStmt(Pos p) : Stmt(StmtKind::Block, p) {} +}; +using BlockPtr = std::unique_ptr; +inline OrElseExpr::~OrElseExpr() = default; + +struct VarDeclStmt : Stmt { + bool hasType; // `int x = 5` vs `x := 5` + Type type; + std::string name; + Pos namePos; + ExprPtr init; // may be null only when hasType + VarDeclStmt(Pos p) : Stmt(StmtKind::VarDecl, p) {} +}; +struct AssignStmt : Stmt { + ExprPtr target; // a variable, field, element or p.value + char op; // '=', '+', '-', '*', '/', '%' + ExprPtr value; + AssignStmt(Pos p) : Stmt(StmtKind::Assign, p) {} +}; +struct ExprStmt : Stmt { + ExprPtr expr; + ExprStmt(Pos p, ExprPtr e) : Stmt(StmtKind::Expr, p), expr(std::move(e)) {} +}; +struct IfStmt : Stmt { + ExprPtr cond; + BlockPtr then; + StmtPtr otherwise; // null, BlockStmt, or IfStmt (else if) + IfStmt(Pos p) : Stmt(StmtKind::If, p) {} +}; +struct WhileStmt : Stmt { + ExprPtr cond; + BlockPtr body; + WhileStmt(Pos p) : Stmt(StmtKind::While, p) {} +}; +struct ForStmt : Stmt { + std::string var; + Pos varPos; + ExprPtr from, to; // for var in from..to (to is exclusive) + BlockPtr body; + ForStmt(Pos p) : Stmt(StmtKind::For, p) {} +}; +struct ForEachStmt : Stmt { + std::string var; + Pos varPos; + std::string var2; // for i, x in list / for k, v in map ("" = one variable) + Pos var2Pos; + ExprPtr list; // for var in list (an array, a str or a map) + BlockPtr body; + ForEachStmt(Pos p) : Stmt(StmtKind::ForEach, p) {} +}; +struct ReturnStmt : Stmt { + ExprPtr value; // may be null + ReturnStmt(Pos p) : Stmt(StmtKind::Return, p) {} +}; +struct BreakStmt : Stmt { + explicit BreakStmt(Pos p) : Stmt(StmtKind::Break, p) {} +}; +struct ContinueStmt : Stmt { + explicit ContinueStmt(Pos p) : Stmt(StmtKind::Continue, p) {} +}; +struct DeferStmt : Stmt { // defer : runs when the block ends + StmtPtr body; + DeferStmt(Pos p, StmtPtr s) : Stmt(StmtKind::Defer, p), body(std::move(s)) {} +}; + +// ---------- top level ---------- + +struct Param { + Type type; + std::string name; + Pos pos; // the type + Pos namePos; // the name +}; + +struct FnDecl { + Pos pos; + Pos namePos; + std::string name; + std::string recv; // fn Point.move(...): "Point" (a method; `self` is the Point it is called on) + Pos recvPos; + Type ret; // Void when there is no `-> type` + bool fallible = false; // -> int! / -> ! : can fail with an error + std::vector params; + BlockPtr body; +}; + +struct Field { + Type type; + std::string name; + ExprPtr init; // default value, may be null + Pos pos; + Pos namePos; +}; + +struct StructDecl { + Pos pos; + Pos namePos; + std::string name; + std::vector fields; +}; + +struct Import { + Pos pos; + std::string path; // "stdio.h" (C header, isC) or "math" (Finch module) + bool isC = true; +}; + +struct Link { + Pos pos; + std::string lib; // "glfw" -> libglfw.so; "helpers.c" / ".o" / ".a" -> a file next to the .fch file +}; + +// One .fch file. +struct Program { + std::string module; // "" for the main file, else the module's name + std::string path; + std::vector imports; + std::vector links; + std::vector structs; + std::vector fns; +}; diff --git a/src/builtins_doc.h b/src/builtins_doc.h new file mode 100644 index 0000000..05d2687 --- /dev/null +++ b/src/builtins_doc.h @@ -0,0 +1,80 @@ +#pragma once +// One description of every built-in function and method, shared by the language server +// (hover, completion, signature help). + +struct BuiltinDoc { + const char *name; + const char *signature; + const char *doc; +}; + +inline const BuiltinDoc kBuiltins[] = { + {"print", "print(a, b, ...)", "Prints the values separated by spaces, then a new line. Works with every type."}, + {"input", "input(str question = \"\") -> str", "Shows the question and reads one line typed by the user, without the newline."}, + {"read_file", "read_file(str path) -> str", "The whole file as text. Stops the program if it can't be read, unless handled: read_file(p) or { ... }, try read_file(p)."}, + {"write_file", "write_file(str path, str text) -> bool", "Writes (replaces) the file. true if it worked; with or / try, the reason it didn't."}, + {"file_exists", "file_exists(str path) -> bool", "Is there a file at this path?"}, + {"delete_file", "delete_file(str path) -> bool", "Deletes the file. true if it worked; with or / try, the reason it didn't."}, + {"error", "error(str message)", "The failure a fallible function returns: return error(\"...\"). The caller handles it with or / try."}, + {"shell", "shell(str command) -> int", "Runs a command in the system's shell and gives back its exit code."}, + {"exit", "exit(int code)", "Ends the program right away with this exit code."}, + {"addr", "addr(x) -> ptr[T]", "A pointer to a variable, field or element. addr(function) gives C a callback."}, + {"new", "new(value) -> ptr[T]", "Puts a copy of the value on the heap. Give it back with free(...)."}, + {"free", "free(ptr p)", "Gives back memory from new(...) (or from C), freeing what the value owns."}, + {"str", "str(x) -> str", "Turns a number, bool, char, []u8 or C char pointer into text."}, + {"int", "int(x) -> int", "Converts to a whole number: cuts off fractions, parses text (stops the program if it isn't a number, unless handled: int(s) or 0)."}, + {"float", "float(x) -> float", "Converts to a decimal number; parses text (int(s) or 0.0 handles bad text)."}, + {"char", "char(int n) -> char", "The character with this code."}, + {"bool", "bool(int n) -> bool", "true for any number but 0."}, + {"ptr", "ptr(x) -> ptr", "An untyped pointer: from a typed pointer, or from a number (an address or offset for C)."}, +}; + +inline const BuiltinDoc kArrayMethods[] = { + {"len", ".len -> int", "The number of elements."}, + {"ptr", ".ptr -> ptr[T]", "The address of the first element, for C."}, + {"push", "push(T x)", "Adds x at the end."}, + {"pop", "pop() -> T", "Removes the last element and gives it back."}, + {"insert", "insert(int i, T x)", "Puts x at position i, moving the rest."}, + {"remove", "remove(int i) -> T", "Removes position i and gives it back."}, + {"clear", "clear()", "Removes everything."}, + {"resize", "resize(int n)", "Makes the array n long; new elements are zero."}, + {"find", "find(T x) -> int", "The index of x, or -1."}, + {"contains", "contains(T x) -> bool", "Is x in the array?"}, + {"sort", "sort()", "Sorts in place (numbers, chars, str)."}, + {"reverse", "reverse()", "Reverses in place."}, + {"slice", "slice(int start, int end) -> []T", "A new array with the elements start to end-1."}, + {"join", "join(str sep) -> str", "For []str: one text with sep between the parts."}, +}; + +inline const BuiltinDoc kStrMethods[] = { + {"len", ".len -> int", "The number of bytes."}, + {"ptr", ".ptr -> ptr[char]", "The address of the text, for C (valid while the str lives)."}, + {"sub", "sub(int start, int end) -> str", "The part from start to end-1."}, + {"find", "find(str t) -> int", "Where t starts, or -1."}, + {"contains", "contains(str t) -> bool", "Does the text contain t?"}, + {"starts_with", "starts_with(str t) -> bool", "Does the text start with t?"}, + {"ends_with", "ends_with(str t) -> bool", "Does the text end with t?"}, + {"split", "split(str sep) -> []str", "The parts between each sep; split(\"\") gives single characters."}, + {"trim", "trim() -> str", "Without spaces and newlines at both ends."}, + {"upper", "upper() -> str", "With a-z changed to A-Z."}, + {"lower", "lower() -> str", "With A-Z changed to a-z."}, + {"replace", "replace(str from, str to) -> str", "Every from replaced by to."}, + {"repeat", "repeat(int n) -> str", "The text n times."}, + {"bytes", "bytes() -> []u8", "The bytes of the text."}, +}; + +inline const BuiltinDoc kMapMethods[] = { + {"len", ".len -> int", "The number of keys."}, + {"has", "has(K key) -> bool", "Is the key in the map?"}, + {"get", "get(K key, V default) -> V", "The value for key, or default if the key isn't there."}, + {"remove", "remove(K key) -> bool", "Removes the key and its value; true if it was there."}, + {"clear", "clear()", "Removes everything."}, + {"keys", "keys() -> []K", "The keys, in the order they were added."}, + {"values", "values() -> []V", "The values, in the order their keys were added."}, +}; + +inline const char *kKeywords[] = {"fn", "return", "if", "else", "while", "for", "in", "break", "continue", "true", + "false", "null", "import", "link", "struct", "defer", "or", "try", "self"}; + +inline const char *kTypeNames[] = {"int", "float", "bool", "char", "str", "ptr", "map", "i8", "i16", "i32", "i64", + "u8", "u16", "u32", "u64", "f32", "f64"}; diff --git a/src/cimport.cpp b/src/cimport.cpp new file mode 100644 index 0000000..df4d263 --- /dev/null +++ b/src/cimport.cpp @@ -0,0 +1,373 @@ +#include "cimport.h" +#include "error.h" +#include "target.h" + +#include + +#include +#include +#include +#include +#include + +namespace { + +// Ask the system C compiler where it looks for headers (and, on macOS, frameworks), so we find +// the same stdio.h it would. Returns ready -isystem / -iframework arguments. +std::vector systemIncludeArgs() { + std::string output; + capture(g_target.cc + " -E -v -x c " + nullDevice(), output); + std::vector dirs; + std::stringstream lines(output); + bool inList = false; + for (std::string l; std::getline(lines, l);) { + if (!l.empty() && l.back() == '\r') l.pop_back(); + l += "\n"; + if (l.rfind("#include <...> search starts here:", 0) == 0) { inList = true; continue; } + if (l.rfind("End of search list.", 0) == 0) break; + if (!inList) continue; + size_t a = l.find_first_not_of(' '); + size_t z = l.find_last_not_of(" \n"); + if (a == std::string::npos) continue; + std::string d = l.substr(a, z - a + 1); + // macOS: "/…/System/Library/Frameworks (framework directory)" holds and friends + if (d.size() > 22 && d.compare(d.size() - 22, 22, " (framework directory)") == 0) + dirs.push_back("-iframework" + d.substr(0, d.size() - 22)); + else + dirs.push_back("-isystem" + d); + } + return dirs; +} + +std::string str(CXString s) { + std::string out = clang_getCString(s) ? clang_getCString(s) : ""; + clang_disposeString(s); + return out; +} + +// Where a C type is used decides how `char *` looks in Finch: in function signatures it is +// a `str`; inside structs, globals and behind pointers it stays a raw `ptr[char]`. +enum class Ctx { Signature, Data }; + +struct Importer { + CImports &out; + CXTranslationUnit tu = nullptr; + std::string header; + std::map recordNames; // record USR -> Finch name (typedef wins) + std::map defining; // USR -> 1 while its fields are being mapped + int anon = 0; + + explicit Importer(CImports &o) : out(o) {} + + // The Finch name of a C record: its typedef name, its tag, or a made-up one. + std::string recordName(CXType t) { + CXCursor decl = clang_getTypeDeclaration(t); + std::string usr = str(clang_getCursorUSR(decl)); + auto it = recordNames.find(usr); + if (it != recordNames.end()) return it->second; + std::string name = str(clang_getCursorSpelling(decl)); + if (name.empty() || name.find(' ') != std::string::npos) name = "anon_struct_" + std::to_string(++anon); + recordNames[usr] = name; + return name; + } + + // Fill out.structs[name] for a complete record; returns its name, or "" if it can't be one. + std::string defineRecord(CXType t) { + t = clang_getCanonicalType(t); + CXCursor decl = clang_getTypeDeclaration(t); + std::string usr = str(clang_getCursorUSR(decl)); + std::string name = recordName(t); + if (out.structs.count(name) || defining.count(usr)) return name; + long long size = clang_Type_getSizeOf(t); + if (size < 0) return ""; // incomplete (opaque) struct + defining[usr] = 1; + + CStruct s; + s.name = name; + s.size = size; + s.align = clang_Type_getAlignOf(t); + if (clang_getCursorKind(decl) == CXCursor_UnionDecl) s.unsupported = "is a C union"; + struct Ctx2 { Importer *self; CStruct *s; } c2{this, &s}; + clang_Type_visitFields(t, [](CXCursor field, CXClientData data) -> CXVisitorResult { + auto &c = *static_cast(data); + CField f; + f.name = str(clang_getCursorSpelling(field)); + CXType ft = clang_getCanonicalType(clang_getCursorType(field)); + f.offset = clang_Cursor_getOffsetOfField(field) / 8; + f.size = clang_Type_getSizeOf(ft); + f.align = clang_Type_getAlignOf(ft); + std::string why; + if (clang_Cursor_isBitField(field)) { + c.s->unsupported = "has bit fields"; + f.hidden = true; + } else if (ft.kind == CXType_Record && + clang_getCursorKind(clang_getTypeDeclaration(ft)) == CXCursor_UnionDecl) { + f.hidden = true; // unions are kept as opaque bytes + } else if (!c.self->mapType(ft, f.type, why, Ctx::Data)) { + f.hidden = true; + } + if (f.hidden) c.s->hasHidden = true; + if (f.name.empty()) f.hidden = true; + c.s->fields.push_back(f); + return CXVisit_Continue; + }, &c2); + defining.erase(usr); + out.structs[name] = s; + return name; + } + + // C type -> Finch type. Returns false (with a reason) if Finch can't express it. + bool mapType(CXType t, Type &res, std::string &why, Ctx ctx) { + t = clang_getCanonicalType(t); + long long size = clang_Type_getSizeOf(t); + auto sized = [&](bool isSigned) { + switch (size) { + case 1: res = isSigned ? Type::I8 : Type::U8; return true; + case 2: res = isSigned ? Type::I16 : Type::U16; return true; + case 4: res = isSigned ? Type::I32 : Type::U32; return true; + case 8: res = isSigned ? Type::I64 : Type::U64; return true; + } + why = "uses a " + std::to_string(size * 8) + "-bit number"; + return false; + }; + + switch (t.kind) { + case CXType_Void: res = Type::Void; return true; + case CXType_Bool: res = Type::Bool; return true; + case CXType_Char_S: + case CXType_Char_U: res = Type::Char; return true; + case CXType_SChar: + case CXType_Short: + case CXType_Int: + case CXType_Long: + case CXType_LongLong: return sized(true); + case CXType_UChar: + case CXType_UShort: + case CXType_UInt: + case CXType_ULong: + case CXType_ULongLong: return sized(false); + case CXType_Enum: return sized(true); + case CXType_Float: res = Type::F32; return true; + case CXType_Double: res = Type::F64; return true; + case CXType_Pointer: { + CXType pointee = clang_getCanonicalType(clang_getPointeeType(t)); + if ((pointee.kind == CXType_Char_S || pointee.kind == CXType_Char_U) && ctx == Ctx::Signature) { + res = Type::Str; // char* in a signature is a C string + return true; + } + Type inner; + std::string ignored; + if (pointee.kind == CXType_Void || pointee.kind == CXType_FunctionProto || + pointee.kind == CXType_FunctionNoProto || !mapType(pointee, inner, ignored, Ctx::Data) || + inner.kind == Type::Void || inner.kind == Type::Fixed) + res = Type::Ptr; // an opaque `ptr` you can pass around + else + res = Type::ptrTo(inner); + return true; + } + case CXType_Record: { + if (clang_getCursorKind(clang_getTypeDeclaration(t)) == CXCursor_UnionDecl) { + why = "uses a C union by value"; + return false; + } + std::string name = defineRecord(t); + if (name.empty()) { + why = "uses an incomplete C struct by value"; + return false; + } + res = Type(Type::Named); + res.name = name; + res.module = "C"; + return true; + } + case CXType_ConstantArray: { + Type inner; + if (!mapType(clang_getArrayElementType(t), inner, why, Ctx::Data)) return false; + res = Type(Type::Fixed); + res.elem = std::make_shared(inner); + res.count = clang_getArraySize(t); + return true; + } + case CXType_LongDouble: why = "uses long double"; return false; + default: why = "uses the C type '" + str(clang_getTypeSpelling(t)) + "'"; return false; + } + } + + // Simple #defines: a single number, maybe negative, maybe in parentheses. + bool macroValue(CXCursor c, CConst &res) { + CXToken *toks; + unsigned n; + clang_tokenize(tu, clang_getCursorExtent(c), &toks, &n); + std::vector parts; + for (unsigned k = 1; k < n; k++) { // token 0 is the macro's name + if (clang_getTokenKind(toks[k]) == CXToken_Comment) continue; + parts.push_back(str(clang_getTokenSpelling(tu, toks[k]))); + } + clang_disposeTokens(tu, toks, n); + + while (parts.size() >= 2 && parts.front() == "(" && parts.back() == ")") { + parts.erase(parts.begin()); + parts.pop_back(); + } + bool neg = false; + if (parts.size() == 2 && parts[0] == "-") { + neg = true; + parts.erase(parts.begin()); + } + if (parts.size() != 1) return false; + const std::string &lit = parts[0]; + if (lit.empty() || !(std::isdigit((unsigned char)lit[0]) || lit[0] == '.')) return false; + + bool isFloat = lit.find_first_of(".eE") != std::string::npos && lit.rfind("0x", 0) != 0; + char *end; + if (isFloat) { + res.type = Type::F64; + res.f = std::strtod(lit.c_str(), &end); + if (neg) res.f = -res.f; + } else { + res.type = Type::I64; + res.i = (long long)std::strtoull(lit.c_str(), &end, 0); // C rules: 0x.., 0755 + if (neg) res.i = -res.i; + } + for (; *end; end++) // allow suffixes: 10UL, 1.0f + if (!std::strchr("uUlLfF", *end)) return false; + return true; + } + + void visitTop(CXCursor c) { + std::string name = str(clang_getCursorSpelling(c)); + switch (clang_getCursorKind(c)) { + case CXCursor_TypedefDecl: { + // typedef struct {...} Name; -> the struct is called Name in Finch + CXType u = clang_getCanonicalType(clang_getTypedefDeclUnderlyingType(c)); + if (u.kind == CXType_Record) { + std::string usr = str(clang_getCursorUSR(clang_getTypeDeclaration(u))); + // prefer the typedef name, unless the struct is already known under its tag + auto it = recordNames.find(usr); + bool used = it != recordNames.end() && out.structs.count(it->second); + if (!used && !out.structs.count(name)) recordNames[usr] = name; + } + break; + } + case CXCursor_FunctionDecl: { + if (out.fns.count(name)) break; + CFunc f; + f.name = name; + f.header = header; + if (clang_Cursor_getStorageClass(c) == CX_SC_Static) { + f.unsupported = "is a static inline C function (it has no code to link against)"; + out.fns[name] = f; + break; + } + CXType ft = clang_getCanonicalType(clang_getCursorType(c)); + if (ft.kind == CXType_FunctionNoProto) { + f.unsupported = "has no parameter list in its C declaration"; + out.fns[name] = f; + break; + } + std::string why; + if (!mapType(clang_getResultType(ft), f.ret, why, Ctx::Signature)) f.unsupported = why; + int n = clang_getNumArgTypes(ft); + for (int k = 0; k < n && f.unsupported.empty(); k++) { + Type t; + if (!mapType(clang_getArgType(ft, k), t, why, Ctx::Signature)) f.unsupported = why; + f.params.push_back(t); + } + f.variadic = clang_isFunctionTypeVariadic(ft); + out.fns[name] = f; + break; + } + case CXCursor_VarDecl: { + if (clang_Cursor_getStorageClass(c) != CX_SC_Extern || out.globals.count(name)) break; + CGlobal g; + std::string why; + if (mapType(clang_getCursorType(c), g.type, why, Ctx::Data)) out.globals[name] = g; + break; + } + case CXCursor_StructDecl: + if (clang_isCursorDefinition(c) && !name.empty() && name.find(' ') == std::string::npos) { + std::string usr = str(clang_getCursorUSR(c)); + if (!recordNames.count(usr)) recordNames[usr] = name; + } + break; + case CXCursor_EnumDecl: + clang_visitChildren(c, [](CXCursor k, CXCursor, CXClientData d) { + static_cast(d)->visitTop(k); + return CXChildVisit_Continue; + }, this); + break; + case CXCursor_EnumConstantDecl: { + CConst k; + k.type = Type::I64; + k.i = clang_getEnumConstantDeclValue(c); + out.consts.emplace(name, k); + break; + } + case CXCursor_MacroDefinition: { + if (clang_Cursor_isMacroBuiltin(c) || clang_Cursor_isMacroFunctionLike(c)) break; + CConst k; + if (macroValue(c, k)) out.consts.emplace(name, k); + break; + } + default: break; + } + } +}; + +} // namespace + +CImports importHeaders(const std::vector &imports, const std::vector &dirs) { + CImports out; + bool any = false; + for (const Import &im : imports) any |= im.isC; + if (!any) return out; + + // parse for the target system: sizes (long is 32 bits on Windows) and headers differ + std::vector args = {"-x", "c", "-std=gnu11", "--target=" + g_target.triple.str()}; + if (g_target.windows) args.push_back("-D_USE_MATH_DEFINES"); // M_PI and friends, as on Linux + for (const std::string &d : dirs) args.push_back("-I" + d); + for (const std::string &d : systemIncludeArgs()) args.push_back(d); + std::vector argv; + for (const std::string &a : args) argv.push_back(a.c_str()); + + Importer imp(out); + CXIndex index = clang_createIndex(0, 0); + for (const Import &im : imports) { + if (!im.isC) continue; + std::string src = "#include \"" + im.path + "\"\n"; + CXUnsavedFile file = {"finch_import.c", src.c_str(), (unsigned long)src.size()}; + CXTranslationUnit tu = nullptr; + CXErrorCode err = clang_parseTranslationUnit2( + index, "finch_import.c", argv.data(), (int)argv.size(), &file, 1, + CXTranslationUnit_DetailedPreprocessingRecord | CXTranslationUnit_SkipFunctionBodies, &tu); + if (err != CXError_Success || !tu) failAt(im.pos.file, im.pos.line, im.pos.col, "couldn't read C header '" + im.path + "'"); + + for (unsigned k = 0; k < clang_getNumDiagnostics(tu); k++) { + CXDiagnostic d = clang_getDiagnostic(tu, k); + if (clang_getDiagnosticSeverity(d) >= CXDiagnostic_Error) { + std::string msg = str(clang_getDiagnosticSpelling(d)); + clang_disposeDiagnostic(d); + if (msg.find("file not found") != std::string::npos) { + // "'GL/gl.h' file not found": it may be a header that this one includes + std::string missing = msg.substr(1, msg.find('\'', 1) - 1); + if (missing == im.path) + failAt(im.pos.file, im.pos.line, im.pos.col, "can't find the C header '" + im.path + "'"); + failAt(im.pos.file, im.pos.line, im.pos.col, "can't find the C header '" + missing + "', which '" + im.path + + "' includes (is its library's development package installed?)"); + } + failAt(im.pos.file, im.pos.line, im.pos.col, "C header '" + im.path + "' has an error: " + msg); + } + clang_disposeDiagnostic(d); + } + + imp.tu = tu; + imp.header = im.path; + clang_visitChildren(clang_getTranslationUnitCursor(tu), [](CXCursor c, CXCursor, CXClientData d) { + static_cast(d)->visitTop(c); + return CXChildVisit_Continue; + }, &imp); + clang_disposeTranslationUnit(tu); + } + clang_disposeIndex(index); + return out; +} diff --git a/src/cimport.fch b/src/cimport.fch deleted file mode 100644 index 09d4031..0000000 --- a/src/cimport.fch +++ /dev/null @@ -1,569 +0,0 @@ -// C headers, read through libclang, written in Finch. -// -// What `import "stdio.h"` teaches the compiler: the C functions, the constants (enum values and -// plain #define numbers), the extern variables (stdout) and the structs. The same job as -// src/cimport.cpp, done by calling libclang's C API through Finch's own C import -- which is -// what makes this the part that closes the bootstrap: to compile this file the self-hosted -// compiler has to read libclang's headers with this very code. -// -// C structs by value appear in types as the named type `module "C"`. -import ast -import host -import "clang-c/Index.h" -link "clang" - -struct CFunc { - str name - str header // the import it came from - ast.Type ret - []ast.Type params - bool variadic - str unsupported // non-empty: why Finch can't call it (yet) -} - -struct CConst { // enum values and simple #define numbers - bool isFloat - int i - float f - str text // a float as written, so no digits are lost: 3.14159265358979323846 -} - -struct CField { - str name - ast.Type ty - int offset // bytes - int size - int align - bool hidden // unions, bit fields, unmappable types: kept for layout only -} - -struct CStruct { - str name - []CField fields - int size - int align - str unsupported // why it can't be used by value (pointers to it still work) - bool hasHidden -} - -struct CImports { - map[str]CFunc fns - map[str]CConst consts - map[str]ast.Type globals - map[str]CStruct structs - []str structOrder // the order they were defined in -} - -// A header to read: the path as written, and where it was written, for error messages. -struct Header { - str path - str where -} - -// Where a C type is used decides how `char *` looks in Finch: in function signatures it is a -// `str`; inside structs, globals and behind pointers it stays a raw `ptr[char]`. -struct Mapped { - ast.Type ty - str why - bool ok -} - -struct Importer { - CImports out - ptr tu - str header - map[str]str recordNames // record USR -> Finch name (a typedef name wins) - map[str]bool defining // USR -> true while its fields are being mapped - int anon -} - -fn text(CXString s) -> str { - out := clang_getCString(s) - clang_disposeString(s) - return out -} - -fn ok(ast.Type t) -> Mapped { - return Mapped(ty: t, ok: true) -} - -fn no(str why) -> Mapped { - return Mapped(why: why, ok: false) -} - -fn fixed(ast.Type elem, int count) -> ast.Type { - t := ast.Type(kind: "fixed", count: count) - t.elem.push(elem) - return t -} - -// ---------- the system's header folders ---------- - -// Ask the system C compiler where it looks for headers, so we find the same stdio.h it would. -fn systemIncludeArgs(str cc) -> []str { - []str dirs - tmp := host.tempDir() + "/finch_cc_dirs_" + str(host.pid()) + ".txt" - empty := host.tempDir() + "/finch_empty_" + str(host.pid()) + ".c" - write_file(empty, "") - host.run(cc + " -E -v -x c " + host.quote(empty) + " 2> " + host.quote(tmp) + " > " + host.nullDevice()) - host.remove(empty) - if !file_exists(tmp) { - return dirs - } - inList := false - for line in read_file(tmp).split("\n") { - l := line.trim() - if l.starts_with("#include <...> search starts here:") { - inList = true - continue - } - if l.starts_with("End of search list.") { - break - } - if !inList || l.len == 0 { - continue - } - // macOS: "/.../Frameworks (framework directory)" - if l.ends_with(" (framework directory)") { - dirs.push("-iframework" + l.sub(0, l.len - 22)) - } else { - dirs.push("-isystem" + l) - } - } - host.remove(tmp) - return dirs -} - -// ---------- records ---------- - -// The Finch name of a C record: its typedef name, its tag, or a made-up one. -fn recordName(ptr[Importer] imp, CXType t) -> str { - decl := clang_getTypeDeclaration(t) - usr := text(clang_getCursorUSR(decl)) - if imp.recordNames.has(usr) { - return imp.recordNames[usr] - } - name := text(clang_getCursorSpelling(decl)) - if name.len == 0 || name.contains(" ") { - imp.anon += 1 - name = "anon_struct_" + str(imp.anon) - } - imp.recordNames[usr] = name - return name -} - -// Fill out.structs[name] for a complete record; returns its name, or "" if it can't be one. -fn defineRecord(ptr[Importer] imp, CXType type) -> str { - t := clang_getCanonicalType(type) - decl := clang_getTypeDeclaration(t) - usr := text(clang_getCursorUSR(decl)) - name := recordName(imp, t) - if imp.out.structs.has(name) || imp.defining.has(usr) { - return name - } - size := int(clang_Type_getSizeOf(t)) - if size < 0 { - return "" // incomplete (opaque) struct - } - imp.defining[usr] = true - s := CStruct(name: name, size: size, align: int(clang_Type_getAlignOf(t))) - if clang_getCursorKind(decl) == CXCursor_UnionDecl { - s.unsupported = "is a C union" - } - // the fields are collected by a callback that gets the importer and the struct through one pointer - ctx := FieldCtx(imp: imp, s: addr(s)) - clang_Type_visitFields(t, addr(visitField), addr(ctx)) - imp.defining.remove(usr) - imp.out.structs[name] = s - imp.out.structOrder.push(name) - return name -} - -struct FieldCtx { - ptr[Importer] imp - ptr[CStruct] s -} - -fn visitField(CXCursor field, ptr data) -> i32 { - ptr[FieldCtx] c = data - f := CField(name: text(clang_getCursorSpelling(field))) - ft := clang_getCanonicalType(clang_getCursorType(field)) - f.offset = int(clang_Cursor_getOffsetOfField(field)) / 8 - f.size = int(clang_Type_getSizeOf(ft)) - f.align = int(clang_Type_getAlignOf(ft)) - if clang_Cursor_isBitField(field) != 0 { - c.s.unsupported = "has bit fields" - f.hidden = true - } else if ft.kind == CXType_Record && clang_getCursorKind(clang_getTypeDeclaration(ft)) == CXCursor_UnionDecl { - f.hidden = true // unions are kept as opaque bytes - } else { - m := mapType(c.imp, ft, false, false) - if m.ok { - f.ty = m.ty - } else { - f.hidden = true - } - } - if f.hidden { - c.s.hasHidden = true - } - if f.name.len == 0 { - f.hidden = true - } - c.s.fields.push(f) - return CXVisit_Continue -} - -// ---------- types ---------- - -fn sized(int size, bool signed) -> Mapped { - if size == 1 { - if signed { - return ok(ast.simple("i8")) - } - return ok(ast.simple("u8")) - } - if size == 2 { - if signed { - return ok(ast.simple("i16")) - } - return ok(ast.simple("u16")) - } - if size == 4 { - if signed { - return ok(ast.simple("i32")) - } - return ok(ast.simple("u32")) - } - if size == 8 { - if signed { - return ok(ast.simple("int")) - } - return ok(ast.simple("u64")) - } - return no("uses a " + str(size * 8) + "-bit number") -} - -// C type -> Finch type. Not ok (with a reason) if Finch can't express it. -// `signature`: a char * is a str (a function's parameters and result); anywhere else it stays a ptr[char]. -// A parameter that is a plain `char *` (not const) is a buffer C writes into, and stays a ptr[char]; -// only `const char *` is text going in. A result that is a char * is always text coming out. -fn mapType(ptr[Importer] imp, CXType type, bool signature, bool param) -> Mapped { - t := clang_getCanonicalType(type) - size := int(clang_Type_getSizeOf(t)) - k := t.kind - if k == CXType_Void { - return ok(ast.simple("void")) - } - if k == CXType_Bool { - return ok(ast.simple("bool")) - } - if k == CXType_Char_S || k == CXType_Char_U { - return ok(ast.simple("char")) - } - if k == CXType_SChar || k == CXType_Short || k == CXType_Int || k == CXType_Long || k == CXType_LongLong { - return sized(size, true) - } - if k == CXType_UChar || k == CXType_UShort || k == CXType_UInt || k == CXType_ULong || k == CXType_ULongLong { - return sized(size, false) - } - if k == CXType_Enum { - return sized(size, true) - } - if k == CXType_Float { - return ok(ast.simple("f32")) - } - if k == CXType_Double { - return ok(ast.simple("float")) - } - if k == CXType_Pointer { - pointee := clang_getCanonicalType(clang_getPointeeType(t)) - if (pointee.kind == CXType_Char_S || pointee.kind == CXType_Char_U) && signature { - if !param || clang_isConstQualifiedType(pointee) != 0 { - return ok(ast.simple("str")) // a C string - } - } - if pointee.kind == CXType_Void || pointee.kind == CXType_FunctionProto || pointee.kind == CXType_FunctionNoProto { - return ok(ast.simple("ptr")) // an opaque `ptr` you can pass around - } - inner := mapType(imp, pointee, false, false) - if !inner.ok || inner.ty.kind == "void" || inner.ty.kind == "fixed" { - return ok(ast.simple("ptr")) - } - return ok(ast.ptrTo(inner.ty)) - } - if k == CXType_Record { - if clang_getCursorKind(clang_getTypeDeclaration(t)) == CXCursor_UnionDecl { - return no("uses a C union by value") - } - name := defineRecord(imp, t) - if name.len == 0 { - return no("uses an incomplete C struct by value") - } - return ok(ast.Type(kind: "named", name: name, module: "C")) - } - if k == CXType_ConstantArray { - inner := mapType(imp, clang_getArrayElementType(t), false, false) - if !inner.ok { - return inner - } - return ok(fixed(inner.ty, int(clang_getArraySize(t)))) - } - if k == CXType_LongDouble { - return no("uses long double") - } - return no("uses the C type '" + text(clang_getTypeSpelling(t)) + "'") -} - -// ---------- #define numbers ---------- - -struct Number { - CConst c - bool ok -} - -// "0x1F", "010", "10UL" -> the value, and whether the text was a whole number -fn parseInt(str lit) -> Number { - s := lit - base := 10 - if s.starts_with("0x") || s.starts_with("0X") { - base = 16 - s = s.sub(2, s.len) - } else if s.len > 1 && s[0] == '0' { - base = 8 - s = s.sub(1, s.len) - } - n := 0 - seen := false - i := 0 - while i < s.len { - c := s[i] - d := 99 - if c >= '0' && c <= '9' { - d = int(c) - int('0') - } else if c >= 'a' && c <= 'f' { - d = int(c) - int('a') + 10 - } else if c >= 'A' && c <= 'F' { - d = int(c) - int('A') + 10 - } - if d >= base { - break - } - n = n * base + d - seen = true - i += 1 - } - // what is left may only be suffixes: 10UL - while i < s.len { - if !"uUlL".contains(str(s[i])) { - return Number() - } - i += 1 - } - if !seen && base != 8 { - return Number() - } - return Number(c: CConst(i: n), ok: true) -} - -// Simple #defines: a single number, maybe negative, maybe in parentheses. -fn macroValue(ptr[Importer] imp, CXCursor c) -> Number { - ptr[CXToken] tokens = null - u32 n = 0 - clang_tokenize(imp.tu, clang_getCursorExtent(c), addr(tokens), addr(n)) - []str parts - for k in 1..int(n) { // token 0 is the macro's name - if clang_getTokenKind(tokens[k]) == CXToken_Comment { - continue - } - parts.push(text(clang_getTokenSpelling(imp.tu, tokens[k]))) - } - clang_disposeTokens(imp.tu, tokens, n) - - while parts.len >= 2 && parts[0] == "(" && parts[parts.len - 1] == ")" { - parts.remove(0) - parts.pop() - } - neg := false - if parts.len == 2 && parts[0] == "-" { - neg = true - parts.remove(0) - } - if parts.len != 1 { - return Number() - } - lit := parts[0] - if lit.len == 0 || !((lit[0] >= '0' && lit[0] <= '9') || lit[0] == '.') { - return Number() - } - isFloat := (lit.contains(".") || lit.contains("e") || lit.contains("E")) && !lit.starts_with("0x") - if isFloat { - body := lit - while body.len > 0 && "fFlL".contains(str(body[body.len - 1])) { - body = body.sub(0, body.len - 1) - } - v := float(body) or { - return Number() - } - if neg { - v = 0.0 - v - } - return Number(c: CConst(isFloat: true, f: v, text: body), ok: true) - } - r := parseInt(lit) - if r.ok && neg { - r.c.i = 0 - r.c.i - } - return r -} - -// ---------- the top level ---------- - -fn visitTop(CXCursor c, CXCursor parent, ptr data) -> i32 { - ptr[Importer] imp = data - visit(imp, c) - return CXChildVisit_Continue -} - -fn visit(ptr[Importer] imp, CXCursor c) { - name := text(clang_getCursorSpelling(c)) - kind := clang_getCursorKind(c) - if kind == CXCursor_TypedefDecl { - // typedef struct {...} Name; -> the struct is called Name in Finch - u := clang_getCanonicalType(clang_getTypedefDeclUnderlyingType(c)) - if u.kind == CXType_Record { - usr := text(clang_getCursorUSR(clang_getTypeDeclaration(u))) - // prefer the typedef name, unless the struct is already known under its tag - used := imp.recordNames.has(usr) && imp.out.structs.has(imp.recordNames[usr]) - if !used && !imp.out.structs.has(name) { - imp.recordNames[usr] = name - } - } - } else if kind == CXCursor_FunctionDecl { - if imp.out.fns.has(name) { - return - } - f := CFunc(name: name, header: imp.header) - if clang_Cursor_getStorageClass(c) == CX_SC_Static { - f.unsupported = "is a static inline C function (it has no code to link against)" - imp.out.fns[name] = f - return - } - ft := clang_getCanonicalType(clang_getCursorType(c)) - if ft.kind == CXType_FunctionNoProto { - f.unsupported = "has no parameter list in its C declaration" - imp.out.fns[name] = f - return - } - r := mapType(imp, clang_getResultType(ft), true, false) - if r.ok { - f.ret = r.ty - } else { - f.unsupported = r.why - } - n := int(clang_getNumArgTypes(ft)) - for k in 0..n { - if f.unsupported.len > 0 { - break - } - p := mapType(imp, clang_getArgType(ft, u32(k)), true, true) - if p.ok { - f.params.push(p.ty) - } else { - f.unsupported = p.why - } - } - f.variadic = clang_isFunctionTypeVariadic(ft) != 0 - imp.out.fns[name] = f - } else if kind == CXCursor_VarDecl { - if clang_Cursor_getStorageClass(c) != CX_SC_Extern || imp.out.globals.has(name) { - return - } - g := mapType(imp, clang_getCursorType(c), false, false) - if g.ok { - imp.out.globals[name] = g.ty - } - } else if kind == CXCursor_StructDecl { - if clang_isCursorDefinition(c) != 0 && name.len > 0 && !name.contains(" ") { - usr := text(clang_getCursorUSR(c)) - if !imp.recordNames.has(usr) { - imp.recordNames[usr] = name - } - } - } else if kind == CXCursor_EnumDecl { - clang_visitChildren(c, addr(visitTop), imp) - } else if kind == CXCursor_EnumConstantDecl { - if !imp.out.consts.has(name) { - imp.out.consts[name] = CConst(i: int(clang_getEnumConstantDeclValue(c))) - } - } else if kind == CXCursor_MacroDefinition { - if clang_Cursor_isMacroBuiltin(c) != 0 || clang_Cursor_isMacroFunctionLike(c) != 0 { - return - } - v := macroValue(imp, c) - if v.ok && !imp.out.consts.has(name) { - imp.out.consts[name] = v.c - } - } -} - -// Read every header in `headers`; `dirs` are searched first for "local.h" headers. -// `target` is the LLVM triple the program is built for ("" = this system): sizes and headers depend on it. -fn importHeaders([]Header headers, []str dirs, str target, bool windows, str ccFor) -> CImports! { - imp := Importer() - if headers.len == 0 { - return imp.out - } - []str args = ["-x", "c", "-std=gnu11"] - if target.len > 0 { - args.push("--target=" + target) - } - if windows { - args.push("-D_USE_MATH_DEFINES") // M_PI and friends, as on Linux - } - for d in dirs { - args.push("-I" + d) - } - for d in systemIncludeArgs(ccFor) { - args.push(d) - } - []ptr[char] argv - for i in 0..args.len { - argv.push(args[i].ptr) - } - index := clang_createIndex(0, 0) - for h in headers { - src := "#include \"" + h.path + "\"\n" - file := host.unsavedFile("finch_import.c", src) - ptr tu = null - flags := CXTranslationUnit_DetailedPreprocessingRecord | CXTranslationUnit_SkipFunctionBodies - err := clang_parseTranslationUnit2(index, "finch_import.c", argv.ptr, i32(argv.len), addr(file), 1, u32(flags), addr(tu)) - if err != CXError_Success || tu == null { - return error(h.where + ": error: couldn't read C header '" + h.path + "'") - } - nd := int(clang_getNumDiagnostics(tu)) - for k in 0..nd { - d := clang_getDiagnostic(tu, u32(k)) - if clang_getDiagnosticSeverity(d) >= CXDiagnostic_Error { - msg := text(clang_getDiagnosticSpelling(d)) - clang_disposeDiagnostic(d) - if msg.contains("file not found") { - // "'GL/gl.h' file not found": it may be a header that this one includes - missing := msg.sub(1, msg.sub(1, msg.len).find("'") + 1) - if missing == h.path { - return error(h.where + ": error: can't find the C header '" + h.path + "'") - } - return error(h.where + ": error: can't find the C header '" + missing + "', which '" + h.path + "' includes (is its library's development package installed?)") - } - return error(h.where + ": error: C header '" + h.path + "' has an error: " + msg) - } - clang_disposeDiagnostic(d) - } - imp.tu = tu - imp.header = h.path - clang_visitChildren(clang_getTranslationUnitCursor(tu), addr(visitTop), addr(imp)) - clang_disposeTranslationUnit(tu) - } - clang_disposeIndex(index) - return imp.out -} diff --git a/src/cimport.h b/src/cimport.h new file mode 100644 index 0000000..fe4be0d --- /dev/null +++ b/src/cimport.h @@ -0,0 +1,56 @@ +#pragma once + +#include "ast.h" + +#include +#include +#include +#include + +// What Finch learned from `import "something.h"`. +// C structs by value appear in types as Named{name, module "C"}. + +struct CFunc { + std::string name; + std::string header; // the import it came from + Type ret; + std::vector params; + bool variadic = false; + std::string unsupported; // non-empty: why Finch can't call it (yet) +}; + +struct CConst { // enum values and simple #define numbers + Type type; + long long i = 0; + double f = 0; +}; + +struct CGlobal { // extern variables like stdout + Type type; +}; + +struct CField { + std::string name; + Type type; + long long offset = 0; // bytes + long long size = 0, align = 1; + bool hidden = false; // unions, bitfields, unmappable types: kept for layout only +}; + +struct CStruct { + std::string name; + std::vector fields; + long long size = 0, align = 1; + std::string unsupported; // why it can't be used by value (pointers to it still work) + bool hasHidden = false; +}; + +struct CImports { + std::unordered_map fns; + std::unordered_map consts; + std::unordered_map globals; + std::map structs; +}; + +// `dirs`: folders searched first for "local.h" headers (the .fch files' folders). +CImports importHeaders(const std::vector &imports, const std::vector &dirs); diff --git a/src/codegen.cpp b/src/codegen.cpp new file mode 100644 index 0000000..e0b4906 --- /dev/null +++ b/src/codegen.cpp @@ -0,0 +1,1505 @@ +// Code generation, part 1: the program, statements, scopes and expressions. +// Types, ownership and printing live in codegen_types.cpp; calls and built-ins in +// codegen_builtins.cpp; the C calling convention in abi.cpp. + +#include "codegen_impl.h" +#include "builtins_doc.h" + +using namespace llvm; + +namespace finch { + +Codegen::Codegen(LLVMContext &c, const std::vector &ps, const CImports &ci, TargetMachine &tm, bool dbg) + : ctx(c), b(c), mod(std::make_unique("finch", c)), progs(ps), cimports(ci), debug(dbg) { + mod->setTargetTriple(tm.getTargetTriple()); + mod->setDataLayout(tm.createDataLayout()); + dl = &mod->getDataLayout(); + scopes.reserve(256); + if (debug) { + di = std::make_unique(*mod); + for (const SourceFile &f : g_files) { + std::string path = f.path; + size_t slash = path.find_last_of('/'); + std::string dir = slash == std::string::npos ? "." : path.substr(0, slash); + std::string name = slash == std::string::npos ? path : path.substr(slash + 1); + diFiles.push_back(di->createFile(name, dir)); + } + diUnit = di->createCompileUnit(dwarf::DW_LANG_C, diFiles[0], "finch " FINCH_VERSION, false, "", 0); + mod->addModuleFlag(Module::Warning, "Debug Info Version", DEBUG_METADATA_VERSION); + if (tm.getTargetTriple().isWindowsMSVCEnvironment()) + mod->addModuleFlag(Module::Warning, "CodeView", 1); // what Visual Studio and WinDbg read + else + mod->addModuleFlag(Module::Warning, "Dwarf Version", 5); + } +} + +std::unique_ptr Codegen::run() { + declareStructs(); + declareFns(); + if (!modules[""].fns.count("main")) failAt(0, 1, 1, "there is no main function (add 'fn main() { ... }')"); + for (auto &[name, m] : modules) + for (auto &[fname, fn] : m.fns) define(fn); + for (auto &[s, ms] : methods) + for (auto &[mname, fn] : ms) define(fn); + defineMainWrapper(); + if (di) di->finalize(); + + std::string err; + raw_string_ostream os(err); + if (verifyModule(*mod, &os)) { + std::fprintf(stderr, "internal compiler error (please report):\n%s\n", err.c_str()); + std::exit(2); + } + return std::move(mod); +} + +// ---------- declarations ---------- + +void Codegen::declareStructs() { + for (const Program &p : progs) { + ModuleScope &m = modules[p.module]; + for (const Import &im : p.imports) + if (!im.isC) m.imports.insert(im.path); + for (const StructDecl &d : p.structs) { + if (m.structs.count(d.name)) failAt(d.pos.file, d.pos.line, d.pos.col, "the struct '" + d.name + "' is defined twice"); + auto s = std::make_unique(); + s->name = d.name; + s->module = p.module; + s->decl = &d; + s->pos = d.pos; + s->llvm = StructType::create(ctx, "finch." + (p.module.empty() ? "" : p.module + ".") + d.name); + m.structs[d.name] = s.get(); + structStore.push_back(std::move(s)); + } + } + for (const auto &[name, cs] : cimports.structs) { + auto s = std::make_unique(); + s->name = name; + s->module = "C"; + s->isC = true; + s->cstruct = &cs; + s->unsupported = cs.unsupported; + s->llvm = StructType::create(ctx, "c." + name); + cStructs[name] = s.get(); + structStore.push_back(std::move(s)); + } + for (auto &s : structStore) resolveStruct(s.get()); + if (g_index) + for (auto &s : structStore) { + StructIndex si{s->module, s->name, {}, -1, 0, 0}; + if (s->decl) { + si.file = s->decl->namePos.file; + si.line = s->decl->namePos.line; + si.col = s->decl->namePos.col; + note(s->decl->namePos, s->name.size(), structHover(s.get()), s->decl->namePos); + } + for (auto &f : s->fields) { + si.fields.push_back({f.name, f.type.show()}); + if (s->decl) note(f.pos, f.name.size(), "```finch\n" + f.type.show() + " " + f.name + "\n```\nfield of `" + s->name + "`", f.pos); + } + g_index->structs.push_back(si); + } +} + +void Codegen::declareFns() { + for (const Program &p : progs) + for (const FnDecl &fn : p.fns) declare(p, fn); + + // Which methods change `self`? Calling one of them on something changes it too, so repeat until stable. + for (bool changed = true; changed;) { + changed = false; + for (auto &[s, ms] : methods) + for (auto &[name, f] : ms) + if (!f.mutatesSelf && mutates("self", *f.decl->body)) { + f.mutatesSelf = true; + mutatingMethods.insert(name); + changed = true; + } + } + // Owning parameters the function never changes are lent to it instead of copied. + auto borrow = [&](Fn &f) { + for (size_t i = 0; i < f.params.size(); i++) + f.borrowParam.push_back(owning(f.params[i]) && !mutates(f.decl->params[i].name, *f.decl->body)); + }; + for (auto &[name, m] : modules) + for (auto &[fname, f] : m.fns) borrow(f); + for (auto &[s, ms] : methods) + for (auto &[name, f] : ms) borrow(f); +} + +FType Codegen::structType(StructInfo *s) { + FType t(FType::Struct); + t.info = s; + t.name = s->name; + t.module = s->module == "C" ? "" : s->module; + return t; +} + +llvm::Type *Codegen::retType(const Fn &f) { + if (!f.fallible) return ty(f.ret); + llvm::Type *v = f.ret.kind == FType::Void ? (llvm::Type *)b.getInt8Ty() : ty(f.ret); + return StructType::get(ctx, {b.getInt1Ty(), v, ty(FType::Str)}); +} + +void Codegen::declare(const Program &p, const FnDecl &fn) { + ModuleScope &m = modules[p.module]; + Pos pos = fn.pos; + curModule = p.module; + StructInfo *recv = nullptr; + if (!fn.recv.empty()) { // fn Point.move(...) + Pos rp = fn.recvPos; + recv = findStruct("", fn.recv, false); + if (!recv) + failAt(rp.file, rp.line, rp.col, "there is no struct named '" + fn.recv + "' here (a method goes in the same file as its struct, or on a struct from C)"); + resolveStruct(recv); + for (auto &f : recv->fields) + if (f.name == fn.name && !f.hidden) + failAt(fn.namePos.file, fn.namePos.line, fn.namePos.col, "the struct " + recv->name + " already has a field named '" + fn.name + "'"); + if (methods[recv].count(fn.name)) failAt(pos.file, pos.line, pos.col, "the method " + fn.recv + "." + fn.name + " is defined twice"); + for (const Param &prm : fn.params) + if (prm.name == "self") + failAt(prm.namePos.file, prm.namePos.line, prm.namePos.col, "'self' is already the " + recv->name + " the method is called on"); + } else { + if (m.fns.count(fn.name)) failAt(pos.file, pos.line, pos.col, "function '" + fn.name + "' is defined twice"); + if (isBuiltin(fn.name)) failAt(pos.file, pos.line, pos.col, "'" + fn.name + "' is a built-in function, pick another name"); + if (m.structs.count(fn.name)) failAt(pos.file, pos.line, pos.col, "'" + fn.name + "' is already the name of a struct"); + } + + Fn f; + f.decl = &fn; + f.module = p.module; + f.recv = recv; + f.fallible = fn.fallible; + f.ret = resolve(fn.ret, pos); + for (const Param &prm : fn.params) f.params.push_back(resolve(prm.type, prm.pos)); + + bool isMain = p.module.empty() && fn.name == "main"; + if (isMain) { + bool argsOk = f.params.empty() || (f.params.size() == 1 && f.params[0] == FType::arrayOf(FType::Str)); + if (!argsOk) failAt(pos.file, pos.line, pos.col, "main takes no parameters, or the program's arguments: fn main([]str args)"); + FType::Kind r = f.ret.kind; + if (r != FType::Void && r != FType::I64 && r != FType::I32) + failAt(pos.file, pos.line, pos.col, "main returns nothing (fn main()) or an exit code (fn main() -> int)"); + } + + std::vector params; + if (recv) params.push_back(b.getPtrTy()); // self + for (size_t i = 0; i < f.params.size(); i++) params.push_back(ty(f.params[i])); + // User functions get a prefix so they never clash with C library names. + std::string name = "finch." + (p.module.empty() ? "" : p.module + ".") + (recv ? recv->name + "." : "") + fn.name; + f.llvm = Function::Create(FunctionType::get(retType(f), params, false), Function::InternalLinkage, name, mod.get()); + if (recv) methods[recv][fn.name] = f; + else m.fns[fn.name] = f; +} + +// The real C `main` calls the Finch one and turns its result into an exit code. +void Codegen::defineMainWrapper() { + Fn &fm = modules[""].fns["main"]; + Function *w = Function::Create(FunctionType::get(b.getInt32Ty(), {b.getInt32Ty(), b.getPtrTy()}, false), + Function::ExternalLinkage, "main", mod.get()); + b.SetInsertPoint(BasicBlock::Create(ctx, "entry", w)); + b.SetCurrentDebugLocation(DebugLoc()); + std::vector args; + Value *argsArr = nullptr; + if (!fm.params.empty()) { + Value *out = tmp(Constant::getNullValue(ty(fm.params[0]))); + b.CreateCall(rt("finch_args"), {out, w->getArg(0), w->getArg(1)}); + argsArr = b.CreateLoad(ty(fm.params[0]), out); + args.push_back(argsArr); + } + Value *r = b.CreateCall(fm.llvm, args); + if (argsArr) dropValue(argsArr, fm.params[0]); + if (fm.fallible) { // fn main() -> !: a failure is printed, and the exit code is 1 + BasicBlock *bad = BasicBlock::Create(ctx, "main.failed", w), *good = BasicBlock::Create(ctx, "main.ok", w); + b.CreateCondBr(b.CreateExtractValue(r, 0), good, bad); + b.SetInsertPoint(bad); + Value *msg = tmp(b.CreateExtractValue(r, 2)); + b.CreateCall(rt("finch_report_error"), {msg}); + b.CreateCall(rt("finch_str_drop"), {msg}); + b.CreateRet(b.getInt32(1)); + b.SetInsertPoint(good); + if (fm.ret.kind != FType::Void) r = b.CreateExtractValue(r, 1); + } + if (fm.ret.kind == FType::Void) b.CreateRet(b.getInt32(0)); + else b.CreateRet(b.CreateIntCast(r, b.getInt32Ty(), true)); +} + +void Codegen::define(Fn &fn) { + const FnDecl &d = *fn.decl; + curFn = &fn; + curModule = fn.module; + if (g_index) { + std::string shown = fn.recv ? fn.recv->name + "." + d.name : d.name; + FnInfo fi{fn.module, shown, signature(fn), "", {}, d.namePos.file, d.namePos.line, d.namePos.col, d.body->end.line}; + for (size_t i = 0; i < fn.params.size(); i++) fi.params.push_back(fn.params[i].show() + " " + d.params[i].name); + g_index->fns.push_back(fi); + note(d.namePos, d.name.size(), "```finch\n" + signature(fn) + "\n```", d.namePos); + } + Function *f = fn.llvm; + b.SetInsertPoint(BasicBlock::Create(ctx, "entry", f)); + if (di) { + DIFile *file = diFiles[d.pos.file]; + std::vector types{diType(fn.ret)}; + for (const FType &t : fn.params) types.push_back(diType(t)); + diFn = di->createFunction(file, d.name, f->getName(), file, d.pos.line, + di->createSubroutineType(di->getOrCreateTypeArray(types)), d.pos.line, + DINode::FlagPrototyped, DISubprogram::SPFlagDefinition); + f->setSubprogram(diFn); + } + setLoc(d.pos); + + scopes.clear(); + varOrder = 0; + pushScope(); + unsigned i = 0; + auto argIt = f->arg_begin(); + if (fn.recv) { // `self` is the caller's struct itself, reached through its address + Argument &selfArg = *argIt++; + selfArg.setName("self"); + Var v; + v.slot = &selfArg; + v.type = structType(fn.recv); + v.order = ++varOrder; + v.pos = d.recvPos; + scopes.back().vars["self"] = v; + if (g_index) g_index->vars.push_back({"self", v.type.show(), d.pos.file, d.pos.line, d.pos.col, d.pos.file, d.pos.line, d.body->end.line}); + if (di) { + FType pt = FType::ptrTo(v.type); + AllocaInst *a = slot(pt, "self.addr"); + b.CreateStore(&selfArg, a); + DILocalVariable *dv = di->createParameterVariable(diFn, "self", 1, diFiles[d.pos.file], d.pos.line, diType(pt)); + di->insertDeclare(a, dv, di->createExpression(), DILocation::get(ctx, d.pos.line, d.pos.col, diFn), b.GetInsertBlock()); + } + } + for (; argIt != f->arg_end(); ++argIt) { + Argument &arg = *argIt; + const Param &p = d.params[i]; + const FType &t = fn.params[i]; + arg.setName(p.name); + unsigned argNo = i + 1 + (fn.recv ? 1 : 0); + if (owning(t) && !fn.borrowParam[i]) addVar(p.namePos, p.name, t, copyValue(&arg, t), true, false, argNo); // changed inside: own a copy + else addVar(p.namePos, p.name, t, &arg, false, false, argNo); + i++; + } + blockBody(*d.body); + if (!terminated()) { + if (fn.ret.kind != FType::Void) + failAt(d.pos.file, d.pos.line, d.pos.col, "function '" + d.name + "' can reach its end without returning " + fn.ret.show()); + emitCleanups(0); + retValue(nullptr); + } + scopes.clear(); + diFn = nullptr; +} + +// ---------- scopes ---------- + +void Codegen::pushScope() { scopes.emplace_back(); } + +void Codegen::hold(const Value_ &v) { + if (v.fresh && v.v && !isa(v.v) && owning(v.type)) pending.push_back({v.v, v.type, false}); +} + +void Codegen::holdAddr(Value *addr, const FType &t) { + if (owning(t)) pending.push_back({addr, t, true}); +} + +void Codegen::dropPending(size_t downTo) { + for (size_t i = pending.size(); i-- > downTo;) { + if (pending[i].isAddr) dropAt(pending[i].v, pending[i].type); + else dropValue(pending[i].v, pending[i].type); + } +} + +void Codegen::popScope() { + if (!terminated()) emitScopeCleanups(scopes.size() - 1); + scopes.pop_back(); +} + +void Codegen::emitCleanups(size_t downTo) { + for (size_t i = scopes.size(); i-- > downTo;) emitScopeCleanups(i); +} + +// Drop the scope's variables and run its defers, newest first. +void Codegen::emitScopeCleanups(size_t idx) { + for (size_t k = scopes[idx].cleanups.size(); k-- > 0;) { + Cleanup c = scopes[idx].cleanups[k]; // a copy: emitting a defer may grow `scopes` + if (!c.isDefer) { + Var v = scopes[idx].vars.at(c.var); + if (!v.moved) dropAt(v.slot, v.type); + continue; + } + int savedLimit = deferLimit; + deferLimit = c.order; + inDefer++; + pushScope(); + stmt(*c.body); + popScope(); + inDefer--; + deferLimit = savedLimit; + } +} + +bool Codegen::terminated() { return b.GetInsertBlock()->getTerminator() != nullptr; } + +BasicBlock *Codegen::newBlock(const char *name) { + return BasicBlock::Create(ctx, name, b.GetInsertBlock()->getParent()); +} + +// Variables live in stack slots created at the top of the function; LLVM turns them into registers. +AllocaInst *Codegen::slot(const FType &t, const std::string &name) { + Function *f = b.GetInsertBlock()->getParent(); + IRBuilder<> entry(&f->getEntryBlock(), f->getEntryBlock().begin()); + AllocaInst *a = entry.CreateAlloca(ty(t), nullptr, name); + if (t.kind == FType::Struct && t.info->isC) a->setAlignment(Align(t.info->cstruct->align)); + return a; +} + +Var *Codegen::lookup(const std::string &name) { + for (size_t i = scopes.size(); i-- > 0;) { + auto found = scopes[i].vars.find(name); + if (found == scopes[i].vars.end()) continue; + if (deferLimit >= 0 && found->second.order > deferLimit) continue; // declared after the defer + return &found->second; + } + return nullptr; +} + +Var &Codegen::addVar(Pos p, const std::string &name, const FType &t, Value *init, bool owned, bool readonly, + unsigned argNo) { + // `err` of an inner `or` hides the outer one: f() or g() or err + if (lookup(name) && name != "err") failAt(p.file, p.line, p.col, "a variable named '" + name + "' already exists here"); + ModuleScope &m = modules[curModule]; + if (m.fns.count(name)) failAt(p.file, p.line, p.col, "'" + name + "' is already the name of a function"); + if (m.imports.count(name)) failAt(p.file, p.line, p.col, "'" + name + "' is already the name of an imported module"); + if (isBuiltin(name)) failAt(p.file, p.line, p.col, "'" + name + "' is a built-in name, pick another one"); + AllocaInst *s = slot(t, name); + b.CreateStore(init, s); + Var v; + v.slot = s; + v.type = t; + v.readonly = readonly; + v.owned = owned && owning(t); + v.order = ++varOrder; + v.pos = p; + if (v.owned) scopes.back().cleanups.push_back({false, name}); + if (g_index && name[0] != '$' && curFn) { + const FnDecl &d = *curFn->decl; + g_index->vars.push_back({name, t.show(), p.file, p.line, p.col, d.pos.file, d.pos.line, d.body->end.line}); + note(p, name.size(), "```finch\n" + t.show() + " " + name + "\n```", p); + } + if (di && name[0] != '$') { + DILocalVariable *dv = argNo ? di->createParameterVariable(diFn, name, argNo, diFiles[p.file], p.line, diType(t)) + : di->createAutoVariable(diFn, name, diFiles[p.file], p.line, diType(t)); + di->insertDeclare(s, dv, di->createExpression(), DILocation::get(ctx, p.line, p.col, diFn), b.GetInsertBlock()); + } + return scopes.back().vars[name] = v; +} + +// ---------- statements ---------- + +void Codegen::block(const BlockStmt &blk) { + pushScope(); + blockBody(blk); + popScope(); +} + +void Codegen::blockBody(const BlockStmt &blk) { + for (const StmtPtr &s : blk.body) { + if (terminated()) + failAt(s->pos.file, s->pos.line, s->pos.col, "this code can never run (it comes after return, break or continue)"); + stmt(*s); + } +} + +void Codegen::stmt(const Stmt &s) { + setLoc(s.pos); + switch (s.kind) { + case StmtKind::Block: block(static_cast(s)); break; + case StmtKind::VarDecl: varDecl(static_cast(s)); break; + case StmtKind::Assign: assign(static_cast(s)); break; + case StmtKind::Expr: { + const Expr &x = *static_cast(s).expr; + release(x.kind == ExprKind::OrElse ? orElse(static_cast(x), true) : expr(x)); + break; + } + case StmtKind::If: ifStmt(static_cast(s)); break; + case StmtKind::While: whileStmt(static_cast(s)); break; + case StmtKind::For: forStmt(static_cast(s)); break; + case StmtKind::ForEach: forEachStmt(static_cast(s)); break; + case StmtKind::Return: returnStmt(static_cast(s)); break; + case StmtKind::Break: jump(true, s.pos); break; + case StmtKind::Continue: jump(false, s.pos); break; + case StmtKind::Defer: { + auto &d = static_cast(s); + scopes.back().cleanups.push_back({true, "", d.body.get(), varOrder}); + break; + } + } +} + +void Codegen::jump(bool isBreak, Pos p) { + const char *word = isBreak ? "break" : "continue"; + if (inDefer) failAt(p.file, p.line, p.col, std::string(word) + " can't be used inside defer"); + if (loops.empty()) failAt(p.file, p.line, p.col, std::string(word) + " can only be used inside a loop"); + Loop l = loops.back(); + dropPending(l.pendingDepth); + emitCleanups(l.scopeDepth); + b.CreateBr(isBreak ? l.breakTo : l.continueTo); +} + +void Codegen::varDecl(const VarDeclStmt &s) { + Pos p = s.pos; + if (!s.hasType) { + Value_ v = expr(*s.init); + Pos ip = s.init->pos; + if (v.type.kind == FType::Void) failAt(ip.file, ip.line, ip.col, "this gives back nothing, so it can't be stored"); + if (v.type.kind == FType::Null) failAt(ip.file, ip.line, ip.col, "null needs a type, like: ptr[int] " + s.name + " = null"); + addVar(s.namePos, s.name, v.type, own(v), true); + return; + } + FType t = resolve(s.type, p); + if (t.kind == FType::Void) failAt(p.file, p.line, p.col, "a variable can't have the type 'nothing'"); + Value_ v = s.init ? coerce(exprWant(*s.init, t), t, s.init->pos, "'" + s.name + "'") : defaultValue(t, p); + addVar(s.namePos, s.name, t, own(v), true); +} + +void Codegen::assign(const AssignStmt &s) { + std::string root = rootVar(*s.target); + if (!root.empty()) { + Var *v = lookup(root); + if (v && v->readonly) failAt(s.pos.file, s.pos.line, s.pos.col, v->readonlyWhy); + if (!v && s.target->kind == ExprKind::Var && !cimports.globals.count(root)) + failAt(s.pos.file, s.pos.line, s.pos.col, "there is no variable named '" + root + "' (create it with " + root + " := ...)"); + } + std::string what = s.target->kind == ExprKind::Var ? "'" + root + "'" : "the value"; + + if (s.op == '=') { + // The right side first: it may move memory the target lives in (a.push(...) inside it). + Value_ v; + bool known = false; + FType want; + if (s.target->kind == ExprKind::Var) { + if (Var *var = lookup(root)) { want = var->type; known = true; } + } + v = known ? exprWant(*s.value, want) : expr(*s.value); + Held held(*this); + hold(v); // while the target is computed (a[try f()] = ...) + Place dst = place(*s.target, true); + v = coerce(v, dst.type, s.value->pos, what); + Value *nv = own(v); + if (owning(dst.type)) { + Value *old = b.CreateLoad(ty(dst.type), dst.addr); + b.CreateStore(nv, dst.addr); + dropValue(old, dst.type); + } else { + b.CreateStore(nv, dst.addr); + } + return; + } + BinOp op = s.op == '+' ? BinOp::Add : s.op == '-' ? BinOp::Sub : s.op == '*' ? BinOp::Mul + : s.op == '/' ? BinOp::Div : BinOp::Mod; + Value_ rhs = expr(*s.value); + Held held(*this); + hold(rhs); + Place dst = place(*s.target, true); + Value_ cur{b.CreateLoad(ty(dst.type), dst.addr), dst.type}; + Value_ v = coerce(arith(op, cur, rhs, s.pos), dst.type, s.pos, what); + Value *nv = own(v); + if (owning(dst.type)) { + b.CreateStore(nv, dst.addr); + dropValue(cur.v, dst.type); + } else { + b.CreateStore(nv, dst.addr); + } +} + +Value *Codegen::condition(const Expr &e) { return coerce(expr(e), FType::Bool, e.pos, "a condition").v; } + +void Codegen::ifStmt(const IfStmt &s) { + Value *cond = condition(*s.cond); + BasicBlock *thenBB = newBlock("then"); + BasicBlock *elseBB = s.otherwise ? newBlock("else") : nullptr; + BasicBlock *end = newBlock("endif"); + b.CreateCondBr(cond, thenBB, elseBB ? elseBB : end); + + b.SetInsertPoint(thenBB); + block(*s.then); + BasicBlock *last = b.GetInsertBlock(); + if (!terminated()) b.CreateBr(end); + + if (elseBB) { + b.SetInsertPoint(elseBB); + stmt(*s.otherwise); + last = b.GetInsertBlock(); + if (!terminated()) b.CreateBr(end); + } + continueAt(end, last); +} + +// Continue emitting into `bb`; if nothing jumps there, drop it and stay "after a return". +void Codegen::continueAt(BasicBlock *bb, BasicBlock *deadEnd) { + if (pred_empty(bb)) { + bb->eraseFromParent(); + b.SetInsertPoint(deadEnd); + } else { + b.SetInsertPoint(bb); + } +} + +void Codegen::whileStmt(const WhileStmt &s) { + BasicBlock *condBB = newBlock("while.cond"); + BasicBlock *body = newBlock("while.body"); + BasicBlock *end = newBlock("while.end"); + b.CreateBr(condBB); + + b.SetInsertPoint(condBB); + Value *cond = condition(*s.cond); + if (auto *c = dyn_cast(cond); c && c->isOne()) b.CreateBr(body); // while true + else b.CreateCondBr(cond, body, end); + + b.SetInsertPoint(body); + loops.push_back({condBB, end, scopes.size(), pending.size()}); + block(*s.body); + loops.pop_back(); + if (!terminated()) b.CreateBr(condBB); + continueAt(end, b.GetInsertBlock()); +} + +void Codegen::forStmt(const ForStmt &s) { + Value *from = coerce(expr(*s.from), FType::I64, s.from->pos, "the start of a range").v; + Value *to = coerce(expr(*s.to), FType::I64, s.to->pos, "the end of a range").v; + + pushScope(); + Var &iv = addVar(s.varPos, s.var, FType::I64, from, false, true); + iv.readonlyWhy = "the loop variable '" + s.var + "' can't be changed"; + Value *i = iv.slot; + + BasicBlock *condBB = newBlock("for.cond"); + BasicBlock *body = newBlock("for.body"); + BasicBlock *step = newBlock("for.step"); + BasicBlock *end = newBlock("for.end"); + b.CreateBr(condBB); + + b.SetInsertPoint(condBB); + b.CreateCondBr(b.CreateICmpSLT(b.CreateLoad(b.getInt64Ty(), i), to), body, end); + + b.SetInsertPoint(body); + loops.push_back({step, end, scopes.size(), pending.size()}); + block(*s.body); + loops.pop_back(); + if (!terminated()) b.CreateBr(step); + + b.SetInsertPoint(step); + b.CreateStore(b.CreateAdd(b.CreateLoad(b.getInt64Ty(), i), b.getInt64(1)), i); + b.CreateBr(condBB); + + b.SetInsertPoint(end); + popScope(); +} + +// for x in list: x is each element (or each char of a str); for i, x in list: also its index; +// for key in map / for key, value in map: in the order the keys were added +void Codegen::forEachStmt(const ForEachStmt &s) { + pushScope(); + LRef r = ref(*s.list); + Value *addr; + FType lt; + bool live = r.isPlace; // iterate the variable itself: re-read its length every round + if (r.isPlace) { + addr = r.pl.addr; + lt = r.pl.type; + } else { + lt = r.val.type; + addr = addVar(s.pos, "$list" + std::to_string(varOrder), lt, own(r.val), true).slot; + } + if (lt.kind == FType::Map) { + FType kt = *lt.key, vt = *lt.elem; + StructType *ET = mapEntryTy(lt); + llvm::Type *MT = ty(lt); + // if the loop changes the map, keys and values are copied, so they can't disappear under us + bool copyKV = live && mutates(rootVar(*s.list), *s.body); + Value *i = slot(FType::I64, "$i"); + b.CreateStore(b.getInt64(0), i); + // adding keys inside the loop could reorder the entries: that stops the program (removing is fine) + Value *adds = live ? b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(MT, addr, 6)) : nullptr; + BasicBlock *condBB = newBlock("map.cond"), *check = newBlock("map.check"), *body = newBlock("map.body"), + *step = newBlock("map.step"), *end = newBlock("map.end"); + b.CreateBr(condBB); + b.SetInsertPoint(condBB); + if (adds && mutates(rootVar(*s.list), *s.body)) { + BasicBlock *changed = newBlock("map.changed"), *same = newBlock("map.same"); + b.CreateCondBr(b.CreateICmpNE(b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(MT, addr, 6)), adds), changed, same); + b.SetInsertPoint(changed); + b.CreateCall(rt("finch_map_changed"), {fileName(s.pos), b.getInt64(s.pos.line)}); + b.CreateUnreachable(); + b.SetInsertPoint(same); + } + Value *iv = b.CreateLoad(b.getInt64Ty(), i); + b.CreateCondBr(b.CreateICmpSLT(iv, b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(MT, addr, 2))), check, end); + b.SetInsertPoint(check); + Value *entry = b.CreateInBoundsGEP(ET, b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(MT, addr, 0)), iv); + Value *hash = b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(ET, entry, 0)); + b.CreateCondBr(b.CreateICmpEQ(hash, b.getInt64(0)), step, body); // a removed entry + b.SetInsertPoint(body); + loops.push_back({step, end, scopes.size(), pending.size()}); + pushScope(); + std::string why = " can't be changed (to change the map, use m[key] = ...)"; + Value *kv = b.CreateLoad(ty(kt), b.CreateStructGEP(ET, entry, 1)); + Var &k = addVar(s.varPos, s.var, kt, copyKV ? copyValue(kv, kt) : kv, copyKV, true); + k.readonlyWhy = "the loop variable '" + s.var + "'" + why; + if (!s.var2.empty()) { + Value *vv = b.CreateLoad(ty(vt), b.CreateStructGEP(ET, entry, 2)); + Var &v = addVar(s.var2Pos, s.var2, vt, copyKV ? copyValue(vv, vt) : vv, copyKV, true); + v.readonlyWhy = "the loop variable '" + s.var2 + "'" + why; + } + block(*s.body); + popScope(); + loops.pop_back(); + if (!terminated()) b.CreateBr(step); + b.SetInsertPoint(step); + b.CreateStore(b.CreateAdd(b.CreateLoad(b.getInt64Ty(), i), b.getInt64(1)), i); + b.CreateBr(condBB); + b.SetInsertPoint(end); + popScope(); + return; + } + if (lt.kind != FType::Array && lt.kind != FType::Str && lt.kind != FType::Fixed) + failAt(s.list->pos.file, s.list->pos.line, s.list->pos.col, + "for ... in needs an array, a str or a map, but this is " + lt.show() + " (for a range of numbers write 0..n)"); + FType et = lt.kind == FType::Str ? FType(FType::Char) : *lt.elem; + // If the loop changes the list, each element is copied, so it can't disappear under us. + bool copyElems = live && owning(et) && mutates(rootVar(*s.list), *s.body); + + Value *i = slot(FType::I64, "$i"); + b.CreateStore(b.getInt64(0), i); + BasicBlock *condBB = newBlock("each.cond"); + BasicBlock *body = newBlock("each.body"); + BasicBlock *step = newBlock("each.step"); + BasicBlock *end = newBlock("each.end"); + b.CreateBr(condBB); + + b.SetInsertPoint(condBB); + Value *len = lt.kind == FType::Fixed ? (Value *)b.getInt64(lt.count) : b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(ty(lt), addr, 1)); + Value *iv = b.CreateLoad(b.getInt64Ty(), i); + b.CreateCondBr(b.CreateICmpSLT(iv, len), body, end); + + b.SetInsertPoint(body); + Value *elemAddr; + if (lt.kind == FType::Fixed) { + elemAddr = b.CreateInBoundsGEP(ty(lt), addr, {b.getInt64(0), iv}); + } else { + Value *data = b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(ty(lt), addr, 0)); + elemAddr = b.CreateInBoundsGEP(ty(et), data, iv); + } + Value *elem = b.CreateLoad(ty(et), elemAddr); + loops.push_back({step, end, scopes.size(), pending.size()}); + pushScope(); + std::string elemVar = s.var; + Pos elemPos = s.varPos; + if (!s.var2.empty()) { // for i, x in list + Var &index = addVar(s.varPos, s.var, FType::I64, iv, false, true); + index.readonlyWhy = "the loop variable '" + s.var + "' can't be changed"; + elemVar = s.var2; + elemPos = s.var2Pos; + } + Var &xv = addVar(elemPos, elemVar, et, copyElems ? copyValue(elem, et) : elem, copyElems, true); + xv.readonlyWhy = "the loop variable '" + elemVar + "' can't be changed (to change the list, use list[i] = ...)"; + block(*s.body); + popScope(); + loops.pop_back(); + if (!terminated()) b.CreateBr(step); + + b.SetInsertPoint(step); + b.CreateStore(b.CreateAdd(b.CreateLoad(b.getInt64Ty(), i), b.getInt64(1)), i); + b.CreateBr(condBB); + + b.SetInsertPoint(end); + popScope(); +} + +void Codegen::retValue(Value *v) { + if (!curFn->fallible) { + if (v) b.CreateRet(v); + else b.CreateRetVoid(); + return; + } + Value *r = Constant::getNullValue(curFn->llvm->getReturnType()); + r = b.CreateInsertValue(r, b.getInt1(true), 0); + if (v) r = b.CreateInsertValue(r, v, 1); + b.CreateRet(r); +} + +void Codegen::retError(Value *msg) { + Value *r = Constant::getNullValue(curFn->llvm->getReturnType()); + b.CreateRet(b.CreateInsertValue(r, msg, 2)); +} + +void Codegen::returnStmt(const ReturnStmt &s) { + const FnDecl &d = *curFn->decl; + if (inDefer) failAt(s.pos.file, s.pos.line, s.pos.col, "return can't be used inside defer"); + // return error("...") + if (s.value && s.value->kind == ExprKind::Call && static_cast(*s.value).callee == "error") { + auto &c = static_cast(*s.value); + if (!curFn->fallible) + failAt(c.pos.file, c.pos.line, c.pos.col, "'" + d.name + "' can't fail, so it can't return an error (make it fallible: -> " + + (curFn->ret.kind == FType::Void ? std::string("!") : curFn->ret.show() + "!") + ")"); + if (g_index) + for (const BuiltinDoc &bd : kBuiltins) + if (std::string(bd.name) == "error") note(c.pos, 5, "```finch\n" + std::string(bd.signature) + "\n```\n" + bd.doc); + checkArgs(c.args, c.argNames, 1, c.pos, "error"); + Value *msg = own(coerce(expr(*c.args[0]), FType::Str, c.args[0]->pos, "the error message")); + dropPending(0); + emitCleanups(0); + retError(msg); + return; + } + if (curFn->ret.kind == FType::Void) { + if (s.value) + failAt(s.value->pos.file, s.value->pos.line, s.value->pos.col, "'" + d.name + "' doesn't return a value (it has no '-> type')"); + dropPending(0); + emitCleanups(0); + retValue(nullptr); + return; + } + if (!s.value) failAt(s.pos.file, s.pos.line, s.pos.col, "'" + d.name + "' must return " + curFn->ret.show()); + + // `return local` moves the variable out instead of copying it. + if (s.value->kind == ExprKind::Var) { + const std::string &name = static_cast(*s.value).name; + for (size_t idx = scopes.size(); idx-- > 0;) { + auto it = scopes[idx].vars.find(name); + if (it == scopes[idx].vars.end()) continue; + if (it->second.owned && it->second.type == curFn->ret) { + Value *v = b.CreateLoad(ty(it->second.type), it->second.slot); + it->second.moved = true; + dropPending(0); + emitCleanups(0); + scopes[idx].vars[name].moved = false; + retValue(v); + return; + } + break; + } + } + Value_ v = coerce(exprWant(*s.value, curFn->ret), curFn->ret, s.value->pos, "the returned value"); + Value *out = own(v); + dropPending(0); + emitCleanups(0); + retValue(out); +} + +// ---------- mutation analysis (does a function or loop change a variable?) ---------- + +std::string Codegen::rootVar(const Expr &e) { + switch (e.kind) { + case ExprKind::Var: return static_cast(e).name; + case ExprKind::Member: return rootVar(*static_cast(e).obj); + case ExprKind::Index: return rootVar(*static_cast(e).obj); + default: return ""; + } +} + +bool Codegen::mutatesExpr(const std::string &name, const Expr &e) { + static const std::set changing = {"push", "pop", "insert", "remove", "clear", "resize", "sort", "reverse"}; + switch (e.kind) { + case ExprKind::Try: return mutatesExpr(name, *static_cast(e).call); + case ExprKind::OrElse: { + auto &x = static_cast(e); + return mutatesExpr(name, *x.call) || (x.fallback && mutatesExpr(name, *x.fallback)) || (x.block && mutates(name, *x.block)); + } + case ExprKind::MapLit: { + auto &x = static_cast(e); + for (size_t k = 0; k < x.keys.size(); k++) + if (mutatesExpr(name, *x.keys[k]) || mutatesExpr(name, *x.values[k])) return true; + return false; + } + case ExprKind::Unary: return mutatesExpr(name, *static_cast(e).operand); + case ExprKind::Binary: { + auto &x = static_cast(e); + return mutatesExpr(name, *x.lhs) || mutatesExpr(name, *x.rhs); + } + case ExprKind::Call: { + auto &c = static_cast(e); + if (c.callee == "addr" && c.args.size() == 1 && rootVar(*c.args[0]) == name) return true; + for (auto &a : c.args) + if (mutatesExpr(name, *a)) return true; + return false; + } + case ExprKind::Member: return mutatesExpr(name, *static_cast(e).obj); + case ExprKind::Index: { + auto &x = static_cast(e); + return mutatesExpr(name, *x.obj) || mutatesExpr(name, *x.index); + } + case ExprKind::ArrayLit: + for (auto &a : static_cast(e).elems) + if (mutatesExpr(name, *a)) return true; + return false; + case ExprKind::Method: { + auto &m = static_cast(e); + if ((changing.count(m.name) || mutatingMethods.count(m.name)) && rootVar(*m.obj) == name) return true; + if (mutatesExpr(name, *m.obj)) return true; + for (auto &a : m.args) + if (mutatesExpr(name, *a)) return true; + return false; + } + default: return false; + } +} + +bool Codegen::mutates(const std::string &name, const Stmt &s) { + auto e = [&](const ExprPtr &x) { return x && mutatesExpr(name, *x); }; + switch (s.kind) { + case StmtKind::Block: + for (auto &st : static_cast(s).body) + if (mutates(name, *st)) return true; + return false; + case StmtKind::VarDecl: return e(static_cast(s).init); + case StmtKind::Assign: { + auto &a = static_cast(s); + return rootVar(*a.target) == name || e(a.target) || e(a.value); + } + case StmtKind::Expr: return e(static_cast(s).expr); + case StmtKind::If: { + auto &x = static_cast(s); + return e(x.cond) || mutates(name, *x.then) || (x.otherwise && mutates(name, *x.otherwise)); + } + case StmtKind::While: { + auto &x = static_cast(s); + return e(x.cond) || mutates(name, *x.body); + } + case StmtKind::For: { + auto &x = static_cast(s); + return e(x.from) || e(x.to) || mutates(name, *x.body); + } + case StmtKind::ForEach: { + auto &x = static_cast(s); + return e(x.list) || mutates(name, *x.body); + } + case StmtKind::Return: return e(static_cast(s).value); + case StmtKind::Defer: return mutates(name, *static_cast(s).body); + default: return false; + } +} + +// ---------- expressions ---------- + +Value_ Codegen::exprWant(const Expr &e, const FType &want) { + if (e.kind == ExprKind::ArrayLit) return arrayLit(static_cast(e), &want); + if (e.kind == ExprKind::MapLit) return mapLit(static_cast(e), &want); + return expr(e); +} + +// ---------- errors as values ---------- + +// Emit a call that may fail; `failed` (i1) and `msg` (str) tell how it went. +Value_ Codegen::fallible(const Expr &call, Value *&failed, Value *&msg) { + Pos p = call.pos; + if (call.kind != ExprKind::Call && call.kind != ExprKind::Method) + failAt(p.file, p.line, p.col, "only a function call can fail; 'or' and 'try' go after one, like int(text) or 0"); + const Expr *savedTarget = fallibleTarget; + Value *savedFailed = fallibleFailed, *savedMsg = fallibleMsg; + fallibleTarget = &call; + fallibleFailed = fallibleMsg = nullptr; + Value_ v = expr(call); + failed = fallibleFailed; + msg = fallibleMsg; + fallibleTarget = savedTarget; + fallibleFailed = savedFailed; + fallibleMsg = savedMsg; + if (!failed) failAt(p.file, p.line, p.col, "this call can't fail, so it needs no 'or' or 'try'"); + return v; +} + +// try f(x): on failure, the current function fails with the same error +Value_ Codegen::tryExpr(const TryExpr &t) { + Pos p = t.pos; + if (inDefer) failAt(p.file, p.line, p.col, "try can't be used inside defer"); + if (!curFn->fallible) + failAt(p.file, p.line, p.col, "try passes the error on, so '" + curFn->decl->name + "' must be able to fail too (-> " + + (curFn->ret.kind == FType::Void ? std::string("!") : curFn->ret.show() + "!") + + "); or handle it here: ... or / ... or { ... }"); + Value *failed, *msg; + Value_ v = fallible(*t.call, failed, msg); + BasicBlock *bad = newBlock("try.failed"), *ok = newBlock("try.ok"); + b.CreateCondBr(failed, bad, ok); + b.SetInsertPoint(bad); + dropPending(0); // what the expressions around this `try` were holding + emitCleanups(0); + retError(msg); + b.SetInsertPoint(ok); + return v; +} + +// f(x) or fallback / f(x) or { ... err ... } +Value_ Codegen::orElse(const OrElseExpr &e, bool discard) { + Value *failed, *msg; + Value_ v = fallible(*e.call, failed, msg); + BasicBlock *bad = newBlock("or.failed"), *ok = newBlock("or.ok"); + b.CreateCondBr(failed, bad, ok); + b.SetInsertPoint(bad); + if (e.block) { + pushScope(); + addVar(e.block->pos, "err", FType::Str, msg, true); + blockBody(*e.block); + bool left = terminated(); + if (!left && v.type.kind != FType::Void && !discard) + failAt(e.block->end.file, e.block->end.line, e.block->end.col, + "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 )"); + popScope(); + if (discard && v.type.kind != FType::Void) { // read_file(p) or { ... } as a statement: drop the unused value + BasicBlock *join = newBlock("or.end"); + if (!left) b.CreateBr(join); + b.SetInsertPoint(ok); + release(v); + b.CreateBr(join); + b.SetInsertPoint(join); + return {nullptr, FType::Void}; + } + if (!left) b.CreateBr(ok); + b.SetInsertPoint(ok); + return v; + } + Pos fp = e.fallback->pos; + if (v.type.kind == FType::Void) + failAt(fp.file, fp.line, fp.col, "this call gives back no value, so there is nothing to replace; handle the failure with or { ... }"); + pushScope(); // the fallback can use the message too: f(x) or err + addVar(fp, "err", FType::Str, msg, true); + Value *fv = own(coerce(exprWant(*e.fallback, v.type), v.type, fp, "the value after 'or'")); + popScope(); + BasicBlock *badEnd = b.GetInsertBlock(); + BasicBlock *join = newBlock("or.end"); + b.CreateBr(join); + b.SetInsertPoint(ok); + b.CreateBr(join); + b.SetInsertPoint(join); + PHINode *phi = b.CreatePHI(ty(v.type), 2); + phi->addIncoming(fv, badEnd); + phi->addIncoming(v.v, ok); + return {phi, v.type, false, owning(v.type)}; +} + +Value_ Codegen::expr(const Expr &e) { + switch (e.kind) { + case ExprKind::Int: return {b.getInt64(static_cast(e).value), FType::I64, true}; + case ExprKind::Float: return {ConstantFP::get(b.getDoubleTy(), static_cast(e).value), FType::F64, true}; + case ExprKind::Bool: return {b.getInt1(static_cast(e).value), FType::Bool}; + case ExprKind::Char: return {b.getInt8(static_cast(e).value), FType::Char}; + case ExprKind::Str: return {strConst(static_cast(e).value), FType::Str, false, true}; + case ExprKind::Null: return {ConstantPointerNull::get(b.getPtrTy()), FType::Null}; + case ExprKind::Var: { + auto &v = static_cast(e); + if (!lookup(v.name)) { + auto c = cimports.consts.find(v.name); + if (c != cimports.consts.end()) { + note(e.pos, v.name.size(), "C constant `" + v.name + " = " + + (c->second.type.isFloat() ? std::to_string(c->second.f) : std::to_string(c->second.i)) + "`"); + if (c->second.type.isFloat()) return {ConstantFP::get(b.getDoubleTy(), c->second.f), FType::F64, true}; + return {b.getInt64(c->second.i), FType::I64, true}; + } + if (modules[curModule].imports.count(v.name)) + failAt(e.pos.file, e.pos.line, e.pos.col, "'" + v.name + "' is a module; use something from it, like " + v.name + ".name(...)"); + // C's standard streams are macros on some systems; the runtime knows them everywhere + if (!cimports.globals.count(v.name) && (v.name == "stdin" || v.name == "stdout" || v.name == "stderr") && + cimports.fns.count("fprintf")) { + int which = v.name == "stdin" ? 0 : v.name == "stdout" ? 1 : 2; + return {b.CreateCall(rt("finch_std_stream"), {b.getInt32(which)}), FType::Ptr}; + } + } + Place pl = place(e); + return {b.CreateLoad(ty(pl.type), pl.addr, v.name), pl.type}; + } + case ExprKind::Member: + case ExprKind::Index: { + LRef r = ref(e); + if (!r.isPlace) return r.val; + return {b.CreateLoad(ty(r.pl.type), r.pl.addr), r.pl.type}; + } + case ExprKind::Unary: return unary(static_cast(e)); + case ExprKind::Binary: return binary(static_cast(e)); + case ExprKind::Call: return call(static_cast(e)); + case ExprKind::Method: return method(static_cast(e)); + case ExprKind::ArrayLit: return arrayLit(static_cast(e), nullptr); + case ExprKind::MapLit: return mapLit(static_cast(e), nullptr); + case ExprKind::Try: return tryExpr(static_cast(e)); + case ExprKind::OrElse: return orElse(static_cast(e)); + } + return {nullptr, FType::Void}; +} + +Value_ Codegen::unary(const UnaryExpr &u) { + Pos p = u.pos; + Value_ v = expr(*u.operand); + if (u.op == '!') return {b.CreateNot(coerce(v, FType::Bool, u.operand->pos, "the value after '!'").v), FType::Bool}; + if (u.op == '~') { + if (!v.type.isInt()) failAt(p.file, p.line, p.col, "'~' flips the bits of a whole number, not of " + v.type.show()); + return {b.CreateNot(v.v), v.type}; + } + if (v.type.isSigned()) return {b.CreateNeg(v.v), v.type, v.literal}; + if (v.type.isFloat()) return {b.CreateFNeg(v.v), v.type, v.literal}; + if (v.type.isUnsigned()) failAt(p.file, p.line, p.col, v.type.show() + " can't be negative (it's unsigned)"); + failAt(p.file, p.line, p.col, "can't put '-' in front of " + v.type.show()); +} + +// An address for `e` if it has one (a variable, field, element, p.value); otherwise its value. +LRef Codegen::ref(const Expr &e, bool forWrite) { + switch (e.kind) { + case ExprKind::Var: { + auto &v = static_cast(e); + if (Var *var = lookup(v.name)) { + note(e.pos, v.name.size(), "```finch\n" + var->type.show() + " " + v.name + "\n```", var->pos); + return {true, {var->slot, var->type}, {}}; + } + if (cimports.globals.count(v.name)) return {true, {cGlobal(v.name), resolve(cimports.globals.at(v.name).type, e.pos)}, {}}; + return {false, {}, expr(e)}; + } + case ExprKind::Member: return member(static_cast(e), forWrite); + case ExprKind::Index: return index(static_cast(e), forWrite); + default: return {false, {}, expr(e)}; + } +} + +Place Codegen::place(const Expr &e, bool forWrite) { + if (e.kind == ExprKind::Var) { + auto &v = static_cast(e); + if (!lookup(v.name) && !cimports.globals.count(v.name)) + failAt(e.pos.file, e.pos.line, e.pos.col, "there is no variable named '" + v.name + "'"); + } + LRef r = ref(e, forWrite); + if (!r.isPlace) failAt(e.pos.file, e.pos.line, e.pos.col, "this is a temporary value, it can't be changed or pointed to"); + return r.pl; +} + +LRef Codegen::member(const MemberExpr &m, bool forWrite) { + Pos p = m.pos; + if (m.obj->kind == ExprKind::Var) { + const std::string &mn = static_cast(*m.obj).name; + if (!lookup(mn) && modules[curModule].imports.count(mn)) + failAt(p.file, p.line, p.col, "modules only have functions and structs; call it: " + mn + "." + m.field + "(...)"); + } + LRef obj = ref(*m.obj, forWrite); + FType t = obj.isPlace ? obj.pl.type : obj.val.type; + + // pointers: p.value is the target, p.field reaches through to a struct's field + if (t.isPtr()) { + Value *pv = obj.isPlace ? b.CreateLoad(b.getPtrTy(), obj.pl.addr) : obj.val.v; + if (!t.elem) failAt(p.file, p.line, p.col, "this ptr has no type, so Finch doesn't know what's inside (use ptr[int] etc.)"); + if (!isa(pv) && !isa(pv)) + panicIf(b.CreateIsNull(pv), "used ." + m.field + " on a null pointer", p); + // p.value is the target -- unless the target is a struct with its own field called `value` + bool structHasValue = false; + if (t.elem->kind == FType::Struct) + for (auto &f : t.elem->info->fields) structHasValue |= f.name == "value" && !f.hidden; + if (m.field == "value" && !structHasValue) return {true, {pv, *t.elem}, {}}; + if (t.elem->kind != FType::Struct) + failAt(p.file, p.line, p.col, "a " + t.show() + " only has '.value' (the thing it points to)"); + obj = {true, {pv, *t.elem}, {}}; + t = *t.elem; + } + + if (t.kind == FType::Map) { + if (m.field != "len") failAt(p.file, p.line, p.col, "a map has .len (the number of keys), not '." + m.field + "'"); + if (forWrite) failAt(p.file, p.line, p.col, ".len can't be changed directly (use m[key] = ..., remove or clear)"); + note(Pos{p.line, p.col + 1, p.file}, 3, "`.len -> int`: the number of keys"); + Value *len; + if (obj.isPlace) { + len = b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(ty(t), obj.pl.addr, 1)); + } else { + len = b.CreateExtractValue(obj.val.v, 1); + release(obj.val); + } + return {false, {}, {len, FType::I64}}; + } + if (t.kind == FType::Array || t.kind == FType::Str || t.kind == FType::Fixed) { + if (m.field == "len" || m.field == "ptr") + note(Pos{p.line, p.col + 1, p.file}, m.field.size(), + m.field == "len" ? "`.len -> int`: the number of " + std::string(t.kind == FType::Str ? "bytes" : "elements") + : "`.ptr`: the address of the first element, for C"); + if (m.field != "len" && m.field != "ptr") + failAt(p.file, p.line, p.col, (t.kind == FType::Str ? "a str" : "an array") + std::string(" has .len and .ptr, not '.") + m.field + "'"); + if (forWrite) failAt(p.file, p.line, p.col, "." + m.field + " can't be changed directly" + (t.kind == FType::Array ? " (use resize, push or pop)" : "")); + if (t.kind == FType::Fixed) { + if (m.field == "len") return {false, {}, {b.getInt64(t.count), FType::I64}}; + if (!obj.isPlace) failAt(p.file, p.line, p.col, ".ptr of a temporary value would point to nothing"); + return {false, {}, {obj.pl.addr, FType::ptrTo(*t.elem)}}; + } + Value *v = obj.isPlace ? b.CreateLoad(ty(t), obj.pl.addr) : obj.val.v; + if (m.field == "len") { + Value *len = b.CreateExtractValue(v, 1); + if (!obj.isPlace) release(obj.val); + return {false, {}, {len, FType::I64}}; + } + // a literal lives as long as the program; other temporaries are freed right after this expression + if (!obj.isPlace && obj.val.fresh && !isa(obj.val.v)) + failAt(p.file, p.line, p.col, ".ptr of a temporary value would point to freed memory"); + FType pt = t.kind == FType::Str ? FType::ptrTo(FType::Char) : FType::ptrTo(*t.elem); + return {false, {}, {t.kind == FType::Str ? cstr(v) : b.CreateExtractValue(v, 0), pt}}; + } + + if (t.kind != FType::Struct) failAt(p.file, p.line, p.col, t.show() + " has no fields (no '." + m.field + "')"); + StructInfo *s = t.info; + int idx = -1; + for (size_t k = 0; k < s->fields.size(); k++) + if (s->fields[k].name == m.field && !s->fields[k].hidden) idx = (int)k; + if (idx < 0) { + std::string names; + for (auto &f : s->fields) + if (!f.hidden) names += (names.empty() ? "" : ", ") + f.name; + failAt(p.file, p.line, p.col, "the struct " + t.show() + " has no field '" + m.field + "' (it has: " + names + ")"); + } + const StructInfo::F &f = s->fields[idx]; + note(Pos{p.line, p.col + 1, p.file}, m.field.size(), + "```finch\n" + f.type.show() + " " + m.field + "\n```\nfield of `" + s->name + "`", f.pos); + unsigned llvmIdx = f.llvmIndex; + if (obj.isPlace) return {true, {b.CreateStructGEP(s->llvm, obj.pl.addr, llvmIdx), f.type}, {}}; + // a field of a temporary struct: take it (copying if it owns memory), then drop the rest + Value *fv = b.CreateExtractValue(obj.val.v, llvmIdx); + Value_ out{fv, f.type}; + if (owning(f.type) && obj.val.fresh) out = {copyValue(fv, f.type), f.type, false, true}; + release(obj.val); + return {false, {}, out}; +} + +LRef Codegen::index(const IndexExpr &e, bool forWrite) { + Pos p = e.pos; + LRef obj = ref(*e.obj, forWrite); + FType t = obj.isPlace ? obj.pl.type : obj.val.type; + Held held(*this); + if (!obj.isPlace) hold(obj.val); // while the index is computed + if (t.kind == FType::Map) return mapIndex(e, obj, t, forWrite); + Value *i = coerce(expr(*e.index), FType::I64, e.index->pos, "an index").v; + + if (t.isPtr()) { // C-style: p[i], no bounds known + if (!t.elem) failAt(p.file, p.line, p.col, "this ptr has no type, so Finch doesn't know what's inside (use ptr[int] etc.)"); + Value *pv = obj.isPlace ? b.CreateLoad(b.getPtrTy(), obj.pl.addr) : obj.val.v; + panicIf(b.CreateIsNull(pv), "used [] on a null pointer", p); + return {true, {b.CreateInBoundsGEP(ty(*t.elem), pv, i), *t.elem}, {}}; + } + if (t.kind == FType::Fixed) { + boundsCheck(i, b.getInt64(t.count), p); + if (obj.isPlace) return {true, {b.CreateInBoundsGEP(ty(t), obj.pl.addr, {b.getInt64(0), i}), *t.elem}, {}}; + Value *a = tmp(obj.val.v); + return {false, {}, {b.CreateLoad(ty(*t.elem), b.CreateInBoundsGEP(ty(t), a, {b.getInt64(0), i})), *t.elem}}; + } + if (t.kind != FType::Array && t.kind != FType::Str) + failAt(p.file, p.line, p.col, "[ ] works on arrays, maps, str and pointers, not on " + t.show()); + FType et = t.kind == FType::Str ? FType(FType::Char) : *t.elem; + if (t.kind == FType::Str && forWrite) { + if (!obj.isPlace) failAt(p.file, p.line, p.col, "this is a temporary str, it can't be changed"); + b.CreateCall(rt("finch_str_own"), {obj.pl.addr}); // literals live in read-only memory: copy first + } + Value *v = obj.isPlace ? b.CreateLoad(ty(t), obj.pl.addr) : obj.val.v; + Value *len = b.CreateExtractValue(v, 1); + boundsCheck(i, len, p); + Value *addr = b.CreateInBoundsGEP(ty(et), b.CreateExtractValue(v, 0), i); + if (obj.isPlace) return {true, {addr, et}, {}}; + Value *ev = b.CreateLoad(ty(et), addr); + Value_ out{ev, et}; + if (owning(et) && obj.val.fresh) out = {copyValue(ev, et), et, false, true}; + release(obj.val); + return {false, {}, out}; +} + +Value_ Codegen::arrayLit(const ArrayLitExpr &a, const FType *want) { + Pos p = a.pos; + FType et; + if (want && want->kind == FType::Array) { + et = *want->elem; + } else if (a.elems.empty()) { + failAt(p.file, p.line, p.col, "an empty [] needs a type, like: []int nums = []"); + } else { + // numbers written in the code: if any has a dot, they are all floats + bool allNum = true, anyFloat = false; + for (auto &x : a.elems) { + const Expr *y = x.get(); + if (y->kind == ExprKind::Unary && static_cast(y)->op == '-') y = static_cast(y)->operand.get(); + if (y->kind == ExprKind::Float) anyFloat = true; + else if (y->kind != ExprKind::Int) allNum = false; + } + et = FType::Void; + if (allNum && anyFloat) et = FType::F64; + } + std::vector vals; + Held held(*this); + for (size_t k = 0; k < a.elems.size(); k++) { + Value_ v = et.kind == FType::Void ? exprWant(*a.elems[k], et) : exprWant(*a.elems[k], et); + if (et.kind == FType::Void) { + if (v.type.kind == FType::Void || v.type.kind == FType::Null) + failAt(a.elems[k]->pos.file, a.elems[k]->pos.line, a.elems[k]->pos.col, "an array element needs a value with a type"); + et = v.type; + } + v = coerce(v, et, a.elems[k]->pos, "every element of this array"); + vals.push_back(own(v)); + hold({vals.back(), et, false, true}); + } + FType at = FType::arrayOf(et); + Value *n = b.getInt64(vals.size()); + Value *data = vals.empty() ? (Value *)ConstantPointerNull::get(b.getPtrTy()) + : b.CreateCall(rt("finch_alloc"), {b.CreateMul(n, elemSize(et))}); + for (size_t k = 0; k < vals.size(); k++) b.CreateStore(vals[k], b.CreateInBoundsGEP(ty(et), data, b.getInt64(k))); + Value *arr = UndefValue::get(ty(at)); + arr = b.CreateInsertValue(arr, data, 0); + arr = b.CreateInsertValue(arr, n, 1); + arr = b.CreateInsertValue(arr, n, 2); + return {arr, at, false, true}; +} + +// ---------- operators ---------- + +static const char *opName(BinOp op) { + switch (op) { + case BinOp::Add: return "+"; + case BinOp::Sub: return "-"; + case BinOp::Mul: return "*"; + case BinOp::Div: return "/"; + case BinOp::Mod: return "%"; + case BinOp::BitAnd: return "&"; + case BinOp::BitOr: return "|"; + case BinOp::BitXor: return "^"; + case BinOp::Shl: return "<<"; + case BinOp::Shr: return ">>"; + case BinOp::Eq: return "=="; + case BinOp::NotEq: return "!="; + case BinOp::Less: return "<"; + case BinOp::LessEq: return "<="; + case BinOp::Greater: return ">"; + case BinOp::GreaterEq: return ">="; + case BinOp::And: return "&&"; + case BinOp::Or: return "||"; + } + return "?"; +} + +void Codegen::badOperands(BinOp op, const Value_ &l, const Value_ &r, Pos p) { + std::string msg = std::string("can't use '") + opName(op) + "' on " + l.type.show() + + (l.type == r.type ? "" : " and " + r.type.show()); + if (l.type.isInt() && r.type.isInt() && l.type != r.type) msg += " (convert one side, like " + l.type.show() + "(...))"; + if (l.type.kind == FType::Bool && (op == BinOp::BitAnd || op == BinOp::BitOr)) + msg += std::string(" (for true/false use '") + (op == BinOp::BitAnd ? "&&" : "||") + "')"; + else if ((l.type.isFloat() || r.type.isFloat()) && op >= BinOp::BitAnd && op <= BinOp::Shr) + msg += " (bit operators work on whole numbers only)"; + else if (op == BinOp::Add && (l.type.kind == FType::Str || r.type.kind == FType::Str)) + msg += " (turn the other side into text first: str(...))"; + else if ((l.type.kind == FType::Struct || l.type.kind == FType::Array) && (op == BinOp::Eq || op == BinOp::NotEq)) + msg += " (compare the parts one by one)"; + failAt(p.file, p.line, p.col, msg); +} + +// Bring both sides to one type: a number literal adapts to the other side, +// otherwise the smaller type grows into the bigger one. +bool Codegen::unify(Value_ &l, Value_ &r) { + if (l.type == r.type) return true; + if (l.type.isInt() && r.type.isInt()) { + auto *lc = l.literal ? dyn_cast(l.v) : nullptr; + auto *rc = r.literal ? dyn_cast(r.v) : nullptr; + if (lc && !rc && fits(lc, l.type, r.type)) { l = {intCast(l.v, l.type, r.type), r.type, true}; return true; } + if (rc && !lc && fits(rc, r.type, l.type)) { r = {intCast(r.v, r.type, l.type), l.type, true}; return true; } + if (widens(l.type, r.type)) { l = {intCast(l.v, l.type, r.type), r.type}; return true; } + if (widens(r.type, l.type)) { r = {intCast(r.v, r.type, l.type), l.type}; return true; } + return false; + } + if (l.type.isInt() && r.type.isFloat()) { l = {intToFloat(l.v, l.type, r.type), r.type, l.literal}; return true; } + if (l.type.isFloat() && r.type.isInt()) { r = {intToFloat(r.v, r.type, l.type), l.type, r.literal}; return true; } + if (l.type.isFloat() && r.type.isFloat()) { + if (l.type.kind == FType::F32) l = {b.CreateFPExt(l.v, b.getDoubleTy()), FType::F64}; + if (r.type.kind == FType::F32) r = {b.CreateFPExt(r.v, b.getDoubleTy()), FType::F64}; + return true; + } + return false; +} + +Value_ Codegen::arith(BinOp op, Value_ l, Value_ r, Pos p) { + Value_ v = arithOp(op, l, r, p); + v.literal = l.literal && r.literal && isa(v.v); + return v; +} + +Value_ Codegen::arithOp(BinOp op, Value_ l, Value_ r, Pos p) { + if (op == BinOp::Add && l.type.kind == FType::Str && r.type.kind == FType::Str) { + Value *out = tmp(Constant::getNullValue(ty(FType::Str))); + b.CreateCall(rt("finch_str_concat"), {out, tmp(l.v), tmp(r.v)}); + release(l); + release(r); + return {b.CreateLoad(ty(FType::Str), out), FType::Str, false, true}; + } + if (!unify(l, r)) badOperands(op, l, r, p); + if (l.type.isInt()) { + bool s = l.type.isSigned(); + switch (op) { + case BinOp::Add: return {b.CreateAdd(l.v, r.v), l.type}; + case BinOp::Sub: return {b.CreateSub(l.v, r.v), l.type}; + case BinOp::Mul: return {b.CreateMul(l.v, r.v), l.type}; + case BinOp::Div: + checkDivisor(l, r, p); + return {s ? b.CreateSDiv(l.v, r.v) : b.CreateUDiv(l.v, r.v), l.type}; + case BinOp::Mod: + checkDivisor(l, r, p); + return {s ? b.CreateSRem(l.v, r.v) : b.CreateURem(l.v, r.v), l.type}; + case BinOp::BitAnd: return {b.CreateAnd(l.v, r.v), l.type}; + case BinOp::BitOr: return {b.CreateOr(l.v, r.v), l.type}; + case BinOp::BitXor: return {b.CreateXor(l.v, r.v), l.type}; + case BinOp::Shl: return {b.CreateShl(l.v, r.v), l.type}; + case BinOp::Shr: return {s ? b.CreateAShr(l.v, r.v) : b.CreateLShr(l.v, r.v), l.type}; + default: break; + } + } + if (l.type.isFloat()) { + switch (op) { + case BinOp::Add: return {b.CreateFAdd(l.v, r.v), l.type}; + case BinOp::Sub: return {b.CreateFSub(l.v, r.v), l.type}; + case BinOp::Mul: return {b.CreateFMul(l.v, r.v), l.type}; + case BinOp::Div: return {b.CreateFDiv(l.v, r.v), l.type}; + case BinOp::Mod: return {b.CreateFRem(l.v, r.v), l.type}; + default: break; + } + } + badOperands(op, l, r, p); +} + +Value_ Codegen::compare(BinOp op, Value_ l, Value_ r, Pos p) { + bool equality = op == BinOp::Eq || op == BinOp::NotEq; + auto ptrLike = [](const FType &t) { return t.isPtr() || t.kind == FType::Null; }; + + if (ptrLike(l.type) || ptrLike(r.type)) { // pointers compare addresses + if (!equality || !ptrLike(l.type) || !ptrLike(r.type)) { + if (l.type.kind == FType::Str || r.type.kind == FType::Str) + failAt(p.file, p.line, p.col, "a str is never null; to check for empty text use s.len == 0"); + badOperands(op, l, r, p); + } + return {op == BinOp::Eq ? b.CreateICmpEQ(l.v, r.v) : b.CreateICmpNE(l.v, r.v), FType::Bool}; + } + + if (l.type.kind == FType::Str && r.type.kind == FType::Str) { + Value *res; + if (equality) { + Value *eq = b.CreateCall(rt("finch_str_eq"), {tmp(l.v), tmp(r.v)}); + res = op == BinOp::Eq ? b.CreateICmpNE(eq, b.getInt32(0)) : b.CreateICmpEQ(eq, b.getInt32(0)); + } else { + Value *c = b.CreateCall(rt("finch_str_cmp"), {tmp(l.v), tmp(r.v)}); + CmpInst::Predicate pr = op == BinOp::Less ? CmpInst::ICMP_SLT : op == BinOp::LessEq ? CmpInst::ICMP_SLE + : op == BinOp::Greater ? CmpInst::ICMP_SGT : CmpInst::ICMP_SGE; + res = b.CreateICmp(pr, c, b.getInt64(0)); + } + release(l); + release(r); + return {res, FType::Bool}; + } + + if (!unify(l, r)) badOperands(op, l, r, p); + if (l.type.isFloat()) { + CmpInst::Predicate pr; + switch (op) { + case BinOp::Eq: pr = CmpInst::FCMP_OEQ; break; + case BinOp::NotEq: pr = CmpInst::FCMP_UNE; break; + case BinOp::Less: pr = CmpInst::FCMP_OLT; break; + case BinOp::LessEq: pr = CmpInst::FCMP_OLE; break; + case BinOp::Greater: pr = CmpInst::FCMP_OGT; break; + default: pr = CmpInst::FCMP_OGE; break; + } + return {b.CreateFCmp(pr, l.v, r.v), FType::Bool}; + } + if (!l.type.isInt() && l.type.kind != FType::Char && l.type.kind != FType::Bool) badOperands(op, l, r, p); + if (l.type.kind == FType::Bool && !equality) badOperands(op, l, r, p); + bool s = l.type.isSigned(); + CmpInst::Predicate pr; + switch (op) { + case BinOp::Eq: pr = CmpInst::ICMP_EQ; break; + case BinOp::NotEq: pr = CmpInst::ICMP_NE; break; + case BinOp::Less: pr = s ? CmpInst::ICMP_SLT : CmpInst::ICMP_ULT; break; + case BinOp::LessEq: pr = s ? CmpInst::ICMP_SLE : CmpInst::ICMP_ULE; break; + case BinOp::Greater: pr = s ? CmpInst::ICMP_SGT : CmpInst::ICMP_UGT; break; + default: pr = s ? CmpInst::ICMP_SGE : CmpInst::ICMP_UGE; break; + } + return {b.CreateICmp(pr, l.v, r.v), FType::Bool}; +} + +// && and || only evaluate the right side when needed. +Value_ Codegen::logic(const BinaryExpr &e) { + bool isAnd = e.op == BinOp::And; + Value *l = condition(*e.lhs); + BasicBlock *from = b.GetInsertBlock(); + BasicBlock *rhsBB = newBlock(isAnd ? "and.rhs" : "or.rhs"); + BasicBlock *end = newBlock(isAnd ? "and.end" : "or.end"); + if (isAnd) b.CreateCondBr(l, rhsBB, end); + else b.CreateCondBr(l, end, rhsBB); + + b.SetInsertPoint(rhsBB); + Value *r = condition(*e.rhs); + BasicBlock *rhsEnd = b.GetInsertBlock(); + b.CreateBr(end); + + b.SetInsertPoint(end); + PHINode *phi = b.CreatePHI(b.getInt1Ty(), 2); + phi->addIncoming(b.getInt1(!isAnd), from); + phi->addIncoming(r, rhsEnd); + return {phi, FType::Bool}; +} + +Value_ Codegen::binary(const BinaryExpr &e) { + switch (e.op) { + case BinOp::And: + case BinOp::Or: return logic(e); + case BinOp::Eq: + case BinOp::NotEq: + case BinOp::Less: + case BinOp::LessEq: + case BinOp::Greater: + case BinOp::GreaterEq: { + Value_ l = expr(*e.lhs); + Held held(*this); + hold(l); + Value_ r = expr(*e.rhs); + return compare(e.op, l, r, e.pos); + } + default: { + Value_ l = expr(*e.lhs); + Held held(*this); + hold(l); + Value_ r = expr(*e.rhs); + return arith(e.op, l, r, e.pos); + } + } +} + +// ---------- language server index ---------- + +void Codegen::note(Pos at, size_t len, const std::string &hover, Pos def) { + if (!g_index || at.line <= 0) return; + SymRef r{at.file, at.line, at.col, (int)len, hover}; + if (def.line > 0) { + r.defFile = def.file; + r.defLine = def.line; + r.defCol = def.col; + } + g_index->refs.push_back(r); +} + +std::string Codegen::signature(const Fn &fn) { + std::string owner = fn.recv ? fn.recv->name + "." : fn.module.empty() ? "" : fn.module + "."; + std::string s = "fn " + owner + fn.decl->name + "("; + for (size_t i = 0; i < fn.params.size(); i++) s += (i ? ", " : "") + fn.params[i].show() + " " + fn.decl->params[i].name; + s += ")"; + if (fn.ret.kind != FType::Void) s += " -> " + fn.ret.show() + (fn.fallible ? "!" : ""); + else if (fn.fallible) s += " -> !"; + return s; +} + +std::string Codegen::structHover(StructInfo *s) { + std::string h = "```finch\nstruct " + s->name + " {\n"; + for (auto &f : s->fields) h += " " + f.type.show() + " " + f.name + "\n"; + return h + "}\n```" + (s->isC ? "\nfrom C" : ""); +} + +// ---------- debug info ---------- + +void Codegen::setLoc(Pos p) { + if (!di || !diFn) return; + b.SetCurrentDebugLocation(DILocation::get(ctx, p.line, p.col, diFn)); +} + +} // namespace finch + +std::unique_ptr generate(const std::vector &progs, const CImports &c, llvm::LLVMContext &ctx, + llvm::TargetMachine &tm, bool debug) { + return finch::Codegen(ctx, progs, c, tm, debug).run(); +} diff --git a/src/codegen.h b/src/codegen.h new file mode 100644 index 0000000..095abb6 --- /dev/null +++ b/src/codegen.h @@ -0,0 +1,15 @@ +#pragma once + +#include "ast.h" +#include "cimport.h" + +#include +#include +#include + +#include + +// All files of the program (the main file first, then its modules) become one LLVM module. +// `tm` describes the machine we compile for (sizes, alignment), which shapes the IR. +std::unique_ptr generate(const std::vector &progs, const CImports &c, llvm::LLVMContext &ctx, + llvm::TargetMachine &tm, bool debug); diff --git a/src/codegen_builtins.cpp b/src/codegen_builtins.cpp new file mode 100644 index 0000000..649a22b --- /dev/null +++ b/src/codegen_builtins.cpp @@ -0,0 +1,905 @@ +// Code generation, part 3: calls, built-in functions, conversions and methods. + +#include "codegen_impl.h" +#include "builtins_doc.h" + +using namespace llvm; + +namespace finch { + +bool Codegen::isBuiltin(const std::string &n) { + static const std::set names = {"print", "addr", "input", "new", "free", "read_file", "write_file", + "file_exists", "delete_file", "exit", "shell", "error"}; + FType t; + return names.count(n) || typeFromName(n, t); +} + +// Help people who forgot an import. +std::string Codegen::headerHint(const std::string &name) { + static const std::unordered_map known = { + {"printf", "stdio.h"}, {"puts", "stdio.h"}, {"putchar", "stdio.h"}, {"scanf", "stdio.h"}, + {"fopen", "stdio.h"}, {"getchar", "stdio.h"}, {"sqrt", "math.h"}, {"pow", "math.h"}, + {"sin", "math.h"}, {"cos", "math.h"}, {"floor", "math.h"}, {"fabs", "math.h"}, + {"malloc", "stdlib.h"}, {"rand", "stdlib.h"}, {"srand", "stdlib.h"}, {"abs", "stdlib.h"}, + {"atoi", "stdlib.h"}, {"strlen", "string.h"}, {"strcpy", "string.h"}, {"memcpy", "string.h"}, + {"time", "time.h"}, {"sleep", "unistd.h"}, {"usleep", "unistd.h"}, + }; + auto it = known.find(name); + return it == known.end() ? "" : std::string(" (it's from C: add import \"") + it->second + "\" at the top)"; +} + +void Codegen::checkArgs(const std::vector &args, const std::vector &names, size_t want, Pos p, + const std::string &name, bool variadic) { + for (size_t i = 0; i < names.size(); i++) + if (!names[i].empty()) + failAt(args[i]->pos.file, args[i]->pos.line, args[i]->pos.col, "named arguments (" + names[i] + ": ...) are only for creating structs"); + if (args.size() == want || (variadic && args.size() > want)) return; + failAt(p.file, p.line, p.col, "'" + name + "' takes " + (variadic ? "at least " : "") + std::to_string(want) + + " argument(s), but got " + std::to_string(args.size())); +} + +Function *Codegen::libc(const char *name, llvm::Type *ret, std::vector params, bool vararg) { + FunctionCallee c = mod->getOrInsertFunction(name, FunctionType::get(ret, params, vararg)); + return cast(c.getCallee()); +} + +// The runtime (runtime/finch_rt.c), declared on first use. +Function *Codegen::rt(const std::string &name) { + if (Function *f = mod->getFunction(name)) return f; + llvm::Type *P = b.getPtrTy(), *I = b.getInt64Ty(), *I32 = b.getInt32Ty(), *D = b.getDoubleTy(), *V = b.getVoidTy(); + struct Sig { llvm::Type *ret; std::vector params; }; + std::map sigs = { + {"finch_panic", {V, {P, I, P}}}, + {"finch_panic_index", {V, {P, I, I, I}}}, + {"finch_alloc", {P, {I}}}, + {"finch_zalloc", {P, {I}}}, + {"finch_str_copy", {V, {P, P}}}, + {"finch_str_own", {V, {P}}}, + {"finch_str_drop", {V, {P}}}, + {"finch_str_from_c", {V, {P, P}}}, + {"finch_str_concat", {V, {P, P, P}}}, + {"finch_str_eq", {I32, {P, P}}}, + {"finch_str_cmp", {I, {P, P}}}, + {"finch_str_from_int", {V, {P, I}}}, + {"finch_str_from_uint", {V, {P, I}}}, + {"finch_str_from_float", {V, {P, D}}}, + {"finch_str_from_char", {V, {P, b.getInt8Ty()}}}, + {"finch_str_from_bool", {V, {P, I32}}}, + {"finch_str_to_int", {I, {P, P, I}}}, + {"finch_str_to_float", {D, {P, P, I}}}, + {"finch_str_sub", {V, {P, P, I, I, P, I}}}, + {"finch_str_find", {I, {P, P}}}, + {"finch_str_starts", {I32, {P, P}}}, + {"finch_str_ends", {I32, {P, P}}}, + {"finch_str_trim", {V, {P, P}}}, + {"finch_str_upper", {V, {P, P}}}, + {"finch_str_lower", {V, {P, P}}}, + {"finch_str_replace", {V, {P, P, P, P}}}, + {"finch_str_split", {V, {P, P, P}}}, + {"finch_str_join", {V, {P, P, P}}}, + {"finch_str_repeat", {V, {P, P, I}}}, + {"finch_str_from_bytes", {V, {P, P}}}, + {"finch_arr_reserve", {V, {P, I, I}}}, + {"finch_arr_make", {V, {P, I, I}}}, + {"finch_arr_resize", {V, {P, I, I}}}, + {"finch_arr_clone_raw", {V, {P, P, I}}}, + {"finch_arr_free", {V, {P}}}, + {"finch_arr_insert_gap", {V, {P, I, I, P, I}}}, + {"finch_arr_remove_gap", {V, {P, I, I}}}, + {"finch_bytes_from_str", {V, {P, P}}}, + {"finch_args", {V, {P, I32, P}}}, + {"finch_input", {V, {P, P}}}, + {"finch_file_exists", {I32, {P}}}, + {"finch_read_file", {V, {P, P, P, I}}}, + {"finch_write_file", {I32, {P, P}}}, + {"finch_shell", {I, {P}}}, + {"finch_delete_file", {I32, {P}}}, + {"finch_std_stream", {P, {I32}}}, + {"finch_str_try_int", {I32, {P, P, P}}}, + {"finch_str_try_float", {I32, {P, P, P}}}, + {"finch_try_read_file", {I32, {P, P, P}}}, + {"finch_try_write_file", {I32, {P, P, P}}}, + {"finch_try_delete_file", {I32, {P, P}}}, + {"finch_report_error", {V, {P}}}, + {"finch_map_find", {I, {P, P, I, I, I32}}}, + {"finch_map_slot", {I, {P, P, I, I, I32, P}}}, + {"finch_map_remove_at", {V, {P, I, I}}}, + {"finch_map_clear", {V, {P}}}, + {"finch_map_free", {V, {P}}}, + {"finch_map_clone_raw", {V, {P, P, I}}}, + {"finch_map_missing", {V, {P, I, P}}}, + {"finch_map_changed", {V, {P, I}}}, + {"finch_buf_add", {V, {P, P, I}}}, + {"finch_buf_int", {V, {P, I}}}, + {"finch_buf_uint", {V, {P, I}}}, + {"finch_buf_float", {V, {P, D}}}, + {"finch_buf_bool", {V, {P, I32}}}, + {"finch_buf_ptr", {V, {P, P}}}, + {"finch_buf_char", {V, {P, b.getInt8Ty(), I32}}}, + {"finch_buf_str", {V, {P, P, I32}}}, + {"finch_buf_print", {V, {P}}}, + }; + auto it = sigs.find(name); + if (it == sigs.end()) { + std::fprintf(stderr, "internal compiler error: unknown runtime function %s\n", name.c_str()); + std::exit(2); + } + Function *f = Function::Create(FunctionType::get(it->second.ret, it->second.params, false), Function::ExternalLinkage, + name, mod.get()); + if (name == "finch_panic" || name == "finch_panic_index" || name == "finch_map_missing" || name == "finch_map_changed") { + f->addFnAttr(Attribute::NoReturn); + f->addFnAttr(Attribute::Cold); + } + if (name == "finch_str_from_char" || name == "finch_buf_char") f->addParamAttr(1, Attribute::SExt); + return f; +} + +// ---------- runtime errors ---------- + +Value *Codegen::fileName(Pos p) { + std::string key = "file." + std::to_string(p.file); + if (GlobalVariable *g = mod->getNamedGlobal("finch." + key)) return g; + GlobalVariable *g = b.CreateGlobalString(g_files[p.file].path, "finch." + key); + return g; +} + +void Codegen::panicIf(Value *cond, const std::string &msg, Pos p) { + BasicBlock *bad = newBlock("panic"); + BasicBlock *ok = newBlock("ok"); + b.CreateCondBr(cond, bad, ok); + b.SetInsertPoint(bad); + b.CreateCall(rt("finch_panic"), {fileName(p), b.getInt64(p.line), b.CreateGlobalString(msg, "panic.msg")}); + b.CreateUnreachable(); + b.SetInsertPoint(ok); +} + +void Codegen::boundsCheck(Value *i, Value *len, Pos p) { + BasicBlock *bad = newBlock("out.of.range"); + BasicBlock *ok = newBlock("in.range"); + b.CreateCondBr(b.CreateICmpUGE(i, len), bad, ok); // unsigned: catches negative indexes too + b.SetInsertPoint(bad); + b.CreateCall(rt("finch_panic_index"), {fileName(p), b.getInt64(p.line), i, len}); + b.CreateUnreachable(); + b.SetInsertPoint(ok); +} + +// Dividing by zero is undefined in C; in Finch it is a clear error. +void Codegen::checkDivisor(const Value_ &l, const Value_ &r, Pos p) { + auto *c = dyn_cast(r.v); + if (c && c->isZero()) failAt(p.file, p.line, p.col, "division by zero"); + if (!c) panicIf(b.CreateICmpEQ(r.v, ConstantInt::get(r.v->getType(), 0)), "division by zero", p); + // the smallest signed number divided by -1 doesn't fit anywhere + if (l.type.isSigned() && (!c || c->isMinusOne())) { + Value *min = ConstantInt::get(l.v->getType(), APInt::getSignedMinValue(l.type.bits())); + Value *minusOne = ConstantInt::get(r.v->getType(), -1, true); + panicIf(b.CreateAnd(b.CreateICmpEQ(l.v, min), b.CreateICmpEQ(r.v, minusOne)), + "division overflows (the smallest number divided by -1)", p); + } +} + +Value *Codegen::cGlobal(const std::string &name) { + if (GlobalVariable *gv = mod->getNamedGlobal(name)) return gv; + FType t = resolve(cimports.globals.at(name).type, Pos{}); + return new GlobalVariable(*mod, ty(t), false, GlobalValue::ExternalLinkage, nullptr, name); +} + +// ---------- calls ---------- + +static std::string docHover(const BuiltinDoc &d) { + return "```finch\n" + std::string(d.signature) + "\n```\n" + d.doc; +} + +static std::string cSignature(const CFunc &f) { + std::string s = f.ret.show() + " " + f.name + "("; + for (size_t i = 0; i < f.params.size(); i++) s += (i ? ", " : "") + f.params[i].show(); + if (f.variadic) s += f.params.empty() ? "..." : ", ..."; + return s + ")"; +} + +Value_ Codegen::call(const CallExpr &c) { + const std::string &n = c.callee; + Pos p = c.pos; + if (g_index) + for (const BuiltinDoc &d : kBuiltins) + if (n == d.name) note(p, n.size(), docHover(d)); + auto one = [&](const char *what) -> const Expr & { + checkArgs(c.args, c.argNames, 1, p, n); + (void)what; + return *c.args[0]; + }; + + bool canFail = &c == fallibleTarget; // inside `... or ...` / `try ...`: report failures instead of stopping + // a failure: set the flag and message that `or` / `try` look at + auto failedIf = [&](Value *ok, Value *errSlot) { + fallibleFailed = b.CreateICmpEQ(ok, b.getInt32(0)); + fallibleMsg = b.CreateLoad(ty(FType::Str), errSlot); + }; + if (n == "error") + failAt(p.file, p.line, p.col, "error(...) makes an error to return from a function that can fail: return error(\"...\")"); + if (n == "print") { + checkArgs(c.args, c.argNames, 0, p, n, true); + return print(c.args, p); + } + if (n == "addr") { + checkArgs(c.args, c.argNames, 1, p, n); + return addrOf(c.args, p); + } + if (n == "input") { + if (c.args.size() > 1) checkArgs(c.args, c.argNames, 1, p, n); + Value_ prompt = c.args.empty() ? Value_{strConst(""), FType::Str, false, true} + : coerce(expr(*c.args[0]), FType::Str, c.args[0]->pos, "the question"); + Value *out = tmpOf(ty(FType::Str)); + b.CreateCall(rt("finch_input"), {out, tmp(prompt.v)}); + release(prompt); + return {b.CreateLoad(ty(FType::Str), out), FType::Str, false, true}; + } + if (n == "new") { + const Expr &a = one("value"); + Value_ v = expr(a); + if (v.type.kind == FType::Void || v.type.kind == FType::Null) + failAt(a.pos.file, a.pos.line, a.pos.col, "new(...) needs a value to put in memory, like new(Point(x: 1, y: 2))"); + Value *mem = b.CreateCall(rt("finch_alloc"), {elemSize(v.type)}); + b.CreateStore(own(v), mem); + return {mem, FType::ptrTo(v.type)}; + } + if (n == "free") { + const Expr &a = one("pointer"); + Value_ v = expr(a); + if (!v.type.isPtr()) + failAt(a.pos.file, a.pos.line, a.pos.col, "free(...) is only for pointers from new(...) or C; arrays, str and structs are freed by Finch at the end of their block"); + if (v.type.elem && owning(*v.type.elem)) { + BasicBlock *drop = newBlock("free.drop"), *done = newBlock("free.done"); + b.CreateCondBr(b.CreateIsNull(v.v), done, drop); + b.SetInsertPoint(drop); + dropAt(v.v, *v.type.elem); + b.CreateBr(done); + b.SetInsertPoint(done); + } + b.CreateCall(libc("free", b.getVoidTy(), {b.getPtrTy()}), {v.v}); + return {nullptr, FType::Void}; + } + if (n == "exit") { + Value *code = coerce(expr(one("code")), FType::I32, c.args[0]->pos, "the exit code").v; + b.CreateCall(libc("fflush", b.getInt32Ty(), {b.getPtrTy()}), {ConstantPointerNull::get(b.getPtrTy())}); + b.CreateCall(libc("exit", b.getVoidTy(), {b.getInt32Ty()}), {code}); + return {nullptr, FType::Void}; + } + if (n == "delete_file") { + Value_ path = coerce(expr(one("path")), FType::Str, c.args[0]->pos, "the file name"); + Value *ss = tmpOf(ty(FType::Str)); + b.CreateCall(rt("finch_str_copy"), {ss, tmp(path.v)}); // NUL-terminated copy + if (canFail) { + Value *err = tmp(zero(FType::Str)); + failedIf(b.CreateCall(rt("finch_try_delete_file"), {ss, err}), err); + dropAt(ss, FType::Str); + release(path); + return {nullptr, FType::Void}; + } + Value *r = b.CreateCall(rt("finch_delete_file"), {ss}); + dropAt(ss, FType::Str); + release(path); + return {b.CreateICmpNE(r, b.getInt32(0)), FType::Bool}; + } + if (n == "read_file" || n == "file_exists") { + Value_ path = coerce(expr(one("path")), FType::Str, c.args[0]->pos, "the file name"); + Value *pp = tmp(path.v); + Value_ res; + if (n == "file_exists") { + res = {b.CreateICmpNE(b.CreateCall(rt("finch_file_exists"), {pp}), b.getInt32(0)), FType::Bool}; + } else if (canFail) { + Value *out = tmp(zero(FType::Str)), *err = tmp(zero(FType::Str)); + failedIf(b.CreateCall(rt("finch_try_read_file"), {out, pp, err}), err); + res = {b.CreateLoad(ty(FType::Str), out), FType::Str, false, true}; + } else { + Value *out = tmpOf(ty(FType::Str)); + b.CreateCall(rt("finch_read_file"), {out, pp, fileName(p), b.getInt64(p.line)}); + res = {b.CreateLoad(ty(FType::Str), out), FType::Str, false, true}; + } + release(path); + return res; + } + if (n == "shell") { + Value_ cmd = coerce(expr(one("command")), FType::Str, c.args[0]->pos, "the command"); + Value *ss = tmpOf(ty(FType::Str)); + b.CreateCall(rt("finch_str_copy"), {ss, tmp(cmd.v)}); // a heap copy is always NUL-terminated + Value *r = b.CreateCall(rt("finch_shell"), {ss}); + dropAt(ss, FType::Str); + release(cmd); + return {r, FType::I64}; + } + if (n == "write_file") { + checkArgs(c.args, c.argNames, 2, p, n); + Value_ path = coerce(expr(*c.args[0]), FType::Str, c.args[0]->pos, "the file name"); + Held held(*this); + hold(path); + Value_ text = coerce(expr(*c.args[1]), FType::Str, c.args[1]->pos, "the text"); + if (canFail) { + Value *err = tmp(zero(FType::Str)); + failedIf(b.CreateCall(rt("finch_try_write_file"), {tmp(path.v), tmp(text.v), err}), err); + release(path); + release(text); + return {nullptr, FType::Void}; + } + Value *ok = b.CreateCall(rt("finch_write_file"), {tmp(path.v), tmp(text.v)}); + release(path); + release(text); + return {b.CreateICmpNE(ok, b.getInt32(0)), FType::Bool}; + } + FType target; + if (typeFromName(n, target)) { + checkArgs(c.args, c.argNames, 1, p, n); + return convert(target, c.args, p, n, canFail); + } + + ModuleScope &m = modules[curModule]; + if (auto it = m.fns.find(n); it != m.fns.end()) { + note(p, n.size(), "```finch\n" + signature(it->second) + "\n```", it->second.decl->namePos); + return callFinch(it->second, c.args, c.argNames, p, n, &c); + } + if (StructInfo *s = findStruct("", n, false)) { + note(p, n.size(), structHover(s), s->decl ? s->decl->namePos : Pos{}); + return construct(s, c.args, c.argNames, p); + } + if (auto cf = cimports.fns.find(n); cf != cimports.fns.end()) { + note(p, n.size(), "C function from `" + cf->second.header + "`\n```c\n" + cSignature(cf->second) + "\n```"); + checkArgs(c.args, c.argNames, cf->second.params.size(), p, n, cf->second.variadic); + return callC(cf->second, c.args, p); + } + if (lookup(n)) failAt(p.file, p.line, p.col, "'" + n + "' is a variable, not a function"); + for (auto &[mname, ms] : modules) + if (ms.fns.count(n) && mname != curModule && !mname.empty()) + failAt(p.file, p.line, p.col, "there is no function named '" + n + "' here; it is in the module " + mname + + " (write " + mname + "." + n + "(...)" + (m.imports.count(mname) ? "" : " and add: import " + mname) + ")"); + failAt(p.file, p.line, p.col, "there is no function named '" + n + "'" + headerHint(n)); +} + +Value_ Codegen::callFinch(const Fn &fn, const std::vector &args, const std::vector &names, Pos p, + const std::string &shown, const Expr *site, Value *self, const std::string &selfRoot) { + const FnDecl &d = *fn.decl; + if (fn.module.empty() && d.name == "main" && !fn.recv) failAt(p.file, p.line, p.col, "main can't be called, it is where the program starts"); + if (fn.fallible && site != fallibleTarget) + failAt(p.file, p.line, p.col, "'" + shown + "' can fail, so say what happens then: " + shown + "(...) or , " + shown + + "(...) or { ... }, or try " + shown + "(...)"); + checkArgs(args, names, fn.params.size(), p, shown); + std::vector vals; + std::vector fresh; + Held held(*this); + if (self) vals.push_back(self); + for (size_t i = 0; i < args.size(); i++) { + Value_ v = coerce(exprWant(*args[i], fn.params[i]), fn.params[i], args[i]->pos, "argument '" + d.params[i].name + "'"); + // a method that changes self gets its own copy of anything that lives inside self (p.add(p.items)) + if (fn.mutatesSelf && !selfRoot.empty() && owning(v.type) && !v.fresh && rootVar(*args[i]) == selfRoot) + v = {copyValue(v.v, v.type), v.type, false, true}; + vals.push_back(v.v); // owning values are lent: the function never drops them + if (v.fresh) fresh.push_back(v); + hold(v); + } + setLoc(p); + Value *r = b.CreateCall(fn.llvm, vals); + for (auto &v : fresh) release(v); + if (fn.fallible) { + fallibleFailed = b.CreateNot(b.CreateExtractValue(r, 0)); + fallibleMsg = b.CreateExtractValue(r, 2); + if (fn.ret.kind == FType::Void) return {nullptr, FType::Void}; + return {b.CreateExtractValue(r, 1), fn.ret, false, owning(fn.ret)}; + } + if (fn.ret.kind == FType::Void) return {nullptr, FType::Void}; + return {r, fn.ret, false, owning(fn.ret)}; +} + +Value_ Codegen::construct(StructInfo *s, const std::vector &args, const std::vector &names, Pos p) { + resolveStruct(s); + FType t(FType::Struct); + t.info = s; + t.name = s->name; + t.module = s->module == "C" ? "" : s->module; + std::vector fields; + for (auto &f : s->fields) fields.push_back(&f); + + bool named = !names.empty() && !names[0].empty(); + std::vector given(fields.size(), nullptr); + for (size_t i = 0; i < args.size(); i++) { + Pos ap = args[i]->pos; + if (names[i].empty() == named) + failAt(ap.file, ap.line, ap.col, "give either all fields by name (x: 1, y: 2) or none (1, 2), not a mix"); + if (!named) { + if (args.size() != fields.size()) + failAt(p.file, p.line, p.col, s->name + " has " + std::to_string(fields.size()) + " fields, but got " + + std::to_string(args.size()) + " values (or name them: " + s->name + "(field: value))"); + given[i] = args[i].get(); + continue; + } + size_t k = 0; + while (k < fields.size() && fields[k]->name != names[i]) k++; + if (k == fields.size()) failAt(ap.file, ap.line, ap.col, s->name + " has no field '" + names[i] + "'"); + if (given[k]) failAt(ap.file, ap.line, ap.col, "the field '" + names[i] + "' is given twice"); + given[k] = args[i].get(); + } + + Value *v = zero(t); + Held held(*this); + for (size_t k = 0; k < fields.size(); k++) { + const StructInfo::F &f = *fields[k]; + Value_ fv; + if (given[k]) { + fv = coerce(exprWant(*given[k], f.type), f.type, given[k]->pos, "the field '" + f.name + "'"); + } else if (f.init) { + // a default value is evaluated where the struct is defined, without the caller's variables + std::vector saved; + std::swap(saved, scopes); + scopes.reserve(256); + pushScope(); + std::string savedModule = curModule; + curModule = s->module; + fv = coerce(exprWant(*f.init, f.type), f.type, f.init->pos, "the default of '" + f.name + "'"); + curModule = savedModule; + scopes.pop_back(); + std::swap(saved, scopes); + } else { + continue; // zero + } + Value *fo = own(fv); + hold({fo, f.type, false, true}); + v = b.CreateInsertValue(v, fo, f.llvmIndex); + } + return {v, t, false, owning(t)}; +} + +Value_ Codegen::callC(const CFunc &f, const std::vector &args, Pos p) { + if (!f.unsupported.empty()) + failAt(p.file, p.line, p.col, "the C function '" + f.name + "' can't be used from Finch yet: it " + f.unsupported); + std::vector vals; + Held held(*this); + for (size_t i = 0; i < args.size(); i++) { + if (!vals.empty()) hold(vals.back()); + if (i < f.params.size()) { + FType pt = resolve(f.params[i], p); + vals.push_back(coerce(exprWant(*args[i], pt), pt, args[i]->pos, "argument " + std::to_string(i + 1) + " of " + f.name)); + } else { + Value_ v = expr(*args[i]); + if (v.type.kind == FType::Void) failAt(args[i]->pos.file, args[i]->pos.line, args[i]->pos.col, "this gives back nothing"); + if (v.type.kind == FType::Struct || v.type.kind == FType::Array) + failAt(args[i]->pos.file, args[i]->pos.line, args[i]->pos.col, "structs and arrays can't be passed to the '...' part of a C function"); + vals.push_back(v); + } + } + setLoc(p); + Value_ r = emitCCall(f, declareC(f), vals, p); + for (auto &v : vals) release(v); + return r; +} + +// ---------- built-ins ---------- + +// print(a, b, c) prints the values separated by spaces, then a newline. +Value_ Codegen::print(const std::vector &args, Pos) { + for (size_t i = 0; i < args.size(); i++) { + Value_ v = expr(*args[i]); + if (v.type.kind == FType::Void) + failAt(args[i]->pos.file, args[i]->pos.line, args[i]->pos.col, "this gives back nothing, so there is nothing to print"); + if (i) printf_(" ", {}); + emitPrint(v.v, v.type, false); + release(v); + } + printf_("\n", {}); + return {nullptr, FType::Void}; +} + +// addr(x) gives a pointer to x; addr(function) gives a C-callable function pointer. +Value_ Codegen::addrOf(const std::vector &args, Pos p) { + const Expr &e = *args[0]; + if (e.kind == ExprKind::Var) { + const std::string &n = static_cast(e).name; + Var *v = lookup(n); + if (!v) { + auto &fns = modules[curModule].fns; + if (auto it = fns.find(n); it != fns.end()) return {cThunk(it->second, p), FType::Ptr}; + } + if (v && v->readonly) failAt(e.pos.file, e.pos.line, e.pos.col, "can't take the address of a loop variable"); + } + if (e.kind != ExprKind::Var && e.kind != ExprKind::Member && e.kind != ExprKind::Index) + failAt(e.pos.file, e.pos.line, e.pos.col, "addr(...) needs a variable, a field or an element, like addr(x)"); + Place pl = place(e, true); + return {pl.addr, FType::ptrTo(pl.type)}; +} + +// Explicit conversions: int(x), u8(x), float(x), char(x), bool(x), str(x), ptr(x) ... +Value_ Codegen::convert(const FType &to, const std::vector &args, Pos, const std::string &name, bool canFail) { + Value_ v = expr(*args[0]); + const FType &from = v.type; + Pos p = args[0]->pos; + if (to.kind == FType::Str) { + Value *out = tmpOf(ty(FType::Str)); + if (from.kind == FType::Str) return {copyValue(v.v, FType::Str), FType::Str, false, true}; + if (from.isPtr()) return strFromC(v.v); + if (from.isSigned()) b.CreateCall(rt("finch_str_from_int"), {out, b.CreateSExt(v.v, b.getInt64Ty())}); + else if (from.isUnsigned()) b.CreateCall(rt("finch_str_from_uint"), {out, b.CreateZExt(v.v, b.getInt64Ty())}); + else if (from.isFloat()) b.CreateCall(rt("finch_str_from_float"), {out, b.CreateFPExt(v.v, b.getDoubleTy())}); + else if (from.kind == FType::Char) b.CreateCall(rt("finch_str_from_char"), {out, v.v}); + else if (from.kind == FType::Bool) b.CreateCall(rt("finch_str_from_bool"), {out, b.CreateZExt(v.v, b.getInt32Ty())}); + else if (from.kind == FType::Array && (from.elem->kind == FType::U8 || from.elem->kind == FType::Char)) { + b.CreateCall(rt("finch_str_from_bytes"), {out, tmp(v.v)}); + release(v); + } else if (from.kind == FType::Array || from.kind == FType::Fixed || from.kind == FType::Map || from.kind == FType::Struct) { + b.CreateStore(zero(FType::Str), out); // the same text print(...) shows + emitFormat(out, v.v, from, false); + release(v); + } else { + failAt(p.file, p.line, p.col, "can't turn " + from.show() + " into str"); + } + return {b.CreateLoad(ty(FType::Str), out), FType::Str, false, true}; + } + if (from == to) return v; + if (from.kind == FType::Str && (to.isInt() || to.isFloat()) && canFail) { // int(text) or 0 + Value *sp = tmp(v.v), *err = tmp(zero(FType::Str)); + Value *out = tmp(to.isInt() ? (Value *)b.getInt64(0) : ConstantFP::get(b.getDoubleTy(), 0)); + Value *ok = b.CreateCall(rt(to.isInt() ? "finch_str_try_int" : "finch_str_try_float"), {sp, out, err}); + fallibleFailed = b.CreateICmpEQ(ok, b.getInt32(0)); + fallibleMsg = b.CreateLoad(ty(FType::Str), err); + Value_ r; + if (to.isInt()) r = {intCast(b.CreateLoad(b.getInt64Ty(), out), FType::I64, to), to}; + else r = {b.CreateFPCast(b.CreateLoad(b.getDoubleTy(), out), ty(to)), to}; + release(v); + return r; + } + if (from.kind == FType::Str && (to.isInt() || to.isFloat())) { + Value *sp = tmp(v.v); + Value_ r; + if (to.isInt()) r = {intCast(b.CreateCall(rt("finch_str_to_int"), {sp, fileName(p), b.getInt64(p.line)}), FType::I64, to), to}; + else r = {b.CreateFPCast(b.CreateCall(rt("finch_str_to_float"), {sp, fileName(p), b.getInt64(p.line)}), ty(to)), to}; + release(v); + return r; + } + if (to.isInt() || to.kind == FType::Char) { + if (from.isInt() || from.kind == FType::Char) return {b.CreateIntCast(v.v, ty(to), from.isSigned()), to}; + if (from.kind == FType::Bool) return {b.CreateZExt(v.v, ty(to)), to}; + if (from.isFloat() && to.isInt()) return {to.isSigned() ? b.CreateFPToSI(v.v, ty(to)) : b.CreateFPToUI(v.v, ty(to)), to}; + } + if (to.isFloat()) { + if (from.isInt()) return {intToFloat(v.v, from, to), to}; + if (from.isFloat()) return {b.CreateFPCast(v.v, ty(to)), to}; + } + if (to.kind == FType::Bool && from.isInt()) return {b.CreateICmpNE(v.v, ConstantInt::get(ty(from), 0)), to}; + if (to.isPtr() && (from.isPtr() || from.kind == FType::Null)) return {v.v, to}; + if (to.isPtr() && from.isInt()) return {b.CreateIntToPtr(intCast(v.v, from, FType::U64), b.getPtrTy()), to}; // an address or offset for C + if (to.isInt() && from.isPtr()) return {b.CreatePtrToInt(v.v, ty(to)), to}; + if (to.isPtr() && from.kind == FType::Str) failAt(p.file, p.line, p.col, "use .ptr to get a str's address (it is only valid while the str lives)"); + failAt(p.file, p.line, p.col, "can't turn " + from.show() + " into " + name); +} + +// ---------- methods ---------- + +Value_ Codegen::method(const MethodExpr &m) { + Pos p = m.pos; + // math.sqrt(x), math.Vec(1, 2) + if (m.obj->kind == ExprKind::Var) { + const std::string &mn = static_cast(*m.obj).name; + if (!lookup(mn) && modules[curModule].imports.count(mn)) { + auto mi = modules.find(mn); + if (mi == modules.end()) failAt(p.file, p.line, p.col, "the module '" + mn + "' was not found"); + note(m.obj->pos, mn.size(), "module `" + mn + "`"); + Pos namePos{p.line, p.col + 1, p.file}; + if (auto it = mi->second.fns.find(m.name); it != mi->second.fns.end()) { + note(namePos, m.name.size(), "```finch\n" + signature(it->second) + "\n```", it->second.decl->namePos); + return callFinch(it->second, m.args, m.argNames, p, mn + "." + m.name, &m); + } + if (auto it = mi->second.structs.find(m.name); it != mi->second.structs.end()) { + note(namePos, m.name.size(), structHover(it->second), it->second->decl->namePos); + return construct(it->second, m.args, m.argNames, p); + } + failAt(p.file, p.line, p.col, "the module '" + mn + "' has no function or struct named '" + m.name + "'"); + } + if (!lookup(mn) && !cimports.globals.count(mn) && !cimports.consts.count(mn)) + failAt(m.obj->pos.file, m.obj->pos.line, m.obj->pos.col, + "there is no variable or module named '" + mn + "' (to use a module, add import " + mn + " at the top)"); + } + static const std::set changing = {"push", "pop", "insert", "remove", "clear", "resize", "sort", "reverse"}; + // writing through a map's m[key] adds the key if it's missing: groups[k].push(x) + LRef r = ref(*m.obj, changing.count(m.name) > 0 || mutatingMethods.count(m.name) > 0); + FType t = r.isPlace ? r.pl.type : r.val.type; + if (t.kind == FType::Struct || (t.isPtr() && t.elem && t.elem->kind == FType::Struct)) return structMethod(m, r, t); + if (changing.count(m.name) && (t.kind == FType::Array || t.kind == FType::Map)) { + std::string root = rootVar(*m.obj); + if (Var *v = root.empty() ? nullptr : lookup(root); v && v->readonly) failAt(p.file, p.line, p.col, v->readonlyWhy); + } + Held held(*this); + if (t.kind == FType::Map) { + Value_ recv = r.isPlace ? Value_{r.pl.addr, t} : Value_{tmp(r.val.v), t, false, r.val.fresh}; + if (!r.isPlace && r.val.fresh) holdAddr(recv.v, t); + Value_ out = mapMethod(m, &recv); + if (!r.isPlace && r.val.fresh) dropAt(recv.v, t); + return out; + } + if (g_index && (t.kind == FType::Array || t.kind == FType::Str)) { + auto look = [&](const BuiltinDoc *first, const BuiltinDoc *last) { + for (; first != last; ++first) + if (m.name == first->name) note(Pos{p.line, p.col + 1, p.file}, m.name.size(), docHover(*first)); + }; + if (t.kind == FType::Str) look(std::begin(kStrMethods), std::end(kStrMethods)); + else look(std::begin(kArrayMethods), std::end(kArrayMethods)); + } + if (t.kind == FType::Array) { + Value_ recv = r.isPlace ? Value_{r.pl.addr, t} : r.val; + if (!r.isPlace) { + if (changing.count(m.name)) failAt(p.file, p.line, p.col, m.name + "() would change a temporary array; store it in a variable first"); + recv = {tmp(r.val.v), t, false, r.val.fresh}; + if (r.val.fresh) holdAddr(recv.v, t); + } + Value_ out = arrayMethod(m, &recv); + if (!r.isPlace && r.val.fresh) dropAt(recv.v, t); + return out; + } + if (t.kind == FType::Str) { + Value_ sv = r.isPlace ? Value_{b.CreateLoad(ty(t), r.pl.addr), t} : r.val; + Value *addr = tmp(sv.v); // the runtime takes strings by address + if (!r.isPlace) hold(sv); + auto argStr = [&](size_t i, const char *what) { + Value_ a = coerce(expr(*m.args[i]), FType::Str, m.args[i]->pos, what); + hold(a); + return a; + }; + auto argInt = [&](size_t i, const char *what) { + return coerce(expr(*m.args[i]), FType::I64, m.args[i]->pos, what).v; + }; + auto need = [&](size_t n) { checkArgs(m.args, m.argNames, n, p, m.name); }; + Value *out = tmpOf(ty(FType::Str)); + Value_ res; + const std::string &n = m.name; + auto strRes = [&]() { return Value_{b.CreateLoad(ty(FType::Str), out), FType::Str, false, true}; }; + if (n == "sub") { + need(2); + Value *a = argInt(0, "the start"), *e = argInt(1, "the end"); + b.CreateCall(rt("finch_str_sub"), {out, addr, a, e, fileName(p), b.getInt64(p.line)}); + res = strRes(); + } else if (n == "find" || n == "contains" || n == "starts_with" || n == "ends_with") { + need(1); + Value_ t2 = argStr(0, "the text to look for"); + Value *tp = tmp(t2.v); + if (n == "find") res = {b.CreateCall(rt("finch_str_find"), {addr, tp}), FType::I64}; + else if (n == "contains") res = {b.CreateICmpSGE(b.CreateCall(rt("finch_str_find"), {addr, tp}), b.getInt64(0)), FType::Bool}; + else res = {b.CreateICmpNE(b.CreateCall(rt(n == "starts_with" ? "finch_str_starts" : "finch_str_ends"), {addr, tp}), b.getInt32(0)), FType::Bool}; + release(t2); + } else if (n == "trim" || n == "upper" || n == "lower") { + need(0); + b.CreateCall(rt("finch_str_" + n), {out, addr}); + res = strRes(); + } else if (n == "replace") { + need(2); + Value_ a = argStr(0, "the text to replace"), c = argStr(1, "the new text"); + b.CreateCall(rt("finch_str_replace"), {out, addr, tmp(a.v), tmp(c.v)}); + release(a); + release(c); + res = strRes(); + } else if (n == "split") { + need(1); + Value_ sep = argStr(0, "the separator"); + FType at = FType::arrayOf(FType::Str); + Value *ao = tmpOf(ty(at)); + b.CreateCall(rt("finch_str_split"), {ao, addr, tmp(sep.v)}); + release(sep); + res = {b.CreateLoad(ty(at), ao), at, false, true}; + } else if (n == "repeat") { + need(1); + b.CreateCall(rt("finch_str_repeat"), {out, addr, argInt(0, "the count")}); + res = strRes(); + } else if (n == "bytes") { + need(0); + FType at = FType::arrayOf(FType::U8); + Value *ao = tmpOf(ty(at)); + b.CreateCall(rt("finch_bytes_from_str"), {ao, addr}); + res = {b.CreateLoad(ty(at), ao), at, false, true}; + } else { + failAt(p.file, p.line, p.col, "a str has no method '" + n + "' (it has: sub, find, contains, starts_with, ends_with, split, trim, upper, lower, replace, repeat, bytes)"); + } + if (!r.isPlace) release(sv); + return res; + } + failAt(p.file, p.line, p.col, t.show() + " has no methods"); +} + +// p.move(1, 2): a method of a struct (also through a ptr[Struct]); self is passed by address +Value_ Codegen::structMethod(const MethodExpr &m, LRef &r, const FType &t) { + Pos p = m.pos; + FType st = t.isPtr() ? *t.elem : t; + auto ms = methods.find(st.info); + const Fn *fn = nullptr; + if (ms != methods.end()) + if (auto it = ms->second.find(m.name); it != ms->second.end()) fn = &it->second; + if (!fn) { + std::string names; + if (ms != methods.end()) + for (auto &[n, f] : ms->second) names += (names.empty() ? "" : ", ") + n; + if (names.empty()) + failAt(p.file, p.line, p.col, "the struct " + st.show() + " has no methods; add one with fn " + st.name + "." + m.name + "(...) { ... }"); + failAt(p.file, p.line, p.col, "the struct " + st.show() + " has no method '" + m.name + "' (it has: " + names + ")"); + } + note(Pos{p.line, p.col + 1, p.file}, m.name.size(), "```finch\n" + signature(*fn) + "\n```", fn->decl->namePos); + std::string root = rootVar(*m.obj); + if (fn->mutatesSelf && !root.empty() && !t.isPtr()) + if (Var *v = lookup(root); v && v->readonly) failAt(p.file, p.line, p.col, v->readonlyWhy); + + Value *self; + bool temp = false; + if (t.isPtr()) { + self = r.isPlace ? b.CreateLoad(b.getPtrTy(), r.pl.addr) : r.val.v; + panicIf(b.CreateIsNull(self), "called ." + m.name + "() on a null pointer", p); + root.clear(); // self lives somewhere else + } else if (r.isPlace) { + self = r.pl.addr; + } else { + self = tmp(r.val.v); // a temporary struct: Point(1, 2).length() + temp = true; + } + Held held(*this); + if (temp && r.val.fresh) holdAddr(self, st); + Value_ out = callFinch(*fn, m.args, m.argNames, p, st.name + "." + m.name, &m, self, root); + if (temp && r.val.fresh && owning(st)) dropAt(self, st); + return out; +} + +// An element compare for find/contains/sort: -1, 0, 1 (only numbers, chars, bools and str) +static bool comparable(const FType &t) { + return t.isNumber() || t.kind == FType::Char || t.kind == FType::Bool || t.kind == FType::Str; +} + +Value_ Codegen::arrayMethod(const MethodExpr &m, Value_ *recv) { + Pos p = m.pos; + const std::string &n = m.name; + FType at = recv->type, et = *at.elem; + llvm::Type *AT = ty(at), *ET = ty(et); + Value *a = recv->v; // the array's address + auto need = [&](size_t k) { checkArgs(m.args, m.argNames, k, p, n); }; + auto lenAddr = [&]() { return b.CreateStructGEP(AT, a, 1); }; + auto len = [&]() { return b.CreateLoad(b.getInt64Ty(), lenAddr()); }; + auto data = [&]() { return b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(AT, a, 0)); }; + auto elemValue = [&](size_t i) { return own(coerce(exprWant(*m.args[i], et), et, m.args[i]->pos, "the element")); }; + + if (n == "push") { + need(1); + Value *v = elemValue(0); + Value *l = len(); + b.CreateCall(rt("finch_arr_reserve"), {a, b.CreateAdd(l, b.getInt64(1)), elemSize(et)}); + b.CreateStore(v, b.CreateInBoundsGEP(ET, data(), l)); + b.CreateStore(b.CreateAdd(l, b.getInt64(1)), lenAddr()); + return {nullptr, FType::Void}; + } + if (n == "pop") { + need(0); + Value *l = len(); + panicIf(b.CreateICmpEQ(l, b.getInt64(0)), "pop() on an empty array", p); + Value *last = b.CreateSub(l, b.getInt64(1)); + Value *v = b.CreateLoad(ET, b.CreateInBoundsGEP(ET, data(), last)); + b.CreateStore(last, lenAddr()); + return {v, et, false, owning(et)}; + } + if (n == "insert") { + need(2); + Value *i = coerce(expr(*m.args[0]), FType::I64, m.args[0]->pos, "the position").v; + Value *v = elemValue(1); + b.CreateCall(rt("finch_arr_insert_gap"), {a, i, elemSize(et), fileName(p), b.getInt64(p.line)}); + b.CreateStore(v, b.CreateInBoundsGEP(ET, data(), i)); + return {nullptr, FType::Void}; + } + if (n == "remove") { + need(1); + Value *i = coerce(expr(*m.args[0]), FType::I64, m.args[0]->pos, "the position").v; + boundsCheck(i, len(), p); + Value *v = b.CreateLoad(ET, b.CreateInBoundsGEP(ET, data(), i)); + b.CreateCall(rt("finch_arr_remove_gap"), {a, i, elemSize(et)}); + return {v, et, false, owning(et)}; + } + if (n == "clear" || n == "resize") { + need(n == "clear" ? 0 : 1); + Value *nl = n == "clear" ? (Value *)b.getInt64(0) : coerce(expr(*m.args[0]), FType::I64, m.args[0]->pos, "the new length").v; + if (owning(et)) { // drop the elements that go away + Value *l = len(), *d = data(); + Value *from = b.CreateSelect(b.CreateICmpSLT(nl, l), b.CreateSelect(b.CreateICmpSLT(nl, b.getInt64(0)), b.getInt64(0), nl), l); + forN(b.CreateSub(l, from), [&](Value *k) { dropAt(b.CreateInBoundsGEP(ET, d, b.CreateAdd(from, k)), et); }); + } + b.CreateCall(rt("finch_arr_resize"), {a, nl, elemSize(et)}); + return {nullptr, FType::Void}; + } + if (n == "find" || n == "contains") { + need(1); + if (!comparable(et)) failAt(p.file, p.line, p.col, n + "() works on arrays of numbers, chars, bools or str"); + Value_ x = coerce(exprWant(*m.args[0], et), et, m.args[0]->pos, "the value to look for"); + Value *xv = x.v; + Value *res = tmpOf(b.getInt64Ty()); + b.CreateStore(b.getInt64(-1), res); + Value *l = len(), *d = data(); + Value *i = tmpOf(b.getInt64Ty()); + b.CreateStore(b.getInt64(0), i); + BasicBlock *cond = newBlock("find.cond"), *body = newBlock("find.body"), *hit = newBlock("find.hit"), + *next = newBlock("find.next"), *end = newBlock("find.end"); + b.CreateBr(cond); + b.SetInsertPoint(cond); + Value *iv = b.CreateLoad(b.getInt64Ty(), i); + b.CreateCondBr(b.CreateICmpSLT(iv, l), body, end); + b.SetInsertPoint(body); + Value_ ev{b.CreateLoad(ET, b.CreateInBoundsGEP(ET, d, iv)), et}; + Value *eq = compare(BinOp::Eq, ev, {xv, et}, p).v; + b.CreateCondBr(eq, hit, next); + b.SetInsertPoint(hit); + b.CreateStore(iv, res); + b.CreateBr(end); + b.SetInsertPoint(next); + b.CreateStore(b.CreateAdd(iv, b.getInt64(1)), i); + b.CreateBr(cond); + b.SetInsertPoint(end); + release(x); + Value *r = b.CreateLoad(b.getInt64Ty(), res); + if (n == "find") return {r, FType::I64}; + return {b.CreateICmpSGE(r, b.getInt64(0)), FType::Bool}; + } + if (n == "join") { + need(1); + if (et.kind != FType::Str) failAt(p.file, p.line, p.col, "join() works on an array of str"); + Value_ sep = coerce(expr(*m.args[0]), FType::Str, m.args[0]->pos, "the separator"); + Value *out = tmpOf(ty(FType::Str)); + b.CreateCall(rt("finch_str_join"), {out, a, tmp(sep.v)}); + release(sep); + return {b.CreateLoad(ty(FType::Str), out), FType::Str, false, true}; + } + if (n == "slice") { + need(2); + Value *s = coerce(expr(*m.args[0]), FType::I64, m.args[0]->pos, "the start").v; + Value *e = coerce(expr(*m.args[1]), FType::I64, m.args[1]->pos, "the end").v; + Value *l = len(); + panicIf(b.CreateOr(b.CreateOr(b.CreateICmpSLT(s, b.getInt64(0)), b.CreateICmpSGT(e, l)), b.CreateICmpSGT(s, e)), + "slice(start, end) is out of range", p); + Value *cnt = b.CreateSub(e, s); + Value *out = tmpOf(AT); + b.CreateCall(rt("finch_arr_make"), {out, cnt, elemSize(et)}); + Value *src = data(); + Value *dst = b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(AT, out, 0)); + forN(cnt, [&](Value *k) { + copyAt(b.CreateInBoundsGEP(ET, dst, k), b.CreateInBoundsGEP(ET, src, b.CreateAdd(s, k)), et); + }); + return {b.CreateLoad(AT, out), at, false, true}; + } + if (n == "reverse") { + need(0); + Value *l = len(), *d = data(); + forN(b.CreateSDiv(l, b.getInt64(2)), [&](Value *k) { + Value *x = b.CreateInBoundsGEP(ET, d, k); + Value *y = b.CreateInBoundsGEP(ET, d, b.CreateSub(b.CreateSub(l, b.getInt64(1)), k)); + Value *xv = b.CreateLoad(ET, x), *yv = b.CreateLoad(ET, y); + b.CreateStore(yv, x); + b.CreateStore(xv, y); + }); + return {nullptr, FType::Void}; + } + if (n == "sort") { + need(0); + if (!comparable(et) || et.kind == FType::Bool) failAt(p.file, p.line, p.col, "sort() works on arrays of numbers, chars or str"); + std::string key = "cmp." + typeKey(et); + Function *cmp = helpers[key]; + if (!cmp) { + cmp = Function::Create(FunctionType::get(b.getInt32Ty(), {b.getPtrTy(), b.getPtrTy()}, false), + Function::InternalLinkage, "finch." + key, mod.get()); + helpers[key] = cmp; + IRBuilderBase::InsertPointGuard g(b); + DISubprogram *savedFn = diFn; + diFn = nullptr; + b.SetInsertPoint(BasicBlock::Create(ctx, "entry", cmp)); + b.SetCurrentDebugLocation(DebugLoc()); + Value *x = cmp->getArg(0), *y = cmp->getArg(1); + Value *r; + if (et.kind == FType::Str) { + r = b.CreateTrunc(b.CreateCall(rt("finch_str_cmp"), {x, y}), b.getInt32Ty()); + } else { + Value_ xv{b.CreateLoad(ET, x), et}, yv{b.CreateLoad(ET, y), et}; + Value *lt = compare(BinOp::Less, xv, yv, p).v, *gt = compare(BinOp::Greater, xv, yv, p).v; + r = b.CreateSub(b.CreateZExt(gt, b.getInt32Ty()), b.CreateZExt(lt, b.getInt32Ty())); + } + b.CreateRet(r); + diFn = savedFn; + } + b.CreateCall(libc("qsort", b.getVoidTy(), {b.getPtrTy(), b.getInt64Ty(), b.getInt64Ty(), b.getPtrTy()}), + {data(), len(), elemSize(et), cmp}); + return {nullptr, FType::Void}; + } + failAt(p.file, p.line, p.col, "an array has no method '" + n + "' (it has: push, pop, insert, remove, clear, resize, find, contains, join, slice, reverse, sort)"); +} + +} // namespace finch diff --git a/src/codegen_impl.h b/src/codegen_impl.h new file mode 100644 index 0000000..4d3b8f8 --- /dev/null +++ b/src/codegen_impl.h @@ -0,0 +1,327 @@ +#pragma once +// Internal to the code generator: the Codegen class, shared by codegen*.cpp and abi.cpp. + +#include "codegen.h" +#include "error.h" +#include "index.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +using FType = ::Type; // Finch types (llvm::Type is the LLVM one) + +struct StructInfo { + std::string name; + std::string module; // "" main file, a module name, or "C" for imported C structs + bool isC = false; + const StructDecl *decl = nullptr; // Finch structs + const CStruct *cstruct = nullptr; // C structs + struct F { + std::string name; + FType type; + const Expr *init = nullptr; // default value + bool hidden = false; // C union/bitfield padding: has no name in Finch + unsigned llvmIndex = 0; // C structs carry explicit padding between fields + Pos pos; // Finch structs: where the field is declared + }; + std::vector fields; + llvm::StructType *llvm = nullptr; + int state = 0; // 0 = not resolved, 1 = resolving (cycle check), 2 = done + bool owning = false; + std::string unsupported; // C structs Finch can't lay out + Pos pos; +}; + +namespace finch { + +struct Value_ { + llvm::Value *v; + FType type; + bool literal = false; // a number written in the code (or a C constant): adapts to the type around it + bool fresh = false; // an owning value nobody holds yet: it must be stored (moved) or released +}; + +struct Var { + llvm::Value *slot; + FType type; + bool readonly = false; // loop variables + std::string readonlyWhy; + bool owned = false; // dropped when its scope ends + int order = 0; // declaration order, for defer + bool moved = false; // returned out of the function: not dropped on that path + Pos pos; // where it was declared +}; + +struct Cleanup { + bool isDefer; + std::string var; // Drop: the variable + const Stmt *body = nullptr; // Defer: the statement + int order = 0; // Defer: variables declared after it are not visible +}; + +struct Scope { + std::unordered_map vars; + std::vector cleanups; +}; + +struct Fn { + llvm::Function *llvm = nullptr; + const FnDecl *decl = nullptr; + std::string module; + std::vector borrowParam; // owning params the function never changes: no copy + llvm::Function *cThunk = nullptr; + FType ret; // resolved types + std::vector params; + StructInfo *recv = nullptr; // a method of this struct: the first LLVM parameter is `self`'s address + bool mutatesSelf = false; // the method changes `self` + bool fallible = false; // -> T!: returns { i1 ok, T value, str error } +}; + +struct Loop { + llvm::BasicBlock *continueTo, *breakTo; + size_t scopeDepth; // scopes opened inside the loop are cleaned up by break/continue + size_t pendingDepth; // and so are temporaries held by expressions around it (see Codegen::pending) +}; + +// A fresh value an expression is holding while it computes another part (f(a + b, try g())): if that +// part leaves early (try, or a return/break/continue in an `or { }` block), it must be dropped. +struct Pending { + llvm::Value *v; + FType type; + bool isAddr; // v is the value's address +}; + +struct Place { // something that can be assigned to + llvm::Value *addr; + FType type; +}; + +struct LRef { + bool isPlace; + Place pl; + Value_ val; +}; + +struct ModuleScope { + std::map fns; + std::map structs; + std::set imports; // Finch modules visible here +}; + +// How a C struct travels: System V x86-64 (Linux) or Microsoft x64 (Windows). +struct AbiArg { + // Direct: as is. Expand: split into register-sized parts. Memory: on the stack (byval), or + // returned through a hidden pointer (sret). Indirect (Windows): a pointer to a copy the caller made. + enum Kind { Direct, Expand, Memory, Indirect } kind = Direct; + std::vector parts; // Expand: one value per eightbyte + llvm::Type *coerced = nullptr; // Expand: { parts... } for returns + bool stackAlign8 = false; // AArch64 Linux: HFA arguments that end up on the stack +}; + +class Codegen { +public: + Codegen(llvm::LLVMContext &c, const std::vector &progs, const CImports &ci, llvm::TargetMachine &tm, + bool debug); + std::unique_ptr run(); + + // ---------- state ---------- + llvm::LLVMContext &ctx; + llvm::IRBuilder<> b; + std::unique_ptr mod; + const std::vector &progs; + const CImports &cimports; + const llvm::DataLayout *dl; + + std::map modules; + std::map cStructs; + std::vector> structStore; + std::vector scopes; + std::vector loops; + std::vector pending; + const Fn *curFn = nullptr; + std::string curModule; + int varOrder = 0; + int deferLimit = -1; // while emitting a defer: hide variables declared after it + int inDefer = 0; + std::map helpers; // drop/copy/print per type + std::map> methods; + std::set mutatingMethods; // names of methods that change self (for the mutation analysis) + + // errors as values: the call that `or` / `try` is handling reports here whether it failed + const Expr *fallibleTarget = nullptr; + llvm::Value *fallibleFailed = nullptr; // i1 + llvm::Value *fallibleMsg = nullptr; // str + + // debug info (-g) + bool debug; + std::unique_ptr di; + std::vector diFiles; + llvm::DICompileUnit *diUnit = nullptr; + llvm::DISubprogram *diFn = nullptr; + std::map diTypes; + + // ---------- codegen.cpp: program, statements, expressions ---------- + void declareStructs(); + void declareFns(); + void declare(const Program &p, const FnDecl &fn); + void define(Fn &fn); + void defineMainWrapper(); + void block(const BlockStmt &blk); + void blockBody(const BlockStmt &blk); + void stmt(const Stmt &s); + void varDecl(const VarDeclStmt &s); + void assign(const AssignStmt &s); + void ifStmt(const IfStmt &s); + void whileStmt(const WhileStmt &s); + void forStmt(const ForStmt &s); + void forEachStmt(const ForEachStmt &s); + void returnStmt(const ReturnStmt &s); + llvm::Type *retType(const Fn &f); + void retValue(llvm::Value *v); // return from the current function (wrapped as success if it can fail) + void retError(llvm::Value *msg); // fail the current function with the str `msg` + void jump(bool isBreak, Pos p); + llvm::Value *condition(const Expr &e); + void continueAt(llvm::BasicBlock *bb, llvm::BasicBlock *deadEnd); + bool terminated(); + llvm::BasicBlock *newBlock(const char *name); + + void hold(const Value_ &v); // see Pending + void holdAddr(llvm::Value *addr, const FType &t); + void dropPending(size_t downTo); // emit drops for pending[downTo..] + struct Held { // forgets what was held when the expression is done + Codegen &cg; + size_t mark; + explicit Held(Codegen &c) : cg(c), mark(c.pending.size()) {} + ~Held() { cg.pending.erase(cg.pending.begin() + mark, cg.pending.end()); } + }; + void pushScope(); + void popScope(); // emits the scope's cleanups if reachable + void emitCleanups(size_t downTo); // run cleanups of scopes [downTo, end) without popping + void emitScopeCleanups(size_t idx); + llvm::AllocaInst *slot(const FType &t, const std::string &name); + Var *lookup(const std::string &name); + Var &addVar(Pos p, const std::string &name, const FType &t, llvm::Value *init, bool owned, bool readonly = false, + unsigned argNo = 0); + + Value_ expr(const Expr &e); + Value_ exprWant(const Expr &e, const FType &want); + Value_ binary(const BinaryExpr &e); + Value_ unary(const UnaryExpr &e); + Value_ logic(const BinaryExpr &e); + Value_ arith(BinOp op, Value_ l, Value_ r, Pos p); + Value_ arithOp(BinOp op, Value_ l, Value_ r, Pos p); + Value_ compare(BinOp op, Value_ l, Value_ r, Pos p); + bool unify(Value_ &l, Value_ &r); + [[noreturn]] void badOperands(BinOp op, const Value_ &l, const Value_ &r, Pos p); + LRef ref(const Expr &e, bool forWrite = false); // an address if `e` has one, else a value + Place place(const Expr &e, bool forWrite = false); + LRef member(const MemberExpr &m, bool forWrite); + LRef index(const IndexExpr &e, bool forWrite); + Value_ arrayLit(const ArrayLitExpr &a, const FType *want); + Value_ fallible(const Expr &call, llvm::Value *&failed, llvm::Value *&msg); + Value_ tryExpr(const TryExpr &t); + Value_ orElse(const OrElseExpr &e, bool discard = false); // discard: a statement, the value isn't used + FType structType(StructInfo *s); + std::string rootVar(const Expr &e); + bool mutates(const std::string &name, const Stmt &s); + bool mutatesExpr(const std::string &name, const Expr &e); + + // ---------- codegen_types.cpp: types, conversions, ownership, printing ---------- + llvm::Type *ty(const FType &t); + FType resolve(const FType &t, Pos p); + FType resolveT(const FType &t, Pos p, bool deep); // deep: structs by value must be complete + void forN(llvm::Value *n, const std::function &body); // for i in 0..n + llvm::Value *tmpOf(llvm::Type *t); // an uninitialised stack slot + void resolveStruct(StructInfo *s); + StructInfo *findStruct(const std::string &module, const std::string &name, bool qualified); + bool owning(const FType &t); + llvm::Constant *zero(const FType &t); + Value_ defaultValue(const FType &t, Pos p); + static bool widens(const FType &from, const FType &to); + static bool fits(llvm::ConstantInt *c, const FType &from, const FType &to); + llvm::Value *intCast(llvm::Value *v, const FType &from, const FType &to); + llvm::Value *intToFloat(llvm::Value *v, const FType &from, const FType &to); + Value_ coerce(Value_ v, const FType &want, Pos p, const std::string &what); + llvm::Value *own(const Value_ &v); // something that can be stored: moved if fresh, else copied + void release(const Value_ &v); // drop a fresh value nobody kept + llvm::Value *copyValue(llvm::Value *v, const FType &t); + void dropValue(llvm::Value *v, const FType &t); + void dropAt(llvm::Value *addr, const FType &t); + void copyAt(llvm::Value *dst, llvm::Value *src, const FType &t); + llvm::Function *dropFn(const FType &t); + llvm::Function *copyFn(const FType &t); + std::string typeKey(const FType &t); + llvm::Value *tmp(llvm::Value *v); // a stack copy of v, to pass by address + void emitPrint(llvm::Value *v, const FType &t, bool quoted); + void emitFormat(llvm::Value *buf, llvm::Value *v, const FType &t, bool quoted); // append v as text to the str at buf + void bufText(llvm::Value *buf, const std::string &text); + llvm::Function *formatFn(const FType &t); + void printf_(const std::string &fmt, std::vector args); + llvm::Value *strConst(const std::string &s); + llvm::Value *cstr(llvm::Value *strValue); // str -> char* for C + Value_ strFromC(llvm::Value *p); // char* -> borrowed str + llvm::Value *elemSize(const FType &t); + + // ---------- codegen_builtins.cpp: calls, built-ins, methods ---------- + Value_ call(const CallExpr &c); + Value_ method(const MethodExpr &m); + Value_ callFinch(const Fn &fn, const std::vector &args, const std::vector &names, Pos p, + const std::string &shownName, const Expr *site, llvm::Value *self = nullptr, + const std::string &selfRoot = ""); + Value_ construct(StructInfo *s, const std::vector &args, const std::vector &names, Pos p); + Value_ callC(const CFunc &f, const std::vector &args, Pos p); + Value_ convert(const FType &to, const std::vector &args, Pos p, const std::string &name, bool canFail = false); + Value_ print(const std::vector &args, Pos p); + Value_ addrOf(const std::vector &args, Pos p); + Value_ arrayMethod(const MethodExpr &m, Value_ *recv); + Value_ structMethod(const MethodExpr &m, LRef &r, const FType &t); + + // ---------- codegen_map.cpp: maps ---------- + llvm::StructType *mapEntryTy(const FType &t); + Value_ mapLit(const MapLitExpr &e, const FType *want); + LRef mapIndex(const IndexExpr &e, LRef &obj, const FType &t, bool forWrite); + Value_ mapMethod(const MethodExpr &m, Value_ *recv); + std::vector mapArgs(llvm::Value *map, llvm::Value *keyAddr, const FType &t); + llvm::Value *mapSlot(llvm::Value *map, const FType &t, const Value_ &key, Pos p, bool fill); + llvm::Value *mapEntry(llvm::Value *map, const FType &t, llvm::Value *i); + void forEachEntry(llvm::Value *map, const FType &t, const std::function &body); + llvm::Value *keyText(const Value_ &key); + bool isBuiltin(const std::string &n); + std::string headerHint(const std::string &name); + void checkArgs(const std::vector &args, const std::vector &names, size_t want, Pos p, + const std::string &name, bool variadic = false); + llvm::Value *cGlobal(const std::string &name); + llvm::Function *rt(const std::string &name); // a runtime function by name + + // runtime errors + llvm::Value *fileName(Pos p); + void panicIf(llvm::Value *cond, const std::string &msg, Pos p); + void boundsCheck(llvm::Value *i, llvm::Value *len, Pos p); + void checkDivisor(const Value_ &l, const Value_ &r, Pos p); + llvm::Function *libc(const char *name, llvm::Type *ret, std::vector params, bool vararg = false); + + // ---------- abi.cpp: C calling convention for structs by value ---------- + AbiArg classify(const FType &t); + llvm::Function *declareC(const CFunc &f); + Value_ emitCCall(const CFunc &f, llvm::Function *fn, std::vector args, Pos p); + llvm::Function *cThunk(Fn &fn, Pos p); + + // ---------- language server index ---------- + void note(Pos at, size_t len, const std::string &hover, Pos def = Pos{}); + std::string signature(const Fn &fn); + std::string structHover(StructInfo *s); + + // ---------- debug info ---------- + void setLoc(Pos p); + llvm::DIType *diType(const FType &t); +}; + +} // namespace finch diff --git a/src/codegen_map.cpp b/src/codegen_map.cpp new file mode 100644 index 0000000..182d396 --- /dev/null +++ b/src/codegen_map.cpp @@ -0,0 +1,246 @@ +// Code generation, part 4: maps. +// +// map[K]V is { entries, len, used, cap, index, icap } (see runtime/finch_rt.c). The runtime finds and +// places entries; the compiler stores, copies and drops the keys and values in them, like it does +// for array elements. An entry is { i64 hash, K key, V value }; hash 0 marks a removed entry. + +#include "codegen_impl.h" +#include "builtins_doc.h" + +using namespace llvm; + +namespace finch { + +StructType *Codegen::mapEntryTy(const FType &t) { + return StructType::get(ctx, {b.getInt64Ty(), ty(*t.key), ty(*t.elem)}); +} + +// The runtime's (map, key, entry size, key size, key is str) arguments. +std::vector Codegen::mapArgs(Value *map, Value *keyAddr, const FType &t) { + return {map, keyAddr, b.getInt64(dl->getTypeAllocSize(mapEntryTy(t))), elemSize(*t.key), + b.getInt32(t.key->kind == FType::Str ? 1 : 0)}; +} + +Value *Codegen::mapEntry(Value *map, const FType &t, Value *i) { + Value *entries = b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(ty(t), map, 0)); + return b.CreateInBoundsGEP(mapEntryTy(t), entries, i); +} + +// The entry for `key`, added if it's missing: the key is copied in, and the value is its type's +// default when `fill` (m[k] += 1 starts from 0). +Value *Codegen::mapSlot(Value *map, const FType &t, const Value_ &key, Pos p, bool fill) { + StructType *ET = mapEntryTy(t); + Value *keyAddr = tmp(key.v); + Value *added = tmpOf(b.getInt32Ty()); + std::vector args = mapArgs(map, keyAddr, t); + args.push_back(added); + Value *entry = mapEntry(map, t, b.CreateCall(rt("finch_map_slot"), args)); + BasicBlock *fresh = newBlock("map.new"), *have = newBlock("map.have"); + b.CreateCondBr(b.CreateICmpNE(b.CreateLoad(b.getInt32Ty(), added), b.getInt32(0)), fresh, have); + b.SetInsertPoint(fresh); + copyAt(b.CreateStructGEP(ET, entry, 1), keyAddr, *t.key); + if (fill) b.CreateStore(own(defaultValue(*t.elem, p)), b.CreateStructGEP(ET, entry, 2)); + b.CreateBr(have); + b.SetInsertPoint(have); + return entry; +} + +// Every live entry, in insertion order: body(entry number, entry address). +void Codegen::forEachEntry(Value *map, const FType &t, const std::function &body) { + Value *used = b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(ty(t), map, 2)); + forN(used, [&](Value *i) { + Value *entry = mapEntry(map, t, i); + Value *hash = b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(mapEntryTy(t), entry, 0)); + BasicBlock *live = newBlock("entry.live"), *next = newBlock("entry.next"); + b.CreateCondBr(b.CreateICmpNE(hash, b.getInt64(0)), live, next); + b.SetInsertPoint(live); + body(i, entry); + b.CreateBr(next); + b.SetInsertPoint(next); + }); +} + +// A key as text for error messages: "bob" or 42 +Value *Codegen::keyText(const Value_ &key) { + Value *out = tmpOf(ty(FType::Str)); + const FType &t = key.type; + if (t.kind == FType::Str) { + Value *q = tmp(strConst("\"")), *half = tmpOf(ty(FType::Str)); + b.CreateCall(rt("finch_str_concat"), {half, q, tmp(key.v)}); + b.CreateCall(rt("finch_str_concat"), {out, half, q}); + } else if (t.isSigned()) { + b.CreateCall(rt("finch_str_from_int"), {out, b.CreateSExt(key.v, b.getInt64Ty())}); + } else if (t.isUnsigned()) { + b.CreateCall(rt("finch_str_from_uint"), {out, b.CreateZExt(key.v, b.getInt64Ty())}); + } else if (t.kind == FType::Char) { + b.CreateCall(rt("finch_str_from_char"), {out, key.v}); + } else { + b.CreateCall(rt("finch_str_from_bool"), {out, b.CreateZExt(key.v, b.getInt32Ty())}); + } + return out; +} + +// m[key]: reading a missing key stops the program; writing (m[k] = v, m[k] += 1, m[k].push(x)) adds it +LRef Codegen::mapIndex(const IndexExpr &e, LRef &obj, const FType &t, bool forWrite) { + Pos p = e.pos; + FType kt = *t.key, vt = *t.elem; + Value_ key = coerce(exprWant(*e.index, kt), kt, e.index->pos, "the key"); + if (forWrite) { + if (!obj.isPlace) failAt(p.file, p.line, p.col, "this is a temporary map, it can't be changed"); + Value *entry = mapSlot(obj.pl.addr, t, key, p, true); + release(key); + return {true, {b.CreateStructGEP(mapEntryTy(t), entry, 2), vt}, {}}; + } + Value *map = obj.isPlace ? obj.pl.addr : tmp(obj.val.v); + Value *i = b.CreateCall(rt("finch_map_find"), mapArgs(map, tmp(key.v), t)); + BasicBlock *missing = newBlock("map.missing"), *found = newBlock("map.found"); + b.CreateCondBr(b.CreateICmpSLT(i, b.getInt64(0)), missing, found); + b.SetInsertPoint(missing); + b.CreateCall(rt("finch_map_missing"), {fileName(p), b.getInt64(p.line), keyText(key)}); + b.CreateUnreachable(); + b.SetInsertPoint(found); + release(key); + Value *valueAddr = b.CreateStructGEP(mapEntryTy(t), mapEntry(map, t, i), 2); + if (obj.isPlace) return {true, {valueAddr, vt}, {}}; + Value *v = b.CreateLoad(ty(vt), valueAddr); // from a temporary map: take the value, drop the rest + Value_ out{v, vt}; + if (owning(vt) && obj.val.fresh) out = {copyValue(v, vt), vt, false, true}; + release(obj.val); + return {false, {}, out}; +} + +// ["a": 1, "b": 2], or [:] where the type is known +Value_ Codegen::mapLit(const MapLitExpr &e, const FType *want) { + Pos p = e.pos; + FType t; + Value_ k0, v0; // the first entry, when it decides the types + bool first = false; + if (want && want->kind == FType::Map) { + t = *want; + } else if (e.keys.empty()) { + failAt(p.file, p.line, p.col, "an empty [:] needs a type, like: map[str]int m = [:]"); + } else { + // number values written in the code are all floats if any of them has a dot + bool allNum = true, anyFloat = false; + for (auto &x : e.values) { + const Expr *y = x.get(); + if (y->kind == ExprKind::Unary && static_cast(y)->op == '-') y = static_cast(y)->operand.get(); + if (y->kind == ExprKind::Float) anyFloat = true; + else if (y->kind != ExprKind::Int) allNum = false; + } + k0 = expr(*e.keys[0]); + v0 = expr(*e.values[0]); + Pos kp = e.keys[0]->pos, vp = e.values[0]->pos; + if (k0.type.kind == FType::Void || k0.type.kind == FType::Null) failAt(kp.file, kp.line, kp.col, "a map key needs a value with a type"); + if (v0.type.kind == FType::Void || v0.type.kind == FType::Null) failAt(vp.file, vp.line, vp.col, "a map value needs a value with a type"); + t = resolve(FType::mapOf(k0.type, allNum && anyFloat ? FType(FType::F64) : v0.type), kp); + first = true; + } + Value *map = tmp(zero(t)); + StructType *ET = mapEntryTy(t); + Held held(*this); + holdAddr(map, t); // the entries so far, if a later one leaves early + for (size_t i = 0; i < e.keys.size(); i++) { + Held entry(*this); + Value_ k = i == 0 && first ? k0 : exprWant(*e.keys[i], *t.key); + k = coerce(k, *t.key, e.keys[i]->pos, "every key of this map"); + hold(k); + Value_ v = i == 0 && first ? v0 : exprWant(*e.values[i], *t.elem); + Value *vv = own(coerce(v, *t.elem, e.values[i]->pos, "every value of this map")); + Value *valueAddr = b.CreateStructGEP(ET, mapSlot(map, t, k, p, false), 2); + dropAt(valueAddr, *t.elem); // a key given twice: the last value wins + b.CreateStore(vv, valueAddr); + release(k); + } + return {b.CreateLoad(ty(t), map), t, false, true}; +} + +Value_ Codegen::mapMethod(const MethodExpr &m, Value_ *recv) { + Pos p = m.pos; + const std::string &n = m.name; + FType t = recv->type, kt = *t.key, vt = *t.elem; + StructType *ET = mapEntryTy(t); + Value *map = recv->v; + auto need = [&](size_t k) { checkArgs(m.args, m.argNames, k, p, n); }; + auto keyArg = [&]() { return coerce(exprWant(*m.args[0], kt), kt, m.args[0]->pos, "the key"); }; + if (g_index) + for (const BuiltinDoc &d : kMapMethods) + if (n == d.name) note(Pos{p.line, p.col + 1, p.file}, n.size(), "```finch\n" + std::string(d.signature) + "\n```\n" + d.doc); + + if (n == "has") { + need(1); + Value_ k = keyArg(); + Value *i = b.CreateCall(rt("finch_map_find"), mapArgs(map, tmp(k.v), t)); + release(k); + return {b.CreateICmpSGE(i, b.getInt64(0)), FType::Bool}; + } + if (n == "get") { // m.get(key, default): the default is only computed when the key is missing + need(2); + Value_ k = keyArg(); + Value *i = b.CreateCall(rt("finch_map_find"), mapArgs(map, tmp(k.v), t)); + release(k); + BasicBlock *found = newBlock("get.found"), *missing = newBlock("get.missing"), *end = newBlock("get.end"); + b.CreateCondBr(b.CreateICmpSGE(i, b.getInt64(0)), found, missing); + b.SetInsertPoint(found); + Value *v = b.CreateLoad(ty(vt), b.CreateStructGEP(ET, mapEntry(map, t, i), 2)); + v = copyValue(v, vt); + BasicBlock *foundEnd = b.GetInsertBlock(); + b.CreateBr(end); + b.SetInsertPoint(missing); + Value *d = own(coerce(exprWant(*m.args[1], vt), vt, m.args[1]->pos, "the default")); + BasicBlock *missingEnd = b.GetInsertBlock(); + b.CreateBr(end); + b.SetInsertPoint(end); + PHINode *phi = b.CreatePHI(ty(vt), 2); + phi->addIncoming(v, foundEnd); + phi->addIncoming(d, missingEnd); + return {phi, vt, false, owning(vt)}; + } + if (n == "remove") { // true if the key was there + need(1); + Value_ k = keyArg(); + Value *i = b.CreateCall(rt("finch_map_find"), mapArgs(map, tmp(k.v), t)); + release(k); + BasicBlock *hit = newBlock("remove.hit"), *end = newBlock("remove.end"); + Value *was = b.CreateICmpSGE(i, b.getInt64(0)); + b.CreateCondBr(was, hit, end); + b.SetInsertPoint(hit); + Value *entry = mapEntry(map, t, i); + dropAt(b.CreateStructGEP(ET, entry, 1), kt); + dropAt(b.CreateStructGEP(ET, entry, 2), vt); + b.CreateCall(rt("finch_map_remove_at"), {map, i, b.getInt64(dl->getTypeAllocSize(ET))}); + b.CreateBr(end); + b.SetInsertPoint(end); + return {was, FType::Bool}; + } + if (n == "clear") { + need(0); + if (owning(kt) || owning(vt)) + forEachEntry(map, t, [&](Value *, Value *entry) { + dropAt(b.CreateStructGEP(ET, entry, 1), kt); + dropAt(b.CreateStructGEP(ET, entry, 2), vt); + }); + b.CreateCall(rt("finch_map_clear"), {map}); + return {nullptr, FType::Void}; + } + if (n == "keys" || n == "values") { // a new array, in insertion order + need(0); + FType et = n == "keys" ? kt : vt; + unsigned field = n == "keys" ? 1 : 2; + FType at = FType::arrayOf(et); + Value *out = tmpOf(ty(at)); + Value *len = b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(ty(t), map, 1)); + b.CreateCall(rt("finch_arr_make"), {out, len, elemSize(et)}); + Value *data = b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(ty(at), out, 0)); + Value *j = tmp(b.getInt64(0)); + forEachEntry(map, t, [&](Value *, Value *entry) { + Value *jv = b.CreateLoad(b.getInt64Ty(), j); + copyAt(b.CreateInBoundsGEP(ty(et), data, jv), b.CreateStructGEP(ET, entry, field), et); + b.CreateStore(b.CreateAdd(jv, b.getInt64(1)), j); + }); + return {b.CreateLoad(ty(at), out), at, false, true}; + } + failAt(p.file, p.line, p.col, "a map has no method '" + n + "' (it has: has, get, remove, clear, keys, values; and m[key], .len)"); +} + +} // namespace finch diff --git a/src/codegen_types.cpp b/src/codegen_types.cpp new file mode 100644 index 0000000..4879997 --- /dev/null +++ b/src/codegen_types.cpp @@ -0,0 +1,580 @@ +// Code generation, part 2: types, conversions, ownership (copy/drop) and printing. + +#include "codegen_impl.h" + +using namespace llvm; + +namespace finch { + +// ---------- types ---------- + +llvm::Type *Codegen::ty(const FType &t) { + switch (t.kind) { + case FType::Void: return b.getVoidTy(); + case FType::Bool: return b.getInt1Ty(); + case FType::Char: + case FType::I8: + case FType::U8: return b.getInt8Ty(); + case FType::I16: + case FType::U16: return b.getInt16Ty(); + case FType::I32: + case FType::U32: return b.getInt32Ty(); + case FType::I64: + case FType::U64: return b.getInt64Ty(); + case FType::F32: return b.getFloatTy(); + case FType::F64: return b.getDoubleTy(); + case FType::Str: + case FType::Array: return StructType::get(ctx, {b.getPtrTy(), b.getInt64Ty(), b.getInt64Ty()}); + case FType::Map: { + llvm::Type *P = b.getPtrTy(), *I = b.getInt64Ty(); + return StructType::get(ctx, {P, I, I, I, P, I, I}); // entries, len, used, cap, index, icap, adds + } + case FType::Ptr: + case FType::Null: return b.getPtrTy(); + case FType::Fixed: return ArrayType::get(ty(*t.elem), t.count); + case FType::Struct: return t.info->llvm; + case FType::Named: break; + } + std::fprintf(stderr, "internal compiler error: unresolved type %s\n", t.show().c_str()); + std::exit(2); +} + +FType Codegen::resolve(const FType &t, Pos p) { return resolveT(t, p, true); } + +StructInfo *Codegen::findStruct(const std::string &module, const std::string &name, bool qualified) { + if (qualified) { + if (module == "C") { + auto it = cStructs.find(name); + return it == cStructs.end() ? nullptr : it->second; + } + auto m = modules.find(module); + if (m == modules.end()) return nullptr; + auto it = m->second.structs.find(name); + return it == m->second.structs.end() ? nullptr : it->second; + } + auto &here = modules[curModule].structs; + if (auto it = here.find(name); it != here.end()) return it->second; + if (auto it = cStructs.find(name); it != cStructs.end()) return it->second; + return nullptr; +} + +FType Codegen::resolveT(const FType &t, Pos p, bool deep) { + switch (t.kind) { + case FType::Ptr: + if (!t.elem) return t; + return FType::ptrTo(resolveT(*t.elem, p, false)); + case FType::Array: return FType::arrayOf(resolveT(*t.elem, p, false)); + case FType::Map: { + FType k = resolveT(*t.key, p, true); + if (!k.isInt() && k.kind != FType::Char && k.kind != FType::Bool && k.kind != FType::Str) + failAt(p.file, p.line, p.col, "a map key must be a whole number, a char, a bool or a str, not " + k.show()); + FType v = resolveT(*t.elem, p, false); + if (v.kind == FType::Void) failAt(p.file, p.line, p.col, "a map value can't have the type 'nothing'"); + return FType::mapOf(k, v); + } + case FType::Fixed: { + FType f = t; + f.elem = std::make_shared(resolveT(*t.elem, p, deep)); + return f; + } + case FType::Named: { + bool qualified = !t.module.empty(); + if (qualified && t.module != "C" && !modules[curModule].imports.count(t.module)) + failAt(p.file, p.line, p.col, "'" + t.module + "' is not imported here (add: import " + t.module + ")"); + StructInfo *s = findStruct(t.module, t.name, qualified); + if (!s) failAt(p.file, p.line, p.col, "there is no type named '" + t.show() + "'"); + FType r(FType::Struct); + r.info = s; + r.name = s->name; + r.module = s->module == "C" ? "" : s->module; // shown as math.Vec; C and main-file structs by name + if (deep) resolveStruct(s); + return r; + } + default: return t; + } +} + +void Codegen::resolveStruct(StructInfo *s) { + if (s->state == 2) return; + if (s->state == 1) + failAt(s->pos.file, s->pos.line, s->pos.col, + "the struct " + s->name + " contains itself; use ptr[" + s->name + "] or []" + s->name + " for that field"); + s->state = 1; + std::string savedModule = curModule; + curModule = s->isC ? "" : s->module; + + std::vector elems; + if (!s->isC) { + for (const Field &f : s->decl->fields) { + StructInfo::F nf; + nf.name = f.name; + nf.type = resolveT(f.type, f.pos, true); + if (nf.type.kind == FType::Void) failAt(f.pos.file, f.pos.line, f.pos.col, "a field can't have the type 'nothing'"); + nf.init = f.init.get(); + nf.pos = f.namePos; + nf.llvmIndex = elems.size(); + elems.push_back(ty(nf.type)); + s->owning |= owning(nf.type); + s->fields.push_back(nf); + } + s->llvm->setBody(elems); + } else { + // Lay the C struct out byte for byte: explicit padding, packed, exactly C's offsets. + long long off = 0; + Pos none; + for (const CField &cf : s->cstruct->fields) { + if (cf.hidden || cf.offset < off) continue; + FType ft = resolveT(cf.type, none, true); + llvm::Type *lt = ty(ft); + long long size = dl->getTypeAllocSize(lt); + if (size != cf.size) continue; // something Finch can't mirror; the padding covers it + if (cf.offset > off) elems.push_back(ArrayType::get(b.getInt8Ty(), cf.offset - off)); + StructInfo::F nf; + nf.name = cf.name; + nf.type = ft; + nf.llvmIndex = elems.size(); + elems.push_back(lt); + s->fields.push_back(nf); + off = cf.offset + size; + } + if (s->cstruct->size > off) elems.push_back(ArrayType::get(b.getInt8Ty(), s->cstruct->size - off)); + s->llvm->setBody(elems, true); + if (s->cstruct->hasHidden && s->unsupported.empty()) s->unsupported = "has fields Finch can't see (unions or bit fields)"; + } + curModule = savedModule; + s->state = 2; +} + +bool Codegen::owning(const FType &t) { + switch (t.kind) { + case FType::Str: + case FType::Array: + case FType::Map: return true; + case FType::Struct: + resolveStruct(t.info); + return t.info->owning; + default: return false; + } +} + +Constant *Codegen::zero(const FType &t) { return Constant::getNullValue(ty(t)); } + +Value_ Codegen::defaultValue(const FType &t, Pos p) { + if (t.kind == FType::Struct && !t.info->isC) { + for (auto &f : t.info->fields) + if (f.init) return construct(t.info, {}, {}, p); + } + return {zero(t), t, false, owning(t)}; +} + +// Can every value of `from` be stored in `to`? (i8 -> i32 yes, i32 -> u32 no) +bool Codegen::widens(const FType &from, const FType &to) { + if (!from.isInt() || !to.isInt()) return false; + if (from.isSigned() && to.isUnsigned()) return false; + return to.bits() > from.bits(); +} + +// Does the constant number `c` (of type `from`) fit into `to`? +bool Codegen::fits(ConstantInt *c, const FType &from, const FType &to) { + if (!to.isInt()) return false; + bool negative = from.isSigned() && c->isNegative(); + if (negative && to.isUnsigned()) return false; + if (negative) return c->getSExtValue() >= -(1LL << (to.bits() - 1)); + unsigned long long v = c->getZExtValue(); + if (to.bits() == 64) return to.isUnsigned() || v <= (unsigned long long)INT64_MAX; + unsigned long long max = to.isUnsigned() ? (1ULL << to.bits()) - 1 : (1ULL << (to.bits() - 1)) - 1; + return v <= max; +} + +Value *Codegen::intCast(Value *v, const FType &from, const FType &to) { return b.CreateIntCast(v, ty(to), from.isSigned()); } + +Value *Codegen::intToFloat(Value *v, const FType &from, const FType &to) { + return from.isSigned() ? b.CreateSIToFP(v, ty(to)) : b.CreateUIToFP(v, ty(to)); +} + +// Implicit conversions: only the ones that can't surprise you. +Value_ Codegen::coerce(Value_ v, const FType &want, Pos p, const std::string &what) { + const FType &from = v.type; + if (from == want) return v; + if (from.kind == FType::Null && want.isPtr()) return {ConstantPointerNull::get(b.getPtrTy()), want}; + // any pointer fits an untyped `ptr`; an untyped ptr fits any pointer + if (want.isPtr() && from.isPtr() && (!want.elem || !from.elem)) return {v.v, want}; + + if (from.isInt() && want.isInt()) { + auto *c = v.literal ? dyn_cast(v.v) : nullptr; + if ((c && fits(c, from, want)) || widens(from, want)) return {intCast(v.v, from, want), want, (bool)c}; + if (c) + failAt(p.file, p.line, p.col, "the number " + std::to_string(from.isSigned() ? c->getSExtValue() : (long long)c->getZExtValue()) + + " doesn't fit in " + want.show()); + } + if (from.isInt() && want.isFloat()) return {intToFloat(v.v, from, want), want, v.literal}; + if (from.kind == FType::F32 && want.kind == FType::F64) return {b.CreateFPExt(v.v, ty(want)), want}; + if (from.kind == FType::F64 && want.kind == FType::F32 && v.literal) return {b.CreateFPTrunc(v.v, ty(want)), want, true}; + + std::string msg = what + " must be " + want.show() + ", but this is " + from.show(); + if (from.isNumber() && want.isNumber()) + msg += " (use " + want.show() + "(...) to convert" + (from.isFloat() && want.isInt() ? ", it cuts off the fraction)" : ")"); + else if (want.kind == FType::Str && (from.isNumber() || from.kind == FType::Bool || from.kind == FType::Char)) + msg += " (turn it into text with str(...))"; + else if (want.isPtr() && from.kind == FType::Str) + msg += " (use .ptr to get the text's address)"; + if (from.kind == FType::Null) msg = what + " can't be null (only pointers can)"; + failAt(p.file, p.line, p.col, msg); +} + +// ---------- ownership ---------- + +Value *Codegen::tmpOf(llvm::Type *t) { + Function *f = b.GetInsertBlock()->getParent(); + IRBuilder<> entry(&f->getEntryBlock(), f->getEntryBlock().begin()); + AllocaInst *a = entry.CreateAlloca(t); + if (t->isStructTy()) a->setAlignment(Align(16)); + return a; +} + +Value *Codegen::tmp(Value *v) { + Value *a = tmpOf(v->getType()); + b.CreateStore(v, a); + return a; +} + +Value *Codegen::own(const Value_ &v) { + if (!owning(v.type) || v.fresh) return v.v; + return copyValue(v.v, v.type); +} + +void Codegen::release(const Value_ &v) { + // constants (string literals, empty arrays) own no memory: nothing to free + if (v.fresh && v.v && !isa(v.v) && owning(v.type)) dropValue(v.v, v.type); +} + +Value *Codegen::copyValue(Value *v, const FType &t) { + if (!owning(t)) return v; + Value *out = tmpOf(ty(t)); + copyAt(out, tmp(v), t); + return b.CreateLoad(ty(t), out); +} + +void Codegen::dropValue(Value *v, const FType &t) { + if (owning(t)) dropAt(tmp(v), t); +} + +void Codegen::dropAt(Value *addr, const FType &t) { + if (!owning(t)) return; + if (t.kind == FType::Str) b.CreateCall(rt("finch_str_drop"), {addr}); + else b.CreateCall(dropFn(t), {addr}); +} + +void Codegen::copyAt(Value *dst, Value *src, const FType &t) { + if (!owning(t)) { + b.CreateStore(b.CreateLoad(ty(t), src), dst); + return; + } + if (t.kind == FType::Str) b.CreateCall(rt("finch_str_copy"), {dst, src}); + else b.CreateCall(copyFn(t), {dst, src}); +} + +void Codegen::forN(Value *n, const std::function &body) { + Value *i = tmpOf(b.getInt64Ty()); + b.CreateStore(b.getInt64(0), i); + BasicBlock *cond = newBlock("n.cond"), *loop = newBlock("n.body"), *end = newBlock("n.end"); + b.CreateBr(cond); + b.SetInsertPoint(cond); + Value *iv = b.CreateLoad(b.getInt64Ty(), i); + b.CreateCondBr(b.CreateICmpSLT(iv, n), loop, end); + b.SetInsertPoint(loop); + body(iv); + b.CreateStore(b.CreateAdd(iv, b.getInt64(1)), i); + b.CreateBr(cond); + b.SetInsertPoint(end); +} + +std::string Codegen::typeKey(const FType &t) { + switch (t.kind) { + case FType::Array: return "arr_" + typeKey(*t.elem); + case FType::Map: return "map_" + typeKey(*t.key) + "_" + typeKey(*t.elem); + case FType::Fixed: return "fix" + std::to_string(t.count) + "_" + typeKey(*t.elem); + case FType::Ptr: return "ptr"; + case FType::Struct: return "S_" + (t.info->module.empty() ? std::string("main") : t.info->module) + "_" + t.info->name; + default: return t.show(); + } +} + +// Helper functions are generated once per type and shared; they have no source position. +struct HelperScope { + Codegen &cg; + IRBuilderBase::InsertPointGuard guard; + DISubprogram *savedFn; + HelperScope(Codegen &c, Function *f) : cg(c), guard(c.b), savedFn(c.diFn) { + c.diFn = nullptr; + c.b.SetInsertPoint(BasicBlock::Create(c.ctx, "entry", f)); + c.b.SetCurrentDebugLocation(DebugLoc()); + } + ~HelperScope() { cg.diFn = savedFn; } +}; + +Function *Codegen::dropFn(const FType &t) { + std::string key = "drop." + typeKey(t); + if (auto it = helpers.find(key); it != helpers.end()) return it->second; + Function *f = Function::Create(FunctionType::get(b.getVoidTy(), {b.getPtrTy()}, false), Function::InternalLinkage, + "finch." + key, mod.get()); + helpers[key] = f; + HelperScope hs(*this, f); + Value *a = f->getArg(0); + if (t.kind == FType::Array) { + FType et = *t.elem; + if (owning(et)) { + Value *data = b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(ty(t), a, 0)); + Value *len = b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(ty(t), a, 1)); + forN(len, [&](Value *i) { dropAt(b.CreateInBoundsGEP(ty(et), data, i), et); }); + } + b.CreateCall(rt("finch_arr_free"), {a}); + } else if (t.kind == FType::Map) { + FType kt = *t.key, vt = *t.elem; + if (owning(kt) || owning(vt)) + forEachEntry(a, t, [&](Value *, Value *entry) { + dropAt(b.CreateStructGEP(mapEntryTy(t), entry, 1), kt); + dropAt(b.CreateStructGEP(mapEntryTy(t), entry, 2), vt); + }); + b.CreateCall(rt("finch_map_free"), {a}); + } else if (t.kind == FType::Struct) { + for (auto &fl : t.info->fields) + if (owning(fl.type)) dropAt(b.CreateStructGEP(t.info->llvm, a, fl.llvmIndex), fl.type); + } + b.CreateRetVoid(); + return f; +} + +Function *Codegen::copyFn(const FType &t) { + std::string key = "copy." + typeKey(t); + if (auto it = helpers.find(key); it != helpers.end()) return it->second; + Function *f = Function::Create(FunctionType::get(b.getVoidTy(), {b.getPtrTy(), b.getPtrTy()}, false), + Function::InternalLinkage, "finch." + key, mod.get()); + helpers[key] = f; + HelperScope hs(*this, f); + Value *dst = f->getArg(0), *src = f->getArg(1); + if (t.kind == FType::Array) { + FType et = *t.elem; + b.CreateCall(rt("finch_arr_clone_raw"), {dst, src, elemSize(et)}); + if (owning(et)) { + Value *d = b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(ty(t), dst, 0)); + Value *s = b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(ty(t), src, 0)); + Value *len = b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(ty(t), src, 1)); + forN(len, [&](Value *i) { + copyAt(b.CreateInBoundsGEP(ty(et), d, i), b.CreateInBoundsGEP(ty(et), s, i), et); + }); + } + } else if (t.kind == FType::Map) { + StructType *ET = mapEntryTy(t); + FType kt = *t.key, vt = *t.elem; + b.CreateCall(rt("finch_map_clone_raw"), {dst, src, b.getInt64(dl->getTypeAllocSize(ET))}); + if (owning(kt) || owning(vt)) // the slots were copied byte for byte: now give the copy its own keys and values + forEachEntry(src, t, [&](Value *i, Value *from) { + Value *to = mapEntry(dst, t, i); + copyAt(b.CreateStructGEP(ET, to, 1), b.CreateStructGEP(ET, from, 1), kt); + copyAt(b.CreateStructGEP(ET, to, 2), b.CreateStructGEP(ET, from, 2), vt); + }); + } else if (t.kind == FType::Struct) { + b.CreateStore(b.CreateLoad(ty(t), src), dst); + for (auto &fl : t.info->fields) + if (owning(fl.type)) + copyAt(b.CreateStructGEP(t.info->llvm, dst, fl.llvmIndex), b.CreateStructGEP(t.info->llvm, src, fl.llvmIndex), fl.type); + } + b.CreateRetVoid(); + return f; +} + +// ---------- strings ---------- + +Value *Codegen::strConst(const std::string &s) { + Constant *g = b.CreateGlobalString(s, "str"); + return ConstantStruct::get(cast(ty(FType::Str)), {g, b.getInt64(s.size()), b.getInt64(0)}); +} + +// str -> char* for C (an empty str may have no memory at all; C gets "" then) +Value *Codegen::cstr(Value *s) { + Value *p = b.CreateExtractValue(s, 0); + return b.CreateSelect(b.CreateIsNull(p), b.CreateGlobalString("", "empty"), p); +} + +Value_ Codegen::strFromC(Value *p) { + Value *out = tmpOf(ty(FType::Str)); + b.CreateCall(rt("finch_str_from_c"), {out, p}); + return {b.CreateLoad(ty(FType::Str), out), FType::Str}; +} + +Value *Codegen::elemSize(const FType &t) { return b.getInt64(dl->getTypeAllocSize(ty(t))); } + +// ---------- printing ---------- + +void Codegen::printf_(const std::string &fmt, std::vector args) { + args.insert(args.begin(), b.CreateGlobalString(fmt, "fmt")); + b.CreateCall(libc("printf", b.getInt32Ty(), {b.getPtrTy()}, true), args); +} + +void Codegen::emitPrint(Value *v, const FType &t, bool quoted) { + if (t.isSigned()) printf_("%lld", {b.CreateSExt(v, b.getInt64Ty())}); + else if (t.isUnsigned()) printf_("%llu", {b.CreateZExt(v, b.getInt64Ty())}); + else if (t.isFloat()) printf_("%g", {b.CreateFPExt(v, b.getDoubleTy())}); + else if (t.kind == FType::Char) printf_(quoted ? "'%c'" : "%c", {b.CreateZExt(v, b.getInt32Ty())}); + else if (t.kind == FType::Bool) printf_("%s", {b.CreateSelect(v, b.CreateGlobalString("true", "true"), b.CreateGlobalString("false", "false"))}); + else if (t.kind == FType::Str) + printf_(quoted ? "\"%.*s\"" : "%.*s", {b.CreateTrunc(b.CreateExtractValue(v, 1), b.getInt32Ty()), cstr(v)}); + else { // pointers, arrays, maps, structs: built as text first (the same text str(x) gives) + Value *buf = tmp(zero(FType::Str)); + emitFormat(buf, v, t, quoted); + b.CreateCall(rt("finch_buf_print"), {buf}); + } +} + +void Codegen::bufText(Value *buf, const std::string &text) { + b.CreateCall(rt("finch_buf_add"), {buf, b.CreateGlobalString(text, "txt"), b.getInt64(text.size())}); +} + +void Codegen::emitFormat(Value *buf, Value *v, const FType &t, bool quoted) { + if (t.isSigned()) b.CreateCall(rt("finch_buf_int"), {buf, b.CreateSExt(v, b.getInt64Ty())}); + else if (t.isUnsigned()) b.CreateCall(rt("finch_buf_uint"), {buf, b.CreateZExt(v, b.getInt64Ty())}); + else if (t.isFloat()) b.CreateCall(rt("finch_buf_float"), {buf, b.CreateFPExt(v, b.getDoubleTy())}); + else if (t.kind == FType::Char) b.CreateCall(rt("finch_buf_char"), {buf, v, b.getInt32(quoted)}); + else if (t.kind == FType::Bool) b.CreateCall(rt("finch_buf_bool"), {buf, b.CreateZExt(v, b.getInt32Ty())}); + else if (t.kind == FType::Str) b.CreateCall(rt("finch_buf_str"), {buf, tmp(v), b.getInt32(quoted)}); + else if (t.isPtr() || t.kind == FType::Null) b.CreateCall(rt("finch_buf_ptr"), {buf, v}); // the same everywhere: null or 0x... + else b.CreateCall(formatFn(t), {buf, tmp(v)}); +} + +// One function per array / map / struct type: (str *buf, T *value) +Function *Codegen::formatFn(const FType &t) { + std::string key = "format." + typeKey(t); + if (auto it = helpers.find(key); it != helpers.end()) return it->second; + Function *f = Function::Create(FunctionType::get(b.getVoidTy(), {b.getPtrTy(), b.getPtrTy()}, false), + Function::InternalLinkage, "finch." + key, mod.get()); + helpers[key] = f; + HelperScope hs(*this, f); + Value *buf = f->getArg(0), *a = f->getArg(1); + if (t.kind == FType::Array || t.kind == FType::Fixed) { + FType et = *t.elem; + Value *data, *len; + if (t.kind == FType::Fixed) { + data = a; + len = b.getInt64(t.count); + } else { + data = b.CreateLoad(b.getPtrTy(), b.CreateStructGEP(ty(t), a, 0)); + len = b.CreateLoad(b.getInt64Ty(), b.CreateStructGEP(ty(t), a, 1)); + } + bufText(buf, "["); + forN(len, [&](Value *i) { + BasicBlock *sep = newBlock("sep"), *item = newBlock("item"); + b.CreateCondBr(b.CreateICmpSGT(i, b.getInt64(0)), sep, item); + b.SetInsertPoint(sep); + bufText(buf, ", "); + b.CreateBr(item); + b.SetInsertPoint(item); + emitFormat(buf, b.CreateLoad(ty(et), b.CreateInBoundsGEP(ty(et), data, i)), et, true); + }); + bufText(buf, "]"); + } else if (t.kind == FType::Map) { // {"a": 1, "b": 2} + StructType *ET = mapEntryTy(t); + Value *firstItem = tmp(b.getInt1(true)); + bufText(buf, "{"); + forEachEntry(a, t, [&](Value *, Value *entry) { + BasicBlock *sep = newBlock("sep"), *item = newBlock("item"); + b.CreateCondBr(b.CreateLoad(b.getInt1Ty(), firstItem), item, sep); + b.SetInsertPoint(sep); + bufText(buf, ", "); + b.CreateBr(item); + b.SetInsertPoint(item); + b.CreateStore(b.getInt1(false), firstItem); + emitFormat(buf, b.CreateLoad(ty(*t.key), b.CreateStructGEP(ET, entry, 1)), *t.key, true); + bufText(buf, ": "); + emitFormat(buf, b.CreateLoad(ty(*t.elem), b.CreateStructGEP(ET, entry, 2)), *t.elem, true); + }); + bufText(buf, "}"); + } else if (t.kind == FType::Struct) { + bufText(buf, t.info->name + "("); + bool first = true; + for (auto &fl : t.info->fields) { + if (fl.hidden) continue; + bufText(buf, (first ? "" : ", ") + fl.name + ": "); + first = false; + emitFormat(buf, b.CreateLoad(ty(fl.type), b.CreateStructGEP(t.info->llvm, a, fl.llvmIndex)), fl.type, true); + } + bufText(buf, ")"); + } + b.CreateRetVoid(); + return f; +} + +// ---------- debug info ---------- + +DIType *Codegen::diType(const FType &t) { + std::string key = typeKey(t); + if (auto it = diTypes.find(key); it != diTypes.end()) return it->second; + DIType *d = nullptr; + auto basic = [&](const char *n, unsigned bits, unsigned enc) { return di->createBasicType(n, bits, enc); }; + switch (t.kind) { + case FType::Void: return nullptr; + case FType::Bool: d = basic("bool", 8, dwarf::DW_ATE_boolean); break; + case FType::Char: d = basic("char", 8, dwarf::DW_ATE_signed_char); break; + case FType::I8: d = basic("i8", 8, dwarf::DW_ATE_signed); break; + case FType::I16: d = basic("i16", 16, dwarf::DW_ATE_signed); break; + case FType::I32: d = basic("i32", 32, dwarf::DW_ATE_signed); break; + case FType::I64: d = basic("int", 64, dwarf::DW_ATE_signed); break; + case FType::U8: d = basic("u8", 8, dwarf::DW_ATE_unsigned); break; + case FType::U16: d = basic("u16", 16, dwarf::DW_ATE_unsigned); break; + case FType::U32: d = basic("u32", 32, dwarf::DW_ATE_unsigned); break; + case FType::U64: d = basic("u64", 64, dwarf::DW_ATE_unsigned); break; + case FType::F32: d = basic("f32", 32, dwarf::DW_ATE_float); break; + case FType::F64: d = basic("float", 64, dwarf::DW_ATE_float); break; + case FType::Ptr: + case FType::Null: d = di->createPointerType(t.elem ? diType(*t.elem) : nullptr, 64, 0, std::nullopt, t.show()); break; + case FType::Fixed: + d = di->createArrayType(t.count * (uint64_t)dl->getTypeAllocSizeInBits(ty(*t.elem)), 0, diType(*t.elem), + di->getOrCreateArray({di->getOrCreateSubrange(0, t.count)})); + break; + case FType::Str: + case FType::Array: { + DIType *et = t.kind == FType::Str ? diType(FType::Char) : diType(*t.elem); + DIType *pt = di->createPointerType(et, 64); + DIType *i64 = diType(FType::I64); + DIFile *f = diFiles[0]; + Metadata *els[] = {di->createMemberType(diUnit, "ptr", f, 0, 64, 64, 0, DINode::FlagZero, pt), + di->createMemberType(diUnit, "len", f, 0, 64, 64, 64, DINode::FlagZero, i64), + di->createMemberType(diUnit, "cap", f, 0, 64, 64, 128, DINode::FlagZero, i64)}; + d = di->createStructType(diUnit, t.show(), f, 0, 192, 64, DINode::FlagZero, nullptr, di->getOrCreateArray(els)); + break; + } + case FType::Map: { // shown by its parts; the entries are behind `entries` + DIType *i64 = diType(FType::I64), *pt = di->createPointerType(nullptr, 64); + DIFile *f = diFiles[0]; + const char *names[] = {"entries", "len", "used", "cap", "index", "icap", "adds"}; + std::vector els; + for (unsigned k = 0; k < 7; k++) + els.push_back(di->createMemberType(diUnit, names[k], f, 0, 64, 64, 64 * k, DINode::FlagZero, k == 0 || k == 4 ? pt : i64)); + d = di->createStructType(diUnit, t.show(), f, 0, 448, 64, DINode::FlagZero, nullptr, di->getOrCreateArray(els)); + break; + } + case FType::Struct: { + StructInfo *s = t.info; + DIFile *f = s->isC ? diFiles[0] : diFiles[s->pos.file]; + auto *fwd = di->createReplaceableCompositeType(dwarf::DW_TAG_structure_type, s->name, diUnit, f, s->pos.line); + diTypes[key] = fwd; + const StructLayout *lay = dl->getStructLayout(s->llvm); + std::vector els; + for (auto &fl : s->fields) { + uint64_t bits = dl->getTypeAllocSizeInBits(ty(fl.type)); + els.push_back(di->createMemberType(diUnit, fl.name, f, s->pos.line, bits, 8, lay->getElementOffsetInBits(fl.llvmIndex), + DINode::FlagZero, diType(fl.type))); + } + DICompositeType *real = di->createStructType(diUnit, s->name, f, s->pos.line, lay->getSizeInBits(), 8, + DINode::FlagZero, nullptr, di->getOrCreateArray(els)); + di->replaceTemporary(TempDIType(fwd), real); + d = real; + break; + } + case FType::Named: return nullptr; + } + diTypes[key] = d; + return d; +} + +} // namespace finch diff --git a/src/docs.fch b/src/docs.fch deleted file mode 100644 index 2c75a0e..0000000 --- a/src/docs.fch +++ /dev/null @@ -1,109 +0,0 @@ -// One description of every built-in function and method, shared by the compiler (the index the language -// server asks for) and the language server (hover, completion, signature help). - -struct Doc { - str name - str signature - str text -} - -fn doc(str name, str signature, str text) -> Doc { - return Doc(name: name, signature: signature, text: text) -} - -fn builtins() -> []Doc { - return [ - doc("print", "print(a, b, ...)", "Prints the values separated by spaces, then a new line. Works with every type."), - doc("input", "input(str question = \"\") -> str", "Shows the question and reads one line typed by the user, without the newline."), - doc("read_file", "read_file(str path) -> str", "The whole file as text. Stops the program if it can't be read, unless handled: read_file(p) or { ... }, try read_file(p)."), - doc("write_file", "write_file(str path, str text) -> bool", "Writes (replaces) the file. true if it worked; with or / try, the reason it didn't."), - doc("file_exists", "file_exists(str path) -> bool", "Is there a file at this path?"), - doc("delete_file", "delete_file(str path) -> bool", "Deletes the file. true if it worked; with or / try, the reason it didn't."), - doc("error", "error(str message)", "The failure a fallible function returns: return error(\"...\"). The caller handles it with or / try."), - doc("shell", "shell(str command) -> int", "Runs a command in the system's shell and gives back its exit code."), - doc("exit", "exit(int code)", "Ends the program right away with this exit code."), - doc("addr", "addr(x) -> ptr[T]", "A pointer to a variable, field or element. addr(function) gives C a callback."), - doc("new", "new(value) -> ptr[T]", "Puts a copy of the value on the heap. Give it back with free(...)."), - doc("free", "free(ptr p)", "Gives back memory from new(...) (or from C), freeing what the value owns."), - doc("str", "str(x) -> str", "Turns a number, bool, char, []u8 or C char pointer into text."), - doc("int", "int(x) -> int", "Converts to a whole number: cuts off fractions, parses text (stops the program if it isn't a number, unless handled: int(s) or 0)."), - doc("float", "float(x) -> float", "Converts to a decimal number; parses text (int(s) or 0.0 handles bad text)."), - doc("char", "char(int n) -> char", "The character with this code."), - doc("bool", "bool(int n) -> bool", "true for any number but 0."), - doc("ptr", "ptr(x) -> ptr", "An untyped pointer: from a typed pointer, or from a number (an address or offset for C).") - ] -} - -fn arrayMethods() -> []Doc { - return [ - doc("len", ".len -> int", "The number of elements."), - doc("ptr", ".ptr -> ptr[T]", "The address of the first element, for C."), - doc("push", "push(T x)", "Adds x at the end."), - doc("pop", "pop() -> T", "Removes the last element and gives it back."), - doc("insert", "insert(int i, T x)", "Puts x at position i, moving the rest."), - doc("remove", "remove(int i) -> T", "Removes position i and gives it back."), - doc("clear", "clear()", "Removes everything."), - doc("resize", "resize(int n)", "Makes the array n long; new elements are zero."), - doc("find", "find(T x) -> int", "The index of x, or -1."), - doc("contains", "contains(T x) -> bool", "Is x in the array?"), - doc("sort", "sort()", "Sorts in place (numbers, chars, str)."), - doc("reverse", "reverse()", "Reverses in place."), - doc("slice", "slice(int start, int end) -> []T", "A new array with the elements start to end-1."), - doc("join", "join(str sep) -> str", "For []str: one text with sep between the parts.") - ] -} - -fn strMethods() -> []Doc { - return [ - doc("len", ".len -> int", "The number of bytes."), - doc("ptr", ".ptr -> ptr[char]", "The address of the text, for C (valid while the str lives)."), - doc("sub", "sub(int start, int end) -> str", "The part from start to end-1."), - doc("find", "find(str t) -> int", "Where t starts, or -1."), - doc("contains", "contains(str t) -> bool", "Does the text contain t?"), - doc("starts_with", "starts_with(str t) -> bool", "Does the text start with t?"), - doc("ends_with", "ends_with(str t) -> bool", "Does the text end with t?"), - doc("split", "split(str sep) -> []str", "The parts between each sep; split(\"\") gives single characters."), - doc("trim", "trim() -> str", "Without spaces and newlines at both ends."), - doc("upper", "upper() -> str", "With a-z changed to A-Z."), - doc("lower", "lower() -> str", "With A-Z changed to a-z."), - doc("replace", "replace(str from, str to) -> str", "Every from replaced by to."), - doc("repeat", "repeat(int n) -> str", "The text n times."), - doc("bytes", "bytes() -> []u8", "The bytes of the text.") - ] -} - -fn mapMethods() -> []Doc { - return [ - doc("len", ".len -> int", "The number of keys."), - doc("has", "has(K key) -> bool", "Is the key in the map?"), - doc("get", "get(K key, V default) -> V", "The value for key, or default if the key isn't there."), - doc("remove", "remove(K key) -> bool", "Removes the key and its value; true if it was there."), - doc("clear", "clear()", "Removes everything."), - doc("keys", "keys() -> []K", "The keys, in the order they were added."), - doc("values", "values() -> []V", "The values, in the order their keys were added.") - ] -} - -fn keywords() -> []str { - return ["fn", "return", "if", "else", "while", "for", "in", "break", "continue", "true", "false", "null", "import", - "link", "struct", "enum", "match", "export", "defer", "or", "try", "self"] -} - -fn typeNames() -> []str { - return ["int", "float", "bool", "char", "str", "ptr", "map", "i8", "i16", "i32", "i64", "u8", "u16", "u32", "u64", "f32", "f64"] -} - -// the entry called `name`, or an empty Doc -fn find([]Doc list, str name) -> Doc { - for d in list { - if d.name == name { - return d - } - } - return Doc() -} - -// the text of a hover for a documented built-in -fn hover(Doc d) -> str { - return "```finch\n" + d.signature + "\n```\n" + d.text -} diff --git a/src/embedded.fch b/src/embedded.fch deleted file mode 100644 index 15ef247..0000000 --- a/src/embedded.fch +++ /dev/null @@ -1,28 +0,0 @@ -// The runtime and the standard library, as text. Made by tools/pack.fch: don't edit it, run bootstrap/build.sh. -// Used when the compiler can't find runtime/ and std/ next to itself. - -fn names() -> []str { - []str list - list.push("runtime/finch_rt.c") - list.push("std/json.fch") - list.push("std/path.fch") - list.push("std/proc.fch") - list.push("std/proc_windows.fch") - list.push("std/time.fch") - list.push("std/time_windows.fch") - list.push("std/finch_win.h") - return list -} - -fn texts() -> []str { - []str list - list.push("// The Finch runtime: string and array helpers, input, files and runtime errors.\n// It is embedded in the compiler, compiled once into a cache folder, and linked\n// statically into every Finch program. Everything here is plain C with no state.\n//\n// Layout shared with the compiler (src/codegen.cpp):\n// str = { char *ptr; int64 len; int64 cap } ptr is always NUL-terminated\n// cap > 0 : heap memory owned by the value (cap bytes allocated)\n// cap == 0 : a string literal, valid forever, never written to\n// cap == -1: borrowed from C, must be copied before it is kept\n// []T = { T *ptr; int64 len; int64 cap } owns ptr when cap > 0\n// map[K]V: see \"maps\" below\n\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#ifndef _WIN32\n#include \n#endif\n\ntypedef struct {\n char *ptr;\n int64_t len;\n int64_t cap;\n} FStr;\n\ntypedef struct {\n void *ptr;\n int64_t len;\n int64_t cap;\n} FArr;\n\nstatic char empty[1] = \"\";\n\n// ---------- runtime errors ----------\n\n// A program that loads Finch libraries (finch build --shared) can take runtime errors over\n// instead of the process exiting: finch_module_on_fatal(handler) in each library. The handler\n// gets the message and must not return (longjmp out, or exit itself).\nstatic void (*fatal_hook)(const char *msg);\nvoid finch_on_fatal(void (*hook)(const char *msg)) { fatal_hook = hook; }\n\nstatic __attribute__((noreturn)) void fatal(const char *msg) {\n if (fatal_hook) fatal_hook(msg);\n fflush(stdout);\n fprintf(stderr, \"%s\\n\", msg);\n exit(1);\n}\n\n__attribute__((noreturn, cold)) void finch_panic(const char *file, int64_t line, const char *msg) {\n char full[1024];\n snprintf(full, sizeof full, \"%s:%lld: runtime error: %s\", file, (long long)line, msg);\n fflush(stdout);\n fatal(full);\n}\n\n__attribute__((noreturn, cold)) void finch_panic_index(const char *file, int64_t line, int64_t i, int64_t len) {\n char msg[128];\n snprintf(msg, sizeof msg, \"index %lld is out of range (the length is %lld)\", (long long)i, (long long)len);\n finch_panic(file, line, msg);\n}\n\nstatic void *must(void *p) {\n if (!p) {\n fflush(stdout);\n fatal(\"runtime error: out of memory\");\n }\n return p;\n}\n\nvoid *finch_alloc(int64_t n) { return must(malloc(n ? (size_t)n : 1)); }\nvoid *finch_zalloc(int64_t n) { return must(calloc(1, n ? (size_t)n : 1)); }\n\n// ---------- strings ----------\n\nstatic void str_heap(FStr *out, const char *p, int64_t len) {\n char *m = finch_alloc(len + 1);\n if (len) memcpy(m, p, (size_t)len);\n m[len] = 0;\n out->ptr = m;\n out->len = len;\n out->cap = len + 1;\n}\n\nstatic void str_static(FStr *out, const char *lit) {\n out->ptr = (char *)lit;\n out->len = (int64_t)strlen(lit);\n out->cap = 0;\n}\n\n// A copy that can be kept: literals are shared, everything else is duplicated.\nvoid finch_str_copy(FStr *out, const FStr *s) {\n if (s->cap == 0) *out = *s;\n else str_heap(out, s->ptr, s->len);\n}\n\n// Make `s` writable (before s[i] = c).\nvoid finch_str_own(FStr *s) {\n if (s->cap > 0) return;\n FStr t;\n str_heap(&t, s->ptr, s->len);\n *s = t;\n}\n\nvoid finch_str_drop(FStr *s) {\n if (s->cap > 0) free(s->ptr);\n}\n\nvoid finch_str_from_c(FStr *out, const char *p) {\n if (!p) {\n str_static(out, empty);\n return;\n }\n out->ptr = (char *)p;\n out->len = (int64_t)strlen(p);\n out->cap = -1;\n}\n\nvoid finch_str_concat(FStr *out, const FStr *a, const FStr *b) {\n int64_t len = a->len + b->len;\n char *m = finch_alloc(len + 1);\n memcpy(m, a->ptr, (size_t)a->len);\n memcpy(m + a->len, b->ptr, (size_t)b->len);\n m[len] = 0;\n out->ptr = m;\n out->len = len;\n out->cap = len + 1;\n}\n\nint finch_str_eq(const FStr *a, const FStr *b) {\n return a->len == b->len && memcmp(a->ptr, b->ptr, (size_t)a->len) == 0;\n}\n\nint64_t finch_str_cmp(const FStr *a, const FStr *b) {\n int64_t n = a->len < b->len ? a->len : b->len;\n int c = memcmp(a->ptr, b->ptr, (size_t)n);\n if (c) return c < 0 ? -1 : 1;\n return a->len < b->len ? -1 : a->len > b->len;\n}\n\nvoid finch_str_from_int(FStr *out, int64_t v) {\n char buf[32];\n int n = snprintf(buf, sizeof buf, \"%lld\", (long long)v);\n str_heap(out, buf, n);\n}\n\nvoid finch_str_from_uint(FStr *out, uint64_t v) {\n char buf[32];\n int n = snprintf(buf, sizeof buf, \"%llu\", (unsigned long long)v);\n str_heap(out, buf, n);\n}\n\nvoid finch_str_from_float(FStr *out, double v) {\n char buf[64];\n int n = snprintf(buf, sizeof buf, \"%g\", v);\n str_heap(out, buf, n);\n}\n\nvoid finch_str_from_char(FStr *out, char c) { str_heap(out, &c, 1); }\n\nvoid finch_str_from_bool(FStr *out, int b) { str_static(out, b ? \"true\" : \"false\"); }\n\nstatic void number_error(char *msg, size_t size, const FStr *s, const char *kind) {\n snprintf(msg, size, \"can't turn \\\"%.*s\\\" into %s\", (int)(s->len > 100 ? 100 : s->len), s->ptr ? s->ptr : \"\", kind);\n}\n\nstatic int parse_int(const FStr *s, int64_t *out) {\n const char *p = s->ptr ? s->ptr : \"\";\n while (isspace((unsigned char)*p)) p++;\n char *end;\n errno = 0;\n long long v = strtoll(p, &end, 10);\n while (isspace((unsigned char)*end)) end++;\n *out = v;\n return !(end == p || *end || errno == ERANGE);\n}\n\nstatic int parse_float(const FStr *s, double *out) {\n const char *p = s->ptr ? s->ptr : \"\";\n while (isspace((unsigned char)*p)) p++;\n char *end;\n double v = strtod(p, &end);\n while (isspace((unsigned char)*end)) end++;\n *out = v;\n return !(end == p || *end);\n}\n\nint64_t finch_str_to_int(const FStr *s, const char *file, int64_t line) {\n int64_t v;\n if (!parse_int(s, &v)) {\n char msg[200];\n number_error(msg, sizeof msg, s, \"int\");\n finch_panic(file, line, msg);\n }\n return v;\n}\n\ndouble finch_str_to_float(const FStr *s, const char *file, int64_t line) {\n double v;\n if (!parse_float(s, &v)) {\n char msg[200];\n number_error(msg, sizeof msg, s, \"float\");\n finch_panic(file, line, msg);\n }\n return v;\n}\n\n// ---------- errors as values: int(s) or 0, try read_file(p) ... ----------\n// Each gives back 1 on success; on failure 0, with the message in *err.\n\nstatic void set_error(FStr *err, const char *msg) { str_heap(err, msg, (int64_t)strlen(msg)); }\n\nint finch_str_try_int(const FStr *s, int64_t *out, FStr *err) {\n if (parse_int(s, out)) return 1;\n char msg[200];\n number_error(msg, sizeof msg, s, \"int\");\n set_error(err, msg);\n *out = 0;\n return 0;\n}\n\nint finch_str_try_float(const FStr *s, double *out, FStr *err) {\n if (parse_float(s, out)) return 1;\n char msg[200];\n number_error(msg, sizeof msg, s, \"float\");\n set_error(err, msg);\n *out = 0;\n return 0;\n}\n\nstatic void file_error(FStr *err, const char *what, const FStr *path) {\n char msg[300];\n snprintf(msg, sizeof msg, \"can't %s the file \\\"%.*s\\\": %s\", what, (int)(path->len > 200 ? 200 : path->len),\n path->ptr ? path->ptr : \"\", strerror(errno));\n set_error(err, msg);\n}\n\n// when `fn main() -> !` fails\nvoid finch_report_error(const FStr *msg) {\n fflush(stdout);\n fprintf(stderr, \"error: %.*s\\n\", (int)msg->len, msg->ptr ? msg->ptr : \"\");\n}\n\nvoid finch_str_sub(FStr *out, const FStr *s, int64_t start, int64_t end, const char *file, int64_t line) {\n if (start < 0 || end > s->len || start > end) {\n char msg[160];\n snprintf(msg, sizeof msg, \"sub(%lld, %lld) is out of range (the length is %lld)\", (long long)start,\n (long long)end, (long long)s->len);\n finch_panic(file, line, msg);\n }\n str_heap(out, s->ptr + start, end - start);\n}\n\nint64_t finch_str_find(const FStr *s, const FStr *t) {\n if (t->len == 0) return 0;\n for (int64_t i = 0; i + t->len <= s->len; i++)\n if (s->ptr[i] == t->ptr[0] && memcmp(s->ptr + i, t->ptr, (size_t)t->len) == 0) return i;\n return -1;\n}\n\nint finch_str_starts(const FStr *s, const FStr *t) {\n return t->len <= s->len && memcmp(s->ptr, t->ptr, (size_t)t->len) == 0;\n}\n\nint finch_str_ends(const FStr *s, const FStr *t) {\n return t->len <= s->len && memcmp(s->ptr + s->len - t->len, t->ptr, (size_t)t->len) == 0;\n}\n\nvoid finch_str_trim(FStr *out, const FStr *s) {\n int64_t a = 0, b = s->len;\n while (a < b && isspace((unsigned char)s->ptr[a])) a++;\n while (b > a && isspace((unsigned char)s->ptr[b - 1])) b--;\n str_heap(out, s->ptr + a, b - a);\n}\n\nvoid finch_str_upper(FStr *out, const FStr *s) {\n str_heap(out, s->ptr, s->len);\n for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)toupper((unsigned char)out->ptr[i]);\n}\n\nvoid finch_str_lower(FStr *out, const FStr *s) {\n str_heap(out, s->ptr, s->len);\n for (int64_t i = 0; i < out->len; i++) out->ptr[i] = (char)tolower((unsigned char)out->ptr[i]);\n}\n\nvoid finch_str_replace(FStr *out, const FStr *s, const FStr *from, const FStr *to) {\n if (from->len == 0) {\n str_heap(out, s->ptr, s->len);\n return;\n }\n int64_t count = 0;\n for (int64_t i = 0; i + from->len <= s->len;) {\n if (memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\n count++;\n i += from->len;\n } else {\n i++;\n }\n }\n int64_t len = s->len + count * (to->len - from->len);\n char *m = finch_alloc(len + 1), *w = m;\n for (int64_t i = 0; i < s->len;) {\n if (i + from->len <= s->len && memcmp(s->ptr + i, from->ptr, (size_t)from->len) == 0) {\n memcpy(w, to->ptr, (size_t)to->len);\n w += to->len;\n i += from->len;\n } else {\n *w++ = s->ptr[i++];\n }\n }\n *w = 0;\n out->ptr = m;\n out->len = len;\n out->cap = len + 1;\n}\n\nstatic void arr_push_str(FArr *a, const char *p, int64_t len);\n\n// \"a,b,,c\".split(\",\") -> [\"a\", \"b\", \"\", \"c\"]; split(\"\") gives single characters.\nvoid finch_str_split(FArr *out, const FStr *s, const FStr *sep) {\n out->ptr = NULL;\n out->len = out->cap = 0;\n if (sep->len == 0) {\n for (int64_t i = 0; i < s->len; i++) arr_push_str(out, s->ptr + i, 1);\n return;\n }\n int64_t start = 0;\n for (int64_t i = 0; i + sep->len <= s->len;) {\n if (memcmp(s->ptr + i, sep->ptr, (size_t)sep->len) == 0) {\n arr_push_str(out, s->ptr + start, i - start);\n i += sep->len;\n start = i;\n } else {\n i++;\n }\n }\n arr_push_str(out, s->ptr + start, s->len - start);\n}\n\nvoid finch_str_join(FStr *out, const FArr *parts, const FStr *sep) {\n const FStr *p = parts->ptr;\n int64_t len = 0;\n for (int64_t i = 0; i < parts->len; i++) len += p[i].len + (i ? sep->len : 0);\n char *m = finch_alloc(len + 1), *w = m;\n for (int64_t i = 0; i < parts->len; i++) {\n if (i) {\n memcpy(w, sep->ptr, (size_t)sep->len);\n w += sep->len;\n }\n memcpy(w, p[i].ptr, (size_t)p[i].len);\n w += p[i].len;\n }\n *w = 0;\n out->ptr = m;\n out->len = len;\n out->cap = len + 1;\n}\n\nvoid finch_str_repeat(FStr *out, const FStr *s, int64_t n) {\n if (n < 0) n = 0;\n int64_t len = s->len * n;\n char *m = finch_alloc(len + 1);\n for (int64_t i = 0; i < n; i++) memcpy(m + i * s->len, s->ptr, (size_t)s->len);\n m[len] = 0;\n out->ptr = m;\n out->len = len;\n out->cap = len + 1;\n}\n\nvoid finch_str_from_bytes(FStr *out, const FArr *bytes) { str_heap(out, bytes->ptr, bytes->len); }\n\n// ---------- building text: print(x) and str(x) of arrays, maps and structs ----------\n// A buffer starts as an empty str and grows on the heap.\n\nvoid finch_buf_add(FStr *b, const char *p, int64_t n) {\n if (b->len + n + 1 > b->cap) {\n int64_t cap = b->cap > 0 ? b->cap * 2 : 32;\n while (cap < b->len + n + 1) cap *= 2;\n b->ptr = must(realloc(b->cap > 0 ? b->ptr : NULL, (size_t)cap));\n b->cap = cap;\n }\n if (n) memcpy(b->ptr + b->len, p, (size_t)n);\n b->len += n;\n b->ptr[b->len] = 0;\n}\n\nstatic void buf_fmt(FStr *b, const char *fmt, ...) __attribute__((format(printf, 2, 3)));\nstatic void buf_fmt(FStr *b, const char *fmt, ...) {\n char t[64];\n va_list ap;\n va_start(ap, fmt);\n int n = vsnprintf(t, sizeof t, fmt, ap);\n va_end(ap);\n finch_buf_add(b, t, n);\n}\n\nvoid finch_buf_int(FStr *b, int64_t v) { buf_fmt(b, \"%lld\", (long long)v); }\nvoid finch_buf_uint(FStr *b, uint64_t v) { buf_fmt(b, \"%llu\", (unsigned long long)v); }\nvoid finch_buf_float(FStr *b, double v) { buf_fmt(b, \"%g\", v); }\nvoid finch_buf_bool(FStr *b, int v) { finch_buf_add(b, v ? \"true\" : \"false\", v ? 4 : 5); }\nvoid finch_buf_ptr(FStr *b, const void *p) {\n if (p) buf_fmt(b, \"0x%llx\", (unsigned long long)(uintptr_t)p);\n else finch_buf_add(b, \"null\", 4);\n}\n\nvoid finch_buf_char(FStr *b, char c, int quoted) {\n if (quoted) finch_buf_add(b, \"'\", 1);\n finch_buf_add(b, &c, 1);\n if (quoted) finch_buf_add(b, \"'\", 1);\n}\n\nvoid finch_buf_str(FStr *b, const FStr *s, int quoted) {\n if (quoted) finch_buf_add(b, \"\\\"\", 1);\n finch_buf_add(b, s->ptr, s->len);\n if (quoted) finch_buf_add(b, \"\\\"\", 1);\n}\n\n// print the buffer and free it\nvoid finch_buf_print(FStr *b) {\n if (b->len) fwrite(b->ptr, 1, (size_t)b->len, stdout);\n if (b->cap > 0) free(b->ptr);\n}\n\n// ---------- arrays ----------\n\nvoid finch_arr_reserve(FArr *a, int64_t need, int64_t es) {\n if (need <= a->cap) return;\n int64_t cap = a->cap * 2;\n if (cap < 4) cap = 4;\n if (cap < need) cap = need;\n a->ptr = must(realloc(a->cap > 0 ? a->ptr : NULL, (size_t)(cap * es)));\n a->cap = cap;\n}\n\nvoid finch_arr_make(FArr *out, int64_t len, int64_t es) {\n if (len < 0) len = 0;\n out->ptr = len ? finch_zalloc(len * es) : NULL;\n out->len = len;\n out->cap = len;\n}\n\n// grow or shrink to `len`; new elements are zero\nvoid finch_arr_resize(FArr *a, int64_t len, int64_t es) {\n if (len < 0) len = 0;\n finch_arr_reserve(a, len, es);\n if (len > a->len) memset((char *)a->ptr + a->len * es, 0, (size_t)((len - a->len) * es));\n a->len = len;\n}\n\n// a byte-for-byte copy of the elements (the compiler deep-copies owning elements afterwards)\nvoid finch_arr_clone_raw(FArr *out, const FArr *a, int64_t es) {\n out->len = a->len;\n out->cap = a->len;\n out->ptr = a->len ? finch_alloc(a->len * es) : NULL;\n if (a->len) memcpy(out->ptr, a->ptr, (size_t)(a->len * es));\n}\n\nvoid finch_arr_free(FArr *a) {\n if (a->cap > 0) free(a->ptr);\n}\n\n// open a hole at i (0 <= i <= len), len grows by one\nvoid finch_arr_insert_gap(FArr *a, int64_t i, int64_t es, const char *file, int64_t line) {\n if (i < 0 || i > a->len) finch_panic_index(file, line, i, a->len);\n finch_arr_reserve(a, a->len + 1, es);\n char *p = a->ptr;\n memmove(p + (i + 1) * es, p + i * es, (size_t)((a->len - i) * es));\n a->len++;\n}\n\n// close the hole at i (the element was already moved out), len shrinks by one\nvoid finch_arr_remove_gap(FArr *a, int64_t i, int64_t es) {\n char *p = a->ptr;\n memmove(p + i * es, p + (i + 1) * es, (size_t)((a->len - i - 1) * es));\n a->len--;\n}\n\nstatic void arr_push_str(FArr *a, const char *p, int64_t len) {\n finch_arr_reserve(a, a->len + 1, (int64_t)sizeof(FStr));\n str_heap((FStr *)a->ptr + a->len, p, len);\n a->len++;\n}\n\nvoid finch_bytes_from_str(FArr *out, const FStr *s) {\n out->len = out->cap = s->len;\n out->ptr = s->len ? finch_alloc(s->len) : NULL;\n if (s->len) memcpy(out->ptr, s->ptr, (size_t)s->len);\n}\n\n// ---------- program arguments, input and files ----------\n\nvoid finch_args(FArr *out, int argc, char **argv) {\n out->len = out->cap = argc;\n out->ptr = finch_alloc((int64_t)sizeof(FStr) * (argc ? argc : 1));\n for (int i = 0; i < argc; i++) str_heap((FStr *)out->ptr + i, argv[i], (int64_t)strlen(argv[i]));\n}\n\n// input(\"Name? \") prints the prompt and reads one line, without the newline.\nvoid finch_input(FStr *out, const FStr *prompt) {\n if (prompt->len) fwrite(prompt->ptr, 1, (size_t)prompt->len, stdout);\n fflush(stdout);\n // read one line of any length (getline isn't available everywhere)\n size_t size = 128, n = 0;\n char *line = finch_alloc((int64_t)size);\n int c, got = 0;\n while ((c = fgetc(stdin)) != EOF) {\n got = 1;\n if (c == '\\n') break;\n if (n + 1 >= size) line = must(realloc(line, size *= 2));\n line[n++] = (char)c;\n }\n if (!got) {\n free(line);\n str_static(out, empty);\n return;\n }\n while (n > 0 && line[n - 1] == '\\r') n--;\n line[n] = 0;\n out->ptr = line;\n out->len = (int64_t)n;\n out->cap = (int64_t)size;\n}\n\nint finch_file_exists(const FStr *path) {\n FILE *f = fopen(path->ptr, \"rb\");\n if (f) fclose(f);\n return f != NULL;\n}\n\nint finch_try_read_file(FStr *out, const FStr *path, FStr *err) {\n FILE *f = fopen(path->ptr ? path->ptr : \"\", \"rb\");\n if (!f) {\n file_error(err, \"read\", path);\n return 0;\n }\n fseek(f, 0, SEEK_END);\n long size = ftell(f);\n fseek(f, 0, SEEK_SET);\n char *m = finch_alloc(size + 1);\n size_t got = fread(m, 1, (size_t)size, f);\n fclose(f);\n m[got] = 0;\n out->ptr = m;\n out->len = (int64_t)got;\n out->cap = size + 1;\n return 1;\n}\n\nvoid finch_read_file(FStr *out, const FStr *path, const char *file, int64_t line) {\n FILE *f = fopen(path->ptr ? path->ptr : \"\", \"rb\");\n if (!f) {\n char msg[300];\n snprintf(msg, sizeof msg, \"can't read the file \\\"%.*s\\\": %s\", (int)(path->len > 200 ? 200 : path->len),\n path->ptr, strerror(errno));\n finch_panic(file, line, msg);\n }\n fseek(f, 0, SEEK_END);\n long size = ftell(f);\n fseek(f, 0, SEEK_SET);\n char *m = finch_alloc(size + 1);\n size_t got = fread(m, 1, (size_t)size, f);\n fclose(f);\n m[got] = 0;\n out->ptr = m;\n out->len = (int64_t)got;\n out->cap = size + 1;\n}\n\n// shell(\"ls -l\"): run a command, give back its exit code\nint64_t finch_shell(const FStr *cmd) {\n fflush(stdout);\n int status = system(cmd->ptr ? cmd->ptr : \"\");\n#ifdef _WIN32\n return status; // Windows gives the exit code directly\n#else\n if (status == -1) return -1;\n if (WIFEXITED(status)) return WEXITSTATUS(status);\n return 128 + (WIFSIGNALED(status) ? WTERMSIG(status) : 0);\n#endif\n}\n\nint finch_delete_file(const FStr *path) { return remove(path->ptr ? path->ptr : \"\") == 0; }\n\nint finch_try_delete_file(const FStr *path, FStr *err) {\n if (remove(path->ptr ? path->ptr : \"\") == 0) return 1;\n file_error(err, \"delete\", path);\n return 0;\n}\n\n// stdin/stdout/stderr are macros on some systems (Windows), so Finch asks for them here\nvoid *finch_std_stream(int i) { return i == 0 ? (void *)stdin : i == 1 ? (void *)stdout : (void *)stderr; }\n\nint finch_write_file(const FStr *path, const FStr *text) {\n FILE *f = fopen(path->ptr ? path->ptr : \"\", \"wb\");\n if (!f) return 0;\n size_t put = text->len ? fwrite(text->ptr, 1, (size_t)text->len, f) : 0;\n return fclose(f) == 0 && put == (size_t)text->len;\n}\n\nint finch_try_write_file(const FStr *path, const FStr *text, FStr *err) {\n errno = 0;\n if (finch_write_file(path, text)) return 1;\n if (!errno) errno = EIO;\n file_error(err, \"write\", path);\n return 0;\n}\n\n// ---------- maps ----------\n// map[K]V = { entries; len; used; cap; index; icap; adds }\n// entries: `used` slots of es bytes, each { uint64 hash; K key; V value }, in insertion order.\n// A removed entry keeps its slot (hash 0) until the next resize packs the slots.\n// index: icap slots (a power of two, at least 2 * cap): -1 empty, -2 removed, else an entry number.\n// adds: how many keys were ever added; a `for` over the map stops with an error if it changes.\n// The compiler stores, copies and drops keys and values; the runtime only finds and places entries.\n// Keys are compared byte for byte (numbers, chars, bools) or as text (kstr).\n\ntypedef struct {\n char *entries;\n int64_t len, used, cap;\n int64_t *index;\n int64_t icap;\n int64_t adds;\n} FMap;\n\nstatic uint64_t map_hash(const void *key, int64_t ks, int kstr) {\n const unsigned char *p;\n size_t n;\n if (kstr) {\n const FStr *s = key;\n p = (const unsigned char *)s->ptr;\n n = (size_t)s->len;\n } else {\n p = key;\n n = (size_t)ks;\n }\n uint64_t h = 1469598103934665603ULL; // FNV-1a, then mixed so the low bits spread well\n for (size_t i = 0; i < n; i++) {\n h ^= p[i];\n h *= 1099511628211ULL;\n }\n h ^= h >> 31;\n h *= 0xbf58476d1ce4e5b9ULL;\n h ^= h >> 29;\n return h | 1; // 0 marks a removed entry\n}\n\nstatic int map_key_eq(const char *a, const void *b, int64_t ks, int kstr) {\n if (!kstr) return memcmp(a, b, (size_t)ks) == 0;\n const FStr *x = (const FStr *)a, *y = b;\n return x->len == y->len && (x->len == 0 || memcmp(x->ptr, y->ptr, (size_t)x->len) == 0);\n}\n\nstatic void map_reindex(FMap *m, int64_t es) {\n if (m->len != m->used) { // pack the slots of removed entries away\n int64_t j = 0;\n for (int64_t i = 0; i < m->used; i++) {\n char *e = m->entries + i * es;\n if (*(uint64_t *)e == 0) continue;\n if (i != j) memmove(m->entries + j * es, e, (size_t)es);\n j++;\n }\n m->used = j;\n }\n int64_t icap = 16;\n while (icap < m->cap * 2) icap *= 2;\n free(m->index);\n m->index = finch_alloc(icap * (int64_t)sizeof(int64_t));\n memset(m->index, 0xff, (size_t)icap * sizeof(int64_t));\n m->icap = icap;\n for (int64_t i = 0; i < m->used; i++) {\n uint64_t h = *(uint64_t *)(m->entries + i * es);\n int64_t s = (int64_t)(h & (uint64_t)(icap - 1));\n while (m->index[s] != -1) s = (s + 1) & (icap - 1);\n m->index[s] = i;\n }\n}\n\n// the entry number of `key`, or -1\nint64_t finch_map_find(const FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr) {\n if (m->len == 0) return -1;\n uint64_t h = map_hash(key, ks, kstr);\n for (int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));; s = (s + 1) & (m->icap - 1)) {\n int64_t i = m->index[s];\n if (i == -1) return -1;\n if (i < 0) continue;\n char *e = m->entries + i * es;\n if (*(uint64_t *)e == h && map_key_eq(e + 8, key, ks, kstr)) return i;\n }\n}\n\n// The entry for `key`. A new one is zeroed except its hash (*added = 1); the compiler then stores the key.\nint64_t finch_map_slot(FMap *m, const void *key, int64_t es, int64_t ks, int32_t kstr, int32_t *added) {\n int64_t i = finch_map_find(m, key, es, ks, kstr);\n *added = i < 0;\n if (i >= 0) return i;\n if (m->used == m->cap) {\n if (m->len * 4 < m->cap * 3) { // many removed slots: pack them instead of growing\n map_reindex(m, es);\n } else {\n m->cap = m->cap ? m->cap * 2 : 8;\n m->entries = must(realloc(m->entries, (size_t)(m->cap * es)));\n map_reindex(m, es);\n }\n }\n uint64_t h = map_hash(key, ks, kstr);\n i = m->used++;\n char *e = m->entries + i * es;\n memset(e, 0, (size_t)es);\n *(uint64_t *)e = h;\n int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\n while (m->index[s] >= 0) s = (s + 1) & (m->icap - 1);\n m->index[s] = i;\n m->len++;\n m->adds++;\n return i;\n}\n\n// Forget entry i (its key and value were already dropped by the compiler).\nvoid finch_map_remove_at(FMap *m, int64_t i, int64_t es) {\n char *e = m->entries + i * es;\n uint64_t h = *(uint64_t *)e;\n int64_t s = (int64_t)(h & (uint64_t)(m->icap - 1));\n while (m->index[s] != i) s = (s + 1) & (m->icap - 1);\n m->index[s] = -2;\n *(uint64_t *)e = 0;\n if (--m->len == 0) {\n m->used = 0;\n memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\n }\n}\n\nvoid finch_map_clear(FMap *m) {\n m->len = m->used = 0;\n if (m->index) memset(m->index, 0xff, (size_t)m->icap * sizeof(int64_t));\n}\n\nvoid finch_map_free(FMap *m) {\n free(m->entries);\n free(m->index);\n}\n\n// A copy of the slots and the index; the compiler then copies the keys and values that own memory.\nvoid finch_map_clone_raw(FMap *out, const FMap *m, int64_t es) {\n *out = *m;\n if (!m->cap) return;\n out->entries = finch_alloc(m->cap * es);\n memcpy(out->entries, m->entries, (size_t)(m->used * es));\n out->index = finch_alloc(m->icap * (int64_t)sizeof(int64_t));\n memcpy(out->index, m->index, (size_t)m->icap * sizeof(int64_t));\n}\n\n__attribute__((noreturn, cold)) void finch_map_changed(const char *file, int64_t line) {\n finch_panic(file, line, \"a key was added to the map while looping over it (collect the new keys, and add them after the loop)\");\n}\n\n__attribute__((noreturn, cold)) void finch_map_missing(const char *file, int64_t line, const FStr *key) {\n char msg[200];\n snprintf(msg, sizeof msg, \"the key %.*s is not in the map (check with .has(key), or use .get(key, default))\",\n (int)(key->len > 100 ? 100 : key->len), key->ptr ? key->ptr : \"\");\n finch_panic(file, line, msg);\n}\n") - list.push("// JSON: read it, build it, write it.\n//\n// import json\n//\n// doc := try json.parse(\"{\\\"name\\\": \\\"Finch\\\", \\\"tags\\\": [\\\"fast\\\", \\\"small\\\"], \\\"stars\\\": 5}\")\n// print(doc.get(\"name\").str_or(\"\")) Finch\n// print(doc.get(\"tags\").at(1).str_or(\"\")) small\n// print(doc.get(\"stars\").int_or(0)) 5\n// print(doc.get(\"missing\").is_null()) true (a missing key is null, so chains never fail)\n//\n// out := json.new_object()\n// out.set(\"ok\", json.new_bool(true))\n// list := json.new_list()\n// list.push(json.new_number(1.5))\n// out.set(\"values\", list)\n// print(json.stringify(out)) {\"ok\":true,\"values\":[1.5]}\n// print(json.pretty(out)) the same, over several lines\n\nenum Kind { Null, Bool, Number, Text, List, Object }\n\n// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number,\n// text for Text, items for List, and items with keys (the same length, in the same order) for Object.\nstruct Json {\n Kind kind\n bool flag\n float num\n str text\n []Json items\n []str keys\n}\n\nfn new_null() -> Json {\n return Json(kind: Kind.Null)\n}\n\nfn new_bool(bool b) -> Json {\n return Json(kind: Kind.Bool, flag: b)\n}\n\nfn new_number(float n) -> Json {\n return Json(kind: Kind.Number, num: n)\n}\n\nfn new_text(str s) -> Json {\n return Json(kind: Kind.Text, text: s)\n}\n\nfn new_list() -> Json {\n return Json(kind: Kind.List)\n}\n\nfn new_object() -> Json {\n return Json(kind: Kind.Object)\n}\n\n// ---------- looking inside ----------\n\nfn Json.is_null() -> bool {\n return self.kind == Kind.Null\n}\n\n// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest\nfn Json.len() -> int {\n return match self.kind {\n List, Object -> self.items.len\n Text -> self.text.len\n else -> 0\n }\n}\n\nfn Json.has(str key) -> bool {\n return self.kind == Kind.Object && self.keys.contains(key)\n}\n\n// the value of a key of an object; null if there is none (or this is not an object)\nfn Json.get(str key) -> Json {\n if self.kind != Kind.Object {\n return new_null()\n }\n i := self.keys.find(key)\n if i < 0 {\n return new_null()\n }\n return self.items[i]\n}\n\n// the element of a list; null if there is none\nfn Json.at(int i) -> Json {\n if self.kind != Kind.List || i < 0 || i >= self.items.len {\n return new_null()\n }\n return self.items[i]\n}\n\n// the value if it is of that kind, else what was given\nfn Json.str_or(str fallback) -> str {\n if self.kind == Kind.Text {\n return self.text\n }\n return fallback\n}\n\nfn Json.float_or(float fallback) -> float {\n if self.kind == Kind.Number {\n return self.num\n }\n return fallback\n}\n\nfn Json.int_or(int fallback) -> int {\n if self.kind == Kind.Number {\n return int(self.num)\n }\n return fallback\n}\n\nfn Json.bool_or(bool fallback) -> bool {\n if self.kind == Kind.Bool {\n return self.flag\n }\n return fallback\n}\n\n// the keys of an object, in the order they were written\nfn Json.names() -> []str {\n return self.keys\n}\n\n// ---------- building ----------\n\n// add to the end of a list\nfn Json.push(Json v) {\n self.items.push(v)\n}\n\n// give a key a value in an object; a key that is already there is replaced\nfn Json.set(str key, Json v) {\n i := self.keys.find(key)\n if i >= 0 {\n self.items[i] = v\n return\n }\n self.keys.push(key)\n self.items.push(v)\n}\n\n// ---------- writing ----------\n\nfn quote(str s) -> str {\n []str parts = [\"\\\"\"]\n for c in s {\n n := int(c)\n if c == '\"' {\n parts.push(\"\\\\\\\"\")\n } else if c == '\\\\' {\n parts.push(\"\\\\\\\\\")\n } else if c == '\\n' {\n parts.push(\"\\\\n\")\n } else if c == '\\r' {\n parts.push(\"\\\\r\")\n } else if c == '\\t' {\n parts.push(\"\\\\t\")\n } else if n < 32 {\n parts.push(\"\\\\u00\" + hexdigit(n / 16) + hexdigit(n % 16))\n } else {\n parts.push(str(c))\n }\n }\n parts.push(\"\\\"\")\n return parts.join(\"\")\n}\n\nfn hexdigit(int n) -> str {\n digits := \"0123456789abcdef\"\n return str(digits[n])\n}\n\nfn number_text(float n) -> str {\n if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 {\n return str(int(n))\n }\n return str(n)\n}\n\nstruct Writer {\n []str out\n}\n\nfn write(Json j, str indent, str pad, ptr[Writer] w) {\n nl := \"\"\n inner := \"\"\n sep := \",\"\n colon := \":\"\n if indent.len > 0 {\n nl = \"\\n\"\n inner = pad + indent\n colon = \": \"\n }\n match j.kind {\n Null -> w.out.push(\"null\")\n Bool -> {\n if j.flag {\n w.out.push(\"true\")\n } else {\n w.out.push(\"false\")\n }\n }\n Number -> w.out.push(number_text(j.num))\n Text -> w.out.push(quote(j.text))\n List -> {\n if j.items.len == 0 {\n w.out.push(\"[]\")\n return\n }\n w.out.push(\"[\" + nl)\n for i, item in j.items {\n if i > 0 {\n w.out.push(sep + nl)\n }\n w.out.push(inner)\n write(item, indent, inner, w)\n }\n w.out.push(nl + pad + \"]\")\n }\n Object -> {\n if j.items.len == 0 {\n w.out.push(\"{}\")\n return\n }\n w.out.push(\"{\" + nl)\n for i, item in j.items {\n if i > 0 {\n w.out.push(sep + nl)\n }\n w.out.push(inner + quote(j.keys[i]) + colon)\n write(item, indent, inner, w)\n }\n w.out.push(nl + pad + \"}\")\n }\n }\n}\n\n// the value as text on one line\nfn stringify(Json j) -> str {\n w := Writer()\n write(j, \"\", \"\", addr(w))\n return w.out.join(\"\")\n}\n\n// the value as text over several lines, indented by two spaces\nfn pretty(Json j) -> str {\n w := Writer()\n write(j, \" \", \"\", addr(w))\n return w.out.join(\"\")\n}\n\n// ---------- reading ----------\n\nstruct Reader {\n str src\n int i\n}\n\n// the line and column of a position, for a message\nfn where(ptr[Reader] r) -> str {\n line := 1\n col := 1\n for k in 0..r.i {\n if k < r.src.len && r.src[k] == '\\n' {\n line += 1\n col = 1\n } else {\n col += 1\n }\n }\n return \"line \" + str(line) + \", column \" + str(col)\n}\n\nfn peek(ptr[Reader] r) -> char {\n if r.i < r.src.len {\n return r.src[r.i]\n }\n return char(0)\n}\n\nfn skip_space(ptr[Reader] r) {\n while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\\n' || r.src[r.i] == '\\t' || r.src[r.i] == '\\r') {\n r.i += 1\n }\n}\n\nfn unexpected(ptr[Reader] r, str wanted) -> str {\n if r.i >= r.src.len {\n return \"json: the text ends where \" + wanted + \" should be (\" + where(r) + \")\"\n }\n return \"json: found '\" + str(r.src[r.i]) + \"' where \" + wanted + \" should be (\" + where(r) + \")\"\n}\n\n// does `word` come next?\nfn comes(ptr[Reader] r, str word) -> bool {\n return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word\n}\n\nfn expect_word(ptr[Reader] r, str word) -> ! {\n if !comes(r, word) {\n return error(unexpected(r, \"'\" + word + \"'\"))\n }\n r.i += word.len\n}\n\nfn hex_value(char c) -> int {\n if c >= '0' && c <= '9' {\n return int(c) - int('0')\n }\n if c >= 'a' && c <= 'f' {\n return int(c) - int('a') + 10\n }\n if c >= 'A' && c <= 'F' {\n return int(c) - int('A') + 10\n }\n return -1\n}\n\n// a code point as UTF-8\nfn utf8(int cp) -> str {\n []u8 b\n if cp < 128 {\n b.push(u8(cp))\n } else if cp < 2048 {\n b.push(u8(192 + cp / 64))\n b.push(u8(128 + cp % 64))\n } else if cp < 65536 {\n b.push(u8(224 + cp / 4096))\n b.push(u8(128 + (cp / 64) % 64))\n b.push(u8(128 + cp % 64))\n } else {\n b.push(u8(240 + cp / 262144))\n b.push(u8(128 + (cp / 4096) % 64))\n b.push(u8(128 + (cp / 64) % 64))\n b.push(u8(128 + cp % 64))\n }\n return str(b)\n}\n\nfn read_hex4(ptr[Reader] r) -> int! {\n n := 0\n for k in 0..4 {\n if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 {\n return error(unexpected(r, \"a hexadecimal digit\"))\n }\n n = n * 16 + hex_value(r.src[r.i])\n r.i += 1\n }\n return n\n}\n\nfn read_string(ptr[Reader] r) -> str! {\n r.i += 1 // the opening quote\n []str parts\n start := r.i\n while true {\n if r.i >= r.src.len {\n return error(\"json: a text is never closed (\" + where(r) + \")\")\n }\n c := r.src[r.i]\n if c == '\"' {\n parts.push(r.src.sub(start, r.i))\n r.i += 1\n return parts.join(\"\")\n }\n if int(c) < 32 {\n return error(\"json: a line break or control character inside a text (\" + where(r) + \")\")\n }\n if c != '\\\\' {\n r.i += 1\n continue\n }\n parts.push(r.src.sub(start, r.i))\n r.i += 1\n e := peek(r)\n r.i += 1\n if e == 'n' {\n parts.push(\"\\n\")\n } else if e == 't' {\n parts.push(\"\\t\")\n } else if e == 'r' {\n parts.push(\"\\r\")\n } else if e == 'b' {\n parts.push(utf8(8))\n } else if e == 'f' {\n parts.push(utf8(12))\n } else if e == '\"' || e == '\\\\' || e == '/' {\n parts.push(str(e))\n } else if e == 'u' {\n cp := try read_hex4(r)\n // a pair of 😀 stands for one character above U+FFFF\n if cp >= 55296 && cp < 56320 && comes(r, \"\\\\u\") {\n r.i += 2\n low := try read_hex4(r)\n cp = 65536 + (cp - 55296) * 1024 + (low - 56320)\n }\n parts.push(utf8(cp))\n } else {\n return error(\"json: unknown escape \\\\\" + str(e) + \" in a text (\" + where(r) + \")\")\n }\n start = r.i\n }\n}\n\nfn read_number(ptr[Reader] r) -> Json! {\n start := r.i\n if peek(r) == '-' {\n r.i += 1\n }\n while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') {\n r.i += 1\n }\n n := float(r.src.sub(start, r.i)) or {\n r.i = start\n return error(unexpected(r, \"a number\"))\n }\n return new_number(n)\n}\n\nfn read_value(ptr[Reader] r) -> Json! {\n skip_space(r)\n c := peek(r)\n if r.i >= r.src.len {\n return error(unexpected(r, \"a value\"))\n }\n if c == '{' {\n obj := new_object()\n r.i += 1\n skip_space(r)\n if peek(r) == '}' {\n r.i += 1\n return obj\n }\n while true {\n skip_space(r)\n if peek(r) != '\"' {\n return error(unexpected(r, \"a key in quotes\"))\n }\n key := try read_string(r)\n skip_space(r)\n if peek(r) != ':' {\n return error(unexpected(r, \"':'\"))\n }\n r.i += 1\n v := try read_value(r)\n obj.set(key, v)\n skip_space(r)\n if peek(r) == ',' {\n r.i += 1\n continue\n }\n if peek(r) == '}' {\n r.i += 1\n return obj\n }\n return error(unexpected(r, \"',' or '}'\"))\n }\n }\n if c == '[' {\n list := new_list()\n r.i += 1\n skip_space(r)\n if peek(r) == ']' {\n r.i += 1\n return list\n }\n while true {\n v := try read_value(r)\n list.push(v)\n skip_space(r)\n if peek(r) == ',' {\n r.i += 1\n continue\n }\n if peek(r) == ']' {\n r.i += 1\n return list\n }\n return error(unexpected(r, \"',' or ']'\"))\n }\n }\n if c == '\"' {\n s := try read_string(r)\n return new_text(s)\n }\n if c == 't' {\n try expect_word(r, \"true\")\n return new_bool(true)\n }\n if c == 'f' {\n try expect_word(r, \"false\")\n return new_bool(false)\n }\n if c == 'n' {\n try expect_word(r, \"null\")\n return new_null()\n }\n if c == '-' || (c >= '0' && c <= '9') {\n return try read_number(r)\n }\n return error(unexpected(r, \"a value\"))\n}\n\n// the JSON in `text`; an error with the line and column where it went wrong\nfn parse(str text) -> Json! {\n r := Reader(src: text)\n v := try read_value(addr(r))\n skip_space(addr(r))\n if r.i < r.src.len {\n return error(unexpected(addr(r), \"the end of the text\"))\n }\n return v\n}\n") - list.push("// Paths, as text. Elements are separated by \"/\".\n//\n// import path\n// path.join(\"a\", \"b.txt\") a/b.txt\n// path.base(\"/tmp/x/a.tar.gz\") a.tar.gz path.stem(...) a.tar path.ext(...) .gz\n// path.dir(\"/tmp/x/a.txt\") /tmp/x\n// path.clean(\"a//b/../c/./d\") a/c/d\n\n// a and b with one separator between; an absolute b replaces a\nfn join(str a, str b) -> str {\n if a.len == 0 {\n return b\n }\n if b.len == 0 {\n return a\n }\n if b[0] == '/' {\n return b\n }\n if a[a.len - 1] == '/' {\n return a + b\n }\n return a + \"/\" + b\n}\n\nfn is_abs(str p) -> bool {\n return p.len > 0 && p[0] == '/'\n}\n\n// the last element: \"a/b.txt\" -> \"b.txt\", \"a/b/\" -> \"b\", \"\" -> \".\", \"/\" -> \"/\"\nfn base(str p) -> str {\n if p.len == 0 {\n return \".\"\n }\n end := p.len\n while end > 1 && p[end - 1] == '/' {\n end -= 1\n }\n if end == 1 && p[0] == '/' {\n return \"/\"\n }\n start := end\n while start > 0 && p[start - 1] != '/' {\n start -= 1\n }\n return p.sub(start, end)\n}\n\n// everything before the last element: \"a/b.txt\" -> \"a\", \"b.txt\" -> \".\", \"/b\" -> \"/\"\nfn dir(str p) -> str {\n end := p.len\n while end > 1 && p[end - 1] == '/' {\n end -= 1\n }\n i := end\n while i > 0 && p[i - 1] != '/' {\n i -= 1\n }\n if i == 0 {\n return \".\"\n }\n while i > 1 && p[i - 1] == '/' {\n i -= 1\n }\n return p.sub(0, i)\n}\n\n// the part of the last element from its last dot: \"a.tar.gz\" -> \".gz\"; \"\" when there is none\nfn ext(str p) -> str {\n b := base(p)\n i := b.len\n while i > 0 && b[i - 1] != '.' {\n i -= 1\n }\n if i <= 1 { // no dot, or a name that only starts with one (.bashrc)\n return \"\"\n }\n return b.sub(i - 1, b.len)\n}\n\n// the last element without its extension\nfn stem(str p) -> str {\n b := base(p)\n e := ext(p)\n return b.sub(0, b.len - e.len)\n}\n\n// the elements of a path: \"/a/b/c\" -> [\"a\", \"b\", \"c\"]\nfn parts(str p) -> []str {\n []str out\n for piece in p.split(\"/\") {\n if piece.len > 0 {\n out.push(piece)\n }\n }\n return out\n}\n\n// the shortest path with the same meaning: no \"//\", no \".\", and \"..\" resolved where it can be\nfn clean(str p) -> str {\n if p.len == 0 {\n return \".\"\n }\n abs := is_abs(p)\n []str out\n for piece in parts(p) {\n if piece == \".\" {\n continue\n }\n if piece == \"..\" {\n if out.len > 0 && out[out.len - 1] != \"..\" {\n out.pop()\n } else if !abs {\n out.push(\"..\")\n }\n continue\n }\n out.push(piece)\n }\n joined := out.join(\"/\")\n if abs {\n return \"/\" + joined\n }\n if joined.len == 0 {\n return \".\"\n }\n return joined\n}\n") - list.push("// Programs: run a command, read what it printed, look at the environment.\n//\n// import proc\n// code := proc.run(\"make\") the exit code; what the command prints goes to the screen\n// text := try proc.output(\"git describe\") what the command printed; an error if it failed\n// proc.env(\"HOME\", \"/\") an environment variable, or the second value if it is not set\nimport \"stdlib.h\"\nimport \"unistd.h\"\nimport \"time.h\"\n\n// run a command; its output goes to the screen. Gives its exit code.\nfn run(str command) -> int {\n return shell(command)\n}\n\n// run a command and give what it printed. Fails, with its output as the message, if it exits with an error.\nfn output(str command) -> str! {\n tmp := \"/tmp/finch_out_\" + str(getpid()) + \"_\" + str(int(time(null)))\n code := shell(\"(\" + command + \") > '\" + tmp + \"' 2>&1\")\n text := read_file(tmp) or \"\"\n delete_file(tmp)\n if code != 0 {\n return error(\"'\" + command + \"' exited with code \" + str(code) + \": \" + text.trim())\n }\n return text\n}\n\nfn env(str name, str fallback) -> str {\n v := getenv(name)\n if v.len == 0 {\n return fallback\n }\n return v\n}\n\nfn pid() -> int {\n return int(getpid())\n}\n\n// the folder the program is running in\nfn cwd() -> str {\n []char buf\n for i in 0..4096 {\n buf.push(char(0))\n }\n getcwd(buf.ptr, 4096)\n return str(buf.ptr)\n}\n") - list.push("// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS).\nimport \"stdlib.h\"\nimport \"process.h\"\nimport \"direct.h\"\nimport \"time.h\"\n\nfn run(str command) -> int {\n return shell(command)\n}\n\nfn output(str command) -> str! {\n tmp := proc_env(\"TEMP\", \".\") + \"\\\\finch_out_\" + str(getpid()) + \"_\" + str(int(time(null)))\n code := shell(command + \" > \\\"\" + tmp + \"\\\" 2>&1\")\n text := read_file(tmp) or \"\"\n delete_file(tmp)\n if code != 0 {\n return error(\"'\" + command + \"' exited with code \" + str(code) + \": \" + text.trim())\n }\n return text\n}\n\nfn proc_env(str name, str fallback) -> str {\n v := getenv(name)\n if v.len == 0 {\n return fallback\n }\n return v\n}\n\nfn env(str name, str fallback) -> str {\n return proc_env(name, fallback)\n}\n\nfn pid() -> int {\n return int(getpid())\n}\n\nfn cwd() -> str {\n []char buf\n for i in 0..4096 {\n buf.push(char(0))\n }\n getcwd(buf.ptr, 4096)\n return str(buf.ptr)\n}\n") - list.push("// Time: the clock, sleeping, and dates.\n//\n// import time\n// start := time.millis() milliseconds from a clock that only goes forward (to measure with)\n// time.sleep(250) wait a quarter of a second\n// time.now() seconds since 1970-01-01 00:00 UTC\n// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second\n// time.format(time.now(), \"%Y-%m-%d %H:%M\") as text, in the computer's time zone\nimport \"time.h\"\n\nstruct Date {\n int year\n int month // 1 to 12\n int day // 1 to 31\n int hour\n int minute\n int second\n int weekday // 0 is Sunday\n int yearday // 1 to 366\n}\n\n// seconds since 1970-01-01 00:00 UTC\nfn now() -> int {\n return int(time(null))\n}\n\n// milliseconds on a clock that only goes forward: for measuring how long something took\nfn millis() -> int {\n timespec ts\n clock_gettime(CLOCK_MONOTONIC, addr(ts))\n return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000\n}\n\nfn sleep(int ms) {\n timespec ts\n ts.tv_sec = ms / 1000\n ts.tv_nsec = (ms % 1000) * 1000000\n nanosleep(addr(ts), null)\n}\n\nfn parts(tm t) -> Date {\n return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\n minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\n}\n\n// the date and time of a moment, in UTC\nfn date(int unix) -> Date {\n tm t\n i64 stamp = unix\n gmtime_r(addr(stamp), addr(t))\n return parts(t)\n}\n\n// the date and time of a moment, in the computer's time zone\nfn local(int unix) -> Date {\n tm t\n i64 stamp = unix\n localtime_r(addr(stamp), addr(t))\n return parts(t)\n}\n\n// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second\n// (the rest of C's strftime works too: %A weekday name, %B month name, ...)\nfn format(int unix, str pattern) -> str {\n tm t\n i64 stamp = unix\n localtime_r(addr(stamp), addr(t))\n []char buf\n for i in 0..256 {\n buf.push(char(0))\n }\n strftime(buf.ptr, 256, pattern, addr(t))\n return str(buf.ptr)\n}\n\n// the number of days in a month (month is 1 to 12)\nfn days_in_month(int year, int month) -> int {\n if month == 2 {\n if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\n return 29\n }\n return 28\n }\n if month == 4 || month == 6 || month == 9 || month == 11 {\n return 30\n }\n return 31\n}\n") - list.push("// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS).\nimport \"time.h\"\nimport \"finch_win.h\"\n\nstruct Date {\n int year\n int month // 1 to 12\n int day // 1 to 31\n int hour\n int minute\n int second\n int weekday // 0 is Sunday\n int yearday // 1 to 366\n}\n\nfn now() -> int {\n return int(time(null))\n}\n\n// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms)\nfn millis() -> int {\n i64 count = 0\n i64 freq = 1\n QueryPerformanceFrequency(addr(freq))\n QueryPerformanceCounter(addr(count))\n return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq)\n}\n\nfn sleep(int ms) {\n Sleep(u32(ms))\n}\n\nfn parts(tm t) -> Date {\n return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour),\n minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1)\n}\n\nfn date(int unix) -> Date {\n tm t\n i64 stamp = unix\n _gmtime64_s(addr(t), addr(stamp))\n return parts(t)\n}\n\nfn local(int unix) -> Date {\n tm t\n i64 stamp = unix\n _localtime64_s(addr(t), addr(stamp))\n return parts(t)\n}\n\nfn format(int unix, str pattern) -> str {\n tm t\n i64 stamp = unix\n _localtime64_s(addr(t), addr(stamp))\n []char buf\n for i in 0..256 {\n buf.push(char(0))\n }\n strftime(buf.ptr, 256, pattern, addr(t))\n return str(buf.ptr)\n}\n\nfn days_in_month(int year, int month) -> int {\n if month == 2 {\n if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) {\n return 29\n }\n return 28\n }\n if month == 4 || month == 6 || month == 9 || month == 11 {\n return 30\n }\n return 31\n}\n") - list.push("/* The Windows functions std/time_windows.fch needs. Declared here, not by including :\n libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */\nunsigned long long GetTickCount64(void);\nvoid Sleep(unsigned long milliseconds);\nint QueryPerformanceCounter(long long *count);\nint QueryPerformanceFrequency(long long *frequency);\n") - return list -} diff --git a/src/error.h b/src/error.h new file mode 100644 index 0000000..c848f0c --- /dev/null +++ b/src/error.h @@ -0,0 +1,48 @@ +#pragma once + +#include +#include +#include +#include + +// Every source file the compiler has read; positions point into this list. +struct SourceFile { + std::string path; + std::string text; +}; +inline std::vector g_files; +inline int g_curFile = 0; // the file the lexer/parser is working on + +// The language server needs errors as values: it shows them in the editor and keeps running. +struct FinchError { + int file, line, col; + std::string msg; +}; +inline bool g_throwErrors = false; + +// Finch stops at the first error and shows exactly where it is. +[[noreturn]] inline void failAt(int file, int line, int col, const std::string &msg) { + if (g_throwErrors) throw FinchError{file, line, col, msg}; + const SourceFile &f = g_files.at(file); + std::fprintf(stderr, "%s:%d:%d: error: %s\n", f.path.c_str(), line, col, msg.c_str()); + + size_t start = 0; + for (int l = 1; l < line && start != std::string::npos; l++) { + start = f.text.find('\n', start); + if (start != std::string::npos) start++; + } + if (line > 0 && start != std::string::npos && start < f.text.size()) { + std::string text = f.text.substr(start, f.text.find('\n', start) - start); + std::string pad; + int c = 1; // columns count characters; skip UTF-8 continuation bytes + for (size_t k = 0; k < text.size() && c < col; k++) { + if (((unsigned char)text[k] & 0xC0) == 0x80) continue; + pad += text[k] == '\t' ? '\t' : ' '; + c++; + } + std::fprintf(stderr, "%5d | %s\n | %s^\n", line, text.c_str(), pad.c_str()); + } + std::exit(1); +} + +[[noreturn]] inline void fail(int line, int col, const std::string &msg) { failAt(g_curFile, line, col, msg); } diff --git a/src/host.fch b/src/host.fch deleted file mode 100644 index 1b1b8bd..0000000 --- a/src/host.fch +++ /dev/null @@ -1,83 +0,0 @@ -// What differs between the systems the compiler itself runs on: how a command line is quoted and run, -// where temporary files go, making and removing files. This one is for Linux and macOS (name_windows.fch has -// the Windows one). -import "stdlib.h" -import "unistd.h" -import "clang-c/Index.h" - -// libclang's description of a file that isn't on disk: its Length is C's `unsigned long`, which is 64 bits here -fn unsavedFile(str name, str contents) -> CXUnsavedFile { - return CXUnsavedFile(Filename: name.ptr, Contents: contents.ptr, Length: u64(contents.len)) -} - -fn quote(str a) -> str { - return "'" + a.replace("'", "'\\''") + "'" -} - -// run a command line through the shell; its exit code -fn run(str cmd) -> int { - return shell(cmd) -} - -fn nullDevice() -> str { - return "/dev/null" -} - -// the folder for temporary files -fn tempDir() -> str { - t := getenv("TMPDIR") - if t.len > 0 { - if t.ends_with("/") { - return t.sub(0, t.len - 1) - } - return t - } - return "/tmp" -} - -fn pathSeparator() -> str { - return ":" -} - -fn pid() -> int { - return int(getpid()) -} - -// the folder the compiler was started in -fn cwd() -> str { - return getenv("PWD") -} - -// where files that are made once and kept go -fn cacheDir() -> str { - x := getenv("XDG_CACHE_HOME") - if x.len > 0 { - return x + "/finch" - } - h := getenv("HOME") - if h.len > 0 { - return h + "/.cache/finch" - } - return tempDir() + "/finch-cache" -} - -// the editor protocol is bytes, not text lines -fn binaryStdio() { -} - -fn makeDirs(str path) { - shell("mkdir -p " + quote(path)) -} - -fn remove(str path) { - delete_file(path) -} - -fn removeTree(str path) { - shell("rm -rf " + quote(path)) -} - -// move a file over another -fn move(str from, str to) { - shell("mv " + quote(from) + " " + quote(to)) -} diff --git a/src/host_windows.fch b/src/host_windows.fch deleted file mode 100644 index 9801e39..0000000 --- a/src/host_windows.fch +++ /dev/null @@ -1,104 +0,0 @@ -// What differs between the systems the compiler itself runs on: how a command line is quoted and run, -// where temporary files go, making and removing files. This one is for Windows (host.fch is for Linux and macOS). -import "stdlib.h" -import "stdio.h" -import "process.h" -import "direct.h" -import "io.h" -import "clang-c/Index.h" - -// a Windows argument: in double quotes, with the quotes inside doubled up the way CreateProcess reads them -// libclang's description of a file that isn't on disk: its Length is C's `unsigned long`, which is 32 bits on Windows -fn unsavedFile(str name, str contents) -> CXUnsavedFile { - return CXUnsavedFile(Filename: name.ptr, Contents: contents.ptr, Length: u32(contents.len)) -} - -fn quote(str a) -> str { - return "\"" + a.replace("\"", "\\\"") + "\"" -} - -// Paths use / inside the compiler; cmd.exe wants \ -fn native(str path) -> str { - return path.replace("/", "\\") -} - -// run a command line through cmd.exe; its exit code. -// system() runs `cmd /c `, and cmd drops the first and last quote of a line that starts with one: so the line -// gets one more pair around it. -fn run(str cmd) -> int { - return shell("\"" + cmd + "\"") -} - -fn nullDevice() -> str { - return "NUL" -} - -fn tempDir() -> str { - for name in ["TEMP", "TMP"] { - t := getenv(name) - if t.len > 0 { - return t.replace("\\", "/") - } - } - return "." -} - -fn pathSeparator() -> str { - return ";" -} - -fn pid() -> int { - return int(getpid()) -} - -fn cwd() -> str { - here := _getcwd(null, 0) // C allocates the buffer - if here.len == 0 { - return "." - } - return here.replace("\\", "/") -} - -fn cacheDir() -> str { - x := getenv("LOCALAPPDATA") - if x.len > 0 { - return x.replace("\\", "/") + "/finch" - } - return tempDir() + "/finch-cache" -} - -// the editor protocol is bytes, not text lines: no \r\n translation on stdin and stdout -fn binaryStdio() { - _setmode(0, 32768) // _O_BINARY - _setmode(1, 32768) -} - -fn makeDirs(str path) { - p := path.replace("\\", "/") - at := 0 - for part in p.split("/") { - if at > 0 { - at += 1 - } - at += part.len - if part.len == 0 || part.ends_with(":") { - continue // "" before a leading / and the drive letter - } - sofar := p.sub(0, at) - _mkdir(sofar) // fails when it is there already, which is fine - } -} - -fn remove(str path) { - delete_file(path) -} - -fn removeTree(str path) { - shell("\"rmdir /s /q " + quote(native(path)) + " 2> NUL\"") -} - -// move a file over another -fn move(str from, str to) { - delete_file(to) - rename(from, to) -} diff --git a/src/index.h b/src/index.h new file mode 100644 index 0000000..9e12b25 --- /dev/null +++ b/src/index.h @@ -0,0 +1,39 @@ +#pragma once +// What the compiler learns about a program while checking it, for the language server: +// what each name is, its type, and where it was defined. + +#include +#include + +struct SymRef { // a name in the source + int file, line, col, len; + std::string hover; // markdown shown on mouse-over + int defFile = -1, defLine = 0, defCol = 0; +}; + +struct VarInfo { // a variable or parameter, for completion + std::string name, type; + int file, line, col; + int fnFile, fnLine, fnEnd; // the function it lives in +}; + +struct FnInfo { + std::string module, name, signature, doc; + std::vector params; + int file, line, col, endLine; +}; + +struct StructIndex { + std::string module, name; + std::vector> fields; // name, type + int file, line, col; +}; + +struct SemIndex { + std::vector refs; + std::vector vars; + std::vector fns; + std::vector structs; +}; + +inline SemIndex *g_index = nullptr; // set by the language server; null when compiling diff --git a/src/lexer.cpp b/src/lexer.cpp new file mode 100644 index 0000000..ffe367f --- /dev/null +++ b/src/lexer.cpp @@ -0,0 +1,214 @@ +#include "lexer.h" +#include "error.h" + +#include +#include + +static const std::unordered_map keywords = { + {"fn", Tok::Fn}, {"return", Tok::Return}, {"if", Tok::If}, + {"else", Tok::Else}, {"while", Tok::While}, {"for", Tok::For}, + {"in", Tok::In}, {"break", Tok::Break}, {"continue", Tok::Continue}, + {"true", Tok::True}, {"false", Tok::False}, {"null", Tok::Null}, + {"import", Tok::Import}, {"link", Tok::Link}, {"struct", Tok::Struct}, + {"defer", Tok::Defer}, {"or", Tok::OrElse}, {"try", Tok::Try}, +}; + +std::vector lex(int file) { + g_curFile = file; + const std::string &src = g_files[file].text; + std::vector out; + size_t i = 0; + int line = 1, col = 1; + bool newline = true; + + auto advance = [&]() { + if (src[i] == '\n') { line++; col = 1; newline = true; } + else if (((unsigned char)src[i] & 0xC0) != 0x80) col++; // count characters, not UTF-8 bytes + i++; + }; + auto peek = [&](size_t off = 0) -> char { + return i + off < src.size() ? src[i + off] : '\0'; + }; + + while (i < src.size()) { + char c = src[i]; + + if (std::isspace((unsigned char)c)) { advance(); continue; } + if (c == '/' && peek(1) == '/') { + while (i < src.size() && src[i] != '\n') advance(); + continue; + } + if (c == '/' && peek(1) == '*') { + int l = line, cl = col; + advance(); advance(); + while (i < src.size() && !(src[i] == '*' && peek(1) == '/')) advance(); + if (i >= src.size()) fail(l, cl, "comment is never closed (missing */)"); + advance(); advance(); + continue; + } + + Token t{Tok::End, "", line, col, newline}; + newline = false; + + if (std::isalpha((unsigned char)c) || c == '_') { + size_t start = i; + while (std::isalnum((unsigned char)peek()) || peek() == '_') advance(); + t.text = src.substr(start, i - start); + auto kw = keywords.find(t.text); + t.kind = kw != keywords.end() ? kw->second : Tok::Ident; + } else if (std::isdigit((unsigned char)c)) { + size_t start = i; + t.kind = Tok::Int; + if (c == '0' && (peek(1) == 'x' || peek(1) == 'X')) { // 0xFF + advance(); advance(); + while (std::isxdigit((unsigned char)peek()) || peek() == '_') advance(); + if (i - start == 2) fail(t.line, t.col, "'0x' needs hex digits after it, like 0xFF"); + } else { + while (std::isdigit((unsigned char)peek()) || peek() == '_') advance(); + // "1..5" is a range, not the float "1." + if (peek() == '.' && std::isdigit((unsigned char)peek(1))) { + t.kind = Tok::Float; + advance(); + while (std::isdigit((unsigned char)peek()) || peek() == '_') advance(); + } + } + for (size_t k = start; k < i; k++) + if (src[k] != '_') t.text += src[k]; + } else if (c == '"' || c == '\'') { + char quote = c; + t.kind = quote == '"' ? Tok::String : Tok::Char; + advance(); + while (peek() != quote) { + if (peek() == '\0' || peek() == '\n') + fail(t.line, t.col, quote == '"' ? "string is never closed (missing \")" + : "char is never closed (missing ')"); + char ch = peek(); + advance(); + if (ch == '\\') { + char e = peek(); + advance(); + switch (e) { + case 'n': ch = '\n'; break; + case 't': ch = '\t'; break; + case 'r': ch = '\r'; break; + case '0': ch = '\0'; break; + case '\\': ch = '\\'; break; + case '"': ch = '"'; break; + case '\'': ch = '\''; break; + default: fail(line, col - 1, std::string("unknown escape \\") + e); + } + } + t.text += ch; + } + advance(); + if (t.kind == Tok::Char && t.text.size() != 1) + fail(t.line, t.col, "a char holds exactly one character, like 'a'"); + } else { + char n = peek(1); + auto two = [&](Tok k) { t.kind = k; advance(); advance(); }; + auto one = [&](Tok k) { t.kind = k; advance(); }; + switch (c) { + case '(': one(Tok::LParen); break; + case ')': one(Tok::RParen); break; + case '{': one(Tok::LBrace); break; + case '}': one(Tok::RBrace); break; + case '[': one(Tok::LBracket); break; + case ']': one(Tok::RBracket); break; + case ',': one(Tok::Comma); break; + case '%': n == '=' ? two(Tok::PercentEq) : one(Tok::Percent); break; + case '^': one(Tok::Caret); break; + case '~': one(Tok::Tilde); break; + case '.': n == '.' ? two(Tok::DotDot) : one(Tok::Dot); break; + case '+': n == '=' ? two(Tok::PlusEq) : one(Tok::Plus); break; + case '-': n == '=' ? two(Tok::MinusEq) : n == '>' ? two(Tok::Arrow) : one(Tok::Minus); break; + case '*': n == '=' ? two(Tok::StarEq) : one(Tok::Star); break; + case '/': n == '=' ? two(Tok::SlashEq) : one(Tok::Slash); break; + case '=': n == '=' ? two(Tok::Eq) : one(Tok::Assign); break; + case '!': n == '=' ? two(Tok::NotEq) : one(Tok::Not); break; + case '<': n == '=' ? two(Tok::LessEq) : n == '<' ? two(Tok::Shl) : one(Tok::Less); break; + case '>': n == '=' ? two(Tok::GreaterEq) : n == '>' ? two(Tok::Shr) : one(Tok::Greater); break; + case ':': n == '=' ? two(Tok::Declare) : one(Tok::Colon); break; + case '&': n == '&' ? two(Tok::And) : one(Tok::Amp); break; + case '|': n == '|' ? two(Tok::Or) : one(Tok::Pipe); break; + default: { + // show the whole UTF-8 character, not just its first byte + size_t len = (c & 0xE0) == 0xC0 ? 2 : (c & 0xF0) == 0xE0 ? 3 : (c & 0xF8) == 0xF0 ? 4 : 1; + std::string ch = src.substr(i, len); + std::string hint = (unsigned char)c >= 0x80 ? " (names use only a-z, A-Z, 0-9 and _; other letters only go inside \"text\")" : ""; + fail(line, col, "unexpected character '" + ch + "'" + hint); + } + } + } + out.push_back(t); + } + out.push_back({Tok::End, "", line, col, true}); + return out; +} + +const char *tokName(Tok t) { + switch (t) { + case Tok::End: return "end of file"; + case Tok::Ident: return "a name"; + case Tok::Int: return "a number"; + case Tok::Float: return "a number"; + case Tok::String: return "a string"; + case Tok::Char: return "a char"; + case Tok::Fn: return "'fn'"; + case Tok::Return: return "'return'"; + case Tok::If: return "'if'"; + case Tok::Else: return "'else'"; + case Tok::While: return "'while'"; + case Tok::For: return "'for'"; + case Tok::In: return "'in'"; + case Tok::Break: return "'break'"; + case Tok::Continue: return "'continue'"; + case Tok::True: return "'true'"; + case Tok::False: return "'false'"; + case Tok::Null: return "'null'"; + case Tok::Import: return "'import'"; + case Tok::Link: return "'link'"; + case Tok::Struct: return "'struct'"; + case Tok::Defer: return "'defer'"; + case Tok::OrElse: return "'or'"; + case Tok::Try: return "'try'"; + case Tok::Colon: return "':'"; + case Tok::LParen: return "'('"; + case Tok::RParen: return "')'"; + case Tok::LBrace: return "'{'"; + case Tok::RBrace: return "'}'"; + case Tok::LBracket: return "'['"; + case Tok::RBracket: return "']'"; + case Tok::Comma: return "','"; + case Tok::Dot: return "'.'"; + case Tok::Arrow: return "'->'"; + case Tok::DotDot: return "'..'"; + case Tok::Plus: return "'+'"; + case Tok::Minus: return "'-'"; + case Tok::Star: return "'*'"; + case Tok::Slash: return "'/'"; + case Tok::Percent: return "'%'"; + case Tok::Amp: return "'&'"; + case Tok::Pipe: return "'|'"; + case Tok::Caret: return "'^'"; + case Tok::Tilde: return "'~'"; + case Tok::Shl: return "'<<'"; + case Tok::Shr: return "'>>'"; + case Tok::PercentEq: return "'%='"; + case Tok::Assign: return "'='"; + case Tok::Declare: return "':='"; + case Tok::PlusEq: return "'+='"; + case Tok::MinusEq: return "'-='"; + case Tok::StarEq: return "'*='"; + case Tok::SlashEq: return "'/='"; + case Tok::Eq: return "'=='"; + case Tok::NotEq: return "'!='"; + case Tok::Less: return "'<'"; + case Tok::LessEq: return "'<='"; + case Tok::Greater: return "'>'"; + case Tok::GreaterEq: return "'>='"; + case Tok::And: return "'&&'"; + case Tok::Or: return "'||'"; + case Tok::Not: return "'!'"; + } + return "?"; +} diff --git a/src/lexer.h b/src/lexer.h new file mode 100644 index 0000000..23761b8 --- /dev/null +++ b/src/lexer.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include + +enum class Tok { + End, + Ident, Int, Float, String, Char, + + // keywords + Fn, Return, If, Else, While, For, In, Break, Continue, True, False, Null, Import, Link, Struct, Defer, + OrElse, Try, // or, try + + // punctuation + LParen, RParen, LBrace, RBrace, LBracket, RBracket, Comma, Colon, Dot, DotDot, Arrow, + + // operators + Plus, Minus, Star, Slash, Percent, + Amp, Pipe, Caret, Tilde, Shl, Shr, // & | ^ ~ << >> + Assign, Declare, // = := + PlusEq, MinusEq, StarEq, SlashEq, PercentEq, // += -= *= /= %= + Eq, NotEq, Less, LessEq, Greater, GreaterEq, + And, Or, Not, +}; + +struct Token { + Tok kind; + std::string text; + int line; + int col; + bool newlineBefore; // token starts a new line: ends the previous statement +}; + +// Lexes g_files[file].text. +std::vector lex(int file); +const char *tokName(Tok t); diff --git a/src/linker.fch b/src/linker.fch deleted file mode 100644 index ba5592f..0000000 --- a/src/linker.fch +++ /dev/null @@ -1,299 +0,0 @@ -// From LLVM IR to a program: compile the IR, add the runtime (compiled once and kept), link the C libraries -// and C files the program asks for, and turn the linker's complaints into something a person can act on. -import platform -import cimport -import host - -// 32-bit FNV-1a, as hex: names the cached runtime object after what it was built from -fn fingerprint(str text) -> str { - u32 h = 2166136261 - for c in text { - h = (h ^ u32(c)) * 16777619 - } - digits := "0123456789abcdef" - []str parts - for k in 0..8 { - parts.push(str(digits[int((h >> u32(28 - 4 * k)) & 15)])) - } - return parts.join("") -} - -fn quote(str a) -> str { - return host.quote(a) -} - -// "-lname", or whatever pkg-config says the library needs -fn libFlags(str name, platform.Target tg) -> str { - if name.ends_with(".framework") { - return "-framework " + quote(name.sub(0, name.len - 10)) // macOS: link "Cocoa.framework" - } - if !tg.cross { - tmp := host.tempDir() + "/finch_pkg_flags_" + str(host.pid()) + ".txt" - code := host.run("pkg-config --libs " + quote(name) + " > " + quote(tmp) + " 2> " + host.nullDevice()) - if code == 0 && file_exists(tmp) { - flags := (read_file(tmp) or "").trim() - host.remove(tmp) - if flags.len > 0 { - return flags - } - } - } - return quote("-l" + name) -} - -// "GLFW/glfw3.h" -> "glfw": a decent first guess for the library's name -fn guessLib(str header) -> str { - name := header - slash := name.find("/") - while slash >= 0 { - name = name.sub(slash + 1, name.len) - slash = name.find("/") - } - dot := name.len - for i in 0..name.len { - if name[i] == '.' { - dot = i - } - } - name = name.sub(0, dot) - while name.len > 0 && name[name.len - 1] >= '0' && name[name.len - 1] <= '9' { - name = name.sub(0, name.len - 1) - } - return name.lower() -} - -struct Names { - []str items -} - -fn Names.add(str x) { - if x.len > 0 && !self.items.contains(x) { - self.items.push(x) - } -} - -// the text after `marker` up to the next one of `stops` -fn between(str line, str marker, str stops) -> str { - a := line.find(marker) - if a < 0 { - return "" - } - rest := line.sub(a + marker.len, line.len) - n := 0 - while n < rest.len && !stops.contains(str(rest[n])) { - n += 1 - } - return rest.sub(0, n) -} - -// The linker speaks in riddles; say what is missing and what to write. -fn linkFailed(str output, cimport.CImports ci, platform.Target tg) -> int { - missing := Names() - libs := Names() - for line in output.split("\n") { - l := line.trim() - if l.contains("undefined reference to `") { - missing.add(between(l, "undefined reference to `", "'")) - } else if l.contains("undefined symbol: ") { - missing.add(between(l, "undefined symbol: ", " \n")) - } else if l.contains("unresolved external symbol ") { - missing.add(between(l, "unresolved external symbol ", " \n\r")) - } else if l.contains("cannot find -l") { - libs.add(between(l, "cannot find -l", ": \n\r")) - } else if l.contains("library not found for -l") { - libs.add(between(l, "library not found for -l", ": \n\r")) - } else if l.contains("ld: library '") { - libs.add(between(l, "ld: library '", "'")) - } else if l.contains("framework '") && l.contains("not found") { - libs.add(between(l, "framework '", "'") + ".framework") - } else if l.starts_with("\"") && l.contains("\", referenced from:") { - // Apple ld: "_name", referenced from: - name := l.sub(1, l.find("\", referenced from:")) - if tg.darwin && name.starts_with("_") { - name = name.sub(1, name.len) - } - missing.add(name) - } - } - if missing.items.len == 0 && libs.items.len == 0 { - print(output + "error: linking failed") - return 1 - } - for lib in libs.items { - print("error: the library '" + lib + "' wasn't found. Is it installed? (on Nix: add it to shell.nix)") - } - // the missing functions, grouped by the header they came from - []str headers - []Names byHeader - for name in missing.items { - header := "" - if ci.fns.has(name) { - header = ci.fns[name].header - } - k := headers.find(header) - if k < 0 { - headers.push(header) - byHeader.push(Names()) - k = headers.len - 1 - } - byHeader[k].add(name) - } - for k in 0..headers.len { - names := byHeader[k].items - []str shown - for i in 0..names.len { - if i < 3 { - shown.push(names[i]) - } - } - list := shown.join(", ") - if names.len > 3 { - list = list + " and " + str(names.len - 3) + " more" - } - if headers[k].len == 0 { - print("error: no code found for " + list) - continue - } - verb := "come" - if names.len == 1 { - verb = "comes" - } - print("error: " + list + " " + verb + " from \"" + headers[k] + "\", but its library isn't linked") - print(" the header only says the functions exist; their code lives in a library.") - print(" add this at the top of your file (with the library's real name):") - print("") - print(" link \"" + guessLib(headers[k]) + "\"") - print("") - } - return 1 -} - -// The runtime, compiled once per system and compiler and kept in the cache folder. -fn runtimeObject(str rt, platform.Target tg, str cc) -> str! { - source := try read_file(rt) - dir := host.cacheDir() - obj := dir + "/rt-" + fingerprint(source + cc + tg.triple + "2.5") + ".o" - if file_exists(obj) { - return obj - } - host.makeDirs(dir) - part := obj + ".part" + str(host.pid()) - pic := " -fPIC" - if tg.windows { - pic = "" - } - log := part + ".log" - code := host.run(cc + " -O2" + pic + " -c " + quote(rt) + " -o " + quote(part) + " > " + quote(log) + " 2>&1") - if code != 0 { - text := read_file(log) or "" - host.remove(part) - host.remove(log) - return error(text + "error: couldn't build the Finch runtime with '" + cc + "' (is a C compiler installed?)") - } - host.remove(log) - host.move(part, obj) - return obj -} - -struct Build { - str out // the program - str ir // its LLVM IR, as text - str rt // the runtime's source file - str opt // -O2 or -O0 - str extra // -g, -fPIC ... - bool shared - []str links // what the program asked to link: a library name, a .c file (with its folder), a .o or .a -} - -// IR -> program. 0 if it worked. -fn build(Build b, platform.Target tg, cimport.CImports ci) -> int { - clang := getenv("FINCH_CLANG") - if clang.len == 0 { - clang = "clang" - } - // the C compiler of the runtime and the linker: the target's own when building for another system - cc := clang - if tg.cross { - cc = tg.cc - } else if getenv("FINCH_CC").len > 0 { - cc = getenv("FINCH_CC") - } - rtobj := runtimeObject(b.rt, tg, cc) or { - print(err) - return 1 - } - ll := b.out + ".ll" - obj := b.out + ".o" - write_file(ll, b.ir) - target := "" - if tg.cross || tg.windows { - target = " --target=" + tg.triple - } - log := b.out + ".log" - code := host.run(clang + target + " " + b.opt + b.extra + " -w -c " + quote(ll) + " -o " + quote(obj) + " > " + quote(log) + " 2>&1") - host.remove(ll) - if code != 0 { - print(read_file(log) or "") - print("error: clang couldn't compile the program's IR") - host.remove(obj) - host.remove(log) - return 1 - } - cmd := cc + " " + quote(obj) + " " + quote(rtobj) + " -o " + quote(b.out) - if !tg.msvc { - cmd = cmd + " -lm" - } - if getenv("FINCH_LDFLAGS").len > 0 { - cmd = cmd + " " + getenv("FINCH_LDFLAGS") // more flags for the linker, like -L/where/libclang/is - } - if b.shared { - if tg.darwin { - cmd = cmd + " -dynamiclib" - } else { - cmd = cmd + " -shared" - } - } - []str temps - for l in b.links { - if l.ends_with(".c") { - // the program's own C file, built along with it - o := b.out + "." + str(temps.len) + ".o" - pic := " -fPIC" - if tg.windows { - pic = "" - } - c := host.run(cc + " -O2" + pic + " -c " + quote(l) + " -o " + quote(o) + " > " + quote(log) + " 2>&1") - if c != 0 { - print((read_file(log) or "") + "error: couldn't compile " + l) - host.remove(obj) - host.remove(log) - host.remove(o) - return 1 - } - temps.push(o) - cmd = cmd + " " + quote(o) - } else if l.ends_with(".o") || l.ends_with(".a") { - cmd = cmd + " " + quote(l) - } else { - cmd = cmd + " " + libFlags(l, tg) - } - } - status := host.run(cmd + " > " + quote(log) + " 2>&1") - output := read_file(log) or "" - host.remove(obj) - host.remove(log) - for t in temps { - host.remove(t) - } - if status == 127 { - print("error: no C compiler found to link with ('" + cc + "'; install one, or set FINCH_CC)") - return 1 - } - if status != 0 { - return linkFailed(output, ci, tg) - } - if output.len > 0 { - print(output) // warnings, if any - } - return 0 -} diff --git a/src/loader.cpp b/src/loader.cpp new file mode 100644 index 0000000..a4d57e9 --- /dev/null +++ b/src/loader.cpp @@ -0,0 +1,74 @@ +#include "loader.h" +#include "error.h" +#include "lexer.h" +#include "parser.h" +#include "target.h" + +#include +#include +#include + +#include +#include +#include +#include + +using namespace llvm; + +static bool readFile(const std::string &path, std::string &out) { + std::ifstream in(path, std::ios::binary); + if (!in) return false; + std::stringstream ss; + ss << in.rdbuf(); + out = ss.str(); + return true; +} + +std::string normalizePath(const std::string &path) { + SmallString<256> p(path); + sys::fs::make_absolute(p); + sys::path::remove_dots(p, true); + sys::path::native(p); + return std::string(p.str()); +} + +void Loader::load(const std::string &path, const std::string &module, Pos from) { + std::string text; + bool found = false; + if (overrides) { + auto it = overrides->find(normalizePath(path)); + if (it != overrides->end()) text = it->second, found = true; + } + if (!found && !readFile(path, text)) { + if (from.line) failAt(from.file, from.line, from.col, "can't find the module '" + module + "' (looked for " + path + ")"); + std::fprintf(stderr, "error: can't open '%s'\n", path.c_str()); + std::exit(1); + } + int idx = (int)g_files.size(); + g_files.push_back({path, text}); + Program p = parse(lex(idx), idx); + p.module = module; + p.path = path; + std::vector mods; + for (const Import &im : p.imports) + if (!im.isC) mods.push_back(im); + progs.push_back(std::move(p)); + for (const Import &im : mods) { + if (im.path == "main") failAt(im.pos.file, im.pos.line, im.pos.col, "'main' can't be imported"); + if (loaded[im.path]) continue; + loaded[im.path] = true; + load(findModule(dirOf(path), im.path), im.path, im.pos); + } +} + +// next to the importing file, then in $FINCH_PATH folders +std::string Loader::findModule(const std::string &dir, const std::string &name) { + std::string here = dir + "/" + name + ".fch"; + if (sys::fs::exists(here)) return here; + if (const char *fp = std::getenv("FINCH_PATH")) { + std::stringstream ss(fp); + for (std::string d; std::getline(ss, d, pathListSeparator());) + if (!d.empty() && sys::fs::exists(d + "/" + name + ".fch")) return d + "/" + name + ".fch"; + } + return here; +} diff --git a/src/loader.h b/src/loader.h new file mode 100644 index 0000000..e9364a3 --- /dev/null +++ b/src/loader.h @@ -0,0 +1,20 @@ +#pragma once +// Reads the main file and, recursively, every Finch module it imports. + +#include "ast.h" + +#include +#include +#include + +struct Loader { + std::vector progs; + std::map loaded; // module name -> seen + const std::map *overrides = nullptr; // path -> text (files open in an editor) + + void load(const std::string &path, const std::string &module, Pos from); + static std::string findModule(const std::string &dir, const std::string &name); +}; + +// A path made absolute and tidy, so two spellings of one file compare equal. +std::string normalizePath(const std::string &path); diff --git a/src/lsp.cpp b/src/lsp.cpp new file mode 100644 index 0000000..938b0b0 --- /dev/null +++ b/src/lsp.cpp @@ -0,0 +1,580 @@ +// The Finch language server: `finch lsp` speaks the Language Server Protocol on stdin/stdout. +// +// Every time a document changes it is checked by the real compiler (lexer, parser, type +// checker and code generator, without optimizing or writing anything), with errors thrown +// instead of ending the process and a semantic index (index.h) collecting what each name is. +// Hover, go-to-definition, completion, signature help and document symbols read that index. + +#include "builtins_doc.h" +#include "cimport.h" +#include "codegen.h" +#include "error.h" +#include "index.h" +#include "loader.h" +#include "target.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#include +#include +#endif + +using namespace llvm; + +namespace { + +// ---------- URIs ---------- + +std::string uriToPath(const std::string &uri) { + std::string s = uri.rfind("file://", 0) == 0 ? uri.substr(7) : uri; + std::string out; + for (size_t i = 0; i < s.size(); i++) { + if (s[i] == '%' && i + 2 < s.size()) { + out += (char)std::stoi(s.substr(i + 1, 2), nullptr, 16); + i += 2; + } else { + out += s[i]; + } + } +#ifdef _WIN32 + if (out.size() > 2 && out[0] == '/' && out[2] == ':') out = out.substr(1); // /c:/x -> c:/x +#endif + return normalizePath(out); +} + +std::string pathToUri(const std::string &path) { + std::string p = normalizePath(path), out = "file://"; +#ifdef _WIN32 + for (char &c : p) + if (c == '\\') c = '/'; + out += "/"; +#endif + for (unsigned char c : p) { + if (isalnum(c) || c == '/' || c == '-' || c == '_' || c == '.' || c == '~' || c == ':') out += (char)c; + else { + char buf[4]; + std::snprintf(buf, sizeof buf, "%%%02X", c); + out += buf; + } + } + return out; +} + +// ---------- one check of a document ---------- + +struct Diagnostic { + std::string path; + int line, col; + std::string msg; +}; + +struct Analysis { + std::vector files; + SemIndex index; + std::vector diags; + std::set modules; // modules the document imports + const CImports *c = nullptr; +}; + +class Server { +public: + int run(); + +private: + std::map docs; // normalized path -> text + std::map> results; // last check of each open document + std::map> lastGood; // last check without errors + std::map> headerCache; + std::set diagnosed; // paths we published errors for + TargetMachine *tm = nullptr; + bool shutdown = false; + + // protocol + bool readMessage(json::Value &out); + void send(const json::Value &v); + void reply(const json::Value &id, json::Value result); + void notify(const std::string &method, json::Value params); + void handle(const json::Object &msg); + + // features + void check(const std::string &path); + json::Value hover(const std::string &path, int line, int col); + json::Value definition(const std::string &path, int line, int col); + json::Value completion(const std::string &path, int line, int col); + json::Value symbols(const std::string &path); + json::Value signatureHelp(const std::string &path, int line, int col); + + const SymRef *refAt(const Analysis &a, const std::string &path, int line, int col); + std::string lineText(const std::string &path, int line); +}; + +bool Server::readMessage(json::Value &out) { + size_t length = 0; + std::string header; + while (std::getline(std::cin, header)) { + if (!header.empty() && header.back() == '\r') header.pop_back(); + if (header.empty()) break; + if (header.rfind("Content-Length:", 0) == 0) length = std::stoul(header.substr(15)); + } + if (!std::cin || length == 0) return false; + std::string body(length, '\0'); + std::cin.read(&body[0], length); + Expected v = json::parse(body); + if (!v) { + consumeError(v.takeError()); + return true; // skip a broken message + } + out = std::move(*v); + return true; +} + +void Server::send(const json::Value &v) { + std::string body; + raw_string_ostream os(body); + os << v; + os.flush(); + std::cout << "Content-Length: " << body.size() << "\r\n\r\n" << body; + std::cout.flush(); +} + +void Server::reply(const json::Value &id, json::Value result) { + send(json::Object{{"jsonrpc", "2.0"}, {"id", id}, {"result", std::move(result)}}); +} + +void Server::notify(const std::string &method, json::Value params) { + send(json::Object{{"jsonrpc", "2.0"}, {"method", method}, {"params", std::move(params)}}); +} + +int Server::run() { +#ifdef _WIN32 + _setmode(_fileno(stdin), _O_BINARY); + _setmode(_fileno(stdout), _O_BINARY); +#endif + initTargets(); + setTarget(""); + std::string err; + const Target *target = TargetRegistry::lookupTarget(g_target.triple, err); + if (!target) return 1; + tm = target->createTargetMachine(g_target.triple, "generic", "", TargetOptions(), Reloc::PIC_); + + json::Value msg(nullptr); + while (readMessage(msg)) { + if (const json::Object *o = msg.getAsObject()) handle(*o); + if (shutdown && !std::cin) break; + } + return 0; +} + +static int intAt(const json::Object *o, const char *key) { + if (!o) return 0; + if (auto v = o->getInteger(key)) return (int)*v; + return 0; +} + +void Server::handle(const json::Object &msg) { + std::string method = msg.getString("method").value_or("").str(); + const json::Value *id = msg.get("id"); + const json::Object *params = msg.getObject("params"); + auto docPath = [&]() -> std::string { + if (!params) return ""; + const json::Object *td = params->getObject("textDocument"); + return td ? uriToPath(td->getString("uri").value_or("").str()) : ""; + }; + // positions: LSP is 0-based (line, UTF-16 column); Finch is 1-based (line, character) + auto position = [&](int &line, int &col) { + const json::Object *pos = params ? params->getObject("position") : nullptr; + line = intAt(pos, "line") + 1; + col = intAt(pos, "character") + 1; + }; + + if (method == "initialize") { + json::Object caps{ + {"textDocumentSync", json::Object{{"openClose", true}, {"change", 1}, {"save", true}}}, + {"hoverProvider", true}, + {"definitionProvider", true}, + {"documentSymbolProvider", true}, + {"completionProvider", json::Object{{"triggerCharacters", json::Array{"."}}}}, + {"signatureHelpProvider", json::Object{{"triggerCharacters", json::Array{"(", ","}}}}, + }; + reply(*id, json::Object{{"capabilities", std::move(caps)}, + {"serverInfo", json::Object{{"name", "finch"}, {"version", FINCH_VERSION}}}}); + } else if (method == "shutdown") { + shutdown = true; + reply(*id, nullptr); + } else if (method == "exit") { + std::exit(shutdown ? 0 : 1); + } else if (method == "textDocument/didOpen" || method == "textDocument/didChange") { + std::string path = docPath(); + if (method == "textDocument/didOpen") { + docs[path] = params->getObject("textDocument")->getString("text").value_or("").str(); + } else if (const json::Array *changes = params->getArray("contentChanges")) { + if (!changes->empty()) + if (const json::Object *ch = changes->back().getAsObject()) docs[path] = ch->getString("text").value_or("").str(); + } + check(path); + } else if (method == "textDocument/didSave") { + check(docPath()); + } else if (method == "textDocument/didClose") { + std::string path = docPath(); + docs.erase(path); + results.erase(path); + lastGood.erase(path); + notify("textDocument/publishDiagnostics", json::Object{{"uri", pathToUri(path)}, {"diagnostics", json::Array{}}}); + } else if (id) { + int line = 0, col = 0; + position(line, col); + std::string path = docPath(); + if (method == "textDocument/hover") reply(*id, hover(path, line, col)); + else if (method == "textDocument/definition") reply(*id, definition(path, line, col)); + else if (method == "textDocument/completion") reply(*id, completion(path, line, col)); + else if (method == "textDocument/documentSymbol") reply(*id, symbols(path)); + else if (method == "textDocument/signatureHelp") reply(*id, signatureHelp(path, line, col)); + else send(json::Object{{"jsonrpc", "2.0"}, {"id", *id}, + {"error", json::Object{{"code", -32601}, {"message", "not supported: " + method}}}}); + } +} + +// Check `path` with the real compiler, keep the index, publish errors. +void Server::check(const std::string &path) { + auto a = std::make_shared(); + g_files.clear(); + g_throwErrors = true; + g_index = &a->index; + try { + Loader loader; + loader.overrides = &docs; + loader.load(path, "", Pos{}); + std::vector imports; + std::vector dirs; + std::string key; + for (const Program &p : loader.progs) { + for (const Import &im : p.imports) { + imports.push_back(im); + if (im.isC) key += im.path + "\n"; + else if (p.module.empty()) a->modules.insert(im.path); + } + std::string d = dirOf(p.path); + if (std::find(dirs.begin(), dirs.end(), d) == dirs.end()) dirs.push_back(d), key += "@" + d + "\n"; + } + auto &cached = headerCache[key]; // headers are slow to read: once per set of imports + if (!cached) cached = std::make_unique(importHeaders(imports, dirs)); + a->c = cached.get(); + LLVMContext ctx; + generate(loader.progs, *cached, ctx, *tm, false); + } catch (const FinchError &e) { + std::string file = e.file >= 0 && e.file < (int)g_files.size() ? normalizePath(g_files[e.file].path) : path; + a->diags.push_back({file, e.line, e.col, e.msg}); + } + g_index = nullptr; + g_throwErrors = false; + a->files = g_files; + + // While the code is half-typed (`p.`, `add(1, `) it doesn't compile; completion and signature + // help keep using what the last good version knew. Hover and definition use the newest refs. + if (a->diags.empty()) { + lastGood[path] = a; + } else if (auto good = lastGood.find(path); good != lastGood.end()) { + const Analysis &g = *good->second; + for (const FnInfo &f : g.index.fns) a->index.fns.push_back(f); + for (const StructIndex &st : g.index.structs) a->index.structs.push_back(st); + for (const VarInfo &v : g.index.vars) a->index.vars.push_back(v); + if (a->modules.empty()) a->modules = g.modules; + if (!a->c) a->c = g.c; + } + results[path] = a; + + std::map byFile; + byFile[path]; + for (const std::string &p : diagnosed) byFile[p]; // clear errors that went away + diagnosed.clear(); + for (const Diagnostic &d : a->diags) { + int line = std::max(0, d.line - 1), col = std::max(0, d.col - 1); + byFile[d.path].push_back(json::Object{ + {"range", json::Object{{"start", json::Object{{"line", line}, {"character", col}}}, + {"end", json::Object{{"line", line}, {"character", col + 1}}}}}, + {"severity", 1}, + {"source", "finch"}, + {"message", d.msg}}); + diagnosed.insert(d.path); + } + for (auto &[p, list] : byFile) + notify("textDocument/publishDiagnostics", json::Object{{"uri", pathToUri(p)}, {"diagnostics", std::move(list)}}); +} + +const SymRef *Server::refAt(const Analysis &a, const std::string &path, int line, int col) { + for (const SymRef &r : a.index.refs) { + if (r.line != line || col < r.col || col > r.col + r.len) continue; + if (r.file < 0 || r.file >= (int)a.files.size() || normalizePath(a.files[r.file].path) != path) continue; + return &r; + } + return nullptr; +} + +json::Value Server::hover(const std::string &path, int line, int col) { + auto it = results.find(path); + if (it == results.end()) return nullptr; + const SymRef *r = refAt(*it->second, path, line, col); + if (!r) return nullptr; + return json::Object{{"contents", json::Object{{"kind", "markdown"}, {"value", r->hover}}}}; +} + +json::Value Server::definition(const std::string &path, int line, int col) { + auto it = results.find(path); + if (it == results.end()) return nullptr; + const Analysis &a = *it->second; + const SymRef *r = refAt(a, path, line, col); + if (!r || r->defFile < 0 || r->defFile >= (int)a.files.size()) return nullptr; + int l = r->defLine - 1, c = r->defCol - 1; + return json::Object{{"uri", pathToUri(a.files[r->defFile].path)}, + {"range", json::Object{{"start", json::Object{{"line", l}, {"character", c}}}, + {"end", json::Object{{"line", l}, {"character", c}}}}}}; +} + +std::string Server::lineText(const std::string &path, int line) { + auto it = docs.find(path); + if (it == docs.end()) return ""; + size_t start = 0; + for (int l = 1; l < line && start != std::string::npos; l++) { + start = it->second.find('\n', start); + if (start != std::string::npos) start++; + } + if (start == std::string::npos) return ""; + return it->second.substr(start, it->second.find('\n', start) - start); +} + +// LSP CompletionItemKind +enum { KMethod = 2, KFunction = 3, KField = 5, KVariable = 6, KModule = 9, KKeyword = 14, KSnippet = 15, + KConstant = 21, KStruct = 22, KTypeParam = 25 }; + +static json::Value item(const std::string &label, int kind, const std::string &detail = "", const std::string &doc = "") { + json::Object o{{"label", label}, {"kind", kind}}; + if (!detail.empty()) o["detail"] = detail; + if (!doc.empty()) o["documentation"] = json::Object{{"kind", "markdown"}, {"value", doc}}; + return o; +} + +json::Value Server::completion(const std::string &path, int line, int col) { + json::Array items; + auto it = results.find(path); + std::shared_ptr a = it == results.end() ? nullptr : it->second; + + // what's before the cursor: "name." or "name.partial"? + std::string text = lineText(path, line); + // columns count characters, but we only need the ASCII part right before the cursor + std::string before; + { + int c = 1; + size_t k = 0; + for (; k < text.size() && c < col; k++) + if (((unsigned char)text[k] & 0xC0) != 0x80) c++; + before = text.substr(0, k); + } + size_t end = before.size(); + while (end > 0 && (isalnum((unsigned char)before[end - 1]) || before[end - 1] == '_')) end--; + bool afterDot = end > 0 && before[end - 1] == '.'; + + if (afterDot) { + size_t s = end - 1; + while (s > 0 && (isalnum((unsigned char)before[s - 1]) || before[s - 1] == '_' || before[s - 1] == ']' || before[s - 1] == '[')) s--; + std::string owner = before.substr(s, end - 1 - s); + if (size_t br = owner.find('['); br != std::string::npos) owner = owner.substr(0, br) + "[]"; + if (!a) return json::Object{{"isIncomplete", false}, {"items", std::move(items)}}; + + // a module? + if (a->modules.count(owner)) { + std::set seen; + for (const FnInfo &f : a->index.fns) + if (f.module == owner && seen.insert(f.name).second) items.push_back(item(f.name, KFunction, f.signature)); + for (const StructIndex &s2 : a->index.structs) + if (s2.module == owner && seen.insert(s2.name).second) items.push_back(item(s2.name, KStruct, "struct " + s2.name)); + return json::Object{{"isIncomplete", false}, {"items", std::move(items)}}; + } + // a variable: find its type (the innermost one declared before the cursor) + bool element = owner.size() > 2 && owner.compare(owner.size() - 2, 2, "[]") == 0; + std::string name = element ? owner.substr(0, owner.size() - 2) : owner; + std::string type; + for (const VarInfo &v : a->index.vars) + if (v.name == name && v.line <= line && line <= v.fnEnd + 1) type = v.type; + if (element && type.rfind("[]", 0) == 0) type = type.substr(2); + if (element && type == "str") type = "char"; + if (element && type.rfind("map[", 0) == 0) { // m[key]. -> the value type + int depth = 0; + for (size_t k = 3; k < type.size(); k++) { + if (type[k] == '[') depth++; + else if (type[k] == ']' && --depth == 0) { + type = type.substr(k + 1); + break; + } + } + } + if (type.rfind("ptr[", 0) == 0) type = type.substr(4, type.size() - 5); // fields through a pointer + if (type == "str") { + for (const BuiltinDoc &d : kStrMethods) items.push_back(item(d.name, d.name[0] == 'l' || d.name[0] == 'p' ? KField : KMethod, d.signature, d.doc)); + } else if (type.rfind("[]", 0) == 0) { + for (const BuiltinDoc &d : kArrayMethods) items.push_back(item(d.name, std::string(d.name) == "len" || std::string(d.name) == "ptr" ? KField : KMethod, d.signature, d.doc)); + } else if (type.rfind("map[", 0) == 0) { + for (const BuiltinDoc &d : kMapMethods) items.push_back(item(d.name, std::string(d.name) == "len" ? KField : KMethod, d.signature, d.doc)); + } else if (!type.empty()) { + std::string mod, sname = type; + if (size_t dot = type.find('.'); dot != std::string::npos) mod = type.substr(0, dot), sname = type.substr(dot + 1); + for (const StructIndex &s2 : a->index.structs) + if (s2.name == sname && (mod.empty() || s2.module == mod)) + for (auto &[fname, ftype] : s2.fields) items.push_back(item(fname, KField, ftype + " " + fname)); + std::set seen; + for (const FnInfo &f : a->index.fns) // methods: indexed as Struct.name + if (f.name.size() > sname.size() + 1 && f.name.compare(0, sname.size() + 1, sname + ".") == 0 && + seen.insert(f.name).second) + items.push_back(item(f.name.substr(sname.size() + 1), KMethod, f.signature)); + if (type.rfind("ptr", 0) == 0 || items.empty()) items.push_back(item("value", KField, "the value the pointer points to")); + } + return json::Object{{"isIncomplete", false}, {"items", std::move(items)}}; + } + + std::string prefix = before.substr(end); + for (const char *k : kKeywords) items.push_back(item(k, KKeyword)); + for (const char *t : kTypeNames) items.push_back(item(t, KTypeParam, "type")); + for (const BuiltinDoc &d : kBuiltins) items.push_back(item(d.name, KFunction, d.signature, d.doc)); + if (a) { + std::set seen; + for (const VarInfo &v : a->index.vars) // variables of the function around the cursor + if (v.fnLine <= line && line <= v.fnEnd && v.line <= line && seen.insert(v.name).second) + items.push_back(item(v.name, KVariable, v.type + " " + v.name)); + for (const FnInfo &f : a->index.fns) + if (f.module.empty() && seen.insert(f.name).second) items.push_back(item(f.name, KFunction, f.signature)); + for (const StructIndex &s : a->index.structs) + if (s.module.empty() && seen.insert(s.name).second) items.push_back(item(s.name, KStruct, "struct " + s.name)); + for (const std::string &m : a->modules) items.push_back(item(m, KModule, "module " + m)); + // C names only once something is typed: headers declare thousands + if (a->c && !prefix.empty()) { + for (auto &[name, f] : a->c->fns) + if (name.rfind(prefix, 0) == 0 && f.unsupported.empty()) items.push_back(item(name, KFunction, "C: " + f.header)); + for (auto &[name, k] : a->c->consts) + if (name.rfind(prefix, 0) == 0) items.push_back(item(name, KConstant, "C constant")); + for (auto &[name, s] : a->c->structs) + if (name.rfind(prefix, 0) == 0) items.push_back(item(name, KStruct, "C struct")); + } + } + return json::Object{{"isIncomplete", !prefix.empty()}, {"items", std::move(items)}}; +} + +json::Value Server::symbols(const std::string &path) { + json::Array out; + auto it = results.find(path); + if (it == results.end()) return out; + const Analysis &a = *it->second; + auto inDoc = [&](int file) { return file >= 0 && file < (int)a.files.size() && normalizePath(a.files[file].path) == path; }; + auto range = [](int l1, int c1, int l2) { + return json::Object{{"start", json::Object{{"line", l1 - 1}, {"character", c1 - 1}}}, + {"end", json::Object{{"line", std::max(l1, l2) - 1}, {"character", 0}}}}; + }; + for (const FnInfo &f : a.index.fns) + if (inDoc(f.file)) + out.push_back(json::Object{{"name", f.name}, {"detail", f.signature}, {"kind", 12}, + {"range", range(f.line, f.col, f.endLine + 1)}, {"selectionRange", range(f.line, f.col, f.line)}}); + for (const StructIndex &s : a.index.structs) + if (inDoc(s.file)) { + json::Array kids; + for (auto &[n, t] : s.fields) kids.push_back(json::Object{{"name", n}, {"detail", t}, {"kind", 8}, + {"range", range(s.line, s.col, s.line)}, {"selectionRange", range(s.line, s.col, s.line)}}); + out.push_back(json::Object{{"name", s.name}, {"kind", 23}, {"range", range(s.line, s.col, s.line)}, + {"selectionRange", range(s.line, s.col, s.line)}, {"children", std::move(kids)}}); + } + return out; +} + +// Inside `name(a, b|`: which function, and which argument. +json::Value Server::signatureHelp(const std::string &path, int line, int col) { + auto it = results.find(path); + std::shared_ptr a = it == results.end() ? nullptr : it->second; + std::string text; + for (int l = std::max(1, line - 5); l < line; l++) text += lineText(path, l) + "\n"; + std::string cur = lineText(path, line); + text += cur.substr(0, std::min(cur.size(), col - 1)); + + int depth = 0, commas = 0; + size_t k = text.size(); + while (k > 0) { + char ch = text[--k]; + if (ch == ')' || ch == ']') depth++; + else if (ch == '[') depth--; + else if (ch == '(') { + if (depth == 0) break; + depth--; + } else if (ch == ',' && depth == 0) commas++; + if (k == 0) return nullptr; + } + size_t e = k; + while (k > 0 && (isalnum((unsigned char)text[k - 1]) || text[k - 1] == '_' || text[k - 1] == '.')) k--; + std::string callee = text.substr(k, e - k); + if (callee.empty()) return nullptr; + std::string name = callee.substr(callee.rfind('.') == std::string::npos ? 0 : callee.rfind('.') + 1); + std::string mod = callee.find('.') == std::string::npos ? "" : callee.substr(0, callee.find('.')); + + std::string label, doc; + std::vector params; + if (a) { + for (const FnInfo &f : a->index.fns) { + bool method = f.name.size() > name.size() && f.name.compare(f.name.size() - name.size() - 1, name.size() + 1, "." + name) == 0; + if ((f.name == name && (f.module == mod || (mod.empty() && f.module.empty()) || !a->modules.count(mod))) || + (method && !mod.empty() && !a->modules.count(mod))) // p.move( -> Point.move + label = f.signature, params = f.params; + } + if (label.empty()) + for (const StructIndex &s : a->index.structs) + if (s.name == name) { + label = name + "("; + for (size_t i = 0; i < s.fields.size(); i++) { + params.push_back(s.fields[i].second + " " + s.fields[i].first); + label += (i ? ", " : "") + params.back(); + } + label += ")"; + } + if (label.empty() && a->c) + if (auto f = a->c->fns.find(name); f != a->c->fns.end()) { + label = name + "("; + for (size_t i = 0; i < f->second.params.size(); i++) { + params.push_back(f->second.params[i].show()); + label += (i ? ", " : "") + params.back(); + } + label += f->second.variadic ? ", ...)" : ")"; + doc = "C function from " + f->second.header; + } + } + if (label.empty()) { + auto look = [&](const BuiltinDoc *f, const BuiltinDoc *l) { + for (; f != l && label.empty(); ++f) + if (name == f->name) label = f->signature, doc = f->doc; + }; + look(std::begin(kBuiltins), std::end(kBuiltins)); + if (!mod.empty()) { + look(std::begin(kArrayMethods), std::end(kArrayMethods)); + look(std::begin(kStrMethods), std::end(kStrMethods)); + look(std::begin(kMapMethods), std::end(kMapMethods)); + } + } + if (label.empty()) return nullptr; + json::Array ps; + for (const std::string &p : params) ps.push_back(json::Object{{"label", p}}); + json::Object sig{{"label", label}, {"parameters", std::move(ps)}}; + if (!doc.empty()) sig["documentation"] = doc; + return json::Object{{"signatures", json::Array{std::move(sig)}}, {"activeSignature", 0}, {"activeParameter", commas}}; +} + +} // namespace + +int runLanguageServer() { return Server().run(); } diff --git a/src/lsp.fch b/src/lsp.fch deleted file mode 100644 index 6cb075f..0000000 --- a/src/lsp.fch +++ /dev/null @@ -1,876 +0,0 @@ -// The language server: `finch lsp`. An editor talks to it over stdin and stdout (JSON-RPC, as the Language Server -// Protocol says) and gets errors while it types, hover, go to definition, completion, an outline and signature -// help. -// -// It asks the compiler instead of being one: for every change it runs `finch index` on the text the editor has -// (see the index records in gen.fch), and answers from what comes back. -import json -import host -import docs -import "stdio.h" -import "stdlib.h" - -// ---------- what one run of the compiler told ---------- - -struct Ref { - str file - int line - int col - int len - str defFile - int defLine - int defCol - str hover -} - -struct VarRec { - str name - str type - str file - int line - int col - str fnFile - int fnLine - int fnEnd -} - -struct FnRec { - str module - str name - str recv - str file - int line - int col - int endLine - str signature - []str params -} - -struct StructRec { - str module - str name - str file - int line - int col - []str fields - []str types -} - -struct EnumRec { - str module - str name - str file - int line - int col - []str variants -} - -struct Diag { - bool has - str file - int line - int col - str message -} - -struct Analysis { - []Ref refs - []VarRec vars - []FnRec fns - []StructRec structs - []EnumRec enums - []str imports - Diag diag -} - -struct Server { - str self // the compiler's file: what to run for each check - str tmp // a folder for the copies of the editor's text - map[str]str docs // path -> the text the editor has - map[str]Analysis results // path -> the last check - map[str]Analysis good // path -> the last check that found no error - []str diagnosed // the files an error was shown for - bool stopping -} - -// ---------- paths and text ---------- - -fn hexval(char c) -> int { - if c >= '0' && c <= '9' { - return int(c) - int('0') - } - if c >= 'a' && c <= 'f' { - return int(c) - int('a') + 10 - } - if c >= 'A' && c <= 'F' { - return int(c) - int('A') + 10 - } - return -1 -} - -fn uriToPath(str uri) -> str { - s := uri - if s.starts_with("file://") { - s = s.sub(7, s.len) - } - []u8 out - i := 0 - while i < s.len { - if s[i] == '%' && i + 2 < s.len + 0 && hexval(s[i + 1]) >= 0 && hexval(s[i + 2]) >= 0 { - out.push(u8(hexval(s[i + 1]) * 16 + hexval(s[i + 2]))) - i += 3 - } else { - out.push(u8(s[i])) - i += 1 - } - } - return str(out) -} - -fn pathToUri(str path) -> str { - digits := "0123456789ABCDEF" - []str parts = ["file://"] - for c in path { - n := int(c) - if (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || "/-_.~".contains(str(c)) { - parts.push(str(c)) - } else { - parts.push("%" + str(digits[(n / 16) % 16]) + str(digits[n % 16])) - } - } - return parts.join("") -} - -// "\n" written as two characters, back to a line break -fn unesc(str s) -> str { - []str parts - i := 0 - while i < s.len { - if s[i] == '\\' && i + 1 < s.len { - if s[i + 1] == 'n' { - parts.push("\n") - } else { - parts.push(str(s[i + 1])) - } - i += 2 - } else { - parts.push(str(s[i])) - i += 1 - } - } - return parts.join("") -} - -fn lineOf(str text, int line) -> str { - lines := text.split("\n") - if line >= 1 && line <= lines.len { - return lines[line - 1] - } - return "" -} - -// ---------- the protocol ---------- - -fn readLine() -> str { - []u8 bytes - while true { - c := getchar() - if c < 0 { - return "" - } - if c == 10 { - break - } - bytes.push(u8(c)) - } - line := str(bytes) - if line.ends_with("\r") { - line = line.sub(0, line.len - 1) - } - return line -} - -// the next message; an error at the end of the input -fn readMessage() -> json.Json! { - length := 0 - while true { - header := readLine() - if header.len == 0 { - if length > 0 { - break - } - if feof(stdin) != 0 { - return error("the editor closed the connection") - } - continue - } - if header.starts_with("Content-Length:") { - length = int(header.sub(15, header.len).trim()) or 0 - } - } - []u8 body - for i in 0..length { - c := getchar() - if c < 0 { - return error("the message was cut short") - } - body.push(u8(c)) - } - return try json.parse(str(body)) -} - -fn send(json.Json v) { - body := json.stringify(v) - head := "Content-Length: " + str(body.len) + "\r\n\r\n" - text := head + body - fwrite(text.ptr, 1, u64(text.len), stdout) - fflush(stdout) -} - -fn reply(json.Json id, json.Json result) { - m := json.new_object() - m.set("jsonrpc", json.new_text("2.0")) - m.set("id", id) - m.set("result", result) - send(m) -} - -fn notify(str method, json.Json params) { - m := json.new_object() - m.set("jsonrpc", json.new_text("2.0")) - m.set("method", json.new_text(method)) - m.set("params", params) - send(m) -} - -fn num(int n) -> json.Json { - return json.new_number(float(n)) -} - -fn position(int line, int col) -> json.Json { - p := json.new_object() - p.set("line", num(line)) - p.set("character", num(col)) - return p -} - -fn range(int line, int col, int endCol) -> json.Json { - r := json.new_object() - r.set("start", position(line, col)) - r.set("end", position(line, endCol)) - return r -} - -// ---------- asking the compiler ---------- - -fn splitTabs(str line) -> []str { - return line.split("\t") -} - -fn intOf(str s) -> int { - return int(s) or 0 -} - -// "path:line:col: error: message" -> a diagnostic -fn parseDiag(str line) -> Diag { - at := line.find(": error: ") - if at < 0 { - return Diag() - } - where := line.sub(0, at) - message := line.sub(at + 9, line.len) - // the last two colon-separated numbers are the line and column - parts := where.split(":") - if parts.len < 3 { - return Diag() - } - col := intOf(parts[parts.len - 1]) - ln := intOf(parts[parts.len - 2]) - []str pathParts - for i in 0..parts.len - 2 { - pathParts.push(parts[i]) - } - return Diag(has: true, file: pathParts.join(":"), line: ln, col: col, message: message) -} - -fn parseOutput(str output) -> Analysis { - a := Analysis() - for line in output.split("\n") { - if line.starts_with("@") { - f := splitTabs(line) - tag := f[0] - if tag == "@R" && f.len >= 9 { - a.refs.push(Ref(file: f[1], line: intOf(f[2]), col: intOf(f[3]), len: intOf(f[4]), defFile: f[5], defLine: intOf(f[6]), defCol: intOf(f[7]), hover: unesc(f[8]))) - } else if tag == "@V" && f.len >= 9 { - a.vars.push(VarRec(name: f[1], type: f[2], file: f[3], line: intOf(f[4]), col: intOf(f[5]), fnFile: f[6], fnLine: intOf(f[7]), fnEnd: intOf(f[8]))) - } else if tag == "@F" && f.len >= 10 { - a.fns.push(FnRec(module: f[1], name: f[2], recv: f[3], file: f[4], line: intOf(f[5]), col: intOf(f[6]), endLine: intOf(f[7]), signature: unesc(f[8]), params: f[9].split("|"))) - } else if tag == "@S" && f.len >= 6 { - a.structs.push(StructRec(module: f[1], name: f[2], file: f[3], line: intOf(f[4]), col: intOf(f[5]))) - } else if tag == "@SF" && f.len >= 5 && a.structs.len > 0 { - k := a.structs.len - 1 - a.structs[k].fields.push(f[3]) - a.structs[k].types.push(f[4]) - } else if tag == "@E" && f.len >= 7 { - a.enums.push(EnumRec(module: f[1], name: f[2], file: f[3], line: intOf(f[4]), col: intOf(f[5]), variants: f[6].split(","))) - } else if tag == "@I" && f.len >= 2 { - a.imports.push(f[1]) - } - } else if !a.diag.has { - a.diag = parseDiag(line) - } - } - return a -} - -fn Server.analyse(str path) { - // the editor's text, as files the compiler can read: it asks for the file by its real name - host.makeDirs(self.tmp) - overlays := "" - n := 0 - for p in self.docs.keys() { - copy := self.tmp + "/doc" + str(n) + ".fch" - write_file(copy, self.docs[p]) - overlays = overlays + " --overlay " + host.quote(p + "=" + copy) - n += 1 - } - out := self.tmp + "/out.txt" - host.run(host.quote(self.self) + " index " + host.quote(path) + overlays + " > " + host.quote(out) + " 2>&1") - a := parseOutput(read_file(out) or "") - if !a.diag.has { - self.good[path] = a - } else if self.good.has(path) { - // half-typed code doesn't compile: completion and signatures keep using what the last good version knew - g := self.good[path] - a.fns = g.fns - a.structs = g.structs - a.enums = g.enums - a.vars = g.vars - if a.imports.len == 0 { - a.imports = g.imports - } - } - self.results[path] = a - self.publish(path, a) -} - -fn Server.publish(str path, Analysis a) { - // the files to say something about: the one checked, and any that had an error that is gone - []str files = [path] - for d in self.diagnosed { - if !files.contains(d) { - files.push(d) - } - } - []str now - for f in files { - list := json.new_list() - if a.diag.has && a.diag.file == f { - line := a.diag.line - 1 - if line < 0 { - line = 0 - } - col := a.diag.col - 1 - if col < 0 { - col = 0 - } - d := json.new_object() - d.set("range", range(line, col, col + 1)) - d.set("severity", num(1)) - d.set("source", json.new_text("finch")) - d.set("message", json.new_text(a.diag.message)) - list.push(d) - now.push(f) - } - p := json.new_object() - p.set("uri", json.new_text(pathToUri(f))) - p.set("diagnostics", list) - notify("textDocument/publishDiagnostics", p) - } - self.diagnosed = now -} - -// ---------- the questions ---------- - -fn refAt(Analysis a, str path, int line, int col) -> int { - for i in 0..a.refs.len { - r := a.refs[i] - if r.line == line && col >= r.col && col <= r.col + r.len && r.file == path { - return i - } - } - return -1 -} - -fn hoverAt(Analysis a, str path, int line, int col) -> json.Json { - i := refAt(a, path, line, col) - if i < 0 { - return json.new_null() - } - contents := json.new_object() - contents.set("kind", json.new_text("markdown")) - contents.set("value", json.new_text(a.refs[i].hover)) - out := json.new_object() - out.set("contents", contents) - return out -} - -fn definitionAt(Analysis a, str path, int line, int col) -> json.Json { - i := refAt(a, path, line, col) - if i < 0 || a.refs[i].defFile.len == 0 { - return json.new_null() - } - r := a.refs[i] - out := json.new_object() - out.set("uri", json.new_text(pathToUri(r.defFile))) - out.set("range", range(r.defLine - 1, r.defCol - 1, r.defCol - 1)) - return out -} - -fn symbolsOf(Analysis a, str path) -> json.Json { - list := json.new_list() - for f in a.fns { - if f.file != path { - continue - } - kind := 12 // Function - name := f.name - if f.recv.len > 0 { - kind = 6 // Method - name = f.recv + "." + f.name - } - list.push(symbol(name, kind, f.line, f.col, f.endLine)) - } - for s in a.structs { - if s.file == path { - list.push(symbol(s.name, 23, s.line, s.col, s.line + s.fields.len + 1)) - } - } - for e in a.enums { - if e.file == path { - list.push(symbol(e.name, 10, e.line, e.col, e.line + e.variants.len + 1)) - } - } - return list -} - -fn symbol(str name, int kind, int line, int col, int endLine) -> json.Json { - s := json.new_object() - s.set("name", json.new_text(name)) - s.set("kind", num(kind)) - full := json.new_object() - full.set("start", position(line - 1, 0)) - full.set("end", position(endLine, 0)) - s.set("range", full) - s.set("selectionRange", range(line - 1, col - 1, col - 1)) - return s -} - -// ---------- completion ---------- - -fn item(str label, int kind, str detail, str text) -> json.Json { - o := json.new_object() - o.set("label", json.new_text(label)) - o.set("kind", num(kind)) - if detail.len > 0 { - o.set("detail", json.new_text(detail)) - } - if text.len > 0 { - d := json.new_object() - d.set("kind", json.new_text("markdown")) - d.set("value", json.new_text(text)) - o.set("documentation", d) - } - return o -} - -fn isWordChar(char c) -> bool { - return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_' -} - -fn methodItems(ptr[json.Json] items, []docs.Doc list) { - for d in list { - kind := 2 // Method - if d.signature.starts_with(".") { - kind = 5 // Field - } - items.push(item(d.name, kind, d.signature, d.text)) - } -} - -// the variable called `name` that is in scope at `line` (the innermost one declared before it) -fn varNamed(Analysis a, str path, str name, int line) -> VarRec { - found := VarRec() - for v in a.vars { - if v.name == name && v.line <= line && line <= v.fnEnd + 1 && v.fnFile == path { - found = v - } - } - return found -} - -fn completionAt(Analysis a, str text, str path, int line, int col) -> json.Json { - items := json.new_list() - lineText := lineOf(text, line) - end := col - 1 - if end > lineText.len { - end = lineText.len - } - before := lineText.sub(0, end) - // the word being typed, and whether a dot comes right before it - wordStart := before.len - while wordStart > 0 && isWordChar(before[wordStart - 1]) { - wordStart -= 1 - } - afterDot := wordStart > 0 && before[wordStart - 1] == '.' - if afterDot { - s := wordStart - 1 - while s > 0 && (isWordChar(before[s - 1]) || before[s - 1] == '[' || before[s - 1] == ']') { - s -= 1 - } - owner := before.sub(s, wordStart - 1) - element := false - br := owner.find("[") - if br >= 0 { - owner = owner.sub(0, br) - element = true - } - // a module: its functions, structs and enums - if a.imports.contains(owner) { - for f in a.fns { - if f.module == owner && f.recv.len == 0 { - items.push(item(f.name, 3, f.signature, "")) - } - } - for st in a.structs { - if st.module == owner { - items.push(item(st.name, 22, "struct " + st.name, "")) - } - } - for en in a.enums { - if en.module == owner { - items.push(item(en.name, 13, "enum " + en.name, "")) - } - } - return completionList(items) - } - // an enum: its variants - for en in a.enums { - if en.name == owner && varNamed(a, path, owner, line).name.len == 0 { - for v in en.variants { - items.push(item(v, 20, en.name + "." + v, "")) - } - return completionList(items) - } - } - // a variable: by its type - type := varNamed(a, path, owner, line).type - if element && type.starts_with("[]") { - type = type.sub(2, type.len) - } else if element && type == "str" { - type = "char" - } - if type.starts_with("ptr[") && type.ends_with("]") { - type = type.sub(4, type.len - 1) - } - if type.starts_with("[]") { - methodItems(addr(items), docs.arrayMethods()) - } else if type == "str" { - methodItems(addr(items), docs.strMethods()) - } else if type.starts_with("map[") { - methodItems(addr(items), docs.mapMethods()) - } else { - base := type - for st in a.structs { - if st.name == base { - for k in 0..st.fields.len { - items.push(item(st.fields[k], 5, st.types[k], "")) - } - } - } - for f in a.fns { - if f.recv == base { - items.push(item(f.name, 2, f.signature, "")) - } - } - } - return completionList(items) - } - // not after a dot: what is in scope - seen := Names() - for v in a.vars { - if v.line <= line && line <= v.fnEnd + 1 && v.fnFile == path && seen.add(v.name) { - items.push(item(v.name, 6, v.type, "")) - } - } - for f in a.fns { - if f.recv.len == 0 && f.module == "" && seen.add(f.name) { - items.push(item(f.name, 3, f.signature, "")) - } - } - for st in a.structs { - if st.module == "" && seen.add(st.name) { - items.push(item(st.name, 22, "struct " + st.name, "")) - } - } - for en in a.enums { - if en.module == "" && seen.add(en.name) { - items.push(item(en.name, 13, "enum " + en.name, "")) - } - } - for m in a.imports { - if seen.add(m) { - items.push(item(m, 9, "module", "")) - } - } - for d in docs.builtins() { - if seen.add(d.name) { - items.push(item(d.name, 3, d.signature, d.text)) - } - } - for k in docs.keywords() { - if seen.add(k) { - items.push(item(k, 14, "", "")) - } - } - for t in docs.typeNames() { - if seen.add(t) { - items.push(item(t, 25, "", "")) - } - } - return completionList(items) -} - -struct Names { - []str items -} - -fn Names.add(str x) -> bool { - if self.items.contains(x) { - return false - } - self.items.push(x) - return true -} - -fn completionList(json.Json items) -> json.Json { - o := json.new_object() - o.set("isIncomplete", json.new_bool(false)) - o.set("items", items) - return o -} - -// ---------- signature help ---------- - -fn signatureAt(Analysis a, str text, str path, int line, int col) -> json.Json { - lineText := lineOf(text, line) - end := col - 1 - if end > lineText.len { - end = lineText.len - } - before := lineText.sub(0, end) - // back to the `(` that is still open, counting the commas at its own level - depth := 0 - commas := 0 - open := -1 - i := before.len - 1 - while i >= 0 { - c := before[i] - if c == ')' || c == ']' { - depth += 1 - } else if c == '(' || c == '[' { - if depth == 0 { - if c == '(' { - open = i - break - } - } else { - depth -= 1 - } - } else if c == ',' && depth == 0 { - commas += 1 - } - i -= 1 - } - if open < 0 { - return json.new_null() - } - nameEnd := open - nameStart := nameEnd - while nameStart > 0 && isWordChar(before[nameStart - 1]) { - nameStart -= 1 - } - name := before.sub(nameStart, nameEnd) - if name.len == 0 { - return json.new_null() - } - recv := "" - if nameStart > 0 && before[nameStart - 1] == '.' { - // a method: its struct from the type of what comes before the dot - s := nameStart - 1 - while s > 0 && isWordChar(before[s - 1]) { - s -= 1 - } - owner := before.sub(s, nameStart - 1) - type := varNamed(a, path, owner, line).type - if type.starts_with("ptr[") && type.ends_with("]") { - type = type.sub(4, type.len - 1) - } - recv = type - } - for f in a.fns { - if f.name == name && f.recv == recv { - sig := json.new_object() - sig.set("label", json.new_text(f.signature)) - params := json.new_list() - for p in f.params { - if p.len > 0 { - one := json.new_object() - one.set("label", json.new_text(p)) - params.push(one) - } - } - sig.set("parameters", params) - sigs := json.new_list() - sigs.push(sig) - out := json.new_object() - out.set("signatures", sigs) - out.set("activeSignature", num(0)) - out.set("activeParameter", num(commas)) - return out - } - } - d := docs.find(docs.builtins(), name) - if d.name.len > 0 { - sig := json.new_object() - sig.set("label", json.new_text(d.signature)) - sig.set("documentation", json.new_text(d.text)) - sigs := json.new_list() - sigs.push(sig) - out := json.new_object() - out.set("signatures", sigs) - out.set("activeSignature", num(0)) - out.set("activeParameter", num(commas)) - return out - } - return json.new_null() -} - -// ---------- the messages ---------- - -fn textOf(json.Json params) -> str { - return params.get("textDocument").get("text").str_or("") -} - -fn pathOf(json.Json params) -> str { - return uriToPath(params.get("textDocument").get("uri").str_or("")) -} - -fn Server.answer(json.Json msg) { - method := msg.get("method").str_or("") - params := msg.get("params") - id := msg.get("id") - match method { - "initialize" -> { - caps := json.new_object() - caps.set("textDocumentSync", num(1)) - caps.set("hoverProvider", json.new_bool(true)) - caps.set("definitionProvider", json.new_bool(true)) - caps.set("documentSymbolProvider", json.new_bool(true)) - comp := json.new_object() - dot := json.new_list() - dot.push(json.new_text(".")) - comp.set("triggerCharacters", dot) - caps.set("completionProvider", comp) - sigp := json.new_object() - trig := json.new_list() - trig.push(json.new_text("(")) - trig.push(json.new_text(",")) - sigp.set("triggerCharacters", trig) - caps.set("signatureHelpProvider", sigp) - result := json.new_object() - result.set("capabilities", caps) - info := json.new_object() - info.set("name", json.new_text("finch")) - result.set("serverInfo", info) - reply(id, result) - } - "shutdown" -> { - self.stopping = true - reply(id, json.new_null()) - } - "exit" -> { - exit(0) - } - "textDocument/didOpen" -> { - path := pathOf(params) - self.docs[path] = textOf(params) - self.analyse(path) - } - "textDocument/didChange" -> { - path := pathOf(params) - changes := params.get("contentChanges") - if changes.len() > 0 { - self.docs[path] = changes.at(changes.len() - 1).get("text").str_or("") - self.analyse(path) - } - } - "textDocument/didSave" -> { - path := pathOf(params) - if self.docs.has(path) { - self.analyse(path) - } - } - "textDocument/didClose" -> { - path := pathOf(params) - self.docs.remove(path) - self.results.remove(path) - self.good.remove(path) - empty := json.new_object() - empty.set("uri", json.new_text(pathToUri(path))) - empty.set("diagnostics", json.new_list()) - notify("textDocument/publishDiagnostics", empty) - } - "textDocument/hover", "textDocument/definition", "textDocument/completion", "textDocument/documentSymbol", "textDocument/signatureHelp" -> { - path := pathOf(params) - line := params.get("position").get("line").int_or(0) + 1 - col := params.get("position").get("character").int_or(0) + 1 - if !self.results.has(path) { - reply(id, json.new_null()) - return - } - a := self.results[path] - text := "" - if self.docs.has(path) { - text = self.docs[path] - } - match method { - "textDocument/hover" -> reply(id, hoverAt(a, path, line, col)) - "textDocument/definition" -> reply(id, definitionAt(a, path, line, col)) - "textDocument/completion" -> reply(id, completionAt(a, text, path, line, col)) - "textDocument/documentSymbol" -> reply(id, symbolsOf(a, path)) - else -> reply(id, signatureAt(a, text, path, line, col)) - } - } - else -> { - // a request we don't know gets an answer so the editor does not wait; notifications get none - if id.kind != json.Kind.Null { - reply(id, json.new_null()) - } - } - } -} - -// finch lsp -fn run(str self) -> int { - host.binaryStdio() - s := Server(self: self, tmp: host.tempDir() + "/finch_lsp_" + str(host.pid())) - while true { - msg := readMessage() or { - break - } - s.answer(msg) - } - host.removeTree(s.tmp) - return 0 -} diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..73ec72c --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,350 @@ +#include "cimport.h" +#include "codegen.h" +#include "error.h" +#include "lexer.h" +#include "loader.h" +#include "parser.h" +#include "target.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rt_source.inc" // kRuntimeSource: runtime/finch_rt.c, embedded at build time + +using namespace llvm; + +static void usage() { + std::fprintf(stderr, + "Finch " FINCH_VERSION " - small, quick, sharp.\n\n" + "usage:\n" + " finch run [args...] compile and run\n" + " finch build [-o name] compile to a program\n" + " finch ir show the generated LLVM IR\n" + " finch version show the version\n" + " finch lsp the language server, for editors (VS Code, Kate, ...)\n" + "\n" + " -l link a C library, same as link \"lib\" in the file\n" + " --target build for another system: windows, linux, arm64 (Linux), macos,\n" + " or an LLVM triple\n" + " -g add debug info (gdb / lldb / Visual Studio)\n" + " -O0 skip optimizations (to read the raw IR)\n"); + std::exit(1); +} + +// ---------- LLVM ---------- + +static void optimize(Module &mod, TargetMachine *tm) { + LoopAnalysisManager lam; + FunctionAnalysisManager fam; + CGSCCAnalysisManager cgam; + ModuleAnalysisManager mam; + PassBuilder pb(tm); + pb.registerModuleAnalyses(mam); + pb.registerCGSCCAnalyses(cgam); + pb.registerFunctionAnalyses(fam); + pb.registerLoopAnalyses(lam); + pb.crossRegisterProxies(lam, fam, cgam, mam); + pb.buildPerModuleDefaultPipeline(OptimizationLevel::O2).run(mod, mam); +} + +static TargetMachine *targetMachine() { + initTargets(); + const Triple &triple = g_target.triple; + if (!triple.isX86() && !triple.isAArch64()) { + std::fprintf(stderr, "error: Finch generates code for x86-64 and ARM64, not for %s\n", triple.getArchName().str().c_str()); + std::exit(1); + } + std::string err; + const Target *target = TargetRegistry::lookupTarget(triple, err); + if (!target) { + std::fprintf(stderr, "error: %s\n", err.c_str()); + std::exit(1); + } + return target->createTargetMachine(triple, "generic", "", TargetOptions(), Reloc::PIC_); +} + +static void emitObject(Module &mod, TargetMachine *tm, const std::string &path) { + std::error_code ec; + raw_fd_ostream out(path, ec, sys::fs::OF_None); + if (ec) { + std::fprintf(stderr, "error: can't write '%s': %s\n", path.c_str(), ec.message().c_str()); + std::exit(1); + } + legacy::PassManager pm; + if (tm->addPassesToEmitFile(pm, out, nullptr, CodeGenFileType::ObjectFile)) { + std::fprintf(stderr, "error: this machine can't produce object files\n"); + std::exit(1); + } + pm.run(mod); +} + +// ---------- linking ---------- + +// The runtime is compiled once per version and kept in ~/.cache/finch. +static std::string runtimeObject() { + std::string dir = cacheDir(); + size_t hash = std::hash()(std::string(kRuntimeSource) + FINCH_VERSION + g_target.cc + g_target.triple.str()); + std::string obj = dir + (g_target.windows && !g_target.cross ? "\\" : "/") + "rt-" + std::to_string(hash) + ".o"; + if (sys::fs::exists(obj)) return obj; + + sys::fs::create_directories(dir); + std::string src = obj + ".c", part = obj + ".part"; + { + std::ofstream out(src); + out << kRuntimeSource; + } + std::string output; + std::string pic = g_target.windows ? "" : " -fPIC"; + int status = capture(g_target.cc + " -O2" + pic + " -c " + shellQuote(src) + " -o " + shellQuote(part), output); + std::remove(src.c_str()); + if (status != 0) { + std::fprintf(stderr, "%serror: couldn't build the Finch runtime with '%s' (is a C compiler installed?)\n", output.c_str(), + g_target.cc.c_str()); + std::exit(1); + } + sys::fs::rename(part, obj); + return obj; +} + +// pkg-config knows the right paths for a library if it has one; otherwise plain -l. +static std::string libFlags(const std::string &lib) { + std::string out; + // macOS: link "Cocoa.framework" -> -framework Cocoa + if (lib.size() > 10 && lib.compare(lib.size() - 10, 10, ".framework") == 0) + return " -framework " + shellQuote(lib.substr(0, lib.size() - 10)); + if (!g_target.cross && capture("pkg-config --libs " + shellQuote(lib), out) == 0) { + while (!out.empty() && std::isspace((unsigned char)out.back())) out.pop_back(); + return " " + out; + } + return " " + shellQuote("-l" + lib); +} + +// "GLFW/glfw3.h" -> "glfw": a decent first guess for the library's name. +static std::string guessLib(const std::string &header) { + std::string name = header.substr(header.find_last_of('/') + 1); + name = name.substr(0, name.rfind('.')); + while (!name.empty() && std::isdigit((unsigned char)name.back())) name.pop_back(); + for (char &ch : name) ch = std::tolower((unsigned char)ch); + return name; +} + +// The linker speaks in riddles; turn its complaints into something you can act on. +[[noreturn]] static void linkFailed(const std::string &output, const CImports &c) { + std::vector missing, missingLibs; + auto addOnce = [](std::vector &v, const std::string &x) { + if (std::find(v.begin(), v.end(), x) == v.end()) v.push_back(x); + }; + std::istringstream lines(output); + for (std::string l; std::getline(lines, l);) { + size_t a; + if ((a = l.find("undefined reference to `")) != std::string::npos) { + a += 24; + addOnce(missing, l.substr(a, l.find('\'', a) - a)); + } else if ((a = l.find("undefined symbol: ")) != std::string::npos) { + a += 18; + addOnce(missing, l.substr(a, l.find_first_of(" \n", a) - a)); + } else if ((a = l.find("unresolved external symbol ")) != std::string::npos) { // MSVC link.exe + a += 27; + addOnce(missing, l.substr(a, l.find_first_of(" \n\r", a) - a)); + } else if ((a = l.find("cannot open file '")) != std::string::npos || // MSVC: LNK1104 + (a = l.find("cannot open input file '")) != std::string::npos || // MSVC: LNK1181 + (a = l.find("could not open '")) != std::string::npos) { // lld-link + a = l.find('\'', a) + 1; + std::string lib = l.substr(a, l.find('\'', a) - a); + if (lib.size() > 4 && lib.compare(lib.size() - 4, 4, ".lib") == 0) lib = lib.substr(0, lib.size() - 4); + addOnce(missingLibs, lib); + } else if ((a = l.find("cannot find -l")) != std::string::npos || + (a = l.find("library not found for -l")) != std::string::npos) { // older Apple ld + a = l.find("-l", a) + 2; + addOnce(missingLibs, l.substr(a, l.find_first_of(": \n\r", a) - a)); + } else if ((a = l.find("ld: library '")) != std::string::npos) { // Apple ld: library 'x' not found + a += 13; + addOnce(missingLibs, l.substr(a, l.find('\'', a) - a)); + } else if ((a = l.find("framework '")) != std::string::npos && l.find("not found") != std::string::npos) { + a += 11; + addOnce(missingLibs, l.substr(a, l.find('\'', a) - a) + ".framework"); + } else if (l.rfind(" \"", 0) == 0 && (a = l.find("\", referenced from:")) != std::string::npos) { + // Apple ld: Undefined symbols for architecture arm64:\n "_name", referenced from: + std::string name = l.substr(3, a - 3); + if (g_target.darwin && !name.empty() && name[0] == '_') name.erase(0, 1); + addOnce(missing, name); + } + } + if (missing.empty() && missingLibs.empty()) { + std::fprintf(stderr, "%serror: linking failed\n", output.c_str()); + std::exit(1); + } + + for (const std::string &lib : missingLibs) + std::fprintf(stderr, "error: the library '%s' wasn't found. Is it installed? (on Nix: add it to shell.nix)\n", lib.c_str()); + + std::vector>> byHeader; + for (const std::string &name : missing) { + auto f = c.fns.find(name); + std::string header = f == c.fns.end() ? "" : f->second.header; + auto it = std::find_if(byHeader.begin(), byHeader.end(), [&](auto &g) { return g.first == header; }); + if (it == byHeader.end()) byHeader.push_back({header, {name}}); + else it->second.push_back(name); + } + for (auto &[header, names] : byHeader) { + std::string list; + for (size_t k = 0; k < names.size() && k < 3; k++) list += (k ? ", " : "") + names[k]; + if (names.size() > 3) list += " and " + std::to_string(names.size() - 3) + " more"; + if (header.empty()) { + std::fprintf(stderr, "error: no code found for %s\n", list.c_str()); + continue; + } + std::fprintf(stderr, + "error: %s come%s from \"%s\", but its library isn't linked\n" + " the header only says the functions exist; their code lives in a library.\n" + " add this at the top of your file (with the library's real name):\n\n" + " link \"%s\"\n\n", + list.c_str(), names.size() == 1 ? "s" : "", header.c_str(), guessLib(header).c_str()); + } + std::exit(1); +} + +static bool endsWith(const std::string &s, const char *x) { + size_t n = std::strlen(x); + return s.size() > n && s.compare(s.size() - n, n, x) == 0; +} + +static void link(const std::string &obj, const std::string &exe, const std::vector &libs, + const CImports &c) { + std::string cmd = g_target.cc + " " + shellQuote(obj) + " " + shellQuote(runtimeObject()) + " -o " + shellQuote(exe); + if (!g_target.msvc) cmd += " -lm"; + std::vector temps; + for (const std::string &l : libs) { + if (endsWith(l, ".c")) { // compile the user's C file + std::string o = obj + "." + std::to_string(temps.size()) + ".o", output; + std::string pic = g_target.windows ? "" : " -fPIC"; + if (capture(g_target.cc + " -O2" + pic + " -c " + shellQuote(l) + " -o " + shellQuote(o), output) != 0) { + std::fprintf(stderr, "%serror: couldn't compile %s\n", output.c_str(), l.c_str()); + std::exit(1); + } + temps.push_back(o); + cmd += " " + shellQuote(o); + } else if (endsWith(l, ".o") || endsWith(l, ".a")) { + cmd += " " + shellQuote(l); + } else { + cmd += libFlags(l); + } + } + std::string output; + int status = capture(cmd, output); + std::remove(obj.c_str()); + for (const std::string &t : temps) std::remove(t.c_str()); + if (status == 127) { + std::fprintf(stderr, "error: no C compiler found to link with ('%s'; install one, or set FINCH_CC)\n", g_target.cc.c_str()); + std::exit(1); + } + if (status != 0) linkFailed(output, c); + std::fputs(output.c_str(), stderr); // warnings, if any +} + +static std::string stem(const std::string &path) { + size_t slash = path.find_last_of("/\\"); + std::string name = slash == std::string::npos ? path : path.substr(slash + 1); + size_t dot = name.rfind('.'); + return dot == std::string::npos ? name : name.substr(0, dot); +} + +int runLanguageServer(); // lsp.cpp + +int main(int argc, char **argv) { + if (argc == 2 && std::string(argv[1]) == "lsp") return runLanguageServer(); + if (argc == 2 && (std::string(argv[1]) == "version" || std::string(argv[1]) == "--version")) { + std::printf("finch %s (LLVM %s)\n", FINCH_VERSION, LLVM_VERSION_STRING); + return 0; + } + if (argc < 3) usage(); + std::string cmd = argv[1], file = argv[2]; + if (cmd != "run" && cmd != "build" && cmd != "ir") usage(); + std::string out = stem(file); + std::vector libs, programArgs; + std::string targetName; + bool optimizeCode = true, debug = false, outGiven = false; + for (int i = 3; i < argc; i++) { + std::string a = argv[i]; + if (cmd == "run" && !programArgs.empty()) programArgs.push_back(a); + else if (a == "-o" && i + 1 < argc && cmd == "build") out = argv[++i], outGiven = true; + else if (a == "--target" && i + 1 < argc) targetName = argv[++i]; + else if (a == "-O0") optimizeCode = false; + else if (a == "-g") debug = true; + else if (a == "-l" && i + 1 < argc) libs.push_back(argv[++i]); + else if (a.rfind("-l", 0) == 0 && a.size() > 2) libs.push_back(a.substr(2)); + else if (cmd == "run") programArgs.push_back(a); + else usage(); + } + + setTarget(targetName); + if (!outGiven) out += g_target.exe; + + Loader loader; + loader.load(file, "", Pos{}); + std::vector allImports; + std::vector dirs; + for (const Program &p : loader.progs) { + allImports.insert(allImports.end(), p.imports.begin(), p.imports.end()); + for (const Link &l : p.links) { + bool file = endsWith(l.lib, ".c") || endsWith(l.lib, ".o") || endsWith(l.lib, ".a"); + std::string path = file && !sys::path::is_absolute(l.lib) ? dirOf(p.path) + "/" + l.lib : l.lib; + if (file && !sys::fs::exists(path)) failAt(l.pos.file, l.pos.line, l.pos.col, "can't find the file '" + path + "'"); + libs.push_back(path); + } + if (std::find(dirs.begin(), dirs.end(), dirOf(p.path)) == dirs.end()) dirs.push_back(dirOf(p.path)); + } + CImports c = importHeaders(allImports, dirs); + LLVMContext ctx; + TargetMachine *tm = targetMachine(); + std::unique_ptr mod = generate(loader.progs, c, ctx, *tm, debug); + if (optimizeCode) optimize(*mod, tm); + + if (cmd == "ir") { + mod->print(outs(), nullptr); + return 0; + } + + std::string obj = out + ".o"; + if (cmd == "run") { + SmallString<128> tmp; + sys::fs::createTemporaryFile("finch", g_target.windows ? "exe" : "", tmp); + out = tmp.str().str(); + obj = out + ".o"; + } + emitObject(*mod, tm, obj); + link(obj, out, libs, c); + + if (cmd == "run") { + std::string line = shellQuote(out); + for (const std::string &a : programArgs) line += " " + shellQuote(a); + line = runPrefix() + line; // wine / qemu for programs built for another system +#ifdef _WIN32 + line = "\"" + line + "\""; // cmd /c strips one pair of outer quotes +#endif + std::string crash; + int status = runCommand(line, &crash); + std::remove(out.c_str()); + if (!crash.empty()) std::fprintf(stderr, "\nthe program crashed: %s\n", crash.c_str()); + return status; + } + return 0; +} diff --git a/src/main.fch b/src/main.fch deleted file mode 100644 index 858271f..0000000 --- a/src/main.fch +++ /dev/null @@ -1,330 +0,0 @@ -// finch-boot: the Finch compiler written in Finch. -// -// finch-boot build [-o name] compile a program -// finch-boot ir print the LLVM IR -// -// It reads the program and the modules it imports, checks it, writes LLVM IR as text -// and lets clang turn that into a program, linked with Finch's C runtime. -import lexer -import ast -import parser -import gen -import cimport -import platform -import linker -import lsp -import host -import embedded -import "stdlib.h" - -fn dirOf(str path) -> str { - i := path.len - 1 - while i >= 0 && path[i] != '/' { - i -= 1 - } - if i < 0 { - return "." - } - return path.sub(0, i) -} - -fn stem(str path) -> str { - name := path.sub(dirOf(path).len + 1, path.len) - if dirOf(path) == "." && !path.starts_with("./") { - name = path - } - dot := name.find(".") - if dot > 0 { - return name.sub(0, dot) - } - return name -} - -struct Loader { - []ast.Program progs - []str files - []str loaded - str os // "windows", "macos" or "linux": a module may have a version for each (time_windows.fch) - str std // the standard library's folder, or "" - []str paths // FINCH_PATH: more folders to look for modules in - []str overlayPaths // --overlay path=file: read `path` from `file` (the text an editor has, not saved yet) - []str overlayFiles -} - -fn textOfFile(ptr[Loader] l, str path) -> str { - k := l.overlayPaths.find(path) - if k >= 0 { - return read_file(l.overlayFiles[k]) - } - return read_file(path) -} - -// import json: the file next to the one that imports it, else the standard library's. -// A program's own json.fch wins over the library's. -fn findModule(ptr[Loader] l, str from, str name) -> str { - // in each folder, the version for this system first: time_windows.fch, then time.fch - local := dirOf(from) + "/" + name + ".fch" - if file_exists(dirOf(from) + "/" + name + "_" + l.os + ".fch") { - return dirOf(from) + "/" + name + "_" + l.os + ".fch" - } - if file_exists(local) { - return local - } - for d in l.paths { - if file_exists(d + "/" + name + "_" + l.os + ".fch") { - return d + "/" + name + "_" + l.os + ".fch" - } - if file_exists(d + "/" + name + ".fch") { - return d + "/" + name + ".fch" - } - } - if l.std.len > 0 { - if file_exists(l.std + "/" + name + "_" + l.os + ".fch") { - return l.std + "/" + name + "_" + l.os + ".fch" - } - if file_exists(l.std + "/" + name + ".fch") { - return l.std + "/" + name + ".fch" - } - } - return local -} - -fn load(ptr[Loader] l, str path, str module) { - if !file_exists(path) && !l.overlayPaths.contains(path) { - if module.len > 0 { - print("error: can't find the module '" + module + "' (looked for " + path + ")") - } else { - print("error: can't open '" + path + "'") - } - exit(1) - } - src := textOfFile(l, path) - file := l.files.len - l.files.push(path) - prog := parser.parse(lexer.lex(src, path), file, path) - prog.module = module - prog.path = path - imports := prog.imports - l.progs.push(prog) - for name in imports { - if !l.loaded.contains(name) { - l.loaded.push(name) - load(l, findModule(l, path, name), name) - } - } -} - -fn usage() { - print("Finch -- the compiler is written in Finch") - print("usage:") - print(" finch run [args...] build and run a program") - print(" finch build [-o name] build a program") - print(" finch ir print the LLVM IR") - print(" finch version show the version") - print(" finch lsp the language server, for editors (VS Code, Kate, ...)") - print("options:") - print(" -O0 no optimization (faster to build)") - print(" -l link a library (the same as link \"lib\" in the program)") - print(" -I look for imported C headers there too") - print(" -g debug info (for gdb and lldb; use -O0 with it)") - print(" --target build for another system: windows, linux, arm64 (Linux), macos, or an LLVM triple") - exit(1) -} - -// The runtime and the standard library are carried inside the compiler (embedded.fch). When they aren't found as -// files next to it, they are written to the cache folder, once, and used from there. -fn unpack() -> str { - names := embedded.names() - dir := host.cacheDir() + "/files-" + linker.fingerprint(embedded.texts().join("\n")) - if file_exists(dir + "/done") { - return dir - } - texts := embedded.texts() - for i in 0..names.len { - host.makeDirs(dirOf(dir + "/" + names[i])) - write_file(dir + "/" + names[i], texts[i]) - } - write_file(dir + "/done", "") - return dir -} - -fn main([]str args) -> int { - if args.len == 2 && (args[1] == "version" || args[1] == "--version") { - print("Finch 2.4.0 (the compiler is written in Finch)") - return 0 - } - if args.len == 2 && args[1] == "lsp" { - return lsp.run(args[0]) // the language server, for editors - } - if args.len < 3 { - usage() - } - cmd := args[1] - file := args[2] - if cmd != "build" && cmd != "run" && cmd != "ir" && cmd != "index" { - usage() - } - out := stem(file) - outGiven := false - shared := false - debug := false - targetName := "" - opt := "-O2" - []str extraLibs - []str extraDirs - []str overlayPaths - []str overlayFiles - []str progArgs - ai := 3 - while ai < args.len { - a := args[ai] - if cmd == "run" && progArgs.len > 0 { // after the first argument of the program, all of them are its - progArgs.push(a) - } else if a == "-o" && ai + 1 < args.len && cmd == "build" { - out = args[ai + 1] - outGiven = true - ai += 1 - } else if a == "--shared" && cmd == "build" { - shared = true - } else if a == "-O0" { - opt = "-O0" - } else if a == "-l" && ai + 1 < args.len { - extraLibs.push(args[ai + 1]) - ai += 1 - } else if a.starts_with("-l") && a.len > 2 { - extraLibs.push(a.sub(2, a.len)) - } else if a == "-I" && ai + 1 < args.len { - extraDirs.push(args[ai + 1]) - ai += 1 - } else if a == "--overlay" && ai + 1 < args.len { - both := args[ai + 1].split("=") - overlayPaths.push(both[0]) - overlayFiles.push(both[1]) - ai += 1 - } else if a == "-g" { - debug = true - } else if a == "--target" && ai + 1 < args.len { - targetName = args[ai + 1] - ai += 1 - } else if cmd == "run" { - progArgs.push(a) - } else { - usage() - } - ai += 1 - } - tg := platform.select(targetName) - if cmd == "run" { - out = host.tempDir() + "/finch_run_" + str(host.pid()) + "_" + stem(file) + tg.exe - } else if shared && !outGiven { - if tg.windows { - out = out + ".dll" - } else if tg.darwin { - out = "lib" + out + ".dylib" - } else { - out = "lib" + out + ".so" - } - } else if !outGiven { - out = out + tg.exe - } - - loader := Loader() - loader.os = "linux" - if tg.windows { - loader.os = "windows" - } else if tg.darwin { - loader.os = "macos" - } - 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 - } - } - if loader.std.len == 0 { - loader.std = unpack() + "/std" - } - loader.overlayPaths = overlayPaths - loader.overlayFiles = overlayFiles - for d in getenv("FINCH_PATH").split(host.pathSeparator()) { - if d.len > 0 { - loader.paths.push(d) - } - } - load(addr(loader), file, "") - - // C headers, from every file; their folders are searched first for "local.h" - []cimport.Header headers - []str seen - []str dirs = extraDirs - []str links = extraLibs - for prog in loader.progs { - d := dirOf(prog.path) - if !dirs.contains(d) { - dirs.push(d) - } - for i in 0..prog.cimports.len { - if !seen.contains(prog.cimports[i]) { - seen.push(prog.cimports[i]) - headers.push(cimport.Header(path: prog.cimports[i], where: prog.cwhere[i])) - } - } - for l in prog.links { - if l.ends_with(".c") || l.ends_with(".o") || l.ends_with(".a") { - links.push(d + "/" + l) // the program's own C code, next to the .fch file - } else { - links.push(l) - } - } - } - triple := "" - if tg.cross || tg.windows { - triple = tg.triple // on Windows libclang.dll would otherwise assume MSVC, while clang may be MinGW - } - ci := cimport.importHeaders(headers, dirs, triple, tg.windows, tg.cc) or { - print(err) - return 1 - } - ir := gen.generate(loader.progs, loader.files, ci, gen.Options(shared: shared, debug: debug, index: cmd == "index", cwd: host.cwd(), target: tg)) - if cmd == "ir" || cmd == "index" { - print(ir) - return 0 - } - - // the runtime is Finch's C file; FINCH_RT can point somewhere else - rt := getenv("FINCH_RT") - if rt.len == 0 { - rt = dirOf(args[0]) + "/../runtime/finch_rt.c" - } - 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" - } - if !file_exists(rt) { - rt = unpack() + "/runtime/finch_rt.c" - } - extra := "" - if shared { - extra = " -fPIC" - } - if debug { - extra = extra + " -g" // or clang drops the debug info that is in the IR - } - if linker.build(linker.Build(out: out, ir: ir, rt: rt, opt: opt, extra: extra, shared: shared, links: links), tg, ci) != 0 { - return 1 - } - if cmd == "run" { - []str quoted - for a in progArgs { - quoted.push(linker.quote(a)) - } - status := host.run(tg.runner + linker.quote(out) + " " + quoted.join(" ")) - host.remove(out) - return status - } - return 0 -} diff --git a/src/parser.cpp b/src/parser.cpp new file mode 100644 index 0000000..4a76616 --- /dev/null +++ b/src/parser.cpp @@ -0,0 +1,602 @@ +#include "parser.h" +#include "error.h" + +#include +#include +#include +#include +#include +#include + +bool typeFromName(const std::string &name, Type &out) { + static const std::unordered_map names = { + {"int", Type::I64}, {"float", Type::F64}, {"bool", Type::Bool}, {"char", Type::Char}, + {"str", Type::Str}, {"ptr", Type::Ptr}, {"i8", Type::I8}, {"i16", Type::I16}, + {"i32", Type::I32}, {"i64", Type::I64}, {"u8", Type::U8}, {"u16", Type::U16}, + {"u32", Type::U32}, {"u64", Type::U64}, {"f32", Type::F32}, {"f64", Type::F64}, + }; + auto it = names.find(name); + if (it == names.end()) return false; + out = Type(it->second); + return true; +} + +namespace { + +bool isTypeName(const std::string &name) { + Type t; + return typeFromName(name, t); +} + +class Parser { +public: + Parser(const std::vector &t, int f) : toks(t), file(f) {} + + Program program() { + Program p; + while (!at(Tok::End)) { + switch (cur().kind) { + case Tok::Import: p.imports.push_back(import()); break; + case Tok::Link: p.links.push_back(link()); break; + case Tok::Struct: p.structs.push_back(structDecl()); break; + default: p.fns.push_back(function()); break; + } + } + return p; + } + +private: + const std::vector &toks; + int file; + size_t i = 0; + int parenDepth = 0; // inside ( ) and [ ] newlines don't end anything + + const Token &cur() const { return toks[i]; } + const Token &peekTok(size_t off = 1) const { return toks[std::min(i + off, toks.size() - 1)]; } + const Token &next() { return toks[i++]; } + bool at(Tok k) const { return cur().kind == k; } + Pos pos() const { return {cur().line, cur().col, file}; } + + std::string describe(const Token &t) const { + return t.kind == Tok::Ident ? "'" + t.text + "'" : tokName(t.kind); + } + + bool accept(Tok k) { + if (!at(k)) return false; + i++; + return true; + } + const Token &expect(Tok k, const char *what = nullptr) { + if (!at(k)) + fail(cur().line, cur().col, + std::string("expected ") + (what ? what : tokName(k)) + ", found " + describe(cur())); + return next(); + } + [[noreturn]] void unexpected(const char *ctx) { + fail(cur().line, cur().col, "unexpected " + describe(cur()) + " " + ctx); + } + + // A token can continue an expression only if it is on the same line (or we're inside brackets). + bool sameLine() const { return parenDepth > 0 || !cur().newlineBefore; } + + // int, u8, ptr, ptr[int], []str, map[str]int, Point, math.Vec ... + Type type() { + if (accept(Tok::LBracket)) { + expect(Tok::RBracket, "']' (an array type looks like []int)"); + return Type::arrayOf(type()); + } + if (!at(Tok::Ident)) unexpected("(expected a type like int, str, []int, ptr[int] or a struct name)"); + if (cur().text == "map" && peekTok().kind == Tok::LBracket) { + next(); + next(); + Type k = type(); + expect(Tok::RBracket, "']' (a map type looks like map[str]int)"); + return Type::mapOf(k, type()); + } + std::string name = next().text; + Type t; + if (typeFromName(name, t)) { + if (t.kind == Type::Ptr && accept(Tok::LBracket)) { + t = Type::ptrTo(type()); + expect(Tok::RBracket); + } + return t; + } + t = Type(Type::Named); + t.name = name; + if (at(Tok::Dot) && peekTok().kind == Tok::Ident) { // module.Struct + next(); + t.module = name; + t.name = next().text; + } + return t; + } + + // Does a declaration like `int x`, `ptr[int] p`, `[]int a`, `Point p` or `math.Vec v` start here? + bool atDeclaration() const { + if (at(Tok::LBracket)) return peekTok().kind == Tok::RBracket; + if (!at(Tok::Ident)) return false; + Tok n = peekTok().kind; + if (n == Tok::Ident) return !peekTok().newlineBefore; + if ((cur().text == "ptr" || cur().text == "map") && n == Tok::LBracket) return true; + return n == Tok::Dot && peekTok(2).kind == Tok::Ident && peekTok(3).kind == Tok::Ident && + !peekTok(3).newlineBefore; + } + + // ---------- top level ---------- + + Import import() { + Import im; + im.pos = pos(); + expect(Tok::Import); + if (at(Tok::Ident)) { + im.isC = false; + im.path = next().text; + } else { + im.path = expect(Tok::String, "a module name (import math) or a C header in quotes (import \"stdio.h\")").text; + } + return im; + } + + Link link() { + Link l; + l.pos = pos(); + expect(Tok::Link); + l.lib = expect(Tok::String, "a library name in quotes, like link \"glfw\"").text; + auto ends = [&](const char *x) { size_t n = std::strlen(x); return l.lib.size() > n && l.lib.compare(l.lib.size() - n, n, x) == 0; }; + if (ends(".c") || ends(".o") || ends(".a")) return l; // your own C code, next to the .fch file + if (l.lib.rfind("lib", 0) == 0 || l.lib.find(".so") != std::string::npos || l.lib.find('/') != std::string::npos) + fail(l.pos.line, l.pos.col, "write just the library's name: for libglfw.so that's link \"glfw\""); + return l; + } + + StructDecl structDecl() { + StructDecl s; + s.pos = pos(); + expect(Tok::Struct); + s.namePos = pos(); + s.name = expect(Tok::Ident, "a struct name").text; + if (isTypeName(s.name)) fail(s.pos.line, s.pos.col, "'" + s.name + "' is a built-in type name, pick another"); + Pos open = pos(); + expect(Tok::LBrace); + while (!at(Tok::RBrace)) { + if (at(Tok::End)) fail(open.line, open.col, "this '{' is never closed (missing '}')"); + Field f; + f.pos = pos(); + if (!atDeclaration()) unexpected("(a field looks like: int x or str name = \"default\")"); + f.type = type(); + f.namePos = pos(); + f.name = expect(Tok::Ident, "a field name").text; + for (const Field &other : s.fields) + if (other.name == f.name) fail(f.pos.line, f.pos.col, "the field '" + f.name + "' is listed twice"); + if (accept(Tok::Assign)) f.init = expr(); + s.fields.push_back(std::move(f)); + endOfStatement(); + } + next(); + return s; + } + + FnDecl function() { + FnDecl fn; + fn.pos = pos(); + if (at(Tok::Ident) && isTypeName(cur().text)) + fail(fn.pos.line, fn.pos.col, "functions start with 'fn', like: fn add(int a, int b) -> int { ... }"); + expect(Tok::Fn, "'fn', 'struct', 'import' or 'link' (every function starts with fn)"); + + fn.namePos = pos(); + fn.name = expect(Tok::Ident, "a function name").text; + if (accept(Tok::Dot)) { // fn Point.move(...): a method + fn.recv = fn.name; + fn.recvPos = fn.namePos; + fn.namePos = pos(); + fn.name = expect(Tok::Ident, "a method name (fn Point.name(...))").text; + } + expect(Tok::LParen); + parenDepth++; + if (!at(Tok::RParen)) { + do { + Param p; + p.pos = pos(); + p.type = type(); + p.namePos = pos(); + p.name = expect(Tok::Ident, "a parameter name").text; + fn.params.push_back(p); + } while (accept(Tok::Comma)); + } + parenDepth--; + expect(Tok::RParen); + fn.ret = Type(Type::Void); + if (accept(Tok::Arrow)) { + if (!at(Tok::Not)) fn.ret = type(); + fn.fallible = accept(Tok::Not); // -> int! or -> ! + if (!fn.fallible && fn.ret.kind == Type::Void) unexpected("(after '->' comes a type, or ! for a function that can fail)"); + } + fn.body = block(); + return fn; + } + + // ---------- statements ---------- + + BlockPtr block() { + auto b = std::make_unique(pos()); + expect(Tok::LBrace); + int saved = parenDepth; + parenDepth = 0; + while (!at(Tok::RBrace)) { + if (at(Tok::End)) fail(b->pos.line, b->pos.col, "this '{' is never closed (missing '}')"); + b->body.push_back(statement()); + endOfStatement(); + } + parenDepth = saved; + b->end = pos(); + next(); + return b; + } + + void endOfStatement() { + if (at(Tok::RBrace) || at(Tok::End) || cur().newlineBefore) return; + unexpected("(put each statement on its own line)"); + } + + StmtPtr statement() { + Pos p = pos(); + switch (cur().kind) { + case Tok::If: return ifStmt(); + case Tok::While: { + next(); + auto s = std::make_unique(p); + s->cond = expr(); + s->body = block(); + return s; + } + case Tok::For: { + next(); + Pos varPos = pos(); + std::string var = expect(Tok::Ident, "a loop variable name").text; + std::string var2; + Pos var2Pos; + if (accept(Tok::Comma)) { // for i, x in list / for key, value in map + var2Pos = pos(); + var2 = expect(Tok::Ident, "a second loop variable name").text; + } + expect(Tok::In); + ExprPtr first = expr(); + if (!var2.empty() && at(Tok::DotDot)) fail(var2Pos.line, var2Pos.col, "a range (for i in 0..n) has one loop variable"); + if (accept(Tok::DotDot)) { // for i in 0..10 + auto s = std::make_unique(p); + s->var = var; + s->varPos = varPos; + s->from = std::move(first); + s->to = expr(); + s->body = block(); + return s; + } + auto s = std::make_unique(p); // for x in list + s->var = var; + s->varPos = varPos; + s->var2 = var2; + s->var2Pos = var2Pos; + s->list = std::move(first); + s->body = block(); + return s; + } + case Tok::Return: { + next(); + auto s = std::make_unique(p); + if (!at(Tok::RBrace) && !cur().newlineBefore) s->value = expr(); + return s; + } + case Tok::Break: next(); return std::make_unique(p); + case Tok::Continue: next(); return std::make_unique(p); + case Tok::Defer: { + next(); + if (at(Tok::Defer)) fail(p.line, p.col, "defer inside defer is not allowed"); + return std::make_unique(p, statement()); + } + case Tok::LBrace: return block(); + case Tok::Fn: fail(p.line, p.col, "functions can't be inside other functions (move it out)"); + case Tok::Struct: fail(p.line, p.col, "structs go outside functions, at the top level of the file"); + case Tok::Import: + case Tok::Link: fail(p.line, p.col, "import and link go at the top of the file, outside functions"); + default: break; + } + + // int x = 5, Point p, []int a + if (atDeclaration()) { + auto s = std::make_unique(p); + s->hasType = true; + s->type = type(); + s->namePos = pos(); + s->name = expect(Tok::Ident, "a variable name").text; + if (accept(Tok::Assign)) s->init = expr(); + return s; + } + + // x := 5 + if (at(Tok::Ident) && peekTok().kind == Tok::Declare) { + auto s = std::make_unique(p); + s->hasType = false; + s->namePos = pos(); + s->name = next().text; + next(); + s->init = expr(); + return s; + } + + ExprPtr e = expr(); + + // x = 5, p.value += 1, a[i] = 2, ... + char op = 0; + switch (cur().kind) { + case Tok::Assign: op = '='; break; + case Tok::PlusEq: op = '+'; break; + case Tok::MinusEq: op = '-'; break; + case Tok::StarEq: op = '*'; break; + case Tok::SlashEq: op = '/'; break; + case Tok::PercentEq: op = '%'; break; + case Tok::Declare: + fail(cur().line, cur().col, "':=' creates a new variable, so the left side must be a plain name"); + default: break; + } + if (op && sameLine()) { + if (e->kind != ExprKind::Var && e->kind != ExprKind::Member && e->kind != ExprKind::Index) + fail(p.line, p.col, "only a variable, a field, an element or p.value can be assigned to"); + auto s = std::make_unique(p); + s->target = std::move(e); + s->op = op; + next(); + s->value = expr(); + return s; + } + + if (e->kind != ExprKind::Call && e->kind != ExprKind::Method && e->kind != ExprKind::Try && e->kind != ExprKind::OrElse) + fail(p.line, p.col, "this value is computed but never used"); + return std::make_unique(p, std::move(e)); + } + + StmtPtr ifStmt() { + auto s = std::make_unique(pos()); + expect(Tok::If); + s->cond = expr(); + s->then = block(); + if (accept(Tok::Else)) { + if (at(Tok::If)) s->otherwise = ifStmt(); + else s->otherwise = block(); + } + return s; + } + + // ---------- expressions (lowest to highest precedence) ---------- + + // f(x) or fallback / f(x) or { ... }: the lowest precedence, right to left + ExprPtr expr() { + ExprPtr l = orExpr(); + if (!sameLine() || !at(Tok::OrElse)) return l; + Pos p = pos(); + next(); + auto e = std::make_unique(p, std::move(l)); + if (at(Tok::LBrace)) e->block = block(); + else e->fallback = expr(); + return e; + } + + ExprPtr orExpr() { + ExprPtr l = andExpr(); + while (sameLine() && at(Tok::Or)) { + Pos p = pos(); + next(); + l = std::make_unique(p, BinOp::Or, std::move(l), andExpr()); + } + return l; + } + + ExprPtr andExpr() { + ExprPtr l = compare(); + while (sameLine() && at(Tok::And)) { + Pos p = pos(); + next(); + l = std::make_unique(p, BinOp::And, std::move(l), compare()); + } + return l; + } + + ExprPtr compare() { + ExprPtr l = additive(); + while (sameLine()) { + BinOp op; + switch (cur().kind) { + case Tok::Eq: op = BinOp::Eq; break; + case Tok::NotEq: op = BinOp::NotEq; break; + case Tok::Less: op = BinOp::Less; break; + case Tok::LessEq: op = BinOp::LessEq; break; + case Tok::Greater: op = BinOp::Greater; break; + case Tok::GreaterEq: op = BinOp::GreaterEq; break; + default: return l; + } + Pos p = pos(); + next(); + l = std::make_unique(p, op, std::move(l), additive()); + } + return l; + } + + // Precedence is Go's, not C's: bit operators bind tighter than comparisons, + // so `x & 1 == 0` means `(x & 1) == 0`. + ExprPtr additive() { // + - | ^ + ExprPtr l = multiplicative(); + while (sameLine()) { + BinOp op; + switch (cur().kind) { + case Tok::Plus: op = BinOp::Add; break; + case Tok::Minus: op = BinOp::Sub; break; + case Tok::Pipe: op = BinOp::BitOr; break; + case Tok::Caret: op = BinOp::BitXor; break; + default: return l; + } + Pos p = pos(); + next(); + l = std::make_unique(p, op, std::move(l), multiplicative()); + } + return l; + } + + ExprPtr multiplicative() { // * / % << >> & + ExprPtr l = unary(); + while (sameLine()) { + BinOp op; + switch (cur().kind) { + case Tok::Star: op = BinOp::Mul; break; + case Tok::Slash: op = BinOp::Div; break; + case Tok::Percent: op = BinOp::Mod; break; + case Tok::Shl: op = BinOp::Shl; break; + case Tok::Shr: op = BinOp::Shr; break; + case Tok::Amp: op = BinOp::BitAnd; break; + default: return l; + } + Pos p = pos(); + next(); + l = std::make_unique(p, op, std::move(l), unary()); + } + return l; + } + + ExprPtr unary() { + Pos p = pos(); + if (accept(Tok::Minus)) return std::make_unique(p, '-', unary()); + if (accept(Tok::Not)) return std::make_unique(p, '!', unary()); + if (accept(Tok::Tilde)) return std::make_unique(p, '~', unary()); + if (accept(Tok::Try)) return std::make_unique(p, postfix()); + return postfix(); + } + + // p.value, a.len, a[i], a.push(x), math.sqrt(2) + ExprPtr postfix() { + ExprPtr e = primary(); + while (sameLine()) { + Pos p = pos(); + if (accept(Tok::Dot)) { + std::string name = expect(Tok::Ident, "a name after '.'").text; + if (at(Tok::LParen) && !cur().newlineBefore) { + auto m = std::make_unique(p, std::move(e), name); + args(m->args, m->argNames); + e = std::move(m); + } else { + e = std::make_unique(p, std::move(e), name); + } + } else if (at(Tok::LBracket)) { + next(); + parenDepth++; + ExprPtr index = expr(); + parenDepth--; + expect(Tok::RBracket); + e = std::make_unique(p, std::move(e), std::move(index)); + } else { + return e; + } + } + return e; + } + + // ( arg, name: arg, ... ) -- we are at the '(' + void args(std::vector &out, std::vector &names) { + expect(Tok::LParen); + parenDepth++; + if (!at(Tok::RParen)) { + do { + if (at(Tok::RParen)) break; // a trailing comma is fine + std::string name; + if (at(Tok::Ident) && peekTok().kind == Tok::Colon) { + name = next().text; + next(); + } + names.push_back(name); + out.push_back(expr()); + } while (accept(Tok::Comma)); + } + parenDepth--; + expect(Tok::RParen); + } + + ExprPtr primary() { + Pos p = pos(); + const Token &t = cur(); + switch (t.kind) { + case Tok::Int: { + next(); + errno = 0; + unsigned long long v = std::strtoull(t.text.c_str(), nullptr, t.text.size() > 1 && (t.text[1] == 'x' || t.text[1] == 'X') ? 16 : 10); + if (errno == ERANGE || v > (unsigned long long)LLONG_MAX) + fail(p.line, p.col, "number is too big for int"); + return std::make_unique(p, (long long)v); + } + case Tok::Float: next(); return std::make_unique(p, std::strtod(t.text.c_str(), nullptr)); + case Tok::True: next(); return std::make_unique(p, true); + case Tok::False: next(); return std::make_unique(p, false); + case Tok::Null: next(); return std::make_unique(p); + case Tok::Char: next(); return std::make_unique(p, t.text[0]); + case Tok::String: next(); return std::make_unique(p, t.text); + case Tok::LParen: { + next(); + parenDepth++; + ExprPtr e = expr(); + parenDepth--; + expect(Tok::RParen); + return e; + } + case Tok::LBracket: { // [1, 2, 3] or a map: ["a": 1, "b": 2], [:] + next(); + parenDepth++; + if (accept(Tok::Colon)) { + parenDepth--; + expect(Tok::RBracket, "']' (an empty map is [:])"); + return std::make_unique(p); + } + if (!at(Tok::RBracket)) { + ExprPtr first = expr(); + if (accept(Tok::Colon)) { + auto m = std::make_unique(p); + m->keys.push_back(std::move(first)); + m->values.push_back(expr()); + while (accept(Tok::Comma) && !at(Tok::RBracket)) { // a trailing comma is fine + m->keys.push_back(expr()); + expect(Tok::Colon, "':' (every map entry is key: value)"); + m->values.push_back(expr()); + } + parenDepth--; + expect(Tok::RBracket); + return m; + } + auto a = std::make_unique(p); + a->elems.push_back(std::move(first)); + while (accept(Tok::Comma) && !at(Tok::RBracket)) a->elems.push_back(expr()); + parenDepth--; + expect(Tok::RBracket); + return a; + } + auto a = std::make_unique(p); + parenDepth--; + expect(Tok::RBracket); + return a; + } + case Tok::Ident: { + next(); + if (at(Tok::LParen) && !cur().newlineBefore) { + auto call = std::make_unique(p, t.text); + args(call->args, call->argNames); + return call; + } + if (isTypeName(t.text)) + fail(p.line, p.col, "a type name alone is not a value (did you mean " + t.text + "(...)?)"); + return std::make_unique(p, t.text); + } + default: unexpected("(expected a value)"); + } + } +}; + +} // namespace + +Program parse(const std::vector &tokens, int file) { + return Parser(tokens, file).program(); +} diff --git a/src/parser.h b/src/parser.h new file mode 100644 index 0000000..7769892 --- /dev/null +++ b/src/parser.h @@ -0,0 +1,7 @@ +#pragma once + +#include "ast.h" +#include "lexer.h" + +// Parses one file's tokens; `file` is its index in g_files. +Program parse(const std::vector &tokens, int file); diff --git a/src/platform.fch b/src/platform.fch deleted file mode 100644 index b7a6992..0000000 --- a/src/platform.fch +++ /dev/null @@ -1,97 +0,0 @@ -// The system a program is built for, and what depends on it: the C compiler that links, the file -// name of the program, how it is run here, and (through the flags) the C calling convention. -// The same as src/target.cpp. -import host -import "stdlib.h" - -struct Target { - str triple // "" = the system the compiler runs on - bool windows // Microsoft x64 calling convention, .exe - bool msvc - bool darwin // macOS - bool arm64 // AAPCS64 - bool cross // another system than the one the compiler runs on - str exe // ".exe" or "" - str cc // the C compiler that links (the IR is always compiled by clang) - str runner // how to run a program for it here: "", "wine ", "qemu-aarch64 " -} - -fn firstLine(str text) -> str { - parts := text.trim().split("\n") - return parts[0].trim() -} - -// what clang calls the system it runs on, like x86_64-pc-linux-gnu -fn hostTriple() -> str { - tmp := host.tempDir() + "/finch_triple_" + str(host.pid()) + ".txt" - host.run("clang -dumpmachine > " + host.quote(tmp) + " 2> " + host.nullDevice()) - out := read_file(tmp) or "" - host.remove(tmp) - if out.trim().len == 0 { - return "x86_64-unknown-linux-gnu" - } - return firstLine(out) -} - -// "windows", "linux", "macos", "arm64" (ARM64 Linux), or a full LLVM triple; "" = this system -fn select(str name) -> Target { - hostName := hostTriple() - t := name - if name.len == 0 { - t = hostName - } else if name == "windows" { - t = "x86_64-w64-mingw32" - } else if name == "linux" { - t = "x86_64-unknown-linux-gnu" - } else if name == "arm64" || name == "aarch64" || name == "linux-arm64" { - t = "aarch64-unknown-linux-gnu" - } else if name == "macos" { - if hostName.starts_with("aarch64") || hostName.starts_with("arm64") { - t = "arm64-apple-macosx14.0.0" - } else { - t = "x86_64-apple-macosx14.0.0" - } - } - if t == "x86_64-w64-windows-gnu" { - t = "x86_64-w64-mingw32" // what clang calls the same system when it runs on Windows - } - tg := Target(triple: t) - tg.windows = t.contains("windows") || t.contains("mingw") || t.contains("msvc") || t.contains("win32") - tg.msvc = t.contains("msvc") - tg.darwin = t.contains("apple") || t.contains("darwin") || t.contains("macos") - tg.arm64 = t.starts_with("aarch64") || t.starts_with("arm64") - hostArm := hostName.starts_with("aarch64") || hostName.starts_with("arm64") - hostDarwin := hostName.contains("apple") || hostName.contains("darwin") - hostWin := hostName.contains("windows") || hostName.contains("mingw") || hostName.contains("msvc") - tg.cross = tg.windows != hostWin || tg.darwin != hostDarwin || tg.arm64 != hostArm - tg.exe = "" - if tg.windows { - tg.exe = ".exe" - } - // FINCH_CC chooses the C compiler for any target - fc := getenv("FINCH_CC") - if fc.len > 0 { - tg.cc = fc - } else if tg.cross && tg.windows { - tg.cc = "x86_64-w64-mingw32-gcc" - } else if tg.cross && tg.arm64 && !tg.darwin { - tg.cc = "aarch64-linux-gnu-gcc" - } else if tg.cross { - tg.cc = "clang --target=" + t - } else if host.pathSeparator() == ";" { - tg.cc = "clang" // Windows has no cc - } else { - tg.cc = "cc" - } - if tg.cross && tg.windows { - tg.runner = "wine " - } else if tg.cross && tg.arm64 && !tg.darwin { - tg.runner = "qemu-aarch64 " - } - return tg -} - -// C's plain `char`: signed on x86 and Apple, not on ARM64 Linux -fn charIsSigned(Target t) -> bool { - return !t.arm64 || t.darwin || t.windows -} diff --git a/src/target.cpp b/src/target.cpp new file mode 100644 index 0000000..3c533d4 --- /dev/null +++ b/src/target.cpp @@ -0,0 +1,158 @@ +#include "target.h" + +#include +#include + +#include +#include +#include + +#ifdef _WIN32 +#define popen _popen +#define pclose _pclose +#else +#include +#endif + +static bool hostIsWindows() { +#ifdef _WIN32 + return true; +#else + return false; +#endif +} + +// The Finch-generated code needs these LLVM backends (the same C functions LLVM's own tools call). +extern "C" { +#ifdef FINCH_TARGET_X86 +void LLVMInitializeX86TargetInfo(); +void LLVMInitializeX86Target(); +void LLVMInitializeX86TargetMC(); +void LLVMInitializeX86AsmPrinter(); +#endif +#ifdef FINCH_TARGET_AARCH64 +void LLVMInitializeAArch64TargetInfo(); +void LLVMInitializeAArch64Target(); +void LLVMInitializeAArch64TargetMC(); +void LLVMInitializeAArch64AsmPrinter(); +#endif +} + +void initTargets() { +#ifdef FINCH_TARGET_X86 + LLVMInitializeX86TargetInfo(); + LLVMInitializeX86Target(); + LLVMInitializeX86TargetMC(); + LLVMInitializeX86AsmPrinter(); +#endif +#ifdef FINCH_TARGET_AARCH64 + LLVMInitializeAArch64TargetInfo(); + LLVMInitializeAArch64Target(); + LLVMInitializeAArch64TargetMC(); + LLVMInitializeAArch64AsmPrinter(); +#endif + llvm::InitializeNativeTarget(); + llvm::InitializeNativeTargetAsmPrinter(); +} + +void setTarget(const std::string &name) { + std::string host = llvm::sys::getDefaultTargetTriple(); + llvm::Triple hostTriple(llvm::Triple::normalize(host)); + std::string t = name; + if (name.empty()) t = host; + else if (name == "windows") t = hostIsWindows() ? host : "x86_64-w64-mingw32"; + else if (name == "linux") t = "x86_64-unknown-linux-gnu"; + else if (name == "arm64" || name == "aarch64" || name == "linux-arm64") t = "aarch64-unknown-linux-gnu"; + else if (name == "macos") t = hostTriple.isAArch64() ? "arm64-apple-macosx14.0.0" : "x86_64-apple-macosx14.0.0"; + g_target.triple = llvm::Triple(llvm::Triple::normalize(t)); + g_target.windows = g_target.triple.isOSWindows(); + g_target.msvc = g_target.triple.isWindowsMSVCEnvironment(); + g_target.darwin = g_target.triple.isOSDarwin(); + g_target.cross = hostTriple.getOS() != g_target.triple.getOS() || hostTriple.getArch() != g_target.triple.getArch(); + g_target.exe = g_target.windows ? ".exe" : ""; + + // FINCH_CC chooses the C compiler for any target; CC only when not cross-compiling. + if (const char *fc = std::getenv("FINCH_CC")) g_target.cc = fc; + else if (!g_target.cross && std::getenv("CC")) g_target.cc = std::getenv("CC"); + else if (g_target.cross && g_target.windows) g_target.cc = "x86_64-w64-mingw32-gcc"; + else if (g_target.cross && g_target.triple.isAArch64() && g_target.triple.isOSLinux()) g_target.cc = "aarch64-linux-gnu-gcc"; + else if (g_target.cross) g_target.cc = "clang --target=" + g_target.triple.str(); + else if (hostIsWindows()) g_target.cc = "clang"; + else g_target.cc = "cc"; +} + +std::string runPrefix() { + if (!g_target.cross) return ""; + if (g_target.windows && !hostIsWindows()) return "wine "; + if (g_target.triple.isAArch64() && g_target.triple.isOSLinux()) return "qemu-aarch64 "; + return ""; +} + +std::string shellQuote(const std::string &s) { +#ifdef _WIN32 + // cmd.exe: double quotes; a " inside a file name is impossible on Windows + return "\"" + s + "\""; +#else + std::string out = "'"; + for (char ch : s) out += ch == '\'' ? std::string("'\\''") : std::string(1, ch); + return out + "'"; +#endif +} + +static int exitStatus(int status) { +#ifdef _WIN32 + return status; +#else + if (status == -1) return -1; + if (WIFEXITED(status)) return WEXITSTATUS(status); + if (WIFSIGNALED(status)) return 128 + WTERMSIG(status); + return -1; +#endif +} + +int capture(const std::string &cmd, std::string &output) { + FILE *p = popen((cmd + " 2>&1").c_str(), "r"); + if (!p) return -1; + char buf[4096]; + size_t n; + while ((n = std::fread(buf, 1, sizeof buf, p)) > 0) output.append(buf, n); + return exitStatus(pclose(p)); +} + +int runCommand(const std::string &cmd, std::string *crash) { + std::fflush(stdout); + int status = std::system(cmd.c_str()); +#ifndef _WIN32 + if (crash && status != -1 && WIFSIGNALED(status)) *crash = strsignal(WTERMSIG(status)); +#else + // a crashed Windows program exits with an NTSTATUS code like 0xC0000005 + if (crash && (unsigned)status >= 0xC0000000u) { + char buf[64]; + std::snprintf(buf, sizeof buf, "exception 0x%08X%s", (unsigned)status, + (unsigned)status == 0xC0000005u ? " (access violation)" : (unsigned)status == 0xC00000FDu ? " (stack overflow)" : ""); + *crash = buf; + } +#endif + return exitStatus(status); +} + +const char *nullDevice() { return hostIsWindows() ? "NUL" : "/dev/null"; } + +std::string cacheDir() { +#ifdef _WIN32 + if (const char *l = std::getenv("LOCALAPPDATA")) return std::string(l) + "\\finch"; + if (const char *t = std::getenv("TEMP")) return std::string(t) + "\\finch"; + return "finch-cache"; +#else + if (const char *x = std::getenv("XDG_CACHE_HOME")) return std::string(x) + "/finch"; + if (const char *h = std::getenv("HOME")) return std::string(h) + "/.cache/finch"; + return "/tmp/finch-cache"; +#endif +} + +char pathListSeparator() { return hostIsWindows() ? ';' : ':'; } + +std::string dirOf(const std::string &path) { + size_t slash = hostIsWindows() ? path.find_last_of("/\\") : path.find_last_of('/'); + return slash == std::string::npos ? "." : path.substr(0, slash); +} diff --git a/src/target.h b/src/target.h new file mode 100644 index 0000000..eb18c34 --- /dev/null +++ b/src/target.h @@ -0,0 +1,49 @@ +#pragma once +// The system Finch compiles for, and everything that depends on it: +// the C compiler used to link, how the shell quotes, file names, the C ABI. + +#include + +#include + +struct TargetInfo { + llvm::Triple triple; + bool darwin = false; // macOS + bool windows = false; // Windows (MSVC or MinGW): Microsoft x64 calling convention, .exe + bool msvc = false; // the MSVC environment (link with clang + the Windows SDK) + bool cross = false; // compiling for another system than the one we run on + std::string cc; // the C compiler that links programs and builds the runtime + std::string exe; // ".exe" or "" +}; + +inline TargetInfo g_target; + +// "windows", "linux", "macos", "arm64" (ARM64 Linux), or a full LLVM triple; "" = the system finch runs on +void setTarget(const std::string &name); + +// Register the LLVM backends Finch can generate code for (x86-64, ARM64). +void initTargets(); + +// How to run a program built for g_target on this machine ("" = directly, "wine", "qemu-aarch64"). +std::string runPrefix(); + +// Quote one argument for the shell that runs our commands (sh on Unix, cmd.exe on Windows). +std::string shellQuote(const std::string &s); + +// Run a command; its exit status, and everything it printed in `output`. +int capture(const std::string &cmd, std::string &output); + +// Run a command with its output going to the terminal; its exit status (128+n for a signal). +int runCommand(const std::string &cmd, std::string *crash = nullptr); + +// The null device: /dev/null or NUL. +const char *nullDevice(); + +// The folder for cached files (~/.cache/finch, %LOCALAPPDATA%\finch). +std::string cacheDir(); + +// Separator of FINCH_PATH entries (':' or ';'). +char pathListSeparator(); + +// The folder part of a path (both / and \ on Windows). +std::string dirOf(const std::string &path); diff --git a/std/finch_win.h b/std/finch_win.h deleted file mode 100644 index 2261709..0000000 --- a/std/finch_win.h +++ /dev/null @@ -1,6 +0,0 @@ -/* The Windows functions std/time_windows.fch needs. Declared here, not by including : - libclang can't parse that header with MinGW's intrinsics. Both are in kernel32. */ -unsigned long long GetTickCount64(void); -void Sleep(unsigned long milliseconds); -int QueryPerformanceCounter(long long *count); -int QueryPerformanceFrequency(long long *frequency); diff --git a/std/json.fch b/std/json.fch deleted file mode 100644 index 1a85779..0000000 --- a/std/json.fch +++ /dev/null @@ -1,518 +0,0 @@ -// JSON: read it, build it, write it. -// -// import json -// -// doc := try json.parse("{\"name\": \"Finch\", \"tags\": [\"fast\", \"small\"], \"stars\": 5}") -// print(doc.get("name").str_or("")) Finch -// print(doc.get("tags").at(1).str_or("")) small -// print(doc.get("stars").int_or(0)) 5 -// print(doc.get("missing").is_null()) true (a missing key is null, so chains never fail) -// -// out := json.new_object() -// out.set("ok", json.new_bool(true)) -// list := json.new_list() -// list.push(json.new_number(1.5)) -// out.set("values", list) -// print(json.stringify(out)) {"ok":true,"values":[1.5]} -// print(json.pretty(out)) the same, over several lines - -enum Kind { Null, Bool, Number, Text, List, Object } - -// One JSON value. `kind` says which of the other fields it uses: flag for Bool, num for Number, -// text for Text, items for List, and items with keys (the same length, in the same order) for Object. -struct Json { - Kind kind - bool flag - float num - str text - []Json items - []str keys -} - -fn new_null() -> Json { - return Json(kind: Kind.Null) -} - -fn new_bool(bool b) -> Json { - return Json(kind: Kind.Bool, flag: b) -} - -fn new_number(float n) -> Json { - return Json(kind: Kind.Number, num: n) -} - -fn new_text(str s) -> Json { - return Json(kind: Kind.Text, text: s) -} - -fn new_list() -> Json { - return Json(kind: Kind.List) -} - -fn new_object() -> Json { - return Json(kind: Kind.Object) -} - -// ---------- looking inside ---------- - -fn Json.is_null() -> bool { - return self.kind == Kind.Null -} - -// the number of elements of a list, of keys of an object, of bytes of a text; 0 for the rest -fn Json.len() -> int { - return match self.kind { - List, Object -> self.items.len - Text -> self.text.len - else -> 0 - } -} - -fn Json.has(str key) -> bool { - return self.kind == Kind.Object && self.keys.contains(key) -} - -// the value of a key of an object; null if there is none (or this is not an object) -fn Json.get(str key) -> Json { - if self.kind != Kind.Object { - return new_null() - } - i := self.keys.find(key) - if i < 0 { - return new_null() - } - return self.items[i] -} - -// the element of a list; null if there is none -fn Json.at(int i) -> Json { - if self.kind != Kind.List || i < 0 || i >= self.items.len { - return new_null() - } - return self.items[i] -} - -// the value if it is of that kind, else what was given -fn Json.str_or(str fallback) -> str { - if self.kind == Kind.Text { - return self.text - } - return fallback -} - -fn Json.float_or(float fallback) -> float { - if self.kind == Kind.Number { - return self.num - } - return fallback -} - -fn Json.int_or(int fallback) -> int { - if self.kind == Kind.Number { - return int(self.num) - } - return fallback -} - -fn Json.bool_or(bool fallback) -> bool { - if self.kind == Kind.Bool { - return self.flag - } - return fallback -} - -// the keys of an object, in the order they were written -fn Json.names() -> []str { - return self.keys -} - -// ---------- building ---------- - -// add to the end of a list -fn Json.push(Json v) { - self.items.push(v) -} - -// give a key a value in an object; a key that is already there is replaced -fn Json.set(str key, Json v) { - i := self.keys.find(key) - if i >= 0 { - self.items[i] = v - return - } - self.keys.push(key) - self.items.push(v) -} - -// ---------- writing ---------- - -fn quote(str s) -> str { - []str parts = ["\""] - for c in s { - n := int(c) - if c == '"' { - parts.push("\\\"") - } else if c == '\\' { - parts.push("\\\\") - } else if c == '\n' { - parts.push("\\n") - } else if c == '\r' { - parts.push("\\r") - } else if c == '\t' { - parts.push("\\t") - } else if n < 32 { - parts.push("\\u00" + hexdigit(n / 16) + hexdigit(n % 16)) - } else { - parts.push(str(c)) - } - } - parts.push("\"") - return parts.join("") -} - -fn hexdigit(int n) -> str { - digits := "0123456789abcdef" - return str(digits[n]) -} - -fn number_text(float n) -> str { - if n == float(int(n)) && n > -1000000000000000.0 && n < 1000000000000000.0 { - return str(int(n)) - } - return str(n) -} - -struct Writer { - []str out -} - -fn write(Json j, str indent, str pad, ptr[Writer] w) { - nl := "" - inner := "" - sep := "," - colon := ":" - if indent.len > 0 { - nl = "\n" - inner = pad + indent - colon = ": " - } - match j.kind { - Null -> w.out.push("null") - Bool -> { - if j.flag { - w.out.push("true") - } else { - w.out.push("false") - } - } - Number -> w.out.push(number_text(j.num)) - Text -> w.out.push(quote(j.text)) - List -> { - if j.items.len == 0 { - w.out.push("[]") - return - } - w.out.push("[" + nl) - for i, item in j.items { - if i > 0 { - w.out.push(sep + nl) - } - w.out.push(inner) - write(item, indent, inner, w) - } - w.out.push(nl + pad + "]") - } - Object -> { - if j.items.len == 0 { - w.out.push("{}") - return - } - w.out.push("{" + nl) - for i, item in j.items { - if i > 0 { - w.out.push(sep + nl) - } - w.out.push(inner + quote(j.keys[i]) + colon) - write(item, indent, inner, w) - } - w.out.push(nl + pad + "}") - } - } -} - -// the value as text on one line -fn stringify(Json j) -> str { - w := Writer() - write(j, "", "", addr(w)) - return w.out.join("") -} - -// the value as text over several lines, indented by two spaces -fn pretty(Json j) -> str { - w := Writer() - write(j, " ", "", addr(w)) - return w.out.join("") -} - -// ---------- reading ---------- - -struct Reader { - str src - int i -} - -// the line and column of a position, for a message -fn where(ptr[Reader] r) -> str { - line := 1 - col := 1 - for k in 0..r.i { - if k < r.src.len && r.src[k] == '\n' { - line += 1 - col = 1 - } else { - col += 1 - } - } - return "line " + str(line) + ", column " + str(col) -} - -fn peek(ptr[Reader] r) -> char { - if r.i < r.src.len { - return r.src[r.i] - } - return char(0) -} - -fn skip_space(ptr[Reader] r) { - while r.i < r.src.len && (r.src[r.i] == ' ' || r.src[r.i] == '\n' || r.src[r.i] == '\t' || r.src[r.i] == '\r') { - r.i += 1 - } -} - -fn unexpected(ptr[Reader] r, str wanted) -> str { - if r.i >= r.src.len { - return "json: the text ends where " + wanted + " should be (" + where(r) + ")" - } - return "json: found '" + str(r.src[r.i]) + "' where " + wanted + " should be (" + where(r) + ")" -} - -// does `word` come next? -fn comes(ptr[Reader] r, str word) -> bool { - return r.src.len - r.i >= word.len && r.src.sub(r.i, r.i + word.len) == word -} - -fn expect_word(ptr[Reader] r, str word) -> ! { - if !comes(r, word) { - return error(unexpected(r, "'" + word + "'")) - } - r.i += word.len -} - -fn hex_value(char c) -> int { - if c >= '0' && c <= '9' { - return int(c) - int('0') - } - if c >= 'a' && c <= 'f' { - return int(c) - int('a') + 10 - } - if c >= 'A' && c <= 'F' { - return int(c) - int('A') + 10 - } - return -1 -} - -// a code point as UTF-8 -fn utf8(int cp) -> str { - []u8 b - if cp < 128 { - b.push(u8(cp)) - } else if cp < 2048 { - b.push(u8(192 + cp / 64)) - b.push(u8(128 + cp % 64)) - } else if cp < 65536 { - b.push(u8(224 + cp / 4096)) - b.push(u8(128 + (cp / 64) % 64)) - b.push(u8(128 + cp % 64)) - } else { - b.push(u8(240 + cp / 262144)) - b.push(u8(128 + (cp / 4096) % 64)) - b.push(u8(128 + (cp / 64) % 64)) - b.push(u8(128 + cp % 64)) - } - return str(b) -} - -fn read_hex4(ptr[Reader] r) -> int! { - n := 0 - for k in 0..4 { - if r.i >= r.src.len || hex_value(r.src[r.i]) < 0 { - return error(unexpected(r, "a hexadecimal digit")) - } - n = n * 16 + hex_value(r.src[r.i]) - r.i += 1 - } - return n -} - -fn read_string(ptr[Reader] r) -> str! { - r.i += 1 // the opening quote - []str parts - start := r.i - while true { - if r.i >= r.src.len { - return error("json: a text is never closed (" + where(r) + ")") - } - c := r.src[r.i] - if c == '"' { - parts.push(r.src.sub(start, r.i)) - r.i += 1 - return parts.join("") - } - if int(c) < 32 { - return error("json: a line break or control character inside a text (" + where(r) + ")") - } - if c != '\\' { - r.i += 1 - continue - } - parts.push(r.src.sub(start, r.i)) - r.i += 1 - e := peek(r) - r.i += 1 - if e == 'n' { - parts.push("\n") - } else if e == 't' { - parts.push("\t") - } else if e == 'r' { - parts.push("\r") - } else if e == 'b' { - parts.push(utf8(8)) - } else if e == 'f' { - parts.push(utf8(12)) - } else if e == '"' || e == '\\' || e == '/' { - parts.push(str(e)) - } else if e == 'u' { - cp := try read_hex4(r) - // a pair of 😀 stands for one character above U+FFFF - if cp >= 55296 && cp < 56320 && comes(r, "\\u") { - r.i += 2 - low := try read_hex4(r) - cp = 65536 + (cp - 55296) * 1024 + (low - 56320) - } - parts.push(utf8(cp)) - } else { - return error("json: unknown escape \\" + str(e) + " in a text (" + where(r) + ")") - } - start = r.i - } -} - -fn read_number(ptr[Reader] r) -> Json! { - start := r.i - if peek(r) == '-' { - r.i += 1 - } - while r.i < r.src.len && ((r.src[r.i] >= '0' && r.src[r.i] <= '9') || r.src[r.i] == '.' || r.src[r.i] == 'e' || r.src[r.i] == 'E' || r.src[r.i] == '+' || r.src[r.i] == '-') { - r.i += 1 - } - n := float(r.src.sub(start, r.i)) or { - r.i = start - return error(unexpected(r, "a number")) - } - return new_number(n) -} - -fn read_value(ptr[Reader] r) -> Json! { - skip_space(r) - c := peek(r) - if r.i >= r.src.len { - return error(unexpected(r, "a value")) - } - if c == '{' { - obj := new_object() - r.i += 1 - skip_space(r) - if peek(r) == '}' { - r.i += 1 - return obj - } - while true { - skip_space(r) - if peek(r) != '"' { - return error(unexpected(r, "a key in quotes")) - } - key := try read_string(r) - skip_space(r) - if peek(r) != ':' { - return error(unexpected(r, "':'")) - } - r.i += 1 - v := try read_value(r) - obj.set(key, v) - skip_space(r) - if peek(r) == ',' { - r.i += 1 - continue - } - if peek(r) == '}' { - r.i += 1 - return obj - } - return error(unexpected(r, "',' or '}'")) - } - } - if c == '[' { - list := new_list() - r.i += 1 - skip_space(r) - if peek(r) == ']' { - r.i += 1 - return list - } - while true { - v := try read_value(r) - list.push(v) - skip_space(r) - if peek(r) == ',' { - r.i += 1 - continue - } - if peek(r) == ']' { - r.i += 1 - return list - } - return error(unexpected(r, "',' or ']'")) - } - } - if c == '"' { - s := try read_string(r) - return new_text(s) - } - if c == 't' { - try expect_word(r, "true") - return new_bool(true) - } - if c == 'f' { - try expect_word(r, "false") - return new_bool(false) - } - if c == 'n' { - try expect_word(r, "null") - return new_null() - } - if c == '-' || (c >= '0' && c <= '9') { - return try read_number(r) - } - return error(unexpected(r, "a value")) -} - -// the JSON in `text`; an error with the line and column where it went wrong -fn parse(str text) -> Json! { - r := Reader(src: text) - v := try read_value(addr(r)) - skip_space(addr(r)) - if r.i < r.src.len { - return error(unexpected(addr(r), "the end of the text")) - } - return v -} diff --git a/std/path.fch b/std/path.fch deleted file mode 100644 index c424255..0000000 --- a/std/path.fch +++ /dev/null @@ -1,128 +0,0 @@ -// Paths, as text. Elements are separated by "/". -// -// import path -// path.join("a", "b.txt") a/b.txt -// path.base("/tmp/x/a.tar.gz") a.tar.gz path.stem(...) a.tar path.ext(...) .gz -// path.dir("/tmp/x/a.txt") /tmp/x -// path.clean("a//b/../c/./d") a/c/d - -// a and b with one separator between; an absolute b replaces a -fn join(str a, str b) -> str { - if a.len == 0 { - return b - } - if b.len == 0 { - return a - } - if b[0] == '/' { - return b - } - if a[a.len - 1] == '/' { - return a + b - } - return a + "/" + b -} - -fn is_abs(str p) -> bool { - return p.len > 0 && p[0] == '/' -} - -// the last element: "a/b.txt" -> "b.txt", "a/b/" -> "b", "" -> ".", "/" -> "/" -fn base(str p) -> str { - if p.len == 0 { - return "." - } - end := p.len - while end > 1 && p[end - 1] == '/' { - end -= 1 - } - if end == 1 && p[0] == '/' { - return "/" - } - start := end - while start > 0 && p[start - 1] != '/' { - start -= 1 - } - return p.sub(start, end) -} - -// everything before the last element: "a/b.txt" -> "a", "b.txt" -> ".", "/b" -> "/" -fn dir(str p) -> str { - end := p.len - while end > 1 && p[end - 1] == '/' { - end -= 1 - } - i := end - while i > 0 && p[i - 1] != '/' { - i -= 1 - } - if i == 0 { - return "." - } - while i > 1 && p[i - 1] == '/' { - i -= 1 - } - return p.sub(0, i) -} - -// the part of the last element from its last dot: "a.tar.gz" -> ".gz"; "" when there is none -fn ext(str p) -> str { - b := base(p) - i := b.len - while i > 0 && b[i - 1] != '.' { - i -= 1 - } - if i <= 1 { // no dot, or a name that only starts with one (.bashrc) - return "" - } - return b.sub(i - 1, b.len) -} - -// the last element without its extension -fn stem(str p) -> str { - b := base(p) - e := ext(p) - return b.sub(0, b.len - e.len) -} - -// the elements of a path: "/a/b/c" -> ["a", "b", "c"] -fn parts(str p) -> []str { - []str out - for piece in p.split("/") { - if piece.len > 0 { - out.push(piece) - } - } - return out -} - -// the shortest path with the same meaning: no "//", no ".", and ".." resolved where it can be -fn clean(str p) -> str { - if p.len == 0 { - return "." - } - abs := is_abs(p) - []str out - for piece in parts(p) { - if piece == "." { - continue - } - if piece == ".." { - if out.len > 0 && out[out.len - 1] != ".." { - out.pop() - } else if !abs { - out.push("..") - } - continue - } - out.push(piece) - } - joined := out.join("/") - if abs { - return "/" + joined - } - if joined.len == 0 { - return "." - } - return joined -} diff --git a/std/proc.fch b/std/proc.fch deleted file mode 100644 index 1837c57..0000000 --- a/std/proc.fch +++ /dev/null @@ -1,48 +0,0 @@ -// Programs: run a command, read what it printed, look at the environment. -// -// import proc -// code := proc.run("make") the exit code; what the command prints goes to the screen -// text := try proc.output("git describe") what the command printed; an error if it failed -// proc.env("HOME", "/") an environment variable, or the second value if it is not set -import "stdlib.h" -import "unistd.h" -import "time.h" - -// run a command; its output goes to the screen. Gives its exit code. -fn run(str command) -> int { - return shell(command) -} - -// run a command and give what it printed. Fails, with its output as the message, if it exits with an error. -fn output(str command) -> str! { - tmp := "/tmp/finch_out_" + str(getpid()) + "_" + str(int(time(null))) - code := shell("(" + command + ") > '" + tmp + "' 2>&1") - text := read_file(tmp) or "" - delete_file(tmp) - if code != 0 { - return error("'" + command + "' exited with code " + str(code) + ": " + text.trim()) - } - return text -} - -fn env(str name, str fallback) -> str { - v := getenv(name) - if v.len == 0 { - return fallback - } - return v -} - -fn pid() -> int { - return int(getpid()) -} - -// the folder the program is running in -fn cwd() -> str { - []char buf - for i in 0..4096 { - buf.push(char(0)) - } - getcwd(buf.ptr, 4096) - return str(buf.ptr) -} diff --git a/std/proc_windows.fch b/std/proc_windows.fch deleted file mode 100644 index eb60e7f..0000000 --- a/std/proc_windows.fch +++ /dev/null @@ -1,45 +0,0 @@ -// Programs, for Windows. The same functions as proc.fch (that file is for Linux and macOS). -import "stdlib.h" -import "process.h" -import "direct.h" -import "time.h" - -fn run(str command) -> int { - return shell(command) -} - -fn output(str command) -> str! { - tmp := proc_env("TEMP", ".") + "\\finch_out_" + str(getpid()) + "_" + str(int(time(null))) - code := shell(command + " > \"" + tmp + "\" 2>&1") - text := read_file(tmp) or "" - delete_file(tmp) - if code != 0 { - return error("'" + command + "' exited with code " + str(code) + ": " + text.trim()) - } - return text -} - -fn proc_env(str name, str fallback) -> str { - v := getenv(name) - if v.len == 0 { - return fallback - } - return v -} - -fn env(str name, str fallback) -> str { - return proc_env(name, fallback) -} - -fn pid() -> int { - return int(getpid()) -} - -fn cwd() -> str { - []char buf - for i in 0..4096 { - buf.push(char(0)) - } - getcwd(buf.ptr, 4096) - return str(buf.ptr) -} diff --git a/std/time.fch b/std/time.fch deleted file mode 100644 index 1bdcc17..0000000 --- a/std/time.fch +++ /dev/null @@ -1,88 +0,0 @@ -// Time: the clock, sleeping, and dates. -// -// import time -// start := time.millis() milliseconds from a clock that only goes forward (to measure with) -// time.sleep(250) wait a quarter of a second -// time.now() seconds since 1970-01-01 00:00 UTC -// d := time.date(time.now()) the parts: d.year, d.month, d.day, d.hour, d.minute, d.second -// time.format(time.now(), "%Y-%m-%d %H:%M") as text, in the computer's time zone -import "time.h" - -struct Date { - int year - int month // 1 to 12 - int day // 1 to 31 - int hour - int minute - int second - int weekday // 0 is Sunday - int yearday // 1 to 366 -} - -// seconds since 1970-01-01 00:00 UTC -fn now() -> int { - return int(time(null)) -} - -// milliseconds on a clock that only goes forward: for measuring how long something took -fn millis() -> int { - timespec ts - clock_gettime(CLOCK_MONOTONIC, addr(ts)) - return int(ts.tv_sec) * 1000 + int(ts.tv_nsec) / 1000000 -} - -fn sleep(int ms) { - timespec ts - ts.tv_sec = ms / 1000 - ts.tv_nsec = (ms % 1000) * 1000000 - nanosleep(addr(ts), null) -} - -fn parts(tm t) -> Date { - return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour), - minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1) -} - -// the date and time of a moment, in UTC -fn date(int unix) -> Date { - tm t - i64 stamp = unix - gmtime_r(addr(stamp), addr(t)) - return parts(t) -} - -// the date and time of a moment, in the computer's time zone -fn local(int unix) -> Date { - tm t - i64 stamp = unix - localtime_r(addr(stamp), addr(t)) - return parts(t) -} - -// a moment as text, in the computer's time zone: %Y year, %m month, %d day, %H hour, %M minute, %S second -// (the rest of C's strftime works too: %A weekday name, %B month name, ...) -fn format(int unix, str pattern) -> str { - tm t - i64 stamp = unix - localtime_r(addr(stamp), addr(t)) - []char buf - for i in 0..256 { - buf.push(char(0)) - } - strftime(buf.ptr, 256, pattern, addr(t)) - return str(buf.ptr) -} - -// the number of days in a month (month is 1 to 12) -fn days_in_month(int year, int month) -> int { - if month == 2 { - if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) { - return 29 - } - return 28 - } - if month == 4 || month == 6 || month == 9 || month == 11 { - return 30 - } - return 31 -} diff --git a/std/time_windows.fch b/std/time_windows.fch deleted file mode 100644 index 80ecbe9..0000000 --- a/std/time_windows.fch +++ /dev/null @@ -1,75 +0,0 @@ -// Time, for Windows. The same functions as time.fch (that file is for Linux and macOS). -import "time.h" -import "finch_win.h" - -struct Date { - int year - int month // 1 to 12 - int day // 1 to 31 - int hour - int minute - int second - int weekday // 0 is Sunday - int yearday // 1 to 366 -} - -fn now() -> int { - return int(time(null)) -} - -// milliseconds on a clock that only goes forward (the performance counter: GetTickCount64 ticks every 15 ms) -fn millis() -> int { - i64 count = 0 - i64 freq = 1 - QueryPerformanceFrequency(addr(freq)) - QueryPerformanceCounter(addr(count)) - return int(count / freq) * 1000 + int(count % freq) * 1000 / int(freq) -} - -fn sleep(int ms) { - Sleep(u32(ms)) -} - -fn parts(tm t) -> Date { - return Date(year: int(t.tm_year) + 1900, month: int(t.tm_mon) + 1, day: int(t.tm_mday), hour: int(t.tm_hour), - minute: int(t.tm_min), second: int(t.tm_sec), weekday: int(t.tm_wday), yearday: int(t.tm_yday) + 1) -} - -fn date(int unix) -> Date { - tm t - i64 stamp = unix - _gmtime64_s(addr(t), addr(stamp)) - return parts(t) -} - -fn local(int unix) -> Date { - tm t - i64 stamp = unix - _localtime64_s(addr(t), addr(stamp)) - return parts(t) -} - -fn format(int unix, str pattern) -> str { - tm t - i64 stamp = unix - _localtime64_s(addr(t), addr(stamp)) - []char buf - for i in 0..256 { - buf.push(char(0)) - } - strftime(buf.ptr, 256, pattern, addr(t)) - return str(buf.ptr) -} - -fn days_in_month(int year, int month) -> int { - if month == 2 { - if year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) { - return 29 - } - return 28 - } - if month == 4 || month == 6 || month == 9 || month == 11 { - return 30 - } - return 31 -} diff --git a/tests/boot.sh b/tests/boot.sh new file mode 100755 index 0000000..abb5198 --- /dev/null +++ b/tests/boot.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +# The self-hosted compiler (boot/) must +# 1. build itself: stage1 (built by build/finch) -> stage2 -> stage3, with identical IR +# 2. give the same output as build/finch on every test in tests/run it supports +set -u +cd "$(dirname "$0")/.." +tmp=$(mktemp -d) +trap 'rm -rf "$tmp"' EXIT + +build/finch build boot/main.fch -o "$tmp/boot1" || exit 1 +"$tmp/boot1" build boot/main.fch -o "$tmp/boot2" || exit 1 +"$tmp/boot1" ir boot/main.fch > "$tmp/stage2.ll" +"$tmp/boot2" ir boot/main.fch > "$tmp/stage3.ll" +if cmp -s "$tmp/stage2.ll" "$tmp/stage3.ll"; then + echo "bootstrap: stage 2 and stage 3 are identical ($(wc -l < "$tmp/stage3.ll") lines of IR)" +else + echo "bootstrap: FAILED, stage 2 and stage 3 differ" + exit 1 +fi + +pass=0; failed=0; skipped=0 +for f in tests/run/*.fch; do + grep -q "^fn main" "$f" || continue + # the bootstrap compiler doesn't do C imports + # (checked in the test and in the modules it imports) + files="$f" + for m in $(sed -n 's/^import \([a-z_]*\)$/\1/p' "$f"); do files="$files tests/run/$m.fch"; done + if grep -qE '^import "|^link ' $files; then + skipped=$((skipped + 1)) + continue + fi + input="${f%.fch}.in" + [ -f "$input" ] || input=/dev/null + if ! "$tmp/boot2" build "$f" -o "$tmp/prog" > "$tmp/err" 2>&1; then + failed=$((failed + 1)) + echo "FAIL (compile) $f" + head -3 "$tmp/err" + continue + fi + got=$("$tmp/prog" < "$input" 2>&1) + if [ "$got" == "$(cat "${f%.fch}.out")" ]; then + pass=$((pass + 1)) + else + failed=$((failed + 1)) + echo "FAIL (output) $f" + diff <(echo "$got") "${f%.fch}.out" | head -10 + fi +done +echo "self-hosted compiler: $pass passed, $failed failed, $skipped skipped (features it doesn't have)" +[ $failed -eq 0 ] diff --git a/tests/cross.sh b/tests/cross.sh index c1ea693..da58412 100755 --- a/tests/cross.sh +++ b/tests/cross.sh @@ -4,7 +4,7 @@ # tests/cross.sh arm64 aarch64 Linux, run with qemu-aarch64 # e.g. nix-shell -p pkgsCross.mingwW64.buildPackages.gcc wine64 --run 'tests/cross.sh windows' # nix-shell -p pkgsCross.aarch64-multiplatform.buildPackages.gcc qemu \ -# --run 'FINCH_CC=aarch64-unknown-linux-gnu-gcc QEMU_LD_PREFIX= tests/cross.sh arm64' +# --run 'FINCH_CC=aarch64-unknown-linux-gnu-gcc tests/cross.sh arm64' # (On a real Windows/ARM64/macOS machine, use tests/run.sh with that system's finch.) set -u cd "$(dirname "$0")" @@ -24,7 +24,7 @@ run_exe() { # program, stdin -> output without Windows' \r $runner "$1" < "$2" 2>&1 | tr -d '\r' } -for f in run/*.fch new/*.fch; do +for f in run/*.fch; do grep -q "^fn main" "$f" || continue input="${f%.fch}.in" [ -f "$input" ] || input=/dev/null @@ -40,7 +40,7 @@ for f in run/*.fch new/*.fch; do fi done -for f in fail/*.fch new/fail/*.fch; do +for f in fail/*.fch; do expect=$(head -1 "$f" | sed -n 's|^// expect: ||p') exe="$tmp/$(basename "${f%.fch}")$ext" if "$FINCH" build "$f" --target "$target" -o "$exe" > "$tmp/out" 2>&1; then diff --git a/tests/new/enums.fch b/tests/new/enums.fch deleted file mode 100644 index b28f13a..0000000 --- a/tests/new/enums.fch +++ /dev/null @@ -1,75 +0,0 @@ -enum Color { Red, Green, Blue } -enum Status { Ok = 200, NotFound = 404, Teapot = 418 } - -struct Pixel { - Color color - int x -} - -fn Color.warm() -> bool { - return self == Color.Red -} - -fn Color.next() -> Color { - if self == Color.Red { - return Color.Green - } - if self == Color.Green { - return Color.Blue - } - return Color.Red -} - -fn describe(Color c) -> str { - return match c { - Red -> "red" - Green -> "green" - Blue -> "blue" - } -} - -fn code(Status s) -> str { - match s { - Status.Ok -> return "fine" - Status.NotFound, Status.Teapot -> return "odd" - } -} - -fn main() { - c := Color.Green - print(c, Color.Blue, int(Color.Blue), int(Status.Teapot)) - print(c == Color.Green, c != Color.Green) - print(describe(Color.Red), describe(c.next()), c.warm(), Color.Red.warm()) - print(code(Status.Ok), code(Status.NotFound)) - p := Pixel(color: Color.Blue, x: 3) - print(p) - []Color all = [Color.Red, Color.Blue] - print(all, all.len) - for col in all { - match col { - Color.Red -> print("a red one") - else -> print("something else") - } - } - s := Status(404) - print(s, Status(200)) - n := 5 - kind := match n { - 1, 2, 3 -> "small" - 4, 5 -> "medium" - else -> "large" - } - print(kind) - word := "two" - match word { - "one" -> print(1) - "two" -> { - print(2) - print("two!") - } - else -> print("many") - } - counts := [Color.Red: 2, Color.Blue: 5] - print(counts[Color.Blue], counts) - print(str(Color.Green) + "!") -} diff --git a/tests/new/enums.out b/tests/new/enums.out deleted file mode 100644 index ffac246..0000000 --- a/tests/new/enums.out +++ /dev/null @@ -1,14 +0,0 @@ -Green Blue 2 418 -true false -red blue false true -fine odd -Pixel(color: Blue, x: 3) -[Red, Blue] 2 -a red one -something else -NotFound Ok -medium -2 -two! -5 {Red: 2, Blue: 5} -Green! diff --git a/tests/new/fail/enum_bad_number.fch b/tests/new/fail/enum_bad_number.fch deleted file mode 100644 index 5fb056d..0000000 --- a/tests/new/fail/enum_bad_number.fch +++ /dev/null @@ -1,6 +0,0 @@ -// expect: 7 is not the number of any variant of Color -enum Color { Red, Green } - -fn main() { - print(Color(7)) -} diff --git a/tests/new/fail/enum_compare_order.fch b/tests/new/fail/enum_compare_order.fch deleted file mode 100644 index 9eaed62..0000000 --- a/tests/new/fail/enum_compare_order.fch +++ /dev/null @@ -1,6 +0,0 @@ -// expect: enums can only be compared with == and != -enum Color { Red, Green } - -fn main() { - print(Color.Red < Color.Green) -} diff --git a/tests/new/fail/enum_no_variant.fch b/tests/new/fail/enum_no_variant.fch deleted file mode 100644 index 6a86c08..0000000 --- a/tests/new/fail/enum_no_variant.fch +++ /dev/null @@ -1,6 +0,0 @@ -// expect: the enum Color has no variant 'Blue' -enum Color { Red, Green } - -fn main() { - print(Color.Blue) -} diff --git a/tests/new/fail/generic_body_error.fch b/tests/new/fail/generic_body_error.fch deleted file mode 100644 index 040c248..0000000 --- a/tests/new/fail/generic_body_error.fch +++ /dev/null @@ -1,15 +0,0 @@ -// expect: (while building bigger[Point]) -struct Point { - int x -} - -fn bigger[T](T a, T b) -> T { - if a > b { - return a - } - return b -} - -fn main() { - print(bigger(Point(1), Point(2))) -} diff --git a/tests/new/fail/generic_cant_infer.fch b/tests/new/fail/generic_cant_infer.fch deleted file mode 100644 index 1663895..0000000 --- a/tests/new/fail/generic_cant_infer.fch +++ /dev/null @@ -1,10 +0,0 @@ -// expect: can't tell what T is here -fn make[T]() -> []T { - []T out - return out -} - -fn main() { - x := make() - print(x) -} diff --git a/tests/new/fail/generic_needs_type.fch b/tests/new/fail/generic_needs_type.fch deleted file mode 100644 index c2eb2bf..0000000 --- a/tests/new/fail/generic_needs_type.fch +++ /dev/null @@ -1,9 +0,0 @@ -// expect: 'Stack' is generic, so say which type it holds -struct Stack[T] { - []T items -} - -fn main() { - s := Stack() - print(s) -} diff --git a/tests/new/fail/generic_not_generic.fch b/tests/new/fail/generic_not_generic.fch deleted file mode 100644 index a6e22e0..0000000 --- a/tests/new/fail/generic_not_generic.fch +++ /dev/null @@ -1,8 +0,0 @@ -// expect: 'add' is not generic, so it takes no type arguments -fn add(int a, int b) -> int { - return a + b -} - -fn main() { - print(add[int](1, 2)) -} diff --git a/tests/new/fail/generic_wrong_count.fch b/tests/new/fail/generic_wrong_count.fch deleted file mode 100644 index 9fdddf8..0000000 --- a/tests/new/fail/generic_wrong_count.fch +++ /dev/null @@ -1,9 +0,0 @@ -// expect: Stack takes 1 type argument(s) -struct Stack[T] { - []T items -} - -fn main() { - Stack[int, str] s - print(s) -} diff --git a/tests/new/fail/match_arm_after_else.fch b/tests/new/fail/match_arm_after_else.fch deleted file mode 100644 index 879c30f..0000000 --- a/tests/new/fail/match_arm_after_else.fch +++ /dev/null @@ -1,8 +0,0 @@ -// expect: this arm can never be used -fn main() { - n := 3 - match n { - else -> print("any") - 1 -> print("one") - } -} diff --git a/tests/new/fail/match_arms_differ.fch b/tests/new/fail/match_arms_differ.fch deleted file mode 100644 index edad56d..0000000 --- a/tests/new/fail/match_arms_differ.fch +++ /dev/null @@ -1,9 +0,0 @@ -// expect: the arms of a match have to give the same type -fn main() { - n := 3 - x := match n { - 1 -> "one" - else -> 2 - } - print(x) -} diff --git a/tests/new/fail/match_missing_variant.fch b/tests/new/fail/match_missing_variant.fch deleted file mode 100644 index 8365d7d..0000000 --- a/tests/new/fail/match_missing_variant.fch +++ /dev/null @@ -1,10 +0,0 @@ -// expect: doesn't handle Blue -enum Color { Red, Green, Blue } - -fn main() { - c := Color.Red - match c { - Red -> print(1) - Green -> print(2) - } -} diff --git a/tests/new/fail/match_needs_else.fch b/tests/new/fail/match_needs_else.fch deleted file mode 100644 index 98dbee4..0000000 --- a/tests/new/fail/match_needs_else.fch +++ /dev/null @@ -1,8 +0,0 @@ -// expect: needs an 'else' arm -fn main() { - n := 3 - match n { - 1 -> print("one") - 2 -> print("two") - } -} diff --git a/tests/new/fail/match_not_a_variant.fch b/tests/new/fail/match_not_a_variant.fch deleted file mode 100644 index 80acf23..0000000 --- a/tests/new/fail/match_not_a_variant.fch +++ /dev/null @@ -1,11 +0,0 @@ -// expect: 'Purple' is not a variant of Color -enum Color { Red, Green } - -fn main() { - c := Color.Red - match c { - Red -> print(1) - Purple -> print(2) - else -> print(3) - } -} diff --git a/tests/new/fail/payload_missing.fch b/tests/new/fail/payload_missing.fch deleted file mode 100644 index 56fa3dd..0000000 --- a/tests/new/fail/payload_missing.fch +++ /dev/null @@ -1,12 +0,0 @@ -// expect: this match doesn't handle Point -enum Shape { - Circle(float) - Point -} - -fn main() { - s := Shape.Circle(1.0) - match s { - Circle(r) -> print(r) - } -} diff --git a/tests/new/generics.fch b/tests/new/generics.fch deleted file mode 100644 index c2596be..0000000 --- a/tests/new/generics.fch +++ /dev/null @@ -1,95 +0,0 @@ -struct Stack[T] { - []T items -} - -fn Stack[T].push(T x) { - self.items.push(x) -} - -fn Stack[T].pop() -> T { - return self.items.pop() -} - -fn Stack[T].size() -> int { - return self.items.len -} - -struct Pair[A, B] { - A first - B second -} - -fn Pair[A, B].swapped() -> Pair[B, A] { - return Pair[B, A](self.second, self.first) -} - -struct Point { - int x - int y -} - -fn max[T](T a, T b) -> T { - if a > b { - return a - } - return b -} - -fn first[T]([]T items) -> T { - return items[0] -} - -fn count[T]([]T items, T wanted) -> int { - n := 0 - for x in items { - if x == wanted { - n += 1 - } - } - return n -} - -fn show[T](T x) -> str { - return "<" + str(x) + ">" -} - -fn convert[T](str s) -> T { - return T(s) -} - -fn fill[T](int n, T value) -> []T { - []T out - for i in 0..n { - out.push(value) - } - return out -} - -fn main() { - print(max(3, 9), max(2.5, 1.5), max("apple", "pear"), max('a', 'b')) - print(max[float](1, 2.5)) - print(first(["x", "y"]), first([7, 8]), count([1, 2, 1, 3, 1], 1), count(["a", "b"], "b")) - print(show(5), show("hi"), show(Point(1, 2)), show([1, 2])) - print(fill(3, "ab"), fill(2, 1.5), fill[int](2, 7)) - - Stack[int] s - s.push(10) - s.push(20) - print(s.pop(), s.size(), s) - - names := Stack[str]() - names.push("ann") - names.push("bob") - print(names, names.size()) - - pts := Stack[Point]() - pts.push(Point(1, 2)) - print(pts.pop().x) - - p := Pair[str, int]("age", 31) - q := p.swapped() - print(p, q, q.first + 1) - nested := Stack[Pair[int, str]]() - nested.push(Pair[int, str](1, "one")) - print(nested) -} diff --git a/tests/new/generics.out b/tests/new/generics.out deleted file mode 100644 index 0ea49a1..0000000 --- a/tests/new/generics.out +++ /dev/null @@ -1,10 +0,0 @@ -9 2.5 pear b -2.5 -x 7 3 1 -<5> <[1, 2]> -["ab", "ab", "ab"] [1.5, 1.5] [7, 7] -20 1 Stack[int](items: [10]) -Stack[str](items: ["ann", "bob"]) 2 -1 -Pair[str, int](first: "age", second: 31) Pair[int, str](first: 31, second: "age") 32 -Stack[Pair[int, str]](items: [Pair[int, str](first: 1, second: "one")]) diff --git a/tests/new/payload_enums.fch b/tests/new/payload_enums.fch deleted file mode 100644 index b0fbaaa..0000000 --- a/tests/new/payload_enums.fch +++ /dev/null @@ -1,38 +0,0 @@ -enum Shape { - Circle(float) - Rect(float, float) - Named(str, []int) - Point -} - -fn Shape.area() -> float { - return match self { - Circle(r) -> 3.0 * r * r - Rect(w, h) -> w * h - Named(_, sizes) -> float(sizes.len) - Point -> 0.0 - } -} - -fn describe(Shape s) -> str { - match s { - Shape.Circle(r) -> return "circle " + str(r) - Shape.Named(name, _) -> return "named " + name - else -> return "other" - } -} - -fn main() { - shapes := [Shape.Circle(2.0), Shape.Rect(2.0, 3.5), Shape.Named("tri", [1, 2, 3]), Shape.Point] - for s in shapes { - print(s, s.area(), describe(s)) - } - copy := shapes[2] - shapes.clear() - print(copy) - p := Shape.Point - match p { - Point -> print("a point") - else -> print("no") - } -} diff --git a/tests/new/payload_enums.out b/tests/new/payload_enums.out deleted file mode 100644 index 66a4dfd..0000000 --- a/tests/new/payload_enums.out +++ /dev/null @@ -1,6 +0,0 @@ -Circle(2) 12 circle 2 -Rect(2, 3.5) 7 other -Named("tri", [1, 2, 3]) 3 named tri -Point 0 other -Named("tri", [1, 2, 3]) -a point diff --git a/tests/new/std_json.fch b/tests/new/std_json.fch deleted file mode 100644 index 5aa596b..0000000 --- a/tests/new/std_json.fch +++ /dev/null @@ -1,35 +0,0 @@ -import json - -fn main() -> ! { - doc := try json.parse("{\"name\": \"Finch\", \"tags\": [\"fast\", \"small\"], \"stars\": 5, \"pi\": 3.25, \"ok\": true, \"none\": null, \"nested\": {\"deep\": [1, [2, 3]]}}") - print(doc.get("name").str_or(""), doc.get("tags").at(1).str_or(""), doc.get("stars").int_or(0), doc.get("pi").float_or(0.0)) - print(doc.get("ok").bool_or(false), doc.get("none").is_null(), doc.get("missing").is_null(), doc.has("name"), doc.has("nope")) - print(doc.get("nested").get("deep").at(1).at(0).int_or(-1), doc.get("tags").len(), doc.names()) - print(json.stringify(doc)) - - out := json.new_object() - out.set("greeting", json.new_text("hi \"there\"\n")) - list := json.new_list() - list.push(json.new_number(1)) - list.push(json.new_number(2.5)) - list.push(json.new_bool(false)) - list.push(json.new_null()) - out.set("values", list) - out.set("greeting", json.new_text("replaced")) - out.set("empty", json.new_object()) - print(json.stringify(out)) - print(json.pretty(out)) - - again := try json.parse(json.pretty(out)) - print(json.stringify(again) == json.stringify(out)) - print((try json.parse("\"caf\\u00e9 \\ud83d\\ude00 \\/\"")).str_or("")) - print((try json.parse(" [ ] ")).len(), (try json.parse("-12.5e1")).float_or(0.0)) - - for bad in ["{\"a\": }", "[1, 2", "{\"a\" 1}", "tru", "[1] x", "\"open", "", "[1,\n oops]"] { - json.parse(bad) or { - print(err) - continue - } - print("parsed?!", bad) - } -} diff --git a/tests/new/std_json.out b/tests/new/std_json.out deleted file mode 100644 index d0eeb00..0000000 --- a/tests/new/std_json.out +++ /dev/null @@ -1,26 +0,0 @@ -Finch small 5 3.25 -true true true true false -2 2 ["name", "tags", "stars", "pi", "ok", "none", "nested"] -{"name":"Finch","tags":["fast","small"],"stars":5,"pi":3.25,"ok":true,"none":null,"nested":{"deep":[1,[2,3]]}} -{"greeting":"replaced","values":[1,2.5,false,null],"empty":{}} -{ - "greeting": "replaced", - "values": [ - 1, - 2.5, - false, - null - ], - "empty": {} -} -true -café 😀 / -0 -125 -json: found '}' where a value should be (line 1, column 7) -json: the text ends where ',' or ']' should be (line 1, column 6) -json: found '1' where ':' should be (line 1, column 6) -json: found 't' where 'true' should be (line 1, column 1) -json: found 'x' where the end of the text should be (line 1, column 5) -json: a text is never closed (line 1, column 6) -json: the text ends where a value should be (line 1, column 1) -json: found 'o' where a value should be (line 2, column 3) diff --git a/tests/new/std_path.fch b/tests/new/std_path.fch deleted file mode 100644 index 8fee317..0000000 --- a/tests/new/std_path.fch +++ /dev/null @@ -1,10 +0,0 @@ -import path - -fn main() { - print(path.join("a", "b.txt"), path.join("a/", "b"), path.join("", "x"), path.join("a", "/abs")) - print(path.base("/tmp/x/a.tar.gz"), path.base("a/b/"), path.base(""), path.base("/")) - print(path.dir("/tmp/x/a.txt"), path.dir("b.txt"), path.dir("/b"), path.dir("a/b/")) - print(path.ext("a.tar.gz"), path.ext("noext"), path.ext(".bashrc"), path.stem("/x/a.tar.gz")) - print(path.clean("a//b/../c/./d"), path.clean("/../a"), path.clean("../../a"), path.clean(""), path.clean("a/..")) - print(path.parts("/a//b/c/"), path.is_abs("/a"), path.is_abs("a")) -} diff --git a/tests/new/std_path.out b/tests/new/std_path.out deleted file mode 100644 index 0915fa1..0000000 --- a/tests/new/std_path.out +++ /dev/null @@ -1,6 +0,0 @@ -a/b.txt a/b x /abs -a.tar.gz b . / -/tmp/x . / a -.gz a.tar -a/c/d /a ../../a . . -["a", "b", "c"] true false diff --git a/tests/new/std_time_proc.fch b/tests/new/std_time_proc.fch deleted file mode 100644 index a1be4d6..0000000 --- a/tests/new/std_time_proc.fch +++ /dev/null @@ -1,19 +0,0 @@ -import time -import proc - -fn main() -> ! { - d := time.date(86400 * 365 + 3661) - print(d.year, d.month, d.day, d.hour, d.minute, d.second, d.weekday, d.yearday) - print(time.days_in_month(2024, 2), time.days_in_month(2023, 2), time.days_in_month(1900, 2), time.days_in_month(2000, 2), time.days_in_month(2024, 4)) - a := time.millis() - time.sleep(30) - waited := time.millis() - a - print(waited >= 20 && waited < 500) - print(time.now() > 1700000000, time.format(0, "%Y") == "1970" || time.format(0, "%Y") == "1969") - - print((try proc.output("echo hello")).trim()) - print(proc.run("exit 3")) - bad := proc.output("exit 2") or err - print(bad) - print(proc.env("FINCH_SURELY_NOT_SET", "fallback"), proc.pid() > 0, proc.cwd().len > 0) -} diff --git a/tests/new/std_time_proc.out b/tests/new/std_time_proc.out deleted file mode 100644 index 22f1057..0000000 --- a/tests/new/std_time_proc.out +++ /dev/null @@ -1,8 +0,0 @@ -1971 1 1 1 1 1 5 1 -29 28 28 29 30 -true -true true -hello -3 -'exit 2' exited with code 2: -fallback true true diff --git a/tests/run.sh b/tests/run.sh index c6176d5..fd4d0af 100755 --- a/tests/run.sh +++ b/tests/run.sh @@ -3,20 +3,16 @@ # tests/run/*.fch must compile and print exactly what is in the matching .out file # (files without `fn main` are modules or helpers and are skipped; # a matching .in file is fed to the program as its input) -# tests/fail/*.fch and tests/new/fail/*.fch must fail; the first line is "// expect: " -# the same programs built with -g -O0, and a library loaded by a C program (tests/shared.sh) +# tests/fail/*.fch must fail; the first line is "// expect: " # MEMCHECK=1 tests/run.sh also runs every program under valgrind: no leaks, no bad memory access set -u cd "$(dirname "$0")" FINCH=${FINCH:-../build/finch} -FINCH="$(cd "$(dirname "$FINCH")" && pwd)/$(basename "$FINCH")" # tests/shared.sh runs from another folder -FINCH_ROOT="$(cd .. && pwd)" -export FINCH_RT=${FINCH_RT:-$PWD/../runtime/finch_rt.c} pass=0; failed=0 tmp=$(mktemp -d) trap 'rm -rf "$tmp"' EXIT -for f in run/*.fch new/*.fch; do +for f in run/*.fch; do grep -q "^fn main" "$f" || continue want="${f%.fch}.out" input="${f%.fch}.in" @@ -42,7 +38,7 @@ for f in run/*.fch new/*.fch; do pass=$((pass + 1)) done -for f in fail/*.fch new/fail/*.fch; do +for f in fail/*.fch; do expect=$(head -1 "$f" | sed -n 's|^// expect: ||p') got=$("$FINCH" run "$f" < /dev/null 2>&1) status=$? @@ -56,48 +52,5 @@ for f in fail/*.fch new/fail/*.fch; do fi done -# the same programs with debug info (-g -O0): the metadata has to be valid for every kind of thing a program has -for f in new/enums.fch new/generics.fch new/std_json.fch run/basics.fch run/methods_basic.fch run/maps.fch run/errors.fch \ - run/defer.fch run/c_structs.fch run/memory.fch; do - input="${f%.fch}.in" - [ -f "$input" ] || input=/dev/null - if "$FINCH" build "$f" -g -O0 -o "$tmp/progg" > "$tmp/err" 2>&1 && [ "$("$tmp/progg" < "$input" 2>&1)" == "$(cat "${f%.fch}.out")" ]; then - pass=$((pass + 1)) - else - failed=$((failed + 1)) - echo "FAIL (-g) $f" - head -3 "$tmp/err" - fi -done - -# a library a C program loads (finch build --shared) -if FINCH="$FINCH" ./shared.sh > "$tmp/shared.out" 2>&1; then - pass=$((pass + 1)) -else - failed=$((failed + 1)) - echo "FAIL shared.sh" - head -5 "$tmp/shared.out" -fi - -# the runtime and std carried inside the compiler are the files as they are now -"$FINCH_ROOT/bootstrap/pack.sh" "$FINCH" "$tmp/embedded.fch" 2>/dev/null -if cmp -s "$tmp/embedded.fch" "$FINCH_ROOT/src/embedded.fch"; then - pass=$((pass + 1)) -else - failed=$((failed + 1)) - echo "FAIL src/embedded.fch is out of date (run bootstrap/build.sh)" -fi - -# the language server, talked to the way an editor does -if command -v python3 > /dev/null 2>&1; then - if FINCH="$FINCH" python3 lsp_test.py > "$tmp/lsp.out" 2>&1; then - pass=$((pass + 1)) - else - failed=$((failed + 1)) - echo "FAIL lsp_test.py" - grep FAIL "$tmp/lsp.out" | head -5 - fi -fi - echo "$pass passed, $failed failed" [ $failed -eq 0 ] diff --git a/tests/shared.sh b/tests/shared.sh deleted file mode 100755 index 5d730ef..0000000 --- a/tests/shared.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# finch build --shared: a library a C program loads, calls by name, and that hands runtime -# errors to the host instead of exiting. -set -e -cd "$(dirname "$0")/shared" -FINCH=${FINCH:-../../build/finch} -export FINCH_RT=${FINCH_RT:-$PWD/../../runtime/finch_rt.c} -tmp=$(mktemp -d) -trap 'rm -rf "$tmp"' EXIT -"$FINCH" build mod.fch --shared -o "$tmp/libmod.so" -${CC:-cc} host.c -rdynamic -o "$tmp/host" -ldl -out=$("$tmp/host" "$tmp/libmod.so") -expected='add 42 -even 1 0 -host_print: hello Rakya -caught: mod.fch:17: runtime error: index 7 is out of range (the length is 3) -still alive' -if [ "$out" = "$expected" ]; then echo "shared library: passed"; else printf 'shared library: FAILED\n%s\n' "$out"; exit 1; fi diff --git a/tests/shared/host.c b/tests/shared/host.c deleted file mode 100644 index 9c5dfbb..0000000 --- a/tests/shared/host.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include -#include -static jmp_buf jb; -void host_print(const char *s) { printf("host_print: %s\n", s); } -static void onFatal(const char *m) { printf("caught: %s\n", m); longjmp(jb, 1); } -int main(int argc, char **argv) { - void *h = dlopen(argc > 1 ? argv[1] : "./libmod.so", RTLD_NOW | RTLD_LOCAL); - if (!h) { printf("%s\n", dlerror()); return 1; } - ((void (*)(void (*)(const char *)))dlsym(h, "finch_module_on_fatal"))(onFatal); - printf("add %ld\n", ((long (*)(long, long))dlsym(h, "add"))(2, 40)); - printf("even %d %d\n", ((_Bool (*)(long))dlsym(h, "is_even"))(4), ((_Bool (*)(long))dlsym(h, "is_even"))(5)); - ((void (*)(const char *))dlsym(h, "hello"))("Rakya"); - if (!setjmp(jb)) ((long (*)(long))dlsym(h, "crash"))(7); - printf("still alive\n"); - return 0; -} diff --git a/tests/shared/host.h b/tests/shared/host.h deleted file mode 100644 index 13358a4..0000000 --- a/tests/shared/host.h +++ /dev/null @@ -1 +0,0 @@ -void host_print(const char *s); diff --git a/tests/shared/mod.fch b/tests/shared/mod.fch deleted file mode 100644 index 19cb22a..0000000 --- a/tests/shared/mod.fch +++ /dev/null @@ -1,22 +0,0 @@ -import "host.h" - -fn greet(str who) -> str { - return "hello " + who -} - -export fn add(int a, int b) -> int { - return a + b -} - -export fn hello(ptr[char] name) { - host_print(greet(str(name))) -} - -export fn crash(int i) -> int { - xs := [1, 2, 3] - return xs[i] -} - -export fn is_even(int n) -> bool { - return n % 2 == 0 -} diff --git a/tools/pack.fch b/tools/pack.fch deleted file mode 100644 index 9f29c1b..0000000 --- a/tools/pack.fch +++ /dev/null @@ -1,54 +0,0 @@ -// finch run tools/pack.fch src/embedded.fch runtime/finch_rt.c std/json.fch ... -// Writes a Finch module that holds the given files as text, so the compiler can carry its runtime and standard library -// inside itself (bootstrap/build.sh runs this; tests/run.sh checks the result is up to date). - -fn literal(str text) -> str { - []str parts = ["\""] - for c in text { - if c == '\\' { - parts.push("\\\\") - } else if c == '"' { - parts.push("\\\"") - } else if c == '\n' { - parts.push("\\n") - } else if c == '\t' { - parts.push("\\t") - } else if c == '\r' { - parts.push("\\r") - } else { - parts.push(str(c)) - } - } - parts.push("\"") - return parts.join("") -} - -fn main([]str args) -> int { - if args.len < 3 { - print("usage: pack out.fch file...") - return 1 - } - []str out = [ - "// The runtime and the standard library, as text. Made by tools/pack.fch: don't edit it, run bootstrap/build.sh.", - "// Used when the compiler can't find runtime/ and std/ next to itself.", - "", - "fn names() -> []str {", - " []str list", - ] - for i in 2..args.len { - out.push(" list.push(" + literal(args[i]) + ")") - } - out.push(" return list") - out.push("}") - out.push("") - out.push("fn texts() -> []str {") - out.push(" []str list") - for i in 2..args.len { - out.push(" list.push(" + literal(read_file(args[i])) + ")") - } - out.push(" return list") - out.push("}") - out.push("") - write_file(args[1], out.join("\n")) - return 0 -}